Small-C 2.1 (UK) (128K) (Face 1B) (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 43 43 20 20 20 20 20 20 41 52 43 00 00 00 80    .CC      ARC....
002830:  0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19    ................
002840:  00 43 43 20 20 20 20 20 20 41 52 43 01 00 00 80    .CC      ARC....
002850:  1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29    ...... !"#$%&'()
002860:  00 43 43 20 20 20 20 20 20 41 52 43 02 00 00 80    .CC      ARC....
002870:  2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39    *+,-./0123456789
002880:  00 43 43 20 20 20 20 20 20 41 52 43 03 00 00 80    .CC      ARC....
002890:  3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49    :;<=>?@ABCDEFGHI
0028A0:  00 43 43 20 20 20 20 20 20 41 52 43 04 00 00 15    .CC      ARC....
0028B0:  4A 4B 4C 00 00 00 00 00 00 00 00 00 00 00 00 00    JKL.............
0028C0:  00 43 4C 49 42 20 20 20 20 41 52 43 00 00 00 80    .CLIB    ARC....
0028D0:  4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C    MNOPQRSTUVWXYZ[\
0028E0:  00 43 4C 49 42 20 20 20 20 41 52 43 01 00 00 80    .CLIB    ARC....
0028F0:  5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C    ]^_`abcdefghijkl
002900:  00 43 4C 49 42 20 20 20 20 41 52 43 02 00 00 80    .CLIB    ARC....
002910:  6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C    mnopqrstuvwxyz{|
002920:  00 43 4C 49 42 20 20 20 20 41 52 43 03 00 00 58    .CLIB    ARC...X
002930:  7D 7E 7F 80 81 82 83 84 85 86 87 00 00 00 00 00    }~..............
002940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0029A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0029B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0029C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0029D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0029E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0029F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002A00:  41 42 4F 52 54 45 44 24 42 41 44 20 50 41 52 41    ABORTED$BAD PARA
002A10:  4D 45 54 45 52 24 49 4E 56 41 4C 49 44 20 55 53    METER$INVALID US
002A20:  45 52 20 4E 55 4D 42 45 52 24 52 45 43 4F 52 44    ER NUMBER$RECORD
002A30:  20 54 4F 4F 20 4C 4F 4E 47 24 49 4E 56 41 4C 49     TOO LONG$INVALI
002A40:  44 20 44 49 47 49 54 24 45 4E 44 20 4F 46 20 46    D DIGIT$END OF F
002A50:  49 4C 45 2C 20 43 54 4C 2D 5A 3F 24 43 48 45 43    ILE, CTL-Z?$CHEC
002A60:  4B 53 55 4D 20 45 52 52 4F 52 24 43 4F 52 52 45    KSUM ERROR$CORRE
002A70:  43 54 20 45 52 52 4F 52 2C 20 54 59 50 45 20 52    CT ERROR, TYPE R
002A80:  45 54 55 52 4E 20 4F 52 20 43 54 4C 2D 5A 24 49    ETURN OR CTL-Z$I
002A90:  4E 56 41 4C 49 44 20 46 4F 52 4D 41 54 24 48 45    NVALID FORMAT$HE
002AA0:  58 24 24 24 24 4E 4F 20 44 49 52 45 43 54 4F 52    X$$$$NO DIRECTOR
002AB0:  59 20 53 50 41 43 45 24 4E 4F 20 46 49 4C 45 24    Y SPACE$NO FILE$
002AC0:  43 4F 4D 24 53 54 41 52 54 20 4E 4F 54 20 46 4F    COM$START NOT FO
002AD0:  55 4E 44 24 51 55 49 54 20 4E 4F 54 20 46 4F 55    UND$QUIT NOT FOU
002AE0:  4E 44 24 43 41 4E 4E 4F 54 20 43 4C 4F 53 45 20    ND$CANNOT CLOSE 
002AF0:  44 45 53 54 49 4E 41 54 49 4F 4E 20 46 49 4C 45    DESTINATION FILE
002B00:  24 44 45 53 54 49 4E 41 54 49 4F 4E 20 49 53 20    $DESTINATION IS 
002B10:  52 2F 4F 2C 20 44 45 4C 45 54 45 20 28 59 2F 4E    R/O, DELETE (Y/N
002B20:  29 3F 24 2A 2A 4E 4F 54 20 44 45 4C 45 54 45 44    )?$**NOT DELETED
002B30:  2A 2A 24 24 24 24 24 24 24 4E 4F 54 20 46 4F 55    **$$$$$$$NOT FOU
002B40:  4E 44 24 43 4F 50 59 49 4E 47 20 2D 24 52 45 51    ND$COPYING -$REQ
002B50:  55 49 52 45 53 20 43 50 2F 4D 20 32 2E 30 20 4F    UIRES CP/M 2.0 O
002B60:  52 20 4E 45 57 45 52 20 46 4F 52 20 4F 50 45 52    R NEWER FOR OPER
002B70:  41 54 49 4F 4E 2E 24 55 4E 52 45 43 4F 47 4E 49    ATION.$UNRECOGNI
002B80:  5A 45 44 20 44 45 53 54 49 4E 41 54 49 4F 4E 24    ZED DESTINATION$
002B90:  43 41 4E 4E 4F 54 20 57 52 49 54 45 24 49 4E 56    CANNOT WRITE$INV
002BA0:  41 4C 49 44 20 50 49 50 20 46 4F 52 4D 41 54 24    ALID PIP FORMAT$
002BB0:  43 41 4E 4E 4F 54 20 52 45 41 44 24 49 4E 56 41    CANNOT READ$INVA
002BC0:  4C 49 44 20 53 45 50 41 52 41 54 4F 52 24 31 F2    LID SEPARATOR$1.
002BD0:  1D 01 80 00 C5 1E 80 01 CC 1E CD 18 0A 3A CC 1E    .............:..
002BE0:  D6 00 D6 01 9F 32 A5 1E CD 4C 08 EB 3E 20 CD 84    .....2...L..> ..
002BF0:  1D D2 FD 04 01 4D 04 CD 39 08 CD 00 00 CD 16 09    .....M..9.......
002C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
002E00:  32 C0 1E 11 00 00 0E 19 CD 05 00 32 FC 1D 31 F2    2..........2..1.
002E10:  1D CD 40 1A 3A C0 1E 32 C1 1E 21 6F 1F 36 00 2B    ..@.:..2..!o.6.+
002E20:  36 00 2B 36 00 21 A6 1E 36 01 23 36 00 21 F3 1D    6.+6.!..6.#6.!..
002E30:  36 00 23 36 FE 3A A5 1E 1F D2 47 05 0E 2A CD 1C    6.#6.:....G..*..
002E40:  08 CD 6F 09 CD 2E 08 21 4E 1F 36 FF 3A CC 1E FE    ..o....!N.6.:...
002E50:  00 C2 5E 05 2A FC 1D 4D CD 5E 08 CD 00 00 21 4B    ..^.*..M.^....!K
002E60:  1E 36 00 21 03 1E 36 00 21 A4 1E 36 00 2B 36 00    .6.!..6.!..6.+6.
002E70:  01 27 1E CD 20 12 3A A9 1E FE 03 C2 81 05 C3 24    .'.. .:........$
002E80:  06 3A A9 1E FE 04 C2 C3 05 3A 94 1F 3D 32 4B 1E    .:.......:..=2K.
002E90:  CD 0C 1D 01 06 1E CD 20 12 3A A9 1E FE 02 CA A4    ....... .:......
002EA0:  05 CD 5C 18 3A F5 1D 1F D2 B7 05 01 5C 00 CD EE    ..\.:.......\...
002EB0:  1C CD 78 1B C3 C0 05 01 27 1E CD EE 1C CD B2 1A    ..x.....'.......
002EC0:  C3 DB 07 3A A9 1E D6 02 C6 FF 9F 21 F5 1D B6 1F    ...:.......!....
002ED0:  D2 D6 05 CD 5C 18 CD A2 1C CD 0C 1D 01 06 1E CD    ....\...........
002EE0:  20 12 3A A9 1E FE 04 C2 05 06 CD 88 1C CD C6 1C     .:.............
002EF0:  01 27 1E C5 1E 21 01 06 1E CD 18 0A CD DF 1C CD    .'...!..........
002F00:  B2 1A C3 DB 07 3A A9 1E FE 02 C2 24 06 CD 11 12    .....:.....$....
002F10:  3A A8 1E FE 0D CA 1B 06 C3 24 06 CD 88 1C CD B2    :........$......
002F20:  1A C3 DB 07 21 4E 1F 36 FF 01 27 1E CD 20 12 3A    ....!N.6..'.. .:
002F30:  A9 1E D6 02 9F 21 F5 1D B6 1F D2 43 06 01 77 04    .....!.....C..w.
002F40:  CD AF 09 21 05 1E 36 00 3A A9 1E FE 02 C2 5E 06    ...!..6.:.....^.
002F50:  CD A2 1C CD 63 18 21 A8 1E 36 FF C3 7B 06 3A A8    ....c.!..6..{.:.
002F60:  1E D6 13 9F 2F F5 3E 05 21 A8 1E 96 9F 2F C1 48    ..../.>.!..../.H
002F70:  B1 1F D2 7B 06 01 90 04 CD AF 09 3A A8 1E 3C 32    ...{.......:..<2
002F80:  A3 1E FE 0F C2 8A 06 CD CF 15 01 06 1E CD 20 12    £............. .
002F90:  3A A9 1E D6 01 C6 FF 9F F5 3A A8 1E D6 3D C6 FF    :........:...=..
002FA0:  9F C1 48 B1 1F D2 AE 06 01 9D 04 CD AF 09 21 A7    ..H...........!.
002FB0:  1F 36 01 3A A7 1F 1F D2 BE 07 3A C0 1E 32 C1 1E    .6.:......:..2..
002FC0:  01 06 1E CD 20 12 21 04 1E 36 00 3A A9 1E D6 02    .... .!..6.:....
002FD0:  D6 01 9F F5 3A F5 1D 2F C1 48 A1 1F D2 ED 06 CD    ....:../.H......
002FE0:  88 1C CD BE 18 21 A8 1E 36 FF C3 13 07 3A A9 1E    .....!..6....:..
002FF0:  D6 03 C6 FF 9F F5 3E 0A 21 A8 1E 96 9F 2F F5 3E    ......>.!..../.>
003000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0030A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0030B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0030C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0030D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0030E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0030F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0031A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0031B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0031C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0031D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0031E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0031F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003200:  05 96 9F C1 48 A1 C1 48 B1 1F D2 13 07 01 B0 04    ....H..H........
003210:  CD AF 09 3A 5E 1F 21 04 1E B6 77 3A A8 1E 3C 32    ...:^.!...w:..<2
003220:  A4 1E 3A A8 1E FE 13 C2 30 07 CD CF 15 C3 7D 07    ..:.....0.....}.
003230:  3A A8 1E FE 14 C2 40 07 0E 1A CD 45 0E C3 7D 07    :.....@....E..}.
003240:  3A A8 1E D6 05 9F 21 05 1E A6 1F D2 53 07 21 57    :.....!.....S.!W
003250:  1F 36 01 3A A3 1E FE 0A C2 7A 07 21 5D 1F 36 01    .6.:£....z.!].6.
003260:  3A 63 1F FE 00 C2 6D 07 21 63 1F 36 08 3A 5F 1F    :c....m.!c.6.:_.
003270:  FE 00 C2 7A 07 21 5F 1F 36 01 CD 6C 1A CD 12 19    ...z.!_.6..l....
003280:  01 06 1E CD 20 12 3A A9 1E D6 01 C6 FF 9F F5 3A    .... .:........:
003290:  A8 1E D6 2C C6 FF 9F F5 3A A8 1E D6 0D C6 FF 9F    ...,....:.......
0032A0:  C1 48 A1 C1 48 B1 1F D2 B0 07 01 BC 04 CD AF 09    .H..H...........
0032B0:  3A A8 1E D6 0D C6 FF 9F 32 A7 1F C3 B3 06 3A A3    :.......2.....:£
0032C0:  1E FE 0F C2 CE 07 0E 1A CD 45 0E CD CF 15 3A A3    .........E....:£
0032D0:  1E FE 00 C2 DB 07 0E 00 CD 31 19 3A A5 1E 32 CC    .........1.:..2.
0032E0:  1E C3 14 05 FB 76 21 F2 1D 71 21 F2 07 E5 2A 38    .....v!..q!...*8
0032F0:  02 E9 C9 21 FB 07 E5 2A 36 02 E9 3A 09 01 C9 3E    ...!...*6..:...>
003300:  FA CD A6 1D 3E FA CD A6 1D C9 11 00 00 0E 03 CD    ....>...........
003310:  05 00 C9 11 00 00 0E 01 CD 05 00 C9 21 AB 1E 71    ............!..q
003320:  3A AB 1E E6 7F 5F 16 00 0E 02 CD 05 00 C9 0E 0D    :...._..........
003330:  CD 1C 08 0E 0A CD 1C 08 C9 21 AD 1E 70 2B 71 CD    .........!..p+q.
003340:  2E 08 2A AC 1E EB 0E 09 CD 05 00 C9 11 00 00 0E    ..*.............
003350:  0C CD 05 00 C9 11 00 00 0E 0D CD 05 00 C9 21 AF    ..............!.
003360:  1E 71 2A AF 1E 26 00 EB 0E 0E CD 05 00 C9 21 B1    .q*..&........!.
003370:  1E 70 2B 71 2A B0 1E EB 0E 0F CD 05 00 32 AE 1E    .p+q*........2..
003380:  C9 21 B3 1E 70 2B 71 2A B2 1E EB 0E 10 CD 05 00    .!..p+q*........
003390:  32 AE 1E C9 21 B5 1E 70 2B 71 2A B4 1E EB 0E 11    2...!..p+q*.....
0033A0:  CD 05 00 32 AE 1E C9 11 00 00 0E 12 CD 05 00 32    ...2...........2
0033B0:  AE 1E C9 21 B7 1E 70 2B 71 2A B6 1E EB 0E 13 CD    ...!..p+q*......
0033C0:  05 00 C9 21 B9 1E 70 2B 71 2A B8 1E EB 0E 14 CD    ...!..p+q*......
0033D0:  05 00 C9 21 BB 1E 70 2B 71 2A BA 1E EB 0E 15 CD    ...!..p+q*......
0033E0:  05 00 C9 21 BD 1E 70 2B 71 2A BC 1E EB 0E 16 CD    ...!..p+q*......
0033F0:  05 00 32 AE 1E C9 21 BF 1E 70 2B 71 2A BE 1E EB    ..2...!..p+q*...
003400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0034A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0034B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0034C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0034D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0034E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0034F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0035A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0035B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0035C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0035D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0035E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0035F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003600:  0E 17 CD 05 00 C9 21 C3 1E 70 2B 71 2A C2 1E EB    ......!..p+q*...
003610:  0E 1E CD 05 00 C9 11 FF 00 0E 20 CD 05 00 C9 21    .......... ....!
003620:  C4 1E 71 2A C4 1E 26 00 EB 0E 20 CD 05 00 C9 2A    ..q*..&... ....*
003630:  C0 1E 4D CD 1F 09 C9 2A C1 1E 4D CD 1F 09 C9 21    ..M....*..M....!
003640:  C6 1E 70 2B 71 2A C5 1E EB 0E 21 CD 05 00 C9 21    ..p+q*....!....!
003650:  C8 1E 70 2B 71 2A C7 1E EB 0E 22 CD 05 00 C9 21    ..p+q*...."....!
003660:  CA 1E 70 2B 71 2A C9 1E EB 0E 24 CD 05 00 C9 21    ..p+q*....$....!
003670:  CB 1E 36 80 11 CB 1E 0E 0A CD 05 00 C9 11 00 00    ..6.............
003680:  0E 0B CD 05 00 C9 21 6B 1F 70 2B 71 2A 6A 1F EB    ......!k.p+q*j..
003690:  0E 1A CD 05 00 C9 3E 0C D3 01 3E 08 D3 01 DB 01    ......>...>.....
0036A0:  07 07 07 1F DA AA 09 C3 9E 09 DB 03 E6 7F C9 21    ...............!
0036B0:  71 1F 70 2B 71 CD 2F 09 2A 70 1F 44 4D CD 39 08    q.p+q./.*p.DM.9.
0036C0:  0E 3A CD 1C 08 0E 20 CD 1C 08 3A 4D 1F 32 72 1F    .:.... ...:M.2r.
0036D0:  3A 4E 1F 21 72 1F BE DA F8 09 21 CC 1E 3A 72 1F    :N.!r.....!..:r.
0036E0:  BE D2 F1 09 2A 72 1F 26 00 01 CD 1E 09 4E CD 1C    ....*r.&.....N..
0036F0:  08 21 72 1F 34 C2 D0 09 21 CC 1E 36 00 01 3A 02    .!r.4...!..6..:.
003700:  CD 94 08 3A AE 1E FE FF CA 11 0A 01 3A 02 CD B3    ...:........:...
003710:  08 CD 2E 08 C3 0E 05 C9 21 77 1F 73 2B 70 2B 71    ........!w.s+p+q
003720:  2B D1 C1 70 2B 71 D5 3A 77 1F 3D 32 77 1F FE FF    +..p+q.:w.=2w...
003730:  CA 4E 0A 2A 73 1F E5 2A 75 1F C1 0A 77 2A 73 1F    .N.*s..*u...w*s.
003740:  23 22 73 1F 2A 75 1F 23 22 75 1F C3 27 0A C9 21    #"s.*u.#"u..'..!
003750:  00 00 22 9D 1E 2A 03 1E 4D CD 5E 08 CD 37 09 21    .."..*..M.^..7.!
003760:  78 1F 36 00 3A FB 1D 21 78 1F BE DA BE 0A 2A 9D    x.6.:..!x.....*.
003770:  1E EB 2A 01 1E 19 44 4D CD 86 09 01 06 1E CD C3    ..*...DM........
003780:  08 32 79 1F FE 00 CA AD 0A 3A 79 1F FE 01 CA 97    .2y......:y.....
003790:  0A 01 94 02 CD AF 09 2A 9D 1E 22 9F 1E EB 2A 01    .......*.."...*.
0037A0:  1E 19 36 1A 3A FB 1D 32 78 1F C3 B7 0A 11 80 00    ..6.:..2x.......
0037B0:  2A 9D 1E 19 22 9D 1E 21 78 1F 34 C2 64 0A 21 00    *..."..!x.4.d.!.
0037C0:  00 22 9D 1E CD 2F 09 C9 0E 07 21 A1 1E CD 6A 1D    .".../....!...j.
0037D0:  7D 3D 32 7C 1F FE FF C2 DB 0A C9 21 00 00 22 A1    }=2|.......!..".
0037E0:  1E 2A 4B 1E 4D CD 5E 08 01 27 1E CD 5F 09 21 7A    .*K.M.^..'.._.!z
0037F0:  1F 36 00 3A 7C 1F 21 7A 1F BE DA 31 0B 2A A1 1E    .6.:|.!z...1.*..
003800:  C3 CE 04 C9 00 00 C9 00 00 1A 00 00 00 00 00 00    ................
003810:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
003820:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
003830:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
003840:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
003850:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
003860:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
003870:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
003880:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
003890:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
0038A0:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
0038B0:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
0038C0:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
0038D0:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
0038E0:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
0038F0:  28 49 4E 50 3A 2F 4F 55 54 3A 53 50 41 43 45 29    (INP:/OUT:SPACE)
003900:  20 20 20 43 4F 50 59 52 49 47 48 54 20 28 43 29       COPYRIGHT (C)
003910:  20 31 39 37 39 2C 20 44 49 47 49 54 41 4C 20 52     1979, DIGITAL R
003920:  45 53 45 41 52 43 48 2C 20 20 50 49 50 20 56 45    ESEARCH,  PIP VE
003930:  52 53 20 31 2E 35 03 01 06 01 00 24 24 24 20 20    RS 1.5.....$$$  
003940:  20 20 20 53 55 42 00 00 00 20 3D 2E 3A 2C 3C 3E       SUB... =.:,<>
003950:  0D 5F 5B 5D 49 4E 50 49 52 44 50 54 52 55 52 31    ._[]INPIRDPTRUR1
003960:  55 52 32 52 44 52 4F 55 54 4C 50 54 55 4C 31 50    UR2RDROUTLPTUL1P
003970:  52 4E 4C 53 54 50 54 50 55 50 31 55 50 32 50 55    RNLSTPTPUP1UP2PU
003980:  4E 54 54 59 43 52 54 55 43 31 43 4F 4E 4E 55 4C    NTTYCRTUC1CONNUL
003990:  45 4F 46 00 44 49 53 4B 20 52 45 41 44 20 45 52    EOF.DISK READ ER
0039A0:  52 4F 52 24 44 49 53 4B 20 57 52 49 54 45 20 45    ROR$DISK WRITE E
0039B0:  52 52 4F 52 24 56 45 52 49 46 59 20 45 52 52 4F    RROR$VERIFY ERRO
0039C0:  52 24 4E 4F 54 20 41 20 43 48 41 52 41 43 54 45    R$NOT A CHARACTE
0039D0:  52 20 53 49 4E 4B 24 52 45 41 44 45 52 20 53 54    R SINK$READER ST
0039E0:  4F 50 50 49 4E 47 0D 0A 24 4E 4F 54 20 41 20 43    OPPING..$NOT A C
0039F0:  48 41 52 41 43 54 45 52 20 53 4F 55 52 43 45 24    HARACTER SOURCE$
003A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
003A10:  03 00 01 00 02 09 52 E5 03 00 41 02 00 00 00 02    ......R...A.....
003A20:  03 00 46 02 00 00 00 02 03 00 42 02 00 00 00 02    ..F.......B.....
003A30:  03 00 47 02 00 00 00 02 03 00 43 02 00 00 00 02    ..G.......C.....
003A40:  03 00 48 02 00 00 00 02 03 00 44 02 00 00 00 02    ..H.......D.....
003A50:  03 00 49 02 00 00 00 02 03 00 45 02 00 00 00 02    ..I.......E.....
003A60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003A70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003A80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003A90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003B00:  01 CA 1F 09 22 7D 1F 2A 7D 1F 44 4D CD 86 09 01    ...."}.*}.DM....
003B10:  27 1E CD D3 08 FE 00 CA 20 0B 01 A4 02 CD AF 09    '....... .......
003B20:  11 80 00 2A A1 1E 19 22 A1 1E 21 7A 1F 34 C2 F3    ...*..."..!z.4..
003B30:  0A 3A 65 1F 1F D2 C9 0B 21 00 00 22 A1 1E 01 80    .:e.....!.."....
003B40:  00 CD 86 09 21 7A 1F 36 00 3A 7C 1F 21 7A 1F BE    ....!z.6.:|.!z..
003B50:  DA C0 0B 01 27 1E CD 3F 09 D6 00 D6 01 9F 32 7F    ....'..?......2.
003B60:  1F 2A 48 1E 23 22 48 1E 21 7B 1F 36 00 3A 7B 1F    .*H.#"H.!{.6.:{.
003B70:  D6 80 9F 21 7F 1F A6 1F D2 A2 0B 2A 7B 1F 26 00    ...!.......*{.&.
003B80:  01 80 00 09 3A 7B 1F 11 A1 1E E5 CD 34 1D 01 CA    ....:{......4...
003B90:  1F 09 C1 0A 96 D6 01 9F 32 7F 1F 21 7B 1F 34 C3    ........2..!{.4.
003BA0:  6D 0B 11 80 00 2A A1 1E 19 22 A1 1E 3A 7F 1F 1F    m....*..."..:...
003BB0:  DA B9 0B 01 B5 02 CD AF 09 21 7A 1F 34 C2 49 0B    .........!z.4.I.
003BC0:  01 27 1E CD D3 08 32 7F 1F 21 00 00 22 A1 1E C9    .'....2..!.."...
003BD0:  21 80 1F 71 3A 80 1F FE 20 DA F4 0B 21 F3 1D 34    !..q:... ...!..4
003BE0:  3E 00 21 53 1F BE D2 F4 0B 3A 53 1F 21 F3 1D BE    >.!S.....:S.!...
003BF0:  D2 F4 0B C9 3A 03 00 32 81 1F 2A A3 1E 4D 06 00    ....:..2..*£.M..
003C00:  21 DD 0C 09 09 5E 23 56 EB E9 01 FF 1D 11 A1 1E    !....^#V........
003C10:  CD 8E 1D DA 19 0C CD C8 0A 2A A1 1E 01 CA 1F 09    .........*......
003C20:  3A 80 1F 77 2A A1 1E 23 22 A1 1E C3 05 0D C3 3D    :..w*..#"......=
003C30:  0C C3 3D 0C C3 3D 0C C3 3D 0C C3 3D 0C 01 C2 02    ..=..=..=..=....
003C40:  CD AF 09 C3 05 0D 2A 80 1F 4D CD E6 07 C3 05 0D    ......*..M......
003C50:  21 03 00 36 80 C3 71 0C C3 05 0D 21 03 00 36 C0    !..6..q....!..6.
003C60:  C3 71 0C C3 05 0D 21 03 00 36 80 C3 71 0C C3 05    .q....!..6..q...
003C70:  0D 2A 80 1F 26 00 EB 0E 05 CD 05 00 C3 05 0D 21    .*..&..........!
003C80:  03 00 36 10 C3 A0 0C C3 05 0D 21 03 00 36 20 C3    ..6.......!..6 .
003C90:  A0 0C C3 05 0D 21 03 00 36 30 C3 A0 0C C3 05 0D    .....!..60......
003CA0:  2A 80 1F 26 00 EB 0E 04 CD 05 00 C3 05 0D 21 03    *..&..........!.
003CB0:  00 36 00 C3 CF 0C C3 05 0D 21 03 00 36 01 C3 CF    .6.......!..6...
003CC0:  0C C3 05 0D 21 03 00 36 03 C3 CF 0C C3 05 0D 2A    ....!..6.......*
003CD0:  80 1F 26 00 EB 0E 02 CD 05 00 C3 05 0D 0A 0C 2E    ..&.............
003CE0:  0C 31 0C 34 0C 37 0C 3A 0C 3D 0C 46 0C 50 0C 5B    .1.4.7.:.=.F.P.[
003CF0:  0C 66 0C 71 0C 7F 0C 8A 0C 95 0C A0 0C AE 0C B9    .f.q............
003D00:  C3 B7 15 3A A8 1E D6 53 D6 01 9F F5 3A A8 1E D6    ...:...S....:...
003D10:  51 D6 01 9F C1 48 B1 1F D2 49 15 3A 4E 1F 3C 32    Q....H...I.:N.<2
003D20:  9F 1F CD F2 11 32 A8 1E D6 1A D6 01 9F F5 3A A8    .....2........:.
003D30:  1E D6 0D D6 01 9F C1 48 B1 1F DA 40 15 C3 22 15    .......H...@..".
003D40:  CD F2 11 32 A8 1E C3 8D 15 CD F2 11 32 A8 1E D6    ...2........2...
003D50:  30 32 9F 1F 4F 3E 09 B9 D2 63 15 21 9F 1F 36 01    02..O>...c.!..6.
003D60:  C3 8D 15 CD F2 11 32 A8 1E D6 30 32 99 1F 4F 3E    ......2...02..O>
003D70:  09 B9 DA 8D 15 2A 9F 1F 26 00 CD 4F 1D E5 2A 99    .....*..&..O..*.
003D80:  1F 26 00 C1 09 EB 21 9F 1F 73 C3 63 15 2A 9E 1F    .&....!..s.c.*..
003D90:  26 00 01 50 1F 09 3A 9F 1F 77 3A 9E 1F FE 06 C2    &..P..:..w:.....
003DA0:  B7 15 3E 1F 21 9F 1F BE D2 B1 15 01 16 03 CD AF    ..>.!...........
003DB0:  09 3A 9F 1F 32 C1 1E C3 C2 14 CD F2 11 32 A8 1E    .:..2........2..
003DC0:  C9 3A A8 1E FE 5F C2 CE 15 21 A8 1E 36 3D C9 21    .:..._...!..6=.!
003DD0:  A3 1F 36 00 3E 27 21 A3 1F BE DA E9 15 0E 00 CD    £.6.>'!£........
003DE0:  45 0E 21 A3 1F 34 C2 D4 15 C9 21 A9 1F 70 2B 71    E.!£.4....!..p+q
003DF0:  2A A8 1F E5 1E 03 01 30 1E CD 18 0A C9 21 AD 1F    *......0.....!..
003E00:  72 2B 73 2B 70 2B 71 2A AC 1F 7E FE 24 CA 37 16    r+s+p+q*..~.$.7.
003E10:  2A AC 1F 3E 7F A6 2A AA 1F F5 3E 7F A6 C1 48 B9    *..>..*...>...H.
003E20:  CA 26 16 3E 00 C9 2A AA 1F 23 22 AA 1F 2A AC 1F    .&.>..*..#"..*..
003E30:  23 22 AC 1F C3 07 16 3E 01 C9 CD 0D 11 32 A8 1E    #".....>.....2..
003E40:  3A 04 1E 1F D2 52 16 01 9D 1E 11 9F 1E CD 8E 1D    :....R..........
003E50:  9F C9 3A A8 1E D6 1A D6 01 9F C9 21 AF 1F 36 01    ..:........!..6.
003E60:  21 9C 1E 36 00 CD 3D 17 32 B5 1F FE 3A CA 99 16    !..6..=.2...:...
003E70:  21 9C 1E 36 00 3A B5 1F FE 1A C2 93 16 01 48 03    !..6.:........H.
003E80:  CD 39 08 CD 13 08 FE 1A C2 8E 16 3E 01 C9 21 9C    .9.........>..!.
003E90:  1E 36 00 CD 2D 17 C3 65 16 21 B5 1F 36 00 CD BB    .6..-..e.!..6...
003EA0:  17 32 B4 1F FE 00 C2 C7 16 CD 3D 17 32 B4 1F FE    .2........=.2...
003EB0:  1A CA BA 16 CD 2D 17 C3 A9 16 3A AF 1F 1F D2 C4    .....-....:.....
003EC0:  16 3E 01 C9 3E 02 C9 CD C4 17 22 B7 1F CD BB 17    .>..>.....".....
003ED0:  32 B6 1F 3A B4 1F D6 00 C6 FF 9F 21 AF 1F A6 1F    2..:.......!....
003EE0:  D2 F0 16 21 B4 1F 35 CD BB 17 32 B3 1F C3 D3 16    ...!..5...2.....
003EF0:  CD AC 17 21 B5 1F 86 FE 00 CA 02 17 01 5C 03 CD    ...!.........\..
003F00:  0C C4 0C CF 0C 3A 81 1F 32 03 00 C9 21 82 1F 71    .....:..2...!..q
003F10:  3A 82 1F FE 09 CA 22 0D 2A 82 1F 4D CD D0 0B C3    :.....".*..M....
003F20:  6E 0D 3A 63 1F FE 00 C2 34 0D 2A 82 1F 4D CD D0    n.:c....4.*..M..
003F30:  0B C3 6E 0D 3A F3 1D 32 83 1F 21 63 1F 3A 83 1F    ..n.:..2..!c.:..
003F40:  BE DA 51 0D 21 63 1F 3A 83 1F 96 32 83 1F C3 3A    ..Q.!c.:...2...:
003F50:  0D 21 83 1F 3A 63 1F 96 77 3E 00 21 83 1F BE D2    .!..:c..w>.!....
003F60:  6E 0D 21 83 1F 35 0E 20 CD D0 0B C3 59 0D 3A 82    n.!..5. ....Y.:.
003F70:  1F FE 0D C2 7B 0D 21 F3 1D 36 00 C9 21 84 1F 71    ....{.!..6..!..q
003F80:  3A 84 1F D6 00 D6 01 9F 21 6C 1F A6 77 1F D2 99    :.......!l..w...
003F90:  0D 0E 20 CD 0C 0D C3 A2 0D 3A 84 1F C6 30 4F CD    .. ......:...0O.
003FA0:  0C 0D C9 21 85 1F 71 3A 85 1F E6 F8 1F 1F 1F 1F    ...!..q:........
003FB0:  4F CD 7C 0D 3A 85 1F E6 0F 4F CD 7C 0D C9 21 86    O.|.:....O.|..!.
003FC0:  1F 36 01 3A 5D 1F D6 01 D6 01 9F 32 6C 1F 3A 6F    .6.:]......2l.:o
003FD0:  1F 86 27 32 6F 1F 3A 6E 1F CE 00 27 32 6E 1F 3A    ..'2o.:n...'2n.:
003FE0:  6D 1F CE 00 27 32 6D 1F 2A 6D 1F 4D CD A3 0D 2A    m...'2m.*m.M.£.*
003FF0:  6E 1F 4D CD A3 0D 2A 6F 1F 4D CD A3 0D 3A 5D 1F    n.M.£.*o.M.£.:].
004000:  FE 01 C2 12 0E 0E 3A CD 0C 0D 0E 20 CD 0C 0D C3    ......:.... ....
004010:  17 0E 0E 09 CD 0C 0D C9 2A A1 1E 7D E6 7F 32 89    ........*..}..2.
004020:  1F 11 80 FF CD 44 1D 22 87 1F CD C8 0A 2A 87 1F    .....D.".....*..
004030:  01 CA 1F 09 E5 2A 89 1F EB CD 18 0A 2A 89 1F 26    .....*......*..&
004040:  00 22 A1 1E C9 21 8A 1F 71 3A 55 1F 1F D2 59 0E    ."...!..q:U...Y.
004050:  3A 8A 1F FE 0C C2 59 0E C9 3A A6 1E 1F D2 A9 0E    :.....Y..:......
004060:  3A 8A 1F FE 0C CA A9 0E 3A 5F 1F 32 8B 1F FE 00    :.......:_.2....
004070:  CA 98 0E 3A 8B 1F FE 01 C2 80 0E 21 8B 1F 36 3C    ...:.......!..6<
004080:  3A F4 1D 3C 32 F4 1D 21 8B 1F BE DA 98 0E 21 F4    :..<2..!......!.
004090:  1D 36 00 0E 0C CD 0C 0D 3E 00 21 5D 1F BE D2 A4    .6......>.!]....
0040A0:  0E CD BE 0D 21 A6 1E 36 00 3A 51 1F 1F D2 CC 0E    ....!..6.:Q.....
0040B0:  3A 8A 1F D6 13 D6 01 9F F5 3A A3 1E D6 00 D6 01    :........:£.....
0040C0:  9F C1 48 A1 1F D2 CC 0E CD 18 0E C9 3A 8A 1F FE    ..H.........:...
0040D0:  0C C2 D9 0E 21 F4 1D 36 00 2A 8A 1F 4D CD 0C 0D    ....!..6.*..M...
0040E0:  3A 8A 1F FE 0A C2 ED 0E 21 A6 1E 36 01 C9 21 8C    :.......!..6..!.
0040F0:  1F 71 3A 8C 1F D6 61 9F 2F F5 3E 7A 21 8C 1F 96    .q:...a./.>z!...
004100:  12 17 CD 2D 17 3A AF 1F 1F D2 0F 17 3E 00 C9 3E    ...-.:......>..>
004110:  02 C9 21 B1 1F 70 2B 71 3A AF 1F 1F D2 2C 17 21    ..!..p+q:....,.!
004120:  AF 1F 36 00 2A B0 1F 44 4D CD 39 08 C9 3A AE 1F    ..6.*..DM.9..:..
004130:  1F D2 3C 17 21 AE 1F 36 00 CD 18 0E C9 3A AF 1F    ..<.!..6.....:..
004140:  1F D2 7A 17 CD 0D 11 32 B2 1F FE 13 C2 57 17 21    ..z....2.....W.!
004150:  AE 1F 36 01 C3 44 17 2A 9C 1E 26 00 01 4C 1E 09    ..6..D.*..&..L..
004160:  3A B2 1F 77 3A 9C 1E 3C 32 9C 1E FE 4F DA 76 17    :..w:..<2...O.v.
004170:  01 2A 03 CD 12 17 3A B2 1F C9 3E 1A C9 CD 3D 17    .*....:...>...=.
004180:  32 B9 1F D6 30 4F 3E 09 B9 DA 92 17 3A B9 1F D6    2...0O>.....:...
004190:  30 C9 3A B9 1F D6 41 4F 3E 05 B9 D2 A4 17 01 3A    0.:...AO>......:
0041A0:  03 CD 12 17 3A B9 1F D6 41 C6 0A C9 CD 7D 17 87    ....:...A....}..
0041B0:  87 87 87 F5 CD 7D 17 C1 48 B1 C9 CD AC 17 21 B5    .....}..H.....!.
0041C0:  1F 86 77 C9 CD BB 17 4F 06 00 60 69 0E 08 CD 64    ..w....O..`i...d
0041D0:  1D E5 CD BB 17 E1 CD 56 1D C9 CD 5B 16 32 BA 1F    .......V...[.2..
0041E0:  4F 3E 01 B9 DA 32 18 3A BA 1F D6 01 D6 01 9F 21    O>...2.:.......!
0041F0:  58 1F A6 1F DA 1C 18 21 BB 1F 36 01 3A 9C 1E 21    X......!..6.:..!
004200:  BB 1F BE DA 1C 18 3A BB 1F 3D 4F 06 00 21 4C 1E    ......:..=O..!L.
004210:  09 4E CD 45 0E 21 BB 1F 34 C2 FC 17 0E 0D CD 45    .N.E.!..4......E
004220:  0E 0E 0A CD 45 0E 3A BA 1F FE 01 C2 2F 18 C9 C3    ....E.:...../...
004230:  DA 17 CD 2E 08 2A 9C 1E 26 00 01 4C 1E 09 36 24    .....*..&..L..6$
004240:  01 4C 1E CD 39 08 01 6B 03 CD 39 08 CD 2E 08 CD    .L..9..k..9.....
004250:  13 08 FE 1A C2 58 18 C9 C3 DA 17 C9 01 8F 03 CD    .....X..........
004260:  AF 09 C9 2A 4B 1E 4D CD 5E 08 11 9E 03 01 30 1E    ...*K.M.^.....0.
004270:  CD FD 15 32 05 1E 01 30 1E C5 1E 03 01 A4 1F CD    ...2...0........
004280:  18 0A 3A 30 1E E6 7F 32 30 1E 3A 31 1E E6 7F 32    ..:0...20.:1...2
004290:  31 1E 01 A2 03 CD EA 15 01 27 1E CD B3 08 01 27    1........'.....'
0042A0:  1E CD E3 08 3A AE 1E FE FF C2 B2 18 01 A5 03 CD    ....:...........
0042B0:  AF 09 21 47 1E 36 00 21 00 00 22 A1 1E C9 21 FF    ..!G.6.!.."...!.
0042C0:  FF 22 9F 1E CD 37 09 2A 03 1E 4D CD 5E 08 01 06    ."...7.*..M.^...
0042D0:  1E CD 6E 08 CD 2F 09 3A 61 1F 2F F5 3A 10 1E 07    ..n../.:a./.:...
0042E0:  C1 48 A1 1F D2 EC 18 21 AE 1E 36 FF 3A AE 1E FE    .H.....!..6.:...
0042F0:  FF C2 FA 18 01 B8 03 CD AF 09 21 26 1E 36 00 11    ..........!&.6..
004300:  9F 2F C1 48 A1 1F D2 11 0F 3A 8C 1F E6 5F 32 8C    ./.H.....:..._2.
004310:  1F 3A 8C 1F C9 21 8D 1F 71 3A 8D 1F D6 41 9F 2F    .:...!..q:...A./
004320:  F5 3E 5A 21 8D 1F 96 9F 2F C1 48 A1 1F D2 38 0F    .>Z!..../.H...8.
004330:  3A 8D 1F F6 20 32 8D 1F 3A 8D 1F C9 3A A4 1E 3D    :... 2..:...:..=
004340:  4F 3E 05 B9 DA 6D 0F 3A 57 1F 21 51 1F B6 F5 CD    O>...m.:W.!Q....
004350:  7D 09 C1 48 A1 1F D2 6D 0F CD 13 08 FE 1A C2 64    }..H...m.......d
004360:  0F 3E 1A C9 01 D7 02 CD 39 08 3E 13 C9 21 90 1F    .>......9.>..!..
004370:  36 01 3A 03 00 32 8E 1F 2A A4 1E 4D 06 00 21 45    6.:..2..*..M..!E
004380:  10 09 09 5E 23 56 EB E9 01 FD 1D 11 9D 1E CD 8E    ...^#V..........
004390:  1D DA 97 0F CD 4F 0A 2A 9D 1E EB 2A 01 1E 19 7E    .....O.*...*...~
0043A0:  32 8F 1F 2A 9D 1E 23 22 9D 1E C3 6D 10 CD F3 07    2..*..#"...m....
0043B0:  32 8F 1F C3 6D 10 CD 96 09 32 8F 1F C3 6D 10 21    2...m....2...m.!
0043C0:  03 00 36 04 C3 E0 0F C3 6D 10 21 03 00 36 08 C3    ..6.....m.!..6..
0043D0:  E0 0F C3 6D 10 21 03 00 36 0C C3 E0 0F C3 6D 10    ...m.!..6.....m.
0043E0:  11 00 00 0E 03 CD 05 00 E6 7F 32 8F 1F C3 6D 10    ..........2...m.
0043F0:  C3 08 10 C3 08 10 C3 08 10 C3 08 10 C3 08 10 C3    ................
004400:  08 10 C3 08 10 C3 08 10 01 E9 02 CD AF 09 C3 6D    ...............m
004410:  10 21 03 00 36 00 C3 32 10 C3 6D 10 21 03 00 36    .!..6..2..m.!..6
004420:  01 C3 32 10 C3 6D 10 21 03 00 36 03 C3 32 10 C3    ..2..m.!..6..2..
004430:  6D 10 21 90 1F 36 00 11 00 00 0E 01 CD 05 00 32    m.!..6.........2
004440:  8F 1F C3 6D 10 88 0F AD 0F B6 0F BF 0F CA 0F D5    ...m............
004450:  0F E0 0F F0 0F F3 0F F6 0F F9 0F FC 0F FF 0F 02    ................
004460:  10 05 10 08 10 11 10 1C 10 27 10 32 10 3A 8E 1F    .........'.2.:..
004470:  32 03 00 3A 54 1F 1F D2 92 10 3A A3 1E 32 8E 1F    2..:T.....:£.2..
004480:  21 A3 1E 36 13 2A 8F 1F 4D CD 45 0E 3A 8E 1F 32    !£.6.*..M.E.:..2
004490:  A3 1E 3A 90 1F 1F D2 DC 10 3A 04 1E 1F D2 B2 10    £.:......:......
0044A0:  3A A7 1E 3C 32 A7 1E D6 00 D6 01 9F 32 90 1F C3    :..<2.......2...
0044B0:  BD 10 3A 8F 1F D6 0A D6 01 9F 32 90 1F 3A 90 1F    ..:.......2..:..
0044C0:  1F D2 DC 10 CD 7D 09 1F D2 DC 10 CD 13 08 FE 1A    .....}..........
0044D0:  C2 D6 10 3E 1A C9 01 00 03 CD AF 09 3A 69 1F 1F    ...>........:i..
0044E0:  D2 EB 10 3A 8F 1F E6 7F 32 8F 1F 3A 64 1F 1F D2    ...:....2..:d...
0044F0:  FA 10 2A 8F 1F 4D CD EE 0E C9 3A 5B 1F 1F D2 09    ..*..M....:[....
004500:  C0 03 01 0F 1E CD FD 15 32 04 1E 2A FD 1D 22 9D    ........2..*..".
004510:  1E C9 3E 00 21 62 1F BE D2 21 19 01 C4 03 CD AF    ..>.!b...!......
004520:  09 3E 00 21 60 1F BE D2 30 19 01 D4 03 CD AF 09    .>.!`...0.......
004530:  C9 21 BC 1F 71 3A BC 1F 1F D2 45 19 3A 13 1E 32    .!..q:....E.:..2
004540:  34 1E C3 4A 19 21 34 1E 36 00 2A A1 1E 7D E6 7F    4..J.!4.6.*..}..
004550:  FE 00 CA 61 19 21 34 1E 34 0E 1A CD 45 0E C3 4A    ...a.!4.4...E..J
004560:  19 CD 12 19 CD C8 0A 2A 4B 1E 4D CD 5E 08 01 27    .......*K.M.^..'
004570:  1E CD 81 08 3A AE 1E FE FF C2 82 19 01 E3 03 CD    ....:...........
004580:  AF 09 01 A4 1F CD EA 15 21 33 1E 36 00 01 27 1E    ........!3.6..'.
004590:  CD 6E 08 3A AE 1E FE FF CA E9 19 3A 30 1E 07 1F    .n.:.......:0...
0045A0:  D2 E3 19 3A 66 1F 1F DA D5 19 01 01 04 CD 39 08    ...:f.........9.
0045B0:  CD 13 08 4F CD EE 0E FE 59 CA D2 19 01 23 04 CD    ...O....Y....#..
0045C0:  39 08 CD 2E 08 01 33 04 CD EA 15 01 27 1E CD B3    9.....3.....'...
0045D0:  08 C9 CD 2E 08 3A 30 1E E6 7F 32 30 1E 01 27 1E    .....:0...20..'.
0045E0:  CD 06 09 01 27 1E CD B3 08 01 27 1E C5 1E 10 01    ....'.....'.....
0045F0:  37 1E CD 18 0A 01 36 04 CD EA 15 01 27 1E CD F6    7.....6.....'...
004600:  08 C9 0E 07 21 FF 1D CD 6A 1D 3E FF CD 41 1D 2B    ....!...j.>..A.+
004610:  EB 21 FB 1D 73 C9 21 CA 1F 22 01 1E 01 00 40 11    .!..s.!.."....@.
004620:  FF 1D CD 93 1D DA 31 1A 21 80 7F 22 FF 1D C3 3C    ......1.!.."...<
004630:  1A 2A FD 1D EB 2A FF 1D 19 22 FF 1D CD 02 1A C9    .*...*..."......
004640:  01 CA 1F 11 06 00 CD 93 1D 0E 01 E5 CD 6E 1D 01    .............n..
004650:  CA 1F 09 22 01 1E 11 00 FF E1 CD 44 1D 0E 01 CD    ...".......D....
004660:  6E 1D 22 FD 1D 22 FF 1D CD 02 1A C9 3A A4 1E D6    n.".."......:...
004670:  00 C6 FF 9F 21 51 1F A6 32 BD 1F 1F D2 82 1A CD    ....!Q..2.......
004680:  16 1A 3A 58 1F 21 57 1F B6 1F D2 93 1A CD DA 17    ..:X.!W.........
004690:  C3 A4 1A CD 3A 16 1F DA A4 1A 2A A8 1E 4D CD 45    ....:.....*..M.E
0046A0:  0E C3 93 1A 3A BD 1F 1F D2 B1 1A CD 18 0E CD 40    ....:..........@
0046B0:  1A C9 CD 40 1A 3A 4F 1F 32 4D 1F CD 63 18 CD BE    ...@.:O.2M..c...
0046C0:  18 21 BE 1F 36 01 23 36 00 3E 19 21 BF 1F BE DA    .!..6.#6.>.!....
0046D0:  29 1B 2A BF 1F 26 00 01 50 1F 09 7E FE 00 CA 22    ).*..&..P..~..."
0046E0:  1B 3A BF 1F D6 06 D6 01 9F F5 3A BF 1F D6 0E D6    .:........:.....
0046F0:  01 9F C1 48 B1 F5 3A BF 1F D6 11 D6 01 9F C1 48    ...H..:........H
004700:  11 2A 8F 1F 4D CD 15 0F C9 3A 8F 1F C9 3E 00 21    .*..M....:...>.!
004710:  FA 1D BE D2 28 11 3A FA 1D 3D 32 FA 1D FE 01 C2    ....(.:..=2.....
004720:  25 11 3E 0A C9 3E 1A C9 3E 00 21 F8 1D BE D2 46    %.>..>..>.!....F
004730:  11 21 F8 1D 35 2B 4E 06 00 21 CD 1E 09 7E 32 91    .!..5+N..!...~2.
004740:  1F 21 F7 1D 34 C9 CD 3C 0F 32 91 1F FE 1A C2 54    .!..4..<.2.....T
004750:  11 3E 1A C9 3E 00 21 62 1F BE D2 7D 11 2A 62 1F    .>..>.!b...}.*b.
004760:  4D CD AD 11 1F D2 7A 11 3A 62 1F 32 F7 1D 21 62    M.....z.:b.2..!b
004770:  1F 36 00 3A F9 1D 3C 32 F8 1D C3 A9 11 3E 00 21    .6.:..<2.....>.!
004780:  60 1F BE D2 A5 11 2A 60 1F 4D CD AD 11 1F D2 9E    `.....*`.M......
004790:  11 21 60 1F 36 00 21 FA 1D 36 02 3E 0D C9 3A 91    .!`.6.!..6.>..:.
0047A0:  1F C9 C3 A9 11 3A 91 1F C9 C3 28 11 C9 21 92 1F    .....:....(..!..
0047B0:  71 3A F9 1D 21 92 1F 86 77 4F 06 00 21 CD 1E 09    q:..!...wO..!...
0047C0:  7E 32 93 1F FE 1A C2 D9 11 2A 92 1F 26 00 01 CD    ~2.......*..&...
0047D0:  1E 09 3A 91 1F 77 3E 01 C9 21 91 1F 3A 93 1F BE    ..:..w>..!..:...
0047E0:  C2 EA 11 21 F9 1D 34 C3 EF 11 21 F9 1D 36 00 3E    ...!..4...!..6.>
0047F0:  00 C9 3A 4E 1F 3C 32 4E 1F 21 CC 1E BE DA 03 12    ..:N.<2N.!......
004800:  3E 0D C9 2A 4E 1F 26 00 01 CD 1E 09 4E CD EE 0E    >..*N.&.....N...
004810:  C9 CD F2 11 32 A8 1E FE 20 C2 1F 12 C3 11 12 C9    ....2... .......
004820:  21 96 1F 70 2B 71 21 F5 1D 36 00 21 A9 1E 36 00    !..p+q!..6.!..6.
004830:  2B 36 20 21 AA 1E 36 00 3A AA 1E FE 20 D2 53 12    +6 !..6.:... .S.
004840:  3A AA 1E FE 0B C2 4D 12 21 A8 1E 36 00 CD 67 14    :.....M.!..6..g.
004850:  C3 38 12 CD 11 12 3A 4E 1F 32 4D 1F 2A A8 1E 4D    .8....:N.2M.*..M
004860:  CD 38 14 1F D2 70 12 CD C1 15 21 A9 1E 36 01 C9    .8...p....!..6..
004870:  21 94 1F 36 00 21 97 1F 36 00 3E 19 21 97 1F BE    !..6.!..6.>.!...
004880:  DA 95 12 2A 97 1F 26 00 01 50 1F 09 36 00 21 97    ...*..&..P..6.!.
004890:  1F 34 C2 7A 12 21 F6 1D 36 00 21 F8 1D 36 00 23    .4.z.!..6.!..6.#
0048A0:  36 00 23 36 00 21 AA 1E 36 00 2A A8 1E 4D CD 38    6.#6.!..6.*..M.8
0048B0:  14 1F DA DA 12 3A AA 1E FE 08 DA BE 12 C9 3A A8    .....:........:.
0048C0:  1E FE 2A C2 CE 12 0E 08 CD 87 14 C3 D1 12 CD 67    ..*............g
0048D0:  14 CD F2 11 32 A8 1E C3 AA 12 3A A8 1E FE 3A C2    ....2.....:...:.
0048E0:  BF 13 3A 94 1F FE 00 CA EB 12 C9 3A AA 1E FE 01    ..:........:....
0048F0:  C2 2C 13 0E 01 CD A1 14 D6 41 3C 32 94 1F 4F 3E    .,.......A<2..O>
004900:  B1 F5 3A BF 1F D6 15 D6 01 9F C1 48 B1 F5 3A BF    ..:........H..:.
004910:  1F D6 16 D6 01 9F C1 48 B1 1F DA 22 1B 21 BE 1F    .......H...".!..
004920:  36 00 21 BF 1F 34 C2 C9 1A 3A BE 1F 1F D2 5F 1B    6.!..4...:...._.
004930:  CD 16 1A CD 6A 1B 1F DA 59 1B CD 4F 0A CD 6A 1B    ....j...Y..O..j.
004940:  1F D2 4D 1B 2A 9F 1E 22 A1 1E C3 53 1B 2A FF 1D    ..M.*.."...S.*..
004950:  22 A1 1E CD C8 0A C3 33 1B CD 40 1A C3 62 1B CD    "......3..@..b..
004960:  6C 1A 2A BE 1F 4D CD 31 19 C9 01 FF FF 11 9F 1E    l.*..M.1........
004970:  CD 93 1D B5 C6 FF 9F C9 21 00 00 22 C0 1F 22 C4    ........!.."..".
004980:  1F CD 37 09 2A 03 1E 4D CD 5E 08 01 80 00 CD 86    ..7.*..M.^......
004990:  09 01 5C 00 CD 94 08 21 00 00 22 C2 1F 3A AE 1E    ..\....!.."..:..
0049A0:  D6 FF C6 FF 9F 01 C0 1F 11 C2 1F F5 CD 8E 1D 9F    ................
0049B0:  C1 48 A1 1F D2 C4 1B 2A C2 1F 23 22 C2 1F CD A7    .H.....*..#"....
0049C0:  08 C3 9D 1B CD 2F 09 3A AE 1E FE FF C2 E5 1B 3E    ...../.:.......>
0049D0:  00 11 C4 1F CD 9B 1D B5 C2 E1 1B 01 39 04 CD AF    ............9...
0049E0:  09 CD 2E 08 C9 2A C2 1F 23 22 C0 1F 3A AE 1E E6    .....*..#"..:...
0049F0:  03 87 87 87 87 87 5F 16 00 21 80 00 19 E5 1E 10    ......_..!......
004A00:  01 27 1E CD 18 0A 21 27 1E 36 00 21 33 1E 36 00    .'....!'.6.!3.6.
004A10:  01 27 1E C5 1E 10 01 06 1E CD 18 0A 3A 31 1E 07    .'..........:1..
004A20:  2F 21 61 1F B6 1F D2 45 1C 2A C4 1F 23 22 C4 1F    /!a....E.*..#"..
004A30:  3E 01 CD 7A 1D B5 C2 3F 1C 01 43 04 CD 39 08 CD    >..z...?..C..9..
004A40:  49 1C CD B2 1A C3 81 1B C9 CD 2E 08 21 C6 1F 36    I...........!..6
004A50:  01 3E 0B 21 C6 1F BE DA 87 1C 2A C6 1F 26 00 01    .>.!......*..&..
004A60:  27 1E 09 7E 32 C7 1F FE 20 CA 80 1C 3A C6 1F FE    '..~2... ...:...
004A70:  09 C2 79 1C 0E 2E CD 1C 08 2A C7 1F 4D CD 1C 08    ..y......*..M...
004A80:  21 C6 1F 34 C2 51 1C C9 3E 00 21 94 1F BE D2 9B    !..4.Q..>.!.....
004A90:  1C 3A 94 1F 3D 32 03 1E C3 A1 1C 3A FC 1D 32 03    .:..=2.....:..2.
004AA0:  1E C9 3A F6 1D 1F D2 AC 1C CD 5C 18 3E 00 21 94    ..:.......\.>.!.
004AB0:  1F BE D2 BF 1C 3A 94 1F 3D 32 4B 1E C3 C5 1C 3A    .....:..=2K....:
004AC0:  FC 1D 32 4B 1E C9 21 C0 1E 3A C1 1E BE CA D1 1C    ..2K..!..:......
004AD0:  C9 21 03 1E 3A 4B 1E BE C2 DE 1C CD 5C 18 C9 CD    .!..:K......\...
004AE0:  11 12 3A A8 1E FE 0D CA ED 1C CD 5C 18 C9 21 C9    ..:........\..!.
004AF0:  1F 70 2B 71 CD 88 1C CD DF 1C 01 06 1E C5 2A C8    .p+q..........*.
004B00:  1A B9 D2 06 13 C9 CD 11 12 2A A8 1E 4D CD 38 14    .........*..M.8.
004B10:  1F D2 29 13 3A A8 1E FE 5B C2 1F 13 CD B1 14 21    ..).:...[......!
004B20:  4E 1F 35 21 A9 1E 36 04 C9 C3 B1 13 3A AA 1E FE    N.5!..6.....:...
004B30:  03 CA 35 13 C9 21 A1 1F 36 FF 23 36 00 3E 14 21    ..5..!..6.#6.>.!
004B40:  A2 1F BE DA B0 13 21 A0 1F 36 00 3A A0 1F 3C 32    ......!..6.:..<2
004B50:  A0 1F 4F 3E 03 91 9F 2F F5 3A A0 1F 21 A1 1F 86    ..O>.../.:..!...
004B60:  4F 06 00 21 54 02 09 E5 2A A0 1F 4D CD A1 14 E1    O..!T...*..M....
004B70:  96 D6 01 9F C1 48 A1 1F D2 7E 13 C3 4B 13 3A A0    .....H...~..K.:.
004B80:  1F FE 04 C2 A1 13 21 A9 1E 36 03 CD F2 11 FE 5B    ......!..6.....[
004B90:  C2 96 13 CD B1 14 21 4E 1F 35 3A A2 1F 32 A8 1E    ......!N.5:..2..
004BA0:  C9 3A A1 1F C6 03 32 A1 1F 21 A2 1F 34 C2 3D 13    .:....2..!..4.=.
004BB0:  C9 3A A8 1E FE 5B C2 BC 13 CD B1 14 C3 34 14 3A    .:...[.......4.:
004BC0:  AA 1E FE 00 C2 C8 13 C9 21 AA 1E 36 08 3A A8 1E    ........!..6.:..
004BD0:  FE 2E C2 02 14 CD F2 11 32 A8 1E 4F CD 38 14 1F    ........2..O.8..
004BE0:  DA 02 14 3A AA 1E FE 0B DA EC 13 C9 3A A8 1E FE    ...:........:...
004BF0:  2A C2 FC 13 0E 0B CD 87 14 C3 FF 13 CD 67 14 C3    *............g..
004C00:  D5 13 3A A8 1E FE 5B C2 0D 14 CD B1 14 21 4E 1F    ..:...[......!N.
004C10:  35 21 A9 1E 36 02 3A 94 1F FE 00 C2 25 14 3A FC    5!..6.:.....%.:.
004C20:  1D 3C 32 94 1F 2A 95 1F 36 00 01 20 00 2A 95 1F    .<2..*..6.. .*..
004C30:  09 36 00 C9 C3 A5 12 C9 21 9A 1F 71 21 9B 1F 36    .6......!..q!..6
004C40:  00 3E 0A 21 9B 1F BE DA 64 14 2A 9B 1F 26 00 01    .>.!....d.*..&..
004C50:  49 02 09 3A 9A 1F BE C2 5D 14 3E 01 C9 21 9B 1F    I..:....].>..!..
004C60:  34 C2 41 14 3E 00 C9 3A AA 1E 3C 32 AA 1E 4F 06    4.A.>..:..<2..O.
004C70:  00 2A 95 1F 09 3A A8 1E 77 3A A8 1E FE 3F C2 86    .*...:..w:...?..
004C80:  14 21 F5 1D 36 01 C9 21 9C 1F 71 21 A8 1E 36 3F    .!..6..!..q!..6?
004C90:  21 9C 1F 3A AA 1E BE D2 A0 14 CD 67 14 C3 90 14    !..:.......g....
004CA0:  C9 21 9D 1F 71 2A 9D 1F 26 00 EB 2A 95 1F 19 7E    .!..q*..&..*...~
004CB0:  C9 21 F6 1D 36 01 3A C0 1E 32 C1 1E CD F2 11 32    .!..6.:..2.....2
004CC0:  A8 1E 3A A8 1E D6 0D D6 01 9F F5 3A A8 1E D6 5D    ..:........:...]
004CD0:  D6 01 9F C1 48 B1 1F DA BA 15 3A A8 1E D6 41 32    ....H.....:...A2
004CE0:  9E 1F 4F 3E 19 B9 D2 03 15 3A A8 1E FE 20 C2 FA    ..O>.....:... ..
004CF0:  14 CD F2 11 32 A8 1E C3 00 15 01 08 03 CD AF 09    ....2...........
004D00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
004D10:  04 00 01 00 02 09 52 E5 04 00 41 02 00 00 00 02    ......R...A.....
004D20:  04 00 46 02 00 00 00 02 04 00 42 02 00 00 00 02    ..F.......B.....
004D30:  04 00 47 02 00 00 00 02 04 00 43 02 00 00 00 02    ..G.......C.....
004D40:  04 00 48 02 00 00 00 02 04 00 44 02 00 00 00 02    ..H.......D.....
004D50:  04 00 49 02 00 00 00 02 04 00 45 02 00 00 00 02    ..I.......E.....
004D60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004D70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004D80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004D90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004DF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004E00:  1F 44 4D 1E 21 CD 18 0A CD C6 1C C9 01 06 1E CD    .DM.!...........
004E10:  20 12 3A A9 1E D6 01 D6 01 9F F5 3A A8 1E D6 3D     .:........:...=
004E20:  D6 01 9F C1 48 A1 1F DA 2D 1D CD 5C 18 3A 4E 1F    ....H...-..\.:N.
004E30:  32 4F 1F C9 EB 5F 16 00 EB 1A 85 6F 13 1A 8C 67    2O..._.....o...g
004E40:  C9 5F 16 00 7B A5 6F 7A A4 67 C9 5E 23 56 EB 29    ._..{.oz.g.^#V.)
004E50:  E5 29 29 C1 09 C9 5F 16 00 7B B5 6F 7A B4 67 C9    .))..._..{.oz.g.
004E60:  5E 23 56 EB 29 0D C2 64 1D C9 5E 23 56 EB 7C B7    ^#V.)..d..^#V.|.
004E70:  1F 67 7D 1F 6F 0D C2 6E 1D C9 5F 16 00 7B 95 6F    .g}.o..n.._..{.o
004E80:  7A 9C 67 C9 4F 06 00 7B 91 6F 7A 98 67 C9 69 60    z.g.O..{.oz.g.i`
004E90:  4E 23 46 1A 91 6F 13 1A 98 67 C9 6F 26 00 1A 95    N#F..o...g.o&...
004EA0:  6F 13 1A 9C 67 C9 06 0C 48 0D C2 A9 1D 3D C2 A8    o...g...H....=..
004EB0:  1D C9 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004EC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004ED0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004EE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004EF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
004F00:  01 27 1E CD 18 0A 21 27 1E 36 00 21 33 1E 36 00    .'....!'.6.!3.6.
004F10:  01 27 1E C5 1E 10 01 06 1E CD 18 0A 3A 31 1E 07    .'..........:1..
004F20:  2F 21 61 1F B6 1F D2 45 1C 2A C4 1F 23 22 C4 1F    /!a....E.*..#"..
004F30:  3E 01 CD 7A 1D B5 C2 3F 1C 01 43 04 CD 39 08 CD    >..z...?..C..9..
004F40:  49 1C CD B2 1A C3 81 1B C9 CD 2E 08 21 C6 1F 36    I...........!..6
004F50:  01 3E 0B 21 C6 1F BE DA 87 1C 2A C6 1F 26 00 01    .>.!......*..&..
004F60:  27 1E 09 7E 32 C7 1F FE 20 CA 80 1C 3A C6 1F FE    '..~2... ...:...
004F70:  09 C2 79 1C 0E 2E CD 1C 08 2A C7 1F 4D CD 1C 08    ..y......*..M...
004F80:  21 C6 1F 34 C2 51 1C C9 3E 00 21 94 1F BE D2 9B    !..4.Q..>.!.....
004F90:  1C 3A 94 1F 3D 32 03 1E C3 A1 1C 3A FC 1D 32 03    .:..=2.....:..2.
004FA0:  1E C9 3A F6 1D 1F D2 AC 1C CD 5C 18 3E 00 21 94    ..:.......\.>.!.
004FB0:  1F BE D2 BF 1C 3A 94 1F 3D 32 4B 1E C3 C5 1C 3A    .....:..=2K....:
004FC0:  FC 1D 32 4B 1E C9 21 C0 1E 3A C1 1E BE CA D1 1C    ..2K..!..:......
004FD0:  C9 21 03 1E 3A 4B 1E BE C2 DE 1C CD 5C 18 C9 CD    .!..:K......\...
004FE0:  11 12 3A A8 1E FE 0D CA ED 1C CD 5C 18 C9 21 C9    ..:........\..!.
004FF0:  1F 70 2B 71 CD 88 1C CD DF 1C 01 06 1E C5 2A C8    .p+q..........*.
005000:  59 4D 54 42 53 5A 20 20 20 33 30 35 30 20 20 2F    YMTBSZ   3050  /
005010:  2A 20 4E 55 4D 4C 4F 43 53 2A 53 59 4D 41 56 47    * NUMLOCS*SYMAVG
005020:  20 2B 20 4E 55 4D 47 4C 42 53 2A 53 59 4D 4D 41     + NUMGLBS*SYMMA
005030:  58 20 2A 2F 0D 0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20    X */.. ../*..** 
005040:  53 79 73 74 65 6D 20 77 69 64 65 20 6E 61 6D 65    System wide name
005050:  20 73 69 7A 65 20 28 66 6F 72 20 73 79 6D 62 6F     size (for symbo
005060:  6C 73 29 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65    ls)..*/..#define
005070:  20 4E 41 4D 45 53 49 5A 45 20 39 0D 0A 23 64 65     NAMESIZE 9..#de
005080:  66 69 6E 65 20 4E 41 4D 45 4D 41 58 20 20 38 0D    fine NAMEMAX  8.
005090:  0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20 70 6F 73 73 69    . ../*..** possi
0050A0:  62 6C 65 20 65 6E 74 72 69 65 73 20 66 6F 72 20    ble entries for 
0050B0:  22 49 44 45 4E 54 22 0D 0A 2A 2F 0D 0A 23 64 65    "IDENT"..*/..#de
0050C0:  66 69 6E 65 20 4C 41 42 45 4C 20 20 20 20 30 0D    fine LABEL    0.
0050D0:  0A 23 64 65 66 69 6E 65 20 56 41 52 49 41 42 4C    .#define VARIABL
0050E0:  45 20 31 0D 0A 23 64 65 66 69 6E 65 20 41 52 52    E 1..#define ARR
0050F0:  41 59 20 20 20 20 32 0D 0A 23 64 65 66 69 6E 65    AY    2..#define
005100:  20 50 4F 49 4E 54 45 52 20 20 33 0D 0A 23 64 65     POINTER  3..#de
005110:  66 69 6E 65 20 46 55 4E 43 54 49 4F 4E 20 34 0D    fine FUNCTION 4.
005120:  0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20 70 6F 73 73 69    . ../*..** possi
005130:  62 6C 65 20 65 6E 74 72 69 65 73 20 66 6F 72 20    ble entries for 
005140:  22 54 59 50 45 22 0D 0A 2A 2A 20 20 20 20 6C 6F    "TYPE"..**    lo
005150:  77 20 6F 72 64 65 72 20 32 20 62 69 74 73 20 6D    w order 2 bits m
005160:  61 6B 65 20 74 79 70 65 20 75 6E 69 71 75 65 20    ake type unique 
005170:  77 69 74 68 69 6E 20 6C 65 6E 67 74 68 0D 0A 2A    within length..*
005180:  2A 20 20 20 20 68 69 67 68 20 6F 72 64 65 72 20    *    high order 
005190:  62 69 74 73 20 67 69 76 65 20 6C 65 6E 67 74 68    bits give length
0051A0:  20 6F 66 20 6F 62 6A 65 63 74 0D 0A 2A 2F 0D 0A     of object..*/..
0051B0:  2F 2A 20 20 20 20 20 20 4C 41 42 45 4C 20 20 20    /*      LABEL   
0051C0:  30 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 43 43    0 */..#define CC
0051D0:  48 41 52 20 20 20 28 31 3C 3C 32 29 0D 0A 23 64    HAR   (1<<2)..#d
0051E0:  65 66 69 6E 65 20 43 49 4E 54 20 20 20 20 28 42    efine CINT    (B
0051F0:  50 57 3C 3C 32 29 0D 0A 20 0D 0A 2F 2A 0D 0A 2A    PW<<2).. ../*..*
005200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0052A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0052B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0052C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0052D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0052E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0052F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0053A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0053B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0053C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0053D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0053E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0053F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005400:  2A 20 70 6F 73 73 69 62 6C 65 20 65 6E 74 72 69    * possible entri
005410:  65 73 20 66 6F 72 20 22 43 4C 41 53 53 22 0D 0A    es for "CLASS"..
005420:  2A 2F 0D 0A 2F 2A 20 20 20 20 20 20 4C 41 42 45    */../*      LABE
005430:  4C 20 20 20 20 20 30 20 2A 2F 0D 0A 23 64 65 66    L     0 */..#def
005440:  69 6E 65 20 53 54 41 54 49 43 20 20 20 20 31 0D    ine STATIC    1.
005450:  0A 23 64 65 66 69 6E 65 20 41 55 54 4F 4D 41 54    .#define AUTOMAT
005460:  49 43 20 32 0D 0A 23 64 65 66 69 6E 65 20 45 58    IC 2..#define EX
005470:  54 45 52 4E 41 4C 20 20 33 0D 0A 23 64 65 66 69    TERNAL  3..#defi
005480:  6E 65 20 41 55 54 4F 45 58 54 20 20 20 34 0D 0A    ne AUTOEXT   4..
005490:  0D 0A 2F 2A 0D 0A 2A 2A 20 22 73 77 69 74 63 68    ../*..** "switch
0054A0:  22 20 74 61 62 6C 65 0D 0A 2A 2F 0D 0A 23 64 65    " table..*/..#de
0054B0:  66 69 6E 65 20 53 57 53 49 5A 20 20 20 28 32 2A    fine SWSIZ   (2*
0054C0:  42 50 57 29 0D 0A 23 64 65 66 69 6E 65 20 53 57    BPW)..#define SW
0054D0:  54 41 42 53 5A 20 28 36 30 2A 53 57 53 49 5A 29    TABSZ (60*SWSIZ)
0054E0:  0D 0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20 22 77 68 69    .. ../*..** "whi
0054F0:  6C 65 22 20 73 74 61 74 65 6D 65 6E 74 20 71 75    le" statement qu
005500:  65 75 65 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65    eue..*/..#define
005510:  20 57 51 54 41 42 53 5A 20 20 33 30 0D 0A 23 64     WQTABSZ  30..#d
005520:  65 66 69 6E 65 20 57 51 53 49 5A 20 20 20 20 20    efine WQSIZ     
005530:  33 0D 0A 23 64 65 66 69 6E 65 20 57 51 4D 41 58    3..#define WQMAX
005540:  20 20 20 28 77 71 2B 57 51 54 41 42 53 5A 2D 57       (wq+WQTABSZ-W
005550:  51 53 49 5A 29 0D 0A 20 0D 0A 2F 2A 0D 0A 2A 2A    QSIZ).. ../*..**
005560:  20 65 6E 74 72 79 20 6F 66 66 73 65 74 73 20 69     entry offsets i
005570:  6E 20 77 68 69 6C 65 20 71 75 65 75 65 0D 0A 2A    n while queue..*
005580:  2F 0D 0A 23 64 65 66 69 6E 65 20 57 51 53 50 20    /..#define WQSP 
005590:  20 20 20 30 0D 0A 23 64 65 66 69 6E 65 20 57 51       0..#define WQ
0055A0:  4C 4F 4F 50 20 20 31 0D 0A 23 64 65 66 69 6E 65    LOOP  1..#define
0055B0:  20 57 51 45 58 49 54 20 20 32 0D 0A 20 0D 0A 2F     WQEXIT  2.. ../
0055C0:  2A 0D 0A 2A 2A 20 6C 69 74 65 72 61 6C 20 70 6F    *..** literal po
0055D0:  6F 6C 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 20    ol..*/..#define 
0055E0:  4C 49 54 41 42 53 5A 20 38 30 30 0D 0A 23 64 65    LITABSZ 800..#de
0055F0:  66 69 6E 65 20 4C 49 54 4D 41 58 20 20 28 4C 49    fine LITMAX  (LI
005600:  3E 3E 3E 20 53 54 44 49 4F 2E 48 20 32 39 36 0D    >>> STDIO.H 296.
005610:  0A 2F 2A 0D 0A 2A 2A 20 53 54 44 49 4F 2E 48 20    ./*..** STDIO.H 
005620:  2D 2D 20 53 74 61 6E 64 61 72 64 20 53 6D 61 6C    -- Standard Smal
005630:  6C 2D 43 20 44 65 66 69 6E 69 74 69 6F 6E 73 0D    l-C Definitions.
005640:  0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 73 74 64    .*/..#define std
005650:  69 6E 20 20 20 20 30 0D 0A 23 64 65 66 69 6E 65    in    0..#define
005660:  20 73 74 64 6F 75 74 20 20 20 31 0D 0A 23 64 65     stdout   1..#de
005670:  66 69 6E 65 20 73 74 64 65 72 72 20 20 20 32 0D    fine stderr   2.
005680:  0A 23 64 65 66 69 6E 65 20 45 52 52 20 20 20 28    .#define ERR   (
005690:  2D 32 29 0D 0A 23 64 65 66 69 6E 65 20 45 4F 46    -2)..#define EOF
0056A0:  20 20 20 28 2D 31 29 0D 0A 23 64 65 66 69 6E 65       (-1)..#define
0056B0:  20 59 45 53 20 20 20 20 20 20 31 0D 0A 23 64 65     YES      1..#de
0056C0:  66 69 6E 65 20 4E 4F 20 20 20 20 20 20 20 30 0D    fine NO       0.
0056D0:  0A 23 64 65 66 69 6E 65 20 4E 55 4C 4C 20 20 20    .#define NULL   
0056E0:  20 20 30 0D 0A 23 64 65 66 69 6E 65 20 43 52 20      0..#define CR 
0056F0:  20 20 20 20 20 31 33 0D 0A 23 64 65 66 69 6E 65         13..#define
005700:  20 4C 46 20 20 20 20 20 20 31 30 0D 0A 23 64 65     LF      10..#de
005710:  66 69 6E 65 20 42 45 4C 4C 20 20 20 20 20 37 0D    fine BELL     7.
005720:  0A 23 64 65 66 69 6E 65 20 53 50 41 43 45 20 20    .#define SPACE  
005730:  27 20 27 0D 0A 23 64 65 66 69 6E 65 20 4E 45 57    ' '..#define NEW
005740:  4C 49 4E 45 20 4C 46 0D 0A 3E 3E 3E 20 4E 4F 54    LINE LF..>>> NOT
005750:  49 43 45 2E 48 20 39 39 0D 0A 23 64 65 66 69 6E    ICE.H 99..#defin
005760:  65 20 56 45 52 53 49 4F 4E 20 22 56 65 72 73 69    e VERSION "Versi
005770:  6F 6E 20 32 2E 31 20 28 52 65 76 2E 20 36 37 29    on 2.1 (Rev. 67)
005780:  5C 6E 22 0D 0A 23 64 65 66 69 6E 65 20 43 52 49    \n"..#define CRI
005790:  47 48 54 31 20 22 43 6F 70 79 72 69 67 68 74 20    GHT1 "Copyright 
0057A0:  31 39 38 32 2C 20 31 39 38 33 20 4A 2E 20 45 2E    1982, 1983 J. E.
0057B0:  20 48 65 6E 64 72 69 78 5C 6E 5C 6E 22 0D 0A 3E     Hendrix\n\n"..>
0057C0:  3E 3E 20 43 43 2E 44 45 46 20 32 37 37 30 0D 0A    >> CC.DEF 2770..
0057D0:  2F 2A 0D 0A 2A 2A 20 53 6D 61 6C 6C 2D 43 20 43    /*..** Small-C C
0057E0:  6F 6D 70 69 6C 65 72 20 53 79 6D 62 6F 6C 20 44    ompiler Symbol D
0057F0:  65 66 69 6E 69 74 69 6F 6E 73 0D 0A 2A 2F 0D 0A    efinitions..*/..
005800:  54 41 42 53 5A 2D 31 29 0D 0A 20 0D 0A 2F 2A 0D    TABSZ-1).. ../*.
005810:  0A 2A 2A 20 69 6E 70 75 74 20 6C 69 6E 65 0D 0A    .** input line..
005820:  2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4C 49 4E 45    */..#define LINE
005830:  4D 41 58 20 20 31 32 37 0D 0A 23 64 65 66 69 6E    MAX  127..#defin
005840:  65 20 4C 49 4E 45 53 49 5A 45 20 31 32 38 0D 0A    e LINESIZE 128..
005850:  0D 0A 2F 2A 0D 0A 2A 2A 20 6F 75 74 70 75 74 20    ../*..** output 
005860:  73 74 61 67 69 6E 67 20 62 75 66 66 65 72 20 73    staging buffer s
005870:  69 7A 65 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65    ize..*/..#define
005880:  20 53 54 41 47 45 53 49 5A 45 20 20 20 38 30 30     STAGESIZE   800
005890:  0D 0A 23 64 65 66 69 6E 65 20 53 54 41 47 45 4C    ..#define STAGEL
0058A0:  49 4D 49 54 20 20 28 53 54 41 47 45 53 49 5A 45    IMIT  (STAGESIZE
0058B0:  2D 31 29 0D 0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20 6D    -1).. ../*..** m
0058C0:  61 63 72 6F 20 28 64 65 66 69 6E 65 29 20 70 6F    acro (define) po
0058D0:  6F 6C 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 20    ol..*/..#define 
0058E0:  4D 41 43 4E 42 52 20 20 20 31 33 30 0D 0A 23 64    MACNBR   130..#d
0058F0:  65 66 69 6E 65 20 4D 41 43 4E 53 49 5A 45 20 28    efine MACNSIZE (
005900:  4D 41 43 4E 42 52 2A 28 4E 41 4D 45 53 49 5A 45    MACNBR*(NAMESIZE
005910:  2B 32 29 29 0D 0A 23 64 65 66 69 6E 65 20 4D 41    +2))..#define MA
005920:  43 4E 45 4E 44 20 20 28 6D 61 63 6E 2B 4D 41 43    CNEND  (macn+MAC
005930:  4E 53 49 5A 45 29 0D 0A 23 64 65 66 69 6E 65 20    NSIZE)..#define 
005940:  4D 41 43 51 53 49 5A 45 20 28 4D 41 43 4E 42 52    MACQSIZE (MACNBR
005950:  2A 37 29 0D 0A 23 64 65 66 69 6E 65 20 4D 41 43    *7)..#define MAC
005960:  4D 41 58 20 20 20 28 4D 41 43 51 53 49 5A 45 2D    MAX   (MACQSIZE-
005970:  31 29 0D 0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20 73 74    1).. ../*..** st
005980:  61 74 65 6D 65 6E 74 20 74 79 70 65 73 0D 0A 2A    atement types..*
005990:  2F 0D 0A 23 64 65 66 69 6E 65 20 53 54 49 46 20    /..#define STIF 
0059A0:  20 20 20 20 20 31 0D 0A 23 64 65 66 69 6E 65 20         1..#define 
0059B0:  53 54 57 48 49 4C 45 20 20 20 32 0D 0A 23 64 65    STWHILE   2..#de
0059C0:  66 69 6E 65 20 53 54 52 45 54 55 52 4E 20 20 33    fine STRETURN  3
0059D0:  0D 0A 23 64 65 66 69 6E 65 20 53 54 42 52 45 41    ..#define STBREA
0059E0:  4B 20 20 20 34 0D 0A 23 64 65 66 69 6E 65 20 53    K   4..#define S
0059F0:  54 43 4F 4E 54 20 20 20 20 35 0D 0A 23 64 65 66    TCONT    5..#def
005A00:  0D 0A 2F 2A 0D 0A 2A 2A 20 63 6F 6D 70 69 6C 65    ../*..** compile
005A10:  20 6F 70 74 69 6F 6E 73 0D 0A 2A 2F 0D 0A 23 64     options..*/..#d
005A20:  65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 09 2F    efine NOCCARGC./
005A30:  2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F    * no argument co
005A40:  75 6E 74 73 20 2A 2F 0D 0A 23 64 65 66 69 6E 65    unts */..#define
005A50:  20 53 45 50 41 52 41 54 45 09 2F 2A 20 63 6F 6D     SEPARATE./* com
005A60:  70 69 6C 65 20 73 65 70 61 72 61 74 65 6C 79 20    pile separately 
005A70:  2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4F 50 54 49    */..#define OPTI
005A80:  4D 49 5A 45 09 2F 2A 20 63 6F 6D 70 69 6C 65 20    MIZE./* compile 
005A90:  6F 75 74 70 75 74 20 6F 70 74 69 6D 69 7A 65 72    output optimizer
005AA0:  20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 44 59 4E     */..#define DYN
005AB0:  41 4D 49 43 20 09 2F 2A 20 61 6C 6C 6F 63 61 74    AMIC ./* allocat
005AC0:  65 20 6D 65 6D 6F 72 79 20 64 79 6E 61 6D 69 63    e memory dynamic
005AD0:  61 6C 6C 79 20 2A 2F 0D 0A 23 64 65 66 69 6E 65    ally */..#define
005AE0:  20 43 4F 4C 09 09 2F 2A 20 74 65 72 6D 69 6E 61     COL../* termina
005AF0:  74 65 20 6C 61 62 65 6C 73 20 77 69 74 68 20 61    te labels with a
005B00:  20 63 6F 6C 6F 6E 20 2A 2F 0D 0A 2F 2A 20 23 64     colon */../* #d
005B10:  65 66 69 6E 65 20 55 50 50 45 52 09 2F 2A 20 66    efine UPPER./* f
005B20:  6F 72 63 65 20 73 79 6D 62 6F 6C 73 20 74 6F 20    orce symbols to 
005B30:  75 70 70 65 72 20 63 61 73 65 20 2A 2F 0D 0A 23    upper case */..#
005B40:  64 65 66 69 6E 65 20 4C 49 4E 4B 09 09 2F 2A 20    define LINK../* 
005B50:  77 69 6C 6C 20 75 73 65 20 77 69 74 68 20 6C 69    will use with li
005B60:  6E 6B 69 6E 67 20 6C 6F 61 64 65 72 20 2A 2F 0D    nking loader */.
005B70:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6D 61 63 68 69 6E    .../*..** machin
005B80:  65 20 64 65 70 65 6E 64 65 6E 74 20 70 61 72 61    e dependent para
005B90:  6D 65 74 65 72 73 0D 0A 2A 2F 0D 0A 23 64 65 66    meters..*/..#def
005BA0:  69 6E 65 20 42 50 57 20 20 20 20 20 32 09 2F 2A    ine BPW     2./*
005BB0:  20 62 79 74 65 73 20 70 65 72 20 77 6F 72 64 20     bytes per word 
005BC0:  2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4C 42 50 57    */..#define LBPW
005BD0:  20 20 20 20 31 09 2F 2A 20 6C 6F 67 32 28 42 50        1./* log2(BP
005BE0:  57 29 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 53    W) */..#define S
005BF0:  42 50 43 20 20 20 20 31 09 2F 2A 20 73 74 61 63    BPC    1./* stac
005C00:  69 6E 65 20 53 54 41 53 4D 20 20 20 20 20 36 0D    ine STASM     6.
005C10:  0A 23 64 65 66 69 6E 65 20 53 54 45 58 50 52 20    .#define STEXPR 
005C20:  20 20 20 37 0D 0A 23 64 65 66 69 6E 65 20 53 54       7..#define ST
005C30:  44 4F 20 20 20 20 20 20 38 09 2F 2A 20 63 6F 6D    DO      8./* com
005C40:  70 69 6C 65 20 22 64 6F 22 20 6C 6F 67 69 63 20    pile "do" logic 
005C50:  2A 2F 0D 0A 23 64 65 66 69 6E 65 20 53 54 46 4F    */..#define STFO
005C60:  52 20 20 20 20 20 39 09 2F 2A 20 63 6F 6D 70 69    R     9./* compi
005C70:  6C 65 20 22 66 6F 72 22 20 6C 6F 67 69 63 20 2A    le "for" logic *
005C80:  2F 0D 0A 23 64 65 66 69 6E 65 20 53 54 53 57 49    /..#define STSWI
005C90:  54 43 48 20 31 30 09 2F 2A 20 63 6F 6D 70 69 6C    TCH 10./* compil
005CA0:  65 20 22 73 77 69 74 63 68 2F 63 61 73 65 2F 64    e "switch/case/d
005CB0:  65 66 61 75 6C 74 22 20 6C 6F 67 69 63 20 2A 2F    efault" logic */
005CC0:  0D 0A 23 64 65 66 69 6E 65 20 53 54 43 41 53 45    ..#define STCASE
005CD0:  20 20 20 31 31 0D 0A 23 64 65 66 69 6E 65 20 53       11..#define S
005CE0:  54 44 45 46 20 20 20 20 31 32 0D 0A 23 64 65 66    TDEF    12..#def
005CF0:  69 6E 65 20 53 54 47 4F 54 4F 20 20 20 31 33 09    ine STGOTO   13.
005D00:  2F 2A 20 63 6F 6D 70 69 6C 65 20 22 67 6F 74 6F    /* compile "goto
005D10:  22 20 6C 6F 67 69 63 20 2A 2F 0D 0A 23 64 65 66    " logic */..#def
005D20:  69 6E 65 20 53 54 4C 41 42 45 4C 20 20 31 34 0D    ine STLABEL  14.
005D30:  0A 3E 3E 3E 20 43 43 31 2E 43 20 33 32 39 39 0D    .>>> CC1.C 3299.
005D40:  0A 2F 2A 0D 0A 2A 2A 20 53 6D 61 6C 6C 2D 43 20    ./*..** Small-C 
005D50:  43 6F 6D 70 69 6C 65 72 20 50 61 72 74 20 31 0D    Compiler Part 1.
005D60:  0A 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 3C 73    .*/..#include <s
005D70:  74 64 69 6F 2E 68 3E 0D 0A 23 69 6E 63 6C 75 64    tdio.h>..#includ
005D80:  65 20 22 6E 6F 74 69 63 65 2E 68 22 0D 0A 23 69    e "notice.h"..#i
005D90:  6E 63 6C 75 64 65 20 22 63 63 2E 64 65 66 22 0D    nclude "cc.def".
005DA0:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6D 69 73 63 65 6C    .../*..** miscel
005DB0:  6C 61 6E 65 6F 75 73 20 73 74 6F 72 61 67 65 0D    laneous storage.
005DC0:  0A 2A 2F 0D 0A 63 68 61 72 0D 0A 23 69 66 64 65    .*/..char..#ifde
005DD0:  66 20 4F 50 54 49 4D 49 5A 45 0D 0A 20 20 6F 70    f OPTIMIZE..  op
005DE0:  74 69 6D 69 7A 65 2C 09 2F 2A 20 6F 70 74 69 6D    timize,./* optim
005DF0:  69 7A 65 20 6F 75 74 70 75 74 20 6F 66 20 73 74    ize output of st
005E00:  6B 20 62 79 74 65 73 20 70 65 72 20 63 68 61 72    k bytes per char
005E10:  61 63 74 65 72 20 2A 2F 0D 0A 23 64 65 66 69 6E    acter */..#defin
005E20:  65 20 45 52 52 43 4F 44 45 20 37 09 2F 2A 20 6F    e ERRCODE 7./* o
005E30:  70 20 73 79 73 20 72 65 74 75 72 6E 20 63 6F 64    p sys return cod
005E40:  65 20 2A 2F 0D 0A 20 0D 0A 2F 2A 0D 0A 2A 2A 20    e */.. ../*..** 
005E50:  73 79 6D 62 6F 6C 20 74 61 62 6C 65 20 66 6F 72    symbol table for
005E60:  6D 61 74 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65    mat..*/..#define
005E70:  20 49 44 45 4E 54 20 20 20 20 30 0D 0A 23 64 65     IDENT    0..#de
005E80:  66 69 6E 65 20 54 59 50 45 20 20 20 20 20 31 0D    fine TYPE     1.
005E90:  0A 23 64 65 66 69 6E 65 20 43 4C 41 53 53 20 20    .#define CLASS  
005EA0:  20 20 32 0D 0A 23 64 65 66 69 6E 65 20 4F 46 46      2..#define OFF
005EB0:  53 45 54 20 20 20 33 0D 0A 23 64 65 66 69 6E 65    SET   3..#define
005EC0:  20 4E 41 4D 45 20 20 20 20 20 35 0D 0A 23 64 65     NAME     5..#de
005ED0:  66 69 6E 65 20 4F 46 46 53 49 5A 45 20 28 4E 41    fine OFFSIZE (NA
005EE0:  4D 45 2D 4F 46 46 53 45 54 29 0D 0A 23 64 65 66    ME-OFFSET)..#def
005EF0:  69 6E 65 20 53 59 4D 41 56 47 20 20 31 30 0D 0A    ine SYMAVG  10..
005F00:  23 64 65 66 69 6E 65 20 53 59 4D 4D 41 58 20 20    #define SYMMAX  
005F10:  31 34 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 73 79 6D    14..../*..** sym
005F20:  62 6F 6C 20 74 61 62 6C 65 20 70 61 72 61 6D 65    bol table parame
005F30:  74 65 72 73 0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E    ters..*/..#defin
005F40:  65 20 4E 55 4D 4C 4F 43 53 20 20 20 32 35 0D 0A    e NUMLOCS   25..
005F50:  23 64 65 66 69 6E 65 20 53 54 41 52 54 4C 4F 43    #define STARTLOC
005F60:  20 20 73 79 6D 74 61 62 0D 0A 23 64 65 66 69 6E      symtab..#defin
005F70:  65 20 45 4E 44 4C 4F 43 20 20 20 28 73 79 6D 74    e ENDLOC   (symt
005F80:  61 62 2B 28 4E 55 4D 4C 4F 43 53 2A 53 59 4D 41    ab+(NUMLOCS*SYMA
005F90:  56 47 29 29 0D 0A 23 64 65 66 69 6E 65 20 4E 55    VG))..#define NU
005FA0:  4D 47 4C 42 53 20 20 20 32 30 30 0D 0A 23 64 65    MGLBS   200..#de
005FB0:  66 69 6E 65 20 53 54 41 52 54 47 4C 42 20 20 45    fine STARTGLB  E
005FC0:  4E 44 4C 4F 43 0D 0A 23 64 65 66 69 6E 65 20 45    NDLOC..#define E
005FD0:  4E 44 47 4C 42 20 20 20 28 45 4E 44 4C 4F 43 2B    NDGLB   (ENDLOC+
005FE0:  28 28 4E 55 4D 47 4C 42 53 2D 31 29 2A 53 59 4D    ((NUMGLBS-1)*SYM
005FF0:  4D 41 58 29 29 0D 0A 23 64 65 66 69 6E 65 20 53    MAX))..#define S
006000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
006010:  05 00 01 00 02 09 52 E5 05 00 41 02 00 00 00 02    ......R...A.....
006020:  05 00 46 02 00 00 00 02 05 00 42 02 00 00 00 02    ..F.......B.....
006030:  05 00 47 02 00 00 00 02 05 00 43 02 00 00 00 02    ..G.......C.....
006040:  05 00 48 02 00 00 00 02 05 00 44 02 00 00 00 02    ..H.......D.....
006050:  05 00 49 02 00 00 00 02 05 00 45 02 00 00 00 02    ..I.......E.....
006060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006100:  61 67 69 6E 67 20 62 75 66 66 65 72 20 2A 2F 0D    aging buffer */.
006110:  0A 23 65 6E 64 69 66 0D 0A 20 20 61 6C 61 72 6D    .#endif..  alarm
006120:  2C 09 2F 2A 20 61 75 64 69 62 6C 65 20 61 6C 61    ,./* audible ala
006130:  72 6D 20 6F 6E 20 65 72 72 6F 72 73 3F 20 2A 2F    rm on errors? */
006140:  0D 0A 20 20 6D 6F 6E 69 74 6F 72 2C 09 2F 2A 20    ..  monitor,./* 
006150:  6D 6F 6E 69 74 6F 72 20 66 75 6E 63 74 69 6F 6E    monitor function
006160:  20 68 65 61 64 65 72 73 3F 20 2A 2F 0D 0A 20 20     headers? */..  
006170:  70 61 75 73 65 2C 09 2F 2A 20 70 61 75 73 65 20    pause,./* pause 
006180:  66 6F 72 20 6F 70 65 72 61 74 6F 72 20 6F 6E 20    for operator on 
006190:  65 72 72 6F 72 73 3F 20 2A 2F 0D 0A 23 69 66 64    errors? */..#ifd
0061A0:  65 66 20 44 59 4E 41 4D 49 43 0D 0A 20 2A 73 74    ef DYNAMIC.. *st
0061B0:  61 67 65 2C 09 2F 2A 20 6F 75 74 70 75 74 20 73    age,./* output s
0061C0:  74 61 67 69 6E 67 20 62 75 66 66 65 72 20 2A 2F    taging buffer */
0061D0:  0D 0A 20 2A 73 79 6D 74 61 62 2C 09 2F 2A 20 73    .. *symtab,./* s
0061E0:  79 6D 62 6F 6C 20 74 61 62 6C 65 20 2A 2F 0D 0A    ymbol table */..
0061F0:  20 2A 6C 69 74 71 2C 09 09 2F 2A 20 6C 69 74 65     *litq,../* lite
006200:  72 61 6C 20 70 6F 6F 6C 20 2A 2F 0D 0A 20 2A 6D    ral pool */.. *m
006210:  61 63 6E 2C 09 09 2F 2A 20 6D 61 63 72 6F 20 6E    acn,../* macro n
006220:  61 6D 65 20 62 75 66 66 65 72 20 2A 2F 0D 0A 20    ame buffer */.. 
006230:  2A 6D 61 63 71 2C 09 09 2F 2A 20 6D 61 63 72 6F    *macq,../* macro
006240:  20 73 74 72 69 6E 67 20 62 75 66 66 65 72 20 2A     string buffer *
006250:  2F 0D 0A 20 2A 70 6C 69 6E 65 2C 09 2F 2A 20 70    /.. *pline,./* p
006260:  61 72 73 69 6E 67 20 62 75 66 66 65 72 20 2A 2F    arsing buffer */
006270:  0D 0A 20 2A 6D 6C 69 6E 65 2C 09 2F 2A 20 6D 61    .. *mline,./* ma
006280:  63 72 6F 20 62 75 66 66 65 72 20 2A 2F 0D 0A 23    cro buffer */..#
006290:  65 6C 73 65 0D 0A 20 20 73 74 61 67 65 5B 53 54    else..  stage[ST
0062A0:  41 47 45 53 49 5A 45 5D 2C 0D 0A 20 20 73 79 6D    AGESIZE],..  sym
0062B0:  74 61 62 5B 53 59 4D 54 42 53 5A 5D 2C 0D 0A 20    tab[SYMTBSZ],.. 
0062C0:  20 6C 69 74 71 5B 4C 49 54 41 42 53 5A 5D 2C 0D     litq[LITABSZ],.
0062D0:  0A 20 20 6D 61 63 6E 5B 4D 41 43 4E 53 49 5A 45    .  macn[MACNSIZE
0062E0:  5D 2C 0D 0A 20 20 6D 61 63 71 5B 4D 41 43 51 53    ],..  macq[MACQS
0062F0:  49 5A 45 5D 2C 0D 0A 20 20 70 6C 69 6E 65 5B 4C    IZE],..  pline[L
006300:  2C 09 2F 2A 20 66 64 20 23 20 66 6F 72 20 6F 75    ,./* fd # for ou
006310:  74 70 75 74 20 66 69 6C 65 20 2A 2F 0D 0A 20 20    tput file */..  
006320:  66 69 6C 65 73 2C 09 2F 2A 20 6E 6F 6E 2D 7A 65    files,./* non-ze
006330:  72 6F 20 69 66 20 66 69 6C 65 20 6C 69 73 74 20    ro if file list 
006340:  73 70 65 63 69 66 69 65 64 20 6F 6E 20 63 6D 64    specified on cmd
006350:  20 6C 69 6E 65 20 2A 2F 0D 0A 20 20 66 69 6C 65     line */..  file
006360:  61 72 67 2C 09 2F 2A 20 63 75 72 20 66 69 6C 65    arg,./* cur file
006370:  20 61 72 67 20 69 6E 64 65 78 20 2A 2F 0D 0A 20     arg index */.. 
006380:  20 67 6C 62 66 6C 61 67 2C 09 2F 2A 20 6E 6F 6E     glbflag,./* non
006390:  2D 7A 65 72 6F 20 69 66 20 69 6E 74 65 72 6E 61    -zero if interna
0063A0:  6C 20 67 6C 6F 62 61 6C 73 20 2A 2F 0D 0A 20 20    l globals */..  
0063B0:  63 74 65 78 74 2C 09 2F 2A 20 6E 6F 6E 2D 7A 65    ctext,./* non-ze
0063C0:  72 6F 20 74 6F 20 69 6E 74 65 72 6D 69 78 20 63    ro to intermix c
0063D0:  2D 73 6F 75 72 63 65 20 2A 2F 0D 0A 20 20 63 63    -source */..  cc
0063E0:  6F 64 65 2C 09 2F 2A 20 6E 6F 6E 2D 7A 65 72 6F    ode,./* non-zero
0063F0:  20 77 68 69 6C 65 20 70 61 72 73 69 6E 67 20 63     while parsing c
006400:  2D 63 6F 64 65 20 2A 2F 0D 0A 09 09 2F 2A 20 7A    -code */..../* z
006410:  65 72 6F 20 77 68 65 6E 20 70 61 73 73 69 6E 67    ero when passing
006420:  20 61 73 73 65 6D 62 6C 79 20 63 6F 64 65 20 2A     assembly code *
006430:  2F 0D 0A 20 20 6C 69 73 74 66 70 2C 09 2F 2A 20    /..  listfp,./* 
006440:  66 69 6C 65 20 70 6F 69 6E 74 65 72 20 74 6F 20    file pointer to 
006450:  6C 69 73 74 20 64 65 76 69 63 65 20 2A 2F 0D 0A    list device */..
006460:  20 20 6C 61 73 74 73 74 2C 09 2F 2A 20 6C 61 73      lastst,./* las
006470:  74 20 65 78 65 63 75 74 65 64 20 73 74 61 74 65    t executed state
006480:  6D 65 6E 74 20 74 79 70 65 20 2A 2F 0D 0A 20 2A    ment type */.. *
006490:  69 70 74 72 3B 09 09 2F 2A 20 77 6F 72 6B 20 70    iptr;../* work p
0064A0:  74 72 20 74 6F 20 61 6E 79 20 69 6E 74 20 62 75    tr to any int bu
0064B0:  66 66 65 72 20 2A 2F 0D 0A 0D 0A 23 69 6E 63 6C    ffer */....#incl
0064C0:  75 64 65 20 22 63 63 31 31 2E 63 22 0D 0A 23 69    ude "cc11.c"..#i
0064D0:  6E 63 6C 75 64 65 20 22 63 63 31 32 2E 63 22 0D    nclude "cc12.c".
0064E0:  0A 23 69 6E 63 6C 75 64 65 20 22 63 63 31 33 2E    .#include "cc13.
0064F0:  63 22 0D 0A 0D 0A 23 69 66 6E 64 65 66 20 53 45    c"....#ifndef SE
006500:  49 4E 45 53 49 5A 45 5D 2C 0D 0A 20 20 6D 6C 69    INESIZE],..  mli
006510:  6E 65 5B 4C 49 4E 45 53 49 5A 45 5D 2C 0D 0A 20    ne[LINESIZE],.. 
006520:  20 73 77 71 5B 53 57 54 41 42 53 5A 5D 2C 0D 0A     swq[SWTABSZ],..
006530:  23 65 6E 64 69 66 0D 0A 20 2A 6C 69 6E 65 2C 09    #endif.. *line,.
006540:  09 2F 2A 20 70 6F 69 6E 74 73 20 74 6F 20 70 6C    ./* points to pl
006550:  69 6E 65 20 6F 72 20 6D 6C 69 6E 65 20 2A 2F 0D    ine or mline */.
006560:  0A 20 2A 6C 70 74 72 2C 09 09 2F 2A 20 70 74 72    . *lptr,../* ptr
006570:  20 74 6F 20 65 69 74 68 65 72 20 2A 2F 0D 0A 20     to either */.. 
006580:  2A 67 6C 62 70 74 72 2C 09 2F 2A 20 70 74 72 73    *glbptr,./* ptrs
006590:  20 74 6F 20 6E 65 78 74 20 65 6E 74 72 69 65 73     to next entries
0065A0:  20 2A 2F 0D 0A 20 2A 6C 6F 63 70 74 72 2C 09 2F     */.. *locptr,./
0065B0:  2A 20 70 74 72 20 74 6F 20 6E 65 78 74 20 6C 6F    * ptr to next lo
0065C0:  63 61 6C 20 73 79 6D 62 6F 6C 20 2A 2F 0D 0A 20    cal symbol */.. 
0065D0:  2A 73 74 61 67 65 6E 65 78 74 2C 09 2F 2A 20 6E    *stagenext,./* n
0065E0:  65 78 74 20 61 64 64 72 20 69 6E 20 73 74 61 67    ext addr in stag
0065F0:  65 20 2A 2F 0D 0A 20 2A 73 74 61 67 65 6C 61 73    e */.. *stagelas
006600:  74 2C 09 2F 2A 20 6C 61 73 74 20 61 64 64 72 20    t,./* last addr 
006610:  69 6E 20 73 74 61 67 65 20 2A 2F 0D 0A 20 20 71    in stage */..  q
006620:  75 6F 74 65 5B 32 5D 2C 09 2F 2A 20 6C 69 74 65    uote[2],./* lite
006630:  72 61 6C 20 73 74 72 69 6E 67 20 66 6F 72 20 27    ral string for '
006640:  22 27 20 2A 2F 0D 0A 20 2A 63 70 74 72 2C 09 09    "' */.. *cptr,..
006650:  2F 2A 20 77 6F 72 6B 20 70 74 72 73 20 74 6F 20    /* work ptrs to 
006660:  61 6E 79 20 63 68 61 72 20 62 75 66 66 65 72 20    any char buffer 
006670:  2A 2F 0D 0A 20 2A 63 70 74 72 32 2C 0D 0A 20 2A    */.. *cptr2,.. *
006680:  63 70 74 72 33 2C 0D 0A 20 20 6D 73 6E 61 6D 65    cptr3,..  msname
006690:  5B 4E 41 4D 45 53 49 5A 45 5D 2C 09 2F 2A 20 6D    [NAMESIZE],./* m
0066A0:  61 63 72 6F 20 73 79 6D 62 6F 6C 20 6E 61 6D 65    acro symbol name
0066B0:  20 61 72 72 61 79 20 2A 2F 0D 0A 20 20 73 73 6E     array */..  ssn
0066C0:  61 6D 65 5B 4E 41 4D 45 53 49 5A 45 5D 3B 09 2F    ame[NAMESIZE];./
0066D0:  2A 20 73 74 61 74 69 63 20 73 79 6D 62 6F 6C 20    * static symbol 
0066E0:  6E 61 6D 65 20 61 72 72 61 79 20 2A 2F 0D 0A 69    name array */..i
0066F0:  6E 74 0D 0A 23 69 66 64 65 66 20 53 54 47 4F 54    nt..#ifdef STGOT
006700:  50 41 52 41 54 45 0D 0A 23 69 6E 63 6C 75 64 65    PARATE..#include
006710:  20 22 63 63 32 31 2E 63 22 0D 0A 23 69 6E 63 6C     "cc21.c"..#incl
006720:  75 64 65 20 22 63 63 32 32 2E 63 22 0D 0A 23 69    ude "cc22.c"..#i
006730:  6E 63 6C 75 64 65 20 22 63 63 33 31 2E 63 22 0D    nclude "cc31.c".
006740:  0A 23 69 6E 63 6C 75 64 65 20 22 63 63 33 32 2E    .#include "cc32.
006750:  63 22 0D 0A 23 69 6E 63 6C 75 64 65 20 22 63 63    c"..#include "cc
006760:  33 33 2E 63 22 0D 0A 23 69 6E 63 6C 75 64 65 20    33.c"..#include 
006770:  22 63 63 34 31 2E 63 22 0D 0A 23 69 6E 63 6C 75    "cc41.c"..#inclu
006780:  64 65 20 22 63 63 34 32 2E 63 22 0D 0A 23 65 6E    de "cc42.c"..#en
006790:  64 69 66 0D 0A 3E 3E 3E 20 43 43 31 31 2E 43 20    dif..>>> CC11.C 
0067A0:  35 34 30 39 0D 0A 2F 2A 0D 0A 2A 2A 20 65 78 65    5409../*..** exe
0067B0:  63 75 74 69 6F 6E 20 62 65 67 69 6E 73 20 68 65    cution begins he
0067C0:  72 65 0D 0A 2A 2F 0D 0A 6D 61 69 6E 28 61 72 67    re..*/..main(arg
0067D0:  63 2C 20 61 72 67 76 29 20 69 6E 74 20 61 72 67    c, argv) int arg
0067E0:  63 2C 20 2A 61 72 67 76 3B 20 7B 0D 0A 20 20 61    c, *argv; {..  a
0067F0:  72 67 63 73 3D 61 72 67 63 3B 0D 0A 20 20 61 72    rgcs=argc;..  ar
006800:  67 76 73 3D 61 72 67 76 3B 0D 0A 20 20 66 70 75    gvs=argv;..  fpu
006810:  74 73 28 22 53 6D 61 6C 6C 2D 43 20 43 6F 6D 70    ts("Small-C Comp
006820:  69 6C 65 72 2C 20 22 2C 20 73 74 64 65 72 72 29    iler, ", stderr)
006830:  3B 20 66 70 75 74 73 28 56 45 52 53 49 4F 4E 2C    ; fputs(VERSION,
006840:  20 73 74 64 65 72 72 29 3B 0D 0A 20 20 66 70 75     stderr);..  fpu
006850:  74 73 28 43 52 49 47 48 54 31 2C 20 73 74 64 65    ts(CRIGHT1, stde
006860:  72 72 29 3B 0D 0A 23 69 66 64 65 66 20 44 59 4E    rr);..#ifdef DYN
006870:  41 4D 49 43 0D 0A 20 20 73 77 6E 65 78 74 3D 63    AMIC..  swnext=c
006880:  61 6C 6C 6F 63 28 53 57 54 41 42 53 5A 2C 20 31    alloc(SWTABSZ, 1
006890:  29 3B 0D 0A 20 20 73 77 65 6E 64 3D 73 77 6E 65    );..  swend=swne
0068A0:  78 74 2B 28 28 53 57 54 41 42 53 5A 2D 53 57 53    xt+((SWTABSZ-SWS
0068B0:  49 5A 29 3E 3E 31 29 3B 0D 0A 20 20 73 74 61 67    IZ)>>1);..  stag
0068C0:  65 3D 63 61 6C 6C 6F 63 28 53 54 41 47 45 53 49    e=calloc(STAGESI
0068D0:  5A 45 2C 20 31 29 3B 0D 0A 20 20 73 74 61 67 65    ZE, 1);..  stage
0068E0:  6C 61 73 74 3D 73 74 61 67 65 2B 53 54 41 47 45    last=stage+STAGE
0068F0:  4C 49 4D 49 54 3B 0D 0A 20 20 77 71 3D 63 61 6C    LIMIT;..  wq=cal
006900:  4F 0D 0A 20 20 6E 6F 67 6F 2C 09 09 2F 2A 20 3E    O..  nogo,../* >
006910:  20 30 20 64 69 73 61 62 6C 65 73 20 67 6F 74 6F     0 disables goto
006920:  20 73 74 61 74 65 6D 65 6E 74 73 20 2A 2F 0D 0A     statements */..
006930:  20 20 6E 6F 6C 6F 63 2C 09 2F 2A 20 3E 20 30 20      noloc,./* > 0 
006940:  64 69 73 61 62 6C 65 73 20 62 6C 6F 63 6B 20 6C    disables block l
006950:  6F 63 61 6C 73 20 2A 2F 0D 0A 23 65 6E 64 69 66    ocals */..#endif
006960:  0D 0A 20 20 6F 70 5B 31 36 5D 2C 09 2F 2A 20 66    ..  op[16],./* f
006970:  75 6E 63 74 69 6F 6E 20 61 64 64 72 65 73 73 65    unction addresse
006980:  73 20 6F 66 20 62 69 6E 61 72 79 20 6F 70 65 72    s of binary oper
006990:  61 74 6F 72 73 20 2A 2F 0D 0A 20 20 6F 70 32 5B    ators */..  op2[
0069A0:  31 36 5D 2C 09 2F 2A 20 73 61 6D 65 20 66 6F 72    16],./* same for
0069B0:  20 75 6E 73 69 67 6E 65 64 20 6F 70 65 72 61 74     unsigned operat
0069C0:  6F 72 73 20 2A 2F 0D 0A 20 20 6F 70 69 6E 64 65    ors */..  opinde
0069D0:  78 2C 09 2F 2A 20 69 6E 64 65 78 20 74 6F 20 6D    x,./* index to m
0069E0:  61 74 63 68 65 64 20 6F 70 65 72 61 74 6F 72 20    atched operator 
0069F0:  2A 2F 0D 0A 20 20 6F 70 73 69 7A 65 2C 09 2F 2A    */..  opsize,./*
006A00:  20 73 69 7A 65 20 6F 66 20 6F 70 65 72 61 74 6F     size of operato
006A10:  72 20 69 6E 20 62 79 74 65 73 20 2A 2F 0D 0A 20    r in bytes */.. 
006A20:  20 73 77 61 63 74 69 76 65 2C 09 2F 2A 20 74 72     swactive,./* tr
006A30:  75 65 20 69 6E 73 69 64 65 20 61 20 73 77 69 74    ue inside a swit
006A40:  63 68 20 2A 2F 0D 0A 20 20 73 77 64 65 66 61 75    ch */..  swdefau
006A50:  6C 74 2C 09 2F 2A 20 64 65 66 61 75 6C 74 20 6C    lt,./* default l
006A60:  61 62 65 6C 20 23 2C 20 65 6C 73 65 20 30 20 2A    abel #, else 0 *
006A70:  2F 0D 0A 20 2A 73 77 6E 65 78 74 2C 09 2F 2A 20    /.. *swnext,./* 
006A80:  61 64 64 72 65 73 73 20 6F 66 20 6E 65 78 74 20    address of next 
006A90:  65 6E 74 72 79 20 2A 2F 0D 0A 20 2A 73 77 65 6E    entry */.. *swen
006AA0:  64 2C 09 2F 2A 20 61 64 64 72 65 73 73 20 6F 66    d,./* address of
006AB0:  20 6C 61 73 74 20 74 61 62 6C 65 20 65 6E 74 72     last table entr
006AC0:  79 20 2A 2F 0D 0A 23 69 66 64 65 66 20 44 59 4E    y */..#ifdef DYN
006AD0:  41 4D 49 43 0D 0A 20 2A 77 71 2C 09 09 2F 2A 20    AMIC.. *wq,../* 
006AE0:  77 68 69 6C 65 20 71 75 65 75 65 20 2A 2F 0D 0A    while queue */..
006AF0:  23 65 6C 73 65 0D 0A 20 20 77 71 5B 57 51 54 41    #else..  wq[WQTA
006B00:  6C 6F 63 28 57 51 54 41 42 53 5A 2C 20 42 50 57    loc(WQTABSZ, BPW
006B10:  29 3B 0D 0A 20 20 6C 69 74 71 3D 63 61 6C 6C 6F    );..  litq=callo
006B20:  63 28 4C 49 54 41 42 53 5A 2C 20 31 29 3B 0D 0A    c(LITABSZ, 1);..
006B30:  20 20 6D 61 63 6E 3D 63 61 6C 6C 6F 63 28 4D 41      macn=calloc(MA
006B40:  43 4E 53 49 5A 45 2C 20 31 29 3B 0D 0A 20 20 6D    CNSIZE, 1);..  m
006B50:  61 63 71 3D 63 61 6C 6C 6F 63 28 4D 41 43 51 53    acq=calloc(MACQS
006B60:  49 5A 45 2C 20 31 29 3B 0D 0A 20 20 70 6C 69 6E    IZE, 1);..  plin
006B70:  65 3D 63 61 6C 6C 6F 63 28 4C 49 4E 45 53 49 5A    e=calloc(LINESIZ
006B80:  45 2C 20 31 29 3B 0D 0A 20 20 6D 6C 69 6E 65 3D    E, 1);..  mline=
006B90:  63 61 6C 6C 6F 63 28 4C 49 4E 45 53 49 5A 45 2C    calloc(LINESIZE,
006BA0:  20 31 29 3B 0D 0A 23 65 6C 73 65 0D 0A 20 20 73     1);..#else..  s
006BB0:  77 65 6E 64 3D 28 73 77 6E 65 78 74 3D 73 77 71    wend=(swnext=swq
006BC0:  29 2B 53 57 54 41 42 53 5A 2D 53 57 53 49 5A 3B    )+SWTABSZ-SWSIZ;
006BD0:  0D 0A 20 20 73 74 61 67 65 6C 61 73 74 3D 73 74    ..  stagelast=st
006BE0:  61 67 65 2B 53 54 41 47 45 4C 49 4D 49 54 3B 0D    age+STAGELIMIT;.
006BF0:  0A 23 65 6E 64 69 66 0D 0A 20 20 73 77 61 63 74    .#endif..  swact
006C00:  69 76 65 3D 09 09 2F 2A 20 6E 6F 74 20 69 6E 20    ive=../* not in 
006C10:  73 77 69 74 63 68 20 2A 2F 0D 0A 20 20 73 74 61    switch */..  sta
006C20:  67 65 6E 65 78 74 3D 09 09 2F 2A 20 64 69 72 65    genext=../* dire
006C30:  63 74 20 6F 75 74 70 75 74 20 6D 6F 64 65 20 2A    ct output mode *
006C40:  2F 0D 0A 20 20 69 66 6C 65 76 65 6C 3D 09 09 2F    /..  iflevel=../
006C50:  2A 20 23 69 66 2E 2E 2E 20 6E 65 73 74 69 6E 67    * #if... nesting
006C60:  20 6C 65 76 65 6C 20 3D 20 30 20 2A 2F 0D 0A 20     level = 0 */.. 
006C70:  20 73 6B 69 70 6C 65 76 65 6C 3D 09 09 2F 2A 20     skiplevel=../* 
006C80:  23 69 66 2E 2E 2E 20 6E 6F 74 20 65 6E 63 6F 75    #if... not encou
006C90:  6E 74 65 72 65 64 20 2A 2F 0D 0A 20 20 6D 61 63    ntered */..  mac
006CA0:  70 74 72 3D 09 09 2F 2A 20 63 6C 65 61 72 20 74    ptr=../* clear t
006CB0:  68 65 20 6D 61 63 72 6F 20 70 6F 6F 6C 20 2A 2F    he macro pool */
006CC0:  0D 0A 20 20 63 73 70 3D 09 09 09 2F 2A 20 73 74    ..  csp=.../* st
006CD0:  61 63 6B 20 70 74 72 20 28 72 65 6C 61 74 69 76    ack ptr (relativ
006CE0:  65 29 20 2A 2F 0D 0A 20 20 65 72 72 66 6C 61 67    e) */..  errflag
006CF0:  3D 09 09 2F 2A 20 6E 6F 74 20 73 6B 69 70 70 69    =../* not skippi
006D00:  42 53 5A 5D 2C 0D 0A 23 65 6E 64 69 66 0D 0A 20    BSZ],..#endif.. 
006D10:  20 61 72 67 63 73 2C 09 2F 2A 20 73 74 61 74 69     argcs,./* stati
006D20:  63 20 61 72 67 63 20 2A 2F 0D 0A 20 2A 61 72 67    c argc */.. *arg
006D30:  76 73 2C 09 2F 2A 20 73 74 61 74 69 63 20 61 72    vs,./* static ar
006D40:  67 76 20 2A 2F 0D 0A 20 2A 77 71 70 74 72 2C 09    gv */.. *wqptr,.
006D50:  2F 2A 20 70 74 72 20 74 6F 20 6E 65 78 74 20 65    /* ptr to next e
006D60:  6E 74 72 79 20 2A 2F 0D 0A 20 20 6C 69 74 70 74    ntry */..  litpt
006D70:  72 2C 09 2F 2A 20 70 74 72 20 74 6F 20 6E 65 78    r,./* ptr to nex
006D80:  74 20 65 6E 74 72 79 20 2A 2F 0D 0A 20 20 6D 61    t entry */..  ma
006D90:  63 70 74 72 2C 09 2F 2A 20 6D 61 63 72 6F 20 62    cptr,./* macro b
006DA0:  75 66 66 65 72 20 69 6E 64 65 78 20 2A 2F 0D 0A    uffer index */..
006DB0:  20 20 70 70 74 72 2C 09 09 2F 2A 20 70 74 72 20      pptr,../* ptr 
006DC0:  74 6F 20 70 61 72 73 69 6E 67 20 62 75 66 66 65    to parsing buffe
006DD0:  72 20 2A 2F 0D 0A 20 20 6F 70 65 72 2C 09 09 2F    r */..  oper,../
006DE0:  2A 20 61 64 64 72 65 73 73 20 6F 66 20 62 69 6E    * address of bin
006DF0:  61 72 79 20 6F 70 65 72 61 74 6F 72 20 66 75 6E    ary operator fun
006E00:  63 74 69 6F 6E 20 2A 2F 0D 0A 20 20 63 68 2C 09    ction */..  ch,.
006E10:  09 2F 2A 20 63 75 72 72 65 6E 74 20 63 68 61 72    ./* current char
006E20:  61 63 74 65 72 20 6F 66 20 6C 69 6E 65 20 62 65    acter of line be
006E30:  69 6E 67 20 73 63 61 6E 6E 65 64 20 2A 2F 0D 0A    ing scanned */..
006E40:  20 20 6E 63 68 2C 09 09 2F 2A 20 6E 65 78 74 20      nch,../* next 
006E50:  63 68 61 72 61 63 74 65 72 20 6F 66 20 6C 69 6E    character of lin
006E60:  65 20 62 65 69 6E 67 20 73 63 61 6E 6E 65 64 20    e being scanned 
006E70:  2A 2F 0D 0A 20 20 64 65 63 6C 61 72 65 64 2C 09    */..  declared,.
006E80:  2F 2A 20 23 20 6F 66 20 6C 6F 63 61 6C 20 62 79    /* # of local by
006E90:  74 65 73 20 64 65 63 6C 61 72 65 64 2C 20 65 6C    tes declared, el
006EA0:  73 65 20 2D 31 20 77 68 65 6E 20 64 6F 6E 65 20    se -1 when done 
006EB0:  2A 2F 0D 0A 20 20 69 66 6C 65 76 65 6C 2C 09 2F    */..  iflevel,./
006EC0:  2A 20 23 69 66 2E 2E 2E 20 6E 65 73 74 20 6C 65    * #if... nest le
006ED0:  76 65 6C 20 2A 2F 0D 0A 20 20 73 6B 69 70 6C 65    vel */..  skiple
006EE0:  76 65 6C 2C 09 2F 2A 20 6C 65 76 65 6C 20 61 74    vel,./* level at
006EF0:  20 77 68 69 63 68 20 23 69 66 2E 2E 2E 20 73 6B     which #if... sk
006F00:  6E 67 20 65 72 72 6F 72 73 20 74 69 6C 6C 20 22    ng errors till "
006F10:  3B 22 20 2A 2F 0D 0A 20 20 65 6F 66 3D 09 09 09    ;" */..  eof=...
006F20:  2F 2A 20 6E 6F 74 20 65 6F 66 20 79 65 74 20 2A    /* not eof yet *
006F30:  2F 0D 0A 20 20 6E 63 6D 70 3D 09 09 09 2F 2A 20    /..  ncmp=.../* 
006F40:  6E 6F 74 20 69 6E 20 63 6F 6D 70 6F 75 6E 64 20    not in compound 
006F50:  73 74 61 74 65 6D 65 6E 74 20 2A 2F 0D 0A 20 20    statement */..  
006F60:  66 69 6C 65 73 3D 0D 0A 20 20 66 69 6C 65 61 72    files=..  filear
006F70:  67 3D 0D 0A 20 20 71 75 6F 74 65 5B 31 5D 3D 30    g=..  quote[1]=0
006F80:  3B 0D 0A 20 20 66 75 6E 63 31 3D 09 09 2F 2A 20    ;..  func1=../* 
006F90:  66 69 72 73 74 20 66 75 6E 63 74 69 6F 6E 20 2A    first function *
006FA0:  2F 0D 0A 20 20 63 63 6F 64 65 3D 31 3B 09 09 2F    /..  ccode=1;../
006FB0:  2A 20 65 6E 61 62 6C 65 20 70 72 65 70 72 6F 63    * enable preproc
006FC0:  65 73 73 69 6E 67 20 2A 2F 0D 0A 20 20 77 71 70    essing */..  wqp
006FD0:  74 72 3D 77 71 3B 09 09 2F 2A 20 63 6C 65 61 72    tr=wq;../* clear
006FE0:  20 77 68 69 6C 65 20 71 75 65 75 65 20 2A 2F 0D     while queue */.
006FF0:  0A 20 20 71 75 6F 74 65 5B 30 5D 3D 27 22 27 3B    .  quote[0]='"';
007000:  09 09 2F 2A 20 66 61 6B 65 20 61 20 71 75 6F 74    ../* fake a quot
007010:  65 20 6C 69 74 65 72 61 6C 20 2A 2F 0D 0A 20 20    e literal */..  
007020:  69 6E 70 75 74 3D 69 6E 70 75 74 32 3D 45 4F 46    input=input2=EOF
007030:  3B 0D 0A 20 20 61 73 6B 28 29 3B 09 09 2F 2A 20    ;..  ask();../* 
007040:  67 65 74 20 75 73 65 72 20 6F 70 74 69 6F 6E 73    get user options
007050:  20 2A 2F 0D 0A 20 20 6F 70 65 6E 66 69 6C 65 28     */..  openfile(
007060:  29 3B 09 09 2F 2A 20 61 6E 64 20 69 6E 69 74 69    );../* and initi
007070:  61 6C 20 69 6E 70 75 74 20 66 69 6C 65 20 2A 2F    al input file */
007080:  0D 0A 20 20 70 72 65 70 72 6F 63 65 73 73 28 29    ..  preprocess()
007090:  3B 09 09 2F 2A 20 66 65 74 63 68 20 66 69 72 73    ;../* fetch firs
0070A0:  74 20 6C 69 6E 65 20 2A 2F 0D 0A 23 69 66 64 65    t line */..#ifde
0070B0:  66 20 44 59 4E 41 4D 49 43 0D 0A 20 20 73 79 6D    f DYNAMIC..  sym
0070C0:  74 61 62 3D 63 61 6C 6C 6F 63 28 28 4E 55 4D 4C    tab=calloc((NUML
0070D0:  4F 43 53 2A 53 59 4D 41 56 47 20 2B 20 4E 55 4D    OCS*SYMAVG + NUM
0070E0:  47 4C 42 53 2A 53 59 4D 4D 41 58 29 2C 20 31 29    GLBS*SYMMAX), 1)
0070F0:  3B 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 6C 6F 63    ;..#endif..  loc
007100:  69 70 70 69 6E 67 20 73 74 61 72 74 65 64 20 2A    ipping started *
007110:  2F 0D 0A 20 20 66 75 6E 63 31 2C 09 2F 2A 20 74    /..  func1,./* t
007120:  72 75 65 20 66 6F 72 20 66 69 72 73 74 20 66 75    rue for first fu
007130:  6E 63 74 69 6F 6E 20 2A 2F 0D 0A 20 20 6E 78 74    nction */..  nxt
007140:  6C 61 62 2C 09 2F 2A 20 6E 65 78 74 20 61 76 61    lab,./* next ava
007150:  69 6C 20 6C 61 62 65 6C 20 23 20 2A 2F 0D 0A 20    il label # */.. 
007160:  20 6C 69 74 6C 61 62 2C 09 2F 2A 20 6C 61 62 65     litlab,./* labe
007170:  6C 20 23 20 61 73 73 69 67 6E 65 64 20 74 6F 20    l # assigned to 
007180:  6C 69 74 65 72 61 6C 20 70 6F 6F 6C 20 2A 2F 0D    literal pool */.
007190:  0A 20 20 62 65 67 6C 61 62 2C 09 2F 2A 20 62 65    .  beglab,./* be
0071A0:  67 69 6E 6E 69 6E 67 20 6C 61 62 65 6C 20 2D 2D    ginning label --
0071B0:  20 66 69 72 73 74 20 66 75 6E 63 74 69 6F 6E 20     first function 
0071C0:  2A 2F 0D 0A 20 20 63 73 70 2C 09 09 2F 2A 20 63    */..  csp,../* c
0071D0:  6F 6D 70 69 6C 65 72 20 72 65 6C 61 74 69 76 65    ompiler relative
0071E0:  20 73 74 6B 20 70 74 72 20 2A 2F 0D 0A 20 20 61     stk ptr */..  a
0071F0:  72 67 73 74 6B 2C 09 2F 2A 20 66 75 6E 63 74 69    rgstk,./* functi
007200:  6F 6E 20 61 72 67 20 73 70 20 2A 2F 0D 0A 20 20    on arg sp */..  
007210:  61 72 67 74 6F 70 2C 0D 0A 20 20 6E 63 6D 70 2C    argtop,..  ncmp,
007220:  09 09 2F 2A 20 23 20 6F 70 65 6E 20 63 6F 6D 70    ../* # open comp
007230:  6F 75 6E 64 20 73 74 61 74 65 6D 65 6E 74 73 20    ound statements 
007240:  2A 2F 0D 0A 20 20 65 72 72 66 6C 61 67 2C 09 2F    */..  errflag,./
007250:  2A 20 6E 6F 6E 2D 7A 65 72 6F 20 61 66 74 65 72    * non-zero after
007260:  20 31 73 74 20 65 72 72 6F 72 20 69 6E 20 73 74     1st error in st
007270:  61 74 65 6D 65 6E 74 20 2A 2F 0D 0A 20 20 65 6F    atement */..  eo
007280:  66 2C 09 09 2F 2A 20 73 65 74 20 6E 6F 6E 2D 7A    f,../* set non-z
007290:  65 72 6F 20 6F 6E 20 66 69 6E 61 6C 20 69 6E 70    ero on final inp
0072A0:  75 74 20 65 6F 66 20 2A 2F 0D 0A 20 20 69 6E 70    ut eof */..  inp
0072B0:  75 74 2C 09 2F 2A 20 66 64 20 23 20 66 6F 72 20    ut,./* fd # for 
0072C0:  69 6E 70 75 74 20 66 69 6C 65 20 2A 2F 0D 0A 20    input file */.. 
0072D0:  20 69 6E 70 75 74 32 2C 09 2F 2A 20 66 64 20 23     input2,./* fd #
0072E0:  20 66 6F 72 20 22 69 6E 63 6C 75 64 65 22 20 66     for "include" f
0072F0:  69 6C 65 20 2A 2F 0D 0A 20 20 6F 75 74 70 75 74    ile */..  output
007300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
007310:  06 00 01 00 02 09 52 E5 06 00 41 02 00 00 00 02    ......R...A.....
007320:  06 00 46 02 00 00 00 02 06 00 42 02 00 00 00 02    ..F.......B.....
007330:  06 00 47 02 00 00 00 02 06 00 43 02 00 00 00 02    ..G.......C.....
007340:  06 00 48 02 00 00 00 02 06 00 44 02 00 00 00 02    ..H.......D.....
007350:  06 00 49 02 00 00 00 02 06 00 45 02 00 00 00 02    ..I.......E.....
007360:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007370:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007380:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007390:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007400:  70 74 72 3D 53 54 41 52 54 4C 4F 43 3B 0D 0A 20    ptr=STARTLOC;.. 
007410:  20 67 6C 62 70 74 72 3D 53 54 41 52 54 47 4C 42     glbptr=STARTGLB
007420:  3B 0D 0A 20 20 67 6C 62 66 6C 61 67 3D 31 3B 0D    ;..  glbflag=1;.
007430:  0A 20 20 63 74 65 78 74 3D 30 3B 0D 0A 20 20 68    .  ctext=0;..  h
007440:  65 61 64 65 72 28 29 3B 09 09 2F 2A 20 69 6E 74    eader();../* int
007450:  72 6F 20 63 6F 64 65 20 2A 2F 0D 0A 20 20 73 65    ro code */..  se
007460:  74 6F 70 73 28 29 3B 09 09 2F 2A 20 73 65 74 20    tops();../* set 
007470:  76 61 6C 75 65 73 20 69 6E 20 6F 70 20 61 72 72    values in op arr
007480:  61 79 73 20 2A 2F 0D 0A 20 20 70 61 72 73 65 28    ays */..  parse(
007490:  29 3B 09 09 2F 2A 20 70 72 6F 63 65 73 73 20 41    );../* process A
0074A0:  4C 4C 20 69 6E 70 75 74 20 2A 2F 0D 0A 20 20 6F    LL input */..  o
0074B0:  75 74 73 69 64 65 28 29 3B 09 09 2F 2A 20 76 65    utside();../* ve
0074C0:  72 69 66 79 20 6F 75 74 73 69 64 65 20 61 6E 79    rify outside any
0074D0:  20 66 75 6E 63 74 69 6F 6E 20 2A 2F 0D 0A 20 20     function */..  
0074E0:  74 72 61 69 6C 65 72 28 29 3B 09 09 2F 2A 20 66    trailer();../* f
0074F0:  6F 6C 6C 6F 77 2D 75 70 20 63 6F 64 65 20 2A 2F    ollow-up code */
007500:  0D 0A 20 20 66 63 6C 6F 73 65 28 6F 75 74 70 75    ..  fclose(outpu
007510:  74 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A    t);..  }..../*..
007520:  2A 2A 20 70 72 6F 63 65 73 73 20 61 6C 6C 20 69    ** process all i
007530:  6E 70 75 74 20 74 65 78 74 0D 0A 2A 2A 0D 0A 2A    nput text..**..*
007540:  2A 20 41 74 20 74 68 69 73 20 6C 65 76 65 6C 2C    * At this level,
007550:  20 6F 6E 6C 79 20 73 74 61 74 69 63 20 64 65 63     only static dec
007560:  6C 61 72 61 74 69 6F 6E 73 2C 0D 0A 2A 2A 20 20    larations,..**  
007570:  20 20 20 20 64 65 66 69 6E 65 73 2C 20 69 6E 63        defines, inc
007580:  6C 75 64 65 73 20 61 6E 64 20 66 75 6E 63 74 69    ludes and functi
007590:  6F 6E 0D 0A 2A 2A 20 20 20 20 20 20 64 65 66 69    on..**      defi
0075A0:  6E 69 74 69 6F 6E 73 20 61 72 65 20 6C 65 67 61    nitions are lega
0075B0:  6C 2E 2E 2E 0D 0A 2A 2F 0D 0A 70 61 72 73 65 28    l.....*/..parse(
0075C0:  29 20 7B 0D 0A 20 20 77 68 69 6C 65 20 28 65 6F    ) {..  while (eo
0075D0:  66 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 69 66 28    f==0) {..    if(
0075E0:  61 6D 61 74 63 68 28 22 65 78 74 65 72 6E 22 2C    amatch("extern",
0075F0:  20 36 29 29 20 20 20 64 6F 64 65 63 6C 61 72 65     6))   dodeclare
007600:  65 66 20 4F 50 54 49 4D 49 5A 45 0D 0A 20 20 20    ef OPTIMIZE..   
007610:  20 73 6F 75 74 28 22 20 5B 2D 6F 5D 22 2C 20 73     sout(" [-o]", s
007620:  74 64 65 72 72 29 3B 0D 0A 23 65 6E 64 69 66 0D    tderr);..#endif.
007630:  0A 23 69 66 6E 64 65 66 20 4C 49 4E 4B 0D 0A 20    .#ifndef LINK.. 
007640:  20 20 20 73 6F 75 74 28 22 20 5B 2D 62 23 5D 22       sout(" [-b#]"
007650:  2C 20 73 74 64 65 72 72 29 3B 0D 0A 23 65 6E 64    , stderr);..#end
007660:  69 66 0D 0A 20 20 20 20 73 6F 75 74 28 4E 45 57    if..    sout(NEW
007670:  4C 49 4E 45 2C 20 73 74 64 65 72 72 29 3B 0D 0A    LINE, stderr);..
007680:  20 20 20 20 61 62 6F 72 74 28 45 52 52 43 4F 44        abort(ERRCOD
007690:  45 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D    E);..    }..  }.
0076A0:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 69 6E 70 75 74 20    .../*..** input 
0076B0:  61 6E 64 20 6F 75 74 70 75 74 20 66 69 6C 65 20    and output file 
0076C0:  6F 70 65 6E 73 0D 0A 2A 2F 0D 0A 6F 70 65 6E 66    opens..*/..openf
0076D0:  69 6C 65 28 29 20 7B 09 09 2F 2A 20 65 6E 74 69    ile() {../* enti
0076E0:  72 65 20 66 75 6E 63 74 69 6F 6E 20 72 65 76 69    re function revi
0076F0:  73 65 64 20 2A 2F 0D 0A 20 20 63 68 61 72 20 6F    sed */..  char o
007700:  75 74 66 6E 5B 31 35 5D 3B 0D 0A 20 20 69 6E 74    utfn[15];..  int
007710:  20 69 2C 20 6A 2C 20 65 78 74 3B 0D 0A 20 20 69     i, j, ext;..  i
007720:  6E 70 75 74 3D 45 4F 46 3B 0D 0A 20 20 77 68 69    nput=EOF;..  whi
007730:  6C 65 28 67 65 74 61 72 67 28 2B 2B 66 69 6C 65    le(getarg(++file
007740:  61 72 67 2C 20 70 6C 69 6E 65 2C 20 4C 49 4E 45    arg, pline, LINE
007750:  53 49 5A 45 2C 20 61 72 67 63 73 2C 20 61 72 67    SIZE, argcs, arg
007760:  76 73 29 21 3D 45 4F 46 29 20 7B 0D 0A 20 20 20    vs)!=EOF) {..   
007770:  20 69 66 28 70 6C 69 6E 65 5B 30 5D 3D 3D 27 2D     if(pline[0]=='-
007780:  27 29 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20    ') continue;..  
007790:  20 20 65 78 74 20 3D 20 4E 4F 3B 0D 0A 20 20 20      ext = NO;..   
0077A0:  20 69 20 3D 20 2D 31 3B 0D 0A 20 20 20 20 6A 20     i = -1;..    j 
0077B0:  3D 20 30 3B 0D 0A 20 20 20 20 77 68 69 6C 65 28    = 0;..    while(
0077C0:  70 6C 69 6E 65 5B 2B 2B 69 5D 29 20 7B 0D 0A 20    pline[++i]) {.. 
0077D0:  20 20 20 20 20 69 66 28 70 6C 69 6E 65 5B 69 5D         if(pline[i]
0077E0:  20 3D 3D 20 27 2E 27 29 20 7B 65 78 74 20 3D 20     == '.') {ext = 
0077F0:  59 45 53 3B 20 62 72 65 61 6B 3B 7D 0D 0A 20 20    YES; break;}..  
007800:  28 45 58 54 45 52 4E 41 4C 29 3B 0D 0A 20 20 20    (EXTERNAL);..   
007810:  20 65 6C 73 65 20 69 66 28 64 6F 64 65 63 6C 61     else if(dodecla
007820:  72 65 28 53 54 41 54 49 43 29 29 3B 0D 0A 20 20    re(STATIC));..  
007830:  20 20 65 6C 73 65 20 69 66 28 6D 61 74 63 68 28      else if(match(
007840:  22 23 61 73 6D 22 29 29 20 20 20 20 64 6F 61 73    "#asm"))    doas
007850:  6D 28 29 3B 0D 0A 20 20 20 20 65 6C 73 65 20 69    m();..    else i
007860:  66 28 6D 61 74 63 68 28 22 23 69 6E 63 6C 75 64    f(match("#includ
007870:  65 22 29 29 64 6F 69 6E 63 6C 75 64 65 28 29 3B    e"))doinclude();
007880:  0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 6D 61    ..    else if(ma
007890:  74 63 68 28 22 23 64 65 66 69 6E 65 22 29 29 20    tch("#define")) 
0078A0:  61 64 64 6D 61 63 28 29 3B 0D 0A 20 20 20 20 65    addmac();..    e
0078B0:  6C 73 65 20 20 20 20 20 20 20 20 20 20 20 20 20    lse             
0078C0:  20 20 20 20 20 20 20 20 20 6E 65 77 66 75 6E 63             newfunc
0078D0:  28 29 3B 0D 0A 20 20 20 20 62 6C 61 6E 6B 73 28    ();..    blanks(
0078E0:  29 3B 09 09 2F 2A 20 66 6F 72 63 65 20 65 6F 66    );../* force eof
0078F0:  20 69 66 20 70 65 6E 64 69 6E 67 20 2A 2F 0D 0A     if pending */..
007900:  20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A        }..  }..../*
007910:  0D 0A 2A 2A 20 64 75 6D 70 20 74 68 65 20 6C 69    ..** dump the li
007920:  74 65 72 61 6C 20 70 6F 6F 6C 0D 0A 2A 2F 0D 0A    teral pool..*/..
007930:  64 75 6D 70 6C 69 74 73 28 73 69 7A 65 29 20 69    dumplits(size) i
007940:  6E 74 20 73 69 7A 65 3B 20 7B 0D 0A 20 20 69 6E    nt size; {..  in
007950:  74 20 6A 2C 20 6B 3B 0D 0A 20 20 6B 3D 30 3B 0D    t j, k;..  k=0;.
007960:  0A 20 20 77 68 69 6C 65 20 28 6B 3C 6C 69 74 70    .  while (k<litp
007970:  74 72 29 20 7B 0D 0A 20 20 20 20 70 6F 6C 6C 28    tr) {..    poll(
007980:  31 29 3B 09 09 2F 2A 20 61 6C 6C 6F 77 20 70 72    1);../* allow pr
007990:  6F 67 72 61 6D 20 69 6E 74 65 72 72 75 70 74 69    ogram interrupti
0079A0:  6F 6E 20 2A 2F 0D 0A 20 20 20 20 64 65 66 73 74    on */..    defst
0079B0:  6F 72 61 67 65 28 73 69 7A 65 29 3B 0D 0A 20 20    orage(size);..  
0079C0:  20 20 6A 3D 31 30 3B 0D 0A 20 20 20 20 77 68 69      j=10;..    whi
0079D0:  6C 65 28 6A 2D 2D 29 20 7B 0D 0A 20 20 20 20 20    le(j--) {..     
0079E0:  20 6F 75 74 64 65 63 28 67 65 74 69 6E 74 28 6C     outdec(getint(l
0079F0:  69 74 71 2B 6B 2C 20 73 69 7A 65 29 29 3B 0D 0A    itq+k, size));..
007A00:  20 20 20 20 69 66 28 6A 20 3C 20 31 30 29 20 6F        if(j < 10) o
007A10:  75 74 66 6E 5B 6A 2B 2B 5D 20 3D 20 70 6C 69 6E    utfn[j++] = plin
007A20:  65 5B 69 5D 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A    e[i];..      }..
007A30:  20 20 20 20 69 66 28 21 65 78 74 29 20 7B 0D 0A        if(!ext) {..
007A40:  20 20 20 20 20 20 73 74 72 63 70 79 28 70 6C 69          strcpy(pli
007A50:  6E 65 20 2B 20 69 2C 20 22 2E 43 22 29 3B 0D 0A    ne + i, ".C");..
007A60:  20 20 20 20 20 20 7D 0D 0A 20 20 20 20 69 6E 70          }..    inp
007A70:  75 74 20 3D 20 6D 75 73 74 6F 70 65 6E 28 70 6C    ut = mustopen(pl
007A80:  69 6E 65 2C 20 22 72 22 29 3B 0D 0A 20 20 20 20    ine, "r");..    
007A90:  69 66 28 21 66 69 6C 65 73 20 26 26 20 69 73 61    if(!files && isa
007AA0:  74 74 79 28 73 74 64 6F 75 74 29 29 20 7B 0D 0A    tty(stdout)) {..
007AB0:  20 20 20 20 20 20 73 74 72 63 70 79 28 6F 75 74          strcpy(out
007AC0:  66 6E 20 2B 20 6A 2C 20 22 2E 4D 41 43 22 29 3B    fn + j, ".MAC");
007AD0:  0D 0A 20 20 20 20 20 20 6F 75 74 70 75 74 20 3D    ..      output =
007AE0:  20 6D 75 73 74 6F 70 65 6E 28 6F 75 74 66 6E 2C     mustopen(outfn,
007AF0:  20 22 77 22 29 3B 0D 0A 20 20 20 20 20 20 7D 0D     "w");..      }.
007B00:  0A 20 20 20 20 66 69 6C 65 73 3D 59 45 53 3B 0D    .    files=YES;.
007B10:  0A 20 20 20 20 6B 69 6C 6C 28 29 3B 0D 0A 20 20    .    kill();..  
007B20:  20 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 7D      return;..    }
007B30:  0D 0A 20 20 69 66 28 66 69 6C 65 73 2B 2B 29 20    ..  if(files++) 
007B40:  65 6F 66 3D 59 45 53 3B 0D 0A 20 20 65 6C 73 65    eof=YES;..  else
007B50:  20 69 6E 70 75 74 3D 73 74 64 69 6E 3B 0D 0A 20     input=stdin;.. 
007B60:  20 6B 69 6C 6C 28 29 3B 0D 0A 20 20 7D 0D 0A 0D     kill();..  }...
007B70:  0A 2F 2A 0D 0A 2A 2A 20 6F 70 65 6E 20 61 20 66    ./*..** open a f
007B80:  69 6C 65 20 77 69 74 68 20 65 72 72 6F 72 20 63    ile with error c
007B90:  68 65 63 6B 69 6E 67 0D 0A 2A 2F 0D 0A 6D 75 73    hecking..*/..mus
007BA0:  74 6F 70 65 6E 28 66 6E 2C 20 6D 6F 64 65 29 20    topen(fn, mode) 
007BB0:  63 68 61 72 20 2A 66 6E 2C 20 2A 6D 6F 64 65 3B    char *fn, *mode;
007BC0:  20 7B 0D 0A 20 20 69 6E 74 20 66 64 3B 0D 0A 20     {..  int fd;.. 
007BD0:  20 69 66 28 66 64 20 3D 20 66 6F 70 65 6E 28 66     if(fd = fopen(f
007BE0:  6E 2C 20 6D 6F 64 65 29 29 20 72 65 74 75 72 6E    n, mode)) return
007BF0:  20 66 64 3B 0D 0A 20 20 73 6F 75 74 28 22 6F 70     fd;..  sout("op
007C00:  20 20 20 20 20 20 6B 3D 6B 2B 73 69 7A 65 3B 0D          k=k+size;.
007C10:  0A 20 20 20 20 20 20 69 66 20 28 28 6A 3D 3D 30    .      if ((j==0
007C20:  29 7C 28 6B 3E 3D 6C 69 74 70 74 72 29 29 20 7B    )|(k>=litptr)) {
007C30:  6E 6C 28 29 3B 20 62 72 65 61 6B 3B 7D 0D 0A 20    nl(); break;}.. 
007C40:  20 20 20 20 20 6F 75 74 62 79 74 65 28 27 2C 27         outbyte(','
007C50:  29 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20    );..      }..   
007C60:  20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A     }..  }..../*..*
007C70:  2A 20 64 75 6D 70 20 7A 65 72 6F 65 73 20 66 6F    * dump zeroes fo
007C80:  72 20 64 65 66 61 75 6C 74 20 69 6E 69 74 69 61    r default initia
007C90:  6C 20 76 61 6C 75 65 73 0D 0A 2A 2F 0D 0A 64 75    l values..*/..du
007CA0:  6D 70 7A 65 72 6F 28 73 69 7A 65 2C 20 63 6F 75    mpzero(size, cou
007CB0:  6E 74 29 20 69 6E 74 20 73 69 7A 65 2C 20 63 6F    nt) int size, co
007CC0:  75 6E 74 3B 20 7B 0D 0A 20 20 69 6E 74 20 6A 3B    unt; {..  int j;
007CD0:  0D 0A 20 20 77 68 69 6C 65 20 28 63 6F 75 6E 74    ..  while (count
007CE0:  20 3E 20 30 29 20 7B 0D 0A 20 20 20 20 70 6F 6C     > 0) {..    pol
007CF0:  6C 28 31 29 3B 09 09 2F 2A 20 61 6C 6C 6F 77 20    l(1);../* allow 
007D00:  70 72 6F 67 72 61 6D 20 69 6E 74 65 72 72 75 70    program interrup
007D10:  74 69 6F 6E 20 2A 2F 0D 0A 20 20 20 20 64 65 66    tion */..    def
007D20:  73 74 6F 72 61 67 65 28 73 69 7A 65 29 3B 0D 0A    storage(size);..
007D30:  20 20 20 20 6A 3D 33 30 3B 0D 0A 20 20 20 20 77        j=30;..    w
007D40:  68 69 6C 65 28 6A 2D 2D 29 20 7B 0D 0A 20 20 20    hile(j--) {..   
007D50:  20 20 20 6F 75 74 64 65 63 28 30 29 3B 0D 0A 20       outdec(0);.. 
007D60:  20 20 20 20 20 69 66 20 28 28 2D 2D 63 6F 75 6E         if ((--coun
007D70:  74 20 3C 3D 20 30 29 7C 28 6A 3D 3D 30 29 29 20    t <= 0)|(j==0)) 
007D80:  7B 6E 6C 28 29 3B 20 62 72 65 61 6B 3B 7D 0D 0A    {nl(); break;}..
007D90:  20 20 20 20 20 20 6F 75 74 62 79 74 65 28 27 2C          outbyte(',
007DA0:  27 29 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20    ');..      }..  
007DB0:  20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A      }..  }..../*..
007DC0:  2A 2A 20 76 65 72 69 66 79 20 63 6F 6D 70 69 6C    ** verify compil
007DD0:  65 20 65 6E 64 73 20 6F 75 74 73 69 64 65 20 61    e ends outside a
007DE0:  6E 79 20 66 75 6E 63 74 69 6F 6E 0D 0A 2A 2F 0D    ny function..*/.
007DF0:  0A 6F 75 74 73 69 64 65 28 29 20 20 7B 0D 0A 20    .outside()  {.. 
007E00:  65 6E 20 65 72 72 6F 72 20 6F 6E 20 22 2C 20 73    en error on ", s
007E10:  74 64 65 72 72 29 3B 0D 0A 20 20 6C 6F 75 74 28    tderr);..  lout(
007E20:  66 6E 2C 20 73 74 64 65 72 72 29 3B 0D 0A 20 20    fn, stderr);..  
007E30:  61 62 6F 72 74 28 45 52 52 43 4F 44 45 29 3B 0D    abort(ERRCODE);.
007E40:  0A 20 20 7D 0D 0A 0D 0A 73 65 74 6F 70 73 28 29    .  }....setops()
007E50:  20 7B 0D 0A 20 20 6F 70 32 5B 20 30 5D 3D 20 20     {..  op2[ 0]=  
007E60:  20 20 20 6F 70 5B 20 30 5D 3D 20 20 66 66 6F 72       op[ 0]=  ffor
007E70:  3B 09 09 2F 2A 20 68 65 69 72 35 20 2A 2F 0D 0A    ;../* heir5 */..
007E80:  20 20 6F 70 32 5B 20 31 5D 3D 20 20 20 20 20 6F      op2[ 1]=     o
007E90:  70 5B 20 31 5D 3D 20 66 66 78 6F 72 3B 09 09 2F    p[ 1]= ffxor;../
007EA0:  2A 20 68 65 69 72 36 20 2A 2F 0D 0A 20 20 6F 70    * heir6 */..  op
007EB0:  32 5B 20 32 5D 3D 20 20 20 20 20 6F 70 5B 20 32    2[ 2]=     op[ 2
007EC0:  5D 3D 20 66 66 61 6E 64 3B 09 09 2F 2A 20 68 65    ]= ffand;../* he
007ED0:  69 72 37 20 2A 2F 0D 0A 20 20 6F 70 32 5B 20 33    ir7 */..  op2[ 3
007EE0:  5D 3D 20 20 20 20 20 6F 70 5B 20 33 5D 3D 20 20    ]=     op[ 3]=  
007EF0:  66 66 65 71 3B 09 09 2F 2A 20 68 65 69 72 38 20    ffeq;../* heir8 
007F00:  2A 2F 0D 0A 20 20 6F 70 32 5B 20 34 5D 3D 20 20    */..  op2[ 4]=  
007F10:  20 20 20 6F 70 5B 20 34 5D 3D 20 20 66 66 6E 65       op[ 4]=  ffne
007F20:  3B 0D 0A 20 20 6F 70 32 5B 20 35 5D 3D 75 6C 65    ;..  op2[ 5]=ule
007F30:  3B 20 6F 70 5B 20 35 5D 3D 20 20 66 66 6C 65 3B    ; op[ 5]=  ffle;
007F40:  09 09 2F 2A 20 68 65 69 72 39 20 2A 2F 0D 0A 20    ../* heir9 */.. 
007F50:  20 6F 70 32 5B 20 36 5D 3D 75 67 65 3B 20 6F 70     op2[ 6]=uge; op
007F60:  5B 20 36 5D 3D 20 20 66 66 67 65 3B 0D 0A 20 20    [ 6]=  ffge;..  
007F70:  6F 70 32 5B 20 37 5D 3D 75 6C 74 3B 20 6F 70 5B    op2[ 7]=ult; op[
007F80:  20 37 5D 3D 20 20 66 66 6C 74 3B 0D 0A 20 20 6F     7]=  fflt;..  o
007F90:  70 32 5B 20 38 5D 3D 75 67 74 3B 20 6F 70 5B 20    p2[ 8]=ugt; op[ 
007FA0:  38 5D 3D 20 20 66 66 67 74 3B 0D 0A 20 20 6F 70    8]=  ffgt;..  op
007FB0:  32 5B 20 39 5D 3D 20 20 20 20 20 6F 70 5B 20 39    2[ 9]=     op[ 9
007FC0:  5D 3D 20 66 66 61 73 72 3B 09 09 2F 2A 20 68 65    ]= ffasr;../* he
007FD0:  69 72 31 30 20 2A 2F 0D 0A 20 20 6F 70 32 5B 31    ir10 */..  op2[1
007FE0:  30 5D 3D 20 20 20 20 20 6F 70 5B 31 30 5D 3D 20    0]=     op[10]= 
007FF0:  66 66 61 73 6C 3B 0D 0A 20 20 6F 70 32 5B 31 31    ffasl;..  op2[11
008000:  20 69 66 20 28 6E 63 6D 70 29 20 65 72 72 6F 72     if (ncmp) error
008010:  28 22 6E 6F 20 63 6C 6F 73 69 6E 67 20 62 72 61    ("no closing bra
008020:  63 6B 65 74 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A    cket");..  }....
008030:  2F 2A 0D 0A 2A 2A 20 67 65 74 20 72 75 6E 20 6F    /*..** get run o
008040:  70 74 69 6F 6E 73 0D 0A 2A 2F 0D 0A 61 73 6B 28    ptions..*/..ask(
008050:  29 20 7B 0D 0A 20 20 69 6E 74 20 69 3B 0D 0A 20    ) {..  int i;.. 
008060:  20 69 3D 6C 69 73 74 66 70 3D 6E 78 74 6C 61 62     i=listfp=nxtlab
008070:  3D 30 3B 0D 0A 20 20 6F 75 74 70 75 74 3D 73 74    =0;..  output=st
008080:  64 6F 75 74 3B 0D 0A 23 69 66 64 65 66 20 4F 50    dout;..#ifdef OP
008090:  54 49 4D 49 5A 45 0D 0A 20 20 6F 70 74 69 6D 69    TIMIZE..  optimi
0080A0:  7A 65 3D 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 61    ze=..#endif..  a
0080B0:  6C 61 72 6D 3D 6D 6F 6E 69 74 6F 72 3D 70 61 75    larm=monitor=pau
0080C0:  73 65 3D 4E 4F 3B 0D 0A 20 20 6C 69 6E 65 3D 6D    se=NO;..  line=m
0080D0:  6C 69 6E 65 3B 0D 0A 20 20 77 68 69 6C 65 28 67    line;..  while(g
0080E0:  65 74 61 72 67 28 2B 2B 69 2C 20 6C 69 6E 65 2C    etarg(++i, line,
0080F0:  20 4C 49 4E 45 53 49 5A 45 2C 20 61 72 67 63 73     LINESIZE, argcs
008100:  2C 20 61 72 67 76 73 29 21 3D 45 4F 46 29 20 7B    , argvs)!=EOF) {
008110:  0D 0A 20 20 20 20 69 66 28 6C 69 6E 65 5B 30 5D    ..    if(line[0]
008120:  21 3D 27 2D 27 29 20 63 6F 6E 74 69 6E 75 65 3B    !='-') continue;
008130:  0D 0A 20 20 20 20 69 66 28 28 74 6F 75 70 70 65    ..    if((touppe
008140:  72 28 6C 69 6E 65 5B 31 5D 29 3D 3D 27 4C 27 29    r(line[1])=='L')
008150:  26 28 69 73 64 69 67 69 74 28 6C 69 6E 65 5B 32    &(isdigit(line[2
008160:  5D 29 29 26 28 6C 69 6E 65 5B 33 5D 3C 3D 27 20    ]))&(line[3]<=' 
008170:  27 29 29 20 7B 0D 0A 20 20 20 20 20 20 6C 69 73    ')) {..      lis
008180:  74 66 70 3D 6C 69 6E 65 5B 32 5D 2D 27 30 27 3B    tfp=line[2]-'0';
008190:  0D 0A 20 20 20 20 20 20 63 6F 6E 74 69 6E 75 65    ..      continue
0081A0:  3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20    ;..      }..    
0081B0:  69 66 28 6C 69 6E 65 5B 32 5D 3C 3D 27 20 27 29    if(line[2]<=' ')
0081C0:  20 7B 0D 0A 20 20 20 20 20 20 69 66 28 74 6F 75     {..      if(tou
0081D0:  70 70 65 72 28 6C 69 6E 65 5B 31 5D 29 3D 3D 27    pper(line[1])=='
0081E0:  41 27 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 61    A') {..        a
0081F0:  6C 61 72 6D 3D 59 45 53 3B 0D 0A 20 20 20 20 20    larm=YES;..     
008200:  5D 3D 20 20 20 20 20 6F 70 5B 31 31 5D 3D 20 66    ]=     op[11]= f
008210:  66 61 64 64 3B 09 09 2F 2A 20 68 65 69 72 31 31    fadd;../* heir11
008220:  20 2A 2F 0D 0A 20 20 6F 70 32 5B 31 32 5D 3D 20     */..  op2[12]= 
008230:  20 20 20 20 6F 70 5B 31 32 5D 3D 20 66 66 73 75        op[12]= ffsu
008240:  62 3B 0D 0A 20 20 6F 70 32 5B 31 33 5D 3D 20 20    b;..  op2[13]=  
008250:  20 20 20 6F 70 5B 31 33 5D 3D 66 66 6D 75 6C 74       op[13]=ffmult
008260:  3B 09 09 2F 2A 20 68 65 69 72 31 32 20 2A 2F 0D    ;../* heir12 */.
008270:  0A 20 20 6F 70 32 5B 31 34 5D 3D 20 20 20 20 20    .  op2[14]=     
008280:  6F 70 5B 31 34 5D 3D 20 66 66 64 69 76 3B 0D 0A    op[14]= ffdiv;..
008290:  20 20 6F 70 32 5B 31 35 5D 3D 20 20 20 20 20 6F      op2[15]=     o
0082A0:  70 5B 31 35 5D 3D 20 66 66 6D 6F 64 3B 0D 0A 20    p[15]= ffmod;.. 
0082B0:  20 7D 0D 0A 0D 0A 3E 3E 3E 20 43 43 31 32 2E 43     }....>>> CC12.C
0082C0:  20 36 37 38 38 0D 0A 2F 2A 0D 0A 2A 2A 20 6F 70     6788../*..** op
0082D0:  65 6E 20 61 6E 20 69 6E 63 6C 75 64 65 20 66 69    en an include fi
0082E0:  6C 65 0D 0A 2A 2F 0D 0A 64 6F 69 6E 63 6C 75 64    le..*/..doinclud
0082F0:  65 28 29 20 20 7B 0D 0A 20 20 63 68 61 72 20 2A    e()  {..  char *
008300:  63 70 3B 0D 0A 20 20 62 6C 61 6E 6B 73 28 29 3B    cp;..  blanks();
008310:  09 09 09 2F 2A 20 73 6B 69 70 20 6F 76 65 72 20    .../* skip over 
008320:  74 6F 20 6E 61 6D 65 20 2A 2F 0D 0A 20 20 73 77    to name */..  sw
008330:  69 74 63 68 20 28 2A 6C 70 74 72 29 20 7B 0D 0A    itch (*lptr) {..
008340:  20 20 20 20 63 61 73 65 20 27 22 27 3A 20 63 61        case '"': ca
008350:  73 65 20 27 3C 27 3A 20 63 70 20 3D 20 2B 2B 6C    se '<': cp = ++l
008360:  70 74 72 3B 0D 0A 20 20 20 20 77 68 69 6C 65 28    ptr;..    while(
008370:  2A 63 70 29 20 7B 0D 0A 20 20 20 20 20 20 73 77    *cp) {..      sw
008380:  69 74 63 68 28 2A 63 70 29 20 7B 63 61 73 65 20    itch(*cp) {case 
008390:  27 22 27 3A 20 63 61 73 65 20 27 3E 27 3A 20 2A    '"': case '>': *
0083A0:  63 70 3D 4E 55 4C 4C 3B 7D 0D 0A 20 20 20 20 20    cp=NULL;}..     
0083B0:  20 2B 2B 63 70 3B 0D 0A 20 20 20 20 20 20 7D 0D     ++cp;..      }.
0083C0:  0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 28 69 6E    .    }..  if((in
0083D0:  70 75 74 32 3D 66 6F 70 65 6E 28 6C 70 74 72 2C    put2=fopen(lptr,
0083E0:  22 72 22 29 29 3D 3D 4E 55 4C 4C 29 20 7B 0D 0A    "r"))==NULL) {..
0083F0:  20 20 20 20 69 6E 70 75 74 32 3D 45 4F 46 3B 0D        input2=EOF;.
008400:  20 20 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20       continue;..  
008410:  20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 69          }..      i
008420:  66 28 74 6F 75 70 70 65 72 28 6C 69 6E 65 5B 31    f(toupper(line[1
008430:  5D 29 3D 3D 27 4D 27 29 20 7B 0D 0A 20 20 20 20    ])=='M') {..    
008440:  20 20 20 20 6D 6F 6E 69 74 6F 72 3D 59 45 53 3B        monitor=YES;
008450:  0D 0A 20 20 20 20 20 20 20 20 63 6F 6E 74 69 6E    ..        contin
008460:  75 65 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A    ue;..        }..
008470:  23 69 66 64 65 66 20 4F 50 54 49 4D 49 5A 45 0D    #ifdef OPTIMIZE.
008480:  0A 20 20 20 20 20 20 69 66 28 74 6F 75 70 70 65    .      if(touppe
008490:  72 28 6C 69 6E 65 5B 31 5D 29 3D 3D 27 4F 27 29    r(line[1])=='O')
0084A0:  20 7B 0D 0A 20 20 20 20 20 20 20 20 6F 70 74 69     {..        opti
0084B0:  6D 69 7A 65 3D 59 45 53 3B 0D 0A 20 20 20 20 20    mize=YES;..     
0084C0:  20 20 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20       continue;..  
0084D0:  20 20 20 20 20 20 7D 0D 0A 23 65 6E 64 69 66 0D          }..#endif.
0084E0:  0A 20 20 20 20 20 20 69 66 28 74 6F 75 70 70 65    .      if(touppe
0084F0:  72 28 6C 69 6E 65 5B 31 5D 29 3D 3D 27 50 27 29    r(line[1])=='P')
008500:  20 7B 0D 0A 20 20 20 20 20 20 20 20 70 61 75 73     {..        paus
008510:  65 3D 59 45 53 3B 0D 0A 20 20 20 20 20 20 20 20    e=YES;..        
008520:  63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20    continue;..     
008530:  20 20 20 7D 0D 0A 20 20 20 20 20 20 7D 0D 0A 23       }..      }..#
008540:  69 66 6E 64 65 66 20 4C 49 4E 4B 0D 0A 20 20 20    ifndef LINK..   
008550:  20 69 66 28 74 6F 75 70 70 65 72 28 6C 69 6E 65     if(toupper(line
008560:  5B 31 5D 29 3D 3D 27 42 27 29 20 7B 0D 0A 20 20    [1])=='B') {..  
008570:  20 20 20 20 62 75 6D 70 28 30 29 3B 20 62 75 6D        bump(0); bum
008580:  70 28 32 29 3B 0D 0A 20 20 20 20 20 20 69 66 28    p(2);..      if(
008590:  6E 75 6D 62 65 72 28 26 6E 78 74 6C 61 62 29 29    number(&nxtlab))
0085A0:  20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20     continue;..    
0085B0:  20 20 7D 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 20      }..#endif..   
0085C0:  20 73 6F 75 74 28 22 75 73 61 67 65 3A 20 63 63     sout("usage: cc
0085D0:  20 5B 66 69 6C 65 5D 2E 2E 2E 20 5B 2D 6D 5D 20     [file]... [-m] 
0085E0:  5B 2D 61 5D 20 5B 2D 70 5D 20 5B 2D 6C 23 5D 22    [-a] [-p] [-l#]"
0085F0:  2C 20 73 74 64 65 72 72 29 3B 0D 0A 23 69 66 64    , stderr);..#ifd
008600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
008610:  07 00 01 00 02 09 52 E5 07 00 41 02 00 00 00 02    ......R...A.....
008620:  07 00 46 02 00 00 00 02 07 00 42 02 00 00 00 02    ..F.......B.....
008630:  07 00 47 02 00 00 00 02 07 00 43 02 00 00 00 02    ..G.......C.....
008640:  07 00 48 02 00 00 00 02 07 00 44 02 00 00 00 02    ..H.......D.....
008650:  07 00 49 02 00 00 00 02 07 00 45 02 00 00 00 02    ..I.......E.....
008660:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008670:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008680:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008690:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008700:  0A 20 20 20 20 65 72 72 6F 72 28 22 6F 70 65 6E    .    error("open
008710:  20 66 61 69 6C 75 72 65 20 6F 6E 20 69 6E 63 6C     failure on incl
008720:  75 64 65 20 66 69 6C 65 22 29 3B 0D 0A 20 20 20    ude file");..   
008730:  20 7D 0D 0A 20 20 6B 69 6C 6C 28 29 3B 09 09 09     }..  kill();...
008740:  2F 2A 20 63 6C 65 61 72 20 72 65 73 74 20 6F 66    /* clear rest of
008750:  20 6C 69 6E 65 20 2A 2F 0D 0A 09 09 09 09 2F 2A     line */....../*
008760:  20 73 6F 20 6E 65 78 74 20 72 65 61 64 20 77 69     so next read wi
008770:  6C 6C 20 63 6F 6D 65 20 66 72 6F 6D 20 2A 2F 0D    ll come from */.
008780:  0A 09 09 09 09 2F 2A 20 6E 65 77 20 66 69 6C 65    ...../* new file
008790:  20 28 69 66 20 6F 70 65 6E 29 20 2A 2F 0D 0A 20     (if open) */.. 
0087A0:  20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73     }..../*..** tes
0087B0:  74 20 66 6F 72 20 67 6C 6F 62 61 6C 20 64 65 63    t for global dec
0087C0:  6C 61 72 61 74 69 6F 6E 73 0D 0A 2A 2F 0D 0A 64    larations..*/..d
0087D0:  6F 64 65 63 6C 61 72 65 28 63 6C 61 73 73 29 20    odeclare(class) 
0087E0:  69 6E 74 20 63 6C 61 73 73 3B 20 7B 0D 0A 20 20    int class; {..  
0087F0:  69 66 28 61 6D 61 74 63 68 28 22 63 68 61 72 22    if(amatch("char"
008800:  2C 34 29 29 20 7B 0D 0A 20 20 20 20 64 65 63 6C    ,4)) {..    decl
008810:  67 6C 62 28 43 43 48 41 52 2C 20 63 6C 61 73 73    glb(CCHAR, class
008820:  29 3B 0D 0A 20 20 20 20 6E 73 28 29 3B 0D 0A 20    );..    ns();.. 
008830:  20 20 20 72 65 74 75 72 6E 20 31 3B 0D 0A 20 20       return 1;..  
008840:  20 20 7D 0D 0A 20 20 65 6C 73 65 20 69 66 28 28      }..  else if((
008850:  61 6D 61 74 63 68 28 22 69 6E 74 22 2C 33 29 29    amatch("int",3))
008860:  7C 28 63 6C 61 73 73 3D 3D 45 58 54 45 52 4E 41    |(class==EXTERNA
008870:  4C 29 29 20 7B 0D 0A 20 20 20 20 64 65 63 6C 67    L)) {..    declg
008880:  6C 62 28 43 49 4E 54 2C 20 63 6C 61 73 73 29 3B    lb(CINT, class);
008890:  0D 0A 20 20 20 20 6E 73 28 29 3B 0D 0A 20 20 20    ..    ns();..   
0088A0:  20 72 65 74 75 72 6E 20 31 3B 0D 0A 20 20 20 20     return 1;..    
0088B0:  7D 0D 0A 20 20 72 65 74 75 72 6E 20 30 3B 0D 0A    }..  return 0;..
0088C0:  20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 64 65      }..../*..** de
0088D0:  6C 63 61 72 65 20 61 20 73 74 61 74 69 63 20 76    lcare a static v
0088E0:  61 72 69 61 62 6C 65 0D 0A 2A 2F 0D 0A 64 65 63    ariable..*/..dec
0088F0:  6C 67 6C 62 28 74 79 70 65 2C 20 63 6C 61 73 73    lglb(type, class
008900:  20 20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69       }..    else i
008910:  6E 69 74 28 73 69 7A 65 2C 20 69 64 65 6E 74 2C    nit(size, ident,
008920:  20 26 64 69 6D 29 3B 0D 0A 20 20 20 20 7D 0D 0A     &dim);..    }..
008930:  20 20 69 66 28 28 64 69 6D 20 3D 3D 20 2D 31 29      if((dim == -1)
008940:  26 28 64 69 6D 3D 3D 73 61 76 65 64 69 6D 29 29    &(dim==savedim))
008950:  20 7B 0D 0A 20 20 20 20 20 73 74 6F 77 6C 69 74     {..     stowlit
008960:  28 30 2C 20 73 69 7A 65 3D 42 50 57 29 3B 0D 0A    (0, size=BPW);..
008970:  20 20 20 20 69 64 65 6E 74 3D 50 4F 49 4E 54 45        ident=POINTE
008980:  52 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 64 75 6D    R;..    }..  dum
008990:  70 6C 69 74 73 28 73 69 7A 65 29 3B 0D 0A 20 20    plits(size);..  
0089A0:  64 75 6D 70 7A 65 72 6F 28 73 69 7A 65 2C 20 64    dumpzero(size, d
0089B0:  69 6D 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 69    im);..  return i
0089C0:  64 65 6E 74 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A    dent;..  }..../*
0089D0:  0D 0A 2A 2A 20 65 76 61 6C 75 61 74 65 20 6F 6E    ..** evaluate on
0089E0:  65 20 69 6E 69 74 69 61 6C 69 7A 65 72 0D 0A 2A    e initializer..*
0089F0:  2F 0D 0A 69 6E 69 74 28 73 69 7A 65 2C 20 69 64    /..init(size, id
008A00:  65 6E 74 2C 20 64 69 6D 29 20 69 6E 74 20 73 69    ent, dim) int si
008A10:  7A 65 2C 20 69 64 65 6E 74 2C 20 2A 64 69 6D 3B    ze, ident, *dim;
008A20:  20 7B 0D 0A 20 20 69 6E 74 20 76 61 6C 75 65 3B     {..  int value;
008A30:  0D 0A 20 20 69 66 28 71 73 74 72 28 26 76 61 6C    ..  if(qstr(&val
008A40:  75 65 29 29 20 7B 0D 0A 20 20 20 20 69 66 28 28    ue)) {..    if((
008A50:  69 64 65 6E 74 3D 3D 56 41 52 49 41 42 4C 45 29    ident==VARIABLE)
008A60:  7C 28 73 69 7A 65 21 3D 31 29 29 0D 0A 20 20 20    |(size!=1))..   
008A70:  20 20 20 65 72 72 6F 72 28 22 6D 75 73 74 20 61       error("must a
008A80:  73 73 69 67 6E 20 74 6F 20 63 68 61 72 20 70 6F    ssign to char po
008A90:  69 6E 74 65 72 20 6F 72 20 61 72 72 61 79 22 29    inter or array")
008AA0:  3B 0D 0A 20 20 20 20 2A 64 69 6D 20 3D 20 2A 64    ;..    *dim = *d
008AB0:  69 6D 20 2D 20 28 6C 69 74 70 74 72 20 2D 20 76    im - (litptr - v
008AC0:  61 6C 75 65 29 3B 0D 0A 20 20 20 20 69 66 28 69    alue);..    if(i
008AD0:  64 65 6E 74 3D 3D 50 4F 49 4E 54 45 52 29 20 70    dent==POINTER) p
008AE0:  6F 69 6E 74 28 29 3B 0D 0A 20 20 20 20 7D 0D 0A    oint();..    }..
008AF0:  20 20 65 6C 73 65 20 69 66 28 63 6F 6E 73 74 65      else if(conste
008B00:  29 20 20 69 6E 74 20 74 79 70 65 2C 20 63 6C 61    )  int type, cla
008B10:  73 73 3B 20 7B 0D 0A 20 20 69 6E 74 20 6B 2C 20    ss; {..  int k, 
008B20:  6A 3B 0D 0A 20 20 77 68 69 6C 65 28 31 29 20 7B    j;..  while(1) {
008B30:  0D 0A 20 20 20 20 69 66 28 65 6E 64 73 74 28 29    ..    if(endst()
008B40:  29 20 72 65 74 75 72 6E 3B 09 09 09 2F 2A 20 64    ) return;.../* d
008B50:  6F 20 6C 69 6E 65 20 2A 2F 0D 0A 20 20 20 20 69    o line */..    i
008B60:  66 28 6D 61 74 63 68 28 22 28 2A 22 29 7C 6D 61    f(match("(*")|ma
008B70:  74 63 68 28 22 2A 22 29 29 20 7B 0D 0A 20 20 20    tch("*")) {..   
008B80:  20 20 20 6A 3D 50 4F 49 4E 54 45 52 3B 0D 0A 20       j=POINTER;.. 
008B90:  20 20 20 20 20 6B 3D 30 3B 0D 0A 20 20 20 20 20         k=0;..     
008BA0:  20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 7B 0D 0A     }..    else {..
008BB0:  20 20 20 20 20 20 6A 3D 56 41 52 49 41 42 4C 45          j=VARIABLE
008BC0:  3B 0D 0A 20 20 20 20 20 20 6B 3D 31 3B 0D 0A 20    ;..      k=1;.. 
008BD0:  20 20 20 20 20 7D 0D 0A 20 20 20 20 69 66 20 28         }..    if (
008BE0:  73 79 6D 6E 61 6D 65 28 73 73 6E 61 6D 65 2C 20    symname(ssname, 
008BF0:  59 45 53 29 3D 3D 30 29 20 69 6C 6C 6E 61 6D 65    YES)==0) illname
008C00:  28 29 3B 0D 0A 20 20 20 20 69 66 28 66 69 6E 64    ();..    if(find
008C10:  67 6C 62 28 73 73 6E 61 6D 65 29 29 20 6D 75 6C    glb(ssname)) mul
008C20:  74 69 64 65 66 28 73 73 6E 61 6D 65 29 3B 0D 0A    tidef(ssname);..
008C30:  20 20 20 20 69 66 28 6D 61 74 63 68 28 22 29 22        if(match(")"
008C40:  29 29 20 3B 0D 0A 20 20 20 20 69 66 28 6D 61 74    )) ;..    if(mat
008C50:  63 68 28 22 28 29 22 29 29 20 6A 3D 46 55 4E 43    ch("()")) j=FUNC
008C60:  54 49 4F 4E 3B 0D 0A 20 20 20 20 65 6C 73 65 20    TION;..    else 
008C70:  69 66 20 28 6D 61 74 63 68 28 22 5B 22 29 29 20    if (match("[")) 
008C80:  7B 0D 0A 20 20 20 20 20 20 70 61 65 72 72 6F 72    {..      paerror
008C90:  28 6A 29 3B 0D 0A 20 20 20 20 20 20 6B 3D 6E 65    (j);..      k=ne
008CA0:  65 64 73 75 62 28 29 3B 09 09 09 2F 2A 20 67 65    edsub();.../* ge
008CB0:  74 20 73 69 7A 65 20 2A 2F 0D 0A 20 20 20 20 20    t size */..     
008CC0:  20 6A 3D 41 52 52 41 59 3B 09 09 09 09 2F 2A 20     j=ARRAY;..../* 
008CD0:  21 30 3D 61 72 72 61 79 20 2A 2F 0D 0A 20 20 20    !0=array */..   
008CE0:  20 20 20 7D 0D 0A 20 20 20 20 69 66 28 63 6C 61       }..    if(cla
008CF0:  73 73 3D 3D 45 58 54 45 52 4E 41 4C 29 20 65 78    ss==EXTERNAL) ex
008D00:  78 70 72 28 26 76 61 6C 75 65 29 29 20 7B 0D 0A    xpr(&value)) {..
008D10:  20 20 20 20 69 66 28 69 64 65 6E 74 3D 3D 50 4F        if(ident==PO
008D20:  49 4E 54 45 52 29 20 65 72 72 6F 72 28 22 63 61    INTER) error("ca
008D30:  6E 6E 6F 74 20 61 73 73 69 67 6E 20 74 6F 20 70    nnot assign to p
008D40:  6F 69 6E 74 65 72 22 29 3B 0D 0A 20 20 20 20 73    ointer");..    s
008D50:  74 6F 77 6C 69 74 28 76 61 6C 75 65 2C 20 73 69    towlit(value, si
008D60:  7A 65 29 3B 0D 0A 20 20 20 20 2A 64 69 6D 20 3D    ze);..    *dim =
008D70:  20 2A 64 69 6D 20 2D 20 31 3B 0D 0A 20 20 20 20     *dim - 1;..    
008D80:  7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A    }..  }..../*..**
008D90:  20 67 65 74 20 72 65 71 75 69 72 65 64 20 61 72     get required ar
008DA0:  72 61 79 20 73 69 7A 65 0D 0A 2A 2F 0D 0A 6E 65    ray size..*/..ne
008DB0:  65 64 73 75 62 28 29 20 20 7B 0D 0A 20 20 69 6E    edsub()  {..  in
008DC0:  74 20 76 61 6C 3B 0D 0A 20 20 69 66 28 6D 61 74    t val;..  if(mat
008DD0:  63 68 28 22 5D 22 29 29 20 72 65 74 75 72 6E 20    ch("]")) return 
008DE0:  30 3B 09 2F 2A 20 6E 75 6C 6C 20 73 69 7A 65 20    0;./* null size 
008DF0:  2A 2F 0D 0A 20 20 69 66 20 28 63 6F 6E 73 74 65    */..  if (conste
008E00:  78 70 72 28 26 76 61 6C 29 3D 3D 30 29 20 76 61    xpr(&val)==0) va
008E10:  6C 3D 31 3B 0D 0A 20 20 69 66 20 28 76 61 6C 3C    l=1;..  if (val<
008E20:  30 29 20 7B 0D 0A 20 20 20 20 65 72 72 6F 72 28    0) {..    error(
008E30:  22 6E 65 67 61 74 69 76 65 20 73 69 7A 65 20 69    "negative size i
008E40:  6C 6C 65 67 61 6C 22 29 3B 0D 0A 20 20 20 20 76    llegal");..    v
008E50:  61 6C 20 3D 20 2D 76 61 6C 3B 0D 0A 20 20 20 20    al = -val;..    
008E60:  7D 0D 0A 20 20 6E 65 65 64 74 6F 6B 65 6E 28 22    }..  needtoken("
008E70:  5D 22 29 3B 09 09 2F 2A 20 66 6F 72 63 65 20 73    ]");../* force s
008E80:  69 6E 67 6C 65 20 64 69 6D 65 6E 73 69 6F 6E 20    ingle dimension 
008E90:  2A 2F 0D 0A 20 20 72 65 74 75 72 6E 20 76 61 6C    */..  return val
008EA0:  3B 09 09 09 2F 2A 20 61 6E 64 20 72 65 74 75 72    ;.../* and retur
008EB0:  6E 20 73 69 7A 65 20 2A 2F 0D 0A 20 20 7D 0D 0A    n size */..  }..
008EC0:  0D 0A 2F 2A 0D 0A 2A 2A 20 62 65 67 69 6E 20 61    ../*..** begin a
008ED0:  20 66 75 6E 63 74 69 6F 6E 0D 0A 2A 2A 0D 0A 2A     function..**..*
008EE0:  2A 20 63 61 6C 6C 65 64 20 66 72 6F 6D 20 22 70    * called from "p
008EF0:  61 72 73 65 22 20 61 6E 64 20 74 72 69 65 73 20    arse" and tries 
008F00:  74 65 72 6E 61 6C 28 73 73 6E 61 6D 65 29 3B 0D    ternal(ssname);.
008F10:  0A 20 20 20 20 65 6C 73 65 20 69 66 28 6A 21 3D    .    else if(j!=
008F20:  46 55 4E 43 54 49 4F 4E 29 20 6A 3D 69 6E 69 74    FUNCTION) j=init
008F30:  69 61 6C 73 28 74 79 70 65 3E 3E 32 2C 20 6A 2C    ials(type>>2, j,
008F40:  20 6B 29 3B 0D 0A 20 20 20 20 61 64 64 73 79 6D     k);..    addsym
008F50:  28 73 73 6E 61 6D 65 2C 20 6A 2C 20 74 79 70 65    (ssname, j, type
008F60:  2C 20 6B 2C 20 26 67 6C 62 70 74 72 2C 20 63 6C    , k, &glbptr, cl
008F70:  61 73 73 29 3B 0D 0A 20 20 20 20 69 66 20 28 6D    ass);..    if (m
008F80:  61 74 63 68 28 22 2C 22 29 3D 3D 30 29 20 72 65    atch(",")==0) re
008F90:  74 75 72 6E 3B 09 09 2F 2A 20 6D 6F 72 65 3F 20    turn;../* more? 
008FA0:  2A 2F 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A    */..    }..  }..
008FB0:  0D 0A 2F 2A 0D 0A 2A 2A 20 64 65 63 6C 61 72 65    ../*..** declare
008FC0:  20 6C 6F 63 61 6C 20 76 61 72 69 61 62 6C 65 73     local variables
008FD0:  0D 0A 2A 2F 0D 0A 64 65 63 6C 6C 6F 63 28 74 79    ..*/..declloc(ty
008FE0:  70 29 20 20 69 6E 74 20 74 79 70 3B 20 20 7B 0D    p)  int typ;  {.
008FF0:  0A 20 20 69 6E 74 20 6B 2C 6A 3B 0D 0A 20 20 69    .  int k,j;..  i
009000:  66 28 73 77 61 63 74 69 76 65 29 20 65 72 72 6F    f(swactive) erro
009010:  72 28 22 6E 6F 74 20 61 6C 6C 6F 77 65 64 20 69    r("not allowed i
009020:  6E 20 73 77 69 74 63 68 22 29 3B 0D 0A 23 69 66    n switch");..#if
009030:  64 65 66 20 53 54 47 4F 54 4F 0D 0A 20 20 69 66    def STGOTO..  if
009040:  28 6E 6F 6C 6F 63 29 20 65 72 72 6F 72 28 22 6E    (noloc) error("n
009050:  6F 74 20 61 6C 6C 6F 77 65 64 20 77 69 74 68 20    ot allowed with 
009060:  67 6F 74 6F 22 29 3B 0D 0A 23 65 6E 64 69 66 0D    goto");..#endif.
009070:  0A 20 20 69 66 28 64 65 63 6C 61 72 65 64 20 3C    .  if(declared <
009080:  20 30 29 20 65 72 72 6F 72 28 22 6D 75 73 74 20     0) error("must 
009090:  64 65 63 6C 61 72 65 20 66 69 72 73 74 20 69 6E    declare first in
0090A0:  20 62 6C 6F 63 6B 22 29 3B 0D 0A 20 20 77 68 69     block");..  whi
0090B0:  6C 65 28 31 29 20 7B 0D 0A 20 20 20 20 77 68 69    le(1) {..    whi
0090C0:  6C 65 28 31 29 20 7B 0D 0A 20 20 20 20 20 20 69    le(1) {..      i
0090D0:  66 28 65 6E 64 73 74 28 29 29 20 72 65 74 75 72    f(endst()) retur
0090E0:  6E 3B 0D 0A 20 20 20 20 20 20 69 66 28 6D 61 74    n;..      if(mat
0090F0:  63 68 28 22 2A 22 29 29 20 6A 3D 50 4F 49 4E 54    ch("*")) j=POINT
009100:  74 6F 20 6D 61 6B 65 20 61 20 66 75 6E 63 74 69    to make a functi
009110:  6F 6E 0D 0A 2A 2A 20 6F 75 74 20 6F 66 20 74 68    on..** out of th
009120:  65 20 66 6F 6C 6C 6F 77 69 6E 67 20 74 65 78 74    e following text
009130:  0D 0A 2A 2A 0D 0A 2A 2F 0D 0A 6E 65 77 66 75 6E    ..**..*/..newfun
009140:  63 28 29 20 20 7B 0D 0A 20 20 63 68 61 72 20 2A    c()  {..  char *
009150:  70 74 72 3B 0D 0A 23 69 66 64 65 66 20 53 54 47    ptr;..#ifdef STG
009160:  4F 54 4F 0D 0A 20 20 6E 6F 67 6F 20 20 3D 09 09    OTO..  nogo  =..
009170:  09 2F 2A 20 65 6E 61 62 6C 65 20 67 6F 74 6F 20    ./* enable goto 
009180:  73 74 61 74 65 6D 65 6E 74 73 20 2A 2F 0D 0A 20    statements */.. 
009190:  20 6E 6F 6C 6F 63 20 3D 20 30 3B 09 09 09 2F 2A     noloc = 0;.../*
0091A0:  20 65 6E 61 62 6C 65 20 62 6C 6F 63 6B 2D 6C 6F     enable block-lo
0091B0:  63 61 6C 20 64 65 63 6C 61 72 61 74 69 6F 6E 73    cal declarations
0091C0:  20 2A 2F 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 6C     */..#endif..  l
0091D0:  61 73 74 73 74 3D 09 09 09 2F 2A 20 6E 6F 20 73    astst=.../* no s
0091E0:  74 61 74 65 6D 65 6E 74 20 79 65 74 20 2A 2F 0D    tatement yet */.
0091F0:  0A 20 20 6C 69 74 70 74 72 3D 30 3B 09 09 09 2F    .  litptr=0;.../
009200:  2A 20 63 6C 65 61 72 20 6C 69 74 20 70 6F 6F 6C    * clear lit pool
009210:  20 2A 2F 0D 0A 20 20 6C 69 74 6C 61 62 3D 67 65     */..  litlab=ge
009220:  74 6C 61 62 65 6C 28 29 3B 09 09 2F 2A 20 6C 61    tlabel();../* la
009230:  62 65 6C 20 6E 65 78 74 20 6C 69 74 20 70 6F 6F    bel next lit poo
009240:  6C 20 2A 2F 0D 0A 20 20 6C 6F 63 70 74 72 3D 53    l */..  locptr=S
009250:  54 41 52 54 4C 4F 43 3B 09 09 2F 2A 20 63 6C 65    TARTLOC;../* cle
009260:  61 72 20 6C 6F 63 61 6C 20 76 61 72 69 61 62 6C    ar local variabl
009270:  65 73 20 2A 2F 0D 0A 20 20 69 66 28 6D 6F 6E 69    es */..  if(moni
009280:  74 6F 72 29 20 6C 6F 75 74 28 6C 69 6E 65 2C 20    tor) lout(line, 
009290:  73 74 64 65 72 72 29 3B 0D 0A 20 20 69 66 20 28    stderr);..  if (
0092A0:  73 79 6D 6E 61 6D 65 28 73 73 6E 61 6D 65 2C 20    symname(ssname, 
0092B0:  59 45 53 29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20    YES)==0) {..    
0092C0:  65 72 72 6F 72 28 22 69 6C 6C 65 67 61 6C 20 66    error("illegal f
0092D0:  75 6E 63 74 69 6F 6E 20 6F 72 20 64 65 63 6C 61    unction or decla
0092E0:  72 61 74 69 6F 6E 22 29 3B 0D 0A 20 20 20 20 6B    ration");..    k
0092F0:  69 6C 6C 28 29 3B 09 09 09 2F 2A 20 69 6E 76 61    ill();.../* inva
009300:  45 52 3B 0D 0A 20 20 20 20 20 20 65 6C 73 65 20    ER;..      else 
009310:  20 20 20 20 20 20 20 20 20 20 6A 3D 56 41 52 49              j=VARI
009320:  41 42 4C 45 3B 0D 0A 20 20 20 20 20 20 69 66 20    ABLE;..      if 
009330:  28 73 79 6D 6E 61 6D 65 28 73 73 6E 61 6D 65 2C    (symname(ssname,
009340:  20 59 45 53 29 3D 3D 30 29 20 69 6C 6C 6E 61 6D     YES)==0) illnam
009350:  65 28 29 3B 0D 0A 20 20 20 20 20 20 2F 2A 20 6E    e();..      /* n
009360:  6F 20 6D 75 6C 74 69 64 65 66 20 63 68 65 63 6B    o multidef check
009370:  2C 20 62 6C 6F 63 6B 2D 6C 6F 63 61 6C 73 20 61    , block-locals a
009380:  72 65 20 74 6F 67 65 74 68 65 72 20 2A 2F 0D 0A    re together */..
009390:  20 20 20 20 20 20 6B 3D 42 50 57 3B 0D 0A 20 20          k=BPW;..  
0093A0:  20 20 20 20 69 66 20 28 6D 61 74 63 68 28 22 5B        if (match("[
0093B0:  22 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 70    ")) {..        p
0093C0:  61 65 72 72 6F 72 28 6A 29 3B 0D 0A 20 20 20 20    aerror(j);..    
0093D0:  20 20 20 20 69 66 28 6B 3D 6E 65 65 64 73 75 62        if(k=needsub
0093E0:  28 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 20    ()) {..         
0093F0:  20 6A 3D 41 52 52 41 59 3B 0D 0A 20 20 20 20 20     j=ARRAY;..     
009400:  20 20 20 20 20 69 66 28 74 79 70 3D 3D 43 49 4E         if(typ==CIN
009410:  54 29 6B 3D 6B 3C 3C 4C 42 50 57 3B 0D 0A 20 20    T)k=k<<LBPW;..  
009420:  20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20            }..     
009430:  20 20 20 65 6C 73 65 20 7B 6A 3D 50 4F 49 4E 54       else {j=POINT
009440:  45 52 3B 20 6B 3D 42 50 57 3B 7D 0D 0A 20 20 20    ER; k=BPW;}..   
009450:  20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C         }..      el
009460:  73 65 20 69 66 28 28 74 79 70 3D 3D 43 43 48 41    se if((typ==CCHA
009470:  52 29 26 28 6A 3D 3D 56 41 52 49 41 42 4C 45 29    R)&(j==VARIABLE)
009480:  29 20 6B 3D 53 42 50 43 3B 0D 0A 20 20 20 20 20    ) k=SBPC;..     
009490:  20 64 65 63 6C 61 72 65 64 20 3D 20 64 65 63 6C     declared = decl
0094A0:  61 72 65 64 20 2B 20 6B 3B 0D 0A 20 20 20 20 20    ared + k;..     
0094B0:  20 61 64 64 73 79 6D 28 73 73 6E 61 6D 65 2C 20     addsym(ssname, 
0094C0:  6A 2C 20 74 79 70 2C 20 63 73 70 20 2D 20 64 65    j, typ, csp - de
0094D0:  63 6C 61 72 65 64 2C 20 26 6C 6F 63 70 74 72 2C    clared, &locptr,
0094E0:  20 41 55 54 4F 4D 41 54 49 43 29 3B 0D 0A 20 20     AUTOMATIC);..  
0094F0:  20 20 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20        break;..    
009500:  6C 69 64 61 74 65 20 6C 69 6E 65 20 2A 2F 0D 0A    lidate line */..
009510:  20 20 20 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20        return;..   
009520:  20 7D 0D 0A 20 20 69 66 28 66 75 6E 63 31 29 20     }..  if(func1) 
009530:  7B 0D 0A 20 20 20 20 70 6F 73 74 6C 61 62 65 6C    {..    postlabel
009540:  28 62 65 67 6C 61 62 29 3B 0D 0A 20 20 20 20 66    (beglab);..    f
009550:  75 6E 63 31 3D 30 3B 0D 0A 20 20 20 20 7D 0D 0A    unc1=0;..    }..
009560:  20 20 69 66 28 70 74 72 3D 66 69 6E 64 67 6C 62      if(ptr=findglb
009570:  28 73 73 6E 61 6D 65 29 29 20 7B 09 2F 2A 20 61    (ssname)) {./* a
009580:  6C 72 65 61 64 79 20 69 6E 20 73 79 6D 62 6F 6C    lready in symbol
009590:  20 74 61 62 6C 65 20 3F 20 2A 2F 0D 0A 20 20 20     table ? */..   
0095A0:  20 69 66 28 70 74 72 5B 49 44 45 4E 54 5D 21 3D     if(ptr[IDENT]!=
0095B0:  46 55 4E 43 54 49 4F 4E 29 20 20 20 20 20 20 20    FUNCTION)       
0095C0:  6D 75 6C 74 69 64 65 66 28 73 73 6E 61 6D 65 29    multidef(ssname)
0095D0:  3B 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 70    ;..    else if(p
0095E0:  74 72 5B 4F 46 46 53 45 54 5D 3D 3D 46 55 4E 43    tr[OFFSET]==FUNC
0095F0:  54 49 4F 4E 29 20 6D 75 6C 74 69 64 65 66 28 73    TION) multidef(s
009600:  73 6E 61 6D 65 29 3B 0D 0A 20 20 20 20 65 6C 73    sname);..    els
009610:  65 20 7B 0D 0A 20 20 20 20 20 20 2F 2A 20 65 61    e {..      /* ea
009620:  72 6C 69 65 72 20 61 73 73 75 6D 65 64 20 74 6F    rlier assumed to
009630:  20 62 65 20 61 20 66 75 6E 63 74 69 6F 6E 20 2A     be a function *
009640:  2F 0D 0A 20 20 20 20 20 20 70 74 72 5B 4F 46 46    /..      ptr[OFF
009650:  53 45 54 5D 3D 46 55 4E 43 54 49 4F 4E 3B 0D 0A    SET]=FUNCTION;..
009660:  20 20 20 20 20 20 70 74 72 5B 43 4C 41 53 53 5D          ptr[CLASS]
009670:  3D 53 54 41 54 49 43 3B 0D 0A 20 20 20 20 20 20    =STATIC;..      
009680:  7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65    }..    }..  else
009690:  0D 0A 20 20 20 20 61 64 64 73 79 6D 28 73 73 6E    ..    addsym(ssn
0096A0:  61 6D 65 2C 20 46 55 4E 43 54 49 4F 4E 2C 20 43    ame, FUNCTION, C
0096B0:  49 4E 54 2C 20 46 55 4E 43 54 49 4F 4E 2C 20 26    INT, FUNCTION, &
0096C0:  67 6C 62 70 74 72 2C 20 53 54 41 54 49 43 29 3B    glbptr, STATIC);
0096D0:  0D 0A 20 20 69 66 28 6D 61 74 63 68 28 22 28 22    ..  if(match("("
0096E0:  29 3D 3D 30 29 20 65 72 72 6F 72 28 22 6E 6F 20    )==0) error("no 
0096F0:  6F 70 65 6E 20 70 61 72 65 6E 22 29 3B 0D 0A 20    open paren");.. 
009700:  20 20 7D 0D 0A 20 20 20 20 69 66 20 28 6D 61 74      }..    if (mat
009710:  63 68 28 22 2C 22 29 3D 3D 30 29 20 72 65 74 75    ch(",")==0) retu
009720:  72 6E 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D    rn;..    }..  }.
009730:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 66    .../*..** test f
009740:  6F 72 20 70 6F 69 6E 74 65 72 20 61 72 72 61 79    or pointer array
009750:  20 28 75 6E 73 75 70 70 6F 72 74 65 64 29 0D 0A     (unsupported)..
009760:  2A 2F 0D 0A 70 61 65 72 72 6F 72 28 6A 29 20 69    */..paerror(j) i
009770:  6E 74 20 6A 3B 20 7B 0D 0A 20 20 69 66 28 6A 3D    nt j; {..  if(j=
009780:  3D 50 4F 49 4E 54 45 52 29 20 65 72 72 6F 72 28    =POINTER) error(
009790:  22 6E 6F 20 70 6F 69 6E 74 65 72 20 61 72 72 61    "no pointer arra
0097A0:  79 73 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A    ys");..  }..../*
0097B0:  0D 0A 2A 2A 20 69 6E 69 74 69 61 6C 69 7A 65 20    ..** initialize 
0097C0:  67 6C 6F 62 61 6C 20 6F 62 6A 65 63 74 73 0D 0A    global objects..
0097D0:  2A 2F 0D 0A 69 6E 69 74 69 61 6C 73 28 73 69 7A    */..initials(siz
0097E0:  65 2C 20 69 64 65 6E 74 2C 20 64 69 6D 29 20 69    e, ident, dim) i
0097F0:  6E 74 20 73 69 7A 65 2C 20 69 64 65 6E 74 2C 20    nt size, ident, 
009800:  64 69 6D 3B 20 7B 0D 0A 20 20 69 6E 74 20 73 61    dim; {..  int sa
009810:  76 65 64 69 6D 3B 0D 0A 20 20 6C 69 74 70 74 72    vedim;..  litptr
009820:  3D 30 3B 0D 0A 20 20 69 66 28 64 69 6D 3D 3D 30    =0;..  if(dim==0
009830:  29 20 64 69 6D 20 3D 20 2D 31 3B 0D 0A 20 20 73    ) dim = -1;..  s
009840:  61 76 65 64 69 6D 3D 64 69 6D 3B 0D 0A 20 20 65    avedim=dim;..  e
009850:  6E 74 72 79 28 29 3B 0D 0A 20 20 69 66 28 6D 61    ntry();..  if(ma
009860:  74 63 68 28 22 3D 22 29 29 20 7B 0D 0A 20 20 20    tch("=")) {..   
009870:  20 69 66 28 6D 61 74 63 68 28 22 7B 22 29 29 20     if(match("{")) 
009880:  7B 0D 0A 20 20 20 20 20 20 77 68 69 6C 65 28 64    {..      while(d
009890:  69 6D 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 69    im) {..        i
0098A0:  6E 69 74 28 73 69 7A 65 2C 20 69 64 65 6E 74 2C    nit(size, ident,
0098B0:  20 26 64 69 6D 29 3B 0D 0A 20 20 20 20 20 20 20     &dim);..       
0098C0:  20 69 66 28 6D 61 74 63 68 28 22 2C 22 29 3D 3D     if(match(",")==
0098D0:  30 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20    0) break;..     
0098E0:  20 20 20 7D 0D 0A 20 20 20 20 20 20 6E 65 65 64       }..      need
0098F0:  74 6F 6B 65 6E 28 22 7D 22 29 3B 0D 0A 20 20 20    token("}");..   
009900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
009910:  08 00 01 00 02 09 52 E5 08 00 41 02 00 00 00 02    ......R...A.....
009920:  08 00 46 02 00 00 00 02 08 00 42 02 00 00 00 02    ..F.......B.....
009930:  08 00 47 02 00 00 00 02 08 00 43 02 00 00 00 02    ..G.......C.....
009940:  08 00 48 02 00 00 00 02 08 00 44 02 00 00 00 02    ..H.......D.....
009950:  08 00 49 02 00 00 00 02 08 00 45 02 00 00 00 02    ..I.......E.....
009960:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009970:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009980:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009990:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009A00:  20 65 6E 74 72 79 28 29 3B 0D 0A 20 20 6C 6F 63     entry();..  loc
009A10:  70 74 72 3D 53 54 41 52 54 4C 4F 43 3B 0D 0A 20    ptr=STARTLOC;.. 
009A20:  20 61 72 67 73 74 6B 3D 30 3B 09 09 09 2F 2A 20     argstk=0;.../* 
009A30:  69 6E 69 74 20 61 72 67 20 63 6F 75 6E 74 20 2A    init arg count *
009A40:  2F 0D 0A 20 20 77 68 69 6C 65 28 6D 61 74 63 68    /..  while(match
009A50:  28 22 29 22 29 3D 3D 30 29 20 7B 09 2F 2A 20 74    (")")==0) {./* t
009A60:  68 65 6E 20 63 6F 75 6E 74 20 61 72 67 73 20 2A    hen count args *
009A70:  2F 0D 0A 20 20 20 20 2F 2A 20 61 6E 79 20 6C 65    /..    /* any le
009A80:  67 61 6C 20 6E 61 6D 65 20 62 75 6D 70 73 20 61    gal name bumps a
009A90:  72 67 20 63 6F 75 6E 74 20 2A 2F 0D 0A 20 20 20    rg count */..   
009AA0:  20 69 66 28 73 79 6D 6E 61 6D 65 28 73 73 6E 61     if(symname(ssna
009AB0:  6D 65 2C 20 59 45 53 29 29 20 7B 0D 0A 20 20 20    me, YES)) {..   
009AC0:  20 20 20 69 66 28 66 69 6E 64 6C 6F 63 28 73 73       if(findloc(ss
009AD0:  6E 61 6D 65 29 29 20 6D 75 6C 74 69 64 65 66 28    name)) multidef(
009AE0:  73 73 6E 61 6D 65 29 3B 0D 0A 20 20 20 20 20 20    ssname);..      
009AF0:  65 6C 73 65 20 7B 0D 0A 20 20 20 20 20 20 20 20    else {..        
009B00:  61 64 64 73 79 6D 28 73 73 6E 61 6D 65 2C 20 30    addsym(ssname, 0
009B10:  2C 20 30 2C 20 61 72 67 73 74 6B 2C 20 26 6C 6F    , 0, argstk, &lo
009B20:  63 70 74 72 2C 20 41 55 54 4F 4D 41 54 49 43 29    cptr, AUTOMATIC)
009B30:  3B 0D 0A 20 20 20 20 20 20 20 20 61 72 67 73 74    ;..        argst
009B40:  6B 3D 61 72 67 73 74 6B 2B 42 50 57 3B 0D 0A 20    k=argstk+BPW;.. 
009B50:  20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20           }..      
009B60:  7D 0D 0A 20 20 20 20 65 6C 73 65 20 7B 65 72 72    }..    else {err
009B70:  6F 72 28 22 69 6C 6C 65 67 61 6C 20 61 72 67 75    or("illegal argu
009B80:  6D 65 6E 74 20 6E 61 6D 65 22 29 3B 6A 75 6E 6B    ment name");junk
009B90:  28 29 3B 7D 0D 0A 20 20 20 20 62 6C 61 6E 6B 73    ();}..    blanks
009BA0:  28 29 3B 0D 0A 20 20 20 20 2F 2A 20 69 66 20 6E    ();..    /* if n
009BB0:  6F 74 20 63 6C 6F 73 69 6E 67 20 70 61 72 65 6E    ot closing paren
009BC0:  2C 20 73 68 6F 75 6C 64 20 62 65 20 63 6F 6D 6D    , should be comm
009BD0:  61 20 2A 2F 0D 0A 20 20 20 20 69 66 28 73 74 72    a */..    if(str
009BE0:  65 71 28 6C 70 74 72 2C 22 29 22 29 3D 3D 30 29    eq(lptr,")")==0)
009BF0:  20 7B 0D 0A 20 20 20 20 20 20 69 66 28 6D 61 74     {..      if(mat
009C00:  20 6E 6F 67 6F 3D 64 65 63 6C 61 72 65 64 3B 09     nogo=declared;.
009C10:  2F 2A 20 64 69 73 61 62 6C 65 20 67 6F 74 6F 20    /* disable goto 
009C20:  69 66 20 61 6E 79 20 2A 2F 0D 0A 23 65 6E 64 69    if any */..#endi
009C30:  66 0D 0A 20 20 20 20 20 20 63 73 70 3D 6D 6F 64    f..      csp=mod
009C40:  73 74 6B 28 63 73 70 20 2D 20 64 65 63 6C 61 72    stk(csp - declar
009C50:  65 64 2C 20 4E 4F 29 3B 0D 0A 20 20 20 20 20 20    ed, NO);..      
009C60:  64 65 63 6C 61 72 65 64 20 3D 20 2D 31 3B 0D 0A    declared = -1;..
009C70:  20 20 20 20 20 20 7D 0D 0A 20 20 20 20 69 66 28          }..    if(
009C80:  6D 61 74 63 68 28 22 7B 22 29 29 20 20 20 20 20    match("{"))     
009C90:  20 20 20 20 20 20 20 20 20 20 20 63 6F 6D 70 6F               compo
009CA0:  75 6E 64 28 29 3B 0D 0A 20 20 20 20 65 6C 73 65    und();..    else
009CB0:  20 69 66 28 61 6D 61 74 63 68 28 22 69 66 22 2C     if(amatch("if",
009CC0:  32 29 29 20 20 20 20 20 20 20 7B 64 6F 69 66 28    2))       {doif(
009CD0:  29 3B 09 09 6C 61 73 74 73 74 3D 53 54 49 46 3B    );..lastst=STIF;
009CE0:  7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 61    }..    else if(a
009CF0:  6D 61 74 63 68 28 22 77 68 69 6C 65 22 2C 35 29    match("while",5)
009D00:  29 20 20 20 20 7B 64 6F 77 68 69 6C 65 28 29 3B    )    {dowhile();
009D10:  09 09 6C 61 73 74 73 74 3D 53 54 57 48 49 4C 45    ..lastst=STWHILE
009D20:  3B 7D 0D 0A 23 69 66 64 65 66 20 53 54 44 4F 0D    ;}..#ifdef STDO.
009D30:  0A 20 20 20 20 65 6C 73 65 20 69 66 28 61 6D 61    .    else if(ama
009D40:  74 63 68 28 22 64 6F 22 2C 32 29 29 20 20 20 20    tch("do",2))    
009D50:  20 20 20 7B 64 6F 64 6F 28 29 3B 09 09 6C 61 73       {dodo();..las
009D60:  74 73 74 3D 53 54 44 4F 3B 7D 0D 0A 23 65 6E 64    tst=STDO;}..#end
009D70:  69 66 0D 0A 23 69 66 64 65 66 20 53 54 46 4F 52    if..#ifdef STFOR
009D80:  0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 61 6D    ..    else if(am
009D90:  61 74 63 68 28 22 66 6F 72 22 2C 33 29 29 09 20    atch("for",3)). 
009DA0:  20 7B 64 6F 66 6F 72 28 29 3B 09 09 6C 61 73 74     {dofor();..last
009DB0:  73 74 3D 53 54 46 4F 52 3B 7D 0D 0A 23 65 6E 64    st=STFOR;}..#end
009DC0:  69 66 0D 0A 23 69 66 64 65 66 20 53 54 53 57 49    if..#ifdef STSWI
009DD0:  54 43 48 0D 0A 20 20 20 20 65 6C 73 65 20 69 66    TCH..    else if
009DE0:  28 61 6D 61 74 63 68 28 22 73 77 69 74 63 68 22    (amatch("switch"
009DF0:  2C 36 29 29 09 20 20 7B 64 6F 73 77 69 74 63 68    ,6)).  {doswitch
009E00:  63 68 28 22 2C 22 29 3D 3D 30 29 20 65 72 72 6F    ch(",")==0) erro
009E10:  72 28 22 6E 6F 20 63 6F 6D 6D 61 22 29 3B 0D 0A    r("no comma");..
009E20:  20 20 20 20 20 20 7D 0D 0A 20 20 20 20 69 66 28          }..    if(
009E30:  65 6E 64 73 74 28 29 29 20 62 72 65 61 6B 3B 0D    endst()) break;.
009E40:  0A 20 20 20 20 7D 0D 0A 20 20 63 73 70 3D 30 3B    .    }..  csp=0;
009E50:  09 09 09 2F 2A 20 70 72 65 73 65 74 20 73 74 61    .../* preset sta
009E60:  63 6B 20 70 74 72 20 2A 2F 0D 0A 20 20 61 72 67    ck ptr */..  arg
009E70:  74 6F 70 3D 61 72 67 73 74 6B 3B 0D 0A 20 20 77    top=argstk;..  w
009E80:  68 69 6C 65 28 61 72 67 73 74 6B 29 20 7B 0D 0A    hile(argstk) {..
009E90:  20 20 20 20 2F 2A 20 6E 6F 77 20 6C 65 74 20 75        /* now let u
009EA0:  73 65 72 20 64 65 63 6C 61 72 65 20 77 68 61 74    ser declare what
009EB0:  20 74 79 70 65 73 20 6F 66 20 74 68 69 6E 67 73     types of things
009EC0:  20 2A 2F 0D 0A 20 20 20 20 2F 2A 20 20 20 20 20     */..    /*     
009ED0:  20 74 68 6F 73 65 20 61 72 67 75 6D 65 6E 74 73     those arguments
009EE0:  20 77 65 72 65 20 2A 2F 0D 0A 20 20 20 20 69 66     were */..    if
009EF0:  28 61 6D 61 74 63 68 28 22 63 68 61 72 22 2C 34    (amatch("char",4
009F00:  29 29 20 20 20 20 20 7B 64 6F 61 72 67 73 28 43    ))     {doargs(C
009F10:  43 48 41 52 29 3B 6E 73 28 29 3B 7D 0D 0A 20 20    CHAR);ns();}..  
009F20:  20 20 65 6C 73 65 20 69 66 28 61 6D 61 74 63 68      else if(amatch
009F30:  28 22 69 6E 74 22 2C 33 29 29 20 7B 64 6F 61 72    ("int",3)) {doar
009F40:  67 73 28 43 49 4E 54 29 3B 6E 73 28 29 3B 7D 0D    gs(CINT);ns();}.
009F50:  0A 20 20 20 20 65 6C 73 65 20 7B 65 72 72 6F 72    .    else {error
009F60:  28 22 77 72 6F 6E 67 20 6E 75 6D 62 65 72 20 6F    ("wrong number o
009F70:  66 20 61 72 67 75 6D 65 6E 74 73 22 29 3B 62 72    f arguments");br
009F80:  65 61 6B 3B 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20    eak;}..    }..  
009F90:  73 74 61 74 65 6D 65 6E 74 28 29 3B 0D 0A 23 69    statement();..#i
009FA0:  66 64 65 66 20 53 54 47 4F 54 4F 0D 0A 20 20 69    fdef STGOTO..  i
009FB0:  66 28 6C 61 73 74 73 74 20 21 3D 20 53 54 52 45    f(lastst != STRE
009FC0:  54 55 52 4E 20 26 26 20 6C 61 73 74 73 74 20 21    TURN && lastst !
009FD0:  3D 20 53 54 47 4F 54 4F 29 20 66 66 72 65 74 28    = STGOTO) ffret(
009FE0:  29 3B 0D 0A 23 65 6C 73 65 0D 0A 20 20 69 66 28    );..#else..  if(
009FF0:  6C 61 73 74 73 74 20 21 3D 20 53 54 52 45 54 55    lastst != STRETU
00A000:  28 29 3B 09 09 6C 61 73 74 73 74 3D 53 54 53 57    ();..lastst=STSW
00A010:  49 54 43 48 3B 7D 0D 0A 20 20 20 20 65 6C 73 65    ITCH;}..    else
00A020:  20 69 66 28 61 6D 61 74 63 68 28 22 63 61 73 65     if(amatch("case
00A030:  22 2C 34 29 29 09 20 20 7B 64 6F 63 61 73 65 28    ",4)).  {docase(
00A040:  29 3B 09 09 6C 61 73 74 73 74 3D 53 54 43 41 53    );..lastst=STCAS
00A050:  45 3B 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 66    E;}..    else if
00A060:  28 61 6D 61 74 63 68 28 22 64 65 66 61 75 6C 74    (amatch("default
00A070:  22 2C 37 29 29 20 20 7B 64 6F 64 65 66 61 75 6C    ",7))  {dodefaul
00A080:  74 28 29 3B 09 09 6C 61 73 74 73 74 3D 53 54 44    t();..lastst=STD
00A090:  45 46 3B 7D 0D 0A 23 65 6E 64 69 66 0D 0A 23 69    EF;}..#endif..#i
00A0A0:  66 64 65 66 20 53 54 47 4F 54 4F 0D 0A 20 20 20    fdef STGOTO..   
00A0B0:  20 65 6C 73 65 20 69 66 28 61 6D 61 74 63 68 28     else if(amatch(
00A0C0:  22 67 6F 74 6F 22 2C 20 34 29 29 09 20 20 7B 64    "goto", 4)).  {d
00A0D0:  6F 67 6F 74 6F 28 29 3B 09 09 6C 61 73 74 73 74    ogoto();..lastst
00A0E0:  3D 53 54 47 4F 54 4F 3B 7D 0D 0A 20 20 20 20 65    =STGOTO;}..    e
00A0F0:  6C 73 65 20 69 66 28 64 6F 6C 61 62 65 6C 28 29    lse if(dolabel()
00A100:  29 09 09 09 09 09 6C 61 73 74 73 74 3D 53 54 4C    ).....lastst=STL
00A110:  41 42 45 4C 3B 0D 0A 23 65 6E 64 69 66 0D 0A 20    ABEL;..#endif.. 
00A120:  20 20 20 65 6C 73 65 20 69 66 28 61 6D 61 74 63       else if(amatc
00A130:  68 28 22 72 65 74 75 72 6E 22 2C 36 29 29 09 20    h("return",6)). 
00A140:  20 7B 64 6F 72 65 74 75 72 6E 28 29 3B 6E 73 28     {doreturn();ns(
00A150:  29 3B 09 6C 61 73 74 73 74 3D 53 54 52 45 54 55    );.lastst=STRETU
00A160:  52 4E 3B 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69    RN;}..    else i
00A170:  66 28 61 6D 61 74 63 68 28 22 62 72 65 61 6B 22    f(amatch("break"
00A180:  2C 35 29 29 09 20 20 7B 64 6F 62 72 65 61 6B 28    ,5)).  {dobreak(
00A190:  29 3B 6E 73 28 29 3B 09 6C 61 73 74 73 74 3D 53    );ns();.lastst=S
00A1A0:  54 42 52 45 41 4B 3B 7D 0D 0A 20 20 20 20 65 6C    TBREAK;}..    el
00A1B0:  73 65 20 69 66 28 61 6D 61 74 63 68 28 22 63 6F    se if(amatch("co
00A1C0:  6E 74 69 6E 75 65 22 2C 38 29 29 20 7B 64 6F 63    ntinue",8)) {doc
00A1D0:  6F 6E 74 28 29 3B 6E 73 28 29 3B 09 6C 61 73 74    ont();ns();.last
00A1E0:  73 74 3D 53 54 43 4F 4E 54 3B 7D 0D 0A 20 20 20    st=STCONT;}..   
00A1F0:  20 65 6C 73 65 20 69 66 28 6D 61 74 63 68 28 22     else if(match("
00A200:  52 4E 29 20 66 66 72 65 74 28 29 3B 0D 0A 23 65    RN) ffret();..#e
00A210:  6E 64 69 66 0D 0A 20 20 69 66 28 6C 69 74 70 74    ndif..  if(litpt
00A220:  72 29 20 7B 0D 0A 20 20 20 20 70 72 69 6E 74 6C    r) {..    printl
00A230:  61 62 65 6C 28 6C 69 74 6C 61 62 29 3B 0D 0A 20    abel(litlab);.. 
00A240:  20 20 20 63 6F 6C 28 29 3B 0D 0A 20 20 20 20 64       col();..    d
00A250:  75 6D 70 6C 69 74 73 28 31 29 3B 09 09 2F 2A 20    umplits(1);../* 
00A260:  64 75 6D 70 20 6C 69 74 65 72 61 6C 73 20 2A 2F    dump literals */
00A270:  0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A    ..    }..  }....
00A280:  2F 2A 0D 0A 2A 2A 20 64 65 63 6C 61 72 65 20 61    /*..** declare a
00A290:  72 67 75 6D 65 6E 74 20 74 79 70 65 73 0D 0A 2A    rgument types..*
00A2A0:  2A 0D 0A 2A 2A 20 63 61 6C 6C 65 64 20 66 72 6F    *..** called fro
00A2B0:  6D 20 22 6E 65 77 66 75 6E 63 22 20 74 68 69 73    m "newfunc" this
00A2C0:  20 72 6F 75 74 69 6E 65 20 61 64 64 73 20 61 6E     routine adds an
00A2D0:  20 65 6E 74 72 79 20 69 6E 20 74 68 65 0D 0A 2A     entry in the..*
00A2E0:  2A 20 6C 6F 63 61 6C 20 73 79 6D 62 6F 6C 20 74    * local symbol t
00A2F0:  61 62 6C 65 20 66 6F 72 20 65 61 63 68 20 6E 61    able for each na
00A300:  6D 65 64 20 61 72 67 75 6D 65 6E 74 0D 0A 2A 2F    med argument..*/
00A310:  0D 0A 64 6F 61 72 67 73 28 74 29 20 69 6E 74 20    ..doargs(t) int 
00A320:  74 3B 20 7B 0D 0A 20 20 69 6E 74 20 6A 2C 20 6C    t; {..  int j, l
00A330:  65 67 61 6C 6E 61 6D 65 3B 0D 0A 20 20 63 68 61    egalname;..  cha
00A340:  72 20 63 2C 20 2A 61 72 67 70 74 72 3B 0D 0A 20    r c, *argptr;.. 
00A350:  20 77 68 69 6C 65 28 31 29 20 7B 0D 0A 20 20 20     while(1) {..   
00A360:  20 69 66 28 61 72 67 73 74 6B 3D 3D 30 29 20 72     if(argstk==0) r
00A370:  65 74 75 72 6E 3B 09 2F 2A 20 6E 6F 20 61 72 67    eturn;./* no arg
00A380:  75 6D 65 6E 74 73 20 2A 2F 0D 0A 20 20 20 20 69    uments */..    i
00A390:  66 28 6D 61 74 63 68 28 22 28 2A 22 29 7C 6D 61    f(match("(*")|ma
00A3A0:  74 63 68 28 22 2A 22 29 29 20 6A 3D 50 4F 49 4E    tch("*")) j=POIN
00A3B0:  54 45 52 3B 20 20 65 6C 73 65 20 6A 3D 56 41 52    TER;  else j=VAR
00A3C0:  49 41 42 4C 45 3B 0D 0A 20 20 20 20 69 66 28 28    IABLE;..    if((
00A3D0:  6C 65 67 61 6C 6E 61 6D 65 3D 73 79 6D 6E 61 6D    legalname=symnam
00A3E0:  65 28 73 73 6E 61 6D 65 2C 20 59 45 53 29 29 3D    e(ssname, YES))=
00A3F0:  3D 30 29 20 69 6C 6C 6E 61 6D 65 28 29 3B 0D 0A    =0) illname();..
00A400:  3B 22 29 29 09 09 20 20 65 72 72 66 6C 61 67 3D    ;"))..  errflag=
00A410:  30 3B 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28    0;..    else if(
00A420:  6D 61 74 63 68 28 22 23 61 73 6D 22 29 29 09 20    match("#asm")). 
00A430:  20 7B 64 6F 61 73 6D 28 29 3B 09 09 6C 61 73 74     {doasm();..last
00A440:  73 74 3D 53 54 41 53 4D 3B 7D 0D 0A 20 20 20 20    st=STASM;}..    
00A450:  65 6C 73 65 09 09 09 20 20 7B 64 6F 65 78 70 72    else...  {doexpr
00A460:  28 29 3B 6E 73 28 29 3B 09 6C 61 73 74 73 74 3D    ();ns();.lastst=
00A470:  53 54 45 58 50 52 3B 7D 0D 0A 20 20 20 20 7D 0D    STEXPR;}..    }.
00A480:  0A 20 20 72 65 74 75 72 6E 20 6C 61 73 74 73 74    .  return lastst
00A490:  3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A    ;..  }..../*..**
00A4A0:  20 73 65 6D 69 63 6F 6C 6F 6E 20 65 6E 66 6F 72     semicolon enfor
00A4B0:  63 65 72 0D 0A 2A 2A 0D 0A 2A 2A 20 63 61 6C 6C    cer..**..** call
00A4C0:  65 64 20 77 68 65 6E 65 76 65 72 20 73 79 6E 74    ed whenever synt
00A4D0:  61 78 20 72 65 71 75 69 72 65 73 20 61 20 73 65    ax requires a se
00A4E0:  6D 69 63 6F 6C 6F 6E 0D 0A 2A 2F 0D 0A 6E 73 28    micolon..*/..ns(
00A4F0:  29 20 20 7B 0D 0A 20 20 69 66 28 6D 61 74 63 68    )  {..  if(match
00A500:  28 22 3B 22 29 3D 3D 30 29 20 65 72 72 6F 72 28    (";")==0) error(
00A510:  22 6E 6F 20 73 65 6D 69 63 6F 6C 6F 6E 22 29 3B    "no semicolon");
00A520:  0D 0A 20 20 65 6C 73 65 20 65 72 72 66 6C 61 67    ..  else errflag
00A530:  3D 30 3B 0D 0A 20 20 7D 0D 0A 0D 0A 63 6F 6D 70    =0;..  }....comp
00A540:  6F 75 6E 64 28 29 20 20 7B 0D 0A 20 20 69 6E 74    ound()  {..  int
00A550:  20 73 61 76 63 73 70 3B 0D 0A 20 20 63 68 61 72     savcsp;..  char
00A560:  20 2A 73 61 76 6C 6F 63 3B 0D 0A 20 20 73 61 76     *savloc;..  sav
00A570:  63 73 70 3D 63 73 70 3B 0D 0A 20 20 73 61 76 6C    csp=csp;..  savl
00A580:  6F 63 3D 6C 6F 63 70 74 72 3B 0D 0A 20 20 64 65    oc=locptr;..  de
00A590:  63 6C 61 72 65 64 3D 30 3B 09 09 09 2F 2A 20 6D    clared=0;.../* m
00A5A0:  61 79 20 6E 6F 77 20 64 65 63 6C 61 72 65 20 6C    ay now declare l
00A5B0:  6F 63 61 6C 20 76 61 72 69 61 62 6C 65 73 20 2A    ocal variables *
00A5C0:  2F 0D 0A 20 20 2B 2B 6E 63 6D 70 3B 09 09 09 2F    /..  ++ncmp;.../
00A5D0:  2A 20 6E 65 77 20 6C 65 76 65 6C 20 6F 70 65 6E    * new level open
00A5E0:  20 2A 2F 0D 0A 20 20 77 68 69 6C 65 20 28 6D 61     */..  while (ma
00A5F0:  74 63 68 28 22 7D 22 29 3D 3D 30 29 0D 0A 20 20    tch("}")==0)..  
00A600:  20 20 20 20 69 66 28 6D 61 74 63 68 28 22 29 22        if(match(")"
00A610:  29 29 20 3B 0D 0A 20 20 20 20 69 66 28 6D 61 74    )) ;..    if(mat
00A620:  63 68 28 22 28 29 22 29 29 20 3B 0D 0A 20 20 20    ch("()")) ;..   
00A630:  20 69 66 28 6D 61 74 63 68 28 22 5B 22 29 29 20     if(match("[")) 
00A640:  7B 0D 0A 20 20 20 20 20 20 70 61 65 72 72 6F 72    {..      paerror
00A650:  28 6A 29 3B 0D 0A 20 20 20 20 20 20 77 68 69 6C    (j);..      whil
00A660:  65 28 69 6E 62 79 74 65 28 29 21 3D 27 5D 27 29    e(inbyte()!=']')
00A670:  20 69 66 28 65 6E 64 73 74 28 29 29 20 62 72 65     if(endst()) bre
00A680:  61 6B 3B 09 2F 2A 20 73 6B 69 70 20 22 5B 2E 2E    ak;./* skip "[..
00A690:  2E 5D 22 20 2A 2F 0D 0A 20 20 20 20 20 20 6A 3D    .]" */..      j=
00A6A0:  50 4F 49 4E 54 45 52 3B 09 09 2F 2A 20 61 64 64    POINTER;../* add
00A6B0:  20 65 6E 74 72 79 20 61 73 20 70 6F 69 6E 74 65     entry as pointe
00A6C0:  72 20 2A 2F 0D 0A 20 20 20 20 20 20 7D 0D 0A 20    r */..      }.. 
00A6D0:  20 20 20 69 66 28 6C 65 67 61 6C 6E 61 6D 65 29       if(legalname)
00A6E0:  20 7B 0D 0A 20 20 20 20 20 20 69 66 28 61 72 67     {..      if(arg
00A6F0:  70 74 72 3D 66 69 6E 64 6C 6F 63 28 73 73 6E 61    ptr=findloc(ssna
00A700:  6D 65 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20    me)) {..        
00A710:  2F 2A 20 61 64 64 20 64 65 74 61 69 6C 73 20 6F    /* add details o
00A720:  66 20 74 79 70 65 20 61 6E 64 20 61 64 64 72 65    f type and addre
00A730:  73 73 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 61    ss */..        a
00A740:  72 67 70 74 72 5B 49 44 45 4E 54 5D 3D 6A 3B 0D    rgptr[IDENT]=j;.
00A750:  0A 20 20 20 20 20 20 20 20 61 72 67 70 74 72 5B    .        argptr[
00A760:  54 59 50 45 5D 3D 74 3B 0D 0A 20 20 20 20 20 20    TYPE]=t;..      
00A770:  20 20 70 75 74 69 6E 74 28 61 72 67 74 6F 70 2D      putint(argtop-
00A780:  67 65 74 69 6E 74 28 61 72 67 70 74 72 2B 4F 46    getint(argptr+OF
00A790:  46 53 45 54 2C 20 4F 46 46 53 49 5A 45 29 2C 20    FSET, OFFSIZE), 
00A7A0:  61 72 67 70 74 72 2B 4F 46 46 53 45 54 2C 20 4F    argptr+OFFSET, O
00A7B0:  46 46 53 49 5A 45 29 3B 0D 0A 20 20 20 20 20 20    FFSIZE);..      
00A7C0:  20 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20      }..      else 
00A7D0:  65 72 72 6F 72 28 22 6E 6F 74 20 61 6E 20 61 72    error("not an ar
00A7E0:  67 75 6D 65 6E 74 22 29 3B 0D 0A 20 20 20 20 20    gument");..     
00A7F0:  20 7D 0D 0A 20 20 20 20 61 72 67 73 74 6B 3D 61     }..    argstk=a
00A800:  20 20 69 66 28 65 6F 66 29 20 7B 0D 0A 20 20 20      if(eof) {..   
00A810:  20 20 20 65 72 72 6F 72 28 22 6E 6F 20 66 69 6E       error("no fin
00A820:  61 6C 20 7D 22 29 3B 0D 0A 20 20 20 20 20 20 62    al }");..      b
00A830:  72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A    reak;..      }..
00A840:  20 20 20 20 65 6C 73 65 20 73 74 61 74 65 6D 65        else stateme
00A850:  6E 74 28 29 3B 09 09 2F 2A 20 64 6F 20 6F 6E 65    nt();../* do one
00A860:  20 2A 2F 0D 0A 20 20 2D 2D 6E 63 6D 70 3B 09 09     */..  --ncmp;..
00A870:  09 2F 2A 20 63 6C 6F 73 65 20 63 75 72 72 65 6E    ./* close curren
00A880:  74 20 6C 65 76 65 6C 20 2A 2F 0D 0A 2F 2A 35 35    t level */../*55
00A890:  2A 2F 0D 0A 23 69 66 64 65 66 20 53 54 47 4F 54    */..#ifdef STGOT
00A8A0:  4F 0D 0A 20 20 69 66 28 6C 61 73 74 73 74 20 21    O..  if(lastst !
00A8B0:  3D 20 53 54 52 45 54 55 52 4E 20 26 26 20 6C 61    = STRETURN && la
00A8C0:  73 74 73 74 20 21 3D 20 53 54 47 4F 54 4F 29 0D    stst != STGOTO).
00A8D0:  0A 23 65 6C 73 65 0D 0A 20 20 69 66 28 6C 61 73    .#else..  if(las
00A8E0:  74 73 74 20 21 3D 20 53 54 52 45 54 55 52 4E 29    tst != STRETURN)
00A8F0:  0D 0A 23 65 6E 64 69 66 0D 0A 20 20 20 20 6D 6F    ..#endif..    mo
00A900:  64 73 74 6B 28 73 61 76 63 73 70 2C 20 4E 4F 29    dstk(savcsp, NO)
00A910:  3B 09 09 2F 2A 20 64 65 6C 65 74 65 20 6C 6F 63    ;../* delete loc
00A920:  61 6C 20 76 61 72 69 61 62 6C 65 20 73 70 61 63    al variable spac
00A930:  65 20 2A 2F 0D 0A 20 20 63 73 70 3D 73 61 76 63    e */..  csp=savc
00A940:  73 70 3B 0D 0A 2F 2A 35 35 2A 2F 0D 0A 23 69 66    sp;../*55*/..#if
00A950:  64 65 66 20 53 54 47 4F 54 4F 0D 0A 20 20 63 70    def STGOTO..  cp
00A960:  74 72 3D 73 61 76 6C 6F 63 3B 09 09 09 2F 2A 20    tr=savloc;.../* 
00A970:  72 65 74 61 69 6E 20 6C 61 62 65 6C 73 20 2A 2F    retain labels */
00A980:  0D 0A 20 20 77 68 69 6C 65 28 63 70 74 72 20 3C    ..  while(cptr <
00A990:  20 6C 6F 63 70 74 72 29 20 7B 0D 0A 20 20 20 20     locptr) {..    
00A9A0:  63 70 74 72 32 3D 6E 65 78 74 73 79 6D 28 63 70    cptr2=nextsym(cp
00A9B0:  74 72 29 3B 0D 0A 20 20 20 20 69 66 28 63 70 74    tr);..    if(cpt
00A9C0:  72 5B 49 44 45 4E 54 5D 20 3D 3D 20 4C 41 42 45    r[IDENT] == LABE
00A9D0:  4C 29 20 7B 0D 0A 20 20 20 20 20 20 77 68 69 6C    L) {..      whil
00A9E0:  65 28 63 70 74 72 20 3C 20 63 70 74 72 32 29 20    e(cptr < cptr2) 
00A9F0:  2A 73 61 76 6C 6F 63 2B 2B 20 3D 20 2A 63 70 74    *savloc++ = *cpt
00AA00:  72 67 73 74 6B 2D 42 50 57 3B 09 09 2F 2A 20 63    rgstk-BPW;../* c
00AA10:  6E 74 20 64 6F 77 6E 20 2A 2F 0D 0A 20 20 20 20    nt down */..    
00AA20:  69 66 28 65 6E 64 73 74 28 29 29 72 65 74 75 72    if(endst())retur
00AA30:  6E 3B 0D 0A 20 20 20 20 69 66 28 6D 61 74 63 68    n;..    if(match
00AA40:  28 22 2C 22 29 3D 3D 30 29 20 65 72 72 6F 72 28    (",")==0) error(
00AA50:  22 6E 6F 20 63 6F 6D 6D 61 22 29 3B 0D 0A 20 20    "no comma");..  
00AA60:  20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20      }..  }....>>> 
00AA70:  43 43 31 33 2E 43 20 36 38 32 35 0D 0A 2F 2A 0D    CC13.C 6825../*.
00AA80:  0A 2A 2A 20 73 74 61 74 65 6D 65 6E 74 20 70 61    .** statement pa
00AA90:  72 73 65 72 0D 0A 2A 2A 0D 0A 2A 2A 20 63 61 6C    rser..**..** cal
00AAA0:  6C 65 64 20 77 68 65 6E 65 76 65 72 20 73 79 6E    led whenever syn
00AAB0:  74 61 78 20 72 65 71 75 69 72 65 73 20 61 20 73    tax requires a s
00AAC0:  74 61 74 65 6D 65 6E 74 0D 0A 2A 2A 20 20 74 68    tatement..**  th
00AAD0:  69 73 20 72 6F 75 74 69 6E 65 20 70 65 72 66 6F    is routine perfo
00AAE0:  72 6D 73 20 74 68 61 74 20 73 74 61 74 65 6D 65    rms that stateme
00AAF0:  6E 74 0D 0A 2A 2A 20 20 61 6E 64 20 72 65 74 75    nt..**  and retu
00AB00:  72 6E 73 20 61 20 6E 75 6D 62 65 72 20 74 65 6C    rns a number tel
00AB10:  6C 69 6E 67 20 77 68 69 63 68 20 6F 6E 65 0D 0A    ling which one..
00AB20:  2A 2F 0D 0A 73 74 61 74 65 6D 65 6E 74 28 29 20    */..statement() 
00AB30:  7B 0D 0A 20 20 69 66 20 28 28 63 68 3D 3D 30 29    {..  if ((ch==0)
00AB40:  20 26 20 28 65 6F 66 29 29 20 72 65 74 75 72 6E     & (eof)) return
00AB50:  3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 61 6D 61    ;..  else if(ama
00AB60:  74 63 68 28 22 63 68 61 72 22 2C 34 29 29 20 20    tch("char",4))  
00AB70:  7B 64 65 63 6C 6C 6F 63 28 43 43 48 41 52 29 3B    {declloc(CCHAR);
00AB80:  6E 73 28 29 3B 7D 0D 0A 20 20 65 6C 73 65 20 69    ns();}..  else i
00AB90:  66 28 61 6D 61 74 63 68 28 22 69 6E 74 22 2C 33    f(amatch("int",3
00ABA0:  29 29 20 20 20 7B 64 65 63 6C 6C 6F 63 28 43 49    ))   {declloc(CI
00ABB0:  4E 54 29 3B 6E 73 28 29 3B 7D 0D 0A 20 20 65 6C    NT);ns();}..  el
00ABC0:  73 65 20 7B 0D 0A 20 20 20 20 69 66 28 64 65 63    se {..    if(dec
00ABD0:  6C 61 72 65 64 20 3E 3D 20 30 29 20 7B 0D 0A 23    lared >= 0) {..#
00ABE0:  69 66 64 65 66 20 53 54 47 4F 54 4F 0D 0A 20 20    ifdef STGOTO..  
00ABF0:  20 20 20 20 69 66 28 6E 63 6D 70 20 3E 20 31 29        if(ncmp > 1)
00AC00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00AC10:  09 00 01 00 02 09 52 E5 09 00 41 02 00 00 00 02    ......R...A.....
00AC20:  09 00 46 02 00 00 00 02 09 00 42 02 00 00 00 02    ..F.......B.....
00AC30:  09 00 47 02 00 00 00 02 09 00 43 02 00 00 00 02    ..G.......C.....
00AC40:  09 00 48 02 00 00 00 02 09 00 44 02 00 00 00 02    ..H.......D.....
00AC50:  09 00 49 02 00 00 00 02 09 00 45 02 00 00 00 02    ..I.......E.....
00AC60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00AC70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00AC80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00AC90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00ACF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00AD00:  72 2B 2B 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20    r++;..      }.. 
00AD10:  20 20 20 65 6C 73 65 20 63 70 74 72 3D 63 70 74       else cptr=cpt
00AD20:  72 32 3B 0D 0A 20 20 20 20 7D 0D 0A 23 65 6E 64    r2;..    }..#end
00AD30:  69 66 0D 0A 20 20 6C 6F 63 70 74 72 3D 73 61 76    if..  locptr=sav
00AD40:  6C 6F 63 3B 09 09 2F 2A 20 64 65 6C 65 74 65 20    loc;../* delete 
00AD50:  6C 6F 63 61 6C 20 73 79 6D 62 6F 6C 73 20 2A 2F    local symbols */
00AD60:  0D 0A 20 20 64 65 63 6C 61 72 65 64 20 3D 20 2D    ..  declared = -
00AD70:  31 3B 09 09 2F 2A 20 6D 61 79 20 6E 6F 74 20 64    1;../* may not d
00AD80:  65 63 6C 61 72 65 20 76 61 72 69 61 62 6C 65 73    eclare variables
00AD90:  20 2A 2F 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 69 66     */..  }....doif
00ADA0:  28 29 20 20 7B 0D 0A 20 20 69 6E 74 20 66 6C 61    ()  {..  int fla
00ADB0:  62 31 2C 66 6C 61 62 32 3B 0D 0A 20 20 66 6C 61    b1,flab2;..  fla
00ADC0:  62 31 3D 67 65 74 6C 61 62 65 6C 28 29 3B 09 09    b1=getlabel();..
00ADD0:  2F 2A 20 67 65 74 20 6C 61 62 65 6C 20 66 6F 72    /* get label for
00ADE0:  20 66 61 6C 73 65 20 62 72 61 6E 63 68 20 2A 2F     false branch */
00ADF0:  0D 0A 20 20 74 65 73 74 28 66 6C 61 62 31 2C 20    ..  test(flab1, 
00AE00:  59 45 53 29 3B 09 09 2F 2A 20 67 65 74 20 65 78    YES);../* get ex
00AE10:  70 72 65 73 73 69 6F 6E 2C 20 61 6E 64 20 62 72    pression, and br
00AE20:  61 6E 63 68 20 66 61 6C 73 65 20 2A 2F 0D 0A 20    anch false */.. 
00AE30:  20 73 74 61 74 65 6D 65 6E 74 28 29 3B 09 09 09     statement();...
00AE40:  2F 2A 20 69 66 20 74 72 75 65 2C 20 64 6F 20 61    /* if true, do a
00AE50:  20 73 74 61 74 65 6D 65 6E 74 20 2A 2F 0D 0A 20     statement */.. 
00AE60:  20 69 66 20 28 61 6D 61 74 63 68 28 22 65 6C 73     if (amatch("els
00AE70:  65 22 2C 34 29 3D 3D 30 29 20 7B 09 2F 2A 20 69    e",4)==0) {./* i
00AE80:  66 2E 2E 2E 65 6C 73 65 20 3F 20 2A 2F 0D 0A 20    f...else ? */.. 
00AE90:  20 20 20 2F 2A 20 73 69 6D 70 6C 65 20 22 69 66       /* simple "if
00AEA0:  22 2E 2E 2E 70 72 69 6E 74 20 66 61 6C 73 65 20    "...print false 
00AEB0:  6C 61 62 65 6C 20 2A 2F 0D 0A 20 20 20 20 70 6F    label */..    po
00AEC0:  73 74 6C 61 62 65 6C 28 66 6C 61 62 31 29 3B 0D    stlabel(flab1);.
00AED0:  0A 20 20 20 20 72 65 74 75 72 6E 3B 09 09 09 2F    .    return;.../
00AEE0:  2A 20 61 6E 64 20 65 78 69 74 20 2A 2F 0D 0A 20    * and exit */.. 
00AEF0:  20 20 20 7D 0D 0A 20 20 66 6C 61 62 32 3D 67 65       }..  flab2=ge
00AF00:  2F 2A 20 63 61 73 65 73 2C 20 65 74 63 2E 20 2A    /* cases, etc. *
00AF10:  2F 0D 0A 20 20 6A 75 6D 70 28 77 71 5B 57 51 45    /..  jump(wq[WQE
00AF20:  58 49 54 5D 29 3B 0D 0A 20 20 70 6F 73 74 6C 61    XIT]);..  postla
00AF30:  62 65 6C 28 65 6E 64 6C 61 62 29 3B 0D 0A 20 20    bel(endlab);..  
00AF40:  73 77 28 29 3B 09 09 09 09 2F 2A 20 6D 61 74 63    sw();..../* matc
00AF50:  68 20 63 61 73 65 73 20 2A 2F 0D 0A 20 20 77 68    h cases */..  wh
00AF60:  69 6C 65 28 73 77 70 74 72 20 3C 20 73 77 6E 65    ile(swptr < swne
00AF70:  78 74 29 20 7B 0D 0A 20 20 20 20 64 65 66 73 74    xt) {..    defst
00AF80:  6F 72 61 67 65 28 43 49 4E 54 3E 3E 32 29 3B 0D    orage(CINT>>2);.
00AF90:  0A 20 20 20 20 70 72 69 6E 74 6C 61 62 65 6C 28    .    printlabel(
00AFA0:  2A 73 77 70 74 72 2B 2B 29 3B 09 2F 2A 20 63 61    *swptr++);./* ca
00AFB0:  73 65 20 6C 61 62 65 6C 20 2A 2F 0D 0A 20 20 20    se label */..   
00AFC0:  20 6F 75 74 62 79 74 65 28 27 2C 27 29 3B 0D 0A     outbyte(',');..
00AFD0:  20 20 20 20 6F 75 74 64 65 63 28 2A 73 77 70 74        outdec(*swpt
00AFE0:  72 2B 2B 29 3B 09 09 2F 2A 20 63 61 73 65 20 76    r++);../* case v
00AFF0:  61 6C 75 65 20 2A 2F 0D 0A 20 20 20 20 6E 6C 28    alue */..    nl(
00B000:  29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 64 65 66    );..    }..  def
00B010:  73 74 6F 72 61 67 65 28 43 49 4E 54 3E 3E 32 29    storage(CINT>>2)
00B020:  3B 0D 0A 20 20 6F 75 74 64 65 63 28 30 29 3B 0D    ;..  outdec(0);.
00B030:  0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 69 66 28 73    .  nl();..  if(s
00B040:  77 64 65 66 61 75 6C 74 29 20 6A 75 6D 70 28 73    wdefault) jump(s
00B050:  77 64 65 66 61 75 6C 74 29 3B 0D 0A 20 20 70 6F    wdefault);..  po
00B060:  73 74 6C 61 62 65 6C 28 77 71 5B 57 51 45 58 49    stlabel(wq[WQEXI
00B070:  54 5D 29 3B 0D 0A 20 20 64 65 6C 77 68 69 6C 65    T]);..  delwhile
00B080:  28 29 3B 0D 0A 20 20 73 77 6E 65 78 74 3D 73 77    ();..  swnext=sw
00B090:  6E 65 78 3B 0D 0A 20 20 73 77 64 65 66 61 75 6C    nex;..  swdefaul
00B0A0:  74 3D 73 77 64 65 66 3B 0D 0A 20 20 73 77 61 63    t=swdef;..  swac
00B0B0:  74 69 76 65 3D 73 77 61 63 74 3B 0D 0A 20 20 7D    tive=swact;..  }
00B0C0:  0D 0A 0D 0A 64 6F 63 61 73 65 28 29 20 7B 0D 0A    ....docase() {..
00B0D0:  20 20 69 66 28 73 77 61 63 74 69 76 65 3D 3D 30      if(swactive==0
00B0E0:  29 20 65 72 72 6F 72 28 22 6E 6F 74 20 69 6E 20    ) error("not in 
00B0F0:  73 77 69 74 63 68 22 29 3B 0D 0A 20 20 69 66 28    switch");..  if(
00B100:  74 6C 61 62 65 6C 28 29 3B 0D 0A 23 69 66 64 65    tlabel();..#ifde
00B110:  66 20 53 54 47 4F 54 4F 0D 0A 20 20 69 66 28 28    f STGOTO..  if((
00B120:  6C 61 73 74 73 74 20 21 3D 20 53 54 52 45 54 55    lastst != STRETU
00B130:  52 4E 29 26 28 6C 61 73 74 73 74 20 21 3D 20 53    RN)&(lastst != S
00B140:  54 47 4F 54 4F 29 29 20 6A 75 6D 70 28 66 6C 61    TGOTO)) jump(fla
00B150:  62 32 29 3B 0D 0A 23 65 6C 73 65 0D 0A 20 20 69    b2);..#else..  i
00B160:  66 28 6C 61 73 74 73 74 20 21 3D 20 53 54 52 45    f(lastst != STRE
00B170:  54 55 52 4E 29 20 6A 75 6D 70 28 66 6C 61 62 32    TURN) jump(flab2
00B180:  29 3B 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 70 6F    );..#endif..  po
00B190:  73 74 6C 61 62 65 6C 28 66 6C 61 62 31 29 3B 09    stlabel(flab1);.
00B1A0:  09 2F 2A 20 70 72 69 6E 74 20 66 61 6C 73 65 20    ./* print false 
00B1B0:  6C 61 62 65 6C 20 2A 2F 0D 0A 20 20 73 74 61 74    label */..  stat
00B1C0:  65 6D 65 6E 74 28 29 3B 09 09 09 2F 2A 20 61 6E    ement();.../* an
00B1D0:  64 20 64 6F 20 22 65 6C 73 65 22 20 63 6C 61 75    d do "else" clau
00B1E0:  73 65 20 2A 2F 0D 0A 20 20 70 6F 73 74 6C 61 62    se */..  postlab
00B1F0:  65 6C 28 66 6C 61 62 32 29 3B 09 09 2F 2A 20 70    el(flab2);../* p
00B200:  72 69 6E 74 20 74 72 75 65 20 6C 61 62 65 6C 20    rint true label 
00B210:  2A 2F 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 65 78 70    */..  }....doexp
00B220:  72 28 29 20 7B 0D 0A 20 20 69 6E 74 20 63 6F 6E    r() {..  int con
00B230:  73 74 2C 20 76 61 6C 3B 0D 0A 20 20 63 68 61 72    st, val;..  char
00B240:  20 2A 62 65 66 6F 72 65 2C 20 2A 73 74 61 72 74     *before, *start
00B250:  3B 0D 0A 20 20 77 68 69 6C 65 28 31 29 20 7B 0D    ;..  while(1) {.
00B260:  0A 20 20 20 20 73 65 74 73 74 61 67 65 28 26 62    .    setstage(&b
00B270:  65 66 6F 72 65 2C 20 26 73 74 61 72 74 29 3B 0D    efore, &start);.
00B280:  0A 20 20 20 20 65 78 70 72 65 73 73 69 6F 6E 28    .    expression(
00B290:  26 63 6F 6E 73 74 2C 20 26 76 61 6C 29 3B 0D 0A    &const, &val);..
00B2A0:  20 20 20 20 63 6C 65 61 72 73 74 61 67 65 28 62        clearstage(b
00B2B0:  65 66 6F 72 65 2C 20 73 74 61 72 74 29 3B 0D 0A    efore, start);..
00B2C0:  20 20 20 20 69 66 28 63 68 20 21 3D 20 27 2C 27        if(ch != ','
00B2D0:  29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 62 75    ) break;..    bu
00B2E0:  6D 70 28 31 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20    mp(1);..    }.. 
00B2F0:  20 7D 0D 0A 0D 0A 64 6F 77 68 69 6C 65 28 29 20     }....dowhile() 
00B300:  73 77 6E 65 78 74 20 3E 20 73 77 65 6E 64 29 20    swnext > swend) 
00B310:  7B 0D 0A 20 20 20 20 65 72 72 6F 72 28 22 74 6F    {..    error("to
00B320:  6F 20 6D 61 6E 79 20 63 61 73 65 73 22 29 3B 0D    o many cases");.
00B330:  0A 20 20 20 20 72 65 74 75 72 6E 3B 0D 0A 20 20    .    return;..  
00B340:  20 20 7D 0D 0A 20 20 70 6F 73 74 6C 61 62 65 6C      }..  postlabel
00B350:  28 2A 73 77 6E 65 78 74 2B 2B 20 3D 20 67 65 74    (*swnext++ = get
00B360:  6C 61 62 65 6C 28 29 29 3B 0D 0A 20 20 63 6F 6E    label());..  con
00B370:  73 74 65 78 70 72 28 73 77 6E 65 78 74 2B 2B 29    stexpr(swnext++)
00B380:  3B 0D 0A 20 20 6E 65 65 64 74 6F 6B 65 6E 28 22    ;..  needtoken("
00B390:  3A 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 64    :");..  }....dod
00B3A0:  65 66 61 75 6C 74 28 29 20 7B 0D 0A 20 20 69 66    efault() {..  if
00B3B0:  28 73 77 61 63 74 69 76 65 29 20 7B 0D 0A 20 20    (swactive) {..  
00B3C0:  20 20 69 66 28 73 77 64 65 66 61 75 6C 74 29 20      if(swdefault) 
00B3D0:  65 72 72 6F 72 28 22 6D 75 6C 74 69 70 6C 65 20    error("multiple 
00B3E0:  64 65 66 61 75 6C 74 73 22 29 3B 0D 0A 20 20 20    defaults");..   
00B3F0:  20 7D 0D 0A 20 20 65 6C 73 65 20 65 72 72 6F 72     }..  else error
00B400:  28 22 6E 6F 74 20 69 6E 20 73 77 69 74 63 68 22    ("not in switch"
00B410:  29 3B 0D 0A 20 20 6E 65 65 64 74 6F 6B 65 6E 28    );..  needtoken(
00B420:  22 3A 22 29 3B 0D 0A 20 20 70 6F 73 74 6C 61 62    ":");..  postlab
00B430:  65 6C 28 73 77 64 65 66 61 75 6C 74 3D 67 65 74    el(swdefault=get
00B440:  6C 61 62 65 6C 28 29 29 3B 0D 0A 20 20 7D 0D 0A    label());..  }..
00B450:  23 65 6E 64 69 66 0D 0A 0D 0A 23 69 66 64 65 66    #endif....#ifdef
00B460:  20 53 54 47 4F 54 4F 0D 0A 64 6F 67 6F 74 6F 28     STGOTO..dogoto(
00B470:  29 20 7B 0D 0A 20 20 69 66 28 6E 6F 67 6F 20 3E    ) {..  if(nogo >
00B480:  20 30 29 20 65 72 72 6F 72 28 22 6E 6F 74 20 61     0) error("not a
00B490:  6C 6C 6F 77 65 64 20 77 69 74 68 20 62 6C 6F 63    llowed with bloc
00B4A0:  6B 2D 6C 6F 63 61 6C 73 22 29 3B 0D 0A 20 20 65    k-locals");..  e
00B4B0:  6C 73 65 20 6E 6F 6C 6F 63 20 3D 20 31 3B 0D 0A    lse noloc = 1;..
00B4C0:  20 20 69 66 28 73 79 6D 6E 61 6D 65 28 73 73 6E      if(symname(ssn
00B4D0:  61 6D 65 2C 20 59 45 53 29 29 20 6A 75 6D 70 28    ame, YES)) jump(
00B4E0:  61 64 64 6C 61 62 65 6C 28 29 29 3B 0D 0A 20 20    addlabel());..  
00B4F0:  65 6C 73 65 20 65 72 72 6F 72 28 22 62 61 64 20    else error("bad 
00B500:  20 7B 0D 0A 20 20 69 6E 74 20 77 71 5B 34 5D 3B     {..  int wq[4];
00B510:  09 09 09 2F 2A 20 61 6C 6C 6F 63 61 74 65 20 6C    .../* allocate l
00B520:  6F 63 61 6C 20 71 75 65 75 65 20 2A 2F 0D 0A 20    ocal queue */.. 
00B530:  20 61 64 64 77 68 69 6C 65 28 77 71 29 3B 09 09     addwhile(wq);..
00B540:  09 2F 2A 20 61 64 64 20 65 6E 74 72 79 20 74 6F    ./* add entry to
00B550:  20 71 75 65 75 65 20 66 6F 72 20 22 62 72 65 61     queue for "brea
00B560:  6B 22 20 2A 2F 0D 0A 20 20 70 6F 73 74 6C 61 62    k" */..  postlab
00B570:  65 6C 28 77 71 5B 57 51 4C 4F 4F 50 5D 29 3B 09    el(wq[WQLOOP]);.
00B580:  2F 2A 20 6C 6F 6F 70 20 6C 61 62 65 6C 20 2A 2F    /* loop label */
00B590:  0D 0A 20 20 74 65 73 74 28 77 71 5B 57 51 45 58    ..  test(wq[WQEX
00B5A0:  49 54 5D 2C 20 59 45 53 29 3B 09 2F 2A 20 73 65    IT], YES);./* se
00B5B0:  65 20 69 66 20 74 72 75 65 20 2A 2F 0D 0A 20 20    e if true */..  
00B5C0:  73 74 61 74 65 6D 65 6E 74 28 29 3B 09 09 09 2F    statement();.../
00B5D0:  2A 20 69 66 20 73 6F 2C 20 64 6F 20 61 20 73 74    * if so, do a st
00B5E0:  61 74 65 6D 65 6E 74 20 2A 2F 0D 0A 20 20 6A 75    atement */..  ju
00B5F0:  6D 70 28 77 71 5B 57 51 4C 4F 4F 50 5D 29 3B 09    mp(wq[WQLOOP]);.
00B600:  09 2F 2A 20 6C 6F 6F 70 20 74 6F 20 6C 61 62 65    ./* loop to labe
00B610:  6C 20 2A 2F 0D 0A 20 20 70 6F 73 74 6C 61 62 65    l */..  postlabe
00B620:  6C 28 77 71 5B 57 51 45 58 49 54 5D 29 3B 09 2F    l(wq[WQEXIT]);./
00B630:  2A 20 65 78 69 74 20 6C 61 62 65 6C 20 2A 2F 0D    * exit label */.
00B640:  0A 20 20 64 65 6C 77 68 69 6C 65 28 29 3B 09 09    .  delwhile();..
00B650:  09 2F 2A 20 64 65 6C 65 74 65 20 71 75 65 75 65    ./* delete queue
00B660:  20 65 6E 74 72 79 20 2A 2F 0D 0A 20 20 7D 0D 0A     entry */..  }..
00B670:  0D 0A 23 69 66 64 65 66 20 53 54 44 4F 0D 0A 64    ..#ifdef STDO..d
00B680:  6F 64 6F 28 29 20 7B 0D 0A 20 20 69 6E 74 20 77    odo() {..  int w
00B690:  71 5B 34 5D 2C 20 74 6F 70 3B 0D 0A 20 20 61 64    q[4], top;..  ad
00B6A0:  64 77 68 69 6C 65 28 77 71 29 3B 0D 0A 20 20 70    dwhile(wq);..  p
00B6B0:  6F 73 74 6C 61 62 65 6C 28 74 6F 70 3D 67 65 74    ostlabel(top=get
00B6C0:  6C 61 62 65 6C 28 29 29 3B 0D 0A 20 20 73 74 61    label());..  sta
00B6D0:  74 65 6D 65 6E 74 28 29 3B 0D 0A 20 20 6E 65 65    tement();..  nee
00B6E0:  64 74 6F 6B 65 6E 28 22 77 68 69 6C 65 22 29 3B    dtoken("while");
00B6F0:  0D 0A 20 20 70 6F 73 74 6C 61 62 65 6C 28 77 71    ..  postlabel(wq
00B700:  6C 61 62 65 6C 22 29 3B 0D 0A 20 20 6E 73 28 29    label");..  ns()
00B710:  3B 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 6C 61 62 65    ;..  }....dolabe
00B720:  6C 28 29 20 7B 0D 0A 20 20 63 68 61 72 20 2A 73    l() {..  char *s
00B730:  61 76 65 6C 70 74 72 3B 0D 0A 20 20 62 6C 61 6E    avelptr;..  blan
00B740:  6B 73 28 29 3B 0D 0A 20 20 73 61 76 65 6C 70 74    ks();..  savelpt
00B750:  72 3D 6C 70 74 72 3B 0D 0A 20 20 69 66 28 73 79    r=lptr;..  if(sy
00B760:  6D 6E 61 6D 65 28 73 73 6E 61 6D 65 2C 20 59 45    mname(ssname, YE
00B770:  53 29 29 20 7B 0D 0A 20 20 20 20 69 66 28 67 63    S)) {..    if(gc
00B780:  68 28 29 3D 3D 27 3A 27 29 20 7B 0D 0A 20 20 20    h()==':') {..   
00B790:  20 20 20 70 6F 73 74 6C 61 62 65 6C 28 61 64 64       postlabel(add
00B7A0:  6C 61 62 65 6C 28 29 29 3B 0D 0A 20 20 20 20 20    label());..     
00B7B0:  20 72 65 74 75 72 6E 20 31 3B 0D 0A 20 20 20 20     return 1;..    
00B7C0:  20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 62 75      }..    else bu
00B7D0:  6D 70 28 73 61 76 65 6C 70 74 72 2D 6C 70 74 72    mp(savelptr-lptr
00B7E0:  29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74    );..    }..  ret
00B7F0:  75 72 6E 20 30 3B 0D 0A 20 20 7D 0D 0A 0D 0A 61    urn 0;..  }....a
00B800:  64 64 6C 61 62 65 6C 28 29 20 20 7B 0D 0A 20 20    ddlabel()  {..  
00B810:  69 66 28 63 70 74 72 3D 66 69 6E 64 6C 6F 63 28    if(cptr=findloc(
00B820:  73 73 6E 61 6D 65 29 29 20 7B 0D 0A 20 20 20 20    ssname)) {..    
00B830:  69 66 28 63 70 74 72 5B 49 44 45 4E 54 5D 21 3D    if(cptr[IDENT]!=
00B840:  4C 41 42 45 4C 29 20 65 72 72 6F 72 28 22 6E 6F    LABEL) error("no
00B850:  74 20 61 20 6C 61 62 65 6C 22 29 3B 0D 0A 20 20    t a label");..  
00B860:  20 20 7D 0D 0A 20 20 65 6C 73 65 20 63 70 74 72      }..  else cptr
00B870:  3D 61 64 64 73 79 6D 28 73 73 6E 61 6D 65 2C 20    =addsym(ssname, 
00B880:  4C 41 42 45 4C 2C 20 4C 41 42 45 4C 2C 20 67 65    LABEL, LABEL, ge
00B890:  74 6C 61 62 65 6C 28 29 2C 20 26 6C 6F 63 70 74    tlabel(), &locpt
00B8A0:  72 2C 20 4C 41 42 45 4C 29 3B 0D 0A 20 20 72 65    r, LABEL);..  re
00B8B0:  74 75 72 6E 20 28 67 65 74 69 6E 74 28 63 70 74    turn (getint(cpt
00B8C0:  72 2B 4F 46 46 53 45 54 2C 20 4F 46 46 53 49 5A    r+OFFSET, OFFSIZ
00B8D0:  45 29 29 3B 0D 0A 20 20 7D 0D 0A 23 65 6E 64 69    E));..  }..#endi
00B8E0:  66 0D 0A 0D 0A 64 6F 72 65 74 75 72 6E 28 29 20    f....doreturn() 
00B8F0:  20 7B 0D 0A 20 20 69 66 28 65 6E 64 73 74 28 29     {..  if(endst()
00B900:  5B 57 51 4C 4F 4F 50 5D 29 3B 0D 0A 20 20 74 65    [WQLOOP]);..  te
00B910:  73 74 28 77 71 5B 57 51 45 58 49 54 5D 2C 20 59    st(wq[WQEXIT], Y
00B920:  45 53 29 3B 0D 0A 20 20 6A 75 6D 70 28 74 6F 70    ES);..  jump(top
00B930:  29 3B 0D 0A 20 20 70 6F 73 74 6C 61 62 65 6C 28    );..  postlabel(
00B940:  77 71 5B 57 51 45 58 49 54 5D 29 3B 0D 0A 20 20    wq[WQEXIT]);..  
00B950:  64 65 6C 77 68 69 6C 65 28 29 3B 0D 0A 20 20 6E    delwhile();..  n
00B960:  73 28 29 3B 0D 0A 20 20 7D 0D 0A 23 65 6E 64 69    s();..  }..#endi
00B970:  66 0D 0A 0D 0A 23 69 66 64 65 66 20 53 54 46 4F    f....#ifdef STFO
00B980:  52 0D 0A 64 6F 66 6F 72 28 29 20 7B 0D 0A 20 20    R..dofor() {..  
00B990:  69 6E 74 20 77 71 5B 34 5D 2C 20 6C 61 62 31 2C    int wq[4], lab1,
00B9A0:  20 6C 61 62 32 3B 0D 0A 20 20 61 64 64 77 68 69     lab2;..  addwhi
00B9B0:  6C 65 28 77 71 29 3B 0D 0A 20 20 6C 61 62 31 3D    le(wq);..  lab1=
00B9C0:  67 65 74 6C 61 62 65 6C 28 29 3B 0D 0A 20 20 6C    getlabel();..  l
00B9D0:  61 62 32 3D 67 65 74 6C 61 62 65 6C 28 29 3B 0D    ab2=getlabel();.
00B9E0:  0A 20 20 6E 65 65 64 74 6F 6B 65 6E 28 22 28 22    .  needtoken("("
00B9F0:  29 3B 0D 0A 20 20 69 66 28 6D 61 74 63 68 28 22    );..  if(match("
00BA00:  3B 22 29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 64    ;")==0) {..    d
00BA10:  6F 65 78 70 72 28 29 3B 09 09 09 2F 2A 20 65 78    oexpr();.../* ex
00BA20:  70 72 20 31 20 2A 2F 0D 0A 20 20 20 20 6E 73 28    pr 1 */..    ns(
00BA30:  29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 70 6F 73    );..    }..  pos
00BA40:  74 6C 61 62 65 6C 28 6C 61 62 31 29 3B 0D 0A 20    tlabel(lab1);.. 
00BA50:  20 69 66 28 6D 61 74 63 68 28 22 3B 22 29 3D 3D     if(match(";")==
00BA60:  30 29 20 7B 0D 0A 20 20 20 20 74 65 73 74 28 77    0) {..    test(w
00BA70:  71 5B 57 51 45 58 49 54 5D 2C 20 4E 4F 29 3B 09    q[WQEXIT], NO);.
00BA80:  2F 2A 20 65 78 70 72 20 32 20 2A 2F 0D 0A 20 20    /* expr 2 */..  
00BA90:  20 20 6E 73 28 29 3B 0D 0A 20 20 20 20 7D 0D 0A      ns();..    }..
00BAA0:  20 20 6A 75 6D 70 28 6C 61 62 32 29 3B 0D 0A 20      jump(lab2);.. 
00BAB0:  20 70 6F 73 74 6C 61 62 65 6C 28 77 71 5B 57 51     postlabel(wq[WQ
00BAC0:  4C 4F 4F 50 5D 29 3B 0D 0A 20 20 69 66 28 6D 61    LOOP]);..  if(ma
00BAD0:  74 63 68 28 22 29 22 29 3D 3D 30 29 20 7B 0D 0A    tch(")")==0) {..
00BAE0:  20 20 20 20 64 6F 65 78 70 72 28 29 3B 09 09 09        doexpr();...
00BAF0:  2F 2A 20 65 78 70 72 20 33 20 2A 2F 0D 0A 20 20    /* expr 3 */..  
00BB00:  3D 3D 30 29 20 7B 0D 0A 20 20 20 20 64 6F 65 78    ==0) {..    doex
00BB10:  70 72 28 29 3B 0D 0A 20 20 20 20 6D 6F 64 73 74    pr();..    modst
00BB20:  6B 28 30 2C 20 59 45 53 29 3B 0D 0A 20 20 20 20    k(0, YES);..    
00BB30:  7D 0D 0A 20 20 65 6C 73 65 20 6D 6F 64 73 74 6B    }..  else modstk
00BB40:  28 30 2C 20 4E 4F 29 3B 0D 0A 20 20 66 66 72 65    (0, NO);..  ffre
00BB50:  74 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 62    t();..  }....dob
00BB60:  72 65 61 6B 28 29 20 20 7B 0D 0A 20 20 69 6E 74    reak()  {..  int
00BB70:  20 2A 70 74 72 3B 0D 0A 20 20 69 66 20 28 28 70     *ptr;..  if ((p
00BB80:  74 72 3D 72 65 61 64 77 68 69 6C 65 28 77 71 70    tr=readwhile(wqp
00BB90:  74 72 29 29 3D 3D 30 29 20 72 65 74 75 72 6E 3B    tr))==0) return;
00BBA0:  0D 0A 20 20 6D 6F 64 73 74 6B 28 28 70 74 72 5B    ..  modstk((ptr[
00BBB0:  57 51 53 50 5D 29 2C 20 4E 4F 29 3B 0D 0A 20 20    WQSP]), NO);..  
00BBC0:  6A 75 6D 70 28 70 74 72 5B 57 51 45 58 49 54 5D    jump(ptr[WQEXIT]
00BBD0:  29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 63 6F 6E    );..  }....docon
00BBE0:  74 28 29 20 20 7B 0D 0A 20 20 69 6E 74 20 2A 70    t()  {..  int *p
00BBF0:  74 72 3B 0D 0A 20 20 70 74 72 20 3D 20 77 71 70    tr;..  ptr = wqp
00BC00:  74 72 3B 0D 0A 20 20 77 68 69 6C 65 20 28 31 29    tr;..  while (1)
00BC10:  20 7B 0D 0A 20 20 20 20 69 66 20 28 28 70 74 72     {..    if ((ptr
00BC20:  3D 72 65 61 64 77 68 69 6C 65 28 70 74 72 29 29    =readwhile(ptr))
00BC30:  3D 3D 30 29 20 72 65 74 75 72 6E 3B 0D 0A 20 20    ==0) return;..  
00BC40:  20 20 69 66 20 28 70 74 72 5B 57 51 4C 4F 4F 50      if (ptr[WQLOOP
00BC50:  5D 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 7D    ]) break;..    }
00BC60:  0D 0A 20 20 6D 6F 64 73 74 6B 28 28 70 74 72 5B    ..  modstk((ptr[
00BC70:  57 51 53 50 5D 29 2C 20 4E 4F 29 3B 0D 0A 20 20    WQSP]), NO);..  
00BC80:  6A 75 6D 70 28 70 74 72 5B 57 51 4C 4F 4F 50 5D    jump(ptr[WQLOOP]
00BC90:  29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 64 6F 61 73 6D    );..  }....doasm
00BCA0:  28 29 20 20 7B 0D 0A 20 20 63 63 6F 64 65 3D 30    ()  {..  ccode=0
00BCB0:  3B 09 09 09 2F 2A 20 6D 61 72 6B 20 6D 6F 64 65    ;.../* mark mode
00BCC0:  20 61 73 20 22 61 73 6D 22 20 2A 2F 0D 0A 20 20     as "asm" */..  
00BCD0:  77 68 69 6C 65 20 28 31 29 20 7B 0D 0A 20 20 20    while (1) {..   
00BCE0:  20 69 6E 6C 69 6E 65 28 29 3B 0D 0A 20 20 20 20     inline();..    
00BCF0:  69 66 20 28 6D 61 74 63 68 28 22 23 65 6E 64 61    if (match("#enda
00BD00:  20 20 6E 65 65 64 74 6F 6B 65 6E 28 22 29 22 29      needtoken(")")
00BD10:  3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 6A 75 6D 70    ;..    }..  jump
00BD20:  28 6C 61 62 31 29 3B 0D 0A 20 20 70 6F 73 74 6C    (lab1);..  postl
00BD30:  61 62 65 6C 28 6C 61 62 32 29 3B 0D 0A 20 20 73    abel(lab2);..  s
00BD40:  74 61 74 65 6D 65 6E 74 28 29 3B 0D 0A 20 20 6A    tatement();..  j
00BD50:  75 6D 70 28 77 71 5B 57 51 4C 4F 4F 50 5D 29 3B    ump(wq[WQLOOP]);
00BD60:  0D 0A 20 20 70 6F 73 74 6C 61 62 65 6C 28 77 71    ..  postlabel(wq
00BD70:  5B 57 51 45 58 49 54 5D 29 3B 0D 0A 20 20 64 65    [WQEXIT]);..  de
00BD80:  6C 77 68 69 6C 65 28 29 3B 0D 0A 20 20 7D 0D 0A    lwhile();..  }..
00BD90:  23 65 6E 64 69 66 0D 0A 0D 0A 23 69 66 64 65 66    #endif....#ifdef
00BDA0:  20 53 54 53 57 49 54 43 48 0D 0A 64 6F 73 77 69     STSWITCH..doswi
00BDB0:  74 63 68 28 29 20 7B 0D 0A 20 20 69 6E 74 20 77    tch() {..  int w
00BDC0:  71 5B 34 5D 2C 20 65 6E 64 6C 61 62 2C 20 73 77    q[4], endlab, sw
00BDD0:  61 63 74 2C 20 73 77 64 65 66 2C 20 2A 73 77 6E    act, swdef, *swn
00BDE0:  65 78 2C 20 2A 73 77 70 74 72 3B 0D 0A 20 20 73    ex, *swptr;..  s
00BDF0:  77 61 63 74 3D 73 77 61 63 74 69 76 65 3B 0D 0A    wact=swactive;..
00BE00:  20 20 73 77 64 65 66 3D 73 77 64 65 66 61 75 6C      swdef=swdefaul
00BE10:  74 3B 0D 0A 20 20 73 77 6E 65 78 3D 73 77 70 74    t;..  swnex=swpt
00BE20:  72 3D 73 77 6E 65 78 74 3B 0D 0A 20 20 61 64 64    r=swnext;..  add
00BE30:  77 68 69 6C 65 28 77 71 29 3B 0D 0A 20 20 2A 28    while(wq);..  *(
00BE40:  77 71 70 74 72 20 2B 20 57 51 4C 4F 4F 50 20 2D    wqptr + WQLOOP -
00BE50:  20 57 51 53 49 5A 29 20 3D 20 30 3B 0D 0A 20 20     WQSIZ) = 0;..  
00BE60:  6E 65 65 64 74 6F 6B 65 6E 28 22 28 22 29 3B 0D    needtoken("(");.
00BE70:  0A 20 20 64 6F 65 78 70 72 28 29 3B 09 09 09 2F    .  doexpr();.../
00BE80:  2A 20 65 76 61 6C 75 61 74 65 20 73 77 69 74 63    * evaluate switc
00BE90:  68 20 65 78 70 72 65 73 73 69 6F 6E 20 2A 2F 0D    h expression */.
00BEA0:  0A 20 20 6E 65 65 64 74 6F 6B 65 6E 28 22 29 22    .  needtoken(")"
00BEB0:  29 3B 0D 0A 20 20 73 77 64 65 66 61 75 6C 74 3D    );..  swdefault=
00BEC0:  30 3B 0D 0A 20 20 73 77 61 63 74 69 76 65 3D 31    0;..  swactive=1
00BED0:  3B 0D 0A 20 20 6A 75 6D 70 28 65 6E 64 6C 61 62    ;..  jump(endlab
00BEE0:  3D 67 65 74 6C 61 62 65 6C 28 29 29 3B 0D 0A 20    =getlabel());.. 
00BEF0:  20 73 74 61 74 65 6D 65 6E 74 28 29 3B 09 09 09     statement();...
00BF00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00BF10:  0A 00 01 00 02 09 52 E5 0A 00 41 02 00 00 00 02    ......R...A.....
00BF20:  0A 00 46 02 00 00 00 02 0A 00 42 02 00 00 00 02    ..F.......B.....
00BF30:  0A 00 47 02 00 00 00 02 0A 00 43 02 00 00 00 02    ..G.......C.....
00BF40:  0A 00 48 02 00 00 00 02 0A 00 44 02 00 00 00 02    ..H.......D.....
00BF50:  0A 00 49 02 00 00 00 02 0A 00 45 02 00 00 00 02    ..I.......E.....
00BF60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BF70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BF80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BF90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00BFF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00C000:  73 6D 22 29 29 20 62 72 65 61 6B 3B 0D 0A 20 20    sm")) break;..  
00C010:  20 20 69 66 28 65 6F 66 29 62 72 65 61 6B 3B 0D      if(eof)break;.
00C020:  0A 20 20 20 20 73 6F 75 74 28 6C 69 6E 65 2C 20    .    sout(line, 
00C030:  6F 75 74 70 75 74 29 3B 0D 0A 20 20 20 20 7D 0D    output);..    }.
00C040:  0A 20 20 6B 69 6C 6C 28 29 3B 0D 0A 20 20 63 63    .  kill();..  cc
00C050:  6F 64 65 3D 31 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E    ode=1;..  }....>
00C060:  3E 3E 20 43 43 32 2E 43 20 37 30 33 0D 0A 2F 2A    >> CC2.C 703../*
00C070:  0D 0A 2A 2A 20 53 6D 61 6C 6C 2D 43 20 43 6F 6D    ..** Small-C Com
00C080:  70 69 6C 65 72 20 50 61 72 74 20 32 0D 0A 2A 2F    piler Part 2..*/
00C090:  0D 0A 23 69 6E 63 6C 75 64 65 20 3C 73 74 64 69    ..#include <stdi
00C0A0:  6F 2E 68 3E 0D 0A 23 69 6E 63 6C 75 64 65 20 22    o.h>..#include "
00C0B0:  63 63 2E 64 65 66 22 0D 0A 0D 0A 65 78 74 65 72    cc.def"....exter
00C0C0:  6E 20 63 68 61 72 0D 0A 23 69 66 64 65 66 20 44    n char..#ifdef D
00C0D0:  59 4E 41 4D 49 43 0D 0A 20 2A 73 79 6D 74 61 62    YNAMIC.. *symtab
00C0E0:  2C 0D 0A 20 2A 73 74 61 67 65 2C 0D 0A 20 2A 6D    ,.. *stage,.. *m
00C0F0:  61 63 6E 2C 0D 0A 20 2A 6D 61 63 71 2C 0D 0A 20    acn,.. *macq,.. 
00C100:  2A 70 6C 69 6E 65 2C 0D 0A 20 2A 6D 6C 69 6E 65    *pline,.. *mline
00C110:  2C 0D 0A 23 65 6C 73 65 0D 0A 20 20 73 79 6D 74    ,..#else..  symt
00C120:  61 62 5B 53 59 4D 54 42 53 5A 5D 2C 0D 0A 20 20    ab[SYMTBSZ],..  
00C130:  73 74 61 67 65 5B 53 54 41 47 45 53 49 5A 45 5D    stage[STAGESIZE]
00C140:  2C 0D 0A 20 20 6D 61 63 6E 5B 4D 41 43 4E 53 49    ,..  macn[MACNSI
00C150:  5A 45 5D 2C 0D 0A 20 20 6D 61 63 71 5B 4D 41 43    ZE],..  macq[MAC
00C160:  51 53 49 5A 45 5D 2C 0D 0A 20 20 70 6C 69 6E 65    QSIZE],..  pline
00C170:  5B 4C 49 4E 45 53 49 5A 45 5D 2C 0D 0A 20 20 6D    [LINESIZE],..  m
00C180:  6C 69 6E 65 5B 4C 49 4E 45 53 49 5A 45 5D 2C 0D    line[LINESIZE],.
00C190:  0A 23 65 6E 64 69 66 0D 0A 23 69 66 64 65 66 20    .#endif..#ifdef 
00C1A0:  4F 50 54 49 4D 49 5A 45 0D 0A 20 20 6F 70 74 69    OPTIMIZE..  opti
00C1B0:  6D 69 7A 65 2C 0D 0A 23 65 6E 64 69 66 0D 0A 20    mize,..#endif.. 
00C1C0:  20 61 6C 61 72 6D 2C 20 2A 67 6C 62 70 74 72 2C     alarm, *glbptr,
00C1D0:  20 2A 6C 69 6E 65 2C 20 2A 6C 70 74 72 2C 20 2A     *line, *lptr, *
00C1E0:  63 70 74 72 2C 20 2A 63 70 74 72 32 2C 20 20 2A    cptr, *cptr2,  *
00C1F0:  63 70 74 72 33 2C 0D 0A 20 2A 6C 6F 63 70 74 72    cptr3,.. *locptr
00C200:  69 6E 64 20 6C 65 6E 67 74 68 20 62 79 74 65 20    ind length byte 
00C210:  2A 2F 0D 0A 20 20 72 65 74 75 72 6E 20 65 6E 74    */..  return ent
00C220:  72 79 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A    ry;..  }..../*..
00C230:  2A 2A 20 67 65 74 20 69 6E 74 65 67 65 72 20 6F    ** get integer o
00C240:  66 20 6C 65 6E 67 74 68 20 6C 65 6E 20 66 72 6F    f length len fro
00C250:  6D 20 61 64 64 72 65 73 73 20 61 64 64 72 0D 0A    m address addr..
00C260:  2A 2A 20 28 62 79 74 65 20 73 65 71 75 65 6E 63    ** (byte sequenc
00C270:  65 20 73 65 74 20 62 79 20 22 70 75 74 69 6E 74    e set by "putint
00C280:  22 29 0D 0A 2A 2F 0D 0A 67 65 74 69 6E 74 28 61    ")..*/..getint(a
00C290:  64 64 72 2C 20 6C 65 6E 29 20 63 68 61 72 20 2A    ddr, len) char *
00C2A0:  61 64 64 72 3B 20 69 6E 74 20 6C 65 6E 3B 20 7B    addr; int len; {
00C2B0:  0D 0A 20 20 69 6E 74 20 69 3B 0D 0A 20 20 69 20    ..  int i;..  i 
00C2C0:  3D 20 2A 28 61 64 64 72 20 2B 20 2D 2D 6C 65 6E    = *(addr + --len
00C2D0:  29 3B 09 09 2F 2A 20 68 69 67 68 20 6F 72 64 65    );../* high orde
00C2E0:  72 20 62 79 74 65 20 73 69 67 6E 20 65 78 74 65    r byte sign exte
00C2F0:  6E 64 65 64 20 2A 2F 0D 0A 20 20 77 68 69 6C 65    nded */..  while
00C300:  28 6C 65 6E 2D 2D 29 20 69 20 3D 20 28 69 20 3C    (len--) i = (i <
00C310:  3C 20 38 29 20 7C 20 2A 28 61 64 64 72 2B 6C 65    < 8) | *(addr+le
00C320:  6E 29 26 32 35 35 3B 0D 0A 20 20 72 65 74 75 72    n)&255;..  retur
00C330:  6E 20 69 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D    n i;..  }..../*.
00C340:  0A 2A 2A 20 70 75 74 20 69 6E 74 65 67 65 72 20    .** put integer 
00C350:  69 20 6F 66 20 6C 65 6E 67 74 68 20 6C 65 6E 20    i of length len 
00C360:  69 6E 74 6F 20 61 64 64 72 65 73 73 20 61 64 64    into address add
00C370:  72 0D 0A 2A 2A 20 28 6C 6F 77 20 62 79 74 65 20    r..** (low byte 
00C380:  66 69 72 73 74 29 0D 0A 2A 2F 0D 0A 70 75 74 69    first)..*/..puti
00C390:  6E 74 28 69 2C 20 61 64 64 72 2C 20 6C 65 6E 29    nt(i, addr, len)
00C3A0:  20 63 68 61 72 20 2A 61 64 64 72 3B 20 69 6E 74     char *addr; int
00C3B0:  20 69 2C 20 6C 65 6E 3B 20 7B 0D 0A 20 20 77 68     i, len; {..  wh
00C3C0:  69 6C 65 28 6C 65 6E 2D 2D 29 20 7B 0D 0A 20 20    ile(len--) {..  
00C3D0:  20 20 2A 61 64 64 72 2B 2B 20 3D 20 69 3B 0D 0A      *addr++ = i;..
00C3E0:  20 20 20 20 69 20 3D 20 69 3E 3E 38 3B 0D 0A 20        i = i>>8;.. 
00C3F0:  20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D       }..  }..../*.
00C400:  2C 20 6D 73 6E 61 6D 65 5B 4E 41 4D 45 53 49 5A    , msname[NAMESIZ
00C410:  45 5D 2C 20 20 70 61 75 73 65 2C 20 20 71 75 6F    E],  pause,  quo
00C420:  74 65 5B 32 5D 2C 0D 0A 20 2A 73 74 61 67 65 6C    te[2],.. *stagel
00C430:  61 73 74 2C 20 2A 73 74 61 67 65 6E 65 78 74 3B    ast, *stagenext;
00C440:  0D 0A 65 78 74 65 72 6E 20 69 6E 74 0D 0A 23 69    ..extern int..#i
00C450:  66 64 65 66 20 44 59 4E 41 4D 49 43 0D 0A 20 20    fdef DYNAMIC..  
00C460:  2A 77 71 2C 0D 0A 23 65 6C 73 65 0D 0A 20 20 77    *wq,..#else..  w
00C470:  71 5B 57 51 54 41 42 53 5A 5D 2C 0D 0A 23 65 6E    q[WQTABSZ],..#en
00C480:  64 69 66 0D 0A 20 20 63 63 6F 64 65 2C 20 20 63    dif..  ccode,  c
00C490:  68 2C 20 20 63 73 70 2C 20 20 65 6F 66 2C 20 20    h,  csp,  eof,  
00C4A0:  65 72 72 66 6C 61 67 2C 20 20 69 66 6C 65 76 65    errflag,  ifleve
00C4B0:  6C 2C 0D 0A 20 20 69 6E 70 75 74 2C 20 20 69 6E    l,..  input,  in
00C4C0:  70 75 74 32 2C 20 20 6C 69 73 74 66 70 2C 20 20    put2,  listfp,  
00C4D0:  6D 61 63 70 74 72 2C 20 20 6E 63 68 2C 0D 0A 20    macptr,  nch,.. 
00C4E0:  20 6E 78 74 6C 61 62 2C 20 20 6F 70 5B 31 36 5D     nxtlab,  op[16]
00C4F0:  2C 20 20 6F 70 69 6E 64 65 78 2C 20 20 6F 70 73    ,  opindex,  ops
00C500:  69 7A 65 2C 20 20 6F 75 74 70 75 74 2C 20 20 70    ize,  output,  p
00C510:  70 74 72 2C 0D 0A 20 20 73 6B 69 70 6C 65 76 65    ptr,..  skipleve
00C520:  6C 2C 20 20 2A 77 71 70 74 72 3B 0D 0A 0D 0A 23    l,  *wqptr;....#
00C530:  69 6E 63 6C 75 64 65 20 22 63 63 32 31 2E 63 22    include "cc21.c"
00C540:  0D 0A 23 69 6E 63 6C 75 64 65 20 22 63 63 32 32    ..#include "cc22
00C550:  2E 63 22 0D 0A 0D 0A 3E 3E 3E 20 43 43 32 31 2E    .c"....>>> CC21.
00C560:  43 20 34 33 37 31 0D 0A 6A 75 6E 6B 28 29 20 7B    C 4371..junk() {
00C570:  0D 0A 20 20 69 66 28 61 6E 28 69 6E 62 79 74 65    ..  if(an(inbyte
00C580:  28 29 29 29 20 77 68 69 6C 65 28 61 6E 28 63 68    ())) while(an(ch
00C590:  29 29 20 67 63 68 28 29 3B 0D 0A 20 20 65 6C 73    )) gch();..  els
00C5A0:  65 20 77 68 69 6C 65 28 61 6E 28 63 68 29 3D 3D    e while(an(ch)==
00C5B0:  30 29 20 7B 0D 0A 20 20 20 20 69 66 28 63 68 3D    0) {..    if(ch=
00C5C0:  3D 30 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20    =0) break;..    
00C5D0:  67 63 68 28 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20    gch();..    }.. 
00C5E0:  20 62 6C 61 6E 6B 73 28 29 3B 0D 0A 20 20 7D 0D     blanks();..  }.
00C5F0:  0A 0D 0A 65 6E 64 73 74 28 29 20 7B 0D 0A 20 20    ...endst() {..  
00C600:  0A 2A 2A 20 74 65 73 74 20 69 66 20 6E 65 78 74    .** test if next
00C610:  20 69 6E 70 75 74 20 73 74 72 69 6E 67 20 69 73     input string is
00C620:  20 6C 65 67 61 6C 20 73 79 6D 62 6F 6C 20 6E 61     legal symbol na
00C630:  6D 65 0D 0A 2A 2F 0D 0A 73 79 6D 6E 61 6D 65 28    me..*/..symname(
00C640:  73 6E 61 6D 65 2C 20 75 63 61 73 65 29 20 63 68    sname, ucase) ch
00C650:  61 72 20 2A 73 6E 61 6D 65 3B 20 69 6E 74 20 75    ar *sname; int u
00C660:  63 61 73 65 3B 20 7B 0D 0A 20 20 69 6E 74 20 6B    case; {..  int k
00C670:  3B 63 68 61 72 20 63 3B 0D 0A 20 20 62 6C 61 6E    ;char c;..  blan
00C680:  6B 73 28 29 3B 0D 0A 20 20 69 66 28 61 6C 70 68    ks();..  if(alph
00C690:  61 28 63 68 29 3D 3D 30 29 20 72 65 74 75 72 6E    a(ch)==0) return
00C6A0:  20 28 2A 73 6E 61 6D 65 3D 30 29 3B 0D 0A 20 20     (*sname=0);..  
00C6B0:  6B 3D 30 3B 0D 0A 20 20 77 68 69 6C 65 28 61 6E    k=0;..  while(an
00C6C0:  28 63 68 29 29 20 7B 0D 0A 23 69 66 64 65 66 20    (ch)) {..#ifdef 
00C6D0:  55 50 50 45 52 0D 0A 20 20 20 20 69 66 28 75 63    UPPER..    if(uc
00C6E0:  61 73 65 29 0D 0A 20 20 20 20 20 20 73 6E 61 6D    ase)..      snam
00C6F0:  65 5B 6B 5D 3D 74 6F 75 70 70 65 72 28 67 63 68    e[k]=toupper(gch
00C700:  28 29 29 3B 0D 0A 20 20 20 20 65 6C 73 65 0D 0A    ());..    else..
00C710:  23 65 6E 64 69 66 0D 0A 20 20 20 20 20 20 73 6E    #endif..      sn
00C720:  61 6D 65 5B 6B 5D 3D 67 63 68 28 29 3B 0D 0A 20    ame[k]=gch();.. 
00C730:  20 20 20 69 66 28 6B 3C 4E 41 4D 45 4D 41 58 29       if(k<NAMEMAX)
00C740:  20 2B 2B 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20     ++k;..    }..  
00C750:  73 6E 61 6D 65 5B 6B 5D 3D 30 3B 0D 0A 20 20 72    sname[k]=0;..  r
00C760:  65 74 75 72 6E 20 31 3B 0D 0A 20 20 7D 0D 0A 0D    eturn 1;..  }...
00C770:  0A 2F 2A 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 6E    ./*..** return n
00C780:  65 78 74 20 61 76 61 69 6C 20 69 6E 74 65 72 6E    ext avail intern
00C790:  61 6C 20 6C 61 62 65 6C 20 6E 75 6D 62 65 72 0D    al label number.
00C7A0:  0A 2A 2F 0D 0A 67 65 74 6C 61 62 65 6C 28 29 20    .*/..getlabel() 
00C7B0:  7B 0D 0A 20 20 72 65 74 75 72 6E 28 2B 2B 6E 78    {..  return(++nx
00C7C0:  74 6C 61 62 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F    tlab);..  }..../
00C7D0:  2A 0D 0A 2A 2A 20 70 6F 73 74 20 61 20 6C 61 62    *..** post a lab
00C7E0:  65 6C 20 69 6E 20 74 68 65 20 70 72 6F 67 72 61    el in the progra
00C7F0:  6D 0D 0A 2A 2F 0D 0A 70 6F 73 74 6C 61 62 65 6C    m..*/..postlabel
00C800:  62 6C 61 6E 6B 73 28 29 3B 0D 0A 20 20 72 65 74    blanks();..  ret
00C810:  75 72 6E 20 28 28 73 74 72 65 71 28 6C 70 74 72    urn ((streq(lptr
00C820:  2C 22 3B 22 29 7C 28 63 68 3D 3D 30 29 29 29 3B    ,";")|(ch==0)));
00C830:  0D 0A 20 20 7D 0D 0A 0D 0A 69 6C 6C 6E 61 6D 65    ..  }....illname
00C840:  28 29 20 7B 0D 0A 20 20 65 72 72 6F 72 28 22 69    () {..  error("i
00C850:  6C 6C 65 67 61 6C 20 73 79 6D 62 6F 6C 22 29 3B    llegal symbol");
00C860:  0D 0A 20 20 6A 75 6E 6B 28 29 3B 0D 0A 20 20 7D    ..  junk();..  }
00C870:  0D 0A 20 20 0D 0A 6D 75 6C 74 69 64 65 66 28 73    ..  ..multidef(s
00C880:  6E 61 6D 65 29 20 20 63 68 61 72 20 2A 73 6E 61    name)  char *sna
00C890:  6D 65 3B 20 7B 0D 0A 20 20 65 72 72 6F 72 28 22    me; {..  error("
00C8A0:  61 6C 72 65 61 64 79 20 64 65 66 69 6E 65 64 22    already defined"
00C8B0:  29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 6E 65 65 64 74    );..  }....needt
00C8C0:  6F 6B 65 6E 28 73 74 72 29 20 20 63 68 61 72 20    oken(str)  char 
00C8D0:  2A 73 74 72 3B 20 7B 0D 0A 20 20 69 66 20 28 6D    *str; {..  if (m
00C8E0:  61 74 63 68 28 73 74 72 29 3D 3D 30 29 20 65 72    atch(str)==0) er
00C8F0:  72 6F 72 28 22 6D 69 73 73 69 6E 67 20 74 6F 6B    ror("missing tok
00C900:  65 6E 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 6E 65    en");..  }....ne
00C910:  65 64 6C 76 61 6C 28 29 20 7B 0D 0A 20 20 65 72    edlval() {..  er
00C920:  72 6F 72 28 22 6D 75 73 74 20 62 65 20 6C 76 61    ror("must be lva
00C930:  6C 75 65 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 66    lue");..  }....f
00C940:  69 6E 64 67 6C 62 28 73 6E 61 6D 65 29 20 20 63    indglb(sname)  c
00C950:  68 61 72 20 2A 73 6E 61 6D 65 3B 20 7B 0D 0A 20    har *sname; {.. 
00C960:  20 69 66 28 73 65 61 72 63 68 28 73 6E 61 6D 65     if(search(sname
00C970:  2C 20 53 54 41 52 54 47 4C 42 2C 20 53 59 4D 4D    , STARTGLB, SYMM
00C980:  41 58 2C 20 45 4E 44 47 4C 42 2C 20 4E 55 4D 47    AX, ENDGLB, NUMG
00C990:  4C 42 53 2C 20 4E 41 4D 45 29 29 0D 0A 20 20 20    LBS, NAME))..   
00C9A0:  20 72 65 74 75 72 6E 20 63 70 74 72 3B 0D 0A 20     return cptr;.. 
00C9B0:  20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 7D 0D     return 0;..  }.
00C9C0:  0A 0D 0A 66 69 6E 64 6C 6F 63 28 73 6E 61 6D 65    ...findloc(sname
00C9D0:  29 20 20 63 68 61 72 20 2A 73 6E 61 6D 65 3B 20    )  char *sname; 
00C9E0:  20 7B 0D 0A 20 20 63 70 74 72 20 3D 20 6C 6F 63     {..  cptr = loc
00C9F0:  70 74 72 20 2D 20 31 3B 09 09 2F 2A 20 73 65 61    ptr - 1;../* sea
00CA00:  28 6C 61 62 65 6C 29 20 69 6E 74 20 6C 61 62 65    (label) int labe
00CA10:  6C 3B 20 7B 0D 0A 20 20 70 72 69 6E 74 6C 61 62    l; {..  printlab
00CA20:  65 6C 28 6C 61 62 65 6C 29 3B 0D 0A 20 20 63 6F    el(label);..  co
00CA30:  6C 28 29 3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20    l();..  nl();.. 
00CA40:  20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 72 69     }..../*..** pri
00CA50:  6E 74 20 73 70 65 63 69 66 69 65 64 20 6E 75 6D    nt specified num
00CA60:  62 65 72 20 61 73 20 61 20 6C 61 62 65 6C 0D 0A    ber as a label..
00CA70:  2A 2F 0D 0A 70 72 69 6E 74 6C 61 62 65 6C 28 6C    */..printlabel(l
00CA80:  61 62 65 6C 29 20 20 69 6E 74 20 6C 61 62 65 6C    abel)  int label
00CA90:  3B 20 7B 0D 0A 20 20 6F 75 74 73 74 72 28 22 43    ; {..  outstr("C
00CAA0:  43 22 29 3B 0D 0A 20 20 6F 75 74 64 65 63 28 6C    C");..  outdec(l
00CAB0:  61 62 65 6C 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F    abel);..  }..../
00CAC0:  2A 0D 0A 2A 2A 20 74 65 73 74 20 69 66 20 63 20    *..** test if c 
00CAD0:  69 73 20 61 6C 70 68 61 62 65 74 69 63 0D 0A 2A    is alphabetic..*
00CAE0:  2F 0D 0A 61 6C 70 68 61 28 63 29 20 20 63 68 61    /..alpha(c)  cha
00CAF0:  72 20 63 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E    r c; {..  return
00CB00:  20 28 69 73 61 6C 70 68 61 28 63 29 20 7C 7C 20     (isalpha(c) || 
00CB10:  63 3D 3D 27 5F 27 29 3B 0D 0A 20 20 7D 0D 0A 0D    c=='_');..  }...
00CB20:  0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 69 66 20    ./*..** test if 
00CB30:  67 69 76 65 6E 20 63 68 61 72 61 63 74 65 72 20    given character 
00CB40:  69 73 20 61 6C 70 68 61 6E 75 6D 65 72 69 63 0D    is alphanumeric.
00CB50:  0A 2A 2F 0D 0A 61 6E 28 63 29 20 20 63 68 61 72    .*/..an(c)  char
00CB60:  20 63 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 20     c; {..  return 
00CB70:  28 61 6C 70 68 61 28 63 29 20 7C 7C 20 69 73 64    (alpha(c) || isd
00CB80:  69 67 69 74 28 63 29 29 3B 0D 0A 20 20 7D 0D 0A    igit(c));..  }..
00CB90:  0D 0A 61 64 64 77 68 69 6C 65 28 70 74 72 29 20    ..addwhile(ptr) 
00CBA0:  20 69 6E 74 20 70 74 72 5B 5D 3B 20 7B 0D 0A 20     int ptr[]; {.. 
00CBB0:  20 69 6E 74 20 6B 3B 0D 0A 20 20 70 74 72 5B 57     int k;..  ptr[W
00CBC0:  51 53 50 5D 3D 63 73 70 3B 09 09 2F 2A 20 61 6E    QSP]=csp;../* an
00CBD0:  64 20 73 74 6B 20 70 74 72 20 2A 2F 0D 0A 20 20    d stk ptr */..  
00CBE0:  70 74 72 5B 57 51 4C 4F 4F 50 5D 3D 67 65 74 6C    ptr[WQLOOP]=getl
00CBF0:  61 62 65 6C 28 29 3B 09 2F 2A 20 61 6E 64 20 6C    abel();./* and l
00CC00:  72 63 68 20 62 61 63 6B 77 61 72 64 20 66 6F 72    rch backward for
00CC10:  20 62 6C 6F 63 6B 20 6C 6F 63 61 6C 73 20 2A 2F     block locals */
00CC20:  0D 0A 20 20 77 68 69 6C 65 28 63 70 74 72 20 3E    ..  while(cptr >
00CC30:  20 53 54 41 52 54 4C 4F 43 29 20 7B 0D 0A 20 20     STARTLOC) {..  
00CC40:  20 20 63 70 74 72 20 3D 20 63 70 74 72 20 2D 20      cptr = cptr - 
00CC50:  2A 63 70 74 72 3B 0D 0A 20 20 20 20 69 66 28 61    *cptr;..    if(a
00CC60:  73 74 72 65 71 28 73 6E 61 6D 65 2C 20 63 70 74    streq(sname, cpt
00CC70:  72 2C 20 4E 41 4D 45 4D 41 58 29 29 20 72 65 74    r, NAMEMAX)) ret
00CC80:  75 72 6E 20 28 63 70 74 72 20 2D 20 4E 41 4D 45    urn (cptr - NAME
00CC90:  29 3B 0D 0A 20 20 20 20 63 70 74 72 20 3D 20 63    );..    cptr = c
00CCA0:  70 74 72 20 2D 20 4E 41 4D 45 20 2D 20 31 3B 0D    ptr - NAME - 1;.
00CCB0:  0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E    .    }..  return
00CCC0:  20 30 3B 0D 0A 20 20 7D 0D 0A 0D 0A 61 64 64 73     0;..  }....adds
00CCD0:  79 6D 28 73 6E 61 6D 65 2C 20 69 64 2C 20 74 79    ym(sname, id, ty
00CCE0:  70 2C 20 76 61 6C 75 65 2C 20 6C 67 70 74 72 70    p, value, lgptrp
00CCF0:  74 72 2C 20 63 6C 61 73 73 29 0D 0A 20 20 63 68    tr, class)..  ch
00CD00:  61 72 20 2A 73 6E 61 6D 65 2C 20 69 64 2C 20 74    ar *sname, id, t
00CD10:  79 70 3B 20 20 69 6E 74 20 76 61 6C 75 65 2C 20    yp;  int value, 
00CD20:  2A 6C 67 70 74 72 70 74 72 2C 20 63 6C 61 73 73    *lgptrptr, class
00CD30:  3B 20 7B 0D 0A 20 20 69 66 28 6C 67 70 74 72 70    ; {..  if(lgptrp
00CD40:  74 72 20 3D 3D 20 26 67 6C 62 70 74 72 29 20 7B    tr == &glbptr) {
00CD50:  0D 0A 20 20 20 20 69 66 28 63 70 74 72 32 3D 66    ..    if(cptr2=f
00CD60:  69 6E 64 67 6C 62 28 73 6E 61 6D 65 29 29 20 72    indglb(sname)) r
00CD70:  65 74 75 72 6E 20 63 70 74 72 32 3B 0D 0A 20 20    eturn cptr2;..  
00CD80:  20 20 69 66 28 63 70 74 72 3D 3D 30 29 20 7B 0D      if(cptr==0) {.
00CD90:  0A 20 20 20 20 20 20 65 72 72 6F 72 28 22 67 6C    .      error("gl
00CDA0:  6F 62 61 6C 20 73 79 6D 62 6F 6C 20 74 61 62 6C    obal symbol tabl
00CDB0:  65 20 6F 76 65 72 66 6C 6F 77 22 29 3B 0D 0A 20    e overflow");.. 
00CDC0:  20 20 20 20 20 72 65 74 75 72 6E 20 30 3B 0D 0A         return 0;..
00CDD0:  20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A          }..    }..
00CDE0:  20 20 65 6C 73 65 20 7B 0D 0A 20 20 20 20 69 66      else {..    if
00CDF0:  28 6C 6F 63 70 74 72 20 3E 20 28 45 4E 44 4C 4F    (locptr > (ENDLO
00CE00:  6F 6F 70 69 6E 67 20 6C 61 62 65 6C 20 2A 2F 0D    ooping label */.
00CE10:  0A 20 20 70 74 72 5B 57 51 45 58 49 54 5D 3D 67    .  ptr[WQEXIT]=g
00CE20:  65 74 6C 61 62 65 6C 28 29 3B 09 2F 2A 20 61 6E    etlabel();./* an
00CE30:  64 20 65 78 69 74 20 6C 61 62 65 6C 20 2A 2F 0D    d exit label */.
00CE40:  0A 20 20 69 66 20 28 77 71 70 74 72 3D 3D 57 51    .  if (wqptr==WQ
00CE50:  4D 41 58 29 20 7B 0D 0A 20 20 20 20 65 72 72 6F    MAX) {..    erro
00CE60:  72 28 22 74 6F 6F 20 6D 61 6E 79 20 61 63 74 69    r("too many acti
00CE70:  76 65 20 6C 6F 6F 70 73 22 29 3B 0D 0A 20 20 20    ve loops");..   
00CE80:  20 61 62 6F 72 74 28 45 52 52 43 4F 44 45 29 3B     abort(ERRCODE);
00CE90:  0D 0A 20 20 20 20 7D 0D 0A 20 20 6B 3D 30 3B 0D    ..    }..  k=0;.
00CEA0:  0A 20 20 77 68 69 6C 65 20 28 6B 3C 57 51 53 49    .  while (k<WQSI
00CEB0:  5A 29 20 2A 77 71 70 74 72 2B 2B 20 3D 20 70 74    Z) *wqptr++ = pt
00CEC0:  72 5B 6B 2B 2B 5D 3B 0D 0A 20 20 7D 0D 0A 0D 0A    r[k++];..  }....
00CED0:  64 65 6C 77 68 69 6C 65 28 29 20 7B 0D 0A 20 20    delwhile() {..  
00CEE0:  69 66 20 28 77 71 70 74 72 20 3E 20 77 71 29 20    if (wqptr > wq) 
00CEF0:  77 71 70 74 72 3D 77 71 70 74 72 2D 57 51 53 49    wqptr=wqptr-WQSI
00CF00:  5A 3B 0D 0A 20 20 7D 0D 0A 0D 0A 72 65 61 64 77    Z;..  }....readw
00CF10:  68 69 6C 65 28 70 74 72 29 20 69 6E 74 20 2A 70    hile(ptr) int *p
00CF20:  74 72 3B 20 7B 0D 0A 20 20 69 66 20 28 70 74 72    tr; {..  if (ptr
00CF30:  20 3C 3D 20 77 71 29 20 7B 0D 0A 20 20 20 20 65     <= wq) {..    e
00CF40:  72 72 6F 72 28 22 6F 75 74 20 6F 66 20 63 6F 6E    rror("out of con
00CF50:  74 65 78 74 22 29 3B 0D 0A 20 20 20 20 72 65 74    text");..    ret
00CF60:  75 72 6E 20 30 3B 0D 0A 20 20 20 20 7D 0D 0A 20    urn 0;..    }.. 
00CF70:  20 65 6C 73 65 20 72 65 74 75 72 6E 20 28 70 74     else return (pt
00CF80:  72 2D 57 51 53 49 5A 29 3B 0D 0A 20 7D 0D 0A 0D    r-WQSIZ);.. }...
00CF90:  0A 77 68 69 74 65 28 29 20 7B 0D 0A 23 69 66 64    .white() {..#ifd
00CFA0:  65 66 20 44 59 4E 41 4D 49 43 0D 0A 20 20 2F 2A    ef DYNAMIC..  /*
00CFB0:  20 74 65 73 74 20 66 6F 72 20 73 74 61 63 6B 2F     test for stack/
00CFC0:  70 72 6F 67 20 6F 76 65 72 6C 61 70 20 61 74 20    prog overlap at 
00CFD0:  64 65 65 70 65 73 74 20 6E 65 73 74 69 6E 67 20    deepest nesting 
00CFE0:  2A 2F 0D 0A 20 20 2F 2A 20 70 72 69 6D 61 72 79    */..  /* primary
00CFF0:  20 2D 3E 20 73 79 6D 6E 61 6D 65 20 2D 3E 20 62     -> symname -> b
00D000:  43 2D 53 59 4D 4D 41 58 29 29 20 7B 0D 0A 20 20    C-SYMMAX)) {..  
00D010:  20 20 20 20 65 72 72 6F 72 28 22 6C 6F 63 61 6C        error("local
00D020:  20 73 79 6D 62 6F 6C 20 74 61 62 6C 65 20 6F 76     symbol table ov
00D030:  65 72 66 6C 6F 77 22 29 3B 0D 0A 20 20 20 20 20    erflow");..     
00D040:  20 61 62 6F 72 74 28 45 52 52 43 4F 44 45 29 3B     abort(ERRCODE);
00D050:  0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 63    ..      }..    c
00D060:  70 74 72 20 3D 20 2A 6C 67 70 74 72 70 74 72 3B    ptr = *lgptrptr;
00D070:  0D 0A 20 20 20 20 7D 0D 0A 20 20 63 70 74 72 5B    ..    }..  cptr[
00D080:  49 44 45 4E 54 5D 3D 69 64 3B 0D 0A 20 20 63 70    IDENT]=id;..  cp
00D090:  74 72 5B 54 59 50 45 5D 3D 74 79 70 3B 0D 0A 20    tr[TYPE]=typ;.. 
00D0A0:  20 63 70 74 72 5B 43 4C 41 53 53 5D 3D 63 6C 61     cptr[CLASS]=cla
00D0B0:  73 73 3B 0D 0A 20 20 70 75 74 69 6E 74 28 76 61    ss;..  putint(va
00D0C0:  6C 75 65 2C 20 63 70 74 72 2B 4F 46 46 53 45 54    lue, cptr+OFFSET
00D0D0:  2C 20 4F 46 46 53 49 5A 45 29 3B 0D 0A 20 20 63    , OFFSIZE);..  c
00D0E0:  70 74 72 33 20 3D 20 63 70 74 72 32 20 3D 20 63    ptr3 = cptr2 = c
00D0F0:  70 74 72 20 2B 20 4E 41 4D 45 3B 0D 0A 20 20 77    ptr + NAME;..  w
00D100:  68 69 6C 65 28 61 6E 28 2A 73 6E 61 6D 65 29 29    hile(an(*sname))
00D110:  20 2A 63 70 74 72 32 2B 2B 20 3D 20 2A 73 6E 61     *cptr2++ = *sna
00D120:  6D 65 2B 2B 3B 0D 0A 20 20 69 66 28 6C 67 70 74    me++;..  if(lgpt
00D130:  72 70 74 72 20 3D 3D 20 26 6C 6F 63 70 74 72 29    rptr == &locptr)
00D140:  20 7B 0D 0A 20 20 20 20 2A 63 70 74 72 32 20 3D     {..    *cptr2 =
00D150:  20 63 70 74 72 32 20 2D 20 63 70 74 72 33 3B 09     cptr2 - cptr3;.
00D160:  2F 2A 20 73 65 74 20 6C 65 6E 67 74 68 20 2A 2F    /* set length */
00D170:  0D 0A 20 20 20 20 2A 6C 67 70 74 72 70 74 72 20    ..    *lgptrptr 
00D180:  3D 20 2B 2B 63 70 74 72 32 3B 0D 0A 20 20 20 20    = ++cptr2;..    
00D190:  7D 0D 0A 20 20 72 65 74 75 72 6E 20 63 70 74 72    }..  return cptr
00D1A0:  3B 0D 0A 20 20 7D 0D 0A 0D 0A 6E 65 78 74 73 79    ;..  }....nextsy
00D1B0:  6D 28 65 6E 74 72 79 29 20 63 68 61 72 20 2A 65    m(entry) char *e
00D1C0:  6E 74 72 79 3B 20 7B 0D 0A 20 20 65 6E 74 72 79    ntry; {..  entry
00D1D0:  20 3D 20 65 6E 74 72 79 20 2B 20 4E 41 4D 45 3B     = entry + NAME;
00D1E0:  0D 0A 20 20 77 68 69 6C 65 28 2A 65 6E 74 72 79    ..  while(*entry
00D1F0:  2B 2B 20 3E 3D 20 27 20 27 29 3B 09 2F 2A 20 66    ++ >= ' ');./* f
00D200:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00D210:  0B 00 01 00 02 09 52 E5 0B 00 41 02 00 00 00 02    ......R...A.....
00D220:  0B 00 46 02 00 00 00 02 0B 00 42 02 00 00 00 02    ..F.......B.....
00D230:  0B 00 47 02 00 00 00 02 0B 00 43 02 00 00 00 02    ..G.......C.....
00D240:  0B 00 48 02 00 00 00 02 0B 00 44 02 00 00 00 02    ..H.......D.....
00D250:  0B 00 49 02 00 00 00 02 0B 00 45 02 00 00 00 02    ..I.......E.....
00D260:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D270:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D280:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D290:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D300:  6C 61 6E 6B 73 20 2D 3E 20 77 68 69 74 65 20 2A    lanks -> white *
00D310:  2F 0D 0A 20 20 61 76 61 69 6C 28 59 45 53 29 3B    /..  avail(YES);
00D320:  09 09 2F 2A 20 61 62 6F 72 74 20 6F 6E 20 73 74    ../* abort on st
00D330:  61 63 6B 20 6F 76 65 72 66 6C 6F 77 20 2A 2F 0D    ack overflow */.
00D340:  0A 23 65 6E 64 69 66 0D 0A 20 20 72 65 74 75 72    .#endif..  retur
00D350:  6E 20 28 2A 6C 70 74 72 3C 3D 20 27 20 27 20 26    n (*lptr<= ' ' &
00D360:  26 20 2A 6C 70 74 72 21 3D 4E 55 4C 4C 29 3B 0D    & *lptr!=NULL);.
00D370:  0A 20 20 7D 0D 0A 0D 0A 67 63 68 28 29 20 7B 0D    .  }....gch() {.
00D380:  0A 20 20 69 6E 74 20 63 3B 0D 0A 20 20 69 66 28    .  int c;..  if(
00D390:  63 3D 63 68 29 20 62 75 6D 70 28 31 29 3B 0D 0A    c=ch) bump(1);..
00D3A0:  20 20 72 65 74 75 72 6E 20 63 3B 0D 0A 20 20 7D      return c;..  }
00D3B0:  0D 0A 0D 0A 62 75 6D 70 28 6E 29 20 69 6E 74 20    ....bump(n) int 
00D3C0:  6E 3B 20 7B 0D 0A 20 20 69 66 28 6E 29 20 6C 70    n; {..  if(n) lp
00D3D0:  74 72 3D 6C 70 74 72 2B 6E 3B 0D 0A 20 20 65 6C    tr=lptr+n;..  el
00D3E0:  73 65 20 20 6C 70 74 72 3D 6C 69 6E 65 3B 0D 0A    se  lptr=line;..
00D3F0:  20 20 69 66 28 63 68 3D 6E 63 68 20 3D 20 2A 6C      if(ch=nch = *l
00D400:  70 74 72 29 20 6E 63 68 20 3D 20 2A 28 6C 70 74    ptr) nch = *(lpt
00D410:  72 2B 31 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 6B 69    r+1);..  }....ki
00D420:  6C 6C 28 29 20 7B 0D 0A 20 20 2A 6C 69 6E 65 3D    ll() {..  *line=
00D430:  30 3B 0D 0A 20 20 62 75 6D 70 28 30 29 3B 0D 0A    0;..  bump(0);..
00D440:  20 20 7D 0D 0A 0D 0A 69 6E 62 79 74 65 28 29 20      }....inbyte() 
00D450:  20 7B 0D 0A 20 20 77 68 69 6C 65 28 63 68 3D 3D     {..  while(ch==
00D460:  30 29 20 7B 0D 0A 20 20 20 20 69 66 20 28 65 6F    0) {..    if (eo
00D470:  66 29 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20    f) return 0;..  
00D480:  20 20 70 72 65 70 72 6F 63 65 73 73 28 29 3B 0D      preprocess();.
00D490:  0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E    .    }..  return
00D4A0:  20 67 63 68 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A     gch();..  }....
00D4B0:  69 6E 6C 69 6E 65 28 29 20 7B 09 09 09 2F 2A 20    inline() {.../* 
00D4C0:  6E 75 6D 65 72 6F 75 73 20 72 65 76 69 73 69 6F    numerous revisio
00D4D0:  6E 73 20 2A 2F 0D 0A 20 20 69 6E 74 20 6B 2C 75    ns */..  int k,u
00D4E0:  6E 69 74 3B 0D 0A 20 20 70 6F 6C 6C 28 31 29 3B    nit;..  poll(1);
00D4F0:  09 09 09 2F 2A 20 61 6C 6C 6F 77 20 6F 70 65 72    .../* allow oper
00D500:  20 77 68 69 6C 65 28 28 63 68 21 3D 33 39 29 7C     while((ch!=39)|
00D510:  28 28 2A 28 6C 70 74 72 2D 31 29 3D 3D 39 32 29    ((*(lptr-1)==92)
00D520:  26 28 2A 28 6C 70 74 72 2D 32 29 21 3D 39 32 29    &(*(lptr-2)!=92)
00D530:  29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 69 66    )) {..        if
00D540:  28 63 68 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 20    (ch==0) {..     
00D550:  20 20 20 20 20 65 72 72 6F 72 28 22 6E 6F 20 61         error("no a
00D560:  70 6F 73 74 72 6F 70 68 65 22 29 3B 0D 0A 20 20    postrophe");..  
00D570:  20 20 20 20 20 20 20 20 62 72 65 61 6B 3B 0D 0A            break;..
00D580:  20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20              }..   
00D590:  20 20 20 20 20 6B 65 65 70 63 68 28 67 63 68 28         keepch(gch(
00D5A0:  29 29 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A    ));..        }..
00D5B0:  20 20 20 20 20 20 67 63 68 28 29 3B 0D 0A 20 20          gch();..  
00D5C0:  20 20 20 20 6B 65 65 70 63 68 28 33 39 29 3B 0D        keepch(39);.
00D5D0:  0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 65 6C    .      }..    el
00D5E0:  73 65 20 69 66 28 28 63 68 3D 3D 27 2F 27 29 26    se if((ch=='/')&
00D5F0:  28 6E 63 68 3D 3D 27 2A 27 29 29 20 7B 0D 0A 20    (nch=='*')) {.. 
00D600:  20 20 20 20 20 62 75 6D 70 28 32 29 3B 0D 0A 20         bump(2);.. 
00D610:  20 20 20 20 20 77 68 69 6C 65 28 28 28 63 68 3D         while(((ch=
00D620:  3D 27 2A 27 29 26 28 6E 63 68 3D 3D 27 2F 27 29    ='*')&(nch=='/')
00D630:  29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 20 20 20    )==0) {..       
00D640:  20 69 66 28 63 68 29 20 62 75 6D 70 28 31 29 3B     if(ch) bump(1);
00D650:  0D 0A 20 20 20 20 20 20 20 20 65 6C 73 65 20 7B    ..        else {
00D660:  0D 0A 20 20 20 20 20 20 20 20 20 20 69 66 6C 69    ..          ifli
00D670:  6E 65 28 29 3B 0D 0A 20 20 20 20 20 20 20 20 20    ne();..         
00D680:  20 69 66 28 65 6F 66 29 20 62 72 65 61 6B 3B 0D     if(eof) break;.
00D690:  0A 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20    .          }..  
00D6A0:  20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 62          }..      b
00D6B0:  75 6D 70 28 32 29 3B 0D 0A 20 20 20 20 20 20 7D    ump(2);..      }
00D6C0:  0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 61 6E    ..    else if(an
00D6D0:  28 63 68 29 29 20 7B 0D 0A 20 20 20 20 20 20 6B    (ch)) {..      k
00D6E0:  3D 30 3B 0D 0A 20 20 20 20 20 20 77 68 69 6C 65    =0;..      while
00D6F0:  28 28 61 6E 28 63 68 29 29 20 26 20 28 6B 3C 4E    ((an(ch)) & (k<N
00D700:  61 74 6F 72 20 69 6E 74 65 72 72 75 70 74 69 6F    ator interruptio
00D710:  6E 20 2A 2F 0D 0A 20 20 69 66 20 28 69 6E 70 75    n */..  if (inpu
00D720:  74 3D 3D 45 4F 46 29 20 6F 70 65 6E 66 69 6C 65    t==EOF) openfile
00D730:  28 29 3B 0D 0A 20 20 69 66 28 65 6F 66 29 20 72    ();..  if(eof) r
00D740:  65 74 75 72 6E 3B 0D 0A 20 20 69 66 28 28 75 6E    eturn;..  if((un
00D750:  69 74 3D 69 6E 70 75 74 32 29 3D 3D 45 4F 46 29    it=input2)==EOF)
00D760:  20 75 6E 69 74 3D 69 6E 70 75 74 3B 0D 0A 20 20     unit=input;..  
00D770:  69 66 28 66 67 65 74 73 28 6C 69 6E 65 2C 20 4C    if(fgets(line, L
00D780:  49 4E 45 4D 41 58 2C 20 75 6E 69 74 29 3D 3D 4E    INEMAX, unit)==N
00D790:  55 4C 4C 29 20 7B 0D 0A 20 20 20 20 66 63 6C 6F    ULL) {..    fclo
00D7A0:  73 65 28 75 6E 69 74 29 3B 0D 0A 20 20 20 20 69    se(unit);..    i
00D7B0:  66 28 69 6E 70 75 74 32 21 3D 45 4F 46 29 20 69    f(input2!=EOF) i
00D7C0:  6E 70 75 74 32 3D 45 4F 46 3B 0D 0A 20 20 20 20    nput2=EOF;..    
00D7D0:  65 6C 73 65 20 69 6E 70 75 74 3D 45 4F 46 3B 0D    else input=EOF;.
00D7E0:  0A 20 20 20 20 2A 6C 69 6E 65 3D 4E 55 4C 4C 3B    .    *line=NULL;
00D7F0:  0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20    ..    }..  else 
00D800:  69 66 28 6C 69 73 74 66 70 29 20 7B 0D 0A 20 20    if(listfp) {..  
00D810:  20 20 69 66 28 6C 69 73 74 66 70 3D 3D 6F 75 74      if(listfp==out
00D820:  70 75 74 29 20 63 6F 75 74 28 27 3B 27 2C 20 6F    put) cout(';', o
00D830:  75 74 70 75 74 29 3B 0D 0A 20 20 20 20 73 6F 75    utput);..    sou
00D840:  74 28 6C 69 6E 65 2C 20 6C 69 73 74 66 70 29 3B    t(line, listfp);
00D850:  0D 0A 20 20 20 20 7D 0D 0A 20 20 62 75 6D 70 28    ..    }..  bump(
00D860:  30 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20    0);..  }....>>> 
00D870:  43 43 32 32 2E 43 20 36 38 36 36 0D 0A 69 66 6C    CC22.C 6866..ifl
00D880:  69 6E 65 28 29 20 7B 0D 0A 20 20 77 68 69 6C 65    ine() {..  while
00D890:  28 31 29 20 7B 0D 0A 20 20 20 20 69 6E 6C 69 6E    (1) {..    inlin
00D8A0:  65 28 29 3B 0D 0A 20 20 20 20 69 66 28 65 6F 66    e();..    if(eof
00D8B0:  29 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 69    ) return;..    i
00D8C0:  66 28 6D 61 74 63 68 28 22 23 69 66 64 65 66 22    f(match("#ifdef"
00D8D0:  29 29 20 7B 0D 0A 20 20 20 20 20 20 2B 2B 69 66    )) {..      ++if
00D8E0:  6C 65 76 65 6C 3B 0D 0A 20 20 20 20 20 20 69 66    level;..      if
00D8F0:  28 73 6B 69 70 6C 65 76 65 6C 29 20 63 6F 6E 74    (skiplevel) cont
00D900:  41 4D 45 4D 41 58 29 29 20 7B 0D 0A 20 20 20 20    AMEMAX)) {..    
00D910:  20 20 20 20 6D 73 6E 61 6D 65 5B 6B 2B 2B 5D 3D        msname[k++]=
00D920:  63 68 3B 0D 0A 20 20 20 20 20 20 20 20 67 63 68    ch;..        gch
00D930:  28 29 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A    ();..        }..
00D940:  20 20 20 20 20 20 6D 73 6E 61 6D 65 5B 6B 5D 3D          msname[k]=
00D950:  30 3B 0D 0A 20 20 20 20 20 20 69 66 28 73 65 61    0;..      if(sea
00D960:  72 63 68 28 6D 73 6E 61 6D 65 2C 20 6D 61 63 6E    rch(msname, macn
00D970:  2C 20 4E 41 4D 45 53 49 5A 45 2B 32 2C 20 4D 41    , NAMESIZE+2, MA
00D980:  43 4E 45 4E 44 2C 20 4D 41 43 4E 42 52 2C 20 30    CNEND, MACNBR, 0
00D990:  29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6B 3D    )) {..        k=
00D9A0:  67 65 74 69 6E 74 28 63 70 74 72 2B 4E 41 4D 45    getint(cptr+NAME
00D9B0:  53 49 5A 45 2C 20 32 29 3B 0D 0A 20 20 20 20 20    SIZE, 2);..     
00D9C0:  20 20 20 77 68 69 6C 65 28 63 3D 6D 61 63 71 5B       while(c=macq[
00D9D0:  6B 2B 2B 5D 29 20 6B 65 65 70 63 68 28 63 29 3B    k++]) keepch(c);
00D9E0:  0D 0A 20 20 20 20 20 20 20 20 77 68 69 6C 65 28    ..        while(
00D9F0:  61 6E 28 63 68 29 29 20 67 63 68 28 29 3B 0D 0A    an(ch)) gch();..
00DA00:  20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20            }..     
00DA10:  20 65 6C 73 65 20 7B 0D 0A 20 20 20 20 20 20 20     else {..       
00DA20:  20 6B 3D 30 3B 0D 0A 20 20 20 20 20 20 20 20 77     k=0;..        w
00DA30:  68 69 6C 65 28 63 3D 6D 73 6E 61 6D 65 5B 6B 2B    hile(c=msname[k+
00DA40:  2B 5D 29 20 6B 65 65 70 63 68 28 63 29 3B 0D 0A    +]) keepch(c);..
00DA50:  20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20            }..     
00DA60:  20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 6B 65 65     }..    else kee
00DA70:  70 63 68 28 67 63 68 28 29 29 3B 0D 0A 20 20 20    pch(gch());..   
00DA80:  20 7D 0D 0A 20 20 69 66 28 70 70 74 72 3E 3D 4C     }..  if(pptr>=L
00DA90:  49 4E 45 4D 41 58 29 20 65 72 72 6F 72 28 22 6C    INEMAX) error("l
00DAA0:  69 6E 65 20 74 6F 6F 20 6C 6F 6E 67 22 29 3B 0D    ine too long");.
00DAB0:  0A 20 20 6B 65 65 70 63 68 28 30 29 3B 0D 0A 20    .  keepch(0);.. 
00DAC0:  20 6C 69 6E 65 3D 70 6C 69 6E 65 3B 0D 0A 20 20     line=pline;..  
00DAD0:  62 75 6D 70 28 30 29 3B 0D 0A 20 20 7D 0D 0A 0D    bump(0);..  }...
00DAE0:  0A 6E 6F 69 66 65 72 72 28 29 20 7B 0D 0A 20 20    .noiferr() {..  
00DAF0:  65 72 72 6F 72 28 22 6E 6F 20 6D 61 74 63 68 69    error("no matchi
00DB00:  69 6E 75 65 3B 0D 0A 20 20 20 20 20 20 73 79 6D    inue;..      sym
00DB10:  6E 61 6D 65 28 6D 73 6E 61 6D 65 2C 20 4E 4F 29    name(msname, NO)
00DB20:  3B 0D 0A 20 20 20 20 20 20 69 66 28 73 65 61 72    ;..      if(sear
00DB30:  63 68 28 6D 73 6E 61 6D 65 2C 20 6D 61 63 6E 2C    ch(msname, macn,
00DB40:  20 4E 41 4D 45 53 49 5A 45 2B 32 2C 20 4D 41 43     NAMESIZE+2, MAC
00DB50:  4E 45 4E 44 2C 20 4D 41 43 4E 42 52 2C 20 30 29    NEND, MACNBR, 0)
00DB60:  3D 3D 30 29 0D 0A 20 20 20 20 20 20 20 20 73 6B    ==0)..        sk
00DB70:  69 70 6C 65 76 65 6C 3D 69 66 6C 65 76 65 6C 3B    iplevel=iflevel;
00DB80:  0D 0A 20 20 20 20 20 20 63 6F 6E 74 69 6E 75 65    ..      continue
00DB90:  3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20    ;..      }..    
00DBA0:  69 66 28 6D 61 74 63 68 28 22 23 69 66 6E 64 65    if(match("#ifnde
00DBB0:  66 22 29 29 20 7B 0D 0A 20 20 20 20 20 20 2B 2B    f")) {..      ++
00DBC0:  69 66 6C 65 76 65 6C 3B 0D 0A 20 20 20 20 20 20    iflevel;..      
00DBD0:  69 66 28 73 6B 69 70 6C 65 76 65 6C 29 20 63 6F    if(skiplevel) co
00DBE0:  6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 20 73    ntinue;..      s
00DBF0:  79 6D 6E 61 6D 65 28 6D 73 6E 61 6D 65 2C 20 4E    ymname(msname, N
00DC00:  4F 29 3B 0D 0A 20 20 20 20 20 20 69 66 28 73 65    O);..      if(se
00DC10:  61 72 63 68 28 6D 73 6E 61 6D 65 2C 20 6D 61 63    arch(msname, mac
00DC20:  6E 2C 20 4E 41 4D 45 53 49 5A 45 2B 32 2C 20 4D    n, NAMESIZE+2, M
00DC30:  41 43 4E 45 4E 44 2C 20 4D 41 43 4E 42 52 2C 20    ACNEND, MACNBR, 
00DC40:  30 29 29 0D 0A 20 20 20 20 20 20 20 20 73 6B 69    0))..        ski
00DC50:  70 6C 65 76 65 6C 3D 69 66 6C 65 76 65 6C 3B 0D    plevel=iflevel;.
00DC60:  0A 20 20 20 20 20 20 63 6F 6E 74 69 6E 75 65 3B    .      continue;
00DC70:  0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 69    ..      }..    i
00DC80:  66 28 6D 61 74 63 68 28 22 23 65 6C 73 65 22 29    f(match("#else")
00DC90:  29 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 69 66    ) {..      if(if
00DCA0:  6C 65 76 65 6C 29 20 7B 0D 0A 20 20 20 20 20 20    level) {..      
00DCB0:  20 20 69 66 28 73 6B 69 70 6C 65 76 65 6C 3D 3D      if(skiplevel==
00DCC0:  69 66 6C 65 76 65 6C 29 20 73 6B 69 70 6C 65 76    iflevel) skiplev
00DCD0:  65 6C 3D 30 3B 0D 0A 20 20 20 20 20 20 20 20 65    el=0;..        e
00DCE0:  6C 73 65 20 69 66 28 73 6B 69 70 6C 65 76 65 6C    lse if(skiplevel
00DCF0:  3D 3D 30 29 20 20 73 6B 69 70 6C 65 76 65 6C 3D    ==0)  skiplevel=
00DD00:  6E 67 20 23 69 66 2E 2E 2E 22 29 3B 0D 0A 20 20    ng #if...");..  
00DD10:  65 72 72 66 6C 61 67 3D 30 3B 0D 0A 20 20 7D 0D    errflag=0;..  }.
00DD20:  0A 0D 0A 61 64 64 6D 61 63 28 29 20 7B 0D 0A 20    ...addmac() {.. 
00DD30:  20 69 6E 74 20 6B 3B 0D 0A 20 20 69 66 28 73 79     int k;..  if(sy
00DD40:  6D 6E 61 6D 65 28 6D 73 6E 61 6D 65 2C 20 4E 4F    mname(msname, NO
00DD50:  29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 69 6C 6C    )==0) {..    ill
00DD60:  6E 61 6D 65 28 29 3B 0D 0A 20 20 20 20 6B 69 6C    name();..    kil
00DD70:  6C 28 29 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E    l();..    return
00DD80:  3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 6B 3D 30 3B    ;..    }..  k=0;
00DD90:  0D 0A 20 20 69 66 28 73 65 61 72 63 68 28 6D 73    ..  if(search(ms
00DDA0:  6E 61 6D 65 2C 20 6D 61 63 6E 2C 20 4E 41 4D 45    name, macn, NAME
00DDB0:  53 49 5A 45 2B 32 2C 20 4D 41 43 4E 45 4E 44 2C    SIZE+2, MACNEND,
00DDC0:  20 4D 41 43 4E 42 52 2C 20 30 29 3D 3D 30 29 20     MACNBR, 0)==0) 
00DDD0:  7B 0D 0A 20 20 20 20 69 66 28 63 70 74 72 32 3D    {..    if(cptr2=
00DDE0:  63 70 74 72 29 20 77 68 69 6C 65 28 2A 63 70 74    cptr) while(*cpt
00DDF0:  72 32 2B 2B 20 3D 20 6D 73 6E 61 6D 65 5B 6B 2B    r2++ = msname[k+
00DE00:  2B 5D 29 3B 0D 0A 20 20 20 20 65 6C 73 65 20 7B    +]);..    else {
00DE10:  0D 0A 20 20 20 20 20 20 65 72 72 6F 72 28 22 6D    ..      error("m
00DE20:  61 63 72 6F 20 6E 61 6D 65 20 74 61 62 6C 65 20    acro name table 
00DE30:  66 75 6C 6C 22 29 3B 0D 0A 20 20 20 20 20 20 72    full");..      r
00DE40:  65 74 75 72 6E 3B 0D 0A 20 20 20 20 20 20 7D 0D    eturn;..      }.
00DE50:  0A 20 20 20 20 7D 0D 0A 20 20 70 75 74 69 6E 74    .    }..  putint
00DE60:  28 6D 61 63 70 74 72 2C 20 63 70 74 72 2B 4E 41    (macptr, cptr+NA
00DE70:  4D 45 53 49 5A 45 2C 20 32 29 3B 0D 0A 20 20 77    MESIZE, 2);..  w
00DE80:  68 69 6C 65 28 77 68 69 74 65 28 29 29 20 67 63    hile(white()) gc
00DE90:  68 28 29 3B 0D 0A 20 20 77 68 69 6C 65 28 70 75    h();..  while(pu
00DEA0:  74 6D 61 63 28 67 63 68 28 29 29 29 3B 0D 0A 20    tmac(gch()));.. 
00DEB0:  20 69 66 28 6D 61 63 70 74 72 3E 3D 4D 41 43 4D     if(macptr>=MACM
00DEC0:  41 58 29 20 7B 0D 0A 20 20 20 20 65 72 72 6F 72    AX) {..    error
00DED0:  28 22 6D 61 63 72 6F 20 73 74 72 69 6E 67 20 71    ("macro string q
00DEE0:  75 65 75 65 20 66 75 6C 6C 22 29 3B 20 61 62 6F    ueue full"); abo
00DEF0:  72 74 28 45 52 52 43 4F 44 45 29 3B 0D 0A 20 20    rt(ERRCODE);..  
00DF00:  69 66 6C 65 76 65 6C 3B 0D 0A 20 20 20 20 20 20    iflevel;..      
00DF10:  20 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20      }..      else 
00DF20:  6E 6F 69 66 65 72 72 28 29 3B 0D 0A 20 20 20 20    noiferr();..    
00DF30:  20 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20      continue;..   
00DF40:  20 20 20 7D 0D 0A 20 20 20 20 69 66 28 6D 61 74       }..    if(mat
00DF50:  63 68 28 22 23 65 6E 64 69 66 22 29 29 20 7B 0D    ch("#endif")) {.
00DF60:  0A 20 20 20 20 20 20 69 66 28 69 66 6C 65 76 65    .      if(ifleve
00DF70:  6C 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 69 66    l) {..        if
00DF80:  28 73 6B 69 70 6C 65 76 65 6C 3D 3D 69 66 6C 65    (skiplevel==ifle
00DF90:  76 65 6C 29 20 73 6B 69 70 6C 65 76 65 6C 3D 30    vel) skiplevel=0
00DFA0:  3B 0D 0A 20 20 20 20 20 20 20 20 2D 2D 69 66 6C    ;..        --ifl
00DFB0:  65 76 65 6C 3B 0D 0A 20 20 20 20 20 20 20 20 7D    evel;..        }
00DFC0:  0D 0A 20 20 20 20 20 20 65 6C 73 65 20 6E 6F 69    ..      else noi
00DFD0:  66 65 72 72 28 29 3B 0D 0A 20 20 20 20 20 20 63    ferr();..      c
00DFE0:  6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 20 20    ontinue;..      
00DFF0:  7D 0D 0A 20 20 20 20 69 66 28 73 6B 69 70 6C 65    }..    if(skiple
00E000:  76 65 6C 29 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A    vel) continue;..
00E010:  20 20 20 20 69 66 28 63 68 3D 3D 30 29 20 63 6F        if(ch==0) co
00E020:  6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 62 72 65    ntinue;..    bre
00E030:  61 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D    ak;..    }..  }.
00E040:  0A 0D 0A 6B 65 65 70 63 68 28 63 29 20 20 63 68    ...keepch(c)  ch
00E050:  61 72 20 63 3B 20 7B 0D 0A 20 20 69 66 28 70 70    ar c; {..  if(pp
00E060:  74 72 3C 4C 49 4E 45 4D 41 58 29 20 70 6C 69 6E    tr<LINEMAX) plin
00E070:  65 5B 2B 2B 70 70 74 72 5D 3D 63 3B 0D 0A 20 20    e[++pptr]=c;..  
00E080:  7D 0D 0A 0D 0A 70 72 65 70 72 6F 63 65 73 73 28    }....preprocess(
00E090:  29 20 7B 0D 0A 20 20 69 6E 74 20 6B 3B 0D 0A 20    ) {..  int k;.. 
00E0A0:  20 63 68 61 72 20 63 3B 0D 0A 20 20 69 66 28 63     char c;..  if(c
00E0B0:  63 6F 64 65 29 20 7B 0D 0A 20 20 20 20 6C 69 6E    code) {..    lin
00E0C0:  65 3D 6D 6C 69 6E 65 3B 0D 0A 20 20 20 20 69 66    e=mline;..    if
00E0D0:  6C 69 6E 65 28 29 3B 0D 0A 20 20 20 20 69 66 28    line();..    if(
00E0E0:  65 6F 66 29 20 72 65 74 75 72 6E 3B 0D 0A 20 20    eof) return;..  
00E0F0:  20 20 7D 0D 0A 20 20 65 6C 73 65 20 7B 0D 0A 20      }..  else {.. 
00E100:  20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 70 75 74 6D      }..  }....putm
00E110:  61 63 28 63 29 20 20 63 68 61 72 20 63 3B 20 7B    ac(c)  char c; {
00E120:  0D 0A 20 20 6D 61 63 71 5B 6D 61 63 70 74 72 5D    ..  macq[macptr]
00E130:  3D 63 3B 0D 0A 20 20 69 66 28 6D 61 63 70 74 72    =c;..  if(macptr
00E140:  3C 4D 41 43 4D 41 58 29 20 2B 2B 6D 61 63 70 74    <MACMAX) ++macpt
00E150:  72 3B 0D 0A 20 20 72 65 74 75 72 6E 20 63 3B 0D    r;..  return c;.
00E160:  0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 73    .  }..../*..** s
00E170:  65 61 72 63 68 20 66 6F 72 20 73 79 6D 62 6F 6C    earch for symbol
00E180:  20 6D 61 74 63 68 0D 0A 2A 2A 20 6F 6E 20 72 65     match..** on re
00E190:  74 75 72 6E 20 63 70 74 72 20 70 6F 69 6E 74 73    turn cptr points
00E1A0:  20 74 6F 20 73 6C 6F 74 20 66 6F 75 6E 64 20 6F     to slot found o
00E1B0:  72 20 65 6D 70 74 79 20 73 6C 6F 74 0D 0A 2A 2F    r empty slot..*/
00E1C0:  0D 0A 73 65 61 72 63 68 28 73 6E 61 6D 65 2C 20    ..search(sname, 
00E1D0:  62 75 66 2C 20 6C 65 6E 2C 20 65 6E 64 2C 20 6D    buf, len, end, m
00E1E0:  61 78 2C 20 6F 66 66 29 0D 0A 20 20 63 68 61 72    ax, off)..  char
00E1F0:  20 2A 73 6E 61 6D 65 2C 20 2A 62 75 66 2C 20 2A     *sname, *buf, *
00E200:  65 6E 64 3B 20 20 69 6E 74 20 6C 65 6E 2C 20 6D    end;  int len, m
00E210:  61 78 2C 20 6F 66 66 3B 20 7B 0D 0A 20 20 63 70    ax, off; {..  cp
00E220:  74 72 3D 63 70 74 72 32 3D 62 75 66 2B 28 28 68    tr=cptr2=buf+((h
00E230:  61 73 68 28 73 6E 61 6D 65 29 25 28 6D 61 78 2D    ash(sname)%(max-
00E240:  31 29 29 2A 6C 65 6E 29 3B 0D 0A 20 20 77 68 69    1))*len);..  whi
00E250:  6C 65 28 2A 63 70 74 72 20 21 3D 20 30 29 20 7B    le(*cptr != 0) {
00E260:  0D 0A 20 20 20 20 69 66 28 61 73 74 72 65 71 28    ..    if(astreq(
00E270:  73 6E 61 6D 65 2C 20 63 70 74 72 2B 6F 66 66 2C    sname, cptr+off,
00E280:  20 4E 41 4D 45 4D 41 58 29 29 20 72 65 74 75 72     NAMEMAX)) retur
00E290:  6E 20 31 3B 0D 0A 20 20 20 20 69 66 28 28 63 70    n 1;..    if((cp
00E2A0:  74 72 3D 63 70 74 72 2B 6C 65 6E 29 20 3E 3D 20    tr=cptr+len) >= 
00E2B0:  65 6E 64 29 20 63 70 74 72 3D 62 75 66 3B 0D 0A    end) cptr=buf;..
00E2C0:  20 20 20 20 69 66 28 63 70 74 72 20 3D 3D 20 63        if(cptr == c
00E2D0:  70 74 72 32 29 20 72 65 74 75 72 6E 20 28 63 70    ptr2) return (cp
00E2E0:  74 72 3D 30 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20    tr=0);..    }.. 
00E2F0:  20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 7D 0D     return 0;..  }.
00E300:  20 20 20 6C 69 6E 65 3D 70 6C 69 6E 65 3B 0D 0A       line=pline;..
00E310:  20 20 20 20 69 6E 6C 69 6E 65 28 29 3B 0D 0A 20        inline();.. 
00E320:  20 20 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20       return;..    
00E330:  7D 0D 0A 20 20 70 70 74 72 20 3D 20 2D 31 3B 0D    }..  pptr = -1;.
00E340:  0A 20 20 77 68 69 6C 65 28 63 68 20 21 3D 20 4E    .  while(ch != N
00E350:  45 57 4C 49 4E 45 20 26 26 20 63 68 29 20 7B 0D    EWLINE && ch) {.
00E360:  0A 20 20 20 20 69 66 28 77 68 69 74 65 28 29 29    .    if(white())
00E370:  20 7B 0D 0A 20 20 20 20 20 20 6B 65 65 70 63 68     {..      keepch
00E380:  28 27 20 27 29 3B 0D 0A 20 20 20 20 20 20 77 68    (' ');..      wh
00E390:  69 6C 65 28 77 68 69 74 65 28 29 29 20 67 63 68    ile(white()) gch
00E3A0:  28 29 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20    ();..      }..  
00E3B0:  20 20 65 6C 73 65 20 69 66 28 63 68 3D 3D 27 22      else if(ch=='"
00E3C0:  27 29 20 7B 0D 0A 20 20 20 20 20 20 6B 65 65 70    ') {..      keep
00E3D0:  63 68 28 63 68 29 3B 0D 0A 20 20 20 20 20 20 67    ch(ch);..      g
00E3E0:  63 68 28 29 3B 0D 0A 20 20 20 20 20 20 77 68 69    ch();..      whi
00E3F0:  6C 65 28 28 63 68 21 3D 27 22 27 29 7C 28 28 2A    le((ch!='"')|((*
00E400:  28 6C 70 74 72 2D 31 29 3D 3D 39 32 29 26 28 2A    (lptr-1)==92)&(*
00E410:  28 6C 70 74 72 2D 32 29 21 3D 39 32 29 29 29 20    (lptr-2)!=92))) 
00E420:  7B 0D 0A 20 20 20 20 20 20 20 20 69 66 28 63 68    {..        if(ch
00E430:  3D 3D 30 29 20 7B 0D 0A 20 20 20 20 20 20 20 20    ==0) {..        
00E440:  20 20 65 72 72 6F 72 28 22 6E 6F 20 71 75 6F 74      error("no quot
00E450:  65 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20    e");..          
00E460:  62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 20 20    break;..        
00E470:  20 20 7D 0D 0A 20 20 20 20 20 20 20 20 6B 65 65      }..        kee
00E480:  70 63 68 28 67 63 68 28 29 29 3B 0D 0A 20 20 20    pch(gch());..   
00E490:  20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 67 63         }..      gc
00E4A0:  68 28 29 3B 0D 0A 20 20 20 20 20 20 6B 65 65 70    h();..      keep
00E4B0:  63 68 28 27 22 27 29 3B 0D 0A 20 20 20 20 20 20    ch('"');..      
00E4C0:  7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28 63    }..    else if(c
00E4D0:  68 3D 3D 33 39 29 20 7B 0D 0A 20 20 20 20 20 20    h==39) {..      
00E4E0:  6B 65 65 70 63 68 28 33 39 29 3B 0D 0A 20 20 20    keepch(39);..   
00E4F0:  20 20 20 67 63 68 28 29 3B 0D 0A 20 20 20 20 20       gch();..     
00E500:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00E510:  0C 00 01 00 02 09 52 E5 0C 00 41 02 00 00 00 02    ......R...A.....
00E520:  0C 00 46 02 00 00 00 02 0C 00 42 02 00 00 00 02    ..F.......B.....
00E530:  0C 00 47 02 00 00 00 02 0C 00 43 02 00 00 00 02    ..G.......C.....
00E540:  0C 00 48 02 00 00 00 02 0C 00 44 02 00 00 00 02    ..H.......D.....
00E550:  0C 00 49 02 00 00 00 02 0C 00 45 02 00 00 00 02    ..I.......E.....
00E560:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E570:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E580:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E590:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E600:  0A 0D 0A 68 61 73 68 28 73 6E 61 6D 65 29 20 63    ...hash(sname) c
00E610:  68 61 72 20 2A 73 6E 61 6D 65 3B 20 7B 0D 0A 20    har *sname; {.. 
00E620:  20 69 6E 74 20 69 2C 20 63 3B 0D 0A 20 20 69 3D     int i, c;..  i=
00E630:  30 3B 0D 0A 20 20 77 68 69 6C 65 28 63 20 3D 20    0;..  while(c = 
00E640:  2A 73 6E 61 6D 65 2B 2B 29 20 69 3D 28 69 3C 3C    *sname++) i=(i<<
00E650:  31 29 2B 63 3B 0D 0A 20 20 72 65 74 75 72 6E 20    1)+c;..  return 
00E660:  69 3B 0D 0A 20 20 7D 0D 0A 0D 0A 73 65 74 73 74    i;..  }....setst
00E670:  61 67 65 28 62 65 66 6F 72 65 2C 20 73 74 61 72    age(before, star
00E680:  74 29 20 69 6E 74 20 2A 62 65 66 6F 72 65 2C 20    t) int *before, 
00E690:  2A 73 74 61 72 74 3B 20 7B 0D 0A 20 20 69 66 28    *start; {..  if(
00E6A0:  28 2A 62 65 66 6F 72 65 3D 73 74 61 67 65 6E 65    (*before=stagene
00E6B0:  78 74 29 3D 3D 30 29 20 73 74 61 67 65 6E 65 78    xt)==0) stagenex
00E6C0:  74 3D 73 74 61 67 65 3B 0D 0A 20 20 2A 73 74 61    t=stage;..  *sta
00E6D0:  72 74 3D 73 74 61 67 65 6E 65 78 74 3B 0D 0A 20    rt=stagenext;.. 
00E6E0:  20 7D 0D 0A 0D 0A 63 6C 65 61 72 73 74 61 67 65     }....clearstage
00E6F0:  28 62 65 66 6F 72 65 2C 20 73 74 61 72 74 29 20    (before, start) 
00E700:  63 68 61 72 20 2A 62 65 66 6F 72 65 2C 20 2A 73    char *before, *s
00E710:  74 61 72 74 3B 20 7B 0D 0A 20 20 2A 73 74 61 67    tart; {..  *stag
00E720:  65 6E 65 78 74 3D 30 3B 0D 0A 20 20 69 66 28 73    enext=0;..  if(s
00E730:  74 61 67 65 6E 65 78 74 3D 62 65 66 6F 72 65 29    tagenext=before)
00E740:  20 72 65 74 75 72 6E 3B 0D 0A 20 20 69 66 28 73     return;..  if(s
00E750:  74 61 72 74 29 20 7B 0D 0A 23 69 66 64 65 66 20    tart) {..#ifdef 
00E760:  4F 50 54 49 4D 49 5A 45 0D 0A 20 20 20 20 70 65    OPTIMIZE..    pe
00E770:  65 70 68 6F 6C 65 28 73 74 61 72 74 29 3B 0D 0A    ephole(start);..
00E780:  23 65 6C 73 65 0D 0A 20 20 20 20 73 6F 75 74 28    #else..    sout(
00E790:  73 74 61 72 74 2C 20 6F 75 74 70 75 74 29 3B 0D    start, output);.
00E7A0:  0A 23 65 6E 64 69 66 0D 0A 20 20 20 20 7D 0D 0A    .#endif..    }..
00E7B0:  20 20 7D 0D 0A 0D 0A 6F 75 74 64 65 63 28 6E 75      }....outdec(nu
00E7C0:  6D 62 65 72 29 20 20 69 6E 74 20 6E 75 6D 62 65    mber)  int numbe
00E7D0:  72 3B 20 7B 0D 0A 20 20 69 6E 74 20 6B 2C 7A 73    r; {..  int k,zs
00E7E0:  3B 0D 0A 20 20 63 68 61 72 20 63 2C 20 2A 71 2C    ;..  char c, *q,
00E7F0:  20 2A 72 3B 0D 0A 20 20 7A 73 20 3D 20 30 3B 0D     *r;..  zs = 0;.
00E800:  7D 0D 0A 20 20 69 66 20 28 61 6E 28 73 74 72 31    }..  if (an(str1
00E810:  5B 6B 5D 29 29 72 65 74 75 72 6E 20 30 3B 0D 0A    [k]))return 0;..
00E820:  20 20 69 66 20 28 61 6E 28 73 74 72 32 5B 6B 5D      if (an(str2[k]
00E830:  29 29 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 72    ))return 0;..  r
00E840:  65 74 75 72 6E 20 6B 3B 0D 0A 20 7D 0D 0A 0D 0A    eturn k;.. }....
00E850:  6D 61 74 63 68 28 6C 69 74 29 20 20 63 68 61 72    match(lit)  char
00E860:  20 2A 6C 69 74 3B 20 7B 0D 0A 20 20 69 6E 74 20     *lit; {..  int 
00E870:  6B 3B 0D 0A 20 20 62 6C 61 6E 6B 73 28 29 3B 0D    k;..  blanks();.
00E880:  0A 20 20 69 66 20 28 6B 3D 73 74 72 65 71 28 6C    .  if (k=streq(l
00E890:  70 74 72 2C 6C 69 74 29 29 20 7B 0D 0A 20 20 20    ptr,lit)) {..   
00E8A0:  20 62 75 6D 70 28 6B 29 3B 0D 0A 20 20 20 20 72     bump(k);..    r
00E8B0:  65 74 75 72 6E 20 31 3B 0D 0A 20 20 20 20 7D 0D    eturn 1;..    }.
00E8C0:  0A 20 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20    .  return 0;..  
00E8D0:  7D 0D 0A 0D 0A 61 6D 61 74 63 68 28 6C 69 74 2C    }....amatch(lit,
00E8E0:  6C 65 6E 29 20 20 63 68 61 72 20 2A 6C 69 74 3B    len)  char *lit;
00E8F0:  69 6E 74 20 6C 65 6E 3B 20 7B 0D 0A 20 20 69 6E    int len; {..  in
00E900:  74 20 6B 3B 0D 0A 20 20 62 6C 61 6E 6B 73 28 29    t k;..  blanks()
00E910:  3B 0D 0A 20 20 69 66 20 28 6B 3D 61 73 74 72 65    ;..  if (k=astre
00E920:  71 28 6C 70 74 72 2C 6C 69 74 2C 6C 65 6E 29 29    q(lptr,lit,len))
00E930:  20 7B 0D 0A 20 20 20 20 62 75 6D 70 28 6B 29 3B     {..    bump(k);
00E940:  0D 0A 20 20 20 20 77 68 69 6C 65 28 61 6E 28 63    ..    while(an(c
00E950:  68 29 29 20 69 6E 62 79 74 65 28 29 3B 0D 0A 20    h)) inbyte();.. 
00E960:  20 20 20 72 65 74 75 72 6E 20 31 3B 0D 0A 20 20       return 1;..  
00E970:  20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 30 3B      }..  return 0;
00E980:  0D 0A 20 7D 0D 0A 0D 0A 6E 65 78 74 6F 70 28 6C    .. }....nextop(l
00E990:  69 73 74 29 20 63 68 61 72 20 2A 6C 69 73 74 3B    ist) char *list;
00E9A0:  20 7B 0D 0A 20 20 63 68 61 72 20 6F 70 5B 34 5D     {..  char op[4]
00E9B0:  3B 0D 0A 20 20 6F 70 69 6E 64 65 78 3D 30 3B 0D    ;..  opindex=0;.
00E9C0:  0A 20 20 62 6C 61 6E 6B 73 28 29 3B 0D 0A 20 20    .  blanks();..  
00E9D0:  77 68 69 6C 65 28 31 29 20 7B 0D 0A 20 20 20 20    while(1) {..    
00E9E0:  6F 70 73 69 7A 65 3D 30 3B 0D 0A 20 20 20 20 77    opsize=0;..    w
00E9F0:  68 69 6C 65 28 2A 6C 69 73 74 20 3E 20 27 20 27    hile(*list > ' '
00EA00:  0A 20 20 6B 3D 31 30 30 30 30 3B 0D 0A 20 20 69    .  k=10000;..  i
00EA10:  66 20 28 6E 75 6D 62 65 72 3C 30 29 20 7B 0D 0A    f (number<0) {..
00EA20:  20 20 20 20 6E 75 6D 62 65 72 3D 28 2D 6E 75 6D        number=(-num
00EA30:  62 65 72 29 3B 0D 0A 20 20 20 20 6F 75 74 62 79    ber);..    outby
00EA40:  74 65 28 27 2D 27 29 3B 0D 0A 20 20 20 20 7D 0D    te('-');..    }.
00EA50:  0A 20 20 77 68 69 6C 65 20 28 6B 3E 3D 31 29 20    .  while (k>=1) 
00EA60:  7B 0D 0A 20 20 20 20 71 3D 30 3B 20 72 3D 6E 75    {..    q=0; r=nu
00EA70:  6D 62 65 72 3B 0D 0A 20 20 20 20 77 68 69 6C 65    mber;..    while
00EA80:  28 72 20 3E 3D 20 6B 29 20 7B 2B 2B 71 3B 20 72    (r >= k) {++q; r
00EA90:  20 2D 3D 20 6B 3B 7D 0D 0A 20 20 20 20 63 20 3D     -= k;}..    c =
00EAA0:  20 71 20 2B 20 27 30 27 3B 0D 0A 20 20 20 20 69     q + '0';..    i
00EAB0:  66 20 28 28 63 21 3D 27 30 27 29 7C 28 6B 3D 3D    f ((c!='0')|(k==
00EAC0:  31 29 7C 28 7A 73 29 29 20 7B 0D 0A 20 20 20 20    1)|(zs)) {..    
00EAD0:  20 20 7A 73 3D 31 3B 0D 0A 20 20 20 20 20 20 6F      zs=1;..      o
00EAE0:  75 74 62 79 74 65 28 63 29 3B 0D 0A 20 20 20 20    utbyte(c);..    
00EAF0:  20 20 7D 0D 0A 20 20 20 20 6E 75 6D 62 65 72 3D      }..    number=
00EB00:  72 3B 0D 0A 20 20 20 20 6B 3D 6B 2F 31 30 3B 0D    r;..    k=k/10;.
00EB10:  0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 6F    .    }..  }....o
00EB20:  6C 28 70 74 72 29 20 20 63 68 61 72 20 70 74 72    l(ptr)  char ptr
00EB30:  5B 5D 3B 20 20 7B 0D 0A 20 20 6F 74 28 70 74 72    [];  {..  ot(ptr
00EB40:  29 3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D    );..  nl();..  }
00EB50:  0D 0A 0D 0A 6F 74 28 70 74 72 29 20 63 68 61 72    ....ot(ptr) char
00EB60:  20 70 74 72 5B 5D 3B 20 7B 0D 0A 20 20 6F 75 74     ptr[]; {..  out
00EB70:  73 74 72 28 70 74 72 29 3B 0D 0A 20 20 7D 0D 0A    str(ptr);..  }..
00EB80:  0D 0A 6F 75 74 73 74 72 28 70 74 72 29 20 63 68    ..outstr(ptr) ch
00EB90:  61 72 20 70 74 72 5B 5D 3B 20 7B 0D 0A 20 20 70    ar ptr[]; {..  p
00EBA0:  6F 6C 6C 28 31 29 3B 20 2F 2A 20 61 6C 6C 6F 77    oll(1); /* allow
00EBB0:  20 70 72 6F 67 72 61 6D 20 69 6E 74 65 72 72 75     program interru
00EBC0:  70 74 69 6F 6E 20 2A 2F 0D 0A 20 20 2F 2A 20 6D    ption */..  /* m
00EBD0:  75 73 74 20 77 6F 72 6B 20 77 69 74 68 20 73 79    ust work with sy
00EBE0:  6D 62 6F 6C 20 74 61 62 6C 65 20 6E 61 6D 65 73    mbol table names
00EBF0:  20 74 65 72 6D 69 6E 61 74 65 64 20 62 79 20 6C     terminated by l
00EC00:  29 20 6F 70 5B 6F 70 73 69 7A 65 2B 2B 5D 20 3D    ) op[opsize++] =
00EC10:  20 2A 6C 69 73 74 2B 2B 3B 0D 0A 20 20 20 20 6F     *list++;..    o
00EC20:  70 5B 6F 70 73 69 7A 65 5D 3D 30 3B 0D 0A 20 20    p[opsize]=0;..  
00EC30:  20 20 69 66 28 6F 70 73 69 7A 65 3D 73 74 72 65      if(opsize=stre
00EC40:  71 28 6C 70 74 72 2C 20 6F 70 29 29 0D 0A 20 20    q(lptr, op))..  
00EC50:  20 20 20 20 69 66 28 28 2A 28 6C 70 74 72 2B 6F        if((*(lptr+o
00EC60:  70 73 69 7A 65 29 20 21 3D 20 27 3D 27 29 26 0D    psize) != '=')&.
00EC70:  0A 20 20 20 20 20 20 20 20 20 28 2A 28 6C 70 74    .         (*(lpt
00EC80:  72 2B 6F 70 73 69 7A 65 29 20 21 3D 20 2A 28 6C    r+opsize) != *(l
00EC90:  70 74 72 2B 6F 70 73 69 7A 65 2D 31 29 29 29 0D    ptr+opsize-1))).
00ECA0:  0A 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6E    .         return
00ECB0:  20 31 3B 0D 0A 20 20 20 20 69 66 28 2A 6C 69 73     1;..    if(*lis
00ECC0:  74 29 20 7B 0D 0A 20 20 20 20 20 20 2B 2B 6C 69    t) {..      ++li
00ECD0:  73 74 3B 0D 0A 20 20 20 20 20 20 2B 2B 6F 70 69    st;..      ++opi
00ECE0:  6E 64 65 78 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A    ndex;..      }..
00ECF0:  20 20 20 20 65 6C 73 65 20 72 65 74 75 72 6E 20        else return 
00ED00:  30 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A    0;..    }..  }..
00ED10:  0D 0A 62 6C 61 6E 6B 73 28 29 20 7B 0D 0A 20 20    ..blanks() {..  
00ED20:  77 68 69 6C 65 28 31 29 20 7B 0D 0A 20 20 20 20    while(1) {..    
00ED30:  77 68 69 6C 65 28 63 68 29 20 7B 0D 0A 20 20 20    while(ch) {..   
00ED40:  20 20 20 69 66 28 77 68 69 74 65 28 29 29 20 67       if(white()) g
00ED50:  63 68 28 29 3B 0D 0A 20 20 20 20 20 20 65 6C 73    ch();..      els
00ED60:  65 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 20    e return;..     
00ED70:  20 7D 0D 0A 20 20 20 20 69 66 28 6C 69 6E 65 3D     }..    if(line=
00ED80:  3D 6D 6C 69 6E 65 29 20 72 65 74 75 72 6E 3B 0D    =mline) return;.
00ED90:  0A 20 20 20 20 70 72 65 70 72 6F 63 65 73 73 28    .    preprocess(
00EDA0:  29 3B 0D 0A 20 20 20 20 69 66 28 65 6F 66 29 62    );..    if(eof)b
00EDB0:  72 65 61 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20    reak;..    }..  
00EDC0:  7D 0D 0A 0D 0A 3E 3E 3E 20 43 43 33 2E 43 20 33    }....>>> CC3.C 3
00EDD0:  37 33 0D 0A 2F 2A 0D 0A 2A 2A 20 53 6D 61 6C 6C    73../*..** Small
00EDE0:  2D 43 20 43 6F 6D 70 69 6C 65 72 20 50 61 72 74    -C Compiler Part
00EDF0:  20 33 0D 0A 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65     3..*/..#include
00EE00:  65 6E 67 74 68 20 2A 2F 0D 0A 20 20 77 68 69 6C    ength */..  whil
00EE10:  65 28 2A 70 74 72 20 3E 3D 20 27 20 27 29 20 6F    e(*ptr >= ' ') o
00EE20:  75 74 62 79 74 65 28 2A 70 74 72 2B 2B 29 3B 0D    utbyte(*ptr++);.
00EE30:  0A 20 20 7D 0D 0A 0D 0A 6F 75 74 62 79 74 65 28    .  }....outbyte(
00EE40:  63 29 20 63 68 61 72 20 63 3B 20 7B 0D 0A 20 20    c) char c; {..  
00EE50:  69 66 28 73 74 61 67 65 6E 65 78 74 29 20 7B 0D    if(stagenext) {.
00EE60:  0A 20 20 20 20 69 66 28 73 74 61 67 65 6E 65 78    .    if(stagenex
00EE70:  74 3D 3D 73 74 61 67 65 6C 61 73 74 29 20 7B 0D    t==stagelast) {.
00EE80:  0A 20 20 20 20 20 20 65 72 72 6F 72 28 22 73 74    .      error("st
00EE90:  61 67 69 6E 67 20 62 75 66 66 65 72 20 6F 76 65    aging buffer ove
00EEA0:  72 66 6C 6F 77 22 29 3B 0D 0A 20 20 20 20 20 20    rflow");..      
00EEB0:  72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 20    return 0;..     
00EEC0:  20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 2A 73 74     }..    else *st
00EED0:  61 67 65 6E 65 78 74 2B 2B 20 3D 20 63 3B 0D 0A    agenext++ = c;..
00EEE0:  20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20 63 6F        }..  else co
00EEF0:  75 74 28 63 2C 6F 75 74 70 75 74 29 3B 0D 0A 20    ut(c,output);.. 
00EF00:  20 72 65 74 75 72 6E 20 63 3B 0D 0A 20 20 7D 0D     return c;..  }.
00EF10:  0A 0D 0A 63 6F 75 74 28 63 2C 20 66 64 29 20 63    ...cout(c, fd) c
00EF20:  68 61 72 20 63 3B 20 69 6E 74 20 66 64 3B 20 7B    har c; int fd; {
00EF30:  0D 0A 20 20 69 66 28 66 70 75 74 63 28 63 2C 20    ..  if(fputc(c, 
00EF40:  66 64 29 3D 3D 45 4F 46 29 20 78 6F 75 74 28 29    fd)==EOF) xout()
00EF50:  3B 0D 0A 20 20 7D 0D 0A 0D 0A 73 6F 75 74 28 73    ;..  }....sout(s
00EF60:  74 72 69 6E 67 2C 20 66 64 29 20 63 68 61 72 20    tring, fd) char 
00EF70:  2A 73 74 72 69 6E 67 3B 20 69 6E 74 20 66 64 3B    *string; int fd;
00EF80:  20 7B 0D 0A 20 20 69 66 28 66 70 75 74 73 28 73     {..  if(fputs(s
00EF90:  74 72 69 6E 67 2C 20 66 64 29 3D 3D 45 4F 46 29    tring, fd)==EOF)
00EFA0:  20 78 6F 75 74 28 29 3B 0D 0A 20 20 7D 0D 0A 0D     xout();..  }...
00EFB0:  0A 6C 6F 75 74 28 6C 69 6E 65 2C 20 66 64 29 20    .lout(line, fd) 
00EFC0:  63 68 61 72 20 2A 6C 69 6E 65 3B 20 69 6E 74 20    char *line; int 
00EFD0:  66 64 3B 20 7B 0D 0A 20 20 73 6F 75 74 28 6C 69    fd; {..  sout(li
00EFE0:  6E 65 2C 20 66 64 29 3B 0D 0A 20 20 63 6F 75 74    ne, fd);..  cout
00EFF0:  28 4E 45 57 4C 49 4E 45 2C 20 66 64 29 3B 0D 0A    (NEWLINE, fd);..
00F000:  20 3C 73 74 64 69 6F 2E 68 3E 0D 0A 23 69 6E 63     <stdio.h>..#inc
00F010:  6C 75 64 65 20 22 63 63 2E 64 65 66 22 0D 0A 0D    lude "cc.def"...
00F020:  0A 65 78 74 65 72 6E 20 63 68 61 72 0D 0A 23 69    .extern char..#i
00F030:  66 64 65 66 20 44 59 4E 41 4D 49 43 0D 0A 20 2A    fdef DYNAMIC.. *
00F040:  73 74 61 67 65 2C 0D 0A 20 2A 6C 69 74 71 2C 0D    stage,.. *litq,.
00F050:  0A 23 65 6C 73 65 0D 0A 20 20 73 74 61 67 65 5B    .#else..  stage[
00F060:  53 54 41 47 45 53 49 5A 45 5D 2C 0D 0A 20 20 6C    STAGESIZE],..  l
00F070:  69 74 71 5B 4C 49 54 41 42 53 5A 5D 2C 0D 0A 23    itq[LITABSZ],..#
00F080:  65 6E 64 69 66 0D 0A 20 2A 67 6C 62 70 74 72 2C    endif.. *glbptr,
00F090:  20 2A 6C 70 74 72 2C 20 20 73 73 6E 61 6D 65 5B     *lptr,  ssname[
00F0A0:  4E 41 4D 45 53 49 5A 45 5D 2C 20 20 71 75 6F 74    NAMESIZE],  quot
00F0B0:  65 5B 32 5D 2C 20 2A 73 74 61 67 65 6E 65 78 74    e[2], *stagenext
00F0C0:  3B 0D 0A 65 78 74 65 72 6E 20 69 6E 74 0D 0A 20    ;..extern int.. 
00F0D0:  20 63 68 2C 20 20 63 73 70 2C 20 20 6C 69 74 6C     ch,  csp,  litl
00F0E0:  61 62 2C 20 20 6C 69 74 70 74 72 2C 20 20 6E 63    ab,  litptr,  nc
00F0F0:  68 2C 20 20 6F 70 5B 31 36 5D 2C 20 20 6F 70 32    h,  op[16],  op2
00F100:  5B 31 36 5D 2C 0D 0A 20 20 6F 70 65 72 2C 20 20    [16],..  oper,  
00F110:  6F 70 69 6E 64 65 78 2C 20 20 6F 70 73 69 7A 65    opindex,  opsize
00F120:  3B 0D 0A 0D 0A 23 69 6E 63 6C 75 64 65 20 22 63    ;....#include "c
00F130:  63 33 31 2E 63 22 0D 0A 23 69 6E 63 6C 75 64 65    c31.c"..#include
00F140:  20 22 63 63 33 32 2E 63 22 0D 0A 23 69 6E 63 6C     "cc32.c"..#incl
00F150:  75 64 65 20 22 63 63 33 33 2E 63 22 0D 0A 0D 0A    ude "cc33.c"....
00F160:  3E 3E 3E 20 43 43 33 31 2E 43 20 36 36 38 30 0D    >>> CC31.C 6680.
00F170:  0A 2F 2A 0D 0A 2A 2A 20 6C 76 61 6C 5B 30 5D 20    ./*..** lval[0] 
00F180:  2D 20 73 79 6D 62 6F 6C 20 74 61 62 6C 65 20 61    - symbol table a
00F190:  64 64 72 65 73 73 2C 20 65 6C 73 65 20 30 20 66    ddress, else 0 f
00F1A0:  6F 72 20 63 6F 6E 73 74 61 6E 74 0D 0A 2A 2A 20    or constant..** 
00F1B0:  6C 76 61 6C 5B 31 5D 20 2D 20 74 79 70 65 20 6F    lval[1] - type o
00F1C0:  66 20 69 6E 64 69 72 65 63 74 20 6F 62 6A 20 74    f indirect obj t
00F1D0:  6F 20 66 65 74 63 68 2C 20 65 6C 73 65 20 30 20    o fetch, else 0 
00F1E0:  66 6F 72 20 73 74 61 74 69 63 0D 0A 2A 2A 20 6C    for static..** l
00F1F0:  76 61 6C 5B 32 5D 20 2D 20 74 79 70 65 20 6F 66    val[2] - type of
00F200:  20 20 7D 0D 0A 0D 0A 78 6F 75 74 28 29 20 7B 0D      }....xout() {.
00F210:  0A 20 20 66 70 75 74 73 28 22 6F 75 74 70 75 74    .  fputs("output
00F220:  20 65 72 72 6F 72 22 2C 20 73 74 64 65 72 72 29     error", stderr)
00F230:  3B 0D 0A 20 20 61 62 6F 72 74 28 45 52 52 43 4F    ;..  abort(ERRCO
00F240:  44 45 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 6E 6C 28    DE);..  }....nl(
00F250:  29 20 7B 0D 0A 20 20 6F 75 74 62 79 74 65 28 4E    ) {..  outbyte(N
00F260:  45 57 4C 49 4E 45 29 3B 0D 0A 20 20 7D 0D 0A 0D    EWLINE);..  }...
00F270:  0A 63 6F 6C 28 29 20 7B 0D 0A 23 69 66 64 65 66    .col() {..#ifdef
00F280:  20 43 4F 4C 0D 0A 20 20 6F 75 74 62 79 74 65 28     COL..  outbyte(
00F290:  27 3A 27 29 3B 0D 0A 23 65 6E 64 69 66 0D 0A 20    ':');..#endif.. 
00F2A0:  20 7D 0D 0A 0D 0A 65 72 72 6F 72 28 6D 73 67 29     }....error(msg)
00F2B0:  20 63 68 61 72 20 6D 73 67 5B 5D 3B 20 7B 0D 0A     char msg[]; {..
00F2C0:  20 20 69 66 28 65 72 72 66 6C 61 67 29 20 72 65      if(errflag) re
00F2D0:  74 75 72 6E 3B 20 65 6C 73 65 20 65 72 72 66 6C    turn; else errfl
00F2E0:  61 67 3D 31 3B 0D 0A 20 20 6C 6F 75 74 28 6C 69    ag=1;..  lout(li
00F2F0:  6E 65 2C 20 73 74 64 65 72 72 29 3B 0D 0A 20 20    ne, stderr);..  
00F300:  65 72 72 6F 75 74 28 6D 73 67 2C 20 73 74 64 65    errout(msg, stde
00F310:  72 72 29 3B 0D 0A 20 20 69 66 28 61 6C 61 72 6D    rr);..  if(alarm
00F320:  29 20 66 70 75 74 63 28 37 2C 20 73 74 64 65 72    ) fputc(7, stder
00F330:  72 29 3B 0D 0A 20 20 69 66 28 70 61 75 73 65 29    r);..  if(pause)
00F340:  20 77 68 69 6C 65 28 66 67 65 74 63 28 73 74 64     while(fgetc(std
00F350:  65 72 72 29 21 3D 4E 45 57 4C 49 4E 45 29 3B 0D    err)!=NEWLINE);.
00F360:  0A 20 20 69 66 28 6C 69 73 74 66 70 3E 30 29 20    .  if(listfp>0) 
00F370:  65 72 72 6F 75 74 28 6D 73 67 2C 20 6C 69 73 74    errout(msg, list
00F380:  66 70 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 65 72 72    fp);..  }....err
00F390:  6F 75 74 28 6D 73 67 2C 20 66 70 29 20 63 68 61    out(msg, fp) cha
00F3A0:  72 20 6D 73 67 5B 5D 3B 20 69 6E 74 20 66 70 3B    r msg[]; int fp;
00F3B0:  20 7B 0D 0A 20 20 69 6E 74 20 6B 3B 20 6B 3D 6C     {..  int k; k=l
00F3C0:  69 6E 65 2B 32 3B 0D 0A 20 20 77 68 69 6C 65 28    ine+2;..  while(
00F3D0:  6B 2B 2B 20 3C 3D 20 6C 70 74 72 29 20 63 6F 75    k++ <= lptr) cou
00F3E0:  74 28 27 20 27 2C 20 66 70 29 3B 0D 0A 20 20 6C    t(' ', fp);..  l
00F3F0:  6F 75 74 28 22 2F 5C 5C 22 2C 20 66 70 29 3B 0D    out("/\\", fp);.
00F400:  20 70 6F 69 6E 74 65 72 20 6F 72 20 61 72 72 61     pointer or arra
00F410:  79 2C 20 65 6C 73 65 20 30 20 66 6F 72 20 61 6C    y, else 0 for al
00F420:  6C 20 6F 74 68 65 72 0D 0A 2A 2A 20 6C 76 61 6C    l other..** lval
00F430:  5B 33 5D 20 2D 20 74 72 75 65 20 69 66 20 63 6F    [3] - true if co
00F440:  6E 73 74 61 6E 74 20 65 78 70 72 65 73 73 69 6F    nstant expressio
00F450:  6E 0D 0A 2A 2A 20 6C 76 61 6C 5B 34 5D 20 2D 20    n..** lval[4] - 
00F460:  76 61 6C 75 65 20 6F 66 20 63 6F 6E 73 74 61 6E    value of constan
00F470:  74 20 65 78 70 72 65 73 73 69 6F 6E 20 28 2B 20    t expression (+ 
00F480:  61 75 78 69 6C 69 61 72 79 20 75 73 65 73 29 0D    auxiliary uses).
00F490:  0A 2A 2A 20 6C 76 61 6C 5B 35 5D 20 2D 20 74 72    .** lval[5] - tr
00F4A0:  75 65 20 69 66 20 73 65 63 6F 6E 64 61 72 79 20    ue if secondary 
00F4B0:  72 65 67 69 73 74 65 72 20 61 6C 74 65 72 65 64    register altered
00F4C0:  0D 0A 2A 2A 20 6C 76 61 6C 5B 36 5D 20 2D 20 66    ..** lval[6] - f
00F4D0:  75 6E 63 74 69 6F 6E 20 61 64 64 72 65 73 73 20    unction address 
00F4E0:  6F 66 20 68 69 67 68 65 73 74 2F 6C 61 73 74 20    of highest/last 
00F4F0:  62 69 6E 61 72 79 20 6F 70 65 72 61 74 6F 72 0D    binary operator.
00F500:  0A 2A 2A 20 6C 76 61 6C 5B 37 5D 20 2D 20 73 74    .** lval[7] - st
00F510:  61 67 65 20 61 64 64 72 65 73 73 20 6F 66 20 22    age address of "
00F520:  6F 70 65 72 20 30 22 20 63 6F 64 65 2C 20 65 6C    oper 0" code, el
00F530:  73 65 20 30 0D 0A 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A    se 0..*/..../*..
00F540:  2A 2A 20 73 6B 69 6D 20 6F 76 65 72 20 74 65 72    ** skim over ter
00F550:  6D 73 20 61 64 6A 6F 69 6E 69 6E 67 20 7C 7C 20    ms adjoining || 
00F560:  61 6E 64 20 26 26 20 6F 70 65 72 61 74 6F 72 73    and && operators
00F570:  0D 0A 2A 2F 0D 0A 73 6B 69 6D 28 6F 70 73 74 72    ..*/..skim(opstr
00F580:  2C 20 74 65 73 74 66 75 6E 63 2C 20 64 72 6F 70    , testfunc, drop
00F590:  76 61 6C 2C 20 65 6E 64 76 61 6C 2C 20 68 69 65    val, endval, hie
00F5A0:  72 2C 20 6C 76 61 6C 29 0D 0A 20 20 63 68 61 72    r, lval)..  char
00F5B0:  20 2A 6F 70 73 74 72 3B 0D 0A 20 20 69 6E 74 20     *opstr;..  int 
00F5C0:  28 2A 74 65 73 74 66 75 6E 63 29 28 29 2C 20 64    (*testfunc)(), d
00F5D0:  72 6F 70 76 61 6C 2C 20 65 6E 64 76 61 6C 2C 20    ropval, endval, 
00F5E0:  28 2A 68 69 65 72 29 28 29 2C 20 6C 76 61 6C 5B    (*hier)(), lval[
00F5F0:  5D 3B 20 7B 0D 0A 20 20 69 6E 74 20 6B 2C 20 68    ]; {..  int k, h
00F600:  0A 20 20 73 6F 75 74 28 22 2A 2A 2A 2A 20 22 2C    .  sout("**** ",
00F610:  20 66 70 29 3B 20 6C 6F 75 74 28 6D 73 67 2C 20     fp); lout(msg, 
00F620:  66 70 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 73 74 72    fp);..  }....str
00F630:  65 71 28 73 74 72 31 2C 73 74 72 32 29 20 20 63    eq(str1,str2)  c
00F640:  68 61 72 20 73 74 72 31 5B 5D 2C 73 74 72 32 5B    har str1[],str2[
00F650:  5D 3B 20 7B 0D 0A 20 20 69 6E 74 20 6B 3B 0D 0A    ]; {..  int k;..
00F660:  20 20 6B 3D 30 3B 0D 0A 20 20 77 68 69 6C 65 20      k=0;..  while 
00F670:  28 73 74 72 32 5B 6B 5D 29 20 7B 0D 0A 20 20 20    (str2[k]) {..   
00F680:  20 69 66 20 28 28 73 74 72 31 5B 6B 5D 29 21 3D     if ((str1[k])!=
00F690:  28 73 74 72 32 5B 6B 5D 29 29 20 72 65 74 75 72    (str2[k])) retur
00F6A0:  6E 20 30 3B 0D 0A 20 20 20 20 2B 2B 6B 3B 0D 0A    n 0;..    ++k;..
00F6B0:  20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20        }..  return 
00F6C0:  6B 3B 0D 0A 20 7D 0D 0A 0D 0A 61 73 74 72 65 71    k;.. }....astreq
00F6D0:  28 73 74 72 31 2C 73 74 72 32 2C 6C 65 6E 29 20    (str1,str2,len) 
00F6E0:  20 63 68 61 72 20 73 74 72 31 5B 5D 2C 73 74 72     char str1[],str
00F6F0:  32 5B 5D 3B 69 6E 74 20 6C 65 6E 3B 20 7B 0D 0A    2[];int len; {..
00F700:  20 20 69 6E 74 20 6B 3B 0D 0A 20 20 6B 3D 30 3B      int k;..  k=0;
00F710:  0D 0A 20 20 77 68 69 6C 65 20 28 6B 3C 6C 65 6E    ..  while (k<len
00F720:  29 20 7B 0D 0A 20 20 20 20 69 66 20 28 28 73 74    ) {..    if ((st
00F730:  72 31 5B 6B 5D 29 21 3D 28 73 74 72 32 5B 6B 5D    r1[k])!=(str2[k]
00F740:  29 29 62 72 65 61 6B 3B 0D 0A 20 20 20 20 2F 2A    ))break;..    /*
00F750:  0D 0A 20 20 20 20 2A 2A 20 6D 75 73 74 20 64 65    ..    ** must de
00F760:  74 65 63 74 20 65 6E 64 20 6F 66 20 73 79 6D 62    tect end of symb
00F770:  6F 6C 20 74 61 62 6C 65 20 6E 61 6D 65 73 20 74    ol table names t
00F780:  65 72 6D 69 6E 61 74 65 64 20 62 79 0D 0A 20 20    erminated by..  
00F790:  20 20 2A 2A 20 73 79 6D 62 6F 6C 20 6C 65 6E 67      ** symbol leng
00F7A0:  74 68 20 69 6E 20 62 69 6E 61 72 79 0D 0A 20 20    th in binary..  
00F7B0:  20 20 2A 2F 0D 0A 20 20 20 20 69 66 28 73 74 72      */..    if(str
00F7C0:  31 5B 6B 5D 20 3C 20 27 20 27 29 20 62 72 65 61    1[k] < ' ') brea
00F7D0:  6B 3B 0D 0A 20 20 20 20 69 66 28 73 74 72 32 5B    k;..    if(str2[
00F7E0:  6B 5D 20 3C 20 27 20 27 29 20 62 72 65 61 6B 3B    k] < ' ') break;
00F7F0:  0D 0A 20 20 20 20 2B 2B 6B 3B 0D 0A 20 20 20 20    ..    ++k;..    
00F800:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00F810:  0D 00 01 00 02 09 52 E5 0D 00 41 02 00 00 00 02    ......R...A.....
00F820:  0D 00 46 02 00 00 00 02 0D 00 42 02 00 00 00 02    ..F.......B.....
00F830:  0D 00 47 02 00 00 00 02 0D 00 43 02 00 00 00 02    ..G.......C.....
00F840:  0D 00 48 02 00 00 00 02 0D 00 44 02 00 00 00 02    ..H.......D.....
00F850:  0D 00 49 02 00 00 00 02 0D 00 45 02 00 00 00 02    ..I.......E.....
00F860:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F870:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F880:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F890:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F8F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00F900:  69 74 73 2C 20 64 72 6F 70 6C 61 62 2C 20 65 6E    its, droplab, en
00F910:  64 6C 61 62 3B 0D 0A 20 20 68 69 74 73 3D 30 3B    dlab;..  hits=0;
00F920:  0D 0A 20 20 77 68 69 6C 65 28 31 29 20 7B 0D 0A    ..  while(1) {..
00F930:  20 20 20 20 6B 3D 70 6C 6E 67 65 31 28 68 69 65        k=plnge1(hie
00F940:  72 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 69    r, lval);..    i
00F950:  66 28 6E 65 78 74 6F 70 28 6F 70 73 74 72 29 29    f(nextop(opstr))
00F960:  20 7B 0D 0A 20 20 20 20 20 20 62 75 6D 70 28 6F     {..      bump(o
00F970:  70 73 69 7A 65 29 3B 0D 0A 20 20 20 20 20 20 69    psize);..      i
00F980:  66 28 68 69 74 73 3D 3D 30 29 20 7B 0D 0A 20 20    f(hits==0) {..  
00F990:  20 20 20 20 20 20 68 69 74 73 3D 31 3B 0D 0A 20          hits=1;.. 
00F9A0:  20 20 20 20 20 20 20 64 72 6F 70 6C 61 62 3D 67           droplab=g
00F9B0:  65 74 6C 61 62 65 6C 28 29 3B 0D 0A 20 20 20 20    etlabel();..    
00F9C0:  20 20 20 20 7D 0D 0A 20 20 20 20 20 20 64 72 6F        }..      dro
00F9D0:  70 6F 75 74 28 6B 2C 20 74 65 73 74 66 75 6E 63    pout(k, testfunc
00F9E0:  2C 20 64 72 6F 70 6C 61 62 2C 20 6C 76 61 6C 29    , droplab, lval)
00F9F0:  3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20    ;..      }..    
00FA00:  65 6C 73 65 20 69 66 28 68 69 74 73 29 20 7B 0D    else if(hits) {.
00FA10:  0A 20 20 20 20 20 20 64 72 6F 70 6F 75 74 28 6B    .      dropout(k
00FA20:  2C 20 74 65 73 74 66 75 6E 63 2C 20 64 72 6F 70    , testfunc, drop
00FA30:  6C 61 62 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 20    lab, lval);..   
00FA40:  20 20 20 63 6F 6E 73 74 28 65 6E 64 76 61 6C 29       const(endval)
00FA50:  3B 0D 0A 20 20 20 20 20 20 6A 75 6D 70 28 65 6E    ;..      jump(en
00FA60:  64 6C 61 62 3D 67 65 74 6C 61 62 65 6C 28 29 29    dlab=getlabel())
00FA70:  3B 0D 0A 20 20 20 20 20 20 70 6F 73 74 6C 61 62    ;..      postlab
00FA80:  65 6C 28 64 72 6F 70 6C 61 62 29 3B 0D 0A 20 20    el(droplab);..  
00FA90:  20 20 20 20 63 6F 6E 73 74 28 64 72 6F 70 76 61        const(dropva
00FAA0:  6C 29 3B 0D 0A 20 20 20 20 20 20 70 6F 73 74 6C    l);..      postl
00FAB0:  61 62 65 6C 28 65 6E 64 6C 61 62 29 3B 0D 0A 20    abel(endlab);.. 
00FAC0:  20 20 20 20 20 6C 76 61 6C 5B 31 5D 3D 6C 76 61         lval[1]=lva
00FAD0:  6C 5B 32 5D 3D 6C 76 61 6C 5B 33 5D 3D 6C 76 61    l[2]=lval[3]=lva
00FAE0:  6C 5B 34 5D 3D 6C 76 61 6C 5B 37 5D 3D 30 3B 0D    l[4]=lval[7]=0;.
00FAF0:  0A 20 20 20 20 20 20 72 65 74 75 72 6E 20 30 3B    .      return 0;
00FB00:  20 20 20 20 20 20 73 6D 61 72 74 70 6F 70 28 6C          smartpop(l
00FB10:  76 61 6C 32 2C 20 73 74 61 72 74 29 3B 0D 0A 20    val2, start);.. 
00FB20:  20 20 20 20 20 69 66 28 64 62 6C 74 65 73 74 28         if(dbltest(
00FB30:  6F 70 65 72 2C 20 6C 76 61 6C 2C 6C 76 61 6C 32    oper, lval,lval2
00FB40:  29 29 20 64 6F 75 62 6C 65 72 65 67 28 29 3B 0D    )) doublereg();.
00FB50:  0A 20 20 20 20 20 20 69 66 28 64 62 6C 74 65 73    .      if(dbltes
00FB60:  74 28 6F 70 65 72 2C 20 6C 76 61 6C 32 2C 6C 76    t(oper, lval2,lv
00FB70:  61 6C 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20    al)) {..        
00FB80:  73 77 61 70 28 29 3B 0D 0A 20 20 20 20 20 20 20    swap();..       
00FB90:  20 64 6F 75 62 6C 65 72 65 67 28 29 3B 0D 0A 20     doublereg();.. 
00FBA0:  20 20 20 20 20 20 20 69 66 28 6F 70 65 72 3D 3D           if(oper==
00FBB0:  66 66 73 75 62 29 20 73 77 61 70 28 29 3B 0D 0A    ffsub) swap();..
00FBC0:  20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20            }..     
00FBD0:  20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28     }..    }..  if(
00FBE0:  6F 70 65 72 29 20 7B 0D 0A 20 20 20 20 69 66 28    oper) {..    if(
00FBF0:  6C 76 61 6C 5B 33 5D 3D 6C 76 61 6C 5B 33 5D 26    lval[3]=lval[3]&
00FC00:  6C 76 61 6C 32 5B 33 5D 29 20 7B 0D 0A 20 20 20    lval2[3]) {..   
00FC10:  20 20 20 6C 76 61 6C 5B 34 5D 3D 63 61 6C 63 28       lval[4]=calc(
00FC20:  6C 76 61 6C 5B 34 5D 2C 20 6F 70 65 72 2C 20 6C    lval[4], oper, l
00FC30:  76 61 6C 32 5B 34 5D 29 3B 0D 0A 20 20 20 20 20    val2[4]);..     
00FC40:  20 63 6C 65 61 72 73 74 61 67 65 28 62 65 66 6F     clearstage(befo
00FC50:  72 65 2C 20 30 29 3B 20 20 0D 0A 20 20 20 20 20    re, 0);  ..     
00FC60:  20 6C 76 61 6C 5B 35 5D 3D 30 3B 0D 0A 20 20 20     lval[5]=0;..   
00FC70:  20 20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 7B       }..    else {
00FC80:  0D 0A 20 20 20 20 20 20 69 66 28 28 6C 76 61 6C    ..      if((lval
00FC90:  5B 32 5D 3D 3D 30 29 26 28 6C 76 61 6C 32 5B 32    [2]==0)&(lval2[2
00FCA0:  5D 3D 3D 30 29 29 20 7B 0D 0A 20 20 20 20 20 20    ]==0)) {..      
00FCB0:  20 20 28 2A 6F 70 65 72 29 28 29 3B 0D 0A 20 20      (*oper)();..  
00FCC0:  20 20 20 20 20 20 6C 76 61 6C 5B 36 5D 3D 6F 70          lval[6]=op
00FCD0:  65 72 3B 09 09 09 2F 2A 20 69 64 65 6E 74 69 66    er;.../* identif
00FCE0:  79 20 74 68 65 20 6F 70 65 72 61 74 6F 72 20 2A    y the operator *
00FCF0:  2F 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20    /..        }..  
00FD00:  0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 65    ..      }..    e
00FD10:  6C 73 65 20 72 65 74 75 72 6E 20 6B 3B 0D 0A 20    lse return k;.. 
00FD20:  20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D       }..  }..../*.
00FD30:  0A 2A 2A 20 74 65 73 74 20 66 6F 72 20 65 61 72    .** test for ear
00FD40:  6C 79 20 64 72 6F 70 6F 75 74 20 66 72 6F 6D 20    ly dropout from 
00FD50:  7C 7C 20 6F 72 20 26 26 20 65 76 61 6C 75 61 74    || or && evaluat
00FD60:  69 6F 6E 73 0D 0A 2A 2F 0D 0A 64 72 6F 70 6F 75    ions..*/..dropou
00FD70:  74 28 6B 2C 20 74 65 73 74 66 75 6E 63 2C 20 65    t(k, testfunc, e
00FD80:  78 69 74 31 2C 20 6C 76 61 6C 29 0D 0A 20 20 69    xit1, lval)..  i
00FD90:  6E 74 20 6B 2C 20 28 2A 74 65 73 74 66 75 6E 63    nt k, (*testfunc
00FDA0:  29 28 29 2C 20 65 78 69 74 31 2C 20 6C 76 61 6C    )(), exit1, lval
00FDB0:  5B 5D 3B 20 7B 0D 0A 20 20 69 66 28 6B 29 20 72    []; {..  if(k) r
00FDC0:  76 61 6C 75 65 28 6C 76 61 6C 29 3B 0D 0A 20 20    value(lval);..  
00FDD0:  65 6C 73 65 20 69 66 28 6C 76 61 6C 5B 33 5D 29    else if(lval[3])
00FDE0:  20 63 6F 6E 73 74 28 6C 76 61 6C 5B 34 5D 29 3B     const(lval[4]);
00FDF0:  0D 0A 20 20 28 2A 74 65 73 74 66 75 6E 63 29 28    ..  (*testfunc)(
00FE00:  65 78 69 74 31 29 3B 09 09 2F 2A 20 6A 75 6D 70    exit1);../* jump
00FE10:  73 20 6F 6E 20 66 61 6C 73 65 20 2A 2F 0D 0A 20    s on false */.. 
00FE20:  20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 6C 75     }..../*..** plu
00FE30:  6E 67 65 20 74 6F 20 61 20 6C 6F 77 65 72 20 6C    nge to a lower l
00FE40:  65 76 65 6C 0D 0A 2A 2F 0D 0A 70 6C 6E 67 65 28    evel..*/..plnge(
00FE50:  6F 70 73 74 72 2C 20 6F 70 6F 66 66 2C 20 68 69    opstr, opoff, hi
00FE60:  65 72 2C 20 6C 76 61 6C 29 0D 0A 20 20 63 68 61    er, lval)..  cha
00FE70:  72 20 2A 6F 70 73 74 72 3B 0D 0A 20 20 69 6E 74    r *opstr;..  int
00FE80:  20 6F 70 6F 66 66 2C 20 28 2A 68 69 65 72 29 28     opoff, (*hier)(
00FE90:  29 2C 20 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20    ), lval[]; {..  
00FEA0:  69 6E 74 20 6B 2C 20 6C 76 61 6C 32 5B 38 5D 3B    int k, lval2[8];
00FEB0:  0D 0A 20 20 6B 3D 70 6C 6E 67 65 31 28 68 69 65    ..  k=plnge1(hie
00FEC0:  72 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 69 66 28    r, lval);..  if(
00FED0:  6E 65 78 74 6F 70 28 6F 70 73 74 72 29 3D 3D 30    nextop(opstr)==0
00FEE0:  29 20 72 65 74 75 72 6E 20 6B 3B 0D 0A 20 20 69    ) return k;..  i
00FEF0:  66 28 6B 29 20 72 76 61 6C 75 65 28 6C 76 61 6C    f(k) rvalue(lval
00FF00:  20 20 20 20 65 6C 73 65 20 7B 0D 0A 20 20 20 20        else {..    
00FF10:  20 20 20 20 28 2A 6F 70 65 72 32 29 28 29 3B 0D        (*oper2)();.
00FF20:  0A 20 20 20 20 20 20 20 20 6C 76 61 6C 5B 36 5D    .        lval[6]
00FF30:  3D 6F 70 65 72 32 3B 09 09 09 2F 2A 20 69 64 65    =oper2;.../* ide
00FF40:  6E 74 69 66 79 20 74 68 65 20 6F 70 65 72 61 74    ntify the operat
00FF50:  6F 72 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 7D    or */..        }
00FF60:  0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 69    ..      }..    i
00FF70:  66 28 6F 70 65 72 3D 3D 66 66 73 75 62 29 20 7B    f(oper==ffsub) {
00FF80:  0D 0A 20 20 20 20 20 20 69 66 28 28 6C 76 61 6C    ..      if((lval
00FF90:  5B 32 5D 3D 3D 43 49 4E 54 29 26 28 6C 76 61 6C    [2]==CINT)&(lval
00FFA0:  32 5B 32 5D 3D 3D 43 49 4E 54 29 29 20 7B 0D 0A    2[2]==CINT)) {..
00FFB0:  20 20 20 20 20 20 20 20 73 77 61 70 28 29 3B 0D            swap();.
00FFC0:  0A 20 20 20 20 20 20 20 20 63 6F 6E 73 74 28 31    .        const(1
00FFD0:  29 3B 0D 0A 20 20 20 20 20 20 20 20 66 66 61 73    );..        ffas
00FFE0:  72 28 29 3B 09 09 09 2F 2A 2A 20 64 69 76 20 62    r();.../** div b
00FFF0:  79 20 32 20 2A 2A 2F 0D 0A 20 20 20 20 20 20 20    y 2 **/..       
010000:  20 7D 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20     }..      }..   
010010:  20 69 66 28 28 6F 70 65 72 3D 3D 66 66 73 75 62     if((oper==ffsub
010020:  29 7C 28 6F 70 65 72 3D 3D 66 66 61 64 64 29 29    )|(oper==ffadd))
010030:  20 72 65 73 75 6C 74 28 6C 76 61 6C 2C 20 6C 76     result(lval, lv
010040:  61 6C 32 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20    al2);..    }..  
010050:  7D 0D 0A 0D 0A 63 61 6C 63 28 6C 65 66 74 2C 20    }....calc(left, 
010060:  6F 70 65 72 2C 20 72 69 67 68 74 29 20 69 6E 74    oper, right) int
010070:  20 6C 65 66 74 2C 20 28 2A 6F 70 65 72 29 28 29     left, (*oper)()
010080:  2C 20 72 69 67 68 74 3B 20 7B 0D 0A 20 20 20 20    , right; {..    
010090:  20 20 20 69 66 28 6F 70 65 72 20 3D 3D 20 20 66       if(oper ==  f
0100A0:  66 6F 72 29 20 72 65 74 75 72 6E 20 28 6C 65 66    for) return (lef
0100B0:  74 20 20 7C 20 20 72 69 67 68 74 29 3B 0D 0A 20    t  |  right);.. 
0100C0:  20 65 6C 73 65 20 69 66 28 6F 70 65 72 20 3D 3D     else if(oper ==
0100D0:  20 66 66 78 6F 72 29 20 72 65 74 75 72 6E 20 28     ffxor) return (
0100E0:  6C 65 66 74 20 20 5E 20 20 72 69 67 68 74 29 3B    left  ^  right);
0100F0:  0D 0A 20 20 65 6C 73 65 20 69 66 28 6F 70 65 72    ..  else if(oper
010100:  29 3B 0D 0A 20 20 77 68 69 6C 65 28 31 29 20 7B    );..  while(1) {
010110:  0D 0A 20 20 20 20 69 66 28 6E 65 78 74 6F 70 28    ..    if(nextop(
010120:  6F 70 73 74 72 29 29 20 7B 0D 0A 20 20 20 20 20    opstr)) {..     
010130:  20 62 75 6D 70 28 6F 70 73 69 7A 65 29 3B 0D 0A     bump(opsize);..
010140:  20 20 20 20 20 20 6F 70 69 6E 64 65 78 3D 6F 70          opindex=op
010150:  69 6E 64 65 78 2B 6F 70 6F 66 66 3B 0D 0A 20 20    index+opoff;..  
010160:  20 20 20 20 70 6C 6E 67 65 32 28 6F 70 5B 6F 70        plnge2(op[op
010170:  69 6E 64 65 78 5D 2C 20 6F 70 32 5B 6F 70 69 6E    index], op2[opin
010180:  64 65 78 5D 2C 20 68 69 65 72 2C 20 6C 76 61 6C    dex], hier, lval
010190:  2C 20 6C 76 61 6C 32 29 3B 0D 0A 20 20 20 20 20    , lval2);..     
0101A0:  20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 72 65 74     }..    else ret
0101B0:  75 72 6E 20 30 3B 0D 0A 20 20 20 20 7D 0D 0A 20    urn 0;..    }.. 
0101C0:  20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 75 6E 61     }..../*..** una
0101D0:  72 79 20 70 6C 75 6E 67 65 20 74 6F 20 6C 6F 77    ry plunge to low
0101E0:  65 72 20 6C 65 76 65 6C 0D 0A 2A 2F 0D 0A 70 6C    er level..*/..pl
0101F0:  6E 67 65 31 28 68 69 65 72 2C 20 6C 76 61 6C 29    nge1(hier, lval)
010200:  20 69 6E 74 20 28 2A 68 69 65 72 29 28 29 2C 20     int (*hier)(), 
010210:  6C 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 63 68 61    lval[]; {..  cha
010220:  72 20 2A 62 65 66 6F 72 65 2C 20 2A 73 74 61 72    r *before, *star
010230:  74 3B 0D 0A 20 20 69 6E 74 20 6B 3B 0D 0A 20 20    t;..  int k;..  
010240:  73 65 74 73 74 61 67 65 28 26 62 65 66 6F 72 65    setstage(&before
010250:  2C 20 26 73 74 61 72 74 29 3B 0D 0A 20 20 6B 3D    , &start);..  k=
010260:  28 2A 68 69 65 72 29 28 6C 76 61 6C 29 3B 0D 0A    (*hier)(lval);..
010270:  20 20 69 66 28 6C 76 61 6C 5B 33 5D 29 20 63 6C      if(lval[3]) cl
010280:  65 61 72 73 74 61 67 65 28 62 65 66 6F 72 65 2C    earstage(before,
010290:  30 29 3B 09 2F 2A 20 6C 6F 61 64 20 63 6F 6E 73    0);./* load cons
0102A0:  74 61 6E 74 20 6C 61 74 65 72 20 2A 2F 0D 0A 20    tant later */.. 
0102B0:  20 72 65 74 75 72 6E 20 6B 3B 0D 0A 20 20 7D 0D     return k;..  }.
0102C0:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 62 69 6E 61 72 79    .../*..** binary
0102D0:  20 70 6C 75 6E 67 65 20 74 6F 20 6C 6F 77 65 72     plunge to lower
0102E0:  20 6C 65 76 65 6C 0D 0A 2A 2F 0D 0A 70 6C 6E 67     level..*/..plng
0102F0:  65 32 28 6F 70 65 72 2C 20 6F 70 65 72 32 2C 20    e2(oper, oper2, 
010300:  20 3D 3D 20 66 66 61 6E 64 29 20 72 65 74 75 72     == ffand) retur
010310:  6E 20 28 6C 65 66 74 20 20 26 20 20 72 69 67 68    n (left  &  righ
010320:  74 29 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 6F    t);..  else if(o
010330:  70 65 72 20 3D 3D 20 20 66 66 65 71 29 20 72 65    per ==  ffeq) re
010340:  74 75 72 6E 20 28 6C 65 66 74 20 20 3D 3D 20 72    turn (left  == r
010350:  69 67 68 74 29 3B 0D 0A 20 20 65 6C 73 65 20 69    ight);..  else i
010360:  66 28 6F 70 65 72 20 3D 3D 20 20 66 66 6E 65 29    f(oper ==  ffne)
010370:  20 72 65 74 75 72 6E 20 28 6C 65 66 74 20 20 21     return (left  !
010380:  3D 20 72 69 67 68 74 29 3B 0D 0A 20 20 65 6C 73    = right);..  els
010390:  65 20 69 66 28 6F 70 65 72 20 3D 3D 20 20 66 66    e if(oper ==  ff
0103A0:  6C 65 29 20 72 65 74 75 72 6E 20 28 6C 65 66 74    le) return (left
0103B0:  20 20 3C 3D 20 72 69 67 68 74 29 3B 0D 0A 20 20      <= right);..  
0103C0:  65 6C 73 65 20 69 66 28 6F 70 65 72 20 3D 3D 20    else if(oper == 
0103D0:  20 66 66 67 65 29 20 72 65 74 75 72 6E 20 28 6C     ffge) return (l
0103E0:  65 66 74 20 20 3E 3D 20 72 69 67 68 74 29 3B 0D    eft  >= right);.
0103F0:  0A 20 20 65 6C 73 65 20 69 66 28 6F 70 65 72 20    .  else if(oper 
010400:  3D 3D 20 20 66 66 6C 74 29 20 72 65 74 75 72 6E    ==  fflt) return
010410:  20 28 6C 65 66 74 20 20 3C 20 20 72 69 67 68 74     (left  <  right
010420:  29 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 6F 70    );..  else if(op
010430:  65 72 20 3D 3D 20 20 66 66 67 74 29 20 72 65 74    er ==  ffgt) ret
010440:  75 72 6E 20 28 6C 65 66 74 20 20 3E 20 20 72 69    urn (left  >  ri
010450:  67 68 74 29 3B 0D 0A 20 20 65 6C 73 65 20 69 66    ght);..  else if
010460:  28 6F 70 65 72 20 3D 3D 20 66 66 61 73 72 29 20    (oper == ffasr) 
010470:  72 65 74 75 72 6E 20 28 6C 65 66 74 20 20 3E 3E    return (left  >>
010480:  20 72 69 67 68 74 29 3B 0D 0A 20 20 65 6C 73 65     right);..  else
010490:  20 69 66 28 6F 70 65 72 20 3D 3D 20 66 66 61 73     if(oper == ffas
0104A0:  6C 29 20 72 65 74 75 72 6E 20 28 6C 65 66 74 20    l) return (left 
0104B0:  20 3C 3C 20 72 69 67 68 74 29 3B 0D 0A 20 20 65     << right);..  e
0104C0:  6C 73 65 20 69 66 28 6F 70 65 72 20 3D 3D 20 66    lse if(oper == f
0104D0:  66 61 64 64 29 20 72 65 74 75 72 6E 20 28 6C 65    fadd) return (le
0104E0:  66 74 20 20 2B 20 20 72 69 67 68 74 29 3B 0D 0A    ft  +  right);..
0104F0:  20 20 65 6C 73 65 20 69 66 28 6F 70 65 72 20 3D      else if(oper =
010500:  68 69 65 72 2C 20 6C 76 61 6C 2C 20 6C 76 61 6C    hier, lval, lval
010510:  32 29 0D 0A 20 20 69 6E 74 20 28 2A 6F 70 65 72    2)..  int (*oper
010520:  29 28 29 2C 28 2A 6F 70 65 72 32 29 28 29 2C 28    )(),(*oper2)(),(
010530:  2A 68 69 65 72 29 28 29 2C 6C 76 61 6C 5B 5D 2C    *hier)(),lval[],
010540:  6C 76 61 6C 32 5B 5D 3B 20 7B 0D 0A 20 20 63 68    lval2[]; {..  ch
010550:  61 72 20 2A 62 65 66 6F 72 65 2C 20 2A 73 74 61    ar *before, *sta
010560:  72 74 3B 0D 0A 20 20 73 65 74 73 74 61 67 65 28    rt;..  setstage(
010570:  26 62 65 66 6F 72 65 2C 20 26 73 74 61 72 74 29    &before, &start)
010580:  3B 0D 0A 20 20 6C 76 61 6C 5B 35 5D 3D 31 3B 09    ;..  lval[5]=1;.
010590:  09 2F 2A 20 66 6C 61 67 20 73 65 63 6F 6E 64 61    ./* flag seconda
0105A0:  72 79 20 72 65 67 69 73 74 65 72 20 75 73 65 64    ry register used
0105B0:  20 2A 2F 0D 0A 20 20 6C 76 61 6C 5B 37 5D 3D 30     */..  lval[7]=0
0105C0:  3B 09 09 2F 2A 20 66 6C 61 67 20 61 73 20 6E 6F    ;../* flag as no
0105D0:  74 20 22 2E 2E 2E 20 6F 70 65 72 20 30 22 20 73    t "... oper 0" s
0105E0:  79 6E 74 61 78 20 2A 2F 0D 0A 20 20 69 66 28 6C    yntax */..  if(l
0105F0:  76 61 6C 5B 33 5D 29 20 7B 09 09 2F 2A 20 63 6F    val[3]) {../* co
010600:  6E 73 74 61 6E 74 20 6F 6E 20 6C 65 66 74 20 73    nstant on left s
010610:  69 64 65 20 6E 6F 74 20 79 65 74 20 6C 6F 61 64    ide not yet load
010620:  65 64 20 2A 2F 0D 0A 20 20 20 20 69 66 28 70 6C    ed */..    if(pl
010630:  6E 67 65 31 28 68 69 65 72 2C 20 6C 76 61 6C 32    nge1(hier, lval2
010640:  29 29 20 72 76 61 6C 75 65 28 6C 76 61 6C 32 29    )) rvalue(lval2)
010650:  3B 0D 0A 20 20 20 20 69 66 28 6C 76 61 6C 5B 34    ;..    if(lval[4
010660:  5D 3D 3D 30 29 20 6C 76 61 6C 5B 37 5D 3D 73 74    ]==0) lval[7]=st
010670:  61 67 65 6E 65 78 74 3B 0D 0A 20 20 20 20 63 6F    agenext;..    co
010680:  6E 73 74 32 28 6C 76 61 6C 5B 34 5D 3C 3C 64 62    nst2(lval[4]<<db
010690:  6C 74 65 73 74 28 6F 70 65 72 2C 20 6C 76 61 6C    ltest(oper, lval
0106A0:  32 2C 20 6C 76 61 6C 29 29 3B 0D 0A 20 20 20 20    2, lval));..    
0106B0:  7D 0D 0A 20 20 65 6C 73 65 20 7B 09 09 2F 2A 20    }..  else {../* 
0106C0:  6E 6F 6E 2D 63 6F 6E 73 74 61 6E 74 20 6F 6E 20    non-constant on 
0106D0:  6C 65 66 74 20 73 69 64 65 20 2A 2F 0D 0A 20 20    left side */..  
0106E0:  20 20 70 75 73 68 28 29 3B 0D 0A 20 20 20 20 69      push();..    i
0106F0:  66 28 70 6C 6E 67 65 31 28 68 69 65 72 2C 20 6C    f(plnge1(hier, l
010700:  3D 20 66 66 73 75 62 29 20 72 65 74 75 72 6E 20    = ffsub) return 
010710:  28 6C 65 66 74 20 20 2D 20 20 72 69 67 68 74 29    (left  -  right)
010720:  3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 6F 70 65    ;..  else if(ope
010730:  72 20 3D 3D 66 66 6D 75 6C 74 29 20 72 65 74 75    r ==ffmult) retu
010740:  72 6E 20 28 6C 65 66 74 20 20 2A 20 20 72 69 67    rn (left  *  rig
010750:  68 74 29 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28    ht);..  else if(
010760:  6F 70 65 72 20 3D 3D 20 66 66 64 69 76 29 20 72    oper == ffdiv) r
010770:  65 74 75 72 6E 20 28 6C 65 66 74 20 20 2F 20 20    eturn (left  /  
010780:  72 69 67 68 74 29 3B 0D 0A 20 20 65 6C 73 65 20    right);..  else 
010790:  69 66 28 6F 70 65 72 20 3D 3D 20 66 66 6D 6F 64    if(oper == ffmod
0107A0:  29 20 72 65 74 75 72 6E 20 28 6C 65 66 74 20 20    ) return (left  
0107B0:  25 20 20 72 69 67 68 74 29 3B 0D 0A 20 20 65 6C    %  right);..  el
0107C0:  73 65 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20    se return 0;..  
0107D0:  7D 0D 0A 0D 0A 65 78 70 72 65 73 73 69 6F 6E 28    }....expression(
0107E0:  63 6F 6E 73 74 2C 20 76 61 6C 29 20 69 6E 74 20    const, val) int 
0107F0:  2A 63 6F 6E 73 74 2C 20 2A 76 61 6C 3B 20 20 7B    *const, *val;  {
010800:  0D 0A 20 20 69 6E 74 20 6C 76 61 6C 5B 38 5D 3B    ..  int lval[8];
010810:  0D 0A 20 20 69 66 28 68 69 65 72 31 28 6C 76 61    ..  if(hier1(lva
010820:  6C 29 29 20 72 76 61 6C 75 65 28 6C 76 61 6C 29    l)) rvalue(lval)
010830:  3B 0D 0A 20 20 69 66 28 6C 76 61 6C 5B 33 5D 29    ;..  if(lval[3])
010840:  20 7B 0D 0A 20 20 20 20 2A 63 6F 6E 73 74 3D 31     {..    *const=1
010850:  3B 0D 0A 20 20 20 20 2A 76 61 6C 3D 6C 76 61 6C    ;..    *val=lval
010860:  5B 34 5D 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 65    [4];..    }..  e
010870:  6C 73 65 20 2A 63 6F 6E 73 74 3D 30 3B 0D 0A 20    lse *const=0;.. 
010880:  20 7D 0D 0A 0D 0A 68 69 65 72 31 28 6C 76 61 6C     }....hier1(lval
010890:  29 20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 20    )  int lval[];  
0108A0:  7B 0D 0A 20 20 69 6E 74 20 6B 2C 6C 76 61 6C 32    {..  int k,lval2
0108B0:  5B 38 5D 2C 20 6C 76 61 6C 33 5B 32 5D 2C 20 6F    [8], lval3[2], o
0108C0:  70 65 72 3B 0D 0A 20 20 6B 3D 70 6C 6E 67 65 31    per;..  k=plnge1
0108D0:  28 68 69 65 72 33 2C 20 6C 76 61 6C 29 3B 0D 0A    (hier3, lval);..
0108E0:  20 20 69 66 28 6C 76 61 6C 5B 33 5D 29 20 63 6F      if(lval[3]) co
0108F0:  6E 73 74 28 6C 76 61 6C 5B 34 5D 29 3B 0D 0A 20    nst(lval[4]);.. 
010900:  76 61 6C 32 29 29 20 72 76 61 6C 75 65 28 6C 76    val2)) rvalue(lv
010910:  61 6C 32 29 3B 0D 0A 20 20 20 20 69 66 28 6C 76    al2);..    if(lv
010920:  61 6C 32 5B 33 5D 29 20 7B 09 2F 2A 20 63 6F 6E    al2[3]) {./* con
010930:  73 74 61 6E 74 20 6F 6E 20 72 69 67 68 74 20 73    stant on right s
010940:  69 64 65 20 2A 2F 0D 0A 20 20 20 20 20 20 69 66    ide */..      if
010950:  28 6C 76 61 6C 32 5B 34 5D 3D 3D 30 29 20 6C 76    (lval2[4]==0) lv
010960:  61 6C 5B 37 5D 3D 73 74 61 72 74 3B 0D 0A 20 20    al[7]=start;..  
010970:  20 20 20 20 69 66 28 6F 70 65 72 3D 3D 66 66 61        if(oper==ffa
010980:  64 64 29 20 7B 09 2F 2A 20 6D 61 79 20 74 65 73    dd) {./* may tes
010990:  74 20 6F 74 68 65 72 20 63 6F 6D 6D 75 74 61 74    t other commutat
0109A0:  69 76 65 20 6F 70 65 72 61 74 6F 72 73 20 2A 2F    ive operators */
0109B0:  0D 0A 20 20 20 20 20 20 20 20 63 73 70 3D 63 73    ..        csp=cs
0109C0:  70 2B 32 3B 0D 0A 20 20 20 20 20 20 20 20 63 6C    p+2;..        cl
0109D0:  65 61 72 73 74 61 67 65 28 62 65 66 6F 72 65 2C    earstage(before,
0109E0:  20 30 29 3B 0D 0A 20 20 20 20 20 20 20 20 63 6F     0);..        co
0109F0:  6E 73 74 32 28 6C 76 61 6C 32 5B 34 5D 3C 3C 64    nst2(lval2[4]<<d
010A00:  62 6C 74 65 73 74 28 6F 70 65 72 2C 20 6C 76 61    bltest(oper, lva
010A10:  6C 2C 20 6C 76 61 6C 32 29 29 3B 0D 0A 09 09 09    l, lval2));.....
010A20:  2F 2A 20 6C 6F 61 64 20 73 65 63 6F 6E 64 61 72    /* load secondar
010A30:  79 20 2A 2F 0D 0A 20 20 20 20 20 20 20 20 7D 0D    y */..        }.
010A40:  0A 20 20 20 20 20 20 65 6C 73 65 20 7B 0D 0A 20    .      else {.. 
010A50:  20 20 20 20 20 20 20 63 6F 6E 73 74 28 6C 76 61           const(lva
010A60:  6C 32 5B 34 5D 3C 3C 64 62 6C 74 65 73 74 28 6F    l2[4]<<dbltest(o
010A70:  70 65 72 2C 20 6C 76 61 6C 2C 20 6C 76 61 6C 32    per, lval, lval2
010A80:  29 29 3B 0D 0A 09 09 09 2F 2A 20 6C 6F 61 64 20    ));...../* load 
010A90:  70 72 69 6D 61 72 79 20 2A 2F 0D 0A 20 20 20 20    primary */..    
010AA0:  20 20 20 20 73 6D 61 72 74 70 6F 70 28 6C 76 61        smartpop(lva
010AB0:  6C 32 2C 20 73 74 61 72 74 29 3B 0D 0A 20 20 20    l2, start);..   
010AC0:  20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 7D 0D         }..      }.
010AD0:  0A 20 20 20 20 65 6C 73 65 20 7B 09 09 2F 2A 20    .    else {../* 
010AE0:  6E 6F 6E 2D 63 6F 6E 73 74 61 6E 74 73 20 6F 6E    non-constants on
010AF0:  20 62 6F 74 68 20 73 69 64 65 73 20 2A 2F 0D 0A     both sides */..
010B00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
010B10:  0E 00 01 00 02 09 52 E5 0E 00 41 02 00 00 00 02    ......R...A.....
010B20:  0E 00 46 02 00 00 00 02 0E 00 42 02 00 00 00 02    ..F.......B.....
010B30:  0E 00 47 02 00 00 00 02 0E 00 43 02 00 00 00 02    ..G.......C.....
010B40:  0E 00 48 02 00 00 00 02 0E 00 44 02 00 00 00 02    ..H.......D.....
010B50:  0E 00 49 02 00 00 00 02 0E 00 45 02 00 00 00 02    ..I.......E.....
010B60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010C00:  20 20 20 20 20 20 69 66 28 6D 61 74 63 68 28 22          if(match("
010C10:  7C 3D 22 29 29 20 20 6F 70 65 72 3D 66 66 6F 72    |="))  oper=ffor
010C20:  3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 6D 61 74    ;..  else if(mat
010C30:  63 68 28 22 5E 3D 22 29 29 20 20 6F 70 65 72 3D    ch("^="))  oper=
010C40:  66 66 78 6F 72 3B 0D 0A 20 20 65 6C 73 65 20 69    ffxor;..  else i
010C50:  66 28 6D 61 74 63 68 28 22 26 3D 22 29 29 20 20    f(match("&="))  
010C60:  6F 70 65 72 3D 66 66 61 6E 64 3B 0D 0A 20 20 65    oper=ffand;..  e
010C70:  6C 73 65 20 69 66 28 6D 61 74 63 68 28 22 2B 3D    lse if(match("+=
010C80:  22 29 29 20 20 6F 70 65 72 3D 66 66 61 64 64 3B    "))  oper=ffadd;
010C90:  0D 0A 20 20 65 6C 73 65 20 69 66 28 6D 61 74 63    ..  else if(matc
010CA0:  68 28 22 2D 3D 22 29 29 20 20 6F 70 65 72 3D 66    h("-="))  oper=f
010CB0:  66 73 75 62 3B 0D 0A 20 20 65 6C 73 65 20 69 66    fsub;..  else if
010CC0:  28 6D 61 74 63 68 28 22 2A 3D 22 29 29 20 20 6F    (match("*="))  o
010CD0:  70 65 72 3D 66 66 6D 75 6C 74 3B 0D 0A 20 20 65    per=ffmult;..  e
010CE0:  6C 73 65 20 69 66 28 6D 61 74 63 68 28 22 2F 3D    lse if(match("/=
010CF0:  22 29 29 20 20 6F 70 65 72 3D 66 66 64 69 76 3B    "))  oper=ffdiv;
010D00:  0D 0A 20 20 65 6C 73 65 20 69 66 28 6D 61 74 63    ..  else if(matc
010D10:  68 28 22 25 3D 22 29 29 20 20 6F 70 65 72 3D 66    h("%="))  oper=f
010D20:  66 6D 6F 64 3B 0D 0A 20 20 65 6C 73 65 20 69 66    fmod;..  else if
010D30:  28 6D 61 74 63 68 28 22 3E 3E 3D 22 29 29 20 6F    (match(">>=")) o
010D40:  70 65 72 3D 66 66 61 73 72 3B 0D 0A 20 20 65 6C    per=ffasr;..  el
010D50:  73 65 20 69 66 28 6D 61 74 63 68 28 22 3C 3C 3D    se if(match("<<=
010D60:  22 29 29 20 6F 70 65 72 3D 66 66 61 73 6C 3B 0D    ")) oper=ffasl;.
010D70:  0A 20 20 65 6C 73 65 20 69 66 28 6D 61 74 63 68    .  else if(match
010D80:  28 22 3D 22 29 29 20 20 20 6F 70 65 72 3D 30 3B    ("="))   oper=0;
010D90:  0D 0A 20 20 65 6C 73 65 20 72 65 74 75 72 6E 20    ..  else return 
010DA0:  6B 3B 0D 0A 20 20 69 66 28 6B 3D 3D 30 29 20 7B    k;..  if(k==0) {
010DB0:  0D 0A 20 20 20 20 6E 65 65 64 6C 76 61 6C 28 29    ..    needlval()
010DC0:  3B 0D 0A 20 20 20 20 72 65 74 75 72 6E 20 30 3B    ;..    return 0;
010DD0:  0D 0A 20 20 20 20 7D 0D 0A 20 20 6C 76 61 6C 33    ..    }..  lval3
010DE0:  5B 30 5D 20 3D 20 6C 76 61 6C 5B 30 5D 3B 0D 0A    [0] = lval[0];..
010DF0:  20 20 6C 76 61 6C 33 5B 31 5D 20 3D 20 6C 76 61      lval3[1] = lva
010E00:  76 61 6C 29 3B 0D 0A 20 20 20 20 69 66 28 70 74    val);..    if(pt
010E10:  72 3D 6C 76 61 6C 5B 30 5D 29 6C 76 61 6C 5B 31    r=lval[0])lval[1
010E20:  5D 3D 70 74 72 5B 54 59 50 45 5D 3B 0D 0A 20 20    ]=ptr[TYPE];..  
010E30:  20 20 65 6C 73 65 20 6C 76 61 6C 5B 31 5D 3D 43      else lval[1]=C
010E40:  49 4E 54 3B 0D 0A 20 20 20 20 6C 76 61 6C 5B 32    INT;..    lval[2
010E50:  5D 3D 30 3B 09 09 2F 2A 20 66 6C 61 67 20 61 73    ]=0;../* flag as
010E60:  20 6E 6F 74 20 70 6F 69 6E 74 65 72 20 6F 72 20     not pointer or 
010E70:  61 72 72 61 79 20 2A 2F 0D 0A 20 20 20 20 6C 76    array */..    lv
010E80:  61 6C 5B 33 5D 3D 30 3B 09 09 2F 2A 20 66 6C 61    al[3]=0;../* fla
010E90:  67 20 61 73 20 6E 6F 74 20 63 6F 6E 73 74 61 6E    g as not constan
010EA0:  74 20 2A 2F 0D 0A 20 20 20 20 6C 76 61 6C 5B 34    t */..    lval[4
010EB0:  5D 3D 31 3B 09 09 2F 2A 20 6F 6D 69 74 20 72 76    ]=1;../* omit rv
010EC0:  61 6C 75 65 28 29 20 6F 6E 20 66 75 6E 63 20 63    alue() on func c
010ED0:  61 6C 6C 20 2A 2F 0D 0A 20 20 20 20 6C 76 61 6C    all */..    lval
010EE0:  5B 37 5D 3D 30 3B 0D 0A 20 20 20 20 72 65 74 75    [7]=0;..    retu
010EF0:  72 6E 20 31 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20    rn 1;..    }..  
010F00:  65 6C 73 65 20 69 66 28 6D 61 74 63 68 28 22 26    else if(match("&
010F10:  22 29 29 20 7B 09 09 09 2F 2A 20 75 6E 61 72 79    ")) {.../* unary
010F20:  20 26 20 2A 2F 0D 0A 20 20 20 20 69 66 28 68 69     & */..    if(hi
010F30:  65 72 31 33 28 6C 76 61 6C 29 3D 3D 30 29 20 7B    er13(lval)==0) {
010F40:  0D 0A 20 20 20 20 20 20 65 72 72 6F 72 28 22 69    ..      error("i
010F50:  6C 6C 65 67 61 6C 20 61 64 64 72 65 73 73 22 29    llegal address")
010F60:  3B 0D 0A 20 20 20 20 20 20 72 65 74 75 72 6E 20    ;..      return 
010F70:  30 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20    0;..      }..   
010F80:  20 70 74 72 3D 6C 76 61 6C 5B 30 5D 3B 0D 0A 20     ptr=lval[0];.. 
010F90:  20 20 20 6C 76 61 6C 5B 32 5D 3D 70 74 72 5B 54       lval[2]=ptr[T
010FA0:  59 50 45 5D 3B 0D 0A 20 20 20 20 69 66 28 6C 76    YPE];..    if(lv
010FB0:  61 6C 5B 31 5D 29 20 72 65 74 75 72 6E 20 30 3B    al[1]) return 0;
010FC0:  0D 0A 09 09 09 09 09 2F 2A 20 67 6C 6F 62 61 6C    ......./* global
010FD0:  20 26 20 6E 6F 6E 2D 61 72 72 61 79 20 2A 2F 0D     & non-array */.
010FE0:  0A 20 20 20 20 61 64 64 72 65 73 73 28 70 74 72    .    address(ptr
010FF0:  29 3B 0D 0A 20 20 20 20 6C 76 61 6C 5B 31 5D 3D    );..    lval[1]=
011000:  6C 5B 31 5D 3B 0D 0A 20 20 69 66 28 6C 76 61 6C    l[1];..  if(lval
011010:  5B 31 5D 29 20 7B 0D 0A 20 20 20 20 69 66 28 6F    [1]) {..    if(o
011020:  70 65 72 29 20 7B 0D 0A 20 20 20 20 20 20 70 75    per) {..      pu
011030:  73 68 28 29 3B 0D 0A 20 20 20 20 20 20 72 76 61    sh();..      rva
011040:  6C 75 65 28 6C 76 61 6C 29 3B 0D 0A 20 20 20 20    lue(lval);..    
011050:  20 20 7D 0D 0A 20 20 20 20 70 6C 6E 67 65 32 28      }..    plnge2(
011060:  6F 70 65 72 2C 20 6F 70 65 72 2C 20 68 69 65 72    oper, oper, hier
011070:  31 2C 20 6C 76 61 6C 2C 20 6C 76 61 6C 32 29 3B    1, lval, lval2);
011080:  0D 0A 20 20 20 20 69 66 28 6F 70 65 72 29 20 70    ..    if(oper) p
011090:  6F 70 28 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20    op();..    }..  
0110A0:  65 6C 73 65 20 7B 0D 0A 20 20 20 20 69 66 28 6F    else {..    if(o
0110B0:  70 65 72 29 20 7B 0D 0A 20 20 20 20 20 20 72 76    per) {..      rv
0110C0:  61 6C 75 65 28 6C 76 61 6C 29 3B 0D 0A 20 20 20    alue(lval);..   
0110D0:  20 20 20 70 6C 6E 67 65 32 28 6F 70 65 72 2C 20       plnge2(oper, 
0110E0:  6F 70 65 72 2C 20 68 69 65 72 31 2C 20 6C 76 61    oper, hier1, lva
0110F0:  6C 2C 20 6C 76 61 6C 32 29 3B 0D 0A 20 20 20 20    l, lval2);..    
011100:  20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 7B 0D      }..    else {.
011110:  0A 20 20 20 20 20 20 69 66 28 68 69 65 72 31 28    .      if(hier1(
011120:  6C 76 61 6C 32 29 29 20 72 76 61 6C 75 65 28 6C    lval2)) rvalue(l
011130:  76 61 6C 32 29 3B 0D 0A 20 20 20 20 20 20 6C 76    val2);..      lv
011140:  61 6C 5B 35 5D 3D 6C 76 61 6C 32 5B 35 5D 3B 0D    al[5]=lval2[5];.
011150:  0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D 0D    .      }..    }.
011160:  0A 20 20 73 74 6F 72 65 28 6C 76 61 6C 33 29 3B    .  store(lval3);
011170:  0D 0A 20 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20    ..  return 0;.. 
011180:  20 7D 0D 0A 0D 0A 68 69 65 72 33 28 6C 76 61 6C     }....hier3(lval
011190:  29 20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 7B    )  int lval[]; {
0111A0:  0D 0A 20 20 72 65 74 75 72 6E 20 73 6B 69 6D 28    ..  return skim(
0111B0:  22 7C 7C 22 2C 20 65 71 30 2C 20 31 2C 20 30 2C    "||", eq0, 1, 0,
0111C0:  20 68 69 65 72 34 2C 20 6C 76 61 6C 29 3B 0D 0A     hier4, lval);..
0111D0:  20 20 7D 0D 0A 0D 0A 68 69 65 72 34 28 6C 76 61      }....hier4(lva
0111E0:  6C 29 20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20    l)  int lval[]; 
0111F0:  7B 0D 0A 20 20 72 65 74 75 72 6E 20 73 6B 69 6D    {..  return skim
011200:  70 74 72 5B 54 59 50 45 5D 3B 0D 0A 20 20 20 20    ptr[TYPE];..    
011210:  72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 7D    return 0;..    }
011220:  0D 0A 20 20 65 6C 73 65 20 7B 0D 0A 20 20 20 20    ..  else {..    
011230:  6B 3D 68 69 65 72 31 34 28 6C 76 61 6C 29 3B 0D    k=hier14(lval);.
011240:  0A 20 20 20 20 69 66 28 6D 61 74 63 68 28 22 2B    .    if(match("+
011250:  2B 22 29 29 20 7B 09 09 09 2F 2A 20 6C 76 61 6C    +")) {.../* lval
011260:  2B 2B 20 2A 2F 0D 0A 20 20 20 20 20 20 69 66 28    ++ */..      if(
011270:  6B 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 20 20 20    k==0) {..       
011280:  20 6E 65 65 64 6C 76 61 6C 28 29 3B 0D 0A 20 20     needlval();..  
011290:  20 20 20 20 20 20 72 65 74 75 72 6E 20 30 3B 0D          return 0;.
0112A0:  0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20    .        }..    
0112B0:  20 20 73 74 65 70 28 69 6E 63 2C 20 6C 76 61 6C      step(inc, lval
0112C0:  29 3B 0D 0A 20 20 20 20 20 20 64 65 63 28 6C 76    );..      dec(lv
0112D0:  61 6C 5B 32 5D 3E 3E 32 29 3B 0D 0A 20 20 20 20    al[2]>>2);..    
0112E0:  20 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20      return 0;..   
0112F0:  20 20 20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69       }..    else i
011300:  66 28 6D 61 74 63 68 28 22 2D 2D 22 29 29 20 7B    f(match("--")) {
011310:  09 09 2F 2A 20 6C 76 61 6C 2D 2D 20 2A 2F 0D 0A    ../* lval-- */..
011320:  20 20 20 20 20 20 69 66 28 6B 3D 3D 30 29 20 7B          if(k==0) {
011330:  0D 0A 20 20 20 20 20 20 20 20 6E 65 65 64 6C 76    ..        needlv
011340:  61 6C 28 29 3B 0D 0A 20 20 20 20 20 20 20 20 72    al();..        r
011350:  65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 20 20    eturn 0;..      
011360:  20 20 7D 0D 0A 20 20 20 20 20 20 73 74 65 70 28      }..      step(
011370:  64 65 63 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 20    dec, lval);..   
011380:  20 20 20 69 6E 63 28 6C 76 61 6C 5B 32 5D 3E 3E       inc(lval[2]>>
011390:  32 29 3B 0D 0A 20 20 20 20 20 20 72 65 74 75 72    2);..      retur
0113A0:  6E 20 30 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20    n 0;..      }.. 
0113B0:  20 20 20 65 6C 73 65 20 72 65 74 75 72 6E 20 6B       else return k
0113C0:  3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D    ;..    }..  }...
0113D0:  0A 68 69 65 72 31 34 28 6C 76 61 6C 29 20 20 69    .hier14(lval)  i
0113E0:  6E 74 20 2A 6C 76 61 6C 3B 20 7B 0D 0A 20 20 69    nt *lval; {..  i
0113F0:  6E 74 20 6B 2C 20 63 6F 6E 73 74 2C 20 76 61 6C    nt k, const, val
011400:  28 22 26 26 22 2C 20 6E 65 30 2C 20 30 2C 20 31    ("&&", ne0, 0, 1
011410:  2C 20 68 69 65 72 35 2C 20 6C 76 61 6C 29 3B 0D    , hier5, lval);.
011420:  0A 20 20 7D 0D 0A 0D 0A 68 69 65 72 35 28 6C 76    .  }....hier5(lv
011430:  61 6C 29 20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B    al)  int lval[];
011440:  20 7B 0D 0A 20 20 72 65 74 75 72 6E 20 70 6C 6E     {..  return pln
011450:  67 65 28 22 7C 22 2C 20 30 2C 20 68 69 65 72 36    ge("|", 0, hier6
011460:  2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D 0D 0A 0D    , lval);..  }...
011470:  0A 68 69 65 72 36 28 6C 76 61 6C 29 20 20 69 6E    .hier6(lval)  in
011480:  74 20 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 72    t lval[]; {..  r
011490:  65 74 75 72 6E 20 70 6C 6E 67 65 28 22 5E 22 2C    eturn plnge("^",
0114A0:  20 31 2C 20 68 69 65 72 37 2C 20 6C 76 61 6C 29     1, hier7, lval)
0114B0:  3B 0D 0A 20 20 7D 0D 0A 0D 0A 68 69 65 72 37 28    ;..  }....hier7(
0114C0:  6C 76 61 6C 29 20 20 69 6E 74 20 6C 76 61 6C 5B    lval)  int lval[
0114D0:  5D 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 20 70    ]; {..  return p
0114E0:  6C 6E 67 65 28 22 26 22 2C 20 32 2C 20 68 69 65    lnge("&", 2, hie
0114F0:  72 38 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D 0D    r8, lval);..  }.
011500:  0A 0D 0A 68 69 65 72 38 28 6C 76 61 6C 29 20 20    ...hier8(lval)  
011510:  69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 20 7B 0D 0A    int lval[];  {..
011520:  20 20 72 65 74 75 72 6E 20 70 6C 6E 67 65 28 22      return plnge("
011530:  3D 3D 20 21 3D 22 2C 20 33 2C 20 68 69 65 72 39    == !=", 3, hier9
011540:  2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D 0D 0A 0D    , lval);..  }...
011550:  0A 68 69 65 72 39 28 6C 76 61 6C 29 20 20 69 6E    .hier9(lval)  in
011560:  74 20 6C 76 61 6C 5B 5D 3B 20 20 7B 0D 0A 20 20    t lval[];  {..  
011570:  72 65 74 75 72 6E 20 70 6C 6E 67 65 28 22 3C 3D    return plnge("<=
011580:  20 3E 3D 20 3C 20 3E 22 2C 20 35 2C 20 68 69 65     >= < >", 5, hie
011590:  72 31 30 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D    r10, lval);..  }
0115A0:  0D 0A 0D 0A 68 69 65 72 31 30 28 6C 76 61 6C 29    ....hier10(lval)
0115B0:  20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 20 7B      int lval[];  {
0115C0:  0D 0A 20 20 72 65 74 75 72 6E 20 70 6C 6E 67 65    ..  return plnge
0115D0:  28 22 3E 3E 20 3C 3C 22 2C 20 39 2C 20 68 69 65    (">> <<", 9, hie
0115E0:  72 31 31 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D    r11, lval);..  }
0115F0:  0D 0A 0D 0A 68 69 65 72 31 31 28 6C 76 61 6C 29    ....hier11(lval)
011600:  2C 20 6C 76 61 6C 32 5B 38 5D 3B 0D 0A 20 20 63    , lval2[8];..  c
011610:  68 61 72 20 2A 70 74 72 2C 20 2A 62 65 66 6F 72    har *ptr, *befor
011620:  65 2C 20 2A 73 74 61 72 74 3B 0D 0A 20 20 6B 3D    e, *start;..  k=
011630:  70 72 69 6D 61 72 79 28 6C 76 61 6C 29 3B 0D 0A    primary(lval);..
011640:  20 20 70 74 72 3D 6C 76 61 6C 5B 30 5D 3B 0D 0A      ptr=lval[0];..
011650:  20 20 62 6C 61 6E 6B 73 28 29 3B 0D 0A 20 20 69      blanks();..  i
011660:  66 28 28 63 68 3D 3D 27 5B 27 29 7C 28 63 68 3D    f((ch=='[')|(ch=
011670:  3D 27 28 27 29 29 20 7B 0D 0A 20 20 20 20 6C 76    ='(')) {..    lv
011680:  61 6C 5B 35 5D 3D 31 3B 09 09 09 2F 2A 20 73 65    al[5]=1;.../* se
011690:  63 6F 6E 64 61 72 79 20 72 65 67 69 73 74 65 72    condary register
0116A0:  20 77 69 6C 6C 20 62 65 20 75 73 65 64 20 2A 2F     will be used */
0116B0:  0D 0A 20 20 20 20 77 68 69 6C 65 28 31 29 20 7B    ..    while(1) {
0116C0:  0D 0A 20 20 20 20 20 20 69 66 28 6D 61 74 63 68    ..      if(match
0116D0:  28 22 5B 22 29 29 20 7B 09 09 09 2F 2A 20 5B 73    ("[")) {.../* [s
0116E0:  75 62 73 63 72 69 70 74 5D 20 2A 2F 0D 0A 20 20    ubscript] */..  
0116F0:  20 20 20 20 20 20 69 66 28 70 74 72 3D 3D 30 29          if(ptr==0)
011700:  20 7B 0D 0A 20 20 20 20 20 20 20 20 20 20 65 72     {..          er
011710:  72 6F 72 28 22 63 61 6E 27 74 20 73 75 62 73 63    ror("can't subsc
011720:  72 69 70 74 22 29 3B 0D 0A 20 20 20 20 20 20 20    ript");..       
011730:  20 20 20 6A 75 6E 6B 28 29 3B 0D 0A 20 20 20 20       junk();..    
011740:  20 20 20 20 20 20 6E 65 65 64 74 6F 6B 65 6E 28          needtoken(
011750:  22 5D 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 20    "]");..         
011760:  20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20     return 0;..    
011770:  20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 20          }..       
011780:  20 65 6C 73 65 20 69 66 28 70 74 72 5B 49 44 45     else if(ptr[IDE
011790:  4E 54 5D 3D 3D 50 4F 49 4E 54 45 52 29 72 76 61    NT]==POINTER)rva
0117A0:  6C 75 65 28 6C 76 61 6C 29 3B 0D 0A 20 20 20 20    lue(lval);..    
0117B0:  20 20 20 20 65 6C 73 65 20 69 66 28 70 74 72 5B        else if(ptr[
0117C0:  49 44 45 4E 54 5D 21 3D 41 52 52 41 59 29 20 7B    IDENT]!=ARRAY) {
0117D0:  0D 0A 20 20 20 20 20 20 20 20 20 20 65 72 72 6F    ..          erro
0117E0:  72 28 22 63 61 6E 27 74 20 73 75 62 73 63 72 69    r("can't subscri
0117F0:  70 74 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 20    pt");..         
011800:  20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 20 7B      int lval[];  {
011810:  0D 0A 20 20 72 65 74 75 72 6E 20 70 6C 6E 67 65    ..  return plnge
011820:  28 22 2B 20 2D 22 2C 20 31 31 2C 20 68 69 65 72    ("+ -", 11, hier
011830:  31 32 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D 0D    12, lval);..  }.
011840:  0A 0D 0A 68 69 65 72 31 32 28 6C 76 61 6C 29 20    ...hier12(lval) 
011850:  20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 20 7B 0D     int lval[];  {.
011860:  0A 20 20 72 65 74 75 72 6E 20 70 6C 6E 67 65 28    .  return plnge(
011870:  22 2A 20 2F 20 25 22 2C 20 31 33 2C 20 68 69 65    "* / %", 13, hie
011880:  72 31 33 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 7D    r13, lval);..  }
011890:  0D 0A 0D 0A 3E 3E 3E 20 43 43 33 32 2E 43 20 35    ....>>> CC32.C 5
0118A0:  30 36 35 0D 0A 68 69 65 72 31 33 28 6C 76 61 6C    065..hier13(lval
0118B0:  29 20 20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 20    )  int lval[];  
0118C0:  7B 0D 0A 20 20 69 6E 74 20 6B 3B 0D 0A 20 20 63    {..  int k;..  c
0118D0:  68 61 72 20 2A 70 74 72 3B 0D 0A 20 20 69 66 28    har *ptr;..  if(
0118E0:  6D 61 74 63 68 28 22 2B 2B 22 29 29 20 7B 09 09    match("++")) {..
0118F0:  09 2F 2A 20 2B 2B 6C 76 61 6C 20 2A 2F 0D 0A 20    ./* ++lval */.. 
011900:  20 20 20 69 66 28 68 69 65 72 31 33 28 6C 76 61       if(hier13(lva
011910:  6C 29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 20 20    l)==0) {..      
011920:  6E 65 65 64 6C 76 61 6C 28 29 3B 0D 0A 20 20 20    needlval();..   
011930:  20 20 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20       return 0;..  
011940:  20 20 20 20 7D 0D 0A 20 20 20 20 73 74 65 70 28        }..    step(
011950:  69 6E 63 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 20    inc, lval);..   
011960:  20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20     return 0;..    
011970:  7D 0D 0A 20 20 65 6C 73 65 20 69 66 28 6D 61 74    }..  else if(mat
011980:  63 68 28 22 2D 2D 22 29 29 20 7B 09 09 2F 2A 20    ch("--")) {../* 
011990:  2D 2D 6C 76 61 6C 20 2A 2F 0D 0A 20 20 20 20 69    --lval */..    i
0119A0:  66 28 68 69 65 72 31 33 28 6C 76 61 6C 29 3D 3D    f(hier13(lval)==
0119B0:  30 29 20 7B 0D 0A 20 20 20 20 20 20 6E 65 65 64    0) {..      need
0119C0:  6C 76 61 6C 28 29 3B 0D 0A 20 20 20 20 20 20 72    lval();..      r
0119D0:  65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 20 20    eturn 0;..      
0119E0:  7D 0D 0A 20 20 20 20 73 74 65 70 28 64 65 63 2C    }..    step(dec,
0119F0:  20 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 72 65 74     lval);..    ret
011A00:  20 6B 3D 30 3B 0D 0A 20 20 20 20 20 20 20 20 20     k=0;..         
011A10:  20 7D 0D 0A 20 20 20 20 20 20 20 20 73 65 74 73     }..        sets
011A20:  74 61 67 65 28 26 62 65 66 6F 72 65 2C 20 26 73    tage(&before, &s
011A30:  74 61 72 74 29 3B 0D 0A 20 20 20 20 20 20 20 20    tart);..        
011A40:  6C 76 61 6C 32 5B 33 5D 3D 30 3B 0D 0A 20 20 20    lval2[3]=0;..   
011A50:  20 20 20 20 20 70 6C 6E 67 65 32 28 30 2C 20 30         plnge2(0, 0
011A60:  2C 20 68 69 65 72 31 2C 20 6C 76 61 6C 32 2C 20    , hier1, lval2, 
011A70:  6C 76 61 6C 32 29 3B 20 2F 2A 20 6C 76 61 6C 32    lval2); /* lval2
011A80:  20 64 65 61 64 65 6E 64 20 2A 2F 0D 0A 20 20 20     deadend */..   
011A90:  20 20 20 20 20 6E 65 65 64 74 6F 6B 65 6E 28 22         needtoken("
011AA0:  5D 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 69 66    ]");..        if
011AB0:  28 6C 76 61 6C 32 5B 33 5D 29 20 7B 0D 0A 20 20    (lval2[3]) {..  
011AC0:  20 20 20 20 20 20 20 20 63 6C 65 61 72 73 74 61            clearsta
011AD0:  67 65 28 62 65 66 6F 72 65 2C 20 30 29 3B 0D 0A    ge(before, 0);..
011AE0:  20 20 20 20 20 20 20 20 20 20 69 66 28 6C 76 61              if(lva
011AF0:  6C 32 5B 34 5D 29 20 7B 0D 0A 20 20 20 20 20 20    l2[4]) {..      
011B00:  20 20 20 20 20 20 69 66 28 70 74 72 5B 54 59 50          if(ptr[TYP
011B10:  45 5D 3D 3D 43 49 4E 54 29 20 63 6F 6E 73 74 32    E]==CINT) const2
011B20:  28 6C 76 61 6C 32 5B 34 5D 3C 3C 4C 42 50 57 29    (lval2[4]<<LBPW)
011B30:  3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 65    ;..            e
011B40:  6C 73 65 20 20 20 20 20 20 20 20 20 20 20 20 20    lse             
011B50:  20 20 20 63 6F 6E 73 74 32 28 6C 76 61 6C 32 5B       const2(lval2[
011B60:  34 5D 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20    4]);..          
011B70:  20 20 66 66 61 64 64 28 29 3B 0D 0A 20 20 20 20      ffadd();..    
011B80:  20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20            }..     
011B90:  20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 20 20         }..        
011BA0:  65 6C 73 65 20 7B 0D 0A 20 20 20 20 20 20 20 20    else {..        
011BB0:  20 20 69 66 28 70 74 72 5B 54 59 50 45 5D 3D 3D      if(ptr[TYPE]==
011BC0:  43 49 4E 54 29 20 64 6F 75 62 6C 65 72 65 67 28    CINT) doublereg(
011BD0:  29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 66 66    );..          ff
011BE0:  61 64 64 28 29 3B 0D 0A 20 20 20 20 20 20 20 20    add();..        
011BF0:  20 20 7D 0D 0A 20 20 20 20 20 20 20 20 6C 76 61      }..        lva
011C00:  75 72 6E 20 30 3B 0D 0A 20 20 20 20 7D 0D 0A 20    urn 0;..    }.. 
011C10:  20 65 6C 73 65 20 69 66 20 28 6D 61 74 63 68 28     else if (match(
011C20:  22 7E 22 29 29 20 7B 09 09 2F 2A 20 7E 20 2A 2F    "~")) {../* ~ */
011C30:  0D 0A 20 20 20 20 69 66 28 68 69 65 72 31 33 28    ..    if(hier13(
011C40:  6C 76 61 6C 29 29 20 72 76 61 6C 75 65 28 6C 76    lval)) rvalue(lv
011C50:  61 6C 29 3B 0D 0A 20 20 20 20 63 6F 6D 28 29 3B    al);..    com();
011C60:  0D 0A 20 20 20 20 6C 76 61 6C 5B 34 5D 20 3D 20    ..    lval[4] = 
011C70:  7E 6C 76 61 6C 5B 34 5D 3B 0D 0A 20 20 20 20 72    ~lval[4];..    r
011C80:  65 74 75 72 6E 20 28 6C 76 61 6C 5B 37 5D 3D 30    eturn (lval[7]=0
011C90:  29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73    );..    }..  els
011CA0:  65 20 69 66 20 28 6D 61 74 63 68 28 22 21 22 29    e if (match("!")
011CB0:  29 20 7B 09 09 2F 2A 20 21 20 2A 2F 0D 0A 20 20    ) {../* ! */..  
011CC0:  20 20 69 66 28 68 69 65 72 31 33 28 6C 76 61 6C      if(hier13(lval
011CD0:  29 29 20 72 76 61 6C 75 65 28 6C 76 61 6C 29 3B    )) rvalue(lval);
011CE0:  0D 0A 20 20 20 20 6C 6E 65 67 28 29 3B 0D 0A 20    ..    lneg();.. 
011CF0:  20 20 20 6C 76 61 6C 5B 34 5D 20 3D 20 21 6C 76       lval[4] = !lv
011D00:  61 6C 5B 34 5D 3B 0D 0A 20 20 20 20 72 65 74 75    al[4];..    retu
011D10:  72 6E 20 28 6C 76 61 6C 5B 37 5D 3D 30 29 3B 0D    rn (lval[7]=0);.
011D20:  0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20 69    .    }..  else i
011D30:  66 20 28 6D 61 74 63 68 28 22 2D 22 29 29 20 7B    f (match("-")) {
011D40:  09 09 2F 2A 20 75 6E 61 72 79 20 2D 20 2A 2F 0D    ../* unary - */.
011D50:  0A 20 20 20 20 69 66 28 68 69 65 72 31 33 28 6C    .    if(hier13(l
011D60:  76 61 6C 29 29 20 72 76 61 6C 75 65 28 6C 76 61    val)) rvalue(lva
011D70:  6C 29 3B 0D 0A 20 20 20 20 6E 65 67 28 29 3B 0D    l);..    neg();.
011D80:  0A 20 20 20 20 6C 76 61 6C 5B 34 5D 20 3D 20 2D    .    lval[4] = -
011D90:  6C 76 61 6C 5B 34 5D 3B 0D 0A 20 20 20 20 72 65    lval[4];..    re
011DA0:  74 75 72 6E 20 28 6C 76 61 6C 5B 37 5D 3D 30 29    turn (lval[7]=0)
011DB0:  3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65    ;..    }..  else
011DC0:  20 69 66 28 6D 61 74 63 68 28 22 2A 22 29 29 20     if(match("*")) 
011DD0:  7B 09 09 09 2F 2A 20 75 6E 61 72 79 20 2A 20 2A    {.../* unary * *
011DE0:  2F 0D 0A 20 20 20 20 69 66 28 68 69 65 72 31 33    /..    if(hier13
011DF0:  28 6C 76 61 6C 29 29 20 72 76 61 6C 75 65 28 6C    (lval)) rvalue(l
011E00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
011E10:  0F 00 01 00 02 09 52 E5 0F 00 41 02 00 00 00 02    ......R...A.....
011E20:  0F 00 46 02 00 00 00 02 0F 00 42 02 00 00 00 02    ..F.......B.....
011E30:  0F 00 47 02 00 00 00 02 0F 00 43 02 00 00 00 02    ..G.......C.....
011E40:  0F 00 48 02 00 00 00 02 0F 00 44 02 00 00 00 02    ..H.......D.....
011E50:  0F 00 49 02 00 00 00 02 0F 00 45 02 00 00 00 02    ..I.......E.....
011E60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011E70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011E80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011E90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011ED0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011EF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
011F00:  6C 5B 32 5D 3D 30 3B 0D 0A 20 20 20 20 20 20 20    l[2]=0;..       
011F10:  20 6C 76 61 6C 5B 31 5D 3D 70 74 72 5B 54 59 50     lval[1]=ptr[TYP
011F20:  45 5D 3B 0D 0A 20 20 20 20 20 20 20 20 6B 3D 31    E];..        k=1
011F30:  3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20    ;..        }..  
011F40:  20 20 20 20 65 6C 73 65 20 69 66 28 6D 61 74 63        else if(matc
011F50:  68 28 22 28 22 29 29 20 7B 09 09 2F 2A 20 66 75    h("(")) {../* fu
011F60:  6E 63 74 69 6F 6E 28 2E 2E 2E 29 20 2A 2F 0D 0A    nction(...) */..
011F70:  20 20 20 20 20 20 20 20 69 66 28 70 74 72 3D 3D            if(ptr==
011F80:  30 29 20 63 61 6C 6C 66 75 6E 63 74 69 6F 6E 28    0) callfunction(
011F90:  30 29 3B 0D 0A 20 20 20 20 20 20 20 20 65 6C 73    0);..        els
011FA0:  65 20 69 66 28 70 74 72 5B 49 44 45 4E 54 5D 21    e if(ptr[IDENT]!
011FB0:  3D 46 55 4E 43 54 49 4F 4E 29 20 7B 0D 0A 20 20    =FUNCTION) {..  
011FC0:  20 20 20 20 20 20 20 20 69 66 28 6B 20 26 26 20            if(k && 
011FD0:  21 6C 76 61 6C 5B 34 5D 29 20 72 76 61 6C 75 65    !lval[4]) rvalue
011FE0:  28 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 20 20 20    (lval);..       
011FF0:  20 20 20 63 61 6C 6C 66 75 6E 63 74 69 6F 6E 28       callfunction(
012000:  30 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 7D    0);..          }
012010:  0D 0A 20 20 20 20 20 20 20 20 65 6C 73 65 20 63    ..        else c
012020:  61 6C 6C 66 75 6E 63 74 69 6F 6E 28 70 74 72 29    allfunction(ptr)
012030:  3B 0D 0A 20 20 20 20 20 20 20 20 6B 3D 6C 76 61    ;..        k=lva
012040:  6C 5B 30 5D 3D 6C 76 61 6C 5B 33 5D 3D 6C 76 61    l[0]=lval[3]=lva
012050:  6C 5B 34 5D 3D 30 3B 0D 0A 20 20 20 20 20 20 20    l[4]=0;..       
012060:  20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 72     }..      else r
012070:  65 74 75 72 6E 20 6B 3B 0D 0A 20 20 20 20 20 20    eturn k;..      
012080:  7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 70    }..    }..  if(p
012090:  74 72 3D 3D 30 29 20 72 65 74 75 72 6E 20 6B 3B    tr==0) return k;
0120A0:  0D 0A 20 20 69 66 28 70 74 72 5B 49 44 45 4E 54    ..  if(ptr[IDENT
0120B0:  5D 3D 3D 46 55 4E 43 54 49 4F 4E 29 20 7B 0D 0A    ]==FUNCTION) {..
0120C0:  20 20 20 20 61 64 64 72 65 73 73 28 70 74 72 29        address(ptr)
0120D0:  3B 0D 0A 20 20 20 20 6C 76 61 6C 5B 30 5D 3D 30    ;..    lval[0]=0
0120E0:  3B 0D 0A 20 20 20 20 72 65 74 75 72 6E 20 30 3B    ;..    return 0;
0120F0:  0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72    ..    }..  retur
012100:  20 26 26 20 28 6F 70 65 72 21 3D 66 66 73 75 62     && (oper!=ffsub
012110:  29 29 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20    )) return 0;..  
012120:  69 66 28 76 61 6C 31 5B 32 5D 21 3D 43 49 4E 54    if(val1[2]!=CINT
012130:  29 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 69    ) return 0;..  i
012140:  66 28 76 61 6C 32 5B 32 5D 29 20 72 65 74 75 72    f(val2[2]) retur
012150:  6E 20 30 3B 0D 0A 20 20 72 65 74 75 72 6E 20 31    n 0;..  return 1
012160:  3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A    ;..  }..../*..**
012170:  20 64 65 74 65 72 6D 69 6E 65 20 74 79 70 65 20     determine type 
012180:  6F 66 20 62 69 6E 61 72 79 20 6F 70 65 72 61 74    of binary operat
012190:  69 6F 6E 0D 0A 2A 2F 0D 0A 72 65 73 75 6C 74 28    ion..*/..result(
0121A0:  6C 76 61 6C 2C 20 6C 76 61 6C 32 29 20 69 6E 74    lval, lval2) int
0121B0:  20 6C 76 61 6C 5B 5D 2C 20 6C 76 61 6C 32 5B 5D     lval[], lval2[]
0121C0:  3B 20 7B 0D 0A 20 20 69 66 28 28 6C 76 61 6C 5B    ; {..  if((lval[
0121D0:  32 5D 21 3D 30 29 26 28 6C 76 61 6C 32 5B 32 5D    2]!=0)&(lval2[2]
0121E0:  21 3D 30 29 29 20 7B 0D 0A 20 20 20 20 6C 76 61    !=0)) {..    lva
0121F0:  6C 5B 32 5D 3D 30 3B 0D 0A 20 20 20 20 7D 0D 0A    l[2]=0;..    }..
012200:  20 20 65 6C 73 65 20 69 66 28 6C 76 61 6C 32 5B      else if(lval2[
012210:  32 5D 29 20 7B 0D 0A 20 20 20 20 6C 76 61 6C 5B    2]) {..    lval[
012220:  30 5D 3D 6C 76 61 6C 32 5B 30 5D 3B 0D 0A 20 20    0]=lval2[0];..  
012230:  20 20 6C 76 61 6C 5B 31 5D 3D 6C 76 61 6C 32 5B      lval[1]=lval2[
012240:  31 5D 3B 0D 0A 20 20 20 20 6C 76 61 6C 5B 32 5D    1];..    lval[2]
012250:  3D 6C 76 61 6C 32 5B 32 5D 3B 0D 0A 20 20 20 20    =lval2[2];..    
012260:  7D 0D 0A 20 20 7D 0D 0A 0D 0A 73 74 65 70 28 6F    }..  }....step(o
012270:  70 65 72 2C 20 6C 76 61 6C 29 20 69 6E 74 20 28    per, lval) int (
012280:  2A 6F 70 65 72 29 28 29 2C 20 6C 76 61 6C 5B 5D    *oper)(), lval[]
012290:  3B 20 7B 0D 0A 20 20 69 66 28 6C 76 61 6C 5B 31    ; {..  if(lval[1
0122A0:  5D 29 20 7B 0D 0A 20 20 20 20 69 66 28 6C 76 61    ]) {..    if(lva
0122B0:  6C 5B 35 5D 29 20 7B 0D 0A 20 20 20 20 20 20 70    l[5]) {..      p
0122C0:  75 73 68 28 29 3B 0D 0A 20 20 20 20 20 20 72 76    ush();..      rv
0122D0:  61 6C 75 65 28 6C 76 61 6C 29 3B 0D 0A 20 20 20    alue(lval);..   
0122E0:  20 20 20 28 2A 6F 70 65 72 29 28 6C 76 61 6C 5B       (*oper)(lval[
0122F0:  32 5D 3E 3E 32 29 3B 0D 0A 20 20 20 20 20 20 70    2]>>2);..      p
012300:  6E 20 6B 3B 0D 0A 20 20 7D 0D 0A 0D 0A 70 72 69    n k;..  }....pri
012310:  6D 61 72 79 28 6C 76 61 6C 29 20 20 69 6E 74 20    mary(lval)  int 
012320:  2A 6C 76 61 6C 3B 20 7B 0D 0A 20 20 63 68 61 72    *lval; {..  char
012330:  20 2A 70 74 72 2C 20 73 6E 61 6D 65 5B 4E 41 4D     *ptr, sname[NAM
012340:  45 53 49 5A 45 5D 3B 0D 0A 20 20 69 6E 74 20 6B    ESIZE];..  int k
012350:  3B 0D 0A 20 20 69 66 28 6D 61 74 63 68 28 22 28    ;..  if(match("(
012360:  22 29 29 20 7B 09 09 09 2F 2A 20 28 65 78 70 72    ")) {.../* (expr
012370:  65 73 73 69 6F 6E 2C 2E 2E 2E 29 20 2A 2F 0D 0A    ession,...) */..
012380:  20 20 20 20 64 6F 20 6B 3D 68 69 65 72 31 28 6C        do k=hier1(l
012390:  76 61 6C 29 3B 20 77 68 69 6C 65 28 6D 61 74 63    val); while(matc
0123A0:  68 28 22 2C 22 29 29 3B 0D 0A 20 20 20 20 6E 65    h(","));..    ne
0123B0:  65 64 74 6F 6B 65 6E 28 22 29 22 29 3B 0D 0A 20    edtoken(")");.. 
0123C0:  20 20 20 72 65 74 75 72 6E 20 6B 3B 0D 0A 20 20       return k;..  
0123D0:  20 20 7D 0D 0A 20 20 70 75 74 69 6E 74 28 30 2C      }..  putint(0,
0123E0:  20 6C 76 61 6C 2C 20 38 3C 3C 4C 42 50 57 29 3B     lval, 8<<LBPW);
0123F0:  09 09 2F 2A 20 63 6C 65 61 72 20 6C 76 61 6C 20    ../* clear lval 
012400:  61 72 72 61 79 20 2A 2F 0D 0A 20 20 69 66 28 73    array */..  if(s
012410:  79 6D 6E 61 6D 65 28 73 6E 61 6D 65 2C 20 59 45    ymname(sname, YE
012420:  53 29 29 20 7B 0D 0A 20 20 20 20 69 66 28 70 74    S)) {..    if(pt
012430:  72 3D 66 69 6E 64 6C 6F 63 28 73 6E 61 6D 65 29    r=findloc(sname)
012440:  29 20 7B 0D 0A 23 69 66 64 65 66 20 53 54 47 4F    ) {..#ifdef STGO
012450:  54 4F 0D 0A 20 20 20 20 20 20 69 66 28 70 74 72    TO..      if(ptr
012460:  5B 49 44 45 4E 54 5D 3D 3D 4C 41 42 45 4C 29 20    [IDENT]==LABEL) 
012470:  7B 0D 0A 20 20 20 20 20 20 20 20 65 78 70 65 72    {..        exper
012480:  72 28 29 3B 0D 0A 20 20 20 20 20 20 20 20 72 65    r();..        re
012490:  74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 20 20 20    turn 0;..       
0124A0:  20 7D 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 20 20     }..#endif..    
0124B0:  20 20 67 65 74 6C 6F 63 28 70 74 72 29 3B 0D 0A      getloc(ptr);..
0124C0:  20 20 20 20 20 20 6C 76 61 6C 5B 30 5D 3D 70 74          lval[0]=pt
0124D0:  72 3B 0D 0A 20 20 20 20 20 20 6C 76 61 6C 5B 31    r;..      lval[1
0124E0:  5D 3D 70 74 72 5B 54 59 50 45 5D 3B 0D 0A 20 20    ]=ptr[TYPE];..  
0124F0:  20 20 20 20 69 66 28 70 74 72 5B 49 44 45 4E 54        if(ptr[IDENT
012500:  6F 70 28 29 3B 0D 0A 20 20 20 20 20 20 73 74 6F    op();..      sto
012510:  72 65 28 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 20    re(lval);..     
012520:  20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 20 20     return;..      
012530:  7D 0D 0A 20 20 20 20 65 6C 73 65 20 7B 0D 0A 20    }..    else {.. 
012540:  20 20 20 20 20 6D 6F 76 65 28 29 3B 0D 0A 20 20         move();..  
012550:  20 20 20 20 6C 76 61 6C 5B 35 5D 3D 31 3B 0D 0A        lval[5]=1;..
012560:  20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A          }..    }..
012570:  20 20 72 76 61 6C 75 65 28 6C 76 61 6C 29 3B 0D      rvalue(lval);.
012580:  0A 20 20 28 2A 6F 70 65 72 29 28 6C 76 61 6C 5B    .  (*oper)(lval[
012590:  32 5D 3E 3E 32 29 3B 0D 0A 20 20 73 74 6F 72 65    2]>>2);..  store
0125A0:  28 6C 76 61 6C 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A    (lval);..  }....
0125B0:  73 74 6F 72 65 28 6C 76 61 6C 29 20 20 69 6E 74    store(lval)  int
0125C0:  20 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 69 66     lval[]; {..  if
0125D0:  28 6C 76 61 6C 5B 31 5D 29 20 70 75 74 73 74 6B    (lval[1]) putstk
0125E0:  28 6C 76 61 6C 29 3B 0D 0A 20 20 65 6C 73 65 20    (lval);..  else 
0125F0:  20 20 20 20 20 20 20 70 75 74 6D 65 6D 28 6C 76           putmem(lv
012600:  61 6C 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 72 76 61    al);..  }....rva
012610:  6C 75 65 28 6C 76 61 6C 29 20 69 6E 74 20 6C 76    lue(lval) int lv
012620:  61 6C 5B 5D 3B 20 7B 0D 0A 20 20 69 66 20 28 28    al[]; {..  if ((
012630:  6C 76 61 6C 5B 30 5D 21 3D 30 29 26 28 6C 76 61    lval[0]!=0)&(lva
012640:  6C 5B 31 5D 3D 3D 30 29 29 20 67 65 74 6D 65 6D    l[1]==0)) getmem
012650:  28 6C 76 61 6C 29 3B 0D 0A 20 20 65 6C 73 65 20    (lval);..  else 
012660:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
012670:  20 20 20 20 20 20 20 20 69 6E 64 69 72 65 63 74            indirect
012680:  28 6C 76 61 6C 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A    (lval);..  }....
012690:  74 65 73 74 28 6C 61 62 65 6C 2C 20 70 61 72 65    test(label, pare
0126A0:  6E 73 29 20 20 69 6E 74 20 6C 61 62 65 6C 2C 20    ns)  int label, 
0126B0:  70 61 72 65 6E 73 3B 20 20 7B 0D 0A 20 20 69 6E    parens;  {..  in
0126C0:  74 20 6C 76 61 6C 5B 38 5D 3B 0D 0A 20 20 63 68    t lval[8];..  ch
0126D0:  61 72 20 2A 62 65 66 6F 72 65 2C 20 2A 73 74 61    ar *before, *sta
0126E0:  72 74 3B 0D 0A 20 20 69 66 28 70 61 72 65 6E 73    rt;..  if(parens
0126F0:  29 20 6E 65 65 64 74 6F 6B 65 6E 28 22 28 22 29    ) needtoken("(")
012700:  5D 3D 3D 50 4F 49 4E 54 45 52 29 20 7B 0D 0A 20    ]==POINTER) {.. 
012710:  20 20 20 20 20 20 20 6C 76 61 6C 5B 31 5D 3D 43           lval[1]=C
012720:  49 4E 54 3B 0D 0A 20 20 20 20 20 20 20 20 6C 76    INT;..        lv
012730:  61 6C 5B 32 5D 3D 70 74 72 5B 54 59 50 45 5D 3B    al[2]=ptr[TYPE];
012740:  0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20    ..        }..   
012750:  20 20 20 69 66 28 70 74 72 5B 49 44 45 4E 54 5D       if(ptr[IDENT]
012760:  3D 3D 41 52 52 41 59 29 20 7B 0D 0A 20 20 20 20    ==ARRAY) {..    
012770:  20 20 20 20 6C 76 61 6C 5B 32 5D 3D 70 74 72 5B        lval[2]=ptr[
012780:  54 59 50 45 5D 3B 0D 0A 20 20 20 20 20 20 20 20    TYPE];..        
012790:  72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 20 20 20    return 0;..     
0127A0:  20 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65       }..      else
0127B0:  20 72 65 74 75 72 6E 20 31 3B 0D 0A 20 20 20 20     return 1;..    
0127C0:  20 20 7D 0D 0A 20 20 20 20 69 66 28 70 74 72 3D      }..    if(ptr=
0127D0:  66 69 6E 64 67 6C 62 28 73 6E 61 6D 65 29 29 0D    findglb(sname)).
0127E0:  0A 20 20 20 20 20 20 69 66 28 70 74 72 5B 49 44    .      if(ptr[ID
0127F0:  45 4E 54 5D 21 3D 46 55 4E 43 54 49 4F 4E 29 20    ENT]!=FUNCTION) 
012800:  7B 0D 0A 20 20 20 20 20 20 20 20 6C 76 61 6C 5B    {..        lval[
012810:  30 5D 3D 70 74 72 3B 0D 0A 20 20 20 20 20 20 20    0]=ptr;..       
012820:  20 6C 76 61 6C 5B 31 5D 3D 30 3B 0D 0A 20 20 20     lval[1]=0;..   
012830:  20 20 20 20 20 69 66 28 70 74 72 5B 49 44 45 4E         if(ptr[IDEN
012840:  54 5D 21 3D 41 52 52 41 59 29 20 7B 0D 0A 20 20    T]!=ARRAY) {..  
012850:  20 20 20 20 20 20 20 20 69 66 28 70 74 72 5B 49            if(ptr[I
012860:  44 45 4E 54 5D 3D 3D 50 4F 49 4E 54 45 52 29 20    DENT]==POINTER) 
012870:  6C 76 61 6C 5B 32 5D 3D 70 74 72 5B 54 59 50 45    lval[2]=ptr[TYPE
012880:  5D 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 72 65    ];..          re
012890:  74 75 72 6E 20 31 3B 0D 0A 20 20 20 20 20 20 20    turn 1;..       
0128A0:  20 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 61 64       }..        ad
0128B0:  64 72 65 73 73 28 70 74 72 29 3B 0D 0A 20 20 20    dress(ptr);..   
0128C0:  20 20 20 20 20 6C 76 61 6C 5B 31 5D 3D 6C 76 61         lval[1]=lva
0128D0:  6C 5B 32 5D 3D 70 74 72 5B 54 59 50 45 5D 3B 0D    l[2]=ptr[TYPE];.
0128E0:  0A 20 20 20 20 20 20 20 20 72 65 74 75 72 6E 20    .        return 
0128F0:  30 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20    0;..        }.. 
012900:  3B 0D 0A 20 20 77 68 69 6C 65 28 31 29 20 7B 0D    ;..  while(1) {.
012910:  0A 20 20 20 20 73 65 74 73 74 61 67 65 28 26 62    .    setstage(&b
012920:  65 66 6F 72 65 2C 20 26 73 74 61 72 74 29 3B 0D    efore, &start);.
012930:  0A 20 20 20 20 69 66 28 68 69 65 72 31 28 6C 76    .    if(hier1(lv
012940:  61 6C 29 29 20 72 76 61 6C 75 65 28 6C 76 61 6C    al)) rvalue(lval
012950:  29 3B 0D 0A 20 20 20 20 69 66 28 6D 61 74 63 68    );..    if(match
012960:  28 22 2C 22 29 29 20 63 6C 65 61 72 73 74 61 67    (",")) clearstag
012970:  65 28 62 65 66 6F 72 65 2C 20 73 74 61 72 74 29    e(before, start)
012980:  3B 0D 0A 20 20 20 20 65 6C 73 65 20 62 72 65 61    ;..    else brea
012990:  6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28    k;..    }..  if(
0129A0:  70 61 72 65 6E 73 29 20 6E 65 65 64 74 6F 6B 65    parens) needtoke
0129B0:  6E 28 22 29 22 29 3B 0D 0A 20 20 69 66 28 6C 76    n(")");..  if(lv
0129C0:  61 6C 5B 33 5D 29 20 7B 09 09 09 2F 2A 20 63 6F    al[3]) {.../* co
0129D0:  6E 73 74 61 6E 74 20 65 78 70 72 65 73 73 69 6F    nstant expressio
0129E0:  6E 20 2A 2F 0D 0A 20 20 20 20 63 6C 65 61 72 73    n */..    clears
0129F0:  74 61 67 65 28 62 65 66 6F 72 65 2C 20 30 29 3B    tage(before, 0);
012A00:  0D 0A 20 20 20 20 69 66 28 6C 76 61 6C 5B 34 5D    ..    if(lval[4]
012A10:  29 20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 6A    ) return;..    j
012A20:  75 6D 70 28 6C 61 62 65 6C 29 3B 0D 0A 20 20 20    ump(label);..   
012A30:  20 72 65 74 75 72 6E 3B 0D 0A 20 20 20 20 7D 0D     return;..    }.
012A40:  0A 20 20 69 66 28 6C 76 61 6C 5B 37 5D 29 20 7B    .  if(lval[7]) {
012A50:  09 09 09 2F 2A 20 73 74 61 67 65 20 61 64 64 72    .../* stage addr
012A60:  65 73 73 20 6F 66 20 22 6F 70 65 72 20 30 22 20    ess of "oper 0" 
012A70:  63 6F 64 65 20 2A 2F 0D 0A 20 20 20 20 6F 70 65    code */..    ope
012A80:  72 3D 6C 76 61 6C 5B 36 5D 3B 09 09 2F 2A 20 6F    r=lval[6];../* o
012A90:  70 65 72 61 74 6F 72 20 66 75 6E 63 74 69 6F 6E    perator function
012AA0:  20 61 64 64 72 65 73 73 20 2A 2F 0D 0A 20 20 20     address */..   
012AB0:  20 20 20 20 20 20 69 66 28 28 6F 70 65 72 3D 3D          if((oper==
012AC0:  66 66 65 71 29 7C 0D 0A 20 20 20 20 20 20 20 20    ffeq)|..        
012AD0:  20 20 20 20 28 6F 70 65 72 3D 3D 75 6C 65 29 29        (oper==ule))
012AE0:  20 7A 65 72 6F 6A 75 6D 70 28 65 71 30 2C 20 6C     zerojump(eq0, l
012AF0:  61 62 65 6C 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20    abel, lval);..  
012B00:  20 20 20 70 74 72 3D 61 64 64 73 79 6D 28 73 6E       ptr=addsym(sn
012B10:  61 6D 65 2C 46 55 4E 43 54 49 4F 4E 2C 43 49 4E    ame,FUNCTION,CIN
012B20:  54 2C 30 2C 26 67 6C 62 70 74 72 2C 41 55 54 4F    T,0,&glbptr,AUTO
012B30:  45 58 54 29 3B 0D 0A 20 20 20 20 6C 76 61 6C 5B    EXT);..    lval[
012B40:  30 5D 3D 70 74 72 3B 0D 0A 20 20 20 20 6C 76 61    0]=ptr;..    lva
012B50:  6C 5B 31 5D 3D 30 3B 0D 0A 20 20 20 20 72 65 74    l[1]=0;..    ret
012B60:  75 72 6E 20 30 3B 0D 0A 20 20 20 20 7D 0D 0A 20    urn 0;..    }.. 
012B70:  20 69 66 28 63 6F 6E 73 74 61 6E 74 28 6C 76 61     if(constant(lva
012B80:  6C 29 3D 3D 30 29 20 65 78 70 65 72 72 28 29 3B    l)==0) experr();
012B90:  0D 0A 20 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20    ..  return 0;.. 
012BA0:  20 7D 0D 0A 0D 0A 65 78 70 65 72 72 28 29 20 7B     }....experr() {
012BB0:  0D 0A 20 20 65 72 72 6F 72 28 22 69 6E 76 61 6C    ..  error("inval
012BC0:  69 64 20 65 78 70 72 65 73 73 69 6F 6E 22 29 3B    id expression");
012BD0:  0D 0A 20 20 63 6F 6E 73 74 28 30 29 3B 0D 0A 20    ..  const(0);.. 
012BE0:  20 6A 75 6E 6B 28 29 3B 0D 0A 20 20 7D 0D 0A 20     junk();..  }.. 
012BF0:  0D 0A 63 61 6C 6C 66 75 6E 63 74 69 6F 6E 28 70    ..callfunction(p
012C00:  74 72 29 20 20 63 68 61 72 20 2A 70 74 72 3B 20    tr)  char *ptr; 
012C10:  7B 09 09 2F 2A 20 73 79 6D 62 6F 6C 20 74 61 62    {../* symbol tab
012C20:  6C 65 20 65 6E 74 72 79 20 6F 72 20 30 20 2A 2F    le entry or 0 */
012C30:  0D 0A 20 20 69 6E 74 20 6E 61 72 67 73 2C 20 63    ..  int nargs, c
012C40:  6F 6E 73 74 2C 20 76 61 6C 3B 0D 0A 20 20 6E 61    onst, val;..  na
012C50:  72 67 73 3D 30 3B 0D 0A 20 20 62 6C 61 6E 6B 73    rgs=0;..  blanks
012C60:  28 29 3B 09 09 09 09 2F 2A 20 61 6C 72 65 61 64    ();..../* alread
012C70:  79 20 73 61 77 20 6F 70 65 6E 20 70 61 72 65 6E    y saw open paren
012C80:  20 2A 2F 0D 0A 20 20 77 68 69 6C 65 28 73 74 72     */..  while(str
012C90:  65 71 28 6C 70 74 72 2C 22 29 22 29 3D 3D 30 29    eq(lptr,")")==0)
012CA0:  20 7B 0D 0A 20 20 20 20 69 66 28 65 6E 64 73 74     {..    if(endst
012CB0:  28 29 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20    ()) break;..    
012CC0:  69 66 28 70 74 72 29 20 7B 0D 0A 20 20 20 20 20    if(ptr) {..     
012CD0:  20 65 78 70 72 65 73 73 69 6F 6E 28 26 63 6F 6E     expression(&con
012CE0:  73 74 2C 20 26 76 61 6C 29 3B 0D 0A 20 20 20 20    st, &val);..    
012CF0:  20 20 70 75 73 68 28 29 3B 0D 0A 20 20 20 20 20      push();..     
012D00:  20 20 65 6C 73 65 20 69 66 28 28 6F 70 65 72 3D      else if((oper=
012D10:  3D 66 66 6E 65 29 7C 0D 0A 20 20 20 20 20 20 20    =ffne)|..       
012D20:  20 20 20 20 20 28 6F 70 65 72 3D 3D 75 67 74 29         (oper==ugt)
012D30:  29 20 7A 65 72 6F 6A 75 6D 70 28 6E 65 30 2C 20    ) zerojump(ne0, 
012D40:  6C 61 62 65 6C 2C 20 6C 76 61 6C 29 3B 0D 0A 20    label, lval);.. 
012D50:  20 20 20 65 6C 73 65 20 69 66 20 28 6F 70 65 72       else if (oper
012D60:  3D 3D 66 66 67 74 29 20 7A 65 72 6F 6A 75 6D 70    ==ffgt) zerojump
012D70:  28 67 74 30 2C 20 6C 61 62 65 6C 2C 20 6C 76 61    (gt0, label, lva
012D80:  6C 29 3B 0D 0A 20 20 20 20 65 6C 73 65 20 69 66    l);..    else if
012D90:  20 28 6F 70 65 72 3D 3D 66 66 67 65 29 20 7A 65     (oper==ffge) ze
012DA0:  72 6F 6A 75 6D 70 28 67 65 30 2C 20 6C 61 62 65    rojump(ge0, labe
012DB0:  6C 2C 20 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 65    l, lval);..    e
012DC0:  6C 73 65 20 69 66 20 28 6F 70 65 72 3D 3D 75 67    lse if (oper==ug
012DD0:  65 29 20 20 63 6C 65 61 72 73 74 61 67 65 28 6C    e)  clearstage(l
012DE0:  76 61 6C 5B 37 5D 2C 30 29 3B 0D 0A 20 20 20 20    val[7],0);..    
012DF0:  65 6C 73 65 20 69 66 20 28 6F 70 65 72 3D 3D 66    else if (oper==f
012E00:  66 6C 74 29 20 7A 65 72 6F 6A 75 6D 70 28 6C 74    flt) zerojump(lt
012E10:  30 2C 20 6C 61 62 65 6C 2C 20 6C 76 61 6C 29 3B    0, label, lval);
012E20:  0D 0A 20 20 20 20 65 6C 73 65 20 69 66 20 28 6F    ..    else if (o
012E30:  70 65 72 3D 3D 75 6C 74 29 20 20 7A 65 72 6F 6A    per==ult)  zeroj
012E40:  75 6D 70 28 75 6C 74 30 2C 20 6C 61 62 65 6C 2C    ump(ult0, label,
012E50:  20 6C 76 61 6C 29 3B 0D 0A 20 20 20 20 65 6C 73     lval);..    els
012E60:  65 20 69 66 20 28 6F 70 65 72 3D 3D 66 66 6C 65    e if (oper==ffle
012E70:  29 20 7A 65 72 6F 6A 75 6D 70 28 6C 65 30 2C 20    ) zerojump(le0, 
012E80:  6C 61 62 65 6C 2C 20 6C 76 61 6C 29 3B 0D 0A 20    label, lval);.. 
012E90:  20 20 20 65 6C 73 65 20 20 20 20 20 20 20 20 20       else         
012EA0:  20 20 20 20 20 20 20 20 74 65 73 74 6A 75 6D 70            testjump
012EB0:  28 6C 61 62 65 6C 29 3B 0D 0A 20 20 20 20 7D 0D    (label);..    }.
012EC0:  0A 20 20 65 6C 73 65 20 74 65 73 74 6A 75 6D 70    .  else testjump
012ED0:  28 6C 61 62 65 6C 29 3B 0D 0A 20 20 63 6C 65 61    (label);..  clea
012EE0:  72 73 74 61 67 65 28 62 65 66 6F 72 65 2C 20 73    rstage(before, s
012EF0:  74 61 72 74 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 63    tart);..  }....c
012F00:  20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 7B 0D 0A     }..    else {..
012F10:  20 20 20 20 20 20 70 75 73 68 28 29 3B 0D 0A 20          push();.. 
012F20:  20 20 20 20 20 65 78 70 72 65 73 73 69 6F 6E 28         expression(
012F30:  26 63 6F 6E 73 74 2C 20 26 76 61 6C 29 3B 0D 0A    &const, &val);..
012F40:  20 20 20 20 20 20 73 77 61 70 73 74 6B 28 29 3B          swapstk();
012F50:  0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 6E    ..      }..    n
012F60:  61 72 67 73 3D 6E 61 72 67 73 2B 42 50 57 3B 09    args=nargs+BPW;.
012F70:  09 09 2F 2A 20 63 6F 75 6E 74 20 61 72 67 73 2A    ../* count args*
012F80:  42 50 57 20 2A 2F 0D 0A 20 20 20 20 69 66 20 28    BPW */..    if (
012F90:  6D 61 74 63 68 28 22 2C 22 29 3D 3D 30 29 20 62    match(",")==0) b
012FA0:  72 65 61 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20    reak;..    }..  
012FB0:  6E 65 65 64 74 6F 6B 65 6E 28 22 29 22 29 3B 0D    needtoken(")");.
012FC0:  0A 20 20 69 66 28 73 74 72 65 71 28 70 74 72 2B    .  if(streq(ptr+
012FD0:  4E 41 4D 45 2C 20 22 43 43 41 52 47 43 22 29 3D    NAME, "CCARGC")=
012FE0:  3D 30 29 20 6C 6F 61 64 61 72 67 63 28 6E 61 72    =0) loadargc(nar
012FF0:  67 73 3E 3E 4C 42 50 57 29 3B 0D 0A 20 20 69 66    gs>>LBPW);..  if
013000:  28 70 74 72 29 20 66 66 63 61 6C 6C 28 70 74 72    (ptr) ffcall(ptr
013010:  2B 4E 41 4D 45 29 3B 0D 0A 20 20 65 6C 73 65 20    +NAME);..  else 
013020:  63 61 6C 6C 73 74 6B 28 29 3B 0D 0A 20 20 63 73    callstk();..  cs
013030:  70 3D 6D 6F 64 73 74 6B 28 63 73 70 2B 6E 61 72    p=modstk(csp+nar
013040:  67 73 2C 20 59 45 53 29 3B 0D 0A 20 20 7D 0D 0A    gs, YES);..  }..
013050:  0D 0A 3E 3E 3E 20 43 43 33 33 2E 43 20 34 31 35    ..>>> CC33.C 415
013060:  32 0D 0A 2F 2A 0D 0A 2A 2A 20 74 72 75 65 20 69    2../*..** true i
013070:  66 20 76 61 6C 31 20 2D 3E 20 69 6E 74 20 70 6F    f val1 -> int po
013080:  69 6E 74 65 72 20 6F 72 20 69 6E 74 20 61 72 72    inter or int arr
013090:  61 79 20 61 6E 64 20 76 61 6C 32 20 6E 6F 74 20    ay and val2 not 
0130A0:  70 74 72 20 6F 72 20 61 72 72 61 79 0D 0A 2A 2F    ptr or array..*/
0130B0:  0D 0A 64 62 6C 74 65 73 74 28 6F 70 65 72 2C 20    ..dbltest(oper, 
0130C0:  76 61 6C 31 2C 20 76 61 6C 32 29 20 69 6E 74 20    val1, val2) int 
0130D0:  28 2A 6F 70 65 72 29 28 29 2C 20 76 61 6C 31 5B    (*oper)(), val1[
0130E0:  5D 2C 20 76 61 6C 32 5B 5D 3B 20 7B 0D 0A 20 20    ], val2[]; {..  
0130F0:  69 66 28 28 6F 70 65 72 21 3D 66 66 61 64 64 29    if((oper!=ffadd)
013100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
013110:  10 00 01 00 02 09 52 E5 10 00 41 02 00 00 00 02    ......R...A.....
013120:  10 00 46 02 00 00 00 02 10 00 42 02 00 00 00 02    ..F.......B.....
013130:  10 00 47 02 00 00 00 02 10 00 43 02 00 00 00 02    ..G.......C.....
013140:  10 00 48 02 00 00 00 02 10 00 44 02 00 00 00 02    ..H.......D.....
013150:  10 00 49 02 00 00 00 02 10 00 45 02 00 00 00 02    ..I.......E.....
013160:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013170:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013180:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013190:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0131F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013200:  6F 6E 73 74 65 78 70 72 28 76 61 6C 29 20 69 6E    onstexpr(val) in
013210:  74 20 2A 76 61 6C 3B 20 7B 0D 0A 20 20 69 6E 74    t *val; {..  int
013220:  20 63 6F 6E 73 74 3B 0D 0A 20 20 63 68 61 72 20     const;..  char 
013230:  2A 62 65 66 6F 72 65 2C 20 2A 73 74 61 72 74 3B    *before, *start;
013240:  0D 0A 20 20 73 65 74 73 74 61 67 65 28 26 62 65    ..  setstage(&be
013250:  66 6F 72 65 2C 20 26 73 74 61 72 74 29 3B 0D 0A    fore, &start);..
013260:  20 20 65 78 70 72 65 73 73 69 6F 6E 28 26 63 6F      expression(&co
013270:  6E 73 74 2C 20 76 61 6C 29 3B 0D 0A 20 20 63 6C    nst, val);..  cl
013280:  65 61 72 73 74 61 67 65 28 62 65 66 6F 72 65 2C    earstage(before,
013290:  20 30 29 3B 09 2F 2A 20 73 63 72 61 74 63 68 20     0);./* scratch 
0132A0:  67 65 6E 65 72 61 74 65 64 20 63 6F 64 65 20 2A    generated code *
0132B0:  2F 0D 0A 20 20 69 66 28 63 6F 6E 73 74 3D 3D 30    /..  if(const==0
0132C0:  29 20 65 72 72 6F 72 28 22 6D 75 73 74 20 62 65    ) error("must be
0132D0:  20 63 6F 6E 73 74 61 6E 74 20 65 78 70 72 65 73     constant expres
0132E0:  73 69 6F 6E 22 29 3B 0D 0A 20 20 72 65 74 75 72    sion");..  retur
0132F0:  6E 20 63 6F 6E 73 74 3B 0D 0A 20 20 7D 0D 0A 0D    n const;..  }...
013300:  0A 63 6F 6E 73 74 28 76 61 6C 29 20 69 6E 74 20    .const(val) int 
013310:  76 61 6C 3B 20 7B 0D 0A 20 20 69 6D 6D 65 64 28    val; {..  immed(
013320:  29 3B 0D 0A 20 20 6F 75 74 64 65 63 28 76 61 6C    );..  outdec(val
013330:  29 3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D    );..  nl();..  }
013340:  0D 0A 0D 0A 63 6F 6E 73 74 32 28 76 61 6C 29 20    ....const2(val) 
013350:  69 6E 74 20 76 61 6C 3B 20 7B 0D 0A 20 20 69 6D    int val; {..  im
013360:  6D 65 64 32 28 29 3B 0D 0A 20 20 6F 75 74 64 65    med2();..  outde
013370:  63 28 76 61 6C 29 3B 0D 0A 20 20 6E 6C 28 29 3B    c(val);..  nl();
013380:  0D 0A 20 20 7D 0D 0A 0D 0A 63 6F 6E 73 74 61 6E    ..  }....constan
013390:  74 28 6C 76 61 6C 29 20 20 69 6E 74 20 6C 76 61    t(lval)  int lva
0133A0:  6C 5B 5D 3B 20 7B 0D 0A 20 20 6C 76 61 6C 3D 6C    l[]; {..  lval=l
0133B0:  76 61 6C 2B 33 3B 0D 0A 20 20 2A 6C 76 61 6C 3D    val+3;..  *lval=
0133C0:  31 3B 09 09 09 2F 2A 20 61 73 73 75 6D 65 20 69    1;.../* assume i
0133D0:  74 20 77 69 6C 6C 20 62 65 20 61 20 63 6F 6E 73    t will be a cons
0133E0:  74 61 6E 74 20 2A 2F 0D 0A 20 20 69 66 20 28 6E    tant */..  if (n
0133F0:  75 6D 62 65 72 28 2B 2B 6C 76 61 6C 29 29 20 69    umber(++lval)) i
013400:  79 20 61 73 73 65 6D 62 6C 65 72 20 73 74 75 66    y assembler stuf
013410:  66 20 6E 65 65 64 65 64 20 61 74 20 74 68 65 20    f needed at the 
013420:  65 6E 64 0D 0A 2A 2F 0D 0A 74 72 61 69 6C 65 72    end..*/..trailer
013430:  28 29 20 20 7B 20 20 0D 0A 23 69 66 6E 64 65 66    ()  {  ..#ifndef
013440:  20 4C 49 4E 4B 0D 0A 20 20 69 66 28 28 62 65 67     LINK..  if((beg
013450:  6C 61 62 20 3D 3D 20 31 29 7C 28 62 65 67 6C 61    lab == 1)|(begla
013460:  62 20 3E 20 39 30 30 30 29 29 20 7B 0D 0A 20 20    b > 9000)) {..  
013470:  20 20 2F 2A 20 69 6D 70 6C 65 6D 65 6E 74 61 74      /* implementat
013480:  69 6F 6E 20 64 65 70 65 6E 64 65 6E 74 20 74 72    ion dependent tr
013490:  61 69 6C 65 72 20 63 6F 64 65 20 67 6F 65 73 20    ailer code goes 
0134A0:  68 65 72 65 20 2A 2F 0D 0A 20 20 20 20 7D 0D 0A    here */..    }..
0134B0:  23 65 6C 73 65 0D 0A 20 20 63 68 61 72 20 2A 70    #else..  char *p
0134C0:  74 72 3B 0D 0A 20 20 63 70 74 72 3D 53 54 41 52    tr;..  cptr=STAR
0134D0:  54 47 4C 42 3B 0D 0A 20 20 77 68 69 6C 65 28 63    TGLB;..  while(c
0134E0:  70 74 72 3C 45 4E 44 47 4C 42 29 20 7B 0D 0A 20    ptr<ENDGLB) {.. 
0134F0:  20 20 20 69 66 28 63 70 74 72 5B 49 44 45 4E 54       if(cptr[IDENT
013500:  5D 3D 3D 46 55 4E 43 54 49 4F 4E 20 26 26 20 63    ]==FUNCTION && c
013510:  70 74 72 5B 43 4C 41 53 53 5D 3D 3D 41 55 54 4F    ptr[CLASS]==AUTO
013520:  45 58 54 29 0D 0A 20 20 20 20 20 20 65 78 74 65    EXT)..      exte
013530:  72 6E 61 6C 28 63 70 74 72 2B 4E 41 4D 45 29 3B    rnal(cptr+NAME);
013540:  0D 0A 20 20 20 20 63 70 74 72 2B 3D 53 59 4D 4D    ..    cptr+=SYMM
013550:  41 58 3B 0D 0A 20 20 20 20 7D 0D 0A 23 69 66 64    AX;..    }..#ifd
013560:  65 66 20 55 50 50 45 52 0D 0A 20 20 69 66 28 28    ef UPPER..  if((
013570:  70 74 72 3D 66 69 6E 64 67 6C 62 28 22 4D 41 49    ptr=findglb("MAI
013580:  4E 22 29 29 20 26 26 20 28 70 74 72 5B 4F 46 46    N")) && (ptr[OFF
013590:  53 45 54 5D 3D 3D 46 55 4E 43 54 49 4F 4E 29 29    SET]==FUNCTION))
0135A0:  0D 0A 23 65 6C 73 65 0D 0A 20 20 69 66 28 28 70    ..#else..  if((p
0135B0:  74 72 3D 66 69 6E 64 67 6C 62 28 22 6D 61 69 6E    tr=findglb("main
0135C0:  22 29 29 20 26 26 20 28 70 74 72 5B 4F 46 46 53    ")) && (ptr[OFFS
0135D0:  45 54 5D 3D 3D 46 55 4E 43 54 49 4F 4E 29 29 0D    ET]==FUNCTION)).
0135E0:  0A 23 65 6E 64 69 66 0D 0A 20 20 20 20 65 78 74    .#endif..    ext
0135F0:  65 72 6E 61 6C 28 22 55 6C 69 6E 6B 22 29 3B 09    ernal("Ulink");.
013600:  6D 6D 65 64 28 29 3B 0D 0A 20 20 65 6C 73 65 20    mmed();..  else 
013610:  69 66 20 28 70 73 74 72 28 6C 76 61 6C 29 29 20    if (pstr(lval)) 
013620:  69 6D 6D 65 64 28 29 3B 0D 0A 20 20 65 6C 73 65    immed();..  else
013630:  20 69 66 20 28 71 73 74 72 28 6C 76 61 6C 29 29     if (qstr(lval))
013640:  20 7B 0D 0A 20 20 20 20 2A 28 6C 76 61 6C 2D 31     {..    *(lval-1
013650:  29 3D 30 3B 09 09 2F 2A 20 6E 6F 70 65 2C 20 69    )=0;../* nope, i
013660:  74 27 73 20 61 20 73 74 72 69 6E 67 20 61 64 64    t's a string add
013670:  72 65 73 73 20 2A 2F 0D 0A 20 20 20 20 69 6D 6D    ress */..    imm
013680:  65 64 28 29 3B 0D 0A 20 20 20 20 70 72 69 6E 74    ed();..    print
013690:  6C 61 62 65 6C 28 6C 69 74 6C 61 62 29 3B 0D 0A    label(litlab);..
0136A0:  20 20 20 20 6F 75 74 62 79 74 65 28 27 2B 27 29        outbyte('+')
0136B0:  3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65    ;..    }..  else
0136C0:  20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20 6F 75     return 0;..  ou
0136D0:  74 64 65 63 28 2A 6C 76 61 6C 29 3B 0D 0A 20 20    tdec(*lval);..  
0136E0:  6E 6C 28 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20    nl();..  return 
0136F0:  31 3B 0D 0A 20 20 7D 0D 0A 0D 0A 6E 75 6D 62 65    1;..  }....numbe
013700:  72 28 76 61 6C 29 20 20 69 6E 74 20 76 61 6C 5B    r(val)  int val[
013710:  5D 3B 20 7B 0D 0A 20 20 69 6E 74 20 6B 2C 20 6D    ]; {..  int k, m
013720:  69 6E 75 73 3B 0D 0A 20 20 6B 3D 6D 69 6E 75 73    inus;..  k=minus
013730:  3D 30 3B 0D 0A 20 20 77 68 69 6C 65 28 31 29 20    =0;..  while(1) 
013740:  7B 0D 0A 20 20 20 20 69 66 28 6D 61 74 63 68 28    {..    if(match(
013750:  22 2B 22 29 29 20 3B 0D 0A 20 20 20 20 65 6C 73    "+")) ;..    els
013760:  65 20 69 66 28 6D 61 74 63 68 28 22 2D 22 29 29    e if(match("-"))
013770:  20 6D 69 6E 75 73 3D 31 3B 0D 0A 20 20 20 20 65     minus=1;..    e
013780:  6C 73 65 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20    lse break;..    
013790:  7D 0D 0A 20 20 69 66 28 69 73 64 69 67 69 74 28    }..  if(isdigit(
0137A0:  63 68 29 3D 3D 30 29 72 65 74 75 72 6E 20 30 3B    ch)==0)return 0;
0137B0:  0D 0A 20 20 77 68 69 6C 65 20 28 69 73 64 69 67    ..  while (isdig
0137C0:  69 74 28 63 68 29 29 20 6B 3D 6B 2A 31 30 2B 28    it(ch)) k=k*10+(
0137D0:  69 6E 62 79 74 65 28 29 2D 27 30 27 29 3B 0D 0A    inbyte()-'0');..
0137E0:  20 20 69 66 20 28 6D 69 6E 75 73 29 20 6B 3D 28      if (minus) k=(
0137F0:  2D 6B 29 3B 0D 0A 20 20 76 61 6C 5B 30 5D 3D 6B    -k);..  val[0]=k
013800:  2F 2A 20 6C 69 6E 6B 20 74 6F 20 6C 69 62 72 61    /* link to libra
013810:  72 79 20 66 75 6E 63 74 69 6F 6E 73 20 2A 2F 0D    ry functions */.
013820:  0A 23 65 6E 64 69 66 0D 0A 20 20 6F 6C 28 22 45    .#endif..  ol("E
013830:  4E 44 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A    ND");..  }..../*
013840:  0D 0A 2A 2A 20 6C 6F 61 64 20 23 20 61 72 67 73    ..** load # args
013850:  20 62 65 66 6F 72 65 20 66 75 6E 63 74 69 6F 6E     before function
013860:  20 63 61 6C 6C 0D 0A 2A 2F 0D 0A 6C 6F 61 64 61     call..*/..loada
013870:  72 67 63 28 76 61 6C 29 20 69 6E 74 20 76 61 6C    rgc(val) int val
013880:  3B 20 7B 0D 0A 20 20 69 66 28 73 65 61 72 63 68    ; {..  if(search
013890:  28 22 4E 4F 43 43 41 52 47 43 22 2C 20 6D 61 63    ("NOCCARGC", mac
0138A0:  6E 2C 20 4E 41 4D 45 53 49 5A 45 2B 32 2C 20 4D    n, NAMESIZE+2, M
0138B0:  41 43 4E 45 4E 44 2C 20 4D 41 43 4E 42 52 2C 20    ACNEND, MACNBR, 
0138C0:  30 29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 69 66    0)==0) {..    if
0138D0:  28 76 61 6C 29 20 7B 0D 0A 20 20 20 20 20 20 6F    (val) {..      o
0138E0:  74 28 22 4D 56 49 20 41 2C 22 29 3B 0D 0A 20 20    t("MVI A,");..  
0138F0:  20 20 20 20 6F 75 74 64 65 63 28 76 61 6C 29 3B        outdec(val);
013900:  0D 0A 20 20 20 20 20 20 6E 6C 28 29 3B 0D 0A 20    ..      nl();.. 
013910:  20 20 20 20 20 7D 0D 0A 20 20 20 20 65 6C 73 65         }..    else
013920:  20 6F 6C 28 22 58 52 41 20 41 22 29 3B 0D 0A 20     ol("XRA A");.. 
013930:  20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D       }..  }..../*.
013940:  0A 2A 2A 20 64 65 63 6C 61 72 65 20 65 6E 74 72    .** declare entr
013950:  79 20 70 6F 69 6E 74 0D 0A 2A 2F 0D 0A 65 6E 74    y point..*/..ent
013960:  72 79 28 29 20 7B 0D 0A 20 20 6F 75 74 73 74 72    ry() {..  outstr
013970:  28 73 73 6E 61 6D 65 29 3B 0D 0A 20 20 63 6F 6C    (ssname);..  col
013980:  28 29 3B 0D 0A 23 69 66 64 65 66 20 4C 49 4E 4B    ();..#ifdef LINK
013990:  0D 0A 20 20 63 6F 6C 28 29 3B 0D 0A 23 65 6E 64    ..  col();..#end
0139A0:  69 66 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D    if..  nl();..  }
0139B0:  0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 64 65 63 6C 61    ..../*..** decla
0139C0:  72 65 20 65 78 74 65 72 6E 61 6C 20 72 65 66 65    re external refe
0139D0:  72 65 6E 63 65 0D 0A 2A 2F 0D 0A 65 78 74 65 72    rence..*/..exter
0139E0:  6E 61 6C 28 6E 61 6D 65 29 20 63 68 61 72 20 2A    nal(name) char *
0139F0:  6E 61 6D 65 3B 20 7B 0D 0A 23 69 66 64 65 66 20    name; {..#ifdef 
013A00:  3B 0D 0A 20 20 72 65 74 75 72 6E 20 31 3B 0D 0A    ;..  return 1;..
013A10:  20 20 7D 0D 0A 0D 0A 61 64 64 72 65 73 73 28 70      }....address(p
013A20:  74 72 29 20 63 68 61 72 20 2A 70 74 72 3B 20 7B    tr) char *ptr; {
013A30:  0D 0A 20 20 69 6D 6D 65 64 28 29 3B 0D 0A 20 20    ..  immed();..  
013A40:  6F 75 74 73 74 72 28 70 74 72 2B 4E 41 4D 45 29    outstr(ptr+NAME)
013A50:  3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D    ;..  nl();..  }.
013A60:  0A 0D 0A 70 73 74 72 28 76 61 6C 29 20 20 69 6E    ...pstr(val)  in
013A70:  74 20 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 69 6E    t val[]; {..  in
013A80:  74 20 6B 3B 0D 0A 20 20 6B 3D 30 3B 0D 0A 20 20    t k;..  k=0;..  
013A90:  69 66 20 28 6D 61 74 63 68 28 22 27 22 29 3D 3D    if (match("'")==
013AA0:  30 29 20 72 65 74 75 72 6E 20 30 3B 0D 0A 20 20    0) return 0;..  
013AB0:  77 68 69 6C 65 28 63 68 21 3D 33 39 29 20 20 20    while(ch!=39)   
013AC0:  20 6B 3D 28 6B 26 32 35 35 29 2A 32 35 36 20 2B     k=(k&255)*256 +
013AD0:  20 28 6C 69 74 63 68 61 72 28 29 26 32 35 35 29     (litchar()&255)
013AE0:  3B 0D 0A 20 20 67 63 68 28 29 3B 0D 0A 20 20 76    ;..  gch();..  v
013AF0:  61 6C 5B 30 5D 3D 6B 3B 0D 0A 20 20 72 65 74 75    al[0]=k;..  retu
013B00:  72 6E 20 31 3B 0D 0A 20 20 7D 0D 0A 0D 0A 71 73    rn 1;..  }....qs
013B10:  74 72 28 76 61 6C 29 20 20 69 6E 74 20 76 61 6C    tr(val)  int val
013B20:  5B 5D 3B 20 7B 0D 0A 20 20 63 68 61 72 20 63 3B    []; {..  char c;
013B30:  0D 0A 20 20 69 66 20 28 6D 61 74 63 68 28 71 75    ..  if (match(qu
013B40:  6F 74 65 29 3D 3D 30 29 20 72 65 74 75 72 6E 20    ote)==0) return 
013B50:  30 3B 0D 0A 20 20 76 61 6C 5B 30 5D 3D 6C 69 74    0;..  val[0]=lit
013B60:  70 74 72 3B 0D 0A 20 20 77 68 69 6C 65 20 28 63    ptr;..  while (c
013B70:  68 21 3D 27 22 27 29 20 7B 0D 0A 20 20 20 20 69    h!='"') {..    i
013B80:  66 28 63 68 3D 3D 30 29 20 62 72 65 61 6B 3B 0D    f(ch==0) break;.
013B90:  0A 20 20 20 20 73 74 6F 77 6C 69 74 28 6C 69 74    .    stowlit(lit
013BA0:  63 68 61 72 28 29 2C 20 31 29 3B 0D 0A 20 20 20    char(), 1);..   
013BB0:  20 7D 0D 0A 20 20 67 63 68 28 29 3B 0D 0A 20 20     }..  gch();..  
013BC0:  6C 69 74 71 5B 6C 69 74 70 74 72 2B 2B 5D 3D 30    litq[litptr++]=0
013BD0:  3B 0D 0A 20 20 72 65 74 75 72 6E 20 31 3B 0D 0A    ;..  return 1;..
013BE0:  20 20 7D 0D 0A 0D 0A 73 74 6F 77 6C 69 74 28 76      }....stowlit(v
013BF0:  61 6C 75 65 2C 20 73 69 7A 65 29 20 69 6E 74 20    alue, size) int 
013C00:  4C 49 4E 4B 0D 0A 20 20 6F 74 28 22 45 58 54 20    LINK..  ot("EXT 
013C10:  22 29 3B 0D 0A 20 20 6F 6C 28 6E 61 6D 65 29 3B    ");..  ol(name);
013C20:  0D 0A 23 65 6E 64 69 66 0D 0A 20 20 7D 0D 0A 0D    ..#endif..  }...
013C30:  0A 2F 2A 0D 0A 2A 2A 20 66 65 74 63 68 20 6F 62    ./*..** fetch ob
013C40:  6A 65 63 74 20 69 6E 64 69 72 65 63 74 20 74 6F    ject indirect to
013C50:  20 70 72 69 6D 61 72 79 20 72 65 67 69 73 74 65     primary registe
013C60:  72 0D 0A 2A 2F 0D 0A 69 6E 64 69 72 65 63 74 28    r..*/..indirect(
013C70:  6C 76 61 6C 29 20 69 6E 74 20 6C 76 61 6C 5B 5D    lval) int lval[]
013C80:  3B 20 7B 0D 0A 20 20 69 66 28 6C 76 61 6C 5B 31    ; {..  if(lval[1
013C90:  5D 3D 3D 43 43 48 41 52 29 20 66 66 63 61 6C 6C    ]==CCHAR) ffcall
013CA0:  28 22 43 43 47 43 48 41 52 23 23 22 29 3B 0D 0A    ("CCGCHAR##");..
013CB0:  20 20 65 6C 73 65 20 20 20 20 20 20 20 20 20 20      else          
013CC0:  20 20 20 20 20 66 66 63 61 6C 6C 28 22 43 43 47         ffcall("CCG
013CD0:  49 4E 54 23 23 22 29 3B 0D 0A 20 20 7D 0D 0A 0D    INT##");..  }...
013CE0:  0A 2F 2A 0D 0A 2A 2A 20 66 65 74 63 68 20 61 20    ./*..** fetch a 
013CF0:  73 74 61 74 69 63 20 6D 65 6D 6F 72 79 20 63 65    static memory ce
013D00:  6C 6C 20 69 6E 74 6F 20 70 72 69 6D 61 72 79 20    ll into primary 
013D10:  72 65 67 69 73 74 65 72 0D 0A 2A 2F 0D 0A 67 65    register..*/..ge
013D20:  74 6D 65 6D 28 6C 76 61 6C 29 20 20 69 6E 74 20    tmem(lval)  int 
013D30:  6C 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 63 68 61    lval[]; {..  cha
013D40:  72 20 2A 73 79 6D 3B 0D 0A 20 20 73 79 6D 3D 6C    r *sym;..  sym=l
013D50:  76 61 6C 5B 30 5D 3B 0D 0A 20 20 69 66 28 28 73    val[0];..  if((s
013D60:  79 6D 5B 49 44 45 4E 54 5D 21 3D 50 4F 49 4E 54    ym[IDENT]!=POINT
013D70:  45 52 29 26 28 73 79 6D 5B 54 59 50 45 5D 3D 3D    ER)&(sym[TYPE]==
013D80:  43 43 48 41 52 29 29 20 7B 0D 0A 20 20 20 20 6F    CCHAR)) {..    o
013D90:  74 28 22 4C 44 41 20 22 29 3B 0D 0A 20 20 20 20    t("LDA ");..    
013DA0:  6F 75 74 73 74 72 28 73 79 6D 2B 4E 41 4D 45 29    outstr(sym+NAME)
013DB0:  3B 0D 0A 20 20 20 20 6E 6C 28 29 3B 0D 0A 20 20    ;..    nl();..  
013DC0:  20 20 66 66 63 61 6C 6C 28 22 43 43 53 58 54 23      ffcall("CCSXT#
013DD0:  23 22 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 65    #");..    }..  e
013DE0:  6C 73 65 20 7B 0D 0A 20 20 20 20 6F 74 28 22 4C    lse {..    ot("L
013DF0:  48 4C 44 20 22 29 3B 0D 0A 20 20 20 20 6F 75 74    HLD ");..    out
013E00:  76 61 6C 75 65 2C 20 73 69 7A 65 3B 20 7B 0D 0A    value, size; {..
013E10:  20 20 69 66 28 28 6C 69 74 70 74 72 2B 73 69 7A      if((litptr+siz
013E20:  65 29 20 3E 3D 20 4C 49 54 4D 41 58 29 20 7B 0D    e) >= LITMAX) {.
013E30:  0A 20 20 20 20 65 72 72 6F 72 28 22 6C 69 74 65    .    error("lite
013E40:  72 61 6C 20 71 75 65 75 65 20 6F 76 65 72 66 6C    ral queue overfl
013E50:  6F 77 22 29 3B 20 61 62 6F 72 74 28 45 52 52 43    ow"); abort(ERRC
013E60:  4F 44 45 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20    ODE);..    }..  
013E70:  70 75 74 69 6E 74 28 76 61 6C 75 65 2C 20 6C 69    putint(value, li
013E80:  74 71 2B 6C 69 74 70 74 72 2C 20 73 69 7A 65 29    tq+litptr, size)
013E90:  3B 0D 0A 20 20 6C 69 74 70 74 72 3D 6C 69 74 70    ;..  litptr=litp
013EA0:  74 72 2B 73 69 7A 65 3B 0D 0A 20 20 7D 0D 0A 0D    tr+size;..  }...
013EB0:  0A 2F 2A 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 63    ./*..** return c
013EC0:  75 72 72 65 6E 74 20 6C 69 74 65 72 61 6C 20 63    urrent literal c
013ED0:  68 61 72 20 26 20 62 75 6D 70 20 6C 70 74 72 0D    har & bump lptr.
013EE0:  0A 2A 2F 0D 0A 6C 69 74 63 68 61 72 28 29 20 7B    .*/..litchar() {
013EF0:  0D 0A 20 20 69 6E 74 20 69 2C 20 6F 63 74 3B 0D    ..  int i, oct;.
013F00:  0A 20 20 69 66 28 28 63 68 21 3D 39 32 29 7C 28    .  if((ch!=92)|(
013F10:  6E 63 68 3D 3D 30 29 29 20 72 65 74 75 72 6E 20    nch==0)) return 
013F20:  67 63 68 28 29 3B 0D 0A 20 20 67 63 68 28 29 3B    gch();..  gch();
013F30:  0D 0A 20 20 69 66 28 63 68 3D 3D 27 6E 27 29 20    ..  if(ch=='n') 
013F40:  7B 67 63 68 28 29 3B 20 72 65 74 75 72 6E 20 4E    {gch(); return N
013F50:  45 57 4C 49 4E 45 3B 7D 0D 0A 20 20 69 66 28 63    EWLINE;}..  if(c
013F60:  68 3D 3D 27 74 27 29 20 7B 67 63 68 28 29 3B 20    h=='t') {gch(); 
013F70:  72 65 74 75 72 6E 20 20 39 3B 7D 20 2F 2A 20 48    return  9;} /* H
013F80:  54 20 2A 2F 0D 0A 20 20 69 66 28 63 68 3D 3D 27    T */..  if(ch=='
013F90:  62 27 29 20 7B 67 63 68 28 29 3B 20 72 65 74 75    b') {gch(); retu
013FA0:  72 6E 20 20 38 3B 7D 20 2F 2A 20 42 53 20 2A 2F    rn  8;} /* BS */
013FB0:  0D 0A 20 20 69 66 28 63 68 3D 3D 27 66 27 29 20    ..  if(ch=='f') 
013FC0:  7B 67 63 68 28 29 3B 20 72 65 74 75 72 6E 20 31    {gch(); return 1
013FD0:  32 3B 7D 20 2F 2A 20 46 46 20 2A 2F 0D 0A 20 20    2;} /* FF */..  
013FE0:  69 3D 33 3B 20 6F 63 74 3D 30 3B 0D 0A 20 20 77    i=3; oct=0;..  w
013FF0:  68 69 6C 65 28 28 28 69 2D 2D 29 3E 30 29 26 28    hile(((i--)>0)&(
014000:  73 74 72 28 73 79 6D 2B 4E 41 4D 45 29 3B 0D 0A    str(sym+NAME);..
014010:  20 20 20 20 6E 6C 28 29 3B 0D 0A 20 20 20 20 7D        nl();..    }
014020:  0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20    ..  }..../*..** 
014030:  66 65 74 63 68 20 61 64 64 72 20 6F 66 20 74 68    fetch addr of th
014040:  65 20 73 70 65 63 69 66 69 65 64 20 73 79 6D 62    e specified symb
014050:  6F 6C 20 69 6E 74 6F 20 70 72 69 6D 61 72 79 20    ol into primary 
014060:  72 65 67 69 73 74 65 72 0D 0A 2A 2F 0D 0A 67 65    register..*/..ge
014070:  74 6C 6F 63 28 73 79 6D 29 20 20 63 68 61 72 20    tloc(sym)  char 
014080:  2A 73 79 6D 3B 20 7B 0D 0A 20 20 63 6F 6E 73 74    *sym; {..  const
014090:  28 67 65 74 69 6E 74 28 73 79 6D 2B 4F 46 46 53    (getint(sym+OFFS
0140A0:  45 54 2C 20 4F 46 46 53 49 5A 45 29 2D 63 73 70    ET, OFFSIZE)-csp
0140B0:  29 3B 0D 0A 20 20 6F 6C 28 22 44 41 44 20 53 50    );..  ol("DAD SP
0140C0:  22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A    ");..  }..../*..
0140D0:  2A 2A 20 73 74 6F 72 65 20 70 72 69 6D 61 72 79    ** store primary
0140E0:  20 72 65 67 69 73 74 65 72 20 69 6E 74 6F 20 73     register into s
0140F0:  74 61 74 69 63 20 63 65 6C 6C 0D 0A 2A 2F 0D 0A    tatic cell..*/..
014100:  70 75 74 6D 65 6D 28 6C 76 61 6C 29 20 20 69 6E    putmem(lval)  in
014110:  74 20 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A 20 20 63    t lval[]; {..  c
014120:  68 61 72 20 2A 73 79 6D 3B 0D 0A 20 20 73 79 6D    har *sym;..  sym
014130:  3D 6C 76 61 6C 5B 30 5D 3B 0D 0A 20 20 69 66 28    =lval[0];..  if(
014140:  28 73 79 6D 5B 49 44 45 4E 54 5D 21 3D 50 4F 49    (sym[IDENT]!=POI
014150:  4E 54 45 52 29 26 28 73 79 6D 5B 54 59 50 45 5D    NTER)&(sym[TYPE]
014160:  3D 3D 43 43 48 41 52 29 29 20 7B 0D 0A 20 20 20    ==CCHAR)) {..   
014170:  20 6F 6C 28 22 4D 4F 56 20 41 2C 4C 22 29 3B 0D     ol("MOV A,L");.
014180:  0A 20 20 20 20 6F 74 28 22 53 54 41 20 22 29 3B    .    ot("STA ");
014190:  0D 0A 20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20    ..    }..  else 
0141A0:  6F 74 28 22 53 48 4C 44 20 22 29 3B 0D 0A 20 20    ot("SHLD ");..  
0141B0:  6F 75 74 73 74 72 28 73 79 6D 2B 4E 41 4D 45 29    outstr(sym+NAME)
0141C0:  3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D    ;..  nl();..  }.
0141D0:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 75 74 20 6F 6E    .../*..** put on
0141E0:  20 74 68 65 20 73 74 61 63 6B 20 74 68 65 20 74     the stack the t
0141F0:  79 70 65 20 6F 62 6A 65 63 74 20 69 6E 20 70 72    ype object in pr
014200:  63 68 3E 3D 27 30 27 29 26 28 63 68 3C 3D 27 37    ch>='0')&(ch<='7
014210:  27 29 29 20 6F 63 74 3D 28 6F 63 74 3C 3C 33 29    ')) oct=(oct<<3)
014220:  2B 67 63 68 28 29 2D 27 30 27 3B 0D 0A 20 20 69    +gch()-'0';..  i
014230:  66 28 69 3D 3D 32 29 20 72 65 74 75 72 6E 20 67    f(i==2) return g
014240:  63 68 28 29 3B 20 65 6C 73 65 20 72 65 74 75 72    ch(); else retur
014250:  6E 20 6F 63 74 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E    n oct;..  }....>
014260:  3E 3E 20 43 43 34 2E 43 20 32 34 34 0D 0A 2F 2A    >> CC4.C 244../*
014270:  0D 0A 2A 2A 20 53 6D 61 6C 6C 2D 43 20 43 6F 6D    ..** Small-C Com
014280:  70 69 6C 65 72 20 50 61 72 74 20 34 0D 0A 2A 2F    piler Part 4..*/
014290:  0D 0A 23 69 6E 63 6C 75 64 65 20 3C 73 74 64 69    ..#include <stdi
0142A0:  6F 2E 68 3E 0D 0A 23 69 6E 63 6C 75 64 65 20 22    o.h>..#include "
0142B0:  63 63 2E 64 65 66 22 0D 0A 0D 0A 65 78 74 65 72    cc.def"....exter
0142C0:  6E 20 63 68 61 72 0D 0A 20 2A 6D 61 63 6E 2C 0D    n char.. *macn,.
0142D0:  0A 20 2A 63 70 74 72 2C 20 2A 73 79 6D 74 61 62    . *cptr, *symtab
0142E0:  2C 0D 0A 23 69 66 64 65 66 20 4F 50 54 49 4D 49    ,..#ifdef OPTIMI
0142F0:  5A 45 0D 0A 20 6F 70 74 69 6D 69 7A 65 2C 0D 0A    ZE.. optimize,..
014300:  23 65 6E 64 69 66 0D 0A 20 2A 73 74 61 67 65 6E    #endif.. *stagen
014310:  65 78 74 2C 20 73 73 6E 61 6D 65 5B 4E 41 4D 45    ext, ssname[NAME
014320:  53 49 5A 45 5D 3B 0D 0A 65 78 74 65 72 6E 20 69    SIZE];..extern i
014330:  6E 74 0D 0A 20 62 65 67 6C 61 62 2C 20 20 63 73    nt.. beglab,  cs
014340:  70 2C 20 6F 75 74 70 75 74 3B 0D 0A 0D 0A 23 69    p, output;....#i
014350:  6E 63 6C 75 64 65 20 22 63 63 34 31 2E 63 22 0D    nclude "cc41.c".
014360:  0A 23 69 6E 63 6C 75 64 65 20 22 63 63 34 32 2E    .#include "cc42.
014370:  63 22 0D 0A 3E 3E 3E 20 43 43 34 31 2E 43 20 35    c"..>>> CC41.C 5
014380:  31 39 36 0D 0A 2F 2A 0D 0A 2A 2A 20 70 72 69 6E    196../*..** prin
014390:  74 20 61 6C 6C 20 61 73 73 65 6D 62 6C 65 72 20    t all assembler 
0143A0:  69 6E 66 6F 20 62 65 66 6F 72 65 20 61 6E 79 20    info before any 
0143B0:  63 6F 64 65 20 69 73 20 67 65 6E 65 72 61 74 65    code is generate
0143C0:  64 0D 0A 2A 2F 0D 0A 68 65 61 64 65 72 28 29 20    d..*/..header() 
0143D0:  20 7B 0D 0A 20 20 62 65 67 6C 61 62 3D 67 65 74     {..  beglab=get
0143E0:  6C 61 62 65 6C 28 29 3B 0D 0A 20 20 7D 0D 0A 0D    label();..  }...
0143F0:  0A 2F 2A 0D 0A 2A 2A 20 70 72 69 6E 74 20 61 6E    ./*..** print an
014400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
014410:  11 00 01 00 02 09 52 E5 11 00 41 02 00 00 00 02    ......R...A.....
014420:  11 00 46 02 00 00 00 02 11 00 42 02 00 00 00 02    ..F.......B.....
014430:  11 00 47 02 00 00 00 02 11 00 43 02 00 00 00 02    ..G.......C.....
014440:  11 00 48 02 00 00 00 02 11 00 44 02 00 00 00 02    ..H.......D.....
014450:  11 00 49 02 00 00 00 02 11 00 45 02 00 00 00 02    ..I.......E.....
014460:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014470:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014480:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014490:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014500:  69 6D 61 72 79 20 72 65 67 69 73 74 65 72 0D 0A    imary register..
014510:  2A 2F 0D 0A 70 75 74 73 74 6B 28 6C 76 61 6C 29    */..putstk(lval)
014520:  20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A     int lval[]; {..
014530:  20 20 69 66 28 6C 76 61 6C 5B 31 5D 3D 3D 43 43      if(lval[1]==CC
014540:  48 41 52 29 20 7B 0D 0A 20 20 20 20 6F 6C 28 22    HAR) {..    ol("
014550:  4D 4F 56 20 41 2C 4C 22 29 3B 0D 0A 20 20 20 20    MOV A,L");..    
014560:  6F 6C 28 22 53 54 41 58 20 44 22 29 3B 0D 0A 20    ol("STAX D");.. 
014570:  20 20 20 7D 0D 0A 20 20 65 6C 73 65 20 66 66 63       }..  else ffc
014580:  61 6C 6C 28 22 43 43 50 49 4E 54 23 23 22 29 3B    all("CCPINT##");
014590:  0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20    ..  }..../*..** 
0145A0:  6D 6F 76 65 20 70 72 69 6D 61 72 79 20 72 65 67    move primary reg
0145B0:  69 73 74 65 72 20 74 6F 20 73 65 63 6F 6E 64 61    ister to seconda
0145C0:  72 79 0D 0A 2A 2F 0D 0A 6D 6F 76 65 28 29 20 7B    ry..*/..move() {
0145D0:  0D 0A 20 20 6F 6C 28 22 4D 4F 56 20 44 2C 48 22    ..  ol("MOV D,H"
0145E0:  29 3B 0D 0A 20 20 6F 6C 28 22 4D 4F 56 20 45 2C    );..  ol("MOV E,
0145F0:  4C 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D    L");..  }..../*.
014600:  0A 2A 2A 20 73 77 61 70 20 70 72 69 6D 61 72 79    .** swap primary
014610:  20 61 6E 64 20 73 65 63 6F 6E 64 61 72 79 20 72     and secondary r
014620:  65 67 69 73 74 65 72 73 0D 0A 2A 2F 0D 0A 73 77    egisters..*/..sw
014630:  61 70 28 29 20 7B 0D 0A 20 20 6F 6C 28 22 58 43    ap() {..  ol("XC
014640:  48 47 3B 3B 22 29 3B 09 09 2F 2A 20 70 65 65 70    HG;;");../* peep
014650:  68 6F 6C 65 28 29 20 75 73 65 73 20 74 72 61 69    hole() uses trai
014660:  6C 69 6E 67 20 22 3B 3B 22 20 2A 2F 0D 0A 20 20    ling ";;" */..  
014670:  7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 61 72 74    }..../*..** part
014680:  69 61 6C 20 69 6E 73 74 72 75 63 74 69 6F 6E 20    ial instruction 
014690:  74 6F 20 67 65 74 20 69 6D 6D 65 64 69 61 74 65    to get immediate
0146A0:  20 76 61 6C 75 65 0D 0A 2A 2A 20 69 6E 74 6F 20     value..** into 
0146B0:  74 68 65 20 70 72 69 6D 61 72 79 20 72 65 67 69    the primary regi
0146C0:  73 74 65 72 0D 0A 2A 2F 0D 0A 69 6D 6D 65 64 28    ster..*/..immed(
0146D0:  29 20 7B 0D 0A 20 20 6F 74 28 22 4C 58 49 20 48    ) {..  ot("LXI H
0146E0:  2C 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D    ,");..  }..../*.
0146F0:  0A 2A 2A 20 70 61 72 74 69 61 6C 20 69 6E 73 74    .** partial inst
014700:  0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20    ..  }..../*..** 
014710:  70 6F 69 6E 74 20 74 6F 20 66 6F 6C 6C 6F 77 69    point to followi
014720:  6E 67 20 6F 62 6A 65 63 74 28 73 29 0D 0A 2A 2F    ng object(s)..*/
014730:  0D 0A 70 6F 69 6E 74 28 29 20 7B 0D 0A 20 20 6F    ..point() {..  o
014740:  6C 28 22 44 57 20 24 2B 32 22 29 3B 0D 0A 20 20    l("DW $+2");..  
014750:  7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6D 6F 64 69    }..../*..** modi
014760:  66 79 20 73 74 61 63 6B 20 70 6F 69 6E 74 65 72    fy stack pointer
014770:  20 74 6F 20 76 61 6C 75 65 20 67 69 76 65 6E 0D     to value given.
014780:  0A 2A 2F 0D 0A 6D 6F 64 73 74 6B 28 6E 65 77 73    .*/..modstk(news
014790:  70 2C 20 73 61 76 65 29 20 20 69 6E 74 20 6E 65    p, save)  int ne
0147A0:  77 73 70 2C 20 73 61 76 65 3B 20 7B 0D 0A 20 20    wsp, save; {..  
0147B0:  69 6E 74 20 6B 3B 0D 0A 20 20 6B 3D 6E 65 77 73    int k;..  k=news
0147C0:  70 2D 63 73 70 3B 0D 0A 20 20 69 66 28 6B 3D 3D    p-csp;..  if(k==
0147D0:  30 29 72 65 74 75 72 6E 20 6E 65 77 73 70 3B 0D    0)return newsp;.
0147E0:  0A 20 20 69 66 28 6B 3E 3D 30 29 20 7B 0D 0A 20    .  if(k>=0) {.. 
0147F0:  20 20 20 69 66 28 6B 3C 37 29 20 7B 0D 0A 20 20       if(k<7) {..  
014800:  20 20 20 20 69 66 28 6B 26 31 29 20 7B 0D 0A 20        if(k&1) {.. 
014810:  20 20 20 20 20 20 20 6F 6C 28 22 49 4E 58 20 53           ol("INX S
014820:  50 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 6B 2D    P");..        k-
014830:  2D 3B 0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20    -;..        }.. 
014840:  20 20 20 20 20 77 68 69 6C 65 28 6B 29 20 7B 0D         while(k) {.
014850:  0A 20 20 20 20 20 20 20 20 6F 6C 28 22 50 4F 50    .        ol("POP
014860:  20 42 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 6B     B");..        k
014870:  3D 6B 2D 42 50 57 3B 0D 0A 20 20 20 20 20 20 20    =k-BPW;..       
014880:  20 7D 0D 0A 20 20 20 20 20 20 72 65 74 75 72 6E     }..      return
014890:  20 6E 65 77 73 70 3B 0D 0A 20 20 20 20 20 20 7D     newsp;..      }
0148A0:  0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 6B 3C    ..    }..  if(k<
0148B0:  30 29 20 7B 0D 0A 20 20 20 20 69 66 28 6B 3E 2D    0) {..    if(k>-
0148C0:  37 29 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 6B    7) {..      if(k
0148D0:  26 31 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6F    &1) {..        o
0148E0:  6C 28 22 44 43 58 20 53 50 22 29 3B 0D 0A 20 20    l("DCX SP");..  
0148F0:  20 20 20 20 20 20 6B 2B 2B 3B 0D 0A 20 20 20 20          k++;..    
014900:  72 75 63 74 69 6F 6E 20 74 6F 20 67 65 74 20 69    ruction to get i
014910:  6D 6D 65 64 69 61 74 65 20 6F 70 65 72 61 6E 64    mmediate operand
014920:  0D 0A 2A 2A 20 69 6E 74 6F 20 73 65 63 6F 6E 64    ..** into second
014930:  61 72 79 20 72 65 67 69 73 74 65 72 0D 0A 2A 2F    ary register..*/
014940:  0D 0A 69 6D 6D 65 64 32 28 29 20 7B 0D 0A 20 20    ..immed2() {..  
014950:  6F 74 28 22 4C 58 49 20 44 2C 22 29 3B 0D 0A 20    ot("LXI D,");.. 
014960:  20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 75 73     }..../*..** pus
014970:  68 20 70 72 69 6D 61 72 79 20 72 65 67 69 73 74    h primary regist
014980:  65 72 20 6F 6E 74 6F 20 73 74 61 63 6B 0D 0A 2A    er onto stack..*
014990:  2F 0D 0A 70 75 73 68 28 29 20 7B 0D 0A 20 20 6F    /..push() {..  o
0149A0:  6C 28 22 50 55 53 48 20 48 22 29 3B 0D 0A 20 20    l("PUSH H");..  
0149B0:  63 73 70 3D 63 73 70 2D 42 50 57 3B 0D 0A 20 20    csp=csp-BPW;..  
0149C0:  7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 75 6E 70 75    }..../*..** unpu
0149D0:  73 68 20 6F 72 20 70 6F 70 20 61 73 20 72 65 71    sh or pop as req
0149E0:  75 69 72 65 64 0D 0A 2A 2F 0D 0A 73 6D 61 72 74    uired..*/..smart
0149F0:  70 6F 70 28 6C 76 61 6C 2C 20 73 74 61 72 74 29    pop(lval, start)
014A00:  20 69 6E 74 20 6C 76 61 6C 5B 5D 3B 20 63 68 61     int lval[]; cha
014A10:  72 20 2A 73 74 61 72 74 3B 20 7B 0D 0A 20 20 69    r *start; {..  i
014A20:  66 28 6C 76 61 6C 5B 35 5D 29 20 20 70 6F 70 28    f(lval[5])  pop(
014A30:  29 3B 09 09 2F 2A 20 73 65 63 6F 6E 64 61 72 79    );../* secondary
014A40:  20 77 61 73 20 75 73 65 64 20 2A 2F 0D 0A 20 20     was used */..  
014A50:  65 6C 73 65 20 75 6E 70 75 73 68 28 73 74 61 72    else unpush(star
014A60:  74 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A    t);..  }..../*..
014A70:  2A 2A 20 72 65 70 6C 61 63 65 20 61 20 70 75 73    ** replace a pus
014A80:  68 20 77 69 74 68 20 61 20 73 77 61 70 0D 0A 2A    h with a swap..*
014A90:  2F 0D 0A 75 6E 70 75 73 68 28 64 65 73 74 29 20    /..unpush(dest) 
014AA0:  63 68 61 72 20 2A 64 65 73 74 3B 20 7B 0D 0A 20    char *dest; {.. 
014AB0:  20 69 6E 74 20 69 3B 0D 0A 20 20 63 68 61 72 20     int i;..  char 
014AC0:  2A 73 6F 75 72 3B 0D 0A 20 20 73 6F 75 72 3D 22    *sour;..  sour="
014AD0:  58 43 48 47 3B 3B 22 3B 09 09 2F 2A 20 70 65 65    XCHG;;";../* pee
014AE0:  70 68 6F 6C 65 28 29 20 75 73 65 73 20 74 72 61    phole() uses tra
014AF0:  69 6C 69 6E 67 20 22 3B 3B 22 20 2A 2F 0D 0A 20    iling ";;" */.. 
014B00:  20 20 20 20 7D 0D 0A 20 20 20 20 20 20 77 68 69        }..      whi
014B10:  6C 65 28 6B 29 20 7B 0D 0A 20 20 20 20 20 20 20    le(k) {..       
014B20:  20 6F 6C 28 22 50 55 53 48 20 42 22 29 3B 0D 0A     ol("PUSH B");..
014B30:  20 20 20 20 20 20 20 20 6B 3D 6B 2B 42 50 57 3B            k=k+BPW;
014B40:  0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20    ..        }..   
014B50:  20 20 20 72 65 74 75 72 6E 20 6E 65 77 73 70 3B       return newsp;
014B60:  0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D    ..      }..    }
014B70:  0D 0A 20 20 69 66 28 73 61 76 65 29 20 73 77 61    ..  if(save) swa
014B80:  70 28 29 3B 0D 0A 20 20 63 6F 6E 73 74 28 6B 29    p();..  const(k)
014B90:  3B 0D 0A 20 20 6F 6C 28 22 44 41 44 20 53 50 22    ;..  ol("DAD SP"
014BA0:  29 3B 0D 0A 20 20 6F 6C 28 22 53 50 48 4C 22 29    );..  ol("SPHL")
014BB0:  3B 0D 0A 20 20 69 66 28 73 61 76 65 29 20 73 77    ;..  if(save) sw
014BC0:  61 70 28 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20    ap();..  return 
014BD0:  6E 65 77 73 70 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F    newsp;..  }..../
014BE0:  2A 0D 0A 2A 2A 20 64 6F 75 62 6C 65 20 70 72 69    *..** double pri
014BF0:  6D 61 72 79 20 72 65 67 69 73 74 65 72 0D 0A 2A    mary register..*
014C00:  2F 0D 0A 64 6F 75 62 6C 65 72 65 67 28 29 20 7B    /..doublereg() {
014C10:  6F 6C 28 22 44 41 44 20 48 22 29 3B 7D 0D 0A 0D    ol("DAD H");}...
014C20:  0A 3E 3E 3E 20 43 43 34 32 2E 43 20 35 36 31 35    .>>> CC42.C 5615
014C30:  0D 0A 2F 2A 0D 0A 2A 2A 20 61 64 64 20 70 72 69    ../*..** add pri
014C40:  6D 61 72 79 20 61 6E 64 20 73 65 63 6F 6E 64 61    mary and seconda
014C50:  72 79 20 72 65 67 69 73 74 65 72 73 20 28 72 65    ry registers (re
014C60:  73 75 6C 74 20 69 6E 20 70 72 69 6D 61 72 79 29    sult in primary)
014C70:  0D 0A 2A 2F 0D 0A 66 66 61 64 64 28 29 20 7B 6F    ..*/..ffadd() {o
014C80:  6C 28 22 44 41 44 20 44 22 29 3B 7D 0D 0A 0D 0A    l("DAD D");}....
014C90:  2F 2A 0D 0A 2A 2A 20 73 75 62 74 72 61 63 74 20    /*..** subtract 
014CA0:  70 72 69 6D 61 72 79 20 66 72 6F 6D 20 73 65 63    primary from sec
014CB0:  6F 6E 64 61 72 79 20 72 65 67 69 73 74 65 72 20    ondary register 
014CC0:  28 72 65 73 75 6C 74 20 69 6E 20 70 72 69 6D 61    (result in prima
014CD0:  72 79 29 0D 0A 2A 2F 0D 0A 66 66 73 75 62 28 29    ry)..*/..ffsub()
014CE0:  20 7B 66 66 63 61 6C 6C 28 22 43 43 53 55 42 23     {ffcall("CCSUB#
014CF0:  23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20    #");}..../*..** 
014D00:  20 77 68 69 6C 65 28 2A 73 6F 75 72 29 20 2A 64     while(*sour) *d
014D10:  65 73 74 2B 2B 20 3D 20 2A 73 6F 75 72 2B 2B 3B    est++ = *sour++;
014D20:  0D 0A 20 20 73 6F 75 72 3D 73 74 61 67 65 6E 65    ..  sour=stagene
014D30:  78 74 3B 0D 0A 20 20 77 68 69 6C 65 28 2D 2D 73    xt;..  while(--s
014D40:  6F 75 72 20 3E 20 64 65 73 74 29 20 7B 09 2F 2A    our > dest) {./*
014D50:  20 61 64 6A 75 73 74 20 73 74 61 63 6B 20 72 65     adjust stack re
014D60:  66 65 72 65 6E 63 65 73 20 2A 2F 0D 0A 20 20 20    ferences */..   
014D70:  20 69 66 28 73 74 72 65 71 28 73 6F 75 72 2C 22     if(streq(sour,"
014D80:  44 41 44 20 53 50 22 29 29 20 7B 0D 0A 20 20 20    DAD SP")) {..   
014D90:  20 20 20 2D 2D 73 6F 75 72 3B 0D 0A 20 20 20 20       --sour;..    
014DA0:  20 20 69 3D 42 50 57 3B 0D 0A 20 20 20 20 20 20      i=BPW;..      
014DB0:  77 68 69 6C 65 28 69 73 64 69 67 69 74 28 2A 28    while(isdigit(*(
014DC0:  2D 2D 73 6F 75 72 29 29 29 20 7B 0D 0A 20 20 20    --sour))) {..   
014DD0:  20 20 20 20 20 69 66 28 28 2A 73 6F 75 72 20 3D         if((*sour =
014DE0:  20 2A 73 6F 75 72 2D 69 29 20 3C 20 27 30 27 29     *sour-i) < '0')
014DF0:  20 7B 0D 0A 20 20 20 20 20 20 20 20 20 20 2A 73     {..          *s
014E00:  6F 75 72 20 3D 20 2A 73 6F 75 72 2B 31 30 3B 0D    our = *sour+10;.
014E10:  0A 20 20 20 20 20 20 20 20 20 20 69 3D 31 3B 0D    .          i=1;.
014E20:  0A 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20    .          }..  
014E30:  20 20 20 20 20 20 65 6C 73 65 20 69 3D 30 3B 0D          else i=0;.
014E40:  0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20 20    .        }..    
014E50:  20 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 63 73      }..    }..  cs
014E60:  70 3D 63 73 70 2B 42 50 57 3B 0D 0A 20 20 7D 0D    p=csp+BPW;..  }.
014E70:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 70 6F 70 20 73 74    .../*..** pop st
014E80:  61 63 6B 20 74 6F 20 74 68 65 20 73 65 63 6F 6E    ack to the secon
014E90:  64 61 72 79 20 72 65 67 69 73 74 65 72 0D 0A 2A    dary register..*
014EA0:  2F 0D 0A 70 6F 70 28 29 20 7B 0D 0A 20 20 6F 6C    /..pop() {..  ol
014EB0:  28 22 50 4F 50 20 44 22 29 3B 0D 0A 20 20 63 73    ("POP D");..  cs
014EC0:  70 3D 63 73 70 2B 42 50 57 3B 0D 0A 20 20 7D 0D    p=csp+BPW;..  }.
014ED0:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 73 77 61 70 20 70    .../*..** swap p
014EE0:  72 69 6D 61 72 79 20 72 65 67 69 73 74 65 72 20    rimary register 
014EF0:  61 6E 64 20 73 74 61 63 6B 0D 0A 2A 2F 0D 0A 73    and stack..*/..s
014F00:  6D 75 6C 74 69 70 6C 79 20 70 72 69 6D 61 72 79    multiply primary
014F10:  20 61 6E 64 20 73 65 63 6F 6E 64 61 72 79 20 72     and secondary r
014F20:  65 67 69 73 74 65 72 73 20 28 72 65 73 75 6C 74    egisters (result
014F30:  20 69 6E 20 70 72 69 6D 61 72 79 29 0D 0A 2A 2F     in primary)..*/
014F40:  0D 0A 66 66 6D 75 6C 74 28 29 20 7B 66 66 63 61    ..ffmult() {ffca
014F50:  6C 6C 28 22 43 43 4D 55 4C 54 23 23 22 29 3B 7D    ll("CCMULT##");}
014F60:  0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 64 69 76 69 64    ..../*..** divid
014F70:  65 20 73 65 63 6F 6E 64 61 72 79 20 62 79 20 70    e secondary by p
014F80:  72 69 6D 61 72 79 20 72 65 67 69 73 74 65 72 0D    rimary register.
014F90:  0A 2A 2A 20 28 71 75 6F 74 69 65 6E 74 20 69 6E    .** (quotient in
014FA0:  20 70 72 69 6D 61 72 79 2C 20 72 65 6D 61 69 6E     primary, remain
014FB0:  64 65 72 20 69 6E 20 73 65 63 6F 6E 64 61 72 79    der in secondary
014FC0:  29 0D 0A 2A 2F 0D 0A 66 66 64 69 76 28 29 20 7B    )..*/..ffdiv() {
014FD0:  66 66 63 61 6C 6C 28 22 43 43 44 49 56 23 23 22    ffcall("CCDIV##"
014FE0:  29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 72 65    );}..../*..** re
014FF0:  6D 61 69 6E 64 65 72 20 6F 66 20 73 65 63 6F 6E    mainder of secon
015000:  64 61 72 79 2F 70 72 69 6D 61 72 79 0D 0A 2A 2A    dary/primary..**
015010:  20 28 72 65 6D 61 69 6E 64 65 72 20 69 6E 20 70     (remainder in p
015020:  72 69 6D 61 72 79 2C 20 71 75 6F 74 69 65 6E 74    rimary, quotient
015030:  20 69 6E 20 73 65 63 6F 6E 64 61 72 79 29 0D 0A     in secondary)..
015040:  2A 2F 0D 0A 66 66 6D 6F 64 28 29 20 7B 66 66 64    */..ffmod() {ffd
015050:  69 76 28 29 3B 73 77 61 70 28 29 3B 7D 0D 0A 0D    iv();swap();}...
015060:  0A 2F 2A 0D 0A 2A 2A 20 69 6E 63 6C 75 73 69 76    ./*..** inclusiv
015070:  65 20 22 6F 72 22 20 70 72 69 6D 61 72 79 20 61    e "or" primary a
015080:  6E 64 20 73 65 63 6F 6E 64 61 72 79 20 72 65 67    nd secondary reg
015090:  69 73 74 65 72 73 0D 0A 2A 2A 20 28 72 65 73 75    isters..** (resu
0150A0:  6C 74 20 69 6E 20 70 72 69 6D 61 72 79 29 0D 0A    lt in primary)..
0150B0:  2A 2F 0D 0A 66 66 6F 72 28 29 20 7B 66 66 63 61    */..ffor() {ffca
0150C0:  6C 6C 28 22 43 43 4F 52 23 23 22 29 3B 7D 0D 0A    ll("CCOR##");}..
0150D0:  0D 0A 2F 2A 0D 0A 2A 2A 20 65 78 63 6C 75 73 69    ../*..** exclusi
0150E0:  76 65 20 22 6F 72 22 20 74 68 65 20 70 72 69 6D    ve "or" the prim
0150F0:  61 72 79 20 61 6E 64 20 73 65 63 6F 6E 64 61 72    ary and secondar
015100:  77 61 70 73 74 6B 28 29 20 7B 0D 0A 20 20 6F 6C    wapstk() {..  ol
015110:  28 22 58 54 48 4C 22 29 3B 0D 0A 20 20 7D 0D 0A    ("XTHL");..  }..
015120:  0D 0A 2F 2A 0D 0A 2A 2A 20 70 72 6F 63 65 73 73    ../*..** process
015130:  20 73 77 69 74 63 68 20 73 74 61 74 65 6D 65 6E     switch statemen
015140:  74 0D 0A 2A 2F 0D 0A 73 77 28 29 20 7B 0D 0A 20    t..*/..sw() {.. 
015150:  20 66 66 63 61 6C 6C 28 22 43 43 53 57 49 54 43     ffcall("CCSWITC
015160:  48 23 23 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F    H##");..  }..../
015170:  2A 0D 0A 2A 2A 20 63 61 6C 6C 20 73 70 65 63 69    *..** call speci
015180:  66 69 65 64 20 73 75 62 72 6F 75 74 69 6E 65 20    fied subroutine 
015190:  6E 61 6D 65 0D 0A 2A 2F 0D 0A 66 66 63 61 6C 6C    name..*/..ffcall
0151A0:  28 73 6E 61 6D 65 29 20 20 63 68 61 72 20 2A 73    (sname)  char *s
0151B0:  6E 61 6D 65 3B 20 7B 0D 0A 20 20 6F 74 28 22 43    name; {..  ot("C
0151C0:  41 4C 4C 20 22 29 3B 0D 0A 20 20 6F 75 74 73 74    ALL ");..  outst
0151D0:  72 28 73 6E 61 6D 65 29 3B 0D 0A 20 20 6E 6C 28    r(sname);..  nl(
0151E0:  29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A    );..  }..../*..*
0151F0:  2A 20 72 65 74 75 72 6E 20 66 72 6F 6D 20 73 75    * return from su
015200:  62 72 6F 75 74 69 6E 65 0D 0A 2A 2F 0D 0A 66 66    broutine..*/..ff
015210:  72 65 74 28 29 20 7B 0D 0A 20 20 6F 6C 28 22 52    ret() {..  ol("R
015220:  45 54 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A    ET");..  }..../*
015230:  0D 0A 2A 2A 20 70 65 72 66 6F 72 6D 20 73 75 62    ..** perform sub
015240:  72 6F 75 74 69 6E 65 20 63 61 6C 6C 20 74 6F 20    routine call to 
015250:  76 61 6C 75 65 20 6F 6E 20 73 74 61 63 6B 0D 0A    value on stack..
015260:  2A 2F 0D 0A 63 61 6C 6C 73 74 6B 28 29 20 7B 0D    */..callstk() {.
015270:  0A 20 20 66 66 63 61 6C 6C 28 22 43 43 44 43 41    .  ffcall("CCDCA
015280:  4C 23 23 22 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F    L##");..  }..../
015290:  2A 0D 0A 2A 2A 20 6A 75 6D 70 20 74 6F 20 69 6E    *..** jump to in
0152A0:  74 65 72 6E 61 6C 20 6C 61 62 65 6C 20 6E 75 6D    ternal label num
0152B0:  62 65 72 0D 0A 2A 2F 0D 0A 6A 75 6D 70 28 6C 61    ber..*/..jump(la
0152C0:  62 65 6C 29 20 20 69 6E 74 20 6C 61 62 65 6C 3B    bel)  int label;
0152D0:  20 7B 0D 0A 20 20 6F 74 28 22 4A 4D 50 20 22 29     {..  ot("JMP ")
0152E0:  3B 0D 0A 20 20 70 72 69 6E 74 6C 61 62 65 6C 28    ;..  printlabel(
0152F0:  6C 61 62 65 6C 29 3B 0D 0A 20 20 6E 6C 28 29 3B    label);..  nl();
015300:  79 20 72 65 67 69 73 74 65 72 73 0D 0A 2A 2A 20    y registers..** 
015310:  28 72 65 73 75 6C 74 20 69 6E 20 70 72 69 6D 61    (result in prima
015320:  72 79 29 0D 0A 2A 2F 0D 0A 66 66 78 6F 72 28 29    ry)..*/..ffxor()
015330:  20 7B 66 66 63 61 6C 6C 28 22 43 43 58 4F 52 23     {ffcall("CCXOR#
015340:  23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20    #");}..../*..** 
015350:  22 61 6E 64 22 20 70 72 69 6D 61 72 79 20 61 6E    "and" primary an
015360:  64 20 73 65 63 6F 6E 64 61 72 79 20 72 65 67 69    d secondary regi
015370:  73 74 65 72 73 0D 0A 2A 2A 20 28 72 65 73 75 6C    sters..** (resul
015380:  74 20 69 6E 20 70 72 69 6D 61 72 79 29 0D 0A 2A    t in primary)..*
015390:  2F 0D 0A 66 66 61 6E 64 28 29 20 7B 66 66 63 61    /..ffand() {ffca
0153A0:  6C 6C 28 22 43 43 41 4E 44 23 23 22 29 3B 7D 0D    ll("CCAND##");}.
0153B0:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6C 6F 67 69 63 61    .../*..** logica
0153C0:  6C 20 6E 65 67 61 74 69 6F 6E 20 6F 66 20 70 72    l negation of pr
0153D0:  69 6D 61 72 79 20 72 65 67 69 73 74 65 72 0D 0A    imary register..
0153E0:  2A 2F 0D 0A 6C 6E 65 67 28 29 20 7B 66 66 63 61    */..lneg() {ffca
0153F0:  6C 6C 28 22 43 43 4C 4E 45 47 23 23 22 29 3B 7D    ll("CCLNEG##");}
015400:  0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 61 72 69 74 68    ..../*..** arith
015410:  6D 65 74 69 63 20 73 68 69 66 74 20 72 69 67 68    metic shift righ
015420:  74 20 73 65 63 6F 6E 64 61 72 79 20 72 65 67 69    t secondary regi
015430:  73 74 65 72 0D 0A 2A 2A 20 6E 75 6D 62 65 72 20    ster..** number 
015440:  6F 66 20 62 69 74 73 20 67 69 76 65 6E 20 69 6E    of bits given in
015450:  20 70 72 69 6D 61 72 79 20 72 65 67 69 73 74 65     primary registe
015460:  72 0D 0A 2A 2A 20 28 72 65 73 75 6C 74 20 69 6E    r..** (result in
015470:  20 70 72 69 6D 61 72 79 29 0D 0A 2A 2F 0D 0A 66     primary)..*/..f
015480:  66 61 73 72 28 29 20 7B 66 66 63 61 6C 6C 28 22    fasr() {ffcall("
015490:  43 43 41 53 52 23 23 22 29 3B 7D 0D 0A 0D 0A 2F    CCASR##");}..../
0154A0:  2A 0D 0A 2A 2A 20 61 72 69 74 68 6D 65 74 69 63    *..** arithmetic
0154B0:  20 73 68 69 66 74 20 6C 65 66 74 20 73 65 63 6F     shift left seco
0154C0:  6E 64 61 72 79 20 72 65 67 69 73 74 65 72 0D 0A    ndary register..
0154D0:  2A 2A 20 6E 75 6D 62 65 72 20 6F 66 20 62 69 74    ** number of bit
0154E0:  73 20 67 69 76 65 6E 20 69 6E 20 70 72 69 6D 61    s given in prima
0154F0:  72 79 20 72 65 67 69 73 74 65 72 0D 0A 2A 2A 20    ry register..** 
015500:  0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20    ..  }..../*..** 
015510:  74 65 73 74 20 70 72 69 6D 61 72 79 20 72 65 67    test primary reg
015520:  69 73 74 65 72 20 61 6E 64 20 6A 75 6D 70 20 69    ister and jump i
015530:  66 20 66 61 6C 73 65 0D 0A 2A 2F 0D 0A 74 65 73    f false..*/..tes
015540:  74 6A 75 6D 70 28 6C 61 62 65 6C 29 20 20 69 6E    tjump(label)  in
015550:  74 20 6C 61 62 65 6C 3B 20 7B 0D 0A 20 20 6F 6C    t label; {..  ol
015560:  28 22 4D 4F 56 20 41 2C 48 22 29 3B 0D 0A 20 20    ("MOV A,H");..  
015570:  6F 6C 28 22 4F 52 41 20 4C 22 29 3B 0D 0A 20 20    ol("ORA L");..  
015580:  6F 74 28 22 4A 5A 20 22 29 3B 0D 0A 20 20 70 72    ot("JZ ");..  pr
015590:  69 6E 74 6C 61 62 65 6C 28 6C 61 62 65 6C 29 3B    intlabel(label);
0155A0:  0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D 0A    ..  nl();..  }..
0155B0:  0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 70 72    ../*..** test pr
0155C0:  69 6D 61 72 79 20 72 65 67 69 73 74 65 72 20 61    imary register a
0155D0:  67 61 69 6E 73 74 20 7A 65 72 6F 20 61 6E 64 20    gainst zero and 
0155E0:  6A 75 6D 70 20 69 66 20 66 61 6C 73 65 0D 0A 2A    jump if false..*
0155F0:  2F 0D 0A 7A 65 72 6F 6A 75 6D 70 28 6F 70 65 72    /..zerojump(oper
015600:  2C 20 6C 61 62 65 6C 2C 20 6C 76 61 6C 29 20 69    , label, lval) i
015610:  6E 74 20 28 2A 6F 70 65 72 29 28 29 2C 20 6C 61    nt (*oper)(), la
015620:  62 65 6C 2C 20 6C 76 61 6C 5B 5D 3B 20 7B 0D 0A    bel, lval[]; {..
015630:  20 20 63 6C 65 61 72 73 74 61 67 65 28 6C 76 61      clearstage(lva
015640:  6C 5B 37 5D 2C 20 30 29 3B 09 2F 2A 20 70 75 72    l[7], 0);./* pur
015650:  67 65 20 63 6F 6E 76 65 6E 74 69 6F 6E 61 6C 20    ge conventional 
015660:  63 6F 64 65 20 2A 2F 0D 0A 20 20 28 2A 6F 70 65    code */..  (*ope
015670:  72 29 28 6C 61 62 65 6C 29 3B 0D 0A 20 20 7D 0D    r)(label);..  }.
015680:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 64 65 66 69 6E 65    .../*..** define
015690:  20 73 74 6F 72 61 67 65 20 61 63 63 6F 72 64 69     storage accordi
0156A0:  6E 67 20 74 6F 20 73 69 7A 65 0D 0A 2A 2F 0D 0A    ng to size..*/..
0156B0:  64 65 66 73 74 6F 72 61 67 65 28 73 69 7A 65 29    defstorage(size)
0156C0:  20 69 6E 74 20 73 69 7A 65 3B 20 7B 0D 0A 20 20     int size; {..  
0156D0:  69 66 28 73 69 7A 65 3D 3D 31 29 20 6F 74 28 22    if(size==1) ot("
0156E0:  44 42 20 22 29 3B 0D 0A 20 20 65 6C 73 65 20 20    DB ");..  else  
0156F0:  20 20 20 20 20 20 6F 74 28 22 44 57 20 22 29 3B          ot("DW ");
015700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
015710:  12 00 01 00 02 09 52 E5 12 00 41 02 00 00 00 02    ......R...A.....
015720:  12 00 46 02 00 00 00 02 12 00 42 02 00 00 00 02    ..F.......B.....
015730:  12 00 47 02 00 00 00 02 12 00 43 02 00 00 00 02    ..G.......C.....
015740:  12 00 48 02 00 00 00 02 12 00 44 02 00 00 00 02    ..H.......D.....
015750:  12 00 49 02 00 00 00 02 12 00 45 02 00 00 00 02    ..I.......E.....
015760:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015770:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015780:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015790:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0157F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015800:  28 72 65 73 75 6C 74 20 69 6E 20 70 72 69 6D 61    (result in prima
015810:  72 79 29 0D 0A 2A 2F 0D 0A 66 66 61 73 6C 28 29    ry)..*/..ffasl()
015820:  20 7B 66 66 63 61 6C 6C 28 22 43 43 41 53 4C 23     {ffcall("CCASL#
015830:  23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20    #");}..../*..** 
015840:  74 77 6F 27 73 20 63 6F 6D 70 6C 65 6D 65 6E 74    two's complement
015850:  20 70 72 69 6D 61 72 79 20 72 65 67 69 73 74 65     primary registe
015860:  72 0D 0A 2A 2F 0D 0A 6E 65 67 28 29 20 7B 66 66    r..*/..neg() {ff
015870:  63 61 6C 6C 28 22 43 43 4E 45 47 23 23 22 29 3B    call("CCNEG##");
015880:  7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6F 6E 65 27    }..../*..** one'
015890:  73 20 63 6F 6D 70 6C 65 6D 65 6E 74 20 70 72 69    s complement pri
0158A0:  6D 61 72 79 20 72 65 67 69 73 74 65 72 0D 0A 2A    mary register..*
0158B0:  2F 0D 0A 63 6F 6D 28 29 20 7B 66 66 63 61 6C 6C    /..com() {ffcall
0158C0:  28 22 43 43 43 4F 4D 23 23 22 29 3B 7D 0D 0A 0D    ("CCCOM##");}...
0158D0:  0A 2F 2A 0D 0A 2A 2A 20 69 6E 63 72 65 6D 65 6E    ./*..** incremen
0158E0:  74 20 70 72 69 6D 61 72 79 20 72 65 67 69 73 74    t primary regist
0158F0:  65 72 20 62 79 20 6F 6E 65 20 6F 62 6A 65 63 74    er by one object
015900:  20 6F 66 20 77 68 61 74 65 76 65 72 20 73 69 7A     of whatever siz
015910:  65 0D 0A 2A 2F 0D 0A 69 6E 63 28 6E 29 20 69 6E    e..*/..inc(n) in
015920:  74 20 6E 3B 20 7B 0D 0A 20 20 77 68 69 6C 65 28    t n; {..  while(
015930:  31 29 20 7B 0D 0A 20 20 20 20 6F 6C 28 22 49 4E    1) {..    ol("IN
015940:  58 20 48 22 29 3B 0D 0A 20 20 20 20 69 66 28 2D    X H");..    if(-
015950:  2D 6E 20 3C 20 31 29 20 62 72 65 61 6B 3B 0D 0A    -n < 1) break;..
015960:  20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A        }..  }..../*
015970:  0D 0A 2A 2A 20 64 65 63 72 65 6D 65 6E 74 20 70    ..** decrement p
015980:  72 69 6D 61 72 79 20 72 65 67 69 73 74 65 72 20    rimary register 
015990:  62 79 20 6F 6E 65 20 6F 62 6A 65 63 74 20 6F 66    by one object of
0159A0:  20 77 68 61 74 65 76 65 72 20 73 69 7A 65 0D 0A     whatever size..
0159B0:  2A 2F 0D 0A 64 65 63 28 6E 29 20 69 6E 74 20 6E    */..dec(n) int n
0159C0:  3B 20 7B 0D 0A 20 20 77 68 69 6C 65 28 31 29 20    ; {..  while(1) 
0159D0:  7B 0D 0A 20 20 20 20 6F 6C 28 22 44 43 58 20 48    {..    ol("DCX H
0159E0:  22 29 3B 0D 0A 20 20 20 20 69 66 28 2D 2D 6E 20    ");..    if(--n 
0159F0:  3C 20 31 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20    < 1) break;..   
015A00:  20 20 20 69 66 28 73 74 72 65 71 28 70 74 72 2B       if(streq(ptr+
015A10:  32 39 2C 20 22 58 43 48 47 3B 3B 22 29 29 20 7B    29, "XCHG;;")) {
015A20:  70 70 32 28 29 3B 70 74 72 3D 70 74 72 2B 33 36    pp2();ptr=ptr+36
015A30:  3B 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 20    ;}..      else  
015A40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
015A50:  20 20 20 20 20 20 7B 70 70 31 28 29 3B 70 74 72          {pp1();ptr
015A60:  3D 70 74 72 2B 32 39 3B 7D 0D 0A 20 20 20 20 20    =ptr+29;}..     
015A70:  20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 69 66 28     }..    else if(
015A80:  73 74 72 65 71 28 70 74 72 2C 22 4C 58 49 20 48    streq(ptr,"LXI H
015A90:  2C 32 5C 6E 44 41 44 20 53 50 5C 6E 43 41 4C 4C    ,2\nDAD SP\nCALL
015AA0:  20 43 43 47 49 4E 54 23 23 22 29 29 20 7B 0D 0A     CCGINT##")) {..
015AB0:  20 20 20 20 20 20 69 66 28 73 74 72 65 71 28 70          if(streq(p
015AC0:  74 72 2B 32 39 2C 20 22 58 43 48 47 3B 3B 22 29    tr+29, "XCHG;;")
015AD0:  29 20 7B 70 70 33 28 70 70 32 29 3B 70 74 72 3D    ) {pp3(pp2);ptr=
015AE0:  70 74 72 2B 33 36 3B 7D 0D 0A 20 20 20 20 20 20    ptr+36;}..      
015AF0:  65 6C 73 65 20 20 20 20 20 20 20 20 20 20 20 20    else            
015B00:  20 20 20 20 20 20 20 20 20 20 20 20 7B 70 70 33                {pp3
015B10:  28 70 70 31 29 3B 70 74 72 3D 70 74 72 2B 32 39    (pp1);ptr=ptr+29
015B20:  3B 7D 0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20    ;}..      }..   
015B30:  20 65 6C 73 65 20 69 66 28 6F 70 74 69 6D 69 7A     else if(optimiz
015B40:  65 29 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 73    e) {..      if(s
015B50:  74 72 65 71 28 70 74 72 2C 20 22 44 41 44 20 53    treq(ptr, "DAD S
015B60:  50 5C 6E 43 41 4C 4C 20 43 43 47 49 4E 54 23 23    P\nCALL CCGINT##
015B70:  22 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6F    ")) {..        o
015B80:  6C 28 22 43 41 4C 4C 20 43 43 44 53 47 49 23 23    l("CALL CCDSGI##
015B90:  22 29 3B 0D 0A 20 20 20 20 20 20 20 20 70 74 72    ");..        ptr
015BA0:  3D 70 74 72 2B 32 31 3B 0D 0A 20 20 20 20 20 20    =ptr+21;..      
015BB0:  20 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20      }..      else 
015BC0:  69 66 28 73 74 72 65 71 28 70 74 72 2C 20 22 44    if(streq(ptr, "D
015BD0:  41 44 20 44 5C 6E 43 41 4C 4C 20 43 43 47 49 4E    AD D\nCALL CCGIN
015BE0:  54 23 23 22 29 29 20 7B 0D 0A 20 20 20 20 20 20    T##")) {..      
015BF0:  20 20 6F 6C 28 22 43 41 4C 4C 20 43 43 44 44 47      ol("CALL CCDDG
015C00:  20 7D 0D 0A 20 20 7D 0D 0A 20 0D 0A 2F 2A 0D 0A     }..  }.. ../*..
015C10:  2A 2A 20 74 65 73 74 20 66 6F 72 20 65 71 75 61    ** test for equa
015C20:  6C 20 74 6F 0D 0A 2A 2F 0D 0A 66 66 65 71 28 29    l to..*/..ffeq()
015C30:  20 20 7B 66 66 63 61 6C 6C 28 22 43 43 45 51 23      {ffcall("CCEQ#
015C40:  23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20    #");}..../*..** 
015C50:  74 65 73 74 20 66 6F 72 20 65 71 75 61 6C 20 74    test for equal t
015C60:  6F 20 7A 65 72 6F 0D 0A 2A 2F 0D 0A 65 71 30 28    o zero..*/..eq0(
015C70:  6C 61 62 65 6C 29 20 69 6E 74 20 6C 61 62 65 6C    label) int label
015C80:  3B 20 7B 0D 0A 20 20 6F 6C 28 22 4D 4F 56 20 41    ; {..  ol("MOV A
015C90:  2C 48 22 29 3B 0D 0A 20 20 6F 6C 28 22 4F 52 41    ,H");..  ol("ORA
015CA0:  20 4C 22 29 3B 0D 0A 20 20 6F 74 28 22 4A 4E 5A     L");..  ot("JNZ
015CB0:  20 22 29 3B 0D 0A 20 20 70 72 69 6E 74 6C 61 62     ");..  printlab
015CC0:  65 6C 28 6C 61 62 65 6C 29 3B 0D 0A 20 20 6E 6C    el(label);..  nl
015CD0:  28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A    ();..  }..../*..
015CE0:  2A 2A 20 74 65 73 74 20 66 6F 72 20 6E 6F 74 20    ** test for not 
015CF0:  65 71 75 61 6C 20 74 6F 0D 0A 2A 2F 0D 0A 66 66    equal to..*/..ff
015D00:  6E 65 28 29 20 20 7B 66 66 63 61 6C 6C 28 22 43    ne()  {ffcall("C
015D10:  43 4E 45 23 23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D    CNE##");}..../*.
015D20:  0A 2A 2A 20 74 65 73 74 20 66 6F 72 20 6E 6F 74    .** test for not
015D30:  20 65 71 75 61 6C 20 74 6F 20 7A 65 72 6F 0D 0A     equal to zero..
015D40:  2A 2F 0D 0A 6E 65 30 28 6C 61 62 65 6C 29 20 69    */..ne0(label) i
015D50:  6E 74 20 6C 61 62 65 6C 3B 20 7B 0D 0A 20 20 6F    nt label; {..  o
015D60:  6C 28 22 4D 4F 56 20 41 2C 48 22 29 3B 0D 0A 20    l("MOV A,H");.. 
015D70:  20 6F 6C 28 22 4F 52 41 20 4C 22 29 3B 0D 0A 20     ol("ORA L");.. 
015D80:  20 6F 74 28 22 4A 5A 20 22 29 3B 0D 0A 20 20 70     ot("JZ ");..  p
015D90:  72 69 6E 74 6C 61 62 65 6C 28 6C 61 62 65 6C 29    rintlabel(label)
015DA0:  3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D    ;..  nl();..  }.
015DB0:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 66    .../*..** test f
015DC0:  6F 72 20 6C 65 73 73 20 74 68 61 6E 20 28 73 69    or less than (si
015DD0:  67 6E 65 64 29 0D 0A 2A 2F 0D 0A 66 66 6C 74 28    gned)..*/..fflt(
015DE0:  29 20 20 7B 66 66 63 61 6C 6C 28 22 43 43 4C 54    )  {ffcall("CCLT
015DF0:  23 23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A    ##");}..../*..**
015E00:  49 23 23 22 29 3B 0D 0A 20 20 20 20 20 20 20 20    I##");..        
015E10:  70 74 72 3D 70 74 72 2B 32 30 3B 0D 0A 20 20 20    ptr=ptr+20;..   
015E20:  20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C         }..      el
015E30:  73 65 20 69 66 28 73 74 72 65 71 28 70 74 72 2C    se if(streq(ptr,
015E40:  20 22 44 41 44 20 53 50 5C 6E 43 41 4C 4C 20 43     "DAD SP\nCALL C
015E50:  43 47 43 48 41 52 23 23 22 29 29 20 7B 0D 0A 20    CGCHAR##")) {.. 
015E60:  20 20 20 20 20 20 20 6F 6C 28 22 43 41 4C 4C 20           ol("CALL 
015E70:  43 43 44 53 47 43 23 23 22 29 3B 0D 0A 20 20 20    CCDSGC##");..   
015E80:  20 20 20 20 20 70 74 72 3D 70 74 72 2B 32 32 3B         ptr=ptr+22;
015E90:  0D 0A 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20    ..          }.. 
015EA0:  20 20 20 20 20 65 6C 73 65 20 69 66 28 73 74 72         else if(str
015EB0:  65 71 28 70 74 72 2C 20 22 44 41 44 20 44 5C 6E    eq(ptr, "DAD D\n
015EC0:  43 41 4C 4C 20 43 43 47 43 48 41 52 23 23 22 29    CALL CCGCHAR##")
015ED0:  29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6F 6C 28    ) {..        ol(
015EE0:  22 43 41 4C 4C 20 43 43 44 44 47 43 23 23 22 29    "CALL CCDDGC##")
015EF0:  3B 0D 0A 20 20 20 20 20 20 20 20 70 74 72 3D 70    ;..        ptr=p
015F00:  74 72 2B 32 31 3B 0D 0A 20 20 20 20 20 20 20 20    tr+21;..        
015F10:  7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 69 66    }..      else if
015F20:  28 73 74 72 65 71 28 70 74 72 2C 0D 0A 20 20 20    (streq(ptr,..   
015F30:  20 20 20 20 20 22 44 41 44 20 53 50 5C 6E 4D 4F         "DAD SP\nMO
015F40:  56 20 44 2C 48 5C 6E 4D 4F 56 20 45 2C 4C 5C 6E    V D,H\nMOV E,L\n
015F50:  43 41 4C 4C 20 43 43 47 49 4E 54 23 23 5C 6E 49    CALL CCGINT##\nI
015F60:  4E 58 20 48 5C 6E 43 41 4C 4C 20 43 43 50 49 4E    NX H\nCALL CCPIN
015F70:  54 23 23 22 29 29 20 7B 0D 0A 20 20 20 20 20 20    T##")) {..      
015F80:  20 20 6F 6C 28 22 43 41 4C 4C 20 43 43 49 4E 43      ol("CALL CCINC
015F90:  49 23 23 22 29 3B 0D 0A 20 20 20 20 20 20 20 20    I##");..        
015FA0:  70 74 72 3D 70 74 72 2B 35 37 3B 0D 0A 20 20 20    ptr=ptr+57;..   
015FB0:  20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C         }..      el
015FC0:  73 65 20 69 66 28 73 74 72 65 71 28 70 74 72 2C    se if(streq(ptr,
015FD0:  0D 0A 20 20 20 20 20 20 20 20 22 44 41 44 20 53    ..        "DAD S
015FE0:  50 5C 6E 4D 4F 56 20 44 2C 48 5C 6E 4D 4F 56 20    P\nMOV D,H\nMOV 
015FF0:  45 2C 4C 5C 6E 43 41 4C 4C 20 43 43 47 49 4E 54    E,L\nCALL CCGINT
016000:  20 74 65 73 74 20 66 6F 72 20 6C 65 73 73 20 74     test for less t
016010:  68 61 6E 20 74 6F 20 7A 65 72 6F 0D 0A 2A 2F 0D    han to zero..*/.
016020:  0A 6C 74 30 28 6C 61 62 65 6C 29 20 69 6E 74 20    .lt0(label) int 
016030:  6C 61 62 65 6C 3B 20 7B 0D 0A 20 20 6F 6C 28 22    label; {..  ol("
016040:  58 52 41 20 41 22 29 3B 0D 0A 20 20 6F 6C 28 22    XRA A");..  ol("
016050:  4F 52 41 20 48 22 29 3B 0D 0A 20 20 6F 74 28 22    ORA H");..  ot("
016060:  4A 50 20 22 29 3B 0D 0A 20 20 70 72 69 6E 74 6C    JP ");..  printl
016070:  61 62 65 6C 28 6C 61 62 65 6C 29 3B 0D 0A 20 20    abel(label);..  
016080:  6E 6C 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A    nl();..  }..../*
016090:  0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72 20 6C 65    ..** test for le
0160A0:  73 73 20 74 68 61 6E 20 6F 72 20 65 71 75 61 6C    ss than or equal
0160B0:  20 74 6F 20 28 73 69 67 6E 65 64 29 0D 0A 2A 2F     to (signed)..*/
0160C0:  0D 0A 66 66 6C 65 28 29 20 20 7B 66 66 63 61 6C    ..ffle()  {ffcal
0160D0:  6C 28 22 43 43 4C 45 23 23 22 29 3B 7D 0D 0A 0D    l("CCLE##");}...
0160E0:  0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72    ./*..** test for
0160F0:  20 6C 65 73 73 20 74 68 61 6E 20 6F 72 20 65 71     less than or eq
016100:  75 61 6C 20 74 6F 20 7A 65 72 6F 0D 0A 2A 2F 0D    ual to zero..*/.
016110:  0A 6C 65 30 28 6C 61 62 65 6C 29 20 69 6E 74 20    .le0(label) int 
016120:  6C 61 62 65 6C 3B 20 7B 0D 0A 20 20 6F 6C 28 22    label; {..  ol("
016130:  4D 4F 56 20 41 2C 48 22 29 3B 0D 0A 20 20 6F 6C    MOV A,H");..  ol
016140:  28 22 4F 52 41 20 4C 22 29 3B 0D 0A 20 20 6F 6C    ("ORA L");..  ol
016150:  28 22 4A 5A 20 24 2B 38 22 29 3B 0D 0A 20 20 6F    ("JZ $+8");..  o
016160:  6C 28 22 58 52 41 20 41 22 29 3B 0D 0A 20 20 6F    l("XRA A");..  o
016170:  6C 28 22 4F 52 41 20 48 22 29 3B 0D 0A 20 20 6F    l("ORA H");..  o
016180:  74 28 22 4A 50 20 22 29 3B 0D 0A 20 20 70 72 69    t("JP ");..  pri
016190:  6E 74 6C 61 62 65 6C 28 6C 61 62 65 6C 29 3B 0D    ntlabel(label);.
0161A0:  0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D 0A 0D    .  nl();..  }...
0161B0:  0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72    ./*..** test for
0161C0:  20 67 72 65 61 74 65 72 20 74 68 61 6E 20 28 73     greater than (s
0161D0:  69 67 6E 65 64 29 0D 0A 2A 2F 0D 0A 66 66 67 74    igned)..*/..ffgt
0161E0:  28 29 20 20 7B 66 66 63 61 6C 6C 28 22 43 43 47    ()  {ffcall("CCG
0161F0:  54 23 23 22 29 3B 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A    T##");}..../*..*
016200:  23 23 5C 6E 44 43 58 20 48 5C 6E 43 41 4C 4C 20    ##\nDCX H\nCALL 
016210:  43 43 50 49 4E 54 23 23 22 29 29 20 7B 0D 0A 20    CCPINT##")) {.. 
016220:  20 20 20 20 20 20 20 6F 6C 28 22 43 41 4C 4C 20           ol("CALL 
016230:  43 43 44 45 43 49 23 23 22 29 3B 0D 0A 20 20 20    CCDECI##");..   
016240:  20 20 20 20 20 70 74 72 3D 70 74 72 2B 35 37 3B         ptr=ptr+57;
016250:  0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20    ..        }..   
016260:  20 20 20 65 6C 73 65 20 69 66 28 73 74 72 65 71       else if(streq
016270:  28 70 74 72 2C 0D 0A 20 20 20 20 20 20 20 20 22    (ptr,..        "
016280:  44 41 44 20 53 50 5C 6E 4D 4F 56 20 44 2C 48 5C    DAD SP\nMOV D,H\
016290:  6E 4D 4F 56 20 45 2C 4C 5C 6E 43 41 4C 4C 20 43    nMOV E,L\nCALL C
0162A0:  43 47 43 48 41 52 23 23 5C 6E 49 4E 58 20 48 5C    CGCHAR##\nINX H\
0162B0:  6E 4D 4F 56 20 41 2C 4C 5C 6E 53 54 41 58 20 44    nMOV A,L\nSTAX D
0162C0:  22 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6F    ")) {..        o
0162D0:  6C 28 22 43 41 4C 4C 20 43 43 49 4E 43 43 23 23    l("CALL CCINCC##
0162E0:  22 29 3B 0D 0A 20 20 20 20 20 20 20 20 70 74 72    ");..        ptr
0162F0:  3D 70 74 72 2B 35 39 3B 0D 0A 20 20 20 20 20 20    =ptr+59;..      
016300:  20 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20      }..      else 
016310:  69 66 28 73 74 72 65 71 28 70 74 72 2C 0D 0A 20    if(streq(ptr,.. 
016320:  20 20 20 20 20 20 20 22 44 41 44 20 53 50 5C 6E           "DAD SP\n
016330:  4D 4F 56 20 44 2C 48 5C 6E 4D 4F 56 20 45 2C 4C    MOV D,H\nMOV E,L
016340:  5C 6E 43 41 4C 4C 20 43 43 47 43 48 41 52 23 23    \nCALL CCGCHAR##
016350:  5C 6E 44 43 58 20 48 5C 6E 4D 4F 56 20 41 2C 4C    \nDCX H\nMOV A,L
016360:  5C 6E 53 54 41 58 20 44 22 29 29 20 7B 0D 0A 20    \nSTAX D")) {.. 
016370:  20 20 20 20 20 20 20 6F 6C 28 22 43 41 4C 4C 20           ol("CALL 
016380:  43 43 44 45 43 43 23 23 22 29 3B 0D 0A 20 20 20    CCDECC##");..   
016390:  20 20 20 20 20 70 74 72 3D 70 74 72 2B 35 39 3B         ptr=ptr+59;
0163A0:  0D 0A 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20    ..        }..   
0163B0:  20 20 20 65 6C 73 65 20 69 66 28 73 74 72 65 71       else if(streq
0163C0:  28 70 74 72 2C 20 22 44 41 44 20 44 5C 6E 50 4F    (ptr, "DAD D\nPO
0163D0:  50 20 44 5C 6E 43 41 4C 4C 20 43 43 50 49 4E 54    P D\nCALL CCPINT
0163E0:  23 23 22 29 29 20 7B 0D 0A 20 20 20 20 20 20 20    ##")) {..       
0163F0:  20 6F 6C 28 22 43 41 4C 4C 20 43 44 50 44 50 49     ol("CALL CDPDPI
016400:  2A 20 74 65 73 74 20 66 6F 72 20 67 72 65 61 74    * test for great
016410:  65 72 20 74 68 61 6E 20 74 6F 20 7A 65 72 6F 0D    er than to zero.
016420:  0A 2A 2F 0D 0A 67 74 30 28 6C 61 62 65 6C 29 20    .*/..gt0(label) 
016430:  69 6E 74 20 6C 61 62 65 6C 3B 20 7B 0D 0A 20 20    int label; {..  
016440:  6F 6C 28 22 58 52 41 20 41 22 29 3B 0D 0A 20 20    ol("XRA A");..  
016450:  6F 6C 28 22 4F 52 41 20 48 22 29 3B 0D 0A 20 20    ol("ORA H");..  
016460:  6F 74 28 22 4A 4D 20 22 29 3B 0D 0A 20 20 70 72    ot("JM ");..  pr
016470:  69 6E 74 6C 61 62 65 6C 28 6C 61 62 65 6C 29 3B    intlabel(label);
016480:  0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20 6F 6C 28    ..  nl();..  ol(
016490:  22 4F 52 41 20 4C 22 29 3B 0D 0A 20 20 6F 74 28    "ORA L");..  ot(
0164A0:  22 4A 5A 20 22 29 3B 0D 0A 20 20 70 72 69 6E 74    "JZ ");..  print
0164B0:  6C 61 62 65 6C 28 6C 61 62 65 6C 29 3B 0D 0A 20    label(label);.. 
0164C0:  20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F     nl();..  }..../
0164D0:  2A 0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72 20 67    *..** test for g
0164E0:  72 65 61 74 65 72 20 74 68 61 6E 20 6F 72 20 65    reater than or e
0164F0:  71 75 61 6C 20 74 6F 20 28 73 69 67 6E 65 64 29    qual to (signed)
016500:  0D 0A 2A 2F 0D 0A 66 66 67 65 28 29 20 20 7B 66    ..*/..ffge()  {f
016510:  66 63 61 6C 6C 28 22 43 43 47 45 23 23 22 29 3B    fcall("CCGE##");
016520:  7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74    }..../*..** test
016530:  20 66 6F 72 20 67 74 65 61 74 65 72 20 74 68 61     for gteater tha
016540:  6E 20 6F 72 20 65 71 75 61 6C 20 74 6F 20 7A 65    n or equal to ze
016550:  72 6F 0D 0A 2A 2F 0D 0A 67 65 30 28 6C 61 62 65    ro..*/..ge0(labe
016560:  6C 29 20 69 6E 74 20 6C 61 62 65 6C 3B 20 7B 0D    l) int label; {.
016570:  0A 20 20 6F 6C 28 22 58 52 41 20 41 22 29 3B 0D    .  ol("XRA A");.
016580:  0A 20 20 6F 6C 28 22 4F 52 41 20 48 22 29 3B 0D    .  ol("ORA H");.
016590:  0A 20 20 6F 74 28 22 4A 4D 20 22 29 3B 0D 0A 20    .  ot("JM ");.. 
0165A0:  20 70 72 69 6E 74 6C 61 62 65 6C 28 6C 61 62 65     printlabel(labe
0165B0:  6C 29 3B 0D 0A 20 20 6E 6C 28 29 3B 0D 0A 20 20    l);..  nl();..  
0165C0:  7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74    }..../*..** test
0165D0:  20 66 6F 72 20 6C 65 73 73 20 74 68 61 6E 20 28     for less than (
0165E0:  75 6E 73 69 67 6E 65 64 29 0D 0A 2A 2F 0D 0A 75    unsigned)..*/..u
0165F0:  6C 74 28 29 20 20 7B 66 66 63 61 6C 6C 28 22 43    lt()  {ffcall("C
016600:  23 23 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 70    ##");..        p
016610:  74 72 3D 70 74 72 2B 32 36 3B 0D 0A 20 20 20 20    tr=ptr+26;..    
016620:  20 20 20 20 7D 0D 0A 20 20 20 20 20 20 65 6C 73        }..      els
016630:  65 20 69 66 28 73 74 72 65 71 28 70 74 72 2C 20    e if(streq(ptr, 
016640:  22 44 41 44 20 44 5C 6E 50 4F 50 20 44 5C 6E 4D    "DAD D\nPOP D\nM
016650:  4F 56 20 41 2C 4C 5C 6E 53 54 41 58 20 44 22 29    OV A,L\nSTAX D")
016660:  29 20 7B 0D 0A 20 20 20 20 20 20 20 20 6F 6C 28    ) {..        ol(
016670:  22 43 41 4C 4C 20 43 44 50 44 50 43 23 23 22 29    "CALL CDPDPC##")
016680:  3B 0D 0A 20 20 20 20 20 20 20 20 70 74 72 3D 70    ;..        ptr=p
016690:  74 72 2B 32 37 3B 0D 0A 20 20 20 20 20 20 20 20    tr+27;..        
0166A0:  7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 69 66    }..      else if
0166B0:  28 73 74 72 65 71 28 70 74 72 2C 20 22 50 4F 50    (streq(ptr, "POP
0166C0:  20 44 5C 6E 43 41 4C 4C 20 43 43 50 49 4E 54 23     D\nCALL CCPINT#
0166D0:  23 22 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20    #")) {..        
0166E0:  6F 6C 28 22 43 41 4C 4C 20 43 43 50 44 50 49 23    ol("CALL CCPDPI#
0166F0:  23 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 70 74    #");..        pt
016700:  72 3D 70 74 72 2B 32 30 3B 0D 0A 20 20 20 20 20    r=ptr+20;..     
016710:  20 20 20 7D 0D 0A 20 20 20 20 20 20 2F 2A 20 61       }..      /* a
016720:  64 64 69 74 69 6F 6E 61 6C 20 6F 70 74 69 6D 69    dditional optimi
016730:  7A 69 6E 67 20 6C 6F 67 69 63 20 67 6F 65 73 20    zing logic goes 
016740:  68 65 72 65 20 2A 2F 0D 0A 20 20 20 20 20 20 65    here */..      e
016750:  6C 73 65 20 63 6F 75 74 28 2A 70 74 72 2B 2B 2C    lse cout(*ptr++,
016760:  20 6F 75 74 70 75 74 29 3B 0D 0A 20 20 20 20 20     output);..     
016770:  20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 63 6F 75     }..    else cou
016780:  74 28 2A 70 74 72 2B 2B 2C 20 6F 75 74 70 75 74    t(*ptr++, output
016790:  29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A    );..    }..  }..
0167A0:  0D 0A 70 70 31 28 29 20 7B 0D 0A 20 20 6F 6C 28    ..pp1() {..  ol(
0167B0:  22 50 4F 50 20 48 22 29 3B 0D 0A 20 20 6F 6C 28    "POP H");..  ol(
0167C0:  22 50 55 53 48 20 48 22 29 3B 0D 0A 20 20 7D 0D    "PUSH H");..  }.
0167D0:  0A 0D 0A 70 70 32 28 29 20 7B 0D 0A 20 20 6F 6C    ...pp2() {..  ol
0167E0:  28 22 50 4F 50 20 44 22 29 3B 0D 0A 20 20 6F 6C    ("POP D");..  ol
0167F0:  28 22 50 55 53 48 20 44 22 29 3B 0D 0A 20 20 7D    ("PUSH D");..  }
016800:  43 55 4C 54 23 23 22 29 3B 7D 0D 0A 0D 0A 2F 2A    CULT##");}..../*
016810:  0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72 20 6C 65    ..** test for le
016820:  73 73 20 74 68 61 6E 20 74 6F 20 7A 65 72 6F 20    ss than to zero 
016830:  28 75 6E 73 69 67 6E 65 64 29 0D 0A 2A 2F 0D 0A    (unsigned)..*/..
016840:  75 6C 74 30 28 6C 61 62 65 6C 29 20 69 6E 74 20    ult0(label) int 
016850:  6C 61 62 65 6C 3B 20 7B 0D 0A 20 20 6F 74 28 22    label; {..  ot("
016860:  4A 4D 50 20 22 29 3B 0D 0A 20 20 70 72 69 6E 74    JMP ");..  print
016870:  6C 61 62 65 6C 28 6C 61 62 65 6C 29 3B 0D 0A 20    label(label);.. 
016880:  20 6E 6C 28 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F     nl();..  }..../
016890:  2A 0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72 20 6C    *..** test for l
0168A0:  65 73 73 20 74 68 61 6E 20 6F 72 20 65 71 75 61    ess than or equa
0168B0:  6C 20 74 6F 20 28 75 6E 73 69 67 6E 65 64 29 0D    l to (unsigned).
0168C0:  0A 2A 2F 0D 0A 75 6C 65 28 29 20 20 7B 66 66 63    .*/..ule()  {ffc
0168D0:  61 6C 6C 28 22 43 43 55 4C 45 23 23 22 29 3B 7D    all("CCULE##");}
0168E0:  0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 74 65 73 74 20    ..../*..** test 
0168F0:  66 6F 72 20 67 72 65 61 74 65 72 20 74 68 61 6E    for greater than
016900:  20 28 75 6E 73 69 67 6E 65 64 29 0D 0A 2A 2F 0D     (unsigned)..*/.
016910:  0A 75 67 74 28 29 20 20 7B 66 66 63 61 6C 6C 28    .ugt()  {ffcall(
016920:  22 43 43 55 47 54 23 23 22 29 3B 7D 0D 0A 0D 0A    "CCUGT##");}....
016930:  2F 2A 0D 0A 2A 2A 20 74 65 73 74 20 66 6F 72 20    /*..** test for 
016940:  67 72 65 61 74 65 72 20 74 68 61 6E 20 6F 72 20    greater than or 
016950:  65 71 75 61 6C 20 74 6F 20 28 75 6E 73 69 67 6E    equal to (unsign
016960:  65 64 29 0D 0A 2A 2F 0D 0A 75 67 65 28 29 20 20    ed)..*/..uge()  
016970:  7B 66 66 63 61 6C 6C 28 22 43 43 55 47 45 23 23    {ffcall("CCUGE##
016980:  22 29 3B 7D 0D 0A 0D 0A 23 69 66 64 65 66 20 4F    ");}....#ifdef O
016990:  50 54 49 4D 49 5A 45 0D 0A 70 65 65 70 68 6F 6C    PTIMIZE..peephol
0169A0:  65 28 70 74 72 29 20 63 68 61 72 20 2A 70 74 72    e(ptr) char *ptr
0169B0:  3B 20 7B 0D 0A 20 20 77 68 69 6C 65 28 2A 70 74    ; {..  while(*pt
0169C0:  72 29 20 7B 0D 0A 20 20 20 20 69 66 28 73 74 72    r) {..    if(str
0169D0:  65 71 28 70 74 72 2C 22 4C 58 49 20 48 2C 30 5C    eq(ptr,"LXI H,0\
0169E0:  6E 44 41 44 20 53 50 5C 6E 43 41 4C 4C 20 43 43    nDAD SP\nCALL CC
0169F0:  47 49 4E 54 23 23 22 29 29 20 7B 0D 0A 20 20 20    GINT##")) {..   
016A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
016A10:  13 00 01 00 02 09 52 E5 13 00 41 02 00 00 00 02    ......R...A.....
016A20:  13 00 46 02 00 00 00 02 13 00 42 02 00 00 00 02    ..F.......B.....
016A30:  13 00 47 02 00 00 00 02 13 00 43 02 00 00 00 02    ..G.......C.....
016A40:  13 00 48 02 00 00 00 02 13 00 44 02 00 00 00 02    ..H.......D.....
016A50:  13 00 49 02 00 00 00 02 13 00 45 02 00 00 00 02    ..I.......E.....
016A60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016A70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016A80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016A90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016B00:  0D 0A 0D 0A 70 70 33 28 70 70 29 20 69 6E 74 20    ....pp3(pp) int 
016B10:  28 2A 70 70 29 28 29 3B 20 7B 0D 0A 20 20 6F 6C    (*pp)(); {..  ol
016B20:  28 22 50 4F 50 20 42 22 29 3B 0D 0A 20 20 28 2A    ("POP B");..  (*
016B30:  70 70 29 28 29 3B 0D 0A 20 20 6F 6C 28 22 50 55    pp)();..  ol("PU
016B40:  53 48 20 42 22 29 3B 0D 0A 20 20 7D 0D 0A 23 65    SH B");..  }..#e
016B50:  6E 64 69 66 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ndif............
016B60:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
016B70:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
016B80:  3B 0D 0A 20 20 20 20 20 20 20 20 70 74 72 3D 70    ;..        ptr=p
016B90:  74 72 2B 32 37 3B 0D 0A 20 20 20 20 20 20 20 20    tr+27;..        
016BA0:  7D 0D 0A 20 20 20 20 20 20 65 6C 73 65 20 69 66    }..      else if
016BB0:  28 73 74 72 65 71 28 70 74 72 2C 20 22 50 4F 50    (streq(ptr, "POP
016BC0:  20 44 5C 6E 43 41 4C 4C 20 43 43 50 49 4E 54 23     D\nCALL CCPINT#
016BD0:  23 22 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20    #")) {..        
016BE0:  6F 6C 28 22 43 41 4C 4C 20 43 43 50 44 50 49 23    ol("CALL CCPDPI#
016BF0:  23 22 29 3B 0D 0A 20 20 20 20 20 20 20 20 70 74    #");..        pt
016C00:  72 3D 70 74 72 2B 32 30 3B 0D 0A 20 20 20 20 20    r=ptr+20;..     
016C10:  20 20 20 7D 0D 0A 20 20 20 20 20 20 2F 2A 20 61       }..      /* a
016C20:  64 64 69 74 69 6F 6E 61 6C 20 6F 70 74 69 6D 69    dditional optimi
016C30:  7A 69 6E 67 20 6C 6F 67 69 63 20 67 6F 65 73 20    zing logic goes 
016C40:  68 65 72 65 20 2A 2F 0D 0A 20 20 20 20 20 20 65    here */..      e
016C50:  6C 73 65 20 63 6F 75 74 28 2A 70 74 72 2B 2B 2C    lse cout(*ptr++,
016C60:  20 6F 75 74 70 75 74 29 3B 0D 0A 20 20 20 20 20     output);..     
016C70:  20 7D 0D 0A 20 20 20 20 65 6C 73 65 20 63 6F 75     }..    else cou
016C80:  74 28 2A 70 74 72 2B 2B 2C 20 6F 75 74 70 75 74    t(*ptr++, output
016C90:  29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A    );..    }..  }..
016CA0:  0D 0A 70 70 31 28 29 20 7B 0D 0A 20 20 6F 6C 28    ..pp1() {..  ol(
016CB0:  22 50 4F 50 20 48 22 29 3B 0D 0A 20 20 6F 6C 28    "POP H");..  ol(
016CC0:  22 50 55 53 48 20 48 22 29 3B 0D 0A 20 20 7D 0D    "PUSH H");..  }.
016CD0:  0A 0D 0A 70 70 32 28 29 20 7B 0D 0A 20 20 6F 6C    ...pp2() {..  ol
016CE0:  28 22 50 4F 50 20 44 22 29 3B 0D 0A 20 20 6F 6C    ("POP D");..  ol
016CF0:  28 22 50 55 53 48 20 44 22 29 3B 0D 0A 20 20 7D    ("PUSH D");..  }
016D00:  3B 20 20 20 2F 2A 20 74 72 75 65 20 69 66 20 63    ;   /* true if c
016D10:  75 72 72 65 6E 74 20 62 75 66 66 65 72 20 65 6E    urrent buffer en
016D20:  64 73 20 66 69 6C 65 20 2A 2F 0D 0A 2F 2A 0D 0A    ds file */../*..
016D30:  2A 2A 20 61 75 78 62 75 66 20 2D 2D 20 61 6C 6C    ** auxbuf -- all
016D40:  6F 63 61 74 65 20 61 6E 20 61 75 78 69 6C 69 61    ocate an auxilia
016D50:  72 79 20 69 6E 70 75 74 20 62 75 66 66 65 72 20    ry input buffer 
016D60:  66 6F 72 20 66 64 0D 0A 2A 2A 20 20 20 66 64 20    for fd..**   fd 
016D70:  3D 20 66 69 6C 65 20 64 65 73 63 72 69 70 74 6F    = file descripto
016D80:  72 20 6F 66 20 61 6E 20 6F 70 65 6E 20 66 69 6C    r of an open fil
016D90:  65 0D 0A 2A 2A 20 73 69 7A 65 20 3D 20 73 69 7A    e..** size = siz
016DA0:  65 20 6F 66 20 62 75 66 66 65 72 20 74 6F 20 62    e of buffer to b
016DB0:  65 20 61 6C 6C 6F 63 61 74 65 64 0D 0A 2A 2A 20    e allocated..** 
016DC0:  52 65 74 75 72 6E 73 20 4E 55 4C 4C 20 6F 6E 20    Returns NULL on 
016DD0:  73 75 63 63 65 73 73 2C 20 65 6C 73 65 20 45 52    success, else ER
016DE0:  52 2E 0D 0A 2A 2A 20 4E 6F 74 65 3A 20 55 6E 67    R...** Note: Ung
016DF0:  65 74 63 28 29 20 73 74 69 6C 6C 20 77 6F 72 6B    etc() still work
016E00:  73 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 41 20 32    s...**       A 2
016E10:  6E 64 20 63 61 6C 6C 20 72 65 74 75 72 6E 73 20    nd call returns 
016E20:  45 52 52 2C 20 62 75 74 20 68 61 73 20 6E 6F 20    ERR, but has no 
016E30:  65 66 66 65 63 74 2E 0D 0A 2A 2A 20 20 20 20 20    effect...**     
016E40:  20 20 49 66 20 66 64 20 69 73 20 61 20 64 65 76      If fd is a dev
016E50:  69 63 65 2C 20 62 75 66 66 65 72 20 69 73 20 61    ice, buffer is a
016E60:  6C 6C 6F 63 61 74 65 64 20 62 75 74 20 69 67 6E    llocated but ign
016E70:  6F 72 65 64 2E 0D 0A 2A 2A 20 20 20 20 20 20 20    ored...**       
016E80:  42 75 66 66 65 72 20 73 74 61 79 73 20 61 6C 6C    Buffer stays all
016E90:  6F 63 61 74 65 64 20 77 68 65 6E 20 66 64 20 69    ocated when fd i
016EA0:  73 20 63 6C 6F 73 65 64 2E 0D 0A 2A 2A 20 20 20    s closed...**   
016EB0:  20 20 20 20 44 6F 20 6E 6F 74 20 6D 69 78 20 72        Do not mix r
016EC0:  65 61 64 73 20 61 6E 64 20 77 72 69 74 65 73 20    eads and writes 
016ED0:  6F 72 20 70 65 72 66 6F 72 6D 20 73 65 65 6B 73    or perform seeks
016EE0:  20 6F 6E 20 66 64 2E 0D 0A 2A 2F 0D 0A 61 75 78     on fd...*/..aux
016EF0:  62 75 66 28 66 64 2C 20 73 69 7A 65 29 20 69 6E    buf(fd, size) in
016F00:  3E 3E 3E 20 41 42 53 2E 43 20 31 31 36 0D 0A 2F    >>> ABS.C 116../
016F10:  2A 0D 0A 2A 2A 20 61 62 73 20 2D 2D 20 72 65 74    *..** abs -- ret
016F20:  75 72 6E 73 20 61 62 73 6F 6C 75 74 65 20 76 61    urns absolute va
016F30:  6C 75 65 20 6F 66 20 6E 62 72 0D 0A 2A 2F 0D 0A    lue of nbr..*/..
016F40:  61 62 73 28 6E 62 72 29 20 20 69 6E 74 20 6E 62    abs(nbr)  int nb
016F50:  72 3B 20 7B 0D 0A 20 20 69 66 28 6E 62 72 20 3C    r; {..  if(nbr <
016F60:  20 30 29 20 72 65 74 75 72 6E 20 28 2D 6E 62 72     0) return (-nbr
016F70:  29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 6E 62    );..  return (nb
016F80:  72 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 41 54    r);..  }..>>> AT
016F90:  4F 49 2E 43 20 33 30 38 0D 0A 23 64 65 66 69 6E    OI.C 308..#defin
016FA0:  65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E    e NOCCARGC  /* n
016FB0:  6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74    o argument count
016FC0:  20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 2F 2A 0D     passing */../*.
016FD0:  0A 2A 2A 20 61 74 6F 69 28 73 29 20 2D 20 63 6F    .** atoi(s) - co
016FE0:  6E 76 65 72 74 20 73 20 74 6F 20 69 6E 74 65 67    nvert s to integ
016FF0:  65 72 2E 0D 0A 2A 2F 0D 0A 61 74 6F 69 28 73 29    er...*/..atoi(s)
017000:  20 63 68 61 72 20 2A 73 3B 20 7B 0D 0A 20 20 69     char *s; {..  i
017010:  6E 74 20 73 69 67 6E 2C 20 6E 3B 0D 0A 20 20 77    nt sign, n;..  w
017020:  68 69 6C 65 28 69 73 73 70 61 63 65 28 2A 73 29    hile(isspace(*s)
017030:  29 20 2B 2B 73 3B 0D 0A 20 20 73 69 67 6E 20 3D    ) ++s;..  sign =
017040:  20 31 3B 0D 0A 20 20 73 77 69 74 63 68 28 2A 73     1;..  switch(*s
017050:  29 20 7B 0D 0A 20 20 20 20 63 61 73 65 20 27 2D    ) {..    case '-
017060:  27 3A 20 73 69 67 6E 20 3D 20 2D 31 3B 0D 0A 20    ': sign = -1;.. 
017070:  20 20 20 63 61 73 65 20 27 2B 27 3A 20 2B 2B 73       case '+': ++s
017080:  3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 6E 20 3D 20    ;..    }..  n = 
017090:  30 3B 0D 0A 20 20 77 68 69 6C 65 28 69 73 64 69    0;..  while(isdi
0170A0:  67 69 74 28 2A 73 29 29 20 6E 20 3D 20 31 30 20    git(*s)) n = 10 
0170B0:  2A 20 6E 20 2B 20 2A 73 2B 2B 20 2D 20 27 30 27    * n + *s++ - '0'
0170C0:  3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 73 69 67    ;..  return (sig
0170D0:  6E 20 2A 20 6E 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E    n * n);..  }..>>
0170E0:  3E 20 41 54 4F 49 42 2E 43 20 34 38 34 0D 0A 23    > ATOIB.C 484..#
0170F0:  64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20    define NOCCARGC 
017100:  74 20 66 64 3B 20 63 68 61 72 20 2A 73 69 7A 65    t fd; char *size
017110:  3B 20 7B 20 20 20 2F 2A 20 66 61 6B 65 20 75 6E    ; {   /* fake un
017120:  73 69 67 6E 65 64 20 2A 2F 0D 0A 20 20 69 66 28    signed */..  if(
017130:  21 55 6D 6F 64 65 28 66 64 29 20 7C 7C 20 21 73    !Umode(fd) || !s
017140:  69 7A 65 20 7C 7C 20 61 76 61 69 6C 28 4E 4F 29    ize || avail(NO)
017150:  20 3C 20 73 69 7A 65 20 20 20 7C 7C 20 55 78 73     < size   || Uxs
017160:  69 7A 65 5B 66 64 5D 29 0D 0A 20 20 20 20 72 65    ize[fd])..    re
017170:  74 75 72 6E 20 28 45 52 52 29 3B 0D 0A 20 20 55    turn (ERR);..  U
017180:  78 61 64 64 72 5B 66 64 5D 20 3D 20 6D 61 6C 6C    xaddr[fd] = mall
017190:  6F 63 28 73 69 7A 65 29 3B 20 55 78 69 6E 69 74    oc(size); Uxinit
0171A0:  28 66 64 29 3B 0D 0A 20 20 55 61 75 78 69 6E 20    (fd);..  Uauxin 
0171B0:  3D 20 55 78 69 6E 69 74 3B 20 20 20 20 2F 2A 20    = Uxinit;    /* 
0171C0:  74 65 6C 6C 20 55 6F 70 65 6E 28 29 20 77 68 65    tell Uopen() whe
0171D0:  72 65 20 55 78 69 6E 69 74 28 29 20 69 73 20 2A    re Uxinit() is *
0171E0:  2F 0D 0A 20 20 55 61 75 78 72 64 20 3D 20 55 78    /..  Uauxrd = Ux
0171F0:  72 65 61 64 3B 20 20 20 20 2F 2A 20 74 65 6C 6C    read;    /* tell
017200:  20 55 72 65 61 64 28 29 20 77 68 65 72 65 20 55     Uread() where U
017210:  78 72 65 61 64 28 29 20 69 73 20 2A 2F 0D 0A 20    xread() is */.. 
017220:  20 55 61 75 78 77 74 20 3D 20 55 78 77 72 69 74     Uauxwt = Uxwrit
017230:  65 3B 20 20 20 2F 2A 20 74 65 6C 6C 20 55 77 72    e;   /* tell Uwr
017240:  69 74 65 28 29 20 77 68 65 72 65 20 55 78 77 72    ite() where Uxwr
017250:  69 74 65 28 29 20 69 73 20 2A 2F 0D 0A 20 20 55    ite() is */..  U
017260:  61 75 78 73 7A 20 3D 20 55 78 73 69 7A 65 3B 20    auxsz = Uxsize; 
017270:  20 20 20 2F 2A 20 74 65 6C 6C 20 62 6F 74 68 20       /* tell both 
017280:  77 68 65 72 65 20 55 78 73 69 7A 65 5B 5D 20 69    where Uxsize[] i
017290:  73 20 2A 2F 0D 0A 20 20 55 61 75 78 66 6C 20 3D    s */..  Uauxfl =
0172A0:  20 55 78 66 6C 75 73 68 3B 20 20 20 2F 2A 20 74     Uxflush;   /* t
0172B0:  65 6C 6C 20 66 66 6C 75 73 68 28 29 20 77 68 65    ell fflush() whe
0172C0:  72 65 20 55 78 66 6C 75 73 68 28 29 20 69 73 20    re Uxflush() is 
0172D0:  2A 2F 0D 0A 20 20 55 78 73 69 7A 65 5B 66 64 5D    */..  Uxsize[fd]
0172E0:  20 3D 20 73 69 7A 65 3B 20 20 2F 2A 20 74 65 6C     = size;  /* tel
0172F0:  6C 20 55 72 65 61 64 28 29 20 74 68 61 74 20 66    l Uread() that f
017300:  20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20     /* no argument 
017310:  63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F    count passing */
017320:  0D 0A 2F 2A 0D 0A 2A 2A 20 61 74 6F 69 62 28 73    ../*..** atoib(s
017330:  2C 62 29 20 2D 20 43 6F 6E 76 65 72 74 20 73 20    ,b) - Convert s 
017340:  74 6F 20 22 75 6E 73 69 67 6E 65 64 22 20 69 6E    to "unsigned" in
017350:  74 65 67 65 72 20 69 6E 20 62 61 73 65 20 62 2E    teger in base b.
017360:  0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20    ..**            
017370:  20 20 4E 4F 54 45 3A 20 54 68 69 73 20 69 73 20      NOTE: This is 
017380:  61 20 6E 6F 6E 2D 73 74 61 6E 64 61 72 64 20 66    a non-standard f
017390:  75 6E 63 74 69 6F 6E 2E 0D 0A 2A 2F 0D 0A 61 74    unction...*/..at
0173A0:  6F 69 62 28 73 2C 20 62 29 20 63 68 61 72 20 2A    oib(s, b) char *
0173B0:  73 3B 20 69 6E 74 20 62 3B 20 7B 0D 0A 20 20 69    s; int b; {..  i
0173C0:  6E 74 20 6E 2C 20 64 69 67 69 74 3B 0D 0A 20 20    nt n, digit;..  
0173D0:  6E 20 3D 20 30 3B 0D 0A 20 20 77 68 69 6C 65 28    n = 0;..  while(
0173E0:  69 73 73 70 61 63 65 28 2A 73 29 29 20 2B 2B 73    isspace(*s)) ++s
0173F0:  3B 0D 0A 20 20 77 68 69 6C 65 28 28 64 69 67 69    ;..  while((digi
017400:  74 20 3D 20 28 31 32 37 20 26 20 2A 73 2B 2B 29    t = (127 & *s++)
017410:  29 20 3E 3D 20 27 30 27 29 20 7B 0D 0A 20 20 20    ) >= '0') {..   
017420:  20 69 66 28 64 69 67 69 74 20 3E 3D 20 27 61 27     if(digit >= 'a'
017430:  29 20 20 20 20 20 20 64 69 67 69 74 20 2D 3D 20    )      digit -= 
017440:  38 37 3B 0D 0A 20 20 20 20 65 6C 73 65 20 69 66    87;..    else if
017450:  28 64 69 67 69 74 20 3E 3D 20 27 41 27 29 20 64    (digit >= 'A') d
017460:  69 67 69 74 20 2D 3D 20 35 35 3B 0D 0A 20 20 20    igit -= 55;..   
017470:  20 65 6C 73 65 20 20 20 20 20 20 20 20 20 20 20     else           
017480:  20 20 20 20 20 20 20 64 69 67 69 74 20 2D 3D 20           digit -= 
017490:  27 30 27 3B 0D 0A 20 20 20 20 69 66 28 64 69 67    '0';..    if(dig
0174A0:  69 74 20 3E 3D 20 62 29 20 62 72 65 61 6B 3B 0D    it >= b) break;.
0174B0:  0A 20 20 20 20 6E 20 3D 20 62 20 2A 20 6E 20 2B    .    n = b * n +
0174C0:  20 64 69 67 69 74 3B 0D 0A 20 20 20 20 7D 0D 0A     digit;..    }..
0174D0:  20 20 72 65 74 75 72 6E 20 28 6E 29 3B 0D 0A 20      return (n);.. 
0174E0:  20 7D 0D 0A 0D 0A 3E 3E 3E 20 41 55 58 42 55 46     }....>>> AUXBUF
0174F0:  2E 43 20 33 32 30 34 0D 0A 23 64 65 66 69 6E 65    .C 3204..#define
017500:  64 20 68 61 73 20 61 75 78 20 62 75 66 20 2A 2F    d has aux buf */
017510:  0D 0A 20 20 72 65 74 75 72 6E 20 28 4E 55 4C 4C    ..  return (NULL
017520:  29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A    );..  }..../*..*
017530:  2A 20 49 6E 69 74 69 61 6C 69 7A 65 20 61 75 78    * Initialize aux
017540:  20 62 75 66 66 65 72 20 63 6F 6E 74 72 6F 6C 73     buffer controls
017550:  0D 0A 2A 2F 0D 0A 55 78 69 6E 69 74 28 66 64 29    ..*/..Uxinit(fd)
017560:  20 69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 55 78     int fd; {..  Ux
017570:  6E 65 78 74 5B 66 64 5D 20 3D 20 55 78 65 6E 64    next[fd] = Uxend
017580:  5B 66 64 5D 20 3D 20 55 78 61 64 64 72 5B 66 64    [fd] = Uxaddr[fd
017590:  5D 3B 0D 0A 20 20 55 78 65 6F 66 5B 66 64 5D 20    ];..  Uxeof[fd] 
0175A0:  3D 20 4E 4F 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A    = NO;..  }..../*
0175B0:  0D 0A 2A 2A 20 46 69 6C 6C 20 62 75 66 66 65 72    ..** Fill buffer
0175C0:  20 69 66 20 6E 65 63 65 73 73 61 72 79 2C 20 61     if necessary, a
0175D0:  6E 64 20 72 65 74 75 72 6E 20 6E 65 78 74 20 62    nd return next b
0175E0:  79 74 65 2E 0D 0A 2A 2F 0D 0A 55 78 72 65 61 64    yte...*/..Uxread
0175F0:  28 66 64 29 20 69 6E 74 20 66 64 3B 20 7B 0D 0A    (fd) int fd; {..
017600:  20 20 63 68 61 72 20 2A 70 74 72 3B 0D 0A 20 20      char *ptr;..  
017610:  77 68 69 6C 65 28 59 45 53 29 20 7B 0D 0A 20 20    while(YES) {..  
017620:  20 20 70 74 72 20 3D 20 55 78 6E 65 78 74 5B 66      ptr = Uxnext[f
017630:  64 5D 3B 0D 0A 20 20 20 20 69 66 28 70 74 72 20    d];..    if(ptr 
017640:  3C 20 55 78 65 6E 64 5B 66 64 5D 29 20 7B 2B 2B    < Uxend[fd]) {++
017650:  55 78 6E 65 78 74 5B 66 64 5D 3B 20 72 65 74 75    Uxnext[fd]; retu
017660:  72 6E 20 28 2A 70 74 72 29 3B 7D 0D 0A 20 20 20    rn (*ptr);}..   
017670:  20 69 66 28 55 78 65 6F 66 5B 66 64 5D 29 20 7B     if(Uxeof[fd]) {
017680:  55 73 65 74 65 6F 66 28 66 64 29 3B 20 72 65 74    Useteof(fd); ret
017690:  75 72 6E 20 28 45 4F 46 29 3B 7D 0D 0A 20 20 20    urn (EOF);}..   
0176A0:  20 55 61 75 78 73 7A 20 3D 20 4E 55 4C 4C 3B 20     Uauxsz = NULL; 
0176B0:  20 20 20 20 20 20 20 20 20 2F 2A 20 61 76 6F 69             /* avoi
0176C0:  64 20 72 65 63 75 72 73 69 76 65 20 6C 6F 6F 70    d recursive loop
0176D0:  20 2A 2F 0D 0A 20 20 20 20 55 78 65 6E 64 5B 66     */..    Uxend[f
0176E0:  64 5D 20 3D 20 55 78 61 64 64 72 5B 66 64 5D 0D    d] = Uxaddr[fd].
0176F0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2B    .              +
017700:  20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E 6F     NOCCARGC  /* no
017710:  20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74 20     argument count 
017720:  70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63    passing */..#inc
017730:  6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A 23 69    lude stdio.h..#i
017740:  6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65 66 0D    nclude clib.def.
017750:  0A 65 78 74 65 72 6E 20 69 6E 74 20 2A 55 61 75    .extern int *Uau
017760:  78 73 7A 2C 20 55 61 75 78 69 6E 2C 20 55 61 75    xsz, Uauxin, Uau
017770:  78 72 64 2C 20 55 61 75 78 77 74 2C 20 55 61 75    xrd, Uauxwt, Uau
017780:  78 66 6C 2C 20 55 73 74 61 74 75 73 5B 5D 3B 0D    xfl, Ustatus[];.
017790:  0A 2F 2A 0D 0A 2A 2A 20 54 68 69 73 20 6D 6F 64    ./*..** This mod
0177A0:  75 6C 65 20 69 73 20 6C 6F 61 64 65 64 20 77 69    ule is loaded wi
0177B0:  74 68 20 61 20 70 72 6F 67 72 61 6D 20 6F 6E 6C    th a program onl
0177C0:  79 20 69 66 20 61 75 78 62 75 66 28 29 0D 0A 2A    y if auxbuf()..*
0177D0:  2A 20 69 73 20 63 61 6C 6C 65 64 2E 20 20 49 74    * is called.  It
0177E0:  20 6C 69 6E 6B 73 20 74 6F 20 55 6F 70 65 6E 28     links to Uopen(
0177F0:  29 2C 20 55 72 65 61 64 28 29 2C 20 55 77 72 69    ), Uread(), Uwri
017800:  74 65 28 29 2C 20 61 6E 64 0D 0A 2A 2A 20 66 66    te(), and..** ff
017810:  6C 75 73 68 28 29 20 74 68 72 6F 75 67 68 20 55    lush() through U
017820:  61 75 78 73 7A 2C 20 55 61 75 78 69 6E 2C 20 55    auxsz, Uauxin, U
017830:  61 75 78 72 64 2C 20 55 61 75 78 77 74 2C 20 61    auxrd, Uauxwt, a
017840:  6E 64 20 55 61 75 78 66 6C 0D 0A 2A 2A 20 69 6E    nd Uauxfl..** in
017850:  20 43 53 59 53 4C 49 42 2E 20 20 54 68 69 73 20     CSYSLIB.  This 
017860:  74 65 63 68 6E 69 71 75 65 20 72 65 64 75 63 65    technique reduce
017870:  73 20 74 68 65 20 6F 76 65 72 68 65 61 64 20 66    s the overhead f
017880:  6F 72 0D 0A 2A 2A 20 70 72 6F 67 72 61 6D 73 20    or..** programs 
017890:  77 68 69 63 68 20 64 6F 6E 27 74 20 75 73 65 20    which don't use 
0178A0:  61 75 78 69 6C 69 61 72 79 20 62 75 66 66 65 72    auxiliary buffer
0178B0:  69 6E 67 2E 20 20 50 72 65 73 75 6D 61 62 6C 79    ing.  Presumably
0178C0:  2C 0D 0A 2A 2A 20 69 66 20 74 68 65 72 65 20 69    ,..** if there i
0178D0:  73 20 65 6E 6F 75 67 68 20 6D 65 6D 6F 72 79 20    s enough memory 
0178E0:  66 6F 72 20 65 78 74 72 61 20 62 75 66 66 65 72    for extra buffer
0178F0:  69 6E 67 2C 20 74 68 65 72 65 20 69 73 0D 0A 2A    ing, there is..*
017900:  20 72 65 61 64 28 66 64 2C 20 55 78 6E 65 78 74     read(fd, Uxnext
017910:  5B 66 64 5D 3D 55 78 61 64 64 72 5B 66 64 5D 2C    [fd]=Uxaddr[fd],
017920:  20 55 78 73 69 7A 65 5B 66 64 5D 29 3B 0D 0A 20     Uxsize[fd]);.. 
017930:  20 20 20 55 61 75 78 73 7A 20 3D 20 55 78 73 69       Uauxsz = Uxsi
017940:  7A 65 3B 20 20 20 20 20 20 20 20 2F 2A 20 72 65    ze;        /* re
017950:  73 74 6F 72 65 20 55 61 75 78 73 7A 20 2A 2F 0D    store Uauxsz */.
017960:  0A 20 20 20 20 69 66 28 66 65 6F 66 28 66 64 29    .    if(feof(fd)
017970:  29 20 7B 55 78 65 6F 66 5B 66 64 5D 20 3D 20 59    ) {Uxeof[fd] = Y
017980:  45 53 3B 20 55 63 6C 72 65 6F 66 28 66 64 29 3B    ES; Uclreof(fd);
017990:  7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D    }..    }..  }...
0179A0:  0A 2F 2A 0D 0A 2A 2A 20 45 6D 70 74 79 20 62 75    ./*..** Empty bu
0179B0:  66 66 65 72 20 69 66 20 6E 65 63 65 73 73 61 72    ffer if necessar
0179C0:  79 2C 20 61 6E 64 20 73 74 6F 72 65 20 63 68 20    y, and store ch 
0179D0:  69 6E 20 62 75 66 66 65 72 2E 0D 0A 2A 2F 0D 0A    in buffer...*/..
0179E0:  55 78 77 72 69 74 65 28 63 68 2C 20 66 64 29 20    Uxwrite(ch, fd) 
0179F0:  69 6E 74 20 63 68 2C 20 66 64 3B 20 7B 0D 0A 20    int ch, fd; {.. 
017A00:  20 63 68 61 72 20 2A 70 74 72 3B 0D 0A 20 20 77     char *ptr;..  w
017A10:  68 69 6C 65 28 59 45 53 29 20 7B 0D 0A 20 20 20    hile(YES) {..   
017A20:  20 70 74 72 20 3D 20 55 78 6E 65 78 74 5B 66 64     ptr = Uxnext[fd
017A30:  5D 3B 0D 0A 20 20 20 20 69 66 28 70 74 72 20 3C    ];..    if(ptr <
017A40:  20 28 55 78 61 64 64 72 5B 66 64 5D 20 2B 20 55     (Uxaddr[fd] + U
017A50:  78 73 69 7A 65 5B 66 64 5D 29 29 0D 0A 20 20 20    xsize[fd]))..   
017A60:  20 20 20 7B 2A 70 74 72 20 3D 20 63 68 3B 20 2B       {*ptr = ch; +
017A70:  2B 55 78 6E 65 78 74 5B 66 64 5D 3B 20 72 65 74    +Uxnext[fd]; ret
017A80:  75 72 6E 20 28 63 68 29 3B 7D 0D 0A 20 20 20 20    urn (ch);}..    
017A90:  69 66 28 55 78 66 6C 75 73 68 28 66 64 29 29 20    if(Uxflush(fd)) 
017AA0:  72 65 74 75 72 6E 20 28 45 4F 46 29 3B 0D 0A 20    return (EOF);.. 
017AB0:  20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D       }..  }..../*.
017AC0:  0A 2A 2A 20 46 6C 75 73 68 20 61 75 78 20 62 75    .** Flush aux bu
017AD0:  66 66 65 72 20 74 6F 20 66 69 6C 65 2E 0D 0A 2A    ffer to file...*
017AE0:  2F 0D 0A 55 78 66 6C 75 73 68 28 66 64 29 20 69    /..Uxflush(fd) i
017AF0:  6E 74 20 66 64 3B 20 7B 0D 0A 20 20 69 6E 74 20    nt fd; {..  int 
017B00:  2A 20 72 6F 6F 6D 20 74 6F 20 73 70 61 72 65 20    * room to spare 
017B10:  66 6F 72 20 74 68 69 73 20 6F 76 65 72 68 65 61    for this overhea
017B20:  64 20 74 6F 6F 2E 20 20 41 20 62 75 67 20 69 6E    d too.  A bug in
017B30:  20 73 6F 6D 65 0D 0A 2A 2A 20 76 65 72 73 69 6F     some..** versio
017B40:  6E 73 20 6F 66 20 53 6D 61 6C 6C 2D 43 20 62 65    ns of Small-C be
017B50:  74 77 65 65 6E 20 32 2E 30 20 61 6E 64 20 32 2E    tween 2.0 and 2.
017B60:  31 20 6D 61 79 20 63 61 75 73 65 20 74 68 65 20    1 may cause the 
017B70:  63 61 6C 6C 73 0D 0A 2A 2A 20 74 6F 20 55 61 75    calls..** to Uau
017B80:  78 72 64 2C 20 55 61 75 78 77 74 2C 20 61 6E 64    xrd, Uauxwt, and
017B90:  20 55 61 75 78 66 6C 20 69 6E 20 55 72 65 61 64     Uauxfl in Uread
017BA0:  28 29 2C 20 55 77 72 69 74 65 28 29 2C 20 61 6E    (), Uwrite(), an
017BB0:  64 0D 0A 2A 2A 20 66 66 6C 75 73 68 28 29 2C 20    d..** fflush(), 
017BC0:  72 65 73 70 65 63 74 69 76 65 6C 79 2C 20 74 6F    respectively, to
017BD0:  20 70 72 6F 64 75 63 65 20 62 61 64 20 63 6F 64     produce bad cod
017BE0:  65 2E 20 20 54 68 65 20 63 75 72 72 65 6E 74 0D    e.  The current.
017BF0:  0A 2A 2A 20 63 6F 6D 70 69 6C 65 72 20 63 6F 72    .** compiler cor
017C00:  72 65 63 74 73 20 74 68 65 20 70 72 6F 62 6C 65    rects the proble
017C10:  6D 2E 0D 0A 2A 2F 0D 0A 69 6E 74 0D 0A 20 20 55    m...*/..int..  U
017C20:  78 73 69 7A 65 5B 4D 41 58 46 49 4C 45 53 5D 2C    xsize[MAXFILES],
017C30:  20 20 2F 2A 20 73 69 7A 65 20 6F 66 20 62 75 66      /* size of buf
017C40:  66 65 72 20 2A 2F 0D 0A 20 20 55 78 61 64 64 72    fer */..  Uxaddr
017C50:  5B 4D 41 58 46 49 4C 45 53 5D 2C 20 20 2F 2A 20    [MAXFILES],  /* 
017C60:  61 75 78 20 62 75 66 66 65 72 20 61 64 64 72 65    aux buffer addre
017C70:  73 73 20 2A 2F 0D 0A 20 20 55 78 6E 65 78 74 5B    ss */..  Uxnext[
017C80:  4D 41 58 46 49 4C 45 53 5D 2C 20 20 2F 2A 20 61    MAXFILES],  /* a
017C90:  64 64 72 65 73 73 20 6F 66 20 6E 65 78 74 20 62    ddress of next b
017CA0:  79 74 65 20 69 6E 20 62 75 66 66 65 72 20 2A 2F    yte in buffer */
017CB0:  0D 0A 20 20 55 78 65 6E 64 5B 4D 41 58 46 49 4C    ..  Uxend[MAXFIL
017CC0:  45 53 5D 2C 20 20 20 2F 2A 20 61 64 64 72 65 73    ES],   /* addres
017CD0:  73 20 6F 66 20 65 6E 64 2D 6F 66 2D 64 61 74 61    s of end-of-data
017CE0:  20 69 6E 20 62 75 66 66 65 72 20 2A 2F 0D 0A 20     in buffer */.. 
017CF0:  20 55 78 65 6F 66 5B 4D 41 58 46 49 4C 45 53 5D     Uxeof[MAXFILES]
017D00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
017D10:  14 00 01 00 02 09 52 E5 14 00 41 02 00 00 00 02    ......R...A.....
017D20:  14 00 46 02 00 00 00 02 14 00 42 02 00 00 00 02    ..F.......B.....
017D30:  14 00 47 02 00 00 00 02 14 00 43 02 00 00 00 02    ..G.......C.....
017D40:  14 00 48 02 00 00 00 02 14 00 44 02 00 00 00 02    ..H.......D.....
017D50:  14 00 49 02 00 00 00 02 14 00 45 02 00 00 00 02    ..I.......E.....
017D60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017D70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017D80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017D90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017E00:  69 2C 20 6A 3B 0D 0A 20 20 69 20 3D 20 55 78 6E    i, j;..  i = Uxn
017E10:  65 78 74 5B 66 64 5D 20 2D 20 55 78 61 64 64 72    ext[fd] - Uxaddr
017E20:  5B 66 64 5D 3B 0D 0A 20 20 55 61 75 78 73 7A 20    [fd];..  Uauxsz 
017E30:  3D 20 4E 55 4C 4C 3B 20 20 20 2F 2A 20 61 76 6F    = NULL;   /* avo
017E40:  69 64 20 72 65 63 75 72 73 69 76 65 20 6C 6F 6F    id recursive loo
017E50:  70 20 2A 2F 0D 0A 20 20 6A 20 3D 20 77 72 69 74    p */..  j = writ
017E60:  65 28 66 64 2C 20 55 78 6E 65 78 74 5B 66 64 5D    e(fd, Uxnext[fd]
017E70:  3D 55 78 61 64 64 72 5B 66 64 5D 2C 20 69 29 3B    =Uxaddr[fd], i);
017E80:  0D 0A 20 20 55 61 75 78 73 7A 20 3D 20 55 78 73    ..  Uauxsz = Uxs
017E90:  69 7A 65 3B 20 2F 2A 20 72 65 73 74 6F 72 65 20    ize; /* restore 
017EA0:  55 61 75 78 73 7A 20 2A 2F 0D 0A 20 20 69 66 28    Uauxsz */..  if(
017EB0:  69 20 21 3D 20 6A 29 20 72 65 74 75 72 6E 20 28    i != j) return (
017EC0:  45 4F 46 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20    EOF);..  return 
017ED0:  28 4E 55 4C 4C 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E    (NULL);..  }..>>
017EE0:  3E 20 41 56 41 49 4C 2E 43 20 33 39 39 0D 0A 23    > AVAIL.C 399..#
017EF0:  64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20    define NOCCARGC 
017F00:  20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20     /* no argument 
017F10:  63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F    count passing */
017F20:  0D 0A 65 78 74 65 72 6E 20 63 68 61 72 20 2A 55    ..extern char *U
017F30:  6D 65 6D 70 74 72 3B 0D 0A 2F 2A 0D 0A 2A 2A 20    memptr;../*..** 
017F40:  52 65 74 75 72 6E 20 74 68 65 20 6E 75 6D 62 65    Return the numbe
017F50:  72 20 6F 66 20 62 79 74 65 73 20 6F 66 20 61 76    r of bytes of av
017F60:  61 69 6C 61 62 6C 65 20 6D 65 6D 6F 72 79 2E 0D    ailable memory..
017F70:  0A 2A 2A 20 49 6E 20 63 61 73 65 20 6F 66 20 61    .** In case of a
017F80:  20 73 74 61 63 6B 20 6F 76 65 72 66 6C 6F 77 20     stack overflow 
017F90:  63 6F 6E 64 69 74 69 6F 6E 2C 20 69 66 20 27 61    condition, if 'a
017FA0:  62 6F 72 74 27 0D 0A 2A 2A 20 69 73 20 6E 6F 6E    bort'..** is non
017FB0:  2D 7A 65 72 6F 20 74 68 65 20 70 72 6F 67 72 61    -zero the progra
017FC0:  6D 20 61 62 6F 72 74 73 20 77 69 74 68 20 61 6E    m aborts with an
017FD0:  20 27 53 27 20 63 6C 75 65 2C 0D 0A 2A 2A 20 6F     'S' clue,..** o
017FE0:  74 68 65 72 77 69 73 65 20 7A 65 72 6F 20 69 73    therwise zero is
017FF0:  20 72 65 74 75 72 6E 65 64 2E 0D 0A 2A 2F 0D 0A     returned...*/..
018000:  20 20 20 42 0D 0A 3B 0D 0A 3B 53 54 4F 52 45 20       B..;..;STORE 
018010:  41 20 31 36 2D 42 49 54 20 49 4E 54 45 47 45 52    A 16-BIT INTEGER
018020:  20 49 4E 20 48 4C 20 41 54 20 54 48 45 20 41 44     IN HL AT THE AD
018030:  44 52 45 53 53 20 49 4E 20 44 45 0D 0A 43 43 50    DRESS IN DE..CCP
018040:  49 4E 54 3A 3A 0D 0A 50 49 4E 54 3A 20 20 20 4D    INT::..PINT:   M
018050:  4F 56 20 20 20 20 20 41 2C 4C 0D 0A 20 20 20 20    OV     A,L..    
018060:  20 20 20 20 53 54 41 58 20 20 20 20 44 0D 0A 20        STAX    D.. 
018070:  20 20 20 20 20 20 20 49 4E 58 20 20 20 20 20 44           INX     D
018080:  0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20    ..        MOV   
018090:  20 20 41 2C 48 0D 0A 20 20 20 20 20 20 20 20 53      A,H..        S
0180A0:  54 41 58 20 20 20 20 44 0D 0A 20 20 20 20 20 20    TAX    D..      
0180B0:  20 20 52 45 54 0D 0A 3B 0D 0A 3B 49 4E 43 4C 55      RET..;..;INCLU
0180C0:  53 49 56 45 20 22 4F 52 22 20 48 4C 20 41 4E 44    SIVE "OR" HL AND
0180D0:  20 44 45 20 49 4E 54 4F 20 48 4C 0D 0A 43 43 4F     DE INTO HL..CCO
0180E0:  52 3A 3A 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56    R::..        MOV
0180F0:  20 20 20 20 20 41 2C 4C 0D 0A 20 20 20 20 20 20         A,L..      
018100:  20 20 4F 52 41 20 20 20 20 20 45 0D 0A 20 20 20      ORA     E..   
018110:  20 20 20 20 20 4D 4F 56 20 20 20 20 20 4C 2C 41         MOV     L,A
018120:  0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20    ..        MOV   
018130:  20 20 41 2C 48 0D 0A 20 20 20 20 20 20 20 20 4F      A,H..        O
018140:  52 41 20 20 20 20 20 44 0D 0A 20 20 20 20 20 20    RA     D..      
018150:  20 20 4D 4F 56 20 20 20 20 20 48 2C 41 0D 0A 20      MOV     H,A.. 
018160:  20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B           RET..;..;
018170:  45 58 43 4C 55 53 49 56 45 20 22 4F 52 22 20 48    EXCLUSIVE "OR" H
018180:  4C 20 41 4E 44 20 44 45 20 49 4E 54 4F 20 48 4C    L AND DE INTO HL
018190:  0D 0A 43 43 58 4F 52 3A 3A 0D 0A 20 20 20 20 20    ..CCXOR::..     
0181A0:  20 20 20 4D 4F 56 20 20 20 20 20 41 2C 4C 0D 0A       MOV     A,L..
0181B0:  20 20 20 20 20 20 20 20 58 52 41 20 20 20 20 20            XRA     
0181C0:  45 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20    E..        MOV  
0181D0:  20 20 20 4C 2C 41 0D 0A 20 20 20 20 20 20 20 20       L,A..        
0181E0:  4D 4F 56 20 20 20 20 20 41 2C 48 0D 0A 20 20 20    MOV     A,H..   
0181F0:  20 20 20 20 20 58 52 41 20 20 20 20 20 44 0D 0A         XRA     D..
018200:  61 76 61 69 6C 28 61 62 6F 72 74 29 20 69 6E 74    avail(abort) int
018210:  20 61 62 6F 72 74 3B 20 7B 0D 0A 20 20 63 68 61     abort; {..  cha
018220:  72 20 78 3B 0D 0A 20 20 69 66 28 26 78 20 3C 20    r x;..  if(&x < 
018230:  55 6D 65 6D 70 74 72 29 20 7B 0D 0A 20 20 20 20    Umemptr) {..    
018240:  69 66 28 61 62 6F 72 74 29 20 65 78 69 74 28 27    if(abort) exit('
018250:  4D 27 29 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E    M');..    return
018260:  20 28 30 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20     (0);..    }..  
018270:  72 65 74 75 72 6E 20 28 26 78 20 2D 20 55 6D 65    return (&x - Ume
018280:  6D 70 74 72 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E    mptr);..  }....>
018290:  3E 3E 20 43 41 4C 4C 2E 4D 41 43 20 38 34 38 37    >> CALL.MAC 8487
0182A0:  0D 0A 3B 0D 0A 3B 2D 2D 2D 2D 2D 20 43 41 4C 4C    ..;..;----- CALL
0182B0:  3A 20 53 6D 61 6C 6C 2D 43 20 61 72 69 74 68 6D    : Small-C arithm
0182C0:  65 74 69 63 20 61 6E 64 20 6C 6F 67 69 63 61 6C    etic and logical
0182D0:  20 6C 69 62 72 61 72 79 0D 0A 3B 0D 0A 43 43 44     library..;..CCD
0182E0:  43 41 4C 3A 3A 0D 0A 20 20 20 20 20 20 20 20 50    CAL::..        P
0182F0:  43 48 4C 0D 0A 3B 0D 0A 43 43 44 44 47 43 3A 3A    CHL..;..CCDDGC::
018300:  0D 0A 20 20 20 20 20 20 20 20 44 41 44 20 20 20    ..        DAD   
018310:  20 20 44 0D 0A 20 20 20 20 20 20 20 20 4A 4D 50      D..        JMP
018320:  20 20 20 20 20 43 43 47 43 48 41 52 0D 0A 3B 0D         CCGCHAR..;.
018330:  0A 43 43 44 53 47 43 3A 3A 0D 0A 20 20 20 20 20    .CCDSGC::..     
018340:  20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20       INX     H..  
018350:  20 20 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D          INX     H.
018360:  0A 20 20 20 20 20 20 20 20 44 41 44 20 20 20 20    .        DAD    
018370:  20 53 50 0D 0A 3B 0D 0A 3B 46 45 54 43 48 20 41     SP..;..;FETCH A
018380:  20 53 49 4E 47 4C 45 20 42 59 54 45 20 46 52 4F     SINGLE BYTE FRO
018390:  4D 20 54 48 45 20 41 44 44 52 45 53 53 20 49 4E    M THE ADDRESS IN
0183A0:  20 48 4C 20 41 4E 44 20 53 49 47 4E 20 49 4E 54     HL AND SIGN INT
0183B0:  4F 20 48 4C 0D 0A 43 43 47 43 48 41 52 3A 3A 0D    O HL..CCGCHAR::.
0183C0:  0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20    .        MOV    
0183D0:  20 41 2C 4D 0D 0A 3B 0D 0A 3B 50 55 54 20 54 48     A,M..;..;PUT TH
0183E0:  45 20 41 43 43 55 4D 20 49 4E 54 4F 20 48 4C 20    E ACCUM INTO HL 
0183F0:  41 4E 44 20 53 49 47 4E 20 45 58 54 45 4E 44 20    AND SIGN EXTEND 
018400:  20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20            MOV     
018410:  48 2C 41 0D 0A 20 20 20 20 20 20 20 20 52 45 54    H,A..        RET
018420:  0D 0A 3B 0D 0A 3B 22 41 4E 44 22 20 48 4C 20 41    ..;..;"AND" HL A
018430:  4E 44 20 44 45 20 49 4E 54 4F 20 48 4C 0D 0A 43    ND DE INTO HL..C
018440:  43 41 4E 44 3A 3A 0D 0A 20 20 20 20 20 20 20 20    CAND::..        
018450:  4D 4F 56 20 20 20 20 20 41 2C 4C 0D 0A 20 20 20    MOV     A,L..   
018460:  20 20 20 20 20 41 4E 41 20 20 20 20 20 45 0D 0A         ANA     E..
018470:  20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20            MOV     
018480:  4C 2C 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56    L,A..        MOV
018490:  20 20 20 20 20 41 2C 48 0D 0A 20 20 20 20 20 20         A,H..      
0184A0:  20 20 41 4E 41 20 20 20 20 20 44 0D 0A 20 20 20      ANA     D..   
0184B0:  20 20 20 20 20 4D 4F 56 20 20 20 20 20 48 2C 41         MOV     H,A
0184C0:  0D 0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A 3B    ..        RET..;
0184D0:  0D 0A 3B 49 4E 20 41 4C 4C 20 54 48 45 20 46 4F    ..;IN ALL THE FO
0184E0:  4C 4C 4F 57 49 4E 47 20 43 4F 4D 50 41 52 45 20    LLOWING COMPARE 
0184F0:  52 4F 55 54 49 4E 45 53 2C 20 48 4C 20 49 53 20    ROUTINES, HL IS 
018500:  53 45 54 20 54 4F 20 31 20 49 46 20 54 48 45 0D    SET TO 1 IF THE.
018510:  0A 3B 20 20 43 4F 4E 44 49 54 49 4F 4E 20 49 53    .;  CONDITION IS
018520:  20 54 52 55 45 2C 20 4F 54 48 45 52 57 49 53 45     TRUE, OTHERWISE
018530:  20 49 54 20 49 53 20 53 45 54 20 54 4F 20 30 20     IT IS SET TO 0 
018540:  28 5A 45 52 4F 29 2E 0D 0A 3B 0D 0A 3B 54 45 53    (ZERO)...;..;TES
018550:  54 20 49 46 20 48 4C 20 3D 20 44 45 0D 0A 3B 0D    T IF HL = DE..;.
018560:  0A 43 43 45 51 3A 3A 0D 0A 20 20 20 20 20 20 20    .CCEQ::..       
018570:  20 43 41 4C 4C 20 20 20 20 43 43 43 4D 50 0D 0A     CALL    CCCMP..
018580:  20 20 20 20 20 20 20 20 52 5A 0D 0A 20 20 20 20            RZ..    
018590:  20 20 20 20 44 43 58 20 20 20 20 20 48 0D 0A 20        DCX     H.. 
0185A0:  20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B           RET..;..;
0185B0:  54 45 53 54 20 49 46 20 44 45 20 21 3D 20 48 4C    TEST IF DE != HL
0185C0:  0D 0A 43 43 4E 45 3A 3A 0D 0A 20 20 20 20 20 20    ..CCNE::..      
0185D0:  20 20 43 41 4C 4C 20 20 20 20 43 43 43 4D 50 0D      CALL    CCCMP.
0185E0:  0A 20 20 20 20 20 20 20 20 52 4E 5A 0D 0A 20 20    .        RNZ..  
0185F0:  20 20 20 20 20 20 44 43 58 20 20 20 20 20 48 0D          DCX     H.
018600:  54 48 52 4F 55 47 48 20 48 2E 0D 0A 43 43 41 52    THROUGH H...CCAR
018610:  47 43 3A 3A 0D 0A 43 43 53 58 54 3A 3A 0D 0A 20    GC::..CCSXT::.. 
018620:  20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 4C           MOV     L
018630:  2C 41 0D 0A 20 20 20 20 20 20 20 20 52 4C 43 0D    ,A..        RLC.
018640:  0A 20 20 20 20 20 20 20 20 53 42 42 20 20 20 20    .        SBB    
018650:  20 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20     A..        MOV 
018660:  20 20 20 20 48 2C 41 0D 0A 20 20 20 20 20 20 20        H,A..       
018670:  20 52 45 54 0D 0A 3B 0D 0A 43 43 44 44 47 49 3A     RET..;..CCDDGI:
018680:  3A 0D 0A 20 20 20 20 20 20 20 20 44 41 44 20 20    :..        DAD  
018690:  20 20 20 44 0D 0A 20 20 20 20 20 20 20 20 4A 4D       D..        JM
0186A0:  50 20 20 20 20 20 43 43 47 49 4E 54 0D 0A 3B 0D    P     CCGINT..;.
0186B0:  0A 43 43 44 53 47 49 3A 3A 0D 0A 20 20 20 20 20    .CCDSGI::..     
0186C0:  20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20       INX     H..  
0186D0:  20 20 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D          INX     H.
0186E0:  0A 20 20 20 20 20 20 20 20 44 41 44 20 20 20 20    .        DAD    
0186F0:  20 53 50 0D 0A 3B 0D 0A 3B 46 45 54 43 48 20 41     SP..;..;FETCH A
018700:  20 46 55 4C 4C 20 31 36 2D 42 49 54 20 49 4E 54     FULL 16-BIT INT
018710:  45 47 45 52 20 46 52 4F 4D 20 54 48 45 20 41 44    EGER FROM THE AD
018720:  44 52 45 53 53 20 49 4E 20 48 4C 20 49 4E 54 4F    DRESS IN HL INTO
018730:  20 48 4C 0D 0A 43 43 47 49 4E 54 3A 3A 0D 0A 20     HL..CCGINT::.. 
018740:  20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41           MOV     A
018750:  2C 4D 0D 0A 20 20 20 20 20 20 20 20 49 4E 58 20    ,M..        INX 
018760:  20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20 4D        H..        M
018770:  4F 56 20 20 20 20 20 48 2C 4D 0D 0A 20 20 20 20    OV     H,M..    
018780:  20 20 20 20 4D 4F 56 20 20 20 20 20 4C 2C 41 0D        MOV     L,A.
018790:  0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D    .        RET..;.
0187A0:  0A 43 43 44 45 43 43 3A 3A 0D 0A 20 20 20 20 20    .CCDECC::..     
0187B0:  20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20       INX     H..  
0187C0:  20 20 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D          INX     H.
0187D0:  0A 20 20 20 20 20 20 20 20 44 41 44 20 20 20 20    .        DAD    
0187E0:  20 53 50 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56     SP..        MOV
0187F0:  20 20 20 20 20 44 2C 48 0D 0A 20 20 20 20 20 20         D,H..      
018800:  0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D    .        RET..;.
018810:  0A 3B 54 45 53 54 20 49 46 20 44 45 20 3E 20 48    .;TEST IF DE > H
018820:  4C 20 28 53 49 47 4E 45 44 29 0D 0A 43 43 47 54    L (SIGNED)..CCGT
018830:  3A 3A 0D 0A 20 20 20 20 20 20 20 20 58 43 48 47    ::..        XCHG
018840:  0D 0A 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20    ..        CALL  
018850:  20 20 43 43 43 4D 50 0D 0A 20 20 20 20 20 20 20      CCCMP..       
018860:  20 52 43 0D 0A 20 20 20 20 20 20 20 20 44 43 58     RC..        DCX
018870:  20 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20         H..        
018880:  52 45 54 0D 0A 3B 0D 0A 3B 54 45 53 54 20 49 46    RET..;..;TEST IF
018890:  20 44 45 20 3C 3D 20 48 4C 20 28 53 49 47 4E 45     DE <= HL (SIGNE
0188A0:  44 29 0D 0A 43 43 4C 45 3A 3A 0D 0A 20 20 20 20    D)..CCLE::..    
0188B0:  20 20 20 20 43 41 4C 4C 20 20 20 20 43 43 43 4D        CALL    CCCM
0188C0:  50 0D 0A 20 20 20 20 20 20 20 20 52 5A 0D 0A 20    P..        RZ.. 
0188D0:  20 20 20 20 20 20 20 52 43 0D 0A 20 20 20 20 20           RC..     
0188E0:  20 20 20 44 43 58 20 20 20 20 20 48 0D 0A 20 20       DCX     H..  
0188F0:  20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 54          RET..;..;T
018900:  45 53 54 20 49 46 20 44 45 20 3E 3D 20 48 4C 20    EST IF DE >= HL 
018910:  28 53 49 47 4E 45 44 29 0D 0A 43 43 47 45 3A 3A    (SIGNED)..CCGE::
018920:  0D 0A 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20    ..        CALL  
018930:  20 20 43 43 43 4D 50 0D 0A 20 20 20 20 20 20 20      CCCMP..       
018940:  20 52 4E 43 0D 0A 20 20 20 20 20 20 20 20 44 43     RNC..        DC
018950:  58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20    X     H..       
018960:  20 52 45 54 0D 0A 3B 0D 0A 3B 54 45 53 54 20 49     RET..;..;TEST I
018970:  46 20 44 45 20 3C 20 48 4C 20 28 53 49 47 4E 45    F DE < HL (SIGNE
018980:  44 29 0D 0A 43 43 4C 54 3A 3A 0D 0A 20 20 20 20    D)..CCLT::..    
018990:  20 20 20 20 43 41 4C 4C 20 20 20 20 43 43 43 4D        CALL    CCCM
0189A0:  50 0D 0A 20 20 20 20 20 20 20 20 52 43 0D 0A 20    P..        RC.. 
0189B0:  20 20 20 20 20 20 20 44 43 58 20 20 20 20 20 48           DCX     H
0189C0:  0D 0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A 3B    ..        RET..;
0189D0:  0D 0A 3B 43 4F 4D 4D 4F 4E 20 52 4F 55 54 49 4E    ..;COMMON ROUTIN
0189E0:  45 20 54 4F 20 50 45 52 46 4F 52 4D 20 41 20 53    E TO PERFORM A S
0189F0:  49 47 4E 45 44 20 43 4F 4D 50 41 52 45 20 4F 46    IGNED COMPARE OF
018A00:  20 20 4D 4F 56 20 20 20 20 20 45 2C 4C 0D 0A 20      MOV     E,L.. 
018A10:  20 20 20 20 20 20 20 43 41 4C 4C 20 20 20 20 43           CALL    C
018A20:  43 47 43 48 41 52 0D 0A 20 20 20 20 20 20 20 20    CGCHAR..        
018A30:  44 43 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20    DCX     H..     
018A40:  20 20 20 4D 4F 56 20 20 20 20 20 41 2C 4C 0D 0A       MOV     A,L..
018A50:  20 20 20 20 20 20 20 20 53 54 41 58 20 20 20 20            STAX    
018A60:  44 0D 0A 20 20 20 20 20 20 20 20 52 45 54 0D 0A    D..        RET..
018A70:  3B 0D 0A 43 43 49 4E 43 43 3A 3A 0D 0A 20 20 20    ;..CCINCC::..   
018A80:  20 20 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A         INX     H..
018A90:  20 20 20 20 20 20 20 20 49 4E 58 20 20 20 20 20            INX     
018AA0:  48 0D 0A 20 20 20 20 20 20 20 20 44 41 44 20 20    H..        DAD  
018AB0:  20 20 20 53 50 0D 0A 20 20 20 20 20 20 20 20 4D       SP..        M
018AC0:  4F 56 20 20 20 20 20 44 2C 48 0D 0A 20 20 20 20    OV     D,H..    
018AD0:  20 20 20 20 4D 4F 56 20 20 20 20 20 45 2C 4C 0D        MOV     E,L.
018AE0:  0A 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20 20    .        CALL   
018AF0:  20 43 43 47 43 48 41 52 0D 0A 20 20 20 20 20 20     CCGCHAR..      
018B00:  20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20      INX     H..   
018B10:  20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 4C         MOV     A,L
018B20:  0D 0A 20 20 20 20 20 20 20 20 53 54 41 58 20 20    ..        STAX  
018B30:  20 20 44 0D 0A 20 20 20 20 20 20 20 20 52 45 54      D..        RET
018B40:  0D 0A 3B 0D 0A 43 44 50 44 50 43 3A 3A 0D 0A 20    ..;..CDPDPC::.. 
018B50:  20 20 20 20 20 20 20 44 41 44 20 20 20 20 20 44           DAD     D
018B60:  0D 0A 43 43 50 44 50 43 3A 3A 0D 0A 20 20 20 20    ..CCPDPC::..    
018B70:  20 20 20 20 50 4F 50 20 20 20 20 20 42 20 20 20        POP     B   
018B80:  20 20 20 20 3B 52 45 54 20 41 44 44 52 0D 0A 20        ;RET ADDR.. 
018B90:  20 20 20 20 20 20 20 50 4F 50 20 20 20 20 20 44           POP     D
018BA0:  0D 0A 20 20 20 20 20 20 20 20 50 55 53 48 20 20    ..        PUSH  
018BB0:  20 20 42 0D 0A 3B 0D 0A 3B 53 54 4F 52 45 20 41      B..;..;STORE A
018BC0:  20 53 49 4E 47 4C 45 20 42 59 54 45 20 46 52 4F     SINGLE BYTE FRO
018BD0:  4D 20 48 4C 20 41 54 20 54 48 45 20 41 44 44 52    M HL AT THE ADDR
018BE0:  45 53 53 20 49 4E 20 44 45 0D 0A 43 43 50 43 48    ESS IN DE..CCPCH
018BF0:  41 52 3A 3A 0D 0A 50 43 48 41 52 3A 20 20 4D 4F    AR::..PCHAR:  MO
018C00:  20 44 45 20 41 4E 44 20 48 4C 0D 0A 3B 20 54 48     DE AND HL..; TH
018C10:  49 53 20 52 4F 55 54 49 4E 45 20 50 45 52 46 4F    IS ROUTINE PERFO
018C20:  52 4D 53 20 44 45 20 2D 20 48 4C 20 41 4E 44 20    RMS DE - HL AND 
018C30:  53 45 54 53 20 54 48 45 20 43 4F 4E 44 49 54 49    SETS THE CONDITI
018C40:  4F 4E 53 3A 0D 0A 3B 20 43 41 52 52 59 20 52 45    ONS:..; CARRY RE
018C50:  46 4C 45 43 54 53 20 53 49 47 4E 20 4F 46 20 44    FLECTS SIGN OF D
018C60:  49 46 46 45 52 45 4E 43 45 20 28 53 45 54 20 4D    IFFERENCE (SET M
018C70:  45 41 4E 53 20 44 45 20 3C 20 48 4C 29 0D 0A 3B    EANS DE < HL)..;
018C80:  20 5A 45 52 4F 2F 4E 4F 4E 2D 5A 45 52 4F 20 53     ZERO/NON-ZERO S
018C90:  45 54 20 41 43 43 4F 52 44 49 4E 47 20 54 4F 20    ET ACCORDING TO 
018CA0:  45 51 55 41 4C 49 54 59 2E 0D 0A 43 43 43 4D 50    EQUALITY...CCCMP
018CB0:  3A 3A 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20    ::..        MOV 
018CC0:  20 20 20 20 41 2C 48 20 20 20 20 20 3B 49 4E 56        A,H     ;INV
018CD0:  45 52 54 20 53 49 47 4E 20 4F 46 20 48 4C 0D 0A    ERT SIGN OF HL..
018CE0:  20 20 20 20 20 20 20 20 58 52 49 20 20 20 20 20            XRI     
018CF0:  38 30 48 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56    80H..        MOV
018D00:  20 20 20 20 20 48 2C 41 0D 0A 20 20 20 20 20 20         H,A..      
018D10:  20 20 4D 4F 56 20 20 20 20 20 41 2C 44 20 20 20      MOV     A,D   
018D20:  20 20 3B 49 4E 56 45 52 54 20 53 49 47 4E 20 4F      ;INVERT SIGN O
018D30:  46 20 44 45 0D 0A 20 20 20 20 20 20 20 20 58 52    F DE..        XR
018D40:  49 20 20 20 20 20 38 30 48 0D 0A 20 20 20 20 20    I     80H..     
018D50:  20 20 20 43 4D 50 20 20 20 20 20 48 20 20 20 20       CMP     H    
018D60:  20 20 20 3B 43 4F 4D 50 41 52 45 20 4D 53 42 53       ;COMPARE MSBS
018D70:  0D 0A 20 20 20 20 20 20 20 20 4A 4E 5A 20 20 20    ..        JNZ   
018D80:  20 20 43 43 43 4D 50 31 20 20 3B 44 4F 4E 45 20      CCCMP1  ;DONE 
018D90:  49 46 20 4E 45 51 0D 0A 20 20 20 20 20 20 20 20    IF NEQ..        
018DA0:  4D 4F 56 20 20 20 20 20 41 2C 45 20 20 20 20 20    MOV     A,E     
018DB0:  3B 43 4F 4D 50 41 52 45 20 4C 53 42 53 0D 0A 20    ;COMPARE LSBS.. 
018DC0:  20 20 20 20 20 20 20 43 4D 50 20 20 20 20 20 4C           CMP     L
018DD0:  0D 0A 43 43 43 4D 50 31 3A 20 4C 58 49 20 48 2C    ..CCCMP1: LXI H,
018DE0:  31 20 20 20 20 20 20 20 20 20 3B 50 52 45 53 45    1         ;PRESE
018DF0:  54 20 54 52 55 45 20 43 4F 4E 44 0D 0A 20 20 20    T TRUE COND..   
018E00:  56 20 20 20 20 20 41 2C 4C 0D 0A 20 20 20 20 20    V     A,L..     
018E10:  20 20 20 53 54 41 58 20 20 20 20 44 0D 0A 20 20       STAX    D..  
018E20:  20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 43 43          RET..;..CC
018E30:  44 45 43 49 3A 3A 0D 0A 20 20 20 20 20 20 20 20    DECI::..        
018E40:  49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20    INX     H..     
018E50:  20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20       INX     H..  
018E60:  20 20 20 20 20 20 44 41 44 20 20 20 20 20 53 50          DAD     SP
018E70:  0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20    ..        MOV   
018E80:  20 20 44 2C 48 0D 0A 20 20 20 20 20 20 20 20 4D      D,H..        M
018E90:  4F 56 20 20 20 20 20 45 2C 4C 0D 0A 20 20 20 20    OV     E,L..    
018EA0:  20 20 20 20 43 41 4C 4C 20 20 20 20 43 43 47 49        CALL    CCGI
018EB0:  4E 54 0D 0A 20 20 20 20 20 20 20 20 44 43 58 20    NT..        DCX 
018EC0:  20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20 4A        H..        J
018ED0:  4D 50 20 20 20 20 20 43 43 50 49 4E 54 0D 0A 3B    MP     CCPINT..;
018EE0:  0D 0A 43 43 49 4E 43 49 3A 3A 0D 0A 20 20 20 20    ..CCINCI::..    
018EF0:  20 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20        INX     H.. 
018F00:  20 20 20 20 20 20 20 49 4E 58 20 20 20 20 20 48           INX     H
018F10:  0D 0A 20 20 20 20 20 20 20 20 44 41 44 20 20 20    ..        DAD   
018F20:  20 20 53 50 0D 0A 20 20 20 20 20 20 20 20 4D 4F      SP..        MO
018F30:  56 20 20 20 20 20 44 2C 48 0D 0A 20 20 20 20 20    V     D,H..     
018F40:  20 20 20 4D 4F 56 20 20 20 20 20 45 2C 4C 0D 0A       MOV     E,L..
018F50:  20 20 20 20 20 20 20 20 43 41 4C 4C 20 20 20 20            CALL    
018F60:  43 43 47 49 4E 54 0D 0A 20 20 20 20 20 20 20 20    CCGINT..        
018F70:  49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 20 20    INX     H..     
018F80:  20 20 20 4A 4D 50 20 20 20 20 20 43 43 50 49 4E       JMP     CCPIN
018F90:  54 0D 0A 3B 0D 0A 43 44 50 44 50 49 3A 3A 0D 0A    T..;..CDPDPI::..
018FA0:  20 20 20 20 20 20 20 20 44 41 44 20 20 20 20 20            DAD     
018FB0:  44 0D 0A 43 43 50 44 50 49 3A 3A 0D 0A 20 20 20    D..CCPDPI::..   
018FC0:  20 20 20 20 20 50 4F 50 20 20 20 20 20 42 20 20         POP     B  
018FD0:  20 20 20 20 20 3B 52 45 54 20 41 44 44 52 0D 0A         ;RET ADDR..
018FE0:  20 20 20 20 20 20 20 20 50 4F 50 20 20 20 20 20            POP     
018FF0:  44 0D 0A 20 20 20 20 20 20 20 20 50 55 53 48 20    D..        PUSH 
019000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
019010:  15 00 01 00 02 09 52 E5 15 00 41 02 00 00 00 02    ......R...A.....
019020:  15 00 46 02 00 00 00 02 15 00 42 02 00 00 00 02    ..F.......B.....
019030:  15 00 47 02 00 00 00 02 15 00 43 02 00 00 00 02    ..G.......C.....
019040:  15 00 48 02 00 00 00 02 15 00 44 02 00 00 00 02    ..H.......D.....
019050:  15 00 49 02 00 00 00 02 15 00 45 02 00 00 00 02    ..I.......E.....
019060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
019070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
019080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
019090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0190F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
019100:  20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 54 45         RET..;..;TE
019110:  53 54 20 49 46 20 44 45 20 3E 3D 20 48 4C 20 28    ST IF DE >= HL (
019120:  55 4E 53 49 47 4E 45 44 29 0D 0A 43 43 55 47 45    UNSIGNED)..CCUGE
019130:  3A 3A 0D 0A 20 20 20 20 20 20 20 20 43 41 4C 4C    ::..        CALL
019140:  20 20 20 20 43 43 55 43 4D 50 0D 0A 20 20 20 20        CCUCMP..    
019150:  20 20 20 20 52 4E 43 0D 0A 20 20 20 20 20 20 20        RNC..       
019160:  20 44 43 58 20 20 20 20 20 48 0D 0A 20 20 20 20     DCX     H..    
019170:  20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 54 45 53        RET..;..;TES
019180:  54 20 49 46 20 44 45 20 3C 20 48 4C 20 28 55 4E    T IF DE < HL (UN
019190:  53 49 47 4E 45 44 29 0D 0A 43 43 55 4C 54 3A 3A    SIGNED)..CCULT::
0191A0:  0D 0A 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20    ..        CALL  
0191B0:  20 20 43 43 55 43 4D 50 0D 0A 20 20 20 20 20 20      CCUCMP..      
0191C0:  20 20 52 43 0D 0A 20 20 20 20 20 20 20 20 44 43      RC..        DC
0191D0:  58 20 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20    X     H..       
0191E0:  20 52 45 54 0D 0A 3B 0D 0A 3B 54 45 53 54 20 49     RET..;..;TEST I
0191F0:  46 20 44 45 20 3E 20 48 4C 20 28 55 4E 53 49 47    F DE > HL (UNSIG
019200:  4E 45 44 29 0D 0A 43 43 55 47 54 3A 3A 0D 0A 20    NED)..CCUGT::.. 
019210:  20 20 20 20 20 20 20 58 43 48 47 0D 0A 20 20 20           XCHG..   
019220:  20 20 20 20 20 43 41 4C 4C 20 20 20 20 43 43 55         CALL    CCU
019230:  43 4D 50 0D 0A 20 20 20 20 20 20 20 20 52 43 0D    CMP..        RC.
019240:  0A 20 20 20 20 20 20 20 20 44 43 58 20 20 20 20    .        DCX    
019250:  20 48 0D 0A 20 20 20 20 20 20 20 20 52 45 54 0D     H..        RET.
019260:  0A 3B 0D 0A 3B 54 45 53 54 20 49 46 20 44 45 20    .;..;TEST IF DE 
019270:  3C 3D 20 48 4C 20 28 55 4E 53 49 47 4E 45 44 29    <= HL (UNSIGNED)
019280:  0D 0A 43 43 55 4C 45 3A 3A 0D 0A 20 20 20 20 20    ..CCULE::..     
019290:  20 20 20 43 41 4C 4C 20 20 20 20 43 43 55 43 4D       CALL    CCUCM
0192A0:  50 0D 0A 20 20 20 20 20 20 20 20 52 5A 0D 0A 20    P..        RZ.. 
0192B0:  20 20 20 20 20 20 20 52 43 0D 0A 20 20 20 20 20           RC..     
0192C0:  20 20 20 44 43 58 20 20 20 20 20 48 0D 0A 20 20       DCX     H..  
0192D0:  20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 43          RET..;..;C
0192E0:  4F 4D 4D 4F 4E 20 52 4F 55 54 49 4E 45 20 54 4F    OMMON ROUTINE TO
0192F0:  20 50 45 52 46 4F 52 4D 20 55 4E 53 49 47 4E 45     PERFORM UNSIGNE
019300:  2C 30 0D 0A 43 43 44 49 56 31 3A 20 44 41 44 20    ,0..CCDIV1: DAD 
019310:  20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20 43        H..        C
019320:  41 4C 4C 20 20 20 20 43 43 52 44 45 4C 0D 0A 20    ALL    CCRDEL.. 
019330:  20 20 20 20 20 20 20 4A 5A 20 20 20 20 20 20 43           JZ      C
019340:  43 44 49 56 32 0D 0A 20 20 20 20 20 20 20 20 43    CDIV2..        C
019350:  41 4C 4C 20 20 20 20 43 43 43 4D 50 42 43 44 45    ALL    CCCMPBCDE
019360:  0D 0A 20 20 20 20 20 20 20 20 4A 4D 20 20 20 20    ..        JM    
019370:  20 20 43 43 44 49 56 32 0D 0A 20 20 20 20 20 20      CCDIV2..      
019380:  20 20 4D 4F 56 20 20 20 20 20 41 2C 4C 0D 0A 20      MOV     A,L.. 
019390:  20 20 20 20 20 20 20 4F 52 49 20 20 20 20 20 31           ORI     1
0193A0:  0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20    ..        MOV   
0193B0:  20 20 4C 2C 41 0D 0A 20 20 20 20 20 20 20 20 4D      L,A..        M
0193C0:  4F 56 20 20 20 20 20 41 2C 45 0D 0A 20 20 20 20    OV     A,E..    
0193D0:  20 20 20 20 53 55 42 20 20 20 20 20 43 0D 0A 20        SUB     C.. 
0193E0:  20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 45           MOV     E
0193F0:  2C 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20    ,A..        MOV 
019400:  20 20 20 20 41 2C 44 0D 0A 20 20 20 20 20 20 20        A,D..       
019410:  20 53 42 42 20 20 20 20 20 42 0D 0A 20 20 20 20     SBB     B..    
019420:  20 20 20 20 4D 4F 56 20 20 20 20 20 44 2C 41 0D        MOV     D,A.
019430:  0A 43 43 44 49 56 32 3A 20 50 4F 50 20 20 20 20    .CCDIV2: POP    
019440:  20 50 53 57 0D 0A 20 20 20 20 20 20 20 20 44 43     PSW..        DC
019450:  52 20 20 20 20 20 41 0D 0A 20 20 20 20 20 20 20    R     A..       
019460:  20 4A 5A 20 20 20 20 20 20 43 43 44 49 56 33 0D     JZ      CCDIV3.
019470:  0A 20 20 20 20 20 20 20 20 50 55 53 48 20 20 20    .        PUSH   
019480:  20 50 53 57 0D 0A 20 20 20 20 20 20 20 20 4A 4D     PSW..        JM
019490:  50 20 20 20 20 20 43 43 44 49 56 31 0D 0A 43 43    P     CCDIV1..CC
0194A0:  44 49 56 33 3A 20 50 4F 50 20 20 20 20 20 50 53    DIV3: POP     PS
0194B0:  57 0D 0A 20 20 20 20 20 20 20 20 52 50 0D 0A 20    W..        RP.. 
0194C0:  20 20 20 20 20 20 20 43 41 4C 4C 20 20 20 20 43           CALL    C
0194D0:  43 44 45 4E 45 47 0D 0A 20 20 20 20 20 20 20 20    CDENEG..        
0194E0:  58 43 48 47 0D 0A 20 20 20 20 20 20 20 20 43 41    XCHG..        CA
0194F0:  4C 4C 20 20 20 20 43 43 44 45 4E 45 47 0D 0A 20    LL    CCDENEG.. 
019500:  44 20 43 4F 4D 50 41 52 45 0D 0A 3B 20 43 41 52    D COMPARE..; CAR
019510:  52 59 20 53 45 54 20 49 46 20 44 45 20 3C 20 48    RY SET IF DE < H
019520:  4C 0D 0A 3B 20 5A 45 52 4F 2F 4E 4F 4E 5A 45 52    L..; ZERO/NONZER
019530:  4F 20 53 45 54 20 41 43 43 4F 52 44 49 4E 47 4C    O SET ACCORDINGL
019540:  59 0D 0A 43 43 55 43 4D 50 3A 3A 0D 0A 20 20 20    Y..CCUCMP::..   
019550:  20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 44         MOV     A,D
019560:  0D 0A 20 20 20 20 20 20 20 20 43 4D 50 20 20 20    ..        CMP   
019570:  20 20 48 0D 0A 20 20 20 20 20 20 20 20 4A 4E 5A      H..        JNZ
019580:  20 20 20 20 20 55 43 4D 50 31 0D 0A 20 20 20 20         UCMP1..    
019590:  20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 45 0D        MOV     A,E.
0195A0:  0A 20 20 20 20 20 20 20 20 43 4D 50 20 20 20 20    .        CMP    
0195B0:  20 4C 0D 0A 55 43 4D 50 31 3A 20 20 4C 58 49 20     L..UCMP1:  LXI 
0195C0:  20 20 20 20 48 2C 31 0D 0A 20 20 20 20 20 20 20        H,1..       
0195D0:  20 52 45 54 0D 0A 3B 0D 0A 3B 53 48 49 46 54 20     RET..;..;SHIFT 
0195E0:  44 45 20 41 52 49 54 48 4D 45 54 49 43 41 4C 4C    DE ARITHMETICALL
0195F0:  59 20 52 49 47 48 54 20 42 59 20 48 4C 20 41 4E    Y RIGHT BY HL AN
019600:  44 20 52 45 54 55 52 4E 20 49 4E 20 48 4C 0D 0A    D RETURN IN HL..
019610:  43 43 41 53 52 3A 3A 0D 0A 20 20 20 20 20 20 20    CCASR::..       
019620:  20 58 43 48 47 0D 0A 20 20 20 20 20 20 20 20 44     XCHG..        D
019630:  43 52 20 20 20 20 20 45 0D 0A 20 20 20 20 20 20    CR     E..      
019640:  20 20 52 4D 0D 0A 20 20 20 20 20 20 20 20 4D 4F      RM..        MO
019650:  56 20 20 20 20 20 41 2C 48 0D 0A 20 20 20 20 20    V     A,H..     
019660:  20 20 20 52 41 4C 0D 0A 20 20 20 20 20 20 20 20       RAL..        
019670:  4D 4F 56 20 20 20 20 20 41 2C 48 0D 0A 20 20 20    MOV     A,H..   
019680:  20 20 20 20 20 52 41 52 0D 0A 20 20 20 20 20 20         RAR..      
019690:  20 20 4D 4F 56 20 20 20 20 20 48 2C 41 0D 0A 20      MOV     H,A.. 
0196A0:  20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41           MOV     A
0196B0:  2C 4C 0D 0A 20 20 20 20 20 20 20 20 52 41 52 0D    ,L..        RAR.
0196C0:  0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20    .        MOV    
0196D0:  20 4C 2C 41 0D 0A 20 20 20 20 20 20 20 20 4A 4D     L,A..        JM
0196E0:  50 20 20 20 20 20 43 43 41 53 52 2B 31 0D 0A 3B    P     CCASR+1..;
0196F0:  0D 0A 3B 53 48 49 46 54 20 44 45 20 41 52 49 54    ..;SHIFT DE ARIT
019700:  20 20 20 20 20 20 20 58 43 48 47 0D 0A 20 20 20           XCHG..   
019710:  20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 4E 45         RET..;..;NE
019720:  47 41 54 45 20 54 48 45 20 49 4E 54 45 47 45 52    GATE THE INTEGER
019730:  20 49 4E 20 44 45 20 28 49 4E 54 45 52 4E 41 4C     IN DE (INTERNAL
019740:  20 52 4F 55 54 49 4E 45 29 0D 0A 43 43 44 45 4E     ROUTINE)..CCDEN
019750:  45 47 3A 20 4D 4F 56 20 20 20 20 41 2C 44 0D 0A    EG: MOV    A,D..
019760:  20 20 20 20 20 20 20 20 43 4D 41 0D 0A 20 20 20            CMA..   
019770:  20 20 20 20 20 4D 4F 56 20 20 20 20 20 44 2C 41         MOV     D,A
019780:  0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20    ..        MOV   
019790:  20 20 41 2C 45 0D 0A 20 20 20 20 20 20 20 20 43      A,E..        C
0197A0:  4D 41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20    MA..        MOV 
0197B0:  20 20 20 20 45 2C 41 0D 0A 20 20 20 20 20 20 20        E,A..       
0197C0:  20 49 4E 58 20 20 20 20 20 44 0D 0A 20 20 20 20     INX     D..    
0197D0:  20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 4E 45 47        RET..;..;NEG
0197E0:  41 54 45 20 54 48 45 20 49 4E 54 45 47 45 52 20    ATE THE INTEGER 
0197F0:  49 4E 20 42 43 20 28 49 4E 54 45 52 4E 41 4C 20    IN BC (INTERNAL 
019800:  52 4F 55 54 49 4E 45 29 0D 0A 43 43 42 43 4E 45    ROUTINE)..CCBCNE
019810:  47 3A 20 4D 4F 56 20 20 20 20 41 2C 42 0D 0A 20    G: MOV    A,B.. 
019820:  20 20 20 20 20 20 20 43 4D 41 0D 0A 20 20 20 20           CMA..    
019830:  20 20 20 20 4D 4F 56 20 20 20 20 20 42 2C 41 0D        MOV     B,A.
019840:  0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20    .        MOV    
019850:  20 41 2C 43 0D 0A 20 20 20 20 20 20 20 20 43 4D     A,C..        CM
019860:  41 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20    A..        MOV  
019870:  20 20 20 43 2C 41 0D 0A 20 20 20 20 20 20 20 20       C,A..        
019880:  49 4E 58 20 20 20 20 20 42 0D 0A 20 20 20 20 20    INX     B..     
019890:  20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 52 4F 54 41       RET..;..;ROTA
0198A0:  54 45 20 44 45 20 4C 45 46 54 20 4F 4E 45 20 42    TE DE LEFT ONE B
0198B0:  49 54 20 28 49 4E 54 45 52 4E 41 4C 20 52 4F 55    IT (INTERNAL ROU
0198C0:  54 49 4E 45 29 0D 0A 43 43 52 44 45 4C 3A 20 4D    TINE)..CCRDEL: M
0198D0:  4F 56 20 20 20 20 20 41 2C 45 0D 0A 20 20 20 20    OV     A,E..    
0198E0:  20 20 20 20 52 41 4C 0D 0A 20 20 20 20 20 20 20        RAL..       
0198F0:  20 4D 4F 56 20 20 20 20 20 45 2C 41 0D 0A 20 20     MOV     E,A..  
019900:  48 4D 45 54 49 43 41 4C 4C 59 20 4C 45 46 54 20    HMETICALLY LEFT 
019910:  42 59 20 48 4C 20 41 4E 44 20 52 45 54 55 52 4E    BY HL AND RETURN
019920:  20 49 4E 20 48 4C 0D 0A 43 43 41 53 4C 3A 3A 0D     IN HL..CCASL::.
019930:  0A 20 20 20 20 20 20 20 20 58 43 48 47 0D 0A 20    .        XCHG.. 
019940:  20 20 20 20 20 20 20 44 43 52 20 20 20 20 20 45           DCR     E
019950:  0D 0A 20 20 20 20 20 20 20 20 52 4D 0D 0A 20 20    ..        RM..  
019960:  20 20 20 20 20 20 44 41 44 20 20 20 20 20 48 0D          DAD     H.
019970:  0A 20 20 20 20 20 20 20 20 4A 4D 50 20 20 20 20    .        JMP    
019980:  20 43 43 41 53 4C 2B 31 0D 0A 3B 0D 0A 3B 53 55     CCASL+1..;..;SU
019990:  42 54 52 41 43 54 20 48 4C 20 46 52 4F 4D 20 44    BTRACT HL FROM D
0199A0:  45 20 41 4E 44 20 52 45 54 55 52 4E 20 49 4E 20    E AND RETURN IN 
0199B0:  48 4C 0D 0A 43 43 53 55 42 3A 3A 0D 0A 20 20 20    HL..CCSUB::..   
0199C0:  20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 45         MOV     A,E
0199D0:  0D 0A 20 20 20 20 20 20 20 20 53 55 42 20 20 20    ..        SUB   
0199E0:  20 20 4C 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56      L..        MOV
0199F0:  20 20 20 20 20 4C 2C 41 0D 0A 20 20 20 20 20 20         L,A..      
019A00:  20 20 4D 4F 56 20 20 20 20 20 41 2C 44 0D 0A 20      MOV     A,D.. 
019A10:  20 20 20 20 20 20 20 53 42 42 20 20 20 20 20 48           SBB     H
019A20:  0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20    ..        MOV   
019A30:  20 20 48 2C 41 0D 0A 20 20 20 20 20 20 20 20 52      H,A..        R
019A40:  45 54 0D 0A 3B 0D 0A 3B 46 4F 52 4D 20 54 48 45    ET..;..;FORM THE
019A50:  20 54 57 4F 27 53 20 43 4F 4D 50 4C 45 4D 45 4E     TWO'S COMPLEMEN
019A60:  54 20 4F 46 20 48 4C 0D 0A 43 43 4E 45 47 3A 3A    T OF HL..CCNEG::
019A70:  0D 0A 20 20 20 20 20 20 20 20 43 41 4C 4C 20 20    ..        CALL  
019A80:  20 20 43 43 43 4F 4D 0D 0A 20 20 20 20 20 20 20      CCCOM..       
019A90:  20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20 20     INX     H..    
019AA0:  20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 46 4F 52        RET..;..;FOR
019AB0:  4D 20 54 48 45 20 4F 4E 45 27 53 20 43 4F 4D 50    M THE ONE'S COMP
019AC0:  4C 45 4D 45 4E 54 20 4F 46 20 48 4C 0D 0A 43 43    LEMENT OF HL..CC
019AD0:  43 4F 4D 3A 3A 0D 0A 20 20 20 20 20 20 20 20 4D    COM::..        M
019AE0:  4F 56 20 20 20 20 20 41 2C 48 0D 0A 20 20 20 20    OV     A,H..    
019AF0:  20 20 20 20 43 4D 41 0D 0A 20 20 20 20 20 20 20        CMA..       
019B00:  20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C          MOV     A,
019B10:  44 0D 0A 20 20 20 20 20 20 20 20 52 41 4C 0D 0A    D..        RAL..
019B20:  20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20            MOV     
019B30:  44 2C 41 0D 0A 20 20 20 20 20 20 20 20 4F 52 41    D,A..        ORA
019B40:  20 20 20 20 20 45 0D 0A 20 20 20 20 20 20 20 20         E..        
019B50:  52 45 54 0D 0A 3B 0D 0A 3B 43 4F 4D 50 41 52 45    RET..;..;COMPARE
019B60:  20 42 43 20 54 4F 20 44 45 20 28 49 4E 54 45 52     BC TO DE (INTER
019B70:  4E 41 4C 20 52 4F 55 54 49 4E 45 29 0D 0A 43 43    NAL ROUTINE)..CC
019B80:  43 4D 50 42 43 44 45 3A 20 4D 4F 56 20 20 41 2C    CMPBCDE: MOV  A,
019B90:  45 0D 0A 20 20 20 20 20 20 20 20 53 55 42 20 20    E..        SUB  
019BA0:  20 20 20 43 0D 0A 20 20 20 20 20 20 20 20 4D 4F       C..        MO
019BB0:  56 20 20 20 20 20 41 2C 44 0D 0A 20 20 20 20 20    V     A,D..     
019BC0:  20 20 20 53 42 42 20 20 20 20 20 42 0D 0A 20 20       SBB     B..  
019BD0:  20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B 4C          RET..;..;L
019BE0:  4F 47 49 43 41 4C 20 4E 45 47 41 54 49 4F 4E 0D    OGICAL NEGATION.
019BF0:  0A 43 43 4C 4E 45 47 3A 3A 0D 0A 20 20 20 20 20    .CCLNEG::..     
019C00:  20 20 20 4D 4F 56 20 20 20 20 20 41 2C 48 0D 0A       MOV     A,H..
019C10:  20 20 20 20 20 20 20 20 4F 52 41 20 20 20 20 20            ORA     
019C20:  4C 0D 0A 20 20 20 20 20 20 20 20 4A 4E 5A 20 20    L..        JNZ  
019C30:  20 20 20 24 2B 36 0D 0A 20 20 20 20 20 20 20 20       $+6..        
019C40:  4D 56 49 20 20 20 20 20 4C 2C 31 0D 0A 20 20 20    MVI     L,1..   
019C50:  20 20 20 20 20 52 45 54 0D 0A 20 20 20 20 20 20         RET..      
019C60:  20 20 4C 58 49 20 20 20 20 20 48 2C 30 0D 0A 20      LXI     H,0.. 
019C70:  20 20 20 20 20 20 20 52 45 54 0D 0A 3B 0D 0A 3B           RET..;..;
019C80:  20 45 58 45 43 55 54 45 20 22 53 57 49 54 43 48     EXECUTE "SWITCH
019C90:  22 20 53 54 41 54 45 4D 45 4E 54 0D 0A 3B 0D 0A    " STATEMENT..;..
019CA0:  3B 20 20 48 4C 20 20 3D 20 20 53 57 49 54 43 48    ;  HL  =  SWITCH
019CB0:  20 56 41 4C 55 45 0D 0A 3B 20 28 53 50 29 20 2D     VALUE..; (SP) -
019CC0:  3E 20 53 57 49 54 43 48 20 54 41 42 4C 45 0D 0A    > SWITCH TABLE..
019CD0:  3B 20 20 20 20 20 20 20 20 20 44 57 20 41 44 44    ;         DW ADD
019CE0:  52 31 2C 20 56 41 4C 55 45 31 0D 0A 3B 20 20 20    R1, VALUE1..;   
019CF0:  20 20 20 20 20 20 44 57 20 41 44 44 52 32 2C 20          DW ADDR2, 
019D00:  20 4D 4F 56 20 20 20 20 20 48 2C 41 0D 0A 20 20     MOV     H,A..  
019D10:  20 20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C          MOV     A,
019D20:  4C 0D 0A 20 20 20 20 20 20 20 20 43 4D 41 0D 0A    L..        CMA..
019D30:  20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20            MOV     
019D40:  4C 2C 41 0D 0A 20 20 20 20 20 20 20 20 52 45 54    L,A..        RET
019D50:  0D 0A 3B 0D 0A 3B 4D 55 4C 54 49 50 4C 59 20 44    ..;..;MULTIPLY D
019D60:  45 20 42 59 20 48 4C 20 41 4E 44 20 52 45 54 55    E BY HL AND RETU
019D70:  52 4E 20 49 4E 20 48 4C 20 28 53 49 47 4E 45 44    RN IN HL (SIGNED
019D80:  20 4D 55 4C 54 49 50 4C 59 29 0D 0A 43 43 4D 55     MULTIPLY)..CCMU
019D90:  4C 54 3A 3A 0D 0A 4D 55 4C 54 3A 20 20 20 4D 4F    LT::..MULT:   MO
019DA0:  56 20 20 20 20 20 42 2C 48 0D 0A 20 20 20 20 20    V     B,H..     
019DB0:  20 20 20 4D 4F 56 20 20 20 20 20 43 2C 4C 0D 0A       MOV     C,L..
019DC0:  20 20 20 20 20 20 20 20 4C 58 49 20 20 20 20 20            LXI     
019DD0:  48 2C 30 0D 0A 4D 55 4C 54 31 3A 20 20 4D 4F 56    H,0..MULT1:  MOV
019DE0:  20 20 20 20 20 41 2C 43 0D 0A 20 20 20 20 20 20         A,C..      
019DF0:  20 20 52 52 43 0D 0A 20 20 20 20 20 20 20 20 4A      RRC..        J
019E00:  4E 43 20 20 20 20 20 4D 55 4C 54 32 0D 0A 20 20    NC     MULT2..  
019E10:  20 20 20 20 20 20 44 41 44 20 20 20 20 20 44 0D          DAD     D.
019E20:  0A 4D 55 4C 54 32 3A 20 20 58 52 41 20 41 0D 0A    .MULT2:  XRA A..
019E30:  20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20            MOV     
019E40:  41 2C 42 0D 0A 20 20 20 20 20 20 20 20 52 41 52    A,B..        RAR
019E50:  0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20    ..        MOV   
019E60:  20 20 42 2C 41 0D 0A 20 20 20 20 20 20 20 20 4D      B,A..        M
019E70:  4F 56 20 20 20 20 20 41 2C 43 0D 0A 20 20 20 20    OV     A,C..    
019E80:  20 20 20 20 52 41 52 0D 0A 20 20 20 20 20 20 20        RAR..       
019E90:  20 4D 4F 56 20 20 20 20 20 43 2C 41 0D 0A 20 20     MOV     C,A..  
019EA0:  20 20 20 20 20 20 4F 52 41 20 20 20 20 20 42 0D          ORA     B.
019EB0:  0A 20 20 20 20 20 20 20 20 52 5A 0D 0A 20 20 20    .        RZ..   
019EC0:  20 20 20 20 20 58 52 41 20 20 20 20 20 41 0D 0A         XRA     A..
019ED0:  20 20 20 20 20 20 20 20 4D 4F 56 20 20 20 20 20            MOV     
019EE0:  41 2C 45 0D 0A 20 20 20 20 20 20 20 20 52 41 4C    A,E..        RAL
019EF0:  0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20    ..        MOV   
019F00:  56 41 4C 55 45 32 0D 0A 3B 20 20 20 20 20 20 20    VALUE2..;       
019F10:  20 20 2E 2E 2E 0D 0A 3B 20 20 20 20 20 20 20 20      .....;        
019F20:  20 44 57 20 30 0D 0A 3B 20 20 20 20 20 20 20 20     DW 0..;        
019F30:  5B 4A 4D 50 20 64 65 66 61 75 6C 74 5D 0D 0A 3B    [JMP default]..;
019F40:  20 20 20 20 20 20 20 20 20 63 6F 6E 74 69 6E 75             continu
019F50:  61 74 69 6F 6E 0D 0A 3B 0D 0A 43 43 53 57 49 54    ation..;..CCSWIT
019F60:  43 48 3A 3A 0D 0A 20 20 20 20 20 20 20 20 58 43    CH::..        XC
019F70:  48 47 20 20 20 20 20 20 20 20 20 20 20 20 3B 44    HG            ;D
019F80:  45 20 3D 20 20 53 57 49 54 43 48 20 56 41 4C 55    E =  SWITCH VALU
019F90:  45 0D 0A 20 20 20 20 20 20 20 20 50 4F 50 20 20    E..        POP  
019FA0:  20 20 20 48 20 20 20 20 20 20 20 3B 48 4C 20 2D       H       ;HL -
019FB0:  3E 20 53 57 49 54 43 48 20 54 41 42 4C 45 0D 0A    > SWITCH TABLE..
019FC0:  53 57 4C 4F 4F 50 3A 20 4D 4F 56 20 20 20 20 20    SWLOOP: MOV     
019FD0:  43 2C 4D 0D 0A 20 20 20 20 20 20 20 20 49 4E 58    C,M..        INX
019FE0:  20 20 20 20 20 48 0D 0A 20 20 20 20 20 20 20 20         H..        
019FF0:  4D 4F 56 20 20 20 20 20 42 2C 4D 20 20 20 20 20    MOV     B,M     
01A000:  3B 42 43 20 2D 3E 20 43 41 53 45 20 41 44 44 52    ;BC -> CASE ADDR
01A010:  2C 20 45 4C 53 45 20 30 0D 0A 20 20 20 20 20 20    , ELSE 0..      
01A020:  20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20 20 20      INX     H..   
01A030:  20 20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 42         MOV     A,B
01A040:  0D 0A 20 20 20 20 20 20 20 20 4F 52 41 20 20 20    ..        ORA   
01A050:  20 20 43 0D 0A 20 20 20 20 20 20 20 20 4A 5A 20      C..        JZ 
01A060:  20 20 20 20 20 53 57 45 4E 44 20 20 20 3B 44 45         SWEND   ;DE
01A070:  46 41 55 4C 54 20 4F 52 20 43 4F 4E 54 49 4E 55    FAULT OR CONTINU
01A080:  41 54 49 4F 4E 20 43 4F 44 45 0D 0A 20 20 20 20    ATION CODE..    
01A090:  20 20 20 20 4D 4F 56 20 20 20 20 20 41 2C 4D 0D        MOV     A,M.
01A0A0:  0A 20 20 20 20 20 20 20 20 49 4E 58 20 20 20 20    .        INX    
01A0B0:  20 48 0D 0A 20 20 20 20 20 20 20 20 43 4D 50 20     H..        CMP 
01A0C0:  20 20 20 20 45 0D 0A 20 20 20 20 20 20 20 20 4D        E..        M
01A0D0:  4F 56 20 20 20 20 20 41 2C 4D 0D 0A 20 20 20 20    OV     A,M..    
01A0E0:  20 20 20 20 49 4E 58 20 20 20 20 20 48 0D 0A 20        INX     H.. 
01A0F0:  20 20 20 20 20 20 20 4A 4E 5A 20 20 20 20 20 53           JNZ     S
01A100:  20 20 45 2C 41 0D 0A 20 20 20 20 20 20 20 20 4D      E,A..        M
01A110:  4F 56 20 20 20 20 20 41 2C 44 0D 0A 20 20 20 20    OV     A,D..    
01A120:  20 20 20 20 52 41 4C 0D 0A 20 20 20 20 20 20 20        RAL..       
01A130:  20 4D 4F 56 20 20 20 20 20 44 2C 41 0D 0A 20 20     MOV     D,A..  
01A140:  20 20 20 20 20 20 4F 52 41 20 20 20 20 20 45 0D          ORA     E.
01A150:  0A 20 20 20 20 20 20 20 20 52 5A 0D 0A 20 20 20    .        RZ..   
01A160:  20 20 20 20 20 4A 4D 50 20 20 20 20 20 4D 55 4C         JMP     MUL
01A170:  54 31 0D 0A 3B 0D 0A 3B 44 49 56 49 44 45 20 44    T1..;..;DIVIDE D
01A180:  45 20 42 59 20 48 4C 20 41 4E 44 20 52 45 54 55    E BY HL AND RETU
01A190:  52 4E 20 51 55 4F 54 49 45 4E 54 20 49 4E 20 48    RN QUOTIENT IN H
01A1A0:  4C 2C 20 52 45 4D 41 49 4E 44 45 52 20 49 4E 20    L, REMAINDER IN 
01A1B0:  44 45 20 28 53 49 47 4E 45 44 20 44 49 56 49 44    DE (SIGNED DIVID
01A1C0:  45 29 0D 0A 43 43 44 49 56 3A 3A 0D 0A 44 49 56    E)..CCDIV::..DIV
01A1D0:  3A 20 20 20 20 4D 4F 56 20 20 20 20 20 42 2C 48    :    MOV     B,H
01A1E0:  0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20    ..        MOV   
01A1F0:  20 20 43 2C 4C 0D 0A 20 20 20 20 20 20 20 20 4D      C,L..        M
01A200:  4F 56 20 20 20 20 20 41 2C 44 0D 0A 20 20 20 20    OV     A,D..    
01A210:  20 20 20 20 58 52 41 20 20 20 20 20 42 0D 0A 20        XRA     B.. 
01A220:  20 20 20 20 20 20 20 50 55 53 48 20 20 20 20 50           PUSH    P
01A230:  53 57 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20    SW..        MOV 
01A240:  20 20 20 20 41 2C 44 0D 0A 20 20 20 20 20 20 20        A,D..       
01A250:  20 4F 52 41 20 20 20 20 20 41 0D 0A 20 20 20 20     ORA     A..    
01A260:  20 20 20 20 43 4D 20 20 20 20 20 20 43 43 44 45        CM      CCDE
01A270:  4E 45 47 0D 0A 20 20 20 20 20 20 20 20 4D 4F 56    NEG..        MOV
01A280:  20 20 20 20 20 41 2C 42 0D 0A 20 20 20 20 20 20         A,B..      
01A290:  20 20 4F 52 41 20 20 20 20 20 41 0D 0A 20 20 20      ORA     A..   
01A2A0:  20 20 20 20 20 43 4D 20 20 20 20 20 20 43 43 42         CM      CCB
01A2B0:  43 4E 45 47 0D 0A 20 20 20 20 20 20 20 20 4D 56    CNEG..        MV
01A2C0:  49 20 20 20 20 20 41 2C 31 36 0D 0A 20 20 20 20    I     A,16..    
01A2D0:  20 20 20 20 50 55 53 48 20 20 20 20 50 53 57 0D        PUSH    PSW.
01A2E0:  0A 20 20 20 20 20 20 20 20 58 43 48 47 0D 0A 20    .        XCHG.. 
01A2F0:  20 20 20 20 20 20 20 4C 58 49 20 20 20 20 20 44           LXI     D
01A300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01A310:  16 00 01 00 02 09 52 E5 16 00 41 02 00 00 00 02    ......R...A.....
01A320:  16 00 46 02 00 00 00 02 16 00 42 02 00 00 00 02    ..F.......B.....
01A330:  16 00 47 02 00 00 00 02 16 00 43 02 00 00 00 02    ..G.......C.....
01A340:  16 00 48 02 00 00 00 02 16 00 44 02 00 00 00 02    ..H.......D.....
01A350:  16 00 49 02 00 00 00 02 16 00 45 02 00 00 00 02    ..I.......E.....
01A360:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A370:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A380:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A390:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A400:  57 4C 4F 4F 50 0D 0A 20 20 20 20 20 20 20 20 43    WLOOP..        C
01A410:  4D 50 20 20 20 20 20 44 0D 0A 20 20 20 20 20 20    MP     D..      
01A420:  20 20 4A 4E 5A 20 20 20 20 20 53 57 4C 4F 4F 50      JNZ     SWLOOP
01A430:  0D 0A 20 20 20 20 20 20 20 20 4D 4F 56 20 20 20    ..        MOV   
01A440:  20 20 48 2C 42 20 20 20 20 20 3B 43 41 53 45 20      H,B     ;CASE 
01A450:  4D 41 54 43 48 45 44 0D 0A 20 20 20 20 20 20 20    MATCHED..       
01A460:  20 4D 4F 56 20 20 20 20 20 4C 2C 43 0D 0A 53 57     MOV     L,C..SW
01A470:  45 4E 44 3A 20 20 50 43 48 4C 0D 0A 3B 0D 0A 55    END:  PCHL..;..U
01A480:  65 6E 64 3A 20 6C 68 6C 64 20 20 36 20 20 20 20    end: lhld  6    
01A490:  20 20 20 20 20 20 20 3B 67 65 74 20 62 64 6F 73           ;get bdos
01A4A0:  20 61 64 64 72 65 73 73 0D 0A 20 20 20 20 20 20     address..      
01A4B0:  73 70 68 6C 20 20 20 20 20 20 20 20 20 20 20 20    sphl            
01A4C0:  20 20 3B 75 73 65 20 66 6F 72 20 62 61 73 65 20      ;use for base 
01A4D0:  6F 66 20 73 74 61 63 6B 0D 0A 20 20 20 20 20 20    of stack..      
01A4E0:  6C 78 69 20 20 20 68 2C 55 65 6E 64 20 20 20 20    lxi   h,Uend    
01A4F0:  20 20 3B 67 65 74 20 73 74 61 72 74 20 6F 66 20      ;get start of 
01A500:  66 72 65 65 20 6D 65 6D 6F 72 79 0D 0A 20 20 20    free memory..   
01A510:  20 20 20 73 68 6C 64 20 20 55 6D 65 6D 70 74 72       shld  Umemptr
01A520:  23 23 20 20 20 3B 75 73 65 20 66 6F 72 20 6D 65    ##   ;use for me
01A530:  6D 6F 72 79 20 61 6C 6C 6F 63 61 74 69 6F 6E 0D    mory allocation.
01A540:  0A 20 20 20 20 20 20 6A 6D 70 20 20 20 55 6D 61    .      jmp   Uma
01A550:  69 6E 23 23 20 20 20 20 20 3B 70 61 72 73 65 20    in##     ;parse 
01A560:  63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 2C 20 65 78    command line, ex
01A570:  65 63 75 74 65 20 70 72 6F 67 72 61 6D 0D 0A 20    ecute program.. 
01A580:  20 20 20 20 20 65 6E 64 20 20 20 55 65 6E 64 20         end   Uend 
01A590:  20 20 20 20 20 20 0D 0A 3E 3E 3E 20 43 41 4C 4C          ..>>> CALL
01A5A0:  4F 43 2E 43 20 33 36 30 0D 0A 23 64 65 66 69 6E    OC.C 360..#defin
01A5B0:  65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E    e NOCCARGC  /* n
01A5C0:  6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74    o argument count
01A5D0:  20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E     passing */..#in
01A5E0:  63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A 2F    clude stdio.h../
01A5F0:  2A 0D 0A 2A 2A 20 43 6C 65 61 72 65 64 2D 6D 65    *..** Cleared-me
01A600:  23 64 65 66 69 6E 65 20 47 45 54 50 4F 53 20 20    #define GETPOS  
01A610:  20 33 36 20 20 2F 2A 20 67 65 74 20 6E 75 6D 62     36  /* get numb
01A620:  65 72 20 6F 66 20 63 75 72 72 65 6E 74 20 73 65    er of current se
01A630:  63 74 6F 72 20 2A 2F 0D 0A 23 64 65 66 69 6E 65    ctor */..#define
01A640:  20 57 52 54 52 4E 44 20 20 20 34 30 20 20 2F 2A     WRTRND   40  /*
01A650:  20 77 72 69 74 65 20 73 65 63 74 6F 72 20 72 61     write sector ra
01A660:  6E 64 6F 6D 6C 79 20 2A 2F 0D 0A 2F 2A 0D 0A 2A    ndomly */../*..*
01A670:  2A 20 44 65 76 69 63 65 20 63 6F 64 65 73 0D 0A    * Device codes..
01A680:  2A 2F 0D 0A 23 64 65 66 69 6E 65 20 43 50 4D 43    */..#define CPMC
01A690:  4F 4E 20 44 43 4F 4E 49 4F 20 2F 2A 20 63 6F 6E    ON DCONIO /* con
01A6A0:  73 6F 6C 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65    sole */..#define
01A6B0:  20 43 50 4D 52 44 52 20 52 44 52 49 4E 50 20 2F     CPMRDR RDRINP /
01A6C0:  2A 20 72 65 61 64 65 72 20 20 2A 2F 0D 0A 23 64    * reader  */..#d
01A6D0:  65 66 69 6E 65 20 43 50 4D 50 55 4E 20 50 55 4E    efine CPMPUN PUN
01A6E0:  4F 55 54 20 2F 2A 20 70 75 6E 63 68 20 20 20 2A    OUT /* punch   *
01A6F0:  2F 0D 0A 23 64 65 66 69 6E 65 20 43 50 4D 4C 53    /..#define CPMLS
01A700:  54 20 4C 53 54 4F 55 54 20 2F 2A 20 6C 69 73 74    T LSTOUT /* list
01A710:  20 20 20 20 2A 2F 0D 0A 2F 2A 0D 0A 2A 2A 20 46        */../*..** F
01A720:  69 6C 65 20 73 74 61 74 75 73 20 62 69 74 73 0D    ile status bits.
01A730:  0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 52 44 42    .*/..#define RDB
01A740:  49 54 20 20 20 20 20 20 31 20 20 2F 2A 20 6F 70    IT      1  /* op
01A750:  65 6E 20 66 6F 72 20 72 65 61 64 20 2A 2F 0D 0A    en for read */..
01A760:  23 64 65 66 69 6E 65 20 57 52 54 42 49 54 20 20    #define WRTBIT  
01A770:  20 20 20 32 20 20 2F 2A 20 6F 70 65 6E 20 66 6F       2  /* open fo
01A780:  72 20 77 72 69 74 65 20 2A 2F 0D 0A 23 64 65 66    r write */..#def
01A790:  69 6E 65 20 45 4F 46 42 49 54 20 20 20 20 20 34    ine EOFBIT     4
01A7A0:  20 20 2F 2A 20 65 6F 66 20 63 6F 6E 64 69 74 69      /* eof conditi
01A7B0:  6F 6E 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 45    on */..#define E
01A7C0:  52 52 42 49 54 20 20 20 20 20 38 20 20 2F 2A 20    RRBIT     8  /* 
01A7D0:  65 72 72 6F 72 20 63 6F 6E 64 69 74 69 6F 6E 20    error condition 
01A7E0:  2A 2F 0D 0A 2F 2A 0D 0A 2A 2A 20 41 53 43 49 49    */../*..** ASCII
01A7F0:  20 63 68 61 72 61 63 74 65 72 73 0D 0A 2A 2F 0D     characters..*/.
01A800:  6D 6F 72 79 20 61 6C 6C 6F 63 61 74 69 6F 6E 20    mory allocation 
01A810:  6F 66 20 6E 20 69 74 65 6D 73 20 6F 66 20 73 69    of n items of si
01A820:  7A 65 20 62 79 74 65 73 2E 0D 0A 2A 2A 20 6E 20    ze bytes...** n 
01A830:  20 20 20 20 3D 20 4E 75 6D 62 65 72 20 6F 66 20        = Number of 
01A840:  69 74 65 6D 73 20 74 6F 20 61 6C 6C 6F 63 61 74    items to allocat
01A850:  65 20 73 70 61 63 65 20 66 6F 72 2E 0D 0A 2A 2A    e space for...**
01A860:  20 73 69 7A 65 20 20 3D 20 53 69 7A 65 20 6F 66     size  = Size of
01A870:  20 74 68 65 20 69 74 65 6D 73 20 69 6E 20 62 79     the items in by
01A880:  74 65 73 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E 73    tes...** Returns
01A890:  20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20     the address of 
01A8A0:  74 68 65 20 61 6C 6C 6F 63 61 74 65 64 20 62 6C    the allocated bl
01A8B0:  6F 63 6B 2C 0D 0A 2A 2A 20 65 6C 73 65 20 4E 55    ock,..** else NU
01A8C0:  4C 4C 20 66 6F 72 20 66 61 69 6C 75 72 65 2E 0D    LL for failure..
01A8D0:  0A 2A 2F 0D 0A 63 61 6C 6C 6F 63 28 6E 2C 20 73    .*/..calloc(n, s
01A8E0:  69 7A 65 29 20 63 68 61 72 20 2A 6E 2C 20 2A 73    ize) char *n, *s
01A8F0:  69 7A 65 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E    ize; {..  return
01A900:  20 28 55 61 6C 6C 6F 63 28 6E 2A 73 69 7A 65 2C     (Ualloc(n*size,
01A910:  20 59 45 53 29 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E     YES));..  }..>>
01A920:  3E 20 43 4C 45 41 52 45 52 52 2E 43 20 32 30 36    > CLEARERR.C 206
01A930:  0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52    ..#define NOCCAR
01A940:  47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 20 63 6F    GC  /* no arg co
01A950:  75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A    unt passing */..
01A960:  23 69 6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68    #include stdio.h
01A970:  0D 0A 23 69 6E 63 6C 75 64 65 20 63 6C 69 62 2E    ..#include clib.
01A980:  64 65 66 0D 0A 65 78 74 65 72 6E 20 69 6E 74 20    def..extern int 
01A990:  55 73 74 61 74 75 73 5B 5D 3B 0D 0A 2F 2A 0D 0A    Ustatus[];../*..
01A9A0:  2A 2A 20 43 6C 65 61 72 20 65 72 72 6F 72 20 73    ** Clear error s
01A9B0:  74 61 74 75 73 20 66 6F 72 20 66 64 2E 0D 0A 2A    tatus for fd...*
01A9C0:  2F 0D 0A 63 6C 65 61 72 65 72 72 28 66 64 29 20    /..clearerr(fd) 
01A9D0:  69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 69 66 28    int fd; {..  if(
01A9E0:  55 6D 6F 64 65 28 66 64 29 29 20 55 73 74 61 74    Umode(fd)) Ustat
01A9F0:  75 73 5B 66 64 5D 20 26 3D 20 7E 45 52 52 42 49    us[fd] &= ~ERRBI
01AA00:  0A 23 64 65 66 69 6E 65 20 41 42 4F 52 54 20 20    .#define ABORT  
01AA10:  20 20 33 0D 0A 23 64 65 66 69 6E 65 20 52 55 42      3..#define RUB
01AA20:  20 20 20 20 20 20 38 0D 0A 23 64 65 66 69 6E 65          8..#define
01AA30:  20 50 41 55 53 45 20 20 20 31 39 0D 0A 23 64 65     PAUSE   19..#de
01AA40:  66 69 6E 65 20 57 49 50 45 20 20 20 20 32 34 0D    fine WIPE    24.
01AA50:  0A 23 64 65 66 69 6E 65 20 44 45 4C 20 20 20 20    .#define DEL    
01AA60:  31 32 37 0D 0A 3E 3E 3E 20 43 53 45 45 4B 2E 43    127..>>> CSEEK.C
01AA70:  20 39 30 38 0D 0A 23 64 65 66 69 6E 65 20 4E 4F     908..#define NO
01AA80:  43 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72    CCARGC  /* no ar
01AA90:  67 75 6D 65 6E 74 20 63 6F 75 6E 74 20 70 61 73    gument count pas
01AAA0:  73 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63 6C 75 64    sing */..#includ
01AAB0:  65 20 73 74 64 69 6F 2E 68 0D 0A 23 69 6E 63 6C    e stdio.h..#incl
01AAC0:  75 64 65 20 63 6C 69 62 2E 64 65 66 0D 0A 65 78    ude clib.def..ex
01AAD0:  74 65 72 6E 20 69 6E 74 20 55 66 63 62 70 74 72    tern int Ufcbptr
01AAE0:  5B 5D 2C 20 55 63 68 72 70 6F 73 5B 5D 2C 20 55    [], Uchrpos[], U
01AAF0:  6E 65 78 74 63 5B 5D 3B 0D 0A 2F 2A 0D 0A 2A 2A    nextc[];../*..**
01AB00:  20 50 6F 73 69 74 69 6F 6E 20 66 64 20 74 6F 20     Position fd to 
01AB10:  74 68 65 20 31 32 38 2D 62 79 74 65 20 72 65 63    the 128-byte rec
01AB20:  6F 72 64 20 69 6E 64 69 63 61 74 65 64 20 62 79    ord indicated by
01AB30:  0D 0A 2A 2A 20 22 6F 66 66 73 65 74 22 20 72 65    ..** "offset" re
01AB40:  6C 61 74 69 76 65 20 74 6F 20 74 68 65 20 70 6F    lative to the po
01AB50:  69 6E 74 20 69 6E 64 69 63 61 74 65 64 20 62 79    int indicated by
01AB60:  20 22 62 61 73 65 2E 22 0D 0A 2A 2A 20 0D 0A 2A     "base."..** ..*
01AB70:  2A 20 20 20 20 20 42 41 53 45 20 20 20 20 20 4F    *     BASE     O
01AB80:  46 46 53 45 54 2D 52 45 4C 41 54 49 56 45 2D 54    FFSET-RELATIVE-T
01AB90:  4F 0D 0A 2A 2A 20 20 20 20 20 20 20 30 20 20 20    O..**       0   
01ABA0:  20 20 20 66 69 72 73 74 20 72 65 63 6F 72 64 0D       first record.
01ABB0:  0A 2A 2A 20 20 20 20 20 20 20 31 20 20 20 20 20    .**       1     
01ABC0:  20 63 75 72 72 65 6E 74 20 72 65 63 6F 72 64 0D     current record.
01ABD0:  0A 2A 2A 20 20 20 20 20 20 20 32 20 20 20 20 20    .**       2     
01ABE0:  20 65 6E 64 20 6F 66 20 66 69 6C 65 20 28 6C 61     end of file (la
01ABF0:  73 74 20 72 65 63 6F 72 64 20 2B 20 31 29 0D 0A    st record + 1)..
01AC00:  54 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 43    T;..  }....>>> C
01AC10:  4C 49 42 2E 44 45 46 20 32 30 35 36 0D 0A 2F 2A    LIB.DEF 2056../*
01AC20:  0D 0A 2A 2A 20 43 4C 49 42 2E 44 45 46 20 2D 2D    ..** CLIB.DEF --
01AC30:  20 44 65 66 69 6E 69 74 69 6F 6E 73 20 66 6F 72     Definitions for
01AC40:  20 53 6D 61 6C 6C 2D 43 20 6C 69 62 72 61 72 79     Small-C library
01AC50:  20 66 75 6E 63 74 69 6F 6E 73 2E 0D 0A 2A 2A 0D     functions...**.
01AC60:  0A 2A 2A 20 43 6F 70 79 72 69 67 68 74 20 31 39    .** Copyright 19
01AC70:  38 33 20 20 4C 2E 20 45 2E 20 50 61 79 6E 65 20    83  L. E. Payne 
01AC80:  61 6E 64 20 4A 2E 20 45 2E 20 48 65 6E 64 72 69    and J. E. Hendri
01AC90:  78 0D 0A 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20    x..*/..../*..** 
01ACA0:  44 65 66 69 6E 69 74 69 6F 6E 20 6F 66 20 43 50    Definition of CP
01ACB0:  2F 4D 20 46 43 42 20 61 6E 64 20 61 64 64 69 74    /M FCB and addit
01ACC0:  69 6F 6E 61 6C 20 70 61 72 61 6D 65 74 65 72 73    ional parameters
01ACD0:  0D 0A 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 46 43    ..*/..#define FC
01ACE0:  42 53 49 5A 45 20 20 20 33 36 20 20 2F 2A 20 73    BSIZE   36  /* s
01ACF0:  69 7A 65 20 6F 66 20 66 69 6C 65 20 63 6F 6E 74    ize of file cont
01AD00:  72 6F 6C 20 62 6C 6F 63 6B 20 2A 2F 0D 0A 23 64    rol block */..#d
01AD10:  65 66 69 6E 65 20 44 52 49 56 45 20 20 20 20 20    efine DRIVE     
01AD20:  20 30 20 20 2F 2A 20 43 50 2F 4D 20 64 72 69 76     0  /* CP/M driv
01AD30:  65 20 64 65 73 69 67 6E 61 74 6F 72 20 6F 66 66    e designator off
01AD40:  73 65 74 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20    set */..#define 
01AD50:  4E 41 4D 45 4F 46 46 20 20 20 20 31 20 20 2F 2A    NAMEOFF    1  /*
01AD60:  20 43 50 2F 4D 20 66 69 6C 65 20 6E 61 6D 65 20     CP/M file name 
01AD70:  6F 66 66 73 65 74 20 2A 2F 0D 0A 23 64 65 66 69    offset */..#defi
01AD80:  6E 65 20 4E 41 4D 45 4F 46 46 32 20 20 31 36 20    ne NAMEOFF2  16 
01AD90:  20 2F 2A 20 43 50 2F 4D 20 32 6E 64 20 66 69 6C     /* CP/M 2nd fil
01ADA0:  65 20 6E 61 6D 65 20 6F 66 66 73 65 74 20 2A 2F    e name offset */
01ADB0:  0D 0A 23 64 65 66 69 6E 65 20 4E 41 4D 45 53 49    ..#define NAMESI
01ADC0:  5A 45 20 20 20 38 20 20 2F 2A 20 43 50 2F 4D 20    ZE   8  /* CP/M 
01ADD0:  66 69 6C 65 20 6E 61 6D 65 20 73 69 7A 65 20 2A    file name size *
01ADE0:  2F 0D 0A 23 64 65 66 69 6E 65 20 54 59 50 45 4F    /..#define TYPEO
01ADF0:  46 46 20 20 20 20 39 20 20 2F 2A 20 43 50 2F 4D    FF    9  /* CP/M
01AE00:  2A 2A 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 4E    **..** Returns N
01AE10:  55 4C 4C 20 6F 6E 20 73 75 63 63 65 73 73 2C 20    ULL on success, 
01AE20:  65 6C 73 65 20 45 4F 46 2E 0D 0A 2A 2F 0D 0A 63    else EOF...*/..c
01AE30:  73 65 65 6B 28 66 64 2C 20 6F 66 66 73 65 74 2C    seek(fd, offset,
01AE40:  20 62 61 73 65 29 20 69 6E 74 20 66 64 2C 20 6F     base) int fd, o
01AE50:  66 66 73 65 74 2C 20 62 61 73 65 3B 20 7B 0D 0A    ffset, base; {..
01AE60:  20 20 69 6E 74 20 6F 6C 64 72 72 6E 2C 20 2A 72      int oldrrn, *r
01AE70:  72 6E 3B 0D 0A 20 20 69 66 28 21 55 6D 6F 64 65    rn;..  if(!Umode
01AE80:  28 66 64 29 20 7C 7C 20 69 73 61 74 74 79 28 66    (fd) || isatty(f
01AE90:  64 29 20 7C 7C 20 66 66 6C 75 73 68 28 66 64 29    d) || fflush(fd)
01AEA0:  29 20 72 65 74 75 72 6E 20 28 45 4F 46 29 3B 0D    ) return (EOF);.
01AEB0:  0A 20 20 72 72 6E 20 3D 20 55 66 63 62 70 74 72    .  rrn = Ufcbptr
01AEC0:  5B 66 64 5D 20 2B 20 52 52 4E 4F 46 46 3B 0D 0A    [fd] + RRNOFF;..
01AED0:  20 20 6F 6C 64 72 72 6E 20 3D 20 2A 72 72 6E 3B      oldrrn = *rrn;
01AEE0:  0D 0A 20 20 73 77 69 74 63 68 20 28 62 61 73 65    ..  switch (base
01AEF0:  29 20 7B 0D 0A 20 20 20 20 63 61 73 65 20 32 3A    ) {..    case 2:
01AF00:  20 55 62 64 6F 73 28 50 4F 53 45 4E 44 2C 20 55     Ubdos(POSEND, U
01AF10:  66 63 62 70 74 72 5B 66 64 5D 29 3B 0D 0A 20 20    fcbptr[fd]);..  
01AF20:  20 20 63 61 73 65 20 31 3A 20 2A 72 72 6E 20 2B      case 1: *rrn +
01AF30:  3D 20 6F 66 66 73 65 74 3B 20 62 72 65 61 6B 3B    = offset; break;
01AF40:  0D 0A 20 20 20 20 63 61 73 65 20 30 3A 20 2A 72    ..    case 0: *r
01AF50:  72 6E 20 3D 20 6F 66 66 73 65 74 3B 20 20 62 72    rn = offset;  br
01AF60:  65 61 6B 3B 0D 0A 20 20 20 20 64 65 66 61 75 6C    eak;..    defaul
01AF70:  74 3A 20 72 65 74 75 72 6E 20 28 45 4F 46 29 3B    t: return (EOF);
01AF80:  0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66 28 55 73    ..    }..  if(Us
01AF90:  65 63 74 6F 72 28 66 64 2C 20 20 52 44 52 4E 44    ector(fd,  RDRND
01AFA0:  29 29 20 7B 0D 0A 20 20 20 20 2A 72 72 6E 20 3D    )) {..    *rrn =
01AFB0:  20 6F 6C 64 72 72 6E 3B 0D 0A 20 20 20 20 72 65     oldrrn;..    re
01AFC0:  74 75 72 6E 20 28 45 4F 46 29 3B 0D 0A 20 20 20    turn (EOF);..   
01AFD0:  20 7D 0D 0A 20 20 55 63 68 72 70 6F 73 5B 66 64     }..  Uchrpos[fd
01AFE0:  5D 20 3D 20 30 3B 0D 0A 20 20 55 6E 65 78 74 63    ] = 0;..  Unextc
01AFF0:  5B 66 64 5D 20 3D 20 45 4F 46 3B 0D 0A 20 20 55    [fd] = EOF;..  U
01B000:  20 66 69 6C 65 20 74 79 70 65 20 6F 66 66 73 65     file type offse
01B010:  74 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 54 59    t */..#define TY
01B020:  50 45 53 49 5A 45 20 20 20 33 20 20 2F 2A 20 43    PESIZE   3  /* C
01B030:  50 2F 4D 20 66 69 6C 65 20 74 79 70 65 20 73 69    P/M file type si
01B040:  7A 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 4E    ze */..#define N
01B050:  54 53 49 5A 45 20 20 20 20 31 31 20 20 2F 2A 20    TSIZE    11  /* 
01B060:  43 50 2F 4D 20 66 69 6C 65 20 6E 61 6D 65 20 26    CP/M file name &
01B070:  20 74 79 70 65 20 73 69 7A 65 20 2A 2F 0D 0A 23     type size */..#
01B080:  64 65 66 69 6E 65 20 52 52 4E 4F 46 46 20 20 20    define RRNOFF   
01B090:  20 33 33 20 20 2F 2A 20 43 50 2F 4D 20 72 61 6E     33  /* CP/M ran
01B0A0:  64 6F 6D 20 72 65 63 6F 72 64 20 6E 75 6D 62 65    dom record numbe
01B0B0:  72 20 6F 66 66 73 65 74 20 2A 2F 0D 0A 23 64 65    r offset */..#de
01B0C0:  66 69 6E 65 20 43 50 4D 45 4F 46 20 20 20 20 32    fine CPMEOF    2
01B0D0:  36 20 20 2F 2A 20 43 50 2F 4D 20 65 6E 64 2D 6F    6  /* CP/M end-o
01B0E0:  66 2D 66 69 6C 65 20 62 79 74 65 20 2A 2F 0D 0A    f-file byte */..
01B0F0:  23 64 65 66 69 6E 65 20 42 55 46 53 49 5A 45 20    #define BUFSIZE 
01B100:  20 31 32 38 20 20 2F 2A 20 73 69 7A 65 20 6F 66     128  /* size of
01B110:  20 49 2F 4F 20 62 75 66 66 65 72 20 2A 2F 0D 0A     I/O buffer */..
01B120:  23 64 65 66 69 6E 65 20 4D 41 58 46 49 4C 45 53    #define MAXFILES
01B130:  20 20 31 30 20 20 2F 2A 20 6D 61 78 69 6D 75 6D      10  /* maximum
01B140:  20 6F 70 65 6E 20 66 69 6C 65 73 20 2A 2F 0D 0A     open files */..
01B150:  2F 2A 0D 0A 2A 2A 20 43 50 2F 4D 20 66 75 6E 63    /*..** CP/M func
01B160:  74 69 6F 6E 20 63 61 6C 6C 73 0D 0A 2A 2F 0D 0A    tion calls..*/..
01B170:  23 64 65 66 69 6E 65 20 47 4F 43 50 4D 20 20 20    #define GOCPM   
01B180:  20 20 30 20 20 2F 2A 20 67 6F 20 74 6F 20 43 50      0  /* go to CP
01B190:  2F 4D 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 52    /M */..#define R
01B1A0:  44 52 49 4E 50 20 20 20 20 33 20 20 2F 2A 20 72    DRINP    3  /* r
01B1B0:  65 61 64 65 72 20 69 6E 70 75 74 20 2A 2F 0D 0A    eader input */..
01B1C0:  23 64 65 66 69 6E 65 20 50 55 4E 4F 55 54 20 20    #define PUNOUT  
01B1D0:  20 20 34 20 20 2F 2A 20 70 75 6E 63 68 20 6F 75      4  /* punch ou
01B1E0:  74 70 75 74 20 2A 2F 0D 0A 23 64 65 66 69 6E 65    tput */..#define
01B1F0:  20 4C 53 54 4F 55 54 20 20 20 20 35 20 20 2F 2A     LSTOUT    5  /*
01B200:  63 6C 72 65 6F 66 28 66 64 29 3B 0D 0A 20 20 72    clreof(fd);..  r
01B210:  65 74 75 72 6E 20 28 4E 55 4C 4C 29 3B 0D 0A 20    eturn (NULL);.. 
01B220:  20 7D 0D 0A 0D 0A 3E 3E 3E 20 43 53 59 53 4C 49     }....>>> CSYSLI
01B230:  42 2E 43 20 31 30 32 31 36 0D 0A 0D 0A 2F 2A 0D    B.C 10216..../*.
01B240:  0A 2A 2A 20 43 53 59 53 4C 49 42 20 2D 2D 20 53    .** CSYSLIB -- S
01B250:  79 73 74 65 6D 2D 4C 65 76 65 6C 20 4C 69 62 72    ystem-Level Libr
01B260:  61 72 79 20 46 75 6E 63 74 69 6F 6E 73 0D 0A 2A    ary Functions..*
01B270:  2F 0D 0A 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74    /....#include st
01B280:  64 69 6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20    dio.h..#include 
01B290:  63 6C 69 62 2E 64 65 66 0D 0A 23 64 65 66 69 6E    clib.def..#defin
01B2A0:  65 20 4E 4F 43 43 41 52 47 43 20 20 20 20 2F 2A    e NOCCARGC    /*
01B2B0:  20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75     no argument cou
01B2C0:  6E 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23    nt passing */..#
01B2D0:  64 65 66 69 6E 65 20 44 49 52 20 20 20 20 20 20    define DIR      
01B2E0:  20 20 20 2F 2A 20 63 6F 6D 70 69 6C 65 20 64 69       /* compile di
01B2F0:  72 65 63 74 6F 72 79 20 6F 70 74 69 6F 6E 20 2A    rectory option *
01B300:  2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 2A 2A 2A 2A 2A    /..../*..*******
01B310:  2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 20 53 79 73 74    *********** Syst
01B320:  65 6D 20 56 61 72 69 61 62 6C 65 73 20 2A 2A 2A    em Variables ***
01B330:  2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A    ****************
01B340:  2A 0D 0A 2A 2F 0D 0A 0D 0A 69 6E 74 0D 0A 20 2A    *..*/....int.. *
01B350:  55 61 75 78 73 7A 2C 20 20 20 20 20 20 20 20 20    Uauxsz,         
01B360:  20 20 20 2F 2A 20 61 64 64 72 20 6F 66 20 55 78       /* addr of Ux
01B370:  73 69 7A 65 5B 5D 20 69 6E 20 41 55 58 42 55 46    size[] in AUXBUF
01B380:  20 2A 2F 0D 0A 20 20 55 61 75 78 69 6E 2C 20 20     */..  Uauxin,  
01B390:  20 20 20 20 20 20 20 20 20 20 2F 2A 20 61 64 64              /* add
01B3A0:  72 20 6F 66 20 55 78 69 6E 69 74 28 29 20 69 6E    r of Uxinit() in
01B3B0:  20 41 55 58 42 55 46 20 2A 2F 0D 0A 20 20 55 61     AUXBUF */..  Ua
01B3C0:  75 78 72 64 2C 20 20 20 20 20 20 20 20 20 20 20    uxrd,           
01B3D0:  20 2F 2A 20 61 64 64 72 20 6F 66 20 55 78 72 65     /* addr of Uxre
01B3E0:  61 64 28 29 20 69 6E 20 41 55 58 42 55 46 20 2A    ad() in AUXBUF *
01B3F0:  2F 0D 0A 20 20 55 61 75 78 77 74 2C 20 20 20 20    /..  Uauxwt,    
01B400:  20 6C 69 73 74 20 6F 75 74 70 75 74 20 2A 2F 0D     list output */.
01B410:  0A 23 64 65 66 69 6E 65 20 44 43 4F 4E 49 4F 20    .#define DCONIO 
01B420:  20 20 20 36 20 20 2F 2A 20 64 69 72 65 63 74 20       6  /* direct 
01B430:  63 6F 6E 73 6F 6C 65 20 69 2F 6F 20 2A 2F 0D 0A    console i/o */..
01B440:  23 64 65 66 69 6E 65 20 4F 50 4E 46 49 4C 20 20    #define OPNFIL  
01B450:  20 31 35 20 20 2F 2A 20 6F 70 65 6E 20 66 69 6C     15  /* open fil
01B460:  65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65 20 43 4C    e */..#define CL
01B470:  4F 46 49 4C 20 20 20 31 36 20 20 2F 2A 20 63 6C    OFIL   16  /* cl
01B480:  6F 73 65 20 66 69 6C 65 20 2A 2F 0D 0A 23 64 65    ose file */..#de
01B490:  66 69 6E 65 20 46 4E 44 46 49 4C 20 20 20 31 37    fine FNDFIL   17
01B4A0:  20 20 2F 2A 20 66 69 6E 64 20 66 69 72 73 74 20      /* find first 
01B4B0:  6F 63 63 75 72 72 65 6E 63 65 20 6F 66 20 61 20    occurrence of a 
01B4C0:  66 69 6C 65 20 2A 2F 0D 0A 23 64 65 66 69 6E 65    file */..#define
01B4D0:  20 46 4E 44 4E 58 54 20 20 20 31 38 20 20 2F 2A     FNDNXT   18  /*
01B4E0:  20 66 69 6E 64 20 6E 65 78 74 20 6F 63 63 75 72     find next occur
01B4F0:  72 65 6E 63 65 20 6F 66 20 61 20 66 69 6C 65 20    rence of a file 
01B500:  2A 2F 0D 0A 23 64 65 66 69 6E 65 20 44 45 4C 46    */..#define DELF
01B510:  49 4C 20 20 20 31 39 20 20 2F 2A 20 64 65 6C 65    IL   19  /* dele
01B520:  74 65 20 66 69 6C 65 20 2A 2F 0D 0A 23 64 65 66    te file */..#def
01B530:  69 6E 65 20 4D 41 4B 46 49 4C 20 20 20 32 32 20    ine MAKFIL   22 
01B540:  20 2F 2A 20 6D 61 6B 65 20 66 69 6C 65 20 2A 2F     /* make file */
01B550:  0D 0A 23 64 65 66 69 6E 65 20 52 45 4E 41 4D 45    ..#define RENAME
01B560:  20 20 20 32 33 20 20 2F 2A 20 72 65 6E 61 6D 65       23  /* rename
01B570:  20 66 69 6C 65 20 2A 2F 0D 0A 23 64 65 66 69 6E     file */..#defin
01B580:  65 20 53 45 54 44 4D 41 20 20 20 32 36 20 20 2F    e SETDMA   26  /
01B590:  2A 20 73 65 74 20 64 6D 61 20 2A 2F 0D 0A 23 64    * set dma */..#d
01B5A0:  65 66 69 6E 65 20 52 44 52 4E 44 20 20 20 20 33    efine RDRND    3
01B5B0:  33 20 20 2F 2A 20 72 65 61 64 20 73 65 63 74 6F    3  /* read secto
01B5C0:  72 20 72 61 6E 64 6F 6D 6C 79 20 2A 2F 0D 0A 23    r randomly */..#
01B5D0:  64 65 66 69 6E 65 20 50 4F 53 45 4E 44 20 20 20    define POSEND   
01B5E0:  33 35 20 20 2F 2A 20 70 6F 73 69 74 69 6F 6E 20    35  /* position 
01B5F0:  66 69 6C 65 20 74 6F 20 65 6E 64 20 2A 2F 0D 0A    file to end */..
01B600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01B610:  17 00 01 00 02 09 52 E5 17 00 41 02 00 00 00 02    ......R...A.....
01B620:  17 00 46 02 00 00 00 02 17 00 42 02 00 00 00 02    ..F.......B.....
01B630:  17 00 47 02 00 00 00 02 17 00 43 02 00 00 00 02    ..G.......C.....
01B640:  17 00 48 02 00 00 00 02 17 00 44 02 00 00 00 02    ..H.......D.....
01B650:  17 00 49 02 00 00 00 02 17 00 45 02 00 00 00 02    ..I.......E.....
01B660:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B670:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B680:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B690:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B6F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01B700:  20 20 20 20 20 20 20 20 2F 2A 20 61 64 64 72 20            /* addr 
01B710:  6F 66 20 55 78 77 72 69 74 65 28 29 20 69 6E 20    of Uxwrite() in 
01B720:  41 55 58 42 55 46 20 2A 2F 0D 0A 20 20 55 61 75    AUXBUF */..  Uau
01B730:  78 66 6C 2C 20 20 20 20 20 20 20 20 20 20 20 20    xfl,            
01B740:  2F 2A 20 61 64 64 72 20 6F 66 20 55 78 66 6C 75    /* addr of Uxflu
01B750:  73 68 28 29 20 69 6E 20 41 55 58 42 55 46 20 2A    sh() in AUXBUF *
01B760:  2F 0D 0A 0D 0A 20 20 55 63 6E 74 3D 31 2C 20 20    /....  Ucnt=1,  
01B770:  20 20 20 20 20 20 20 20 20 20 2F 2A 20 61 72 67              /* arg
01B780:  20 63 6F 75 6E 74 20 66 6F 72 20 6D 61 69 6E 20     count for main 
01B790:  2A 2F 0D 0A 20 20 55 76 65 63 5B 32 30 5D 2C 20    */..  Uvec[20], 
01B7A0:  20 20 20 20 20 20 20 20 20 2F 2A 20 61 72 67 20             /* arg 
01B7B0:  76 65 63 74 6F 72 73 20 66 6F 72 20 6D 61 69 6E    vectors for main
01B7C0:  20 2A 2F 0D 0A 0D 0A 20 20 55 73 74 61 74 75 73     */....  Ustatus
01B7D0:  5B 4D 41 58 46 49 4C 45 53 5D 20 3D 20 7B 52 44    [MAXFILES] = {RD
01B7E0:  42 49 54 2C 20 57 52 54 42 49 54 2C 20 52 44 42    BIT, WRTBIT, RDB
01B7F0:  49 54 7C 57 52 54 42 49 54 7D 2C 0D 0A 20 20 20    IT|WRTBIT},..   
01B800:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01B810:  20 20 2F 2A 20 73 74 61 74 75 73 20 6F 66 20 72      /* status of r
01B820:  65 73 70 65 63 74 69 76 65 20 66 69 6C 65 20 2A    espective file *
01B830:  2F 0D 0A 20 20 55 64 65 76 69 63 65 5B 4D 41 58    /..  Udevice[MAX
01B840:  46 49 4C 45 53 5D 20 3D 20 7B 43 50 4D 43 4F 4E    FILES] = {CPMCON
01B850:  2C 20 43 50 4D 43 4F 4E 2C 20 43 50 4D 43 4F 4E    , CPMCON, CPMCON
01B860:  7D 2C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    },..            
01B870:  20 20 20 20 20 20 20 20 20 2F 2A 20 6E 6F 6E 2D             /* non-
01B880:  64 69 73 6B 20 64 65 76 69 63 65 20 61 73 73 69    disk device assi
01B890:  67 6E 6D 65 6E 74 73 20 2A 2F 0D 0A 20 20 55 6E    gnments */..  Un
01B8A0:  65 78 74 63 5B 4D 41 58 46 49 4C 45 53 5D 20 20    extc[MAXFILES]  
01B8B0:  3D 20 7B 45 4F 46 2C 20 45 4F 46 2C 20 45 4F 46    = {EOF, EOF, EOF
01B8C0:  7D 2C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    },..            
01B8D0:  20 20 20 20 20 20 20 20 20 2F 2A 20 70 69 67 65             /* pige
01B8E0:  6F 6E 68 6F 6C 65 20 66 6F 72 20 75 6E 67 65 74    onhole for unget
01B8F0:  63 20 62 79 74 65 73 20 2A 2F 0D 0A 20 20 55 66    c bytes */..  Uf
01B900:  64 5D 3D 52 44 42 49 54 3B 20 20 72 65 74 75 72    d]=RDBIT;  retur
01B910:  6E 20 28 66 64 29 3B 0D 0A 20 20 20 20 7D 0D 0A    n (fd);..    }..
01B920:  20 20 69 66 28 73 74 72 63 6D 70 28 66 6E 2C 22      if(strcmp(fn,"
01B930:  50 55 4E 3A 22 29 3D 3D 30 29 20 7B 0D 0A 20 20    PUN:")==0) {..  
01B940:  20 20 55 64 65 76 69 63 65 5B 66 64 5D 3D 43 50      Udevice[fd]=CP
01B950:  4D 50 55 4E 3B 20 55 73 74 61 74 75 73 5B 66 64    MPUN; Ustatus[fd
01B960:  5D 3D 57 52 54 42 49 54 3B 20 72 65 74 75 72 6E    ]=WRTBIT; return
01B970:  20 28 66 64 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20     (fd);..    }.. 
01B980:  20 69 66 28 73 74 72 63 6D 70 28 66 6E 2C 22 4C     if(strcmp(fn,"L
01B990:  53 54 3A 22 29 3D 3D 30 29 20 7B 0D 0A 20 20 20    ST:")==0) {..   
01B9A0:  20 55 64 65 76 69 63 65 5B 66 64 5D 3D 43 50 4D     Udevice[fd]=CPM
01B9B0:  4C 53 54 3B 20 55 73 74 61 74 75 73 5B 66 64 5D    LST; Ustatus[fd]
01B9C0:  3D 57 52 54 42 49 54 3B 20 72 65 74 75 72 6E 20    =WRTBIT; return 
01B9D0:  28 66 64 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20    (fd);..    }..  
01B9E0:  69 66 28 66 63 62 20 3D 20 55 66 63 62 70 74 72    if(fcb = Ufcbptr
01B9F0:  5B 66 64 5D 29 20 70 61 64 28 66 63 62 2C 20 4E    [fd]) pad(fcb, N
01BA00:  55 4C 4C 2C 20 46 43 42 53 49 5A 45 29 3B 0D 0A    ULL, FCBSIZE);..
01BA10:  20 20 65 6C 73 65 20 7B 0D 0A 20 20 20 20 69 66      else {..    if
01BA20:  28 28 66 63 62 20 3D 20 55 66 63 62 70 74 72 5B    ((fcb = Ufcbptr[
01BA30:  66 64 5D 20 3D 20 55 61 6C 6C 6F 63 28 46 43 42    fd] = Ualloc(FCB
01BA40:  53 49 5A 45 2C 20 59 45 53 29 29 20 3D 3D 20 4E    SIZE, YES)) == N
01BA50:  55 4C 4C 0D 0A 20 20 20 20 20 20 20 20 20 20 7C    ULL..          |
01BA60:  7C 20 28 55 62 75 66 70 74 72 5B 66 64 5D 20 3D    | (Ubufptr[fd] =
01BA70:  20 55 61 6C 6C 6F 63 28 42 55 46 53 49 5A 45 2C     Ualloc(BUFSIZE,
01BA80:  20 59 45 53 29 29 20 3D 3D 20 4E 55 4C 4C 29 0D     YES)) == NULL).
01BA90:  0A 20 20 20 20 20 20 20 20 72 65 74 75 72 6E 20    .        return 
01BAA0:  28 45 52 52 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20    (ERR);..    }.. 
01BAB0:  20 70 61 64 28 55 62 75 66 70 74 72 5B 66 64 5D     pad(Ubufptr[fd]
01BAC0:  2C 20 43 50 4D 45 4F 46 2C 20 42 55 46 53 49 5A    , CPMEOF, BUFSIZ
01BAD0:  45 29 3B 0D 0A 20 20 55 64 69 72 74 79 5B 66 64    E);..  Udirty[fd
01BAE0:  5D 20 3D 20 55 64 65 76 69 63 65 5B 66 64 5D 20    ] = Udevice[fd] 
01BAF0:  3D 20 55 63 68 72 70 6F 73 5B 66 64 5D 20 3D 20    = Uchrpos[fd] = 
01BB00:  63 62 70 74 72 5B 4D 41 58 46 49 4C 45 53 5D 2C    cbptr[MAXFILES],
01BB10:  20 2F 2A 20 46 43 42 20 70 6F 69 6E 74 65 72 73     /* FCB pointers
01BB20:  20 66 6F 72 20 6F 70 65 6E 20 66 69 6C 65 73 20     for open files 
01BB30:  2A 2F 0D 0A 20 20 55 62 75 66 70 74 72 5B 4D 41    */..  Ubufptr[MA
01BB40:  58 46 49 4C 45 53 5D 2C 20 2F 2A 20 62 75 66 66    XFILES], /* buff
01BB50:  65 72 20 70 6F 69 6E 74 65 72 73 20 66 6F 72 20    er pointers for 
01BB60:  66 69 6C 65 73 20 2A 2F 0D 0A 20 20 55 63 68 72    files */..  Uchr
01BB70:  70 6F 73 5B 4D 41 58 46 49 4C 45 53 5D 2C 20 2F    pos[MAXFILES], /
01BB80:  2A 20 63 68 61 72 61 63 74 65 72 20 70 6F 73 69    * character posi
01BB90:  74 69 6F 6E 20 69 6E 20 62 75 66 66 65 72 20 2A    tion in buffer *
01BBA0:  2F 0D 0A 20 20 55 64 69 72 74 79 5B 4D 41 58 46    /..  Udirty[MAXF
01BBB0:  49 4C 45 53 5D 3B 20 20 2F 2A 20 22 74 72 75 65    ILES];  /* "true
01BBC0:  22 20 69 66 20 63 68 61 6E 67 65 64 20 62 75 66    " if changed buf
01BBD0:  66 65 72 20 2A 2F 0D 0A 0D 0A 63 68 61 72 0D 0A    fer */....char..
01BBE0:  20 2A 55 6D 65 6D 70 74 72 2C 20 20 20 20 20 20     *Umemptr,      
01BBF0:  20 20 20 20 20 2F 2A 20 70 6F 69 6E 74 65 72 20         /* pointer 
01BC00:  74 6F 20 66 72 65 65 20 6D 65 6D 6F 72 79 2E 20    to free memory. 
01BC10:  2A 2F 0D 0A 20 20 55 61 72 67 31 5B 5D 3D 22 2A    */..  Uarg1[]="*
01BC20:  22 3B 20 20 20 20 20 20 20 2F 2A 20 66 69 72 73    ";       /* firs
01BC30:  74 20 61 72 67 20 66 6F 72 20 6D 61 69 6E 20 2A    t arg for main *
01BC40:  2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 2A 2A 2A 2A 2A    /..../*..*******
01BC50:  2A 2A 2A 2A 2A 2A 2A 2A 20 53 79 73 74 65 6D 2D    ******** System-
01BC60:  4C 65 76 65 6C 20 46 75 6E 63 74 69 6F 6E 73 20    Level Functions 
01BC70:  2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A    ****************
01BC80:  2A 0D 0A 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20    *..*/..../*..** 
01BC90:  2D 2D 20 50 72 6F 63 65 73 73 20 43 6F 6D 6D 61    -- Process Comma
01BCA0:  6E 64 20 4C 69 6E 65 2C 20 45 78 65 63 75 74 65    nd Line, Execute
01BCB0:  20 6D 61 69 6E 28 29 2C 20 61 6E 64 20 45 78 69     main(), and Exi
01BCC0:  74 20 74 6F 20 43 50 2F 4D 0D 0A 2A 2F 0D 0A 55    t to CP/M..*/..U
01BCD0:  6D 61 69 6E 28 29 20 7B 0D 0A 20 20 55 70 61 72    main() {..  Upar
01BCE0:  73 65 28 29 3B 0D 0A 20 20 6D 61 69 6E 28 55 63    se();..  main(Uc
01BCF0:  6E 74 2C 55 76 65 63 29 3B 0D 0A 20 20 65 78 69    nt,Uvec);..  exi
01BD00:  30 3B 0D 0A 23 69 66 64 65 66 20 44 49 52 0D 0A    0;..#ifdef DIR..
01BD10:  20 20 69 66 28 66 6E 5B 31 5D 20 3D 3D 20 27 3A      if(fn[1] == ':
01BD20:  27 20 26 26 20 66 6E 5B 32 5D 20 3D 3D 20 4E 55    ' && fn[2] == NU
01BD30:  4C 4C 29 20 7B 20 20 2F 2A 20 64 69 72 65 63 74    LL) {  /* direct
01BD40:  6F 72 79 20 66 69 6C 65 20 2A 2F 0D 0A 20 20 20    ory file */..   
01BD50:  20 70 61 64 28 66 63 62 2C 20 4E 55 4C 4C 2C 20     pad(fcb, NULL, 
01BD60:  46 43 42 53 49 5A 45 29 3B 0D 0A 20 20 20 20 70    FCBSIZE);..    p
01BD70:  61 64 28 66 63 62 2B 4E 41 4D 45 4F 46 46 2C 20    ad(fcb+NAMEOFF, 
01BD80:  27 3F 27 2C 20 4E 54 53 49 5A 45 29 3B 0D 0A 20    '?', NTSIZE);.. 
01BD90:  20 20 20 69 66 28 74 6F 75 70 70 65 72 28 66 6E       if(toupper(fn
01BDA0:  5B 30 5D 29 20 21 3D 20 27 58 27 29 20 2A 66 63    [0]) != 'X') *fc
01BDB0:  62 20 3D 20 74 6F 75 70 70 65 72 28 66 6E 5B 30    b = toupper(fn[0
01BDC0:  5D 29 20 2D 20 36 34 3B 0D 0A 20 20 20 20 55 63    ]) - 64;..    Uc
01BDD0:  68 72 70 6F 73 5B 66 64 5D 20 3D 20 42 55 46 53    hrpos[fd] = BUFS
01BDE0:  49 5A 45 3B 0D 0A 20 20 20 20 55 64 65 76 69 63    IZE;..    Udevic
01BDF0:  65 5B 66 64 5D 20 3D 20 46 4E 44 46 49 4C 3B 0D    e[fd] = FNDFIL;.
01BE00:  0A 20 20 20 20 55 73 74 61 74 75 73 5B 66 64 5D    .    Ustatus[fd]
01BE10:  20 3D 20 52 44 42 49 54 3B 0D 0A 20 20 20 20 72     = RDBIT;..    r
01BE20:  65 74 75 72 6E 20 28 66 64 29 3B 0D 0A 20 20 20    eturn (fd);..   
01BE30:  20 7D 0D 0A 23 65 6E 64 69 66 0D 0A 20 20 69 66     }..#endif..  if
01BE40:  28 21 55 6E 65 77 66 63 62 28 66 6E 2C 66 63 62    (!Unewfcb(fn,fcb
01BE50:  29 29 20 72 65 74 75 72 6E 20 28 45 52 52 29 3B    )) return (ERR);
01BE60:  0D 0A 20 20 73 77 69 74 63 68 28 2A 6D 6F 64 65    ..  switch(*mode
01BE70:  29 20 7B 0D 0A 20 20 20 20 63 61 73 65 20 27 72    ) {..    case 'r
01BE80:  27 3A 20 7B 0D 0A 20 20 20 20 20 20 69 66 28 55    ': {..      if(U
01BE90:  62 64 6F 73 28 4F 50 4E 46 49 4C 2C 66 63 62 29    bdos(OPNFIL,fcb)
01BEA0:  3D 3D 32 35 35 29 20 72 65 74 75 72 6E 20 28 45    ==255) return (E
01BEB0:  52 52 29 3B 0D 0A 20 20 20 20 20 20 55 73 74 61    RR);..      Usta
01BEC0:  74 75 73 5B 66 64 5D 20 3D 20 20 52 44 42 49 54    tus[fd] =  RDBIT
01BED0:  3B 0D 0A 20 20 20 20 20 20 69 66 28 55 73 65 63    ;..      if(Usec
01BEE0:  74 6F 72 28 66 64 2C 20 20 52 44 52 4E 44 29 29    tor(fd,  RDRND))
01BEF0:  20 55 73 65 74 65 6F 66 28 66 64 29 3B 0D 0A 20     Useteof(fd);.. 
01BF00:  74 28 30 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A    t(0);..  }..../*
01BF10:  0D 0A 2A 2A 20 50 61 72 73 65 20 63 6F 6D 6D 61    ..** Parse comma
01BF20:  6E 64 20 6C 69 6E 65 20 61 6E 64 20 73 65 74 75    nd line and setu
01BF30:  70 20 61 72 67 63 20 61 6E 64 20 61 72 67 76 2E    p argc and argv.
01BF40:  0D 0A 2A 2F 0D 0A 55 70 61 72 73 65 28 29 20 7B    ..*/..Uparse() {
01BF50:  0D 0A 20 20 63 68 61 72 20 2A 63 6F 75 6E 74 2C    ..  char *count,
01BF60:  20 2A 70 74 72 3B 0D 0A 20 20 63 6F 75 6E 74 20     *ptr;..  count 
01BF70:  3D 20 31 32 38 3B 20 20 2F 2A 20 43 50 2F 4D 20    = 128;  /* CP/M 
01BF80:  63 6F 6D 6D 61 6E 64 20 62 75 66 66 65 72 20 61    command buffer a
01BF90:  64 64 72 65 73 73 20 2A 2F 0D 0A 20 20 70 74 72    ddress */..  ptr
01BFA0:  20 3D 20 55 61 6C 6C 6F 63 28 28 63 6F 75 6E 74     = Ualloc((count
01BFB0:  20 3D 20 2A 63 6F 75 6E 74 26 32 35 35 29 2B 31     = *count&255)+1
01BFC0:  2C 20 59 45 53 29 3B 0D 0A 20 20 73 74 72 6E 63    , YES);..  strnc
01BFD0:  70 79 28 70 74 72 2C 20 31 32 39 2C 20 63 6F 75    py(ptr, 129, cou
01BFE0:  6E 74 29 3B 0D 0A 20 20 55 76 65 63 5B 30 5D 3D    nt);..  Uvec[0]=
01BFF0:  55 61 72 67 31 3B 09 09 09 09 2F 2A 20 66 69 72    Uarg1;..../* fir
01C000:  73 74 20 61 72 67 20 3D 20 22 2A 22 20 2A 2F 0D    st arg = "*" */.
01C010:  0A 20 20 77 68 69 6C 65 20 28 2A 70 74 72 29 20    .  while (*ptr) 
01C020:  7B 0D 0A 20 20 20 20 69 66 28 69 73 73 70 61 63    {..    if(isspac
01C030:  65 28 2A 70 74 72 29 29 20 7B 2B 2B 70 74 72 3B    e(*ptr)) {++ptr;
01C040:  20 63 6F 6E 74 69 6E 75 65 3B 7D 0D 0A 20 20 20     continue;}..   
01C050:  20 73 77 69 74 63 68 28 2A 70 74 72 29 20 7B 0D     switch(*ptr) {.
01C060:  0A 20 20 20 20 20 20 63 61 73 65 20 27 3C 27 3A    .      case '<':
01C070:  20 70 74 72 20 3D 20 55 72 65 64 69 72 65 63 74     ptr = Uredirect
01C080:  28 70 74 72 2C 20 22 72 22 2C 20 73 74 64 69 6E    (ptr, "r", stdin
01C090:  29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    );..            
01C0A0:  20 20 20 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20        continue;.. 
01C0B0:  20 20 20 20 20 63 61 73 65 20 27 3E 27 3A 20 69         case '>': i
01C0C0:  66 28 2A 28 70 74 72 2B 31 29 20 3D 3D 20 27 3E    f(*(ptr+1) == '>
01C0D0:  27 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ')..            
01C0E0:  20 20 20 20 20 20 20 20 20 70 74 72 20 3D 20 55             ptr = U
01C0F0:  72 65 64 69 72 65 63 74 28 70 74 72 2B 31 2C 20    redirect(ptr+1, 
01C100:  20 20 20 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20         break;..   
01C110:  20 20 20 7D 0D 0A 20 20 20 20 63 61 73 65 20 27       }..    case '
01C120:  77 27 3A 20 7B 0D 0A 20 20 20 20 20 20 69 66 28    w': {..      if(
01C130:  55 62 64 6F 73 28 46 4E 44 46 49 4C 2C 66 63 62    Ubdos(FNDFIL,fcb
01C140:  29 21 3D 32 35 35 29 20 55 62 64 6F 73 28 44 45    )!=255) Ubdos(DE
01C150:  4C 46 49 4C 2C 66 63 62 29 3B 0D 0A 20 20 20 20    LFIL,fcb);..    
01C160:  63 72 65 61 74 65 3A 0D 0A 20 20 20 20 20 20 69    create:..      i
01C170:  66 28 55 62 64 6F 73 28 4D 41 4B 46 49 4C 2C 66    f(Ubdos(MAKFIL,f
01C180:  63 62 29 3D 3D 32 35 35 29 20 72 65 74 75 72 6E    cb)==255) return
01C190:  20 28 45 52 52 29 3B 0D 0A 20 20 20 20 20 20 55     (ERR);..      U
01C1A0:  73 74 61 74 75 73 5B 66 64 5D 20 3D 20 45 4F 46    status[fd] = EOF
01C1B0:  42 49 54 7C 57 52 54 42 49 54 3B 0D 0A 20 20 20    BIT|WRTBIT;..   
01C1C0:  20 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20       break;..     
01C1D0:  20 7D 0D 0A 20 20 20 20 64 65 66 61 75 6C 74 3A     }..    default:
01C1E0:  20 7B 20 20 20 20 20 20 2F 2A 20 61 70 70 65 6E     {      /* appen
01C1F0:  64 20 6D 6F 64 65 20 2A 2F 0D 0A 20 20 20 20 20    d mode */..     
01C200:  20 69 66 28 55 62 64 6F 73 28 4F 50 4E 46 49 4C     if(Ubdos(OPNFIL
01C210:  2C 66 63 62 29 3D 3D 32 35 35 29 20 67 6F 74 6F    ,fcb)==255) goto
01C220:  20 63 72 65 61 74 65 3B 0D 0A 20 20 20 20 20 20     create;..      
01C230:  55 73 74 61 74 75 73 5B 66 64 5D 20 3D 20 52 44    Ustatus[fd] = RD
01C240:  42 49 54 3B 0D 0A 20 20 20 20 20 20 63 73 65 65    BIT;..      csee
01C250:  6B 28 66 64 2C 20 2D 31 2C 20 32 29 3B 0D 0A 20    k(fd, -1, 2);.. 
01C260:  20 20 20 20 20 77 68 69 6C 65 28 66 67 65 74 63         while(fgetc
01C270:  28 66 64 29 21 3D 45 4F 46 29 20 3B 0D 0A 20 20    (fd)!=EOF) ;..  
01C280:  20 20 20 20 55 73 74 61 74 75 73 5B 66 64 5D 20        Ustatus[fd] 
01C290:  3D 20 45 4F 46 42 49 54 7C 57 52 54 42 49 54 3B    = EOFBIT|WRTBIT;
01C2A0:  0D 0A 20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D    ..      }..    }
01C2B0:  0D 0A 20 20 69 66 28 2A 28 6D 6F 64 65 2B 31 29    ..  if(*(mode+1)
01C2C0:  3D 3D 27 2B 27 29 20 55 73 74 61 74 75 73 5B 66    =='+') Ustatus[f
01C2D0:  64 5D 20 7C 3D 20 52 44 42 49 54 7C 57 52 54 42    d] |= RDBIT|WRTB
01C2E0:  49 54 3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 66    IT;..  return (f
01C2F0:  64 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A    d);..  }..../*..
01C300:  22 61 22 2C 20 73 74 64 6F 75 74 29 3B 0D 0A 20    "a", stdout);.. 
01C310:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                   e
01C320:  6C 73 65 20 70 74 72 20 3D 20 55 72 65 64 69 72    lse ptr = Uredir
01C330:  65 63 74 28 70 74 72 2C 20 20 20 22 77 22 2C 20    ect(ptr,   "w", 
01C340:  73 74 64 6F 75 74 29 3B 0D 0A 20 20 20 20 20 20    stdout);..      
01C350:  20 20 20 20 20 20 20 20 20 20 63 6F 6E 74 69 6E              contin
01C360:  75 65 3B 0D 0A 20 20 20 20 20 20 64 65 66 61 75    ue;..      defau
01C370:  6C 74 3A 20 20 69 66 28 55 63 6E 74 20 3C 20 32    lt:  if(Ucnt < 2
01C380:  30 29 20 55 76 65 63 5B 55 63 6E 74 2B 2B 5D 20    0) Uvec[Ucnt++] 
01C390:  3D 20 70 74 72 3B 0D 0A 20 20 20 20 20 20 20 20    = ptr;..        
01C3A0:  20 20 20 20 20 20 20 20 70 74 72 20 3D 20 55 66            ptr = Uf
01C3B0:  69 65 6C 64 28 70 74 72 29 3B 0D 0A 20 20 20 20    ield(ptr);..    
01C3C0:  20 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D      }..    }..  }.
01C3D0:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 49 73 6F 6C 61 74    .../*..** Isolat
01C3E0:  65 20 6E 65 78 74 20 63 6F 6D 6D 61 6E 64 2D 6C    e next command-l
01C3F0:  69 6E 65 20 66 69 65 6C 64 2E 0D 0A 2A 2F 0D 0A    ine field...*/..
01C400:  55 66 69 65 6C 64 28 70 74 72 29 20 63 68 61 72    Ufield(ptr) char
01C410:  20 2A 70 74 72 3B 20 7B 0D 0A 20 20 77 68 69 6C     *ptr; {..  whil
01C420:  65 28 2A 70 74 72 29 20 7B 0D 0A 20 20 20 20 69    e(*ptr) {..    i
01C430:  66 28 69 73 73 70 61 63 65 28 2A 70 74 72 29 29    f(isspace(*ptr))
01C440:  20 7B 0D 0A 20 20 20 20 20 20 2A 70 74 72 20 3D     {..      *ptr =
01C450:  20 4E 55 4C 4C 3B 0D 0A 20 20 20 20 20 20 72 65     NULL;..      re
01C460:  74 75 72 6E 20 28 2B 2B 70 74 72 29 3B 0D 0A 20    turn (++ptr);.. 
01C470:  20 20 20 20 20 7D 0D 0A 20 20 20 20 2B 2B 70 74         }..    ++pt
01C480:  72 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74    r;..    }..  ret
01C490:  75 72 6E 20 28 70 74 72 29 3B 0D 0A 20 20 7D 0D    urn (ptr);..  }.
01C4A0:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 52 65 64 69 72 65    .../*..** Redire
01C4B0:  63 74 20 73 74 64 69 6E 20 6F 72 20 73 74 64 6F    ct stdin or stdo
01C4C0:  75 74 2E 0D 0A 2A 2F 0D 0A 55 72 65 64 69 72 65    ut...*/..Uredire
01C4D0:  63 74 28 70 74 72 2C 20 6D 6F 64 65 2C 20 73 74    ct(ptr, mode, st
01C4E0:  64 29 20 20 63 68 61 72 20 2A 70 74 72 2C 20 2A    d)  char *ptr, *
01C4F0:  6D 6F 64 65 3B 20 69 6E 74 20 73 74 64 3B 20 7B    mode; int std; {
01C500:  2A 2A 20 43 72 65 61 74 65 20 43 50 2F 4D 20 66    ** Create CP/M f
01C510:  69 6C 65 20 63 6F 6E 74 72 6F 6C 20 62 6C 6F 63    ile control bloc
01C520:  6B 20 66 72 6F 6D 20 66 69 6C 65 20 6E 61 6D 65    k from file name
01C530:  2E 20 0D 0A 2A 2A 20 45 6E 74 72 79 3A 20 66 6E    . ..** Entry: fn
01C540:  20 20 3D 20 4C 65 67 61 6C 20 43 50 2F 4D 20 66      = Legal CP/M f
01C550:  69 6C 65 20 6E 61 6D 65 20 28 6E 75 6C 6C 20 74    ile name (null t
01C560:  65 72 6D 69 6E 61 74 65 64 29 0D 0A 2A 2A 20 20    erminated)..**  
01C570:  20 20 20 20 20 20 20 20 20 20 20 20 4D 61 79 20                May 
01C580:  62 65 20 70 72 65 66 69 78 65 64 20 62 79 20 6C    be prefixed by l
01C590:  65 74 74 65 72 20 6F 66 20 64 72 69 76 65 2E 0D    etter of drive..
01C5A0:  0A 2A 2A 20 20 20 20 20 20 20 20 66 63 62 20 3D    .**        fcb =
01C5B0:  20 50 6F 69 6E 74 65 72 20 74 6F 20 6D 65 6D 6F     Pointer to memo
01C5C0:  72 79 20 73 70 61 63 65 20 66 6F 72 20 43 50 2F    ry space for CP/
01C5D0:  4D 20 66 63 62 2E 0D 0A 2A 2A 20 52 65 74 75 72    M fcb...** Retur
01C5E0:  6E 73 20 74 68 65 20 70 6F 69 6E 74 65 72 20 74    ns the pointer t
01C5F0:  6F 20 74 68 65 20 66 63 62 2E 0D 0A 2A 2F 0D 0A    o the fcb...*/..
01C600:  55 6E 65 77 66 63 62 28 66 6E 2C 20 66 63 62 29    Unewfcb(fn, fcb)
01C610:  20 63 68 61 72 20 2A 66 6E 2C 20 2A 66 63 62 3B     char *fn, *fcb;
01C620:  20 7B 0D 0A 20 20 63 68 61 72 20 2A 66 6E 70 74     {..  char *fnpt
01C630:  72 3B 0D 0A 20 20 70 61 64 28 66 63 62 2B 31 2C    r;..  pad(fcb+1,
01C640:  20 53 50 41 43 45 2C 20 4E 54 53 49 5A 45 29 3B     SPACE, NTSIZE);
01C650:  0D 0A 20 20 69 66 28 2A 28 66 6E 20 2B 20 31 29    ..  if(*(fn + 1)
01C660:  20 3D 3D 20 27 3A 27 29 20 7B 0D 0A 20 20 20 20     == ':') {..    
01C670:  2A 66 63 62 20 3D 20 74 6F 75 70 70 65 72 28 2A    *fcb = toupper(*
01C680:  66 6E 29 20 2D 20 36 34 3B 0D 0A 20 20 20 20 66    fn) - 64;..    f
01C690:  6E 70 74 72 20 3D 20 66 6E 20 2B 20 32 3B 0D 0A    nptr = fn + 2;..
01C6A0:  20 20 20 20 7D 0D 0A 20 20 65 6C 73 65 20 66 6E        }..  else fn
01C6B0:  70 74 72 20 3D 20 66 6E 3B 0D 0A 20 20 69 66 28    ptr = fn;..  if(
01C6C0:  2A 66 6E 70 74 72 20 3D 3D 20 4E 55 4C 4C 29 20    *fnptr == NULL) 
01C6D0:  72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20 20    return (NO);..  
01C6E0:  66 6E 70 74 72 20 3D 20 55 6C 6F 61 64 66 6E 28    fnptr = Uloadfn(
01C6F0:  66 63 62 20 2B 20 4E 41 4D 45 4F 46 46 2C 20 66    fcb + NAMEOFF, f
01C700:  0D 0A 20 20 63 68 61 72 20 2A 66 6E 3B 0D 0A 20    ..  char *fn;.. 
01C710:  20 66 6E 20 3D 20 2B 2B 70 74 72 3B 0D 0A 20 20     fn = ++ptr;..  
01C720:  70 74 72 20 3D 20 55 66 69 65 6C 64 28 70 74 72    ptr = Ufield(ptr
01C730:  29 3B 0D 0A 20 20 69 66 28 55 6F 70 65 6E 28 66    );..  if(Uopen(f
01C740:  6E 2C 20 6D 6F 64 65 2C 20 73 74 64 29 3D 3D 45    n, mode, std)==E
01C750:  52 52 29 20 65 78 69 74 28 27 52 27 29 3B 0D 0A    RR) exit('R');..
01C760:  20 20 72 65 74 75 72 6E 20 28 70 74 72 29 3B 0D      return (ptr);.
01C770:  0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 2D    .  }..../*..** -
01C780:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 46 69 6C 65    ----------- File
01C790:  20 4F 70 65 6E 0D 0A 2A 2F 0D 0A 0D 0A 2F 2A 0D     Open..*/..../*.
01C7A0:  0A 2A 2A 20 4F 70 65 6E 20 66 69 6C 65 20 6F 6E    .** Open file on
01C7B0:  20 73 70 65 63 69 66 69 65 64 20 66 64 2E 0D 0A     specified fd...
01C7C0:  2A 2F 0D 0A 55 6F 70 65 6E 28 66 6E 2C 20 6D 6F    */..Uopen(fn, mo
01C7D0:  64 65 2C 20 66 64 29 20 63 68 61 72 20 2A 66 6E    de, fd) char *fn
01C7E0:  2C 20 2A 6D 6F 64 65 3B 20 69 6E 74 20 66 64 3B    , *mode; int fd;
01C7F0:  20 7B 0D 0A 20 20 63 68 61 72 20 2A 66 63 62 3B     {..  char *fcb;
01C800:  0D 0A 20 20 69 66 28 21 73 74 72 63 68 72 28 22    ..  if(!strchr("
01C810:  72 77 61 22 2C 20 2A 6D 6F 64 65 29 29 20 72 65    rwa", *mode)) re
01C820:  74 75 72 6E 20 28 45 52 52 29 3B 0D 0A 20 20 55    turn (ERR);..  U
01C830:  6E 65 78 74 63 5B 66 64 5D 20 3D 20 45 4F 46 3B    nextc[fd] = EOF;
01C840:  0D 0A 20 20 69 66 28 55 61 75 78 69 6E 29 20 55    ..  if(Uauxin) U
01C850:  61 75 78 69 6E 28 66 64 29 3B 0D 0A 20 20 69 66    auxin(fd);..  if
01C860:  28 73 74 72 63 6D 70 28 66 6E 2C 22 43 4F 4E 3A    (strcmp(fn,"CON:
01C870:  22 29 3D 3D 30 29 20 7B 0D 0A 20 20 20 20 55 64    ")==0) {..    Ud
01C880:  65 76 69 63 65 5B 66 64 5D 3D 43 50 4D 43 4F 4E    evice[fd]=CPMCON
01C890:  3B 20 55 73 74 61 74 75 73 5B 66 64 5D 3D 52 44    ; Ustatus[fd]=RD
01C8A0:  42 49 54 7C 57 52 54 42 49 54 3B 20 72 65 74 75    BIT|WRTBIT; retu
01C8B0:  72 6E 20 28 66 64 29 3B 0D 0A 20 20 20 20 7D 0D    rn (fd);..    }.
01C8C0:  0A 20 20 69 66 28 73 74 72 63 6D 70 28 66 6E 2C    .  if(strcmp(fn,
01C8D0:  22 52 44 52 3A 22 29 3D 3D 30 29 20 7B 0D 0A 20    "RDR:")==0) {.. 
01C8E0:  20 20 20 55 64 65 76 69 63 65 5B 66 64 5D 3D 43       Udevice[fd]=C
01C8F0:  50 4D 52 44 52 3B 20 55 73 74 61 74 75 73 5B 66    PMRDR; Ustatus[f
01C900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01C910:  18 00 01 00 02 09 52 E5 18 00 41 02 00 00 00 02    ......R...A.....
01C920:  18 00 46 02 00 00 00 02 18 00 42 02 00 00 00 02    ..F.......B.....
01C930:  18 00 47 02 00 00 00 02 18 00 43 02 00 00 00 02    ..G.......C.....
01C940:  18 00 48 02 00 00 00 02 18 00 44 02 00 00 00 02    ..H.......D.....
01C950:  18 00 49 02 00 00 00 02 18 00 45 02 00 00 00 02    ..I.......E.....
01C960:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C970:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C980:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C990:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01C9F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01CA00:  6E 70 74 72 2C 20 4E 41 4D 45 53 49 5A 45 29 3B    nptr, NAMESIZE);
01CA10:  0D 0A 20 20 69 66 28 2A 66 6E 70 74 72 20 3D 3D    ..  if(*fnptr ==
01CA20:  20 27 2E 27 29 20 2B 2B 66 6E 70 74 72 3B 0D 0A     '.') ++fnptr;..
01CA30:  20 20 65 6C 73 65 20 69 66 28 2A 66 6E 70 74 72      else if(*fnptr
01CA40:  29 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A    ) return (NO);..
01CA50:  20 20 66 6E 70 74 72 20 3D 20 55 6C 6F 61 64 66      fnptr = Uloadf
01CA60:  6E 28 66 63 62 20 2B 20 54 59 50 45 4F 46 46 2C    n(fcb + TYPEOFF,
01CA70:  20 66 6E 70 74 72 2C 20 54 59 50 45 53 49 5A 45     fnptr, TYPESIZE
01CA80:  29 3B 0D 0A 20 20 69 66 28 2A 66 6E 70 74 72 29    );..  if(*fnptr)
01CA90:  20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20     return (NO);.. 
01CAA0:  20 72 65 74 75 72 6E 20 28 59 45 53 29 3B 0D 0A     return (YES);..
01CAB0:  20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 4C 6F      }..../*..** Lo
01CAC0:  61 64 20 69 6E 74 6F 20 66 63 62 20 61 6E 64 20    ad into fcb and 
01CAD0:  76 61 6C 69 64 61 74 65 20 66 69 6C 65 20 6E 61    validate file na
01CAE0:  6D 65 2E 0D 0A 2A 2F 0D 0A 55 6C 6F 61 64 66 6E    me...*/..Uloadfn
01CAF0:  28 64 65 73 74 2C 20 73 6F 75 72 2C 20 6D 61 78    (dest, sour, max
01CB00:  29 20 63 68 61 72 20 2A 64 65 73 74 2C 20 2A 73    ) char *dest, *s
01CB10:  6F 75 72 3B 20 69 6E 74 20 6D 61 78 3B 20 7B 0D    our; int max; {.
01CB20:  0A 20 20 77 68 69 6C 65 28 2A 73 6F 75 72 20 26    .  while(*sour &
01CB30:  26 20 21 73 74 72 63 68 72 28 22 3C 3E 2E 2C 3B    & !strchr("<>.,;
01CB40:  3A 3D 3F 2A 5B 5D 22 2C 20 2A 73 6F 75 72 29 29    :=?*[]", *sour))
01CB50:  20 7B 0D 0A 20 20 20 20 69 66 28 6D 61 78 2D 2D     {..    if(max--
01CB60:  29 20 2A 64 65 73 74 2B 2B 20 3D 20 74 6F 75 70    ) *dest++ = toup
01CB70:  70 65 72 28 2A 73 6F 75 72 2B 2B 29 3B 0D 0A 20    per(*sour++);.. 
01CB80:  20 20 20 65 6C 73 65 20 62 72 65 61 6B 3B 0D 0A       else break;..
01CB90:  20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20        }..  return 
01CBA0:  28 73 6F 75 72 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A    (sour);..  }....
01CBB0:  2F 2A 0D 0A 2A 2A 20 2D 2D 2D 2D 2D 2D 2D 2D 2D    /*..** ---------
01CBC0:  2D 2D 2D 20 46 69 6C 65 20 49 6E 70 75 74 0D 0A    --- File Input..
01CBD0:  2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 42 69 6E    */..../*..** Bin
01CBE0:  61 72 79 2D 73 74 72 65 61 6D 20 69 6E 70 75 74    ary-stream input
01CBF0:  20 6F 66 20 6F 6E 65 20 62 79 74 65 20 66 72 6F     of one byte fro
01CC00:  20 2A 62 75 66 6C 6F 63 3B 0D 0A 20 20 73 77 69     *bufloc;..  swi
01CC10:  74 63 68 20 28 55 6D 6F 64 65 28 66 64 29 29 20    tch (Umode(fd)) 
01CC20:  7B 0D 0A 20 20 20 20 64 65 66 61 75 6C 74 3A 20    {..    default: 
01CC30:  55 73 65 74 65 72 72 28 66 64 29 3B 20 72 65 74    Useterr(fd); ret
01CC40:  75 72 6E 20 28 45 4F 46 29 3B 0D 0A 20 20 20 20    urn (EOF);..    
01CC50:  63 61 73 65 20 57 52 54 42 49 54 3A 0D 0A 20 20    case WRTBIT:..  
01CC60:  20 20 63 61 73 65 20 57 52 54 42 49 54 7C 52 44      case WRTBIT|RD
01CC70:  42 49 54 3A 0D 0A 20 20 20 20 63 61 73 65 20 57    BIT:..    case W
01CC80:  52 54 42 49 54 7C 45 4F 46 42 49 54 3A 0D 0A 20    RTBIT|EOFBIT:.. 
01CC90:  20 20 20 63 61 73 65 20 57 52 54 42 49 54 7C 45       case WRTBIT|E
01CCA0:  4F 46 42 49 54 7C 52 44 42 49 54 3A 0D 0A 20 20    OFBIT|RDBIT:..  
01CCB0:  20 20 7D 0D 0A 20 20 73 77 69 74 63 68 28 55 64      }..  switch(Ud
01CCC0:  65 76 69 63 65 5B 66 64 5D 29 20 7B 0D 0A 20 20    evice[fd]) {..  
01CCD0:  20 20 2F 2A 20 52 44 52 20 63 61 6E 27 74 20 6F      /* RDR can't o
01CCE0:  63 63 75 72 20 73 69 6E 63 65 20 69 74 20 69 73    ccur since it is
01CCF0:  20 72 65 61 64 20 6D 6F 64 65 20 2A 2F 0D 0A 20     read mode */.. 
01CD00:  20 20 20 63 61 73 65 20 43 50 4D 43 4F 4E 3A 20       case CPMCON: 
01CD10:  72 65 74 75 72 6E 20 28 55 63 6F 6E 6F 75 74 28    return (Uconout(
01CD20:  63 68 29 29 3B 0D 0A 20 20 20 20 63 61 73 65 20    ch));..    case 
01CD30:  43 50 4D 50 55 4E 3A 0D 0A 20 20 20 20 63 61 73    CPMPUN:..    cas
01CD40:  65 20 43 50 4D 4C 53 54 3A 20 55 62 64 6F 73 28    e CPMLST: Ubdos(
01CD50:  55 64 65 76 69 63 65 5B 66 64 5D 2C 20 63 68 29    Udevice[fd], ch)
01CD60:  3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ;..             
01CD70:  20 20 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20        break;..    
01CD80:  64 65 66 61 75 6C 74 3A 0D 0A 20 20 20 20 20 20    default:..      
01CD90:  69 66 28 55 61 75 78 73 7A 20 26 26 20 55 61 75    if(Uauxsz && Uau
01CDA0:  78 73 7A 5B 66 64 5D 29 20 72 65 74 75 72 6E 20    xsz[fd]) return 
01CDB0:  28 55 61 75 78 77 74 28 63 68 2C 20 66 64 29 29    (Uauxwt(ch, fd))
01CDC0:  3B 0D 0A 20 20 20 20 20 20 69 66 28 55 63 68 72    ;..      if(Uchr
01CDD0:  70 6F 73 5B 66 64 5D 3E 3D 42 55 46 53 49 5A 45    pos[fd]>=BUFSIZE
01CDE0:  20 26 26 20 21 55 70 75 74 73 65 63 28 66 64 29     && !Uputsec(fd)
01CDF0:  29 20 72 65 74 75 72 6E 20 28 45 4F 46 29 3B 0D    ) return (EOF);.
01CE00:  6D 20 66 64 2E 0D 0A 2A 2F 0D 0A 55 72 65 61 64    m fd...*/..Uread
01CE10:  28 66 64 29 20 69 6E 74 20 66 64 3B 20 7B 0D 0A    (fd) int fd; {..
01CE20:  20 20 63 68 61 72 20 2A 62 75 66 6C 6F 63 3B 0D      char *bufloc;.
01CE30:  0A 20 20 69 6E 74 20 63 68 3B 0D 0A 20 20 73 77    .  int ch;..  sw
01CE40:  69 74 63 68 20 28 55 6D 6F 64 65 28 66 64 29 29    itch (Umode(fd))
01CE50:  20 7B 0D 0A 20 20 20 20 64 65 66 61 75 6C 74 3A     {..    default:
01CE60:  20 55 73 65 74 65 72 72 28 66 64 29 3B 20 72 65     Useterr(fd); re
01CE70:  74 75 72 6E 20 28 45 4F 46 29 3B 0D 0A 20 20 20    turn (EOF);..   
01CE80:  20 63 61 73 65 20 52 44 42 49 54 3A 0D 0A 20 20     case RDBIT:..  
01CE90:  20 20 63 61 73 65 20 52 44 42 49 54 7C 57 52 54      case RDBIT|WRT
01CEA0:  42 49 54 3A 0D 0A 20 20 20 20 7D 0D 0A 20 20 69    BIT:..    }..  i
01CEB0:  66 28 28 63 68 20 3D 20 55 6E 65 78 74 63 5B 66    f((ch = Unextc[f
01CEC0:  64 5D 29 20 21 3D 20 45 4F 46 29 20 7B 0D 0A 20    d]) != EOF) {.. 
01CED0:  20 20 20 55 6E 65 78 74 63 5B 66 64 5D 20 3D 20       Unextc[fd] = 
01CEE0:  45 4F 46 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E    EOF;..    return
01CEF0:  20 28 63 68 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20     (ch);..    }.. 
01CF00:  20 73 77 69 74 63 68 28 55 64 65 76 69 63 65 5B     switch(Udevice[
01CF10:  66 64 5D 29 20 7B 0D 0A 20 20 20 20 2F 2A 20 50    fd]) {..    /* P
01CF20:  55 4E 20 26 20 4C 53 54 20 63 61 6E 27 74 20 6F    UN & LST can't o
01CF30:  63 63 75 72 20 73 69 6E 63 65 20 74 68 65 79 20    ccur since they 
01CF40:  61 72 65 20 77 72 69 74 65 20 6D 6F 64 65 20 2A    are write mode *
01CF50:  2F 0D 0A 20 20 20 20 63 61 73 65 20 43 50 4D 43    /..    case CPMC
01CF60:  4F 4E 3A 20 72 65 74 75 72 6E 20 28 55 63 6F 6E    ON: return (Ucon
01CF70:  69 6E 28 29 29 3B 0D 0A 20 20 20 20 63 61 73 65    in());..    case
01CF80:  20 43 50 4D 52 44 52 3A 20 72 65 74 75 72 6E 20     CPMRDR: return 
01CF90:  28 55 62 64 6F 73 28 52 44 52 49 4E 50 2C 4E 55    (Ubdos(RDRINP,NU
01CFA0:  4C 4C 29 29 3B 0D 0A 20 20 20 20 64 65 66 61 75    LL));..    defau
01CFB0:  6C 74 3A 0D 0A 20 20 20 20 20 20 20 20 20 69 66    lt:..         if
01CFC0:  28 55 61 75 78 73 7A 20 26 26 20 55 61 75 78 73    (Uauxsz && Uauxs
01CFD0:  7A 5B 66 64 5D 29 20 72 65 74 75 72 6E 20 28 55    z[fd]) return (U
01CFE0:  61 75 78 72 64 28 66 64 29 29 3B 0D 0A 20 20 20    auxrd(fd));..   
01CFF0:  20 20 20 20 20 20 69 66 28 55 63 68 72 70 6F 73          if(Uchrpos
01D000:  0A 20 20 20 20 20 20 62 75 66 6C 6F 63 20 3D 20    .      bufloc = 
01D010:  55 62 75 66 70 74 72 5B 66 64 5D 20 2B 20 55 63    Ubufptr[fd] + Uc
01D020:  68 72 70 6F 73 5B 66 64 5D 2B 2B 3B 0D 0A 20 20    hrpos[fd]++;..  
01D030:  20 20 20 20 2A 62 75 66 6C 6F 63 20 3D 20 63 68        *bufloc = ch
01D040:  3B 0D 0A 20 20 20 20 20 20 55 64 69 72 74 79 5B    ;..      Udirty[
01D050:  66 64 5D 20 3D 20 59 45 53 3B 0D 0A 20 20 20 20    fd] = YES;..    
01D060:  7D 0D 0A 20 20 72 65 74 75 72 6E 20 28 63 68 29    }..  return (ch)
01D070:  3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A    ;..  }..../*..**
01D080:  20 43 6F 6E 73 6F 6C 65 20 63 68 61 72 61 63 74     Console charact
01D090:  65 72 20 6F 75 74 70 75 74 2E 0D 0A 2A 2F 0D 0A    er output...*/..
01D0A0:  55 63 6F 6E 6F 75 74 28 63 68 29 20 69 6E 74 20    Uconout(ch) int 
01D0B0:  63 68 3B 20 7B 0D 0A 20 20 55 62 64 6F 73 28 44    ch; {..  Ubdos(D
01D0C0:  43 4F 4E 49 4F 2C 20 63 68 29 3B 0D 0A 20 20 72    CONIO, ch);..  r
01D0D0:  65 74 75 72 6E 20 28 63 68 29 3B 0D 0A 20 20 7D    eturn (ch);..  }
01D0E0:  0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 57 72 69 74 65    ..../*..** Write
01D0F0:  20 6F 6E 65 20 73 65 63 74 6F 72 20 74 6F 20 66     one sector to f
01D100:  64 2E 20 0D 0A 2A 2F 0D 0A 55 70 75 74 73 65 63    d. ..*/..Uputsec
01D110:  28 66 64 29 20 69 6E 74 20 66 64 3B 20 7B 0D 0A    (fd) int fd; {..
01D120:  20 20 69 66 28 66 66 6C 75 73 68 28 66 64 29 29      if(fflush(fd))
01D130:  20 72 65 74 75 72 6E 20 28 4E 4F 29 3B 0D 0A 20     return (NO);.. 
01D140:  20 55 61 64 76 61 6E 63 65 28 66 64 29 3B 0D 0A     Uadvance(fd);..
01D150:  20 20 69 66 28 55 73 74 61 74 75 73 5B 66 64 5D      if(Ustatus[fd]
01D160:  26 45 4F 46 42 49 54 20 7C 7C 20 55 73 65 63 74    &EOFBIT || Usect
01D170:  6F 72 28 66 64 2C 20 52 44 52 4E 44 29 29 0D 0A    or(fd, RDRND))..
01D180:  20 20 20 20 70 61 64 28 55 62 75 66 70 74 72 5B        pad(Ubufptr[
01D190:  66 64 5D 2C 20 43 50 4D 45 4F 46 2C 20 42 55 46    fd], CPMEOF, BUF
01D1A0:  53 49 5A 45 29 3B 0D 0A 20 20 72 65 74 75 72 6E    SIZE);..  return
01D1B0:  20 28 59 45 53 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A     (YES);..  }....
01D1C0:  2F 2A 0D 0A 2A 2A 20 2D 2D 2D 2D 2D 2D 2D 2D 2D    /*..** ---------
01D1D0:  2D 2D 2D 20 42 75 66 66 65 72 20 53 65 72 76 69    --- Buffer Servi
01D1E0:  63 65 0D 0A 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A    ce..*/..../*..**
01D1F0:  20 41 64 76 61 6E 63 65 20 74 6F 20 6E 65 78 74     Advance to next
01D200:  5B 66 64 5D 3E 3D 42 55 46 53 49 5A 45 20 26 26    [fd]>=BUFSIZE &&
01D210:  20 21 55 67 65 74 73 65 63 28 66 64 29 29 0D 0A     !Ugetsec(fd))..
01D220:  20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72               retur
01D230:  6E 20 28 45 4F 46 29 3B 0D 0A 20 20 20 20 20 20    n (EOF);..      
01D240:  20 20 20 62 75 66 6C 6F 63 20 3D 20 55 62 75 66       bufloc = Ubuf
01D250:  70 74 72 5B 66 64 5D 20 2B 20 55 63 68 72 70 6F    ptr[fd] + Uchrpo
01D260:  73 5B 66 64 5D 2B 2B 3B 0D 0A 20 20 20 20 20 20    s[fd]++;..      
01D270:  20 20 20 72 65 74 75 72 6E 20 28 2A 62 75 66 6C       return (*bufl
01D280:  6F 63 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D    oc);..    }..  }
01D290:  0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 43 6F 6E 73 6F    ..../*..** Conso
01D2A0:  6C 65 20 63 68 61 72 61 63 74 65 72 20 69 6E 70    le character inp
01D2B0:  75 74 2E 0D 0A 2A 2F 0D 0A 55 63 6F 6E 69 6E 28    ut...*/..Uconin(
01D2C0:  29 20 7B 0D 0A 20 20 69 6E 74 20 63 68 3B 0D 0A    ) {..  int ch;..
01D2D0:  20 20 77 68 69 6C 65 28 21 28 63 68 20 3D 20 55      while(!(ch = U
01D2E0:  62 64 6F 73 28 44 43 4F 4E 49 4F 2C 20 32 35 35    bdos(DCONIO, 255
01D2F0:  29 29 29 20 3B 0D 0A 20 20 73 77 69 74 63 68 28    ))) ;..  switch(
01D300:  63 68 29 20 7B 0D 0A 20 20 20 20 63 61 73 65 20    ch) {..    case 
01D310:  41 42 4F 52 54 3A 20 65 78 69 74 28 30 29 3B 0D    ABORT: exit(0);.
01D320:  0A 20 20 20 20 63 61 73 65 20 20 20 20 4C 46 3A    .    case    LF:
01D330:  0D 0A 20 20 20 20 63 61 73 65 20 20 20 20 43 52    ..    case    CR
01D340:  3A 20 55 63 6F 6E 6F 75 74 28 4C 46 29 3B 20 72    : Uconout(LF); r
01D350:  65 74 75 72 6E 20 28 55 63 6F 6E 6F 75 74 28 43    eturn (Uconout(C
01D360:  52 29 29 3B 0D 0A 20 20 20 20 63 61 73 65 20 20    R));..    case  
01D370:  20 44 45 4C 3A 20 63 68 20 3D 20 52 55 42 3B 0D     DEL: ch = RUB;.
01D380:  0A 20 20 20 20 20 20 20 64 65 66 61 75 6C 74 3A    .       default:
01D390:  20 69 66 28 63 68 20 3C 20 33 32 29 20 7B 20 55     if(ch < 32) { U
01D3A0:  63 6F 6E 6F 75 74 28 27 5E 27 29 3B 20 55 63 6F    conout('^'); Uco
01D3B0:  6E 6F 75 74 28 63 68 2B 36 34 29 3B 7D 0D 0A 20    nout(ch+64);}.. 
01D3C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                   e
01D3D0:  6C 73 65 20 55 63 6F 6E 6F 75 74 28 63 68 29 3B    lse Uconout(ch);
01D3E0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
01D3F0:  20 20 72 65 74 75 72 6E 20 28 63 68 29 3B 0D 0A      return (ch);..
01D400:  20 73 65 63 74 6F 72 2E 0D 0A 2A 2F 0D 0A 55 61     sector...*/..Ua
01D410:  64 76 61 6E 63 65 28 66 64 29 20 69 6E 74 20 66    dvance(fd) int f
01D420:  64 3B 20 7B 0D 0A 20 20 69 6E 74 20 2A 72 72 6E    d; {..  int *rrn
01D430:  3B 0D 0A 20 20 72 72 6E 20 3D 20 55 66 63 62 70    ;..  rrn = Ufcbp
01D440:  74 72 5B 66 64 5D 20 2B 20 52 52 4E 4F 46 46 3B    tr[fd] + RRNOFF;
01D450:  0D 0A 20 20 2B 2B 28 2A 72 72 6E 29 3B 0D 0A 20    ..  ++(*rrn);.. 
01D460:  20 55 63 68 72 70 6F 73 5B 66 64 5D 20 3D 20 30     Uchrpos[fd] = 0
01D470:  3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A    ;..  }..../*..**
01D480:  20 53 65 63 74 6F 72 20 49 2F 4F 2E 0D 0A 2A 2F     Sector I/O...*/
01D490:  0D 0A 55 73 65 63 74 6F 72 28 66 64 2C 20 66 75    ..Usector(fd, fu
01D4A0:  6E 63 29 20 69 6E 74 20 66 64 2C 20 66 75 6E 63    nc) int fd, func
01D4B0:  3B 20 7B 0D 0A 20 20 69 6E 74 20 65 72 72 6F 72    ; {..  int error
01D4C0:  3B 0D 0A 20 20 55 62 64 6F 73 28 53 45 54 44 4D    ;..  Ubdos(SETDM
01D4D0:  41 2C 20 55 62 75 66 70 74 72 5B 66 64 5D 29 3B    A, Ubufptr[fd]);
01D4E0:  0D 0A 20 20 65 72 72 6F 72 20 3D 20 55 62 64 6F    ..  error = Ubdo
01D4F0:  73 28 66 75 6E 63 2C 20 55 66 63 62 70 74 72 5B    s(func, Ufcbptr[
01D500:  66 64 5D 29 3B 0D 0A 20 20 55 62 64 6F 73 28 53    fd]);..  Ubdos(S
01D510:  45 54 44 4D 41 2C 20 31 32 38 29 3B 0D 0A 20 20    ETDMA, 128);..  
01D520:  55 64 69 72 74 79 5B 66 64 5D 20 3D 20 4E 4F 3B    Udirty[fd] = NO;
01D530:  0D 0A 20 20 72 65 74 75 72 6E 20 28 65 72 72 6F    ..  return (erro
01D540:  72 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A    r);..  }..../*..
01D550:  2A 2A 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20    ** ------------ 
01D560:  46 69 6C 65 20 53 74 61 74 75 73 0D 0A 2A 2F 0D    File Status..*/.
01D570:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 52 65 74 75 72 6E    .../*..** Return
01D580:  20 66 64 27 73 20 6F 70 65 6E 20 6D 6F 64 65 2C     fd's open mode,
01D590:  20 65 6C 73 65 20 4E 55 4C 4C 2E 0D 0A 2A 2F 0D     else NULL...*/.
01D5A0:  0A 55 6D 6F 64 65 28 66 64 29 20 63 68 61 72 20    .Umode(fd) char 
01D5B0:  2A 66 64 3B 20 7B 0D 0A 20 20 69 66 28 66 64 20    *fd; {..  if(fd 
01D5C0:  3C 20 4D 41 58 46 49 4C 45 53 29 20 72 65 74 75    < MAXFILES) retu
01D5D0:  72 6E 20 28 55 73 74 61 74 75 73 5B 66 64 5D 29    rn (Ustatus[fd])
01D5E0:  3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 4E 55 4C    ;..  return (NUL
01D5F0:  4C 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A    L);..  }..../*..
01D600:  20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A        }..  }..../*
01D610:  0D 0A 2A 2A 20 52 65 61 64 20 6F 6E 65 20 73 65    ..** Read one se
01D620:  63 74 6F 72 20 66 72 6F 6D 20 66 64 2E 0D 0A 2A    ctor from fd...*
01D630:  2F 0D 0A 55 67 65 74 73 65 63 28 66 64 29 20 69    /..Ugetsec(fd) i
01D640:  6E 74 20 66 64 3B 20 7B 0D 0A 23 69 66 64 65 66    nt fd; {..#ifdef
01D650:  20 44 49 52 0D 0A 20 20 69 66 28 55 64 65 76 69     DIR..  if(Udevi
01D660:  63 65 5B 66 64 5D 29 20 7B 20 20 20 20 20 20 20    ce[fd]) {       
01D670:  20 2F 2A 20 64 69 72 65 63 74 6F 72 79 20 66 69     /* directory fi
01D680:  6C 65 20 2A 2F 0D 0A 20 20 20 20 63 68 61 72 20    le */..    char 
01D690:  2A 62 70 2C 20 2A 6E 61 6D 65 2C 20 2A 74 79 70    *bp, *name, *typ
01D6A0:  65 2C 20 2A 65 6E 64 3B 0D 0A 20 20 20 20 55 62    e, *end;..    Ub
01D6B0:  64 6F 73 28 53 45 54 44 4D 41 2C 20 31 32 38 29    dos(SETDMA, 128)
01D6C0:  3B 0D 0A 20 20 20 20 69 66 28 28 6E 61 6D 65 20    ;..    if((name 
01D6D0:  3D 20 55 62 64 6F 73 28 55 64 65 76 69 63 65 5B    = Ubdos(Udevice[
01D6E0:  66 64 5D 2C 20 55 66 63 62 70 74 72 5B 66 64 5D    fd], Ufcbptr[fd]
01D6F0:  29 29 20 3D 3D 20 32 35 35 29 20 7B 0D 0A 20 20    )) == 255) {..  
01D700:  20 20 20 20 55 73 65 74 65 6F 66 28 66 64 29 3B        Useteof(fd);
01D710:  0D 0A 20 20 20 20 20 20 72 65 74 75 72 6E 20 28    ..      return (
01D720:  4E 4F 29 3B 0D 0A 20 20 20 20 20 20 7D 0D 0A 20    NO);..      }.. 
01D730:  20 20 20 55 64 65 76 69 63 65 5B 66 64 5D 20 3D       Udevice[fd] =
01D740:  20 46 4E 44 4E 58 54 3B 0D 0A 20 20 20 20 6E 61     FNDNXT;..    na
01D750:  6D 65 20 3D 20 28 6E 61 6D 65 20 3C 3C 20 35 29    me = (name << 5)
01D760:  20 2B 20 28 31 32 38 20 2B 20 4E 41 4D 45 4F 46     + (128 + NAMEOF
01D770:  46 29 3B 0D 0A 20 20 20 20 74 79 70 65 20 3D 20    F);..    type = 
01D780:  6E 61 6D 65 20 2B 20 4E 41 4D 45 53 49 5A 45 3B    name + NAMESIZE;
01D790:  0D 0A 20 20 20 20 65 6E 64 20 3D 20 6E 61 6D 65    ..    end = name
01D7A0:  20 2B 20 4E 54 53 49 5A 45 3B 0D 0A 20 20 20 20     + NTSIZE;..    
01D7B0:  62 70 20 3D 20 55 62 75 66 70 74 72 5B 66 64 5D    bp = Ubufptr[fd]
01D7C0:  20 2B 20 42 55 46 53 49 5A 45 3B 0D 0A 20 20 20     + BUFSIZE;..   
01D7D0:  20 2A 2D 2D 62 70 20 3D 20 43 52 3B 0D 0A 20 20     *--bp = CR;..  
01D7E0:  20 20 77 68 69 6C 65 28 2D 2D 65 6E 64 20 3E 3D      while(--end >=
01D7F0:  20 6E 61 6D 65 29 20 7B 20 2F 2A 20 70 75 74 20     name) { /* put 
01D800:  2A 2A 20 53 65 74 20 65 6F 66 20 73 74 61 74 75    ** Set eof statu
01D810:  73 20 66 6F 72 20 66 64 20 61 6E 64 0D 0A 2A 2A    s for fd and..**
01D820:  20 64 69 73 61 62 6C 65 20 66 75 74 75 72 65 20     disable future 
01D830:  69 2F 6F 20 75 6E 6C 65 73 73 20 77 72 69 74 69    i/o unless writi
01D840:  6E 67 20 69 73 20 61 6C 6C 6F 77 65 64 2E 0D 0A    ng is allowed...
01D850:  2A 2F 0D 0A 55 73 65 74 65 6F 66 28 66 64 29 20    */..Useteof(fd) 
01D860:  69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 55 73 74    int fd; {..  Ust
01D870:  61 74 75 73 5B 66 64 5D 20 7C 3D 20 45 4F 46 42    atus[fd] |= EOFB
01D880:  49 54 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A    IT;..  }..../*..
01D890:  2A 2A 20 43 6C 65 61 72 20 65 6F 66 20 73 74 61    ** Clear eof sta
01D8A0:  74 75 73 20 66 6F 72 20 66 64 2E 0D 0A 2A 2F 0D    tus for fd...*/.
01D8B0:  0A 55 63 6C 72 65 6F 66 28 66 64 29 20 69 6E 74    .Uclreof(fd) int
01D8C0:  20 66 64 3B 20 7B 0D 0A 20 20 55 73 74 61 74 75     fd; {..  Ustatu
01D8D0:  73 5B 66 64 5D 20 26 3D 20 7E 45 4F 46 42 49 54    s[fd] &= ~EOFBIT
01D8E0:  3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A    ;..  }..../*..**
01D8F0:  20 53 65 74 20 65 72 72 6F 72 20 73 74 61 74 75     Set error statu
01D900:  73 20 66 6F 72 20 66 64 2E 0D 0A 2A 2F 0D 0A 55    s for fd...*/..U
01D910:  73 65 74 65 72 72 28 66 64 29 20 69 6E 74 20 66    seterr(fd) int f
01D920:  64 3B 20 7B 0D 0A 20 20 55 73 74 61 74 75 73 5B    d; {..  Ustatus[
01D930:  66 64 5D 20 7C 3D 20 45 52 52 42 49 54 3B 0D 0A    fd] |= ERRBIT;..
01D940:  20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 2D 2D      }..../*..** --
01D950:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 4D 65 6D 6F 72    ---------- Memor
01D960:  79 20 41 6C 6C 6F 63 61 74 69 6F 6E 0D 0A 2A 2F    y Allocation..*/
01D970:  0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 41 6C 6C 6F 63    ..../*..** Alloc
01D980:  61 74 65 20 6E 20 62 79 74 65 73 20 6F 66 20 28    ate n bytes of (
01D990:  70 6F 73 73 69 62 6C 79 20 7A 65 72 6F 65 64 29    possibly zeroed)
01D9A0:  20 6D 65 6D 6F 72 79 2E 0D 0A 2A 2A 20 45 6E 74     memory...** Ent
01D9B0:  72 79 3A 20 6E 20 3D 20 53 69 7A 65 20 6F 66 20    ry: n = Size of 
01D9C0:  74 68 65 20 69 74 65 6D 73 20 69 6E 20 62 79 74    the items in byt
01D9D0:  65 73 2E 0D 0A 2A 2A 20 20 20 20 63 6C 65 61 72    es...**    clear
01D9E0:  20 3D 20 22 74 72 75 65 22 20 69 66 20 63 6C 65     = "true" if cle
01D9F0:  61 72 69 6E 67 20 69 73 20 64 65 73 69 72 65 64    aring is desired
01DA00:  66 69 6C 65 6E 61 6D 65 20 61 74 20 65 6E 64 20    filename at end 
01DA10:  6F 66 20 62 75 66 66 65 72 20 2A 2F 0D 0A 20 20    of buffer */..  
01DA20:  20 20 20 20 69 66 28 2A 65 6E 64 20 3D 3D 20 53        if(*end == S
01DA30:  50 41 43 45 29 20 63 6F 6E 74 69 6E 75 65 3B 0D    PACE) continue;.
01DA40:  0A 20 20 20 20 20 20 2A 2D 2D 62 70 20 3D 20 2A    .      *--bp = *
01DA50:  65 6E 64 3B 0D 0A 20 20 20 20 20 20 69 66 28 65    end;..      if(e
01DA60:  6E 64 20 3D 3D 20 74 79 70 65 29 20 2A 2D 2D 62    nd == type) *--b
01DA70:  70 20 3D 20 27 2E 27 3B 0D 0A 20 20 20 20 20 20    p = '.';..      
01DA80:  7D 0D 0A 20 20 20 20 55 63 68 72 70 6F 73 5B 66    }..    Uchrpos[f
01DA90:  64 5D 20 3D 20 62 70 20 2D 20 55 62 75 66 70 74    d] = bp - Ubufpt
01DAA0:  72 5B 66 64 5D 3B 0D 0A 20 20 20 20 72 65 74 75    r[fd];..    retu
01DAB0:  72 6E 20 28 59 45 53 29 3B 0D 0A 20 20 20 20 7D    rn (YES);..    }
01DAC0:  0D 0A 23 65 6E 64 69 66 0D 0A 20 20 69 66 28 66    ..#endif..  if(f
01DAD0:  66 6C 75 73 68 28 66 64 29 29 20 72 65 74 75 72    flush(fd)) retur
01DAE0:  6E 20 28 4E 4F 29 3B 0D 0A 20 20 55 61 64 76 61    n (NO);..  Uadva
01DAF0:  6E 63 65 28 66 64 29 3B 0D 0A 20 20 69 66 28 55    nce(fd);..  if(U
01DB00:  73 65 63 74 6F 72 28 66 64 2C 20 52 44 52 4E 44    sector(fd, RDRND
01DB10:  29 29 20 7B 0D 0A 20 20 20 20 70 61 64 28 55 62    )) {..    pad(Ub
01DB20:  75 66 70 74 72 5B 66 64 5D 2C 20 43 50 4D 45 4F    ufptr[fd], CPMEO
01DB30:  46 2C 20 42 55 46 53 49 5A 45 29 3B 0D 0A 20 20    F, BUFSIZE);..  
01DB40:  20 20 55 73 65 74 65 6F 66 28 66 64 29 3B 0D 0A      Useteof(fd);..
01DB50:  20 20 20 20 72 65 74 75 72 6E 20 28 4E 4F 29 3B        return (NO);
01DB60:  0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72    ..    }..  retur
01DB70:  6E 20 28 59 45 53 29 3B 0D 0A 20 20 7D 0D 0A 0D    n (YES);..  }...
01DB80:  0A 2F 2A 0D 0A 2A 2A 20 2D 2D 2D 2D 2D 2D 2D 2D    ./*..** --------
01DB90:  2D 2D 2D 2D 20 46 69 6C 65 20 4F 75 74 70 75 74    ---- File Output
01DBA0:  0D 0A 2A 2F 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 42    ..*/..../*..** B
01DBB0:  69 6E 61 72 79 2D 53 74 72 65 61 6D 20 6F 75 74    inary-Stream out
01DBC0:  70 75 74 20 6F 66 20 6F 6E 65 20 62 79 74 65 20    put of one byte 
01DBD0:  74 6F 20 66 64 2E 0D 0A 2A 2F 0D 0A 55 77 72 69    to fd...*/..Uwri
01DBE0:  74 65 28 63 68 2C 20 66 64 29 20 69 6E 74 20 63    te(ch, fd) int c
01DBF0:  68 2C 20 66 64 3B 20 7B 0D 0A 20 20 63 68 61 72    h, fd; {..  char
01DC00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01DC10:  19 00 01 00 02 09 52 E5 19 00 41 02 00 00 00 02    ......R...A.....
01DC20:  19 00 46 02 00 00 00 02 19 00 42 02 00 00 00 02    ..F.......B.....
01DC30:  19 00 47 02 00 00 00 02 19 00 43 02 00 00 00 02    ..G.......C.....
01DC40:  19 00 48 02 00 00 00 02 19 00 44 02 00 00 00 02    ..H.......D.....
01DC50:  19 00 49 02 00 00 00 02 19 00 45 02 00 00 00 02    ..I.......E.....
01DC60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DC70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DC80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DC90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DD00:  2E 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 74 68    ...** Returns th
01DD10:  65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65    e address of the
01DD20:  20 61 6C 6C 6F 63 61 74 65 64 20 62 6C 6F 63 6B     allocated block
01DD30:  20 6F 66 20 6D 65 6D 6F 72 79 0D 0A 2A 2A 20 6F     of memory..** o
01DD40:  72 20 4E 55 4C 4C 20 69 66 20 74 68 65 20 72 65    r NULL if the re
01DD50:  71 75 65 73 74 65 64 20 61 6D 6F 75 6E 74 20 6F    quested amount o
01DD60:  66 20 73 70 61 63 65 20 69 73 20 6E 6F 74 20 61    f space is not a
01DD70:  76 61 69 6C 61 62 6C 65 2E 0D 0A 2A 2F 0D 0A 55    vailable...*/..U
01DD80:  61 6C 6C 6F 63 28 6E 2C 20 63 6C 65 61 72 29 20    alloc(n, clear) 
01DD90:  63 68 61 72 20 2A 6E 3B 20 69 6E 74 20 63 6C 65    char *n; int cle
01DDA0:  61 72 3B 20 7B 0D 0A 20 20 63 68 61 72 20 2A 6F    ar; {..  char *o
01DDB0:  6C 64 70 74 72 3B 0D 0A 20 20 69 66 28 6E 20 3C    ldptr;..  if(n <
01DDC0:  20 61 76 61 69 6C 28 59 45 53 29 29 20 7B 0D 0A     avail(YES)) {..
01DDD0:  20 20 20 20 69 66 28 63 6C 65 61 72 29 20 70 61        if(clear) pa
01DDE0:  64 28 55 6D 65 6D 70 74 72 2C 20 4E 55 4C 4C 2C    d(Umemptr, NULL,
01DDF0:  20 6E 29 3B 0D 0A 20 20 20 20 6F 6C 64 70 74 72     n);..    oldptr
01DE00:  20 3D 20 55 6D 65 6D 70 74 72 3B 0D 0A 20 20 20     = Umemptr;..   
01DE10:  20 55 6D 65 6D 70 74 72 20 2B 3D 20 6E 3B 0D 0A     Umemptr += n;..
01DE20:  20 20 20 20 72 65 74 75 72 6E 20 28 6F 6C 64 70        return (oldp
01DE30:  74 72 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72    tr);..    }..  r
01DE40:  65 74 75 72 6E 20 28 4E 55 4C 4C 29 3B 0D 0A 20    eturn (NULL);.. 
01DE50:  20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 2D 2D 2D     }..../*..** ---
01DE60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 20 43 50 2F 4D 20 49    --------- CP/M I
01DE70:  6E 74 65 72 66 61 63 65 0D 0A 2A 2F 0D 0A 0D 0A    nterface..*/....
01DE80:  2F 2A 0D 0A 2A 2A 20 49 73 73 75 65 20 43 50 2F    /*..** Issue CP/
01DE90:  4D 20 66 75 6E 63 74 69 6F 6E 20 61 6E 64 20 72    M function and r
01DEA0:  65 74 75 72 6E 20 72 65 73 75 6C 74 2E 20 0D 0A    eturn result. ..
01DEB0:  2A 2A 20 45 6E 74 72 79 3A 20 63 20 20 3D 20 43    ** Entry: c  = C
01DEC0:  50 2F 4D 20 66 75 6E 63 74 69 6F 6E 20 63 6F 64    P/M function cod
01DED0:  65 20 28 72 65 67 69 73 74 65 72 20 43 29 0D 0A    e (register C)..
01DEE0:  2A 2A 20 20 20 20 20 20 20 20 64 65 20 3D 20 43    **        de = C
01DEF0:  50 2F 4D 20 70 61 72 61 6D 65 74 65 72 20 28 72    P/M parameter (r
01DF00:  72 6E 20 69 6E 74 20 55 66 63 62 70 74 72 5B 5D    rn int Ufcbptr[]
01DF10:  2C 20 55 73 74 61 74 75 73 5B 5D 2C 20 55 64 65    , Ustatus[], Ude
01DF20:  76 69 63 65 5B 5D 3B 0D 0A 66 63 6C 6F 73 65 28    vice[];..fclose(
01DF30:  66 64 29 20 69 6E 74 20 66 64 3B 20 7B 0D 0A 20    fd) int fd; {.. 
01DF40:  20 69 66 28 21 55 6D 6F 64 65 28 66 64 29 29 20     if(!Umode(fd)) 
01DF50:  72 65 74 75 72 6E 20 28 45 52 52 29 3B 0D 0A 20    return (ERR);.. 
01DF60:  20 69 66 28 21 69 73 61 74 74 79 28 66 64 29 29     if(!isatty(fd))
01DF70:  20 7B 0D 0A 20 20 20 20 69 66 28 66 66 6C 75 73     {..    if(fflus
01DF80:  68 28 66 64 29 20 7C 7C 20 55 62 64 6F 73 28 43    h(fd) || Ubdos(C
01DF90:  4C 4F 46 49 4C 2C 55 66 63 62 70 74 72 5B 66 64    LOFIL,Ufcbptr[fd
01DFA0:  5D 29 3D 3D 32 35 35 29 0D 0A 20 20 20 20 20 20    ])==255)..      
01DFB0:  72 65 74 75 72 6E 20 28 45 52 52 29 3B 0D 0A 20    return (ERR);.. 
01DFC0:  20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 28       }..  return (
01DFD0:  55 73 74 61 74 75 73 5B 66 64 5D 3D 55 64 65 76    Ustatus[fd]=Udev
01DFE0:  69 63 65 5B 66 64 5D 3D 4E 55 4C 4C 29 3B 0D 0A    ice[fd]=NULL);..
01DFF0:  20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 46 45 4F 46 2E      }....>>> FEOF.
01E000:  43 20 32 36 34 0D 0A 23 64 65 66 69 6E 65 20 4E    C 264..#define N
01E010:  4F 43 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61    OCCARGC  /* no a
01E020:  72 67 75 6D 65 6E 74 20 63 6F 75 6E 74 20 70 61    rgument count pa
01E030:  73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63 6C 75    ssing */..#inclu
01E040:  64 65 20 63 6C 69 62 2E 64 65 66 0D 0A 65 78 74    de clib.def..ext
01E050:  65 72 6E 20 69 6E 74 20 55 73 74 61 74 75 73 5B    ern int Ustatus[
01E060:  5D 3B 0D 0A 2F 2A 0D 0A 2A 2A 20 54 65 73 74 20    ];../*..** Test 
01E070:  66 6F 72 20 65 6E 64 2D 6F 66 2D 66 69 6C 65 20    for end-of-file 
01E080:  73 74 61 74 75 73 2E 0D 0A 2A 2A 20 45 6E 74 72    status...** Entr
01E090:  79 3A 20 66 64 20 3D 20 66 69 6C 65 20 64 65 73    y: fd = file des
01E0A0:  63 72 69 70 74 6F 72 0D 0A 2A 2A 20 52 65 74 75    criptor..** Retu
01E0B0:  72 6E 73 20 6E 6F 6E 2D 7A 65 72 6F 20 69 66 20    rns non-zero if 
01E0C0:  66 64 20 69 73 20 61 74 20 65 6F 66 2C 20 65 6C    fd is at eof, el
01E0D0:  73 65 20 7A 65 72 6F 2E 0D 0A 2A 2F 0D 0A 66 65    se zero...*/..fe
01E0E0:  6F 66 28 66 64 29 20 69 6E 74 20 66 64 3B 20 7B    of(fd) int fd; {
01E0F0:  0D 0A 20 20 72 65 74 75 72 6E 20 28 55 73 74 61    ..  return (Usta
01E100:  65 67 69 73 74 65 72 20 44 45 20 6F 72 20 45 29    egister DE or E)
01E110:  0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 74 68 65    ..** Returns the
01E120:  20 43 50 2F 4D 20 72 65 74 75 72 6E 20 63 6F 64     CP/M return cod
01E130:  65 20 28 72 65 67 69 73 74 65 72 20 41 29 0D 0A    e (register A)..
01E140:  2A 2F 0D 0A 55 62 64 6F 73 28 63 2C 64 65 29 20    */..Ubdos(c,de) 
01E150:  69 6E 74 20 63 2C 64 65 3B 20 7B 0D 0A 23 61 73    int c,de; {..#as
01E160:  6D 0D 0A 20 20 20 20 20 20 20 20 70 6F 70 20 20    m..        pop  
01E170:  20 20 20 68 20 20 20 20 20 20 20 3B 68 6F 6C 64       h       ;hold
01E180:  20 72 65 74 75 72 6E 20 61 64 64 72 65 73 73 0D     return address.
01E190:  0A 20 20 20 20 20 20 20 20 70 6F 70 20 20 20 20    .        pop    
01E1A0:  20 64 20 20 20 20 20 20 20 3B 6C 6F 61 64 20 43     d       ;load C
01E1B0:  50 2F 4D 20 66 75 6E 63 74 69 6F 6E 20 70 61 72    P/M function par
01E1C0:  61 6D 65 74 65 72 0D 0A 20 20 20 20 20 20 20 20    ameter..        
01E1D0:  70 6F 70 20 20 20 20 20 62 20 20 20 20 20 20 20    pop     b       
01E1E0:  3B 6C 6F 61 64 20 43 50 2F 4D 20 66 75 6E 63 74    ;load CP/M funct
01E1F0:  69 6F 6E 20 6E 75 6D 62 65 72 0D 0A 20 20 20 20    ion number..    
01E200:  20 20 20 20 70 75 73 68 20 20 20 20 62 20 20 20        push    b   
01E210:  20 20 20 20 3B 72 65 73 74 6F 72 65 0D 0A 20 20        ;restore..  
01E220:  20 20 20 20 20 20 70 75 73 68 20 20 20 20 64 20          push    d 
01E230:  20 20 20 20 20 20 3B 20 20 74 68 65 0D 0A 20 20          ;  the..  
01E240:  20 20 20 20 20 20 70 75 73 68 20 20 20 20 68 20          push    h 
01E250:  20 20 20 20 20 20 3B 20 20 20 20 20 73 74 61 63          ;     stac
01E260:  6B 0D 0A 20 20 20 20 20 20 20 20 63 61 6C 6C 20    k..        call 
01E270:  20 20 20 35 20 20 20 20 20 20 20 3B 63 61 6C 6C       5       ;call
01E280:  20 62 64 6F 73 0D 0A 20 20 20 20 20 20 20 20 6D     bdos..        m
01E290:  76 69 20 20 20 20 20 68 2C 30 20 20 20 20 20 3B    vi     h,0     ;
01E2A0:  0D 0A 20 20 20 20 20 20 20 20 6D 6F 76 20 20 20    ..        mov   
01E2B0:  20 20 6C 2C 61 20 20 20 20 20 3B 72 65 74 75 72      l,a     ;retur
01E2C0:  6E 20 74 68 65 20 43 50 2F 4D 20 72 65 73 70 6F    n the CP/M respo
01E2D0:  6E 73 65 0D 0A 23 65 6E 64 61 73 6D 0D 0A 20 20    nse..#endasm..  
01E2E0:  7D 0D 0A 3E 3E 3E 20 43 54 45 4C 4C 2E 43 20 33    }..>>> CTELL.C 3
01E2F0:  39 37 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43    97..#define NOCC
01E300:  74 75 73 5B 66 64 5D 20 26 20 45 4F 46 42 49 54    tus[fd] & EOFBIT
01E310:  29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 46    );..  }....>>> F
01E320:  45 52 52 4F 52 2E 43 20 31 39 34 0D 0A 23 64 65    ERROR.C 194..#de
01E330:  66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F    fine NOCCARGC  /
01E340:  2A 20 6E 6F 20 61 72 67 20 63 6F 75 6E 74 20 70    * no arg count p
01E350:  61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63 6C    assing */..#incl
01E360:  75 64 65 20 73 74 64 69 6F 2E 68 0D 0A 23 69 6E    ude stdio.h..#in
01E370:  63 6C 75 64 65 20 63 6C 69 62 2E 64 65 66 0D 0A    clude clib.def..
01E380:  65 78 74 65 72 6E 20 55 73 74 61 74 75 73 5B 5D    extern Ustatus[]
01E390:  3B 0D 0A 2F 2A 0D 0A 2A 2A 20 54 65 73 74 20 66    ;../*..** Test f
01E3A0:  6F 72 20 65 72 72 6F 72 20 73 74 61 74 75 73 20    or error status 
01E3B0:  6F 6E 20 66 64 2E 0D 0A 2A 2F 0D 0A 66 65 72 72    on fd...*/..ferr
01E3C0:  6F 72 28 66 64 29 20 69 6E 74 20 66 64 3B 20 7B    or(fd) int fd; {
01E3D0:  0D 0A 20 20 72 65 74 75 72 6E 20 28 55 73 74 61    ..  return (Usta
01E3E0:  74 75 73 5B 66 64 5D 20 26 20 45 52 52 42 49 54    tus[fd] & ERRBIT
01E3F0:  29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 46 46 4C    );..  }..>>> FFL
01E400:  55 53 48 2E 43 20 35 38 34 0D 0A 23 64 65 66 69    USH.C 584..#defi
01E410:  6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20    ne NOCCARGC  /* 
01E420:  6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E    no argument coun
01E430:  74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69    t passing */..#i
01E440:  6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A    nclude stdio.h..
01E450:  23 69 6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65    #include clib.de
01E460:  66 0D 0A 65 78 74 65 72 6E 20 69 6E 74 20 55 64    f..extern int Ud
01E470:  69 72 74 79 5B 5D 2C 20 2A 55 61 75 78 73 7A 2C    irty[], *Uauxsz,
01E480:  20 55 61 75 78 66 6C 3B 0D 0A 2F 2A 0D 0A 2A 2A     Uauxfl;../*..**
01E490:  20 57 72 69 74 65 20 62 75 66 66 65 72 20 66 6F     Write buffer fo
01E4A0:  72 20 66 64 20 69 66 20 69 74 20 68 61 73 20 63    r fd if it has c
01E4B0:  68 61 6E 67 65 73 2E 0D 0A 2A 2A 20 45 6E 74 72    hanges...** Entr
01E4C0:  79 3A 20 66 64 20 3D 20 46 69 6C 65 20 64 65 73    y: fd = File des
01E4D0:  63 72 69 70 74 6F 72 20 6F 66 20 70 65 72 74 69    criptor of perti
01E4E0:  6E 65 6E 74 20 66 69 6C 65 2E 0D 0A 2A 2A 20 52    nent file...** R
01E4F0:  65 74 75 72 6E 73 20 4E 55 4C 4C 20 6F 6E 20 73    eturns NULL on s
01E500:  41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 20    ARGC  /* no arg 
01E510:  63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F    count passing */
01E520:  0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69 6F    ..#include stdio
01E530:  2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20 63 6C 69    .h..#include cli
01E540:  62 2E 64 65 66 0D 0A 65 78 74 65 72 6E 20 69 6E    b.def..extern in
01E550:  74 20 55 66 63 62 70 74 72 5B 5D 2C 20 55 63 68    t Ufcbptr[], Uch
01E560:  72 70 6F 73 5B 5D 3B 0D 0A 2F 2A 0D 0A 2A 2A 20    rpos[];../*..** 
01E570:  52 65 74 75 72 6E 20 6F 66 66 73 65 74 20 74 6F    Return offset to
01E580:  20 63 75 72 72 65 6E 74 20 31 32 38 2D 62 79 74     current 128-byt
01E590:  65 20 72 65 63 6F 72 64 2E 0D 0A 2A 2F 0D 0A 63    e record...*/..c
01E5A0:  74 65 6C 6C 28 66 64 29 20 69 6E 74 20 66 64 3B    tell(fd) int fd;
01E5B0:  20 7B 0D 0A 20 20 69 6E 74 20 2A 72 72 6E 3B 0D     {..  int *rrn;.
01E5C0:  0A 20 20 69 66 28 21 55 6D 6F 64 65 28 66 64 29    .  if(!Umode(fd)
01E5D0:  20 7C 7C 20 69 73 61 74 74 79 28 66 64 29 29 20     || isatty(fd)) 
01E5E0:  72 65 74 75 72 6E 20 28 2D 31 29 3B 0D 0A 20 20    return (-1);..  
01E5F0:  72 72 6E 3D 55 66 63 62 70 74 72 5B 66 64 5D 2B    rrn=Ufcbptr[fd]+
01E600:  52 52 4E 4F 46 46 3B 0D 0A 20 20 72 65 74 75 72    RRNOFF;..  retur
01E610:  6E 20 28 2A 72 72 6E 29 3B 0D 0A 20 20 7D 0D 0A    n (*rrn);..  }..
01E620:  2F 2A 0D 0A 2A 2A 20 52 65 74 75 72 6E 20 6F 66    /*..** Return of
01E630:  66 73 65 74 20 74 6F 20 6E 65 78 74 20 63 68 61    fset to next cha
01E640:  72 61 63 74 65 72 20 69 6E 20 63 75 72 72 65 6E    racter in curren
01E650:  74 20 62 75 66 66 65 72 2E 0D 0A 2A 2F 0D 0A 63    t buffer...*/..c
01E660:  74 65 6C 6C 63 28 66 64 29 20 69 6E 74 20 66 64    tellc(fd) int fd
01E670:  3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 20 28 55    ; {..  return (U
01E680:  63 68 72 70 6F 73 5B 66 64 5D 29 3B 0D 0A 20 20    chrpos[fd]);..  
01E690:  7D 0D 0A 0D 0A 3E 3E 3E 20 44 54 4F 49 2E 43 20    }....>>> DTOI.C 
01E6A0:  34 31 37 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43    417..#define NOC
01E6B0:  43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67    CARGC  /* no arg
01E6C0:  75 6D 65 6E 74 20 63 6F 75 6E 74 20 70 61 73 73    ument count pass
01E6D0:  69 6E 67 20 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65    ing */..#include
01E6E0:  20 73 74 64 69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A     stdio.h../*..**
01E6F0:  20 64 74 6F 69 20 2D 2D 20 63 6F 6E 76 65 72 74     dtoi -- convert
01E700:  75 63 63 65 73 73 2C 20 6F 74 68 65 72 77 69 73    uccess, otherwis
01E710:  65 20 45 4F 46 2E 0D 0A 2A 2A 20 52 65 74 75 72    e EOF...** Retur
01E720:  6E 73 20 4E 55 4C 4C 20 69 66 20 66 69 6C 65 20    ns NULL if file 
01E730:  69 73 20 6F 70 65 6E 65 64 20 66 6F 72 20 69 6E    is opened for in
01E740:  70 75 74 20 6F 6E 6C 79 0D 0A 2A 2A 20 20 20 20    put only..**    
01E750:  20 20 20 20 20 6F 72 20 69 66 20 69 74 20 69 73         or if it is
01E760:  20 6E 6F 74 20 61 20 64 69 73 6B 20 66 69 6C 65     not a disk file
01E770:  2E 0D 0A 2A 2F 0D 0A 66 66 6C 75 73 68 28 66 64    ...*/..fflush(fd
01E780:  29 20 69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 69    ) int fd; {..  i
01E790:  66 28 55 6D 6F 64 65 28 66 64 29 20 26 20 57 52    f(Umode(fd) & WR
01E7A0:  54 42 49 54 29 20 7B 0D 0A 20 20 20 20 69 66 28    TBIT) {..    if(
01E7B0:  28 55 61 75 78 73 7A 20 26 26 20 55 61 75 78 73    (Uauxsz && Uauxs
01E7C0:  7A 5B 66 64 5D 20 26 26 20 55 61 75 78 66 6C 28    z[fd] && Uauxfl(
01E7D0:  66 64 29 29 20 7C 7C 0D 0A 20 20 20 20 20 20 20    fd)) ||..       
01E7E0:  28 21 69 73 61 74 74 79 28 66 64 29 20 26 26 20    (!isatty(fd) && 
01E7F0:  55 64 69 72 74 79 5B 66 64 5D 20 26 26 20 55 73    Udirty[fd] && Us
01E800:  65 63 74 6F 72 28 66 64 2C 20 57 52 54 52 4E 44    ector(fd, WRTRND
01E810:  29 29 29 20 7B 0D 0A 20 20 20 20 20 20 55 73 65    ))) {..      Use
01E820:  74 65 72 72 28 66 64 29 3B 0D 0A 20 20 20 20 20    terr(fd);..     
01E830:  20 72 65 74 75 72 6E 20 28 45 52 52 29 3B 0D 0A     return (ERR);..
01E840:  20 20 20 20 20 20 7D 0D 0A 20 20 20 20 7D 0D 0A          }..    }..
01E850:  20 20 72 65 74 75 72 6E 20 28 4E 55 4C 4C 29 3B      return (NULL);
01E860:  0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 46 47 45    ..  }....>>> FGE
01E870:  54 43 2E 43 20 37 36 31 0D 0A 23 64 65 66 69 6E    TC.C 761..#defin
01E880:  65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E    e NOCCARGC  /* n
01E890:  6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74    o argument count
01E8A0:  20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E     passing */..#in
01E8B0:  63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A 23    clude stdio.h..#
01E8C0:  69 6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65 66    include clib.def
01E8D0:  0D 0A 65 78 74 65 72 6E 20 69 6E 74 20 55 63 68    ..extern int Uch
01E8E0:  72 70 6F 73 5B 5D 3B 0D 0A 2F 2A 0D 0A 2A 2A 20    rpos[];../*..** 
01E8F0:  43 68 61 72 61 63 74 65 72 2D 73 74 72 65 61 6D    Character-stream
01E900:  20 73 69 67 6E 65 64 20 64 65 63 69 6D 61 6C 20     signed decimal 
01E910:  73 74 72 69 6E 67 20 74 6F 20 69 6E 74 65 67 65    string to intege
01E920:  72 20 6E 62 72 0D 0A 2A 2A 20 20 20 20 20 20 20    r nbr..**       
01E930:  20 20 72 65 74 75 72 6E 73 20 66 69 65 6C 64 20      returns field 
01E940:  6C 65 6E 67 74 68 2C 20 65 6C 73 65 20 45 52 52    length, else ERR
01E950:  20 6F 6E 20 65 72 72 6F 72 0D 0A 2A 2F 0D 0A 64     on error..*/..d
01E960:  74 6F 69 28 64 65 63 73 74 72 2C 20 6E 62 72 29    toi(decstr, nbr)
01E970:  20 20 63 68 61 72 20 2A 64 65 63 73 74 72 3B 20      char *decstr; 
01E980:  20 69 6E 74 20 2A 6E 62 72 3B 20 20 7B 0D 0A 20     int *nbr;  {.. 
01E990:  20 69 6E 74 20 6C 65 6E 2C 20 73 3B 0D 0A 20 20     int len, s;..  
01E9A0:  69 66 28 28 2A 64 65 63 73 74 72 29 3D 3D 27 2D    if((*decstr)=='-
01E9B0:  27 29 20 7B 73 3D 31 3B 20 2B 2B 64 65 63 73 74    ') {s=1; ++decst
01E9C0:  72 3B 7D 20 65 6C 73 65 20 73 3D 30 3B 0D 0A 20    r;} else s=0;.. 
01E9D0:  20 69 66 28 28 6C 65 6E 3D 75 74 6F 69 28 64 65     if((len=utoi(de
01E9E0:  63 73 74 72 2C 20 6E 62 72 29 29 3C 30 29 20 72    cstr, nbr))<0) r
01E9F0:  65 74 75 72 6E 20 45 52 52 3B 0D 0A 20 20 69 66    eturn ERR;..  if
01EA00:  28 2A 6E 62 72 3C 30 29 20 72 65 74 75 72 6E 20    (*nbr<0) return 
01EA10:  45 52 52 3B 0D 0A 20 20 69 66 28 73 29 20 7B 2A    ERR;..  if(s) {*
01EA20:  6E 62 72 20 3D 20 2D 2A 6E 62 72 3B 20 72 65 74    nbr = -*nbr; ret
01EA30:  75 72 6E 20 2B 2B 6C 65 6E 3B 7D 20 65 6C 73 65    urn ++len;} else
01EA40:  20 72 65 74 75 72 6E 20 6C 65 6E 3B 0D 0A 20 20     return len;..  
01EA50:  7D 0D 0A 3E 3E 3E 20 45 58 49 54 2E 43 20 34 32    }..>>> EXIT.C 42
01EA60:  30 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 41    0..#define NOCCA
01EA70:  52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D    RGC  /* no argum
01EA80:  65 6E 74 20 63 6F 75 6E 74 20 70 61 73 73 69 6E    ent count passin
01EA90:  67 20 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73    g */..#include s
01EAA0:  74 64 69 6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65    tdio.h..#include
01EAB0:  20 63 6C 69 62 2E 64 65 66 0D 0A 2F 2A 0D 0A 2A     clib.def../*..*
01EAC0:  2A 20 43 6C 6F 73 65 20 61 6C 6C 20 6F 70 65 6E    * Close all open
01EAD0:  20 66 69 6C 65 73 20 61 6E 64 20 65 78 69 74 20     files and exit 
01EAE0:  74 6F 20 43 50 2F 4D 2E 20 0D 0A 2A 2A 20 45 6E    to CP/M. ..** En
01EAF0:  74 72 79 3A 20 65 72 72 63 6F 64 65 20 3D 20 43    try: errcode = C
01EB00:  20 69 6E 70 75 74 20 6F 66 20 6F 6E 65 20 63 68     input of one ch
01EB10:  61 72 61 63 74 65 72 20 66 72 6F 6D 20 66 64 2E    aracter from fd.
01EB20:  0D 0A 2A 2A 20 45 6E 74 72 79 3A 20 66 64 20 3D    ..** Entry: fd =
01EB30:  20 46 69 6C 65 20 64 65 73 63 72 69 70 74 6F 72     File descriptor
01EB40:  20 6F 66 20 70 65 72 74 69 6E 65 6E 74 20 66 69     of pertinent fi
01EB50:  6C 65 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20    le...** Returns 
01EB60:  74 68 65 20 6E 65 78 74 20 63 68 61 72 61 63 74    the next charact
01EB70:  65 72 20 6F 6E 20 73 75 63 63 65 73 73 2C 20 65    er on success, e
01EB80:  6C 73 65 20 45 4F 46 2E 0D 0A 2A 2F 0D 0A 66 67    lse EOF...*/..fg
01EB90:  65 74 63 28 66 64 29 20 69 6E 74 20 66 64 3B 20    etc(fd) int fd; 
01EBA0:  7B 0D 0A 20 20 69 6E 74 20 63 68 3B 0D 0A 20 20    {..  int ch;..  
01EBB0:  77 68 69 6C 65 28 31 29 20 7B 0D 0A 20 20 20 20    while(1) {..    
01EBC0:  73 77 69 74 63 68 28 63 68 20 3D 20 55 72 65 61    switch(ch = Urea
01EBD0:  64 28 66 64 29 29 20 7B 0D 0A 20 20 20 20 20 20    d(fd)) {..      
01EBE0:  64 65 66 61 75 6C 74 3A 20 20 20 20 20 72 65 74    default:     ret
01EBF0:  75 72 6E 20 28 63 68 29 3B 0D 0A 20 20 20 20 20    urn (ch);..     
01EC00:  20 63 61 73 65 20 43 50 4D 45 4F 46 3A 20 73 77     case CPMEOF: sw
01EC10:  69 74 63 68 28 55 63 68 72 70 6F 73 5B 66 64 5D    itch(Uchrpos[fd]
01EC20:  29 20 7B 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ) {..           
01EC30:  20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6C              defaul
01EC40:  74 3A 20 2D 2D 55 63 68 72 70 6F 73 5B 66 64 5D    t: --Uchrpos[fd]
01EC50:  3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ;..             
01EC60:  20 20 20 20 20 20 20 20 63 61 73 65 20 30 3A 0D            case 0:.
01EC70:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
01EC80:  20 20 20 20 20 20 63 61 73 65 20 42 55 46 53 49          case BUFSI
01EC90:  5A 45 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ZE:..           
01ECA0:  20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20 20              }..   
01ECB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01ECC0:  55 73 65 74 65 6F 66 28 66 64 29 3B 0D 0A 20 20    Useteof(fd);..  
01ECD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01ECE0:  20 72 65 74 75 72 6E 20 28 45 4F 46 29 3B 0D 0A     return (EOF);..
01ECF0:  20 20 20 20 20 20 63 61 73 65 20 43 52 3A 20 20          case CR:  
01ED00:  68 61 72 61 63 74 65 72 20 74 6F 20 62 65 20 73    haracter to be s
01ED10:  65 6E 74 20 74 6F 20 73 74 64 65 72 72 2E 0D 0A    ent to stderr...
01ED20:  2A 2A 20 52 65 74 75 72 6E 73 20 74 6F 20 43 50    ** Returns to CP
01ED30:  2F 4D 20 72 61 74 68 65 72 20 74 68 61 6E 20 74    /M rather than t
01ED40:  68 65 20 63 61 6C 6C 65 72 2E 0D 0A 2A 2F 0D 0A    he caller...*/..
01ED50:  65 78 69 74 28 65 72 72 63 6F 64 65 29 20 63 68    exit(errcode) ch
01ED60:  61 72 20 65 72 72 63 6F 64 65 3B 20 7B 0D 0A 20    ar errcode; {.. 
01ED70:  20 69 6E 74 20 66 64 3B 0D 0A 20 20 69 66 28 65     int fd;..  if(e
01ED80:  72 72 63 6F 64 65 29 20 55 63 6F 6E 6F 75 74 28    rrcode) Uconout(
01ED90:  65 72 72 63 6F 64 65 29 3B 0D 0A 20 20 66 6F 72    errcode);..  for
01EDA0:  28 66 64 3D 30 3B 20 66 64 20 3C 20 4D 41 58 46    (fd=0; fd < MAXF
01EDB0:  49 4C 45 53 3B 20 66 63 6C 6F 73 65 28 66 64 2B    ILES; fclose(fd+
01EDC0:  2B 29 29 3B 0D 0A 20 20 55 62 64 6F 73 28 47 4F    +));..  Ubdos(GO
01EDD0:  43 50 4D 2C 4E 55 4C 4C 29 3B 0D 0A 20 20 7D 0D    CPM,NULL);..  }.
01EDE0:  0A 23 61 73 6D 0D 0A 61 62 6F 72 74 20 20 65 71    .#asm..abort  eq
01EDF0:  75 20 20 20 20 65 78 69 74 0D 0A 20 20 20 20 20    u    exit..     
01EE00:  20 20 65 6E 74 72 79 20 20 61 62 6F 72 74 0D 0A      entry  abort..
01EE10:  23 65 6E 64 61 73 6D 0D 0A 3E 3E 3E 20 46 43 4C    #endasm..>>> FCL
01EE20:  4F 53 45 2E 43 20 34 34 32 0D 0A 23 64 65 66 69    OSE.C 442..#defi
01EE30:  6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20    ne NOCCARGC  /* 
01EE40:  6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E    no argument coun
01EE50:  74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69    t passing */..#i
01EE60:  6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A    nclude stdio.h..
01EE70:  23 69 6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65    #include clib.de
01EE80:  66 0D 0A 2F 2A 0D 0A 2A 2A 20 43 6C 6F 73 65 20    f../*..** Close 
01EE90:  66 64 20 0D 0A 2A 2A 20 45 6E 74 72 79 3A 20 66    fd ..** Entry: f
01EEA0:  64 20 3D 20 46 69 6C 65 20 64 65 73 63 72 69 70    d = File descrip
01EEB0:  74 6F 72 20 66 6F 72 20 66 69 6C 65 20 74 6F 20    tor for file to 
01EEC0:  62 65 20 63 6C 6F 73 65 64 2E 0D 0A 2A 2A 20 52    be closed...** R
01EED0:  65 74 75 72 6E 73 20 4E 55 4C 4C 20 66 6F 72 20    eturns NULL for 
01EEE0:  73 75 63 63 65 73 73 2C 20 6F 74 68 65 72 77 69    success, otherwi
01EEF0:  73 65 20 45 52 52 0D 0A 2A 2F 0D 0A 65 78 74 65    se ERR..*/..exte
01EF00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01EF10:  1A 00 01 00 02 09 52 E5 1A 00 41 02 00 00 00 02    ......R...A.....
01EF20:  1A 00 46 02 00 00 00 02 1A 00 42 02 00 00 00 02    ..F.......B.....
01EF30:  1A 00 47 02 00 00 00 02 1A 00 43 02 00 00 00 02    ..G.......C.....
01EF40:  1A 00 48 02 00 00 00 02 1A 00 44 02 00 00 00 02    ..H.......D.....
01EF50:  1A 00 49 02 00 00 00 02 1A 00 45 02 00 00 00 02    ..I.......E.....
01EF60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EF70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EF80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EF90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01EFF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01F000:  20 20 20 72 65 74 75 72 6E 20 28 27 5C 6E 27 29       return ('\n')
01F010:  3B 0D 0A 20 20 20 20 20 20 63 61 73 65 20 4C 46    ;..      case LF
01F020:  3A 20 20 20 20 2F 2A 20 4E 4F 54 45 3A 20 55 63    :    /* NOTE: Uc
01F030:  6F 6E 69 6E 28 29 20 6D 61 70 73 20 4C 46 20 2D    onin() maps LF -
01F040:  3E 20 43 52 20 2A 2F 0D 0A 20 20 20 20 20 20 7D    > CR */..      }
01F050:  0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D 0A 23 61    ..    }..  }..#a
01F060:  73 6D 0D 0A 67 65 74 63 20 65 71 75 20 20 20 66    sm..getc equ   f
01F070:  67 65 74 63 0D 0A 20 20 20 20 20 65 6E 74 72 79    getc..     entry
01F080:  20 67 65 74 63 0D 0A 23 65 6E 64 61 73 6D 0D 0A     getc..#endasm..
01F090:  0D 0A 3E 3E 3E 20 46 47 45 54 53 2E 43 20 31 38    ..>>> FGETS.C 18
01F0A0:  31 33 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43    13..#define NOCC
01F0B0:  41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 20    ARGC  /* no arg 
01F0C0:  63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F    count passing */
01F0D0:  0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69 6F    ..#include stdio
01F0E0:  2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20 63 6C 69    .h..#include cli
01F0F0:  62 2E 64 65 66 0D 0A 2F 2A 0D 0A 2A 2A 20 47 65    b.def../*..** Ge
01F100:  74 73 20 61 6E 20 65 6E 74 69 72 65 20 73 74 72    ts an entire str
01F110:  69 6E 67 20 28 69 6E 63 6C 75 64 69 6E 67 20 69    ing (including i
01F120:  74 73 20 6E 65 77 6C 69 6E 65 0D 0A 2A 2A 20 74    ts newline..** t
01F130:  65 72 6D 69 6E 61 74 6F 72 29 20 6F 72 20 73 69    erminator) or si
01F140:  7A 65 2D 31 20 63 68 61 72 61 63 74 65 72 73 2C    ze-1 characters,
01F150:  20 77 68 69 63 68 65 76 65 72 20 63 6F 6D 65 73     whichever comes
01F160:  0D 0A 2A 2A 20 66 69 72 73 74 2E 20 54 68 65 20    ..** first. The 
01F170:  69 6E 70 75 74 20 69 73 20 74 65 72 6D 69 6E 61    input is termina
01F180:  74 65 64 20 62 79 20 61 20 6E 75 6C 6C 20 63 68    ted by a null ch
01F190:  61 72 61 63 74 65 72 2E 0D 0A 2A 2A 20 45 6E 74    aracter...** Ent
01F1A0:  72 79 3A 20 73 74 72 20 20 3D 20 50 6F 69 6E 74    ry: str  = Point
01F1B0:  65 72 20 74 6F 20 64 65 73 74 69 6E 61 74 69 6F    er to destinatio
01F1C0:  6E 20 62 75 66 66 65 72 2E 0D 0A 2A 2A 20 20 20    n buffer...**   
01F1D0:  20 20 20 20 20 73 69 7A 65 20 3D 20 53 69 7A 65         size = Size
01F1E0:  20 6F 66 20 74 68 65 20 64 65 73 74 69 6E 61 74     of the destinat
01F1F0:  69 6F 6E 20 62 75 66 66 65 72 2E 0D 0A 2A 2A 20    ion buffer...** 
01F200:  20 64 65 73 63 72 69 70 74 6F 72 20 6F 6E 20 73     descriptor on s
01F210:  75 63 63 65 73 73 2C 20 65 6C 73 65 20 4E 55 4C    uccess, else NUL
01F220:  4C 2E 0D 0A 2A 2F 0D 0A 66 6F 70 65 6E 28 66 6E    L...*/..fopen(fn
01F230:  2C 20 6D 6F 64 65 29 20 63 68 61 72 20 2A 66 6E    , mode) char *fn
01F240:  2C 20 2A 6D 6F 64 65 3B 20 7B 0D 0A 20 20 69 6E    , *mode; {..  in
01F250:  74 20 66 64 3B 0D 0A 20 20 66 64 20 3D 20 30 3B    t fd;..  fd = 0;
01F260:  20 2F 2A 20 73 6B 69 70 20 73 74 64 69 6E 20 28     /* skip stdin (
01F270:  3D 20 65 72 72 6F 72 20 72 65 74 75 72 6E 29 20    = error return) 
01F280:  2A 2F 0D 0A 20 20 77 68 69 6C 65 28 2B 2B 66 64    */..  while(++fd
01F290:  20 3C 20 4D 41 58 46 49 4C 45 53 29 20 7B 0D 0A     < MAXFILES) {..
01F2A0:  20 20 20 20 69 66 28 55 6D 6F 64 65 28 66 64 29        if(Umode(fd)
01F2B0:  20 3D 3D 20 4E 55 4C 4C 29 20 7B 0D 0A 20 20 20     == NULL) {..   
01F2C0:  20 20 20 69 66 28 55 6F 70 65 6E 28 66 6E 2C 20       if(Uopen(fn, 
01F2D0:  6D 6F 64 65 2C 20 66 64 29 21 3D 45 52 52 29 20    mode, fd)!=ERR) 
01F2E0:  72 65 74 75 72 6E 20 28 66 64 29 3B 0D 0A 20 20    return (fd);..  
01F2F0:  20 20 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20        break;..    
01F300:  20 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65      }..    }..  re
01F310:  74 75 72 6E 20 28 4E 55 4C 4C 29 3B 0D 0A 20 20    turn (NULL);..  
01F320:  7D 0D 0A 0D 0A 3E 3E 3E 20 46 50 52 49 4E 54 46    }....>>> FPRINTF
01F330:  2E 43 20 32 32 37 35 0D 0A 23 64 65 66 69 6E 65    .C 2275..#define
01F340:  20 4E 4F 43 43 41 52 47 43 20 0D 0A 2F 2A 0D 0A     NOCCARGC ../*..
01F350:  2A 2A 20 59 65 73 2C 20 74 68 61 74 20 69 73 20    ** Yes, that is 
01F360:  63 6F 72 72 65 63 74 2E 20 20 41 6C 74 68 6F 75    correct.  Althou
01F370:  67 68 20 74 68 65 73 65 20 66 75 6E 63 74 69 6F    gh these functio
01F380:  6E 73 20 75 73 65 20 61 6E 0D 0A 2A 2A 20 61 72    ns use an..** ar
01F390:  67 75 6D 65 6E 74 20 63 6F 75 6E 74 2C 20 74 68    gument count, th
01F3A0:  65 79 20 64 6F 20 6E 6F 74 20 63 61 6C 6C 20 66    ey do not call f
01F3B0:  75 6E 63 74 69 6F 6E 73 20 77 68 69 63 68 20 6E    unctions which n
01F3C0:  65 65 64 20 6F 6E 65 2E 0D 0A 2A 2F 0D 0A 23 69    eed one...*/..#i
01F3D0:  6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A    nclude stdio.h..
01F3E0:  2F 2A 0D 0A 2A 2A 20 66 70 72 69 6E 74 66 28 66    /*..** fprintf(f
01F3F0:  64 2C 20 63 74 6C 73 74 72 69 6E 67 2C 20 61 72    d, ctlstring, ar
01F400:  20 20 20 20 20 20 20 66 64 20 20 20 3D 20 46 69           fd   = Fi
01F410:  6C 65 20 64 65 73 63 72 69 70 74 6F 72 20 6F 66    le descriptor of
01F420:  20 70 65 72 74 69 6E 65 6E 74 20 66 69 6C 65 2E     pertinent file.
01F430:  0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 73 74 72    ..** Returns str
01F440:  20 6F 6E 20 73 75 63 63 65 73 73 2C 20 65 6C 73     on success, els
01F450:  65 20 4E 55 4C 4C 2E 0D 0A 2A 2F 0D 0A 66 67 65    e NULL...*/..fge
01F460:  74 73 28 73 74 72 2C 20 73 69 7A 65 2C 20 66 64    ts(str, size, fd
01F470:  29 20 63 68 61 72 20 2A 73 74 72 3B 20 69 6E 74    ) char *str; int
01F480:  20 73 69 7A 65 2C 20 66 64 3B 20 7B 0D 0A 20 20     size, fd; {..  
01F490:  72 65 74 75 72 6E 20 28 55 67 65 74 73 28 73 74    return (Ugets(st
01F4A0:  72 2C 20 73 69 7A 65 2C 20 66 64 2C 20 31 29 29    r, size, fd, 1))
01F4B0:  3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A    ;..  }..../*..**
01F4C0:  20 47 65 74 73 20 61 6E 20 65 6E 74 69 72 65 20     Gets an entire 
01F4D0:  73 74 72 69 6E 67 20 66 72 6F 6D 20 73 74 64 69    string from stdi
01F4E0:  6E 20 28 65 78 63 6C 75 64 69 6E 67 20 69 74 73    n (excluding its
01F4F0:  20 6E 65 77 6C 69 6E 65 0D 0A 2A 2A 20 74 65 72     newline..** ter
01F500:  6D 69 6E 61 74 6F 72 29 20 6F 72 20 73 69 7A 65    minator) or size
01F510:  2D 31 20 63 68 61 72 61 63 74 65 72 73 2C 20 77    -1 characters, w
01F520:  68 69 63 68 65 76 65 72 20 63 6F 6D 65 73 0D 0A    hichever comes..
01F530:  2A 2A 20 66 69 72 73 74 2E 20 54 68 65 20 69 6E    ** first. The in
01F540:  70 75 74 20 69 73 20 74 65 72 6D 69 6E 61 74 65    put is terminate
01F550:  64 20 62 79 20 61 20 6E 75 6C 6C 20 63 68 61 72    d by a null char
01F560:  61 63 74 65 72 2E 0D 0A 2A 2A 20 54 68 65 20 75    acter...** The u
01F570:  73 65 72 20 62 75 66 66 65 72 20 6D 75 73 74 20    ser buffer must 
01F580:  62 65 20 6C 61 72 67 65 20 65 6E 6F 75 67 68 20    be large enough 
01F590:  74 6F 20 68 6F 6C 64 20 74 68 65 20 64 61 74 61    to hold the data
01F5A0:  2E 0D 0A 2A 2A 20 45 6E 74 72 79 3A 20 73 74 72    ...** Entry: str
01F5B0:  20 20 3D 20 50 6F 69 6E 74 65 72 20 74 6F 20 64      = Pointer to d
01F5C0:  65 73 74 69 6E 61 74 69 6F 6E 20 62 75 66 66 65    estination buffe
01F5D0:  72 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 73    r...** Returns s
01F5E0:  74 72 20 6F 6E 20 73 75 63 63 65 73 73 2C 20 65    tr on success, e
01F5F0:  6C 73 65 20 4E 55 4C 4C 2E 0D 0A 2A 2F 0D 0A 67    lse NULL...*/..g
01F600:  67 2C 20 61 72 67 2C 20 2E 2E 2E 29 20 2D 20 46    g, arg, ...) - F
01F610:  6F 72 6D 61 74 74 65 64 20 70 72 69 6E 74 2E 0D    ormatted print..
01F620:  0A 2A 2A 20 4F 70 65 72 61 74 65 73 20 61 73 20    .** Operates as 
01F630:  64 65 73 63 72 69 62 65 64 20 62 79 20 4B 65 72    described by Ker
01F640:  6E 69 67 68 61 6E 20 26 20 52 69 74 63 68 69 65    nighan & Ritchie
01F650:  2E 0D 0A 2A 2A 20 62 2C 20 63 2C 20 64 2C 20 6F    ...** b, c, d, o
01F660:  2C 20 73 2C 20 75 2C 20 61 6E 64 20 78 20 73 70    , s, u, and x sp
01F670:  65 63 69 66 69 63 61 74 69 6F 6E 73 20 61 72 65    ecifications are
01F680:  20 73 75 70 70 6F 72 74 65 64 2E 0D 0A 2A 2A 20     supported...** 
01F690:  4E 6F 74 65 3A 20 62 20 28 62 69 6E 61 72 79 29    Note: b (binary)
01F6A0:  20 69 73 20 61 20 6E 6F 6E 2D 73 74 61 6E 64 61     is a non-standa
01F6B0:  72 64 20 65 78 74 65 6E 73 69 6F 6E 2E 0D 0A 2A    rd extension...*
01F6C0:  2F 0D 0A 66 70 72 69 6E 74 66 28 61 72 67 63 29    /..fprintf(argc)
01F6D0:  20 69 6E 74 20 61 72 67 63 3B 20 7B 0D 0A 20 20     int argc; {..  
01F6E0:  69 6E 74 20 2A 6E 78 74 61 72 67 3B 0D 0A 20 20    int *nxtarg;..  
01F6F0:  6E 78 74 61 72 67 20 3D 20 43 43 41 52 47 43 28    nxtarg = CCARGC(
01F700:  29 20 2B 20 26 61 72 67 63 3B 0D 0A 20 20 72 65    ) + &argc;..  re
01F710:  74 75 72 6E 28 55 70 72 69 6E 74 28 2A 28 2D 2D    turn(Uprint(*(--
01F720:  6E 78 74 61 72 67 29 2C 20 2D 2D 6E 78 74 61 72    nxtarg), --nxtar
01F730:  67 29 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D    g));..  }..../*.
01F740:  0A 2A 2A 20 70 72 69 6E 74 66 28 63 74 6C 73 74    .** printf(ctlst
01F750:  72 69 6E 67 2C 20 61 72 67 2C 20 61 72 67 2C 20    ring, arg, arg, 
01F760:  2E 2E 2E 29 20 2D 20 46 6F 72 6D 61 74 74 65 64    ...) - Formatted
01F770:  20 70 72 69 6E 74 2E 0D 0A 2A 2A 20 4F 70 65 72     print...** Oper
01F780:  61 74 65 73 20 61 73 20 64 65 73 63 72 69 62 65    ates as describe
01F790:  64 20 62 79 20 4B 65 72 6E 69 67 68 61 6E 20 26    d by Kernighan &
01F7A0:  20 52 69 74 63 68 69 65 2E 0D 0A 2A 2A 20 62 2C     Ritchie...** b,
01F7B0:  20 63 2C 20 64 2C 20 6F 2C 20 73 2C 20 75 2C 20     c, d, o, s, u, 
01F7C0:  61 6E 64 20 78 20 73 70 65 63 69 66 69 63 61 74    and x specificat
01F7D0:  69 6F 6E 73 20 61 72 65 20 73 75 70 70 6F 72 74    ions are support
01F7E0:  65 64 2E 0D 0A 2A 2A 20 4E 6F 74 65 3A 20 62 20    ed...** Note: b 
01F7F0:  28 62 69 6E 61 72 79 29 20 69 73 20 61 20 6E 6F    (binary) is a no
01F800:  65 74 73 28 73 74 72 29 20 63 68 61 72 20 2A 73    ets(str) char *s
01F810:  74 72 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 20    tr; {..  return 
01F820:  28 55 67 65 74 73 28 73 74 72 2C 20 33 32 37 36    (Ugets(str, 3276
01F830:  37 2C 20 73 74 64 69 6E 2C 20 30 29 29 3B 0D 0A    7, stdin, 0));..
01F840:  20 20 7D 0D 0A 0D 0A 55 67 65 74 73 28 73 74 72      }....Ugets(str
01F850:  2C 20 73 69 7A 65 2C 20 66 64 2C 20 6E 6C 29 20    , size, fd, nl) 
01F860:  63 68 61 72 20 2A 73 74 72 3B 20 69 6E 74 20 73    char *str; int s
01F870:  69 7A 65 2C 20 66 64 2C 20 6E 6C 3B 20 7B 0D 0A    ize, fd, nl; {..
01F880:  20 20 69 6E 74 20 62 61 63 6B 75 70 3B 0D 0A 20      int backup;.. 
01F890:  20 63 68 61 72 20 2A 6E 65 78 74 3B 0D 0A 20 20     char *next;..  
01F8A0:  6E 65 78 74 20 3D 20 73 74 72 3B 0D 0A 20 20 77    next = str;..  w
01F8B0:  68 69 6C 65 28 2D 2D 73 69 7A 65 20 3E 20 30 29    hile(--size > 0)
01F8C0:  20 7B 0D 0A 20 20 20 20 73 77 69 74 63 68 20 28     {..    switch (
01F8D0:  2A 6E 65 78 74 20 3D 20 66 67 65 74 63 28 66 64    *next = fgetc(fd
01F8E0:  29 29 20 7B 0D 0A 20 20 20 20 20 20 63 61 73 65    )) {..      case
01F8F0:  20 20 45 4F 46 3A 20 2A 6E 65 78 74 20 3D 20 4E      EOF: *next = N
01F900:  55 4C 4C 3B 0D 0A 20 20 20 20 20 20 20 20 20 20    ULL;..          
01F910:  20 20 20 20 20 20 20 69 66 28 6E 65 78 74 20 3D           if(next =
01F920:  3D 20 73 74 72 29 20 72 65 74 75 72 6E 20 28 4E    = str) return (N
01F930:  55 4C 4C 29 3B 0D 0A 20 20 20 20 20 20 20 20 20    ULL);..         
01F940:  20 20 20 20 20 20 20 20 72 65 74 75 72 6E 20 28            return (
01F950:  73 74 72 29 3B 0D 0A 20 20 20 20 20 20 63 61 73    str);..      cas
01F960:  65 20 27 5C 6E 27 3A 20 2A 28 6E 65 78 74 20 2B    e '\n': *(next +
01F970:  20 6E 6C 29 20 3D 20 4E 55 4C 4C 3B 0D 0A 20 20     nl) = NULL;..  
01F980:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                   r
01F990:  65 74 75 72 6E 20 28 73 74 72 29 3B 0D 0A 20 20    eturn (str);..  
01F9A0:  20 20 20 20 63 61 73 65 20 20 52 55 42 3A 20 69        case  RUB: i
01F9B0:  66 28 6E 65 78 74 20 3E 20 73 74 72 29 20 62 61    f(next > str) ba
01F9C0:  63 6B 75 70 20 3D 20 31 3B 20 65 6C 73 65 20 62    ckup = 1; else b
01F9D0:  61 63 6B 75 70 20 3D 20 30 3B 0D 0A 20 20 20 20    ackup = 0;..    
01F9E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 67 6F 74                 got
01F9F0:  6F 20 62 61 63 6B 6F 75 74 3B 0D 0A 20 20 20 20    o backout;..    
01FA00:  6E 2D 73 74 61 6E 64 61 72 64 20 65 78 74 65 6E    n-standard exten
01FA10:  73 69 6F 6E 2E 0D 0A 2A 2F 0D 0A 70 72 69 6E 74    sion...*/..print
01FA20:  66 28 61 72 67 63 29 20 69 6E 74 20 61 72 67 63    f(argc) int argc
01FA30:  3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 28 55 70    ; {..  return(Up
01FA40:  72 69 6E 74 28 73 74 64 6F 75 74 2C 20 43 43 41    rint(stdout, CCA
01FA50:  52 47 43 28 29 20 2B 20 26 61 72 67 63 20 2D 20    RGC() + &argc - 
01FA60:  31 29 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F 2A 0D    1));..  }..../*.
01FA70:  0A 2A 2A 20 55 70 72 69 6E 74 28 66 64 2C 20 63    .** Uprint(fd, c
01FA80:  74 6C 73 74 72 69 6E 67 2C 20 61 72 67 2C 20 61    tlstring, arg, a
01FA90:  72 67 2C 20 2E 2E 2E 29 0D 0A 2A 2A 20 43 61 6C    rg, ...)..** Cal
01FAA0:  6C 65 64 20 62 79 20 66 70 72 69 6E 74 66 28 29    led by fprintf()
01FAB0:  20 61 6E 64 20 70 72 69 6E 74 66 28 29 2E 0D 0A     and printf()...
01FAC0:  2A 2F 0D 0A 55 70 72 69 6E 74 28 66 64 2C 20 6E    */..Uprint(fd, n
01FAD0:  78 74 61 72 67 29 20 69 6E 74 20 66 64 2C 20 2A    xtarg) int fd, *
01FAE0:  6E 78 74 61 72 67 3B 20 7B 0D 0A 20 20 69 6E 74    nxtarg; {..  int
01FAF0:  20 20 61 72 67 2C 20 6C 65 66 74 2C 20 70 61 64      arg, left, pad
01FB00:  2C 20 63 63 2C 20 6C 65 6E 2C 20 6D 61 78 63 68    , cc, len, maxch
01FB10:  72 2C 20 77 69 64 74 68 3B 0D 0A 20 20 63 68 61    r, width;..  cha
01FB20:  72 20 2A 63 74 6C 2C 20 2A 73 70 74 72 2C 20 73    r *ctl, *sptr, s
01FB30:  74 72 5B 31 37 5D 3B 0D 0A 20 20 63 63 20 3D 20    tr[17];..  cc = 
01FB40:  30 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20    0;              
01FB50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FB60:  20 20 20 20 20 20 20 20 20 20 20 0D 0A 20 20 63               ..  c
01FB70:  74 6C 20 3D 20 2A 6E 78 74 61 72 67 2D 2D 3B 20    tl = *nxtarg--; 
01FB80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FB90:  20 20 20 20 20 20 20 20 20 0D 0A 20 20 77 68 69             ..  whi
01FBA0:  6C 65 28 2A 63 74 6C 29 20 7B 0D 0A 20 20 20 20    le(*ctl) {..    
01FBB0:  69 66 28 2A 63 74 6C 21 3D 27 25 27 29 20 7B 66    if(*ctl!='%') {f
01FBC0:  70 75 74 63 28 2A 63 74 6C 2B 2B 2C 20 66 64 29    putc(*ctl++, fd)
01FBD0:  3B 20 2B 2B 63 63 3B 20 63 6F 6E 74 69 6E 75 65    ; ++cc; continue
01FBE0:  3B 7D 0D 0A 20 20 20 20 65 6C 73 65 20 2B 2B 63    ;}..    else ++c
01FBF0:  74 6C 3B 0D 0A 20 20 20 20 69 66 28 2A 63 74 6C    tl;..    if(*ctl
01FC00:  20 20 63 61 73 65 20 57 49 50 45 3A 20 62 61 63      case WIPE: bac
01FC10:  6B 75 70 20 3D 20 6E 65 78 74 20 2D 20 73 74 72    kup = next - str
01FC20:  3B 0D 0A 20 20 20 20 20 20 20 20 62 61 63 6B 6F    ;..        backo
01FC30:  75 74 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ut:..           
01FC40:  20 20 20 20 20 20 69 66 28 69 73 63 6F 6E 73 28          if(iscons(
01FC50:  66 64 29 29 20 7B 0D 0A 20 20 20 20 20 20 20 20    fd)) {..        
01FC60:  20 20 20 20 20 20 20 20 20 20 20 66 70 75 74 73               fputs
01FC70:  28 22 5C 62 20 5C 62 5C 62 20 5C 62 22 2C 20 73    ("\b \b\b \b", s
01FC80:  74 64 65 72 72 29 3B 0D 0A 20 20 20 20 20 20 20    tderr);..       
01FC90:  20 20 20 20 20 20 20 20 20 20 20 20 2B 2B 73 69                ++si
01FCA0:  7A 65 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ze;..           
01FCB0:  20 20 20 20 20 20 20 20 77 68 69 6C 65 28 62 61            while(ba
01FCC0:  63 6B 75 70 2D 2D 29 20 7B 0D 0A 20 20 20 20 20    ckup--) {..     
01FCD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FCE0:  66 70 75 74 73 28 22 5C 62 20 5C 62 22 2C 20 73    fputs("\b \b", s
01FCF0:  74 64 65 72 72 29 3B 0D 0A 20 20 20 20 20 20 20    tderr);..       
01FD00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                  if
01FD10:  28 2A 2D 2D 6E 65 78 74 20 3C 20 33 32 29 20 66    (*--next < 32) f
01FD20:  70 75 74 73 28 22 5C 62 20 5C 62 22 2C 20 73 74    puts("\b \b", st
01FD30:  64 65 72 72 29 3B 0D 0A 20 20 20 20 20 20 20 20    derr);..        
01FD40:  20 20 20 20 20 20 20 20 20 20 20 20 20 2B 2B 73                 ++s
01FD50:  69 7A 65 3B 0D 0A 20 20 20 20 20 20 20 20 20 20    ize;..          
01FD60:  20 20 20 20 20 20 20 20 20 20 20 7D 0D 0A 20 20               }..  
01FD70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FD80:  20 63 6F 6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20     continue;..    
01FD90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7D                   }
01FDA0:  0D 0A 20 20 20 20 20 20 20 20 64 65 66 61 75 6C    ..        defaul
01FDB0:  74 3A 20 2B 2B 6E 65 78 74 3B 0D 0A 20 20 20 20    t: ++next;..    
01FDC0:  20 20 7D 0D 0A 20 20 20 20 7D 0D 0A 20 20 2A 6E      }..    }..  *n
01FDD0:  65 78 74 20 3D 20 4E 55 4C 4C 3B 0D 0A 20 20 72    ext = NULL;..  r
01FDE0:  65 74 75 72 6E 20 28 73 74 72 29 3B 0D 0A 20 20    eturn (str);..  
01FDF0:  7D 0D 0A 0D 0A 3E 3E 3E 20 46 4F 50 45 4E 2E 43    }....>>> FOPEN.C
01FE00:  3D 3D 27 25 27 29 20 7B 66 70 75 74 63 28 2A 63    =='%') {fputc(*c
01FE10:  74 6C 2B 2B 2C 20 66 64 29 3B 20 2B 2B 63 63 3B    tl++, fd); ++cc;
01FE20:  20 63 6F 6E 74 69 6E 75 65 3B 7D 0D 0A 20 20 20     continue;}..   
01FE30:  20 69 66 28 2A 63 74 6C 3D 3D 27 2D 27 29 20 7B     if(*ctl=='-') {
01FE40:  6C 65 66 74 20 3D 20 31 3B 20 2B 2B 63 74 6C 3B    left = 1; ++ctl;
01FE50:  7D 20 65 6C 73 65 20 6C 65 66 74 20 3D 20 30 3B    } else left = 0;
01FE60:  20 20 20 20 20 20 20 0D 0A 20 20 20 20 69 66 28           ..    if(
01FE70:  2A 63 74 6C 3D 3D 27 30 27 29 20 70 61 64 20 3D    *ctl=='0') pad =
01FE80:  20 27 30 27 3B 20 65 6C 73 65 20 70 61 64 20 3D     '0'; else pad =
01FE90:  20 27 20 27 3B 20 20 20 20 20 20 20 20 20 20 20     ' ';           
01FEA0:  0D 0A 20 20 20 20 69 66 28 69 73 64 69 67 69 74    ..    if(isdigit
01FEB0:  28 2A 63 74 6C 29 29 20 7B 0D 0A 20 20 20 20 20    (*ctl)) {..     
01FEC0:  20 77 69 64 74 68 20 3D 20 61 74 6F 69 28 63 74     width = atoi(ct
01FED0:  6C 2B 2B 29 3B 0D 0A 20 20 20 20 20 20 77 68 69    l++);..      whi
01FEE0:  6C 65 28 69 73 64 69 67 69 74 28 2A 63 74 6C 29    le(isdigit(*ctl)
01FEF0:  29 20 2B 2B 63 74 6C 3B 0D 0A 20 20 20 20 20 20    ) ++ctl;..      
01FF00:  7D 0D 0A 20 20 20 20 65 6C 73 65 20 77 69 64 74    }..    else widt
01FF10:  68 20 3D 20 30 3B 0D 0A 20 20 20 20 69 66 28 2A    h = 0;..    if(*
01FF20:  63 74 6C 3D 3D 27 2E 27 29 20 7B 20 20 20 20 20    ctl=='.') {     
01FF30:  20 20 20 20 20 20 20 0D 0A 20 20 20 20 20 20 6D           ..      m
01FF40:  61 78 63 68 72 20 3D 20 61 74 6F 69 28 2B 2B 63    axchr = atoi(++c
01FF50:  74 6C 29 3B 0D 0A 20 20 20 20 20 20 77 68 69 6C    tl);..      whil
01FF60:  65 28 69 73 64 69 67 69 74 28 2A 63 74 6C 29 29    e(isdigit(*ctl))
01FF70:  20 2B 2B 63 74 6C 3B 0D 0A 20 20 20 20 20 20 7D     ++ctl;..      }
01FF80:  0D 0A 20 20 20 20 65 6C 73 65 20 6D 61 78 63 68    ..    else maxch
01FF90:  72 20 3D 20 30 3B 0D 0A 20 20 20 20 61 72 67 20    r = 0;..    arg 
01FFA0:  3D 20 2A 6E 78 74 61 72 67 2D 2D 3B 0D 0A 20 20    = *nxtarg--;..  
01FFB0:  20 20 73 70 74 72 20 3D 20 73 74 72 3B 0D 0A 20      sptr = str;.. 
01FFC0:  20 20 20 73 77 69 74 63 68 28 2A 63 74 6C 2B 2B       switch(*ctl++
01FFD0:  29 20 7B 0D 0A 20 20 20 20 20 20 63 61 73 65 20    ) {..      case 
01FFE0:  27 63 27 3A 20 73 74 72 5B 30 5D 20 3D 20 61 72    'c': str[0] = ar
01FFF0:  67 3B 20 73 74 72 5B 31 5D 20 3D 20 4E 55 4C 4C    g; str[1] = NULL
020000:  20 37 37 31 0D 0A 23 64 65 66 69 6E 65 20 4E 4F     771..#define NO
020010:  43 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72    CCARGC  /* no ar
020020:  67 20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20    g count passing 
020030:  2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64    */..#include std
020040:  69 6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20 63    io.h..#include c
020050:  6C 69 62 2E 64 65 66 0D 0A 2F 2A 0D 0A 2A 2A 20    lib.def../*..** 
020060:  4F 70 65 6E 20 66 69 6C 65 20 69 6E 64 69 63 61    Open file indica
020070:  74 65 64 20 62 79 20 66 6E 2E 0D 0A 2A 2A 20 45    ted by fn...** E
020080:  6E 74 72 79 3A 20 66 6E 20 20 20 3D 20 4E 75 6C    ntry: fn   = Nul
020090:  6C 2D 74 65 72 6D 69 6E 61 74 65 64 20 43 50 2F    l-terminated CP/
0200A0:  4D 20 66 69 6C 65 20 6E 61 6D 65 2E 0D 0A 2A 2A    M file name...**
0200B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4D                   M
0200C0:  61 79 20 62 65 20 70 72 65 66 69 78 65 64 20 62    ay be prefixed b
0200D0:  79 20 6C 65 74 74 65 72 20 6F 66 20 64 69 72 76    y letter of dirv
0200E0:  65 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 20    e...**          
0200F0:  20 20 20 20 20 4D 61 79 20 62 65 20 6A 75 73 74         May be just
020100:  20 43 4F 4E 3A 2C 20 52 44 52 3A 2C 20 50 55 4E     CON:, RDR:, PUN
020110:  3A 2C 20 6F 72 20 4C 53 54 3A 2E 0D 0A 2A 2A 20    :, or LST:...** 
020120:  20 20 20 20 20 20 20 6D 6F 64 65 20 3D 20 22 61           mode = "a
020130:  22 20 20 2D 20 61 70 70 65 6E 64 0D 0A 2A 2A 20    "  - append..** 
020140:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 72                  "r
020150:  22 20 20 2D 20 72 65 61 64 0D 0A 2A 2A 20 20 20    "  - read..**   
020160:  20 20 20 20 20 20 20 20 20 20 20 20 22 77 22 20                "w" 
020170:  20 2D 20 77 72 69 74 65 0D 0A 2A 2A 20 20 20 20     - write..**    
020180:  20 20 20 20 20 20 20 20 20 20 20 22 61 2B 22 20               "a+" 
020190:  2D 20 61 70 70 65 6E 64 20 75 70 64 61 74 65 0D    - append update.
0201A0:  0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 20    .**             
0201B0:  20 20 22 72 2B 22 20 2D 20 72 65 61 64 20 20 20      "r+" - read   
0201C0:  75 70 64 61 74 65 0D 0A 2A 2A 20 20 20 20 20 20    update..**      
0201D0:  20 20 20 20 20 20 20 20 20 22 77 2B 22 20 2D 20             "w+" - 
0201E0:  77 72 69 74 65 20 20 75 70 64 61 74 65 0D 0A 2A    write  update..*
0201F0:  2A 20 52 65 74 75 72 6E 73 20 61 20 66 69 6C 65    * Returns a file
020200:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
020210:  1B 00 01 00 02 09 52 E5 1B 00 41 02 00 00 00 02    ......R...A.....
020220:  1B 00 46 02 00 00 00 02 1B 00 42 02 00 00 00 02    ..F.......B.....
020230:  1B 00 47 02 00 00 00 02 1B 00 43 02 00 00 00 02    ..G.......C.....
020240:  1B 00 48 02 00 00 00 02 1B 00 44 02 00 00 00 02    ..H.......D.....
020250:  1B 00 49 02 00 00 00 02 1B 00 45 02 00 00 00 02    ..I.......E.....
020260:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
020270:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
020280:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
020290:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0202F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
020300:  3B 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20    ; break;..      
020310:  63 61 73 65 20 27 73 27 3A 20 73 70 74 72 20 3D    case 's': sptr =
020320:  20 61 72 67 3B 20 20 20 20 20 20 20 20 62 72 65     arg;        bre
020330:  61 6B 3B 0D 0A 20 20 20 20 20 20 63 61 73 65 20    ak;..      case 
020340:  27 64 27 3A 20 69 74 6F 61 28 61 72 67 2C 73 74    'd': itoa(arg,st
020350:  72 29 3B 20 20 20 20 20 62 72 65 61 6B 3B 0D 0A    r);     break;..
020360:  20 20 20 20 20 20 63 61 73 65 20 27 62 27 3A 20          case 'b': 
020370:  69 74 6F 61 62 28 61 72 67 2C 73 74 72 2C 32 29    itoab(arg,str,2)
020380:  3B 20 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20    ;  break;..     
020390:  20 63 61 73 65 20 27 6F 27 3A 20 69 74 6F 61 62     case 'o': itoab
0203A0:  28 61 72 67 2C 73 74 72 2C 38 29 3B 20 20 62 72    (arg,str,8);  br
0203B0:  65 61 6B 3B 0D 0A 20 20 20 20 20 20 63 61 73 65    eak;..      case
0203C0:  20 27 75 27 3A 20 69 74 6F 61 62 28 61 72 67 2C     'u': itoab(arg,
0203D0:  73 74 72 2C 31 30 29 3B 20 62 72 65 61 6B 3B 0D    str,10); break;.
0203E0:  0A 20 20 20 20 20 20 63 61 73 65 20 27 78 27 3A    .      case 'x':
0203F0:  20 69 74 6F 61 62 28 61 72 67 2C 73 74 72 2C 31     itoab(arg,str,1
020400:  36 29 3B 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20    6); break;..    
020410:  20 20 64 65 66 61 75 6C 74 3A 20 20 72 65 74 75      default:  retu
020420:  72 6E 20 28 63 63 29 3B 0D 0A 20 20 20 20 20 20    rn (cc);..      
020430:  7D 0D 0A 20 20 20 20 6C 65 6E 20 3D 20 73 74 72    }..    len = str
020440:  6C 65 6E 28 73 70 74 72 29 3B 0D 0A 20 20 20 20    len(sptr);..    
020450:  69 66 28 6D 61 78 63 68 72 20 26 26 20 6D 61 78    if(maxchr && max
020460:  63 68 72 3C 6C 65 6E 29 20 6C 65 6E 20 3D 20 6D    chr<len) len = m
020470:  61 78 63 68 72 3B 0D 0A 20 20 20 20 69 66 28 77    axchr;..    if(w
020480:  69 64 74 68 3E 6C 65 6E 29 20 77 69 64 74 68 20    idth>len) width 
020490:  3D 20 77 69 64 74 68 20 2D 20 6C 65 6E 3B 20 65    = width - len; e
0204A0:  6C 73 65 20 77 69 64 74 68 20 3D 20 30 3B 20 0D    lse width = 0; .
0204B0:  0A 20 20 20 20 69 66 28 21 6C 65 66 74 29 20 77    .    if(!left) w
0204C0:  68 69 6C 65 28 77 69 64 74 68 2D 2D 29 20 7B 66    hile(width--) {f
0204D0:  70 75 74 63 28 70 61 64 2C 66 64 29 3B 20 2B 2B    putc(pad,fd); ++
0204E0:  63 63 3B 7D 0D 0A 20 20 20 20 77 68 69 6C 65 28    cc;}..    while(
0204F0:  6C 65 6E 2D 2D 29 20 7B 66 70 75 74 63 28 2A 73    len--) {fputc(*s
020500:  66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F    fine NOCCARGC  /
020510:  2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F    * no argument co
020520:  75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A    unt passing */..
020530:  65 78 74 65 72 6E 20 63 68 61 72 20 2A 55 6D 65    extern char *Ume
020540:  6D 70 74 72 3B 0D 0A 2F 2A 0D 0A 2A 2A 20 66 72    mptr;../*..** fr
020550:  65 65 28 70 74 72 29 20 2D 20 46 72 65 65 20 70    ee(ptr) - Free p
020560:  72 65 76 69 6F 75 73 6C 79 20 61 6C 6C 6F 63 61    reviously alloca
020570:  74 65 64 20 6D 65 6D 6F 72 79 20 62 6C 6F 63 6B    ted memory block
020580:  2E 0D 0A 2A 2A 20 4D 65 6D 6F 72 79 20 6D 75 73    ...** Memory mus
020590:  74 20 62 65 20 66 72 65 65 64 20 69 6E 20 74 68    t be freed in th
0205A0:  65 20 72 65 76 65 72 73 65 20 6F 72 64 65 72 20    e reverse order 
0205B0:  66 72 6F 6D 20 77 68 69 63 68 0D 0A 2A 2A 20 69    from which..** i
0205C0:  74 20 77 61 73 20 61 6C 6C 6F 63 61 74 65 64 2E    t was allocated.
0205D0:  0D 0A 2A 2A 20 70 74 72 20 20 20 20 3D 20 56 61    ..** ptr    = Va
0205E0:  6C 75 65 20 72 65 74 75 72 6E 65 64 20 62 79 20    lue returned by 
0205F0:  63 61 6C 6C 6F 63 28 29 20 6F 72 20 6D 61 6C 6C    calloc() or mall
020600:  6F 63 28 29 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E    oc()...** Return
020610:  73 20 70 74 72 20 69 66 20 73 75 63 63 65 73 73    s ptr if success
020620:  66 75 6C 20 6F 72 20 4E 55 4C 4C 20 6F 74 68 65    ful or NULL othe
020630:  72 77 69 73 65 2E 0D 0A 2A 2F 0D 0A 66 72 65 65    rwise...*/..free
020640:  28 70 74 72 29 20 63 68 61 72 20 2A 70 74 72 3B    (ptr) char *ptr;
020650:  20 7B 0D 0A 20 20 20 72 65 74 75 72 6E 20 28 55     {..   return (U
020660:  6D 65 6D 70 74 72 20 3D 20 70 74 72 29 3B 0D 0A    memptr = ptr);..
020670:  20 20 20 7D 0D 0A 23 61 73 6D 0D 0A 63 66 72 65       }..#asm..cfre
020680:  65 20 20 65 71 75 20 20 20 20 66 72 65 65 0D 0A    e  equ    free..
020690:  20 20 20 20 20 20 20 65 6E 74 72 79 20 20 63 66           entry  cf
0206A0:  72 65 65 0D 0A 23 65 6E 64 61 73 6D 0D 0A 3E 3E    ree..#endasm..>>
0206B0:  3E 20 46 52 45 4F 50 45 4E 2E 43 20 37 32 39 0D    > FREOPEN.C 729.
0206C0:  0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47    .#define NOCCARG
0206D0:  43 20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E    C  /* no argumen
0206E0:  74 20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20    t count passing 
0206F0:  2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64    */..#include std
020700:  70 74 72 2B 2B 2C 66 64 29 3B 20 2B 2B 63 63 3B    ptr++,fd); ++cc;
020710:  20 7D 0D 0A 20 20 20 20 69 66 28 6C 65 66 74 29     }..    if(left)
020720:  20 77 68 69 6C 65 28 77 69 64 74 68 2D 2D 29 20     while(width--) 
020730:  7B 66 70 75 74 63 28 70 61 64 2C 66 64 29 3B 20    {fputc(pad,fd); 
020740:  2B 2B 63 63 3B 7D 20 20 0D 0A 20 20 20 20 7D 0D    ++cc;}  ..    }.
020750:  0A 20 20 72 65 74 75 72 6E 28 63 63 29 3B 0D 0A    .  return(cc);..
020760:  20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 46 50 55 54 43      }....>>> FPUTC
020770:  2E 43 20 35 37 34 0D 0A 23 64 65 66 69 6E 65 20    .C 574..#define 
020780:  4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20    NOCCARGC  /* no 
020790:  61 72 67 20 63 6F 75 6E 74 20 70 61 73 73 69 6E    arg count passin
0207A0:  67 20 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73    g */..#include s
0207B0:  74 64 69 6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65    tdio.h..#include
0207C0:  20 63 6C 69 62 2E 64 65 66 0D 0A 65 78 74 65 72     clib.def..exter
0207D0:  6E 20 69 6E 74 20 55 73 74 61 74 75 73 5B 5D 3B    n int Ustatus[];
0207E0:  0D 0A 2F 2A 0D 0A 2A 2A 20 43 68 61 72 61 63 74    ../*..** Charact
0207F0:  65 72 2D 73 74 72 65 61 6D 20 6F 75 74 70 75 74    er-stream output
020800:  20 6F 66 20 61 20 63 68 61 72 61 63 74 65 72 20     of a character 
020810:  74 6F 20 66 64 2E 0D 0A 2A 2A 20 45 6E 74 72 79    to fd...** Entry
020820:  3A 20 63 68 20 3D 20 43 68 61 72 61 63 74 65 72    : ch = Character
020830:  20 74 6F 20 77 72 69 74 65 2E 0D 0A 2A 2A 20 20     to write...**  
020840:  20 20 20 20 20 20 66 64 20 3D 20 46 69 6C 65 20          fd = File 
020850:  64 65 73 63 72 69 70 74 6F 72 20 6F 66 20 70 65    descriptor of pe
020860:  72 69 6E 65 6E 74 20 66 69 6C 65 2E 0D 0A 2A 2A    rinent file...**
020870:  20 52 65 74 75 72 6E 73 20 63 68 61 72 61 63 74     Returns charact
020880:  65 72 20 77 72 69 74 74 65 6E 20 6F 6E 20 73 75    er written on su
020890:  63 63 65 73 73 2C 20 65 6C 73 65 20 45 4F 46 2E    ccess, else EOF.
0208A0:  0D 0A 2A 2F 0D 0A 66 70 75 74 63 28 63 68 2C 20    ..*/..fputc(ch, 
0208B0:  66 64 29 20 69 6E 74 20 63 68 2C 20 66 64 3B 20    fd) int ch, fd; 
0208C0:  7B 0D 0A 20 20 73 77 69 74 63 68 28 63 68 29 20    {..  switch(ch) 
0208D0:  7B 0D 0A 20 20 20 20 63 61 73 65 20 45 4F 46 3A    {..    case EOF:
0208E0:  20 20 55 77 72 69 74 65 28 43 50 4D 45 4F 46 2C      Uwrite(CPMEOF,
0208F0:  20 66 64 29 3B 20 62 72 65 61 6B 3B 0D 0A 20 20     fd); break;..  
020900:  69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20 43 6C 6F    io.h../*..** Clo
020910:  73 65 20 70 72 65 76 69 6F 75 73 6C 79 20 6F 70    se previously op
020920:  65 6E 65 64 20 66 64 20 61 6E 64 20 72 65 6F 70    ened fd and reop
020930:  65 6E 20 69 74 2E 20 0D 0A 2A 2A 20 45 6E 74 72    en it. ..** Entr
020940:  79 3A 20 66 6E 20 20 20 3D 20 4E 75 6C 6C 2D 74    y: fn   = Null-t
020950:  65 72 6D 69 6E 61 74 65 64 20 43 50 2F 4D 20 66    erminated CP/M f
020960:  69 6C 65 20 6E 61 6D 65 2E 0D 0A 2A 2A 20 20 20    ile name...**   
020970:  20 20 20 20 20 20 20 20 20 20 20 20 4D 61 79 20                May 
020980:  62 65 20 70 72 65 66 69 78 65 64 20 62 79 20 6C    be prefixed by l
020990:  65 74 74 65 72 20 6F 66 20 64 72 69 76 65 2E 0D    etter of drive..
0209A0:  0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 20    .**             
0209B0:  20 20 4D 61 79 20 62 65 20 6A 75 73 74 20 43 4F      May be just CO
0209C0:  4E 3A 2C 20 52 44 52 3A 2C 20 50 55 4E 3A 2C 20    N:, RDR:, PUN:, 
0209D0:  6F 72 20 4C 53 54 3A 2E 0D 0A 2A 2A 20 20 20 20    or LST:...**    
0209E0:  20 20 20 20 6D 6F 64 65 20 3D 20 22 61 22 20 20        mode = "a"  
0209F0:  2D 20 61 70 70 65 6E 64 0D 0A 2A 2A 20 20 20 20    - append..**    
020A00:  20 20 20 20 20 20 20 20 20 20 20 22 72 22 20 20               "r"  
020A10:  2D 20 72 65 61 64 0D 0A 2A 2A 20 20 20 20 20 20    - read..**      
020A20:  20 20 20 20 20 20 20 20 20 22 77 22 20 20 2D 20             "w"  - 
020A30:  77 72 69 74 65 0D 0A 2A 2A 20 20 20 20 20 20 20    write..**       
020A40:  20 20 20 20 20 20 20 20 22 61 2B 22 20 2D 20 61            "a+" - a
020A50:  70 70 65 6E 64 20 75 70 64 61 74 65 0D 0A 2A 2A    ppend update..**
020A60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                   "
020A70:  72 2B 22 20 2D 20 72 65 61 64 20 20 20 75 70 64    r+" - read   upd
020A80:  61 74 65 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20    ate..**         
020A90:  20 20 20 20 20 20 22 77 2B 22 20 2D 20 77 72 69          "w+" - wri
020AA0:  74 65 20 20 75 70 64 61 74 65 0D 0A 2A 2A 20 20    te  update..**  
020AB0:  20 20 20 20 20 20 66 64 20 20 20 3D 20 46 69 6C          fd   = Fil
020AC0:  65 20 64 65 73 63 72 69 70 74 6F 72 20 6F 66 20    e descriptor of 
020AD0:  70 65 72 74 69 6E 65 6E 74 20 66 69 6C 65 2E 0D    pertinent file..
020AE0:  0A 2A 2A 20 52 65 74 75 72 6E 73 20 74 68 65 20    .** Returns the 
020AF0:  6F 72 69 67 69 6E 61 6C 20 66 64 20 6F 6E 20 73    original fd on s
020B00:  20 20 63 61 73 65 20 27 5C 6E 27 3A 20 55 77 72      case '\n': Uwr
020B10:  69 74 65 28 43 52 2C 20 66 64 29 3B 20 55 77 72    ite(CR, fd); Uwr
020B20:  69 74 65 28 4C 46 2C 20 66 64 29 3B 20 62 72 65    ite(LF, fd); bre
020B30:  61 6B 3B 0D 0A 20 20 20 20 64 65 66 61 75 6C 74    ak;..    default
020B40:  3A 20 20 20 55 77 72 69 74 65 28 63 68 2C 20 66    :   Uwrite(ch, f
020B50:  64 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 69 66    d);..    }..  if
020B60:  28 55 73 74 61 74 75 73 5B 66 64 5D 20 26 20 45    (Ustatus[fd] & E
020B70:  52 52 42 49 54 29 20 72 65 74 75 72 6E 20 28 45    RRBIT) return (E
020B80:  4F 46 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 28    OF);..  return (
020B90:  63 68 29 3B 0D 0A 20 20 7D 0D 0A 23 61 73 6D 0D    ch);..  }..#asm.
020BA0:  0A 70 75 74 63 20 65 71 75 20 20 20 66 70 75 74    .putc equ   fput
020BB0:  63 0D 0A 20 20 20 20 20 65 6E 74 72 79 20 70 75    c..     entry pu
020BC0:  74 63 0D 0A 23 65 6E 64 61 73 6D 0D 0A 3E 3E 3E    tc..#endasm..>>>
020BD0:  20 46 50 55 54 53 2E 43 20 33 30 36 0D 0A 23 64     FPUTS.C 306..#d
020BE0:  65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 20    efine NOCCARGC  
020BF0:  2F 2A 20 6E 6F 20 61 72 67 20 63 6F 75 6E 74 20    /* no arg count 
020C00:  70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63    passing */..#inc
020C10:  6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A 23 69    lude stdio.h..#i
020C20:  6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65 66 0D    nclude clib.def.
020C30:  0A 2F 2A 0D 0A 2A 2A 20 57 72 69 74 65 20 61 20    ./*..** Write a 
020C40:  73 74 72 69 6E 67 20 74 6F 20 66 64 2E 20 0D 0A    string to fd. ..
020C50:  2A 2A 20 45 6E 74 72 79 3A 20 73 74 72 69 6E 67    ** Entry: string
020C60:  20 3D 20 50 6F 69 6E 74 65 72 20 74 6F 20 6E 75     = Pointer to nu
020C70:  6C 6C 2D 74 65 72 6D 69 6E 61 74 65 64 20 73 74    ll-terminated st
020C80:  72 69 6E 67 2E 0D 0A 2A 2A 20 20 20 20 20 20 20    ring...**       
020C90:  20 66 64 20 20 20 20 20 3D 20 46 69 6C 65 20 64     fd     = File d
020CA0:  65 73 63 72 69 70 74 6F 72 20 6F 66 20 70 65 72    escriptor of per
020CB0:  74 69 6E 65 6E 74 20 66 69 6C 65 2E 0D 0A 2A 2F    tinent file...*/
020CC0:  0D 0A 66 70 75 74 73 28 73 74 72 69 6E 67 2C 66    ..fputs(string,f
020CD0:  64 29 20 63 68 61 72 20 2A 73 74 72 69 6E 67 3B    d) char *string;
020CE0:  20 69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 77 68     int fd; {..  wh
020CF0:  69 6C 65 28 2A 73 74 72 69 6E 67 29 20 66 70 75    ile(*string) fpu
020D00:  75 63 63 65 73 73 2C 20 65 6C 73 65 20 4E 55 4C    uccess, else NUL
020D10:  4C 2E 0D 0A 2A 2F 0D 0A 66 72 65 6F 70 65 6E 28    L...*/..freopen(
020D20:  66 6E 2C 20 6D 6F 64 65 2C 20 66 64 29 20 63 68    fn, mode, fd) ch
020D30:  61 72 20 2A 66 6E 2C 20 2A 6D 6F 64 65 3B 20 69    ar *fn, *mode; i
020D40:  6E 74 20 66 64 3B 20 7B 0D 0A 20 20 69 66 28 66    nt fd; {..  if(f
020D50:  63 6C 6F 73 65 28 66 64 29 29 20 72 65 74 75 72    close(fd)) retur
020D60:  6E 20 28 4E 55 4C 4C 29 3B 0D 0A 20 20 69 66 28    n (NULL);..  if(
020D70:  55 6F 70 65 6E 28 66 6E 2C 20 6D 6F 64 65 2C 20    Uopen(fn, mode, 
020D80:  66 64 29 3D 3D 45 52 52 29 20 72 65 74 75 72 6E    fd)==ERR) return
020D90:  20 28 4E 55 4C 4C 29 3B 0D 0A 20 20 72 65 74 75     (NULL);..  retu
020DA0:  72 6E 20 28 66 64 29 3B 0D 0A 20 20 7D 0D 0A 3E    rn (fd);..  }..>
020DB0:  3E 3E 20 46 53 43 41 4E 46 2E 43 20 32 36 38 35    >> FSCANF.C 2685
020DC0:  0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52    ..#define NOCCAR
020DD0:  47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65    GC  /* no argume
020DE0:  6E 74 20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67    nt count passing
020DF0:  20 2A 2F 0D 0A 2F 2A 0D 0A 2A 2A 20 59 65 73 2C     */../*..** Yes,
020E00:  20 74 68 61 74 20 69 73 20 63 6F 72 72 65 63 74     that is correct
020E10:  2E 20 20 41 6C 74 68 6F 75 67 68 20 74 68 65 73    .  Although thes
020E20:  65 20 66 75 6E 63 74 69 6F 6E 73 20 75 73 65 20    e functions use 
020E30:  61 6E 0D 0A 2A 2A 20 61 72 67 75 6D 65 6E 74 20    an..** argument 
020E40:  63 6F 75 6E 74 2C 20 74 68 65 79 20 64 6F 20 6E    count, they do n
020E50:  6F 74 20 63 61 6C 6C 20 66 75 6E 63 74 69 6F 6E    ot call function
020E60:  73 20 77 68 69 63 68 20 6E 65 65 64 20 6F 6E 65    s which need one
020E70:  2E 0D 0A 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20    ...*/..#include 
020E80:  73 74 64 69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20    stdio.h../*..** 
020E90:  66 73 63 61 6E 66 28 66 64 2C 20 63 74 6C 73 74    fscanf(fd, ctlst
020EA0:  72 69 6E 67 2C 20 61 72 67 2C 20 61 72 67 2C 20    ring, arg, arg, 
020EB0:  2E 2E 2E 29 20 2D 20 46 6F 72 6D 61 74 74 65 64    ...) - Formatted
020EC0:  20 72 65 61 64 2E 0D 0A 2A 2A 20 4F 70 65 72 61     read...** Opera
020ED0:  74 65 73 20 61 73 20 64 65 73 63 72 69 62 65 64    tes as described
020EE0:  20 62 79 20 4B 65 72 6E 69 67 68 61 6E 20 26 20     by Kernighan & 
020EF0:  52 69 74 63 68 69 65 2E 0D 0A 2A 2A 20 62 2C 20    Ritchie...** b, 
020F00:  74 63 28 2A 73 74 72 69 6E 67 2B 2B 2C 20 66 64    tc(*string++, fd
020F10:  29 20 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20    ) ;..  }....>>> 
020F20:  46 52 45 41 44 2E 43 20 39 32 36 0D 0A 23 64 65    FREAD.C 926..#de
020F30:  66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F    fine NOCCARGC  /
020F40:  2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F    * no argument co
020F50:  75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A    unt passing */..
020F60:  23 69 6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65    #include clib.de
020F70:  66 0D 0A 65 78 74 65 72 6E 20 69 6E 74 20 55 73    f..extern int Us
020F80:  74 61 74 75 73 5B 5D 3B 0D 0A 2F 2A 0D 0A 2A 2A    tatus[];../*..**
020F90:  20 49 74 65 6D 2D 73 74 72 65 61 6D 20 72 65 61     Item-stream rea
020FA0:  64 20 66 72 6F 6D 20 66 64 2E 0D 0A 2A 2A 20 45    d from fd...** E
020FB0:  6E 74 72 79 3A 20 62 75 66 20 3D 20 61 64 64 72    ntry: buf = addr
020FC0:  65 73 73 20 6F 66 20 74 61 72 67 65 74 20 62 75    ess of target bu
020FD0:  66 66 65 72 0D 0A 2A 2A 20 20 20 20 20 20 20 20    ffer..**        
020FE0:  20 73 7A 20 3D 20 73 69 7A 65 20 6F 66 20 69 74     sz = size of it
020FF0:  65 6D 73 20 69 6E 20 62 79 74 65 73 0D 0A 2A 2A    ems in bytes..**
021000:  20 20 20 20 20 20 20 20 20 20 6E 20 3D 20 6E 75              n = nu
021010:  6D 62 65 72 20 6F 66 20 69 74 65 6D 73 20 74 6F    mber of items to
021020:  20 72 65 61 64 0D 0A 2A 2A 20 20 20 20 20 20 20     read..**       
021030:  20 20 66 64 20 3D 20 66 69 6C 65 20 64 65 73 63      fd = file desc
021040:  72 69 70 74 6F 72 0D 0A 2A 2A 20 52 65 74 75 72    riptor..** Retur
021050:  6E 73 20 61 20 63 6F 75 6E 74 20 6F 66 20 74 68    ns a count of th
021060:  65 20 69 74 65 6D 73 20 61 63 74 75 61 6C 6C 79    e items actually
021070:  20 72 65 61 64 2E 0D 0A 2A 2A 20 55 73 65 20 66     read...** Use f
021080:  65 6F 66 28 29 20 61 6E 64 20 66 65 72 72 6F 72    eof() and ferror
021090:  28 29 20 74 6F 20 64 65 74 65 72 6D 69 6E 65 20    () to determine 
0210A0:  66 69 6C 65 20 73 74 61 74 75 73 2E 0D 0A 2A 2F    file status...*/
0210B0:  0D 0A 66 72 65 61 64 28 62 75 66 2C 20 73 7A 2C    ..fread(buf, sz,
0210C0:  20 6E 2C 20 66 64 29 20 63 68 61 72 20 2A 62 75     n, fd) char *bu
0210D0:  66 3B 20 69 6E 74 20 73 7A 2C 20 6E 2C 20 66 64    f; int sz, n, fd
0210E0:  3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 20 28 72    ; {..  return (r
0210F0:  65 61 64 28 66 64 2C 20 62 75 66 2C 20 6E 2A 73    ead(fd, buf, n*s
021100:  63 2C 20 64 2C 20 6F 2C 20 73 2C 20 75 2C 20 61    c, d, o, s, u, a
021110:  6E 64 20 78 20 73 70 65 63 69 66 69 63 61 74 69    nd x specificati
021120:  6F 6E 73 20 61 72 65 20 73 75 70 70 6F 72 74 65    ons are supporte
021130:  64 2E 0D 0A 2A 2A 20 4E 6F 74 65 3A 20 62 20 28    d...** Note: b (
021140:  62 69 6E 61 72 79 29 20 69 73 20 61 20 6E 6F 6E    binary) is a non
021150:  2D 73 74 61 6E 64 61 72 64 20 65 78 74 65 6E 73    -standard extens
021160:  69 6F 6E 2E 0D 0A 2A 2F 0D 0A 66 73 63 61 6E 66    ion...*/..fscanf
021170:  28 61 72 67 63 29 20 69 6E 74 20 61 72 67 63 3B    (argc) int argc;
021180:  20 7B 0D 0A 20 20 69 6E 74 20 2A 6E 78 74 61 72     {..  int *nxtar
021190:  67 3B 0D 0A 20 20 6E 78 74 61 72 67 20 3D 20 43    g;..  nxtarg = C
0211A0:  43 41 52 47 43 28 29 20 2B 20 26 61 72 67 63 3B    CARGC() + &argc;
0211B0:  0D 0A 20 20 72 65 74 75 72 6E 20 28 55 73 63 61    ..  return (Usca
0211C0:  6E 28 2A 28 2D 2D 6E 78 74 61 72 67 29 2C 20 2D    n(*(--nxtarg), -
0211D0:  2D 6E 78 74 61 72 67 29 29 3B 0D 0A 20 20 7D 0D    -nxtarg));..  }.
0211E0:  0A 0D 0A 2F 2A 0D 0A 2A 2A 20 73 63 61 6E 66 28    .../*..** scanf(
0211F0:  63 74 6C 73 74 72 69 6E 67 2C 20 61 72 67 2C 20    ctlstring, arg, 
021200:  61 72 67 2C 20 2E 2E 2E 29 20 2D 20 46 6F 72 6D    arg, ...) - Form
021210:  61 74 74 65 64 20 72 65 61 64 2E 0D 0A 2A 2A 20    atted read...** 
021220:  4F 70 65 72 61 74 65 73 20 61 73 20 64 65 73 63    Operates as desc
021230:  72 69 62 65 64 20 62 79 20 4B 65 72 6E 69 67 68    ribed by Kernigh
021240:  61 6E 20 26 20 52 69 74 63 68 69 65 2E 0D 0A 2A    an & Ritchie...*
021250:  2A 20 62 2C 20 63 2C 20 64 2C 20 6F 2C 20 73 2C    * b, c, d, o, s,
021260:  20 75 2C 20 61 6E 64 20 78 20 73 70 65 63 69 66     u, and x specif
021270:  69 63 61 74 69 6F 6E 73 20 61 72 65 20 73 75 70    ications are sup
021280:  70 6F 72 74 65 64 2E 0D 0A 2A 2A 20 4E 6F 74 65    ported...** Note
021290:  3A 20 62 20 28 62 69 6E 61 72 79 29 20 69 73 20    : b (binary) is 
0212A0:  61 20 6E 6F 6E 2D 73 74 61 6E 64 61 72 64 20 65    a non-standard e
0212B0:  78 74 65 6E 73 69 6F 6E 2E 0D 0A 2A 2F 0D 0A 73    xtension...*/..s
0212C0:  63 61 6E 66 28 61 72 67 63 29 20 69 6E 74 20 61    canf(argc) int a
0212D0:  72 67 63 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E    rgc; {..  return
0212E0:  20 28 55 73 63 61 6E 28 73 74 64 69 6E 2C 20 43     (Uscan(stdin, C
0212F0:  43 41 52 47 43 28 29 20 2B 20 26 61 72 67 63 20    CARGC() + &argc 
021300:  7A 29 2F 73 7A 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A    z)/sz);..  }....
021310:  2F 2A 0D 0A 2A 2A 20 42 69 6E 61 72 79 2D 73 74    /*..** Binary-st
021320:  72 65 61 6D 20 72 65 61 64 20 66 72 6F 6D 20 66    ream read from f
021330:  64 2E 0D 0A 2A 2A 20 45 6E 74 72 79 3A 20 20 66    d...** Entry:  f
021340:  64 20 3D 20 66 69 6C 65 20 64 65 73 63 72 69 70    d = file descrip
021350:  74 6F 72 0D 0A 2A 2A 20 20 20 20 20 20 20 20 62    tor..**        b
021360:  75 66 20 3D 20 61 64 64 72 65 73 73 20 6F 66 20    uf = address of 
021370:  74 61 72 67 65 74 20 62 75 66 66 65 72 0D 0A 2A    target buffer..*
021380:  2A 20 20 20 20 20 20 20 20 20 20 6E 20 3D 20 6E    *          n = n
021390:  75 6D 62 65 72 20 6F 66 20 62 79 74 65 73 20 74    umber of bytes t
0213A0:  6F 20 72 65 61 64 0D 0A 2A 2A 20 52 65 74 75 72    o read..** Retur
0213B0:  6E 73 20 61 20 63 6F 75 6E 74 20 6F 66 20 74 68    ns a count of th
0213C0:  65 20 62 79 74 65 73 20 61 63 74 75 61 6C 6C 79    e bytes actually
0213D0:  20 72 65 61 64 2E 0D 0A 2A 2A 20 55 73 65 20 66     read...** Use f
0213E0:  65 6F 66 28 29 20 61 6E 64 20 66 65 72 72 6F 72    eof() and ferror
0213F0:  28 29 20 74 6F 20 64 65 74 65 72 6D 69 6E 65 20    () to determine 
021400:  66 69 6C 65 20 73 74 61 74 75 73 2E 0D 0A 2A 2F    file status...*/
021410:  0D 0A 72 65 61 64 28 66 64 2C 20 62 75 66 2C 20    ..read(fd, buf, 
021420:  6E 29 20 69 6E 74 20 66 64 2C 20 6E 3B 20 63 68    n) int fd, n; ch
021430:  61 72 20 2A 62 75 66 3B 20 7B 0D 0A 20 20 63 68    ar *buf; {..  ch
021440:  61 72 20 2A 63 6E 74 3B 20 20 2F 2A 20 66 61 6B    ar *cnt;  /* fak
021450:  65 20 75 6E 73 69 67 6E 65 64 20 2A 2F 0D 0A 20    e unsigned */.. 
021460:  20 63 6E 74 20 3D 20 30 3B 0D 0A 20 20 77 68 69     cnt = 0;..  whi
021470:  6C 65 28 6E 2D 2D 29 20 7B 0D 0A 20 20 20 20 2A    le(n--) {..    *
021480:  62 75 66 2B 2B 20 3D 20 55 72 65 61 64 28 66 64    buf++ = Uread(fd
021490:  29 3B 0D 0A 20 20 20 20 69 66 28 55 73 74 61 74    );..    if(Ustat
0214A0:  75 73 5B 66 64 5D 20 26 20 28 45 52 52 42 49 54    us[fd] & (ERRBIT
0214B0:  20 7C 20 45 4F 46 42 49 54 29 29 20 62 72 65 61     | EOFBIT)) brea
0214C0:  6B 3B 0D 0A 20 20 20 20 2B 2B 63 6E 74 3B 0D 0A    k;..    ++cnt;..
0214D0:  20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20        }..  return 
0214E0:  28 63 6E 74 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E    (cnt);..  }..>>>
0214F0:  20 46 52 45 45 2E 43 20 34 31 37 0D 0A 23 64 65     FREE.C 417..#de
021500:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
021510:  1C 00 01 00 02 09 52 E5 1C 00 41 02 00 00 00 02    ......R...A.....
021520:  1C 00 46 02 00 00 00 02 1C 00 42 02 00 00 00 02    ..F.......B.....
021530:  1C 00 47 02 00 00 00 02 1C 00 43 02 00 00 00 02    ..G.......C.....
021540:  1C 00 48 02 00 00 00 02 1C 00 44 02 00 00 00 02    ..H.......D.....
021550:  1C 00 49 02 00 00 00 02 1C 00 45 02 00 00 00 02    ..I.......E.....
021560:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021570:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021580:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021590:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021600:  2D 20 31 29 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 2F    - 1));..  }..../
021610:  2A 0D 0A 2A 2A 20 55 73 63 61 6E 28 66 64 2C 20    *..** Uscan(fd, 
021620:  63 74 6C 73 74 72 69 6E 67 2C 20 61 72 67 2C 20    ctlstring, arg, 
021630:  61 72 67 2C 20 2E 2E 2E 29 20 2D 20 46 6F 72 6D    arg, ...) - Form
021640:  61 74 74 65 64 20 72 65 61 64 2E 0D 0A 2A 2A 20    atted read...** 
021650:  43 61 6C 6C 65 64 20 62 79 20 66 73 63 61 6E 66    Called by fscanf
021660:  28 29 20 61 6E 64 20 73 63 61 6E 66 28 29 2E 0D    () and scanf()..
021670:  0A 2A 2F 0D 0A 55 73 63 61 6E 28 66 64 2C 6E 78    .*/..Uscan(fd,nx
021680:  74 61 72 67 29 20 69 6E 74 20 66 64 2C 20 2A 6E    targ) int fd, *n
021690:  78 74 61 72 67 3B 20 7B 0D 0A 20 20 63 68 61 72    xtarg; {..  char
0216A0:  20 2A 63 61 72 67 2C 20 2A 63 74 6C 2C 20 2A 75     *carg, *ctl, *u
0216B0:  6E 73 69 67 6E 65 64 3B 0D 0A 20 20 69 6E 74 20    nsigned;..  int 
0216C0:  20 2A 6E 61 72 67 2C 20 77 61 73 74 2C 20 61 63     *narg, wast, ac
0216D0:  2C 20 77 69 64 74 68 2C 20 63 68 2C 20 63 6E 76    , width, ch, cnv
0216E0:  2C 20 62 61 73 65 2C 20 6F 76 66 6C 2C 20 73 69    , base, ovfl, si
0216F0:  67 6E 3B 0D 0A 20 20 61 63 20 3D 20 30 3B 0D 0A    gn;..  ac = 0;..
021700:  20 20 63 74 6C 20 3D 20 2A 6E 78 74 61 72 67 2D      ctl = *nxtarg-
021710:  2D 3B 0D 0A 20 20 77 68 69 6C 65 28 2A 63 74 6C    -;..  while(*ctl
021720:  29 20 7B 0D 0A 20 20 20 20 69 66 28 69 73 73 70    ) {..    if(issp
021730:  61 63 65 28 2A 63 74 6C 29 29 20 7B 2B 2B 63 74    ace(*ctl)) {++ct
021740:  6C 3B 20 63 6F 6E 74 69 6E 75 65 3B 7D 0D 0A 20    l; continue;}.. 
021750:  20 20 20 69 66 28 2A 63 74 6C 2B 2B 20 21 3D 20       if(*ctl++ != 
021760:  27 25 27 29 20 63 6F 6E 74 69 6E 75 65 3B 0D 0A    '%') continue;..
021770:  20 20 20 20 69 66 28 2A 63 74 6C 20 3D 3D 20 27        if(*ctl == '
021780:  2A 27 29 20 7B 6E 61 72 67 20 3D 20 63 61 72 67    *') {narg = carg
021790:  20 3D 20 26 77 61 73 74 3B 20 2B 2B 63 74 6C 3B     = &wast; ++ctl;
0217A0:  7D 0D 0A 20 20 20 20 65 6C 73 65 20 20 20 20 20    }..    else     
0217B0:  20 20 20 20 20 20 20 20 6E 61 72 67 20 3D 20 63            narg = c
0217C0:  61 72 67 20 3D 20 2A 6E 78 74 61 72 67 2D 2D 3B    arg = *nxtarg--;
0217D0:  0D 0A 20 20 20 20 63 74 6C 20 2B 3D 20 75 74 6F    ..    ctl += uto
0217E0:  69 28 63 74 6C 2C 20 26 77 69 64 74 68 29 3B 0D    i(ctl, &width);.
0217F0:  0A 20 20 20 20 69 66 28 21 77 69 64 74 68 29 20    .    if(!width) 
021800:  65 73 63 72 69 70 74 6F 72 0D 0A 2A 2A 20 20 20    escriptor..**   
021810:  20 20 20 20 20 62 75 66 20 3D 20 61 64 64 72 65         buf = addre
021820:  73 73 20 6F 66 20 73 6F 75 72 63 65 20 62 75 66    ss of source buf
021830:  66 65 72 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20    fer..**         
021840:  20 6E 20 3D 20 6E 75 6D 62 65 72 20 6F 66 20 62     n = number of b
021850:  79 74 65 73 20 74 6F 20 77 72 69 74 65 0D 0A 2A    ytes to write..*
021860:  2A 20 52 65 74 75 72 6E 73 20 61 20 63 6F 75 6E    * Returns a coun
021870:  74 20 6F 66 20 74 68 65 20 62 79 74 65 73 20 61    t of the bytes a
021880:  63 74 75 61 6C 6C 79 20 77 72 69 74 74 65 6E 20    ctually written 
021890:  6F 72 0D 0A 2A 2A 20 2D 31 20 69 66 20 61 6E 20    or..** -1 if an 
0218A0:  65 72 72 6F 72 20 6F 63 63 75 72 72 65 64 2E 0D    error occurred..
0218B0:  0A 2A 2A 20 4D 61 79 20 75 73 65 20 66 65 72 72    .** May use ferr
0218C0:  6F 72 28 29 2C 20 61 73 20 61 6C 77 61 79 73 2C    or(), as always,
0218D0:  20 74 6F 20 64 65 74 65 63 74 20 65 72 72 6F 72     to detect error
0218E0:  73 2E 0D 0A 2A 2F 0D 0A 77 72 69 74 65 28 66 64    s...*/..write(fd
0218F0:  2C 20 62 75 66 2C 20 6E 29 20 69 6E 74 20 66 64    , buf, n) int fd
021900:  2C 20 6E 3B 20 63 68 61 72 20 2A 62 75 66 3B 20    , n; char *buf; 
021910:  7B 0D 0A 20 20 63 68 61 72 20 2A 63 6E 74 3B 20    {..  char *cnt; 
021920:  20 2F 2A 20 66 61 6B 65 20 75 6E 73 69 67 6E 65     /* fake unsigne
021930:  64 20 2A 2F 0D 0A 20 20 63 6E 74 20 3D 20 6E 3B    d */..  cnt = n;
021940:  0D 0A 20 20 77 68 69 6C 65 28 63 6E 74 2D 2D 29    ..  while(cnt--)
021950:  20 7B 0D 0A 20 20 20 20 55 77 72 69 74 65 28 2A     {..    Uwrite(*
021960:  62 75 66 2B 2B 2C 20 66 64 29 3B 0D 0A 20 20 20    buf++, fd);..   
021970:  20 69 66 28 55 73 74 61 74 75 73 5B 66 64 5D 20     if(Ustatus[fd] 
021980:  26 20 45 52 52 42 49 54 29 20 72 65 74 75 72 6E    & ERRBIT) return
021990:  20 28 2D 31 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20     (-1);..    }.. 
0219A0:  20 72 65 74 75 72 6E 20 28 6E 29 3B 0D 0A 20 20     return (n);..  
0219B0:  7D 0D 0A 3E 3E 3E 20 47 45 54 41 52 47 2E 43 20    }..>>> GETARG.C 
0219C0:  36 36 39 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43    669..#define NOC
0219D0:  43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67    CARGC  /* no arg
0219E0:  75 6D 65 6E 74 20 63 6F 75 6E 74 20 70 61 73 73    ument count pass
0219F0:  69 6E 67 20 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65    ing */..#include
021A00:  77 69 64 74 68 20 3D 20 33 32 37 36 37 3B 0D 0A    width = 32767;..
021A10:  20 20 20 20 69 66 28 21 28 63 6E 76 20 3D 20 2A        if(!(cnv = *
021A20:  63 74 6C 2B 2B 29 29 20 62 72 65 61 6B 3B 0D 0A    ctl++)) break;..
021A30:  20 20 20 20 77 68 69 6C 65 28 69 73 73 70 61 63        while(isspac
021A40:  65 28 63 68 20 3D 20 66 67 65 74 63 28 66 64 29    e(ch = fgetc(fd)
021A50:  29 29 20 3B 0D 0A 20 20 20 20 69 66 28 63 68 20    )) ;..    if(ch 
021A60:  3D 3D 20 45 4F 46 29 20 7B 69 66 28 61 63 29 20    == EOF) {if(ac) 
021A70:  62 72 65 61 6B 3B 20 65 6C 73 65 20 72 65 74 75    break; else retu
021A80:  72 6E 28 45 4F 46 29 3B 7D 0D 0A 20 20 20 20 75    rn(EOF);}..    u
021A90:  6E 67 65 74 63 28 63 68 2C 66 64 29 3B 0D 0A 20    ngetc(ch,fd);.. 
021AA0:  20 20 20 73 77 69 74 63 68 28 63 6E 76 29 20 7B       switch(cnv) {
021AB0:  0D 0A 20 20 20 20 20 20 63 61 73 65 20 27 63 27    ..      case 'c'
021AC0:  3A 0D 0A 20 20 20 20 20 20 20 20 2A 63 61 72 67    :..        *carg
021AD0:  20 3D 20 66 67 65 74 63 28 66 64 29 3B 0D 0A 20     = fgetc(fd);.. 
021AE0:  20 20 20 20 20 20 20 62 72 65 61 6B 3B 0D 0A 20           break;.. 
021AF0:  20 20 20 20 20 63 61 73 65 20 27 73 27 3A 0D 0A         case 's':..
021B00:  20 20 20 20 20 20 20 20 77 68 69 6C 65 28 77 69            while(wi
021B10:  64 74 68 2D 2D 29 20 7B 0D 0A 20 20 20 20 20 20    dth--) {..      
021B20:  20 20 20 20 69 66 28 28 2A 63 61 72 67 20 3D 20        if((*carg = 
021B30:  66 67 65 74 63 28 66 64 29 29 20 3D 3D 20 45 4F    fgetc(fd)) == EO
021B40:  46 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20    F) break;..     
021B50:  20 20 20 20 20 69 66 28 69 73 73 70 61 63 65 28         if(isspace(
021B60:  2A 63 61 72 67 29 29 20 62 72 65 61 6B 3B 0D 0A    *carg)) break;..
021B70:  20 20 20 20 20 20 20 20 20 20 69 66 28 63 61 72              if(car
021B80:  67 20 21 3D 20 26 77 61 73 74 29 20 2B 2B 63 61    g != &wast) ++ca
021B90:  72 67 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 7D    rg;..          }
021BA0:  0D 0A 20 20 20 20 20 20 20 20 2A 63 61 72 67 20    ..        *carg 
021BB0:  3D 20 30 3B 0D 0A 20 20 20 20 20 20 20 20 62 72    = 0;..        br
021BC0:  65 61 6B 3B 0D 0A 20 20 20 20 20 20 64 65 66 61    eak;..      defa
021BD0:  75 6C 74 3A 0D 0A 20 20 20 20 20 20 20 20 73 77    ult:..        sw
021BE0:  69 74 63 68 28 63 6E 76 29 20 7B 0D 0A 20 20 20    itch(cnv) {..   
021BF0:  20 20 20 20 20 20 20 63 61 73 65 20 27 62 27 3A           case 'b':
021C00:  20 73 74 64 69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A     stdio.h../*..**
021C10:  20 47 65 74 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E     Get command lin
021C20:  65 20 61 72 67 75 6D 65 6E 74 2E 20 0D 0A 2A 2A    e argument. ..**
021C30:  20 45 6E 74 72 79 3A 20 6E 20 20 20 20 3D 20 4E     Entry: n    = N
021C40:  75 6D 62 65 72 20 6F 66 20 74 68 65 20 61 72 67    umber of the arg
021C50:  75 6D 65 6E 74 2E 0D 0A 2A 2A 20 20 20 20 20 20    ument...**      
021C60:  20 20 73 20 20 20 20 3D 20 44 65 73 74 69 6E 61      s    = Destina
021C70:  74 69 6F 6E 20 73 74 72 69 6E 67 20 70 6F 69 6E    tion string poin
021C80:  74 65 72 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 20    ter...**        
021C90:  73 69 7A 65 20 3D 20 53 69 7A 65 20 6F 66 20 64    size = Size of d
021CA0:  65 73 74 69 6E 61 74 69 6F 6E 20 73 74 72 69 6E    estination strin
021CB0:  67 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 20 61 72    g...**        ar
021CC0:  67 63 20 3D 20 41 72 67 75 6D 65 6E 74 20 63 6F    gc = Argument co
021CD0:  75 6E 74 20 66 72 6F 6D 20 6D 61 69 6E 28 29 2E    unt from main().
021CE0:  0D 0A 2A 2A 20 20 20 20 20 20 20 20 61 72 67 76    ..**        argv
021CF0:  20 3D 20 41 72 67 75 6D 65 6E 74 20 76 65 63 74     = Argument vect
021D00:  6F 72 28 73 29 20 66 72 6F 6D 20 6D 61 69 6E 28    or(s) from main(
021D10:  29 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 6E    )...** Returns n
021D20:  75 6D 62 65 72 20 6F 66 20 63 68 61 72 61 63 74    umber of charact
021D30:  65 72 73 20 6D 6F 76 65 64 20 6F 6E 20 73 75 63    ers moved on suc
021D40:  63 65 73 73 2C 0D 0A 2A 2A 20 65 6C 73 65 20 45    cess,..** else E
021D50:  4F 46 2E 0D 0A 2A 2F 0D 0A 67 65 74 61 72 67 28    OF...*/..getarg(
021D60:  6E 2C 73 2C 73 69 7A 65 2C 61 72 67 63 2C 61 72    n,s,size,argc,ar
021D70:  67 76 29 0D 0A 20 20 69 6E 74 20 6E 3B 20 63 68    gv)..  int n; ch
021D80:  61 72 20 2A 73 3B 20 69 6E 74 20 73 69 7A 65 2C    ar *s; int size,
021D90:  20 61 72 67 63 2C 20 61 72 67 76 5B 5D 3B 20 7B     argc, argv[]; {
021DA0:  0D 0A 20 20 63 68 61 72 20 2A 73 74 72 3B 0D 0A    ..  char *str;..
021DB0:  20 20 69 6E 74 20 69 3B 0D 0A 20 20 69 66 28 6E      int i;..  if(n
021DC0:  20 3C 20 30 20 7C 20 6E 20 3E 3D 20 61 72 67 63     < 0 | n >= argc
021DD0:  29 20 7B 0D 0A 20 20 20 20 2A 73 20 3D 20 4E 55    ) {..    *s = NU
021DE0:  4C 4C 3B 0D 0A 20 20 20 20 72 65 74 75 72 6E 20    LL;..    return 
021DF0:  45 4F 46 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 69    EOF;..    }..  i
021E00:  20 62 61 73 65 20 3D 20 20 32 3B 20 73 69 67 6E     base =  2; sign
021E10:  20 3D 20 31 3B 20 6F 76 66 6C 20 3D 20 33 32 37     = 1; ovfl = 327
021E20:  36 37 3B 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20    67; break;..    
021E30:  20 20 20 20 20 20 63 61 73 65 20 27 64 27 3A 20          case 'd': 
021E40:  62 61 73 65 20 3D 20 31 30 3B 20 73 69 67 6E 20    base = 10; sign 
021E50:  3D 20 30 3B 20 6F 76 66 6C 20 3D 20 20 33 32 37    = 0; ovfl =  327
021E60:  36 3B 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20    6; break;..     
021E70:  20 20 20 20 20 63 61 73 65 20 27 6F 27 3A 20 62         case 'o': b
021E80:  61 73 65 20 3D 20 20 38 3B 20 73 69 67 6E 20 3D    ase =  8; sign =
021E90:  20 31 3B 20 6F 76 66 6C 20 3D 20 20 38 31 39 31     1; ovfl =  8191
021EA0:  3B 20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20    ; break;..      
021EB0:  20 20 20 20 63 61 73 65 20 27 75 27 3A 20 62 61        case 'u': ba
021EC0:  73 65 20 3D 20 31 30 3B 20 73 69 67 6E 20 3D 20    se = 10; sign = 
021ED0:  31 3B 20 6F 76 66 6C 20 3D 20 20 36 35 35 33 3B    1; ovfl =  6553;
021EE0:  20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 20     break;..       
021EF0:  20 20 20 63 61 73 65 20 27 78 27 3A 20 62 61 73       case 'x': bas
021F00:  65 20 3D 20 31 36 3B 20 73 69 67 6E 20 3D 20 31    e = 16; sign = 1
021F10:  3B 20 6F 76 66 6C 20 3D 20 20 34 30 39 35 3B 20    ; ovfl =  4095; 
021F20:  62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 20 20    break;..        
021F30:  20 20 64 65 66 61 75 6C 74 3A 20 20 72 65 74 75      default:  retu
021F40:  72 6E 20 28 61 63 29 3B 0D 0A 20 20 20 20 20 20    rn (ac);..      
021F50:  20 20 20 20 7D 0D 0A 20 20 20 20 20 20 20 20 2A        }..        *
021F60:  6E 61 72 67 20 3D 20 75 6E 73 69 67 6E 65 64 20    narg = unsigned 
021F70:  3D 20 30 3B 0D 0A 20 20 20 20 20 20 20 20 77 68    = 0;..        wh
021F80:  69 6C 65 28 77 69 64 74 68 2D 2D 20 26 26 20 21    ile(width-- && !
021F90:  69 73 73 70 61 63 65 28 63 68 3D 66 67 65 74 63    isspace(ch=fgetc
021FA0:  28 66 64 29 29 20 26 26 20 63 68 21 3D 45 4F 46    (fd)) && ch!=EOF
021FB0:  29 20 7B 0D 0A 20 20 20 20 20 20 20 20 20 20 69    ) {..          i
021FC0:  66 28 21 73 69 67 6E 29 0D 0A 20 20 20 20 20 20    f(!sign)..      
021FD0:  20 20 20 20 20 20 69 66 28 63 68 20 3D 3D 20 27          if(ch == '
021FE0:  2D 27 29 20 7B 73 69 67 6E 20 3D 20 2D 31 3B 20    -') {sign = -1; 
021FF0:  63 6F 6E 74 69 6E 75 65 3B 7D 0D 0A 20 20 20 20    continue;}..    
022000:  20 3D 20 30 3B 0D 0A 20 20 73 74 72 3D 61 72 67     = 0;..  str=arg
022010:  76 5B 6E 5D 3B 0D 0A 20 20 77 68 69 6C 65 28 69    v[n];..  while(i
022020:  3C 73 69 7A 65 29 20 7B 0D 0A 20 20 20 20 69 66    <size) {..    if
022030:  28 28 73 5B 69 5D 3D 73 74 72 5B 69 5D 29 3D 3D    ((s[i]=str[i])==
022040:  4E 55 4C 4C 29 20 62 72 65 61 6B 3B 0D 0A 20 20    NULL) break;..  
022050:  20 20 2B 2B 69 3B 0D 0A 20 20 20 20 7D 0D 0A 20      ++i;..    }.. 
022060:  20 73 5B 69 5D 3D 4E 55 4C 4C 3B 0D 0A 20 20 72     s[i]=NULL;..  r
022070:  65 74 75 72 6E 20 69 3B 0D 0A 20 20 7D 0D 0A 3E    eturn i;..  }..>
022080:  3E 3E 20 47 45 54 43 48 41 52 2E 43 20 31 35 38    >> GETCHAR.C 158
022090:  0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52    ..#define NOCCAR
0220A0:  47 43 20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65    GC  /* no argume
0220B0:  6E 74 20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67    nt count passing
0220C0:  20 2A 2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74     */..#include st
0220D0:  64 69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20 47 65    dio.h../*..** Ge
0220E0:  74 20 6E 65 78 74 20 63 68 61 72 61 63 74 65 72    t next character
0220F0:  20 66 72 6F 6D 20 73 74 61 6E 64 61 72 64 20 69     from standard i
022100:  6E 70 75 74 2E 20 0D 0A 2A 2F 0D 0A 67 65 74 63    nput. ..*/..getc
022110:  68 61 72 28 29 20 7B 0D 0A 20 20 72 65 74 75 72    har() {..  retur
022120:  6E 20 28 66 67 65 74 63 28 73 74 64 69 6E 29 29    n (fgetc(stdin))
022130:  3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53 41 4C    ;..  }..>>> ISAL
022140:  4E 55 4D 2E 43 20 31 36 33 0D 0A 2F 2A 0D 0A 2A    NUM.C 163../*..*
022150:  2A 20 72 65 74 75 72 6E 20 27 74 72 75 65 27 20    * return 'true' 
022160:  69 66 20 63 20 69 73 20 61 6C 70 68 61 6E 75 6D    if c is alphanum
022170:  65 72 69 63 0D 0A 2A 2F 0D 0A 69 73 61 6C 6E 75    eric..*/..isalnu
022180:  6D 28 63 29 20 69 6E 74 20 63 3B 20 7B 0D 0A 20    m(c) int c; {.. 
022190:  20 72 65 74 75 72 6E 20 28 28 63 3C 3D 27 7A 27     return ((c<='z'
0221A0:  20 26 26 20 63 3E 3D 27 61 27 29 20 7C 7C 0D 0A     && c>='a') ||..
0221B0:  20 20 20 20 20 20 20 20 20 20 28 63 3C 3D 27 5A              (c<='Z
0221C0:  27 20 26 26 20 63 3E 3D 27 41 27 29 20 7C 7C 0D    ' && c>='A') ||.
0221D0:  0A 20 20 20 20 20 20 20 20 20 20 28 63 3C 3D 27    .          (c<='
0221E0:  39 27 20 26 26 20 63 3E 3D 27 30 27 29 29 3B 0D    9' && c>='0'));.
0221F0:  0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53 41 4C 50 48    .  }..>>> ISALPH
022200:  20 20 20 20 20 20 20 20 65 6C 73 65 20 73 69 67            else sig
022210:  6E 20 3D 20 31 3B 0D 0A 20 20 20 20 20 20 20 20    n = 1;..        
022220:  20 20 69 66 28 63 68 20 3C 20 27 30 27 29 20 72      if(ch < '0') r
022230:  65 74 75 72 6E 20 28 61 63 29 3B 0D 0A 20 20 20    eturn (ac);..   
022240:  20 20 20 20 20 20 20 69 66 28 63 68 20 3E 3D 20           if(ch >= 
022250:  27 61 27 29 20 20 20 20 20 20 63 68 20 2D 3D 20    'a')      ch -= 
022260:  38 37 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 65    87;..          e
022270:  6C 73 65 20 69 66 28 63 68 20 3E 3D 20 27 41 27    lse if(ch >= 'A'
022280:  29 20 63 68 20 2D 3D 20 35 35 3B 0D 0A 20 20 20    ) ch -= 55;..   
022290:  20 20 20 20 20 20 20 65 6C 73 65 20 20 20 20 20           else     
0222A0:  20 20 20 20 20 20 20 20 20 20 63 68 20 2D 3D 20              ch -= 
0222B0:  27 30 27 3B 0D 0A 20 20 20 20 20 20 20 20 20 20    '0';..          
0222C0:  69 66 28 63 68 20 3E 3D 20 62 61 73 65 20 7C 7C    if(ch >= base ||
0222D0:  20 75 6E 73 69 67 6E 65 64 20 3E 20 6F 76 66 6C     unsigned > ovfl
0222E0:  29 20 72 65 74 75 72 6E 20 28 61 63 29 3B 0D 0A    ) return (ac);..
0222F0:  20 20 20 20 20 20 20 20 20 20 75 6E 73 69 67 6E              unsign
022300:  65 64 20 3D 20 75 6E 73 69 67 6E 65 64 20 2A 20    ed = unsigned * 
022310:  62 61 73 65 20 2B 20 63 68 3B 0D 0A 20 20 20 20    base + ch;..    
022320:  20 20 20 20 20 20 7D 0D 0A 20 20 20 20 20 20 20          }..       
022330:  20 2A 6E 61 72 67 20 3D 20 73 69 67 6E 20 2A 20     *narg = sign * 
022340:  75 6E 73 69 67 6E 65 64 3B 0D 0A 20 20 20 20 20    unsigned;..     
022350:  20 7D 0D 0A 20 20 20 20 2B 2B 61 63 3B 20 20 20     }..    ++ac;   
022360:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
022370:  20 20 20 20 20 20 20 0D 0A 20 20 20 20 7D 0D 0A           ..    }..
022380:  20 20 72 65 74 75 72 6E 20 28 61 63 29 3B 0D 0A      return (ac);..
022390:  20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 46 57 52 49 54      }....>>> FWRIT
0223A0:  45 2E 43 20 39 39 38 0D 0A 23 64 65 66 69 6E 65    E.C 998..#define
0223B0:  20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E 6F     NOCCARGC  /* no
0223C0:  20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74 20     argument count 
0223D0:  70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E 63    passing */..#inc
0223E0:  6C 75 64 65 20 63 6C 69 62 2E 64 65 66 0D 0A 65    lude clib.def..e
0223F0:  78 74 65 72 6E 20 69 6E 74 20 55 73 74 61 74 75    xtern int Ustatu
022400:  41 2E 43 20 31 31 39 0D 0A 2F 2A 0D 0A 2A 2A 20    A.C 119../*..** 
022410:  72 65 74 75 72 6E 20 27 74 72 75 65 27 20 69 66    return 'true' if
022420:  20 63 20 69 73 20 61 6C 70 68 61 62 65 74 69 63     c is alphabetic
022430:  0D 0A 2A 2F 0D 0A 69 73 61 6C 70 68 61 28 63 29    ..*/..isalpha(c)
022440:  20 69 6E 74 20 63 3B 20 7B 0D 0A 20 20 72 65 74     int c; {..  ret
022450:  75 72 6E 20 28 28 63 3C 3D 27 7A 27 20 26 26 20    urn ((c<='z' && 
022460:  63 3E 3D 27 61 27 29 20 7C 7C 20 28 63 3C 3D 27    c>='a') || (c<='
022470:  5A 27 20 26 26 20 63 3E 3D 27 41 27 29 29 3B 0D    Z' && c>='A'));.
022480:  0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53 41 53 43 49    .  }..>>> ISASCI
022490:  49 2E 43 20 31 34 37 0D 0A 2F 2A 0D 0A 2A 2A 20    I.C 147../*..** 
0224A0:  72 65 74 75 72 6E 20 27 74 72 75 65 27 20 69 66    return 'true' if
0224B0:  20 63 20 69 73 20 61 6E 20 41 53 43 49 49 20 63     c is an ASCII c
0224C0:  68 61 72 61 63 74 65 72 20 28 30 2D 31 32 37 29    haracter (0-127)
0224D0:  0D 0A 2A 2F 0D 0A 69 73 61 73 63 69 69 28 63 29    ..*/..isascii(c)
0224E0:  20 63 68 61 72 20 2A 63 3B 20 7B 0D 0A 20 20 2F     char *c; {..  /
0224F0:  2A 20 63 20 69 73 20 61 20 73 69 6D 75 6C 61 74    * c is a simulat
022500:  65 64 20 75 6E 73 69 67 6E 65 64 20 69 6E 74 65    ed unsigned inte
022510:  67 65 72 20 2A 2F 0D 0A 20 20 72 65 74 75 72 6E    ger */..  return
022520:  20 28 63 20 3C 3D 20 31 32 37 29 3B 0D 0A 20 20     (c <= 127);..  
022530:  7D 0D 0A 3E 3E 3E 20 49 53 41 54 54 59 2E 43 20    }..>>> ISATTY.C 
022540:  31 32 36 0D 0A 65 78 74 65 72 6E 20 69 6E 74 20    126..extern int 
022550:  55 64 65 76 69 63 65 5B 5D 3B 0D 0A 2F 2A 0D 0A    Udevice[];../*..
022560:  2A 2A 20 52 65 74 75 72 6E 20 22 74 72 75 65 22    ** Return "true"
022570:  20 69 66 20 66 64 20 69 73 20 61 20 64 65 76 69     if fd is a devi
022580:  63 65 2C 20 65 6C 73 65 20 22 66 61 6C 73 65 22    ce, else "false"
022590:  0D 0A 2A 2F 0D 0A 69 73 61 74 74 79 28 66 64 29    ..*/..isatty(fd)
0225A0:  20 69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 72 65     int fd; {..  re
0225B0:  74 75 72 6E 20 28 55 64 65 76 69 63 65 5B 66 64    turn (Udevice[fd
0225C0:  5D 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53    ]);..  }..>>> IS
0225D0:  43 4E 54 52 4C 2E 43 20 31 37 32 0D 0A 2F 2A 0D    CNTRL.C 172../*.
0225E0:  0A 2A 2A 20 72 65 74 75 72 6E 20 27 74 72 75 65    .** return 'true
0225F0:  27 20 69 66 20 63 20 69 73 20 61 20 63 6F 6E 74    ' if c is a cont
022600:  73 5B 5D 3B 0D 0A 2F 2A 0D 0A 2A 2A 20 49 74 65    s[];../*..** Ite
022610:  6D 2D 73 74 72 65 61 6D 20 77 72 69 74 65 20 74    m-stream write t
022620:  6F 20 66 64 2E 0D 0A 2A 2A 20 45 6E 74 72 79 3A    o fd...** Entry:
022630:  20 62 75 66 20 3D 20 61 64 64 72 65 73 73 20 6F     buf = address o
022640:  66 20 73 6F 75 72 63 65 20 62 75 66 66 65 72 0D    f source buffer.
022650:  0A 2A 2A 20 20 20 20 20 20 20 20 20 73 7A 20 3D    .**         sz =
022660:  20 73 69 7A 65 20 6F 66 20 69 74 65 6D 73 20 69     size of items i
022670:  6E 20 62 79 74 65 73 0D 0A 2A 2A 20 20 20 20 20    n bytes..**     
022680:  20 20 20 20 20 6E 20 3D 20 6E 75 6D 62 65 72 20         n = number 
022690:  6F 66 20 69 74 65 6D 73 20 74 6F 20 77 72 69 74    of items to writ
0226A0:  65 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 66 64    e..**         fd
0226B0:  20 3D 20 66 69 6C 65 20 64 65 73 63 72 69 70 74     = file descript
0226C0:  6F 72 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20 61    or..** Returns a
0226D0:  20 63 6F 75 6E 74 20 6F 66 20 74 68 65 20 69 74     count of the it
0226E0:  65 6D 73 20 61 63 74 75 61 6C 6C 79 20 77 72 69    ems actually wri
0226F0:  74 74 65 6E 20 6F 72 0D 0A 2A 2A 20 7A 65 72 6F    tten or..** zero
022700:  20 69 66 20 61 6E 20 65 72 72 6F 72 20 6F 63 63     if an error occ
022710:  75 72 72 65 64 2E 0D 0A 2A 2A 20 4D 61 79 20 75    urred...** May u
022720:  73 65 20 66 65 72 72 6F 72 28 29 2C 20 61 73 20    se ferror(), as 
022730:  61 6C 77 61 79 73 2C 20 74 6F 20 64 65 74 65 63    always, to detec
022740:  74 20 65 72 72 6F 72 73 2E 0D 0A 2A 2F 0D 0A 66    t errors...*/..f
022750:  77 72 69 74 65 28 62 75 66 2C 20 73 7A 2C 20 6E    write(buf, sz, n
022760:  2C 20 66 64 29 20 63 68 61 72 20 2A 62 75 66 3B    , fd) char *buf;
022770:  20 69 6E 74 20 73 7A 2C 20 6E 2C 20 66 64 3B 20     int sz, n, fd; 
022780:  7B 0D 0A 20 20 69 66 28 77 72 69 74 65 28 66 64    {..  if(write(fd
022790:  2C 20 62 75 66 2C 20 6E 2A 73 7A 29 20 3D 3D 20    , buf, n*sz) == 
0227A0:  2D 31 29 20 72 65 74 75 72 6E 20 28 30 29 3B 0D    -1) return (0);.
0227B0:  0A 20 20 72 65 74 75 72 6E 20 28 6E 29 3B 0D 0A    .  return (n);..
0227C0:  20 20 7D 0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 42 69      }..../*..** Bi
0227D0:  6E 61 72 79 2D 73 74 72 65 61 6D 20 77 72 69 74    nary-stream writ
0227E0:  65 20 74 6F 20 66 64 2E 0D 0A 2A 2A 20 45 6E 74    e to fd...** Ent
0227F0:  72 79 3A 20 20 66 64 20 3D 20 66 69 6C 65 20 64    ry:  fd = file d
022800:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
022810:  1D 00 01 00 02 09 52 E5 1D 00 41 02 00 00 00 02    ......R...A.....
022820:  1D 00 46 02 00 00 00 02 1D 00 42 02 00 00 00 02    ..F.......B.....
022830:  1D 00 47 02 00 00 00 02 1D 00 43 02 00 00 00 02    ..G.......C.....
022840:  1D 00 48 02 00 00 00 02 1D 00 44 02 00 00 00 02    ..H.......D.....
022850:  1D 00 49 02 00 00 00 02 1D 00 45 02 00 00 00 02    ..I.......E.....
022860:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
022870:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
022880:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
022890:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0228F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
022900:  72 6F 6C 20 63 68 61 72 61 63 74 65 72 0D 0A 2A    rol character..*
022910:  2A 20 28 30 2D 33 31 20 6F 72 20 31 32 37 29 0D    * (0-31 or 127).
022920:  0A 2A 2F 0D 0A 69 73 63 6E 74 72 6C 28 63 29 20    .*/..iscntrl(c) 
022930:  63 68 61 72 20 2A 63 3B 20 7B 0D 0A 20 20 2F 2A    char *c; {..  /*
022940:  20 63 20 69 73 20 61 20 73 69 6D 75 6C 61 74 65     c is a simulate
022950:  64 20 75 6E 73 69 67 6E 65 64 20 69 6E 74 65 67    d unsigned integ
022960:  65 72 20 2A 2F 0D 0A 20 20 72 65 74 75 72 6E 20    er */..  return 
022970:  28 28 63 20 3C 3D 20 33 31 29 20 7C 7C 20 28 63    ((c <= 31) || (c
022980:  20 3D 3D 20 31 32 37 29 29 3B 0D 0A 20 20 7D 0D     == 127));..  }.
022990:  0A 3E 3E 3E 20 49 53 43 4F 4E 53 2E 43 20 31 35    .>>> ISCONS.C 15
0229A0:  37 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69    7..#include stdi
0229B0:  6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20 63 6C    o.h..#include cl
0229C0:  69 62 2E 64 65 66 0D 0A 65 78 74 65 72 6E 20 69    ib.def..extern i
0229D0:  6E 74 20 55 64 65 76 69 63 65 5B 5D 3B 0D 0A 2F    nt Udevice[];../
0229E0:  2A 0D 0A 2A 2A 20 44 65 74 65 72 6D 69 6E 65 20    *..** Determine 
0229F0:  69 66 20 66 64 20 69 73 20 74 68 65 20 63 6F 6E    if fd is the con
022A00:  73 6F 6C 65 2E 0D 0A 2A 2F 0D 0A 69 73 63 6F 6E    sole...*/..iscon
022A10:  73 28 66 64 29 20 69 6E 74 20 66 64 3B 20 7B 0D    s(fd) int fd; {.
022A20:  0A 20 20 72 65 74 75 72 6E 20 28 55 64 65 76 69    .  return (Udevi
022A30:  63 65 5B 66 64 5D 20 3D 3D 20 43 50 4D 43 4F 4E    ce[fd] == CPMCON
022A40:  29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53 44    );..  }..>>> ISD
022A50:  49 47 49 54 2E 43 20 31 30 30 0D 0A 2F 2A 0D 0A    IGIT.C 100../*..
022A60:  2A 2A 20 72 65 74 75 72 6E 20 27 74 72 75 65 27    ** return 'true'
022A70:  20 69 66 20 63 20 69 73 20 61 20 64 65 63 69 6D     if c is a decim
022A80:  61 6C 20 64 69 67 69 74 0D 0A 2A 2F 0D 0A 69 73    al digit..*/..is
022A90:  64 69 67 69 74 28 63 29 20 69 6E 74 20 63 3B 20    digit(c) int c; 
022AA0:  7B 0D 0A 20 20 72 65 74 75 72 6E 20 28 63 3C 3D    {..  return (c<=
022AB0:  27 39 27 20 26 26 20 63 3E 3D 27 30 27 29 3B 0D    '9' && c>='0');.
022AC0:  0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53 47 52 41 50    .  }..>>> ISGRAP
022AD0:  48 2E 43 20 31 31 35 0D 0A 2F 2A 0D 0A 2A 2A 20    H.C 115../*..** 
022AE0:  72 65 74 75 72 6E 20 27 74 72 75 65 27 20 69 66    return 'true' if
022AF0:  20 63 20 69 73 20 61 20 67 72 61 70 68 69 63 20     c is a graphic 
022B00:  20 20 69 66 28 2A 70 74 72 20 3C 20 31 30 29 20      if(*ptr < 10) 
022B10:  2A 70 74 72 20 2B 3D 20 27 30 27 3B 20 65 6C 73    *ptr += '0'; els
022B20:  65 20 2A 70 74 72 20 2B 3D 20 35 35 3B 0D 0A 20    e *ptr += 55;.. 
022B30:  20 20 20 2B 2B 70 74 72 3B 0D 0A 20 20 20 20 7D       ++ptr;..    }
022B40:  20 77 68 69 6C 65 28 6E 20 2F 3D 20 62 29 3B 0D     while(n /= b);.
022B50:  0A 20 20 2A 70 74 72 20 3D 20 30 3B 0D 0A 20 20    .  *ptr = 0;..  
022B60:  72 65 76 65 72 73 65 20 28 73 29 3B 0D 0A 20 20    reverse (s);..  
022B70:  7D 0D 0A 0D 0A 3E 3E 3E 20 49 54 4F 44 2E 43 20    }....>>> ITOD.C 
022B80:  36 32 30 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74    620..#include st
022B90:  64 69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20 69 74    dio.h../*..** it
022BA0:  6F 64 20 2D 2D 20 63 6F 6E 76 65 72 74 20 6E 62    od -- convert nb
022BB0:  72 20 74 6F 20 73 69 67 6E 65 64 20 64 65 63 69    r to signed deci
022BC0:  6D 61 6C 20 73 74 72 69 6E 67 20 6F 66 20 77 69    mal string of wi
022BD0:  64 74 68 20 73 7A 0D 0A 2A 2A 20 20 20 20 20 20    dth sz..**      
022BE0:  20 20 20 72 69 67 68 74 20 61 64 6A 75 73 74 65       right adjuste
022BF0:  64 2C 20 62 6C 61 6E 6B 20 66 69 6C 6C 65 64 3B    d, blank filled;
022C00:  20 72 65 74 75 72 6E 73 20 73 74 72 0D 0A 2A 2A     returns str..**
022C10:  0D 0A 2A 2A 20 20 20 20 20 20 20 20 69 66 20 73    ..**        if s
022C20:  7A 20 3E 20 30 20 74 65 72 6D 69 6E 61 74 65 20    z > 0 terminate 
022C30:  77 69 74 68 20 6E 75 6C 6C 20 62 79 74 65 0D 0A    with null byte..
022C40:  2A 2A 20 20 20 20 20 20 20 20 69 66 20 73 7A 20    **        if sz 
022C50:  3D 20 30 20 66 69 6E 64 20 65 6E 64 20 6F 66 20    = 0 find end of 
022C60:  73 74 72 69 6E 67 0D 0A 2A 2A 20 20 20 20 20 20    string..**      
022C70:  20 20 69 66 20 73 7A 20 3C 20 30 20 75 73 65 20      if sz < 0 use 
022C80:  6C 61 73 74 20 62 79 74 65 20 66 6F 72 20 64 61    last byte for da
022C90:  74 61 0D 0A 2A 2F 0D 0A 69 74 6F 64 28 6E 62 72    ta..*/..itod(nbr
022CA0:  2C 20 73 74 72 2C 20 73 7A 29 20 20 69 6E 74 20    , str, sz)  int 
022CB0:  6E 62 72 3B 20 20 63 68 61 72 20 73 74 72 5B 5D    nbr;  char str[]
022CC0:  3B 20 20 69 6E 74 20 73 7A 3B 20 20 7B 0D 0A 20    ;  int sz;  {.. 
022CD0:  20 63 68 61 72 20 73 67 6E 3B 0D 0A 20 20 69 66     char sgn;..  if
022CE0:  28 6E 62 72 3C 30 29 20 7B 6E 62 72 20 3D 20 2D    (nbr<0) {nbr = -
022CF0:  6E 62 72 3B 20 73 67 6E 3D 27 2D 27 3B 7D 0D 0A    nbr; sgn='-';}..
022D00:  63 68 61 72 61 63 74 65 72 0D 0A 2A 2A 20 28 33    character..** (3
022D10:  33 2D 31 32 36 29 0D 0A 2A 2F 0D 0A 69 73 67 72    3-126)..*/..isgr
022D20:  61 70 68 28 63 29 20 69 6E 74 20 63 3B 20 7B 0D    aph(c) int c; {.
022D30:  0A 20 20 72 65 74 75 72 6E 20 28 63 3E 3D 33 33    .  return (c>=33
022D40:  20 26 26 20 63 3C 3D 31 32 36 29 3B 0D 0A 20 20     && c<=126);..  
022D50:  7D 0D 0A 3E 3E 3E 20 49 53 4C 4F 57 45 52 2E 43    }..>>> ISLOWER.C
022D60:  20 31 30 36 0D 0A 2F 2A 0D 0A 2A 2A 20 72 65 74     106../*..** ret
022D70:  75 72 6E 20 27 74 72 75 65 27 20 69 66 20 63 20    urn 'true' if c 
022D80:  69 73 20 6C 6F 77 65 72 2D 63 61 73 65 20 61 6C    is lower-case al
022D90:  70 68 61 62 65 74 69 63 0D 0A 2A 2F 0D 0A 69 73    phabetic..*/..is
022DA0:  6C 6F 77 65 72 28 63 29 20 69 6E 74 20 63 3B 20    lower(c) int c; 
022DB0:  7B 0D 0A 20 20 72 65 74 75 72 6E 20 28 63 3C 3D    {..  return (c<=
022DC0:  27 7A 27 20 26 26 20 63 3E 3D 27 61 27 29 3B 0D    'z' && c>='a');.
022DD0:  0A 20 20 7D 0D 0A 3E 3E 3E 20 49 53 50 52 49 4E    .  }..>>> ISPRIN
022DE0:  54 2E 43 20 31 31 37 0D 0A 2F 2A 0D 0A 2A 2A 20    T.C 117../*..** 
022DF0:  72 65 74 75 72 6E 20 27 74 72 75 65 27 20 69 66    return 'true' if
022E00:  20 63 20 69 73 20 61 20 70 72 69 6E 74 61 62 6C     c is a printabl
022E10:  65 20 63 68 61 72 61 63 74 65 72 0D 0A 2A 2A 20    e character..** 
022E20:  28 33 32 2D 31 32 36 29 0D 0A 2A 2F 0D 0A 69 73    (32-126)..*/..is
022E30:  70 72 69 6E 74 28 63 29 20 69 6E 74 20 63 3B 20    print(c) int c; 
022E40:  7B 0D 0A 20 20 72 65 74 75 72 6E 20 28 63 3E 3D    {..  return (c>=
022E50:  33 32 20 26 26 20 63 3C 3D 31 32 36 29 3B 0D 0A    32 && c<=126);..
022E60:  20 20 7D 0D 0A 3E 3E 3E 20 49 53 50 55 4E 43 54      }..>>> ISPUNCT
022E70:  2E 43 20 32 30 36 0D 0A 23 64 65 66 69 6E 65 20    .C 206..#define 
022E80:  4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E 6F 20    NOCCARGC  /* no 
022E90:  61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74 20 70    argument count p
022EA0:  61 73 73 69 6E 67 20 2A 2F 0D 0A 2F 2A 0D 0A 2A    assing */../*..*
022EB0:  2A 20 72 65 74 75 72 6E 20 27 74 72 75 65 27 20    * return 'true' 
022EC0:  69 66 20 63 20 69 73 20 61 20 70 75 6E 63 74 75    if c is a punctu
022ED0:  61 74 69 6F 6E 20 63 68 61 72 61 63 74 65 72 0D    ation character.
022EE0:  0A 2A 2A 20 28 61 6C 6C 20 62 75 74 20 63 6F 6E    .** (all but con
022EF0:  74 72 6F 6C 20 61 6E 64 20 61 6C 70 68 61 6E 75    trol and alphanu
022F00:  20 20 65 6C 73 65 20 73 67 6E 3D 27 20 27 3B 0D      else sgn=' ';.
022F10:  0A 20 20 69 66 28 73 7A 3E 30 29 20 73 74 72 5B    .  if(sz>0) str[
022F20:  2D 2D 73 7A 5D 3D 4E 55 4C 4C 3B 0D 0A 20 20 65    --sz]=NULL;..  e
022F30:  6C 73 65 20 69 66 28 73 7A 3C 30 29 20 73 7A 20    lse if(sz<0) sz 
022F40:  3D 20 2D 73 7A 3B 0D 0A 20 20 65 6C 73 65 20 77    = -sz;..  else w
022F50:  68 69 6C 65 28 73 74 72 5B 73 7A 5D 21 3D 4E 55    hile(str[sz]!=NU
022F60:  4C 4C 29 20 2B 2B 73 7A 3B 0D 0A 20 20 77 68 69    LL) ++sz;..  whi
022F70:  6C 65 28 73 7A 29 20 7B 0D 0A 20 20 20 20 73 74    le(sz) {..    st
022F80:  72 5B 2D 2D 73 7A 5D 3D 28 6E 62 72 25 31 30 2B    r[--sz]=(nbr%10+
022F90:  27 30 27 29 3B 0D 0A 20 20 20 20 69 66 28 28 6E    '0');..    if((n
022FA0:  62 72 3D 6E 62 72 2F 31 30 29 3D 3D 30 29 20 62    br=nbr/10)==0) b
022FB0:  72 65 61 6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20    reak;..    }..  
022FC0:  69 66 28 73 7A 29 20 73 74 72 5B 2D 2D 73 7A 5D    if(sz) str[--sz]
022FD0:  3D 73 67 6E 3B 0D 0A 20 20 77 68 69 6C 65 28 73    =sgn;..  while(s
022FE0:  7A 3E 30 29 20 73 74 72 5B 2D 2D 73 7A 5D 3D 27    z>0) str[--sz]='
022FF0:  20 27 3B 0D 0A 20 20 72 65 74 75 72 6E 20 73 74     ';..  return st
023000:  72 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 54 4F    r;..  }..>>> ITO
023010:  4F 2E 43 20 35 34 30 0D 0A 2F 2A 0D 0A 2A 2A 20    O.C 540../*..** 
023020:  69 74 6F 6F 20 2D 2D 20 63 6F 6E 76 65 72 74 73    itoo -- converts
023030:  20 6E 62 72 20 74 6F 20 6F 63 74 61 6C 20 73 74     nbr to octal st
023040:  72 69 6E 67 20 6F 66 20 6C 65 6E 67 74 68 20 73    ring of length s
023050:  7A 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 72 69    z..**         ri
023060:  67 68 74 20 61 64 6A 75 73 74 65 64 20 61 6E 64    ght adjusted and
023070:  20 62 6C 61 6E 6B 20 66 69 6C 6C 65 64 2C 20 72     blank filled, r
023080:  65 74 75 72 6E 73 20 73 74 72 0D 0A 2A 2A 0D 0A    eturns str..**..
023090:  2A 2A 20 20 20 20 20 20 20 20 69 66 20 73 7A 20    **        if sz 
0230A0:  3E 20 30 20 74 65 72 6D 69 6E 61 74 65 20 77 69    > 0 terminate wi
0230B0:  74 68 20 6E 75 6C 6C 20 62 79 74 65 0D 0A 2A 2A    th null byte..**
0230C0:  20 20 20 20 20 20 20 20 69 66 20 73 7A 20 3D 20            if sz = 
0230D0:  30 20 66 69 6E 64 20 65 6E 64 20 6F 66 20 73 74    0 find end of st
0230E0:  72 69 6E 67 0D 0A 2A 2A 20 20 20 20 20 20 20 20    ring..**        
0230F0:  69 66 20 73 7A 20 3C 20 30 20 75 73 65 20 6C 61    if sz < 0 use la
023100:  6D 65 72 69 63 29 0D 0A 2A 2F 0D 0A 69 73 70 75    meric)..*/..ispu
023110:  6E 63 74 28 63 29 20 69 6E 74 20 63 3B 20 7B 0D    nct(c) int c; {.
023120:  0A 20 20 72 65 74 75 72 6E 20 28 21 69 73 61 6C    .  return (!isal
023130:  6E 75 6D 28 63 29 20 26 26 20 21 69 73 63 6E 74    num(c) && !iscnt
023140:  72 6C 28 63 29 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E    rl(c));..  }..>>
023150:  3E 20 49 53 53 50 41 43 45 2E 43 20 31 38 30 0D    > ISSPACE.C 180.
023160:  0A 2F 2A 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 27    ./*..** return '
023170:  74 72 75 65 27 20 69 66 20 63 20 69 73 20 61 20    true' if c is a 
023180:  77 68 69 74 65 2D 73 70 61 63 65 20 63 68 61 72    white-space char
023190:  61 63 74 65 72 0D 0A 2A 2F 0D 0A 69 73 73 70 61    acter..*/..isspa
0231A0:  63 65 28 63 29 20 69 6E 74 20 63 3B 20 7B 0D 0A    ce(c) int c; {..
0231B0:  20 20 2F 2A 20 66 69 72 73 74 20 63 68 65 63 6B      /* first check
0231C0:  20 67 69 76 65 73 20 71 75 69 63 6B 20 65 78 69     gives quick exi
0231D0:  74 20 69 6E 20 6D 6F 73 74 20 63 61 73 65 73 20    t in most cases 
0231E0:  2A 2F 0D 0A 20 20 72 65 74 75 72 6E 28 63 3C 3D    */..  return(c<=
0231F0:  27 20 27 20 26 26 20 28 63 3D 3D 27 20 27 20 7C    ' ' && (c==' ' |
023200:  7C 20 28 63 3C 3D 31 33 20 26 26 20 63 3E 3D 39    | (c<=13 && c>=9
023210:  29 29 29 3B 0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E    )));..  }....>>>
023220:  20 49 53 55 50 50 45 52 2E 43 20 31 30 36 0D 0A     ISUPPER.C 106..
023230:  2F 2A 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 27 74    /*..** return 't
023240:  72 75 65 27 20 69 66 20 63 20 69 73 20 75 70 70    rue' if c is upp
023250:  65 72 2D 63 61 73 65 20 61 6C 70 68 61 62 65 74    er-case alphabet
023260:  69 63 0D 0A 2A 2F 0D 0A 69 73 75 70 70 65 72 28    ic..*/..isupper(
023270:  63 29 20 69 6E 74 20 63 3B 20 7B 0D 0A 20 20 72    c) int c; {..  r
023280:  65 74 75 72 6E 20 28 63 3C 3D 27 5A 27 20 26 26    eturn (c<='Z' &&
023290:  20 63 3E 3D 27 41 27 29 3B 0D 0A 20 20 7D 0D 0A     c>='A');..  }..
0232A0:  3E 3E 3E 20 49 53 58 44 49 47 49 54 2E 43 20 31    >>> ISXDIGIT.C 1
0232B0:  39 33 0D 0A 2F 2A 0D 0A 2A 2A 20 72 65 74 75 72    93../*..** retur
0232C0:  6E 20 27 74 72 75 65 27 20 69 66 20 63 20 69 73    n 'true' if c is
0232D0:  20 61 20 68 65 78 61 64 65 63 69 6D 61 6C 20 64     a hexadecimal d
0232E0:  69 67 69 74 0D 0A 2A 2A 20 28 30 2D 39 2C 20 41    igit..** (0-9, A
0232F0:  2D 46 2C 20 6F 72 20 61 2D 66 29 0D 0A 2A 2F 0D    -F, or a-f)..*/.
023300:  73 74 20 62 79 74 65 20 66 6F 72 20 64 61 74 61    st byte for data
023310:  0D 0A 2A 2F 0D 0A 69 74 6F 6F 28 6E 62 72 2C 20    ..*/..itoo(nbr, 
023320:  73 74 72 2C 20 73 7A 29 20 20 69 6E 74 20 6E 62    str, sz)  int nb
023330:  72 3B 20 20 63 68 61 72 20 73 74 72 5B 5D 3B 20    r;  char str[]; 
023340:  20 69 6E 74 20 73 7A 3B 20 20 7B 0D 0A 20 20 69     int sz;  {..  i
023350:  6E 74 20 64 69 67 69 74 3B 0D 0A 20 20 69 66 28    nt digit;..  if(
023360:  73 7A 3E 30 29 20 73 74 72 5B 2D 2D 73 7A 5D 3D    sz>0) str[--sz]=
023370:  30 3B 0D 0A 20 20 65 6C 73 65 20 69 66 28 73 7A    0;..  else if(sz
023380:  3C 30 29 20 73 7A 20 3D 20 2D 73 7A 3B 0D 0A 20    <0) sz = -sz;.. 
023390:  20 65 6C 73 65 20 77 68 69 6C 65 28 73 74 72 5B     else while(str[
0233A0:  73 7A 5D 21 3D 30 29 20 2B 2B 73 7A 3B 0D 0A 20    sz]!=0) ++sz;.. 
0233B0:  20 77 68 69 6C 65 28 73 7A 29 20 7B 0D 0A 20 20     while(sz) {..  
0233C0:  20 20 64 69 67 69 74 3D 6E 62 72 26 37 3B 20 6E      digit=nbr&7; n
0233D0:  62 72 3D 28 6E 62 72 3E 3E 33 29 26 38 31 39 31    br=(nbr>>3)&8191
0233E0:  3B 0D 0A 20 20 20 20 73 74 72 5B 2D 2D 73 7A 5D    ;..    str[--sz]
0233F0:  3D 64 69 67 69 74 2B 34 38 3B 0D 0A 20 20 20 20    =digit+48;..    
023400:  69 66 28 6E 62 72 3D 3D 30 29 20 62 72 65 61 6B    if(nbr==0) break
023410:  3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 77 68 69 6C    ;..    }..  whil
023420:  65 28 73 7A 29 20 73 74 72 5B 2D 2D 73 7A 5D 3D    e(sz) str[--sz]=
023430:  27 20 27 3B 0D 0A 20 20 72 65 74 75 72 6E 20 73    ' ';..  return s
023440:  74 72 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 49 54    tr;..  }..>>> IT
023450:  4F 55 2E 43 20 36 31 38 0D 0A 23 69 6E 63 6C 75    OU.C 618..#inclu
023460:  64 65 20 73 74 64 69 6F 2E 68 0D 0A 2F 2A 0D 0A    de stdio.h../*..
023470:  2A 2A 20 69 74 6F 75 20 2D 2D 20 63 6F 6E 76 65    ** itou -- conve
023480:  72 74 20 6E 62 72 20 74 6F 20 75 6E 73 69 67 6E    rt nbr to unsign
023490:  65 64 20 64 65 63 69 6D 61 6C 20 73 74 72 69 6E    ed decimal strin
0234A0:  67 20 6F 66 20 77 69 64 74 68 20 73 7A 0D 0A 2A    g of width sz..*
0234B0:  2A 20 20 20 20 20 20 20 20 20 72 69 67 68 74 20    *         right 
0234C0:  61 64 6A 75 73 74 65 64 2C 20 62 6C 61 6E 6B 20    adjusted, blank 
0234D0:  66 69 6C 6C 65 64 3B 20 72 65 74 75 72 6E 73 20    filled; returns 
0234E0:  73 74 72 0D 0A 2A 2A 0D 0A 2A 2A 20 20 20 20 20    str..**..**     
0234F0:  20 20 20 69 66 20 73 7A 20 3E 20 30 20 74 65 72       if sz > 0 ter
023500:  0A 69 73 78 64 69 67 69 74 28 63 29 20 69 6E 74    .isxdigit(c) int
023510:  20 63 3B 20 7B 0D 0A 20 20 72 65 74 75 72 6E 20     c; {..  return 
023520:  28 28 63 3C 3D 27 66 27 20 26 26 20 63 3E 3D 27    ((c<='f' && c>='
023530:  61 27 29 20 7C 7C 0D 0A 20 20 20 20 20 20 20 20    a') ||..        
023540:  20 20 28 63 3C 3D 27 46 27 20 26 26 20 63 3E 3D      (c<='F' && c>=
023550:  27 41 27 29 20 7C 7C 0D 0A 20 20 20 20 20 20 20    'A') ||..       
023560:  20 20 20 28 63 3C 3D 27 39 27 20 26 26 20 63 3E       (c<='9' && c>
023570:  3D 27 30 27 29 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E    ='0'));..  }..>>
023580:  3E 20 49 54 4F 41 2E 43 20 34 36 39 0D 0A 23 64    > ITOA.C 469..#d
023590:  65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 20    efine NOCCARGC  
0235A0:  2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63    /* no argument c
0235B0:  6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D    ount passing */.
0235C0:  0A 2F 2A 0D 0A 2A 2A 20 69 74 6F 61 28 6E 2C 73    ./*..** itoa(n,s
0235D0:  29 20 2D 20 43 6F 6E 76 65 72 74 20 6E 20 74 6F    ) - Convert n to
0235E0:  20 63 68 61 72 61 63 74 65 72 73 20 69 6E 20 73     characters in s
0235F0:  20 0D 0A 2A 2F 0D 0A 69 74 6F 61 28 6E 2C 20 73     ..*/..itoa(n, s
023600:  29 20 63 68 61 72 20 2A 73 3B 20 69 6E 74 20 6E    ) char *s; int n
023610:  3B 20 7B 0D 0A 20 20 69 6E 74 20 73 69 67 6E 3B    ; {..  int sign;
023620:  0D 0A 20 20 63 68 61 72 20 2A 70 74 72 3B 0D 0A    ..  char *ptr;..
023630:  20 20 70 74 72 20 3D 20 73 3B 0D 0A 20 20 69 66      ptr = s;..  if
023640:  20 28 28 73 69 67 6E 20 3D 20 6E 29 20 3C 20 30     ((sign = n) < 0
023650:  29 20 2F 2A 20 72 65 63 6F 72 64 20 73 69 67 6E    ) /* record sign
023660:  20 2A 2F 0D 0A 20 20 20 20 6E 20 3D 20 2D 6E 3B     */..    n = -n;
023670:  20 20 20 20 20 2F 2A 20 6D 61 6B 65 20 6E 20 70         /* make n p
023680:  6F 73 69 74 69 76 65 20 2A 2F 0D 0A 20 20 64 6F    ositive */..  do
023690:  20 7B 20 20 20 20 20 20 20 20 20 20 2F 2A 20 67     {          /* g
0236A0:  65 6E 65 72 61 74 65 20 64 69 67 69 74 73 20 69    enerate digits i
0236B0:  6E 20 72 65 76 65 72 73 65 20 6F 72 64 65 72 20    n reverse order 
0236C0:  2A 2F 0D 0A 20 20 20 20 2A 70 74 72 2B 2B 20 3D    */..    *ptr++ =
0236D0:  20 6E 20 25 20 31 30 20 2B 20 27 30 27 3B 20 20     n % 10 + '0';  
0236E0:  20 20 20 20 20 20 20 2F 2A 20 67 65 74 20 6E 65           /* get ne
0236F0:  78 74 20 64 69 67 69 74 20 2A 2F 0D 0A 20 20 20    xt digit */..   
023700:  6D 69 6E 61 74 65 20 77 69 74 68 20 6E 75 6C 6C    minate with null
023710:  20 62 79 74 65 0D 0A 2A 2A 20 20 20 20 20 20 20     byte..**       
023720:  20 69 66 20 73 7A 20 3D 20 30 20 66 69 6E 64 20     if sz = 0 find 
023730:  65 6E 64 20 6F 66 20 73 74 72 69 6E 67 0D 0A 2A    end of string..*
023740:  2A 20 20 20 20 20 20 20 20 69 66 20 73 7A 20 3C    *        if sz <
023750:  20 30 20 75 73 65 20 6C 61 73 74 20 62 79 74 65     0 use last byte
023760:  20 66 6F 72 20 64 61 74 61 0D 0A 2A 2F 0D 0A 69     for data..*/..i
023770:  74 6F 75 28 6E 62 72 2C 20 73 74 72 2C 20 73 7A    tou(nbr, str, sz
023780:  29 20 20 69 6E 74 20 6E 62 72 3B 20 20 63 68 61    )  int nbr;  cha
023790:  72 20 73 74 72 5B 5D 3B 20 20 69 6E 74 20 73 7A    r str[];  int sz
0237A0:  3B 20 20 7B 0D 0A 20 20 69 6E 74 20 6C 6F 77 62    ;  {..  int lowb
0237B0:  69 74 3B 0D 0A 20 20 69 66 28 73 7A 3E 30 29 20    it;..  if(sz>0) 
0237C0:  73 74 72 5B 2D 2D 73 7A 5D 3D 4E 55 4C 4C 3B 0D    str[--sz]=NULL;.
0237D0:  0A 20 20 65 6C 73 65 20 69 66 28 73 7A 3C 30 29    .  else if(sz<0)
0237E0:  20 73 7A 20 3D 20 2D 73 7A 3B 0D 0A 20 20 65 6C     sz = -sz;..  el
0237F0:  73 65 20 77 68 69 6C 65 28 73 74 72 5B 73 7A 5D    se while(str[sz]
023800:  21 3D 4E 55 4C 4C 29 20 2B 2B 73 7A 3B 0D 0A 20    !=NULL) ++sz;.. 
023810:  20 77 68 69 6C 65 28 73 7A 29 20 7B 0D 0A 20 20     while(sz) {..  
023820:  20 20 6C 6F 77 62 69 74 3D 6E 62 72 26 31 3B 0D      lowbit=nbr&1;.
023830:  0A 20 20 20 20 6E 62 72 3D 28 6E 62 72 3E 3E 31    .    nbr=(nbr>>1
023840:  29 26 33 32 37 36 37 3B 20 20 2F 2A 20 64 69 76    )&32767;  /* div
023850:  69 64 65 20 62 79 20 32 20 2A 2F 0D 0A 20 20 20    ide by 2 */..   
023860:  20 73 74 72 5B 2D 2D 73 7A 5D 3D 28 28 6E 62 72     str[--sz]=((nbr
023870:  25 35 29 3C 3C 31 29 2B 6C 6F 77 62 69 74 2B 27    %5)<<1)+lowbit+'
023880:  30 27 3B 0D 0A 20 20 20 20 69 66 28 28 6E 62 72    0';..    if((nbr
023890:  3D 6E 62 72 2F 35 29 3D 3D 30 29 20 62 72 65 61    =nbr/5)==0) brea
0238A0:  6B 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 77 68 69    k;..    }..  whi
0238B0:  6C 65 28 73 7A 29 20 73 74 72 5B 2D 2D 73 7A 5D    le(sz) str[--sz]
0238C0:  3D 27 20 27 3B 0D 0A 20 20 72 65 74 75 72 6E 20    =' ';..  return 
0238D0:  73 74 72 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 49    str;..  }..>>> I
0238E0:  54 4F 58 2E 43 20 35 39 35 0D 0A 2F 2A 0D 0A 2A    TOX.C 595../*..*
0238F0:  2A 20 69 74 6F 78 20 2D 2D 20 63 6F 6E 76 65 72    * itox -- conver
023900:  20 7D 20 77 68 69 6C 65 20 28 28 6E 20 3D 20 6E     } while ((n = n
023910:  20 2F 20 31 30 29 20 3E 20 30 29 3B 20 20 20 20     / 10) > 0);    
023920:  2F 2A 20 64 65 6C 65 74 65 20 69 74 20 2A 2F 0D    /* delete it */.
023930:  0A 20 20 69 66 20 28 73 69 67 6E 20 3C 20 30 29    .  if (sign < 0)
023940:  20 2A 70 74 72 2B 2B 20 3D 20 27 2D 27 3B 0D 0A     *ptr++ = '-';..
023950:  20 20 2A 70 74 72 20 3D 20 27 5C 30 27 3B 0D 0A      *ptr = '\0';..
023960:  20 20 72 65 76 65 72 73 65 28 73 29 3B 0D 0A 20      reverse(s);.. 
023970:  20 7D 0D 0A 3E 3E 3E 20 49 54 4F 41 42 2E 43 20     }..>>> ITOAB.C 
023980:  34 37 35 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43    475..#define NOC
023990:  43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67    CARGC  /* no arg
0239A0:  75 6D 65 6E 74 20 63 6F 75 6E 74 20 70 61 73 73    ument count pass
0239B0:  69 6E 67 20 2A 2F 0D 0A 2F 2A 0D 0A 2A 2A 20 69    ing */../*..** i
0239C0:  74 6F 61 62 28 6E 2C 73 2C 62 29 20 2D 20 43 6F    toab(n,s,b) - Co
0239D0:  6E 76 65 72 74 20 22 75 6E 73 69 67 6E 65 64 22    nvert "unsigned"
0239E0:  20 6E 20 74 6F 20 63 68 61 72 61 63 74 65 72 73     n to characters
0239F0:  20 69 6E 20 73 20 75 73 69 6E 67 20 62 61 73 65     in s using base
023A00:  20 62 2E 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20     b...**         
023A10:  20 20 20 20 20 20 20 4E 4F 54 45 3A 20 54 68 69           NOTE: Thi
023A20:  73 20 69 73 20 61 20 6E 6F 6E 2D 73 74 61 6E 64    s is a non-stand
023A30:  61 72 64 20 66 75 6E 63 74 69 6F 6E 2E 0D 0A 2A    ard function...*
023A40:  2F 0D 0A 69 74 6F 61 62 28 6E 2C 20 73 2C 20 62    /..itoab(n, s, b
023A50:  29 20 69 6E 74 20 6E 3B 20 63 68 61 72 20 2A 73    ) int n; char *s
023A60:  3B 20 69 6E 74 20 62 3B 20 7B 0D 0A 20 20 63 68    ; int b; {..  ch
023A70:  61 72 20 2A 70 74 72 3B 0D 0A 20 20 69 6E 74 20    ar *ptr;..  int 
023A80:  6C 6F 77 62 69 74 3B 0D 0A 20 20 70 74 72 20 3D    lowbit;..  ptr =
023A90:  20 73 3B 0D 0A 20 20 62 20 3E 3E 3D 20 31 3B 0D     s;..  b >>= 1;.
023AA0:  0A 20 20 64 6F 20 7B 0D 0A 20 20 20 20 6C 6F 77    .  do {..    low
023AB0:  62 69 74 20 3D 20 6E 20 26 20 31 3B 0D 0A 20 20    bit = n & 1;..  
023AC0:  20 20 6E 20 3D 20 28 6E 20 3E 3E 20 31 29 20 26      n = (n >> 1) &
023AD0:  20 33 32 37 36 37 3B 0D 0A 20 20 20 20 2A 70 74     32767;..    *pt
023AE0:  72 20 3D 20 28 28 6E 20 25 20 62 29 20 3C 3C 20    r = ((n % b) << 
023AF0:  31 29 20 2B 20 6C 6F 77 62 69 74 3B 0D 0A 20 20    1) + lowbit;..  
023B00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
023B10:  1E 00 01 00 02 09 52 E5 1E 00 41 02 00 00 00 02    ......R...A.....
023B20:  1E 00 46 02 00 00 00 02 1E 00 42 02 00 00 00 02    ..F.......B.....
023B30:  1E 00 47 02 00 00 00 02 1E 00 43 02 00 00 00 02    ..G.......C.....
023B40:  1E 00 48 02 00 00 00 02 1E 00 44 02 00 00 00 02    ..H.......D.....
023B50:  1E 00 49 02 00 00 00 02 1E 00 45 02 00 00 00 02    ..I.......E.....
023B60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023B70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023B80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023B90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023C00:  74 73 20 6E 62 72 20 74 6F 20 68 65 78 20 73 74    ts nbr to hex st
023C10:  72 69 6E 67 20 6F 66 20 6C 65 6E 67 74 68 20 73    ring of length s
023C20:  7A 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 72 69    z..**         ri
023C30:  67 68 74 20 61 64 6A 75 73 74 65 64 20 61 6E 64    ght adjusted and
023C40:  20 62 6C 61 6E 6B 20 66 69 6C 6C 65 64 2C 20 72     blank filled, r
023C50:  65 74 75 72 6E 73 20 73 74 72 0D 0A 2A 2A 0D 0A    eturns str..**..
023C60:  2A 2A 20 20 20 20 20 20 20 20 69 66 20 73 7A 20    **        if sz 
023C70:  3E 20 30 20 74 65 72 6D 69 6E 61 74 65 20 77 69    > 0 terminate wi
023C80:  74 68 20 6E 75 6C 6C 20 62 79 74 65 0D 0A 2A 2A    th null byte..**
023C90:  20 20 20 20 20 20 20 20 69 66 20 73 7A 20 3D 20            if sz = 
023CA0:  30 20 66 69 6E 64 20 65 6E 64 20 6F 66 20 73 74    0 find end of st
023CB0:  72 69 6E 67 0D 0A 2A 2A 20 20 20 20 20 20 20 20    ring..**        
023CC0:  69 66 20 73 7A 20 3C 20 30 20 75 73 65 20 6C 61    if sz < 0 use la
023CD0:  73 74 20 62 79 74 65 20 66 6F 72 20 64 61 74 61    st byte for data
023CE0:  0D 0A 2A 2F 0D 0A 69 74 6F 78 28 6E 62 72 2C 20    ..*/..itox(nbr, 
023CF0:  73 74 72 2C 20 73 7A 29 20 20 69 6E 74 20 6E 62    str, sz)  int nb
023D00:  72 3B 20 20 63 68 61 72 20 73 74 72 5B 5D 3B 20    r;  char str[]; 
023D10:  20 69 6E 74 20 73 7A 3B 20 20 7B 0D 0A 20 20 69     int sz;  {..  i
023D20:  6E 74 20 64 69 67 69 74 2C 20 6F 66 66 73 65 74    nt digit, offset
023D30:  3B 0D 0A 20 20 69 66 28 73 7A 3E 30 29 20 73 74    ;..  if(sz>0) st
023D40:  72 5B 2D 2D 73 7A 5D 3D 30 3B 0D 0A 20 20 65 6C    r[--sz]=0;..  el
023D50:  73 65 20 69 66 28 73 7A 3C 30 29 20 73 7A 20 3D    se if(sz<0) sz =
023D60:  20 2D 73 7A 3B 0D 0A 20 20 65 6C 73 65 20 77 68     -sz;..  else wh
023D70:  69 6C 65 28 73 74 72 5B 73 7A 5D 21 3D 30 29 20    ile(str[sz]!=0) 
023D80:  2B 2B 73 7A 3B 0D 0A 20 20 77 68 69 6C 65 28 73    ++sz;..  while(s
023D90:  7A 29 20 7B 0D 0A 20 20 20 20 64 69 67 69 74 3D    z) {..    digit=
023DA0:  6E 62 72 26 31 35 3B 20 6E 62 72 3D 28 6E 62 72    nbr&15; nbr=(nbr
023DB0:  3E 3E 34 29 26 34 30 39 35 3B 0D 0A 20 20 20 20    >>4)&4095;..    
023DC0:  69 66 28 64 69 67 69 74 3C 31 30 29 20 6F 66 66    if(digit<10) off
023DD0:  73 65 74 3D 34 38 3B 20 65 6C 73 65 20 6F 66 66    set=48; else off
023DE0:  73 65 74 3D 35 35 3B 0D 0A 20 20 20 20 73 74 72    set=55;..    str
023DF0:  5B 2D 2D 73 7A 5D 3D 64 69 67 69 74 2B 6F 66 66    [--sz]=digit+off
023E00:  65 2C 20 4E 4F 29 29 3B 0D 0A 20 20 7D 0D 0A 3E    e, NO));..  }..>
023E10:  3E 3E 20 4F 54 4F 49 2E 43 20 33 36 35 0D 0A 23    >> OTOI.C 365..#
023E20:  69 6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D    include stdio.h.
023E30:  0A 2F 2A 0D 0A 2A 2A 20 6F 74 6F 69 20 2D 2D 20    ./*..** otoi -- 
023E40:  63 6F 6E 76 65 72 74 20 75 6E 73 69 67 6E 65 64    convert unsigned
023E50:  20 6F 63 74 61 6C 20 73 74 72 69 6E 67 20 74 6F     octal string to
023E60:  20 69 6E 74 65 67 65 72 20 6E 62 72 0D 0A 2A 2A     integer nbr..**
023E70:  20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6E              return
023E80:  73 20 66 69 65 6C 64 20 73 69 7A 65 2C 20 65 6C    s field size, el
023E90:  73 65 20 45 52 52 20 6F 6E 20 65 72 72 6F 72 0D    se ERR on error.
023EA0:  0A 2A 2F 0D 0A 6F 74 6F 69 28 6F 63 74 73 74 72    .*/..otoi(octstr
023EB0:  2C 20 6E 62 72 29 20 20 63 68 61 72 20 2A 6F 63    , nbr)  char *oc
023EC0:  74 73 74 72 3B 20 20 69 6E 74 20 2A 6E 62 72 3B    tstr;  int *nbr;
023ED0:  20 20 7B 0D 0A 20 20 69 6E 74 20 64 2C 74 3B 20      {..  int d,t; 
023EE0:  64 3D 30 3B 0D 0A 20 20 2A 6E 62 72 3D 30 3B 0D    d=0;..  *nbr=0;.
023EF0:  0A 20 20 77 68 69 6C 65 28 28 2A 6F 63 74 73 74    .  while((*octst
023F00:  72 3E 3D 27 30 27 29 26 28 2A 6F 63 74 73 74 72    r>='0')&(*octstr
023F10:  3C 3D 27 37 27 29 29 20 7B 0D 0A 20 20 20 20 74    <='7')) {..    t
023F20:  3D 2A 6E 62 72 3B 0D 0A 20 20 20 20 74 3D 28 74    =*nbr;..    t=(t
023F30:  3C 3C 33 29 20 2B 20 28 2A 6F 63 74 73 74 72 2B    <<3) + (*octstr+
023F40:  2B 20 2D 20 27 30 27 29 3B 0D 0A 20 20 20 20 69    + - '0');..    i
023F50:  66 20 28 28 74 3E 3D 30 29 26 28 2A 6E 62 72 3C    f ((t>=0)&(*nbr<
023F60:  30 29 29 20 72 65 74 75 72 6E 20 45 52 52 3B 0D    0)) return ERR;.
023F70:  0A 20 20 20 20 64 2B 2B 3B 20 2A 6E 62 72 3D 74    .    d++; *nbr=t
023F80:  3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75    ;..    }..  retu
023F90:  72 6E 20 64 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20    rn d;..  }..>>> 
023FA0:  50 41 44 2E 43 20 32 30 35 0D 0A 23 64 65 66 69    PAD.C 205..#defi
023FB0:  6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20    ne NOCCARGC  /* 
023FC0:  6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E    no argument coun
023FD0:  74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 2F 2A    t passing */../*
023FE0:  0D 0A 2A 2A 20 50 6C 61 63 65 20 6E 20 6F 63 63    ..** Place n occ
023FF0:  75 72 72 65 6E 63 65 73 20 6F 66 20 63 68 20 61    urrences of ch a
024000:  73 65 74 3B 0D 0A 20 20 20 20 69 66 28 6E 62 72    set;..    if(nbr
024010:  3D 3D 30 29 20 62 72 65 61 6B 3B 0D 0A 20 20 20    ==0) break;..   
024020:  20 7D 0D 0A 20 20 77 68 69 6C 65 28 73 7A 29 20     }..  while(sz) 
024030:  73 74 72 5B 2D 2D 73 7A 5D 3D 27 20 27 3B 0D 0A    str[--sz]=' ';..
024040:  20 20 72 65 74 75 72 6E 20 73 74 72 3B 0D 0A 20      return str;.. 
024050:  20 7D 0D 0A 3E 3E 3E 20 4C 45 46 54 2E 43 20 31     }..>>> LEFT.C 1
024060:  36 35 0D 0A 2F 2A 0D 0A 2A 2A 20 6C 65 66 74 20    65../*..** left 
024070:  2D 2D 20 6C 65 66 74 20 61 64 6A 75 73 74 20 61    -- left adjust a
024080:  6E 64 20 6E 75 6C 6C 20 74 65 72 6D 69 6E 61 74    nd null terminat
024090:  65 20 61 20 73 74 72 69 6E 67 0D 0A 2A 2F 0D 0A    e a string..*/..
0240A0:  6C 65 66 74 28 73 74 72 29 20 63 68 61 72 20 2A    left(str) char *
0240B0:  73 74 72 3B 20 7B 0D 0A 20 20 63 68 61 72 20 2A    str; {..  char *
0240C0:  73 74 72 32 3B 0D 0A 20 20 73 74 72 32 3D 73 74    str2;..  str2=st
0240D0:  72 3B 0D 0A 20 20 77 68 69 6C 65 28 2A 73 74 72    r;..  while(*str
0240E0:  32 3D 3D 27 20 27 29 20 2B 2B 73 74 72 32 3B 0D    2==' ') ++str2;.
0240F0:  0A 20 20 77 68 69 6C 65 28 2A 73 74 72 2B 2B 20    .  while(*str++ 
024100:  3D 20 2A 73 74 72 32 2B 2B 29 3B 0D 0A 20 20 7D    = *str2++);..  }
024110:  0D 0A 3E 3E 3E 20 4C 45 58 43 4D 50 2E 43 20 31    ..>>> LEXCMP.C 1
024120:  33 36 32 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43    362..#define NOC
024130:  43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67    CARGC  /* no arg
024140:  75 6D 65 6E 74 20 63 6F 75 6E 74 20 70 61 73 73    ument count pass
024150:  69 6E 67 20 2A 2F 0D 0A 2F 2A 0D 0A 2A 2A 20 6C    ing */../*..** l
024160:  65 78 63 6D 70 28 73 2C 20 74 29 20 2D 20 52 65    excmp(s, t) - Re
024170:  74 75 72 6E 20 61 20 6E 75 6D 62 65 72 20 3C 30    turn a number <0
024180:  2C 20 30 2C 20 6F 72 3E 30 20 0D 0A 2A 2A 20 20    , 0, or>0 ..**  
024190:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73                  as
0241A0:  20 73 20 69 73 20 3C 2C 20 3D 2C 20 6F 72 20 3E     s is <, =, or >
0241B0:  20 74 2E 0D 0A 2A 2F 0D 0A 6C 65 78 63 6D 70 28     t...*/..lexcmp(
0241C0:  73 2C 20 74 29 20 63 68 61 72 20 2A 73 2C 20 2A    s, t) char *s, *
0241D0:  74 3B 20 7B 0D 0A 20 20 77 68 69 6C 65 28 6C 65    t; {..  while(le
0241E0:  78 6F 72 64 65 72 28 2A 73 2C 20 2A 74 29 20 3D    xorder(*s, *t) =
0241F0:  3D 20 30 29 0D 0A 20 20 20 20 69 66 28 2A 73 2B    = 0)..    if(*s+
024200:  74 20 64 65 73 74 2E 0D 0A 2A 2F 0D 0A 70 61 64    t dest...*/..pad
024210:  28 64 65 73 74 2C 20 63 68 2C 20 6E 29 20 63 68    (dest, ch, n) ch
024220:  61 72 20 2A 64 65 73 74 2C 20 2A 6E 3B 20 69 6E    ar *dest, *n; in
024230:  74 20 63 68 3B 20 7B 0D 0A 20 20 2F 2A 20 6E 20    t ch; {..  /* n 
024240:  69 73 20 61 20 66 61 6B 65 20 75 6E 73 69 67 6E    is a fake unsign
024250:  65 64 20 69 6E 74 65 67 65 72 20 2A 2F 0D 0A 20    ed integer */.. 
024260:  20 77 68 69 6C 65 28 6E 2D 2D 29 20 2A 64 65 73     while(n--) *des
024270:  74 2B 2B 20 3D 20 63 68 3B 0D 0A 20 20 7D 0D 0A    t++ = ch;..  }..
024280:  3E 3E 3E 20 50 4F 4C 4C 2E 43 20 33 37 37 0D 0A    >>> POLL.C 377..
024290:  23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43    #define NOCCARGC
0242A0:  20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74      /* no argument
0242B0:  20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A     count passing *
0242C0:  2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69    /..#include stdi
0242D0:  6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20 63 6C    o.h..#include cl
0242E0:  69 62 2E 64 65 66 0D 0A 2F 2A 0D 0A 2A 2A 20 50    ib.def../*..** P
0242F0:  6F 6C 6C 20 66 6F 72 20 63 6F 6E 73 6F 6C 65 20    oll for console 
024300:  69 6E 70 75 74 20 6F 72 20 69 6E 74 65 72 72 75    input or interru
024310:  70 74 69 6F 6E 0D 0A 2A 2F 0D 0A 70 6F 6C 6C 28    ption..*/..poll(
024320:  70 61 75 73 65 29 20 69 6E 74 20 70 61 75 73 65    pause) int pause
024330:  3B 20 7B 0D 0A 20 20 69 6E 74 20 69 3B 0D 0A 20    ; {..  int i;.. 
024340:  20 69 20 3D 20 55 62 64 6F 73 28 44 43 4F 4E 49     i = Ubdos(DCONI
024350:  4F 2C 20 32 35 35 29 3B 0D 0A 20 20 69 66 28 70    O, 255);..  if(p
024360:  61 75 73 65 29 20 7B 0D 0A 20 20 20 20 69 66 28    ause) {..    if(
024370:  69 20 3D 3D 20 50 41 55 53 45 29 20 7B 0D 0A 20    i == PAUSE) {.. 
024380:  20 20 20 20 20 77 68 69 6C 65 28 21 28 69 20 3D         while(!(i =
024390:  20 55 62 64 6F 73 28 44 43 4F 4E 49 4F 2C 20 32     Ubdos(DCONIO, 2
0243A0:  35 35 29 29 29 20 3B 0D 0A 20 20 20 20 20 20 69    55))) ;..      i
0243B0:  66 28 69 20 3D 3D 20 41 42 4F 52 54 29 20 65 78    f(i == ABORT) ex
0243C0:  69 74 28 30 29 3B 0D 0A 20 20 20 20 20 20 72 65    it(0);..      re
0243D0:  74 75 72 6E 20 28 30 29 3B 0D 0A 20 20 20 20 20    turn (0);..     
0243E0:  20 7D 0D 0A 20 20 20 20 69 66 28 69 20 3D 3D 20     }..    if(i == 
0243F0:  41 42 4F 52 54 29 20 65 78 69 74 28 30 29 3B 0D    ABORT) exit(0);.
024400:  2B 29 20 2B 2B 74 3B 0D 0A 20 20 20 20 65 6C 73    +) ++t;..    els
024410:  65 20 72 65 74 75 72 6E 20 28 30 29 3B 0D 0A 20    e return (0);.. 
024420:  20 72 65 74 75 72 6E 20 28 6C 65 78 6F 72 64 65     return (lexorde
024430:  72 28 2A 73 2C 20 2A 74 29 29 3B 0D 0A 20 20 7D    r(*s, *t));..  }
024440:  0D 0A 0D 0A 2F 2A 0D 0A 2A 2A 20 6C 65 78 6F 72    ..../*..** lexor
024450:  64 65 72 28 63 31 2C 20 63 32 29 0D 0A 2A 2A 0D    der(c1, c2)..**.
024460:  0A 2A 2A 20 52 65 74 75 72 6E 20 61 20 6E 65 67    .** Return a neg
024470:  61 74 69 76 65 2C 20 7A 65 72 6F 2C 20 6F 72 20    ative, zero, or 
024480:  70 6F 73 69 74 69 76 65 20 6E 75 6D 62 65 72 20    positive number 
024490:  69 66 0D 0A 2A 2A 20 63 31 20 69 73 20 6C 65 73    if..** c1 is les
0244A0:  73 20 74 68 61 6E 2C 20 65 71 75 61 6C 20 74 6F    s than, equal to
0244B0:  2C 20 6F 72 20 67 72 65 61 74 65 72 20 74 68 61    , or greater tha
0244C0:  6E 20 63 32 2C 0D 0A 2A 2A 20 62 61 73 65 64 20    n c2,..** based 
0244D0:  6F 6E 20 61 20 6C 65 78 69 63 6F 67 72 61 70 68    on a lexicograph
0244E0:  69 63 61 6C 20 28 64 69 63 74 69 6F 6E 61 72 79    ical (dictionary
0244F0:  20 6F 72 64 65 72 29 0D 0A 2A 2A 20 63 6F 6C 61     order)..** cola
024500:  74 69 6E 67 20 73 65 71 75 65 6E 63 65 2E 0D 0A    ting sequence...
024510:  2A 2A 0D 0A 2A 2F 0D 0A 63 68 61 72 20 55 6C 65    **..*/..char Ule
024520:  78 5B 31 32 38 5D 20 3D 20 7B 0D 0A 20 20 20 20    x[128] = {..    
024530:  20 2F 2A 2A 2A 2A 20 4E 55 4C 20 2D 20 2F 20 2A     /**** NUL - / *
024540:  2A 2A 2A 2F 0D 0A 20 20 20 20 20 20 20 30 2C 20    ***/..       0, 
024550:  20 31 2C 20 20 32 2C 20 20 33 2C 20 20 34 2C 20     1,  2,  3,  4, 
024560:  20 35 2C 20 20 36 2C 20 20 37 2C 20 20 38 2C 20     5,  6,  7,  8, 
024570:  20 39 2C 0D 0A 20 20 20 20 20 20 31 30 2C 20 31     9,..      10, 1
024580:  31 2C 20 31 32 2C 20 31 33 2C 20 31 34 2C 20 31    1, 12, 13, 14, 1
024590:  35 2C 20 31 36 2C 20 31 37 2C 20 31 38 2C 20 31    5, 16, 17, 18, 1
0245A0:  39 2C 0D 0A 20 20 20 20 20 20 32 30 2C 20 32 31    9,..      20, 21
0245B0:  2C 20 32 32 2C 20 32 33 2C 20 32 34 2C 20 32 35    , 22, 23, 24, 25
0245C0:  2C 20 32 36 2C 20 32 37 2C 20 32 38 2C 20 32 39    , 26, 27, 28, 29
0245D0:  2C 0D 0A 20 20 20 20 20 20 33 30 2C 20 33 31 2C    ,..      30, 31,
0245E0:  20 33 32 2C 20 33 33 2C 20 33 34 2C 20 33 35 2C     32, 33, 34, 35,
0245F0:  20 33 36 2C 20 33 37 2C 20 33 38 2C 20 33 39 2C     36, 37, 38, 39,
024600:  0A 20 20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E    .    }..  return
024610:  20 28 69 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20     (i);..  }..>>> 
024620:  50 55 54 43 48 41 52 2E 43 20 31 36 39 0D 0A 23    PUTCHAR.C 169..#
024630:  64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20    define NOCCARGC 
024640:  20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20     /* no argument 
024650:  63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F    count passing */
024660:  0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69 6F    ..#include stdio
024670:  2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20 57 72 69 74 65    .h../*..** Write
024680:  20 63 68 61 72 61 63 74 65 72 20 74 6F 20 73 74     character to st
024690:  61 6E 64 61 72 64 20 6F 75 74 70 75 74 2E 20 0D    andard output. .
0246A0:  0A 2A 2F 0D 0A 70 75 74 63 68 61 72 28 63 68 29    .*/..putchar(ch)
0246B0:  20 69 6E 74 20 63 68 3B 20 7B 0D 0A 20 20 72 65     int ch; {..  re
0246C0:  74 75 72 6E 20 28 66 70 75 74 63 28 63 68 2C 20    turn (fputc(ch, 
0246D0:  73 74 64 6F 75 74 29 29 3B 0D 0A 20 20 7D 0D 0A    stdout));..  }..
0246E0:  3E 3E 3E 20 50 55 54 53 2E 43 20 31 39 31 0D 0A    >>> PUTS.C 191..
0246F0:  23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43    #define NOCCARGC
024700:  20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74      /* no argument
024710:  20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A     count passing *
024720:  2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69    /..#include stdi
024730:  6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20 57 72 69 74    o.h../*..** Writ
024740:  65 20 73 74 72 69 6E 67 20 74 6F 20 73 74 61 6E    e string to stan
024750:  64 61 72 64 20 6F 75 74 70 75 74 2E 20 0D 0A 2A    dard output. ..*
024760:  2F 0D 0A 70 75 74 73 28 73 74 72 69 6E 67 29 20    /..puts(string) 
024770:  63 68 61 72 20 2A 73 74 72 69 6E 67 3B 20 7B 0D    char *string; {.
024780:  0A 20 20 66 70 75 74 73 28 73 74 72 69 6E 67 2C    .  fputs(string,
024790:  20 73 74 64 6F 75 74 29 3B 0D 0A 20 20 66 70 75     stdout);..  fpu
0247A0:  74 63 28 27 5C 6E 27 2C 20 73 74 64 6F 75 74 29    tc('\n', stdout)
0247B0:  3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 52 45 4E 41    ;..  }..>>> RENA
0247C0:  4D 45 2E 43 20 35 33 39 0D 0A 23 64 65 66 69 6E    ME.C 539..#defin
0247D0:  65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20 6E    e NOCCARGC  /* n
0247E0:  6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E 74    o argument count
0247F0:  20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69 6E     passing */..#in
024800:  0D 0A 20 20 20 20 20 20 34 30 2C 20 34 31 2C 20    ..      40, 41, 
024810:  34 32 2C 20 34 33 2C 20 34 34 2C 20 34 35 2C 20    42, 43, 44, 45, 
024820:  34 36 2C 20 34 37 2C 0D 0A 20 20 20 20 20 2F 2A    46, 47,..     /*
024830:  2A 2A 2A 20 30 2D 39 20 2A 2A 2A 2A 2F 0D 0A 20    *** 0-9 ****/.. 
024840:  20 20 20 20 20 36 35 2C 20 36 36 2C 20 36 37 2C         65, 66, 67,
024850:  20 36 38 2C 20 36 39 2C 20 37 30 2C 20 37 31 2C     68, 69, 70, 71,
024860:  20 37 32 2C 20 37 33 2C 20 37 34 2C 0D 0A 20 20     72, 73, 74,..  
024870:  20 20 20 2F 2A 2A 2A 2A 20 3A 20 3B 20 3C 20 3D       /**** : ; < =
024880:  20 3E 20 3F 20 40 20 2A 2A 2A 2A 2F 0D 0A 20 20     > ? @ ****/..  
024890:  20 20 20 20 34 38 2C 20 34 39 2C 20 35 30 2C 20        48, 49, 50, 
0248A0:  35 31 2C 20 35 32 2C 20 35 33 2C 20 35 34 2C 0D    51, 52, 53, 54,.
0248B0:  0A 20 20 20 20 20 2F 2A 2A 2A 2A 20 41 2D 5A 20    .     /**** A-Z 
0248C0:  2A 2A 2A 2A 2F 0D 0A 20 20 20 20 20 20 37 35 2C    ****/..      75,
0248D0:  20 37 36 2C 20 37 37 2C 20 37 38 2C 20 37 39 2C     76, 77, 78, 79,
0248E0:  20 38 30 2C 20 38 31 2C 20 38 32 2C 20 38 33 2C     80, 81, 82, 83,
0248F0:  20 38 34 2C 20 38 35 2C 20 38 36 2C 20 38 37 2C     84, 85, 86, 87,
024900:  0D 0A 20 20 20 20 20 20 38 38 2C 20 38 39 2C 20    ..      88, 89, 
024910:  39 30 2C 20 39 31 2C 20 39 32 2C 20 39 33 2C 20    90, 91, 92, 93, 
024920:  39 34 2C 20 39 35 2C 20 39 36 2C 20 39 37 2C 20    94, 95, 96, 97, 
024930:  39 38 2C 20 39 39 2C 31 30 30 2C 0D 0A 20 20 20    98, 99,100,..   
024940:  20 20 2F 2A 2A 2A 2A 20 5B 20 5C 20 5D 20 5E 20      /**** [ \ ] ^ 
024950:  55 20 60 20 2A 2A 2A 2A 2F 0D 0A 20 20 20 20 20    U ` ****/..     
024960:  20 35 35 2C 20 35 36 2C 20 35 37 2C 20 35 38 2C     55, 56, 57, 58,
024970:  20 35 39 2C 20 36 30 2C 0D 0A 20 20 20 20 20 2F     59, 60,..     /
024980:  2A 2A 2A 2A 20 61 2D 7A 20 2A 2A 2A 2A 2F 0D 0A    **** a-z ****/..
024990:  20 20 20 20 20 20 37 35 2C 20 37 36 2C 20 37 37          75, 76, 77
0249A0:  2C 20 37 38 2C 20 37 39 2C 20 38 30 2C 20 38 31    , 78, 79, 80, 81
0249B0:  2C 20 38 32 2C 20 38 33 2C 20 38 34 2C 20 38 35    , 82, 83, 84, 85
0249C0:  2C 20 38 36 2C 20 38 37 2C 0D 0A 20 20 20 20 20    , 86, 87,..     
0249D0:  20 38 38 2C 20 38 39 2C 20 39 30 2C 20 39 31 2C     88, 89, 90, 91,
0249E0:  20 39 32 2C 20 39 33 2C 20 39 34 2C 20 39 35 2C     92, 93, 94, 95,
0249F0:  20 39 36 2C 20 39 37 2C 20 39 38 2C 20 39 39 2C     96, 97, 98, 99,
024A00:  63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A 23    clude stdio.h..#
024A10:  69 6E 63 6C 75 64 65 20 63 6C 69 62 2E 64 65 66    include clib.def
024A20:  0D 0A 2F 2A 0D 0A 2A 2A 20 52 65 6E 61 6D 65 20    ../*..** Rename 
024A30:  61 20 66 69 6C 65 2E 0D 0A 2A 2A 20 20 66 72 6F    a file...**  fro
024A40:  6D 20 3D 20 61 64 64 72 65 73 73 20 6F 66 20 6F    m = address of o
024A50:  6C 64 20 66 69 6C 65 6E 61 6D 65 2E 0D 0A 2A 2A    ld filename...**
024A60:  20 20 20 20 74 6F 20 3D 20 61 64 64 72 65 73 73        to = address
024A70:  20 6F 66 20 6E 65 77 20 66 69 6C 65 6E 61 6D 65     of new filename
024A80:  2E 0D 0A 2A 2A 20 20 52 65 74 75 72 6E 73 20 4E    ...**  Returns N
024A90:  55 4C 4C 20 6F 6E 20 73 75 63 63 65 73 73 2C 20    ULL on success, 
024AA0:  65 6C 73 65 20 45 52 52 2E 0D 0A 2A 2F 0D 0A 72    else ERR...*/..r
024AB0:  65 6E 61 6D 65 28 66 72 6F 6D 2C 20 74 6F 29 20    ename(from, to) 
024AC0:  63 68 61 72 20 2A 66 72 6F 6D 2C 20 2A 74 6F 3B    char *from, *to;
024AD0:  20 7B 0D 0A 20 20 63 68 61 72 20 66 63 62 5B 46     {..  char fcb[F
024AE0:  43 42 53 49 5A 45 5D 3B 0D 0A 20 20 70 61 64 28    CBSIZE];..  pad(
024AF0:  66 63 62 2C 20 4E 55 4C 4C 2C 20 46 43 42 53 49    fcb, NULL, FCBSI
024B00:  5A 45 29 3B 0D 0A 20 20 69 66 28 21 55 6E 65 77    ZE);..  if(!Unew
024B10:  66 63 62 28 74 6F 2C 20 66 63 62 29 20 7C 7C 20    fcb(to, fcb) || 
024B20:  55 62 64 6F 73 28 4F 50 4E 46 49 4C 2C 20 66 63    Ubdos(OPNFIL, fc
024B30:  62 29 20 21 3D 20 32 35 35 29 20 7B 0D 0A 20 20    b) != 255) {..  
024B40:  20 20 55 62 64 6F 73 28 43 4C 4F 46 49 4C 2C 20      Ubdos(CLOFIL, 
024B50:  66 63 62 29 3B 0D 0A 20 20 20 20 72 65 74 75 72    fcb);..    retur
024B60:  6E 20 28 45 52 52 29 3B 0D 0A 20 20 20 20 7D 0D    n (ERR);..    }.
024B70:  0A 20 20 69 66 28 55 6E 65 77 66 63 62 28 66 72    .  if(Unewfcb(fr
024B80:  6F 6D 2C 20 66 63 62 29 20 26 26 0D 0A 20 20 20    om, fcb) &&..   
024B90:  20 20 55 6E 65 77 66 63 62 28 74 6F 2C 20 66 63      Unewfcb(to, fc
024BA0:  62 2B 4E 41 4D 45 4F 46 46 32 29 20 26 26 0D 0A    b+NAMEOFF2) &&..
024BB0:  20 20 20 20 20 55 62 64 6F 73 28 52 45 4E 41 4D         Ubdos(RENAM
024BC0:  45 2C 20 66 63 62 29 20 21 3D 20 32 35 35 29 0D    E, fcb) != 255).
024BD0:  0A 20 20 20 20 72 65 74 75 72 6E 20 28 4E 55 4C    .    return (NUL
024BE0:  4C 29 3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 45    L);..  return (E
024BF0:  52 52 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 52    RR);..  }..>>> R
024C00:  31 30 30 2C 0D 0A 20 20 20 20 20 2F 2A 2A 2A 2A    100,..     /****
024C10:  20 7B 20 7C 20 7D 20 7E 20 2A 2A 2A 2A 2F 0D 0A     { | } ~ ****/..
024C20:  20 20 20 20 20 20 36 31 2C 20 36 32 2C 20 36 33          61, 62, 63
024C30:  2C 20 36 34 2C 0D 0A 20 20 20 20 20 2F 2A 2A 2A    , 64,..     /***
024C40:  2A 20 44 45 4C 20 2A 2A 2A 2A 2F 0D 0A 20 20 20    * DEL ****/..   
024C50:  20 20 31 30 31 0D 0A 20 20 20 20 20 7D 3B 0D 0A      101..     };..
024C60:  0D 0A 6C 65 78 6F 72 64 65 72 28 63 31 2C 20 63    ..lexorder(c1, c
024C70:  32 29 20 63 68 61 72 20 63 31 2C 20 63 32 3B 20    2) char c1, c2; 
024C80:  7B 0D 0A 20 20 72 65 74 75 72 6E 28 55 6C 65 78    {..  return(Ulex
024C90:  5B 63 31 5D 20 2D 20 55 6C 65 78 5B 63 32 5D 29    [c1] - Ulex[c2])
024CA0:  3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 4C 49 4E 4B    ;..  }..>>> LINK
024CB0:  2E 4D 41 43 20 33 30 0D 0A 55 6C 69 6E 6B 3A 3A    .MAC 30..Ulink::
024CC0:  20 65 78 74 20 55 6D 61 69 6E 0D 0A 20 20 20 20     ext Umain..    
024CD0:  20 20 20 20 65 6E 64 0D 0A 3E 3E 3E 20 4D 41 4C        end..>>> MAL
024CE0:  4C 4F 43 2E 43 20 32 38 31 0D 0A 23 64 65 66 69    LOC.C 281..#defi
024CF0:  6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20    ne NOCCARGC  /* 
024D00:  6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E    no argument coun
024D10:  74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 23 69    t passing */..#i
024D20:  6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D 0A    nclude stdio.h..
024D30:  2F 2A 0D 0A 2A 2A 20 4D 65 6D 6F 72 79 20 61 6C    /*..** Memory al
024D40:  6C 6F 63 61 74 69 6F 6E 20 6F 66 20 73 69 7A 65    location of size
024D50:  20 62 79 74 65 73 2E 0D 0A 2A 2A 20 73 69 7A 65     bytes...** size
024D60:  20 20 3D 20 53 69 7A 65 20 6F 66 20 74 68 65 20      = Size of the 
024D70:  62 6C 6F 63 6B 20 69 6E 20 62 79 74 65 73 2E 0D    block in bytes..
024D80:  0A 2A 2A 20 52 65 74 75 72 6E 73 20 74 68 65 20    .** Returns the 
024D90:  61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 61    address of the a
024DA0:  6C 6C 6F 63 61 74 65 64 20 62 6C 6F 63 6B 2C 0D    llocated block,.
024DB0:  0A 2A 2A 20 65 6C 73 65 20 4E 55 4C 4C 20 66 6F    .** else NULL fo
024DC0:  72 20 66 61 69 6C 75 72 65 2E 0D 0A 2A 2F 0D 0A    r failure...*/..
024DD0:  6D 61 6C 6C 6F 63 28 73 69 7A 65 29 20 63 68 61    malloc(size) cha
024DE0:  72 20 2A 73 69 7A 65 3B 20 7B 0D 0A 20 20 72 65    r *size; {..  re
024DF0:  74 75 72 6E 20 28 55 61 6C 6C 6F 63 28 73 69 7A    turn (Ualloc(siz
024E00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
024E10:  1F 00 01 00 02 09 52 E5 1F 00 41 02 00 00 00 02    ......R...A.....
024E20:  1F 00 46 02 00 00 00 02 1F 00 42 02 00 00 00 02    ..F.......B.....
024E30:  1F 00 47 02 00 00 00 02 1F 00 43 02 00 00 00 02    ..G.......C.....
024E40:  1F 00 48 02 00 00 00 02 1F 00 44 02 00 00 00 02    ..H.......D.....
024E50:  1F 00 49 02 00 00 00 02 1F 00 45 02 00 00 00 02    ..I.......E.....
024E60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024ED0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024F00:  45 56 45 52 53 45 2E 43 20 32 32 30 0D 0A 23 64    EVERSE.C 220..#d
024F10:  65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43 20 20    efine NOCCARGC  
024F20:  2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74 20 63    /* no argument c
024F30:  6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A 2F 0D    ount passing */.
024F40:  0A 2F 2A 0D 0A 2A 2A 20 72 65 76 65 72 73 65 20    ./*..** reverse 
024F50:  73 74 72 69 6E 67 20 69 6E 20 70 6C 61 63 65 20    string in place 
024F60:  0D 0A 2A 2F 0D 0A 72 65 76 65 72 73 65 28 73 29    ..*/..reverse(s)
024F70:  20 63 68 61 72 20 2A 73 3B 20 7B 0D 0A 20 20 63     char *s; {..  c
024F80:  68 61 72 20 2A 6A 3B 0D 0A 20 20 69 6E 74 20 63    har *j;..  int c
024F90:  3B 0D 0A 20 20 6A 20 3D 20 73 20 2B 20 73 74 72    ;..  j = s + str
024FA0:  6C 65 6E 28 73 29 20 2D 20 31 3B 0D 0A 20 20 77    len(s) - 1;..  w
024FB0:  68 69 6C 65 28 73 20 3C 20 6A 29 20 7B 0D 0A 20    hile(s < j) {.. 
024FC0:  20 20 20 63 20 3D 20 2A 73 3B 0D 0A 20 20 20 20       c = *s;..    
024FD0:  2A 73 2B 2B 20 3D 20 2A 6A 3B 0D 0A 20 20 20 20    *s++ = *j;..    
024FE0:  2A 6A 2D 2D 20 3D 20 63 3B 0D 0A 20 20 20 20 7D    *j-- = c;..    }
024FF0:  0D 0A 20 20 7D 0D 0A 0D 0A 3E 3E 3E 20 52 45 57    ..  }....>>> REW
025000:  49 4E 44 2E 43 20 31 33 38 0D 0A 23 64 65 66 69    IND.C 138..#defi
025010:  6E 65 20 4E 4F 43 43 41 52 47 43 20 20 2F 2A 20    ne NOCCARGC  /* 
025020:  6E 6F 20 61 72 67 75 6D 65 6E 74 20 63 6F 75 6E    no argument coun
025030:  74 20 70 61 73 73 69 6E 67 20 2A 2F 0D 0A 2F 2A    t passing */../*
025040:  0D 0A 2A 2A 20 52 65 77 69 6E 64 20 66 69 6C 65    ..** Rewind file
025050:  20 74 6F 20 62 65 67 69 6E 6E 69 6E 67 2E 20 0D     to beginning. .
025060:  0A 2A 2F 0D 0A 72 65 77 69 6E 64 28 66 64 29 20    .*/..rewind(fd) 
025070:  69 6E 74 20 66 64 3B 20 7B 0D 0A 20 20 72 65 74    int fd; {..  ret
025080:  75 72 6E 28 63 73 65 65 6B 28 66 64 2C 20 30 2C    urn(cseek(fd, 0,
025090:  20 30 29 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20     0));..  }..>>> 
0250A0:  53 49 47 4E 2E 43 20 31 34 38 0D 0A 2F 2A 0D 0A    SIGN.C 148../*..
0250B0:  2A 2A 20 73 69 67 6E 20 2D 2D 20 72 65 74 75 72    ** sign -- retur
0250C0:  6E 20 2D 31 2C 20 30 2C 20 2B 31 20 64 65 70 65    n -1, 0, +1 depe
0250D0:  6E 64 69 6E 67 20 6F 6E 20 74 68 65 20 73 69 67    nding on the sig
0250E0:  6E 20 6F 66 20 6E 62 72 0D 0A 2A 2F 0D 0A 73 69    n of nbr..*/..si
0250F0:  67 6E 28 6E 62 72 29 20 20 69 6E 74 20 6E 62 72    gn(nbr)  int nbr
025100:  73 74 2C 20 73 6F 75 72 2C 20 6E 29 20 63 68 61    st, sour, n) cha
025110:  72 20 2A 64 65 73 74 2C 20 2A 73 6F 75 72 3B 20    r *dest, *sour; 
025120:  69 6E 74 20 6E 3B 20 7B 0D 0A 20 20 63 68 61 72    int n; {..  char
025130:  20 2A 64 3B 0D 0A 20 20 64 20 3D 20 64 65 73 74     *d;..  d = dest
025140:  3B 0D 0A 20 20 77 68 69 6C 65 28 6E 2D 2D 20 3E    ;..  while(n-- >
025150:  20 30 29 20 7B 0D 0A 20 20 20 20 69 66 28 2A 64     0) {..    if(*d
025160:  2B 2B 20 3D 20 2A 73 6F 75 72 2B 2B 29 20 63 6F    ++ = *sour++) co
025170:  6E 74 69 6E 75 65 3B 0D 0A 20 20 20 20 77 68 69    ntinue;..    whi
025180:  6C 65 28 6E 2D 2D 20 3E 20 30 29 20 2A 64 2B 2B    le(n-- > 0) *d++
025190:  20 3D 20 30 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20     = 0;..    }..  
0251A0:  2A 64 20 3D 20 30 3B 0D 0A 20 20 72 65 74 75 72    *d = 0;..  retur
0251B0:  6E 20 28 64 65 73 74 29 3B 0D 0A 20 20 7D 0D 0A    n (dest);..  }..
0251C0:  3E 3E 3E 20 53 54 52 52 43 48 52 2E 43 20 33 31    >>> STRRCHR.C 31
0251D0:  34 0D 0A 2F 2A 0D 0A 2A 2A 20 73 74 72 72 63 68    4../*..** strrch
0251E0:  72 28 73 2C 63 29 20 2D 20 53 65 61 72 63 68 20    r(s,c) - Search 
0251F0:  73 20 66 6F 72 20 72 69 67 68 74 6D 6F 73 74 20    s for rightmost 
025200:  6F 63 63 75 72 72 61 6E 63 65 20 6F 66 20 63 2E    occurrance of c.
025210:  0D 0A 2A 2A 20 73 20 20 20 20 20 20 3D 20 50 6F    ..** s      = Po
025220:  69 6E 74 65 72 20 74 6F 20 73 74 72 69 6E 67 20    inter to string 
025230:  74 6F 20 62 65 20 73 65 61 72 63 68 65 64 2E 0D    to be searched..
025240:  0A 2A 2A 20 63 20 20 20 20 20 20 3D 20 43 68 61    .** c      = Cha
025250:  72 61 63 74 65 72 20 74 6F 20 73 65 61 72 63 68    racter to search
025260:  20 66 6F 72 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E     for...** Return
025270:  73 20 70 6F 69 6E 74 65 72 20 74 6F 20 72 69 67    s pointer to rig
025280:  68 74 6D 6F 73 74 20 63 20 6F 72 20 4E 55 4C 4C    htmost c or NULL
025290:  2E 0D 0A 2A 2F 0D 0A 73 74 72 72 63 68 72 28 73    ...*/..strrchr(s
0252A0:  2C 20 63 29 20 63 68 61 72 20 2A 73 2C 20 63 3B    , c) char *s, c;
0252B0:  20 7B 0D 0A 20 20 63 68 61 72 20 2A 70 74 72 3B     {..  char *ptr;
0252C0:  0D 0A 20 20 70 74 72 20 3D 20 30 3B 0D 0A 20 20    ..  ptr = 0;..  
0252D0:  77 68 69 6C 65 28 2A 73 29 20 7B 0D 0A 20 20 20    while(*s) {..   
0252E0:  20 69 66 28 2A 73 3D 3D 63 29 20 70 74 72 20 3D     if(*s==c) ptr =
0252F0:  20 73 3B 0D 0A 20 20 20 20 2B 2B 73 3B 0D 0A 20     s;..    ++s;.. 
025300:  3B 20 20 7B 0D 0A 20 20 69 66 28 6E 62 72 3E 30    ;  {..  if(nbr>0
025310:  29 20 72 65 74 75 72 6E 20 31 3B 0D 0A 20 20 69    ) return 1;..  i
025320:  66 28 6E 62 72 3D 3D 30 29 20 72 65 74 75 72 6E    f(nbr==0) return
025330:  20 30 3B 0D 0A 20 20 72 65 74 75 72 6E 20 2D 31     0;..  return -1
025340:  3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 53 54 44 49    ;..  }..>>> STDI
025350:  4F 2E 48 20 32 39 36 0D 0A 2F 2A 0D 0A 2A 2A 20    O.H 296../*..** 
025360:  53 54 44 49 4F 2E 48 20 2D 2D 20 53 74 61 6E 64    STDIO.H -- Stand
025370:  61 72 64 20 53 6D 61 6C 6C 2D 43 20 44 65 66 69    ard Small-C Defi
025380:  6E 69 74 69 6F 6E 73 0D 0A 2A 2F 0D 0A 23 64 65    nitions..*/..#de
025390:  66 69 6E 65 20 73 74 64 69 6E 20 20 20 20 30 0D    fine stdin    0.
0253A0:  0A 23 64 65 66 69 6E 65 20 73 74 64 6F 75 74 20    .#define stdout 
0253B0:  20 20 31 0D 0A 23 64 65 66 69 6E 65 20 73 74 64      1..#define std
0253C0:  65 72 72 20 20 20 32 0D 0A 23 64 65 66 69 6E 65    err   2..#define
0253D0:  20 45 52 52 20 20 20 28 2D 32 29 0D 0A 23 64 65     ERR   (-2)..#de
0253E0:  66 69 6E 65 20 45 4F 46 20 20 20 28 2D 31 29 0D    fine EOF   (-1).
0253F0:  0A 23 64 65 66 69 6E 65 20 59 45 53 20 20 20 20    .#define YES    
025400:  20 20 31 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 20      1..#define NO 
025410:  20 20 20 20 20 20 30 0D 0A 23 64 65 66 69 6E 65          0..#define
025420:  20 4E 55 4C 4C 20 20 20 20 20 30 0D 0A 23 64 65     NULL     0..#de
025430:  66 69 6E 65 20 43 52 20 20 20 20 20 20 31 33 0D    fine CR      13.
025440:  0A 23 64 65 66 69 6E 65 20 4C 46 20 20 20 20 20    .#define LF     
025450:  20 31 30 0D 0A 23 64 65 66 69 6E 65 20 42 45 4C     10..#define BEL
025460:  4C 20 20 20 20 20 37 0D 0A 23 64 65 66 69 6E 65    L     7..#define
025470:  20 53 50 41 43 45 20 20 27 20 27 0D 0A 23 64 65     SPACE  ' '..#de
025480:  66 69 6E 65 20 4E 45 57 4C 49 4E 45 20 4C 46 0D    fine NEWLINE LF.
025490:  0A 3E 3E 3E 20 53 54 52 43 41 54 2E 43 20 31 37    .>>> STRCAT.C 17
0254A0:  35 0D 0A 2F 2A 0D 0A 2A 2A 20 63 6F 6E 63 61 74    5../*..** concat
0254B0:  65 6E 61 74 65 20 74 20 74 6F 20 65 6E 64 20 6F    enate t to end o
0254C0:  66 20 73 20 0D 0A 2A 2A 20 73 20 6D 75 73 74 20    f s ..** s must 
0254D0:  62 65 20 6C 61 72 67 65 20 65 6E 6F 75 67 68 0D    be large enough.
0254E0:  0A 2A 2F 0D 0A 73 74 72 63 61 74 28 73 2C 20 74    .*/..strcat(s, t
0254F0:  29 20 63 68 61 72 20 2A 73 2C 20 2A 74 3B 20 7B    ) char *s, *t; {
025500:  20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 28       }..  return (
025510:  70 74 72 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20    ptr);..  }..>>> 
025520:  54 4F 41 53 43 49 49 2E 43 20 37 36 0D 0A 2F 2A    TOASCII.C 76../*
025530:  0D 0A 2A 2A 20 72 65 74 75 72 6E 20 41 53 43 49    ..** return ASCI
025540:  49 20 65 71 75 69 76 61 6C 65 6E 74 20 6F 66 20    I equivalent of 
025550:  63 0D 0A 2A 2F 0D 0A 74 6F 61 73 63 69 69 28 63    c..*/..toascii(c
025560:  29 20 69 6E 74 20 63 3B 20 7B 0D 0A 20 20 72 65    ) int c; {..  re
025570:  74 75 72 6E 20 28 63 29 3B 0D 0A 20 20 7D 0D 0A    turn (c);..  }..
025580:  3E 3E 3E 20 54 4F 4C 4F 57 45 52 2E 43 20 31 33    >>> TOLOWER.C 13
025590:  30 0D 0A 2F 2A 0D 0A 2A 2A 20 72 65 74 75 72 6E    0../*..** return
0255A0:  20 6C 6F 77 65 72 2D 63 61 73 65 20 6F 66 20 63     lower-case of c
0255B0:  20 69 66 20 75 70 70 65 72 2D 63 61 73 65 2C 20     if upper-case, 
0255C0:  65 6C 73 65 20 63 0D 0A 2A 2F 0D 0A 74 6F 6C 6F    else c..*/..tolo
0255D0:  77 65 72 28 63 29 20 69 6E 74 20 63 3B 20 7B 0D    wer(c) int c; {.
0255E0:  0A 20 20 69 66 28 63 3C 3D 27 5A 27 20 26 26 20    .  if(c<='Z' && 
0255F0:  63 3E 3D 27 41 27 29 20 72 65 74 75 72 6E 20 28    c>='A') return (
025600:  63 2B 33 32 29 3B 0D 0A 20 20 72 65 74 75 72 6E    c+32);..  return
025610:  20 28 63 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20     (c);..  }..>>> 
025620:  54 4F 55 50 50 45 52 2E 43 20 31 33 36 0D 0A 2F    TOUPPER.C 136../
025630:  2A 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 75 70 70    *..** return upp
025640:  65 72 2D 63 61 73 65 20 6F 66 20 63 20 69 66 20    er-case of c if 
025650:  69 74 20 69 73 20 6C 6F 77 65 72 2D 63 61 73 65    it is lower-case
025660:  2C 20 65 6C 73 65 20 63 0D 0A 2A 2F 0D 0A 74 6F    , else c..*/..to
025670:  75 70 70 65 72 28 63 29 20 69 6E 74 20 63 3B 20    upper(c) int c; 
025680:  7B 0D 0A 20 20 69 66 28 63 3C 3D 27 7A 27 20 26    {..  if(c<='z' &
025690:  26 20 63 3E 3D 27 61 27 29 20 72 65 74 75 72 6E    & c>='a') return
0256A0:  20 28 63 2D 33 32 29 3B 0D 0A 20 20 72 65 74 75     (c-32);..  retu
0256B0:  72 6E 20 28 63 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E    rn (c);..  }..>>
0256C0:  3E 20 55 4E 47 45 54 43 2E 43 20 33 34 32 0D 0A    > UNGETC.C 342..
0256D0:  23 64 65 66 69 6E 65 20 4E 4F 43 43 41 52 47 43    #define NOCCARGC
0256E0:  20 20 2F 2A 20 6E 6F 20 61 72 67 75 6D 65 6E 74      /* no argument
0256F0:  20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A     count passing *
025700:  0D 0A 20 20 63 68 61 72 20 2A 64 3B 0D 0A 20 20    ..  char *d;..  
025710:  64 20 3D 20 73 3B 0D 0A 20 20 2D 2D 73 3B 0D 0A    d = s;..  --s;..
025720:  20 20 77 68 69 6C 65 20 28 2A 2B 2B 73 29 20 3B      while (*++s) ;
025730:  0D 0A 20 20 77 68 69 6C 65 20 28 2A 73 2B 2B 20    ..  while (*s++ 
025740:  3D 20 2A 74 2B 2B 29 20 3B 0D 0A 20 20 72 65 74    = *t++) ;..  ret
025750:  75 72 6E 28 64 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E    urn(d);..  }..>>
025760:  3E 20 53 54 52 43 48 52 2E 43 20 31 37 36 0D 0A    > STRCHR.C 176..
025770:  2F 2A 0D 0A 2A 2A 20 72 65 74 75 72 6E 20 70 6F    /*..** return po
025780:  69 6E 74 65 72 20 74 6F 20 31 73 74 20 6F 63 63    inter to 1st occ
025790:  75 72 72 65 6E 63 65 20 6F 66 20 63 20 69 6E 20    urrence of c in 
0257A0:  73 74 72 2C 20 65 6C 73 65 20 30 0D 0A 2A 2F 0D    str, else 0..*/.
0257B0:  0A 73 74 72 63 68 72 28 73 74 72 2C 20 63 29 20    .strchr(str, c) 
0257C0:  63 68 61 72 20 2A 73 74 72 2C 20 63 3B 20 7B 0D    char *str, c; {.
0257D0:  0A 20 20 77 68 69 6C 65 28 2A 73 74 72 29 20 7B    .  while(*str) {
0257E0:  0D 0A 20 20 20 20 69 66 28 2A 73 74 72 20 3D 3D    ..    if(*str ==
0257F0:  20 63 29 20 72 65 74 75 72 6E 20 28 73 74 72 29     c) return (str)
025800:  3B 0D 0A 20 20 20 20 2B 2B 73 74 72 3B 0D 0A 20    ;..    ++str;.. 
025810:  20 20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 28       }..  return (
025820:  30 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 53 54    0);..  }..>>> ST
025830:  52 43 4D 50 2E 43 20 31 38 35 0D 0A 2F 2A 0D 0A    RCMP.C 185../*..
025840:  2A 2A 20 72 65 74 75 72 6E 20 3C 30 2C 20 20 20    ** return <0,   
025850:  30 2C 20 20 3E 30 20 61 55 6F 72 64 69 6E 67 20    0,  >0 aUording 
025860:  74 6F 0D 0A 2A 2A 20 20 20 20 20 20 20 73 3C 74    to..**       s<t
025870:  2C 20 73 3D 74 2C 20 73 3E 74 0D 0A 2A 2F 0D 0A    , s=t, s>t..*/..
025880:  73 74 72 63 6D 70 28 73 2C 20 74 29 20 63 68 61    strcmp(s, t) cha
025890:  72 20 2A 73 2C 20 2A 74 3B 20 7B 0D 0A 20 20 77    r *s, *t; {..  w
0258A0:  68 69 6C 65 28 2A 73 20 3D 3D 20 2A 74 29 20 7B    hile(*s == *t) {
0258B0:  0D 0A 20 20 20 20 69 66 28 2A 73 20 3D 3D 20 30    ..    if(*s == 0
0258C0:  29 20 72 65 74 75 72 6E 20 28 30 29 3B 0D 0A 20    ) return (0);.. 
0258D0:  20 20 20 2B 2B 73 3B 20 2B 2B 74 3B 0D 0A 20 20       ++s; ++t;..  
0258E0:  20 20 7D 0D 0A 20 20 72 65 74 75 72 6E 20 28 2A      }..  return (*
0258F0:  73 20 2D 20 2A 74 29 3B 0D 0A 20 20 7D 0D 0A 0D    s - *t);..  }...
025900:  2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69    /..#include stdi
025910:  6F 2E 68 0D 0A 65 78 74 65 72 6E 20 55 6E 65 78    o.h..extern Unex
025920:  74 63 5B 5D 3B 0D 0A 2F 2A 0D 0A 2A 2A 20 50 75    tc[];../*..** Pu
025930:  74 20 63 20 62 61 63 6B 20 69 6E 74 6F 20 66 69    t c back into fi
025940:  6C 65 20 66 64 2E 0D 0A 2A 2A 20 45 6E 74 72 79    le fd...** Entry
025950:  3A 20 20 63 20 3D 20 63 68 61 72 61 63 74 65 72    :  c = character
025960:  20 74 6F 20 70 75 74 20 62 61 63 6B 0D 0A 2A 2A     to put back..**
025970:  20 20 20 20 20 20 20 20 66 64 20 3D 20 66 69 6C            fd = fil
025980:  65 20 64 65 73 63 72 69 70 74 6F 72 0D 0A 2A 2A    e descriptor..**
025990:  20 52 65 74 75 72 6E 73 20 63 20 69 66 20 73 75     Returns c if su
0259A0:  63 63 65 73 73 66 75 6C 2C 20 65 6C 73 65 20 45    ccessful, else E
0259B0:  4F 46 2E 0D 0A 2A 2F 0D 0A 75 6E 67 65 74 63 28    OF...*/..ungetc(
0259C0:  63 2C 20 66 64 29 20 69 6E 74 20 63 2C 20 66 64    c, fd) int c, fd
0259D0:  3B 20 7B 0D 0A 20 20 69 66 28 21 55 6D 6F 64 65    ; {..  if(!Umode
0259E0:  28 66 64 29 20 7C 7C 20 55 6E 65 78 74 63 5B 66    (fd) || Unextc[f
0259F0:  64 5D 21 3D 45 4F 46 20 7C 7C 20 63 3D 3D 45 4F    d]!=EOF || c==EO
025A00:  46 29 20 72 65 74 75 72 6E 20 28 45 4F 46 29 3B    F) return (EOF);
025A10:  0D 0A 20 20 72 65 74 75 72 6E 20 28 55 6E 65 78    ..  return (Unex
025A20:  74 63 5B 66 64 5D 20 3D 20 63 29 3B 0D 0A 20 20    tc[fd] = c);..  
025A30:  7D 0D 0A 3E 3E 3E 20 55 4E 4C 49 4E 4B 2E 43 20    }..>>> UNLINK.C 
025A40:  34 37 37 0D 0A 23 64 65 66 69 6E 65 20 4E 4F 43    477..#define NOC
025A50:  43 41 52 47 43 20 20 2F 2A 20 6E 6F 20 61 72 67    CARGC  /* no arg
025A60:  20 63 6F 75 6E 74 20 70 61 73 73 69 6E 67 20 2A     count passing *
025A70:  2F 0D 0A 23 69 6E 63 6C 75 64 65 20 73 74 64 69    /..#include stdi
025A80:  6F 2E 68 0D 0A 23 69 6E 63 6C 75 64 65 20 63 6C    o.h..#include cl
025A90:  69 62 2E 64 65 66 0D 0A 2F 2A 0D 0A 2A 2A 20 55    ib.def../*..** U
025AA0:  6E 6C 69 6E 6B 20 28 64 65 6C 65 74 65 29 20 74    nlink (delete) t
025AB0:  68 65 20 6E 61 6D 65 64 20 66 69 6C 65 2E 20 0D    he named file. .
025AC0:  0A 2A 2A 20 45 6E 74 72 79 3A 20 66 6E 20 3D 20    .** Entry: fn = 
025AD0:  4E 75 6C 6C 2D 74 65 72 6D 69 6E 61 74 65 64 20    Null-terminated 
025AE0:  43 50 2F 4D 20 66 69 6C 65 20 6E 61 6D 65 2E 0D    CP/M file name..
025AF0:  0A 2A 2A 20 20 20 20 20 20 20 20 20 20 20 20 20    .**             
025B00:  0A 3E 3E 3E 20 53 54 52 43 50 59 2E 43 20 31 31    .>>> STRCPY.C 11
025B10:  31 0D 0A 2F 2A 0D 0A 2A 2A 20 63 6F 70 79 20 74    1../*..** copy t
025B20:  20 74 6F 20 73 20 0D 0A 2A 2F 0D 0A 73 74 72 63     to s ..*/..strc
025B30:  70 79 28 73 2C 20 74 29 20 63 68 61 72 20 2A 73    py(s, t) char *s
025B40:  2C 20 2A 74 3B 20 7B 0D 0A 20 20 63 68 61 72 20    , *t; {..  char 
025B50:  2A 64 3B 0D 0A 20 20 64 20 3D 20 73 3B 0D 0A 20    *d;..  d = s;.. 
025B60:  20 77 68 69 6C 65 20 28 2A 73 2B 2B 20 3D 20 2A     while (*s++ = *
025B70:  74 2B 2B 29 20 3B 0D 0A 20 20 72 65 74 75 72 6E    t++) ;..  return
025B80:  28 64 29 3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 53    (d);..  }..>>> S
025B90:  54 52 4C 45 4E 2E 43 20 31 31 33 0D 0A 2F 2A 0D    TRLEN.C 113../*.
025BA0:  0A 2A 2A 20 72 65 74 75 72 6E 20 6C 65 6E 67 74    .** return lengt
025BB0:  68 20 6F 66 20 73 20 0D 0A 2A 2F 0D 0A 73 74 72    h of s ..*/..str
025BC0:  6C 65 6E 28 73 29 20 63 68 61 72 20 2A 73 3B 20    len(s) char *s; 
025BD0:  7B 0D 0A 20 20 63 68 61 72 20 2A 74 3B 0D 0A 20    {..  char *t;.. 
025BE0:  20 74 20 3D 20 73 20 2D 20 31 3B 0D 0A 20 20 77     t = s - 1;..  w
025BF0:  68 69 6C 65 20 28 2A 2B 2B 74 29 20 3B 0D 0A 20    hile (*++t) ;.. 
025C00:  20 72 65 74 75 72 6E 20 28 74 20 2D 20 73 29 3B     return (t - s);
025C10:  0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 53 54 52 4E 43    ..  }..>>> STRNC
025C20:  41 54 2E 43 20 32 35 34 0D 0A 2F 2A 0D 0A 2A 2A    AT.C 254../*..**
025C30:  20 63 6F 6E 63 61 74 65 6E 61 74 65 20 6E 20 62     concatenate n b
025C40:  79 74 65 73 20 6D 61 78 20 66 72 6F 6D 20 74 20    ytes max from t 
025C50:  74 6F 20 65 6E 64 20 6F 66 20 73 20 0D 0A 2A 2A    to end of s ..**
025C60:  20 73 20 6D 75 73 74 20 62 65 20 6C 61 72 67 65     s must be large
025C70:  20 65 6E 6F 75 67 68 0D 0A 2A 2F 0D 0A 73 74 72     enough..*/..str
025C80:  6E 63 61 74 28 73 2C 20 74 2C 20 6E 29 20 63 68    ncat(s, t, n) ch
025C90:  61 72 20 2A 73 2C 20 2A 74 3B 20 69 6E 74 20 6E    ar *s, *t; int n
025CA0:  3B 20 7B 0D 0A 20 20 63 68 61 72 20 2A 64 3B 0D    ; {..  char *d;.
025CB0:  0A 20 20 64 20 3D 20 73 3B 0D 0A 20 20 2D 2D 73    .  d = s;..  --s
025CC0:  3B 0D 0A 20 20 77 68 69 6C 65 28 2A 2B 2B 73 29    ;..  while(*++s)
025CD0:  20 3B 0D 0A 20 20 77 68 69 6C 65 28 6E 2D 2D 29     ;..  while(n--)
025CE0:  20 7B 0D 0A 20 20 20 20 69 66 28 2A 73 2B 2B 20     {..    if(*s++ 
025CF0:  3D 20 2A 74 2B 2B 29 20 63 6F 6E 74 69 6E 75 65    = *t++) continue
025D00:  4D 61 79 20 62 65 20 70 72 65 66 69 78 65 64 20    May be prefixed 
025D10:  62 79 20 6C 65 74 74 65 72 20 6F 66 20 64 72 69    by letter of dri
025D20:  76 65 2E 0D 0A 2A 2A 20 52 65 74 75 72 6E 73 20    ve...** Returns 
025D30:  4E 55 4C 4C 20 6F 6E 20 73 75 63 63 65 73 73 2C    NULL on success,
025D40:  20 65 6C 73 65 20 45 52 52 2E 0D 0A 2A 2F 0D 0A     else ERR...*/..
025D50:  75 6E 6C 69 6E 6B 28 66 6E 29 20 63 68 61 72 20    unlink(fn) char 
025D60:  2A 66 6E 3B 20 7B 0D 0A 20 20 63 68 61 72 20 66    *fn; {..  char f
025D70:  63 62 5B 46 43 42 53 49 5A 45 5D 3B 0D 0A 20 20    cb[FCBSIZE];..  
025D80:  70 61 64 28 66 63 62 2C 20 4E 55 4C 4C 2C 20 46    pad(fcb, NULL, F
025D90:  43 42 53 49 5A 45 29 3B 0D 0A 20 20 69 66 28 55    CBSIZE);..  if(U
025DA0:  6E 65 77 66 63 62 28 66 6E 2C 20 66 63 62 29 20    newfcb(fn, fcb) 
025DB0:  26 26 20 55 62 64 6F 73 28 44 45 4C 46 49 4C 2C    && Ubdos(DELFIL,
025DC0:  20 66 63 62 29 20 21 3D 20 32 35 35 29 0D 0A 20     fcb) != 255).. 
025DD0:  20 20 20 72 65 74 75 72 6E 20 28 4E 55 4C 4C 29       return (NULL)
025DE0:  3B 0D 0A 20 20 72 65 74 75 72 6E 20 28 45 52 52    ;..  return (ERR
025DF0:  29 3B 0D 0A 20 20 7D 0D 0A 23 61 73 6D 0D 0A 64    );..  }..#asm..d
025E00:  65 6C 65 74 65 20 20 65 71 75 20 20 20 20 75 6E    elete  equ    un
025E10:  6C 69 6E 6B 0D 0A 20 20 20 20 20 20 20 20 65 6E    link..        en
025E20:  74 72 79 20 20 64 65 6C 65 74 65 0D 0A 23 65 6E    try  delete..#en
025E30:  64 61 73 6D 0D 0A 3E 3E 3E 20 55 54 4F 49 2E 43    dasm..>>> UTOI.C
025E40:  20 33 36 32 0D 0A 23 69 6E 63 6C 75 64 65 20 73     362..#include s
025E50:  74 64 69 6F 2E 68 0D 0A 2F 2A 0D 0A 2A 2A 20 75    tdio.h../*..** u
025E60:  74 6F 69 20 2D 2D 20 63 6F 6E 76 65 72 74 20 75    toi -- convert u
025E70:  6E 73 69 67 6E 65 64 20 64 65 63 69 6D 61 6C 20    nsigned decimal 
025E80:  73 74 72 69 6E 67 20 74 6F 20 69 6E 74 65 67 65    string to intege
025E90:  72 20 6E 62 72 0D 0A 2A 2A 20 20 20 20 20 20 20    r nbr..**       
025EA0:  20 20 20 72 65 74 75 72 6E 73 20 66 69 65 6C 64       returns field
025EB0:  20 73 69 7A 65 2C 20 65 6C 73 65 20 45 52 52 20     size, else ERR 
025EC0:  6F 6E 20 65 72 72 6F 72 0D 0A 2A 2F 0D 0A 75 74    on error..*/..ut
025ED0:  6F 69 28 64 65 63 73 74 72 2C 20 6E 62 72 29 20    oi(decstr, nbr) 
025EE0:  20 63 68 61 72 20 2A 64 65 63 73 74 72 3B 20 20     char *decstr;  
025EF0:  69 6E 74 20 2A 6E 62 72 3B 20 20 7B 0D 0A 20 20    int *nbr;  {..  
025F00:  3B 0D 0A 20 20 20 20 72 65 74 75 72 6E 28 64 29    ;..    return(d)
025F10:  3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 2A 73 20 3D    ;..    }..  *s =
025F20:  20 30 3B 0D 0A 20 20 72 65 74 75 72 6E 28 64 29     0;..  return(d)
025F30:  3B 0D 0A 20 20 7D 0D 0A 3E 3E 3E 20 53 54 52 4E    ;..  }..>>> STRN
025F40:  43 4D 50 2E 43 20 33 33 32 0D 0A 2F 2A 0D 0A 2A    CMP.C 332../*..*
025F50:  2A 20 73 74 72 6E 63 6D 70 28 73 2C 74 2C 6E 29    * strncmp(s,t,n)
025F60:  20 2D 20 43 6F 6D 70 61 72 65 73 20 74 77 6F 20     - Compares two 
025F70:  73 74 72 69 6E 67 73 20 66 6F 72 20 61 74 20 6D    strings for at m
025F80:  6F 73 74 20 6E 0D 0A 2A 2A 20 20 20 20 20 20 20    ost n..**       
025F90:  20 20 20 20 20 20 20 20 20 20 20 63 68 61 72 61               chara
025FA0:  63 74 65 72 73 20 61 6E 64 20 72 65 74 75 72 6E    cters and return
025FB0:  73 20 61 6E 20 69 6E 74 65 67 65 72 0D 0A 2A 2A    s an integer..**
025FC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
025FD0:  20 20 3E 30 2C 20 3D 30 2C 20 6F 72 20 3C 30 20      >0, =0, or <0 
025FE0:  61 73 20 73 20 69 73 20 3E 74 2C 20 3D 74 2C 20    as s is >t, =t, 
025FF0:  6F 72 20 3C 74 2E 0D 0A 2A 2F 0D 0A 73 74 72 6E    or <t...*/..strn
026000:  63 6D 70 28 73 2C 20 74 2C 20 6E 29 20 63 68 61    cmp(s, t, n) cha
026010:  72 20 2A 73 2C 20 2A 74 3B 20 69 6E 74 20 6E 3B    r *s, *t; int n;
026020:  20 7B 0D 0A 20 20 77 68 69 6C 65 28 6E 20 26 26     {..  while(n &&
026030:  20 2A 73 3D 3D 2A 74 29 20 7B 0D 0A 20 20 20 20     *s==*t) {..    
026040:  69 66 20 28 2A 73 20 3D 3D 20 30 29 20 72 65 74    if (*s == 0) ret
026050:  75 72 6E 20 28 30 29 3B 0D 0A 20 20 20 20 2B 2B    urn (0);..    ++
026060:  73 3B 20 2B 2B 74 3B 20 2D 2D 6E 3B 0D 0A 20 20    s; ++t; --n;..  
026070:  20 20 7D 0D 0A 20 20 69 66 28 6E 29 20 72 65 74      }..  if(n) ret
026080:  75 72 6E 20 28 2A 73 20 2D 20 2A 74 29 3B 0D 0A    urn (*s - *t);..
026090:  20 20 72 65 74 75 72 6E 20 28 30 29 3B 0D 0A 20      return (0);.. 
0260A0:  20 7D 0D 0A 3E 3E 3E 20 53 54 52 4E 43 50 59 2E     }..>>> STRNCPY.
0260B0:  43 20 32 35 32 0D 0A 2F 2A 0D 0A 2A 2A 20 63 6F    C 252../*..** co
0260C0:  70 79 20 6E 20 63 68 61 72 61 63 74 65 72 73 20    py n characters 
0260D0:  66 72 6F 6D 20 73 6F 75 72 20 74 6F 20 64 65 73    from sour to des
0260E0:  74 20 28 6E 75 6C 6C 20 70 61 64 64 69 6E 67 29    t (null padding)
0260F0:  0D 0A 2A 2F 0D 0A 73 74 72 6E 63 70 79 28 64 65    ..*/..strncpy(de
026100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
026110:  20 00 01 00 02 09 52 E5 20 00 41 02 00 00 00 02     .....R. .A.....
026120:  20 00 46 02 00 00 00 02 20 00 42 02 00 00 00 02     .F..... .B.....
026130:  20 00 47 02 00 00 00 02 20 00 43 02 00 00 00 02     .G..... .C.....
026140:  20 00 48 02 00 00 00 02 20 00 44 02 00 00 00 02     .H..... .D.....
026150:  20 00 49 02 00 00 00 02 20 00 45 02 00 00 00 02     .I..... .E.....
026160:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026170:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026180:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026190:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0261F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
026200:  69 6E 74 20 64 2C 74 3B 20 64 3D 30 3B 0D 0A 20    int d,t; d=0;.. 
026210:  20 2A 6E 62 72 3D 30 3B 0D 0A 20 20 77 68 69 6C     *nbr=0;..  whil
026220:  65 28 28 2A 64 65 63 73 74 72 3E 3D 27 30 27 29    e((*decstr>='0')
026230:  26 28 2A 64 65 63 73 74 72 3C 3D 27 39 27 29 29    &(*decstr<='9'))
026240:  20 7B 0D 0A 20 20 20 20 74 3D 2A 6E 62 72 3B 74     {..    t=*nbr;t
026250:  3D 28 31 30 2A 74 29 20 2B 20 28 2A 64 65 63 73    =(10*t) + (*decs
026260:  74 72 2B 2B 20 2D 20 27 30 27 29 3B 0D 0A 20 20    tr++ - '0');..  
026270:  20 20 69 66 20 28 28 74 3E 3D 30 29 26 28 2A 6E      if ((t>=0)&(*n
026280:  62 72 3C 30 29 29 20 72 65 74 75 72 6E 20 45 52    br<0)) return ER
026290:  52 3B 0D 0A 20 20 20 20 64 2B 2B 3B 20 2A 6E 62    R;..    d++; *nb
0262A0:  72 3D 74 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 72    r=t;..    }..  r
0262B0:  65 74 75 72 6E 20 64 3B 0D 0A 20 20 7D 0D 0A 3E    eturn d;..  }..>
0262C0:  3E 3E 20 58 54 4F 49 2E 43 20 37 32 39 0D 0A 23    >> XTOI.C 729..#
0262D0:  69 6E 63 6C 75 64 65 20 73 74 64 69 6F 2E 68 0D    include stdio.h.
0262E0:  0A 2F 2A 0D 0A 2A 2A 20 78 74 6F 69 20 2D 2D 20    ./*..** xtoi -- 
0262F0:  63 6F 6E 76 65 72 74 20 68 65 78 20 73 74 72 69    convert hex stri
026300:  6E 67 20 74 6F 20 69 6E 74 65 67 65 72 20 6E 62    ng to integer nb
026310:  72 0D 0A 2A 2A 20 20 20 20 20 20 20 20 20 72 65    r..**         re
026320:  74 75 72 6E 73 20 66 69 65 6C 64 20 73 69 7A 65    turns field size
026330:  2C 20 65 6C 73 65 20 45 52 52 20 6F 6E 20 65 72    , else ERR on er
026340:  72 6F 72 0D 0A 2A 2F 0D 0A 78 74 6F 69 28 68 65    ror..*/..xtoi(he
026350:  78 73 74 72 2C 20 6E 62 72 29 20 63 68 61 72 20    xstr, nbr) char 
026360:  2A 68 65 78 73 74 72 3B 20 69 6E 74 20 2A 6E 62    *hexstr; int *nb
026370:  72 3B 20 7B 0D 0A 20 20 69 6E 74 20 64 2C 20 62    r; {..  int d, b
026380:  3B 20 20 63 68 61 72 20 2A 63 70 3B 0D 0A 20 20    ;  char *cp;..  
026390:  64 20 3D 20 2A 6E 62 72 20 3D 20 30 3B 20 63 70    d = *nbr = 0; cp
0263A0:  20 3D 20 68 65 78 73 74 72 3B 0D 0A 20 20 77 68     = hexstr;..  wh
0263B0:  69 6C 65 28 2A 63 70 20 3D 3D 20 27 30 27 29 20    ile(*cp == '0') 
0263C0:  2B 2B 63 70 3B 0D 0A 20 20 77 68 69 6C 65 28 31    ++cp;..  while(1
0263D0:  29 20 7B 0D 0A 20 20 20 20 73 77 69 74 63 68 28    ) {..    switch(
0263E0:  2A 63 70 29 20 7B 0D 0A 20 20 20 20 20 20 63 61    *cp) {..      ca
0263F0:  73 65 20 27 30 27 3A 20 63 61 73 65 20 27 31 27    se '0': case '1'
026400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0264A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0264B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0264C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0264D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0264E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0264F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0265A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0265B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0265C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0265D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0265E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0265F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026600:  3A 20 63 61 73 65 20 27 32 27 3A 0D 0A 20 20 20    : case '2':..   
026610:  20 20 20 63 61 73 65 20 27 33 27 3A 20 63 61 73       case '3': cas
026620:  65 20 27 34 27 3A 20 63 61 73 65 20 27 35 27 3A    e '4': case '5':
026630:  0D 0A 20 20 20 20 20 20 63 61 73 65 20 27 36 27    ..      case '6'
026640:  3A 20 63 61 73 65 20 27 37 27 3A 20 63 61 73 65    : case '7': case
026650:  20 27 38 27 3A 0D 0A 20 20 20 20 20 20 63 61 73     '8':..      cas
026660:  65 20 27 39 27 3A 20 20 20 20 20 20 20 20 20 20    e '9':          
026670:  20 20 20 20 20 20 20 20 20 20 20 62 3D 34 38 3B               b=48;
026680:  20 62 72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 63     break;..      c
026690:  61 73 65 20 27 41 27 3A 20 63 61 73 65 20 27 42    ase 'A': case 'B
0266A0:  27 3A 20 63 61 73 65 20 27 43 27 3A 0D 0A 20 20    ': case 'C':..  
0266B0:  20 20 20 20 63 61 73 65 20 27 44 27 3A 20 63 61        case 'D': ca
0266C0:  73 65 20 27 45 27 3A 20 63 61 73 65 20 27 46 27    se 'E': case 'F'
0266D0:  3A 20 62 3D 35 35 3B 20 62 72 65 61 6B 3B 0D 0A    : b=55; break;..
0266E0:  20 20 20 20 20 20 63 61 73 65 20 27 61 27 3A 20          case 'a': 
0266F0:  63 61 73 65 20 27 62 27 3A 20 63 61 73 65 20 27    case 'b': case '
026700:  63 27 3A 0D 0A 20 20 20 20 20 20 63 61 73 65 20    c':..      case 
026710:  27 64 27 3A 20 63 61 73 65 20 27 65 27 3A 20 63    'd': case 'e': c
026720:  61 73 65 20 27 66 27 3A 20 62 3D 38 37 3B 20 62    ase 'f': b=87; b
026730:  72 65 61 6B 3B 0D 0A 20 20 20 20 20 20 20 64 65    reak;..       de
026740:  66 61 75 6C 74 3A 20 72 65 74 75 72 6E 20 28 63    fault: return (c
026750:  70 20 2D 20 68 65 78 73 74 72 29 3B 0D 0A 20 20    p - hexstr);..  
026760:  20 20 20 20 7D 0D 0A 20 20 20 20 69 66 28 64 20        }..    if(d 
026770:  3C 20 34 29 20 2B 2B 64 3B 20 65 6C 73 65 20 72    < 4) ++d; else r
026780:  65 74 75 72 6E 20 28 45 52 52 29 3B 0D 0A 20 20    eturn (ERR);..  
026790:  20 20 2A 6E 62 72 20 3D 20 28 2A 6E 62 72 20 3C      *nbr = (*nbr <
0267A0:  3C 20 34 29 20 2B 20 28 2A 63 70 2B 2B 20 2D 20    < 4) + (*cp++ - 
0267B0:  62 29 3B 0D 0A 20 20 20 20 7D 0D 0A 20 20 7D 0D    b);..    }..  }.
0267C0:  0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0267D0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0267E0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0267F0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
026800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0268A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0268B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0268C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0268D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0268E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0268F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0269A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0269B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0269C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0269D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0269E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0269F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026B00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026B10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026B20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026B30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026B40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026B50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026B60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026B70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026B80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026B90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026BA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026BB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026BC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026BD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026BE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026BF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0270A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0270B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0270C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0270D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0270E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0270F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0271A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0271B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0271C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0271D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0271E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0271F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0272A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0272B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0272C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0272D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0272E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0272F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0273A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0273B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0273C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0273D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0273E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0273F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
027410:  21 00 01 00 02 09 52 E5 21 00 41 02 00 00 00 02    !.....R.!.A.....
027420:  21 00 46 02 00 00 00 02 21 00 42 02 00 00 00 02    !.F.....!.B.....
027430:  21 00 47 02 00 00 00 02 21 00 43 02 00 00 00 02    !.G.....!.C.....
027440:  21 00 48 02 00 00 00 02 21 00 44 02 00 00 00 02    !.H.....!.D.....
027450:  21 00 49 02 00 00 00 02 21 00 45 02 00 00 00 02    !.I.....!.E.....
027460:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
027470:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
027480:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
027490:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0274F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
027500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0275A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0275B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0275C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0275D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0275E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0275F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0276A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0276B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0276C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0276D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0276E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0276F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0277A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0277B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0277C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0277D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0277E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0277F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0278A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0278B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0278C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0278D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0278E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0278F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0279A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0279B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0279C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0279D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0279E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0279F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027B00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027B10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027B20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027B30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027B40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027B50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027B60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027B70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027B80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027B90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027BA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027BB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027BC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027BD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027BE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027BF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
027FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0280A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0280B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0280C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0280D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0280E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0280F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0281A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0281B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0281C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0281D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0281E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0281F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0282A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0282B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0282C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0282D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0282E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0282F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0283A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0283B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0283C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0283D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0283E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0283F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0284A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0284B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0284C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0284D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0284E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0284F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0285A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0285B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0285C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0285D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0285E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0285F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0286A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0286B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0286C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0286D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0286E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0286F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
028710:  22 00 01 00 02 09 52 E5 22 00 41 02 00 00 00 02    ".....R.".A.....
028720:  22 00 46 02 00 00 00 02 22 00 42 02 00 00 00 02    ".F.....".B.....
028730:  22 00 47 02 00 00 00 02 22 00 43 02 00 00 00 02    ".G.....".C.....
028740:  22 00 48 02 00 00 00 02 22 00 44 02 00 00 00 02    ".H.....".D.....
028750:  22 00 49 02 00 00 00 02 22 00 45 02 00 00 00 02    ".I.....".E.....
028760:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028770:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028780:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028790:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0288A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0288B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0288C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0288D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0288E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0288F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0289A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0289B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0289C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0289D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0289E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0289F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028B00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028B10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028B20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028B30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028B40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028B50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028B60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028B70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028B80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028B90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028BA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028BB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028BC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028BD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028BE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028BF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0290A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0290B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0290C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0290D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0290E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0290F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0291A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0291B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0291C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0291D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0291E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0291F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0292A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0292B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0292C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0292D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0292E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0292F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0293A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0293B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0293C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0293D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0293E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0293F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0294A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0294B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0294C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0294D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0294E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0294F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0295A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0295B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0295C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0295D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0295E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0295F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0296A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0296B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0296C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0296D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0296E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0296F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0297A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0297B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0297C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0297D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0297E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0297F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0298A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0298B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0298C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0298D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0298E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0298F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0299A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0299B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0299C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0299D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0299E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0299F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
029A10:  23 00 01 00 02 09 52 E5 23 00 41 02 00 00 00 02    #.....R.#.A.....
029A20:  23 00 46 02 00 00 00 02 23 00 42 02 00 00 00 02    #.F.....#.B.....
029A30:  23 00 47 02 00 00 00 02 23 00 43 02 00 00 00 02    #.G.....#.C.....
029A40:  23 00 48 02 00 00 00 02 23 00 44 02 00 00 00 02    #.H.....#.D.....
029A50:  23 00 49 02 00 00 00 02 23 00 45 02 00 00 00 02    #.I.....#.E.....
029A60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029A70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029A80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029A90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029AF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029B00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029B10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029B20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029B30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029B40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029B50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029B60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029B70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029B80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029B90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029BA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029BB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029BC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029BD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029BE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029BF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
029FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A0A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A0B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A0C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A0D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A0E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A0F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A3A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A3B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A3C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A3D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A3E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A3F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A4A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A4B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A4C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A4D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A4E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A4F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A5A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A5B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A5C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A5D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A5E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A5F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A6A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A6B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A6C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A6D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A6E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A6F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A9A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A9B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A9C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A9D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A9E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A9F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AA00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AA10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AA20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AA30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AA40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AA50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AA60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AA70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AA80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AA90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AAA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AAB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AAC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AAD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AAE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AAF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AB00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AB10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AB20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AB30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AB40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AB50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AB60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AB70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AB80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AB90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ABA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ABB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ABC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ABD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ABE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ABF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AC00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AC10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AC20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AC30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AC40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AC50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AC60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AC70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ACA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ACB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ACC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ACD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ACE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ACF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AD00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02AD10:  24 00 01 00 02 09 52 E5 24 00 41 02 00 00 00 02    $.....R.$.A.....
02AD20:  24 00 46 02 00 00 00 02 24 00 42 02 00 00 00 02    $.F.....$.B.....
02AD30:  24 00 47 02 00 00 00 02 24 00 43 02 00 00 00 02    $.G.....$.C.....
02AD40:  24 00 48 02 00 00 00 02 24 00 44 02 00 00 00 02    $.H.....$.D.....
02AD50:  24 00 49 02 00 00 00 02 24 00 45 02 00 00 00 02    $.I.....$.E.....
02AD60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AE00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AE10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AE20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AE30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AE40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AE50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AE60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AE70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AE80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AE90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AEA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AEB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AEC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AEE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AEF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AF00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AF10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AF20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AF30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AF40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AF50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AF60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AF70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AF80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AF90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AFA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AFB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AFC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AFD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AFE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02AFF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B0A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B0B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B0C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B0D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B0E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B0F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B3A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B3B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B3C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B3D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B3E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B3F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B4A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B4B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B4C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B4D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B4E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B4F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B5A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B5B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B5C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B5D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B5E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B5F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B6A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B6B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B6C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B6D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B6E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B6F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B9A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B9B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B9C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B9D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B9E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02B9F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BA00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BA10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BA20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BA30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BA40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BA50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BA60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BA70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BA80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BA90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BAA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BAB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BAC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BAD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BAE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BAF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BB00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BB10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BB20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BB30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BB40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BB50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BB60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BB70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BB80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BB90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BBA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BBB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BBC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BBD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BBE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BBF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BE00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BE10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BE20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BE30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BE40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BE50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BE60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BE70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BE80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BE90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BEA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BEB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BEC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BEE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BEF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BFA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BFB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BFC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BFD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BFE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BFF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02C010:  25 00 01 00 02 09 52 E5 25 00 41 02 00 00 00 02    %.....R.%.A.....
02C020:  25 00 46 02 00 00 00 02 25 00 42 02 00 00 00 02    %.F.....%.B.....
02C030:  25 00 47 02 00 00 00 02 25 00 43 02 00 00 00 02    %.G.....%.C.....
02C040:  25 00 48 02 00 00 00 02 25 00 44 02 00 00 00 02    %.H.....%.D.....
02C050:  25 00 49 02 00 00 00 02 25 00 45 02 00 00 00 02    %.I.....%.E.....
02C060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C3A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C3B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C3C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C3D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C3E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C3F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C4A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C4B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C4C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C4D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C4E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C4F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C5A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C5B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C5C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C5D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C5E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C5F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C6A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C6B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C6C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C6D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C6E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C6F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C9A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C9B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C9C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C9D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C9E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C9F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CAA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CAB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CAC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CAD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CAE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CAF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CBA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CBB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CBC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CBD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CBE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CBF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CDA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CDB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CDC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CDD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CDE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CDF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CEA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CEB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CEC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CEE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CEF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CFA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CFB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CFC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CFD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CFE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CFF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D0A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D0B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D0C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D0D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D0E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D0F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02D310:  26 00 01 00 02 09 52 E5 26 00 41 02 00 00 00 02    &.....R.&.A.....
02D320:  26 00 46 02 00 00 00 02 26 00 42 02 00 00 00 02    &.F.....&.B.....
02D330:  26 00 47 02 00 00 00 02 26 00 43 02 00 00 00 02    &.G.....&.C.....
02D340:  26 00 48 02 00 00 00 02 26 00 44 02 00 00 00 02    &.H.....&.D.....
02D350:  26 00 49 02 00 00 00 02 26 00 45 02 00 00 00 02    &.I.....&.E.....
02D360:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D370:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D380:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D390:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D3F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D4A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D4B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D4C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D4D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D4E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D4F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D5A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D5B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D5C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D5D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D5E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D5F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D9A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D9B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D9C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D9D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D9E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D9F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DAA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DAB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DAC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DAD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DAE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DAF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DBA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DBB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DBC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DBD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DBE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DBF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DCA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DCB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DCC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DCD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DCE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DCF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DDA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DDB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DDC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DDD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DDE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DDF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DEA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DEB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DEC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DEE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DEF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DFA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DFB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DFC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DFD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DFE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DFF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E0A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E0B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E0C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E0D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E0E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E0F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02E610:  27 00 01 00 02 09 52 E5 27 00 41 02 00 00 00 02    '.....R.'.A.....
02E620:  27 00 46 02 00 00 00 02 27 00 42 02 00 00 00 02    '.F.....'.B.....
02E630:  27 00 47 02 00 00 00 02 27 00 43 02 00 00 00 02    '.G.....'.C.....
02E640:  27 00 48 02 00 00 00 02 27 00 44 02 00 00 00 02    '.H.....'.D.....
02E650:  27 00 49 02 00 00 00 02 27 00 45 02 00 00 00 02    '.I.....'.E.....
02E660:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E670:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E680:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E690:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02F910:  28 00 01 01 00 01 52 E5 28 00 01 00 20 20 80 00    (.....R.(...  ..
02F920:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F930:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F940:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F950:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F960:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F970:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F980:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F990:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F9A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F9B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F9C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F9D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F9E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F9F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02FA00:  01 02 03 04 05 00 03 00 30 80 00 00 10 00 88 04    ........0.......
02FA10:  09 17 48 02 00 01 00 35 32 33 2D 30 33 37 43 20    ..H....523-037C 
02FA20:  20 20 20 20 20 20 20 53 43 48 4E 45 49 44 45 52           SCHNEIDER
02FA30:  20 44 55 50 20 33 22 2D 31 30 30 2F 34 30 20 32     DUP 3"-100/40 2
02FA40:  53 20 44 44 20 53 53 00 00 20 20 20 20 20 20 20    S DD SS..       
02FA50:  20 20 20 20 20 20 20 00 00 00 00 37 30 32 39 32           ....70292
02FA60:  2D 30 30 77 00 04 00 77 00 8E 01 00 00 00 00 00    -00w...w........
02FA70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02FA80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02FA90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02FAA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02FAB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02FAC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02FAD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02FAE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02FAF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
RESULT OF SEARCH :
PRO=20   CHEA=0   COD=35   MUSI=0   COP=7   GRA=12   WRIT=42   198=3   199=0   STARTER=0   KBI=0   CAAV=0   L.TOURNIER=0  
EXTENDED CPC DSK File    SAMdisk150708*  RAFBGCHDIEi33!"!5G2$!DM!'#(DMi3B!0PY  F
ailed to load the configuration sector   $Y$*(&Y  Illegal configuration sector  
 $*"*"2C!2! !d#(GN#!'F!-F!3F#(PWF#N#8Y  Expansion buffer full or illegal token s
pecified   $ OGl  #$O1 #V!Kx("py2$SKC!'K8*R"(8 K!! &#(V#s#r#z  y2!C#V#!5 ) R(0+"
o&"MDGG  KC2O!*"$'! #7 0#O$OSC.SYS wurde nicht gefunden.  BASICirgendeine Taste 
druecken BASI$OSC    SYS52DjDj   $wwCP/M 2.2 - Amstrad Consumer Electronics plc 
 $ BO BO 11111111111111111111111111111111111111111111111111111111111111111111111
1111111111111111111111111f222222222222222222222222222222222222222222222222222222
22222222222222222222222222222222222222222222222233333333333333333333333333334£ H
!62 !6/H!6 !/HH!w20E!S!W6£ z!6cm!c6z!6l , HH 2£E£12v!q!*8!*6!q  !p+q.* !q*&!p+q*
2i3B!0PY  Failed to load the configuration sector   $Y$*(&Y  Illegal configurati
on sector   $*"*"2C!2! !d#(GN#!'F!-F!3F#(PWF#N#8Y  Expansion buffer full or ille
gal token specified   $ OGl  #$OX                COPYRIGHT (C) 1979, DIGITAL RES
EARCH     # 22 !22a2!B!6#5! )!F#x0ww!"!6(!#* ""# . Oo$!Y2*O"Gwx2p0#*6w0#6 .0#*6w
0#6 #6"# xDIR ERA TYPESAVEREN USER!yO# Ty#O321y2y21A92.!#fow!v"!READ ERRORNO FIL
E  RAFBGCHDIE! 3#0 WxxG  # 3x#B!Y2!!T! 6#O KAxK K  xBR9!5#Y#"TALL (Y/N)T!6!w4!Yt
fT2o&)+!"**#" 2yWyOxOxG*V5dw N N#Fy*#u*#DM*6#x**s#r*6#6A#$2Ek/GyO2!q*C"*JOyx s-N
-# S2E!wTD6k-PYy5*zBK5dy!NO SPACETy!B*Os#"sG!Ypsp2mfFILE EXISTS  2) T!k!qqf!222!
!B! #0O#Cx21)fzBAD LOADCOMf !$$$     SUB *COT*CwD-'-*C Ox!N!Fwyx*Cw#+w#w+2E22i*C
w# # w2!E5T*C!"C"C!w# F! wx2*CwG!4$Zx22!Z2Ew"C2!"E9"1A22!ty)K!G#V*CE ,&-AGMS!!!!
Bdos Err On   $Bad Sector$Select$File R/O$BA2!6O   EB2 b* y!4 5yy5 6yHOyH H #H! 
H H H $O2*CN#  22T*CGwn2ODMH"*CddslOs#rEy*Ww#*"*G#"!w4!iwZ!E262*C!!#OG#n,-.! w!y
G!x.E!q!pQE.$.Ei62ExN!OGG!G*C!r#r#ry#x#x2 p&+72H! w!5Nkx#Nx !2 ! 5#wOxp Hy!qMD#2
E!#V w#PBO#V#"##"##"##"!O*!O*!66*w#w*w#w'*!J*""!N#F*#V*#foyx*zW+*s+p+q-*C !!q#p#
w*BOYG*MD"£!Bw!2*C2uB22wEA*Cw"!""2B!"!rQQQrQ*"CQ-QQQrQ$Q*)B"*)*)Q*"EA2AQQQ*C//*W
£*"£og"*C6w2E**EDQ2yx#*DM*s#r*s#ryOxG*0MD!!N EGO S*Cqn&#VO"**)"Oo"*C*C!222Oww go
*#  )BO!yoxg*BO!N#F"*#*s#r!J! J*o$*Ci6iw**#zr+sozg****,w!!N#F$**O!#!  RAFBGCHDIE
PIP     COMCC      ARC  CC      ARC !"#$%&'()CC      ARC*+,-./0123456789CC      
ARCABCDEFGHICC      ARCJKLCLIB    ARCMNOPQRSTUVWXYZCLIB    ARCabcdefghijklCLIB  
  ARCmnopqrstuvwxyzCLIB    ARCXABORTED$BAD PARAMETER$INVALID USER NUMBER$RECORD 
TOO LONG$INVALID DIGIT$END OF FILE, CTL-Z$CHECKSUM ERROR$CORRECT ERROR, TYPE RET
URN OR CTL-Z$INVALID FORMAT$HEX$$$$NO DIRECTORY SPACE$NO FILE$COM$START NOT FOUN
D$QUIT NOT FOUND$CANNOT CLOSE DESTINATION FILE$DESTINATION IS R/O, DELETE (Y/N)$
**NOT DELETED**$$$$$$$NOT FOUND$COPYING -$REQUIRES CP/M 2.0 OR NEWER FOR OPERATI
ON.$UNRECOGNIZED DESTINATION$CANNOT WRITE$INVALID PIP FORMAT$CANNOT READ$INVALID
 SEPARATOR$1 2L M92212!o6+6+6!6#6!6#6G*o.!N6*M!K6!6!6+6' $2K x'! '! $ $!N6' !Cw!
6c!6/!/H2£ H!62 !6/H!6 !/HH!w20E!S!W6£ z!6cm!c6z!6l , HH 2£E£12v!q!*8!*6!q  !p+q
.* !q*&!p+q*2!p+q*2!p+q*22!p+q*!p+q*!p+q*!p+q*2!p+q*!p+q* !q*& *M*M!p+q*!!p+q*"!
p+q*$!6 !kp+q*j!qp+q/*pDM9 M2rN!r!r*r&N!r4!6 .!ws+p+q+p+qw2wN *s*u w*s#"s*u#"u' 
!"*M7!x6!x **DM2y y *"*62x *"!x4d !"/!j2 !"*KM'!z6!z1*(INP/OUTSPACE)(INP/OUTSPAC
E)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUT
SPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP/OUTSPACE)(INP
/OUTSPACE)(INP/OUTSPACE)   COPYRIGHT (C) 1979, DIGITAL RESEARCH,  PIP VERS 1.5$$
$     SUB ., INPIRDPTRUR1UR2RDROUTLPTUL1PRNLSTPTPUP1UP2PUNTTYCRTUC1CONNULEOFDISK
 READ ERROR$DISK WRITE ERROR$VERIFY ERROR$NOT A CHARACTER SINK$READER STOPPING  
$NOT A CHARACTER SOURCE$  RAFBGCHDIE"*DM' *"!z4 e!"!z6!z'2*H#"H!6!*&4 2!4m*"!z4I
'2!"!q !4!SS!2*£M!#V *w*#"  *M !6q !6q !6q *& !6 !6  !60 *& !6 !6 !6 *&  .147FPf
qSQHIN22 H"2202Oc!6202O*&O*&!sc*&Pw!22!6!£6'!£E!£4!p+q*0 !r+s+p+q*$7**H&*#"*#" 2
R!6!62!6H9!6-e!622-"2!!52!2!q" *Mn c4 *Mn 2!cQ !c2 !cw!n !5 Y   !6!q!lw    0O !q
O O !62lo'2on'2nm'2m*mM£ *nM£ *oM£     *2D" ** *&"!qUYY2!62!!6 ! !6Q£H!6*M  !6!q
a/z!-!p+q,!6*DM9!6z 2W!6D*&Lw2Ov*20O0AOA H!wOidV2O2!X!6!O!LNE!4 E E/.*&L6$L9k9.X
*KM020 020121''!G6!"!"7*Mn/a/H!6!&6/H2!qA/Z!/H8 2OmW!QHmd9!62*M!E#VO **2*#"m2m2m
!6m!6m!6m2mm!62m!62m!62m!62m'22T£2!£6*ME2£22 2i2d*M2*"!b!!0!qE24J!46*a!44EJ *KM'
!36'n0f9OY#9.3'.020'''7 6'!jA+!s!"1!"**"n"Dn""!Q2X!W*MEO2Mc!6#6!)*&P"HH*M!(2% !F
!5+N!2!42T!b*bMzb2!b62!*M!6!6 (!q!wO!2*&w!!4!6N2N! *N&N2 !p+q!6!6+6 !6 SM!6g8N2M
*M8p!6!6!6!*&P6!4z!6!6#6#6!6*M8*g2,A2OHH"!6!4jYO jM*"S*" 3bl*M1!""7*M!"H*#"/9.*#
"!' !'6!36' 1/!aE*#"zC9I.!6!*&'2 y.*M!4Q!22!2K2K!!K !p+q**M8)!N5!65!6#6!!62O/!O!
T*MHK!6!N522!44!6.2O8*g !N5!6%2*6 *6!q!6 !d*&I!4A2O*w!6!q!6!g!q*&*!622 HA2O 2  R
AFBGCHDIEDM!  H-N2Oogozg#V)))ozg#V) d#Vgo nozgOozgiN#Fogo&ogH ' !'6!36' 1/!aE*#"
zC9I.!6!*&'2 y.*M!4Q!22!2K2K!!K !p+q*YMTBSZ   3050  /* NUMLOCS*SYMAVG + NUMGLBS*
SYMMAX */     /*  ** System wide name size (for symbols)  */  #define NAMESIZE 9
  #define NAMEMAX  8     /*  ** possible entries for "IDENT"  */  #define LABEL 
   0  #define VARIABLE 1  #define ARRAY    2  #define POINTER  3  #define FUNCTI
ON 4     /*  ** possible entries for "TYPE"  **    low order 2 bits make type un
ique within length  **    high order bits give length of object  */  /*      LAB
EL   0 */  #define CCHAR   (12)  #define CINT    (BPW2)     /*  ** possible entr
ies for "CLASS"  */  /*      LABEL     0 */  #define STATIC    1  #define AUTOMA
TIC 2  #define EXTERNAL  3  #define AUTOEXT   4    /*  ** "switch" table  */  #d
efine SWSIZ   (2*BPW)  #define SWTABSZ (60*SWSIZ)     /*  ** "while" statement q
ueue  */  #define WQTABSZ  30  #define WQSIZ     3  #define WQMAX   (wq+WQTABSZ-
WQSIZ)     /*  ** entry offsets in while queue  */  #define WQSP    0  #define W
QLOOP  1  #define WQEXIT  2     /*  ** literal pool  */  #define LITABSZ 800  #d
efine LITMAX  (LI STDIO.H 296  /*  ** STDIO.H -- Standard Small-C Definitions  *
/  #define stdin    0  #define stdout   1  #define stderr   2  #define ERR   (-2
)  #define EOF   (-1)  #define YES      1  #define NO       0  #define NULL     
0  #define CR      13  #define LF      10  #define BELL     7  #define SPACE  ' 
'  #define NEWLINE LF   NOTICE.H 99  #define VERSION "Version 2.1 (Rev. 67)n"  #
define CRIGHT1 "Copyright 1982, 1983 J. E. Hendrixnn"   CC.DEF 2770  /*  ** Smal
l-C Compiler Symbol Definitions  */  TABSZ-1)     /*  ** input line  */  #define
 LINEMAX  127  #define LINESIZE 128    /*  ** output staging buffer size  */  #d
efine STAGESIZE   800  #define STAGELIMIT  (STAGESIZE-1)     /*  ** macro (defin
e) pool  */  #define MACNBR   130  #define MACNSIZE (MACNBR*(NAMESIZE+2))  #defi
ne MACNEND  (macn+MACNSIZE)  #define MACQSIZE (MACNBR*7)  #define MACMAX   (MACQ
SIZE-1)     /*  ** statement types  */  #define STIF      1  #define STWHILE   2
  #define STRETURN  3  #define STBREAK   4  #define STCONT    5  #def  /*  ** co
mpile options  */  #define NOCCARGC/* no argument counts */  #define SEPARATE/* 
compile separately */  #define OPTIMIZE/* compile output optimizer */  #define D
YNAMIC /* allocate memory dynamically */  #define COL/* terminate labels with a 
colon */  /* #define UPPER/* force symbols to upper case */  #define LINK/* will
 use with linking loader */    /*  ** machine dependent parameters  */  #define 
BPW     2/* bytes per word */  #define LBPW    1/* log2(BPW) */  #define SBPC   
 1/* stacine STASM     6  #define STEXPR    7  #define STDO      8/* compile "do
" logic */  #define STFOR     9/* compile "for" logic */  #define STSWITCH 10/* 
compile "switch/case/default" logic */  #define STCASE   11  #define STDEF    12
  #define STGOTO   13/* compile "goto" logic */  #define STLABEL  14   CC1.C 329
9  /*  ** Small-C Compiler Part 1  */  #include stdio.h  #include "notice.h"  #i
nclude "cc.def"    /*  ** miscellaneous storage  */  char  #ifdef OPTIMIZE    op
timize,/* optimize output of stk bytes per character */  #define ERRCODE 7/* op 
sys return code */     /*  ** symbol table format  */  #define IDENT    0  #defi
ne TYPE     1  #define CLASS    2  #define OFFSET   3  #define NAME     5  #defi
ne OFFSIZE (NAME-OFFSET)  #define SYMAVG  10  #define SYMMAX  14    /*  ** symbo
l table parameters  */  #define NUMLOCS   25  #define STARTLOC  symtab  #define 
ENDLOC   (symtab+(NUMLOCS*SYMAVG))  #define NUMGLBS   200  #define STARTGLB  END
LOC  #define ENDGLB   (ENDLOC+((NUMGLBS-1)*SYMMAX))  #define S  RAFBGCHDIEaging 
buffer */  #endif    alarm,/* audible alarm on errors */    monitor,/* monitor f
unction headers */    pause,/* pause for operator on errors */  #ifdef DYNAMIC  
 *stage,/* output staging buffer */   *symtab,/* symbol table */   *litq,/* lite
ral pool */   *macn,/* macro name buffer */   *macq,/* macro string buffer */   
*pline,/* parsing buffer */   *mline,/* macro buffer */  #else    stageSTAGESIZE
,    symtabSYMTBSZ,    litqLITABSZ,    macnMACNSIZE,    macqMACQSIZE,    plineL,
/* fd # for output file */    files,/* non-zero if file list specified on cmd li
ne */    filearg,/* cur file arg index */    glbflag,/* non-zero if internal glo
bals */    ctext,/* non-zero to intermix c-source */    ccode,/* non-zero while 
parsing c-code */  /* zero when passing assembly code */    listfp,/* file point
er to list device */    lastst,/* last executed statement type */   *iptr/* work
 ptr to any int buffer */    #include "cc11.c"  #include "cc12.c"  #include "cc1
3.c"    #ifndef SEINESIZE,    mlineLINESIZE,    swqSWTABSZ,  #endif   *line,/* p
oints to pline or mline */   *lptr,/* ptr to either */   *glbptr,/* ptrs to next
 entries */   *locptr,/* ptr to next local symbol */   *stagenext,/* next addr i
n stage */   *stagelast,/* last addr in stage */    quote2,/* literal string for
 '"' */   *cptr,/* work ptrs to any char buffer */   *cptr2,   *cptr3,    msname
NAMESIZE,/* macro symbol name array */    ssnameNAMESIZE/* static symbol name ar
ray */  int  #ifdef STGOTPARATE  #include "cc21.c"  #include "cc22.c"  #include 
"cc31.c"  #include "cc32.c"  #include "cc33.c"  #include "cc41.c"  #include "cc4
2.c"  #endif   CC11.C 5409  /*  ** execution begins here  */  main(argc, argv) i
nt argc, *argv     argcsargc    argvsargv    fputs("Small-C Compiler, ", stderr)
 fputs(VERSION, stderr)    fputs(CRIGHT1, stderr)  #ifdef DYNAMIC    swnextcallo
c(SWTABSZ, 1)    swendswnext+((SWTABSZ-SWSIZ)1)    stagecalloc(STAGESIZE, 1)    
stagelaststage+STAGELIMIT    wqcalO    nogo,/*  0 disables goto statements */   
 noloc,/*  0 disables block locals */  #endif    op16,/* function addresses of b
inary operators */    op216,/* same for unsigned operators */    opindex,/* inde
x to matched operator */    opsize,/* size of operator in bytes */    swactive,/
* true inside a switch */    swdefault,/* default label #, else 0 */   *swnext,/
* address of next entry */   *swend,/* address of last table entry */  #ifdef DY
NAMIC   *wq,/* while queue */  #else    wqWQTAloc(WQTABSZ, BPW)    litqcalloc(LI
TABSZ, 1)    macncalloc(MACNSIZE, 1)    macqcalloc(MACQSIZE, 1)    plinecalloc(L
INESIZE, 1)    mlinecalloc(LINESIZE, 1)  #else    swend(swnextswq)+SWTABSZ-SWSIZ
    stagelaststage+STAGELIMIT  #endif    swactive/* not in switch */    stagenex
t/* direct output mode */    iflevel/* #if... nesting level  0 */    skiplevel/*
 #if... not encountered */    macptr/* clear the macro pool */    csp/* stack pt
r (relative) */    errflag/* not skippiBSZ,  #endif    argcs,/* static argc */  
 *argvs,/* static argv */   *wqptr,/* ptr to next entry */    litptr,/* ptr to n
ext entry */    macptr,/* macro buffer index */    pptr,/* ptr to parsing buffer
 */    oper,/* address of binary operator function */    ch,/* current character
 of line being scanned */    nch,/* next character of line being scanned */    d
eclared,/* # of local bytes declared, else -1 when done */    iflevel,/* #if... 
nest level */    skiplevel,/* level at which #if... skng errors till "" */    eo
f/* not eof yet */    ncmp/* not in compound statement */    files    filearg   
 quote10    func1/* first function */    ccode1/* enable preprocessing */    wqp
trwq/* clear while queue */    quote0'"'/* fake a quote literal */    inputinput
2EOF    ask()/* get user options */    openfile()/* and initial input file */   
 preprocess()/* fetch first line */  #ifdef DYNAMIC    symtabcalloc((NUMLOCS*SYM
AVG + NUMGLBS*SYMMAX), 1)  #endif    locipping started */    func1,/* true for f
irst function */    nxtlab,/* next avail label # */    litlab,/* label # assigne
d to literal pool */    beglab,/* beginning label -- first function */    csp,/*
 compiler relative stk ptr */    argstk,/* function arg sp */    argtop,    ncmp
,/* # open compound statements */    errflag,/* non-zero after 1st error in stat
ement */    eof,/* set non-zero on final input eof */    input,/* fd # for input
 file */    input2,/* fd # for "include" file */    output  RAFBGCHDIEptrSTARTLO
C    glbptrSTARTGLB    glbflag1    ctext0    header()/* intro code */    setops(
)/* set values in op arrays */    parse()/* process ALL input */    outside()/* 
verify outside any function */    trailer()/* follow-up code */    fclose(output
)        /*  ** process all input text  **  ** At this level, only static declar
ations,  **      defines, includes and function  **      definitions are legal..
.  */  parse()     while (eof0)       if(amatch("extern", 6))   dodeclareef OPTI
MIZE      sout(" -o", stderr)  #endif  #ifndef LINK      sout(" -b#", stderr)  #
endif      sout(NEWLINE, stderr)      abort(ERRCODE)              /*  ** input a
nd output file opens  */  openfile() /* entire function revised */    char outfn
15    int i, j, ext    inputEOF    while(getarg(++filearg, pline, LINESIZE, argc
s, argvs)!EOF)       if(pline0'-') continue      ext  NO      i  -1      j  0   
   while(pline++i)         if(plinei  '.') ext  YES break    (EXTERNAL)      els
e if(dodeclare(STATIC))      else if(match("#asm"))    doasm()      else if(matc
h("#include"))doinclude()      else if(match("#define")) addmac()      else     
                 newfunc()      blanks()/* force eof if pending */              
/*  ** dump the literal pool  */  dumplits(size) int size     int j, k    k0    
while (klitptr)       poll(1)/* allow program interruption */      defstorage(si
ze)      j10      while(j--)         outdec(getint(litq+k, size))      if(j  10)
 outfnj++  plinei              if(!ext)         strcpy(pline + i, ".C")         
     input  mustopen(pline, "r")      if(!files && isatty(stdout))         strcp
y(outfn + j, ".MAC")        output  mustopen(outfn, "w")              filesYES  
    kill()      return          if(files++) eofYES    else inputstdin    kill() 
       /*  ** open a file with error checking  */  mustopen(fn, mode) char *fn, 
*mode     int fd    if(fd  fopen(fn, mode)) return fd    sout("op      kk+size  
      if ((j0)(klitptr)) nl() break        outbyte(',')                      /* 
 ** dump zeroes for default initial values  */  dumpzero(size, count) int size, 
count     int j    while (count  0)       poll(1)/* allow program interruption *
/      defstorage(size)      j30      while(j--)         outdec(0)        if ((-
-count  0)(j0)) nl() break        outbyte(',')                      /*  ** verif
y compile ends outside any function  */  outside()     en error on ", stderr)   
 lout(fn, stderr)    abort(ERRCODE)        setops()     op2 0     op 0  ffor/* h
eir5 */    op2 1     op 1 ffxor/* heir6 */    op2 2     op 2 ffand/* heir7 */   
 op2 3     op 3  ffeq/* heir8 */    op2 4     op 4  ffne    op2 5ule op 5  ffle/
* heir9 */    op2 6uge op 6  ffge    op2 7ult op 7  fflt    op2 8ugt op 8  ffgt 
   op2 9     op 9 ffasr/* heir10 */    op210     op10 ffasl    op211 if (ncmp) e
rror("no closing bracket")        /*  ** get run options  */  ask()     int i   
 ilistfpnxtlab0    outputstdout  #ifdef OPTIMIZE    optimize  #endif    alarmmon
itorpauseNO    linemline    while(getarg(++i, line, LINESIZE, argcs, argvs)!EOF)
       if(line0!'-') continue      if((toupper(line1)'L')&(isdigit(line2))&(line
3' '))         listfpline2-'0'        continue              if(line2' ')        
 if(toupper(line1)'A')           alarmYES            op11 ffadd/* heir11 */    o
p212     op12 ffsub    op213     op13ffmult/* heir12 */    op214     op14 ffdiv 
   op215     op15 ffmod         CC12.C 6788  /*  ** open an include file  */  do
include()      char *cp    blanks()/* skip over to name */    switch (*lptr)    
   case '"' case '' cp  ++lptr      while(*cp)         switch(*cp) case '"' case
 '' *cpNULL        ++cp                  if((input2fopen(lptr,"r"))NULL)       i
nput2EOF    continue                  if(toupper(line1)'M')           monitorYES
          continue            #ifdef OPTIMIZE        if(toupper(line1)'O')      
     optimizeYES          continue            #endif        if(toupper(line1)'P'
)           pauseYES          continue                    #ifndef LINK      if(t
oupper(line1)'B')         bump(0) bump(2)        if(number(&nxtlab)) continue   
       #endif      sout("usage cc file... -m -a -p -l#", stderr)  #ifd  RAFBGCHD
IE     error("open failure on include file")          kill()/* clear rest of lin
e */  /* so next read will come from */  /* new file (if open) */        /*  ** 
test for global declarations  */  dodeclare(class) int class     if(amatch("char
",4))       declglb(CCHAR, class)      ns()      return 1          else if((amat
ch("int",3))(classEXTERNAL))       declglb(CINT, class)      ns()      return 1 
         return 0        /*  ** delcare a static variable  */  declglb(type, cla
ss         else init(size, ident, &dim)          if((dim  -1)&(dimsavedim))     
   stowlit(0, sizeBPW)      identPOINTER          dumplits(size)    dumpzero(siz
e, dim)    return ident        /*  ** evaluate one initializer  */  init(size, i
dent, dim) int size, ident, *dim     int value    if(qstr(&value))       if((ide
ntVARIABLE)(size!1))        error("must assign to char pointer or array")      *
dim  *dim - (litptr - value)      if(identPOINTER) point()          else if(cons
te)  int type, class     int k, j    while(1)       if(endst()) return/* do line
 */      if(match("(*")match("*"))         jPOINTER        k0              else 
        jVARIABLE        k1              if (symname(ssname, YES)0) illname()   
   if(findglb(ssname)) multidef(ssname)      if(match(")"))       if(match("()")
) jFUNCTION      else if (match(""))         paerror(j)        kneedsub()/* get 
size */        jARRAY/* !0array */              if(classEXTERNAL) exxpr(&value))
       if(identPOINTER) error("cannot assign to pointer")      stowlit(value, si
ze)      *dim  *dim - 1              /*  ** get required array size  */  needsub
()      int val    if(match("")) return 0/* null size */    if (constexpr(&val)0
) val1    if (val0)       error("negative size illegal")      val  -val         
 needtoken("")/* force single dimension */    return val/* and return size */   
     /*  ** begin a function  **  ** called from "parse" and tries ternal(ssname
)      else if(j!FUNCTION) jinitials(type2, j, k)      addsym(ssname, j, type, k
, &glbptr, class)      if (match(",")0) return/* more */              /*  ** dec
lare local variables  */  declloc(typ)  int typ      int k,j    if(swactive) err
or("not allowed in switch")  #ifdef STGOTO    if(noloc) error("not allowed with 
goto")  #endif    if(declared  0) error("must declare first in block")    while(
1)       while(1)         if(endst()) return        if(match("*")) jPOINTto make
 a function  ** out of the following text  **  */  newfunc()      char *ptr  #if
def STGOTO    nogo  /* enable goto statements */    noloc  0/* enable block-loca
l declarations */  #endif    lastst/* no statement yet */    litptr0/* clear lit
 pool */    litlabgetlabel()/* label next lit pool */    locptrSTARTLOC/* clear 
local variables */    if(monitor) lout(line, stderr)    if (symname(ssname, YES)
0)       error("illegal function or declaration")      kill()/* invaER        el
se           jVARIABLE        if (symname(ssname, YES)0) illname()        /* no 
multidef check, block-locals are together */        kBPW        if (match(""))  
         paerror(j)          if(kneedsub())             jARRAY            if(typ
CINT)kkLBPW                      else jPOINTER kBPW                  else if((ty
pCCHAR)&(jVARIABLE)) kSBPC        declared  declared + k        addsym(ssname, j
, typ, csp - declared, &locptr, AUTOMATIC)        break      lidate line */     
 return          if(func1)       postlabel(beglab)      func10          if(ptrfi
ndglb(ssname)) /* already in symbol table  */      if(ptrIDENT!FUNCTION)       m
ultidef(ssname)      else if(ptrOFFSETFUNCTION) multidef(ssname)      else      
   /* earlier assumed to be a function */        ptrOFFSETFUNCTION        ptrCLA
SSSTATIC                  else      addsym(ssname, FUNCTION, CINT, FUNCTION, &gl
bptr, STATIC)    if(match("(")0) error("no open paren")           if (match(",")
0) return              /*  ** test for pointer array (unsupported)  */  paerror(
j) int j     if(jPOINTER) error("no pointer arrays")        /*  ** initialize gl
obal objects  */  initials(size, ident, dim) int size, ident, dim     int savedi
m    litptr0    if(dim0) dim  -1    savedimdim    entry()    if(match(""))      
 if(match(""))         while(dim)           init(size, ident, &dim)          if(
match(",")0) break                  needtoken("")       RAFBGCHDIE entry()    lo
cptrSTARTLOC    argstk0/* init arg count */    while(match(")")0) /* then count 
args */      /* any legal name bumps arg count */      if(symname(ssname, YES)) 
        if(findloc(ssname)) multidef(ssname)        else           addsym(ssname
, 0, 0, argstk, &locptr, AUTOMATIC)          argstkargstk+BPW                   
     else error("illegal argument name")junk()      blanks()      /* if not clos
ing paren, should be comma */      if(streq(lptr,")")0)         if(mat nogodecla
red/* disable goto if any */  #endif        cspmodstk(csp - declared, NO)       
 declared  -1              if(match(""))                compound()      else if(
amatch("if",2))       doif()laststSTIF      else if(amatch("while",5))    dowhil
e()laststSTWHILE  #ifdef STDO      else if(amatch("do",2))       dodo()laststSTD
O  #endif  #ifdef STFOR      else if(amatch("for",3))  dofor()laststSTFOR  #endi
f  #ifdef STSWITCH      else if(amatch("switch",6))  doswitchch(",")0) error("no
 comma")              if(endst()) break          csp0/* preset stack ptr */    a
rgtopargstk    while(argstk)       /* now let user declare what types of things 
*/      /*      those arguments were */      if(amatch("char",4))     doargs(CCH
AR)ns()      else if(amatch("int",3)) doargs(CINT)ns()      else error("wrong nu
mber of arguments")break          statement()  #ifdef STGOTO    if(lastst ! STRE
TURN && lastst ! STGOTO) ffret()  #else    if(lastst ! STRETU()laststSTSWITCH   
   else if(amatch("case",4))  docase()laststSTCASE      else if(amatch("default"
,7))  dodefault()laststSTDEF  #endif  #ifdef STGOTO      else if(amatch("goto", 
4))  dogoto()laststSTGOTO      else if(dolabel())laststSTLABEL  #endif      else
 if(amatch("return",6))  doreturn()ns()laststSTRETURN      else if(amatch("break
",5))  dobreak()ns()laststSTBREAK      else if(amatch("continue",8)) docont()ns(
)laststSTCONT      else if(match("RN) ffret()  #endif    if(litptr)       printl
abel(litlab)      col()      dumplits(1)/* dump literals */              /*  ** 
declare argument types  **  ** called from "newfunc" this routine adds an entry 
in the  ** local symbol table for each named argument  */  doargs(t) int t     i
nt j, legalname    char c, *argptr    while(1)       if(argstk0) return/* no arg
uments */      if(match("(*")match("*")) jPOINTER  else jVARIABLE      if((legal
namesymname(ssname, YES))0) illname()  "))  errflag0      else if(match("#asm"))
  doasm()laststSTASM      else  doexpr()ns()laststSTEXPR          return lastst 
       /*  ** semicolon enforcer  **  ** called whenever syntax requires a semic
olon  */  ns()      if(match("")0) error("no semicolon")    else errflag0       
 compound()      int savcsp    char *savloc    savcspcsp    savloclocptr    decl
ared0/* may now declare local variables */    ++ncmp/* new level open */    whil
e (match("")0)        if(match(")"))       if(match("()"))       if(match(""))  
       paerror(j)        while(inbyte()!'') if(endst()) break/* skip "..." */   
     jPOINTER/* add entry as pointer */              if(legalname)         if(ar
gptrfindloc(ssname))           /* add details of type and address */          ar
gptrIDENTj          argptrTYPEt          putint(argtop-getint(argptr+OFFSET, OFF
SIZE), argptr+OFFSET, OFFSIZE)                  else error("not an argument")   
           argstka  if(eof)         error("no final ")        break             
 else statement()/* do one */    --ncmp/* close current level */  /*55*/  #ifdef
 STGOTO    if(lastst ! STRETURN && lastst ! STGOTO)  #else    if(lastst ! STRETU
RN)  #endif      modstk(savcsp, NO)/* delete local variable space */    cspsavcs
p  /*55*/  #ifdef STGOTO    cptrsavloc/* retain labels */    while(cptr  locptr)
       cptr2nextsym(cptr)      if(cptrIDENT  LABEL)         while(cptr  cptr2) *
savloc++  *cptrgstk-BPW/* cnt down */      if(endst())return      if(match(",")0
) error("no comma")               CC13.C 6825  /*  ** statement parser  **  ** c
alled whenever syntax requires a statement  **  this routine performs that state
ment  **  and returns a number telling which one  */  statement()     if ((ch0) 
& (eof)) return    else if(amatch("char",4))  declloc(CCHAR)ns()    else if(amat
ch("int",3))   declloc(CINT)ns()    else       if(declared  0)   #ifdef STGOTO  
      if(ncmp  1)  RAFBGCHDIEr++              else cptrcptr2        #endif    lo
cptrsavloc/* delete local symbols */    declared  -1/* may not declare variables
 */        doif()      int flab1,flab2    flab1getlabel()/* get label for false 
branch */    test(flab1, YES)/* get expression, and branch false */    statement
()/* if true, do a statement */    if (amatch("else",4)0) /* if...else  */      
/* simple "if"...print false label */      postlabel(flab1)      return/* and ex
it */          flab2ge/* cases, etc. */    jump(wqWQEXIT)    postlabel(endlab)  
  sw()/* match cases */    while(swptr  swnext)       defstorage(CINT2)      pri
ntlabel(*swptr++)/* case label */      outbyte(',')      outdec(*swptr++)/* case
 value */      nl()          defstorage(CINT2)    outdec(0)    nl()    if(swdefa
ult) jump(swdefault)    postlabel(wqWQEXIT)    delwhile()    swnextswnex    swde
faultswdef    swactiveswact        docase()     if(swactive0) error("not in swit
ch")    if(tlabel()  #ifdef STGOTO    if((lastst ! STRETURN)&(lastst ! STGOTO)) 
jump(flab2)  #else    if(lastst ! STRETURN) jump(flab2)  #endif    postlabel(fla
b1)/* print false label */    statement()/* and do "else" clause */    postlabel
(flab2)/* print true label */        doexpr()     int const, val    char *before
, *start    while(1)       setstage(&before, &start)      expression(&const, &va
l)      clearstage(before, start)      if(ch ! ',') break      bump(1)          
    dowhile() swnext  swend)       error("too many cases")      return          
postlabel(*swnext++  getlabel())    constexpr(swnext++)    needtoken("")        
dodefault()     if(swactive)       if(swdefault) error("multiple defaults")     
     else error("not in switch")    needtoken("")    postlabel(swdefaultgetlabel
())      #endif    #ifdef STGOTO  dogoto()     if(nogo  0) error("not allowed wi
th block-locals")    else noloc  1    if(symname(ssname, YES)) jump(addlabel()) 
   else error("bad      int wq4/* allocate local queue */    addwhile(wq)/* add 
entry to queue for "break" */    postlabel(wqWQLOOP)/* loop label */    test(wqW
QEXIT, YES)/* see if true */    statement()/* if so, do a statement */    jump(w
qWQLOOP)/* loop to label */    postlabel(wqWQEXIT)/* exit label */    delwhile()
/* delete queue entry */        #ifdef STDO  dodo()     int wq4, top    addwhile
(wq)    postlabel(topgetlabel())    statement()    needtoken("while")    postlab
el(wqlabel")    ns()        dolabel()     char *savelptr    blanks()    savelptr
lptr    if(symname(ssname, YES))       if(gch()'')         postlabel(addlabel())
        return 1              else bump(savelptr-lptr)          return 0        
addlabel()      if(cptrfindloc(ssname))       if(cptrIDENT!LABEL) error("not a l
abel")          else cptraddsym(ssname, LABEL, LABEL, getlabel(), &locptr, LABEL
)    return (getint(cptr+OFFSET, OFFSIZE))      #endif    doreturn()      if(end
st()WQLOOP)    test(wqWQEXIT, YES)    jump(top)    postlabel(wqWQEXIT)    delwhi
le()    ns()      #endif    #ifdef STFOR  dofor()     int wq4, lab1, lab2    add
while(wq)    lab1getlabel()    lab2getlabel()    needtoken("(")    if(match("")0
)       doexpr()/* expr 1 */      ns()          postlabel(lab1)    if(match("")0
)       test(wqWQEXIT, NO)/* expr 2 */      ns()          jump(lab2)    postlabe
l(wqWQLOOP)    if(match(")")0)       doexpr()/* expr 3 */    0)       doexpr()  
    modstk(0, YES)          else modstk(0, NO)    ffret()        dobreak()      
int *ptr    if ((ptrreadwhile(wqptr))0) return    modstk((ptrWQSP), NO)    jump(
ptrWQEXIT)        docont()      int *ptr    ptr  wqptr    while (1)       if ((p
trreadwhile(ptr))0) return      if (ptrWQLOOP) break          modstk((ptrWQSP), 
NO)    jump(ptrWQLOOP)        doasm()      ccode0/* mark mode as "asm" */    whi
le (1)       inline()      if (match("#enda  needtoken(")")          jump(lab1) 
   postlabel(lab2)    statement()    jump(wqWQLOOP)    postlabel(wqWQEXIT)    de
lwhile()      #endif    #ifdef STSWITCH  doswitch()     int wq4, endlab, swact, 
swdef, *swnex, *swptr    swactswactive    swdefswdefault    swnexswptrswnext    
addwhile(wq)    *(wqptr + WQLOOP - WQSIZ)  0    needtoken("(")    doexpr()/* eva
luate switch expression */    needtoken(")")    swdefault0    swactive1    jump(
endlabgetlabel())    statement()   R A F B G C H D I Esm")) break      if(eof)br
eak      sout(line, output)          kill()    ccode1         CC2.C 703  /*  ** 
Small-C Compiler Part 2  */  #include stdio.h  #include "cc.def"    extern char 
 #ifdef DYNAMIC   *symtab,   *stage,   *macn,   *macq,   *pline,   *mline,  #els
e    symtabSYMTBSZ,    stageSTAGESIZE,    macnMACNSIZE,    macqMACQSIZE,    plin
eLINESIZE,    mlineLINESIZE,  #endif  #ifdef OPTIMIZE    optimize,  #endif    al
arm, *glbptr, *line, *lptr, *cptr, *cptr2,  *cptr3,   *locptrind length byte */ 
   return entry        /*  ** get integer of length len from address addr  ** (b
yte sequence set by "putint")  */  getint(addr, len) char *addr int len     int 
i    i  *(addr + --len)/* high order byte sign extended */    while(len--) i  (i
  8)  *(addr+len)&255    return i        /*  ** put integer i of length len into
 address addr  ** (low byte first)  */  putint(i, addr, len) char *addr int i, l
en     while(len--)       *addr++  i      i  i8              /* , msnameNAMESIZE
,  pause,  quote2,   *stagelast, *stagenext  extern int  #ifdef DYNAMIC    *wq, 
 #else    wqWQTABSZ,  #endif    ccode,  ch,  csp,  eof,  errflag,  iflevel,    i
nput,  input2,  listfp,  macptr,  nch,    nxtlab,  op16,  opindex,  opsize,  out
put,  pptr,    skiplevel,  *wqptr    #include "cc21.c"  #include "cc22.c"     CC
21.C 4371  junk()     if(an(inbyte())) while(an(ch)) gch()    else while(an(ch)0
)       if(ch0) break      gch()          blanks()        endst()      ** test i
f next input string is legal symbol name  */  symname(sname, ucase) char *sname 
int ucase     int kchar c    blanks()    if(alpha(ch)0) return (*sname0)    k0  
  while(an(ch))   #ifdef UPPER      if(ucase)        snamektoupper(gch())      e
lse  #endif        snamekgch()      if(kNAMEMAX) ++k          snamek0    return 
1        /*  ** return next avail internal label number  */  getlabel()     retu
rn(++nxtlab)        /*  ** post a label in the program  */  postlabelblanks()   
 return ((streq(lptr,"")(ch0)))        illname()     error("illegal symbol")    
junk()          multidef(sname)  char *sname     error("already defined")       
 needtoken(str)  char *str     if (match(str)0) error("missing token")        ne
edlval()     error("must be lvalue")        findglb(sname)  char *sname     if(s
earch(sname, STARTGLB, SYMMAX, ENDGLB, NUMGLBS, NAME))      return cptr    retur
n 0        findloc(sname)  char *sname      cptr  locptr - 1/* sea(label) int la
bel     printlabel(label)    col()    nl()        /*  ** print specified number 
as a label  */  printlabel(label)  int label     outstr("CC")    outdec(label)  
      /*  ** test if c is alphabetic  */  alpha(c)  char c     return (isalpha(c
)  c'')        /*  ** test if given character is alphanumeric  */  an(c)  char c
     return (alpha(c)  isdigit(c))        addwhile(ptr)  int ptr     int k    pt
rWQSPcsp/* and stk ptr */    ptrWQLOOPgetlabel()/* and lrch backward for block l
ocals */    while(cptr  STARTLOC)       cptr  cptr - *cptr      if(astreq(sname,
 cptr, NAMEMAX)) return (cptr - NAME)      cptr  cptr - NAME - 1          return
 0        addsym(sname, id, typ, value, lgptrptr, class)    char *sname, id, typ
  int value, *lgptrptr, class     if(lgptrptr  &glbptr)       if(cptr2findglb(sn
ame)) return cptr2      if(cptr0)         error("global symbol table overflow") 
       return 0                  else       if(locptr  (ENDLOooping label */    
ptrWQEXITgetlabel()/* and exit label */    if (wqptrWQMAX)       error("too many
 active loops")      abort(ERRCODE)          k0    while (kWQSIZ) *wqptr++  ptrk
++        delwhile()     if (wqptr  wq) wqptrwqptr-WQSIZ        readwhile(ptr) i
nt *ptr     if (ptr  wq)       error("out of context")      return 0          el
se return (ptr-WQSIZ)       white()   #ifdef DYNAMIC    /* test for stack/prog o
verlap at deepest nesting */    /* primary - symname - bC-SYMMAX))         error
("local symbol table overflow")        abort(ERRCODE)              cptr  *lgptrp
tr          cptrIDENTid    cptrTYPEtyp    cptrCLASSclass    putint(value, cptr+O
FFSET, OFFSIZE)    cptr3  cptr2  cptr + NAME    while(an(*sname)) *cptr2++  *sna
me++    if(lgptrptr  &locptr)       *cptr2  cptr2 - cptr3/* set length */      *
lgptrptr  ++cptr2          return cptr        nextsym(entry) char *entry     ent
ry  entry + NAME    while(*entry++  ' ')/* f  RAFBGCHDIElanks - white */    avai
l(YES)/* abort on stack overflow */  #endif    return (*lptr ' ' && *lptr!NULL) 
       gch()     int c    if(cch) bump(1)    return c        bump(n) int n     i
f(n) lptrlptr+n    else  lptrline    if(chnch  *lptr) nch  *(lptr+1)        kill
()     *line0    bump(0)        inbyte()      while(ch0)       if (eof) return 0
      preprocess()          return gch()        inline() /* numerous revisions *
/    int k,unit    poll(1)/* allow oper while((ch!39)((*(lptr-1)92)&(*(lptr-2)!9
2)))           if(ch0)             error("no apostrophe")            break      
                keepch(gch())                  gch()        keepch(39)          
    else if((ch'/')&(nch'*'))         bump(2)        while(((ch'*')&(nch'/'))0) 
          if(ch) bump(1)          else             ifline()            if(eof) b
reak                              bump(2)              else if(an(ch))         k
0        while((an(ch)) & (kNator interruption */    if (inputEOF) openfile()   
 if(eof) return    if((unitinput2)EOF) unitinput    if(fgets(line, LINEMAX, unit
)NULL)       fclose(unit)      if(input2!EOF) input2EOF      else inputEOF      
*lineNULL          else if(listfp)       if(listfpoutput) cout('', output)      
sout(line, listfp)          bump(0)         CC22.C 6866  ifline()     while(1)  
     inline()      if(eof) return      if(match("#ifdef"))         ++iflevel    
    if(skiplevel) contAMEMAX))           msnamek++ch          gch()             
     msnamek0        if(search(msname, macn, NAMESIZE+2, MACNEND, MACNBR, 0))   
        kgetint(cptr+NAMESIZE, 2)          while(cmacqk++) keepch(c)          wh
ile(an(ch)) gch()                  else           k0          while(cmsnamek++) 
keepch(c)                        else keepch(gch())          if(pptrLINEMAX) err
or("line too long")    keepch(0)    linepline    bump(0)        noiferr()     er
ror("no matchiinue        symname(msname, NO)        if(search(msname, macn, NAM
ESIZE+2, MACNEND, MACNBR, 0)0)          skipleveliflevel        continue        
      if(match("#ifndef"))         ++iflevel        if(skiplevel) continue      
  symname(msname, NO)        if(search(msname, macn, NAMESIZE+2, MACNEND, MACNBR
, 0))          skipleveliflevel        continue              if(match("#else")) 
        if(iflevel)           if(skipleveliflevel) skiplevel0          else if(s
kiplevel0)  skiplevelng #if...")    errflag0        addmac()     int k    if(sym
name(msname, NO)0)       illname()      kill()      return          k0    if(sea
rch(msname, macn, NAMESIZE+2, MACNEND, MACNBR, 0)0)       if(cptr2cptr) while(*c
ptr2++  msnamek++)      else         error("macro name table full")        retur
n                  putint(macptr, cptr+NAMESIZE, 2)    while(white()) gch()    w
hile(putmac(gch()))    if(macptrMACMAX)       error("macro string queue full") a
bort(ERRCODE)    iflevel                  else noiferr()        continue        
      if(match("#endif"))         if(iflevel)           if(skipleveliflevel) ski
plevel0          --iflevel                  else noiferr()        continue      
        if(skiplevel) continue      if(ch0) continue      break              kee
pch(c)  char c     if(pptrLINEMAX) pline++pptrc        preprocess()     int k   
 char c    if(ccode)       linemline      ifline()      if(eof) return          
else              putmac(c)  char c     macqmacptrc    if(macptrMACMAX) ++macptr
    return c        /*  ** search for symbol match  ** on return cptr points to 
slot found or empty slot  */  search(sname, buf, len, end, max, off)    char *sn
ame, *buf, *end  int len, max, off     cptrcptr2buf+((hash(sname)%(max-1))*len) 
   while(*cptr ! 0)       if(astreq(sname, cptr+off, NAMEMAX)) return 1      if(
(cptrcptr+len)  end) cptrbuf      if(cptr  cptr2) return (cptr0)          return
 0        linepline      inline()      return          pptr  -1    while(ch ! NE
WLINE && ch)       if(white())         keepch(' ')        while(white()) gch()  
            else if(ch'"')         keepch(ch)        gch()        while((ch!'"')
((*(lptr-1)92)&(*(lptr-2)!92)))           if(ch0)             error("no quote") 
           break                      keepch(gch())                  gch()      
  keepch('"')              else if(ch39)         keepch(39)        gch()        
 RAFBGCHDIE   hash(sname) char *sname     int i, c    i0    while(c  *sname++) i
(i1)+c    return i        setstage(before, start) int *before, *start     if((*b
eforestagenext)0) stagenextstage    *startstagenext        clearstage(before, st
art) char *before, *start     *stagenext0    if(stagenextbefore) return    if(st
art)   #ifdef OPTIMIZE      peephole(start)  #else      sout(start, output)  #en
dif              outdec(number)  int number     int k,zs    char c, *q, *r    zs
  0     if (an(str1k))return 0    if (an(str2k))return 0    return k       match
(lit)  char *lit     int k    blanks()    if (kstreq(lptr,lit))       bump(k)   
   return 1          return 0        amatch(lit,len)  char *litint len     int k
    blanks()    if (kastreq(lptr,lit,len))       bump(k)      while(an(ch)) inby
te()      return 1          return 0       nextop(list) char *list     char op4 
   opindex0    blanks()    while(1)       opsize0      while(*list  ' '   k10000
    if (number0)       number(-number)      outbyte('-')          while (k1)    
   q0 rnumber      while(r  k) ++q r - k      c  q + '0'      if ((c!'0')(k1)(zs
))         zs1        outbyte(c)              numberr      kk/10              ol
(ptr)  char ptr      ot(ptr)    nl()        ot(ptr) char ptr     outstr(ptr)    
    outstr(ptr) char ptr     poll(1) /* allow program interruption */    /* must
 work with symbol table names terminated by l) opopsize++  *list++      opopsize
0      if(opsizestreq(lptr, op))        if((*(lptr+opsize) ! '')&           (*(l
ptr+opsize) ! *(lptr+opsize-1)))           return 1      if(*list)         ++lis
t        ++opindex              else return 0              blanks()     while(1)
       while(ch)         if(white()) gch()        else return              if(li
nemline) return      preprocess()      if(eof)break               CC3.C 373  /* 
 ** Small-C Compiler Part 3  */  #includeength */    while(*ptr  ' ') outbyte(*p
tr++)        outbyte(c) char c     if(stagenext)       if(stagenextstagelast)   
      error("staging buffer overflow")        return 0              else *stagen
ext++  c          else cout(c,output)    return c        cout(c, fd) char c int 
fd     if(fputc(c, fd)EOF) xout()        sout(string, fd) char *string int fd   
  if(fputs(string, fd)EOF) xout()        lout(line, fd) char *line int fd     so
ut(line, fd)    cout(NEWLINE, fd)   stdio.h  #include "cc.def"    extern char  #
ifdef DYNAMIC   *stage,   *litq,  #else    stageSTAGESIZE,    litqLITABSZ,  #end
if   *glbptr, *lptr,  ssnameNAMESIZE,  quote2, *stagenext  extern int    ch,  cs
p,  litlab,  litptr,  nch,  op16,  op216,    oper,  opindex,  opsize    #include
 "cc31.c"  #include "cc32.c"  #include "cc33.c"     CC31.C 6680  /*  ** lval0 - 
symbol table address, else 0 for constant  ** lval1 - type of indirect obj to fe
tch, else 0 for static  ** lval2 - type of      xout()     fputs("output error",
 stderr)    abort(ERRCODE)        nl()     outbyte(NEWLINE)        col()   #ifde
f COL    outbyte('')  #endif        error(msg) char msg     if(errflag) return e
lse errflag1    lout(line, stderr)    errout(msg, stderr)    if(alarm) fputc(7, 
stderr)    if(pause) while(fgetc(stderr)!NEWLINE)    if(listfp0) errout(msg, lis
tfp)        errout(msg, fp) char msg int fp     int k kline+2    while(k++  lptr
) cout(' ', fp)    lout("/", fp)  pointer or array, else 0 for all other  ** lva
l3 - true if constant expression  ** lval4 - value of constant expression (+ aux
iliary uses)  ** lval5 - true if secondary register altered  ** lval6 - function
 address of highest/last binary operator  ** lval7 - stage address of "oper 0" c
ode, else 0  */    /*  ** skim over terms adjoining  and && operators  */  skim(
opstr, testfunc, dropval, endval, hier, lval)    char *opstr    int (*testfunc)(
), dropval, endval, (*hier)(), lval     int k, h   sout("**** ", fp) lout(msg, f
p)        streq(str1,str2)  char str1,str2     int k    k0    while (str2k)     
  if ((str1k)!(str2k)) return 0      ++k          return k       astreq(str1,str
2,len)  char str1,str2int len     int k    k0    while (klen)       if ((str1k)!
(str2k))break      /*      ** must detect end of symbol table names terminated b
y      ** symbol length in binary      */      if(str1k  ' ') break      if(str2
k  ' ') break      ++k         R A F B G C H D I Eits, droplab, endlab    hits0 
   while(1)       kplnge1(hier, lval)      if(nextop(opstr))         bump(opsize
)        if(hits0)           hits1          droplabgetlabel()                  d
ropout(k, testfunc, droplab, lval)              else if(hits)         dropout(k,
 testfunc, droplab, lval)        const(endval)        jump(endlabgetlabel())    
    postlabel(droplab)        const(dropval)        postlabel(endlab)        lva
l1lval2lval3lval4lval70        return 0      smartpop(lval2, start)        if(db
ltest(oper, lval,lval2)) doublereg()        if(dbltest(oper, lval2,lval))       
    swap()          doublereg()          if(operffsub) swap()                   
         if(oper)       if(lval3lval3&lval23)         lval4calc(lval4, oper, lva
l24)        clearstage(before, 0)          lval50              else         if((
lval20)&(lval220))           (*oper)()          lval6oper/* identify the operato
r */                            else return k              /*  ** test for early
 dropout from  or && evaluations  */  dropout(k, testfunc, exit1, lval)    int k
, (*testfunc)(), exit1, lval     if(k) rvalue(lval)    else if(lval3) const(lval
4)    (*testfunc)(exit1)/* jumps on false */        /*  ** plunge to a lower lev
el  */  plnge(opstr, opoff, hier, lval)    char *opstr    int opoff, (*hier)(), 
lval     int k, lval28    kplnge1(hier, lval)    if(nextop(opstr)0) return k    
if(k) rvalue(lval    else           (*oper2)()          lval6oper2/* identify th
e operator */                        if(operffsub)         if((lval2CINT)&(lval2
2CINT))           swap()          const(1)          ffasr()/** div by 2 **/     
                   if((operffsub)(operffadd)) result(lval, lval2)              c
alc(left, oper, right) int left, (*oper)(), right          if(oper   ffor) retur
n (left    right)    else if(oper  ffxor) return (left    right)    else if(oper
)    while(1)       if(nextop(opstr))         bump(opsize)        opindexopindex
+opoff        plnge2(opopindex, op2opindex, hier, lval, lval2)              else
 return 0              /*  ** unary plunge to lower level  */  plnge1(hier, lval
) int (*hier)(), lval     char *before, *start    int k    setstage(&before, &st
art)    k(*hier)(lval)    if(lval3) clearstage(before,0)/* load constant later *
/    return k        /*  ** binary plunge to lower level  */  plnge2(oper, oper2
,   ffand) return (left  &  right)    else if(oper   ffeq) return (left   right)
    else if(oper   ffne) return (left  ! right)    else if(oper   ffle) return (
left   right)    else if(oper   ffge) return (left   right)    else if(oper   ff
lt) return (left    right)    else if(oper   ffgt) return (left    right)    els
e if(oper  ffasr) return (left   right)    else if(oper  ffasl) return (left   r
ight)    else if(oper  ffadd) return (left  +  right)    else if(oper hier, lval
, lval2)    int (*oper)(),(*oper2)(),(*hier)(),lval,lval2     char *before, *sta
rt    setstage(&before, &start)    lval51/* flag secondary register used */    l
val70/* flag as not "... oper 0" syntax */    if(lval3) /* constant on left side
 not yet loaded */      if(plnge1(hier, lval2)) rvalue(lval2)      if(lval40) lv
al7stagenext      const2(lval4dbltest(oper, lval2, lval))          else /* non-c
onstant on left side */      push()      if(plnge1(hier, l ffsub) return (left  
-  right)    else if(oper ffmult) return (left  *  right)    else if(oper  ffdiv
) return (left  /  right)    else if(oper  ffmod) return (left  %  right)    els
e return 0        expression(const, val) int *const, *val      int lval8    if(h
ier1(lval)) rvalue(lval)    if(lval3)       *const1      *vallval4          else
 *const0        hier1(lval)  int lval      int k,lval28, lval32, oper    kplnge1
(hier3, lval)    if(lval3) const(lval4)   val2)) rvalue(lval2)      if(lval23) /
* constant on right side */        if(lval240) lval7start        if(operffadd) /
* may test other commutative operators */          cspcsp+2          clearstage(
before, 0)          const2(lval24dbltest(oper, lval, lval2))  /* load secondary 
*/                  else           const(lval24dbltest(oper, lval, lval2))  /* l
oad primary */          smartpop(lval2, start)                        else /* no
n-constants on both sides */    RAFBGCHDIE      if(match(""))  operffor    else 
if(match(""))  operffxor    else if(match("&"))  operffand    else if(match("+")
)  operffadd    else if(match("-"))  operffsub    else if(match("*"))  operffmul
t    else if(match("/"))  operffdiv    else if(match("%"))  operffmod    else if
(match("")) operffasr    else if(match("")) operffasl    else if(match(""))   op
er0    else return k    if(k0)       needlval()      return 0          lval30  l
val0    lval31  lvaval)      if(ptrlval0)lval1ptrTYPE      else lval1CINT      l
val20/* flag as not pointer or array */      lval30/* flag as not constant */   
   lval41/* omit rvalue() on func call */      lval70      return 1          els
e if(match("&")) /* unary & */      if(hier13(lval)0)         error("illegal add
ress")        return 0              ptrlval0      lval2ptrTYPE      if(lval1) re
turn 0  /* global & non-array */      address(ptr)      lval1l1    if(lval1)    
   if(oper)         push()        rvalue(lval)              plnge2(oper, oper, h
ier1, lval, lval2)      if(oper) pop()          else       if(oper)         rval
ue(lval)        plnge2(oper, oper, hier1, lval, lval2)              else        
 if(hier1(lval2)) rvalue(lval2)        lval5lval25                  store(lval3)
    return 0        hier3(lval)  int lval     return skim("", eq0, 1, 0, hier4, 
lval)        hier4(lval)  int lval     return skimptrTYPE      return 0         
 else       khier14(lval)      if(match("++")) /* lval++ */        if(k0)       
    needlval()          return 0                  step(inc, lval)        dec(lva
l22)        return 0              else if(match("--")) /* lval-- */        if(k0
)           needlval()          return 0                  step(dec, lval)       
 inc(lval22)        return 0              else return k              hier14(lval
)  int *lval     int k, const, val("&&", ne0, 0, 1, hier5, lval)        hier5(lv
al)  int lval     return plnge("", 0, hier6, lval)        hier6(lval)  int lval 
    return plnge("", 1, hier7, lval)        hier7(lval)  int lval     return pln
ge("&", 2, hier8, lval)        hier8(lval)  int lval      return plnge(" !", 3, 
hier9, lval)        hier9(lval)  int lval      return plnge("   ", 5, hier10, lv
al)        hier10(lval)  int lval      return plnge(" ", 9, hier11, lval)       
 hier11(lval), lval28    char *ptr, *before, *start    kprimary(lval)    ptrlval
0    blanks()    if((ch'')(ch'('))       lval51/* secondary register will be use
d */      while(1)         if(match("")) /* subscript */          if(ptr0)      
       error("can't subscript")            junk()            needtoken("")      
      return 0                      else if(ptrIDENTPOINTER)rvalue(lval)        
  else if(ptrIDENT!ARRAY)             error("can't subscript")             int l
val      return plnge("+ -", 11, hier12, lval)        hier12(lval)  int lval    
  return plnge("* / %", 13, hier13, lval)         CC32.C 5065  hier13(lval)  int
 lval      int k    char *ptr    if(match("++")) /* ++lval */      if(hier13(lva
l)0)         needlval()        return 0              step(inc, lval)      return
 0          else if(match("--")) /* --lval */      if(hier13(lval)0)         nee
dlval()        return 0              step(dec, lval)      ret k0                
      setstage(&before, &start)          lval230          plnge2(0, 0, hier1, lv
al2, lval2) /* lval2 deadend */          needtoken("")          if(lval23)      
       clearstage(before, 0)            if(lval24)               if(ptrTYPECINT)
 const2(lval24LBPW)              else                const2(lval24)             
 ffadd()                                    else             if(ptrTYPECINT) dou
blereg()            ffadd()                      lvaurn 0          else if (matc
h("")) /*  */      if(hier13(lval)) rvalue(lval)      com()      lval4  lval4   
   return (lval70)          else if (match("!")) /* ! */      if(hier13(lval)) r
value(lval)      lneg()      lval4  !lval4      return (lval70)          else if
 (match("-")) /* unary - */      if(hier13(lval)) rvalue(lval)      neg()      l
val4  -lval4      return (lval70)          else if(match("*")) /* unary * */    
  if(hier13(lval)) rvalue(l  RAFBGCHDIEl20          lval1ptrTYPE          k1    
              else if(match("(")) /* function(...) */          if(ptr0) callfunc
tion(0)          else if(ptrIDENT!FUNCTION)             if(k && !lval4) rvalue(l
val)            callfunction(0)                      else callfunction(ptr)     
     klval0lval3lval40                  else return k                  if(ptr0) 
return k    if(ptrIDENTFUNCTION)       address(ptr)      lval00      return 0   
       retur && (oper!ffsub)) return 0    if(val12!CINT) return 0    if(val22) r
eturn 0    return 1        /*  ** determine type of binary operation  */  result
(lval, lval2) int lval, lval2     if((lval2!0)&(lval22!0))       lval20         
 else if(lval22)       lval0lval20      lval1lval21      lval2lval22            
  step(oper, lval) int (*oper)(), lval     if(lval1)       if(lval5)         pus
h()        rvalue(lval)        (*oper)(lval22)        pn k        primary(lval) 
 int *lval     char *ptr, snameNAMESIZE    int k    if(match("(")) /* (expressio
n,...) */      do khier1(lval) while(match(","))      needtoken(")")      return
 k          putint(0, lval, 8LBPW)/* clear lval array */    if(symname(sname, YE
S))       if(ptrfindloc(sname))   #ifdef STGOTO        if(ptrIDENTLABEL)        
   experr()          return 0            #endif        getloc(ptr)        lval0p
tr        lval1ptrTYPE        if(ptrIDENTop()        store(lval)        return  
            else         move()        lval51                  rvalue(lval)    (
*oper)(lval22)    store(lval)        store(lval)  int lval     if(lval1) putstk(
lval)    else        putmem(lval)        rvalue(lval) int lval     if ((lval0!0)
&(lval10)) getmem(lval)    else                         indirect(lval)        te
st(label, parens)  int label, parens      int lval8    char *before, *start    i
f(parens) needtoken("(")POINTER)           lval1CINT          lval2ptrTYPE      
            if(ptrIDENTARRAY)           lval2ptrTYPE          return 0          
        else return 1              if(ptrfindglb(sname))        if(ptrIDENT!FUNC
TION)           lval0ptr          lval10          if(ptrIDENT!ARRAY)            
 if(ptrIDENTPOINTER) lval2ptrTYPE            return 1                      addre
ss(ptr)          lval1lval2ptrTYPE          return 0                 while(1)   
    setstage(&before, &start)      if(hier1(lval)) rvalue(lval)      if(match(",
")) clearstage(before, start)      else break          if(parens) needtoken(")")
    if(lval3) /* constant expression */      clearstage(before, 0)      if(lval4
) return      jump(label)      return          if(lval7) /* stage address of "op
er 0" code */      operlval6/* operator function address */           if((operff
eq)              (operule)) zerojump(eq0, label, lval)       ptraddsym(sname,FUN
CTION,CINT,0,&glbptr,AUTOEXT)      lval0ptr      lval10      return 0          i
f(constant(lval)0) experr()    return 0        experr()     error("invalid expre
ssion")    const(0)    junk()         callfunction(ptr)  char *ptr /* symbol tab
le entry or 0 */    int nargs, const, val    nargs0    blanks()/* already saw op
en paren */    while(streq(lptr,")")0)       if(endst()) break      if(ptr)     
    expression(&const, &val)        push()         else if((operffne)           
   (operugt)) zerojump(ne0, label, lval)      else if (operffgt) zerojump(gt0, l
abel, lval)      else if (operffge) zerojump(ge0, label, lval)      else if (ope
ruge)  clearstage(lval7,0)      else if (operfflt) zerojump(lt0, label, lval)   
   else if (operult)  zerojump(ult0, label, lval)      else if (operffle) zeroju
mp(le0, label, lval)      else                 testjump(label)          else tes
tjump(label)    clearstage(before, start)        c       else         push()    
    expression(&const, &val)        swapstk()              nargsnargs+BPW/* coun
t args*BPW */      if (match(",")0) break          needtoken(")")    if(streq(pt
r+NAME, "CCARGC")0) loadargc(nargsLBPW)    if(ptr) ffcall(ptr+NAME)    else call
stk()    cspmodstk(csp+nargs, YES)         CC33.C 4152  /*  ** true if val1 - in
t pointer or int array and val2 not ptr or array  */  dbltest(oper, val1, val2) 
int (*oper)(), val1, val2     if((oper!ffadd)  RAFBGCHDIEonstexpr(val) int *val 
    int const    char *before, *start    setstage(&before, &start)    expression
(&const, val)    clearstage(before, 0)/* scratch generated code */    if(const0)
 error("must be constant expression")    return const        const(val) int val 
    immed()    outdec(val)    nl()        const2(val) int val     immed2()    ou
tdec(val)    nl()        constant(lval)  int lval     lvallval+3    *lval1/* ass
ume it will be a constant */    if (number(++lval)) iy assembler stuff needed at
 the end  */  trailer()      #ifndef LINK    if((beglab  1)(beglab  9000))      
 /* implementation dependent trailer code goes here */        #else    char *ptr
    cptrSTARTGLB    while(cptrENDGLB)       if(cptrIDENTFUNCTION && cptrCLASSAUT
OEXT)        external(cptr+NAME)      cptr+SYMMAX        #ifdef UPPER    if((ptr
findglb("MAIN")) && (ptrOFFSETFUNCTION))  #else    if((ptrfindglb("main")) && (p
trOFFSETFUNCTION))  #endif      external("Ulink")mmed()    else if (pstr(lval)) 
immed()    else if (qstr(lval))       *(lval-1)0/* nope, it's a string address *
/      immed()      printlabel(litlab)      outbyte('+')          else return 0 
   outdec(*lval)    nl()    return 1        number(val)  int val     int k, minu
s    kminus0    while(1)       if(match("+"))       else if(match("-")) minus1  
    else break          if(isdigit(ch)0)return 0    while (isdigit(ch)) kk*10+(i
nbyte()-'0')    if (minus) k(-k)    val0k/* link to library functions */  #endif
    ol("END")        /*  ** load # args before function call  */  loadargc(val) 
int val     if(search("NOCCARGC", macn, NAMESIZE+2, MACNEND, MACNBR, 0)0)       
if(val)         ot("MVI A,")        outdec(val)        nl()              else ol
("XRA A")              /*  ** declare entry point  */  entry()     outstr(ssname
)    col()  #ifdef LINK    col()  #endif    nl()        /*  ** declare external 
reference  */  external(name) char *name   #ifdef     return 1        address(pt
r) char *ptr     immed()    outstr(ptr+NAME)    nl()        pstr(val)  int val  
   int k    k0    if (match("'")0) return 0    while(ch!39)    k(k&255)*256 + (l
itchar()&255)    gch()    val0k    return 1        qstr(val)  int val     char c
    if (match(quote)0) return 0    val0litptr    while (ch!'"')       if(ch0) br
eak      stowlit(litchar(), 1)          gch()    litqlitptr++0    return 1      
  stowlit(value, size) int LINK    ot("EXT ")    ol(name)  #endif        /*  ** 
fetch object indirect to primary register  */  indirect(lval) int lval     if(lv
al1CCHAR) ffcall("CCGCHAR##")    else               ffcall("CCGINT##")        /*
  ** fetch a static memory cell into primary register  */  getmem(lval)  int lva
l     char *sym    symlval0    if((symIDENT!POINTER)&(symTYPECCHAR))       ot("L
DA ")      outstr(sym+NAME)      nl()      ffcall("CCSXT##")          else      
 ot("LHLD ")      outvalue, size     if((litptr+size)  LITMAX)       error("lite
ral queue overflow") abort(ERRCODE)          putint(value, litq+litptr, size)   
 litptrlitptr+size        /*  ** return current literal char & bump lptr  */  li
tchar()     int i, oct    if((ch!92)(nch0)) return gch()    gch()    if(ch'n') g
ch() return NEWLINE    if(ch't') gch() return  9 /* HT */    if(ch'b') gch() ret
urn  8 /* BS */    if(ch'f') gch() return 12 /* FF */    i3 oct0    while(((i--)
0)&(str(sym+NAME)      nl()              /*  ** fetch addr of the specified symb
ol into primary register  */  getloc(sym)  char *sym     const(getint(sym+OFFSET
, OFFSIZE)-csp)    ol("DAD SP")        /*  ** store primary register into static
 cell  */  putmem(lval)  int lval     char *sym    symlval0    if((symIDENT!POIN
TER)&(symTYPECCHAR))       ol("MOV A,L")      ot("STA ")          else ot("SHLD 
")    outstr(sym+NAME)    nl()        /*  ** put on the stack the type object in
 prch'0')&(ch'7')) oct(oct3)+gch()-'0'    if(i2) return gch() else return oct   
      CC4.C 244  /*  ** Small-C Compiler Part 4  */  #include stdio.h  #include 
"cc.def"    extern char   *macn,   *cptr, *symtab,  #ifdef OPTIMIZE   optimize, 
 #endif   *stagenext, ssnameNAMESIZE  extern int   beglab,  csp, output    #incl
ude "cc41.c"  #include "cc42.c"   CC41.C 5196  /*  ** print all assembler info b
efore any code is generated  */  header()      beglabgetlabel()        /*  ** pr
int an  RAFBGCHDIEimary register  */  putstk(lval) int lval     if(lval1CCHAR)  
     ol("MOV A,L")      ol("STAX D")          else ffcall("CCPINT##")        /* 
 ** move primary register to secondary  */  move()     ol("MOV D,H")    ol("MOV 
E,L")        /*  ** swap primary and secondary registers  */  swap()     ol("XCH
G")/* peephole() uses trailing "" */        /*  ** partial instruction to get im
mediate value  ** into the primary register  */  immed()     ot("LXI H,")       
 /*  ** partial inst        /*  ** point to following object(s)  */  point()    
 ol("DW $+2")        /*  ** modify stack pointer to value given  */  modstk(news
p, save)  int newsp, save     int k    knewsp-csp    if(k0)return newsp    if(k0
)       if(k7)         if(k&1)           ol("INX SP")          k--              
    while(k)           ol("POP B")          kk-BPW                  return newsp
                  if(k0)       if(k-7)         if(k&1)           ol("DCX SP")   
       k++      ruction to get immediate operand  ** into secondary register  */
  immed2()     ot("LXI D,")        /*  ** push primary register onto stack  */  
push()     ol("PUSH H")    cspcsp-BPW        /*  ** unpush or pop as required  *
/  smartpop(lval, start) int lval char *start     if(lval5)  pop()/* secondary w
as used */    else unpush(start)        /*  ** replace a push with a swap  */  u
npush(dest) char *dest     int i    char *sour    sour"XCHG"/* peephole() uses t
railing "" */               while(k)           ol("PUSH B")          kk+BPW     
             return newsp                  if(save) swap()    const(k)    ol("DA
D SP")    ol("SPHL")    if(save) swap()    return newsp        /*  ** double pri
mary register  */  doublereg() ol("DAD H")     CC42.C 5615  /*  ** add primary a
nd secondary registers (result in primary)  */  ffadd() ol("DAD D")    /*  ** su
btract primary from secondary register (result in primary)  */  ffsub() ffcall("
CCSUB##")    /*  **  while(*sour) *dest++  *sour++    sourstagenext    while(--s
our  dest) /* adjust stack references */      if(streq(sour,"DAD SP"))         -
-sour        iBPW        while(isdigit(*(--sour)))           if((*sour  *sour-i)
  '0')             *sour  *sour+10            i1                      else i0   
                         cspcsp+BPW        /*  ** pop stack to the secondary reg
ister  */  pop()     ol("POP D")    cspcsp+BPW        /*  ** swap primary regist
er and stack  */  smultiply primary and secondary registers (result in primary) 
 */  ffmult() ffcall("CCMULT##")    /*  ** divide secondary by primary register 
 ** (quotient in primary, remainder in secondary)  */  ffdiv() ffcall("CCDIV##")
    /*  ** remainder of secondary/primary  ** (remainder in primary, quotient in
 secondary)  */  ffmod() ffdiv()swap()    /*  ** inclusive "or" primary and seco
ndary registers  ** (result in primary)  */  ffor() ffcall("CCOR##")    /*  ** e
xclusive "or" the primary and secondarwapstk()     ol("XTHL")        /*  ** proc
ess switch statement  */  sw()     ffcall("CCSWITCH##")        /*  ** call speci
fied subroutine name  */  ffcall(sname)  char *sname     ot("CALL ")    outstr(s
name)    nl()        /*  ** return from subroutine  */  ffret()     ol("RET")   
     /*  ** perform subroutine call to value on stack  */  callstk()     ffcall(
"CCDCAL##")        /*  ** jump to internal label number  */  jump(label)  int la
bel     ot("JMP ")    printlabel(label)    nl()y registers  ** (result in primar
y)  */  ffxor() ffcall("CCXOR##")    /*  ** "and" primary and secondary register
s  ** (result in primary)  */  ffand() ffcall("CCAND##")    /*  ** logical negat
ion of primary register  */  lneg() ffcall("CCLNEG##")    /*  ** arithmetic shif
t right secondary register  ** number of bits given in primary register  ** (res
ult in primary)  */  ffasr() ffcall("CCASR##")    /*  ** arithmetic shift left s
econdary register  ** number of bits given in primary register  **         /*  *
* test primary register and jump if false  */  testjump(label)  int label     ol
("MOV A,H")    ol("ORA L")    ot("JZ ")    printlabel(label)    nl()        /*  
** test primary register against zero and jump if false  */  zerojump(oper, labe
l, lval) int (*oper)(), label, lval     clearstage(lval7, 0)/* purge conventiona
l code */    (*oper)(label)        /*  ** define storage according to size  */  
defstorage(size) int size     if(size1) ot("DB ")    else        ot("DW ")  RAFB
GCHDIE(result in primary)  */  ffasl() ffcall("CCASL##")    /*  ** two's complem
ent primary register  */  neg() ffcall("CCNEG##")    /*  ** one's complement pri
mary register  */  com() ffcall("CCCOM##")    /*  ** increment primary register 
by one object of whatever size  */  inc(n) int n     while(1)       ol("INX H") 
     if(--n  1) break              /*  ** decrement primary register by one obje
ct of whatever size  */  dec(n) int n     while(1)       ol("DCX H")      if(--n
  1) break        if(streq(ptr+29, "XCHG")) pp2()ptrptr+36        else          
              pp1()ptrptr+29              else if(streq(ptr,"LXI H,2nDAD SPnCALL
 CCGINT##"))         if(streq(ptr+29, "XCHG")) pp3(pp2)ptrptr+36        else    
                    pp3(pp1)ptrptr+29              else if(optimize)         if(
streq(ptr, "DAD SPnCALL CCGINT##"))           ol("CALL CCDSGI##")          ptrpt
r+21                  else if(streq(ptr, "DAD DnCALL CCGINT##"))           ol("C
ALL CCDDG          /*  ** test for equal to  */  ffeq()  ffcall("CCEQ##")    /* 
 ** test for equal to zero  */  eq0(label) int label     ol("MOV A,H")    ol("OR
A L")    ot("JNZ ")    printlabel(label)    nl()        /*  ** test for not equa
l to  */  ffne()  ffcall("CCNE##")    /*  ** test for not equal to zero  */  ne0
(label) int label     ol("MOV A,H")    ol("ORA L")    ot("JZ ")    printlabel(la
bel)    nl()        /*  ** test for less than (signed)  */  fflt()  ffcall("CCLT
##")    /*  **I##")          ptrptr+20                  else if(streq(ptr, "DAD 
SPnCALL CCGCHAR##"))           ol("CALL CCDSGC##")          ptrptr+22           
         else if(streq(ptr, "DAD DnCALL CCGCHAR##"))           ol("CALL CCDDGC##
")          ptrptr+21                  else if(streq(ptr,          "DAD SPnMOV D
,HnMOV E,LnCALL CCGINT##nINX HnCALL CCPINT##"))           ol("CALL CCINCI##")   
       ptrptr+57                  else if(streq(ptr,          "DAD SPnMOV D,HnMO
V E,LnCALL CCGINT test for less than to zero  */  lt0(label) int label     ol("X
RA A")    ol("ORA H")    ot("JP ")    printlabel(label)    nl()        /*  ** te
st for less than or equal to (signed)  */  ffle()  ffcall("CCLE##")    /*  ** te
st for less than or equal to zero  */  le0(label) int label     ol("MOV A,H")   
 ol("ORA L")    ol("JZ $+8")    ol("XRA A")    ol("ORA H")    ot("JP ")    print
label(label)    nl()        /*  ** test for greater than (signed)  */  ffgt()  f
fcall("CCGT##")    /*  *##nDCX HnCALL CCPINT##"))           ol("CALL CCDECI##") 
         ptrptr+57                  else if(streq(ptr,          "DAD SPnMOV D,Hn
MOV E,LnCALL CCGCHAR##nINX HnMOV A,LnSTAX D"))           ol("CALL CCINCC##")    
      ptrptr+59                  else if(streq(ptr,          "DAD SPnMOV D,HnMOV
 E,LnCALL CCGCHAR##nDCX HnMOV A,LnSTAX D"))           ol("CALL CCDECC##")       
   ptrptr+59                  else if(streq(ptr, "DAD DnPOP DnCALL CCPINT##"))  
         ol("CALL CDPDPI* test for greater than to zero  */  gt0(label) int labe
l     ol("XRA A")    ol("ORA H")    ot("JM ")    printlabel(label)    nl()    ol
("ORA L")    ot("JZ ")    printlabel(label)    nl()        /*  ** test for great
er than or equal to (signed)  */  ffge()  ffcall("CCGE##")    /*  ** test for gt
eater than or equal to zero  */  ge0(label) int label     ol("XRA A")    ol("ORA
 H")    ot("JM ")    printlabel(label)    nl()        /*  ** test for less than 
(unsigned)  */  ult()  ffcall("C##")          ptrptr+26                  else if
(streq(ptr, "DAD DnPOP DnMOV A,LnSTAX D"))           ol("CALL CDPDPC##")        
  ptrptr+27                  else if(streq(ptr, "POP DnCALL CCPINT##"))         
  ol("CALL CCPDPI##")          ptrptr+20                  /* additional optimizi
ng logic goes here */        else cout(*ptr++, output)              else cout(*p
tr++, output)              pp1()     ol("POP H")    ol("PUSH H")        pp2()   
  ol("POP D")    ol("PUSH D")    CULT##")    /*  ** test for less than to zero (
unsigned)  */  ult0(label) int label     ot("JMP ")    printlabel(label)    nl()
        /*  ** test for less than or equal to (unsigned)  */  ule()  ffcall("CCU
LE##")    /*  ** test for greater than (unsigned)  */  ugt()  ffcall("CCUGT##") 
   /*  ** test for greater than or equal to (unsigned)  */  uge()  ffcall("CCUGE
##")    #ifdef OPTIMIZE  peephole(ptr) char *ptr     while(*ptr)       if(streq(
ptr,"LXI H,0nDAD SPnCALL CCGINT##"))        RAFBGCHDIE    pp3(pp) int (*pp)()   
  ol("POP B")    (*pp)()    ol("PUSH B")      #endif            ptrptr+27       
           else if(streq(ptr, "POP DnCALL CCPINT##"))           ol("CALL CCPDPI#
#")          ptrptr+20                  /* additional optimizing logic goes here
 */        else cout(*ptr++, output)              else cout(*ptr++, output)     
         pp1()     ol("POP H")    ol("PUSH H")        pp2()     ol("POP D")    o
l("PUSH D")       /* true if current buffer ends file */  /*  ** auxbuf -- alloc
ate an auxiliary input buffer for fd  **   fd  file descriptor of an open file  
** size  size of buffer to be allocated  ** Returns NULL on success, else ERR.  
** Note Ungetc() still works.  **       A 2nd call returns ERR, but has no effec
t.  **       If fd is a device, buffer is allocated but ignored.  **       Buffe
r stays allocated when fd is closed.  **       Do not mix reads and writes or pe
rform seeks on fd.  */  auxbuf(fd, size) in ABS.C 116  /*  ** abs -- returns abs
olute value of nbr  */  abs(nbr)  int nbr     if(nbr  0) return (-nbr)    return
 (nbr)       ATOI.C 308  #define NOCCARGC  /* no argument count passing */  /*  
** atoi(s) - convert s to integer.  */  atoi(s) char *s     int sign, n    while
(isspace(*s)) ++s    sign  1    switch(*s)       case '-' sign  -1      case '+'
 ++s          n  0    while(isdigit(*s)) n  10 * n + *s++ - '0'    return (sign 
* n)       ATOIB.C 484  #define NOCCARGC t fd char *size    /* fake unsigned */ 
   if(!Umode(fd)  !size  avail(NO)  size    Uxsizefd)      return (ERR)    Uxadd
rfd  malloc(size) Uxinit(fd)    Uauxin  Uxinit    /* tell Uopen() where Uxinit()
 is */    Uauxrd  Uxread    /* tell Uread() where Uxread() is */    Uauxwt  Uxwr
ite   /* tell Uwrite() where Uxwrite() is */    Uauxsz  Uxsize    /* tell both w
here Uxsize is */    Uauxfl  Uxflush   /* tell fflush() where Uxflush() is */   
 Uxsizefd  size  /* tell Uread() that f /* no argument count passing */  /*  ** 
atoib(s,b) - Convert s to "unsigned" integer in base b.  **              NOTE Th
is is a non-standard function.  */  atoib(s, b) char *s int b     int n, digit  
  n  0    while(isspace(*s)) ++s    while((digit  (127 & *s++))  '0')       if(d
igit  'a')      digit - 87      else if(digit  'A') digit - 55      else        
          digit - '0'      if(digit  b) break      n  b * n + digit          ret
urn (n)         AUXBUF.C 3204  #defined has aux buf */    return (NULL)        /
*  ** Initialize aux buffer controls  */  Uxinit(fd) int fd     Uxnextfd  Uxendf
d  Uxaddrfd    Uxeoffd  NO        /*  ** Fill buffer if necessary, and return ne
xt byte.  */  Uxread(fd) int fd     char *ptr    while(YES)       ptr  Uxnextfd 
     if(ptr  Uxendfd) ++Uxnextfd return (*ptr)      if(Uxeoffd) Useteof(fd) retu
rn (EOF)      Uauxsz  NULL          /* avoid recursive loop */      Uxendfd  Uxa
ddrfd                + NOCCARGC  /* no argument count passing */  #include stdio
.h  #include clib.def  extern int *Uauxsz, Uauxin, Uauxrd, Uauxwt, Uauxfl, Ustat
us  /*  ** This module is loaded with a program only if auxbuf()  ** is called. 
 It links to Uopen(), Uread(), Uwrite(), and  ** fflush() through Uauxsz, Uauxin
, Uauxrd, Uauxwt, and Uauxfl  ** in CSYSLIB.  This technique reduces the overhea
d for  ** programs which don't use auxiliary buffering.  Presumably,  ** if ther
e is enough memory for extra buffering, there is  * read(fd, UxnextfdUxaddrfd, U
xsizefd)      Uauxsz  Uxsize        /* restore Uauxsz */      if(feof(fd)) Uxeof
fd  YES Uclreof(fd)              /*  ** Empty buffer if necessary, and store ch 
in buffer.  */  Uxwrite(ch, fd) int ch, fd     char *ptr    while(YES)       ptr
  Uxnextfd      if(ptr  (Uxaddrfd + Uxsizefd))        *ptr  ch ++Uxnextfd return
 (ch)      if(Uxflush(fd)) return (EOF)              /*  ** Flush aux buffer to 
file.  */  Uxflush(fd) int fd     int * room to spare for this overhead too.  A 
bug in some  ** versions of Small-C between 2.0 and 2.1 may cause the calls  ** 
to Uauxrd, Uauxwt, and Uauxfl in Uread(), Uwrite(), and  ** fflush(), respective
ly, to produce bad code.  The current  ** compiler corrects the problem.  */  in
t    UxsizeMAXFILES,  /* size of buffer */    UxaddrMAXFILES,  /* aux buffer add
ress */    UxnextMAXFILES,  /* address of next byte in buffer */    UxendMAXFILE
S,   /* address of end-of-data in buffer */    UxeofMAXFILES  RAFBGCHDIEi, j    
i  Uxnextfd - Uxaddrfd    Uauxsz  NULL   /* avoid recursive loop */    j  write(
fd, UxnextfdUxaddrfd, i)    Uauxsz  Uxsize /* restore Uauxsz */    if(i ! j) ret
urn (EOF)    return (NULL)       AVAIL.C 399  #define NOCCARGC  /* no argument c
ount passing */  extern char *Umemptr  /*  ** Return the number of bytes of avai
lable memory.  ** In case of a stack overflow condition, if 'abort'  ** is non-z
ero the program aborts with an 'S' clue,  ** otherwise zero is returned.  */    
 B    STORE A 16-BIT INTEGER IN HL AT THE ADDRESS IN DE  CCPINT  PINT   MOV     
A,L          STAX    D          INX     D          MOV     A,H          STAX    
D          RET    INCLUSIVE "OR" HL AND DE INTO HL  CCOR          MOV     A,L   
       ORA     E          MOV     L,A          MOV     A,H          ORA     D   
       MOV     H,A          RET    EXCLUSIVE "OR" HL AND DE INTO HL  CCXOR      
    MOV     A,L          XRA     E          MOV     L,A          MOV     A,H    
      XRA     D  avail(abort) int abort     char x    if(&x  Umemptr)       if(a
bort) exit('M')      return (0)          return (&x - Umemptr)         CALL.MAC 
8487    ----- CALL Small-C arithmetic and logical library    CCDCAL          PCH
L    CCDDGC          DAD     D          JMP     CCGCHAR    CCDSGC          INX  
   H          INX     H          DAD     SP    FETCH A SINGLE BYTE FROM THE ADDR
ESS IN HL AND SIGN INTO HL  CCGCHAR          MOV     A,M    PUT THE ACCUM INTO H
L AND SIGN EXTEND         MOV     H,A          RET    "AND" HL AND DE INTO HL  C
CAND          MOV     A,L          ANA     E          MOV     L,A          MOV  
   A,H          ANA     D          MOV     H,A          RET    IN ALL THE FOLLOW
ING COMPARE ROUTINES, HL IS SET TO 1 IF THE    CONDITION IS TRUE, OTHERWISE IT I
S SET TO 0 (ZERO).    TEST IF HL  DE    CCEQ          CALL    CCCMP          RZ 
         DCX     H          RET    TEST IF DE ! HL  CCNE          CALL    CCCMP 
         RNZ          DCX     H THROUGH H.  CCARGC  CCSXT          MOV     L,A  
        RLC          SBB     A          MOV     H,A          RET    CCDDGI      
    DAD     D          JMP     CCGINT    CCDSGI          INX     H          INX 
    H          DAD     SP    FETCH A FULL 16-BIT INTEGER FROM THE ADDRESS IN HL 
INTO HL  CCGINT          MOV     A,M          INX     H          MOV     H,M    
      MOV     L,A          RET    CCDECC          INX     H          INX     H  
        DAD     SP          MOV     D,H                 RET    TEST IF DE  HL (S
IGNED)  CCGT          XCHG          CALL    CCCMP          RC          DCX     H
          RET    TEST IF DE  HL (SIGNED)  CCLE          CALL    CCCMP          R
Z          RC          DCX     H          RET    TEST IF DE  HL (SIGNED)  CCGE  
        CALL    CCCMP          RNC          DCX     H          RET    TEST IF DE
  HL (SIGNED)  CCLT          CALL    CCCMP          RC          DCX     H       
   RET    COMMON ROUTINE TO PERFORM A SIGNED COMPARE OF  MOV     E,L          CA
LL    CCGCHAR          DCX     H          MOV     A,L          STAX    D        
  RET    CCINCC          INX     H          INX     H          DAD     SP       
   MOV     D,H          MOV     E,L          CALL    CCGCHAR          INX     H 
         MOV     A,L          STAX    D          RET    CDPDPC          DAD     
D  CCPDPC          POP     B       RET ADDR          POP     D          PUSH    
B    STORE A SINGLE BYTE FROM HL AT THE ADDRESS IN DE  CCPCHAR  PCHAR  MO DE AND
 HL   THIS ROUTINE PERFORMS DE - HL AND SETS THE CONDITIONS   CARRY REFLECTS SIG
N OF DIFFERENCE (SET MEANS DE  HL)   ZERO/NON-ZERO SET ACCORDING TO EQUALITY.  C
CCMP          MOV     A,H     INVERT SIGN OF HL          XRI     80H          MO
V     H,A          MOV     A,D     INVERT SIGN OF DE          XRI     80H       
   CMP     H       COMPARE MSBS          JNZ     CCCMP1  DONE IF NEQ          MO
V     A,E     COMPARE LSBS          CMP     L  CCCMP1 LXI H,1         PRESET TRU
E COND     V     A,L          STAX    D          RET    CCDECI          INX     
H          INX     H          DAD     SP          MOV     D,H          MOV     E
,L          CALL    CCGINT          DCX     H          JMP     CCPINT    CCINCI 
         INX     H          INX     H          DAD     SP          MOV     D,H  
        MOV     E,L          CALL    CCGINT          INX     H          JMP     
CCPINT    CDPDPI          DAD     D  CCPDPI          POP     B       RET ADDR   
       POP     D          PUSH   RAFBGCHDIE     RET    TEST IF DE  HL (UNSIGNED)
  CCUGE          CALL    CCUCMP          RNC          DCX     H          RET    
TEST IF DE  HL (UNSIGNED)  CCULT          CALL    CCUCMP          RC          DC
X     H          RET    TEST IF DE  HL (UNSIGNED)  CCUGT          XCHG          
CALL    CCUCMP          RC          DCX     H          RET    TEST IF DE  HL (UN
SIGNED)  CCULE          CALL    CCUCMP          RZ          RC          DCX     
H          RET    COMMON ROUTINE TO PERFORM UNSIGNE,0  CCDIV1 DAD     H         
 CALL    CCRDEL          JZ      CCDIV2          CALL    CCCMPBCDE          JM  
    CCDIV2          MOV     A,L          ORI     1          MOV     L,A         
 MOV     A,E          SUB     C          MOV     E,A          MOV     A,D       
   SBB     B          MOV     D,A  CCDIV2 POP     PSW          DCR     A        
  JZ      CCDIV3          PUSH    PSW          JMP     CCDIV1  CCDIV3 POP     PS
W          RP          CALL    CCDENEG          XCHG          CALL    CCDENEG   
D COMPARE   CARRY SET IF DE  HL   ZERO/NONZERO SET ACCORDINGLY  CCUCMP          
MOV     A,D          CMP     H          JNZ     UCMP1          MOV     A,E      
    CMP     L  UCMP1  LXI     H,1          RET    SHIFT DE ARITHMETICALLY RIGHT 
BY HL AND RETURN IN HL  CCASR          XCHG          DCR     E          RM      
    MOV     A,H          RAL          MOV     A,H          RAR          MOV     
H,A          MOV     A,L          RAR          MOV     L,A          JMP     CCAS
R+1    SHIFT DE ARIT       XCHG          RET    NEGATE THE INTEGER IN DE (INTERN
AL ROUTINE)  CCDENEG MOV    A,D          CMA          MOV     D,A          MOV  
   A,E          CMA          MOV     E,A          INX     D          RET    NEGA
TE THE INTEGER IN BC (INTERNAL ROUTINE)  CCBCNEG MOV    A,B          CMA        
  MOV     B,A          MOV     A,C          CMA          MOV     C,A          IN
X     B          RET    ROTATE DE LEFT ONE BIT (INTERNAL ROUTINE)  CCRDEL MOV   
  A,E          RAL          MOV     E,A    HMETICALLY LEFT BY HL AND RETURN IN H
L  CCASL          XCHG          DCR     E          RM          DAD     H        
  JMP     CCASL+1    SUBTRACT HL FROM DE AND RETURN IN HL  CCSUB          MOV   
  A,E          SUB     L          MOV     L,A          MOV     A,D          SBB 
    H          MOV     H,A          RET    FORM THE TWO'S COMPLEMENT OF HL  CCNE
G          CALL    CCCOM          INX     H          RET    FORM THE ONE'S COMPL
EMENT OF HL  CCCOM          MOV     A,H          CMA               MOV     A,D  
        RAL          MOV     D,A          ORA     E          RET    COMPARE BC T
O DE (INTERNAL ROUTINE)  CCCMPBCDE MOV  A,E          SUB     C          MOV     
A,D          SBB     B          RET    LOGICAL NEGATION  CCLNEG          MOV    
 A,H          ORA     L          JNZ     $+6          MVI     L,1          RET  
        LXI     H,0          RET     EXECUTE "SWITCH" STATEMENT      HL    SWITC
H VALUE   (SP) - SWITCH TABLE           DW ADDR1, VALUE1           DW ADDR2,  MO
V     H,A          MOV     A,L          CMA          MOV     L,A          RET   
 MULTIPLY DE BY HL AND RETURN IN HL (SIGNED MULTIPLY)  CCMULT  MULT   MOV     B,
H          MOV     C,L          LXI     H,0  MULT1  MOV     A,C          RRC    
      JNC     MULT2          DAD     D  MULT2  XRA A          MOV     A,B       
   RAR          MOV     B,A          MOV     A,C          RAR          MOV     C
,A          ORA     B          RZ          XRA     A          MOV     A,E       
   RAL          MOV   VALUE2           ...           DW 0          JMP default  
         continuation    CCSWITCH          XCHG            DE   SWITCH VALUE    
      POP     H       HL - SWITCH TABLE  SWLOOP MOV     C,M          INX     H  
        MOV     B,M     BC - CASE ADDR, ELSE 0          INX     H          MOV  
   A,B          ORA     C          JZ      SWEND   DEFAULT OR CONTINUATION CODE 
         MOV     A,M          INX     H          CMP     E          MOV     A,M 
         INX     H          JNZ     S  E,A          MOV     A,D          RAL    
      MOV     D,A          ORA     E          RZ          JMP     MULT1    DIVID
E DE BY HL AND RETURN QUOTIENT IN HL, REMAINDER IN DE (SIGNED DIVIDE)  CCDIV  DI
V    MOV     B,H          MOV     C,L          MOV     A,D          XRA     B   
       PUSH    PSW          MOV     A,D          ORA     A          CM      CCDE
NEG          MOV     A,B          ORA     A          CM      CCBCNEG          MV
I     A,16          PUSH    PSW          XCHG          LXI     D  RAFBGCHDIEWLOO
P          CMP     D          JNZ     SWLOOP          MOV     H,B     CASE MATCH
ED          MOV     L,C  SWEND  PCHL    Uend lhld  6           get bdos address 
       sphl              use for base of stack        lxi   h,Uend      get star
t of free memory        shld  Umemptr##   use for memory allocation        jmp  
 Umain##     parse command line, execute program        end   Uend          CALL
OC.C 360  #define NOCCARGC  /* no argument count passing */  #include stdio.h  /
*  ** Cleared-me#define GETPOS   36  /* get number of current sector */  #define
 WRTRND   40  /* write sector randomly */  /*  ** Device codes  */  #define CPMC
ON DCONIO /* console */  #define CPMRDR RDRINP /* reader  */  #define CPMPUN PUN
OUT /* punch   */  #define CPMLST LSTOUT /* list    */  /*  ** File status bits 
 */  #define RDBIT      1  /* open for read */  #define WRTBIT     2  /* open fo
r write */  #define EOFBIT     4  /* eof condition */  #define ERRBIT     8  /* 
error condition */  /*  ** ASCII characters  */ mory allocation of n items of si
ze bytes.  ** n      Number of items to allocate space for.  ** size   Size of t
he items in bytes.  ** Returns the address of the allocated block,  ** else NULL
 for failure.  */  calloc(n, size) char *n, *size     return (Ualloc(n*size, YES
))       CLEARERR.C 206  #define NOCCARGC  /* no arg count passing */  #include 
stdio.h  #include clib.def  extern int Ustatus  /*  ** Clear error status for fd
.  */  clearerr(fd) int fd     if(Umode(fd)) Ustatusfd & ERRBI #define ABORT    
3  #define RUB      8  #define PAUSE   19  #define WIPE    24  #define DEL    12
7   CSEEK.C 908  #define NOCCARGC  /* no argument count passing */  #include std
io.h  #include clib.def  extern int Ufcbptr, Uchrpos, Unextc  /*  ** Position fd
 to the 128-byte record indicated by  ** "offset" relative to the point indicate
d by "base."  **   **     BASE     OFFSET-RELATIVE-TO  **       0      first rec
ord  **       1      current record  **       2      end of file (last record + 
1)  T         CLIB.DEF 2056  /*  ** CLIB.DEF -- Definitions for Small-C library 
functions.  **  ** Copyright 1983  L. E. Payne and J. E. Hendrix  */    /*  ** D
efinition of CP/M FCB and additional parameters  */  #define FCBSIZE   36  /* si
ze of file control block */  #define DRIVE      0  /* CP/M drive designator offs
et */  #define NAMEOFF    1  /* CP/M file name offset */  #define NAMEOFF2  16  
/* CP/M 2nd file name offset */  #define NAMESIZE   8  /* CP/M file name size */
  #define TYPEOFF    9  /* CP/M**  ** Returns NULL on success, else EOF.  */  cs
eek(fd, offset, base) int fd, offset, base     int oldrrn, *rrn    if(!Umode(fd)
  isatty(fd)  fflush(fd)) return (EOF)    rrn  Ufcbptrfd + RRNOFF    oldrrn  *rr
n    switch (base)       case 2 Ubdos(POSEND, Ufcbptrfd)      case 1 *rrn + offs
et break      case 0 *rrn  offset  break      default return (EOF)          if(U
sector(fd,  RDRND))       *rrn  oldrrn      return (EOF)          Uchrposfd  0  
  Unextcfd  EOF    U file type offset */  #define TYPESIZE   3  /* CP/M file typ
e size */  #define NTSIZE    11  /* CP/M file name & type size */  #define RRNOF
F    33  /* CP/M random record number offset */  #define CPMEOF    26  /* CP/M e
nd-of-file byte */  #define BUFSIZE  128  /* size of I/O buffer */  #define MAXF
ILES  10  /* maximum open files */  /*  ** CP/M function calls  */  #define GOCP
M     0  /* go to CP/M */  #define RDRINP    3  /* reader input */  #define PUNO
UT    4  /* punch output */  #define LSTOUT    5  /*clreof(fd)    return (NULL) 
        CSYSLIB.C 10216    /*  ** CSYSLIB -- System-Level Library Functions  */ 
   #include stdio.h  #include clib.def  #define NOCCARGC    /* no argument count
 passing */  #define DIR         /* compile directory option */    /*  *********
********* System Variables ********************  */    int   *Uauxsz,           
 /* addr of Uxsize in AUXBUF */    Uauxin,            /* addr of Uxinit() in AUX
BUF */    Uauxrd,            /* addr of Uxread() in AUXBUF */    Uauxwt,     lis
t output */  #define DCONIO    6  /* direct console i/o */  #define OPNFIL   15 
 /* open file */  #define CLOFIL   16  /* close file */  #define FNDFIL   17  /*
 find first occurrence of a file */  #define FNDNXT   18  /* find next occurrenc
e of a file */  #define DELFIL   19  /* delete file */  #define MAKFIL   22  /* 
make file */  #define RENAME   23  /* rename file */  #define SETDMA   26  /* se
t dma */  #define RDRND    33  /* read sector randomly */  #define POSEND   35  
/* position file to end */    RAFBGCHDIE        /* addr of Uxwrite() in AUXBUF *
/    Uauxfl,            /* addr of Uxflush() in AUXBUF */      Ucnt1,           
 /* arg count for main */    Uvec20,          /* arg vectors for main */      Us
tatusMAXFILES  RDBIT, WRTBIT, RDBITWRTBIT,                       /* status of re
spective file */    UdeviceMAXFILES  CPMCON, CPMCON, CPMCON,                    
   /* non-disk device assignments */    UnextcMAXFILES   EOF, EOF, EOF,         
              /* pigeonhole for ungetc bytes */    UfdRDBIT  return (fd)        
  if(strcmp(fn,"PUN")0)       UdevicefdCPMPUN UstatusfdWRTBIT return (fd)       
   if(strcmp(fn,"LST")0)       UdevicefdCPMLST UstatusfdWRTBIT return (fd)      
    if(fcb  Ufcbptrfd) pad(fcb, NULL, FCBSIZE)    else       if((fcb  Ufcbptrfd 
 Ualloc(FCBSIZE, YES))  NULL             (Ubufptrfd  Ualloc(BUFSIZE, YES))  NULL
)          return (ERR)          pad(Ubufptrfd, CPMEOF, BUFSIZE)    Udirtyfd  Ud
evicefd  Uchrposfd  cbptrMAXFILES, /* FCB pointers for open files */    UbufptrM
AXFILES, /* buffer pointers for files */    UchrposMAXFILES, /* character positi
on in buffer */    UdirtyMAXFILES  /* "true" if changed buffer */    char   *Ume
mptr,           /* pointer to free memory. */    Uarg1"*"       /* first arg for
 main */    /*  *************** System-Level Functions *****************  */    
/*  ** -- Process Command Line, Execute main(), and Exit to CP/M  */  Umain()   
  Uparse()    main(Ucnt,Uvec)    exi0  #ifdef DIR    if(fn1  '' && fn2  NULL)   
/* directory file */      pad(fcb, NULL, FCBSIZE)      pad(fcb+NAMEOFF, '', NTSI
ZE)      if(toupper(fn0) ! 'X') *fcb  toupper(fn0) - 64      Uchrposfd  BUFSIZE 
     Udevicefd  FNDFIL      Ustatusfd  RDBIT      return (fd)        #endif    i
f(!Unewfcb(fn,fcb)) return (ERR)    switch(*mode)       case 'r'         if(Ubdo
s(OPNFIL,fcb)255) return (ERR)        Ustatusfd   RDBIT        if(Usector(fd,  R
DRND)) Useteof(fd)   t(0)        /*  ** Parse command line and setup argc and ar
gv.  */  Uparse()     char *count, *ptr    count  128  /* CP/M command buffer ad
dress */    ptr  Ualloc((count  *count&255)+1, YES)    strncpy(ptr, 129, count) 
   Uvec0Uarg1/* first arg  "*" */    while (*ptr)       if(isspace(*ptr)) ++ptr 
continue      switch(*ptr)         case '' ptr  Uredirect(ptr, "r", stdin)      
            continue        case '' if(*(ptr+1)  '')                       ptr  
Uredirect(ptr+1,      break              case 'w'         if(Ubdos(FNDFIL,fcb)!2
55) Ubdos(DELFIL,fcb)      create        if(Ubdos(MAKFIL,fcb)255) return (ERR)  
      Ustatusfd  EOFBITWRTBIT        break              default       /* append 
mode */        if(Ubdos(OPNFIL,fcb)255) goto create        Ustatusfd  RDBIT     
   cseek(fd, -1, 2)        while(fgetc(fd)!EOF)         Ustatusfd  EOFBITWRTBIT 
                 if(*(mode+1)'+') Ustatusfd  RDBITWRTBIT    return (fd)        /
*  "a", stdout)                  else ptr  Uredirect(ptr,   "w", stdout)        
          continue        default  if(Ucnt  20) UvecUcnt++  ptr                 
 ptr  Ufield(ptr)                      /*  ** Isolate next command-line field.  
*/  Ufield(ptr) char *ptr     while(*ptr)       if(isspace(*ptr))         *ptr  
NULL        return (++ptr)              ++ptr          return (ptr)        /*  *
* Redirect stdin or stdout.  */  Uredirect(ptr, mode, std)  char *ptr, *mode int
 std ** Create CP/M file control block from file name.   ** Entry fn   Legal CP/
M file name (null terminated)  **              May be prefixed by letter of driv
e.  **        fcb  Pointer to memory space for CP/M fcb.  ** Returns the pointer
 to the fcb.  */  Unewfcb(fn, fcb) char *fn, *fcb     char *fnptr    pad(fcb+1, 
SPACE, NTSIZE)    if(*(fn + 1)  '')       *fcb  toupper(*fn) - 64      fnptr  fn
 + 2          else fnptr  fn    if(*fnptr  NULL) return (NO)    fnptr  Uloadfn(f
cb + NAMEOFF, f    char *fn    fn  ++ptr    ptr  Ufield(ptr)    if(Uopen(fn, mod
e, std)ERR) exit('R')    return (ptr)        /*  ** ------------ File Open  */  
  /*  ** Open file on specified fd.  */  Uopen(fn, mode, fd) char *fn, *mode int
 fd     char *fcb    if(!strchr("rwa", *mode)) return (ERR)    Unextcfd  EOF    
if(Uauxin) Uauxin(fd)    if(strcmp(fn,"CON")0)       UdevicefdCPMCON UstatusfdRD
BITWRTBIT return (fd)          if(strcmp(fn,"RDR")0)       UdevicefdCPMRDR Ustat
usf  RAFBGCHDIEnptr, NAMESIZE)    if(*fnptr  '.') ++fnptr    else if(*fnptr) ret
urn (NO)    fnptr  Uloadfn(fcb + TYPEOFF, fnptr, TYPESIZE)    if(*fnptr) return 
(NO)    return (YES)        /*  ** Load into fcb and validate file name.  */  Ul
oadfn(dest, sour, max) char *dest, *sour int max     while(*sour && !strchr(".,*
", *sour))       if(max--) *dest++  toupper(*sour++)      else break          re
turn (sour)        /*  ** ------------ File Input  */    /*  ** Binary-stream in
put of one byte fro *bufloc    switch (Umode(fd))       default Useterr(fd) retu
rn (EOF)      case WRTBIT      case WRTBITRDBIT      case WRTBITEOFBIT      case
 WRTBITEOFBITRDBIT          switch(Udevicefd)       /* RDR can't occur since it 
is read mode */      case CPMCON return (Uconout(ch))      case CPMPUN      case
 CPMLST Ubdos(Udevicefd, ch)                   break      default        if(Uaux
sz && Uauxszfd) return (Uauxwt(ch, fd))        if(UchrposfdBUFSIZE && !Uputsec(f
d)) return (EOF) m fd.  */  Uread(fd) int fd     char *bufloc    int ch    switc
h (Umode(fd))       default Useterr(fd) return (EOF)      case RDBIT      case R
DBITWRTBIT          if((ch  Unextcfd) ! EOF)       Unextcfd  EOF      return (ch
)          switch(Udevicefd)       /* PUN & LST can't occur since they are write
 mode */      case CPMCON return (Uconin())      case CPMRDR return (Ubdos(RDRIN
P,NULL))      default           if(Uauxsz && Uauxszfd) return (Uauxrd(fd))      
     if(Uchrpos       bufloc  Ubufptrfd + Uchrposfd++        *bufloc  ch        
Udirtyfd  YES          return (ch)        /*  ** Console character output.  */  
Uconout(ch) int ch     Ubdos(DCONIO, ch)    return (ch)        /*  ** Write one 
sector to fd.   */  Uputsec(fd) int fd     if(fflush(fd)) return (NO)    Uadvanc
e(fd)    if(Ustatusfd&EOFBIT  Usector(fd, RDRND))      pad(Ubufptrfd, CPMEOF, BU
FSIZE)    return (YES)        /*  ** ------------ Buffer Service  */    /*  ** A
dvance to nextfdBUFSIZE && !Ugetsec(fd))             return (EOF)           bufl
oc  Ubufptrfd + Uchrposfd++           return (*bufloc)              /*  ** Conso
le character input.  */  Uconin()     int ch    while(!(ch  Ubdos(DCONIO, 255)))
     switch(ch)       case ABORT exit(0)      case    LF      case    CR Uconout
(LF) return (Uconout(CR))      case   DEL ch  RUB         default if(ch  32)  Uc
onout('') Uconout(ch+64)                  else Uconout(ch)                  retu
rn (ch)   sector.  */  Uadvance(fd) int fd     int *rrn    rrn  Ufcbptrfd + RRNO
FF    ++(*rrn)    Uchrposfd  0        /*  ** Sector I/O.  */  Usector(fd, func) 
int fd, func     int error    Ubdos(SETDMA, Ubufptrfd)    error  Ubdos(func, Ufc
bptrfd)    Ubdos(SETDMA, 128)    Udirtyfd  NO    return (error)        /*  ** --
---------- File Status  */    /*  ** Return fd's open mode, else NULL.  */  Umod
e(fd) char *fd     if(fd  MAXFILES) return (Ustatusfd)    return (NULL)        /
*              /*  ** Read one sector from fd.  */  Ugetsec(fd) int fd   #ifdef 
DIR    if(Udevicefd)         /* directory file */      char *bp, *name, *type, *
end      Ubdos(SETDMA, 128)      if((name  Ubdos(Udevicefd, Ufcbptrfd))  255)   
      Useteof(fd)        return (NO)              Udevicefd  FNDNXT      name  (
name  5) + (128 + NAMEOFF)      type  name + NAMESIZE      end  name + NTSIZE   
   bp  Ubufptrfd + BUFSIZE      *--bp  CR      while(--end  name)  /* put ** Set
 eof status for fd and  ** disable future i/o unless writing is allowed.  */  Us
eteof(fd) int fd     Ustatusfd  EOFBIT        /*  ** Clear eof status for fd.  *
/  Uclreof(fd) int fd     Ustatusfd & EOFBIT        /*  ** Set error status for 
fd.  */  Useterr(fd) int fd     Ustatusfd  ERRBIT        /*  ** ------------ Mem
ory Allocation  */    /*  ** Allocate n bytes of (possibly zeroed) memory.  ** E
ntry n  Size of the items in bytes.  **    clear  "true" if clearing is desiredf
ilename at end of buffer */        if(*end  SPACE) continue        *--bp  *end  
      if(end  type) *--bp  '.'              Uchrposfd  bp - Ubufptrfd      retur
n (YES)        #endif    if(fflush(fd)) return (NO)    Uadvance(fd)    if(Usecto
r(fd, RDRND))       pad(Ubufptrfd, CPMEOF, BUFSIZE)      Useteof(fd)      return
 (NO)          return (YES)        /*  ** ------------ File Output  */    /*  **
 Binary-Stream output of one byte to fd.  */  Uwrite(ch, fd) int ch, fd     char
  RAFBGCHDIE.  ** Returns the address of the allocated block of memory  ** or NU
LL if the requested amount of space is not available.  */  Ualloc(n, clear) char
 *n int clear     char *oldptr    if(n  avail(YES))       if(clear) pad(Umemptr,
 NULL, n)      oldptr  Umemptr      Umemptr + n      return (oldptr)          re
turn (NULL)        /*  ** ------------ CP/M Interface  */    /*  ** Issue CP/M f
unction and return result.   ** Entry c   CP/M function code (register C)  **   
     de  CP/M parameter (rrn int Ufcbptr, Ustatus, Udevice  fclose(fd) int fd   
  if(!Umode(fd)) return (ERR)    if(!isatty(fd))       if(fflush(fd)  Ubdos(CLOF
IL,Ufcbptrfd)255)        return (ERR)          return (UstatusfdUdevicefdNULL)  
       FEOF.C 264  #define NOCCARGC  /* no argument count passing */  #include c
lib.def  extern int Ustatus  /*  ** Test for end-of-file status.  ** Entry fd  f
ile descriptor  ** Returns non-zero if fd is at eof, else zero.  */  feof(fd) in
t fd     return (Ustaegister DE or E)  ** Returns the CP/M return code (register
 A)  */  Ubdos(c,de) int c,de   #asm          pop     h       hold return addres
s          pop     d       load CP/M function parameter          pop     b      
 load CP/M function number          push    b       restore          push    d  
       the          push    h            stack          call    5       call bdo
s          mvi     h,0               mov     l,a     return the CP/M response  #
endasm       CTELL.C 397  #define NOCCtusfd & EOFBIT)         FERROR.C 194  #def
ine NOCCARGC  /* no arg count passing */  #include stdio.h  #include clib.def  e
xtern Ustatus  /*  ** Test for error status on fd.  */  ferror(fd) int fd     re
turn (Ustatusfd & ERRBIT)       FFLUSH.C 584  #define NOCCARGC  /* no argument c
ount passing */  #include stdio.h  #include clib.def  extern int Udirty, *Uauxsz
, Uauxfl  /*  ** Write buffer for fd if it has changes.  ** Entry fd  File descr
iptor of pertinent file.  ** Returns NULL on sARGC  /* no arg count passing */  
#include stdio.h  #include clib.def  extern int Ufcbptr, Uchrpos  /*  ** Return 
offset to current 128-byte record.  */  ctell(fd) int fd     int *rrn    if(!Umo
de(fd)  isatty(fd)) return (-1)    rrnUfcbptrfd+RRNOFF    return (*rrn)      /* 
 ** Return offset to next character in current buffer.  */  ctellc(fd) int fd   
  return (Uchrposfd)         DTOI.C 417  #define NOCCARGC  /* no argument count 
passing */  #include stdio.h  /*  ** dtoi -- convertuccess, otherwise EOF.  ** R
eturns NULL if file is opened for input only  **         or if it is not a disk 
file.  */  fflush(fd) int fd     if(Umode(fd) & WRTBIT)       if((Uauxsz && Uaux
szfd && Uauxfl(fd))          (!isatty(fd) && Udirtyfd && Usector(fd, WRTRND)))  
       Useterr(fd)        return (ERR)                  return (NULL)         FG
ETC.C 761  #define NOCCARGC  /* no argument count passing */  #include stdio.h  
#include clib.def  extern int Uchrpos  /*  ** Character-stream signed decimal st
ring to integer nbr  **         returns field length, else ERR on error  */  dto
i(decstr, nbr)  char *decstr  int *nbr      int len, s    if((*decstr)'-') s1 ++
decstr else s0    if((lenutoi(decstr, nbr))0) return ERR    if(*nbr0) return ERR
    if(s) *nbr  -*nbr return ++len else return len       EXIT.C 420  #define NOC
CARGC  /* no argument count passing */  #include stdio.h  #include clib.def  /* 
 ** Close all open files and exit to CP/M.   ** Entry errcode  C input of one ch
aracter from fd.  ** Entry fd  File descriptor of pertinent file.  ** Returns th
e next character on success, else EOF.  */  fgetc(fd) int fd     int ch    while
(1)       switch(ch  Uread(fd))         default     return (ch)        case CPME
OF switch(Uchrposfd)                        default --Uchrposfd                 
      case 0                       case BUFSIZE                                 
           Useteof(fd)                     return (EOF)        case CR  haracter
 to be sent to stderr.  ** Returns to CP/M rather than the caller.  */  exit(err
code) char errcode     int fd    if(errcode) Uconout(errcode)    for(fd0 fd  MAX
FILES fclose(fd++))    Ubdos(GOCPM,NULL)      #asm  abort  equ    exit         e
ntry  abort  #endasm   FCLOSE.C 442  #define NOCCARGC  /* no argument count pass
ing */  #include stdio.h  #include clib.def  /*  ** Close fd   ** Entry fd  File
 descriptor for file to be closed.  ** Returns NULL for success, otherwise ERR  
*/  exte  RAFBGCHDIE   return ('n')        case LF    /* NOTE Uconin() maps LF -
 CR */                    #asm  getc equ   fgetc       entry getc  #endasm     F
GETS.C 1813  #define NOCCARGC  /* no arg count passing */  #include stdio.h  #in
clude clib.def  /*  ** Gets an entire string (including its newline  ** terminat
or) or size-1 characters, whichever comes  ** first. The input is terminated by 
a null character.  ** Entry str   Pointer to destination buffer.  **        size
  Size of the destination buffer.  **  descriptor on success, else NULL.  */  fo
pen(fn, mode) char *fn, *mode     int fd    fd  0 /* skip stdin ( error return) 
*/    while(++fd  MAXFILES)       if(Umode(fd)  NULL)         if(Uopen(fn, mode,
 fd)!ERR) return (fd)        break                  return (NULL)         FPRINT
F.C 2275  #define NOCCARGC   /*  ** Yes, that is correct.  Although these functi
ons use an  ** argument count, they do not call functions which need one.  */  #
include stdio.h  /*  ** fprintf(fd, ctlstring, ar       fd    File descriptor of
 pertinent file.  ** Returns str on success, else NULL.  */  fgets(str, size, fd
) char *str int size, fd     return (Ugets(str, size, fd, 1))        /*  ** Gets
 an entire string from stdin (excluding its newline  ** terminator) or size-1 ch
aracters, whichever comes  ** first. The input is terminated by a null character
.  ** The user buffer must be large enough to hold the data.  ** Entry str   Poi
nter to destination buffer.  ** Returns str on success, else NULL.  */  gg, arg,
 ...) - Formatted print.  ** Operates as described by Kernighan & Ritchie.  ** b
, c, d, o, s, u, and x specifications are supported.  ** Note b (binary) is a no
n-standard extension.  */  fprintf(argc) int argc     int *nxtarg    nxtarg  CCA
RGC() + &argc    return(Uprint(*(--nxtarg), --nxtarg))        /*  ** printf(ctls
tring, arg, arg, ...) - Formatted print.  ** Operates as described by Kernighan 
& Ritchie.  ** b, c, d, o, s, u, and x specifications are supported.  ** Note b 
(binary) is a noets(str) char *str     return (Ugets(str, 32767, stdin, 0))     
   Ugets(str, size, fd, nl) char *str int size, fd, nl     int backup    char *n
ext    next  str    while(--size  0)       switch (*next  fgetc(fd))         cas
e  EOF *next  NULL                   if(next  str) return (NULL)                
   return (str)        case 'n' *(next + nl)  NULL                   return (str
)        case  RUB if(next  str) backup  1 else backup  0                   goto
 backout      n-standard extension.  */  printf(argc) int argc     return(Uprint
(stdout, CCARGC() + &argc - 1))        /*  ** Uprint(fd, ctlstring, arg, arg, ..
.)  ** Called by fprintf() and printf().  */  Uprint(fd, nxtarg) int fd, *nxtarg
     int  arg, left, pad, cc, len, maxchr, width    char *ctl, *sptr, str17    c
c  0                                             ctl  *nxtarg--                 
             while(*ctl)       if(*ctl!'%') fputc(*ctl++, fd) ++cc continue     
 else ++ctl      if(*ctl  case WIPE backup  next - str          backout         
          if(iscons(fd))                      fputs("b bb b", stderr)           
          ++size                     while(backup--)                        fput
s("b b", stderr)                       if(*--next  32) fputs("b b", stderr)     
                  ++size                                            continue    
                           default ++next                  *next  NULL    return
 (str)         FOPEN.C'%') fputc(*ctl++, fd) ++cc continue      if(*ctl'-') left
  1 ++ctl else left  0             if(*ctl'0') pad  '0' else pad  ' '           
      if(isdigit(*ctl))         width  atoi(ctl++)        while(isdigit(*ctl)) +
+ctl              else width  0      if(*ctl'.')                     maxchr  ato
i(++ctl)        while(isdigit(*ctl)) ++ctl              else maxchr  0      arg 
 *nxtarg--      sptr  str      switch(*ctl++)         case 'c' str0  arg str1  N
ULL 771  #define NOCCARGC  /* no arg count passing */  #include stdio.h  #includ
e clib.def  /*  ** Open file indicated by fn.  ** Entry fn    Null-terminated CP
/M file name.  **               May be prefixed by letter of dirve.  **         
      May be just CON, RDR, PUN, or LST.  **        mode  "a"  - append  **     
          "r"  - read  **               "w"  - write  **               "a+" - ap
pend update  **               "r+" - read   update  **               "w+" - writ
e  update  ** Returns a file  RAFBGCHDIE break        case 's' sptr  arg        
break        case 'd' itoa(arg,str)     break        case 'b' itoab(arg,str,2)  
break        case 'o' itoab(arg,str,8)  break        case 'u' itoab(arg,str,10) 
break        case 'x' itoab(arg,str,16) break        default  return (cc)       
       len  strlen(sptr)      if(maxchr && maxchrlen) len  maxchr      if(widthl
en) width  width - len else width  0       if(!left) while(width--) fputc(pad,fd
) ++cc      while(len--) fputc(*sfine NOCCARGC  /* no argument count passing */ 
 extern char *Umemptr  /*  ** free(ptr) - Free previously allocated memory block
.  ** Memory must be freed in the reverse order from which  ** it was allocated.
  ** ptr     Value returned by calloc() or malloc().  ** Returns ptr if successf
ul or NULL otherwise.  */  free(ptr) char *ptr      return (Umemptr  ptr)       
#asm  cfree  equ    free         entry  cfree  #endasm   FREOPEN.C 729  #define 
NOCCARGC  /* no argument count passing */  #include stdptr++,fd) ++cc       if(l
eft) while(width--) fputc(pad,fd) ++cc            return(cc)         FPUTC.C 574
  #define NOCCARGC  /* no arg count passing */  #include stdio.h  #include clib.
def  extern int Ustatus  /*  ** Character-stream output of a character to fd.  *
* Entry ch  Character to write.  **        fd  File descriptor of perinent file.
  ** Returns character written on success, else EOF.  */  fputc(ch, fd) int ch, 
fd     switch(ch)       case EOF  Uwrite(CPMEOF, fd) break    io.h  /*  ** Close
 previously opened fd and reopen it.   ** Entry fn    Null-terminated CP/M file 
name.  **               May be prefixed by letter of drive.  **               Ma
y be just CON, RDR, PUN, or LST.  **        mode  "a"  - append  **             
  "r"  - read  **               "w"  - write  **               "a+" - append upd
ate  **               "r+" - read   update  **               "w+" - write  updat
e  **        fd    File descriptor of pertinent file.  ** Returns the original f
d on s  case 'n' Uwrite(CR, fd) Uwrite(LF, fd) break      default   Uwrite(ch, f
d)          if(Ustatusfd & ERRBIT) return (EOF)    return (ch)      #asm  putc e
qu   fputc       entry putc  #endasm   FPUTS.C 306  #define NOCCARGC  /* no arg 
count passing */  #include stdio.h  #include clib.def  /*  ** Write a string to 
fd.   ** Entry string  Pointer to null-terminated string.  **        fd      Fil
e descriptor of pertinent file.  */  fputs(string,fd) char *string int fd     wh
ile(*string) fpuuccess, else NULL.  */  freopen(fn, mode, fd) char *fn, *mode in
t fd     if(fclose(fd)) return (NULL)    if(Uopen(fn, mode, fd)ERR) return (NULL
)    return (fd)       FSCANF.C 2685  #define NOCCARGC  /* no argument count pas
sing */  /*  ** Yes, that is correct.  Although these functions use an  ** argum
ent count, they do not call functions which need one.  */  #include stdio.h  /* 
 ** fscanf(fd, ctlstring, arg, arg, ...) - Formatted read.  ** Operates as descr
ibed by Kernighan & Ritchie.  ** b, tc(*string++, fd)          FREAD.C 926  #def
ine NOCCARGC  /* no argument count passing */  #include clib.def  extern int Ust
atus  /*  ** Item-stream read from fd.  ** Entry buf  address of target buffer  
**         sz  size of items in bytes  **          n  number of items to read  *
*         fd  file descriptor  ** Returns a count of the items actually read.  *
* Use feof() and ferror() to determine file status.  */  fread(buf, sz, n, fd) c
har *buf int sz, n, fd     return (read(fd, buf, n*sc, d, o, s, u, and x specifi
cations are supported.  ** Note b (binary) is a non-standard extension.  */  fsc
anf(argc) int argc     int *nxtarg    nxtarg  CCARGC() + &argc    return (Uscan(
*(--nxtarg), --nxtarg))        /*  ** scanf(ctlstring, arg, arg, ...) - Formatte
d read.  ** Operates as described by Kernighan & Ritchie.  ** b, c, d, o, s, u, 
and x specifications are supported.  ** Note b (binary) is a non-standard extens
ion.  */  scanf(argc) int argc     return (Uscan(stdin, CCARGC() + &argc z)/sz) 
       /*  ** Binary-stream read from fd.  ** Entry  fd  file descriptor  **    
    buf  address of target buffer  **          n  number of bytes to read  ** Re
turns a count of the bytes actually read.  ** Use feof() and ferror() to determi
ne file status.  */  read(fd, buf, n) int fd, n char *buf     char *cnt  /* fake
 unsigned */    cnt  0    while(n--)       *buf++  Uread(fd)      if(Ustatusfd &
 (ERRBIT  EOFBIT)) break      ++cnt          return (cnt)       FREE.C 417  #de 
 RAFBGCHDIE- 1))        /*  ** Uscan(fd, ctlstring, arg, arg, ...) - Formatted r
ead.  ** Called by fscanf() and scanf().  */  Uscan(fd,nxtarg) int fd, *nxtarg  
   char *carg, *ctl, *unsigned    int  *narg, wast, ac, width, ch, cnv, base, ov
fl, sign    ac  0    ctl  *nxtarg--    while(*ctl)       if(isspace(*ctl)) ++ctl
 continue      if(*ctl++ ! '%') continue      if(*ctl  '*') narg  carg  &wast ++
ctl      else             narg  carg  *nxtarg--      ctl + utoi(ctl, &width)    
  if(!width) escriptor  **        buf  address of source buffer  **          n  
number of bytes to write  ** Returns a count of the bytes actually written or  *
* -1 if an error occurred.  ** May use ferror(), as always, to detect errors.  *
/  write(fd, buf, n) int fd, n char *buf     char *cnt  /* fake unsigned */    c
nt  n    while(cnt--)       Uwrite(*buf++, fd)      if(Ustatusfd & ERRBIT) retur
n (-1)          return (n)       GETARG.C 669  #define NOCCARGC  /* no argument 
count passing */  #includewidth  32767      if(!(cnv  *ctl++)) break      while(
isspace(ch  fgetc(fd)))       if(ch  EOF) if(ac) break else return(EOF)      ung
etc(ch,fd)      switch(cnv)         case 'c'          *carg  fgetc(fd)          
break        case 's'          while(width--)             if((*carg  fgetc(fd)) 
 EOF) break            if(isspace(*carg)) break            if(carg ! &wast) ++ca
rg                      *carg  0          break        default          switch(c
nv)             case 'b' stdio.h  /*  ** Get command line argument.   ** Entry n
     Number of the argument.  **        s     Destination string pointer.  **   
     size  Size of destination string.  **        argc  Argument count from main
().  **        argv  Argument vector(s) from main().  ** Returns number of chara
cters moved on success,  ** else EOF.  */  getarg(n,s,size,argc,argv)    int n c
har *s int size, argc, argv     char *str    int i    if(n  0  n  argc)       *s
  NULL      return EOF          i base   2 sign  1 ovfl  32767 break            
case 'd' base  10 sign  0 ovfl   3276 break            case 'o' base   8 sign  1
 ovfl   8191 break            case 'u' base  10 sign  1 ovfl   6553 break       
     case 'x' base  16 sign  1 ovfl   4095 break            default  return (ac)
                      *narg  unsigned  0          while(width-- && !isspace(chfg
etc(fd)) && ch!EOF)             if(!sign)              if(ch  '-') sign  -1 cont
inue        0    strargvn    while(isize)       if((sistri)NULL) break      ++i 
         siNULL    return i       GETCHAR.C 158  #define NOCCARGC  /* no argumen
t count passing */  #include stdio.h  /*  ** Get next character from standard in
put.   */  getchar()     return (fgetc(stdin))       ISALNUM.C 163  /*  ** retur
n 'true' if c is alphanumeric  */  isalnum(c) int c     return ((c'z' && c'a')  
           (c'Z' && c'A')             (c'9' && c'0'))       ISALPH        else s
ign  1            if(ch  '0') return (ac)            if(ch  'a')      ch - 87   
         else if(ch  'A') ch - 55            else               ch - '0'        
    if(ch  base  unsigned  ovfl) return (ac)            unsigned  unsigned * bas
e + ch                      *narg  sign * unsigned              ++ac            
                        return (ac)         FWRITE.C 998  #define NOCCARGC  /* n
o argument count passing */  #include clib.def  extern int UstatuA.C 119  /*  **
 return 'true' if c is alphabetic  */  isalpha(c) int c     return ((c'z' && c'a
')  (c'Z' && c'A'))       ISASCII.C 147  /*  ** return 'true' if c is an ASCII c
haracter (0-127)  */  isascii(c) char *c     /* c is a simulated unsigned intege
r */    return (c  127)       ISATTY.C 126  extern int Udevice  /*  ** Return "t
rue" if fd is a device, else "false"  */  isatty(fd) int fd     return (Udevicef
d)       ISCNTRL.C 172  /*  ** return 'true' if c is a conts  /*  ** Item-stream
 write to fd.  ** Entry buf  address of source buffer  **         sz  size of it
ems in bytes  **          n  number of items to write  **         fd  file descr
iptor  ** Returns a count of the items actually written or  ** zero if an error 
occurred.  ** May use ferror(), as always, to detect errors.  */  fwrite(buf, sz
, n, fd) char *buf int sz, n, fd     if(write(fd, buf, n*sz)  -1) return (0)    
return (n)        /*  ** Binary-stream write to fd.  ** Entry  fd  file d  RAFBG
CHDIErol character  ** (0-31 or 127)  */  iscntrl(c) char *c     /* c is a simul
ated unsigned integer */    return ((c  31)  (c  127))       ISCONS.C 157  #incl
ude stdio.h  #include clib.def  extern int Udevice  /*  ** Determine if fd is th
e console.  */  iscons(fd) int fd     return (Udevicefd  CPMCON)       ISDIGIT.C
 100  /*  ** return 'true' if c is a decimal digit  */  isdigit(c) int c     ret
urn (c'9' && c'0')       ISGRAPH.C 115  /*  ** return 'true' if c is a graphic  
 if(*ptr  10) *ptr + '0' else *ptr + 55      ++ptr       while(n / b)    *ptr  0
    reverse (s)         ITOD.C 620  #include stdio.h  /*  ** itod -- convert nbr
 to signed decimal string of width sz  **         right adjusted, blank filled r
eturns str  **  **        if sz  0 terminate with null byte  **        if sz  0 
find end of string  **        if sz  0 use last byte for data  */  itod(nbr, str
, sz)  int nbr  char str  int sz      char sgn    if(nbr0) nbr  -nbr sgn'-'  cha
racter  ** (33-126)  */  isgraph(c) int c     return (c33 && c126)       ISLOWER
.C 106  /*  ** return 'true' if c is lower-case alphabetic  */  islower(c) int c
     return (c'z' && c'a')       ISPRINT.C 117  /*  ** return 'true' if c is a p
rintable character  ** (32-126)  */  isprint(c) int c     return (c32 && c126)  
     ISPUNCT.C 206  #define NOCCARGC  /* no argument count passing */  /*  ** re
turn 'true' if c is a punctuation character  ** (all but control and alphanu  el
se sgn' '    if(sz0) str--szNULL    else if(sz0) sz  -sz    else while(strsz!NUL
L) ++sz    while(sz)       str--sz(nbr%10+'0')      if((nbrnbr/10)0) break      
    if(sz) str--szsgn    while(sz0) str--sz' '    return str       ITOO.C 540  /
*  ** itoo -- converts nbr to octal string of length sz  **         right adjust
ed and blank filled, returns str  **  **        if sz  0 terminate with null byt
e  **        if sz  0 find end of string  **        if sz  0 use lameric)  */  i
spunct(c) int c     return (!isalnum(c) && !iscntrl(c))       ISSPACE.C 180  /* 
 ** return 'true' if c is a white-space character  */  isspace(c) int c     /* f
irst check gives quick exit in most cases */    return(c' ' && (c' '  (c13 && c9
)))         ISUPPER.C 106  /*  ** return 'true' if c is upper-case alphabetic  *
/  isupper(c) int c     return (c'Z' && c'A')       ISXDIGIT.C 193  /*  ** retur
n 'true' if c is a hexadecimal digit  ** (0-9, A-F, or a-f)  */ st byte for data
  */  itoo(nbr, str, sz)  int nbr  char str  int sz      int digit    if(sz0) st
r--sz0    else if(sz0) sz  -sz    else while(strsz!0) ++sz    while(sz)       di
gitnbr&7 nbr(nbr3)&8191      str--szdigit+48      if(nbr0) break          while(
sz) str--sz' '    return str       ITOU.C 618  #include stdio.h  /*  ** itou -- 
convert nbr to unsigned decimal string of width sz  **         right adjusted, b
lank filled returns str  **  **        if sz  0 ter isxdigit(c) int c     return
 ((c'f' && c'a')             (c'F' && c'A')             (c'9' && c'0'))       IT
OA.C 469  #define NOCCARGC  /* no argument count passing */  /*  ** itoa(n,s) - 
Convert n to characters in s   */  itoa(n, s) char *s int n     int sign    char
 *ptr    ptr  s    if ((sign  n)  0) /* record sign */      n  -n     /* make n 
positive */    do           /* generate digits in reverse order */      *ptr++  
n % 10 + '0'         /* get next digit */     minate with null byte  **        i
f sz  0 find end of string  **        if sz  0 use last byte for data  */  itou(
nbr, str, sz)  int nbr  char str  int sz      int lowbit    if(sz0) str--szNULL 
   else if(sz0) sz  -sz    else while(strsz!NULL) ++sz    while(sz)       lowbit
nbr&1      nbr(nbr1)&32767  /* divide by 2 */      str--sz((nbr%5)1)+lowbit+'0' 
     if((nbrnbr/5)0) break          while(sz) str--sz' '    return str       ITO
X.C 595  /*  ** itox -- conver  while ((n  n / 10)  0)    /* delete it */    if 
(sign  0) *ptr++  '-'    *ptr  '0'    reverse(s)       ITOAB.C 475  #define NOCC
ARGC  /* no argument count passing */  /*  ** itoab(n,s,b) - Convert "unsigned" 
n to characters in s using base b.  **                NOTE This is a non-standar
d function.  */  itoab(n, s, b) int n char *s int b     char *ptr    int lowbit 
   ptr  s    b  1    do       lowbit  n & 1      n  (n  1) & 32767      *ptr  ((
n % b)  1) + lowbit      RAFBGCHDIEts nbr to hex string of length sz  **        
 right adjusted and blank filled, returns str  **  **        if sz  0 terminate 
with null byte  **        if sz  0 find end of string  **        if sz  0 use la
st byte for data  */  itox(nbr, str, sz)  int nbr  char str  int sz      int dig
it, offset    if(sz0) str--sz0    else if(sz0) sz  -sz    else while(strsz!0) ++
sz    while(sz)       digitnbr&15 nbr(nbr4)&4095      if(digit10) offset48 else 
offset55      str--szdigit+offe, NO))       OTOI.C 365  #include stdio.h  /*  **
 otoi -- convert unsigned octal string to integer nbr  **          returns field
 size, else ERR on error  */  otoi(octstr, nbr)  char *octstr  int *nbr      int
 d,t d0    *nbr0    while((*octstr'0')&(*octstr'7'))       t*nbr      t(t3) + (*
octstr++ - '0')      if ((t0)&(*nbr0)) return ERR      d++ *nbrt          return
 d       PAD.C 205  #define NOCCARGC  /* no argument count passing */  /*  ** Pl
ace n occurrences of ch aset      if(nbr0) break          while(sz) str--sz' '  
  return str       LEFT.C 165  /*  ** left -- left adjust and null terminate a s
tring  */  left(str) char *str     char *str2    str2str    while(*str2' ') ++st
r2    while(*str++  *str2++)       LEXCMP.C 1362  #define NOCCARGC  /* no argume
nt count passing */  /*  ** lexcmp(s, t) - Return a number 0, 0, or0   **       
         as s is , , or  t.  */  lexcmp(s, t) char *s, *t     while(lexorder(*s,
 *t)  0)      if(*s+t dest.  */  pad(dest, ch, n) char *dest, *n int ch     /* n
 is a fake unsigned integer */    while(n--) *dest++  ch       POLL.C 377  #defi
ne NOCCARGC  /* no argument count passing */  #include stdio.h  #include clib.de
f  /*  ** Poll for console input or interruption  */  poll(pause) int pause     
int i    i  Ubdos(DCONIO, 255)    if(pause)       if(i  PAUSE)         while(!(i
  Ubdos(DCONIO, 255)))         if(i  ABORT) exit(0)        return (0)           
   if(i  ABORT) exit(0) +) ++t      else return (0)    return (lexorder(*s, *t))
        /*  ** lexorder(c1, c2)  **  ** Return a negative, zero, or positive num
ber if  ** c1 is less than, equal to, or greater than c2,  ** based on a lexicog
raphical (dictionary order)  ** colating sequence.  **  */  char Ulex128        
 /**** NUL - / ****/         0,  1,  2,  3,  4,  5,  6,  7,  8,  9,        10, 1
1, 12, 13, 14, 15, 16, 17, 18, 19,        20, 21, 22, 23, 24, 25, 26, 27, 28, 29
,        30, 31, 32, 33, 34, 35, 36, 37, 38, 39,         return (i)       PUTCHA
R.C 169  #define NOCCARGC  /* no argument count passing */  #include stdio.h  /*
  ** Write character to standard output.   */  putchar(ch) int ch     return (fp
utc(ch, stdout))       PUTS.C 191  #define NOCCARGC  /* no argument count passin
g */  #include stdio.h  /*  ** Write string to standard output.   */  puts(strin
g) char *string     fputs(string, stdout)    fputc('n', stdout)       RENAME.C 5
39  #define NOCCARGC  /* no argument count passing */  #in        40, 41, 42, 43
, 44, 45, 46, 47,       /**** 0-9 ****/        65, 66, 67, 68, 69, 70, 71, 72, 7
3, 74,       /****        ****/        48, 49, 50, 51, 52, 53, 54,       /**** A
-Z ****/        75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,        88, 8
9, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,       /****     U  ****/        5
5, 56, 57, 58, 59, 60,       /**** a-z ****/        75, 76, 77, 78, 79, 80, 81, 
82, 83, 84, 85, 86, 87,        88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,cl
ude stdio.h  #include clib.def  /*  ** Rename a file.  **  from  address of old 
filename.  **    to  address of new filename.  **  Returns NULL on success, else
 ERR.  */  rename(from, to) char *from, *to     char fcbFCBSIZE    pad(fcb, NULL
, FCBSIZE)    if(!Unewfcb(to, fcb)  Ubdos(OPNFIL, fcb) ! 255)       Ubdos(CLOFIL
, fcb)      return (ERR)          if(Unewfcb(from, fcb) &&       Unewfcb(to, fcb
+NAMEOFF2) &&       Ubdos(RENAME, fcb) ! 255)      return (NULL)    return (ERR)
       R100,       /****     ****/        61, 62, 63, 64,       /**** DEL ****/ 
      101           lexorder(c1, c2) char c1, c2     return(Ulexc1 - Ulexc2)    
   LINK.MAC 30  Ulink ext Umain          end   MALLOC.C 281  #define NOCCARGC  /
* no argument count passing */  #include stdio.h  /*  ** Memory allocation of si
ze bytes.  ** size   Size of the block in bytes.  ** Returns the address of the 
allocated block,  ** else NULL for failure.  */  malloc(size) char *size     ret
urn (Ualloc(siz  RAFBGCHDIEEVERSE.C 220  #define NOCCARGC  /* no argument count 
passing */  /*  ** reverse string in place   */  reverse(s) char *s     char *j 
   int c    j  s + strlen(s) - 1    while(s  j)       c  *s      *s++  *j      *
j--  c               REWIND.C 138  #define NOCCARGC  /* no argument count passin
g */  /*  ** Rewind file to beginning.   */  rewind(fd) int fd     return(cseek(
fd, 0, 0))       SIGN.C 148  /*  ** sign -- return -1, 0, +1 depending on the si
gn of nbr  */  sign(nbr)  int nbrst, sour, n) char *dest, *sour int n     char *
d    d  dest    while(n--  0)       if(*d++  *sour++) continue      while(n--  0
) *d++  0          *d  0    return (dest)       STRRCHR.C 314  /*  ** strrchr(s,
c) - Search s for rightmost occurrance of c.  ** s       Pointer to string to be
 searched.  ** c       Character to search for.  ** Returns pointer to rightmost
 c or NULL.  */  strrchr(s, c) char *s, c     char *ptr    ptr  0    while(*s)  
     if(*sc) ptr  s      ++s         if(nbr0) return 1    if(nbr0) return 0    r
eturn -1       STDIO.H 296  /*  ** STDIO.H -- Standard Small-C Definitions  */  
#define stdin    0  #define stdout   1  #define stderr   2  #define ERR   (-2)  
#define EOF   (-1)  #define YES      1  #define NO       0  #define NULL     0  
#define CR      13  #define LF      10  #define BELL     7  #define SPACE  ' '  
#define NEWLINE LF   STRCAT.C 175  /*  ** concatenate t to end of s   ** s must 
be large enough  */  strcat(s, t) char *s, *t        return (ptr)       TOASCII.
C 76  /*  ** return ASCII equivalent of c  */  toascii(c) int c     return (c)  
     TOLOWER.C 130  /*  ** return lower-case of c if upper-case, else c  */  tol
ower(c) int c     if(c'Z' && c'A') return (c+32)    return (c)       TOUPPER.C 1
36  /*  ** return upper-case of c if it is lower-case, else c  */  toupper(c) in
t c     if(c'z' && c'a') return (c-32)    return (c)       UNGETC.C 342  #define
 NOCCARGC  /* no argument count passing *    char *d    d  s    --s    while (*+
+s)     while (*s++  *t++)     return(d)       STRCHR.C 176  /*  ** return point
er to 1st occurrence of c in str, else 0  */  strchr(str, c) char *str, c     wh
ile(*str)       if(*str  c) return (str)      ++str          return (0)       ST
RCMP.C 185  /*  ** return 0,   0,  0 aUording to  **       st, st, st  */  strcm
p(s, t) char *s, *t     while(*s  *t)       if(*s  0) return (0)      ++s ++t   
       return (*s - *t)       /  #include stdio.h  extern Unextc  /*  ** Put c b
ack into file fd.  ** Entry  c  character to put back  **        fd  file descri
ptor  ** Returns c if successful, else EOF.  */  ungetc(c, fd) int c, fd     if(
!Umode(fd)  Unextcfd!EOF  cEOF) return (EOF)    return (Unextcfd  c)       UNLIN
K.C 477  #define NOCCARGC  /* no arg count passing */  #include stdio.h  #includ
e clib.def  /*  ** Unlink (delete) the named file.   ** Entry fn  Null-terminate
d CP/M file name.  **               STRCPY.C 111  /*  ** copy t to s   */  strcp
y(s, t) char *s, *t     char *d    d  s    while (*s++  *t++)     return(d)     
  STRLEN.C 113  /*  ** return length of s   */  strlen(s) char *s     char *t   
 t  s - 1    while (*++t)     return (t - s)       STRNCAT.C 254  /*  ** concate
nate n bytes max from t to end of s   ** s must be large enough  */  strncat(s, 
t, n) char *s, *t int n     char *d    d  s    --s    while(*++s)     while(n--)
       if(*s++  *t++) continueMay be prefixed by letter of drive.  ** Returns NU
LL on success, else ERR.  */  unlink(fn) char *fn     char fcbFCBSIZE    pad(fcb
, NULL, FCBSIZE)    if(Unewfcb(fn, fcb) && Ubdos(DELFIL, fcb) ! 255)      return
 (NULL)    return (ERR)      #asm  delete  equ    unlink          entry  delete 
 #endasm   UTOI.C 362  #include stdio.h  /*  ** utoi -- convert unsigned decimal
 string to integer nbr  **          returns field size, else ERR on error  */  u
toi(decstr, nbr)  char *decstr  int *nbr            return(d)          *s  0    
return(d)       STRNCMP.C 332  /*  ** strncmp(s,t,n) - Compares two strings for 
at most n  **                  characters and returns an integer  **            
      0, 0, or 0 as s is t, t, or t.  */  strncmp(s, t, n) char *s, *t int n    
 while(n && *s*t)       if (*s  0) return (0)      ++s ++t --n          if(n) re
turn (*s - *t)    return (0)       STRNCPY.C 252  /*  ** copy n characters from 
sour to dest (null padding)  */  strncpy(de   R A F B G C H D I Eint d,t d0    *
nbr0    while((*decstr'0')&(*decstr'9'))       t*nbrt(10*t) + (*decstr++ - '0') 
     if ((t0)&(*nbr0)) return ERR      d++ *nbrt          return d       XTOI.C 
729  #include stdio.h  /*  ** xtoi -- convert hex string to integer nbr  **     
    returns field size, else ERR on error  */  xtoi(hexstr, nbr) char *hexstr in
t *nbr     int d, b  char *cp    d  *nbr  0 cp  hexstr    while(*cp  '0') ++cp  
  while(1)       switch(*cp)         case '0' case '1' case '2'        case '3' 
case '4' case '5'        case '6' case '7' case '8'        case '9'             
        b48 break        case 'A' case 'B' case 'C'        case 'D' case 'E' cas
e 'F' b55 break        case 'a' case 'b' case 'c'        case 'd' case 'e' case 
'f' b87 break         default return (cp - hexstr)              if(d  4) ++d els
e return (ERR)      *nbr  (*nbr  4) + (*cp++ - b)              !R!A!F!B!G!C!H!D!
I!E  "R"A"F"B"G"C"H"D"I"E  #R#A#F#B#G#C#H#D#I#E  $R$A$F$B$G$C$H$D$I$E  %R%A%F%B%
G%C%H%D%I%E  &R&A&F&B&G&C&H&D&I&E  'R'A'F'B'G'C'H'D'I'E  (R(  0H523-037C        
SCHNEIDER DUP 3"-100/40 2S DD SS              70292-00ww
Tous droits réservés. Reproduction sans autorisation interdite. © Kukulcan