Small-C 2.1 (UK) (128K) (Face 2B) (1985) [Original] [UTILITAIRE].dsk
HexaDumpAscii only
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
Tous droits réservés. Reproduction sans autorisation interdite. © Kukulcan