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 38 30 38 30 20 20 20 20 4D 49 54 00 00 00 11 .8080 MIT....
002830: 0A 0B 0C 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002840: 00 5A 38 30 20 20 20 20 20 4D 49 54 00 00 00 4A .Z80 MIT...J
002850: 0D 0E 0F 10 11 12 13 14 15 16 00 00 00 00 00 00 ................
002860: 00 43 41 4C 4C 20 20 20 20 4D 41 43 00 00 00 44 .CALL MAC...D
002870: 17 18 19 1A 1B 1C 1D 1E 1F 00 00 00 00 00 00 00 ................
002880: 00 45 4E 44 20 20 20 20 20 4D 41 43 00 00 00 03 .END MAC....
002890: 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...............
0028A0: 00 4C 49 4E 4B 20 20 20 20 4D 41 43 00 00 00 01 .LINK MAC....
0028B0: 21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 !...............
0028C0: 00 4E 4F 54 49 43 45 20 20 48 20 20 00 00 00 01 .NOTICE H ....
0028D0: 22 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 "...............
0028E0: 00 53 54 44 49 4F 20 20 20 48 20 20 00 00 00 04 .STDIO H ....
0028F0: 23 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 #...............
002900: 00 4D 41 43 20 20 20 20 20 48 20 20 00 00 00 0E .MAC H ....
002910: 24 25 00 00 00 00 00 00 00 00 00 00 00 00 00 00 $%..............
002920: 00 45 58 54 20 20 20 20 20 48 20 20 00 00 00 03 .EXT H ....
002930: 26 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 &...............
002940: 00 4D 49 54 20 20 20 20 20 48 20 20 00 00 00 04 .MIT H ....
002950: 27 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '...............
002960: 00 52 45 4C 20 20 20 20 20 48 20 20 00 00 00 0D .REL H ....
002970: 28 29 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ()..............
002980: 00 4D 20 20 20 20 20 20 20 4C 49 42 00 00 00 48 .M LIB...H
002990: 2A 2B 2C 2D 2E 2F 30 31 32 00 00 00 00 00 00 00 *+,-./012.......
0029A0: 00 4D 20 20 20 20 20 20 20 4C 53 54 00 00 00 01 .M LST....
0029B0: 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3...............
0029C0: 00 4D 20 20 20 20 20 20 20 4E 44 58 00 00 00 01 .M NDX....
0029D0: 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4...............
0029E0: 00 4D 41 43 20 20 20 20 20 43 20 20 00 00 00 59 .MAC C ...Y
0029F0: 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 00 00 00 00 56789:;<=>?@....
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: 00 4D 41 43 32 20 20 20 20 43 20 20 00 00 00 6E .MAC2 C ...n
002C10: 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 00 00 ABCDEFGHIJKLMN..
002C20: 00 4D 41 43 33 20 20 20 20 43 20 20 00 00 00 4E .MAC3 C ...N
002C30: 4F 50 51 52 53 54 55 56 57 58 00 00 00 00 00 00 OPQRSTUVWX......
002C40: 00 4C 4E 4B 20 20 20 20 20 43 20 20 00 00 00 80 .LNK C ....
002C50: 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 YZ[\]^_`abcdefgh
002C60: 00 4C 4E 4B 20 20 20 20 20 43 20 20 01 00 00 21 .LNK C ...!
002C70: 69 6A 6B 6C 6D 00 00 00 00 00 00 00 00 00 00 00 ijklm...........
002C80: 00 4C 47 4F 20 20 20 20 20 43 20 20 00 00 00 18 .LGO C ....
002C90: 6E 6F 70 00 00 00 00 00 00 00 00 00 00 00 00 00 nop.............
002CA0: 00 4C 49 42 20 20 20 20 20 43 20 20 00 00 00 6B .LIB C ...k
002CB0: 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 00 00 qrstuvwxyz{|}~..
002CC0: 00 43 4D 49 54 20 20 20 20 43 20 20 00 00 00 42 .CMIT C ...B
002CD0: 7F 80 81 82 83 84 85 86 87 00 00 00 00 00 00 00 ................
002CE0: 00 44 52 45 4C 20 20 20 20 43 20 20 00 00 00 09 .DREL C ....
002CF0: 88 89 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002D00: 00 45 58 54 45 4E 44 20 20 43 20 20 00 00 00 05 .EXTEND C ....
002D10: 8A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002D20: 00 46 49 4C 45 20 20 20 20 43 20 20 00 00 00 02 .FILE C ....
002D30: 8B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002D40: 00 47 45 54 52 45 4C 20 20 43 20 20 00 00 00 1F .GETREL C ....
002D50: 8C 8D 8E 8F 00 00 00 00 00 00 00 00 00 00 00 00 ................
002D60: 00 50 55 54 52 45 4C 20 20 43 20 20 00 00 00 15 .PUTREL C ....
002D70: 90 91 92 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002D80: 00 53 45 45 52 45 4C 20 20 43 20 20 00 00 00 19 .SEEREL C ....
002D90: 93 94 95 96 00 00 00 00 00 00 00 00 00 00 00 00 ................
002DA0: 00 4D 45 53 53 20 20 20 20 43 20 20 00 00 00 03 .MESS C ....
002DB0: 97 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002DC0: 00 53 43 41 4E 20 20 20 20 43 20 20 00 00 00 06 .SCAN C ....
002DD0: 98 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002DE0: 00 57 41 49 54 20 20 20 20 43 20 20 00 00 00 02 .WAIT C ....
002DF0: 99 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
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: 00 49 4E 54 20 20 20 20 20 43 20 20 00 00 00 02 .INT C ....
003010: 9A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003020: 00 4D 49 54 20 20 20 20 20 43 20 20 00 00 00 20 .MIT C ...
003030: 9B 9C 9D 9E 00 00 00 00 00 00 00 00 00 00 00 00 ................
003040: 00 52 45 4C 20 20 20 20 20 43 20 20 00 00 00 05 .REL C ....
003050: 9F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003060: 00 52 45 51 20 20 20 20 20 43 20 20 00 00 00 08 .REQ C ....
003070: A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
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: 0A 43 31 20 20 20 20 50 4F 50 20 42 0D 0A 44 31 .C1 POP B..D1
005010: 20 20 20 20 50 4F 50 20 44 0D 0A 45 31 20 20 20 POP D..E1
005020: 20 50 4F 50 20 48 0D 0A 46 31 20 20 20 20 50 4F POP H..F1 PO
005030: 50 20 50 53 57 0D 0A 45 35 20 20 20 20 50 55 53 P PSW..E5 PUS
005040: 48 20 48 0D 0A 44 35 20 20 20 20 50 55 53 48 20 H H..D5 PUSH
005050: 44 0D 0A 43 35 20 20 20 20 50 55 53 48 20 42 0D D..C5 PUSH B.
005060: 0A 46 35 20 20 20 20 50 55 53 48 20 50 53 57 0D .F5 PUSH PSW.
005070: 0A 31 37 20 20 20 20 52 41 4C 0D 0A 31 46 20 20 .17 RAL..1F
005080: 20 20 52 41 52 0D 0A 44 38 20 20 20 20 52 43 0D RAR..D8 RC.
005090: 0A 43 39 20 20 20 20 52 45 54 0D 0A 32 30 20 20 .C9 RET..20
0050A0: 20 20 52 49 4D 0D 0A 30 37 20 20 20 20 52 4C 43 RIM..07 RLC
0050B0: 0D 0A 46 38 20 20 20 20 52 4D 0D 0A 44 30 20 20 ..F8 RM..D0
0050C0: 20 20 52 4E 43 0D 0A 43 30 20 20 20 20 52 4E 5A RNC..C0 RNZ
0050D0: 0D 0A 46 30 20 20 20 20 52 50 0D 0A 45 38 20 20 ..F0 RP..E8
0050E0: 20 20 52 50 45 0D 0A 45 30 20 20 20 20 52 50 4F RPE..E0 RPO
0050F0: 0D 0A 30 46 20 20 20 20 52 52 43 0D 0A 43 37 20 ..0F RRC..C7
005100: 20 20 20 52 53 54 20 30 0D 0A 44 37 20 20 20 20 RST 0..D7
005110: 52 53 54 20 31 36 0D 0A 44 46 20 20 20 20 52 53 RST 16..DF RS
005120: 54 20 32 34 0D 0A 45 37 20 20 20 20 52 53 54 20 T 24..E7 RST
005130: 33 32 0D 0A 45 46 20 20 20 20 52 53 54 20 34 30 32..EF RST 40
005140: 0D 0A 46 37 20 20 20 20 52 53 54 20 34 38 0D 0A ..F7 RST 48..
005150: 46 46 20 20 20 20 52 53 54 20 35 36 0D 0A 43 46 FF RST 56..CF
005160: 20 20 20 20 52 53 54 20 38 0D 0A 43 38 20 20 20 RST 8..C8
005170: 20 52 5A 0D 0A 39 38 20 20 20 20 53 42 42 20 42 RZ..98 SBB B
005180: 7C 43 7C 44 7C 45 7C 48 7C 4C 7C 4D 7C 41 0D 0A |C|D|E|H|L|M|A..
005190: 44 45 5F 78 31 20 53 42 49 20 78 0D 0A 32 32 5F DE_x1 SBI x..22_
0051A0: 78 32 20 53 48 4C 44 20 78 0D 0A 33 30 20 20 20 x2 SHLD x..30
0051B0: 20 53 49 4D 0D 0A 46 39 20 20 20 20 53 50 48 4C SIM..F9 SPHL
0051C0: 0D 0A 33 32 5F 78 32 20 53 54 41 20 78 0D 0A 30 ..32_x2 STA x..0
0051D0: 32 20 20 20 20 53 54 41 58 20 42 0D 0A 31 32 20 2 STAX B..12
0051E0: 20 20 20 53 54 41 58 20 44 0D 0A 33 37 20 20 20 STAX D..37
0051F0: 20 53 54 43 0D 0A 39 30 20 20 20 20 53 55 42 20 STC..90 SUB
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: 42 7C 43 7C 44 7C 45 7C 48 7C 4C 7C 4D 7C 41 0D B|C|D|E|H|L|M|A.
005410: 0A 44 36 5F 78 31 20 53 55 49 20 78 0D 0A 45 42 .D6_x1 SUI x..EB
005420: 20 20 20 20 58 43 48 47 0D 0A 41 38 20 20 20 20 XCHG..A8
005430: 58 52 41 20 42 7C 43 7C 44 7C 45 7C 48 7C 4C 7C XRA B|C|D|E|H|L|
005440: 4D 7C 41 0D 0A 45 45 5F 78 31 20 58 52 49 20 78 M|A..EE_x1 XRI x
005450: 0D 0A 45 33 20 20 20 20 58 54 48 4C 0D 0A 1A 1A ..E3 XTHL....
005460: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
005470: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
005480: 20 20 52 41 52 0D 0A 44 38 20 20 20 20 52 43 0D RAR..D8 RC.
005490: 0A 43 39 20 20 20 20 52 45 54 0D 0A 32 30 20 20 .C9 RET..20
0054A0: 20 20 52 49 4D 0D 0A 30 37 20 20 20 20 52 4C 43 RIM..07 RLC
0054B0: 0D 0A 46 38 20 20 20 20 52 4D 0D 0A 44 30 20 20 ..F8 RM..D0
0054C0: 20 20 52 4E 43 0D 0A 43 30 20 20 20 20 52 4E 5A RNC..C0 RNZ
0054D0: 0D 0A 46 30 20 20 20 20 52 50 0D 0A 45 38 20 20 ..F0 RP..E8
0054E0: 20 20 52 50 45 0D 0A 45 30 20 20 20 20 52 50 4F RPE..E0 RPO
0054F0: 0D 0A 30 46 20 20 20 20 52 52 43 0D 0A 43 37 20 ..0F RRC..C7
005500: 20 20 20 52 53 54 20 30 0D 0A 44 37 20 20 20 20 RST 0..D7
005510: 52 53 54 20 31 36 0D 0A 44 46 20 20 20 20 52 53 RST 16..DF RS
005520: 54 20 32 34 0D 0A 45 37 20 20 20 20 52 53 54 20 T 24..E7 RST
005530: 33 32 0D 0A 45 46 20 20 20 20 52 53 54 20 34 30 32..EF RST 40
005540: 0D 0A 46 37 20 20 20 20 52 53 54 20 34 38 0D 0A ..F7 RST 48..
005550: 46 46 20 20 20 20 52 53 54 20 35 36 0D 0A 43 46 FF RST 56..CF
005560: 20 20 20 20 52 53 54 20 38 0D 0A 43 38 20 20 20 RST 8..C8
005570: 20 52 5A 0D 0A 39 38 20 20 20 20 53 42 42 20 42 RZ..98 SBB B
005580: 7C 43 7C 44 7C 45 7C 48 7C 4C 7C 4D 7C 41 0D 0A |C|D|E|H|L|M|A..
005590: 44 45 5F 78 31 20 53 42 49 20 78 0D 0A 32 32 5F DE_x1 SBI x..22_
0055A0: 78 32 20 53 48 4C 44 20 78 0D 0A 33 30 20 20 20 x2 SHLD x..30
0055B0: 20 53 49 4D 0D 0A 46 39 20 20 20 20 53 50 48 4C SIM..F9 SPHL
0055C0: 0D 0A 33 32 5F 78 32 20 53 54 41 20 78 0D 0A 30 ..32_x2 STA x..0
0055D0: 32 20 20 20 20 53 54 41 58 20 42 0D 0A 31 32 20 2 STAX B..12
0055E0: 20 20 20 53 54 41 58 20 44 0D 0A 33 37 20 20 20 STAX D..37
0055F0: 20 53 54 43 0D 0A 39 30 20 20 20 20 53 55 42 20 STC..90 SUB
005600: 43 45 5F 78 31 20 41 43 49 20 78 0D 0A 38 38 20 CE_x1 ACI x..88
005610: 20 20 20 41 44 43 20 42 7C 43 7C 44 7C 45 7C 48 ADC B|C|D|E|H
005620: 7C 4C 7C 4D 7C 41 0D 0A 38 30 20 20 20 20 41 44 |L|M|A..80 AD
005630: 44 20 42 7C 43 7C 44 7C 45 7C 48 7C 4C 7C 4D 7C D B|C|D|E|H|L|M|
005640: 41 0D 0A 43 36 5F 78 31 20 41 44 49 20 78 0D 0A A..C6_x1 ADI x..
005650: 41 30 20 20 20 20 41 4E 41 20 42 7C 43 7C 44 7C A0 ANA B|C|D|
005660: 45 7C 48 7C 4C 7C 4D 7C 41 0D 0A 45 36 5F 78 31 E|H|L|M|A..E6_x1
005670: 20 41 4E 49 20 78 0D 0A 43 44 5F 78 32 20 43 41 ANI x..CD_x2 CA
005680: 4C 4C 20 78 0D 0A 44 43 5F 78 32 20 43 43 20 78 LL x..DC_x2 CC x
005690: 0D 0A 46 43 5F 78 32 20 43 4D 20 78 0D 0A 32 46 ..FC_x2 CM x..2F
0056A0: 20 20 20 20 43 4D 41 0D 0A 33 46 20 20 20 20 43 CMA..3F C
0056B0: 4D 43 0D 0A 42 38 20 20 20 20 43 4D 50 20 42 7C MC..B8 CMP B|
0056C0: 43 7C 44 7C 45 7C 48 7C 4C 7C 4D 7C 41 0D 0A 44 C|D|E|H|L|M|A..D
0056D0: 34 5F 78 32 20 43 4E 43 20 78 0D 0A 43 34 5F 78 4_x2 CNC x..C4_x
0056E0: 32 20 43 4E 5A 20 78 0D 0A 46 34 5F 78 32 20 43 2 CNZ x..F4_x2 C
0056F0: 50 20 78 0D 0A 45 43 5F 78 32 20 43 50 45 20 78 P x..EC_x2 CPE x
005700: 0D 0A 46 45 5F 78 31 20 43 50 49 20 78 0D 0A 45 ..FE_x1 CPI x..E
005710: 34 5F 78 32 20 43 50 4F 20 78 0D 0A 43 43 5F 78 4_x2 CPO x..CC_x
005720: 32 20 43 5A 20 78 0D 0A 32 37 20 20 20 20 44 41 2 CZ x..27 DA
005730: 41 0D 0A 33 39 20 20 20 20 44 41 44 20 53 50 0D A..39 DAD SP.
005740: 0A 31 39 20 20 20 20 44 41 44 20 44 0D 0A 32 39 .19 DAD D..29
005750: 20 20 20 20 44 41 44 20 48 0D 0A 30 39 20 20 20 DAD H..09
005760: 20 44 41 44 20 42 0D 0A 33 44 20 20 20 20 44 43 DAD B..3D DC
005770: 52 20 41 0D 0A 30 35 20 20 20 20 44 43 52 20 42 R A..05 DCR B
005780: 0D 0A 30 44 20 20 20 20 44 43 52 20 43 0D 0A 31 ..0D DCR C..1
005790: 35 20 20 20 20 44 43 52 20 44 0D 0A 31 44 20 20 5 DCR D..1D
0057A0: 20 20 44 43 52 20 45 0D 0A 32 35 20 20 20 20 44 DCR E..25 D
0057B0: 43 52 20 48 0D 0A 32 44 20 20 20 20 44 43 52 20 CR H..2D DCR
0057C0: 4C 0D 0A 33 35 20 20 20 20 44 43 52 20 4D 0D 0A L..35 DCR M..
0057D0: 30 42 20 20 20 20 44 43 58 20 42 0D 0A 31 42 20 0B DCX B..1B
0057E0: 20 20 20 44 43 58 20 44 0D 0A 32 42 20 20 20 20 DCX D..2B
0057F0: 44 43 58 20 48 0D 0A 33 42 20 20 20 20 44 43 58 DCX H..3B DCX
005800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0058A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0058B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0058C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0058D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0058E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0058F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0059A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0059B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0059C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0059D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0059E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0059F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005A00: 20 53 50 0D 0A 46 33 20 20 20 20 44 49 0D 0A 46 SP..F3 DI..F
005A10: 42 20 20 20 20 45 49 0D 0A 37 36 20 20 20 20 48 B EI..76 H
005A20: 4C 54 0D 0A 44 42 5F 78 31 20 49 4E 20 78 0D 0A LT..DB_x1 IN x..
005A30: 33 43 20 20 20 20 49 4E 52 20 41 0D 0A 30 34 20 3C INR A..04
005A40: 20 20 20 49 4E 52 20 42 0D 0A 30 43 20 20 20 20 INR B..0C
005A50: 49 4E 52 20 43 0D 0A 31 34 20 20 20 20 49 4E 52 INR C..14 INR
005A60: 20 44 0D 0A 31 43 20 20 20 20 49 4E 52 20 45 0D D..1C INR E.
005A70: 0A 32 34 20 20 20 20 49 4E 52 20 48 0D 0A 32 43 .24 INR H..2C
005A80: 20 20 20 20 49 4E 52 20 4C 0D 0A 33 34 20 20 20 INR L..34
005A90: 20 49 4E 52 20 4D 0D 0A 30 33 20 20 20 20 49 4E INR M..03 IN
005AA0: 58 20 42 0D 0A 31 33 20 20 20 20 49 4E 58 20 44 X B..13 INX D
005AB0: 0D 0A 32 33 20 20 20 20 49 4E 58 20 48 0D 0A 33 ..23 INX H..3
005AC0: 33 20 20 20 20 49 4E 58 20 53 50 0D 0A 44 41 5F 3 INX SP..DA_
005AD0: 78 32 20 4A 43 20 78 0D 0A 46 41 5F 78 32 20 4A x2 JC x..FA_x2 J
005AE0: 4D 20 78 0D 0A 43 33 5F 78 32 20 4A 4D 50 20 78 M x..C3_x2 JMP x
005AF0: 0D 0A 44 32 5F 78 32 20 4A 4E 43 20 78 0D 0A 43 ..D2_x2 JNC x..C
005B00: 32 5F 78 32 20 4A 4E 5A 20 78 0D 0A 46 32 5F 78 2_x2 JNZ x..F2_x
005B10: 32 20 4A 50 20 78 0D 0A 45 41 5F 78 32 20 4A 50 2 JP x..EA_x2 JP
005B20: 45 20 78 0D 0A 45 32 5F 78 32 20 4A 50 4F 20 78 E x..E2_x2 JPO x
005B30: 0D 0A 43 41 5F 78 32 20 4A 5A 20 78 0D 0A 33 41 ..CA_x2 JZ x..3A
005B40: 5F 78 32 20 4C 44 41 20 78 0D 0A 30 41 20 20 20 _x2 LDA x..0A
005B50: 20 4C 44 41 58 20 42 0D 0A 31 41 20 20 20 20 4C LDAX B..1A L
005B60: 44 41 58 20 44 0D 0A 32 41 5F 78 32 20 4C 48 4C DAX D..2A_x2 LHL
005B70: 44 20 78 0D 0A 32 31 5F 78 32 20 4C 58 49 20 48 D x..21_x2 LXI H
005B80: 2C 78 0D 0A 31 31 5F 78 32 20 4C 58 49 20 44 2C ,x..11_x2 LXI D,
005B90: 78 0D 0A 33 31 5F 78 32 20 4C 58 49 20 53 50 2C x..31_x2 LXI SP,
005BA0: 78 0D 0A 30 31 5F 78 32 20 4C 58 49 20 42 2C 78 x..01_x2 LXI B,x
005BB0: 0D 0A 37 43 20 20 20 20 4D 4F 56 20 41 2C 48 7C ..7C MOV A,H|
005BC0: 41 2C 4C 7C 41 2C 4D 7C 41 2C 41 0D 0A 35 34 20 A,L|A,M|A,A..54
005BD0: 20 20 20 4D 4F 56 20 44 2C 48 7C 44 2C 4C 7C 44 MOV D,H|D,L|D
005BE0: 2C 4D 7C 44 2C 41 0D 0A 35 44 20 20 20 20 4D 4F ,M|D,A..5D MO
005BF0: 56 20 45 2C 4C 7C 45 2C 4D 7C 45 2C 41 0D 0A 37 V E,L|E,M|E,A..7
005C00: 44 44 5F 38 45 5F 78 31 20 20 20 20 41 44 43 20 DD_8E_x1 ADC
005C10: 41 2C 28 49 58 2B 78 29 0D 0A 46 44 5F 38 45 5F A,(IX+x)..FD_8E_
005C20: 78 31 20 20 20 20 41 44 43 20 41 2C 28 49 59 2B x1 ADC A,(IY+
005C30: 78 29 0D 0A 38 38 20 20 20 20 20 20 20 20 20 20 x)..88
005C40: 41 44 43 20 41 2C 42 7C 41 2C 43 7C 41 2C 44 7C ADC A,B|A,C|A,D|
005C50: 41 2C 45 7C 41 2C 48 7C 41 2C 4C 7C 41 2C 28 48 A,E|A,H|A,L|A,(H
005C60: 4C 29 7C 41 2C 41 0D 0A 43 45 5F 78 31 20 20 20 L)|A,A..CE_x1
005C70: 20 20 20 20 41 44 43 20 41 2C 78 0D 0A 45 44 5F ADC A,x..ED_
005C80: 34 41 20 20 20 20 20 20 20 41 44 43 20 48 4C 2C 4A ADC HL,
005C90: 42 43 0D 0A 45 44 5F 35 41 20 20 20 20 20 20 20 BC..ED_5A
005CA0: 41 44 43 20 48 4C 2C 44 45 0D 0A 45 44 5F 36 41 ADC HL,DE..ED_6A
005CB0: 20 20 20 20 20 20 20 41 44 43 20 48 4C 2C 48 4C ADC HL,HL
005CC0: 0D 0A 45 44 5F 37 41 20 20 20 20 20 20 20 41 44 ..ED_7A AD
005CD0: 43 20 48 4C 2C 53 50 0D 0A 44 44 5F 38 36 5F 78 C HL,SP..DD_86_x
005CE0: 31 20 20 20 20 41 44 44 20 41 2C 28 49 58 2B 78 1 ADD A,(IX+x
005CF0: 29 0D 0A 46 44 5F 38 36 5F 78 31 20 20 20 20 41 )..FD_86_x1 A
005D00: 44 44 20 41 2C 28 49 59 2B 78 29 0D 0A 38 30 20 DD A,(IY+x)..80
005D10: 20 20 20 20 20 20 20 20 20 41 44 44 20 41 2C 42 ADD A,B
005D20: 7C 41 2C 43 7C 41 2C 44 7C 41 2C 45 7C 41 2C 48 |A,C|A,D|A,E|A,H
005D30: 7C 41 2C 4C 7C 41 2C 28 48 4C 29 7C 41 2C 41 0D |A,L|A,(HL)|A,A.
005D40: 0A 43 36 5F 78 31 20 20 20 20 20 20 20 41 44 44 .C6_x1 ADD
005D50: 20 41 2C 78 0D 0A 30 39 20 20 20 20 20 20 20 20 A,x..09
005D60: 20 20 41 44 44 20 48 4C 2C 42 43 0D 0A 31 39 20 ADD HL,BC..19
005D70: 20 20 20 20 20 20 20 20 20 41 44 44 20 48 4C 2C ADD HL,
005D80: 44 45 0D 0A 32 39 20 20 20 20 20 20 20 20 20 20 DE..29
005D90: 41 44 44 20 48 4C 2C 48 4C 0D 0A 33 39 20 20 20 ADD HL,HL..39
005DA0: 20 20 20 20 20 20 20 41 44 44 20 48 4C 2C 53 50 ADD HL,SP
005DB0: 0D 0A 44 44 5F 30 39 20 20 20 20 20 20 20 41 44 ..DD_09 AD
005DC0: 44 20 49 58 2C 42 43 0D 0A 44 44 5F 31 39 20 20 D IX,BC..DD_19
005DD0: 20 20 20 20 20 41 44 44 20 49 58 2C 44 45 0D 0A ADD IX,DE..
005DE0: 44 44 5F 32 39 20 20 20 20 20 20 20 41 44 44 20 DD_29 ADD
005DF0: 49 58 2C 49 58 0D 0A 44 44 5F 33 39 20 20 20 20 IX,IX..DD_39
005E00: 38 20 20 20 20 4D 4F 56 20 41 2C 42 7C 41 2C 43 8 MOV A,B|A,C
005E10: 7C 41 2C 44 7C 41 2C 45 0D 0A 34 30 20 20 20 20 |A,D|A,E..40
005E20: 4D 4F 56 20 42 2C 42 7C 42 2C 43 7C 42 2C 44 7C MOV B,B|B,C|B,D|
005E30: 42 2C 45 7C 42 2C 48 7C 42 2C 4C 7C 42 2C 4D 7C B,E|B,H|B,L|B,M|
005E40: 42 2C 41 0D 0A 34 38 20 20 20 20 4D 4F 56 20 43 B,A..48 MOV C
005E50: 2C 42 7C 43 2C 43 7C 43 2C 44 7C 43 2C 45 7C 43 ,B|C,C|C,D|C,E|C
005E60: 2C 48 7C 43 2C 4C 7C 43 2C 4D 7C 43 2C 41 0D 0A ,H|C,L|C,M|C,A..
005E70: 35 30 20 20 20 20 4D 4F 56 20 44 2C 42 7C 44 2C 50 MOV D,B|D,
005E80: 43 7C 44 2C 44 7C 44 2C 45 0D 0A 35 38 20 20 20 C|D,D|D,E..58
005E90: 20 4D 4F 56 20 45 2C 42 7C 45 2C 43 7C 45 2C 44 MOV E,B|E,C|E,D
005EA0: 7C 45 2C 45 7C 45 2C 48 0D 0A 36 30 20 20 20 20 |E,E|E,H..60
005EB0: 4D 4F 56 20 48 2C 42 7C 48 2C 43 7C 48 2C 44 7C MOV H,B|H,C|H,D|
005EC0: 48 2C 45 7C 48 2C 48 7C 48 2C 4C 7C 48 2C 4D 7C H,E|H,H|H,L|H,M|
005ED0: 48 2C 41 0D 0A 36 38 20 20 20 20 4D 4F 56 20 4C H,A..68 MOV L
005EE0: 2C 42 7C 4C 2C 43 7C 4C 2C 44 7C 4C 2C 45 7C 4C ,B|L,C|L,D|L,E|L
005EF0: 2C 48 7C 4C 2C 4C 7C 4C 2C 4D 7C 4C 2C 41 0D 0A ,H|L,L|L,M|L,A..
005F00: 37 37 20 20 20 20 4D 4F 56 20 4D 2C 41 0D 0A 37 77 MOV M,A..7
005F10: 30 20 20 20 20 4D 4F 56 20 4D 2C 42 7C 4D 2C 43 0 MOV M,B|M,C
005F20: 7C 4D 2C 44 7C 4D 2C 45 7C 4D 2C 48 7C 4D 2C 4C |M,D|M,E|M,H|M,L
005F30: 0D 0A 33 45 5F 78 31 20 4D 56 49 20 41 2C 78 0D ..3E_x1 MVI A,x.
005F40: 0A 30 36 5F 78 31 20 4D 56 49 20 42 2C 78 0D 0A .06_x1 MVI B,x..
005F50: 30 45 5F 78 31 20 4D 56 49 20 43 2C 78 0D 0A 31 0E_x1 MVI C,x..1
005F60: 36 5F 78 31 20 4D 56 49 20 44 2C 78 0D 0A 31 45 6_x1 MVI D,x..1E
005F70: 5F 78 31 20 4D 56 49 20 45 2C 78 0D 0A 32 36 5F _x1 MVI E,x..26_
005F80: 78 31 20 4D 56 49 20 48 2C 78 0D 0A 32 45 5F 78 x1 MVI H,x..2E_x
005F90: 31 20 4D 56 49 20 4C 2C 78 0D 0A 33 36 5F 78 31 1 MVI L,x..36_x1
005FA0: 20 4D 56 49 20 4D 2C 78 0D 0A 30 30 20 20 20 20 MVI M,x..00
005FB0: 4E 4F 50 0D 0A 42 35 20 20 20 20 4F 52 41 20 4C NOP..B5 ORA L
005FC0: 7C 4D 7C 41 0D 0A 42 30 20 20 20 20 4F 52 41 20 |M|A..B0 ORA
005FD0: 42 7C 43 7C 44 7C 45 7C 48 0D 0A 46 36 5F 78 31 B|C|D|E|H..F6_x1
005FE0: 20 4F 52 49 20 78 0D 0A 44 33 5F 78 31 20 4F 55 ORI x..D3_x1 OU
005FF0: 54 20 78 0D 0A 45 39 20 20 20 20 50 43 48 4C 0D T x..E9 PCHL.
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: 20 20 20 41 44 44 20 49 58 2C 53 50 0D 0A 46 44 ADD IX,SP..FD
006110: 5F 30 39 20 20 20 20 20 20 20 41 44 44 20 49 59 _09 ADD IY
006120: 2C 42 43 0D 0A 46 44 5F 31 39 20 20 20 20 20 20 ,BC..FD_19
006130: 20 41 44 44 20 49 59 2C 44 45 0D 0A 46 44 5F 32 ADD IY,DE..FD_2
006140: 39 20 20 20 20 20 20 20 41 44 44 20 49 59 2C 49 9 ADD IY,I
006150: 59 0D 0A 46 44 5F 33 39 20 20 20 20 20 20 20 41 Y..FD_39 A
006160: 44 44 20 49 59 2C 53 50 0D 0A 44 44 5F 41 36 5F DD IY,SP..DD_A6_
006170: 78 31 20 20 20 20 41 4E 44 20 28 49 58 2B 78 29 x1 AND (IX+x)
006180: 0D 0A 46 44 5F 41 36 5F 78 31 20 20 20 20 41 4E ..FD_A6_x1 AN
006190: 44 20 28 49 59 2B 78 29 0D 0A 41 30 20 20 20 20 D (IY+x)..A0
0061A0: 20 20 20 20 20 20 41 4E 44 20 42 7C 43 7C 44 7C AND B|C|D|
0061B0: 45 7C 48 7C 4C 7C 28 48 4C 29 7C 41 0D 0A 45 36 E|H|L|(HL)|A..E6
0061C0: 5F 78 31 20 20 20 20 20 20 20 41 4E 44 20 78 0D _x1 AND x.
0061D0: 0A 44 44 5F 43 42 5F 78 31 5F 34 36 20 42 49 54 .DD_CB_x1_46 BIT
0061E0: 20 30 2C 28 49 58 2B 78 29 0D 0A 46 44 5F 43 42 0,(IX+x)..FD_CB
0061F0: 5F 78 31 5F 34 36 20 42 49 54 20 30 2C 28 49 59 _x1_46 BIT 0,(IY
006200: 2B 78 29 0D 0A 43 42 5F 34 30 20 20 20 20 20 20 +x)..CB_40
006210: 20 42 49 54 20 30 2C 42 7C 30 2C 43 7C 30 2C 44 BIT 0,B|0,C|0,D
006220: 7C 30 2C 45 7C 30 2C 48 7C 30 2C 4C 7C 30 2C 28 |0,E|0,H|0,L|0,(
006230: 48 4C 29 7C 30 2C 41 0D 0A 44 44 5F 43 42 5F 78 HL)|0,A..DD_CB_x
006240: 31 5F 34 45 20 42 49 54 20 31 2C 28 49 58 2B 78 1_4E BIT 1,(IX+x
006250: 29 0D 0A 46 44 5F 43 42 5F 78 31 5F 34 45 20 42 )..FD_CB_x1_4E B
006260: 49 54 20 31 2C 28 49 59 2B 78 29 0D 0A 43 42 5F IT 1,(IY+x)..CB_
006270: 34 38 20 20 20 20 20 20 20 42 49 54 20 31 2C 42 48 BIT 1,B
006280: 7C 31 2C 43 7C 31 2C 44 7C 31 2C 45 7C 31 2C 48 |1,C|1,D|1,E|1,H
006290: 7C 31 2C 4C 7C 31 2C 28 48 4C 29 7C 31 2C 41 0D |1,L|1,(HL)|1,A.
0062A0: 0A 44 44 5F 43 42 5F 78 31 5F 35 36 20 42 49 54 .DD_CB_x1_56 BIT
0062B0: 20 32 2C 28 49 58 2B 78 29 0D 0A 46 44 5F 43 42 2,(IX+x)..FD_CB
0062C0: 5F 78 31 5F 35 36 20 42 49 54 20 32 2C 28 49 59 _x1_56 BIT 2,(IY
0062D0: 2B 78 29 0D 0A 43 42 5F 35 30 20 20 20 20 20 20 +x)..CB_50
0062E0: 20 42 49 54 20 32 2C 42 7C 32 2C 43 7C 32 2C 44 BIT 2,B|2,C|2,D
0062F0: 7C 32 2C 45 7C 32 2C 48 7C 32 2C 4C 7C 32 2C 28 |2,E|2,H|2,L|2,(
006300: 20 28 49 58 29 0D 0A 46 44 5F 45 39 20 20 20 20 (IX)..FD_E9
006310: 20 20 20 4A 50 20 28 49 59 29 0D 0A 44 41 5F 78 JP (IY)..DA_x
006320: 32 20 20 20 20 20 20 20 4A 50 20 43 2C 78 0D 0A 2 JP C,x..
006330: 46 41 5F 78 32 20 20 20 20 20 20 20 4A 50 20 4D FA_x2 JP M
006340: 2C 78 0D 0A 44 32 5F 78 32 20 20 20 20 20 20 20 ,x..D2_x2
006350: 4A 50 20 4E 43 2C 78 0D 0A 43 32 5F 78 32 20 20 JP NC,x..C2_x2
006360: 20 20 20 20 20 4A 50 20 4E 5A 2C 78 7C 78 0D 0A JP NZ,x|x..
006370: 46 32 5F 78 32 20 20 20 20 20 20 20 4A 50 20 50 F2_x2 JP P
006380: 2C 78 0D 0A 45 41 5F 78 32 20 20 20 20 20 20 20 ,x..EA_x2
006390: 4A 50 20 50 45 2C 78 0D 0A 45 32 5F 78 32 20 20 JP PE,x..E2_x2
0063A0: 20 20 20 20 20 4A 50 20 50 4F 2C 78 0D 0A 43 41 JP PO,x..CA
0063B0: 5F 78 32 20 20 20 20 20 20 20 4A 50 20 5A 2C 78 _x2 JP Z,x
0063C0: 0D 0A 33 38 5F 70 31 20 20 20 20 20 20 20 4A 52 ..38_p1 JR
0063D0: 20 43 2C 70 0D 0A 33 30 5F 70 31 20 20 20 20 20 C,p..30_p1
0063E0: 20 20 4A 52 20 4E 43 2C 70 0D 0A 32 30 5F 70 31 JR NC,p..20_p1
0063F0: 20 20 20 20 20 20 20 4A 52 20 4E 5A 2C 70 0D 0A JR NZ,p..
006400: 31 38 5F 70 31 20 20 20 20 20 20 20 4A 52 20 70 18_p1 JR p
006410: 0D 0A 32 38 5F 70 31 20 20 20 20 20 20 20 4A 52 ..28_p1 JR
006420: 20 5A 2C 70 0D 0A 30 32 20 20 20 20 20 20 20 20 Z,p..02
006430: 20 20 4C 44 20 28 42 43 29 2C 41 0D 0A 31 32 20 LD (BC),A..12
006440: 20 20 20 20 20 20 20 20 20 4C 44 20 28 44 45 29 LD (DE)
006450: 2C 41 0D 0A 37 37 20 20 20 20 20 20 20 20 20 20 ,A..77
006460: 4C 44 20 28 48 4C 29 2C 41 0D 0A 37 30 20 20 20 LD (HL),A..70
006470: 20 20 20 20 20 20 20 4C 44 20 28 48 4C 29 2C 42 LD (HL),B
006480: 7C 28 48 4C 29 2C 43 7C 28 48 4C 29 2C 44 7C 28 |(HL),C|(HL),D|(
006490: 48 4C 29 2C 45 7C 28 48 4C 29 2C 48 7C 28 48 4C HL),E|(HL),H|(HL
0064A0: 29 2C 4C 0D 0A 33 36 5F 78 31 20 20 20 20 20 20 ),L..36_x1
0064B0: 20 4C 44 20 28 48 4C 29 2C 78 0D 0A 44 44 5F 37 LD (HL),x..DD_7
0064C0: 37 5F 78 31 20 20 20 20 4C 44 20 28 49 58 2B 78 7_x1 LD (IX+x
0064D0: 29 2C 41 0D 0A 44 44 5F 37 30 5F 78 31 20 20 20 ),A..DD_70_x1
0064E0: 20 4C 44 20 28 49 58 2B 78 29 2C 42 7C 28 49 58 LD (IX+x),B|(IX
0064F0: 2B 78 29 2C 43 7C 28 49 58 2B 78 29 2C 44 0D 0A +x),C|(IX+x),D..
006500: 48 4C 29 7C 32 2C 41 0D 0A 44 44 5F 43 42 5F 78 HL)|2,A..DD_CB_x
006510: 31 5F 35 45 20 42 49 54 20 33 2C 28 49 58 2B 78 1_5E BIT 3,(IX+x
006520: 29 0D 0A 46 44 5F 43 42 5F 78 31 5F 35 45 20 42 )..FD_CB_x1_5E B
006530: 49 54 20 33 2C 28 49 59 2B 78 29 0D 0A 43 42 5F IT 3,(IY+x)..CB_
006540: 35 38 20 20 20 20 20 20 20 42 49 54 20 33 2C 42 58 BIT 3,B
006550: 7C 33 2C 43 7C 33 2C 44 7C 33 2C 45 7C 33 2C 48 |3,C|3,D|3,E|3,H
006560: 7C 33 2C 4C 7C 33 2C 28 48 4C 29 7C 33 2C 41 0D |3,L|3,(HL)|3,A.
006570: 0A 44 44 5F 43 42 5F 78 31 5F 36 36 20 42 49 54 .DD_CB_x1_66 BIT
006580: 20 34 2C 28 49 58 2B 78 29 0D 0A 46 44 5F 43 42 4,(IX+x)..FD_CB
006590: 5F 78 31 5F 36 36 20 42 49 54 20 34 2C 28 49 59 _x1_66 BIT 4,(IY
0065A0: 2B 78 29 0D 0A 43 42 5F 36 30 20 20 20 20 20 20 +x)..CB_60
0065B0: 20 42 49 54 20 34 2C 42 7C 34 2C 43 7C 34 2C 44 BIT 4,B|4,C|4,D
0065C0: 7C 34 2C 45 7C 34 2C 48 7C 34 2C 4C 7C 34 2C 28 |4,E|4,H|4,L|4,(
0065D0: 48 4C 29 7C 34 2C 41 0D 0A 44 44 5F 43 42 5F 78 HL)|4,A..DD_CB_x
0065E0: 31 5F 36 45 20 42 49 54 20 35 2C 28 49 58 2B 78 1_6E BIT 5,(IX+x
0065F0: 29 0D 0A 46 44 5F 43 42 5F 78 31 5F 36 45 20 42 )..FD_CB_x1_6E B
006600: 49 54 20 35 2C 28 49 59 2B 78 29 0D 0A 43 42 5F IT 5,(IY+x)..CB_
006610: 36 38 20 20 20 20 20 20 20 42 49 54 20 35 2C 42 68 BIT 5,B
006620: 7C 35 2C 43 7C 35 2C 44 7C 35 2C 45 7C 35 2C 48 |5,C|5,D|5,E|5,H
006630: 7C 35 2C 4C 7C 35 2C 28 48 4C 29 7C 35 2C 41 0D |5,L|5,(HL)|5,A.
006640: 0A 44 44 5F 43 42 5F 78 31 5F 37 36 20 42 49 54 .DD_CB_x1_76 BIT
006650: 20 36 2C 28 49 58 2B 78 29 0D 0A 46 44 5F 43 42 6,(IX+x)..FD_CB
006660: 5F 78 31 5F 37 36 20 42 49 54 20 36 2C 28 49 59 _x1_76 BIT 6,(IY
006670: 2B 78 29 0D 0A 43 42 5F 37 30 20 20 20 20 20 20 +x)..CB_70
006680: 20 42 49 54 20 36 2C 42 7C 36 2C 43 7C 36 2C 44 BIT 6,B|6,C|6,D
006690: 7C 36 2C 45 7C 36 2C 48 7C 36 2C 4C 7C 36 2C 28 |6,E|6,H|6,L|6,(
0066A0: 48 4C 29 7C 36 2C 41 0D 0A 44 44 5F 43 42 5F 78 HL)|6,A..DD_CB_x
0066B0: 31 5F 37 45 20 42 49 54 20 37 2C 28 49 58 2B 78 1_7E BIT 7,(IX+x
0066C0: 29 0D 0A 46 44 5F 43 42 5F 78 31 5F 37 45 20 42 )..FD_CB_x1_7E B
0066D0: 49 54 20 37 2C 28 49 59 2B 78 29 0D 0A 43 42 5F IT 7,(IY+x)..CB_
0066E0: 37 38 20 20 20 20 20 20 20 42 49 54 20 37 2C 42 78 BIT 7,B
0066F0: 7C 37 2C 43 7C 37 2C 44 7C 37 2C 45 7C 37 2C 48 |7,C|7,D|7,E|7,H
006700: 44 44 5F 37 33 5F 78 31 20 20 20 20 4C 44 20 28 DD_73_x1 LD (
006710: 49 58 2B 78 29 2C 45 7C 28 49 58 2B 78 29 2C 48 IX+x),E|(IX+x),H
006720: 7C 28 49 58 2B 78 29 2C 4C 0D 0A 44 44 5F 33 36 |(IX+x),L..DD_36
006730: 5F 78 31 5F 78 31 20 4C 44 20 28 49 58 2B 78 29 _x1_x1 LD (IX+x)
006740: 2C 78 0D 0A 46 44 5F 37 37 5F 78 31 20 20 20 20 ,x..FD_77_x1
006750: 4C 44 20 28 49 59 2B 78 29 2C 41 0D 0A 46 44 5F LD (IY+x),A..FD_
006760: 37 30 5F 78 31 20 20 20 20 4C 44 20 28 49 59 2B 70_x1 LD (IY+
006770: 78 29 2C 42 7C 28 49 59 2B 78 29 2C 43 7C 28 49 x),B|(IY+x),C|(I
006780: 59 2B 78 29 2C 44 0D 0A 46 44 5F 37 33 5F 78 31 Y+x),D..FD_73_x1
006790: 20 20 20 20 4C 44 20 28 49 59 2B 78 29 2C 45 7C LD (IY+x),E|
0067A0: 28 49 59 2B 78 29 2C 48 7C 28 49 59 2B 78 29 2C (IY+x),H|(IY+x),
0067B0: 4C 0D 0A 46 44 5F 33 36 5F 78 31 5F 78 31 20 4C L..FD_36_x1_x1 L
0067C0: 44 20 28 49 59 2B 78 29 2C 78 0D 0A 45 44 5F 34 D (IY+x),x..ED_4
0067D0: 33 5F 78 32 20 20 20 20 4C 44 20 28 78 29 2C 42 3_x2 LD (x),B
0067E0: 43 0D 0A 45 44 5F 35 33 5F 78 32 20 20 20 20 4C C..ED_53_x2 L
0067F0: 44 20 28 78 29 2C 44 45 0D 0A 32 32 5F 78 32 20 D (x),DE..22_x2
006800: 20 20 20 20 20 20 4C 44 20 28 78 29 2C 48 4C 0D LD (x),HL.
006810: 0A 44 44 5F 32 32 5F 78 32 20 20 20 20 4C 44 20 .DD_22_x2 LD
006820: 28 78 29 2C 49 58 0D 0A 46 44 5F 32 32 5F 78 32 (x),IX..FD_22_x2
006830: 20 20 20 20 4C 44 20 28 78 29 2C 49 59 0D 0A 45 LD (x),IY..E
006840: 44 5F 37 33 5F 78 32 20 20 20 20 4C 44 20 28 78 D_73_x2 LD (x
006850: 29 2C 53 50 0D 0A 30 41 20 20 20 20 20 20 20 20 ),SP..0A
006860: 20 20 4C 44 20 41 2C 28 42 43 29 0D 0A 31 41 20 LD A,(BC)..1A
006870: 20 20 20 20 20 20 20 20 20 4C 44 20 41 2C 28 44 LD A,(D
006880: 45 29 0D 0A 44 44 5F 37 45 5F 78 31 20 20 20 20 E)..DD_7E_x1
006890: 4C 44 20 41 2C 28 49 58 2B 78 29 0D 0A 46 44 5F LD A,(IX+x)..FD_
0068A0: 37 45 5F 78 31 20 20 20 20 4C 44 20 41 2C 28 49 7E_x1 LD A,(I
0068B0: 59 2B 78 29 0D 0A 37 38 20 20 20 20 20 20 20 20 Y+x)..78
0068C0: 20 20 4C 44 20 41 2C 42 7C 41 2C 43 7C 41 2C 44 LD A,B|A,C|A,D
0068D0: 7C 41 2C 45 7C 41 2C 48 7C 41 2C 4C 7C 41 2C 28 |A,E|A,H|A,L|A,(
0068E0: 48 4C 29 7C 41 2C 41 0D 0A 45 44 5F 35 37 20 20 HL)|A,A..ED_57
0068F0: 20 20 20 20 20 4C 44 20 41 2C 49 0D 0A 45 44 5F LD A,I..ED_
006900: 7C 37 2C 4C 7C 37 2C 28 48 4C 29 7C 37 2C 41 0D |7,L|7,(HL)|7,A.
006910: 0A 44 43 5F 78 32 20 20 20 20 20 20 20 43 41 4C .DC_x2 CAL
006920: 4C 20 43 2C 78 0D 0A 46 43 5F 78 32 20 20 20 20 L C,x..FC_x2
006930: 20 20 20 43 41 4C 4C 20 4D 2C 78 0D 0A 44 34 5F CALL M,x..D4_
006940: 78 32 20 20 20 20 20 20 20 43 41 4C 4C 20 4E 43 x2 CALL NC
006950: 2C 78 0D 0A 43 34 5F 78 32 20 20 20 20 20 20 20 ,x..C4_x2
006960: 43 41 4C 4C 20 4E 5A 2C 78 0D 0A 46 34 5F 78 32 CALL NZ,x..F4_x2
006970: 20 20 20 20 20 20 20 43 41 4C 4C 20 50 2C 78 0D CALL P,x.
006980: 0A 45 43 5F 78 32 20 20 20 20 20 20 20 43 41 4C .EC_x2 CAL
006990: 4C 20 50 45 2C 78 0D 0A 45 34 5F 78 32 20 20 20 L PE,x..E4_x2
0069A0: 20 20 20 20 43 41 4C 4C 20 50 4F 2C 78 0D 0A 43 CALL PO,x..C
0069B0: 43 5F 78 32 20 20 20 20 20 20 20 43 41 4C 4C 20 C_x2 CALL
0069C0: 5A 2C 78 7C 78 0D 0A 33 46 20 20 20 20 20 20 20 Z,x|x..3F
0069D0: 20 20 20 43 43 46 0D 0A 44 44 5F 42 45 5F 78 31 CCF..DD_BE_x1
0069E0: 20 20 20 20 43 50 20 28 49 58 2B 78 29 0D 0A 46 CP (IX+x)..F
0069F0: 44 5F 42 45 5F 78 31 20 20 20 20 43 50 20 28 49 D_BE_x1 CP (I
006A00: 59 2B 78 29 0D 0A 42 38 20 20 20 20 20 20 20 20 Y+x)..B8
006A10: 20 20 43 50 20 42 7C 43 7C 44 7C 45 7C 48 7C 4C CP B|C|D|E|H|L
006A20: 7C 28 48 4C 29 7C 41 0D 0A 46 45 5F 78 31 20 20 |(HL)|A..FE_x1
006A30: 20 20 20 20 20 43 50 20 78 0D 0A 45 44 5F 41 39 CP x..ED_A9
006A40: 20 20 20 20 20 20 20 43 50 44 0D 0A 45 44 5F 42 CPD..ED_B
006A50: 39 20 20 20 20 20 20 20 43 50 44 52 0D 0A 45 44 9 CPDR..ED
006A60: 5F 41 31 20 20 20 20 20 20 20 43 50 49 0D 0A 45 _A1 CPI..E
006A70: 44 5F 42 31 20 20 20 20 20 20 20 43 50 49 52 0D D_B1 CPIR.
006A80: 0A 32 46 20 20 20 20 20 20 20 20 20 20 43 50 4C .2F CPL
006A90: 0D 0A 32 37 20 20 20 20 20 20 20 20 20 20 44 41 ..27 DA
006AA0: 41 0D 0A 33 35 20 20 20 20 20 20 20 20 20 20 44 A..35 D
006AB0: 45 43 20 28 48 4C 29 0D 0A 44 44 5F 33 35 5F 78 EC (HL)..DD_35_x
006AC0: 31 20 20 20 20 44 45 43 20 28 49 58 2B 78 29 0D 1 DEC (IX+x).
006AD0: 0A 46 44 5F 33 35 5F 78 31 20 20 20 20 44 45 43 .FD_35_x1 DEC
006AE0: 20 28 49 59 2B 78 29 0D 0A 33 44 20 20 20 20 20 (IY+x)..3D
006AF0: 20 20 20 20 20 44 45 43 20 41 0D 0A 30 35 20 20 DEC A..05
006B00: 35 46 20 20 20 20 20 20 20 4C 44 20 41 2C 52 0D 5F LD A,R.
006B10: 0A 33 41 5F 78 32 20 20 20 20 20 20 20 4C 44 20 .3A_x2 LD
006B20: 41 2C 28 78 29 0D 0A 33 45 5F 78 31 20 20 20 20 A,(x)..3E_x1
006B30: 20 20 20 4C 44 20 41 2C 78 0D 0A 44 44 5F 34 36 LD A,x..DD_46
006B40: 5F 78 31 20 20 20 20 4C 44 20 42 2C 28 49 58 2B _x1 LD B,(IX+
006B50: 78 29 0D 0A 46 44 5F 34 36 5F 78 31 20 20 20 20 x)..FD_46_x1
006B60: 4C 44 20 42 2C 28 49 59 2B 78 29 0D 0A 34 30 20 LD B,(IY+x)..40
006B70: 20 20 20 20 20 20 20 20 20 4C 44 20 42 2C 42 7C LD B,B|
006B80: 42 2C 43 7C 42 2C 44 7C 42 2C 45 7C 42 2C 48 7C B,C|B,D|B,E|B,H|
006B90: 42 2C 4C 7C 42 2C 28 48 4C 29 7C 42 2C 41 0D 0A B,L|B,(HL)|B,A..
006BA0: 30 36 5F 78 31 20 20 20 20 20 20 20 4C 44 20 42 06_x1 LD B
006BB0: 2C 78 0D 0A 45 44 5F 34 42 5F 78 32 20 20 20 20 ,x..ED_4B_x2
006BC0: 4C 44 20 42 43 2C 28 78 29 0D 0A 30 31 5F 78 32 LD BC,(x)..01_x2
006BD0: 20 20 20 20 20 20 20 4C 44 20 42 43 2C 78 0D 0A LD BC,x..
006BE0: 44 44 5F 34 45 5F 78 31 20 20 20 20 4C 44 20 43 DD_4E_x1 LD C
006BF0: 2C 28 49 58 2B 78 29 0D 0A 46 44 5F 34 45 5F 78 ,(IX+x)..FD_4E_x
006C00: 31 20 20 20 20 4C 44 20 43 2C 28 49 59 2B 78 29 1 LD C,(IY+x)
006C10: 0D 0A 34 38 20 20 20 20 20 20 20 20 20 20 4C 44 ..48 LD
006C20: 20 43 2C 42 7C 43 2C 43 7C 43 2C 44 7C 43 2C 45 C,B|C,C|C,D|C,E
006C30: 7C 43 2C 48 7C 43 2C 4C 7C 43 2C 28 48 4C 29 7C |C,H|C,L|C,(HL)|
006C40: 43 2C 41 0D 0A 30 45 5F 78 31 20 20 20 20 20 20 C,A..0E_x1
006C50: 20 4C 44 20 43 2C 78 0D 0A 44 44 5F 35 36 5F 78 LD C,x..DD_56_x
006C60: 31 20 20 20 20 4C 44 20 44 2C 28 49 58 2B 78 29 1 LD D,(IX+x)
006C70: 0D 0A 46 44 5F 35 36 5F 78 31 20 20 20 20 4C 44 ..FD_56_x1 LD
006C80: 20 44 2C 28 49 59 2B 78 29 0D 0A 35 30 20 20 20 D,(IY+x)..50
006C90: 20 20 20 20 20 20 20 4C 44 20 44 2C 42 7C 44 2C LD D,B|D,
006CA0: 43 7C 44 2C 44 7C 44 2C 45 7C 44 2C 48 7C 44 2C C|D,D|D,E|D,H|D,
006CB0: 4C 7C 44 2C 28 48 4C 29 7C 44 2C 41 0D 0A 31 36 L|D,(HL)|D,A..16
006CC0: 5F 78 31 20 20 20 20 20 20 20 4C 44 20 44 2C 78 _x1 LD D,x
006CD0: 0D 0A 31 32 20 20 20 20 20 20 20 20 20 20 4C 44 ..12 LD
006CE0: 20 28 44 45 29 2C 41 0D 0A 45 44 5F 35 42 5F 78 (DE),A..ED_5B_x
006CF0: 32 20 20 20 20 4C 44 20 44 45 2C 28 78 29 0D 0A 2 LD DE,(x)..
006D00: 20 20 20 20 20 20 20 20 44 45 43 20 42 0D 0A 30 DEC B..0
006D10: 42 20 20 20 20 20 20 20 20 20 20 44 45 43 20 42 B DEC B
006D20: 43 0D 0A 30 44 20 20 20 20 20 20 20 20 20 20 44 C..0D D
006D30: 45 43 20 43 0D 0A 31 35 20 20 20 20 20 20 20 20 EC C..15
006D40: 20 20 44 45 43 20 44 0D 0A 31 42 20 20 20 20 20 DEC D..1B
006D50: 20 20 20 20 20 44 45 43 20 44 45 0D 0A 31 44 20 DEC DE..1D
006D60: 20 20 20 20 20 20 20 20 20 44 45 43 20 45 0D 0A DEC E..
006D70: 32 35 20 20 20 20 20 20 20 20 20 20 44 45 43 20 25 DEC
006D80: 48 0D 0A 32 42 20 20 20 20 20 20 20 20 20 20 44 H..2B D
006D90: 45 43 20 48 4C 0D 0A 44 44 5F 32 42 20 20 20 20 EC HL..DD_2B
006DA0: 20 20 20 44 45 43 20 49 58 0D 0A 46 44 5F 32 42 DEC IX..FD_2B
006DB0: 20 20 20 20 20 20 20 44 45 43 20 49 59 0D 0A 32 DEC IY..2
006DC0: 44 20 20 20 20 20 20 20 20 20 20 44 45 43 20 4C D DEC L
006DD0: 0D 0A 33 42 20 20 20 20 20 20 20 20 20 20 44 45 ..3B DE
006DE0: 43 20 53 50 0D 0A 46 33 20 20 20 20 20 20 20 20 C SP..F3
006DF0: 20 20 44 49 0D 0A 31 30 5F 70 31 20 20 20 20 20 DI..10_p1
006E00: 20 20 44 4A 4E 5A 20 70 0D 0A 46 42 20 20 20 20 DJNZ p..FB
006E10: 20 20 20 20 20 20 45 49 0D 0A 45 33 20 20 20 20 EI..E3
006E20: 20 20 20 20 20 20 45 58 20 28 53 50 29 2C 48 4C EX (SP),HL
006E30: 0D 0A 44 44 5F 45 33 20 20 20 20 20 20 20 45 58 ..DD_E3 EX
006E40: 20 28 53 50 29 2C 49 58 0D 0A 46 44 5F 45 33 20 (SP),IX..FD_E3
006E50: 20 20 20 20 20 20 45 58 20 28 53 50 29 2C 49 59 EX (SP),IY
006E60: 0D 0A 30 38 20 20 20 20 20 20 20 20 20 20 45 58 ..08 EX
006E70: 20 41 46 2C 41 46 27 0D 0A 45 42 20 20 20 20 20 AF,AF'..EB
006E80: 20 20 20 20 20 45 58 20 44 45 2C 48 4C 0D 0A 44 EX DE,HL..D
006E90: 39 20 20 20 20 20 20 20 20 20 20 45 58 58 0D 0A 9 EXX..
006EA0: 37 36 20 20 20 20 20 20 20 20 20 20 48 41 4C 54 76 HALT
006EB0: 0D 0A 45 44 5F 34 36 20 20 20 20 20 20 20 49 4D ..ED_46 IM
006EC0: 20 30 0D 0A 45 44 5F 35 36 20 20 20 20 20 20 20 0..ED_56
006ED0: 49 4D 20 31 0D 0A 45 44 5F 35 45 20 20 20 20 20 IM 1..ED_5E
006EE0: 20 20 49 4D 20 32 0D 0A 45 44 5F 37 38 20 20 20 IM 2..ED_78
006EF0: 20 20 20 20 49 4E 20 41 2C 28 43 29 0D 0A 44 42 IN A,(C)..DB
006F00: 31 31 5F 78 32 20 20 20 20 20 20 20 4C 44 20 44 11_x2 LD D
006F10: 45 2C 78 0D 0A 44 44 5F 35 45 5F 78 31 20 20 20 E,x..DD_5E_x1
006F20: 20 4C 44 20 45 2C 28 49 58 2B 78 29 0D 0A 46 44 LD E,(IX+x)..FD
006F30: 5F 35 45 5F 78 31 20 20 20 20 4C 44 20 45 2C 28 _5E_x1 LD E,(
006F40: 49 59 2B 78 29 0D 0A 35 38 20 20 20 20 20 20 20 IY+x)..58
006F50: 20 20 20 4C 44 20 45 2C 42 7C 45 2C 43 7C 45 2C LD E,B|E,C|E,
006F60: 44 7C 45 2C 45 7C 45 2C 48 7C 45 2C 4C 7C 45 2C D|E,E|E,H|E,L|E,
006F70: 28 48 4C 29 7C 45 2C 41 0D 0A 31 45 5F 78 31 20 (HL)|E,A..1E_x1
006F80: 20 20 20 20 20 20 4C 44 20 45 2C 78 0D 0A 44 44 LD E,x..DD
006F90: 5F 36 36 5F 78 31 20 20 20 20 4C 44 20 48 2C 28 _66_x1 LD H,(
006FA0: 49 58 2B 78 29 0D 0A 46 44 5F 36 36 5F 78 31 20 IX+x)..FD_66_x1
006FB0: 20 20 20 4C 44 20 48 2C 28 49 59 2B 78 29 0D 0A LD H,(IY+x)..
006FC0: 36 30 20 20 20 20 20 20 20 20 20 20 4C 44 20 48 60 LD H
006FD0: 2C 42 7C 48 2C 43 7C 48 2C 44 7C 48 2C 45 7C 48 ,B|H,C|H,D|H,E|H
006FE0: 2C 48 7C 48 2C 4C 7C 48 2C 28 48 4C 29 7C 48 2C ,H|H,L|H,(HL)|H,
006FF0: 41 0D 0A 32 36 5F 78 31 20 20 20 20 20 20 20 4C A..26_x1 L
007000: 44 20 48 2C 78 0D 0A 32 41 5F 78 32 20 20 20 20 D H,x..2A_x2
007010: 20 20 20 4C 44 20 48 4C 2C 28 78 29 0D 0A 45 44 LD HL,(x)..ED
007020: 5F 34 37 20 20 20 20 20 20 20 4C 44 20 49 2C 41 _47 LD I,A
007030: 0D 0A 44 44 5F 32 41 5F 78 32 20 20 20 20 4C 44 ..DD_2A_x2 LD
007040: 20 49 58 2C 28 78 29 0D 0A 44 44 5F 32 31 5F 78 IX,(x)..DD_21_x
007050: 32 20 20 20 20 4C 44 20 49 58 2C 78 0D 0A 46 44 2 LD IX,x..FD
007060: 5F 32 41 5F 78 32 20 20 20 20 4C 44 20 49 59 2C _2A_x2 LD IY,
007070: 28 78 29 0D 0A 46 44 5F 32 31 5F 78 32 20 20 20 (x)..FD_21_x2
007080: 20 4C 44 20 49 59 2C 78 0D 0A 44 44 5F 36 45 5F LD IY,x..DD_6E_
007090: 78 31 20 20 20 20 4C 44 20 4C 2C 28 49 58 2B 78 x1 LD L,(IX+x
0070A0: 29 0D 0A 46 44 5F 36 45 5F 78 31 20 20 20 20 4C )..FD_6E_x1 L
0070B0: 44 20 4C 2C 28 49 59 2B 78 29 0D 0A 36 38 20 20 D L,(IY+x)..68
0070C0: 20 20 20 20 20 20 20 20 4C 44 20 4C 2C 42 7C 4C LD L,B|L
0070D0: 2C 43 7C 4C 2C 44 7C 4C 2C 45 7C 4C 2C 48 7C 4C ,C|L,D|L,E|L,H|L
0070E0: 2C 4C 7C 4C 2C 28 48 4C 29 7C 4C 2C 41 0D 0A 32 ,L|L,(HL)|L,A..2
0070F0: 45 5F 78 31 20 20 20 20 20 20 20 4C 44 20 4C 2C E_x1 LD L,
007100: 5F 78 31 20 20 20 20 20 20 20 49 4E 20 41 2C 28 _x1 IN A,(
007110: 78 29 0D 0A 45 44 5F 34 30 20 20 20 20 20 20 20 x)..ED_40
007120: 49 4E 20 42 2C 28 43 29 0D 0A 45 44 5F 34 38 20 IN B,(C)..ED_48
007130: 20 20 20 20 20 20 49 4E 20 43 2C 28 43 29 0D 0A IN C,(C)..
007140: 45 44 5F 35 30 20 20 20 20 20 20 20 49 4E 20 44 ED_50 IN D
007150: 2C 28 43 29 0D 0A 45 44 5F 35 38 20 20 20 20 20 ,(C)..ED_58
007160: 20 20 49 4E 20 45 2C 28 43 29 0D 0A 45 44 5F 36 IN E,(C)..ED_6
007170: 30 20 20 20 20 20 20 20 49 4E 20 48 2C 28 43 29 0 IN H,(C)
007180: 0D 0A 45 44 5F 36 38 20 20 20 20 20 20 20 49 4E ..ED_68 IN
007190: 20 4C 2C 28 43 29 0D 0A 44 44 5F 33 34 5F 78 31 L,(C)..DD_34_x1
0071A0: 20 20 20 20 49 4E 43 20 28 49 58 2B 78 29 0D 0A INC (IX+x)..
0071B0: 46 44 5F 33 34 5F 78 31 20 20 20 20 49 4E 43 20 FD_34_x1 INC
0071C0: 28 49 59 2B 78 29 0D 0A 33 43 20 20 20 20 20 20 (IY+x)..3C
0071D0: 20 20 20 20 49 4E 43 20 41 0D 0A 30 33 20 20 20 INC A..03
0071E0: 20 20 20 20 20 20 20 49 4E 43 20 42 43 7C 42 0D INC BC|B.
0071F0: 0A 30 43 20 20 20 20 20 20 20 20 20 20 49 4E 43 .0C INC
007200: 20 43 0D 0A 31 33 20 20 20 20 20 20 20 20 20 20 C..13
007210: 49 4E 43 20 44 45 7C 44 0D 0A 31 43 20 20 20 20 INC DE|D..1C
007220: 20 20 20 20 20 20 49 4E 43 20 45 0D 0A 32 33 20 INC E..23
007230: 20 20 20 20 20 20 20 20 20 49 4E 43 20 48 4C 7C INC HL|
007240: 48 0D 0A 44 44 5F 32 33 20 20 20 20 20 20 20 49 H..DD_23 I
007250: 4E 43 20 49 58 0D 0A 46 44 5F 32 33 20 20 20 20 NC IX..FD_23
007260: 20 20 20 49 4E 43 20 49 59 0D 0A 32 43 20 20 20 INC IY..2C
007270: 20 20 20 20 20 20 20 49 4E 43 20 4C 0D 0A 33 33 INC L..33
007280: 20 20 20 20 20 20 20 20 20 20 49 4E 43 20 53 50 INC SP
007290: 7C 28 48 4C 29 0D 0A 45 44 5F 41 41 20 20 20 20 |(HL)..ED_AA
0072A0: 20 20 20 49 4E 44 0D 0A 45 44 5F 42 41 20 20 20 IND..ED_BA
0072B0: 20 20 20 20 49 4E 44 52 0D 0A 45 44 5F 41 32 20 INDR..ED_A2
0072C0: 20 20 20 20 20 20 49 4E 49 0D 0A 45 44 5F 42 32 INI..ED_B2
0072D0: 20 20 20 20 20 20 20 49 4E 49 52 0D 0A 45 39 20 INIR..E9
0072E0: 20 20 20 20 20 20 20 20 20 4A 50 20 28 48 4C 29 JP (HL)
0072F0: 0D 0A 44 44 5F 45 39 20 20 20 20 20 20 20 4A 50 ..DD_E9 JP
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: 78 0D 0A 45 44 5F 34 46 20 20 20 20 20 20 20 4C x..ED_4F L
007410: 44 20 52 2C 41 0D 0A 46 39 20 20 20 20 20 20 20 D R,A..F9
007420: 20 20 20 4C 44 20 53 50 2C 48 4C 0D 0A 44 44 5F LD SP,HL..DD_
007430: 46 39 20 20 20 20 20 20 20 4C 44 20 53 50 2C 49 F9 LD SP,I
007440: 58 0D 0A 46 44 5F 46 39 20 20 20 20 20 20 20 4C X..FD_F9 L
007450: 44 20 53 50 2C 49 59 0D 0A 45 44 5F 37 42 5F 78 D SP,IY..ED_7B_x
007460: 32 20 20 20 20 4C 44 20 53 50 2C 28 78 29 0D 0A 2 LD SP,(x)..
007470: 33 31 5F 78 32 20 20 20 20 20 20 20 4C 44 20 53 31_x2 LD S
007480: 50 2C 78 7C 28 78 29 2C 41 0D 0A 45 44 5F 41 38 P,x|(x),A..ED_A8
007490: 20 20 20 20 20 20 20 4C 44 44 0D 0A 45 44 5F 42 LDD..ED_B
0074A0: 38 20 20 20 20 20 20 20 4C 44 44 52 0D 0A 45 44 8 LDDR..ED
0074B0: 5F 41 30 20 20 20 20 20 20 20 4C 44 49 0D 0A 45 _A0 LDI..E
0074C0: 44 5F 42 30 20 20 20 20 20 20 20 4C 44 49 52 0D D_B0 LDIR.
0074D0: 0A 45 44 5F 34 34 20 20 20 20 20 20 20 4E 45 47 .ED_44 NEG
0074E0: 0D 0A 30 30 20 20 20 20 20 20 20 20 20 20 4E 4F ..00 NO
0074F0: 50 0D 0A 44 44 5F 42 36 5F 78 31 20 20 20 20 4F P..DD_B6_x1 O
007500: 52 20 28 49 58 2B 78 29 0D 0A 46 44 5F 42 36 5F R (IX+x)..FD_B6_
007510: 78 31 20 20 20 20 4F 52 20 28 49 59 2B 78 29 0D x1 OR (IY+x).
007520: 0A 42 30 20 20 20 20 20 20 20 20 20 20 4F 52 20 .B0 OR
007530: 42 7C 43 7C 44 7C 45 7C 48 7C 4C 7C 28 48 4C 29 B|C|D|E|H|L|(HL)
007540: 7C 41 0D 0A 46 36 5F 78 31 20 20 20 20 20 20 20 |A..F6_x1
007550: 4F 52 20 78 0D 0A 45 44 5F 42 42 20 20 20 20 20 OR x..ED_BB
007560: 20 20 4F 54 44 52 0D 0A 45 44 5F 42 33 20 20 20 OTDR..ED_B3
007570: 20 20 20 20 4F 54 49 52 0D 0A 45 44 5F 37 39 20 OTIR..ED_79
007580: 20 20 20 20 20 20 4F 55 54 20 28 43 29 2C 41 0D OUT (C),A.
007590: 0A 45 44 5F 34 31 20 20 20 20 20 20 20 4F 55 54 .ED_41 OUT
0075A0: 20 28 43 29 2C 42 0D 0A 45 44 5F 34 39 20 20 20 (C),B..ED_49
0075B0: 20 20 20 20 4F 55 54 20 28 43 29 2C 43 0D 0A 45 OUT (C),C..E
0075C0: 44 5F 35 31 20 20 20 20 20 20 20 4F 55 54 20 28 D_51 OUT (
0075D0: 43 29 2C 44 0D 0A 45 44 5F 35 39 20 20 20 20 20 C),D..ED_59
0075E0: 20 20 4F 55 54 20 28 43 29 2C 45 0D 0A 45 44 5F OUT (C),E..ED_
0075F0: 36 31 20 20 20 20 20 20 20 4F 55 54 20 28 43 29 61 OUT (C)
007600: 20 33 32 0D 0A 46 46 20 20 20 20 20 20 20 20 20 32..FF
007610: 20 52 53 54 20 33 38 48 0D 0A 45 46 20 20 20 20 RST 38H..EF
007620: 20 20 20 20 20 20 52 53 54 20 34 30 0D 0A 46 37 RST 40..F7
007630: 20 20 20 20 20 20 20 20 20 20 52 53 54 20 34 38 RST 48
007640: 0D 0A 46 46 20 20 20 20 20 20 20 20 20 20 52 53 ..FF RS
007650: 54 20 35 36 0D 0A 43 46 20 20 20 20 20 20 20 20 T 56..CF
007660: 20 20 52 53 54 20 38 0D 0A 43 46 20 20 20 20 20 RST 8..CF
007670: 20 20 20 20 20 52 53 54 20 38 48 0D 0A 44 44 5F RST 8H..DD_
007680: 39 45 5F 78 31 20 20 20 20 53 42 43 20 41 2C 28 9E_x1 SBC A,(
007690: 49 58 2B 78 29 0D 0A 46 44 5F 39 45 5F 78 31 20 IX+x)..FD_9E_x1
0076A0: 20 20 20 53 42 43 20 41 2C 28 49 59 2B 78 29 0D SBC A,(IY+x).
0076B0: 0A 39 38 20 20 20 20 20 20 20 20 20 20 53 42 43 .98 SBC
0076C0: 20 41 2C 42 7C 41 2C 43 7C 41 2C 44 7C 41 2C 45 A,B|A,C|A,D|A,E
0076D0: 7C 41 2C 48 7C 41 2C 4C 7C 41 2C 28 48 4C 29 7C |A,H|A,L|A,(HL)|
0076E0: 41 2C 41 0D 0A 44 45 5F 78 31 20 20 20 20 20 20 A,A..DE_x1
0076F0: 20 53 42 43 20 41 2C 78 0D 0A 45 44 5F 34 32 20 SBC A,x..ED_42
007700: 20 20 20 20 20 20 53 42 43 20 48 4C 2C 42 43 0D SBC HL,BC.
007710: 0A 45 44 5F 35 32 20 20 20 20 20 20 20 53 42 43 .ED_52 SBC
007720: 20 48 4C 2C 44 45 0D 0A 45 44 5F 36 32 20 20 20 HL,DE..ED_62
007730: 20 20 20 20 53 42 43 20 48 4C 2C 48 4C 0D 0A 45 SBC HL,HL..E
007740: 44 5F 37 32 20 20 20 20 20 20 20 53 42 43 20 48 D_72 SBC H
007750: 4C 2C 53 50 0D 0A 33 37 20 20 20 20 20 20 20 20 L,SP..37
007760: 20 20 53 43 46 0D 0A 44 44 5F 43 42 5F 78 31 5F SCF..DD_CB_x1_
007770: 43 36 20 53 45 54 20 30 2C 28 49 58 2B 78 29 0D C6 SET 0,(IX+x).
007780: 0A 46 44 5F 43 42 5F 78 31 5F 43 36 20 53 45 54 .FD_CB_x1_C6 SET
007790: 20 30 2C 28 49 59 2B 78 29 0D 0A 43 42 5F 43 30 0,(IY+x)..CB_C0
0077A0: 20 20 20 20 20 20 20 53 45 54 20 30 2C 42 7C 30 SET 0,B|0
0077B0: 2C 43 7C 30 2C 44 7C 30 2C 45 7C 30 2C 48 7C 30 ,C|0,D|0,E|0,H|0
0077C0: 2C 4C 7C 30 2C 28 48 4C 29 7C 30 2C 41 0D 0A 44 ,L|0,(HL)|0,A..D
0077D0: 44 5F 43 42 5F 78 31 5F 43 45 20 53 45 54 20 31 D_CB_x1_CE SET 1
0077E0: 2C 28 49 58 2B 78 29 0D 0A 46 44 5F 43 42 5F 78 ,(IX+x)..FD_CB_x
0077F0: 31 5F 43 45 20 53 45 54 20 31 2C 28 49 59 2B 78 1_CE SET 1,(IY+x
007800: 2C 48 0D 0A 45 44 5F 36 39 20 20 20 20 20 20 20 ,H..ED_69
007810: 4F 55 54 20 28 43 29 2C 4C 0D 0A 44 33 5F 78 31 OUT (C),L..D3_x1
007820: 20 20 20 20 20 20 20 4F 55 54 20 28 78 29 2C 41 OUT (x),A
007830: 0D 0A 45 44 5F 41 42 20 20 20 20 20 20 20 4F 55 ..ED_AB OU
007840: 54 44 0D 0A 45 44 5F 41 33 20 20 20 20 20 20 20 TD..ED_A3
007850: 4F 55 54 49 0D 0A 46 31 20 20 20 20 20 20 20 20 OUTI..F1
007860: 20 20 50 4F 50 20 41 46 0D 0A 43 31 20 20 20 20 POP AF..C1
007870: 20 20 20 20 20 20 50 4F 50 20 42 43 0D 0A 44 31 POP BC..D1
007880: 20 20 20 20 20 20 20 20 20 20 50 4F 50 20 44 45 POP DE
007890: 0D 0A 45 31 20 20 20 20 20 20 20 20 20 20 50 4F ..E1 PO
0078A0: 50 20 48 4C 0D 0A 44 44 5F 45 31 20 20 20 20 20 P HL..DD_E1
0078B0: 20 20 50 4F 50 20 49 58 0D 0A 46 44 5F 45 31 20 POP IX..FD_E1
0078C0: 20 20 20 20 20 20 50 4F 50 20 49 59 0D 0A 46 35 POP IY..F5
0078D0: 20 20 20 20 20 20 20 20 20 20 50 55 53 48 20 41 PUSH A
0078E0: 46 0D 0A 43 35 20 20 20 20 20 20 20 20 20 20 50 F..C5 P
0078F0: 55 53 48 20 42 43 0D 0A 44 35 20 20 20 20 20 20 USH BC..D5
007900: 20 20 20 20 50 55 53 48 20 44 45 0D 0A 45 35 20 PUSH DE..E5
007910: 20 20 20 20 20 20 20 20 20 50 55 53 48 20 48 4C PUSH HL
007920: 0D 0A 44 44 5F 45 35 20 20 20 20 20 20 20 50 55 ..DD_E5 PU
007930: 53 48 20 49 58 0D 0A 46 44 5F 45 35 20 20 20 20 SH IX..FD_E5
007940: 20 20 20 50 55 53 48 20 49 59 0D 0A 44 44 5F 43 PUSH IY..DD_C
007950: 42 5F 78 31 5F 38 36 20 52 45 53 20 30 2C 28 49 B_x1_86 RES 0,(I
007960: 58 2B 78 29 0D 0A 46 44 5F 43 42 5F 78 31 5F 38 X+x)..FD_CB_x1_8
007970: 36 20 52 45 53 20 30 2C 28 49 59 2B 78 29 0D 0A 6 RES 0,(IY+x)..
007980: 43 42 5F 38 30 20 20 20 20 20 20 20 52 45 53 20 CB_80 RES
007990: 30 2C 42 7C 30 2C 43 7C 30 2C 44 7C 30 2C 45 7C 0,B|0,C|0,D|0,E|
0079A0: 30 2C 48 7C 30 2C 4C 7C 30 2C 28 48 4C 29 7C 30 0,H|0,L|0,(HL)|0
0079B0: 2C 41 0D 0A 44 44 5F 43 42 5F 78 31 5F 38 45 20 ,A..DD_CB_x1_8E
0079C0: 52 45 53 20 31 2C 28 49 58 2B 78 29 0D 0A 46 44 RES 1,(IX+x)..FD
0079D0: 5F 43 42 5F 78 31 5F 38 45 20 52 45 53 20 31 2C _CB_x1_8E RES 1,
0079E0: 28 49 59 2B 78 29 0D 0A 43 42 5F 38 38 20 20 20 (IY+x)..CB_88
0079F0: 20 20 20 20 52 45 53 20 31 2C 42 7C 31 2C 43 7C RES 1,B|1,C|
007A00: 29 0D 0A 43 42 5F 43 38 20 20 20 20 20 20 20 53 )..CB_C8 S
007A10: 45 54 20 31 2C 42 7C 31 2C 43 7C 31 2C 44 7C 31 ET 1,B|1,C|1,D|1
007A20: 2C 45 7C 31 2C 48 7C 31 2C 4C 7C 31 2C 28 48 4C ,E|1,H|1,L|1,(HL
007A30: 29 7C 31 2C 41 0D 0A 44 44 5F 43 42 5F 78 31 5F )|1,A..DD_CB_x1_
007A40: 44 36 20 53 45 54 20 32 2C 28 49 58 2B 78 29 0D D6 SET 2,(IX+x).
007A50: 0A 46 44 5F 43 42 5F 78 31 5F 44 36 20 53 45 54 .FD_CB_x1_D6 SET
007A60: 20 32 2C 28 49 59 2B 78 29 0D 0A 43 42 5F 44 30 2,(IY+x)..CB_D0
007A70: 20 20 20 20 20 20 20 53 45 54 20 32 2C 42 7C 32 SET 2,B|2
007A80: 2C 43 7C 32 2C 44 7C 32 2C 45 7C 32 2C 48 7C 32 ,C|2,D|2,E|2,H|2
007A90: 2C 4C 7C 32 2C 28 48 4C 29 7C 32 2C 41 0D 0A 44 ,L|2,(HL)|2,A..D
007AA0: 44 5F 43 42 5F 78 31 5F 44 45 20 53 45 54 20 33 D_CB_x1_DE SET 3
007AB0: 2C 28 49 58 2B 78 29 0D 0A 46 44 5F 43 42 5F 78 ,(IX+x)..FD_CB_x
007AC0: 31 5F 44 45 20 53 45 54 20 33 2C 28 49 59 2B 78 1_DE SET 3,(IY+x
007AD0: 29 0D 0A 43 42 5F 44 38 20 20 20 20 20 20 20 53 )..CB_D8 S
007AE0: 45 54 20 33 2C 42 7C 33 2C 43 7C 33 2C 44 7C 33 ET 3,B|3,C|3,D|3
007AF0: 2C 45 7C 33 2C 48 7C 33 2C 4C 7C 33 2C 28 48 4C ,E|3,H|3,L|3,(HL
007B00: 29 7C 33 2C 41 0D 0A 44 44 5F 43 42 5F 78 31 5F )|3,A..DD_CB_x1_
007B10: 45 36 20 53 45 54 20 34 2C 28 49 58 2B 78 29 0D E6 SET 4,(IX+x).
007B20: 0A 46 44 5F 43 42 5F 78 31 5F 45 36 20 53 45 54 .FD_CB_x1_E6 SET
007B30: 20 34 2C 28 49 59 2B 78 29 0D 0A 43 42 5F 45 30 4,(IY+x)..CB_E0
007B40: 20 20 20 20 20 20 20 53 45 54 20 34 2C 42 7C 34 SET 4,B|4
007B50: 2C 43 7C 34 2C 44 7C 34 2C 45 7C 34 2C 48 7C 34 ,C|4,D|4,E|4,H|4
007B60: 2C 4C 7C 34 2C 28 48 4C 29 7C 34 2C 41 0D 0A 44 ,L|4,(HL)|4,A..D
007B70: 44 5F 43 42 5F 78 31 5F 45 45 20 53 45 54 20 35 D_CB_x1_EE SET 5
007B80: 2C 28 49 58 2B 78 29 0D 0A 46 44 5F 43 42 5F 78 ,(IX+x)..FD_CB_x
007B90: 31 5F 45 45 20 53 45 54 20 35 2C 28 49 59 2B 78 1_EE SET 5,(IY+x
007BA0: 29 0D 0A 43 42 5F 45 38 20 20 20 20 20 20 20 53 )..CB_E8 S
007BB0: 45 54 20 35 2C 42 7C 35 2C 43 7C 35 2C 44 7C 35 ET 5,B|5,C|5,D|5
007BC0: 2C 45 7C 35 2C 48 7C 35 2C 4C 7C 35 2C 28 48 4C ,E|5,H|5,L|5,(HL
007BD0: 29 7C 35 2C 41 0D 0A 44 44 5F 43 42 5F 78 31 5F )|5,A..DD_CB_x1_
007BE0: 46 36 20 53 45 54 20 36 2C 28 49 58 2B 78 29 0D F6 SET 6,(IX+x).
007BF0: 0A 46 44 5F 43 42 5F 78 31 5F 46 36 20 53 45 54 .FD_CB_x1_F6 SET
007C00: 31 2C 44 7C 31 2C 45 7C 31 2C 48 7C 31 2C 4C 7C 1,D|1,E|1,H|1,L|
007C10: 31 2C 28 48 4C 29 7C 31 2C 41 0D 0A 44 44 5F 43 1,(HL)|1,A..DD_C
007C20: 42 5F 78 31 5F 39 36 20 52 45 53 20 32 2C 28 49 B_x1_96 RES 2,(I
007C30: 58 2B 78 29 0D 0A 46 44 5F 43 42 5F 78 31 5F 39 X+x)..FD_CB_x1_9
007C40: 36 20 52 45 53 20 32 2C 28 49 59 2B 78 29 0D 0A 6 RES 2,(IY+x)..
007C50: 43 42 5F 39 30 20 20 20 20 20 20 20 52 45 53 20 CB_90 RES
007C60: 32 2C 42 7C 32 2C 43 7C 32 2C 44 7C 32 2C 45 7C 2,B|2,C|2,D|2,E|
007C70: 32 2C 48 7C 32 2C 4C 7C 32 2C 28 48 4C 29 7C 32 2,H|2,L|2,(HL)|2
007C80: 2C 41 0D 0A 44 44 5F 43 42 5F 78 31 5F 39 45 20 ,A..DD_CB_x1_9E
007C90: 52 45 53 20 33 2C 28 49 58 2B 78 29 0D 0A 46 44 RES 3,(IX+x)..FD
007CA0: 5F 43 42 5F 78 31 5F 39 45 20 52 45 53 20 33 2C _CB_x1_9E RES 3,
007CB0: 28 49 59 2B 78 29 0D 0A 43 42 5F 39 38 20 20 20 (IY+x)..CB_98
007CC0: 20 20 20 20 52 45 53 20 33 2C 42 7C 33 2C 43 7C RES 3,B|3,C|
007CD0: 33 2C 44 7C 33 2C 45 7C 33 2C 48 7C 33 2C 4C 7C 3,D|3,E|3,H|3,L|
007CE0: 33 2C 28 48 4C 29 7C 33 2C 41 0D 0A 44 44 5F 43 3,(HL)|3,A..DD_C
007CF0: 42 5F 78 31 5F 41 36 20 52 45 53 20 34 2C 28 49 B_x1_A6 RES 4,(I
007D00: 58 2B 78 29 0D 0A 46 44 5F 43 42 5F 78 31 5F 41 X+x)..FD_CB_x1_A
007D10: 36 20 52 45 53 20 34 2C 28 49 59 2B 78 29 0D 0A 6 RES 4,(IY+x)..
007D20: 43 42 5F 41 30 20 20 20 20 20 20 20 52 45 53 20 CB_A0 RES
007D30: 34 2C 42 7C 34 2C 43 7C 34 2C 44 7C 34 2C 45 7C 4,B|4,C|4,D|4,E|
007D40: 34 2C 48 7C 34 2C 4C 7C 34 2C 28 48 4C 29 7C 34 4,H|4,L|4,(HL)|4
007D50: 2C 41 0D 0A 44 44 5F 43 42 5F 78 31 5F 41 45 20 ,A..DD_CB_x1_AE
007D60: 52 45 53 20 35 2C 28 49 58 2B 78 29 0D 0A 46 44 RES 5,(IX+x)..FD
007D70: 5F 43 42 5F 78 31 5F 41 45 20 52 45 53 20 35 2C _CB_x1_AE RES 5,
007D80: 28 49 59 2B 78 29 0D 0A 43 42 5F 41 38 20 20 20 (IY+x)..CB_A8
007D90: 20 20 20 20 52 45 53 20 35 2C 42 7C 35 2C 43 7C RES 5,B|5,C|
007DA0: 35 2C 44 7C 35 2C 45 7C 35 2C 48 7C 35 2C 4C 7C 5,D|5,E|5,H|5,L|
007DB0: 35 2C 28 48 4C 29 7C 35 2C 41 0D 0A 44 44 5F 43 5,(HL)|5,A..DD_C
007DC0: 42 5F 78 31 5F 42 36 20 52 45 53 20 36 2C 28 49 B_x1_B6 RES 6,(I
007DD0: 58 2B 78 29 0D 0A 46 44 5F 43 42 5F 78 31 5F 42 X+x)..FD_CB_x1_B
007DE0: 36 20 52 45 53 20 36 2C 28 49 59 2B 78 29 0D 0A 6 RES 6,(IY+x)..
007DF0: 43 42 5F 42 30 20 20 20 20 20 20 20 52 45 53 20 CB_B0 RES
007E00: 20 36 2C 28 49 59 2B 78 29 0D 0A 43 42 5F 46 30 6,(IY+x)..CB_F0
007E10: 20 20 20 20 20 20 20 53 45 54 20 36 2C 42 7C 36 SET 6,B|6
007E20: 2C 43 7C 36 2C 44 7C 36 2C 45 7C 36 2C 48 7C 36 ,C|6,D|6,E|6,H|6
007E30: 2C 4C 7C 36 2C 28 48 4C 29 7C 36 2C 41 0D 0A 44 ,L|6,(HL)|6,A..D
007E40: 44 5F 43 42 5F 78 31 5F 46 45 20 53 45 54 20 37 D_CB_x1_FE SET 7
007E50: 2C 28 49 58 2B 78 29 0D 0A 46 44 5F 43 42 5F 78 ,(IX+x)..FD_CB_x
007E60: 31 5F 46 45 20 53 45 54 20 37 2C 28 49 59 2B 78 1_FE SET 7,(IY+x
007E70: 29 0D 0A 43 42 5F 46 38 20 20 20 20 20 20 20 53 )..CB_F8 S
007E80: 45 54 20 37 2C 42 7C 37 2C 43 7C 37 2C 44 7C 37 ET 7,B|7,C|7,D|7
007E90: 2C 45 7C 37 2C 48 7C 37 2C 4C 7C 37 2C 28 48 4C ,E|7,H|7,L|7,(HL
007EA0: 29 7C 37 2C 41 0D 0A 44 44 5F 43 42 5F 78 31 5F )|7,A..DD_CB_x1_
007EB0: 32 36 20 53 4C 41 20 28 49 58 2B 78 29 0D 0A 46 26 SLA (IX+x)..F
007EC0: 44 5F 43 42 5F 78 31 5F 32 36 20 53 4C 41 20 28 D_CB_x1_26 SLA (
007ED0: 49 59 2B 78 29 0D 0A 43 42 5F 32 30 20 20 20 20 IY+x)..CB_20
007EE0: 20 20 20 53 4C 41 20 42 7C 43 7C 44 7C 45 7C 48 SLA B|C|D|E|H
007EF0: 7C 4C 7C 28 48 4C 29 7C 41 0D 0A 44 44 5F 43 42 |L|(HL)|A..DD_CB
007F00: 5F 78 31 5F 32 45 20 53 52 41 20 28 49 58 2B 78 _x1_2E SRA (IX+x
007F10: 29 0D 0A 46 44 5F 43 42 5F 78 31 5F 32 45 20 53 )..FD_CB_x1_2E S
007F20: 52 41 20 28 49 59 2B 78 29 0D 0A 43 42 5F 32 38 RA (IY+x)..CB_28
007F30: 20 20 20 20 20 20 20 53 52 41 20 42 7C 43 7C 44 SRA B|C|D
007F40: 7C 45 7C 48 7C 4C 7C 28 48 4C 29 7C 41 0D 0A 44 |E|H|L|(HL)|A..D
007F50: 44 5F 43 42 5F 78 31 5F 33 45 20 53 52 4C 20 28 D_CB_x1_3E SRL (
007F60: 49 58 2B 78 29 0D 0A 46 44 5F 43 42 5F 78 31 5F IX+x)..FD_CB_x1_
007F70: 33 45 20 53 52 4C 20 28 49 59 2B 78 29 0D 0A 43 3E SRL (IY+x)..C
007F80: 42 5F 33 38 20 20 20 20 20 20 20 53 52 4C 20 42 B_38 SRL B
007F90: 7C 43 7C 44 7C 45 7C 48 7C 4C 7C 28 48 4C 29 7C |C|D|E|H|L|(HL)|
007FA0: 41 0D 0A 44 44 5F 39 36 5F 78 31 20 20 20 20 53 A..DD_96_x1 S
007FB0: 55 42 20 41 2C 28 49 58 2B 78 29 0D 0A 46 44 5F UB A,(IX+x)..FD_
007FC0: 39 36 5F 78 31 20 20 20 20 53 55 42 20 41 2C 28 96_x1 SUB A,(
007FD0: 49 59 2B 78 29 0D 0A 39 30 5F 20 20 20 20 20 20 IY+x)..90_
007FE0: 20 20 20 53 55 42 20 41 2C 42 7C 41 2C 43 7C 41 SUB A,B|A,C|A
007FF0: 2C 44 7C 41 2C 45 7C 41 2C 48 7C 41 2C 4C 7C 41 ,D|A,E|A,H|A,L|A
008000: 36 2C 42 7C 36 2C 43 7C 36 2C 44 7C 36 2C 45 7C 6,B|6,C|6,D|6,E|
008010: 36 2C 48 7C 36 2C 4C 7C 36 2C 28 48 4C 29 7C 36 6,H|6,L|6,(HL)|6
008020: 2C 41 0D 0A 44 44 5F 43 42 5F 78 31 5F 42 45 20 ,A..DD_CB_x1_BE
008030: 52 45 53 20 37 2C 28 49 58 2B 78 29 0D 0A 46 44 RES 7,(IX+x)..FD
008040: 5F 43 42 5F 78 31 5F 42 45 20 52 45 53 20 37 2C _CB_x1_BE RES 7,
008050: 28 49 59 2B 78 29 0D 0A 43 42 5F 42 38 20 20 20 (IY+x)..CB_B8
008060: 20 20 20 20 52 45 53 20 37 2C 42 7C 37 2C 43 7C RES 7,B|7,C|
008070: 37 2C 44 7C 37 2C 45 7C 37 2C 48 7C 37 2C 4C 7C 7,D|7,E|7,H|7,L|
008080: 37 2C 28 48 4C 29 7C 37 2C 41 0D 0A 43 39 20 20 7,(HL)|7,A..C9
008090: 20 20 20 20 20 20 20 20 52 45 54 0D 0A 44 38 20 RET..D8
0080A0: 20 20 20 20 20 20 20 20 20 52 45 54 20 43 0D 0A RET C..
0080B0: 46 38 20 20 20 20 20 20 20 20 20 20 52 45 54 20 F8 RET
0080C0: 4D 0D 0A 44 30 20 20 20 20 20 20 20 20 20 20 52 M..D0 R
0080D0: 45 54 20 4E 43 0D 0A 43 30 20 20 20 20 20 20 20 ET NC..C0
0080E0: 20 20 20 52 45 54 20 4E 5A 0D 0A 46 30 20 20 20 RET NZ..F0
0080F0: 20 20 20 20 20 20 20 52 45 54 20 50 0D 0A 45 38 RET P..E8
008100: 20 20 20 20 20 20 20 20 20 20 52 45 54 20 50 45 RET PE
008110: 0D 0A 45 30 20 20 20 20 20 20 20 20 20 20 52 45 ..E0 RE
008120: 54 20 50 4F 0D 0A 43 38 20 20 20 20 20 20 20 20 T PO..C8
008130: 20 20 52 45 54 20 5A 0D 0A 45 44 5F 34 44 20 20 RET Z..ED_4D
008140: 20 20 20 20 20 52 45 54 49 0D 0A 45 44 5F 34 35 RETI..ED_45
008150: 20 20 20 20 20 20 20 52 45 54 4E 0D 0A 44 44 5F RETN..DD_
008160: 43 42 5F 78 31 5F 31 36 20 52 4C 20 28 49 58 2B CB_x1_16 RL (IX+
008170: 78 29 0D 0A 46 44 5F 43 42 5F 78 31 5F 31 36 20 x)..FD_CB_x1_16
008180: 52 4C 20 28 49 59 2B 78 29 0D 0A 43 42 5F 31 30 RL (IY+x)..CB_10
008190: 20 20 20 20 20 20 20 52 4C 20 42 7C 43 7C 44 7C RL B|C|D|
0081A0: 45 7C 48 7C 4C 7C 28 48 4C 29 7C 41 0D 0A 31 37 E|H|L|(HL)|A..17
0081B0: 20 20 20 20 20 20 20 20 20 20 52 4C 41 0D 0A 44 RLA..D
0081C0: 44 5F 43 42 5F 78 31 5F 30 36 20 52 4C 43 20 28 D_CB_x1_06 RLC (
0081D0: 49 58 2B 78 29 0D 0A 46 44 5F 43 42 5F 78 31 5F IX+x)..FD_CB_x1_
0081E0: 30 36 20 52 4C 43 20 28 49 59 2B 78 29 0D 0A 43 06 RLC (IY+x)..C
0081F0: 42 5F 30 30 20 20 20 20 20 20 20 52 4C 43 20 42 B_00 RLC B
008200: 2C 28 48 4C 29 7C 41 2C 41 0D 0A 44 36 5F 78 31 ,(HL)|A,A..D6_x1
008210: 20 20 20 20 20 20 20 53 55 42 20 78 0D 0A 44 44 SUB x..DD
008220: 5F 41 45 5F 78 31 20 20 20 20 58 4F 52 20 28 49 _AE_x1 XOR (I
008230: 58 2B 78 29 0D 0A 46 44 5F 41 45 5F 78 31 20 20 X+x)..FD_AE_x1
008240: 20 20 58 4F 52 20 28 49 59 2B 78 29 0D 0A 41 38 XOR (IY+x)..A8
008250: 20 20 20 20 20 20 20 20 20 20 58 4F 52 20 42 7C XOR B|
008260: 43 7C 44 7C 45 7C 48 7C 4C 7C 28 48 4C 29 7C 41 C|D|E|H|L|(HL)|A
008270: 0D 0A 45 45 5F 78 31 20 20 20 20 20 20 20 58 4F ..EE_x1 XO
008280: 52 20 78 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A R x.............
008290: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0082A0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0082B0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0082C0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0082D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0082E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0082F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
008300: 5F 78 31 5F 32 45 20 53 52 41 20 28 49 58 2B 78 _x1_2E SRA (IX+x
008310: 29 0D 0A 46 44 5F 43 42 5F 78 31 5F 32 45 20 53 )..FD_CB_x1_2E S
008320: 52 41 20 28 49 59 2B 78 29 0D 0A 43 42 5F 32 38 RA (IY+x)..CB_28
008330: 20 20 20 20 20 20 20 53 52 41 20 42 7C 43 7C 44 SRA B|C|D
008340: 7C 45 7C 48 7C 4C 7C 28 48 4C 29 7C 41 0D 0A 44 |E|H|L|(HL)|A..D
008350: 44 5F 43 42 5F 78 31 5F 33 45 20 53 52 4C 20 28 D_CB_x1_3E SRL (
008360: 49 58 2B 78 29 0D 0A 46 44 5F 43 42 5F 78 31 5F IX+x)..FD_CB_x1_
008370: 33 45 20 53 52 4C 20 28 49 59 2B 78 29 0D 0A 43 3E SRL (IY+x)..C
008380: 42 5F 33 38 20 20 20 20 20 20 20 53 52 4C 20 42 B_38 SRL B
008390: 7C 43 7C 44 7C 45 7C 48 7C 4C 7C 28 48 4C 29 7C |C|D|E|H|L|(HL)|
0083A0: 41 0D 0A 44 44 5F 39 36 5F 78 31 20 20 20 20 53 A..DD_96_x1 S
0083B0: 55 42 20 41 2C 28 49 58 2B 78 29 0D 0A 46 44 5F UB A,(IX+x)..FD_
0083C0: 39 36 5F 78 31 20 20 20 20 53 55 42 20 41 2C 28 96_x1 SUB A,(
0083D0: 49 59 2B 78 29 0D 0A 39 30 5F 20 20 20 20 20 20 IY+x)..90_
0083E0: 20 20 20 53 55 42 20 41 2C 42 7C 41 2C 43 7C 41 SUB A,B|A,C|A
0083F0: 2C 44 7C 41 2C 45 7C 41 2C 48 7C 41 2C 4C 7C 41 ,D|A,E|A,H|A,L|A
008400: 7C 43 7C 44 7C 45 7C 48 7C 4C 7C 28 48 4C 29 7C |C|D|E|H|L|(HL)|
008410: 41 0D 0A 30 37 20 20 20 20 20 20 20 20 20 20 52 A..07 R
008420: 4C 43 41 0D 0A 45 44 5F 36 46 20 20 20 20 20 20 LCA..ED_6F
008430: 20 52 4C 44 0D 0A 44 44 5F 43 42 5F 78 31 5F 31 RLD..DD_CB_x1_1
008440: 45 20 52 52 20 28 49 58 2B 78 29 0D 0A 46 44 5F E RR (IX+x)..FD_
008450: 43 42 5F 78 31 5F 31 45 20 52 52 20 28 49 59 2B CB_x1_1E RR (IY+
008460: 78 29 0D 0A 43 42 5F 31 38 20 20 20 20 20 20 20 x)..CB_18
008470: 52 52 20 42 7C 43 7C 44 7C 45 7C 48 7C 4C 7C 28 RR B|C|D|E|H|L|(
008480: 48 4C 29 7C 41 0D 0A 44 44 5F 43 42 5F 78 31 5F HL)|A..DD_CB_x1_
008490: 30 45 20 52 52 43 20 28 49 58 2B 78 29 0D 0A 46 0E RRC (IX+x)..F
0084A0: 44 5F 43 42 5F 78 31 5F 30 45 20 52 52 43 20 28 D_CB_x1_0E RRC (
0084B0: 49 59 2B 78 29 0D 0A 43 42 5F 30 38 20 20 20 20 IY+x)..CB_08
0084C0: 20 20 20 52 52 43 20 42 7C 43 7C 44 7C 45 7C 48 RRC B|C|D|E|H
0084D0: 7C 4C 7C 28 48 4C 29 7C 41 0D 0A 30 46 20 20 20 |L|(HL)|A..0F
0084E0: 20 20 20 20 20 20 20 52 52 43 41 0D 0A 45 44 5F RRCA..ED_
0084F0: 36 37 20 20 20 20 20 20 20 52 52 44 0D 0A 31 46 67 RRD..1F
008500: 20 20 20 20 20 20 20 20 20 20 52 52 41 0D 0A 43 RRA..C
008510: 37 20 20 20 20 20 20 20 20 20 20 52 53 54 20 30 7 RST 0
008520: 0D 0A 43 37 20 20 20 20 20 20 20 20 20 20 52 53 ..C7 RS
008530: 54 20 30 30 48 0D 0A 43 46 20 20 20 20 20 20 20 T 00H..CF
008540: 20 20 20 52 53 54 20 30 38 48 0D 0A 43 37 20 20 RST 08H..C7
008550: 20 20 20 20 20 20 20 20 52 53 54 20 30 48 0D 0A RST 0H..
008560: 44 37 20 20 20 20 20 20 20 20 20 20 52 53 54 20 D7 RST
008570: 31 30 48 0D 0A 44 37 20 20 20 20 20 20 20 20 20 10H..D7
008580: 20 52 53 54 20 31 36 0D 0A 44 46 20 20 20 20 20 RST 16..DF
008590: 20 20 20 20 20 52 53 54 20 31 38 48 0D 0A 45 37 RST 18H..E7
0085A0: 20 20 20 20 20 20 20 20 20 20 52 53 54 20 32 30 RST 20
0085B0: 48 0D 0A 44 46 20 20 20 20 20 20 20 20 20 20 52 H..DF R
0085C0: 53 54 20 32 34 0D 0A 45 46 20 20 20 20 20 20 20 ST 24..EF
0085D0: 20 20 20 52 53 54 20 32 38 48 0D 0A 46 37 20 20 RST 28H..F7
0085E0: 20 20 20 20 20 20 20 20 52 53 54 20 33 30 48 0D RST 30H.
0085F0: 0A 45 37 20 20 20 20 20 20 20 20 20 20 52 53 54 .E7 RST
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: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0087A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0087B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0087C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0087D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0087E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0087F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0088A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0088B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0088C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0088D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0088E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0088F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008900: 58 20 20 20 20 44 0D 0A 20 20 20 20 20 20 20 20 X D..
008910: 52 45 54 0D 0A 3B 0D 0A 3B 49 4E 43 4C 55 53 49 RET..;..;INCLUSI
008920: 56 45 20 22 4F 52 22 20 48 4C 20 41 4E 44 20 44 VE "OR" HL AND D
008930: 45 20 49 4E 54 4F 20 48 4C 0D 0A 43 43 4F 52 3A E INTO HL..CCOR:
008940: 3A 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 :.. MOV
008950: 20 20 20 41 2C 4C 0D 0A 20 20 20 20 20 20 20 20 A,L..
008960: 4F 52 41 20 20 20 20 20 45 0D 0A 20 20 20 20 20 ORA E..
008970: 20 20 20 4D 4F 56 20 20 20 20 20 4C 2C 41 0D 0A MOV L,A..
008980: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
008990: 41 2C 48 0D 0A 20 20 20 20 20 20 20 20 4F 52 41 A,H.. ORA
0089A0: 20 20 20 20 20 44 0D 0A 20 20 20 20 20 20 20 20 D..
0089B0: 4D 4F 56 20 20 20 20 20 48 2C 41 0D 0A 20 20 20 MOV H,A..
0089C0: 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 45 58 RET..;..;EX
0089D0: 43 4C 55 53 49 56 45 20 22 4F 52 22 20 48 4C 20 CLUSIVE "OR" HL
0089E0: 41 4E 44 20 44 45 20 49 4E 54 4F 20 48 4C 0D 0A AND DE INTO HL..
0089F0: 43 43 58 4F 52 3A 3A 0D 0A 20 20 20 20 20 20 20 CCXOR::..
008A00: 20 4D 4F 56 20 20 20 20 20 41 2C 4C 0D 0A 20 20 MOV A,L..
008A10: 20 20 20 20 20 20 58 52 41 20 20 20 20 20 45 0D XRA E.
008A20: 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 . MOV
008A30: 20 4C 2C 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F L,A.. MO
008A40: 56 20 20 20 20 20 41 2C 48 0D 0A 20 20 20 20 20 V A,H..
008A50: 20 20 20 58 52 41 20 20 20 20 20 44 0D 0A 20 20 XRA D..
008A60: 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 48 2C MOV H,
008A70: 41 0D 0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A A.. RET..
008A80: 3B 0D 0A 3B 22 41 4E 44 22 20 48 4C 20 41 4E 44 ;..;"AND" HL AND
008A90: 20 44 45 20 49 4E 54 4F 20 48 4C 0D 0A 43 43 41 DE INTO HL..CCA
008AA0: 4E 44 3A 3A 0D 0A 20 20 20 20 20 20 20 20 4D 4F ND::.. MO
008AB0: 56 20 20 20 20 20 41 2C 4C 0D 0A 20 20 20 20 20 V A,L..
008AC0: 20 20 20 41 4E 41 20 20 20 20 20 45 0D 0A 20 20 ANA E..
008AD0: 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 4C 2C MOV L,
008AE0: 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 A.. MOV
008AF0: 20 20 20 41 2C 48 0D 0A 20 20 20 20 20 20 20 20 A,H..
008B00: 3B 0D 0A 3B 2D 2D 2D 2D 2D 20 43 41 4C 4C 3A 20 ;..;----- CALL:
008B10: 53 6D 61 6C 6C 2D 43 20 61 72 69 74 68 6D 65 74 Small-C arithmet
008B20: 69 63 20 61 6E 64 20 6C 6F 67 69 63 61 6C 20 6C ic and logical l
008B30: 69 62 72 61 72 79 0D 0A 3B 0D 0A 43 43 44 43 41 ibrary..;..CCDCA
008B40: 4C 3A 3A 0D 0A 20 20 20 20 20 20 20 20 50 43 48 L::.. PCH
008B50: 4C 0D 0A 3B 0D 0A 43 43 44 44 47 43 3A 3A 0D 0A L..;..CCDDGC::..
008B60: 20 20 20 20 20 20 20 20 44 41 44 20 20 20 20 20 DAD
008B70: 44 0D 0A 20 20 20 20 20 20 20 20 4A 4D 50 20 20 D.. JMP
008B80: 20 20 20 43 43 47 43 48 41 52 0D 0A 3B 0D 0A 43 CCGCHAR..;..C
008B90: 43 44 53 47 43 3A 3A 0D 0A 20 20 20 20 20 20 20 CDSGC::..
008BA0: 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 20 INX H..
008BB0: 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 INX H..
008BC0: 20 20 20 20 20 20 20 44 41 44 20 20 20 20 20 53 DAD S
008BD0: 50 0D 0A 3B 0D 0A 3B 46 45 54 43 48 20 41 20 53 P..;..;FETCH A S
008BE0: 49 4E 47 4C 45 20 42 59 54 45 20 46 52 4F 4D 20 INGLE BYTE FROM
008BF0: 54 48 45 20 41 44 44 52 45 53 53 20 49 4E 20 48 THE ADDRESS IN H
008C00: 4C 20 41 4E 44 20 53 49 47 4E 20 49 4E 54 4F 20 L AND SIGN INTO
008C10: 48 4C 0D 0A 43 43 47 43 48 41 52 3A 3A 0D 0A 20 HL..CCGCHAR::..
008C20: 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 MOV A
008C30: 2C 4D 0D 0A 3B 0D 0A 3B 50 55 54 20 54 48 45 20 ,M..;..;PUT THE
008C40: 41 43 43 55 4D 20 49 4E 54 4F 20 48 4C 20 41 4E ACCUM INTO HL AN
008C50: 44 20 53 49 47 4E 20 45 58 54 45 4E 44 20 54 48 D SIGN EXTEND TH
008C60: 52 4F 55 47 48 20 48 2E 0D 0A 43 43 41 52 47 43 ROUGH H...CCARGC
008C70: 3A 3A 0D 0A 43 43 53 58 54 3A 3A 0D 0A 20 20 20 ::..CCSXT::..
008C80: 20 20 20 20 20 4D 4F 56 20 20 20 20 20 4C 2C 41 MOV L,A
008C90: 0D 0A 20 20 20 20 20 20 20 20 52 4C 43 0D 0A 20 .. RLC..
008CA0: 20 20 20 20 20 20 20 53 42 42 20 20 20 20 20 41 SBB A
008CB0: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
008CC0: 20 20 48 2C 41 0D 0A 20 20 20 20 20 20 20 20 52 H,A.. R
008CD0: 45 54 0D 0A 3B 0D 0A 43 43 44 44 47 49 3A 3A 0D ET..;..CCDDGI::.
008CE0: 0A 20 20 20 20 20 20 20 20 44 41 44 20 20 20 20 . DAD
008CF0: 20 44 0D 0A 20 20 20 20 20 20 20 20 4A 4D 50 20 D.. JMP
008D00: 41 4E 41 20 20 20 20 20 44 0D 0A 20 20 20 20 20 ANA D..
008D10: 20 20 20 4D 4F 56 20 20 20 20 20 48 2C 41 0D 0A MOV H,A..
008D20: 20 20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A RET..;..
008D30: 3B 49 4E 20 41 4C 4C 20 54 48 45 20 46 4F 4C 4C ;IN ALL THE FOLL
008D40: 4F 57 49 4E 47 20 43 4F 4D 50 41 52 45 20 52 4F OWING COMPARE RO
008D50: 55 54 49 4E 45 53 2C 20 48 4C 20 49 53 20 53 45 UTINES, HL IS SE
008D60: 54 20 54 4F 20 31 20 49 46 20 54 48 45 0D 0A 3B T TO 1 IF THE..;
008D70: 20 20 43 4F 4E 44 49 54 49 4F 4E 20 49 53 20 54 CONDITION IS T
008D80: 52 55 45 2C 20 4F 54 48 45 52 57 49 53 45 20 49 RUE, OTHERWISE I
008D90: 54 20 49 53 20 53 45 54 20 54 4F 20 30 20 28 5A T IS SET TO 0 (Z
008DA0: 45 52 4F 29 2E 0D 0A 3B 0D 0A 3B 54 45 53 54 20 ERO)...;..;TEST
008DB0: 49 46 20 48 4C 20 3D 20 44 45 0D 0A 3B 0D 0A 43 IF HL = DE..;..C
008DC0: 43 45 51 3A 3A 0D 0A 20 20 20 20 20 20 20 20 43 CEQ::.. C
008DD0: 41 4C 4C 20 20 20 20 43 43 43 4D 50 0D 0A 20 20 ALL CCCMP..
008DE0: 20 20 20 20 20 20 52 5A 0D 0A 20 20 20 20 20 20 RZ..
008DF0: 20 20 44 43 58 20 20 20 20 20 48 0D 0A 20 20 20 DCX H..
008E00: 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 54 45 RET..;..;TE
008E10: 53 54 20 49 46 20 44 45 20 21 3D 20 48 4C 0D 0A ST IF DE != HL..
008E20: 43 43 4E 45 3A 3A 0D 0A 20 20 20 20 20 20 20 20 CCNE::..
008E30: 43 41 4C 4C 20 20 20 20 43 43 43 4D 50 0D 0A 20 CALL CCCMP..
008E40: 20 20 20 20 20 20 20 52 4E 5A 0D 0A 20 20 20 20 RNZ..
008E50: 20 20 20 20 44 43 58 20 20 20 20 20 48 0D 0A 20 DCX H..
008E60: 20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B RET..;..;
008E70: 54 45 53 54 20 49 46 20 44 45 20 3E 20 48 4C 20 TEST IF DE > HL
008E80: 28 53 49 47 4E 45 44 29 0D 0A 43 43 47 54 3A 3A (SIGNED)..CCGT::
008E90: 0D 0A 20 20 20 20 20 20 20 20 58 43 48 47 0D 0A .. XCHG..
008EA0: 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20 20 20 CALL
008EB0: 43 43 43 4D 50 0D 0A 20 20 20 20 20 20 20 20 52 CCCMP.. R
008EC0: 43 0D 0A 20 20 20 20 20 20 20 20 44 43 58 20 20 C.. DCX
008ED0: 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20 52 45 H.. RE
008EE0: 54 0D 0A 3B 0D 0A 3B 54 45 53 54 20 49 46 20 44 T..;..;TEST IF D
008EF0: 45 20 3C 3D 20 48 4C 20 28 53 49 47 4E 45 44 29 E <= HL (SIGNED)
008F00: 20 20 20 20 43 43 47 49 4E 54 0D 0A 3B 0D 0A 43 CCGINT..;..C
008F10: 43 44 53 47 49 3A 3A 0D 0A 20 20 20 20 20 20 20 CDSGI::..
008F20: 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 20 INX H..
008F30: 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 INX H..
008F40: 20 20 20 20 20 20 20 44 41 44 20 20 20 20 20 53 DAD S
008F50: 50 0D 0A 3B 0D 0A 3B 46 45 54 43 48 20 41 20 46 P..;..;FETCH A F
008F60: 55 4C 4C 20 31 36 2D 42 49 54 20 49 4E 54 45 47 ULL 16-BIT INTEG
008F70: 45 52 20 46 52 4F 4D 20 54 48 45 20 41 44 44 52 ER FROM THE ADDR
008F80: 45 53 53 20 49 4E 20 48 4C 20 49 4E 54 4F 20 48 ESS IN HL INTO H
008F90: 4C 0D 0A 43 43 47 49 4E 54 3A 3A 0D 0A 20 20 20 L..CCGINT::..
008FA0: 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 4D MOV A,M
008FB0: 0D 0A 20 20 20 20 20 20 20 20 49 4E 58 20 20 20 .. INX
008FC0: 20 20 48 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 H.. MOV
008FD0: 20 20 20 20 20 48 2C 4D 0D 0A 20 20 20 20 20 20 H,M..
008FE0: 20 20 4D 4F 56 20 20 20 20 20 4C 2C 41 0D 0A 20 MOV L,A..
008FF0: 20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 43 RET..;..C
009000: 43 44 45 43 43 3A 3A 0D 0A 20 20 20 20 20 20 20 CDECC::..
009010: 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 20 INX H..
009020: 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 INX H..
009030: 20 20 20 20 20 20 20 44 41 44 20 20 20 20 20 53 DAD S
009040: 50 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 P.. MOV
009050: 20 20 20 44 2C 48 0D 0A 20 20 20 20 20 20 20 20 D,H..
009060: 4D 4F 56 20 20 20 20 20 45 2C 4C 0D 0A 20 20 20 MOV E,L..
009070: 20 20 20 20 20 43 41 4C 4C 20 20 20 20 43 43 47 CALL CCG
009080: 43 48 41 52 0D 0A 20 20 20 20 20 20 20 20 44 43 CHAR.. DC
009090: 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 X H..
0090A0: 20 4D 4F 56 20 20 20 20 20 41 2C 4C 0D 0A 20 20 MOV A,L..
0090B0: 20 20 20 20 20 20 53 54 41 58 20 20 20 20 44 0D STAX D.
0090C0: 0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D . RET..;.
0090D0: 0A 43 43 49 4E 43 43 3A 3A 0D 0A 20 20 20 20 20 .CCINCC::..
0090E0: 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 INX H..
0090F0: 20 20 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D INX H.
009100: 0D 0A 43 43 4C 45 3A 3A 0D 0A 20 20 20 20 20 20 ..CCLE::..
009110: 20 20 43 41 4C 4C 20 20 20 20 43 43 43 4D 50 0D CALL CCCMP.
009120: 0A 20 20 20 20 20 20 20 20 52 5A 0D 0A 20 20 20 . RZ..
009130: 20 20 20 20 20 52 43 0D 0A 20 20 20 20 20 20 20 RC..
009140: 20 44 43 58 20 20 20 20 20 48 0D 0A 20 20 20 20 DCX H..
009150: 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 54 45 53 RET..;..;TES
009160: 54 20 49 46 20 44 45 20 3E 3D 20 48 4C 20 28 53 T IF DE >= HL (S
009170: 49 47 4E 45 44 29 0D 0A 43 43 47 45 3A 3A 0D 0A IGNED)..CCGE::..
009180: 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20 20 20 CALL
009190: 43 43 43 4D 50 0D 0A 20 20 20 20 20 20 20 20 52 CCCMP.. R
0091A0: 4E 43 0D 0A 20 20 20 20 20 20 20 20 44 43 58 20 NC.. DCX
0091B0: 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20 52 H.. R
0091C0: 45 54 0D 0A 3B 0D 0A 3B 54 45 53 54 20 49 46 20 ET..;..;TEST IF
0091D0: 44 45 20 3C 20 48 4C 20 28 53 49 47 4E 45 44 29 DE < HL (SIGNED)
0091E0: 0D 0A 43 43 4C 54 3A 3A 0D 0A 20 20 20 20 20 20 ..CCLT::..
0091F0: 20 20 43 41 4C 4C 20 20 20 20 43 43 43 4D 50 0D CALL CCCMP.
009200: 0A 20 20 20 20 20 20 20 20 52 43 0D 0A 20 20 20 . RC..
009210: 20 20 20 20 20 44 43 58 20 20 20 20 20 48 0D 0A DCX H..
009220: 20 20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A RET..;..
009230: 3B 43 4F 4D 4D 4F 4E 20 52 4F 55 54 49 4E 45 20 ;COMMON ROUTINE
009240: 54 4F 20 50 45 52 46 4F 52 4D 20 41 20 53 49 47 TO PERFORM A SIG
009250: 4E 45 44 20 43 4F 4D 50 41 52 45 20 4F 46 20 44 NED COMPARE OF D
009260: 45 20 41 4E 44 20 48 4C 0D 0A 3B 20 54 48 49 53 E AND HL..; THIS
009270: 20 52 4F 55 54 49 4E 45 20 50 45 52 46 4F 52 4D ROUTINE PERFORM
009280: 53 20 44 45 20 2D 20 48 4C 20 41 4E 44 20 53 45 S DE - HL AND SE
009290: 54 53 20 54 48 45 20 43 4F 4E 44 49 54 49 4F 4E TS THE CONDITION
0092A0: 53 3A 0D 0A 3B 20 43 41 52 52 59 20 52 45 46 4C S:..; CARRY REFL
0092B0: 45 43 54 53 20 53 49 47 4E 20 4F 46 20 44 49 46 ECTS SIGN OF DIF
0092C0: 46 45 52 45 4E 43 45 20 28 53 45 54 20 4D 45 41 FERENCE (SET MEA
0092D0: 4E 53 20 44 45 20 3C 20 48 4C 29 0D 0A 3B 20 5A NS DE < HL)..; Z
0092E0: 45 52 4F 2F 4E 4F 4E 2D 5A 45 52 4F 20 53 45 54 ERO/NON-ZERO SET
0092F0: 20 41 43 43 4F 52 44 49 4E 47 20 54 4F 20 45 51 ACCORDING TO EQ
009300: 0A 20 20 20 20 20 20 20 20 44 41 44 20 20 20 20 . DAD
009310: 20 53 50 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 SP.. MOV
009320: 20 20 20 20 20 44 2C 48 0D 0A 20 20 20 20 20 20 D,H..
009330: 20 20 4D 4F 56 20 20 20 20 20 45 2C 4C 0D 0A 20 MOV E,L..
009340: 20 20 20 20 20 20 20 43 41 4C 4C 20 20 20 20 43 CALL C
009350: 43 47 43 48 41 52 0D 0A 20 20 20 20 20 20 20 20 CGCHAR..
009360: 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 INX H..
009370: 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 4C 0D 0A MOV A,L..
009380: 20 20 20 20 20 20 20 20 53 54 41 58 20 20 20 20 STAX
009390: 44 0D 0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A D.. RET..
0093A0: 3B 0D 0A 43 44 50 44 50 43 3A 3A 0D 0A 20 20 20 ;..CDPDPC::..
0093B0: 20 20 20 20 20 44 41 44 20 20 20 20 20 44 0D 0A DAD D..
0093C0: 43 43 50 44 50 43 3A 3A 0D 0A 20 20 20 20 20 20 CCPDPC::..
0093D0: 20 20 50 4F 50 20 20 20 20 20 42 20 20 20 20 20 POP B
0093E0: 20 20 3B 52 45 54 20 41 44 44 52 0D 0A 20 20 20 ;RET ADDR..
0093F0: 20 20 20 20 20 50 4F 50 20 20 20 20 20 44 0D 0A POP D..
009400: 20 20 20 20 20 20 20 20 50 55 53 48 20 20 20 20 PUSH
009410: 42 0D 0A 3B 0D 0A 3B 53 54 4F 52 45 20 41 20 53 B..;..;STORE A S
009420: 49 4E 47 4C 45 20 42 59 54 45 20 46 52 4F 4D 20 INGLE BYTE FROM
009430: 48 4C 20 41 54 20 54 48 45 20 41 44 44 52 45 53 HL AT THE ADDRES
009440: 53 20 49 4E 20 44 45 0D 0A 43 43 50 43 48 41 52 S IN DE..CCPCHAR
009450: 3A 3A 0D 0A 50 43 48 41 52 3A 20 20 4D 4F 56 20 ::..PCHAR: MOV
009460: 20 20 20 20 41 2C 4C 0D 0A 20 20 20 20 20 20 20 A,L..
009470: 20 53 54 41 58 20 20 20 20 44 0D 0A 20 20 20 20 STAX D..
009480: 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 43 43 44 45 RET..;..CCDE
009490: 43 49 3A 3A 0D 0A 20 20 20 20 20 20 20 20 49 4E CI::.. IN
0094A0: 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 X H..
0094B0: 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 20 INX H..
0094C0: 20 20 20 20 44 41 44 20 20 20 20 20 53 50 0D 0A DAD SP..
0094D0: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
0094E0: 44 2C 48 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 D,H.. MOV
0094F0: 20 20 20 20 20 45 2C 4C 0D 0A 20 20 20 20 20 20 E,L..
009500: 55 41 4C 49 54 59 2E 0D 0A 43 43 43 4D 50 3A 3A UALITY...CCCMP::
009510: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
009520: 20 20 41 2C 48 20 20 20 20 20 3B 49 4E 56 45 52 A,H ;INVER
009530: 54 20 53 49 47 4E 20 4F 46 20 48 4C 0D 0A 20 20 T SIGN OF HL..
009540: 20 20 20 20 20 20 58 52 49 20 20 20 20 20 38 30 XRI 80
009550: 48 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 H.. MOV
009560: 20 20 20 48 2C 41 0D 0A 20 20 20 20 20 20 20 20 H,A..
009570: 4D 4F 56 20 20 20 20 20 41 2C 44 20 20 20 20 20 MOV A,D
009580: 3B 49 4E 56 45 52 54 20 53 49 47 4E 20 4F 46 20 ;INVERT SIGN OF
009590: 44 45 0D 0A 20 20 20 20 20 20 20 20 58 52 49 20 DE.. XRI
0095A0: 20 20 20 20 38 30 48 0D 0A 20 20 20 20 20 20 20 80H..
0095B0: 20 43 4D 50 20 20 20 20 20 48 20 20 20 20 20 20 CMP H
0095C0: 20 3B 43 4F 4D 50 41 52 45 20 4D 53 42 53 0D 0A ;COMPARE MSBS..
0095D0: 20 20 20 20 20 20 20 20 4A 4E 5A 20 20 20 20 20 JNZ
0095E0: 43 43 43 4D 50 31 20 20 3B 44 4F 4E 45 20 49 46 CCCMP1 ;DONE IF
0095F0: 20 4E 45 51 0D 0A 20 20 20 20 20 20 20 20 4D 4F NEQ.. MO
009600: 56 20 20 20 20 20 41 2C 45 20 20 20 20 20 3B 43 V A,E ;C
009610: 4F 4D 50 41 52 45 20 4C 53 42 53 0D 0A 20 20 20 OMPARE LSBS..
009620: 20 20 20 20 20 43 4D 50 20 20 20 20 20 4C 0D 0A CMP L..
009630: 43 43 43 4D 50 31 3A 20 4C 58 49 20 48 2C 31 20 CCCMP1: LXI H,1
009640: 20 20 20 20 20 20 20 20 3B 50 52 45 53 45 54 20 ;PRESET
009650: 54 52 55 45 20 43 4F 4E 44 0D 0A 20 20 20 20 20 TRUE COND..
009660: 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 54 45 53 54 RET..;..;TEST
009670: 20 49 46 20 44 45 20 3E 3D 20 48 4C 20 28 55 4E IF DE >= HL (UN
009680: 53 49 47 4E 45 44 29 0D 0A 43 43 55 47 45 3A 3A SIGNED)..CCUGE::
009690: 0D 0A 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20 .. CALL
0096A0: 20 20 43 43 55 43 4D 50 0D 0A 20 20 20 20 20 20 CCUCMP..
0096B0: 20 20 52 4E 43 0D 0A 20 20 20 20 20 20 20 20 44 RNC.. D
0096C0: 43 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 20 CX H..
0096D0: 20 20 52 45 54 0D 0A 3B 0D 0A 3B 54 45 53 54 20 RET..;..;TEST
0096E0: 49 46 20 44 45 20 3C 20 48 4C 20 28 55 4E 53 49 IF DE < HL (UNSI
0096F0: 47 4E 45 44 29 0D 0A 43 43 55 4C 54 3A 3A 0D 0A GNED)..CCULT::..
009700: 20 20 43 41 4C 4C 20 20 20 20 43 43 47 49 4E 54 CALL CCGINT
009710: 0D 0A 20 20 20 20 20 20 20 20 44 43 58 20 20 20 .. DCX
009720: 20 20 48 0D 0A 20 20 20 20 20 20 20 20 4A 4D 50 H.. JMP
009730: 20 20 20 20 20 43 43 50 49 4E 54 0D 0A 3B 0D 0A CCPINT..;..
009740: 43 43 49 4E 43 49 3A 3A 0D 0A 20 20 20 20 20 20 CCINCI::..
009750: 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 INX H..
009760: 20 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A INX H..
009770: 20 20 20 20 20 20 20 20 44 41 44 20 20 20 20 20 DAD
009780: 53 50 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 SP.. MOV
009790: 20 20 20 20 44 2C 48 0D 0A 20 20 20 20 20 20 20 D,H..
0097A0: 20 4D 4F 56 20 20 20 20 20 45 2C 4C 0D 0A 20 20 MOV E,L..
0097B0: 20 20 20 20 20 20 43 41 4C 4C 20 20 20 20 43 43 CALL CC
0097C0: 47 49 4E 54 0D 0A 20 20 20 20 20 20 20 20 49 4E GINT.. IN
0097D0: 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 X H..
0097E0: 20 4A 4D 50 20 20 20 20 20 43 43 50 49 4E 54 0D JMP CCPINT.
0097F0: 0A 3B 0D 0A 43 44 50 44 50 49 3A 3A 0D 0A 20 20 .;..CDPDPI::..
009800: 20 20 20 20 20 20 44 41 44 20 20 20 20 20 44 0D DAD D.
009810: 0A 43 43 50 44 50 49 3A 3A 0D 0A 20 20 20 20 20 .CCPDPI::..
009820: 20 20 20 50 4F 50 20 20 20 20 20 42 20 20 20 20 POP B
009830: 20 20 20 3B 52 45 54 20 41 44 44 52 0D 0A 20 20 ;RET ADDR..
009840: 20 20 20 20 20 20 50 4F 50 20 20 20 20 20 44 0D POP D.
009850: 0A 20 20 20 20 20 20 20 20 50 55 53 48 20 20 20 . PUSH
009860: 20 42 0D 0A 3B 0D 0A 3B 53 54 4F 52 45 20 41 20 B..;..;STORE A
009870: 31 36 2D 42 49 54 20 49 4E 54 45 47 45 52 20 49 16-BIT INTEGER I
009880: 4E 20 48 4C 20 41 54 20 54 48 45 20 41 44 44 52 N HL AT THE ADDR
009890: 45 53 53 20 49 4E 20 44 45 0D 0A 43 43 50 49 4E ESS IN DE..CCPIN
0098A0: 54 3A 3A 0D 0A 50 49 4E 54 3A 20 20 20 4D 4F 56 T::..PINT: MOV
0098B0: 20 20 20 20 20 41 2C 4C 0D 0A 20 20 20 20 20 20 A,L..
0098C0: 20 20 53 54 41 58 20 20 20 20 44 0D 0A 20 20 20 STAX D..
0098D0: 20 20 20 20 20 49 4E 58 20 20 20 20 20 44 0D 0A INX D..
0098E0: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
0098F0: 41 2C 48 0D 0A 20 20 20 20 20 20 20 20 53 54 41 A,H.. STA
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 20 20 20 20 20 20 20 43 41 4C 4C 20 20 20 20 CALL
009A10: 43 43 55 43 4D 50 0D 0A 20 20 20 20 20 20 20 20 CCUCMP..
009A20: 52 43 0D 0A 20 20 20 20 20 20 20 20 44 43 58 20 RC.. DCX
009A30: 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20 52 H.. R
009A40: 45 54 0D 0A 3B 0D 0A 3B 54 45 53 54 20 49 46 20 ET..;..;TEST IF
009A50: 44 45 20 3E 20 48 4C 20 28 55 4E 53 49 47 4E 45 DE > HL (UNSIGNE
009A60: 44 29 0D 0A 43 43 55 47 54 3A 3A 0D 0A 20 20 20 D)..CCUGT::..
009A70: 20 20 20 20 20 58 43 48 47 0D 0A 20 20 20 20 20 XCHG..
009A80: 20 20 20 43 41 4C 4C 20 20 20 20 43 43 55 43 4D CALL CCUCM
009A90: 50 0D 0A 20 20 20 20 20 20 20 20 52 43 0D 0A 20 P.. RC..
009AA0: 20 20 20 20 20 20 20 44 43 58 20 20 20 20 20 48 DCX H
009AB0: 0D 0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A 3B .. RET..;
009AC0: 0D 0A 3B 54 45 53 54 20 49 46 20 44 45 20 3C 3D ..;TEST IF DE <=
009AD0: 20 48 4C 20 28 55 4E 53 49 47 4E 45 44 29 0D 0A HL (UNSIGNED)..
009AE0: 43 43 55 4C 45 3A 3A 0D 0A 20 20 20 20 20 20 20 CCULE::..
009AF0: 20 43 41 4C 4C 20 20 20 20 43 43 55 43 4D 50 0D CALL CCUCMP.
009B00: 0A 20 20 20 20 20 20 20 20 52 5A 0D 0A 20 20 20 . RZ..
009B10: 20 20 20 20 20 52 43 0D 0A 20 20 20 20 20 20 20 RC..
009B20: 20 44 43 58 20 20 20 20 20 48 0D 0A 20 20 20 20 DCX H..
009B30: 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 43 4F 4D RET..;..;COM
009B40: 4D 4F 4E 20 52 4F 55 54 49 4E 45 20 54 4F 20 50 MON ROUTINE TO P
009B50: 45 52 46 4F 52 4D 20 55 4E 53 49 47 4E 45 44 20 ERFORM UNSIGNED
009B60: 43 4F 4D 50 41 52 45 0D 0A 3B 20 43 41 52 52 59 COMPARE..; CARRY
009B70: 20 53 45 54 20 49 46 20 44 45 20 3C 20 48 4C 0D SET IF DE < HL.
009B80: 0A 3B 20 5A 45 52 4F 2F 4E 4F 4E 5A 45 52 4F 20 .; ZERO/NONZERO
009B90: 53 45 54 20 41 43 43 4F 52 44 49 4E 47 4C 59 0D SET ACCORDINGLY.
009BA0: 0A 43 43 55 43 4D 50 3A 3A 0D 0A 20 20 20 20 20 .CCUCMP::..
009BB0: 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 44 0D 0A MOV A,D..
009BC0: 20 20 20 20 20 20 20 20 43 4D 50 20 20 20 20 20 CMP
009BD0: 48 0D 0A 20 20 20 20 20 20 20 20 4A 4E 5A 20 20 H.. JNZ
009BE0: 20 20 20 55 43 4D 50 31 0D 0A 20 20 20 20 20 20 UCMP1..
009BF0: 20 20 4D 4F 56 20 20 20 20 20 41 2C 45 0D 0A 20 MOV A,E..
009C00: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
009C10: 4C 2C 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 L,A.. MOV
009C20: 20 20 20 20 20 41 2C 45 0D 0A 20 20 20 20 20 20 A,E..
009C30: 20 20 53 55 42 20 20 20 20 20 43 0D 0A 20 20 20 SUB C..
009C40: 20 20 20 20 20 4D 4F 56 20 20 20 20 20 45 2C 41 MOV E,A
009C50: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
009C60: 20 20 41 2C 44 0D 0A 20 20 20 20 20 20 20 20 53 A,D.. S
009C70: 42 42 20 20 20 20 20 42 0D 0A 20 20 20 20 20 20 BB B..
009C80: 20 20 4D 4F 56 20 20 20 20 20 44 2C 41 0D 0A 43 MOV D,A..C
009C90: 43 44 49 56 32 3A 20 50 4F 50 20 20 20 20 20 50 CDIV2: POP P
009CA0: 53 57 0D 0A 20 20 20 20 20 20 20 20 44 43 52 20 SW.. DCR
009CB0: 20 20 20 20 41 0D 0A 20 20 20 20 20 20 20 20 4A A.. J
009CC0: 5A 20 20 20 20 20 20 43 43 44 49 56 33 0D 0A 20 Z CCDIV3..
009CD0: 20 20 20 20 20 20 20 50 55 53 48 20 20 20 20 50 PUSH P
009CE0: 53 57 0D 0A 20 20 20 20 20 20 20 20 4A 4D 50 20 SW.. JMP
009CF0: 20 20 20 20 43 43 44 49 56 31 0D 0A 43 43 44 49 CCDIV1..CCDI
009D00: 56 33 3A 20 50 4F 50 20 20 20 20 20 50 53 57 0D V3: POP PSW.
009D10: 0A 20 20 20 20 20 20 20 20 52 50 0D 0A 20 20 20 . RP..
009D20: 20 20 20 20 20 43 41 4C 4C 20 20 20 20 43 43 44 CALL CCD
009D30: 45 4E 45 47 0D 0A 20 20 20 20 20 20 20 20 58 43 ENEG.. XC
009D40: 48 47 0D 0A 20 20 20 20 20 20 20 20 43 41 4C 4C HG.. CALL
009D50: 20 20 20 20 43 43 44 45 4E 45 47 0D 0A 20 20 20 CCDENEG..
009D60: 20 20 20 20 20 58 43 48 47 0D 0A 20 20 20 20 20 XCHG..
009D70: 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 4E 45 47 41 RET..;..;NEGA
009D80: 54 45 20 54 48 45 20 49 4E 54 45 47 45 52 20 49 TE THE INTEGER I
009D90: 4E 20 44 45 20 28 49 4E 54 45 52 4E 41 4C 20 52 N DE (INTERNAL R
009DA0: 4F 55 54 49 4E 45 29 0D 0A 43 43 44 45 4E 45 47 OUTINE)..CCDENEG
009DB0: 3A 20 4D 4F 56 20 20 20 20 41 2C 44 0D 0A 20 20 : MOV A,D..
009DC0: 20 20 20 20 20 20 43 4D 41 0D 0A 20 20 20 20 20 CMA..
009DD0: 20 20 20 4D 4F 56 20 20 20 20 20 44 2C 41 0D 0A MOV D,A..
009DE0: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
009DF0: 41 2C 45 0D 0A 20 20 20 20 20 20 20 20 43 4D 41 A,E.. CMA
009E00: 20 20 20 20 20 20 20 43 4D 50 20 20 20 20 20 4C CMP L
009E10: 0D 0A 55 43 4D 50 31 3A 20 20 4C 58 49 20 20 20 ..UCMP1: LXI
009E20: 20 20 48 2C 31 0D 0A 20 20 20 20 20 20 20 20 52 H,1.. R
009E30: 45 54 0D 0A 3B 0D 0A 3B 53 48 49 46 54 20 44 45 ET..;..;SHIFT DE
009E40: 20 41 52 49 54 48 4D 45 54 49 43 41 4C 4C 59 20 ARITHMETICALLY
009E50: 52 49 47 48 54 20 42 59 20 48 4C 20 41 4E 44 20 RIGHT BY HL AND
009E60: 52 45 54 55 52 4E 20 49 4E 20 48 4C 0D 0A 43 43 RETURN IN HL..CC
009E70: 41 53 52 3A 3A 0D 0A 20 20 20 20 20 20 20 20 58 ASR::.. X
009E80: 43 48 47 0D 0A 20 20 20 20 20 20 20 20 44 43 52 CHG.. DCR
009E90: 20 20 20 20 20 45 0D 0A 20 20 20 20 20 20 20 20 E..
009EA0: 52 4D 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 RM.. MOV
009EB0: 20 20 20 20 41 2C 48 0D 0A 20 20 20 20 20 20 20 A,H..
009EC0: 20 52 41 4C 0D 0A 20 20 20 20 20 20 20 20 4D 4F RAL.. MO
009ED0: 56 20 20 20 20 20 41 2C 48 0D 0A 20 20 20 20 20 V A,H..
009EE0: 20 20 20 52 41 52 0D 0A 20 20 20 20 20 20 20 20 RAR..
009EF0: 4D 4F 56 20 20 20 20 20 48 2C 41 0D 0A 20 20 20 MOV H,A..
009F00: 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 4C MOV A,L
009F10: 0D 0A 20 20 20 20 20 20 20 20 52 41 52 0D 0A 20 .. RAR..
009F20: 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 4C MOV L
009F30: 2C 41 0D 0A 20 20 20 20 20 20 20 20 4A 4D 50 20 ,A.. JMP
009F40: 20 20 20 20 43 43 41 53 52 2B 31 0D 0A 3B 0D 0A CCASR+1..;..
009F50: 3B 53 48 49 46 54 20 44 45 20 41 52 49 54 48 4D ;SHIFT DE ARITHM
009F60: 45 54 49 43 41 4C 4C 59 20 4C 45 46 54 20 42 59 ETICALLY LEFT BY
009F70: 20 48 4C 20 41 4E 44 20 52 45 54 55 52 4E 20 49 HL AND RETURN I
009F80: 4E 20 48 4C 0D 0A 43 43 41 53 4C 3A 3A 0D 0A 20 N HL..CCASL::..
009F90: 20 20 20 20 20 20 20 58 43 48 47 0D 0A 20 20 20 XCHG..
009FA0: 20 20 20 20 20 44 43 52 20 20 20 20 20 45 0D 0A DCR E..
009FB0: 20 20 20 20 20 20 20 20 52 4D 0D 0A 20 20 20 20 RM..
009FC0: 20 20 20 20 44 41 44 20 20 20 20 20 48 0D 0A 20 DAD H..
009FD0: 20 20 20 20 20 20 20 4A 4D 50 20 20 20 20 20 43 JMP C
009FE0: 43 41 53 4C 2B 31 0D 0A 3B 0D 0A 3B 53 55 42 54 CASL+1..;..;SUBT
009FF0: 52 41 43 54 20 48 4C 20 46 52 4F 4D 20 44 45 20 RACT HL FROM DE
00A000: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
00A010: 20 20 45 2C 41 0D 0A 20 20 20 20 20 20 20 20 49 E,A.. I
00A020: 4E 58 20 20 20 20 20 44 0D 0A 20 20 20 20 20 20 NX D..
00A030: 20 20 52 45 54 0D 0A 3B 0D 0A 3B 4E 45 47 41 54 RET..;..;NEGAT
00A040: 45 20 54 48 45 20 49 4E 54 45 47 45 52 20 49 4E E THE INTEGER IN
00A050: 20 42 43 20 28 49 4E 54 45 52 4E 41 4C 20 52 4F BC (INTERNAL RO
00A060: 55 54 49 4E 45 29 0D 0A 43 43 42 43 4E 45 47 3A UTINE)..CCBCNEG:
00A070: 20 4D 4F 56 20 20 20 20 41 2C 42 0D 0A 20 20 20 MOV A,B..
00A080: 20 20 20 20 20 43 4D 41 0D 0A 20 20 20 20 20 20 CMA..
00A090: 20 20 4D 4F 56 20 20 20 20 20 42 2C 41 0D 0A 20 MOV B,A..
00A0A0: 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 MOV A
00A0B0: 2C 43 0D 0A 20 20 20 20 20 20 20 20 43 4D 41 0D ,C.. CMA.
00A0C0: 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 . MOV
00A0D0: 20 43 2C 41 0D 0A 20 20 20 20 20 20 20 20 49 4E C,A.. IN
00A0E0: 58 20 20 20 20 20 42 0D 0A 20 20 20 20 20 20 20 X B..
00A0F0: 20 52 45 54 0D 0A 3B 0D 0A 3B 52 4F 54 41 54 45 RET..;..;ROTATE
00A100: 20 44 45 20 4C 45 46 54 20 4F 4E 45 20 42 49 54 DE LEFT ONE BIT
00A110: 20 28 49 4E 54 45 52 4E 41 4C 20 52 4F 55 54 49 (INTERNAL ROUTI
00A120: 4E 45 29 0D 0A 43 43 52 44 45 4C 3A 20 4D 4F 56 NE)..CCRDEL: MOV
00A130: 20 20 20 20 20 41 2C 45 0D 0A 20 20 20 20 20 20 A,E..
00A140: 20 20 52 41 4C 0D 0A 20 20 20 20 20 20 20 20 4D RAL.. M
00A150: 4F 56 20 20 20 20 20 45 2C 41 0D 0A 20 20 20 20 OV E,A..
00A160: 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 44 0D MOV A,D.
00A170: 0A 20 20 20 20 20 20 20 20 52 41 4C 0D 0A 20 20 . RAL..
00A180: 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 44 2C MOV D,
00A190: 41 0D 0A 20 20 20 20 20 20 20 20 4F 52 41 20 20 A.. ORA
00A1A0: 20 20 20 45 0D 0A 20 20 20 20 20 20 20 20 52 45 E.. RE
00A1B0: 54 0D 0A 3B 0D 0A 3B 43 4F 4D 50 41 52 45 20 42 T..;..;COMPARE B
00A1C0: 43 20 54 4F 20 44 45 20 28 49 4E 54 45 52 4E 41 C TO DE (INTERNA
00A1D0: 4C 20 52 4F 55 54 49 4E 45 29 0D 0A 43 43 43 4D L ROUTINE)..CCCM
00A1E0: 50 42 43 44 45 3A 20 4D 4F 56 20 20 41 2C 45 0D PBCDE: MOV A,E.
00A1F0: 0A 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 . SUB
00A200: 41 4E 44 20 52 45 54 55 52 4E 20 49 4E 20 48 4C AND RETURN IN HL
00A210: 0D 0A 43 43 53 55 42 3A 3A 0D 0A 20 20 20 20 20 ..CCSUB::..
00A220: 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 45 0D 0A MOV A,E..
00A230: 20 20 20 20 20 20 20 20 53 55 42 20 20 20 20 20 SUB
00A240: 4C 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 L.. MOV
00A250: 20 20 20 4C 2C 41 0D 0A 20 20 20 20 20 20 20 20 L,A..
00A260: 4D 4F 56 20 20 20 20 20 41 2C 44 0D 0A 20 20 20 MOV A,D..
00A270: 20 20 20 20 20 53 42 42 20 20 20 20 20 48 0D 0A SBB H..
00A280: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
00A290: 48 2C 41 0D 0A 20 20 20 20 20 20 20 20 52 45 54 H,A.. RET
00A2A0: 0D 0A 3B 0D 0A 3B 46 4F 52 4D 20 54 48 45 20 54 ..;..;FORM THE T
00A2B0: 57 4F 27 53 20 43 4F 4D 50 4C 45 4D 45 4E 54 20 WO'S COMPLEMENT
00A2C0: 4F 46 20 48 4C 0D 0A 43 43 4E 45 47 3A 3A 0D 0A OF HL..CCNEG::..
00A2D0: 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20 20 20 CALL
00A2E0: 43 43 43 4F 4D 0D 0A 20 20 20 20 20 20 20 20 49 CCCOM.. I
00A2F0: 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 20 NX H..
00A300: 20 20 52 45 54 0D 0A 3B 0D 0A 3B 46 4F 52 4D 20 RET..;..;FORM
00A310: 54 48 45 20 4F 4E 45 27 53 20 43 4F 4D 50 4C 45 THE ONE'S COMPLE
00A320: 4D 45 4E 54 20 4F 46 20 48 4C 0D 0A 43 43 43 4F MENT OF HL..CCCO
00A330: 4D 3A 3A 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 M::.. MOV
00A340: 20 20 20 20 20 41 2C 48 0D 0A 20 20 20 20 20 20 A,H..
00A350: 20 20 43 4D 41 0D 0A 20 20 20 20 20 20 20 20 4D CMA.. M
00A360: 4F 56 20 20 20 20 20 48 2C 41 0D 0A 20 20 20 20 OV H,A..
00A370: 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 4C 0D MOV A,L.
00A380: 0A 20 20 20 20 20 20 20 20 43 4D 41 0D 0A 20 20 . CMA..
00A390: 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 4C 2C MOV L,
00A3A0: 41 0D 0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A A.. RET..
00A3B0: 3B 0D 0A 3B 4D 55 4C 54 49 50 4C 59 20 44 45 20 ;..;MULTIPLY DE
00A3C0: 42 59 20 48 4C 20 41 4E 44 20 52 45 54 55 52 4E BY HL AND RETURN
00A3D0: 20 49 4E 20 48 4C 20 28 53 49 47 4E 45 44 20 4D IN HL (SIGNED M
00A3E0: 55 4C 54 49 50 4C 59 29 0D 0A 43 43 4D 55 4C 54 ULTIPLY)..CCMULT
00A3F0: 3A 3A 0D 0A 4D 55 4C 54 3A 20 20 20 4D 4F 56 20 ::..MULT: MOV
00A400: 20 43 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 C.. MOV
00A410: 20 20 20 20 41 2C 44 0D 0A 20 20 20 20 20 20 20 A,D..
00A420: 20 53 42 42 20 20 20 20 20 42 0D 0A 20 20 20 20 SBB B..
00A430: 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 4C 4F 47 RET..;..;LOG
00A440: 49 43 41 4C 20 4E 45 47 41 54 49 4F 4E 0D 0A 43 ICAL NEGATION..C
00A450: 43 4C 4E 45 47 3A 3A 0D 0A 20 20 20 20 20 20 20 CLNEG::..
00A460: 20 4D 4F 56 20 20 20 20 20 41 2C 48 0D 0A 20 20 MOV A,H..
00A470: 20 20 20 20 20 20 4F 52 41 20 20 20 20 20 4C 0D ORA L.
00A480: 0A 20 20 20 20 20 20 20 20 4A 4E 5A 20 20 20 20 . JNZ
00A490: 20 24 2B 36 0D 0A 20 20 20 20 20 20 20 20 4D 56 $+6.. MV
00A4A0: 49 20 20 20 20 20 4C 2C 31 0D 0A 20 20 20 20 20 I L,1..
00A4B0: 20 20 20 52 45 54 0D 0A 20 20 20 20 20 20 20 20 RET..
00A4C0: 4C 58 49 20 20 20 20 20 48 2C 30 0D 0A 20 20 20 LXI H,0..
00A4D0: 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 20 45 RET..;..; E
00A4E0: 58 45 43 55 54 45 20 22 53 57 49 54 43 48 22 20 XECUTE "SWITCH"
00A4F0: 53 54 41 54 45 4D 45 4E 54 0D 0A 3B 0D 0A 3B 20 STATEMENT..;..;
00A500: 20 48 4C 20 20 3D 20 20 53 57 49 54 43 48 20 56 HL = SWITCH V
00A510: 41 4C 55 45 0D 0A 3B 20 28 53 50 29 20 2D 3E 20 ALUE..; (SP) ->
00A520: 53 57 49 54 43 48 20 54 41 42 4C 45 0D 0A 3B 20 SWITCH TABLE..;
00A530: 20 20 20 20 20 20 20 20 44 57 20 41 44 44 52 31 DW ADDR1
00A540: 2C 20 56 41 4C 55 45 31 0D 0A 3B 20 20 20 20 20 , VALUE1..;
00A550: 20 20 20 20 44 57 20 41 44 44 52 32 2C 20 56 41 DW ADDR2, VA
00A560: 4C 55 45 32 0D 0A 3B 20 20 20 20 20 20 20 20 20 LUE2..;
00A570: 2E 2E 2E 0D 0A 3B 20 20 20 20 20 20 20 20 20 44 .....; D
00A580: 57 20 30 0D 0A 3B 20 20 20 20 20 20 20 20 5B 4A W 0..; [J
00A590: 4D 50 20 64 65 66 61 75 6C 74 5D 0D 0A 3B 20 20 MP default]..;
00A5A0: 20 20 20 20 20 20 20 63 6F 6E 74 69 6E 75 61 74 continuat
00A5B0: 69 6F 6E 0D 0A 3B 0D 0A 43 43 53 57 49 54 43 48 ion..;..CCSWITCH
00A5C0: 3A 3A 0D 0A 20 20 20 20 20 20 20 20 58 43 48 47 ::.. XCHG
00A5D0: 20 20 20 20 20 20 20 20 20 20 20 20 3B 44 45 20 ;DE
00A5E0: 3D 20 20 53 57 49 54 43 48 20 56 41 4C 55 45 0D = SWITCH VALUE.
00A5F0: 0A 20 20 20 20 20 20 20 20 50 4F 50 20 20 20 20 . POP
00A600: 20 20 20 20 42 2C 48 0D 0A 20 20 20 20 20 20 20 B,H..
00A610: 20 4D 4F 56 20 20 20 20 20 43 2C 4C 0D 0A 20 20 MOV C,L..
00A620: 20 20 20 20 20 20 4C 58 49 20 20 20 20 20 48 2C LXI H,
00A630: 30 0D 0A 4D 55 4C 54 31 3A 20 20 4D 4F 56 20 20 0..MULT1: MOV
00A640: 20 20 20 41 2C 43 0D 0A 20 20 20 20 20 20 20 20 A,C..
00A650: 52 52 43 0D 0A 20 20 20 20 20 20 20 20 4A 4E 43 RRC.. JNC
00A660: 20 20 20 20 20 4D 55 4C 54 32 0D 0A 20 20 20 20 MULT2..
00A670: 20 20 20 20 44 41 44 20 20 20 20 20 44 0D 0A 4D DAD D..M
00A680: 55 4C 54 32 3A 20 20 58 52 41 20 41 0D 0A 20 20 ULT2: XRA A..
00A690: 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C MOV A,
00A6A0: 42 0D 0A 20 20 20 20 20 20 20 20 52 41 52 0D 0A B.. RAR..
00A6B0: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
00A6C0: 42 2C 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 B,A.. MOV
00A6D0: 20 20 20 20 20 41 2C 43 0D 0A 20 20 20 20 20 20 A,C..
00A6E0: 20 20 52 41 52 0D 0A 20 20 20 20 20 20 20 20 4D RAR.. M
00A6F0: 4F 56 20 20 20 20 20 43 2C 41 0D 0A 20 20 20 20 OV C,A..
00A700: 20 20 20 20 4F 52 41 20 20 20 20 20 42 0D 0A 20 ORA B..
00A710: 20 20 20 20 20 20 20 52 5A 0D 0A 20 20 20 20 20 RZ..
00A720: 20 20 20 58 52 41 20 20 20 20 20 41 0D 0A 20 20 XRA A..
00A730: 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C MOV A,
00A740: 45 0D 0A 20 20 20 20 20 20 20 20 52 41 4C 0D 0A E.. RAL..
00A750: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
00A760: 45 2C 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 E,A.. MOV
00A770: 20 20 20 20 20 41 2C 44 0D 0A 20 20 20 20 20 20 A,D..
00A780: 20 20 52 41 4C 0D 0A 20 20 20 20 20 20 20 20 4D RAL.. M
00A790: 4F 56 20 20 20 20 20 44 2C 41 0D 0A 20 20 20 20 OV D,A..
00A7A0: 20 20 20 20 4F 52 41 20 20 20 20 20 45 0D 0A 20 ORA E..
00A7B0: 20 20 20 20 20 20 20 52 5A 0D 0A 20 20 20 20 20 RZ..
00A7C0: 20 20 20 4A 4D 50 20 20 20 20 20 4D 55 4C 54 31 JMP MULT1
00A7D0: 0D 0A 3B 0D 0A 3B 44 49 56 49 44 45 20 44 45 20 ..;..;DIVIDE DE
00A7E0: 42 59 20 48 4C 20 41 4E 44 20 52 45 54 55 52 4E BY HL AND RETURN
00A7F0: 20 51 55 4F 54 49 45 4E 54 20 49 4E 20 48 4C 2C QUOTIENT IN HL,
00A800: 20 48 20 20 20 20 20 20 20 3B 48 4C 20 2D 3E 20 H ;HL ->
00A810: 53 57 49 54 43 48 20 54 41 42 4C 45 0D 0A 53 57 SWITCH TABLE..SW
00A820: 4C 4F 4F 50 3A 20 4D 4F 56 20 20 20 20 20 43 2C LOOP: MOV C,
00A830: 4D 0D 0A 20 20 20 20 20 20 20 20 49 4E 58 20 20 M.. INX
00A840: 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20 4D 4F H.. MO
00A850: 56 20 20 20 20 20 42 2C 4D 20 20 20 20 20 3B 42 V B,M ;B
00A860: 43 20 2D 3E 20 43 41 53 45 20 41 44 44 52 2C 20 C -> CASE ADDR,
00A870: 45 4C 53 45 20 30 0D 0A 20 20 20 20 20 20 20 20 ELSE 0..
00A880: 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 INX H..
00A890: 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 42 0D 0A MOV A,B..
00A8A0: 20 20 20 20 20 20 20 20 4F 52 41 20 20 20 20 20 ORA
00A8B0: 43 0D 0A 20 20 20 20 20 20 20 20 4A 5A 20 20 20 C.. JZ
00A8C0: 20 20 20 53 57 45 4E 44 20 20 20 3B 44 45 46 41 SWEND ;DEFA
00A8D0: 55 4C 54 20 4F 52 20 43 4F 4E 54 49 4E 55 41 54 ULT OR CONTINUAT
00A8E0: 49 4F 4E 20 43 4F 44 45 0D 0A 20 20 20 20 20 20 ION CODE..
00A8F0: 20 20 4D 4F 56 20 20 20 20 20 41 2C 4D 0D 0A 20 MOV A,M..
00A900: 20 20 20 20 20 20 20 49 4E 58 20 20 20 20 20 48 INX H
00A910: 0D 0A 20 20 20 20 20 20 20 20 43 4D 50 20 20 20 .. CMP
00A920: 20 20 45 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 E.. MOV
00A930: 20 20 20 20 20 41 2C 4D 0D 0A 20 20 20 20 20 20 A,M..
00A940: 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 INX H..
00A950: 20 20 20 20 20 4A 4E 5A 20 20 20 20 20 53 57 4C JNZ SWL
00A960: 4F 4F 50 0D 0A 20 20 20 20 20 20 20 20 43 4D 50 OOP.. CMP
00A970: 20 20 20 20 20 44 0D 0A 20 20 20 20 20 20 20 20 D..
00A980: 4A 4E 5A 20 20 20 20 20 53 57 4C 4F 4F 50 0D 0A JNZ SWLOOP..
00A990: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
00A9A0: 48 2C 42 20 20 20 20 20 3B 43 41 53 45 20 4D 41 H,B ;CASE MA
00A9B0: 54 43 48 45 44 0D 0A 20 20 20 20 20 20 20 20 4D TCHED.. M
00A9C0: 4F 56 20 20 20 20 20 4C 2C 43 0D 0A 53 57 45 4E OV L,C..SWEN
00A9D0: 44 3A 20 20 50 43 48 4C 0D 0A 3B 0D 0A 20 20 20 D: PCHL..;..
00A9E0: 20 20 20 20 20 45 4E 44 0D 0A 1A 1A 1A 1A 1A 1A END........
00A9F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00AA00: 20 52 45 4D 41 49 4E 44 45 52 20 49 4E 20 44 45 REMAINDER IN DE
00AA10: 20 28 53 49 47 4E 45 44 20 44 49 56 49 44 45 29 (SIGNED DIVIDE)
00AA20: 0D 0A 43 43 44 49 56 3A 3A 0D 0A 44 49 56 3A 20 ..CCDIV::..DIV:
00AA30: 20 20 20 4D 4F 56 20 20 20 20 20 42 2C 48 0D 0A MOV B,H..
00AA40: 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 MOV
00AA50: 43 2C 4C 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 C,L.. MOV
00AA60: 20 20 20 20 20 41 2C 44 0D 0A 20 20 20 20 20 20 A,D..
00AA70: 20 20 58 52 41 20 20 20 20 20 42 0D 0A 20 20 20 XRA B..
00AA80: 20 20 20 20 20 50 55 53 48 20 20 20 20 50 53 57 PUSH PSW
00AA90: 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 .. MOV
00AAA0: 20 20 41 2C 44 0D 0A 20 20 20 20 20 20 20 20 4F A,D.. O
00AAB0: 52 41 20 20 20 20 20 41 0D 0A 20 20 20 20 20 20 RA A..
00AAC0: 20 20 43 4D 20 20 20 20 20 20 43 43 44 45 4E 45 CM CCDENE
00AAD0: 47 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 G.. MOV
00AAE0: 20 20 20 41 2C 42 0D 0A 20 20 20 20 20 20 20 20 A,B..
00AAF0: 4F 52 41 20 20 20 20 20 41 0D 0A 20 20 20 20 20 ORA A..
00AB00: 20 20 20 43 4D 20 20 20 20 20 20 43 43 42 43 4E CM CCBCN
00AB10: 45 47 0D 0A 20 20 20 20 20 20 20 20 4D 56 49 20 EG.. MVI
00AB20: 20 20 20 20 41 2C 31 36 0D 0A 20 20 20 20 20 20 A,16..
00AB30: 20 20 50 55 53 48 20 20 20 20 50 53 57 0D 0A 20 PUSH PSW..
00AB40: 20 20 20 20 20 20 20 58 43 48 47 0D 0A 20 20 20 XCHG..
00AB50: 20 20 20 20 20 4C 58 49 20 20 20 20 20 44 2C 30 LXI D,0
00AB60: 0D 0A 43 43 44 49 56 31 3A 20 44 41 44 20 20 20 ..CCDIV1: DAD
00AB70: 20 20 48 0D 0A 20 20 20 20 20 20 20 20 43 41 4C H.. CAL
00AB80: 4C 20 20 20 20 43 43 52 44 45 4C 0D 0A 20 20 20 L CCRDEL..
00AB90: 20 20 20 20 20 4A 5A 20 20 20 20 20 20 43 43 44 JZ CCD
00ABA0: 49 56 32 0D 0A 20 20 20 20 20 20 20 20 43 41 4C IV2.. CAL
00ABB0: 4C 20 20 20 20 43 43 43 4D 50 42 43 44 45 0D 0A L CCCMPBCDE..
00ABC0: 20 20 20 20 20 20 20 20 4A 4D 20 20 20 20 20 20 JM
00ABD0: 43 43 44 49 56 32 0D 0A 20 20 20 20 20 20 20 20 CCDIV2..
00ABE0: 4D 4F 56 20 20 20 20 20 41 2C 4C 0D 0A 20 20 20 MOV A,L..
00ABF0: 20 20 20 20 20 4F 52 49 20 20 20 20 20 31 0D 0A ORI 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: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AD10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AD20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AD30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AD40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AD50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AD60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AD70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AD80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AD90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00ADA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00ADB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00ADC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00ADD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00ADE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00ADF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AE00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AE10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AE20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AE30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AE40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AE50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AE60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AE70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AE80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AE90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AEA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AEB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AEC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AEE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AEF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00AF00: 23 64 65 66 69 6E 65 20 56 45 52 53 49 4F 4E 20 #define VERSION
00AF10: 22 56 65 72 73 69 6F 6E 20 31 2E 32 20 28 52 65 "Version 1.2 (Re
00AF20: 76 2E 20 32 31 29 5C 6E 22 0D 0A 23 64 65 66 69 v. 21)\n"..#defi
00AF30: 6E 65 20 43 52 49 47 48 54 31 20 22 43 6F 70 79 ne CRIGHT1 "Copy
00AF40: 72 69 67 68 74 20 31 39 38 35 20 4A 2E 20 45 2E right 1985 J. E.
00AF50: 20 48 65 6E 64 72 69 78 5C 6E 5C 6E 22 0D 0A 1A Hendrix\n\n"...
00AF60: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00AF70: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00AF80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AF90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AFA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AFB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AFC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AFD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AFE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AFF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B0A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B0B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B0C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B0D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B0E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B0F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B100: 3B 0D 0A 3B 2D 2D 2D 2D 2D 20 45 4E 44 3A 20 46 ;..;----- END: F
00B110: 69 6E 61 6C 20 6D 6F 64 75 6C 65 20 74 6F 20 62 inal module to b
00B120: 65 20 6C 6F 61 64 65 64 0D 0A 3B 0D 0A 55 65 6E e loaded..;..Uen
00B130: 64 3A 3A 20 6C 68 6C 64 20 20 36 09 09 3B 67 65 d:: lhld 6..;ge
00B140: 74 20 62 64 6F 73 20 61 64 64 72 65 73 73 0D 0A t bdos address..
00B150: 20 20 20 20 20 20 20 73 70 68 6C 09 09 3B 75 73 sphl..;us
00B160: 65 20 66 6F 72 20 62 61 73 65 20 6F 66 20 73 74 e for base of st
00B170: 61 63 6B 0D 0A 20 20 20 20 20 20 20 6C 78 69 20 ack.. lxi
00B180: 20 20 68 2C 55 65 6E 64 09 3B 67 65 74 20 73 74 h,Uend.;get st
00B190: 61 72 74 20 6F 66 20 66 72 65 65 20 6D 65 6D 6F art of free memo
00B1A0: 72 79 0D 0A 20 20 20 20 20 20 20 73 68 6C 64 20 ry.. shld
00B1B0: 20 55 6D 65 6D 70 74 72 23 23 09 3B 75 73 65 20 Umemptr##.;use
00B1C0: 66 6F 72 20 6D 65 6D 6F 72 79 20 61 6C 6C 6F 63 for memory alloc
00B1D0: 61 74 69 6F 6E 0D 0A 20 20 20 20 20 20 20 6A 6D ation.. jm
00B1E0: 70 20 20 20 55 6D 61 69 6E 23 23 09 3B 70 61 72 p Umain##.;par
00B1F0: 73 65 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 2C se command line,
00B200: 20 65 78 65 63 75 74 65 20 70 72 6F 67 72 61 6D execute program
00B210: 0D 0A 20 20 20 20 20 20 20 65 6E 64 20 20 20 55 .. end U
00B220: 65 6E 64 20 20 20 20 20 20 20 0D 0A 1A 1A 1A 1A end ......
00B230: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B240: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B250: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B260: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B270: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B2A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B2B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B2C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B2D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B2E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B2F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B6A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B6B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B6C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B6D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B6E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B6F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00B700: 2F 2A 0D 0A 2A 2A 20 53 54 44 49 4F 2E 48 20 2D /*..** STDIO.H -
00B710: 2D 20 53 74 61 6E 64 61 72 64 20 53 6D 61 6C 6C - Standard Small
00B720: 2D 43 20 44 65 66 69 6E 69 74 69 6F 6E 73 0D 0A -C Definitions..
00B730: 2A 2A 0D 0A 2A 2A 20 43 6F 70 79 72 69 67 68 74 **..** Copyright
00B740: 20 31 39 38 34 20 20 4C 2E 20 45 2E 20 50 61 79 1984 L. E. Pay
00B750: 6E 65 20 61 6E 64 20 4A 2E 20 45 2E 20 48 65 6E ne and J. E. Hen
00B760: 64 72 69 78 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E drix..*/..#defin
00B770: 65 20 73 74 64 69 6E 20 20 20 20 30 0D 0A 23 64 e stdin 0..#d
00B780: 65 66 69 6E 65 20 73 74 64 6F 75 74 20 20 20 31 efine stdout 1
00B790: 0D 0A 23 64 65 66 69 6E 65 20 73 74 64 65 72 72 ..#define stderr
00B7A0: 20 20 20 32 0D 0A 23 64 65 66 69 6E 65 20 45 52 2..#define ER
00B7B0: 52 20 20 20 28 2D 32 29 0D 0A 23 64 65 66 69 6E R (-2)..#defin
00B7C0: 65 20 45 4F 46 20 20 20 28 2D 31 29 0D 0A 23 64 e EOF (-1)..#d
00B7D0: 65 66 69 6E 65 20 59 45 53 20 20 20 20 20 20 31 efine YES 1
00B7E0: 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 20 20 20 20 ..#define NO
00B7F0: 20 20 20 30 0D 0A 23 64 65 66 69 6E 65 20 4E 55 0..#define NU
00B800: 4C 4C 20 20 20 20 20 30 0D 0A 23 64 65 66 69 6E LL 0..#defin
00B810: 65 20 43 52 20 20 20 20 20 20 31 33 0D 0A 23 64 e CR 13..#d
00B820: 65 66 69 6E 65 20 4C 46 20 20 20 20 20 20 31 30 efine LF 10
00B830: 0D 0A 23 64 65 66 69 6E 65 20 42 45 4C 4C 20 20 ..#define BELL
00B840: 20 20 20 37 0D 0A 23 64 65 66 69 6E 65 20 53 50 7..#define SP
00B850: 41 43 45 20 20 27 20 27 0D 0A 23 64 65 66 69 6E ACE ' '..#defin
00B860: 65 20 4E 45 57 4C 49 4E 45 20 4C 46 20 20 20 20 e NEWLINE LF
00B870: 20 20 2F 2A 32 33 2A 2F 20 2F 2A 34 35 2A 2F 0D /*23*/ /*45*/.
00B880: 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B890: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B8A0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B8B0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B8C0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B8D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B8E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B8F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B900: 55 6C 69 6E 6B 3A 3A 20 65 78 74 20 55 6D 61 69 Ulink:: ext Umai
00B910: 6E 0D 0A 20 20 20 20 20 20 20 20 65 78 74 20 55 n.. ext U
00B920: 65 6E 64 0D 0A 20 20 20 20 20 20 20 20 65 6E 64 end.. end
00B930: 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B940: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B950: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B960: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B970: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00B980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B9A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B9B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B9C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B9D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B9E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00B9F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BA00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BA10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BA20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BA30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BA40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BA50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BA60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BA70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BA80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BA90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BAA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BAB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BAC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BAD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BAE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BAF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BB00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BB10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BB20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BB30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BB40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BB50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BB60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BB70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BB80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BB90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BBA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BBB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BBC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BBD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BBE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BBF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BCA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BCB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BCC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BCD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BCE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BCF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BD00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BD10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BD20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BD30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BD40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BD50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BD60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BD70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BD80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BD90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BDA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BDB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BDC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BDD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BDE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BDF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BE00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BE10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BE20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BE30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BE40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BE50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BE60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BE70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BE80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BE90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BEA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BEB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BEC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BEE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00BEF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
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: 2F 2A 0D 0A 2A 2A 20 6D 69 73 63 65 6C 6C 61 6E /*..** miscellan
00C010: 65 6F 75 73 20 64 65 66 69 6E 69 74 69 6F 6E 73 eous definitions
00C020: 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4D 41 ..*/..#define MA
00C030: 58 46 4E 20 20 20 20 20 20 31 35 09 09 2F 2A 20 XFN 15../*
00C040: 6D 61 78 20 66 69 6C 65 20 6E 61 6D 65 20 73 70 max file name sp
00C050: 61 63 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 ace */..#define
00C060: 49 4E 54 53 5A 20 20 20 20 20 20 20 32 09 09 2F INTSZ 2../
00C070: 2A 20 69 6E 74 65 67 65 72 20 73 69 7A 65 20 69 * integer size i
00C080: 6E 20 62 79 74 65 73 20 2A 2F 0D 0A 23 64 65 66 n bytes */..#def
00C090: 69 6E 65 20 43 4F 4D 4D 45 4E 54 20 20 20 27 3B ine COMMENT ';
00C0A0: 27 09 09 2F 2A 20 63 6F 6D 6D 65 6E 74 20 64 65 '../* comment de
00C0B0: 6C 69 6D 69 74 65 72 20 2A 2F 0D 0A 23 64 65 66 limiter */..#def
00C0C0: 69 6E 65 20 41 4E 4F 54 48 45 52 20 20 20 27 7C ine ANOTHER '|
00C0D0: 27 09 09 2F 2A 20 61 6E 6F 74 68 65 72 20 6F 70 '../* another op
00C0E0: 65 72 61 6E 64 20 6F 70 74 69 6F 6E 20 2A 2F 0D erand option */.
00C0F0: 0A 23 64 65 66 69 6E 65 20 4D 41 58 4C 49 4E 45 .#define MAXLINE
00C100: 20 20 20 20 38 31 09 09 2F 2A 20 6C 65 6E 67 74 81../* lengt
00C110: 68 20 6F 66 20 73 6F 75 72 63 65 20 6C 69 6E 65 h of source line
00C120: 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4D 49 43 */..#define MIC
00C130: 4F 55 4E 54 20 20 20 31 35 30 09 09 2F 2A 20 6D OUNT 150../* m
00C140: 61 63 68 69 6E 65 20 69 6E 73 74 72 75 63 74 69 achine instructi
00C150: 6F 6E 20 68 61 73 68 20 73 70 61 63 65 20 2A 2F on hash space */
00C160: 0D 0A 23 64 65 66 69 6E 65 20 4D 49 4F 50 4E 44 ..#define MIOPND
00C170: 53 20 20 20 33 30 30 09 09 2F 2A 20 6D 61 78 69 S 300../* maxi
00C180: 6D 75 6D 20 75 6E 69 71 75 65 20 6F 70 65 72 61 mum unique opera
00C190: 6E 64 20 66 6F 72 6D 61 74 73 20 2A 2F 0D 0A 23 nd formats */..#
00C1A0: 64 65 66 69 6E 65 20 4D 49 42 55 46 53 5A 20 20 define MIBUFSZ
00C1B0: 34 36 30 30 09 09 2F 2A 20 6D 69 74 20 73 79 6E 4600../* mit syn
00C1C0: 74 61 78 20 73 70 61 63 65 20 2A 2F 0D 0A 23 64 tax space */..#d
00C1D0: 65 66 69 6E 65 20 4F 42 4A 45 58 54 20 20 22 2E efine OBJEXT ".
00C1E0: 52 45 4C 22 09 09 2F 2A 20 6F 62 6A 65 63 74 20 REL"../* object
00C1F0: 66 69 6C 65 20 65 78 74 65 6E 73 69 6F 6E 20 2A file extension *
00C200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00C400: 2F 0D 0A 23 64 65 66 69 6E 65 20 53 52 43 45 58 /..#define SRCEX
00C410: 54 20 20 22 2E 4D 41 43 22 09 09 2F 2A 20 73 6F T ".MAC"../* so
00C420: 75 72 63 65 20 66 69 6C 65 20 65 78 74 65 6E 73 urce file extens
00C430: 69 6F 6E 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 ion */..#define
00C440: 4D 41 58 4C 41 42 20 20 20 20 20 20 38 09 09 2F MAXLAB 8../
00C450: 2A 20 6D 61 78 69 6D 75 6D 20 6C 61 62 65 6C 20 * maximum label
00C460: 63 68 61 72 61 63 74 65 72 73 20 75 73 65 64 20 characters used
00C470: 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 53 54 41 43 */..#define STAC
00C480: 4B 20 20 20 20 31 30 32 34 09 09 2F 2A 20 72 65 K 1024../* re
00C490: 73 65 72 76 65 64 20 66 6F 72 20 73 74 61 63 6B served for stack
00C4A0: 20 73 70 61 63 65 20 2A 2F 0D 0A 23 64 65 66 69 space */..#defi
00C4B0: 6E 65 20 4F 48 44 4F 50 45 4E 20 20 20 31 36 34 ne OHDOPEN 164
00C4C0: 09 09 2F 2A 20 6F 76 65 72 68 65 61 64 20 62 79 ../* overhead by
00C4D0: 74 65 73 20 70 65 72 20 6F 70 65 6E 20 66 69 6C tes per open fil
00C4E0: 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4D 41 e */..#define MA
00C4F0: 58 4F 50 45 4E 20 20 20 20 20 32 09 09 2F 2A 20 XOPEN 2../*
00C500: 6D 61 78 69 6D 75 6D 20 6F 70 65 6E 20 66 69 6C maximum open fil
00C510: 65 73 20 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 es */..../*..**
00C520: 73 79 6D 62 6F 6C 20 74 61 62 6C 65 0D 0A 2A 2F symbol table..*/
00C530: 0D 0A 23 64 65 66 69 6E 65 20 53 54 4D 41 58 20 ..#define STMAX
00C540: 20 20 35 30 30 09 09 09 2F 2A 20 6D 61 78 69 6D 500.../* maxim
00C550: 75 6D 20 6C 61 62 6C 65 73 20 61 6C 6C 6F 77 65 um lables allowe
00C560: 64 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 53 54 d */..#define ST
00C570: 56 41 4C 55 45 20 28 4D 41 58 4C 41 42 20 2B 20 VALUE (MAXLAB +
00C580: 31 29 09 09 2F 2A 20 6F 66 66 73 65 74 20 74 6F 1)../* offset to
00C590: 20 76 61 6C 75 65 20 66 69 65 6C 64 20 2A 2F 0D value field */.
00C5A0: 0A 23 64 65 66 69 6E 65 20 53 54 46 4C 41 47 20 .#define STFLAG
00C5B0: 20 28 53 54 56 41 4C 55 45 20 2B 20 49 4E 54 53 (STVALUE + INTS
00C5C0: 5A 29 09 2F 2A 20 6F 66 66 73 65 74 20 74 6F 20 Z)./* offset to
00C5D0: 66 6C 61 67 20 62 79 74 65 20 2A 2F 0D 0A 23 64 flag byte */..#d
00C5E0: 65 66 69 6E 65 20 53 54 45 4E 54 52 59 20 28 53 efine STENTRY (S
00C5F0: 54 46 4C 41 47 20 2B 20 31 29 09 09 2F 2A 20 73 TFLAG + 1)../* s
00C600: 2F 2A 0D 0A 2A 2A 20 6D 61 63 68 69 6E 65 20 69 /*..** machine i
00C610: 6E 73 74 72 75 63 74 69 6F 6E 20 74 61 62 6C 65 nstruction table
00C620: 0D 0A 2A 2F 0D 0A 69 6E 74 0D 0A 20 20 6D 69 74 ..*/..int.. mit
00C630: 61 62 6C 65 20 3D 20 33 2A 49 4E 54 53 5A 2A 4D able = 3*INTSZ*M
00C640: 49 43 4F 55 4E 54 2B 4D 49 42 55 46 53 5A 2C 09 ICOUNT+MIBUFSZ,.
00C650: 2F 2A 20 6D 69 74 20 73 69 7A 65 20 73 69 67 6E /* mit size sign
00C660: 61 74 75 72 65 20 2A 2F 0D 0A 20 20 6D 69 74 6E ature */.. mitn
00C670: 64 78 5B 4D 49 43 4F 55 4E 54 5D 2C 09 09 2F 2A dx[MICOUNT],../*
00C680: 20 6D 69 74 20 69 6E 64 69 63 65 73 20 28 68 61 mit indices (ha
00C690: 73 68 20 2D 3E 20 77 68 69 63 68 29 20 2A 2F 0D sh -> which) */.
00C6A0: 0A 20 20 6D 69 74 6E 78 74 5B 4D 49 43 4F 55 4E . mitnxt[MICOUN
00C6B0: 54 5D 2C 09 09 2F 2A 20 6D 69 74 20 73 79 6E 6F T],../* mit syno
00C6C0: 6E 79 6D 20 63 68 61 69 6E 20 2A 2F 0D 0A 20 20 nym chain */..
00C6D0: 6D 69 74 70 74 72 5B 4D 49 43 4F 55 4E 54 5D 3B mitptr[MICOUNT];
00C6E0: 09 09 2F 2A 20 6D 6E 65 6D 6F 6E 69 63 20 73 79 ../* mnemonic sy
00C6F0: 6E 74 61 78 20 70 74 72 73 20 2A 2F 0D 0A 63 68 ntax ptrs */..ch
00C700: 61 72 0D 0A 20 20 6D 69 74 62 75 66 5B 4D 49 42 ar.. mitbuf[MIB
00C710: 55 46 53 5A 5D 3B 09 09 2F 2A 20 69 6E 73 74 72 UFSZ];../* instr
00C720: 75 63 74 69 6F 6E 20 73 79 6E 74 61 78 20 62 75 uction syntax bu
00C730: 66 66 65 72 20 2A 2F 0D 0A 0D 0A 65 78 74 65 72 ffer */....exter
00C740: 6E 20 69 6E 74 09 09 09 2F 2A 20 72 65 73 69 64 n int.../* resid
00C750: 65 20 69 6E 20 6D 69 74 2E 63 20 2A 2F 0D 0A 20 e in mit.c */..
00C760: 20 6F 70 61 64 6A 2C 09 09 09 2F 2A 20 6F 70 65 opadj,.../* ope
00C770: 72 61 74 69 6F 6E 20 63 6F 64 65 20 61 64 6A 75 ration code adju
00C780: 73 74 6D 65 6E 74 20 2A 2F 0D 0A 20 20 68 61 73 stment */.. has
00C790: 68 76 61 6C 3B 09 09 09 2F 2A 20 67 6C 6F 62 61 hval;.../* globa
00C7A0: 6C 20 68 61 73 68 20 76 61 6C 75 65 20 66 6F 72 l hash value for
00C7B0: 20 73 70 65 65 64 20 2A 2F 0D 0A 1A 1A 1A 1A 1A speed */.......
00C7C0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00C7D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00C7E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00C7F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00C800: 74 20 65 6E 74 72 79 20 73 69 7A 65 20 2A 2F 0D t entry size */.
00C810: 0A 23 64 65 66 69 6E 65 20 53 54 42 55 46 53 5A .#define STBUFSZ
00C820: 20 28 73 74 6D 61 78 20 2A 20 53 54 45 4E 54 52 (stmax * STENTR
00C830: 59 29 09 2F 2A 20 73 74 20 62 75 66 66 65 72 20 Y)./* st buffer
00C840: 73 69 7A 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 size */..#define
00C850: 20 4C 41 42 42 49 54 32 20 31 32 38 09 09 09 2F LABBIT2 128.../
00C860: 2A 20 6C 61 62 65 6C 20 66 6C 61 67 20 28 70 61 * label flag (pa
00C870: 73 73 20 32 29 20 2A 2F 0D 0A 23 64 65 66 69 6E ss 2) */..#defin
00C880: 65 20 4C 41 42 42 49 54 20 20 20 36 34 09 09 09 e LABBIT 64...
00C890: 2F 2A 20 6C 61 62 65 6C 20 66 6C 61 67 20 2A 2F /* label flag */
00C8A0: 0D 0A 23 64 65 66 69 6E 65 20 45 51 55 42 49 54 ..#define EQUBIT
00C8B0: 20 20 20 33 32 09 09 09 2F 2A 20 45 51 55 20 66 32.../* EQU f
00C8C0: 6C 61 67 20 28 70 61 73 73 20 32 29 20 2A 2F 0D lag (pass 2) */.
00C8D0: 0A 23 64 65 66 69 6E 65 20 53 45 54 42 49 54 20 .#define SETBIT
00C8E0: 20 20 31 36 09 09 09 2F 2A 20 53 45 54 20 66 6C 16.../* SET fl
00C8F0: 61 67 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 58 ag */..#define X
00C900: 52 42 49 54 20 20 20 20 20 38 09 09 09 2F 2A 20 RBIT 8.../*
00C910: 65 78 74 65 72 6E 61 6C 2D 72 65 66 65 72 65 6E external-referen
00C920: 63 65 20 66 6C 61 67 20 2A 2F 0D 0A 23 64 65 66 ce flag */..#def
00C930: 69 6E 65 20 45 50 42 49 54 20 20 20 20 20 34 09 ine EPBIT 4.
00C940: 09 09 2F 2A 20 65 6E 74 72 79 2D 70 6F 69 6E 74 ../* entry-point
00C950: 20 66 6C 61 67 20 2A 2F 0D 0A 23 64 65 66 69 6E flag */..#defin
00C960: 65 20 52 45 4C 42 49 54 53 20 20 20 33 09 09 09 e RELBITS 3...
00C970: 2F 2A 20 72 65 6C 61 74 69 76 65 20 62 69 74 73 /* relative bits
00C980: 20 28 41 42 53 2C 20 50 52 45 4C 29 20 2A 2F 0D (ABS, PREL) */.
00C990: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6D 61 63 72 6F 20 .../*..** macro
00C9A0: 74 61 62 6C 65 0D 0A 2A 2F 0D 0A 23 64 65 66 69 table..*/..#defi
00C9B0: 6E 65 20 4D 54 4E 58 54 20 20 20 20 20 20 20 30 ne MTNXT 0
00C9C0: 09 09 2F 2A 20 70 6F 69 6E 74 65 72 20 74 6F 20 ../* pointer to
00C9D0: 6E 65 78 74 20 6D 61 63 72 6F 20 2A 2F 0D 0A 23 next macro */..#
00C9E0: 64 65 66 69 6E 65 20 4D 54 4E 41 4D 20 20 20 49 define MTNAM I
00C9F0: 4E 54 53 5A 09 09 2F 2A 20 6D 61 63 72 6F 20 6E NTSZ../* macro n
00CA00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CA10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CA20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CA30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CA40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CA50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CA60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CA70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CA80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CA90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CAA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CAB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CAC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CAD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CAE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CAF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CB00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CB10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CB20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CB30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CB40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CB50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CB60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CB70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CB80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CB90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CBA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CBB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CBC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CBD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CBE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CBF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CC00: 61 6D 65 20 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ame */..../*..**
00CC10: 20 61 73 73 65 6D 62 6C 65 72 20 69 6E 73 74 72 assembler instr
00CC20: 75 63 74 69 6F 6E 20 63 6F 64 65 73 0D 0A 2A 2F uction codes..*/
00CC30: 0D 0A 23 64 65 66 69 6E 65 20 44 57 20 20 20 20 ..#define DW
00CC40: 20 31 0D 0A 23 64 65 66 69 6E 65 20 44 42 20 20 1..#define DB
00CC50: 20 20 20 32 0D 0A 23 64 65 66 69 6E 65 20 44 53 2..#define DS
00CC60: 20 20 20 20 20 33 0D 0A 23 64 65 66 69 6E 65 20 3..#define
00CC70: 45 58 20 20 20 20 20 34 0D 0A 23 64 65 66 69 6E EX 4..#defin
00CC80: 65 20 53 45 54 20 20 20 20 35 0D 0A 23 64 65 66 e SET 5..#def
00CC90: 69 6E 65 20 45 51 55 20 20 20 20 36 0D 0A 23 64 ine EQU 6..#d
00CCA0: 65 66 69 6E 65 20 4F 52 47 20 20 20 20 37 0D 0A efine ORG 7..
00CCB0: 23 64 65 66 69 6E 65 20 45 4E 44 20 20 20 20 38 #define END 8
00CCC0: 0D 0A 23 64 65 66 69 6E 65 20 4D 41 43 52 4F 20 ..#define MACRO
00CCD0: 20 39 0D 0A 23 64 65 66 69 6E 65 20 45 4E 44 4D 9..#define ENDM
00CCE0: 20 20 31 30 0D 0A 23 64 65 66 69 6E 65 20 43 41 10..#define CA
00CCF0: 4C 4C 20 20 31 31 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A LL 11..........
00CD00: 52 42 49 54 20 20 20 20 20 38 09 09 09 2F 2A 20 RBIT 8.../*
00CD10: 65 78 74 65 72 6E 61 6C 2D 72 65 66 65 72 65 6E external-referen
00CD20: 63 65 20 66 6C 61 67 20 2A 2F 0D 0A 23 64 65 66 ce flag */..#def
00CD30: 69 6E 65 20 45 50 42 49 54 20 20 20 20 20 34 09 ine EPBIT 4.
00CD40: 09 09 2F 2A 20 65 6E 74 72 79 2D 70 6F 69 6E 74 ../* entry-point
00CD50: 20 66 6C 61 67 20 2A 2F 0D 0A 23 64 65 66 69 6E flag */..#defin
00CD60: 65 20 52 45 4C 42 49 54 53 20 20 20 33 09 09 09 e RELBITS 3...
00CD70: 2F 2A 20 72 65 6C 61 74 69 76 65 20 62 69 74 73 /* relative bits
00CD80: 20 28 41 42 53 2C 20 50 52 45 4C 29 20 2A 2F 0D (ABS, PREL) */.
00CD90: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6D 61 63 72 6F 20 .../*..** macro
00CDA0: 74 61 62 6C 65 0D 0A 2A 2F 0D 0A 23 64 65 66 69 table..*/..#defi
00CDB0: 6E 65 20 4D 54 4E 58 54 20 20 20 20 20 20 20 30 ne MTNXT 0
00CDC0: 09 09 2F 2A 20 70 6F 69 6E 74 65 72 20 74 6F 20 ../* pointer to
00CDD0: 6E 65 78 74 20 6D 61 63 72 6F 20 2A 2F 0D 0A 23 next macro */..#
00CDE0: 64 65 66 69 6E 65 20 4D 54 4E 41 4D 20 20 20 49 define MTNAM I
00CDF0: 4E 54 53 5A 09 09 2F 2A 20 6D 61 63 72 6F 20 6E NTSZ../* macro n
00CE00: 2F 2A 0D 0A 2A 2A 20 72 65 6C 2E 68 20 2D 2D 20 /*..** rel.h --
00CE10: 68 65 61 64 65 72 20 66 6F 72 20 52 45 4C 20 66 header for REL f
00CE20: 69 6C 65 20 70 72 6F 63 65 73 73 69 6E 67 0D 0A ile processing..
00CE30: 2A 2F 0D 0A 0D 0A 09 09 09 2F 2A 20 69 74 65 6D */......./* item
00CE40: 2D 74 79 70 65 20 63 6F 64 65 73 20 2A 2F 0D 0A -type codes */..
00CE50: 0D 0A 23 64 65 66 69 6E 65 20 41 42 53 20 20 20 ..#define ABS
00CE60: 20 20 20 20 30 09 2F 2A 20 61 62 73 6F 6C 75 74 0./* absolut
00CE70: 65 20 69 74 65 6D 20 2A 2F 0D 0A 23 64 65 66 69 e item */..#defi
00CE80: 6E 65 20 50 52 45 4C 20 20 20 20 20 20 31 09 2F ne PREL 1./
00CE90: 2A 20 70 72 6F 67 72 61 6D 20 28 63 6F 64 65 29 * program (code)
00CEA0: 20 72 65 6C 61 74 69 76 65 20 69 74 65 6D 20 2A relative item *
00CEB0: 2F 0D 0A 23 64 65 66 69 6E 65 20 44 52 45 4C 20 /..#define DREL
00CEC0: 20 20 20 20 20 32 09 2F 2A 20 64 61 74 61 20 72 2./* data r
00CED0: 65 6C 61 74 69 76 65 20 69 74 65 6D 20 2A 2F 0D elative item */.
00CEE0: 0A 23 64 65 66 69 6E 65 20 43 52 45 4C 20 20 20 .#define CREL
00CEF0: 20 20 20 33 09 2F 2A 20 63 6F 6D 6D 6F 6E 20 72 3./* common r
00CF00: 65 6C 61 74 69 76 65 20 69 74 65 6D 20 2A 2F 0D elative item */.
00CF10: 0A 0D 0A 23 64 65 66 69 6E 65 20 45 4E 41 4D 45 ...#define ENAME
00CF20: 20 20 20 20 20 34 09 2F 2A 20 65 6E 74 72 79 20 4./* entry
00CF30: 6E 61 6D 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 name */..#define
00CF40: 20 43 4E 41 4D 45 20 20 20 20 20 35 09 2F 2A 20 CNAME 5./*
00CF50: 63 6F 6D 6D 6F 6E 20 62 6C 6F 63 6B 20 6E 61 6D common block nam
00CF60: 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 50 4E e */..#define PN
00CF70: 41 4D 45 20 20 20 20 20 36 09 2F 2A 20 70 72 6F AME 6./* pro
00CF80: 67 72 61 6D 20 6E 61 6D 65 20 2A 2F 0D 0A 23 64 gram name */..#d
00CF90: 65 66 69 6E 65 20 4C 4E 41 4D 45 20 20 20 20 20 efine LNAME
00CFA0: 37 09 2F 2A 20 6C 69 62 72 61 72 79 20 6E 61 6D 7./* library nam
00CFB0: 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 45 58 e */..#define EX
00CFC0: 54 20 20 20 20 20 20 20 38 09 2F 2A 20 65 78 74 T 8./* ext
00CFD0: 65 6E 73 69 6F 6E 20 6C 69 6E 6B 2D 69 74 65 6D ension link-item
00CFE0: 20 2A 2F 0D 0A 0D 0A 23 64 65 66 69 6E 65 20 43 */....#define C
00CFF0: 53 49 5A 45 20 20 20 20 20 39 09 2F 2A 20 63 6F SIZE 9./* co
00D000: 65 78 74 65 72 6E 20 69 6E 74 0D 0A 20 20 70 61 extern int.. pa
00D010: 73 73 2C 20 62 61 64 73 79 6D 2C 20 67 6F 74 65 ss, badsym, gote
00D020: 70 2C 20 67 6F 74 78 72 2C 20 67 6F 74 6C 61 62 p, gotxr, gotlab
00D030: 65 6C 2C 20 67 6F 74 6E 61 6D 2C 20 6F 70 61 64 el, gotnam, opad
00D040: 6A 2C 0D 0A 20 20 68 61 73 68 76 61 6C 2C 20 6C j,.. hashval, l
00D050: 6F 63 2C 20 6C 69 6E 2C 20 65 72 72 2C 20 65 6E oc, lin, err, en
00D060: 64 76 2C 20 65 6E 64 74 2C 20 6C 65 72 72 2C 20 dv, endt, lerr,
00D070: 73 72 63 66 64 2C 20 65 6F 6D 2C 0D 0A 20 20 6C srcfd, eom,.. l
00D080: 69 73 74 2C 20 6C 6C 69 6E 65 2C 20 70 61 72 74 ist, lline, part
00D090: 31 2C 20 63 63 6E 74 2C 20 6C 70 61 67 65 2C 20 1, ccnt, lpage,
00D0A0: 70 61 75 73 65 2C 20 6C 6F 6F 6B 73 2C 20 6D 69 pause, looks, mi
00D0B0: 74 61 62 6C 65 2C 0D 0A 20 20 6D 69 74 6E 64 78 table,.. mitndx
00D0C0: 5B 5D 2C 20 6D 69 74 6E 78 74 5B 5D 2C 20 6D 69 [], mitnxt[], mi
00D0D0: 74 70 74 72 5B 5D 2C 20 73 74 6D 61 78 2C 20 73 tptr[], stmax, s
00D0E0: 74 6E 2C 20 2A 73 74 70 3B 0D 0A 0D 0A 65 78 74 tn, *stp;....ext
00D0F0: 65 72 6E 20 63 68 61 72 0D 0A 20 2A 65 70 2C 20 ern char.. *ep,
00D100: 2A 6C 70 2C 20 2A 70 72 69 6F 72 2C 20 2A 6D 74 *lp, *prior, *mt
00D110: 2C 20 2A 6D 74 6E 65 78 74 2C 20 2A 6D 74 65 6E , *mtnext, *mten
00D120: 64 2C 20 20 6C 69 6E 65 5B 5D 2C 0D 0A 20 65 78 d, line[],.. ex
00D130: 70 62 75 66 5B 5D 2C 20 73 72 63 66 6E 5B 5D 2C pbuf[], srcfn[],
00D140: 20 6F 62 6A 66 6E 5B 5D 2C 0D 0A 20 2A 73 74 2C objfn[],.. *st,
00D150: 20 2A 73 74 65 6E 64 2C 20 2A 73 74 70 74 72 2C *stend, *stptr,
00D160: 20 73 74 73 79 6D 5B 5D 2C 20 6D 69 74 62 75 66 stsym[], mitbuf
00D170: 5B 5D 3B 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A [];.............
00D180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D1A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D1B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D1C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D1D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D1E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D1F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
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: 6D 6D 6F 6E 20 73 69 7A 65 20 26 20 6E 61 6D 65 mmon size & name
00D310: 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 58 43 48 */..#define XCH
00D320: 41 49 4E 20 20 20 31 30 09 2F 2A 20 65 78 74 65 AIN 10./* exte
00D330: 72 6E 61 6C 2D 72 65 66 65 72 65 6E 63 65 2D 63 rnal-reference-c
00D340: 68 61 69 6E 20 68 65 61 64 20 26 20 6E 61 6D 65 hain head & name
00D350: 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 45 50 4F */..#define EPO
00D360: 49 4E 54 20 20 20 31 31 09 2F 2A 20 65 6E 74 72 INT 11./* entr
00D370: 79 20 70 6F 69 6E 74 20 6C 6F 63 61 74 69 6F 6E y point location
00D380: 20 26 20 6E 61 6D 65 20 2A 2F 0D 0A 0D 0A 23 64 & name */....#d
00D390: 65 66 69 6E 65 20 58 4D 4F 46 46 20 20 20 20 31 efine XMOFF 1
00D3A0: 32 09 2F 2A 20 65 78 74 65 72 6E 61 6C 20 2D 20 2./* external -
00D3B0: 6F 66 66 73 65 74 20 2A 2F 0D 0A 23 64 65 66 69 offset */..#defi
00D3C0: 6E 65 20 58 50 4F 46 46 20 20 20 20 31 33 09 2F ne XPOFF 13./
00D3D0: 2A 20 65 78 74 65 72 6E 61 6C 20 2B 20 6F 66 66 * external + off
00D3E0: 73 65 74 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 set */..#define
00D3F0: 44 53 49 5A 45 20 20 20 20 31 34 09 2F 2A 20 64 DSIZE 14./* d
00D400: 61 74 61 20 61 72 65 61 20 73 69 7A 65 20 2A 2F ata area size */
00D410: 0D 0A 23 64 65 66 69 6E 65 20 53 45 54 4C 43 20 ..#define SETLC
00D420: 20 20 20 31 35 09 2F 2A 20 73 65 74 20 6C 6F 63 15./* set loc
00D430: 61 74 69 6F 6E 20 63 6F 75 6E 74 65 72 20 66 6F ation counter fo
00D440: 72 20 6C 6F 61 64 69 6E 67 20 2A 2F 0D 0A 23 64 r loading */..#d
00D450: 65 66 69 6E 65 20 43 48 41 49 4E 20 20 20 20 31 efine CHAIN 1
00D460: 36 09 2F 2A 20 63 68 61 69 6E 20 61 64 64 72 65 6./* chain addre
00D470: 73 73 20 28 66 69 6C 6C 20 63 68 61 69 6E 20 77 ss (fill chain w
00D480: 69 74 68 20 6C 6F 63 20 63 74 72 29 20 20 2A 2F ith loc ctr) */
00D490: 0D 0A 23 64 65 66 69 6E 65 20 50 53 49 5A 45 20 ..#define PSIZE
00D4A0: 20 20 20 31 37 09 2F 2A 20 70 72 6F 67 72 61 6D 17./* program
00D4B0: 20 28 63 6F 64 65 29 20 73 69 7A 65 20 2A 2F 0D (code) size */.
00D4C0: 0A 23 64 65 66 69 6E 65 20 45 50 52 4F 47 20 20 .#define EPROG
00D4D0: 20 20 31 38 09 2F 2A 20 65 6E 64 20 6F 66 20 70 18./* end of p
00D4E0: 72 6F 67 72 61 6D 20 2A 2F 0D 0A 23 64 65 66 69 rogram */..#defi
00D4F0: 6E 65 20 45 46 49 4C 45 20 20 20 20 31 39 09 2F ne EFILE 19./
00D500: 00 BA C4 2F E7 FB 36 AD 80 9F 16 AC 2A F0 02 21 .../..6.....*..!
00D510: 00 00 18 75 EC 04 42 01 00 1F 16 AC AB 08 02 21 ...u..B........!
00D520: 7F 3F D9 22 10 00 00 44 00 00 30 EE D8 08 84 00 .?."...D..0.....
00D530: 00 11 58 80 16 1D DB 01 66 D6 90 0B 82 00 00 00 ..X.....f.......
00D540: 5C 10 00 08 02 E0 80 00 80 17 04 00 06 00 B8 20 \..............
00D550: 00 40 05 D8 00 02 80 2E C0 00 18 01 76 00 00 E0 .@..........v...
00D560: 0A 3A 02 08 00 51 D0 10 48 02 8E 80 82 80 14 74 .:...Q..H......t
00D570: 04 16 00 A3 A0 20 C0 05 1D 01 06 80 2A 90 08 38 ...£. ......*..8
00D580: 01 63 40 41 E0 00 00 00 55 6E 40 19 22 10 10 01 .c@A....Un@."...
00D590: CA 3E 00 B3 6F 18 13 05 9B 68 00 0F 8B 56 55 F5 .>..o....h...VU.
00D5A0: 01 10 BF 9F EC 91 55 BC 00 11 5A F0 06 4B 14 42 ......U...Z..K.B
00D5B0: 08 00 39 47 C0 16 6D E3 02 60 B3 6F 50 09 F1 6A ..9G..m..`.oP..j
00D5C0: CA A2 80 42 17 F3 FD 82 C9 10 80 00 03 97 58 AA ...B..........X.
00D5D0: FB 00 B3 40 00 01 08 20 00 E5 1F 00 59 B7 8C 09 ...@... ....Y...
00D5E0: 82 CD A1 00 47 C5 AB 2A 9B 01 08 5F CF F6 0B 24 ....G..*..._...$
00D5F0: 55 46 80 9D 62 10 40 01 9A 00 00 3A DC 2E 56 68 UF..b.@....:..Vh
00D600: 00 00 22 A6 E0 42 AB B8 02 C1 64 B1 58 AC 51 08 .."..B....d.X.Q.
00D610: 00 00 39 75 88 40 00 06 6D 1D 02 10 80 80 03 97 ..9u.@..m.......
00D620: 58 AA A3 81 33 6A D0 10 84 06 00 72 8F 80 2C DB X.£.3j.....r..,.
00D630: C6 04 C1 66 D2 A0 23 E2 D5 95 60 00 84 2F E7 FB ...f..#...`../..
00D640: 05 82 C1 64 88 40 80 01 CB AC 55 58 80 99 B5 94 ...d.@....UX....
00D650: 08 42 04 00 0E 4A 85 D6 68 00 00 2B 66 D8 90 21 .B...J..h..+f..!
00D660: 19 F1 6A CA B9 C0 42 10 40 01 CA 3E 00 B3 6F 18 ..j...B.@..>..o.
00D670: 13 05 9B 5C 80 8F 8B 56 55 B7 02 10 BF 9F EC 16 ...\...VU.......
00D680: 0B 05 92 21 00 00 07 25 42 EB 36 C9 01 08 D9 B6 ...!...%B.6.....
00D690: 58 08 56 EB 15 58 60 23 E8 49 87 62 C0 9A 2D 51 X.V..X`#.I.b..-Q
00D6A0: 08 00 00 7D 09 30 5C 2E 56 28 8A E3 81 0A AA 50 ...}.0\.V(.....P
00D6B0: 13 05 82 C1 64 B1 44 20 00 00 8A ED 01 08 40 80 ....d.D ......@.
00D6C0: 01 CB 36 DF 01 1F 16 AC AB 72 06 2A B2 20 27 C5 ..6......r.*. '.
00D6D0: AB 0A 9C 01 8A 80 00 07 28 84 00 00 72 88 40 20 ........(...r.@
00D6E0: 07 28 F8 06 CD 00 00 18 2C 16 0B AC 42 01 00 33 .(......,...B..3
00D6F0: 40 00 03 E2 D5 95 4C 80 C4 36 F8 0D CA 21 00 80 @.....L..6...!..
00D700: 2A 20 65 6E 64 20 6F 66 20 66 69 6C 65 20 2A 2F * end of file */
00D710: 0D 0A 0D 0A 23 64 65 66 69 6E 65 20 4D 41 58 53 ....#define MAXS
00D720: 59 4D 20 20 20 20 36 09 2F 2A 20 6D 61 78 69 6D YM 6./* maxim
00D730: 75 6D 20 73 79 6D 62 6F 6C 20 6C 65 6E 67 74 68 um symbol length
00D740: 20 61 6C 6C 6F 77 65 64 20 69 6E 20 52 45 4C 20 allowed in REL
00D750: 66 69 6C 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 file */..#define
00D760: 20 4F 4E 45 53 20 20 20 20 20 2D 31 09 2F 2A 20 ONES -1./*
00D770: 61 6C 6C 20 6F 6E 65 20 62 69 74 73 20 2A 2F 0D all one bits */.
00D780: 0A 0D 0A 09 09 09 2F 2A 20 63 6F 6D 6D 6F 6E 20 ....../* common
00D790: 76 61 72 69 61 62 6C 65 73 20 2A 2F 0D 0A 65 78 variables */..ex
00D7A0: 74 65 72 6E 20 69 6E 74 0D 0A 20 69 6E 72 65 6C tern int.. inrel
00D7B0: 2C 09 09 09 2F 2A 20 66 69 6C 65 20 64 65 73 63 ,.../* file desc
00D7C0: 72 69 70 74 6F 72 20 66 6F 72 20 69 6E 70 75 74 riptor for input
00D7D0: 20 52 45 4C 20 66 69 6C 65 20 2A 2F 0D 0A 20 69 REL file */.. i
00D7E0: 6E 72 65 6D 2C 09 09 09 2F 2A 20 72 65 6D 61 69 nrem,.../* remai
00D7F0: 6E 69 6E 67 20 62 69 74 73 20 69 6E 20 69 6E 63 ning bits in inc
00D800: 68 75 6E 6B 20 2A 2F 0D 0A 20 69 6E 63 68 75 6E hunk */.. inchun
00D810: 6B 2C 09 09 2F 2A 20 63 75 72 72 65 6E 74 20 63 k,../* current c
00D820: 68 75 6E 6B 20 66 72 6F 6D 20 52 45 4C 20 66 69 hunk from REL fi
00D830: 6C 65 20 2A 2F 0D 0A 20 6F 75 74 72 65 6C 2C 09 le */.. outrel,.
00D840: 09 2F 2A 20 66 69 6C 65 20 64 65 73 63 72 69 70 ./* file descrip
00D850: 74 6F 72 20 66 6F 72 20 6F 75 74 70 75 74 20 52 tor for output R
00D860: 45 4C 20 66 69 6C 65 20 2A 2F 0D 0A 20 6F 75 74 EL file */.. out
00D870: 72 65 6D 2C 09 09 2F 2A 20 72 65 6D 61 69 6E 69 rem,../* remaini
00D880: 6E 67 20 62 69 74 73 20 69 6E 20 6F 75 74 63 68 ng bits in outch
00D890: 75 6E 6B 20 2A 2F 0D 0A 20 6F 75 74 63 68 75 6E unk */.. outchun
00D8A0: 6B 2C 09 09 2F 2A 20 63 75 72 72 65 6E 74 20 63 k,../* current c
00D8B0: 68 75 6E 6B 20 66 6F 72 20 52 45 4C 20 66 69 6C hunk for REL fil
00D8C0: 65 20 2A 2F 0D 0A 20 69 74 65 6D 2C 09 09 09 2F e */.. item,.../
00D8D0: 2A 20 63 75 72 72 65 6E 74 20 69 74 65 6D 20 63 * current item c
00D8E0: 6F 64 65 20 2A 2F 0D 0A 20 74 79 70 65 2C 09 09 ode */.. type,..
00D8F0: 09 2F 2A 20 74 79 70 65 20 66 69 65 6C 64 20 2A ./* type field *
00D900: 1C A3 E0 13 34 00 00 60 B0 44 20 00 03 05 92 21 .£..4..`.D ....!
00D910: 04 00 04 57 DC 08 42 04 00 0E 59 B7 BC 09 D6 2A ...W..B...Y....*
00D920: A6 C0 6C D0 00 00 F8 B5 65 55 90 31 08 00 00 39 ..l.....eU.1...9
00D930: 75 8A AA 08 1B 36 E1 01 30 EB 40 18 84 00 00 1C u....6..0.@.....
00D940: BA C4 20 40 00 E5 9B 4F 40 D9 B5 50 0C 42 04 00 .. @...O@..P.B..
00D950: 0E 5C AC DA C6 06 EB 60 B8 5C AC 56 68 00 00 D1 .\.....`.\.Vh...
00D960: 66 D6 60 31 55 51 03 75 B8 5C AC DA EC 06 22 AF f.`1UQ.u.\....".
00D970: A0 62 AB D0 04 EB 70 B9 59 B4 F8 09 CA 2A A0 60 .b....p.Y....*.`
00D980: 6E B1 55 86 03 66 80 00 0E 51 08 10 00 39 66 D6 n.U..f...Q...9f.
00D990: E0 30 8B FD FE CD B1 E0 6C D0 00 01 A2 CD 00 00 .0......l.......
00D9A0: 1A 21 91 15 89 03 61 DE A0 21 08 04 00 C1 64 82 .!....a..!....d.
00D9B0: 80 E2 D1 01 04 C4 6E 37 9C 8D A6 13 60 80 8A 6E ......n7....`..n
00D9C0: 32 08 0D E6 61 01 48 8A 4C 10 11 8D 26 C3 28 28 2...a.H.L...&.((
00D9D0: 01 19 AF 03 A8 68 68 29 C8 91 9A 80 3A 86 86 82 .....hh)....:...
00D9E0: A6 99 19 9A 03 A8 68 68 2A 6A 51 9A B0 3A 86 86 ......hh*jQ..:..
00D9F0: 86 9E 9B 19 6B 01 88 68 68 AA 31 9A 20 3C 86 86 ....k..hh.1. <..
00DA00: 8E 92 9C A9 19 44 03 88 68 68 EA 91 9A 90 2C 86 .....D..hh....,.
00DA10: 86 98 9C 8A 8F 19 17 03 88 68 69 C8 B1 94 40 28 .........hi...@(
00DA20: 86 86 9E A5 19 7A 03 C8 68 6A 09 29 CA 91 98 30 .....z..hj.)...0
00DA30: 3A 86 86 A6 AA 85 19 97 01 C8 68 6A 6A E9 2A 91 :.........hjj.*.
00DA40: 9B 40 3A 8C 92 8A 98 89 19 29 03 A8 CA 0A AA 8A .@:......)......
00DA50: 71 DE 30 2C 8E 8A A8 84 92 A9 1D FC 01 C8 E8 AA q.0,............
00DA60: 88 C9 88 91 D0 00 0C 8E 8A A8 A4 8A 99 1D 95 00 ................
00DA70: C8 E8 AA 8A 6A 08 B1 D4 E0 2C 8E 8A A8 A6 B2 9B ....j....,......
00DA80: 1D DF 01 C8 E8 AA 8A 8B 2A 11 99 30 3C 92 9C 86 ........*..0<...
00DA90: 90 AA 9D 19 FF 02 A9 29 CA 48 A9 91 99 70 3A 92 .......).H...p:.
00DAA0: 9C A4 8A 9B 19 DD 02 89 2A 88 A9 B1 80 00 0C 9E ........*.......
00DAB0: AA A8 86 90 AB 18 00 00 C9 EA AA 8A 48 A9 91 80 ............H...
00DAC0: 00 0C 9E AA A8 A4 8A 9B 19 0D 03 8A 48 A8 28 91 ............H.(.
00DAD0: 95 70 2C A6 B2 9A 84 9E 99 19 F9 01 8A 8B 2A 08 .p,...........*.
00DAE0: B3 80 00 00 84 D2 53 95 20 64 74 55 44 94 E5 48 ......S. dtUD..H
00DAF0: 19 41 55 51 25 39 52 50 00 01 35 18 00 60 B8 5C .AUQ%9RP..5..`.\
00DB00: 2F 0D 0A 20 66 69 65 6C 64 3B 09 09 09 2F 2A 20 /.. field;.../*
00DB10: 63 75 72 72 65 6E 74 20 62 69 74 20 66 69 65 6C current bit fiel
00DB20: 64 20 2A 2F 0D 0A 65 78 74 65 72 6E 20 63 68 61 d */..extern cha
00DB30: 72 0D 0A 20 73 79 6D 62 6F 6C 5B 39 5D 3B 09 09 r.. symbol[9];..
00DB40: 2F 2A 20 63 75 72 72 65 6E 74 20 73 74 72 69 6E /* current strin
00DB50: 67 20 2A 2F 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A g */............
00DB60: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00DB70: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00DB80: 0A 0D 0A 09 09 09 2F 2A 20 63 6F 6D 6D 6F 6E 20 ....../* common
00DB90: 76 61 72 69 61 62 6C 65 73 20 2A 2F 0D 0A 65 78 variables */..ex
00DBA0: 74 65 72 6E 20 69 6E 74 0D 0A 20 69 6E 72 65 6C tern int.. inrel
00DBB0: 2C 09 09 09 2F 2A 20 66 69 6C 65 20 64 65 73 63 ,.../* file desc
00DBC0: 72 69 70 74 6F 72 20 66 6F 72 20 69 6E 70 75 74 riptor for input
00DBD0: 20 52 45 4C 20 66 69 6C 65 20 2A 2F 0D 0A 20 69 REL file */.. i
00DBE0: 6E 72 65 6D 2C 09 09 09 2F 2A 20 72 65 6D 61 69 nrem,.../* remai
00DBF0: 6E 69 6E 67 20 62 69 74 73 20 69 6E 20 69 6E 63 ning bits in inc
00DC00: 68 75 6E 6B 20 2A 2F 0D 0A 20 69 6E 63 68 75 6E hunk */.. inchun
00DC10: 6B 2C 09 09 2F 2A 20 63 75 72 72 65 6E 74 20 63 k,../* current c
00DC20: 68 75 6E 6B 20 66 72 6F 6D 20 52 45 4C 20 66 69 hunk from REL fi
00DC30: 6C 65 20 2A 2F 0D 0A 20 6F 75 74 72 65 6C 2C 09 le */.. outrel,.
00DC40: 09 2F 2A 20 66 69 6C 65 20 64 65 73 63 72 69 70 ./* file descrip
00DC50: 74 6F 72 20 66 6F 72 20 6F 75 74 70 75 74 20 52 tor for output R
00DC60: 45 4C 20 66 69 6C 65 20 2A 2F 0D 0A 20 6F 75 74 EL file */.. out
00DC70: 72 65 6D 2C 09 09 2F 2A 20 72 65 6D 61 69 6E 69 rem,../* remaini
00DC80: 6E 67 20 62 69 74 73 20 69 6E 20 6F 75 74 63 68 ng bits in outch
00DC90: 75 6E 6B 20 2A 2F 0D 0A 20 6F 75 74 63 68 75 6E unk */.. outchun
00DCA0: 6B 2C 09 09 2F 2A 20 63 75 72 72 65 6E 74 20 63 k,../* current c
00DCB0: 68 75 6E 6B 20 66 6F 72 20 52 45 4C 20 66 69 6C hunk for REL fil
00DCC0: 65 20 2A 2F 0D 0A 20 69 74 65 6D 2C 09 09 09 2F e */.. item,.../
00DCD0: 2A 20 63 75 72 72 65 6E 74 20 69 74 65 6D 20 63 * current item c
00DCE0: 6F 64 65 20 2A 2F 0D 0A 20 74 79 70 65 2C 09 09 ode */.. type,..
00DCF0: 09 2F 2A 20 74 79 70 65 20 66 69 65 6C 64 20 2A ./* type field *
00DD00: AC 56 68 00 00 C9 10 81 00 03 96 6D 05 00 75 B0 .Vh........m..u.
00DD10: 5C 2E 56 2B 34 00 00 64 C6 43 40 32 1A 1A 3A 4A \.V+4..d.C@2..:J
00DD20: 72 A4 64 54 03 21 A1 A8 24 A7 2A 47 40 00 32 3A r.dT.!..$.*G@.2:
00DD30: 2A A2 4A 72 A4 74 20 03 28 2A AA 24 A7 2A 4E 00 *.Jr.t .(*.$.*N.
00DD40: 00 00 85 13 51 54 D4 E0 55 05 55 45 33 28 11 0D ....QT..U.UE3(..
00DD50: 05 39 52 06 45 52 52 4F 52 32 81 51 54 94 93 D4 .9R.ERROR2.QT...
00DD60: A5 00 00 13 56 50 01 08 10 00 39 66 80 00 0E 51 ....VP....9f...Q
00DD70: 08 04 00 E5 66 80 00 0C 16 0B 05 C2 E5 62 B9 59 ....f........b.Y
00DD80: A0 00 03 05 92 C1 70 B9 58 AE 51 0D 2A 00 72 B3 ......p.X.Q.*.r.
00DD90: 69 C0 03 05 82 C9 10 0B 44 06 33 09 B8 4E 74 10 i.......D.3..Nt.
00DDA0: 1B CE 06 53 70 00 42 04 00 0E 59 B4 14 01 CA 21 ...Sp.B...Y....!
00DDB0: 00 80 1C AC DA 1A 00 C1 60 B0 5C 2E 56 2B 95 9B ........`.\.V+..
00DDC0: 54 C0 18 2C 96 0B 85 CA C5 72 B3 68 B8 03 04 42 T..,.....r.h...B
00DDD0: 07 00 39 59 A0 00 03 05 93 19 61 00 A8 28 49 EA ..9Y......a..(I.
00DDE0: 4A 91 D1 B0 08 86 82 9C A9 19 3D 00 C8 68 68 E9 J.........=..hh.
00DDF0: 29 CA 91 D5 30 0A 8A A4 A4 9E A5 1D 38 00 C8 AA )...0.......8...
00DE00: 4A 49 EA 46 51 94 50 0A 8C A0 AA A8 A7 19 59 00 JI.FQ.P.......Y.
00DE10: 8A 0A AA 8A 71 D0 00 0A A0 AA A8 A6 65 38 00 00 ....q.......e8..
00DE20: 84 D3 52 55 20 54 F5 04 14 44 A8 19 21 05 4D 21 ..RU T...D..!.M!
00DE30: 59 06 06 45 58 50 42 55 46 81 12 10 54 D2 20 44 Y..EXPBUF...T. D
00DE40: 64 94 E4 48 15 35 05 51 0D 22 50 00 01 35 33 05 d..H.5.Q."P..53.
00DE50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00DE60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00DE70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00DE80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00DE90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00DEA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00DEB0: 84 00 00 11 50 20 01 08 10 00 39 66 80 00 0C D0 ....P ....9f....
00DEC0: 00 01 D6 21 10 00 19 A0 00 01 F1 6A CA B2 80 02 ...!.......j....
00DED0: 10 20 00 72 CD AC 00 0C DA C6 00 E5 1F 00 59 A0 . .r..........Y.
00DEE0: 00 03 05 D6 21 00 00 19 A0 00 01 F1 6A CA B2 80 ....!.......j...
00DEF0: 02 10 08 01 87 65 C0 04 20 00 01 F1 6A CA B8 E0 .....e.. ...j...
00DF00: 85 91 56 15 11 53 91 20 64 55 85 44 54 E4 49 40 ..V..S. dU.DT.I@
00DF10: 00 04 D7 44 01 8A 21 00 00 07 2E 51 08 28 00 39 ...D..!....Q.(.9
00DF20: 66 80 00 0E 51 08 B8 00 E5 66 80 00 0C 16 0B 45 f...Q....f.....E
00DF30: 9A 00 00 1F 16 AC AA DA 00 E1 72 B9 44 20 60 00 ..........r.D `.
00DF40: E5 9B 42 C0 1C AC D0 00 01 82 C1 3E 2D 58 54 E8 ..B........>-XT.
00DF50: 00 42 01 00 30 59 2E 17 2B 94 42 08 00 0E 59 B4 .B..0Y..+.B...Y.
00DF60: A0 01 CA CD A5 80 0C 16 09 F1 6A C2 AA 80 02 10 ..........j.....
00DF70: 00 01 82 C9 10 82 00 03 96 6D 42 00 72 88 6D 80 .........mB.r.m.
00DF80: 03 95 9A 00 00 30 58 22 10 38 01 CA CD 00 00 18 .....0X".8......
00DF90: 22 10 40 00 72 CD AB 20 0E 56 68 00 00 C1 75 88 ".@.r.. .Vh...u.
00DFA0: 41 60 06 68 00 00 7C 5A B2 AC B0 00 84 10 00 1C A`.h..|Z........
00DFB0: B3 6B 90 03 94 43 71 40 1C AC D0 00 01 82 C1 10 .k...Cq@........
00DFC0: 82 00 03 96 6D 8A 00 72 88 41 00 01 CB 36 CD 80 ....m..r.A...6..
00DFD0: 39 59 A0 00 03 05 82 21 00 00 18 2C 91 00 B4 40 9Y.....!...,...@
00DFE0: 69 37 1D 8C 26 C3 49 90 40 65 3C 1D 0C A6 E3 99 i7..&.I.@e<.....
00DFF0: A4 DE 6E 00 08 05 A2 03 A1 BC DE 20 36 1B CD C6 ..n........ 6...
00E000: 70 04 65 A8 02 A0 A1 27 A9 2A 46 68 C0 32 1A 1A p.e....'.*Fh.2..
00E010: 3A 4A 72 A4 65 F8 02 21 A1 A3 AA 46 46 40 32 1A :Jr.e..!.£.FF@2.
00E020: 1A 82 4A 72 A4 66 48 03 22 A9 29 27 A9 19 47 40 ..Jr.fH.".)'..G@
00E030: 00 32 2A C2 A2 2A 72 24 65 84 02 A8 2A AA 29 99 .2*..*r$e...*.).
00E040: 46 69 C0 32 9A A2 92 1A 0A A4 64 4C 03 29 AA 29 Fi.2......dL.).)
00E050: 21 A4 29 46 51 80 32 9A A2 92 1A 6A 84 65 D8 03 !.)FQ.2....j.e..
00E060: 29 AA 29 26 22 A7 4E 00 00 00 85 11 92 53 11 60 ).)&".N......S.`
00E070: 44 F5 04 54 E8 15 0D 31 3D 4D 16 50 00 01 35 59 D..T...1=M.P..5Y
00E080: 00 62 88 40 00 01 CB 94 42 08 00 0E 59 A0 00 03 .b.@....B...Y...
00E090: 94 42 08 00 0E 59 B4 2C 01 CA CD 00 00 18 2C 16 .B...Y.,......,.
00E0A0: 8B 34 00 00 3E 2D 59 54 A0 01 C2 E5 60 B2 44 20 .4..>-YT....`.D
00E0B0: 60 00 E5 9B 44 C0 1C AC D0 00 01 82 C1 64 B0 5C `...D........d.\
00E0C0: 2E 56 2B 95 9A 00 00 30 4F 8B 56 55 4C 00 10 D4 .V+....0O.VUL...
00E0D0: D0 07 2B 34 00 00 60 B2 4C 66 C3 79 CC CA 20 32 ..+4..`.Lf.y.. 2
00E0E0: 9C 8E 46 F3 90 02 32 62 01 10 D0 53 95 23 25 A0 ..F...2b...S.#%.
00E0F0: 19 0D 0D 1D 25 39 52 32 3A 01 90 D0 D4 12 53 95 ....%9R2:.....S.
00E100: 02 AA 04 00 EB 10 80 40 0C D0 00 01 CA 21 03 00 .......@.....!..
00E110: 07 25 42 EB 36 BB 00 08 D9 A0 00 00 AD 9B 5E 40 .%B.6.........^@
00E120: 1C A3 E0 0B 34 00 00 60 B4 43 22 2A 04 00 C3 AB .£..4..`.C"*....
00E130: 60 02 AA 04 00 EB 60 B8 5C AC 56 68 00 00 EB 64 `.....`.\.Vh...d
00E140: B1 58 AC 51 08 00 00 22 00 00 04 20 00 00 E5 CA .X.Q..."... ....
00E150: 21 00 00 1C A2 10 30 00 72 E5 10 83 80 03 96 6D !.....0.r......m
00E160: AE 00 72 88 52 C0 07 28 F8 04 CD AA A0 0C 16 0B ..r.R..(........
00E170: 45 9B 6C 80 1A 22 90 CB 36 F8 00 34 59 B4 00 05 E.l.."..6..4Y...
00E180: A2 D5 10 BF DF EC D0 00 00 F8 B5 65 54 80 21 55 ...........eT.!U
00E190: DB 00 11 88 A8 D0 08 84 10 00 1C B3 68 30 0B 94 ............h0..
00E1A0: 42 06 00 0E 5C A2 10 00 01 D6 21 02 00 07 2C DA B...\.....!...,.
00E1B0: 4A 02 29 0C B3 69 B0 0B 45 9B 42 80 5C A3 E0 13 J.)..i..E.B.\£..
00E1C0: 34 00 00 60 B0 4F 8B 56 15 00 02 10 82 00 03 97 4..`.O.V........
00E1D0: 28 84 04 00 72 88 41 80 01 CB 36 9D 80 B9 47 C0 (...r.A...6...G.
00E1E0: 26 68 00 00 C1 60 B4 59 B4 FC 04 42 04 00 0E 5C &h...`.Y...B...\
00E1F0: AC DA B8 02 E5 10 82 00 03 96 6D 70 01 72 8F 80 ..........mp.r..
00E200: 2C D0 00 01 82 11 00 80 03 2D 10 CB 45 9B 5A 00 ,........-..E.Z.
00E210: 44 20 40 00 E4 A8 5D 66 D7 80 11 1B 36 C4 80 8A D @...]f....6...
00E220: D9 B6 D8 00 F8 B5 65 5F 90 11 55 1E 01 11 88 AD ......e_..U.....
00E230: 10 08 84 10 00 1C B3 6C 90 0B 94 42 06 00 0E 59 .......l...B...Y
00E240: B6 B4 05 CA 3E 00 B3 40 00 06 0B 94 7C 02 66 D4 ....>..@....|.f.
00E250: F0 26 0B 04 F8 B5 65 5D 60 11 08 10 00 39 66 DB .&....e]`....9f.
00E260: 50 16 0B 05 82 C9 10 81 00 03 97 2B 36 E8 00 B9 P..........+6...
00E270: 44 20 80 00 E5 9B 77 00 5D 62 10 08 01 9A 00 00 D ....w.]b......
00E280: 33 6C D0 0B 44 32 D1 66 D9 60 16 1D 8B 01 10 80 3l..D2.f.`......
00E290: 00 0C 16 0B 05 92 21 01 00 07 2E 51 08 00 00 EB ......!....Q....
00E2A0: 10 81 00 03 96 6D E4 01 14 86 59 B4 38 09 A2 CD .....m....Y.8...
00E2B0: BE 80 2E B1 0B FD FE CD B0 E0 07 C5 AB 2A 96 01 .............*..
00E2C0: 08 40 00 06 0B 05 82 C9 10 80 00 03 97 28 86 F1 .@...........(..
00E2D0: 80 3A C4 20 40 00 E5 9B 44 C0 85 21 96 6D 3A 02 .:. @...D..!.m:.
00E2E0: 68 B3 68 B8 13 0E 86 00 88 40 00 06 0B 05 82 C9 h.h......@......
00E2F0: 62 B1 58 A2 10 00 00 45 40 00 04 20 40 00 E5 D6 b.X....E@.. @...
00E300: 23 A6 C0 15 0D 31 3D 4D 16 32 92 01 51 54 94 93 #....1=M.2..QT..
00E310: D4 A3 27 80 19 19 0D 31 3D 4D 16 32 2E 01 51 93 .£'....1=M.2..Q.
00E320: D4 11 53 A3 A0 00 11 3D 41 15 3A 70 00 00 85 91 ..S£...=A.:p....
00E330: D1 55 14 91 53 20 64 74 55 45 24 54 C8 19 1D 15 .U..S dtUE$T....
00E340: 51 09 25 52 06 47 45 54 53 50 45 81 91 D1 55 11 Q.%R.GETSPE...U.
00E350: 93 11 20 64 74 55 45 35 94 D8 19 1D 15 51 51 65 .. dtUE5.....QQe
00E360: 42 50 00 01 35 DC 03 10 80 40 0E 51 F0 05 9B 78 BP..5....@.Q...x
00E370: C0 98 2C D0 00 00 F8 B5 65 51 60 01 0B F9 FE C9 ..,.....eQ`.....
00E380: 15 00 00 07 C5 AB 0A 9F 00 08 41 00 07 28 F8 02 ..........A..(..
00E390: CD BC 60 4C 16 6D 0B 00 3E 2D 59 54 D0 00 42 FE ..`L.m..>-YT..B.
00E3A0: 7F B2 44 20 00 00 88 00 00 11 00 00 0C 91 08 08 ..D ............
00E3B0: 00 E5 1F 00 59 B7 8C 09 82 CD A5 20 07 C5 AB 2A ....Y...... ...*
00E3C0: AA 00 08 5F CF F6 48 AA 8B 80 08 A9 C0 00 8A 9D ..._..H.........
00E3D0: 80 30 EB 40 02 BD 9B 65 40 19 2C 3A FA 00 CD 00 .0.@...e@.,:....
00E3E0: 00 2B 00 00 00 01 59 40 00 20 0A CA 00 02 00 56 .+....Y@. .....V
00E3F0: 50 00 18 00 00 00 57 B3 6F E0 0B AC 42 FE 7F B3 P.....W.o...B...
00E400: 40 00 03 E2 D5 95 64 40 04 2F E7 FB 24 55 56 00 @.....d@./..$UV.
00E410: 19 22 10 20 01 CA 3E 00 B3 6F 18 13 05 9B 52 40 .". ..>..o....R@
00E420: 0F 8B 56 55 AB 00 10 BF 9F EC 91 08 00 00 22 AB ..VU..........".
00E430: 60 02 AA AA 00 11 02 00 03 22 2B 24 00 2A B6 40 `........"+$.*.@
00E440: 0C 3B 2C 02 AF 66 D4 E0 27 58 85 FC FF 66 D8 60 .;,..f..'X...f.`
00E450: 03 E2 D5 95 75 40 04 2F E7 FB 25 87 76 C0 55 EC ....u@./..%.v.U.
00E460: DB BE 02 EB 10 BF 9F EC DB 94 00 7C 5A B0 A8 70 ...........|Z..p
00E470: 0A BD 9B 7F 00 5D 62 17 F3 FD 9B 78 40 0F 8B 56 .....]b....x@..V
00E480: 15 0E 01 57 B3 6A 70 13 AC 42 FE 7F B3 6F 88 01 ...W.jp..B...o..
00E490: F1 6A C2 A1 C0 22 10 00 01 87 44 40 44 20 10 01 .j..."....D@D ..
00E4A0: F1 6A CA A3 40 22 17 F3 FD 92 C3 BB 60 2A F6 6D .j.£@"......`*.m
00E4B0: DF 01 75 88 5F CF F6 6D 01 01 3E 2D 58 55 0C 05 ..u._..m..>-XU..
00E4C0: 5E CD BF 80 2E B1 0B F9 FE CD A4 C0 27 C5 AB 0A ^...........'...
00E4D0: A1 80 88 40 00 06 1D 46 01 10 80 40 07 C5 AB 2A ...@...F...@...*
00E4E0: A7 80 88 5F CF F6 4B 0E ED 80 AB D9 B7 7C 05 D6 ..._..K......|..
00E4F0: 21 7F 3F D9 B4 D8 04 F8 B5 61 57 80 15 7B 36 FE !.?......aW..{6.
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: 21 05 00 07 2C DA 7E 04 CD A8 60 42 10 40 00 72 !...,.~...`B.@.r
00E610: CD AC 40 47 C5 AB 0A CB 81 08 41 40 01 CB 36 B6 ..@G......A@..6.
00E620: 01 33 6F 70 0B 94 7C 01 66 D7 F0 06 09 F1 6A CA .3op..|.f.....j.
00E630: B2 00 42 10 08 01 82 C1 60 B2 44 20 00 03 05 82 ..B.....`.D ....
00E640: C1 64 88 40 40 01 CB AC 43 41 00 19 B5 94 08 42 .d.@@...CA.....B
00E650: 0A 00 0E 59 B5 E0 09 9B 5E C0 9C A3 E0 0B 34 00 ...Y....^..£..4.
00E660: 00 60 9F 16 AC AB 90 04 21 05 00 07 25 42 EB 36 .`......!...%B.6
00E670: D3 81 08 D9 B6 80 09 87 68 80 84 20 80 00 E5 9B ........h.. ....
00E680: 6F C0 99 B6 A8 09 CA 3E 00 B3 6D 80 13 04 F8 B5 o......>..m.....
00E690: 65 5E E0 21 08 20 00 39 2A 17 59 B7 34 08 46 CD e^.!. .9*.Y.4.F.
00E6A0: B8 60 4C 3B 90 04 21 05 00 07 2C DB CA 04 CD BA .`L;..!...,.....
00E6B0: 00 4E 51 F0 05 9B 60 40 98 27 C5 AB 2A A4 01 88 .NQ...`@.'..*...
00E6C0: 41 00 01 CB 36 F9 81 33 6F B0 13 94 7C 01 66 DF A...6..3o...|.f.
00E6D0: C0 26 09 F1 6A C2 A6 C0 62 10 40 00 72 CD A1 20 .&..j...b.@.r..
00E6E0: 6C DA 18 06 EB 10 9F 00 0C DA 3C 04 7C 5A B0 A9 l.........<.|Z..
00E6F0: B0 18 84 00 00 61 D3 90 31 08 04 00 7C 5A B2 AA .....a..1...|Z..
00E700: 28 18 84 02 00 60 B0 58 2C 96 1D A9 04 10 82 00 (....`.X,.......
00E710: 03 96 6D 1F 03 66 D2 20 37 28 F8 02 CD A2 40 6C ..m..f. 7(....@l
00E720: 13 E2 D5 95 59 40 C4 20 00 03 05 82 C1 64 88 41 ....Y@. .....d.A
00E730: 00 01 CB 36 A6 81 B3 6A 80 1B 94 7C 01 66 80 00 ...6...j...|.f..
00E740: 0C 13 E2 D5 95 5E 41 04 20 80 00 E4 A8 5D 66 D6 .....^A. ....]f.
00E750: A0 31 1B 36 F4 81 08 40 00 01 CB AC 42 00 00 33 .1.6...@....B..3
00E760: 6C 30 18 84 14 00 1C B3 6C 10 1B 36 B6 81 B9 47 l0......l..6...G
00E770: C0 16 6D 56 03 60 B3 40 00 03 E2 D5 95 56 41 04 ..mV.`.@.....VA.
00E780: 20 A0 00 E5 9B 66 00 D9 B6 6C 0D D6 21 16 00 19 ....f...l..!...
00E790: B4 A4 0C F8 B5 65 5C 50 36 1D 59 04 10 82 80 03 .....e\P6.Y.....
00E7A0: 96 6D B1 03 66 DB 40 37 58 84 52 00 66 DB B0 33 .m..f.@7X.R.f..3
00E7B0: E2 D5 95 7B 80 DA 2D 51 08 00 00 CD BA 80 67 C5 ...{..-Q......g.
00E7C0: AB 2A F7 01 88 40 20 06 1D F1 03 10 80 00 07 C5 .*...@ .........
00E7D0: AB 2A FC 81 B0 EA C8 20 84 14 00 1C B3 6E 50 1B .*..... .....nP.
00E7E0: 36 E6 81 B0 E9 30 20 84 00 00 1C 95 0B AC DB FC 6....0 .........
00E7F0: 06 23 66 D9 10 36 1D 33 04 10 80 00 03 92 A1 75 .#f..6.3.......u
00E800: 99 18 00 00 A9 29 CA 48 A9 B1 9F A0 08 92 A8 8A .....).H........
00E810: 9B 19 E7 03 C9 EA AA 88 69 0A B1 9E 30 3C 9E AA ........i...0<..
00E820: A8 A4 8A 99 19 1A 04 C9 EA AA 8A 48 A9 B1 D3 B0 ...........H....
00E830: 3C A0 AA A8 84 92 A9 1D 5A 02 CA 0A AA 88 C9 88 <.......Z.......
00E840: 91 D0 00 0C A0 AA A8 A4 8A 99 1D 9F 02 CA 0A AA ................
00E850: 8A 6B 29 B1 D3 E0 2C A0 AA A8 A8 B2 A1 19 AD 02 .k)...,.........
00E860: CA 6A 8A 49 88 A9 D1 9E F0 2C A6 B2 9A 84 9E 99 .j.I.....,......
00E870: 19 3F 02 8A 8B 2A 08 B1 9F 10 3A AE A4 92 A8 8B .?...*....:.....
00E880: 38 00 00 84 D4 91 53 20 54 94 E5 24 54 C8 15 25 8.....S T..$T..%
00E890: 39 49 15 36 06 49 4E 43 48 55 4E 81 93 D5 55 14 9I.6.INCHUN...U.
00E8A0: 91 53 20 64 F5 55 45 24 54 D8 19 3D 55 51 0D 21 .S d.UE$T..=UQ.!
00E8B0: 56 04 49 54 45 4D 81 15 16 54 11 60 54 64 94 54 V.ITEM...T.`Td.T
00E8C0: C4 48 19 4D 65 35 09 3D 32 50 00 01 35 1B 00 00 .H.Me5.=2P..5...
00E8D0: 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ................
00E8E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 11 D1 00 ................
00E8F0: 0A 8C 92 8A 98 89 1D 04 00 C9 29 C8 69 0A A9 D1 ..........).i...
00E900: D0 00 0A 92 9C A4 8A 99 1D 02 00 A9 29 CA 48 A9 ............).H.
00E910: B1 D0 C0 08 92 A8 8A 9B 1D 0A 00 C9 EA AA 88 69 ...............i
00E920: 0A B1 D0 60 0C 9E AA A8 A4 8A 99 1D 08 00 C9 EA ...`............
00E930: AA 8A 48 A9 B1 D1 20 0C A6 B2 9A 84 9E 99 1D 0E ..H... .........
00E940: 00 8A 8B 2A 08 B3 80 00 00 84 D4 91 54 60 65 24 ...*........T`e$
00E950: 55 14 E4 25 28 19 1D 15 51 4D 51 4A 06 52 45 51 U..%(...QMQJ.REQ
00E960: 53 54 52 94 00 00 4D 72 00 44 2E A7 F8 E5 F2 21 STR...Mr.D.....!
00E970: 00 00 1C A3 E0 0B 34 00 00 60 9F 16 AC AA 62 00 ...£..4..`....b.
00E980: 21 B3 C0 0E 51 F0 05 9A 00 00 30 44 21 A0 00 E5 !...Q.....0D!...
00E990: 9A 00 00 39 44 20 10 03 94 7C 02 66 80 00 0C 16 ...9D ...|.f....
00E9A0: 08 84 04 00 1C B9 44 21 40 03 94 7C 02 66 DE E0 ......D!@..|.f..
00E9B0: 06 0B 04 42 00 00 0E 5C A2 10 20 00 72 E5 10 87 ...B...\.. .r...
00E9C0: 00 03 96 6D 23 00 72 8F 80 4C D0 00 01 82 C1 68 ...m#.r..L.....h
00E9D0: B3 40 00 07 58 84 00 00 66 80 00 07 C5 AB 0A C0 .@..X...f.......
00E9E0: 00 08 40 40 01 CB AD C2 E5 0C B3 40 00 03 E2 D5 ..@@.......@....
00E9F0: 85 60 00 04 20 00 03 0E C1 80 08 40 20 03 E2 D5 .`.. ......@ ...
00EA00: 9B 43 41 05 6C DA 22 08 C3 A6 60 8C D0 00 02 83 .CA.l."...`.....
00EA10: 02 0A 00 14 58 10 52 00 00 00 04 20 20 00 E4 A8 ....X.R.... ...
00EA20: 5D 66 D1 D0 41 1B 36 90 82 0A DC A2 10 60 00 72 ]f..A.6......`.r
00EA30: 54 2E B3 69 D0 20 8D 9B 4F 81 05 6C DA 02 08 D1 T..i. ..O..l....
00EA40: 3E 84 98 76 4C 0C 42 02 00 0E 4A 85 D6 6D 49 04 >..vL.B...J..mI.
00EA50: 11 B3 6A 68 20 AD D6 21 16 00 0F A1 26 0B 45 AA ..jh ..!....&.E.
00EA60: C5 10 80 00 07 D0 93 0E D1 01 08 41 40 01 C9 50 ...........A@..P
00EA70: BA CD AC 00 82 36 6D 64 04 15 B3 6A 88 23 94 42 .....6md...j.#.B
00EA80: 0A 00 0E 4A 85 D6 6D 80 04 11 B3 6C 20 20 AD 9B ...J..m....l ..
00EA90: 62 01 1C A3 E0 13 34 00 00 60 B0 4F 8B 56 55 2C b..£..4..`.O.VU,
00EAA0: 05 10 82 00 03 96 6D 92 04 66 D9 A0 43 E2 D5 95 ......m..f..C...
00EAB0: 43 C1 44 20 80 00 E5 9B 6B 81 19 B6 C4 11 D6 21 C.D ....k......!
00EAC0: 3E 00 19 B7 84 0C F8 B5 65 5F F0 41 55 00 00 11 >.......e_.AU...
00EAD0: 88 A8 00 00 84 10 00 1C 95 0B AC DB 7A 08 23 66 ............z.#f
00EAE0: D9 60 41 08 28 00 39 75 88 40 80 01 CB 36 EE 02 .`A.(.9u.@...6..
00EAF0: 33 6F 00 20 84 04 00 1C BA C4 34 10 01 9B 7B C1 3o. ......4...{.
00EB00: 18 74 3C 14 42 08 00 0E 4A 85 D6 6D EC 04 11 B3 .t<.B...J..m....
00EB10: 6F D0 23 0E D4 82 08 41 00 01 CB 36 83 02 B3 6E o.#....A...6...n
00EB20: 00 23 94 7C 01 66 DA 10 36 09 F1 6A CA A5 80 A2 .#.|.f..6..j....
00EB30: 10 00 01 82 C1 60 B2 58 76 88 09 82 C1 60 B2 63 .....`.Xv....`.c
00EB40: 23 A0 B5 05 51 15 39 12 33 48 01 50 D0 D0 54 D3 #...Q.9.3H.P..T.
00EB50: 23 3A 00 15 0D 0D 11 25 5A 33 8E 09 10 D0 D1 54 #:.....%Z3.....T
00EB60: 63 22 E0 B9 0D 0D 1D 0D 21 06 32 28 0B 90 D0 D1 c"......!.2(....
00EB70: D2 53 95 23 2D 40 11 0D 0D 1D 52 33 4A 07 90 D0 .S.#-@....R3J...
00EB80: D3 13 91 51 E3 22 40 31 0D 0D 39 16 32 14 0B 90 ...Q."@1..9.2...
00EB90: D0 D4 12 53 95 23 3D 60 35 0D 0D 4D 55 0A 32 4E ...S.#=`5..MU.2N
00EBA0: 09 90 D0 D4 D5 D2 55 23 A0 80 19 15 61 41 09 55 ......U#....aA.U
00EBB0: 1A 3B A8 01 11 92 53 91 23 28 A0 39 19 31 11 0D .;....S.#(.9.1..
00EBC0: 35 42 33 76 03 91 D1 55 12 53 95 23 AA A0 11 21 5B3v...U.S.#...!
00EBD0: 05 4D 22 3A 04 01 92 10 54 D2 15 90 63 2E 60 79 .M":....T...c.`y
00EBE0: 25 4D 31 3D 5D 16 33 AC 05 92 54 D4 D4 10 50 E3 %M1=].3...T...P.
00EBF0: 34 00 99 31 15 61 3D 49 12 33 4C 03 53 13 D3 D2 4..1.a=I.3L.S...
00EC00: 95 64 C0 04 20 00 03 AC 42 16 00 0E 5F 2E B6 48 .d.. ...B..._..H
00EC10: 84 02 00 75 88 42 C0 01 CB E5 D6 C9 00 08 40 00 ...u.B........@.
00EC20: 07 28 F8 02 CD A1 80 0C 13 E2 D5 95 72 C0 04 37 .(..........r..7
00EC30: B4 01 CA 3E 00 B3 68 D8 03 04 42 06 00 0E 59 B5 ...>..h...B...Y.
00EC40: 40 01 CA 21 00 80 1C A3 E0 13 36 96 80 30 58 22 @..!...£..6..0X"
00EC50: 10 20 00 72 CD B7 A0 0E 51 08 10 00 39 66 DD 00 . .r....Q...9f..
00EC60: 07 28 F8 04 CD BD C0 0C 16 08 84 08 00 1C B3 6E .(.............n
00EC70: C0 03 36 B9 80 32 40 0C 51 08 18 00 39 66 DE 70 ..6..2@.Q...9f.p
00EC80: 07 28 84 0C 00 1C B3 6F A0 03 94 42 00 00 39 47 .(.....o...B..9G
00EC90: C0 36 68 00 00 C1 60 B0 44 20 00 03 94 7C 01 66 .6h...`.D ...|.f
00ECA0: DA 60 06 09 F1 6A CA A6 40 22 10 08 01 CA 3E 00 .`...j..@"....>.
00ECB0: B3 68 90 0B 05 9A 00 00 1F 16 AC AA 64 02 21 00 .h..........d.!.
00ECC0: 80 18 74 D4 04 42 00 00 1F 16 AC AA 9A 02 21 03 ..t..B........!.
00ECD0: 00 07 2C DB F8 00 E5 10 80 40 0E 51 F0 09 9B 71 ..,......@.Q...q
00ECE0: C0 18 2C 11 08 00 00 39 75 88 40 C0 01 CB 36 9F ..,....9u.@...6.
00ECF0: 80 B3 6A E0 03 85 CA CD BD 40 07 C5 AB 2A DC 80 ..j......@...*..
00ED00: B8 5C AC DA BE 02 EB 10 82 80 0C D0 00 00 F8 B5 .\..............
00ED10: 65 57 A0 16 1D B9 01 10 81 80 03 96 6D 57 01 72 eW..........mW.r
00ED20: 88 40 40 01 C9 50 BA CD AF E0 22 36 6D 5A 01 15 .@@..P...."6mZ..
00ED30: B3 6B 48 0B 94 7C 01 66 80 00 0C 16 89 F4 24 E5 .kH..|.f......$.
00ED40: 1F 00 59 A0 00 03 04 F8 B5 65 5B 60 11 08 18 00 ..Y......e[`....
00ED50: 39 2A 17 59 B6 24 04 46 CD B1 A0 2C 3A B8 02 21 9*.Y.$.F...,:..!
00ED60: 03 00 07 2C DB 60 02 EB 10 80 00 07 D0 93 05 93 ...,.`..........
00ED70: 19 70 01 88 68 68 AA 31 99 10 1C 86 86 8E 86 90 .p..hh.1........
00ED80: 83 19 BE 01 C8 68 68 E9 29 CA 91 92 50 1C 86 86 .....hh.)...P...
00ED90: 98 9C 8A 8F 19 63 00 88 68 69 8A 91 9B 40 1C 86 .....c..hi...@..
00EDA0: 86 A0 92 9C A9 19 06 01 A8 C8 E8 AA 8A 71 94 90 .............q..
00EDB0: 1A 8C A0 AA A8 A7 1D EE 00 C8 E8 AA 8A 6A 8A 51 .............j.Q
00EDC0: 92 10 1C 92 A6 86 9E 9C A7 19 A1 01 C9 2A 6A 0A .............*j.
00EDD0: 49 29 D1 9B 50 08 A0 AA A8 A7 1D 00 00 CA 48 AA I)..P.........H.
00EDE0: 29 C8 4A 51 D9 F0 0C A4 8A A2 A6 A8 A5 19 97 01 ).JQ............
00EDF0: CA 89 EA AA 0A 08 B1 95 60 08 AA A8 9E 93 38 00 ........`.....8.
00EE00: D4 E3 A9 E0 55 35 05 51 0D 22 30 00 01 93 52 55 ....U5.Q."0...RU
00EE10: 10 50 93 23 00 00 19 35 25 51 09 55 1A 32 64 05 .P.#...5%Q.U.2d.
00EE20: 93 52 55 13 91 16 23 20 C0 59 35 25 51 39 61 52 .RU...# .Y5%Q9aR
00EE30: 32 5C 03 93 52 55 14 15 14 A3 A0 00 15 3D 41 05 2\..RU...£...=A.
00EE40: 11 2A 32 C4 03 14 D2 D2 54 23 2F C0 39 4D 51 49 .*2.....T#/.9MQI
00EE50: 31 15 3A 33 78 01 95 13 D5 54 14 11 67 00 00 00 1.:3x....T..g...
00EE60: 85 94 15 55 14 91 53 20 65 05 55 45 24 54 C8 19 ...U..S e.UE$T..
00EE70: 41 55 51 09 25 52 06 50 55 54 46 4C 44 81 94 15 AUQ.%R.PUTFLD...
00EE80: 55 14 D6 53 60 65 05 55 45 45 95 09 40 00 04 D5 U..S`e.UEE..@...
00EE90: 04 10 54 00 00 30 EC E8 00 84 00 00 72 88 40 20 ..T..0......r.@
00EEA0: 07 28 F8 04 CD A7 60 6C 16 0B 34 00 00 3E 2D 58 .(....`l..4..>-X
00EEB0: 54 E8 00 54 00 00 39 44 20 80 03 94 7C 02 66 D3 T..T..9D ...|.f.
00EEC0: B0 36 0B 05 9B 45 80 0F 8B 56 15 3A 00 10 80 00 .6...E...V.:....
00EED0: 0C 3A 7A 00 21 00 80 0F 8B 56 55 46 00 10 80 00 .:z.!....VUF....
00EEE0: 0C 91 08 04 00 C9 10 80 40 0E 51 08 04 00 E5 1F ........@.Q.....
00EEF0: 00 99 B4 EC 0D 82 C1 66 D2 D0 03 E2 D5 85 62 80 .......f......b.
00EF00: 05 54 04 01 CA 21 01 00 1C A3 E0 13 36 9D 81 B0 .T...!...£..6...
00EF10: 58 2C DA B4 00 7C 5A B0 AC 50 02 BD 9B 56 80 99 X,...|Z..P...V..
00EF20: B5 C4 00 F8 B5 61 58 A0 01 08 00 00 C3 B1 A0 02 .....aX.........
00EF30: 10 08 00 F8 B5 65 59 60 01 08 00 00 C9 10 80 40 .....eY`.......@
00EF40: 0C 96 1D B2 00 66 80 00 14 18 00 00 00 A9 40 00 .....f........@.
00EF50: 10 05 4A 00 01 00 2A 50 00 0C 00 00 00 08 40 80 ..J...*P......@.
00EF60: 07 28 84 06 00 72 8F 80 4C DA 76 06 C1 60 B3 6B .(...r..L.v..`.k
00EF70: E8 01 F1 6A C2 BD A0 02 AA C4 00 EB 10 81 00 0C ...j............
00EF80: D0 00 01 CA 21 02 00 1C A3 E0 13 36 9D 81 B0 58 ....!...£..6...X
00EF90: 2C DB 84 00 7C 5A B0 AF 68 00 84 00 00 61 DF 00 ,...|Z..h....a..
00EFA0: 01 08 04 00 7C 5A B2 AF C8 00 84 00 00 64 8A AE ....|Z.......d..
00EFB0: 50 03 0E FA 80 8A 80 00 07 28 84 04 00 72 8F 80 P........(...r..
00EFC0: 4C DA 76 06 C1 60 B3 6F 00 01 F1 6A C2 A5 00 2A L.v..`.o...j...*
00EFD0: F6 6D 5A 02 66 D0 F0 13 E2 D5 85 4A 00 44 20 00 .mZ.f......J.D .
00EFE0: 03 0E 95 80 88 40 20 03 E2 D5 95 4D 00 44 20 00 .....@ ....M.D .
00EFF0: 03 25 5E CD B3 E0 4C DA 36 02 7C 5A B2 AA 20 08 .%^...L.6.|Z.. .
00F000: 00 85 14 D0 D0 53 A0 54 15 44 54 E4 48 19 19 31 .....S.T.DT.H..1
00F010: 11 0D 35 42 04 53 4B 49 50 94 00 00 4D 63 C0 58 ..5B.SKIP...Mc.X
00F020: 2E 17 2B 15 87 43 80 04 20 10 03 25 87 47 C0 19 ..+..C.. ..%.G..
00F030: A0 00 05 07 00 1D 80 28 38 00 00 01 41 C0 01 40 .......(8...A..@
00F040: 00 00 00 42 00 00 32 44 20 40 00 E5 9A 00 00 33 ...B..2D @.....3
00F050: 40 00 07 28 84 08 00 1C B3 69 40 03 36 95 80 39 @..(.....i@.6..9
00F060: 59 A0 00 03 05 82 7C 5A B0 AB D8 00 84 08 00 1C Y.....|Z........
00F070: B3 69 98 03 36 9B 00 39 59 A0 00 03 05 9A 00 00 .i..6..9Y.......
00F080: 1F 16 AC AA BC 00 21 00 00 19 22 10 20 00 72 54 ......!...". .rT
00F090: 2E B3 6A 40 00 8D 9A 00 00 08 40 40 01 C9 50 BA ..j@......@@..P.
00F0A0: CD AC A0 02 36 6D 69 00 61 D2 30 01 08 10 00 39 ....6mi.a.0....9
00F0B0: 66 D7 20 06 6D 4B 00 72 B3 40 00 06 09 F1 6A C2 f. .mK.r.@....j.
00F0C0: B5 20 02 10 20 00 72 CD B0 00 0C DB 06 00 E5 66 . .. .r........f
00F0D0: D0 00 06 09 F1 6A C2 B5 20 02 10 00 01 87 6B 00 .....j.. .....k.
00F0E0: 04 20 10 01 F1 6A CA BC E0 0C 17 0B 95 8A CD B2 . ...j..........
00F0F0: E0 0E 56 6D 87 00 60 9F 16 AC 2B B2 00 C1 70 B9 ..Vm..`...+...p.
00F100: 58 AC DB 6C 00 E5 66 D0 00 06 09 F1 6A C2 BB 20 X..l..f.....j..
00F110: 02 10 00 01 87 77 00 04 20 10 01 F1 6A CA BC E0 .....w.. ...j...
00F120: 02 10 08 01 87 7A 80 04 20 00 01 F1 6A CA BE 60 .....z.. ...j..`
00F130: 02 10 00 01 92 21 02 00 07 2C DB 28 00 CD B8 E0 .....!...,.(....
00F140: 0E B6 0B 85 CA C5 66 DF B0 06 68 00 00 C9 62 88 ......f...h...b.
00F150: 40 00 01 CB AC 42 04 00 0E 59 B7 E0 01 9B 5D 80 @....B...Y....].
00F160: 1C 2E 56 6D 03 01 72 B3 6D D0 03 04 F8 B5 65 53 ..Vm..r.m.....eS
00F170: 80 11 08 00 00 39 2A 17 59 B4 50 04 46 CD A2 E0 .....9*.Y.P.F...
00F180: 2C 3A 32 02 21 03 00 07 25 42 EB 36 97 80 8A D9 ,:2.!...%B.6....
00F190: B4 CC 04 F8 B5 65 58 B0 17 0B 95 9B 47 00 5C AC .....eX.....G.\.
00F1A0: DA 9E 00 C1 3E 2D 59 55 A4 04 42 00 00 0E 4A 85 ....>-YU..B...J.
00F1B0: D6 6D 3F 01 11 B3 6A 18 0B 0E A5 00 B8 5C AC DA .m?...j......\..
00F1C0: 9A 02 E5 66 D2 00 16 09 F1 6A CA B1 00 22 10 00 ...f.....j..."..
00F1D0: 00 72 54 2E B3 6B 00 08 8D 9B 59 00 58 75 A4 05 .rT..k....Y.Xu..
00F1E0: 87 4E 00 5C 2E 56 0B 26 3A 00 01 50 55 11 53 91 .N.\.V.&:..PU.S.
00F1F0: 23 2D 80 39 0D 0D 1D 0D 21 06 32 FE 03 90 D0 D1 #-.9....!.2.....
00F200: 84 00 00 64 88 40 20 06 48 AA 80 00 B9 44 20 20 ...d.@ .H....D
00F210: 03 94 7C 02 66 D3 B0 36 0B 05 9B 4E 40 4F 8B 56 ..|.f..6...N@O.V
00F220: 15 71 01 57 B3 6A D0 13 36 AC 00 9F 16 AC 2A E2 .q.W.j..6.....*.
00F230: 02 21 00 00 18 75 D0 04 42 01 00 1F 16 AC AA FA .!...u..B.......
00F240: 02 21 00 00 19 22 10 08 01 92 2A A9 20 2E 51 08 .!..."....*. .Q.
00F250: 08 00 E5 1F 00 99 B4 EC 0D 82 C1 66 D6 40 13 E2 ...........f.@..
00F260: D5 85 6A 80 55 EC DA B4 04 CD B2 20 27 C5 AB 0A ..j.U...... '...
00F270: D5 00 88 40 00 06 1D AD 01 10 80 40 07 C5 AB 2A ...@.......@...*
00F280: DB 00 88 40 00 06 48 A8 00 00 75 88 41 00 06 68 ...@..H...u.A..h
00F290: 00 00 7C 5A B2 AF 10 08 84 00 00 72 8A AD B8 0B ..|Z.......r....
00F2A0: 94 7C 02 66 D3 B0 36 0B 05 9B 67 40 4F 8B 56 55 .|.f..6...g@O.VU
00F2B0: E2 01 10 80 40 0C 3B CA 02 21 00 00 0F 8B 56 55 ....@.;..!....VU
00F2C0: EE 01 10 80 00 0C 91 08 04 00 C9 61 D3 A0 26 6D ...........a..&m
00F2D0: 9E 00 BF E0 00 90 05 FF 00 05 00 2F F8 00 2C 01 .........../..,.
00F2E0: 4D 00 40 80 0A 68 02 05 00 53 40 10 30 02 9A 00 M.@..h...S@.0...
00F2F0: 81 C0 14 D0 04 10 00 A9 00 20 C0 05 48 01 06 80 ......... ..H...
00F300: 2A 40 08 38 01 52 00 41 E0 0A 90 02 10 00 54 80 *@.8.R.A......T.
00F310: 10 88 02 C0 80 84 80 16 D8 04 26 00 00 00 04 20 ..........&....
00F320: 00 03 24 55 60 80 5C A2 10 10 01 CA 3E 01 33 69 ..$U`.\.....>.3i
00F330: D8 1B 05 82 7C 5A B2 AA B0 10 84 02 00 64 88 40 ....|Z.......d.@
00F340: 00 06 48 AA 8F 00 39 44 20 80 03 94 7C 02 66 D3 ..H...9D ...|.f.
00F350: B0 36 0B 04 F8 B5 65 58 F0 21 55 5B 02 75 88 41 .6....eX.!U[.u.A
00F360: 00 06 68 00 00 E5 10 82 00 0E 51 F0 09 9B 4E C0 ..h.......Q...N.
00F370: D8 2C 13 E2 D5 95 63 C0 84 20 10 03 0E C9 01 08 .,....c.. ......
00F380: 40 00 03 E2 D5 95 66 C0 84 20 10 03 24 42 00 00 @.....f.. ..$B..
00F390: 32 58 AC 51 08 08 00 39 72 88 40 00 07 28 F8 02 2X.Q...9r.@..(..
00F3A0: CD 00 00 18 2D 16 68 00 00 EB 10 81 80 0C D0 00 ....-.h.........
00F3B0: 00 F8 B5 65 5C B0 21 08 08 00 39 75 88 40 C0 06 ...e\.!...9u.@..
00F3C0: 6D B2 02 60 B8 5C AC 57 28 84 06 00 72 8F 80 4C m..`.\.W(...r..L
00F3D0: DA 76 06 C1 60 B3 6E A8 09 F1 6A CA BD 20 42 10 .v..`.n...j.. B.
00F3E0: 00 01 82 C1 64 88 40 00 01 CB AC 43 69 C0 99 B7 ....d.@....Ci...
00F3F0: 24 08 42 02 00 0E 4A 85 D6 68 00 00 2B 66 DF 20 $.B...J..h..+f.
00F400: D2 53 95 23 2A 60 19 0D 0D 31 39 15 1E 33 06 03 .S.#*`...19..3..
00F410: 90 D0 D4 12 53 95 23 20 C0 35 0D 0D 4D 55 0A 32 ....S.# .5..MU.2
00F420: 1E 01 90 D0 D4 D5 D2 55 23 A4 60 19 19 31 11 0D .......U#.`..1..
00F430: 35 42 32 A2 03 92 54 D1 D4 90 54 23 2E 00 39 25 5B2...T...T#..9%
00F440: 4D 4D 41 05 0E 32 74 01 93 11 56 13 D4 91 23 A1 MMA..2t...V...#.
00F450: 20 31 4D 2D 25 42 70 00 00 85 94 D1 51 54 91 53 1M-%Bp.....QT.S
00F460: 20 24 C4 38 15 5D 25 11 51 22 06 53 45 45 52 45 $.8.]%.Q".SEERE
00F470: 4C 81 14 D1 51 4E 20 64 E4 55 74 C4 94 E8 15 4D L...QN d.Ut....M
00F480: 15 14 C4 DA 06 53 45 45 4E 41 4D 81 13 D5 55 16 .....SEENAM...U.
00F490: A0 55 85 45 95 04 59 40 00 04 D4 4C 14 00 00 00 .U.E..Y@...L....
00F4A0: 00 04 2F 87 F8 E5 F2 2A 00 00 18 76 C4 04 54 00 ../....*...v..T.
00F4B0: 00 39 44 22 00 03 94 7C 02 66 D1 60 36 0B 04 55 .9D"...|.f.`6..U
00F4C0: 40 00 02 20 10 00 64 45 40 00 04 20 00 03 94 7C @.. ..dE@.. ...|
00F4D0: 01 66 D7 D0 46 08 84 10 00 1C BE 59 2A F6 6D C6 .f..F......Y*.m.
00F4E0: 03 15 50 00 00 88 08 00 19 11 50 00 01 08 00 00 ..P.......P.....
00F4F0: E5 1F 00 59 B5 F4 11 82 21 04 00 07 2F 96 48 84 ...Y....!.../.H.
00F500: 00 00 1C BA C5 40 00 03 34 00 00 15 50 A0 01 15 .....@..4...P...
00F510: 5C 00 57 B3 6E 30 1B 85 CA 22 AC A0 02 10 00 01 \.W.n0..."......
00F520: CA 3E 00 B3 6B E8 23 04 42 08 00 0E 5F 2C 91 0D .>..k.#.B..._,..
00F530: 40 02 72 88 40 00 07 28 F8 04 CD BF 80 6C 16 0B @.r.@..(.....l..
00F540: 0E CF 00 88 6A 68 13 94 42 00 00 39 47 C0 26 6D ....jh..B..9G.&m
00F550: FC 03 60 B0 58 76 78 04 42 0A 00 39 44 20 10 03 ..`.Xvx.B..9D ..
00F560: 94 7C 02 66 80 00 0C 16 08 86 AD 01 39 44 20 00 .|.f........9D .
00F570: 03 94 7C 02 66 DF C0 36 0B 04 42 00 00 08 A8 00 ..|.f..6..B.....
00F580: 03 0E CF 00 88 6B 38 13 94 42 00 00 39 47 C0 26 .....k8..B..9G.&
00F590: 6D FC 03 60 B0 58 76 78 04 43 5D 00 9C A2 10 08 m..`.Xvx.C].....
00F5A0: 01 CA 3E 01 33 40 00 06 0B 04 42 08 00 0E 5F 2C ..>.3@....B..._,
00F5B0: 91 0D 89 02 72 88 40 20 07 28 F8 04 CD BF 80 6C ....r.@ .(.....l
00F5C0: 16 0B 0E CF 00 88 6C B0 13 94 42 01 00 39 47 C0 ......l...B..9G.
00F5D0: 26 6D FC 03 60 B0 58 76 78 04 43 68 C0 9C A2 10 &m..`.Xvx.Ch....
00F5E0: 08 01 CA 3E 01 33 6F E0 1B 05 82 C3 B3 C0 22 1B ...>.3o.......".
00F5F0: 60 04 E5 10 80 40 0E 51 F0 09 9B 7A 00 18 2C 16 `....@.Q...z..,.
00F600: 21 19 F1 6A CA A6 A0 62 10 00 00 72 54 2E B3 6F !..j...b...rT..o
00F610: D8 10 8D 9B 7F C0 85 6C D0 00 01 CA 21 04 00 1C .......l....!...
00F620: A3 E0 13 36 9D 81 B0 58 2C DB B8 04 7C 5A B2 A9 £..6...X,...|Z..
00F630: 90 18 84 00 00 60 B0 59 2C 3B E8 04 21 00 80 18 .....`.Y,;..!...
00F640: 2C 16 4B 14 42 04 00 0E 59 B4 38 0C F8 B5 65 51 ,.K.B...Y.8...eQ
00F650: F0 41 08 10 00 39 66 D4 10 37 58 AA E5 00 B3 6D .A...9f..7X....m
00F660: C8 11 F1 6A CA AD 20 62 10 00 00 72 EB 15 55 10 ...j.. b...r..U.
00F670: 36 6D 12 03 61 D7 80 31 08 00 00 39 75 88 40 80 6m..a..1...9u.@.
00F680: 01 CB 36 A6 81 B3 6B 20 18 A8 00 00 75 B8 5C AC ..6...k ....u.\.
00F690: D0 00 01 CA 21 04 00 07 2C DA E6 06 E5 10 82 00 ....!...,.......
00F6A0: 03 96 6D 87 03 75 88 40 80 01 CB 36 C7 81 B3 6E ..m..u.@...6...n
00F6B0: 88 03 45 9B 5D 80 9C A2 10 20 00 72 CD B2 E0 61 ..E.].... .r...a
00F6C0: 17 FB FD 9B 5F C0 D9 A0 00 03 45 9A 00 00 34 43 ...._.....E...4C
00F6D0: 22 2A F2 06 21 02 00 07 2E 56 6D A6 03 75 B0 5C "*..!....Vm..u.\
00F6E0: 2E 56 2B 36 CD 01 B4 59 B5 D8 0C 55 58 40 DD 6E .V+6...Y...UX@.n
00F6F0: 17 2B 36 E4 01 88 AE 78 18 AA EC 01 9F 16 AC 2A .+6....x.......*
00F700: 38 08 2A 00 00 1C A2 1B 70 06 E5 10 80 40 0E 51 8.*.....p....@.Q
00F710: F0 0D 9A 00 00 30 58 2C 17 58 84 02 00 66 80 00 .....0X,.X...f..
00F720: 07 C5 AB 2A 8B 02 08 69 20 23 94 42 01 00 39 47 ...*...i #.B..9G
00F730: C0 26 68 00 00 C1 60 88 40 00 06 0B 24 42 08 00 .&h...`.@...$B..
00F740: 08 AE D8 1B 0E 9E 01 88 40 20 06 0B 24 14 07 16 ........@ ..$...
00F750: 88 0A E7 23 49 D0 CA 20 22 9C 8E 46 F3 90 80 D2 ...#I.. "..F....
00F760: 6E 10 14 88 A4 C1 01 18 D2 6C 32 82 80 11 9B 30 n........l2....0
00F770: 3A 86 86 82 9C 89 19 AC 03 A8 68 68 2A 69 91 99 :.........hh*i..
00F780: E0 3A 86 86 82 A6 A5 19 AF 03 A8 68 68 69 E9 B1 .:.........hhi..
00F790: 91 60 3C 86 86 8E 86 90 83 19 C0 03 C8 68 68 E9 .`<..........hh.
00F7A0: 29 CA 91 95 40 38 86 86 8E A9 19 25 03 C8 68 69 )...@8.....%..hi
00F7B0: 89 C8 A8 F1 9B E0 18 86 86 98 A9 19 FB 03 88 68 ...............h
00F7C0: 69 C8 B1 9C C0 3C 86 86 A0 92 9C A9 19 D5 03 A8 i....<..........
00F7D0: 68 6A 6A A8 51 9F 60 1C 86 86 A6 AE 92 A9 19 6F hjj.Q.`........o
00F7E0: 02 A8 C9 28 A9 88 91 90 D0 4A 8C A0 AA A8 A7 18 ...(.....J......
00F7F0: 00 00 C9 29 C8 69 0A A9 D1 80 00 0A 92 9C A4 8A ...).i..........
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: 1D 9A 01 10 DB D0 27 28 84 02 00 72 8F 80 4C DA ......'(...r..L.
00F910: 66 02 C1 60 8A A8 80 00 8A 80 00 30 EC D0 08 86 f..`.......0....
00F920: E5 01 39 44 20 10 03 94 7C 02 66 D4 50 16 0B 05 ..9D ...|.f.P...
00F930: 87 66 80 44 37 5C 09 CA 21 00 80 1C A3 E0 13 36 .f.D7\..!...£..6
00F940: AE 80 B0 58 2C 3B 34 02 21 BC 80 4E 51 08 04 00 ...X,;4.!..NQ...
00F950: E5 1F 00 99 B5 BC 05 82 C1 61 D9 A0 11 0D F1 02 .........a......
00F960: 72 88 40 20 07 28 F8 04 CD B0 20 2C 16 0B 0E CF r.@ .(.... ,....
00F970: 00 AB D9 B7 18 0C 42 01 00 39 47 C0 16 6D 7D 04 ......B..9G..m}.
00F980: 60 88 41 00 01 CB E5 92 C3 A0 C0 4C D0 00 02 87 `.A........L....
00F990: 80 00 00 14 E0 00 02 00 A7 00 00 20 05 38 00 01 ........... .8..
00F9A0: 80 2A B0 00 30 01 55 80 01 A0 0B 00 00 04 00 59 .*..0.U........Y
00F9B0: 20 00 28 02 D2 00 01 80 17 2C 00 0E 00 BB A0 00 .(......,......
00F9C0: 80 05 F2 00 04 80 28 20 08 28 01 45 80 41 60 0A ......( .(.E.A`.
00F9D0: 50 02 0E 00 53 A0 10 78 02 A9 00 84 00 15 90 04 P...S..x........
00F9E0: 22 00 AE C0 21 20 05 88 01 09 80 00 00 01 55 62 "...! ........Ub
00F9F0: 00 72 88 40 80 01 CB 94 42 06 00 39 47 C0 36 68 .r.@....B..9G.6h
00FA00: 00 00 C1 60 B0 44 20 20 00 E5 CA 21 00 80 1C A3 ...`.D ...!...£
00FA10: E0 13 36 C9 80 B0 58 22 1B F8 04 E5 10 80 40 0E ..6...X"......@.
00FA20: 51 F0 09 9B 49 C0 98 2C 11 08 20 00 39 7C B2 44 Q...I..,.. .9|.D
00FA30: 02 01 00 80 40 65 37 1D 0E 47 91 D0 80 00 20 10 ....@e7..G.... .
00FA40: 08 04 06 33 79 B4 DA 6F 37 0E 84 00 01 68 80 40 ...3y..o7....h.@
00FA50: 70 39 1B CC E7 23 09 B4 74 20 00 08 04 02 03 61 p9...#..t .....a
00FA60: A4 C4 72 30 9C 8F 23 A1 00 00 CA 78 3A 19 4D C7 ..r0..#....x:.M.
00FA70: 33 49 BC DC 20 36 1A 4D C6 B1 01 A4 E8 65 36 82 3I.. 6.M.....e6.
00FA80: 80 02 03 19 BC DA 6D 37 9B 84 07 33 D0 E8 40 00 ......m7...3..@.
00FA90: 10 19 4F 07 41 01 8C D0 61 34 9B 87 42 00 00 80 ..O.A...a4..B...
00FAA0: 40 65 37 1D 0E 47 91 01 C0 E8 3A 10 00 04 06 43 @e7..G....:....C
00FAB0: 09 D0 C2 20 39 9A 4F 46 51 D0 80 00 20 10 08 0D ... 9.OFQ... ...
00FAC0: 86 F3 09 90 40 61 3A 0E 84 00 01 01 B0 C8 20 31 ....@a:....... 1
00FAD0: 9A 0D C2 03 09 D0 74 20 00 08 0E 07 23 79 9C 40 ......t ....#y.@
00FAE0: 73 34 9E 8C A3 A1 00 00 5A 20 32 9B 8C 82 03 81 s4..£...Z 2.....
00FAF0: C8 DE 67 1D 08 00 02 D1 01 94 DC 64 10 19 8D 26 ..g........d...&
00FB00: 00 00 00 00 02 00 6A 00 04 00 2E 00 0F 00 64 00 ......j.......d.
00FB10: 10 00 42 00 12 00 20 00 20 00 60 00 2D 00 03 00 ..B... . .`.-...
00FB20: 2E 00 49 00 34 00 01 00 38 00 59 00 47 00 01 00 ..I.4...8.Y.G...
00FB30: 47 00 54 00 FF FF FF FF 1A 1A 1A 1A 1A 1A 1A 1A G.T.............
00FB40: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00FB50: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00FB60: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00FB70: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
00FB80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FB90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FBA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FBB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FBC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FBD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FBE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FBF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FC00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FC10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FC20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FC30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FC40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FC50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FC60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FC70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FC80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FC90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FCA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FCB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FCC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FCD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FCE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FCF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00FD00: C3 28 00 40 69 39 88 0C 26 E1 01 54 DC 6B 37 1B .(.@i9..&..T.k7.
00FD10: CE E6 E1 01 24 E8 65 36 88 08 66 F3 21 94 14 00 ....$.e6..f.!...
00FD20: 1D B1 58 A2 AA 04 00 EB 10 80 00 0C D0 00 00 F8 ..X.............
00FD30: B5 65 53 D0 31 55 07 02 75 88 40 60 06 68 00 00 .eS.1U..u.@`.h..
00FD40: 7C 5A B2 A9 E8 18 84 02 00 61 D4 00 31 08 00 00 |Z.......a..1...
00FD50: 7C 5A B2 AB A0 18 AA 80 00 39 44 20 20 00 E5 CA |Z.......9D ...
00FD60: 21 02 80 1C A3 E0 1B 34 00 00 60 B0 58 22 10 00 !...£..4..`.X"..
00FD70: 00 72 E5 1F 00 59 B7 3C 11 82 21 10 00 1C A2 10 .r...Y.<..!.....
00FD80: 08 01 CA 3E 01 33 6D 78 03 05 82 21 04 80 19 A0 ...>.3mx...!....
00FD90: 00 03 AC 42 FF 00 33 40 00 07 28 84 04 00 1C B9 ...B..3@..(.....
00FDA0: 44 20 30 03 94 7C 03 66 D5 50 36 0B 05 82 21 00 D 0..|.f.P6...!.
00FDB0: 00 07 2E 51 F0 05 9B 73 C1 18 22 10 38 01 9B 5E ...Q...s..".8..^
00FDC0: 00 CF 8B 56 55 BB 03 10 81 C0 0C DB 44 06 E5 10 ...VU.......D...
00FDD0: 80 40 0E 51 F0 09 9B 5C 00 D8 2C 11 55 02 00 11 .@.Q...\..,.U...
00FDE0: 88 A8 10 00 CD 82 C1 64 8A AA 50 0B AC 42 08 00 .......d..P..B..
00FDF0: 33 40 00 07 28 84 00 00 72 8F 80 4C DA 2C 06 C1 3@..(...r..L.,..
00FE00: 60 8A AE 38 1B 95 5E CD A7 60 8E 51 F0 09 9B 45 `..8..^..`.Q...E
00FE10: 80 D8 2C 11 08 80 00 E5 10 80 40 0E 51 F0 09 9B ..,.......@.Q...
00FE20: 6D C0 D8 2C 16 48 84 02 00 72 8F 80 2C DA FA 08 m..,.H...r..,...
00FE30: C1 10 80 40 02 2A 04 00 21 02 00 19 B6 B4 0D CA ...@.*..!.......
00FE40: 21 00 80 1C A3 E0 13 36 9B 01 30 58 2C 17 0B 95 !...£..6..0X,...
00FE50: 8A 7C 5A B2 A9 58 22 BD 9B 71 80 C4 20 00 03 94 .|Z..X"..q.. ...
00FE60: 42 01 00 39 47 C0 26 6D 1A 04 60 B0 59 22 AA DC B..9G.&m..`.Y"..
00FE70: 00 C3 AB 80 82 11 00 01 92 21 13 80 19 22 11 10 .........!..."..
00FE80: 01 92 21 3F 00 19 22 11 58 01 92 21 16 80 19 2C ..!?..".X..!...,
00FE90: 3A F2 08 CD B6 40 35 04 10 00 00 A8 A0 80 10 05 :....@5.........
00FEA0: 49 04 01 00 2A 68 20 0C 01 54 41 01 A0 0A AA 08 I...*h ..TA.....
00FEB0: 0C 00 00 00 02 11 F8 01 92 2A A0 40 0E B1 08 3C .........*.@...<
00FEC0: 00 CD 00 00 0F 8B 56 15 B1 04 60 B8 5C AC 53 E2 ......V...`.\.S.
00FED0: D5 95 68 C1 05 54 08 00 F8 B5 65 5A 30 41 08 04 ..h..T....eZ0A..
00FEE0: 00 C3 B4 C0 82 10 00 00 F8 B5 61 5B 10 41 08 00 ..........a[.A..
00FEF0: 00 C3 B6 80 82 10 08 00 F8 B5 65 5C E0 41 08 28 ..........e\.A.(
00FF00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FF10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FF20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FF30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FF40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FF50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FF60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FF70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FF80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FF90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FFA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FFB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FFC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FFD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FFE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00FFF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0100A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0100B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0100C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0100D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0100E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0100F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010100: 00 E5 10 80 40 0E 51 F0 09 9B 7D C0 D8 2C 11 08 ....@.Q...}..,..
010110: 00 00 22 A0 40 0C 96 28 84 00 00 1C BA C4 20 40 ..".@..(...... @
010120: 03 36 88 02 33 6A F8 03 85 CA CD 00 00 1D 62 11 .6..3j........b.
010130: 00 01 9B 48 40 CF 8B 56 55 FF 04 10 80 00 0C D0 ...H@..VU.......
010140: 00 00 56 EB 10 8C 00 07 D0 93 0E EF 02 08 40 80 ..V...........@.
010150: 06 6D D9 04 72 88 40 20 07 28 F8 04 CD A6 C0 8C .m..r.@ .(......
010160: 16 0B 05 93 19 7F 03 A8 68 68 29 C8 91 9C E0 3A ........hh)....:
010170: 86 86 82 A6 A5 19 03 05 C8 68 68 8A 68 E9 31 9E .........hh.h.1.
010180: 80 48 86 86 8A A3 19 E1 04 C8 68 68 E8 69 08 31 .H...£....hh.i.1
010190: 98 50 48 86 86 8E A9 19 F3 04 C8 68 69 29 C8 69 .PH........hi).i
0101A0: 31 93 00 38 86 86 98 A9 19 DC 04 C8 68 6A 09 29 1..8........hj.)
0101B0: CA 91 95 D0 4C 86 86 A6 AE 92 A9 19 DD 03 A8 C9 ....L...........
0101C0: 28 A9 88 91 9C 40 4A 8C A0 AA A8 87 19 0D 05 A8 (....@J.........
0101D0: CA 0A AA 8A 71 80 00 0C 92 9C 86 90 AA 9D 18 00 ....q...........
0101E0: 00 A9 29 CA 48 A9 91 80 00 0A 92 9C A4 8A 9B 19 ..).H...........
0101F0: 29 03 89 2A 88 A9 B1 91 60 28 92 A8 9E AB 19 8E )..*....`(......
010200: 03 89 2A 89 EB 11 D0 00 04 98 87 1D 7D 04 C9 C8 ..*.........}...
010210: AA E9 89 29 D1 80 00 0C 9E AA A8 86 90 AB 18 00 ...)............
010220: 00 C9 EA AA 8A 48 A9 91 80 00 0C 9E AA A8 A4 8A .....H..........
010230: 9B 1D CF 04 89 EA AA 8B 51 DC 60 3A A6 8A 8A 62 ........Q.`:...b
010240: 6D 1D 16 03 8A 68 A8 A7 11 DF C0 3C A6 8A 8A 9C m....h.....<....
010250: 82 9B 1D 04 00 CA 68 A8 AA 48 A9 91 92 C0 4C A6 ......h..H....L.
010260: B2 9A 84 9E 99 19 3C 04 8A 8B 2A 08 B1 D0 20 0A ......<...*... .
010270: AE 92 88 A8 91 1D 3B 04 AB 0A 8B 2A 08 B3 80 00 ......;....*....
010280: 00 85 15 D0 52 55 20 45 74 14 95 49 40 00 04 D4 ....RU Et..I@...
010290: 88 00 43 45 80 1C A2 10 10 01 CA CD 00 00 18 2C ..CE...........,
0102A0: 11 08 08 00 E5 66 80 00 0C 16 48 28 EE 61 34 9D .....f....H(.a4.
0102B0: 0D 26 E3 38 B8 5C 2E 00 46 44 80 2A 32 3A 2A A2 .&.8.\..FD.*2:*.
0102C0: 1C 64 24 02 A3 28 2A AA 29 C7 40 00 22 BA 0A 4A .d$.£(*.).@."..J
0102D0: A4 E0 00 00 9E 00 00 00 1A 1A 1A 1A 1A 1A 1A 1A ................
0102E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0102F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
010300: 2F 2A 0D 0A 2A 2A 20 4D 41 43 2E 43 20 2D 2D 20 /*..** MAC.C --
010310: 53 6D 61 6C 6C 2D 4D 61 63 20 41 73 73 65 6D 62 Small-Mac Assemb
010320: 6C 65 72 20 2D 2D 20 50 61 72 74 20 31 3A 20 4D ler -- Part 1: M
010330: 61 69 6E 6C 69 6E 65 20 61 6E 64 20 4D 61 63 72 ainline and Macr
010340: 6F 20 46 75 6E 63 74 69 6F 6E 73 0D 0A 2A 2A 0D o Functions..**.
010350: 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 .**
010360: 20 20 20 20 20 43 6F 70 79 72 69 67 68 74 20 31 Copyright 1
010370: 39 38 35 20 4A 2E 20 45 2E 20 48 65 6E 64 72 69 985 J. E. Hendri
010380: 78 0D 0A 2A 2A 0D 0A 2A 2A 20 55 73 61 67 65 3A x..**..** Usage:
010390: 20 4D 41 43 20 5B 2D 4C 5D 20 5B 2D 4E 4D 5D 20 MAC [-L] [-NM]
0103A0: 5B 2D 50 5D 20 5B 2D 53 23 5D 20 5B 6F 62 6A 65 [-P] [-S#] [obje
0103B0: 63 74 5D 20 73 6F 75 72 63 65 2E 2E 2E 0D 0A 2A ct] source.....*
0103C0: 2A 0D 0A 2A 2A 20 2D 4C 20 20 20 20 20 20 20 20 *..** -L
0103D0: 20 47 65 6E 65 72 61 74 65 20 61 6E 20 61 73 73 Generate an ass
0103E0: 65 6D 62 6C 79 20 6C 69 73 74 69 6E 67 20 6F 6E embly listing on
0103F0: 20 74 68 65 20 73 74 61 6E 64 61 72 64 20 6F 75 the standard ou
010400: 74 70 75 74 20 66 69 6C 65 2E 0D 0A 2A 2A 0D 0A tput file...**..
010410: 2A 2A 20 2D 4E 4D 20 20 20 20 20 20 20 20 4E 6F ** -NM No
010420: 20 6D 61 63 72 6F 20 70 72 6F 63 65 73 73 69 6E macro processin
010430: 67 2E 20 20 54 68 69 73 20 73 70 65 65 64 73 20 g. This speeds
010440: 75 70 20 74 68 65 20 61 73 73 65 6D 62 6C 65 72 up the assembler
010450: 20 73 6F 6D 65 77 68 61 74 2E 0D 0A 2A 2A 20 20 somewhat...**
010460: 20 20 20 20 20 20 20 20 20 20 4D 61 63 72 6F 20 Macro
010470: 70 72 6F 63 65 73 73 69 6E 67 20 69 73 20 4E 4F processing is NO
010480: 54 20 6E 65 65 64 65 64 20 66 6F 72 20 53 6D 61 T needed for Sma
010490: 6C 6C 2D 43 20 32 2E 31 20 6F 75 74 70 75 74 20 ll-C 2.1 output
0104A0: 66 69 6C 65 73 2E 0D 0A 2A 2A 0D 0A 2A 2A 20 2D files...**..** -
0104B0: 50 20 20 20 20 20 20 20 20 20 50 61 75 73 65 20 P Pause
0104C0: 6F 6E 20 65 72 72 6F 72 73 20 77 61 69 74 69 6E on errors waitin
0104D0: 67 20 66 6F 72 20 61 6E 20 6F 70 65 72 61 74 6F g for an operato
0104E0: 72 20 72 65 73 70 6F 6E 73 65 20 6F 66 20 43 52 r response of CR
0104F0: 2E 0D 0A 2A 2A 0D 0A 2A 2A 20 2D 53 23 20 20 20 ...**..** -S#
010500: 4D 49 54 0D 0A 47 45 54 52 45 4C 0D 0A 50 55 54 MIT..GETREL..PUT
010510: 52 45 4C 0D 0A 53 45 45 52 45 4C 0D 0A 52 45 4C REL..SEEREL..REL
010520: 0D 0A 45 58 54 45 4E 44 0D 0A 46 49 4C 45 0D 0A ..EXTEND..FILE..
010530: 49 4E 54 0D 0A 4D 45 53 53 0D 0A 52 45 51 0D 0A INT..MESS..REQ..
010540: 53 43 41 4E 0D 0A 57 41 49 54 0D 0A 1A 1A 1A 1A SCAN..WAIT......
010550: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
010560: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
010570: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
010580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0105A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0105B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0105C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0105D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0105E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0105F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010610: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010620: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010630: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010640: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010650: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0106A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0106B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0106C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0106D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0106E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0106F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010700: 20 20 20 20 20 53 65 74 20 73 79 6D 62 6F 6C 20 Set symbol
010710: 74 61 62 6C 65 20 73 69 7A 65 20 74 6F 20 61 63 table size to ac
010720: 63 65 70 74 20 23 20 73 79 6D 62 6F 6C 73 2E 0D cept # symbols..
010730: 0A 2A 2A 0D 0A 2A 2A 20 6F 62 6A 65 63 74 20 20 .**..** object
010740: 20 20 20 4E 61 6D 65 20 6F 66 20 74 68 65 20 6F Name of the o
010750: 62 6A 65 63 74 20 66 69 6C 65 20 74 6F 20 62 65 bject file to be
010760: 20 6F 75 74 70 75 74 2E 20 20 49 74 20 6D 75 73 output. It mus
010770: 74 20 68 61 76 65 20 61 20 52 45 4C 0D 0A 2A 2A t have a REL..**
010780: 20 20 20 20 20 20 20 20 20 20 20 20 65 78 74 65 exte
010790: 6E 73 69 6F 6E 20 74 6F 20 62 65 20 72 65 63 6F nsion to be reco
0107A0: 67 6E 69 7A 65 64 20 61 73 20 74 68 65 20 6F 75 gnized as the ou
0107B0: 74 70 75 74 20 66 69 6C 65 2E 20 20 41 20 64 72 tput file. A dr
0107C0: 69 76 65 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 ive..**
0107D0: 20 20 20 73 70 65 63 69 66 69 65 72 20 69 73 20 specifier is
0107E0: 61 6C 6C 6F 77 65 64 2E 20 20 49 66 20 6E 6F 74 allowed. If not
0107F0: 20 73 70 65 63 69 66 69 65 64 2C 20 74 68 65 20 specified, the
010800: 6F 62 6A 65 63 74 20 63 6F 64 65 0D 0A 2A 2A 20 object code..**
010810: 20 20 20 20 20 20 20 20 20 20 20 77 69 6C 6C 20 will
010820: 67 6F 20 69 6E 74 6F 20 61 20 66 69 6C 65 20 28 go into a file (
010830: 6F 6E 20 74 68 65 20 64 65 66 61 75 6C 74 20 64 on the default d
010840: 72 69 76 65 29 20 62 65 61 72 69 6E 67 20 74 68 rive) bearing th
010850: 65 20 73 61 6D 65 0D 0A 2A 2A 20 20 20 20 20 20 e same..**
010860: 20 20 20 20 20 20 6E 61 6D 65 20 61 73 20 74 68 name as th
010870: 65 20 66 69 72 73 74 20 73 6F 75 72 63 65 20 66 e first source f
010880: 69 6C 65 2C 20 62 75 74 20 77 69 74 68 20 61 20 ile, but with a
010890: 52 45 4C 20 65 78 74 65 6E 73 69 6F 6E 2E 0D 0A REL extension...
0108A0: 2A 2A 0D 0A 2A 2A 20 73 6F 75 72 63 65 2E 2E 2E **..** source...
0108B0: 20 20 4E 61 6D 65 73 20 6F 66 20 74 68 65 20 73 Names of the s
0108C0: 6F 75 72 63 65 20 66 69 6C 65 73 20 74 6F 20 62 ource files to b
0108D0: 65 20 61 73 73 65 6D 62 6C 65 64 2E 20 20 54 68 e assembled. Th
0108E0: 65 20 64 65 66 61 75 6C 74 2C 61 6E 64 0D 0A 2A e default,and..*
0108F0: 2A 20 20 20 20 20 20 20 20 20 20 20 20 6F 6E 6C * onl
010900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0109A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0109B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0109C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0109D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0109E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0109F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010A00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010A10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010A20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010A30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010A40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010A50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010A60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010A70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010A80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010A90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010AA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010AB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010AC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010AD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010AE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
010AF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
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: 79 20 61 6C 6C 6F 77 65 64 2C 20 65 78 74 65 6E y allowed, exten
010C10: 73 69 6F 6E 20 69 73 20 4D 41 43 2E 20 20 41 20 sion is MAC. A
010C20: 64 72 69 76 65 20 73 70 65 63 69 66 69 65 72 20 drive specifier
010C30: 69 73 20 61 6C 6C 6F 77 65 64 2E 0D 0A 2A 2A 20 is allowed...**
010C40: 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 6E The n
010C50: 61 6D 65 64 20 66 69 6C 65 73 20 77 69 6C 6C 20 amed files will
010C60: 62 65 20 61 73 73 65 6D 62 6C 65 64 20 61 73 20 be assembled as
010C70: 6F 6E 65 20 66 69 6C 65 20 63 6F 6E 63 61 74 65 one file concate
010C80: 6E 61 74 65 64 0D 0A 2A 2A 20 20 20 20 20 20 20 nated..**
010C90: 20 20 20 20 20 69 6E 20 74 68 65 20 6F 72 64 65 in the orde
010CA0: 72 20 67 69 76 65 6E 2E 0D 0A 2A 2A 0D 0A 2A 2A r given...**..**
010CB0: 20 20 20 20 20 20 20 20 20 20 20 20 4E 4F 54 45 NOTE
010CC0: 3A 20 54 68 65 20 6D 6F 64 75 6C 65 20 6E 61 6D : The module nam
010CD0: 65 20 69 6E 20 74 68 65 20 52 45 4C 20 66 69 6C e in the REL fil
010CE0: 65 20 77 69 6C 6C 20 62 65 20 74 61 6B 65 6E 20 e will be taken
010CF0: 66 72 6F 6D 0D 0A 2A 2A 20 20 20 20 20 20 20 20 from..**
010D00: 20 20 20 20 74 68 65 20 66 69 72 73 74 20 36 20 the first 6
010D10: 63 68 61 72 61 63 74 65 72 73 20 6F 66 20 74 68 characters of th
010D20: 65 20 6F 62 6A 65 63 74 20 66 69 6C 65 6E 61 6D e object filenam
010D30: 65 2E 0D 0A 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 e...*/..#include
010D40: 20 3C 73 74 64 69 6F 2E 68 3E 0D 0A 23 69 6E 63 <stdio.h>..#inc
010D50: 6C 75 64 65 20 22 6E 6F 74 69 63 65 2E 68 22 0D lude "notice.h".
010D60: 0A 23 69 6E 63 6C 75 64 65 20 22 6D 61 63 2E 68 .#include "mac.h
010D70: 22 09 0D 0A 23 69 6E 63 6C 75 64 65 20 22 72 65 "...#include "re
010D80: 6C 2E 68 22 0D 0A 23 69 6E 63 6C 75 64 65 20 22 l.h"..#include "
010D90: 6D 69 74 2E 68 22 0D 0A 23 64 65 66 69 6E 65 20 mit.h"..#define
010DA0: 4E 4F 43 43 41 52 47 43 0D 0A 0D 0A 2F 2A 0D 0A NOCCARGC..../*..
010DB0: 2A 2A 20 73 79 6D 62 6F 6C 20 74 61 62 6C 65 0D ** symbol table.
010DC0: 0A 2A 2F 0D 0A 69 6E 74 0D 0A 20 20 73 74 6D 61 .*/..int.. stma
010DD0: 78 20 3D 20 53 54 4D 41 58 2C 09 09 2F 2A 20 6D x = STMAX,../* m
010DE0: 61 78 69 6D 75 6D 20 73 79 6D 62 6F 6C 73 20 2A aximum symbols *
010DF0: 2F 0D 0A 20 20 73 74 6E 2C 09 09 09 09 2F 2A 20 /.. stn,..../*
010E00: 09 2F 2A 20 73 6F 75 6E 64 20 74 68 65 20 61 6C ./* sound the al
010E10: 61 72 6D 20 2A 2F 0D 0A 20 20 7D 0D 0A 0D 0A 2F arm */.. }..../
010E20: 2A 0D 0A 2A 2A 20 70 61 73 73 20 6F 6E 65 0D 0A *..** pass one..
010E30: 2A 2F 0D 0A 70 61 73 73 31 28 61 72 67 63 2C 20 */..pass1(argc,
010E40: 61 72 67 76 29 20 69 6E 74 20 61 72 67 63 2C 20 argv) int argc,
010E50: 2A 61 72 67 76 3B 20 7B 0D 0A 20 20 69 6E 74 20 *argv; {.. int
010E60: 6D 61 78 3B 0D 0A 20 20 73 74 20 20 3D 20 63 61 max;.. st = ca
010E70: 6C 6C 6F 63 28 53 54 42 55 46 53 5A 2C 20 20 20 lloc(STBUFSZ,
010E80: 31 29 3B 09 09 2F 2A 20 61 6C 6C 6F 63 61 74 65 1);../* allocate
010E90: 20 7A 65 72 6F 65 64 20 73 79 6D 62 6F 6C 20 74 zeroed symbol t
010EA0: 61 62 6C 65 20 2A 2F 0D 0A 20 20 73 74 70 20 3D able */.. stp =
010EB0: 20 63 61 6C 6C 6F 63 28 73 74 6D 61 78 2C 20 49 calloc(stmax, I
010EC0: 4E 54 53 5A 29 3B 0D 0A 20 20 73 74 65 6E 64 20 NTSZ);.. stend
010ED0: 3D 20 73 74 20 2B 20 53 54 42 55 46 53 5A 3B 09 = st + STBUFSZ;.
010EE0: 09 09 2F 2A 20 72 65 6D 65 6D 62 65 72 20 65 6E ../* remember en
010EF0: 64 20 6F 66 20 74 61 62 6C 65 20 2A 2F 0D 0A 20 d of table */..
010F00: 20 6D 61 78 20 3D 20 61 76 61 69 6C 28 59 45 53 max = avail(YES
010F10: 29 3B 09 09 09 2F 2A 20 68 6F 77 20 6D 75 63 68 );.../* how much
010F20: 20 61 76 61 69 6C 61 62 6C 65 3F 20 2A 2F 0D 0A available? */..
010F30: 20 20 6D 61 78 20 2D 3D 20 53 54 41 43 4B 20 2B max -= STACK +
010F40: 20 28 4D 41 58 4F 50 45 4E 20 2A 20 4F 48 44 4F (MAXOPEN * OHDO
010F50: 50 45 4E 29 3B 09 2F 2A 20 63 61 6C 63 75 6C 61 PEN);./* calcula
010F60: 74 65 20 68 6F 77 20 6D 75 63 68 20 2A 2F 0D 0A te how much */..
010F70: 20 20 6D 74 20 3D 20 6D 74 6E 65 78 74 20 3D 20 mt = mtnext =
010F80: 63 61 6C 6C 6F 63 28 6D 61 78 2C 20 31 29 3B 09 calloc(max, 1);.
010F90: 09 2F 2A 20 61 6C 6C 6F 63 61 74 65 20 73 70 61 ./* allocate spa
010FA0: 63 65 20 2A 2F 0D 0A 20 20 6D 74 65 6E 64 20 3D ce */.. mtend =
010FB0: 20 6D 74 20 2B 20 6D 61 78 20 2D 20 4D 41 58 4C mt + max - MAXL
010FC0: 49 4E 45 3B 09 09 2F 2A 20 6E 6F 74 65 20 65 6E INE;../* note en
010FD0: 64 20 6F 66 20 6D 61 63 72 6F 20 62 75 66 66 65 d of macro buffe
010FE0: 72 20 2A 2F 0D 0A 20 20 64 6F 70 61 73 73 28 61 r */.. dopass(a
010FF0: 72 67 63 2C 20 61 72 67 76 29 3B 09 09 09 2F 2A rgc, argv);.../*
011000: 6E 75 6D 62 65 72 20 6F 66 20 73 79 6D 62 6F 6C number of symbol
011010: 73 20 6C 6F 61 64 65 64 20 2A 2F 0D 0A 20 2A 73 s loaded */.. *s
011020: 74 70 3B 09 09 09 09 2F 2A 20 73 79 6D 62 6F 6C tp;..../* symbol
011030: 20 74 61 62 6C 65 20 70 6F 69 6E 74 65 72 20 61 table pointer a
011040: 72 72 61 72 20 2A 2F 0D 0A 63 68 61 72 0D 0A 20 rrar */..char..
011050: 2A 73 74 2C 09 09 09 09 2F 2A 20 73 79 6D 62 6F *st,..../* symbo
011060: 6C 20 74 61 62 6C 65 20 62 75 66 66 65 72 20 2A l table buffer *
011070: 2F 0D 0A 20 2A 73 74 65 6E 64 2C 09 09 09 2F 2A /.. *stend,.../*
011080: 20 65 6E 64 20 6F 66 20 73 79 6D 62 6F 6C 20 74 end of symbol t
011090: 61 62 6C 65 20 2A 2F 0D 0A 20 2A 73 74 70 74 72 able */.. *stptr
0110A0: 2C 09 09 09 2F 2A 20 73 74 20 65 6E 74 72 79 20 ,.../* st entry
0110B0: 70 6F 69 6E 74 65 72 20 2A 2F 0D 0A 20 20 73 74 pointer */.. st
0110C0: 73 79 6D 5B 4D 41 58 4C 41 42 2B 31 5D 3B 09 09 sym[MAXLAB+1];..
0110D0: 2F 2A 20 74 65 6D 70 6F 72 61 72 79 20 73 79 6D /* temporary sym
0110E0: 62 6F 6C 20 73 70 61 63 65 20 2A 2F 0D 0A 0D 0A bol space */....
0110F0: 2F 2A 0D 0A 2A 2A 20 6D 61 63 72 6F 20 64 65 66 /*..** macro def
011100: 69 6E 69 74 69 6F 6E 20 74 61 62 6C 65 0D 0A 2A inition table..*
011110: 2F 0D 0A 63 68 61 72 0D 0A 20 2A 6D 74 2C 09 09 /..char.. *mt,..
011120: 09 09 2F 2A 20 6D 61 63 72 6F 20 74 61 62 6C 65 ../* macro table
011130: 20 62 75 66 66 65 72 20 2A 2F 0D 0A 20 2A 6D 74 buffer */.. *mt
011140: 70 72 65 76 2C 09 09 09 2F 2A 20 70 72 65 76 69 prev,.../* previ
011150: 6F 75 73 20 6D 74 20 65 6E 74 72 79 20 2A 2F 0D ous mt entry */.
011160: 0A 20 2A 6D 74 6E 65 78 74 2C 09 09 09 2F 2A 20 . *mtnext,.../*
011170: 6E 65 78 74 20 61 76 61 69 6C 61 62 6C 65 20 6D next available m
011180: 74 20 62 79 74 65 20 2A 2F 0D 0A 20 2A 6D 74 65 t byte */.. *mte
011190: 6E 64 2C 09 09 09 2F 2A 20 65 6E 64 20 6F 66 20 nd,.../* end of
0111A0: 6D 61 63 72 6F 20 74 61 62 6C 65 20 2A 2F 0D 0A macro table */..
0111B0: 20 2A 6D 74 70 74 72 3B 09 09 09 2F 2A 20 6D 74 *mtptr;.../* mt
0111C0: 20 65 6E 74 72 79 20 70 6F 69 6E 74 65 72 20 2A entry pointer *
0111D0: 2F 0D 0A 0D 0A 69 6E 74 0D 0A 20 20 70 61 73 73 /....int.. pass
0111E0: 20 3D 20 31 2C 09 09 09 2F 2A 20 77 68 69 63 68 = 1,.../* which
0111F0: 20 70 61 73 73 3F 20 2A 2F 0D 0A 20 20 62 61 64 pass? */.. bad
011200: 20 64 6F 20 70 61 73 73 20 31 20 2A 2F 0D 0A 20 do pass 1 */..
011210: 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 61 73 }..../*..** pas
011220: 73 20 74 77 6F 0D 0A 2A 2F 0D 0A 70 61 73 73 32 s two..*/..pass2
011230: 28 61 72 67 63 2C 20 61 72 67 76 29 20 69 6E 74 (argc, argv) int
011240: 20 61 72 67 63 2C 20 2A 61 72 67 76 3B 20 7B 0D argc, *argv; {.
011250: 0A 20 20 69 6E 74 20 69 3B 0D 0A 20 20 6F 75 74 . int i;.. out
011260: 72 65 6C 20 3D 20 6F 70 65 6E 28 6F 62 6A 66 6E rel = open(objfn
011270: 2C 20 22 77 22 29 3B 09 09 2F 2A 20 6F 70 65 6E , "w");../* open
011280: 20 6F 62 6A 65 63 74 20 66 69 6C 65 20 2A 2F 0D object file */.
011290: 0A 20 20 70 75 74 6E 61 6D 65 28 29 3B 09 09 09 . putname();...
0112A0: 09 2F 2A 20 64 65 63 6C 61 72 65 20 6D 6F 64 75 ./* declare modu
0112B0: 6C 65 20 6E 61 6D 65 20 2A 2F 0D 0A 20 20 70 75 le name */.. pu
0112C0: 74 65 6E 74 28 29 3B 09 09 09 09 2F 2A 20 64 65 tent();..../* de
0112D0: 63 6C 61 72 65 20 65 6E 74 72 79 20 70 6F 69 6E clare entry poin
0112E0: 74 73 20 2A 2F 0D 0A 20 20 70 75 74 73 7A 28 29 ts */.. putsz()
0112F0: 3B 09 09 09 09 2F 2A 20 64 65 63 6C 61 72 65 20 ;..../* declare
011300: 70 72 6F 67 72 61 6D 20 73 69 7A 65 20 2A 2F 0D program size */.
011310: 0A 20 20 70 61 73 73 20 3D 20 32 3B 09 09 09 09 . pass = 2;....
011320: 2F 2A 20 73 69 67 6E 61 6C 20 70 61 73 73 20 32 /* signal pass 2
011330: 20 2A 2F 0D 0A 20 20 64 6F 70 61 73 73 28 61 72 */.. dopass(ar
011340: 67 63 2C 20 61 72 67 76 29 3B 09 09 09 2F 2A 20 gc, argv);.../*
011350: 64 6F 20 70 61 73 73 20 32 20 2A 2F 0D 0A 20 20 do pass 2 */..
011360: 70 75 74 65 78 73 28 29 3B 09 09 09 09 2F 2A 20 putexs();..../*
011370: 64 65 63 6C 61 72 65 20 65 70 20 61 6E 64 20 78 declare ep and x
011380: 72 20 73 79 6D 62 6F 6C 73 20 2A 2F 0D 0A 20 20 r symbols */..
011390: 70 75 74 65 6E 64 28 29 3B 09 09 09 09 2F 2A 20 putend();..../*
0113A0: 64 65 63 6C 61 72 65 20 65 6E 64 20 6F 66 20 70 declare end of p
0113B0: 72 6F 67 72 61 6D 20 2A 2F 0D 0A 20 20 69 66 28 rogram */.. if(
0113C0: 66 65 72 72 6F 72 28 6F 75 74 72 65 6C 29 29 20 ferror(outrel))
0113D0: 65 72 72 20 3D 20 59 45 53 3B 0D 0A 20 20 63 6C err = YES;.. cl
0113E0: 6F 73 65 28 6F 75 74 72 65 6C 29 3B 09 09 09 2F ose(outrel);.../
0113F0: 2A 20 63 6C 6F 73 65 20 6F 62 6A 65 63 74 20 66 * close object f
011400: 73 79 6D 2C 09 09 09 2F 2A 20 62 61 64 20 73 79 sym,.../* bad sy
011410: 6D 62 6F 6C 3F 20 2A 2F 0D 0A 20 20 67 6F 74 65 mbol? */.. gote
011420: 70 2C 09 09 09 2F 2A 20 68 61 76 65 20 61 6E 20 p,.../* have an
011430: 65 6E 74 72 79 20 70 6F 69 6E 74 3F 20 2A 2F 0D entry point? */.
011440: 0A 20 20 67 6F 74 78 72 2C 09 09 09 2F 2A 20 68 . gotxr,.../* h
011450: 61 76 65 20 61 6E 20 65 78 74 65 72 6E 61 6C 20 ave an external
011460: 72 65 66 65 72 65 6E 63 65 3F 20 2A 2F 0D 0A 20 reference? */..
011470: 20 67 6F 74 6C 61 62 65 6C 2C 09 09 09 2F 2A 20 gotlabel,.../*
011480: 68 61 76 65 20 61 20 6C 61 62 65 6C 3F 20 2A 2F have a label? */
011490: 0D 0A 20 20 67 6F 74 6E 61 6D 2C 09 09 09 2F 2A .. gotnam,.../*
0114A0: 20 68 61 76 65 20 61 20 6E 61 6D 65 3F 20 2A 2F have a name? */
0114B0: 0D 0A 20 20 65 6F 6D 2C 09 09 09 09 2F 2A 20 65 .. eom,..../* e
0114C0: 6E 64 20 6F 66 20 6D 6F 64 75 6C 65 3F 20 2A 2F nd of module? */
0114D0: 0D 0A 20 20 65 6E 64 76 2C 09 09 09 09 2F 2A 20 .. endv,..../*
0114E0: 45 4E 44 20 76 61 6C 75 65 20 2A 2F 0D 0A 20 20 END value */..
0114F0: 65 6E 64 74 2C 09 09 09 09 2F 2A 20 45 4E 44 20 endt,..../* END
011500: 74 79 70 65 20 2A 2F 0D 0A 20 20 65 72 72 2C 09 type */.. err,.
011510: 09 09 09 2F 2A 20 65 72 72 6F 72 3F 20 2A 2F 0D .../* error? */.
011520: 0A 20 20 6C 65 72 72 2C 09 09 09 09 2F 2A 20 6C . lerr,..../* l
011530: 69 6E 65 20 65 72 72 6F 72 20 66 6C 61 67 73 20 ine error flags
011540: 2A 2F 0D 0A 20 20 6C 6F 63 2C 09 09 09 09 2F 2A */.. loc,..../*
011550: 20 6C 6F 63 61 74 69 6F 6E 20 63 6F 75 6E 74 65 location counte
011560: 72 20 2A 2F 0D 0A 20 20 6C 69 6E 2C 09 09 09 09 r */.. lin,....
011570: 2F 2A 20 6C 69 6E 65 20 63 6F 75 6E 74 65 72 20 /* line counter
011580: 2A 2F 0D 0A 20 20 73 72 63 66 64 2C 09 09 09 2F */.. srcfd,.../
011590: 2A 20 73 6F 75 72 63 65 20 66 69 6C 65 20 66 64 * source file fd
0115A0: 20 2A 2F 0D 0A 20 20 6C 69 73 74 2C 09 09 09 09 */.. list,....
0115B0: 2F 2A 20 67 65 6E 65 72 61 74 65 20 61 20 6C 69 /* generate a li
0115C0: 73 74 69 6E 67 3F 20 2A 2F 0D 0A 20 20 6C 6C 69 sting? */.. lli
0115D0: 6E 65 2C 09 09 09 2F 2A 20 6C 69 73 74 69 6E 67 ne,.../* listing
0115E0: 20 6C 69 6E 65 2C 20 66 6F 72 63 65 20 31 73 74 line, force 1st
0115F0: 20 70 61 67 65 20 68 65 61 64 69 6E 67 20 2A 2F page heading */
011600: 69 6C 65 20 2A 2F 0D 0A 20 20 7D 0D 0A 0D 0A 2F ile */.. }..../
011610: 2A 0D 0A 2A 2A 20 70 72 6F 63 65 73 73 20 70 61 *..** process pa
011620: 73 73 65 73 20 31 20 61 6E 64 20 32 0D 0A 2A 2F sses 1 and 2..*/
011630: 0D 0A 64 6F 70 61 73 73 28 61 72 67 63 2C 20 61 ..dopass(argc, a
011640: 72 67 76 29 20 69 6E 74 20 61 72 67 63 2C 20 2A rgv) int argc, *
011650: 61 72 67 76 3B 20 7B 0D 0A 20 20 69 6E 74 20 6D argv; {.. int m
011660: 6F 70 3B 0D 0A 20 20 69 6E 74 20 69 3B 0D 0A 20 op;.. int i;..
011670: 20 6D 6C 6E 65 78 74 20 3D 20 6C 70 61 67 65 20 mlnext = lpage
011680: 3D 20 69 20 3D 20 6C 69 6E 20 3D 20 6C 6F 63 20 = i = lin = loc
011690: 3D 20 30 3B 09 2F 2A 20 72 65 73 65 74 20 65 76 = 0;./* reset ev
0116A0: 65 72 79 74 68 69 6E 67 20 2A 2F 0D 0A 20 20 6C erything */.. l
0116B0: 6C 69 6E 65 20 3D 20 31 30 30 3B 09 09 09 09 2F line = 100;..../
0116C0: 2A 20 66 6F 72 63 65 20 70 61 67 65 20 68 65 61 * force page hea
0116D0: 64 69 6E 67 20 2A 2F 0D 0A 20 20 77 68 69 6C 65 ding */.. while
0116E0: 28 67 65 74 61 72 67 28 2B 2B 69 2C 20 73 72 63 (getarg(++i, src
0116F0: 66 6E 2C 20 4D 41 58 46 4E 2C 20 61 72 67 63 2C fn, MAXFN, argc,
011700: 20 61 72 67 76 29 20 21 3D 20 45 4F 46 29 20 7B argv) != EOF) {
011710: 0D 0A 20 20 20 20 69 66 28 73 72 63 66 6E 5B 30 .. if(srcfn[0
011720: 5D 20 3D 3D 20 27 2D 27 29 20 63 6F 6E 74 69 6E ] == '-') contin
011730: 75 65 3B 0D 0A 20 20 20 20 69 66 28 65 78 74 65 ue;.. if(exte
011740: 6E 64 28 73 72 63 66 6E 2C 20 53 52 43 45 58 54 nd(srcfn, SRCEXT
011750: 2C 20 4F 42 4A 45 58 54 29 29 20 63 6F 6E 74 69 , OBJEXT)) conti
011760: 6E 75 65 3B 20 0D 0A 20 20 20 20 73 72 63 66 64 nue; .. srcfd
011770: 20 3D 20 6F 70 65 6E 28 73 72 63 66 6E 2C 20 22 = open(srcfn, "
011780: 72 22 29 3B 09 09 2F 2A 20 6F 70 65 6E 20 73 6F r");../* open so
011790: 75 72 63 65 20 66 69 6C 65 20 2A 2F 0D 0A 20 20 urce file */..
0117A0: 20 20 65 6F 6D 20 3D 20 4E 4F 3B 09 09 09 09 2F eom = NO;..../
0117B0: 2A 20 6E 6F 74 20 65 6E 64 20 6F 66 20 6D 6F 64 * not end of mod
0117C0: 75 6C 65 20 2A 2F 0D 0A 20 20 20 20 67 6F 74 6F ule */.. goto
0117D0: 20 69 6E 70 75 74 3B 0D 0A 20 20 20 20 77 68 69 input;.. whi
0117E0: 6C 65 28 59 45 53 29 20 7B 0D 0A 20 20 20 20 20 le(YES) {..
0117F0: 20 70 6F 6C 6C 28 59 45 53 29 3B 0D 0A 20 20 20 poll(YES);..
011800: 0D 0A 20 20 70 61 72 74 31 2C 09 09 09 2F 2A 20 .. part1,.../*
011810: 70 61 72 74 20 31 20 6F 66 20 6C 69 73 74 69 6E part 1 of listin
011820: 67 20 6C 69 6E 65 20 70 72 69 6E 74 65 64 3F 20 g line printed?
011830: 2A 2F 0D 0A 20 20 63 63 6E 74 2C 09 09 09 09 2F */.. ccnt,..../
011840: 2A 20 63 6F 75 6E 74 20 6F 66 20 63 6F 64 65 20 * count of code
011850: 63 68 61 72 61 63 74 65 72 73 20 70 72 69 6E 74 characters print
011860: 65 64 20 2A 2F 0D 0A 20 20 6C 70 61 67 65 2C 09 ed */.. lpage,.
011870: 09 09 2F 2A 20 6C 69 73 74 69 6E 67 20 70 61 67 ../* listing pag
011880: 65 20 2A 2F 0D 0A 20 20 70 61 75 73 65 2C 09 09 e */.. pause,..
011890: 09 2F 2A 20 70 61 75 73 65 20 6F 6E 20 65 72 72 ./* pause on err
0118A0: 6F 72 73 3F 20 2A 2F 0D 0A 20 20 6C 6F 6F 6B 73 ors? */.. looks
0118B0: 2C 09 09 09 2F 2A 20 6E 75 6D 62 65 72 20 6F 66 ,.../* number of
0118C0: 20 6C 6F 6F 6B 73 20 74 6F 20 66 69 6E 64 20 69 looks to find i
0118D0: 6E 73 74 72 75 63 74 69 6F 6E 20 2A 2F 0D 0A 20 nstruction */..
0118E0: 20 6D 61 63 72 6F 73 20 3D 20 59 45 53 2C 09 09 macros = YES,..
0118F0: 09 2F 2A 20 6D 61 63 72 6F 20 70 72 6F 63 65 73 ./* macro proces
011900: 73 69 6E 67 3F 20 2A 2F 0D 0A 20 20 6D 6C 6E 65 sing? */.. mlne
011910: 78 74 2C 09 09 09 2F 2A 20 6E 65 78 74 20 6D 61 xt,.../* next ma
011920: 63 72 6F 20 6C 61 62 65 6C 20 74 6F 20 61 73 73 cro label to ass
011930: 69 67 6E 20 2A 2F 0D 0A 20 20 6D 6C 6E 62 72 5B ign */.. mlnbr[
011940: 31 30 5D 2C 09 09 09 2F 2A 20 6D 61 63 72 6F 20 10],.../* macro
011950: 6C 61 62 65 6C 20 6E 75 6D 62 65 72 73 20 2A 2F label numbers */
011960: 0D 0A 20 20 6D 70 70 74 72 5B 31 30 5D 2C 09 09 .. mpptr[10],..
011970: 09 2F 2A 20 6D 61 63 72 6F 20 70 61 72 61 6D 65 ./* macro parame
011980: 74 65 72 20 70 6F 69 6E 74 65 72 73 20 2A 2F 0D ter pointers */.
011990: 0A 20 20 64 65 66 6D 6F 64 65 2C 09 09 09 2F 2A . defmode,.../*
0119A0: 20 6D 61 63 72 6F 20 64 65 66 69 6E 69 74 69 6F macro definitio
0119B0: 6E 20 6D 6F 64 65 20 2A 2F 0D 0A 20 20 65 78 70 n mode */.. exp
0119C0: 6D 6F 64 65 3B 09 09 09 2F 2A 20 6D 61 63 72 6F mode;.../* macro
0119D0: 20 65 78 70 61 6E 73 69 6F 6E 20 6D 6F 64 65 20 expansion mode
0119E0: 2A 2F 0D 0A 0D 0A 63 68 61 72 0D 0A 20 2A 65 70 */....char.. *ep
0119F0: 2C 09 09 09 09 2F 2A 20 65 78 70 72 65 73 73 69 ,..../* expressi
011A00: 20 20 20 2B 2B 6C 69 6E 3B 20 6C 65 72 72 20 3D ++lin; lerr =
011A10: 20 30 3B 09 09 09 2F 2A 20 62 75 6D 70 20 6C 69 0;.../* bump li
011A20: 6E 65 20 63 6F 75 6E 74 65 72 20 26 20 7A 65 72 ne counter & zer
011A30: 6F 20 65 72 72 6F 72 73 20 2A 2F 0D 0A 20 20 20 o errors */..
011A40: 20 20 20 70 61 72 74 31 20 3D 20 4E 4F 3B 09 09 part1 = NO;..
011A50: 09 2F 2A 20 70 61 72 74 20 31 20 6F 66 20 6C 69 ./* part 1 of li
011A60: 6E 65 20 6E 6F 74 20 6C 69 73 74 65 64 20 2A 2F ne not listed */
011A70: 0D 0A 20 20 20 20 20 20 62 65 67 6C 69 6E 65 28 .. begline(
011A80: 29 3B 09 09 09 2F 2A 20 62 65 67 69 6E 20 61 20 );.../* begin a
011A90: 6C 69 73 74 69 6E 67 20 6C 69 6E 65 20 2A 2F 0D listing line */.
011AA0: 0A 20 20 20 20 20 20 69 66 28 6D 61 63 72 6F 73 . if(macros
011AB0: 20 3D 3D 20 4E 4F 29 20 7B 0D 0A 20 20 20 20 20 == NO) {..
011AC0: 20 20 20 64 6F 6C 61 62 65 6C 28 29 3B 09 09 09 dolabel();...
011AD0: 2F 2A 20 64 6F 20 6C 61 62 65 6C 20 61 6E 64 20 /* do label and
011AE0: 66 69 6E 64 20 6E 65 78 74 20 66 69 65 6C 64 20 find next field
011AF0: 2A 2F 0D 0A 20 20 20 20 20 20 20 20 69 66 28 21 */.. if(!
011B00: 64 6F 6D 61 63 68 28 29 29 20 64 6F 61 73 6D 28 domach()) doasm(
011B10: 29 3B 09 09 2F 2A 20 6D 61 63 68 69 6E 65 20 6F );../* machine o
011B20: 72 20 61 73 73 65 6D 62 6C 65 72 20 69 6E 73 74 r assembler inst
011B30: 72 3F 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 7D r? */.. }
011B40: 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 7B 0D 0A .. else {..
011B50: 20 20 20 20 20 20 20 20 6C 70 20 3D 20 6C 69 6E lp = lin
011B60: 65 3B 0D 0A 20 20 20 20 20 20 20 20 6C 70 20 3D e;.. lp =
011B70: 20 67 65 74 73 79 6D 28 6C 70 2C 20 4E 4F 29 3B getsym(lp, NO);
011B80: 0D 0A 20 20 20 20 20 20 20 20 69 66 28 21 28 6D .. if(!(m
011B90: 6F 70 20 3D 20 6D 61 63 6F 70 28 29 29 20 26 26 op = macop()) &&
011BA0: 20 67 6F 74 6E 61 6D 29 20 7B 2F 2A 20 32 6E 64 gotnam) {/* 2nd
011BB0: 20 66 69 65 6C 64 20 61 20 74 6F 6B 65 6E 3F 20 field a token?
011BC0: 2A 2F 0D 0A 20 20 20 20 20 20 20 20 20 20 6C 70 */.. lp
011BD0: 20 3D 20 73 6B 69 70 28 31 2C 20 6C 69 6E 65 29 = skip(1, line)
011BE0: 3B 09 09 2F 2A 20 6E 6F 2C 20 74 72 79 20 66 69 ;../* no, try fi
011BF0: 72 73 74 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 rst */..
011C00: 6F 6E 20 70 6F 69 6E 74 65 72 20 2A 2F 0D 0A 20 on pointer */..
011C10: 2A 6C 70 2C 09 09 09 09 2F 2A 20 6C 69 6E 65 20 *lp,..../* line
011C20: 70 6F 69 6E 74 65 72 20 2A 2F 0D 0A 20 20 6C 69 pointer */.. li
011C30: 6E 65 5B 4D 41 58 4C 49 4E 45 5D 2C 09 09 2F 2A ne[MAXLINE],../*
011C40: 20 73 6F 75 72 63 65 20 6C 69 6E 65 20 2A 2F 0D source line */.
011C50: 0A 20 2A 70 72 69 6F 72 2C 09 09 09 2F 2A 20 70 . *prior,.../* p
011C60: 72 69 6F 72 20 65 78 74 20 72 65 66 20 69 6E 20 rior ext ref in
011C70: 63 68 61 69 6E 20 2A 2F 0D 0A 20 20 73 72 63 66 chain */.. srcf
011C80: 6E 5B 4D 41 58 46 4E 2B 34 5D 2C 09 09 2F 2A 20 n[MAXFN+4],../*
011C90: 73 6F 75 72 63 65 20 66 69 6C 65 6E 61 6D 65 20 source filename
011CA0: 2A 2F 0D 0A 20 20 6F 62 6A 66 6E 5B 4D 41 58 46 */.. objfn[MAXF
011CB0: 4E 2B 34 5D 3B 09 09 2F 2A 20 6F 62 6A 65 63 74 N+4];../* object
011CC0: 20 66 69 6C 65 6E 61 6D 65 20 2A 2F 0D 0A 0D 0A filename */....
011CD0: 6D 61 69 6E 28 61 72 67 63 2C 20 61 72 67 76 29 main(argc, argv)
011CE0: 20 69 6E 74 20 61 72 67 63 2C 20 2A 61 72 67 76 int argc, *argv
011CF0: 3B 20 7B 0D 0A 20 20 66 70 75 74 73 28 22 53 6D ; {.. fputs("Sm
011D00: 61 6C 6C 2D 4D 61 63 20 41 73 73 65 6D 62 6C 65 all-Mac Assemble
011D10: 72 2C 20 22 2C 20 73 74 64 65 72 72 29 3B 20 66 r, ", stderr); f
011D20: 70 75 74 73 28 56 45 52 53 49 4F 4E 2C 20 73 74 puts(VERSION, st
011D30: 64 65 72 72 29 3B 0D 0A 20 20 66 70 75 74 73 28 derr);.. fputs(
011D40: 43 52 49 47 48 54 31 2C 20 73 74 64 65 72 72 29 CRIGHT1, stderr)
011D50: 3B 0D 0A 20 20 67 65 74 73 77 28 61 72 67 63 2C ;.. getsw(argc,
011D60: 20 61 72 67 76 29 3B 09 09 2F 2A 20 67 65 74 20 argv);../* get
011D70: 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 20 73 77 69 command line swi
011D80: 74 63 68 65 73 20 2A 2F 0D 0A 20 20 70 61 73 73 tches */.. pass
011D90: 31 28 61 72 67 63 2C 20 61 72 67 76 29 3B 09 09 1(argc, argv);..
011DA0: 2F 2A 20 62 75 69 6C 64 20 73 79 6D 62 6F 6C 20 /* build symbol
011DB0: 74 61 62 6C 65 20 2A 2F 0D 0A 20 20 70 61 73 73 table */.. pass
011DC0: 32 28 61 72 67 63 2C 20 61 72 67 76 29 3B 09 09 2(argc, argv);..
011DD0: 2F 2A 20 67 65 6E 65 72 61 74 65 20 6F 62 6A 65 /* generate obje
011DE0: 63 74 20 63 6F 64 65 20 2A 2F 0D 0A 20 20 69 66 ct code */.. if
011DF0: 28 65 72 72 29 20 61 62 6F 72 74 28 37 29 3B 09 (err) abort(7);.
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: 20 20 6D 6F 70 20 3D 20 6D 61 63 6F 70 28 29 3B mop = macop();
011F10: 0D 0A 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 .. }..
011F20: 20 20 20 20 20 20 20 69 66 28 64 65 66 6D 6F 64 if(defmod
011F30: 65 29 20 7B 09 09 09 2F 2A 20 64 65 66 69 6E 69 e) {.../* defini
011F40: 74 69 6F 6E 20 6D 6F 64 65 20 2A 2F 0D 0A 20 20 tion mode */..
011F50: 20 20 20 20 20 20 20 20 69 66 28 6D 6F 70 20 3D if(mop =
011F60: 3D 20 45 4E 44 4D 29 20 64 65 66 6D 6F 64 65 20 = ENDM) defmode
011F70: 3D 20 4E 4F 3B 0D 0A 20 20 20 20 20 20 20 20 20 = NO;..
011F80: 20 69 66 28 70 61 73 73 20 3D 3D 20 31 29 20 70 if(pass == 1) p
011F90: 75 74 6D 61 63 28 29 3B 09 2F 2A 20 70 75 74 20 utmac();./* put
011FA0: 6C 69 6E 65 20 69 6E 20 6D 61 63 72 6F 20 74 61 line in macro ta
011FB0: 62 6C 65 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 ble */..
011FC0: 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 65 6C 73 }.. els
011FD0: 65 20 7B 09 09 09 09 2F 2A 20 63 6F 70 79 20 6F e {..../* copy o
011FE0: 72 20 65 78 70 61 6E 73 69 6F 6E 20 6D 6F 64 65 r expansion mode
011FF0: 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 20 20 69 */.. i
012000: 66 28 6D 6F 70 20 3D 3D 20 43 41 4C 4C 29 20 7B f(mop == CALL) {
012010: 09 09 2F 2A 20 65 6E 74 65 72 20 65 78 70 61 6E ../* enter expan
012020: 73 69 6F 6E 20 6D 6F 64 65 20 2A 2F 0D 0A 20 20 sion mode */..
012030: 20 20 20 20 20 20 20 20 20 20 65 78 70 6D 6F 64 expmod
012040: 65 20 3D 20 59 45 53 3B 0D 0A 20 20 20 20 20 20 e = YES;..
012050: 20 20 20 20 20 20 70 75 74 70 61 72 6D 28 29 3B putparm();
012060: 09 09 09 2F 2A 20 73 61 76 65 20 70 61 72 61 6D .../* save param
012070: 65 74 65 72 73 20 2A 2F 0D 0A 20 20 20 20 20 20 eters */..
012080: 20 20 20 20 20 20 64 6F 6C 61 62 65 6C 28 29 3B dolabel();
012090: 09 09 09 2F 2A 20 70 72 6F 63 65 73 73 20 6C 61 .../* process la
0120A0: 62 65 6C 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 bel */..
0120B0: 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 20 }..
0120C0: 20 65 6C 73 65 20 69 66 28 6D 6F 70 20 3D 3D 20 else if(mop ==
0120D0: 4D 41 43 52 4F 29 20 7B 09 2F 2A 20 65 6E 74 65 MACRO) {./* ente
0120E0: 72 20 64 65 66 69 6E 69 74 69 6F 6E 20 6D 6F 64 r definition mod
0120F0: 65 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 20 20 e */..
012100: 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A );.. }..../*..*
012110: 2A 20 74 65 73 74 20 66 6F 72 20 6D 61 63 72 6F * test for macro
012120: 20 62 75 66 66 65 72 20 6F 76 65 72 66 6C 6F 77 buffer overflow
012130: 0D 0A 2A 2F 0D 0A 6D 61 63 6F 76 65 72 28 70 74 ..*/..macover(pt
012140: 72 29 20 63 68 61 72 20 2A 70 74 72 3B 20 7B 0D r) char *ptr; {.
012150: 0A 20 20 69 66 28 70 74 72 20 3E 20 6D 74 65 6E . if(ptr > mten
012160: 64 29 20 65 72 72 6F 72 28 22 2D 20 4D 61 63 72 d) error("- Macr
012170: 6F 20 42 75 66 66 65 72 20 4F 76 65 72 66 6C 6F o Buffer Overflo
012180: 77 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D w");.. }..../*.
012190: 0A 2A 2A 20 66 69 6E 64 20 73 74 73 79 6D 20 69 .** find stsym i
0121A0: 6E 20 6D 61 63 72 6F 20 74 61 62 6C 65 0D 0A 2A n macro table..*
0121B0: 2A 20 72 65 74 75 72 6E 20 74 72 75 65 20 69 66 * return true if
0121C0: 20 66 6F 75 6E 64 2C 20 65 6C 73 65 20 66 61 6C found, else fal
0121D0: 73 65 0D 0A 2A 2A 20 6C 65 61 76 65 20 6D 74 70 se..** leave mtp
0121E0: 74 72 20 70 6F 69 6E 74 69 6E 67 20 74 6F 20 62 tr pointing to b
0121F0: 6F 64 79 20 6F 66 20 64 65 73 69 72 65 64 20 6D ody of desired m
012200: 61 63 72 6F 0D 0A 2A 2F 0D 0A 6D 74 66 69 6E 64 acro..*/..mtfind
012210: 28 29 20 7B 0D 0A 20 20 69 66 28 61 74 65 6E 64 () {.. if(atend
012220: 28 2A 6C 70 29 20 3D 3D 20 30 29 20 7B 0D 0A 20 (*lp) == 0) {..
012230: 20 20 20 6D 74 70 74 72 20 3D 20 6D 74 3B 0D 0A mtptr = mt;..
012240: 20 20 20 20 64 6F 20 7B 0D 0A 20 20 20 20 20 20 do {..
012250: 69 66 28 66 6C 64 63 6D 70 28 6C 70 2C 20 6D 74 if(fldcmp(lp, mt
012260: 70 74 72 20 2B 20 4D 54 4E 41 4D 29 20 3D 3D 20 ptr + MTNAM) ==
012270: 30 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6D 74 0) {.. mt
012280: 70 74 72 20 2B 3D 20 4D 54 4E 41 4D 3B 0D 0A 20 ptr += MTNAM;..
012290: 20 20 20 20 20 20 20 6D 74 70 74 72 20 2B 3D 20 mtptr +=
0122A0: 73 74 72 6C 65 6E 28 6D 74 70 74 72 29 20 2B 20 strlen(mtptr) +
0122B0: 31 3B 0D 0A 20 20 20 20 20 20 20 20 72 65 74 75 1;.. retu
0122C0: 72 6E 20 28 59 45 53 29 3B 0D 0A 20 20 20 20 20 rn (YES);..
0122D0: 20 20 20 7D 0D 0A 20 20 20 20 20 20 6D 74 70 74 }.. mtpt
0122E0: 72 20 3D 20 67 65 74 69 6E 74 28 6D 74 70 74 72 r = getint(mtptr
0122F0: 29 3B 0D 0A 20 20 20 20 20 20 7D 20 77 68 69 6C );.. } whil
012300: 20 20 64 65 66 6D 6F 64 65 20 3D 20 59 45 53 3B defmode = YES;
012310: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 69 66 .. if
012320: 28 70 61 73 73 20 3D 3D 20 31 29 20 6E 65 77 6D (pass == 1) newm
012330: 61 63 28 29 3B 09 2F 2A 20 69 6E 69 74 20 6E 65 ac();./* init ne
012340: 77 20 6D 61 63 72 6F 20 69 6E 20 74 61 62 6C 65 w macro in table
012350: 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 20 20 20 */..
012360: 20 7D 0D 0A 20 20 20 20 20 20 20 20 20 20 65 6C }.. el
012370: 73 65 20 69 66 28 6D 6F 70 20 3D 3D 20 45 4E 44 se if(mop == END
012380: 4D 29 20 7B 09 2F 2A 20 6C 65 61 76 65 20 65 78 M) {./* leave ex
012390: 70 61 6E 73 69 6F 6E 20 6D 6F 64 65 20 2A 2F 0D pansion mode */.
0123A0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 . exp
0123B0: 6D 6F 64 65 20 3D 20 4E 4F 3B 0D 0A 20 20 20 20 mode = NO;..
0123C0: 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 }..
0123D0: 20 20 20 20 20 65 6C 73 65 20 7B 0D 0A 20 20 20 else {..
0123E0: 20 20 20 20 20 20 20 20 20 69 66 28 65 78 70 6D if(expm
0123F0: 6F 64 65 29 20 72 65 70 6C 61 63 65 28 29 3B 0D ode) replace();.
012400: 0A 20 20 20 20 20 20 20 20 20 20 20 20 64 6F 6C . dol
012410: 61 62 65 6C 28 29 3B 09 09 09 2F 2A 20 64 6F 20 abel();.../* do
012420: 6C 61 62 65 6C 20 61 6E 64 20 66 69 6E 64 20 6E label and find n
012430: 65 78 74 20 66 69 65 6C 64 20 2A 2F 0D 0A 20 20 ext field */..
012440: 20 20 20 20 20 20 20 20 20 20 69 66 28 21 64 6F if(!do
012450: 6D 61 63 68 28 29 29 20 64 6F 61 73 6D 28 29 3B mach()) doasm();
012460: 09 2F 2A 20 6D 61 63 68 69 6E 65 20 6F 72 20 61 ./* machine or a
012470: 73 73 65 6D 62 6C 65 72 20 69 6E 73 74 72 3F 20 ssembler instr?
012480: 2A 2F 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 */..
012490: 7D 0D 0A 20 20 20 20 20 20 20 20 20 20 7D 0D 0A }.. }..
0124A0: 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 }..
0124B0: 20 65 6E 64 6C 69 6E 65 28 29 3B 09 09 09 2F 2A endline();.../*
0124C0: 20 65 6E 64 20 61 20 6C 69 73 74 69 6E 67 20 6C end a listing l
0124D0: 69 6E 65 20 2A 2F 0D 0A 20 20 20 20 20 20 69 66 ine */.. if
0124E0: 28 70 61 73 73 20 3D 3D 20 32 29 20 67 72 69 70 (pass == 2) grip
0124F0: 65 28 29 3B 09 09 2F 2A 20 67 72 69 70 65 20 61 e();../* gripe a
012500: 65 28 6D 74 70 74 72 29 3B 0D 0A 20 20 20 20 7D e(mtptr);.. }
012510: 0D 0A 20 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B .. return (NO);
012520: 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 .. }..../*..**
012530: 65 73 74 61 62 6C 69 73 68 20 6E 65 77 20 6D 61 establish new ma
012540: 63 72 6F 0D 0A 2A 2F 0D 0A 6E 65 77 6D 61 63 28 cro..*/..newmac(
012550: 29 20 7B 0D 0A 20 20 69 6E 74 20 69 3B 20 69 20 ) {.. int i; i
012560: 3D 20 30 3B 0D 0A 20 20 69 66 28 21 67 6F 74 6E = 0;.. if(!gotn
012570: 61 6D 20 7C 7C 20 62 61 64 73 79 6D 29 20 73 79 am || badsym) sy
012580: 6D 65 72 72 28 29 3B 0D 0A 20 20 65 6C 73 65 20 merr();.. else
012590: 7B 0D 0A 20 20 20 20 6D 61 63 6F 76 65 72 28 6D {.. macover(m
0125A0: 74 6E 65 78 74 29 3B 0D 0A 20 20 20 20 69 66 28 tnext);.. if(
0125B0: 6D 74 70 72 65 76 29 20 70 75 74 69 6E 74 28 6D mtprev) putint(m
0125C0: 74 70 72 65 76 2C 20 6D 74 6E 65 78 74 29 3B 0D tprev, mtnext);.
0125D0: 0A 20 20 20 20 6D 74 70 72 65 76 20 3D 20 6D 74 . mtprev = mt
0125E0: 6E 65 78 74 3B 0D 0A 20 20 20 20 70 75 74 69 6E next;.. putin
0125F0: 74 28 6D 74 6E 65 78 74 2C 20 30 29 3B 0D 0A 20 t(mtnext, 0);..
012600: 20 20 20 6D 74 6E 65 78 74 20 2B 3D 20 49 4E 54 mtnext += INT
012610: 53 5A 3B 0D 0A 20 20 20 20 77 68 69 6C 65 28 2A SZ;.. while(*
012620: 6D 74 6E 65 78 74 2B 2B 20 3D 20 73 74 73 79 6D mtnext++ = stsym
012630: 5B 69 2B 2B 5D 29 20 3B 0D 0A 20 20 20 20 7D 20 [i++]) ;.. }
012640: 20 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A .. }..../*..**
012650: 20 70 75 74 20 61 20 6C 69 6E 65 20 69 6E 20 74 put a line in t
012660: 68 65 20 6D 61 63 72 6F 20 62 75 66 66 65 72 0D he macro buffer.
012670: 0A 2A 2F 0D 0A 70 75 74 6D 61 63 28 29 20 7B 0D .*/..putmac() {.
012680: 0A 20 20 63 68 61 72 20 2A 63 70 3B 20 63 70 20 . char *cp; cp
012690: 3D 20 6C 69 6E 65 3B 0D 0A 20 20 6D 61 63 6F 76 = line;.. macov
0126A0: 65 72 28 6D 74 6E 65 78 74 29 3B 09 09 2F 2A 20 er(mtnext);../*
0126B0: 77 69 6C 6C 20 62 75 66 66 65 72 20 74 61 6B 65 will buffer take
0126C0: 20 69 74 3F 20 2A 2F 0D 0A 20 20 77 68 69 6C 65 it? */.. while
0126D0: 28 2A 6D 74 6E 65 78 74 2B 2B 20 3D 20 2A 63 70 (*mtnext++ = *cp
0126E0: 2B 2B 29 20 3B 09 2F 2A 20 63 6F 70 79 20 65 76 ++) ;./* copy ev
0126F0: 65 72 79 74 68 69 6E 67 20 2A 2F 0D 0A 20 20 7D erything */.. }
012700: 62 6F 75 74 20 65 72 72 6F 72 73 20 2A 2F 0D 0A bout errors */..
012710: 20 20 20 20 20 20 69 66 28 65 78 70 6D 6F 64 65 if(expmode
012720: 29 20 67 65 74 6D 61 63 28 29 3B 09 09 2F 2A 20 ) getmac();../*
012730: 66 65 74 63 68 20 6E 65 78 74 20 6D 61 63 72 6F fetch next macro
012740: 20 6C 69 6E 65 20 2A 2F 0D 0A 20 20 20 20 20 20 line */..
012750: 65 6C 73 65 20 7B 0D 0A 20 20 20 20 20 20 20 20 else {..
012760: 69 6E 70 75 74 3A 0D 0A 20 20 20 20 20 20 20 20 input:..
012770: 69 66 28 65 6F 6D 29 20 62 72 65 61 6B 3B 0D 0A if(eom) break;..
012780: 20 20 20 20 20 20 20 20 69 66 28 21 66 67 65 74 if(!fget
012790: 73 28 6C 69 6E 65 2C 20 4D 41 58 4C 49 4E 45 2C s(line, MAXLINE,
0127A0: 20 73 72 63 66 64 29 29 20 65 72 72 6F 72 28 22 srcfd)) error("
0127B0: 2D 20 4D 69 73 73 69 6E 67 20 45 4E 44 22 29 3B - Missing END");
0127C0: 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 .. }..
0127D0: 20 20 20 7D 0D 0A 20 20 20 20 69 66 28 64 65 66 }.. if(def
0127E0: 6D 6F 64 65 29 20 7B 65 72 72 20 3D 20 59 45 53 mode) {err = YES
0127F0: 3B 20 70 75 74 73 28 22 2D 20 4D 69 73 73 69 6E ; puts("- Missin
012800: 67 20 45 4E 44 4D 22 29 3B 7D 0D 0A 20 20 20 20 g ENDM");}..
012810: 63 6C 6F 73 65 28 73 72 63 66 64 29 3B 09 09 09 close(srcfd);...
012820: 2F 2A 20 63 6C 6F 73 65 20 73 6F 75 72 63 65 20 /* close source
012830: 66 69 6C 65 20 2A 2F 0D 0A 20 20 20 20 7D 0D 0A file */.. }..
012840: 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 63 61 }..../*..** ca
012850: 6E 20 6C 69 6E 65 20 74 61 6B 65 20 6D 6F 72 65 n line take more
012860: 3F 0D 0A 2A 2F 0D 0A 63 61 6E 74 61 6B 65 28 69 ?..*/..cantake(i
012870: 2C 20 6E 65 65 64 29 20 69 6E 74 20 69 2C 20 6E , need) int i, n
012880: 65 65 64 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E eed; {.. return
012890: 20 28 69 20 3C 20 28 4D 41 58 4C 49 4E 45 20 2D (i < (MAXLINE -
0128A0: 20 33 29 20 2D 20 6E 65 65 64 29 3B 0D 0A 20 20 3) - need);..
0128B0: 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 67 65 74 20 }..../*..** get
0128C0: 61 20 6C 69 6E 65 20 66 72 6F 6D 20 74 68 65 20 a line from the
0128D0: 6D 61 63 72 6F 20 62 75 66 66 65 72 0D 0A 2A 2F macro buffer..*/
0128E0: 0D 0A 67 65 74 6D 61 63 28 29 20 7B 0D 0A 20 20 ..getmac() {..
0128F0: 63 68 61 72 20 2A 63 70 3B 20 63 70 20 3D 20 6C char *cp; cp = l
012900: 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 73 61 76 65 20 ..../*..** save
012910: 6D 61 63 72 6F 20 63 61 6C 6C 20 70 61 72 61 6D macro call param
012920: 65 74 65 72 73 20 69 6E 20 6D 61 63 72 6F 20 62 eters in macro b
012930: 75 66 66 65 72 0D 0A 2A 2A 20 61 6E 64 20 72 65 uffer..** and re
012940: 73 65 74 20 6D 61 63 72 6F 20 6C 61 62 65 6C 73 set macro labels
012950: 0D 0A 2A 2F 0D 0A 70 75 74 70 61 72 6D 28 29 20 ..*/..putparm()
012960: 7B 0D 0A 20 20 69 6E 74 20 69 2C 20 64 6C 6D 3B {.. int i, dlm;
012970: 20 63 68 61 72 20 2A 63 70 3B 0D 0A 20 20 69 20 char *cp;.. i
012980: 3D 20 2D 31 3B 20 63 70 20 3D 20 6D 74 6E 65 78 = -1; cp = mtnex
012990: 74 3B 0D 0A 20 20 6C 70 20 3D 20 73 6B 69 70 28 t;.. lp = skip(
0129A0: 32 2C 20 6C 70 29 3B 09 09 09 2F 2A 20 73 6B 69 2, lp);.../* ski
0129B0: 70 20 74 6F 20 70 61 72 61 6D 65 74 65 72 73 20 p to parameters
0129C0: 2A 2F 0D 0A 20 20 77 68 69 6C 65 28 2B 2B 69 20 */.. while(++i
0129D0: 3C 20 31 30 29 20 7B 0D 0A 20 20 20 20 6D 6C 6E < 10) {.. mln
0129E0: 62 72 5B 69 5D 20 3D 20 30 3B 09 09 09 2F 2A 20 br[i] = 0;.../*
0129F0: 6E 75 6C 6C 20 6D 61 63 72 6F 20 6C 61 62 65 6C null macro label
012A00: 20 6E 62 72 20 2A 2F 0D 0A 20 20 20 20 77 68 69 nbr */.. whi
012A10: 6C 65 28 69 73 73 70 61 63 65 28 2A 6C 70 29 29 le(isspace(*lp))
012A20: 20 2B 2B 6C 70 3B 0D 0A 20 20 20 20 69 66 28 61 ++lp;.. if(a
012A30: 74 65 6E 64 28 2A 6C 70 29 20 7C 7C 20 2A 6C 70 tend(*lp) || *lp
012A40: 20 3D 3D 20 27 2C 27 29 20 6D 70 70 74 72 5B 69 == ',') mpptr[i
012A50: 5D 20 3D 20 30 3B 0D 0A 20 20 20 20 65 6C 73 65 ] = 0;.. else
012A60: 20 7B 0D 0A 20 20 20 20 20 20 6D 61 63 6F 76 65 {.. macove
012A70: 72 28 63 70 29 3B 0D 0A 20 20 20 20 20 20 6D 70 r(cp);.. mp
012A80: 70 74 72 5B 69 5D 20 3D 20 63 70 3B 0D 0A 20 20 ptr[i] = cp;..
012A90: 20 20 20 20 77 68 69 6C 65 28 21 61 74 65 6E 64 while(!atend
012AA0: 28 2A 6C 70 29 20 26 26 20 2A 6C 70 20 21 3D 20 (*lp) && *lp !=
012AB0: 27 2C 27 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 ',') {..
012AC0: 69 66 28 2A 6C 70 20 3D 3D 20 27 5C 22 27 20 7C if(*lp == '\"' |
012AD0: 7C 20 2A 6C 70 20 3D 3D 20 27 5C 27 27 29 20 7B | *lp == '\'') {
012AE0: 09 09 2F 2A 20 73 74 72 69 6E 67 3F 20 2A 2F 0D ../* string? */.
012AF0: 0A 20 20 20 20 20 20 20 20 20 20 64 6C 6D 20 3D . dlm =
012B00: 69 6E 65 3B 0D 0A 20 20 77 68 69 6C 65 28 2A 63 ine;.. while(*c
012B10: 70 2B 2B 20 3D 20 2A 6D 74 70 74 72 2B 2B 29 20 p++ = *mtptr++)
012B20: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ;.. }..../*..**
012B30: 20 67 65 74 20 73 77 69 74 63 68 65 73 20 66 72 get switches fr
012B40: 6F 6D 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 0D om command line.
012B50: 0A 2A 2F 0D 0A 67 65 74 73 77 28 61 72 67 63 2C .*/..getsw(argc,
012B60: 20 61 72 67 76 29 20 69 6E 74 20 61 72 67 63 2C argv) int argc,
012B70: 20 2A 61 72 67 76 3B 20 7B 0D 0A 20 20 63 68 61 *argv; {.. cha
012B80: 72 20 61 72 67 5B 4D 41 58 46 4E 2B 34 5D 3B 20 r arg[MAXFN+4];
012B90: 69 6E 74 20 69 2C 20 6A 2C 20 6C 65 6E 3B 0D 0A int i, j, len;..
012BA0: 20 20 69 20 3D 20 30 3B 0D 0A 20 20 77 68 69 6C i = 0;.. whil
012BB0: 65 28 67 65 74 61 72 67 28 2B 2B 69 2C 20 61 72 e(getarg(++i, ar
012BC0: 67 2C 20 4D 41 58 46 4E 2C 20 61 72 67 63 2C 20 g, MAXFN, argc,
012BD0: 61 72 67 76 29 20 21 3D 20 45 4F 46 29 20 7B 0D argv) != EOF) {.
012BE0: 0A 20 20 20 20 69 66 28 61 72 67 5B 30 5D 20 3D . if(arg[0] =
012BF0: 3D 20 27 2D 27 29 20 7B 0D 0A 20 20 20 20 20 20 = '-') {..
012C00: 20 20 20 20 20 69 66 28 74 6F 75 70 70 65 72 28 if(toupper(
012C10: 61 72 67 5B 31 5D 29 20 3D 3D 20 27 4C 27 29 20 arg[1]) == 'L')
012C20: 6C 69 73 74 20 3D 20 59 45 53 3B 0D 0A 20 20 20 list = YES;..
012C30: 20 20 20 65 6C 73 65 20 69 66 28 74 6F 75 70 70 else if(toupp
012C40: 65 72 28 61 72 67 5B 31 5D 29 20 3D 3D 20 27 50 er(arg[1]) == 'P
012C50: 27 29 20 70 61 75 73 65 20 3D 20 59 45 53 3B 0D ') pause = YES;.
012C60: 0A 20 20 20 20 20 20 65 6C 73 65 20 69 66 28 74 . else if(t
012C70: 6F 75 70 70 65 72 28 61 72 67 5B 31 5D 29 20 3D oupper(arg[1]) =
012C80: 3D 20 27 4E 27 20 26 26 0D 0A 20 20 20 20 20 20 = 'N' &&..
012C90: 20 20 20 20 20 20 20 20 74 6F 75 70 70 65 72 28 toupper(
012CA0: 61 72 67 5B 32 5D 29 20 3D 3D 20 27 4D 27 29 20 arg[2]) == 'M')
012CB0: 6D 61 63 72 6F 73 20 3D 20 4E 4F 3B 0D 0A 20 20 macros = NO;..
012CC0: 20 20 20 20 65 6C 73 65 20 69 66 28 74 6F 75 70 else if(toup
012CD0: 70 65 72 28 61 72 67 5B 31 5D 29 20 3D 3D 20 27 per(arg[1]) == '
012CE0: 53 27 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6C S') {.. l
012CF0: 65 6E 20 3D 20 75 74 6F 69 28 61 72 67 20 2B 20 en = utoi(arg +
012D00: 20 2A 6C 70 3B 0D 0A 20 20 20 20 20 20 20 20 20 *lp;..
012D10: 20 77 68 69 6C 65 28 21 61 74 65 6E 64 28 2A 2B while(!atend(*+
012D20: 2B 6C 70 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 +lp)) {..
012D30: 20 20 20 20 20 69 66 28 2A 6C 70 20 3D 3D 20 64 if(*lp == d
012D40: 6C 6D 20 26 26 20 2A 2B 2B 6C 70 20 21 3D 20 64 lm && *++lp != d
012D50: 6C 6D 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 lm) break;..
012D60: 20 20 20 20 20 20 20 20 2A 63 70 2B 2B 20 3D 20 *cp++ =
012D70: 2A 6C 70 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 *lp;..
012D80: 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 20 20 7D }.. }
012D90: 0D 0A 20 20 20 20 20 20 20 20 65 6C 73 65 20 2A .. else *
012DA0: 63 70 2B 2B 20 3D 20 2A 6C 70 2B 2B 3B 0D 0A 20 cp++ = *lp++;..
012DB0: 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 }..
012DC0: 2A 63 70 2B 2B 20 3D 20 4E 55 4C 4C 3B 0D 0A 20 *cp++ = NULL;..
012DD0: 20 20 20 20 20 7D 0D 0A 20 20 20 20 69 66 28 2A }.. if(*
012DE0: 6C 70 20 3D 3D 20 27 2C 27 29 20 2B 2B 6C 70 3B lp == ',') ++lp;
012DF0: 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 21 61 .. }.. if(!a
012E00: 74 65 6E 64 28 2A 6C 70 29 29 20 70 61 72 65 72 tend(*lp)) parer
012E10: 72 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D r();.. }..../*.
012E20: 0A 2A 2A 20 72 65 70 6C 61 63 65 20 70 61 72 61 .** replace para
012E30: 6D 65 74 65 72 73 0D 0A 2A 2F 0D 0A 72 65 70 6C meters..*/..repl
012E40: 61 63 65 28 29 20 7B 0D 0A 20 20 63 68 61 72 20 ace() {.. char
012E50: 6C 69 6E 5B 4D 41 58 4C 49 4E 45 5D 3B 20 69 6E lin[MAXLINE]; in
012E60: 74 20 6E 64 78 3B 0D 0A 20 20 63 68 61 72 20 2A t ndx;.. char *
012E70: 63 70 2C 20 2A 63 70 32 3B 20 20 20 20 69 6E 74 cp, *cp2; int
012E80: 20 69 3B 0D 0A 20 20 73 74 72 63 70 79 28 6C 69 i;.. strcpy(li
012E90: 6E 2C 20 6C 69 6E 65 29 3B 20 63 70 20 3D 20 6C n, line); cp = l
012EA0: 69 6E 3B 20 69 20 3D 20 30 3B 0D 0A 20 20 64 6F in; i = 0;.. do
012EB0: 20 7B 0D 0A 20 20 20 20 69 66 28 2A 63 70 20 3D {.. if(*cp =
012EC0: 3D 20 27 3F 27 29 20 7B 09 09 09 09 2F 2A 20 73 = '?') {..../* s
012ED0: 75 62 73 74 69 74 75 74 69 6F 6E 20 6D 61 72 6B ubstitution mark
012EE0: 65 72 3F 20 2A 2F 0D 0A 20 20 20 20 20 20 69 66 er? */.. if
012EF0: 28 69 73 64 69 67 69 74 28 2A 2B 2B 63 70 29 29 (isdigit(*++cp))
012F00: 32 2C 20 26 6A 29 3B 0D 0A 20 20 20 20 20 20 20 2, &j);..
012F10: 20 69 66 28 6C 65 6E 20 3E 20 30 20 26 26 20 21 if(len > 0 && !
012F20: 61 72 67 5B 6C 65 6E 20 2B 20 32 5D 29 20 73 74 arg[len + 2]) st
012F30: 6D 61 78 20 3D 20 6A 3B 0D 0A 20 20 20 20 20 20 max = j;..
012F40: 20 20 65 6C 73 65 20 75 73 61 67 65 28 29 3B 0D else usage();.
012F50: 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 . }..
012F60: 20 20 65 6C 73 65 20 75 73 61 67 65 28 29 3B 0D else usage();.
012F70: 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 65 6C . }.. el
012F80: 73 65 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 65 se {.. if(e
012F90: 78 74 65 6E 64 28 61 72 67 2C 20 4F 42 4A 45 58 xtend(arg, OBJEX
012FA0: 54 2C 20 4F 42 4A 45 58 54 29 20 7C 7C 20 21 2A T, OBJEXT) || !*
012FB0: 6F 62 6A 66 6E 29 20 7B 20 0D 0A 20 20 20 20 20 objfn) { ..
012FC0: 20 20 20 69 66 28 61 72 67 5B 31 5D 20 3D 3D 20 if(arg[1] ==
012FD0: 27 3A 27 29 20 6A 20 3D 20 32 3B 20 65 6C 73 65 ':') j = 2; else
012FE0: 20 6A 20 3D 20 30 3B 20 0D 0A 20 20 20 20 20 20 j = 0; ..
012FF0: 20 20 73 74 72 63 70 79 28 6F 62 6A 66 6E 2C 20 strcpy(objfn,
013000: 61 72 67 20 2B 20 6A 29 3B 0D 0A 20 20 20 20 20 arg + j);..
013010: 20 20 20 7D 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 }.. }..
013020: 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D }.. }..../*.
013030: 0A 2A 2A 20 72 65 63 6F 67 6E 69 7A 65 20 6D 61 .** recognize ma
013040: 63 72 6F 20 6F 70 65 72 61 74 69 6F 6E 0D 0A 2A cro operation..*
013050: 2F 0D 0A 6D 61 63 6F 70 28 29 20 7B 0D 0A 20 20 /..macop() {..
013060: 69 66 28 66 6C 64 63 6D 70 28 6C 70 2C 20 22 45 if(fldcmp(lp, "E
013070: 4E 44 4D 22 20 29 20 3D 3D 20 30 29 20 72 65 74 NDM" ) == 0) ret
013080: 75 72 6E 20 28 45 4E 44 4D 29 3B 0D 0A 20 20 69 urn (ENDM);.. i
013090: 66 28 66 6C 64 63 6D 70 28 6C 70 2C 20 22 4D 41 f(fldcmp(lp, "MA
0130A0: 43 52 4F 22 29 20 3D 3D 20 30 29 20 72 65 74 75 CRO") == 0) retu
0130B0: 72 6E 20 28 4D 41 43 52 4F 29 3B 0D 0A 20 20 69 rn (MACRO);.. i
0130C0: 66 28 21 65 78 70 6D 6F 64 65 20 26 26 20 21 64 f(!expmode && !d
0130D0: 65 66 6D 6F 64 65 20 26 26 20 6D 74 66 69 6E 64 efmode && mtfind
0130E0: 28 29 29 20 72 65 74 75 72 6E 20 28 43 41 4C 4C ()) return (CALL
0130F0: 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 4E 4F );.. return (NO
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: 20 7B 09 09 09 2F 2A 20 70 61 72 61 6D 65 74 65 {.../* paramete
013210: 72 20 73 75 62 73 74 69 74 75 74 69 6F 6E 3F 20 r substitution?
013220: 2A 2F 0D 0A 20 20 20 20 20 20 20 20 6E 64 78 20 */.. ndx
013230: 3D 20 2A 63 70 2B 2B 20 2D 20 27 30 27 20 2D 20 = *cp++ - '0' -
013240: 31 3B 09 09 09 2F 2A 20 77 68 69 63 68 20 6F 6E 1;.../* which on
013250: 65 3F 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 69 e? */.. i
013260: 66 28 6E 64 78 20 3C 20 30 29 20 6E 64 78 20 3D f(ndx < 0) ndx =
013270: 20 39 3B 09 09 09 2F 2A 20 6D 61 6B 65 20 30 20 9;.../* make 0
013280: 6D 65 61 6E 20 31 30 20 2A 2F 0D 0A 20 20 20 20 mean 10 */..
013290: 20 20 20 20 69 66 28 63 70 32 20 3D 20 6D 70 70 if(cp2 = mpp
0132A0: 74 72 5B 6E 64 78 5D 29 20 7B 09 09 09 2F 2A 20 tr[ndx]) {.../*
0132B0: 67 6F 74 20 70 61 72 61 6D 65 74 65 72 3F 20 2A got parameter? *
0132C0: 2F 0D 0A 20 20 20 20 20 20 20 20 20 20 77 68 69 /.. whi
0132D0: 6C 65 28 2A 63 70 32 29 09 09 09 09 2F 2A 20 79 le(*cp2)..../* y
0132E0: 65 73 2C 20 63 6F 70 79 20 69 74 20 2A 2F 0D 0A es, copy it */..
0132F0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 28 63 if(c
013300: 61 6E 74 61 6B 65 28 69 2C 20 31 29 29 20 6C 69 antake(i, 1)) li
013310: 6E 65 5B 69 2B 2B 5D 20 3D 20 2A 63 70 32 2B 2B ne[i++] = *cp2++
013320: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 7D 0D 0A ;.. }..
013330: 20 20 20 20 20 20 20 20 63 6F 6E 74 69 6E 75 65 continue
013340: 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 ;.. }..
013350: 20 20 20 20 7D 0D 0A 20 20 20 20 69 66 28 2A 63 }.. if(*c
013360: 70 20 3D 3D 20 27 40 27 29 20 7B 09 09 09 09 2F p == '@') {..../
013370: 2A 20 6C 61 62 65 6C 20 73 75 62 73 74 69 74 75 * label substitu
013380: 74 69 6F 6E 3F 20 2A 2F 0D 0A 20 20 20 20 20 20 tion? */..
013390: 69 66 28 63 61 6E 74 61 6B 65 28 69 2C 20 31 29 if(cantake(i, 1)
0133A0: 29 20 6C 69 6E 65 5B 69 2B 2B 5D 20 3D 20 27 40 ) line[i++] = '@
0133B0: 27 3B 09 2F 2A 20 69 6E 73 65 72 74 20 6C 61 62 ';./* insert lab
0133C0: 65 6C 20 70 72 65 66 69 78 20 2A 2F 0D 0A 20 20 el prefix */..
0133D0: 20 20 20 20 69 66 28 69 73 64 69 67 69 74 28 2A if(isdigit(*
0133E0: 2B 2B 63 70 29 29 20 7B 09 09 09 2F 2A 20 77 68 ++cp)) {.../* wh
0133F0: 69 63 68 20 6F 6E 65 3F 20 2A 2F 0D 0A 20 20 20 ich one? */..
013400: 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 64 . }..../*..** d
013410: 65 74 65 72 6D 69 6E 65 20 69 66 20 61 6E 20 61 etermine if an a
013420: 73 73 65 6D 62 6C 65 72 20 69 6E 73 74 72 75 63 ssembler instruc
013430: 74 69 6F 6E 0D 0A 2A 2F 0D 0A 61 69 66 69 6E 64 tion..*/..aifind
013440: 28 29 20 7B 0D 0A 20 20 63 68 61 72 20 2A 63 70 () {.. char *cp
013450: 3B 20 63 70 20 3D 20 6C 70 3B 0D 0A 20 20 77 68 ; cp = lp;.. wh
013460: 69 6C 65 28 69 73 67 72 61 70 68 28 2A 6C 70 29 ile(isgraph(*lp)
013470: 29 20 2B 2B 6C 70 3B 0D 0A 20 20 77 68 69 6C 65 ) ++lp;.. while
013480: 28 69 73 73 70 61 63 65 28 2A 6C 70 29 29 20 2B (isspace(*lp)) +
013490: 2B 6C 70 3B 0D 0A 20 20 20 20 20 20 20 69 66 28 +lp;.. if(
0134A0: 66 6C 64 63 6D 70 28 63 70 2C 20 22 44 57 22 29 fldcmp(cp, "DW")
0134B0: 20 20 3D 3D 20 30 29 20 72 65 74 75 72 6E 20 28 == 0) return (
0134C0: 44 57 29 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 DW);.. else if(
0134D0: 66 6C 64 63 6D 70 28 63 70 2C 20 22 44 42 22 29 fldcmp(cp, "DB")
0134E0: 20 20 3D 3D 20 30 29 20 72 65 74 75 72 6E 20 28 == 0) return (
0134F0: 44 42 29 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 DB);.. else if(
013500: 66 6C 64 63 6D 70 28 63 70 2C 20 22 44 53 22 29 fldcmp(cp, "DS")
013510: 20 20 3D 3D 20 30 29 20 72 65 74 75 72 6E 20 28 == 0) return (
013520: 44 53 29 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 DS);.. else if(
013530: 66 6C 64 63 6D 70 28 63 70 2C 20 22 45 58 54 22 fldcmp(cp, "EXT"
013540: 29 20 3D 3D 20 30 29 20 72 65 74 75 72 6E 20 28 ) == 0) return (
013550: 45 58 29 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 EX);.. else if(
013560: 66 6C 64 63 6D 70 28 63 70 2C 20 22 53 45 54 22 fldcmp(cp, "SET"
013570: 29 20 3D 3D 20 30 29 20 72 65 74 75 72 6E 20 28 ) == 0) return (
013580: 53 45 54 29 3B 0D 0A 20 20 65 6C 73 65 20 69 66 SET);.. else if
013590: 28 66 6C 64 63 6D 70 28 63 70 2C 20 22 45 51 55 (fldcmp(cp, "EQU
0135A0: 22 29 20 3D 3D 20 30 29 20 72 65 74 75 72 6E 20 ") == 0) return
0135B0: 28 45 51 55 29 3B 0D 0A 20 20 65 6C 73 65 20 69 (EQU);.. else i
0135C0: 66 28 66 6C 64 63 6D 70 28 63 70 2C 20 22 4F 52 f(fldcmp(cp, "OR
0135D0: 47 22 29 20 3D 3D 20 30 29 20 72 65 74 75 72 6E G") == 0) return
0135E0: 20 28 4F 52 47 29 3B 0D 0A 20 20 65 6C 73 65 20 (ORG);.. else
0135F0: 69 66 28 66 6C 64 63 6D 70 28 63 70 2C 20 22 45 if(fldcmp(cp, "E
013600: 20 20 20 20 20 6E 64 78 20 3D 20 2A 63 70 2B 2B ndx = *cp++
013610: 20 2D 20 27 30 27 3B 0D 0A 20 20 20 20 20 20 20 - '0';..
013620: 20 69 66 28 21 6D 6C 6E 62 72 5B 6E 64 78 5D 29 if(!mlnbr[ndx])
013630: 20 6D 6C 6E 62 72 5B 6E 64 78 5D 20 3D 20 2B 2B mlnbr[ndx] = ++
013640: 6D 6C 6E 65 78 74 3B 09 2F 2A 20 6E 65 65 64 20 mlnext;./* need
013650: 6E 65 77 20 6C 61 62 65 6C 20 6E 75 6D 62 65 72 new label number
013660: 3F 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 69 66 ? */.. if
013670: 28 63 61 6E 74 61 6B 65 28 69 2C 20 35 29 29 20 (cantake(i, 5))
013680: 7B 0D 0A 20 20 20 20 20 20 20 20 20 20 6C 65 66 {.. lef
013690: 74 28 69 74 6F 75 28 6D 6C 6E 62 72 5B 6E 64 78 t(itou(mlnbr[ndx
0136A0: 5D 2C 20 6C 69 6E 65 20 2B 20 69 2C 20 35 29 29 ], line + i, 5))
0136B0: 3B 09 2F 2A 20 69 6E 73 65 72 74 20 6C 61 62 65 ;./* insert labe
0136C0: 6C 20 6E 75 6D 62 65 72 20 2A 2F 0D 0A 20 20 20 l number */..
0136D0: 20 20 20 20 20 20 20 77 68 69 6C 65 28 6C 69 6E while(lin
0136E0: 65 5B 69 5D 29 20 2B 2B 69 3B 09 09 09 2F 2A 20 e[i]) ++i;.../*
0136F0: 62 79 70 61 73 73 20 6C 61 62 65 6C 20 6E 75 6D bypass label num
013700: 62 65 72 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 ber */..
013710: 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 63 6F 6E }.. con
013720: 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 20 20 20 tinue;..
013730: 7D 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 }.. }..
013740: 69 66 28 63 61 6E 74 61 6B 65 28 69 2C 20 31 29 if(cantake(i, 1)
013750: 29 20 6C 69 6E 65 5B 69 2B 2B 5D 20 3D 20 2A 63 ) line[i++] = *c
013760: 70 2B 2B 3B 0D 0A 20 20 20 20 65 6C 73 65 20 7B p++;.. else {
013770: 0D 0A 20 20 20 20 20 20 6C 69 6E 65 5B 69 2B 2B .. line[i++
013780: 5D 20 3D 20 27 5C 6E 27 3B 0D 0A 20 20 20 20 20 ] = '\n';..
013790: 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 7D break;.. }
0137A0: 0D 0A 20 20 20 20 7D 20 77 68 69 6C 65 28 2A 63 .. } while(*c
0137B0: 70 29 3B 0D 0A 20 20 6C 69 6E 65 5B 69 5D 20 3D p);.. line[i] =
0137C0: 20 4E 55 4C 4C 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F NULL;.. }..../
0137D0: 2A 0D 0A 2A 2A 20 61 62 6F 72 74 20 77 69 74 68 *..** abort with
0137E0: 20 61 20 75 73 61 67 65 20 6D 65 73 73 61 67 65 a usage message
0137F0: 0D 0A 2A 2F 0D 0A 75 73 61 67 65 28 29 20 7B 0D ..*/..usage() {.
013800: 4E 44 22 29 20 3D 3D 20 30 29 20 72 65 74 75 72 ND") == 0) retur
013810: 6E 20 28 45 4E 44 29 3B 0D 0A 20 20 72 65 74 75 n (END);.. retu
013820: 72 6E 20 28 45 52 52 29 3B 0D 0A 20 20 7D 0D 0A rn (ERR);.. }..
013830: 0D 0A 2F 2A 0D 0A 2A 2A 20 62 65 67 69 6E 20 61 ../*..** begin a
013840: 20 6C 69 6E 65 20 69 6E 20 74 68 65 20 6C 69 73 line in the lis
013850: 74 69 6E 67 0D 0A 2A 2F 0D 0A 62 65 67 6C 69 6E ting..*/..beglin
013860: 65 28 29 20 7B 0D 0A 20 20 63 68 61 72 20 73 74 e() {.. char st
013870: 72 5B 36 5D 3B 0D 0A 20 20 69 66 28 70 61 73 73 r[6];.. if(pass
013880: 20 3D 3D 20 32 20 26 26 20 6C 69 73 74 29 20 7B == 2 && list) {
013890: 0D 0A 20 20 20 20 69 66 28 62 65 67 70 61 67 65 .. if(begpage
0138A0: 28 29 29 20 7B 0D 0A 20 20 20 20 20 20 70 75 74 ()) {.. put
0138B0: 73 28 22 6C 69 6E 65 20 20 6C 6F 63 20 2D 2D 2D s("line loc ---
0138C0: 2D 6F 62 6A 65 63 74 2D 2D 2D 2D 20 20 73 6F 75 -object---- sou
0138D0: 72 63 65 22 29 3B 20 70 75 74 73 28 22 22 29 3B rce"); puts("");
0138E0: 0D 0A 20 20 20 20 20 20 6C 6C 69 6E 65 20 2B 3D .. lline +=
0138F0: 20 32 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 2;.. }..
013900: 20 20 69 74 6F 75 28 6C 69 6E 2C 20 73 74 72 2C itou(lin, str,
013910: 20 35 29 3B 20 66 70 75 74 73 28 73 74 72 2C 20 5); fputs(str,
013920: 73 74 64 6F 75 74 29 3B 0D 0A 20 20 20 20 69 74 stdout);.. it
013930: 6F 78 28 6C 6F 63 2C 20 73 74 72 2C 20 36 29 3B ox(loc, str, 6);
013940: 20 66 70 75 74 73 28 73 74 72 2C 20 73 74 64 6F fputs(str, stdo
013950: 75 74 29 3B 0D 0A 20 20 20 20 70 75 74 63 68 61 ut);.. putcha
013960: 72 28 27 20 27 29 3B 20 63 63 6E 74 20 3D 20 30 r(' '); ccnt = 0
013970: 3B 20 2B 2B 6C 6C 69 6E 65 3B 0D 0A 20 20 20 20 ; ++lline;..
013980: 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A }.. }..../*..**
013990: 20 62 65 67 69 6E 20 61 20 70 61 67 65 3F 0D 0A begin a page?..
0139A0: 2A 2F 0D 0A 62 65 67 70 61 67 65 28 29 20 7B 0D */..begpage() {.
0139B0: 0A 20 20 63 68 61 72 20 73 74 72 5B 34 5D 3B 0D . char str[4];.
0139C0: 0A 20 20 69 66 28 6C 6C 69 6E 65 20 3E 3D 20 35 . if(lline >= 5
0139D0: 38 29 20 7B 0D 0A 20 20 20 20 6C 6C 69 6E 65 20 8) {.. lline
0139E0: 3D 20 32 3B 0D 0A 20 20 20 20 2B 2B 6C 70 61 67 = 2;.. ++lpag
0139F0: 65 3B 0D 0A 20 20 20 20 69 66 28 6C 70 61 67 65 e;.. if(lpage
013A00: 0A 20 20 65 72 72 6F 72 28 22 55 73 61 67 65 3A . error("Usage:
013A10: 20 4D 41 43 20 5B 2D 4C 5D 20 5B 2D 4E 4D 5D 20 MAC [-L] [-NM]
013A20: 5B 2D 50 5D 20 5B 2D 53 23 5D 20 5B 6F 62 6A 65 [-P] [-S#] [obje
013A30: 63 74 5D 20 73 6F 75 72 63 65 2E 2E 2E 22 29 3B ct] source...");
013A40: 0D 0A 20 20 7D 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A .. }...........
013A50: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
013A60: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
013A70: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
013A80: 7B 0D 0A 20 20 20 20 20 20 20 20 20 20 6C 65 66 {.. lef
013A90: 74 28 69 74 6F 75 28 6D 6C 6E 62 72 5B 6E 64 78 t(itou(mlnbr[ndx
013AA0: 5D 2C 20 6C 69 6E 65 20 2B 20 69 2C 20 35 29 29 ], line + i, 5))
013AB0: 3B 09 2F 2A 20 69 6E 73 65 72 74 20 6C 61 62 65 ;./* insert labe
013AC0: 6C 20 6E 75 6D 62 65 72 20 2A 2F 0D 0A 20 20 20 l number */..
013AD0: 20 20 20 20 20 20 20 77 68 69 6C 65 28 6C 69 6E while(lin
013AE0: 65 5B 69 5D 29 20 2B 2B 69 3B 09 09 09 2F 2A 20 e[i]) ++i;.../*
013AF0: 62 79 70 61 73 73 20 6C 61 62 65 6C 20 6E 75 6D bypass label num
013B00: 62 65 72 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 ber */..
013B10: 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 63 6F 6E }.. con
013B20: 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 20 20 20 tinue;..
013B30: 7D 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 }.. }..
013B40: 69 66 28 63 61 6E 74 61 6B 65 28 69 2C 20 31 29 if(cantake(i, 1)
013B50: 29 20 6C 69 6E 65 5B 69 2B 2B 5D 20 3D 20 2A 63 ) line[i++] = *c
013B60: 70 2B 2B 3B 0D 0A 20 20 20 20 65 6C 73 65 20 7B p++;.. else {
013B70: 0D 0A 20 20 20 20 20 20 6C 69 6E 65 5B 69 2B 2B .. line[i++
013B80: 5D 20 3D 20 27 5C 6E 27 3B 0D 0A 20 20 20 20 20 ] = '\n';..
013B90: 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 7D break;.. }
013BA0: 0D 0A 20 20 20 20 7D 20 77 68 69 6C 65 28 2A 63 .. } while(*c
013BB0: 70 29 3B 0D 0A 20 20 6C 69 6E 65 5B 69 5D 20 3D p);.. line[i] =
013BC0: 20 4E 55 4C 4C 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F NULL;.. }..../
013BD0: 2A 0D 0A 2A 2A 20 61 62 6F 72 74 20 77 69 74 68 *..** abort with
013BE0: 20 61 20 75 73 61 67 65 20 6D 65 73 73 61 67 65 a usage message
013BF0: 0D 0A 2A 2F 0D 0A 75 73 61 67 65 28 29 20 7B 0D ..*/..usage() {.
013C00: 20 3E 20 31 29 20 70 75 74 73 28 22 5C 6E 5C 6E > 1) puts("\n\n
013C10: 5C 6E 5C 6E 5C 6E 5C 6E 5C 6E 22 29 3B 0D 0A 20 \n\n\n\n\n");..
013C20: 20 20 20 66 70 75 74 73 28 22 66 69 6C 65 3A 20 fputs("file:
013C30: 22 2C 20 73 74 64 6F 75 74 29 3B 20 66 70 75 74 ", stdout); fput
013C40: 73 28 73 72 63 66 6E 2C 20 73 74 64 6F 75 74 29 s(srcfn, stdout)
013C50: 3B 0D 0A 20 20 20 20 69 74 6F 75 28 6C 70 61 67 ;.. itou(lpag
013C60: 65 2C 20 73 74 72 2C 20 34 29 3B 0D 0A 20 20 20 e, str, 4);..
013C70: 20 66 70 75 74 73 28 22 20 20 20 70 61 67 65 3A fputs(" page:
013C80: 20 22 2C 20 73 74 64 6F 75 74 29 3B 20 70 75 74 ", stdout); put
013C90: 73 28 73 74 72 29 3B 20 70 75 74 73 28 22 22 29 s(str); puts("")
013CA0: 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E 20 28 59 ;.. return (Y
013CB0: 45 53 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 ES);.. }.. r
013CC0: 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 7D eturn (NO);.. }
013CD0: 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 64 65 74 65 63 ..../*..** detec
013CE0: 74 20 61 73 73 65 6D 62 6C 65 72 20 69 6E 73 74 t assembler inst
013CF0: 72 75 63 74 69 6F 6E 20 61 6E 64 20 70 72 6F 63 ruction and proc
013D00: 65 73 73 20 69 74 0D 0A 2A 2F 0D 0A 64 6F 61 73 ess it..*/..doas
013D10: 6D 28 29 20 7B 0D 0A 20 20 69 6E 74 20 6A 3B 0D m() {.. int j;.
013D20: 0A 20 20 69 66 28 61 74 65 6E 64 28 2A 6C 70 29 . if(atend(*lp)
013D30: 20 26 26 20 28 21 73 74 73 79 6D 5B 30 5D 20 7C && (!stsym[0] |
013D40: 7C 20 67 6F 74 6C 61 62 65 6C 29 29 20 72 65 74 | gotlabel)) ret
013D50: 75 72 6E 3B 0D 0A 20 20 69 66 28 28 6A 20 3D 20 urn;.. if((j =
013D60: 61 69 66 69 6E 64 28 29 29 20 3D 3D 20 45 52 52 aifind()) == ERR
013D70: 29 20 7B 09 09 2F 2A 20 6C 70 20 2D 3E 20 32 6E ) {../* lp -> 2n
013D80: 64 20 66 69 65 6C 64 20 6F 72 20 65 6E 64 20 2A d field or end *
013D90: 2F 0D 0A 20 20 20 20 6C 70 20 3D 20 73 6B 69 70 /.. lp = skip
013DA0: 28 31 2C 20 6C 69 6E 65 29 3B 09 09 09 2F 2A 20 (1, line);.../*
013DB0: 6C 70 20 2D 3E 20 31 73 74 20 66 69 65 6C 64 20 lp -> 1st field
013DC0: 2A 2F 0D 0A 20 20 20 20 6A 20 3D 20 61 69 66 69 */.. j = aifi
013DD0: 6E 64 28 29 3B 0D 0A 20 20 20 20 73 74 73 79 6D nd();.. stsym
013DE0: 5B 30 5D 20 3D 20 4E 55 4C 4C 3B 09 09 09 2F 2A [0] = NULL;.../*
013DF0: 20 64 65 63 6C 61 72 65 20 6E 6F 20 73 79 6D 62 declare no symb
013E00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013E10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013E20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013E30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013E40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013E50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013E60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013E70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013E80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013E90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013EA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013EB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013EC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013ED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013EE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013EF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013F00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013F10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013F20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013F30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013F40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013F50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013F60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013F70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013F80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013F90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013FA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013FB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013FC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013FD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013FE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
013FF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
014000: 6F 6C 20 2A 2F 0D 0A 20 20 20 20 7D 0D 0A 20 20 ol */.. }..
014010: 73 77 69 74 63 68 28 6A 29 20 7B 0D 0A 20 20 20 switch(j) {..
014020: 20 63 61 73 65 20 20 45 58 3A 20 64 6F 65 78 74 case EX: doext
014030: 28 29 3B 20 20 20 20 20 20 20 72 65 74 75 72 6E (); return
014040: 3B 0D 0A 20 20 20 20 63 61 73 65 20 20 44 57 3A ;.. case DW:
014050: 20 64 6F 64 61 74 28 49 4E 54 53 5A 29 3B 20 20 dodat(INTSZ);
014060: 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 63 61 73 return;.. cas
014070: 65 20 20 44 42 3A 20 64 6F 64 61 74 28 31 29 3B e DB: dodat(1);
014080: 20 20 20 20 20 20 72 65 74 75 72 6E 3B 0D 0A 20 return;..
014090: 20 20 20 63 61 73 65 20 20 44 53 3A 20 64 6F 6C case DS: dol
0140A0: 6F 63 28 59 45 53 29 3B 20 20 20 20 72 65 74 75 oc(YES); retu
0140B0: 72 6E 3B 0D 0A 20 20 20 20 63 61 73 65 20 4F 52 rn;.. case OR
0140C0: 47 3A 20 64 6F 6C 6F 63 28 4E 4F 29 3B 20 20 20 G: doloc(NO);
0140D0: 20 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 63 return;.. c
0140E0: 61 73 65 20 53 45 54 3A 20 64 6F 76 61 6C 28 53 ase SET: doval(S
0140F0: 45 54 42 49 54 29 3B 20 72 65 74 75 72 6E 3B 0D ETBIT); return;.
014100: 0A 20 20 20 20 63 61 73 65 20 45 51 55 3A 20 64 . case EQU: d
014110: 6F 76 61 6C 28 30 29 3B 20 20 20 20 20 20 72 65 oval(0); re
014120: 74 75 72 6E 3B 0D 0A 20 20 20 20 63 61 73 65 20 turn;.. case
014130: 45 4E 44 3A 20 64 6F 65 6E 64 28 29 3B 20 20 20 END: doend();
014140: 20 20 20 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 return;..
014150: 20 7D 0D 0A 20 20 6F 70 72 65 72 72 28 29 3B 0D }.. oprerr();.
014160: 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 64 . }..../*..** d
014170: 65 66 69 6E 65 20 64 61 74 61 20 28 44 42 20 26 efine data (DB &
014180: 20 44 57 29 0D 0A 2A 2F 0D 0A 64 6F 64 61 74 28 DW)..*/..dodat(
014190: 73 7A 29 20 69 6E 74 20 73 7A 3B 20 7B 0D 0A 20 sz) int sz; {..
0141A0: 20 69 6E 74 20 64 6C 6D 3B 0D 0A 20 20 77 68 69 int dlm;.. whi
0141B0: 6C 65 28 21 61 74 65 6E 64 28 2A 6C 70 29 29 20 le(!atend(*lp))
0141C0: 7B 0D 0A 20 20 20 20 69 66 28 69 73 73 70 61 63 {.. if(isspac
0141D0: 65 28 2A 6C 70 29 20 7C 7C 20 2A 6C 70 20 3D 3D e(*lp) || *lp ==
0141E0: 20 27 2C 27 29 20 2B 2B 6C 70 3B 0D 0A 20 20 20 ',') ++lp;..
0141F0: 20 65 6C 73 65 20 69 66 28 2A 6C 70 20 3D 3D 20 else if(*lp ==
014200: 2F 2A 0D 0A 2A 2A 20 4D 41 43 32 2E 43 20 2D 2D /*..** MAC2.C --
014210: 20 53 6D 61 6C 6C 2D 4D 61 63 20 41 73 73 65 6D Small-Mac Assem
014220: 62 6C 65 72 20 2D 2D 20 50 61 72 74 20 32 3A 20 bler -- Part 2:
014230: 50 61 73 73 20 31 20 61 6E 64 20 32 20 46 75 6E Pass 1 and 2 Fun
014240: 63 74 69 6F 6E 73 0D 0A 2A 2A 0D 0A 2A 2A 20 20 ctions..**..**
014250: 20 20 20 20 20 20 20 20 20 20 20 20 43 6F 70 79 Copy
014260: 72 69 67 68 74 20 31 39 38 35 20 4A 2E 20 45 2E right 1985 J. E.
014270: 20 48 65 6E 64 72 69 78 0D 0A 2A 2F 0D 0A 23 69 Hendrix..*/..#i
014280: 6E 63 6C 75 64 65 20 3C 73 74 64 69 6F 2E 68 3E nclude <stdio.h>
014290: 0D 0A 23 69 6E 63 6C 75 64 65 20 22 6D 61 63 2E ..#include "mac.
0142A0: 68 22 0D 0A 23 69 6E 63 6C 75 64 65 20 22 72 65 h"..#include "re
0142B0: 6C 2E 68 22 0D 0A 23 69 6E 63 6C 75 64 65 20 22 l.h"..#include "
0142C0: 65 78 74 2E 68 22 0D 0A 23 64 65 66 69 6E 65 20 ext.h"..#define
0142D0: 4E 4F 43 43 41 52 47 43 0D 0A 0D 0A 65 78 74 65 NOCCARGC....exte
0142E0: 72 6E 20 69 6E 74 20 69 6C 6F 63 3B 09 09 09 2F rn int iloc;.../
0142F0: 2A 20 69 6E 73 74 72 20 6C 6F 63 61 74 69 6F 6E * instr location
014300: 20 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 61 64 */..../*..** ad
014310: 64 20 61 20 6E 65 77 20 73 79 6D 62 6F 6C 20 74 d a new symbol t
014320: 6F 20 74 68 65 20 73 79 6D 62 6F 6C 20 74 61 62 o the symbol tab
014330: 6C 65 0D 0A 2A 2F 0D 0A 61 64 64 73 79 6D 28 29 le..*/..addsym()
014340: 20 7B 0D 0A 20 20 63 68 61 72 20 2A 64 65 73 74 {.. char *dest
014350: 2C 20 2A 73 6F 75 72 3B 0D 0A 20 20 69 66 28 2A , *sour;.. if(*
014360: 73 74 70 74 72 29 20 65 72 72 6F 72 28 22 2D 20 stptr) error("-
014370: 53 79 6D 62 6F 6C 20 54 61 62 6C 65 20 4F 76 65 Symbol Table Ove
014380: 72 66 6C 6F 77 22 29 3B 0D 0A 20 20 73 74 70 5B rflow");.. stp[
014390: 73 74 6E 2B 2B 5D 20 3D 20 73 74 70 74 72 3B 09 stn++] = stptr;.
0143A0: 09 09 2F 2A 20 73 65 74 20 73 79 6D 62 6F 6C 20 ../* set symbol
0143B0: 70 6F 69 6E 74 65 72 20 2A 2F 0D 0A 20 20 64 65 pointer */.. de
0143C0: 73 74 20 3D 20 73 74 70 74 72 3B 20 73 6F 75 72 st = stptr; sour
0143D0: 20 3D 20 73 74 73 79 6D 3B 0D 0A 20 20 77 68 69 = stsym;.. whi
0143E0: 6C 65 28 2A 64 65 73 74 2B 2B 20 3D 20 74 6F 75 le(*dest++ = tou
0143F0: 70 70 65 72 28 2A 73 6F 75 72 2B 2B 29 29 3B 0D pper(*sour++));.
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: 27 5C 22 27 20 7C 7C 20 2A 6C 70 20 3D 3D 20 27 '\"' || *lp == '
014510: 5C 27 27 29 20 7B 09 09 2F 2A 20 73 74 72 69 6E \'') {../* strin
014520: 67 3F 20 2A 2F 0D 0A 20 20 20 20 20 20 64 6C 6D g? */.. dlm
014530: 20 3D 20 2A 6C 70 3B 0D 0A 20 20 20 20 20 20 77 = *lp;.. w
014540: 68 69 6C 65 28 21 61 74 65 6E 64 28 2A 2B 2B 6C hile(!atend(*++l
014550: 70 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 69 p)) {.. i
014560: 66 28 2A 6C 70 20 3D 3D 20 64 6C 6D 20 26 26 20 f(*lp == dlm &&
014570: 2A 2B 2B 6C 70 20 21 3D 20 64 6C 6D 29 20 62 72 *++lp != dlm) br
014580: 65 61 6B 3B 0D 0A 20 20 20 20 20 20 20 20 69 66 eak;.. if
014590: 28 70 61 73 73 20 3D 3D 20 32 29 20 7B 66 69 65 (pass == 2) {fie
0145A0: 6C 64 20 3D 20 2A 6C 70 3B 20 67 65 6E 61 62 73 ld = *lp; genabs
0145B0: 28 73 7A 29 3B 7D 0D 0A 20 20 20 20 20 20 20 20 (sz);}..
0145C0: 65 6C 73 65 20 6C 6F 63 20 2B 3D 20 73 7A 3B 0D else loc += sz;.
0145D0: 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 . }..
0145E0: 20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 7B 0D }.. else {.
0145F0: 0A 20 20 20 20 20 20 65 70 20 3D 20 6C 70 3B 09 . ep = lp;.
014600: 09 09 09 09 09 2F 2A 20 65 78 70 72 65 73 73 69 ...../* expressi
014610: 6F 6E 3F 20 2A 2F 0D 0A 20 20 20 20 20 20 65 78 on? */.. ex
014620: 70 72 28 26 66 69 65 6C 64 2C 20 26 74 79 70 65 pr(&field, &type
014630: 29 3B 0D 0A 20 20 20 20 20 20 6C 70 20 3D 20 65 );.. lp = e
014640: 70 3B 0D 0A 20 20 20 20 20 20 69 66 28 70 61 73 p;.. if(pas
014650: 73 20 3D 3D 20 32 29 20 7B 0D 0A 20 20 20 20 20 s == 2) {..
014660: 20 20 20 74 79 70 65 20 26 3D 20 52 45 4C 42 49 type &= RELBI
014670: 54 53 3B 0D 0A 20 20 20 20 20 20 20 20 69 66 28 TS;.. if(
014680: 74 79 70 65 20 3D 3D 20 41 42 53 29 20 67 65 6E type == ABS) gen
014690: 61 62 73 28 73 7A 29 3B 0D 0A 20 20 20 20 20 20 abs(sz);..
0146A0: 20 20 65 6C 73 65 20 7B 0D 0A 20 20 20 20 20 20 else {..
0146B0: 20 20 20 20 69 66 28 73 7A 20 3D 3D 20 31 29 20 if(sz == 1)
0146C0: 7B 72 65 6C 65 72 72 28 29 3B 20 67 65 6E 61 62 {relerr(); genab
0146D0: 73 28 31 29 3B 7D 09 2F 2A 20 31 2D 62 79 74 65 s(1);}./* 1-byte
0146E0: 20 72 65 6C 6F 63 61 74 61 62 6C 65 3F 20 2A 2F relocatable? */
0146F0: 0D 0A 20 20 20 20 20 20 20 20 20 20 65 6C 73 65 .. else
014700: 20 69 66 20 6E 6F 20 6C 61 62 65 6C 20 2A 2F 0D if no label */.
014710: 0A 20 20 69 66 28 66 6D 74 20 3D 20 66 69 6E 64 . if(fmt = find
014720: 28 63 70 29 29 20 7B 09 09 09 2F 2A 20 6D 61 63 (cp)) {.../* mac
014730: 68 69 6E 65 20 69 6E 73 74 72 75 63 74 69 6F 6E hine instruction
014740: 3F 20 2A 2F 0D 0A 20 20 20 20 66 6D 74 20 2B 3D ? */.. fmt +=
014750: 20 49 4E 54 53 5A 3B 09 09 09 2F 2A 20 6C 6F 63 INTSZ;.../* loc
014760: 61 74 65 20 66 6F 72 6D 61 74 20 62 79 74 65 20 ate format byte
014770: 69 6E 20 6D 69 74 20 2A 2F 0D 0A 20 20 20 20 69 in mit */.. i
014780: 66 28 70 61 73 73 20 3D 3D 20 32 29 20 64 6F 6D f(pass == 2) dom
014790: 61 63 32 28 66 6D 74 29 3B 09 09 2F 2A 20 64 6F ac2(fmt);../* do
0147A0: 20 70 61 73 73 20 32 20 70 72 6F 63 65 73 73 69 pass 2 processi
0147B0: 6E 67 20 2A 2F 0D 0A 20 20 20 20 65 6C 73 65 20 ng */.. else
0147C0: 6C 6F 63 20 2B 3D 20 28 2A 66 6D 74 20 26 20 33 loc += (*fmt & 3
0147D0: 29 20 2B 20 31 3B 09 09 2F 2A 20 62 75 6D 70 20 ) + 1;../* bump
0147E0: 6C 6F 63 61 74 69 6F 6E 20 63 6F 75 6E 74 65 72 location counter
0147F0: 20 2A 2F 0D 0A 20 20 20 20 72 65 74 75 72 6E 20 */.. return
014800: 28 59 45 53 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 (YES);.. }..
014810: 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 09 09 09 return (NO);...
014820: 09 2F 2A 20 6D 61 79 20 62 65 20 70 73 65 75 64 ./* may be pseud
014830: 6F 2D 6F 70 20 2A 2F 0D 0A 20 20 7D 0D 0A 0D 0A o-op */.. }....
014840: 2F 2A 0D 0A 2A 2A 20 64 65 74 65 63 74 20 6D 61 /*..** detect ma
014850: 63 68 69 6E 65 20 69 6E 73 74 72 75 63 74 69 6F chine instructio
014860: 6E 20 61 6E 64 20 67 65 6E 65 72 61 74 65 20 6F n and generate o
014870: 62 6A 65 63 74 20 63 6F 64 65 0D 0A 2A 2F 0D 0A bject code..*/..
014880: 64 6F 6D 61 63 32 28 70 74 72 29 20 63 68 61 72 domac2(ptr) char
014890: 20 2A 70 74 72 3B 20 7B 0D 0A 20 20 69 6E 74 20 *ptr; {.. int
0148A0: 66 6F 72 6D 61 74 2C 20 6C 65 6E 2C 20 69 6C 65 format, len, ile
0148B0: 6E 2C 20 70 63 72 2C 20 74 2C 20 76 2C 20 6F 70 n, pcr, t, v, op
0148C0: 63 6F 64 65 2C 20 68 6F 6C 64 69 6E 67 3B 0D 0A code, holding;..
0148D0: 20 20 66 6F 72 6D 61 74 20 3D 20 67 65 74 69 6E format = getin
0148E0: 74 28 70 74 72 2B 2B 29 3B 09 09 2F 2A 20 70 74 t(ptr++);../* pt
0148F0: 72 20 69 73 20 6E 6F 77 20 31 20 62 79 74 65 20 r is now 1 byte
014900: 20 67 65 6E 72 65 6C 28 29 3B 09 09 09 2F 2A 20 genrel();.../*
014910: 6F 75 74 70 75 74 20 72 65 6C 6F 63 61 74 61 62 output relocatab
014920: 6C 65 20 69 74 65 6D 20 2A 2F 0D 0A 20 20 20 20 le item */..
014930: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 20 }..
014940: 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 6C }.. else l
014950: 6F 63 20 2B 3D 20 73 7A 3B 0D 0A 20 20 20 20 20 oc += sz;..
014960: 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A }.. }.. }..
014970: 0D 0A 2F 2A 0D 0A 2A 2A 20 70 72 6F 63 65 73 73 ../*..** process
014980: 20 45 4E 44 20 69 6E 73 74 72 75 63 74 69 6F 6E END instruction
014990: 0D 0A 2A 2F 0D 0A 64 6F 65 6E 64 28 29 20 7B 0D ..*/..doend() {.
0149A0: 0A 20 20 65 6F 6D 20 3D 20 59 45 53 3B 09 09 09 . eom = YES;...
0149B0: 09 09 2F 2A 20 66 6C 61 67 20 65 6E 64 20 6F 66 ../* flag end of
0149C0: 20 6D 6F 64 75 6C 65 20 2A 2F 0D 0A 20 20 6F 6E module */.. on
0149D0: 65 78 70 72 28 29 3B 0D 0A 20 20 69 66 28 28 74 expr();.. if((t
0149E0: 79 70 65 20 26 20 52 45 4C 42 49 54 53 29 20 3D ype & RELBITS) =
0149F0: 3D 20 50 52 45 4C 29 20 7B 0D 0A 20 20 20 20 65 = PREL) {.. e
014A00: 6E 64 74 20 3D 20 50 52 45 4C 3B 0D 0A 20 20 20 ndt = PREL;..
014A10: 20 65 6E 64 76 20 3D 20 66 69 65 6C 64 3B 0D 0A endv = field;..
014A20: 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20 69 66 }.. else if
014A30: 28 66 69 65 6C 64 29 20 72 65 6C 65 72 72 28 29 (field) relerr()
014A40: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ;.. }..../*..**
014A50: 20 64 65 66 69 6E 65 20 65 78 74 65 72 6E 61 6C define external
014A60: 20 72 65 66 65 72 65 6E 63 65 20 28 45 58 54 29 reference (EXT)
014A70: 0D 0A 2A 2F 0D 0A 64 6F 65 78 74 28 29 20 7B 0D ..*/..doext() {.
014A80: 0A 20 20 77 68 69 6C 65 28 21 61 74 65 6E 64 28 . while(!atend(
014A90: 2A 6C 70 29 29 20 7B 0D 0A 20 20 20 20 77 68 69 *lp)) {.. whi
014AA0: 6C 65 28 69 73 73 70 61 63 65 28 2A 6C 70 29 20 le(isspace(*lp)
014AB0: 7C 7C 20 2A 6C 70 20 3D 3D 20 27 2C 27 29 20 7B || *lp == ',') {
014AC0: 2B 2B 6C 70 3B 20 63 6F 6E 74 69 6E 75 65 3B 7D ++lp; continue;}
014AD0: 0D 0A 20 20 20 20 6C 70 20 3D 20 67 65 74 73 79 .. lp = getsy
014AE0: 6D 28 6C 70 2C 20 4E 4F 29 3B 09 09 09 2F 2A 20 m(lp, NO);.../*
014AF0: 66 65 74 63 68 20 74 68 65 20 6E 65 78 74 20 73 fetch the next s
014B00: 65 61 72 6C 79 20 2A 2F 0D 0A 20 20 6C 65 6E 20 early */.. len
014B10: 3D 20 69 6C 65 6E 20 3D 20 28 66 6F 72 6D 61 74 = ilen = (format
014B20: 20 26 20 37 29 20 2B 20 31 3B 0D 0A 20 20 66 6F & 7) + 1;.. fo
014B30: 72 6D 61 74 20 3E 3E 3D 20 33 3B 09 09 09 09 2F rmat >>= 3;..../
014B40: 2A 20 66 69 72 73 74 20 63 6F 64 65 2F 65 78 70 * first code/exp
014B50: 72 20 62 69 74 20 2A 2F 0D 0A 20 20 69 6C 6F 63 r bit */.. iloc
014B60: 20 3D 20 6C 6F 63 3B 09 09 09 09 2F 2A 20 70 72 = loc;..../* pr
014B70: 65 73 65 72 76 65 20 69 6E 73 74 72 20 6C 6F 63 eserve instr loc
014B80: 20 66 6F 72 20 24 20 2A 2F 0D 0A 20 20 68 6F 6C for $ */.. hol
014B90: 64 69 6E 67 20 3D 20 4E 4F 3B 0D 0A 20 20 65 70 ding = NO;.. ep
014BA0: 20 3D 20 65 78 70 62 75 66 3B 09 09 09 09 2F 2A = expbuf;..../*
014BB0: 20 73 65 74 20 65 70 20 66 6F 72 20 65 78 70 72 set ep for expr
014BC0: 28 29 20 2A 2F 0D 0A 20 20 77 68 69 6C 65 28 6C () */.. while(l
014BD0: 65 6E 2D 2D 20 3E 20 30 29 20 7B 09 09 09 2F 2A en-- > 0) {.../*
014BE0: 20 66 6F 72 20 65 61 63 68 20 62 79 74 65 20 6F for each byte o
014BF0: 66 20 63 6F 64 65 20 2A 2F 0D 0A 20 20 20 20 69 f code */.. i
014C00: 66 28 66 6F 72 6D 61 74 20 26 20 31 29 20 7B 09 f(format & 1) {.
014C10: 09 09 2F 2A 20 65 78 70 72 65 73 73 69 6F 6E 20 ../* expression
014C20: 2A 2F 0D 0A 20 20 20 20 20 20 69 66 28 68 6F 6C */.. if(hol
014C30: 64 69 6E 67 29 20 7B 0D 0A 20 20 20 20 20 20 20 ding) {..
014C40: 20 68 6F 6C 64 69 6E 67 20 3D 20 4E 4F 3B 0D 0A holding = NO;..
014C50: 20 20 20 20 20 20 20 20 66 69 65 6C 64 20 3D 20 field =
014C60: 6F 70 63 6F 64 65 20 2B 20 6F 70 61 64 6A 3B 09 opcode + opadj;.
014C70: 09 2F 2A 20 61 64 6A 75 73 74 20 6C 61 73 74 20 ./* adjust last
014C80: 62 79 74 65 20 62 65 66 6F 72 65 20 65 78 70 72 byte before expr
014C90: 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 6F 70 61 */.. opa
014CA0: 64 6A 20 3D 20 30 3B 0D 0A 20 20 20 20 20 20 20 dj = 0;..
014CB0: 20 67 65 6E 61 62 73 28 31 29 3B 0D 0A 20 20 20 genabs(1);..
014CC0: 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 65 78 }.. ex
014CD0: 70 72 28 26 76 2C 20 26 74 29 3B 09 09 09 2F 2A pr(&v, &t);.../*
014CE0: 20 65 76 61 6C 75 61 74 65 20 6E 65 78 74 20 65 evaluate next e
014CF0: 78 70 72 65 73 73 69 6F 6E 20 2A 2F 0D 0A 20 20 xpression */..
014D00: 79 6D 62 6F 6C 20 2A 2F 0D 0A 20 20 20 20 69 66 ymbol */.. if
014D10: 28 62 61 64 73 79 6D 29 20 7B 73 79 6D 65 72 72 (badsym) {symerr
014D20: 28 29 3B 20 63 6F 6E 74 69 6E 75 65 3B 7D 09 09 (); continue;}..
014D30: 2F 2A 20 73 79 6D 62 6F 6C 20 65 72 72 6F 72 20 /* symbol error
014D40: 2A 2F 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 */.. else if(
014D50: 73 74 66 69 6E 64 28 29 29 20 7B 09 09 09 09 2F stfind()) {..../
014D60: 2A 20 61 6C 72 65 61 64 79 20 69 6E 20 74 61 62 * already in tab
014D70: 6C 65 3F 20 2A 2F 0D 0A 20 20 20 20 20 20 69 66 le? */.. if
014D80: 28 73 74 70 74 72 5B 53 54 46 4C 41 47 5D 20 26 (stptr[STFLAG] &
014D90: 20 28 4C 41 42 42 49 54 7C 45 51 55 42 49 54 7C (LABBIT|EQUBIT|
014DA0: 53 45 54 42 49 54 29 29 20 7B 72 65 64 65 72 72 SETBIT)) {rederr
014DB0: 28 29 3B 20 63 6F 6E 74 69 6E 75 65 3B 7D 0D 0A (); continue;}..
014DC0: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 65 6C 73 }.. els
014DD0: 65 20 61 64 64 73 79 6D 28 29 3B 09 09 09 09 2F e addsym();..../
014DE0: 2A 20 6E 6F 74 20 79 65 74 20 64 65 66 69 6E 65 * not yet define
014DF0: 64 20 2A 2F 0D 0A 20 20 20 20 69 66 28 70 61 73 d */.. if(pas
014E00: 73 20 3D 3D 20 31 29 20 73 74 70 74 72 5B 53 54 s == 1) stptr[ST
014E10: 46 4C 41 47 5D 20 7C 3D 20 58 52 42 49 54 7C 41 FLAG] |= XRBIT|A
014E20: 42 53 3B 09 2F 2A 20 31 73 74 20 65 78 74 20 72 BS;./* 1st ext r
014E30: 65 66 20 69 73 20 41 42 53 20 30 20 2A 2F 0D 0A ef is ABS 0 */..
014E40: 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A }.. }..../*
014E50: 0D 0A 2A 2A 20 64 65 74 65 63 74 20 6C 61 62 65 ..** detect labe
014E60: 6C 20 61 6E 64 20 73 74 6F 77 20 69 74 20 61 77 l and stow it aw
014E70: 61 79 0D 0A 2A 2F 0D 0A 64 6F 6C 61 62 65 6C 28 ay..*/..dolabel(
014E80: 29 20 7B 0D 0A 20 20 6C 70 20 3D 20 73 6B 69 70 ) {.. lp = skip
014E90: 28 31 2C 20 6C 69 6E 65 29 3B 09 09 09 2F 2A 20 (1, line);.../*
014EA0: 6C 6F 63 61 74 65 20 66 69 72 73 74 20 66 69 65 locate first fie
014EB0: 6C 64 20 2A 2F 0D 0A 20 20 6C 70 20 3D 20 67 65 ld */.. lp = ge
014EC0: 74 73 79 6D 28 6C 70 2C 20 4E 4F 29 3B 09 09 09 tsym(lp, NO);...
014ED0: 2F 2A 20 66 65 74 63 68 20 61 20 73 79 6D 62 6F /* fetch a symbo
014EE0: 6C 20 2A 2F 0D 0A 20 20 69 66 28 67 6F 74 6C 61 l */.. if(gotla
014EF0: 62 65 6C 29 20 7B 09 09 09 2F 2A 20 67 6F 74 20 bel) {.../* got
014F00: 20 20 20 20 66 6F 72 6D 61 74 20 3E 3E 3D 20 31 format >>= 1
014F10: 3B 09 09 09 2F 2A 20 70 63 20 72 65 6C 61 74 69 ;.../* pc relati
014F20: 76 65 20 62 69 74 20 2A 2F 0D 0A 20 20 20 20 20 ve bit */..
014F30: 20 69 66 28 66 6F 72 6D 61 74 20 26 20 31 29 20 if(format & 1)
014F40: 7B 0D 0A 20 20 20 20 20 20 20 20 69 66 28 28 74 {.. if((t
014F50: 20 26 20 52 45 4C 42 49 54 53 29 20 3D 3D 20 50 & RELBITS) == P
014F60: 52 45 4C 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 REL) {..
014F70: 20 20 76 20 2D 3D 20 69 6C 65 6E 20 2B 20 69 6C v -= ilen + il
014F80: 6F 63 3B 09 09 2F 2A 20 63 61 6C 63 20 6F 66 66 oc;../* calc off
014F90: 73 65 74 20 66 72 6F 6D 20 74 68 69 73 20 69 6E set from this in
014FA0: 73 74 72 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 str */..
014FB0: 20 20 74 20 3D 20 28 74 20 26 20 7E 52 45 4C 42 t = (t & ~RELB
014FC0: 49 54 53 29 20 2B 20 41 42 53 3B 09 2F 2A 20 6E ITS) + ABS;./* n
014FD0: 6F 77 20 61 62 73 2C 20 6D 61 79 20 62 65 20 31 ow abs, may be 1
014FE0: 20 62 79 74 65 20 2A 2F 0D 0A 20 20 20 20 20 20 byte */..
014FF0: 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 65 }.. e
015000: 6C 73 65 20 76 20 2D 3D 20 69 6C 65 6E 3B 09 09 lse v -= ilen;..
015010: 09 2F 2A 20 61 64 6A 75 73 74 20 6F 66 66 73 65 ./* adjust offse
015020: 74 20 66 72 6F 6D 20 74 68 69 73 20 69 6E 73 74 t from this inst
015030: 72 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 70 63 r */.. pc
015040: 72 20 3D 20 59 45 53 3B 09 09 09 2F 2A 20 72 65 r = YES;.../* re
015050: 6D 65 6D 62 65 72 20 69 74 27 73 20 70 63 20 72 member it's pc r
015060: 65 6C 61 74 69 76 65 20 2A 2F 0D 0A 20 20 20 20 elative */..
015070: 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 }.. els
015080: 65 20 70 63 72 20 3D 20 4E 4F 3B 0D 0A 20 20 20 e pcr = NO;..
015090: 20 20 20 66 6F 72 6D 61 74 20 3E 3E 3D 20 31 3B format >>= 1;
0150A0: 09 09 09 2F 2A 20 73 69 7A 65 20 62 69 74 20 2A .../* size bit *
0150B0: 2F 0D 0A 20 20 20 20 20 20 69 66 28 66 6F 72 6D /.. if(form
0150C0: 61 74 20 26 20 31 29 20 7B 09 09 09 2F 2A 20 32 at & 1) {.../* 2
0150D0: 2D 62 79 74 65 20 65 78 70 72 20 2A 2F 0D 0A 20 -byte expr */..
0150E0: 20 20 20 20 20 20 20 69 66 28 74 20 26 20 58 52 if(t & XR
0150F0: 42 49 54 29 20 7B 09 09 09 2F 2A 20 65 78 74 20 BIT) {.../* ext
015100: 61 20 6C 61 62 65 6C 20 2A 2F 0D 0A 20 20 20 20 a label */..
015110: 69 66 28 62 61 64 73 79 6D 29 20 7B 6C 61 62 65 if(badsym) {labe
015120: 72 72 28 29 3B 20 72 65 74 75 72 6E 3B 7D 0D 0A rr(); return;}..
015130: 20 20 20 20 69 66 28 73 74 66 69 6E 64 28 29 29 if(stfind())
015140: 20 7B 09 09 09 2F 2A 20 61 6C 72 65 61 64 79 20 {.../* already
015150: 69 6E 20 74 61 62 6C 65 20 2A 2F 0D 0A 20 20 20 in table */..
015160: 20 20 20 69 66 28 70 61 73 73 20 3D 3D 20 31 29 if(pass == 1)
015170: 20 7B 0D 0A 20 20 20 20 20 20 20 20 69 66 28 73 {.. if(s
015180: 74 70 74 72 5B 53 54 46 4C 41 47 5D 20 26 20 28 tptr[STFLAG] & (
015190: 4C 41 42 42 49 54 7C 45 51 55 42 49 54 7C 53 45 LABBIT|EQUBIT|SE
0151A0: 54 42 49 54 7C 58 52 42 49 54 29 29 0D 0A 20 20 TBIT|XRBIT))..
0151B0: 20 20 20 20 20 20 20 20 7B 72 65 64 65 72 72 28 {rederr(
0151C0: 29 3B 20 72 65 74 75 72 6E 3B 7D 0D 0A 20 20 20 ); return;}..
0151D0: 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C }.. el
0151E0: 73 65 20 69 66 28 73 74 70 74 72 5B 53 54 46 4C se if(stptr[STFL
0151F0: 41 47 5D 20 26 20 28 4C 41 42 42 49 54 32 7C 45 AG] & (LABBIT2|E
015200: 51 55 42 49 54 7C 53 45 54 42 49 54 7C 58 52 42 QUBIT|SETBIT|XRB
015210: 49 54 29 29 0D 0A 20 20 20 20 20 20 20 20 7B 72 IT)).. {r
015220: 65 64 65 72 72 28 29 3B 20 72 65 74 75 72 6E 3B ederr(); return;
015230: 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 73 74 }.. else st
015240: 70 74 72 5B 53 54 46 4C 41 47 5D 20 7C 3D 20 4C ptr[STFLAG] |= L
015250: 41 42 42 49 54 32 3B 0D 0A 20 20 20 20 20 20 7D ABBIT2;.. }
015260: 0D 0A 20 20 20 20 65 6C 73 65 20 61 64 64 73 79 .. else addsy
015270: 6D 28 29 3B 09 09 09 2F 2A 20 6E 6F 74 20 64 65 m();.../* not de
015280: 66 69 6E 65 64 2C 20 73 74 6F 77 20 69 74 20 2A fined, stow it *
015290: 2F 0D 0A 20 20 20 20 69 66 28 70 61 73 73 20 3D /.. if(pass =
0152A0: 3D 20 31 29 20 7B 0D 0A 20 20 20 20 20 20 70 75 = 1) {.. pu
0152B0: 74 69 6E 74 28 73 74 70 74 72 20 2B 20 53 54 56 tint(stptr + STV
0152C0: 41 4C 55 45 2C 20 6C 6F 63 29 3B 09 2F 2A 20 76 ALUE, loc);./* v
0152D0: 61 6C 75 65 20 2A 2F 0D 0A 20 20 20 20 20 20 69 alue */.. i
0152E0: 66 28 67 6F 74 65 70 29 09 09 09 09 2F 2A 20 66 f(gotep)..../* f
0152F0: 6C 61 67 73 20 2A 2F 0D 0A 20 20 20 20 20 20 20 lags */..
015300: 72 65 66 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 ref */..
015310: 20 20 69 66 28 76 29 20 7B 09 09 09 2F 2A 20 6D if(v) {.../* m
015320: 75 73 74 20 6F 66 66 73 65 74 20 66 72 6F 6D 20 ust offset from
015330: 65 78 74 20 72 65 66 20 2A 2F 0D 0A 20 20 20 20 ext ref */..
015340: 20 20 20 20 20 20 20 20 69 74 65 6D 20 3D 20 58 item = X
015350: 50 4F 46 46 3B 0D 0A 20 20 20 20 20 20 20 20 20 POFF;..
015360: 20 20 20 74 79 70 65 20 3D 20 41 42 53 3B 0D 0A type = ABS;..
015370: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 65 6C fiel
015380: 64 20 3D 20 76 3B 0D 0A 20 20 20 20 20 20 20 20 d = v;..
015390: 20 20 20 20 6C 69 73 74 63 6F 64 65 28 32 2C 20 listcode(2,
0153A0: 22 2B 20 22 29 3B 09 09 2F 2A 20 6C 69 73 74 20 "+ ");../* list
0153B0: 6F 66 66 73 65 74 20 2A 2F 0D 0A 20 20 20 20 20 offset */..
0153C0: 20 20 20 20 20 20 20 70 75 74 72 65 6C 28 29 3B putrel();
0153D0: 09 09 09 2F 2A 20 77 72 69 74 65 20 32 2D 62 79 .../* write 2-by
0153E0: 74 65 20 6F 66 66 73 65 74 20 2A 2F 0D 0A 20 20 te offset */..
0153F0: 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 }..
015400: 20 20 20 20 20 20 20 66 69 65 6C 64 20 3D 20 70 field = p
015410: 72 69 6F 72 3B 09 09 2F 2A 20 77 69 6C 6C 20 6C rior;../* will l
015420: 69 6E 6B 20 74 6F 20 70 72 69 6F 72 20 72 65 66 ink to prior ref
015430: 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 20 20 7D */.. }
015440: 0D 0A 20 20 20 20 20 20 20 20 65 6C 73 65 20 66 .. else f
015450: 69 65 6C 64 20 3D 20 76 3B 09 09 09 2F 2A 20 65 ield = v;.../* e
015460: 78 70 72 20 76 61 6C 75 65 20 2A 2F 0D 0A 20 20 xpr value */..
015470: 20 20 20 20 20 20 69 66 28 28 74 20 26 20 52 45 if((t & RE
015480: 4C 42 49 54 53 29 20 3D 3D 20 41 42 53 29 0D 0A LBITS) == ABS)..
015490: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 6E gen
0154A0: 61 62 73 28 32 29 3B 09 09 09 2F 2A 20 77 72 69 abs(2);.../* wri
0154B0: 74 65 20 32 20 61 62 73 6F 6C 75 74 65 20 62 79 te 2 absolute by
0154C0: 74 65 73 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 tes */..
0154D0: 65 6C 73 65 20 67 65 6E 72 65 6C 28 29 3B 09 09 else genrel();..
0154E0: 09 2F 2A 20 77 72 69 74 65 20 32 20 72 65 6C 6F ./* write 2 relo
0154F0: 63 61 74 61 62 6C 65 20 62 79 74 65 73 20 2A 2F catable bytes */
015500: 20 20 20 20 73 74 70 74 72 5B 53 54 46 4C 41 47 stptr[STFLAG
015510: 5D 20 3D 20 4C 41 42 42 49 54 7C 50 52 45 4C 7C ] = LABBIT|PREL|
015520: 45 50 42 49 54 3B 0D 0A 20 20 20 20 20 20 65 6C EPBIT;.. el
015530: 73 65 20 73 74 70 74 72 5B 53 54 46 4C 41 47 5D se stptr[STFLAG]
015540: 20 3D 20 4C 41 42 42 49 54 7C 50 52 45 4C 3B 0D = LABBIT|PREL;.
015550: 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D 0D . }.. }.
015560: 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 73 . }..../*..** s
015570: 65 74 20 6C 6F 63 61 74 69 6F 6E 20 63 6F 75 6E et location coun
015580: 74 65 72 20 28 4F 52 47 2C 20 44 53 29 0D 0A 2A ter (ORG, DS)..*
015590: 2F 0D 0A 64 6F 6C 6F 63 28 62 75 6D 70 29 20 69 /..doloc(bump) i
0155A0: 6E 74 20 62 75 6D 70 3B 20 7B 0D 0A 20 20 69 66 nt bump; {.. if
0155B0: 28 6F 6E 65 78 70 72 28 29 29 20 7B 0D 0A 20 20 (onexpr()) {..
0155C0: 20 20 69 66 28 62 75 6D 70 29 20 66 69 65 6C 64 if(bump) field
0155D0: 20 3D 20 6C 6F 63 20 2B 3D 20 66 69 65 6C 64 3B = loc += field;
0155E0: 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 6C 6F .. else if(lo
0155F0: 63 20 3C 3D 20 66 69 65 6C 64 29 20 6C 6F 63 20 c <= field) loc
015600: 3D 20 66 69 65 6C 64 3B 0D 0A 20 20 20 20 65 6C = field;.. el
015610: 73 65 20 62 61 6B 65 72 72 28 29 3B 0D 0A 20 20 se bakerr();..
015620: 20 20 69 66 28 70 61 73 73 20 3D 3D 20 32 29 20 if(pass == 2)
015630: 7B 69 74 65 6D 20 3D 20 53 45 54 4C 43 3B 20 74 {item = SETLC; t
015640: 79 70 65 20 3D 20 50 52 45 4C 3B 20 70 75 74 72 ype = PREL; putr
015650: 65 6C 28 29 3B 7D 0D 0A 20 20 20 20 7D 0D 0A 20 el();}.. }..
015660: 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 64 65 74 }..../*..** det
015670: 65 63 74 20 6D 61 63 68 69 6E 65 20 69 6E 73 74 ect machine inst
015680: 72 75 63 74 69 6F 6E 20 61 6E 64 20 70 72 6F 63 ruction and proc
015690: 65 73 73 20 69 74 0D 0A 2A 2F 0D 0A 64 6F 6D 61 ess it..*/..doma
0156A0: 63 68 28 29 20 7B 0D 0A 20 20 63 68 61 72 20 2A ch() {.. char *
0156B0: 66 6D 74 2C 20 2A 63 70 3B 0D 0A 20 20 69 66 28 fmt, *cp;.. if(
0156C0: 67 6F 74 6C 61 62 65 6C 29 20 63 70 20 3D 20 6C gotlabel) cp = l
0156D0: 70 3B 0D 0A 20 20 65 6C 73 65 20 20 20 20 20 20 p;.. else
0156E0: 20 20 20 63 70 20 3D 20 73 6B 69 70 28 31 2C 20 cp = skip(1,
0156F0: 6C 69 6E 65 29 3B 09 2F 2A 20 62 61 63 6B 75 70 line);./* backup
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: 0D 0A 20 20 20 20 20 20 20 20 2D 2D 6C 65 6E 3B .. --len;
015810: 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 .. }..
015820: 20 20 20 65 6C 73 65 20 7B 09 09 09 09 2F 2A 20 else {..../*
015830: 31 2D 62 79 74 65 20 65 78 70 72 20 2A 2F 0D 0A 1-byte expr */..
015840: 20 20 20 20 20 20 20 20 69 66 28 28 74 20 26 20 if((t &
015850: 52 45 4C 42 49 54 53 29 20 3D 3D 20 50 52 45 4C RELBITS) == PREL
015860: 29 0D 0A 20 20 20 20 20 20 20 20 20 20 72 65 6C ).. rel
015870: 65 72 72 28 29 3B 09 09 09 2F 2A 20 31 20 62 79 err();.../* 1 by
015880: 74 65 20 63 61 6E 27 74 20 62 65 20 72 65 6C 6F te can't be relo
015890: 63 61 74 61 62 6C 65 20 2A 2F 0D 0A 20 20 20 20 catable */..
0158A0: 20 20 20 20 69 66 28 70 63 72 20 26 26 20 28 76 if(pcr && (v
0158B0: 20 3E 20 31 32 37 20 7C 7C 20 76 20 3C 20 2D 31 > 127 || v < -1
0158C0: 32 38 29 29 0D 0A 20 20 20 20 20 20 20 20 20 20 28))..
0158D0: 72 6E 67 65 72 72 28 29 3B 09 09 09 2F 2A 20 72 rngerr();.../* r
0158E0: 61 6E 67 65 20 65 72 72 6F 72 20 2A 2F 0D 0A 20 ange error */..
0158F0: 20 20 20 20 20 20 20 66 69 65 6C 64 20 3D 20 76 field = v
015900: 3B 09 09 09 2F 2A 20 65 78 70 72 20 76 61 6C 75 ;.../* expr valu
015910: 65 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 67 65 e */.. ge
015920: 6E 61 62 73 28 31 29 3B 09 09 09 2F 2A 20 77 72 nabs(1);.../* wr
015930: 69 74 65 20 31 20 61 62 73 6F 6C 75 74 65 20 62 ite 1 absolute b
015940: 79 74 65 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 yte */..
015950: 7D 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 }.. }..
015960: 65 6C 73 65 20 7B 09 09 09 09 2F 2A 20 63 6F 64 else {..../* cod
015970: 65 20 62 79 74 65 20 2A 2F 0D 0A 20 20 20 20 20 e byte */..
015980: 20 69 66 28 68 6F 6C 64 69 6E 67 29 20 7B 0D 0A if(holding) {..
015990: 20 20 20 20 20 20 20 20 66 69 65 6C 64 20 3D 20 field =
0159A0: 6F 70 63 6F 64 65 3B 09 09 09 2F 2A 20 64 6F 6E opcode;.../* don
0159B0: 27 74 20 61 64 6A 75 73 74 2C 20 6E 6F 74 20 6C 't adjust, not l
0159C0: 61 73 74 20 62 79 74 65 20 2A 2F 0D 0A 20 20 20 ast byte */..
0159D0: 20 20 20 20 20 67 65 6E 61 62 73 28 31 29 3B 09 genabs(1);.
0159E0: 09 09 2F 2A 20 77 72 69 74 65 20 70 72 69 6F 72 ../* write prior
0159F0: 20 63 6F 64 65 20 62 79 74 65 20 2A 2F 0D 0A 20 code byte */..
015A00: 5C 6E 22 29 3B 0D 0A 20 20 20 20 69 66 28 6C 65 \n");.. if(le
015A10: 72 72 20 26 20 20 20 31 36 29 20 6F 75 74 65 72 rr & 16) outer
015A20: 72 28 22 2D 20 42 61 64 20 4F 70 65 72 61 74 69 r("- Bad Operati
015A30: 6F 6E 5C 6E 22 29 3B 0D 0A 20 20 20 20 69 66 28 on\n");.. if(
015A40: 6C 65 72 72 20 26 20 20 20 33 32 29 20 6F 75 74 lerr & 32) out
015A50: 65 72 72 28 22 2D 20 52 65 64 75 6E 64 61 6E 74 err("- Redundant
015A60: 20 44 65 66 69 6E 69 74 69 6F 6E 5C 6E 22 29 3B Definition\n");
015A70: 0D 0A 20 20 20 20 69 66 28 6C 65 72 72 20 26 20 .. if(lerr &
015A80: 20 20 36 34 29 20 6F 75 74 65 72 72 28 22 2D 20 64) outerr("-
015A90: 42 61 64 20 53 79 6D 62 6F 6C 5C 6E 22 29 3B 0D Bad Symbol\n");.
015AA0: 0A 20 20 20 20 69 66 28 6C 65 72 72 20 26 20 20 . if(lerr &
015AB0: 31 32 38 29 20 6F 75 74 65 72 72 28 22 2D 20 52 128) outerr("- R
015AC0: 65 6C 6F 63 61 74 69 6F 6E 20 45 72 72 6F 72 5C elocation Error\
015AD0: 6E 22 29 3B 0D 0A 20 20 20 20 69 66 28 6C 65 72 n");.. if(ler
015AE0: 72 20 26 20 20 32 35 36 29 20 6F 75 74 65 72 72 r & 256) outerr
015AF0: 28 22 2D 20 55 6E 64 65 66 69 6E 65 64 20 53 79 ("- Undefined Sy
015B00: 6D 62 6F 6C 5C 6E 22 29 3B 0D 0A 20 20 20 20 69 mbol\n");.. i
015B10: 66 28 6C 65 72 72 20 26 20 20 35 31 32 29 20 6F f(lerr & 512) o
015B20: 75 74 65 72 72 28 22 2D 20 42 61 64 20 50 61 72 uterr("- Bad Par
015B30: 61 6D 65 74 65 72 5C 6E 22 29 3B 0D 0A 20 20 20 ameter\n");..
015B40: 20 69 66 28 6C 65 72 72 20 26 20 31 30 32 34 29 if(lerr & 1024)
015B50: 20 6F 75 74 65 72 72 28 22 2D 20 52 61 6E 67 65 outerr("- Range
015B60: 20 45 72 72 6F 72 5C 6E 22 29 3B 0D 0A 20 20 20 Error\n");..
015B70: 20 69 66 28 70 61 75 73 65 29 20 77 61 69 74 28 if(pause) wait(
015B80: 29 3B 0D 0A 20 20 20 20 6F 75 74 65 72 72 28 22 );.. outerr("
015B90: 5C 6E 22 29 3B 0D 0A 20 20 20 20 65 72 72 20 3D \n");.. err =
015BA0: 20 59 45 53 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 YES;.. }..
015BB0: 7D 0D 0A 0D 0A 62 61 6B 65 72 72 28 29 20 7B 6C }....bakerr() {l
015BC0: 65 72 72 20 7C 3D 20 20 20 20 31 3B 7D 0D 0A 6E err |= 1;}..n
015BD0: 75 6D 65 72 72 28 29 20 7B 6C 65 72 72 20 7C 3D umerr() {lerr |=
015BE0: 20 20 20 20 32 3B 7D 0D 0A 65 78 70 65 72 72 28 2;}..experr(
015BF0: 29 20 7B 6C 65 72 72 20 7C 3D 20 20 20 20 34 3B ) {lerr |= 4;
015C00: 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 }..
015C10: 6F 70 63 6F 64 65 20 3D 20 2A 2B 2B 70 74 72 20 opcode = *++ptr
015C20: 26 20 32 35 35 3B 09 09 2F 2A 20 68 6F 6C 64 20 & 255;../* hold
015C30: 74 68 69 73 20 6F 6E 65 2C 20 6D 61 79 20 62 65 this one, may be
015C40: 20 6D 6F 72 65 20 2A 2F 0D 0A 20 20 20 20 20 20 more */..
015C50: 68 6F 6C 64 69 6E 67 20 3D 20 59 45 53 3B 0D 0A holding = YES;..
015C60: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 66 6F 72 }.. for
015C70: 6D 61 74 20 3E 3E 3D 20 31 3B 0D 0A 20 20 20 20 mat >>= 1;..
015C80: 7D 0D 0A 20 20 69 66 28 68 6F 6C 64 69 6E 67 29 }.. if(holding)
015C90: 20 7B 0D 0A 20 20 20 20 66 69 65 6C 64 20 3D 20 {.. field =
015CA0: 6F 70 63 6F 64 65 20 2B 20 6F 70 61 64 6A 3B 0D opcode + opadj;.
015CB0: 0A 20 20 20 20 67 65 6E 61 62 73 28 31 29 3B 09 . genabs(1);.
015CC0: 09 09 09 2F 2A 20 77 72 69 74 65 20 6C 61 73 74 .../* write last
015CD0: 20 63 6F 64 65 20 62 79 74 65 20 2A 2F 0D 0A 20 code byte */..
015CE0: 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D }.. }..../*.
015CF0: 0A 2A 2A 20 64 65 66 69 6E 65 20 61 20 73 79 6D .** define a sym
015D00: 62 6F 6C 20 76 61 6C 75 65 20 28 53 45 54 2C 20 bol value (SET,
015D10: 45 51 55 29 0D 0A 2A 2F 0D 0A 64 6F 76 61 6C 28 EQU)..*/..doval(
015D20: 73 65 74 29 20 69 6E 74 20 73 65 74 3B 20 7B 0D set) int set; {.
015D30: 0A 20 20 63 68 61 72 20 2A 70 74 72 3B 20 69 6E . char *ptr; in
015D40: 74 20 66 6F 75 6E 64 3B 0D 0A 20 20 69 66 28 21 t found;.. if(!
015D50: 73 74 73 79 6D 5B 30 5D 20 7C 7C 20 62 61 64 73 stsym[0] || bads
015D60: 79 6D 20 7C 7C 20 67 6F 74 6C 61 62 65 6C 29 20 ym || gotlabel)
015D70: 7B 73 79 6D 65 72 72 28 29 3B 20 72 65 74 75 72 {symerr(); retur
015D80: 6E 3B 7D 0D 0A 20 20 69 66 28 28 66 6F 75 6E 64 n;}.. if((found
015D90: 20 3D 20 73 74 66 69 6E 64 28 29 29 20 3D 3D 20 = stfind()) ==
015DA0: 30 29 20 61 64 64 73 79 6D 28 29 3B 09 09 2F 2A 0) addsym();../*
015DB0: 20 6E 6F 74 20 64 65 66 69 6E 65 64 20 20 2A 2F not defined */
015DC0: 0D 0A 20 20 70 74 72 20 3D 20 73 74 70 74 72 3B .. ptr = stptr;
015DD0: 09 09 09 09 09 2F 2A 20 70 72 65 73 65 72 76 65 ...../* preserve
015DE0: 20 73 74 70 74 72 20 2A 2F 0D 0A 20 20 6F 6E 65 stptr */.. one
015DF0: 78 70 72 28 29 3B 09 09 09 09 09 2F 2A 20 65 76 xpr();...../* ev
015E00: 7D 0D 0A 6C 61 62 65 72 72 28 29 20 7B 6C 65 72 }..laberr() {ler
015E10: 72 20 7C 3D 20 20 20 20 38 3B 7D 0D 0A 6F 70 72 r |= 8;}..opr
015E20: 65 72 72 28 29 20 7B 6C 65 72 72 20 7C 3D 20 20 err() {lerr |=
015E30: 20 31 36 3B 7D 0D 0A 72 65 64 65 72 72 28 29 20 16;}..rederr()
015E40: 7B 6C 65 72 72 20 7C 3D 20 20 20 33 32 3B 7D 0D {lerr |= 32;}.
015E50: 0A 73 79 6D 65 72 72 28 29 20 7B 6C 65 72 72 20 .symerr() {lerr
015E60: 7C 3D 20 20 20 36 34 3B 7D 0D 0A 72 65 6C 65 72 |= 64;}..reler
015E70: 72 28 29 20 7B 6C 65 72 72 20 7C 3D 20 20 31 32 r() {lerr |= 12
015E80: 38 3B 7D 0D 0A 75 6E 64 65 72 72 28 29 20 7B 6C 8;}..underr() {l
015E90: 65 72 72 20 7C 3D 20 20 32 35 36 3B 7D 0D 0A 70 err |= 256;}..p
015EA0: 61 72 65 72 72 28 29 20 7B 6C 65 72 72 20 7C 3D arerr() {lerr |=
015EB0: 20 20 35 31 32 3B 7D 0D 0A 72 6E 67 65 72 72 28 512;}..rngerr(
015EC0: 29 20 7B 6C 65 72 72 20 7C 3D 20 31 30 32 34 3B ) {lerr |= 1024;
015ED0: 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6C 69 73 74 }..../*..** list
015EE0: 20 61 20 63 6F 64 65 20 69 74 65 6D 0D 0A 2A 2F a code item..*/
015EF0: 0D 0A 6C 69 73 74 63 6F 64 65 28 73 7A 2C 20 73 ..listcode(sz, s
015F00: 75 66 66 29 20 69 6E 74 20 73 7A 3B 20 63 68 61 uff) int sz; cha
015F10: 72 20 73 75 66 66 5B 5D 3B 20 7B 0D 0A 20 20 69 r suff[]; {.. i
015F20: 6E 74 20 69 3B 20 63 68 61 72 20 73 74 72 5B 33 nt i; char str[3
015F30: 5D 3B 0D 0A 20 20 69 66 28 6C 69 73 74 29 20 7B ];.. if(list) {
015F40: 0D 0A 20 20 20 20 69 20 3D 20 73 7A 20 2B 20 73 .. i = sz + s
015F50: 7A 20 2B 20 73 74 72 6C 65 6E 28 73 75 66 66 29 z + strlen(suff)
015F60: 3B 0D 0A 20 20 20 20 69 66 28 28 63 63 6E 74 20 ;.. if((ccnt
015F70: 2B 20 69 29 20 3E 20 31 36 29 20 7B 65 6E 64 6C + i) > 16) {endl
015F80: 69 6E 65 28 29 3B 20 62 65 67 6C 69 6E 65 28 29 ine(); begline()
015F90: 3B 7D 20 0D 0A 20 20 20 20 77 68 69 6C 65 28 73 ;} .. while(s
015FA0: 7A 2D 2D 29 20 7B 0D 0A 20 20 20 20 20 20 69 66 z--) {.. if
015FB0: 28 73 7A 29 20 69 74 6F 78 28 28 66 69 65 6C 64 (sz) itox((field
015FC0: 20 3E 3E 20 38 29 20 26 20 32 35 35 2C 20 73 74 >> 8) & 255, st
015FD0: 72 2C 20 33 29 3B 0D 0A 20 20 20 20 20 20 65 6C r, 3);.. el
015FE0: 73 65 20 20 20 69 74 6F 78 28 66 69 65 6C 64 20 se itox(field
015FF0: 26 20 32 35 35 2C 20 73 74 72 2C 20 33 29 3B 0D & 255, str, 3);.
016000: 61 6C 75 61 74 65 20 65 78 70 72 65 73 73 69 6F aluate expressio
016010: 6E 20 2A 2F 0D 0A 20 20 69 66 28 70 61 73 73 20 n */.. if(pass
016020: 3D 3D 20 31 20 7C 7C 20 73 65 74 29 20 7B 0D 0A == 1 || set) {..
016030: 20 20 20 20 69 66 28 66 6F 75 6E 64 20 3D 3D 20 if(found ==
016040: 30 20 7C 7C 20 70 74 72 5B 53 54 46 4C 41 47 5D 0 || ptr[STFLAG]
016050: 20 26 20 73 65 74 29 20 7B 0D 0A 20 20 20 20 20 & set) {..
016060: 20 70 75 74 69 6E 74 28 70 74 72 20 2B 20 53 54 putint(ptr + ST
016070: 56 41 4C 55 45 2C 20 66 69 65 6C 64 29 3B 09 09 VALUE, field);..
016080: 2F 2A 20 76 61 6C 75 65 20 2A 2F 0D 0A 20 20 20 /* value */..
016090: 20 20 20 70 74 72 5B 53 54 46 4C 41 47 5D 20 3D ptr[STFLAG] =
0160A0: 20 73 65 74 7C 74 79 70 65 3B 09 09 09 2F 2A 20 set|type;.../*
0160B0: 66 6C 61 67 73 20 2A 2F 0D 0A 20 20 20 20 20 20 flags */..
0160C0: 7D 0D 0A 20 20 20 20 65 6C 73 65 20 72 65 64 65 }.. else rede
0160D0: 72 72 28 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 rr();.. }..
0160E0: 65 6C 73 65 20 69 66 28 70 74 72 5B 53 54 46 4C else if(ptr[STFL
0160F0: 41 47 5D 20 26 20 28 4C 41 42 42 49 54 7C 45 51 AG] & (LABBIT|EQ
016100: 55 42 49 54 7C 53 45 54 42 49 54 7C 58 52 42 49 UBIT|SETBIT|XRBI
016110: 54 29 29 20 72 65 64 65 72 72 28 29 3B 0D 0A 20 T)) rederr();..
016120: 20 65 6C 73 65 20 70 74 72 5B 53 54 46 4C 41 47 else ptr[STFLAG
016130: 5D 20 7C 3D 20 45 51 55 42 49 54 3B 0D 0A 20 20 ] |= EQUBIT;..
016140: 69 66 28 70 61 73 73 20 3D 3D 20 32 29 20 7B 09 if(pass == 2) {.
016150: 09 09 09 2F 2A 20 6C 69 73 74 20 76 61 6C 75 65 .../* list value
016160: 20 2A 2F 0D 0A 20 20 20 20 69 66 28 28 70 74 72 */.. if((ptr
016170: 5B 53 54 46 4C 41 47 5D 20 26 20 52 45 4C 42 49 [STFLAG] & RELBI
016180: 54 53 29 20 3D 3D 20 50 52 45 4C 29 0D 0A 20 20 TS) == PREL)..
016190: 20 20 20 20 20 20 20 6C 69 73 74 63 6F 64 65 28 listcode(
0161A0: 32 2C 20 22 27 20 3D 22 29 3B 0D 0A 20 20 20 20 2, "' =");..
0161B0: 65 6C 73 65 20 6C 69 73 74 63 6F 64 65 28 32 2C else listcode(2,
0161C0: 20 22 20 20 3D 22 29 3B 0D 0A 20 20 20 20 7D 0D " =");.. }.
0161D0: 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 65 . }..../*..** e
0161E0: 6E 64 20 61 20 6C 69 6E 65 20 69 6E 20 74 68 65 nd a line in the
0161F0: 20 6C 69 73 74 69 6E 67 0D 0A 2A 2F 0D 0A 65 6E listing..*/..en
016200: 0A 20 20 20 20 20 20 69 66 28 2A 73 74 72 20 3D . if(*str =
016210: 3D 20 27 20 27 29 20 2A 73 74 72 20 3D 20 27 30 = ' ') *str = '0
016220: 27 3B 0D 0A 20 20 20 20 20 20 66 70 75 74 73 28 ';.. fputs(
016230: 73 74 72 2C 20 73 74 64 6F 75 74 29 3B 0D 0A 20 str, stdout);..
016240: 20 20 20 20 20 7D 0D 0A 20 20 20 20 66 70 75 74 }.. fput
016250: 73 28 73 75 66 66 2C 20 73 74 64 6F 75 74 29 3B s(suff, stdout);
016260: 0D 0A 20 20 20 20 63 63 6E 74 20 2B 3D 20 69 3B .. ccnt += i;
016270: 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A .. }.. }....
016280: 2F 2A 0D 0A 2A 2A 20 6F 75 74 70 75 74 20 61 6E /*..** output an
016290: 20 65 72 72 6F 72 20 6C 69 6E 65 0D 0A 2A 2F 0D error line..*/.
0162A0: 0A 6F 75 74 65 72 72 28 73 74 72 29 20 63 68 61 .outerr(str) cha
0162B0: 72 20 2A 73 74 72 3B 20 7B 0D 0A 20 20 62 65 67 r *str; {.. beg
0162C0: 70 61 67 65 28 29 3B 20 66 70 75 74 73 28 73 74 page(); fputs(st
0162D0: 72 2C 20 73 74 64 6F 75 74 29 3B 20 2B 2B 6C 6C r, stdout); ++ll
0162E0: 69 6E 65 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D ine;.. }..../*.
0162F0: 0A 2A 2A 20 72 65 71 75 69 72 65 20 6F 6E 65 20 .** require one
016300: 65 78 70 72 65 73 73 69 6F 6E 20 6F 6E 6C 79 0D expression only.
016310: 0A 2A 2F 0D 0A 6F 6E 65 78 70 72 28 29 20 7B 0D .*/..onexpr() {.
016320: 0A 20 20 65 70 20 3D 20 6C 70 3B 0D 0A 20 20 65 . ep = lp;.. e
016330: 78 70 72 28 26 66 69 65 6C 64 2C 20 26 74 79 70 xpr(&field, &typ
016340: 65 29 3B 0D 0A 20 20 69 66 28 61 74 65 6E 64 28 e);.. if(atend(
016350: 2A 65 70 29 29 20 72 65 74 75 72 6E 20 28 59 45 *ep)) return (YE
016360: 53 29 3B 0D 0A 20 20 65 78 70 65 72 72 28 29 3B S);.. experr();
016370: 0D 0A 20 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B .. return (NO);
016380: 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 .. }..../*..**
016390: 6F 75 74 70 75 74 20 65 6E 64 20 6F 66 20 70 72 output end of pr
0163A0: 6F 67 72 61 6D 20 61 6E 64 20 66 69 6C 65 0D 0A ogram and file..
0163B0: 2A 2F 0D 0A 70 75 74 65 6E 64 28 29 20 7B 0D 0A */..putend() {..
0163C0: 20 20 69 74 65 6D 20 3D 20 45 50 52 4F 47 3B 20 item = EPROG;
0163D0: 74 79 70 65 20 3D 20 65 6E 64 74 3B 20 66 69 65 type = endt; fie
0163E0: 6C 64 20 3D 20 65 6E 64 76 3B 20 70 75 74 72 65 ld = endv; putre
0163F0: 6C 28 29 3B 0D 0A 20 20 69 74 65 6D 20 3D 20 45 l();.. item = E
016400: 64 6C 69 6E 65 28 29 20 7B 0D 0A 20 20 63 68 61 dline() {.. cha
016410: 72 20 2A 63 70 3B 20 69 6E 74 20 63 6F 6C 3B 20 r *cp; int col;
016420: 63 6F 6C 20 3D 20 30 3B 0D 0A 20 20 69 66 28 70 col = 0;.. if(p
016430: 61 73 73 20 3D 3D 20 32 20 26 26 20 6C 69 73 74 ass == 2 && list
016440: 29 20 7B 0D 0A 20 20 20 20 69 66 28 70 61 72 74 ) {.. if(part
016450: 31 29 20 70 75 74 73 28 22 22 29 3B 0D 0A 20 20 1) puts("");..
016460: 20 20 65 6C 73 65 20 7B 0D 0A 20 20 20 20 20 20 else {..
016470: 70 61 72 74 31 20 3D 20 59 45 53 3B 0D 0A 20 20 part1 = YES;..
016480: 20 20 20 20 77 68 69 6C 65 28 63 63 6E 74 2B 2B while(ccnt++
016490: 20 3C 20 31 36 29 20 70 75 74 63 68 61 72 28 27 < 16) putchar('
0164A0: 20 27 29 3B 0D 0A 20 20 20 20 20 20 63 70 20 3D ');.. cp =
0164B0: 20 6C 69 6E 65 3B 0D 0A 20 20 20 20 20 20 77 68 line;.. wh
0164C0: 69 6C 65 28 2A 63 70 29 20 7B 0D 0A 20 20 20 20 ile(*cp) {..
0164D0: 20 20 20 20 69 66 28 2A 63 70 20 21 3D 20 27 5C if(*cp != '\
0164E0: 74 27 29 20 7B 2B 2B 63 6F 6C 3B 20 70 75 74 63 t') {++col; putc
0164F0: 68 61 72 28 2A 63 70 2B 2B 29 3B 7D 0D 0A 20 20 har(*cp++);}..
016500: 20 20 20 20 20 20 65 6C 73 65 20 7B 64 6F 20 70 else {do p
016510: 75 74 63 68 61 72 28 27 20 27 29 3B 20 77 68 69 utchar(' '); whi
016520: 6C 65 28 2B 2B 63 6F 6C 20 25 20 38 29 3B 20 2B le(++col % 8); +
016530: 2B 63 70 3B 7D 0D 0A 20 20 20 20 20 20 20 20 7D +cp;}.. }
016540: 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D .. }.. }
016550: 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 .. }..../*..**
016560: 67 65 6E 65 72 61 74 65 20 61 6E 20 61 62 73 6F generate an abso
016570: 6C 75 74 65 20 76 61 6C 75 65 20 6F 66 20 73 7A lute value of sz
016580: 20 62 79 74 65 73 0D 0A 2A 2F 0D 0A 67 65 6E 61 bytes..*/..gena
016590: 62 73 28 73 7A 29 20 69 6E 74 20 73 7A 3B 20 7B bs(sz) int sz; {
0165A0: 0D 0A 20 20 6C 69 73 74 63 6F 64 65 28 73 7A 2C .. listcode(sz,
0165B0: 20 22 20 22 29 3B 0D 0A 20 20 6C 6F 63 20 2B 3D " ");.. loc +=
0165C0: 20 73 7A 3B 09 09 09 09 2F 2A 20 62 75 6D 70 20 sz;..../* bump
0165D0: 6C 6F 63 61 74 69 6F 6E 20 63 6F 75 6E 74 65 72 location counter
0165E0: 20 2A 2F 0D 0A 20 20 69 74 65 6D 20 3D 20 41 42 */.. item = AB
0165F0: 53 3B 0D 0A 20 20 77 68 69 6C 65 28 73 7A 2D 2D S;.. while(sz--
016600: 46 49 4C 45 3B 20 74 79 70 65 20 3D 20 41 42 53 FILE; type = ABS
016610: 3B 20 20 66 69 65 6C 64 20 3D 20 30 3B 20 20 20 ; field = 0;
016620: 20 70 75 74 72 65 6C 28 29 3B 0D 0A 20 20 7D 0D putrel();.. }.
016630: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6F 75 74 70 75 74 .../*..** output
016640: 20 65 6E 74 72 79 20 70 6F 69 6E 74 73 0D 0A 2A entry points..*
016650: 2F 0D 0A 70 75 74 65 6E 74 28 29 20 7B 0D 0A 20 /..putent() {..
016660: 20 63 68 61 72 20 2A 63 70 3B 0D 0A 20 20 63 70 char *cp;.. cp
016670: 20 3D 20 73 74 3B 0D 0A 20 20 77 68 69 6C 65 28 = st;.. while(
016680: 63 70 20 3C 20 73 74 65 6E 64 29 20 7B 0D 0A 20 cp < stend) {..
016690: 20 20 20 70 6F 6C 6C 28 59 45 53 29 3B 0D 0A 20 poll(YES);..
0166A0: 20 20 20 69 66 28 2A 63 70 29 20 7B 0D 0A 20 20 if(*cp) {..
0166B0: 20 20 20 20 69 66 28 63 70 5B 53 54 46 4C 41 47 if(cp[STFLAG
0166C0: 5D 20 26 20 45 50 42 49 54 29 20 7B 09 09 2F 2A ] & EPBIT) {../*
0166D0: 20 65 6E 74 72 79 20 70 6F 69 6E 74 20 2A 2F 0D entry point */.
0166E0: 0A 20 20 20 20 20 20 20 20 69 74 65 6D 20 3D 20 . item =
0166F0: 45 4E 41 4D 45 3B 0D 0A 20 20 20 20 20 20 20 20 ENAME;..
016700: 73 74 72 6E 63 70 79 28 73 79 6D 62 6F 6C 2C 20 strncpy(symbol,
016710: 63 70 2C 20 4D 41 58 53 59 4D 20 2B 20 31 29 3B cp, MAXSYM + 1);
016720: 0D 0A 20 20 20 20 20 20 20 20 70 75 74 72 65 6C .. putrel
016730: 28 29 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A ();.. }..
016740: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 63 70 20 }.. cp
016750: 2B 3D 20 53 54 45 4E 54 52 59 3B 0D 0A 20 20 20 += STENTRY;..
016760: 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A }.. }..../*..*
016770: 2A 20 6F 75 74 70 75 74 20 65 6E 74 72 79 20 70 * output entry p
016780: 6F 69 6E 74 20 6F 72 20 65 78 74 65 72 6E 61 6C oint or external
016790: 20 72 65 66 65 72 65 6E 63 65 0D 0A 2A 2F 0D 0A reference..*/..
0167A0: 70 75 74 65 78 28 63 70 2C 20 69 29 20 63 68 61 putex(cp, i) cha
0167B0: 72 20 2A 63 70 3B 20 69 6E 74 20 69 3B 20 7B 0D r *cp; int i; {.
0167C0: 0A 20 20 69 74 65 6D 20 3D 20 69 3B 0D 0A 20 20 . item = i;..
0167D0: 74 79 70 65 20 3D 20 63 70 5B 53 54 46 4C 41 47 type = cp[STFLAG
0167E0: 5D 20 26 20 52 45 4C 42 49 54 53 3B 0D 0A 20 20 ] & RELBITS;..
0167F0: 66 69 65 6C 64 20 3D 20 67 65 74 69 6E 74 28 63 field = getint(c
016800: 29 20 7B 70 75 74 72 65 6C 28 29 3B 20 66 69 65 ) {putrel(); fie
016810: 6C 64 20 3E 3E 3D 20 38 3B 7D 0D 0A 20 20 7D 0D ld >>= 8;}.. }.
016820: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 67 65 6E 65 72 61 .../*..** genera
016830: 74 65 20 61 20 72 65 6C 6F 63 61 74 61 62 6C 65 te a relocatable
016840: 20 69 74 65 6D 0D 0A 2A 2F 0D 0A 67 65 6E 72 65 item..*/..genre
016850: 6C 28 29 20 7B 0D 0A 20 20 6C 69 73 74 63 6F 64 l() {.. listcod
016860: 65 28 32 2C 20 22 27 20 22 29 3B 0D 0A 20 20 6C e(2, "' ");.. l
016870: 6F 63 20 2B 3D 20 32 3B 09 09 09 2F 2A 20 62 75 oc += 2;.../* bu
016880: 6D 70 20 6C 6F 63 61 74 69 6F 6E 20 63 6F 75 6E mp location coun
016890: 74 65 72 20 2A 2F 0D 0A 20 20 69 74 65 6D 20 3D ter */.. item =
0168A0: 20 50 52 45 4C 3B 0D 0A 20 20 70 75 74 72 65 6C PREL;.. putrel
0168B0: 28 29 3B 09 09 09 2F 2A 20 77 72 69 74 65 20 32 ();.../* write 2
0168C0: 2D 62 79 74 65 20 72 65 6C 6F 63 61 74 61 62 6C -byte relocatabl
0168D0: 65 20 69 74 65 6D 20 2A 2F 0D 0A 20 20 7D 0D 0A e item */.. }..
0168E0: 0D 0A 2F 2A 0D 0A 2A 2A 20 67 72 69 70 65 20 61 ../*..** gripe a
0168F0: 62 6F 75 74 20 65 72 72 6F 72 73 20 69 6E 20 61 bout errors in a
016900: 20 6C 69 6E 65 0D 0A 2A 2F 0D 0A 67 72 69 70 65 line..*/..gripe
016910: 28 29 20 7B 0D 0A 20 20 69 66 28 6C 65 72 72 29 () {.. if(lerr)
016920: 20 7B 0D 0A 20 20 20 20 69 66 28 21 6C 69 73 74 {.. if(!list
016930: 29 20 6F 75 74 65 72 72 28 6C 69 6E 65 29 3B 0D ) outerr(line);.
016940: 0A 20 20 20 20 69 66 28 6C 65 72 72 20 26 20 20 . if(lerr &
016950: 20 20 31 29 20 6F 75 74 65 72 72 28 22 2D 20 42 1) outerr("- B
016960: 61 63 6B 77 61 72 64 20 4D 6F 76 65 6D 65 6E 74 ackward Movement
016970: 5C 6E 22 29 3B 0D 0A 20 20 20 20 69 66 28 6C 65 \n");.. if(le
016980: 72 72 20 26 20 20 20 20 32 29 20 6F 75 74 65 72 rr & 2) outer
016990: 72 28 22 2D 20 42 61 64 20 4E 75 6D 62 65 72 5C r("- Bad Number\
0169A0: 6E 22 29 3B 0D 0A 20 20 20 20 69 66 28 6C 65 72 n");.. if(ler
0169B0: 72 20 26 20 20 20 20 34 29 20 6F 75 74 65 72 72 r & 4) outerr
0169C0: 28 22 2D 20 42 61 64 20 45 78 70 72 65 73 73 69 ("- Bad Expressi
0169D0: 6F 6E 5C 6E 22 29 3B 0D 0A 20 20 20 20 69 66 28 on\n");.. if(
0169E0: 6C 65 72 72 20 26 20 20 20 20 38 29 20 6F 75 74 lerr & 8) out
0169F0: 65 72 72 28 22 2D 20 42 61 64 20 4C 61 62 65 6C err("- Bad Label
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: 70 20 2B 20 53 54 56 41 4C 55 45 29 3B 0D 0A 20 p + STVALUE);..
016B10: 20 73 74 72 6E 63 70 79 28 73 79 6D 62 6F 6C 2C strncpy(symbol,
016B20: 20 63 70 2C 20 4D 41 58 53 59 4D 20 2B 20 31 29 cp, MAXSYM + 1)
016B30: 3B 0D 0A 20 20 70 75 74 72 65 6C 28 29 3B 0D 0A ;.. putrel();..
016B40: 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6F 75 }..../*..** ou
016B50: 74 70 75 74 20 65 6E 74 20 70 6E 74 20 61 6E 64 tput ent pnt and
016B60: 20 65 78 74 20 72 65 66 20 73 79 6D 62 6F 6C 73 ext ref symbols
016B70: 0D 0A 2A 2F 0D 0A 70 75 74 65 78 73 28 29 20 7B ..*/..putexs() {
016B80: 0D 0A 20 20 69 6E 74 20 69 3B 20 63 68 61 72 20 .. int i; char
016B90: 2A 63 70 3B 0D 0A 20 20 63 63 6E 74 20 3D 20 30 *cp;.. ccnt = 0
016BA0: 3B 09 09 09 09 2F 2A 20 69 6E 69 74 20 66 6F 72 ;..../* init for
016BB0: 20 73 68 6F 77 28 29 20 2A 2F 0D 0A 20 20 73 68 show() */.. sh
016BC0: 65 6C 6C 28 30 2C 20 73 74 6E 20 2D 20 31 29 3B ell(0, stn - 1);
016BD0: 09 09 09 2F 2A 20 73 6F 72 74 20 74 68 65 20 73 .../* sort the s
016BE0: 79 6D 62 6F 6C 73 20 2A 2F 0D 0A 20 20 69 66 28 ymbols */.. if(
016BF0: 6C 69 73 74 20 26 26 20 21 62 65 67 70 61 67 65 list && !begpage
016C00: 28 29 29 20 7B 2B 2B 6C 6C 69 6E 65 3B 20 70 75 ()) {++lline; pu
016C10: 74 73 28 22 22 29 3B 7D 0D 0A 20 20 66 6F 72 28 ts("");}.. for(
016C20: 69 20 3D 20 30 3B 20 69 20 3C 20 73 74 6E 3B 20 i = 0; i < stn;
016C30: 2B 2B 69 29 20 7B 0D 0A 20 20 20 20 70 6F 6C 6C ++i) {.. poll
016C40: 28 59 45 53 29 3B 0D 0A 20 20 20 20 63 70 20 3D (YES);.. cp =
016C50: 20 73 74 70 5B 69 5D 3B 0D 0A 20 20 20 20 69 66 stp[i];.. if
016C60: 28 6C 69 73 74 29 20 73 68 6F 77 28 63 70 29 3B (list) show(cp);
016C70: 0D 0A 20 20 20 20 69 66 28 63 70 5B 53 54 46 4C .. if(cp[STFL
016C80: 41 47 5D 20 26 20 58 52 42 49 54 29 20 70 75 74 AG] & XRBIT) put
016C90: 65 78 28 63 70 2C 20 58 43 48 41 49 4E 29 3B 0D ex(cp, XCHAIN);.
016CA0: 0A 20 20 20 20 69 66 28 63 70 5B 53 54 46 4C 41 . if(cp[STFLA
016CB0: 47 5D 20 26 20 45 50 42 49 54 29 20 70 75 74 65 G] & EPBIT) pute
016CC0: 78 28 63 70 2C 20 45 50 4F 49 4E 54 29 3B 0D 0A x(cp, EPOINT);..
016CD0: 20 20 20 20 7D 0D 0A 20 20 70 75 74 73 28 22 22 }.. puts(""
016CE0: 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A );.. }..../*..*
016CF0: 2A 20 6F 75 74 70 75 74 20 6D 6F 64 75 6C 65 20 * output module
016D00: 2F 2A 0D 0A 2A 2A 20 4D 41 43 33 2E 43 20 2D 2D /*..** MAC3.C --
016D10: 20 53 6D 61 6C 6C 2D 4D 61 63 20 41 73 73 65 6D Small-Mac Assem
016D20: 62 6C 65 72 20 2D 2D 20 50 61 72 74 20 33 3A 20 bler -- Part 3:
016D30: 45 78 70 72 65 73 73 69 6F 6E 20 41 6E 61 6C 79 Expression Analy
016D40: 7A 65 72 0D 0A 2A 2A 0D 0A 2A 2A 20 20 20 20 20 zer..**..**
016D50: 20 20 20 20 20 20 20 20 20 20 20 43 6F 70 79 72 Copyr
016D60: 69 67 68 74 20 31 39 38 35 20 4A 2E 20 45 2E 20 ight 1985 J. E.
016D70: 48 65 6E 64 72 69 78 0D 0A 2A 2A 0D 0A 2A 2F 0D Hendrix..**..*/.
016D80: 0A 23 69 6E 63 6C 75 64 65 20 3C 73 74 64 69 6F .#include <stdio
016D90: 2E 68 3E 0D 0A 23 69 6E 63 6C 75 64 65 20 22 6D .h>..#include "m
016DA0: 61 63 2E 68 22 0D 0A 23 69 6E 63 6C 75 64 65 20 ac.h"..#include
016DB0: 22 72 65 6C 2E 68 22 0D 0A 23 69 6E 63 6C 75 64 "rel.h"..#includ
016DC0: 65 20 22 65 78 74 2E 68 22 0D 0A 0D 0A 23 64 65 e "ext.h"....#de
016DD0: 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 09 2F 2A fine NOCCARGC./*
016DE0: 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 no argument cou
016DF0: 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 0D nt passing */...
016E00: 0A 23 64 65 66 69 6E 65 20 4F 52 20 20 20 20 20 .#define OR
016E10: 31 09 2F 2A 20 7C 20 20 2A 2F 0D 0A 23 64 65 66 1./* | */..#def
016E20: 69 6E 65 20 58 4F 52 20 20 20 20 32 09 2F 2A 20 ine XOR 2./*
016E30: 5E 20 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 41 ^ */..#define A
016E40: 4E 44 20 20 20 20 33 09 2F 2A 20 26 20 20 2A 2F ND 3./* & */
016E50: 0D 0A 23 64 65 66 69 6E 65 20 45 51 20 20 20 20 ..#define EQ
016E60: 20 34 09 2F 2A 20 3D 3D 20 2A 2F 0D 0A 23 64 65 4./* == */..#de
016E70: 66 69 6E 65 20 4E 45 20 20 20 20 20 35 09 2F 2A fine NE 5./*
016E80: 20 21 3D 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 != */..#define
016E90: 4C 45 20 20 20 20 20 36 09 2F 2A 20 3C 3D 20 2A LE 6./* <= *
016EA0: 2F 0D 0A 23 64 65 66 69 6E 65 20 47 45 20 20 20 /..#define GE
016EB0: 20 20 37 09 2F 2A 20 3E 3D 20 2A 2F 0D 0A 23 64 7./* >= */..#d
016EC0: 65 66 69 6E 65 20 4C 54 20 20 20 20 20 38 09 2F efine LT 8./
016ED0: 2A 20 3C 20 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 * < */..#define
016EE0: 20 47 54 20 20 20 20 20 39 09 2F 2A 20 3E 20 20 GT 9./* >
016EF0: 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 52 53 48 20 */..#define RSH
016F00: 6E 61 6D 65 0D 0A 2A 2F 0D 0A 70 75 74 6E 61 6D name..*/..putnam
016F10: 65 28 29 20 7B 0D 0A 20 20 69 6E 74 20 69 2C 20 e() {.. int i,
016F20: 6A 3B 0D 0A 20 20 69 74 65 6D 20 3D 20 50 4E 41 j;.. item = PNA
016F30: 4D 45 3B 0D 0A 20 20 69 66 28 6F 62 6A 66 6E 5B ME;.. if(objfn[
016F40: 31 5D 20 3D 3D 20 27 3A 27 29 20 69 20 3D 20 32 1] == ':') i = 2
016F50: 3B 20 65 6C 73 65 20 69 20 3D 20 30 3B 0D 0A 20 ; else i = 0;..
016F60: 20 6A 20 3D 20 30 3B 0D 0A 20 20 77 68 69 6C 65 j = 0;.. while
016F70: 28 6F 62 6A 66 6E 5B 69 5D 20 26 26 20 6F 62 6A (objfn[i] && obj
016F80: 66 6E 5B 69 5D 20 21 3D 20 27 2E 27 20 26 26 20 fn[i] != '.' &&
016F90: 6A 20 3C 20 4D 41 58 53 59 4D 29 0D 0A 20 20 20 j < MAXSYM)..
016FA0: 20 73 79 6D 62 6F 6C 5B 6A 2B 2B 5D 20 3D 20 6F symbol[j++] = o
016FB0: 62 6A 66 6E 5B 69 2B 2B 5D 3B 0D 0A 20 20 73 79 bjfn[i++];.. sy
016FC0: 6D 62 6F 6C 5B 6A 5D 20 3D 20 4E 55 4C 4C 3B 0D mbol[j] = NULL;.
016FD0: 0A 20 20 70 75 74 72 65 6C 28 29 3B 0D 0A 20 20 . putrel();..
016FE0: 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6F 75 74 70 }..../*..** outp
016FF0: 75 74 20 70 72 6F 67 72 61 6D 20 73 69 7A 65 0D ut program size.
017000: 0A 2A 2F 0D 0A 70 75 74 73 7A 28 29 20 7B 0D 0A .*/..putsz() {..
017010: 20 20 69 74 65 6D 20 3D 20 50 53 49 5A 45 3B 0D item = PSIZE;.
017020: 0A 20 20 74 79 70 65 20 3D 20 50 52 45 4C 3B 0D . type = PREL;.
017030: 0A 20 20 66 69 65 6C 64 20 3D 20 6C 6F 63 3B 0D . field = loc;.
017040: 0A 20 20 70 75 74 72 65 6C 28 29 3B 0D 0A 20 20 . putrel();..
017050: 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 73 68 65 6C }..../*..** shel
017060: 6C 20 73 6F 72 74 20 74 68 65 20 73 79 6D 62 6F l sort the symbo
017070: 6C 73 0D 0A 2A 2F 0D 0A 73 68 65 6C 6C 28 6C 2C ls..*/..shell(l,
017080: 20 75 29 20 69 6E 74 20 6C 2C 20 75 3B 20 7B 0D u) int l, u; {.
017090: 0A 20 20 69 6E 74 20 67 61 70 2C 20 69 2C 20 6A . int gap, i, j
0170A0: 2C 20 6B 2C 20 6A 67 3B 0D 0A 20 20 67 61 70 20 , k, jg;.. gap
0170B0: 3D 20 28 75 20 2D 20 6C 20 2B 20 31 29 20 3E 3E = (u - l + 1) >>
0170C0: 20 31 3B 0D 0A 20 20 77 68 69 6C 65 28 67 61 70 1;.. while(gap
0170D0: 20 3E 20 30 29 20 7B 0D 0A 20 20 20 20 69 20 3D > 0) {.. i =
0170E0: 20 67 61 70 20 2B 20 6C 3B 0D 0A 20 20 20 20 77 gap + l;.. w
0170F0: 68 69 6C 65 28 69 20 3C 3D 20 75 29 20 7B 0D 0A hile(i <= u) {..
017100: 20 20 31 30 09 2F 2A 20 3E 3E 20 2A 2F 0D 0A 23 10./* >> */..#
017110: 64 65 66 69 6E 65 20 4C 53 48 20 20 20 31 31 09 define LSH 11.
017120: 2F 2A 20 3C 3C 20 2A 2F 0D 0A 23 64 65 66 69 6E /* << */..#defin
017130: 65 20 50 4C 55 53 20 20 31 32 09 2F 2A 20 2B 20 e PLUS 12./* +
017140: 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4D 49 4E */..#define MIN
017150: 55 53 20 31 33 09 2F 2A 20 2D 20 20 2A 2F 0D 0A US 13./* - */..
017160: 23 64 65 66 69 6E 65 20 4D 55 4C 54 20 20 31 34 #define MULT 14
017170: 09 2F 2A 20 2A 20 20 2A 2F 0D 0A 23 64 65 66 69 ./* * */..#defi
017180: 6E 65 20 44 49 56 20 20 20 31 35 09 2F 2A 20 2F ne DIV 15./* /
017190: 20 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4D 4F */..#define MO
0171A0: 44 20 20 20 31 36 09 2F 2A 20 25 20 20 2A 2F 0D D 16./* % */.
0171B0: 0A 23 64 65 66 69 6E 65 20 43 50 4C 20 20 20 31 .#define CPL 1
0171C0: 37 09 2F 2A 20 7E 20 20 2A 2F 0D 0A 23 64 65 66 7./* ~ */..#def
0171D0: 69 6E 65 20 4E 4F 54 20 20 20 31 38 09 2F 2A 20 ine NOT 18./*
0171E0: 21 20 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4C ! */..#define L
0171F0: 50 4E 20 20 20 31 39 09 2F 2A 20 28 20 20 2A 2F PN 19./* ( */
017200: 0D 0A 23 64 65 66 69 6E 65 20 52 50 4E 20 20 20 ..#define RPN
017210: 32 30 09 2F 2A 20 29 20 20 2A 2F 0D 0A 23 64 65 20./* ) */..#de
017220: 66 69 6E 65 20 4C 4F 43 20 20 20 32 31 09 2F 2A fine LOC 21./*
017230: 20 24 20 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 $ */..#define
017240: 53 59 4D 20 20 20 32 32 09 2F 2A 20 73 79 6D 62 SYM 22./* symb
017250: 6F 6C 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4E ol */..#define N
017260: 55 4D 20 20 20 32 33 09 2F 2A 20 6E 75 6D 62 65 UM 23./* numbe
017270: 72 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 45 4F r */..#define EO
017280: 45 20 20 20 32 34 09 2F 2A 20 65 6E 64 20 6F 66 E 24./* end of
017290: 20 65 78 70 72 20 2A 2F 0D 0A 0D 0A 69 6E 74 0D expr */....int.
0172A0: 0A 20 20 6E 75 6D 62 65 72 2C 09 09 09 2F 2A 20 . number,.../*
0172B0: 76 61 6C 75 65 20 6F 66 20 6E 75 6D 65 72 69 63 value of numeric
0172C0: 20 74 6F 6B 65 6E 20 2A 2F 0D 0A 20 20 69 6C 6F token */.. ilo
0172D0: 63 2C 09 09 09 09 2F 2A 20 69 6E 73 74 72 75 63 c,..../* instruc
0172E0: 74 69 6F 6E 20 6C 6F 63 61 74 69 6F 6E 20 2A 2F tion location */
0172F0: 0D 0A 20 20 63 74 3B 09 09 09 09 2F 2A 20 63 75 .. ct;..../* cu
017300: 20 20 20 20 20 20 6A 20 3D 20 69 2B 2B 20 2D 20 j = i++ -
017310: 67 61 70 3B 0D 0A 20 20 20 20 20 20 77 68 69 6C gap;.. whil
017320: 65 28 6A 20 3E 3D 20 6C 29 20 7B 0D 0A 20 20 20 e(j >= l) {..
017330: 20 20 20 20 20 6A 67 20 3D 20 6A 20 2B 20 67 61 jg = j + ga
017340: 70 3B 0D 0A 20 20 20 20 20 20 20 20 69 66 28 73 p;.. if(s
017350: 74 72 63 6D 70 28 73 74 70 5B 6A 5D 2C 20 73 74 trcmp(stp[j], st
017360: 70 5B 6A 67 5D 29 20 3C 3D 20 30 29 20 62 72 65 p[jg]) <= 0) bre
017370: 61 6B 3B 0D 0A 20 20 20 20 20 20 20 20 6B 20 3D ak;.. k =
017380: 20 73 74 70 5B 6A 67 5D 3B 20 73 74 70 5B 6A 67 stp[jg]; stp[jg
017390: 5D 20 3D 20 73 74 70 5B 6A 5D 3B 20 73 74 70 5B ] = stp[j]; stp[
0173A0: 6A 5D 20 3D 20 6B 3B 0D 0A 20 20 20 20 20 20 20 j] = k;..
0173B0: 20 6A 20 2D 3D 20 67 61 70 3B 0D 0A 20 20 20 20 j -= gap;..
0173C0: 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 7D 0D 0A }.. }..
0173D0: 20 20 20 20 67 61 70 20 3E 3E 3D 20 31 3B 0D 0A gap >>= 1;..
0173E0: 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A }.. }..../*
0173F0: 0D 0A 2A 2A 20 73 68 6F 77 20 61 20 73 79 6D 62 ..** show a symb
017400: 6F 6C 0D 0A 2A 2F 0D 0A 73 68 6F 77 28 63 70 29 ol..*/..show(cp)
017410: 20 63 68 61 72 20 2A 63 70 3B 20 7B 0D 0A 20 20 char *cp; {..
017420: 63 68 61 72 20 73 74 72 5B 35 5D 3B 0D 0A 20 20 char str[5];..
017430: 62 65 67 70 61 67 65 28 29 3B 0D 0A 20 20 69 74 begpage();.. it
017440: 6F 78 28 67 65 74 69 6E 74 28 63 70 20 2B 20 53 ox(getint(cp + S
017450: 54 56 41 4C 55 45 29 2C 20 73 74 72 2C 20 35 29 TVALUE), str, 5)
017460: 3B 20 66 70 75 74 73 28 73 74 72 2C 20 73 74 64 ; fputs(str, std
017470: 6F 75 74 29 3B 0D 0A 20 20 69 66 28 28 63 70 5B out);.. if((cp[
017480: 53 54 46 4C 41 47 5D 20 26 20 52 45 4C 42 49 54 STFLAG] & RELBIT
017490: 53 29 20 3D 3D 20 50 52 45 4C 29 20 66 70 75 74 S) == PREL) fput
0174A0: 73 28 22 27 20 22 2C 20 73 74 64 6F 75 74 29 3B s("' ", stdout);
0174B0: 0D 0A 20 20 65 6C 73 65 20 66 70 75 74 73 28 22 .. else fputs("
0174C0: 20 20 22 2C 20 73 74 64 6F 75 74 29 3B 0D 0A 20 ", stdout);..
0174D0: 20 66 70 75 74 73 28 63 70 2C 20 73 74 64 6F 75 fputs(cp, stdou
0174E0: 74 29 3B 0D 0A 20 20 63 63 6E 74 20 2B 3D 20 36 t);.. ccnt += 6
0174F0: 20 2B 20 73 74 72 6C 65 6E 28 63 70 29 3B 0D 0A + strlen(cp);..
017500: 72 72 65 6E 74 20 74 6F 6B 65 6E 20 2A 2F 0D 0A rrent token */..
017510: 0D 0A 69 6E 74 09 09 09 09 2F 2A 20 6F 70 65 72 ..int..../* oper
017520: 61 74 6F 72 73 20 62 79 20 70 72 65 63 65 64 65 ators by precede
017530: 6E 63 65 20 6C 65 76 65 6C 20 2A 2F 0D 0A 20 20 nce level */..
017540: 6C 31 6F 70 73 5B 5D 20 3D 20 7B 4F 52 2C 20 4E l1ops[] = {OR, N
017550: 55 4C 4C 7D 2C 0D 0A 20 20 6C 32 6F 70 73 5B 5D ULL},.. l2ops[]
017560: 20 3D 20 7B 58 4F 52 2C 20 4E 55 4C 4C 7D 2C 0D = {XOR, NULL},.
017570: 0A 20 20 6C 33 6F 70 73 5B 5D 20 3D 20 7B 41 4E . l3ops[] = {AN
017580: 44 2C 20 4E 55 4C 4C 7D 2C 0D 0A 20 20 6C 34 6F D, NULL},.. l4o
017590: 70 73 5B 5D 20 3D 20 7B 45 51 2C 20 4E 45 2C 20 ps[] = {EQ, NE,
0175A0: 4E 55 4C 4C 7D 2C 0D 0A 20 20 6C 35 6F 70 73 5B NULL},.. l5ops[
0175B0: 5D 20 3D 20 7B 4C 45 2C 20 47 45 2C 20 4C 54 2C ] = {LE, GE, LT,
0175C0: 20 47 54 2C 20 4E 55 4C 4C 7D 2C 0D 0A 20 20 6C GT, NULL},.. l
0175D0: 36 6F 70 73 5B 5D 20 3D 20 7B 4C 53 48 2C 20 52 6ops[] = {LSH, R
0175E0: 53 48 2C 20 4E 55 4C 4C 7D 2C 0D 0A 20 20 6C 37 SH, NULL},.. l7
0175F0: 6F 70 73 5B 5D 20 3D 20 7B 50 4C 55 53 2C 20 4D ops[] = {PLUS, M
017600: 49 4E 55 53 2C 20 4E 55 4C 4C 7D 2C 0D 0A 20 20 INUS, NULL},..
017610: 6C 38 6F 70 73 5B 5D 20 3D 20 7B 4D 55 4C 54 2C l8ops[] = {MULT,
017620: 20 44 49 56 2C 20 4D 4F 44 2C 20 4E 55 4C 4C 7D DIV, MOD, NULL}
017630: 3B 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 65 76 61 6C ;..../*..** eval
017640: 75 61 74 65 20 74 68 65 20 6E 65 78 74 20 65 78 uate the next ex
017650: 70 72 65 73 73 69 6F 6E 20 61 74 20 65 70 0D 0A pression at ep..
017660: 2A 2A 20 63 61 6C 6C 65 72 20 6D 75 73 74 20 73 ** caller must s
017670: 65 74 20 65 70 0D 0A 2A 2F 0D 0A 65 78 70 72 28 et ep..*/..expr(
017680: 76 61 6C 75 65 2C 20 74 79 70 65 29 20 69 6E 74 value, type) int
017690: 20 2A 76 61 6C 75 65 2C 20 2A 74 79 70 65 3B 20 *value, *type;
0176A0: 7B 0D 0A 20 20 63 74 20 3D 20 4E 55 4C 4C 3B 09 {.. ct = NULL;.
0176B0: 09 09 09 2F 2A 20 6E 6F 20 63 75 72 72 65 6E 74 .../* no current
0176C0: 20 74 6F 6B 65 6E 20 2A 2F 0D 0A 20 20 69 66 28 token */.. if(
0176D0: 74 6F 6B 65 6E 28 45 4F 45 29 29 20 7B 0D 0A 20 token(EOE)) {..
0176E0: 20 20 20 2A 76 61 6C 75 65 20 3D 20 30 3B 20 2A *value = 0; *
0176F0: 74 79 70 65 20 3D 20 41 42 53 3B 09 09 2F 2A 20 type = ABS;../*
017700: 20 20 69 66 28 63 70 5B 53 54 46 4C 41 47 5D 20 if(cp[STFLAG]
017710: 26 20 4C 41 42 42 49 54 29 20 7B 70 75 74 63 68 & LABBIT) {putch
017720: 61 72 28 27 3A 27 29 3B 20 2B 2B 63 63 6E 74 3B ar(':'); ++ccnt;
017730: 7D 0D 0A 20 20 69 66 28 63 70 5B 53 54 46 4C 41 }.. if(cp[STFLA
017740: 47 5D 20 26 20 45 50 42 49 54 29 20 20 7B 70 75 G] & EPBIT) {pu
017750: 74 63 68 61 72 28 27 3A 27 29 3B 20 2B 2B 63 63 tchar(':'); ++cc
017760: 6E 74 3B 7D 0D 0A 20 20 69 66 28 63 70 5B 53 54 nt;}.. if(cp[ST
017770: 46 4C 41 47 5D 20 26 20 58 52 42 49 54 29 20 20 FLAG] & XRBIT)
017780: 7B 66 70 75 74 73 28 22 23 23 22 2C 20 73 74 64 {fputs("##", std
017790: 6F 75 74 29 3B 20 63 63 6E 74 20 2B 3D 20 32 3B out); ccnt += 2;
0177A0: 7D 0D 0A 20 20 69 66 28 63 63 6E 74 20 3C 20 36 }.. if(ccnt < 6
0177B0: 30 29 0D 0A 20 20 20 20 77 68 69 6C 65 28 63 63 0).. while(cc
0177C0: 6E 74 20 25 20 32 30 29 20 7B 70 75 74 63 68 61 nt % 20) {putcha
0177D0: 72 28 27 20 27 29 3B 20 2B 2B 63 63 6E 74 3B 7D r(' '); ++ccnt;}
0177E0: 0D 0A 20 20 65 6C 73 65 20 7B 70 75 74 73 28 22 .. else {puts("
0177F0: 22 29 3B 20 2B 2B 6C 6C 69 6E 65 3B 20 63 63 6E "); ++lline; ccn
017800: 74 20 3D 20 30 3B 7D 0D 0A 20 20 7D 0D 0A 0D 0A t = 0;}.. }....
017810: 2F 2A 0D 0A 2A 2A 20 66 69 6E 64 20 73 74 73 79 /*..** find stsy
017820: 6D 20 69 6E 20 73 79 6D 62 6F 6C 20 74 61 62 6C m in symbol tabl
017830: 65 0D 0A 2A 2A 20 6C 65 61 76 65 20 73 74 70 74 e..** leave stpt
017840: 72 20 70 6F 69 6E 74 69 6E 67 20 74 6F 20 64 65 r pointing to de
017850: 73 69 72 65 64 20 6F 72 20 6E 75 6C 6C 20 65 6E sired or null en
017860: 74 72 79 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 74 try..** return t
017870: 72 75 65 20 69 66 20 66 6F 75 6E 64 2C 20 65 6C rue if found, el
017880: 73 65 20 66 61 6C 73 65 0D 0A 2A 2F 0D 0A 73 74 se false..*/..st
017890: 66 69 6E 64 28 29 20 7B 0D 0A 20 20 63 68 61 72 find() {.. char
0178A0: 20 2A 73 74 61 72 74 3B 0D 0A 20 20 73 74 70 74 *start;.. stpt
0178B0: 72 20 3D 20 73 74 61 72 74 20 3D 20 73 74 20 2B r = start = st +
0178C0: 20 68 61 73 68 28 73 74 73 79 6D 2C 20 73 74 6D hash(stsym, stm
0178D0: 61 78 29 20 2A 20 53 54 45 4E 54 52 59 3B 0D 0A ax) * STENTRY;..
0178E0: 20 20 77 68 69 6C 65 28 2A 73 74 70 74 72 29 20 while(*stptr)
0178F0: 7B 0D 0A 20 20 20 20 69 66 28 73 74 72 63 6D 70 {.. if(strcmp
017900: 6E 75 6C 6C 20 65 78 70 72 65 73 73 69 6F 6E 20 null expression
017910: 2A 2F 0D 0A 20 20 20 20 72 65 74 75 72 6E 3B 0D */.. return;.
017920: 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 21 6C 65 . }.. if(!le
017930: 76 65 6C 31 28 76 61 6C 75 65 2C 20 74 79 70 65 vel1(value, type
017940: 29 20 7C 7C 20 63 74 20 21 3D 20 45 4F 45 29 20 ) || ct != EOE)
017950: 65 78 70 65 72 72 28 29 3B 0D 0A 20 20 7D 0D 0A experr();.. }..
017960: 0D 0A 6C 65 76 65 6C 31 28 76 2C 20 74 29 20 69 ..level1(v, t) i
017970: 6E 74 20 2A 76 2C 20 2A 74 3B 20 7B 72 65 74 75 nt *v, *t; {retu
017980: 72 6E 20 28 64 6F 77 6E 28 6C 31 6F 70 73 2C 20 rn (down(l1ops,
017990: 6C 65 76 65 6C 32 2C 20 76 2C 20 74 29 29 3B 7D level2, v, t));}
0179A0: 0D 0A 6C 65 76 65 6C 32 28 76 2C 20 74 29 20 69 ..level2(v, t) i
0179B0: 6E 74 20 2A 76 2C 20 2A 74 3B 20 7B 72 65 74 75 nt *v, *t; {retu
0179C0: 72 6E 20 28 64 6F 77 6E 28 6C 32 6F 70 73 2C 20 rn (down(l2ops,
0179D0: 6C 65 76 65 6C 33 2C 20 76 2C 20 74 29 29 3B 7D level3, v, t));}
0179E0: 0D 0A 6C 65 76 65 6C 33 28 76 2C 20 74 29 20 69 ..level3(v, t) i
0179F0: 6E 74 20 2A 76 2C 20 2A 74 3B 20 7B 72 65 74 75 nt *v, *t; {retu
017A00: 72 6E 20 28 64 6F 77 6E 28 6C 33 6F 70 73 2C 20 rn (down(l3ops,
017A10: 6C 65 76 65 6C 34 2C 20 76 2C 20 74 29 29 3B 7D level4, v, t));}
017A20: 0D 0A 6C 65 76 65 6C 34 28 76 2C 20 74 29 20 69 ..level4(v, t) i
017A30: 6E 74 20 2A 76 2C 20 2A 74 3B 20 7B 72 65 74 75 nt *v, *t; {retu
017A40: 72 6E 20 28 64 6F 77 6E 28 6C 34 6F 70 73 2C 20 rn (down(l4ops,
017A50: 6C 65 76 65 6C 35 2C 20 76 2C 20 74 29 29 3B 7D level5, v, t));}
017A60: 0D 0A 6C 65 76 65 6C 35 28 76 2C 20 74 29 20 69 ..level5(v, t) i
017A70: 6E 74 20 2A 76 2C 20 2A 74 3B 20 7B 72 65 74 75 nt *v, *t; {retu
017A80: 72 6E 20 28 64 6F 77 6E 28 6C 35 6F 70 73 2C 20 rn (down(l5ops,
017A90: 6C 65 76 65 6C 36 2C 20 76 2C 20 74 29 29 3B 7D level6, v, t));}
017AA0: 0D 0A 6C 65 76 65 6C 36 28 76 2C 20 74 29 20 69 ..level6(v, t) i
017AB0: 6E 74 20 2A 76 2C 20 2A 74 3B 20 7B 72 65 74 75 nt *v, *t; {retu
017AC0: 72 6E 20 28 64 6F 77 6E 28 6C 36 6F 70 73 2C 20 rn (down(l6ops,
017AD0: 6C 65 76 65 6C 37 2C 20 76 2C 20 74 29 29 3B 7D level7, v, t));}
017AE0: 0D 0A 6C 65 76 65 6C 37 28 76 2C 20 74 29 20 69 ..level7(v, t) i
017AF0: 6E 74 20 2A 76 2C 20 2A 74 3B 20 7B 72 65 74 75 nt *v, *t; {retu
017B00: 28 73 74 73 79 6D 2C 20 73 74 70 74 72 29 20 3D (stsym, stptr) =
017B10: 3D 20 30 29 20 72 65 74 75 72 6E 20 28 59 45 53 = 0) return (YES
017B20: 29 3B 0D 0A 20 20 20 20 69 66 28 28 73 74 70 74 );.. if((stpt
017B30: 72 20 2B 3D 20 53 54 45 4E 54 52 59 29 20 3E 3D r += STENTRY) >=
017B40: 20 73 74 65 6E 64 29 20 73 74 70 74 72 20 3D 20 stend) stptr =
017B50: 73 74 3B 0D 0A 20 20 20 20 69 66 28 73 74 70 74 st;.. if(stpt
017B60: 72 20 3D 3D 20 73 74 61 72 74 29 20 62 72 65 61 r == start) brea
017B70: 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 k;.. }.. ret
017B80: 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 7D 0D 0A urn (NO);.. }..
017B90: 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
017BA0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
017BB0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
017BC0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
017BD0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
017BE0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
017BF0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
017C00: 74 20 3D 20 30 3B 7D 0D 0A 20 20 7D 0D 0A 0D 0A t = 0;}.. }....
017C10: 2F 2A 0D 0A 2A 2A 20 66 69 6E 64 20 73 74 73 79 /*..** find stsy
017C20: 6D 20 69 6E 20 73 79 6D 62 6F 6C 20 74 61 62 6C m in symbol tabl
017C30: 65 0D 0A 2A 2A 20 6C 65 61 76 65 20 73 74 70 74 e..** leave stpt
017C40: 72 20 70 6F 69 6E 74 69 6E 67 20 74 6F 20 64 65 r pointing to de
017C50: 73 69 72 65 64 20 6F 72 20 6E 75 6C 6C 20 65 6E sired or null en
017C60: 74 72 79 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 74 try..** return t
017C70: 72 75 65 20 69 66 20 66 6F 75 6E 64 2C 20 65 6C rue if found, el
017C80: 73 65 20 66 61 6C 73 65 0D 0A 2A 2F 0D 0A 73 74 se false..*/..st
017C90: 66 69 6E 64 28 29 20 7B 0D 0A 20 20 63 68 61 72 find() {.. char
017CA0: 20 2A 73 74 61 72 74 3B 0D 0A 20 20 73 74 70 74 *start;.. stpt
017CB0: 72 20 3D 20 73 74 61 72 74 20 3D 20 73 74 20 2B r = start = st +
017CC0: 20 68 61 73 68 28 73 74 73 79 6D 2C 20 73 74 6D hash(stsym, stm
017CD0: 61 78 29 20 2A 20 53 54 45 4E 54 52 59 3B 0D 0A ax) * STENTRY;..
017CE0: 20 20 77 68 69 6C 65 28 2A 73 74 70 74 72 29 20 while(*stptr)
017CF0: 7B 0D 0A 20 20 20 20 69 66 28 73 74 72 63 6D 70 {.. if(strcmp
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: 72 6E 20 28 64 6F 77 6E 28 6C 37 6F 70 73 2C 20 rn (down(l7ops,
017E10: 6C 65 76 65 6C 38 2C 20 76 2C 20 74 29 29 3B 7D level8, v, t));}
017E20: 0D 0A 6C 65 76 65 6C 38 28 76 2C 20 74 29 20 69 ..level8(v, t) i
017E30: 6E 74 20 2A 76 2C 20 2A 74 3B 20 7B 72 65 74 75 nt *v, *t; {retu
017E40: 72 6E 20 28 64 6F 77 6E 28 6C 38 6F 70 73 2C 20 rn (down(l8ops,
017E50: 20 75 6E 61 72 79 2C 20 76 2C 20 74 29 29 3B 7D unary, v, t));}
017E60: 0D 0A 0D 0A 75 6E 61 72 79 28 76 2C 20 74 29 20 ....unary(v, t)
017E70: 69 6E 74 20 2A 76 2C 20 2A 74 3B 20 20 7B 0D 0A int *v, *t; {..
017E80: 20 20 69 66 28 74 6F 6B 65 6E 28 43 50 4C 29 29 if(token(CPL))
017E90: 20 7B 09 09 09 2F 2A 20 7E 20 2A 2F 0D 0A 20 20 {.../* ~ */..
017EA0: 20 20 69 66 28 21 75 6E 61 72 79 28 76 2C 20 74 if(!unary(v, t
017EB0: 29 29 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D )) return (NO);.
017EC0: 0A 20 20 20 20 2A 76 20 3D 20 7E 2A 76 3B 0D 0A . *v = ~*v;..
017ED0: 20 20 20 20 67 6F 74 6F 20 63 68 65 63 6B 3B 0D goto check;.
017EE0: 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20 69 . }.. else i
017EF0: 66 28 74 6F 6B 65 6E 28 4E 4F 54 29 29 20 7B 09 f(token(NOT)) {.
017F00: 09 09 2F 2A 20 21 20 2A 2F 0D 0A 20 20 20 20 69 ../* ! */.. i
017F10: 66 28 21 75 6E 61 72 79 28 76 20 2C 74 29 29 20 f(!unary(v ,t))
017F20: 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 return (NO);..
017F30: 20 20 2A 76 20 3D 20 21 2A 76 3B 0D 0A 20 20 20 *v = !*v;..
017F40: 20 67 6F 74 6F 20 63 68 65 63 6B 3B 0D 0A 20 20 goto check;..
017F50: 20 20 7D 0D 0A 20 20 65 6C 73 65 20 69 66 28 74 }.. else if(t
017F60: 6F 6B 65 6E 28 4D 49 4E 55 53 29 29 20 7B 09 09 oken(MINUS)) {..
017F70: 2F 2A 20 2D 20 2A 2F 0D 0A 20 20 20 20 69 66 28 /* - */.. if(
017F80: 21 75 6E 61 72 79 28 76 2C 20 74 29 29 20 72 65 !unary(v, t)) re
017F90: 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 20 20 turn (NO);..
017FA0: 2A 76 20 3D 20 2D 2A 76 3B 0D 0A 20 20 20 20 63 *v = -*v;.. c
017FB0: 68 65 63 6B 3A 0D 0A 20 20 20 20 69 66 28 2A 74 heck:.. if(*t
017FC0: 20 26 20 52 45 4C 42 49 54 53 29 20 72 65 6C 65 & RELBITS) rele
017FD0: 72 72 28 29 3B 09 09 2F 2A 20 63 61 6E 27 74 20 rr();../* can't
017FE0: 62 65 20 72 65 6C 6F 63 61 74 61 62 6C 65 20 2A be relocatable *
017FF0: 2F 0D 0A 20 20 20 20 2A 74 20 26 3D 20 7E 52 45 /.. *t &= ~RE
018000: 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C }.. }.. el
018010: 73 65 20 7B 09 09 09 09 09 2F 2A 20 72 65 6C 20 se {...../* rel
018020: 3C 6F 70 65 72 3E 20 61 62 73 20 2A 2F 0D 0A 20 <oper> abs */..
018030: 20 20 20 69 66 28 74 72 20 3D 3D 20 41 42 53 29 if(tr == ABS)
018040: 20 7B 0D 0A 20 20 20 20 20 20 73 77 69 74 63 68 {.. switch
018050: 28 6F 70 65 72 29 20 7B 0D 0A 20 20 20 20 20 20 (oper) {..
018060: 20 20 63 61 73 65 20 50 4C 55 53 3A 20 63 61 73 case PLUS: cas
018070: 65 20 4D 49 4E 55 53 3A 0D 0A 20 20 20 20 20 20 e MINUS:..
018080: 20 20 2A 74 20 7C 3D 20 50 52 45 4C 3B 0D 0A 20 *t |= PREL;..
018090: 20 20 20 20 20 20 20 72 65 74 75 72 6E 20 28 6F return (o
0180A0: 6B 29 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A k);.. }..
0180B0: 20 20 20 20 20 20 72 65 74 75 72 6E 20 28 4E 4F return (NO
0180C0: 29 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 );.. }..
0180D0: 20 65 6C 73 65 20 7B 09 09 09 09 09 2F 2A 20 72 else {...../* r
0180E0: 65 6C 20 3C 6F 70 65 72 3E 20 72 65 6C 20 2A 2F el <oper> rel */
0180F0: 0D 0A 20 20 20 20 20 20 73 77 69 74 63 68 28 6F .. switch(o
018100: 70 65 72 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 per) {..
018110: 63 61 73 65 20 4D 49 4E 55 53 3A 0D 0A 20 20 20 case MINUS:..
018120: 20 20 20 20 20 63 61 73 65 20 45 51 3A 20 63 61 case EQ: ca
018130: 73 65 20 4C 54 3A 20 63 61 73 65 20 4C 45 3A 0D se LT: case LE:.
018140: 0A 20 20 20 20 20 20 20 20 63 61 73 65 20 4E 45 . case NE
018150: 3A 20 63 61 73 65 20 47 54 3A 20 63 61 73 65 20 : case GT: case
018160: 47 45 3A 0D 0A 20 20 20 20 20 20 20 20 72 65 74 GE:.. ret
018170: 75 72 6E 20 28 6F 6B 29 3B 0D 0A 20 20 20 20 20 urn (ok);..
018180: 20 20 20 7D 0D 0A 20 20 20 20 20 20 72 65 74 75 }.. retu
018190: 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 20 20 20 20 rn (NO);..
0181A0: 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D }.. }.. }...
0181B0: 0A 2F 2A 0D 0A 2A 2A 20 61 70 70 6C 79 20 61 20 ./*..** apply a
0181C0: 62 69 6E 61 72 79 20 6F 70 65 72 61 74 6F 72 0D binary operator.
0181D0: 0A 2A 2F 0D 0A 62 69 6E 61 72 79 28 6C 65 66 74 .*/..binary(left
0181E0: 2C 20 6F 70 65 72 2C 20 72 69 67 68 74 29 20 69 , oper, right) i
0181F0: 6E 74 20 6C 65 66 74 2C 20 6F 70 65 72 2C 20 72 nt left, oper, r
018200: 4C 42 49 54 53 3B 09 09 09 2F 2A 20 66 6F 72 63 LBITS;.../* forc
018210: 65 20 41 42 53 20 2A 2F 0D 0A 20 20 20 20 72 65 e ABS */.. re
018220: 74 75 72 6E 20 28 59 45 53 29 3B 09 09 09 2F 2A turn (YES);.../*
018230: 20 6C 69 65 20 61 62 6F 75 74 20 69 74 20 2A 2F lie about it */
018240: 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20 .. }.. else
018250: 72 65 74 75 72 6E 20 28 70 72 69 6D 61 72 79 28 return (primary(
018260: 76 2C 20 74 29 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A v, t));.. }....
018270: 70 72 69 6D 61 72 79 28 76 2C 20 74 29 20 69 6E primary(v, t) in
018280: 74 20 2A 76 2C 20 2A 74 3B 20 7B 0D 0A 20 20 69 t *v, *t; {.. i
018290: 6E 74 20 6F 6B 3B 0D 0A 20 20 69 66 28 74 6F 6B nt ok;.. if(tok
0182A0: 65 6E 28 4C 50 4E 29 29 20 7B 09 09 09 09 2F 2A en(LPN)) {..../*
0182B0: 20 28 20 2A 2F 0D 0A 20 20 20 20 6F 6B 20 3D 20 ( */.. ok =
0182C0: 6C 65 76 65 6C 31 28 76 2C 20 74 29 3B 0D 0A 20 level1(v, t);..
0182D0: 20 20 20 69 66 28 74 6F 6B 65 6E 28 52 50 4E 29 if(token(RPN)
0182E0: 29 20 72 65 74 75 72 6E 28 6F 6B 29 3B 0D 0A 20 ) return(ok);..
0182F0: 20 20 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D return (NO);.
018300: 0A 20 20 20 20 7D 0D 0A 20 20 2A 74 20 3D 20 41 . }.. *t = A
018310: 42 53 3B 20 2A 76 20 3D 20 30 3B 09 09 09 09 2F BS; *v = 0;..../
018320: 2A 20 64 65 66 61 75 6C 74 73 20 2A 2F 0D 0A 20 * defaults */..
018330: 20 69 66 28 74 6F 6B 65 6E 28 4E 55 4D 29 29 20 if(token(NUM))
018340: 7B 09 09 09 09 2F 2A 20 6E 75 6D 62 65 72 20 2A {..../* number *
018350: 2F 0D 0A 20 20 20 20 2A 76 20 3D 20 6E 75 6D 62 /.. *v = numb
018360: 65 72 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E 20 er;.. return
018370: 28 59 45 53 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 (YES);.. }..
018380: 20 65 6C 73 65 20 69 66 28 74 6F 6B 65 6E 28 4C else if(token(L
018390: 4F 43 29 29 20 7B 09 09 09 09 2F 2A 20 24 20 2A OC)) {..../* $ *
0183A0: 2F 0D 0A 20 20 20 20 2A 76 20 3D 20 69 6C 6F 63 /.. *v = iloc
0183B0: 3B 0D 0A 20 20 20 20 2A 74 20 3D 20 50 52 45 4C ;.. *t = PREL
0183C0: 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E 20 28 59 ;.. return (Y
0183D0: 45 53 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 ES);.. }.. e
0183E0: 6C 73 65 20 7B 0D 0A 20 20 20 20 69 66 28 74 6F lse {.. if(to
0183F0: 6B 65 6E 28 53 59 4D 29 29 20 7B 09 09 09 09 2F ken(SYM)) {..../
018400: 69 67 68 74 3B 20 7B 0D 0A 20 20 73 77 69 74 63 ight; {.. switc
018410: 68 28 6F 70 65 72 29 20 7B 0D 0A 20 20 20 20 63 h(oper) {.. c
018420: 61 73 65 20 4F 52 3A 20 20 20 20 72 65 74 75 72 ase OR: retur
018430: 6E 20 28 6C 65 66 74 20 20 7C 20 20 72 69 67 68 n (left | righ
018440: 74 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 58 4F t);.. case XO
018450: 52 3A 20 20 20 72 65 74 75 72 6E 20 28 6C 65 66 R: return (lef
018460: 74 20 20 5E 20 20 72 69 67 68 74 29 3B 0D 0A 20 t ^ right);..
018470: 20 20 20 63 61 73 65 20 41 4E 44 3A 20 20 20 72 case AND: r
018480: 65 74 75 72 6E 20 28 6C 65 66 74 20 20 26 20 20 eturn (left &
018490: 72 69 67 68 74 29 3B 0D 0A 20 20 20 20 63 61 73 right);.. cas
0184A0: 65 20 45 51 3A 20 20 20 20 72 65 74 75 72 6E 20 e EQ: return
0184B0: 28 6C 65 66 74 20 20 3D 3D 20 72 69 67 68 74 29 (left == right)
0184C0: 3B 0D 0A 20 20 20 20 63 61 73 65 20 4E 45 3A 20 ;.. case NE:
0184D0: 20 20 20 72 65 74 75 72 6E 20 28 6C 65 66 74 20 return (left
0184E0: 20 21 3D 20 72 69 67 68 74 29 3B 0D 0A 20 20 20 != right);..
0184F0: 20 63 61 73 65 20 4C 45 3A 20 20 20 20 72 65 74 case LE: ret
018500: 75 72 6E 20 28 6C 65 66 74 20 20 3C 3D 20 72 69 urn (left <= ri
018510: 67 68 74 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 ght);.. case
018520: 47 45 3A 20 20 20 20 72 65 74 75 72 6E 20 28 6C GE: return (l
018530: 65 66 74 20 20 3E 3D 20 72 69 67 68 74 29 3B 0D eft >= right);.
018540: 0A 20 20 20 20 63 61 73 65 20 4C 54 3A 20 20 20 . case LT:
018550: 20 72 65 74 75 72 6E 20 28 6C 65 66 74 20 20 3C return (left <
018560: 20 20 72 69 67 68 74 29 3B 0D 0A 20 20 20 20 63 right);.. c
018570: 61 73 65 20 47 54 3A 20 20 20 20 72 65 74 75 72 ase GT: retur
018580: 6E 20 28 6C 65 66 74 20 20 3E 20 20 72 69 67 68 n (left > righ
018590: 74 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 52 53 t);.. case RS
0185A0: 48 3A 20 20 20 72 65 74 75 72 6E 20 28 6C 65 66 H: return (lef
0185B0: 74 20 20 3E 3E 20 72 69 67 68 74 29 3B 0D 0A 20 t >> right);..
0185C0: 20 20 20 63 61 73 65 20 4C 53 48 3A 20 20 20 72 case LSH: r
0185D0: 65 74 75 72 6E 20 28 6C 65 66 74 20 20 3C 3C 20 eturn (left <<
0185E0: 72 69 67 68 74 29 3B 0D 0A 20 20 20 20 63 61 73 right);.. cas
0185F0: 65 20 50 4C 55 53 3A 20 20 72 65 74 75 72 6E 20 e PLUS: return
018600: 2A 20 73 79 6D 62 6F 6C 20 2A 2F 0D 0A 20 20 20 * symbol */..
018610: 20 20 20 69 66 28 73 74 66 69 6E 64 28 29 29 20 if(stfind())
018620: 7B 0D 0A 20 20 20 20 20 20 20 20 2A 74 20 3D 20 {.. *t =
018630: 73 74 70 74 72 5B 53 54 46 4C 41 47 5D 3B 0D 0A stptr[STFLAG];..
018640: 20 20 20 20 20 20 20 20 69 66 28 21 28 73 74 70 if(!(stp
018650: 74 72 5B 53 54 46 4C 41 47 5D 20 26 20 58 52 42 tr[STFLAG] & XRB
018660: 49 54 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 IT)) {..
018670: 20 20 69 66 28 67 6F 74 78 72 29 20 72 65 64 65 if(gotxr) rede
018680: 72 72 28 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 rr();..
018690: 20 2A 76 20 3D 20 67 65 74 69 6E 74 28 73 74 70 *v = getint(stp
0186A0: 74 72 20 2B 20 53 54 56 41 4C 55 45 29 3B 0D 0A tr + STVALUE);..
0186B0: 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 }..
0186C0: 20 20 20 20 20 65 6C 73 65 20 67 6F 74 6F 20 64 else goto d
0186D0: 6F 78 72 3B 09 09 09 09 2F 2A 20 65 78 74 20 72 oxr;..../* ext r
0186E0: 65 66 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 7D ef */.. }
0186F0: 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 69 66 28 .. else if(
018700: 67 6F 74 78 72 29 20 7B 09 09 09 09 2F 2A 20 64 gotxr) {..../* d
018710: 65 66 69 6E 65 20 6E 65 77 20 65 78 74 20 72 65 efine new ext re
018720: 66 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 61 64 f */.. ad
018730: 64 73 79 6D 28 29 3B 09 09 09 09 2F 2A 20 73 79 dsym();..../* sy
018740: 6D 62 6F 6C 20 2A 2F 0D 0A 20 20 20 20 20 20 20 mbol */..
018750: 20 2A 74 20 3D 20 58 52 42 49 54 7C 41 42 53 3B *t = XRBIT|ABS;
018760: 09 09 09 09 2F 2A 20 31 73 74 20 65 78 74 20 72 ..../* 1st ext r
018770: 65 66 20 69 73 20 41 42 53 20 30 20 2A 2F 0D 0A ef is ABS 0 */..
018780: 20 20 20 20 20 20 20 20 64 6F 78 72 3A 0D 0A 20 doxr:..
018790: 20 20 20 20 20 20 20 70 72 69 6F 72 20 3D 20 67 prior = g
0187A0: 65 74 69 6E 74 28 73 74 70 74 72 20 2B 20 53 54 etint(stptr + ST
0187B0: 56 41 4C 55 45 29 3B 09 2F 2A 20 73 61 76 65 20 VALUE);./* save
0187C0: 70 72 69 6F 72 20 70 74 72 20 2A 2F 0D 0A 20 20 prior ptr */..
0187D0: 20 20 20 20 20 20 70 75 74 69 6E 74 28 73 74 70 putint(stp
0187E0: 74 72 20 2B 20 53 54 56 41 4C 55 45 2C 20 6C 6F tr + STVALUE, lo
0187F0: 63 29 3B 09 09 2F 2A 20 74 68 69 73 20 62 65 63 c);../* this bec
018800: 28 6C 65 66 74 20 20 2B 20 20 72 69 67 68 74 29 (left + right)
018810: 3B 0D 0A 20 20 20 20 63 61 73 65 20 4D 49 4E 55 ;.. case MINU
018820: 53 3A 20 72 65 74 75 72 6E 20 28 6C 65 66 74 20 S: return (left
018830: 20 2D 20 20 72 69 67 68 74 29 3B 0D 0A 20 20 20 - right);..
018840: 20 63 61 73 65 20 4D 55 4C 54 3A 20 20 72 65 74 case MULT: ret
018850: 75 72 6E 20 28 6C 65 66 74 20 20 2A 20 20 72 69 urn (left * ri
018860: 67 68 74 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 ght);.. case
018870: 44 49 56 3A 20 20 20 72 65 74 75 72 6E 20 28 6C DIV: return (l
018880: 65 66 74 20 20 2F 20 20 72 69 67 68 74 29 3B 0D eft / right);.
018890: 0A 20 20 20 20 63 61 73 65 20 4D 4F 44 3A 20 20 . case MOD:
0188A0: 20 72 65 74 75 72 6E 20 28 6C 65 66 74 20 20 25 return (left %
0188B0: 20 20 72 69 67 68 74 29 3B 0D 0A 20 20 20 20 7D right);.. }
0188C0: 0D 0A 20 20 72 65 74 75 72 6E 20 28 4E 55 4C 4C .. return (NULL
0188D0: 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A );.. }..../*..*
0188E0: 2A 20 73 63 61 6E 20 66 6F 72 20 6E 65 78 74 20 * scan for next
0188F0: 74 6F 6B 65 6E 0D 0A 2A 2F 0D 0A 74 6F 6B 65 6E token..*/..token
018900: 28 77 61 6E 74 29 20 69 6E 74 20 77 61 6E 74 3B (want) int want;
018910: 20 7B 0D 0A 20 20 69 6E 74 20 6C 65 6E 3B 0D 0A {.. int len;..
018920: 20 20 69 66 28 63 74 29 20 72 65 74 75 72 6E 20 if(ct) return
018930: 28 66 6F 75 6E 64 28 77 61 6E 74 2C 20 63 74 29 (found(want, ct)
018940: 29 3B 09 2F 2A 20 61 6C 72 65 61 64 79 20 68 61 );./* already ha
018950: 76 65 20 61 20 74 6F 6B 65 6E 20 2A 2F 0D 0A 20 ve a token */..
018960: 20 77 68 69 6C 65 28 69 73 73 70 61 63 65 28 2A while(isspace(*
018970: 65 70 29 29 20 2B 2B 65 70 3B 0D 0A 20 20 73 77 ep)) ++ep;.. sw
018980: 69 74 63 68 28 2A 65 70 2B 2B 29 20 7B 0D 0A 20 itch(*ep++) {..
018990: 20 20 20 63 61 73 65 20 27 7C 27 3A 20 72 65 74 case '|': ret
0189A0: 75 72 6E 20 28 66 6F 75 6E 64 28 77 61 6E 74 2C urn (found(want,
0189B0: 20 4F 52 29 29 3B 0D 0A 20 20 20 20 63 61 73 65 OR));.. case
0189C0: 20 27 5E 27 3A 20 72 65 74 75 72 6E 20 28 66 6F '^': return (fo
0189D0: 75 6E 64 28 77 61 6E 74 2C 20 58 4F 52 29 29 3B und(want, XOR));
0189E0: 0D 0A 20 20 20 20 63 61 73 65 20 27 26 27 3A 20 .. case '&':
0189F0: 72 65 74 75 72 6E 20 28 66 6F 75 6E 64 28 77 61 return (found(wa
018A00: 6F 6D 65 73 20 70 72 65 76 20 2A 2F 0D 0A 20 20 omes prev */..
018A10: 20 20 20 20 20 20 73 74 70 74 72 5B 53 54 46 4C stptr[STFL
018A20: 41 47 5D 20 7C 3D 20 58 52 42 49 54 7C 50 52 45 AG] |= XRBIT|PRE
018A30: 4C 3B 09 09 2F 2A 20 65 78 74 20 72 65 66 20 69 L;../* ext ref i
018A40: 73 20 72 65 6C 61 74 69 76 65 20 2A 2F 0D 0A 20 s relative */..
018A50: 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 }..
018A60: 65 6C 73 65 20 75 6E 64 65 72 72 28 29 3B 09 09 else underr();..
018A70: 09 09 2F 2A 20 75 6E 64 65 66 69 6E 65 64 20 2A ../* undefined *
018A80: 2F 0D 0A 20 20 20 20 20 20 72 65 74 75 72 6E 20 /.. return
018A90: 28 59 45 53 29 3B 0D 0A 20 20 20 20 20 20 7D 0D (YES);.. }.
018AA0: 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E . }.. return
018AB0: 20 28 4E 4F 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F (NO);.. }..../
018AC0: 2A 0D 0A 2A 2A 20 64 72 6F 70 20 74 6F 20 61 20 *..** drop to a
018AD0: 6C 6F 77 65 72 20 6C 65 76 65 6C 0D 0A 2A 2F 0D lower level..*/.
018AE0: 0A 64 6F 77 6E 28 6F 70 73 2C 20 6C 65 76 65 6C .down(ops, level
018AF0: 2C 20 76 2C 20 74 29 20 69 6E 74 20 2A 6F 70 73 , v, t) int *ops
018B00: 2C 20 28 2A 6C 65 76 65 6C 29 28 29 2C 20 2A 76 , (*level)(), *v
018B10: 2C 20 2A 74 3B 20 7B 0D 0A 20 20 69 6E 74 20 2A , *t; {.. int *
018B20: 6F 70 3B 0D 0A 20 20 69 66 28 21 28 2A 6C 65 76 op;.. if(!(*lev
018B30: 65 6C 29 28 76 2C 20 74 29 29 20 72 65 74 75 72 el)(v, t)) retur
018B40: 6E 20 28 4E 4F 29 3B 0D 0A 20 20 6F 70 20 3D 20 n (NO);.. op =
018B50: 2D 2D 6F 70 73 3B 0D 0A 20 20 77 68 69 6C 65 28 --ops;.. while(
018B60: 2A 2B 2B 6F 70 29 20 7B 0D 0A 20 20 20 20 69 66 *++op) {.. if
018B70: 28 74 6F 6B 65 6E 28 2A 6F 70 29 29 20 7B 0D 0A (token(*op)) {..
018B80: 20 20 20 20 20 20 69 66 28 21 64 6F 77 6E 32 28 if(!down2(
018B90: 2A 6F 70 2C 20 6C 65 76 65 6C 2C 20 76 2C 20 74 *op, level, v, t
018BA0: 29 29 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D )) return (NO);.
018BB0: 0A 20 20 20 20 20 20 69 66 28 74 6F 6B 65 6E 28 . if(token(
018BC0: 45 4F 45 29 29 20 72 65 74 75 72 6E 20 28 59 45 EOE)) return (YE
018BD0: 53 29 3B 0D 0A 20 20 20 20 20 20 6F 70 20 3D 20 S);.. op =
018BE0: 6F 70 73 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 ops;.. }..
018BF0: 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 28 }.. return (
018C00: 6E 74 2C 20 41 4E 44 29 29 3B 0D 0A 20 20 20 20 nt, AND));..
018C10: 63 61 73 65 20 27 2B 27 3A 20 72 65 74 75 72 6E case '+': return
018C20: 20 28 66 6F 75 6E 64 28 77 61 6E 74 2C 20 50 4C (found(want, PL
018C30: 55 53 29 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 US));.. case
018C40: 27 2D 27 3A 20 72 65 74 75 72 6E 20 28 66 6F 75 '-': return (fou
018C50: 6E 64 28 77 61 6E 74 2C 20 4D 49 4E 55 53 29 29 nd(want, MINUS))
018C60: 3B 0D 0A 20 20 20 20 63 61 73 65 20 27 2A 27 3A ;.. case '*':
018C70: 20 72 65 74 75 72 6E 20 28 66 6F 75 6E 64 28 77 return (found(w
018C80: 61 6E 74 2C 20 4D 55 4C 54 29 29 3B 0D 0A 20 20 ant, MULT));..
018C90: 20 20 63 61 73 65 20 27 2F 27 3A 20 72 65 74 75 case '/': retu
018CA0: 72 6E 20 28 66 6F 75 6E 64 28 77 61 6E 74 2C 20 rn (found(want,
018CB0: 44 49 56 29 29 3B 0D 0A 20 20 20 20 63 61 73 65 DIV));.. case
018CC0: 20 27 25 27 3A 20 72 65 74 75 72 6E 20 28 66 6F '%': return (fo
018CD0: 75 6E 64 28 77 61 6E 74 2C 20 4D 4F 44 29 29 3B und(want, MOD));
018CE0: 0D 0A 20 20 20 20 63 61 73 65 20 27 7E 27 3A 20 .. case '~':
018CF0: 72 65 74 75 72 6E 20 28 66 6F 75 6E 64 28 77 61 return (found(wa
018D00: 6E 74 2C 20 43 50 4C 29 29 3B 0D 0A 20 20 20 20 nt, CPL));..
018D10: 63 61 73 65 20 27 28 27 3A 20 72 65 74 75 72 6E case '(': return
018D20: 20 28 66 6F 75 6E 64 28 77 61 6E 74 2C 20 4C 50 (found(want, LP
018D30: 4E 29 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 27 N));.. case '
018D40: 29 27 3A 20 72 65 74 75 72 6E 20 28 66 6F 75 6E )': return (foun
018D50: 64 28 77 61 6E 74 2C 20 52 50 4E 29 29 3B 0D 0A d(want, RPN));..
018D60: 20 20 20 20 63 61 73 65 20 27 24 27 3A 20 72 65 case '$': re
018D70: 74 75 72 6E 20 28 66 6F 75 6E 64 28 77 61 6E 74 turn (found(want
018D80: 2C 20 4C 4F 43 29 29 3B 0D 0A 20 20 20 20 63 61 , LOC));.. ca
018D90: 73 65 20 27 2C 27 3A 20 72 65 74 75 72 6E 20 28 se ',': return (
018DA0: 66 6F 75 6E 64 28 77 61 6E 74 2C 20 45 4F 45 29 found(want, EOE)
018DB0: 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 27 21 27 );.. case '!'
018DC0: 3A 20 69 66 28 2A 65 70 2B 2B 20 3D 3D 20 27 3D : if(*ep++ == '=
018DD0: 27 29 20 72 65 74 75 72 6E 20 28 66 6F 75 6E 64 ') return (found
018DE0: 28 77 61 6E 74 2C 20 4E 45 29 29 3B 20 20 2D 2D (want, NE)); --
018DF0: 65 70 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ep;..
018E00: 59 45 53 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A YES);.. }..../*
018E10: 0D 0A 2A 2A 20 62 69 6E 61 72 79 20 64 72 6F 70 ..** binary drop
018E20: 20 74 6F 20 61 20 6C 6F 77 65 72 20 6C 65 76 65 to a lower leve
018E30: 6C 0D 0A 2A 2F 0D 0A 64 6F 77 6E 32 28 6F 70 65 l..*/..down2(ope
018E40: 72 2C 20 6C 65 76 65 6C 2C 20 76 2C 20 74 29 20 r, level, v, t)
018E50: 69 6E 74 20 6F 70 65 72 2C 20 28 2A 6C 65 76 65 int oper, (*leve
018E60: 6C 29 28 29 2C 20 2A 76 2C 20 2A 74 3B 20 7B 0D l)(), *v, *t; {.
018E70: 0A 20 20 69 6E 74 20 6F 6B 2C 20 76 72 2C 20 74 . int ok, vr, t
018E80: 72 2C 20 74 6C 3B 0D 0A 20 20 6F 6B 20 3D 20 28 r, tl;.. ok = (
018E90: 2A 6C 65 76 65 6C 29 28 26 76 72 2C 20 26 74 72 *level)(&vr, &tr
018EA0: 29 3B 0D 0A 20 20 2A 76 20 3D 20 62 69 6E 61 72 );.. *v = binar
018EB0: 79 28 2A 76 2C 20 6F 70 65 72 2C 20 76 72 29 3B y(*v, oper, vr);
018EC0: 09 09 09 2F 2A 20 61 70 70 6C 79 20 6F 70 65 72 .../* apply oper
018ED0: 61 74 6F 72 20 2A 2F 0D 0A 20 20 74 6C 20 3D 20 ator */.. tl =
018EE0: 2A 74 20 26 20 52 45 4C 42 49 54 53 3B 0D 0A 20 *t & RELBITS;..
018EF0: 20 2A 74 20 3D 20 28 2A 74 20 7C 20 74 72 29 20 *t = (*t | tr)
018F00: 26 20 7E 52 45 4C 42 49 54 53 3B 09 2F 2A 20 6D & ~RELBITS;./* m
018F10: 65 72 67 65 20 66 6C 61 67 20 62 69 74 73 20 26 erge flag bits &
018F20: 20 64 65 66 61 75 6C 74 20 74 6F 20 41 42 53 20 default to ABS
018F30: 2A 2F 0D 0A 20 20 74 72 20 26 3D 20 52 45 4C 42 */.. tr &= RELB
018F40: 49 54 53 3B 0D 0A 20 20 69 66 28 74 6C 20 3D 3D ITS;.. if(tl ==
018F50: 20 41 42 53 29 20 7B 0D 0A 20 20 20 20 69 66 28 ABS) {.. if(
018F60: 74 72 20 3D 3D 20 41 42 53 29 20 72 65 74 75 72 tr == ABS) retur
018F70: 6E 20 28 6F 6B 29 3B 09 09 09 2F 2A 20 61 62 73 n (ok);.../* abs
018F80: 20 3C 6F 70 65 72 3E 20 61 62 73 20 2A 2F 0D 0A <oper> abs */..
018F90: 20 20 20 20 65 6C 73 65 20 7B 09 09 09 09 09 2F else {...../
018FA0: 2A 20 61 62 73 20 3C 6F 70 65 72 3E 20 72 65 6C * abs <oper> rel
018FB0: 20 2A 2F 0D 0A 20 20 20 20 20 20 69 66 28 6F 70 */.. if(op
018FC0: 65 72 20 3D 3D 20 50 4C 55 53 29 20 7B 2A 74 20 er == PLUS) {*t
018FD0: 7C 3D 20 50 52 45 4C 3B 20 72 65 74 75 72 6E 20 |= PREL; return
018FE0: 28 6F 6B 29 3B 7D 0D 0A 20 20 20 20 20 20 72 65 (ok);}.. re
018FF0: 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 20 20 turn (NO);..
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 20 20 20 20 20 20 20 20 20 20 20
019110: 20 20 20 20 72 65 74 75 72 6E 20 28 66 6F 75 6E return (foun
019120: 64 28 77 61 6E 74 2C 20 4E 4F 54 29 29 3B 0D 0A d(want, NOT));..
019130: 20 20 20 20 63 61 73 65 20 27 3C 27 3A 20 69 66 case '<': if
019140: 28 2A 65 70 2B 2B 20 3D 3D 20 27 3D 27 29 20 72 (*ep++ == '=') r
019150: 65 74 75 72 6E 20 28 66 6F 75 6E 64 28 77 61 6E eturn (found(wan
019160: 74 2C 20 4C 45 29 29 3B 20 20 2D 2D 65 70 3B 0D t, LE)); --ep;.
019170: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 . i
019180: 66 28 2A 65 70 2B 2B 20 3D 3D 20 27 3C 27 29 20 f(*ep++ == '<')
019190: 72 65 74 75 72 6E 20 28 66 6F 75 6E 64 28 77 61 return (found(wa
0191A0: 6E 74 2C 20 4C 53 48 29 29 3B 20 2D 2D 65 70 3B nt, LSH)); --ep;
0191B0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
0191C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0191D0: 20 72 65 74 75 72 6E 20 28 66 6F 75 6E 64 28 77 return (found(w
0191E0: 61 6E 74 2C 20 4C 54 29 29 3B 0D 0A 20 20 20 20 ant, LT));..
0191F0: 63 61 73 65 20 27 3E 27 3A 20 69 66 28 2A 65 70 case '>': if(*ep
019200: 2B 2B 20 3D 3D 20 27 3D 27 29 20 72 65 74 75 72 ++ == '=') retur
019210: 6E 20 28 66 6F 75 6E 64 28 77 61 6E 74 2C 20 47 n (found(want, G
019220: 45 29 29 3B 20 20 2D 2D 65 70 3B 0D 0A 20 20 20 E)); --ep;..
019230: 20 20 20 20 20 20 20 20 20 20 20 69 66 28 2A 65 if(*e
019240: 70 2B 2B 20 3D 3D 20 27 3E 27 29 20 72 65 74 75 p++ == '>') retu
019250: 72 6E 20 28 66 6F 75 6E 64 28 77 61 6E 74 2C 20 rn (found(want,
019260: 52 53 48 29 29 3B 20 2D 2D 65 70 3B 0D 0A 20 20 RSH)); --ep;..
019270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
019280: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret
019290: 75 72 6E 20 28 66 6F 75 6E 64 28 77 61 6E 74 2C urn (found(want,
0192A0: 20 47 54 29 29 3B 0D 0A 20 20 20 20 63 61 73 65 GT));.. case
0192B0: 20 27 3D 27 3A 20 69 66 28 2A 65 70 2B 2B 20 3D '=': if(*ep++ =
0192C0: 3D 20 27 3D 27 29 20 72 65 74 75 72 6E 20 28 66 = '=') return (f
0192D0: 6F 75 6E 64 28 77 61 6E 74 2C 20 45 51 29 29 3B ound(want, EQ));
0192E0: 20 20 2D 2D 65 70 3B 0D 0A 20 20 20 20 7D 0D 0A --ep;.. }..
0192F0: 20 20 2D 2D 65 70 3B 0D 0A 20 20 65 70 20 3D 20 --ep;.. ep =
019300: 63 61 73 65 20 27 56 27 3A 20 63 61 73 65 20 27 case 'V': case '
019310: 57 27 3A 20 63 61 73 65 20 27 58 27 3A 20 63 61 W': case 'X': ca
019320: 73 65 20 27 59 27 3A 20 63 61 73 65 20 27 5A 27 se 'Y': case 'Z'
019330: 3A 0D 0A 20 20 20 20 20 20 20 20 63 61 73 65 20 :.. case
019340: 27 30 27 3A 20 63 61 73 65 20 27 31 27 3A 20 63 '0': case '1': c
019350: 61 73 65 20 27 32 27 3A 20 63 61 73 65 20 27 33 ase '2': case '3
019360: 27 3A 20 63 61 73 65 20 27 34 27 3A 0D 0A 20 20 ': case '4':..
019370: 20 20 20 20 20 20 63 61 73 65 20 27 35 27 3A 20 case '5':
019380: 63 61 73 65 20 27 36 27 3A 20 63 61 73 65 20 27 case '6': case '
019390: 37 27 3A 20 63 61 73 65 20 27 38 27 3A 20 63 61 7': case '8': ca
0193A0: 73 65 20 27 39 27 3A 0D 0A 20 20 20 20 20 20 20 se '9':..
0193B0: 20 63 61 73 65 20 27 5F 27 3A 20 63 61 73 65 20 case '_': case
0193C0: 27 2E 27 3A 20 63 61 73 65 20 27 24 27 3A 20 63 '.': case '$': c
0193D0: 61 73 65 20 27 3F 27 3A 20 63 61 73 65 20 27 40 ase '?': case '@
0193E0: 27 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 69 66 ':.. if
0193F0: 28 6A 20 3C 20 4D 41 58 4C 41 42 29 20 73 74 73 (j < MAXLAB) sts
019400: 79 6D 5B 6A 2B 2B 5D 20 3D 20 74 6F 75 70 70 65 ym[j++] = touppe
019410: 72 28 2A 61 74 29 3B 0D 0A 20 20 20 20 20 20 20 r(*at);..
019420: 20 20 20 2B 2B 61 74 3B 0D 0A 20 20 20 20 20 20 ++at;..
019430: 20 20 20 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 continue;..
019440: 20 20 20 20 20 20 20 63 61 73 65 20 27 3A 27 3A case ':':
019450: 0D 0A 20 20 20 20 20 20 20 20 20 20 67 6F 74 6C .. gotl
019460: 61 62 65 6C 20 3D 20 59 45 53 3B 0D 0A 20 20 20 abel = YES;..
019470: 20 20 20 20 20 20 20 69 66 28 2A 2B 2B 61 74 20 if(*++at
019480: 3D 3D 20 27 3A 27 29 20 7B 67 6F 74 65 70 20 3D == ':') {gotep =
019490: 20 59 45 53 3B 20 2B 2B 61 74 3B 7D 0D 0A 20 20 YES; ++at;}..
0194A0: 20 20 20 20 20 20 63 61 73 65 20 27 20 27 3A 20 case ' ':
0194B0: 63 61 73 65 20 27 5C 74 27 3A 20 63 61 73 65 20 case '\t': case
0194C0: 27 5C 6E 27 3A 0D 0A 20 20 20 20 20 20 20 20 63 '\n':.. c
0194D0: 61 73 65 20 27 2C 27 3A 20 63 61 73 65 20 4E 55 ase ',': case NU
0194E0: 4C 4C 3A 20 63 61 73 65 20 43 4F 4D 4D 45 4E 54 LL: case COMMENT
0194F0: 3A 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 :.. }..
019500: 67 65 74 73 79 6D 28 65 70 2C 20 59 45 53 29 3B getsym(ep, YES);
019510: 20 69 66 28 73 74 73 79 6D 5B 30 5D 29 20 7B 72 if(stsym[0]) {r
019520: 65 74 75 72 6E 20 28 66 6F 75 6E 64 28 77 61 6E eturn (found(wan
019530: 74 2C 20 53 59 4D 29 29 3B 7D 0D 0A 20 20 69 66 t, SYM));}.. if
019540: 28 6C 65 6E 20 3D 20 67 65 74 6E 75 6D 28 65 70 (len = getnum(ep
019550: 29 29 20 20 20 20 7B 65 70 20 2B 3D 20 6C 65 6E )) {ep += len
019560: 3B 20 72 65 74 75 72 6E 20 28 66 6F 75 6E 64 28 ; return (found(
019570: 77 61 6E 74 2C 20 4E 55 4D 29 29 3B 7D 0D 0A 20 want, NUM));}..
019580: 20 69 66 28 61 74 65 6E 64 28 2A 65 70 29 29 20 if(atend(*ep))
019590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0195A0: 20 20 20 20 20 72 65 74 75 72 6E 20 28 66 6F 75 return (fou
0195B0: 6E 64 28 77 61 6E 74 2C 20 45 4F 45 29 29 3B 0D nd(want, EOE));.
0195C0: 0A 20 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D . return (NO);.
0195D0: 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 77 . }..../*..** w
0195E0: 68 61 74 20 77 61 73 20 66 6F 75 6E 64 3F 0D 0A hat was found?..
0195F0: 2A 2F 0D 0A 66 6F 75 6E 64 28 77 61 6E 74 2C 20 */..found(want,
019600: 68 61 76 65 29 20 69 6E 74 20 77 61 6E 74 2C 20 have) int want,
019610: 68 61 76 65 3B 20 7B 0D 0A 20 20 63 74 20 3D 20 have; {.. ct =
019620: 68 61 76 65 3B 09 09 09 09 09 2F 2A 20 6E 65 77 have;...../* new
019630: 20 63 75 72 72 65 6E 74 20 74 6F 6B 65 6E 20 2A current token *
019640: 2F 0D 0A 20 20 69 66 28 63 74 20 3D 3D 20 77 61 /.. if(ct == wa
019650: 6E 74 29 20 7B 09 09 09 09 2F 2A 20 77 61 73 20 nt) {..../* was
019660: 69 74 20 73 6F 75 67 68 74 3F 20 2A 2F 0D 0A 20 it sought? */..
019670: 20 20 20 69 66 28 63 74 20 21 3D 20 45 4F 45 29 if(ct != EOE)
019680: 20 63 74 20 3D 20 4E 55 4C 4C 3B 09 09 09 2F 2A ct = NULL;.../*
019690: 20 79 65 73 2C 20 70 61 73 73 20 69 74 20 62 79 yes, pass it by
0196A0: 20 2A 2F 0D 0A 20 20 20 20 72 65 74 75 72 6E 20 */.. return
0196B0: 28 59 45 53 29 3B 09 09 09 09 2F 2A 20 63 61 6C (YES);..../* cal
0196C0: 6C 65 72 20 68 61 73 20 61 20 68 69 74 20 2A 2F ler has a hit */
0196D0: 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 .. }.. retur
0196E0: 6E 20 28 4E 4F 29 3B 09 09 09 09 09 2F 2A 20 73 n (NO);...../* s
0196F0: 6F 72 72 79 2C 20 6E 6F 20 68 69 74 20 2A 2F 0D orry, no hit */.
019700: 20 20 20 20 77 68 69 6C 65 28 69 73 73 70 61 63 while(isspac
019710: 65 28 2A 61 74 29 29 20 2B 2B 61 74 3B 0D 0A 20 e(*at)) ++at;..
019720: 20 20 20 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 break;..
019730: 20 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 73 }.. }.. s
019740: 74 73 79 6D 5B 6A 5D 20 3D 20 4E 55 4C 4C 3B 0D tsym[j] = NULL;.
019750: 0A 20 20 69 66 28 73 74 73 79 6D 5B 30 5D 20 26 . if(stsym[0] &
019760: 26 20 21 67 6F 74 6C 61 62 65 6C 29 20 67 6F 74 & !gotlabel) got
019770: 6E 61 6D 20 3D 20 59 45 53 3B 20 65 6C 73 65 20 nam = YES; else
019780: 67 6F 74 6E 61 6D 20 3D 20 4E 4F 3B 0D 0A 20 20 gotnam = NO;..
019790: 72 65 74 75 72 6E 20 28 61 74 29 3B 0D 0A 20 20 return (at);..
0197A0: 7D 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A }...............
0197B0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0197C0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0197D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0197E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0197F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
019800: 79 6D 5B 6A 2B 2B 5D 20 3D 20 74 6F 75 70 70 65 ym[j++] = touppe
019810: 72 28 2A 61 74 29 3B 0D 0A 20 20 20 20 20 20 20 r(*at);..
019820: 20 20 20 2B 2B 61 74 3B 0D 0A 20 20 20 20 20 20 ++at;..
019830: 20 20 20 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 continue;..
019840: 20 20 20 20 20 20 20 63 61 73 65 20 27 3A 27 3A case ':':
019850: 0D 0A 20 20 20 20 20 20 20 20 20 20 67 6F 74 6C .. gotl
019860: 61 62 65 6C 20 3D 20 59 45 53 3B 0D 0A 20 20 20 abel = YES;..
019870: 20 20 20 20 20 20 20 69 66 28 2A 2B 2B 61 74 20 if(*++at
019880: 3D 3D 20 27 3A 27 29 20 7B 67 6F 74 65 70 20 3D == ':') {gotep =
019890: 20 59 45 53 3B 20 2B 2B 61 74 3B 7D 0D 0A 20 20 YES; ++at;}..
0198A0: 20 20 20 20 20 20 63 61 73 65 20 27 20 27 3A 20 case ' ':
0198B0: 63 61 73 65 20 27 5C 74 27 3A 20 63 61 73 65 20 case '\t': case
0198C0: 27 5C 6E 27 3A 0D 0A 20 20 20 20 20 20 20 20 63 '\n':.. c
0198D0: 61 73 65 20 27 2C 27 3A 20 63 61 73 65 20 4E 55 ase ',': case NU
0198E0: 4C 4C 3A 20 63 61 73 65 20 43 4F 4D 4D 45 4E 54 LL: case COMMENT
0198F0: 3A 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 :.. }..
019900: 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 67 . }..../*..** g
019910: 65 74 20 68 65 78 2C 20 64 65 63 2C 20 6F 72 20 et hex, dec, or
019920: 6F 63 74 20 6E 75 6D 62 65 72 20 61 73 20 62 69 oct number as bi
019930: 6E 61 72 79 20 76 61 6C 75 65 20 69 6E 20 6E 75 nary value in nu
019940: 6D 62 65 72 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 mber..** return
019950: 6C 65 6E 67 74 68 20 6F 66 20 66 69 65 6C 64 20 length of field
019960: 70 72 6F 63 65 73 73 65 64 2C 20 65 6C 73 65 20 processed, else
019970: 7A 65 72 6F 0D 0A 2A 2F 20 0D 0A 67 65 74 6E 75 zero..*/ ..getnu
019980: 6D 28 61 74 29 20 63 68 61 72 20 2A 61 74 3B 20 m(at) char *at;
019990: 7B 0D 0A 20 20 69 6E 74 20 62 75 6D 70 2C 20 6C {.. int bump, l
0199A0: 65 6E 3B 20 63 68 61 72 20 2A 65 6E 64 2C 20 2A en; char *end, *
0199B0: 63 70 3B 0D 0A 20 20 63 70 20 3D 20 61 74 3B 0D cp;.. cp = at;.
0199C0: 0A 20 20 69 66 28 28 2A 63 70 20 3D 3D 20 27 5C . if((*cp == '\
0199D0: 27 27 20 7C 7C 20 2A 63 70 20 3D 3D 20 27 22 27 '' || *cp == '"'
0199E0: 29 20 26 26 20 2A 63 70 20 3D 3D 20 63 70 5B 32 ) && *cp == cp[2
0199F0: 5D 29 20 7B 09 2F 2A 20 71 75 6F 74 65 64 20 63 ]) {./* quoted c
019A00: 68 61 72 20 2A 2F 0D 0A 20 20 20 20 6E 75 6D 62 har */.. numb
019A10: 65 72 20 3D 20 63 70 5B 31 5D 20 26 20 32 35 35 er = cp[1] & 255
019A20: 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E 20 28 33 ;.. return (3
019A30: 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 73 77 69 );.. }.. swi
019A40: 74 63 68 28 2A 63 70 29 20 7B 0D 0A 20 20 20 20 tch(*cp) {..
019A50: 63 61 73 65 20 27 30 27 3A 20 63 61 73 65 20 27 case '0': case '
019A60: 31 27 3A 20 63 61 73 65 20 27 32 27 3A 20 63 61 1': case '2': ca
019A70: 73 65 20 27 33 27 3A 20 63 61 73 65 20 27 34 27 se '3': case '4'
019A80: 3A 0D 0A 20 20 20 20 63 61 73 65 20 27 35 27 3A :.. case '5':
019A90: 20 63 61 73 65 20 27 36 27 3A 20 63 61 73 65 20 case '6': case
019AA0: 27 37 27 3A 20 63 61 73 65 20 27 38 27 3A 20 63 '7': case '8': c
019AB0: 61 73 65 20 27 39 27 3A 0D 0A 20 20 20 20 65 6E ase '9':.. en
019AC0: 64 20 3D 20 63 70 3B 0D 0A 20 20 20 20 62 75 6D d = cp;.. bum
019AD0: 70 20 3D 20 31 3B 0D 0A 20 20 20 20 77 68 69 6C p = 1;.. whil
019AE0: 65 28 59 45 53 29 20 7B 0D 0A 20 20 20 20 20 20 e(YES) {..
019AF0: 73 77 69 74 63 68 28 74 6F 75 70 70 65 72 28 2A switch(toupper(*
019B00: 2F 2A 20 0D 0A 2A 2A 20 4C 4E 4B 2E 43 20 2D 2D /* ..** LNK.C --
019B10: 20 53 6D 61 6C 6C 2D 4D 61 63 20 4C 69 6E 6B 61 Small-Mac Linka
019B20: 67 65 20 45 64 69 74 6F 72 0D 0A 2A 2A 0D 0A 2A ge Editor..**..*
019B30: 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
019B40: 20 20 20 20 20 43 6F 70 79 72 69 67 68 74 20 31 Copyright 1
019B50: 39 38 35 20 4A 2E 20 45 2E 20 48 65 6E 64 72 69 985 J. E. Hendri
019B60: 78 0D 0A 2A 2A 0D 0A 2A 2A 20 55 73 61 67 65 3A x..**..** Usage:
019B70: 20 4C 4E 4B 20 5B 2D 42 5D 20 5B 2D 47 23 5D 20 LNK [-B] [-G#]
019B80: 5B 2D 4D 5D 20 70 72 6F 67 72 61 6D 20 5B 6D 6F [-M] program [mo
019B90: 64 75 6C 65 2F 6C 69 62 72 61 72 79 2E 2E 2E 5D dule/library...]
019BA0: 0D 0A 2A 2A 0D 0A 2A 2A 20 2D 42 20 20 20 20 20 ..**..** -B
019BB0: 20 20 20 20 20 20 20 20 20 20 20 20 41 20 42 49 A BI
019BC0: 47 20 70 72 6F 67 72 61 6D 20 69 73 20 62 65 69 G program is bei
019BD0: 6E 67 20 6C 69 6E 6B 65 64 2C 20 73 6F 20 75 73 ng linked, so us
019BE0: 65 20 61 6C 6C 0D 0A 2A 2A 20 20 20 20 20 20 20 e all..**
019BF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6F 66 20 of
019C00: 66 72 65 65 20 6D 65 6D 6F 72 79 20 66 6F 72 20 free memory for
019C10: 74 68 65 20 73 79 6D 62 6F 6C 20 74 61 62 6C 65 the symbol table
019C20: 20 61 6E 64 20 6C 6F 61 64 20 74 68 65 0D 0A 2A and load the..*
019C30: 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 *
019C40: 20 20 20 20 20 70 72 6F 67 72 61 6D 20 74 6F 20 program to
019C50: 64 69 73 6B 20 65 6E 74 69 72 65 6C 79 2E 20 20 disk entirely.
019C60: 54 68 69 73 20 69 73 20 73 6C 6F 77 65 72 20 62 This is slower b
019C70: 75 74 20 69 74 0D 0A 2A 2A 20 20 20 20 20 20 20 ut it..**
019C80: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 get
019C90: 73 20 74 68 65 20 6A 6F 62 20 64 6F 6E 65 2E 0D s the job done..
019CA0: 0A 2A 2A 0D 0A 2A 2A 20 2D 47 23 20 20 20 20 20 .**..** -G#
019CB0: 20 20 20 20 20 20 20 20 20 20 20 4D 61 6B 65 20 Make
019CC0: 70 72 6F 67 72 61 6D 20 61 62 73 6F 6C 75 74 65 program absolute
019CD0: 20 61 74 20 61 64 64 72 65 73 73 20 23 20 28 68 at address # (h
019CE0: 65 78 29 20 61 6E 64 0D 0A 2A 2A 20 20 20 20 20 ex) and..**
019CF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6F o
019D00: 65 6E 64 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 end)) {..
019D10: 20 20 64 65 66 61 75 6C 74 3A 20 69 66 28 69 73 default: if(is
019D20: 78 64 69 67 69 74 28 2A 65 6E 64 29 29 20 7B 2B xdigit(*end)) {+
019D30: 2B 65 6E 64 3B 20 63 6F 6E 74 69 6E 75 65 3B 7D +end; continue;}
019D40: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
019D50: 20 20 20 20 62 75 6D 70 20 3D 20 30 3B 0D 0A 20 bump = 0;..
019D60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
019D70: 20 6C 65 6E 20 3D 20 75 74 6F 69 28 63 70 2C 20 len = utoi(cp,
019D80: 26 6E 75 6D 62 65 72 29 3B 20 62 72 65 61 6B 3B &number); break;
019D90: 0D 0A 20 20 20 20 20 20 20 20 63 61 73 65 20 27 .. case '
019DA0: 51 27 3A 0D 0A 20 20 20 20 20 20 20 20 63 61 73 Q':.. cas
019DB0: 65 20 27 4F 27 3A 20 6C 65 6E 20 3D 20 6F 74 6F e 'O': len = oto
019DC0: 69 28 63 70 2C 20 26 6E 75 6D 62 65 72 29 3B 20 i(cp, &number);
019DD0: 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 20 20 break;..
019DE0: 63 61 73 65 20 27 48 27 3A 20 6C 65 6E 20 3D 20 case 'H': len =
019DF0: 78 74 6F 69 28 63 70 2C 20 26 6E 75 6D 62 65 72 xtoi(cp, &number
019E00: 29 3B 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 ); break;..
019E10: 20 20 20 7D 0D 0A 20 20 20 20 20 20 62 72 65 61 }.. brea
019E20: 6B 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 k;.. }..
019E30: 20 69 66 28 6C 65 6E 20 21 3D 20 28 65 6E 64 20 if(len != (end
019E40: 2D 20 63 70 29 29 20 6E 75 6D 65 72 72 28 29 3B - cp)) numerr();
019E50: 09 2F 2A 20 62 61 64 20 6E 75 6D 62 65 72 20 2A ./* bad number *
019E60: 2F 0D 0A 20 20 20 20 72 65 74 75 72 6E 20 28 28 /.. return ((
019E70: 65 6E 64 20 2D 20 61 74 29 20 2B 20 62 75 6D 70 end - at) + bump
019E80: 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 );.. }.. ret
019E90: 75 72 6E 20 28 30 29 3B 0D 0A 20 20 7D 0D 0A 0D urn (0);.. }...
019EA0: 0A 2F 2A 0D 0A 2A 2A 20 67 65 74 20 61 20 73 79 ./*..** get a sy
019EB0: 6D 62 6F 6C 20 69 6E 74 6F 20 73 74 73 79 6D 0D mbol into stsym.
019EC0: 0A 2A 2F 0D 0A 67 65 74 73 79 6D 28 61 74 2C 20 .*/..getsym(at,
019ED0: 72 65 66 29 20 63 68 61 72 20 2A 61 74 3B 20 69 ref) char *at; i
019EE0: 6E 74 20 72 65 66 3B 20 7B 0D 0A 20 20 69 6E 74 nt ref; {.. int
019EF0: 20 6A 3B 0D 0A 20 20 6A 20 3D 20 62 61 64 73 79 j;.. j = badsy
019F00: 75 74 70 75 74 20 61 73 20 22 70 72 6F 67 72 61 utput as "progra
019F10: 6D 2E 4C 47 4F 22 20 69 6E 73 74 65 61 64 20 6F m.LGO" instead o
019F20: 66 20 22 70 72 6F 67 72 61 6D 2E 43 4F 4D 22 2E f "program.COM".
019F30: 0D 0A 2A 2A 0D 0A 2A 2A 20 2D 4D 20 20 20 20 20 ..**..** -M
019F40: 20 20 20 20 20 20 20 20 20 20 20 20 4D 6F 6E 69 Moni
019F50: 74 6F 72 20 6C 69 6E 6B 69 6E 67 20 61 63 74 69 tor linking acti
019F60: 76 69 74 79 2E 0D 0A 2A 2A 0D 0A 2A 2A 20 70 72 vity...**..** pr
019F70: 6F 67 72 61 6D 20 20 20 20 20 20 20 20 20 20 20 ogram
019F80: 20 41 20 66 69 6C 65 20 73 70 65 63 69 66 69 65 A file specifie
019F90: 72 20 66 6F 72 20 74 68 65 20 70 72 6F 67 72 61 r for the progra
019FA0: 6D 20 62 65 69 6E 67 20 6C 69 6E 6B 65 64 2E 0D m being linked..
019FB0: 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 .**
019FC0: 20 20 20 20 20 20 20 54 68 65 20 64 65 66 61 75 The defau
019FD0: 6C 74 2C 20 61 6E 64 20 6F 6E 6C 79 20 61 6C 6C lt, and only all
019FE0: 6F 77 65 64 2C 20 65 78 74 65 6E 73 69 6F 6E 20 owed, extension
019FF0: 69 73 20 52 45 4C 2E 0D 0A 2A 2A 0D 0A 2A 2A 20 is REL...**..**
01A000: 6D 6F 64 75 6C 65 2F 6C 69 62 72 61 72 79 2E 2E module/library..
01A010: 2E 20 20 41 20 6C 69 73 74 20 6F 66 20 7A 65 72 . A list of zer
01A020: 6F 20 6F 72 20 6D 6F 72 65 20 6D 6F 64 75 6C 65 o or more module
01A030: 20 28 2E 52 45 4C 29 20 61 6E 64 2F 6F 72 0D 0A (.REL) and/or..
01A040: 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 **
01A050: 20 20 20 20 20 20 6C 69 62 72 61 72 79 20 28 2E library (.
01A060: 4C 49 42 29 20 66 69 6C 65 73 2E 20 20 45 61 63 LIB) files. Eac
01A070: 68 20 6D 6F 64 75 6C 65 20 69 73 20 6C 69 6E 6B h module is link
01A080: 65 64 20 74 6F 0D 0A 2A 2A 20 20 20 20 20 20 20 ed to..**
01A090: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 the
01A0A0: 20 70 72 6F 67 72 61 6D 20 61 6E 64 20 74 68 65 program and the
01A0B0: 20 6C 69 62 72 61 72 69 65 73 20 61 72 65 20 73 libraries are s
01A0C0: 65 61 72 63 68 65 64 20 66 6F 72 0D 0A 2A 2A 20 earched for..**
01A0D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01A0E0: 20 20 20 6A 75 73 74 20 74 68 6F 73 65 20 6D 6F just those mo
01A0F0: 64 75 6C 65 73 20 77 68 69 63 68 20 73 61 74 69 dules which sati
01A100: 6D 20 3D 20 67 6F 74 65 70 20 3D 20 67 6F 74 78 m = gotep = gotx
01A110: 72 20 3D 20 67 6F 74 6C 61 62 65 6C 20 3D 20 30 r = gotlabel = 0
01A120: 3B 0D 0A 20 20 69 66 28 21 69 73 64 69 67 69 74 ;.. if(!isdigit
01A130: 28 2A 61 74 29 29 20 7B 0D 0A 20 20 20 20 77 68 (*at)) {.. wh
01A140: 69 6C 65 28 59 45 53 29 20 7B 0D 0A 20 20 20 20 ile(YES) {..
01A150: 20 20 73 77 69 74 63 68 28 74 6F 75 70 70 65 72 switch(toupper
01A160: 28 2A 61 74 29 29 20 7B 0D 0A 20 20 20 20 20 20 (*at)) {..
01A170: 20 20 63 61 73 65 20 27 23 27 3A 0D 0A 20 20 20 case '#':..
01A180: 20 20 20 20 20 20 20 69 66 28 72 65 66 29 20 7B if(ref) {
01A190: 67 6F 74 78 72 20 3D 20 59 45 53 3B 20 69 66 28 gotxr = YES; if(
01A1A0: 2A 2B 2B 61 74 20 3D 3D 20 27 23 27 29 20 2B 2B *++at == '#') ++
01A1B0: 61 74 3B 20 62 72 65 61 6B 3B 7D 0D 0A 20 20 20 at; break;}..
01A1C0: 20 20 20 20 20 64 65 66 61 75 6C 74 3A 0D 0A 20 default:..
01A1D0: 20 20 20 20 20 20 20 20 20 69 66 28 72 65 66 29 if(ref)
01A1E0: 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 20 break;..
01A1F0: 20 20 20 62 61 64 73 79 6D 20 3D 20 59 45 53 3B badsym = YES;
01A200: 0D 0A 20 20 20 20 20 20 20 20 63 61 73 65 20 27 .. case '
01A210: 41 27 3A 20 63 61 73 65 20 27 42 27 3A 20 63 61 A': case 'B': ca
01A220: 73 65 20 27 43 27 3A 20 63 61 73 65 20 27 44 27 se 'C': case 'D'
01A230: 3A 20 63 61 73 65 20 27 45 27 3A 0D 0A 20 20 20 : case 'E':..
01A240: 20 20 20 20 20 63 61 73 65 20 27 46 27 3A 20 63 case 'F': c
01A250: 61 73 65 20 27 47 27 3A 20 63 61 73 65 20 27 48 ase 'G': case 'H
01A260: 27 3A 20 63 61 73 65 20 27 49 27 3A 20 63 61 73 ': case 'I': cas
01A270: 65 20 27 4A 27 3A 0D 0A 20 20 20 20 20 20 20 20 e 'J':..
01A280: 63 61 73 65 20 27 4B 27 3A 20 63 61 73 65 20 27 case 'K': case '
01A290: 4C 27 3A 20 63 61 73 65 20 27 4D 27 3A 20 63 61 L': case 'M': ca
01A2A0: 73 65 20 27 4E 27 3A 20 63 61 73 65 20 27 4F 27 se 'N': case 'O'
01A2B0: 3A 0D 0A 20 20 20 20 20 20 20 20 63 61 73 65 20 :.. case
01A2C0: 27 50 27 3A 20 63 61 73 65 20 27 51 27 3A 20 63 'P': case 'Q': c
01A2D0: 61 73 65 20 27 52 27 3A 20 63 61 73 65 20 27 53 ase 'R': case 'S
01A2E0: 27 3A 20 63 61 73 65 20 27 54 27 3A 0D 0A 20 20 ': case 'T':..
01A2F0: 20 20 20 20 20 20 63 61 73 65 20 27 55 27 3A 20 case 'U':
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: 73 66 79 20 6F 6E 65 20 6F 72 20 6D 6F 72 65 0D sfy one or more.
01A410: 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 .**
01A420: 20 20 20 20 20 20 20 75 6E 72 65 73 6F 6C 76 65 unresolve
01A430: 64 20 65 78 74 65 72 6E 61 6C 20 72 65 66 65 72 d external refer
01A440: 65 6E 63 65 73 2E 0D 0A 2A 2A 0D 0A 2A 2A 20 4E ences...**..** N
01A450: 4F 54 45 3A 20 4D 65 72 65 6C 79 20 64 65 63 6C OTE: Merely decl
01A460: 61 72 69 6E 67 20 61 20 73 79 6D 62 6F 6C 20 74 aring a symbol t
01A470: 6F 20 62 65 20 65 78 74 65 72 6E 61 6C 20 77 69 o be external wi
01A480: 6C 6C 20 63 61 75 73 65 0D 0A 2A 2A 20 69 74 27 ll cause..** it'
01A490: 73 20 6D 6F 64 75 6C 65 20 74 6F 20 62 65 20 6C s module to be l
01A4A0: 6F 61 64 65 64 2E 20 20 49 74 20 6E 65 65 64 20 oaded. It need
01A4B0: 6E 6F 74 20 61 63 74 75 61 6C 6C 79 20 62 65 20 not actually be
01A4C0: 72 65 66 65 72 65 6E 63 65 64 2E 0D 0A 2A 2A 0D referenced...**.
01A4D0: 0A 2A 2A 20 4E 4F 54 45 3A 20 54 68 65 20 73 79 .** NOTE: The sy
01A4E0: 6D 62 6F 6C 20 54 4D 4E 41 4D 45 20 69 73 20 64 mbol TMNAME is d
01A4F0: 65 66 69 6E 65 64 20 74 6F 20 62 65 20 74 68 65 efined to be the
01A500: 20 6E 61 6D 65 20 6F 66 20 74 68 65 0D 0A 2A 2A name of the..**
01A510: 20 74 65 72 6D 69 6E 61 6C 20 6D 6F 64 75 6C 65 terminal module
01A520: 3B 20 69 2E 65 2E 2C 20 74 68 65 20 6D 6F 64 75 ; i.e., the modu
01A530: 6C 65 20 77 68 69 63 68 20 6D 75 73 74 20 62 65 le which must be
01A540: 20 6C 6F 61 64 65 64 20 6C 61 73 74 0D 0A 2A 2A loaded last..**
01A550: 20 6F 66 20 61 6C 6C 2E 20 20 54 68 61 74 20 6D of all. That m
01A560: 6F 64 75 6C 65 20 63 6F 6E 74 61 69 6E 73 20 73 odule contains s
01A570: 70 65 63 69 61 6C 20 63 6F 64 65 20 77 68 69 63 pecial code whic
01A580: 68 20 69 64 65 6E 74 69 66 69 65 73 0D 0A 2A 2A h identifies..**
01A590: 20 74 68 65 20 70 68 79 73 69 63 61 6C 20 65 6E the physical en
01A5A0: 64 20 6F 66 20 74 68 65 20 70 72 6F 67 72 61 6D d of the program
01A5B0: 20 61 6E 64 20 74 68 65 20 62 65 67 69 6E 6E 69 and the beginni
01A5C0: 6E 67 20 6F 66 20 66 72 65 65 0D 0A 2A 2A 20 6D ng of free..** m
01A5D0: 65 6D 6F 72 79 2E 20 20 54 68 65 20 6C 69 6E 6B emory. The link
01A5E0: 65 72 20 69 73 20 73 65 6E 73 69 74 69 76 65 20 er is sensitive
01A5F0: 74 6F 20 69 74 73 20 6E 61 6D 65 20 61 6E 64 20 to its name and
01A600: 20 20 20 20 20 20 20 20 2D 31 09 09 2F 2A 20 76 -1../* v
01A610: 61 6C 75 65 20 6F 66 20 72 65 73 6F 6C 76 65 64 alue of resolved
01A620: 20 65 78 74 20 72 65 66 20 2A 2F 0D 0A 23 64 65 ext ref */..#de
01A630: 66 69 6E 65 20 58 52 50 4C 55 53 20 20 20 20 20 fine XRPLUS
01A640: 2D 32 09 09 2F 2A 20 65 78 74 2D 72 65 66 2D 70 -2../* ext-ref-p
01A650: 6C 75 73 2D 6F 66 66 73 65 74 20 66 6C 61 67 20 lus-offset flag
01A660: 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 54 4D 4E 41 */..#define TMNA
01A670: 4D 45 20 20 20 22 45 4E 44 22 09 09 2F 2A 20 74 ME "END"../* t
01A680: 65 72 6D 69 6E 61 6C 20 6D 6F 64 75 6C 65 20 6E erminal module n
01A690: 61 6D 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 ame */..#define
01A6A0: 4D 4F 44 45 58 54 20 20 22 2E 52 45 4C 22 0D 0A MODEXT ".REL"..
01A6B0: 23 64 65 66 69 6E 65 20 4C 49 42 45 58 54 20 20 #define LIBEXT
01A6C0: 22 2E 4C 49 42 22 0D 0A 23 64 65 66 69 6E 65 20 ".LIB"..#define
01A6D0: 4E 44 58 45 58 54 20 20 22 2E 4E 44 58 22 0D 0A NDXEXT ".NDX"..
01A6E0: 23 64 65 66 69 6E 65 20 43 4F 4D 45 58 54 20 20 #define COMEXT
01A6F0: 22 2E 43 4F 4D 22 0D 0A 23 64 65 66 69 6E 65 20 ".COM"..#define
01A700: 4C 47 4F 45 58 54 20 20 22 2E 4C 47 4F 22 0D 0A LGOEXT ".LGO"..
01A710: 23 64 65 66 69 6E 65 20 4F 46 4C 45 58 54 20 20 #define OFLEXT
01A720: 20 22 2E 4F 24 22 0D 0A 23 64 65 66 69 6E 65 20 ".O$"..#define
01A730: 52 45 46 45 58 54 20 20 20 22 2E 52 24 22 0D 0A REFEXT ".R$"..
01A740: 0D 0A 2F 2A 0D 0A 2A 2A 20 73 79 6D 62 6F 6C 20 ../*..** symbol
01A750: 74 61 62 6C 65 20 64 65 66 69 6E 69 74 69 6F 6E table definition
01A760: 73 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4E s..*/..#define N
01A770: 58 54 20 20 20 20 30 09 09 2F 2A 20 6E 65 78 74 XT 0../* next
01A780: 2D 65 6E 74 72 79 20 70 6F 69 6E 74 65 72 20 2A -entry pointer *
01A790: 2F 0D 0A 23 64 65 66 69 6E 65 20 56 41 4C 20 20 /..#define VAL
01A7A0: 20 20 32 09 09 2F 2A 20 6F 66 66 73 65 74 20 76 2../* offset v
01A7B0: 61 6C 75 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 alue */..#define
01A7C0: 20 53 59 4D 20 20 20 20 34 09 09 2F 2A 20 73 79 SYM 4../* sy
01A7D0: 6D 62 6F 6C 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 mbol */..#define
01A7E0: 20 53 53 5A 20 28 53 59 4D 2B 4D 41 58 53 59 4D SSZ (SYM+MAXSYM
01A7F0: 2B 31 29 09 2F 2A 20 73 69 7A 65 20 6F 66 20 74 +1)./* size of t
01A800: 77 61 69 74 73 20 75 6E 74 69 6C 0D 0A 2A 2A 20 waits until..**
01A810: 61 6C 6C 20 6F 74 68 65 72 20 6D 6F 64 75 6C 65 all other module
01A820: 73 20 61 72 65 20 6C 6F 61 64 65 64 20 62 65 66 s are loaded bef
01A830: 6F 72 65 20 6C 6F 61 64 69 6E 67 20 74 68 65 20 ore loading the
01A840: 74 65 72 6D 69 6E 61 6C 20 6D 6F 64 75 6C 65 2E terminal module.
01A850: 0D 0A 2A 2A 0D 0A 2A 2A 20 54 68 65 20 61 62 73 ..**..** The abs
01A860: 65 6E 63 65 20 6F 66 20 61 6E 20 65 78 74 65 6E ence of an exten
01A870: 73 69 6F 6E 2C 20 6F 72 20 61 20 2E 52 45 4C 20 sion, or a .REL
01A880: 65 78 74 65 6E 73 69 6F 6E 2C 20 69 64 65 6E 74 extension, ident
01A890: 69 66 69 65 73 20 61 20 6D 6F 64 75 6C 65 3B 0D ifies a module;.
01A8A0: 0A 2A 2A 20 77 68 65 72 65 61 73 2C 20 61 20 2E .** whereas, a .
01A8B0: 4C 49 42 20 65 78 74 65 6E 73 69 6F 6E 20 69 64 LIB extension id
01A8C0: 65 6E 74 69 66 69 65 73 20 61 20 6C 69 62 72 61 entifies a libra
01A8D0: 72 79 2E 20 20 49 66 20 6E 65 63 65 73 73 61 72 ry. If necessar
01A8E0: 79 2C 20 61 0D 0A 2A 2A 20 6C 69 62 72 61 72 79 y, a..** library
01A8F0: 20 69 73 20 72 65 73 63 61 6E 6E 65 64 20 74 6F is rescanned to
01A900: 20 72 65 73 6F 6C 76 65 20 62 61 63 6B 77 61 72 resolve backwar
01A910: 64 20 65 78 74 65 72 6E 61 6C 20 72 65 66 65 72 d external refer
01A920: 65 6E 63 65 73 20 62 65 74 77 65 65 6E 0D 0A 2A ences between..*
01A930: 2A 20 6D 6F 64 75 6C 65 73 20 77 69 74 68 69 6E * modules within
01A940: 20 74 68 65 20 6C 69 62 72 61 72 79 2E 20 4D 6F the library. Mo
01A950: 64 75 6C 65 20 66 69 6C 65 73 20 61 6E 64 20 6C dule files and l
01A960: 69 62 72 61 72 69 65 73 20 61 72 65 20 70 72 6F ibraries are pro
01A970: 63 65 73 73 65 64 0D 0A 2A 2A 20 69 6E 20 74 68 cessed..** in th
01A980: 65 20 6F 72 64 65 72 20 69 6E 20 77 68 69 63 68 e order in which
01A990: 20 74 68 65 79 20 6F 63 63 75 72 20 69 6E 20 74 they occur in t
01A9A0: 68 65 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 2E he command line.
01A9B0: 0D 0A 2A 2A 0D 0A 2A 2A 20 44 72 69 76 65 20 44 ..**..** Drive D
01A9C0: 65 73 69 67 6E 61 74 6F 72 73 20 28 65 2E 67 2E esignators (e.g.
01A9D0: 20 42 3A 29 3A 0D 0A 2A 2A 20 20 20 20 2D 20 61 B:):..** - a
01A9E0: 6C 6C 6F 77 65 64 20 77 69 74 68 20 6D 6F 64 75 llowed with modu
01A9F0: 6C 65 20 61 6E 64 20 6C 69 62 72 61 72 79 20 6E le and library n
01AA00: 61 62 6C 65 20 65 6E 74 72 79 20 2A 2F 0D 0A 23 able entry */..#
01AA10: 64 65 66 69 6E 65 20 48 49 47 48 20 31 32 37 09 define HIGH 127.
01AA20: 09 2F 2A 20 68 69 67 68 2D 76 61 6C 75 65 20 62 ./* high-value b
01AA30: 79 74 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 yte */..#define
01AA40: 43 55 53 48 49 4F 4E 20 20 28 32 30 30 2A 53 53 CUSHION (200*SS
01AA50: 5A 29 09 2F 2A 20 72 65 73 65 72 76 65 64 20 66 Z)./* reserved f
01AA60: 6F 72 20 74 61 62 6C 65 20 61 74 20 6F 76 65 72 or table at over
01AA70: 66 6C 6F 77 20 70 6F 69 6E 74 20 2A 2F 0D 0A 63 flow point */..c
01AA80: 68 61 72 20 68 69 67 68 5B 5D 20 3D 20 7B 48 49 har high[] = {HI
01AA90: 47 48 2C 30 7D 3B 09 09 2F 2A 20 68 69 67 68 2D GH,0};../* high-
01AAA0: 76 61 6C 75 65 20 73 79 6D 62 6F 6C 20 2A 2F 0D value symbol */.
01AAB0: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 67 6C 6F 62 61 6C .../*..** global
01AAC0: 20 76 61 72 69 61 62 6C 65 73 0D 0A 2A 2F 0D 0A variables..*/..
01AAD0: 63 68 61 72 0D 0A 20 2A 78 72 2C 09 09 09 09 2F char.. *xr,..../
01AAE0: 2A 20 65 78 74 65 72 6E 61 6C 20 72 65 66 65 72 * external refer
01AAF0: 65 6E 63 65 20 2A 2F 0D 0A 20 2A 6E 78 74 2C 09 ence */.. *nxt,.
01AB00: 09 09 09 2F 2A 20 6E 65 78 74 20 69 6E 20 65 78 .../* next in ex
01AB10: 74 20 72 65 66 20 63 68 61 69 6E 20 2A 2F 0D 0A t ref chain */..
01AB20: 20 2A 65 70 2C 09 09 09 09 2F 2A 20 65 6E 74 72 *ep,..../* entr
01AB30: 79 20 70 6F 69 6E 74 20 2A 2F 0D 0A 20 2A 62 75 y point */.. *bu
01AB40: 66 66 65 72 2C 09 09 09 2F 2A 20 62 65 67 69 6E ffer,.../* begin
01AB50: 6E 69 6E 67 20 6F 66 20 63 6F 64 65 20 62 75 66 ning of code buf
01AB60: 66 65 72 20 2A 2F 0D 0A 20 2A 62 6E 65 78 74 2C fer */.. *bnext,
01AB70: 09 09 09 2F 2A 20 6E 65 78 74 20 62 79 74 65 20 .../* next byte
01AB80: 69 6E 20 63 6F 64 65 20 62 75 66 66 65 72 20 2A in code buffer *
01AB90: 2F 0D 0A 20 2A 73 66 72 65 65 2C 09 09 09 2F 2A /.. *sfree,.../*
01ABA0: 20 68 65 61 64 20 6F 66 20 66 72 65 65 64 20 65 head of freed e
01ABB0: 6E 74 72 79 20 6C 69 73 74 20 2A 2F 0D 0A 20 2A ntry list */.. *
01ABC0: 73 6E 65 78 74 2C 09 09 09 2F 2A 20 6E 65 78 74 snext,.../* next
01ABD0: 20 73 79 6D 62 6F 6C 20 74 61 62 6C 65 20 65 6E symbol table en
01ABE0: 74 72 79 20 2A 2F 0D 0A 20 2A 63 6C 6F 63 2C 09 try */.. *cloc,.
01ABF0: 09 09 09 2F 2A 20 6C 6F 63 61 74 69 6F 6E 20 63 .../* location c
01AC00: 61 6D 65 73 0D 0A 2A 2A 20 20 20 20 2D 20 70 72 ames..** - pr
01AC10: 6F 67 72 61 6D 20 64 72 69 76 65 20 64 65 73 69 ogram drive desi
01AC20: 67 6E 61 74 6F 72 20 6C 6F 63 61 74 65 73 20 74 gnator locates t
01AC30: 68 65 20 69 6E 70 75 74 20 2E 52 45 4C 20 66 69 he input .REL fi
01AC40: 6C 65 0D 0A 2A 2A 20 20 20 20 2D 20 6F 75 74 70 le..** - outp
01AC50: 75 74 20 67 6F 65 73 20 74 6F 20 74 68 65 20 64 ut goes to the d
01AC60: 65 66 61 75 6C 74 20 64 72 69 76 65 0D 0A 2A 2A efault drive..**
01AC70: 0D 0A 2A 2A 20 46 69 6C 65 6E 61 6D 65 20 45 78 ..** Filename Ex
01AC80: 74 65 6E 73 69 6F 6E 73 3A 0D 0A 2A 2A 20 20 20 tensions:..**
01AC90: 20 2D 20 6D 75 73 74 20 73 70 65 63 69 66 79 20 - must specify
01ACA0: 2E 4C 49 42 20 77 69 74 68 20 6C 69 62 72 61 72 .LIB with librar
01ACB0: 79 20 6E 61 6D 65 0D 0A 2A 2A 20 20 20 20 2D 20 y name..** -
01ACC0: 73 74 61 6E 64 61 72 64 20 65 78 74 65 6E 73 69 standard extensi
01ACD0: 6F 6E 73 20 61 72 65 3A 0D 0A 2A 2A 0D 0A 2A 2A ons are:..**..**
01ACE0: 20 20 20 20 20 2E 52 45 4C 20 3D 20 72 65 6C 6F .REL = relo
01ACF0: 63 61 74 61 62 6C 65 20 6F 62 6A 65 63 74 20 6D catable object m
01AD00: 6F 64 75 6C 65 0D 0A 2A 2A 20 20 20 20 20 2E 4C odule..** .L
01AD10: 49 42 20 3D 20 6C 69 62 72 61 72 79 20 6F 66 20 IB = library of
01AD20: 6F 62 6A 65 63 74 20 6D 6F 64 75 6C 65 73 0D 0A object modules..
01AD30: 2A 2A 20 20 20 20 20 2E 4E 44 58 20 3D 20 69 6E ** .NDX = in
01AD40: 64 65 78 20 74 6F 20 6C 69 62 72 61 72 79 20 28 dex to library (
01AD50: 6E 6F 74 20 75 73 65 72 20 73 70 65 63 69 66 69 not user specifi
01AD60: 65 64 29 0D 0A 2A 2A 20 20 20 20 20 2E 43 4F 4D ed)..** .COM
01AD70: 20 3D 20 43 50 2F 4D 20 63 6F 6D 6D 61 6E 64 20 = CP/M command
01AD80: 66 69 6C 65 20 28 64 65 66 61 75 6C 74 20 6F 75 file (default ou
01AD90: 74 70 75 74 29 0D 0A 2A 2A 20 20 20 20 20 2E 4C tput)..** .L
01ADA0: 47 4F 20 3D 20 6C 6F 61 64 2D 61 6E 64 2D 67 6F GO = load-and-go
01ADB0: 20 66 69 6C 65 20 28 2D 47 23 20 6F 75 74 70 75 file (-G# outpu
01ADC0: 74 29 0D 0A 2A 2A 20 20 20 20 20 2E 4F 24 20 20 t)..** .O$
01ADD0: 3D 20 74 65 6D 70 6F 72 61 72 79 20 6F 76 65 72 = temporary over
01ADE0: 66 6C 6F 77 20 66 69 6C 65 0D 0A 2A 2A 20 20 20 flow file..**
01ADF0: 20 20 2E 52 24 20 20 3D 20 74 65 6D 70 6F 72 61 .R$ = tempora
01AE00: 6F 75 6E 74 65 72 20 2A 2F 0D 0A 20 2A 63 6D 6F ounter */.. *cmo
01AE10: 64 2C 09 09 09 09 2F 2A 20 6D 6F 64 75 6C 65 20 d,..../* module
01AE20: 6C 6F 63 61 74 69 6F 6E 20 2A 2F 0D 0A 20 2A 63 location */.. *c
01AE30: 62 61 73 65 2C 09 09 09 2F 2A 20 62 61 73 65 20 base,.../* base
01AE40: 61 64 64 72 65 73 73 20 2A 2F 0D 0A 20 2A 63 73 address */.. *cs
01AE50: 69 7A 65 2C 09 09 09 2F 2A 20 70 72 6F 67 72 61 ize,.../* progra
01AE60: 6D 20 73 69 7A 65 20 28 66 61 6B 65 20 75 6E 73 m size (fake uns
01AE70: 69 67 6E 65 64 29 20 2A 2F 0D 0A 20 2A 67 6F 6C igned) */.. *gol
01AE80: 6F 63 2C 09 09 09 2F 2A 20 67 6F 20 6C 6F 63 61 oc,.../* go loca
01AE90: 74 69 6F 6E 20 2A 2F 0D 0A 20 2A 63 64 69 73 6B tion */.. *cdisk
01AEA0: 2C 09 09 09 2F 2A 20 64 69 73 6B 20 6F 76 65 72 ,.../* disk over
01AEB0: 66 6C 6F 77 20 6C 6F 63 61 74 69 6F 6E 20 2A 2F flow location */
01AEC0: 0D 0A 20 2A 65 70 66 69 72 73 74 2C 09 09 09 2F .. *epfirst,.../
01AED0: 2A 20 66 69 72 73 74 20 65 6E 74 72 79 20 70 6F * first entry po
01AEE0: 69 6E 74 20 2A 2F 0D 0A 20 2A 65 70 70 72 65 76 int */.. *epprev
01AEF0: 2C 09 09 09 2F 2A 20 70 72 65 76 69 6F 75 73 20 ,.../* previous
01AF00: 65 6E 74 72 79 20 70 6F 69 6E 74 20 2A 2F 0D 0A entry point */..
01AF10: 20 2A 65 70 6E 65 78 74 2C 09 09 09 2F 2A 20 6E *epnext,.../* n
01AF20: 65 78 74 20 65 6E 74 72 79 20 70 6F 69 6E 74 20 ext entry point
01AF30: 2A 2F 0D 0A 20 2A 78 72 66 69 72 73 74 2C 09 09 */.. *xrfirst,..
01AF40: 09 2F 2A 20 66 69 72 73 74 20 65 78 74 65 72 6E ./* first extern
01AF50: 61 6C 20 72 65 66 65 72 65 6E 63 65 20 2A 2F 0D al reference */.
01AF60: 0A 20 2A 78 72 70 72 65 76 2C 09 09 09 2F 2A 20 . *xrprev,.../*
01AF70: 70 72 65 76 69 6F 75 73 20 65 78 74 65 72 6E 61 previous externa
01AF80: 6C 20 72 65 66 65 72 65 6E 63 65 20 2A 2F 0D 0A l reference */..
01AF90: 20 2A 78 72 6E 65 78 74 2C 09 09 09 2F 2A 20 6E *xrnext,.../* n
01AFA0: 65 78 74 20 65 78 74 65 72 6E 61 6C 20 72 65 66 ext external ref
01AFB0: 65 72 65 6E 63 65 20 2A 2F 0D 0A 20 20 6D 6F 64 erence */.. mod
01AFC0: 6E 61 6D 65 5B 4D 41 58 53 59 4D 2B 31 5D 2C 09 name[MAXSYM+1],.
01AFD0: 09 2F 2A 20 6E 61 6D 65 20 6F 66 20 63 75 72 72 ./* name of curr
01AFE0: 65 6E 74 20 6D 6F 64 75 6C 65 20 2A 2F 0D 0A 20 ent module */..
01AFF0: 20 69 6E 66 6E 20 20 20 5B 4E 41 4D 45 53 49 5A infn [NAMESIZ
01B000: 72 79 20 72 65 66 65 72 65 6E 63 65 20 66 69 6C ry reference fil
01B010: 65 0D 0A 2A 2A 0D 0A 2A 2A 20 45 6E 74 65 72 20 e..**..** Enter
01B020: 63 6F 6E 74 72 6F 6C 2D 53 20 74 6F 20 70 61 75 control-S to pau
01B030: 73 65 20 61 6E 64 20 63 6F 6E 74 72 6F 6C 2D 43 se and control-C
01B040: 20 74 6F 20 61 62 6F 72 74 2E 0D 0A 2A 2A 0D 0A to abort...**..
01B050: 2A 2A 20 4E 4F 54 45 3A 20 43 6F 6D 70 69 6C 65 ** NOTE: Compile
01B060: 20 6F 6E 6C 79 20 77 69 74 68 20 53 6D 61 6C 6C only with Small
01B070: 2D 43 20 32 2E 31 20 28 65 64 69 74 20 6C 65 76 -C 2.1 (edit lev
01B080: 65 6C 20 36 33 29 20 6F 72 20 6C 61 74 65 72 2E el 63) or later.
01B090: 0D 0A 2A 2A 20 45 64 69 74 20 36 33 20 66 69 78 ..** Edit 63 fix
01B0A0: 65 73 20 43 53 59 53 4C 49 42 20 73 6F 20 74 68 es CSYSLIB so th
01B0B0: 61 74 20 77 68 65 6E 20 69 74 20 6F 76 65 72 66 at when it overf
01B0C0: 6C 6F 77 73 20 61 20 62 75 66 66 65 72 20 77 68 lows a buffer wh
01B0D0: 69 6C 65 0D 0A 2A 2A 20 77 72 69 74 69 6E 67 20 ile..** writing
01B0E0: 69 6E 74 6F 20 61 20 66 69 6C 65 20 69 74 20 77 into a file it w
01B0F0: 69 6C 6C 20 6E 6F 20 6C 6F 6E 67 65 72 20 61 73 ill no longer as
01B100: 73 75 6D 65 20 74 68 61 74 20 69 74 20 69 73 20 sume that it is
01B110: 61 74 20 74 68 65 0D 0A 2A 2A 20 65 6E 64 20 6F at the..** end o
01B120: 66 20 74 68 65 20 66 69 6C 65 2E 20 20 54 68 69 f the file. Thi
01B130: 73 20 70 72 65 76 65 6E 74 73 20 69 74 20 66 72 s prevents it fr
01B140: 6F 6D 20 70 61 64 64 69 6E 67 20 61 20 73 65 63 om padding a sec
01B150: 74 6F 72 20 77 69 74 68 0D 0A 2A 2A 20 31 41 20 tor with..** 1A
01B160: 28 68 65 78 29 20 69 6E 20 74 68 65 20 6D 69 64 (hex) in the mid
01B170: 64 6C 65 20 6F 66 20 61 20 66 69 6C 65 20 77 68 dle of a file wh
01B180: 65 6E 20 72 61 6E 64 6F 6D 20 61 63 63 65 73 73 en random access
01B190: 20 69 73 20 62 65 69 6E 67 20 75 73 65 64 2E 0D is being used..
01B1A0: 0A 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 3C 73 .*/..#include <s
01B1B0: 74 64 69 6F 2E 68 3E 0D 0A 23 69 6E 63 6C 75 64 tdio.h>..#includ
01B1C0: 65 20 22 6E 6F 74 69 63 65 2E 68 22 0D 0A 23 69 e "notice.h"..#i
01B1D0: 6E 63 6C 75 64 65 20 22 72 65 6C 2E 68 22 0D 0A nclude "rel.h"..
01B1E0: 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 44 45 42 55 ..#define NODEBU
01B1F0: 47 09 09 09 2F 2A 20 64 6F 6E 27 74 20 63 6F 6D G.../* don't com
01B200: 45 5D 2C 09 09 2F 2A 20 69 6E 70 75 74 20 66 69 E],../* input fi
01B210: 6C 65 6E 61 6D 65 20 2A 2F 0D 0A 20 20 6E 64 78 lename */.. ndx
01B220: 66 6E 20 20 5B 4E 41 4D 45 53 49 5A 45 5D 2C 09 fn [NAMESIZE],.
01B230: 09 2F 2A 20 69 6E 64 65 78 20 66 69 6C 65 6E 61 ./* index filena
01B240: 6D 65 20 2A 2F 0D 0A 20 20 74 6D 66 6E 20 20 20 me */.. tmfn
01B250: 5B 4E 41 4D 45 53 49 5A 45 5D 2C 09 09 2F 2A 20 [NAMESIZE],../*
01B260: 74 65 72 6D 69 6E 61 6C 2D 6D 6F 64 75 6C 65 20 terminal-module
01B270: 6C 69 62 72 61 72 79 20 6E 61 6D 65 20 2A 2F 0D library name */.
01B280: 0A 20 20 63 73 66 6E 20 20 20 5B 4E 41 4D 45 53 . csfn [NAMES
01B290: 49 5A 45 5D 2C 09 09 2F 2A 20 63 6F 64 65 20 73 IZE],../* code s
01B2A0: 65 67 20 66 69 6C 65 6E 61 6D 65 20 2A 2F 0D 0A eg filename */..
01B2B0: 20 20 63 72 66 6E 20 20 20 5B 4E 41 4D 45 53 49 crfn [NAMESI
01B2C0: 5A 45 5D 2C 09 09 2F 2A 20 63 6F 64 65 20 72 65 ZE],../* code re
01B2D0: 6C 20 66 69 6C 65 6E 61 6D 65 20 2A 2F 0D 0A 20 l filename */..
01B2E0: 20 6F 75 74 66 6E 20 20 5B 4E 41 4D 45 53 49 5A outfn [NAMESIZ
01B2F0: 45 5D 3B 09 09 2F 2A 20 6F 75 74 70 75 74 20 66 E];../* output f
01B300: 69 6C 65 6E 61 6D 65 20 2A 2F 0D 0A 0D 0A 69 6E ilename */....in
01B310: 74 0D 0A 20 20 6C 67 6F 2C 09 09 2F 2A 20 6C 6F t.. lgo,../* lo
01B320: 61 64 2D 61 6E 64 2D 67 6F 20 66 6F 72 6D 61 74 ad-and-go format
01B330: 3F 20 2A 2F 0D 0A 20 20 6D 6F 6E 69 74 6F 72 2C ? */.. monitor,
01B340: 09 2F 2A 20 6D 6F 6E 69 74 6F 72 20 61 63 74 69 ./* monitor acti
01B350: 76 69 74 79 3F 20 2A 2F 0D 0A 20 20 69 6E 73 74 vity? */.. inst
01B360: 72 2C 09 2F 2A 20 69 6E 73 74 72 75 63 74 69 6F r,./* instructio
01B370: 6E 20 74 6F 20 70 6C 61 6E 74 20 61 74 20 30 30 n to plant at 00
01B380: 30 30 20 2A 2F 0D 0A 20 20 61 64 64 72 2C 09 09 00 */.. addr,..
01B390: 2F 2A 20 73 74 61 72 74 20 61 64 64 72 65 73 73 /* start address
01B3A0: 20 2A 2F 0D 0A 20 20 72 65 66 2C 09 09 2F 2A 20 */.. ref,../*
01B3B0: 72 65 66 65 72 65 6E 63 65 20 74 6F 20 70 72 6F reference to pro
01B3C0: 67 72 61 6D 20 72 65 6C 61 74 69 76 65 20 69 74 gram relative it
01B3D0: 65 6D 20 2A 2F 0D 0A 20 20 62 69 67 2C 09 09 2F em */.. big,../
01B3E0: 2A 20 6C 69 6E 6B 69 6E 67 20 61 20 62 69 67 20 * linking a big
01B3F0: 70 72 6F 67 72 61 6D 3F 20 2A 2F 0D 0A 20 20 78 program? */.. x
01B400: 70 69 6C 65 20 64 65 62 75 67 20 64 69 73 70 6C pile debug displ
01B410: 61 79 73 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 ays */..#define
01B420: 4E 4F 43 43 41 52 47 43 09 09 2F 2A 20 64 6F 6E NOCCARGC../* don
01B430: 27 74 20 70 61 73 73 20 61 72 67 20 63 6F 75 6E 't pass arg coun
01B440: 74 73 20 74 6F 20 66 75 6E 63 74 69 6F 6E 73 20 ts to functions
01B450: 2A 2F 0D 0A 0D 0A 23 64 65 66 69 6E 65 20 4E 41 */....#define NA
01B460: 4D 45 53 49 5A 45 20 20 20 31 35 0D 0A 23 64 65 MESIZE 15..#de
01B470: 66 69 6E 65 20 4D 41 58 46 49 4C 20 20 20 20 20 fine MAXFIL
01B480: 31 30 0D 0A 23 64 65 66 69 6E 65 20 53 54 41 43 10..#define STAC
01B490: 4B 20 20 20 20 20 35 31 32 09 09 2F 2A 20 61 6C K 512../* al
01B4A0: 6C 6F 77 20 66 6F 72 20 73 74 61 63 6B 20 73 70 low for stack sp
01B4B0: 61 63 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 ace */..#define
01B4C0: 41 55 58 42 55 46 20 20 20 32 30 34 38 09 09 2F AUXBUF 2048../
01B4D0: 2A 20 61 75 78 20 62 75 66 66 65 72 20 66 6F 72 * aux buffer for
01B4E0: 20 72 65 66 65 72 65 6E 63 65 20 66 69 6C 65 20 reference file
01B4F0: 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4D 41 58 4F */..#define MAXO
01B500: 50 45 4E 20 20 20 20 20 34 09 09 2F 2A 20 6D 61 PEN 4../* ma
01B510: 78 69 6D 75 6D 20 66 69 6C 65 73 20 6F 70 65 6E ximum files open
01B520: 65 64 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4F ed */..#define O
01B530: 48 44 4F 50 45 4E 20 20 20 31 36 34 09 09 2F 2A HDOPEN 164../*
01B540: 20 6D 65 6D 65 72 79 20 6F 76 65 72 68 65 61 64 memery overhead
01B550: 20 70 65 72 20 6F 70 65 6E 20 66 69 6C 65 20 2A per open file *
01B560: 2F 0D 0A 23 64 65 66 69 6E 65 20 43 4F 4D 42 41 /..#define COMBA
01B570: 53 45 20 20 20 32 35 39 09 09 2F 2A 20 30 31 30 SE 259../* 010
01B580: 30 48 20 2B 20 33 20 2A 2F 0D 0A 23 64 65 66 69 0H + 3 */..#defi
01B590: 6E 65 20 52 45 54 20 20 20 20 20 20 20 32 30 31 ne RET 201
01B5A0: 09 09 2F 2A 20 52 45 54 20 69 6E 73 74 72 75 63 ../* RET instruc
01B5B0: 74 69 6F 6E 20 28 30 43 39 48 29 20 2A 2F 0D 0A tion (0C9H) */..
01B5C0: 23 64 65 66 69 6E 65 20 4A 4D 50 20 20 20 20 20 #define JMP
01B5D0: 20 20 31 39 35 09 09 2F 2A 20 4A 4D 50 20 69 6E 195../* JMP in
01B5E0: 73 74 72 75 63 74 69 6F 6E 20 28 30 43 33 48 29 struction (0C3H)
01B5F0: 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 52 45 53 */..#define RES
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: 72 70 6C 75 73 2C 09 2F 2A 20 76 61 6C 75 65 20 rplus,./* value
01B710: 6F 66 20 6F 66 66 73 65 74 20 66 6F 72 20 6E 65 of offset for ne
01B720: 78 74 20 65 78 74 20 72 65 66 20 2A 2F 0D 0A 20 xt ext ref */..
01B730: 20 78 72 70 66 6C 61 67 3D 58 52 50 4C 55 53 2C xrpflag=XRPLUS,
01B740: 09 2F 2A 20 76 61 6C 75 65 20 6F 66 20 78 72 70 ./* value of xrp
01B750: 6C 75 73 20 66 6C 61 67 20 2A 2F 0D 0A 20 20 6E lus flag */.. n
01B760: 64 78 66 64 2C 09 2F 2A 20 69 6E 64 65 78 20 66 dxfd,./* index f
01B770: 64 20 2A 2F 0D 0A 20 20 69 6E 62 6C 6F 63 6B 2C d */.. inblock,
01B780: 09 2F 2A 20 62 6C 6F 63 6B 20 6F 66 20 6E 65 78 ./* block of nex
01B790: 74 20 6C 69 62 72 61 72 79 20 6D 65 6D 62 65 72 t library member
01B7A0: 20 2A 2F 0D 0A 20 20 69 6E 62 79 74 65 2C 09 2F */.. inbyte,./
01B7B0: 2A 20 62 79 74 65 20 69 6E 20 62 6C 6F 63 6B 20 * byte in block
01B7C0: 6F 66 20 6E 65 78 74 20 6C 69 62 72 61 72 79 20 of next library
01B7D0: 6D 65 6D 62 65 72 20 2A 2F 0D 0A 20 20 74 6D 62 member */.. tmb
01B7E0: 6C 6F 63 6B 2C 09 2F 2A 20 62 6C 6F 63 6B 20 6F lock,./* block o
01B7F0: 66 20 74 65 72 6D 69 6E 61 6C 20 6D 6F 64 75 6C f terminal modul
01B800: 65 20 69 6E 20 74 6D 66 6E 20 2A 2F 0D 0A 20 20 e in tmfn */..
01B810: 74 6D 62 79 74 65 2C 09 2F 2A 20 62 79 74 65 20 tmbyte,./* byte
01B820: 6F 66 20 74 65 72 6D 69 6E 61 6C 20 6D 6F 64 75 of terminal modu
01B830: 6C 65 20 69 6E 20 74 6D 62 6C 6F 63 6B 20 2A 2F le in tmblock */
01B840: 0D 0A 20 20 63 73 66 64 2C 09 09 2F 2A 20 63 6F .. csfd,../* co
01B850: 64 65 20 73 65 67 6D 65 6E 74 20 66 64 20 2A 2F de segment fd */
01B860: 0D 0A 20 20 63 72 66 64 2C 09 09 2F 2A 20 63 6F .. crfd,../* co
01B870: 64 65 20 72 65 6C 61 74 69 76 65 20 69 6E 64 65 de relative inde
01B880: 78 20 66 64 20 2A 2F 0D 0A 20 20 6F 75 74 66 64 x fd */.. outfd
01B890: 3B 09 2F 2A 20 6F 75 74 70 75 74 20 66 64 20 2A ;./* output fd *
01B8A0: 2F 0D 0A 0D 0A 65 78 74 65 72 6E 20 69 6E 74 20 /....extern int
01B8B0: 55 63 68 72 70 6F 73 5B 5D 3B 09 09 2F 2A 20 6C Uchrpos[];../* l
01B8C0: 69 76 65 73 20 69 6E 20 43 53 59 53 4C 49 42 20 ives in CSYSLIB
01B8D0: 2A 2F 0D 0A 0D 0A 6D 61 69 6E 28 61 72 67 63 2C */....main(argc,
01B8E0: 61 72 67 76 29 20 69 6E 74 20 61 72 67 63 2C 20 argv) int argc,
01B8F0: 61 72 67 76 5B 5D 3B 20 7B 0D 0A 20 20 66 70 75 argv[]; {.. fpu
01B900: 20 20 20 69 66 28 28 69 20 3D 20 73 74 72 63 6D if((i = strcm
01B910: 70 28 73 79 6D 62 6F 6C 2C 20 78 72 6E 65 78 74 p(symbol, xrnext
01B920: 20 2B 20 53 59 4D 29 29 20 3C 20 30 29 20 72 65 + SYM)) < 0) re
01B930: 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 20 20 turn (NO);..
01B940: 69 66 28 69 20 3D 3D 20 30 29 20 20 72 65 74 75 if(i == 0) retu
01B950: 72 6E 20 28 59 45 53 29 3B 0D 0A 20 20 20 20 78 rn (YES);.. x
01B960: 72 6E 65 78 74 20 3D 20 67 65 74 69 6E 74 28 78 rnext = getint(x
01B970: 72 6E 65 78 74 29 3B 0D 0A 20 20 20 20 7D 0D 0A rnext);.. }..
01B980: 20 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A return (NO);..
01B990: 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6C 69 }..../*..** li
01B9A0: 6E 6B 20 65 78 74 65 72 6E 61 6C 20 72 65 66 65 nk external refe
01B9B0: 72 65 6E 63 65 73 20 74 6F 20 65 6E 74 72 79 20 rences to entry
01B9C0: 70 6F 69 6E 74 73 0D 0A 2A 2F 0D 0A 6C 69 6E 6B points..*/..link
01B9D0: 28 29 20 7B 0D 0A 20 20 69 6E 74 20 63 73 70 67 () {.. int cspg
01B9E0: 2C 20 63 73 63 68 3B 0D 0A 20 20 63 73 70 67 20 , csch;.. cspg
01B9F0: 3D 20 63 74 65 6C 6C 28 63 73 66 64 29 3B 09 09 = ctell(csfd);..
01BA00: 09 2F 2A 20 72 65 6D 65 6D 62 65 72 20 74 65 6D ./* remember tem
01BA10: 70 20 66 69 6C 65 20 70 6F 73 69 74 69 6F 6E 20 p file position
01BA20: 2A 2F 0D 0A 20 20 63 73 63 68 20 3D 20 63 74 65 */.. csch = cte
01BA30: 6C 6C 63 28 63 73 66 64 29 3B 0D 0A 20 20 78 72 llc(csfd);.. xr
01BA40: 6E 65 78 74 20 3D 20 67 65 74 69 6E 74 28 78 72 next = getint(xr
01BA50: 70 72 65 76 20 3D 20 78 72 66 69 72 73 74 29 3B prev = xrfirst);
01BA60: 09 2F 2A 20 66 69 72 73 74 20 65 78 74 65 72 6E ./* first extern
01BA70: 61 6C 20 72 65 66 65 72 65 6E 63 65 20 2A 2F 0D al reference */.
01BA80: 0A 20 20 65 70 6E 65 78 74 20 3D 20 67 65 74 69 . epnext = geti
01BA90: 6E 74 28 65 70 66 69 72 73 74 29 3B 09 09 2F 2A nt(epfirst);../*
01BAA0: 20 66 69 72 73 74 20 65 6E 74 72 79 20 70 6F 69 first entry poi
01BAB0: 6E 74 20 2A 2F 0D 0A 20 20 77 68 69 6C 65 28 59 nt */.. while(Y
01BAC0: 45 53 29 20 7B 0D 0A 20 20 20 20 69 66 28 73 74 ES) {.. if(st
01BAD0: 72 63 6D 70 28 78 72 6E 65 78 74 20 2B 20 53 59 rcmp(xrnext + SY
01BAE0: 4D 2C 20 65 70 6E 65 78 74 20 2B 20 53 59 4D 29 M, epnext + SYM)
01BAF0: 20 3E 20 30 29 20 7B 09 2F 2A 20 78 72 20 3E 20 > 0) {./* xr >
01BB00: 74 73 28 22 53 6D 61 6C 6C 2D 4D 61 63 20 4C 69 ts("Small-Mac Li
01BB10: 6E 6B 61 67 65 20 45 64 69 74 6F 72 2C 20 22 2C nkage Editor, ",
01BB20: 20 73 74 64 65 72 72 29 3B 20 66 70 75 74 73 28 stderr); fputs(
01BB30: 56 45 52 53 49 4F 4E 2C 20 73 74 64 65 72 72 29 VERSION, stderr)
01BB40: 3B 0D 0A 20 20 66 70 75 74 73 28 43 52 49 47 48 ;.. fputs(CRIGH
01BB50: 54 31 2C 20 73 74 64 65 72 72 29 3B 0D 0A 20 20 T1, stderr);..
01BB60: 67 65 74 73 77 28 61 72 67 63 2C 20 61 72 67 76 getsw(argc, argv
01BB70: 29 3B 09 09 2F 2A 20 66 65 74 63 68 20 61 6E 64 );../* fetch and
01BB80: 20 72 65 6D 65 6D 62 65 72 20 73 77 69 74 63 68 remember switch
01BB90: 65 73 20 2A 2F 0D 0A 20 20 67 65 74 6D 65 6D 28 es */.. getmem(
01BBA0: 29 3B 09 09 09 2F 2A 20 61 63 71 75 69 72 65 20 );.../* acquire
01BBB0: 6D 61 78 69 6D 75 6D 20 6D 65 6D 6F 72 79 20 62 maximum memory b
01BBC0: 75 66 66 65 72 20 2A 2F 0D 0A 20 20 70 68 61 73 uffer */.. phas
01BBD0: 65 31 28 61 72 67 63 2C 20 61 72 67 76 29 3B 09 e1(argc, argv);.
01BBE0: 09 2F 2A 20 6C 6F 61 64 20 61 6E 64 20 6C 69 6E ./* load and lin
01BBF0: 6B 20 2A 2F 0D 0A 20 20 69 66 28 21 6F 6B 61 79 k */.. if(!okay
01BC00: 28 29 29 20 61 62 6F 72 74 28 37 29 3B 09 09 2F ()) abort(7);../
01BC10: 2A 20 71 75 69 74 20 65 61 72 6C 79 20 2A 2F 0D * quit early */.
01BC20: 0A 20 20 70 68 61 73 65 32 28 29 3B 09 09 09 2F . phase2();.../
01BC30: 2A 20 67 65 6E 65 72 61 74 65 20 66 69 6E 61 6C * generate final
01BC40: 20 6F 75 74 70 75 74 20 2A 2F 0D 0A 20 20 7D 0D output */.. }.
01BC50: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 67 65 74 20 61 73 .../*..** get as
01BC60: 20 6D 75 63 68 20 6D 65 6D 6F 72 79 20 61 73 20 much memory as
01BC70: 70 6F 73 73 69 62 6C 65 20 66 6F 72 20 73 79 6D possible for sym
01BC80: 62 6F 6C 20 74 61 62 6C 65 0D 0A 2A 2F 0D 0A 67 bol table..*/..g
01BC90: 65 74 6D 65 6D 28 29 20 7B 0D 0A 20 20 63 68 61 etmem() {.. cha
01BCA0: 72 20 73 7A 5B 38 5D 3B 0D 0A 20 20 69 6E 74 20 r sz[8];.. int
01BCB0: 6D 61 78 3B 0D 0A 20 20 6D 61 78 20 3D 20 61 76 max;.. max = av
01BCC0: 61 69 6C 28 59 45 53 29 3B 09 09 09 2F 2A 20 68 ail(YES);.../* h
01BCD0: 6F 77 20 6D 75 63 68 20 61 76 61 69 6C 61 62 6C ow much availabl
01BCE0: 65 3F 20 2A 2F 0D 0A 20 20 6D 61 78 20 2D 3D 20 e? */.. max -=
01BCF0: 53 54 41 43 4B 20 2B 20 41 55 58 42 55 46 20 2B STACK + AUXBUF +
01BD00: 65 70 20 2A 2F 0D 0A 20 20 20 20 20 20 65 70 6E ep */.. epn
01BD10: 65 78 74 20 3D 20 67 65 74 69 6E 74 28 65 70 6E ext = getint(epn
01BD20: 65 78 74 29 3B 0D 0A 20 20 20 20 20 20 63 6F 6E ext);.. con
01BD30: 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 20 7D 0D tinue;.. }.
01BD40: 0A 20 20 20 20 69 66 28 73 74 72 63 6D 70 28 78 . if(strcmp(x
01BD50: 72 6E 65 78 74 20 2B 20 53 59 4D 2C 20 65 70 6E rnext + SYM, epn
01BD60: 65 78 74 20 2B 20 53 59 4D 29 20 3C 20 30 29 20 ext + SYM) < 0)
01BD70: 7B 09 2F 2A 20 78 72 20 3C 20 65 70 20 2A 2F 0D {./* xr < ep */.
01BD80: 0A 20 20 20 20 20 20 78 72 6E 65 78 74 20 3D 20 . xrnext =
01BD90: 67 65 74 69 6E 74 28 78 72 70 72 65 76 20 3D 20 getint(xrprev =
01BDA0: 78 72 6E 65 78 74 29 3B 0D 0A 20 20 20 20 20 20 xrnext);..
01BDB0: 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 continue;..
01BDC0: 20 7D 0D 0A 20 20 20 20 69 66 28 2A 28 78 72 6E }.. if(*(xrn
01BDD0: 65 78 74 20 2B 20 53 59 4D 29 20 21 3D 20 48 49 ext + SYM) != HI
01BDE0: 47 48 29 20 7B 09 09 09 2F 2A 20 78 72 20 3D 20 GH) {.../* xr =
01BDF0: 65 70 20 2A 2F 0D 0A 20 20 20 20 20 20 72 65 73 ep */.. res
01BE00: 6F 6C 76 65 28 29 3B 09 09 09 2F 2A 20 72 65 73 olve();.../* res
01BE10: 6F 6C 76 65 20 74 68 69 73 20 65 78 74 20 72 65 olve this ext re
01BE20: 66 20 2A 2F 0D 0A 20 20 20 20 20 20 70 75 74 69 f */.. puti
01BE30: 6E 74 28 78 72 70 72 65 76 2C 20 67 65 74 69 6E nt(xrprev, getin
01BE40: 74 28 78 72 6E 65 78 74 29 29 3B 09 2F 2A 20 64 t(xrnext));./* d
01BE50: 65 6C 69 6E 6B 20 66 72 6F 6D 20 78 72 20 63 68 elink from xr ch
01BE60: 61 69 6E 20 2A 2F 0D 0A 20 20 20 20 20 20 70 75 ain */.. pu
01BE70: 74 69 6E 74 28 78 72 6E 65 78 74 2C 20 73 66 72 tint(xrnext, sfr
01BE80: 65 65 29 3B 09 09 2F 2A 20 6C 69 6E 6B 20 74 6F ee);../* link to
01BE90: 20 70 72 65 76 20 66 72 65 65 64 20 65 6E 74 72 prev freed entr
01BEA0: 79 20 2A 2F 0D 0A 20 20 20 20 20 20 73 66 72 65 y */.. sfre
01BEB0: 65 20 3D 20 78 72 6E 65 78 74 3B 09 09 09 2F 2A e = xrnext;.../*
01BEC0: 20 6D 61 6B 65 20 66 69 72 73 74 20 66 72 65 65 make first free
01BED0: 64 20 65 6E 74 72 79 20 2A 2F 0D 0A 20 20 20 20 d entry */..
01BEE0: 20 20 78 72 6E 65 78 74 20 3D 20 67 65 74 69 6E xrnext = getin
01BEF0: 74 28 78 72 70 72 65 76 29 3B 09 09 2F 2A 20 61 t(xrprev);../* a
01BF00: 20 28 4D 41 58 4F 50 45 4E 20 2A 20 4F 48 44 4F (MAXOPEN * OHDO
01BF10: 50 45 4E 29 3B 0D 0A 20 20 62 75 66 66 65 72 20 PEN);.. buffer
01BF20: 3D 20 62 6E 65 78 74 20 3D 20 6D 61 6C 6C 6F 63 = bnext = malloc
01BF30: 28 6D 61 78 29 3B 09 09 2F 2A 20 61 6C 6C 6F 63 (max);../* alloc
01BF40: 61 74 65 20 73 70 61 63 65 20 2A 2F 0D 0A 20 20 ate space */..
01BF50: 73 6E 65 78 74 20 20 3D 20 62 75 66 66 65 72 20 snext = buffer
01BF60: 2B 20 28 6D 61 78 20 2D 20 53 53 5A 29 3B 09 2F + (max - SSZ);./
01BF70: 2A 20 66 69 72 73 74 20 65 6E 74 72 79 20 2A 2F * first entry */
01BF80: 0D 0A 20 20 73 66 72 65 65 20 20 3D 20 30 3B 09 .. sfree = 0;.
01BF90: 09 09 09 2F 2A 20 6E 6F 20 72 65 75 73 61 62 6C .../* no reusabl
01BFA0: 65 20 65 6E 74 72 69 65 73 20 79 65 74 20 2A 2F e entries yet */
01BFB0: 0D 0A 23 69 66 64 65 66 20 44 45 42 55 47 0D 0A ..#ifdef DEBUG..
01BFC0: 20 20 69 66 28 6D 6F 6E 69 74 6F 72 29 20 7B 69 if(monitor) {i
01BFD0: 74 6F 75 28 6D 61 78 2C 20 73 7A 2C 20 38 29 3B tou(max, sz, 8);
01BFE0: 20 70 75 74 73 32 28 73 7A 2C 20 22 20 42 79 74 puts2(sz, " Byt
01BFF0: 65 20 42 75 66 66 65 72 22 29 3B 7D 0D 0A 23 65 e Buffer");}..#e
01C000: 6E 64 69 66 0D 0A 20 20 6E 65 77 74 62 6C 28 26 ndif.. newtbl(&
01C010: 65 70 66 69 72 73 74 29 3B 09 09 09 2F 2A 20 73 epfirst);.../* s
01C020: 65 74 20 6C 6F 77 20 61 6E 64 20 68 69 67 68 20 et low and high
01C030: 65 6E 74 20 70 74 73 20 2A 2F 0D 0A 20 20 6E 65 ent pts */.. ne
01C040: 77 74 62 6C 28 26 78 72 66 69 72 73 74 29 3B 09 wtbl(&xrfirst);.
01C050: 09 09 2F 2A 20 73 65 74 20 6C 6F 77 20 61 6E 64 ../* set low and
01C060: 20 68 69 67 68 20 65 78 74 20 72 65 66 73 20 2A high ext refs *
01C070: 2F 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A /.. }..../*..**
01C080: 20 67 65 74 20 6E 65 78 74 20 6D 6F 64 75 6C 65 get next module
01C090: 20 6E 61 6D 65 0D 0A 2A 2F 0D 0A 67 65 74 6E 61 name..*/..getna
01C0A0: 6D 65 28 29 20 7B 0D 0A 20 20 69 66 28 67 65 74 me() {.. if(get
01C0B0: 72 65 6C 28 29 20 3D 3D 20 50 4E 41 4D 45 29 20 rel() == PNAME)
01C0C0: 7B 0D 0A 20 20 20 20 73 74 72 63 70 79 28 6D 6F {.. strcpy(mo
01C0D0: 64 6E 61 6D 65 2C 20 73 79 6D 62 6F 6C 29 3B 0D dname, symbol);.
01C0E0: 0A 20 20 20 20 72 65 74 75 72 6E 20 28 59 45 53 . return (YES
01C0F0: 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 );.. }.. if(
01C100: 64 76 61 6E 63 65 20 74 6F 20 6E 65 78 74 20 65 dvance to next e
01C110: 78 74 20 72 65 66 20 2A 2F 0D 0A 20 20 20 20 20 xt ref */..
01C120: 20 63 6F 6E 74 69 6E 75 65 3B 09 09 09 09 2F 2A continue;..../*
01C130: 20 73 61 6D 65 20 65 78 74 20 72 65 66 20 69 6E same ext ref in
01C140: 20 64 69 66 66 20 6D 6F 64 75 6C 65 73 3F 20 2A diff modules? *
01C150: 2F 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 /.. }..
01C160: 62 72 65 61 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 break;.. }..
01C170: 20 63 73 65 65 6B 28 63 73 66 64 2C 20 63 73 70 cseek(csfd, csp
01C180: 67 2C 20 30 29 3B 09 09 09 2F 2A 20 72 65 73 74 g, 0);.../* rest
01C190: 6F 72 65 20 74 65 6D 70 20 66 69 6C 65 20 70 6F ore temp file po
01C1A0: 73 69 74 69 6F 6E 20 2A 2F 0D 0A 20 20 55 63 68 sition */.. Uch
01C1B0: 72 70 6F 73 5B 63 73 66 64 5D 20 3D 20 63 73 63 rpos[csfd] = csc
01C1C0: 68 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A h;.. }..../*..*
01C1D0: 2A 20 6C 6F 61 64 20 61 20 6D 6F 64 75 6C 65 0D * load a module.
01C1E0: 0A 2A 2F 0D 0A 6C 6F 61 64 28 29 20 7B 0D 0A 20 .*/..load() {..
01C1F0: 20 63 68 61 72 20 73 74 72 5B 38 5D 3B 0D 0A 20 char str[8];..
01C200: 20 65 70 70 72 65 76 20 3D 20 65 70 66 69 72 73 epprev = epfirs
01C210: 74 3B 09 09 09 2F 2A 20 73 74 61 72 74 20 61 74 t;.../* start at
01C220: 20 74 68 65 20 76 65 72 79 20 62 65 67 69 6E 6E the very beginn
01C230: 69 6E 67 20 2A 2F 0D 0A 20 20 78 72 70 72 65 76 ing */.. xrprev
01C240: 20 3D 20 78 72 66 69 72 73 74 3B 0D 0A 20 20 64 = xrfirst;.. d
01C250: 6F 20 7B 0D 0A 20 20 20 20 70 6F 6C 6C 28 59 45 o {.. poll(YE
01C260: 53 29 3B 0D 0A 20 20 20 20 73 77 69 74 63 68 28 S);.. switch(
01C270: 67 65 74 72 65 6C 28 29 29 20 7B 0D 0A 20 20 20 getrel()) {..
01C280: 20 20 20 63 61 73 65 20 20 44 53 49 5A 45 3A 20 case DSIZE:
01C290: 69 66 28 21 66 69 65 6C 64 29 20 62 72 65 61 6B if(!field) break
01C2A0: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 64 65 66 ;.. def
01C2B0: 61 75 6C 74 3A 20 65 72 72 6F 72 28 22 2D 20 55 ault: error("- U
01C2C0: 6E 73 75 70 70 6F 72 74 65 64 20 4C 69 6E 6B 20 nsupported Link
01C2D0: 49 74 65 6D 22 29 3B 0D 0A 20 20 20 20 20 20 63 Item");.. c
01C2E0: 61 73 65 20 20 20 20 45 52 52 3A 20 65 72 72 6F ase ERR: erro
01C2F0: 72 28 22 2D 20 43 6F 72 72 75 70 74 20 4D 6F 64 r("- Corrupt Mod
01C300: 69 74 65 6D 20 3D 3D 20 45 46 49 4C 45 29 20 72 item == EFILE) r
01C310: 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 65 eturn (NO);.. e
01C320: 72 72 6F 72 32 28 69 6E 66 6E 2C 20 22 20 2D 20 rror2(infn, " -
01C330: 43 6F 72 72 75 70 74 65 64 22 29 3B 0D 0A 20 20 Corrupted");..
01C340: 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 72 65 61 64 }..../*..** read
01C350: 20 6E 65 78 74 20 65 6E 74 72 79 20 66 72 6F 6D next entry from
01C360: 20 6C 69 62 72 61 72 79 20 69 6E 64 65 78 20 66 library index f
01C370: 69 6C 65 0D 0A 2A 2F 0D 0A 67 65 74 6E 64 78 28 ile..*/..getndx(
01C380: 29 20 7B 0D 0A 20 20 69 66 28 72 65 61 64 28 6E ) {.. if(read(n
01C390: 64 78 66 64 2C 20 26 69 6E 62 6C 6F 63 6B 2C 20 dxfd, &inblock,
01C3A0: 32 29 20 21 3D 20 32 20 7C 7C 09 2F 2A 20 6E 65 2) != 2 ||./* ne
01C3B0: 78 74 20 62 6C 6F 63 6B 20 2A 2F 0D 0A 20 20 20 xt block */..
01C3C0: 20 20 72 65 61 64 28 6E 64 78 66 64 2C 20 26 69 read(ndxfd, &i
01C3D0: 6E 62 79 74 65 2C 20 32 29 20 21 3D 20 32 29 20 nbyte, 2) != 2)
01C3E0: 7B 09 2F 2A 20 6E 65 78 74 20 62 79 74 65 20 69 {./* next byte i
01C3F0: 6E 20 62 6C 6F 63 6B 20 2A 2F 0D 0A 20 20 20 20 n block */..
01C400: 65 72 72 6F 72 32 28 22 2D 20 45 72 72 6F 72 20 error2("- Error
01C410: 52 65 61 64 69 6E 67 20 22 2C 20 69 6E 66 6E 29 Reading ", infn)
01C420: 3B 0D 0A 20 20 20 20 7D 20 0D 0A 20 20 7D 0D 0A ;.. } .. }..
01C430: 0D 0A 2F 2A 0D 0A 2A 2A 20 67 65 74 20 73 77 69 ../*..** get swi
01C440: 74 63 68 65 73 20 66 72 6F 6D 20 63 6F 6D 6D 61 tches from comma
01C450: 6E 64 20 6C 69 6E 65 0D 0A 2A 2F 0D 0A 67 65 74 nd line..*/..get
01C460: 73 77 28 61 72 67 63 2C 20 61 72 67 76 29 20 69 sw(argc, argv) i
01C470: 6E 74 20 61 72 67 63 2C 20 2A 61 72 67 76 3B 20 nt argc, *argv;
01C480: 7B 0D 0A 20 20 63 68 61 72 20 61 72 67 5B 4E 41 {.. char arg[NA
01C490: 4D 45 53 49 5A 45 5D 3B 0D 0A 20 20 69 6E 74 20 MESIZE];.. int
01C4A0: 61 72 67 6E 62 72 2C 20 62 2C 20 6C 65 6E 3B 0D argnbr, b, len;.
01C4B0: 0A 20 20 61 72 67 6E 62 72 20 3D 20 30 3B 0D 0A . argnbr = 0;..
01C4C0: 20 20 77 68 69 6C 65 28 67 65 74 61 72 67 28 2B while(getarg(+
01C4D0: 2B 61 72 67 6E 62 72 2C 20 61 72 67 2C 20 4E 41 +argnbr, arg, NA
01C4E0: 4D 45 53 49 5A 45 2C 20 61 72 67 63 2C 20 61 72 MESIZE, argc, ar
01C4F0: 67 76 29 20 21 3D 20 45 4F 46 29 20 7B 0D 0A 20 gv) != EOF) {..
01C500: 75 6C 65 22 29 3B 0D 0A 20 20 20 20 20 20 63 61 ule");.. ca
01C510: 73 65 20 20 45 50 52 4F 47 3A 20 69 66 28 74 79 se EPROG: if(ty
01C520: 70 65 20 3D 3D 20 50 52 45 4C 29 20 7B 0D 0A 20 pe == PREL) {..
01C530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01C540: 20 20 20 20 70 75 74 73 32 28 22 53 74 61 72 74 puts2("Start
01C550: 20 49 6E 20 22 2C 20 6D 6F 64 6E 61 6D 65 29 3B In ", modname);
01C560: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
01C570: 20 20 20 20 20 20 20 67 6F 6C 6F 63 20 3D 20 66 goloc = f
01C580: 69 65 6C 64 20 2B 20 63 6D 6F 64 3B 0D 0A 20 20 ield + cmod;..
01C590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01C5A0: 20 20 20 7D 0D 0A 20 20 20 20 20 20 63 61 73 65 }.. case
01C5B0: 20 20 45 4E 41 4D 45 3A 20 62 72 65 61 6B 3B 09 ENAME: break;.
01C5C0: 09 09 2F 2A 20 62 79 70 61 73 73 20 65 6E 61 6D ../* bypass enam
01C5D0: 65 73 20 2A 2F 0D 0A 20 20 20 20 20 20 63 61 73 es */.. cas
01C5E0: 65 20 58 43 48 41 49 4E 3A 20 6E 65 77 73 79 6D e XCHAIN: newsym
01C5F0: 28 26 78 72 70 72 65 76 2C 20 22 78 72 22 29 3B (&xrprev, "xr");
01C600: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
01C610: 20 20 20 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 break;..
01C620: 20 20 20 63 61 73 65 20 45 50 4F 49 4E 54 3A 20 case EPOINT:
01C630: 6E 65 77 73 79 6D 28 26 65 70 70 72 65 76 2C 20 newsym(&epprev,
01C640: 22 65 70 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 "ep");..
01C650: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6B break
01C660: 3B 0D 0A 20 20 20 20 20 20 63 61 73 65 20 20 50 ;.. case P
01C670: 53 49 5A 45 3A 20 63 6D 6F 64 20 3D 20 63 6C 6F SIZE: cmod = clo
01C680: 63 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 c;..
01C690: 20 20 20 20 20 20 20 69 66 28 6D 6F 6E 69 74 6F if(monito
01C6A0: 72 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 20 20 r) {..
01C6B0: 20 20 20 20 20 20 20 20 20 20 20 69 74 6F 78 28 itox(
01C6C0: 66 69 65 6C 64 2C 20 73 74 72 2C 20 38 29 3B 0D field, str, 8);.
01C6D0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
01C6E0: 20 20 20 20 20 20 66 70 75 74 73 28 73 74 72 2C fputs(str,
01C6F0: 20 73 74 64 6F 75 74 29 3B 20 66 70 75 74 73 28 stdout); fputs(
01C700: 20 20 20 69 66 28 61 72 67 5B 30 5D 20 21 3D 20 if(arg[0] !=
01C710: 27 2D 27 29 20 63 6F 6E 74 69 6E 75 65 3B 09 09 '-') continue;..
01C720: 09 2F 2A 20 73 6B 69 70 20 66 69 6C 65 20 6E 61 ./* skip file na
01C730: 6D 65 73 20 2A 2F 0D 0A 20 20 20 20 69 66 28 74 mes */.. if(t
01C740: 6F 75 70 70 65 72 28 61 72 67 5B 31 5D 29 20 3D oupper(arg[1]) =
01C750: 3D 20 27 47 27 29 20 7B 0D 0A 20 20 20 20 20 20 = 'G') {..
01C760: 6C 67 6F 20 3D 20 59 45 53 3B 0D 0A 20 20 20 20 lgo = YES;..
01C770: 20 20 6C 65 6E 20 3D 20 78 74 6F 69 28 61 72 67 len = xtoi(arg
01C780: 20 2B 20 32 2C 20 26 62 29 3B 0D 0A 20 20 20 20 + 2, &b);..
01C790: 20 20 69 66 28 6C 65 6E 20 3E 3D 20 30 20 26 26 if(len >= 0 &&
01C7A0: 20 21 61 72 67 5B 6C 65 6E 20 2B 20 32 5D 29 20 !arg[len + 2])
01C7B0: 63 62 61 73 65 20 3D 20 62 3B 20 65 6C 73 65 20 cbase = b; else
01C7C0: 75 73 61 67 65 28 29 3B 0D 0A 20 20 20 20 20 20 usage();..
01C7D0: 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 74 }.. else if(t
01C7E0: 6F 75 70 70 65 72 28 61 72 67 5B 31 5D 29 20 3D oupper(arg[1]) =
01C7F0: 3D 20 27 42 27 29 20 62 69 67 20 3D 20 59 45 53 = 'B') big = YES
01C800: 3B 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 74 ;.. else if(t
01C810: 6F 75 70 70 65 72 28 61 72 67 5B 31 5D 29 20 3D oupper(arg[1]) =
01C820: 3D 20 27 4D 27 29 20 6D 6F 6E 69 74 6F 72 20 3D = 'M') monitor =
01C830: 20 59 45 53 3B 0D 0A 20 20 20 20 65 6C 73 65 20 YES;.. else
01C840: 75 73 61 67 65 28 29 3B 0D 0A 20 20 20 20 7D 0D usage();.. }.
01C850: 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 69 . }..../*..** i
01C860: 73 20 73 79 6D 62 6F 6C 20 61 6E 20 75 6E 72 65 s symbol an unre
01C870: 73 6F 6C 76 65 64 20 65 78 74 20 72 65 66 3F 0D solved ext ref?.
01C880: 0A 2A 2A 20 6F 6E 20 72 65 74 75 72 6E 20 6F 66 .** on return of
01C890: 20 74 72 75 65 2C 20 78 72 6E 65 78 74 20 2D 3E true, xrnext ->
01C8A0: 20 6D 61 74 63 68 69 6E 67 20 78 72 20 65 6E 74 matching xr ent
01C8B0: 72 79 0D 0A 2A 2F 0D 0A 69 73 75 6E 72 65 73 28 ry..*/..isunres(
01C8C0: 29 20 7B 0D 0A 20 20 69 6E 74 20 69 3B 0D 0A 20 ) {.. int i;..
01C8D0: 20 78 72 6E 65 78 74 20 3D 20 67 65 74 69 6E 74 xrnext = getint
01C8E0: 28 78 72 66 69 72 73 74 29 3B 0D 0A 20 20 77 68 (xrfirst);.. wh
01C8F0: 69 6C 65 28 78 72 6E 65 78 74 29 20 7B 0D 0A 20 ile(xrnext) {..
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: 22 20 42 79 74 65 73 20 61 74 22 2C 20 73 74 64 " Bytes at", std
01CA10: 6F 75 74 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 out);..
01CA20: 20 20 20 20 20 20 20 20 20 20 20 20 69 74 6F 78 itox
01CA30: 28 63 6C 6F 63 2C 20 20 73 74 72 2C 20 36 29 3B (cloc, str, 6);
01CA40: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
01CA50: 20 20 20 20 20 20 20 66 70 75 74 73 28 73 74 72 fputs(str
01CA60: 2C 20 73 74 64 6F 75 74 29 3B 20 66 70 75 74 73 , stdout); fputs
01CA70: 28 22 27 22 2C 20 73 74 64 6F 75 74 29 3B 0D 0A ("'", stdout);..
01CA80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CA90: 20 20 20 20 20 69 74 6F 78 28 63 6C 6F 63 2B 63 itox(cloc+c
01CAA0: 62 61 73 65 2C 20 20 73 74 72 2C 20 36 29 3B 0D base, str, 6);.
01CAB0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
01CAC0: 20 20 20 20 20 20 66 70 75 74 73 28 73 74 72 2C fputs(str,
01CAD0: 20 73 74 64 6F 75 74 29 3B 20 70 75 74 73 32 28 stdout); puts2(
01CAE0: 22 20 22 2C 20 6D 6F 64 6E 61 6D 65 29 3B 0D 0A " ", modname);..
01CAF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CB00: 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 }..
01CB10: 20 20 20 20 20 20 20 20 20 20 20 69 66 28 21 63 if(!c
01CB20: 73 66 64 20 26 26 0D 0A 20 20 20 20 20 20 20 20 sfd &&..
01CB30: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 62 69 (bi
01CB40: 67 20 7C 7C 20 28 62 6E 65 78 74 20 2B 20 66 69 g || (bnext + fi
01CB50: 65 6C 64 29 20 3E 20 28 73 6E 65 78 74 20 2D 20 eld) > (snext -
01CB60: 43 55 53 48 49 4F 4E 29 29 29 20 7B 0D 0A 20 20 CUSHION))) {..
01CB70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CB80: 20 20 20 63 64 69 73 6B 20 3D 20 63 6C 6F 63 3B cdisk = cloc;
01CB90: 09 09 2F 2A 20 64 69 73 6B 20 6F 76 65 72 66 6C ../* disk overfl
01CBA0: 6F 77 20 70 6F 69 6E 74 20 2A 2F 0D 0A 20 20 20 ow point */..
01CBB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CBC0: 20 20 63 73 66 64 20 3D 20 6F 70 65 6E 28 63 73 csfd = open(cs
01CBD0: 66 6E 2C 20 22 77 2B 22 29 3B 09 2F 2A 20 6F 70 fn, "w+");./* op
01CBE0: 65 6E 20 6F 76 65 72 66 6C 6F 77 20 66 69 6C 65 en overflow file
01CBF0: 20 2A 2F 0D 0A 23 69 66 64 65 66 20 44 45 42 55 */..#ifdef DEBU
01CC00: 76 20 3D 20 6E 65 77 3B 09 09 09 09 2F 2A 20 74 v = new;..../* t
01CC10: 68 69 73 20 62 65 63 6F 6D 65 73 20 70 72 65 76 his becomes prev
01CC20: 20 65 6E 74 72 79 20 2A 2F 0D 0A 20 20 69 66 28 entry */.. if(
01CC30: 74 79 70 65 20 3D 3D 20 50 52 45 4C 29 20 66 69 type == PREL) fi
01CC40: 65 6C 64 20 3D 20 66 69 65 6C 64 20 2B 20 63 6D eld = field + cm
01CC50: 6F 64 3B 2F 2A 20 61 64 6A 75 73 74 20 66 6F 72 od;/* adjust for
01CC60: 20 6D 6F 64 75 6C 65 20 6C 6F 63 61 74 69 6F 6E module location
01CC70: 20 2A 2F 0D 0A 20 20 70 75 74 69 6E 74 28 6E 65 */.. putint(ne
01CC80: 77 20 2B 20 56 41 4C 2C 20 66 69 65 6C 64 29 3B w + VAL, field);
01CC90: 09 09 2F 2A 20 6C 6F 61 64 20 76 61 6C 75 65 20 ../* load value
01CCA0: 2A 2F 0D 0A 20 20 73 74 72 63 70 79 28 6E 65 77 */.. strcpy(new
01CCB0: 20 2B 20 53 59 4D 2C 20 73 79 6D 62 6F 6C 29 3B + SYM, symbol);
01CCC0: 09 09 2F 2A 20 6C 6F 61 64 20 73 79 6D 62 6F 6C ../* load symbol
01CCD0: 20 2A 2F 0D 0A 23 69 66 64 65 66 20 44 45 42 55 */..#ifdef DEBU
01CCE0: 47 0D 0A 20 20 69 66 28 6D 6F 6E 69 74 6F 72 29 G.. if(monitor)
01CCF0: 20 7B 0D 0A 20 20 20 20 69 74 6F 78 28 67 65 74 {.. itox(get
01CD00: 69 6E 74 28 6E 65 77 20 2B 20 56 41 4C 29 2C 20 int(new + VAL),
01CD10: 61 74 2C 20 38 29 3B 0D 0A 20 20 20 20 66 70 75 at, 8);.. fpu
01CD20: 74 73 28 61 74 2C 20 73 74 64 6F 75 74 29 3B 20 ts(at, stdout);
01CD30: 66 70 75 74 73 28 22 20 22 2C 20 73 74 64 6F 75 fputs(" ", stdou
01CD40: 74 29 3B 0D 0A 20 20 20 20 66 70 75 74 73 28 74 t);.. fputs(t
01CD50: 73 2C 20 73 74 64 6F 75 74 29 3B 20 66 70 75 74 s, stdout); fput
01CD60: 73 28 22 20 22 2C 20 73 74 64 6F 75 74 29 3B 0D s(" ", stdout);.
01CD70: 0A 20 20 20 20 70 75 74 73 28 73 79 6D 62 6F 6C . puts(symbol
01CD80: 29 3B 0D 0A 20 20 20 20 7D 0D 0A 23 65 6E 64 69 );.. }..#endi
01CD90: 66 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A f.. }..../*..**
01CDA0: 20 69 6E 69 74 69 61 6C 20 74 61 62 6C 65 20 65 initial table e
01CDB0: 6E 74 72 69 65 73 0D 0A 2A 2F 0D 0A 6E 65 77 74 ntries..*/..newt
01CDC0: 62 6C 28 6C 6F 77 29 20 69 6E 74 20 2A 6C 6F 77 bl(low) int *low
01CDD0: 3B 20 7B 0D 0A 20 20 2A 6C 6F 77 20 3D 20 73 6E ; {.. *low = sn
01CDE0: 65 78 74 3B 09 09 09 09 2F 2A 20 61 6C 77 61 79 ext;..../* alway
01CDF0: 73 20 70 6F 69 6E 74 73 20 74 6F 20 6C 6F 77 20 s points to low
01CE00: 47 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 G..
01CE10: 20 20 20 20 20 20 20 20 69 66 28 6D 6F 6E 69 74 if(monit
01CE20: 6F 72 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 20 or) {..
01CE30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 74 it
01CE40: 6F 78 28 63 64 69 73 6B 2C 20 73 74 72 2C 20 38 ox(cdisk, str, 8
01CE50: 29 3B 20 70 75 74 73 32 28 73 74 72 2C 20 22 20 ); puts2(str, "
01CE60: 4F 76 65 72 66 6C 6F 77 20 50 6F 69 6E 74 22 29 Overflow Point")
01CE70: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
01CE80: 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 23 65 6E }..#en
01CE90: 64 69 66 0D 0A 20 20 20 20 20 20 20 20 20 20 20 dif..
01CEA0: 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 }..
01CEB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CEC0: 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 63 61 break;.. ca
01CED0: 73 65 20 20 53 45 54 4C 43 3A 20 66 69 65 6C 64 se SETLC: field
01CEE0: 20 3D 20 66 69 65 6C 64 20 2B 20 63 6D 6F 64 3B = field + cmod;
01CEF0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
01CF00: 20 20 20 20 20 77 68 69 6C 65 28 63 6C 6F 63 20 while(cloc
01CF10: 3C 20 66 69 65 6C 64 29 20 7B 09 09 2F 2A 20 61 < field) {../* a
01CF20: 64 6A 20 6C 6F 63 20 63 74 72 20 2A 2F 0D 0A 20 dj loc ctr */..
01CF30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CF40: 20 20 20 20 69 66 28 63 73 66 64 29 20 77 72 69 if(csfd) wri
01CF50: 74 65 28 63 73 66 64 2C 20 22 5C 30 22 2C 20 31 te(csfd, "\0", 1
01CF60: 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 );..
01CF70: 20 20 20 20 20 20 20 20 20 65 6C 73 65 20 2A 62 else *b
01CF80: 6E 65 78 74 2B 2B 20 3D 20 30 3B 0D 0A 20 20 20 next++ = 0;..
01CF90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CFA0: 20 20 2B 2B 63 6C 6F 63 3B 0D 0A 20 20 20 20 20 ++cloc;..
01CFB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CFC0: 7D 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
01CFD0: 20 20 20 20 20 20 20 20 62 72 65 61 6B 3B 0D 0A break;..
01CFE0: 20 20 20 20 20 20 63 61 73 65 20 20 58 50 4F 46 case XPOF
01CFF0: 46 3A 20 77 72 69 74 65 28 63 72 66 64 2C 20 26 F: write(crfd, &
01D000: 65 6E 74 72 79 20 2A 2F 0D 0A 20 20 73 74 72 63 entry */.. strc
01D010: 70 79 28 73 6E 65 78 74 20 2B 20 53 59 4D 2C 20 py(snext + SYM,
01D020: 22 22 29 3B 09 09 2F 2A 20 73 74 6F 72 65 20 6C "");../* store l
01D030: 6F 77 20 73 79 6D 62 6F 6C 20 2A 2F 0D 0A 20 20 ow symbol */..
01D040: 70 75 74 69 6E 74 28 73 6E 65 78 74 2C 20 73 6E putint(snext, sn
01D050: 65 78 74 20 2D 20 53 53 5A 29 3B 09 09 2F 2A 20 ext - SSZ);../*
01D060: 6C 69 6E 6B 20 74 6F 20 6E 65 78 74 20 28 68 69 link to next (hi
01D070: 67 68 29 20 73 79 6D 62 6F 6C 20 2A 2F 0D 0A 20 gh) symbol */..
01D080: 20 73 6E 65 78 74 20 2D 3D 20 53 53 5A 3B 09 09 snext -= SSZ;..
01D090: 09 09 2F 2A 20 6E 6F 77 20 70 6F 69 6E 74 20 74 ../* now point t
01D0A0: 6F 20 6E 65 78 74 20 65 6E 74 72 79 20 2A 2F 0D o next entry */.
01D0B0: 0A 20 20 73 74 72 63 70 79 28 73 6E 65 78 74 20 . strcpy(snext
01D0C0: 2B 20 53 59 4D 2C 20 68 69 67 68 29 3B 09 09 2F + SYM, high);../
01D0D0: 2A 20 73 74 6F 72 65 20 68 69 67 68 20 73 79 6D * store high sym
01D0E0: 62 6F 6C 20 2A 2F 0D 0A 20 20 70 75 74 69 6E 74 bol */.. putint
01D0F0: 28 73 6E 65 78 74 2C 20 30 29 3B 09 09 09 2F 2A (snext, 0);.../*
01D100: 20 65 6E 64 20 6F 66 20 63 68 61 69 6E 20 2A 2F end of chain */
01D110: 0D 0A 20 20 73 6E 65 78 74 20 2D 3D 20 53 53 5A .. snext -= SSZ
01D120: 3B 09 09 09 09 2F 2A 20 62 75 6D 70 20 74 6F 20 ;..../* bump to
01D130: 6E 65 78 74 20 65 6E 74 72 79 20 2A 2F 0D 0A 20 next entry */..
01D140: 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 67 65 74 }..../*..** get
01D150: 20 6E 65 78 74 20 6D 6F 64 75 6C 65 20 6E 61 6D next module nam
01D160: 65 0D 0A 2A 2F 0D 0A 6E 78 74 6D 6F 64 28 29 20 e..*/..nxtmod()
01D170: 7B 0D 0A 20 20 67 65 74 6E 64 78 28 29 3B 09 09 {.. getndx();..
01D180: 09 09 2F 2A 20 67 65 74 20 6C 6F 63 61 74 69 6F ../* get locatio
01D190: 6E 20 61 6E 64 20 2A 2F 0D 0A 20 20 73 65 65 6B n and */.. seek
01D1A0: 28 29 3B 09 09 09 09 2F 2A 20 67 6F 20 73 74 72 ();..../* go str
01D1B0: 61 69 67 68 74 20 74 6F 20 6E 65 78 74 20 6D 65 aight to next me
01D1C0: 6D 62 65 72 20 2A 2F 0D 0A 20 20 72 65 74 75 72 mber */.. retur
01D1D0: 6E 20 28 67 65 74 6E 61 6D 65 28 29 29 3B 0D 0A n (getname());..
01D1E0: 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 72 65 }..../*..** re
01D1F0: 70 6F 72 74 20 74 68 65 20 6F 75 74 63 6F 6D 65 port the outcome
01D200: 78 72 70 66 6C 61 67 2C 20 32 29 3B 09 09 2F 2A xrpflag, 2);../*
01D210: 20 66 6C 61 67 20 78 72 20 70 6C 75 73 20 2A 2F flag xr plus */
01D220: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
01D230: 20 20 20 20 20 77 72 69 74 65 28 63 72 66 64 2C write(crfd,
01D240: 20 26 66 69 65 6C 64 2C 20 32 29 3B 09 09 2F 2A &field, 2);../*
01D250: 20 78 72 20 6F 66 66 73 65 74 20 2A 2F 0D 0A 20 xr offset */..
01D260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D270: 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 break;..
01D280: 63 61 73 65 20 20 20 50 52 45 4C 3A 20 66 69 65 case PREL: fie
01D290: 6C 64 20 3D 20 66 69 65 6C 64 20 2B 20 63 6D 6F ld = field + cmo
01D2A0: 64 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 d;..
01D2B0: 20 20 20 20 20 20 20 69 66 28 63 73 66 64 29 20 if(csfd)
01D2C0: 77 72 69 74 65 28 63 73 66 64 2C 20 26 66 69 65 write(csfd, &fie
01D2D0: 6C 64 2C 20 32 29 3B 09 2F 2A 20 70 75 74 20 6F ld, 2);./* put o
01D2E0: 6E 20 64 69 73 6B 20 2A 2F 0D 0A 20 20 20 20 20 n disk */..
01D2F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6C el
01D300: 73 65 20 7B 09 09 09 09 2F 2A 20 70 75 74 20 69 se {..../* put i
01D310: 6E 20 6D 65 6D 6F 72 79 20 2A 2F 0D 0A 20 20 20 n memory */..
01D320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D330: 20 20 70 75 74 69 6E 74 28 62 6E 65 78 74 2C 20 putint(bnext,
01D340: 66 69 65 6C 64 29 3B 0D 0A 20 20 20 20 20 20 20 field);..
01D350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6E bn
01D360: 65 78 74 20 2B 3D 20 32 3B 0D 0A 20 20 20 20 20 ext += 2;..
01D370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D380: 7D 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 }..
01D390: 20 20 20 20 20 20 77 72 69 74 65 28 63 72 66 64 write(crfd
01D3A0: 2C 20 26 63 6C 6F 63 2C 20 20 32 29 3B 09 2F 2A , &cloc, 2);./*
01D3B0: 20 72 65 66 65 72 65 6E 63 65 20 66 6F 72 20 70 reference for p
01D3C0: 61 73 73 20 32 20 2A 2F 0D 0A 20 20 20 20 20 20 ass 2 */..
01D3D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6C 6F clo
01D3E0: 63 20 2B 3D 20 32 3B 0D 0A 20 20 20 20 20 20 20 c += 2;..
01D3F0: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 brea
01D400: 20 61 6E 64 20 64 65 63 69 64 65 20 77 68 65 74 and decide whet
01D410: 68 65 72 20 74 6F 20 71 75 69 74 0D 0A 2A 2F 0D her to quit..*/.
01D420: 0A 6F 6B 61 79 28 29 20 7B 0D 0A 20 20 69 6E 74 .okay() {.. int
01D430: 20 65 72 72 3B 20 63 68 61 72 20 2A 65 70 6C 61 err; char *epla
01D440: 73 74 3B 0D 0A 20 20 65 72 72 20 3D 20 65 70 6C st;.. err = epl
01D450: 61 73 74 20 3D 20 30 3B 0D 0A 20 20 78 72 6E 65 ast = 0;.. xrne
01D460: 78 74 20 3D 20 67 65 74 69 6E 74 28 78 72 66 69 xt = getint(xrfi
01D470: 72 73 74 29 3B 09 09 2F 2A 20 66 69 72 73 74 20 rst);../* first
01D480: 65 78 74 65 72 6E 61 6C 20 72 65 66 65 72 65 6E external referen
01D490: 63 65 20 2A 2F 0D 0A 20 20 65 70 6E 65 78 74 20 ce */.. epnext
01D4A0: 3D 20 67 65 74 69 6E 74 28 65 70 66 69 72 73 74 = getint(epfirst
01D4B0: 29 3B 09 09 2F 2A 20 66 69 72 73 74 20 65 6E 74 );../* first ent
01D4C0: 72 79 20 70 6F 69 6E 74 20 2A 2F 0D 0A 20 20 77 ry point */.. w
01D4D0: 68 69 6C 65 28 59 45 53 29 20 7B 0D 0A 20 20 20 hile(YES) {..
01D4E0: 20 70 6F 6C 6C 28 59 45 53 29 3B 0D 0A 20 20 20 poll(YES);..
01D4F0: 20 69 66 28 73 74 72 63 6D 70 28 78 72 6E 65 78 if(strcmp(xrnex
01D500: 74 20 2B 20 53 59 4D 2C 20 65 70 6E 65 78 74 20 t + SYM, epnext
01D510: 2B 20 53 59 4D 29 20 3E 20 30 29 20 7B 09 2F 2A + SYM) > 0) {./*
01D520: 20 65 78 74 20 3E 20 65 6E 74 20 2A 2F 0D 0A 20 ext > ent */..
01D530: 20 20 20 20 20 69 66 28 65 70 6E 65 78 74 20 3D if(epnext =
01D540: 3D 20 65 70 6C 61 73 74 29 20 7B 0D 0A 20 20 20 = eplast) {..
01D550: 20 20 20 20 20 70 75 74 73 32 28 22 2D 20 20 52 puts2("- R
01D560: 65 64 75 6E 64 61 6E 74 3A 20 22 2C 20 78 72 6E edundant: ", xrn
01D570: 65 78 74 20 2B 20 53 59 4D 29 3B 0D 0A 20 20 20 ext + SYM);..
01D580: 20 20 20 20 20 65 72 72 20 3D 20 59 45 53 3B 0D err = YES;.
01D590: 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 . }..
01D5A0: 20 20 65 70 6C 61 73 74 20 3D 20 65 70 6E 65 78 eplast = epnex
01D5B0: 74 3B 0D 0A 20 20 20 20 20 20 65 70 6E 65 78 74 t;.. epnext
01D5C0: 20 3D 20 67 65 74 69 6E 74 28 65 70 6E 65 78 74 = getint(epnext
01D5D0: 29 3B 0D 0A 20 20 20 20 20 20 63 6F 6E 74 69 6E );.. contin
01D5E0: 75 65 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 ue;.. }..
01D5F0: 20 20 69 66 28 73 74 72 63 6D 70 28 78 72 6E 65 if(strcmp(xrne
01D600: 6B 3B 0D 0A 20 20 20 20 20 20 63 61 73 65 20 20 k;.. case
01D610: 20 20 41 42 53 3A 20 69 66 28 63 73 66 64 29 20 ABS: if(csfd)
01D620: 77 72 69 74 65 28 63 73 66 64 2C 20 26 66 69 65 write(csfd, &fie
01D630: 6C 64 2C 20 31 29 3B 09 2F 2A 20 70 75 74 20 6F ld, 1);./* put o
01D640: 6E 20 64 69 73 6B 20 2A 2F 0D 0A 20 20 20 20 20 n disk */..
01D650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6C el
01D660: 73 65 20 2A 62 6E 65 78 74 2B 2B 20 3D 20 66 69 se *bnext++ = fi
01D670: 65 6C 64 3B 09 09 2F 2A 20 70 75 74 20 69 6E 20 eld;../* put in
01D680: 6D 65 6D 6F 72 79 20 2A 2F 0D 0A 20 20 20 20 20 memory */..
01D690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2B 2B ++
01D6A0: 63 6C 6F 63 3B 0D 0A 20 20 20 20 20 20 20 20 20 cloc;..
01D6B0: 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6B 3B break;
01D6C0: 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D .. }.. }
01D6D0: 20 77 68 69 6C 65 28 69 74 65 6D 20 21 3D 20 45 while(item != E
01D6E0: 50 52 4F 47 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F PROG);.. }..../
01D6F0: 2A 0D 0A 2A 2A 20 63 72 65 61 74 65 20 6E 65 77 *..** create new
01D700: 20 66 69 6C 65 20 73 70 65 63 69 66 69 65 72 20 file specifier
01D710: 66 72 6F 6D 20 61 6E 20 6F 6C 64 20 6F 6E 65 0D from an old one.
01D720: 0A 2A 2F 0D 0A 6E 65 77 66 6E 28 64 65 73 74 2C .*/..newfn(dest,
01D730: 20 73 6F 75 72 2C 20 65 78 74 29 20 63 68 61 72 sour, ext) char
01D740: 20 2A 64 65 73 74 2C 20 2A 73 6F 75 72 2C 20 2A *dest, *sour, *
01D750: 65 78 74 3B 20 7B 0D 0A 20 20 69 66 28 73 6F 75 ext; {.. if(sou
01D760: 72 5B 31 5D 20 3D 3D 20 27 3A 27 20 26 26 20 73 r[1] == ':' && s
01D770: 74 72 63 6D 70 28 65 78 74 2C 20 4E 44 58 45 58 trcmp(ext, NDXEX
01D780: 54 29 29 20 73 6F 75 72 20 2B 3D 20 32 3B 0D 0A T)) sour += 2;..
01D790: 20 20 77 68 69 6C 65 28 2A 73 6F 75 72 20 26 26 while(*sour &&
01D7A0: 20 2A 73 6F 75 72 20 21 3D 20 27 2E 27 29 20 2A *sour != '.') *
01D7B0: 64 65 73 74 2B 2B 20 3D 20 2A 73 6F 75 72 2B 2B dest++ = *sour++
01D7C0: 3B 0D 0A 20 20 73 74 72 63 70 79 28 64 65 73 74 ;.. strcpy(dest
01D7D0: 2C 20 65 78 74 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A , ext);.. }....
01D7E0: 2F 2A 0D 0A 2A 2A 20 73 74 6F 72 65 20 6E 65 77 /*..** store new
01D7F0: 20 73 79 6D 62 6F 6C 20 74 61 62 6C 65 20 65 6E symbol table en
01D800: 78 74 20 2B 20 53 59 4D 2C 20 65 70 6E 65 78 74 xt + SYM, epnext
01D810: 20 2B 20 53 59 4D 29 20 3C 20 30 29 20 7B 09 2F + SYM) < 0) {./
01D820: 2A 20 65 78 74 20 3C 20 65 6E 74 20 2A 2F 0D 0A * ext < ent */..
01D830: 20 20 20 20 20 20 70 75 74 73 32 28 22 2D 20 55 puts2("- U
01D840: 6E 72 65 73 6F 6C 76 65 64 3A 20 22 2C 20 78 72 nresolved: ", xr
01D850: 6E 65 78 74 20 2B 20 53 59 4D 29 3B 0D 0A 20 20 next + SYM);..
01D860: 20 20 20 20 65 72 72 20 3D 20 59 45 53 3B 0D 0A err = YES;..
01D870: 20 20 20 20 20 20 78 72 6E 65 78 74 20 3D 20 67 xrnext = g
01D880: 65 74 69 6E 74 28 78 72 6E 65 78 74 29 3B 0D 0A etint(xrnext);..
01D890: 20 20 20 20 20 20 63 6F 6E 74 69 6E 75 65 3B 0D continue;.
01D8A0: 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 69 66 . }.. if
01D8B0: 28 2A 28 78 72 6E 65 78 74 20 2B 20 53 59 4D 29 (*(xrnext + SYM)
01D8C0: 20 21 3D 20 48 49 47 48 29 20 7B 09 09 09 2F 2A != HIGH) {.../*
01D8D0: 20 65 78 74 20 3D 20 65 6E 74 20 2A 2F 0D 0A 20 ext = ent */..
01D8E0: 20 20 20 20 20 78 72 6E 65 78 74 20 3D 20 67 65 xrnext = ge
01D8F0: 74 69 6E 74 28 78 72 6E 65 78 74 29 3B 0D 0A 20 tint(xrnext);..
01D900: 20 20 20 20 20 63 6F 6E 74 69 6E 75 65 3B 09 09 continue;..
01D910: 09 2F 2A 20 73 61 6D 65 20 65 78 74 20 72 65 66 ./* same ext ref
01D920: 20 69 6E 20 64 69 66 66 20 6D 6F 64 75 6C 65 73 in diff modules
01D930: 3F 20 2A 2F 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 ? */.. }..
01D940: 20 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 7D break;.. }
01D950: 0D 0A 20 20 69 66 28 65 72 72 29 20 72 65 74 75 .. if(err) retu
01D960: 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 72 65 74 75 rn (NO);.. retu
01D970: 72 6E 20 28 59 45 53 29 3B 0D 0A 20 20 7D 0D 0A rn (YES);.. }..
01D980: 0D 0A 2F 2A 0D 0A 2A 2A 20 6C 6F 61 64 20 69 6E ../*..** load in
01D990: 70 75 74 20 66 69 6C 65 73 20 61 6E 64 20 6C 69 put files and li
01D9A0: 62 72 61 72 79 20 6D 65 6D 62 65 72 73 0D 0A 2A brary members..*
01D9B0: 2F 0D 0A 70 68 61 73 65 31 28 61 72 67 63 2C 20 /..phase1(argc,
01D9C0: 61 72 67 76 29 20 69 6E 74 20 61 72 67 63 2C 20 argv) int argc,
01D9D0: 2A 61 72 67 76 3B 20 7B 0D 0A 20 20 63 68 61 72 *argv; {.. char
01D9E0: 20 73 7A 5B 38 5D 3B 0D 0A 20 20 69 6E 74 20 69 sz[8];.. int i
01D9F0: 2C 20 6C 69 62 2C 20 65 6F 66 3B 0D 0A 20 20 65 , lib, eof;.. e
01DA00: 74 72 79 0D 0A 2A 2A 20 74 68 65 79 20 61 72 72 try..** they arr
01DA10: 69 76 65 20 69 6E 20 61 6C 70 68 61 6E 75 6D 65 ive in alphanume
01DA20: 72 69 63 20 6F 72 64 65 72 0D 0A 2A 2F 0D 0A 6E ric order..*/..n
01DA30: 65 77 73 79 6D 28 70 72 65 76 2C 20 74 73 29 20 ewsym(prev, ts)
01DA40: 69 6E 74 20 2A 70 72 65 76 3B 20 63 68 61 72 20 int *prev; char
01DA50: 2A 74 73 3B 20 7B 0D 0A 20 20 63 68 61 72 20 61 *ts; {.. char a
01DA60: 74 5B 38 5D 2C 20 2A 63 70 2C 20 2A 6E 65 77 3B t[8], *cp, *new;
01DA70: 0D 0A 20 20 69 66 28 6E 65 77 20 3D 20 73 66 72 .. if(new = sfr
01DA80: 65 65 29 20 73 66 72 65 65 20 3D 20 67 65 74 69 ee) sfree = geti
01DA90: 6E 74 28 73 66 72 65 65 29 3B 09 09 2F 2A 20 75 nt(sfree);../* u
01DAA0: 73 65 20 6F 6C 64 20 65 6E 74 72 79 20 2A 2F 0D se old entry */.
01DAB0: 0A 20 20 65 6C 73 65 20 7B 0D 0A 20 20 20 20 6E . else {.. n
01DAC0: 65 77 20 3D 20 73 6E 65 78 74 3B 0D 0A 20 20 20 ew = snext;..
01DAD0: 20 69 66 28 28 73 6E 65 78 74 20 2D 3D 20 53 53 if((snext -= SS
01DAE0: 5A 29 20 3C 20 62 6E 65 78 74 29 20 65 72 72 6F Z) < bnext) erro
01DAF0: 72 28 22 2D 20 4D 75 73 74 20 53 70 65 63 69 66 r("- Must Specif
01DB00: 79 20 2D 42 20 53 77 69 74 63 68 22 29 3B 0D 0A y -B Switch");..
01DB10: 20 20 20 20 7D 0D 0A 20 20 63 70 20 3D 20 2A 70 }.. cp = *p
01DB20: 72 65 76 3B 0D 0A 20 20 77 68 69 6C 65 28 73 74 rev;.. while(st
01DB30: 72 63 6D 70 28 73 79 6D 62 6F 6C 2C 20 63 70 20 rcmp(symbol, cp
01DB40: 2B 20 53 59 4D 29 20 3E 3D 20 30 29 20 7B 09 09 + SYM) >= 0) {..
01DB50: 2F 2A 20 66 69 6E 64 20 70 6F 73 69 74 69 6F 6E /* find position
01DB60: 20 2A 2F 0D 0A 20 20 20 20 2A 70 72 65 76 20 3D */.. *prev =
01DB70: 20 63 70 3B 0D 0A 20 20 20 20 63 70 20 3D 20 67 cp;.. cp = g
01DB80: 65 74 69 6E 74 28 63 70 29 3B 0D 0A 20 20 20 20 etint(cp);..
01DB90: 7D 0D 0A 20 20 70 75 74 69 6E 74 28 6E 65 77 2C }.. putint(new,
01DBA0: 20 63 70 29 3B 09 09 09 2F 2A 20 70 6F 69 6E 74 cp);.../* point
01DBB0: 20 6E 65 77 20 65 6E 74 72 79 20 61 68 65 61 64 new entry ahead
01DBC0: 20 2A 2F 0D 0A 20 20 70 75 74 69 6E 74 28 2A 70 */.. putint(*p
01DBD0: 72 65 76 2C 20 6E 65 77 29 3B 09 09 09 2F 2A 20 rev, new);.../*
01DBE0: 70 6F 69 6E 74 20 70 72 65 76 20 65 6E 74 72 79 point prev entry
01DBF0: 20 68 65 72 65 20 2A 2F 0D 0A 20 20 2A 70 72 65 here */.. *pre
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: 6F 66 20 3D 20 45 4F 46 3B 0D 0A 20 20 63 64 69 of = EOF;.. cdi
01DD10: 73 6B 20 3D 20 2D 31 3B 09 09 09 09 2F 2A 20 68 sk = -1;..../* h
01DD20: 69 67 68 20 76 61 6C 75 65 20 66 6F 72 20 70 6F igh value for po
01DD30: 69 6E 74 65 72 20 2A 2F 0D 0A 20 20 69 66 28 6C inter */.. if(l
01DD40: 67 6F 29 20 69 6E 73 74 72 20 3D 20 52 45 54 3B go) instr = RET;
01DD50: 09 09 09 2F 2A 20 6C 6F 61 64 20 61 6E 64 20 67 .../* load and g
01DD60: 6F 20 66 6F 72 6D 61 74 20 2A 2F 0D 0A 20 20 65 o format */.. e
01DD70: 6C 73 65 20 7B 69 6E 73 74 72 20 3D 20 4A 4D 50 lse {instr = JMP
01DD80: 3B 20 63 62 61 73 65 20 3D 20 43 4F 4D 42 41 53 ; cbase = COMBAS
01DD90: 45 3B 7D 09 2F 2A 20 43 4F 4D 20 66 69 6C 65 20 E;}./* COM file
01DDA0: 66 6F 72 6D 61 74 20 2A 2F 0D 0A 20 20 69 20 3D format */.. i =
01DDB0: 20 30 3B 0D 0A 20 20 77 68 69 6C 65 28 67 65 74 0;.. while(get
01DDC0: 61 72 67 28 2B 2B 69 2C 20 69 6E 66 6E 2C 20 4E arg(++i, infn, N
01DDD0: 41 4D 45 53 49 5A 45 2C 20 61 72 67 63 2C 20 61 AMESIZE, argc, a
01DDE0: 72 67 76 29 20 21 3D 20 45 4F 46 29 20 7B 0D 0A rgv) != EOF) {..
01DDF0: 20 20 20 20 69 66 28 69 6E 66 6E 5B 30 5D 20 3D if(infn[0] =
01DE00: 3D 20 27 2D 27 29 20 63 6F 6E 74 69 6E 75 65 3B = '-') continue;
01DE10: 09 2F 2A 20 73 6B 69 70 20 73 77 69 74 63 68 65 ./* skip switche
01DE20: 73 20 2A 2F 0D 0A 20 20 20 20 69 66 28 65 78 74 s */.. if(ext
01DE30: 65 6E 64 28 69 6E 66 6E 2C 20 4D 4F 44 45 58 54 end(infn, MODEXT
01DE40: 2C 20 4C 49 42 45 58 54 29 29 0D 0A 20 20 20 20 , LIBEXT))..
01DE50: 20 20 20 20 20 6C 69 62 20 3D 20 59 45 53 3B 0D lib = YES;.
01DE60: 0A 20 20 20 20 65 6C 73 65 20 6C 69 62 20 3D 20 . else lib =
01DE70: 4E 4F 3B 0D 0A 20 20 20 20 69 66 28 21 2A 6F 75 NO;.. if(!*ou
01DE80: 74 66 6E 29 20 7B 09 09 09 2F 2A 20 66 69 72 73 tfn) {.../* firs
01DE90: 74 20 66 69 6C 65 20 6E 61 6D 65 20 2A 2F 0D 0A t file name */..
01DEA0: 20 20 20 20 20 20 69 66 28 6C 67 6F 29 20 6E 65 if(lgo) ne
01DEB0: 77 66 6E 28 6F 75 74 66 6E 2C 20 69 6E 66 6E 2C wfn(outfn, infn,
01DEC0: 20 4C 47 4F 45 58 54 29 3B 0D 0A 20 20 20 20 20 LGOEXT);..
01DED0: 20 65 6C 73 65 20 20 20 20 6E 65 77 66 6E 28 6F else newfn(o
01DEE0: 75 74 66 6E 2C 20 69 6E 66 6E 2C 20 43 4F 4D 45 utfn, infn, COME
01DEF0: 58 54 29 3B 0D 0A 20 20 20 20 20 20 6E 65 77 66 XT);.. newf
01DF00: 65 20 2A 2F 0D 0A 20 20 20 20 69 66 28 78 72 70 e */.. if(xrp
01DF10: 6C 75 73 29 20 7B 0D 0A 20 20 20 20 20 20 66 69 lus) {.. fi
01DF20: 65 6C 64 20 2B 3D 20 78 72 70 6C 75 73 3B 09 09 eld += xrplus;..
01DF30: 2F 2A 20 61 70 70 6C 79 20 6F 66 66 73 65 74 20 /* apply offset
01DF40: 2A 2F 0D 0A 20 20 20 20 20 20 78 72 70 6C 75 73 */.. xrplus
01DF50: 20 3D 20 30 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A = 0;.. }..
01DF60: 20 20 20 20 77 72 69 74 65 28 6F 75 74 66 64 2C write(outfd,
01DF70: 20 26 66 69 65 6C 64 2C 20 32 29 3B 09 2F 2A 20 &field, 2);./*
01DF80: 63 6F 70 79 20 32 20 62 79 74 65 73 20 61 64 6A copy 2 bytes adj
01DF90: 75 73 74 65 64 20 2A 2F 0D 0A 20 20 20 20 72 65 usted */.. re
01DFA0: 61 64 72 65 66 28 29 3B 09 09 09 2F 2A 20 67 65 adref();.../* ge
01DFB0: 74 20 6E 65 78 74 20 72 65 66 65 72 65 6E 63 65 t next reference
01DFC0: 20 2A 2F 0D 0A 20 20 20 20 2B 2B 63 6C 6F 63 3B */.. ++cloc;
01DFD0: 09 09 09 2F 2A 20 6E 65 65 64 20 61 64 64 69 74 .../* need addit
01DFE0: 69 6F 6E 61 6C 20 69 6E 63 72 65 6D 65 6E 74 20 ional increment
01DFF0: 2A 2F 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 */.. }.. if(
01E000: 66 65 72 72 6F 72 28 6F 75 74 66 64 29 29 20 20 ferror(outfd))
01E010: 65 72 72 6F 72 32 28 22 2D 20 45 72 72 6F 72 20 error2("- Error
01E020: 57 72 69 74 69 6E 67 20 22 2C 20 6F 75 74 66 6E Writing ", outfn
01E030: 29 3B 0D 0A 20 20 63 6C 6F 73 65 28 6F 75 74 66 );.. close(outf
01E040: 64 29 3B 0D 0A 20 20 69 66 28 63 73 66 64 29 20 d);.. if(csfd)
01E050: 7B 0D 0A 20 20 20 20 69 66 28 66 65 72 72 6F 72 {.. if(ferror
01E060: 28 63 73 66 64 29 29 20 65 72 72 6F 72 32 28 22 (csfd)) error2("
01E070: 2D 20 45 72 72 6F 72 20 52 65 61 64 69 6E 67 20 - Error Reading
01E080: 22 2C 20 63 73 66 6E 29 3B 0D 0A 20 20 20 20 63 ", csfn);.. c
01E090: 6C 6F 73 65 28 63 73 66 64 29 3B 0D 0A 20 20 20 lose(csfd);..
01E0A0: 20 64 65 6C 65 74 65 28 63 73 66 6E 29 3B 0D 0A delete(csfn);..
01E0B0: 20 20 20 20 7D 0D 0A 20 20 69 66 28 66 65 72 72 }.. if(ferr
01E0C0: 6F 72 28 63 72 66 64 29 29 20 20 20 65 72 72 6F or(crfd)) erro
01E0D0: 72 32 28 22 2D 20 45 72 72 6F 72 20 52 65 61 64 r2("- Error Read
01E0E0: 69 6E 67 20 22 2C 20 63 72 66 6E 29 3B 0D 0A 20 ing ", crfn);..
01E0F0: 20 63 6C 6F 73 65 28 63 72 66 64 29 3B 0D 0A 20 close(crfd);..
01E100: 6E 28 63 73 66 6E 2C 20 69 6E 66 6E 2C 20 4F 46 n(csfn, infn, OF
01E110: 4C 45 58 54 29 3B 0D 0A 20 20 20 20 20 20 6E 65 LEXT);.. ne
01E120: 77 66 6E 28 63 72 66 6E 2C 20 69 6E 66 6E 2C 20 wfn(crfn, infn,
01E130: 52 45 46 45 58 54 29 3B 0D 0A 20 20 20 20 20 20 REFEXT);..
01E140: 63 72 66 64 20 3D 20 6F 70 65 6E 28 63 72 66 6E crfd = open(crfn
01E150: 2C 20 22 77 2B 22 29 3B 09 09 2F 2A 20 6F 70 65 , "w+");../* ope
01E160: 6E 20 72 65 66 65 72 65 6E 63 65 20 66 69 6C 65 n reference file
01E170: 20 2A 2F 0D 0A 20 20 20 20 20 20 61 75 78 62 75 */.. auxbu
01E180: 66 28 63 72 66 64 2C 20 41 55 58 42 55 46 29 3B f(crfd, AUXBUF);
01E190: 09 2F 2A 20 65 78 74 72 61 20 62 75 66 66 65 72 ./* extra buffer
01E1A0: 69 6E 67 20 6C 6F 77 65 72 73 20 68 65 61 64 20 ing lowers head
01E1B0: 6D 6F 76 65 6D 65 6E 74 20 2A 2F 0D 0A 20 20 20 movement */..
01E1C0: 20 20 20 7D 0D 0A 20 20 20 20 69 66 28 6C 69 62 }.. if(lib
01E1D0: 29 20 73 65 61 72 63 68 28 29 3B 09 2F 2A 20 73 ) search();./* s
01E1E0: 65 61 72 63 68 20 6C 69 62 72 61 72 79 20 69 66 earch library if
01E1F0: 20 75 6E 72 65 73 6F 6C 76 65 64 20 65 78 74 20 unresolved ext
01E200: 72 65 66 73 20 2A 2F 0D 0A 20 20 20 20 65 6C 73 refs */.. els
01E210: 65 20 7B 0D 0A 20 20 20 20 20 20 69 6E 72 65 6C e {.. inrel
01E220: 20 3D 20 6F 70 65 6E 28 69 6E 66 6E 2C 20 22 72 = open(infn, "r
01E230: 22 29 3B 09 09 2F 2A 20 6D 75 73 74 20 6F 70 65 ");../* must ope
01E240: 6E 20 2A 2F 0D 0A 20 20 20 20 20 20 67 65 74 6E n */.. getn
01E250: 61 6D 65 28 29 3B 09 09 09 2F 2A 20 70 72 6F 67 ame();.../* prog
01E260: 72 61 6D 20 6E 61 6D 65 20 2A 2F 0D 0A 20 20 20 ram name */..
01E270: 20 20 20 6C 6F 61 64 28 29 3B 09 09 09 09 2F 2A load();..../*
01E280: 20 6C 6F 61 64 20 6D 6F 64 75 6C 65 20 2A 2F 0D load module */.
01E290: 0A 20 20 20 20 20 20 6C 69 6E 6B 28 29 3B 09 09 . link();..
01E2A0: 09 09 2F 2A 20 6C 69 6E 6B 20 70 72 65 76 69 6F ../* link previo
01E2B0: 75 73 20 6D 6F 64 75 6C 65 73 20 2A 2F 0D 0A 20 us modules */..
01E2C0: 20 20 20 20 20 63 6C 6F 73 65 28 69 6E 72 65 6C close(inrel
01E2D0: 29 3B 09 09 09 2F 2A 20 6D 75 73 74 20 63 6C 6F );.../* must clo
01E2E0: 73 65 20 2A 2F 0D 0A 20 20 20 20 20 20 7D 0D 0A se */.. }..
01E2F0: 20 20 20 20 7D 0D 0A 20 20 69 66 28 21 2A 6F 75 }.. if(!*ou
01E300: 20 64 65 6C 65 74 65 28 63 72 66 6E 29 3B 0D 0A delete(crfn);..
01E310: 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 72 65 }..../*..** re
01E320: 61 64 20 6E 65 78 74 20 72 65 66 65 72 65 6E 63 ad next referenc
01E330: 65 0D 0A 2A 2F 0D 0A 72 65 61 64 72 65 66 28 29 e..*/..readref()
01E340: 20 7B 0D 0A 20 20 72 65 61 64 28 63 72 66 64 2C {.. read(crfd,
01E350: 20 26 72 65 66 2C 20 32 29 3B 09 09 09 2F 2A 20 &ref, 2);.../*
01E360: 67 65 74 20 6E 65 78 74 20 72 65 66 65 72 65 6E get next referen
01E370: 63 65 20 2A 2F 0D 0A 20 20 69 66 28 72 65 66 20 ce */.. if(ref
01E380: 3D 3D 20 58 52 50 4C 55 53 29 20 7B 09 09 09 2F == XRPLUS) {.../
01E390: 2A 20 65 78 74 20 72 65 66 20 6F 66 66 73 65 74 * ext ref offset
01E3A0: 20 66 6C 61 67 3F 20 2A 2F 0D 0A 20 20 20 20 72 flag? */.. r
01E3B0: 65 61 64 28 63 72 66 64 2C 20 26 78 72 70 6C 75 ead(crfd, &xrplu
01E3C0: 73 2C 20 32 29 3B 09 09 2F 2A 20 79 65 73 2C 20 s, 2);../* yes,
01E3D0: 67 65 74 20 6F 66 66 73 65 74 20 76 61 6C 75 65 get offset value
01E3E0: 20 2A 2F 0D 0A 20 20 20 20 72 65 61 64 28 63 72 */.. read(cr
01E3F0: 66 64 2C 20 26 72 65 66 2C 20 32 29 3B 09 09 2F fd, &ref, 2);../
01E400: 2A 20 74 68 65 6E 20 67 65 74 20 72 65 66 65 72 * then get refer
01E410: 65 6E 63 65 20 2A 2F 0D 0A 20 20 20 20 7D 0D 0A ence */.. }..
01E420: 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 72 65 }..../*..** re
01E430: 73 6F 6C 76 65 20 65 78 74 65 72 6E 61 6C 20 72 solve external r
01E440: 65 66 65 72 65 6E 63 65 73 20 74 6F 20 61 20 67 eferences to a g
01E450: 69 76 65 6E 20 73 79 6D 62 6F 6C 0D 0A 2A 2F 0D iven symbol..*/.
01E460: 0A 72 65 73 6F 6C 76 65 28 29 20 7B 0D 0A 20 20 .resolve() {..
01E470: 63 68 61 72 20 61 74 5B 35 5D 3B 0D 0A 20 20 69 char at[5];.. i
01E480: 66 28 21 28 78 72 20 3D 20 67 65 74 69 6E 74 28 f(!(xr = getint(
01E490: 78 72 6E 65 78 74 20 2B 20 56 41 4C 29 29 29 20 xrnext + VAL)))
01E4A0: 72 65 74 75 72 6E 3B 09 2F 2A 20 68 65 61 64 20 return;./* head
01E4B0: 6F 66 20 65 78 74 20 72 65 66 20 63 68 61 69 6E of ext ref chain
01E4C0: 20 2A 2F 0D 0A 20 20 65 70 20 3D 20 67 65 74 69 */.. ep = geti
01E4D0: 6E 74 28 65 70 6E 65 78 74 20 2B 20 56 41 4C 29 nt(epnext + VAL)
01E4E0: 3B 09 09 09 2F 2A 20 65 6E 74 72 79 20 70 6F 69 ;.../* entry poi
01E4F0: 6E 74 20 61 64 64 72 65 73 73 20 2A 2F 0D 0A 20 nt address */..
01E500: 74 66 6E 29 20 75 73 61 67 65 28 29 3B 0D 0A 20 tfn) usage();..
01E510: 20 69 66 28 2A 74 6D 66 6E 29 20 7B 09 09 09 09 if(*tmfn) {....
01E520: 2F 2A 20 6D 75 73 74 20 67 65 74 20 74 65 72 6D /* must get term
01E530: 69 6E 61 6C 20 6D 6F 64 75 6C 65 20 2A 2F 0D 0A inal module */..
01E540: 20 20 20 20 69 6E 72 65 6C 20 3D 20 6F 70 65 6E inrel = open
01E550: 28 74 6D 66 6E 2C 20 22 72 22 29 3B 0D 0A 20 20 (tmfn, "r");..
01E560: 20 20 69 6E 62 6C 6F 63 6B 20 3D 20 74 6D 62 6C inblock = tmbl
01E570: 6F 63 6B 3B 20 69 6E 62 79 74 65 20 3D 20 74 6D ock; inbyte = tm
01E580: 62 79 74 65 3B 0D 0A 20 20 20 20 73 65 65 6B 28 byte;.. seek(
01E590: 29 3B 20 67 65 74 6E 61 6D 65 28 29 3B 20 6C 6F ); getname(); lo
01E5A0: 61 64 28 29 3B 20 6C 69 6E 6B 28 29 3B 0D 0A 20 ad(); link();..
01E5B0: 20 20 20 63 6C 6F 73 65 28 69 6E 72 65 6C 29 3B close(inrel);
01E5C0: 0D 0A 20 20 20 20 7D 0D 0A 20 20 63 73 69 7A 65 .. }.. csize
01E5D0: 20 3D 20 63 6C 6F 63 3B 0D 0A 20 20 69 66 28 66 = cloc;.. if(f
01E5E0: 65 72 72 6F 72 28 63 72 66 64 29 29 20 65 72 72 error(crfd)) err
01E5F0: 6F 72 32 28 22 2D 20 45 72 72 6F 72 20 57 72 69 or2("- Error Wri
01E600: 74 69 6E 67 20 22 2C 20 63 72 66 6E 29 3B 0D 0A ting ", crfn);..
01E610: 20 20 77 72 69 74 65 28 63 72 66 64 2C 20 26 65 write(crfd, &e
01E620: 6F 66 2C 20 32 29 3B 0D 0A 20 20 72 65 77 69 6E of, 2);.. rewin
01E630: 64 28 63 72 66 64 29 3B 0D 0A 20 20 69 66 28 66 d(crfd);.. if(f
01E640: 65 72 72 6F 72 28 63 73 66 64 29 29 20 65 72 72 error(csfd)) err
01E650: 6F 72 32 28 22 2D 20 45 72 72 6F 72 20 57 72 69 or2("- Error Wri
01E660: 74 69 6E 67 20 22 2C 20 63 73 66 6E 29 3B 0D 0A ting ", csfn);..
01E670: 20 20 72 65 77 69 6E 64 28 63 73 66 64 29 3B 0D rewind(csfd);.
01E680: 0A 20 20 69 74 6F 78 28 63 73 69 7A 65 2C 20 73 . itox(csize, s
01E690: 7A 2C 20 38 29 3B 20 70 75 74 73 32 28 73 7A 2C z, 8); puts2(sz,
01E6A0: 20 22 20 42 79 74 65 73 20 28 68 65 78 29 22 29 " Bytes (hex)")
01E6B0: 3B 0D 0A 20 20 69 74 6F 75 28 63 73 69 7A 65 2C ;.. itou(csize,
01E6C0: 20 73 7A 2C 20 38 29 3B 20 70 75 74 73 32 28 73 sz, 8); puts2(s
01E6D0: 7A 2C 20 22 20 42 79 74 65 73 20 28 64 65 63 29 z, " Bytes (dec)
01E6E0: 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A ");.. }..../*..
01E6F0: 2A 2A 20 67 65 6E 65 72 61 74 65 20 61 62 73 6F ** generate abso
01E700: 20 64 6F 20 7B 0D 0A 23 69 66 64 65 66 20 44 45 do {..#ifdef DE
01E710: 42 55 47 0D 0A 20 20 20 20 69 66 28 6D 6F 6E 69 BUG.. if(moni
01E720: 74 6F 72 29 20 7B 0D 0A 20 20 20 20 20 20 70 6F tor) {.. po
01E730: 6C 6C 28 59 45 53 29 3B 0D 0A 20 20 20 20 20 20 ll(YES);..
01E740: 66 70 75 74 73 28 22 52 65 73 6F 6C 76 69 6E 67 fputs("Resolving
01E750: 20 22 2C 20 73 74 64 6F 75 74 29 3B 0D 0A 20 20 ", stdout);..
01E760: 20 20 20 20 69 74 6F 78 28 78 72 2C 20 61 74 2C itox(xr, at,
01E770: 20 35 29 3B 20 66 70 75 74 73 28 61 74 2C 20 73 5); fputs(at, s
01E780: 74 64 6F 75 74 29 3B 0D 0A 20 20 20 20 20 20 66 tdout);.. f
01E790: 70 75 74 73 28 22 20 74 6F 20 22 2C 20 73 74 64 puts(" to ", std
01E7A0: 6F 75 74 29 3B 0D 0A 20 20 20 20 20 20 69 74 6F out);.. ito
01E7B0: 78 28 65 70 2C 20 61 74 2C 20 35 29 3B 20 66 70 x(ep, at, 5); fp
01E7C0: 75 74 73 28 61 74 2C 20 73 74 64 6F 75 74 29 3B uts(at, stdout);
01E7D0: 0D 0A 20 20 20 20 20 20 70 75 74 73 32 28 22 20 .. puts2("
01E7E0: 22 2C 20 78 72 6E 65 78 74 20 2B 20 53 59 4D 29 ", xrnext + SYM)
01E7F0: 3B 20 20 20 20 0D 0A 20 20 20 20 20 20 7D 0D 0A ; .. }..
01E800: 23 65 6E 64 69 66 0D 0A 20 20 20 20 69 66 28 78 #endif.. if(x
01E810: 72 20 3C 20 63 64 69 73 6B 29 20 7B 09 09 09 09 r < cdisk) {....
01E820: 2F 2A 20 69 6E 20 6D 65 6D 6F 72 79 20 2A 2F 0D /* in memory */.
01E830: 0A 20 20 20 20 20 20 6E 78 74 20 3D 20 67 65 74 . nxt = get
01E840: 69 6E 74 28 78 72 20 2B 20 62 75 66 66 65 72 29 int(xr + buffer)
01E850: 3B 20 20 0D 0A 20 20 20 20 20 20 69 66 28 6E 78 ; .. if(nx
01E860: 74 20 3D 3D 20 30 29 20 65 70 20 2B 3D 20 63 62 t == 0) ep += cb
01E870: 61 73 65 3B 09 09 2F 2A 20 65 6E 64 20 6F 66 20 ase;../* end of
01E880: 63 68 61 69 6E 20 69 73 20 61 62 73 6F 6C 75 74 chain is absolut
01E890: 65 20 2A 2F 0D 0A 20 20 20 20 20 20 70 75 74 69 e */.. puti
01E8A0: 6E 74 28 78 72 20 2B 20 62 75 66 66 65 72 2C 20 nt(xr + buffer,
01E8B0: 65 70 29 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 ep);.. }..
01E8C0: 20 20 20 65 6C 73 65 20 7B 09 09 09 09 09 2F 2A else {...../*
01E8D0: 20 6F 6E 20 64 69 73 6B 20 2A 2F 0D 0A 20 20 20 on disk */..
01E8E0: 20 20 20 78 72 73 65 65 6B 28 78 72 20 2D 20 63 xrseek(xr - c
01E8F0: 64 69 73 6B 29 3B 20 72 65 61 64 28 63 73 66 64 disk); read(csfd
01E900: 6C 75 74 65 20 6F 75 74 70 75 74 20 69 6E 20 43 lute output in C
01E910: 4F 4D 20 6F 72 20 4C 47 4F 20 66 6F 72 6D 61 74 OM or LGO format
01E920: 0D 0A 2A 2A 0D 0A 2A 2A 20 43 4F 4D 20 66 6F 72 ..**..** COM for
01E930: 6D 61 74 3A 20 4A 4D 50 20 3C 73 74 61 72 74 3E mat: JMP <start>
01E940: 20 3C 70 72 6F 67 72 61 6D 3E 0D 0A 2A 2A 0D 0A <program>..**..
01E950: 2A 2A 20 4C 47 4F 20 66 6F 72 6D 61 74 3A 20 52 ** LGO format: R
01E960: 45 54 20 3C 73 74 61 72 74 3E 20 3C 70 72 6F 67 ET <start> <prog
01E970: 2D 62 61 73 65 3E 20 3C 70 72 6F 67 2D 73 69 7A -base> <prog-siz
01E980: 65 3E 20 3C 70 72 6F 67 72 61 6D 3E 0D 0A 2A 2F e> <program>..*/
01E990: 0D 0A 70 68 61 73 65 32 28 29 20 7B 0D 0A 20 20 ..phase2() {..
01E9A0: 63 68 61 72 20 61 74 5B 35 5D 3B 0D 0A 20 20 6F char at[5];.. o
01E9B0: 75 74 66 64 20 3D 20 6F 70 65 6E 28 6F 75 74 66 utfd = open(outf
01E9C0: 6E 2C 20 22 77 22 29 3B 0D 0A 20 20 77 72 69 74 n, "w");.. writ
01E9D0: 65 28 6F 75 74 66 64 2C 20 26 69 6E 73 74 72 2C e(outfd, &instr,
01E9E0: 20 31 29 3B 09 2F 2A 20 70 6C 61 6E 74 20 66 69 1);./* plant fi
01E9F0: 72 73 74 20 69 6E 73 74 72 75 63 74 69 6F 6E 20 rst instruction
01EA00: 2A 2F 0D 0A 20 20 61 64 64 72 20 3D 20 63 62 61 */.. addr = cba
01EA10: 73 65 20 2B 20 67 6F 6C 6F 63 3B 0D 0A 20 20 77 se + goloc;.. w
01EA20: 72 69 74 65 28 6F 75 74 66 64 2C 20 26 61 64 64 rite(outfd, &add
01EA30: 72 2C 20 32 29 3B 09 2F 2A 20 77 69 74 68 20 69 r, 2);./* with i
01EA40: 74 73 20 61 64 64 72 65 73 73 20 2A 2F 0D 0A 20 ts address */..
01EA50: 20 69 66 28 6C 67 6F 29 20 7B 0D 0A 20 20 20 20 if(lgo) {..
01EA60: 77 72 69 74 65 28 6F 75 74 66 64 2C 20 26 63 62 write(outfd, &cb
01EA70: 61 73 65 2C 20 32 29 3B 09 2F 2A 20 77 68 65 72 ase, 2);./* wher
01EA80: 65 20 74 6F 20 6C 6F 61 64 20 66 6F 72 20 65 78 e to load for ex
01EA90: 65 63 75 74 69 6F 6E 20 2A 2F 0D 0A 20 20 20 20 ecution */..
01EAA0: 77 72 69 74 65 28 6F 75 74 66 64 2C 20 26 63 73 write(outfd, &cs
01EAB0: 69 7A 65 2C 20 32 29 3B 09 2F 2A 20 68 6F 77 20 ize, 2);./* how
01EAC0: 6D 61 6E 79 20 62 79 74 65 73 20 74 6F 20 6C 6F many bytes to lo
01EAD0: 61 64 20 2A 2F 0D 0A 20 20 20 20 7D 0D 0A 20 20 ad */.. }..
01EAE0: 63 6C 6F 63 20 3D 20 2D 31 3B 09 09 09 2F 2A 20 cloc = -1;.../*
01EAF0: 61 6C 6C 6F 77 20 65 66 66 69 63 69 65 6E 74 20 allow efficient
01EB00: 2C 20 26 6E 78 74 2C 20 32 29 3B 0D 0A 20 20 20 , &nxt, 2);..
01EB10: 20 20 20 69 66 28 6E 78 74 20 3D 3D 20 30 29 20 if(nxt == 0)
01EB20: 65 70 20 2B 3D 20 63 62 61 73 65 3B 09 09 2F 2A ep += cbase;../*
01EB30: 20 65 6E 64 20 6F 66 20 63 68 61 69 6E 20 69 73 end of chain is
01EB40: 20 61 62 73 6F 6C 75 74 65 20 2A 2F 0D 0A 20 20 absolute */..
01EB50: 20 20 20 20 78 72 73 65 65 6B 28 78 72 20 2D 20 xrseek(xr -
01EB60: 63 64 69 73 6B 29 3B 20 77 72 69 74 65 28 63 73 cdisk); write(cs
01EB70: 66 64 2C 20 26 65 70 2C 20 32 29 3B 0D 0A 20 20 fd, &ep, 2);..
01EB80: 20 20 20 20 7D 0D 0A 20 20 20 20 7D 20 77 68 69 }.. } whi
01EB90: 6C 65 28 78 72 20 3D 20 6E 78 74 29 3B 0D 0A 20 le(xr = nxt);..
01EBA0: 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 73 65 61 }..../*..** sea
01EBB0: 72 63 68 20 61 20 6C 69 62 72 61 72 79 0D 0A 2A rch a library..*
01EBC0: 2F 0D 0A 73 65 61 72 63 68 28 29 20 7B 0D 0A 20 /..search() {..
01EBD0: 20 69 6E 74 20 6C 69 6E 6B 65 64 3B 0D 0A 20 20 int linked;..
01EBE0: 6C 69 6E 6B 65 64 20 3D 20 4E 4F 3B 0D 0A 20 20 linked = NO;..
01EBF0: 6E 65 77 66 6E 28 6E 64 78 66 6E 2C 20 69 6E 66 newfn(ndxfn, inf
01EC00: 6E 2C 20 4E 44 58 45 58 54 29 3B 0D 0A 20 20 6E n, NDXEXT);.. n
01EC10: 64 78 66 64 20 3D 20 6F 70 65 6E 28 6E 64 78 66 dxfd = open(ndxf
01EC20: 6E 2C 20 22 72 22 29 3B 0D 0A 20 20 69 6E 72 65 n, "r");.. inre
01EC30: 6C 20 3D 20 6F 70 65 6E 28 69 6E 66 6E 2C 20 22 l = open(infn, "
01EC40: 72 22 29 3B 0D 0A 20 20 77 68 69 6C 65 28 59 45 r");.. while(YE
01EC50: 53 29 20 7B 09 09 09 09 09 2F 2A 20 72 65 73 63 S) {...../* resc
01EC60: 61 6E 20 74 69 6C 6C 20 64 6F 6E 65 20 2A 2F 0D an till done */.
01EC70: 0A 20 20 20 20 77 68 69 6C 65 28 6E 78 74 6D 6F . while(nxtmo
01EC80: 64 28 29 29 20 7B 0D 0A 20 20 20 20 20 20 69 66 d()) {.. if
01EC90: 28 73 74 72 63 6D 70 28 6D 6F 64 6E 61 6D 65 2C (strcmp(modname,
01ECA0: 20 54 4D 4E 41 4D 45 29 20 3D 3D 20 30 29 20 7B TMNAME) == 0) {
01ECB0: 09 2F 2A 20 77 69 6C 6C 20 6C 6F 61 64 20 74 68 ./* will load th
01ECC0: 69 73 20 6F 6E 65 20 6C 61 73 74 20 2A 2F 0D 0A is one last */..
01ECD0: 20 20 20 20 20 20 20 20 73 74 72 63 70 79 28 74 strcpy(t
01ECE0: 6D 66 6E 2C 20 69 6E 66 6E 29 3B 0D 0A 20 20 20 mfn, infn);..
01ECF0: 20 20 20 20 20 74 6D 62 6C 6F 63 6B 20 3D 20 69 tmblock = i
01ED00: 70 72 65 2D 69 6E 63 72 65 6D 65 6E 74 20 2A 2F pre-increment */
01ED10: 0D 0A 20 20 72 65 61 64 72 65 66 28 29 3B 09 09 .. readref();..
01ED20: 09 2F 2A 20 67 65 74 20 66 69 72 73 74 20 72 65 ./* get first re
01ED30: 66 65 72 65 6E 63 65 20 2A 2F 0D 0A 20 20 77 68 ference */.. wh
01ED40: 69 6C 65 28 2B 2B 63 6C 6F 63 20 3C 20 63 73 69 ile(++cloc < csi
01ED50: 7A 65 29 20 7B 09 2F 2A 20 77 68 69 6C 65 20 6D ze) {./* while m
01ED60: 6F 72 65 20 63 6F 64 65 20 2A 2F 0D 0A 20 20 20 ore code */..
01ED70: 20 69 66 28 63 6C 6F 63 20 21 3D 20 72 65 66 29 if(cloc != ref)
01ED80: 20 7B 09 09 2F 2A 20 6E 6F 74 20 72 65 6C 61 74 {../* not relat
01ED90: 69 76 65 20 72 65 66 65 72 65 6E 63 65 20 2A 2F ive reference */
01EDA0: 0D 0A 20 20 20 20 20 20 69 66 28 63 6C 6F 63 20 .. if(cloc
01EDB0: 3C 20 63 64 69 73 6B 29 0D 0A 20 20 20 20 20 20 < cdisk)..
01EDC0: 20 20 66 69 65 6C 64 20 3D 20 2A 28 63 6C 6F 63 field = *(cloc
01EDD0: 20 2B 20 62 75 66 66 65 72 29 3B 0D 0A 20 20 20 + buffer);..
01EDE0: 20 20 20 65 6C 73 65 20 72 65 61 64 28 63 73 66 else read(csf
01EDF0: 64 2C 20 26 66 69 65 6C 64 2C 20 31 29 3B 0D 0A d, &field, 1);..
01EE00: 20 20 20 20 20 20 77 72 69 74 65 28 6F 75 74 66 write(outf
01EE10: 64 2C 20 26 66 69 65 6C 64 2C 20 31 29 3B 09 2F d, &field, 1);./
01EE20: 2A 20 63 6F 70 79 20 6F 6E 65 20 62 79 74 65 20 * copy one byte
01EE30: 61 73 20 69 73 20 2A 2F 0D 0A 20 20 20 20 20 20 as is */..
01EE40: 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 continue;..
01EE50: 20 7D 0D 0A 20 20 20 20 69 66 28 63 6C 6F 63 20 }.. if(cloc
01EE60: 3C 20 63 64 69 73 6B 29 09 09 2F 2A 20 67 65 74 < cdisk)../* get
01EE70: 20 6E 65 78 74 20 32 2D 62 79 74 65 20 72 65 6C next 2-byte rel
01EE80: 61 74 69 76 65 20 69 74 65 6D 20 2A 2F 0D 0A 20 ative item */..
01EE90: 20 20 20 20 20 66 69 65 6C 64 20 3D 20 67 65 74 field = get
01EEA0: 69 6E 74 28 63 6C 6F 63 20 2B 20 62 75 66 66 65 int(cloc + buffe
01EEB0: 72 29 3B 0D 0A 20 20 20 20 65 6C 73 65 20 72 65 r);.. else re
01EEC0: 61 64 28 63 73 66 64 2C 20 26 66 69 65 6C 64 2C ad(csfd, &field,
01EED0: 20 32 29 3B 0D 0A 20 20 20 20 66 69 65 6C 64 20 2);.. field
01EEE0: 3D 20 66 69 65 6C 64 20 2B 20 63 62 61 73 65 3B = field + cbase;
01EEF0: 09 2F 2A 20 6D 61 6B 65 20 61 62 73 6F 6C 75 74 ./* make absolut
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: 6E 62 6C 6F 63 6B 3B 0D 0A 20 20 20 20 20 20 20 nblock;..
01F010: 20 74 6D 62 79 74 65 20 3D 20 69 6E 62 79 74 65 tmbyte = inbyte
01F020: 3B 0D 0A 20 20 20 20 20 20 20 20 63 6F 6E 74 69 ;.. conti
01F030: 6E 75 65 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D nue;.. }.
01F040: 0A 20 20 20 20 20 20 77 68 69 6C 65 28 67 65 74 . while(get
01F050: 72 65 6C 28 29 20 3D 3D 20 45 4E 41 4D 45 29 20 rel() == ENAME)
01F060: 7B 0D 0A 20 20 20 20 20 20 20 20 70 6F 6C 6C 28 {.. poll(
01F070: 59 45 53 29 3B 0D 0A 20 20 20 20 20 20 20 20 69 YES);.. i
01F080: 66 28 69 73 75 6E 72 65 73 28 29 29 20 7B 09 09 f(isunres()) {..
01F090: 09 09 2F 2A 20 75 6E 72 65 73 6F 6C 76 65 64 20 ../* unresolved
01F0A0: 72 65 66 65 72 65 6E 63 65 3F 20 2A 2F 0D 0A 20 reference? */..
01F0B0: 20 20 20 20 20 20 20 20 20 6C 6F 61 64 28 29 3B load();
01F0C0: 09 09 09 09 2F 2A 20 6C 6F 61 64 20 6D 6F 64 75 ..../* load modu
01F0D0: 6C 65 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 20 le */..
01F0E0: 20 6C 69 6E 6B 28 29 3B 09 09 09 09 2F 2A 20 6C link();..../* l
01F0F0: 69 6E 6B 20 74 6F 20 70 72 65 76 69 6F 75 73 20 ink to previous
01F100: 6F 6E 65 73 20 2A 2F 0D 0A 20 20 20 20 20 20 20 ones */..
01F110: 20 20 20 6C 69 6E 6B 65 64 20 3D 20 59 45 53 3B linked = YES;
01F120: 0D 0A 20 20 20 20 20 20 20 20 20 20 62 72 65 61 .. brea
01F130: 6B 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 7D 0D k;.. }.
01F140: 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 . }..
01F150: 20 20 7D 0D 0A 20 20 20 20 69 66 28 21 6C 69 6E }.. if(!lin
01F160: 6B 65 64 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 ked) break;..
01F170: 20 6C 69 6E 6B 65 64 20 3D 20 4E 4F 3B 0D 0A 20 linked = NO;..
01F180: 20 20 20 72 65 77 69 6E 64 28 6E 64 78 66 64 29 rewind(ndxfd)
01F190: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 63 6C 6F 73 ;.. }.. clos
01F1A0: 65 28 6E 64 78 66 64 29 3B 0D 0A 20 20 63 6C 6F e(ndxfd);.. clo
01F1B0: 73 65 28 69 6E 72 65 6C 29 3B 0D 0A 20 20 7D 0D se(inrel);.. }.
01F1C0: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 73 65 65 6B 20 74 .../*..** seek t
01F1D0: 6F 20 6E 65 78 74 20 6D 65 6D 62 65 72 20 69 6E o next member in
01F1E0: 20 6F 6C 64 20 6C 69 62 72 61 72 79 0D 0A 2A 2F old library..*/
01F1F0: 0D 0A 73 65 65 6B 28 29 20 7B 0D 0A 20 20 69 66 ..seek() {.. if
01F200: 65 66 69 6E 65 20 4E 41 4D 45 53 49 5A 45 20 20 efine NAMESIZE
01F210: 20 31 35 0D 0A 23 64 65 66 69 6E 65 20 53 54 41 15..#define STA
01F220: 43 4B 20 20 20 20 20 32 35 36 09 09 2F 2A 20 61 CK 256../* a
01F230: 6C 6C 6F 77 20 66 6F 72 20 73 74 61 63 6B 20 73 llow for stack s
01F240: 70 61 63 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 pace */..#define
01F250: 20 52 45 54 20 20 20 20 20 20 20 32 30 31 09 09 RET 201..
01F260: 2F 2A 20 52 45 54 20 69 6E 73 74 72 75 63 74 69 /* RET instructi
01F270: 6F 6E 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4C on */..#define L
01F280: 47 4F 45 58 54 20 20 22 2E 4C 47 4F 22 0D 0A 0D GOEXT ".LGO"...
01F290: 0A 2F 2A 0D 0A 2A 2A 20 67 6C 6F 62 61 6C 20 76 ./*..** global v
01F2A0: 61 72 69 61 62 6C 65 73 0D 0A 2A 2F 0D 0A 63 68 ariables..*/..ch
01F2B0: 61 72 0D 0A 20 2A 62 61 73 65 2C 09 09 09 2F 2A ar.. *base,.../*
01F2C0: 20 62 61 73 65 20 61 64 64 72 65 73 73 20 2A 2F base address */
01F2D0: 0D 0A 20 2A 73 74 61 72 74 2C 09 09 2F 2A 20 73 .. *start,../* s
01F2E0: 74 61 72 74 69 6E 67 20 61 64 64 72 65 73 73 20 tarting address
01F2F0: 2A 2F 0D 0A 20 20 69 6E 66 6E 5B 4E 41 4D 45 53 */.. infn[NAMES
01F300: 49 5A 45 5D 3B 09 2F 2A 20 69 6E 70 75 74 20 66 IZE];./* input f
01F310: 69 6C 65 6E 61 6D 65 20 2A 2F 0D 0A 0D 0A 69 6E ilename */....in
01F320: 74 0D 0A 20 20 69 6E 66 64 2C 09 09 09 2F 2A 20 t.. infd,.../*
01F330: 69 6E 70 75 74 20 66 64 20 2A 2F 0D 0A 20 20 73 input fd */.. s
01F340: 69 7A 65 2C 09 09 09 2F 2A 20 70 72 6F 67 72 61 ize,.../* progra
01F350: 6D 20 73 69 7A 65 20 2A 2F 0D 0A 20 20 6D 6F 6E m size */.. mon
01F360: 69 74 6F 72 2C 09 09 2F 2A 20 6D 6F 6E 69 74 6F itor,../* monito
01F370: 72 20 61 63 74 69 76 69 74 79 3F 20 2A 2F 0D 0A r activity? */..
01F380: 20 20 67 6F 3B 09 09 09 2F 2A 20 65 78 65 63 75 go;.../* execu
01F390: 74 65 3F 20 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A te? */..../*..**
01F3A0: 20 6C 6F 61 64 20 70 72 6F 67 72 61 6D 2E 4C 47 load program.LG
01F3B0: 4F 20 77 69 74 68 20 66 6F 72 6D 61 74 3A 0D 0A O with format:..
01F3C0: 2A 2A 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 **..**
01F3D0: 20 20 52 45 54 20 3C 73 74 61 72 74 3E 20 3C 62 RET <start> <b
01F3E0: 61 73 65 3E 20 3C 73 69 7A 65 3E 20 3C 70 72 6F ase> <size> <pro
01F3F0: 67 72 61 6D 3E 0D 0A 2A 2F 0D 0A 6D 61 69 6E 28 gram>..*/..main(
01F400: 28 69 6E 62 6C 6F 63 6B 20 3D 3D 20 45 4F 46 29 (inblock == EOF)
01F410: 20 65 72 72 6F 72 28 22 2D 20 50 72 65 6D 61 74 error("- Premat
01F420: 75 72 65 20 45 6E 64 20 6F 66 20 49 6E 64 65 78 ure End of Index
01F430: 22 29 3B 0D 0A 20 20 69 66 28 63 73 65 65 6B 28 ");.. if(cseek(
01F440: 69 6E 72 65 6C 2C 20 69 6E 62 6C 6F 63 6B 2C 20 inrel, inblock,
01F450: 30 29 20 3D 3D 20 45 4F 46 29 0D 0A 20 20 20 20 0) == EOF)..
01F460: 65 72 72 6F 72 28 22 2D 20 43 6F 72 72 75 70 74 error("- Corrupt
01F470: 20 4C 69 62 72 61 72 79 20 6F 72 20 49 6E 64 65 Library or Inde
01F480: 78 22 29 3B 0D 0A 20 20 55 63 68 72 70 6F 73 5B x");.. Uchrpos[
01F490: 69 6E 72 65 6C 5D 20 3D 20 69 6E 62 79 74 65 3B inrel] = inbyte;
01F4A0: 0D 0A 20 20 69 6E 72 65 6D 20 3D 20 30 3B 09 09 .. inrem = 0;..
01F4B0: 09 2F 2A 20 66 6F 72 63 65 20 67 65 74 72 65 6C ./* force getrel
01F4C0: 28 29 20 74 6F 20 72 65 61 64 20 61 20 62 79 74 () to read a byt
01F4D0: 65 20 2A 2F 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D e */.. }..../*.
01F4E0: 0A 2A 2A 20 61 62 6F 72 74 20 77 69 74 68 20 61 .** abort with a
01F4F0: 20 75 73 61 67 65 20 6D 65 73 73 61 67 65 0D 0A usage message..
01F500: 2A 2F 0D 0A 75 73 61 67 65 28 29 20 7B 0D 0A 20 */..usage() {..
01F510: 20 65 72 72 6F 72 28 22 55 73 61 67 65 3A 20 4C error("Usage: L
01F520: 4E 4B 20 5B 2D 42 5D 20 5B 2D 47 23 5D 20 5B 2D NK [-B] [-G#] [-
01F530: 4D 5D 20 70 72 6F 67 72 61 6D 20 5B 6D 6F 64 75 M] program [modu
01F540: 6C 65 2F 6C 69 62 72 61 72 79 2E 2E 2E 5D 22 29 le/library...]")
01F550: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ;.. }..../*..**
01F560: 20 73 65 65 6B 20 65 78 74 65 72 6E 61 6C 20 72 seek external r
01F570: 65 66 65 72 65 6E 63 65 0D 0A 2A 2F 0D 0A 78 72 eference..*/..xr
01F580: 73 65 65 6B 28 62 79 74 65 29 20 69 6E 74 20 62 seek(byte) int b
01F590: 79 74 65 3B 20 7B 0D 0A 20 20 69 66 28 63 73 65 yte; {.. if(cse
01F5A0: 65 6B 28 63 73 66 64 2C 20 28 62 79 74 65 20 3E ek(csfd, (byte >
01F5B0: 3E 20 37 29 20 26 20 35 31 31 2C 20 30 29 20 3D > 7) & 511, 0) =
01F5C0: 3D 20 45 4F 46 29 0D 0A 20 20 20 20 65 72 72 6F = EOF).. erro
01F5D0: 72 32 28 22 2D 20 53 65 65 6B 20 45 72 72 6F 72 r2("- Seek Error
01F5E0: 20 69 6E 20 22 2C 20 63 73 66 6E 29 3B 0D 0A 20 in ", csfn);..
01F5F0: 20 55 63 68 72 70 6F 73 5B 63 73 66 64 5D 20 3D Uchrpos[csfd] =
01F600: 61 72 67 63 2C 61 72 67 76 29 20 69 6E 74 20 61 argc,argv) int a
01F610: 72 67 63 2C 20 61 72 67 76 5B 5D 3B 20 7B 0D 0A rgc, argv[]; {..
01F620: 20 20 69 6E 74 20 69 3B 20 63 68 61 72 20 73 74 int i; char st
01F630: 72 5B 35 5D 3B 0D 0A 20 20 66 70 75 74 73 28 22 r[5];.. fputs("
01F640: 53 6D 61 6C 6C 2D 4D 61 63 20 4C 6F 61 64 2D 61 Small-Mac Load-a
01F650: 6E 64 2D 47 6F 20 4C 6F 61 64 65 72 2C 20 22 2C nd-Go Loader, ",
01F660: 20 73 74 64 65 72 72 29 3B 20 66 70 75 74 73 28 stderr); fputs(
01F670: 56 45 52 53 49 4F 4E 2C 20 73 74 64 65 72 72 29 VERSION, stderr)
01F680: 3B 0D 0A 20 20 66 70 75 74 73 28 43 52 49 47 48 ;.. fputs(CRIGH
01F690: 54 31 2C 20 73 74 64 65 72 72 29 3B 0D 0A 20 20 T1, stderr);..
01F6A0: 67 65 74 73 77 28 61 72 67 63 2C 20 61 72 67 76 getsw(argc, argv
01F6B0: 29 3B 09 09 09 09 2F 2A 20 70 72 6F 63 65 73 73 );..../* process
01F6C0: 20 73 77 69 74 63 68 65 73 20 2A 2F 0D 0A 20 20 switches */..
01F6D0: 69 20 3D 20 30 3B 0D 0A 20 20 77 68 69 6C 65 28 i = 0;.. while(
01F6E0: 67 65 74 61 72 67 28 2B 2B 69 2C 20 69 6E 66 6E getarg(++i, infn
01F6F0: 2C 20 4E 41 4D 45 53 49 5A 45 2C 20 61 72 67 63 , NAMESIZE, argc
01F700: 2C 20 61 72 67 76 29 20 21 3D 20 45 4F 46 29 09 , argv) != EOF).
01F710: 2F 2A 20 67 65 74 20 66 6E 20 2A 2F 0D 0A 20 20 /* get fn */..
01F720: 20 20 69 66 28 69 6E 66 6E 5B 30 5D 20 21 3D 20 if(infn[0] !=
01F730: 27 2D 27 29 20 7B 69 20 3D 20 30 3B 20 62 72 65 '-') {i = 0; bre
01F740: 61 6B 3B 7D 0D 0A 20 20 69 66 28 69 29 20 75 73 ak;}.. if(i) us
01F750: 61 67 65 28 29 3B 0D 0A 20 20 65 78 74 65 6E 64 age();.. extend
01F760: 28 69 6E 66 6E 2C 20 4C 47 4F 45 58 54 2C 20 4C (infn, LGOEXT, L
01F770: 47 4F 45 58 54 29 3B 0D 0A 20 20 69 6E 66 64 20 GOEXT);.. infd
01F780: 3D 20 6F 70 65 6E 28 69 6E 66 6E 2C 20 22 72 22 = open(infn, "r"
01F790: 29 3B 0D 0A 20 20 72 65 61 64 28 69 6E 66 64 2C );.. read(infd,
01F7A0: 20 26 62 61 73 65 2C 20 31 29 3B 0D 0A 20 20 69 &base, 1);.. i
01F7B0: 66 28 62 61 73 65 20 21 3D 20 52 45 54 29 20 65 f(base != RET) e
01F7C0: 72 72 6F 72 28 22 2D 20 49 6E 76 61 6C 69 64 20 rror("- Invalid
01F7D0: 4C 47 4F 20 46 6F 72 6D 61 74 22 29 3B 0D 0A 20 LGO Format");..
01F7E0: 20 72 65 61 64 28 69 6E 66 64 2C 20 26 73 74 61 read(infd, &sta
01F7F0: 72 74 2C 20 32 29 3B 09 09 09 2F 2A 20 67 65 74 rt, 2);.../* get
01F800: 20 62 79 74 65 20 26 20 31 32 37 3B 0D 0A 20 20 byte & 127;..
01F810: 7D 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A }...............
01F820: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
01F830: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
01F840: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
01F850: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
01F860: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
01F870: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
01F880: 78 22 29 3B 0D 0A 20 20 55 63 68 72 70 6F 73 5B x");.. Uchrpos[
01F890: 69 6E 72 65 6C 5D 20 3D 20 69 6E 62 79 74 65 3B inrel] = inbyte;
01F8A0: 0D 0A 20 20 69 6E 72 65 6D 20 3D 20 30 3B 09 09 .. inrem = 0;..
01F8B0: 09 2F 2A 20 66 6F 72 63 65 20 67 65 74 72 65 6C ./* force getrel
01F8C0: 28 29 20 74 6F 20 72 65 61 64 20 61 20 62 79 74 () to read a byt
01F8D0: 65 20 2A 2F 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D e */.. }..../*.
01F8E0: 0A 2A 2A 20 61 62 6F 72 74 20 77 69 74 68 20 61 .** abort with a
01F8F0: 20 75 73 61 67 65 20 6D 65 73 73 61 67 65 0D 0A usage message..
01F900: 2A 2F 0D 0A 75 73 61 67 65 28 29 20 7B 0D 0A 20 */..usage() {..
01F910: 20 65 72 72 6F 72 28 22 55 73 61 67 65 3A 20 4C error("Usage: L
01F920: 4E 4B 20 5B 2D 42 5D 20 5B 2D 47 23 5D 20 5B 2D NK [-B] [-G#] [-
01F930: 4D 5D 20 70 72 6F 67 72 61 6D 20 5B 6D 6F 64 75 M] program [modu
01F940: 6C 65 2F 6C 69 62 72 61 72 79 2E 2E 2E 5D 22 29 le/library...]")
01F950: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ;.. }..../*..**
01F960: 20 73 65 65 6B 20 65 78 74 65 72 6E 61 6C 20 72 seek external r
01F970: 65 66 65 72 65 6E 63 65 0D 0A 2A 2F 0D 0A 78 72 eference..*/..xr
01F980: 73 65 65 6B 28 62 79 74 65 29 20 69 6E 74 20 62 seek(byte) int b
01F990: 79 74 65 3B 20 7B 0D 0A 20 20 69 66 28 63 73 65 yte; {.. if(cse
01F9A0: 65 6B 28 63 73 66 64 2C 20 28 62 79 74 65 20 3E ek(csfd, (byte >
01F9B0: 3E 20 37 29 20 26 20 35 31 31 2C 20 30 29 20 3D > 7) & 511, 0) =
01F9C0: 3D 20 45 4F 46 29 0D 0A 20 20 20 20 65 72 72 6F = EOF).. erro
01F9D0: 72 32 28 22 2D 20 53 65 65 6B 20 45 72 72 6F 72 r2("- Seek Error
01F9E0: 20 69 6E 20 22 2C 20 63 73 66 6E 29 3B 0D 0A 20 in ", csfn);..
01F9F0: 20 55 63 68 72 70 6F 73 5B 63 73 66 64 5D 20 3D Uchrpos[csfd] =
01FA00: 20 73 74 61 72 74 69 6E 67 20 61 64 64 72 65 73 starting addres
01FA10: 73 20 2A 2F 0D 0A 20 20 72 65 61 64 28 69 6E 66 s */.. read(inf
01FA20: 64 2C 20 26 62 61 73 65 2C 20 20 32 29 3B 09 09 d, &base, 2);..
01FA30: 09 2F 2A 20 67 65 74 20 62 61 73 65 20 61 64 64 ./* get base add
01FA40: 72 65 73 73 20 2A 2F 0D 0A 20 20 72 65 61 64 28 ress */.. read(
01FA50: 69 6E 66 64 2C 20 26 73 69 7A 65 2C 20 20 32 29 infd, &size, 2)
01FA60: 3B 09 09 09 2F 2A 20 67 65 74 20 70 72 6F 67 72 ;.../* get progr
01FA70: 61 6D 20 73 69 7A 65 20 2A 2F 0D 0A 20 20 69 66 am size */.. if
01FA80: 28 6D 6F 6E 69 74 6F 72 29 20 7B 09 09 09 09 09 (monitor) {.....
01FA90: 2F 2A 20 6D 6F 6E 69 74 6F 72 3F 20 2A 2F 0D 0A /* monitor? */..
01FAA0: 20 20 20 20 66 70 75 74 73 28 22 46 72 6F 6D 20 fputs("From
01FAB0: 22 2C 20 20 20 20 73 74 64 6F 75 74 29 3B 20 69 ", stdout); i
01FAC0: 74 6F 78 28 62 61 73 65 2C 20 20 20 20 20 20 73 tox(base, s
01FAD0: 74 72 2C 20 35 29 3B 20 66 70 75 74 73 28 73 74 tr, 5); fputs(st
01FAE0: 72 2C 20 73 74 64 6F 75 74 29 3B 0D 0A 20 20 20 r, stdout);..
01FAF0: 20 66 70 75 74 73 28 22 2C 20 54 6F 20 22 2C 20 fputs(", To ",
01FB00: 20 20 20 73 74 64 6F 75 74 29 3B 20 69 74 6F 78 stdout); itox
01FB10: 28 62 61 73 65 2B 73 69 7A 65 2C 20 73 74 72 2C (base+size, str,
01FB20: 20 35 29 3B 20 66 70 75 74 73 28 73 74 72 2C 20 5); fputs(str,
01FB30: 73 74 64 6F 75 74 29 3B 0D 0A 20 20 20 20 66 70 stdout);.. fp
01FB40: 75 74 73 28 22 2C 20 53 69 7A 65 20 22 2C 20 20 uts(", Size ",
01FB50: 73 74 64 6F 75 74 29 3B 20 69 74 6F 78 28 73 69 stdout); itox(si
01FB60: 7A 65 2C 20 20 20 20 20 20 73 74 72 2C 20 35 29 ze, str, 5)
01FB70: 3B 20 66 70 75 74 73 28 73 74 72 2C 20 73 74 64 ; fputs(str, std
01FB80: 6F 75 74 29 3B 0D 0A 20 20 20 20 66 70 75 74 73 out);.. fputs
01FB90: 28 22 2C 20 53 74 61 72 74 20 22 2C 20 73 74 64 (", Start ", std
01FBA0: 6F 75 74 29 3B 20 69 74 6F 78 28 73 74 61 72 74 out); itox(start
01FBB0: 2C 20 20 20 20 20 73 74 72 2C 20 35 29 3B 20 20 , str, 5);
01FBC0: 70 75 74 73 28 73 74 72 29 3B 0D 0A 20 20 20 20 puts(str);..
01FBD0: 7D 0D 0A 20 20 6D 61 6C 6C 6F 63 28 53 54 41 43 }.. malloc(STAC
01FBE0: 4B 29 3B 09 2F 2A 20 6E 65 77 20 6D 61 63 68 69 K);./* new machi
01FBF0: 6E 65 20 73 74 61 63 6B 20 2A 2F 0D 0A 20 20 6D ne stack */.. m
01FC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FCA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FCB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FCC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FCD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FCE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FCF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FD90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FDA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FDB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FDC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FDD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FDE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FDF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01FE00: 61 6C 6C 6F 63 28 31 29 3B 09 09 2F 2A 20 6C 65 alloc(1);../* le
01FE10: 61 76 65 73 20 6E 65 77 20 73 74 61 63 6B 20 61 aves new stack a
01FE20: 64 64 72 65 73 73 20 69 6E 20 48 4C 20 2A 2F 0D ddress in HL */.
01FE30: 0A 20 20 23 61 73 6D 0D 0A 20 20 53 50 48 4C 09 . #asm.. SPHL.
01FE40: 09 09 3B 20 6D 6F 76 65 20 73 74 61 63 6B 0D 0A ..; move stack..
01FE50: 20 20 4C 58 49 20 48 2C 30 09 09 3B 20 43 50 2F LXI H,0..; CP/
01FE60: 4D 20 72 65 74 75 72 6E 0D 0A 20 20 50 55 53 48 M return.. PUSH
01FE70: 20 48 09 09 3B 20 72 65 2D 73 74 61 63 6B 20 43 H..; re-stack C
01FE80: 50 2F 4D 20 72 65 74 75 72 6E 0D 0A 20 20 23 65 P/M return.. #e
01FE90: 6E 64 61 73 6D 0D 0A 20 20 72 65 61 64 28 69 6E ndasm.. read(in
01FEA0: 66 64 2C 20 62 61 73 65 2C 20 73 69 7A 65 29 3B fd, base, size);
01FEB0: 09 09 09 2F 2A 20 6C 6F 61 64 20 70 72 6F 67 72 .../* load progr
01FEC0: 61 6D 20 2A 2F 0D 0A 20 20 69 66 28 66 65 72 72 am */.. if(ferr
01FED0: 6F 72 28 69 6E 66 64 29 29 20 65 72 72 6F 72 32 or(infd)) error2
01FEE0: 28 22 2D 20 45 72 72 6F 72 20 52 65 61 64 69 6E ("- Error Readin
01FEF0: 67 20 22 2C 20 69 6E 66 6E 29 3B 0D 0A 20 20 69 g ", infn);.. i
01FF00: 66 28 67 6F 29 20 7B 09 09 2F 2A 20 65 78 65 63 f(go) {../* exec
01FF10: 75 74 65 20 70 72 6F 67 72 61 6D 3F 20 2A 2F 0D ute program? */.
01FF20: 0A 20 20 20 20 73 74 61 72 74 3B 09 09 2F 2A 20 . start;../*
01FF30: 6C 65 61 76 65 73 20 73 74 61 72 74 69 6E 67 20 leaves starting
01FF40: 61 64 64 72 65 73 73 20 69 6E 20 48 4C 20 2A 2F address in HL */
01FF50: 0D 0A 20 20 20 20 23 61 73 6D 0D 0A 20 20 20 20 .. #asm..
01FF60: 50 43 48 4C 09 09 3B 20 4A 75 6D 70 20 74 6F 20 PCHL..; Jump to
01FF70: 73 74 61 72 74 20 61 64 64 72 65 73 73 20 77 69 start address wi
01FF80: 74 68 0D 0A 09 09 09 3B 20 43 50 2F 4D 20 72 65 th.....; CP/M re
01FF90: 74 75 72 6E 20 6F 6E 20 74 6F 70 20 6F 66 20 74 turn on top of t
01FFA0: 68 69 73 20 73 74 61 63 6B 2E 0D 0A 20 20 20 20 his stack...
01FFB0: 23 65 6E 64 61 73 6D 0D 0A 20 20 20 20 7D 0D 0A #endasm.. }..
01FFC0: 20 20 65 78 69 74 28 30 29 3B 0D 0A 20 20 7D 0D exit(0);.. }.
01FFD0: 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 67 65 74 20 73 77 .../*..** get sw
01FFE0: 69 74 63 68 65 73 20 66 72 6F 6D 20 63 6F 6D 6D itches from comm
01FFF0: 61 6E 64 20 6C 69 6E 65 0D 0A 2A 2F 0D 0A 67 65 and line..*/..ge
020000: 2F 2A 20 0D 0A 2A 2A 20 4C 47 4F 2E 43 20 2D 2D /* ..** LGO.C --
020010: 20 53 6D 61 6C 6C 2D 4D 61 63 20 4C 6F 61 64 2D Small-Mac Load-
020020: 61 6E 64 2D 47 6F 20 4C 6F 61 64 65 72 0D 0A 2A and-Go Loader..*
020030: 2A 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 *..**
020040: 20 20 20 20 43 6F 70 79 72 69 67 68 74 20 31 39 Copyright 19
020050: 38 35 20 4A 2E 20 45 2E 20 48 65 6E 64 72 69 78 85 J. E. Hendrix
020060: 0D 0A 2A 2A 0D 0A 2A 2A 20 55 73 61 67 65 3A 20 ..**..** Usage:
020070: 4C 47 4F 20 5B 2D 47 5D 20 5B 2D 4D 5D 20 70 72 LGO [-G] [-M] pr
020080: 6F 67 72 61 6D 0D 0A 2A 2A 0D 0A 2A 2A 20 2D 47 ogram..**..** -G
020090: 20 20 20 20 20 45 78 65 63 75 74 65 20 70 72 6F Execute pro
0200A0: 67 72 61 6D 20 61 66 74 65 72 20 6C 6F 61 64 69 gram after loadi
0200B0: 6E 67 2E 0D 0A 2A 2A 0D 0A 2A 2A 20 2D 4D 20 20 ng...**..** -M
0200C0: 20 20 20 4D 6F 6E 69 74 6F 72 20 6C 6F 61 64 20 Monitor load
0200D0: 61 64 64 72 65 73 73 20 61 6E 64 20 73 69 7A 65 address and size
0200E0: 2E 0D 0A 2A 2A 0D 0A 2A 2A 20 22 50 72 6F 67 72 ...**..** "Progr
0200F0: 61 6D 22 20 69 73 20 61 20 66 69 6C 65 20 73 70 am" is a file sp
020100: 65 63 69 66 69 65 72 20 66 6F 72 20 74 68 65 20 ecifier for the
020110: 70 72 6F 67 72 61 6D 20 62 65 69 6E 67 20 6C 6F program being lo
020120: 61 64 65 64 2E 0D 0A 2A 2A 20 44 65 66 61 75 6C aded...** Defaul
020130: 74 2C 20 61 6E 64 20 6F 6E 6C 79 20 61 6C 6C 6F t, and only allo
020140: 77 65 64 2C 20 65 78 74 65 6E 73 69 6F 6E 20 69 wed, extension i
020150: 73 20 4C 47 4F 2E 0D 0A 2A 2A 0D 0A 2A 2A 20 45 s LGO...**..** E
020160: 6E 74 65 72 20 63 6F 6E 74 72 6F 6C 2D 53 20 74 nter control-S t
020170: 6F 20 70 61 75 73 65 20 61 6E 64 20 63 6F 6E 74 o pause and cont
020180: 72 6F 6C 2D 43 20 74 6F 20 61 62 6F 72 74 2E 0D rol-C to abort..
020190: 0A 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 3C 73 .*/..#include <s
0201A0: 74 64 69 6F 2E 68 3E 0D 0A 23 69 6E 63 6C 75 64 tdio.h>..#includ
0201B0: 65 20 22 6E 6F 74 69 63 65 2E 68 22 0D 0A 0D 0A e "notice.h"....
0201C0: 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 #define NOCCARGC
0201D0: 09 09 2F 2A 20 64 6F 6E 27 74 20 70 61 73 73 20 ../* don't pass
0201E0: 61 72 67 20 63 6F 75 6E 74 73 20 74 6F 20 66 75 arg counts to fu
0201F0: 6E 63 74 69 6F 6E 73 20 2A 2F 0D 0A 0D 0A 23 64 nctions */....#d
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: 74 73 77 28 61 72 67 63 2C 20 61 72 67 76 29 20 tsw(argc, argv)
020310: 69 6E 74 20 61 72 67 63 2C 20 2A 61 72 67 76 3B int argc, *argv;
020320: 20 7B 0D 0A 20 20 63 68 61 72 20 61 72 67 5B 4E {.. char arg[N
020330: 41 4D 45 53 49 5A 45 5D 3B 0D 0A 20 20 69 6E 74 AMESIZE];.. int
020340: 20 61 72 67 6E 62 72 3B 20 61 72 67 6E 62 72 20 argnbr; argnbr
020350: 3D 20 30 3B 0D 0A 20 20 77 68 69 6C 65 28 67 65 = 0;.. while(ge
020360: 74 61 72 67 28 2B 2B 61 72 67 6E 62 72 2C 20 61 targ(++argnbr, a
020370: 72 67 2C 20 4E 41 4D 45 53 49 5A 45 2C 20 61 72 rg, NAMESIZE, ar
020380: 67 63 2C 20 61 72 67 76 29 20 21 3D 20 45 4F 46 gc, argv) != EOF
020390: 29 20 7B 0D 0A 20 20 20 20 69 66 28 61 72 67 5B ) {.. if(arg[
0203A0: 30 5D 20 21 3D 20 27 2D 27 29 20 63 6F 6E 74 69 0] != '-') conti
0203B0: 6E 75 65 3B 09 09 09 2F 2A 20 73 6B 69 70 20 66 nue;.../* skip f
0203C0: 69 6C 65 20 6E 61 6D 65 73 20 2A 2F 0D 0A 20 20 ile names */..
0203D0: 20 20 69 66 28 74 6F 75 70 70 65 72 28 61 72 67 if(toupper(arg
0203E0: 5B 31 5D 29 20 3D 3D 20 27 47 27 29 20 67 6F 20 [1]) == 'G') go
0203F0: 3D 20 59 45 53 3B 0D 0A 20 20 20 20 65 6C 73 65 = YES;.. else
020400: 20 69 66 28 74 6F 75 70 70 65 72 28 61 72 67 5B if(toupper(arg[
020410: 31 5D 29 20 3D 3D 20 27 4D 27 29 20 6D 6F 6E 69 1]) == 'M') moni
020420: 74 6F 72 20 3D 20 59 45 53 3B 0D 0A 20 20 20 20 tor = YES;..
020430: 65 6C 73 65 20 75 73 61 67 65 28 29 3B 0D 0A 20 else usage();..
020440: 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D }.. }..../*.
020450: 0A 2A 2A 20 61 62 6F 72 74 20 77 69 74 68 20 61 .** abort with a
020460: 20 75 73 61 67 65 20 6D 65 73 73 61 67 65 0D 0A usage message..
020470: 2A 2F 0D 0A 75 73 61 67 65 28 29 20 7B 0D 0A 20 */..usage() {..
020480: 20 65 72 72 6F 72 28 22 55 73 61 67 65 3A 20 4C error("Usage: L
020490: 47 4F 20 5B 2D 47 5D 20 5B 2D 4D 5D 20 70 72 6F GO [-G] [-M] pro
0204A0: 67 72 61 6D 22 29 3B 0D 0A 20 20 7D 0D 0A 1A 1A gram");.. }....
0204B0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0204C0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0204D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0204E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0204F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
020500: 5B 4E 41 4D 45 53 49 5A 45 5D 2C 09 09 2F 2A 20 [NAMESIZE],../*
020510: 6E 65 77 20 6C 69 62 72 61 72 79 20 6E 61 6D 65 new library name
020520: 20 28 74 65 6D 70 6F 72 61 72 79 29 20 2A 2F 0D (temporary) */.
020530: 0A 20 20 6E 65 77 6E 64 78 5B 4E 41 4D 45 53 49 . newndx[NAMESI
020540: 5A 45 5D 2C 09 09 2F 2A 20 6E 65 77 20 69 6E 64 ZE],../* new ind
020550: 65 78 20 6E 61 6D 65 20 28 74 65 6D 70 6F 72 61 ex name (tempora
020560: 72 79 29 20 2A 2F 0D 0A 20 2A 6D 6F 64 6E 61 6D ry) */.. *modnam
020570: 65 3B 09 09 09 2F 2A 20 70 6F 69 6E 74 73 20 74 e;.../* points t
020580: 6F 20 6D 6F 64 75 6C 65 20 6E 61 6D 65 20 62 75 o module name bu
020590: 66 66 65 72 20 2A 2F 0D 0A 0D 0A 69 6E 74 0D 0A ffer */....int..
0205A0: 20 2A 6D 70 74 72 2C 09 09 09 09 2F 2A 20 6D 6F *mptr,..../* mo
0205B0: 64 75 6C 65 20 6E 61 6D 65 20 70 6F 69 6E 74 65 dule name pointe
0205C0: 72 73 20 2A 2F 0D 0A 20 2A 6D 64 6F 6E 65 2C 09 rs */.. *mdone,.
0205D0: 09 09 2F 2A 20 64 6F 6E 65 20 77 69 74 68 20 6D ../* done with m
0205E0: 6F 64 75 6C 65 3F 20 2A 2F 0D 0A 20 20 6D 6F 64 odule? */.. mod
0205F0: 75 6C 65 73 2C 09 09 09 2F 2A 20 63 6F 75 6E 74 ules,.../* count
020600: 20 6F 66 20 6D 6F 64 75 6C 65 73 20 74 6F 20 70 of modules to p
020610: 72 6F 63 65 73 73 20 2A 2F 0D 0A 20 20 61 6C 6C rocess */.. all
020620: 2C 09 09 09 09 2F 2A 20 70 72 6F 63 65 73 73 20 ,..../* process
020630: 61 6C 6C 20 6D 65 6D 62 65 72 73 3F 20 2A 2F 0D all members? */.
020640: 0A 20 20 69 6E 6E 64 78 2C 09 09 09 2F 2A 20 69 . inndx,.../* i
020650: 6E 70 75 74 20 69 6E 64 65 78 20 66 64 20 2A 2F nput index fd */
020660: 0D 0A 20 20 6F 75 74 6E 64 78 2C 09 09 09 2F 2A .. outndx,.../*
020670: 20 6F 75 74 70 75 74 20 69 6E 64 65 78 20 66 64 output index fd
020680: 20 2A 2F 0D 0A 20 20 6F 6C 64 62 6C 6F 63 6B 2C */.. oldblock,
020690: 09 09 09 2F 2A 20 62 6C 6F 63 6B 20 6F 66 20 6E .../* block of n
0206A0: 65 78 74 20 69 6E 70 75 74 20 6D 65 6D 62 65 72 ext input member
0206B0: 20 2A 2F 0D 0A 20 20 6F 6C 64 62 79 74 65 2C 09 */.. oldbyte,.
0206C0: 09 09 2F 2A 20 62 79 74 65 20 69 6E 20 62 6C 6F ../* byte in blo
0206D0: 63 6B 20 6F 66 20 6E 65 78 74 20 69 6E 70 75 74 ck of next input
0206E0: 20 6D 65 6D 62 65 72 20 2A 2F 0D 0A 20 20 6E 65 member */.. ne
0206F0: 77 62 6C 6F 63 6B 2C 09 09 09 2F 2A 20 62 6C 6F wblock,.../* blo
020700: 2F 2A 20 0D 0A 2A 2A 20 4C 49 42 2E 43 20 2D 2D /* ..** LIB.C --
020710: 20 53 6D 61 6C 6C 2D 4D 61 63 20 4C 69 62 72 61 Small-Mac Libra
020720: 72 79 20 4D 61 6E 61 67 65 72 0D 0A 2A 2A 0D 0A ry Manager..**..
020730: 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 **
020740: 20 20 20 20 43 6F 70 79 72 69 67 68 74 20 31 39 Copyright 19
020750: 38 35 20 4A 2E 20 45 2E 20 48 65 6E 64 72 69 78 85 J. E. Hendrix
020760: 0D 0A 2A 2A 0D 0A 2A 2A 20 55 73 61 67 65 3A 20 ..**..** Usage:
020770: 4C 49 42 20 2D 7B 44 50 54 55 58 7D 5B 41 5D 20 LIB -{DPTUX}[A]
020780: 6C 69 62 72 61 72 79 20 5B 6D 6F 64 75 6C 65 2E library [module.
020790: 2E 2E 5D 0D 0A 2A 2A 0D 0A 2A 2A 20 2D 44 20 20 ..]..**..** -D
0207A0: 20 20 20 64 65 6C 65 74 65 20 6E 61 6D 65 64 20 delete named
0207B0: 6D 6F 64 75 6C 65 73 0D 0A 2A 2A 20 2D 50 5B 41 modules..** -P[A
0207C0: 5D 20 20 70 72 69 6E 74 20 6E 61 6D 65 64 2C 20 ] print named,
0207D0: 6F 72 20 61 6C 6C 20 28 2D 50 41 29 2C 20 6D 6F or all (-PA), mo
0207E0: 64 75 6C 65 73 20 6F 6E 20 73 74 64 6F 75 74 0D dules on stdout.
0207F0: 0A 2A 2A 20 2D 54 5B 41 5D 20 20 74 61 62 6C 65 .** -T[A] table
020800: 20 6F 66 20 63 6F 6E 74 65 6E 74 73 20 6F 66 20 of contents of
020810: 6E 61 6D 65 64 2C 20 6F 72 20 61 6C 6C 20 28 2D named, or all (-
020820: 54 41 29 2C 20 66 69 6C 65 73 20 6F 6E 20 73 74 TA), files on st
020830: 64 6F 75 74 0D 0A 2A 2A 20 2D 55 20 20 20 20 20 dout..** -U
020840: 75 70 64 61 74 65 20 28 61 64 64 69 6E 67 2F 72 update (adding/r
020850: 65 70 6C 61 63 65 29 20 6E 61 6D 65 64 20 6D 6F eplace) named mo
020860: 64 75 6C 65 73 0D 0A 2A 2A 20 20 20 20 20 20 20 dules..**
020870: 20 28 67 65 74 73 20 6D 6F 64 75 6C 65 20 6E 61 (gets module na
020880: 6D 65 73 20 66 72 6F 6D 20 73 74 64 69 6E 20 69 mes from stdin i
020890: 66 20 6E 6F 74 20 69 6E 20 63 6F 6D 6D 61 6E 64 f not in command
0208A0: 20 6C 69 6E 65 29 0D 0A 2A 2A 20 2D 58 5B 41 5D line)..** -X[A]
0208B0: 20 20 65 78 74 72 61 63 74 20 6E 61 6D 65 64 2C extract named,
0208C0: 20 6F 72 20 61 6C 6C 20 28 2D 58 41 29 2C 20 6D or all (-XA), m
0208D0: 6F 64 75 6C 65 73 0D 0A 2A 2A 0D 0A 2A 2A 20 20 odules..**..**
0208E0: 20 20 20 20 20 20 54 68 65 20 41 20 73 75 66 66 The A suff
0208F0: 69 78 20 6F 62 76 69 61 74 65 73 20 70 72 6F 6D ix obviates prom
020900: 63 6B 20 6F 66 20 6E 65 78 74 20 6F 75 74 70 75 ck of next outpu
020910: 74 20 6D 65 6D 62 65 72 20 2A 2F 0D 0A 20 20 6E t member */.. n
020920: 65 77 62 79 74 65 3B 09 09 09 2F 2A 20 62 79 74 ewbyte;.../* byt
020930: 65 20 69 6E 20 62 6C 6F 63 6B 20 6F 66 20 6E 65 e in block of ne
020940: 78 74 20 6F 75 74 70 75 74 20 6D 65 6D 62 65 72 xt output member
020950: 20 2A 2F 0D 0A 0D 0A 69 6E 74 20 20 69 74 65 6D */....int item
020960: 32 2C 20 74 79 70 65 32 2C 20 66 69 65 6C 64 32 2, type2, field2
020970: 2C 20 69 6E 72 65 6C 32 2C 20 69 6E 72 65 6D 32 , inrel2, inrem2
020980: 2C 20 69 6E 63 68 32 3B 0D 0A 63 68 61 72 20 73 , inch2;..char s
020990: 79 6D 32 5B 4E 41 4D 45 53 49 5A 45 5D 3B 0D 0A ym2[NAMESIZE];..
0209A0: 0D 0A 6D 61 69 6E 28 61 72 67 63 2C 61 72 67 76 ..main(argc,argv
0209B0: 29 20 69 6E 74 20 61 72 67 63 2C 20 61 72 67 76 ) int argc, argv
0209C0: 5B 5D 3B 20 7B 0D 0A 20 20 66 70 75 74 73 28 22 []; {.. fputs("
0209D0: 53 6D 61 6C 6C 2D 4D 61 63 20 4C 69 62 72 61 72 Small-Mac Librar
0209E0: 79 20 4D 61 6E 61 67 65 72 2C 20 22 2C 20 73 74 y Manager, ", st
0209F0: 64 65 72 72 29 3B 20 66 70 75 74 73 28 56 45 52 derr); fputs(VER
020A00: 53 49 4F 4E 2C 20 73 74 64 65 72 72 29 3B 0D 0A SION, stderr);..
020A10: 20 20 66 70 75 74 73 28 43 52 49 47 48 54 31 2C fputs(CRIGHT1,
020A20: 20 73 74 64 65 72 72 29 3B 0D 0A 20 20 6D 70 74 stderr);.. mpt
020A30: 72 20 20 3D 20 63 61 6C 6C 6F 63 28 4D 41 58 4D r = calloc(MAXM
020A40: 4F 44 53 2C 20 32 29 3B 09 2F 2A 20 61 6C 6C 6F ODS, 2);./* allo
020A50: 63 61 74 65 20 7A 65 72 6F 65 64 20 6D 65 6D 6F cate zeroed memo
020A60: 72 79 20 2A 2F 0D 0A 20 20 6D 64 6F 6E 65 20 3D ry */.. mdone =
020A70: 20 63 61 6C 6C 6F 63 28 4D 41 58 4D 4F 44 53 2C calloc(MAXMODS,
020A80: 20 32 29 3B 0D 0A 20 20 69 66 28 67 65 74 61 72 2);.. if(getar
020A90: 67 28 31 2C 20 63 6D 64 2C 20 35 2C 20 61 72 67 g(1, cmd, 5, arg
020AA0: 63 2C 20 61 72 67 76 29 20 3D 3D 20 45 4F 46 29 c, argv) == EOF)
020AB0: 20 75 73 61 67 65 28 29 3B 0D 0A 20 20 63 6D 64 usage();.. cmd
020AC0: 5B 31 5D 20 3D 20 74 6F 75 70 70 65 72 28 63 6D [1] = toupper(cm
020AD0: 64 5B 31 5D 29 3B 0D 0A 20 20 63 6D 64 5B 32 5D d[1]);.. cmd[2]
020AE0: 20 3D 20 74 6F 75 70 70 65 72 28 63 6D 64 5B 32 = toupper(cmd[2
020AF0: 5D 29 3B 0D 0A 20 20 69 66 28 63 6D 64 5B 30 5D ]);.. if(cmd[0]
020B00: 70 74 69 6E 67 20 73 74 64 69 6E 20 66 6F 72 20 pting stdin for
020B10: 6D 6F 64 75 6C 65 0D 0A 2A 2A 20 20 20 20 20 20 module..**
020B20: 20 20 6E 61 6D 65 73 20 77 68 65 6E 20 6E 6F 6E names when non
020B30: 65 20 61 72 65 20 69 6E 20 74 68 65 20 63 6F 6D e are in the com
020B40: 6D 61 6E 64 20 6C 69 6E 65 2E 20 20 54 68 69 73 mand line. This
020B50: 20 69 73 20 68 61 6E 64 79 20 66 6F 72 0D 0A 2A is handy for..*
020B60: 2A 20 20 20 20 20 20 20 20 65 6C 69 6D 69 6E 61 * elimina
020B70: 74 69 6E 67 20 6F 70 65 72 61 74 6F 72 20 69 6E ting operator in
020B80: 74 65 72 76 65 6E 74 69 6F 6E 2C 20 65 73 70 65 tervention, espe
020B90: 63 69 61 6C 6C 79 20 69 6E 20 62 61 74 63 68 20 cially in batch
020BA0: 6D 6F 64 65 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 mode...**
020BB0: 20 4F 72 64 69 6E 61 72 69 6C 79 2C 20 77 68 65 Ordinarily, whe
020BC0: 6E 20 6E 6F 20 6D 6F 64 75 6C 65 73 20 61 72 65 n no modules are
020BD0: 20 67 69 76 65 6E 20 69 6E 20 74 68 65 20 63 6F given in the co
020BE0: 6D 6D 61 6E 64 20 6C 69 6E 65 2C 0D 0A 2A 2A 20 mmand line,..**
020BF0: 20 20 20 20 20 20 20 4C 49 42 20 70 72 6F 6D 70 LIB promp
020C00: 74 73 20 74 68 65 20 75 73 65 72 20 28 69 66 20 ts the user (if
020C10: 73 74 64 69 6E 20 69 73 20 6E 6F 74 20 72 65 64 stdin is not red
020C20: 69 72 65 63 74 65 64 29 20 61 6E 64 0D 0A 2A 2A irected) and..**
020C30: 20 20 20 20 20 20 20 20 61 63 63 65 70 74 73 20 accepts
020C40: 6F 6E 65 20 6D 6F 64 75 6C 65 20 6E 61 6D 65 20 one module name
020C50: 61 74 20 61 20 74 69 6D 65 20 66 72 6F 6D 20 73 at a time from s
020C60: 74 64 69 6E 2E 20 20 49 66 20 6E 6F 6E 65 0D 0A tdin. If none..
020C70: 2A 2A 20 20 20 20 20 20 20 20 61 72 65 20 67 69 ** are gi
020C80: 76 65 6E 20 28 43 52 20 72 65 73 70 6F 6E 73 65 ven (CR response
020C90: 20 74 6F 20 66 69 72 73 74 20 70 72 6F 6D 70 74 to first prompt
020CA0: 29 20 61 6E 64 20 74 68 65 20 63 6F 6D 6D 61 6E ) and the comman
020CB0: 64 0D 0A 2A 2A 20 20 20 20 20 20 20 20 73 77 69 d..** swi
020CC0: 74 63 68 20 69 73 20 2D 50 2C 20 2D 54 2C 20 6F tch is -P, -T, o
020CD0: 72 20 2D 58 20 74 68 65 6E 20 61 6C 6C 20 6D 65 r -X then all me
020CE0: 6D 62 65 72 73 20 6F 66 20 74 68 65 20 6C 69 62 mbers of the lib
020CF0: 72 61 72 79 20 61 72 65 0D 0A 2A 2A 20 20 20 20 rary are..**
020D00: 20 21 3D 20 27 2D 27 20 7C 7C 20 28 63 6D 64 5B != '-' || (cmd[
020D10: 32 5D 20 26 26 20 63 6D 64 5B 32 5D 20 21 3D 20 2] && cmd[2] !=
020D20: 27 41 27 29 20 7C 7C 20 73 74 72 6C 65 6E 28 63 'A') || strlen(c
020D30: 6D 64 29 20 3E 20 33 29 20 75 73 61 67 65 28 29 md) > 3) usage()
020D40: 3B 0D 0A 20 20 69 66 28 67 65 74 61 72 67 28 32 ;.. if(getarg(2
020D50: 2C 20 20 6F 6C 64 6C 69 62 2C 20 4E 41 4D 45 53 , oldlib, NAMES
020D60: 49 5A 45 2C 20 61 72 67 63 2C 20 61 72 67 76 29 IZE, argc, argv)
020D70: 20 3D 3D 20 45 4F 46 29 20 75 73 61 67 65 28 29 == EOF) usage()
020D80: 3B 0D 0A 20 20 65 78 74 65 6E 64 28 6F 6C 64 6C ;.. extend(oldl
020D90: 69 62 2C 20 4C 49 42 45 58 54 2C 20 4C 49 42 45 ib, LIBEXT, LIBE
020DA0: 58 54 29 3B 0D 0A 20 20 6E 65 77 66 6E 28 6F 6C XT);.. newfn(ol
020DB0: 64 6E 64 78 2C 20 6F 6C 64 6C 69 62 2C 20 4E 44 dndx, oldlib, ND
020DC0: 58 45 58 54 29 3B 0D 0A 20 20 6E 65 77 66 6E 28 XEXT);.. newfn(
020DD0: 6E 65 77 6C 69 62 2C 20 6F 6C 64 6C 69 62 2C 20 newlib, oldlib,
020DE0: 4C 5F 45 58 54 29 3B 0D 0A 20 20 6E 65 77 66 6E L_EXT);.. newfn
020DF0: 28 6E 65 77 6E 64 78 2C 20 6F 6C 64 6C 69 62 2C (newndx, oldlib,
020E00: 20 4E 5F 45 58 54 29 3B 0D 0A 20 20 67 65 74 6D N_EXT);.. getm
020E10: 6F 64 73 28 61 72 67 63 2C 20 61 72 67 76 29 3B ods(argc, argv);
020E20: 09 09 2F 2A 20 67 61 74 68 65 72 20 73 77 69 74 ../* gather swit
020E30: 63 68 65 73 20 61 6E 64 20 6D 6F 64 75 6C 65 20 ches and module
020E40: 6E 61 6D 65 73 20 2A 2F 0D 0A 20 20 73 77 69 74 names */.. swit
020E50: 63 68 28 63 6D 64 5B 31 5D 29 20 7B 0D 0A 20 20 ch(cmd[1]) {..
020E60: 20 20 63 61 73 65 20 27 44 27 3A 20 64 72 6F 70 case 'D': drop
020E70: 28 29 3B 20 20 20 20 62 72 65 61 6B 3B 0D 0A 20 (); break;..
020E80: 20 20 20 63 61 73 65 20 27 54 27 3A 20 74 61 62 case 'T': tab
020E90: 6C 65 28 29 3B 20 20 20 62 72 65 61 6B 3B 0D 0A le(); break;..
020EA0: 20 20 20 20 63 61 73 65 20 27 55 27 3A 20 75 70 case 'U': up
020EB0: 64 61 74 65 28 29 3B 20 20 62 72 65 61 6B 3B 0D date(); break;.
020EC0: 0A 20 20 20 20 63 61 73 65 20 27 58 27 3A 20 65 . case 'X': e
020ED0: 78 74 72 61 63 74 28 29 3B 20 62 72 65 61 6B 3B xtract(); break;
020EE0: 0D 0A 20 20 20 20 63 61 73 65 20 27 50 27 3A 20 .. case 'P':
020EF0: 70 72 69 6E 74 28 29 3B 20 20 20 62 72 65 61 6B print(); break
020F00: 20 20 20 20 70 72 6F 63 65 73 73 65 64 2E 0D 0A processed...
020F10: 2A 2A 0D 0A 2A 2A 20 44 72 69 76 65 20 44 65 73 **..** Drive Des
020F20: 69 67 6E 61 74 6F 72 73 20 28 65 2E 67 2E 20 42 ignators (e.g. B
020F30: 3A 29 3A 0D 0A 2A 2A 20 20 20 20 20 61 6C 6C 6F :):..** allo
020F40: 77 65 64 20 77 69 74 68 20 61 6E 79 20 6C 69 62 wed with any lib
020F50: 72 61 72 79 20 61 6E 64 20 6D 6F 64 75 6C 65 20 rary and module
020F60: 6E 61 6D 65 73 0D 0A 2A 2A 20 20 20 20 20 6E 65 names..** ne
020F70: 77 20 6C 69 62 72 61 72 79 20 61 6E 64 20 69 6E w library and in
020F80: 64 65 78 20 67 6F 20 6F 6E 20 73 61 6D 65 20 64 dex go on same d
020F90: 72 69 76 65 20 61 73 20 6F 6C 64 0D 0A 2A 2A 20 rive as old..**
020FA0: 20 20 20 20 77 69 6C 6C 20 64 65 66 61 75 6C 74 will default
020FB0: 20 74 6F 20 74 68 65 20 64 65 66 61 75 6C 74 20 to the default
020FC0: 64 72 69 76 65 0D 0A 2A 2A 0D 0A 2A 2A 20 46 69 drive..**..** Fi
020FD0: 6C 65 6E 61 6D 65 20 45 78 74 65 6E 73 69 6F 6E lename Extension
020FE0: 73 3A 0D 0A 2A 2A 20 20 20 20 20 64 6F 20 4E 4F s:..** do NO
020FF0: 54 20 73 70 65 63 69 66 79 20 77 69 74 68 20 6C T specify with l
021000: 69 62 72 61 72 79 20 6F 72 20 6D 6F 64 75 6C 65 ibrary or module
021010: 20 6E 61 6D 65 73 0D 0A 2A 2A 20 20 20 20 20 73 names..** s
021020: 74 61 6E 64 61 72 64 20 65 78 74 65 6E 73 69 6F tandard extensio
021030: 6E 73 20 61 72 65 3A 0D 0A 2A 2A 0D 0A 2A 2A 20 ns are:..**..**
021040: 20 20 20 20 2E 52 45 4C 20 3D 20 72 65 6C 6F 63 .REL = reloc
021050: 61 74 61 62 6C 65 20 6F 62 6A 65 63 74 20 6D 6F atable object mo
021060: 64 75 6C 65 0D 0A 2A 2A 20 20 20 20 20 2E 4C 49 dule..** .LI
021070: 42 20 3D 20 6C 69 62 72 61 72 79 20 6F 66 20 6F B = library of o
021080: 62 6A 65 63 74 20 6D 6F 64 75 6C 65 73 0D 0A 2A bject modules..*
021090: 2A 20 20 20 20 20 2E 4E 44 58 20 3D 20 69 6E 64 * .NDX = ind
0210A0: 65 78 20 74 6F 20 6C 69 62 72 61 72 79 0D 0A 2A ex to library..*
0210B0: 2A 20 20 20 20 20 2E 4C 24 20 20 3D 20 74 65 6D * .L$ = tem
0210C0: 70 6F 72 61 72 79 20 6E 65 77 20 6C 69 62 72 61 porary new libra
0210D0: 72 79 0D 0A 2A 2A 20 20 20 20 20 2E 4E 24 20 20 ry..** .N$
0210E0: 3D 20 74 65 6D 70 6F 72 61 72 79 20 6E 65 77 20 = temporary new
0210F0: 69 6E 64 65 78 0D 0A 2A 2A 0D 0A 2A 2A 20 45 6E index..**..** En
021100: 3B 0D 0A 20 20 20 20 20 64 65 66 61 75 6C 74 3A ;.. default:
021110: 20 75 73 61 67 65 28 29 3B 0D 0A 20 20 20 20 7D usage();.. }
021120: 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 .. }..../*..**
021130: 61 64 64 20 6D 6F 64 75 6C 65 20 74 6F 20 6C 69 add module to li
021140: 62 72 61 72 79 0D 0A 2A 2F 0D 0A 61 64 64 6D 6F brary..*/..addmo
021150: 64 28 6E 61 6D 65 29 20 63 68 61 72 20 2A 6E 61 d(name) char *na
021160: 6D 65 3B 20 7B 0D 0A 20 20 63 68 61 72 20 2A 63 me; {.. char *c
021170: 70 2C 20 6E 61 6D 5B 4E 41 4D 45 53 49 5A 45 5D p, nam[NAMESIZE]
021180: 3B 0D 0A 20 20 73 61 76 65 72 65 6C 28 29 3B 09 ;.. saverel();.
021190: 09 09 2F 2A 20 73 61 76 65 20 52 45 4C 20 76 61 ../* save REL va
0211A0: 72 69 61 62 6C 65 73 20 2A 2F 0D 0A 20 20 73 74 riables */.. st
0211B0: 72 63 70 79 28 6E 61 6D 2C 20 6E 61 6D 65 29 3B rcpy(nam, name);
0211C0: 20 65 78 74 65 6E 64 28 6E 61 6D 2C 20 4D 4F 44 extend(nam, MOD
0211D0: 45 58 54 2C 20 4D 4F 44 45 58 54 29 3B 0D 0A 20 EXT, MODEXT);..
0211E0: 20 69 6E 72 65 6C 20 3D 20 6F 70 65 6E 28 6E 61 inrel = open(na
0211F0: 6D 2C 20 22 72 22 29 3B 0D 0A 20 20 63 70 79 6D m, "r");.. cpym
021200: 6F 64 28 4E 4F 29 3B 09 09 09 2F 2A 20 64 6F 20 od(NO);.../* do
021210: 6E 6F 74 20 61 6C 72 65 61 64 79 20 68 61 76 65 not already have
021220: 20 68 65 61 64 65 72 20 2A 2F 0D 0A 20 20 63 6C header */.. cl
021230: 6F 73 65 28 69 6E 72 65 6C 29 3B 0D 0A 20 20 72 ose(inrel);.. r
021240: 65 73 74 72 65 6C 28 29 3B 09 09 09 2F 2A 20 72 estrel();.../* r
021250: 65 73 74 6F 72 65 20 52 45 4C 20 76 61 72 69 61 estore REL varia
021260: 62 6C 65 73 20 2A 2F 0D 0A 20 20 73 74 72 63 70 bles */.. strcp
021270: 79 28 6E 61 6D 2C 20 6E 61 6D 65 29 3B 0D 0A 20 y(nam, name);..
021280: 20 69 66 28 6E 61 6D 5B 31 5D 20 3D 3D 20 27 3A if(nam[1] == ':
021290: 27 29 20 63 70 20 3D 20 6E 61 6D 20 2B 20 32 3B ') cp = nam + 2;
0212A0: 20 65 6C 73 65 20 63 70 20 3D 20 6E 61 6D 3B 0D else cp = nam;.
0212B0: 0A 20 20 63 70 5B 4D 41 58 53 59 4D 5D 20 3D 20 . cp[MAXSYM] =
0212C0: 4E 55 4C 4C 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A NULL;.. }..../*
0212D0: 0D 0A 2A 2A 20 63 6C 6F 73 65 20 69 6E 70 75 74 ..** close input
0212E0: 20 6C 69 62 72 61 72 79 20 61 6E 64 20 69 6E 64 library and ind
0212F0: 65 78 0D 0A 2A 2F 0D 0A 63 6C 6F 73 65 69 6E 28 ex..*/..closein(
021300: 74 65 72 20 63 6F 6E 74 72 6F 6C 2D 53 20 74 6F ter control-S to
021310: 20 70 61 75 73 65 20 61 6E 64 20 63 6F 6E 74 72 pause and contr
021320: 6F 6C 2D 43 20 74 6F 20 61 62 6F 72 74 2E 0D 0A ol-C to abort...
021330: 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 3C 73 74 */..#include <st
021340: 64 69 6F 2E 68 3E 0D 0A 23 69 6E 63 6C 75 64 65 dio.h>..#include
021350: 20 22 6E 6F 74 69 63 65 2E 68 22 0D 0A 23 69 6E "notice.h"..#in
021360: 63 6C 75 64 65 20 22 72 65 6C 2E 68 22 0D 0A 0D clude "rel.h"...
021370: 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 .#define NOCCARG
021380: 43 09 09 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E C../* no argumen
021390: 74 20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 t count passing
0213A0: 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4E 41 4D 45 */..#define NAME
0213B0: 53 49 5A 45 20 20 20 31 35 0D 0A 23 64 65 66 69 SIZE 15..#defi
0213C0: 6E 65 20 4D 41 58 4D 4F 44 53 20 20 20 32 30 30 ne MAXMODS 200
0213D0: 0D 0A 23 64 65 66 69 6E 65 20 4D 4F 44 45 58 54 ..#define MODEXT
0213E0: 20 20 22 2E 52 45 4C 22 0D 0A 23 64 65 66 69 6E ".REL"..#defin
0213F0: 65 20 4C 49 42 45 58 54 20 20 22 2E 4C 49 42 22 e LIBEXT ".LIB"
021400: 0D 0A 23 64 65 66 69 6E 65 20 4E 44 58 45 58 54 ..#define NDXEXT
021410: 20 20 22 2E 4E 44 58 22 0D 0A 23 64 65 66 69 6E ".NDX"..#defin
021420: 65 20 4C 5F 45 58 54 20 20 20 22 2E 4C 24 22 0D e L_EXT ".L$".
021430: 0A 23 64 65 66 69 6E 65 20 4E 5F 45 58 54 20 20 .#define N_EXT
021440: 20 22 2E 4E 24 22 0D 0A 23 64 65 66 69 6E 65 20 ".N$"..#define
021450: 48 49 47 48 20 20 20 20 20 20 31 32 37 09 09 2F HIGH 127../
021460: 2A 20 68 69 67 68 2D 76 61 6C 75 65 20 62 79 74 * high-value byt
021470: 65 20 2A 2F 0D 0A 0D 0A 63 68 61 72 0D 0A 20 20 e */....char..
021480: 63 6D 64 5B 35 5D 2C 09 09 09 2F 2A 20 63 6F 6D cmd[5],.../* com
021490: 6D 61 6E 64 20 73 77 69 74 63 68 20 2A 2F 0D 0A mand switch */..
0214A0: 20 20 6F 6C 64 6C 69 62 5B 4E 41 4D 45 53 49 5A oldlib[NAMESIZ
0214B0: 45 5D 2C 09 09 2F 2A 20 6F 6C 64 20 6C 69 62 72 E],../* old libr
0214C0: 61 72 79 20 6E 61 6D 65 20 2A 2F 0D 0A 20 20 6F ary name */.. o
0214D0: 6C 64 6E 64 78 5B 4E 41 4D 45 53 49 5A 45 5D 2C ldndx[NAMESIZE],
0214E0: 09 09 2F 2A 20 6F 6C 64 20 69 6E 64 65 78 20 6E ../* old index n
0214F0: 61 6D 65 20 2A 2F 0D 0A 20 20 6E 65 77 6C 69 62 ame */.. newlib
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: 6D 6F 64 31 2C 20 6D 6F 64 32 29 20 63 68 61 72 mod1, mod2) char
021610: 20 2A 6D 6F 64 31 2C 20 2A 6D 6F 64 32 20 3B 20 *mod1, *mod2 ;
021620: 7B 0D 0A 20 20 63 6C 6F 73 65 28 69 6E 72 65 6C {.. close(inrel
021630: 29 3B 0D 0A 20 20 63 6C 6F 73 65 28 69 6E 6E 64 );.. close(innd
021640: 78 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A x);.. }..../*..
021650: 2A 2A 20 63 6C 6F 73 65 20 6F 75 74 70 75 74 20 ** close output
021660: 6C 69 62 72 61 72 79 20 61 6E 64 20 69 6E 64 65 library and inde
021670: 78 0D 0A 2A 2F 0D 0A 63 6C 6F 73 65 75 70 28 6D x..*/..closeup(m
021680: 6F 64 31 2C 20 6D 6F 64 32 29 20 63 68 61 72 20 od1, mod2) char
021690: 2A 6D 6F 64 31 2C 20 2A 6D 6F 64 32 20 3B 20 7B *mod1, *mod2 ; {
0216A0: 0D 0A 20 20 63 6C 6F 73 65 69 6E 28 29 3B 0D 0A .. closein();..
0216B0: 20 20 65 6E 64 72 65 6C 28 29 3B 0D 0A 20 20 63 endrel();.. c
0216C0: 6C 6F 73 65 28 6F 75 74 72 65 6C 29 3B 0D 0A 20 lose(outrel);..
0216D0: 20 70 75 74 6E 64 78 28 6E 65 77 62 6C 6F 63 6B putndx(newblock
0216E0: 2C 20 6E 65 77 62 79 74 65 29 3B 09 09 09 2F 2A , newbyte);.../*
0216F0: 20 69 6E 64 65 78 20 45 46 49 4C 45 20 2A 2F 0D index EFILE */.
021700: 0A 20 20 70 75 74 6E 64 78 28 45 4F 46 2C 20 45 . putndx(EOF, E
021710: 4F 46 29 3B 09 09 09 09 2F 2A 20 74 65 72 6D 69 OF);..../* termi
021720: 6E 61 74 65 20 6E 65 77 20 69 6E 64 65 78 20 2A nate new index *
021730: 2F 0D 0A 20 20 63 6C 6F 73 65 28 6F 75 74 6E 64 /.. close(outnd
021740: 78 29 3B 0D 0A 20 20 6D 6F 76 66 69 6C 28 6E 65 x);.. movfil(ne
021750: 77 6C 69 62 2C 20 6F 6C 64 6C 69 62 29 3B 09 09 wlib, oldlib);..
021760: 09 2F 2A 20 74 61 6B 65 20 6F 72 69 67 69 6E 61 ./* take origina
021770: 6C 20 6E 61 6D 65 73 20 2A 2F 0D 0A 20 20 6D 6F l names */.. mo
021780: 76 66 69 6C 28 6E 65 77 6E 64 78 2C 20 6F 6C 64 vfil(newndx, old
021790: 6E 64 78 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A ndx);.. }..../*
0217A0: 0D 0A 2A 2A 20 63 6F 6D 70 61 72 65 20 6D 6F 64 ..** compare mod
0217B0: 75 6C 65 20 6E 61 6D 65 73 20 69 67 6E 6F 72 69 ule names ignori
0217C0: 6E 67 20 64 72 69 76 65 20 64 65 73 69 67 6E 61 ng drive designa
0217D0: 74 6F 72 73 0D 0A 2A 2F 0D 0A 63 6D 70 6D 6F 64 tors..*/..cmpmod
0217E0: 28 6D 6F 64 31 2C 20 6D 6F 64 32 29 20 63 68 61 (mod1, mod2) cha
0217F0: 72 20 2A 6D 6F 64 31 2C 20 2A 6D 6F 64 32 3B 20 r *mod1, *mod2;
021800: 3D 3D 20 27 54 27 20 7C 7C 20 63 6D 64 5B 31 5D == 'T' || cmd[1]
021810: 20 3D 3D 20 27 58 27 29 29 20 7B 0D 0A 20 20 20 == 'X')) {..
021820: 20 20 20 6D 6F 64 6E 61 6D 65 5B 30 5D 20 3D 20 modname[0] =
021830: 48 49 47 48 3B 09 09 2F 2A 20 68 69 67 68 20 76 HIGH;../* high v
021840: 61 6C 75 65 20 2A 2F 0D 0A 20 20 20 20 20 20 6D alue */.. m
021850: 6F 64 6E 61 6D 65 5B 31 5D 20 3D 20 4E 55 4C 4C odname[1] = NULL
021860: 3B 0D 0A 20 20 20 20 20 20 72 65 74 75 72 6E 3B ;.. return;
021870: 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D .. }.. }
021880: 0D 0A 20 20 65 72 72 20 3D 20 65 6F 66 20 3D 20 .. err = eof =
021890: 4E 4F 3B 0D 0A 20 20 77 68 69 6C 65 28 6D 6F 64 NO;.. while(mod
0218A0: 75 6C 65 73 20 3C 20 4D 41 58 4D 4F 44 53 2D 31 ules < MAXMODS-1
0218B0: 29 20 7B 0D 0A 20 20 20 20 70 6F 6C 6C 28 59 45 ) {.. poll(YE
0218C0: 53 29 3B 0D 0A 20 20 20 20 69 66 28 61 72 67 29 S);.. if(arg)
0218D0: 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 67 65 74 {.. if(get
0218E0: 61 72 67 28 61 72 67 2B 2B 2C 20 6E 61 6D 65 2C arg(arg++, name,
0218F0: 20 4E 41 4D 45 53 49 5A 45 2C 20 61 72 67 63 2C NAMESIZE, argc,
021900: 20 61 72 67 76 29 3D 3D 45 4F 46 29 20 7B 65 6F argv)==EOF) {eo
021910: 66 20 3D 20 59 45 53 3B 20 62 72 65 61 6B 3B 7D f = YES; break;}
021920: 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 65 .. }.. e
021930: 6C 73 65 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 lse {.. if(
021940: 21 72 65 71 73 74 72 28 22 4D 6F 64 75 6C 65 20 !reqstr("Module
021950: 4E 61 6D 65 3A 20 22 2C 20 6E 61 6D 65 2C 20 4E Name: ", name, N
021960: 41 4D 45 53 49 5A 45 29 29 20 7B 65 6F 66 20 3D AMESIZE)) {eof =
021970: 20 59 45 53 3B 20 62 72 65 61 6B 3B 7D 0D 0A 20 YES; break;}..
021980: 20 20 20 20 20 7D 0D 0A 20 20 20 20 61 6C 6C 20 }.. all
021990: 3D 20 4E 4F 3B 09 09 09 09 2F 2A 20 64 6F 20 73 = NO;..../* do s
0219A0: 65 6C 65 63 74 65 64 20 6D 6F 64 75 6C 65 73 20 elected modules
0219B0: 6F 6E 6C 79 20 2A 2F 0D 0A 20 20 20 20 69 66 28 only */.. if(
0219C0: 63 70 20 3D 20 73 74 72 63 68 72 28 6E 61 6D 65 cp = strchr(name
0219D0: 2C 20 27 2E 27 29 29 20 7B 0D 0A 20 20 20 20 20 , '.')) {..
0219E0: 20 66 70 75 74 73 28 6E 61 6D 65 2C 20 73 74 64 fputs(name, std
0219F0: 6F 75 74 29 3B 20 70 75 74 73 32 28 22 20 2D 20 out); puts2(" -
021A00: 7B 0D 0A 20 20 63 68 61 72 20 73 74 72 31 5B 4E {.. char str1[N
021A10: 41 4D 45 53 49 5A 45 5D 2C 20 73 74 72 32 5B 4E AMESIZE], str2[N
021A20: 41 4D 45 53 49 5A 45 5D 3B 0D 0A 20 20 69 66 28 AMESIZE];.. if(
021A30: 6D 6F 64 31 5B 31 5D 20 3D 3D 20 27 3A 27 29 20 mod1[1] == ':')
021A40: 6D 6F 64 31 20 2B 3D 20 32 3B 20 73 74 72 6E 63 mod1 += 2; strnc
021A50: 70 79 28 73 74 72 31 2C 20 6D 6F 64 31 2C 20 4D py(str1, mod1, M
021A60: 41 58 53 59 4D 29 3B 0D 0A 20 20 69 66 28 6D 6F AXSYM);.. if(mo
021A70: 64 32 5B 31 5D 20 3D 3D 20 27 3A 27 29 20 6D 6F d2[1] == ':') mo
021A80: 64 32 20 2B 3D 20 32 3B 20 73 74 72 6E 63 70 79 d2 += 2; strncpy
021A90: 28 73 74 72 32 2C 20 6D 6F 64 32 2C 20 4D 41 58 (str2, mod2, MAX
021AA0: 53 59 4D 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 SYM);.. return
021AB0: 28 73 74 72 63 6D 70 28 73 74 72 31 2C 20 73 74 (strcmp(str1, st
021AC0: 72 32 29 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A r2));.. }..../*
021AD0: 0D 0A 2A 2A 20 63 6F 70 79 20 6F 6E 65 20 6D 6F ..** copy one mo
021AE0: 64 75 6C 65 20 66 72 6F 6D 20 69 6E 72 65 6C 20 dule from inrel
021AF0: 74 6F 20 6F 75 74 72 65 6C 0D 0A 2A 2F 0D 0A 63 to outrel..*/..c
021B00: 70 79 6D 6F 64 28 68 64 72 29 20 69 6E 74 20 68 pymod(hdr) int h
021B10: 64 72 3B 20 7B 0D 0A 20 20 69 66 28 6F 75 74 6E dr; {.. if(outn
021B20: 64 78 29 20 70 75 74 6E 64 78 28 6E 65 77 62 6C dx) putndx(newbl
021B30: 6F 63 6B 2C 20 6E 65 77 62 79 74 65 29 3B 09 2F ock, newbyte);./
021B40: 2A 20 6D 75 73 74 20 6E 6F 74 20 62 65 20 65 78 * must not be ex
021B50: 74 72 61 63 74 69 6E 67 20 2A 2F 0D 0A 20 20 69 tracting */.. i
021B60: 66 28 68 64 72 20 26 26 20 21 70 75 74 72 65 6C f(hdr && !putrel
021B70: 28 29 29 20 61 62 6F 72 74 28 37 29 3B 09 2F 2A ()) abort(7);./*
021B80: 20 61 6C 72 65 61 64 79 20 68 61 76 65 20 69 6E already have in
021B90: 70 75 74 20 68 65 61 64 65 72 20 2A 2F 0D 0A 20 put header */..
021BA0: 20 64 6F 20 7B 0D 0A 20 20 20 20 70 6F 6C 6C 28 do {.. poll(
021BB0: 59 45 53 29 3B 0D 0A 20 20 20 20 69 66 28 67 65 YES);.. if(ge
021BC0: 74 72 65 6C 28 29 20 3D 3D 20 45 52 52 20 7C 7C trel() == ERR ||
021BD0: 20 21 70 75 74 72 65 6C 28 29 29 20 61 62 6F 72 !putrel()) abor
021BE0: 74 20 28 37 29 3B 0D 0A 20 20 20 20 7D 20 77 68 t (7);.. } wh
021BF0: 69 6C 65 28 69 74 65 6D 20 21 3D 20 45 50 52 4F ile(item != EPRO
021C00: 45 78 74 65 6E 73 69 6F 6E 20 46 6F 72 63 65 64 Extension Forced
021C10: 20 74 6F 20 22 2C 20 4D 4F 44 45 58 54 29 3B 0D to ", MODEXT);.
021C20: 0A 20 20 20 20 20 20 2A 63 70 20 3D 20 4E 55 4C . *cp = NUL
021C30: 4C 3B 0D 0A 20 20 20 20 20 20 65 72 72 20 3D 20 L;.. err =
021C40: 59 45 53 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 YES;.. }..
021C50: 20 20 20 69 66 28 63 70 20 3D 20 73 74 72 63 68 if(cp = strch
021C60: 72 28 6E 61 6D 65 2C 20 27 3A 27 29 29 20 7B 0D r(name, ':')) {.
021C70: 0A 20 20 20 20 20 20 69 66 28 63 70 20 3D 3D 20 . if(cp ==
021C80: 6E 61 6D 65 2B 31 29 20 2B 2B 63 70 3B 09 09 2F name+1) ++cp;../
021C90: 2A 20 73 65 74 20 75 70 20 6E 65 78 74 20 63 68 * set up next ch
021CA0: 65 63 6B 20 2A 2F 0D 0A 20 20 20 20 20 20 65 6C eck */.. el
021CB0: 73 65 20 7B 0D 0A 20 20 20 20 20 20 20 20 70 75 se {.. pu
021CC0: 74 73 32 28 6E 61 6D 65 2C 20 22 20 2D 20 49 6E ts2(name, " - In
021CD0: 76 61 6C 69 64 20 46 6F 72 6D 61 74 20 2D 20 49 valid Format - I
021CE0: 67 6E 6F 72 65 64 22 29 3B 0D 0A 20 20 20 20 20 gnored");..
021CF0: 20 20 20 67 6F 74 6F 20 69 67 6E 6F 72 65 3B 0D goto ignore;.
021D00: 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 . }..
021D10: 20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 63 70 }.. else cp
021D20: 20 3D 20 6E 61 6D 65 3B 09 09 09 2F 2A 20 73 65 = name;.../* se
021D30: 74 20 75 70 20 6E 65 78 74 20 63 68 65 63 6B 20 t up next check
021D40: 2A 2F 0D 0A 20 20 20 20 69 66 28 73 74 72 6C 65 */.. if(strle
021D50: 6E 28 63 70 29 20 3E 20 4D 41 58 53 59 4D 29 20 n(cp) > MAXSYM)
021D60: 7B 0D 0A 20 20 20 20 20 20 73 74 72 63 70 79 28 {.. strcpy(
021D70: 66 6E 2C 20 63 70 29 3B 0D 0A 20 20 20 20 20 20 fn, cp);..
021D80: 66 70 75 74 73 28 66 6E 2C 20 73 74 64 6F 75 74 fputs(fn, stdout
021D90: 29 3B 0D 0A 20 20 20 20 20 20 66 6E 5B 4D 41 58 );.. fn[MAX
021DA0: 53 59 4D 5D 20 3D 20 4E 55 4C 4C 3B 0D 0A 20 20 SYM] = NULL;..
021DB0: 20 20 20 20 70 75 74 73 32 28 22 20 2D 20 57 69 puts2(" - Wi
021DC0: 6C 6C 20 62 65 20 54 72 75 6E 63 61 74 65 64 20 ll be Truncated
021DD0: 74 6F 20 22 2C 20 66 6E 29 3B 0D 0A 20 20 20 20 to ", fn);..
021DE0: 20 20 65 72 72 20 3D 20 59 45 53 3B 09 2F 2A 20 err = YES;./*
021DF0: 61 73 73 65 6D 62 6C 65 72 20 64 6F 65 73 20 61 assembler does a
021E00: 47 29 3B 0D 0A 20 20 66 66 6C 75 73 68 28 6F 75 G);.. fflush(ou
021E10: 74 72 65 6C 29 3B 09 09 2F 2A 20 6D 75 73 74 20 trel);../* must
021E20: 65 6D 70 74 79 20 61 75 78 20 62 75 66 20 66 6F empty aux buf fo
021E30: 72 20 63 74 65 6C 6C 28 29 20 2A 2F 0D 0A 20 20 r ctell() */..
021E40: 6E 65 77 62 6C 6F 63 6B 20 3D 20 63 74 65 6C 6C newblock = ctell
021E50: 28 6F 75 74 72 65 6C 29 3B 09 2F 2A 20 72 65 6D (outrel);./* rem
021E60: 65 6D 62 65 72 20 66 6F 72 20 6E 65 78 74 20 6D ember for next m
021E70: 65 6D 62 65 72 20 2A 2F 0D 0A 20 20 6E 65 77 62 ember */.. newb
021E80: 79 74 65 20 3D 20 63 74 65 6C 6C 63 28 6F 75 74 yte = ctellc(out
021E90: 72 65 6C 29 3B 0D 0A 20 20 69 66 28 6E 65 77 62 rel);.. if(newb
021EA0: 79 74 65 20 3D 3D 20 31 32 38 29 20 7B 2B 2B 6E yte == 128) {++n
021EB0: 65 77 62 6C 6F 63 6B 3B 20 6E 65 77 62 79 74 65 ewblock; newbyte
021EC0: 20 3D 20 30 3B 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F = 0;}.. }..../
021ED0: 2A 0D 0A 2A 2A 20 64 72 6F 70 20 6D 6F 64 75 6C *..** drop modul
021EE0: 65 73 20 66 72 6F 6D 20 6C 69 62 72 61 72 79 0D es from library.
021EF0: 0A 2A 2F 0D 0A 64 72 6F 70 28 29 20 7B 0D 0A 20 .*/..drop() {..
021F00: 20 63 68 61 72 20 6D 6F 64 5B 4E 41 4D 45 53 49 char mod[NAMESI
021F10: 5A 45 5D 3B 0D 0A 20 20 69 66 28 6D 6F 64 75 6C ZE];.. if(modul
021F20: 65 73 20 3D 3D 20 30 29 20 65 72 72 6F 72 28 22 es == 0) error("
021F30: 2D 20 44 65 6C 65 74 65 20 62 79 20 4E 61 6D 65 - Delete by Name
021F40: 20 4F 6E 6C 79 22 29 3B 0D 0A 20 20 6F 70 65 6E Only");.. open
021F50: 75 70 28 29 3B 0D 0A 20 20 77 68 69 6C 65 28 6E up();.. while(n
021F60: 78 74 6D 6F 64 28 6D 6F 64 29 29 20 7B 0D 0A 20 xtmod(mod)) {..
021F70: 20 20 20 69 66 28 6D 61 74 63 68 28 6D 6F 64 2C if(match(mod,
021F80: 20 4E 4F 29 29 20 7B 0D 0A 20 20 20 20 20 20 70 NO)) {.. p
021F90: 75 74 73 32 28 22 44 65 6C 65 74 65 64 20 22 2C uts2("Deleted ",
021FA0: 20 6D 6F 64 29 3B 0D 0A 20 20 20 20 20 20 63 6F mod);.. co
021FB0: 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 20 7D ntinue;.. }
021FC0: 0D 0A 20 20 20 20 63 70 79 6D 6F 64 28 59 45 53 .. cpymod(YES
021FD0: 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 6D 69 73 );.. }.. mis
021FE0: 73 69 6E 67 28 29 3B 0D 0A 20 20 63 6C 6F 73 65 sing();.. close
021FF0: 75 70 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A up();.. }..../*
022000: 63 74 75 61 6C 20 74 72 75 6E 63 61 74 69 6F 6E ctual truncation
022010: 20 2A 2F 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 */.. }..
022020: 20 20 69 66 28 63 6D 64 5B 31 5D 20 3D 3D 20 27 if(cmd[1] == '
022030: 55 27 29 20 7B 09 09 09 2F 2A 20 52 45 4C 20 66 U') {.../* REL f
022040: 69 6C 65 20 6D 75 73 74 20 65 78 69 73 74 20 2A ile must exist *
022050: 2F 0D 0A 20 20 20 20 20 20 73 74 72 63 70 79 28 /.. strcpy(
022060: 66 6E 2C 20 6E 61 6D 65 29 3B 20 65 78 74 65 6E fn, name); exten
022070: 64 28 66 6E 2C 20 4D 4F 44 45 58 54 2C 20 4D 4F d(fn, MODEXT, MO
022080: 44 45 58 54 29 3B 0D 0A 20 20 20 20 20 20 69 66 DEXT);.. if
022090: 28 69 20 3D 20 66 6F 70 65 6E 28 66 6E 2C 20 22 (i = fopen(fn, "
0220A0: 72 22 29 29 20 66 63 6C 6F 73 65 28 69 29 3B 0D r")) fclose(i);.
0220B0: 0A 20 20 20 20 20 20 65 6C 73 65 20 7B 0D 0A 20 . else {..
0220C0: 20 20 20 20 20 20 20 70 75 74 73 32 28 6E 61 6D puts2(nam
0220D0: 65 2C 20 22 20 2D 20 43 61 6E 27 74 20 46 69 6E e, " - Can't Fin
0220E0: 64 20 2D 20 49 67 6E 6F 72 65 64 22 29 3B 0D 0A d - Ignored");..
0220F0: 20 20 20 20 20 20 20 20 67 6F 74 6F 20 69 67 6E goto ign
022100: 6F 72 65 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D ore;.. }.
022110: 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 66 6F . }.. fo
022120: 72 28 69 20 3D 20 30 3B 20 69 20 3C 20 6D 6F 64 r(i = 0; i < mod
022130: 75 6C 65 73 3B 20 2B 2B 69 29 20 7B 09 2F 2A 20 ules; ++i) {./*
022140: 66 69 6E 64 20 70 6C 61 63 65 20 66 6F 72 20 6D find place for m
022150: 6F 64 75 6C 65 20 2A 2F 0D 0A 20 20 20 20 20 20 odule */..
022160: 69 66 28 63 6D 70 6D 6F 64 28 6D 70 74 72 5B 69 if(cmpmod(mptr[i
022170: 5D 2C 20 6E 61 6D 65 29 20 3E 20 30 29 20 7B 09 ], name) > 0) {.
022180: 2F 2A 20 73 68 69 66 74 20 6F 74 68 65 72 73 20 /* shift others
022190: 75 70 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 66 up */.. f
0221A0: 6F 72 28 6A 20 3D 20 6D 6F 64 75 6C 65 73 3B 20 or(j = modules;
0221B0: 6A 20 3E 20 69 3B 20 2D 2D 6A 29 20 6D 70 74 72 j > i; --j) mptr
0221C0: 5B 6A 5D 20 3D 20 6D 70 74 72 5B 6A 2D 31 5D 3B [j] = mptr[j-1];
0221D0: 0D 0A 20 20 20 20 20 20 20 20 62 72 65 61 6B 3B .. break;
0221E0: 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 .. }..
0221F0: 20 20 20 69 66 28 63 6D 70 6D 6F 64 28 6E 61 6D if(cmpmod(nam
022200: 0D 0A 2A 2A 20 74 65 72 6D 69 6E 61 74 65 20 52 ..** terminate R
022210: 45 4C 20 6F 72 20 4C 49 42 20 66 69 6C 65 0D 0A EL or LIB file..
022220: 2A 2F 0D 0A 65 6E 64 72 65 6C 28 29 20 7B 0D 0A */..endrel() {..
022230: 20 20 69 74 65 6D 20 3D 20 45 46 49 4C 45 3B 0D item = EFILE;.
022240: 0A 20 20 66 69 65 6C 64 20 3D 20 30 3B 0D 0A 20 . field = 0;..
022250: 20 74 79 70 65 20 3D 20 30 3B 0D 0A 20 20 69 66 type = 0;.. if
022260: 28 21 70 75 74 72 65 6C 28 29 29 20 61 62 6F 72 (!putrel()) abor
022270: 74 28 37 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A t(7);.. }..../*
022280: 0D 0A 2A 2A 20 65 78 74 72 61 63 74 20 66 69 6C ..** extract fil
022290: 65 73 20 66 72 6F 6D 20 6C 69 62 72 61 72 79 0D es from library.
0222A0: 0A 2A 2F 0D 0A 65 78 74 72 61 63 74 28 29 20 7B .*/..extract() {
0222B0: 0D 0A 20 20 63 68 61 72 20 6D 6F 64 6E 61 6D 5B .. char modnam[
0222C0: 4E 41 4D 45 53 49 5A 45 5D 3B 0D 0A 20 20 6F 70 NAMESIZE];.. op
0222D0: 65 6E 69 6E 28 29 3B 0D 0A 20 20 77 68 69 6C 65 enin();.. while
0222E0: 28 6E 78 74 6D 6F 64 28 6D 6F 64 6E 61 6D 29 29 (nxtmod(modnam))
0222F0: 20 7B 0D 0A 20 20 20 20 69 66 28 6D 61 74 63 68 {.. if(match
022300: 28 6D 6F 64 6E 61 6D 2C 20 59 45 53 29 29 20 7B (modnam, YES)) {
022310: 0D 0A 20 20 20 20 20 20 65 78 74 65 6E 64 28 6D .. extend(m
022320: 6F 64 6E 61 6D 2C 20 4D 4F 44 45 58 54 2C 20 4D odnam, MODEXT, M
022330: 4F 44 45 58 54 29 3B 0D 0A 20 20 20 20 20 20 6F ODEXT);.. o
022340: 75 74 72 65 6C 20 3D 20 6F 70 65 6E 28 6D 6F 64 utrel = open(mod
022350: 6E 61 6D 2C 20 22 77 22 29 3B 0D 0A 20 20 20 20 nam, "w");..
022360: 20 20 63 70 79 6D 6F 64 28 59 45 53 29 3B 0D 0A cpymod(YES);..
022370: 20 20 20 20 20 20 65 6E 64 72 65 6C 28 29 3B 0D endrel();.
022380: 0A 20 20 20 20 20 20 63 6C 6F 73 65 28 6F 75 74 . close(out
022390: 72 65 6C 29 3B 0D 0A 20 20 20 20 20 20 70 75 74 rel);.. put
0223A0: 73 32 28 22 43 72 65 61 74 65 64 20 22 2C 20 6D s2("Created ", m
0223B0: 6F 64 6E 61 6D 29 3B 0D 0A 20 20 20 20 20 20 7D odnam);.. }
0223C0: 0D 0A 20 20 20 20 7D 0D 0A 20 20 6D 69 73 73 69 .. }.. missi
0223D0: 6E 67 28 29 3B 0D 0A 20 20 63 6C 6F 73 65 69 6E ng();.. closein
0223E0: 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A ();.. }..../*..
0223F0: 2A 2A 20 67 65 74 20 6D 6F 64 75 6C 65 20 6E 61 ** get module na
022400: 65 2C 20 6D 70 74 72 5B 69 5D 29 20 3D 3D 20 30 e, mptr[i]) == 0
022410: 29 20 7B 09 2F 2A 20 61 6C 72 65 61 64 79 20 6C ) {./* already l
022420: 6F 61 64 65 64 20 2A 2F 0D 0A 20 20 20 20 20 20 oaded */..
022430: 20 20 70 75 74 73 32 28 6D 70 2C 20 22 20 2D 20 puts2(mp, " -
022440: 44 75 70 6C 69 63 61 74 65 20 4E 61 6D 65 20 2D Duplicate Name -
022450: 20 49 67 6E 6F 72 65 64 22 29 3B 0D 0A 20 20 20 Ignored");..
022460: 20 20 20 20 20 67 6F 74 6F 20 69 67 6E 6F 72 65 goto ignore
022470: 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 ;.. }..
022480: 20 20 20 20 7D 0D 0A 20 20 20 20 6D 70 74 72 5B }.. mptr[
022490: 69 5D 20 3D 20 6D 70 3B 09 09 09 2F 2A 20 6C 6F i] = mp;.../* lo
0224A0: 61 64 20 6D 6F 64 6E 61 6D 65 20 70 6F 69 6E 74 ad modname point
0224B0: 65 72 20 2A 2F 0D 0A 20 20 20 20 73 74 72 63 70 er */.. strcp
0224C0: 79 28 6D 70 2C 20 6E 61 6D 65 29 3B 09 09 09 2F y(mp, name);.../
0224D0: 2A 20 6C 6F 61 64 20 6D 6F 64 6E 61 6D 65 20 62 * load modname b
0224E0: 75 66 66 65 72 20 2A 2F 0D 0A 20 20 20 20 77 68 uffer */.. wh
0224F0: 69 6C 65 28 2A 6D 70 2B 2B 29 20 3B 09 09 09 2F ile(*mp++) ;.../
022500: 2A 20 73 63 6F 6F 74 20 74 6F 20 6E 65 78 74 20 * scoot to next
022510: 61 64 64 72 65 73 73 20 2A 2F 0D 0A 20 20 20 20 address */..
022520: 2B 2B 6D 6F 64 75 6C 65 73 3B 09 09 09 09 2F 2A ++modules;..../*
022530: 20 62 75 6D 70 20 6E 75 6D 62 65 72 20 6F 66 20 bump number of
022540: 6D 6F 64 75 6C 65 73 20 2A 2F 0D 0A 20 20 20 20 modules */..
022550: 63 6F 6E 74 69 6E 75 65 3B 0D 0A 0D 0A 20 20 20 continue;....
022560: 20 69 67 6E 6F 72 65 3A 0D 0A 20 20 20 20 65 72 ignore:.. er
022570: 72 20 3D 20 59 45 53 3B 0D 0A 20 20 20 20 7D 0D r = YES;.. }.
022580: 0A 20 20 6D 70 74 72 5B 6D 6F 64 75 6C 65 73 5D . mptr[modules]
022590: 20 3D 20 6D 70 3B 09 09 09 2F 2A 20 6C 6F 61 64 = mp;.../* load
0225A0: 20 74 65 72 6D 69 6E 61 6C 20 70 6F 69 6E 74 65 terminal pointe
0225B0: 72 20 2A 2F 0D 0A 20 20 2A 6D 70 2B 2B 20 3D 20 r */.. *mp++ =
0225C0: 48 49 47 48 3B 09 09 09 09 2F 2A 20 68 69 67 68 HIGH;..../* high
0225D0: 20 76 61 6C 75 65 20 2A 2F 0D 0A 20 20 2A 6D 70 value */.. *mp
0225E0: 20 20 20 3D 20 4E 55 4C 4C 3B 0D 0A 20 20 69 66 = NULL;.. if
0225F0: 28 21 65 6F 66 29 20 65 72 72 6F 72 28 22 2D 20 (!eof) error("-
022600: 6D 65 73 0D 0A 2A 2F 0D 0A 67 65 74 6D 6F 64 73 mes..*/..getmods
022610: 28 61 72 67 63 2C 20 61 72 67 76 29 20 69 6E 74 (argc, argv) int
022620: 20 61 72 67 63 2C 20 61 72 67 76 5B 5D 3B 20 7B argc, argv[]; {
022630: 0D 0A 20 20 63 68 61 72 20 2A 63 70 2C 20 2A 6D .. char *cp, *m
022640: 70 2C 20 6E 61 6D 65 5B 4E 41 4D 45 53 49 5A 45 p, name[NAMESIZE
022650: 5D 2C 20 66 6E 5B 4E 41 4D 45 53 49 5A 45 5D 3B ], fn[NAMESIZE];
022660: 0D 0A 20 20 69 6E 74 20 65 72 72 2C 20 65 6F 66 .. int err, eof
022670: 2C 20 61 72 67 2C 20 69 2C 20 6A 3B 0D 0A 20 20 , arg, i, j;..
022680: 69 66 28 21 28 6D 70 20 3D 20 6D 6F 64 6E 61 6D if(!(mp = modnam
022690: 65 20 3D 20 6D 61 6C 6C 6F 63 28 4D 41 58 4D 4F e = malloc(MAXMO
0226A0: 44 53 2A 31 30 29 29 29 20 65 72 72 6F 72 28 22 DS*10))) error("
0226B0: 2D 20 4D 65 6D 6F 72 79 20 4F 76 65 72 66 6C 6F - Memory Overflo
0226C0: 77 22 29 3B 0D 0A 20 20 69 66 28 28 6A 20 3D 20 w");.. if((j =
0226D0: 61 76 61 69 6C 28 4E 4F 29 29 20 3E 3D 20 30 20 avail(NO)) >= 0
0226E0: 26 26 20 6A 20 3C 20 35 31 32 29 20 7B 0D 0A 20 && j < 512) {..
0226F0: 20 20 20 70 75 74 73 28 22 2D 20 4C 69 6D 69 74 puts("- Limit
022700: 65 64 20 53 74 61 63 6B 20 53 70 61 63 65 22 29 ed Stack Space")
022710: 3B 0D 0A 20 20 20 20 65 72 72 20 3D 20 59 45 53 ;.. err = YES
022720: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 61 6C 6C 20 ;.. }.. all
022730: 3D 20 59 45 53 3B 09 09 09 2F 2A 20 64 65 66 61 = YES;.../* defa
022740: 75 6C 74 20 74 6F 20 61 6C 6C 20 6D 6F 64 75 6C ult to all modul
022750: 65 73 20 2A 2F 0D 0A 20 20 69 66 28 61 72 67 63 es */.. if(argc
022760: 20 3E 20 33 29 20 61 72 67 20 3D 20 33 3B 09 09 > 3) arg = 3;..
022770: 2F 2A 20 67 65 74 20 6D 6F 64 75 6C 65 20 6E 61 /* get module na
022780: 6D 65 73 20 66 72 6F 6D 20 63 6F 6D 6D 61 6E 64 mes from command
022790: 20 6C 69 6E 65 20 2A 2F 0D 0A 20 20 65 6C 73 65 line */.. else
0227A0: 20 7B 0D 0A 20 20 20 20 61 72 67 20 3D 20 30 3B {.. arg = 0;
0227B0: 09 09 09 2F 2A 20 67 65 74 20 6D 6F 64 75 6C 65 .../* get module
0227C0: 20 6E 61 6D 65 73 20 66 72 6F 6D 20 73 74 64 69 names from stdi
0227D0: 6E 20 2A 2F 0D 0A 20 20 20 20 69 66 28 63 6D 64 n */.. if(cmd
0227E0: 5B 32 5D 20 26 26 20 28 63 6D 64 5B 31 5D 20 3D [2] && (cmd[1] =
0227F0: 3D 20 27 50 27 20 7C 7C 20 63 6D 64 5B 31 5D 20 = 'P' || cmd[1]
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: 54 6F 6F 20 4D 61 6E 79 20 4D 6F 64 75 6C 65 73 Too Many Modules
022910: 20 53 70 65 63 69 66 69 65 64 22 29 3B 0D 0A 20 Specified");..
022920: 20 69 66 28 65 72 72 29 20 7B 0D 0A 20 20 20 20 if(err) {..
022930: 66 70 75 74 73 28 22 5C 6E 43 6F 6E 74 69 6E 75 fputs("\nContinu
022940: 65 3F 20 22 2C 20 73 74 64 65 72 72 29 3B 0D 0A e? ", stderr);..
022950: 20 20 20 20 66 67 65 74 73 28 6E 61 6D 65 2C 20 fgets(name,
022960: 4E 41 4D 45 53 49 5A 45 2C 20 73 74 64 65 72 72 NAMESIZE, stderr
022970: 29 3B 0D 0A 20 20 20 20 69 66 28 74 6F 75 70 70 );.. if(toupp
022980: 65 72 28 2A 6E 61 6D 65 29 20 21 3D 20 27 59 27 er(*name) != 'Y'
022990: 29 20 65 78 69 74 28 37 29 3B 0D 0A 20 20 20 20 ) exit(7);..
0229A0: 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A }.. }..../*..**
0229B0: 20 72 65 61 64 20 61 6E 20 65 6E 74 72 79 20 66 read an entry f
0229C0: 72 6F 6D 20 74 68 65 20 6F 6C 64 20 69 6E 64 65 rom the old inde
0229D0: 78 0D 0A 2A 2F 0D 0A 67 65 74 6E 64 78 28 29 20 x..*/..getndx()
0229E0: 7B 0D 0A 20 20 69 66 28 72 65 61 64 28 69 6E 6E {.. if(read(inn
0229F0: 64 78 2C 20 26 6F 6C 64 62 6C 6F 63 6B 2C 20 32 dx, &oldblock, 2
022A00: 29 20 21 3D 20 32 20 7C 7C 09 2F 2A 20 6E 65 78 ) != 2 ||./* nex
022A10: 74 20 62 6C 6F 63 6B 20 2A 2F 0D 0A 20 20 20 20 t block */..
022A20: 20 72 65 61 64 28 69 6E 6E 64 78 2C 20 26 6F 6C read(inndx, &ol
022A30: 64 62 79 74 65 2C 20 20 32 29 20 21 3D 20 32 29 dbyte, 2) != 2)
022A40: 09 2F 2A 20 6E 65 78 74 20 62 79 74 65 20 69 6E ./* next byte in
022A50: 20 62 6C 6F 63 6B 20 2A 2F 0D 0A 20 20 20 20 65 block */.. e
022A60: 72 72 6F 72 28 22 2D 20 45 72 72 6F 72 20 52 65 rror("- Error Re
022A70: 61 64 69 6E 67 20 49 6E 64 65 78 22 29 3B 0D 0A ading Index");..
022A80: 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 63 68 }..../*..** ch
022A90: 65 63 6B 20 69 66 20 6E 61 6D 65 20 6D 61 74 63 eck if name matc
022AA0: 68 65 73 20 6D 6F 64 75 6C 65 20 6C 69 73 74 0D hes module list.
022AB0: 0A 2A 2F 0D 0A 6D 61 74 63 68 28 6E 61 6D 65 2C .*/..match(name,
022AC0: 20 71 75 69 74 29 20 63 68 61 72 20 2A 6E 61 6D quit) char *nam
022AD0: 65 3B 20 69 6E 74 20 71 75 69 74 3B 20 7B 0D 0A e; int quit; {..
022AE0: 20 20 69 6E 74 20 69 2C 20 64 6F 6E 65 3B 0D 0A int i, done;..
022AF0: 20 20 63 68 61 72 20 2A 6D 70 3B 0D 0A 20 20 69 char *mp;.. i
022B00: 74 6F 20 74 68 65 20 6E 65 77 20 69 6E 64 65 78 to the new index
022B10: 0D 0A 2A 2F 0D 0A 70 75 74 6E 64 78 28 62 6C 6F ..*/..putndx(blo
022B20: 63 6B 2C 20 62 79 74 65 29 20 69 6E 74 20 62 6C ck, byte) int bl
022B30: 6F 63 6B 2C 20 62 79 74 65 3B 20 7B 0D 0A 20 20 ock, byte; {..
022B40: 69 66 28 77 72 69 74 65 28 6F 75 74 6E 64 78 2C if(write(outndx,
022B50: 20 26 62 6C 6F 63 6B 2C 20 32 29 20 21 3D 20 32 &block, 2) != 2
022B60: 20 7C 7C 09 2F 2A 20 6E 65 78 74 20 62 6C 6F 63 ||./* next bloc
022B70: 6B 20 74 6F 20 69 6E 64 65 78 20 2A 2F 0D 0A 20 k to index */..
022B80: 20 20 20 20 77 72 69 74 65 28 6F 75 74 6E 64 78 write(outndx
022B90: 2C 20 26 62 79 74 65 2C 20 32 29 20 21 3D 20 32 , &byte, 2) != 2
022BA0: 29 09 2F 2A 20 6E 65 78 74 20 62 79 74 65 20 69 )./* next byte i
022BB0: 6E 20 62 6C 6F 63 6B 20 74 6F 20 69 6E 64 65 78 n block to index
022BC0: 20 2A 2F 0D 0A 20 20 20 20 65 72 72 6F 72 28 22 */.. error("
022BD0: 2D 20 45 72 72 6F 72 20 57 72 69 74 69 6E 67 20 - Error Writing
022BE0: 4E 65 77 20 49 6E 64 65 78 22 29 3B 0D 0A 20 20 New Index");..
022BF0: 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 72 65 73 74 }..../*..** rest
022C00: 6F 72 65 20 52 45 4C 20 76 61 72 69 61 62 6C 65 ore REL variable
022C10: 73 0D 0A 2A 2F 0D 0A 72 65 73 74 72 65 6C 28 29 s..*/..restrel()
022C20: 20 7B 0D 0A 20 20 69 74 65 6D 20 20 20 20 3D 20 {.. item =
022C30: 69 74 65 6D 32 3B 0D 0A 20 20 74 79 70 65 20 20 item2;.. type
022C40: 20 20 3D 20 74 79 70 65 32 3B 0D 0A 20 20 66 69 = type2;.. fi
022C50: 65 6C 64 20 20 20 3D 20 66 69 65 6C 64 32 3B 0D eld = field2;.
022C60: 0A 20 20 73 74 72 63 70 79 28 73 79 6D 62 6F 6C . strcpy(symbol
022C70: 2C 20 73 79 6D 32 29 3B 0D 0A 20 20 69 6E 72 65 , sym2);.. inre
022C80: 6C 20 20 20 3D 20 69 6E 72 65 6C 32 3B 0D 0A 20 l = inrel2;..
022C90: 20 69 6E 63 68 75 6E 6B 20 3D 20 69 6E 63 68 32 inchunk = inch2
022CA0: 3B 0D 0A 20 20 69 6E 72 65 6D 20 20 20 3D 20 69 ;.. inrem = i
022CB0: 6E 72 65 6D 32 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F nrem2;.. }..../
022CC0: 2A 0D 0A 2A 2A 20 73 61 76 65 20 52 45 4C 20 76 *..** save REL v
022CD0: 61 72 69 61 62 6C 65 73 0D 0A 2A 2F 0D 0A 73 61 ariables..*/..sa
022CE0: 76 65 72 65 6C 28 29 20 7B 0D 0A 20 20 69 74 65 verel() {.. ite
022CF0: 6D 32 20 20 3D 20 69 74 65 6D 3B 0D 0A 20 20 74 m2 = item;.. t
022D00: 66 28 61 6C 6C 29 20 72 65 74 75 72 6E 28 59 45 f(all) return(YE
022D10: 53 29 3B 0D 0A 20 20 64 6F 6E 65 20 3D 20 59 45 S);.. done = YE
022D20: 53 3B 0D 0A 20 20 66 6F 72 28 69 20 3D 20 30 3B S;.. for(i = 0;
022D30: 20 69 20 3C 20 6D 6F 64 75 6C 65 73 3B 20 2B 2B i < modules; ++
022D40: 69 29 20 7B 0D 0A 20 20 20 20 69 66 28 63 6D 70 i) {.. if(cmp
022D50: 6D 6F 64 28 6D 70 74 72 5B 69 5D 2C 20 6E 61 6D mod(mptr[i], nam
022D60: 65 29 20 3D 3D 20 30 29 20 7B 0D 0A 20 20 20 20 e) == 0) {..
022D70: 20 20 6D 64 6F 6E 65 5B 69 5D 20 3D 20 59 45 53 mdone[i] = YES
022D80: 3B 0D 0A 20 20 20 20 20 20 72 65 74 75 72 6E 28 ;.. return(
022D90: 59 45 53 29 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A YES);.. }..
022DA0: 20 20 20 20 69 66 28 21 6D 64 6F 6E 65 5B 69 5D if(!mdone[i]
022DB0: 29 20 64 6F 6E 65 20 3D 20 4E 4F 3B 0D 0A 20 20 ) done = NO;..
022DC0: 20 20 7D 0D 0A 20 20 69 66 28 71 75 69 74 20 26 }.. if(quit &
022DD0: 26 20 64 6F 6E 65 29 20 65 78 69 74 28 30 29 3B & done) exit(0);
022DE0: 0D 0A 20 20 72 65 74 75 72 6E 28 4E 4F 29 3B 0D .. return(NO);.
022DF0: 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 . }..../*..** p
022E00: 72 69 6E 74 20 22 6E 6F 74 20 69 6E 20 6C 69 62 rint "not in lib
022E10: 72 61 72 79 22 20 6D 65 73 73 61 67 65 73 0D 0A rary" messages..
022E20: 2A 2F 0D 0A 6D 69 73 73 69 6E 67 28 29 20 7B 0D */..missing() {.
022E30: 0A 20 20 69 6E 74 20 69 3B 0D 0A 20 20 66 6F 72 . int i;.. for
022E40: 28 69 20 3D 20 30 3B 20 69 20 3C 20 6D 6F 64 75 (i = 0; i < modu
022E50: 6C 65 73 3B 20 2B 2B 69 29 0D 0A 20 20 20 20 69 les; ++i).. i
022E60: 66 28 21 6D 64 6F 6E 65 5B 69 5D 29 20 70 75 74 f(!mdone[i]) put
022E70: 73 32 28 6D 70 74 72 5B 69 5D 2C 20 22 20 57 61 s2(mptr[i], " Wa
022E80: 73 20 4E 6F 74 20 69 6E 20 4C 69 62 72 61 72 79 s Not in Library
022E90: 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A ");.. }..../*..
022EA0: 2A 2A 20 6D 6F 76 65 20 66 69 6C 65 31 20 74 6F ** move file1 to
022EB0: 20 66 69 6C 65 32 0D 0A 2A 2F 0D 0A 6D 6F 76 66 file2..*/..movf
022EC0: 69 6C 28 66 69 6C 65 31 2C 20 66 69 6C 65 32 29 il(file1, file2)
022ED0: 20 63 68 61 72 20 2A 66 69 6C 65 31 2C 20 2A 66 char *file1, *f
022EE0: 69 6C 65 32 3B 20 7B 0D 0A 20 20 75 6E 6C 69 6E ile2; {.. unlin
022EF0: 6B 28 66 69 6C 65 32 29 3B 0D 0A 20 20 69 66 28 k(file2);.. if(
022F00: 79 70 65 32 20 20 3D 20 74 79 70 65 3B 0D 0A 20 ype2 = type;..
022F10: 20 66 69 65 6C 64 32 20 3D 20 66 69 65 6C 64 3B field2 = field;
022F20: 0D 0A 20 20 73 74 72 63 70 79 28 73 79 6D 32 2C .. strcpy(sym2,
022F30: 20 73 79 6D 62 6F 6C 29 3B 0D 0A 20 20 69 6E 72 symbol);.. inr
022F40: 65 6C 32 20 3D 20 69 6E 72 65 6C 3B 0D 0A 20 20 el2 = inrel;..
022F50: 69 6E 63 68 32 20 20 3D 20 69 6E 63 68 75 6E 6B inch2 = inchunk
022F60: 3B 0D 0A 20 20 69 6E 72 65 6D 32 20 3D 20 69 6E ;.. inrem2 = in
022F70: 72 65 6D 3B 0D 0A 20 20 69 6E 72 65 6D 20 20 3D rem;.. inrem =
022F80: 20 30 3B 09 09 2F 2A 20 66 6F 72 63 65 20 67 65 0;../* force ge
022F90: 74 72 65 6C 28 29 20 74 6F 20 72 65 61 64 20 61 trel() to read a
022FA0: 20 62 79 74 65 20 2A 2F 0D 0A 20 20 7D 0D 0A 0D byte */.. }...
022FB0: 0A 2F 2A 0D 0A 2A 2A 20 73 65 65 6B 20 74 6F 20 ./*..** seek to
022FC0: 6E 65 78 74 20 6D 65 6D 62 65 72 20 69 6E 20 6F next member in o
022FD0: 6C 64 20 6C 69 62 72 61 72 79 0D 0A 2A 2F 0D 0A ld library..*/..
022FE0: 65 78 74 65 72 6E 20 69 6E 74 20 55 63 68 72 70 extern int Uchrp
022FF0: 6F 73 5B 5D 3B 09 09 2F 2A 20 6C 69 76 65 73 20 os[];../* lives
023000: 69 6E 20 43 53 59 53 4C 49 42 20 2A 2F 0D 0A 73 in CSYSLIB */..s
023010: 65 65 6B 28 29 20 7B 0D 0A 20 20 67 65 74 6E 64 eek() {.. getnd
023020: 78 28 29 3B 0D 0A 20 20 69 66 28 6F 6C 64 62 6C x();.. if(oldbl
023030: 6F 63 6B 20 3D 3D 20 45 4F 46 29 20 65 72 72 6F ock == EOF) erro
023040: 72 28 22 2D 20 50 72 65 6D 61 74 75 72 65 20 45 r("- Premature E
023050: 6E 64 20 6F 66 20 49 6E 64 65 78 22 29 3B 0D 0A nd of Index");..
023060: 20 20 69 66 28 63 73 65 65 6B 28 69 6E 72 65 6C if(cseek(inrel
023070: 2C 20 6F 6C 64 62 6C 6F 63 6B 2C 20 30 29 20 3D , oldblock, 0) =
023080: 3D 20 45 4F 46 29 0D 0A 20 20 20 20 65 72 72 6F = EOF).. erro
023090: 72 28 22 2D 20 43 6F 72 72 75 70 74 20 4C 69 62 r("- Corrupt Lib
0230A0: 72 61 72 79 20 6F 72 20 49 6E 64 65 78 22 29 3B rary or Index");
0230B0: 0D 0A 20 20 55 63 68 72 70 6F 73 5B 69 6E 72 65 .. Uchrpos[inre
0230C0: 6C 5D 20 3D 20 6F 6C 64 62 79 74 65 3B 0D 0A 20 l] = oldbyte;..
0230D0: 20 69 6E 72 65 6D 20 3D 20 30 3B 09 09 09 2F 2A inrem = 0;.../*
0230E0: 20 66 6F 72 63 65 20 67 65 74 72 65 6C 28 29 20 force getrel()
0230F0: 74 6F 20 72 65 61 64 20 61 20 62 79 74 65 20 2A to read a byte *
023100: 66 69 6C 65 32 5B 31 5D 20 3D 3D 20 27 3A 27 29 file2[1] == ':')
023110: 20 66 69 6C 65 32 20 2B 3D 20 32 3B 0D 0A 20 20 file2 += 2;..
023120: 69 66 28 72 65 6E 61 6D 65 28 66 69 6C 65 31 2C if(rename(file1,
023130: 20 66 69 6C 65 32 29 29 20 65 72 72 6F 72 28 22 file2)) error("
023140: 2D 20 43 61 6E 27 74 20 52 65 6E 61 6D 65 20 46 - Can't Rename F
023150: 69 6C 65 73 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A iles");.. }....
023160: 2F 2A 0D 0A 2A 2A 20 63 72 65 61 74 65 20 6E 65 /*..** create ne
023170: 77 20 66 69 6C 65 6E 61 6D 65 20 66 72 6F 6D 20 w filename from
023180: 6F 6C 64 20 66 69 6C 65 6E 61 6D 65 20 61 6E 64 old filename and
023190: 20 73 70 65 63 69 66 69 65 64 20 65 78 74 65 6E specified exten
0231A0: 73 69 6F 6E 0D 0A 2A 2F 0D 0A 6E 65 77 66 6E 28 sion..*/..newfn(
0231B0: 64 65 73 74 2C 20 73 6F 75 72 2C 20 65 78 74 29 dest, sour, ext)
0231C0: 20 63 68 61 72 20 2A 64 65 73 74 2C 20 2A 73 6F char *dest, *so
0231D0: 75 72 2C 20 2A 65 78 74 3B 20 7B 0D 0A 20 20 77 ur, *ext; {.. w
0231E0: 68 69 6C 65 28 2A 73 6F 75 72 20 26 26 20 2A 73 hile(*sour && *s
0231F0: 6F 75 72 20 21 3D 20 27 2E 27 29 20 2A 64 65 73 our != '.') *des
023200: 74 2B 2B 20 3D 20 2A 73 6F 75 72 2B 2B 3B 0D 0A t++ = *sour++;..
023210: 20 20 73 74 72 63 70 79 28 64 65 73 74 2C 20 65 strcpy(dest, e
023220: 78 74 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D xt);.. }..../*.
023230: 0A 2A 2A 20 67 65 74 20 6E 65 78 74 20 6D 6F 64 .** get next mod
023240: 75 6C 65 20 6E 61 6D 65 0D 0A 2A 2F 0D 0A 6E 78 ule name..*/..nx
023250: 74 6D 6F 64 28 6E 61 6D 65 29 20 63 68 61 72 20 tmod(name) char
023260: 2A 6E 61 6D 65 3B 20 7B 0D 0A 20 20 73 65 65 6B *name; {.. seek
023270: 28 29 3B 09 09 09 09 2F 2A 20 67 6F 20 73 74 72 ();..../* go str
023280: 61 69 67 68 74 20 74 6F 20 6E 65 78 74 20 6D 65 aight to next me
023290: 6D 62 65 72 20 2A 2F 0D 0A 20 20 69 66 28 67 65 mber */.. if(ge
0232A0: 74 72 65 6C 28 29 20 3D 3D 20 50 4E 41 4D 45 29 trel() == PNAME)
0232B0: 20 7B 0D 0A 20 20 20 20 73 74 72 63 70 79 28 6E {.. strcpy(n
0232C0: 61 6D 65 2C 20 73 79 6D 62 6F 6C 29 3B 0D 0A 20 ame, symbol);..
0232D0: 20 20 20 72 65 74 75 72 6E 20 28 59 45 53 29 3B return (YES);
0232E0: 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 69 74 .. }.. if(it
0232F0: 65 6D 20 3D 3D 20 45 46 49 4C 45 29 20 7B 0D 0A em == EFILE) {..
023300: 2F 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A /.. }..../*..**
023310: 20 70 72 69 6E 74 20 74 61 62 6C 65 20 6F 66 20 print table of
023320: 63 6F 6E 74 65 6E 74 73 0D 0A 2A 2F 0D 0A 74 61 contents..*/..ta
023330: 62 6C 65 28 29 20 7B 0D 0A 20 20 63 68 61 72 20 ble() {.. char
023340: 6E 61 6D 65 5B 4E 41 4D 45 53 49 5A 45 5D 3B 20 name[NAMESIZE];
023350: 69 6E 74 20 69 2C 20 6A 3B 0D 0A 20 20 6F 70 65 int i, j;.. ope
023360: 6E 69 6E 28 29 3B 0D 0A 20 20 70 75 74 73 28 22 nin();.. puts("
023370: 22 29 3B 0D 0A 20 20 69 20 3D 20 30 3B 0D 0A 20 ");.. i = 0;..
023380: 20 77 68 69 6C 65 28 6E 78 74 6D 6F 64 28 6E 61 while(nxtmod(na
023390: 6D 65 29 29 20 7B 0D 0A 20 20 20 20 70 6F 6C 6C me)) {.. poll
0233A0: 28 59 45 53 29 3B 0D 0A 20 20 20 20 69 66 28 6D (YES);.. if(m
0233B0: 61 74 63 68 28 6E 61 6D 65 2C 20 59 45 53 29 29 atch(name, YES))
0233C0: 20 7B 0D 0A 20 20 20 20 20 20 66 70 75 74 73 28 {.. fputs(
0233D0: 6E 61 6D 65 2C 20 73 74 64 6F 75 74 29 3B 0D 0A name, stdout);..
0233E0: 20 20 20 20 20 20 6A 20 3D 20 39 20 2D 20 73 74 j = 9 - st
0233F0: 72 6C 65 6E 28 6E 61 6D 65 29 3B 0D 0A 20 20 20 rlen(name);..
023400: 20 20 20 77 68 69 6C 65 28 6A 2D 2D 29 20 70 75 while(j--) pu
023410: 74 63 68 61 72 28 27 20 27 29 3B 0D 0A 20 20 20 tchar(' ');..
023420: 20 20 20 69 66 20 28 21 28 2B 2B 69 20 25 20 38 if (!(++i % 8
023430: 29 29 20 70 75 74 73 28 22 22 29 3B 0D 0A 20 20 )) puts("");..
023440: 20 20 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 }.. }..
023450: 70 75 74 73 28 22 22 29 3B 0D 0A 20 20 6D 69 73 puts("");.. mis
023460: 73 69 6E 67 28 29 3B 0D 0A 20 20 63 6C 6F 73 65 sing();.. close
023470: 69 6E 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A in();.. }..../*
023480: 0D 0A 2A 2A 20 75 70 64 61 74 65 20 28 61 64 64 ..** update (add
023490: 20 61 6E 64 20 72 65 70 6C 61 63 65 29 20 6D 6F and replace) mo
0234A0: 64 75 6C 65 73 20 69 6E 20 61 6C 70 68 61 6E 75 dules in alphanu
0234B0: 6D 65 72 69 63 20 6F 72 64 65 72 0D 0A 2A 2F 0D meric order..*/.
0234C0: 0A 75 70 64 61 74 65 28 29 20 7B 0D 0A 20 20 63 .update() {.. c
0234D0: 68 61 72 20 6D 6F 64 5B 4E 41 4D 45 53 49 5A 45 har mod[NAMESIZE
0234E0: 5D 3B 20 69 6E 74 20 6D 3B 0D 0A 20 20 6F 70 65 ]; int m;.. ope
0234F0: 6E 75 70 28 29 3B 0D 0A 20 20 6D 20 3D 20 30 3B nup();.. m = 0;
023500: 20 20 20 20 2A 6E 61 6D 65 2B 2B 20 3D 20 48 49 *name++ = HI
023510: 47 48 3B 09 09 09 2F 2A 20 68 69 67 68 20 76 61 GH;.../* high va
023520: 6C 75 65 20 2A 2F 0D 0A 20 20 20 20 2A 6E 61 6D lue */.. *nam
023530: 65 20 20 20 3D 20 4E 55 4C 4C 3B 0D 0A 20 20 20 e = NULL;..
023540: 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 return (NO);..
023550: 20 20 20 7D 0D 0A 20 20 65 72 72 6F 72 28 22 2D }.. error("-
023560: 20 43 6F 72 72 75 70 74 20 4C 69 62 72 61 72 79 Corrupt Library
023570: 20 6F 72 20 49 6E 64 65 78 22 29 3B 0D 0A 20 20 or Index");..
023580: 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6F 70 65 6E }..../*..** open
023590: 20 6C 69 62 72 61 72 79 20 61 6E 64 20 69 6E 64 library and ind
0235A0: 65 78 20 66 6F 72 20 69 6E 70 75 74 0D 0A 2A 2F ex for input..*/
0235B0: 0D 0A 6F 70 65 6E 69 6E 28 29 20 7B 0D 0A 20 20 ..openin() {..
0235C0: 77 68 69 6C 65 28 21 28 69 6E 72 65 6C 20 3D 20 while(!(inrel =
0235D0: 66 6F 70 65 6E 28 6F 6C 64 6C 69 62 2C 20 22 72 fopen(oldlib, "r
0235E0: 22 29 29 29 20 7B 0D 0A 20 20 20 20 70 75 74 73 "))) {.. puts
0235F0: 28 22 5C 6E 43 72 65 61 74 69 6E 67 20 4E 65 77 ("\nCreating New
023600: 20 4C 69 62 72 61 72 79 22 29 3B 0D 0A 20 20 20 Library");..
023610: 20 6F 75 74 72 65 6C 20 3D 20 6F 70 65 6E 28 6F outrel = open(o
023620: 6C 64 6C 69 62 2C 20 22 77 22 29 3B 0D 0A 20 20 ldlib, "w");..
023630: 20 20 69 74 65 6D 20 3D 20 45 46 49 4C 45 3B 0D item = EFILE;.
023640: 0A 20 20 20 20 70 75 74 72 65 6C 28 29 3B 0D 0A . putrel();..
023650: 20 20 20 20 63 6C 6F 73 65 28 6F 75 74 72 65 6C close(outrel
023660: 29 3B 0D 0A 20 20 20 20 6F 75 74 6E 64 78 20 3D );.. outndx =
023670: 20 6F 70 65 6E 28 6F 6C 64 6E 64 78 2C 20 22 77 open(oldndx, "w
023680: 22 29 3B 0D 0A 20 20 20 20 70 75 74 6E 64 78 28 ");.. putndx(
023690: 30 2C 20 30 29 3B 0D 0A 20 20 20 20 70 75 74 6E 0, 0);.. putn
0236A0: 64 78 28 45 4F 46 2C 20 45 4F 46 29 3B 20 0D 0A dx(EOF, EOF); ..
0236B0: 20 20 20 20 63 6C 6F 73 65 28 6F 75 74 6E 64 78 close(outndx
0236C0: 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 6E 6E );.. }.. inn
0236D0: 64 78 20 3D 20 6F 70 65 6E 28 6F 6C 64 6E 64 78 dx = open(oldndx
0236E0: 2C 20 22 72 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A , "r");.. }....
0236F0: 2F 2A 0D 0A 2A 2A 20 6F 70 65 6E 20 6C 69 62 72 /*..** open libr
023700: 09 09 09 09 2F 2A 20 66 69 72 73 74 20 69 6E 20 ..../* first in
023710: 6D 6F 64 75 6C 65 20 6C 69 73 74 20 2A 2F 0D 0A module list */..
023720: 20 20 6E 78 74 6D 6F 64 28 6D 6F 64 29 3B 09 09 nxtmod(mod);..
023730: 09 09 2F 2A 20 66 69 72 73 74 20 69 6E 20 6F 6C ../* first in ol
023740: 64 20 6C 69 62 72 61 72 79 20 2A 2F 0D 0A 20 20 d library */..
023750: 77 68 69 6C 65 28 59 45 53 29 20 7B 0D 0A 20 20 while(YES) {..
023760: 20 20 69 66 28 63 6D 70 6D 6F 64 28 6D 70 74 72 if(cmpmod(mptr
023770: 5B 6D 5D 2C 20 6D 6F 64 29 20 3E 20 30 29 20 7B [m], mod) > 0) {
023780: 09 2F 2A 20 6D 6F 64 75 6C 65 20 3E 20 6D 65 6D ./* module > mem
023790: 62 65 72 20 2A 2F 0D 0A 20 20 20 20 20 20 63 70 ber */.. cp
0237A0: 79 6D 6F 64 28 59 45 53 29 3B 09 09 09 2F 2A 20 ymod(YES);.../*
0237B0: 63 6F 70 79 20 72 65 73 74 20 6F 66 20 6D 65 6D copy rest of mem
0237C0: 62 65 72 20 2A 2F 0D 0A 20 20 20 20 20 20 6E 78 ber */.. nx
0237D0: 74 6D 6F 64 28 6D 6F 64 29 3B 09 09 09 2F 2A 20 tmod(mod);.../*
0237E0: 6E 65 78 74 20 69 6E 20 6F 6C 64 20 6C 69 62 72 next in old libr
0237F0: 61 72 79 20 2A 2F 0D 0A 20 20 20 20 20 20 63 6F ary */.. co
023800: 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 20 7D ntinue;.. }
023810: 0D 0A 20 20 20 20 69 66 28 63 6D 70 6D 6F 64 28 .. if(cmpmod(
023820: 6D 70 74 72 5B 6D 5D 2C 20 6D 6F 64 29 20 3C 20 mptr[m], mod) <
023830: 30 29 20 7B 09 2F 2A 20 6D 6F 64 75 6C 65 20 3C 0) {./* module <
023840: 20 6D 65 6D 62 65 72 20 2A 2F 0D 0A 20 20 20 20 member */..
023850: 20 20 61 64 64 6D 6F 64 28 6D 70 74 72 5B 6D 5D addmod(mptr[m]
023860: 29 3B 09 09 09 2F 2A 20 61 64 64 20 6E 65 77 20 );.../* add new
023870: 6D 6F 64 75 6C 65 20 2A 2F 0D 0A 20 20 20 20 20 module */..
023880: 20 70 75 74 73 32 28 22 20 20 20 41 64 64 65 64 puts2(" Added
023890: 20 22 2C 20 6D 70 74 72 5B 6D 5D 29 3B 0D 0A 20 ", mptr[m]);..
0238A0: 20 20 20 20 20 2B 2B 6D 3B 09 09 09 09 2F 2A 20 ++m;..../*
0238B0: 6E 65 78 74 20 69 6E 20 6D 6F 64 75 6C 65 20 6C next in module l
0238C0: 69 73 74 20 2A 2F 0D 0A 20 20 20 20 20 20 63 6F ist */.. co
0238D0: 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 20 7D ntinue;.. }
0238E0: 0D 0A 20 20 20 20 69 66 28 2A 6D 6F 64 20 21 3D .. if(*mod !=
0238F0: 20 48 49 47 48 29 20 7B 09 09 09 2F 2A 20 65 71 HIGH) {.../* eq
023900: 61 72 69 65 73 20 61 6E 64 20 69 6E 64 69 63 65 aries and indice
023910: 73 20 66 6F 72 20 75 70 64 61 74 69 6E 67 0D 0A s for updating..
023920: 2A 2F 0D 0A 6F 70 65 6E 75 70 28 29 20 7B 0D 0A */..openup() {..
023930: 20 20 6F 70 65 6E 69 6E 28 29 3B 0D 0A 20 20 6F openin();.. o
023940: 75 74 72 65 6C 20 3D 20 6F 70 65 6E 28 6E 65 77 utrel = open(new
023950: 6C 69 62 2C 20 22 77 22 29 3B 0D 0A 20 20 6F 75 lib, "w");.. ou
023960: 74 6E 64 78 20 3D 20 6F 70 65 6E 28 6E 65 77 6E tndx = open(newn
023970: 64 78 2C 20 22 77 22 29 3B 0D 0A 20 20 61 75 78 dx, "w");.. aux
023980: 62 75 66 28 6F 75 74 72 65 6C 2C 20 34 30 39 36 buf(outrel, 4096
023990: 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A );.. }..../*..*
0239A0: 2A 20 70 72 69 6E 74 20 66 69 6C 65 73 20 66 72 * print files fr
0239B0: 6F 6D 20 6C 69 62 72 61 72 79 0D 0A 2A 2F 0D 0A om library..*/..
0239C0: 70 72 69 6E 74 28 29 20 7B 0D 0A 20 20 63 68 61 print() {.. cha
0239D0: 72 20 6D 6F 64 6E 61 6D 5B 4E 41 4D 45 53 49 5A r modnam[NAMESIZ
0239E0: 45 5D 3B 0D 0A 20 20 6F 70 65 6E 69 6E 28 29 3B E];.. openin();
0239F0: 0D 0A 20 20 77 68 69 6C 65 28 6E 78 74 6D 6F 64 .. while(nxtmod
023A00: 28 6D 6F 64 6E 61 6D 29 29 20 7B 0D 0A 20 20 20 (modnam)) {..
023A10: 20 69 66 28 6D 61 74 63 68 28 6D 6F 64 6E 61 6D if(match(modnam
023A20: 2C 20 59 45 53 29 29 20 7B 0D 0A 20 20 20 20 20 , YES)) {..
023A30: 20 77 68 69 6C 65 28 59 45 53 29 20 7B 0D 0A 20 while(YES) {..
023A40: 20 20 20 20 20 20 20 70 6F 6C 6C 28 59 45 53 29 poll(YES)
023A50: 3B 0D 0A 20 20 20 20 20 20 20 20 69 66 28 69 74 ;.. if(it
023A60: 65 6D 20 3E 20 45 4E 41 4D 45 29 20 73 65 65 72 em > ENAME) seer
023A70: 65 6C 28 29 3B 0D 0A 20 20 20 20 20 20 20 20 67 el();.. g
023A80: 65 74 72 65 6C 28 29 3B 0D 0A 20 20 20 20 20 20 etrel();..
023A90: 20 20 69 66 28 69 74 65 6D 20 3D 3D 20 45 50 52 if(item == EPR
023AA0: 4F 47 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 OG) break;..
023AB0: 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 7D 0D 0A }.. }..
023AC0: 20 20 20 20 7D 0D 0A 20 20 6D 69 73 73 69 6E 67 }.. missing
023AD0: 28 29 3B 0D 0A 20 20 63 6C 6F 73 65 69 6E 28 29 ();.. closein()
023AE0: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ;.. }..../*..**
023AF0: 20 77 72 69 74 65 20 61 6E 20 65 6E 74 72 79 20 write an entry
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: 75 61 6C 20 61 6E 64 20 6E 6F 74 20 61 74 20 65 ual and not at e
023C10: 6E 64 20 2A 2F 0D 0A 20 20 20 20 20 20 61 64 64 nd */.. add
023C20: 6D 6F 64 28 6D 70 74 72 5B 6D 5D 29 3B 09 09 09 mod(mptr[m]);...
023C30: 2F 2A 20 61 64 64 20 6E 65 77 20 6D 6F 64 75 6C /* add new modul
023C40: 65 20 2A 2F 0D 0A 20 20 20 20 20 20 2B 2B 6D 3B e */.. ++m;
023C50: 09 09 09 09 2F 2A 20 6E 65 78 74 20 69 6E 20 6D ..../* next in m
023C60: 6F 64 75 6C 65 20 6C 69 73 74 20 2A 2F 0D 0A 20 odule list */..
023C70: 20 20 20 20 20 70 75 74 73 32 28 22 52 65 70 6C puts2("Repl
023C80: 61 63 65 64 20 22 2C 20 6D 6F 64 29 3B 0D 0A 20 aced ", mod);..
023C90: 20 20 20 20 20 6E 78 74 6D 6F 64 28 6D 6F 64 29 nxtmod(mod)
023CA0: 3B 09 09 09 2F 2A 20 6E 65 78 74 20 69 6E 20 6F ;.../* next in o
023CB0: 6C 64 20 6C 69 62 72 61 72 79 20 2A 2F 0D 0A 20 ld library */..
023CC0: 20 20 20 20 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A continue;..
023CD0: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 62 72 65 }.. bre
023CE0: 61 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 63 6C ak;.. }.. cl
023CF0: 6F 73 65 75 70 28 29 3B 0D 0A 20 20 7D 0D 0A 0D oseup();.. }...
023D00: 0A 2F 2A 0D 0A 2A 2A 20 61 62 6F 72 74 20 77 69 ./*..** abort wi
023D10: 74 68 20 61 20 75 73 61 67 65 20 6D 65 73 73 61 th a usage messa
023D20: 67 65 0D 0A 2A 2F 0D 0A 75 73 61 67 65 28 29 20 ge..*/..usage()
023D30: 7B 0D 0A 20 20 65 72 72 6F 72 28 22 55 73 61 67 {.. error("Usag
023D40: 65 3A 20 4C 49 42 20 2D 7B 44 50 54 55 58 7D 5B e: LIB -{DPTUX}[
023D50: 41 5D 20 6C 69 62 72 61 72 79 20 5B 6D 6F 64 75 A] library [modu
023D60: 6C 65 2E 2E 2E 5D 22 29 3B 0D 0A 20 20 7D 0D 0A le...]");.. }..
023D70: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
023D80: 20 70 75 74 73 32 28 22 20 20 20 41 64 64 65 64 puts2(" Added
023D90: 20 22 2C 20 6D 70 74 72 5B 6D 5D 29 3B 0D 0A 20 ", mptr[m]);..
023DA0: 20 20 20 20 20 2B 2B 6D 3B 09 09 09 09 2F 2A 20 ++m;..../*
023DB0: 6E 65 78 74 20 69 6E 20 6D 6F 64 75 6C 65 20 6C next in module l
023DC0: 69 73 74 20 2A 2F 0D 0A 20 20 20 20 20 20 63 6F ist */.. co
023DD0: 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 20 7D ntinue;.. }
023DE0: 0D 0A 20 20 20 20 69 66 28 2A 6D 6F 64 20 21 3D .. if(*mod !=
023DF0: 20 48 49 47 48 29 20 7B 09 09 09 2F 2A 20 65 71 HIGH) {.../* eq
023E00: 6D 62 65 72 20 6F 66 20 6C 6F 6F 6B 73 20 74 6F mber of looks to
023E10: 20 66 69 6E 64 20 69 74 20 2A 2F 0D 0A 0D 0A 6D find it */....m
023E20: 61 69 6E 28 61 72 67 63 2C 20 61 72 67 76 29 20 ain(argc, argv)
023E30: 69 6E 74 20 61 72 67 63 2C 20 2A 61 72 67 76 3B int argc, *argv;
023E40: 20 7B 0D 0A 20 20 63 68 61 72 20 73 74 72 5B 4D {.. char str[M
023E50: 41 58 46 4E 5D 3B 0D 0A 20 20 66 70 75 74 73 28 AXFN];.. fputs(
023E60: 22 53 6D 61 6C 6C 2D 4D 61 63 20 4D 49 54 20 43 "Small-Mac MIT C
023E70: 6F 6D 70 69 6C 65 72 2C 20 22 2C 20 73 74 64 65 ompiler, ", stde
023E80: 72 72 29 3B 20 66 70 75 74 73 28 56 45 52 53 49 rr); fputs(VERSI
023E90: 4F 4E 2C 20 73 74 64 65 72 72 29 3B 0D 0A 20 20 ON, stderr);..
023EA0: 66 70 75 74 73 28 43 52 49 47 48 54 31 2C 20 73 fputs(CRIGHT1, s
023EB0: 74 64 65 72 72 29 3B 0D 0A 20 20 67 65 74 73 77 tderr);.. getsw
023EC0: 28 61 72 67 63 2C 20 61 72 67 76 29 3B 09 09 2F (argc, argv);../
023ED0: 2A 20 66 65 74 63 68 20 61 6E 64 20 72 65 6D 65 * fetch and reme
023EE0: 6D 62 65 72 20 73 77 69 74 63 68 65 73 2C 20 65 mber switches, e
023EF0: 74 63 2E 20 2A 2F 0D 0A 20 20 6C 6F 61 64 28 29 tc. */.. load()
023F00: 3B 0D 0A 20 20 69 66 28 6C 69 73 74 29 20 70 72 ;.. if(list) pr
023F10: 69 6E 74 28 29 3B 0D 0A 20 20 69 66 28 63 6F 6E int();.. if(con
023F20: 29 20 63 6F 6E 66 69 67 28 29 3B 0D 0A 20 20 7D ) config();.. }
023F30: 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 63 6F 6E 66 69 ..../*..** confi
023F40: 67 75 72 65 20 61 73 73 65 6D 62 6C 65 72 20 77 gure assembler w
023F50: 69 74 68 20 6D 61 63 68 69 6E 65 20 69 6E 73 74 ith machine inst
023F60: 72 75 63 74 69 6F 6E 20 74 61 62 6C 65 0D 0A 2A ruction table..*
023F70: 2F 0D 0A 65 78 74 65 72 6E 20 69 6E 74 20 55 63 /..extern int Uc
023F80: 68 72 70 6F 73 5B 5D 3B 0D 0A 63 6F 6E 66 69 67 hrpos[];..config
023F90: 28 29 20 7B 0D 0A 20 20 69 6E 74 20 66 64 2C 20 () {.. int fd,
023FA0: 73 7A 3B 0D 0A 20 20 66 64 20 3D 20 6F 70 65 6E sz;.. fd = open
023FB0: 28 6D 61 63 66 6E 2C 20 22 72 2B 22 29 3B 09 09 (macfn, "r+");..
023FC0: 2F 2A 20 6D 75 73 74 20 65 78 69 73 74 20 2A 2F /* must exist */
023FD0: 0D 0A 20 20 55 63 68 72 70 6F 73 5B 66 64 5D 20 .. Uchrpos[fd]
023FE0: 3D 20 33 3B 09 09 09 2F 2A 20 73 65 65 6B 20 74 = 3;.../* seek t
023FF0: 6F 20 6D 69 74 61 62 6C 65 20 77 6F 72 64 20 2A o mitable word *
024000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0240A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0240B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0240C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0240D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0240E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0240F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0241A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0241B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0241C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0241D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0241E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0241F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024200: 2F 0D 0A 20 20 72 65 61 64 28 66 64 2C 20 26 73 /.. read(fd, &s
024210: 7A 2C 20 49 4E 54 53 5A 29 3B 09 09 09 2F 2A 20 z, INTSZ);.../*
024220: 72 65 61 64 20 74 61 62 6C 65 20 73 69 7A 65 20 read table size
024230: 2A 2F 0D 0A 20 20 69 66 28 73 7A 20 21 3D 20 6D */.. if(sz != m
024240: 69 74 61 62 6C 65 29 20 7B 0D 0A 20 20 20 20 70 itable) {.. p
024250: 72 69 6E 74 66 28 22 25 73 20 4D 49 54 20 69 73 rintf("%s MIT is
024260: 20 25 75 20 42 79 74 65 73 20 62 75 74 20 53 68 %u Bytes but Sh
024270: 6F 75 6C 64 20 62 65 20 25 75 5C 6E 22 2C 20 6D ould be %u\n", m
024280: 61 63 66 6E 2C 20 73 7A 2C 20 6D 69 74 61 62 6C acfn, sz, mitabl
024290: 65 29 3B 0D 0A 20 20 20 20 61 62 6F 72 74 28 37 e);.. abort(7
0242A0: 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 77 72 69 );.. }.. wri
0242B0: 74 65 28 66 64 2C 20 26 6D 69 74 61 62 6C 65 20 te(fd, &mitable
0242C0: 2B 20 31 2C 20 6D 69 74 61 62 6C 65 29 3B 0D 0A + 1, mitable);..
0242D0: 20 20 69 66 28 66 65 72 72 6F 72 28 66 64 29 29 if(ferror(fd))
0242E0: 20 65 72 72 6F 72 32 28 6D 61 63 66 6E 2C 20 22 error2(macfn, "
0242F0: 20 2D 20 57 72 69 74 65 20 45 72 72 6F 72 22 29 - Write Error")
024300: 3B 0D 0A 20 20 63 6C 6F 73 65 28 66 64 29 3B 0D ;.. close(fd);.
024310: 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 67 . }..../*..** g
024320: 65 74 20 73 77 69 74 63 68 65 73 20 66 72 6F 6D et switches from
024330: 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 0D 0A 2A command line..*
024340: 2F 0D 0A 67 65 74 73 77 28 61 72 67 63 2C 20 61 /..getsw(argc, a
024350: 72 67 76 29 20 69 6E 74 20 61 72 67 63 2C 20 2A rgv) int argc, *
024360: 61 72 67 76 3B 20 7B 0D 0A 20 20 63 68 61 72 20 argv; {.. char
024370: 61 72 67 5B 4D 41 58 46 4E 5D 3B 0D 0A 20 20 69 arg[MAXFN];.. i
024380: 6E 74 20 69 2C 20 62 2C 20 6C 65 6E 3B 0D 0A 20 nt i, b, len;..
024390: 20 69 20 3D 20 30 3B 0D 0A 20 20 77 68 69 6C 65 i = 0;.. while
0243A0: 28 67 65 74 61 72 67 28 2B 2B 69 2C 20 61 72 67 (getarg(++i, arg
0243B0: 2C 20 4D 41 58 46 4E 2C 20 61 72 67 63 2C 20 61 , MAXFN, argc, a
0243C0: 72 67 76 29 20 21 3D 20 45 4F 46 29 20 7B 0D 0A rgv) != EOF) {..
0243D0: 20 20 20 20 69 66 28 61 72 67 5B 30 5D 20 3D 3D if(arg[0] ==
0243E0: 20 27 2D 27 29 20 7B 0D 0A 20 20 20 20 20 20 69 '-') {.. i
0243F0: 66 28 74 6F 75 70 70 65 72 28 61 72 67 5B 31 5D f(toupper(arg[1]
024400: 2F 2A 0D 0A 2A 2A 20 43 4D 49 54 2E 43 20 2D 2D /*..** CMIT.C --
024410: 20 4D 61 63 68 69 6E 65 20 49 6E 73 74 72 75 63 Machine Instruc
024420: 74 69 6F 6E 20 54 61 62 6C 65 20 43 6F 6D 70 69 tion Table Compi
024430: 6C 65 72 0D 0A 2A 2A 0D 0A 2A 2A 20 20 20 20 20 ler..**..**
024440: 20 20 20 20 20 20 20 20 53 6D 61 6C 6C 2D 4D 61 Small-Ma
024450: 63 20 41 73 73 65 6D 62 6C 65 72 20 43 6F 6E 66 c Assembler Conf
024460: 69 67 75 72 61 74 69 6F 6E 20 55 74 69 6C 69 74 iguration Utilit
024470: 79 0D 0A 2A 2A 0D 0A 2A 2A 20 20 20 20 20 20 20 y..**..**
024480: 20 20 20 20 20 20 20 20 20 20 20 20 43 6F 70 79 Copy
024490: 72 69 67 68 74 20 31 39 38 35 20 4A 2E 20 45 2E right 1985 J. E.
0244A0: 20 48 65 6E 64 72 69 78 0D 0A 2A 2A 0D 0A 2A 2A Hendrix..**..**
0244B0: 20 55 73 61 67 65 3A 20 43 4D 49 54 20 5B 2D 43 Usage: CMIT [-C
0244C0: 5D 20 5B 2D 4C 5D 20 5B 74 61 62 6C 65 5D 20 5B ] [-L] [table] [
0244D0: 6D 61 63 5D 20 0D 0A 2A 2A 0D 0A 2A 2A 20 2D 43 mac] ..**..** -C
0244E0: 20 20 20 20 20 43 6F 6E 66 69 67 75 72 65 20 74 Configure t
0244F0: 68 65 20 65 78 65 63 75 74 61 62 6C 65 20 61 73 he executable as
024500: 73 65 6D 62 6C 65 72 20 28 4D 41 43 2E 43 4F 4D sembler (MAC.COM
024510: 29 20 77 69 74 68 20 74 68 65 20 69 6E 64 69 63 ) with the indic
024520: 61 74 65 64 2C 0D 0A 2A 2A 20 20 20 20 20 20 20 ated,..**
024530: 20 6F 72 20 64 65 66 61 75 6C 74 2C 20 6D 61 63 or default, mac
024540: 68 69 6E 65 20 69 6E 73 74 72 75 63 74 69 6E 20 hine instructin
024550: 74 61 62 6C 65 2E 0D 0A 2A 2A 0D 0A 2A 2A 20 2D table...**..** -
024560: 4C 20 20 20 20 20 4C 69 73 74 20 74 68 65 20 63 L List the c
024570: 6F 6D 70 69 6C 65 64 20 6D 61 63 68 69 6E 65 20 ompiled machine
024580: 69 6E 73 74 72 75 63 74 69 6F 6E 20 74 61 62 6C instruction tabl
024590: 65 2E 0D 0A 2A 2A 0D 0A 2A 2A 20 74 61 62 6C 65 e...**..** table
0245A0: 20 20 54 68 65 20 6E 61 6D 65 20 6F 66 20 74 68 The name of th
0245B0: 65 20 6D 61 63 68 69 6E 65 20 69 6E 73 74 72 75 e machine instru
0245C0: 63 74 69 6F 6E 20 74 61 62 6C 65 20 66 69 6C 65 ction table file
0245D0: 20 69 6E 20 73 6F 75 72 63 65 0D 0A 2A 2A 20 20 in source..**
0245E0: 20 20 20 20 20 20 66 6F 72 6D 61 74 20 28 64 65 format (de
0245F0: 66 61 75 6C 74 20 38 30 38 30 2E 4D 49 54 29 2E fault 8080.MIT).
024600: 29 20 3D 3D 20 27 43 27 29 20 20 20 20 20 20 63 ) == 'C') c
024610: 6F 6E 20 3D 20 59 45 53 3B 0D 0A 20 20 20 20 20 on = YES;..
024620: 20 65 6C 73 65 20 69 66 28 74 6F 75 70 70 65 72 else if(toupper
024630: 28 61 72 67 5B 31 5D 29 20 3D 3D 20 27 4C 27 29 (arg[1]) == 'L')
024640: 20 6C 69 73 74 20 3D 20 59 45 53 3B 0D 0A 20 20 list = YES;..
024650: 20 20 20 20 65 6C 73 65 20 75 73 61 67 65 28 29 else usage()
024660: 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 ;.. }..
024670: 65 6C 73 65 20 7B 0D 0A 20 20 20 20 20 20 69 66 else {.. if
024680: 28 65 78 74 65 6E 64 28 61 72 67 2C 20 4D 49 54 (extend(arg, MIT
024690: 45 58 54 2C 20 43 4F 4D 45 58 54 29 29 20 0D 0A EXT, COMEXT)) ..
0246A0: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 63 70 strcp
0246B0: 79 28 6D 61 63 66 6E 2C 20 61 72 67 29 3B 0D 0A y(macfn, arg);..
0246C0: 20 20 20 20 20 20 65 6C 73 65 20 73 74 72 63 70 else strcp
0246D0: 79 28 6D 69 74 66 6E 2C 20 61 72 67 29 3B 0D 0A y(mitfn, arg);..
0246E0: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A }.. }..
0246F0: 20 20 69 66 28 21 63 6F 6E 29 20 6C 69 73 74 20 if(!con) list
024700: 3D 20 59 45 53 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F = YES;.. }..../
024710: 2A 0D 0A 2A 2A 20 6C 6F 61 64 20 74 61 62 6C 65 *..** load table
024720: 20 66 72 6F 6D 20 64 69 73 6B 65 74 74 65 0D 0A from diskette..
024730: 2A 2F 0D 0A 6C 6F 61 64 28 29 20 7B 0D 0A 20 20 */..load() {..
024740: 63 68 61 72 20 73 74 72 5B 4D 41 58 4C 49 4E 45 char str[MAXLINE
024750: 5D 2C 20 2A 6D 69 74 65 6E 64 2C 20 2A 76 70 74 ], *mitend, *vpt
024760: 72 2C 20 2A 6C 61 73 74 2C 20 2A 70 74 72 2C 20 r, *last, *ptr,
024770: 2A 63 70 3B 0D 0A 20 20 69 6E 74 20 66 64 2C 20 *cp;.. int fd,
024780: 74 6F 70 2C 20 62 69 74 73 2C 20 62 79 74 65 2C top, bits, byte,
024790: 20 69 6C 65 6E 2C 20 68 2C 20 69 2C 20 6A 2C 0D ilen, h, i, j,.
0247A0: 0A 20 20 20 20 20 20 6F 70 6E 64 5B 4D 49 4F 50 . opnd[MIOP
0247B0: 4E 44 53 5D 2C 20 6F 70 6E 64 73 2C 20 65 74 2C NDS], opnds, et,
0247C0: 20 2A 66 70 74 72 3B 0D 0A 20 20 66 64 20 3D 20 *fptr;.. fd =
0247D0: 6F 70 65 6E 28 6D 69 74 66 6E 2C 20 22 72 22 29 open(mitfn, "r")
0247E0: 3B 0D 0A 20 20 70 74 72 20 3D 20 6D 69 74 62 75 ;.. ptr = mitbu
0247F0: 66 3B 0D 0A 20 20 6D 69 74 65 6E 64 20 3D 20 6D f;.. mitend = m
024800: 20 20 54 68 65 20 64 65 66 61 75 6C 74 20 61 6E The default an
024810: 64 20 6F 6E 6C 79 20 61 6C 6C 6F 77 65 64 0D 0A d only allowed..
024820: 2A 2A 20 20 20 20 20 20 20 20 66 69 6C 65 6E 61 ** filena
024830: 6D 65 20 65 78 74 65 6E 73 69 6F 6E 20 69 73 20 me extension is
024840: 4D 49 54 2E 20 20 41 20 64 72 69 76 65 20 73 70 MIT. A drive sp
024850: 65 63 69 66 69 65 72 20 69 73 20 61 6C 6C 6F 77 ecifier is allow
024860: 65 64 2E 0D 0A 2A 2A 0D 0A 2A 2A 20 6D 61 63 20 ed...**..** mac
024870: 20 20 20 41 73 73 65 6D 62 6C 65 72 20 43 4F 4D Assembler COM
024880: 20 66 69 6C 65 20 28 64 65 66 61 75 6C 74 20 4D file (default M
024890: 41 43 2E 43 4F 4D 29 2E 20 20 4D 75 73 74 20 68 AC.COM). Must h
0248A0: 61 76 65 20 43 4F 4D 20 65 78 74 65 6E 73 69 6F ave COM extensio
0248B0: 6E 0D 0A 2A 2A 20 20 20 20 20 20 20 20 74 6F 20 n..** to
0248C0: 62 65 20 72 65 63 6F 67 6E 69 7A 65 64 20 61 73 be recognized as
0248D0: 20 73 75 63 68 2E 20 20 4E 65 65 64 20 73 70 65 such. Need spe
0248E0: 63 69 66 79 20 6F 6E 6C 79 20 69 66 20 6E 6F 74 cify only if not
0248F0: 20 6F 6E 20 74 68 65 0D 0A 2A 2A 20 20 20 20 20 on the..**
024900: 20 20 20 64 65 66 61 75 6C 74 20 64 72 69 76 65 default drive
024910: 20 6F 72 20 68 61 73 20 61 20 64 69 66 66 65 72 or has a differ
024920: 65 6E 74 20 6E 61 6D 65 2E 0D 0A 2A 2A 0D 0A 2A ent name...**..*
024930: 2A 20 20 20 20 20 20 20 20 4E 4F 54 45 3A 20 69 * NOTE: i
024940: 66 20 6E 6F 20 73 77 69 74 63 68 65 73 20 61 72 f no switches ar
024950: 65 20 67 69 76 65 6E 2C 20 2D 4C 20 69 73 20 61 e given, -L is a
024960: 73 73 75 6D 65 64 2E 20 20 49 66 20 61 6E 79 20 ssumed. If any
024970: 73 77 69 74 63 68 65 73 0D 0A 2A 2A 20 20 20 20 switches..**
024980: 20 20 20 20 61 72 65 20 67 69 76 65 6E 2C 20 6F are given, o
024990: 6E 6C 79 20 74 68 6F 73 65 20 61 63 74 69 6F 6E nly those action
0249A0: 73 20 73 6F 20 73 70 65 63 69 66 69 65 64 20 61 s so specified a
0249B0: 72 65 20 74 61 6B 65 6E 2E 0D 0A 2A 2A 0D 0A 2A re taken...**..*
0249C0: 2A 20 20 20 20 20 20 20 20 4E 4F 54 45 3A 20 41 * NOTE: A
0249D0: 66 74 65 72 20 63 6F 6D 70 69 6C 69 6E 67 20 61 fter compiling a
0249E0: 6E 64 20 6C 69 6E 6B 69 6E 67 20 61 20 6E 65 77 nd linking a new
0249F0: 20 4D 41 43 2E 43 4F 4D 2C 20 69 74 20 6D 75 73 MAC.COM, it mus
024A00: 69 74 62 75 66 20 2B 20 28 4D 49 42 55 46 53 5A itbuf + (MIBUFSZ
024A10: 20 2D 20 4D 41 58 4C 49 4E 45 29 3B 0D 0A 20 20 - MAXLINE);..
024A20: 6F 70 6E 64 73 20 3D 20 30 3B 0D 0A 20 20 77 68 opnds = 0;.. wh
024A30: 69 6C 65 28 66 67 65 74 73 28 73 74 72 2C 20 4D ile(fgets(str, M
024A40: 41 58 4C 49 4E 45 2C 20 66 64 29 29 20 7B 09 09 AXLINE, fd)) {..
024A50: 2F 2A 20 6C 6F 61 64 20 6F 70 65 72 61 6E 64 20 /* load operand
024A60: 66 69 65 6C 64 73 20 2A 2F 0D 0A 20 20 20 20 70 fields */.. p
024A70: 6F 6C 6C 28 59 45 53 29 3B 0D 0A 20 20 20 20 63 oll(YES);.. c
024A80: 70 20 3D 20 73 6B 69 70 28 33 2C 20 73 74 72 29 p = skip(3, str)
024A90: 3B 09 09 09 09 2F 2A 20 73 6B 69 70 20 74 6F 20 ;..../* skip to
024AA0: 6F 70 65 72 61 6E 64 20 66 69 65 6C 64 20 2A 2F operand field */
024AB0: 0D 0A 20 20 20 20 69 66 28 21 69 73 67 72 61 70 .. if(!isgrap
024AC0: 68 28 2A 63 70 29 29 20 63 6F 6E 74 69 6E 75 65 h(*cp)) continue
024AD0: 3B 09 09 09 2F 2A 20 6E 6F 20 6F 70 65 72 61 6E ;.../* no operan
024AE0: 64 20 74 6F 20 6C 6F 61 64 20 2A 2F 0D 0A 20 20 d to load */..
024AF0: 20 20 66 6F 72 28 6A 20 3D 20 30 3B 20 6A 20 3C for(j = 0; j <
024B00: 20 6F 70 6E 64 73 3B 20 2B 2B 6A 29 09 09 09 2F opnds; ++j).../
024B10: 2A 20 61 6C 72 65 61 64 79 20 68 61 76 65 20 69 * already have i
024B20: 74 3F 20 2A 2F 0D 0A 20 20 20 20 20 20 69 66 28 t? */.. if(
024B30: 66 6C 64 63 6D 70 28 63 70 2C 20 6F 70 6E 64 5B fldcmp(cp, opnd[
024B40: 6A 5D 29 20 3D 3D 20 30 29 20 62 72 65 61 6B 3B j]) == 0) break;
024B50: 0D 0A 20 20 20 20 69 66 28 6A 20 3C 20 6F 70 6E .. if(j < opn
024B60: 64 73 29 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 ds) continue;..
024B70: 20 20 20 69 66 28 70 74 72 20 3E 20 6D 69 74 65 if(ptr > mite
024B80: 6E 64 29 20 67 6F 74 6F 20 6D 69 74 6F 76 72 31 nd) goto mitovr1
024B90: 3B 0D 0A 20 20 20 20 6F 70 6E 64 5B 6F 70 6E 64 ;.. opnd[opnd
024BA0: 73 2B 2B 5D 20 3D 20 70 74 72 3B 09 09 09 2F 2A s++] = ptr;.../*
024BB0: 20 74 65 6D 70 20 6F 70 65 72 61 6E 64 20 70 74 temp operand pt
024BC0: 72 20 2A 2F 0D 0A 20 20 20 20 69 66 28 6F 70 6E r */.. if(opn
024BD0: 64 73 20 3D 3D 20 4D 49 4F 50 4E 44 53 29 20 65 ds == MIOPNDS) e
024BE0: 72 72 6F 72 32 28 73 74 72 2C 20 22 2D 20 4D 49 rror2(str, "- MI
024BF0: 54 20 4F 70 65 72 61 6E 64 20 4F 76 65 72 66 6C T Operand Overfl
024C00: 74 20 62 65 0D 0A 2A 2A 20 20 20 20 20 20 20 20 t be..**
024C10: 63 6F 6E 66 69 67 75 72 65 64 20 62 79 20 72 75 configured by ru
024C20: 6E 6E 69 6E 67 20 74 68 69 73 20 70 72 6F 67 72 nning this progr
024C30: 61 6D 20 62 65 66 6F 72 65 20 69 74 20 6D 61 79 am before it may
024C40: 20 62 65 20 65 78 65 63 75 74 65 64 2E 0D 0A 2A be executed...*
024C50: 2A 20 20 20 20 20 20 20 20 41 20 70 72 65 76 69 * A previ
024C60: 6F 75 73 6C 79 20 63 6F 6E 66 69 67 75 72 65 64 ously configured
024C70: 20 4D 41 43 2E 43 4F 4D 20 6D 61 79 20 62 65 20 MAC.COM may be
024C80: 72 65 63 6F 6E 66 69 67 75 72 65 64 20 61 74 20 reconfigured at
024C90: 61 6E 79 20 74 69 6D 65 2E 0D 0A 2A 2F 0D 0A 23 any time...*/..#
024CA0: 69 6E 63 6C 75 64 65 20 3C 73 74 64 69 6F 2E 68 include <stdio.h
024CB0: 3E 0D 0A 23 69 6E 63 6C 75 64 65 20 22 6D 61 63 >..#include "mac
024CC0: 2E 68 22 09 2F 2A 20 6D 75 73 74 20 62 65 20 69 .h"./* must be i
024CD0: 6E 63 6C 75 64 65 64 20 66 69 72 73 74 20 2A 2F ncluded first */
024CE0: 0D 0A 23 69 6E 63 6C 75 64 65 20 22 6D 69 74 2E ..#include "mit.
024CF0: 68 22 0D 0A 23 69 6E 63 6C 75 64 65 20 22 6E 6F h"..#include "no
024D00: 74 69 63 65 2E 68 22 0D 0A 0D 0A 23 64 65 66 69 tice.h"....#defi
024D10: 6E 65 20 43 4F 4D 45 58 54 20 20 22 2E 43 4F 4D ne COMEXT ".COM
024D20: 22 0D 0A 23 64 65 66 69 6E 65 20 4D 49 54 45 58 "..#define MITEX
024D30: 54 20 20 22 2E 4D 49 54 22 0D 0A 0D 0A 63 68 61 T ".MIT"....cha
024D40: 72 0D 0A 20 20 6D 61 63 66 6E 5B 4D 41 58 46 4E r.. macfn[MAXFN
024D50: 5D 20 3D 20 22 4D 41 43 2E 43 4F 4D 22 2C 09 2F ] = "MAC.COM",./
024D60: 2A 20 64 65 66 61 75 6C 74 20 61 73 73 65 6D 62 * default assemb
024D70: 6C 65 72 20 66 69 6C 65 6E 61 6D 65 20 2A 2F 0D ler filename */.
024D80: 0A 20 20 6D 69 74 66 6E 5B 4D 41 58 46 4E 5D 20 . mitfn[MAXFN]
024D90: 3D 20 22 38 30 38 30 2E 4D 49 54 22 3B 09 2F 2A = "8080.MIT";./*
024DA0: 20 64 65 66 61 75 6C 74 20 6D 69 74 20 66 69 6C default mit fil
024DB0: 65 6E 61 6D 65 20 2A 2F 0D 0A 69 6E 74 0D 0A 20 ename */..int..
024DC0: 20 63 6F 6E 2C 09 09 09 2F 2A 20 63 6F 6E 66 69 con,.../* confi
024DD0: 67 75 72 65 3F 20 2A 2F 0D 0A 20 20 6C 69 73 74 gure? */.. list
024DE0: 2C 09 09 09 2F 2A 20 6C 69 73 74 3F 20 2A 2F 0D ,.../* list? */.
024DF0: 0A 20 20 6C 6F 6F 6B 73 3B 09 09 2F 2A 20 6E 75 . looks;../* nu
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: 6F 77 22 29 3B 0D 0A 20 20 20 20 77 68 69 6C 65 ow");.. while
024F10: 28 69 73 67 72 61 70 68 28 2A 70 74 72 20 3D 20 (isgraph(*ptr =
024F20: 2A 63 70 2B 2B 29 29 20 2B 2B 70 74 72 3B 09 09 *cp++)) ++ptr;..
024F30: 2F 2A 20 63 6F 70 79 20 6F 70 65 72 61 6E 64 20 /* copy operand
024F40: 66 69 65 6C 64 20 2A 2F 0D 0A 20 20 20 20 2A 70 field */.. *p
024F50: 74 72 2B 2B 20 3D 20 4E 55 4C 4C 3B 0D 0A 20 20 tr++ = NULL;..
024F60: 20 20 7D 0D 0A 20 20 69 66 28 72 65 77 69 6E 64 }.. if(rewind
024F70: 28 66 64 29 29 20 65 72 72 6F 72 28 22 2D 20 43 (fd)) error("- C
024F80: 61 6E 27 74 20 52 65 77 69 6E 64 20 4D 49 54 20 an't Rewind MIT
024F90: 46 69 6C 65 22 29 3B 2F 2A 20 32 6E 64 20 70 61 File");/* 2nd pa
024FA0: 73 73 20 2A 2F 0D 0A 20 20 6C 61 73 74 20 3D 20 ss */.. last =
024FB0: 70 74 72 3B 20 2A 6C 61 73 74 20 3D 20 4E 55 4C ptr; *last = NUL
024FC0: 4C 3B 0D 0A 20 20 74 6F 70 20 3D 20 30 3B 0D 0A L;.. top = 0;..
024FD0: 20 20 77 68 69 6C 65 28 66 67 65 74 73 28 73 74 while(fgets(st
024FE0: 72 2C 20 4D 41 58 4C 49 4E 45 2C 20 66 64 29 29 r, MAXLINE, fd))
024FF0: 20 7B 09 09 2F 2A 20 6C 6F 61 64 20 6D 6E 65 6D {../* load mnem
025000: 6F 6E 69 63 73 2C 20 65 74 63 2E 20 2A 2F 0D 0A onics, etc. */..
025010: 20 20 20 20 70 6F 6C 6C 28 59 45 53 29 3B 0D 0A poll(YES);..
025020: 20 20 20 20 69 66 28 70 74 72 20 3E 20 6D 69 74 if(ptr > mit
025030: 65 6E 64 29 20 20 20 7B 6D 69 74 6F 76 72 31 3A end) {mitovr1:
025040: 20 65 72 72 6F 72 32 28 73 74 72 2C 20 22 2D 20 error2(str, "-
025050: 4D 49 54 20 42 75 66 66 65 72 20 4F 76 65 72 66 MIT Buffer Overf
025060: 6C 6F 77 22 29 3B 7D 0D 0A 20 20 20 20 69 66 28 low");}.. if(
025070: 74 6F 70 20 3E 3D 20 4D 49 43 4F 55 4E 54 29 20 top >= MICOUNT)
025080: 65 72 72 6F 72 28 22 2D 20 4D 49 54 20 4D 6E 65 error("- MIT Mne
025090: 6D 6F 6E 69 63 20 4F 76 65 72 66 6C 6F 77 22 29 monic Overflow")
0250A0: 3B 0D 0A 20 20 20 20 63 70 20 3D 20 73 6B 69 70 ;.. cp = skip
0250B0: 28 32 2C 20 73 74 72 29 3B 09 09 09 09 2F 2A 20 (2, str);..../*
0250C0: 73 6B 69 70 20 74 6F 20 6D 6E 65 6D 6F 6E 69 63 skip to mnemonic
0250D0: 20 66 69 65 6C 64 20 2A 2F 0D 0A 20 20 20 20 69 field */.. i
0250E0: 66 28 66 6C 64 63 6D 70 28 63 70 2C 20 6C 61 73 f(fldcmp(cp, las
0250F0: 74 29 29 20 7B 09 09 09 2F 2A 20 6E 65 77 20 6D t)) {.../* new m
025100: 7D 0D 0A 20 20 66 6F 72 28 69 20 3D 20 6A 20 3D }.. for(i = j =
025110: 20 30 3B 20 69 20 3C 20 74 6F 70 3B 20 2B 2B 69 0; i < top; ++i
025120: 29 20 7B 09 2F 2A 20 63 72 65 61 74 65 20 68 61 ) {./* create ha
025130: 73 68 20 69 6E 64 69 63 65 73 20 2D 20 70 61 73 sh indices - pas
025140: 73 20 32 20 2A 2F 0D 0A 20 20 20 20 70 6F 6C 6C s 2 */.. poll
025150: 28 59 45 53 29 3B 0D 0A 20 20 20 20 68 20 3D 20 (YES);.. h =
025160: 68 61 73 68 28 6D 69 74 70 74 72 5B 69 5D 2C 20 hash(mitptr[i],
025170: 4D 49 43 4F 55 4E 54 29 3B 0D 0A 20 20 20 20 69 MICOUNT);.. i
025180: 66 28 6D 69 74 6E 64 78 5B 68 5D 20 21 3D 20 69 f(mitndx[h] != i
025190: 29 20 7B 0D 0A 20 20 20 20 20 20 77 68 69 6C 65 ) {.. while
0251A0: 28 6D 69 74 6E 64 78 5B 6A 5D 20 21 3D 20 45 4F (mitndx[j] != EO
0251B0: 46 29 20 2B 2B 6A 3B 09 2F 2A 20 6D 75 73 74 20 F) ++j;./* must
0251C0: 62 65 20 65 6D 70 74 79 20 73 6C 6F 74 20 2A 2F be empty slot */
0251D0: 0D 0A 20 20 20 20 20 20 6D 69 74 6E 64 78 5B 6A .. mitndx[j
0251E0: 5D 20 3D 20 69 3B 0D 0A 20 20 20 20 20 20 77 68 ] = i;.. wh
0251F0: 69 6C 65 28 6D 69 74 6E 78 74 5B 68 5D 20 21 3D ile(mitnxt[h] !=
025200: 20 45 4F 46 29 20 68 20 3D 20 6D 69 74 6E 78 74 EOF) h = mitnxt
025210: 5B 68 5D 3B 0D 0A 20 20 20 20 20 20 6D 69 74 6E [h];.. mitn
025220: 78 74 5B 68 5D 20 3D 20 6A 3B 0D 0A 20 20 20 20 xt[h] = j;..
025230: 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 63 6C }.. }.. cl
025240: 6F 73 65 28 66 64 29 3B 0D 0A 20 20 7D 0D 0A 0D ose(fd);.. }...
025250: 0A 2F 2A 0D 0A 2A 2A 20 70 72 69 6E 74 20 63 6F ./*..** print co
025260: 6D 70 69 6C 65 64 20 6D 61 63 68 69 6E 65 20 69 mpiled machine i
025270: 6E 73 74 72 75 63 74 69 6F 6E 20 74 61 62 6C 65 nstruction table
025280: 0D 0A 2A 2F 0D 0A 70 72 69 6E 74 28 29 20 7B 0D ..*/..print() {.
025290: 0A 20 20 69 6E 74 20 69 20 2C 6B 2C 20 62 61 6B . int i ,k, bak
0252A0: 2C 20 66 64 2C 20 66 6D 74 2C 20 6C 65 6E 2C 20 , fd, fmt, len,
0252B0: 6F 70 63 6F 64 65 2C 20 68 6F 6C 64 69 6E 67 3B opcode, holding;
0252C0: 0D 0A 20 20 63 68 61 72 20 6C 69 6E 5B 4D 41 58 .. char lin[MAX
0252D0: 4C 49 4E 45 5D 2C 20 69 6E 73 74 5B 4D 41 58 4C LINE], inst[MAXL
0252E0: 49 4E 45 5D 2C 20 2A 70 74 72 2C 20 2A 76 70 74 INE], *ptr, *vpt
0252F0: 72 2C 20 2A 63 70 3B 0D 0A 20 20 66 64 20 3D 20 r, *cp;.. fd =
025300: 6E 65 6D 6F 6E 69 63 20 2A 2F 0D 0A 20 20 20 20 nemonic */..
025310: 20 20 2A 70 74 72 2B 2B 20 3D 20 30 3B 09 09 09 *ptr++ = 0;...
025320: 09 2F 2A 20 74 65 72 6D 69 6E 61 74 65 20 70 72 ./* terminate pr
025330: 69 6F 72 20 69 6E 73 74 72 20 2A 2F 0D 0A 20 20 ior instr */..
025340: 20 20 20 20 6D 69 74 70 74 72 5B 74 6F 70 2B 2B mitptr[top++
025350: 5D 20 3D 20 6C 61 73 74 20 3D 20 70 74 72 3B 09 ] = last = ptr;.
025360: 09 2F 2A 20 6D 6E 65 6D 6F 6E 69 63 20 70 74 72 ./* mnemonic ptr
025370: 20 2A 2F 0D 0A 20 20 20 20 20 20 77 68 69 6C 65 */.. while
025380: 28 69 73 67 72 61 70 68 28 2A 70 74 72 20 3D 20 (isgraph(*ptr =
025390: 2A 63 70 2B 2B 29 29 20 2B 2B 70 74 72 3B 09 2F *cp++)) ++ptr;./
0253A0: 2A 20 63 6F 70 79 20 6D 6E 65 6D 6F 6E 69 63 20 * copy mnemonic
0253B0: 66 69 65 6C 64 20 2A 2F 0D 0A 20 20 20 20 20 20 field */..
0253C0: 2A 70 74 72 2B 2B 20 3D 20 4E 55 4C 4C 3B 0D 0A *ptr++ = NULL;..
0253D0: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 76 70 74 }.. vpt
0253E0: 72 20 3D 20 70 74 72 2B 2B 3B 20 2A 76 70 74 72 r = ptr++; *vptr
0253F0: 20 3D 20 32 2A 49 4E 54 53 5A 3B 09 09 2F 2A 20 = 2*INTSZ;../*
025400: 76 6C 65 6E 20 66 69 65 6C 64 20 2A 2F 0D 0A 20 vlen field */..
025410: 20 20 20 63 70 20 3D 20 73 6B 69 70 28 33 2C 20 cp = skip(3,
025420: 73 74 72 29 3B 09 09 09 09 2F 2A 20 6C 6F 63 61 str);..../* loca
025430: 74 65 20 6F 70 65 72 61 6E 64 20 2A 2F 0D 0A 20 te operand */..
025440: 20 20 20 69 66 28 69 73 67 72 61 70 68 28 2A 63 if(isgraph(*c
025450: 70 29 29 20 7B 09 09 09 09 2F 2A 20 68 61 73 20 p)) {..../* has
025460: 61 6E 20 6F 70 65 72 61 6E 64 20 66 69 65 6C 64 an operand field
025470: 20 2A 2F 0D 0A 20 20 20 20 20 20 66 6F 72 28 6A */.. for(j
025480: 20 3D 20 30 3B 20 6A 20 3C 20 6F 70 6E 64 73 3B = 0; j < opnds;
025490: 20 2B 2B 6A 29 0D 0A 20 20 20 20 20 20 20 20 69 ++j).. i
0254A0: 66 28 66 6C 64 63 6D 70 28 63 70 2C 20 6F 70 6E f(fldcmp(cp, opn
0254B0: 64 5B 6A 5D 29 20 3D 3D 20 30 29 20 62 72 65 61 d[j]) == 0) brea
0254C0: 6B 3B 0D 0A 20 20 20 20 20 20 69 66 28 6A 20 3D k;.. if(j =
0254D0: 3D 20 6F 70 6E 64 73 29 20 65 72 72 6F 72 32 28 = opnds) error2(
0254E0: 73 74 72 2C 20 22 2D 20 43 61 6E 27 74 20 46 69 str, "- Can't Fi
0254F0: 6E 64 20 4F 70 65 72 61 6E 64 22 29 3B 0D 0A 20 nd Operand");..
025500: 6F 70 65 6E 28 6D 69 74 66 6E 2C 20 22 72 22 29 open(mitfn, "r")
025510: 3B 0D 0A 20 20 77 68 69 6C 65 28 66 67 65 74 73 ;.. while(fgets
025520: 28 6C 69 6E 2C 20 4D 41 58 4C 49 4E 45 2C 20 66 (lin, MAXLINE, f
025530: 64 29 29 20 7B 0D 0A 20 20 20 20 70 6F 6C 6C 28 d)) {.. poll(
025540: 59 45 53 29 3B 0D 0A 20 20 20 20 69 20 3D 20 30 YES);.. i = 0
025550: 3B 20 63 70 20 3D 20 73 6B 69 70 28 32 2C 20 6C ; cp = skip(2, l
025560: 69 6E 29 3B 0D 0A 20 20 20 20 77 68 69 6C 65 28 in);.. while(
025570: 69 73 67 72 61 70 68 28 69 6E 73 74 5B 69 2B 2B isgraph(inst[i++
025580: 5D 20 3D 20 2A 63 70 2B 2B 29 29 20 3B 0D 0A 20 ] = *cp++)) ;..
025590: 20 20 20 69 66 28 69 6E 73 74 5B 69 2D 31 5D 20 if(inst[i-1]
0255A0: 3D 3D 20 27 5C 6E 27 29 20 69 6E 73 74 5B 69 2D == '\n') inst[i-
0255B0: 31 5D 20 3D 20 27 20 27 3B 0D 0A 20 20 20 20 62 1] = ' ';.. b
0255C0: 61 6B 20 3D 20 69 3B 0D 0A 20 20 20 20 63 70 20 ak = i;.. cp
0255D0: 3D 20 73 6B 69 70 28 33 2C 20 6C 69 6E 29 3B 0D = skip(3, lin);.
0255E0: 0A 20 20 20 20 64 6F 20 7B 0D 0A 20 20 20 20 20 . do {..
0255F0: 20 69 20 3D 20 62 61 6B 3B 20 20 0D 0A 20 20 20 i = bak; ..
025600: 20 20 20 77 68 69 6C 65 28 69 73 67 72 61 70 68 while(isgraph
025610: 28 2A 63 70 29 20 26 26 20 2A 63 70 20 21 3D 20 (*cp) && *cp !=
025620: 41 4E 4F 54 48 45 52 29 20 69 6E 73 74 5B 69 2B ANOTHER) inst[i+
025630: 2B 5D 20 3D 20 2A 63 70 2B 2B 3B 0D 0A 20 20 20 +] = *cp++;..
025640: 20 20 20 69 6E 73 74 5B 69 5D 20 3D 20 30 3B 0D inst[i] = 0;.
025650: 0A 20 20 20 20 20 20 69 66 28 2A 63 70 20 3D 3D . if(*cp ==
025660: 20 41 4E 4F 54 48 45 52 29 20 2B 2B 63 70 3B 0D ANOTHER) ++cp;.
025670: 0A 20 20 20 20 20 20 70 72 69 6E 74 66 28 22 25 . printf("%
025680: 2D 31 35 73 20 22 2C 20 69 6E 73 74 29 3B 09 09 -15s ", inst);..
025690: 2F 2A 20 6D 6E 65 6D 6F 6E 69 63 20 2A 2F 0D 0A /* mnemonic */..
0256A0: 20 20 20 20 20 20 69 66 28 21 28 70 74 72 20 3D if(!(ptr =
0256B0: 20 66 69 6E 64 28 69 6E 73 74 29 29 29 0D 0A 20 find(inst)))..
0256C0: 20 20 20 20 20 20 20 65 72 72 6F 72 28 22 2D 20 error("-
0256D0: 43 61 6E 27 74 20 46 69 6E 64 20 49 6E 73 74 72 Can't Find Instr
0256E0: 75 63 74 69 6F 6E 20 69 6E 20 4D 49 54 22 29 3B uction in MIT");
0256F0: 0D 0A 20 20 20 20 20 20 70 72 69 6E 74 66 28 22 .. printf("
025700: 20 20 20 20 20 70 75 74 69 6E 74 28 70 74 72 2C putint(ptr,
025710: 20 6F 70 6E 64 5B 6A 5D 29 3B 0D 0A 20 20 20 20 opnd[j]);..
025720: 20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 70 75 }.. else pu
025730: 74 69 6E 74 28 70 74 72 2C 20 30 29 3B 09 09 09 tint(ptr, 0);...
025740: 2F 2A 20 68 61 73 20 6E 6F 20 6F 70 65 72 61 6E /* has no operan
025750: 64 20 2A 2F 0D 0A 20 20 20 20 70 74 72 20 2B 3D d */.. ptr +=
025760: 20 49 4E 54 53 5A 3B 0D 0A 20 20 20 20 66 70 74 INTSZ;.. fpt
025770: 72 20 3D 20 70 74 72 3B 20 70 74 72 20 2B 3D 20 r = ptr; ptr +=
025780: 49 4E 54 53 5A 3B 20 2A 66 70 74 72 20 3D 20 30 INTSZ; *fptr = 0
025790: 3B 09 2F 2A 20 66 6D 74 20 66 69 65 6C 64 20 2A ;./* fmt field *
0257A0: 2F 0D 0A 20 20 20 20 62 69 74 73 20 3D 20 31 33 /.. bits = 13
0257B0: 3B 0D 0A 20 20 20 20 69 6C 65 6E 20 3D 20 2D 31 ;.. ilen = -1
0257C0: 3B 0D 0A 20 20 20 20 63 70 20 3D 20 73 6B 69 70 ;.. cp = skip
0257D0: 28 31 2C 20 73 74 72 29 3B 09 09 09 09 2F 2A 20 (1, str);..../*
0257E0: 63 6F 64 65 20 66 69 65 6C 64 20 2A 2F 0D 0A 20 code field */..
0257F0: 20 20 20 77 68 69 6C 65 28 69 73 67 72 61 70 68 while(isgraph
025800: 28 2A 63 70 29 29 20 7B 0D 0A 20 20 20 20 20 20 (*cp)) {..
025810: 69 66 28 69 73 6C 6F 77 65 72 28 2A 63 70 29 29 if(islower(*cp))
025820: 20 7B 09 09 09 2F 2A 20 78 31 2C 20 78 32 2C 20 {.../* x1, x2,
025830: 65 74 63 2E 20 2A 2F 0D 0A 20 20 20 20 20 20 20 etc. */..
025840: 20 65 74 20 3D 20 2A 63 70 2B 2B 3B 09 09 09 09 et = *cp++;....
025850: 2F 2A 20 65 78 70 72 20 74 79 70 65 20 2A 2F 0D /* expr type */.
025860: 0A 20 20 20 20 20 20 20 20 62 69 74 73 20 2D 3D . bits -=
025870: 20 33 3B 20 2A 66 70 74 72 20 3D 20 28 28 2A 66 3; *fptr = ((*f
025880: 70 74 72 20 3E 3E 20 33 29 20 26 20 38 31 39 31 ptr >> 3) & 8191
025890: 29 20 2B 20 38 31 39 32 3B 0D 0A 20 20 20 20 20 ) + 8192;..
0258A0: 20 20 20 73 77 69 74 63 68 28 2A 63 70 29 20 7B switch(*cp) {
0258B0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 64 65 66 .. def
0258C0: 61 75 6C 74 3A 20 65 72 72 6F 72 32 28 73 74 72 ault: error2(str
0258D0: 2C 20 22 2D 20 42 61 64 20 45 78 70 72 65 73 73 , "- Bad Express
0258E0: 69 6F 6E 20 53 70 65 63 69 66 69 65 72 22 29 3B ion Specifier");
0258F0: 0D 0A 20 20 20 20 20 20 20 20 20 20 63 61 73 65 .. case
025900: 20 28 25 32 75 20 6C 6F 6F 6B 73 29 20 22 2C 20 (%2u looks) ",
025910: 6C 6F 6F 6B 73 29 3B 0D 0A 20 20 20 20 20 20 70 looks);.. p
025920: 74 72 20 2B 3D 20 49 4E 54 53 5A 3B 0D 0A 20 20 tr += INTSZ;..
025930: 20 20 20 20 66 6D 74 20 3D 20 67 65 74 69 6E 74 fmt = getint
025940: 28 70 74 72 29 3B 09 09 2F 2A 20 70 74 72 20 2D (ptr);../* ptr -
025950: 3E 20 66 69 72 73 74 20 63 6F 64 65 20 62 79 74 > first code byt
025960: 65 20 2A 2F 0D 0A 20 20 20 20 20 20 70 74 72 20 e */.. ptr
025970: 2B 3D 20 49 4E 54 53 5A 3B 0D 0A 20 20 20 20 20 += INTSZ;..
025980: 20 6C 65 6E 20 3D 20 28 66 6D 74 20 26 20 37 29 len = (fmt & 7)
025990: 20 2B 20 31 3B 0D 0A 20 20 20 20 20 20 66 6D 74 + 1;.. fmt
0259A0: 20 3E 3E 3D 20 33 3B 0D 0A 20 20 20 20 20 20 68 >>= 3;.. h
0259B0: 6F 6C 64 69 6E 67 20 3D 20 4E 4F 3B 0D 0A 20 20 olding = NO;..
0259C0: 20 20 20 20 77 68 69 6C 65 28 6C 65 6E 2D 2D 20 while(len--
0259D0: 3E 20 30 29 20 7B 09 09 2F 2A 20 66 6F 72 20 65 > 0) {../* for e
0259E0: 61 63 68 20 62 79 74 65 20 6F 66 20 63 6F 64 65 ach byte of code
0259F0: 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 69 66 28 */.. if(
025A00: 66 6D 74 20 26 20 31 29 20 7B 09 09 09 2F 2A 20 fmt & 1) {.../*
025A10: 65 78 70 72 65 73 73 69 6F 6E 20 2A 2F 0D 0A 20 expression */..
025A20: 20 20 20 20 20 20 20 20 20 69 66 28 68 6F 6C 64 if(hold
025A30: 69 6E 67 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 ing) {..
025A40: 20 20 20 20 6F 70 63 6F 64 65 20 2B 3D 20 6F 70 opcode += op
025A50: 61 64 6A 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 adj;..
025A60: 20 20 6F 70 61 64 6A 20 3D 20 30 3B 0D 0A 20 20 opadj = 0;..
025A70: 20 20 20 20 20 20 20 20 20 20 68 6F 6C 64 69 6E holdin
025A80: 67 20 3D 20 4E 4F 3B 0D 0A 20 20 20 20 20 20 20 g = NO;..
025A90: 20 20 20 20 20 70 72 69 6E 74 66 28 22 20 25 32 printf(" %2
025AA0: 78 22 2C 20 6F 70 63 6F 64 65 29 3B 0D 0A 20 20 x", opcode);..
025AB0: 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 }..
025AC0: 20 20 20 20 20 20 20 66 6D 74 20 3E 3E 3D 20 31 fmt >>= 1
025AD0: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 73 77 69 ;.. swi
025AE0: 74 63 68 28 66 6D 74 20 26 20 33 29 20 7B 0D 0A tch(fmt & 3) {..
025AF0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case
025B00: 20 27 32 27 3A 20 2A 66 70 74 72 20 2B 3D 20 33 '2': *fptr += 3
025B10: 32 37 36 38 3B 20 69 6C 65 6E 20 2B 3D 20 32 3B 2768; ilen += 2;
025B20: 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 20 break;..
025B30: 20 20 20 63 61 73 65 20 27 31 27 3A 20 2B 2B 69 case '1': ++i
025B40: 6C 65 6E 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 len;..
025B50: 7D 0D 0A 20 20 20 20 20 20 20 20 69 66 28 65 74 }.. if(et
025B60: 20 3D 3D 20 27 70 27 29 20 2A 66 70 74 72 20 2B == 'p') *fptr +
025B70: 3D 20 31 36 33 38 34 3B 09 09 2F 2A 20 70 63 20 = 16384;../* pc
025B80: 72 65 6C 61 74 69 76 65 20 65 78 70 72 20 2A 2F relative expr */
025B90: 0D 0A 20 20 20 20 20 20 20 20 2B 2B 63 70 3B 0D .. ++cp;.
025BA0: 0A 20 20 20 20 20 20 20 20 63 6F 6E 74 69 6E 75 . continu
025BB0: 65 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 e;.. }..
025BC0: 20 20 20 20 20 69 66 28 69 73 78 64 69 67 69 74 if(isxdigit
025BD0: 28 2A 63 70 29 29 20 7B 0D 0A 20 20 20 20 20 20 (*cp)) {..
025BE0: 20 20 69 66 28 28 6A 20 3D 20 78 74 6F 69 28 63 if((j = xtoi(c
025BF0: 70 2C 20 26 62 79 74 65 29 29 20 3E 20 32 29 20 p, &byte)) > 2)
025C00: 65 72 72 6F 72 32 28 73 74 72 2C 20 22 2D 20 42 error2(str, "- B
025C10: 61 64 20 48 65 78 20 42 79 74 65 22 29 3B 0D 0A ad Hex Byte");..
025C20: 20 20 20 20 20 20 20 20 63 70 20 2B 3D 20 6A 3B cp += j;
025C30: 0D 0A 20 20 20 20 20 20 20 20 2A 70 74 72 2B 2B .. *ptr++
025C40: 20 3D 20 62 79 74 65 3B 20 2A 76 70 74 72 20 2B = byte; *vptr +
025C50: 3D 20 31 3B 0D 0A 20 20 20 20 20 20 20 20 2D 2D = 1;.. --
025C60: 62 69 74 73 3B 20 2A 66 70 74 72 20 3D 20 28 28 bits; *fptr = ((
025C70: 2A 66 70 74 72 20 3E 3E 20 31 29 20 26 20 33 32 *fptr >> 1) & 32
025C80: 37 36 37 29 3B 0D 0A 20 20 20 20 20 20 20 20 2B 767);.. +
025C90: 2B 69 6C 65 6E 3B 0D 0A 20 20 20 20 20 20 20 20 +ilen;..
025CA0: 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 continue;..
025CB0: 20 20 20 7D 0D 0A 20 20 20 20 20 20 2B 2B 63 70 }.. ++cp
025CC0: 3B 09 09 09 09 2F 2A 20 62 75 6D 70 20 70 61 73 ;..../* bump pas
025CD0: 74 20 66 69 65 6C 64 20 73 65 70 61 72 61 74 6F t field separato
025CE0: 72 20 2A 2F 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 r */.. }..
025CF0: 20 20 20 2A 66 70 74 72 20 3E 3E 3D 20 62 69 74 *fptr >>= bit
025D00: 20 30 3A 20 70 72 69 6E 74 66 28 22 20 78 31 22 0: printf(" x1"
025D10: 29 3B 20 62 72 65 61 6B 3B 09 09 2F 2A 20 31 2D ); break;../* 1-
025D20: 62 79 74 65 20 2A 2F 0D 0A 20 20 20 20 20 20 20 byte */..
025D30: 20 20 20 20 20 63 61 73 65 20 31 3A 20 70 72 69 case 1: pri
025D40: 6E 74 66 28 22 20 70 31 22 29 3B 20 62 72 65 61 ntf(" p1"); brea
025D50: 6B 3B 09 09 2F 2A 20 31 2D 62 79 74 65 20 70 63 k;../* 1-byte pc
025D60: 20 72 65 6C 20 2A 2F 0D 0A 20 20 20 20 20 20 20 rel */..
025D70: 20 20 20 20 20 63 61 73 65 20 32 3A 20 70 72 69 case 2: pri
025D80: 6E 74 66 28 22 20 78 32 22 29 3B 20 2D 2D 6C 65 ntf(" x2"); --le
025D90: 6E 3B 20 62 72 65 61 6B 3B 09 2F 2A 20 32 2D 62 n; break;./* 2-b
025DA0: 79 74 65 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 yte */..
025DB0: 20 20 20 20 63 61 73 65 20 33 3A 20 70 72 69 6E case 3: prin
025DC0: 74 66 28 22 20 70 32 22 29 3B 20 2D 2D 6C 65 6E tf(" p2"); --len
025DD0: 3B 20 62 72 65 61 6B 3B 09 2F 2A 20 32 2D 62 79 ; break;./* 2-by
025DE0: 74 65 20 70 63 20 72 65 6C 20 2A 2F 0D 0A 20 20 te pc rel */..
025DF0: 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 }..
025E00: 20 20 20 20 20 20 20 66 6D 74 20 3E 3E 3D 20 31 fmt >>= 1
025E10: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 7D 0D 0A ;.. }..
025E20: 20 20 20 20 20 20 20 20 65 6C 73 65 20 7B 09 09 else {..
025E30: 09 09 09 2F 2A 20 63 6F 64 65 20 62 79 74 65 20 .../* code byte
025E40: 2A 2F 0D 0A 20 20 20 20 20 20 20 20 20 20 69 66 */.. if
025E50: 28 68 6F 6C 64 69 6E 67 29 20 70 72 69 6E 74 66 (holding) printf
025E60: 28 22 20 25 32 78 22 2C 20 6F 70 63 6F 64 65 29 (" %2x", opcode)
025E70: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 6F 70 63 ;.. opc
025E80: 6F 64 65 20 3D 20 2A 70 74 72 2B 2B 20 26 20 32 ode = *ptr++ & 2
025E90: 35 35 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 68 55;.. h
025EA0: 6F 6C 64 69 6E 67 20 3D 20 59 45 53 3B 0D 0A 20 olding = YES;..
025EB0: 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 }..
025EC0: 20 20 20 20 66 6D 74 20 3E 3E 3D 20 31 3B 0D 0A fmt >>= 1;..
025ED0: 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 }..
025EE0: 20 69 66 28 68 6F 6C 64 69 6E 67 29 20 7B 0D 0A if(holding) {..
025EF0: 20 20 20 20 20 20 20 20 6F 70 63 6F 64 65 20 2B opcode +
025F00: 73 3B 09 09 09 2F 2A 20 72 69 67 68 74 20 61 64 s;.../* right ad
025F10: 6A 75 73 74 20 66 6F 72 6D 61 74 20 62 79 74 65 just format byte
025F20: 20 2A 2F 0D 0A 20 20 20 20 2A 66 70 74 72 20 7C */.. *fptr |
025F30: 3D 20 69 6C 65 6E 20 26 20 37 3B 09 09 09 2F 2A = ilen & 7;.../*
025F40: 20 61 6E 64 20 69 6E 73 65 72 74 20 69 6E 73 74 and insert inst
025F50: 72 20 6C 65 6E 67 74 68 20 2A 2F 0D 0A 20 20 20 r length */..
025F60: 20 7D 0D 0A 20 20 2A 70 74 72 2B 2B 20 3D 20 30 }.. *ptr++ = 0
025F70: 3B 09 09 09 09 2F 2A 20 74 65 72 6D 69 6E 61 74 ;..../* terminat
025F80: 65 20 70 72 69 6F 72 20 69 6E 73 74 72 20 2A 2F e prior instr */
025F90: 0D 0A 20 20 70 72 69 6E 74 66 28 22 20 20 4F 70 .. printf(" Op
025FA0: 65 72 61 74 69 6F 6E 20 43 6F 64 65 73 20 25 35 eration Codes %5
025FB0: 75 5C 6E 22 2C 20 74 6F 70 29 3B 0D 0A 20 20 70 u\n", top);.. p
025FC0: 72 69 6E 74 66 28 22 42 75 66 66 65 72 20 53 70 rintf("Buffer Sp
025FD0: 61 63 65 20 55 73 65 64 20 25 35 75 5C 6E 22 2C ace Used %5u\n",
025FE0: 20 70 74 72 20 2D 20 6D 69 74 62 75 66 29 3B 0D ptr - mitbuf);.
025FF0: 0A 20 20 66 6F 72 28 69 20 3D 20 30 3B 20 69 20 . for(i = 0; i
026000: 3C 20 4D 49 43 4F 55 4E 54 3B 20 2B 2B 69 29 09 < MICOUNT; ++i).
026010: 09 2F 2A 20 69 6E 69 74 20 68 61 73 68 20 69 6E ./* init hash in
026020: 64 69 63 65 73 20 2A 2F 0D 0A 20 20 20 20 6D 69 dices */.. mi
026030: 74 6E 64 78 5B 69 5D 20 3D 20 6D 69 74 6E 78 74 tndx[i] = mitnxt
026040: 5B 69 5D 20 3D 20 45 4F 46 3B 0D 0A 20 20 66 6F [i] = EOF;.. fo
026050: 72 28 69 20 3D 20 30 3B 20 69 20 3C 20 74 6F 70 r(i = 0; i < top
026060: 3B 20 2B 2B 69 29 20 7B 09 09 2F 2A 20 63 72 65 ; ++i) {../* cre
026070: 61 74 65 20 68 61 73 68 20 69 6E 64 69 63 65 73 ate hash indices
026080: 20 2D 20 70 61 73 73 20 31 20 2A 2F 0D 0A 20 20 - pass 1 */..
026090: 20 20 70 6F 6C 6C 28 59 45 53 29 3B 0D 0A 20 20 poll(YES);..
0260A0: 20 20 68 20 3D 20 68 61 73 68 28 6D 69 74 70 74 h = hash(mitpt
0260B0: 72 5B 69 5D 2C 20 4D 49 43 4F 55 4E 54 29 3B 0D r[i], MICOUNT);.
0260C0: 0A 20 20 20 20 69 66 28 6D 69 74 6E 64 78 5B 68 . if(mitndx[h
0260D0: 5D 20 3D 3D 20 45 4F 46 29 20 7B 0D 0A 20 20 20 ] == EOF) {..
0260E0: 20 20 20 6D 69 74 6E 64 78 5B 68 5D 20 3D 20 69 mitndx[h] = i
0260F0: 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 ;.. }..
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: 3D 20 6F 70 61 64 6A 3B 0D 0A 20 20 20 20 20 20 = opadj;..
026210: 20 20 70 72 69 6E 74 66 28 22 20 25 32 78 22 2C printf(" %2x",
026220: 20 6F 70 63 6F 64 65 29 3B 0D 0A 20 20 20 20 20 opcode);..
026230: 20 20 20 7D 0D 0A 20 20 20 20 20 20 70 75 74 73 }.. puts
026240: 28 22 22 29 3B 0D 0A 20 20 20 20 20 20 7D 20 77 ("");.. } w
026250: 68 69 6C 65 28 2A 63 70 20 3E 20 27 20 27 29 3B hile(*cp > ' ');
026260: 0D 0A 20 20 20 20 7D 0D 0A 20 20 63 6C 6F 73 65 .. }.. close
026270: 28 66 64 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A (fd);.. }..../*
026280: 0D 0A 2A 2A 20 61 62 6F 72 74 20 77 69 74 68 20 ..** abort with
026290: 61 20 75 73 61 67 65 20 6D 65 73 73 61 67 65 0D a usage message.
0262A0: 0A 2A 2F 0D 0A 75 73 61 67 65 28 29 20 7B 0D 0A .*/..usage() {..
0262B0: 20 20 65 72 72 6F 72 28 22 55 73 61 67 65 3A 20 error("Usage:
0262C0: 43 4D 49 54 20 5B 2D 43 5D 20 5B 2D 4C 5D 20 5B CMIT [-C] [-L] [
0262D0: 74 61 62 6C 65 5D 20 5B 6D 61 63 5D 22 29 3B 0D table] [mac]");.
0262E0: 0A 20 20 7D 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A . }............
0262F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
026300: 20 20 20 20 20 20 20 66 6D 74 20 3E 3E 3D 20 31 fmt >>= 1
026310: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 7D 0D 0A ;.. }..
026320: 20 20 20 20 20 20 20 20 65 6C 73 65 20 7B 09 09 else {..
026330: 09 09 09 2F 2A 20 63 6F 64 65 20 62 79 74 65 20 .../* code byte
026340: 2A 2F 0D 0A 20 20 20 20 20 20 20 20 20 20 69 66 */.. if
026350: 28 68 6F 6C 64 69 6E 67 29 20 70 72 69 6E 74 66 (holding) printf
026360: 28 22 20 25 32 78 22 2C 20 6F 70 63 6F 64 65 29 (" %2x", opcode)
026370: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 6F 70 63 ;.. opc
026380: 6F 64 65 20 3D 20 2A 70 74 72 2B 2B 20 26 20 32 ode = *ptr++ & 2
026390: 35 35 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 68 55;.. h
0263A0: 6F 6C 64 69 6E 67 20 3D 20 59 45 53 3B 0D 0A 20 olding = YES;..
0263B0: 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 }..
0263C0: 20 20 20 20 66 6D 74 20 3E 3E 3D 20 31 3B 0D 0A fmt >>= 1;..
0263D0: 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 }..
0263E0: 20 69 66 28 68 6F 6C 64 69 6E 67 29 20 7B 0D 0A if(holding) {..
0263F0: 20 20 20 20 20 20 20 20 6F 70 63 6F 64 65 20 2B opcode +
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: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0266A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0266B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0266C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0266D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0266E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0266F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0267A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0267B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0267C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0267D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0267E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0267F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
026800: 2F 2A 0D 0A 2A 2A 20 69 66 20 66 6E 20 68 61 73 /*..** if fn has
026810: 20 6E 6F 20 65 78 74 65 6E 73 69 6F 6E 2C 20 65 no extension, e
026820: 78 74 65 6E 64 20 69 74 20 77 69 74 68 20 65 78 xtend it with ex
026830: 74 31 0D 0A 2A 2A 20 69 66 20 66 6E 20 68 61 73 t1..** if fn has
026840: 20 61 6E 20 65 78 74 65 6E 73 69 6F 6E 2C 20 72 an extension, r
026850: 65 71 75 69 72 65 20 69 74 20 74 6F 20 6D 61 74 equire it to mat
026860: 63 68 20 65 78 74 31 20 6F 72 20 65 78 74 32 0D ch ext1 or ext2.
026870: 0A 2A 2A 20 72 65 74 75 72 6E 20 74 72 75 65 20 .** return true
026880: 69 66 20 66 6E 27 73 20 65 78 74 65 6E 73 69 6F if fn's extensio
026890: 6E 20 6D 61 74 63 68 65 73 20 65 78 74 32 2C 20 n matches ext2,
0268A0: 65 6C 73 65 20 66 61 6C 73 65 0D 0A 2A 2F 0D 0A else false..*/..
0268B0: 23 69 6E 63 6C 75 64 65 20 3C 73 74 64 69 6F 2E #include <stdio.
0268C0: 68 3E 0D 0A 23 69 6E 63 6C 75 64 65 20 22 6D 61 h>..#include "ma
0268D0: 63 2E 68 22 0D 0A 23 64 65 66 69 6E 65 20 4E 4F c.h"..#define NO
0268E0: 43 43 41 52 47 43 0D 0A 65 78 74 65 6E 64 28 66 CCARGC..extend(f
0268F0: 6E 2C 20 65 78 74 31 2C 20 65 78 74 32 29 20 63 n, ext1, ext2) c
026900: 68 61 72 20 2A 66 6E 2C 20 2A 65 78 74 31 2C 20 har *fn, *ext1,
026910: 2A 65 78 74 32 3B 20 7B 0D 0A 20 20 63 68 61 72 *ext2; {.. char
026920: 20 2A 63 70 3B 0D 0A 20 20 69 66 28 63 70 20 3D *cp;.. if(cp =
026930: 20 73 74 72 63 68 72 28 66 6E 2C 20 27 2E 27 29 strchr(fn, '.')
026940: 29 20 7B 0D 0A 20 20 20 20 69 66 28 73 74 72 63 ) {.. if(strc
026950: 6D 70 28 63 70 2C 20 65 78 74 32 29 20 3D 3D 20 mp(cp, ext2) ==
026960: 30 29 20 72 65 74 75 72 6E 20 28 59 45 53 29 3B 0) return (YES);
026970: 0D 0A 20 20 20 20 69 66 28 73 74 72 63 6D 70 28 .. if(strcmp(
026980: 63 70 2C 20 65 78 74 31 29 20 3D 3D 20 30 29 20 cp, ext1) == 0)
026990: 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 return (NO);..
0269A0: 20 20 70 75 74 73 32 28 66 6E 2C 20 22 20 2D 20 puts2(fn, " -
0269B0: 69 6E 76 61 6C 69 64 20 65 78 74 65 6E 73 69 6F invalid extensio
0269C0: 6E 22 29 3B 0D 0A 20 20 20 20 61 62 6F 72 74 28 n");.. abort(
0269D0: 37 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 7);.. }.. if
0269E0: 28 73 74 72 6C 65 6E 28 66 6E 29 20 3E 20 4D 41 (strlen(fn) > MA
0269F0: 58 46 4E 2D 34 29 20 65 72 72 6F 72 32 28 66 6E XFN-4) error2(fn
026A00: 2F 2A 0D 0A 2A 2A 20 44 52 45 4C 2E 43 20 2D 2D /*..** DREL.C --
026A10: 20 64 75 6D 70 20 52 45 4C 20 6F 72 20 4C 49 42 dump REL or LIB
026A20: 20 66 69 6C 65 0D 0A 2A 2A 0D 0A 2A 2A 20 20 20 file..**..**
026A30: 20 20 20 20 20 20 20 20 43 6F 70 79 72 69 67 68 Copyrigh
026A40: 74 20 31 39 38 35 20 4A 2E 20 45 2E 20 48 65 6E t 1985 J. E. Hen
026A50: 64 72 69 78 0D 0A 2A 2A 0D 0A 2A 2A 20 20 4E 6F drix..**..** No
026A60: 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 20 73 77 command line sw
026A70: 69 74 63 68 65 73 20 61 72 65 20 61 63 63 65 70 itches are accep
026A80: 74 65 64 2E 20 20 54 68 65 20 75 73 65 72 20 69 ted. The user i
026A90: 73 20 70 72 6F 6D 70 74 65 64 0D 0A 2A 2A 20 20 s prompted..**
026AA0: 66 6F 72 20 65 61 63 68 20 66 69 6C 65 20 74 6F for each file to
026AB0: 20 62 65 20 64 75 6D 70 65 64 2E 20 20 4F 75 74 be dumped. Out
026AC0: 70 75 74 20 67 6F 65 73 20 74 6F 20 74 68 65 20 put goes to the
026AD0: 73 74 61 6E 64 61 72 64 0D 0A 2A 2A 20 20 6F 75 standard..** ou
026AE0: 74 70 75 74 20 66 69 6C 65 20 61 6E 64 20 69 73 tput file and is
026AF0: 2C 20 74 68 65 72 65 66 6F 72 65 2C 20 72 65 64 , therefore, red
026B00: 69 72 65 63 74 61 62 6C 65 20 74 6F 20 61 6E 79 irectable to any
026B10: 20 6F 75 74 70 75 74 0D 0A 2A 2A 20 20 64 65 76 output..** dev
026B20: 69 63 65 20 6F 72 20 74 6F 20 61 20 64 69 73 6B ice or to a disk
026B30: 20 66 69 6C 65 2E 20 20 49 66 20 61 6E 20 69 6E file. If an in
026B40: 70 75 74 20 66 69 6C 65 20 63 61 6E 6E 6F 74 20 put file cannot
026B50: 62 65 20 66 6F 75 6E 64 0D 0A 2A 2A 20 20 74 68 be found..** th
026B60: 65 20 75 73 65 72 20 69 73 20 70 72 6F 6D 70 74 e user is prompt
026B70: 65 64 20 66 6F 72 20 61 6E 6F 74 68 65 72 20 69 ed for another i
026B80: 6E 70 75 74 20 66 69 6C 65 2E 20 20 46 69 6C 65 nput file. File
026B90: 20 6E 61 6D 65 73 20 6D 75 73 74 0D 0A 2A 2A 20 names must..**
026BA0: 20 62 65 20 67 69 76 65 6E 2C 20 63 6F 6D 70 6C be given, compl
026BB0: 65 74 65 20 77 69 74 68 20 65 78 74 65 6E 73 69 ete with extensi
026BC0: 6F 6E 73 2E 20 20 44 72 69 76 65 20 73 70 65 63 ons. Drive spec
026BD0: 69 66 69 65 72 73 20 6D 61 79 20 62 65 0D 0A 2A ifiers may be..*
026BE0: 2A 20 20 67 69 76 65 6E 2E 0D 0A 2A 2F 0D 0A 23 * given...*/..#
026BF0: 69 6E 63 6C 75 64 65 20 3C 73 74 64 69 6F 2E 68 include <stdio.h
026C00: 2C 20 22 20 2D 20 54 6F 6F 20 4C 6F 6E 67 22 29 , " - Too Long")
026C10: 3B 0D 0A 20 20 73 74 72 63 61 74 28 66 6E 2C 20 ;.. strcat(fn,
026C20: 65 78 74 31 29 3B 0D 0A 20 20 72 65 74 75 72 6E ext1);.. return
026C30: 20 28 4E 4F 29 3B 0D 0A 20 20 7D 0D 0A 1A 1A 1A (NO);.. }.....
026C40: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
026C50: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
026C60: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
026C70: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
026C80: 69 66 20 66 6E 27 73 20 65 78 74 65 6E 73 69 6F if fn's extensio
026C90: 6E 20 6D 61 74 63 68 65 73 20 65 78 74 32 2C 20 n matches ext2,
026CA0: 65 6C 73 65 20 66 61 6C 73 65 0D 0A 2A 2F 0D 0A else false..*/..
026CB0: 23 69 6E 63 6C 75 64 65 20 3C 73 74 64 69 6F 2E #include <stdio.
026CC0: 68 3E 0D 0A 23 69 6E 63 6C 75 64 65 20 22 6D 61 h>..#include "ma
026CD0: 63 2E 68 22 0D 0A 23 64 65 66 69 6E 65 20 4E 4F c.h"..#define NO
026CE0: 43 43 41 52 47 43 0D 0A 65 78 74 65 6E 64 28 66 CCARGC..extend(f
026CF0: 6E 2C 20 65 78 74 31 2C 20 65 78 74 32 29 20 63 n, ext1, ext2) c
026D00: 68 61 72 20 2A 66 6E 2C 20 2A 65 78 74 31 2C 20 har *fn, *ext1,
026D10: 2A 65 78 74 32 3B 20 7B 0D 0A 20 20 63 68 61 72 *ext2; {.. char
026D20: 20 2A 63 70 3B 0D 0A 20 20 69 66 28 63 70 20 3D *cp;.. if(cp =
026D30: 20 73 74 72 63 68 72 28 66 6E 2C 20 27 2E 27 29 strchr(fn, '.')
026D40: 29 20 7B 0D 0A 20 20 20 20 69 66 28 73 74 72 63 ) {.. if(strc
026D50: 6D 70 28 63 70 2C 20 65 78 74 32 29 20 3D 3D 20 mp(cp, ext2) ==
026D60: 30 29 20 72 65 74 75 72 6E 20 28 59 45 53 29 3B 0) return (YES);
026D70: 0D 0A 20 20 20 20 69 66 28 73 74 72 63 6D 70 28 .. if(strcmp(
026D80: 63 70 2C 20 65 78 74 31 29 20 3D 3D 20 30 29 20 cp, ext1) == 0)
026D90: 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 return (NO);..
026DA0: 20 20 70 75 74 73 32 28 66 6E 2C 20 22 20 2D 20 puts2(fn, " -
026DB0: 69 6E 76 61 6C 69 64 20 65 78 74 65 6E 73 69 6F invalid extensio
026DC0: 6E 22 29 3B 0D 0A 20 20 20 20 61 62 6F 72 74 28 n");.. abort(
026DD0: 37 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 7);.. }.. if
026DE0: 28 73 74 72 6C 65 6E 28 66 6E 29 20 3E 20 4D 41 (strlen(fn) > MA
026DF0: 58 46 4E 2D 34 29 20 65 72 72 6F 72 32 28 66 6E XFN-4) error2(fn
026E00: 3E 0D 0A 23 69 6E 63 6C 75 64 65 20 22 6E 6F 74 >..#include "not
026E10: 69 63 65 2E 68 22 0D 0A 23 69 6E 63 6C 75 64 65 ice.h"..#include
026E20: 20 22 6D 61 63 2E 68 22 0D 0A 23 69 6E 63 6C 75 "mac.h"..#inclu
026E30: 64 65 20 22 72 65 6C 2E 68 22 0D 0A 0D 0A 6D 61 de "rel.h"....ma
026E40: 69 6E 28 29 20 7B 0D 0A 20 20 63 68 61 72 20 66 in() {.. char f
026E50: 6E 5B 4D 41 58 46 4E 5D 3B 0D 0A 20 20 66 70 75 n[MAXFN];.. fpu
026E60: 74 73 28 22 53 6D 61 6C 6C 2D 4D 61 63 20 52 45 ts("Small-Mac RE
026E70: 4C 2F 4C 49 42 20 44 75 6D 70 20 55 74 69 6C 69 L/LIB Dump Utili
026E80: 74 79 2C 20 22 2C 20 73 74 64 65 72 72 29 3B 20 ty, ", stderr);
026E90: 66 70 75 74 73 28 56 45 52 53 49 4F 4E 2C 20 73 fputs(VERSION, s
026EA0: 74 64 65 72 72 29 3B 0D 0A 20 20 66 70 75 74 73 tderr);.. fputs
026EB0: 28 43 52 49 47 48 54 31 2C 20 73 74 64 65 72 72 (CRIGHT1, stderr
026EC0: 29 3B 0D 0A 20 20 77 68 69 6C 65 28 59 45 53 29 );.. while(YES)
026ED0: 20 7B 0D 0A 20 20 20 20 69 66 28 21 72 65 71 73 {.. if(!reqs
026EE0: 74 72 28 22 4C 69 62 72 61 72 79 2F 4D 6F 64 75 tr("Library/Modu
026EF0: 6C 65 20 4E 61 6D 65 3A 20 22 2C 20 66 6E 2C 20 le Name: ", fn,
026F00: 4D 41 58 46 4E 29 29 20 65 78 69 74 28 29 3B 0D MAXFN)) exit();.
026F10: 0A 20 20 20 20 69 66 28 21 28 69 6E 72 65 6C 20 . if(!(inrel
026F20: 3D 20 66 6F 70 65 6E 28 66 6E 2C 20 22 72 22 29 = fopen(fn, "r")
026F30: 29 29 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 )) continue;..
026F40: 20 20 64 6F 20 7B 0D 0A 20 20 20 20 20 20 70 6F do {.. po
026F50: 6C 6C 28 59 45 53 29 3B 09 09 09 2F 2A 20 70 6F ll(YES);.../* po
026F60: 6C 6C 20 66 6F 72 20 75 73 65 72 20 69 6E 74 65 ll for user inte
026F70: 72 72 75 70 74 20 2A 2F 0D 0A 20 20 20 20 20 20 rrupt */..
026F80: 69 66 28 67 65 74 72 65 6C 28 29 20 3D 3D 20 45 if(getrel() == E
026F90: 52 52 29 20 61 62 6F 72 74 28 37 29 3B 09 2F 2A RR) abort(7);./*
026FA0: 20 67 65 74 20 6E 65 78 74 20 52 45 4C 20 69 74 get next REL it
026FB0: 65 6D 20 2A 2F 0D 0A 20 20 20 20 20 20 73 65 65 em */.. see
026FC0: 72 65 6C 28 29 3B 09 09 09 09 2F 2A 20 64 69 73 rel();..../* dis
026FD0: 70 6C 61 79 20 69 74 20 2A 2F 0D 0A 20 20 20 20 play it */..
026FE0: 20 20 7D 20 77 68 69 6C 65 28 69 74 65 6D 20 21 } while(item !
026FF0: 3D 20 45 46 49 4C 45 29 3B 0D 0A 20 20 20 20 66 = EFILE);.. f
027000: 2F 2A 0D 0A 2A 2A 20 66 69 6C 65 20 72 65 6C 61 /*..** file rela
027010: 74 65 64 20 66 75 6E 63 74 69 6F 6E 73 0D 0A 2A ted functions..*
027020: 2F 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 /..#define NOCCA
027030: 52 47 43 0D 0A 6F 70 65 6E 28 6E 61 6D 65 2C 20 RGC..open(name,
027040: 6D 6F 64 65 29 20 63 68 61 72 20 2A 6E 61 6D 65 mode) char *name
027050: 2C 20 2A 6D 6F 64 65 3B 20 7B 0D 0A 20 20 69 6E , *mode; {.. in
027060: 74 20 66 64 3B 0D 0A 20 20 69 66 28 66 64 20 3D t fd;.. if(fd =
027070: 20 66 6F 70 65 6E 28 6E 61 6D 65 2C 20 6D 6F 64 fopen(name, mod
027080: 65 29 29 20 72 65 74 75 72 6E 28 66 64 29 3B 0D e)) return(fd);.
027090: 0A 20 20 63 61 6E 74 28 6E 61 6D 65 29 3B 0D 0A . cant(name);..
0270A0: 20 20 7D 0D 0A 63 6C 6F 73 65 28 66 64 29 20 69 }..close(fd) i
0270B0: 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 69 66 28 66 nt fd; {.. if(f
0270C0: 63 6C 6F 73 65 28 66 64 29 29 20 65 72 72 6F 72 close(fd)) error
0270D0: 28 22 43 6C 6F 73 65 20 45 72 72 6F 72 22 29 3B ("Close Error");
0270E0: 0D 0A 20 20 7D 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A .. }...........
0270F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
027100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0271A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0271B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0271C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0271D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0271E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0271F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027200: 63 6C 6F 73 65 28 69 6E 72 65 6C 29 3B 0D 0A 20 close(inrel);..
027210: 20 20 20 7D 0D 0A 20 20 7D 0D 0A 1A 1A 1A 1A 1A }.. }.......
027220: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
027230: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
027240: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
027250: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
027260: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
027270: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
027280: 74 79 2C 20 22 2C 20 73 74 64 65 72 72 29 3B 20 ty, ", stderr);
027290: 66 70 75 74 73 28 56 45 52 53 49 4F 4E 2C 20 73 fputs(VERSION, s
0272A0: 74 64 65 72 72 29 3B 0D 0A 20 20 66 70 75 74 73 tderr);.. fputs
0272B0: 28 43 52 49 47 48 54 31 2C 20 73 74 64 65 72 72 (CRIGHT1, stderr
0272C0: 29 3B 0D 0A 20 20 77 68 69 6C 65 28 59 45 53 29 );.. while(YES)
0272D0: 20 7B 0D 0A 20 20 20 20 69 66 28 21 72 65 71 73 {.. if(!reqs
0272E0: 74 72 28 22 4C 69 62 72 61 72 79 2F 4D 6F 64 75 tr("Library/Modu
0272F0: 6C 65 20 4E 61 6D 65 3A 20 22 2C 20 66 6E 2C 20 le Name: ", fn,
027300: 4D 41 58 46 4E 29 29 20 65 78 69 74 28 29 3B 0D MAXFN)) exit();.
027310: 0A 20 20 20 20 69 66 28 21 28 69 6E 72 65 6C 20 . if(!(inrel
027320: 3D 20 66 6F 70 65 6E 28 66 6E 2C 20 22 72 22 29 = fopen(fn, "r")
027330: 29 29 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 )) continue;..
027340: 20 20 64 6F 20 7B 0D 0A 20 20 20 20 20 20 70 6F do {.. po
027350: 6C 6C 28 59 45 53 29 3B 09 09 09 2F 2A 20 70 6F ll(YES);.../* po
027360: 6C 6C 20 66 6F 72 20 75 73 65 72 20 69 6E 74 65 ll for user inte
027370: 72 72 75 70 74 20 2A 2F 0D 0A 20 20 20 20 20 20 rrupt */..
027380: 69 66 28 67 65 74 72 65 6C 28 29 20 3D 3D 20 45 if(getrel() == E
027390: 52 52 29 20 61 62 6F 72 74 28 37 29 3B 09 2F 2A RR) abort(7);./*
0273A0: 20 67 65 74 20 6E 65 78 74 20 52 45 4C 20 69 74 get next REL it
0273B0: 65 6D 20 2A 2F 0D 0A 20 20 20 20 20 20 73 65 65 em */.. see
0273C0: 72 65 6C 28 29 3B 09 09 09 09 2F 2A 20 64 69 73 rel();..../* dis
0273D0: 70 6C 61 79 20 69 74 20 2A 2F 0D 0A 20 20 20 20 play it */..
0273E0: 20 20 7D 20 77 68 69 6C 65 28 69 74 65 6D 20 21 } while(item !
0273F0: 3D 20 45 46 49 4C 45 29 3B 0D 0A 20 20 20 20 66 = EFILE);.. f
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: 20 20 69 6E 72 65 6D 20 3D 20 30 3B 09 09 09 2F inrem = 0;.../
027710: 2A 20 66 6F 72 63 65 20 62 79 74 65 20 62 6F 75 * force byte bou
027720: 6E 64 61 72 79 20 2A 2F 0D 0A 20 20 20 20 20 20 ndary */..
027730: 62 72 65 61 6B 3B 0D 0A 20 20 20 20 63 61 73 65 break;.. case
027740: 20 31 35 3A 09 09 09 09 2F 2A 20 65 6E 64 20 6F 15:..../* end o
027750: 66 20 66 69 6C 65 20 2A 2F 0D 0A 20 20 20 20 20 f file */..
027760: 20 69 6E 72 65 6D 20 3D 20 30 3B 09 09 09 2F 2A inrem = 0;.../*
027770: 20 66 6F 72 63 65 20 62 79 74 65 20 62 6F 75 6E force byte boun
027780: 64 61 72 79 20 2A 2F 0D 0A 20 20 20 20 7D 0D 0A dary */.. }..
027790: 20 20 72 65 74 75 72 6E 20 28 69 74 65 6D 29 3B return (item);
0277A0: 0D 0A 20 20 7D 0D 0A 0D 0A 67 65 74 74 79 70 28 .. }....gettyp(
0277B0: 29 20 7B 0D 0A 20 20 69 66 28 21 67 65 74 62 69 ) {.. if(!getbi
0277C0: 74 73 28 32 29 29 20 72 65 74 75 72 6E 20 28 45 ts(2)) return (E
0277D0: 52 52 29 3B 09 09 2F 2A 20 67 65 74 20 32 2D 62 RR);../* get 2-b
0277E0: 69 74 20 66 69 65 6C 64 20 74 79 70 65 20 2A 2F it field type */
0277F0: 0D 0A 20 20 72 65 74 75 72 6E 20 28 74 79 70 65 .. return (type
027800: 20 3D 20 66 69 65 6C 64 29 3B 0D 0A 20 20 7D 0D = field);.. }.
027810: 0A 0D 0A 67 65 74 66 6C 64 28 29 20 7B 09 09 09 ...getfld() {...
027820: 09 2F 2A 20 67 65 74 20 74 79 70 65 20 61 6E 64 ./* get type and
027830: 20 76 61 6C 75 65 20 6F 66 20 66 69 65 6C 64 20 value of field
027840: 2A 2F 0D 0A 20 20 69 6E 74 20 6C 6F 77 3B 0D 0A */.. int low;..
027850: 20 20 69 66 28 21 67 65 74 62 69 74 73 28 38 29 if(!getbits(8)
027860: 29 20 72 65 74 75 72 6E 20 28 45 52 52 29 3B 09 ) return (ERR);.
027870: 09 2F 2A 20 67 65 74 20 66 69 72 73 74 20 38 20 ./* get first 8
027880: 62 69 74 73 20 2A 2F 0D 0A 20 20 6C 6F 77 20 3D bits */.. low =
027890: 20 66 69 65 6C 64 3B 09 09 09 09 2F 2A 20 73 61 field;..../* sa
0278A0: 76 65 20 61 73 20 6C 6F 77 20 6F 72 64 65 72 20 ve as low order
0278B0: 62 79 74 65 20 2A 2F 0D 0A 20 20 69 66 28 21 67 byte */.. if(!g
0278C0: 65 74 62 69 74 73 28 38 29 29 20 72 65 74 75 72 etbits(8)) retur
0278D0: 6E 20 28 45 52 52 29 3B 09 09 2F 2A 20 67 65 74 n (ERR);../* get
0278E0: 20 6E 65 78 74 20 38 20 62 69 74 73 20 2A 2F 0D next 8 bits */.
0278F0: 0A 20 20 66 69 65 6C 64 20 3D 20 28 66 69 65 6C . field = (fiel
027900: 2F 2A 0D 0A 2A 2A 20 67 65 74 72 65 6C 20 2D 2D /*..** getrel --
027910: 20 72 65 61 64 20 61 20 72 65 6C 6F 63 61 74 61 read a relocata
027920: 62 6C 65 2D 6F 62 6A 65 63 74 20 66 69 6C 65 0D ble-object file.
027930: 0A 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 3C 73 .*/..#include <s
027940: 74 64 69 6F 2E 68 3E 0D 0A 23 69 6E 63 6C 75 64 tdio.h>..#includ
027950: 65 20 22 72 65 6C 2E 68 22 0D 0A 23 69 6E 63 6C e "rel.h"..#incl
027960: 75 64 65 20 22 6D 61 63 2E 68 22 0D 0A 0D 0A 2F ude "mac.h"..../
027970: 2A 0D 0A 2A 2A 20 67 65 74 20 6E 65 78 74 20 52 *..** get next R
027980: 45 4C 20 69 74 65 6D 0D 0A 2A 2A 20 72 65 74 75 EL item..** retu
027990: 72 6E 20 69 74 65 6D 20 63 6F 64 65 20 6F 6E 20 rn item code on
0279A0: 73 75 63 63 65 73 73 2C 20 45 52 52 20 6F 6E 20 success, ERR on
0279B0: 65 72 72 6F 72 0D 0A 2A 2A 20 6F 6E 20 73 75 63 error..** on suc
0279C0: 63 65 73 73 66 75 6C 20 72 65 74 75 72 6E 3A 0D cessful return:.
0279D0: 0A 2A 2A 20 20 20 20 69 74 65 6D 20 3D 20 69 74 .** item = it
0279E0: 65 6D 20 63 6F 64 65 0D 0A 2A 2A 20 20 20 20 74 em code..** t
0279F0: 79 70 65 20 3D 20 74 79 70 65 20 6F 66 20 66 69 ype = type of fi
027A00: 65 6C 64 0D 0A 2A 2A 20 20 20 66 69 65 6C 64 20 eld..** field
027A10: 3D 20 76 61 6C 75 65 20 6F 66 20 66 69 65 6C 64 = value of field
027A20: 0D 0A 2A 2A 20 20 73 79 6D 62 6F 6C 20 3D 20 73 ..** symbol = s
027A30: 79 6D 62 6F 6C 20 6E 61 6D 65 0D 0A 2A 2F 20 0D ymbol name..*/ .
027A40: 0A 67 65 74 72 65 6C 28 29 20 7B 0D 0A 20 20 69 .getrel() {.. i
027A50: 66 28 21 67 65 74 62 69 74 73 28 31 29 29 20 72 f(!getbits(1)) r
027A60: 65 74 75 72 6E 20 28 45 52 52 29 3B 09 09 2F 2A eturn (ERR);../*
027A70: 20 67 65 74 20 31 20 62 69 74 20 2A 2F 0D 0A 20 get 1 bit */..
027A80: 20 69 66 28 66 69 65 6C 64 20 3D 3D 20 30 29 20 if(field == 0)
027A90: 7B 09 09 09 2F 2A 20 61 62 73 6F 6C 75 74 65 20 {.../* absolute
027AA0: 69 74 65 6D 20 2A 2F 0D 0A 20 20 20 20 69 66 28 item */.. if(
027AB0: 21 67 65 74 62 69 74 73 28 38 29 29 20 72 65 74 !getbits(8)) ret
027AC0: 75 72 6E 20 28 45 52 52 29 3B 09 2F 2A 20 67 65 urn (ERR);./* ge
027AD0: 74 20 6E 65 78 74 20 38 20 62 69 74 73 20 2A 2F t next 8 bits */
027AE0: 0D 0A 20 20 20 20 72 65 74 75 72 6E 20 28 74 79 .. return (ty
027AF0: 70 65 20 3D 20 69 74 65 6D 20 3D 20 41 42 53 29 pe = item = ABS)
027B00: 64 20 3C 3C 20 38 29 20 7C 20 6C 6F 77 3B 09 09 d << 8) | low;..
027B10: 2F 2A 20 63 6F 6D 62 69 6E 65 20 68 69 67 68 20 /* combine high
027B20: 26 20 6C 6F 77 20 62 79 74 65 73 20 2A 2F 0D 0A & low bytes */..
027B30: 20 20 72 65 74 75 72 6E 20 28 69 74 65 6D 29 3B return (item);
027B40: 0D 0A 20 20 7D 0D 0A 0D 0A 67 65 74 73 79 6D 28 .. }....getsym(
027B50: 29 20 7B 09 09 09 09 2F 2A 20 67 65 74 20 73 79 ) {..../* get sy
027B60: 6D 62 6F 6C 20 2A 2F 0D 0A 20 20 69 6E 74 20 69 mbol */.. int i
027B70: 2C 20 73 61 76 65 3B 20 63 68 61 72 20 2A 63 70 , save; char *cp
027B80: 3B 0D 0A 20 20 63 70 20 3D 20 73 79 6D 62 6F 6C ;.. cp = symbol
027B90: 3B 0D 0A 20 20 73 61 76 65 20 3D 20 66 69 65 6C ;.. save = fiel
027BA0: 64 3B 09 09 09 09 2F 2A 20 73 61 76 65 20 66 69 d;..../* save fi
027BB0: 65 6C 64 20 2A 2F 0D 0A 20 20 69 66 28 21 67 65 eld */.. if(!ge
027BC0: 74 62 69 74 73 28 33 29 29 20 72 65 74 75 72 6E tbits(3)) return
027BD0: 20 28 45 52 52 29 3B 09 09 2F 2A 20 67 65 74 20 (ERR);../* get
027BE0: 33 2D 62 69 74 20 73 79 6D 62 6F 6C 20 6C 65 6E 3-bit symbol len
027BF0: 67 74 68 20 2A 2F 0D 0A 20 20 69 20 3D 20 66 69 gth */.. i = fi
027C00: 65 6C 64 3B 09 09 09 09 2F 2A 20 63 61 70 74 75 eld;..../* captu
027C10: 72 65 20 73 79 6D 62 6F 6C 20 6C 65 6E 67 74 68 re symbol length
027C20: 20 2A 2F 0D 0A 20 20 77 68 69 6C 65 28 69 2D 2D */.. while(i--
027C30: 29 20 7B 0D 0A 20 20 20 20 69 66 28 21 67 65 74 ) {.. if(!get
027C40: 62 69 74 73 28 38 29 29 20 72 65 74 75 72 6E 20 bits(8)) return
027C50: 28 45 52 52 29 3B 09 2F 2A 20 67 65 74 20 6E 65 (ERR);./* get ne
027C60: 78 74 20 62 79 74 65 20 2A 2F 0D 0A 20 20 20 20 xt byte */..
027C70: 2A 63 70 2B 2B 20 3D 20 66 69 65 6C 64 3B 0D 0A *cp++ = field;..
027C80: 20 20 20 20 7D 0D 0A 20 20 2A 63 70 20 3D 20 4E }.. *cp = N
027C90: 55 4C 4C 3B 09 09 09 09 2F 2A 20 74 65 72 6D 69 ULL;..../* termi
027CA0: 6E 61 74 65 20 73 79 6D 62 6F 6C 20 2A 2F 0D 0A nate symbol */..
027CB0: 20 20 66 69 65 6C 64 20 3D 20 73 61 76 65 3B 09 field = save;.
027CC0: 09 09 09 2F 2A 20 72 65 73 74 6F 72 65 20 66 69 .../* restore fi
027CD0: 65 6C 64 20 2A 2F 0D 0A 20 20 72 65 74 75 72 6E eld */.. return
027CE0: 20 28 69 74 65 6D 29 3B 0D 0A 20 20 7D 0D 0A 0D (item);.. }...
027CF0: 0A 2F 2A 0D 0A 2A 2A 20 67 65 74 20 6E 65 78 74 ./*..** get next
027D00: 3B 09 09 2F 2A 20 61 62 73 6F 6C 75 74 65 20 69 ;../* absolute i
027D10: 74 65 6D 20 2A 2F 0D 0A 20 20 20 20 7D 0D 0A 20 tem */.. }..
027D20: 20 69 66 28 21 67 65 74 62 69 74 73 28 32 29 29 if(!getbits(2))
027D30: 20 72 65 74 75 72 6E 20 28 45 52 52 29 3B 09 09 return (ERR);..
027D40: 2F 2A 20 67 65 74 20 6E 65 78 74 20 32 20 62 69 /* get next 2 bi
027D50: 74 73 20 2A 2F 0D 0A 20 20 73 77 69 74 63 68 28 ts */.. switch(
027D60: 74 79 70 65 20 3D 20 69 74 65 6D 20 3D 20 66 69 type = item = fi
027D70: 65 6C 64 29 20 7B 0D 0A 20 20 20 20 63 61 73 65 eld) {.. case
027D80: 20 30 3A 20 72 65 74 75 72 6E 20 28 67 65 74 73 0: return (gets
027D90: 70 65 63 28 29 29 3B 09 09 2F 2A 20 73 70 65 63 pec());../* spec
027DA0: 69 61 6C 20 6C 69 6E 6B 20 69 74 65 6D 20 2A 2F ial link item */
027DB0: 0D 0A 20 20 20 20 63 61 73 65 20 31 3A 09 09 09 .. case 1:...
027DC0: 09 2F 2A 20 70 72 6F 67 72 61 6D 20 72 65 6C 61 ./* program rela
027DD0: 74 69 76 65 20 69 74 65 6D 20 2A 2F 0D 0A 20 20 tive item */..
027DE0: 20 20 63 61 73 65 20 32 3A 09 09 09 09 2F 2A 20 case 2:..../*
027DF0: 64 61 74 61 20 72 65 6C 61 74 69 76 65 20 69 74 data relative it
027E00: 65 6D 20 2A 2F 0D 0A 20 20 20 20 63 61 73 65 20 em */.. case
027E10: 33 3A 09 09 09 09 2F 2A 20 63 6F 6D 6D 6F 6E 20 3:..../* common
027E20: 72 65 6C 61 74 69 76 65 20 69 74 65 6D 20 2A 2F relative item */
027E30: 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 67 65 .. }.. if(ge
027E40: 74 66 6C 64 28 29 20 3D 3D 20 45 52 52 29 20 72 tfld() == ERR) r
027E50: 65 74 75 72 6E 20 28 45 52 52 29 3B 09 2F 2A 20 eturn (ERR);./*
027E60: 67 65 74 20 6E 65 78 74 20 31 36 20 62 69 74 73 get next 16 bits
027E70: 20 2A 2F 0D 0A 20 20 72 65 74 75 72 6E 20 28 69 */.. return (i
027E80: 74 65 6D 29 3B 09 09 09 2F 2A 20 72 65 6C 61 74 tem);.../* relat
027E90: 69 76 65 20 69 74 65 6D 73 20 2A 2F 0D 0A 20 20 ive items */..
027EA0: 7D 0D 0A 0D 0A 67 65 74 73 70 65 63 28 29 20 7B }....getspec() {
027EB0: 09 09 09 09 2F 2A 20 67 65 74 20 6E 65 78 74 20 ..../* get next
027EC0: 73 70 65 63 69 61 6C 20 69 74 65 6D 20 2A 2F 0D special item */.
027ED0: 0A 20 20 69 66 28 21 67 65 74 62 69 74 73 28 34 . if(!getbits(4
027EE0: 29 29 20 72 65 74 75 72 6E 20 28 45 52 52 29 3B )) return (ERR);
027EF0: 09 09 2F 2A 20 67 65 74 20 6E 65 78 74 20 34 20 ../* get next 4
027F00: 20 6E 20 62 69 74 73 20 66 72 6F 6D 20 52 45 4C n bits from REL
027F10: 20 66 69 6C 65 20 69 6E 74 6F 20 22 66 69 65 6C file into "fiel
027F20: 64 22 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 74 72 d"..** return tr
027F30: 75 65 20 6F 6E 20 73 75 63 63 65 73 73 2C 20 66 ue on success, f
027F40: 61 6C 73 65 20 6F 6E 20 65 72 72 6F 72 0D 0A 2A alse on error..*
027F50: 2F 0D 0A 67 65 74 62 69 74 73 28 6E 29 20 69 6E /..getbits(n) in
027F60: 74 20 6E 3B 20 7B 0D 0A 20 20 69 6E 74 20 67 65 t n; {.. int ge
027F70: 74 3B 0D 0A 20 20 66 69 65 6C 64 20 3D 20 30 3B t;.. field = 0;
027F80: 09 09 09 09 09 2F 2A 20 69 6E 69 74 69 61 6C 69 ...../* initiali
027F90: 7A 65 20 72 65 73 75 6C 74 20 2A 2F 0D 0A 20 20 ze result */..
027FA0: 77 68 69 6C 65 28 6E 29 20 7B 09 09 09 09 09 2F while(n) {...../
027FB0: 2A 20 6D 6F 72 65 20 62 69 74 73 20 74 6F 20 66 * more bits to f
027FC0: 65 74 63 68 20 2A 2F 0D 0A 20 20 20 20 69 66 28 etch */.. if(
027FD0: 69 6E 72 65 6D 20 3D 3D 20 30 29 20 7B 09 09 09 inrem == 0) {...
027FE0: 09 2F 2A 20 6E 65 65 64 20 61 6E 6F 74 68 65 72 ./* need another
027FF0: 20 63 68 75 6E 6B 20 2A 2F 0D 0A 20 20 20 20 20 chunk */..
028000: 20 69 66 28 72 65 61 64 28 69 6E 72 65 6C 2C 20 if(read(inrel,
028010: 26 69 6E 63 68 75 6E 6B 2C 20 31 29 20 21 3D 20 &inchunk, 1) !=
028020: 31 29 20 7B 09 2F 2A 20 67 65 74 20 6E 65 78 74 1) {./* get next
028030: 20 62 69 74 20 63 6C 75 73 74 65 72 20 2A 2F 0D bit cluster */.
028040: 0A 20 20 20 20 20 20 20 20 66 70 75 74 73 28 22 . fputs("
028050: 5C 6E 5C 37 2D 20 41 62 6E 6F 72 6D 61 6C 20 45 \n\7- Abnormal E
028060: 6E 64 20 6F 66 20 52 45 4C 20 46 69 6C 65 5C 6E nd of REL File\n
028070: 22 2C 20 73 74 64 6F 75 74 29 3B 0D 0A 20 20 20 ", stdout);..
028080: 20 20 20 20 20 72 65 74 75 72 6E 20 28 4E 4F 29 return (NO)
028090: 3B 09 09 09 09 2F 2A 20 66 61 69 6C 75 72 65 20 ;..../* failure
0280A0: 2A 2F 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 */.. }..
0280B0: 20 20 20 20 20 69 6E 72 65 6D 20 3D 20 38 3B 09 inrem = 8;.
0280C0: 09 09 09 2F 2A 20 38 20 62 69 74 73 20 72 65 6D .../* 8 bits rem
0280D0: 61 69 6E 20 2A 2F 0D 0A 20 20 20 20 20 20 7D 0D ain */.. }.
0280E0: 0A 20 20 20 20 69 66 28 6E 20 3E 20 69 6E 72 65 . if(n > inre
0280F0: 6D 29 20 67 65 74 20 3D 20 69 6E 72 65 6D 3B 20 m) get = inrem;
028100: 62 69 74 73 20 2A 2F 0D 0A 20 20 74 79 70 65 20 bits */.. type
028110: 3D 20 41 42 53 3B 09 09 09 09 2F 2A 20 64 65 66 = ABS;..../* def
028120: 61 75 6C 74 20 74 79 70 65 20 2A 2F 0D 0A 20 20 ault type */..
028130: 69 74 65 6D 20 3D 20 66 69 65 6C 64 20 2B 20 34 item = field + 4
028140: 3B 0D 0A 20 20 73 77 69 74 63 68 28 66 69 65 6C ;.. switch(fiel
028150: 64 29 20 7B 0D 0A 20 20 20 20 63 61 73 65 20 20 d) {.. case
028160: 30 3A 09 09 09 09 2F 2A 20 65 6E 74 72 79 20 73 0:..../* entry s
028170: 79 6D 62 6F 6C 20 2A 2F 0D 0A 20 20 20 20 63 61 ymbol */.. ca
028180: 73 65 20 20 31 3A 09 09 09 09 2F 2A 20 73 65 6C se 1:..../* sel
028190: 65 63 74 20 63 6F 6D 6D 6F 6E 20 62 6C 6F 63 6B ect common block
0281A0: 20 2A 2F 0D 0A 20 20 20 20 63 61 73 65 20 20 32 */.. case 2
0281B0: 3A 09 09 09 09 2F 2A 20 70 72 6F 67 72 61 6D 20 :..../* program
0281C0: 6E 61 6D 65 20 2A 2F 0D 0A 20 20 20 20 63 61 73 name */.. cas
0281D0: 65 20 20 33 3A 09 09 09 09 2F 2A 20 72 65 71 75 e 3:..../* requ
0281E0: 65 73 74 20 6C 69 62 72 61 72 79 20 73 65 61 72 est library sear
0281F0: 63 68 20 2A 2F 0D 0A 20 20 20 20 63 61 73 65 20 ch */.. case
028200: 20 34 3A 09 09 09 09 2F 2A 20 65 78 74 65 6E 73 4:..../* extens
028210: 69 6F 6E 20 6C 69 6E 6B 20 69 74 65 6D 73 20 2A ion link items *
028220: 2F 0D 0A 20 20 20 20 20 20 69 66 28 67 65 74 73 /.. if(gets
028230: 79 6D 28 29 20 3D 3D 20 45 52 52 29 20 72 65 74 ym() == ERR) ret
028240: 75 72 6E 20 28 45 52 52 29 3B 0D 0A 20 20 20 20 urn (ERR);..
028250: 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 63 61 break;.. ca
028260: 73 65 20 20 35 3A 09 09 09 09 2F 2A 20 64 65 66 se 5:..../* def
028270: 69 6E 65 20 63 6F 6D 6D 6F 6E 20 73 69 7A 65 20 ine common size
028280: 2A 2F 0D 0A 20 20 20 20 63 61 73 65 20 20 36 3A */.. case 6:
028290: 09 09 09 09 2F 2A 20 68 65 61 64 20 6F 66 20 65 ..../* head of e
0282A0: 78 74 65 72 6E 61 6C 20 72 65 66 65 72 65 6E 63 xternal referenc
0282B0: 65 20 63 68 61 69 6E 20 2A 2F 0D 0A 20 20 20 20 e chain */..
0282C0: 63 61 73 65 20 20 37 3A 09 09 09 09 2F 2A 20 64 case 7:..../* d
0282D0: 65 66 69 6E 65 20 65 6E 74 72 79 20 70 6F 69 6E efine entry poin
0282E0: 74 20 2A 2F 0D 0A 20 20 20 20 20 20 69 66 28 67 t */.. if(g
0282F0: 65 74 74 79 70 28 29 20 3D 3D 20 45 52 52 20 7C ettyp() == ERR |
028300: 65 6C 73 65 20 67 65 74 20 3D 20 6E 3B 09 2F 2A else get = n;./*
028310: 20 68 6F 77 20 6D 61 6E 79 20 66 72 6F 6D 20 74 how many from t
028320: 68 69 73 20 63 68 75 6E 6B 20 2A 2F 0D 0A 20 20 his chunk */..
028330: 20 20 6E 20 20 20 20 20 2D 3D 20 67 65 74 3B 09 n -= get;.
028340: 09 09 09 2F 2A 20 64 65 63 72 65 6D 65 6E 74 20 .../* decrement
028350: 62 69 74 73 20 6E 65 65 64 65 64 20 2A 2F 0D 0A bits needed */..
028360: 20 20 20 20 69 6E 72 65 6D 20 20 20 2D 3D 20 67 inrem -= g
028370: 65 74 3B 09 09 09 09 2F 2A 20 64 65 63 72 20 72 et;..../* decr r
028380: 65 6D 61 69 6E 69 6E 67 20 62 69 74 73 20 2A 2F emaining bits */
028390: 0D 0A 20 20 20 20 66 69 65 6C 64 20 20 3D 20 28 .. field = (
0283A0: 66 69 65 6C 64 20 20 3C 3C 20 67 65 74 29 20 2B field << get) +
0283B0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 28 .. (
0283C0: 28 69 6E 63 68 75 6E 6B 20 3E 3E 20 69 6E 72 65 (inchunk >> inre
0283D0: 6D 29 20 26 20 7E 28 4F 4E 45 53 20 3C 3C 20 67 m) & ~(ONES << g
0283E0: 65 74 29 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 et));.. }..
0283F0: 72 65 74 75 72 6E 20 28 59 45 53 29 3B 09 09 09 return (YES);...
028400: 09 09 2F 2A 20 73 75 63 63 65 73 73 20 2A 2F 0D ../* success */.
028410: 0A 20 20 7D 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A . }............
028420: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
028430: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
028440: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
028450: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
028460: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
028470: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
028480: 20 20 20 20 20 72 65 74 75 72 6E 20 28 4E 4F 29 return (NO)
028490: 3B 09 09 09 09 2F 2A 20 66 61 69 6C 75 72 65 20 ;..../* failure
0284A0: 2A 2F 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 */.. }..
0284B0: 20 20 20 20 20 69 6E 72 65 6D 20 3D 20 38 3B 09 inrem = 8;.
0284C0: 09 09 09 2F 2A 20 38 20 62 69 74 73 20 72 65 6D .../* 8 bits rem
0284D0: 61 69 6E 20 2A 2F 0D 0A 20 20 20 20 20 20 7D 0D ain */.. }.
0284E0: 0A 20 20 20 20 69 66 28 6E 20 3E 20 69 6E 72 65 . if(n > inre
0284F0: 6D 29 20 67 65 74 20 3D 20 69 6E 72 65 6D 3B 20 m) get = inrem;
028500: 7C 20 67 65 74 66 6C 64 28 29 20 3D 3D 20 45 52 | getfld() == ER
028510: 52 20 7C 7C 20 67 65 74 73 79 6D 28 29 20 3D 3D R || getsym() ==
028520: 20 45 52 52 29 20 72 65 74 75 72 6E 20 28 45 52 ERR) return (ER
028530: 52 29 3B 0D 0A 20 20 20 20 20 20 62 72 65 61 6B R);.. break
028540: 3B 0D 0A 20 20 20 20 63 61 73 65 20 20 38 3A 09 ;.. case 8:.
028550: 09 09 09 2F 2A 20 65 78 74 65 72 6E 61 6C 20 2D .../* external -
028560: 20 6F 66 66 73 65 74 20 2A 2F 0D 0A 20 20 20 20 offset */..
028570: 63 61 73 65 20 20 39 3A 09 09 09 09 2F 2A 20 65 case 9:..../* e
028580: 78 74 65 72 6E 61 6C 20 2B 20 6F 66 66 73 65 74 xternal + offset
028590: 20 2A 2F 0D 0A 20 20 20 20 63 61 73 65 20 31 30 */.. case 10
0285A0: 3A 09 09 09 09 2F 2A 20 73 69 7A 65 20 6F 66 20 :..../* size of
0285B0: 64 61 74 61 20 61 72 65 61 20 2A 2F 0D 0A 20 20 data area */..
0285C0: 20 20 63 61 73 65 20 31 31 3A 09 09 09 09 2F 2A case 11:..../*
0285D0: 20 73 65 74 20 6C 6F 61 64 69 6E 67 20 6C 6F 63 set loading loc
0285E0: 61 74 69 6F 6E 20 63 6F 75 6E 74 65 72 20 2A 2F ation counter */
0285F0: 0D 0A 20 20 20 20 63 61 73 65 20 31 32 3A 09 09 .. case 12:..
028600: 09 09 2F 2A 20 63 68 61 69 6E 20 61 64 64 72 20 ../* chain addr
028610: 28 66 69 6C 6C 20 63 68 61 69 6E 20 77 69 74 68 (fill chain with
028620: 20 6C 63 29 20 2A 2F 0D 0A 20 20 20 20 63 61 73 lc) */.. cas
028630: 65 20 31 33 3A 09 09 09 09 2F 2A 20 73 69 7A 65 e 13:..../* size
028640: 20 6F 66 20 70 72 6F 67 72 61 6D 20 2A 2F 0D 0A of program */..
028650: 20 20 20 20 20 20 69 66 28 67 65 74 74 79 70 28 if(gettyp(
028660: 29 20 3D 3D 20 45 52 52 20 7C 7C 20 67 65 74 66 ) == ERR || getf
028670: 6C 64 28 29 20 3D 3D 20 45 52 52 29 20 72 65 74 ld() == ERR) ret
028680: 75 72 6E 20 28 45 52 52 29 3B 0D 0A 20 20 20 20 urn (ERR);..
028690: 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 63 61 break;.. ca
0286A0: 73 65 20 31 34 3A 09 09 09 09 2F 2A 20 65 6E 64 se 14:..../* end
0286B0: 20 6F 66 20 70 72 6F 67 72 61 6D 20 2A 2F 0D 0A of program */..
0286C0: 20 20 20 20 20 20 69 66 28 67 65 74 74 79 70 28 if(gettyp(
0286D0: 29 20 3D 3D 20 45 52 52 20 7C 7C 20 67 65 74 66 ) == ERR || getf
0286E0: 6C 64 28 29 20 3D 3D 20 45 52 52 29 20 72 65 74 ld() == ERR) ret
0286F0: 75 72 6E 20 28 45 52 52 29 3B 0D 0A 20 20 20 20 urn (ERR);..
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: 2F 2A 0D 0A 2A 2A 20 70 75 74 72 65 6C 20 2D 2D /*..** putrel --
028810: 20 77 72 69 74 65 20 61 20 72 65 6C 6F 63 61 74 write a relocat
028820: 61 62 6C 65 2D 6F 62 6A 65 63 74 20 66 69 6C 65 able-object file
028830: 0D 0A 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 3C ..*/..#include <
028840: 73 74 64 69 6F 2E 68 3E 0D 0A 23 69 6E 63 6C 75 stdio.h>..#inclu
028850: 64 65 20 22 72 65 6C 2E 68 22 0D 0A 23 69 6E 63 de "rel.h"..#inc
028860: 6C 75 64 65 20 22 6D 61 63 2E 68 22 0D 0A 0D 0A lude "mac.h"....
028870: 2F 2A 0D 0A 2A 2A 20 70 75 74 20 6E 65 78 74 20 /*..** put next
028880: 52 45 4C 20 69 74 65 6D 0D 0A 2A 2A 20 72 65 74 REL item..** ret
028890: 75 72 6E 20 74 72 75 65 20 6F 6E 20 73 75 63 63 urn true on succ
0288A0: 65 73 73 2C 20 66 61 6C 73 65 20 6F 6E 20 65 72 ess, false on er
0288B0: 72 6F 72 0D 0A 2A 2A 20 6F 6E 20 63 61 6C 6C 3A ror..** on call:
0288C0: 0D 0A 2A 2A 20 20 20 20 69 74 65 6D 20 3D 20 69 ..** item = i
0288D0: 74 65 6D 20 63 6F 64 65 0D 0A 2A 2A 20 20 20 20 tem code..**
0288E0: 74 79 70 65 20 3D 20 74 79 70 65 20 6F 66 20 66 type = type of f
0288F0: 69 65 6C 64 0D 0A 2A 2A 20 20 20 66 69 65 6C 64 ield..** field
028900: 20 3D 20 76 61 6C 75 65 20 6F 66 20 66 69 65 6C = value of fiel
028910: 64 0D 0A 2A 2A 20 20 73 79 6D 62 6F 6C 20 3D 20 d..** symbol =
028920: 73 79 6D 62 6F 6C 20 6E 61 6D 65 0D 0A 2A 2F 20 symbol name..*/
028930: 0D 0A 70 75 74 72 65 6C 28 29 20 7B 0D 0A 20 20 ..putrel() {..
028940: 73 77 69 74 63 68 28 69 74 65 6D 29 20 7B 0D 0A switch(item) {..
028950: 20 20 20 20 63 61 73 65 20 41 42 53 3A 0D 0A 20 case ABS:..
028960: 20 20 20 20 20 69 66 28 21 70 75 74 62 69 74 73 if(!putbits
028970: 28 30 2C 20 31 29 20 7C 7C 20 21 70 75 74 62 69 (0, 1) || !putbi
028980: 74 73 28 66 69 65 6C 64 2C 20 38 29 29 20 72 65 ts(field, 8)) re
028990: 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 20 20 turn (NO);..
0289A0: 20 20 72 65 74 75 72 6E 20 28 59 45 53 29 3B 0D return (YES);.
0289B0: 0A 20 20 20 20 63 61 73 65 20 50 52 45 4C 3A 20 . case PREL:
0289C0: 20 63 61 73 65 20 44 52 45 4C 3A 20 20 63 61 73 case DREL: cas
0289D0: 65 20 43 52 45 4C 3A 0D 0A 20 20 20 20 20 20 69 e CREL:.. i
0289E0: 66 28 21 70 75 74 62 69 74 73 28 31 2C 20 31 29 f(!putbits(1, 1)
0289F0: 20 7C 7C 20 21 70 75 74 62 69 74 73 28 69 74 65 || !putbits(ite
028A00: 75 63 63 65 73 73 20 2A 2F 0D 0A 20 20 7D 0D 0A uccess */.. }..
028A10: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
028A20: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
028A30: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
028A40: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
028A50: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
028A60: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
028A70: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
028A80: 65 6E 74 20 62 69 74 73 20 74 6F 20 70 75 74 20 ent bits to put
028A90: 2A 2F 0D 0A 20 20 20 20 6F 75 74 72 65 6D 20 2D */.. outrem -
028AA0: 3D 20 70 75 74 3B 09 09 09 09 2F 2A 20 64 65 63 = put;..../* dec
028AB0: 72 20 72 65 6D 61 69 6E 69 6E 67 20 62 69 74 73 r remaining bits
028AC0: 20 2A 2F 0D 0A 20 20 20 20 69 66 28 6F 75 74 72 */.. if(outr
028AD0: 65 6D 20 3D 3D 20 30 29 20 7B 09 09 09 09 2F 2A em == 0) {..../*
028AE0: 20 6E 65 65 64 20 61 6E 6F 74 68 65 72 20 63 68 need another ch
028AF0: 75 6E 6B 20 2A 2F 0D 0A 20 20 20 20 20 20 69 66 unk */.. if
028B00: 28 77 72 69 74 65 28 6F 75 74 72 65 6C 2C 20 26 (write(outrel, &
028B10: 6F 75 74 63 68 75 6E 6B 2C 20 31 29 20 21 3D 20 outchunk, 1) !=
028B20: 31 29 20 7B 09 2F 2A 20 70 75 74 20 6E 65 78 74 1) {./* put next
028B30: 20 62 69 74 20 63 6C 75 73 74 65 72 20 2A 2F 0D bit cluster */.
028B40: 0A 20 20 20 20 20 20 20 20 66 70 75 74 73 28 22 . fputs("
028B50: 5C 6E 5C 37 2D 20 57 72 69 74 65 20 45 72 72 6F \n\7- Write Erro
028B60: 72 20 69 6E 20 52 45 4C 20 46 69 6C 65 5C 6E 22 r in REL File\n"
028B70: 2C 20 73 74 64 6F 75 74 29 3B 0D 0A 20 20 20 20 , stdout);..
028B80: 20 20 20 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B return (NO);
028B90: 09 09 09 09 2F 2A 20 66 61 69 6C 75 72 65 20 2A ..../* failure *
028BA0: 2F 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 /.. }..
028BB0: 20 20 20 20 6F 75 74 72 65 6D 20 3D 20 38 3B 09 outrem = 8;.
028BC0: 09 09 09 2F 2A 20 38 20 62 69 74 73 20 72 65 6D .../* 8 bits rem
028BD0: 61 69 6E 20 2A 2F 0D 0A 20 20 20 20 20 20 7D 0D ain */.. }.
028BE0: 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E . }.. return
028BF0: 20 28 59 45 53 29 3B 09 09 09 09 09 2F 2A 20 73 (YES);...../* s
028C00: 6D 2C 20 32 29 20 7C 7C 20 21 70 75 74 66 6C 64 m, 2) || !putfld
028C10: 28 29 29 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B ()) return (NO);
028C20: 0D 0A 20 20 20 20 20 20 72 65 74 75 72 6E 20 28 .. return (
028C30: 59 45 53 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 YES);.. }..
028C40: 69 66 28 21 70 75 74 62 69 74 73 28 34 2C 20 33 if(!putbits(4, 3
028C50: 29 20 7C 7C 20 21 70 75 74 62 69 74 73 28 69 74 ) || !putbits(it
028C60: 65 6D 2D 34 2C 20 34 29 29 20 72 65 74 75 72 6E em-4, 4)) return
028C70: 20 28 4E 4F 29 3B 0D 0A 20 20 73 77 69 74 63 68 (NO);.. switch
028C80: 28 69 74 65 6D 29 20 7B 0D 0A 20 20 20 20 63 61 (item) {.. ca
028C90: 73 65 20 43 53 49 5A 45 3A 20 20 63 61 73 65 20 se CSIZE: case
028CA0: 58 43 48 41 49 4E 3A 20 20 63 61 73 65 20 45 50 XCHAIN: case EP
028CB0: 4F 49 4E 54 3A 0D 0A 20 20 20 20 20 20 69 66 28 OINT:.. if(
028CC0: 21 70 75 74 62 69 74 73 28 74 79 70 65 2C 20 32 !putbits(type, 2
028CD0: 29 20 7C 7C 20 21 70 75 74 66 6C 64 28 29 29 20 ) || !putfld())
028CE0: 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 0D 0A return (NO);....
028CF0: 20 20 20 20 63 61 73 65 20 45 4E 41 4D 45 3A 20 case ENAME:
028D00: 20 63 61 73 65 20 43 4E 41 4D 45 3A 20 20 63 61 case CNAME: ca
028D10: 73 65 20 50 4E 41 4D 45 3A 20 20 63 61 73 65 20 se PNAME: case
028D20: 4C 4E 41 4D 45 3A 20 20 63 61 73 65 20 45 58 54 LNAME: case EXT
028D30: 3A 0D 0A 20 20 20 20 20 20 69 66 28 21 70 75 74 :.. if(!put
028D40: 73 79 6D 28 29 29 20 72 65 74 75 72 6E 20 28 4E sym()) return (N
028D50: 4F 29 3B 0D 0A 20 20 20 20 20 20 72 65 74 75 72 O);.. retur
028D60: 6E 20 28 59 45 53 29 3B 0D 0A 0D 0A 20 20 20 20 n (YES);....
028D70: 63 61 73 65 20 58 4D 4F 46 46 3A 20 20 63 61 73 case XMOFF: cas
028D80: 65 20 58 50 4F 46 46 3A 20 20 63 61 73 65 20 44 e XPOFF: case D
028D90: 53 49 5A 45 3A 0D 0A 20 20 20 20 63 61 73 65 20 SIZE:.. case
028DA0: 53 45 54 4C 43 3A 20 20 63 61 73 65 20 43 48 41 SETLC: case CHA
028DB0: 49 4E 3A 20 20 63 61 73 65 20 50 53 49 5A 45 3A IN: case PSIZE:
028DC0: 0D 0A 20 20 20 20 20 20 69 66 28 21 70 75 74 62 .. if(!putb
028DD0: 69 74 73 28 74 79 70 65 2C 20 32 29 20 7C 7C 20 its(type, 2) ||
028DE0: 21 70 75 74 66 6C 64 28 29 29 20 72 65 74 75 72 !putfld()) retur
028DF0: 6E 20 28 4E 4F 29 3B 0D 0A 20 20 20 20 20 20 72 n (NO);.. r
028E00: 2F 2A 0D 0A 2A 2A 20 73 65 65 72 65 6C 20 2D 2D /*..** seerel --
028E10: 20 73 68 6F 77 20 52 45 4C 20 69 74 65 6D 73 0D show REL items.
028E20: 0A 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 3C 73 .*/..#include <s
028E30: 74 64 69 6F 2E 68 3E 0D 0A 23 69 6E 63 6C 75 64 tdio.h>..#includ
028E40: 65 20 22 72 65 6C 2E 68 22 0D 0A 69 6E 74 20 6C e "rel.h"..int l
028E50: 63 2C 20 77 69 64 74 68 3B 0D 0A 2F 2A 0D 0A 2A c, width;../*..*
028E60: 2A 20 64 69 73 70 6C 61 79 20 52 45 4C 20 69 74 * display REL it
028E70: 65 6D 0D 0A 2A 2A 20 6F 6E 20 63 61 6C 6C 3A 0D em..** on call:.
028E80: 0A 2A 2A 20 20 20 20 69 74 65 6D 20 3D 20 69 74 .** item = it
028E90: 65 6D 20 63 6F 64 65 0D 0A 2A 2A 20 20 20 20 74 em code..** t
028EA0: 79 70 65 20 3D 20 74 79 70 65 20 6F 66 20 66 69 ype = type of fi
028EB0: 65 6C 64 0D 0A 2A 2A 20 20 20 66 69 65 6C 64 20 eld..** field
028EC0: 3D 20 76 61 6C 75 65 20 6F 66 20 66 69 65 6C 64 = value of field
028ED0: 0D 0A 2A 2A 20 20 73 79 6D 62 6F 6C 20 3D 20 73 ..** symbol = s
028EE0: 79 6D 62 6F 6C 20 6E 61 6D 65 0D 0A 2A 2F 20 0D ymbol name..*/ .
028EF0: 0A 73 65 65 72 65 6C 28 29 20 7B 0D 0A 20 20 63 .seerel() {.. c
028F00: 68 61 72 20 73 74 72 5B 36 5D 3B 20 69 6E 74 20 har str[6]; int
028F10: 74 6D 70 3B 0D 0A 20 20 73 77 69 74 63 68 28 69 tmp;.. switch(i
028F20: 74 65 6D 29 20 7B 0D 0A 20 20 20 20 63 61 73 65 tem) {.. case
028F30: 20 20 20 20 41 42 53 3A 20 73 65 65 38 28 66 69 ABS: see8(fi
028F40: 65 6C 64 2C 20 27 20 27 29 3B 20 6C 63 20 2B 3D eld, ' '); lc +=
028F50: 20 31 3B 20 6E 65 77 6C 69 6E 28 4E 4F 29 3B 20 1; newlin(NO);
028F60: 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 63 61 73 return;.. cas
028F70: 65 20 20 20 50 52 45 4C 3A 20 0D 0A 20 20 20 20 e PREL: ..
028F80: 63 61 73 65 20 20 20 44 52 45 4C 3A 20 0D 0A 20 case DREL: ..
028F90: 20 20 20 63 61 73 65 20 20 20 43 52 45 4C 3A 20 case CREL:
028FA0: 73 65 65 31 36 28 29 3B 20 6C 63 20 2B 3D 20 32 see16(); lc += 2
028FB0: 3B 20 6E 65 77 6C 69 6E 28 4E 4F 29 3B 20 72 65 ; newlin(NO); re
028FC0: 74 75 72 6E 3B 0D 0A 20 20 20 20 63 61 73 65 20 turn;.. case
028FD0: 20 58 4D 4F 46 46 3A 0D 0A 20 20 20 20 63 61 73 XMOFF:.. cas
028FE0: 65 20 20 58 50 4F 46 46 3A 20 74 6D 70 20 3D 20 e XPOFF: tmp =
028FF0: 74 79 70 65 3B 20 74 79 70 65 20 3D 20 69 74 65 type; type = ite
029000: 65 74 75 72 6E 20 28 59 45 53 29 3B 0D 0A 0D 0A eturn (YES);....
029010: 20 20 20 20 63 61 73 65 20 45 50 52 4F 47 3A 0D case EPROG:.
029020: 0A 20 20 20 20 20 20 69 66 28 21 70 75 74 62 69 . if(!putbi
029030: 74 73 28 74 79 70 65 2C 20 32 29 20 7C 7C 20 21 ts(type, 2) || !
029040: 70 75 74 66 6C 64 28 29 29 20 72 65 74 75 72 6E putfld()) return
029050: 20 28 4E 4F 29 3B 0D 0A 20 20 20 20 63 61 73 65 (NO);.. case
029060: 20 45 46 49 4C 45 3A 0D 0A 20 20 20 20 20 20 69 EFILE:.. i
029070: 66 28 6F 75 74 72 65 6D 20 3C 20 38 20 26 26 20 f(outrem < 8 &&
029080: 21 70 75 74 62 69 74 73 28 30 2C 20 6F 75 74 72 !putbits(0, outr
029090: 65 6D 29 29 20 72 65 74 75 72 6E 20 28 4E 4F 29 em)) return (NO)
0290A0: 3B 2F 2A 20 66 69 6E 69 73 68 20 62 79 74 65 20 ;/* finish byte
0290B0: 2A 2F 0D 0A 20 20 20 20 20 20 72 65 74 75 72 6E */.. return
0290C0: 20 28 59 45 53 29 3B 0D 0A 20 20 20 20 7D 0D 0A (YES);.. }..
0290D0: 20 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A return (NO);..
0290E0: 20 20 7D 0D 0A 0D 0A 70 75 74 74 79 70 28 29 20 }....puttyp()
0290F0: 7B 0D 0A 20 20 69 66 28 70 75 74 62 69 74 73 28 {.. if(putbits(
029100: 74 79 70 65 2C 20 32 29 29 20 72 65 74 75 72 6E type, 2)) return
029110: 20 28 59 45 53 29 3B 09 2F 2A 20 70 75 74 20 32 (YES);./* put 2
029120: 2D 62 69 74 20 66 69 65 6C 64 20 74 79 70 65 20 -bit field type
029130: 2A 2F 0D 0A 20 20 72 65 74 75 72 6E 20 28 4E 4F */.. return (NO
029140: 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 70 75 74 66 6C );.. }....putfl
029150: 64 28 29 20 7B 09 09 09 09 2F 2A 20 70 75 74 20 d() {..../* put
029160: 6C 6F 77 20 74 68 65 6E 20 68 69 67 68 20 62 79 low then high by
029170: 74 65 20 2A 2F 0D 0A 20 20 69 66 28 70 75 74 62 te */.. if(putb
029180: 69 74 73 28 66 69 65 6C 64 2C 20 38 29 20 26 26 its(field, 8) &&
029190: 20 70 75 74 62 69 74 73 28 66 69 65 6C 64 20 3E putbits(field >
0291A0: 3E 20 38 2C 20 38 29 29 20 72 65 74 75 72 6E 20 > 8, 8)) return
0291B0: 28 59 45 53 29 3B 0D 0A 20 20 72 65 74 75 72 6E (YES);.. return
0291C0: 20 28 4E 4F 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 70 (NO);.. }....p
0291D0: 75 74 73 79 6D 28 29 20 7B 09 09 09 09 2F 2A 20 utsym() {..../*
0291E0: 70 75 74 20 73 79 6D 62 6F 6C 20 2A 2F 0D 0A 20 put symbol */..
0291F0: 20 69 6E 74 20 69 3B 20 63 68 61 72 20 2A 63 70 int i; char *cp
029200: 6D 3B 20 73 65 65 31 36 28 29 3B 0D 0A 20 20 20 m; see16();..
029210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 ty
029220: 70 65 20 3D 20 74 6D 70 3B 20 6E 65 77 6C 69 6E pe = tmp; newlin
029230: 28 4E 4F 29 3B 20 72 65 74 75 72 6E 3B 0D 0A 0D (NO); return;...
029240: 0A 20 20 20 20 63 61 73 65 20 20 45 4E 41 4D 45 . case ENAME
029250: 3A 20 73 65 65 6E 61 6D 28 22 20 20 20 20 20 65 : seenam(" e
029260: 6E 74 72 79 3A 20 22 2C 20 4E 4F 29 3B 20 67 6F ntry: ", NO); go
029270: 74 6F 20 65 6F 6C 3B 0D 0A 20 20 20 20 63 61 73 to eol;.. cas
029280: 65 20 20 43 4E 41 4D 45 3A 20 73 65 65 6E 61 6D e CNAME: seenam
029290: 28 22 20 20 20 20 63 6F 6D 6D 6F 6E 3A 20 22 2C (" common: ",
0292A0: 20 4E 4F 29 3B 20 67 6F 74 6F 20 65 6F 6C 3B 0D NO); goto eol;.
0292B0: 0A 20 20 20 20 63 61 73 65 20 20 50 4E 41 4D 45 . case PNAME
0292C0: 3A 20 66 70 75 74 63 28 27 5C 6E 27 2C 20 73 74 : fputc('\n', st
0292D0: 64 6F 75 74 29 3B 20 0D 0A 20 20 20 20 20 20 20 dout); ..
0292E0: 20 20 20 20 20 20 20 20 20 20 73 65 65 6E 61 6D seenam
0292F0: 28 22 2D 20 20 70 72 6F 67 72 61 6D 3A 20 22 2C ("- program: ",
029300: 20 4E 4F 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 NO);..
029310: 20 20 20 20 20 20 20 20 6C 63 20 3D 20 30 3B 0D lc = 0;.
029320: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
029330: 20 20 67 6F 74 6F 20 65 6F 6C 3B 0D 0A 20 20 20 goto eol;..
029340: 20 63 61 73 65 20 20 4C 4E 41 4D 45 3A 20 73 65 case LNAME: se
029350: 65 6E 61 6D 28 22 20 20 20 6C 69 62 72 61 72 79 enam(" library
029360: 3A 20 22 2C 20 4E 4F 29 3B 20 67 6F 74 6F 20 65 : ", NO); goto e
029370: 6F 6C 3B 0D 0A 20 20 20 20 63 61 73 65 20 20 20 ol;.. case
029380: 20 45 58 54 3A 20 66 70 75 74 73 28 22 65 78 74 EXT: fputs("ext
029390: 65 6E 73 69 6F 6E 20 6C 69 6E 6B 20 69 74 65 6D ension link item
0293A0: 5C 6E 22 2C 20 73 74 64 6F 75 74 29 3B 20 72 65 \n", stdout); re
0293B0: 74 75 72 6E 3B 0D 0A 0D 0A 20 20 20 20 63 61 73 turn;.... cas
0293C0: 65 20 20 43 53 49 5A 45 3A 20 73 65 65 6E 61 6D e CSIZE: seenam
0293D0: 28 22 20 63 6F 6D 6D 6F 6E 20 73 7A 3A 20 22 2C (" common sz: ",
0293E0: 20 59 45 53 29 3B 20 67 6F 74 6F 20 65 6F 6C 3B YES); goto eol;
0293F0: 0D 0A 20 20 20 20 63 61 73 65 20 58 43 48 41 49 .. case XCHAI
029400: 3B 0D 0A 20 20 69 66 28 28 69 20 3D 20 73 74 72 ;.. if((i = str
029410: 6C 65 6E 28 73 79 6D 62 6F 6C 29 29 20 3E 20 4D len(symbol)) > M
029420: 41 58 53 59 4D 29 20 69 20 3D 20 4D 41 58 53 59 AXSYM) i = MAXSY
029430: 4D 3B 09 2F 2A 20 65 6E 66 6F 72 63 65 20 6D 61 M;./* enforce ma
029440: 78 20 6C 65 6E 67 74 68 20 2A 2F 0D 0A 20 20 69 x length */.. i
029450: 66 28 21 70 75 74 62 69 74 73 28 69 2C 20 33 29 f(!putbits(i, 3)
029460: 29 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 09 2F ) return (NO);./
029470: 2A 20 70 75 74 20 33 2D 62 69 74 20 73 79 6D 62 * put 3-bit symb
029480: 6F 6C 20 6C 65 6E 67 74 68 20 2A 2F 0D 0A 20 20 ol length */..
029490: 63 70 20 3D 20 73 79 6D 62 6F 6C 3B 0D 0A 20 20 cp = symbol;..
0294A0: 77 68 69 6C 65 28 69 2D 2D 29 20 7B 0D 0A 20 20 while(i--) {..
0294B0: 20 20 69 66 28 21 70 75 74 62 69 74 73 28 2A 63 if(!putbits(*c
0294C0: 70 2B 2B 2C 20 38 29 29 20 72 65 74 75 72 6E 20 p++, 8)) return
0294D0: 28 4E 4F 29 3B 09 2F 2A 20 70 75 74 20 6E 65 78 (NO);./* put nex
0294E0: 74 20 62 79 74 65 20 2A 2F 0D 0A 20 20 20 20 7D t byte */.. }
0294F0: 0D 0A 20 20 72 65 74 75 72 6E 20 28 59 45 53 29 .. return (YES)
029500: 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A ;.. }..../*..**
029510: 20 70 75 74 20 6E 65 78 74 20 6E 20 62 69 74 73 put next n bits
029520: 20 66 72 6F 6D 20 66 6C 64 20 69 6E 74 6F 20 52 from fld into R
029530: 45 4C 20 66 69 6C 65 0D 0A 2A 2A 20 72 65 74 75 EL file..** retu
029540: 72 6E 20 74 72 75 65 20 6F 6E 20 73 75 63 63 65 rn true on succe
029550: 73 73 2C 20 66 61 6C 73 65 20 6F 6E 20 65 72 72 ss, false on err
029560: 6F 72 0D 0A 2A 2F 0D 0A 70 75 74 62 69 74 73 28 or..*/..putbits(
029570: 66 6C 64 2C 20 6E 29 20 69 6E 74 20 66 6C 64 2C fld, n) int fld,
029580: 20 6E 3B 20 7B 0D 0A 20 20 69 6E 74 20 70 75 74 n; {.. int put
029590: 3B 0D 0A 20 20 77 68 69 6C 65 28 6E 29 20 7B 09 ;.. while(n) {.
0295A0: 09 09 09 09 2F 2A 20 6D 6F 72 65 20 62 69 74 73 ..../* more bits
0295B0: 20 74 6F 20 70 75 74 20 2A 2F 0D 0A 20 20 20 20 to put */..
0295C0: 69 66 28 6E 20 3E 20 6F 75 74 72 65 6D 29 20 70 if(n > outrem) p
0295D0: 75 74 20 3D 20 6F 75 74 72 65 6D 3B 20 65 6C 73 ut = outrem; els
0295E0: 65 20 70 75 74 20 3D 20 6E 3B 09 2F 2A 20 68 6F e put = n;./* ho
0295F0: 77 20 6D 61 6E 79 20 66 6F 72 20 74 68 69 73 20 w many for this
029600: 4E 3A 20 73 65 65 6E 61 6D 28 22 20 65 78 74 20 N: seenam(" ext
029610: 63 68 61 69 6E 3A 20 22 2C 20 59 45 53 29 3B 20 chain: ", YES);
029620: 67 6F 74 6F 20 65 6F 6C 3B 0D 0A 20 20 20 20 63 goto eol;.. c
029630: 61 73 65 20 45 50 4F 49 4E 54 3A 20 73 65 65 6E ase EPOINT: seen
029640: 61 6D 28 22 20 20 65 6E 74 72 79 20 70 74 3A 20 am(" entry pt:
029650: 22 2C 20 59 45 53 29 3B 20 67 6F 74 6F 20 65 6F ", YES); goto eo
029660: 6C 3B 0D 0A 0D 0A 20 20 20 20 63 61 73 65 20 20 l;.... case
029670: 44 53 49 5A 45 3A 20 20 66 70 75 74 73 28 22 20 DSIZE: fputs("
029680: 64 61 74 61 20 73 69 7A 65 3A 20 22 2C 20 73 74 data size: ", st
029690: 64 6F 75 74 29 3B 20 67 6F 74 6F 20 66 6C 64 3B dout); goto fld;
0296A0: 0D 0A 20 20 20 20 63 61 73 65 20 20 53 45 54 4C .. case SETL
0296B0: 43 3A 20 20 66 70 75 74 73 28 22 20 20 20 6C 6F C: fputs(" lo
0296C0: 61 64 20 61 74 3A 20 22 2C 20 73 74 64 6F 75 74 ad at: ", stdout
0296D0: 29 3B 20 6C 63 20 3D 20 66 69 65 6C 64 3B 20 67 ); lc = field; g
0296E0: 6F 74 6F 20 66 6C 64 3B 0D 0A 20 20 20 20 63 61 oto fld;.. ca
0296F0: 73 65 20 20 43 48 41 49 4E 3A 20 20 66 70 75 74 se CHAIN: fput
029700: 73 28 22 20 6C 64 20 63 68 6E 20 61 74 3A 20 22 s(" ld chn at: "
029710: 2C 20 73 74 64 6F 75 74 29 3B 20 67 6F 74 6F 20 , stdout); goto
029720: 66 6C 64 3B 0D 0A 20 20 20 20 63 61 73 65 20 20 fld;.. case
029730: 50 53 49 5A 45 3A 20 20 66 70 75 74 73 28 22 20 PSIZE: fputs("
029740: 70 72 6F 67 20 73 69 7A 65 3A 20 22 2C 20 73 74 prog size: ", st
029750: 64 6F 75 74 29 3B 20 67 6F 74 6F 20 66 6C 64 3B dout); goto fld;
029760: 0D 0A 0D 0A 20 20 20 20 63 61 73 65 20 20 45 50 .... case EP
029770: 52 4F 47 3A 20 20 66 70 75 74 73 28 22 2D 20 65 ROG: fputs("- e
029780: 6E 64 20 70 72 6F 67 3A 20 22 2C 20 73 74 64 6F nd prog: ", stdo
029790: 75 74 29 3B 20 67 6F 74 6F 20 66 6C 64 3B 0D 0A ut); goto fld;..
0297A0: 20 20 20 20 63 61 73 65 20 20 45 46 49 4C 45 3A case EFILE:
0297B0: 20 20 66 70 75 74 73 28 22 2D 20 65 6E 64 20 66 fputs("- end f
0297C0: 69 6C 65 22 2C 20 73 74 64 6F 75 74 29 3B 20 20 ile", stdout);
0297D0: 20 67 6F 74 6F 20 65 6F 6C 3B 0D 0A 0D 0A 20 20 goto eol;....
0297E0: 20 20 20 20 20 20 20 20 20 20 66 6C 64 3A 20 73 fld: s
0297F0: 65 65 31 36 28 29 3B 0D 0A 20 20 20 20 20 20 20 ee16();..
029800: 63 68 75 6E 6B 20 2A 2F 0D 0A 20 20 20 20 6F 75 chunk */.. ou
029810: 74 63 68 75 6E 6B 20 3D 20 28 6F 75 74 63 68 75 tchunk = (outchu
029820: 6E 6B 20 3C 3C 20 70 75 74 29 20 2B 0D 0A 20 20 nk << put) +..
029830: 20 20 20 20 20 20 20 20 20 20 20 28 28 66 6C 64 ((fld
029840: 20 3E 3E 20 28 6E 2D 70 75 74 29 29 20 26 20 7E >> (n-put)) & ~
029850: 28 4F 4E 45 53 20 3C 3C 20 70 75 74 29 29 3B 0D (ONES << put));.
029860: 0A 20 20 20 20 6E 20 20 20 20 20 20 2D 3D 20 70 . n -= p
029870: 75 74 3B 09 09 09 09 2F 2A 20 64 65 63 72 65 6D ut;..../* decrem
029880: 65 6E 74 20 62 69 74 73 20 74 6F 20 70 75 74 20 ent bits to put
029890: 2A 2F 0D 0A 20 20 20 20 6F 75 74 72 65 6D 20 2D */.. outrem -
0298A0: 3D 20 70 75 74 3B 09 09 09 09 2F 2A 20 64 65 63 = put;..../* dec
0298B0: 72 20 72 65 6D 61 69 6E 69 6E 67 20 62 69 74 73 r remaining bits
0298C0: 20 2A 2F 0D 0A 20 20 20 20 69 66 28 6F 75 74 72 */.. if(outr
0298D0: 65 6D 20 3D 3D 20 30 29 20 7B 09 09 09 09 2F 2A em == 0) {..../*
0298E0: 20 6E 65 65 64 20 61 6E 6F 74 68 65 72 20 63 68 need another ch
0298F0: 75 6E 6B 20 2A 2F 0D 0A 20 20 20 20 20 20 69 66 unk */.. if
029900: 28 77 72 69 74 65 28 6F 75 74 72 65 6C 2C 20 26 (write(outrel, &
029910: 6F 75 74 63 68 75 6E 6B 2C 20 31 29 20 21 3D 20 outchunk, 1) !=
029920: 31 29 20 7B 09 2F 2A 20 70 75 74 20 6E 65 78 74 1) {./* put next
029930: 20 62 69 74 20 63 6C 75 73 74 65 72 20 2A 2F 0D bit cluster */.
029940: 0A 20 20 20 20 20 20 20 20 66 70 75 74 73 28 22 . fputs("
029950: 5C 6E 5C 37 2D 20 57 72 69 74 65 20 45 72 72 6F \n\7- Write Erro
029960: 72 20 69 6E 20 52 45 4C 20 46 69 6C 65 5C 6E 22 r in REL File\n"
029970: 2C 20 73 74 64 6F 75 74 29 3B 0D 0A 20 20 20 20 , stdout);..
029980: 20 20 20 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B return (NO);
029990: 09 09 09 09 2F 2A 20 66 61 69 6C 75 72 65 20 2A ..../* failure *
0299A0: 2F 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 /.. }..
0299B0: 20 20 20 20 6F 75 74 72 65 6D 20 3D 20 38 3B 09 outrem = 8;.
0299C0: 09 09 09 2F 2A 20 38 20 62 69 74 73 20 72 65 6D .../* 8 bits rem
0299D0: 61 69 6E 20 2A 2F 0D 0A 20 20 20 20 20 20 7D 0D ain */.. }.
0299E0: 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E . }.. return
0299F0: 20 28 59 45 53 29 3B 09 09 09 09 09 2F 2A 20 73 (YES);...../* s
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: 20 20 20 20 20 65 6F 6C 3A 20 6E 65 77 6C 69 6E eol: newlin
029B10: 28 59 45 53 29 3B 0D 0A 20 20 20 20 20 20 20 20 (YES);..
029B20: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6E 3B return;
029B30: 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 74 6F 75 28 .. }.. itou(
029B40: 69 74 65 6D 2C 20 73 74 72 2C 20 36 29 3B 20 66 item, str, 6); f
029B50: 70 75 74 73 28 73 74 72 2C 20 20 73 74 64 6F 75 puts(str, stdou
029B60: 74 29 3B 0D 0A 20 20 66 70 75 74 73 28 22 20 69 t);.. fputs(" i
029B70: 73 20 61 6E 20 55 6E 6B 6E 6F 77 6E 20 49 74 65 s an Unknown Ite
029B80: 6D 20 43 6F 64 65 5C 6E 22 2C 20 73 74 64 6F 75 m Code\n", stdou
029B90: 74 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 73 65 65 38 t);.. }....see8
029BA0: 28 76 61 6C 75 65 2C 20 73 75 66 66 29 20 69 6E (value, suff) in
029BB0: 74 20 76 61 6C 75 65 2C 20 73 75 66 66 3B 20 7B t value, suff; {
029BC0: 09 2F 2A 20 64 69 73 70 6C 61 79 20 38 2D 62 69 ./* display 8-bi
029BD0: 74 73 20 2A 2F 0D 0A 20 20 63 68 61 72 20 73 74 ts */.. char st
029BE0: 72 5B 35 5D 3B 0D 0A 20 20 69 66 28 77 69 64 74 r[5];.. if(widt
029BF0: 68 20 3D 3D 20 30 20 26 26 20 69 74 65 6D 20 3C h == 0 && item <
029C00: 20 43 52 45 4C 29 20 7B 09 2F 2A 20 6E 65 65 64 CREL) {./* need
029C10: 20 6C 6F 63 20 63 74 72 20 70 72 65 66 20 2A 2F loc ctr pref */
029C20: 0D 0A 20 20 20 20 69 74 6F 78 28 6C 63 2C 20 73 .. itox(lc, s
029C30: 74 72 2C 20 35 29 3B 0D 0A 20 20 20 20 6F 75 74 tr, 5);.. out
029C40: 7A 28 73 74 72 29 3B 09 09 09 09 2F 2A 20 6F 75 z(str);..../* ou
029C50: 74 70 75 74 20 6C 6F 63 20 63 74 72 20 2A 2F 0D tput loc ctr */.
029C60: 0A 20 20 20 20 66 70 75 74 63 28 27 20 27 2C 20 . fputc(' ',
029C70: 73 74 64 6F 75 74 29 3B 09 09 09 2F 2A 20 6F 75 stdout);.../* ou
029C80: 74 70 75 74 20 73 70 61 63 65 72 20 2A 2F 0D 0A tput spacer */..
029C90: 20 20 20 20 7D 0D 0A 20 20 69 74 6F 78 28 76 61 }.. itox(va
029CA0: 6C 75 65 20 26 20 32 35 35 2C 20 73 74 72 2C 20 lue & 255, str,
029CB0: 33 29 3B 09 09 2F 2A 20 63 6F 6E 76 65 72 74 20 3);../* convert
029CC0: 74 6F 20 68 65 78 20 73 74 72 69 6E 67 20 2A 2F to hex string */
029CD0: 0D 0A 20 20 6F 75 74 7A 28 73 74 72 29 3B 09 09 .. outz(str);..
029CE0: 09 09 2F 2A 20 6F 75 74 70 75 74 20 68 65 78 20 ../* output hex
029CF0: 62 79 74 65 20 2A 2F 0D 0A 20 20 69 66 28 73 75 byte */.. if(su
029D00: 0D 0A 2F 2A 0D 0A 2A 2A 20 6D 65 73 73 2E 63 20 ../*..** mess.c
029D10: 2D 2D 20 6D 65 73 73 61 67 65 20 66 75 6E 63 74 -- message funct
029D20: 69 6F 6E 73 0D 0A 2A 2F 0D 0A 23 69 6E 63 6C 75 ions..*/..#inclu
029D30: 64 65 20 3C 73 74 64 69 6F 2E 68 3E 0D 0A 23 64 de <stdio.h>..#d
029D40: 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 0D 0A efine NOCCARGC..
029D50: 70 75 74 73 32 28 73 74 72 31 2C 20 73 74 72 32 puts2(str1, str2
029D60: 29 20 63 68 61 72 20 2A 73 74 72 31 2C 20 2A 73 ) char *str1, *s
029D70: 74 72 32 3B 20 7B 0D 0A 20 20 66 70 75 74 73 28 tr2; {.. fputs(
029D80: 73 74 72 31 2C 20 73 74 64 6F 75 74 29 3B 0D 0A str1, stdout);..
029D90: 20 20 70 75 74 73 28 73 74 72 32 29 3B 0D 0A 20 puts(str2);..
029DA0: 20 7D 0D 0A 63 61 6E 74 28 73 74 72 29 20 63 68 }..cant(str) ch
029DB0: 61 72 20 2A 73 74 72 3B 20 7B 0D 0A 20 20 65 72 ar *str; {.. er
029DC0: 72 6F 72 32 28 73 74 72 2C 20 22 20 2D 20 43 61 ror2(str, " - Ca
029DD0: 6E 27 74 20 4F 70 65 6E 22 29 3B 0D 0A 20 20 7D n't Open");.. }
029DE0: 0D 0A 65 72 72 6F 72 32 28 73 74 72 31 2C 20 73 ..error2(str1, s
029DF0: 74 72 32 29 20 63 68 61 72 20 2A 73 74 72 31 2C tr2) char *str1,
029E00: 20 2A 73 74 72 32 3B 20 7B 0D 0A 20 20 66 70 75 *str2; {.. fpu
029E10: 74 73 28 73 74 72 31 2C 20 73 74 64 6F 75 74 29 ts(str1, stdout)
029E20: 3B 0D 0A 20 20 65 72 72 6F 72 28 73 74 72 32 29 ;.. error(str2)
029E30: 3B 0D 0A 20 20 7D 0D 0A 65 72 72 6F 72 28 73 74 ;.. }..error(st
029E40: 72 29 20 63 68 61 72 20 2A 73 74 72 3B 20 7B 0D r) char *str; {.
029E50: 0A 20 20 70 75 74 73 28 73 74 72 29 3B 0D 0A 20 . puts(str);..
029E60: 20 61 62 6F 72 74 28 37 29 3B 0D 0A 20 20 7D 0D abort(7);.. }.
029E70: 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
029E80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029E90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029EA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029EB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029EC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029ED0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029EE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029EF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029F00: 66 66 29 20 66 70 75 74 63 28 73 75 66 66 2C 20 ff) fputc(suff,
029F10: 73 74 64 6F 75 74 29 3B 09 09 2F 2A 20 6F 75 74 stdout);../* out
029F20: 70 75 74 20 73 75 66 66 69 78 3F 20 2A 2F 0D 0A put suffix? */..
029F30: 20 20 2B 2B 77 69 64 74 68 3B 09 09 09 09 2F 2A ++width;..../*
029F40: 20 62 75 6D 70 20 6C 69 6E 65 20 77 69 64 74 68 bump line width
029F50: 20 2A 2F 0D 0A 20 20 7D 0D 0A 0D 0A 73 65 65 31 */.. }....see1
029F60: 36 28 29 20 7B 09 09 09 09 2F 2A 20 64 69 73 70 6() {..../* disp
029F70: 6C 61 79 20 66 69 65 6C 64 20 2A 2F 0D 0A 20 20 lay field */..
029F80: 73 65 65 38 28 66 69 65 6C 64 20 3E 3E 20 38 2C see8(field >> 8,
029F90: 20 30 29 3B 09 09 09 2F 2A 20 64 69 73 70 6C 61 0);.../* displa
029FA0: 79 20 68 69 67 68 20 62 79 74 65 20 20 2A 2F 0D y high byte */.
029FB0: 0A 20 20 73 65 65 38 28 66 69 65 6C 64 2C 20 78 . see8(field, x
029FC0: 74 79 70 65 28 29 29 3B 09 09 09 2F 2A 20 64 69 type());.../* di
029FD0: 73 70 6C 61 79 20 6C 6F 77 20 62 79 74 65 20 26 splay low byte &
029FE0: 20 74 79 70 65 20 2A 2F 0D 0A 20 20 66 70 75 74 type */.. fput
029FF0: 63 28 27 20 27 2C 20 73 74 64 6F 75 74 29 3B 09 c(' ', stdout);.
02A000: 09 09 2F 2A 20 6F 75 74 70 75 74 20 73 70 61 63 ../* output spac
02A010: 65 72 20 2A 2F 0D 0A 20 20 7D 0D 0A 0D 0A 73 65 er */.. }....se
02A020: 65 6E 61 6D 28 70 72 65 66 2C 20 76 61 6C 29 20 enam(pref, val)
02A030: 63 68 61 72 20 2A 70 72 65 66 3B 20 69 6E 74 20 char *pref; int
02A040: 76 61 6C 3B 20 7B 2F 2A 20 64 69 73 70 6C 61 79 val; {/* display
02A050: 20 73 79 6D 62 6F 6C 20 2A 2F 0D 0A 20 20 6E 65 symbol */.. ne
02A060: 77 6C 69 6E 28 59 45 53 29 3B 0D 0A 20 20 77 69 wlin(YES);.. wi
02A070: 64 74 68 20 3D 20 31 3B 09 09 09 09 2F 2A 20 61 dth = 1;..../* a
02A080: 76 6F 69 64 20 61 64 64 72 65 73 73 20 70 72 65 void address pre
02A090: 66 69 78 20 2A 2F 0D 0A 20 20 66 70 75 74 73 28 fix */.. fputs(
02A0A0: 70 72 65 66 2C 20 20 20 20 73 74 64 6F 75 74 29 pref, stdout)
02A0B0: 3B 0D 0A 20 20 69 66 28 76 61 6C 29 20 73 65 65 ;.. if(val) see
02A0C0: 31 36 28 29 3B 09 09 09 2F 2A 20 6F 75 74 70 75 16();.../* outpu
02A0D0: 74 20 61 20 76 61 6C 75 65 20 2A 2F 0D 0A 20 20 t a value */..
02A0E0: 66 70 75 74 73 28 73 79 6D 62 6F 6C 2C 20 20 73 fputs(symbol, s
02A0F0: 74 64 6F 75 74 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A tdout);.. }....
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: 78 74 79 70 65 28 29 20 7B 0D 0A 20 20 73 77 69 xtype() {.. swi
02A310: 74 63 68 28 74 79 70 65 29 20 7B 0D 0A 20 20 20 tch(type) {..
02A320: 20 63 61 73 65 20 20 20 41 42 53 3A 20 72 65 74 case ABS: ret
02A330: 75 72 6E 28 27 20 27 29 3B 0D 0A 20 20 20 20 63 urn(' ');.. c
02A340: 61 73 65 20 20 50 52 45 4C 3A 20 72 65 74 75 72 ase PREL: retur
02A350: 6E 28 27 5C 27 27 29 3B 0D 0A 20 20 20 20 63 61 n('\'');.. ca
02A360: 73 65 20 20 44 52 45 4C 3A 20 72 65 74 75 72 6E se DREL: return
02A370: 28 27 5C 22 27 29 3B 0D 0A 20 20 20 20 63 61 73 ('\"');.. cas
02A380: 65 20 20 43 52 45 4C 3A 20 72 65 74 75 72 6E 28 e CREL: return(
02A390: 27 7E 27 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 '~');.. case
02A3A0: 58 50 4F 46 46 3A 20 72 65 74 75 72 6E 28 27 2B XPOFF: return('+
02A3B0: 27 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 58 4D ');.. case XM
02A3C0: 4F 46 46 3A 20 72 65 74 75 72 6E 28 27 2D 27 29 OFF: return('-')
02A3D0: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 ;.. }.. retu
02A3E0: 72 6E 28 27 3F 27 29 3B 0D 0A 20 20 7D 0D 0A 0D rn('?');.. }...
02A3F0: 0A 6E 65 77 6C 69 6E 28 6E 6C 29 20 69 6E 74 20 .newlin(nl) int
02A400: 6E 6C 3B 20 7B 09 09 09 2F 2A 20 64 65 63 69 64 nl; {.../* decid
02A410: 65 20 61 62 6F 75 74 20 6E 65 77 20 6C 69 6E 65 e about new line
02A420: 20 2A 2F 0D 0A 20 20 69 66 28 77 69 64 74 68 20 */.. if(width
02A430: 3E 20 31 35 20 7C 7C 20 28 6E 6C 20 26 26 20 77 > 15 || (nl && w
02A440: 69 64 74 68 29 29 20 7B 0D 0A 20 20 20 20 66 70 idth)) {.. fp
02A450: 75 74 63 28 27 5C 6E 27 2C 20 73 74 64 6F 75 74 utc('\n', stdout
02A460: 29 3B 0D 0A 20 20 20 20 77 69 64 74 68 20 3D 20 );.. width =
02A470: 30 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0;.. }.. }..
02A480: 0D 0A 6F 75 74 7A 28 73 74 72 29 20 63 68 61 72 ..outz(str) char
02A490: 20 2A 73 74 72 3B 20 7B 09 09 09 2F 2A 20 7A 65 *str; {.../* ze
02A4A0: 72 6F 20 66 69 6C 6C 20 61 6E 64 20 6F 75 74 70 ro fill and outp
02A4B0: 75 74 20 73 74 72 20 2A 2F 0D 0A 20 20 63 68 61 ut str */.. cha
02A4C0: 72 20 2A 63 70 3B 0D 0A 20 20 63 70 20 3D 20 73 r *cp;.. cp = s
02A4D0: 74 72 3B 0D 0A 20 20 77 68 69 6C 65 28 2A 63 70 tr;.. while(*cp
02A4E0: 20 3D 3D 20 27 20 27 29 20 2A 63 70 2B 2B 20 3D == ' ') *cp++ =
02A4F0: 20 27 30 27 3B 09 2F 2A 20 73 75 70 70 6C 79 20 '0';./* supply
02A500: 2F 2A 0D 0A 2A 2A 20 73 63 61 6E 6E 69 6E 67 20 /*..** scanning
02A510: 66 75 6E 63 74 69 6F 6E 73 0D 0A 2A 2F 0D 0A 23 functions..*/..#
02A520: 69 6E 63 6C 75 64 65 20 3C 73 74 64 69 6F 2E 68 include <stdio.h
02A530: 3E 0D 0A 23 69 6E 63 6C 75 64 65 20 22 6D 61 63 >..#include "mac
02A540: 2E 68 22 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 .h"..#define NOC
02A550: 43 41 52 47 43 0D 0A 0D 0A 61 74 65 6E 64 28 63 CARGC....atend(c
02A560: 68 29 20 69 6E 74 20 63 68 3B 20 7B 09 09 09 2F h) int ch; {.../
02A570: 2A 20 69 73 20 63 68 20 61 74 20 65 6E 64 20 6F * is ch at end o
02A580: 66 20 6C 69 6E 65 3F 20 2A 2F 0D 0A 20 20 73 77 f line? */.. sw
02A590: 69 74 63 68 28 63 68 29 20 7B 0D 0A 20 20 20 20 itch(ch) {..
02A5A0: 63 61 73 65 20 43 4F 4D 4D 45 4E 54 3A 20 63 61 case COMMENT: ca
02A5B0: 73 65 20 4E 55 4C 4C 3A 20 63 61 73 65 20 27 5C se NULL: case '\
02A5C0: 6E 27 3A 20 72 65 74 75 72 6E 20 28 59 45 53 29 n': return (YES)
02A5D0: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 ;.. }.. retu
02A5E0: 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20 7D 0D 0A 0D rn (NO);.. }...
02A5F0: 0A 66 6C 64 63 6D 70 28 73 2C 20 74 29 20 63 68 .fldcmp(s, t) ch
02A600: 61 72 20 2A 73 2C 20 2A 74 3B 20 7B 09 09 2F 2A ar *s, *t; {../*
02A610: 20 63 6F 6D 70 61 72 65 20 66 69 65 6C 64 73 20 compare fields
02A620: 69 6E 20 61 20 6C 69 6E 65 20 2A 2F 0D 0A 20 20 in a line */..
02A630: 77 68 69 6C 65 28 6C 65 78 6F 72 64 65 72 28 2A while(lexorder(*
02A640: 73 2C 20 2A 74 29 20 3D 3D 20 30 29 20 7B 0D 0A s, *t) == 0) {..
02A650: 20 20 20 20 69 66 28 21 69 73 67 72 61 70 68 28 if(!isgraph(
02A660: 2A 73 29 29 20 72 65 74 75 72 6E 20 28 30 29 3B *s)) return (0);
02A670: 0D 0A 20 20 20 20 2B 2B 73 3B 20 2B 2B 74 3B 0D .. ++s; ++t;.
02A680: 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 28 69 73 . }.. if((is
02A690: 73 70 61 63 65 28 2A 73 29 20 7C 7C 20 61 74 65 space(*s) || ate
02A6A0: 6E 64 28 2A 73 29 29 20 26 26 0D 0A 20 20 20 20 nd(*s)) &&..
02A6B0: 20 28 69 73 73 70 61 63 65 28 2A 74 29 20 7C 7C (isspace(*t) ||
02A6C0: 20 61 74 65 6E 64 28 2A 74 29 29 29 20 72 65 74 atend(*t))) ret
02A6D0: 75 72 6E 20 28 30 29 3B 0D 0A 20 20 72 65 74 75 urn (0);.. retu
02A6E0: 72 6E 20 28 2A 73 20 2D 20 2A 74 29 3B 0D 0A 20 rn (*s - *t);..
02A6F0: 20 7D 0D 0A 0D 0A 73 6B 69 70 28 6E 2C 20 73 74 }....skip(n, st
02A700: 6C 65 61 64 69 6E 67 20 7A 65 72 6F 65 73 20 2A leading zeroes *
02A710: 2F 0D 0A 20 20 66 70 75 74 73 28 73 74 72 2C 20 /.. fputs(str,
02A720: 20 73 74 64 6F 75 74 29 3B 0D 0A 20 20 7D 0D 0A stdout);.. }..
02A730: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02A740: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02A750: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02A760: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02A770: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02A780: 65 20 20 43 52 45 4C 3A 20 72 65 74 75 72 6E 28 e CREL: return(
02A790: 27 7E 27 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 '~');.. case
02A7A0: 58 50 4F 46 46 3A 20 72 65 74 75 72 6E 28 27 2B XPOFF: return('+
02A7B0: 27 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 58 4D ');.. case XM
02A7C0: 4F 46 46 3A 20 72 65 74 75 72 6E 28 27 2D 27 29 OFF: return('-')
02A7D0: 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 ;.. }.. retu
02A7E0: 72 6E 28 27 3F 27 29 3B 0D 0A 20 20 7D 0D 0A 0D rn('?');.. }...
02A7F0: 0A 6E 65 77 6C 69 6E 28 6E 6C 29 20 69 6E 74 20 .newlin(nl) int
02A800: 6E 6C 3B 20 7B 09 09 09 2F 2A 20 64 65 63 69 64 nl; {.../* decid
02A810: 65 20 61 62 6F 75 74 20 6E 65 77 20 6C 69 6E 65 e about new line
02A820: 20 2A 2F 0D 0A 20 20 69 66 28 77 69 64 74 68 20 */.. if(width
02A830: 3E 20 31 35 20 7C 7C 20 28 6E 6C 20 26 26 20 77 > 15 || (nl && w
02A840: 69 64 74 68 29 29 20 7B 0D 0A 20 20 20 20 66 70 idth)) {.. fp
02A850: 75 74 63 28 27 5C 6E 27 2C 20 73 74 64 6F 75 74 utc('\n', stdout
02A860: 29 3B 0D 0A 20 20 20 20 77 69 64 74 68 20 3D 20 );.. width =
02A870: 30 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0;.. }.. }..
02A880: 0D 0A 6F 75 74 7A 28 73 74 72 29 20 63 68 61 72 ..outz(str) char
02A890: 20 2A 73 74 72 3B 20 7B 09 09 09 2F 2A 20 7A 65 *str; {.../* ze
02A8A0: 72 6F 20 66 69 6C 6C 20 61 6E 64 20 6F 75 74 70 ro fill and outp
02A8B0: 75 74 20 73 74 72 20 2A 2F 0D 0A 20 20 63 68 61 ut str */.. cha
02A8C0: 72 20 2A 63 70 3B 0D 0A 20 20 63 70 20 3D 20 73 r *cp;.. cp = s
02A8D0: 74 72 3B 0D 0A 20 20 77 68 69 6C 65 28 2A 63 70 tr;.. while(*cp
02A8E0: 20 3D 3D 20 27 20 27 29 20 2A 63 70 2B 2B 20 3D == ' ') *cp++ =
02A8F0: 20 27 30 27 3B 09 2F 2A 20 73 75 70 70 6C 79 20 '0';./* supply
02A900: 72 29 20 69 6E 74 20 6E 3B 20 63 68 61 72 20 73 r) int n; char s
02A910: 74 72 5B 5D 3B 20 7B 09 2F 2A 20 66 69 6E 64 20 tr[]; {./* find
02A920: 6E 74 68 20 6E 6F 6E 2D 62 6C 61 6E 6B 20 66 69 nth non-blank fi
02A930: 65 6C 64 20 69 6E 20 73 74 72 20 2A 2F 0D 0A 20 eld in str */..
02A940: 20 63 68 61 72 20 2A 63 70 3B 20 63 70 20 3D 20 char *cp; cp =
02A950: 73 74 72 3B 0D 0A 20 20 77 68 69 6C 65 28 69 73 str;.. while(is
02A960: 73 70 61 63 65 28 2A 63 70 29 29 20 2B 2B 63 70 space(*cp)) ++cp
02A970: 3B 0D 0A 20 20 77 68 69 6C 65 28 2D 2D 6E 29 20 ;.. while(--n)
02A980: 7B 0D 0A 20 20 20 20 77 68 69 6C 65 28 69 73 67 {.. while(isg
02A990: 72 61 70 68 28 2A 63 70 29 29 20 2B 2B 63 70 3B raph(*cp)) ++cp;
02A9A0: 0D 0A 20 20 20 20 77 68 69 6C 65 28 69 73 73 70 .. while(issp
02A9B0: 61 63 65 28 2A 63 70 29 29 20 2B 2B 63 70 3B 0D ace(*cp)) ++cp;.
02A9C0: 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E . }.. return
02A9D0: 20 28 63 70 29 3B 0D 0A 20 20 7D 0D 0A 1A 1A 1A (cp);.. }.....
02A9E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02A9F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02AA00: 61 72 20 2A 73 2C 20 2A 74 3B 20 7B 09 09 2F 2A ar *s, *t; {../*
02AA10: 20 63 6F 6D 70 61 72 65 20 66 69 65 6C 64 73 20 compare fields
02AA20: 69 6E 20 61 20 6C 69 6E 65 20 2A 2F 0D 0A 20 20 in a line */..
02AA30: 77 68 69 6C 65 28 6C 65 78 6F 72 64 65 72 28 2A while(lexorder(*
02AA40: 73 2C 20 2A 74 29 20 3D 3D 20 30 29 20 7B 0D 0A s, *t) == 0) {..
02AA50: 20 20 20 20 69 66 28 21 69 73 67 72 61 70 68 28 if(!isgraph(
02AA60: 2A 73 29 29 20 72 65 74 75 72 6E 20 28 30 29 3B *s)) return (0);
02AA70: 0D 0A 20 20 20 20 2B 2B 73 3B 20 2B 2B 74 3B 0D .. ++s; ++t;.
02AA80: 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 28 69 73 . }.. if((is
02AA90: 73 70 61 63 65 28 2A 73 29 20 7C 7C 20 61 74 65 space(*s) || ate
02AAA0: 6E 64 28 2A 73 29 29 20 26 26 0D 0A 20 20 20 20 nd(*s)) &&..
02AAB0: 20 28 69 73 73 70 61 63 65 28 2A 74 29 20 7C 7C (isspace(*t) ||
02AAC0: 20 61 74 65 6E 64 28 2A 74 29 29 29 20 72 65 74 atend(*t))) ret
02AAD0: 75 72 6E 20 28 30 29 3B 0D 0A 20 20 72 65 74 75 urn (0);.. retu
02AAE0: 72 6E 20 28 2A 73 20 2D 20 2A 74 29 3B 0D 0A 20 rn (*s - *t);..
02AAF0: 20 7D 0D 0A 0D 0A 73 6B 69 70 28 6E 2C 20 73 74 }....skip(n, st
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: 23 69 6E 63 6C 75 64 65 20 3C 73 74 64 69 6F 2E #include <stdio.
02AE10: 68 3E 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 h>..#define NOCC
02AE20: 41 52 47 43 0D 0A 2F 2A 0D 0A 2A 2A 20 77 61 69 ARGC../*..** wai
02AE30: 74 2E 63 20 2D 2D 20 77 61 69 74 20 66 6F 72 20 t.c -- wait for
02AE40: 6F 70 65 72 61 74 6F 72 20 72 65 73 70 6F 6E 73 operator respons
02AE50: 65 0D 0A 2A 2F 0D 0A 77 61 69 74 28 29 20 7B 09 e..*/..wait() {.
02AE60: 09 2F 2A 20 77 61 69 74 20 66 6F 72 20 75 73 65 ./* wait for use
02AE70: 72 20 62 65 66 6F 72 65 20 63 6C 65 61 72 69 6E r before clearin
02AE80: 67 20 74 68 65 20 6D 65 73 73 61 67 65 20 2A 2F g the message */
02AE90: 0D 0A 20 20 66 70 75 74 73 28 22 5C 6E 57 61 69 .. fputs("\nWai
02AEA0: 74 69 6E 67 2E 2E 2E 22 2C 20 73 74 64 65 72 72 ting...", stderr
02AEB0: 29 3B 0D 0A 20 20 66 67 65 74 63 28 73 74 64 65 );.. fgetc(stde
02AEC0: 72 72 29 3B 0D 0A 20 20 7D 0D 0A 1A 1A 1A 1A 1A rr);.. }.......
02AED0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02AEE0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02AEF0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02AF00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AF10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AF20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AF30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AF40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AF50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AF60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AF70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AF80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AF90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AFA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AFB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AFC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AFD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AFE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AFF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B010: 20 20 5F 5F 20 20 20 20 20 20 20 20 7C 20 20 20 __ |
02B020: 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 ..**
02B030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 5F |_
02B040: 5F 7C 2E 2E 2E 30 30 20 20 76 6C 65 6E 20 20 6F _|...00 vlen o
02B050: 70 74 72 20 20 20 20 20 66 6D 74 20 20 20 20 6F ptr fmt o
02B060: 62 6A 2E 2E 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 bj.....**
02B070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5F _
02B090: 5F 20 20 20 5F 5F 5F 5F 5F 20 20 20 5F 5F 5F 5F _ _____ ____
02B0A0: 5F 20 20 20 5F 5F 0D 0A 2A 2A 20 20 20 20 20 66 _ __..** f
02B0B0: 6F 72 6D 61 74 20 62 69 74 73 20 28 3C 2D 29 20 ormat bits (<-)
02B0C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C |
02B0D0: 5F 5F 7C 20 7C 5F 5F 7C 5F 5F 7C 20 7C 5F 5F 7C __| |__|__| |__|
02B0E0: 5F 5F 7C 20 7C 5F 5F 7C 2E 2E 2E 0D 0A 2A 2A 20 __| |__|.....**
02B0F0: 20 20 20 20 20 20 33 2D 62 69 74 20 69 6E 73 74 3-bit inst
02B100: 72 20 6C 65 6E 67 74 68 20 28 2D 31 29 20 20 20 r length (-1)
02B110: 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D 0A 2A |..*
02B120: 2A 20 20 20 20 20 20 20 66 69 65 6C 64 20 74 79 * field ty
02B130: 70 65 73 20 20 20 20 20 20 20 20 20 20 20 20 20 pes
02B140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 0D V.
02B150: 0A 2A 2A 20 20 20 20 20 20 20 20 20 30 20 3D 20 .** 0 =
02B160: 6F 62 6A 20 62 79 74 65 20 20 20 20 20 20 20 20 obj byte
02B170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B180: 6F 70 65 72 61 6E 64 20 70 61 74 74 65 72 6E 0D operand pattern.
02B190: 0A 2A 2A 20 20 20 20 20 20 20 30 30 31 20 3D 20 .** 001 =
02B1A0: 38 2D 62 69 74 20 65 78 70 72 20 20 20 20 20 20 8-bit expr
02B1B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B1C0: 20 5F 5F 0D 0A 2A 2A 20 20 20 20 20 20 20 30 31 __..** 01
02B1D0: 31 20 3D 20 38 2D 62 69 74 20 70 63 20 72 65 6C 1 = 8-bit pc rel
02B1E0: 20 65 78 70 72 20 20 20 20 20 20 20 20 20 20 20 expr
02B1F0: 20 20 20 20 7C 5F 5F 7C 2E 2E 2E 30 30 0D 0A 2A |__|...00..*
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: 2A 20 20 20 20 20 20 20 31 30 31 20 3D 20 31 36 * 101 = 16
02B410: 2D 62 69 74 20 65 78 70 72 0D 0A 2A 2A 20 20 20 -bit expr..**
02B420: 20 20 20 20 31 31 31 20 3D 20 31 36 2D 62 69 74 111 = 16-bit
02B430: 20 70 63 20 72 65 6C 20 65 78 70 72 0D 0A 2A 2A pc rel expr..**
02B440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B450: 20 20 20 20 20 20 20 20 20 20 0D 0A 2A 2F 0D 0A ..*/..
02B460: 23 69 6E 63 6C 75 64 65 20 3C 73 74 64 69 6F 2E #include <stdio.
02B470: 68 3E 0D 0A 23 69 6E 63 6C 75 64 65 20 22 6D 61 h>..#include "ma
02B480: 63 2E 68 22 09 2F 2A 20 6D 75 73 74 20 62 65 20 c.h"./* must be
02B490: 69 6E 63 6C 75 64 65 64 20 66 69 72 73 74 20 2A included first *
02B4A0: 2F 0D 0A 2F 2A 0D 0A 23 64 65 66 69 6E 65 20 4E /../*..#define N
02B4B0: 4F 43 43 41 52 47 43 0D 0A 2A 2F 0D 0A 69 6E 74 OCCARGC..*/..int
02B4C0: 0D 0A 20 20 6F 70 61 64 6A 2C 09 09 09 2F 2A 20 .. opadj,.../*
02B4D0: 6F 70 65 72 61 74 69 6F 6E 20 63 6F 64 65 20 61 operation code a
02B4E0: 64 6A 75 73 74 6D 65 6E 74 20 2A 2F 0D 0A 20 20 djustment */..
02B4F0: 68 61 73 68 76 61 6C 3B 09 09 09 2F 2A 20 67 6C hashval;.../* gl
02B500: 6F 62 61 6C 20 68 61 73 68 20 76 61 6C 75 65 20 obal hash value
02B510: 66 6F 72 20 73 70 65 65 64 20 2A 2F 0D 0A 63 68 for speed */..ch
02B520: 61 72 0D 0A 20 20 65 78 70 62 75 66 5B 4D 41 58 ar.. expbuf[MAX
02B530: 4C 49 4E 45 5D 3B 09 09 2F 2A 20 62 75 66 66 65 LINE];../* buffe
02B540: 72 20 66 6F 72 20 6F 70 65 72 61 6E 64 20 65 78 r for operand ex
02B550: 70 72 65 73 73 69 6F 6E 73 20 2A 2F 0D 0A 0D 0A pressions */....
02B560: 65 78 74 65 72 6E 20 69 6E 74 0D 0A 20 20 6D 69 extern int.. mi
02B570: 74 61 62 6C 65 2C 09 09 09 2F 2A 20 6D 61 63 68 table,.../* mach
02B580: 69 6E 65 20 69 6E 73 74 72 75 63 74 69 6F 6E 20 ine instruction
02B590: 74 61 62 6C 65 20 28 73 69 7A 65 29 20 2A 2F 0D table (size) */.
02B5A0: 0A 20 20 6D 69 74 6E 64 78 5B 5D 2C 09 09 09 2F . mitndx[],.../
02B5B0: 2A 20 6D 69 74 20 69 6E 64 69 63 65 73 20 28 68 * mit indices (h
02B5C0: 61 73 68 20 2D 3E 20 77 68 69 63 68 29 20 2A 2F ash -> which) */
02B5D0: 0D 0A 20 20 6D 69 74 6E 78 74 5B 5D 2C 09 09 09 .. mitnxt[],...
02B5E0: 2F 2A 20 6D 69 74 20 73 79 6E 6F 6E 79 6D 20 63 /* mit synonym c
02B5F0: 68 61 69 6E 20 2A 2F 0D 0A 20 20 6D 69 74 70 74 hain */.. mitpt
02B600: 2F 2A 0D 0A 2A 2A 20 69 6E 74 65 67 65 72 20 6D /*..** integer m
02B610: 61 6E 69 70 75 6C 61 74 69 6F 6E 0D 0A 2A 2F 0D anipulation..*/.
02B620: 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 .#define NOCCARG
02B630: 43 0D 0A 67 65 74 69 6E 74 28 61 29 20 69 6E 74 C..getint(a) int
02B640: 20 2A 61 3B 20 7B 72 65 74 75 72 6E 20 28 2A 61 *a; {return (*a
02B650: 29 3B 7D 09 2F 2A 20 67 65 74 20 69 6E 74 65 67 );}./* get integ
02B660: 65 72 20 66 72 6F 6D 20 61 64 64 72 65 73 73 20 er from address
02B670: 61 20 2A 2F 0D 0A 70 75 74 69 6E 74 28 61 2C 20 a */..putint(a,
02B680: 69 29 20 69 6E 74 20 2A 61 2C 20 69 3B 20 7B 2A i) int *a, i; {*
02B690: 61 20 3D 20 69 3B 7D 09 2F 2A 20 70 75 74 20 69 a = i;}./* put i
02B6A0: 6E 74 65 67 65 72 20 69 20 61 74 20 61 64 64 72 nteger i at addr
02B6B0: 65 73 73 20 61 20 2A 2F 0D 0A 1A 1A 1A 1A 1A 1A ess a */........
02B6C0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02B6D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02B6E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02B6F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02B700: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B710: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B720: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B730: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B740: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B750: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B7A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B7B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B7C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B7D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B7E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B7F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02B800: 72 5B 5D 3B 09 09 09 2F 2A 20 6D 6E 65 6D 6F 6E r[];.../* mnemon
02B810: 69 63 20 73 79 6E 74 61 78 20 70 74 72 73 20 2A ic syntax ptrs *
02B820: 2F 0D 0A 65 78 74 65 72 6E 20 63 68 61 72 0D 0A /..extern char..
02B830: 20 20 6D 69 74 62 75 66 5B 5D 3B 09 09 09 2F 2A mitbuf[];.../*
02B840: 20 69 6E 73 74 72 75 63 74 69 6F 6E 20 73 79 6E instruction syn
02B850: 74 61 78 20 62 75 66 66 65 72 20 2A 2F 0D 0A 0D tax buffer */...
02B860: 0A 65 78 74 65 72 6E 20 69 6E 74 0D 0A 20 20 6C .extern int.. l
02B870: 6F 6F 6B 73 3B 09 09 2F 2A 20 6E 75 6D 62 65 72 ooks;../* number
02B880: 20 6F 66 20 6C 6F 6F 6B 73 20 74 6F 20 66 69 6E of looks to fin
02B890: 64 20 69 74 20 2A 2F 0D 0A 0D 0A 68 61 73 68 28 d it */....hash(
02B8A0: 70 74 72 2C 20 63 6E 74 29 20 63 68 61 72 20 2A ptr, cnt) char *
02B8B0: 70 74 72 3B 20 69 6E 74 20 63 6E 74 3B 20 7B 09 ptr; int cnt; {.
02B8C0: 09 2F 2A 20 63 61 6C 63 75 6C 61 74 65 20 68 61 ./* calculate ha
02B8D0: 73 68 20 76 61 6C 75 65 20 2A 2F 0D 0A 20 20 68 sh value */.. h
02B8E0: 61 73 68 76 61 6C 20 3D 20 30 3B 0D 0A 20 20 77 ashval = 0;.. w
02B8F0: 68 69 6C 65 28 2A 70 74 72 20 3E 20 27 20 27 20 hile(*ptr > ' '
02B900: 26 26 20 61 74 65 6E 64 28 2A 70 74 72 29 20 3D && atend(*ptr) =
02B910: 3D 20 30 29 0D 0A 20 20 20 20 68 61 73 68 76 61 = 0).. hashva
02B920: 6C 20 3D 20 28 68 61 73 68 76 61 6C 20 3C 3C 20 l = (hashval <<
02B930: 31 29 20 2B 20 74 6F 75 70 70 65 72 28 2A 70 74 1) + toupper(*pt
02B940: 72 2B 2B 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 r++);.. return
02B950: 28 68 61 73 68 76 61 6C 20 25 20 63 6E 74 29 3B (hashval % cnt);
02B960: 0D 0A 20 20 7D 0D 0A 0D 0A 66 69 6E 64 28 69 6E .. }....find(in
02B970: 73 74 29 20 63 68 61 72 20 2A 69 6E 73 74 3B 20 st) char *inst;
02B980: 7B 09 09 09 2F 2A 20 73 65 61 72 63 68 20 66 6F {.../* search fo
02B990: 72 20 69 6E 73 74 72 20 69 6E 20 6D 69 74 20 2A r instr in mit *
02B9A0: 2F 0D 0A 20 20 63 68 61 72 20 2A 6D 69 74 3B 0D /.. char *mit;.
02B9B0: 0A 20 20 69 6E 74 20 68 2C 20 6E 64 78 3B 0D 0A . int h, ndx;..
02B9C0: 20 20 6C 6F 6F 6B 73 20 3D 20 30 3B 0D 0A 20 20 looks = 0;..
02B9D0: 6E 64 78 20 3D 20 6D 69 74 6E 64 78 5B 68 20 3D ndx = mitndx[h =
02B9E0: 20 68 61 73 68 28 69 6E 73 74 2C 20 4D 49 43 4F hash(inst, MICO
02B9F0: 55 4E 54 29 5D 3B 09 2F 2A 20 63 61 6C 63 20 68 UNT)];./* calc h
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: 61 73 68 20 69 6E 64 65 78 20 2A 2F 0D 0A 20 20 ash index */..
02BC10: 77 68 69 6C 65 28 6E 64 78 20 21 3D 20 45 4F 46 while(ndx != EOF
02BC20: 29 20 7B 0D 0A 20 20 20 20 2B 2B 6C 6F 6F 6B 73 ) {.. ++looks
02BC30: 3B 0D 0A 20 20 20 20 69 66 28 66 6C 64 63 6D 70 ;.. if(fldcmp
02BC40: 28 69 6E 73 74 2C 20 6D 69 74 20 3D 20 6D 69 74 (inst, mit = mit
02BC50: 70 74 72 5B 6E 64 78 5D 29 20 3D 3D 20 30 29 20 ptr[ndx]) == 0)
02BC60: 7B 09 2F 2A 20 6D 6E 65 6D 6F 6E 69 63 20 6D 61 {./* mnemonic ma
02BC70: 74 63 68 65 73 20 2A 2F 0D 0A 20 20 20 20 20 20 tches */..
02BC80: 69 6E 73 74 20 3D 20 73 6B 69 70 28 32 2C 20 69 inst = skip(2, i
02BC90: 6E 73 74 29 3B 09 09 09 2F 2A 20 69 6E 73 74 72 nst);.../* instr
02BCA0: 20 6F 70 65 72 61 6E 64 20 66 69 65 6C 64 20 2A operand field *
02BCB0: 2F 0D 0A 20 20 20 20 20 20 6D 69 74 20 2B 3D 20 /.. mit +=
02BCC0: 73 74 72 6C 65 6E 28 6D 69 74 29 20 2B 20 31 3B strlen(mit) + 1;
02BCD0: 09 09 09 2F 2A 20 66 69 72 73 74 20 76 61 72 69 .../* first vari
02BCE0: 61 6E 74 20 2A 2F 0D 0A 20 20 20 20 20 20 77 68 ant */.. wh
02BCF0: 69 6C 65 28 2A 6D 69 74 2B 2B 29 20 7B 09 09 09 ile(*mit++) {...
02BD00: 09 2F 2A 20 61 6E 6F 74 68 65 72 20 76 61 72 69 ./* another vari
02BD10: 61 6E 74 3F 20 2A 2F 0D 0A 20 20 20 20 20 20 20 ant? */..
02BD20: 20 2B 2B 6C 6F 6F 6B 73 3B 0D 0A 20 20 20 20 20 ++looks;..
02BD30: 20 20 20 69 66 28 6D 61 74 63 68 28 69 6E 73 74 if(match(inst
02BD40: 2C 20 67 65 74 69 6E 74 28 6D 69 74 29 29 29 20 , getint(mit)))
02BD50: 72 65 74 75 72 6E 20 28 6D 69 74 29 3B 0D 0A 20 return (mit);..
02BD60: 20 20 20 20 20 20 20 6D 69 74 20 2B 3D 20 2A 28 mit += *(
02BD70: 6D 69 74 20 2D 20 31 29 3B 09 09 09 2F 2A 20 6E mit - 1);.../* n
02BD80: 65 78 74 20 76 61 72 69 61 6E 74 20 2A 2F 0D 0A ext variant */..
02BD90: 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 }..
02BDA0: 20 72 65 74 75 72 6E 20 28 30 29 3B 0D 0A 20 20 return (0);..
02BDB0: 20 20 20 20 7D 0D 0A 20 20 20 20 69 66 28 28 68 }.. if((h
02BDC0: 20 3D 20 6D 69 74 6E 78 74 5B 68 5D 29 20 3D 3D = mitnxt[h]) ==
02BDD0: 20 45 4F 46 29 20 72 65 74 75 72 6E 20 28 30 29 EOF) return (0)
02BDE0: 3B 0D 0A 20 20 20 20 6E 64 78 20 3D 20 6D 69 74 ;.. ndx = mit
02BDF0: 6E 64 78 5B 68 5D 3B 0D 0A 20 20 20 20 7D 0D 0A ndx[h];.. }..
02BE00: 2F 2A 0D 0A 2A 2A 20 6D 69 74 2E 63 20 2D 2D 20 /*..** mit.c --
02BE10: 6D 61 63 68 69 6E 65 20 69 6E 73 74 72 75 63 74 machine instruct
02BE20: 69 6F 6E 20 74 61 62 6C 65 20 66 75 6E 63 74 69 ion table functi
02BE30: 6F 6E 73 0D 0A 2A 2A 0D 0A 2A 2A 20 20 20 20 20 ons..**..**
02BE40: 20 20 20 20 20 6D 69 74 6E 64 78 5B 5D 20 20 20 mitndx[]
02BE50: 20 20 6D 69 74 70 74 72 5B 5D 20 20 20 20 6D 69 mitptr[] mi
02BE60: 74 6E 78 74 5B 5D 0D 0A 2A 2A 20 20 20 20 20 20 tnxt[]..**
02BE70: 20 20 20 20 20 5F 5F 5F 5F 5F 20 20 20 20 20 20 _____
02BE80: 20 20 5F 5F 5F 5F 5F 20 20 20 20 20 20 20 5F 5F _____ __
02BE90: 5F 5F 5F 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 ___..**
02BEA0: 20 7C 5F 5F 7C 5F 5F 7C 20 20 20 20 20 20 7C 5F |__|__| |_
02BEB0: 5F 7C 5F 5F 7C 20 20 20 20 20 7C 5F 5F 7C 5F 5F _|__| |__|__
02BEC0: 7C 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 7C |..** |
02BED0: 5F 5F 7C 5F 5F 7C 20 20 20 20 20 20 7C 5F 5F 7C __|__| |__|
02BEE0: 5F 5F 7C 20 20 20 20 20 7C 5F 5F 7C 5F 5F 7C 3C __| |__|__|<
02BEF0: 2D 2B 0D 0A 2A 2A 20 68 61 73 68 20 2D 3E 20 20 -+..** hash ->
02BF00: 7C 5F 5F 7C 5F 5F 7C 20 20 2D 3E 20 20 7C 5F 5F |__|__| -> |__
02BF10: 7C 5F 5F 7C 20 20 20 20 20 7C 5F 5F 7C 5F 5F 7C |__| |__|__|
02BF20: 20 20 7C 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 |..**
02BF30: 20 7C 5F 5F 7C 5F 5F 7C 20 20 20 20 20 20 7C 5F |__|__| |_
02BF40: 5F 7C 5F 5F 7C 20 20 20 20 20 7C 5F 5F 7C 5F 5F _|__| |__|__
02BF50: 7C 2D 2D 2B 0D 0A 2A 2A 20 20 20 20 20 20 20 20 |--+..**
02BF60: 20 20 7C 5F 5F 7C 5F 5F 7C 20 20 20 20 20 20 7C |__|__| |
02BF70: 5F 5F 7C 5F 5F 7C 20 20 20 20 20 7C 5F 5F 7C 5F __|__| |__|_
02BF80: 5F 7C 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 _|..**
02BF90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02BFA0: 7C 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 |..**
02BFB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 V
02BFC0: 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 ..**
02BFD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6D 6E mn
02BFE0: 65 6D 6F 6E 69 63 20 20 20 76 61 72 69 61 6E 74 emonic variant
02BFF0: 2E 2E 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 .....**
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: 20 20 72 65 74 75 72 6E 20 28 30 29 3B 0D 0A 20 return (0);..
02C110: 20 7D 0D 0A 0D 0A 6D 61 74 63 68 28 69 6E 73 74 }....match(inst
02C120: 2C 20 6D 69 74 29 20 63 68 61 72 20 2A 69 6E 73 , mit) char *ins
02C130: 74 2C 20 2A 6D 69 74 3B 20 7B 09 09 2F 2A 20 6D t, *mit; {../* m
02C140: 61 74 63 68 20 6F 70 65 72 61 6E 64 73 20 74 6F atch operands to
02C150: 20 6D 69 74 20 2A 2F 0D 0A 20 20 63 68 61 72 20 mit */.. char
02C160: 2A 62 61 63 6B 75 70 2C 20 2A 65 78 70 3B 20 69 *backup, *exp; i
02C170: 6E 74 20 6E 65 73 74 3B 0D 0A 20 20 6F 70 61 64 nt nest;.. opad
02C180: 6A 20 3D 20 30 3B 0D 0A 20 20 62 61 63 6B 75 70 j = 0;.. backup
02C190: 20 3D 20 69 6E 73 74 3B 0D 0A 20 20 69 66 28 6D = inst;.. if(m
02C1A0: 69 74 20 3D 3D 20 30 29 20 7B 0D 0A 20 20 20 20 it == 0) {..
02C1B0: 69 66 28 61 74 65 6E 64 28 2A 69 6E 73 74 29 29 if(atend(*inst))
02C1C0: 20 72 65 74 75 72 6E 20 28 59 45 53 29 3B 0D 0A return (YES);..
02C1D0: 20 20 20 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B return (NO);
02C1E0: 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 78 70 20 3D .. }.. exp =
02C1F0: 20 65 78 70 62 75 66 3B 09 09 09 09 09 2F 2A 20 expbuf;...../*
02C200: 69 6E 69 74 20 65 78 70 72 20 62 75 66 66 65 72 init expr buffer
02C210: 20 2A 2F 0D 0A 20 20 77 68 69 6C 65 28 59 45 53 */.. while(YES
02C220: 29 20 7B 0D 0A 20 20 20 20 77 68 69 6C 65 28 69 ) {.. while(i
02C230: 73 73 70 61 63 65 28 2A 69 6E 73 74 29 29 20 2B sspace(*inst)) +
02C240: 2B 69 6E 73 74 3B 0D 0A 20 20 20 20 77 68 69 6C +inst;.. whil
02C250: 65 28 69 73 73 70 61 63 65 28 2A 6D 69 74 29 29 e(isspace(*mit))
02C260: 20 2B 2B 6D 69 74 3B 0D 0A 20 20 20 20 69 66 28 ++mit;.. if(
02C270: 61 74 65 6E 64 28 2A 69 6E 73 74 29 29 20 7B 0D atend(*inst)) {.
02C280: 0A 20 20 20 20 20 20 69 66 28 61 74 65 6E 64 28 . if(atend(
02C290: 2A 6D 69 74 29 20 7C 7C 20 2A 6D 69 74 20 3D 3D *mit) || *mit ==
02C2A0: 20 41 4E 4F 54 48 45 52 29 20 72 65 74 75 72 6E ANOTHER) return
02C2B0: 20 28 59 45 53 29 3B 0D 0A 20 20 20 20 20 20 67 (YES);.. g
02C2C0: 6F 74 6F 20 6E 65 78 74 3B 0D 0A 20 20 20 20 20 oto next;..
02C2D0: 20 7D 0D 0A 20 20 20 20 69 66 28 61 74 65 6E 64 }.. if(atend
02C2E0: 28 2A 6D 69 74 29 29 20 72 65 74 75 72 6E 20 28 (*mit)) return (
02C2F0: 4E 4F 29 3B 0D 0A 20 20 20 20 69 66 28 69 73 6C NO);.. if(isl
02C300: 2F 2A 0D 0A 2A 2A 20 72 65 71 2E 63 20 2D 2D 20 /*..** req.c --
02C310: 72 65 71 75 65 73 74 20 75 73 65 72 20 69 6E 70 request user inp
02C320: 75 74 0D 0A 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 ut..*/..#include
02C330: 20 3C 73 74 64 69 6F 2E 68 3E 0D 0A 0D 0A 72 65 <stdio.h>....re
02C340: 71 6E 62 72 28 70 72 6F 6D 70 74 2C 20 6E 62 72 qnbr(prompt, nbr
02C350: 29 20 63 68 61 72 20 70 72 6F 6D 70 74 5B 5D 3B ) char prompt[];
02C360: 20 69 6E 74 20 2A 6E 62 72 3B 20 7B 09 09 2F 2A int *nbr; {../*
02C370: 20 72 65 71 75 65 73 74 20 6E 75 6D 62 65 72 20 request number
02C380: 2A 2F 0D 0A 20 20 63 68 61 72 20 73 74 72 5B 32 */.. char str[2
02C390: 30 5D 3B 0D 0A 20 20 69 6E 74 20 73 7A 3B 0D 0A 0];.. int sz;..
02C3A0: 20 20 69 66 28 69 73 63 6F 6E 73 28 73 74 64 69 if(iscons(stdi
02C3B0: 6E 29 29 20 7B 0D 0A 20 20 20 20 70 75 74 73 28 n)) {.. puts(
02C3C0: 22 22 29 3B 0D 0A 20 20 20 20 66 70 75 74 73 28 "");.. fputs(
02C3D0: 70 72 6F 6D 70 74 2C 20 73 74 64 6F 75 74 29 3B prompt, stdout);
02C3E0: 0D 0A 20 20 20 20 7D 0D 0A 20 20 67 65 74 73 74 .. }.. getst
02C3F0: 72 28 73 74 72 2C 20 32 30 29 3B 0D 0A 20 20 69 r(str, 20);.. i
02C400: 66 28 28 73 7A 20 3D 20 75 74 6F 69 28 73 74 72 f((sz = utoi(str
02C410: 2C 20 6E 62 72 29 29 20 3C 20 30 20 7C 7C 20 73 , nbr)) < 0 || s
02C420: 74 72 5B 73 7A 5D 29 20 72 65 74 75 72 6E 20 28 tr[sz]) return (
02C430: 4E 4F 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 NO);.. return (
02C440: 59 45 53 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 72 65 YES);.. }....re
02C450: 71 73 74 72 28 70 72 6F 6D 70 74 2C 20 73 74 72 qstr(prompt, str
02C460: 2C 20 73 7A 29 20 63 68 61 72 20 70 72 6F 6D 70 , sz) char promp
02C470: 74 5B 5D 2C 20 2A 73 74 72 3B 20 69 6E 74 20 73 t[], *str; int s
02C480: 7A 3B 20 7B 09 2F 2A 20 72 65 71 75 65 73 74 20 z; {./* request
02C490: 73 74 72 69 6E 67 20 2A 2F 0D 0A 20 20 69 66 28 string */.. if(
02C4A0: 69 73 63 6F 6E 73 28 73 74 64 69 6E 29 29 20 7B iscons(stdin)) {
02C4B0: 0D 0A 20 20 20 20 70 75 74 73 28 22 22 29 3B 0D .. puts("");.
02C4C0: 0A 20 20 20 20 66 70 75 74 73 28 70 72 6F 6D 70 . fputs(promp
02C4D0: 74 2C 20 73 74 64 6F 75 74 29 3B 0D 0A 20 20 20 t, stdout);..
02C4E0: 20 7D 0D 0A 20 20 67 65 74 73 74 72 28 73 74 72 }.. getstr(str
02C4F0: 2C 20 73 7A 29 3B 0D 0A 20 20 72 65 74 75 72 6E , sz);.. return
02C500: 6F 77 65 72 28 2A 6D 69 74 29 29 20 7B 09 09 09 ower(*mit)) {...
02C510: 09 2F 2A 20 65 78 70 72 65 73 73 69 6F 6E 20 2A ./* expression *
02C520: 2F 0D 0A 20 20 20 20 20 20 2B 2B 6D 69 74 3B 09 /.. ++mit;.
02C530: 09 09 09 09 2F 2A 20 62 75 6D 70 20 70 61 73 74 ..../* bump past
02C540: 20 78 20 6F 72 20 79 20 2A 2F 0D 0A 20 20 20 20 x or y */..
02C550: 20 20 6E 65 73 74 20 3D 20 30 3B 0D 0A 20 20 20 nest = 0;..
02C560: 20 20 20 77 68 69 6C 65 28 21 61 74 65 6E 64 28 while(!atend(
02C570: 2A 69 6E 73 74 29 29 20 7B 09 09 09 2F 2A 20 62 *inst)) {.../* b
02C580: 79 70 61 73 73 20 65 78 70 72 65 73 73 69 6F 6E ypass expression
02C590: 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 69 66 28 */.. if(
02C5A0: 2A 69 6E 73 74 20 3D 3D 20 27 2C 27 29 20 62 72 *inst == ',') br
02C5B0: 65 61 6B 3B 0D 0A 20 20 20 20 20 20 20 20 69 66 eak;.. if
02C5C0: 28 2A 69 6E 73 74 20 3D 3D 20 27 29 27 20 26 26 (*inst == ')' &&
02C5D0: 20 6E 65 73 74 20 3D 3D 20 30 29 20 62 72 65 61 nest == 0) brea
02C5E0: 6B 3B 0D 0A 20 20 20 20 20 20 20 20 73 77 69 74 k;.. swit
02C5F0: 63 68 28 2A 69 6E 73 74 29 20 7B 0D 0A 20 20 20 ch(*inst) {..
02C600: 20 20 20 20 20 20 20 63 61 73 65 20 27 28 27 3A case '(':
02C610: 20 2B 2B 6E 65 73 74 3B 20 62 72 65 61 6B 3B 0D ++nest; break;.
02C620: 0A 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 . case
02C630: 27 29 27 3A 20 2D 2D 6E 65 73 74 3B 0D 0A 20 20 ')': --nest;..
02C640: 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 }..
02C650: 20 20 20 2A 65 78 70 2B 2B 20 3D 20 2A 69 6E 73 *exp++ = *ins
02C660: 74 2B 2B 3B 09 09 09 2F 2A 20 65 78 74 72 61 63 t++;.../* extrac
02C670: 74 20 65 78 70 72 65 73 73 69 6F 6E 73 20 2A 2F t expressions */
02C680: 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 .. }..
02C690: 20 20 20 2A 65 78 70 2B 2B 20 3D 20 27 2C 27 3B *exp++ = ',';
02C6A0: 20 2A 65 78 70 20 3D 20 4E 55 4C 4C 3B 09 09 2F *exp = NULL;../
02C6B0: 2A 20 74 65 72 6D 69 6E 61 74 65 20 65 78 70 72 * terminate expr
02C6C0: 65 73 73 69 6F 6E 20 2A 2F 0D 0A 20 20 20 20 20 ession */..
02C6D0: 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 continue;..
02C6E0: 20 20 7D 0D 0A 20 20 20 20 69 66 28 6C 65 78 6F }.. if(lexo
02C6F0: 72 64 65 72 28 2A 69 6E 73 74 2B 2B 2C 20 2A 6D rder(*inst++, *m
02C700: 20 28 2A 73 74 72 29 3B 09 09 09 2F 2A 20 6E 75 (*str);.../* nu
02C710: 6C 6C 20 6E 61 6D 65 20 72 65 74 75 72 6E 73 20 ll name returns
02C720: 66 61 6C 73 65 20 2A 2F 0D 0A 20 20 7D 0D 0A 0D false */.. }...
02C730: 0A 67 65 74 73 74 72 28 73 74 72 2C 20 73 7A 29 .getstr(str, sz)
02C740: 20 63 68 61 72 20 2A 73 74 72 3B 20 69 6E 74 20 char *str; int
02C750: 73 7A 3B 20 7B 09 2F 2A 20 67 65 74 20 73 74 72 sz; {./* get str
02C760: 69 6E 67 20 66 72 6F 6D 20 75 73 65 72 20 2A 2F ing from user */
02C770: 0D 0A 20 20 63 68 61 72 20 2A 63 70 3B 0D 0A 20 .. char *cp;..
02C780: 20 66 67 65 74 73 28 73 74 72 2C 20 73 7A 2C 20 fgets(str, sz,
02C790: 73 74 64 69 6E 29 3B 0D 0A 20 20 69 66 28 69 73 stdin);.. if(is
02C7A0: 63 6F 6E 73 28 73 74 64 69 6E 29 20 26 26 20 21 cons(stdin) && !
02C7B0: 69 73 63 6F 6E 73 28 73 74 64 6F 75 74 29 29 0D iscons(stdout)).
02C7C0: 0A 20 20 20 20 20 66 70 75 74 73 28 73 74 72 2C . fputs(str,
02C7D0: 20 73 74 64 6F 75 74 29 3B 09 09 2F 2A 20 65 63 stdout);../* ec
02C7E0: 68 6F 20 2A 2F 0D 0A 20 20 63 70 20 3D 20 73 74 ho */.. cp = st
02C7F0: 72 3B 0D 0A 20 20 77 68 69 6C 65 28 2A 63 70 29 r;.. while(*cp)
02C800: 20 7B 09 09 09 09 2F 2A 20 74 72 69 6D 20 63 74 {..../* trim ct
02C810: 6C 20 63 68 61 72 73 20 26 20 6D 61 6B 65 20 75 l chars & make u
02C820: 63 20 2A 2F 0D 0A 20 20 20 20 69 66 28 2A 63 70 c */.. if(*cp
02C830: 20 3D 3D 20 27 5C 6E 27 29 20 62 72 65 61 6B 3B == '\n') break;
02C840: 0D 0A 20 20 20 20 69 66 28 69 73 70 72 69 6E 74 .. if(isprint
02C850: 28 2A 73 74 72 20 3D 20 74 6F 75 70 70 65 72 28 (*str = toupper(
02C860: 2A 63 70 2B 2B 29 29 29 20 2B 2B 73 74 72 3B 0D *cp++))) ++str;.
02C870: 0A 20 20 20 20 7D 0D 0A 20 20 2A 73 74 72 20 3D . }.. *str =
02C880: 20 4E 55 4C 4C 3B 0D 0A 20 20 7D 0D 0A 1A 1A 1A NULL;.. }.....
02C890: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02C8A0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02C8B0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02C8C0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02C8D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02C8E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02C8F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02C900: 69 74 2B 2B 29 29 20 7B 0D 0A 20 20 20 20 20 20 it++)) {..
02C910: 6E 65 78 74 3A 0D 0A 20 20 20 20 20 20 77 68 69 next:.. whi
02C920: 6C 65 28 2A 6D 69 74 29 20 7B 0D 0A 20 20 20 20 le(*mit) {..
02C930: 20 20 20 20 69 66 28 2A 6D 69 74 20 3D 3D 20 41 if(*mit == A
02C940: 4E 4F 54 48 45 52 29 20 7B 09 09 2F 2A 20 65 6E NOTHER) {../* en
02C950: 64 20 6F 66 20 73 79 6E 74 61 78 20 66 6F 72 20 d of syntax for
02C960: 74 68 69 73 20 74 72 79 20 2A 2F 0D 0A 20 20 20 this try */..
02C970: 20 20 20 20 20 20 20 2B 2B 6F 70 61 64 6A 3B 09 ++opadj;.
02C980: 09 09 2F 2A 20 62 75 6D 70 20 6F 70 63 6F 64 65 ../* bump opcode
02C990: 20 61 64 6A 75 73 74 6D 65 6E 74 20 2A 2F 0D 0A adjustment */..
02C9A0: 20 20 20 20 20 20 20 20 20 20 2B 2B 6D 69 74 3B ++mit;
02C9B0: 20 69 6E 73 74 20 3D 20 62 61 63 6B 75 70 3B 09 inst = backup;.
02C9C0: 09 2F 2A 20 73 65 74 75 70 20 6E 65 78 74 20 74 ./* setup next t
02C9D0: 72 79 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 20 ry */..
02C9E0: 20 65 78 70 20 3D 20 65 78 70 62 75 66 3B 09 09 exp = expbuf;..
02C9F0: 09 2F 2A 20 72 65 73 65 74 20 65 78 70 72 20 62 ./* reset expr b
02CA00: 75 66 66 65 72 20 70 6F 69 6E 74 65 72 20 2A 2F uffer pointer */
02CA10: 0D 0A 20 20 20 20 20 20 20 20 20 20 62 72 65 61 .. brea
02CA20: 6B 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 7D 0D k;.. }.
02CA30: 0A 20 20 20 20 20 20 20 20 2B 2B 6D 69 74 3B 0D . ++mit;.
02CA40: 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 . }..
02CA50: 20 20 69 66 28 61 74 65 6E 64 28 2A 6D 69 74 29 if(atend(*mit)
02CA60: 29 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A ) return (NO);..
02CA70: 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A }.. }..
02CA80: 20 20 7D 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A }.............
02CA90: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02CAA0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02CAB0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02CAC0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02CAD0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02CAE0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02CAF0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
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: 2F 2A 0D 0A 2A 2A 20 72 65 6C 2E 63 20 2D 2D 20 /*..** rel.c --
02CD10: 63 6F 6D 6D 6F 6E 20 64 61 74 61 20 66 6F 72 20 common data for
02CD20: 52 45 4C 20 66 69 6C 65 20 70 72 6F 63 65 73 73 REL file process
02CD30: 69 6E 67 0D 0A 2A 2F 0D 0A 09 09 09 2F 2A 20 63 ing..*/...../* c
02CD40: 6F 6D 6D 6F 6E 20 76 61 72 69 61 62 6C 65 73 20 ommon variables
02CD50: 2A 2F 0D 0A 69 6E 74 0D 0A 20 69 6E 72 65 6C 2C */..int.. inrel,
02CD60: 09 09 09 2F 2A 20 66 69 6C 65 20 64 65 73 63 72 .../* file descr
02CD70: 69 70 74 6F 72 20 66 6F 72 20 69 6E 70 75 74 20 iptor for input
02CD80: 52 45 4C 20 66 69 6C 65 20 2A 2F 0D 0A 20 69 6E REL file */.. in
02CD90: 72 65 6D 20 3D 20 30 2C 09 09 2F 2A 20 72 65 6D rem = 0,../* rem
02CDA0: 61 69 6E 69 6E 67 20 62 69 74 73 20 69 6E 20 69 aining bits in i
02CDB0: 6E 70 75 74 20 63 68 75 6E 6B 20 2A 2F 0D 0A 20 nput chunk */..
02CDC0: 69 6E 63 68 75 6E 6B 2C 09 09 2F 2A 20 63 75 72 inchunk,../* cur
02CDD0: 72 65 6E 74 20 63 68 75 6E 6B 20 66 72 6F 6D 20 rent chunk from
02CDE0: 52 45 4C 20 66 69 6C 65 20 2A 2F 0D 0A 20 6F 75 REL file */.. ou
02CDF0: 74 72 65 6C 2C 09 09 2F 2A 20 66 69 6C 65 20 64 trel,../* file d
02CE00: 65 73 63 72 69 70 74 6F 72 20 66 6F 72 20 6F 75 escriptor for ou
02CE10: 74 70 75 74 20 52 45 4C 20 66 69 6C 65 20 2A 2F tput REL file */
02CE20: 0D 0A 20 6F 75 74 72 65 6D 20 3D 20 38 2C 09 09 .. outrem = 8,..
02CE30: 2F 2A 20 72 65 6D 61 69 6E 69 6E 67 20 62 69 74 /* remaining bit
02CE40: 73 20 69 6E 20 6F 75 74 70 75 74 20 63 68 75 6E s in output chun
02CE50: 6B 20 2A 2F 0D 0A 20 6F 75 74 63 68 75 6E 6B 2C k */.. outchunk,
02CE60: 09 09 2F 2A 20 63 75 72 72 65 6E 74 20 63 68 75 ../* current chu
02CE70: 6E 6B 20 66 6F 72 20 52 45 4C 20 66 69 6C 65 20 nk for REL file
02CE80: 2A 2F 0D 0A 20 69 74 65 6D 2C 09 09 09 2F 2A 20 */.. item,.../*
02CE90: 63 75 72 72 65 6E 74 20 69 74 65 6D 20 63 6F 64 current item cod
02CEA0: 65 20 2A 2F 0D 0A 20 74 79 70 65 2C 09 09 09 2F e */.. type,.../
02CEB0: 2A 20 74 79 70 65 20 66 69 65 6C 64 20 2A 2F 0D * type field */.
02CEC0: 0A 20 66 69 65 6C 64 3B 09 09 09 2F 2A 20 63 75 . field;.../* cu
02CED0: 72 72 65 6E 74 20 62 69 74 20 66 69 65 6C 64 20 rrent bit field
02CEE0: 2A 2F 0D 0A 63 68 61 72 0D 0A 20 73 79 6D 62 6F */..char.. symbo
02CEF0: 6C 5B 39 5D 3B 09 09 2F 2A 20 63 75 72 72 65 6E l[9];../* curren
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: 74 20 73 74 72 69 6E 67 20 2A 2F 0D 0A 1A 1A 1A t string */.....
02D110: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02D120: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02D130: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02D140: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02D150: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02D160: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02D170: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
02D180: 52 45 4C 20 66 69 6C 65 20 2A 2F 0D 0A 20 69 6E REL file */.. in
02D190: 72 65 6D 20 3D 20 30 2C 09 09 2F 2A 20 72 65 6D rem = 0,../* rem
02D1A0: 61 69 6E 69 6E 67 20 62 69 74 73 20 69 6E 20 69 aining bits in i
02D1B0: 6E 70 75 74 20 63 68 75 6E 6B 20 2A 2F 0D 0A 20 nput chunk */..
02D1C0: 69 6E 63 68 75 6E 6B 2C 09 09 2F 2A 20 63 75 72 inchunk,../* cur
02D1D0: 72 65 6E 74 20 63 68 75 6E 6B 20 66 72 6F 6D 20 rent chunk from
02D1E0: 52 45 4C 20 66 69 6C 65 20 2A 2F 0D 0A 20 6F 75 REL file */.. ou
02D1F0: 74 72 65 6C 2C 09 09 2F 2A 20 66 69 6C 65 20 64 trel,../* file d
02D200: 65 73 63 72 69 70 74 6F 72 20 66 6F 72 20 6F 75 escriptor for ou
02D210: 74 70 75 74 20 52 45 4C 20 66 69 6C 65 20 2A 2F tput REL file */
02D220: 0D 0A 20 6F 75 74 72 65 6D 20 3D 20 38 2C 09 09 .. outrem = 8,..
02D230: 2F 2A 20 72 65 6D 61 69 6E 69 6E 67 20 62 69 74 /* remaining bit
02D240: 73 20 69 6E 20 6F 75 74 70 75 74 20 63 68 75 6E s in output chun
02D250: 6B 20 2A 2F 0D 0A 20 6F 75 74 63 68 75 6E 6B 2C k */.. outchunk,
02D260: 09 09 2F 2A 20 63 75 72 72 65 6E 74 20 63 68 75 ../* current chu
02D270: 6E 6B 20 66 6F 72 20 52 45 4C 20 66 69 6C 65 20 nk for REL file
02D280: 2A 2F 0D 0A 20 69 74 65 6D 2C 09 09 09 2F 2A 20 */.. item,.../*
02D290: 63 75 72 72 65 6E 74 20 69 74 65 6D 20 63 6F 64 current item cod
02D2A0: 65 20 2A 2F 0D 0A 20 74 79 70 65 2C 09 09 09 2F e */.. type,.../
02D2B0: 2A 20 74 79 70 65 20 66 69 65 6C 64 20 2A 2F 0D * type field */.
02D2C0: 0A 20 66 69 65 6C 64 3B 09 09 09 2F 2A 20 63 75 . field;.../* cu
02D2D0: 72 72 65 6E 74 20 62 69 74 20 66 69 65 6C 64 20 rrent bit field
02D2E0: 2A 2F 0D 0A 63 68 61 72 0D 0A 20 73 79 6D 62 6F */..char.. symbo
02D2F0: 6C 5B 39 5D 3B 09 09 2F 2A 20 63 75 72 72 65 6E l[9];../* curren
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 18 55 51 00 01 00 35 32 33 2D 30 33 37 43 20 ..UQ...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=85 CHEA=0 COD=62 MUSI=1 COP=25 GRA=56 WRIT=38 198=10 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 COM8080 MIT Z80 MITJ CALL MACDEND MAC LINK MAC!NOTICE
H "STDIO H #MAC H $%EXT H &MIT H 'REL H ()M LIBH*
+,-./012M LST3M NDX4MAC C Y56789ABORTED$BAD PARAMETER$INVALID U
SER NUMBER$RECORD TOO LONG$INVALID DIGIT$END OF FILE, CTL-Z$CHECKSUM ERROR$CORRE
CT ERROR, TYPE RETURN OR CTL-Z$INVALID FORMAT$HEX$$$$NO DIRECTORY SPACE$NO FILE$
COM$START NOT FOUND$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 OPERATION.$UNRECOGNIZED DESTINATION$CANNOT WRITE$INVALID PIP FORMAT$C
ANNOT READ$INVALID SEPARATOR$1 2L M9MAC2 C nABCDEFGHIJKLMNMAC3 C NOPQRST
UVWXLNK C YZabcdefghLNK C !ijklmLGO C nopLIB C kqrstuvwxyzCM
IT C BDREL C EXTEND C FILE C GETREL C PUTREL C SEEREL C MESS
C SCAN C WAIT C 2212!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 !/INT C MIT C REL C REQ C
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/*pD
M9 M2rN!r!r*r&N!r4!6 .!ws+p+q+p+qw2wN *s*u w*s#"s*u#"u' !"*M7!x6!x **DM2y y *"*6
2x *"!x4d !"/!j2 !"*KM'!z6!z1*(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUT
SPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP
/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)
COPYRIGHT (C) 1979, DIGITAL RESEARCH, PIP VERS 1.5$$$ SUB ., INPIRDPTRUR
1UR2RDROUTLPTUL1PRNLSTPTPUP1UP2PUNTTYCRTUC1CONNULEOFDISK READ ERROR$DISK WRITE E
RROR$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 *& .147FPfqSQHIN22 H"2202Oc!6202O*
&O*&!sc*&Pw!22!6!£6'!£E!£4!p+q*0 !r+s+p+q*$7**H&*#"*#" 2R!6!62!6H9!6-e!622-"2!!5
2!2!q" *Mn c4 *Mn 2!cQ !c2 !cw!n !5 Y !6!q!lw 0O !qO O !62lo'2on'2nm'2m*mM£
*nM£ *oM£ *2D" ** *&"!qUYY2!62!!6 ! !6Q£H!6*M !6!qa/z!-!p+q,!6*DM9!6z 2W!6
D*&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 RAFBGCHDIEDM! 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* C1 POP B D1 POP D E1 POP H F1 POP PSW E5 PUSH H
D5 PUSH D C5 PUSH B F5 PUSH PSW 17 RAL 1F RAR D8 RC C9
RET 20 RIM 07 RLC F8 RM D0 RNC C0 RNZ F0 RP E8 R
PE E0 RPO 0F RRC C7 RST 0 D7 RST 16 DF RST 24 E7 RST 32
EF RST 40 F7 RST 48 FF RST 56 CF RST 8 C8 RZ 98 SBB BCDE
HLMA DEx1 SBI x 22x2 SHLD x 30 SIM F9 SPHL 32x2 STA x 02 STAX B
12 STAX D 37 STC 90 SUB BCDEHLMA D6x1 SUI x EB XCHG A8 XRA B
CDEHLMA EEx1 XRI x E3 XTHL RAR D8 RC C9 RET 20 RIM 07 RL
C F8 RM D0 RNC C0 RNZ F0 RP E8 RPE E0 RPO 0F RRC C7
RST 0 D7 RST 16 DF RST 24 E7 RST 32 EF RST 40 F7 RST 48
FF RST 56 CF RST 8 C8 RZ 98 SBB BCDEHLMA DEx1 SBI x 22x2 SHLD
x 30 SIM F9 SPHL 32x2 STA x 02 STAX B 12 STAX D 37 STC 90
SUB CEx1 ACI x 88 ADC BCDEHLMA 80 ADD BCDEHLMA C6x1 ADI x A0 ANA
BCDEHLMA E6x1 ANI x CDx2 CALL x DCx2 CC x FCx2 CM x 2F CMA 3F CMC
B8 CMP BCDEHLMA D4x2 CNC x C4x2 CNZ x F4x2 CP x ECx2 CPE x FEx1 CPI x E
4x2 CPO x CCx2 CZ x 27 DAA 39 DAD SP 19 DAD D 29 DAD H 09 D
AD B 3D DCR A 05 DCR B 0D DCR C 15 DCR D 1D DCR E 25 DCR
H 2D DCR L 35 DCR M 0B DCX B 1B DCX D 2B DCX H 3B DCX S
P F3 DI FB EI 76 HLT DBx1 IN x 3C INR A 04 INR B 0C INR
C 14 INR D 1C INR E 24 INR H 2C INR L 34 INR M 03 INX B
13 INX D 23 INX H 33 INX SP DAx2 JC x FAx2 JM x C3x2 JMP x D2x2
JNC x C2x2 JNZ x F2x2 JP x EAx2 JPE x E2x2 JPO x CAx2 JZ x 3Ax2 LDA x 0A
LDAX B 1A LDAX D 2Ax2 LHLD x 21x2 LXI H,x 11x2 LXI D,x 31x2 LXI SP,x
01x2 LXI B,x 7C MOV A,HA,LA,MA,A 54 MOV D,HD,LD,MD,A 5D MOV E,LE,M
E,A 7DD8Ex1 ADC A,(IX+x) FD8Ex1 ADC A,(IY+x) 88 ADC A,BA,CA,DA
,EA,HA,LA,(HL)A,A CEx1 ADC A,x ED4A ADC HL,BC ED5A ADC HL,D
E ED6A ADC HL,HL ED7A ADC HL,SP DD86x1 ADD A,(IX+x) FD86x1
ADD A,(IY+x) 80 ADD A,BA,CA,DA,EA,HA,LA,(HL)A,A C6x1 ADD A,x
09 ADD HL,BC 19 ADD HL,DE 29 ADD HL,HL 39
ADD HL,SP DD09 ADD IX,BC DD19 ADD IX,DE DD29 ADD IX,IX DD
39 8 MOV A,BA,CA,DA,E 40 MOV B,BB,CB,DB,EB,HB,LB,MB,A 48 MOV C,BC,
CC,DC,EC,HC,LC,MC,A 50 MOV D,BD,CD,DD,E 58 MOV E,BE,CE,DE,EE,H 60 MO
V H,BH,CH,DH,EH,HH,LH,MH,A 68 MOV L,BL,CL,DL,EL,HL,LL,ML,A 77 MOV M,A 7
0 MOV M,BM,CM,DM,EM,HM,L 3Ex1 MVI A,x 06x1 MVI B,x 0Ex1 MVI C,x 16x1 MVI
D,x 1Ex1 MVI E,x 26x1 MVI H,x 2Ex1 MVI L,x 36x1 MVI M,x 00 NOP B5 OR
A LMA B0 ORA BCDEH F6x1 ORI x D3x1 OUT x E9 PCHL RAFBGCHDIE ADD IX
,SP FD09 ADD IY,BC FD19 ADD IY,DE FD29 ADD IY,IY FD39
ADD IY,SP DDA6x1 AND (IX+x) FDA6x1 AND (IY+x) A0 AND BCDEHL(
HL)A E6x1 AND x DDCBx146 BIT 0,(IX+x) FDCBx146 BIT 0,(IY+x) CB40
BIT 0,B0,C0,D0,E0,H0,L0,(HL)0,A DDCBx14E BIT 1,(IX+x) FDCBx14E BIT 1,(IY+x)
CB48 BIT 1,B1,C1,D1,E1,H1,L1,(HL)1,A DDCBx156 BIT 2,(IX+x) FDCBx156 BIT
2,(IY+x) CB50 BIT 2,B2,C2,D2,E2,H2,L2,( (IX) FDE9 JP (IY) DAx2
JP C,x FAx2 JP M,x D2x2 JP NC,x C2x2 JP NZ,xx F2x2
JP P,x EAx2 JP PE,x E2x2 JP PO,x CAx2 JP Z,x 38p1
JR C,p 30p1 JR NC,p 20p1 JR NZ,p 18p1 JR p 28p1 JR
Z,p 02 LD (BC),A 12 LD (DE),A 77 LD (HL),A 70
LD (HL),B(HL),C(HL),D(HL),E(HL),H(HL),L 36x1 LD (HL),x DD77x1 L
D (IX+x),A DD70x1 LD (IX+x),B(IX+x),C(IX+x),D HL)2,A DDCBx15E BIT 3,(IX+x)
FDCBx15E BIT 3,(IY+x) CB58 BIT 3,B3,C3,D3,E3,H3,L3,(HL)3,A DDCBx166 BI
T 4,(IX+x) FDCBx166 BIT 4,(IY+x) CB60 BIT 4,B4,C4,D4,E4,H4,L4,(HL)4,A D
DCBx16E BIT 5,(IX+x) FDCBx16E BIT 5,(IY+x) CB68 BIT 5,B5,C5,D5,E5,H5,L5,
(HL)5,A DDCBx176 BIT 6,(IX+x) FDCBx176 BIT 6,(IY+x) CB70 BIT 6,B6,C6,D6
,E6,H6,L6,(HL)6,A DDCBx17E BIT 7,(IX+x) FDCBx17E BIT 7,(IY+x) CB78 BIT
7,B7,C7,D7,E7,HDD73x1 LD (IX+x),E(IX+x),H(IX+x),L DD36x1x1 LD (IX+x),x FD77
x1 LD (IY+x),A FD70x1 LD (IY+x),B(IY+x),C(IY+x),D FD73x1 LD (IY+x),E(
IY+x),H(IY+x),L FD36x1x1 LD (IY+x),x ED43x2 LD (x),BC ED53x2 LD (x),DE
22x2 LD (x),HL DD22x2 LD (x),IX FD22x2 LD (x),IY ED73x2 LD (x
),SP 0A LD A,(BC) 1A LD A,(DE) DD7Ex1 LD A,(IX+x) FD7Ex
1 LD A,(IY+x) 78 LD A,BA,CA,DA,EA,HA,LA,(HL)A,A ED57 LD A,I
ED7,L7,(HL)7,A DCx2 CALL C,x FCx2 CALL M,x D4x2 CALL NC,x
C4x2 CALL NZ,x F4x2 CALL P,x ECx2 CALL PE,x E4x2 CAL
L PO,x CCx2 CALL Z,xx 3F CCF DDBEx1 CP (IX+x) FDBEx1 CP
(IY+x) B8 CP BCDEHL(HL)A FEx1 CP x EDA9 CPD EDB9
CPDR EDA1 CPI EDB1 CPIR 2F CPL 27 DAA 35
DEC (HL) DD35x1 DEC (IX+x) FD35x1 DEC (IY+x) 3D DEC A 0
5 5F LD A,R 3Ax2 LD A,(x) 3Ex1 LD A,x DD46x1 LD B,(IX+x
) FD46x1 LD B,(IY+x) 40 LD B,BB,CB,DB,EB,HB,LB,(HL)B,A 06x1
LD B,x ED4Bx2 LD BC,(x) 01x2 LD BC,x DD4Ex1 LD C,(IX+x) FD4Ex1
LD C,(IY+x) 48 LD C,BC,CC,DC,EC,HC,LC,(HL)C,A 0Ex1 LD C,x D
D56x1 LD D,(IX+x) FD56x1 LD D,(IY+x) 50 LD D,BD,CD,DD,ED,HD,LD,
(HL)D,A 16x1 LD D,x 12 LD (DE),A ED5Bx2 LD DE,(x)
DEC B 0B DEC BC 0D DEC C 15 DEC D 1B DEC
DE 1D DEC E 25 DEC H 2B DEC HL DD2B DEC IX
FD2B DEC IY 2D DEC L 3B DEC SP F3 DI 10p1
DJNZ p FB EI E3 EX (SP),HL DDE3 EX (SP),IX FD
E3 EX (SP),IY 08 EX AF,AF' EB EX DE,HL D9 EX
X 76 HALT ED46 IM 0 ED56 IM 1 ED5E IM 2 ED78
IN A,(C) DB11x2 LD DE,x DD5Ex1 LD E,(IX+x) FD5Ex1 LD E,(IY+x)
58 LD E,BE,CE,DE,EE,HE,LE,(HL)E,A 1Ex1 LD E,x DD66x1 LD H,(
IX+x) FD66x1 LD H,(IY+x) 60 LD H,BH,CH,DH,EH,HH,LH,(HL)H,A 26x1
LD H,x 2Ax2 LD HL,(x) ED47 LD I,A DD2Ax2 LD IX,(x) DD21x
2 LD IX,x FD2Ax2 LD IY,(x) FD21x2 LD IY,x DD6Ex1 LD L,(IX+x) FD6
Ex1 LD L,(IY+x) 68 LD L,BL,CL,DL,EL,HL,LL,(HL)L,A 2Ex1 LD L,
x1 IN A,(x) ED40 IN B,(C) ED48 IN C,(C) ED50 IN D,(C)
ED58 IN E,(C) ED60 IN H,(C) ED68 IN L,(C) DD34x1 INC (
IX+x) FD34x1 INC (IY+x) 3C INC A 03 INC BCB 0C
INC C 13 INC DED 1C INC E 23 INC HLH DD23
INC IX FD23 INC IY 2C INC L 33 INC SP(HL) EDAA
IND EDBA INDR EDA2 INI EDB2 INIR E9 JP (HL) DDE
9 JP RAFBGCHDIEx ED4F LD R,A F9 LD SP,HL DDF9 LD
SP,IX FDF9 LD SP,IY ED7Bx2 LD SP,(x) 31x2 LD SP,x(x),A EDA8
LDD EDB8 LDDR EDA0 LDI EDB0 LDIR ED44 NEG 00
NOP DDB6x1 OR (IX+x) FDB6x1 OR (IY+x) B0 OR BCDEHL(HL)
A F6x1 OR x EDBB OTDR EDB3 OTIR ED79 OUT (C),A ED41
OUT (C),B ED49 OUT (C),C ED51 OUT (C),D ED59 OUT (C)
,E ED61 OUT (C) 32 FF RST 38H EF RST 40 F7
RST 48 FF RST 56 CF RST 8 CF RST 8H DD9Ex1 SBC
A,(IX+x) FD9Ex1 SBC A,(IY+x) 98 SBC A,BA,CA,DA,EA,HA,LA,(HL)A,A
DEx1 SBC A,x ED42 SBC HL,BC ED52 SBC HL,DE ED62 SBC H
L,HL ED72 SBC HL,SP 37 SCF DDCBx1C6 SET 0,(IX+x) FDCBx1C6 SET
0,(IY+x) CBC0 SET 0,B0,C0,D0,E0,H0,L0,(HL)0,A DDCBx1CE SET 1,(IX+x) FD
CBx1CE SET 1,(IY+x,H ED69 OUT (C),L D3x1 OUT (x),A EDAB OUT
D EDA3 OUTI F1 POP AF C1 POP BC D1 POP DE
E1 POP HL DDE1 POP IX FDE1 POP IY F5 PUSH AF C
5 PUSH BC D5 PUSH DE E5 PUSH HL DDE5 PUSH IX
FDE5 PUSH IY DDCBx186 RES 0,(IX+x) FDCBx186 RES 0,(IY+x) CB80 R
ES 0,B0,C0,D0,E0,H0,L0,(HL)0,A DDCBx18E RES 1,(IX+x) FDCBx18E RES 1,(IY+x) CB
88 RES 1,B1,C) CBC8 SET 1,B1,C1,D1,E1,H1,L1,(HL)1,A DDCBx1D6 SET 2
,(IX+x) FDCBx1D6 SET 2,(IY+x) CBD0 SET 2,B2,C2,D2,E2,H2,L2,(HL)2,A DDCB
x1DE SET 3,(IX+x) FDCBx1DE SET 3,(IY+x) CBD8 SET 3,B3,C3,D3,E3,H3,L3,(HL
)3,A DDCBx1E6 SET 4,(IX+x) FDCBx1E6 SET 4,(IY+x) CBE0 SET 4,B4,C4,D4,E4
,H4,L4,(HL)4,A DDCBx1EE SET 5,(IX+x) FDCBx1EE SET 5,(IY+x) CBE8 SET 5,B
5,C5,D5,E5,H5,L5,(HL)5,A DDCBx1F6 SET 6,(IX+x) FDCBx1F6 SET1,D1,E1,H1,L1,(HL)1
,A DDCBx196 RES 2,(IX+x) FDCBx196 RES 2,(IY+x) CB90 RES 2,B2,C2,D2,E2,H
2,L2,(HL)2,A DDCBx19E RES 3,(IX+x) FDCBx19E RES 3,(IY+x) CB98 RES 3,B3,
C3,D3,E3,H3,L3,(HL)3,A DDCBx1A6 RES 4,(IX+x) FDCBx1A6 RES 4,(IY+x) CBA0
RES 4,B4,C4,D4,E4,H4,L4,(HL)4,A DDCBx1AE RES 5,(IX+x) FDCBx1AE RES 5,(IY+x)
CBA8 RES 5,B5,C5,D5,E5,H5,L5,(HL)5,A DDCBx1B6 RES 6,(IX+x) FDCBx1B6 RES
6,(IY+x) CBB0 RES 6,(IY+x) CBF0 SET 6,B6,C6,D6,E6,H6,L6,(HL)6,A
DDCBx1FE SET 7,(IX+x) FDCBx1FE SET 7,(IY+x) CBF8 SET 7,B7,C7,D7,E7,H7,L7
,(HL)7,A DDCBx126 SLA (IX+x) FDCBx126 SLA (IY+x) CB20 SLA BCDEHL(HL)A
DDCBx12E SRA (IX+x) FDCBx12E SRA (IY+x) CB28 SRA BCDEHL(HL)A DDCBx13E S
RL (IX+x) FDCBx13E SRL (IY+x) CB38 SRL BCDEHL(HL)A DD96x1 SUB A,(IX+
x) FD96x1 SUB A,(IY+x) 90 SUB A,BA,CA,DA,EA,HA,LA6,B6,C6,D6,E6,H6,L
6,(HL)6,A DDCBx1BE RES 7,(IX+x) FDCBx1BE RES 7,(IY+x) CBB8 RES 7,B7,C7,
D7,E7,H7,L7,(HL)7,A C9 RET D8 RET C F8 RET M D0
RET NC C0 RET NZ F0 RET P E8 RET PE E0
RET PO C8 RET Z ED4D RETI ED45 RETN DDCBx116 RL
(IX+x) FDCBx116 RL (IY+x) CB10 RL BCDEHL(HL)A 17 RLA DDCBx106
RLC (IX+x) FDCBx106 RLC (IY+x) CB00 RLC B,(HL)A,A D6x1 SUB x DD
AEx1 XOR (IX+x) FDAEx1 XOR (IY+x) A8 XOR BCDEHL(HL)A EEx1
XOR x x12E SRA (IX+x) FDCBx12E SRA (IY+x) CB28 SRA BCDEHL(HL)A DDCBx
13E SRL (IX+x) FDCBx13E SRL (IY+x) CB38 SRL BCDEHL(HL)A DD96x1 SUB A
,(IX+x) FD96x1 SUB A,(IY+x) 90 SUB A,BA,CA,DA,EA,HA,LACDEHL(HL)A 0
7 RLCA ED6F RLD DDCBx11E RR (IX+x) FDCBx11E RR (IY+x) CB18
RR BCDEHL(HL)A DDCBx10E RRC (IX+x) FDCBx10E RRC (IY+x) CB08 RRC BCD
EHL(HL)A 0F RRCA ED67 RRD 1F RRA C7 RST 0
C7 RST 00H CF RST 08H C7 RST 0H D7 RST 10
H D7 RST 16 DF RST 18H E7 RST 20H DF RST
24 EF RST 28H F7 RST 30H E7 RST RAFBGCHDIEX 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 MOV H,A RET "AND" HL AND DE INTO HL CCA
ND MOV A,L ANA E MOV L,A MOV
A,H ----- CALL Small-C arithmetic and logical library CCDCAL
PCHL CCDDGC DAD D JMP CCGCHAR CCDSGC
INX H INX H DAD SP FETCH A SINGLE BYTE FROM
THE ADDRESS IN HL AND SIGN INTO HL CCGCHAR MOV A,M PUT THE ACCU
M INTO HL AND SIGN EXTEND THROUGH H. CCARGC CCSXT MOV L,A
RLC SBB A MOV H,A RET CCDDGI DA
D D JMP ANA D MOV H,A RET IN ALL THE F
OLLOWING COMPARE ROUTINES, HL IS SET TO 1 IF THE CONDITION IS TRUE, OTHERWISE
IT IS SET TO 0 (ZERO). TEST IF HL DE CCEQ CALL CCCMP
RZ DCX H RET TEST IF DE ! HL CCNE CALL C
CCMP RNZ DCX H RET TEST IF DE HL (SIGNED) CC
GT XCHG CALL CCCMP RC DCX H
RET TEST IF DE HL (SIGNED) CCGINT CCDSGI INX H I
NX 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 MOV E,L CALL
CCGCHAR DCX H MOV A,L STAX D RET
CCINCC INX H INX H CCLE CALL CCCMP
RZ RC DCX H RET TEST IF DE HL (SIGNED
) CCGE CALL CCCMP RNC DCX H RET T
EST IF DE HL (SIGNED) CCLT CALL CCCMP RC DCX
H RET COMMON ROUTINE TO PERFORM A SIGNED COMPARE OF DE AND HL THI
S ROUTINE PERFORMS DE - HL AND SETS THE CONDITIONS CARRY REFLECTS SIGN OF DIFF
ERENCE (SET MEANS DE HL) ZERO/NON-ZERO SET ACCORDING TO EQ DAD SP
MOV D,H MOV E,L CALL CCGCHAR INX
H MOV A,L STAX D RET CDPDPC D
AD D CCPDPC POP B RET ADDR POP D P
USH B STORE A SINGLE BYTE FROM HL AT THE ADDRESS IN DE CCPCHAR PCHAR MO
V A,L STAX D RET CCDECI INX H
INX H DAD SP MOV D,H MOV E,L U
ALITY. CCCMP MOV A,H INVERT SIGN OF HL XRI 80H
MOV H,A MOV A,D INVERT SIGN OF DE XRI 8
0H CMP H COMPARE MSBS JNZ CCCMP1 DONE IF NEQ
MOV A,E COMPARE LSBS CMP L CCCMP1 LXI H,1 P
RESET TRUE COND RET TEST IF DE HL (UNSIGNED) CCUGE CALL
CCUCMP RNC DCX H RET TEST IF DE HL (UNSIGNE
D) CCULT 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 B STORE A 16-BIT INTEGER IN HL AT THE ADDR
ESS IN DE CCPINT PINT MOV A,L STAX D INX D
MOV A,H STA RAFBGCHDIE CALL CCUCMP RC
DCX H RET TEST IF DE HL (UNSIGNED) CCUGT XCHG
CALL CCUCMP RC DCX H RET TEST IF DE
HL (UNSIGNED) CCULE CALL CCUCMP RZ RC D
CX H RET COMMON ROUTINE TO PERFORM UNSIGNED COMPARE CARRY SET
IF DE HL ZERO/NONZERO SET ACCORDINGLY CCUCMP MOV A,D C
MP H JNZ UCMP1 MOV A,E 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
PSW RP CALL CCDENEG XCHG CALL CCDENEG
XCHG RET NEGATE THE INTEGER IN DE (INTERNAL ROUTINE) CCDE
NEG MOV A,D CMA MOV D,A MOV A,E C
MA CMP L UCMP1 LXI H,1 RET SHIFT DE ARITHMETICALLY R
IGHT 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
CCASR+1 SHIFT DE ARITHMETICALLY LEFT BY HL AND RETURN IN HL CCASL
XCHG DCR E RM DAD H JMP CCASL+1
SUBTRACT HL FROM DE MOV E,A INX D RET
NEGATE THE INTEGER IN BC (INTERNAL ROUTINE) CCBCNEG MOV A,B CMA
MOV B,A MOV A,C CMA MOV C,A
INX B RET ROTATE DE LEFT ONE BIT (INTERNAL ROUTINE) CCRDEL MO
V A,E RAL MOV E,A MOV A,D RAL
MOV D,A ORA E RET COMPARE BC TO DE (INTERNAL
ROUTINE) CCCMPBCDE MOV A,E SUB AND RETURN IN HL CCSUB M
OV A,E SUB L MOV L,A MOV A,D
SBB H MOV H,A RET FORM THE TWO'S COMPLEMENT OF HL
CCNEG CALL CCCOM INX H RET FORM THE ONE'S
COMPLEMENT OF HL CCCOM MOV A,H CMA MOV H,A
MOV A,L CMA MOV L,A RET MULTIPLY D
E BY HL AND RETURN IN HL (SIGNED MULTIPLY) CCMULT MULT MOV C MOV
A,D SBB B RET LOGICAL NEGATION CCLNEG MOV
A,H ORA L JNZ $+6 MVI L,1 RE
T LXI H,0 RET EXECUTE "SWITCH" STATEMENT HL SW
ITCH VALUE (SP) - SWITCH TABLE DW ADDR1, VALUE1 DW ADDR2,
VALUE2 ... DW 0 JMP default continuation
CCSWITCH XCHG DE SWITCH VALUE POP 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 E,A MOV A,D RAL MOV D,A
ORA E RZ JMP MULT1 DIVIDE DE BY HL AND RET
URN QUOTIENT IN HL, 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 SWLOOP CMP D JNZ
SWLOOP MOV H,B CASE MATCHED MOV L,C SWEND P
CHL END REMAINDER IN DE (SIGNED DIVIDE) CCDIV DIV MOV B,H
MOV C,L MOV A,D XRA B PUSH PS
W MOV A,D ORA A CM CCDENEG MOV
A,B ORA A CM CCBCNEG MVI A,16
PUSH PSW XCHG LXI D,0 CCDIV1 DAD H CAL
L CCRDEL JZ CCDIV2 CALL CCCMPBCDE JM
CCDIV2 MOV A,L ORI 1 RAFBGCHDIE#define VERSION "Ver
sion 1.2 (Rev. 21)n" #define CRIGHT1 "Copyright 1985 J. E. Hendrixnn" -----
END Final module to be loaded Uend lhld 6get bdos address sphluse fo
r base of stack lxi h,Uendget start of free memory shld Umemp
tr##use for memory allocation jmp Umain##parse command line, execute p
rogram end Uend /* ** STDIO.H -- Standard Small-C Definitions
** ** Copyright 1984 L. E. Payne and J. E. Hendrix */ #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
/*23*/ /*45*/ Ulink ext Umain ext Uend end R A F B G
C H D I E/* ** miscellaneous definitions */ #define MAXFN 15/* max file
name space */ #define INTSZ 2/* integer size in bytes */ #define COMMENT
''/* comment delimiter */ #define ANOTHER ''/* another operand option */
#define MAXLINE 81/* length of source line */ #define MICOUNT 150/* machin
e instruction hash space */ #define MIOPNDS 300/* maximum unique operand form
ats */ #define MIBUFSZ 4600/* mit syntax space */ #define OBJEXT ".REL"/* ob
ject file extension */ #define SRCEXT ".MAC"/* source file extension */ #defi
ne MAXLAB 8/* maximum label characters used */ #define STACK 1024/* res
erved for stack space */ #define OHDOPEN 164/* overhead bytes per open file *
/ #define MAXOPEN 2/* maximum open files */ /* ** symbol table */ #de
fine STMAX 500/* maximum lables allowed */ #define STVALUE (MAXLAB + 1)/* off
set to value field */ #define STFLAG (STVALUE + INTSZ)/* offset to flag byte *
/ #define STENTRY (STFLAG + 1)/* s/* ** machine instruction table */ int
mitable 3*INTSZ*MICOUNT+MIBUFSZ,/* mit size signature */ mitndxMICOUNT,/* mi
t indices (hash - which) */ mitnxtMICOUNT,/* mit synonym chain */ mitptrMI
COUNT/* mnemonic syntax ptrs */ char mitbufMIBUFSZ/* instruction syntax buff
er */ extern int/* reside in mit.c */ opadj,/* operation code adjustment *
/ hashval/* global hash value for speed */ t entry size */ #define STBUFSZ
(stmax * STENTRY)/* st buffer size */ #define LABBIT2 128/* label flag (pass 2)
*/ #define LABBIT 64/* label flag */ #define EQUBIT 32/* EQU flag (pass 2
) */ #define SETBIT 16/* SET flag */ #define XRBIT 8/* external-referenc
e flag */ #define EPBIT 4/* entry-point flag */ #define RELBITS 3/* rela
tive bits (ABS, PREL) */ /* ** macro table */ #define MTNXT 0/* poin
ter to next macro */ #define MTNAM INTSZ/* macro name */ /* ** assembler
instruction codes */ #define DW 1 #define DB 2 #define DS 3 #de
fine EX 4 #define SET 5 #define EQU 6 #define ORG 7 #define END
8 #define MACRO 9 #define ENDM 10 #define CALL 11 RBIT 8/* extern
al-reference flag */ #define EPBIT 4/* entry-point flag */ #define RELBITS
3/* relative bits (ABS, PREL) */ /* ** macro table */ #define MTNXT
0/* pointer to next macro */ #define MTNAM INTSZ/* macro n/* ** rel.h --
header for REL file processing */ /* item-type codes */ #define ABS
0/* absolute item */ #define PREL 1/* program (code) relative item */ #d
efine DREL 2/* data relative item */ #define CREL 3/* common relative
item */ #define ENAME 4/* entry name */ #define CNAME 5/* common bl
ock name */ #define PNAME 6/* program name */ #define LNAME 7/* librar
y name */ #define EXT 8/* extension link-item */ #define CSIZE 9/*
coextern int pass, badsym, gotep, gotxr, gotlabel, gotnam, opadj, hashval
, loc, lin, err, endv, endt, lerr, srcfd, eom, list, lline, part1, ccnt, lpag
e, pause, looks, mitable, mitndx, mitnxt, mitptr, stmax, stn, *stp extern
char *ep, *lp, *prior, *mt, *mtnext, *mtend, line, expbuf, srcfn, objfn,
*st, *stend, *stptr, stsym, mitbuf RAFBGCHDIEmmon size & name */ #define XCH
AIN 10/* external-reference-chain head & name */ #define EPOINT 11/* entry
point location & name */ #define XMOFF 12/* external - offset */ #define
XPOFF 13/* external + offset */ #define DSIZE 14/* data area size */ #de
fine SETLC 15/* set location counter for loading */ #define CHAIN 16/* ch
ain address (fill chain with loc ctr) */ #define PSIZE 17/* program (code)
size */ #define EPROG 18/* end of program */ #define EFILE 19//6*!uB!"D0
Xf .v QHt£ *8cAUn"ohVUUZKB9GmoPjBX YG*$UFb.Vh"BdXQ9umX£3jr,f#/dUXBJh+f!jBoVU!%B6
XVX#Ib-Q0.V( PdD 6r* ' (r (,B3L6 !* end of file */ #define MAXSYM 6/* maxi
mum symbol length allowed in REL file */ #define ONES -1/* all one bits */
/* common variables */ extern int inrel,/* file descriptor for input REL f
ile */ inrem,/* remaining bits in inchunk */ inchunk,/* current chunk from R
EL file */ outrel,/* file descriptor for output REL file */ outrem,/* remain
ing bits in outchunk */ outchunk,/* current chunk for REL file */ item,/* cu
rrent item code */ type,/* type field *£4D !WBY*leU19u60 OPBVhf1UQu"bpY*nUfQ9f
0l!a!dn7n2 aHL&((hh)hh*jQkhh1 Dhh,hi(zhj)0hjj*) q0,j,*0)Hp*H H(p,*S dtUDHAUQ%9RP
5/ field/* current bit field */ extern char symbol9/* current string */
/* common variables */ extern int inrel,/* file descriptor for input REL fil
e */ inrem,/* remaining bits in inchunk */ inchunk,/* current chunk from REL
file */ outrel,/* file descriptor for output REL file */ outrem,/* remainin
g bits in outchunk */ outchunk,/* current chunk for REL file */ item,/* curr
ent item code */ type,/* type field *Vhmu.V+4dC2JrdT!$*G2*Jrt (*$*NQTUUE3( 9RE
RROR2QTVP9fQfbYpXQ *riD3NtSpBY!.V+T,rhB9Ya(IJhh)0 8JIFQP Y q e8RU TD!M!YEXPBUFT
DdH5Q "P53P 9f!j rY!je jVS dUDTID!.Q(9fQfErD B-XTB0Y.+BYjmBrm0X"8"r VhuAhZkCqmrA
69Y!,i7&Ien 6pe'*Fh2Jre!£FF2JrfH")'G2**r$e*)Fi2 dL))!)FQ2je))&"NSDT 1MP5YbBYBY,,
4-YTD Dd.V+0OVUL+4Lfy 2F2bS#% %9R2S!%B6£4C"*VhdXQ" !0rmrR(El"64YeT!Uh0B!,J)iEB£
4OV(rA6G&hYBmpr,-EZD f6eUlBYf&e9fP+6D wb3lD2f!.QmY8.*( D!mhhbXE # 1M2QT£' 1M2.QS
£ApUS dtUE$TQ%RGETSPEU dtUE5QQeBP5Qx,eQ A(Lm-YTBD Y *H0e,+Y VPWoBd/$UV" oRVU""+
$*,f'Xfu/%vUZp bxVWjpBoj"DD j£"*mum-XU.' F*K!aW6 RAFBGCHDIE!,BrG A63opfjBD dCAB
Y£4!%B6h ome! 9*Y4FL!,NQ'*A63of&jbr lZa1Z(X,mf 7(lY dA6jfA f16B3l0l6GmVVA fl !e
P6Ymf7XRf3-Qg* * nP60 #f63u)Hi 0HZ k),jI,*8S T$T%9I6INCHUNUS dUE$TUQ !VITEMTTdT
HMe52P5 )i )H i H *Te$U%(QMQJREQSTRMrD.!£4b!Q0D!9D fD!fB rm#rLhXf CAl" XR fA
6 rT.i OlvLBJmIjh !&EAP6mdj#B Jml b£4OVU,mfCCD k!eAUz#fA(9u63o 4tBJmo#A6n#f6jXv
c#Q93HPT# %Z3Tc" !2(S#- R3JQ"1 92S#5 MU 2NU#aAUS#(91 5B3vUS#!M"Tc.y%M13TP4
1aI3LSd B.HuB(r7hBY!£60X" rQ9f(n62Q9fp(oB9G6hD fj"hd!tB!,Qq,9u6j*eWmWrP"6mZkHf$Y
e9*Y$F,!,phh1hh)PchiqjQ*j I)PH)JQ 8U5Q "0RUP#5%QU2dRU# Y5%Q9aR2RU£A*2T#/9MQI13xT
gUS eUE$TAUQ%RPUTFLDUSeUEET0r (l4-XTT9D f6EVz!VUFQ fbT!£6X,ZPVaXeYfJ*P(rLvkj!£6X
,ZhaZdP(rLvoj*mZfJD MD %L6Z STDTH1 5BSKIPMcX.+C %G(8AB2D 3(i69YZi69Y!" rT.jP6mi
a09f mKrj rfj k jVm+pXlfj w jz j!,(fhbBY.VmrmeS9*YPF,2!%B6eXG-YUBJmjfj"rT.kYXuN
.V&PUS#-9 !2d HD f6NOVqWj6*!uB!"* .Q fjU ' *HuAhZrf6gOVU!VUa&m/,M hS0 H*8RA T
& $U3iZdH9D f6eX!UuAhQN,c f $B2XQ9r(-he!9umW(rLvnj BdCi$BJh+f S#* 193S# 5 MU 2
U#1 5B2TT#.9%MMA2tV# 1M-%BpQTS $8%Q"SEERELQN dUtMSEENAMUUEYL/*vT9D"f6U dE fFY*mP
PY!/H4PWn0"k#B, r(ljhB9G&mXvxB 9D f9D f6Bk8B9G&mXvxC3B, r (llB9G&mXvxCh3o"Qz,!jb
rT.ol!£6X,ZY,!,KBY8eQA9f7Xmj brU6ma19u6k u!,mu6nE raE4C"*!.Vmu.V+6YUXn+6x*8*pQ 0
X,Xf*i #B9G&h$B $ #I "Fnl20hh*ihhihh)8%hihihjjQo(J)i R A F B G C H D I E'(rL
f09D fPfD7!£6X,4!NQa r ( ,B9GmAL 8*0UY (,( (EA PSx"! UbrB9G6hD !£6X"QI, 9De7G 3
yo7hp9#t ar0#xM3I 6Me6m73OAa4Be7GC 9OFQ a 1 t #ys4£Z 2gd&j.dB -.I48YGGT(i9&Tk7
$e6f!XeS1UuhZa1Z9D !£4X"rY!3mx!B3(D 0fP6!.Qs"8VUDQ,UdPB3(rL,8QE,Qm,Hr,*! !£60X,
ZX"q B9G&mY"!"!"X!,5I*h TA *VShTeZ0AaAeA(Q,"( 63jbHVUVmr (hh)hhh1H£hhi1PHhi)i18h
j)L(J q)H )*(*)HQbmhhHL* *RU EtICE,fH(a4 &8.FD*2*d$£(*)" J/* ** MAC.C -- Sma
ll-Mac Assembler -- Part 1 Mainline and Macro Functions ** **
Copyright 1985 J. E. Hendrix ** ** Usage MAC -L -NM -P -S# object source...
** ** -L Generate an assembly listing on the standard output file. **
** -NM No macro processing. This speeds up the assembler somewhat. **
Macro processing is NOT needed for Small-C 2.1 output files. ** **
-P Pause on errors waiting for an operator response of CR. ** ** -S#
MIT GETREL PUTREL SEEREL REL EXTEND FILE INT MESS REQ SCAN WAIT
Set symbol table size to accept # symbols. ** ** object Name of the obje
ct file to be output. It must have a REL ** extension to be recogni
zed as the output file. A drive ** specifier is allowed. If not sp
ecified, the object code ** will go into a file (on the default driv
e) bearing the same ** name as the first source file, but with a REL
extension. ** ** source... Names of the source files to be assembled. The d
efault,and ** onl RAFBGCHDIEy allowed, extension is MAC. A drive s
pecifier is allowed. ** The named files will be assembled as one fil
e concatenated ** in the order given. ** ** NOTE The mo
dule name in the REL file will be taken from ** the first 6 characte
rs of the object filename. */ #include stdio.h #include "notice.h" #include
"mac.h" #include "rel.h" #include "mit.h" #define NOCCARGC /* ** symbol t
able */ int stmax STMAX,/* maximum symbols */ stn,/* /* sound the alarm
*/ /* ** pass one */ pass1(argc, argv) int argc, *argv int max
st calloc(STBUFSZ, 1)/* allocate zeroed symbol table */ stp calloc(stma
x, INTSZ) stend st + STBUFSZ/* remember end of table */ max avail(YES)/*
how much available */ max - STACK + (MAXOPEN * OHDOPEN)/* calculate how much
*/ mt mtnext calloc(max, 1)/* allocate space */ mtend mt + max - MAXLI
NE/* note end of macro buffer */ dopass(argc, argv)/*number of symbols loaded
*/ *stp/* symbol table pointer arrar */ char *st,/* symbol table buffer */
*stend,/* end of symbol table */ *stptr,/* st entry pointer */ stsymMAXL
AB+1/* temporary symbol space */ /* ** macro definition table */ char *m
t,/* macro table buffer */ *mtprev,/* previous mt entry */ *mtnext,/* next a
vailable mt byte */ *mtend,/* end of macro table */ *mtptr/* mt entry pointe
r */ int pass 1,/* which pass */ bad do pass 1 */ /* ** pass t
wo */ pass2(argc, argv) int argc, *argv int i outrel open(objfn, "w")/
* open object file */ putname()/* declare module name */ putent()/* declar
e entry points */ putsz()/* declare program size */ pass 2/* signal pass
2 */ dopass(argc, argv)/* do pass 2 */ putexs()/* declare ep and xr symbol
s */ putend()/* declare end of program */ if(ferror(outrel)) err YES c
lose(outrel)/* close object fsym,/* bad symbol */ gotep,/* have an entry poin
t */ gotxr,/* have an external reference */ gotlabel,/* have a label */
gotnam,/* have a name */ eom,/* end of module */ endv,/* END value */
endt,/* END type */ err,/* error */ lerr,/* line error flags */ loc,/*
location counter */ lin,/* line counter */ srcfd,/* source file fd */ l
ist,/* generate a listing */ lline,/* listing line, force 1st page heading */
ile */ /* ** process passes 1 and 2 */ dopass(argc, argv) int argc, *a
rgv int mop int i mlnext lpage i lin loc 0/* reset everything */
lline 100/* force page heading */ while(getarg(++i, srcfn, MAXFN, argc, a
rgv) ! EOF) if(srcfn0 '-') continue if(extend(srcfn, SRCEXT, OBJEXT)
) continue srcfd open(srcfn, "r")/* open source file */ eom NO/* no
t end of module */ goto input while(YES) poll(YES) par
t1,/* part 1 of listing line printed */ ccnt,/* count of code characters prin
ted */ lpage,/* listing page */ pause,/* pause on errors */ looks,/* nu
mber of looks to find instruction */ macros YES,/* macro processing */ ml
next,/* next macro label to assign */ mlnbr10,/* macro label numbers */ mp
ptr10,/* macro parameter pointers */ defmode,/* macro definition mode */ e
xpmode/* macro expansion mode */ char *ep,/* expressi ++lin lerr 0/* bum
p line counter & zero errors */ part1 NO/* part 1 of line not listed */
begline()/* begin a listing line */ if(macros NO) dolab
el()/* do label and find next field */ if(!domach()) doasm()/* machine
or assembler instr */ else lp line lp gets
ym(lp, NO) if(!(mop macop()) && gotnam) /* 2nd field a token */
lp skip(1, line)/* no, try first */ on pointer */ *lp,/* line p
ointer */ lineMAXLINE,/* source line */ *prior,/* prior ext ref in chain */
srcfnMAXFN+4,/* source filename */ objfnMAXFN+4/* object filename */ m
ain(argc, argv) int argc, *argv fputs("Small-Mac Assembler, ", stderr) fputs
(VERSION, stderr) fputs(CRIGHT1, stderr) getsw(argc, argv)/* get command l
ine switches */ pass1(argc, argv)/* build symbol table */ pass2(argc, argv
)/* generate object code */ if(err) abort(7) RAFBGCHDIE mop macop()
if(defmode) /* definition mode */ if(mop ENDM) defmod
e NO if(pass 1) putmac()/* put line in macro table */
else /* copy or expansion mode */ if(mop CALL) /* enter expa
nsion mode */ expmode YES putparm()/* save parameters
*/ dolabel()/* process label */ else if(m
op MACRO) /* enter definition mode */ ) /* ** test for macro
buffer overflow */ macover(ptr) char *ptr if(ptr mtend) error("- Macro B
uffer Overflow") /* ** find stsym in macro table ** return true if foun
d, else false ** leave mtptr pointing to body of desired macro */ mtfind()
if(atend(*lp) 0) mtptr mt do if(fldcmp(lp, mtptr + MTNAM)
0) mtptr + MTNAM mtptr + strlen(mtptr) + 1 return
(YES) mtptr getint(mtptr) whil defmode YES
if(pass 1) newmac()/* init new macro in table */ e
lse if(mop ENDM) /* leave expansion mode */ expmode NO
else if(expmode) replace() dolabel()/*
do label and find next field */ if(!domach()) doasm()/* machine or
assembler instr */ endline()/* end a
listing line */ if(pass 2) gripe()/* gripe ae(mtptr) return (N
O) /* ** establish new macro */ newmac() int i i 0 if(!gotnam
badsym) symerr() else macover(mtnext) if(mtprev) putint(mtprev, m
tnext) mtprev mtnext putint(mtnext, 0) mtnext + INTSZ while
(*mtnext++ stsymi++) /* ** put a line in the macro buffer */
putmac() char *cp cp line macover(mtnext)/* will buffer take it */ w
hile(*mtnext++ *cp++) /* copy everything */ bout errors */ if(expmode
) getmac()/* fetch next macro line */ else input if(eo
m) break if(!fgets(line, MAXLINE, srcfd)) error("- Missing END")
if(defmode) err YES puts("- Missing ENDM") close(srcfd)/*
close source file */ /* ** can line take more */ cantake(i, nee
d) int i, need return (i (MAXLINE - 3) - need) /* ** get a line fro
m the macro buffer */ getmac() char *cp cp l /* ** save macro call pa
rameters in macro buffer ** and reset macro labels */ putparm() int i, dl
m char *cp i -1 cp mtnext lp skip(2, lp)/* skip to parameters */ whi
le(++i 10) mlnbri 0/* null macro label nbr */ while(isspace(*lp)) +
+lp if(atend(*lp) *lp ',') mpptri 0 else macover(cp)
mpptri cp while(!atend(*lp) && *lp ! ',') if(*lp '"' *lp '
'') /* string */ dlm ine while(*cp++ *mtptr++) /* ** get
switches from command line */ getsw(argc, argv) int argc, *argv char argM
AXFN+4 int i, j, len i 0 while(getarg(++i, arg, MAXFN, argc, argv) ! EOF)
if(arg0 '-') if(toupper(arg1) 'L') list YES else i
f(toupper(arg1) 'P') pause YES else if(toupper(arg1) 'N' &&
toupper(arg2) 'M') macros NO else if(toupper(arg1) 'S')
len utoi(arg + *lp while(!atend(*++lp)) if(*lp dlm
&& *++lp ! dlm) break *cp++ *lp
else *cp++ *lp++ *cp++ NULL if(*lp ',') ++lp
if(!atend(*lp)) parerr() /* ** replace parameters */ replace()
char linMAXLINE int ndx char *cp, *cp2 int i strcpy(lin, line) cp
lin i 0 do if(*cp '') /* substitution marker */ if(isdigit(*+
+cp))2, &j) if(len 0 && !arglen + 2) stmax j else usage()
else usage() else if(extend(arg, OBJEXT, OBJ
EXT) !*objfn) if(arg1 '') j 2 else j 0 strcpy(objfn, ar
g + j) /* ** recognize macro operation */ maco
p() if(fldcmp(lp, "ENDM" ) 0) return (ENDM) if(fldcmp(lp, "MACRO") 0) r
eturn (MACRO) if(!expmode && !defmode && mtfind()) return (CALL) return (N
O RAFBGCHDIE /* parameter substitution */ ndx *cp++ - '0' - 1/* which
one */ if(ndx 0) ndx 9/* make 0 mean 10 */ if(cp2 mpptrndx
) /* got parameter */ while(*cp2)/* yes, copy it */ if(c
antake(i, 1)) linei++ *cp2++ continue
if(*cp '') /* label substitution */ if(cantake(i, 1)) linei++ ''/* i
nsert label prefix */ if(isdigit(*++cp)) /* which one */ /* *
* determine if an assembler instruction */ aifind() char *cp cp lp whi
le(isgraph(*lp)) ++lp while(isspace(*lp)) ++lp if(fldcmp(cp, "DW")
0) return (DW) else if(fldcmp(cp, "DB") 0) return (DB) else if(fldcmp(cp
, "DS") 0) return (DS) else if(fldcmp(cp, "EXT") 0) return (EX) else if
(fldcmp(cp, "SET") 0) return (SET) else if(fldcmp(cp, "EQU") 0) return (EQU
) else if(fldcmp(cp, "ORG") 0) return (ORG) else if(fldcmp(cp, "E ndx
*cp++ - '0' if(!mlnbrndx) mlnbrndx ++mlnext/* need new label number
*/ if(cantake(i, 5)) left(itou(mlnbrndx, line + i, 5))/* in
sert label number */ while(linei) ++i/* bypass label number */
continue if(cantake(i, 1)) linei++ *cp++
else linei++ 'n' break while(*cp) linei N
ULL /* ** abort with a usage message */ usage() ND") 0) return (END)
return (ERR) /* ** begin a line in the listing */ begline() ch
ar str6 if(pass 2 && list) if(begpage()) puts("line loc ----o
bject---- source") puts("") lline + 2 itou(lin, str, 5) fpu
ts(str, stdout) itox(loc, str, 6) fputs(str, stdout) putchar(' ') ccnt
0 ++lline /* ** begin a page */ begpage() char str4 if(
lline 58) lline 2 ++lpage if(lpage error("Usage MAC -L -NM -
P -S# object source...") left(itou(mlnbrndx, line + i, 5))/* in
sert label number */ while(linei) ++i/* bypass label number */
continue if(cantake(i, 1)) linei++ *cp++
else linei++ 'n' break while(*cp) linei N
ULL /* ** abort with a usage message */ usage() 1) puts("nnnnnnn")
fputs("file ", stdout) fputs(srcfn, stdout) itou(lpage, str, 4) f
puts(" page ", stdout) puts(str) puts("") return (YES) return (N
O) /* ** detect assembler instruction and process it */ doasm() in
t j if(atend(*lp) && (!stsym0 gotlabel)) return if((j aifind()) ERR) /*
lp - 2nd field or end */ lp skip(1, line)/* lp - 1st field */ j aif
ind() stsym0 NULL/* declare no symbol */ switch(j) case EX
doext() return case DW dodat(INTSZ) return case DB dodat(1)
return case DS doloc(YES) return case ORG doloc(NO) retur
n case SET doval(SETBIT) return case EQU doval(0) return cas
e END doend() return oprerr() /* ** define data (DB & DW)
*/ dodat(sz) int sz int dlm while(!atend(*lp)) if(isspace(*lp)
*lp ',') ++lp else if(*lp /* ** MAC2.C -- Small-Mac Assembler -- Part 2
Pass 1 and 2 Functions ** ** Copyright 1985 J. E. Hendrix */ #i
nclude stdio.h #include "mac.h" #include "rel.h" #include "ext.h" #define NO
CCARGC extern int iloc/* instr location */ /* ** add a new symbol to the
symbol table */ addsym() char *dest, *sour if(*stptr) error("- Symbol T
able Overflow") stpstn++ stptr/* set symbol pointer */ dest stptr sour
stsym while(*dest++ toupper(*sour++)) RAFBGCHDIE'"' *lp ''') /* string *
/ dlm *lp while(!atend(*++lp)) if(*lp dlm && *++lp ! d
lm) break if(pass 2) field *lp genabs(sz) else loc + sz
else ep lp/* expression */ expr(&field, &type
) lp ep if(pass 2) type & RELBITS if(type AB
S) genabs(sz) else if(sz 1) relerr() genabs(1)/* 1-byte re
locatable */ else if no label */ if(fmt find(cp)) /* machine inst
ruction */ fmt + INTSZ/* locate format byte in mit */ if(pass 2) doma
c2(fmt)/* do pass 2 processing */ else loc + (*fmt & 3) + 1/* bump location
counter */ return (YES) return (NO)/* may be pseudo-op */
/* ** detect machine instruction and generate object code */ domac2(ptr) char
*ptr int format, len, ilen, pcr, t, v, opcode, holding format getint(pt
r++)/* ptr is now 1 byte genrel()/* output relocatable item */
else loc + sz /* ** process END instruction
*/ doend() eom YES/* flag end of module */ onexpr() if((type & RELBI
TS) PREL) endt PREL endv field else if(field) relerr()
/* ** define external reference (EXT) */ doext() while(!atend(*lp))
while(isspace(*lp) *lp ',') ++lp continue lp getsym(lp, NO)/* fetc
h the next searly */ len ilen (format & 7) + 1 format 3/* first code/ex
pr bit */ iloc loc/* preserve instr loc for $ */ holding NO ep expbu
f/* set ep for expr() */ while(len-- 0) /* for each byte of code */ if(
format & 1) /* expression */ if(holding) holding NO f
ield opcode + opadj/* adjust last byte before expr */ opadj 0
genabs(1) expr(&v, &t)/* evaluate next expression */ ymbol
*/ if(badsym) symerr() continue/* symbol error */ else if(stfind()) /
* already in table */ if(stptrSTFLAG & (LABBITEQUBITSETBIT)) rederr() con
tinue else addsym()/* not yet defined */ if(pass 1) stptrSTFL
AG XRBITABS/* 1st ext ref is ABS 0 */ /* ** detect label and stow
it away */ dolabel() lp skip(1, line)/* locate first field */ lp get
sym(lp, NO)/* fetch a symbol */ if(gotlabel) /* got format 1/* pc relati
ve bit */ if(format & 1) if((t & RELBITS) PREL) v
- ilen + iloc/* calc offset from this instr */ t (t & RELBITS) + ABS
/* now abs, may be 1 byte */ else v - ilen/* adjust offset
from this instr */ pcr YES/* remember it's pc relative */
else pcr NO format 1/* size bit */ if(format & 1) /* 2-byte
expr */ if(t & XRBIT) /* ext a label */ if(badsym) laberr() retur
n if(stfind()) /* already in table */ if(pass 1) if(stptr
STFLAG & (LABBITEQUBITSETBITXRBIT)) rederr() return
else if(stptrSTFLAG & (LABBIT2EQUBITSETBITXRBIT)) rederr() return
else stptrSTFLAG LABBIT2 else addsym()/* not defined, stow it */
if(pass 1) putint(stptr + STVALUE, loc)/* value */ if(gote
p)/* flags */ ref */ if(v) /* must offset from ext ref */
item XPOFF type ABS field v
listcode(2, "+ ")/* list offset */ putrel()/* write 2-byte offset *
/ field prior/* will link to prior ref */
else field v/* expr value */ if((t & RELBITS) ABS)
genabs(2)/* write 2 absolute bytes */ else genrel()/* write 2 relo
catable bytes */ stptrSTFLAG LABBITPRELEPBIT else stptrSTFLAG LABBIT
PREL /* ** set location counter (ORG, DS) */ doloc(bump)
int bump if(onexpr()) if(bump) field loc + field else if(loc f
ield) loc field else bakerr() if(pass 2) item SETLC type PREL putr
el() /* ** detect machine instruction and process it */ domach()
char *fmt, *cp if(gotlabel) cp lp else cp skip(1, line)/* b
ackup RAFBGCHDIE --len else /* 1-byte expr */
if((t & RELBITS) PREL) relerr()/* 1 byte can't be relocatable */
if(pcr && (v 127 v -128)) rngerr()/* range error */
field v/* expr value */ genabs(1)/* write 1 absolute byte */
else /* code byte */ if(holding) field opcode
/* don't adjust, not last byte */ genabs(1)/* write prior code byte */
n") if(lerr & 16) outerr("- Bad Operationn") if(lerr & 32) outer
r("- Redundant Definitionn") if(lerr & 64) outerr("- Bad Symboln") i
f(lerr & 128) outerr("- Relocation Errorn") if(lerr & 256) outerr("- Unde
fined Symboln") if(lerr & 512) outerr("- Bad Parametern") if(lerr & 1
024) outerr("- Range Errorn") if(pause) wait() outerr("n") err Y
ES bakerr() lerr 1 numerr() lerr 2 experr() lerr 4
opcode *++ptr & 255/* hold this one, may be more */ holding
YES format 1 if(holding) field opcode + opadj
genabs(1)/* write last code byte */ /* ** define a symbol value
(SET, EQU) */ doval(set) int set char *ptr int found if(!stsym0 badsym
gotlabel) symerr() return if((found stfind()) 0) addsym()/* not defined
*/ ptr stptr/* preserve stptr */ onexpr()/* ev laberr() lerr 8 opre
rr() lerr 16 rederr() lerr 32 symerr() lerr 64 relerr() lerr 128
underr() lerr 256 parerr() lerr 512 rngerr() lerr 1024 /* ** list a c
ode item */ listcode(sz, suff) int sz char suff int i char str3 if(list
) i sz + sz + strlen(suff) if((ccnt + i) 16) endline() begline()
while(sz--) if(sz) itox((field 8) & 255, str, 3) else itox
(field & 255, str, 3) aluate expression */ if(pass 1 set) if(found 0
ptrSTFLAG & set) putint(ptr + STVALUE, field)/* value */ ptrSTF
LAG settype/* flags */ else rederr() else if(ptrSTFLAG &
(LABBITEQUBITSETBITXRBIT)) rederr() else ptrSTFLAG EQUBIT if(pass 2) /*
list value */ if((ptrSTFLAG & RELBITS) PREL) listcode(2, "' ")
else listcode(2, " ") /* ** end a line in the listing */ en
if(*str ' ') *str '0' fputs(str, stdout) fputs(suff
, stdout) ccnt + i /* ** output an error line */ outerr(str
) char *str begpage() fputs(str, stdout) ++lline /* ** require one e
xpression only */ onexpr() ep lp expr(&field, &type) if(atend(*ep))
return (YES) experr() return (NO) /* ** output end of program and
file */ putend() item EPROG type endt field endv putrel() item Edl
ine() char *cp int col col 0 if(pass 2 && list) if(part1) puts(""
) else part1 YES while(ccnt++ 16) putchar(' ') cp
line while(*cp) if(*cp ! 't') ++col putchar(*cp++) els
e do putchar(' ') while(++col % 8) ++cp /* ** ge
nerate an absolute value of sz bytes */ genabs(sz) int sz listcode(sz, " "
) loc + sz/* bump location counter */ item ABS while(sz--FILE type AB
S field 0 putrel() /* ** output entry points */ putent() char
*cp cp st while(cp stend) poll(YES) if(*cp) if(cpSTF
LAG & EPBIT) /* entry point */ item ENAME strncpy(symbol, cp,
MAXSYM + 1) putrel() cp + STENTRY
/* ** output entry point or external reference */ putex(cp, i) char *cp int i
item i type cpSTFLAG & RELBITS field getint(c) putrel() field 8
/* ** generate a relocatable item */ genrel() listcode(2, "' ")
loc + 2/* bump location counter */ item PREL putrel()/* write 2-byte relo
catable item */ /* ** gripe about errors in a line */ gripe() if(l
err) if(!list) outerr(line) if(lerr & 1) outerr("- Backward Moveme
ntn") if(lerr & 2) outerr("- Bad Numbern") if(lerr & 4) outerr("
- Bad Expressionn") if(lerr & 8) outerr("- Bad Label RAFBGCHDIEp + STVA
LUE) strncpy(symbol, cp, MAXSYM + 1) putrel() /* ** output ent pnt
and ext ref symbols */ putexs() int i char *cp ccnt 0/* init for show
() */ shell(0, stn - 1)/* sort the symbols */ if(list && !begpage()) ++lli
ne puts("") for(i 0 i stn ++i) poll(YES) cp stpi if(list)
show(cp) if(cpSTFLAG & XRBIT) putex(cp, XCHAIN) if(cpSTFLAG & EPBIT) p
utex(cp, EPOINT) puts("") /* ** output module /* ** MAC3.C --
Small-Mac Assembler -- Part 3 Expression Analyzer ** ** Copyrig
ht 1985 J. E. Hendrix ** */ #include stdio.h #include "mac.h" #include "rel
.h" #include "ext.h" #define NOCCARGC/* no argument count passing */ #def
ine OR 1/* */ #define XOR 2/* */ #define AND 3/* & */ #define
EQ 4/* */ #define NE 5/* ! */ #define LE 6/* */ #define GE
7/* */ #define LT 8/* */ #define GT 9/* */ #define RSH name */
putname() int i, j item PNAME if(objfn1 '') i 2 else i 0 j 0
while(objfni && objfni ! '.' && j MAXSYM) symbolj++ objfni++ symbol
j NULL putrel() /* ** output program size */ putsz() item PSI
ZE type PREL field loc putrel() /* ** shell sort the symbols
*/ shell(l, u) int l, u int gap, i, j, k, jg gap (u - l + 1) 1 whi
le(gap 0) i gap + l while(i u) 10/* */ #define LSH 11/* *
/ #define PLUS 12/* + */ #define MINUS 13/* - */ #define MULT 14/* * */
#define DIV 15/* / */ #define MOD 16/* % */ #define CPL 17/* */ #d
efine NOT 18/* ! */ #define LPN 19/* ( */ #define RPN 20/* ) */ #def
ine LOC 21/* $ */ #define SYM 22/* symbol */ #define NUM 23/* number */
#define EOE 24/* end of expr */ int number,/* value of numeric token *
/ iloc,/* instruction location */ ct/* cu j i++ - gap while(j
l) jg j + gap if(strcmp(stpj, stpjg) 0) break k
stpjg stpjg stpj stpj k j - gap gap 1
/* ** show a symbol */ show(cp) char *cp char str5 begpage()
itox(getint(cp + STVALUE), str, 5) fputs(str, stdout) if((cpSTFLAG & RELBITS
) PREL) fputs("' ", stdout) else fputs(" ", stdout) fputs(cp, stdout)
ccnt + 6 + strlen(cp) rrent token */ int/* operators by precedence level */
l1ops OR, NULL, l2ops XOR, NULL, l3ops AND, NULL, l4ops EQ, NE,
NULL, l5ops LE, GE, LT, GT, NULL, l6ops LSH, RSH, NULL, l7ops PLUS,
MINUS, NULL, l8ops MULT, DIV, MOD, NULL /* ** evaluate the next express
ion at ep ** caller must set ep */ expr(value, type) int *value, *type ct
NULL/* no current token */ if(token(EOE)) *value 0 *type ABS/* if
(cpSTFLAG & LABBIT) putchar('') ++ccnt if(cpSTFLAG & EPBIT) putchar('') ++cc
nt if(cpSTFLAG & XRBIT) fputs("##", stdout) ccnt + 2 if(ccnt 60) wh
ile(ccnt % 20) putchar(' ') ++ccnt else puts("") ++lline ccnt 0 /* *
* find stsym in symbol table ** leave stptr pointing to desired or null entry
** return true if found, else false */ stfind() char *start stptr star
t st + hash(stsym, stmax) * STENTRY while(*stptr) if(strcmpnull expres
sion */ return if(!level1(value, type) ct ! EOE) experr()
level1(v, t) int *v, *t return (down(l1ops, level2, v, t)) level2(v, t) int *v,
*t return (down(l2ops, level3, v, t)) level3(v, t) int *v, *t return (down(l3o
ps, level4, v, t)) level4(v, t) int *v, *t return (down(l4ops, level5, v, t))
level5(v, t) int *v, *t return (down(l5ops, level6, v, t)) level6(v, t) int *v,
*t return (down(l6ops, level7, v, t)) level7(v, t) int *v, *t retu(stsym, stpt
r) 0) return (YES) if((stptr + STENTRY) stend) stptr st if(stptr s
tart) break return (NO) t 0 /* ** find stsym in symbol
table ** leave stptr pointing to desired or null entry ** return true if found
, else false */ stfind() char *start stptr start st + hash(stsym, stm
ax) * STENTRY while(*stptr) if(strcmp RAFBGCHDIErn (down(l7ops, level8
, v, t)) level8(v, t) int *v, *t return (down(l8ops, unary, v, t)) unary(v,
t) int *v, *t if(token(CPL)) /* */ if(!unary(v, t)) return (NO)
*v *v goto check else if(token(NOT)) /* ! */ if(!unary(v ,t
)) return (NO) *v !*v goto check else if(token(MINUS)) /* -
*/ if(!unary(v, t)) return (NO) *v -*v check if(*t & RELBIT
S) relerr()/* can't be relocatable */ *t & RE else /* rel oper a
bs */ if(tr ABS) switch(oper) case PLUS case MINUS
*t PREL return (ok) return (NO) else
/* rel oper rel */ switch(oper) case MINUS case EQ ca
se LT case LE case NE case GT case GE return (ok)
return (NO) /* ** apply a binary operator */ binary
(left, oper, right) int left, oper, rLBITS/* force ABS */ return (YES)/* li
e about it */ else return (primary(v, t)) primary(v, t) int *v,
*t int ok if(token(LPN)) /* ( */ ok level1(v, t) if(token(RPN)
) return(ok) return (NO) *t ABS *v 0/* defaults */ if(token(N
UM)) /* number */ *v number return (YES) else if(token(LOC))
/* $ */ *v iloc *t PREL return (YES) else if(to
ken(SYM)) /ight switch(oper) case OR return (left right) ca
se XOR return (left right) case AND return (left & right) cas
e EQ return (left right) case NE return (left ! right) case L
E return (left right) case GE return (left right) case LT
return (left right) case GT return (left right) case RSH r
eturn (left right) case LSH return (left right) case PLUS retur
n * symbol */ if(stfind()) *t stptrSTFLAG if(!(stptrS
TFLAG & XRBIT)) if(gotxr) rederr() *v getint(stptr + STV
ALUE) else goto doxr/* ext ref */ else if(
gotxr) /* define new ext ref */ addsym()/* symbol */ *t XRBIT
ABS/* 1st ext ref is ABS 0 */ doxr prior getint(stptr + STVAL
UE)/* save prior ptr */ putint(stptr + STVALUE, loc)/* this bec(left +
right) case MINUS return (left - right) case MULT return (left *
right) case DIV return (left / right) case MOD return (left %
right) return (NULL) /* ** scan for next token */ token(wan
t) int want int len if(ct) return (found(want, ct))/* already have a toke
n */ while(isspace(*ep)) ++ep switch(*ep++) case '' return (found(wa
nt, OR)) case '' return (found(want, XOR)) case '&' return (found(waom
es prev */ stptrSTFLAG XRBITPREL/* ext ref is relative */
else underr()/* undefined */ return (YES) return (N
O) /* ** drop to a lower level */ down(ops, level, v, t) int *ops, (*l
evel)(), *v, *t int *op if(!(*level)(v, t)) return (NO) op --ops w
hile(*++op) if(token(*op)) if(!down2(*op, level, v, t)) return (NO
) if(token(EOE)) return (YES) op ops return (nt,
AND)) case '+' return (found(want, PLUS)) case '-' return (found(want
, MINUS)) case '*' return (found(want, MULT)) case '/' return (found(w
ant, DIV)) case '%' return (found(want, MOD)) case '' return (found(wa
nt, CPL)) case '(' return (found(want, LPN)) case ')' return (found(wa
nt, RPN)) case '$' return (found(want, LOC)) case ',' return (found(wa
nt, EOE)) case '!' if(*ep++ '') return (found(want, NE)) --ep
YES) /* ** binary drop to a lower level */ down2(oper, level, v, t) i
nt oper, (*level)(), *v, *t int ok, vr, tr, tl ok (*level)(&vr, &tr)
*v binary(*v, oper, vr)/* apply operator */ tl *t & RELBITS *t (*t tr)
& RELBITS/* merge flag bits & default to ABS */ tr & RELBITS if(tl ABS)
if(tr ABS) return (ok)/* abs oper abs */ else /* abs oper rel */
if(oper PLUS) *t PREL return (ok) return (NO) RAFBGCHDIE
return (found(want, NOT)) case '' if(*ep++ '') return (fou
nd(want, LE)) --ep if(*ep++ '') return (found(want, LSH)) --ep
return (found(want, LT)) case '' if(*ep++
'') return (found(want, GE)) --ep if(*ep++ '') return (found(wa
nt, RSH)) --ep return (found(want, GT)) cas
e '' if(*ep++ '') return (found(want, EQ)) --ep --ep ep case 'V'
case 'W' case 'X' case 'Y' case 'Z' case '0' case '1' case '2' case '3'
case '4' case '5' case '6' case '7' case '8' case '9' case ''
case '.' case '$' case '' case '' if(j MAXLAB) stsymj++ toupper(*a
t) ++at continue case '' gotlabel YES
if(*++at '') gotep YES ++at case ' ' case 't' case 'n'
case ',' case NULL case COMMENT getsym(ep, YES) if(stsym0) r
eturn (found(want, SYM)) if(len getnum(ep)) ep + len return (found(want,
NUM)) if(atend(*ep)) return (found(want, EOE)) return
(NO) /* ** what was found */ found(want, have) int want, have ct
have/* new current token */ if(ct want) /* was it sought */ if(ct ! EO
E) ct NULL/* yes, pass it by */ return (YES)/* caller has a hit */
return (NO)/* sorry, no hit */ while(isspace(*at)) ++at break
stsymj NULL if(stsym0 && !gotlabel) gotnam YES else gotnam NO
return (at) ymj++ toupper(*at) ++at continue
case '' gotlabel YES if(*++at '') gotep YES ++at
case ' ' case 't' case 'n' case ',' case NULL case COMMENT
/* ** get hex, dec, or oct number as binary value in number **
return length of field processed, else zero */ getnum(at) char *at int b
ump, len char *end, *cp cp at if((*cp ''' *cp '"') && *cp cp2) /* quo
ted char */ number cp1 & 255 return (3) switch(*cp) ca
se '0' case '1' case '2' case '3' case '4' case '5' case '6' case '7' case
'8' case '9' end cp bump 1 while(YES) switch(toupper(*/
* ** LNK.C -- Small-Mac Linkage Editor ** ** Copyright 19
85 J. E. Hendrix ** ** Usage LNK -B -G# -M program module/library... ** ** -
B A BIG program is being linked, so use all **
of free memory for the symbol table and load the ** progr
am to disk entirely. This is slower but it ** gets the job
done. ** ** -G# Make program absolute at address # (hex) and *
* oend)) default if(isxdigit(*end)) ++end continue
bump 0 len utoi(cp, &number) break
case 'Q' case 'O' len otoi(cp, &number) break case 'H' l
en xtoi(cp, &number) break break if(len ! (end -
cp)) numerr()/* bad number */ return ((end - at) + bump) return (0
) /* ** get a symbol into stsym */ getsym(at, ref) char *at int ref
int j j badsyutput as "program.LGO" instead of "program.COM". ** ** -M
Monitor linking activity. ** ** program A file speci
fier for the program being linked. ** The default, and only
allowed, extension is REL. ** ** module/library... A list of zero or more mod
ule (.REL) and/or ** library (.LIB) files. Each module is l
inked to ** the program and the libraries are searched for
** just those modules which satim gotep gotxr gotlabel 0
if(!isdigit(*at)) while(YES) switch(toupper(*at)) cas
e '#' if(ref) gotxr YES if(*++at '#') ++at break default
if(ref) break badsym YES case 'A' case 'B' case '
C' case 'D' case 'E' case 'F' case 'G' case 'H' case 'I' case 'J'
case 'K' case 'L' case 'M' case 'N' case 'O' case 'P' case 'Q' case
'R' case 'S' case 'T' case 'U' RAFBGCHDIEsfy one or more **
unresolved external references. ** ** NOTE Merely declaring a symb
ol to be external will cause ** it's module to be loaded. It need not actually
be referenced. ** ** NOTE The symbol TMNAME is defined to be the name of the
** terminal module i.e., the module which must be loaded last ** of all. That
module contains special code which identifies ** the physical end of the progr
am and the beginning of free ** memory. The linker is sensitive to its name an
d -1/* value of resolved ext ref */ #define XRPLUS -2/* ext-ref-plu
s-offset flag */ #define TMNAME "END"/* terminal module name */ #define MODE
XT ".REL" #define LIBEXT ".LIB" #define NDXEXT ".NDX" #define COMEXT ".CO
M" #define LGOEXT ".LGO" #define OFLEXT ".O$" #define REFEXT ".R$" /*
** symbol table definitions */ #define NXT 0/* next-entry pointer */ #de
fine VAL 2/* offset value */ #define SYM 4/* symbol */ #define SSZ (SYM+
MAXSYM+1)/* size of twaits until ** all other modules are loaded before loading
the terminal module. ** ** The absence of an extension, or a .REL extension,
identifies a module ** whereas, a .LIB extension identifies a library. If nece
ssary, a ** library is rescanned to resolve backward external references betwee
n ** modules within the library. Module files and libraries are processed ** i
n the order in which they occur in the command line. ** ** Drive Designators (
e.g. B) ** - allowed with module and library nable entry */ #define HIGH 12
7/* high-value byte */ #define CUSHION (200*SSZ)/* reserved for table at overf
low point */ char high HIGH,0/* high-value symbol */ /* ** global variable
s */ char *xr,/* external reference */ *nxt,/* next in ext ref chain */
*ep,/* entry point */ *buffer,/* beginning of code buffer */ *bnext,/* next
byte in code buffer */ *sfree,/* head of freed entry list */ *snext,/* next
symbol table entry */ *cloc,/* location cames ** - program drive designato
r locates the input .REL file ** - output goes to the default drive ** **
Filename Extensions ** - must specify .LIB with library name ** - standa
rd extensions are ** ** .REL relocatable object module ** .LIB libr
ary of object modules ** .NDX index to library (not user specified) **
.COM CP/M command file (default output) ** .LGO load-and-go file (-G# o
utput) ** .O$ temporary overflow file ** .R$ temporaounter */ *c
mod,/* module location */ *cbase,/* base address */ *csize,/* program size (
fake unsigned) */ *goloc,/* go location */ *cdisk,/* disk overflow location
*/ *epfirst,/* first entry point */ *epprev,/* previous entry point */ *ep
next,/* next entry point */ *xrfirst,/* first external reference */ *xrprev,
/* previous external reference */ *xrnext,/* next external reference */ mod
nameMAXSYM+1,/* name of current module */ infn NAMESIZry reference file **
** Enter control-S to pause and control-C to abort. ** ** NOTE Compile only
with Small-C 2.1 (edit level 63) or later. ** Edit 63 fixes CSYSLIB so that whe
n it overflows a buffer while ** writing into a file it will no longer assume t
hat it is at the ** end of the file. This prevents it from padding a sector wi
th ** 1A (hex) in the middle of a file when random access is being used. */ #
include stdio.h #include "notice.h" #include "rel.h" #define NODEBUG/* don'
t comE,/* input filename */ ndxfn NAMESIZE,/* index filename */ tmfn NA
MESIZE,/* terminal-module library name */ csfn NAMESIZE,/* code seg filenam
e */ crfn NAMESIZE,/* code rel filename */ outfn NAMESIZE/* output file
name */ int lgo,/* load-and-go format */ monitor,/* monitor activity */
instr,/* instruction to plant at 0000 */ addr,/* start address */ ref,
/* reference to program relative item */ big,/* linking a big program */ x
pile debug displays */ #define NOCCARGC/* don't pass arg counts to functions */
#define NAMESIZE 15 #define MAXFIL 10 #define STACK 512/* allow
for stack space */ #define AUXBUF 2048/* aux buffer for reference file */ #d
efine MAXOPEN 4/* maximum files opened */ #define OHDOPEN 164/* memery ov
erhead per open file */ #define COMBASE 259/* 0100H + 3 */ #define RET
201/* RET instruction (0C9H) */ #define JMP 195/* JMP instruction (0C3H)
*/ #define RES RAFBGCHDIErplus,/* value of offset for next ext ref */ xrpf
lagXRPLUS,/* value of xrplus flag */ ndxfd,/* index fd */ inblock,/* block
of next library member */ inbyte,/* byte in block of next library member */
tmblock,/* block of terminal module in tmfn */ tmbyte,/* byte of terminal
module in tmblock */ csfd,/* code segment fd */ crfd,/* code relative inde
x fd */ outfd/* output fd */ extern int Uchrpos/* lives in CSYSLIB */ m
ain(argc,argv) int argc, argv fpu if((i strcmp(symbol, xrnext + SYM)) 0)
return (NO) if(i 0) return (YES) xrnext getint(xrnext) re
turn (NO) /* ** link external references to entry points */ link()
int cspg, csch cspg ctell(csfd)/* remember temp file position */ csch c
tellc(csfd) xrnext getint(xrprev xrfirst)/* first external reference */
epnext getint(epfirst)/* first entry point */ while(YES) if(strcmp(xrn
ext + SYM, epnext + SYM) 0) /* xr ts("Small-Mac Linkage Editor, ", stderr) fpu
ts(VERSION, stderr) fputs(CRIGHT1, stderr) getsw(argc, argv)/* fetch and r
emember switches */ getmem()/* acquire maximum memory buffer */ phase1(arg
c, argv)/* load and link */ if(!okay()) abort(7)/* quit early */ phase2()/
* generate final output */ /* ** get as much memory as possible for symb
ol table */ getmem() char sz8 int max max avail(YES)/* how much ava
ilable */ max - STACK + AUXBUF +ep */ epnext getint(epnext) co
ntinue if(strcmp(xrnext + SYM, epnext + SYM) 0) /* xr ep */
xrnext getint(xrprev xrnext) continue if(*(xrnext + SYM)
! HIGH) /* xr ep */ resolve()/* resolve this ext ref */ putint(x
rprev, getint(xrnext))/* delink from xr chain */ putint(xrnext, sfree)/*
link to prev freed entry */ sfree xrnext/* make first freed entry */
xrnext getint(xrprev)/* a (MAXOPEN * OHDOPEN) buffer bnext malloc(max)
/* allocate space */ snext buffer + (max - SSZ)/* first entry */ sfree
0/* no reusable entries yet */ #ifdef DEBUG if(monitor) itou(max, sz, 8) pu
ts2(sz, " Byte Buffer") #endif newtbl(&epfirst)/* set low and high ent pts *
/ newtbl(&xrfirst)/* set low and high ext refs */ /* ** get next modu
le name */ getname() if(getrel() PNAME) strcpy(modname, symbol)
return (YES) if(dvance to next ext ref */ continue/* same ext
ref in diff modules */ break cseek(csfd, cspg, 0)/* restor
e temp file position */ Uchrposcsfd csch /* ** load a module */ lo
ad() char str8 epprev epfirst/* start at the very beginning */ xrprev
xrfirst do poll(YES) switch(getrel()) case DSIZE if(!fi
eld) break default error("- Unsupported Link Item") case ER
R error("- Corrupt Moditem EFILE) return (NO) error2(infn, " - Corrupted")
/* ** read next entry from library index file */ getndx() if(read(n
dxfd, &inblock, 2) ! 2 /* next block */ read(ndxfd, &inbyte, 2) ! 2) /* ne
xt byte in block */ error2("- Error Reading ", infn) /* ** g
et switches from command line */ getsw(argc, argv) int argc, *argv char ar
gNAMESIZE int argnbr, b, len argnbr 0 while(getarg(++argnbr, arg, NAME
SIZE, argc, argv) ! EOF) ule") case EPROG if(type PREL)
puts2("Start In ", modname) goloc field + cmod
case ENAME break/* bypass enames */ case
XCHAIN newsym(&xrprev, "xr") break case EPOINT newsym
(&epprev, "ep") break case PSIZE cmod cloc
if(monitor) itox(field, str, 8)
fputs(str, stdout) fputs( if(arg0 ! '-') continue/* skip file names *
/ if(toupper(arg1) 'G') lgo YES len xtoi(arg + 2, &b)
if(len 0 && !arglen + 2) cbase b else usage() else if(toupper
(arg1) 'B') big YES else if(toupper(arg1) 'M') monitor YES else us
age() /* ** is symbol an unresolved ext ref ** on return of true,
xrnext - matching xr entry */ isunres() int i xrnext getint(xrfirst)
while(xrnext) RAFBGCHDIE" Bytes at", stdout) itox(
cloc, str, 6) fputs(str, stdout) fputs("'", stdout)
itox(cloc+cbase, str, 6) fputs(str, stdo
ut) puts2(" ", modname) if(!csfd &&
(big (bnext + field) (snext - CUSHION)))
cdisk cloc/* disk overflow point */ csfd open(csf
n, "w+")/* open overflow file */ #ifdef DEBUv new/* this becomes prev entry */
if(type PREL) field field + cmod/* adjust for module location */ putint
(new + VAL, field)/* load value */ strcpy(new + SYM, symbol)/* load symbol */
#ifdef DEBUG if(monitor) itox(getint(new + VAL), at, 8) fputs(at
, stdout) fputs(" ", stdout) fputs(ts, stdout) fputs(" ", stdout) puts
(symbol) #endif /* ** initial table entries */ newtbl(low) int
*low *low snext/* always points to low G if(monitor)
itox(cdisk, str, 8) puts2(str, " Overflow Point")
#endif break
case SETLC field field + cmod while(cloc field) /* ad
j loc ctr */ if(csfd) write(csfd, "0", 1)
else *bnext++ 0 ++cloc
break case XPOFF write(crfd, &entry */ strcpy(snext
+ SYM, "")/* store low symbol */ putint(snext, snext - SSZ)/* link to next (h
igh) symbol */ snext - SSZ/* now point to next entry */ strcpy(snext + SYM
, high)/* store high symbol */ putint(snext, 0)/* end of chain */ snext -
SSZ/* bump to next entry */ /* ** get next module name */ nxtmod()
getndx()/* get location and */ seek()/* go straight to next member */ ret
urn (getname()) /* ** report the outcomexrpflag, 2)/* flag xr plus */
write(crfd, &field, 2)/* xr offset */ brea
k case PREL field field + cmod if(csfd) write(csfd
, &field, 2)/* put on disk */ else /* put in memory */
putint(bnext, field) bnext + 2
write(crfd, &cloc, 2)/* reference for pass 2 *
/ cloc + 2 brea and decide whether to qu
it */ okay() int err char *eplast err eplast 0 xrnext getint(xrfi
rst)/* first external reference */ epnext getint(epfirst)/* first entry poin
t */ while(YES) poll(YES) if(strcmp(xrnext + SYM, epnext + SYM) 0
) /* ext ent */ if(epnext eplast) puts2("- Redundant ", xrne
xt + SYM) err YES eplast epnext epnext getin
t(epnext) continue if(strcmp(xrnek case ABS if(csf
d) write(csfd, &field, 1)/* put on disk */ else *bnext++ fi
eld/* put in memory */ ++cloc break
while(item ! EPROG) /* ** create new file specifier from an ol
d one */ newfn(dest, sour, ext) char *dest, *sour, *ext if(sour1 '' && st
rcmp(ext, NDXEXT)) sour + 2 while(*sour && *sour ! '.') *dest++ *sour++ s
trcpy(dest, ext) /* ** store new symbol table enxt + SYM, epnext + SYM)
0) /* ext ent */ puts2("- Unresolved ", xrnext + SYM) err YES
xrnext getint(xrnext) continue if(*(xrnext + SYM) ! H
IGH) /* ext ent */ xrnext getint(xrnext) continue/* same ext ref
in diff modules */ break if(err) return (NO) return (Y
ES) /* ** load input files and library members */ phase1(argc, argv) i
nt argc, *argv char sz8 int i, lib, eof etry ** they arrive in alphan
umeric order */ newsym(prev, ts) int *prev char *ts char at8, *cp, *new
if(new sfree) sfree getint(sfree)/* use old entry */ else new snext
if((snext - SSZ) bnext) error("- Must Specify -B Switch") cp *p
rev while(strcmp(symbol, cp + SYM) 0) /* find position */ *prev cp
cp getint(cp) putint(new, cp)/* point new entry ahead */ putint(*
prev, new)/* point prev entry here */ *pre RAFBGCHDIEof EOF cdisk -1/*
high value for pointer */ if(lgo) instr RET/* load and go format */ else
instr JMP cbase COMBASE/* COM file format */ i 0 while(getarg(++i, infn
, NAMESIZE, argc, argv) ! EOF) if(infn0 '-') continue/* skip switches */
if(extend(infn, MODEXT, LIBEXT)) lib YES else lib NO
if(!*outfn) /* first file name */ if(lgo) newfn(outfn, infn, LGOEXT)
else newfn(outfn, infn, COMEXT) newfe */ if(xrplus) fi
eld + xrplus/* apply offset */ xrplus 0 write(outfd, &field
, 2)/* copy 2 bytes adjusted */ readref()/* get next reference */ ++cl
oc/* need additional increment */ if(ferror(outfd)) error2("- Error Wr
iting ", outfn) close(outfd) if(csfd) if(ferror(csfd)) error2("- Err
or Reading ", csfn) close(csfd) delete(csfn) if(ferror(crfd))
error2("- Error Reading ", crfn) close(crfd) n(csfn, infn, OFLEXT)
newfn(crfn, infn, REFEXT) crfd open(crfn, "w+")/* open reference file
*/ auxbuf(crfd, AUXBUF)/* extra buffering lowers head movement */
if(lib) search()/* search library if unresolved ext refs */ else
inrel open(infn, "r")/* must open */ getname()/* program name */
load()/* load module */ link()/* link previous modules */ clos
e(inrel)/* must close */ if(!*ou delete(crfn) /* ** rea
d next reference */ readref() read(crfd, &ref, 2)/* get next reference */
if(ref XRPLUS) /* ext ref offset flag */ read(crfd, &xrplus, 2)/* yes,
get offset value */ read(crfd, &ref, 2)/* then get reference */
/* ** resolve external references to a given symbol */ resolve() char a
t5 if(!(xr getint(xrnext + VAL))) return/* head of ext ref chain */ ep g
etint(epnext + VAL)/* entry point address */ tfn) usage() if(*tmfn) /* must
get terminal module */ inrel open(tmfn, "r") inblock tmblock inbyte
tmbyte seek() getname() load() link() close(inrel) csize c
loc if(ferror(crfd)) error2("- Error Writing ", crfn) write(crfd, &eof, 2)
rewind(crfd) if(ferror(csfd)) error2("- Error Writing ", csfn) rewind(
csfd) itox(csize, sz, 8) puts2(sz, " Bytes (hex)") itou(csize, sz, 8) puts
2(sz, " Bytes (dec)") /* ** generate abso do #ifdef DEBUG if(moni
tor) poll(YES) fputs("Resolving ", stdout) itox(xr, at, 5)
fputs(at, stdout) fputs(" to ", stdout) itox(ep, at, 5) fputs(at,
stdout) puts2(" ", xrnext + SYM) #endif if(xr cdisk)
/* in memory */ nxt getint(xr + buffer) if(nxt 0) ep + cbase/*
end of chain is absolute */ putint(xr + buffer, ep) else /*
on disk */ xrseek(xr - cdisk) read(csfdlute output in COM or LGO format
** ** COM format JMP start program ** ** LGO format RET start prog-base prog
-size program */ phase2() char at5 outfd open(outfn, "w") write(out
fd, &instr, 1)/* plant first instruction */ addr cbase + goloc write(outf
d, &addr, 2)/* with its address */ if(lgo) write(outfd, &cbase, 2)/* wh
ere to load for execution */ write(outfd, &csize, 2)/* how many bytes to lo
ad */ cloc -1/* allow efficient , &nxt, 2) if(nxt 0) ep + cbas
e/* end of chain is absolute */ xrseek(xr - cdisk) write(csfd, &ep, 2)
while(xr nxt) /* ** search a library */ search() int
linked linked NO newfn(ndxfn, infn, NDXEXT) ndxfd open(ndxfn, "r")
inrel open(infn, "r") while(YES) /* rescan till done */ while(nxtmod()
) if(strcmp(modname, TMNAME) 0) /* will load this one last */
strcpy(tmfn, infn) tmblock ipre-increment */ readref()/* get first
reference */ while(++cloc csize) /* while more code */ if(cloc ! ref) /
* not relative reference */ if(cloc cdisk) field *(cloc + buff
er) else read(csfd, &field, 1) write(outfd, &field, 1)/* copy one
byte as is */ continue if(cloc cdisk)/* get next 2-byte rel
ative item */ field getint(cloc + buffer) else read(csfd, &field, 2
) field field + cbase/* make absolut RAFBGCHDIEnblock tmbyte in
byte continue while(getrel() ENAME) poll(YE
S) if(isunres()) /* unresolved reference */ load()/* load mo
dule */ link()/* link to previous ones */ linked YES
break if(!linked) break linked N
O rewind(ndxfd) close(ndxfd) close(inrel) /* ** seek to
next member in old library */ seek() ifefine NAMESIZE 15 #define STACK
256/* allow for stack space */ #define RET 201/* RET instruction */
#define LGOEXT ".LGO" /* ** global variables */ char *base,/* base add
ress */ *start,/* starting address */ infnNAMESIZE/* input filename */ i
nt infd,/* input fd */ size,/* program size */ monitor,/* monitor activ
ity */ go/* execute */ /* ** load program.LGO with format ** **
RET start base size program */ main((inblock EOF) error("- Premature End
of Index") if(cseek(inrel, inblock, 0) EOF) error("- Corrupt Library or
Index") Uchrposinrel inbyte inrem 0/* force getrel() to read a byte */
/* ** abort with a usage message */ usage() error("Usage LNK -B -G
# -M program module/library...") /* ** seek external reference */ xrse
ek(byte) int byte if(cseek(csfd, (byte 7) & 511, 0) EOF) error2("- Se
ek Error in ", csfn) Uchrposcsfd argc,argv) int argc, argv int i char str
5 fputs("Small-Mac Load-and-Go Loader, ", stderr) fputs(VERSION, stderr) f
puts(CRIGHT1, stderr) getsw(argc, argv)/* process switches */ i 0 whil
e(getarg(++i, infn, NAMESIZE, argc, argv) ! EOF)/* get fn */ if(infn0 ! '-'
) i 0 break if(i) usage() extend(infn, LGOEXT, LGOEXT) infd open(infn
, "r") read(infd, &base, 1) if(base ! RET) error("- Invalid LGO Format")
read(infd, &start, 2)/* get byte & 127 x") Uchrposinrel inbyte inr
em 0/* force getrel() to read a byte */ /* ** abort with a usage messag
e */ usage() error("Usage LNK -B -G# -M program module/library...")
/* ** seek external reference */ xrseek(byte) int byte if(cseek(csfd, (b
yte 7) & 511, 0) EOF) error2("- Seek Error in ", csfn) Uchrposcsfd st
arting address */ read(infd, &base, 2)/* get base address */ read(infd, &
size, 2)/* get program size */ if(monitor) /* monitor */ fputs("From ",
stdout) itox(base, str, 5) fputs(str, stdout) fputs(", To ", st
dout) itox(base+size, str, 5) fputs(str, stdout) fputs(", Size ", stdout)
itox(size, str, 5) fputs(str, stdout) fputs(", Start ", stdout) itox(s
tart, str, 5) puts(str) malloc(STACK)/* new machine stack */ ma
lloc(1)/* leaves new stack address in HL */ #asm SPHL move stack LXI H,
0 CP/M return PUSH H re-stack CP/M return #endasm read(infd, base, size
)/* load program */ if(ferror(infd)) error2("- Error Reading ", infn) if(g
o) /* execute program */ start/* leaves starting address in HL */ #asm
PCHL Jump to start address with CP/M return on top of this stack. #
endasm exit(0) /* ** get switches from command line */ ge/*
** LGO.C -- Small-Mac Load-and-Go Loader ** ** Copyright 1985 J
. E. Hendrix ** ** Usage LGO -G -M program ** ** -G Execute program afte
r loading. ** ** -M Monitor load address and size. ** ** "Program" is a
file specifier for the program being loaded. ** Default, and only allowed, exte
nsion is LGO. ** ** Enter control-S to pause and control-C to abort. */ #inc
lude stdio.h #include "notice.h" #define NOCCARGC/* don't pass arg counts to
functions */ #d RAFBGCHDIEtsw(argc, argv) int argc, *argv char argNAMES
IZE int argnbr argnbr 0 while(getarg(++argnbr, arg, NAMESIZE, argc, argv)
! EOF) if(arg0 ! '-') continue/* skip file names */ if(toupper(arg1)
'G') go YES else if(toupper(arg1) 'M') monitor YES else usage()
/* ** abort with a usage message */ usage() error("Usage LGO
-G -M program") NAMESIZE,/* new library name (temporary) */ newndxNAMESI
ZE,/* new index name (temporary) */ *modname/* points to module name buffer */
int *mptr,/* module name pointers */ *mdone,/* done with module */ mo
dules,/* count of modules to process */ all,/* process all members */ innd
x,/* input index fd */ outndx,/* output index fd */ oldblock,/* block of n
ext input member */ oldbyte,/* byte in block of next input member */ newbl
ock,/* blo/* ** LIB.C -- Small-Mac Library Manager ** ** Co
pyright 1985 J. E. Hendrix ** ** Usage LIB -DPTUXA library module... ** ** -
D delete named modules ** -PA print named, or all (-PA), modules on stdout
** -TA table of contents of named, or all (-TA), files on stdout ** -U u
pdate (adding/replace) named modules ** (gets module names from stdin if
not in command line) ** -XA extract named, or all (-XA), modules ** **
The A suffix obviates promck of next output member */ newbyte/* byte in bl
ock of next output member */ int item2, type2, field2, inrel2, inrem2, inch2
char sym2NAMESIZE main(argc,argv) int argc, argv fputs("Small-Mac Libra
ry Manager, ", stderr) fputs(VERSION, stderr) fputs(CRIGHT1, stderr) mptr
calloc(MAXMODS, 2)/* allocate zeroed memory */ mdone calloc(MAXMODS, 2)
if(getarg(1, cmd, 5, argc, argv) EOF) usage() cmd1 toupper(cmd1) cmd2
toupper(cmd2) if(cmd0pting stdin for module ** names when none are in
the command line. This is handy for ** eliminating operator interventi
on, especially in batch mode. ** Ordinarily, when no modules are given i
n the command line, ** LIB prompts the user (if stdin is not redirected)
and ** accepts one module name at a time from stdin. If none **
are given (CR response to first prompt) and the command ** switch is -
P, -T, or -X then all members of the library are ** ! '-' (cmd2 && cmd2 !
'A') strlen(cmd) 3) usage() if(getarg(2, oldlib, NAMESIZE, argc, argv) EO
F) usage() extend(oldlib, LIBEXT, LIBEXT) newfn(oldndx, oldlib, NDXEXT)
newfn(newlib, oldlib, LEXT) newfn(newndx, oldlib, NEXT) getmods(argc, arg
v)/* gather switches and module names */ switch(cmd1) case 'D' drop()
break case 'T' table() break case 'U' update() break case 'X
' extract() break case 'P' print() break processed. ** ** Drive Desi
gnators (e.g. B) ** allowed with any library and module names ** new l
ibrary and index go on same drive as old ** will default to the default dri
ve ** ** Filename Extensions ** do NOT specify with library or module nam
es ** standard extensions are ** ** .REL relocatable object module
** .LIB library of object modules ** .NDX index to library ** .L
$ temporary new library ** .N$ temporary new index ** ** En def
ault usage() /* ** add module to library */ addmod(name) char *n
ame char *cp, namNAMESIZE saverel()/* save REL variables */ strcpy(nam
, name) extend(nam, MODEXT, MODEXT) inrel open(nam, "r") cpymod(NO)/* do
not already have header */ close(inrel) restrel()/* restore REL variables
*/ strcpy(nam, name) if(nam1 '') cp nam + 2 else cp nam cpMAXSYM NU
LL /* ** close input library and index */ closein(ter control-S to pau
se and control-C to abort. */ #include stdio.h #include "notice.h" #include
"rel.h" #define NOCCARGC/* no argument count passing */ #define NAMESIZE 1
5 #define MAXMODS 200 #define MODEXT ".REL" #define LIBEXT ".LIB" #defin
e NDXEXT ".NDX" #define LEXT ".L$" #define NEXT ".N$" #define HIGH
127/* high-value byte */ char cmd5,/* command switch */ oldlibNAMESIZE,
/* old library name */ oldndxNAMESIZE,/* old index name */ newlib RAFBGCH
DIEmod1, mod2) char *mod1, *mod2 close(inrel) close(inndx) /* **
close output library and index */ closeup(mod1, mod2) char *mod1, *mod2
closein() endrel() close(outrel) putndx(newblock, newbyte)/* index EFIL
E */ putndx(EOF, EOF)/* terminate new index */ close(outndx) movfil(new
lib, oldlib)/* take original names */ movfil(newndx, oldndx) /* ** co
mpare module names ignoring drive designators */ cmpmod(mod1, mod2) char *mod1
, *mod2 'T' cmd1 'X')) modname0 HIGH/* high value */ modname1
NULL return err eof NO while(modules MAXMODS-1)
poll(YES) if(arg) if(getarg(arg++, name, NAMESIZE, argc, argv
)EOF) eof YES break else if(!reqstr("Module Name ", name,
NAMESIZE)) eof YES break all NO/* do selected modules only */
if(cp strchr(name, '.')) fputs(name, stdout) puts2(" - char str1N
AMESIZE, str2NAMESIZE if(mod11 '') mod1 + 2 strncpy(str1, mod1, MAXSYM) i
f(mod21 '') mod2 + 2 strncpy(str2, mod2, MAXSYM) return (strcmp(str1, str2))
/* ** copy one module from inrel to outrel */ cpymod(hdr) int hdr
if(outndx) putndx(newblock, newbyte)/* must not be extracting */ if(hdr && !
putrel()) abort(7)/* already have input header */ do poll(YES) if(
getrel() ERR !putrel()) abort (7) while(item ! EPROExtension Forced to "
, MODEXT) *cp NULL err YES if(cp strchr(name, ''))
if(cp name+1) ++cp/* set up next check */ else puts2(
name, " - Invalid Format - Ignored") goto ignore
else cp name/* set up next check */ if(strlen(cp) MAXSYM) strcpy
(fn, cp) fputs(fn, stdout) fnMAXSYM NULL puts2(" - Will be
Truncated to ", fn) err YES/* assembler does aG) fflush(outrel)/* mu
st empty aux buf for ctell() */ newblock ctell(outrel)/* remember for next m
ember */ newbyte ctellc(outrel) if(newbyte 128) ++newblock newbyte 0
/* ** drop modules from library */ drop() char modNAMESIZE if(mod
ules 0) error("- Delete by Name Only") openup() while(nxtmod(mod))
if(match(mod, NO)) puts2("Deleted ", mod) continue c
pymod(YES) missing() closeup() /*ctual truncation */
if(cmd1 'U') /* REL file must exist */ strcpy(fn, name) extend(fn,
MODEXT, MODEXT) if(i fopen(fn, "r")) fclose(i) else put
s2(name, " - Can't Find - Ignored") goto ignore
for(i 0 i modules ++i) /* find place for module */ if(cmpmod(mptri, nam
e) 0) /* shift others up */ for(j modules j i --j) mptrj mptrj-1
break if(cmpmod(nam ** terminate REL or LIB file */ e
ndrel() item EFILE field 0 type 0 if(!putrel()) abort(7)
/* ** extract files from library */ extract() char modnamNAMESIZE open
in() while(nxtmod(modnam)) if(match(modnam, YES)) extend(modnam
, MODEXT, MODEXT) outrel open(modnam, "w") cpymod(YES) end
rel() close(outrel) puts2("Created ", modnam) mis
sing() closein() /* ** get module nae, mptri) 0) /* already loaded *
/ puts2(mp, " - Duplicate Name - Ignored") goto ignore
mptri mp/* load modname pointer */ strcpy(mp, name)/* load
modname buffer */ while(*mp++) /* scoot to next address */ ++modules/
* bump number of modules */ continue ignore err YES m
ptrmodules mp/* load terminal pointer */ *mp++ HIGH/* high value */ *mp
NULL if(!eof) error("- mes */ getmods(argc, argv) int argc, argv cha
r *cp, *mp, nameNAMESIZE, fnNAMESIZE int err, eof, arg, i, j if(!(mp modn
ame malloc(MAXMODS*10))) error("- Memory Overflow") if((j avail(NO)) 0 &&
j 512) puts("- Limited Stack Space") err YES all YES/* de
fault to all modules */ if(argc 3) arg 3/* get module names from command li
ne */ else arg 0/* get module names from stdin */ if(cmd2 && (cmd
1 'P' cmd1 RAFBGCHDIEToo Many Modules Specified") if(err) fputs("nC
ontinue ", stderr) fgets(name, NAMESIZE, stderr) if(toupper(*name) ! '
Y') exit(7) /* ** read an entry from the old index */ getndx()
if(read(inndx, &oldblock, 2) ! 2 /* next block */ read(inndx, &oldbyte,
2) ! 2)/* next byte in block */ error("- Error Reading Index") /*
** check if name matches module list */ match(name, quit) char *name int quit
int i, done char *mp ito the new index */ putndx(block, byte) int b
lock, byte if(write(outndx, &block, 2) ! 2 /* next block to index */ w
rite(outndx, &byte, 2) ! 2)/* next byte in block to index */ error("- Error
Writing New Index") /* ** restore REL variables */ restrel() item
item2 type type2 field field2 strcpy(symbol, sym2) inrel
inrel2 inchunk inch2 inrem inrem2 /* ** save REL variables
*/ saverel() item2 item tf(all) return(YES) done YES for(i 0
i modules ++i) if(cmpmod(mptri, name) 0) mdonei YES ret
urn(YES) if(!mdonei) done NO if(quit && done) exit(0)
return(NO) /* ** print "not in library" messages */ missing() int
i for(i 0 i modules ++i) if(!mdonei) puts2(mptri, " Was Not in Library
") /* ** move file1 to file2 */ movfil(file1, file2) char *file1, *fil
e2 unlink(file2) if(ype2 type field2 field strcpy(sym2, symbol)
inrel2 inrel inch2 inchunk inrem2 inrem inrem 0/* force getrel
() to read a byte */ /* ** seek to next member in old library */ exter
n int Uchrpos/* lives in CSYSLIB */ seek() getndx() if(oldblock EOF) er
ror("- Premature End of Index") if(cseek(inrel, oldblock, 0) EOF) error
("- Corrupt Library or Index") Uchrposinrel oldbyte inrem 0/* force getr
el() to read a byte *file21 '') file2 + 2 if(rename(file1, file2)) error("-
Can't Rename Files") /* ** create new filename from old filename and spe
cified extension */ newfn(dest, sour, ext) char *dest, *sour, *ext while(*
sour && *sour ! '.') *dest++ *sour++ strcpy(dest, ext) /* ** get nex
t module name */ nxtmod(name) char *name seek()/* go straight to next memb
er */ if(getrel() PNAME) strcpy(name, symbol) return (YES)
if(item EFILE) / /* ** print table of contents */ table() ch
ar nameNAMESIZE int i, j openin() puts("") i 0 while(nxtmod(name))
poll(YES) if(match(name, YES)) fputs(name, stdout) j
9 - strlen(name) while(j--) putchar(' ') if (!(++i % 8)) puts("")
puts("") missing() closein() /* ** update (add an
d replace) modules in alphanumeric order */ update() char modNAMESIZE int
m openup() m 0 *name++ HIGH/* high value */ *name NULL r
eturn (NO) error("- Corrupt Library or Index") /* ** open libra
ry and index for input */ openin() while(!(inrel fopen(oldlib, "r")))
puts("nCreating New Library") outrel open(oldlib, "w") item EFILE
putrel() close(outrel) outndx open(oldndx, "w") putndx(0,
0) putndx(EOF, EOF) close(outndx) inndx open(oldndx, "r")
/* ** open libr/* first in module list */ nxtmod(mod)/* first in old l
ibrary */ while(YES) if(cmpmod(mptrm, mod) 0) /* module member */
cpymod(YES)/* copy rest of member */ nxtmod(mod)/* next in old librar
y */ continue if(cmpmod(mptrm, mod) 0) /* module member */
addmod(mptrm)/* add new module */ puts2(" Added ", mptrm)
++m/* next in module list */ continue if(*mod ! HIGH) /* e
qaries and indices for updating */ openup() openin() outrel open(newli
b, "w") outndx open(newndx, "w") auxbuf(outrel, 4096) /* ** print
files from library */ print() char modnamNAMESIZE openin() while(nx
tmod(modnam)) if(match(modnam, YES)) while(YES) poll(YES
) if(item ENAME) seerel() getrel() if(item EPROG) b
reak missing() closein() /* ** write an en
try RAFBGCHDIEual and not at end */ addmod(mptrm)/* add new module */
++m/* next in module list */ puts2("Replaced ", mod) nxtmod(
mod)/* next in old library */ continue break closeu
p() /* ** abort with a usage message */ usage() error("Usage LIB -
DPTUXA library module...") puts2(" Added ", mptrm) ++m/* next in
module list */ continue if(*mod ! HIGH) /* eqmber of looks t
o find it */ main(argc, argv) int argc, *argv char strMAXFN fputs("Sma
ll-Mac MIT Compiler, ", stderr) fputs(VERSION, stderr) fputs(CRIGHT1, stderr)
getsw(argc, argv)/* fetch and remember switches, etc. */ load() if(lis
t) print() if(con) config() /* ** configure assembler with machine in
struction table */ extern int Uchrpos config() int fd, sz fd open(mac
fn, "r+")/* must exist */ Uchrposfd 3/* seek to mitable word */ read(fd,
&sz, INTSZ)/* read table size */ if(sz ! mitable) printf("%s MIT is %u
Bytes but Should be %un", macfn, sz, mitable) abort(7) write(fd, &
mitable + 1, mitable) if(ferror(fd)) error2(macfn, " - Write Error") close
(fd) /* ** get switches from command line */ getsw(argc, argv) int arg
c, *argv char argMAXFN int i, b, len i 0 while(getarg(++i, arg, MA
XFN, argc, argv) ! EOF) if(arg0 '-') if(toupper(arg1/* ** CMIT.C
-- Machine Instruction Table Compiler ** ** Small-Mac Assembler C
onfiguration Utility ** ** Copyright 1985 J. E. Hendrix **
** Usage CMIT -C -L table mac ** ** -C Configure the executable assemble
r (MAC.COM) with the indicated, ** or default, machine instructin table.
** ** -L List the compiled machine instruction table. ** ** table The
name of the machine instruction table file in source ** format (default
8080.MIT).) 'C') con YES else if(toupper(arg1) 'L') list YES
else usage() else if(extend(arg, MITEXT, COMEXT))
strcpy(macfn, arg) else strcpy(mitfn, arg) if(!c
on) list YES /* ** load table from diskette */ load() char strMAX
LINE, *mitend, *vptr, *last, *ptr, *cp int fd, top, bits, byte, ilen, h, i, j
, opndMIOPNDS, opnds, et, *fptr fd open(mitfn, "r") ptr mitbuf
mitend m The default and only allowed ** filename extension is MIT.
A drive specifier is allowed. ** ** mac Assembler COM file (default MAC.COM
). Must have COM extension ** to be recognized as such. Need specify o
nly if not on the ** default drive or has a different name. ** **
NOTE if no switches are given, -L is assumed. If any switches ** are
given, only those actions so specified are taken. ** ** NOTE After com
piling and linking a new MAC.COM, it musitbuf + (MIBUFSZ - MAXLINE) opnds 0
while(fgets(str, MAXLINE, fd)) /* load operand fields */ poll(YES)
cp skip(3, str)/* skip to operand field */ if(!isgraph(*cp)) continue/* no
operand to load */ for(j 0 j opnds ++j)/* already have it */ if(f
ldcmp(cp, opndj) 0) break if(j opnds) continue if(ptr mitend) goto
mitovr1 opndopnds++ ptr/* temp operand ptr */ if(opnds MIOPNDS) erro
r2(str, "- MIT Operand Overflt be ** configured by running this program
before it may be executed. ** A previously configured MAC.COM may be rec
onfigured at any time. */ #include stdio.h #include "mac.h"/* must be include
d first */ #include "mit.h" #include "notice.h" #define COMEXT ".COM" #de
fine MITEXT ".MIT" char macfnMAXFN "MAC.COM",/* default assembler filena
me */ mitfnMAXFN "8080.MIT"/* default mit filename */ int con,/* configu
re */ list,/* list */ looks/* nu RAFBGCHDIEow") while(isgraph(*ptr
*cp++)) ++ptr/* copy operand field */ *ptr++ NULL if(rewind(fd))
error("- Can't Rewind MIT File")/* 2nd pass */ last ptr *last NULL top
0 while(fgets(str, MAXLINE, fd)) /* load mnemonics, etc. */ poll(YES)
if(ptr mitend) mitovr1 error2(str, "- MIT Buffer Overflow") if(top M
ICOUNT) error("- MIT Mnemonic Overflow") cp skip(2, str)/* skip to mnemoni
c field */ if(fldcmp(cp, last)) /* new m for(i j 0 i top ++i) /* crea
te hash indices - pass 2 */ poll(YES) h hash(mitptri, MICOUNT) i
f(mitndxh ! i) while(mitndxj ! EOF) ++j/* must be empty slot */ m
itndxj i while(mitnxth ! EOF) h mitnxth mitnxth j
close(fd) /* ** print compiled machine instruction table */ print(
) int i ,k, bak, fd, fmt, len, opcode, holding char linMAXLINE, instMAXLI
NE, *ptr, *vptr, *cp fd nemonic */ *ptr++ 0/* terminate prior instr
*/ mitptrtop++ last ptr/* mnemonic ptr */ while(isgraph(*ptr *c
p++)) ++ptr/* copy mnemonic field */ *ptr++ NULL vptr ptr+
+ *vptr 2*INTSZ/* vlen field */ cp skip(3, str)/* locate operand */
if(isgraph(*cp)) /* has an operand field */ for(j 0 j opnds ++j)
if(fldcmp(cp, opndj) 0) break if(j opnds) error2(str, "- Can't Find
Operand") open(mitfn, "r") while(fgets(lin, MAXLINE, fd)) poll(YES)
i 0 cp skip(2, lin) while(isgraph(insti++ *cp++)) if(insti-1
'n') insti-1 ' ' bak i cp skip(3, lin) do i bak
while(isgraph(*cp) && *cp ! ANOTHER) insti++ *cp++ insti 0 i
f(*cp ANOTHER) ++cp printf("%-15s ", inst)/* mnemonic */ if(!(ptr
find(inst))) error("- Can't Find Instruction in MIT") printf("
putint(ptr, opndj) else putint(ptr, 0)/* has no operand */
ptr + INTSZ fptr ptr ptr + INTSZ *fptr 0/* fmt field */ bits 13
ilen -1 cp skip(1, str)/* code field */ while(isgraph(*cp))
if(islower(*cp)) /* x1, x2, etc. */ et *cp++/* expr type */
bits - 3 *fptr ((*fptr 3) & 8191) + 8192 switch(*cp)
default error2(str, "- Bad Expression Specifier") case (%2u looks) ",
looks) ptr + INTSZ fmt getint(ptr)/* ptr - first code byte */
ptr + INTSZ len (fmt & 7) + 1 fmt 3 holding NO
while(len-- 0) /* for each byte of code */ if(fmt & 1) /* expressio
n */ if(holding) opcode + opadj opadj 0
holding NO printf(" %2x", opcode)
fmt 1 switch(fmt & 3) case '2' *fptr + 32768 ilen
+ 2 break case '1' ++ilen if(et 'p') *fptr + 1
6384/* pc relative expr */ ++cp continue if(i
sxdigit(*cp)) if((j xtoi(cp, &byte)) 2) error2(str, "- Bad Hex Byte"
) cp + j *ptr++ byte *vptr + 1 --bits *fptr ((*fptr
1) & 32767) ++ilen continue ++cp/* bump pas
t field separator */ *fptr bit 0 printf(" x1") break/* 1-byte */
case 1 printf(" p1") break/* 1-byte pc rel */ case 2 pr
intf(" x2") --len break/* 2-byte */ case 3 printf(" p2") --len brea
k/* 2-byte pc rel */ fmt 1 else /
* code byte */ if(holding) printf(" %2x", opcode) opcode
*ptr++ & 255 holding YES fmt 1
if(holding) opcode +s/* right adjust format byte */ *fptr ilen
& 7/* and insert instr length */ *ptr++ 0/* terminate prior instr */
printf(" Operation Codes %5un", top) printf("Buffer Space Used %5un", ptr
- mitbuf) for(i 0 i MICOUNT ++i)/* init hash indices */ mitndxi mitn
xti EOF for(i 0 i top ++i) /* create hash indices - pass 1 */ poll(YE
S) h hash(mitptri, MICOUNT) if(mitndxh EOF) mitndxh i
R A F B G C H D I E opadj printf(" %2x", opcode)
puts("") while(*cp ' ') close(fd) /* ** abort wi
th a usage message */ usage() error("Usage CMIT -C -L table mac")
fmt 1 else /* code byte */ if(holding) prin
tf(" %2x", opcode) opcode *ptr++ & 255 holding YES
fmt 1 if(holding) opcode +/* ** if
fn has no extension, extend it with ext1 ** if fn has an extension, require it
to match ext1 or ext2 ** return true if fn's extension matches ext2, else false
*/ #include stdio.h #include "mac.h" #define NOCCARGC extend(fn, ext1, ext
2) char *fn, *ext1, *ext2 char *cp if(cp strchr(fn, '.')) if(strcm
p(cp, ext2) 0) return (YES) if(strcmp(cp, ext1) 0) return (NO) puts2
(fn, " - invalid extension") abort(7) if(strlen(fn) MAXFN-4) erro
r2(fn/* ** DREL.C -- dump REL or LIB file ** ** Copyright 1985 J. E
. Hendrix ** ** No command line switches are accepted. The user is prompted
** for each file to be dumped. Output goes to the standard ** output file a
nd is, therefore, redirectable to any output ** device or to a disk file. If
an input file cannot be found ** the user is prompted for another input file.
File names must ** be given, complete with extensions. Drive specifiers may
be ** given. */ #include stdio.h, " - Too Long") strcat(fn, ext1) retu
rn (NO) if fn's extension matches ext2, else false */ #include stdio.h #
include "mac.h" #define NOCCARGC extend(fn, ext1, ext2) char *fn, *ext1, *ext2
char *cp if(cp strchr(fn, '.')) if(strcmp(cp, ext2) 0) return (Y
ES) if(strcmp(cp, ext1) 0) return (NO) puts2(fn, " - invalid extensio
n") abort(7) if(strlen(fn) MAXFN-4) error2(fn #include "notice.h
" #include "mac.h" #include "rel.h" main() char fnMAXFN fputs("Small
-Mac REL/LIB Dump Utility, ", stderr) fputs(VERSION, stderr) fputs(CRIGHT1, s
tderr) while(YES) if(!reqstr("Library/Module Name ", fn, MAXFN)) exit()
if(!(inrel fopen(fn, "r"))) continue do poll(YES)/* poll for
user interrupt */ if(getrel() ERR) abort(7)/* get next REL item */
seerel()/* display it */ while(item ! EFILE) f/* ** file relate
d functions */ #define NOCCARGC open(name, mode) char *name, *mode int fd
if(fd fopen(name, mode)) return(fd) cant(name) close(fd) int fd
if(fclose(fd)) error("Close Error") close(inrel) ty, ", stderr)
fputs(VERSION, stderr) fputs(CRIGHT1, stderr) while(YES) if(!reqstr
("Library/Module Name ", fn, MAXFN)) exit() if(!(inrel fopen(fn, "r"))) co
ntinue do poll(YES)/* poll for user interrupt */ if(getrel()
ERR) abort(7)/* get next REL item */ seerel()/* display it */ w
hile(item ! EFILE) f !R!A!F!B!G!C!H!D!I!E inrem 0/* force byte boundary
*/ break case 15/* end of file */ inrem 0/* force byte bound
ary */ return (item) gettyp() if(!getbits(2)) return (ERR)/*
get 2-bit field type */ return (type field) getfld() /* get type and
value of field */ int low if(!getbits(8)) return (ERR)/* get first 8 bits
*/ low field/* save as low order byte */ if(!getbits(8)) return (ERR)/*
get next 8 bits */ field (fiel/* ** getrel -- read a relocatable-object fil
e */ #include stdio.h #include "rel.h" #include "mac.h" /* ** get next R
EL item ** return item code on success, ERR on error ** on successful return
** item item code ** type type of field ** field value of field **
symbol symbol name */ getrel() if(!getbits(1)) return (ERR)/* get 1 bi
t */ if(field 0) /* absolute item */ if(!getbits(8)) return (ERR)/* get
next 8 bits */ return (type item ABS)d 8) low/* combine high & low byt
es */ return (item) getsym() /* get symbol */ int i, save char *cp
cp symbol save field/* save field */ if(!getbits(3)) return (ERR)/* g
et 3-bit symbol length */ i field/* capture symbol length */ while(i--)
if(!getbits(8)) return (ERR)/* get next byte */ *cp++ field
*cp NULL/* terminate symbol */ field save/* restore field */ return (ite
m) /* ** get next/* absolute item */ if(!getbits(2)) return (ER
R)/* get next 2 bits */ switch(type item field) case 0 return (getspe
c())/* special link item */ case 1/* program relative item */ case 2/*
data relative item */ case 3/* common relative item */ if(getfld(
) ERR) return (ERR)/* get next 16 bits */ return (item)/* relative items */
getspec() /* get next special item */ if(!getbits(4)) return (ERR)/* g
et next 4 n bits from REL file into "field" ** return true on success, false o
n error */ getbits(n) int n int get field 0/* initialize result */
while(n) /* more bits to fetch */ if(inrem 0) /* need another chunk */
if(read(inrel, &inchunk, 1) ! 1) /* get next bit cluster */ fputs("
n7- Abnormal End of REL Filen", stdout) return (NO)/* failure */
inrem 8/* 8 bits remain */ if(n inrem) get inrem bits
*/ type ABS/* default type */ item field + 4 switch(field) cas
e 0/* entry symbol */ case 1/* select common block */ case 2/* prog
ram name */ case 3/* request library search */ case 4/* extension li
nk items */ if(getsym() ERR) return (ERR) break case 5/* de
fine common size */ case 6/* head of external reference chain */ case
7/* define entry point */ if(gettyp() ERR else get n/* how many from
this chunk */ n - get/* decrement bits needed */ inrem - get/* d
ecr remaining bits */ field (field get) + ((inchunk inre
m) & (ONES get)) return (YES)/* success */ return (NO)/* fai
lure */ inrem 8/* 8 bits remain */ if(n inrem) g
et inrem getfld() ERR getsym() ERR) return (ERR) break case 8/
* external - offset */ case 9/* external + offset */ case 10/* size o
f data area */ case 11/* set loading location counter */ case 12/* cha
in addr (fill chain with lc) */ case 13/* size of program */ if(gett
yp() ERR getfld() ERR) return (ERR) break case 14/* end of progra
m */ if(gettyp() ERR getfld() ERR) return (ERR) "R"A"F"B"G"C"H"
D"I"E/* ** putrel -- write a relocatable-object file */ #include stdio.h #in
clude "rel.h" #include "mac.h" /* ** put next REL item ** return true on s
uccess, false on error ** on call ** item item code ** type type of f
ield ** field value of field ** symbol symbol name */ putrel() swi
tch(item) case ABS if(!putbits(0, 1) !putbits(field, 8)) return (N
O) return (YES) case PREL case DREL case CREL if(!putbits(1
, 1) !putbits(iteuccess */ ent bits to put */ outrem - put/* decr rem
aining bits */ if(outrem 0) /* need another chunk */ if(write(outre
l, &outchunk, 1) ! 1) /* put next bit cluster */ fputs("n7- Write Error
in REL Filen", stdout) return (NO)/* failure */ outre
m 8/* 8 bits remain */ return (YES)/* sm, 2) !putfld()) retur
n (NO) return (YES) if(!putbits(4, 3) !putbits(item-4, 4)) retu
rn (NO) switch(item) case CSIZE case XCHAIN case EPOINT if(!pu
tbits(type, 2) !putfld()) return (NO) case ENAME case CNAME case PNAME
case LNAME case EXT if(!putsym()) return (NO) return (YES)
case XMOFF case XPOFF case DSIZE case SETLC case CHAIN case PSIZE
if(!putbits(type, 2) !putfld()) return (NO) r/* ** seerel -- show
REL items */ #include stdio.h #include "rel.h" int lc, width /* ** display
REL item ** on call ** item item code ** type type of field ** fi
eld value of field ** symbol symbol name */ seerel() char str6 int tm
p switch(item) case ABS see8(field, ' ') lc + 1 newlin(NO) return
case PREL case DREL case CREL see16() lc + 2 newlin(NO) ret
urn case XMOFF case XPOFF tmp type type iteeturn (YES) case
EPROG if(!putbits(type, 2) !putfld()) return (NO) case EFILE
if(outrem 8 && !putbits(0, outrem)) return (NO)/* finish byte */ retur
n (YES) return (NO) puttyp() if(putbits(type, 2)) return (YE
S)/* put 2-bit field type */ return (NO) putfld() /* put low then high
byte */ if(putbits(field, 8) && putbits(field 8, 8)) return (YES) return
(NO) putsym() /* put symbol */ int i char *cpm see16()
type tmp newlin(NO) return case ENAME seenam(" entry ", NO) got
o eol case CNAME seenam(" common ", NO) goto eol case PNAME fputc
('n', stdout) seenam("- program ", NO) lc
0 goto eol case LNAME seenam(" library ", NO) goto eo
l case EXT fputs("extension link itemn", stdout) return case CSI
ZE seenam(" common sz ", YES) goto eol case XCHAI if((i strlen(symbol))
MAXSYM) i MAXSYM/* enforce max length */ if(!putbits(i, 3)) return (NO)/*
put 3-bit symbol length */ cp symbol while(i--) if(!putbits(*cp++,
8)) return (NO)/* put next byte */ return (YES) /* ** put next
n bits from fld into REL file ** return true on success, false on error */ pu
tbits(fld, n) int fld, n int put while(n) /* more bits to put */ if(
n outrem) put outrem else put n/* how many for this N seenam(" ext chain ", Y
ES) goto eol case EPOINT seenam(" entry pt ", YES) goto eol case D
SIZE fputs(" data size ", stdout) goto fld case SETLC fputs(" load at
", stdout) lc field goto fld case CHAIN fputs(" ld chn at ", stdout) got
o fld case PSIZE fputs(" prog size ", stdout) goto fld case EPROG
fputs("- end prog ", stdout) goto fld case EFILE fputs("- end file", st
dout) goto eol fld see16() chunk */ outchunk (out
chunk put) + ((fld (n-put)) & (ONES put)) n - put/* d
ecrement bits to put */ outrem - put/* decr remaining bits */ if(outre
m 0) /* need another chunk */ if(write(outrel, &outchunk, 1) ! 1) /* put
next bit cluster */ fputs("n7- Write Error in REL Filen", stdout)
return (NO)/* failure */ outrem 8/* 8 bits remain */
return (YES)/* s #R#A#F#B#G#C#H#D#I#E eol newlin(YES)
return itou(item, str, 6) fputs(str, stdout) fputs(" is a
n Unknown Item Coden", stdout) see8(value, suff) int value, suff /* displ
ay 8-bits */ char str5 if(width 0 && item CREL) /* need loc ctr pref */
itox(lc, str, 5) outz(str)/* output loc ctr */ fputc(' ', stdout)
/* output spacer */ itox(value & 255, str, 3)/* convert to hex string *
/ outz(str)/* output hex byte */ if(su /* ** mess.c -- message functions
*/ #include stdio.h #define NOCCARGC puts2(str1, str2) char *str1, *str2
fputs(str1, stdout) puts(str2) cant(str) char *str error2(str, " -
Can't Open") error2(str1, str2) char *str1, *str2 fputs(str1, stdout)
error(str2) error(str) char *str puts(str) abort(7) ff) fput
c(suff, stdout)/* output suffix */ ++width/* bump line width */ see16(
) /* display field */ see8(field 8, 0)/* display high byte */ see8(field
, xtype())/* display low byte & type */ fputc(' ', stdout)/* output spacer */
seenam(pref, val) char *pref int val /* display symbol */ newlin(YES)
width 1/* avoid address prefix */ fputs(pref, stdout) if(val) see1
6()/* output a value */ fputs(symbol, stdout) xtype() switch(type
) case ABS return(' ') case PREL return(''') case DREL retur
n('"') case CREL return('') case XPOFF return('+') case XMOFF re
turn('-') return('') newlin(nl) int nl /* decide about new line
*/ if(width 15 (nl && width)) fputc('n', stdout) width 0
outz(str) char *str /* zero fill and output str */ char *cp cp str
while(*cp ' ') *cp++ '0'/* supply /* ** scanning functions */ #include
stdio.h #include "mac.h" #define NOCCARGC atend(ch) int ch /* is ch at end
of line */ switch(ch) case COMMENT case NULL case 'n' return (YES)
return (NO) fldcmp(s, t) char *s, *t /* compare fields in a line */
while(lexorder(*s, *t) 0) if(!isgraph(*s)) return (0) ++s ++t
if((isspace(*s) atend(*s)) && (isspace(*t) atend(*t))) return (0)
return (*s - *t) skip(n, stleading zeroes */ fputs(str, stdout)
e CREL return('') case XPOFF return('+') case XMOFF return('-')
return('') newlin(nl) int nl /* decide about new line */ if(wid
th 15 (nl && width)) fputc('n', stdout) width 0 outz(
str) char *str /* zero fill and output str */ char *cp cp str while(*c
p ' ') *cp++ '0'/* supply r) int n char str /* find nth non-blank field in str
*/ char *cp cp str while(isspace(*cp)) ++cp while(--n) while(is
graph(*cp)) ++cp while(isspace(*cp)) ++cp return (cp) ar *s,
*t /* compare fields in a line */ while(lexorder(*s, *t) 0) if(!isgrap
h(*s)) return (0) ++s ++t if((isspace(*s) atend(*s)) && (is
space(*t) atend(*t))) return (0) return (*s - *t) skip(n, st $R$A$F$
B$G$C$H$D$I$E#include stdio.h #define NOCCARGC /* ** wait.c -- wait for opera
tor response */ wait() /* wait for user before clearing the message */ fput
s("nWaiting...", stderr) fgetc(stderr) **
...00 vlen optr fmt obj... **
** format bits (-) ...
** 3-bit instr length (-1) ** field types
V ** 0 obj byte operand pattern
** 001 8-bit expr ** 011 8-bit pc rel ex
pr ...00 ** 101 16-bit expr ** 111 16-bit pc rel e
xpr ** */ #include stdio.h #include "mac.h"/* must
be included first */ /* #define NOCCARGC */ int opadj,/* operation code
adjustment */ hashval/* global hash value for speed */ char expbufMAXLINE
/* buffer for operand expressions */ extern int mitable,/* machine instruc
tion table (size) */ mitndx,/* mit indices (hash - which) */ mitnxt,/* mit
synonym chain */ mitpt/* ** integer manipulation */ #define NOCCARGC get
int(a) int *a return (*a)/* get integer from address a */ putint(a, i) int *a,
i *a i/* put integer i at address a */ r/* mnemonic syntax ptrs */ extern cha
r mitbuf/* instruction syntax buffer */ extern int looks/* number of lo
oks to find it */ hash(ptr, cnt) char *ptr int cnt /* calculate hash value */
hashval 0 while(*ptr ' ' && atend(*ptr) 0) hashval (hashval 1)
+ toupper(*ptr++) return (hashval % cnt) find(inst) char *inst /* sear
ch for instr in mit */ char *mit int h, ndx looks 0 ndx mitndxh h
ash(inst, MICOUNT)/* calc hash index */ while(ndx ! EOF) ++looks i
f(fldcmp(inst, mit mitptrndx) 0) /* mnemonic matches */ inst skip(2, i
nst)/* instr operand field */ mit + strlen(mit) + 1/* first variant */
while(*mit++) /* another variant */ ++looks if(match(inst
, getint(mit))) return (mit) mit + *(mit - 1)/* next variant */
return (0) if((h mitnxth) EOF) return (0) ndx mit
ndxh /* ** mit.c -- machine instruction table functions ** **
mitndx mitptr mitnxt ** **
** -+ ** hash - - **
--+ ** ** **
V ** mnemonic variant... ** %R%A%
F%B%G%C%H%D%I%E return (0) match(inst, mit) char *inst, *mit /* match op
erands to mit */ char *backup, *exp int nest opadj 0 backup inst i
f(mit 0) if(atend(*inst)) return (YES) return (NO) exp exp
buf/* init expr buffer */ while(YES) while(isspace(*inst)) ++inst
while(isspace(*mit)) ++mit if(atend(*inst)) if(atend(*mit) *mit A
NOTHER) return (YES) goto next if(atend(*mit)) return (NO)
if(isl/* ** req.c -- request user input */ #include stdio.h reqnbr(pro
mpt, nbr) char prompt int *nbr /* request number */ char str20 int sz i
f(iscons(stdin)) puts("") fputs(prompt, stdout) getstr(str,
20) if((sz utoi(str, nbr)) 0 strsz) return (NO) return (YES) req
str(prompt, str, sz) char prompt, *str int sz /* request string */ if(iscons(
stdin)) puts("") fputs(prompt, stdout) getstr(str, sz) re
turnower(*mit)) /* expression */ ++mit/* bump past x or y */ nest
0 while(!atend(*inst)) /* bypass expression */ if(*inst ',') b
reak if(*inst ')' && nest 0) break switch(*inst)
case '(' ++nest break case ')' --nest *exp++ *
inst++/* extract expressions */ *exp++ ',' *exp NULL/* termin
ate expression */ continue if(lexorder(*inst++, *m (*str)/*
null name returns false */ getstr(str, sz) char *str int sz /* get string
from user */ char *cp fgets(str, sz, stdin) if(iscons(stdin) && !iscon
s(stdout)) fputs(str, stdout)/* echo */ cp str while(*cp) /* trim c
tl chars & make uc */ if(*cp 'n') break if(isprint(*str toupper(*cp+
+))) ++str *str NULL it++)) next while(*mit)
if(*mit ANOTHER) /* end of syntax for this try */ ++opadj/* bum
p opcode adjustment */ ++mit inst backup/* setup next try */
exp expbuf/* reset expr buffer pointer */ break
++mit if(atend(*mit)) return (NO) /* *
* rel.c -- common data for REL file processing */ /* common variables */ int
inrel,/* file descriptor for input REL file */ inrem 0,/* remaining bits in
input chunk */ inchunk,/* current chunk from REL file */ outrel,/* file des
criptor for output REL file */ outrem 8,/* remaining bits in output chunk */
outchunk,/* current chunk for REL file */ item,/* current item code */ typ
e,/* type field */ field/* current bit field */ char symbol9/* current stri
ng */ REL file */ inrem 0,/* remaining bits in input chunk */ inchunk,/* c
urrent chunk from REL file */ outrel,/* file descriptor for output REL file */
outrem 8,/* remaining bits in output chunk */ outchunk,/* current chunk fo
r REL file */ item,/* current item code */ type,/* type field */ field/* c
urrent bit field */ char symbol9/* curren &R&A&F&B&G&C&H&D&I&E 'R'A'F'B'G'C
'H'D'I'E (R( 0UQ523-037C SCHNEIDER DUP 3"-100/40 2S DD SS
70292-00ww