Ftl Modula 2 (UK) (Face 3A) (1988) [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 34 30 33 31 31 00    ..SAMdisk140311.
000030:  28 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 00 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 C9 02 00 00 00 02    ......R.........
000120:  00 00 C5 02 00 00 00 02 00 00 C1 02 00 00 00 02    ................
000130:  00 00 C6 02 00 00 00 02 00 00 C2 02 00 00 00 02    ................
000140:  00 00 C7 02 00 00 00 02 00 00 C3 02 00 00 00 02    ................
000150:  00 00 C8 02 00 00 00 02 00 00 C4 02 00 00 00 02    ................
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:  ED 7B 06 00 11 7C 02 CD 3A 01 21 80 00 7E B7 20    .{...|..:.!..~. 
000210:  0B 21 E0 02 11 5C 00 01 0C 00 ED B0 11 5C 00 D5    .!...\.......\..
000220:  DD E1 DD 7E 01 FE 20 20 16 D5 13 21 E1 02 01 0B    ...~..  ...!....
000230:  00 ED B0 D1 18 09 CD 3A 01 C7 0E 09 C3 05 00 AF    .......:........
000240:  32 EC 02 32 ED 02 1A 32 EE 02 0E 11 CD 05 00 3C    2..2...2.......<
000250:  20 05 11 A6 02 18 DF F5 3A EE 02 B7 20 09 0E 19     .......:... ...
000260:  CD 05 00 3C 32 EE 02 21 00 00 47 37 CB 15 CB 14    ...<2..!..G7....
000270:  A7 10 F9 E5 0E 1D CD 05 00 D1 7D A3 6F 7C A2 B5    ..........}£o|..
000280:  28 05 11 98 02 18 AF F1 3D 87 87 87 87 87 5F 16    (.......=....._.
000290:  00 21 80 00 19 CD FB 01 0E 12 CD 05 00 3C 20 E8    .!...........< .
0002A0:  21 EF 02 E5 CD 24 02 3A ED 02 B7 20 1E 11 C9 02    !....$.:... ....
0002B0:  CD 3A 01 0E 01 CD 05 00 F6 20 FE 71 28 3C FE 61    .:....... .q(<.a
0002C0:  20 05 32 ED 02 18 04 FE 79 20 03 CD 57 02 F5 11     .2.....y ..W...
0002D0:  95 02 CD 3A 01 F1 E1 FE 70 3A EC 02 28 0C 11 0C    ...:....p:..(...
0002E0:  00 19 3D 28 15 32 EC 02 18 B9 11 F4 FF 19 11 EF    ..=(.2..........
0002F0:  02 B7 ED 52 19 38 03 3C 18 EB C7 23 E5 11 0C 00    ...R.8.<...#....
000300:  21 00 00 3A EC 02 B7 28 04 47 19 10 FD 11 EF 02    !..:...(.G......
000310:  19 F5 3A EE 02 77 F1 23 D1 EB 01 0B 00 ED B0 3C    ..:..w.#.......<
000320:  32 EC 02 C9 7E 23 E5 C6 40 5F 0E 02 CD 05 00 1E    2...~#..@_......
000330:  3A 0E 02 CD 05 00 E1 06 0B E5 C5 3E 03 B8 20 09    :..........>.. .
000340:  E5 1E 2E 0E 02 CD 05 00 E1 5E CB BB 0E 02 CD 05    .........^......
000350:  00 C1 E1 23 10 E3 C9 D1 E1 E5 D5 11 5C 00 01 0C    ...#........\...
000360:  00 ED B0 11 5C 00 D5 DD E1 DD CB 09 7E 20 07 0E    ....\.......~ ..
000370:  13 CD 05 00 3C C0 11 B8 02 C3 3A 01 57 44 45 4C    ....<.....:.WDEL
000380:  20 56 32 2E 30 20 28 43 29 20 31 39 38 37 20 48     V2.0 (C) 1987 H
000390:  69 53 6F 66 74 0D 0A 24 44 72 69 76 65 20 69 73    iSoft..$Drive is
0003A0:  20 52 2F 4F 21 24 4E 6F 20 6D 61 74 63 68 69 6E     R/O!$No matchin
0003B0:  67 20 66 69 6C 65 73 24 20 20 43 61 6E 6E 6F 74    g files$  Cannot
0003C0:  20 64 65 6C 65 74 65 21 24 20 20 44 65 6C 65 74     delete!$  Delet
0003D0:  65 20 28 59 2F 4E 2F 41 2F 51 2F 50 29 3F 20 24    e (Y/N/A/Q/P)? $
0003E0:  00 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 00 00 00 00    .???????????....
0003F0:  FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00    ................
000400:  2A 06 00 F9 11 00 FF 19 22 F9 04 11 51 11 A7 ED    *......."...Q...
000410:  52 7C 1F 1F E6 3F 3C F5 11 68 04 CD 42 03 CD 38    R|...?<..h..B..8
000420:  04 F1 CD E9 03 3E 4B CD 47 03 11 8F 04 CD 42 03    .....>K.G.....B.
000430:  3A 5C 00 B7 20 03 CD 68 01 32 F3 04 21 6C 00 7E    :\.. ..h.2..!l.~
000440:  B7 20 1C 23 7E FE 2D 20 13 23 7E FE 51 28 04 FE    . .#~.- .#~.Q(..
000450:  42 20 09 23 7E FE 20 20 03 32 6D 00 CD 68 01 32    B .#~.  .2m..h.2
000460:  F2 04 18 0B CD 42 03 C7 0E 19 CD 05 00 3C C9 11    .....B.......<..
000470:  46 05 01 0B 00 21 6D 00 7E FE 20 20 03 21 E7 04    F....!m.~.  .!..
000480:  ED B0 11 5C 00 D5 DD E1 DD 7E 01 FE 20 20 0B D5    ...\.....~..  ..
000490:  13 21 E7 04 01 0B 00 ED B0 D1 0E 11 CD 05 00 3C    .!.............<
0004A0:  20 05 11 92 04 18 BD 3D 87 87 87 87 87 5F 16 00     ......=....._..
0004B0:  21 80 00 19 3A F4 04 F5 E5 21 51 05 B7 28 07 47    !...:....!Q..(.G
0004C0:  11 0B 00 19 10 FD D1 13 01 0B 00 EB ED B0 F1 3C    ...............<
0004D0:  32 F4 04 0E 12 CD 05 00 3C 20 CC 21 51 05 E5 CD    2.......< .!Q...
0004E0:  9B 02 21 FE 04 CD 4C 03 11 C1 04 CD 42 03 21 22    ..!...L.....B.!"
0004F0:  05 E5 CD 4C 03 E1 11 FE 04 06 0C 1A BE 23 13 20    ...L.........#. 
000500:  10 10 F8 11 C6 04 CD 42 03 3A FD 04 B7 28 3C 18    .......B.:...(<.
000510:  5B 3A F7 04 B7 20 2D 11 CD 04 CD 42 03 0E 01 CD    [:... -....B....
000520:  05 00 F6 20 FE 71 CA 00 00 FE 61 20 05 32 F7 04    ... .q....a .2..
000530:  18 0C FE 62 28 31 FE 77 28 2C FE 79 20 09 3A F5    ...b(1.w(,.y .:.
000540:  04 32 F6 04 CD CC 02 FE 70 28 21 11 8F 04 CD 42    .2......p(!....B
000550:  03 E1 11 0B 00 19 AF 32 FD 04 3A F4 04 3D 28 C6    .......2..:..=(.
000560:  32 F4 04 C3 DE 01 AF 32 F6 04 18 D8 11 8F 04 CD    2......2........
000570:  42 03 E1 11 F5 FF 19 01 51 05 B7 ED 42 09 DA 00    B.......Q...B...
000580:  00 3E 01 32 FD 04 3A F4 04 3C 18 D4 01 23 00 E5    .>.2..:..<...#..
000590:  D5 62 6B 13 36 00 ED B0 D1 E1 C9 E5 11 FE 04 CD    .bk.6...........
0005A0:  8C 02 3A F3 04 12 13 01 0B 00 ED B0 11 22 05 CD    ..:.........."..
0005B0:  8C 02 3A F2 04 12 13 21 46 05 06 0B 7E FE 3F 23    ..:....!F...~.?#
0005C0:  E3 20 01 7E 23 E3 12 13 10 F2 E1 C9 11 FE 04 0E    . .~#...........
0005D0:  0F CD 05 00 3C 28 68 AF 32 1E 05 3A F6 04 B7 28    ....<(h.2..:...(
0005E0:  34 21 2B 05 7E F5 36 42 23 5E 36 41 23 56 36 4B    4!+.~.6B#^6A#V6K
0005F0:  E5 D5 11 22 05 0E 13 CD 05 00 21 23 05 11 33 05    ..."......!#..3.
000600:  00 57 50 20 20 20 20 20 20 43 4F 4D 00 00 00 08    .WP      COM....
000610:  02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000620:  00 53 44 20 20 20 20 20 20 43 4F 4D 00 00 00 07    .SD      COM....
000630:  03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000640:  00 57 44 20 20 20 20 20 20 43 4F 4D 00 00 00 04    .WD      COM....
000650:  04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000660:  00 21 52 45 41 44 4D 45 21 45 44 21 00 00 00 60    .!README!ED!...`
000670:  05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 00 00 00 00    ................
000680:  00 2D 32 4A 55 4C 59 31 39 38 37 20 00 00 00 00    .-2JULY1987 ....
000690:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0006A0:  00 2D 42 41 43 4B 55 50 4E 4F 57 21 00 00 00 00    .-BACKUPNOW!....
0006B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0006C0:  00 2D 56 45 52 53 49 4F 4E 31 32 34 00 00 00 00    .-VERSION124....
0006D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0006E0:  00 44 4F 4D 45 4E 55 20 20 44 45 46 00 00 00 03    .DOMENU  DEF....
0006F0:  11 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000700:  00 44 4F 4D 45 4E 55 20 20 4D 4F 44 00 00 00 39    .DOMENU  MOD...9
000710:  12 13 14 15 16 17 18 19 00 00 00 00 00 00 00 00    ................
000720:  00 45 44 49 54 43 4F 4E 54 44 45 46 00 00 00 0C    .EDITCONTDEF....
000730:  1A 1B 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000740:  00 45 44 49 54 43 4F 4E 54 4D 4F 44 00 00 00 6D    .EDITCONTMOD...m
000750:  1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 00 00    .... !"#$%&'()..
000760:  00 45 44 49 54 44 49 53 50 44 45 46 00 00 00 08    .EDITDISPDEF....
000770:  2A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    *...............
000780:  00 45 44 49 54 44 49 53 50 4D 4F 44 00 00 00 33    .EDITDISPMOD...3
000790:  2B 2C 2D 2E 2F 30 31 00 00 00 00 00 00 00 00 00    +,-./01.........
0007A0:  00 45 44 49 54 53 54 41 54 44 45 46 00 00 00 04    .EDITSTATDEF....
0007B0:  32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    2...............
0007C0:  00 45 44 49 54 53 54 41 54 4D 4F 44 00 00 00 17    .EDITSTATMOD....
0007D0:  33 34 35 00 00 00 00 00 00 00 00 00 00 00 00 00    345.............
0007E0:  00 4B 45 59 42 4F 41 52 44 44 45 46 00 00 00 02    .KEYBOARDDEF....
0007F0:  36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    6...............
000800:  01 0B 00 ED B0 D1 E1 72 2B 73 2B F1 77 0E 17 11    .......r+s+.w...
000810:  22 05 CD 05 00 11 22 05 D5 0E 13 CD 05 00 D1 0E    ".....".........
000820:  16 CD 05 00 3C 28 18 CD 77 03 C0 11 22 05 D5 0E    ....<(..w..."...
000830:  10 CD 05 00 D1 0E 13 CD 05 00 11 A8 04 18 03 11    ................
000840:  9B 04 0E 09 C3 05 00 5F 0E 02 18 F8 7E C6 40 23    ......._....~.@#
000850:  E5 CD 47 03 1E 3A CD 48 03 E1 06 0B E5 C5 3E 03    ..G..:.H......>.
000860:  B8 20 07 E5 1E 2E CD 48 03 E1 5E CB BB 73 CD 48    . .....H..^..s.H
000870:  03 C1 E1 23 10 E6 C9 AF 32 F8 04 67 6F 22 FB 04    ...#....2..go"..
000880:  11 51 11 D5 0E 1A CD 05 00 11 FE 04 0E 14 CD 05    .Q..............
000890:  00 D1 A7 20 19 2A FB 04 23 22 FB 04 21 80 00 19    ... .*..#"..!...
0008A0:  ED 5B F9 04 EB ED 52 30 DA 3E 01 32 F8 04 ED 4B    .[....R0.>.2...K
0008B0:  FB 04 78 B1 28 23 11 51 11 C5 D5 0E 1A CD 05 00    ..x.(#.Q........
0008C0:  11 22 05 0E 15 CD 05 00 D1 C1 A7 28 02 AF C9 21    .".........(...!
0008D0:  80 00 19 EB 0B 78 B1 20 E0 3A F8 04 A7 20 98 11    .....x. .:... ..
0008E0:  22 05 0E 10 CD 05 00 3C C9 4F AF 21 81 00 1E 02    "......<.O.!....
0008F0:  D5 E5 11 0A 00 21 00 00 06 10 CB 11 17 ED 6A ED    .....!........j.
000900:  52 30 01 19 3F 10 F3 CB 11 17 55 E1 72 2B D1 1D    R0..?.....U.r+..
000910:  20 DE 06 02 CB 81 78 FE 01 20 02 CB C1 23 7E B7     .....x.. ...#~.
000920:  20 08 CB 41 20 04 3E 20 18 04 CB C1 C6 30 E5 C5     ..A .> .....0..
000930:  CD 47 03 C1 E1 10 DF C9 AF 32 F7 04 32 F4 04 47    .G.......2..2..G
000940:  3A 80 00 4F 21 81 00 3E 2D ED B1 C0 2B 2B 7E FE    :..O!..>-...++~.
000950:  20 23 23 20 F2 7E 23 FE 51 28 08 FE 42 C0 32 F5     ## .~#.Q(..B.2.
000960:  04 18 F2 32 F7 04 18 ED 57 50 20 56 33 2E 30 20    ...2....WP V3.0 
000970:  28 43 29 20 31 39 38 37 20 48 69 53 6F 66 74 0D    (C) 1987 HiSoft.
000980:  0A 42 75 66 66 65 72 20 73 69 7A 65 3A 20 24 0D    .Buffer size: $.
000990:  0A 24 4E 6F 20 66 69 6C 65 73 24 20 4F 70 65 6E    .$No files$ Open
0009A0:  20 66 61 69 6C 65 64 24 20 44 69 73 63 20 49 2F     failed$ Disc I/
0009B0:  4F 20 65 72 72 6F 72 20 28 46 75 6C 6C 20 3F 29    O error (Full ?)
0009C0:  24 20 74 6F 20 24 20 20 53 61 6D 65 24 20 20 43    $ to $  Same$  C
0009D0:  6F 70 79 20 28 59 2F 4E 2F 41 2F 51 2F 50 2F 42    opy (Y/N/A/Q/P/B
0009E0:  2F 57 29 3F 20 24 00 3F 3F 3F 3F 3F 3F 3F 3F 3F    /W)? $.?????????
0009F0:  3F 3F 00 00 00 00 00 00 00 00 00 00 00 00 20 4C    ??............ L
000A00:  00 4B 45 59 42 4F 41 52 44 4D 4F 44 00 00 00 44    .KEYBOARDMOD...D
000A10:  37 38 39 3A 3B 3C 3D 3E 3F 00 00 00 00 00 00 00    789:;<=>?.......
000A20:  00 4D 41 43 52 4F 53 20 20 44 45 46 00 00 00 06    .MACROS  DEF....
000A30:  40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    @...............
000A40:  00 4D 41 43 52 4F 53 20 20 4D 4F 44 00 00 00 4F    .MACROS  MOD...O
000A50:  41 42 43 44 45 46 47 48 49 4A 00 00 00 00 00 00    ABCDEFGHIJ......
000A60:  00 4D 41 4B 45 45 44 49 54 44 45 46 00 00 00 19    .MAKEEDITDEF....
000A70:  4B 4C 4D 4E 00 00 00 00 00 00 00 00 00 00 00 00    KLMN............
000A80:  00 4D 41 4B 45 45 44 49 54 4D 4F 44 00 00 00 80    .MAKEEDITMOD....
000A90:  4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E    OPQRSTUVWXYZ[\]^
000AA0:  00 4D 41 4B 45 45 44 49 54 4D 4F 44 01 00 00 20    .MAKEEDITMOD... 
000AB0:  5F 60 61 62 00 00 00 00 00 00 00 00 00 00 00 00    _`ab............
000AC0:  00 4D 45 20 20 20 20 20 20 4D 4F 44 00 00 00 26    .ME      MOD...&
000AD0:  63 64 65 66 67 00 00 00 00 00 00 00 00 00 00 00    cdefg...........
000AE0:  00 4D 45 4E 55 20 20 20 20 44 45 46 00 00 00 06    .MENU    DEF....
000AF0:  68 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    h...............
000B00:  00 4D 45 4E 55 20 20 20 20 4D 4F 44 00 00 00 1D    .MENU    MOD....
000B10:  69 6A 6B 6C 00 00 00 00 00 00 00 00 00 00 00 00    ijkl............
000B20:  00 52 45 53 45 54 44 49 53 44 45 46 00 00 00 01    .RESETDISDEF....
000B30:  6D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    m...............
000B40:  00 52 45 53 45 54 44 49 53 4D 4F 44 00 00 00 02    .RESETDISMOD....
000B50:  6E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    n...............
000B60:  00 53 43 52 45 45 4E 44 55 44 45 46 00 00 00 06    .SCREENDUDEF....
000B70:  6F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    o...............
000B80:  00 53 43 52 45 45 4E 44 55 4D 4F 44 00 00 00 05    .SCREENDUMOD....
000B90:  70 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    p...............
000BA0:  00 53 43 52 45 45 4E 49 4F 44 45 46 00 00 00 20    .SCREENIODEF... 
000BB0:  71 72 73 74 00 00 00 00 00 00 00 00 00 00 00 00    qrst............
000BC0:  00 53 43 52 45 45 4E 49 4F 4D 4F 44 00 00 00 2D    .SCREENIOMOD...-
000BD0:  75 76 77 78 79 7A 00 00 00 00 00 00 00 00 00 00    uvwxyz..........
000BE0:  00 53 45 54 55 50 43 41 4C 44 45 46 00 00 00 05    .SETUPCALDEF....
000BF0:  7B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    {...............
000C00:  ED 7B 06 00 11 F3 03 CD 87 01 0E 19 CD 05 00 32    .{.............2
000C10:  5C 04 21 80 00 7E A7 20 0B 21 1F 04 11 5C 00 01    \.!..~. .!...\..
000C20:  0C 00 ED B0 AF 32 55 04 32 5F 04 11 5C 00 D5 DD    .....2U.2_..\...
000C30:  E1 DD 7E 01 FE 20 20 0B D5 13 21 20 04 01 0B 00    ..~..  ...! ....
000C40:  ED B0 D1 1A B7 20 04 3A 5C 04 3C 3D 32 5D 04 5F    ..... .:\.<=2]._
000C50:  0E 0E CD 05 00 0E 1F CD 05 00 22 56 04 23 23 23    .........."V.###
000C60:  23 7E 32 58 04 11 5C 00 DD 36 0C 3F 0E 11 CD 05    #~2X..\..6.?....
000C70:  00 3C 20 18 11 41 04 CD 87 01 CD 1B 03 3A 5C 04    .< ..A.......:\.
000C80:  5F 0E 0E CD 05 00 C7 0E 09 C3 05 00 3D 87 87 87    _...........=...
000C90:  87 87 5F 16 00 21 80 00 19 3A 5F 04 F5 E5 21 65    .._..!...:_...!e
000CA0:  04 B7 28 07 47 11 10 00 19 10 FD D1 01 10 00 EB    ..(.G...........
000CB0:  ED B0 F1 3C 32 5F 04 0E 12 CD 05 00 3C 20 CD CD    ...<2_......< ..
000CC0:  65 02 3A 5F 04 47 DD 21 65 04 C5 DD CB 00 7E CC    e.:_.G.!e.....~.
000CD0:  DC 01 11 10 00 DD 19 C1 10 F0 18 98 CD 41 02 11    .............A..
000CE0:  2E 04 DD CB 0A 7E 28 03 11 2B 04 CD 87 01 11 34    .....~(..+.....4
000CF0:  04 DD CB 09 7E 28 03 11 31 04 CD 87 01 DD 6E 0F    ....~(..1.....n.
000D00:  DD 66 0E 7D B4 28 13 7D E6 07 20 01 2B CB 3C CB    .f.}.(.}.. .+.<.
000D10:  1D CB 3C CB 1D CB 3C CB 1D 23 4D 7C CD A2 03 11    ..<...<..#M|....
000D20:  37 04 CD 87 01 DD 4E 0F DD 7E 0E CD A2 03 11 1A    7.....N..~......
000D30:  04 3A 55 04 EE 01 32 55 04 28 03 11 1D 04 C3 87    .:U...2U.(......
000D40:  01 DD E5 E1 06 0B 23 E5 C5 3E 03 B8 20 09 E5 1E    ......#..>.. ...
000D50:  2E 0E 02 CD 05 00 E1 5E CB BB 0E 02 CD 05 00 C1    .......^........
000D60:  E1 23 10 E3 C9 DD 21 65 04 3A 5F 04 47 C5 3A 58    .#....!e.:_.G.:X
000D70:  04 DD BE 0C 38 25 DD 7E 0F FE 80 20 1E CD CC 02    ....8%.~... ....
000D80:  28 19 FD CB 00 FE FD 6E 0F FD 66 0E DD 5E 0F DD    (......n..f..^..
000D90:  56 0E 19 DD 75 0F DD 74 0E 18 E2 3A 58 04 B7 C4    V...u..t...:X...
000DA0:  AB 02 11 10 00 DD 19 C1 10 C3 C9 3C 5F DD 4E 0C    ...........<_.N.
000DB0:  AF 57 CD DD 03 7D B7 C8 45 DD 6E 0F DD 66 0E 11    .W...}..E.n..f..
000DC0:  80 00 19 10 FD DD 75 0F DD 74 0E C9 FD 21 65 04    ......u..t...!e.
000DD0:  C5 3A 5F 04 47 DD E5 FD E5 E1 D1 A7 ED 52 28 09    .:_.G........R(.
000DE0:  FD CB 00 7E CC 08 03 28 0A 11 10 00 FD 19 10 E5    ...~...(........
000DF0:  AF C1 C9 3A 58 04 B7 28 0B DD E5 FD E5 DD E1 CD    ...:X..(........
000E00:  00 53 45 54 55 50 43 41 4C 4D 4F 44 00 00 00 0A    .SETUPCALMOD....
000E10:  7C 7D 00 00 00 00 00 00 00 00 00 00 00 00 00 00    |}..............
000E20:  00 52 45 43 4D 50 45 44 20 53 55 42 00 00 00 04    .RECMPED SUB....
000E30:  7E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ~...............
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:  AB 02 DD E1 F6 01 C1 C9 DD E5 FD E5 D1 E1 C5 06    ................
001010:  0B 23 13 1A BE 20 02 10 F8 C1 C9 0E 0C CD 05 00    .#... ..........
001020:  FE 30 30 50 DD 2A 56 04 DD 6E 05 DD 66 06 22 59    .00P.*V..n..f."Y
001030:  04 DD 7E 02 D6 02 47 AF 37 17 10 FD 32 5B 04 0E    ..~...G.7...2[..
001040:  1B CD 05 00 ED 4B 59 04 03 11 00 00 3E 08 32 5E    .....KY.....>.2^
001050:  04 CB 16 38 01 13 0B 79 B0 28 09 3A 5E 04 3D 20    ...8...y.(.:^.= 
001060:  ED 23 18 E8 6B 62 3A 5B 04 47 05 28 03 19 10 FD    .#..kb:[.G.(....
001070:  7C 4D 18 23 3A 5D 04 0E 2E 5F CD 05 00 06 03 DD    |M.#:]..._......
001080:  21 80 00 DD CB 02 3E DD CB 01 1E DD CB 00 1E 10    !.....>.........
001090:  F2 DD 7E 01 DD 4E 00 CD A2 03 3E 4B 5F 0E 02 C3    ..~..N....>K_...
0010A0:  05 00 21 64 04 1E 05 D5 E5 11 0A 00 CD DD 03 55    ..!d...........U
0010B0:  E1 72 2B D1 1D 20 F0 06 05 CB 81 78 FE 01 20 02    .r+.. .....x.. .
0010C0:  CB C1 23 7E B7 20 08 CB 41 20 04 3E 20 18 04 CB    ..#~. ..A .> ...
0010D0:  C1 C6 30 E5 C5 CD 9C 03 C1 E1 10 DF C9 21 00 00    ..0..........!..
0010E0:  06 10 CB 11 17 ED 6A ED 52 30 01 19 3F 10 F3 CB    ......j.R0..?...
0010F0:  11 17 C9 53 44 20 56 31 2E 30 20 62 79 20 41 64    ...SD V1.0 by Ad
001100:  61 6D 20 44 65 6E 6E 69 6E 67 20 28 43 29 20 48    am Denning (C) H
001110:  69 53 6F 66 74 20 31 39 38 36 0D 0A 24 09 24 00    iSoft 1986..$.$.
001120:  3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 20 53 24 20 20    ??????????? S$  
001130:  24 52 20 24 20 20 24 4B 20 20 52 65 63 73 3A 20    $R $  $K  Recs: 
001140:  24 0D 0A 44 69 73 63 20 66 72 65 65 20 73 70 61    $..Disc free spa
001150:  63 65 3A 20 24 66 75 6E 63 74 69 6F 6E F3 20 69    ce: $function. i
001160:  EE 20 73 6F 75 72 63 E5 20 61 6E E4 20 4D 61 6E    . sourc. an. Man
001170:  F8 20 8D 0A 6C 69 62 72 61 72 F9 20 66 6F 72 6D    . ..librar. form
001180:  44 4F 0D 0A 09 09 09 4C 6F 6F 6B 75 70 28 49 6E    DO.....Lookup(In
001190:  66 2C 4E 61 6D 65 73 5B 6A 5D 2C 72 65 70 6C 79    f,Names[j],reply
0011A0:  29 3B 0D 0A 09 09 09 49 46 20 72 65 70 6C 79 3C    );.....IF reply<
0011B0:  30 20 54 48 45 4E 0D 0A 09 09 09 09 57 72 69 74    0 THEN......Writ
0011C0:  65 53 74 72 69 6E 67 28 27 20 43 6F 75 6C 64 20    eString(' Could 
0011D0:  6E 6F 74 20 6F 70 65 6E 20 27 29 3B 0D 0A 09 09    not open ');....
0011E0:  09 09 57 72 69 74 65 53 74 72 69 6E 67 28 4E 61    ..WriteString(Na
0011F0:  6D 65 73 5B 6A 5D 29 3B 0D 0A 09 09 09 09 57 72    mes[j]);......Wr
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 C9 02 00 00 00 02    ......R.........
001420:  01 00 C5 02 00 00 00 02 01 00 C1 02 00 00 00 02    ................
001430:  01 00 C6 02 00 00 00 02 01 00 C2 02 00 00 00 02    ................
001440:  01 00 C7 02 00 00 00 02 01 00 C3 02 00 00 00 02    ................
001450:  01 00 C8 02 00 00 00 02 01 00 C4 02 00 00 00 02    ................
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:  73 65 72 74 2F 64 65 6C 65 74 65 20 6C 69 6E 65    sert/delete line
001510:  20 6F 72 20 63 6C 65 61 72 20 74 6F 0D 0A 65 6E     or clear to..en
001520:  64 20 6F 66 20 6C 69 6E 65 29 2E 20 20 4D 69 6E    d of line).  Min
001530:  64 20 79 6F 75 20 64 6F 6E 27 74 20 6F 76 65 72    d you don't over
001540:  77 72 69 74 65 20 79 6F 75 72 20 6F 6E 6C 79 20    write your only 
001550:  63 6F 70 79 20 6F 66 20 4D 45 2E 43 4F 4D 0D 0A    copy of ME.COM..
001560:  77 68 69 6C 65 20 65 78 70 65 72 69 6D 65 6E 74    while experiment
001570:  69 6E 67 2D 2D 61 6E 64 20 63 6F 70 79 20 4D 45    ing--and copy ME
001580:  2E 43 4F 4D 20 66 72 6F 6D 20 79 6F 75 72 20 6F    .COM from your o
001590:  72 69 67 69 6E 61 6C 20 64 69 73 6B 73 20 69 66    riginal disks if
0015A0:  0D 0A 79 6F 75 20 68 61 76 65 20 61 6E 79 20 64    ..you have any d
0015B0:  6F 75 62 74 73 2E 0D 0D 0A 49 66 20 73 74 72 61    oubts....If stra
0015C0:  70 70 65 64 20 66 6F 72 20 72 6F 6F 6D 2C 20 6F    pped for room, o
0015D0:  72 20 6A 75 73 74 20 65 78 70 65 72 69 6D 65 6E    r just experimen
0015E0:  74 69 6E 67 2C 20 4D 41 43 52 4F 53 2E 4D 42 45    ting, MACROS.MBE
0015F0:  20 68 61 73 20 6E 6F 0D 0A 66 75 6E 63 74 69 6F     has no..functio
001600:  6E 20 6B 65 79 20 63 6F 64 65 20 61 6E 64 20 74    n key code and t
001610:  68 65 72 65 66 6F 72 65 20 69 73 20 73 6D 61 6C    herefore is smal
001620:  6C 65 72 2E 20 20 41 73 20 62 65 66 6F 72 65 2C    ler.  As before,
001630:  20 72 65 6E 61 6D 65 0D 0A 69 74 20 74 6F 20 4D     rename..it to M
001640:  41 43 52 4F 53 2E 4D 4F 44 20 62 65 66 6F 72 65    ACROS.MOD before
001650:  20 72 65 63 6F 6D 70 69 6C 69 6E 67 2E 0D 0D 0A     recompiling....
001660:  09 09 53 41 4D 50 4C 45 20 50 52 4F 47 52 41 4D    ..SAMPLE PROGRAM
001670:  20 49 4E 53 54 52 55 43 54 49 4F 4E 53 0D 0A 0D     INSTRUCTIONS...
001680:  0A 09 09 43 41 54 2E 4D 4F 44 0D 0A 09 09 3D 3D    ...CAT.MOD....==
001690:  3D 3D 3D 3D 3D 0D 0A 0D 0A 41 20 66 69 6C 65 20    =====....A file 
0016A0:  64 69 73 70 6C 61 79 20 70 72 6F 67 72 61 6D 20    display program 
0016B0:  77 69 74 68 6F 75 74 20 74 68 65 20 73 68 6F 72    without the shor
0016C0:  74 63 6F 6D 69 6E 67 73 20 6F 66 20 27 74 79 70    tcomings of 'typ
0016D0:  65 27 2E 20 20 43 41 54 20 63 61 6E 3A 0D 0D 0A    e'.  CAT can:...
0016E0:  09 4E 75 6D 62 65 72 20 6F 75 74 70 75 74 20 6C    .Number output l
0016F0:  69 6E 65 73 0D 0A 09 50 61 67 65 20 6F 75 74 70    ines...Page outp
001700:  43 6F 6D 70 75 74 65 72 73 27 20 5A 38 30 20 43    Computers' Z80 C
001710:  61 72 64 2E 20 20 54 6F 20 70 72 6F 64 75 63 65    ard.  To produce
001720:  20 61 20 6D 65 6D 6F 72 79 20 6D 61 70 70 65 64     a memory mapped
001730:  0D 0A 09 09 76 65 72 73 69 6F 6E 2C 20 73 74 61    ....version, sta
001740:  72 74 20 77 69 74 68 20 74 68 65 20 4D 69 63 72    rt with the Micr
001750:  6F 42 65 65 2C 20 61 73 20 74 68 61 74 20 69 73    oBee, as that is
001760:  20 74 68 65 20 6D 6F 73 74 20 73 74 61 6E 64 61     the most standa
001770:  72 64 2E 0D 0D 0A 09 09 54 6F 20 72 65 70 6C 61    rd......To repla
001780:  63 65 20 74 68 65 20 73 74 61 6E 64 61 72 64 20    ce the standard 
001790:  76 65 72 73 69 6F 6E 20 6F 66 20 53 63 72 65 65    version of Scree
0017A0:  6E 49 4F 20 62 79 20 61 20 6D 65 6D 6F 72 79 20    nIO by a memory 
0017B0:  6D 61 70 70 65 64 0D 0A 09 09 76 65 72 73 69 6F    mapped....versio
0017C0:  6E 2C 20 73 69 6D 70 6C 79 20 63 6F 6D 70 69 6C    n, simply compil
0017D0:  65 20 74 68 65 20 6D 65 6D 6F 72 79 20 6D 61 70    e the memory map
0017E0:  70 65 64 20 69 6D 70 6C 65 6D 65 6E 74 61 74 69    ped implementati
0017F0:  6F 6E 20 6D 6F 64 75 6C 65 0D 0A 09 09 69 6E 20    on module....in 
001800:  70 6C 61 63 65 20 6F 66 20 74 68 65 20 73 74 61    place of the sta
001810:  6E 64 61 72 64 20 69 6D 70 6C 65 6D 65 6E 74 61    ndard implementa
001820:  74 69 6F 6E 20 6D 6F 64 75 6C 65 2D 2D 6E 6F 20    tion module--no 
001830:  63 68 61 6E 67 65 73 20 61 72 65 0D 0A 09 09 6E    changes are....n
001840:  65 65 64 65 64 20 69 6E 20 74 68 65 20 64 65 66    eeded in the def
001850:  69 6E 69 74 69 6F 6E 20 6D 6F 64 75 6C 65 2E 20    inition module. 
001860:  20 4E 4F 54 45 3A 20 74 68 65 20 4F 73 62 6F 72     NOTE: the Osbor
001870:  6E 65 20 76 65 72 73 69 6F 6E 20 69 73 0D 0A 09    ne version is...
001880:  09 66 6F 72 20 4F 73 62 6F 72 6E 65 20 49 73 20    .for Osborne Is 
001890:  6F 6E 6C 79 2C 20 4E 4F 54 20 74 68 65 20 45 78    only, NOT the Ex
0018A0:  65 63 75 74 69 76 65 2E 20 20 54 68 65 20 56 69    ecutive.  The Vi
0018B0:  78 65 6E 20 69 73 20 61 6C 73 6F 0D 0A 09 09 73    xen is also....s
0018C0:  6C 69 67 68 74 6C 79 20 64 69 66 66 65 72 65 6E    lightly differen
0018D0:  74 2E 0D 0D 0A 09 43 6F 6D 70 69 6C 69 6E 67 20    t.....Compiling 
0018E0:  74 68 65 20 65 64 69 74 6F 72 2E 0D 09 2A 2A 2A    the editor...***
0018F0:  2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A    ****************
001900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0019A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0019B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0019C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0019D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0019E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0019F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001B00:  2A 2A 0D 0A 0D 0A 09 54 68 65 20 73 75 62 6D 69    **.....The submi
001B10:  74 20 66 69 6C 65 20 52 45 43 4D 50 45 44 2E 53    t file RECMPED.S
001B20:  55 42 20 63 61 6E 20 62 65 20 75 73 65 64 20 74    UB can be used t
001B30:  6F 20 72 65 63 6F 6D 70 69 6C 65 20 74 68 65 20    o recompile the 
001B40:  65 64 69 74 6F 72 3A 0D 0A 0D 0A 09 09 53 55 42    editor:......SUB
001B50:  4D 49 54 20 52 45 43 4D 50 45 44 0D 0A 0D 0A 74    MIT RECMPED....t
001B60:  68 65 20 64 69 73 74 72 69 62 75 74 65 64 20 66    he distributed f
001B70:  6F 72 6D 20 6F 66 20 74 68 69 73 20 66 69 6C 65    orm of this file
001B80:  20 61 73 73 75 6D 65 73 20 74 68 61 74 20 74 68     assumes that th
001B90:  65 20 66 69 6C 65 73 20 61 72 65 20 61 6C 6C 20    e files are all 
001BA0:  6F 6E 20 74 68 65 0D 0A 63 75 72 72 65 6E 74 20    on the..current 
001BB0:  64 72 69 76 65 2E 20 20 59 6F 75 20 6D 61 79 20    drive.  You may 
001BC0:  77 61 6E 74 20 74 6F 20 61 64 64 20 22 42 3A 22    want to add "B:"
001BD0:  20 69 6E 20 66 72 6F 6E 74 20 74 68 65 20 66 69     in front the fi
001BE0:  6C 65 6E 61 6D 65 73 20 62 65 69 6E 67 0D 0A 63    lenames being..c
001BF0:  6F 6D 70 69 6C 65 64 20 28 6F 72 20 61 64 64 20    ompiled (or add 
001C00:  77 68 61 74 65 76 65 72 20 64 72 69 76 65 20 6E    whatever drive n
001C10:  61 6D 65 20 79 6F 75 20 61 72 65 20 75 73 69 6E    ame you are usin
001C20:  67 29 2E 20 20 4E 6F 74 65 20 74 68 61 74 20 53    g).  Note that S
001C30:  55 42 4D 49 54 20 6F 6E 6C 79 0D 0A 77 6F 72 6B    UBMIT only..work
001C40:  73 20 66 72 6F 6D 20 64 72 69 76 65 20 41 3A 20    s from drive A: 
001C50:  6F 6E 20 6D 61 6E 79 20 63 6F 6D 70 75 74 65 72    on many computer
001C60:  73 2E 0D 0D 0A 09 4D 61 70 70 69 6E 67 20 79 6F    s.....Mapping yo
001C70:  75 72 20 6B 65 79 62 6F 61 72 64 2E 0D 0D 0A 09    ur keyboard.....
001C80:  49 66 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 6D    If you want to m
001C90:  6F 64 69 66 79 20 74 68 65 20 65 64 69 74 6F 72    odify the editor
001CA0:  20 74 6F 20 75 73 65 20 79 6F 75 72 20 6B 65 79     to use your key
001CB0:  62 6F 61 72 64 20 61 72 72 6F 77 20 6B 65 79 73    board arrow keys
001CC0:  0D 61 6E 64 20 66 75 6E 63 74 69 6F 6E 20 6B 65    .and function ke
001CD0:  79 73 2C 20 79 6F 75 20 77 69 6C 6C 20 77 61 6E    ys, you will wan
001CE0:  74 20 74 6F 20 65 64 69 74 20 74 68 65 20 6D 6F    t to edit the mo
001CF0:  64 75 6C 65 20 4B 45 59 42 4F 41 52 44 2E 4D 4F    dule KEYBOARD.MO
001D00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
001D10:  20 20 20 20 20 20 20 20 20 20 20 4E 6F 74 65 73               Notes
001D20:  20 66 6F 72 0D 20 20 20 20 20 20 20 20 20 20 20     for.           
001D30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
001D40:  46 54 4C 20 4D 6F 64 75 6C 61 2D 32 20 45 64 69    FTL Modula-2 Edi
001D50:  74 6F 72 2F 54 6F 6F 6C 4B 69 74 20 64 69 73 63    tor/ToolKit disc
001D60:  0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
001D70:  20 20 20 20 20 20 20 20 20 20 20 20 57 6F 72 6B                Work
001D80:  6D 61 6E 20 26 20 41 73 73 6F 63 69 61 74 65 73    man & Associates
001D90:  0D 0D 0A 0D 0D 0A 54 68 69 73 20 64 69 73 63 20    ......This disc 
001DA0:  63 6F 6E 74 61 69 6E 73 20 74 68 65 20 65 6E 74    contains the ent
001DB0:  69 72 65 20 73 6F 75 72 63 65 73 20 66 6F 72 20    ire sources for 
001DC0:  74 68 65 20 46 54 4C 20 4D 6F 64 75 6C 61 2D 32    the FTL Modula-2
001DD0:  20 65 64 69 74 6F 72 20 61 6E 64 0D 61 20 6E 75     editor and.a nu
001DE0:  6D 62 65 72 20 6F 66 20 75 74 69 6C 69 74 69 65    mber of utilitie
001DF0:  73 20 77 68 69 63 68 20 79 6F 75 20 6D 61 79 20    s which you may 
001E00:  66 69 6E 64 20 75 73 65 66 75 6C 2E 20 0D 0D 0A    find useful. ...
001E10:  0D 0D 0A 53 65 65 20 74 68 65 20 65 6E 64 20 6F    ...See the end o
001E20:  66 20 74 68 69 73 20 66 69 6C 65 20 66 6F 72 20    f this file for 
001E30:  6D 6F 72 65 20 64 65 74 61 69 6C 73 20 6F 6E 20    more details on 
001E40:  74 68 65 20 75 74 69 6C 69 74 69 65 73 2E 20 20    the utilities.  
001E50:  54 68 65 79 20 61 72 65 3A 0D 0D 0D 0A 43 4F 4D    They are:....COM
001E60:  50 44 49 52 09 09 61 20 64 69 72 65 63 74 6F 72    PDIR..a director
001E70:  79 20 63 6F 6D 70 61 72 65 20 70 72 6F 67 72 61    y compare progra
001E80:  6D 2E 20 20 54 68 69 73 20 70 72 6F 67 72 61 6D    m.  This program
001E90:  20 69 73 20 69 6E 76 61 6C 75 61 62 6C 65 20 74     is invaluable t
001EA0:  6F 0D 09 09 73 6F 66 74 77 61 72 65 20 64 65 76    o...software dev
001EB0:  65 6C 6F 70 65 72 73 20 77 68 6F 20 6E 65 65 64    elopers who need
001EC0:  20 74 6F 20 65 6E 73 75 72 65 20 74 68 61 74 20     to ensure that 
001ED0:  74 68 65 69 72 20 64 69 73 74 72 69 62 75 74 69    their distributi
001EE0:  6F 6E 0D 09 09 64 69 73 63 73 20 61 72 65 20 63    on...discs are c
001EF0:  6F 6D 70 6C 65 74 65 20 61 6E 64 20 63 6F 6E 74    omplete and cont
001F00:  44 2C 0D 0A 74 68 65 6E 20 72 65 63 6F 6D 70 69    D,..then recompi
001F10:  6C 65 20 74 68 65 20 65 64 69 74 6F 72 20 28 73    le the editor (s
001F20:  65 65 20 61 62 6F 76 65 29 2E 0D 0D 0A 09 45 64    ee above).....Ed
001F30:  69 74 6F 72 20 43 6F 6F 6B 27 73 20 47 75 69 64    itor Cook's Guid
001F40:  65 2E 0D 0A 0D 0A 09 54 68 65 20 6D 61 69 6E 20    e......The main 
001F50:  6D 6F 64 75 6C 65 73 20 69 6E 20 74 68 65 20 65    modules in the e
001F60:  64 69 74 6F 72 20 61 72 65 3A 0D 0A 0D 0A 4D 45    ditor are:....ME
001F70:  09 09 54 68 65 20 74 6F 70 20 6C 65 76 65 6C 20    ..The top level 
001F80:  6D 6F 64 75 6C 65 2E 0D 0A 45 44 49 54 43 4F 4E    module...EDITCON
001F90:  54 09 43 6F 6E 74 72 6F 6C 73 20 74 68 65 20 73    T.Controls the s
001FA0:  63 72 65 65 6E 20 64 69 73 70 6C 61 79 2E 0D 0A    creen display...
001FB0:  45 44 49 54 44 49 53 50 09 53 6F 6D 65 20 6F 74    EDITDISP.Some ot
001FC0:  68 65 72 20 73 63 72 65 65 6E 20 64 69 73 70 6C    her screen displ
001FD0:  61 79 20 70 72 6F 63 65 64 75 72 65 73 2D 2D 65    ay procedures--e
001FE0:  73 73 65 6E 74 69 61 6C 6C 79 20 70 61 72 74 0D    ssentially part.
001FF0:  0A 09 6F 66 20 45 44 49 54 43 4F 4E 54 2C 20 6B    ..of EDITCONT, k
002000:  65 70 74 20 73 65 70 61 72 61 74 65 20 66 6F 72    ept separate for
002010:  20 65 61 73 65 20 6F 66 20 6D 61 69 6E 74 65 6E     ease of mainten
002020:  61 6E 63 65 2E 0D 0A 4D 41 4B 45 45 44 49 54 09    ance...MAKEEDIT.
002030:  50 65 72 66 6F 72 6D 73 20 74 68 65 20 63 68 61    Performs the cha
002040:  6E 67 65 73 20 74 6F 20 74 68 65 20 66 69 6C 65    nges to the file
002050:  28 73 29 20 62 65 69 6E 67 20 65 64 69 74 65 64    (s) being edited
002060:  2E 0D 0A 4B 45 59 42 4F 41 52 44 09 41 63 63 65    ...KEYBOARD.Acce
002070:  70 74 73 20 69 6E 70 75 74 20 66 72 6F 6D 20 74    pts input from t
002080:  68 65 20 6B 65 79 62 6F 61 72 64 20 61 6E 64 20    he keyboard and 
002090:  63 61 6C 6C 73 20 61 70 70 72 6F 70 72 69 61 74    calls appropriat
0020A0:  65 0D 0A 09 09 72 6F 75 74 69 6E 65 73 20 74 6F    e....routines to
0020B0:  20 70 65 72 66 6F 72 6D 20 74 68 65 20 72 65 71     perform the req
0020C0:  75 65 73 74 65 64 20 65 64 69 74 20 66 75 6E 63    uested edit func
0020D0:  74 69 6F 6E 73 2E 0D 0A 44 4F 4D 45 4E 55 09 09    tions...DOMENU..
0020E0:  53 75 70 70 6F 72 74 73 20 74 68 65 20 6F 70 74    Supports the opt
0020F0:  69 6F 6E 73 20 6D 65 6E 75 20 28 74 68 61 74 20    ions menu (that 
002100:  61 69 6E 20 74 68 65 20 6C 61 74 65 73 74 20 76    ain the latest v
002110:  65 72 73 69 6F 6E 73 20 6F 66 20 66 69 6C 65 73    ersions of files
002120:  2E 0A 09 09 53 65 65 20 74 68 65 20 66 69 6C 65    ....See the file
002130:  20 43 4F 4D 50 44 49 52 2E 4D 4F 44 20 61 6E 64     COMPDIR.MOD and
002140:  20 69 6E 73 74 72 75 63 74 69 6F 6E 73 20 62 65     instructions be
002150:  6C 6F 77 2E 0D 0A 43 4F 4D 50 41 52 45 09 09 61    low...COMPARE..a
002160:  6E 20 41 73 63 69 69 20 66 69 6C 65 20 63 6F 6D    n Ascii file com
002170:  70 61 72 69 73 6F 6E 20 70 72 6F 67 72 61 6D 2E    parison program.
002180:  20 20 54 68 69 73 20 70 72 6F 67 72 61 6D 20 64      This program d
002190:  6F 65 73 20 6C 69 6E 65 2D 62 79 2D 0A 09 09 6C    oes line-by-...l
0021A0:  69 6E 65 20 63 6F 6D 70 61 72 69 73 6F 6E 73 20    ine comparisons 
0021B0:  6F 66 20 66 69 6C 65 73 2E 20 20 49 74 20 75 73    of files.  It us
0021C0:  65 73 20 61 20 70 6F 77 65 72 66 75 6C 20 63 6F    es a powerful co
0021D0:  6D 70 61 72 69 73 6F 6E 0D 0A 09 09 6D 65 74 68    mparison....meth
0021E0:  6F 64 20 77 68 69 63 68 20 72 61 72 65 6C 79 20    od which rarely 
0021F0:  67 65 74 73 20 6C 6F 73 74 2C 20 61 6E 64 20 77    gets lost, and w
002200:  68 69 63 68 20 63 61 6E 20 64 65 74 65 63 74 20    hich can detect 
002210:  62 6C 6F 63 6B 0D 09 09 6D 6F 76 65 73 2E 20 20    block...moves.  
002220:  53 65 65 20 74 68 65 20 66 69 6C 65 20 43 4F 4D    See the file COM
002230:  50 41 52 45 2E 4D 4F 44 20 61 6E 64 20 74 68 65    PARE.MOD and the
002240:  20 64 6F 63 75 6D 65 6E 74 61 74 69 6F 6E 20 62     documentation b
002250:  65 6C 6F 77 2E 0D 0D 0A 43 41 54 09 09 61 20 67    elow....CAT..a g
002260:  65 6E 65 72 61 6C 69 73 65 64 20 6C 69 73 74 69    eneralised listi
002270:  6E 67 20 6D 6F 64 75 6C 65 20 69 6E 74 65 6E 64    ng module intend
002280:  65 64 20 70 72 69 6D 61 72 69 6C 79 20 66 6F 72    ed primarily for
002290:  20 75 73 65 20 6F 6E 0D 0A 09 09 52 43 50 4D 73     use on....RCPMs
0022A0:  2E 20 20 49 74 20 63 61 6E 20 64 6F 20 74 61 62    .  It can do tab
0022B0:  20 65 78 70 61 6E 73 69 6F 6E 2C 20 6C 69 6E 65     expansion, line
0022C0:  20 6E 75 6D 62 65 72 69 6E 67 2C 20 73 74 72 69     numbering, stri
0022D0:  6E 67 20 73 65 61 72 63 68 2C 0D 09 09 70 6F 73    ng search,...pos
0022E0:  69 74 69 6F 6E 20 62 79 20 6C 69 6E 65 20 6E 75    ition by line nu
0022F0:  6D 62 65 72 20 61 6E 64 20 77 69 6C 64 20 63 61    mber and wild ca
002300:  69 73 2C 20 6F 70 65 6E 20 66 69 6C 65 2C 0D 0A    is, open file,..
002310:  09 63 6F 6D 70 2F 65 78 69 74 2C 20 65 74 63 29    .comp/exit, etc)
002320:  2E 0D 0A 45 44 49 54 53 54 41 54 09 50 69 63 6B    ...EDITSTAT.Pick
002330:  73 20 75 70 20 74 68 65 20 66 69 6C 65 20 70 6F    s up the file po
002340:  73 69 74 69 6F 6E 20 66 6F 72 20 61 20 66 69 6C    sition for a fil
002350:  65 20 77 68 65 6E 20 69 74 27 73 20 6F 70 65 6E    e when it's open
002360:  65 64 2E 0D 0A 4D 41 43 52 4F 53 09 09 48 61 6E    ed...MACROS..Han
002370:  64 6C 65 73 20 6D 61 63 72 6F 20 65 78 70 61 6E    dles macro expan
002380:  73 69 6F 6E 20 61 6E 64 20 64 65 66 69 6E 69 74    sion and definit
002390:  69 6F 6E 2C 20 69 6E 63 6C 75 64 69 6E 67 20 74    ion, including t
0023A0:  68 65 0D 0A 09 6C 65 61 72 6E 20 6D 6F 64 65 2E    he...learn mode.
0023B0:  20 20 4D 61 6B 65 73 20 61 6E 64 20 73 61 76 65      Makes and save
0023C0:  73 20 74 68 65 6D 20 22 6F 6E 20 74 68 65 20 66    s them "on the f
0023D0:  6C 79 22 20 64 75 72 69 6E 67 20 65 64 69 74 73    ly" during edits
0023E0:  2C 20 74 6F 6F 2E 0D 0A 53 45 54 55 50 43 41 4C    , too...SETUPCAL
0023F0:  20 20 20 20 20 20 20 20 45 64 69 74 6F 72 20 75            Editor u
002400:  73 65 73 20 74 68 69 73 20 6D 6F 64 75 6C 65 20    ses this module 
002410:  74 6F 20 63 61 6C 6C 20 74 68 65 20 63 6F 6D 70    to call the comp
002420:  69 6C 65 72 73 2E 20 20 53 65 65 0D 0A 09 61 6C    ilers.  See...al
002430:  73 6F 20 74 68 65 20 6D 6F 64 75 6C 65 20 43 48    so the module CH
002440:  41 49 4E 20 66 6F 72 20 61 6E 6F 74 68 65 72 20    AIN for another 
002450:  65 78 61 6D 70 6C 65 20 6F 66 20 74 68 69 73 2E    example of this.
002460:  0D 0D 0A 09 4E 6F 74 65 20 66 6F 72 20 75 73 65    ....Note for use
002470:  72 73 20 6F 72 20 61 62 75 73 65 72 73 20 6F 66    rs or abusers of
002480:  20 64 75 6D 62 20 74 65 72 6D 69 6E 61 6C 73 2E     dumb terminals.
002490:  0D 0A 0D 0A 59 6F 75 20 6D 75 73 74 20 72 65 6E    ....You must ren
0024A0:  61 6D 65 20 45 44 49 54 43 4F 4E 54 2E 44 4D 42    ame EDITCONT.DMB
0024B0:  20 61 6E 64 20 45 44 49 54 44 49 53 50 2E 44 4D     and EDITDISP.DM
0024C0:  42 20 74 6F 20 65 6E 64 20 69 6E 20 2E 4D 4F 44    B to end in .MOD
0024D0:  20 62 65 66 6F 72 65 0D 0A 72 65 63 6F 6D 70 69     before..recompi
0024E0:  6C 69 6E 67 20 74 68 65 20 64 75 6D 62 20 65 64    ling the dumb ed
0024F0:  69 74 6F 72 20 28 77 69 74 68 6F 75 74 20 69 6E    itor (without in
002500:  72 64 73 2E 0D 0D 0A 09 09 53 65 65 20 74 68 65    rds......See the
002510:  20 66 69 6C 65 20 43 41 54 2E 4D 4F 44 20 61 6E     file CAT.MOD an
002520:  64 20 74 68 65 20 64 6F 63 75 6D 65 6E 74 61 74    d the documentat
002530:  69 6F 6E 20 62 65 6C 6F 77 2E 0D 0D 0A 0D 0D 0A    ion below.......
002540:  50 41 54 54 45 52 4E 09 09 54 68 69 73 20 69 73    PATTERN..This is
002550:  20 61 20 70 61 74 74 65 72 6E 20 6D 61 74 63 68     a pattern match
002560:  69 6E 67 20 6D 6F 64 75 6C 65 20 77 68 69 63 68    ing module which
002570:  20 6D 61 74 63 68 65 73 20 63 6F 6D 70 6C 65 78     matches complex
002580:  0D 0A 09 09 28 65 76 65 6E 20 72 65 63 75 72 73    ....(even recurs
002590:  69 76 65 21 29 20 70 61 74 74 65 72 6E 73 2E 20    ive!) patterns. 
0025A0:  20 53 65 65 20 50 41 54 54 45 52 4E 2E 44 45 46     See PATTERN.DEF
0025B0:  20 66 6F 72 20 64 65 73 63 72 69 70 74 69 6F 6E     for description
0025C0:  0D 0A 09 09 6F 66 20 75 73 65 2C 20 61 6E 64 20    ....of use, and 
0025D0:  54 65 73 74 50 61 74 2E 4D 4F 44 20 61 73 20 61    TestPat.MOD as a
0025E0:  6E 20 65 78 61 6D 70 6C 65 2E 0D 0D 0A 53 43 52    n example....SCR
0025F0:  45 45 4E 49 4F 09 54 68 65 20 73 63 72 65 65 6E    EENIO.The screen
002600:  20 69 6E 70 75 74 2D 6F 75 74 70 75 74 20 72 6F     input-output ro
002610:  75 74 69 6E 65 73 20 75 73 65 64 20 62 79 20 74    utines used by t
002620:  68 65 20 65 64 69 74 6F 72 2E 20 20 54 68 65 0D    he editor.  The.
002630:  0A 09 09 73 74 61 6E 64 61 72 64 20 76 65 72 73    ...standard vers
002640:  69 6F 6E 20 6F 66 20 53 63 72 65 65 6E 49 4F 20    ion of ScreenIO 
002650:  28 53 43 52 45 45 4E 49 4F 2E 4D 4F 44 29 2C 20    (SCREENIO.MOD), 
002660:  70 6C 75 73 20 73 6F 6D 65 20 6D 65 6D 6F 72 79    plus some memory
002670:  0D 0A 09 09 6D 61 70 70 65 64 20 76 65 72 73 69    ....mapped versi
002680:  6F 6E 73 20 61 72 65 20 73 75 70 70 6C 69 65 64    ons are supplied
002690:  2E 20 20 53 43 52 45 45 4E 49 4F 2E 4F 53 42 20    .  SCREENIO.OSB 
0026A0:  69 73 20 66 6F 72 20 74 68 65 20 4F 73 62 6F 72    is for the Osbor
0026B0:  6E 65 0D 0A 09 09 31 2C 20 53 43 52 45 45 4E 49    ne....1, SCREENI
0026C0:  4F 2E 4D 42 45 20 69 73 20 66 6F 72 20 74 68 65    O.MBE is for the
0026D0:  20 4D 69 63 72 6F 42 65 65 2C 20 61 6E 64 20 53     MicroBee, and S
0026E0:  43 52 45 45 4E 49 4F 2E 45 41 52 20 69 73 20 66    CREENIO.EAR is f
0026F0:  6F 72 0D 0A 09 09 74 68 65 20 45 61 72 74 68 20    or....the Earth 
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 C9 02 00 00 00 02    ......R.........
002720:  02 00 C5 02 00 00 00 02 02 00 C1 02 00 00 00 02    ................
002730:  02 00 C6 02 00 00 00 02 02 00 C2 02 00 00 00 02    ................
002740:  02 00 C7 02 00 00 00 02 02 00 C3 02 00 00 00 02    ................
002750:  02 00 C8 02 00 00 00 02 02 00 C4 02 00 00 00 02    ................
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:  6E 74 65 72 2E 20 20 54 68 65 73 65 20 61 72 65    nter.  These are
002810:  20 76 65 72 79 20 6E 65 61 72 20 74 68 65 20 62     very near the b
002820:  65 67 69 6E 6E 69 6E 67 20 6F 66 20 74 68 65 0D    eginning of the.
002830:  0A 70 72 6F 67 72 61 6D 20 28 73 65 65 20 74 68    .program (see th
002840:  65 20 2E 4D 4F 44 20 66 69 6C 65 29 2E 20 20 45    e .MOD file).  E
002850:  61 63 68 20 63 6F 6E 74 72 6F 6C 20 63 6F 64 65    ach control code
002860:  20 63 61 6E 20 62 65 20 75 70 20 74 6F 20 38 20     can be up to 8 
002870:  63 68 61 72 61 63 74 65 72 73 20 6C 6F 6E 67 0D    characters long.
002880:  0A 61 6E 64 20 69 73 20 74 65 72 6D 69 6E 61 74    .and is terminat
002890:  65 64 20 62 79 20 61 20 76 61 6C 75 65 20 6F 66    ed by a value of
0028A0:  20 30 20 69 66 20 6C 65 73 73 20 74 68 61 6E 20     0 if less than 
0028B0:  63 68 61 72 61 63 74 65 72 73 20 61 72 65 20 72    characters are r
0028C0:  65 71 75 69 72 65 64 2E 0D 0A 4E 61 74 75 72 61    equired...Natura
0028D0:  6C 6C 79 2C 20 79 6F 75 20 6D 61 79 20 61 6C 73    lly, you may als
0028E0:  6F 20 63 68 61 6E 67 65 20 74 68 65 20 2E 43 4F    o change the .CO
0028F0:  4D 20 66 69 6C 65 2E 0D 0D 0A 54 68 65 20 63 6F    M file....The co
002900:  6E 74 72 6F 6C 20 63 68 61 72 61 63 74 65 72 73    ntrol characters
002910:  20 69 6E 20 74 68 65 20 73 75 70 70 6C 69 65 64     in the supplied
002920:  20 70 72 6F 67 72 61 6D 20 61 72 65 20 73 65 74     program are set
002930:  20 66 6F 72 20 61 20 53 54 41 52 20 44 50 53 35     for a STAR DPS5
002940:  31 30 2C 0D 0A 77 68 69 63 68 20 69 73 20 73 75    10,..which is su
002950:  70 70 6F 73 65 64 20 74 6F 20 62 65 20 45 70 73    pposed to be Eps
002960:  6F 6E 20 63 6F 6D 70 61 74 69 62 6C 65 2C 20 73    on compatible, s
002970:  6F 20 74 68 65 20 70 72 6F 67 72 61 6D 20 6D 61    o the program ma
002980:  79 20 77 65 6C 6C 20 72 75 6E 20 27 61 73 20 69    y well run 'as i
002990:  73 27 0D 0A 6F 6E 20 45 70 73 6F 6E 73 20 61 6E    s'..on Epsons an
0029A0:  64 20 45 70 73 6F 6E 20 63 6C 6F 6E 65 73 2E 0D    d Epson clones..
0029B0:  0A 0D 0A 48 6F 77 20 74 68 65 20 70 72 6F 67 72    ...How the progr
0029C0:  61 6D 20 77 6F 72 6B 73 0D 0A 3D 3D 3D 3D 3D 3D    am works..======
0029D0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D    ===============.
0029E0:  0A 0D 0A 46 6F 72 20 65 61 63 68 20 6C 69 6E 65    ...For each line
0029F0:  2C 20 61 20 68 61 73 68 20 74 6F 74 61 6C 20 69    , a hash total i
002A00:  67 65 20 6D 6F 64 65 2E 20 20 4D 75 6C 74 69 70    ge mode.  Multip
002A10:  6C 65 20 63 6F 6D 6D 61 6E 64 73 20 6D 61 79 0D    le commands may.
002A20:  0A 62 65 20 70 6C 61 63 65 64 20 6F 6E 20 61 20    .be placed on a 
002A30:  6C 69 6E 65 2E 20 20 54 68 65 20 63 6F 6D 6D 61    line.  The comma
002A40:  6E 64 73 20 61 72 65 3A 0D 0A 3F 20 20 20 20 20    nds are:..?     
002A50:  20 20 20 20 20 20 20 20 20 44 69 73 70 6C 61 79             Display
002A60:  20 73 6F 6D 65 20 68 65 6C 70 20 69 6E 66 6F 72     some help infor
002A70:  6D 61 74 69 6F 6E 2E 0D 0A 6E 75 6D 62 65 72 20    mation...number 
002A80:  20 20 20 20 20 20 20 20 52 65 73 74 61 72 74 20            Restart 
002A90:  6C 69 73 74 69 6E 67 20 66 72 6F 6D 20 67 69 76    listing from giv
002AA0:  65 6E 20 6C 69 6E 65 20 6E 75 6D 62 65 72 2E 0D    en line number..
002AB0:  0A 2B 20 6F 72 20 2D 20 6E 75 6D 62 65 72 20 20    .+ or - number  
002AC0:  41 64 76 61 6E 63 65 20 28 6F 72 20 72 65 74 69    Advance (or reti
002AD0:  72 65 29 20 62 79 20 74 68 65 20 67 69 76 65 6E    re) by the given
002AE0:  20 6E 75 6D 62 65 72 20 6F 66 20 6C 69 6E 65 73     number of lines
002AF0:  2E 0D 0A 2F 73 74 72 69 6E 67 2F 20 20 20 20 20    .../string/     
002B00:  20 20 52 65 73 74 61 72 74 20 6C 69 73 74 69 6E      Restart listin
002B10:  67 20 66 72 6F 6D 20 6E 65 78 74 20 6F 63 63 75    g from next occu
002B20:  72 65 6E 63 65 20 6F 66 20 73 74 72 69 6E 67 2E    rence of string.
002B30:  20 54 68 65 20 64 65 6C 69 6D 69 74 65 72 73 0D     The delimiters.
002B40:  0A 09 63 61 6E 20 62 65 20 61 6E 79 20 70 72 69    ..can be any pri
002B50:  6E 74 69 6E 67 20 6E 6F 6E 2D 61 6C 70 68 61 6E    nting non-alphan
002B60:  75 6D 65 72 69 63 20 63 68 61 72 61 63 74 65 72    umeric character
002B70:  2E 0D 0A 0D 0A 41 20 6E 75 6D 62 65 72 20 61 6E    .....A number an
002B80:  64 20 61 20 73 65 61 72 63 68 20 73 74 72 69 6E    d a search strin
002B90:  67 20 63 61 6E 20 62 65 20 63 6F 6D 62 69 6E 65    g can be combine
002BA0:  64 20 74 6F 20 73 65 61 72 63 68 20 66 72 6F 6D    d to search from
002BB0:  20 61 0D 0A 67 69 76 65 6E 20 6C 69 6E 65 20 6E     a..given line n
002BC0:  75 6D 62 65 72 2E 20 20 49 66 20 6E 6F 20 73 74    umber.  If no st
002BD0:  72 69 6E 67 20 69 73 20 65 6E 74 65 72 65 64 20    ring is entered 
002BE0:  28 22 2F 2F 22 29 2C 20 74 68 65 0D 0A 70 72 65    ("//"), the..pre
002BF0:  76 69 6F 75 73 6C 79 20 65 6E 74 65 72 65 64 20    viously entered 
002C00:  75 74 0D 0A 09 45 78 70 61 6E 64 20 74 61 62 73    ut...Expand tabs
002C10:  20 74 6F 20 73 70 61 63 65 73 0D 0A 09 57 72 61     to spaces...Wra
002C20:  70 20 6C 69 6E 65 73 20 66 6F 72 20 6C 69 73 74    p lines for list
002C30:  69 6E 67 20 74 6F 20 74 65 72 6D 69 6E 61 6C 73    ing to terminals
002C40:  20 77 69 74 68 6F 75 74 20 61 75 74 6F 2D 6C 69     without auto-li
002C50:  6E 65 20 77 72 61 70 0D 0A 09 52 65 70 6F 73 69    ne wrap...Reposi
002C60:  74 69 6F 6E 20 62 79 20 6C 69 6E 65 20 6E 75 6D    tion by line num
002C70:  62 65 72 20 6F 72 20 62 79 20 73 74 72 69 6E 67    ber or by string
002C80:  20 73 65 61 72 63 68 0D 0A 09 55 73 65 20 77 69     search...Use wi
002C90:  6C 64 20 63 61 72 64 73 20 6F 6E 20 74 68 65 20    ld cards on the 
002CA0:  63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 0D 0A 09 53    command line...S
002CB0:  65 65 20 6E 6F 6E 2D 70 72 69 6E 74 69 6E 67 20    ee non-printing 
002CC0:  63 68 61 72 61 63 74 65 72 73 20 69 6E 20 68 65    characters in he
002CD0:  78 20 28 6F 74 68 65 72 20 74 68 61 6E 20 43 52    x (other than CR
002CE0:  2F 4C 46 2F 54 41 42 29 0D 0A 0D 0A 43 41 54 20    /LF/TAB)....CAT 
002CF0:  69 73 20 6E 6F 74 20 61 20 43 50 2F 4D 20 69 6D    is not a CP/M im
002D00:  70 6C 65 6D 65 6E 74 61 74 69 6F 6E 20 6F 66 20    plementation of 
002D10:  74 68 65 20 63 61 74 20 70 72 6F 67 72 61 6D 20    the cat program 
002D20:  6F 6E 20 55 4E 49 58 3B 20 69 74 20 69 73 20 6D    on UNIX; it is m
002D30:  6F 72 65 20 6C 69 6B 65 0D 0A 55 4E 49 58 27 73    ore like..UNIX's
002D40:  20 4D 4F 52 45 2E 0D 0A 0D 0A 54 6F 20 72 75 6E     MORE.....To run
002D50:  20 74 68 65 20 70 72 6F 67 72 61 6D 3A 0D 0A 0D     the program:...
002D60:  0A 09 43 41 54 20 20 20 66 69 6C 65 20 6C 69 73    ..CAT   file lis
002D70:  74 20 2F 6F 70 74 69 6F 6E 73 0D 0A 6F 72 0D 0A    t /options..or..
002D80:  09 43 41 54 20 20 20 66 69 6C 65 20 6C 69 73 74    .CAT   file list
002D90:  20 5B 6F 70 74 69 6F 6E 73 0D 0A 0D 0A 54 68 65     [options....The
002DA0:  20 6F 70 74 69 6F 6E 73 20 6D 61 79 20 61 6C 73     options may als
002DB0:  6F 20 62 65 20 6F 6D 69 74 74 65 64 2E 20 20 54    o be omitted.  T
002DC0:  68 65 20 22 66 69 6C 65 20 6C 69 73 74 22 20 69    he "file list" i
002DD0:  73 20 61 20 6C 69 73 74 20 6F 66 20 66 69 6C 65    s a list of file
002DE0:  20 6E 61 6D 65 73 20 6F 72 0D 0A 77 69 6C 64 20     names or..wild 
002DF0:  63 61 72 64 73 20 77 68 69 63 68 20 6D 61 74 63    cards which matc
002E00:  73 74 72 69 6E 67 20 69 73 20 73 65 61 72 63 68    string is search
002E10:  65 64 20 66 6F 72 20 61 67 61 69 6E 2E 0D 0A 0D    ed for again....
002E20:  0A 4E 09 09 54 6F 67 67 6C 65 20 6C 69 6E 65 20    .N..Toggle line 
002E30:  6E 75 6D 62 65 72 69 6E 67 20 6F 70 74 69 6F 6E    numbering option
002E40:  2E 0D 0A 49 09 09 54 6F 67 67 6C 65 20 74 61 62    ...I..Toggle tab
002E50:  20 65 78 70 61 6E 73 69 6F 6E 20 6F 70 74 69 6F     expansion optio
002E60:  6E 2E 0D 0A 57 09 09 54 6F 67 67 6C 65 20 73 6F    n...W..Toggle so
002E70:  66 74 77 61 72 65 20 6C 69 6E 65 20 77 72 61 70    ftware line wrap
002E80:  20 6F 70 74 69 6F 6E 2E 20 20 49 66 20 74 68 65     option.  If the
002E90:  20 57 20 69 73 20 66 6F 6C 6C 6F 77 65 64 20 62     W is followed b
002EA0:  79 20 61 0D 0A 09 6E 75 6D 62 65 72 2C 20 74 68    y a...number, th
002EB0:  65 20 6E 75 6D 62 65 72 20 72 65 73 65 74 73 20    e number resets 
002EC0:  74 68 65 20 73 63 72 65 65 6E 20 77 69 64 74 68    the screen width
002ED0:  2E 0D 0A 50 09 09 54 6F 67 67 6C 65 20 70 61 67    ...P..Toggle pag
002EE0:  65 20 6D 6F 64 65 2E 20 49 66 20 74 68 65 20 50    e mode. If the P
002EF0:  20 69 73 20 66 6F 6C 6C 6F 77 65 64 20 79 20 61     is followed y a
002F00:  20 6E 75 6D 62 65 72 2C 20 69 74 20 72 65 73 65     number, it rese
002F10:  74 73 0D 0A 09 74 68 65 20 70 61 67 65 20 6C 65    ts...the page le
002F20:  6E 67 74 68 2E 20 20 4E 6F 74 65 20 74 68 61 74    ngth.  Note that
002F30:  20 74 68 65 20 66 69 72 73 74 20 50 20 6F 6E 20     the first P on 
002F40:  61 6E 79 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65    any command line
002F50:  0D 0A 09 61 6C 77 61 79 73 20 63 61 75 73 65 73    ...always causes
002F60:  20 70 61 67 65 20 6D 6F 64 65 20 74 6F 20 62 65     page mode to be
002F70:  20 63 6C 65 61 72 65 64 2C 20 61 73 20 70 61 67     cleared, as pag
002F80:  65 20 6D 6F 64 65 20 69 73 20 61 6C 77 61 79 73    e mode is always
002F90:  0D 0A 09 65 6E 61 62 6C 65 64 20 77 68 65 6E 20    ...enabled when 
002FA0:  74 68 65 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65    the command line
002FB0:  20 69 73 20 70 72 6F 63 65 73 73 65 64 2E 20 20     is processed.  
002FC0:  48 65 6E 63 65 2C 20 74 6F 20 6A 75 73 74 0D 0A    Hence, to just..
002FD0:  09 63 68 61 6E 67 65 20 74 68 65 20 70 61 67 65    .change the page
002FE0:  20 6C 65 6E 67 74 68 2C 20 79 6F 75 20 6D 75 73     length, you mus
002FF0:  74 20 64 6F 20 50 32 30 50 20 28 73 61 79 29 2E    t do P20P (say).
003000:  68 20 66 69 6C 65 20 6E 61 6D 65 73 2E 20 20 46    h file names.  F
003010:  6F 72 20 65 78 61 6D 70 6C 65 3A 0D 0A 0D 0A 09    or example:.....
003020:  43 41 54 20 62 3A 2A 2E 64 65 66 20 62 3A 2A 2E    CAT b:*.def b:*.
003030:  6D 6F 64 0D 0D 0A 77 69 6C 6C 20 6C 69 73 74 20    mod...will list 
003040:  74 68 65 20 64 65 66 69 6E 69 74 69 6F 6E 20 66    the definition f
003050:  69 6C 65 73 2C 20 74 68 65 6E 20 74 68 65 20 6D    iles, then the m
003060:  6F 64 75 6C 65 20 66 69 6C 65 73 2E 0D 0A 0D 0A    odule files.....
003070:  41 6E 20 6F 70 74 69 6F 6E 20 69 73 20 7A 65 72    An option is zer
003080:  6F 20 6F 72 20 6D 6F 72 65 20 61 6C 70 68 61 62    o or more alphab
003090:  65 74 69 63 73 2E 20 20 53 6F 6D 65 20 6F 66 20    etics.  Some of 
0030A0:  74 68 65 20 61 6C 70 68 61 62 65 74 69 63 73 20    the alphabetics 
0030B0:  6D 61 79 20 62 65 0D 0A 66 6F 6C 6C 6F 77 65 64    may be..followed
0030C0:  20 62 79 20 61 20 6E 75 6D 62 65 72 2E 20 20 49     by a number.  I
0030D0:  66 20 61 20 6E 75 6D 62 65 72 20 69 73 20 69 6E    f a number is in
0030E0:  63 6C 75 64 65 64 2C 20 69 74 20 6D 75 73 74 20    cluded, it must 
0030F0:  69 6D 6D 65 64 69 61 74 65 6C 79 20 66 6F 6C 6C    immediately foll
003100:  6F 77 0D 0A 74 68 65 20 6F 70 74 69 6F 6E 20 63    ow..the option c
003110:  68 61 72 61 63 74 65 72 2D 2D 69 74 20 6D 75 73    haracter--it mus
003120:  74 20 6E 6F 74 20 62 65 20 73 65 70 61 72 61 74    t not be separat
003130:  65 64 2E 0D 0A 0D 0A 54 68 65 20 6F 70 74 69 6F    ed.....The optio
003140:  6E 73 20 61 72 65 3A 0D 0A 0D 0A 09 50 20 2D 20    ns are:.....P - 
003150:  75 73 65 20 70 61 67 65 20 6D 6F 64 65 2E 20 20    use page mode.  
003160:  41 74 20 74 68 65 20 65 6E 64 20 6F 66 20 65 76    At the end of ev
003170:  65 72 79 20 70 61 67 65 20 6F 66 20 6F 75 74 70    ery page of outp
003180:  75 74 2C 20 43 41 54 20 77 69 6C 6C 0D 0A 70 72    ut, CAT will..pr
003190:  6F 6D 70 74 20 66 6F 72 20 61 20 63 6F 6D 6D 61    ompt for a comma
0031A0:  6E 64 20 28 73 65 65 20 62 65 6C 6F 77 29 2E 20    nd (see below). 
0031B0:  20 54 68 65 20 6F 70 74 69 6F 6E 20 6D 61 79 20     The option may 
0031C0:  62 65 20 66 6F 6C 6C 6F 77 65 64 20 62 79 20 74    be followed by t
0031D0:  68 65 20 6E 75 6D 62 65 72 0D 0A 6F 66 20 6C 69    he number..of li
0031E0:  6E 65 73 20 74 6F 20 61 20 70 61 67 65 2E 20 20    nes to a page.  
0031F0:  44 65 66 61 75 6C 74 20 6C 65 6E 67 74 68 20 69    Default length i
003200:  0D 0A 51 09 09 51 75 69 74 20 74 68 69 73 20 66    ..Q..Quit this f
003210:  69 6C 65 2E 0D 0A 43 74 72 6C 20 43 09 09 52 65    ile...Ctrl C..Re
003220:  74 75 72 6E 20 74 6F 20 43 50 2F 4D 2E 0D 0A 0D    turn to CP/M....
003230:  0A 0D 0A 09 43 6F 6D 70 61 72 65 20 2D 20 63 6F    ....Compare - co
003240:  6D 70 61 72 65 20 74 77 6F 20 41 73 63 69 69 20    mpare two Ascii 
003250:  66 69 6C 65 73 20 6C 69 6E 65 20 62 79 20 6C 69    files line by li
003260:  6E 65 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ne...===========
003270:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
003280:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
003290:  3D 3D 3D 0D 0A 0D 0A 54 68 69 73 20 70 72 6F 67    ===....This prog
0032A0:  72 61 6D 20 64 69 73 70 6C 61 79 73 20 74 68 65    ram displays the
0032B0:  20 64 69 66 66 65 72 65 6E 63 65 73 20 62 65 74     differences bet
0032C0:  77 65 65 6E 20 74 77 6F 20 66 69 6C 65 73 2E 20    ween two files. 
0032D0:  20 49 74 20 70 72 65 73 65 6E 74 73 20 74 68 65     It presents the
0032E0:  0D 0A 6F 75 74 70 75 74 20 69 6E 20 61 20 72 65    ..output in a re
0032F0:  61 73 6F 6E 61 62 6C 79 20 72 65 61 64 61 62 6C    asonably readabl
003300:  65 20 66 6F 72 6D 20 28 69 74 20 77 6F 75 6C 64    e form (it would
003310:  20 6C 6F 6F 6B 20 62 65 61 75 74 20 6F 6E 20 61     look beaut on a
003320:  20 63 6F 6C 6F 75 72 20 70 72 69 6E 74 65 72 29     colour printer)
003330:  2E 0D 0A 54 68 65 20 70 72 6F 67 72 61 6D 20 69    ...The program i
003340:  73 20 62 61 73 65 64 20 6F 6E 20 61 20 6D 65 74    s based on a met
003350:  68 6F 64 20 64 65 73 63 72 69 62 65 64 20 62 79    hod described by
003360:  20 50 61 75 6C 20 48 65 63 6B 65 6C 20 69 6E 20     Paul Heckel in 
003370:  27 41 20 54 65 63 68 6E 69 71 75 65 0D 0A 66 6F    'A Technique..fo
003380:  72 20 49 73 6F 6C 61 74 69 6E 67 20 44 69 66 66    r Isolating Diff
003390:  65 72 65 6E 63 65 73 20 62 65 74 77 65 65 6E 20    erences between 
0033A0:  46 69 6C 65 73 27 2C 20 43 6F 6D 6D 75 6E 69 63    Files', Communic
0033B0:  61 74 69 6F 6E 73 20 6F 66 20 74 68 65 20 41 43    ations of the AC
0033C0:  4D 2C 20 56 6F 6C 20 32 31 0D 0A 4E 6F 20 34 2C    M, Vol 21..No 4,
0033D0:  20 41 70 72 69 6C 20 31 39 37 38 2C 20 70 70 20     April 1978, pp 
0033E0:  32 36 34 2D 32 36 38 2E 20 20 54 6F 20 72 75 6E    264-268.  To run
0033F0:  20 74 68 65 20 70 72 6F 67 72 61 6D 3A 0D 0D 0A     the program:...
003400:  73 20 32 34 2E 0D 09 57 20 2D 20 53 65 74 20 73    s 24...W - Set s
003410:  6F 66 74 77 61 72 65 20 6C 69 6E 65 20 77 72 61    oftware line wra
003420:  70 2E 20 20 4C 69 6E 65 73 20 6C 6F 6E 67 65 72    p.  Lines longer
003430:  20 74 68 61 6E 20 74 68 65 20 6C 69 6E 65 20 77     than the line w
003440:  69 64 74 68 20 77 69 6C 6C 20 62 65 0D 0A 77 72    idth will be..wr
003450:  61 70 70 65 64 20 61 72 6F 75 6E 64 20 62 79 20    apped around by 
003460:  74 68 65 20 73 6F 66 74 77 61 72 65 2E 20 20 54    the software.  T
003470:  68 69 73 20 69 73 20 75 73 65 66 75 6C 20 69 66    his is useful if
003480:  20 79 6F 75 72 20 74 65 72 6D 69 6E 61 6C 20 77     your terminal w
003490:  69 6C 6C 20 6E 6F 74 0D 0A 70 65 72 66 6F 72 6D    ill not..perform
0034A0:  20 68 61 72 64 77 61 72 65 20 6C 69 6E 65 20 77     hardware line w
0034B0:  72 61 70 73 2E 20 20 49 74 20 61 6C 73 6F 20 70    raps.  It also p
0034C0:  72 65 76 65 6E 74 73 20 61 6E 79 20 74 65 78 74    revents any text
0034D0:  20 66 61 6C 6C 69 6E 67 20 6F 66 66 20 74 68 65     falling off the
0034E0:  20 74 6F 70 0D 0A 6F 66 20 73 63 72 65 65 6E 20     top..of screen 
0034F0:  61 73 20 74 68 65 20 72 65 73 75 6C 74 20 6F 66    as the result of
003500:  20 68 61 72 64 77 61 72 65 20 6C 69 6E 65 20 77     hardware line w
003510:  72 61 70 73 2E 20 20 22 57 22 20 6D 61 79 20 62    raps.  "W" may b
003520:  65 20 66 6F 6C 6C 6F 77 65 64 20 62 79 20 74 68    e followed by th
003530:  65 0D 0A 6E 75 6D 62 65 72 20 6F 66 20 63 6F 6C    e..number of col
003540:  75 6D 6E 73 20 6F 6E 20 74 68 65 20 73 63 72 65    umns on the scre
003550:  65 6E 2E 20 20 44 65 66 61 75 6C 74 20 77 69 64    en.  Default wid
003560:  74 68 20 69 73 20 38 30 2E 0D 0A 09 49 20 2D 20    th is 80....I - 
003570:  45 78 70 61 6E 64 20 74 61 62 73 2E 20 20 54 61    Expand tabs.  Ta
003580:  62 73 20 61 72 65 20 65 78 70 61 6E 64 65 64 20    bs are expanded 
003590:  74 6F 20 61 6E 20 61 70 70 72 6F 70 72 69 61 74    to an appropriat
0035A0:  65 20 6E 75 6D 62 65 72 20 6F 66 20 73 70 61 63    e number of spac
0035B0:  65 73 2E 0D 0A 09 4E 20 2D 20 4E 75 6D 62 65 72    es....N - Number
0035C0:  20 6C 69 6E 65 73 2E 20 45 61 63 68 20 6C 69 6E     lines. Each lin
0035D0:  65 20 69 73 20 70 72 65 63 65 64 65 64 20 62 79    e is preceded by
0035E0:  20 61 20 6C 69 6E 65 20 6E 75 6D 62 65 72 2E 0D     a line number..
0035F0:  0A 0D 0A 45 78 61 6D 70 6C 65 73 3A 0D 0A 0D 0A    ...Examples:....
003600:  09 43 4F 4D 50 41 52 45 20 6F 6C 64 20 66 69 6C    .COMPARE old fil
003610:  65 2C 6E 65 77 20 66 69 6C 65 2C 5B 4C 69 73 74    e,new file,[List
003620:  20 66 69 6C 65 5D 0D 0A 0D 0A 54 68 65 20 74 68     file]....The th
003630:  69 72 64 20 66 69 6C 65 20 69 73 20 6F 70 74 69    ird file is opti
003640:  6F 6E 61 6C 2E 20 20 49 66 20 6F 6D 69 74 74 65    onal.  If omitte
003650:  64 2C 20 74 68 65 20 6F 75 74 70 75 74 20 69 73    d, the output is
003660:  20 74 6F 20 74 68 65 20 70 72 69 6E 74 65 72 2E     to the printer.
003670:  20 20 59 6F 75 0D 0A 63 61 6E 20 75 73 65 20 64      You..can use d
003680:  65 76 69 63 65 20 6E 61 6D 65 73 20 28 65 2E 67    evice names (e.g
003690:  2E 20 54 54 59 29 20 61 73 20 77 65 6C 6C 20 61    . TTY) as well a
0036A0:  73 20 64 69 73 63 20 66 69 6C 65 20 6E 61 6D 65    s disc file name
0036B0:  73 2E 0D 0A 0D 0A 54 68 65 20 74 77 6F 20 66 69    s.....The two fi
0036C0:  6C 65 73 20 61 72 65 20 63 6F 6D 70 61 72 65 64    les are compared
0036D0:  20 6C 69 6E 65 20 62 79 20 6C 69 6E 65 2E 20 20     line by line.  
0036E0:  4C 69 6E 65 73 20 77 68 69 63 68 20 68 61 76 65    Lines which have
0036F0:  20 62 65 65 6E 20 64 65 6C 65 74 65 64 20 66 72     been deleted fr
003700:  6F 6D 0D 0A 74 68 65 20 6F 6C 64 20 66 69 6C 65    om..the old file
003710:  20 61 72 65 20 70 72 69 6E 74 65 64 20 69 6E 20     are printed in 
003720:  69 74 61 6C 69 63 73 2E 20 20 49 6E 73 65 72 74    italics.  Insert
003730:  65 64 20 6C 69 6E 65 73 20 61 72 65 20 70 72 69    ed lines are pri
003740:  6E 74 65 64 20 69 6E 20 62 6F 6C 64 2E 0D 0A 4C    nted in bold...L
003750:  69 6E 65 73 20 77 68 69 63 68 20 68 61 76 65 20    ines which have 
003760:  62 65 65 6E 20 6D 6F 76 65 64 20 74 6F 20 61 20    been moved to a 
003770:  6E 65 77 20 70 6F 73 69 74 69 6F 6E 20 61 72 65    new position are
003780:  20 70 72 69 6E 74 65 64 20 69 6E 20 74 68 65 69     printed in thei
003790:  72 20 6E 65 77 0D 0A 70 6F 73 69 74 69 6F 6E 20    r new..position 
0037A0:  73 75 72 72 6F 75 6E 64 65 64 20 62 79 20 6C 69    surrounded by li
0037B0:  6E 65 73 20 6F 66 20 61 73 74 65 72 69 73 6B 73    nes of asterisks
0037C0:  2E 20 20 59 6F 75 20 6D 61 79 20 6E 65 65 64 20    .  You may need 
0037D0:  74 6F 20 70 61 74 63 68 20 74 68 65 20 70 72 69    to patch the pri
0037E0:  6E 74 65 72 0D 0A 63 6F 6E 74 72 6F 6C 20 63 6F    nter..control co
0037F0:  64 65 73 20 66 6F 72 20 79 6F 75 72 20 70 72 69    des for your pri
003800:  09 43 41 54 20 20 62 3A 2A 2E 64 65 66 2F 4E 50    .CAT  b:*.def/NP
003810:  0D 0A 0D 0A 55 73 65 20 70 61 67 65 20 6D 6F 64    ....Use page mod
003820:  65 20 61 6E 64 20 6E 75 6D 62 65 72 20 74 68 65    e and number the
003830:  20 6C 69 6E 65 73 2E 0D 0A 0D 0A 09 43 41 54 20     lines......CAT 
003840:  20 62 3A 2A 2E 64 65 66 2F 50 31 36 57 36 34 4E     b:*.def/P16W64N
003850:  0D 0A 0D 0A 55 73 65 20 70 61 67 65 20 6D 6F 64    ....Use page mod
003860:  65 20 61 6E 64 20 73 6F 66 74 77 61 72 65 20 77    e and software w
003870:  72 61 70 20 77 69 74 68 20 70 61 67 65 6C 65 6E    rap with pagelen
003880:  67 74 68 20 31 36 20 61 6E 64 20 77 69 64 74 68    gth 16 and width
003890:  20 36 34 2E 0D 0A 0D 0A 09 09 43 41 54 20 43 6F     64.......CAT Co
0038A0:  6D 6D 61 6E 64 73 0D 0A 0D 0A 41 74 20 74 68 65    mmands....At the
0038B0:  20 65 6E 64 20 6F 66 20 61 20 70 61 67 65 20 6F     end of a page o
0038C0:  66 20 6F 75 74 70 75 74 20 69 6E 20 70 61 67 65    f output in page
0038D0:  20 6D 6F 64 65 2C 20 43 61 74 20 77 69 6C 6C 20     mode, Cat will 
0038E0:  73 74 6F 70 20 61 6E 64 20 61 73 6B 20 66 6F 72    stop and ask for
0038F0:  20 61 0D 0A 63 6F 6D 6D 61 6E 64 2E 20 20 59 6F     a..command.  Yo
003900:  75 20 6D 61 79 20 74 68 65 6E 20 65 6E 74 65 72    u may then enter
003910:  20 61 6E 79 20 6F 66 20 74 68 65 20 63 6F 6D 6D     any of the comm
003920:  61 6E 64 73 20 64 65 73 63 72 69 62 65 64 20 62    ands described b
003930:  65 6C 6F 77 2E 0D 0A 49 6E 20 66 61 63 74 2C 20    elow...In fact, 
003940:  79 6F 75 20 63 61 6E 20 65 6E 74 65 72 20 61 20    you can enter a 
003950:  63 6F 6D 6D 61 6E 64 20 63 68 61 72 61 63 74 65    command characte
003960:  72 20 61 74 20 61 6E 79 20 74 69 6D 65 2E 20 20    r at any time.  
003970:  57 68 65 6E 20 43 61 74 20 64 65 74 65 72 6D 69    When Cat determi
003980:  6E 65 73 0D 0A 74 68 61 74 20 61 20 63 68 61 72    nes..that a char
003990:  61 63 74 65 72 20 68 61 73 20 62 65 65 6E 20 74    acter has been t
0039A0:  79 70 65 64 2C 20 69 74 20 77 69 6C 6C 20 62 72    yped, it will br
0039B0:  69 6E 67 20 75 70 20 74 68 65 20 27 43 6F 6D 6D    ing up the 'Comm
0039C0:  61 6E 64 20 20 3A 27 20 70 72 6F 6D 70 74 2C 0D    and  :' prompt,.
0039D0:  0A 64 69 73 70 6C 61 79 20 74 68 65 20 63 68 61    .display the cha
0039E0:  72 61 63 74 65 72 20 79 6F 75 20 74 79 70 65 64    racter you typed
0039F0:  2C 20 61 6E 64 20 67 6F 20 69 6E 74 6F 20 70 61    , and go into pa
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 C9 02 00 00 00 02    ......R.........
003A20:  03 00 C5 02 00 00 00 02 03 00 C1 02 00 00 00 02    ................
003A30:  03 00 C6 02 00 00 00 02 03 00 C2 02 00 00 00 02    ................
003A40:  03 00 C7 02 00 00 00 02 03 00 C3 02 00 00 00 02    ................
003A50:  03 00 C8 02 00 00 00 02 03 00 C4 02 00 00 00 02    ................
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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003B10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003B20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003B30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003B40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003B50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003B60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003B70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003B80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003B90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003BA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003BB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003BC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003BD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003BE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003BF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003D00:  6E 73 69 6F 6E 2E 0D 0A 4F 70 74 69 6F 6E 61 6C    nsion...Optional
003D10:  6C 79 2C 20 79 6F 75 20 6D 61 79 20 63 72 65 61    ly, you may crea
003D20:  74 65 20 61 20 66 69 6C 65 20 63 6F 6E 74 61 69    te a file contai
003D30:  6E 69 6E 67 20 61 20 6C 69 73 74 20 6F 66 20 74    ning a list of t
003D40:  68 65 20 66 69 6C 65 20 6E 61 6D 65 73 20 61 64    he file names ad
003D50:  64 65 64 2C 0D 0A 64 65 6C 65 74 65 64 20 6F 72    ded,..deleted or
003D60:  20 6D 61 74 63 68 69 6E 67 2E 0D 0A 0D 0A 54 68     matching.....Th
003D70:  65 20 63 6F 6D 6D 61 6E 64 20 74 6F 20 63 61 6C    e command to cal
003D80:  6C 20 74 68 65 20 70 72 6F 67 72 61 6D 20 74 61    l the program ta
003D90:  6B 65 73 20 74 68 65 20 66 6F 72 6D 3A 0D 0A 0D    kes the form:...
003DA0:  0A 09 43 4F 4D 50 44 49 52 20 77 69 6C 64 20 63    ..COMPDIR wild c
003DB0:  61 72 64 2C 20 77 69 6C 64 20 63 61 72 64 20 5B    ard, wild card [
003DC0:  2C 20 6C 69 73 74 20 66 69 6C 65 5D 20 5B 2F 6F    , list file] [/o
003DD0:  70 74 69 6F 6E 73 5D 0D 0A 0D 0A 57 68 65 72 65    ptions]....Where
003DE0:  20 65 61 63 68 20 77 69 6C 64 20 63 61 72 64 20     each wild card 
003DF0:  70 72 6F 64 75 63 65 73 20 6F 6E 65 20 6F 66 20    produces one of 
003E00:  74 68 65 20 6C 69 73 74 73 20 74 6F 20 63 6F 6D    the lists to com
003E10:  70 61 72 65 2E 0D 0A 0D 0A 54 6F 20 63 6F 6D 70    pare.....To comp
003E20:  61 72 65 20 74 77 6F 20 64 69 73 63 73 3A 0D 0A    are two discs:..
003E30:  0D 0A 09 43 4F 4D 50 44 49 52 20 61 3A 2A 2E 2A    ...COMPDIR a:*.*
003E40:  20 62 3A 2A 2E 2A 0D 0A 0D 0A 4F 70 74 69 6F 6E     b:*.*....Option
003E50:  73 20 61 72 65 20 61 6E 79 20 6F 66 20 74 68 65    s are any of the
003E60:  20 66 6F 6C 6C 6F 77 69 6E 67 3A 0D 0A 0D 0A 54     following:....T
003E70:  09 43 6F 6D 70 61 72 65 20 6F 6E 6C 79 20 66 69    .Compare only fi
003E80:  6C 65 20 65 78 74 65 6E 73 69 6F 6E 20 28 62 79    le extension (by
003E90:  20 64 65 66 61 75 6C 74 2C 20 74 68 65 20 77 68     default, the wh
003EA0:  6F 6C 65 20 6E 61 6D 65 20 69 73 20 63 6F 6D 70    ole name is comp
003EB0:  61 72 65 64 29 2E 0D 0A 4E 09 63 6F 6D 70 61 72    ared)...N.compar
003EC0:  65 20 6F 6E 6C 79 20 66 69 6C 65 20 6E 61 6D 65    e only file name
003ED0:  2D 2D 62 61 73 65 20 6E 61 6D 65 2C 20 6D 69 6E    --base name, min
003EE0:  75 73 20 74 68 65 20 65 78 74 65 6E 73 69 6F 6E    us the extension
003EF0:  2E 0D 0A 0D 0A 54 20 61 6E 64 20 4E 20 61 72 65    .....T and N are
003F00:  73 20 63 61 6C 63 75 6C 61 74 65 64 2E 20 20 54    s calculated.  T
003F10:  68 65 6E 20 74 68 65 20 75 6E 69 71 75 65 20 6C    hen the unique l
003F20:  69 6E 65 73 20 69 6E 20 65 61 63 68 20 66 69 6C    ines in each fil
003F30:  65 0D 0A 61 72 65 20 69 64 65 6E 74 69 66 69 65    e..are identifie
003F40:  64 2E 20 20 57 68 65 6E 20 61 20 75 6E 69 71 75    d.  When a uniqu
003F50:  65 20 6C 69 6E 65 20 6D 61 74 63 68 65 73 20 61    e line matches a
003F60:  20 75 6E 69 71 75 65 20 6C 69 6E 65 20 69 6E 20     unique line in 
003F70:  74 68 65 20 73 65 63 6F 6E 64 20 66 69 6C 65 2C    the second file,
003F80:  0D 0A 74 68 65 20 74 77 6F 20 6C 69 6E 65 73 20    ..the two lines 
003F90:  61 72 65 20 63 72 6F 73 73 2D 6C 69 6E 6B 65 64    are cross-linked
003FA0:  2E 0D 0A 0D 0A 4E 65 78 74 2C 20 6C 69 6E 65 73    .....Next, lines
003FB0:  20 61 64 6A 61 63 65 6E 74 20 74 6F 20 63 72 6F     adjacent to cro
003FC0:  73 73 2D 6C 69 6E 6B 65 64 20 6C 69 6E 65 73 20    ss-linked lines 
003FD0:  61 72 65 20 63 6F 6D 70 61 72 65 64 20 61 6E 64    are compared and
003FE0:  2C 20 69 66 20 69 64 65 6E 74 69 63 61 6C 2C 0D    , if identical,.
003FF0:  0A 74 68 65 79 20 61 72 65 20 6C 69 6E 6B 65 64    .they are linked
004000:  2E 20 20 54 68 69 73 20 67 72 6F 77 73 20 74 68    .  This grows th
004010:  65 20 61 72 65 61 20 6F 66 20 6C 69 6E 6B 69 6E    e area of linkin
004020:  67 20 6F 75 74 77 61 72 64 73 20 66 72 6F 6D 20    g outwards from 
004030:  70 61 69 72 73 20 6F 66 20 0D 0A 6D 61 74 63 68    pairs of ..match
004040:  69 6E 67 20 75 6E 69 71 75 65 20 6C 69 6E 65 73    ing unique lines
004050:  20 28 61 6E 64 20 61 6C 73 6F 20 66 72 6F 6D 20     (and also from 
004060:  74 68 65 20 62 65 67 69 6E 6E 69 6E 67 20 61 6E    the beginning an
004070:  64 20 65 6E 64 20 6F 66 20 74 68 65 20 66 69 6C    d end of the fil
004080:  65 73 29 20 75 6E 74 69 6C 0D 0A 61 73 20 6D 61    es) until..as ma
004090:  6E 79 20 6C 69 6E 65 73 20 61 73 20 70 6F 73 73    ny lines as poss
0040A0:  69 62 6C 65 20 68 61 76 65 20 62 65 65 6E 20 63    ible have been c
0040B0:  72 6F 73 73 2D 6C 69 6E 6B 65 64 2E 0D 0A 0D 0A    ross-linked.....
0040C0:  46 69 6E 61 6C 6C 79 20 74 68 65 20 74 65 78 74    Finally the text
0040D0:  20 69 73 20 73 63 61 6E 6E 65 64 20 61 6E 64 20     is scanned and 
0040E0:  70 72 69 6E 74 65 64 20 6F 75 74 2E 20 20 4C 69    printed out.  Li
0040F0:  6E 65 73 20 69 6E 20 74 68 65 20 6E 65 77 20 66    nes in the new f
004100:  20 6D 75 74 75 61 6C 6C 79 20 65 78 63 6C 75 73     mutually exclus
004110:  69 76 65 2E 0D 0A 0D 0A 43 09 49 66 20 66 69 6C    ive.....C.If fil
004120:  65 20 6E 61 6D 65 73 20 6D 61 74 63 68 2C 20 63    e names match, c
004130:  6F 6D 70 61 72 65 20 74 68 65 20 66 69 6C 65 20    ompare the file 
004140:  63 6F 6E 74 65 6E 74 73 20 61 73 20 77 65 6C 6C    contents as well
004150:  2E 0D 0A 45 09 4F 75 74 70 75 74 20 66 69 6C 65    ...E.Output file
004160:  20 6E 61 6D 65 73 20 77 68 69 63 68 20 6D 61 74     names which mat
004170:  63 68 20 74 6F 20 6C 69 73 74 20 66 69 6C 65 2E    ch to list file.
004180:  0D 0A 41 09 4F 75 74 70 75 74 20 66 69 6C 65 20    ..A.Output file 
004190:  6E 61 6D 65 73 20 77 68 69 63 68 20 68 61 76 65    names which have
0041A0:  20 62 65 65 6E 20 61 64 64 65 64 20 74 6F 20 74     been added to t
0041B0:  68 65 20 73 65 63 6F 6E 64 20 6C 69 73 74 2E 0D    he second list..
0041C0:  0A 44 09 4F 75 74 70 75 74 20 66 69 6C 65 20 6E    .D.Output file n
0041D0:  61 6D 65 73 20 77 68 69 63 68 20 68 61 76 65 20    ames which have 
0041E0:  62 65 65 6E 20 64 65 6C 65 74 65 64 20 66 72 6F    been deleted fro
0041F0:  6D 20 74 68 65 20 66 69 72 73 74 20 6C 69 73 74    m the first list
004200:  2E 0D 0A 4D 09 4F 75 74 70 75 74 20 66 69 6C 65    ...M.Output file
004210:  20 6E 61 6D 65 73 20 77 68 69 63 68 20 64 69 66     names which dif
004220:  66 65 72 20 69 6E 20 63 6F 6E 74 65 6E 74 73 2E    fer in contents.
004230:  0D 0A 0D 0A 54 68 65 73 65 20 6F 70 74 69 6F 6E    ....These option
004240:  73 20 6D 61 79 20 62 65 20 63 6F 6D 62 69 6E 65    s may be combine
004250:  64 2E 20 20 45 78 61 6D 70 6C 65 73 3A 0D 0A 0D    d.  Examples:...
004260:  0A 54 6F 20 63 68 65 63 6B 20 74 68 61 74 20 65    .To check that e
004270:  76 65 72 79 20 27 2E 6D 6F 64 27 20 66 69 6C 65    very '.mod' file
004280:  20 68 61 73 20 61 20 27 2E 72 65 6C 27 20 66 69     has a '.rel' fi
004290:  6C 65 3A 0D 0D 0A 09 43 6F 6D 70 64 69 72 20 62    le:....Compdir b
0042A0:  3A 2A 2E 6D 6F 64 20 62 3A 2A 2E 72 65 6C 2F 6E    :*.mod b:*.rel/n
0042B0:  0D 0A 0D 0A 54 6F 20 77 72 69 74 65 20 74 68 65    ....To write the
0042C0:  20 64 65 6C 65 74 65 64 20 6E 61 6D 65 73 20 74     deleted names t
0042D0:  6F 20 61 20 66 69 6C 65 20 73 6F 20 74 68 61 74    o a file so that
0042E0:  20 74 68 65 20 6D 69 73 73 69 6E 67 20 20 27 2E     the missing  '.
0042F0:  72 65 6C 27 0D 0A 66 69 6C 65 73 20 6D 61 79 20    rel'..files may 
004300:  69 6C 65 20 77 68 69 63 68 20 61 72 65 0D 0A 6E    ile which are..n
004310:  6F 74 20 6C 69 6E 6B 65 64 20 74 6F 20 61 6E 79    ot linked to any
004320:  74 68 69 6E 67 20 69 6E 20 74 68 65 20 6F 6C 64    thing in the old
004330:  20 66 69 6C 65 20 61 72 65 20 69 6E 73 65 72 74     file are insert
004340:  69 6F 6E 73 2E 20 20 55 6E 6C 69 6E 6B 65 64 20    ions.  Unlinked 
004350:  6C 69 6E 65 73 20 69 6E 20 74 68 65 0D 0A 6F 6C    lines in the..ol
004360:  64 20 66 69 6C 65 20 61 72 65 20 64 65 6C 65 74    d file are delet
004370:  69 6F 6E 73 2E 20 20 4C 69 6E 65 73 20 69 6E 20    ions.  Lines in 
004380:  74 68 65 20 6E 65 77 20 66 69 6C 65 20 77 68 69    the new file whi
004390:  63 68 20 6C 69 6E 6B 20 74 6F 20 6F 75 74 2D 6F    ch link to out-o
0043A0:  66 2D 6F 72 64 65 72 20 6F 6C 64 0D 0A 66 69 6C    f-order old..fil
0043B0:  65 20 6C 69 6E 65 73 20 61 72 65 20 70 61 72 74    e lines are part
0043C0:  73 20 6F 66 20 61 20 62 6C 6F 63 6B 20 6D 6F 76    s of a block mov
0043D0:  65 2E 0D 0A 0D 0A 46 75 72 74 68 65 72 20 57 6F    e.....Further Wo
0043E0:  72 6B 3A 0D 0A 0D 0A 41 20 6E 75 6D 62 65 72 20    rk:....A number 
0043F0:  6F 66 20 74 68 69 6E 67 73 20 63 61 6E 20 62 65    of things can be
004400:  20 64 6F 6E 65 20 77 69 74 68 20 74 68 69 73 20     done with this 
004410:  70 72 6F 67 72 61 6D 3A 0D 0A 0D 0A 09 31 2F 20    program:.....1/ 
004420:  20 4D 61 6B 65 20 69 74 20 77 6F 72 6B 20 6F 6E     Make it work on
004430:  20 74 68 72 65 65 20 66 69 6C 65 73 2E 0D 0A 4F     three files...O
004440:  66 74 65 6E 2C 20 61 20 6E 65 77 20 76 65 72 73    ften, a new vers
004450:  69 6F 6E 20 6F 66 20 61 20 70 72 6F 67 72 61 6D    ion of a program
004460:  20 69 73 20 63 72 65 61 74 65 64 20 28 73 61 79     is created (say
004470:  2C 20 66 6F 72 20 61 6E 6F 74 68 65 72 20 6D 61    , for another ma
004480:  63 68 69 6E 65 29 20 61 6E 64 0D 0A 74 68 65 6E    chine) and..then
004490:  20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 76 65     the original ve
0044A0:  72 73 69 6F 6E 20 69 73 20 6D 6F 64 69 66 69 65    rsion is modifie
0044B0:  64 2E 20 20 54 68 65 20 70 72 6F 62 6C 65 6D 20    d.  The problem 
0044C0:  69 73 20 74 68 65 6E 20 69 6E 73 65 72 74 69 6E    is then insertin
0044D0:  67 20 74 68 65 0D 0A 6E 65 77 20 63 68 61 6E 67    g the..new chang
0044E0:  65 73 20 74 6F 20 74 68 65 20 6F 72 69 67 69 6E    es to the origin
0044F0:  61 6C 20 66 69 6C 65 20 69 6E 74 6F 20 74 68 65    al file into the
004500:  62 65 20 64 69 73 63 6F 76 65 72 65 64 3A 0D 0A    be discovered:..
004510:  0D 0A 09 43 6F 6D 70 64 69 72 20 62 3A 2A 2E 6D    ...Compdir b:*.m
004520:  6F 64 20 62 3A 2A 2E 72 65 6C 20 62 3A 63 6F 6D    od b:*.rel b:com
004530:  70 73 2E 73 75 62 2F 6E 64 0D 0A 0D 0A 49 66 20    ps.sub/nd....If 
004540:  79 6F 75 20 69 6E 74 65 6E 64 20 74 6F 20 72 65    you intend to re
004550:  67 65 6E 65 72 61 74 65 20 74 68 6F 73 65 20 66    generate those f
004560:  69 6C 65 73 2C 20 65 64 69 74 20 74 68 65 20 66    iles, edit the f
004570:  69 6C 65 20 74 6F 20 61 64 64 20 22 4D 32 20 22    ile to add "M2 "
004580:  20 74 6F 20 74 68 65 0D 0A 73 74 61 72 74 20 6F     to the..start o
004590:  66 20 65 61 63 68 20 6C 69 6E 65 2E 20 20 49 66    f each line.  If
0045A0:  20 79 6F 75 20 61 72 65 20 75 73 69 6E 67 20 74     you are using t
0045B0:  68 65 20 4D 6F 64 75 6C 61 2D 32 20 65 64 69 74    he Modula-2 edit
0045C0:  6F 72 2C 20 64 6F 20 6F 6E 65 20 69 6E 20 6C 65    or, do one in le
0045D0:  61 72 6E 0D 0A 6D 6F 64 65 20 61 6E 64 20 74 68    arn..mode and th
0045E0:  65 6E 20 64 6F 20 74 68 65 20 72 65 73 74 20 77    en do the rest w
0045F0:  69 74 68 20 61 20 72 65 70 65 61 74 65 64 20 65    ith a repeated e
004600:  78 65 63 75 74 69 6F 6E 20 6F 66 20 74 68 65 20    xecution of the 
004610:  64 65 66 69 6E 65 64 20 6D 61 63 72 6F 2E 0D 0A    defined macro...
004620:  0D 0A 54 6F 20 63 72 65 61 74 65 20 61 20 6C 69    ..To create a li
004630:  73 74 20 6F 66 20 61 6C 6C 20 64 65 66 69 6E 69    st of all defini
004640:  74 69 6F 6E 20 61 6E 64 20 69 6D 70 6C 65 6D 65    tion and impleme
004650:  6E 74 61 74 69 6F 6E 20 6D 6F 64 75 6C 65 73 20    ntation modules 
004660:  6F 6E 20 64 69 73 63 20 42 3A 0D 0A 0D 0A 09 43    on disc B:.....C
004670:  6F 6D 70 64 69 72 20 62 3A 2A 2E 6D 6F 64 20 62    ompdir b:*.mod b
004680:  3A 2A 2E 64 65 66 20 74 2E 6C 73 74 2F 61 64 65    :*.def t.lst/ade
004690:  0D 0A 0D 0A 09 48 61 70 70 79 20 4D 6F 64 75 6C    .....Happy Modul
0046A0:  61 74 69 6E 67 21 21 0D 0A 0A 0D 0D 0A 1A 1A 1A    ating!!.........
0046B0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0046C0:  44 46 20 20 20 20 20 20 43 4F 4D 20 00 00 00 00    DF      COM ....
0046D0:  00 00 00 00 00 00 83 43 C2 0C 52 00 06 05 00 00    .......C..R.....
0046E0:  44 49 53 4B 43 4F 4D 50 45 58 45 20 00 00 00 00    DISKCOMPEXE ....
0046F0:  00 00 00 00 00 00 00 60 E7 0C 62 00 E0 0E 00 00    .......`..b.....
004700:  20 6F 74 68 65 72 20 76 65 72 73 69 6F 6E 2C 20     other version, 
004710:  77 68 69 6C 65 20 72 65 74 61 69 6E 69 6E 67 0D    while retaining.
004720:  0A 61 6E 79 20 63 68 61 6E 67 65 73 20 6D 61 64    .any changes mad
004730:  65 20 74 6F 70 72 6F 64 75 63 65 20 74 68 61 74    e toproduce that
004740:  20 76 65 72 73 69 6F 6E 2E 20 20 50 72 6F 62 61     version.  Proba
004750:  62 6C 79 20 66 61 69 72 6C 79 20 64 69 66 66 69    bly fairly diffi
004760:  63 75 6C 74 20 74 6F 20 64 6F 2E 20 0D 0A 09 32    cult to do. ...2
004770:  2F 20 20 20 4D 61 6B 65 20 69 74 20 77 6F 72 6B    /   Make it work
004780:  20 61 63 72 6F 73 73 20 6D 61 63 68 69 6E 65 73     across machines
004790:  2E 0D 0A 53 6F 6D 65 74 69 6D 65 73 2C 20 6F 6E    ...Sometimes, on
0047A0:  65 20 6F 66 20 74 68 65 20 66 69 6C 65 73 20 69    e of the files i
0047B0:  73 20 6F 6E 20 61 6E 6F 74 68 65 72 20 6D 61 63    s on another mac
0047C0:  68 69 6E 65 2E 20 20 49 74 20 77 6F 75 6C 64 20    hine.  It would 
0047D0:  62 65 20 6E 69 63 65 20 74 6F 0D 0A 68 61 76 65    be nice to..have
0047E0:  20 74 68 65 20 6F 6C 64 20 66 69 6C 65 20 6F 6E     the old file on
0047F0:  20 74 68 65 20 72 65 6D 6F 74 65 20 6D 61 63 68     the remote mach
004800:  69 6E 65 20 61 6E 64 20 6F 6E 6C 79 20 74 72 61    ine and only tra
004810:  6E 73 66 65 72 20 74 68 65 20 63 68 65 63 6B 73    nsfer the checks
004820:  75 6D 73 20 61 6E 64 0D 0A 74 68 65 20 6C 69 6E    ums and..the lin
004830:  65 73 20 77 68 69 63 68 20 68 61 76 65 20 62 65    es which have be
004840:  65 6E 20 64 65 6C 65 74 65 64 20 61 63 72 6F 73    en deleted acros
004850:  73 20 74 68 65 20 6C 69 6E 6B 2E 20 20 46 61 69    s the link.  Fai
004860:  72 6C 79 20 65 61 73 79 2C 20 62 75 74 0D 0A 72    rly easy, but..r
004870:  65 6C 69 61 62 69 6C 69 74 79 20 6F 66 20 74 68    eliability of th
004880:  65 20 6C 69 6E 6B 20 77 69 6C 6C 20 63 61 75 73    e link will caus
004890:  65 20 70 72 6F 62 6C 65 6D 73 2E 0D 0A 09 33 2F    e problems....3/
0048A0:  20 20 20 57 72 69 74 65 20 61 20 70 61 69 72 20       Write a pair 
0048B0:  6F 66 20 65 78 74 72 61 63 74 2F 6D 65 72 67 65    of extract/merge
0048C0:  20 70 72 6F 67 72 61 6D 73 2E 0D 0A 43 6F 6E 74     programs...Cont
0048D0:  69 6E 75 69 6E 67 20 6F 6E 20 66 72 6F 6D 20 70    inuing on from p
0048E0:  6F 69 6E 74 20 32 2C 20 77 72 69 74 65 20 61 20    oint 2, write a 
0048F0:  70 72 6F 67 72 61 6D 20 74 6F 20 63 72 65 61 74    program to creat
004900:  44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C    DEFINITION MODUL
004910:  45 20 44 6F 4D 65 6E 75 3B 0D 0A 0D 0A 28 2A 09    E DoMenu;....(*.
004920:  4D 65 6E 75 20 70 72 6F 63 65 73 73 6F 72 20 66    Menu processor f
004930:  6F 72 20 65 64 69 74 6F 72 2A 29 0D 0A 46 52 4F    or editor*)..FRO
004940:  4D 20 46 69 6C 65 73 20 49 4D 50 4F 52 54 20 46    M Files IMPORT F
004950:  69 6C 65 4E 61 6D 65 2C 46 49 4C 45 2C 43 6C 6F    ileName,FILE,Clo
004960:  73 65 2C 43 72 65 61 74 65 3B 0D 0A 50 52 4F 43    se,Create;..PROC
004970:  45 44 55 52 45 20 52 65 64 69 73 70 6C 61 79 3B    EDURE Redisplay;
004980:  0D 0A 50 52 4F 43 45 44 55 52 45 20 44 6F 4D 65    ..PROCEDURE DoMe
004990:  6E 75 4F 70 3B 0D 0A 50 52 4F 43 45 44 55 52 45    nuOp;..PROCEDURE
0049A0:  20 4F 70 65 6E 28 66 6E 3A 46 69 6C 65 4E 61 6D     Open(fn:FileNam
0049B0:  65 3B 50 6F 73 3A 43 41 52 44 49 4E 41 4C 29 3B    e;Pos:CARDINAL);
0049C0:  0D 0A 50 52 4F 43 45 44 55 52 45 20 47 65 74 53    ..PROCEDURE GetS
0049D0:  74 72 69 6E 67 28 56 41 52 20 73 3A 41 52 52 41    tring(VAR s:ARRA
0049E0:  59 20 4F 46 20 43 48 41 52 3B 56 41 52 20 6C 65    Y OF CHAR;VAR le
0049F0:  6E 3A 43 41 52 44 49 4E 41 4C 3B 70 72 6F 6D 70    n:CARDINAL;promp
004A00:  74 3A 41 52 52 41 59 20 4F 46 20 43 48 41 52 29    t:ARRAY OF CHAR)
004A10:  3B 0D 0A 45 4E 44 20 44 6F 4D 65 6E 75 2E 0D 0A    ;..END DoMenu...
004A20:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
004A30:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
004A40:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
004A50:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
004A60:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
004A70:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
004A80:  6F 6E 73 20 61 72 65 20 73 75 70 70 6C 69 65 64    ons are supplied
004A90:  2E 20 20 53 43 52 45 45 4E 49 4F 2E 4F 53 42 20    .  SCREENIO.OSB 
004AA0:  69 73 20 66 6F 72 20 74 68 65 20 4F 73 62 6F 72    is for the Osbor
004AB0:  6E 65 0D 0A 09 09 31 2C 20 53 43 52 45 45 4E 49    ne....1, SCREENI
004AC0:  4F 2E 4D 42 45 20 69 73 20 66 6F 72 20 74 68 65    O.MBE is for the
004AD0:  20 4D 69 63 72 6F 42 65 65 2C 20 61 6E 64 20 53     MicroBee, and S
004AE0:  43 52 45 45 4E 49 4F 2E 45 41 52 20 69 73 20 66    CREENIO.EAR is f
004AF0:  6F 72 0D 0A 09 09 74 68 65 20 45 61 72 74 68 20    or....the Earth 
004B00:  65 20 61 20 64 69 66 66 65 72 65 6E 63 65 73 20    e a differences 
004B10:  66 69 6C 65 0D 0A 61 6E 64 20 61 6E 6F 74 68 65    file..and anothe
004B20:  72 20 74 6F 20 6D 65 72 67 65 20 74 68 65 20 64    r to merge the d
004B30:  69 66 66 65 72 65 6E 63 65 73 20 6F 6E 20 61 20    ifferences on a 
004B40:  72 65 6D 6F 74 65 20 6D 61 63 68 69 6E 65 2E 20    remote machine. 
004B50:  20 54 68 69 73 20 73 68 6F 75 6C 64 20 62 65 0D     This should be.
004B60:  0A 71 75 69 74 65 20 65 61 73 79 2C 20 67 69 76    .quite easy, giv
004B70:  65 6E 20 32 2E 0D 0A 0D 0A 41 6C 74 6F 67 65 74    en 2.....Altoget
004B80:  68 65 72 2C 20 74 68 65 73 65 20 74 68 72 65 65    her, these three
004B90:  20 65 78 74 65 6E 73 69 6F 6E 73 20 77 6F 75 6C     extensions woul
004BA0:  64 20 62 65 20 61 62 6F 75 74 20 72 69 67 68 74    d be about right
004BB0:  20 66 6F 72 20 61 20 74 65 72 6D 20 70 72 6F 6A     for a term proj
004BC0:  65 63 74 20 66 6F 72 0D 0A 6F 6E 65 20 73 74 75    ect for..one stu
004BD0:  64 65 6E 74 2E 20 20 4F 66 20 63 6F 75 72 73 65    dent.  Of course
004BE0:  2C 20 69 66 20 61 6E 79 6F 6E 65 20 6F 75 74 20    , if anyone out 
004BF0:  74 68 65 72 65 20 77 61 6E 74 73 20 74 6F 20 64    there wants to d
004C00:  6F 20 74 68 69 73 2C 20 77 65 27 6C 6C 20 68 61    o this, we'll ha
004C10:  70 70 69 6C 79 0D 0A 67 69 76 65 20 61 75 74 68    ppily..give auth
004C20:  6F 72 27 73 20 63 72 65 64 69 74 2E 0D 0A 0D 0A    or's credit.....
004C30:  09 43 6F 6D 70 44 69 72 20 2D 20 43 6F 6D 70 61    .CompDir - Compa
004C40:  72 65 20 74 77 6F 20 64 69 72 65 63 74 6F 72 69    re two directori
004C50:  65 73 0D 0A 09 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    es...===========
004C60:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
004C70:  3D 3D 3D 3D 3D 3D 0D 0A 0D 0A 43 6F 6D 70 44 69    ======....CompDi
004C80:  72 20 63 6F 6D 70 61 72 65 73 20 64 69 73 63 20    r compares disc 
004C90:  64 69 72 65 63 74 6F 72 69 65 73 2E 20 20 54 68    directories.  Th
004CA0:  65 20 63 6F 6D 70 61 72 69 73 6F 6E 20 6D 61 79    e comparison may
004CB0:  20 75 73 65 20 74 68 65 20 66 75 6C 6C 20 66 69     use the full fi
004CC0:  6C 65 0D 0A 6E 61 6D 65 2C 20 6A 75 73 74 20 74    le..name, just t
004CD0:  68 65 20 62 61 73 65 20 6E 61 6D 65 2C 20 6F 72    he base name, or
004CE0:  20 28 6E 6F 74 20 76 65 72 79 20 75 73 65 66 75     (not very usefu
004CF0:  6C 29 20 6A 75 73 74 20 74 68 65 20 65 78 74 65    l) just the exte
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 C9 02 00 00 00 02    ......R.........
004D20:  04 00 C5 02 00 00 00 02 04 00 C1 02 00 00 00 02    ................
004D30:  04 00 C6 02 00 00 00 02 04 00 C2 02 00 00 00 02    ................
004D40:  04 00 C7 02 00 00 00 02 04 00 C3 02 00 00 00 02    ................
004D50:  04 00 C8 02 00 00 00 02 04 00 C4 02 00 00 00 02    ................
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:  4F 43 45 44 55 52 45 20 57 72 69 74 65 41 77 61    OCEDURE WriteAwa
004E10:  79 46 69 6C 65 3B 0D 0A 42 45 47 49 4E 0D 0A 09    yFile;..BEGIN...
004E20:  43 6C 6F 73 65 46 69 6C 65 28 46 69 6C 65 73 5B    CloseFile(Files[
004E30:  43 75 72 72 65 6E 74 46 69 6C 65 5D 2C 72 65 70    CurrentFile],rep
004E40:  6C 79 29 3B 0D 0A 09 49 46 20 72 65 70 6C 79 3D    ly);...IF reply=
004E50:  2D 31 20 54 48 45 4E 20 0D 0A 09 09 45 72 72 6F    -1 THEN ....Erro
004E60:  72 4D 65 73 73 61 67 65 28 27 44 69 73 63 20 46    rMessage('Disc F
004E70:  75 6C 6C 20 27 2C 27 20 27 29 3B 0D 0A 09 45 4C    ull ',' ');...EL
004E80:  53 49 46 20 72 65 70 6C 79 3D 2D 32 20 54 48 45    SIF reply=-2 THE
004E90:  4E 0D 0A 09 09 45 72 72 6F 72 4D 65 73 73 61 67    N....ErrorMessag
004EA0:  65 28 27 44 69 72 65 63 74 6F 72 79 20 46 75 6C    e('Directory Ful
004EB0:  6C 20 27 2C 27 20 27 29 3B 0D 0A 09 09 45 4E 44    l ',' ');....END
004EC0:  3B 0D 0A 09 55 70 64 61 74 65 64 5B 43 75 72 72    ;...Updated[Curr
004ED0:  65 6E 74 46 69 6C 65 5D 3A 3D 46 41 4C 53 45 3B    entFile]:=FALSE;
004EE0:  0D 0A 09 45 4E 44 20 57 72 69 74 65 41 77 61 79    ...END WriteAway
004EF0:  46 69 6C 65 3B 0D 0A 50 52 4F 43 45 44 55 52 45    File;..PROCEDURE
004F00:  20 53 61 76 65 46 69 6C 65 73 3B 0D 0A 56 41 52     SaveFiles;..VAR
004F10:  09 69 3A 49 4E 54 45 47 45 52 3B 0D 0A 42 45 47    .i:INTEGER;..BEG
004F20:  49 4E 0D 0A 09 69 3A 3D 43 75 72 72 65 6E 74 46    IN...i:=CurrentF
004F30:  69 6C 65 3B 0D 0A 09 72 65 70 6C 79 3A 3D 30 3B    ile;...reply:=0;
004F40:  0D 0A 09 46 4F 52 20 43 75 72 72 65 6E 74 46 69    ...FOR CurrentFi
004F50:  6C 65 3A 3D 31 20 54 4F 20 46 69 6C 65 73 4F 70    le:=1 TO FilesOp
004F60:  65 6E 65 64 20 44 4F 0D 0A 09 09 49 46 20 55 70    ened DO....IF Up
004F70:  64 61 74 65 64 5B 43 75 72 72 65 6E 74 46 69 6C    dated[CurrentFil
004F80:  65 5D 20 54 48 45 4E 20 57 72 69 74 65 41 77 61    e] THEN WriteAwa
004F90:  79 46 69 6C 65 20 45 4E 44 3B 0D 0A 09 09 49 46    yFile END;....IF
004FA0:  20 72 65 70 6C 79 3C 3E 30 20 54 48 45 4E 20 52     reply<>0 THEN R
004FB0:  45 54 55 52 4E 20 45 4E 44 3B 0D 0A 09 09 45 4E    ETURN END;....EN
004FC0:  44 3B 0D 0A 09 43 75 72 72 65 6E 74 46 69 6C 65    D;...CurrentFile
004FD0:  3A 3D 69 3B 0D 0A 09 45 4E 44 20 53 61 76 65 46    :=i;...END SaveF
004FE0:  69 6C 65 73 3B 0D 0A 50 52 4F 43 45 44 55 52 45    iles;..PROCEDURE
004FF0:  20 50 72 65 70 61 72 65 54 6F 4C 65 61 76 65 3B     PrepareToLeave;
005000:  45 4C 53 45 0D 0A 09 09 09 09 43 6C 6F 73 65 28    ELSE......Close(
005010:  66 29 3B 0D 0A 09 09 09 09 4F 70 65 6E 46 69 6C    f);......OpenFil
005020:  65 28 46 69 6C 65 73 5B 46 69 6C 65 73 4F 70 65    e(Files[FilesOpe
005030:  6E 65 64 2B 31 5D 2C 66 6E 2C 72 65 70 6C 79 2C    ned+1],fn,reply,
005040:  50 6F 73 29 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D    Pos);......END;.
005050:  0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B    ....END;....END;
005060:  20 28 2A 72 65 70 6C 79 3D 2D 32 2A 29 0D 0A 09     (*reply=-2*)...
005070:  49 46 20 72 65 70 6C 79 3D 28 2D 34 29 20 54 48    IF reply=(-4) TH
005080:  45 4E 0D 0A 09 09 45 72 72 6F 72 4D 65 73 73 61    EN....ErrorMessa
005090:  67 65 28 27 43 6F 75 6C 64 20 6E 6F 74 20 63 72    ge('Could not cr
0050A0:  65 61 74 65 20 27 2C 66 6E 29 3B 0D 0A 09 45 4C    eate ',fn);...EL
0050B0:  53 49 46 20 72 65 70 6C 79 3D 28 2D 33 29 20 54    SIF reply=(-3) T
0050C0:  48 45 4E 0D 0A 09 09 45 72 72 6F 72 4D 65 73 73    HEN....ErrorMess
0050D0:  61 67 65 28 27 4F 75 74 20 6F 66 20 4D 65 6D 6F    age('Out of Memo
0050E0:  72 79 20 6C 6F 61 64 69 6E 67 20 27 2C 66 6E 20    ry loading ',fn 
0050F0:  29 3B 0D 0A 09 45 4C 53 49 46 20 72 65 70 6C 79    );...ELSIF reply
005100:  3D 28 2D 32 29 20 54 48 45 4E 0D 0A 09 09 45 72    =(-2) THEN....Er
005110:  72 6F 72 4D 65 73 73 61 67 65 28 27 46 69 6C 65    rorMessage('File
005120:  20 6E 6F 74 20 66 6F 75 6E 64 3A 27 2C 66 6E 29     not found:',fn)
005130:  3B 0D 0A 09 45 4C 53 49 46 20 72 65 70 6C 79 3C    ;...ELSIF reply<
005140:  30 20 54 48 45 4E 0D 0A 09 09 45 72 72 6F 72 4D    0 THEN....ErrorM
005150:  65 73 73 61 67 65 28 27 20 4F 74 68 65 72 20 65    essage(' Other e
005160:  72 72 6F 72 20 6F 70 65 6E 69 6E 67 20 66 69 6C    rror opening fil
005170:  65 3A 27 2C 66 6E 29 0D 0A 09 45 4C 53 45 20 09    e:',fn)...ELSE .
005180:  28 2A 66 69 6C 65 20 6F 6B 2A 29 0D 0A 09 09 49    (*file ok*)....I
005190:  4E 43 28 46 69 6C 65 73 4F 70 65 6E 65 64 29 3B    NC(FilesOpened);
0051A0:  0D 0A 09 09 49 4E 43 28 57 69 6E 64 6F 77 73 29    ....INC(Windows)
0051B0:  3B 0D 0A 09 09 57 69 6E 64 6F 77 46 69 6C 65 5B    ;....WindowFile[
0051C0:  57 69 6E 64 6F 77 73 5D 3A 3D 46 69 6C 65 73 4F    Windows]:=FilesO
0051D0:  70 65 6E 65 64 3B 0D 0A 09 09 53 65 74 57 69 6E    pened;....SetWin
0051E0:  64 6F 77 73 28 57 69 6E 64 6F 77 73 29 3B 0D 0A    dows(Windows);..
0051F0:  09 09 62 3A 3D 4C 61 62 65 6C 4F 70 28 46 69 6C    ..b:=LabelOp(Fil
005200:  28 2A 09 50 65 72 66 6F 72 6D 20 6D 65 6E 75 20    (*.Perform menu 
005210:  6F 70 65 72 61 74 69 6F 6E 73 0D 0A 0D 0A 09 43    operations.....C
005220:  6F 70 79 72 69 67 68 74 2C 20 20 44 61 76 65 20    opyright,  Dave 
005230:  4D 6F 6F 72 65 20 46 54 4C 20 4D 6F 64 75 6C 61    Moore FTL Modula
005240:  2D 32 20 31 39 38 36 0D 0A 0D 0A 09 09 32 36 20    -2 1986......26 
005250:  4A 75 6E 65 20 38 36 20 20 44 20 4D 6F 6F 72 65    June 86  D Moore
005260:  20 20 50 75 74 20 42 61 63 6B 53 70 61 63 65 20      Put BackSpace 
005270:  69 6E 73 69 64 65 20 49 46 20 74 6F 20 69 6D 70    inside IF to imp
005280:  72 6F 76 65 0D 0A 09 09 09 09 09 62 61 63 6B 73    rove.......backs
005290:  70 61 63 69 6E 67 20 70 65 72 66 6F 72 6D 61 6E    pacing performan
0052A0:  63 65 20 6F 66 20 47 65 74 53 74 72 69 6E 67 0D    ce of GetString.
0052B0:  0A 0D 0A 2A 29 0D 0A 49 4D 50 4C 45 4D 45 4E 54    ...*)..IMPLEMENT
0052C0:  41 54 49 4F 4E 20 4D 4F 44 55 4C 45 20 44 6F 4D    ATION MODULE DoM
0052D0:  65 6E 75 3B 0D 0A 0D 0A 28 2A 09 6D 65 6E 75 20    enu;....(*.menu 
0052E0:  70 72 6F 63 65 73 73 6F 72 20 66 6F 72 20 65 64    processor for ed
0052F0:  69 74 6F 72 0D 0A 0D 0A 09 63 6F 6E 74 61 69 6E    itor.....contain
005300:  73 20 61 6C 6C 20 63 6F 6D 6D 61 6E 64 73 20 77    s all commands w
005310:  68 69 63 68 20 61 72 65 20 70 65 72 66 6F 72 6D    hich are perform
005320:  65 64 20 66 72 6F 6D 20 61 20 6D 65 6E 75 2A 29    ed from a menu*)
005330:  0D 0A 46 52 4F 4D 09 54 65 72 6D 69 6E 61 6C 20    ..FROM.Terminal 
005340:  49 4D 50 4F 52 54 20 57 72 69 74 65 2C 57 72 69    IMPORT Write,Wri
005350:  74 65 53 74 72 69 6E 67 2C 52 65 61 64 53 74 72    teString,ReadStr
005360:  69 6E 67 2C 52 65 61 64 42 75 66 66 65 72 2C 57    ing,ReadBuffer,W
005370:  72 69 74 65 4C 6E 2C 52 65 61 64 2C 0D 0A 09 42    riteLn,Read,...B
005380:  75 73 79 52 65 61 64 2C 43 6C 65 61 72 43 68 61    usyRead,ClearCha
005390:  72 42 75 66 66 65 72 3B 0D 0A 46 52 4F 4D 20 09    rBuffer;..FROM .
0053A0:  4D 61 6B 65 45 64 69 74 73 20 49 4D 50 4F 52 54    MakeEdits IMPORT
0053B0:  20 4F 70 65 6E 46 69 6C 65 2C 43 6C 6F 73 65 46     OpenFile,CloseF
0053C0:  69 6C 65 2C 41 62 61 6E 64 6F 6E 46 69 6C 65 2C    ile,AbandonFile,
0053D0:  43 61 6C 6C 57 69 74 68 46 69 6C 65 2C 46 69 6C    CallWithFile,Fil
0053E0:  65 54 79 70 65 2C 4C 61 62 65 6C 4F 70 3B 0D 0A    eType,LabelOp;..
0053F0:  46 52 4F 4D 09 4D 65 6E 75 20 49 4D 50 4F 52 54    FROM.Menu IMPORT
005400:  65 73 5B 46 69 6C 65 73 4F 70 65 6E 65 64 5D 2C    es[FilesOpened],
005410:  54 52 55 45 2C 43 48 52 28 57 69 6E 64 6F 77 73    TRUE,CHR(Windows
005420:  29 29 3B 0D 0A 09 09 53 65 74 4C 65 66 74 4D 61    ));....SetLeftMa
005430:  72 67 28 46 69 6C 65 73 5B 46 69 6C 65 73 4F 70    rg(Files[FilesOp
005440:  65 6E 65 64 5D 2C 57 69 6E 64 6F 77 73 2C 0D 0A    ened],Windows,..
005450:  09 09 09 63 75 72 78 5B 57 69 6E 64 6F 77 73 5D    ...curx[Windows]
005460:  2C 63 75 72 79 5B 57 69 6E 64 6F 77 73 5D 29 3B    ,cury[Windows]);
005470:  0D 0A 09 09 55 70 64 61 74 65 64 5B 46 69 6C 65    ....Updated[File
005480:  73 4F 70 65 6E 65 64 5D 3A 3D 46 41 4C 53 45 3B    sOpened]:=FALSE;
005490:  0D 0A 09 09 43 68 61 6E 67 65 57 69 6E 64 6F 77    ....ChangeWindow
0054A0:  28 57 69 6E 64 6F 77 73 29 3B 0D 0A 09 09 45 4E    (Windows);....EN
0054B0:  44 3B 28 2A 72 65 70 6C 79 3D 76 61 72 69 6F 75    D;(*reply=variou
0054C0:  73 20 76 61 6C 75 65 73 2A 29 0D 0A 09 45 4E 44    s values*)...END
0054D0:  3B 28 2A 66 6E 5B 31 5D 3C 3E 27 20 27 2A 29 0D    ;(*fn[1]<>' '*).
0054E0:  0A 20 20 20 20 52 65 64 69 73 70 6C 61 79 3B 0D    .    Redisplay;.
0054F0:  0A 20 20 20 20 45 4E 44 20 4F 70 65 6E 3B 0D 0A    .    END Open;..
005500:  09 09 09 0D 0A 50 52 4F 43 45 44 55 52 45 20 53    .....PROCEDURE S
005510:  65 74 42 6F 78 50 6F 73 28 56 41 52 20 79 3A 43    etBoxPos(VAR y:C
005520:  41 52 44 49 4E 41 4C 29 3B 0D 0A 42 45 47 49 4E    ARDINAL);..BEGIN
005530:  0D 0A 09 49 46 20 57 69 6E 64 6F 77 73 3D 32 20    ...IF Windows=2 
005540:  54 48 45 4E 20 79 3A 3D 31 33 2A 28 43 75 72 72    THEN y:=13*(Curr
005550:  65 6E 74 57 69 6E 64 6F 77 2D 31 29 0D 0A 09 45    entWindow-1)...E
005560:  4C 53 49 46 20 43 75 72 72 65 6E 74 57 69 6E 64    LSIF CurrentWind
005570:  6F 77 3D 30 20 54 48 45 4E 20 79 3A 3D 30 0D 0A    ow=0 THEN y:=0..
005580:  09 45 4C 53 45 09 79 3A 3D 38 2A 28 43 75 72 72    .ELSE.y:=8*(Curr
005590:  65 6E 74 57 69 6E 64 6F 77 2D 31 29 20 45 4E 44    entWindow-1) END
0055A0:  3B 0D 0A 09 45 4E 44 20 53 65 74 42 6F 78 50 6F    ;...END SetBoxPo
0055B0:  73 3B 0D 0A 56 41 52 09 78 2C 79 2C 63 68 61 72    s;..VAR.x,y,char
0055C0:  73 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 50 52 4F    s:CARDINAL;..PRO
0055D0:  43 45 44 55 52 45 20 42 61 63 6B 53 70 61 63 65    CEDURE BackSpace
0055E0:  3B 0D 0A 42 45 47 49 4E 0D 0A 09 57 72 69 74 65    ;..BEGIN...Write
0055F0:  28 30 38 78 29 3B 0D 0A 09 57 72 69 74 65 28 27    (08x);...Write('
005600:  20 47 65 74 46 72 6F 6D 4D 65 6E 75 2C 4D 65 6E     GetFromMenu,Men
005610:  75 54 65 78 74 3B 0D 0A 46 52 4F 4D 20 09 45 64    uText;..FROM .Ed
005620:  69 74 43 6F 6E 74 72 6F 6C 20 49 4D 50 4F 52 54    itControl IMPORT
005630:  20 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 2C 43     CurrentWindow,C
005640:  75 72 72 65 6E 74 46 69 6C 65 2C 46 69 6C 65 73    urrentFile,Files
005650:  4F 70 65 6E 65 64 2C 63 75 72 78 2C 63 75 72 79    Opened,curx,cury
005660:  2C 46 69 6C 65 73 2C 0D 0A 09 09 09 45 6C 69 64    ,Files,.....Elid
005670:  65 57 69 6E 64 6F 77 2C 43 68 61 6E 67 65 57 69    eWindow,ChangeWi
005680:  6E 64 6F 77 2C 52 65 73 65 74 53 63 72 65 65 6E    ndow,ResetScreen
005690:  50 6F 73 2C 55 70 64 61 74 65 64 2C 4C 65 66 74    Pos,Updated,Left
0056A0:  4D 61 72 67 69 6E 2C 0D 0A 09 09 09 4D 61 6B 65    Margin,.....Make
0056B0:  57 69 6E 64 6F 77 2C 57 69 6E 64 6F 77 46 69 6C    Window,WindowFil
0056C0:  65 2C 46 69 6C 65 50 6F 73 69 74 69 6F 6E 3B 0D    e,FilePosition;.
0056D0:  0A 46 52 4F 4D 09 45 64 69 74 44 69 73 70 6C 61    .FROM.EditDispla
0056E0:  79 20 49 4D 50 4F 52 54 20 45 72 72 6F 72 4D 65    y IMPORT ErrorMe
0056F0:  73 73 61 67 65 2C 53 65 74 57 69 6E 64 6F 77 73    ssage,SetWindows
005700:  2C 44 69 73 70 6C 61 79 46 69 6C 65 2C 53 65 74    ,DisplayFile,Set
005710:  4C 65 66 74 4D 61 72 67 2C 57 69 6E 64 6F 77 73    LeftMarg,Windows
005720:  3B 0D 0A 46 52 4F 4D 09 4D 61 63 72 6F 73 20 49    ;..FROM.Macros I
005730:  4D 50 4F 52 54 20 53 74 6F 72 65 4D 61 63 72 6F    MPORT StoreMacro
005740:  73 3B 0D 0A 46 52 4F 4D 09 53 63 72 65 65 6E 44    s;..FROM.ScreenD
005750:  75 6D 6D 79 20 49 4D 50 4F 52 54 20 43 6C 65 61    ummy IMPORT Clea
005760:  72 53 63 72 65 65 6E 2C 44 72 61 77 42 6F 78 2C    rScreen,DrawBox,
005770:  47 6F 74 6F 78 79 3B 0D 0A 46 52 4F 4D 09 52 65    Gotoxy;..FROM.Re
005780:  73 65 74 44 69 73 63 20 49 4D 50 4F 52 54 20 52    setDisc IMPORT R
005790:  65 73 65 74 41 6C 6C 44 69 73 63 73 3B 0D 0A 56    esetAllDiscs;..V
0057A0:  41 52 09 54 65 78 74 3A 41 52 52 41 59 20 5B 30    AR.Text:ARRAY [0
0057B0:  2E 2E 39 5D 20 4F 46 20 4D 65 6E 75 54 65 78 74    ..9] OF MenuText
0057C0:  3D 5B 20 0D 0A 09 09 09 27 4F 70 65 6E 20 20 46    =[ .....'Open  F
0057D0:  69 6C 65 20 27 2C 0D 0A 09 09 09 27 53 61 76 65    ile ',.....'Save
0057E0:  20 20 46 69 6C 65 20 27 2C 0D 0A 09 09 09 27 43      File ',.....'C
0057F0:  6C 6F 73 65 20 46 69 6C 65 20 27 2C 0D 0A 09 09    lose File ',....
005800:  20 27 29 3B 0D 0A 09 57 72 69 74 65 28 30 38 78     ');...Write(08x
005810:  29 3B 0D 0A 09 44 45 43 28 63 68 61 72 73 29 3B    );...DEC(chars);
005820:  0D 0A 09 45 4E 44 20 42 61 63 6B 53 70 61 63 65    ...END BackSpace
005830:  3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 47 65 74    ;..PROCEDURE Get
005840:  53 74 72 69 6E 67 28 56 41 52 20 73 3A 41 52 52    String(VAR s:ARR
005850:  41 59 20 4F 46 20 43 48 41 52 3B 56 41 52 20 6C    AY OF CHAR;VAR l
005860:  65 6E 3A 43 41 52 44 49 4E 41 4C 3B 70 72 6F 6D    en:CARDINAL;prom
005870:  70 74 3A 41 52 52 41 59 20 4F 46 20 43 48 41 52    pt:ARRAY OF CHAR
005880:  29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 53 65 74 42    );..BEGIN...SetB
005890:  6F 78 50 6F 73 28 79 29 3B 0D 0A 09 44 72 61 77    oxPos(y);...Draw
0058A0:  42 6F 78 28 31 31 2C 79 2B 33 2C 31 34 2B 48 49    Box(11,y+3,14+HI
0058B0:  47 48 28 73 29 2B 48 49 47 48 28 70 72 6F 6D 70    GH(s)+HIGH(promp
0058C0:  74 29 2C 79 2B 31 29 3B 0D 0A 09 47 6F 74 6F 78    t),y+1);...Gotox
0058D0:  79 28 31 32 2C 79 2B 32 29 3B 0D 0A 09 46 4F 52    y(12,y+2);...FOR
0058E0:  20 78 3A 3D 30 20 54 4F 20 48 49 47 48 28 70 72     x:=0 TO HIGH(pr
0058F0:  6F 6D 70 74 29 20 44 4F 20 57 72 69 74 65 28 70    ompt) DO Write(p
005900:  72 6F 6D 70 74 5B 78 5D 29 20 45 4E 44 3B 0D 0A    rompt[x]) END;..
005910:  09 46 4F 52 20 78 3A 3D 30 20 54 4F 20 48 49 47    .FOR x:=0 TO HIG
005920:  48 28 73 29 20 44 4F 20 57 72 69 74 65 28 27 20    H(s) DO Write(' 
005930:  27 29 20 45 4E 44 3B 0D 0A 09 47 6F 74 6F 78 79    ') END;...Gotoxy
005940:  28 31 32 2B 48 49 47 48 28 70 72 6F 6D 70 74 29    (12+HIGH(prompt)
005950:  2B 31 2C 79 2B 32 29 3B 0D 0A 09 6C 65 6E 3A 3D    +1,y+2);...len:=
005960:  30 3B 63 68 3A 3D 30 78 3B 0D 0A 09 63 68 61 72    0;ch:=0x;...char
005970:  73 3A 3D 30 3B 0D 0A 09 4C 4F 4F 50 0D 0A 09 09    s:=0;...LOOP....
005980:  49 46 20 6C 65 6E 3E 48 49 47 48 28 73 29 20 54    IF len>HIGH(s) T
005990:  48 45 4E 20 45 58 49 54 20 45 4E 44 3B 0D 0A 09    HEN EXIT END;...
0059A0:  09 52 45 50 45 41 54 0D 0A 09 09 09 42 75 73 79    .REPEAT.....Busy
0059B0:  52 65 61 64 28 63 68 29 3B 0D 0A 09 09 09 55 4E    Read(ch);.....UN
0059C0:  54 49 4C 20 63 68 3C 3E 30 78 3B 0D 0A 09 09 49    TIL ch<>0x;....I
0059D0:  46 20 63 68 3D 30 64 78 20 54 48 45 4E 20 45 58    F ch=0dx THEN EX
0059E0:  49 54 20 45 4E 44 3B 0D 0A 09 09 49 46 20 28 63    IT END;....IF (c
0059F0:  68 3D 30 38 78 29 20 4F 52 20 28 63 68 3D 31 33    h=08x) OR (ch=13
005A00:  09 27 53 70 6C 69 74 20 46 69 6C 65 20 27 2C 0D    .'Split File ',.
005A10:  0A 09 09 09 27 43 6F 6D 70 69 6C 65 20 20 20 20    ....'Compile    
005A20:  27 2C 0D 0A 09 09 09 27 43 6F 6D 70 2F 45 78 69    ',.....'Comp/Exi
005A30:  74 20 20 27 2C 0D 0A 09 09 09 27 51 75 69 74 20    t  ',.....'Quit 
005A40:  46 69 6C 65 20 20 27 2C 0D 0A 09 09 09 27 51 75    File  ',.....'Qu
005A50:  69 74 20 57 69 6E 64 6F 77 27 2C 0D 0A 09 09 09    it Window',.....
005A60:  27 45 78 69 74 20 45 64 69 74 20 20 27 2C 0D 0A    'Exit Edit  ',..
005A70:  09 09 09 27 52 65 73 65 74 20 44 69 73 63 20 27    ...'Reset Disc '
005A80:  5D 3B 0D 0A 09 63 3A 43 41 52 44 49 4E 41 4C 3B    ];...c:CARDINAL;
005A90:  0D 0A 09 72 65 70 6C 79 3A 49 4E 54 45 47 45 52    ...reply:INTEGER
005AA0:  3B 0D 0A 09 69 3A 43 41 52 44 49 4E 41 4C 3B 0D    ;...i:CARDINAL;.
005AB0:  0A 09 63 68 3A 43 48 41 52 3B 0D 0A 50 52 4F 43    ..ch:CHAR;..PROC
005AC0:  45 44 55 52 45 20 52 65 64 69 73 70 6C 61 79 3B    EDURE Redisplay;
005AD0:  0D 0A 42 45 47 49 4E 0D 0A 09 53 65 74 57 69 6E    ..BEGIN...SetWin
005AE0:  64 6F 77 73 28 57 69 6E 64 6F 77 73 29 3B 0D 0A    dows(Windows);..
005AF0:  09 46 4F 52 20 69 3A 3D 31 20 54 4F 20 57 69 6E    .FOR i:=1 TO Win
005B00:  64 6F 77 73 20 44 4F 0D 0A 09 09 44 69 73 70 6C    dows DO....Displ
005B10:  61 79 46 69 6C 65 28 46 69 6C 65 73 5B 57 69 6E    ayFile(Files[Win
005B20:  64 6F 77 46 69 6C 65 5B 69 5D 5D 2C 69 2C 63 75    dowFile[i]],i,cu
005B30:  72 78 5B 69 5D 2C 63 75 72 79 5B 69 5D 29 3B 0D    rx[i],cury[i]);.
005B40:  0A 09 09 45 4E 44 3B 0D 0A 09 52 65 73 65 74 53    ...END;...ResetS
005B50:  63 72 65 65 6E 50 6F 73 3B 0D 0A 09 45 4E 44 20    creenPos;...END 
005B60:  52 65 64 69 73 70 6C 61 79 3B 0D 0A 50 52 4F 43    Redisplay;..PROC
005B70:  45 44 55 52 45 20 43 6C 65 61 72 44 69 73 70 6C    EDURE ClearDispl
005B80:  61 79 3B 0D 0A 42 45 47 49 4E 0D 0A 09 47 6F 74    ay;..BEGIN...Got
005B90:  6F 78 79 28 30 2C 30 29 3B 0D 0A 09 43 6C 65 61    oxy(0,0);...Clea
005BA0:  72 53 63 72 65 65 6E 3B 0D 0A 09 45 4E 44 20 43    rScreen;...END C
005BB0:  6C 65 61 72 44 69 73 70 6C 61 79 3B 0D 0A 50 52    learDisplay;..PR
005BC0:  4F 43 45 44 55 52 45 20 52 65 61 6C 6C 79 28 29    OCEDURE Really()
005BD0:  3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 42 45 47 49 4E    :BOOLEAN;..BEGIN
005BE0:  0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28 27    ...WriteString('
005BF0:  20 28 59 2F 4E 29 3F 20 27 29 3B 0D 0A 09 52 45     (Y/N)? ');...RE
005C00:  78 29 20 4F 52 20 28 63 68 3D 37 66 78 29 20 54    x) OR (ch=7fx) T
005C10:  48 45 4E 0D 0A 09 09 09 49 46 20 6C 65 6E 3E 30    HEN.....IF len>0
005C20:  20 54 48 45 4E 20 0D 0A 09 09 09 09 44 45 43 28     THEN ......DEC(
005C30:  6C 65 6E 29 3B 0D 0A 09 09 09 09 49 46 20 73 5B    len);......IF s[
005C40:  6C 65 6E 5D 3C 27 20 27 20 54 48 45 4E 20 42 61    len]<' ' THEN Ba
005C50:  63 6B 53 70 61 63 65 20 45 4E 44 3B 0D 0A 09 09    ckSpace END;....
005C60:  09 09 42 61 63 6B 53 70 61 63 65 3B 0D 0A 09 09    ..BackSpace;....
005C70:  09 09 45 4E 44 3B 0D 0A 09 09 45 4C 53 49 46 20    ..END;....ELSIF 
005C80:  63 68 3D 31 38 78 20 54 48 45 4E 0D 0A 09 09 09    ch=18x THEN.....
005C90:  46 4F 52 20 6C 65 6E 3A 3D 31 20 54 4F 20 63 68    FOR len:=1 TO ch
005CA0:  61 72 73 20 44 4F 20 42 61 63 6B 53 70 61 63 65    ars DO BackSpace
005CB0:  20 45 4E 44 3B 0D 0A 09 09 09 6C 65 6E 3A 3D 30     END;.....len:=0
005CC0:  3B 0D 0A 09 09 09 63 68 61 72 73 3A 3D 30 3B 0D    ;.....chars:=0;.
005CD0:  0A 09 09 45 4C 53 45 0D 0A 09 09 09 49 46 20 63    ...ELSE.....IF c
005CE0:  68 3C 27 20 27 20 54 48 45 4E 20 0D 0A 09 09 09    h<' ' THEN .....
005CF0:  09 57 72 69 74 65 28 27 5E 27 29 3B 0D 0A 09 09    .Write('^');....
005D00:  09 09 57 72 69 74 65 28 43 48 52 28 4F 52 44 28    ..Write(CHR(ORD(
005D10:  63 68 29 2B 36 34 29 29 3B 0D 0A 09 09 09 09 49    ch)+64));......I
005D20:  4E 43 28 63 68 61 72 73 29 3B 0D 0A 09 09 09 45    NC(chars);.....E
005D30:  4C 53 45 20 57 72 69 74 65 28 63 68 29 20 45 4E    LSE Write(ch) EN
005D40:  44 3B 0D 0A 09 09 09 49 4E 43 28 63 68 61 72 73    D;.....INC(chars
005D50:  29 3B 0D 0A 09 09 09 73 5B 6C 65 6E 5D 3A 3D 63    );.....s[len]:=c
005D60:  68 3B 0D 0A 09 09 09 49 4E 43 28 6C 65 6E 29 3B    h;.....INC(len);
005D70:  0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44    .....END;....END
005D80:  3B 28 2A 57 48 49 4C 45 2A 29 0D 0A 09 46 4F 52    ;(*WHILE*)...FOR
005D90:  20 78 3A 3D 6C 65 6E 20 54 4F 20 48 49 47 48 28     x:=len TO HIGH(
005DA0:  73 29 20 44 4F 20 73 5B 78 5D 3A 3D 27 20 27 20    s) DO s[x]:=' ' 
005DB0:  45 4E 44 3B 0D 0A 09 45 4E 44 20 47 65 74 53 74    END;...END GetSt
005DC0:  72 69 6E 67 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55    ring;....PROCEDU
005DD0:  52 45 20 44 6F 4D 65 6E 75 4F 70 3B 0D 0A 56 41    RE DoMenuOp;..VA
005DE0:  52 09 79 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09    R.y:CARDINAL;...
005DF0:  66 6E 3A 46 69 6C 65 4E 61 6D 65 3B 0D 0A 50 52    fn:FileName;..PR
005E00:  50 45 41 54 0D 0A 09 09 42 75 73 79 52 65 61 64    PEAT....BusyRead
005E10:  28 63 68 29 3B 0D 0A 09 09 63 68 3A 3D 43 41 50    (ch);....ch:=CAP
005E20:  28 63 68 29 3B 0D 0A 09 09 55 4E 54 49 4C 20 28    (ch);....UNTIL (
005E30:  63 68 3D 27 59 27 29 20 4F 52 20 28 63 68 3D 27    ch='Y') OR (ch='
005E40:  4E 27 29 3B 0D 0A 09 57 72 69 74 65 28 63 68 29    N');...Write(ch)
005E50:  3B 0D 0A 09 52 45 54 55 52 4E 20 63 68 3D 27 59    ;...RETURN ch='Y
005E60:  27 0D 0A 09 45 4E 44 20 52 65 61 6C 6C 79 3B 0D    '...END Really;.
005E70:  0A 50 52 4F 43 45 44 55 52 45 20 4F 70 65 6E 28    .PROCEDURE Open(
005E80:  66 6E 3A 46 69 6C 65 4E 61 6D 65 3B 50 6F 73 3A    fn:FileName;Pos:
005E90:  43 41 52 44 49 4E 41 4C 29 3B 0D 0A 28 2A 09 4F    CARDINAL);..(*.O
005EA0:  70 65 6E 20 74 68 65 20 66 69 6C 65 20 77 68 6F    pen the file who
005EB0:  73 65 20 6E 61 6D 65 20 69 73 20 69 6E 20 66 6E    se name is in fn
005EC0:  0D 0A 0D 0A 09 72 65 2D 61 64 6A 75 73 74 20 74    .....re-adjust t
005ED0:  68 65 20 64 69 73 70 6C 61 79 20 61 73 20 72 65    he display as re
005EE0:  71 75 69 72 65 64 2A 29 0D 0A 56 41 52 09 66 3A    quired*)..VAR.f:
005EF0:  46 49 4C 45 3B 0D 0A 09 62 3A 42 4F 4F 4C 45 41    FILE;...b:BOOLEA
005F00:  4E 3B 0D 0A 42 45 47 49 4E 0D 0A 20 20 20 20 49    N;..BEGIN..    I
005F10:  46 20 66 6E 5B 31 5D 3C 3E 27 20 27 20 54 48 45    F fn[1]<>' ' THE
005F20:  4E 20 0D 0A 09 4F 70 65 6E 46 69 6C 65 28 46 69    N ...OpenFile(Fi
005F30:  6C 65 73 5B 46 69 6C 65 73 4F 70 65 6E 65 64 2B    les[FilesOpened+
005F40:  31 5D 2C 66 6E 2C 72 65 70 6C 79 2C 50 6F 73 29    1],fn,reply,Pos)
005F50:  3B 0D 0A 09 49 46 20 72 65 70 6C 79 3D 28 2D 32    ;...IF reply=(-2
005F60:  29 20 54 48 45 4E 0D 0A 09 09 43 6C 65 61 72 44    ) THEN....ClearD
005F70:  69 73 70 6C 61 79 3B 0D 0A 09 09 57 72 69 74 65    isplay;....Write
005F80:  53 74 72 69 6E 67 28 27 20 43 72 65 61 74 65 20    String(' Create 
005F90:  27 29 3B 0D 0A 09 09 57 72 69 74 65 53 74 72 69    ');....WriteStri
005FA0:  6E 67 28 66 6E 29 3B 0D 0A 09 09 0D 0A 09 09 49    ng(fn);........I
005FB0:  46 20 52 65 61 6C 6C 79 28 29 20 54 48 45 4E 0D    F Really() THEN.
005FC0:  0A 09 09 09 43 72 65 61 74 65 28 66 2C 66 6E 2C    ....Create(f,fn,
005FD0:  72 65 70 6C 79 29 3B 0D 0A 09 09 09 49 46 20 72    reply);.....IF r
005FE0:  65 70 6C 79 3C 3E 30 20 54 48 45 4E 0D 0A 09 09    eply<>0 THEN....
005FF0:  09 09 72 65 70 6C 79 3A 3D 2D 34 0D 0A 09 09 09    ..reply:=-4.....
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 C9 02 00 00 00 02    ......R.........
006020:  05 00 C5 02 00 00 00 02 05 00 C1 02 00 00 00 02    ................
006030:  05 00 C6 02 00 00 00 02 05 00 C2 02 00 00 00 02    ................
006040:  05 00 C7 02 00 00 00 02 05 00 C3 02 00 00 00 02    ................
006050:  05 00 C8 02 00 00 00 02 05 00 C4 02 00 00 00 02    ................
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:  4E 41 4C 3B 0D 0A 09 54 68 69 73 78 2C 54 68 69    NAL;...Thisx,Thi
006110:  73 79 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 4C    sy:CARDINAL;...L
006120:  65 66 74 4D 61 72 67 69 6E 3A 41 52 52 41 59 5B    eftMargin:ARRAY[
006130:  31 2E 2E 4D 61 78 45 64 69 74 46 69 6C 65 73 5D    1..MaxEditFiles]
006140:  20 4F 46 20 43 41 52 44 49 4E 41 4C 3B 0D 0A 09     OF CARDINAL;...
006150:  4C 69 6E 65 4C 65 6E 3A 49 4E 54 45 47 45 52 3B    LineLen:INTEGER;
006160:  0D 0A 09 4C 69 6E 65 50 6F 73 3A 49 4E 54 45 47    ...LinePos:INTEG
006170:  45 52 3B 0D 0A 09 55 70 64 61 74 65 64 3A 41 52    ER;...Updated:AR
006180:  52 41 59 5B 31 2E 2E 4D 61 78 45 64 69 74 46 69    RAY[1..MaxEditFi
006190:  6C 65 73 5D 20 4F 46 20 42 4F 4F 4C 45 41 4E 3B    les] OF BOOLEAN;
0061A0:  0D 0A 09 57 69 6E 64 6F 77 46 69 6C 65 3A 41 52    ...WindowFile:AR
0061B0:  52 41 59 5B 31 2E 2E 4D 61 78 45 64 69 74 46 69    RAY[1..MaxEditFi
0061C0:  6C 65 73 5D 20 4F 46 20 43 41 52 44 49 4E 41 4C    les] OF CARDINAL
0061D0:  3B 0D 0A 09 4D 6F 76 65 64 4F 4B 3A 42 4F 4F 4C    ;...MovedOK:BOOL
0061E0:  45 41 4E 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20    EAN;..PROCEDURE 
0061F0:  49 6E 73 4F 6E 65 43 68 61 72 28 63 68 3A 43 48    InsOneChar(ch:CH
006200:  41 52 29 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20    AR);..PROCEDURE 
006210:  44 65 6C 4F 6E 65 43 68 61 72 3B 0D 0A 50 52 4F    DelOneChar;..PRO
006220:  43 45 44 55 52 45 20 44 65 6C 54 6F 45 4F 4C 3B    CEDURE DelToEOL;
006230:  0D 0A 50 52 4F 43 45 44 55 52 45 20 44 65 6C 46    ..PROCEDURE DelF
006240:  75 6C 6C 4C 69 6E 65 3B 0D 0A 50 52 4F 43 45 44    ullLine;..PROCED
006250:  55 52 45 20 4C 65 66 74 3B 0D 0A 50 52 4F 43 45    URE Left;..PROCE
006260:  44 55 52 45 20 52 69 67 68 74 3B 0D 0A 50 52 4F    DURE Right;..PRO
006270:  43 45 44 55 52 45 20 44 6F 77 6E 3B 0D 0A 50 52    CEDURE Down;..PR
006280:  4F 43 45 44 55 52 45 20 55 70 3B 0D 0A 50 52 4F    OCEDURE Up;..PRO
006290:  43 45 44 55 52 45 20 55 70 53 63 72 65 65 6E 3B    CEDURE UpScreen;
0062A0:  0D 0A 50 52 4F 43 45 44 55 52 45 20 44 6F 77 6E    ..PROCEDURE Down
0062B0:  53 63 72 65 65 6E 3B 0D 0A 50 52 4F 43 45 44 55    Screen;..PROCEDU
0062C0:  52 45 20 54 6F 70 3B 0D 0A 50 52 4F 43 45 44 55    RE Top;..PROCEDU
0062D0:  52 45 20 42 6F 74 74 6F 6D 3B 0D 0A 50 52 4F 43    RE Bottom;..PROC
0062E0:  45 44 55 52 45 20 43 68 61 6E 67 65 57 69 6E 64    EDURE ChangeWind
0062F0:  6F 77 28 69 3A 49 4E 54 45 47 45 52 29 3B 0D 0A    ow(i:INTEGER);..
006300:  4E 44 3B 28 2A 46 69 6C 65 73 4F 70 65 6E 65 64    ND;(*FilesOpened
006310:  2A 29 0D 0A 09 20 20 7C 0D 0A 09 38 3A 49 46 20    *)...  |...8:IF 
006320:  46 69 6C 65 73 4F 70 65 6E 65 64 3E 30 20 54 48    FilesOpened>0 TH
006330:  45 4E 0D 0A 09 09 49 46 20 43 6F 75 6E 74 52 65    EN....IF CountRe
006340:  66 73 28 29 3E 31 20 54 48 45 4E 20 0D 0A 09 09    fs()>1 THEN ....
006350:  09 20 20 45 6C 69 64 65 57 69 6E 64 6F 77 28 43    .  ElideWindow(C
006360:  75 72 72 65 6E 74 57 69 6E 64 6F 77 29 0D 0A 09    urrentWindow)...
006370:  09 09 20 20 43 68 61 6E 67 65 57 69 6E 64 6F 77    ..  ChangeWindow
006380:  28 31 29 3B 0D 0A 09 09 09 20 20 52 65 64 69 73    (1);.....  Redis
006390:  70 6C 61 79 3B 0D 0A 09 20 20 09 45 4C 53 45 20    play;...  .ELSE 
0063A0:  43 68 65 63 6B 52 65 6D 6F 76 65 46 69 6C 65 20    CheckRemoveFile 
0063B0:  45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 20    END;....END;... 
0063C0:  20 7C 0D 0A 09 39 3A 50 72 65 70 61 72 65 54 6F     |...9:PrepareTo
0063D0:  4C 65 61 76 65 3B 0D 0A 09 20 20 49 46 20 72 65    Leave;...  IF re
0063E0:  70 6C 79 3D 30 20 54 48 45 4E 20 48 41 4C 54 20    ply=0 THEN HALT 
0063F0:  09 45 4E 44 7C 0D 0A 09 31 30 3A 20 52 65 73 65    .END|...10: Rese
006400:  74 41 6C 6C 44 69 73 63 73 3B 0D 0A 09 20 20 20    tAllDiscs;...   
006410:  45 72 72 6F 72 4D 65 73 73 61 67 65 28 27 20 41    ErrorMessage(' A
006420:  6C 6C 20 64 69 73 63 73 20 6E 6F 77 20 72 65 61    ll discs now rea
006430:  64 2F 77 72 69 74 65 27 2C 27 20 27 29 3B 0D 0A    d/write',' ');..
006440:  09 20 20 20 45 4E 44 3B 0D 0A 09 45 4E 44 3B 20    .   END;...END; 
006450:  28 2A 49 46 20 46 69 6C 65 73 4F 70 65 6E 65 64    (*IF FilesOpened
006460:  20 65 74 63 20 2A 29 0D 0A 09 45 4E 44 20 44 6F     etc *)...END Do
006470:  4D 65 6E 75 4F 70 3B 0D 0A 09 45 4E 44 20 44 6F    MenuOp;...END Do
006480:  4D 65 6E 75 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A    Menu............
006490:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0064A0:  1A 1A 1A 1A 1A 1A 4C 69 73 74 20 54 48 45 4E 0D    ......List THEN.
0064B0:  0A 09 09 09 57 72 69 74 65 43 68 61 72 28 4C 69    ....WriteChar(Li
0064C0:  73 74 2C 44 65 76 69 63 65 29 3B 0D 0A 09 09 09    st,Device);.....
0064D0:  57 72 69 74 65 43 68 61 72 28 4C 69 73 74 2C 63    WriteChar(List,c
0064E0:  68 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09    h);.....END;....
0064F0:  57 72 69 74 65 53 74 72 69 6E 67 28 4E 61 6D 65    WriteString(Name
006500:  0D 0A 42 45 47 49 4E 0D 0A 09 53 61 76 65 46 69    ..BEGIN...SaveFi
006510:  6C 65 73 3B 0D 0A 09 49 46 20 72 65 70 6C 79 3D    les;...IF reply=
006520:  30 20 54 48 45 4E 0D 0A 09 09 43 6C 65 61 72 44    0 THEN....ClearD
006530:  69 73 70 6C 61 79 3B 0D 0A 09 09 53 74 6F 72 65    isplay;....Store
006540:  4D 61 63 72 6F 73 3B 0D 0A 09 09 45 4E 44 3B 0D    Macros;....END;.
006550:  0A 09 45 4E 44 20 50 72 65 70 61 72 65 54 6F 4C    ..END PrepareToL
006560:  65 61 76 65 3B 09 09 0D 0A 0D 0A 50 52 4F 43 45    eave;......PROCE
006570:  44 55 52 45 20 43 61 6C 6C 43 6F 6D 70 69 6C 65    DURE CallCompile
006580:  72 73 28 6F 70 74 31 2C 6F 70 74 32 3A 41 52 52    rs(opt1,opt2:ARR
006590:  41 59 20 4F 46 20 43 48 41 52 29 3B 0D 0A 42 45    AY OF CHAR);..BE
0065A0:  47 49 4E 0D 0A 09 50 72 65 70 61 72 65 54 6F 4C    GIN...PrepareToL
0065B0:  65 61 76 65 3B 0D 0A 09 49 46 20 72 65 70 6C 79    eave;...IF reply
0065C0:  3D 30 20 54 48 45 4E 0D 0A 09 20 20 20 20 43 41    =0 THEN...    CA
0065D0:  53 45 20 46 69 6C 65 54 79 70 65 28 46 69 6C 65    SE FileType(File
0065E0:  73 5B 43 75 72 72 65 6E 74 46 69 6C 65 5D 29 20    s[CurrentFile]) 
0065F0:  4F 46 0D 0A 09 09 31 3A 43 61 6C 6C 57 69 74 68    OF....1:CallWith
006600:  46 69 6C 65 28 6F 70 74 31 2C 46 69 6C 65 73 5B    File(opt1,Files[
006610:  43 75 72 72 65 6E 74 46 69 6C 65 5D 29 7C 0D 0A    CurrentFile])|..
006620:  09 09 32 3A 43 61 6C 6C 57 69 74 68 46 69 6C 65    ..2:CallWithFile
006630:  28 6F 70 74 32 2C 46 69 6C 65 73 5B 43 75 72 72    (opt2,Files[Curr
006640:  65 6E 74 46 69 6C 65 5D 29 3B 0D 0A 09 09 45 4E    entFile]);....EN
006650:  44 3B 0D 0A 09 09 52 65 64 69 73 70 6C 61 79 3B    D;....Redisplay;
006660:  0D 0A 09 09 45 72 72 6F 72 4D 65 73 73 61 67 65    ....ErrorMessage
006670:  28 27 20 49 6E 76 61 6C 69 64 20 46 69 6C 65 20    (' Invalid File 
006680:  54 79 70 65 27 2C 27 20 27 29 3B 0D 0A 09 20 20    Type',' ');...  
006690:  20 20 45 4E 44 3B 28 2A 49 46 2A 29 0D 0A 09 45      END;(*IF*)...E
0066A0:  4E 44 20 43 61 6C 6C 43 6F 6D 70 69 6C 65 72 73    ND CallCompilers
0066B0:  3B 09 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 6F    ;...PROCEDURE Co
0066C0:  75 6E 74 52 65 66 73 28 29 3A 43 41 52 44 49 4E    untRefs():CARDIN
0066D0:  41 4C 3B 09 0D 0A 56 41 52 09 6A 3A 43 41 52 44    AL;...VAR.j:CARD
0066E0:  49 4E 41 4C 3B 0D 0A 42 45 47 49 4E 0D 0A 09 6A    INAL;..BEGIN...j
0066F0:  3A 3D 30 3B 0D 0A 09 46 4F 52 20 69 3A 3D 31 20    :=0;...FOR i:=1 
006700:  29 3B 0D 0A 09 09 57 1A 1A 1A 1A 1A 1A 1A 1A 1A    );....W.........
006710:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
006720:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
006730:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
006740:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
006750:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
006760:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
006770:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
006780:  6D 6F 64 75 6C 65 2E 0D 0A 45 44 49 54 43 4F 4E    module...EDITCON
006790:  54 09 43 6F 6E 74 72 6F 6C 73 20 74 68 65 20 73    T.Controls the s
0067A0:  63 72 65 65 6E 20 64 69 73 70 6C 61 79 2E 0D 0A    creen display...
0067B0:  45 44 49 54 44 49 53 50 09 53 6F 6D 65 20 6F 74    EDITDISP.Some ot
0067C0:  68 65 72 20 73 63 72 65 65 6E 20 64 69 73 70 6C    her screen displ
0067D0:  61 79 20 70 72 6F 63 65 64 75 72 65 73 2D 2D 65    ay procedures--e
0067E0:  73 73 65 6E 74 69 61 6C 6C 79 20 70 61 72 74 0D    ssentially part.
0067F0:  0A 09 6F 66 20 45 44 49 54 43 4F 4E 54 2C 20 6B    ..of EDITCONT, k
006800:  65 70 74 20 73 65 70 61 72 61 74 65 20 66 6F 72    ept separate for
006810:  20 65 61 73 65 20 6F 66 20 6D 61 69 6E 74 65 6E     ease of mainten
006820:  61 6E 63 65 2E 0D 0A 4D 41 4B 45 45 44 49 54 09    ance...MAKEEDIT.
006830:  50 65 72 66 6F 72 6D 73 20 74 68 65 20 63 68 61    Performs the cha
006840:  6E 67 65 73 20 74 6F 20 74 68 65 20 66 69 6C 65    nges to the file
006850:  28 73 29 20 62 65 69 6E 67 20 65 64 69 74 65 64    (s) being edited
006860:  2E 0D 0A 4B 45 59 42 4F 41 52 44 09 41 63 63 65    ...KEYBOARD.Acce
006870:  70 74 73 20 69 6E 70 75 74 20 66 72 6F 6D 20 74    pts input from t
006880:  68 65 20 6B 65 79 62 6F 61 72 64 20 61 6E 64 20    he keyboard and 
006890:  63 61 6C 6C 73 20 61 70 70 72 6F 70 72 69 61 74    calls appropriat
0068A0:  65 0D 0A 09 09 72 6F 75 74 69 6E 65 73 20 74 6F    e....routines to
0068B0:  20 70 65 72 66 6F 72 6D 20 74 68 65 20 72 65 71     perform the req
0068C0:  75 65 73 74 65 64 20 65 64 69 74 20 66 75 6E 63    uested edit func
0068D0:  74 69 6F 6E 73 2E 0D 0A 44 4F 4D 45 4E 55 09 09    tions...DOMENU..
0068E0:  53 75 70 70 6F 72 74 73 20 74 68 65 20 6F 70 74    Supports the opt
0068F0:  69 6F 6E 73 20 6D 65 6E 75 20 28 74 68 61 74 20    ions menu (that 
006900:  54 4F 20 57 69 6E 64 6F 77 73 20 44 4F 0D 0A 09    TO Windows DO...
006910:  09 49 46 20 57 69 6E 64 6F 77 46 69 6C 65 5B 69    .IF WindowFile[i
006920:  5D 3D 43 75 72 72 65 6E 74 46 69 6C 65 20 54 48    ]=CurrentFile TH
006930:  45 4E 20 49 4E 43 28 6A 29 20 45 4E 44 3B 0D 0A    EN INC(j) END;..
006940:  09 09 45 4E 44 3B 0D 0A 09 52 45 54 55 52 4E 20    ..END;...RETURN 
006950:  6A 0D 0A 09 45 4E 44 20 43 6F 75 6E 74 52 65 66    j...END CountRef
006960:  73 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 52 65    s;..PROCEDURE Re
006970:  6D 6F 76 65 46 69 6C 65 3B 0D 0A 56 41 52 09 6A    moveFile;..VAR.j
006980:  2C 6B 3A 43 41 52 44 49 4E 41 4C 3B 63 68 3A 43    ,k:CARDINAL;ch:C
006990:  48 41 52 3B 0D 0A 42 45 47 49 4E 0D 0A 09 6A 3A    HAR;..BEGIN...j:
0069A0:  3D 43 75 72 72 65 6E 74 46 69 6C 65 3B 0D 0A 09    =CurrentFile;...
0069B0:  6B 3A 3D 31 3B 0D 0A 09 57 48 49 4C 45 20 6B 3C    k:=1;...WHILE k<
0069C0:  3D 57 69 6E 64 6F 77 73 20 44 4F 0D 0A 09 09 49    =Windows DO....I
0069D0:  46 20 57 69 6E 64 6F 77 46 69 6C 65 5B 6B 5D 3D    F WindowFile[k]=
0069E0:  6A 20 54 48 45 4E 0D 0A 09 09 20 09 45 6C 69 64    j THEN.... .Elid
0069F0:  65 57 69 6E 64 6F 77 28 6B 29 20 20 28 2A 77 68    eWindow(k)  (*wh
006A00:  69 63 68 20 64 65 63 72 65 6D 65 6E 74 73 20 77    ich decrements w
006A10:  69 6E 64 6F 77 73 2A 29 0D 0A 09 09 45 4C 53 45    indows*)....ELSE
006A20:  20 49 46 20 57 69 6E 64 6F 77 46 69 6C 65 5B 6B     IF WindowFile[k
006A30:  5D 3E 6A 20 54 48 45 4E 0D 0A 09 09 09 44 45 43    ]>j THEN.....DEC
006A40:  28 57 69 6E 64 6F 77 46 69 6C 65 5B 6B 5D 29 3B    (WindowFile[k]);
006A50:  0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 20 20 20    .....END;....   
006A60:  20 20 49 4E 43 28 6B 29 3B 0D 0A 09 09 20 20 20      INC(k);....   
006A70:  20 20 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A      END;....END;..
006A80:  09 41 62 61 6E 64 6F 6E 46 69 6C 65 28 46 69 6C    .AbandonFile(Fil
006A90:  65 73 5B 6A 5D 29 3B 0D 0A 09 46 4F 52 20 69 3A    es[j]);...FOR i:
006AA0:  3D 6A 2B 31 20 54 4F 20 46 69 6C 65 73 4F 70 65    =j+1 TO FilesOpe
006AB0:  6E 65 64 20 44 4F 20 0D 0A 09 09 46 69 6C 65 73    ned DO ....Files
006AC0:  5B 69 2D 31 5D 3A 3D 46 69 6C 65 73 5B 69 5D 3B    [i-1]:=Files[i];
006AD0:  0D 0A 09 09 55 70 64 61 74 65 64 5B 69 2D 31 5D    ....Updated[i-1]
006AE0:  3A 3D 55 70 64 61 74 65 64 5B 69 5D 3B 0D 0A 09    :=Updated[i];...
006AF0:  09 45 4E 44 3B 0D 0A 09 44 45 43 28 46 69 6C 65    .END;...DEC(File
006B00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006B10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006B20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006B30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006B40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006B50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006B60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006B70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006B80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006B90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006BA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006BB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006BC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006BD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006BE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006BF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006D00:  73 4F 70 65 6E 65 64 29 3B 0D 0A 09 43 68 61 6E    sOpened);...Chan
006D10:  67 65 57 69 6E 64 6F 77 28 31 29 3B 0D 0A 20 20    geWindow(1);..  
006D20:  09 52 65 64 69 73 70 6C 61 79 3B 0D 0A 09 45 4E    .Redisplay;...EN
006D30:  44 20 52 65 6D 6F 76 65 46 69 6C 65 3B 0D 0A 50    D RemoveFile;..P
006D40:  52 4F 43 45 44 55 52 45 20 43 68 65 63 6B 52 65    ROCEDURE CheckRe
006D50:  6D 6F 76 65 46 69 6C 65 3B 0D 0A 42 45 47 49 4E    moveFile;..BEGIN
006D60:  0D 0A 09 49 46 20 55 70 64 61 74 65 64 5B 43 75    ...IF Updated[Cu
006D70:  72 72 65 6E 74 46 69 6C 65 5D 20 54 48 45 4E 0D    rrentFile] THEN.
006D80:  0A 09 09 43 6C 65 61 72 44 69 73 70 6C 61 79 3B    ...ClearDisplay;
006D90:  0D 0A 09 09 57 72 69 74 65 53 74 72 69 6E 67 28    ....WriteString(
006DA0:  27 20 46 69 6C 65 20 75 70 64 61 74 65 64 20 2D    ' File updated -
006DB0:  20 41 72 65 20 79 6F 75 20 73 75 72 65 20 27 29     Are you sure ')
006DC0:  3B 0D 0A 09 09 49 46 20 4E 4F 54 20 52 65 61 6C    ;....IF NOT Real
006DD0:  6C 79 28 29 20 54 48 45 4E 20 0D 0A 09 09 09 52    ly() THEN .....R
006DE0:  65 64 69 73 70 6C 61 79 3B 0D 0A 09 09 09 52 45    edisplay;.....RE
006DF0:  54 55 52 4E 20 0D 0A 09 09 09 45 4E 44 3B 0D 0A    TURN .....END;..
006E00:  09 09 45 4E 44 3B 0D 0A 09 52 65 6D 6F 76 65 46    ..END;...RemoveF
006E10:  69 6C 65 3B 0D 0A 09 45 4E 44 20 43 68 65 63 6B    ile;...END Check
006E20:  52 65 6D 6F 76 65 46 69 6C 65 3B 0D 0A 42 45 47    RemoveFile;..BEG
006E30:  49 4E 0D 0A 09 53 65 74 42 6F 78 50 6F 73 28 79    IN...SetBoxPos(y
006E40:  29 3B 0D 0A 09 63 3A 3D 47 65 74 46 72 6F 6D 4D    );...c:=GetFromM
006E50:  65 6E 75 28 54 65 78 74 2C 31 30 2C 79 2C 35 2C    enu(Text,10,y,5,
006E60:  32 29 3B 0D 0A 09 43 6C 65 61 72 43 68 61 72 42    2);...ClearCharB
006E70:  75 66 66 65 72 3B 0D 0A 09 49 46 20 28 46 69 6C    uffer;...IF (Fil
006E80:  65 73 4F 70 65 6E 65 64 3D 30 29 20 41 4E 44 20    esOpened=0) AND 
006E90:  28 63 20 49 4E 20 7B 32 2E 2E 38 7D 29 20 54 48    (c IN {2..8}) TH
006EA0:  45 4E 0D 0A 09 09 45 72 72 6F 72 4D 65 73 73 61    EN....ErrorMessa
006EB0:  67 65 28 27 59 6F 75 20 68 61 76 65 20 74 6F 20    ge('You have to 
006EC0:  62 65 20 65 64 69 74 69 6E 67 20 61 20 66 69 6C    be editing a fil
006ED0:  65 20 74 6F 20 64 6F 20 74 68 69 73 27 2C 27 20    e to do this',' 
006EE0:  27 29 3B 0D 0A 09 45 4C 53 45 20 43 41 53 45 20    ');...ELSE CASE 
006EF0:  63 20 4F 46 0D 0A 09 31 3A 49 46 20 57 69 6E 64    c OF...1:IF Wind
006F00:  44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C    DEFINITION MODUL
006F10:  45 20 45 64 69 74 43 6F 6E 74 72 6F 6C 3B 0D 0A    E EditControl;..
006F20:  46 52 4F 4D 20 4D 61 6B 65 45 64 69 74 73 20 49    FROM MakeEdits I
006F30:  4D 50 4F 52 54 20 45 64 69 74 46 69 6C 65 2C 50    MPORT EditFile,P
006F40:  6F 73 69 74 69 6F 6E 3B 0D 0A 46 52 4F 4D 20 54    osition;..FROM T
006F50:  65 72 6D 69 6E 61 6C 20 49 4D 50 4F 52 54 20 57    erminal IMPORT W
006F60:  72 69 74 65 2C 57 72 69 74 65 4C 6E 3B 0D 0A 0D    rite,WriteLn;...
006F70:  0A 28 2A 09 45 64 69 74 6F 72 20 63 6F 6E 74 72    .(*.Editor contr
006F80:  6F 6C 20 2D 20 64 61 74 61 20 61 72 65 61 73 20    ol - data areas 
006F90:  66 6F 72 20 66 69 6C 65 20 61 6E 64 20 72 6F 75    for file and rou
006FA0:  74 69 6E 65 73 20 77 68 69 63 68 20 61 63 74 75    tines which actu
006FB0:  61 6C 6C 79 0D 0A 09 70 65 72 66 6F 72 6D 20 65    ally...perform e
006FC0:  64 69 74 20 66 75 6E 63 74 69 6F 6E 73 20 62 79    dit functions by
006FD0:  20 63 61 6C 6C 69 6E 67 20 6D 61 6B 65 65 64 69     calling makeedi
006FE0:  74 20 74 6F 20 65 64 69 74 20 74 68 65 20 66 69    t to edit the fi
006FF0:  6C 65 20 61 6E 64 0D 0A 09 65 64 69 74 64 69 73    le and...editdis
007000:  70 20 74 6F 20 63 68 61 6E 67 65 20 74 68 65 20    p to change the 
007010:  73 63 72 65 65 6E 2A 29 0D 0A 43 4F 4E 53 54 20    screen*)..CONST 
007020:  20 09 4D 61 78 45 64 69 74 46 69 6C 65 73 3D 33     .MaxEditFiles=3
007030:  3B 0D 0A 0D 0A 56 41 52 09 46 69 6C 65 73 3A 20    ;....VAR.Files: 
007040:  41 52 52 41 59 5B 31 2E 2E 4D 61 78 45 64 69 74    ARRAY[1..MaxEdit
007050:  46 69 6C 65 73 5D 20 4F 46 20 45 64 69 74 46 69    Files] OF EditFi
007060:  6C 65 3B 0D 0A 09 46 69 6C 65 73 4F 70 65 6E 65    le;...FilesOpene
007070:  64 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 43 75    d:CARDINAL;...Cu
007080:  72 72 65 6E 74 46 69 6C 65 2C 43 75 72 72 65 6E    rrentFile,Curren
007090:  74 57 69 6E 64 6F 77 3A 43 41 52 44 49 4E 41 4C    tWindow:CARDINAL
0070A0:  3B 0D 0A 09 46 69 6C 65 50 6F 73 69 74 69 6F 6E    ;...FilePosition
0070B0:  3A 41 52 52 41 59 5B 31 2E 2E 4D 61 78 45 64 69    :ARRAY[1..MaxEdi
0070C0:  74 46 69 6C 65 73 5D 20 4F 46 20 50 6F 73 69 74    tFiles] OF Posit
0070D0:  69 6F 6E 3B 0D 0A 09 63 75 72 78 2C 63 75 72 79    ion;...curx,cury
0070E0:  3A 41 52 52 41 59 5B 31 2E 2E 4D 61 78 45 64 69    :ARRAY[1..MaxEdi
0070F0:  74 46 69 6C 65 73 5D 20 4F 46 20 43 41 52 44 49    tFiles] OF CARDI
007100:  6F 77 73 3D 33 20 54 48 45 4E 20 45 72 72 6F 72    ows=3 THEN Error
007110:  4D 65 73 73 61 67 65 28 27 20 33 20 77 69 6E 64    Message(' 3 wind
007120:  6F 77 73 20 69 73 20 6D 61 78 20 61 6C 6C 6F 77    ows is max allow
007130:  65 64 27 2C 27 20 27 29 0D 0A 09 20 20 45 4C 53    ed',' ')...  ELS
007140:  45 0D 0A 09 09 47 65 74 53 74 72 69 6E 67 28 66    E....GetString(f
007150:  6E 2C 79 2C 27 46 69 6C 65 3A 27 29 3B 0D 0A 09    n,y,'File:');...
007160:  09 4F 70 65 6E 28 66 6E 2C 36 35 35 33 35 29 3B    .Open(fn,65535);
007170:  0D 0A 09 09 45 4E 44 0D 0A 09 20 20 7C 0D 0A 09    ....END...  |...
007180:  32 3A 57 72 69 74 65 41 77 61 79 46 69 6C 65 3B    2:WriteAwayFile;
007190:  0D 0A 09 20 20 7C 0D 0A 09 33 3A 57 72 69 74 65    ...  |...3:Write
0071A0:  41 77 61 79 46 69 6C 65 3B 0D 0A 09 20 20 49 46    AwayFile;...  IF
0071B0:  20 72 65 70 6C 79 3D 30 20 54 48 45 4E 20 0D 0A     reply=0 THEN ..
0071C0:  09 09 52 65 6D 6F 76 65 46 69 6C 65 3B 0D 0A 09    ..RemoveFile;...
0071D0:  09 45 4E 44 3B 0D 0A 09 20 20 7C 0D 0A 09 34 3A    .END;...  |...4:
0071E0:  49 46 20 57 69 6E 64 6F 77 73 3D 33 20 54 48 45    IF Windows=3 THE
0071F0:  4E 20 45 72 72 6F 72 4D 65 73 73 61 67 65 28 27    N ErrorMessage('
007200:  20 33 20 77 69 6E 64 6F 77 73 20 69 73 20 6D 61     3 windows is ma
007210:  78 20 61 6C 6C 6F 77 65 64 27 2C 27 20 27 29 0D    x allowed',' ').
007220:  0A 09 20 20 45 4C 53 45 0D 0A 09 09 4D 61 6B 65    ..  ELSE....Make
007230:  57 69 6E 64 6F 77 3B 0D 0A 09 09 53 65 74 57 69    Window;....SetWi
007240:  6E 64 6F 77 73 28 57 69 6E 64 6F 77 73 29 3B 0D    ndows(Windows);.
007250:  0A 09 09 43 68 61 6E 67 65 57 69 6E 64 6F 77 28    ...ChangeWindow(
007260:  43 75 72 72 65 6E 74 57 69 6E 64 6F 77 29 3B 0D    CurrentWindow);.
007270:  0A 09 09 52 65 64 69 73 70 6C 61 79 3B 0D 0A 09    ...Redisplay;...
007280:  09 45 4E 44 7C 0D 0A 09 09 0D 0A 09 35 3A 43 61    .END|.......5:Ca
007290:  6C 6C 43 6F 6D 70 69 6C 65 72 73 28 27 4D 32 5B    llCompilers('M2[
0072A0:  45 20 27 2C 27 4D 44 5B 45 20 27 29 7C 0D 0A 09    E ','MD[E ')|...
0072B0:  36 3A 43 61 6C 6C 43 6F 6D 70 69 6C 65 72 73 28    6:CallCompilers(
0072C0:  27 4D 32 20 27 2C 27 4D 44 20 27 29 7C 0D 0A 09    'M2 ','MD ')|...
0072D0:  37 3A 49 46 20 46 69 6C 65 73 4F 70 65 6E 65 64    7:IF FilesOpened
0072E0:  3E 30 20 54 48 45 4E 0D 0A 09 09 43 68 65 63 6B    >0 THEN....Check
0072F0:  52 65 6D 6F 76 65 46 69 6C 65 3B 0D 0A 09 09 45    RemoveFile;....E
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 C9 02 00 00 00 02    ......R.........
007320:  06 00 C5 02 00 00 00 02 06 00 C1 02 00 00 00 02    ................
007330:  06 00 C6 02 00 00 00 02 06 00 C2 02 00 00 00 02    ................
007340:  06 00 C7 02 00 00 00 02 06 00 C3 02 00 00 00 02    ................
007350:  06 00 C8 02 00 00 00 02 06 00 C4 02 00 00 00 02    ................
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:  3A 3D 54 68 69 73 78 2D 43 75 72 72 65 6E 74 4C    :=Thisx-CurrentL
007410:  65 66 74 4D 61 72 67 69 6E 3B 0D 0A 09 63 75 72    eftMargin;...cur
007420:  78 5B 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 5D    x[CurrentWindow]
007430:  3A 3D 54 68 69 73 78 3B 0D 0A 09 52 65 73 65 74    :=Thisx;...Reset
007440:  50 6F 73 3B 0D 0A 09 45 4E 44 20 43 68 61 6E 67    Pos;...END Chang
007450:  65 50 6F 73 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55    ePos;....PROCEDU
007460:  52 45 20 4C 69 6E 65 4D 6F 76 65 28 62 79 3A 49    RE LineMove(by:I
007470:  4E 54 45 47 45 52 29 3B 0D 0A 56 41 52 09 69 3A    NTEGER);..VAR.i:
007480:  49 4E 54 45 47 45 52 3B 0D 0A 42 45 47 49 4E 0D    INTEGER;..BEGIN.
007490:  0A 09 52 65 44 72 61 77 6E 3A 3D 46 41 4C 53 45    ..ReDrawn:=FALSE
0074A0:  3B 0D 0A 09 69 3A 3D 4C 69 6E 65 50 6F 73 3B 0D    ;...i:=LinePos;.
0074B0:  0A 09 53 65 74 4C 69 6E 65 50 6F 73 28 62 79 29    ..SetLinePos(by)
0074C0:  3B 0D 0A 09 4C 69 6E 65 50 6F 73 3A 3D 69 3B 0D    ;...LinePos:=i;.
0074D0:  0A 09 43 68 61 6E 67 65 50 6F 73 3B 0D 0A 09 49    ..ChangePos;...I
0074E0:  46 20 41 42 53 28 62 79 29 3E 31 20 54 48 45 4E    F ABS(by)>1 THEN
0074F0:  0D 0A 09 09 52 65 44 69 73 70 6C 61 79 57 69 6E    ....ReDisplayWin
007500:  64 6F 77 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45    dow;....END;...E
007510:  4E 44 20 4C 69 6E 65 4D 6F 76 65 3B 0D 0A 56 41    ND LineMove;..VA
007520:  52 09 70 77 3A 50 6F 73 69 74 69 6F 6E 3B 0D 0A    R.pw:Position;..
007530:  50 52 4F 43 45 44 55 52 45 20 57 72 69 74 65 50    PROCEDURE WriteP
007540:  61 72 74 4C 69 6E 65 28 63 3A 43 41 52 44 49 4E    artLine(c:CARDIN
007550:  41 4C 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 44 6F    AL);..BEGIN...Do
007560:  53 63 72 65 65 6E 43 68 61 6E 67 65 28 44 65 6C    ScreenChange(Del
007570:  45 6F 6C 29 3B 0D 0A 09 47 65 74 50 6F 73 69 74    Eol);...GetPosit
007580:  69 6F 6E 28 43 75 72 46 69 6C 65 50 74 72 5E 2C    ion(CurFilePtr^,
007590:  70 77 29 3B 0D 0A 09 4C 4F 4F 50 0D 0A 09 09 52    pw);...LOOP....R
0075A0:  65 61 64 4E 65 78 74 43 68 61 72 28 70 77 2C 63    eadNextChar(pw,c
0075B0:  68 29 3B 0D 0A 09 09 49 46 20 28 63 68 3D 30 64    h);....IF (ch=0d
0075C0:  78 29 20 4F 52 20 28 63 68 3D 31 61 78 29 20 4F    x) OR (ch=1ax) O
0075D0:  52 20 28 63 68 3D 30 61 78 29 20 54 48 45 4E 20    R (ch=0ax) THEN 
0075E0:  45 58 49 54 20 45 4E 44 3B 0D 0A 09 09 49 46 20    EXIT END;....IF 
0075F0:  63 3E 3D 28 53 63 72 65 65 6E 57 69 64 74 68 2B    c>=(ScreenWidth+
007600:  43 41 52 44 49 4E 41 4C 3B 0D 0A 09 53 74 61 72    CARDINAL;...Star
007610:  74 6F 66 57 69 6E 64 6F 77 2C 45 6E 64 6F 66 57    tofWindow,EndofW
007620:  69 6E 64 6F 77 3A 43 41 52 44 49 4E 41 4C 3B 0D    indow:CARDINAL;.
007630:  0A 09 63 68 3A 43 48 41 52 3B 0D 0A 09 43 75 72    ..ch:CHAR;...Cur
007640:  72 65 6E 74 4C 65 66 74 4D 61 72 67 69 6E 3A 43    rentLeftMargin:C
007650:  41 52 44 49 4E 41 4C 3B 0D 0A 09 46 69 6C 65 4C    ARDINAL;...FileL
007660:  69 6D 69 74 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 09    imit:BOOLEAN;...
007670:  52 65 44 72 61 77 6E 3A 42 4F 4F 4C 45 41 4E 3B    ReDrawn:BOOLEAN;
007680:  0D 0A 09 43 75 72 46 69 6C 65 50 74 72 3A 50 45    ...CurFilePtr:PE
007690:  64 69 74 46 69 6C 65 3B 0D 0A 50 52 4F 43 45 44    ditFile;..PROCED
0076A0:  55 52 45 20 43 68 61 6E 67 65 50 6F 73 3B 46 4F    URE ChangePos;FO
0076B0:  52 57 41 52 44 3B 0D 0A 50 52 4F 43 45 44 55 52    RWARD;..PROCEDUR
0076C0:  45 20 44 6F 53 63 72 65 65 6E 43 68 61 6E 67 65    E DoScreenChange
0076D0:  28 43 6F 64 65 3A 45 64 69 74 73 29 3B 0D 0A 42    (Code:Edits);..B
0076E0:  45 47 49 4E 0D 0A 09 53 63 72 65 65 6E 43 6F 6E    EGIN...ScreenCon
0076F0:  74 72 6F 6C 28 43 6F 64 65 29 3B 0D 0A 09 45 4E    trol(Code);...EN
007700:  44 20 44 6F 53 63 72 65 65 6E 43 68 61 6E 67 65    D DoScreenChange
007710:  3B 0D 0A 0D 0A 0D 0A 56 41 52 09 6C 69 6E 65 73    ;......VAR.lines
007720:  6D 6F 76 65 64 3A 49 4E 54 45 47 45 52 3B 0D 0A    moved:INTEGER;..
007730:  09 70 3A 50 6F 73 69 74 69 6F 6E 3B 0D 0A 0D 0A    .p:Position;....
007740:  50 52 4F 43 45 44 55 52 45 20 53 65 74 4C 69 6E    PROCEDURE SetLin
007750:  65 50 6F 73 28 6D 6F 76 65 3A 49 4E 54 45 47 45    ePos(move:INTEGE
007760:  52 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 52 65 74    R);..BEGIN...Ret
007770:  72 6C 69 6E 65 28 43 75 72 46 69 6C 65 50 74 72    rline(CurFilePtr
007780:  5E 2C 4C 69 6E 65 4C 65 6E 2C 4C 69 6E 65 50 6F    ^,LineLen,LinePo
007790:  73 2C 70 2C 6C 69 6E 65 73 6D 6F 76 65 64 2C 6D    s,p,linesmoved,m
0077A0:  6F 76 65 29 3B 0D 0A 09 45 4E 44 20 53 65 74 4C    ove);...END SetL
0077B0:  69 6E 65 50 6F 73 3B 0D 0A 50 52 4F 43 45 44 55    inePos;..PROCEDU
0077C0:  52 45 20 4D 61 72 6B 41 73 55 70 64 61 74 65 64    RE MarkAsUpdated
0077D0:  3B 0D 0A 42 45 47 49 4E 0D 0A 09 55 70 64 61 74    ;..BEGIN...Updat
0077E0:  65 64 5B 43 75 72 72 65 6E 74 46 69 6C 65 5D 3A    ed[CurrentFile]:
0077F0:  3D 54 52 55 45 0D 0A 09 45 4E 44 20 4D 61 72 6B    =TRUE...END Mark
007800:  50 52 4F 43 45 44 55 52 45 20 45 6C 69 64 65 57    PROCEDURE ElideW
007810:  69 6E 64 6F 77 28 69 3A 49 4E 54 45 47 45 52 29    indow(i:INTEGER)
007820:  3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 4D 61 6B    ;..PROCEDURE Mak
007830:  65 57 69 6E 64 6F 77 3B 0D 0A 50 52 4F 43 45 44    eWindow;..PROCED
007840:  55 52 45 20 53 63 72 6F 6C 6C 55 70 3B 0D 0A 50    URE ScrollUp;..P
007850:  52 4F 43 45 44 55 52 45 20 53 63 72 6F 6C 6C 44    ROCEDURE ScrollD
007860:  6F 77 6E 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20    own;..PROCEDURE 
007870:  52 65 73 65 74 53 63 72 65 65 6E 50 6F 73 3B 0D    ResetScreenPos;.
007880:  0A 50 52 4F 43 45 44 55 52 45 20 46 61 72 52 69    .PROCEDURE FarRi
007890:  67 68 74 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20    ght;..PROCEDURE 
0078A0:  46 61 72 4C 65 66 74 3B 0D 0A 50 52 4F 43 45 44    FarLeft;..PROCED
0078B0:  55 52 45 20 53 65 61 72 63 68 28 52 65 70 6C 61    URE Search(Repla
0078C0:  63 65 3A 41 52 52 41 59 20 4F 46 20 43 48 41 52    ce:ARRAY OF CHAR
0078D0:  3B 52 4C 65 6E 3A 49 4E 54 45 47 45 52 3B 4C 65    ;RLen:INTEGER;Le
0078E0:  6E 3A 43 41 52 44 49 4E 41 4C 29 3A 42 4F 4F 4C    n:CARDINAL):BOOL
0078F0:  45 41 4E 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20    EAN;..PROCEDURE 
007900:  4F 76 65 72 57 72 69 74 65 28 63 68 3A 43 48 41    OverWrite(ch:CHA
007910:  52 29 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 46    R);..PROCEDURE F
007920:  69 6E 64 57 6F 72 64 28 42 61 63 6B 57 61 72 64    indWord(BackWard
007930:  3A 42 4F 4F 4C 45 41 4E 3B 44 65 6C 65 74 65 3A    :BOOLEAN;Delete:
007940:  42 4F 4F 4C 45 41 4E 29 3B 0D 0A 50 52 4F 43 45    BOOLEAN);..PROCE
007950:  44 55 52 45 20 52 65 44 69 73 70 6C 61 79 3B 0D    DURE ReDisplay;.
007960:  0A 50 52 4F 43 45 44 55 52 45 20 47 6F 54 6F 4C    .PROCEDURE GoToL
007970:  61 62 65 6C 28 63 68 3A 43 48 41 52 29 3B 0D 0A    abel(ch:CHAR);..
007980:  45 4E 44 20 45 64 69 74 43 6F 6E 74 72 6F 6C 2E    END EditControl.
007990:  0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0079A0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0079B0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0079C0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0079D0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0079E0:  1A 1A 1A 1A 1A 54 20 20 44 45 46 20 00 00 00 00    .....T  DEF ....
0079F0:  00 00 00 00 00 00 F3 45 78 0D 0D 01 69 0B 00 00    .......Ex...i...
007A00:  41 73 55 70 64 61 74 65 64 3B 0D 0A 50 52 4F 43    AsUpdated;..PROC
007A10:  45 44 55 52 45 20 44 65 6C 54 6F 45 4F 4C 3B 0D    EDURE DelToEOL;.
007A20:  0A 42 45 47 49 4E 0D 0A 09 4D 61 72 6B 41 73 55    .BEGIN...MarkAsU
007A30:  70 64 61 74 65 64 3B 0D 0A 09 49 46 20 4C 69 6E    pdated;...IF Lin
007A40:  65 50 6F 73 3C 3D 4C 69 6E 65 4C 65 6E 20 54 48    ePos<=LineLen TH
007A50:  45 4E 20 0D 0A 09 09 44 65 6C 43 68 61 72 73 28    EN ....DelChars(
007A60:  43 75 72 46 69 6C 65 50 74 72 5E 2C 4C 69 6E 65    CurFilePtr^,Line
007A70:  4C 65 6E 2D 4C 69 6E 65 50 6F 73 29 20 0D 0A 09    Len-LinePos) ...
007A80:  09 45 4E 44 3B 0D 0A 09 4C 69 6E 65 4C 65 6E 3A    .END;...LineLen:
007A90:  3D 4C 69 6E 65 50 6F 73 3B 0D 0A 09 44 6F 53 63    =LinePos;...DoSc
007AA0:  72 65 65 6E 43 68 61 6E 67 65 28 44 65 6C 45 6F    reenChange(DelEo
007AB0:  6C 29 3B 0D 0A 09 45 4E 44 20 44 65 6C 54 6F 45    l);...END DelToE
007AC0:  4F 4C 3B 0D 0A 56 41 52 09 0D 0A 09 62 3A 42 4F    OL;..VAR....b:BO
007AD0:  4F 4C 45 41 4E 3B 0D 0A 50 52 4F 43 45 44 55 52    OLEAN;..PROCEDUR
007AE0:  45 20 52 65 73 65 74 50 6F 73 3B 0D 0A 42 45 47    E ResetPos;..BEG
007AF0:  49 4E 0D 0A 09 47 6F 74 6F 78 79 28 54 68 69 73    IN...Gotoxy(This
007B00:  78 2C 54 68 69 73 79 29 3B 0D 0A 09 45 4E 44 20    x,Thisy);...END 
007B10:  52 65 73 65 74 50 6F 73 3B 0D 0A 50 52 4F 43 45    ResetPos;..PROCE
007B20:  44 55 52 45 20 52 65 44 69 73 70 6C 61 79 57 69    DURE ReDisplayWi
007B30:  6E 64 6F 77 3B 0D 0A 42 45 47 49 4E 0D 0A 09 44    ndow;..BEGIN...D
007B40:  69 73 70 6C 61 79 46 69 6C 65 28 43 75 72 46 69    isplayFile(CurFi
007B50:  6C 65 50 74 72 5E 2C 43 75 72 72 65 6E 74 57 69    lePtr^,CurrentWi
007B60:  6E 64 6F 77 2C 54 68 69 73 78 2C 54 68 69 73 79    ndow,Thisx,Thisy
007B70:  29 3B 0D 0A 09 52 65 73 65 74 50 6F 73 3B 0D 0A    );...ResetPos;..
007B80:  09 63 75 72 78 5B 43 75 72 72 65 6E 74 57 69 6E    .curx[CurrentWin
007B90:  64 6F 77 5D 3A 3D 54 68 69 73 78 3B 0D 0A 09 63    dow]:=Thisx;...c
007BA0:  75 72 79 5B 43 75 72 72 65 6E 74 57 69 6E 64 6F    ury[CurrentWindo
007BB0:  77 5D 3A 3D 54 68 69 73 79 3B 0D 0A 09 52 65 44    w]:=Thisy;...ReD
007BC0:  72 61 77 6E 3A 3D 54 52 55 45 3B 0D 0A 09 45 4E    rawn:=TRUE;...EN
007BD0:  44 20 52 65 44 69 73 70 6C 61 79 57 69 6E 64 6F    D ReDisplayWindo
007BE0:  77 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 52 65    w;..PROCEDURE Re
007BF0:  44 69 73 70 6C 61 79 3B 0D 0A 42 45 47 49 4E 0D    Display;..BEGIN.
007C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007E00:  0A 09 52 65 44 69 73 70 6C 61 79 57 69 6E 64 6F    ..ReDisplayWindo
007E10:  77 3B 0D 0A 09 53 65 74 4C 69 6E 65 50 6F 73 28    w;...SetLinePos(
007E20:  30 29 3B 0D 0A 09 43 68 61 6E 67 65 50 6F 73 3B    0);...ChangePos;
007E30:  0D 0A 09 45 4E 44 20 52 65 44 69 73 70 6C 61 79    ...END ReDisplay
007E40:  3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 68 61    ;..PROCEDURE Cha
007E50:  6E 67 65 4D 61 72 67 69 6E 28 49 6E 63 3A 49 4E    ngeMargin(Inc:IN
007E60:  54 45 47 45 52 29 3B 0D 0A 42 45 47 49 4E 0D 0A    TEGER);..BEGIN..
007E70:  09 49 46 20 28 49 6E 63 3C 30 29 20 41 4E 44 20    .IF (Inc<0) AND 
007E80:  20 28 43 75 72 72 65 6E 74 4C 65 66 74 4D 61 72     (CurrentLeftMar
007E90:  67 69 6E 3C 43 41 52 44 49 4E 41 4C 28 2D 49 6E    gin<CARDINAL(-In
007EA0:  63 29 29 20 54 48 45 4E 20 0D 0A 09 09 49 6E 63    c)) THEN ....Inc
007EB0:  3A 3D 2D 49 4E 54 45 47 45 52 28 43 75 72 72 65    :=-INTEGER(Curre
007EC0:  6E 74 4C 65 66 74 4D 61 72 67 69 6E 29 20 0D 0A    ntLeftMargin) ..
007ED0:  09 09 45 4E 44 3B 0D 0A 09 49 46 20 28 49 6E 63    ..END;...IF (Inc
007EE0:  3E 30 29 20 41 4E 44 20 28 54 68 69 73 78 3C 43    >0) AND (Thisx<C
007EF0:  41 52 44 49 4E 41 4C 28 49 6E 63 29 29 20 54 48    ARDINAL(Inc)) TH
007F00:  45 4E 20 49 6E 63 3A 3D 54 68 69 73 78 20 45 4E    EN Inc:=Thisx EN
007F10:  44 3B 0D 0A 09 43 75 72 72 65 6E 74 4C 65 66 74    D;...CurrentLeft
007F20:  4D 61 72 67 69 6E 3A 3D 49 4E 54 45 47 45 52 28    Margin:=INTEGER(
007F30:  43 75 72 72 65 6E 74 4C 65 66 74 4D 61 72 67 69    CurrentLeftMargi
007F40:  6E 29 2B 49 6E 63 3B 0D 0A 09 54 68 69 73 78 3A    n)+Inc;...Thisx:
007F50:  3D 49 4E 54 45 47 45 52 28 54 68 69 73 78 29 2D    =INTEGER(Thisx)-
007F60:  49 6E 63 3B 0D 0A 09 63 75 72 78 5B 43 75 72 72    Inc;...curx[Curr
007F70:  65 6E 74 57 69 6E 64 6F 77 5D 3A 3D 54 68 69 73    entWindow]:=This
007F80:  78 3B 0D 0A 09 4C 65 66 74 4D 61 72 67 69 6E 5B    x;...LeftMargin[
007F90:  43 75 72 72 65 6E 74 57 69 6E 64 6F 77 5D 3A 3D    CurrentWindow]:=
007FA0:  43 75 72 72 65 6E 74 4C 65 66 74 4D 61 72 67 69    CurrentLeftMargi
007FB0:  6E 3B 0D 0A 09 52 65 44 69 73 70 6C 61 79 57 69    n;...ReDisplayWi
007FC0:  6E 64 6F 77 3B 0D 0A 09 52 65 73 65 74 50 6F 73    ndow;...ResetPos
007FD0:  3B 0D 0A 09 45 4E 44 20 43 68 61 6E 67 65 4D 61    ;...END ChangeMa
007FE0:  72 67 69 6E 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55    rgin;....PROCEDU
007FF0:  52 45 20 43 68 61 6E 67 65 50 6F 73 3B 0D 0A 56    RE ChangePos;..V
008000:  49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D    IMPLEMENTATION M
008010:  4F 44 55 4C 45 20 45 64 69 74 43 6F 6E 74 72 6F    ODULE EditContro
008020:  6C 3B 0D 0A 0D 0A 28 2A 09 45 64 69 74 6F 72 20    l;....(*.Editor 
008030:  63 6F 6E 74 72 6F 6C 20 2D 20 64 61 74 61 20 61    control - data a
008040:  72 65 61 73 20 66 6F 72 20 66 69 6C 65 20 61 6E    reas for file an
008050:  64 20 72 6F 75 74 69 6E 65 73 20 77 68 69 63 68    d routines which
008060:  20 61 63 74 75 61 6C 6C 79 0D 0A 09 70 65 72 66     actually...perf
008070:  6F 72 6D 20 65 64 69 74 20 66 75 6E 63 74 69 6F    orm edit functio
008080:  6E 73 20 62 79 20 63 61 6C 6C 69 6E 67 20 6D 61    ns by calling ma
008090:  6B 65 65 64 69 74 20 74 6F 20 65 64 69 74 20 74    keedit to edit t
0080A0:  68 65 20 66 69 6C 65 20 61 6E 64 0D 0A 09 65 64    he file and...ed
0080B0:  69 74 64 69 73 70 20 74 6F 20 63 68 61 6E 67 65    itdisp to change
0080C0:  20 74 68 65 20 73 63 72 65 65 6E 2A 29 0D 0A 0D     the screen*)...
0080D0:  0A 46 52 4F 4D 20 4D 61 6B 65 45 64 69 74 73 20    .FROM MakeEdits 
0080E0:  49 4D 50 4F 52 54 20 49 6E 73 43 68 61 72 73 2C    IMPORT InsChars,
0080F0:  44 65 6C 43 68 61 72 73 2C 52 65 74 72 6C 69 6E    DelChars,Retrlin
008100:  65 2C 42 61 63 6B 4F 6E 65 43 68 61 72 2C 46 6F    e,BackOneChar,Fo
008110:  72 77 61 72 64 4F 6E 65 43 68 61 72 2C 0D 0A 09    rwardOneChar,...
008120:  09 47 65 74 43 75 72 72 65 6E 74 43 68 61 72 2C    .GetCurrentChar,
008130:  47 65 74 50 6F 73 69 74 69 6F 6E 2C 53 65 74 50    GetPosition,SetP
008140:  6F 73 69 74 69 6F 6E 2C 52 65 61 64 4E 65 78 74    osition,ReadNext
008150:  43 68 61 72 2C 46 69 6E 64 53 74 72 69 6E 67 2C    Char,FindString,
008160:  0D 0A 09 09 4C 61 62 65 6C 4F 70 3B 0D 0A 46 52    ....LabelOp;..FR
008170:  4F 4D 20 45 64 69 74 44 69 73 70 6C 61 79 20 49    OM EditDisplay I
008180:  4D 50 4F 52 54 20 44 69 73 70 6C 61 79 46 69 6C    MPORT DisplayFil
008190:  65 2C 45 72 72 6F 72 4D 65 73 73 61 67 65 2C 57    e,ErrorMessage,W
0081A0:  69 6E 64 6F 77 73 2C 4C 69 6E 65 73 50 65 72 57    indows,LinesPerW
0081B0:  69 6E 64 6F 77 3B 0D 0A 46 52 4F 4D 20 53 63 72    indow;..FROM Scr
0081C0:  65 65 6E 49 4F 20 49 4D 50 4F 52 54 20 45 64 69    eenIO IMPORT Edi
0081D0:  74 73 2C 44 65 6C 43 68 61 72 2C 44 65 6C 4C 69    ts,DelChar,DelLi
0081E0:  6E 65 2C 49 6E 73 43 68 61 72 2C 49 6E 73 4C 69    ne,InsChar,InsLi
0081F0:  6E 65 2C 44 65 6C 45 6F 6C 2C 4D 6F 76 65 55 70    ne,DelEol,MoveUp
008200:  41 52 09 69 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A    AR.i:CARDINAL;..
008210:  42 45 47 49 4E 0D 0A 09 49 46 20 4C 69 6E 65 4C    BEGIN...IF LineL
008220:  65 6E 3C 4C 69 6E 65 50 6F 73 20 54 48 45 4E 20    en<LinePos THEN 
008230:  0D 0A 09 09 4C 69 6E 65 50 6F 73 3A 3D 4C 69 6E    ....LinePos:=Lin
008240:  65 4C 65 6E 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09    eLen;....END;...
008250:  54 68 69 73 78 3A 3D 30 3B 0D 0A 09 69 3A 3D 30    Thisx:=0;...i:=0
008260:  3B 09 0D 0A 09 4C 4F 4F 50 0D 0A 09 09 49 4E 43    ;....LOOP....INC
008270:  28 69 29 3B 0D 0A 09 09 63 68 3A 3D 47 65 74 43    (i);....ch:=GetC
008280:  75 72 72 65 6E 74 43 68 61 72 28 43 75 72 46 69    urrentChar(CurFi
008290:  6C 65 50 74 72 5E 29 3B 0D 0A 09 09 49 46 20 28    lePtr^);....IF (
0082A0:  69 3E 43 41 52 44 49 4E 41 4C 28 4C 69 6E 65 50    i>CARDINAL(LineP
0082B0:  6F 73 29 29 20 4F 52 20 28 63 68 3D 45 4F 46 29    os)) OR (ch=EOF)
0082C0:  20 54 48 45 4E 20 45 58 49 54 20 45 4E 44 3B 0D     THEN EXIT END;.
0082D0:  0A 09 09 49 46 20 63 68 3D 54 41 42 20 54 48 45    ...IF ch=TAB THE
0082E0:  4E 20 54 68 69 73 78 3A 3D 49 41 4E 44 28 54 68    N Thisx:=IAND(Th
0082F0:  69 73 78 2B 38 2C 30 66 66 66 38 68 29 20 0D 0A    isx+8,0fff8h) ..
008300:  09 09 45 4C 53 45 20 20 49 4E 43 28 54 68 69 73    ..ELSE  INC(This
008310:  78 29 20 45 4E 44 3B 0D 0A 09 09 62 3A 3D 46 6F    x) END;....b:=Fo
008320:  72 77 61 72 64 4F 6E 65 43 68 61 72 28 43 75 72    rwardOneChar(Cur
008330:  46 69 6C 65 50 74 72 5E 29 20 0D 0A 09 09 45 4E    FilePtr^) ....EN
008340:  44 3B 0D 0A 09 69 3A 3D 54 68 69 73 78 3B 0D 0A    D;...i:=Thisx;..
008350:  09 57 48 49 4C 45 20 54 68 69 73 78 3E 3D 28 53    .WHILE Thisx>=(S
008360:  63 72 65 65 6E 57 69 64 74 68 2B 43 75 72 72 65    creenWidth+Curre
008370:  6E 74 4C 65 66 74 4D 61 72 67 69 6E 29 20 44 4F    ntLeftMargin) DO
008380:  0D 0A 09 09 43 68 61 6E 67 65 4D 61 72 67 69 6E    ....ChangeMargin
008390:  28 33 32 29 3B 0D 0A 09 09 54 68 69 73 78 3A 3D    (32);....Thisx:=
0083A0:  69 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 57 48 49    i;....END;...WHI
0083B0:  4C 45 20 54 68 69 73 78 3C 43 75 72 72 65 6E 74    LE Thisx<Current
0083C0:  4C 65 66 74 4D 61 72 67 69 6E 20 44 4F 0D 0A 09    LeftMargin DO...
0083D0:  09 43 68 61 6E 67 65 4D 61 72 67 69 6E 28 2D 33    .ChangeMargin(-3
0083E0:  32 29 3B 0D 0A 09 09 54 68 69 73 78 3A 3D 69 3B    2);....Thisx:=i;
0083F0:  0D 0A 09 09 45 4E 44 3B 0D 0A 09 54 68 69 73 78    ....END;...Thisx
008400:  2C 0D 0A 09 09 09 4D 6F 76 65 44 6F 77 6E 2C 4D    ,.....MoveDown,M
008410:  6F 76 65 4C 65 66 74 2C 4D 6F 76 65 52 69 67 68    oveLeft,MoveRigh
008420:  74 2C 47 6F 74 6F 78 79 2C 43 6C 65 61 72 53 63    t,Gotoxy,ClearSc
008430:  72 65 65 6E 2C 0D 0A 09 09 09 53 63 72 65 65 6E    reen,.....Screen
008440:  43 6F 6E 74 72 6F 6C 2C 53 63 72 6F 6C 6C 57 69    Control,ScrollWi
008450:  6E 64 6F 77 55 70 2C 53 63 72 6F 6C 6C 57 69 6E    ndowUp,ScrollWin
008460:  64 6F 77 44 6F 77 6E 2C 0D 0A 09 09 09 53 63 72    dowDown,.....Scr
008470:  65 65 6E 57 69 64 74 68 2C 53 63 72 65 65 6E 44    eenWidth,ScreenD
008480:  65 70 74 68 3B 0D 0A 46 52 4F 4D 20 49 6E 74 4C    epth;..FROM IntL
008490:  6F 67 69 63 20 49 4D 50 4F 52 54 20 49 41 4E 44    ogic IMPORT IAND
0084A0:  3B 09 0D 0A 46 52 4F 4D 09 53 59 53 54 45 4D 20    ;...FROM.SYSTEM 
0084B0:  49 4D 50 4F 52 54 20 41 44 52 3B 0D 0A 43 4F 4E    IMPORT ADR;..CON
0084C0:  53 54 09 43 52 3D 30 64 78 3B 0D 0A 09 54 41 42    ST.CR=0dx;...TAB
0084D0:  3D 30 39 78 3B 0D 0A 09 4C 46 3D 30 61 78 3B 0D    =09x;...LF=0ax;.
0084E0:  0A 09 45 4F 46 3D 31 61 78 3B 0D 0A 28 2A 09 41    ..EOF=1ax;..(*.A
0084F0:  20 72 65 6D 61 72 6B 20 6F 6E 20 74 68 65 20 75     remark on the u
008500:  73 65 20 6F 66 20 4C 69 6E 65 50 6F 73 20 61 6E    se of LinePos an
008510:  64 20 63 75 72 78 0D 0A 0D 0A 09 4C 69 6E 65 50    d curx.....LineP
008520:  6F 73 20 61 6C 77 61 79 73 20 70 6F 69 6E 74 73    os always points
008530:  20 74 6F 20 74 68 65 20 6E 75 6D 62 65 72 20 6F     to the number o
008540:  66 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20    f the character 
008550:  77 69 74 68 69 6E 20 74 68 65 0D 0A 09 74 65 78    within the...tex
008560:  74 20 6C 69 6E 65 2E 20 49 74 20 6E 65 65 64 20    t line. It need 
008570:  6E 6F 74 20 62 65 20 74 68 65 20 73 61 6D 65 20    not be the same 
008580:  61 73 20 74 68 65 20 70 6F 73 69 74 69 6F 6E 20    as the position 
008590:  6F 6E 20 74 68 65 0D 0A 09 73 63 72 65 65 6E 20    on the...screen 
0085A0:  62 65 63 61 75 73 65 20 6F 66 20 74 68 65 20 75    because of the u
0085B0:  73 65 20 6F 66 20 74 61 62 20 63 68 61 72 61 63    se of tab charac
0085C0:  74 65 72 73 2A 29 0D 0A 54 59 50 45 09 50 45 64    ters*)..TYPE.PEd
0085D0:  69 74 46 69 6C 65 3D 50 4F 49 4E 54 45 52 20 54    itFile=POINTER T
0085E0:  4F 20 45 64 69 74 46 69 6C 65 3B 0D 0A 56 41 52    O EditFile;..VAR
0085F0:  09 69 3A 49 4E 54 45 47 45 52 3B 0D 0A 09 63 3A    .i:INTEGER;...c:
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 C9 02 00 00 00 02    ......R.........
008620:  07 00 C5 02 00 00 00 02 07 00 C1 02 00 00 00 02    ................
008630:  07 00 C6 02 00 00 00 02 07 00 C2 02 00 00 00 02    ................
008640:  07 00 C7 02 00 00 00 02 07 00 C3 02 00 00 00 02    ................
008650:  07 00 C8 02 00 00 00 02 07 00 C4 02 00 00 00 02    ................
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:  20 73 74 72 69 6E 67 20 6F 66 20 6D 61 72 6B 73     string of marks
008710:  2C 20 74 61 62 73 20 20 6F 72 20 73 70 6F 61 63    , tabs  or spoac
008720:  65 73 0D 0A 0D 0A 09 54 68 65 20 63 75 72 73 6F    es.....The curso
008730:  72 20 69 73 20 72 65 70 6F 73 69 74 69 6F 6E 65    r is repositione
008740:  64 2A 29 0D 0A 56 41 52 09 63 68 3A 43 48 41 52    d*)..VAR.ch:CHAR
008750:  3B 0D 0A 09 62 31 3A 42 4F 4F 4C 45 41 4E 3B 0D    ;...b1:BOOLEAN;.
008760:  0A 42 45 47 49 4E 0D 0A 09 46 69 6C 65 4C 69 6D    .BEGIN...FileLim
008770:  69 74 3A 3D 46 41 4C 53 45 3B 0D 0A 09 49 46 20    it:=FALSE;...IF 
008780:  42 61 63 6B 77 61 72 64 20 54 48 45 4E 20 0D 0A    Backward THEN ..
008790:  09 09 4C 65 66 74 3B 0D 0A 09 09 49 46 20 4E 4F    ..Left;....IF NO
0087A0:  54 20 4D 6F 76 65 64 4F 4B 20 54 48 45 4E 20 52    T MovedOK THEN R
0087B0:  45 54 55 52 4E 20 45 4E 44 3B 0D 0A 09 09 45 4E    ETURN END;....EN
0087C0:  44 3B 0D 0A 09 63 68 3A 3D 47 65 74 43 75 72 72    D;...ch:=GetCurr
0087D0:  65 6E 74 43 68 61 72 28 43 75 72 46 69 6C 65 50    entChar(CurFileP
0087E0:  74 72 5E 29 3B 0D 0A 09 62 31 3A 3D 41 6C 70 68    tr^);...b1:=Alph
0087F0:  61 4E 75 6D 28 63 68 29 3B 0D 0A 09 49 46 20 63    aNum(ch);...IF c
008800:  68 3D 45 4F 46 20 54 48 45 4E 20 52 45 54 55 52    h=EOF THEN RETUR
008810:  4E 20 45 4E 44 3B 0D 0A 09 52 45 50 45 41 54 0D    N END;...REPEAT.
008820:  0A 09 09 49 46 20 44 65 6C 65 74 65 20 54 48 45    ...IF Delete THE
008830:  4E 20 44 65 6C 4F 6E 65 43 68 61 72 20 45 4E 44    N DelOneChar END
008840:  3B 0D 0A 09 09 49 46 20 42 61 63 6B 77 61 72 64    ;....IF Backward
008850:  20 20 20 54 48 45 4E 20 4C 65 66 74 3B 0D 0A 09       THEN Left;...
008860:  09 45 4C 53 49 46 20 4E 4F 54 20 44 65 6C 65 74    .ELSIF NOT Delet
008870:  65 20 54 48 45 4E 20 52 69 67 68 74 20 45 4E 44    e THEN Right END
008880:  3B 0D 0A 09 09 63 68 3A 3D 47 65 74 43 75 72 72    ;....ch:=GetCurr
008890:  65 6E 74 43 68 61 72 28 43 75 72 46 69 6C 65 50    entChar(CurFileP
0088A0:  74 72 5E 29 3B 0D 0A 09 09 55 4E 54 49 4C 20 20    tr^);....UNTIL  
0088B0:  28 62 31 3C 3E 41 6C 70 68 61 4E 75 6D 28 63 68    (b1<>AlphaNum(ch
0088C0:  29 29 20 4F 52 20 46 69 6C 65 4C 69 6D 69 74 20    )) OR FileLimit 
0088D0:  4F 52 20 28 63 68 3D 45 4F 46 29 3B 0D 0A 09 49    OR (ch=EOF);...I
0088E0:  46 20 42 61 63 6B 77 61 72 64 20 41 4E 44 20 4E    F Backward AND N
0088F0:  4F 54 20 46 69 6C 65 4C 69 6D 69 74 20 54 48 45    OT FileLimit THE
008900:  6E 65 50 6F 73 28 69 29 3B 0D 0A 09 49 46 20 6C    nePos(i);...IF l
008910:  69 6E 65 73 6D 6F 76 65 64 3D 69 20 54 48 45 4E    inesmoved=i THEN
008920:  0D 0A 09 09 4D 6F 76 65 64 4F 4B 3A 3D 54 52 55    ....MovedOK:=TRU
008930:  45 3B 0D 0A 09 09 53 63 72 6F 6C 6C 57 69 6E 64    E;....ScrollWind
008940:  6F 77 44 6F 77 6E 28 53 74 61 72 74 6F 66 57 69    owDown(StartofWi
008950:  6E 64 6F 77 2C 45 6E 64 6F 66 57 69 6E 64 6F 77    ndow,EndofWindow
008960:  29 3B 0D 0A 09 09 47 6F 74 6F 78 79 28 30 2C 45    );....Gotoxy(0,E
008970:  6E 64 6F 66 57 69 6E 64 6F 77 29 3B 0D 0A 09 09    ndofWindow);....
008980:  57 72 69 74 65 4C 69 6E 65 3B 0D 0A 09 09 52 65    WriteLine;....Re
008990:  73 65 74 50 6F 73 3B 0D 0A 09 45 4C 53 45 0D 0A    setPos;...ELSE..
0089A0:  09 09 4D 6F 76 65 64 4F 4B 3A 3D 46 41 4C 53 45    ..MovedOK:=FALSE
0089B0:  3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 53 65 74 50    ;....END;...SetP
0089C0:  6F 73 69 74 69 6F 6E 28 43 75 72 46 69 6C 65 50    osition(CurFileP
0089D0:  74 72 5E 2C 70 29 3B 0D 0A 09 52 65 73 65 74 50    tr^,p);...ResetP
0089E0:  6F 73 3B 0D 0A 09 4C 69 6E 65 4C 65 6E 3A 3D 53    os;...LineLen:=S
0089F0:  61 76 65 4C 69 6E 65 4C 65 6E 3B 0D 0A 09 4C 69    aveLineLen;...Li
008A00:  6E 65 50 6F 73 3A 3D 53 61 76 65 4C 69 6E 65 50    nePos:=SaveLineP
008A10:  6F 73 3B 0D 0A 09 45 4E 44 20 53 63 72 6F 6C 6C    os;...END Scroll
008A20:  54 65 78 74 44 6F 77 6E 3B 0D 0A 50 52 4F 43 45    TextDown;..PROCE
008A30:  44 55 52 45 20 53 63 72 6F 6C 6C 44 6F 77 6E 3B    DURE ScrollDown;
008A40:  0D 0A 42 45 47 49 4E 0D 0A 09 53 63 72 6F 6C 6C    ..BEGIN...Scroll
008A50:  54 65 78 74 44 6F 77 6E 3B 0D 0A 09 49 46 20 4D    TextDown;...IF M
008A60:  6F 76 65 64 4F 4B 20 54 48 45 4E 0D 0A 09 09 49    ovedOK THEN....I
008A70:  46 20 54 68 69 73 79 3E 53 74 61 72 74 6F 66 57    F Thisy>StartofW
008A80:  69 6E 64 6F 77 20 54 48 45 4E 20 0D 0A 09 09 09    indow THEN .....
008A90:  44 45 43 28 54 68 69 73 79 29 3B 0D 0A 09 09 09    DEC(Thisy);.....
008AA0:  52 65 73 65 74 50 6F 73 3B 0D 0A 09 09 45 4C 53    ResetPos;....ELS
008AB0:  45 0D 0A 09 09 09 4C 69 6E 65 4D 6F 76 65 28 31    E.....LineMove(1
008AC0:  29 3B 0D 0A 09 09 09 52 65 73 65 74 50 6F 73 3B    );.....ResetPos;
008AD0:  0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44    .....END;....END
008AE0:  3B 0D 0A 09 45 4E 44 20 53 63 72 6F 6C 6C 44 6F    ;...END ScrollDo
008AF0:  77 6E 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 4C    wn;..PROCEDURE L
008B00:  43 75 72 72 65 6E 74 4C 65 66 74 4D 61 72 67 69    CurrentLeftMargi
008B10:  6E 29 20 54 48 45 4E 20 45 58 49 54 20 45 4E 44    n) THEN EXIT END
008B20:  3B 0D 0A 09 09 49 46 20 63 68 3D 54 41 42 20 54    ;....IF ch=TAB T
008B30:  48 45 4E 20 0D 0A 09 09 09 52 45 50 45 41 54 0D    HEN .....REPEAT.
008B40:  0A 09 09 09 09 49 46 20 63 3E 43 75 72 72 65 6E    .....IF c>Curren
008B50:  74 4C 65 66 74 4D 61 72 67 69 6E 20 54 48 45 4E    tLeftMargin THEN
008B60:  20 57 72 69 74 65 28 27 20 27 29 20 45 4E 44 3B     Write(' ') END;
008B70:  20 0D 0A 09 09 09 09 49 4E 43 28 63 29 3B 0D 0A     ......INC(c);..
008B80:  09 09 09 09 55 4E 54 49 4C 20 49 41 4E 44 28 63    ....UNTIL IAND(c
008B90:  2C 37 29 3D 31 3B 0D 0A 09 09 45 4C 53 45 0D 0A    ,7)=1;....ELSE..
008BA0:  09 09 09 49 46 20 63 3E 43 75 72 72 65 6E 74 4C    ...IF c>CurrentL
008BB0:  65 66 74 4D 61 72 67 69 6E 20 54 48 45 4E 20 57    eftMargin THEN W
008BC0:  72 69 74 65 28 63 68 29 20 45 4E 44 3B 0D 0A 09    rite(ch) END;...
008BD0:  09 09 49 4E 43 28 63 29 3B 0D 0A 09 09 09 45 4E    ..INC(c);.....EN
008BE0:  44 3B 0D 0A 09 09 45 4E 44 28 2A 4C 4F 4F 50 2A    D;....END(*LOOP*
008BF0:  29 3B 0D 0A 09 45 4E 44 20 57 72 69 74 65 50 61    );...END WritePa
008C00:  72 74 4C 69 6E 65 3B 0D 0A 50 52 4F 43 45 44 55    rtLine;..PROCEDU
008C10:  52 45 20 57 72 69 74 65 4C 69 6E 65 3B 0D 0A 42    RE WriteLine;..B
008C20:  45 47 49 4E 0D 0A 09 57 72 69 74 65 50 61 72 74    EGIN...WritePart
008C30:  4C 69 6E 65 28 31 29 3B 0D 0A 09 45 4E 44 20 57    Line(1);...END W
008C40:  72 69 74 65 4C 69 6E 65 3B 0D 0A 50 52 4F 43 45    riteLine;..PROCE
008C50:  44 55 52 45 20 52 65 6D 6F 76 65 4C 69 6E 65 3B    DURE RemoveLine;
008C60:  0D 0A 0D 0A 28 2A 09 52 65 6D 6F 76 65 20 61 20    ....(*.Remove a 
008C70:  6C 69 6E 65 20 66 72 6F 6D 20 74 68 65 20 73 63    line from the sc
008C80:  72 65 65 6E 20 61 6E 64 20 62 72 69 6E 67 20 61    reen and bring a
008C90:  6E 6F 74 68 65 72 20 6C 69 6E 65 20 75 70 20 61    nother line up a
008CA0:  74 20 74 68 65 20 62 6F 74 74 6F 6D 0D 0A 0D 0A    t the bottom....
008CB0:  09 54 68 69 73 79 20 67 69 76 65 73 20 6C 69 6E    .Thisy gives lin
008CC0:  65 20 74 6F 20 72 65 6D 6F 76 65 2A 29 0D 0A 56    e to remove*)..V
008CD0:  41 52 09 70 3A 50 6F 73 69 74 69 6F 6E 3B 0D 0A    AR.p:Position;..
008CE0:  42 45 47 49 4E 0D 0A 09 47 6F 74 6F 78 79 28 30    BEGIN...Gotoxy(0
008CF0:  2C 54 68 69 73 79 29 3B 0D 0A 09 53 63 72 6F 6C    ,Thisy);...Scrol
008D00:  65 66 74 3B 0D 0A 56 41 52 09 63 68 3A 43 48 41    eft;..VAR.ch:CHA
008D10:  52 3B 0D 0A 09 53 61 76 65 4C 69 6E 65 4C 65 6E    R;...SaveLineLen
008D20:  3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 70 3A 50    :CARDINAL;...p:P
008D30:  6F 73 69 74 69 6F 6E 3B 0D 0A 42 45 47 49 4E 0D    osition;..BEGIN.
008D40:  0A 09 4D 6F 76 65 64 4F 4B 3A 3D 54 52 55 45 3B    ..MovedOK:=TRUE;
008D50:  0D 0A 09 52 65 44 72 61 77 6E 3A 3D 46 41 4C 53    ...ReDrawn:=FALS
008D60:  45 3B 0D 0A 09 53 61 76 65 4C 69 6E 65 4C 65 6E    E;...SaveLineLen
008D70:  3A 3D 4C 69 6E 65 4C 65 6E 3B 0D 0A 09 47 65 74    :=LineLen;...Get
008D80:  50 6F 73 69 74 69 6F 6E 28 43 75 72 46 69 6C 65    Position(CurFile
008D90:  50 74 72 5E 2C 70 29 3B 0D 0A 09 49 46 20 4C 69    Ptr^,p);...IF Li
008DA0:  6E 65 50 6F 73 3E 30 20 54 48 45 4E 0D 0A 09 09    nePos>0 THEN....
008DB0:  62 3A 3D 42 61 63 6B 4F 6E 65 43 68 61 72 28 43    b:=BackOneChar(C
008DC0:  75 72 46 69 6C 65 50 74 72 5E 29 3B 0D 0A 09 09    urFilePtr^);....
008DD0:  63 68 3A 3D 47 65 74 43 75 72 72 65 6E 74 43 68    ch:=GetCurrentCh
008DE0:  61 72 28 43 75 72 46 69 6C 65 50 74 72 5E 29 3B    ar(CurFilePtr^);
008DF0:  0D 0A 09 09 49 46 20 28 43 75 72 72 65 6E 74 4C    ....IF (CurrentL
008E00:  65 66 74 4D 61 72 67 69 6E 3E 30 29 20 41 4E 44    eftMargin>0) AND
008E10:  20 28 54 68 69 73 78 3D 30 29 20 54 48 45 4E 0D     (Thisx=0) THEN.
008E20:  0A 09 09 09 43 68 61 6E 67 65 4D 61 72 67 69 6E    ....ChangeMargin
008E30:  28 2D 33 32 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D    (-32);.....END;.
008E40:  0A 09 09 44 45 43 28 4C 69 6E 65 50 6F 73 29 3B    ...DEC(LinePos);
008E50:  0D 0A 09 09 49 46 20 4E 4F 54 20 52 65 44 72 61    ....IF NOT ReDra
008E60:  77 6E 20 54 48 45 4E 0D 0A 09 09 09 49 46 20 63    wn THEN.....IF c
008E70:  68 3C 3E 54 41 42 20 54 48 45 4E 0D 0A 09 09 09    h<>TAB THEN.....
008E80:  09 44 45 43 28 54 68 69 73 78 29 3B 0D 0A 09 09    .DEC(Thisx);....
008E90:  09 09 52 65 73 65 74 50 6F 73 3B 0D 0A 09 09 09    ..ResetPos;.....
008EA0:  45 4C 53 45 0D 0A 09 09 09 09 4C 69 6E 65 4D 6F    ELSE......LineMo
008EB0:  76 65 28 30 29 3B 0D 0A 09 09 09 09 45 4E 44 3B    ve(0);......END;
008EC0:  0D 0A 09 09 09 45 4E 44 3B 0D 0A 0D 0A 09 45 4C    .....END;.....EL
008ED0:  53 45 0D 0A 09 09 54 68 69 73 78 3A 3D 31 30 32    SE....Thisx:=102
008EE0:  33 3B 0D 0A 09 09 4C 69 6E 65 50 6F 73 3A 3D 31    3;....LinePos:=1
008EF0:  30 32 33 3B 0D 0A 09 09 55 70 3B 0D 0A 09 09 49    023;....Up;....I
008F00:  6C 57 69 6E 64 6F 77 44 6F 77 6E 28 54 68 69 73    lWindowDown(This
008F10:  79 2C 45 6E 64 6F 66 57 69 6E 64 6F 77 29 3B 0D    y,EndofWindow);.
008F20:  0A 09 69 3A 3D 45 6E 64 6F 66 57 69 6E 64 6F 77    ..i:=EndofWindow
008F30:  2D 54 68 69 73 79 2B 31 3B 0D 0A 09 47 65 74 50    -Thisy+1;...GetP
008F40:  6F 73 69 74 69 6F 6E 28 43 75 72 46 69 6C 65 50    osition(CurFileP
008F50:  74 72 5E 2C 70 29 3B 0D 0A 09 53 65 74 4C 69 6E    tr^,p);...SetLin
008F60:  65 50 6F 73 28 69 29 3B 0D 0A 09 49 46 20 6C 69    ePos(i);...IF li
008F70:  6E 65 73 6D 6F 76 65 64 3D 69 20 54 48 45 4E 0D    nesmoved=i THEN.
008F80:  0A 09 09 4D 6F 76 65 64 4F 4B 3A 3D 54 52 55 45    ...MovedOK:=TRUE
008F90:  3B 0D 0A 09 09 47 6F 74 6F 78 79 28 30 2C 45 6E    ;....Gotoxy(0,En
008FA0:  64 6F 66 57 69 6E 64 6F 77 29 3B 0D 0A 09 09 57    dofWindow);....W
008FB0:  72 69 74 65 4C 69 6E 65 3B 0D 0A 09 09 45 4E 44    riteLine;....END
008FC0:  3B 0D 0A 09 53 65 74 50 6F 73 69 74 69 6F 6E 28    ;...SetPosition(
008FD0:  43 75 72 46 69 6C 65 50 74 72 5E 2C 70 29 3B 0D    CurFilePtr^,p);.
008FE0:  0A 09 45 4E 44 20 52 65 6D 6F 76 65 4C 69 6E 65    ..END RemoveLine
008FF0:  3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 44 65 6C    ;..PROCEDURE Del
009000:  46 75 6C 6C 4C 69 6E 65 3B 0D 0A 42 45 47 49 4E    FullLine;..BEGIN
009010:  0D 0A 09 4D 61 72 6B 41 73 55 70 64 61 74 65 64    ...MarkAsUpdated
009020:  3B 0D 0A 09 52 65 6D 6F 76 65 4C 69 6E 65 3B 0D    ;...RemoveLine;.
009030:  0A 09 53 65 74 4C 69 6E 65 50 6F 73 28 30 29 3B    ..SetLinePos(0);
009040:  0D 0A 09 44 65 6C 43 68 61 72 73 28 43 75 72 46    ...DelChars(CurF
009050:  69 6C 65 50 74 72 5E 2C 4C 69 6E 65 4C 65 6E 2B    ilePtr^,LineLen+
009060:  32 29 3B 0D 0A 09 4C 69 6E 65 50 6F 73 3A 3D 30    2);...LinePos:=0
009070:  3B 0D 0A 09 49 46 20 43 75 72 72 65 6E 74 4C 65    ;...IF CurrentLe
009080:  66 74 4D 61 72 67 69 6E 3E 30 20 54 48 45 4E 20    ftMargin>0 THEN 
009090:  0D 0A 09 09 43 68 61 6E 67 65 4D 61 72 67 69 6E    ....ChangeMargin
0090A0:  28 2D 49 4E 54 45 47 45 52 28 43 75 72 72 65 6E    (-INTEGER(Curren
0090B0:  74 4C 65 66 74 4D 61 72 67 69 6E 29 29 0D 0A 09    tLeftMargin))...
0090C0:  09 45 4E 44 3B 0D 0A 09 54 68 69 73 78 3A 3D 30    .END;...Thisx:=0
0090D0:  3B 0D 0A 09 52 65 73 65 74 50 6F 73 3B 0D 0A 09    ;...ResetPos;...
0090E0:  4C 69 6E 65 50 6F 73 3A 3D 30 3B 0D 0A 09 53 65    LinePos:=0;...Se
0090F0:  74 4C 69 6E 65 50 6F 73 28 30 29 3B 0D 0A 09 45    tLinePos(0);...E
009100:  46 20 4E 4F 54 20 4D 6F 76 65 64 4F 4B 20 54 48    F NOT MovedOK TH
009110:  45 4E 0D 0A 09 09 09 4C 69 6E 65 50 6F 73 3A 3D    EN.....LinePos:=
009120:  30 3B 0D 0A 09 09 09 4C 69 6E 65 4C 65 6E 3A 3D    0;.....LineLen:=
009130:  53 61 76 65 4C 69 6E 65 4C 65 6E 3B 0D 0A 09 09    SaveLineLen;....
009140:  09 53 65 74 50 6F 73 69 74 69 6F 6E 28 43 75 72    .SetPosition(Cur
009150:  46 69 6C 65 50 74 72 5E 2C 70 29 3B 0D 0A 09 09    FilePtr^,p);....
009160:  09 54 68 69 73 78 3A 3D 30 3B 0D 0A 09 09 09 52    .Thisx:=0;.....R
009170:  65 73 65 74 50 6F 73 3B 0D 0A 09 09 09 45 4E 44    esetPos;.....END
009180:  3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20    ;....END;...END 
009190:  4C 65 66 74 3B 0D 0A 50 52 4F 43 45 44 55 52 45    Left;..PROCEDURE
0091A0:  20 52 69 67 68 74 3B 0D 0A 56 41 52 09 63 68 3A     Right;..VAR.ch:
0091B0:  43 48 41 52 3B 0D 0A 09 69 3A 43 41 52 44 49 4E    CHAR;...i:CARDIN
0091C0:  41 4C 3B 0D 0A 42 45 47 49 4E 0D 0A 09 63 68 3A    AL;..BEGIN...ch:
0091D0:  3D 47 65 74 43 75 72 72 65 6E 74 43 68 61 72 28    =GetCurrentChar(
0091E0:  43 75 72 46 69 6C 65 50 74 72 5E 29 3B 0D 0A 09    CurFilePtr^);...
0091F0:  49 46 20 63 68 3D 31 61 78 20 28 2A 6F 6E 20 45    IF ch=1ax (*on E
009200:  4F 46 20 63 68 61 72 2A 29 20 54 48 45 4E 20 52    OF char*) THEN R
009210:  45 54 55 52 4E 20 45 4E 44 3B 0D 0A 09 49 46 20    ETURN END;...IF 
009220:  4C 69 6E 65 50 6F 73 3E 3D 4C 69 6E 65 4C 65 6E    LinePos>=LineLen
009230:  20 54 48 45 4E 0D 0A 09 09 54 68 69 73 78 3A 3D     THEN....Thisx:=
009240:  30 3B 0D 0A 09 09 4C 69 6E 65 50 6F 73 3A 3D 30    0;....LinePos:=0
009250:  3B 0D 0A 09 09 44 6F 77 6E 3B 0D 0A 0D 0A 09 45    ;....Down;.....E
009260:  4C 53 45 0D 0A 0D 0A 09 09 49 46 20 63 68 3D 54    LSE......IF ch=T
009270:  41 42 20 54 48 45 4E 20 69 3A 3D 39 20 45 4C 53    AB THEN i:=9 ELS
009280:  45 20 69 3A 3D 31 20 45 4E 44 3B 0D 0A 09 09 49    E i:=1 END;....I
009290:  46 20 28 54 68 69 73 78 2B 69 29 3E 3D 28 53 63    F (Thisx+i)>=(Sc
0092A0:  72 65 65 6E 57 69 64 74 68 2D 31 29 20 54 48 45    reenWidth-1) THE
0092B0:  4E 0D 0A 09 09 09 43 68 61 6E 67 65 4D 61 72 67    N.....ChangeMarg
0092C0:  69 6E 28 33 32 29 3B 0D 0A 09 09 09 45 4E 44 3B    in(32);.....END;
0092D0:  0D 0A 09 09 62 3A 3D 46 6F 72 77 61 72 64 4F 6E    ....b:=ForwardOn
0092E0:  65 43 68 61 72 28 43 75 72 46 69 6C 65 50 74 72    eChar(CurFilePtr
0092F0:  5E 29 3B 0D 0A 09 09 49 4E 43 28 4C 69 6E 65 50    ^);....INC(LineP
009300:  4E 44 20 44 65 6C 46 75 6C 6C 4C 69 6E 65 3B 0D    ND DelFullLine;.
009310:  0A 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 53    .....PROCEDURE S
009320:  63 72 6F 6C 6C 54 65 78 74 55 70 3B 0D 0A 0D 0A    crollTextUp;....
009330:  28 2A 09 53 63 72 6F 6C 6C 20 75 70 20 6F 6E 65    (*.Scroll up one
009340:  20 6C 69 6E 65 20 69 6E 20 74 68 65 20 66 69 6C     line in the fil
009350:  65 0D 0A 09 28 77 68 69 63 68 20 6D 65 61 6E 73    e...(which means
009360:  20 74 68 65 20 74 65 78 74 20 73 63 72 6F 6C 6C     the text scroll
009370:  73 20 64 6F 77 6E 20 2D 20 62 61 63 6B 77 61 72    s down - backwar
009380:  64 73 20 74 6F 0D 0A 09 77 68 61 74 20 79 6F 75    ds to...what you
009390:  20 6D 69 67 68 74 20 74 68 69 6E 6B 20 61 74 20     might think at 
0093A0:  66 69 72 73 74 29 2A 29 0D 0A 0D 0A 56 41 52 09    first)*)....VAR.
0093B0:  70 3A 50 6F 73 69 74 69 6F 6E 3B 09 0D 0A 09 53    p:Position;....S
0093C0:  61 76 65 4C 69 6E 65 4C 65 6E 2C 53 61 76 65 4C    aveLineLen,SaveL
0093D0:  69 6E 65 50 6F 73 3A 43 41 52 44 49 4E 41 4C 3B    inePos:CARDINAL;
0093E0:  0D 0A 42 45 47 49 4E 0D 0A 09 53 61 76 65 4C 69    ..BEGIN...SaveLi
0093F0:  6E 65 4C 65 6E 3A 3D 4C 69 6E 65 4C 65 6E 3B 0D    neLen:=LineLen;.
009400:  0A 09 53 61 76 65 4C 69 6E 65 50 6F 73 3A 3D 4C    ..SaveLinePos:=L
009410:  69 6E 65 50 6F 73 3B 0D 0A 09 69 3A 3D 53 74 61    inePos;...i:=Sta
009420:  72 74 6F 66 57 69 6E 64 6F 77 2D 54 68 69 73 79    rtofWindow-Thisy
009430:  2D 31 3B 0D 0A 09 47 65 74 50 6F 73 69 74 69 6F    -1;...GetPositio
009440:  6E 28 43 75 72 46 69 6C 65 50 74 72 5E 2C 70 29    n(CurFilePtr^,p)
009450:  3B 0D 0A 09 53 65 74 4C 69 6E 65 50 6F 73 28 69    ;...SetLinePos(i
009460:  29 3B 0D 0A 09 49 46 20 6C 69 6E 65 73 6D 6F 76    );...IF linesmov
009470:  65 64 3D 69 20 54 48 45 4E 0D 0A 09 09 4D 6F 76    ed=i THEN....Mov
009480:  65 64 4F 4B 3A 3D 54 52 55 45 3B 0D 0A 09 09 53    edOK:=TRUE;....S
009490:  63 72 6F 6C 6C 57 69 6E 64 6F 77 55 70 28 53 74    crollWindowUp(St
0094A0:  61 72 74 6F 66 57 69 6E 64 6F 77 2C 45 6E 64 6F    artofWindow,Endo
0094B0:  66 57 69 6E 64 6F 77 29 3B 0D 0A 09 09 47 6F 74    fWindow);....Got
0094C0:  6F 78 79 28 30 2C 53 74 61 72 74 6F 66 57 69 6E    oxy(0,StartofWin
0094D0:  64 6F 77 29 3B 0D 0A 09 09 57 72 69 74 65 4C 69    dow);....WriteLi
0094E0:  6E 65 3B 0D 0A 09 45 4C 53 45 0D 0A 09 09 4D 6F    ne;...ELSE....Mo
0094F0:  76 65 64 4F 4B 3A 3D 46 41 4C 53 45 3B 0D 0A 09    vedOK:=FALSE;...
009500:  6F 73 29 3B 0D 0A 09 09 49 46 20 63 68 3C 3E 54    os);....IF ch<>T
009510:  41 42 20 54 48 45 4E 0D 0A 09 09 09 49 4E 43 28    AB THEN.....INC(
009520:  54 68 69 73 78 29 3B 0D 0A 09 09 09 52 65 73 65    Thisx);.....Rese
009530:  74 50 6F 73 3B 0D 0A 09 09 45 4C 53 45 0D 0A 0D    tPos;....ELSE...
009540:  0A 09 09 09 28 2A 69 66 20 6D 6F 76 65 73 20 6F    ....(*if moves o
009550:  76 65 72 20 74 61 62 73 20 61 72 65 20 73 6C 6F    ver tabs are slo
009560:  77 2C 20 72 65 70 6C 61 63 65 20 74 68 65 0D 0A    w, replace the..
009570:  09 09 09 20 20 72 65 70 65 61 74 65 64 20 6D 6F    ...  repeated mo
009580:  76 65 73 20 72 69 67 68 74 20 62 79 20 61 20 67    ves right by a g
009590:  6F 74 6F 78 79 2A 29 0D 0A 09 09 09 54 68 69 73    otoxy*).....This
0095A0:  78 3A 3D 49 41 4E 44 28 54 68 69 73 78 2B 38 2C    x:=IAND(Thisx+8,
0095B0:  30 66 66 66 38 68 29 3B 0D 0A 09 09 09 52 65 73    0fff8h);.....Res
0095C0:  65 74 50 6F 73 3B 0D 0A 09 09 09 45 4E 44 3B 0D    etPos;.....END;.
0095D0:  0A 09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 52 69    ...END;...END Ri
0095E0:  67 68 74 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52    ght;....PROCEDUR
0095F0:  45 20 41 6C 70 68 61 4E 75 6D 28 63 68 3A 43 48    E AlphaNum(ch:CH
009600:  41 52 29 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 42 45    AR):BOOLEAN;..BE
009610:  47 49 4E 0D 0A 09 63 68 3A 3D 43 41 50 28 63 68    GIN...ch:=CAP(ch
009620:  29 3B 0D 0A 09 52 45 54 55 52 4E 20 28 28 63 68    );...RETURN ((ch
009630:  3E 3D 27 41 27 29 20 41 4E 44 20 28 63 68 3C 3D    >='A') AND (ch<=
009640:  27 5A 27 29 29 20 4F 52 20 28 28 63 68 3E 3D 27    'Z')) OR ((ch>='
009650:  30 27 29 20 41 4E 44 20 28 63 68 3C 3D 27 39 27    0') AND (ch<='9'
009660:  29 29 3B 0D 0A 09 45 4E 44 20 41 6C 70 68 61 4E    ));...END AlphaN
009670:  75 6D 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45    um;....PROCEDURE
009680:  20 46 69 6E 64 57 6F 72 64 28 42 61 63 6B 77 61     FindWord(Backwa
009690:  72 64 3A 42 4F 4F 4C 45 41 4E 3B 44 65 6C 65 74    rd:BOOLEAN;Delet
0096A0:  65 3A 42 4F 4F 4C 45 41 4E 29 3B 0D 0A 0D 0A 28    e:BOOLEAN);....(
0096B0:  2A 09 46 69 6E 64 20 61 20 77 6F 72 64 20 61 6E    *.Find a word an
0096C0:  64 20 6F 70 74 69 6F 6E 61 6C 6C 79 20 64 65 6C    d optionally del
0096D0:  65 74 65 20 69 74 0D 0A 0D 0A 09 41 20 77 6F 72    ete it.....A wor
0096E0:  64 20 69 73 20 61 20 73 74 72 69 6E 67 20 61 6C    d is a string al
0096F0:  70 68 61 6E 75 6D 65 72 69 63 73 20 6F 72 20 61    phanumerics or a
009700:  09 45 4E 44 3B 0D 0A 09 53 65 74 50 6F 73 69 74    .END;...SetPosit
009710:  69 6F 6E 28 43 75 72 46 69 6C 65 50 74 72 5E 2C    ion(CurFilePtr^,
009720:  70 29 3B 0D 0A 09 52 65 73 65 74 50 6F 73 3B 0D    p);...ResetPos;.
009730:  0A 09 4C 69 6E 65 4C 65 6E 3A 3D 53 61 76 65 4C    ..LineLen:=SaveL
009740:  69 6E 65 4C 65 6E 3B 0D 0A 09 4C 69 6E 65 50 6F    ineLen;...LinePo
009750:  73 3A 3D 53 61 76 65 4C 69 6E 65 50 6F 73 3B 0D    s:=SaveLinePos;.
009760:  0A 09 45 4E 44 20 53 63 72 6F 6C 6C 54 65 78 74    ..END ScrollText
009770:  55 70 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 53    Up;..PROCEDURE S
009780:  63 72 6F 6C 6C 55 70 3B 0D 0A 42 45 47 49 4E 0D    crollUp;..BEGIN.
009790:  0A 09 53 63 72 6F 6C 6C 54 65 78 74 55 70 3B 0D    ..ScrollTextUp;.
0097A0:  0A 09 49 46 20 4D 6F 76 65 64 4F 4B 20 54 48 45    ..IF MovedOK THE
0097B0:  4E 0D 0A 09 09 49 46 20 54 68 69 73 79 3C 45 6E    N....IF Thisy<En
0097C0:  64 6F 66 57 69 6E 64 6F 77 20 54 48 45 4E 20 0D    dofWindow THEN .
0097D0:  0A 09 09 09 49 4E 43 28 54 68 69 73 79 29 3B 0D    ....INC(Thisy);.
0097E0:  0A 09 09 09 52 65 73 65 74 50 6F 73 3B 0D 0A 09    ....ResetPos;...
0097F0:  09 45 4C 53 45 20 09 0D 0A 09 09 09 4C 69 6E 65    .ELSE ......Line
009800:  4D 6F 76 65 28 2D 31 29 3B 0D 0A 09 09 09 52 65    Move(-1);.....Re
009810:  73 65 74 50 6F 73 3B 0D 0A 09 09 09 45 4E 44 3B    setPos;.....END;
009820:  0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 53    ....END;...END S
009830:  63 72 6F 6C 6C 55 70 3B 0D 0A 50 52 4F 43 45 44    crollUp;..PROCED
009840:  55 52 45 20 53 63 72 6F 6C 6C 54 65 78 74 44 6F    URE ScrollTextDo
009850:  77 6E 3B 0D 0A 56 41 52 09 70 3A 50 6F 73 69 74    wn;..VAR.p:Posit
009860:  69 6F 6E 3B 09 0D 0A 09 53 61 76 65 4C 69 6E 65    ion;....SaveLine
009870:  4C 65 6E 2C 53 61 76 65 4C 69 6E 65 50 6F 73 3A    Len,SaveLinePos:
009880:  43 41 52 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 4E    CARDINAL;..BEGIN
009890:  0D 0A 09 53 61 76 65 4C 69 6E 65 4C 65 6E 3A 3D    ...SaveLineLen:=
0098A0:  4C 69 6E 65 4C 65 6E 3B 0D 0A 09 53 61 76 65 4C    LineLen;...SaveL
0098B0:  69 6E 65 50 6F 73 3A 3D 4C 69 6E 65 50 6F 73 3B    inePos:=LinePos;
0098C0:  0D 0A 09 69 3A 3D 45 6E 64 6F 66 57 69 6E 64 6F    ...i:=EndofWindo
0098D0:  77 2D 54 68 69 73 79 2B 31 3B 0D 0A 09 47 65 74    w-Thisy+1;...Get
0098E0:  50 6F 73 69 74 69 6F 6E 28 43 75 72 46 69 6C 65    Position(CurFile
0098F0:  50 74 72 5E 2C 70 29 3B 0D 0A 09 53 65 74 4C 69    Ptr^,p);...SetLi
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 C9 02 00 00 00 02    ......R.........
009920:  08 00 C5 02 00 00 00 02 08 00 C1 02 00 00 00 02    ................
009930:  08 00 C6 02 00 00 00 02 08 00 C2 02 00 00 00 02    ................
009940:  08 00 C7 02 00 00 00 02 08 00 C3 02 00 00 00 02    ................
009950:  08 00 C8 02 00 00 00 02 08 00 C4 02 00 00 00 02    ................
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:  45 4C 53 45 0D 0A 09 09 45 6E 64 6F 66 57 69 6E    ELSE....EndofWin
009A10:  64 6F 77 3A 3D 53 63 72 65 65 6E 44 65 70 74 68    dow:=ScreenDepth
009A20:  2D 32 0D 0A 09 09 45 4E 44 3B 0D 0A 0D 0A 09 45    -2....END;.....E
009A30:  4E 44 20 43 68 61 6E 67 65 57 69 6E 64 6F 77 3B    ND ChangeWindow;
009A40:  0D 0A 50 52 4F 43 45 44 55 52 45 20 52 65 73 65    ..PROCEDURE Rese
009A50:  74 53 63 72 65 65 6E 50 6F 73 3B 0D 0A 42 45 47    tScreenPos;..BEG
009A60:  49 4E 0D 0A 09 49 46 20 43 75 72 72 65 6E 74 57    IN...IF CurrentW
009A70:  69 6E 64 6F 77 3C 3E 30 20 54 48 45 4E 0D 0A 09    indow<>0 THEN...
009A80:  09 54 68 69 73 78 3A 3D 63 75 72 78 5B 43 75 72    .Thisx:=curx[Cur
009A90:  72 65 6E 74 57 69 6E 64 6F 77 5D 3B 0D 0A 09 09    rentWindow];....
009AA0:  54 68 69 73 79 3A 3D 63 75 72 79 5B 43 75 72 72    Thisy:=cury[Curr
009AB0:  65 6E 74 57 69 6E 64 6F 77 5D 3B 0D 0A 09 09 52    entWindow];....R
009AC0:  65 73 65 74 50 6F 73 3B 0D 0A 09 09 45 4E 44 3B    esetPos;....END;
009AD0:  0D 0A 09 45 4E 44 20 52 65 73 65 74 53 63 72 65    ...END ResetScre
009AE0:  65 6E 50 6F 73 3B 0D 0A 50 52 4F 43 45 44 55 52    enPos;..PROCEDUR
009AF0:  45 20 4D 6F 76 65 57 69 6E 64 6F 77 28 66 72 6F    E MoveWindow(fro
009B00:  6D 2C 74 6F 3A 43 41 52 44 49 4E 41 4C 29 3B 0D    m,to:CARDINAL);.
009B10:  0A 56 41 52 09 62 3A 42 4F 4F 4C 45 41 4E 3B 0D    .VAR.b:BOOLEAN;.
009B20:  0A 42 45 47 49 4E 0D 0A 09 63 75 72 78 5B 74 6F    .BEGIN...curx[to
009B30:  5D 3A 3D 63 75 72 78 5B 66 72 6F 6D 5D 3B 0D 0A    ]:=curx[from];..
009B40:  09 63 75 72 79 5B 74 6F 5D 3A 3D 63 75 72 79 5B    .cury[to]:=cury[
009B50:  66 72 6F 6D 5D 3B 0D 0A 09 4C 65 66 74 4D 61 72    from];...LeftMar
009B60:  67 69 6E 5B 74 6F 5D 3A 3D 4C 65 66 74 4D 61 72    gin[to]:=LeftMar
009B70:  67 69 6E 5B 66 72 6F 6D 5D 3B 0D 0A 09 57 69 6E    gin[from];...Win
009B80:  64 6F 77 46 69 6C 65 5B 74 6F 5D 3A 3D 57 69 6E    dowFile[to]:=Win
009B90:  64 6F 77 46 69 6C 65 5B 66 72 6F 6D 5D 3B 0D 0A    dowFile[from];..
009BA0:  09 62 3A 3D 4C 61 62 65 6C 4F 70 28 46 69 6C 65    .b:=LabelOp(File
009BB0:  73 5B 57 69 6E 64 6F 77 46 69 6C 65 5B 74 6F 5D    s[WindowFile[to]
009BC0:  5D 2C 54 52 55 45 2C 43 48 52 28 74 6F 29 29 3B    ],TRUE,CHR(to));
009BD0:  0D 0A 09 45 4E 44 20 4D 6F 76 65 57 69 6E 64 6F    ...END MoveWindo
009BE0:  77 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 45 6C    w;..PROCEDURE El
009BF0:  69 64 65 57 69 6E 64 6F 77 28 57 69 6E 64 6F 77    ideWindow(Window
009C00:  4E 44 20 28 63 68 3C 3E 54 41 42 29 20 54 48 45    ND (ch<>TAB) THE
009C10:  4E 0D 0A 09 09 09 44 65 6C 43 68 61 72 73 28 43    N.....DelChars(C
009C20:  75 72 46 69 6C 65 50 74 72 5E 2C 31 29 3B 0D 0A    urFilePtr^,1);..
009C30:  09 09 09 43 48 31 5B 30 5D 3A 3D 63 68 3B 0D 0A    ...CH1[0]:=ch;..
009C40:  09 09 09 49 6E 73 43 68 61 72 73 28 43 75 72 46    ...InsChars(CurF
009C50:  69 6C 65 50 74 72 5E 2C 43 48 31 2C 31 29 3B 0D    ilePtr^,CH1,1);.
009C60:  0A 09 09 09 62 3A 3D 42 61 63 6B 4F 6E 65 43 68    ....b:=BackOneCh
009C70:  61 72 28 43 75 72 46 69 6C 65 50 74 72 5E 29 3B    ar(CurFilePtr^);
009C80:  0D 0A 09 09 09 57 72 69 74 65 28 63 68 29 3B 0D    .....Write(ch);.
009C90:  0A 09 09 09 52 65 73 65 74 50 6F 73 3B 0D 0A 09    ....ResetPos;...
009CA0:  09 09 52 69 67 68 74 3B 0D 0A 09 09 09 55 70 64    ..Right;.....Upd
009CB0:  61 74 65 64 5B 43 75 72 72 65 6E 74 46 69 6C 65    ated[CurrentFile
009CC0:  5D 3A 3D 54 52 55 45 3B 0D 0A 09 09 45 4C 53 45    ]:=TRUE;....ELSE
009CD0:  0D 0A 09 09 09 44 65 6C 4F 6E 65 43 68 61 72 3B    .....DelOneChar;
009CE0:  0D 0A 09 09 09 49 6E 73 4F 6E 65 43 68 61 72 28    .....InsOneChar(
009CF0:  63 68 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09    ch);.....END;...
009D00:  45 4C 53 45 0D 0A 09 09 49 6E 73 4F 6E 65 43 68    ELSE....InsOneCh
009D10:  61 72 28 63 68 29 3B 0D 0A 09 09 45 4E 44 3B 0D    ar(ch);....END;.
009D20:  0A 09 45 4E 44 20 4F 76 65 72 57 72 69 74 65 3B    ..END OverWrite;
009D30:  0D 0A 50 52 4F 43 45 44 55 52 45 20 55 70 3B 0D    ..PROCEDURE Up;.
009D40:  0A 09 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20 54    ....BEGIN...IF T
009D50:  68 69 73 79 3C 3D 53 74 61 72 74 6F 66 57 69 6E    hisy<=StartofWin
009D60:  64 6F 77 20 54 48 45 4E 0D 0A 09 09 53 63 72 6F    dow THEN....Scro
009D70:  6C 6C 54 65 78 74 55 70 3B 0D 0A 09 09 45 4E 44    llTextUp;....END
009D80:  3B 0D 0A 09 4C 69 6E 65 4D 6F 76 65 28 2D 31 29    ;...LineMove(-1)
009D90:  3B 0D 0A 09 46 69 6C 65 4C 69 6D 69 74 3A 3D 6C    ;...FileLimit:=l
009DA0:  69 6E 65 73 6D 6F 76 65 64 3D 30 3B 0D 0A 09 49    inesmoved=0;...I
009DB0:  46 20 28 6C 69 6E 65 73 6D 6F 76 65 64 3C 3E 30    F (linesmoved<>0
009DC0:  29 20 41 4E 44 20 28 54 68 69 73 79 3E 53 74 61    ) AND (Thisy>Sta
009DD0:  72 74 6F 66 57 69 6E 64 6F 77 29 20 41 4E 44 20    rtofWindow) AND 
009DE0:  4E 4F 54 20 52 65 44 72 61 77 6E 20 54 48 45 4E    NOT ReDrawn THEN
009DF0:  20 0D 0A 09 09 44 45 43 28 54 68 69 73 79 29 3B     ....DEC(Thisy);
009E00:  4E 20 52 69 67 68 74 20 45 4E 44 3B 0D 0A 09 45    N Right END;...E
009E10:  4E 44 20 46 69 6E 64 57 6F 72 64 3B 0D 0A 50 52    ND FindWord;..PR
009E20:  4F 43 45 44 55 52 45 20 44 6F 77 6E 3B 0D 0A 42    OCEDURE Down;..B
009E30:  45 47 49 4E 0D 0A 09 4C 69 6E 65 4D 6F 76 65 28    EGIN...LineMove(
009E40:  31 29 3B 0D 0A 09 46 69 6C 65 4C 69 6D 69 74 3A    1);...FileLimit:
009E50:  3D 6C 69 6E 65 73 6D 6F 76 65 64 3D 30 3B 0D 0A    =linesmoved=0;..
009E60:  09 49 46 20 6C 69 6E 65 73 6D 6F 76 65 64 3E 30    .IF linesmoved>0
009E70:  20 54 48 45 4E 0D 0A 09 09 49 46 20 28 54 68 69     THEN....IF (Thi
009E80:  73 79 3E 3D 45 6E 64 6F 66 57 69 6E 64 6F 77 29    sy>=EndofWindow)
009E90:  20 54 48 45 4E 0D 0A 09 09 09 49 4E 43 28 54 68     THEN.....INC(Th
009EA0:  69 73 79 29 3B 0D 0A 09 09 09 53 63 72 6F 6C 6C    isy);.....Scroll
009EB0:  54 65 78 74 44 6F 77 6E 3B 0D 0A 09 09 09 44 45    TextDown;.....DE
009EC0:  43 28 54 68 69 73 79 29 3B 0D 0A 09 09 09 52 65    C(Thisy);.....Re
009ED0:  73 65 74 50 6F 73 3B 0D 0A 09 09 45 4C 53 49 46    setPos;....ELSIF
009EE0:  20 20 4E 4F 54 20 52 65 44 72 61 77 6E 20 54 48      NOT ReDrawn TH
009EF0:  45 4E 20 0D 0A 09 09 09 49 4E 43 28 54 68 69 73    EN .....INC(This
009F00:  79 29 3B 0D 0A 09 09 09 52 65 73 65 74 50 6F 73    y);.....ResetPos
009F10:  3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E    ;.....END;....EN
009F20:  44 3B 20 0D 0A 09 45 4E 44 20 44 6F 77 6E 3B 0D    D; ...END Down;.
009F30:  0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 52 65 64    ...PROCEDURE Red
009F40:  6F 4C 69 6E 65 3B 0D 0A 42 45 47 49 4E 0D 0A 09    oLine;..BEGIN...
009F50:  47 6F 74 6F 78 79 28 30 2C 54 68 69 73 79 29 3B    Gotoxy(0,Thisy);
009F60:  0D 0A 09 53 65 74 4C 69 6E 65 50 6F 73 28 30 29    ...SetLinePos(0)
009F70:  3B 0D 0A 09 57 72 69 74 65 4C 69 6E 65 3B 0D 0A    ;...WriteLine;..
009F80:  09 43 68 61 6E 67 65 50 6F 73 3B 0D 0A 09 45 4E    .ChangePos;...EN
009F90:  44 20 52 65 64 6F 4C 69 6E 65 3B 0D 0A 0D 0A 50    D RedoLine;....P
009FA0:  52 4F 43 45 44 55 52 45 20 49 6E 73 4F 6E 65 43    ROCEDURE InsOneC
009FB0:  68 61 72 28 63 68 3A 43 48 41 52 29 3B 0D 0A 56    har(ch:CHAR);..V
009FC0:  41 52 09 43 48 31 3A 41 52 52 41 59 5B 30 2E 2E    AR.CH1:ARRAY[0..
009FD0:  30 5D 20 4F 46 20 43 48 41 52 3B 0D 0A 42 45 47    0] OF CHAR;..BEG
009FE0:  49 4E 0D 0A 09 52 65 44 72 61 77 6E 3A 3D 46 41    IN...ReDrawn:=FA
009FF0:  4C 53 45 3B 0D 0A 09 4D 61 72 6B 41 73 55 70 64    LSE;...MarkAsUpd
00A000:  0D 0A 09 09 52 65 73 65 74 50 6F 73 3B 0D 0A 09    ....ResetPos;...
00A010:  09 45 4E 44 3B 0D 0A 09 45 4E 44 20 55 70 3B 0D    .END;...END Up;.
00A020:  0A 50 52 4F 43 45 44 55 52 45 20 55 70 53 63 72    .PROCEDURE UpScr
00A030:  65 65 6E 3B 0D 0A 42 45 47 49 4E 0D 0A 09 4C 69    een;..BEGIN...Li
00A040:  6E 65 4D 6F 76 65 28 31 2D 49 4E 54 45 47 45 52    neMove(1-INTEGER
00A050:  28 4C 69 6E 65 73 50 65 72 57 69 6E 64 6F 77 29    (LinesPerWindow)
00A060:  29 3B 0D 0A 09 45 4E 44 20 55 70 53 63 72 65 65    );...END UpScree
00A070:  6E 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 44 6F    n;..PROCEDURE Do
00A080:  77 6E 53 63 72 65 65 6E 3B 0D 0A 42 45 47 49 4E    wnScreen;..BEGIN
00A090:  0D 0A 09 4C 69 6E 65 4D 6F 76 65 28 4C 69 6E 65    ...LineMove(Line
00A0A0:  73 50 65 72 57 69 6E 64 6F 77 2D 31 29 3B 0D 0A    sPerWindow-1);..
00A0B0:  09 45 4E 44 20 44 6F 77 6E 53 63 72 65 65 6E 3B    .END DownScreen;
00A0C0:  0D 0A 50 52 4F 43 45 44 55 52 45 20 54 6F 70 3B    ..PROCEDURE Top;
00A0D0:  0D 0A 42 45 47 49 4E 0D 0A 09 4C 69 6E 65 50 6F    ..BEGIN...LinePo
00A0E0:  73 3A 3D 30 3B 0D 0A 09 4C 69 6E 65 4D 6F 76 65    s:=0;...LineMove
00A0F0:  28 2D 31 36 37 33 36 29 3B 0D 0A 09 45 4E 44 20    (-16736);...END 
00A100:  54 6F 70 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20    Top;..PROCEDURE 
00A110:  42 6F 74 74 6F 6D 3B 0D 0A 42 45 47 49 4E 0D 0A    Bottom;..BEGIN..
00A120:  09 4C 69 6E 65 50 6F 73 3A 3D 39 39 39 3B 0D 0A    .LinePos:=999;..
00A130:  09 4C 69 6E 65 4D 6F 76 65 28 31 36 37 33 36 29    .LineMove(16736)
00A140:  3B 0D 0A 09 45 4E 44 20 42 6F 74 74 6F 6D 3B 0D    ;...END Bottom;.
00A150:  0A 50 52 4F 43 45 44 55 52 45 20 46 61 72 4C 65    .PROCEDURE FarLe
00A160:  66 74 3B 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20    ft;..BEGIN...IF 
00A170:  43 75 72 72 65 6E 74 4C 65 66 74 4D 61 72 67 69    CurrentLeftMargi
00A180:  6E 3E 30 20 54 48 45 4E 20 0D 0A 09 09 43 68 61    n>0 THEN ....Cha
00A190:  6E 67 65 4D 61 72 67 69 6E 28 2D 49 4E 54 45 47    ngeMargin(-INTEG
00A1A0:  45 52 28 43 75 72 72 65 6E 74 4C 65 66 74 4D 61    ER(CurrentLeftMa
00A1B0:  72 67 69 6E 29 29 0D 0A 09 09 45 4E 44 3B 0D 0A    rgin))....END;..
00A1C0:  09 53 65 74 4C 69 6E 65 50 6F 73 28 30 29 3B 0D    .SetLinePos(0);.
00A1D0:  0A 09 4C 69 6E 65 50 6F 73 3A 3D 30 3B 0D 0A 09    ..LinePos:=0;...
00A1E0:  43 68 61 6E 67 65 50 6F 73 3B 0D 0A 09 45 4E 44    ChangePos;...END
00A1F0:  20 46 61 72 4C 65 66 74 3B 0D 0A 50 52 4F 43 45     FarLeft;..PROCE
00A200:  61 74 65 64 3B 0D 0A 09 43 48 31 5B 30 5D 3A 3D    ated;...CH1[0]:=
00A210:  63 68 3B 0D 0A 09 49 6E 73 43 68 61 72 73 28 43    ch;...InsChars(C
00A220:  75 72 46 69 6C 65 50 74 72 5E 2C 43 48 31 2C 31    urFilePtr^,CH1,1
00A230:  29 3B 0D 0A 09 49 4E 43 28 4C 69 6E 65 50 6F 73    );...INC(LinePos
00A240:  29 3B 0D 0A 09 49 4E 43 28 4C 69 6E 65 4C 65 6E    );...INC(LineLen
00A250:  29 3B 0D 0A 09 49 46 20 63 68 3D 43 52 20 54 48    );...IF ch=CR TH
00A260:  45 4E 0D 0A 09 09 43 48 31 5B 30 5D 3A 3D 4C 46    EN....CH1[0]:=LF
00A270:  3B 0D 0A 09 09 49 6E 73 43 68 61 72 73 28 43 75    ;....InsChars(Cu
00A280:  72 46 69 6C 65 50 74 72 5E 2C 43 48 31 2C 31 29    rFilePtr^,CH1,1)
00A290:  3B 0D 0A 09 09 52 65 73 65 74 50 6F 73 3B 0D 0A    ;....ResetPos;..
00A2A0:  09 09 44 6F 53 63 72 65 65 6E 43 68 61 6E 67 65    ..DoScreenChange
00A2B0:  28 44 65 6C 45 6F 6C 29 3B 0D 0A 09 09 49 46 20    (DelEol);....IF 
00A2C0:  54 68 69 73 79 3E 3D 45 6E 64 6F 66 57 69 6E 64    Thisy>=EndofWind
00A2D0:  6F 77 20 54 48 45 4E 0D 0A 09 28 2A 09 09 53 63    ow THEN...(*..Sc
00A2E0:  72 6F 6C 6C 54 65 78 74 44 6F 77 6E 3B 2A 29 0D    rollTextDown;*).
00A2F0:  0A 09 09 09 53 63 72 6F 6C 6C 57 69 6E 64 6F 77    ....ScrollWindow
00A300:  44 6F 77 6E 28 53 74 61 72 74 6F 66 57 69 6E 64    Down(StartofWind
00A310:  6F 77 2C 45 6E 64 6F 66 57 69 6E 64 6F 77 29 3B    ow,EndofWindow);
00A320:  0D 0A 09 09 09 44 45 43 28 54 68 69 73 79 29 3B    .....DEC(Thisy);
00A330:  0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 47 6F 74    .....END;....Got
00A340:  6F 78 79 28 30 2C 45 6E 64 6F 66 57 69 6E 64 6F    oxy(0,EndofWindo
00A350:  77 29 3B 0D 0A 09 09 53 63 72 6F 6C 6C 57 69 6E    w);....ScrollWin
00A360:  64 6F 77 55 70 28 54 68 69 73 79 2B 31 2C 45 6E    dowUp(Thisy+1,En
00A370:  64 6F 66 57 69 6E 64 6F 77 29 3B 0D 0A 09 09 52    dofWindow);....R
00A380:  65 73 65 74 50 6F 73 3B 0D 0A 09 09 49 4E 43 28    esetPos;....INC(
00A390:  54 68 69 73 79 29 3B 0D 0A 09 09 52 65 73 65 74    Thisy);....Reset
00A3A0:  50 6F 73 3B 0D 0A 09 09 4C 69 6E 65 50 6F 73 3A    Pos;....LinePos:
00A3B0:  3D 30 3B 0D 0A 09 09 52 65 64 6F 4C 69 6E 65 3B    =0;....RedoLine;
00A3C0:  0D 0A 09 45 4C 53 49 46 20 63 68 3D 54 41 42 20    ...ELSIF ch=TAB 
00A3D0:  54 48 45 4E 20 52 65 64 6F 4C 69 6E 65 09 0D 0A    THEN RedoLine...
00A3E0:  09 45 4C 53 45 0D 0A 09 09 49 46 20 54 68 69 73    .ELSE....IF This
00A3F0:  78 3E 3D 28 53 63 72 65 65 6E 57 69 64 74 68 2D    x>=(ScreenWidth-
00A400:  44 55 52 45 20 46 61 72 52 69 67 68 74 3B 0D 0A    DURE FarRight;..
00A410:  42 45 47 49 4E 0D 0A 09 53 65 74 4C 69 6E 65 50    BEGIN...SetLineP
00A420:  6F 73 28 30 29 3B 0D 0A 09 4C 69 6E 65 50 6F 73    os(0);...LinePos
00A430:  3A 3D 4C 69 6E 65 4C 65 6E 3B 0D 0A 09 43 68 61    :=LineLen;...Cha
00A440:  6E 67 65 50 6F 73 3B 0D 0A 09 45 4E 44 20 46 61    ngePos;...END Fa
00A450:  72 52 69 67 68 74 3B 0D 0A 50 52 4F 43 45 44 55    rRight;..PROCEDU
00A460:  52 45 20 43 68 61 6E 67 65 57 69 6E 64 6F 77 28    RE ChangeWindow(
00A470:  4E 6F 3A 49 4E 54 45 47 45 52 29 3B 0D 0A 56 41    No:INTEGER);..VA
00A480:  52 09 62 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 42 45    R.b:BOOLEAN;..BE
00A490:  47 49 4E 0D 0A 09 49 46 20 43 75 72 72 65 6E 74    GIN...IF Current
00A4A0:  57 69 6E 64 6F 77 3C 3E 30 20 54 48 45 4E 0D 0A    Window<>0 THEN..
00A4B0:  09 09 63 75 72 78 5B 43 75 72 72 65 6E 74 57 69    ..curx[CurrentWi
00A4C0:  6E 64 6F 77 5D 3A 3D 54 68 69 73 78 3B 0D 0A 09    ndow]:=Thisx;...
00A4D0:  09 63 75 72 79 5B 43 75 72 72 65 6E 74 57 69 6E    .cury[CurrentWin
00A4E0:  64 6F 77 5D 3A 3D 54 68 69 73 79 3B 0D 0A 09 09    dow]:=Thisy;....
00A4F0:  62 3A 3D 4C 61 62 65 6C 4F 70 28 43 75 72 46 69    b:=LabelOp(CurFi
00A500:  6C 65 50 74 72 5E 2C 54 52 55 45 2C 43 48 52 28    lePtr^,TRUE,CHR(
00A510:  43 75 72 72 65 6E 74 57 69 6E 64 6F 77 29 29 3B    CurrentWindow));
00A520:  0D 0A 09 09 45 4E 44 3B 0D 0A 09 43 75 72 72 65    ....END;...Curre
00A530:  6E 74 57 69 6E 64 6F 77 3A 3D 4E 6F 3B 0D 0A 09    ntWindow:=No;...
00A540:  0D 0A 09 49 46 20 43 75 72 72 65 6E 74 57 69 6E    ...IF CurrentWin
00A550:  64 6F 77 3E 57 69 6E 64 6F 77 73 20 54 48 45 4E    dow>Windows THEN
00A560:  20 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 3A 3D     CurrentWindow:=
00A570:  57 69 6E 64 6F 77 73 20 45 4E 44 3B 0D 0A 09 49    Windows END;...I
00A580:  46 20 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 3C    F CurrentWindow<
00A590:  3E 30 20 54 48 45 4E 0D 0A 09 09 28 2A 73 65 74    >0 THEN....(*set
00A5A0:  20 75 70 20 61 20 70 6F 69 6E 74 65 72 20 74 6F     up a pointer to
00A5B0:  20 74 68 65 20 63 75 72 72 65 6E 74 20 66 69 6C     the current fil
00A5C0:  65 20 74 6F 20 73 61 76 65 20 69 6E 64 65 78 20    e to save index 
00A5D0:  63 61 6C 63 75 6C 61 74 69 6F 6E 0D 0A 09 09 20    calculation.... 
00A5E0:  20 65 76 65 72 79 20 74 69 6D 65 20 74 68 65 20     every time the 
00A5F0:  66 69 6C 65 20 69 73 20 72 65 66 65 72 65 6E 63    file is referenc
00A600:  31 29 20 54 48 45 4E 0D 0A 09 09 09 43 68 61 6E    1) THEN.....Chan
00A610:  67 65 4D 61 72 67 69 6E 28 33 32 29 3B 0D 0A 09    geMargin(32);...
00A620:  09 09 45 4E 44 3B 0D 0A 09 09 49 46 20 4E 4F 54    ..END;....IF NOT
00A630:  20 52 65 44 72 61 77 6E 20 54 48 45 4E 0D 0A 09     ReDrawn THEN...
00A640:  09 09 49 46 20 4C 69 6E 65 50 6F 73 3C 4C 69 6E    ..IF LinePos<Lin
00A650:  65 4C 65 6E 20 54 48 45 4E 0D 0A 09 09 09 09 62    eLen THEN......b
00A660:  3A 3D 42 61 63 6B 4F 6E 65 43 68 61 72 28 43 75    :=BackOneChar(Cu
00A670:  72 46 69 6C 65 50 74 72 5E 29 3B 0D 0A 09 09 09    rFilePtr^);.....
00A680:  09 57 72 69 74 65 50 61 72 74 4C 69 6E 65 28 43    .WritePartLine(C
00A690:  75 72 72 65 6E 74 4C 65 66 74 4D 61 72 67 69 6E    urrentLeftMargin
00A6A0:  2B 54 68 69 73 78 2B 31 29 3B 0D 0A 09 09 09 09    +Thisx+1);......
00A6B0:  49 4E 43 28 54 68 69 73 78 29 3B 0D 0A 09 09 09    INC(Thisx);.....
00A6C0:  09 62 3A 3D 46 6F 72 77 61 72 64 4F 6E 65 43 68    .b:=ForwardOneCh
00A6D0:  61 72 28 43 75 72 46 69 6C 65 50 74 72 5E 29 3B    ar(CurFilePtr^);
00A6E0:  09 09 09 09 0D 0A 09 09 09 45 4C 53 45 0D 0A 09    .........ELSE...
00A6F0:  09 09 09 57 72 69 74 65 28 63 68 29 3B 0D 0A 09    ...Write(ch);...
00A700:  09 09 09 49 4E 43 28 54 68 69 73 78 29 3B 0D 0A    ...INC(Thisx);..
00A710:  09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 45 4E 44    ....END;.....END
00A720:  3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 52 65 73 65    ;....END;...Rese
00A730:  74 50 6F 73 3B 0D 0A 09 45 4E 44 20 49 6E 73 4F    tPos;...END InsO
00A740:  6E 65 43 68 61 72 3B 0D 0A 50 52 4F 43 45 44 55    neChar;..PROCEDU
00A750:  52 45 20 44 65 6C 4F 6E 65 43 68 61 72 3B 0D 0A    RE DelOneChar;..
00A760:  42 45 47 49 4E 0D 0A 09 4D 61 72 6B 41 73 55 70    BEGIN...MarkAsUp
00A770:  64 61 74 65 64 3B 0D 0A 09 63 68 3A 3D 47 65 74    dated;...ch:=Get
00A780:  43 75 72 72 65 6E 74 43 68 61 72 28 43 75 72 46    CurrentChar(CurF
00A790:  69 6C 65 50 74 72 5E 29 3B 0D 0A 09 49 46 20 4C    ilePtr^);...IF L
00A7A0:  69 6E 65 50 6F 73 3D 4C 69 6E 65 4C 65 6E 20 54    inePos=LineLen T
00A7B0:  48 45 4E 20 69 3A 3D 32 0D 0A 09 45 4C 53 45 20    HEN i:=2...ELSE 
00A7C0:  69 3A 3D 31 20 45 4E 44 3B 0D 0A 09 44 65 6C 43    i:=1 END;...DelC
00A7D0:  68 61 72 73 28 43 75 72 46 69 6C 65 50 74 72 5E    hars(CurFilePtr^
00A7E0:  2C 69 29 3B 0D 0A 09 49 46 20 69 3D 32 20 54 48    ,i);...IF i=2 TH
00A7F0:  45 4E 0D 0A 09 09 49 46 20 54 68 69 73 79 3C 45    EN....IF Thisy<E
00A800:  65 64 2A 29 0D 0A 09 09 43 75 72 72 65 6E 74 46    ed*)....CurrentF
00A810:  69 6C 65 3A 3D 57 69 6E 64 6F 77 46 69 6C 65 5B    ile:=WindowFile[
00A820:  43 75 72 72 65 6E 74 57 69 6E 64 6F 77 5D 3B 0D    CurrentWindow];.
00A830:  0A 09 09 43 75 72 46 69 6C 65 50 74 72 3A 3D 50    ...CurFilePtr:=P
00A840:  45 64 69 74 46 69 6C 65 28 41 44 52 28 46 69 6C    EditFile(ADR(Fil
00A850:  65 73 5B 43 75 72 72 65 6E 74 46 69 6C 65 5D 29    es[CurrentFile])
00A860:  29 3B 0D 0A 09 09 62 3A 3D 4C 61 62 65 6C 4F 70    );....b:=LabelOp
00A870:  28 43 75 72 46 69 6C 65 50 74 72 5E 2C 46 41 4C    (CurFilePtr^,FAL
00A880:  53 45 2C 43 48 52 28 43 75 72 72 65 6E 74 57 69    SE,CHR(CurrentWi
00A890:  6E 64 6F 77 29 29 3B 0D 0A 09 09 54 68 69 73 78    ndow));....Thisx
00A8A0:  3A 3D 63 75 72 78 5B 43 75 72 72 65 6E 74 57 69    :=curx[CurrentWi
00A8B0:  6E 64 6F 77 5D 3B 0D 0A 09 09 54 68 69 73 79 3A    ndow];....Thisy:
00A8C0:  3D 63 75 72 79 5B 43 75 72 72 65 6E 74 57 69 6E    =cury[CurrentWin
00A8D0:  64 6F 77 5D 3B 0D 0A 09 09 43 75 72 72 65 6E 74    dow];....Current
00A8E0:  4C 65 66 74 4D 61 72 67 69 6E 3A 3D 4C 65 66 74    LeftMargin:=Left
00A8F0:  4D 61 72 67 69 6E 5B 43 75 72 72 65 6E 74 57 69    Margin[CurrentWi
00A900:  6E 64 6F 77 5D 3B 0D 0A 09 09 53 65 74 4C 69 6E    ndow];....SetLin
00A910:  65 50 6F 73 28 30 29 3B 0D 0A 09 09 43 68 61 6E    ePos(0);....Chan
00A920:  67 65 50 6F 73 3B 0D 0A 09 09 69 3A 3D 28 53 63    gePos;....i:=(Sc
00A930:  72 65 65 6E 44 65 70 74 68 2D 57 69 6E 64 6F 77    reenDepth-Window
00A940:  73 29 20 44 49 56 20 57 69 6E 64 6F 77 73 3B 0D    s) DIV Windows;.
00A950:  0A 09 09 53 74 61 72 74 6F 66 57 69 6E 64 6F 77    ...StartofWindow
00A960:  3A 3D 43 41 52 44 49 4E 41 4C 28 69 2B 31 29 2A    :=CARDINAL(i+1)*
00A970:  28 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 2D 31    (CurrentWindow-1
00A980:  29 3B 0D 0A 09 45 4C 53 45 20 0D 0A 09 09 53 74    );...ELSE ....St
00A990:  61 72 74 6F 66 57 69 6E 64 6F 77 3A 3D 30 3B 0D    artofWindow:=0;.
00A9A0:  0A 09 09 69 3A 3D 30 20 0D 0A 09 09 45 4E 44 3B    ...i:=0 ....END;
00A9B0:  0D 0A 09 49 46 20 43 75 72 72 65 6E 74 57 69 6E    ...IF CurrentWin
00A9C0:  64 6F 77 3C 57 69 6E 64 6F 77 73 20 54 48 45 4E    dow<Windows THEN
00A9D0:  0D 0A 09 09 45 6E 64 6F 66 57 69 6E 64 6F 77 3A    ....EndofWindow:
00A9E0:  3D 53 74 61 72 74 6F 66 57 69 6E 64 6F 77 2B 43    =StartofWindow+C
00A9F0:  41 52 44 49 4E 41 4C 28 69 2D 31 29 3B 0D 0A 09    ARDINAL(i-1);...
00AA00:  6E 64 6F 66 57 69 6E 64 6F 77 20 54 48 45 4E 20    ndofWindow THEN 
00AA10:  0D 0A 09 09 09 49 4E 43 28 54 68 69 73 79 29 3B    .....INC(Thisy);
00AA20:  0D 0A 09 09 09 69 3A 3D 4C 69 6E 65 50 6F 73 3B    .....i:=LinePos;
00AA30:  0D 0A 09 09 09 52 65 6D 6F 76 65 4C 69 6E 65 3B    .....RemoveLine;
00AA40:  0D 0A 09 09 09 4C 69 6E 65 50 6F 73 3A 3D 69 3B    .....LinePos:=i;
00AA50:  0D 0A 09 09 09 44 45 43 28 54 68 69 73 79 29 3B    .....DEC(Thisy);
00AA60:  0D 0A 09 09 09 52 65 64 6F 4C 69 6E 65 3B 0D 0A    .....RedoLine;..
00AA70:  09 09 09 45 4E 44 3B 0D 0A 09 45 4C 53 45 09 0D    ...END;...ELSE..
00AA80:  0A 09 09 44 45 43 28 4C 69 6E 65 4C 65 6E 29 3B    ...DEC(LineLen);
00AA90:  0D 0A 09 09 57 72 69 74 65 50 61 72 74 4C 69 6E    ....WritePartLin
00AAA0:  65 28 43 75 72 72 65 6E 74 4C 65 66 74 4D 61 72    e(CurrentLeftMar
00AAB0:  67 69 6E 2B 54 68 69 73 78 2B 31 29 3B 0D 0A 09    gin+Thisx+1);...
00AAC0:  09 45 4E 44 3B 0D 0A 28 2A 09 45 4C 53 49 46 20    .END;..(*.ELSIF 
00AAD0:  63 68 3D 54 41 42 20 54 48 45 4E 0D 0A 09 09 52    ch=TAB THEN....R
00AAE0:  65 64 6F 4C 69 6E 65 0D 0A 09 45 4C 53 45 0D 0A    edoLine...ELSE..
00AAF0:  09 09 4C 69 6E 65 4C 65 6E 3A 3D 4C 69 6E 65 4C    ..LineLen:=LineL
00AB00:  65 6E 2D 31 3B 0D 0A 09 09 44 6F 53 63 72 65 65    en-1;....DoScree
00AB10:  6E 43 68 61 6E 67 65 28 44 65 6C 43 68 61 72 29    nChange(DelChar)
00AB20:  3B 0D 0A 09 09 45 4E 44 3B 2A 29 0D 0A 09 52 65    ;....END;*)...Re
00AB30:  73 65 74 50 6F 73 3B 0D 0A 09 45 4E 44 20 44 65    setPos;...END De
00AB40:  6C 4F 6E 65 43 68 61 72 3B 0D 0A 50 52 4F 43 45    lOneChar;..PROCE
00AB50:  44 55 52 45 20 4F 76 65 72 57 72 69 74 65 28 63    DURE OverWrite(c
00AB60:  68 3A 43 48 41 52 29 3B 0D 0A 56 41 52 09 43 48    h:CHAR);..VAR.CH
00AB70:  31 3A 41 52 52 41 59 5B 30 2E 2E 30 5D 20 4F 46    1:ARRAY[0..0] OF
00AB80:  20 43 48 41 52 3B 0D 0A 42 45 47 49 4E 0D 0A 09     CHAR;..BEGIN...
00AB90:  43 48 31 5B 30 5D 3A 3D 47 65 74 43 75 72 72 65    CH1[0]:=GetCurre
00ABA0:  6E 74 43 68 61 72 28 43 75 72 46 69 6C 65 50 74    ntChar(CurFilePt
00ABB0:  72 5E 29 3B 0D 0A 09 49 46 20 28 43 48 31 5B 30    r^);...IF (CH1[0
00ABC0:  5D 3C 3E 43 52 29 20 41 4E 44 20 28 63 68 3C 3E    ]<>CR) AND (ch<>
00ABD0:  43 52 29 20 41 4E 44 20 28 43 48 31 5B 30 5D 3C    CR) AND (CH1[0]<
00ABE0:  3E 31 61 78 29 20 54 48 45 4E 0D 0A 09 09 49 46    >1ax) THEN....IF
00ABF0:  20 28 43 48 31 5B 30 5D 3C 3E 54 41 42 29 20 41     (CH1[0]<>TAB) A
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 C9 02 00 00 00 02    ......R.........
00AC20:  09 00 C5 02 00 00 00 02 09 00 C1 02 00 00 00 02    ................
00AC30:  09 00 C6 02 00 00 00 02 09 00 C2 02 00 00 00 02    ................
00AC40:  09 00 C7 02 00 00 00 02 09 00 C3 02 00 00 00 02    ................
00AC50:  09 00 C8 02 00 00 00 02 09 00 C4 02 00 00 00 02    ................
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:  6E 64 6F 77 3A 49 4E 54 45 47 45 52 3B 56 41 52    ndow:INTEGER;VAR
00AD10:  20 63 75 72 78 2C 63 75 72 79 3A 43 41 52 44 49     curx,cury:CARDI
00AD20:  4E 41 4C 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 52    NAL);..BEGIN...R
00AD30:  65 74 72 6C 69 6E 65 28 66 2C 6C 65 6E 2C 63 68    etrline(f,len,ch
00AD40:  61 72 73 69 6E 2C 70 6F 73 2C 6D 6F 76 65 64 2C    arsin,pos,moved,
00AD50:  30 29 3B 0D 0A 09 6C 69 6E 65 70 6F 73 3A 3D 30    0);...linepos:=0
00AD60:  3B 0D 0A 09 46 4F 52 20 69 63 3A 3D 30 20 54 4F    ;...FOR ic:=0 TO
00AD70:  20 63 68 61 72 73 69 6E 20 44 4F 0D 0A 09 09 52     charsin DO....R
00AD80:  65 61 64 4E 65 78 74 43 68 61 72 28 70 6F 73 2C    eadNextChar(pos,
00AD90:  63 68 29 3B 0D 0A 09 09 49 46 20 63 68 3D 30 39    ch);....IF ch=09
00ADA0:  78 20 54 48 45 4E 20 6C 69 6E 65 70 6F 73 3A 3D    x THEN linepos:=
00ADB0:  49 41 4E 44 28 6C 69 6E 65 70 6F 73 2B 38 2C 30    IAND(linepos+8,0
00ADC0:  66 66 66 38 68 29 0D 0A 09 09 45 4C 53 45 20 49    fff8h)....ELSE I
00ADD0:  4E 43 28 6C 69 6E 65 70 6F 73 29 20 45 4E 44 3B    NC(linepos) END;
00ADE0:  0D 0A 09 09 45 4E 44 3B 0D 0A 09 4C 65 66 74 4D    ....END;...LeftM
00ADF0:  61 72 67 3A 3D 30 3B 0D 0A 09 57 48 49 4C 45 20    arg:=0;...WHILE 
00AE00:  6C 69 6E 65 70 6F 73 3E 28 4C 65 66 74 4D 61 72    linepos>(LeftMar
00AE10:  67 2B 53 63 72 65 65 6E 57 69 64 74 68 29 20 44    g+ScreenWidth) D
00AE20:  4F 0D 0A 09 09 4C 65 66 74 4D 61 72 67 3A 3D 4C    O....LeftMarg:=L
00AE30:  65 66 74 4D 61 72 67 2B 33 32 3B 0D 0A 09 09 45    eftMarg+32;....E
00AE40:  4E 44 3B 0D 0A 09 4C 65 66 74 4D 61 72 67 69 6E    ND;...LeftMargin
00AE50:  5B 77 69 6E 64 6F 77 5D 3A 3D 4C 65 66 74 4D 61    [window]:=LeftMa
00AE60:  72 67 3B 0D 0A 09 45 4E 44 20 53 65 74 4C 65 66    rg;...END SetLef
00AE70:  74 4D 61 72 67 3B 0D 0A 50 52 4F 43 45 44 55 52    tMarg;..PROCEDUR
00AE80:  45 20 44 69 73 70 6C 61 79 46 69 6C 65 28 66 3A    E DisplayFile(f:
00AE90:  45 64 69 74 46 69 6C 65 3B 77 69 6E 64 6F 77 3A    EditFile;window:
00AEA0:  49 4E 54 45 47 45 52 3B 56 41 52 20 63 75 72 78    INTEGER;VAR curx
00AEB0:  2C 63 75 72 79 3A 43 41 52 44 49 4E 41 4C 29 3B    ,cury:CARDINAL);
00AEC0:  0D 0A 0D 0A 28 2A 09 72 65 64 69 73 70 6C 61 79    ....(*.redisplay
00AED0:  20 61 73 20 6D 75 63 68 20 74 65 78 74 20 61 73     as much text as
00AEE0:  20 77 69 6C 6C 20 66 69 74 20 69 6E 20 74 68 65     will fit in the
00AEF0:  20 77 69 6E 64 6F 77 0D 0A 09 66 6F 72 20 74 68     window...for th
00AF00:  0A 0D 0A 28 2A 09 72 65 64 69 73 70 6C 61 79 20    ...(*.redisplay 
00AF10:  61 73 20 6D 75 63 68 20 74 65 78 74 20 61 73 20    as much text as 
00AF20:  77 69 6C 6C 20 66 69 74 20 69 6E 20 74 68 65 20    will fit in the 
00AF30:  77 69 6E 64 6F 77 0D 0A 09 66 6F 72 20 74 68 65    window...for the
00AF40:  20 67 69 76 65 6E 20 66 69 6C 65 20 73 74 61 72     given file star
00AF50:  74 69 6E 67 20 61 74 20 74 68 65 20 63 75 72 72    ting at the curr
00AF60:  65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 69 6E 20    ent position in 
00AF70:  74 68 65 20 66 69 6C 65 0D 0A 0D 0A 09 63 75 72    the file.....cur
00AF80:  78 20 61 6E 64 20 63 75 72 79 20 72 65 74 75 72    x and cury retur
00AF90:  6E 20 74 68 65 20 73 63 72 65 65 6E 20 63 6F 2D    n the screen co-
00AFA0:  6F 72 64 69 6E 61 74 65 73 20 66 6F 72 20 74 68    ordinates for th
00AFB0:  65 0D 0A 09 63 75 72 72 65 6E 74 20 70 6F 73 69    e...current posi
00AFC0:  74 69 6F 6E 20 69 6E 20 74 68 65 20 66 69 6C 65    tion in the file
00AFD0:  2A 29 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20    *)....PROCEDURE 
00AFE0:  53 65 74 4C 65 66 74 4D 61 72 67 28 66 3A 45 64    SetLeftMarg(f:Ed
00AFF0:  69 74 46 69 6C 65 3B 77 69 6E 64 6F 77 3A 49 4E    itFile;window:IN
00B000:  54 45 47 45 52 3B 56 41 52 20 63 75 72 78 2C 63    TEGER;VAR curx,c
00B010:  75 72 79 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A    ury:CARDINAL);..
00B020:  0D 0A 28 2A 09 53 65 74 20 75 70 20 6C 65 66 74    ..(*.Set up left
00B030:  20 6D 61 72 67 69 6E 20 6F 66 20 61 20 6E 65 77     margin of a new
00B040:  6C 79 20 6F 70 65 6E 65 64 20 66 69 6C 65 20 2A    ly opened file *
00B050:  29 0D 0A 50 52 4F 43 45 44 55 52 45 20 44 69 73    )..PROCEDURE Dis
00B060:  70 6C 61 79 45 72 72 6F 72 3B 0D 0A 56 41 52 09    playError;..VAR.
00B070:  57 69 6E 64 6F 77 73 3A 43 41 52 44 49 4E 41 4C    Windows:CARDINAL
00B080:  3B 0D 0A 09 4C 69 6E 65 73 50 65 72 57 69 6E 64    ;...LinesPerWind
00B090:  6F 77 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 45 4E    ow:CARDINAL;..EN
00B0A0:  44 20 45 64 69 74 44 69 73 70 6C 61 79 2E 0D 0A    D EditDisplay...
00B0B0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00B0C0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 18    ................
00B0D0:  E9 18 EA 18 FF FF EC 18 FF FF FF FF EF 18 F0 18    ................
00B0E0:  02 19 F2 18 F3 18 F4 18 F5 18 F6 18 F7 18 F8 18    ................
00B0F0:  F9 18 FA 18 FB 18 FF FF FD 18 FE 18 FF 18 00 19    ................
00B100:  4E 6F 3A 49 4E 54 45 47 45 52 29 3B 0D 0A 42 45    No:INTEGER);..BE
00B110:  47 49 4E 0D 0A 09 46 4F 52 20 69 3A 3D 57 69 6E    GIN...FOR i:=Win
00B120:  64 6F 77 4E 6F 2B 31 20 54 4F 20 49 4E 54 45 47    dowNo+1 TO INTEG
00B130:  45 52 28 57 69 6E 64 6F 77 73 29 20 44 4F 0D 0A    ER(Windows) DO..
00B140:  09 09 4D 6F 76 65 57 69 6E 64 6F 77 28 69 2C 69    ..MoveWindow(i,i
00B150:  2D 31 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 44    -1);....END;...D
00B160:  45 43 28 57 69 6E 64 6F 77 73 29 3B 0D 0A 09 43    EC(Windows);...C
00B170:  75 72 72 65 6E 74 57 69 6E 64 6F 77 3A 3D 30 3B    urrentWindow:=0;
00B180:  0D 0A 09 45 4E 44 20 45 6C 69 64 65 57 69 6E 64    ...END ElideWind
00B190:  6F 77 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 4D    ow;..PROCEDURE M
00B1A0:  61 6B 65 57 69 6E 64 6F 77 3B 0D 0A 42 45 47 49    akeWindow;..BEGI
00B1B0:  4E 0D 0A 09 49 4E 43 28 57 69 6E 64 6F 77 73 29    N...INC(Windows)
00B1C0:  3B 0D 0A 09 4D 6F 76 65 57 69 6E 64 6F 77 28 43    ;...MoveWindow(C
00B1D0:  75 72 72 65 6E 74 57 69 6E 64 6F 77 2C 57 69 6E    urrentWindow,Win
00B1E0:  64 6F 77 73 29 3B 0D 0A 09 45 4E 44 20 4D 61 6B    dows);...END Mak
00B1F0:  65 57 69 6E 64 6F 77 3B 0D 0A 50 52 4F 43 45 44    eWindow;..PROCED
00B200:  55 52 45 20 53 65 61 72 63 68 28 52 65 70 6C 61    URE Search(Repla
00B210:  63 65 3A 41 52 52 41 59 20 4F 46 20 43 48 41 52    ce:ARRAY OF CHAR
00B220:  3B 52 4C 65 6E 3A 49 4E 54 45 47 45 52 3B 4C 65    ;RLen:INTEGER;Le
00B230:  6E 3A 43 41 52 44 49 4E 41 4C 29 3A 42 4F 4F 4C    n:CARDINAL):BOOL
00B240:  45 41 4E 3B 0D 0A 0D 0A 28 2A 09 73 65 61 72 63    EAN;....(*.searc
00B250:  68 20 66 6F 72 20 73 74 72 69 6E 67 20 61 6E 64    h for string and
00B260:  20 72 65 70 6C 61 63 65 20 69 66 20 66 6F 75 6E     replace if foun
00B270:  64 2A 29 0D 0A 56 41 52 09 62 3A 42 4F 4F 4C 45    d*)..VAR.b:BOOLE
00B280:  41 4E 3B 0D 0A 09 46 6F 75 6E 64 3A 42 4F 4F 4C    AN;...Found:BOOL
00B290:  45 41 4E 3B 0D 0A 42 45 47 49 4E 0D 0A 09 62 3A    EAN;..BEGIN...b:
00B2A0:  3D 4C 65 6E 3E 31 32 38 3B 0D 0A 09 49 46 20 62    =Len>128;...IF b
00B2B0:  20 54 48 45 4E 20 4C 65 6E 3A 3D 4C 65 6E 2D 31     THEN Len:=Len-1
00B2C0:  32 38 20 45 4E 44 3B 0D 0A 09 46 6F 75 6E 64 3A    28 END;...Found:
00B2D0:  3D 46 69 6E 64 53 74 72 69 6E 67 28 43 75 72 46    =FindString(CurF
00B2E0:  69 6C 65 50 74 72 5E 2C 62 29 3B 0D 0A 09 49 46    ilePtr^,b);...IF
00B2F0:  20 46 6F 75 6E 64 20 41 4E 44 20 28 52 4C 65 6E     Found AND (RLen
00B300:  49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D    IMPLEMENTATION M
00B310:  4F 44 55 4C 45 20 45 64 69 74 44 69 73 70 6C 61    ODULE EditDispla
00B320:  79 3B 0D 0A 28 2A 09 44 69 73 70 6C 61 79 20 70    y;..(*.Display p
00B330:  61 72 74 20 6F 66 20 61 20 66 69 6C 65 20 62 65    art of a file be
00B340:  69 6E 67 20 65 64 69 74 65 64 2A 29 0D 0A 46 52    ing edited*)..FR
00B350:  4F 4D 09 53 43 52 45 45 4E 49 4F 20 49 4D 50 4F    OM.SCREENIO IMPO
00B360:  52 54 20 47 6F 74 6F 78 79 2C 53 63 72 65 65 6E    RT Gotoxy,Screen
00B370:  43 6F 6E 74 72 6F 6C 2C 0D 0A 09 09 09 4D 61 64    Control,.....Mad
00B380:  65 43 68 61 6E 67 65 2C 53 63 72 65 65 6E 57 69    eChange,ScreenWi
00B390:  64 74 68 2C 53 63 72 65 65 6E 44 65 70 74 68 3B    dth,ScreenDepth;
00B3A0:  0D 0A 46 52 4F 4D 20 09 54 65 72 6D 69 6E 61 6C    ..FROM .Terminal
00B3B0:  20 49 4D 50 4F 52 54 20 57 72 69 74 65 53 74 72     IMPORT WriteStr
00B3C0:  69 6E 67 2C 57 72 69 74 65 2C 57 72 69 74 65 4C    ing,Write,WriteL
00B3D0:  6E 2C 52 65 61 64 3B 0D 0A 46 52 4F 4D 20 09 4D    n,Read;..FROM .M
00B3E0:  61 6B 65 45 64 69 74 73 20 49 4D 50 4F 52 54 20    akeEdits IMPORT 
00B3F0:  50 6F 73 69 74 69 6F 6E 2C 52 65 74 72 6C 69 6E    Position,Retrlin
00B400:  65 2C 52 65 61 64 4E 65 78 74 43 68 61 72 2C 45    e,ReadNextChar,E
00B410:  72 72 6F 72 4C 69 73 74 2C 45 72 72 6F 72 43 6F    rrorList,ErrorCo
00B420:  75 6E 74 2C 4C 61 62 65 6C 4F 70 3B 0D 0A 46 52    unt,LabelOp;..FR
00B430:  4F 4D 09 45 64 69 74 43 6F 6E 74 20 49 4D 50 4F    OM.EditCont IMPO
00B440:  52 54 20 4C 65 66 74 4D 61 72 67 69 6E 2C 46 69    RT LeftMargin,Fi
00B450:  6C 65 73 2C 43 75 72 72 65 6E 74 57 69 6E 64 6F    les,CurrentWindo
00B460:  77 2C 43 75 72 72 65 6E 74 46 69 6C 65 2C 54 68    w,CurrentFile,Th
00B470:  69 73 78 2C 54 68 69 73 79 2C 0D 0A 09 09 09 63    isx,Thisy,.....c
00B480:  75 72 78 2C 63 75 72 79 2C 52 65 44 69 73 70 6C    urx,cury,ReDispl
00B490:  61 79 3B 0D 0A 46 52 4F 4D 20 09 49 6E 74 4C 6F    ay;..FROM .IntLo
00B4A0:  67 69 63 20 49 4D 50 4F 52 54 20 49 41 4E 44 3B    gic IMPORT IAND;
00B4B0:  0D 0A 46 52 4F 4D 09 46 69 6C 65 73 20 49 4D 50    ..FROM.Files IMP
00B4C0:  4F 52 54 20 4C 6F 6F 6B 75 70 2C 43 6C 6F 73 65    ORT Lookup,Close
00B4D0:  2C 46 49 4C 45 2C 52 65 61 64 42 6C 6F 63 6B 3B    ,FILE,ReadBlock;
00B4E0:  0D 0A 46 52 4F 4D 09 53 59 53 54 45 4D 20 49 4D    ..FROM.SYSTEM IM
00B4F0:  50 4F 52 54 20 41 44 52 3B 0D 0A 43 4F 4E 53 54    PORT ADR;..CONST
00B500:  3E 3D 30 29 20 54 48 45 4E 0D 0A 09 09 4D 61 72    >=0) THEN....Mar
00B510:  6B 41 73 55 70 64 61 74 65 64 3B 0D 0A 09 09 44    kAsUpdated;....D
00B520:  65 6C 43 68 61 72 73 28 43 75 72 46 69 6C 65 50    elChars(CurFileP
00B530:  74 72 5E 2C 4C 65 6E 29 20 0D 0A 09 09 49 6E 73    tr^,Len) ....Ins
00B540:  43 68 61 72 73 28 43 75 72 46 69 6C 65 50 74 72    Chars(CurFilePtr
00B550:  5E 2C 52 65 70 6C 61 63 65 2C 52 4C 65 6E 29 3B    ^,Replace,RLen);
00B560:  0D 0A 09 09 62 3A 3D 42 61 63 6B 4F 6E 65 43 68    ....b:=BackOneCh
00B570:  61 72 28 43 75 72 46 69 6C 65 50 74 72 5E 29 3B    ar(CurFilePtr^);
00B580:  0D 0A 09 09 45 4E 44 3B 0D 0A 09 52 65 44 69 73    ....END;...ReDis
00B590:  70 6C 61 79 3B 0D 0A 09 52 45 54 55 52 4E 20 46    play;...RETURN F
00B5A0:  6F 75 6E 64 3B 0D 0A 09 45 4E 44 20 53 65 61 72    ound;...END Sear
00B5B0:  63 68 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 47    ch;..PROCEDURE G
00B5C0:  6F 54 6F 4C 61 62 65 6C 28 63 68 3A 43 48 41 52    oToLabel(ch:CHAR
00B5D0:  29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20 4C    );..BEGIN...IF L
00B5E0:  61 62 65 6C 4F 70 28 43 75 72 46 69 6C 65 50 74    abelOp(CurFilePt
00B5F0:  72 5E 2C 46 41 4C 53 45 2C 63 68 29 20 54 48 45    r^,FALSE,ch) THE
00B600:  4E 0D 0A 09 09 52 65 44 69 73 70 6C 61 79 3B 0D    N....ReDisplay;.
00B610:  0A 09 45 4C 53 45 0D 0A 09 09 45 72 72 6F 72 4D    ..ELSE....ErrorM
00B620:  65 73 73 61 67 65 28 27 20 4C 61 62 65 6C 20 6E    essage(' Label n
00B630:  6F 74 20 64 65 66 69 6E 65 64 27 2C 27 20 27 29    ot defined',' ')
00B640:  3B 0D 0A 09 09 52 65 73 65 74 50 6F 73 3B 0D 0A    ;....ResetPos;..
00B650:  09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 47 6F 54    ..END;...END GoT
00B660:  6F 4C 61 62 65 6C 3B 09 09 0D 0A 42 45 47 49 4E    oLabel;....BEGIN
00B670:  0D 0A 09 43 75 72 72 65 6E 74 57 69 6E 64 6F 77    ...CurrentWindow
00B680:  3A 3D 30 3B 0D 0A 09 43 75 72 72 65 6E 74 46 69    :=0;...CurrentFi
00B690:  6C 65 3A 3D 30 3B 0D 0A 09 43 75 72 46 69 6C 65    le:=0;...CurFile
00B6A0:  50 74 72 3A 3D 50 45 64 69 74 46 69 6C 65 28 41    Ptr:=PEditFile(A
00B6B0:  44 52 28 46 69 6C 65 73 5B 31 5D 29 29 3B 0D 0A    DR(Files[1]));..
00B6C0:  09 45 4E 44 20 45 64 69 74 43 6F 6E 74 72 6F 6C    .END EditControl
00B6D0:  2E 0D 0A 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00B6E0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00B6F0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00B700:  09 45 4F 46 3D 31 61 78 3B 0D 0A 0D 0A 50 52 4F    .EOF=1ax;....PRO
00B710:  43 45 44 55 52 45 20 45 72 72 6F 72 4D 65 73 73    CEDURE ErrorMess
00B720:  61 67 65 28 73 31 2C 73 32 3A 41 52 52 41 59 20    age(s1,s2:ARRAY 
00B730:  4F 46 20 43 48 41 52 29 3B 0D 0A 0D 0A 28 2A 09    OF CHAR);....(*.
00B740:  44 69 73 70 6C 61 79 20 65 72 72 6F 72 20 6D 65    Display error me
00B750:  73 73 61 67 65 20 61 74 20 62 6F 74 74 6F 6D 20    ssage at bottom 
00B760:  6F 66 20 73 63 72 65 65 6E 2A 29 0D 0A 56 41 52    of screen*)..VAR
00B770:  20 69 3A 49 4E 54 45 47 45 52 3B 0D 0A 42 45 47     i:INTEGER;..BEG
00B780:  49 4E 0D 0A 09 47 6F 74 6F 78 79 28 30 2C 53 63    IN...Gotoxy(0,Sc
00B790:  72 65 65 6E 44 65 70 74 68 2D 31 29 3B 0D 0A 09    reenDepth-1);...
00B7A0:  53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 28 52 69    ScreenControl(Ri
00B7B0:  6E 67 42 65 6C 6C 29 3B 0D 0A 09 53 63 72 65 65    ngBell);...Scree
00B7C0:  6E 43 6F 6E 74 72 6F 6C 28 44 65 6C 45 6F 6C 29    nControl(DelEol)
00B7D0:  3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28    ;...WriteString(
00B7E0:  73 31 29 3B 57 72 69 74 65 53 74 72 69 6E 67 28    s1);WriteString(
00B7F0:  73 32 29 3B 0D 0A 09 45 4E 44 20 45 72 72 6F 72    s2);...END Error
00B800:  4D 65 73 73 61 67 65 3B 0D 0A 50 52 4F 43 45 44    Message;..PROCED
00B810:  55 52 45 20 53 65 74 57 69 6E 64 6F 77 73 28 69    URE SetWindows(i
00B820:  3A 49 4E 54 45 47 45 52 29 3B 0D 0A 0D 0A 28 2A    :INTEGER);....(*
00B830:  09 73 65 74 20 6E 75 6D 62 65 72 20 6F 66 20 65    .set number of e
00B840:  64 69 74 20 77 69 6E 64 6F 77 73 20 69 6E 20 75    dit windows in u
00B850:  73 65 20 2D 20 79 6F 75 20 6D 75 73 74 20 72 65    se - you must re
00B860:  66 72 65 73 68 20 74 68 65 20 65 6E 74 69 72 65    fresh the entire
00B870:  0D 0A 09 73 63 72 65 65 6E 20 77 69 74 68 20 63    ...screen with c
00B880:  61 6C 6C 73 20 74 6F 20 44 69 73 70 6C 61 79 46    alls to DisplayF
00B890:  69 6C 65 20 61 66 74 65 72 20 61 20 63 61 6C 6C    ile after a call
00B8A0:  20 74 6F 20 74 68 69 73 0D 0A 09 72 6F 75 74 69     to this...routi
00B8B0:  6E 65 2A 29 0D 0A 56 41 52 09 6A 2C 6B 3A 43 41    ne*)..VAR.j,k:CA
00B8C0:  52 44 49 4E 41 4C 3B 0D 0A 09 0D 0A 42 45 47 49    RDINAL;.....BEGI
00B8D0:  4E 0D 0A 09 57 69 6E 64 6F 77 73 3A 3D 69 3B 0D    N...Windows:=i;.
00B8E0:  0A 09 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 28    ..ScreenControl(
00B8F0:  43 6C 65 61 72 53 63 72 65 65 6E 29 3B 0D 0A 09    ClearScreen);...
00B900:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00B910:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00B920:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00B930:  1A 1A 1A 02 1B 02 1C 02 1D 02 1E 02 1F 02 20 02    .............. .
00B940:  21 02 22 02 23 02 24 02 25 02 26 02 27 02 28 02    !.".#.$.%.&.'.(.
00B950:  29 02 2A 02 2B 02 FF FF FF FF FF FF FF FF 30 02    ).*.+.........0.
00B960:  FF FF 32 02 33 02 34 02 35 02 36 02 37 02 38 02    ..2.3.4.5.6.7.8.
00B970:  39 02 FF FF FF FF FF FF 3D 02 3E 02 3F 02 40 02    9.......=.>.?.@.
00B980:  0D 0A 50 52 4F 43 45 44 55 52 45 20 44 6F 4D 65    ..PROCEDURE DoMe
00B990:  6E 75 4F 70 3B 0D 0A 50 52 4F 43 45 44 55 52 45    nuOp;..PROCEDURE
00B9A0:  20 4F 70 65 6E 28 66 6E 3A 46 69 6C 65 4E 61 6D     Open(fn:FileNam
00B9B0:  65 3B 50 6F 73 3A 43 41 52 44 49 4E 41 4C 29 3B    e;Pos:CARDINAL);
00B9C0:  0D 0A 50 52 4F 43 45 44 55 52 45 20 47 65 74 53    ..PROCEDURE GetS
00B9D0:  74 72 69 6E 67 28 56 41 52 20 73 3A 41 52 52 41    tring(VAR s:ARRA
00B9E0:  59 20 4F 46 20 43 48 41 52 3B 56 41 52 20 6C 65    Y OF CHAR;VAR le
00B9F0:  6E 3A 43 41 52 44 49 4E 41 4C 3B 70 72 6F 6D 70    n:CARDINAL;promp
00BA00:  74 3A 41 52 52 41 59 20 4F 46 20 43 48 41 52 29    t:ARRAY OF CHAR)
00BA10:  3B 0D 0A 45 4E 44 20 44 6F 4D 65 6E 75 2E 0D 0A    ;..END DoMenu...
00BA20:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00BA30:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00BA40:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00BA50:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00BA60:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00BA70:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00BA80:  6F 6E 73 20 61 72 65 20 73 75 70 70 6C 69 65 64    ons are supplied
00BA90:  2E 20 20 53 43 52 45 45 4E 49 4F 2E 4F 53 42 20    .  SCREENIO.OSB 
00BAA0:  69 73 20 66 6F 72 20 74 68 65 20 4F 73 62 6F 72    is for the Osbor
00BAB0:  6E 65 0D 0A 09 09 31 2C 20 53 43 52 45 45 4E 49    ne....1, SCREENI
00BAC0:  4F 2E 4D 42 45 20 69 73 20 66 6F 72 20 74 68 65    O.MBE is for the
00BAD0:  20 4D 69 63 72 6F 42 65 65 2C 20 61 6E 64 20 53     MicroBee, and S
00BAE0:  43 52 45 45 4E 49 4F 2E 45 41 52 20 69 73 20 66    CREENIO.EAR is f
00BAF0:  6F 72 0D 0A 09 09 74 68 65 20 45 61 72 74 68 20    or....the Earth 
00BB00:  49 46 20 57 69 6E 64 6F 77 73 3E 31 20 54 48 45    IF Windows>1 THE
00BB10:  4E 0D 0A 09 09 4C 69 6E 65 73 50 65 72 57 69 6E    N....LinesPerWin
00BB20:  64 6F 77 3A 3D 28 53 63 72 65 65 6E 44 65 70 74    dow:=(ScreenDept
00BB30:  68 2D 57 69 6E 64 6F 77 73 29 20 44 49 56 20 57    h-Windows) DIV W
00BB40:  69 6E 64 6F 77 73 3B 0D 0A 09 45 4C 53 45 09 4C    indows;...ELSE.L
00BB50:  69 6E 65 73 50 65 72 57 69 6E 64 6F 77 3A 3D 53    inesPerWindow:=S
00BB60:  63 72 65 65 6E 44 65 70 74 68 2D 31 20 45 4E 44    creenDepth-1 END
00BB70:  3B 0D 0A 09 46 4F 52 20 6A 3A 3D 32 20 54 4F 20    ;...FOR j:=2 TO 
00BB80:  57 69 6E 64 6F 77 73 20 44 4F 0D 0A 09 09 47 6F    Windows DO....Go
00BB90:  74 6F 78 79 28 30 2C 28 4C 69 6E 65 73 50 65 72    toxy(0,(LinesPer
00BBA0:  57 69 6E 64 6F 77 2B 31 29 2A 28 6A 2D 31 29 2D    Window+1)*(j-1)-
00BBB0:  31 29 3B 0D 0A 09 09 53 63 72 65 65 6E 43 6F 6E    1);....ScreenCon
00BBC0:  74 72 6F 6C 28 53 74 61 72 74 47 72 61 70 68 29    trol(StartGraph)
00BBD0:  3B 0D 0A 09 09 46 4F 52 20 6B 3A 3D 31 20 54 4F    ;....FOR k:=1 TO
00BBE0:  20 53 63 72 65 65 6E 57 69 64 74 68 20 44 4F 20     ScreenWidth DO 
00BBF0:  0D 0A 09 09 09 53 63 72 65 65 6E 43 6F 6E 74 72    .....ScreenContr
00BC00:  6F 6C 28 48 6F 72 69 7A 6F 6E 74 61 6C 29 3B 0D    ol(Horizontal);.
00BC10:  0A 09 09 09 45 4E 44 3B 0D 0A 09 09 53 63 72 65    ....END;....Scre
00BC20:  65 6E 43 6F 6E 74 72 6F 6C 28 45 6E 64 47 72 61    enControl(EndGra
00BC30:  70 68 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45    ph);....END;...E
00BC40:  4E 44 20 53 65 74 57 69 6E 64 6F 77 73 3B 0D 0A    ND SetWindows;..
00BC50:  09 28 2A 70 75 74 20 61 20 6C 69 6E 65 20 62 65    .(*put a line be
00BC60:  74 77 65 65 6E 20 74 68 65 20 77 69 6E 64 6F 77    tween the window
00BC70:  73 2A 29 0D 0A 0D 0A 56 41 52 09 63 68 3A 43 48    s*)....VAR.ch:CH
00BC80:  41 52 3B 0D 0A 09 70 6F 73 3A 50 6F 73 69 74 69    AR;...pos:Positi
00BC90:  6F 6E 3B 0D 0A 09 63 68 61 72 73 69 6E 2C 69 63    on;...charsin,ic
00BCA0:  3A 49 4E 54 45 47 45 52 3B 0D 0A 09 6C 65 6E 2C    :INTEGER;...len,
00BCB0:  6D 6F 76 65 64 3A 49 4E 54 45 47 45 52 3B 0D 0A    moved:INTEGER;..
00BCC0:  09 6C 69 6E 65 70 6F 73 2C 4C 65 66 74 4D 61 72    .linepos,LeftMar
00BCD0:  67 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 50 52 4F    g:CARDINAL;..PRO
00BCE0:  43 45 44 55 52 45 20 53 65 74 4C 65 66 74 4D 61    CEDURE SetLeftMa
00BCF0:  72 67 28 66 3A 45 64 69 74 46 69 6C 65 3B 77 69    rg(f:EditFile;wi
00BD00:  44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C    DEFINITION MODUL
00BD10:  45 20 45 64 69 74 44 69 73 70 6C 61 79 3B 0D 0A    E EditDisplay;..
00BD20:  28 2A 09 44 69 73 70 6C 61 79 20 70 61 72 74 20    (*.Display part 
00BD30:  6F 66 20 61 20 66 69 6C 65 20 62 65 69 6E 67 20    of a file being 
00BD40:  65 64 69 74 65 64 2A 29 0D 0A 0D 0A 46 52 4F 4D    edited*)....FROM
00BD50:  20 53 63 72 65 65 6E 49 4F 20 20 49 4D 50 4F 52     ScreenIO  IMPOR
00BD60:  54 20 45 64 69 74 73 3B 0D 0A 46 52 4F 4D 20 4D    T Edits;..FROM M
00BD70:  61 6B 65 45 64 69 74 73 20 49 4D 50 4F 52 54 20    akeEdits IMPORT 
00BD80:  45 64 69 74 46 69 6C 65 3B 0D 0A 56 41 52 09 45    EditFile;..VAR.E
00BD90:  72 72 6F 72 4F 72 64 69 6E 61 6C 3A 43 41 52 44    rrorOrdinal:CARD
00BDA0:  49 4E 41 4C 3B 0D 0A 50 52 4F 43 45 44 55 52 45    INAL;..PROCEDURE
00BDB0:  20 45 72 72 6F 72 4D 65 73 73 61 67 65 28 73 31     ErrorMessage(s1
00BDC0:  2C 73 32 3A 41 52 52 41 59 20 4F 46 20 43 48 41    ,s2:ARRAY OF CHA
00BDD0:  52 29 3B 0D 0A 0D 0A 28 2A 09 44 69 73 70 6C 61    R);....(*.Displa
00BDE0:  79 20 65 72 72 6F 72 20 6D 65 73 73 61 67 65 20    y error message 
00BDF0:  61 74 20 62 6F 74 74 6F 6D 20 6F 66 20 73 63 72    at bottom of scr
00BE00:  65 65 6E 2A 29 0D 0A 0D 0A 50 52 4F 43 45 44 55    een*)....PROCEDU
00BE10:  52 45 20 53 65 74 57 69 6E 64 6F 77 73 28 69 3A    RE SetWindows(i:
00BE20:  49 4E 54 45 47 45 52 29 3B 0D 0A 0D 0A 28 2A 09    INTEGER);....(*.
00BE30:  73 65 74 20 6E 75 6D 62 65 72 20 6F 66 20 65 64    set number of ed
00BE40:  69 74 20 77 69 6E 64 6F 77 73 20 69 6E 20 75 73    it windows in us
00BE50:  65 20 2D 20 79 6F 75 20 6D 75 73 74 20 72 65 66    e - you must ref
00BE60:  72 65 73 68 20 74 68 65 20 65 6E 74 69 72 65 0D    resh the entire.
00BE70:  0A 09 73 63 72 65 65 6E 20 77 69 74 68 20 63 61    ..screen with ca
00BE80:  6C 6C 73 20 74 6F 20 44 69 73 70 6C 61 79 46 69    lls to DisplayFi
00BE90:  6C 65 20 61 66 74 65 72 20 61 20 63 61 6C 6C 20    le after a call 
00BEA0:  74 6F 20 74 68 69 73 0D 0A 09 72 6F 75 74 69 6E    to this...routin
00BEB0:  65 2A 29 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45    e*)....PROCEDURE
00BEC0:  20 44 69 73 70 6C 61 79 46 69 6C 65 28 66 3A 45     DisplayFile(f:E
00BED0:  64 69 74 46 69 6C 65 3B 77 69 6E 64 6F 77 3A 49    ditFile;window:I
00BEE0:  4E 54 45 47 45 52 3B 56 41 52 20 63 75 72 78 2C    NTEGER;VAR curx,
00BEF0:  63 75 72 79 3A 43 41 52 44 49 4E 41 4C 29 3B 0D    cury:CARDINAL);.
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 C9 02 00 00 00 02    ......R.........
00BF20:  0A 00 C5 02 00 00 00 02 0A 00 C1 02 00 00 00 02    ................
00BF30:  0A 00 C6 02 00 00 00 02 0A 00 C2 02 00 00 00 02    ................
00BF40:  0A 00 C7 02 00 00 00 02 0A 00 C3 02 00 00 00 02    ................
00BF50:  0A 00 C8 02 00 00 00 02 0A 00 C4 02 00 00 00 02    ................
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:  78 2C 54 68 69 73 79 29 3B 2A 29 0D 0A 09 47 6F    x,Thisy);*)...Go
00C010:  74 6F 78 79 28 54 68 69 73 78 2C 54 68 69 73 79    toxy(Thisx,Thisy
00C020:  29 3B 0D 0A 09 63 75 72 78 5B 43 75 72 72 65 6E    );...curx[Curren
00C030:  74 57 69 6E 64 6F 77 5D 3A 3D 54 68 69 73 78 3B    tWindow]:=Thisx;
00C040:  0D 0A 09 63 75 72 79 5B 43 75 72 72 65 6E 74 57    ...cury[CurrentW
00C050:  69 6E 64 6F 77 5D 3A 3D 54 68 69 73 79 3B 0D 0A    indow]:=Thisy;..
00C060:  09 45 4E 44 20 44 69 73 70 6C 61 79 45 72 72 6F    .END DisplayErro
00C070:  72 3B 09 0D 0A 42 45 47 49 4E 0D 0A 09 57 69 6E    r;...BEGIN...Win
00C080:  64 6F 77 73 3A 3D 30 3B 0D 0A 09 45 4E 44 20 45    dows:=0;...END E
00C090:  64 69 74 44 69 73 70 6C 61 79 2E 0D 0A 1A 1A 1A    ditDisplay......
00C0A0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00C0B0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00C0C0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00C0D0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00C0E0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 00 00 00 00 00 00 00    ................
00C0F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00C100:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00C110:  00 00 00 00 00 00 00 00 00 00 00 00 00 1A 1A 1A    ................
00C120:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00C130:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00C140:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00C150:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00C160:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00C170:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00C180:  66 74 4D 61 72 67 69 6E 3E 30 20 54 48 45 4E 20    ftMargin>0 THEN 
00C190:  0D 0A 09 09 43 68 61 6E 67 65 4D 61 72 67 69 6E    ....ChangeMargin
00C1A0:  28 2D 49 4E 54 45 47 45 52 28 43 75 72 72 65 6E    (-INTEGER(Curren
00C1B0:  74 4C 65 66 74 4D 61 72 67 69 6E 29 29 0D 0A 09    tLeftMargin))...
00C1C0:  09 45 4E 44 3B 0D 0A 09 54 68 69 73 78 3A 3D 30    .END;...Thisx:=0
00C1D0:  3B 0D 0A 09 52 65 73 65 74 50 6F 73 3B 0D 0A 09    ;...ResetPos;...
00C1E0:  4C 69 6E 65 50 6F 73 3A 3D 30 3B 0D 0A 09 53 65    LinePos:=0;...Se
00C1F0:  74 4C 69 6E 65 50 6F 73 28 30 29 3B 0D 0A 09 45    tLinePos(0);...E
00C200:  4E 20 52 45 54 55 52 4E 20 30 20 45 4E 44 3B 0D    N RETURN 0 END;.
00C210:  0A 09 46 4F 52 20 6B 3A 3D 6B 2D 31 20 54 4F 20    ..FOR k:=k-1 TO 
00C220:  30 20 42 59 20 2D 31 20 44 4F 0D 0A 09 09 69 3A    0 BY -1 DO....i:
00C230:  3D 69 2B 4F 52 44 28 62 5B 6B 5D 29 3B 0D 0A 09    =i+ORD(b[k]);...
00C240:  09 45 4E 44 3B 0D 0A 09 52 45 54 55 52 4E 20 69    .END;...RETURN i
00C250:  0D 0A 09 45 4E 44 20 43 6F 75 6E 74 3B 0D 0A 50    ...END Count;..P
00C260:  52 4F 43 45 44 55 52 45 20 57 72 69 74 65 43 61    ROCEDURE WriteCa
00C270:  72 64 28 69 3A 43 41 52 44 49 4E 41 4C 29 3B 0D    rd(i:CARDINAL);.
00C280:  0A 56 41 52 09 74 3A 41 52 52 41 59 5B 30 2E 2E    .VAR.t:ARRAY[0..
00C290:  33 5D 20 4F 46 20 43 48 41 52 3B 0D 0A 09 6A 2C    3] OF CHAR;...j,
00C2A0:  6B 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 42 45 47    k:CARDINAL;..BEG
00C2B0:  49 4E 0D 0A 09 6B 3A 3D 48 49 47 48 28 74 29 3B    IN...k:=HIGH(t);
00C2C0:  0D 0A 09 57 48 49 4C 45 20 69 3C 3E 30 20 44 4F    ...WHILE i<>0 DO
00C2D0:  0D 0A 09 09 6A 3A 3D 69 20 44 49 56 20 31 30 3B    ....j:=i DIV 10;
00C2E0:  0D 0A 09 09 74 5B 6B 5D 3A 3D 43 48 52 28 4F 52    ....t[k]:=CHR(OR
00C2F0:  44 28 27 30 27 29 2B 69 2D 31 30 2A 6A 29 3B 0D    D('0')+i-10*j);.
00C300:  0A 09 09 69 3A 3D 6A 3B 0D 0A 09 09 44 45 43 28    ...i:=j;....DEC(
00C310:  6B 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 46 4F    k);....END;...FO
00C320:  52 20 6B 3A 3D 6B 2B 31 20 54 4F 20 48 49 47 48    R k:=k+1 TO HIGH
00C330:  28 74 29 20 44 4F 20 57 72 69 74 65 28 74 5B 6B    (t) DO Write(t[k
00C340:  5D 29 20 45 4E 44 3B 0D 0A 09 45 4E 44 20 57 72    ]) END;...END Wr
00C350:  69 74 65 43 61 72 64 3B 0D 0A 42 45 47 49 4E 0D    iteCard;..BEGIN.
00C360:  0A 09 49 46 20 45 72 72 6F 72 4F 72 64 69 6E 61    ..IF ErrorOrdina
00C370:  6C 3E 3D 45 72 72 6F 72 43 6F 75 6E 74 20 54 48    l>=ErrorCount TH
00C380:  45 4E 20 52 45 54 55 52 4E 20 45 4E 44 3B 0D 0A    EN RETURN END;..
00C390:  09 47 6F 74 6F 78 79 28 30 2C 53 63 72 65 65 6E    .Gotoxy(0,Screen
00C3A0:  44 65 70 74 68 2D 31 29 3B 0D 0A 09 45 72 72 6F    Depth-1);...Erro
00C3B0:  72 4E 75 6D 62 65 72 3A 3D 45 72 72 6F 72 4C 69    rNumber:=ErrorLi
00C3C0:  73 74 5B 45 72 72 6F 72 4F 72 64 69 6E 61 6C 5D    st[ErrorOrdinal]
00C3D0:  2E 45 72 72 6F 72 4E 75 6D 3B 0D 0A 09 53 63 72    .ErrorNum;...Scr
00C3E0:  65 65 6E 43 6F 6E 74 72 6F 6C 28 44 65 6C 45 6F    eenControl(DelEo
00C3F0:  6C 29 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E    l);...WriteStrin
00C400:  65 20 67 69 76 65 6E 20 66 69 6C 65 20 73 74 61    e given file sta
00C410:  72 74 69 6E 67 20 61 74 20 74 68 65 20 63 75 72    rting at the cur
00C420:  72 65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 69 6E    rent position in
00C430:  20 74 68 65 20 66 69 6C 65 2A 29 0D 0A 56 41 52     the file*)..VAR
00C440:  09 69 2C 6A 2C 6B 2C 6C 69 6E 65 70 6F 73 3A 43    .i,j,k,linepos:C
00C450:  41 52 44 49 4E 41 4C 3B 0D 0A 09 6D 6F 76 65 64    ARDINAL;...moved
00C460:  6F 6E 65 3A 49 4E 54 45 47 45 52 3B 09 0D 0A 09    one:INTEGER;....
00C470:  73 74 61 72 74 6C 69 6E 65 3A 49 4E 54 45 47 45    startline:INTEGE
00C480:  52 3B 20 28 2A 66 69 72 73 74 20 6C 69 6E 65 20    R; (*first line 
00C490:  6F 66 20 77 69 6E 64 6F 77 2A 29 0D 0A 42 45 47    of window*)..BEG
00C4A0:  49 4E 0D 0A 09 4C 65 66 74 4D 61 72 67 3A 3D 4C    IN...LeftMarg:=L
00C4B0:  65 66 74 4D 61 72 67 69 6E 5B 77 69 6E 64 6F 77    eftMargin[window
00C4C0:  5D 3B 0D 0A 09 73 74 61 72 74 6C 69 6E 65 3A 3D    ];...startline:=
00C4D0:  28 49 4E 54 45 47 45 52 28 4C 69 6E 65 73 50 65    (INTEGER(LinesPe
00C4E0:  72 57 69 6E 64 6F 77 29 2B 31 29 2A 28 77 69 6E    rWindow)+1)*(win
00C4F0:  64 6F 77 2D 31 29 3B 0D 0A 09 47 6F 74 6F 78 79    dow-1);...Gotoxy
00C500:  28 30 2C 73 74 61 72 74 6C 69 6E 65 29 3B 0D 0A    (0,startline);..
00C510:  0D 0A 09 28 2A 66 69 72 73 74 20 6C 69 6E 65 20    ...(*first line 
00C520:  6F 66 20 74 68 69 73 20 77 69 6E 64 6F 77 2A 29    of this window*)
00C530:  0D 0A 09 69 3A 3D 30 3B 09 28 2A 6C 69 6E 65 20    ...i:=0;.(*line 
00C540:  77 69 74 68 69 6E 20 77 69 6E 64 6F 77 2A 29 0D    within window*).
00C550:  0A 09 6B 3A 3D 4C 69 6E 65 73 50 65 72 57 69 6E    ..k:=LinesPerWin
00C560:  64 6F 77 20 44 49 56 20 32 3B 0D 0A 09 52 65 74    dow DIV 2;...Ret
00C570:  72 6C 69 6E 65 28 66 2C 6C 65 6E 2C 63 68 61 72    rline(f,len,char
00C580:  73 69 6E 2C 70 6F 73 2C 6D 6F 76 65 64 2C 2D 6B    sin,pos,moved,-k
00C590:  29 3B 0D 0A 09 0D 0A 09 4C 4F 4F 50 0D 0A 0D 0A    );......LOOP....
00C5A0:  09 09 28 2A 63 68 65 63 6B 20 69 66 20 74 68 69    ..(*check if thi
00C5B0:  73 20 69 73 20 74 68 65 20 6C 69 6E 65 20 77 65    s is the line we
00C5C0:  20 77 65 72 65 20 70 6F 73 69 74 69 6F 6E 65 64     were positioned
00C5D0:  20 74 6F 20 75 70 6F 6E 20 65 6E 74 72 79 2A 29     to upon entry*)
00C5E0:  0D 0A 0D 0A 09 09 6C 69 6E 65 70 6F 73 3A 3D 30    ......linepos:=0
00C5F0:  3B 0D 0A 09 09 6A 3A 3D 30 3B 0D 0A 09 09 4C 4F    ;....j:=0;....LO
00C600:  67 28 27 45 72 72 6F 72 20 27 29 3B 0D 0A 09 57    g('Error ');...W
00C610:  72 69 74 65 43 61 72 64 28 45 72 72 6F 72 4E 75    riteCard(ErrorNu
00C620:  6D 62 65 72 29 3B 0D 0A 09 57 72 69 74 65 53 74    mber);...WriteSt
00C630:  72 69 6E 67 28 27 28 27 29 3B 57 72 69 74 65 43    ring('(');WriteC
00C640:  61 72 64 28 45 72 72 6F 72 4F 72 64 69 6E 61 6C    ard(ErrorOrdinal
00C650:  2B 31 29 3B 0D 0A 09 57 72 69 74 65 53 74 72 69    +1);...WriteStri
00C660:  6E 67 28 27 20 6F 66 20 27 29 3B 57 72 69 74 65    ng(' of ');Write
00C670:  43 61 72 64 28 45 72 72 6F 72 43 6F 75 6E 74 29    Card(ErrorCount)
00C680:  3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28    ;...WriteString(
00C690:  27 29 20 3A 27 29 3B 0D 0A 09 4C 6F 6F 6B 75 70    ') :');...Lookup
00C6A0:  28 66 2C 27 45 52 52 4D 53 47 2E 44 41 54 20 27    (f,'ERRMSG.DAT '
00C6B0:  2C 72 65 70 6C 79 29 3B 0D 0A 0D 0A 09 28 2A 4C    ,reply);.....(*L
00C6C0:  6F 6F 6B 75 70 20 6F 70 65 6E 73 20 74 68 65 20    ookup opens the 
00C6D0:  66 69 6C 65 20 66 6F 72 20 69 6E 70 75 74 2F 6F    file for input/o
00C6E0:  75 74 70 75 74 0D 0A 09 20 20 72 65 70 6C 79 20    utput...  reply 
00C6F0:  72 65 74 75 72 6E 73 20 7A 65 72 6F 20 69 66 20    returns zero if 
00C700:  6E 6F 20 66 69 6C 65 20 69 73 20 66 6F 75 6E 64    no file is found
00C710:  0D 0A 09 20 20 61 20 64 65 76 69 63 65 20 6E 61    ...  a device na
00C720:  6D 65 20 63 61 6E 20 62 65 20 75 73 65 64 20 69    me can be used i
00C730:  6E 20 66 72 6F 6E 74 20 6F 66 20 74 68 65 20 66    n front of the f
00C740:  69 6C 65 20 6E 61 6D 65 0D 0A 09 20 49 6E 20 66    ile name... In f
00C750:  61 63 74 2C 20 79 6F 75 20 63 61 6E 20 75 73 65    act, you can use
00C760:  20 61 20 6E 6F 6E 2D 64 69 73 63 20 66 69 6C 65     a non-disc file
00C770:  20 6E 61 6D 65 20 28 65 67 20 50 55 4E 3A 20 6F     name (eg PUN: o
00C780:  72 20 43 4F 4E 3A 29 0D 0A 09 20 62 75 74 20 69    r CON:)... but i
00C790:  66 20 79 6F 75 20 64 6F 20 74 68 69 73 2C 20 79    f you do this, y
00C7A0:  6F 75 20 6D 75 73 74 20 64 6F 20 79 6F 75 72 20    ou must do your 
00C7B0:  49 4F 20 74 68 72 6F 75 67 68 20 74 68 65 20 6D    IO through the m
00C7C0:  6F 64 75 6C 65 0D 0A 09 20 53 74 72 65 61 6D 73    odule... Streams
00C7D0:  20 28 6F 72 20 49 6E 4F 75 74 2C 20 77 68 69 63     (or InOut, whic
00C7E0:  68 20 63 61 6C 6C 73 20 73 74 72 65 61 6D 73 29    h calls streams)
00C7F0:  2C 20 61 73 20 74 68 65 20 49 4F 20 74 6F 20 74    , as the IO to t
00C800:  4F 50 0D 0A 09 09 09 49 46 20 28 6D 6F 76 65 64    OP.....IF (moved
00C810:  3D 30 29 20 41 4E 44 20 28 6A 3C 3D 43 41 52 44    =0) AND (j<=CARD
00C820:  49 4E 41 4C 28 63 68 61 72 73 69 6E 29 29 20 54    INAL(charsin)) T
00C830:  48 45 4E 0D 0A 09 09 09 09 63 75 72 78 3A 3D 6C    HEN......curx:=l
00C840:  69 6E 65 70 6F 73 2D 4C 65 66 74 4D 61 72 67 3B    inepos-LeftMarg;
00C850:  0D 0A 09 09 09 09 63 75 72 79 3A 3D 69 2B 43 41    ......cury:=i+CA
00C860:  52 44 49 4E 41 4C 28 73 74 61 72 74 6C 69 6E 65    RDINAL(startline
00C870:  29 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09    )......END;.....
00C880:  49 4E 43 28 6A 29 3B 0D 0A 09 09 09 49 46 20 6A    INC(j);.....IF j
00C890:  3E 43 41 52 44 49 4E 41 4C 28 6C 65 6E 29 20 54    >CARDINAL(len) T
00C8A0:  48 45 4E 20 45 58 49 54 20 45 4E 44 3B 0D 0A 0D    HEN EXIT END;...
00C8B0:  0A 09 09 09 28 2A 63 68 65 63 6B 20 66 6F 72 20    ....(*check for 
00C8C0:  63 75 72 73 6F 72 20 6C 69 6E 65 2A 29 0D 0A 0D    cursor line*)...
00C8D0:  0A 09 09 09 52 65 61 64 4E 65 78 74 43 68 61 72    ....ReadNextChar
00C8E0:  28 70 6F 73 2C 63 68 29 3B 0D 0A 09 09 09 49 46    (pos,ch);.....IF
00C8F0:  20 63 68 3D 30 39 78 20 54 48 45 4E 20 0D 0A 09     ch=09x THEN ...
00C900:  09 09 09 52 45 50 45 41 54 0D 0A 09 09 09 09 09    ...REPEAT.......
00C910:  49 4E 43 28 6C 69 6E 65 70 6F 73 29 3B 0D 0A 09    INC(linepos);...
00C920:  09 09 09 09 49 46 20 28 6C 69 6E 65 70 6F 73 3E    ....IF (linepos>
00C930:  4C 65 66 74 4D 61 72 67 29 20 0D 0A 09 09 09 09    LeftMarg) ......
00C940:  09 41 4E 44 20 28 6C 69 6E 65 70 6F 73 3C 28 53    .AND (linepos<(S
00C950:  63 72 65 65 6E 57 69 64 74 68 2B 4C 65 66 74 4D    creenWidth+LeftM
00C960:  61 72 67 29 29 20 54 48 45 4E 20 0D 0A 09 09 09    arg)) THEN .....
00C970:  09 09 09 57 72 69 74 65 28 27 20 27 29 20 0D 0A    ...Write(' ') ..
00C980:  09 09 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 09    ......END;......
00C990:  09 55 4E 54 49 4C 20 49 41 4E 44 28 6C 69 6E 65    .UNTIL IAND(line
00C9A0:  70 6F 73 2C 37 29 3D 30 3B 0D 0A 09 09 09 45 4C    pos,7)=0;.....EL
00C9B0:  53 49 46 20 63 68 3D 45 4F 46 20 54 48 45 4E 20    SIF ch=EOF THEN 
00C9C0:  45 58 49 54 0D 0A 09 09 09 45 4C 53 45 20 0D 0A    EXIT.....ELSE ..
00C9D0:  09 09 09 09 49 4E 43 28 6C 69 6E 65 70 6F 73 29    ....INC(linepos)
00C9E0:  3B 0D 0A 09 09 09 09 49 46 20 28 6C 69 6E 65 70    ;......IF (linep
00C9F0:  6F 73 3E 4C 65 66 74 4D 61 72 67 29 0D 0A 09 09    os>LeftMarg)....
00CA00:  68 65 0D 0A 09 20 73 65 72 69 61 6C 20 64 65 76    he... serial dev
00CA10:  69 63 65 73 20 69 73 20 70 65 72 66 6F 72 6D 65    ices is performe
00CA20:  64 20 62 79 20 74 68 61 74 20 6D 6F 64 75 6C 65    d by that module
00CA30:  20 28 69 74 20 63 61 6C 6C 73 20 46 69 6C 65 73     (it calls Files
00CA40:  0D 0A 09 20 74 6F 20 64 6F 20 49 4F 20 74 6F 20    ... to do IO to 
00CA50:  64 69 73 63 20 64 65 76 69 63 65 73 29 0D 0A 2A    disc devices)..*
00CA60:  29 0D 0A 09 49 46 20 72 65 70 6C 79 3D 30 20 54    )...IF reply=0 T
00CA70:  48 45 4E 09 09 28 2A 4F 4B 20 2D 20 66 69 6C 65    HEN..(*OK - file
00CA80:  20 66 6F 75 6E 64 2A 29 0D 0A 09 09 0D 0A 0D 0A     found*)........
00CA90:  09 09 28 2A 72 65 61 64 20 74 68 65 20 66 69 72    ..(*read the fir
00CAA0:  73 74 20 31 20 6F 72 20 74 77 6F 20 62 6C 6F 63    st 1 or two bloc
00CAB0:  6B 73 20 6F 66 20 74 68 65 20 65 72 72 6F 72 20    ks of the error 
00CAC0:  0D 0A 09 09 20 20 6D 65 73 73 61 67 65 20 66 69    ....  message fi
00CAD0:  6C 65 2C 20 63 6F 75 6E 74 69 6E 20 74 68 65 20    le, countin the 
00CAE0:  63 68 61 72 61 63 74 65 72 73 20 70 72 65 63 65    characters prece
00CAF0:  64 69 6E 67 20 74 68 65 0D 0A 09 09 20 20 65 72    ding the....  er
00CB00:  72 6F 72 20 65 6D 73 73 61 67 65 20 77 65 20 77    ror emssage we w
00CB10:  61 6E 74 20 2A 29 0D 0A 09 09 52 65 61 64 42 6C    ant *)....ReadBl
00CB20:  6F 63 6B 28 66 2C 41 44 52 28 62 29 2C 30 2C 31    ock(f,ADR(b),0,1
00CB30:  32 38 2C 72 65 70 6C 79 29 3B 0D 0A 09 09 6A 3A    28,reply);....j:
00CB40:  3D 45 72 72 6F 72 4E 75 6D 62 65 72 3B 0D 0A 09    =ErrorNumber;...
00CB50:  09 49 46 20 45 72 72 6F 72 4E 75 6D 62 65 72 3E    .IF ErrorNumber>
00CB60:  31 32 38 20 54 48 45 4E 0D 0A 09 09 09 69 3A 3D    128 THEN.....i:=
00CB70:  43 6F 75 6E 74 28 31 32 38 29 3B 0D 0A 09 09 09    Count(128);.....
00CB80:  52 65 61 64 42 6C 6F 63 6B 28 66 2C 41 44 52 28    ReadBlock(f,ADR(
00CB90:  62 29 2C 31 2C 31 32 38 2C 72 65 70 6C 79 29 3B    b),1,128,reply);
00CBA0:  0D 0A 09 09 09 6A 3A 3D 6A 2D 31 32 38 0D 0A 09    .....j:=j-128...
00CBB0:  09 45 4C 53 45 0D 0A 09 09 09 69 3A 3D 30 3B 0D    .ELSE.....i:=0;.
00CBC0:  0A 09 09 09 45 4E 44 3B 0D 0A 09 09 69 3A 3D 69    ....END;....i:=i
00CBD0:  2B 43 6F 75 6E 74 28 6A 2D 31 29 3B 0D 0A 09 09    +Count(j-1);....
00CBE0:  4C 65 6E 67 74 68 3A 3D 4F 52 44 28 62 5B 6A 2D    Length:=ORD(b[j-
00CBF0:  31 5D 29 3B 0D 0A 09 09 6A 3A 3D 69 20 44 49 56    1]);....j:=i DIV
00CC00:  09 09 41 4E 44 20 28 6C 69 6E 65 70 6F 73 3C 28    ..AND (linepos<(
00CC10:  53 63 72 65 65 6E 57 69 64 74 68 2B 4C 65 66 74    ScreenWidth+Left
00CC20:  4D 61 72 67 29 29 20 54 48 45 4E 20 0D 0A 09 09    Marg)) THEN ....
00CC30:  09 09 09 57 72 69 74 65 28 63 68 29 20 0D 0A 09    ...Write(ch) ...
00CC40:  09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 09 45 4E    ....END;......EN
00CC50:  44 3B 28 2A 49 46 20 63 68 3D 76 61 72 69 6F 75    D;(*IF ch=variou
00CC60:  73 20 74 68 69 6E 67 73 2A 29 0D 0A 09 09 09 45    s things*).....E
00CC70:  4E 44 20 28 2A 69 6E 6E 65 72 20 6C 6F 6F 70 2A    ND (*inner loop*
00CC80:  29 3B 0D 0A 09 09 49 4E 43 28 69 29 3B 0D 0A 09    );....INC(i);...
00CC90:  09 49 46 20 6C 69 6E 65 70 6F 73 3C 28 53 63 72    .IF linepos<(Scr
00CCA0:  65 65 6E 57 69 64 74 68 2B 4C 65 66 74 4D 61 72    eenWidth+LeftMar
00CCB0:  67 29 20 54 48 45 4E 20 0D 0A 09 09 09 53 63 72    g) THEN .....Scr
00CCC0:  65 65 6E 43 6F 6E 74 72 6F 6C 28 44 65 6C 45 6F    eenControl(DelEo
00CCD0:  6C 29 20 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09    l) .....END;....
00CCE0:  49 46 20 69 3D 4C 69 6E 65 73 50 65 72 57 69 6E    IF i=LinesPerWin
00CCF0:  64 6F 77 20 54 48 45 4E 20 45 58 49 54 0D 0A 09    dow THEN EXIT...
00CD00:  09 45 4C 53 45 20 0D 0A 09 09 09 57 72 69 74 65    .ELSE .....Write
00CD10:  4C 6E 3B 0D 0A 09 09 09 6C 69 6E 65 70 6F 73 3A    Ln;.....linepos:
00CD20:  3D 30 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09    =0;.....END;....
00CD30:  49 4E 43 28 6D 6F 76 65 64 29 3B 09 0D 0A 09 09    INC(moved);.....
00CD40:  52 65 74 72 6C 69 6E 65 28 66 2C 6C 65 6E 2C 69    Retrline(f,len,i
00CD50:  63 2C 70 6F 73 2C 6D 6F 76 65 64 6F 6E 65 2C 31    c,pos,movedone,1
00CD60:  29 3B 0D 0A 09 09 49 46 20 6D 6F 76 65 64 6F 6E    );....IF movedon
00CD70:  65 3D 30 20 54 48 45 4E 0D 0A 09 09 09 46 4F 52    e=0 THEN.....FOR
00CD80:  20 69 3A 3D 69 2B 31 20 54 4F 20 4C 69 6E 65 73     i:=i+1 TO Lines
00CD90:  50 65 72 57 69 6E 64 6F 77 20 44 4F 0D 0A 09 09    PerWindow DO....
00CDA0:  09 09 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 28    ..ScreenControl(
00CDB0:  44 65 6C 45 6F 6C 29 3B 0D 0A 09 09 09 09 57 72    DelEol);......Wr
00CDC0:  69 74 65 4C 6E 3B 0D 0A 09 09 09 09 45 4E 44 3B    iteLn;......END;
00CDD0:  0D 0A 09 09 09 45 58 49 54 0D 0A 09 09 09 45 4E    .....EXIT.....EN
00CDE0:  44 0D 0A 09 09 45 4E 44 3B 28 2A 4C 4F 4F 50 2A    D....END;(*LOOP*
00CDF0:  29 0D 0A 09 45 4E 44 20 44 69 73 70 6C 61 79 46    )...END DisplayF
00CE00:  20 31 32 38 3B 20 28 2A 62 6C 6F 63 6B 20 74 6F     128; (*block to
00CE10:  20 72 65 61 64 2A 29 0D 0A 09 09 69 3A 3D 69 20     read*)....i:=i 
00CE20:  2D 20 31 32 38 2A 6A 3B 20 28 2A 6F 66 66 73 65    - 128*j; (*offse
00CE30:  74 20 6F 66 20 66 69 72 73 74 20 63 68 61 72 61    t of first chara
00CE40:  63 74 65 72 20 69 6E 20 62 6C 6F 63 6B 2A 29 0D    cter in block*).
00CE50:  0A 09 09 52 65 61 64 42 6C 6F 63 6B 28 66 2C 41    ...ReadBlock(f,A
00CE60:  44 52 28 62 29 2C 6A 2B 32 2C 31 32 38 2C 72 65    DR(b),j+2,128,re
00CE70:  70 6C 79 29 3B 0D 0A 09 09 46 4F 52 20 6B 3A 3D    ply);....FOR k:=
00CE80:  30 20 54 4F 20 4C 65 6E 67 74 68 2D 31 20 44 4F    0 TO Length-1 DO
00CE90:  0D 0A 09 09 09 49 46 20 69 3D 31 32 38 20 54 48    .....IF i=128 TH
00CEA0:  45 4E 20 0D 0A 09 09 09 09 49 4E 43 28 6A 29 3B    EN ......INC(j);
00CEB0:  0D 0A 09 09 09 09 52 65 61 64 42 6C 6F 63 6B 28    ......ReadBlock(
00CEC0:  66 2C 41 44 52 28 62 29 2C 6A 2B 32 2C 31 32 38    f,ADR(b),j+2,128
00CED0:  2C 72 65 70 6C 79 29 20 0D 0A 09 09 09 09 69 3A    ,reply) ......i:
00CEE0:  3D 30 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09    =0;......END;...
00CEF0:  09 09 74 5B 6B 5D 3A 3D 62 5B 69 5D 3B 0D 0A 09    ..t[k]:=b[i];...
00CF00:  09 09 49 4E 43 28 69 29 3B 0D 0A 09 09 09 45 4E    ..INC(i);.....EN
00CF10:  44 3B 0D 0A 09 09 74 5B 4C 65 6E 67 74 68 5D 3A    D;....t[Length]:
00CF20:  3D 30 63 3B 0D 0A 09 09 57 72 69 74 65 53 74 72    =0c;....WriteStr
00CF30:  69 6E 67 28 74 29 3B 0D 0A 09 45 4C 53 45 0D 0A    ing(t);...ELSE..
00CF40:  09 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 20    ..WriteString(' 
00CF50:  43 6F 75 6C 64 20 6E 6F 74 20 6F 70 65 6E 20 65    Could not open e
00CF60:  72 72 6F 72 20 6D 65 73 73 61 67 65 73 20 66 69    rror messages fi
00CF70:  6C 65 27 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09    le');....END;...
00CF80:  62 6C 3A 3D 4C 61 62 65 6C 4F 70 28 46 69 6C 65    bl:=LabelOp(File
00CF90:  73 5B 43 75 72 72 65 6E 74 46 69 6C 65 5D 2C 46    s[CurrentFile],F
00CFA0:  41 4C 53 45 2C 43 48 52 28 45 72 72 6F 72 4F 72    ALSE,CHR(ErrorOr
00CFB0:  64 69 6E 61 6C 2B 30 62 30 68 29 29 3B 0D 0A 09    dinal+0b0h));...
00CFC0:  52 65 44 69 73 70 6C 61 79 3B 0D 0A 28 2A 09 44    ReDisplay;..(*.D
00CFD0:  69 73 70 6C 61 79 46 69 6C 65 28 46 69 6C 65 73    isplayFile(Files
00CFE0:  5B 43 75 72 72 65 6E 74 46 69 6C 65 5D 2C 43 75    [CurrentFile],Cu
00CFF0:  72 72 65 6E 74 57 69 6E 64 6F 77 2C 54 68 69 73    rrentWindow,This
00D000:  69 6C 65 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20    ile;..PROCEDURE 
00D010:  44 69 73 70 6C 61 79 45 72 72 6F 72 3B 0D 0A 0D    DisplayError;...
00D020:  0A 28 2A 09 54 68 65 20 65 72 72 6F 72 20 6D 65    .(*.The error me
00D030:  73 73 61 67 65 20 66 69 6C 65 20 63 6F 6E 74 61    ssage file conta
00D040:  69 6E 73 20 74 68 65 20 6D 65 73 73 61 67 65 73    ins the messages
00D050:  2C 20 0D 0A 0D 0A 09 54 68 65 20 66 69 72 73 74    , .....The first
00D060:  20 74 77 6F 20 62 6C 6F 63 6B 73 20 67 69 76 65     two blocks give
00D070:  20 74 68 65 20 6C 65 6E 67 74 68 73 20 6F 66 20     the lengths of 
00D080:  74 68 65 20 65 72 72 6F 72 20 6D 65 73 73 61 67    the error messag
00D090:  65 73 0D 0A 09 54 68 65 20 72 65 6D 61 69 6E 69    es...The remaini
00D0A0:  6E 67 20 62 6C 6F 63 6B 73 20 67 69 76 65 20 74    ng blocks give t
00D0B0:  68 65 20 74 65 78 74 20 6F 66 20 74 68 65 20 65    he text of the e
00D0C0:  72 72 6F 72 20 6D 65 73 73 61 67 65 73 20 2A 29    rror messages *)
00D0D0:  0D 0A 54 59 50 45 09 54 65 78 74 3D 41 52 52 41    ..TYPE.Text=ARRA
00D0E0:  59 5B 30 2E 2E 36 33 5D 20 4F 46 20 43 48 41 52    Y[0..63] OF CHAR
00D0F0:  3B 0D 0A 0D 0A 56 41 52 09 66 3A 46 49 4C 45 3B    ;....VAR.f:FILE;
00D100:  09 09 09 28 2A 46 49 4C 45 20 69 73 20 61 20 74    ...(*FILE is a t
00D110:  79 70 65 20 65 78 70 6F 72 74 65 64 20 66 72 6F    ype exported fro
00D120:  6D 20 74 68 65 20 6D 6F 64 75 6C 65 20 46 69 6C    m the module Fil
00D130:  65 73 2A 29 0D 0A 0D 0A 09 62 3A 41 52 52 41 59    es*).....b:ARRAY
00D140:  20 5B 30 2E 2E 31 32 37 5D 20 4F 46 20 43 48 41     [0..127] OF CHA
00D150:  52 3B 0D 0A 09 69 2C 6A 2C 6B 2C 4C 65 6E 67 74    R;...i,j,k,Lengt
00D160:  68 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 74 3A    h:CARDINAL;...t:
00D170:  54 65 78 74 3B 0D 0A 09 45 72 72 6F 72 4E 75 6D    Text;...ErrorNum
00D180:  62 65 72 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09    ber:CARDINAL;...
00D190:  72 65 70 6C 79 3A 49 4E 54 45 47 45 52 3B 0D 0A    reply:INTEGER;..
00D1A0:  09 62 6C 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 50 52    .bl:BOOLEAN;..PR
00D1B0:  4F 43 45 44 55 52 45 20 43 6F 75 6E 74 28 6B 3A    OCEDURE Count(k:
00D1C0:  43 41 52 44 49 4E 41 4C 29 3A 43 41 52 44 49 4E    CARDINAL):CARDIN
00D1D0:  41 4C 3B 0D 0A 56 41 52 09 69 3A 43 41 52 44 49    AL;..VAR.i:CARDI
00D1E0:  4E 41 4C 3B 0D 0A 42 45 47 49 4E 0D 0A 09 69 3A    NAL;..BEGIN...i:
00D1F0:  3D 30 3B 0D 0A 09 49 46 20 6B 3D 30 20 54 48 45    =0;...IF k=0 THE
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 C9 02 00 00 00 02    ......R.........
00D220:  0B 00 C5 02 00 00 00 02 0B 00 C1 02 00 00 00 02    ................
00D230:  0B 00 C6 02 00 00 00 02 0B 00 C2 02 00 00 00 02    ................
00D240:  0B 00 C7 02 00 00 00 02 0B 00 C3 02 00 00 00 02    ................
00D250:  0B 00 C8 02 00 00 00 02 0B 00 C4 02 00 00 00 02    ................
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:  61 6E 20 62 65 20 6F 70 65 6E 65 64 2A 29 0D 0A    an be opened*)..
00D310:  09 4C 6F 6F 6B 75 70 28 64 61 74 66 69 6C 65 2C    .Lookup(datfile,
00D320:  27 45 44 49 54 53 54 41 54 2E 44 41 54 20 27 2C    'EDITSTAT.DAT ',
00D330:  72 65 70 6C 79 29 3B 0D 0A 09 49 46 20 72 65 70    reply);...IF rep
00D340:  6C 79 3C 3E 30 20 54 48 45 4E 0D 0A 09 09 43 72    ly<>0 THEN....Cr
00D350:  65 61 74 65 28 64 61 74 66 69 6C 65 2C 27 45 44    eate(datfile,'ED
00D360:  49 54 53 54 41 54 2E 44 41 54 27 2C 72 65 70 6C    ITSTAT.DAT',repl
00D370:  79 29 3B 0D 0A 09 09 49 46 20 72 65 70 6C 79 3C    y);....IF reply<
00D380:  3E 30 20 54 48 45 4E 20 0D 0A 09 09 09 47 6F 74    >0 THEN .....Got
00D390:  6F 78 79 28 30 2C 53 63 72 65 65 6E 44 65 70 74    oxy(0,ScreenDept
00D3A0:  68 2D 31 29 3B 0D 0A 09 09 09 57 72 69 74 65 53    h-1);.....WriteS
00D3B0:  74 72 69 6E 67 28 27 20 43 6F 75 6C 64 20 6E 6F    tring(' Could no
00D3C0:  74 20 6F 70 65 6E 20 73 74 61 74 75 73 20 66 69    t open status fi
00D3D0:  6C 65 27 29 3B 0D 0A 09 09 09 6F 70 65 6E 65 64    le');.....opened
00D3E0:  3A 3D 46 41 4C 53 45 3B 0D 0A 09 09 09 45 4E 44    :=FALSE;.....END
00D3F0:  3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 42 6C 6F 63    ;....END;...Bloc
00D400:  6B 4E 6F 3A 3D 36 30 30 30 30 3B 09 28 2A 73 65    kNo:=60000;.(*se
00D410:  74 20 69 6D 70 6F 73 73 69 62 6C 79 20 62 69 67    t impossibly big
00D420:  2A 29 0D 0A 09 0D 0A 09 45 4E 44 20 45 64 69 74    *)......END Edit
00D430:  53 74 61 74 75 73 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A    Status..........
00D440:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00D450:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00D460:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00D470:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00D480:  64 6F 77 46 69 6C 65 5B 74 6F 5D 3A 3D 57 69 6E    dowFile[to]:=Win
00D490:  64 6F 77 46 69 6C 65 5B 66 72 6F 6D 5D 3B 0D 0A    dowFile[from];..
00D4A0:  09 62 3A 3D 4C 61 62 65 6C 4F 70 28 46 69 6C 65    .b:=LabelOp(File
00D4B0:  73 5B 57 69 6E 64 6F 77 46 69 6C 65 5B 74 6F 5D    s[WindowFile[to]
00D4C0:  5D 2C 54 52 55 45 2C 43 48 52 28 74 6F 29 29 3B    ],TRUE,CHR(to));
00D4D0:  0D 0A 09 45 4E 44 20 4D 6F 76 65 57 69 6E 64 6F    ...END MoveWindo
00D4E0:  77 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 45 6C    w;..PROCEDURE El
00D4F0:  69 64 65 57 69 6E 64 6F 77 28 57 69 6E 64 6F 77    ideWindow(Window
00D500:  63 6B 3D 28 42 79 74 65 73 50 65 72 42 6C 6F 63    ck=(BytesPerBloc
00D510:  6B 2D 54 53 49 5A 45 28 43 41 52 44 49 4E 41 4C    k-TSIZE(CARDINAL
00D520:  29 29 20 44 49 56 20 54 53 49 5A 45 28 46 69 6C    )) DIV TSIZE(Fil
00D530:  65 52 65 63 29 3B 0D 0A 09 46 69 6C 6C 53 69 7A    eRec);...FillSiz
00D540:  65 3D 42 79 74 65 73 50 65 72 42 6C 6F 63 6B 2D    e=BytesPerBlock-
00D550:  54 53 49 5A 45 28 43 41 52 44 49 4E 41 4C 29 2D    TSIZE(CARDINAL)-
00D560:  45 6E 74 72 69 65 73 50 65 72 42 6C 6F 63 6B 2A    EntriesPerBlock*
00D570:  54 53 49 5A 45 28 46 69 6C 65 52 65 63 29 3B 0D    TSIZE(FileRec);.
00D580:  0A 54 59 50 45 09 42 6C 6F 63 6B 3D 52 45 43 4F    .TYPE.Block=RECO
00D590:  52 44 0D 0A 09 09 45 6E 74 72 69 65 73 3A 43 41    RD....Entries:CA
00D5A0:  52 44 49 4E 41 4C 3B 09 28 2A 69 6E 20 74 68 69    RDINAL;.(*in thi
00D5B0:  73 20 62 6C 6F 63 6B 2A 29 0D 0A 09 09 46 69 6C    s block*)....Fil
00D5C0:  65 45 6E 74 72 79 3A 41 52 52 41 59 5B 30 2E 2E    eEntry:ARRAY[0..
00D5D0:  45 6E 74 72 69 65 73 50 65 72 42 6C 6F 63 6B 2D    EntriesPerBlock-
00D5E0:  31 5D 20 4F 46 20 46 69 6C 65 52 65 63 3B 0D 0A    1] OF FileRec;..
00D5F0:  09 09 46 69 6C 6C 65 72 3A 41 52 52 41 59 5B 31    ..Filler:ARRAY[1
00D600:  2E 2E 46 69 6C 6C 53 69 7A 65 5D 20 4F 46 20 43    ..FillSize] OF C
00D610:  48 41 52 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 0D 0A    HAR;....END;....
00D620:  56 41 52 09 64 61 74 66 69 6C 65 3A 46 49 4C 45    VAR.datfile:FILE
00D630:  3B 0D 0A 09 42 6C 6F 63 6B 4E 6F 3A 43 41 52 44    ;...BlockNo:CARD
00D640:  49 4E 41 4C 3B 0D 0A 09 45 6E 74 72 79 4E 6F 3A    INAL;...EntryNo:
00D650:  43 41 52 44 49 4E 41 4C 3B 0D 0A 09 42 75 66 66    CARDINAL;...Buff
00D660:  65 72 3A 42 6C 6F 63 6B 3B 0D 0A 09 66 3A 46 49    er:Block;...f:FI
00D670:  4C 45 3B 0D 0A 09 72 65 70 6C 79 3A 49 4E 54 45    LE;...reply:INTE
00D680:  47 45 52 3B 0D 0A 09 6F 70 65 6E 65 64 3A 42 4F    GER;...opened:BO
00D690:  4F 4C 45 41 4E 3B 0D 0A 09 63 68 3A 43 48 41 52    OLEAN;...ch:CHAR
00D6A0:  3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 57 72 69    ;..PROCEDURE Wri
00D6B0:  74 65 46 69 6C 65 3B 0D 0A 42 45 47 49 4E 0D 0A    teFile;..BEGIN..
00D6C0:  09 53 65 74 42 6C 6F 63 6B 28 64 61 74 66 69 6C    .SetBlock(datfil
00D6D0:  65 2C 42 6C 6F 63 6B 4E 6F 29 3B 0D 0A 09 53 65    e,BlockNo);...Se
00D6E0:  71 57 72 69 74 65 42 6C 6F 63 6B 28 64 61 74 66    qWriteBlock(datf
00D6F0:  69 6C 65 2C 41 44 52 28 42 75 66 66 65 72 29 2C    ile,ADR(Buffer),
00D700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D900:  42 79 74 65 73 50 65 72 42 6C 6F 63 6B 2C 72 65    BytesPerBlock,re
00D910:  70 6C 79 29 3B 0D 0A 09 43 6C 6F 73 65 28 64 61    ply);...Close(da
00D920:  74 66 69 6C 65 29 3B 0D 0A 09 4C 6F 6F 6B 75 70    tfile);...Lookup
00D930:  28 64 61 74 66 69 6C 65 2C 27 45 44 49 54 53 54    (datfile,'EDITST
00D940:  41 54 2E 44 41 54 20 27 2C 72 65 70 6C 79 29 3B    AT.DAT ',reply);
00D950:  0D 0A 09 45 4E 44 20 57 72 69 74 65 46 69 6C 65    ...END WriteFile
00D960:  3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 4D    ;....PROCEDURE M
00D970:  61 6B 65 45 6E 74 72 79 3B 0D 0A 42 45 47 49 4E    akeEntry;..BEGIN
00D980:  0D 0A 09 57 49 54 48 20 42 75 66 66 65 72 2E 46    ...WITH Buffer.F
00D990:  69 6C 65 45 6E 74 72 79 5B 45 6E 74 72 79 4E 6F    ileEntry[EntryNo
00D9A0:  5D 20 44 4F 0D 0A 09 09 46 69 6C 65 66 6E 3A 3D    ] DO....Filefn:=
00D9B0:  66 2E 66 2E 66 63 62 66 6E 3B 0D 0A 09 09 46 69    f.f.fcbfn;....Fi
00D9C0:  6C 65 66 74 3A 3D 66 2E 66 2E 66 63 62 66 74 3B    left:=f.f.fcbft;
00D9D0:  0D 0A 09 09 46 69 6C 65 50 6F 73 3A 3D 30 3B 0D    ....FilePos:=0;.
00D9E0:  0A 09 09 45 4E 44 3B 0D 0A 09 57 72 69 74 65 46    ...END;...WriteF
00D9F0:  69 6C 65 3B 0D 0A 09 45 4E 44 20 4D 61 6B 65 45    ile;...END MakeE
00DA00:  6E 74 72 79 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55    ntry;....PROCEDU
00DA10:  52 45 20 45 78 61 6D 69 6E 65 42 6C 6F 63 6B 3B    RE ExamineBlock;
00DA20:  0D 0A 42 45 47 49 4E 0D 0A 09 45 6E 74 72 79 4E    ..BEGIN...EntryN
00DA30:  6F 3A 3D 30 3B 0D 0A 09 57 48 49 4C 45 20 28 45    o:=0;...WHILE (E
00DA40:  6E 74 72 79 4E 6F 3C 42 75 66 66 65 72 2E 45 6E    ntryNo<Buffer.En
00DA50:  74 72 69 65 73 29 20 0D 0A 09 20 20 20 20 41 4E    tries) ...    AN
00DA60:  44 20 28 20 20 20 28 42 75 66 66 65 72 2E 46 69    D (   (Buffer.Fi
00DA70:  6C 65 45 6E 74 72 79 5B 45 6E 74 72 79 4E 6F 5D    leEntry[EntryNo]
00DA80:  2E 46 69 6C 65 66 6E 3C 3E 66 2E 66 2E 66 63 62    .Filefn<>f.f.fcb
00DA90:  66 6E 29 0D 0A 09 09 20 20 4F 52 20 28 42 75 66    fn)....  OR (Buf
00DAA0:  66 65 72 2E 46 69 6C 65 45 6E 74 72 79 5B 45 6E    fer.FileEntry[En
00DAB0:  74 72 79 4E 6F 5D 2E 46 69 6C 65 66 74 3C 3E 66    tryNo].Fileft<>f
00DAC0:  2E 66 2E 66 63 62 66 74 29 29 20 44 4F 0D 0A 09    .f.fcbft)) DO...
00DAD0:  09 49 4E 43 28 45 6E 74 72 79 4E 6F 29 3B 0D 0A    .INC(EntryNo);..
00DAE0:  09 09 45 4E 44 3B 0D 0A 09 49 46 20 45 6E 74 72    ..END;...IF Entr
00DAF0:  79 4E 6F 3E 3D 42 75 66 66 65 72 2E 45 6E 74 72    yNo>=Buffer.Entr
00DB00:  44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C    DEFINITION MODUL
00DB10:  45 20 45 64 69 74 53 74 61 74 75 73 3B 0D 0A 0D    E EditStatus;...
00DB20:  0A 28 2A 09 53 61 76 65 2F 72 65 74 75 72 6E 20    .(*.Save/return 
00DB30:  65 64 69 74 20 73 74 61 74 75 73 20 66 6F 72 20    edit status for 
00DB40:  61 20 66 69 6C 65 0D 0A 0D 0A 09 54 68 65 20 66    a file.....The f
00DB50:  69 6C 65 20 45 44 49 54 53 54 41 54 2E 44 41 54    ile EDITSTAT.DAT
00DB60:  20 6F 6E 20 74 68 65 20 64 65 66 61 75 6C 74 20     on the default 
00DB70:  64 72 69 76 65 20 69 73 20 61 6C 77 61 79 73 20    drive is always 
00DB80:  75 73 65 64 0D 0A 09 66 6F 72 20 65 64 69 74 20    used...for edit 
00DB90:  73 74 61 74 69 69 2A 29 0D 0A 46 52 4F 4D 20 46    statii*)..FROM F
00DBA0:  69 6C 65 73 20 20 49 4D 50 4F 52 54 20 46 49 4C    iles  IMPORT FIL
00DBB0:  45 3B 0D 0A 46 52 4F 4D 09 43 50 4D 20 49 4D 50    E;..FROM.CPM IMP
00DBC0:  4F 52 54 20 61 6C 66 61 2C 65 78 74 65 6E 3B 0D    ORT alfa,exten;.
00DBD0:  0A 50 52 4F 43 45 44 55 52 45 20 47 65 74 50 6F    .PROCEDURE GetPo
00DBE0:  73 69 74 69 6F 6E 28 46 6E 3A 46 49 4C 45 29 3A    sition(Fn:FILE):
00DBF0:  43 41 52 44 49 4E 41 4C 3B 0D 0A 0D 0A 28 2A 09    CARDINAL;....(*.
00DC00:  67 65 74 20 66 69 6C 65 20 70 6F 73 69 74 69 6F    get file positio
00DC10:  6E 20 28 63 68 61 72 61 63 74 65 72 20 6E 75 6D    n (character num
00DC20:  62 65 72 29 2A 29 0D 0A 0D 0A 50 52 4F 43 45 44    ber)*)....PROCED
00DC30:  55 52 45 20 53 65 74 50 6F 73 69 74 69 6F 6E 28    URE SetPosition(
00DC40:  46 6E 3A 46 49 4C 45 3B 70 6F 73 3A 43 41 52 44    Fn:FILE;pos:CARD
00DC50:  49 4E 41 4C 29 3B 0D 0A 0D 0A 28 2A 09 73 65 74    INAL);....(*.set
00DC60:  20 66 69 6C 65 20 70 6F 73 69 74 69 6F 6E 2A 29     file position*)
00DC70:  0D 0A 45 4E 44 20 45 64 69 74 53 74 61 74 75 73    ..END EditStatus
00DC80:  2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00DC90:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00DCA0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00DCB0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00DCC0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00DCD0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00DCE0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00DCF0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00DD00:  69 65 73 20 54 48 45 4E 0D 0A 09 09 49 46 20 42    ies THEN....IF B
00DD10:  75 66 66 65 72 2E 45 6E 74 72 69 65 73 3C 48 49    uffer.Entries<HI
00DD20:  47 48 28 42 75 66 66 65 72 2E 46 69 6C 65 45 6E    GH(Buffer.FileEn
00DD30:  74 72 79 29 20 54 48 45 4E 0D 0A 09 09 09 49 4E    try) THEN.....IN
00DD40:  43 28 42 75 66 66 65 72 2E 45 6E 74 72 69 65 73    C(Buffer.Entries
00DD50:  29 3B 0D 0A 09 09 09 4D 61 6B 65 45 6E 74 72 79    );.....MakeEntry
00DD60:  3B 0D 0A 09 09 45 4C 53 45 09 45 6E 74 72 79 4E    ;....ELSE.EntryN
00DD70:  6F 3A 3D 36 30 30 30 30 20 45 4E 44 3B 09 0D 0A    o:=60000 END;...
00DD80:  09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 45 78 61    ..END;...END Exa
00DD90:  6D 69 6E 65 42 6C 6F 63 6B 3B 0D 0A 50 52 4F 43    mineBlock;..PROC
00DDA0:  45 44 55 52 45 20 53 65 61 72 63 68 3B 0D 0A 0D    EDURE Search;...
00DDB0:  0A 28 2A 09 46 69 6E 64 20 65 6E 74 72 79 20 2D    .(*.Find entry -
00DDC0:  20 63 72 65 61 74 65 20 65 6E 74 72 79 20 69 66     create entry if
00DDD0:  20 6E 65 63 63 65 73 73 61 72 79 2A 29 0D 0A 42     neccessary*)..B
00DDE0:  45 47 49 4E 0D 0A 09 49 46 20 42 6C 6F 63 6B 4E    EGIN...IF BlockN
00DDF0:  6F 3C 36 30 30 30 30 20 54 48 45 4E 20 45 78 61    o<60000 THEN Exa
00DE00:  6D 69 6E 65 42 6C 6F 63 6B 0D 0A 09 45 4C 53 45    mineBlock...ELSE
00DE10:  20 45 6E 74 72 79 4E 6F 3A 3D 36 30 30 30 30 20     EntryNo:=60000 
00DE20:  45 4E 44 3B 0D 0A 09 49 46 20 45 6E 74 72 79 4E    END;...IF EntryN
00DE30:  6F 3D 36 30 30 30 30 20 54 48 45 4E 0D 0A 09 09    o=60000 THEN....
00DE40:  53 65 74 42 6C 6F 63 6B 28 64 61 74 66 69 6C 65    SetBlock(datfile
00DE50:  2C 30 29 3B 0D 0A 09 09 42 6C 6F 63 6B 4E 6F 3A    ,0);....BlockNo:
00DE60:  3D 30 0D 0A 09 09 45 4E 44 3B 0D 0A 09 57 48 49    =0....END;...WHI
00DE70:  4C 45 20 45 6E 74 72 79 4E 6F 3D 36 30 30 30 30    LE EntryNo=60000
00DE80:  20 44 4F 0D 0A 09 09 53 65 71 52 65 61 64 42 6C     DO....SeqReadBl
00DE90:  6F 63 6B 28 64 61 74 66 69 6C 65 2C 41 44 52 28    ock(datfile,ADR(
00DEA0:  42 75 66 66 65 72 29 2C 42 79 74 65 73 50 65 72    Buffer),BytesPer
00DEB0:  42 6C 6F 63 6B 2C 72 65 70 6C 79 29 3B 0D 0A 09    Block,reply);...
00DEC0:  09 49 46 20 72 65 70 6C 79 3C 3E 42 79 74 65 73    .IF reply<>Bytes
00DED0:  50 65 72 42 6C 6F 63 6B 20 54 48 45 4E 0D 0A 09    PerBlock THEN...
00DEE0:  09 09 42 75 66 66 65 72 2E 45 6E 74 72 69 65 73    ..Buffer.Entries
00DEF0:  3A 3D 31 3B 0D 0A 09 09 09 45 6E 74 72 79 4E 6F    :=1;.....EntryNo
00DF00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DF10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DF20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DF30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DF40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DF50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DF60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DF70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DF80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DF90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DFA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DFB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DFC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DFD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DFE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DFF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E0A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E0B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E0C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E0D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E0E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E0F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00E100:  3A 3D 30 3B 0D 0A 09 09 09 4D 61 6B 65 45 6E 74    :=0;.....MakeEnt
00E110:  72 79 3B 0D 0A 09 09 45 4C 53 45 09 0D 0A 09 09    ry;....ELSE.....
00E120:  09 45 78 61 6D 69 6E 65 42 6C 6F 63 6B 3B 0D 0A    .ExamineBlock;..
00E130:  09 09 09 45 4E 44 3B 0D 0A 09 09 49 46 20 45 6E    ...END;....IF En
00E140:  74 72 79 4E 6F 3D 36 30 30 30 30 20 54 48 45 4E    tryNo=60000 THEN
00E150:  20 49 4E 43 28 42 6C 6F 63 6B 4E 6F 29 20 45 4E     INC(BlockNo) EN
00E160:  44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E 44    D;....END;...END
00E170:  20 53 65 61 72 63 68 3B 0D 0A 09 09 0D 0A 0D 0A     Search;........
00E180:  50 52 4F 43 45 44 55 52 45 20 47 65 74 50 6F 73    PROCEDURE GetPos
00E190:  69 74 69 6F 6E 28 46 6E 3A 46 49 4C 45 29 3A 43    ition(Fn:FILE):C
00E1A0:  41 52 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 4E 0D    ARDINAL;..BEGIN.
00E1B0:  0A 09 66 3A 3D 46 6E 3B 0D 0A 09 49 46 20 6F 70    ..f:=Fn;...IF op
00E1C0:  65 6E 65 64 20 54 48 45 4E 0D 0A 09 09 53 65 61    ened THEN....Sea
00E1D0:  72 63 68 3B 0D 0A 09 09 52 45 54 55 52 4E 20 42    rch;....RETURN B
00E1E0:  75 66 66 65 72 2E 46 69 6C 65 45 6E 74 72 79 5B    uffer.FileEntry[
00E1F0:  45 6E 74 72 79 4E 6F 5D 2E 46 69 6C 65 50 6F 73    EntryNo].FilePos
00E200:  3B 0D 0A 09 45 4C 53 45 09 52 45 54 55 52 4E 20    ;...ELSE.RETURN 
00E210:  30 20 45 4E 44 3B 0D 0A 09 45 4E 44 20 47 65 74    0 END;...END Get
00E220:  50 6F 73 69 74 69 6F 6E 3B 0D 0A 0D 0A 50 52 4F    Position;....PRO
00E230:  43 45 44 55 52 45 20 53 65 74 50 6F 73 69 74 69    CEDURE SetPositi
00E240:  6F 6E 28 46 6E 3A 46 49 4C 45 3B 50 6F 73 3A 43    on(Fn:FILE;Pos:C
00E250:  41 52 44 49 4E 41 4C 29 3B 0D 0A 42 45 47 49 4E    ARDINAL);..BEGIN
00E260:  0D 0A 09 66 3A 3D 46 6E 3B 0D 0A 09 49 46 20 6F    ...f:=Fn;...IF o
00E270:  70 65 6E 65 64 20 54 48 45 4E 0D 0A 09 09 53 65    pened THEN....Se
00E280:  61 72 63 68 3B 0D 0A 09 09 42 75 66 66 65 72 2E    arch;....Buffer.
00E290:  46 69 6C 65 45 6E 74 72 79 5B 45 6E 74 72 79 4E    FileEntry[EntryN
00E2A0:  6F 5D 2E 46 69 6C 65 50 6F 73 3A 3D 50 6F 73 3B    o].FilePos:=Pos;
00E2B0:  0D 0A 09 09 57 72 69 74 65 46 69 6C 65 0D 0A 09    ....WriteFile...
00E2C0:  09 45 4E 44 0D 0A 09 45 4E 44 20 53 65 74 50 6F    .END...END SetPo
00E2D0:  73 69 74 69 6F 6E 3B 0D 0A 0D 0A 42 45 47 49 4E    sition;....BEGIN
00E2E0:  0D 0A 09 6F 70 65 6E 65 64 3A 3D 54 52 55 45 3B    ...opened:=TRUE;
00E2F0:  09 28 2A 61 73 73 75 6D 65 20 66 69 6C 65 20 63    .(*assume file c
00E300:  49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D    IMPLEMENTATION M
00E310:  4F 44 55 4C 45 20 45 64 69 74 53 74 61 74 75 73    ODULE EditStatus
00E320:  3B 0D 0A 0D 0A 28 2A 09 53 61 76 65 2F 72 65 74    ;....(*.Save/ret
00E330:  75 72 6E 20 65 64 69 74 20 73 74 61 74 75 73 20    urn edit status 
00E340:  66 6F 72 20 61 20 66 69 6C 65 0D 0A 0D 0A 09 54    for a file.....T
00E350:  68 65 20 66 69 6C 65 20 45 44 49 54 53 54 41 54    he file EDITSTAT
00E360:  2E 44 41 54 20 6F 6E 20 74 68 65 20 64 65 66 61    .DAT on the defa
00E370:  75 6C 74 20 64 72 69 76 65 20 69 73 20 61 6C 77    ult drive is alw
00E380:  61 79 73 20 75 73 65 64 0D 0A 09 66 6F 72 20 65    ays used...for e
00E390:  64 69 74 20 73 74 61 74 69 69 2A 29 0D 0A 46 52    dit statii*)..FR
00E3A0:  4F 4D 20 46 69 6C 65 73 20 49 4D 50 4F 52 54 20    OM Files IMPORT 
00E3B0:  4C 6F 6F 6B 75 70 2C 43 72 65 61 74 65 2C 43 6C    Lookup,Create,Cl
00E3C0:  6F 73 65 2C 53 65 71 52 65 61 64 42 6C 6F 63 6B    ose,SeqReadBlock
00E3D0:  2C 53 65 71 57 72 69 74 65 42 6C 6F 63 6B 2C 53    ,SeqWriteBlock,S
00E3E0:  65 74 42 6C 6F 63 6B 2C 0D 0A 09 09 43 6F 6E 76    etBlock,....Conv
00E3F0:  65 72 74 46 69 6C 65 4E 61 6D 65 3B 0D 0A 46 52    ertFileName;..FR
00E400:  4F 4D 20 53 63 72 65 65 6E 49 4F 20 49 4D 50 4F    OM ScreenIO IMPO
00E410:  52 54 20 47 6F 74 6F 78 79 2C 53 63 72 65 65 6E    RT Gotoxy,Screen
00E420:  44 65 70 74 68 3B 0D 0A 46 52 4F 4D 20 53 59 53    Depth;..FROM SYS
00E430:  54 45 4D 20 49 4D 50 4F 52 54 20 41 44 52 2C 54    TEM IMPORT ADR,T
00E440:  53 49 5A 45 3B 0D 0A 46 52 4F 4D 20 54 65 72 6D    SIZE;..FROM Term
00E450:  69 6E 61 6C 20 49 4D 50 4F 52 54 20 57 72 69 74    inal IMPORT Writ
00E460:  65 53 74 72 69 6E 67 3B 0D 0A 54 59 50 45 09 46    eString;..TYPE.F
00E470:  69 6C 65 52 65 63 3D 52 45 43 4F 52 44 0D 0A 09    ileRec=RECORD...
00E480:  09 46 69 6C 65 66 6E 3A 61 6C 66 61 3B 0D 0A 09    .Filefn:alfa;...
00E490:  09 46 69 6C 65 66 74 3A 65 78 74 65 6E 3B 0D 0A    .Fileft:exten;..
00E4A0:  09 09 46 69 6C 65 50 6F 73 3A 43 41 52 44 49 4E    ..FilePos:CARDIN
00E4B0:  41 4C 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 0D 0A 43    AL;....END;....C
00E4C0:  4F 4E 53 54 09 42 79 74 65 73 50 65 72 42 6C 6F    ONST.BytesPerBlo
00E4D0:  63 6B 3D 31 32 38 3B 09 28 2A 42 79 74 65 73 20    ck=128;.(*Bytes 
00E4E0:  70 65 72 20 64 69 73 63 20 62 6C 6F 63 6B 2A 29    per disc block*)
00E4F0:  0D 0A 09 45 6E 74 72 69 65 73 50 65 72 42 6C 6F    ...EntriesPerBlo
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 C9 02 00 00 00 02    ......R.........
00E520:  0C 00 C5 02 00 00 00 02 0C 00 C1 02 00 00 00 02    ................
00E530:  0C 00 C6 02 00 00 00 02 0C 00 C2 02 00 00 00 02    ................
00E540:  0C 00 C7 02 00 00 00 02 0C 00 C3 02 00 00 00 02    ................
00E550:  0C 00 C8 02 00 00 00 02 0C 00 C4 02 00 00 00 02    ................
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:  47 49 4E 0D 0A 09 49 46 20 49 6E 73 65 72 74 4D    GIN...IF InsertM
00E610:  6F 64 65 20 54 48 45 4E 20 0D 0A 09 09 49 6E 73    ode THEN ....Ins
00E620:  4F 6E 65 43 68 61 72 28 63 68 29 3B 0D 0A 09 45    OneChar(ch);...E
00E630:  4C 53 45 0D 0A 09 09 4F 76 65 72 57 72 69 74 65    LSE....OverWrite
00E640:  28 63 68 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09    (ch);....END;...
00E650:  45 4E 44 20 49 6E 73 43 68 61 72 3B 0D 0A 50 52    END InsChar;..PR
00E660:  4F 43 45 44 55 52 45 20 42 72 65 61 6B 4C 69 6E    OCEDURE BreakLin
00E670:  65 3B 0D 0A 42 45 47 49 4E 0D 0A 09 49 6E 73 4F    e;..BEGIN...InsO
00E680:  6E 65 43 68 61 72 28 30 64 78 29 3B 0D 0A 09 4C    neChar(0dx);...L
00E690:  65 66 74 3B 0D 0A 09 45 4E 44 20 42 72 65 61 6B    eft;...END Break
00E6A0:  4C 69 6E 65 3B 0D 0A 56 41 52 09 4C 65 6E 3A 43    Line;..VAR.Len:C
00E6B0:  41 52 44 49 4E 41 4C 3D 30 3B 0D 0A 09 52 65 70    ARDINAL=0;...Rep
00E6C0:  6C 61 63 65 53 74 72 69 6E 67 3A 41 52 52 41 59    laceString:ARRAY
00E6D0:  5B 30 2E 2E 36 30 5D 20 4F 46 20 43 48 41 52 3B    [0..60] OF CHAR;
00E6E0:  0D 0A 09 52 4C 65 6E 3A 49 4E 54 45 47 45 52 3B    ...RLen:INTEGER;
00E6F0:  0D 0A 50 52 4F 43 45 44 55 52 45 20 44 6F 46 69    ..PROCEDURE DoFi
00E700:  6E 64 3B 0D 0A 42 45 47 49 4E 0D 0A 0D 0A 09 28    nd;..BEGIN.....(
00E710:  2A 20 74 68 65 20 70 61 73 73 69 6E 67 20 6F 66    * the passing of
00E720:  20 74 68 65 20 62 61 63 6B 77 61 72 64 73 20 73     the backwards s
00E730:  74 61 74 75 73 20 69 73 20 61 20 72 65 61 6C 20    tatus is a real 
00E740:  6B 6C 75 64 67 65 0D 0A 09 20 20 20 77 68 69 63    kludge...   whic
00E750:  68 20 77 61 73 20 69 6E 74 72 6F 64 75 63 65 64    h was introduced
00E760:  20 61 73 20 61 20 71 75 69 63 6B 20 66 69 78 20     as a quick fix 
00E770:  77 68 69 6C 65 20 49 20 77 61 73 20 61 20 6C 6F    while I was a lo
00E780:  6E 67 0D 0A 09 20 20 20 77 61 79 20 66 72 6F 6D    ng...   way from
00E790:  20 68 6F 6D 65 2C 20 74 6F 20 61 76 6F 69 64 20     home, to avoid 
00E7A0:  68 61 76 69 6E 67 20 74 6F 20 75 70 64 61 74 65    having to update
00E7B0:  20 6D 79 20 77 6F 72 6B 20 64 69 73 63 73 0D 0A     my work discs..
00E7C0:  09 20 20 20 61 74 20 68 6F 6D 65 20 77 69 74 68    .   at home with
00E7D0:  20 74 6F 6F 20 6D 75 63 68 20 73 74 75 66 66 20     too much stuff 
00E7E0:  2A 29 0D 0A 0D 0A 09 49 46 20 4C 65 6E 3E 30 20    *).....IF Len>0 
00E7F0:  54 48 45 4E 20 0D 0A 09 09 49 46 20 42 61 63 6B    THEN ....IF Back
00E800:  63 72 6F 2C 52 65 61 64 41 43 68 61 72 2C 4D 61    cro,ReadAChar,Ma
00E810:  63 72 6F 2C 4C 65 61 72 6E 4D 61 63 72 6F 2C 50    cro,LearnMacro,P
00E820:  72 69 6E 74 4D 61 63 72 6F 73 2C 0D 0A 09 09 09    rintMacros,.....
00E830:  43 68 65 63 6B 49 6E 74 65 72 72 75 70 74 2C 46    CheckInterrupt,F
00E840:  6F 75 6E 64 3B 0D 0A 28 2A 09 41 63 74 20 6F 6E    ound;..(*.Act on
00E850:  20 63 6F 6D 6D 61 6E 64 73 20 65 6E 74 65 72 65     commands entere
00E860:  64 20 66 72 6F 6D 20 74 68 65 20 6B 65 79 62 6F    d from the keybo
00E870:  61 72 64 20 0D 0A 0D 0A 09 54 68 69 73 20 6D 6F    ard .....This mo
00E880:  64 75 6C 65 20 68 61 6E 64 6C 65 73 20 6B 65 79    dule handles key
00E890:  62 6F 61 72 64 20 64 65 73 70 61 74 63 68 20 64    board despatch d
00E8A0:  75 72 69 6E 67 20 66 69 6C 65 20 65 64 69 74 74    uring file editt
00E8B0:  69 6E 67 2A 29 0D 0A 0D 0A 54 59 50 45 09 54 61    ing*)....TYPE.Ta
00E8C0:  62 41 72 72 61 79 3D 41 52 52 41 59 20 5B 30 78    bArray=ARRAY [0x
00E8D0:  2E 2E 37 66 78 5D 20 4F 46 20 50 52 4F 43 3B 0D    ..7fx] OF PROC;.
00E8E0:  0A 09 54 61 62 6C 65 3D 50 4F 49 4E 54 45 52 20    ..Table=POINTER 
00E8F0:  54 4F 20 54 61 62 41 52 52 41 59 3B 0D 0A 56 41    TO TabARRAY;..VA
00E900:  52 09 0D 0A 09 63 68 3A 43 48 41 52 3B 0D 0A 09    R....ch:CHAR;...
00E910:  4D 61 69 6E 54 61 62 6C 65 3A 54 61 62 41 72 72    MainTable:TabArr
00E920:  61 79 3B 0D 0A 09 69 6E 74 65 72 70 72 65 74 69    ay;...interpreti
00E930:  6E 67 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 09 50 61    ng:BOOLEAN;...Pa
00E940:  72 56 61 6C 75 65 3A 49 4E 54 45 47 45 52 3D 30    rValue:INTEGER=0
00E950:  3B 0D 0A 09 47 72 6F 75 70 4F 66 43 6F 64 65 73    ;...GroupOfCodes
00E960:  3A 41 52 52 41 59 5B 31 2E 2E 33 30 5D 20 4F 46    :ARRAY[1..30] OF
00E970:  20 43 48 41 52 3B 0D 0A 09 47 72 6F 75 70 4C 65     CHAR;...GroupLe
00E980:  6E 2C 47 72 6F 75 70 50 6F 73 3A 43 41 52 44 49    n,GroupPos:CARDI
00E990:  4E 41 4C 3B 0D 0A 09 69 3A 43 41 52 44 49 4E 41    NAL;...i:CARDINA
00E9A0:  4C 3B 0D 0A 09 49 6E 73 65 72 74 4D 6F 64 65 3A    L;...InsertMode:
00E9B0:  42 4F 4F 4C 45 41 4E 3D 54 52 55 45 3B 0D 0A 09    BOOLEAN=TRUE;...
00E9C0:  4E 6F 42 65 6C 6C 3A 42 4F 4F 4C 45 41 4E 3D 46    NoBell:BOOLEAN=F
00E9D0:  41 4C 53 45 3B 0D 0A 09 42 61 63 6B 77 61 72 64    ALSE;...Backward
00E9E0:  73 3A 42 4F 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B    s:BOOLEAN=FALSE;
00E9F0:  0D 0A 50 52 4F 43 45 44 55 52 45 20 42 65 6C 6C    ..PROCEDURE Bell
00EA00:  44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C    DEFINITION MODUL
00EA10:  45 20 4B 65 79 62 6F 61 72 64 3B 0D 0A 0D 0A 0D    E Keyboard;.....
00EA20:  0A 28 2A 09 41 63 74 20 6F 6E 20 63 6F 6D 6D 61    .(*.Act on comma
00EA30:  6E 64 73 20 65 6E 74 65 72 65 64 20 66 72 6F 6D    nds entered from
00EA40:  20 74 68 65 20 6B 65 79 62 6F 61 72 64 20 0D 0A     the keyboard ..
00EA50:  0D 0A 09 54 68 69 73 20 6D 6F 64 75 6C 65 20 68    ...This module h
00EA60:  61 6E 64 6C 65 73 20 6B 65 79 62 6F 61 72 64 20    andles keyboard 
00EA70:  64 65 73 70 61 74 63 68 20 64 75 72 69 6E 67 20    despatch during 
00EA80:  66 69 6C 65 20 65 64 69 74 74 69 6E 67 2A 29 0D    file editting*).
00EA90:  0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 49 6E 74    ...PROCEDURE Int
00EAA0:  65 72 70 72 65 74 3B 0D 0A 0D 0A 28 2A 09 53 74    erpret;....(*.St
00EAB0:  61 72 74 20 6B 65 79 62 6F 61 72 64 20 69 6E 74    art keyboard int
00EAC0:  65 72 70 72 65 74 61 74 69 6F 6E 20 28 65 66 66    erpretation (eff
00EAD0:  65 63 74 69 76 65 6C 79 20 65 64 69 74 20 6D 6F    ectively edit mo
00EAE0:  64 65 29 2A 29 0D 0A 45 4E 44 20 4B 65 79 62 6F    de)*)..END Keybo
00EAF0:  61 72 64 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 00    ard.............
00EB00:  65 2C 52 65 61 64 4E 65 78 74 43 68 61 72 2C 45    e,ReadNextChar,E
00EB10:  72 72 6F 72 4C 69 73 74 2C 45 72 72 6F 72 43 6F    rrorList,ErrorCo
00EB20:  75 6E 74 2C 4C 61 62 65 6C 4F 70 3B 0D 0A 46 52    unt,LabelOp;..FR
00EB30:  4F 4D 09 45 64 69 74 43 6F 6E 74 20 49 4D 50 4F    OM.EditCont IMPO
00EB40:  52 54 20 4C 65 66 74 4D 61 72 67 69 6E 2C 46 69    RT LeftMargin,Fi
00EB50:  6C 65 73 2C 43 75 72 72 65 6E 74 57 69 6E 64 6F    les,CurrentWindo
00EB60:  77 2C 43 75 72 72 65 6E 74 46 69 6C 65 2C 54 68    w,CurrentFile,Th
00EB70:  69 73 78 2C 54 68 69 73 79 2C 0D 0A 09 09 09 63    isx,Thisy,.....c
00EB80:  75 72 78 2C 63 75 72 79 2C 52 65 44 69 73 70 6C    urx,cury,ReDispl
00EB90:  61 79 3B 0D 0A 46 52 4F 4D 20 09 49 6E 74 4C 6F    ay;..FROM .IntLo
00EBA0:  67 69 63 20 49 4D 50 4F 52 54 20 49 41 4E 44 3B    gic IMPORT IAND;
00EBB0:  0D 0A 46 52 4F 4D 09 46 69 6C 65 73 20 49 4D 50    ..FROM.Files IMP
00EBC0:  4F 52 54 20 4C 6F 6F 6B 75 70 2C 43 6C 6F 73 65    ORT Lookup,Close
00EBD0:  2C 46 49 4C 45 2C 52 65 61 64 42 6C 6F 63 6B 3B    ,FILE,ReadBlock;
00EBE0:  0D 0A 46 52 4F 4D 09 53 59 53 54 45 4D 20 49 4D    ..FROM.SYSTEM IM
00EBF0:  50 4F 52 54 20 41 44 52 3B 0D 0A 43 4F 4E 53 54    PORT ADR;..CONST
00EC00:  3B 0D 0A 0D 0A 28 2A 09 72 69 6E 67 20 74 68 65    ;....(*.ring the
00EC10:  20 62 65 6C 6C 20 2D 20 70 72 69 6D 61 72 69 6C     bell - primaril
00EC20:  6C 79 20 75 73 65 64 20 66 6F 72 20 75 6E 2D 61    ly used for un-a
00EC30:  73 73 69 67 6E 65 64 20 6B 65 79 73 2A 29 0D 0A    ssigned keys*)..
00EC40:  42 45 47 49 4E 0D 0A 09 49 46 20 4E 4F 54 20 4E    BEGIN...IF NOT N
00EC50:  6F 42 65 6C 6C 20 54 48 45 4E 0D 0A 09 09 52 69    oBell THEN....Ri
00EC60:  6E 67 42 65 6C 6C 3B 0D 0A 09 09 45 4E 44 3B 0D    ngBell;....END;.
00EC70:  0A 09 50 61 72 56 61 6C 75 65 3A 3D 30 3B 0D 0A    ..ParValue:=0;..
00EC80:  09 45 4E 44 20 42 65 6C 6C 3B 0D 0A 50 52 4F 43    .END Bell;..PROC
00EC90:  45 44 55 52 45 20 51 75 69 63 6B 3B 46 4F 52 57    EDURE Quick;FORW
00ECA0:  41 52 44 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20    ARD;..PROCEDURE 
00ECB0:  45 73 63 61 70 65 43 6F 75 6E 74 3B 0D 0A 0D 0A    EscapeCount;....
00ECC0:  28 2A 09 65 73 63 61 70 65 20 63 68 61 72 61 63    (*.escape charac
00ECD0:  74 65 72 20 70 72 6F 63 65 73 73 69 6E 67 0D 0A    ter processing..
00ECE0:  0D 0A 09 69 66 20 66 6F 6C 6C 6F 77 65 64 20 62    ...if followed b
00ECF0:  79 20 6E 75 6D 62 65 72 2C 20 72 65 70 65 61 74    y number, repeat
00ED00:  73 20 6E 65 78 74 20 6B 65 79 20 67 69 76 65 6E    s next key given
00ED10:  20 6E 75 6D 62 65 72 20 6F 66 20 74 69 6D 65 73     number of times
00ED20:  0D 0A 2A 29 0D 0A 56 41 52 09 69 3A 49 4E 54 45    ..*)..VAR.i:INTE
00ED30:  47 45 52 3B 0D 0A 42 45 47 49 4E 0D 0A 09 50 61    GER;..BEGIN...Pa
00ED40:  72 56 61 6C 75 65 3A 3D 30 3B 0D 0A 09 4C 4F 4F    rValue:=0;...LOO
00ED50:  50 0D 0A 09 09 49 46 20 28 63 68 3E 3D 27 30 27    P....IF (ch>='0'
00ED60:  29 20 41 4E 44 20 28 63 68 3C 3D 27 39 27 29 20    ) AND (ch<='9') 
00ED70:  54 48 45 4E 0D 0A 09 09 09 50 61 72 56 61 6C 75    THEN.....ParValu
00ED80:  65 3A 3D 31 30 2A 50 61 72 56 61 6C 75 65 2B 28    e:=10*ParValue+(
00ED90:  4F 52 44 28 63 68 29 2D 4F 52 44 28 27 30 27 29    ORD(ch)-ORD('0')
00EDA0:  29 0D 0A 09 09 45 4C 53 45 20 0D 0A 09 09 09 45    )....ELSE .....E
00EDB0:  58 49 54 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09    XIT.....END;....
00EDC0:  52 65 61 64 41 43 68 61 72 28 63 68 29 3B 0D 0A    ReadAChar(ch);..
00EDD0:  09 09 45 4E 44 3B 28 2A 4C 4F 4F 50 2A 29 0D 0A    ..END;(*LOOP*)..
00EDE0:  0D 0A 09 49 46 20 28 63 68 3D 31 62 78 29 20 4F    ...IF (ch=1bx) O
00EDF0:  52 20 28 63 68 3D 30 61 78 29 20 54 48 45 4E 20    R (ch=0ax) THEN 
00EE00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EE10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EE20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EE30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EE40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EE50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EE60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EE70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EE80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EE90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EEA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EEB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EEC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EEE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EEF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EF00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EF10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EF20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EF30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EF40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EF50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EF60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EF70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EF80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EF90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EFA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EFB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EFC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EFD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EFE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00EFF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00F000:  28 2A 65 73 63 61 70 65 20 73 6F 6D 65 74 68 69    (*escape somethi
00F010:  6E 67 2A 29 0D 0A 09 09 52 65 61 64 41 43 68 61    ng*)....ReadACha
00F020:  72 28 63 68 29 3B 0D 0A 09 09 4D 61 63 72 6F 28    r(ch);....Macro(
00F030:  63 68 2C 50 61 72 56 61 6C 75 65 29 3B 0D 0A 09    ch,ParValue);...
00F040:  09 50 61 72 56 61 6C 75 65 3A 3D 30 3B 0D 0A 09    .ParValue:=0;...
00F050:  45 4C 53 49 46 20 63 68 3D 31 31 78 20 54 48 45    ELSIF ch=11x THE
00F060:  4E 20 51 75 69 63 6B 0D 0A 09 45 4C 53 45 0D 0A    N Quick...ELSE..
00F070:  09 09 46 6F 75 6E 64 3A 3D 54 52 55 45 3B 20 28    ..Found:=TRUE; (
00F080:  2A 53 65 74 20 66 61 6C 73 65 20 61 73 20 73 69    *Set false as si
00F090:  67 6E 20 6F 66 20 66 61 69 6C 75 72 65 20 2A 29    gn of failure *)
00F0A0:  0D 0A 09 09 57 48 49 4C 45 20 28 50 61 72 56 61    ....WHILE (ParVa
00F0B0:  6C 75 65 3E 30 29 20 41 4E 44 20 46 6F 75 6E 64    lue>0) AND Found
00F0C0:  20 44 4F 20 0D 0A 09 09 09 49 46 20 43 68 65 63     DO .....IF Chec
00F0D0:  6B 49 6E 74 65 72 72 75 70 74 28 29 20 54 48 45    kInterrupt() THE
00F0E0:  4E 20 50 61 72 56 61 6C 75 65 3A 3D 30 20 0D 0A    N ParValue:=0 ..
00F0F0:  09 09 09 45 4C 53 45 0D 0A 09 09 09 09 44 45 43    ...ELSE......DEC
00F100:  28 50 61 72 56 61 6C 75 65 29 3B 0D 0A 09 09 09    (ParValue);.....
00F110:  09 49 46 20 63 68 3E 43 48 52 28 31 32 37 29 20    .IF ch>CHR(127) 
00F120:  54 48 45 4E 20 63 68 3A 3D 43 48 52 28 4F 52 44    THEN ch:=CHR(ORD
00F130:  28 63 68 29 2D 31 32 38 29 20 45 4E 44 3B 0D 0A    (ch)-128) END;..
00F140:  09 09 09 09 4D 61 69 6E 54 61 62 6C 65 5B 63 68    ....MainTable[ch
00F150:  5D 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09    ];......END;....
00F160:  09 45 4E 44 3B 0D 0A 09 09 50 61 72 56 61 6C 75    .END;....ParValu
00F170:  65 3A 3D 30 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09    e:=0;....END;...
00F180:  45 4E 44 20 45 73 63 61 70 65 43 6F 75 6E 74 3B    END EscapeCount;
00F190:  0D 0A 50 52 4F 43 45 44 55 52 45 20 45 73 63 61    ..PROCEDURE Esca
00F1A0:  70 65 3B 0D 0A 56 41 52 20 53 61 76 65 42 61 63    pe;..VAR SaveBac
00F1B0:  6B 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 42 45 47 49    k:BOOLEAN;..BEGI
00F1C0:  4E 0D 0A 09 52 65 61 64 41 43 68 61 72 28 63 68    N...ReadAChar(ch
00F1D0:  29 3B 0D 0A 09 49 46 20 63 68 3D 27 2D 27 20 54    );...IF ch='-' T
00F1E0:  48 45 4E 0D 0A 09 09 42 61 63 6B 77 61 72 64 73    HEN....Backwards
00F1F0:  3A 3D 54 52 55 45 3B 0D 0A 09 09 52 65 61 64 41    :=TRUE;....ReadA
00F200:  28 2A 09 4B 65 79 62 6F 61 72 64 20 64 65 73 70    (*.Keyboard desp
00F210:  61 74 63 68 65 72 20 61 6E 64 20 73 6F 6D 65 20    atcher and some 
00F220:  65 64 69 74 69 6E 67 20 66 75 6E 63 74 69 6F 6E    editing function
00F230:  73 0D 0A 0D 0A 09 43 6F 70 79 72 69 67 68 74 20    s.....Copyright 
00F240:  28 43 29 20 44 61 76 65 20 4D 6F 6F 72 65 20 46    (C) Dave Moore F
00F250:  54 4C 20 4D 6F 64 75 6C 61 2D 32 20 31 39 38 36    TL Modula-2 1986
00F260:  0D 0A 0D 0A 09 4D 6F 64 69 66 69 63 61 74 69 6F    .....Modificatio
00F270:  6E 73 3A 0D 0A 09 09 32 30 20 4A 75 6C 79 20 38    ns:....20 July 8
00F280:  36 20 48 61 6E 64 6C 69 6E 67 20 6F 66 20 62 61    6 Handling of ba
00F290:  63 6B 77 61 72 64 73 20 63 68 61 6E 67 65 64 20    ckwards changed 
00F2A0:  73 6F 20 74 68 61 74 20 64 69 72 65 63 74 69 6F    so that directio
00F2B0:  6E 0D 0A 09 09 09 20 20 20 6F 66 20 66 69 6E 64    n.....   of find
00F2C0:  20 72 65 6D 61 69 6E 73 20 73 61 6D 65 20 75 6E     remains same un
00F2D0:  6C 65 73 73 20 65 78 70 6C 69 63 69 74 20 63 6F    less explicit co
00F2E0:  75 6E 74 20 65 6E 74 65 72 65 64 2E 0D 0A 09 09    unt entered.....
00F2F0:  09 20 20 20 54 68 69 73 20 61 6C 6C 6F 77 73 20    .   This allows 
00F300:  75 73 65 20 6F 66 20 6A 75 73 74 20 5E 4C 20 66    use of just ^L f
00F310:  6F 72 20 62 61 63 6B 77 61 72 64 73 20 73 65 61    or backwards sea
00F320:  72 63 68 65 73 0D 0A 0D 0A 2A 29 0D 0A 0D 0A 49    rches....*)....I
00F330:  4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D 4F    MPLEMENTATION MO
00F340:  44 55 4C 45 20 4B 65 79 62 6F 61 72 64 3B 0D 0A    DULE Keyboard;..
00F350:  0D 0A 46 52 4F 4D 09 53 63 72 65 65 6E 44 75 6D    ..FROM.ScreenDum
00F360:  6D 79 20 49 4D 50 4F 52 54 20 52 69 6E 67 42 65    my IMPORT RingBe
00F370:  6C 6C 2C 47 6F 74 6F 78 79 2C 43 6C 65 61 72 53    ll,Gotoxy,ClearS
00F380:  63 72 65 65 6E 2C 4F 75 74 70 75 74 54 6F 53 63    creen,OutputToSc
00F390:  72 65 65 6E 3B 0D 0A 46 52 4F 4D 09 45 64 69 74    reen;..FROM.Edit
00F3A0:  44 69 73 70 6C 61 79 20 49 4D 50 4F 52 54 20 45    Display IMPORT E
00F3B0:  72 72 6F 72 4D 65 73 73 61 67 65 2C 57 69 6E 64    rrorMessage,Wind
00F3C0:  6F 77 73 2C 44 69 73 70 6C 61 79 45 72 72 6F 72    ows,DisplayError
00F3D0:  2C 45 72 72 6F 72 4F 72 64 69 6E 61 6C 3B 0D 0A    ,ErrorOrdinal;..
00F3E0:  46 52 4F 4D 09 45 64 69 74 43 6F 6E 74 72 6F 6C    FROM.EditControl
00F3F0:  20 49 4D 50 4F 52 54 20 49 6E 73 4F 6E 65 43 68     IMPORT InsOneCh
00F400:  43 68 61 72 28 63 68 29 3B 0D 0A 09 09 45 73 63    Char(ch);....Esc
00F410:  61 70 65 43 6F 75 6E 74 3B 0D 0A 09 09 0D 0A 09    apeCount;.......
00F420:  45 4C 53 49 46 20 28 63 68 3E 3D 27 30 27 29 20    ELSIF (ch>='0') 
00F430:  41 4E 44 20 28 63 68 3C 3D 27 39 27 29 20 54 48    AND (ch<='9') TH
00F440:  45 4E 20 0D 0A 09 09 42 61 63 6B 77 61 72 64 73    EN ....Backwards
00F450:  3A 3D 46 41 4C 53 45 3B 0D 0A 09 09 45 73 63 61    :=FALSE;....Esca
00F460:  70 65 43 6F 75 6E 74 0D 0A 09 45 4C 53 49 46 20    peCount...ELSIF 
00F470:  63 68 3D 30 34 78 20 54 48 45 4E 20 44 65 66 4D    ch=04x THEN DefM
00F480:  61 63 72 6F 3B 52 65 64 69 73 70 6C 61 79 0D 0A    acro;Redisplay..
00F490:  09 45 4C 53 49 46 20 63 68 3D 30 63 78 20 54 48    .ELSIF ch=0cx TH
00F4A0:  45 4E 20 4C 65 61 72 6E 4D 61 63 72 6F 3B 52 65    EN LearnMacro;Re
00F4B0:  64 69 73 70 6C 61 79 0D 0A 09 45 4C 53 49 46 20    display...ELSIF 
00F4C0:  63 68 3D 31 30 78 20 54 48 45 4E 20 43 6C 65 61    ch=10x THEN Clea
00F4D0:  72 53 63 72 65 65 6E 3B 50 72 69 6E 74 4D 61 63    rScreen;PrintMac
00F4E0:  72 6F 73 3B 52 65 64 69 73 70 6C 61 79 0D 0A 09    ros;Redisplay...
00F4F0:  45 4C 53 45 20 4D 61 63 72 6F 28 63 68 2C 31 29    ELSE Macro(ch,1)
00F500:  20 45 4E 44 3B 0D 0A 09 45 4E 44 20 45 73 63 61     END;...END Esca
00F510:  70 65 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 45    pe;..PROCEDURE E
00F520:  6E 64 69 6E 74 65 72 70 72 65 74 3B 0D 0A 0D 0A    ndinterpret;....
00F530:  28 2A 09 45 6E 64 20 6B 65 79 62 6F 61 72 64 20    (*.End keyboard 
00F540:  69 6E 74 65 72 70 72 65 74 61 74 69 6F 6E 0D 0A    interpretation..
00F550:  0D 0A 09 4E 6F 74 65 20 74 68 61 74 20 74 68 69    ...Note that thi
00F560:  73 20 6D 6F 64 75 6C 65 20 63 61 6E 20 62 65 20    s module can be 
00F570:  61 73 73 69 67 6E 65 64 20 74 6F 20 61 20 6B 65    assigned to a ke
00F580:  79 20 73 6F 20 74 68 61 74 20 79 6F 75 20 63 61    y so that you ca
00F590:  6E 0D 0A 09 65 78 69 74 20 66 72 6F 6D 20 65 64    n...exit from ed
00F5A0:  69 74 20 6D 6F 64 65 20 67 72 61 63 65 66 75 6C    it mode graceful
00F5B0:  6C 79 0D 0A 2A 29 0D 0A 42 45 47 49 4E 0D 0A 09    ly..*)..BEGIN...
00F5C0:  69 6E 74 65 72 70 72 65 74 69 6E 67 3A 3D 46 41    interpreting:=FA
00F5D0:  4C 53 45 3B 0D 0A 09 45 4E 44 20 45 6E 64 69 6E    LSE;...END Endin
00F5E0:  74 65 72 70 72 65 74 3B 0D 0A 50 52 4F 43 45 44    terpret;..PROCED
00F5F0:  55 52 45 20 49 6E 73 43 68 61 72 3B 0D 0A 42 45    URE InsChar;..BE
00F600:  61 72 2C 44 65 6C 4F 6E 65 43 68 61 72 2C 44 65    ar,DelOneChar,De
00F610:  6C 54 6F 45 4F 4C 2C 44 65 6C 46 75 6C 6C 4C 69    lToEOL,DelFullLi
00F620:  6E 65 2C 0D 0A 09 09 09 20 20 20 4C 65 66 74 2C    ne,.....   Left,
00F630:  52 69 67 68 74 2C 44 6F 77 6E 2C 55 70 2C 55 70    Right,Down,Up,Up
00F640:  53 63 72 65 65 6E 2C 44 6F 77 6E 53 63 72 65 65    Screen,DownScree
00F650:  6E 2C 54 6F 70 2C 42 6F 74 74 6F 6D 2C 0D 0A 09    n,Top,Bottom,...
00F660:  09 09 20 20 20 43 75 72 72 65 6E 74 57 69 6E 64    ..   CurrentWind
00F670:  6F 77 2C 46 69 6C 65 73 4F 70 65 6E 65 64 2C 63    ow,FilesOpened,c
00F680:  75 72 78 2C 63 75 72 79 2C 43 68 61 6E 67 65 57    urx,cury,ChangeW
00F690:  69 6E 64 6F 77 2C 0D 0A 09 09 09 20 20 20 53 63    indow,.....   Sc
00F6A0:  72 6F 6C 6C 55 70 2C 53 63 72 6F 6C 6C 44 6F 77    rollUp,ScrollDow
00F6B0:  6E 2C 52 65 73 65 74 53 63 72 65 65 6E 50 6F 73    n,ResetScreenPos
00F6C0:  2C 0D 0A 09 09 09 20 20 20 54 6F 70 2C 42 6F 74    ,.....   Top,Bot
00F6D0:  74 6F 6D 2C 46 61 72 4C 65 66 74 2C 46 61 72 52    tom,FarLeft,FarR
00F6E0:  69 67 68 74 2C 46 69 6C 65 73 2C 53 65 61 72 63    ight,Files,Searc
00F6F0:  68 2C 4F 76 65 72 57 72 69 74 65 2C 20 0D 0A 09    h,OverWrite, ...
00F700:  09 09 20 20 20 46 69 6E 64 57 6F 72 64 2C 52 65    ..   FindWord,Re
00F710:  44 69 73 70 6C 61 79 2C 47 6F 54 6F 4C 61 62 65    Display,GoToLabe
00F720:  6C 2C 55 70 64 61 74 65 64 2C 43 75 72 72 65 6E    l,Updated,Curren
00F730:  74 46 69 6C 65 2C 0D 0A 09 09 09 20 20 20 54 68    tFile,.....   Th
00F740:  69 73 78 2C 54 68 69 73 79 2C 57 69 6E 64 6F 77    isx,Thisy,Window
00F750:  46 69 6C 65 2C 4D 6F 76 65 64 4F 4B 3B 0D 0A 46    File,MovedOK;..F
00F760:  52 4F 4D 09 4D 61 6B 65 45 64 69 74 20 49 4D 50    ROM.MakeEdit IMP
00F770:  4F 52 54 20 50 72 65 70 61 72 65 53 74 72 69 6E    ORT PrepareStrin
00F780:  67 2C 46 69 6E 64 53 74 72 69 6E 67 2C 4C 61 62    g,FindString,Lab
00F790:  65 6C 4F 70 2C 42 6C 6F 63 6B 43 6F 70 79 2C 42    elOp,BlockCopy,B
00F7A0:  6C 6F 63 6B 44 65 6C 2C 0D 0A 09 09 09 45 72 72    lockDel,.....Err
00F7B0:  6F 72 43 6F 75 6E 74 3B 0D 0A 46 52 4F 4D 09 44    orCount;..FROM.D
00F7C0:  6F 4D 65 6E 75 20 20 49 4D 50 4F 52 54 20 20 20    oMenu  IMPORT   
00F7D0:  20 20 47 65 74 53 74 72 69 6E 67 2C 52 65 64 69      GetString,Redi
00F7E0:  73 70 6C 61 79 3B 0D 0A 46 52 4F 4D 09 4D 61 63    splay;..FROM.Mac
00F7F0:  72 6F 73 09 49 4D 50 4F 52 54 09 44 65 66 4D 61    ros.IMPORT.DefMa
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 C9 02 00 00 00 02    ......R.........
00F820:  0D 00 C5 02 00 00 00 02 0D 00 C1 02 00 00 00 02    ................
00F830:  0D 00 C6 02 00 00 00 02 0D 00 C2 02 00 00 00 02    ................
00F840:  0D 00 C7 02 00 00 00 02 0D 00 C3 02 00 00 00 02    ................
00F850:  0D 00 C8 02 00 00 00 02 0D 00 C4 02 00 00 00 02    ................
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:  3D 4C 65 66 74 3B 09 09 28 2A 43 74 72 6C 20 48    =Left;..(*Ctrl H
00F910:  20 28 42 61 63 6B 73 70 61 63 65 29 2A 29 0D 0A     (Backspace)*)..
00F920:  09 4D 61 69 6E 54 61 62 6C 65 5B 31 61 78 5D 3A    .MainTable[1ax]:
00F930:  3D 53 63 72 6F 6C 6C 44 6F 77 6E 3B 09 28 2A 43    =ScrollDown;.(*C
00F940:  74 72 6C 20 5A 2A 29 0D 0A 09 4D 61 69 6E 54 61    trl Z*)...MainTa
00F950:  62 6C 65 5B 30 33 78 5D 3A 3D 44 6F 77 6E 53 63    ble[03x]:=DownSc
00F960:  72 65 65 6E 3B 09 28 2A 43 74 72 6C 20 43 2A 29    reen;.(*Ctrl C*)
00F970:  0D 0A 09 4D 61 69 6E 54 61 62 6C 65 5B 31 32 78    ...MainTable[12x
00F980:  5D 3A 3D 55 70 53 63 72 65 65 6E 3B 09 28 2A 43    ]:=UpScreen;.(*C
00F990:  74 72 6C 20 52 2A 29 0D 0A 09 4D 61 69 6E 54 61    trl R*)...MainTa
00F9A0:  62 6C 65 5B 31 34 78 5D 3A 3D 44 65 6C 57 6F 72    ble[14x]:=DelWor
00F9B0:  64 3B 09 28 2A 43 74 72 6C 20 54 2A 29 0D 0A 09    d;.(*Ctrl T*)...
00F9C0:  4D 61 69 6E 54 61 62 6C 65 5B 30 36 78 5D 3A 3D    MainTable[06x]:=
00F9D0:  46 6F 72 77 61 72 64 57 6F 72 64 3B 09 28 2A 43    ForwardWord;.(*C
00F9E0:  74 72 6C 20 46 2A 29 0D 0A 09 4D 61 69 6E 54 61    trl F*)...MainTa
00F9F0:  62 6C 65 5B 30 61 78 5D 3A 3D 45 73 63 61 70 65    ble[0ax]:=Escape
00FA00:  3B 09 09 28 2A 74 72 65 61 74 20 6C 69 6E 65 20    ;..(*treat line 
00FA10:  66 65 65 64 20 61 73 20 69 66 20 65 73 63 61 70    feed as if escap
00FA20:  65 2A 29 0D 0A 09 4D 61 69 6E 54 61 62 6C 65 5B    e*)...MainTable[
00FA30:  30 31 78 5D 3A 3D 42 61 63 6B 77 61 72 64 57 6F    01x]:=BackwardWo
00FA40:  72 64 3B 09 28 2A 43 74 72 6C 20 41 2A 29 0D 0A    rd;.(*Ctrl A*)..
00FA50:  09 4D 61 69 6E 54 61 62 6C 65 5B 31 31 78 5D 3A    .MainTable[11x]:
00FA60:  3D 51 75 69 63 6B 3B 09 09 28 2A 43 74 72 6C 20    =Quick;..(*Ctrl 
00FA70:  51 2A 29 0D 0A 09 4D 61 69 6E 54 61 62 6C 65 5B    Q*)...MainTable[
00FA80:  30 32 78 5D 3A 3D 57 69 6E 64 6F 77 3B 09 09 28    02x]:=Window;..(
00FA90:  2A 43 74 72 6C 20 42 2A 29 0D 0A 09 4D 61 69 6E    *Ctrl B*)...Main
00FAA0:  54 61 62 6C 65 5B 31 37 78 5D 3A 3D 53 63 72 6F    Table[17x]:=Scro
00FAB0:  6C 6C 55 70 3B 09 28 2A 43 74 72 6C 20 57 2A 29    llUp;.(*Ctrl W*)
00FAC0:  0D 0A 09 4D 61 69 6E 54 61 62 6C 65 5B 30 62 78    ...MainTable[0bx
00FAD0:  5D 3A 3D 44 65 66 4C 61 62 65 6C 3B 09 28 2A 43    ]:=DefLabel;.(*C
00FAE0:  74 72 6C 20 4B 2A 29 0D 0A 09 4D 61 69 6E 54 61    trl K*)...MainTa
00FAF0:  62 6C 65 5B 37 66 78 5D 3A 3D 44 65 6C 42 61 63    ble[7fx]:=DelBac
00FB00:  6F 45 72 72 6F 72 28 45 72 72 6F 72 4F 72 64 69    oError(ErrorOrdi
00FB10:  6E 61 6C 29 7C 0D 0A 09 09 27 30 27 2E 2E 27 39    nal)|....'0'..'9
00FB20:  27 3A 47 6F 74 6F 45 72 72 6F 72 28 4F 52 44 28    ':GotoError(ORD(
00FB30:  63 68 29 2D 4F 52 44 28 27 30 27 29 29 0D 0A 09    ch)-ORD('0'))...
00FB40:  09 45 4E 44 3B 0D 0A 09 45 4E 44 20 4D 6F 76 65    .END;...END Move
00FB50:  54 6F 45 72 72 6F 72 3B 0D 0A 50 52 4F 43 45 44    ToError;..PROCED
00FB60:  55 52 45 20 51 75 69 63 6B 3B 0D 0A 56 41 52 09    URE Quick;..VAR.
00FB70:  46 69 72 73 74 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A    First:BOOLEAN;..
00FB80:  42 45 47 49 4E 0D 0A 09 46 69 72 73 74 3A 3D 54    BEGIN...First:=T
00FB90:  52 55 45 3B 0D 0A 09 52 65 61 64 41 43 68 61 72    RUE;...ReadAChar
00FBA0:  28 63 68 29 3B 0D 0A 09 63 68 3A 3D 43 41 50 28    (ch);...ch:=CAP(
00FBB0:  63 68 29 3B 0D 0A 09 49 46 20 50 61 72 56 61 6C    ch);...IF ParVal
00FBC0:  75 65 3D 30 20 54 48 45 4E 20 50 61 72 56 61 6C    ue=0 THEN ParVal
00FBD0:  75 65 3A 3D 31 20 45 4E 44 3B 0D 0A 09 57 48 49    ue:=1 END;...WHI
00FBE0:  4C 45 20 50 61 72 56 61 6C 75 65 3E 30 20 44 4F    LE ParValue>0 DO
00FBF0:  0D 0A 09 20 20 43 41 53 45 20 63 68 20 4F 46 0D    ...  CASE ch OF.
00FC00:  0A 09 20 20 20 20 27 45 27 2C 30 35 78 3A 4D 6F    ..    'E',05x:Mo
00FC10:  76 65 54 6F 45 72 72 6F 72 7C 0D 0A 09 20 20 20    veToError|...   
00FC20:  20 27 59 27 2C 31 39 78 3A 44 65 6C 54 6F 45 4F     'Y',19x:DelToEO
00FC30:  4C 7C 0D 0A 09 20 20 20 20 27 44 27 2C 30 34 78    L|...    'D',04x
00FC40:  3A 46 61 72 52 69 67 68 74 7C 0D 0A 09 20 20 20    :FarRight|...   
00FC50:  20 27 53 27 2C 31 33 78 3A 46 61 72 4C 65 66 74     'S',13x:FarLeft
00FC60:  7C 0D 0A 09 20 20 20 20 27 52 27 2C 31 32 78 3A    |...    'R',12x:
00FC70:  54 6F 70 7C 0D 0A 09 20 20 20 20 27 43 27 2C 30    Top|...    'C',0
00FC80:  33 78 3A 42 6F 74 74 6F 6D 7C 0D 0A 09 20 20 20    3x:Bottom|...   
00FC90:  20 27 46 27 2C 30 36 78 3A 49 46 20 46 69 72 73     'F',06x:IF Firs
00FCA0:  74 20 54 48 45 4E 20 46 69 6E 64 20 45 4C 53 45    t THEN Find ELSE
00FCB0:  20 44 6F 46 69 6E 64 20 45 4E 44 7C 20 0D 0A 09     DoFind END| ...
00FCC0:  20 20 20 20 27 41 27 2C 30 31 78 3A 49 46 20 46        'A',01x:IF F
00FCD0:  69 72 73 74 20 54 48 45 4E 20 52 65 70 6C 61 63    irst THEN Replac
00FCE0:  65 20 45 4C 53 45 20 44 6F 46 69 6E 64 20 45 4E    e ELSE DoFind EN
00FCF0:  44 7C 0D 0A 09 20 20 20 20 27 47 27 2C 30 37 78    D|...    'G',07x
00FD00:  77 61 72 64 73 20 54 48 45 4E 20 46 6F 75 6E 64    wards THEN Found
00FD10:  3A 3D 53 65 61 72 63 68 28 52 65 70 6C 61 63 65    :=Search(Replace
00FD20:  53 74 72 69 6E 67 2C 52 4C 65 6E 2C 4C 65 6E 2B    String,RLen,Len+
00FD30:  31 32 38 29 0D 0A 09 09 45 4C 53 45 20 46 6F 75    128)....ELSE Fou
00FD40:  6E 64 3A 3D 53 65 61 72 63 68 28 52 65 70 6C 61    nd:=Search(Repla
00FD50:  63 65 53 74 72 69 6E 67 2C 52 4C 65 6E 2C 4C 65    ceString,RLen,Le
00FD60:  6E 29 20 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D    n) END;....END;.
00FD70:  0A 09 45 4E 44 20 44 6F 46 69 6E 64 3B 0D 0A 50    ..END DoFind;..P
00FD80:  52 4F 43 45 44 55 52 45 20 46 69 6E 64 3B 0D 0A    ROCEDURE Find;..
00FD90:  56 41 52 09 53 65 61 72 63 68 53 74 72 69 6E 67    VAR.SearchString
00FDA0:  3A 41 52 52 41 59 5B 30 2E 2E 36 30 5D 20 4F 46    :ARRAY[0..60] OF
00FDB0:  20 43 48 41 52 3B 0D 0A 42 45 47 49 4E 0D 0A 09     CHAR;..BEGIN...
00FDC0:  47 65 74 53 74 72 69 6E 67 28 53 65 61 72 63 68    GetString(Search
00FDD0:  53 74 72 69 6E 67 2C 4C 65 6E 2C 27 46 69 6E 64    String,Len,'Find
00FDE0:  3A 27 29 3B 0D 0A 09 49 46 20 4C 65 6E 3E 30 20    :');...IF Len>0 
00FDF0:  54 48 45 4E 0D 0A 09 09 50 72 65 70 61 72 65 53    THEN....PrepareS
00FE00:  74 72 69 6E 67 28 53 65 61 72 63 68 53 74 72 69    tring(SearchStri
00FE10:  6E 67 2C 4C 65 6E 29 3B 0D 0A 09 09 52 4C 65 6E    ng,Len);....RLen
00FE20:  3A 3D 2D 31 3B 0D 0A 09 09 44 6F 46 69 6E 64 3B    :=-1;....DoFind;
00FE30:  0D 0A 09 45 4C 53 45 0D 0A 09 09 52 65 44 69 73    ...ELSE....ReDis
00FE40:  70 6C 61 79 3B 0D 0A 09 09 45 4E 44 3B 0A 09 45    play;....END;..E
00FE50:  4E 44 20 46 69 6E 64 3B 0D 0A 50 52 4F 43 45 44    ND Find;..PROCED
00FE60:  55 52 45 20 52 65 70 6C 61 63 65 3B 0D 0A 56 41    URE Replace;..VA
00FE70:  52 09 53 65 61 72 63 68 53 74 72 69 6E 67 3A 41    R.SearchString:A
00FE80:  52 52 41 59 5B 30 2E 2E 36 30 5D 20 4F 46 20 43    RRAY[0..60] OF C
00FE90:  48 41 52 3B 0D 0A 09 4C 3A 43 41 52 44 49 4E 41    HAR;...L:CARDINA
00FEA0:  4C 3B 0D 0A 09 0D 0A 42 45 47 49 4E 0D 0A 09 47    L;.....BEGIN...G
00FEB0:  65 74 53 74 72 69 6E 67 28 53 65 61 72 63 68 53    etString(SearchS
00FEC0:  74 72 69 6E 67 2C 4C 65 6E 2C 27 41 6C 74 65 72    tring,Len,'Alter
00FED0:  3A 27 29 3B 0D 0A 09 49 46 20 4C 65 6E 3E 30 20    :');...IF Len>0 
00FEE0:  54 48 45 4E 0D 0A 09 09 50 72 65 70 61 72 65 53    THEN....PrepareS
00FEF0:  74 72 69 6E 67 28 53 65 61 72 63 68 53 74 72 69    tring(SearchStri
00FF00:  3A 4E 6F 42 65 6C 6C 3A 3D 4E 4F 54 20 4E 6F 42    :NoBell:=NOT NoB
00FF10:  65 6C 6C 7C 0D 0A 09 20 20 20 20 27 4B 27 2C 27    ell|...    'K','
00FF20:  42 27 2C 27 30 27 2E 2E 27 39 27 3A 47 6F 54 6F    B','0'..'9':GoTo
00FF30:  4C 61 62 65 6C 28 63 68 29 3B 0D 0A 09 20 09 45    Label(ch);... .E
00FF40:  4E 44 3B 0D 0A 09 20 20 46 69 72 73 74 3A 3D 46    ND;...  First:=F
00FF50:  41 4C 53 45 3B 0D 0A 09 20 20 44 45 43 28 50 61    ALSE;...  DEC(Pa
00FF60:  72 56 61 6C 75 65 29 3B 0D 0A 09 20 20 45 4E 44    rValue);...  END
00FF70:  3B 0D 0A 09 45 4E 44 20 51 75 69 63 6B 3B 0D 0A    ;...END Quick;..
00FF80:  50 52 4F 43 45 44 55 52 45 20 57 69 6E 64 6F 77    PROCEDURE Window
00FF90:  3B 0D 0A 56 41 52 09 69 3A 43 41 52 44 49 4E 41    ;..VAR.i:CARDINA
00FFA0:  4C 3B 0D 0A 42 45 47 49 4E 0D 0A 09 69 3A 3D 43    L;..BEGIN...i:=C
00FFB0:  75 72 72 65 6E 74 57 69 6E 64 6F 77 2B 31 3B 0D    urrentWindow+1;.
00FFC0:  0A 09 49 46 20 69 3E 57 69 6E 64 6F 77 73 20 54    ..IF i>Windows T
00FFD0:  48 45 4E 20 69 3A 3D 31 20 45 4E 44 3B 0D 0A 09    HEN i:=1 END;...
00FFE0:  43 68 61 6E 67 65 57 69 6E 64 6F 77 28 69 29 3B    ChangeWindow(i);
00FFF0:  0D 0A 09 52 65 44 69 73 70 6C 61 79 3B 0D 0A 09    ...ReDisplay;...
010000:  45 4E 44 20 57 69 6E 64 6F 77 3B 0D 0A 50 52 4F    END Window;..PRO
010010:  43 45 44 55 52 45 20 44 65 6C 42 61 63 6B 3B 0D    CEDURE DelBack;.
010020:  0A 42 45 47 49 4E 0D 0A 09 4C 65 66 74 3B 0D 0A    .BEGIN...Left;..
010030:  09 49 46 20 4D 6F 76 65 64 4F 4B 20 54 48 45 4E    .IF MovedOK THEN
010040:  20 44 65 6C 4F 6E 65 43 68 61 72 20 45 4E 44 3B     DelOneChar END;
010050:  0D 0A 09 45 4E 44 20 44 65 6C 42 61 63 6B 3B 0D    ...END DelBack;.
010060:  0A 50 52 4F 43 45 44 55 52 45 20 49 6E 74 65 72    .PROCEDURE Inter
010070:  70 72 65 74 3B 0D 0A 0D 0A 28 2A 09 53 74 61 72    pret;....(*.Star
010080:  74 20 6B 65 79 62 6F 61 72 64 20 69 6E 74 65 72    t keyboard inter
010090:  70 72 65 74 61 74 69 6F 6E 2A 29 0D 0A 42 45 47    pretation*)..BEG
0100A0:  49 4E 0D 0A 09 52 65 73 65 74 53 63 72 65 65 6E    IN...ResetScreen
0100B0:  50 6F 73 3B 0D 0A 09 69 6E 74 65 72 70 72 65 74    Pos;...interpret
0100C0:  69 6E 67 3A 3D 54 52 55 45 3B 0D 0A 09 50 61 72    ing:=TRUE;...Par
0100D0:  56 61 6C 75 65 3A 3D 30 3B 0D 0A 09 57 48 49 4C    Value:=0;...WHIL
0100E0:  45 20 69 6E 74 65 72 70 72 65 74 69 6E 67 20 44    E interpreting D
0100F0:  4F 0D 0A 09 09 52 65 61 64 41 43 68 61 72 28 63    O....ReadAChar(c
010100:  6E 67 2C 4C 65 6E 29 3B 0D 0A 09 09 47 65 74 53    ng,Len);....GetS
010110:  74 72 69 6E 67 28 52 65 70 6C 61 63 65 53 74 72    tring(ReplaceStr
010120:  69 6E 67 2C 4C 2C 27 54 6F 20 20 20 3A 27 29 3B    ing,L,'To   :');
010130:  0D 0A 09 09 52 4C 65 6E 3A 3D 4C 3B 0D 0A 09 09    ....RLen:=L;....
010140:  44 6F 46 69 6E 64 3B 0D 0A 09 45 4C 53 45 0D 0A    DoFind;...ELSE..
010150:  09 09 52 65 44 69 73 70 6C 61 79 3B 0D 0A 09 09    ..ReDisplay;....
010160:  45 4E 44 3B 0D 0A 09 45 4E 44 20 52 65 70 6C 61    END;...END Repla
010170:  63 65 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 53    ce;..PROCEDURE S
010180:  65 74 55 70 64 61 74 65 64 3B 0D 0A 42 45 47 49    etUpdated;..BEGI
010190:  4E 0D 0A 09 55 70 64 61 74 65 64 5B 43 75 72 72    N...Updated[Curr
0101A0:  65 6E 74 46 69 6C 65 5D 3A 3D 54 52 55 45 0D 0A    entFile]:=TRUE..
0101B0:  09 45 4E 44 20 53 65 74 55 70 64 61 74 65 64 3B    .END SetUpdated;
0101C0:  0D 0A 50 52 4F 43 45 44 55 52 45 20 44 65 6C 41    ..PROCEDURE DelA
0101D0:  42 6C 6F 63 6B 28 69 3A 43 41 52 44 49 4E 41 4C    Block(i:CARDINAL
0101E0:  29 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 56 41 52 20    ):BOOLEAN;..VAR 
0101F0:  09 62 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 09 6A 3A    .b:BOOLEAN;...j:
010200:  43 41 52 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 4E    CARDINAL;..BEGIN
010210:  0D 0A 09 62 3A 3D 42 6C 6F 63 6B 44 65 6C 28 46    ...b:=BlockDel(F
010220:  69 6C 65 73 5B 69 5D 29 3B 0D 0A 09 6A 3A 3D 43    iles[i]);...j:=C
010230:  75 72 72 65 6E 74 46 69 6C 65 3B 0D 0A 09 43 68    urrentFile;...Ch
010240:  61 6E 67 65 57 69 6E 64 6F 77 28 69 29 3B 0D 0A    angeWindow(i);..
010250:  09 52 65 64 69 73 70 6C 61 79 3B 0D 0A 09 43 68    .Redisplay;...Ch
010260:  61 6E 67 65 57 69 6E 64 6F 77 28 6A 29 3B 0D 0A    angeWindow(j);..
010270:  09 52 45 54 55 52 4E 20 62 0D 0A 09 45 4E 44 20    .RETURN b...END 
010280:  44 65 6C 41 42 6C 6F 63 6B 3B 0D 0A 50 52 4F 43    DelABlock;..PROC
010290:  45 44 55 52 45 20 44 65 66 4C 61 62 65 6C 3B 0D    EDURE DefLabel;.
0102A0:  0A 56 41 52 09 69 3A 43 41 52 44 49 4E 41 4C 3B    .VAR.i:CARDINAL;
0102B0:  0D 0A 09 62 2C 72 3A 42 4F 4F 4C 45 41 4E 3B 0D    ...b,r:BOOLEAN;.
0102C0:  0A 42 45 47 49 4E 0D 0A 09 52 65 61 64 41 43 68    .BEGIN...ReadACh
0102D0:  61 72 28 63 68 29 3B 0D 0A 09 69 3A 3D 43 75 72    ar(ch);...i:=Cur
0102E0:  72 65 6E 74 57 69 6E 64 6F 77 3B 0D 0A 0D 0A 09    rentWindow;.....
0102F0:  28 2A 09 49 66 20 63 6F 6E 74 72 6F 6C 20 42 27    (*.If control B'
010300:  68 29 3B 0D 0A 09 09 49 46 20 63 68 3E 43 48 52    h);....IF ch>CHR
010310:  28 31 32 37 29 20 54 48 45 4E 20 63 68 3A 3D 43    (127) THEN ch:=C
010320:  48 52 28 4F 52 44 28 63 68 29 2D 31 32 38 29 20    HR(ORD(ch)-128) 
010330:  45 4E 44 3B 0D 0A 09 09 4D 61 69 6E 54 61 62 6C    END;....MainTabl
010340:  65 5B 63 68 5D 3B 0D 0A 09 09 45 4E 44 3B 0D 0A    e[ch];....END;..
010350:  09 45 4E 44 20 49 6E 74 65 72 70 72 65 74 3B 0D    .END Interpret;.
010360:  0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 46 6C 69    ...PROCEDURE Fli
010370:  70 49 6E 73 65 72 74 3B 0D 0A 42 45 47 49 4E 0D    pInsert;..BEGIN.
010380:  0A 09 49 6E 73 65 72 74 4D 6F 64 65 3A 3D 4E 4F    ..InsertMode:=NO
010390:  54 20 49 6E 73 65 72 74 4D 6F 64 65 3B 0D 0A 09    T InsertMode;...
0103A0:  45 4E 44 20 46 6C 69 70 49 6E 73 65 72 74 3B 0D    END FlipInsert;.
0103B0:  0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 44 65 6C    ...PROCEDURE Del
0103C0:  57 6F 72 64 3B 0D 0A 42 45 47 49 4E 0D 0A 09 46    Word;..BEGIN...F
0103D0:  69 6E 64 57 6F 72 64 28 46 41 4C 53 45 2C 54 52    indWord(FALSE,TR
0103E0:  55 45 29 3B 0D 0A 09 45 4E 44 20 44 65 6C 57 6F    UE);...END DelWo
0103F0:  72 64 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45    rd;....PROCEDURE
010400:  20 46 6F 72 77 61 72 64 57 6F 72 64 3B 0D 0A 42     ForwardWord;..B
010410:  45 47 49 4E 0D 0A 09 46 69 6E 64 57 6F 72 64 28    EGIN...FindWord(
010420:  46 41 4C 53 45 2C 46 41 4C 53 45 29 3B 0D 0A 09    FALSE,FALSE);...
010430:  45 4E 44 20 46 6F 72 77 61 72 64 57 6F 72 64 3B    END ForwardWord;
010440:  0D 0A 50 52 4F 43 45 44 55 52 45 20 42 61 63 6B    ..PROCEDURE Back
010450:  77 61 72 64 57 6F 72 64 3B 0D 0A 42 45 47 49 4E    wardWord;..BEGIN
010460:  0D 0A 09 46 69 6E 64 57 6F 72 64 28 54 52 55 45    ...FindWord(TRUE
010470:  2C 46 41 4C 53 45 29 3B 0D 0A 09 45 4E 44 20 42    ,FALSE);...END B
010480:  61 63 6B 77 61 72 64 57 6F 72 64 3B 0D 0A 0D 0A    ackwardWord;....
010490:  28 2A 09 49 6E 69 74 69 61 6C 69 73 65 20 61 20    (*.Initialise a 
0104A0:  6B 65 79 62 6F 61 72 64 20 64 69 73 70 61 74 63    keyboard dispatc
0104B0:  68 20 74 61 62 6C 65 73 2A 29 0D 0A 0D 0A 42 45    h tables*)....BE
0104C0:  47 49 4E 0D 0A 09 46 4F 52 20 63 68 3A 3D 30 78    GIN...FOR ch:=0x
0104D0:  20 54 4F 20 37 66 78 20 44 4F 20 4D 61 69 6E 54     TO 7fx DO MainT
0104E0:  61 62 6C 65 5B 63 68 5D 3A 3D 42 65 6C 6C 20 45    able[ch]:=Bell E
0104F0:  4E 44 3B 0D 0A 09 0D 0A 09 4D 61 69 6E 54 61 62    ND;......MainTab
010500:  73 20 69 6E 74 65 72 76 65 6E 65 2C 20 63 68 61    s intervene, cha
010510:  6E 67 65 20 73 6F 75 72 63 65 20 77 69 6E 64 6F    nge source windo
010520:  77 2A 29 0D 0A 09 57 48 49 4C 45 20 63 68 3D 30    w*)...WHILE ch=0
010530:  32 78 20 28 2A 43 54 52 4C 20 42 2A 29 20 44 4F    2x (*CTRL B*) DO
010540:  0D 0A 09 09 49 46 20 69 3E 3D 57 69 6E 64 6F 77    ....IF i>=Window
010550:  73 20 54 48 45 4E 20 69 3A 3D 31 20 45 4C 53 45    s THEN i:=1 ELSE
010560:  20 49 4E 43 28 69 29 20 45 4E 44 3B 0D 0A 09 09     INC(i) END;....
010570:  47 6F 74 6F 78 79 28 63 75 72 78 5B 69 5D 2C 63    Gotoxy(curx[i],c
010580:  75 72 79 5B 69 5D 29 3B 0D 0A 09 09 52 65 61 64    ury[i]);....Read
010590:  41 43 68 61 72 28 63 68 29 3B 0D 0A 09 09 45 4E    AChar(ch);....EN
0105A0:  44 3B 0D 0A 09 63 68 3A 3D 43 41 50 28 63 68 29    D;...ch:=CAP(ch)
0105B0:  3B 0D 0A 09 72 3A 3D 46 41 4C 53 45 3B 0D 0A 09    ;...r:=FALSE;...
0105C0:  69 3A 3D 57 69 6E 64 6F 77 46 69 6C 65 5B 69 5D    i:=WindowFile[i]
0105D0:  3B 0D 0A 09 43 41 53 45 20 63 68 20 4F 46 0D 0A    ;...CASE ch OF..
0105E0:  09 09 27 43 27 2C 30 33 78 3A 62 3A 3D 42 6C 6F    ..'C',03x:b:=Blo
0105F0:  63 6B 43 6F 70 79 28 46 69 6C 65 73 5B 69 5D 2C    ckCopy(Files[i],
010600:  46 69 6C 65 73 5B 43 75 72 72 65 6E 74 46 69 6C    Files[CurrentFil
010610:  65 5D 29 3B 0D 0A 09 09 09 7C 0D 0A 09 09 27 59    e]);.....|....'Y
010620:  27 2C 31 39 78 3A 62 3A 3D 44 65 6C 41 42 6C 6F    ',19x:b:=DelABlo
010630:  63 6B 28 69 29 3B 0D 0A 09 09 09 7C 0D 0A 09 09    ck(i);.....|....
010640:  27 56 27 2C 31 36 78 3A 62 3A 3D 42 6C 6F 63 6B    'V',16x:b:=Block
010650:  43 6F 70 79 28 46 69 6C 65 73 5B 69 5D 2C 46 69    Copy(Files[i],Fi
010660:  6C 65 73 5B 43 75 72 72 65 6E 74 46 69 6C 65 5D    les[CurrentFile]
010670:  29 3B 0D 0A 09 09 09 49 46 20 62 20 20 54 48 45    );.....IF b  THE
010680:  4E 20 62 3A 3D 44 65 6C 41 42 6C 6F 63 6B 28 69    N b:=DelABlock(i
010690:  29 20 45 4E 44 3B 0D 0A 09 09 09 7C 0D 0A 09 09    ) END;.....|....
0106A0:  45 4C 53 45 20 0D 0A 09 09 09 62 3A 3D 20 4C 61    ELSE .....b:= La
0106B0:  62 65 6C 4F 70 28 46 69 6C 65 73 5B 43 75 72 72    belOp(Files[Curr
0106C0:  65 6E 74 46 69 6C 65 5D 2C 54 52 55 45 2C 63 68    entFile],TRUE,ch
0106D0:  29 3B 0D 0A 09 09 09 72 3A 3D 54 52 55 45 3B 0D    );.....r:=TRUE;.
0106E0:  0A 09 09 45 4E 44 3B 0D 0A 09 49 46 20 62 20 54    ...END;...IF b T
0106F0:  48 45 4E 0D 0A 09 09 49 46 20 4E 4F 54 20 72 20    HEN....IF NOT r 
010700:  6C 65 5B 31 62 78 5D 3A 3D 45 73 63 61 70 65 3B    le[1bx]:=Escape;
010710:  0D 0A 0D 0A 09 28 2A 09 70 72 69 6E 74 61 62 6C    .....(*.printabl
010720:  65 20 63 68 61 72 61 63 74 65 72 73 20 61 72 65    e characters are
010730:  20 69 6E 73 65 72 74 65 64 20 61 73 20 69 73 20     inserted as is 
010740:  2A 29 0D 0A 0D 0A 09 46 4F 52 20 63 68 3A 3D 27    *).....FOR ch:='
010750:  20 27 20 54 4F 20 27 7E 27 20 44 4F 20 4D 61 69     ' TO '~' DO Mai
010760:  6E 54 61 62 6C 65 5B 63 68 5D 3A 3D 49 6E 73 43    nTable[ch]:=InsC
010770:  68 61 72 20 45 4E 44 3B 0D 0A 09 4D 61 69 6E 54    har END;...MainT
010780:  61 62 6C 65 5B 30 64 78 5D 3A 3D 49 6E 73 43 68    able[0dx]:=InsCh
010790:  61 72 3B 0D 0A 09 4D 61 69 6E 54 61 62 6C 65 5B    ar;...MainTable[
0107A0:  30 39 78 5D 3A 3D 49 6E 73 43 68 61 72 3B 0D 0A    09x]:=InsChar;..
0107B0:  0D 0A 09 28 2A 09 63 75 72 73 6F 72 20 63 6F 6E    ...(*.cursor con
0107C0:  74 72 6F 6C 20 6B 65 79 73 2A 29 0D 0A 0D 0A 09    trol keys*).....
0107D0:  4D 61 69 6E 54 61 62 6C 65 5B 31 33 78 5D 3A 3D    MainTable[13x]:=
0107E0:  4C 65 66 74 3B 0D 0A 09 4D 61 69 6E 54 61 62 6C    Left;...MainTabl
0107F0:  65 5B 31 38 78 5D 3A 3D 44 6F 77 6E 3B 0D 0A 09    e[18x]:=Down;...
010800:  4D 61 69 6E 54 61 62 6C 65 5B 30 34 78 5D 3A 3D    MainTable[04x]:=
010810:  52 69 67 68 74 3B 0D 0A 09 4D 61 69 6E 54 61 62    Right;...MainTab
010820:  6C 65 5B 30 35 78 5D 3A 3D 55 70 3B 0D 0A 0D 0A    le[05x]:=Up;....
010830:  09 28 2A 09 4F 74 68 65 72 20 63 6F 6E 74 72 6F    .(*.Other contro
010840:  6C 20 6B 65 79 73 2A 29 0D 0A 0D 0A 09 4D 61 69    l keys*).....Mai
010850:  6E 54 61 62 6C 65 5B 30 37 78 5D 3A 3D 44 65 6C    nTable[07x]:=Del
010860:  4F 6E 65 43 68 61 72 3B 09 28 2A 43 74 72 6C 20    OneChar;.(*Ctrl 
010870:  47 2A 29 0D 0A 09 4D 61 69 6E 54 61 62 6C 65 5B    G*)...MainTable[
010880:  31 39 78 5D 3A 3D 44 65 6C 46 75 6C 6C 4C 69 6E    19x]:=DelFullLin
010890:  65 3B 09 28 2A 43 74 72 6C 20 59 2A 29 0D 0A 09    e;.(*Ctrl Y*)...
0108A0:  4D 61 69 6E 54 61 62 6C 65 5B 31 36 78 5D 3A 3D    MainTable[16x]:=
0108B0:  46 6C 69 70 49 6E 73 65 72 74 3B 09 28 2A 43 74    FlipInsert;.(*Ct
0108C0:  72 6C 20 56 2A 29 0D 0A 09 4D 61 69 6E 54 61 62    rl V*)...MainTab
0108D0:  6C 65 5B 30 65 78 5D 3A 3D 42 72 65 61 6B 4C 69    le[0ex]:=BreakLi
0108E0:  6E 65 3B 09 28 2A 43 74 72 6C 20 4E 2A 29 0D 0A    ne;.(*Ctrl N*)..
0108F0:  09 4D 61 69 6E 54 61 62 6C 65 5B 30 38 78 5D 3A    .MainTable[08x]:
010900:  54 48 45 4E 20 52 65 44 69 73 70 6C 61 79 3B 53    THEN ReDisplay;S
010910:  65 74 55 70 64 61 74 65 64 20 45 4E 44 3B 0D 0A    etUpdated END;..
010920:  09 45 4C 53 45 0D 0A 09 09 49 46 20 72 20 54 48    .ELSE....IF r TH
010930:  45 4E 20 45 72 72 6F 72 4D 65 73 73 61 67 65 28    EN ErrorMessage(
010940:  27 42 61 64 20 6C 61 62 65 6C 27 2C 27 20 27 29    'Bad label',' ')
010950:  3B 0D 0A 09 09 45 4C 53 45 20 45 72 72 6F 72 4D    ;....ELSE ErrorM
010960:  65 73 73 61 67 65 28 27 42 6C 6F 63 6B 20 55 6E    essage('Block Un
010970:  64 65 66 69 6E 65 64 27 2C 27 20 27 29 20 45 4E    defined',' ') EN
010980:  44 3B 0D 0A 09 09 47 6F 74 6F 78 79 28 54 68 69    D;....Gotoxy(Thi
010990:  73 78 2C 54 68 69 73 79 29 3B 0D 0A 09 09 45 4E    sx,Thisy);....EN
0109A0:  44 3B 0D 0A 09 45 4E 44 20 44 65 66 4C 61 62 65    D;...END DefLabe
0109B0:  6C 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 4D 6F    l;..PROCEDURE Mo
0109C0:  76 65 54 6F 45 72 72 6F 72 3B 0D 0A 50 52 4F 43    veToError;..PROC
0109D0:  45 44 55 52 45 20 47 6F 74 6F 45 72 72 6F 72 28    EDURE GotoError(
0109E0:  69 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A 42 45    i:CARDINAL);..BE
0109F0:  47 49 4E 0D 0A 09 49 46 20 69 3C 45 72 72 6F 72    GIN...IF i<Error
010A00:  43 6F 75 6E 74 20 54 48 45 4E 20 45 72 72 6F 72    Count THEN Error
010A10:  4F 72 64 69 6E 61 6C 3A 3D 69 3B 44 69 73 70 6C    Ordinal:=i;Displ
010A20:  61 79 45 72 72 6F 72 0D 0A 09 45 4C 53 45 0D 0A    ayError...ELSE..
010A30:  09 09 45 72 72 6F 72 4D 65 73 73 61 67 65 28 27    ..ErrorMessage('
010A40:  20 4E 6F 20 73 75 63 68 20 65 72 72 6F 72 20 27     No such error '
010A50:  2C 27 20 27 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A    ,' ');....END;..
010A60:  09 45 4E 44 20 47 6F 74 6F 45 72 72 6F 72 3B 0D    .END GotoError;.
010A70:  0A 0D 0A 42 45 47 49 4E 0D 0A 09 52 65 61 64 41    ...BEGIN...ReadA
010A80:  43 68 61 72 28 63 68 29 3B 0D 0A 09 63 68 3A 3D    Char(ch);...ch:=
010A90:  43 41 50 28 63 68 29 3B 0D 0A 09 43 41 53 45 20    CAP(ch);...CASE 
010AA0:  63 68 20 4F 46 0D 0A 09 09 27 4E 27 2C 30 65 78    ch OF....'N',0ex
010AB0:  3A 47 6F 74 6F 45 72 72 6F 72 28 45 72 72 6F 72    :GotoError(Error
010AC0:  4F 72 64 69 6E 61 6C 2B 31 29 7C 0D 0A 09 09 27    Ordinal+1)|....'
010AD0:  50 27 2C 31 30 78 3A 47 6F 74 6F 45 72 72 6F 72    P',10x:GotoError
010AE0:  28 45 72 72 6F 72 4F 72 64 69 6E 61 6C 2D 31 29    (ErrorOrdinal-1)
010AF0:  7C 0D 0A 09 09 27 43 27 2C 30 33 78 3A 47 6F 74    |....'C',03x:Got
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 C9 02 00 00 00 02    ......R.........
010B20:  0E 00 C5 02 00 00 00 02 0E 00 C1 02 00 00 00 02    ................
010B30:  0E 00 C6 02 00 00 00 02 0E 00 C2 02 00 00 00 02    ................
010B40:  0E 00 C7 02 00 00 00 02 0E 00 C3 02 00 00 00 02    ................
010B50:  0E 00 C8 02 00 00 00 02 0E 00 C4 02 00 00 00 02    ................
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:  70 61 72 74 20 2A 29 0D 0A 0D 0A 09 57 48 49 4C    part *).....WHIL
010C10:  45 20 28 4B 65 79 50 6F 73 3C 3E 4E 49 4C 29 20    E (KeyPos<>NIL) 
010C20:  41 4E 44 20 20 28 4B 65 79 53 65 71 5B 69 5D 3C    AND  (KeySeq[i]<
010C30:  3E 27 20 27 29 20 44 4F 0D 0A 09 09 0D 0A 09 09    >' ') DO........
010C40:  53 65 61 72 63 68 54 6F 4E 65 78 74 28 4B 65 79    SearchToNext(Key
010C50:  53 65 71 5B 69 5D 29 3B 0D 0A 09 09 49 46 20 4B    Seq[i]);....IF K
010C60:  65 79 50 6F 73 3C 3E 4E 49 4C 20 54 48 45 4E 20    eyPos<>NIL THEN 
010C70:  0D 0A 09 09 09 49 4E 43 28 69 29 3B 0D 0A 09 09    .....INC(i);....
010C80:  09 4C 61 73 74 4B 65 79 50 6F 73 3A 3D 4B 65 79    .LastKeyPos:=Key
010C90:  50 6F 73 3B 0D 0A 09 09 09 4C 65 61 72 6E 4B 65    Pos;.....LearnKe
010CA0:  79 3A 3D 4B 65 79 50 6F 73 3B 0D 0A 09 09 09 4B    y:=KeyPos;.....K
010CB0:  65 79 50 6F 73 3A 3D 4B 65 79 50 6F 73 5E 2E 4E    eyPos:=KeyPos^.N
010CC0:  65 78 74 43 68 61 72 3B 0D 0A 09 09 09 45 4E 44    extChar;.....END
010CD0:  3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 49 46 20 4B    ;....END;...IF K
010CE0:  65 79 53 65 71 5B 69 5D 3D 27 20 27 20 54 48 45    eySeq[i]=' ' THE
010CF0:  4E 20 28 2A 6D 75 73 74 20 61 6C 72 65 61 64 79    N (*must already
010D00:  20 62 65 20 69 6E 20 74 61 62 6C 65 2A 29 0D 0A     be in table*)..
010D10:  09 09 52 45 54 55 52 4E 0D 0A 09 09 45 4E 44 3B    ..RETURN....END;
010D20:  0D 0A 09 0D 0A 09 28 2A 20 41 73 73 75 6D 69 6E    ......(* Assumin
010D30:  67 20 74 68 69 73 20 69 73 20 6E 6F 74 20 74 68    g this is not th
010D40:  65 20 66 69 72 73 74 20 65 6E 74 72 79 2C 20 4C    e first entry, L
010D50:  61 73 74 4B 65 79 50 6F 73 20 70 6F 69 6E 74 73    astKeyPos points
010D60:  0D 0A 09 20 20 20 74 6F 20 74 68 65 20 65 6E 74    ...   to the ent
010D70:  72 79 20 74 6F 20 77 68 69 63 68 20 77 65 20 73    ry to which we s
010D80:  68 6F 75 6C 64 20 61 74 74 61 63 68 20 74 68 69    hould attach thi
010D90:  73 20 6E 65 77 20 63 68 61 72 61 63 74 65 72 0D    s new character.
010DA0:  0A 09 2A 29 0D 0A 09 57 48 49 4C 45 20 20 28 4B    ..*)...WHILE  (K
010DB0:  65 79 53 65 71 5B 69 5D 3C 3E 27 20 27 29 20 44    eySeq[i]<>' ') D
010DC0:  4F 0D 0A 09 09 4E 45 57 28 4B 65 79 50 6F 73 29    O....NEW(KeyPos)
010DD0:  3B 0D 0A 09 09 57 49 54 48 20 4B 65 79 50 6F 73    ;....WITH KeyPos
010DE0:  5E 20 44 4F 0D 0A 09 09 09 63 68 3A 3D 4B 65 79    ^ DO.....ch:=Key
010DF0:  53 65 71 5B 69 5D 3B 0D 0A 09 09 09 4E 65 78 74    Seq[i];.....Next
010E00:  49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D    IMPLEMENTATION M
010E10:  4F 44 55 4C 45 20 4D 61 63 72 6F 73 3B 0D 0A 46    ODULE Macros;..F
010E20:  52 4F 4D 09 44 6F 4D 65 6E 75 20 49 4D 50 4F 52    ROM.DoMenu IMPOR
010E30:  54 20 47 65 74 53 74 72 69 6E 67 2C 52 65 64 69    T GetString,Redi
010E40:  73 70 6C 61 79 3B 0D 0A 46 52 4F 4D 09 53 74 6F    splay;..FROM.Sto
010E50:  72 61 67 65 20 49 4D 50 4F 52 54 20 20 41 4C 4C    rage IMPORT  ALL
010E60:  4F 43 41 54 45 2C 44 45 41 4C 4C 4F 43 41 54 45    OCATE,DEALLOCATE
010E70:  3B 0D 0A 46 52 4F 4D 09 54 65 72 6D 69 6E 61 6C    ;..FROM.Terminal
010E80:  20 49 4D 50 4F 52 54 20 42 75 73 79 52 65 61 64     IMPORT BusyRead
010E90:  2C 57 72 69 74 65 53 74 72 69 6E 67 2C 57 72 69    ,WriteString,Wri
010EA0:  74 65 4C 6E 2C 57 72 69 74 65 3B 0D 0A 46 52 4F    teLn,Write;..FRO
010EB0:  4D 09 46 69 6C 65 73 20 49 4D 50 4F 52 54 20 46    M.Files IMPORT F
010EC0:  49 4C 45 2C 53 65 71 52 65 61 64 42 6C 6F 63 6B    ILE,SeqReadBlock
010ED0:  2C 53 65 71 57 72 69 74 65 42 6C 6F 63 6B 2C 4C    ,SeqWriteBlock,L
010EE0:  6F 6F 6B 75 70 2C 43 72 65 61 74 65 2C 43 6C 6F    ookup,Create,Clo
010EF0:  73 65 3B 0D 0A 46 52 4F 4D 09 53 59 53 54 45 4D    se;..FROM.SYSTEM
010F00:  20 49 4D 50 4F 52 54 20 41 44 52 2C 54 53 49 5A     IMPORT ADR,TSIZ
010F10:  45 3B 0D 0A 46 52 4F 4D 09 45 64 69 74 44 69 73    E;..FROM.EditDis
010F20:  70 6C 61 79 20 49 4D 50 4F 52 54 20 45 72 72 6F    play IMPORT Erro
010F30:  72 4D 65 73 73 61 67 65 3B 0D 0A 46 52 4F 4D 09    rMessage;..FROM.
010F40:  46 61 73 74 4D 6F 76 65 20 49 4D 50 4F 52 54 20    FastMove IMPORT 
010F50:  4D 6F 76 65 75 70 3B 0D 0A 46 52 4F 4D 09 53 63    Moveup;..FROM.Sc
010F60:  72 65 65 6E 44 75 20 49 4D 50 4F 52 54 20 4F 75    reenDu IMPORT Ou
010F70:  74 70 75 74 54 6F 53 63 72 65 65 6E 3B 0D 0A 43    tputToScreen;..C
010F80:  4F 4E 53 54 09 42 6C 6F 63 6B 4C 65 6E 3D 31 32    ONST.BlockLen=12
010F90:  38 3B 0D 0A 09 45 53 43 3D 31 62 78 3B 0D 0A 54    8;...ESC=1bx;..T
010FA0:  59 50 45 0D 0A 09 4B 65 79 44 65 66 3D 52 45 43    YPE...KeyDef=REC
010FB0:  4F 52 44 0D 0A 09 09 4C 65 6E 67 74 68 3A 5B 31    ORD....Length:[1
010FC0:  2E 2E 36 31 5D 3B 0D 0A 09 09 43 6F 6D 6D 43 68    ..61];....CommCh
010FD0:  61 72 73 3A 41 52 52 41 59 5B 31 2E 2E 32 30 5D    ars:ARRAY[1..20]
010FE0:  20 4F 46 20 43 48 41 52 3B 0D 0A 09 09 45 4E 44     OF CHAR;....END
010FF0:  3B 0D 0A 09 50 4B 65 79 44 65 66 3D 50 4F 49 4E    ;...PKeyDef=POIN
011000:  6B 3B 09 28 2A 44 65 6C 20 2A 29 0D 0A 09 4D 61    k;.(*Del *)...Ma
011010:  69 6E 54 61 62 6C 65 5B 30 63 78 5D 3A 3D 44 6F    inTable[0cx]:=Do
011020:  46 69 6E 64 3B 09 09 28 2A 43 74 72 6C 20 4C 2A    Find;..(*Ctrl L*
011030:  29 0A 09 4D 61 69 6E 54 61 62 6C 65 5B 31 66 78    )..MainTable[1fx
011040:  5D 3A 3D 44 65 6C 42 61 63 6B 3B 09 28 2A 5E 2D    ]:=DelBack;.(*^-
011050:  20 6F 6E 20 4F 73 62 6F 72 6E 65 20 31 2A 29 0D     on Osborne 1*).
011060:  0A 0D 0A 09 28 2A 09 54 68 65 20 6E 65 78 74 20    ....(*.The next 
011070:  6B 65 79 2C 20 20 61 73 73 69 67 6E 65 64 20 74    key,  assigned t
011080:  6F 20 45 6E 64 69 6E 74 65 72 70 72 65 74 20 69    o Endinterpret i
011090:  73 20 63 61 6C 6C 65 64 2C 0D 0A 09 09 27 4D 65    s called,....'Me
0110A0:  6E 75 27 20 69 6E 20 74 68 65 20 64 6F 63 75 6D    nu' in the docum
0110B0:  65 6E 74 61 74 69 6F 6E 2E 20 54 68 61 74 20 69    entation. That i
0110C0:  73 2C 20 74 6F 20 70 72 6F 63 65 73 73 20 61 20    s, to process a 
0110D0:  6D 65 6E 75 2C 0D 0A 09 09 77 65 20 64 72 6F 70    menu,....we drop
0110E0:  20 6F 75 74 20 6F 66 20 65 64 69 74 20 6D 6F 64     out of edit mod
0110F0:  65 2E 20 54 68 65 20 63 61 6C 6C 69 6E 67 20 72    e. The calling r
011100:  6F 75 74 69 6E 65 20 28 4D 65 29 20 74 68 65 20    outine (Me) the 
011110:  63 61 6C 6C 73 0D 0A 09 09 74 68 65 20 6D 65 6E    calls....the men
011120:  75 20 72 6F 75 74 69 6E 65 20 2D 20 6E 6F 74 20    u routine - not 
011130:  74 68 69 73 20 6D 6F 64 75 6C 65 2A 29 0D 0A 0D    this module*)...
011140:  0A 09 4D 61 69 6E 54 61 62 6C 65 5B 30 66 78 5D    ..MainTable[0fx]
011150:  3A 3D 45 6E 64 69 6E 74 65 72 70 72 65 74 3B 09    :=Endinterpret;.
011160:  28 2A 43 74 72 6C 20 4F 2A 29 0D 0A 09 45 4E 44    (*Ctrl O*)...END
011170:  20 4B 65 79 62 6F 61 72 64 2E 0D 0A 1A 1A 1A 1A     Keyboard.......
011180:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
011190:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0111A0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0111B0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0111C0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0111D0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0111E0:  1A 1A 1A 1A 1A 1A 1A 1A 44 4F 43 20 00 00 00 00    ........DOC ....
0111F0:  00 00 00 00 00 00 5B B6 4A 0D 58 0E 53 63 00 00    ......[.J.X.Sc..
011200:  54 45 52 20 54 4F 20 4B 65 79 44 65 66 3B 0D 0A    TER TO KeyDef;..
011210:  09 4D 61 63 72 6F 50 6F 69 6E 74 3D 52 45 43 4F    .MacroPoint=RECO
011220:  52 44 0D 0A 09 09 50 6F 73 3A 43 41 52 44 49 4E    RD....Pos:CARDIN
011230:  41 4C 3B 0D 0A 09 09 44 65 66 3A 50 4B 65 79 44    AL;....Def:PKeyD
011240:  65 66 3B 0D 0A 09 09 43 6F 75 6E 74 3A 49 4E 54    ef;....Count:INT
011250:  45 47 45 52 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09    EGER;....END;...
011260:  50 4B 65 79 43 68 61 69 6E 3D 50 4F 49 4E 54 45    PKeyChain=POINTE
011270:  52 20 54 4F 20 4B 65 79 43 68 61 69 6E 3B 0D 0A    R TO KeyChain;..
011280:  09 4B 65 79 43 68 61 69 6E 3D 52 45 43 4F 52 44    .KeyChain=RECORD
011290:  0D 0A 09 09 63 68 3A 43 48 41 52 3B 0D 0A 09 09    ....ch:CHAR;....
0112A0:  4E 65 78 74 41 6C 74 3A 50 4B 65 79 43 68 61 69    NextAlt:PKeyChai
0112B0:  6E 3B 20 28 2A 6E 65 78 74 20 61 6C 74 65 72 6E    n; (*next altern
0112C0:  61 74 69 76 65 2A 29 0D 0A 09 09 43 41 53 45 20    ative*)....CASE 
0112D0:  54 65 72 6D 69 6E 61 74 6F 72 3A 42 4F 4F 4C 45    Terminator:BOOLE
0112E0:  41 4E 20 4F 46 0D 0A 09 09 09 54 52 55 45 3A 20    AN OF.....TRUE: 
0112F0:  28 2A 74 65 72 6D 69 6E 61 74 65 73 20 61 20 6B    (*terminates a k
011300:  65 79 20 73 65 71 75 65 6E 63 65 20 2A 29 0D 0A    ey sequence *)..
011310:  09 09 09 09 44 65 66 3A 50 4B 65 79 44 65 66 7C    ....Def:PKeyDef|
011320:  0D 0A 09 09 09 46 41 4C 53 45 3A 20 28 2A 69 6E    .....FALSE: (*in
011330:  20 74 68 65 20 6D 6F 64 64 6C 65 20 6F 66 20 61     the moddle of a
011340:  20 6B 65 79 20 73 65 71 75 65 6E 63 65 20 2A 29     key sequence *)
011350:  0D 0A 09 09 09 09 4E 65 78 74 43 68 61 72 3A 50    ......NextChar:P
011360:  4B 65 79 43 68 61 69 6E 0D 0A 09 09 09 45 4E 44    KeyChain.....END
011370:  3B 20 28 2A 43 41 53 45 2A 29 0D 0A 09 09 45 4E    ; (*CASE*)....EN
011380:  44 3B 28 2A 52 45 43 4F 52 44 2A 29 0D 0A 09 09    D;(*RECORD*)....
011390:  09 09 0D 0A 56 41 52 0D 0A 09 63 68 3A 43 48 41    ....VAR...ch:CHA
0113A0:  52 3B 0D 0A 09 43 6F 6D 6D 61 6E 64 73 3A 41 52    R;...Commands:AR
0113B0:  52 41 59 5B 27 40 27 2E 2E 27 5A 27 5D 20 4F 46    RAY['@'..'Z'] OF
0113C0:  20 50 4B 65 79 44 65 66 3B 0D 0A 09 4D 61 63 72     PKeyDef;...Macr
0113D0:  6F 44 65 70 74 68 3A 43 41 52 44 49 4E 41 4C 3D    oDepth:CARDINAL=
0113E0:  30 3B 0D 0A 09 4D 61 63 72 6F 53 74 61 63 6B 3A    0;...MacroStack:
0113F0:  41 52 52 41 59 5B 31 2E 2E 35 5D 20 4F 46 20 4D    ARRAY[1..5] OF M
011400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0114A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0114B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0114C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0114D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0114E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0114F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0115A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0115B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0115C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0115D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0115E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0115F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
011600:  61 63 72 6F 50 6F 69 6E 74 3B 0D 0A 09 4C 65 61    acroPoint;...Lea
011610:  72 6E 63 68 3A 43 48 41 52 3B 0D 0A 09 4C 65 61    rnch:CHAR;...Lea
011620:  72 6E 4C 65 6E 3A 43 41 52 44 49 4E 41 4C 3B 0D    rnLen:CARDINAL;.
011630:  0A 09 4C 65 61 72 6E 69 6E 67 3A 42 4F 4F 4C 45    ..Learning:BOOLE
011640:  41 4E 3D 46 41 4C 53 45 3B 0D 0A 09 54 65 78 74    AN=FALSE;...Text
011650:  3A 41 52 52 41 59 5B 31 2E 2E 36 30 5D 20 4F 46    :ARRAY[1..60] OF
011660:  20 43 48 41 52 3B 0D 0A 09 69 3A 43 41 52 44 49     CHAR;...i:CARDI
011670:  4E 41 4C 3B 0D 0A 09 4B 65 79 53 65 71 3A 41 52    NAL;...KeySeq:AR
011680:  52 41 59 5B 31 2E 2E 31 30 5D 20 4F 46 20 43 48    RAY[1..10] OF CH
011690:  41 52 3B 0D 0A 09 4B 65 79 43 68 61 69 6E 42 61    AR;...KeyChainBa
0116A0:  73 65 3A 50 4B 65 79 43 68 61 69 6E 3D 4E 49 4C    se:PKeyChain=NIL
0116B0:  3B 09 28 2A 62 61 73 65 20 6F 66 20 74 61 62 6C    ;.(*base of tabl
0116C0:  65 20 6F 66 20 6B 65 79 20 64 65 66 73 2A 29 0D    e of key defs*).
0116D0:  0A 09 4C 61 73 74 4B 65 79 50 6F 73 2C 4B 65 79    ..LastKeyPos,Key
0116E0:  50 6F 73 3A 50 4B 65 79 43 68 61 69 6E 3B 09 28    Pos:PKeyChain;.(
0116F0:  2A 70 6F 69 6E 74 65 72 73 20 75 73 65 64 20 66    *pointers used f
011700:  6F 72 20 73 65 61 72 63 68 69 6E 67 2A 29 0D 0A    or searching*)..
011710:  09 4C 65 61 72 6E 4B 65 79 3A 50 4B 65 79 43 68    .LearnKey:PKeyCh
011720:  61 69 6E 3B 09 09 28 2A 70 6F 69 6E 74 65 72 20    ain;..(*pointer 
011730:  74 6F 20 6B 65 79 20 62 65 69 6E 67 20 64 65 66    to key being def
011740:  69 6E 65 64 2A 29 0D 0A 0D 0A 09 28 2A 09 6B 65    ined*).....(*.ke
011750:  65 70 20 61 20 63 69 72 63 75 6C 61 72 20 62 75    ep a circular bu
011760:  66 66 65 72 20 6F 66 20 63 68 61 72 61 63 74 65    ffer of characte
011770:  72 73 20 77 68 69 6C 65 20 6D 61 74 63 68 69 6E    rs while matchin
011780:  67 20 69 73 0D 0A 09 09 68 61 70 70 65 6E 69 6E    g is....happenin
011790:  67 2A 29 0D 0A 0D 0A 09 69 6E 3A 43 41 52 44 49    g*).....in:CARDI
0117A0:  4E 41 4C 3D 31 3B 0D 0A 09 6F 75 74 3A 43 41 52    NAL=1;...out:CAR
0117B0:  44 49 4E 41 4C 3D 31 3B 0D 0A 09 6C 6F 6F 6B 3A    DINAL=1;...look:
0117C0:  43 41 52 44 49 4E 41 4C 3B 0D 0A 09 42 75 66 66    CARDINAL;...Buff
0117D0:  65 72 3A 41 52 52 41 59 5B 31 2E 2E 31 31 5D 20    er:ARRAY[1..11] 
0117E0:  4F 46 20 43 48 41 52 3B 09 0D 0A 09 53 68 6F 77    OF CHAR;....Show
0117F0:  43 68 61 6E 67 65 3A 42 4F 4F 4C 45 41 4E 3B 0D    Change:BOOLEAN;.
011800:  44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C    DEFINITION MODUL
011810:  45 20 4D 61 63 72 6F 73 3B 0D 0A 0D 0A 28 2A 09    E Macros;....(*.
011820:  41 20 73 69 6D 70 6C 65 20 6D 61 63 72 6F 20 70    A simple macro p
011830:  72 6F 63 65 73 73 6F 72 20 66 6F 72 20 20 74 68    rocessor for  th
011840:  65 20 65 64 69 74 6F 72 0D 0A 0D 0A 09 43 61 6E    e editor.....Can
011850:  20 70 72 6F 62 61 62 6C 79 20 62 65 20 65 61 73     probably be eas
011860:  69 6C 79 20 68 61 63 6B 65 64 20 66 6F 72 20 6F    ily hacked for o
011870:  74 68 65 72 20 70 75 72 70 6F 73 65 73 2A 29 0D    ther purposes*).
011880:  0A 0D 0A 56 41 52 09 46 6F 75 6E 64 3A 42 4F 4F    ...VAR.Found:BOO
011890:  4C 45 41 4E 3D 54 52 55 45 3B 0D 0A 0D 0A 28 2A    LEAN=TRUE;....(*
0118A0:  09 46 6F 75 6E 64 20 69 73 20 61 20 76 61 72 69    .Found is a vari
0118B0:  61 62 6C 65 20 77 68 69 63 68 2C 20 69 66 20 73    able which, if s
0118C0:  65 74 20 74 6F 20 66 61 6C 73 65 2C 20 77 69 6C    et to false, wil
0118D0:  6C 20 61 62 6F 72 74 20 61 6C 6C 0D 0A 09 6D 61    l abort all...ma
0118E0:  63 72 6F 73 20 2A 29 0D 0A 50 52 4F 43 45 44 55    cros *)..PROCEDU
0118F0:  52 45 20 4C 65 61 72 6E 4D 61 63 72 6F 3B 0D 0A    RE LearnMacro;..
011900:  50 52 4F 43 45 44 55 52 45 20 44 65 66 4D 61 63    PROCEDURE DefMac
011910:  72 6F 3B 0D 0A 0D 0A 28 2A 09 64 65 66 69 6E 65    ro;....(*.define
011920:  20 61 20 6D 61 63 72 6F 20 2A 29 0D 0A 0D 0A 50     a macro *)....P
011930:  52 4F 43 45 44 55 52 45 20 52 65 61 64 41 43 68    ROCEDURE ReadACh
011940:  61 72 28 56 41 52 20 63 68 3A 43 48 41 52 29 3B    ar(VAR ch:CHAR);
011950:  0D 0A 0D 0A 28 2A 09 72 65 61 64 20 6E 65 78 74    ....(*.read next
011960:  20 63 68 61 72 61 63 74 65 72 20 2D 20 66 72 6F     character - fro
011970:  6D 20 6D 61 63 72 6F 20 69 66 20 6F 6E 65 20 61    m macro if one a
011980:  63 74 69 76 65 0D 0A 09 09 09 20 20 20 20 2D 20    ctive.....    - 
011990:  66 72 6F 6D 20 74 65 72 6D 69 6E 61 6C 20 69 66    from terminal if
0119A0:  20 6E 6F 74 09 2A 29 0D 0A 0D 0A 50 52 4F 43 45     not.*)....PROCE
0119B0:  44 55 52 45 20 4D 61 63 72 6F 28 63 68 3A 43 48    DURE Macro(ch:CH
0119C0:  41 52 3B 72 65 70 65 61 74 3A 49 4E 54 45 47 45    AR;repeat:INTEGE
0119D0:  52 29 3B 0D 0A 0D 0A 28 2A 09 73 74 61 72 74 20    R);....(*.start 
0119E0:  6D 61 63 72 6F 20 77 69 74 68 20 67 69 76 65 6E    macro with given
0119F0:  20 63 68 61 72 61 63 74 65 72 20 76 61 6C 75 65     character value
011A00:  0A 50 52 4F 43 45 44 55 52 45 20 53 65 61 72 63    .PROCEDURE Searc
011A10:  68 54 6F 4E 65 78 74 28 63 68 3A 43 48 41 52 29    hToNext(ch:CHAR)
011A20:  3B 0D 0A 0D 0A 28 2A 09 53 65 61 72 63 68 20 66    ;....(*.Search f
011A30:  6F 72 20 74 68 65 20 63 68 61 72 61 63 74 65 72    or the character
011A40:  20 63 68 0D 0A 0D 0A 09 4B 65 79 50 6F 73 20 70     ch.....KeyPos p
011A50:  6F 69 6E 74 73 20 74 6F 20 74 68 65 20 66 69 72    oints to the fir
011A60:  73 74 20 74 61 62 6C 65 20 20 74 6F 20 65 78 61    st table  to exa
011A70:  6D 69 6E 65 0D 0A 09 66 6F 72 20 61 20 6D 61 74    mine...for a mat
011A80:  63 68 0D 0A 2A 29 0D 0A 42 45 47 49 4E 0D 0A 09    ch..*)..BEGIN...
011A90:  57 48 49 4C 45 20 28 4B 65 79 50 6F 73 3C 3E 4E    WHILE (KeyPos<>N
011AA0:  49 4C 29 20 41 4E 44 20 28 4B 65 79 50 6F 73 5E    IL) AND (KeyPos^
011AB0:  2E 63 68 3C 3E 63 68 29 20 44 4F 0D 0A 09 09 4B    .ch<>ch) DO....K
011AC0:  65 79 50 6F 73 3A 3D 4B 65 79 50 6F 73 5E 2E 4E    eyPos:=KeyPos^.N
011AD0:  65 78 74 41 6C 74 3B 0D 0A 09 09 45 4E 44 3B 0D    extAlt;....END;.
011AE0:  0A 09 45 4E 44 20 53 65 61 72 63 68 54 6F 4E 65    ..END SearchToNe
011AF0:  78 74 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 42    xt;..PROCEDURE B
011B00:  75 69 6C 64 4B 65 79 53 65 71 3B 0D 0A 0D 0A 28    uildKeySeq;....(
011B10:  2A 09 45 6E 74 65 72 20 61 20 6B 65 79 20 73 65    *.Enter a key se
011B20:  71 75 65 6E 63 65 20 69 6E 74 6F 20 74 68 65 20    quence into the 
011B30:  6B 65 79 20 73 65 71 75 65 6E 63 65 20 74 72 65    key sequence tre
011B40:  65 0D 0A 0D 0A 09 4F 6E 20 65 6E 74 72 79 2C 20    e.....On entry, 
011B50:  4B 65 79 53 65 71 20 63 6F 6E 74 61 69 6E 73 20    KeySeq contains 
011B60:  73 65 71 75 65 6E 63 65 20 74 6F 20 62 75 69 6C    sequence to buil
011B70:  64 0D 0A 0D 0A 09 4F 6E 20 65 78 69 74 2C 20 4B    d.....On exit, K
011B80:  65 79 50 6F 73 20 70 6F 69 6E 74 73 20 74 6F 20    eyPos points to 
011B90:  65 6E 74 72 79 20 66 6F 72 20 6D 61 63 72 6F 20    entry for macro 
011BA0:  70 6F 69 6E 74 65 72 2A 29 0D 0A 42 45 47 49 4E    pointer*)..BEGIN
011BB0:  0D 0A 09 69 3A 3D 31 3B 0D 0A 09 4B 65 79 50 6F    ...i:=1;...KeyPo
011BC0:  73 3A 3D 4B 65 79 43 68 61 69 6E 42 61 73 65 3B    s:=KeyChainBase;
011BD0:  0D 0A 09 4C 61 73 74 4B 65 79 50 6F 73 3A 3D 4E    ...LastKeyPos:=N
011BE0:  49 4C 3B 0D 0A 09 28 2A 20 46 69 72 73 74 20 73    IL;...(* First s
011BF0:  63 61 6E 20 64 6F 77 6E 20 63 6F 6D 6D 6F 6E 20    can down common 
011C00:  0D 0A 09 28 6D 75 73 74 20 62 65 20 61 6C 70 68    ...(must be alph
011C10:  61 29 2A 29 0D 0A 50 52 4F 43 45 44 55 52 45 20    a)*)..PROCEDURE 
011C20:  53 74 6F 72 65 4D 61 63 72 6F 73 3B 0D 0A 50 52    StoreMacros;..PR
011C30:  4F 43 45 44 55 52 45 20 50 72 69 6E 74 4D 61 63    OCEDURE PrintMac
011C40:  72 6F 73 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20    ros;..PROCEDURE 
011C50:  43 68 65 63 6B 49 6E 74 65 72 72 75 70 74 28 29    CheckInterrupt()
011C60:  3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 45 4E 44 20 4D    :BOOLEAN;..END M
011C70:  61 63 72 6F 73 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A    acros...........
011C80:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
011C90:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
011CA0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
011CB0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
011CC0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
011CD0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
011CE0:  1A 1A 1A 1A 1A 30 30 20 4D 4F 44 20 00 00 00 00    .....00 MOD ....
011CF0:  00 00 00 00 00 00 9B 4C 01 0D D7 27 01 04 00 00    .......L...'....
011D00:  3B 0D 0A 09 45 4C 53 45 09 52 45 54 55 52 4E 20    ;...ELSE.RETURN 
011D10:  30 20 45 4E 44 3B 0D 0A 09 45 4E 44 20 47 65 74    0 END;...END Get
011D20:  50 6F 73 69 74 69 6F 6E 3B 0D 0A 0D 0A 50 52 4F    Position;....PRO
011D30:  43 45 44 55 52 45 20 53 65 74 50 6F 73 69 74 69    CEDURE SetPositi
011D40:  6F 6E 28 46 6E 3A 46 49 4C 45 3B 50 6F 73 3A 43    on(Fn:FILE;Pos:C
011D50:  41 52 44 49 4E 41 4C 29 3B 0D 0A 42 45 47 49 4E    ARDINAL);..BEGIN
011D60:  0D 0A 09 66 3A 3D 46 6E 3B 0D 0A 09 49 46 20 6F    ...f:=Fn;...IF o
011D70:  70 65 6E 65 64 20 54 48 45 4E 0D 0A 09 09 53 65    pened THEN....Se
011D80:  61 72 63 68 3B 0D 0A 09 09 42 75 66 66 65 72 2E    arch;....Buffer.
011D90:  46 69 6C 65 45 6E 74 72 79 5B 45 6E 74 72 79 4E    FileEntry[EntryN
011DA0:  6F 5D 2E 46 69 6C 65 50 6F 73 3A 3D 50 6F 73 3B    o].FilePos:=Pos;
011DB0:  0D 0A 09 09 57 72 69 74 65 46 69 6C 65 0D 0A 09    ....WriteFile...
011DC0:  09 45 4E 44 0D 0A 09 45 4E 44 20 53 65 74 50 6F    .END...END SetPo
011DD0:  73 69 74 69 6F 6E 3B 0D 0A 0D 0A 42 45 47 49 4E    sition;....BEGIN
011DE0:  0D 0A 09 6F 70 65 6E 65 64 3A 3D 54 52 55 45 3B    ...opened:=TRUE;
011DF0:  09 28 2A 61 73 73 75 6D 65 20 66 69 6C 65 20 63    .(*assume file c
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 C9 02 00 00 00 02    ......R.........
011E20:  0F 00 C5 02 00 00 00 02 0F 00 C1 02 00 00 00 02    ................
011E30:  0F 00 C6 02 00 00 00 02 0F 00 C2 02 00 00 00 02    ................
011E40:  0F 00 C7 02 00 00 00 02 0F 00 C3 02 00 00 00 02    ................
011E50:  0F 00 C8 02 00 00 00 02 0F 00 C4 02 00 00 00 02    ................
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:  28 2A 09 4C 65 61 72 6E 20 61 20 6D 61 63 72 6F    (*.Learn a macro
011F10:  20 64 65 66 69 6E 69 74 69 6F 6E 09 0D 0A 09 63     definition....c
011F20:  61 6C 6C 65 64 20 61 74 20 65 69 74 68 65 72 20    alled at either 
011F30:  65 6E 64 20 6F 66 20 64 65 66 69 6E 69 74 69 6F    end of definitio
011F40:  6E 2A 29 0D 0A 0D 0A 42 45 47 49 4E 0D 0A 09 49    n*)....BEGIN...I
011F50:  46 20 4E 4F 54 20 4C 65 61 72 6E 69 6E 67 20 54    F NOT Learning T
011F60:  48 45 4E 0D 0A 09 09 47 65 74 44 65 66 43 68 61    HEN....GetDefCha
011F70:  72 3B 0D 0A 09 09 4C 65 61 72 6E 69 6E 67 3A 3D    r;....Learning:=
011F80:  54 52 55 45 3B 0D 0A 09 09 4C 65 61 72 6E 4C 65    TRUE;....LearnLe
011F90:  6E 3A 3D 30 3B 0D 0A 09 45 4C 53 45 0D 0A 09 09    n:=0;...ELSE....
011FA0:  4C 65 61 72 6E 4C 65 6E 3A 3D 4C 65 61 72 6E 4C    LearnLen:=LearnL
011FB0:  65 6E 2D 32 3B 0D 0A 09 09 44 65 66 4D 61 63 72    en-2;....DefMacr
011FC0:  6F 54 65 78 74 3B 0D 0A 09 09 4C 65 61 72 6E 69    oText;....Learni
011FD0:  6E 67 3A 3D 46 41 4C 53 45 3B 0D 0A 09 09 45 4E    ng:=FALSE;....EN
011FE0:  44 3B 0D 0A 09 45 4E 44 20 4C 65 61 72 6E 4D 61    D;...END LearnMa
011FF0:  63 72 6F 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20    cro;..PROCEDURE 
012000:  44 65 66 4D 61 63 72 6F 3B 0D 0A 42 45 47 49 4E    DefMacro;..BEGIN
012010:  0D 0A 09 47 65 74 44 65 66 43 68 61 72 3B 0D 0A    ...GetDefChar;..
012020:  09 49 46 20 28 4C 65 61 72 6E 63 68 3E 3D 27 41    .IF (Learnch>='A
012030:  27 29 20 41 4E 44 20 28 4C 65 61 72 6E 63 68 3C    ') AND (Learnch<
012040:  3D 27 5A 27 29 20 4F 52 20 28 4C 65 61 72 6E 63    ='Z') OR (Learnc
012050:  68 3D 45 53 43 29 20 54 48 45 4E 0D 0A 09 09 47    h=ESC) THEN....G
012060:  65 74 53 74 72 69 6E 67 28 54 65 78 74 2C 4C 65    etString(Text,Le
012070:  61 72 6E 4C 65 6E 2C 27 4D 61 63 72 6F 3A 27 29    arnLen,'Macro:')
012080:  3B 0D 0A 09 09 44 65 66 4D 61 63 72 6F 54 65 78    ;....DefMacroTex
012090:  74 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E 44    t;....END;...END
0120A0:  20 44 65 66 4D 61 63 72 6F 3B 0D 0A 50 52 4F 43     DefMacro;..PROC
0120B0:  45 44 55 52 45 20 4D 61 63 72 6F 28 63 68 3A 43    EDURE Macro(ch:C
0120C0:  48 41 52 3B 72 65 70 65 61 74 3A 49 4E 54 45 47    HAR;repeat:INTEG
0120D0:  45 52 29 3B 0D 0A 56 41 52 09 69 3A 43 41 52 44    ER);..VAR.i:CARD
0120E0:  49 4E 41 4C 3B 0D 0A 42 45 47 49 4E 0D 0A 09 63    INAL;..BEGIN...c
0120F0:  68 3A 3D 43 41 50 28 63 68 29 3B 0D 0A 09 49 46    h:=CAP(ch);...IF
012100:  20 74 68 65 20 63 68 61 72 61 63 74 65 72 73 20     the characters 
012110:  77 68 69 63 68 20 68 61 76 65 20 62 65 65 6E 20    which have been 
012120:  72 65 61 64 20 61 68 65 61 64 0D 0A 09 42 79 20    read ahead...By 
012130:  52 65 61 64 41 43 68 61 72 20 69 6E 20 61 6E 20    ReadAChar in an 
012140:  61 74 74 65 6D 70 74 20 74 6F 20 72 65 73 6F 6C    attempt to resol
012150:  76 65 20 61 20 6D 61 63 72 6F 0D 0A 0D 0A 09 57    ve a macro.....W
012160:  68 65 6E 20 52 65 61 64 41 43 68 61 72 20 69 73    hen ReadAChar is
012170:  20 65 6E 74 65 72 65 64 2C 20 69 66 20 74 68 69     entered, if thi
012180:  73 20 62 75 66 66 65 72 20 69 73 20 6E 6F 74 20    s buffer is not 
012190:  65 6D 70 74 79 2C 0D 0A 09 74 68 65 20 66 69 72    empty,...the fir
0121A0:  73 74 20 63 68 61 72 61 63 74 65 72 20 69 73 20    st character is 
0121B0:  74 6F 20 62 65 20 6C 6F 6F 6B 65 64 20 75 70 20    to be looked up 
0121C0:  74 6F 20 73 65 65 20 69 66 20 69 74 20 69 73 20    to see if it is 
0121D0:  61 20 0D 0A 09 73 74 61 72 74 20 6F 66 20 61 20    a ...start of a 
0121E0:  6B 65 79 20 64 65 66 69 6E 69 74 69 6F 6E 2A 29    key definition*)
0121F0:  0D 0A 50 52 4F 43 45 44 55 52 45 20 49 6E 63 50    ..PROCEDURE IncP
012200:  6F 69 6E 74 65 72 28 56 41 52 20 69 3A 43 41 52    ointer(VAR i:CAR
012210:  44 49 4E 41 4C 29 3B 0D 0A 42 45 47 49 4E 0D 0A    DINAL);..BEGIN..
012220:  09 49 46 20 69 3D 48 49 47 48 28 42 75 66 66 65    .IF i=HIGH(Buffe
012230:  72 29 20 54 48 45 4E 20 69 3A 3D 30 20 45 4E 44    r) THEN i:=0 END
012240:  3B 0D 0A 09 49 4E 43 28 69 29 3B 0D 0A 09 45 4E    ;...INC(i);...EN
012250:  44 20 49 6E 63 50 6F 69 6E 74 65 72 3B 0D 0A 42    D IncPointer;..B
012260:  45 47 49 4E 0D 0A 09 6C 6F 6F 6B 3A 3D 6F 75 74    EGIN...look:=out
012270:  3B 0D 0A 09 49 46 20 53 70 65 63 69 61 6C 53 65    ;...IF SpecialSe
012280:  71 75 65 6E 63 65 20 54 48 45 4E 20 0D 0A 0D 0A    quence THEN ....
012290:  09 09 28 2A 20 40 20 69 73 20 75 73 65 64 20 66    ..(* @ is used f
0122A0:  6F 72 20 66 75 6E 63 74 69 6F 6E 2F 61 72 72 6F    or function/arro
0122B0:  77 20 6B 65 79 73 20 61 73 20 61 20 6D 61 63 72    w keys as a macr
0122C0:  6F 0D 0A 09 09 20 20 20 73 6F 20 74 68 61 74 20    o....   so that 
0122D0:  72 65 70 65 61 74 20 63 6F 75 6E 74 73 20 63 61    repeat counts ca
0122E0:  6E 20 73 74 69 6C 6C 20 62 65 20 75 73 65 64 2A    n still be used*
0122F0:  29 0D 0A 0D 0A 09 09 52 65 73 75 6C 74 3A 3D 27    )......Result:='
012300:  43 68 61 72 3A 3D 4E 49 4C 3B 0D 0A 09 09 09 54    Char:=NIL;.....T
012310:  65 72 6D 69 6E 61 74 6F 72 3A 3D 46 41 4C 53 45    erminator:=FALSE
012320:  3B 0D 0A 09 09 09 49 46 20 4C 61 73 74 4B 65 79    ;.....IF LastKey
012330:  50 6F 73 3C 3E 4E 49 4C 20 54 48 45 4E 0D 0A 09    Pos<>NIL THEN...
012340:  09 09 09 4E 65 78 74 41 6C 74 3A 3D 4C 61 73 74    ...NextAlt:=Last
012350:  4B 65 79 50 6F 73 5E 2E 4E 65 78 74 43 68 61 72    KeyPos^.NextChar
012360:  3B 0D 0A 09 09 09 09 4C 61 73 74 4B 65 79 50 6F    ;......LastKeyPo
012370:  73 5E 2E 4E 65 78 74 43 68 61 72 3A 3D 4B 65 79    s^.NextChar:=Key
012380:  50 6F 73 3B 0D 0A 09 09 09 45 4C 53 45 0D 0A 09    Pos;.....ELSE...
012390:  09 09 09 4E 65 78 74 41 6C 74 3A 3D 4B 65 79 43    ...NextAlt:=KeyC
0123A0:  68 61 69 6E 42 61 73 65 3B 0D 0A 09 09 09 09 4B    hainBase;......K
0123B0:  65 79 43 68 61 69 6E 42 61 73 65 3A 3D 4B 65 79    eyChainBase:=Key
0123C0:  50 6F 73 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A    Pos;......END;..
0123D0:  09 09 09 45 4E 44 3B 0D 0A 09 09 4C 61 73 74 4B    ...END;....LastK
0123E0:  65 79 50 6F 73 3A 3D 4B 65 79 50 6F 73 3B 0D 0A    eyPos:=KeyPos;..
0123F0:  09 09 49 4E 43 28 69 29 3B 0D 0A 09 09 45 4E 44    ..INC(i);....END
012400:  3B 0D 0A 09 4C 65 61 72 6E 4B 65 79 3A 3D 4B 65    ;...LearnKey:=Ke
012410:  79 50 6F 73 3B 0D 0A 09 45 4E 44 20 42 75 69 6C    yPos;...END Buil
012420:  64 4B 65 79 53 65 71 3B 20 0D 0A 0D 0A 50 52 4F    dKeySeq; ....PRO
012430:  43 45 44 55 52 45 20 57 61 69 74 46 6F 72 43 68    CEDURE WaitForCh
012440:  3B 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20 4E 4F    ;..BEGIN...IF NO
012450:  54 20 53 68 6F 77 43 68 61 6E 67 65 20 54 48 45    T ShowChange THE
012460:  4E 0D 0A 09 09 53 68 6F 77 43 68 61 6E 67 65 3A    N....ShowChange:
012470:  3D 54 52 55 45 3B 0D 0A 09 09 4F 75 74 70 75 74    =TRUE;....Output
012480:  54 6F 53 63 72 65 65 6E 28 54 52 55 45 29 3B 0D    ToScreen(TRUE);.
012490:  0A 09 09 52 65 64 69 73 70 6C 61 79 3B 0D 0A 09    ...Redisplay;...
0124A0:  09 45 4E 44 3B 0D 0A 09 52 45 50 45 41 54 0D 0A    .END;...REPEAT..
0124B0:  09 09 42 75 73 79 52 65 61 64 28 63 68 29 3B 0D    ..BusyRead(ch);.
0124C0:  0A 09 09 55 4E 54 49 4C 20 63 68 3C 3E 30 78 3B    ...UNTIL ch<>0x;
0124D0:  0D 0A 09 45 4E 44 20 57 61 69 74 46 6F 72 43 68    ...END WaitForCh
0124E0:  3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 68 65    ;..PROCEDURE Che
0124F0:  63 6B 49 6E 74 65 72 72 75 70 74 28 29 3A 42 4F    ckInterrupt():BO
012500:  40 27 3B 0D 0A 09 09 53 70 65 63 69 61 6C 53 65    @';....SpecialSe
012510:  71 75 65 6E 63 65 3A 3D 46 41 4C 53 45 3B 0D 0A    quence:=FALSE;..
012520:  09 09 52 45 54 55 52 4E 0D 0A 09 09 45 4E 44 3B    ..RETURN....END;
012530:  0D 0A 09 4B 65 79 50 6F 73 3A 3D 4B 65 79 43 68    ...KeyPos:=KeyCh
012540:  61 69 6E 42 61 73 65 3B 0D 0A 09 4C 4F 4F 50 0D    ainBase;...LOOP.
012550:  0A 09 09 49 46 20 69 6E 3C 3E 6C 6F 6F 6B 20 54    ...IF in<>look T
012560:  48 45 4E 0D 0A 09 09 09 52 65 73 75 6C 74 3A 3D    HEN.....Result:=
012570:  42 75 66 66 65 72 5B 6C 6F 6F 6B 5D 3B 0D 0A 09    Buffer[look];...
012580:  09 09 49 6E 63 50 6F 69 6E 74 65 72 28 6C 6F 6F    ..IncPointer(loo
012590:  6B 29 3B 0D 0A 09 09 45 4C 53 45 0D 0A 09 09 09    k);....ELSE.....
0125A0:  47 65 74 41 43 68 61 72 28 52 65 73 75 6C 74 29    GetAChar(Result)
0125B0:  3B 0D 0A 09 09 09 42 75 66 66 65 72 5B 69 6E 5D    ;.....Buffer[in]
0125C0:  3A 3D 52 65 73 75 6C 74 3B 0D 0A 09 09 09 49 6E    :=Result;.....In
0125D0:  63 50 6F 69 6E 74 65 72 28 69 6E 29 3B 0D 0A 09    cPointer(in);...
0125E0:  09 09 6C 6F 6F 6B 3A 3D 69 6E 3B 0D 0A 09 09 09    ..look:=in;.....
0125F0:  45 4E 44 3B 0D 0A 09 09 53 65 61 72 63 68 54 6F    END;....SearchTo
012600:  4E 65 78 74 28 52 65 73 75 6C 74 29 3B 0D 0A 09    Next(Result);...
012610:  09 49 46 20 4B 65 79 50 6F 73 3D 4E 49 4C 20 54    .IF KeyPos=NIL T
012620:  48 45 4E 0D 0A 09 09 09 52 65 73 75 6C 74 3A 3D    HEN.....Result:=
012630:  42 75 66 66 65 72 5B 6F 75 74 5D 3B 0D 0A 09 09    Buffer[out];....
012640:  09 49 6E 63 50 6F 69 6E 74 65 72 28 6F 75 74 29    .IncPointer(out)
012650:  3B 0D 0A 09 09 09 52 45 54 55 52 4E 0D 0A 09 09    ;.....RETURN....
012660:  09 45 4E 44 3B 0D 0A 09 09 57 49 54 48 20 4B 65    .END;....WITH Ke
012670:  79 50 6F 73 5E 20 44 4F 0D 0A 09 09 09 49 46 20    yPos^ DO.....IF 
012680:  54 65 72 6D 69 6E 61 74 6F 72 20 54 48 45 4E 0D    Terminator THEN.
012690:  0A 09 09 09 09 6F 75 74 3A 3D 6C 6F 6F 6B 3B 0D    .....out:=look;.
0126A0:  0A 09 09 09 09 69 6E 3A 3D 6C 6F 6F 6B 3B 0D 0A    .....in:=look;..
0126B0:  0D 0A 09 09 09 09 28 2A 20 77 65 20 63 6F 75 6C    ......(* we coul
0126C0:  64 20 61 64 64 20 74 68 65 20 6D 61 63 72 6F 20    d add the macro 
0126D0:  0D 0A 09 09 09 09 64 69 72 65 63 74 6C 79 20 61    ......directly a
0126E0:  74 20 74 68 69 73 20 70 6F 69 6E 74 20 28 74 68    t this point (th
0126F0:  65 20 66 69 72 73 74 0D 0A 09 09 09 09 76 65 72    e first......ver
012700:  4F 4C 45 41 4E 3B 0D 0A 0D 0A 28 2A 09 43 68 65    OLEAN;....(*.Che
012710:  63 6B 20 74 68 65 20 6B 65 79 62 6F 61 72 64 20    ck the keyboard 
012720:  66 6F 72 20 61 6E 20 69 6E 74 65 72 75 70 74 20    for an interupt 
012730:  28 43 6F 6E 74 72 6F 6C 20 55 29 0D 0A 0D 0A 09    (Control U).....
012740:  41 6C 73 6F 2C 20 69 66 20 45 73 63 61 70 65 20    Also, if Escape 
012750:  68 61 73 20 62 65 65 6E 20 74 79 70 65 64 2C 20    has been typed, 
012760:  73 74 6F 70 20 74 65 72 6D 69 6E 61 6C 20 6F 75    stop terminal ou
012770:  74 70 75 74 0D 0A 09 75 6E 74 69 6C 20 61 6E 6F    tput...until ano
012780:  74 68 65 72 20 63 68 61 72 61 63 74 65 72 20 69    ther character i
012790:  73 20 74 79 70 65 64 2A 29 0D 0A 0D 0A 56 41 52    s typed*)....VAR
0127A0:  09 63 68 31 3A 43 48 41 52 3B 0D 0A 42 45 47 49    .ch1:CHAR;..BEGI
0127B0:  4E 0D 0A 09 42 75 73 79 52 65 61 64 28 63 68 31    N...BusyRead(ch1
0127C0:  29 3B 0D 0A 09 43 41 53 45 20 63 68 31 20 4F 46    );...CASE ch1 OF
0127D0:  20 0D 0A 09 09 31 35 78 3A 52 45 54 55 52 4E 20     ....15x:RETURN 
0127E0:  54 52 55 45 0D 0A 09 09 20 20 20 20 7C 0D 0A 09    TRUE....    |...
0127F0:  09 31 62 78 3A 53 68 6F 77 43 68 61 6E 67 65 3A    .1bx:ShowChange:
012800:  3D 46 41 4C 53 45 3B 0D 0A 09 09 20 20 20 20 4F    =FALSE;....    O
012810:  75 74 70 75 74 54 6F 53 63 72 65 65 6E 28 46 41    utputToScreen(FA
012820:  4C 53 45 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09    LSE);....END;...
012830:  52 45 54 55 52 4E 20 46 41 4C 53 45 0D 0A 09 45    RETURN FALSE...E
012840:  4E 44 20 43 68 65 63 6B 49 6E 74 65 72 72 75 70    ND CheckInterrup
012850:  74 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 47 65    t;..PROCEDURE Ge
012860:  74 41 43 68 61 72 28 56 41 52 20 63 68 31 3A 43    tAChar(VAR ch1:C
012870:  48 41 52 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 49    HAR);..BEGIN...I
012880:  46 20 4D 61 63 72 6F 44 65 70 74 68 3D 30 20 54    F MacroDepth=0 T
012890:  48 45 4E 0D 0A 09 09 57 61 69 74 46 6F 72 43 68    HEN....WaitForCh
0128A0:  3B 0D 0A 09 09 63 68 31 3A 3D 63 68 3B 0D 0A 09    ;....ch1:=ch;...
0128B0:  09 49 46 20 4C 65 61 72 6E 69 6E 67 20 41 4E 44    .IF Learning AND
0128C0:  20 28 4C 65 61 72 6E 4C 65 6E 3C 48 49 47 48 28     (LearnLen<HIGH(
0128D0:  54 65 78 74 29 29 20 54 48 45 4E 0D 0A 09 09 09    Text)) THEN.....
0128E0:  49 4E 43 28 4C 65 61 72 6E 4C 65 6E 29 3B 0D 0A    INC(LearnLen);..
0128F0:  09 09 09 54 65 78 74 5B 4C 65 61 72 6E 4C 65 6E    ...Text[LearnLen
012900:  73 69 6F 6E 20 64 69 64 20 73 6F 29 2C 20 62 75    sion did so), bu
012910:  74 20 74 68 61 74 20 77 6F 75 6C 64 20 70 72 65    t that would pre
012920:  76 65 6E 74 20 74 68 65 0D 0A 09 09 09 09 75 73    vent the......us
012930:  65 20 6F 66 20 72 65 70 65 61 74 20 63 6F 75 6E    e of repeat coun
012940:  74 73 20 77 69 74 68 20 66 75 6E 63 74 69 6F 6E    ts with function
012950:  2F 61 72 72 6F 77 0D 0A 09 09 09 09 6B 65 79 73    /arrow......keys
012960:  2E 20 53 6F 20 69 6E 73 74 65 61 64 20 45 53 43    . So instead ESC
012970:  20 40 20 69 73 20 72 65 74 75 72 6E 65 64 2C 20     @ is returned, 
012980:  77 68 65 72 65 0D 0A 09 09 09 09 45 53 43 20 40    where......ESC @
012990:  20 69 73 20 61 6C 77 61 79 73 20 74 68 65 20 6D     is always the m
0129A0:  61 63 72 6F 20 77 65 20 6A 75 73 74 20 66 6F 75    acro we just fou
0129B0:  6E 64 2A 29 0D 0A 0D 0A 09 09 09 09 43 6F 6D 6D    nd*)........Comm
0129C0:  61 6E 64 73 5B 27 40 27 5D 3A 3D 44 65 66 3B 0D    ands['@']:=Def;.
0129D0:  0A 09 09 09 09 53 70 65 63 69 61 6C 53 65 71 75    .....SpecialSequ
0129E0:  65 6E 63 65 3A 3D 54 52 55 45 3B 0D 0A 09 09 09    ence:=TRUE;.....
0129F0:  09 52 65 73 75 6C 74 3A 3D 45 53 43 3B 0D 0A 09    .Result:=ESC;...
012A00:  09 09 0D 0A 09 09 09 09 52 45 54 55 52 4E 3B 0D    ........RETURN;.
012A10:  0A 09 09 09 45 4C 53 45 0D 0A 09 09 09 09 4B 65    ....ELSE......Ke
012A20:  79 50 6F 73 3A 3D 4E 65 78 74 43 68 61 72 3B 0D    yPos:=NextChar;.
012A30:  0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 45 4E    .....END;.....EN
012A40:  44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E 44    D;....END;...END
012A50:  20 52 65 61 64 41 43 68 61 72 3B 0D 0A 09 09 09     ReadAChar;.....
012A60:  09 09 0D 0A 50 52 4F 43 45 44 55 52 45 20 47 65    ....PROCEDURE Ge
012A70:  74 44 65 66 43 68 61 72 3B 0D 0A 56 41 52 09 54    tDefChar;..VAR.T
012A80:  65 78 74 3A 41 52 52 41 59 5B 31 2E 2E 31 5D 20    ext:ARRAY[1..1] 
012A90:  4F 46 20 43 48 41 52 3B 0D 0A 42 45 47 49 4E 0D    OF CHAR;..BEGIN.
012AA0:  0A 09 47 65 74 53 74 72 69 6E 67 28 54 65 78 74    ..GetString(Text
012AB0:  2C 4C 65 61 72 6E 4C 65 6E 2C 27 43 68 61 72 20    ,LearnLen,'Char 
012AC0:  74 6F 20 64 65 66 69 6E 65 3A 27 29 3B 0D 0A 09    to define:');...
012AD0:  4C 65 61 72 6E 63 68 3A 3D 43 41 50 28 54 65 78    Learnch:=CAP(Tex
012AE0:  74 5B 31 5D 29 3B 0D 0A 09 49 46 20 4C 65 61 72    t[1]);...IF Lear
012AF0:  6E 63 68 3D 45 53 43 20 54 48 45 4E 0D 0A 09 09    nch=ESC THEN....
012B00:  5D 3A 3D 63 68 3B 0D 0A 09 09 09 45 4E 44 3B 0D    ]:=ch;.....END;.
012B10:  0A 09 45 4C 53 45 0D 0A 09 09 57 49 54 48 20 4D    ..ELSE....WITH M
012B20:  61 63 72 6F 53 74 61 63 6B 5B 4D 61 63 72 6F 44    acroStack[MacroD
012B30:  65 70 74 68 5D 20 44 4F 0D 0A 09 09 09 49 46 20    epth] DO.....IF 
012B40:  50 6F 73 3E 44 65 66 5E 2E 4C 65 6E 67 74 68 20    Pos>Def^.Length 
012B50:  54 48 45 4E 0D 0A 09 09 09 20 20 20 20 44 45 43    THEN.....    DEC
012B60:  28 43 6F 75 6E 74 29 3B 0D 0A 09 09 09 20 20 20    (Count);.....   
012B70:  20 49 46 20 43 68 65 63 6B 49 6E 74 65 72 72 75     IF CheckInterru
012B80:  70 74 28 29 20 4F 52 20 4E 4F 54 20 46 6F 75 6E    pt() OR NOT Foun
012B90:  64 20 54 48 45 4E 0D 0A 09 09 09 09 4D 61 63 72    d THEN......Macr
012BA0:  6F 44 65 70 74 68 3A 3D 31 3B 0D 0A 09 09 09 09    oDepth:=1;......
012BB0:  43 6F 75 6E 74 3A 3D 30 3B 0D 0A 09 09 09 09 45    Count:=0;......E
012BC0:  4E 44 3B 0D 0A 09 09 09 20 20 20 20 49 46 20 43    ND;.....    IF C
012BD0:  6F 75 6E 74 3C 31 20 54 48 45 4E 0D 0A 09 09 09    ount<1 THEN.....
012BE0:  09 44 45 43 28 4D 61 63 72 6F 44 65 70 74 68 29    .DEC(MacroDepth)
012BF0:  3B 0D 0A 09 09 09 20 20 20 20 45 4C 53 45 0D 0A    ;.....    ELSE..
012C00:  09 09 09 09 50 6F 73 3A 3D 31 3B 0D 0A 09 09 09    ....Pos:=1;.....
012C10:  09 45 4E 44 3B 0D 0A 09 09 09 20 20 20 20 47 65    .END;.....    Ge
012C20:  74 41 43 68 61 72 28 63 68 31 29 3B 0D 0A 09 09    tAChar(ch1);....
012C30:  09 45 4C 53 45 0D 0A 09 09 09 09 63 68 31 3A 3D    .ELSE......ch1:=
012C40:  44 65 66 5E 2E 43 6F 6D 6D 43 68 61 72 73 5B 50    Def^.CommChars[P
012C50:  6F 73 5D 3B 0D 0A 09 09 09 09 49 4E 43 28 50 6F    os];......INC(Po
012C60:  73 29 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09    s);......END;...
012C70:  09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A    ..END;....END;..
012C80:  09 45 4E 44 20 47 65 74 41 43 68 61 72 3B 0D 0A    .END GetAChar;..
012C90:  50 52 4F 43 45 44 55 52 45 20 41 64 64 4D 61 63    PROCEDURE AddMac
012CA0:  72 6F 28 70 3A 50 4B 65 79 44 65 66 3B 72 65 70    ro(p:PKeyDef;rep
012CB0:  65 61 74 3A 49 4E 54 45 47 45 52 29 3B 0D 0A 42    eat:INTEGER);..B
012CC0:  45 47 49 4E 0D 0A 09 49 46 20 28 70 3C 3E 4E 49    EGIN...IF (p<>NI
012CD0:  4C 29 20 41 4E 44 20 28 4D 61 63 72 6F 44 65 70    L) AND (MacroDep
012CE0:  74 68 3C 3D 48 49 47 48 28 4D 61 63 72 6F 53 74    th<=HIGH(MacroSt
012CF0:  61 63 6B 29 29 20 54 48 45 4E 0D 0A 0D 0A 09 09    ack)) THEN......
012D00:  47 65 74 53 74 72 69 6E 67 28 4B 65 79 53 65 71    GetString(KeySeq
012D10:  2C 4C 65 61 72 6E 4C 65 6E 2C 27 4B 65 79 20 74    ,LearnLen,'Key t
012D20:  6F 20 64 65 66 69 6E 65 3A 27 29 3B 0D 0A 09 09    o define:');....
012D30:  42 75 69 6C 64 4B 65 79 53 65 71 3B 0D 0A 09 09    BuildKeySeq;....
012D40:  45 4E 44 3B 0D 0A 09 45 4E 44 20 47 65 74 44 65    END;...END GetDe
012D50:  66 43 68 61 72 3B 0D 0A 50 52 4F 43 45 44 55 52    fChar;..PROCEDUR
012D60:  45 20 44 65 66 4D 61 63 72 6F 54 65 78 74 3B 0D    E DefMacroText;.
012D70:  0A 56 41 52 09 70 3A 50 4B 65 79 44 65 66 3B 0D    .VAR.p:PKeyDef;.
012D80:  0A 42 45 47 49 4E 0D 0A 09 49 46 20 4C 65 61 72    .BEGIN...IF Lear
012D90:  6E 4C 65 6E 3E 30 20 54 48 45 4E 0D 0A 09 09 41    nLen>0 THEN....A
012DA0:  4C 4C 4F 43 41 54 45 28 70 2C 54 53 49 5A 45 28    LLOCATE(p,TSIZE(
012DB0:  43 41 52 44 49 4E 41 4C 29 2B 4C 65 61 72 6E 4C    CARDINAL)+LearnL
012DC0:  65 6E 29 3B 0D 0A 09 09 49 46 20 4C 65 61 72 6E    en);....IF Learn
012DD0:  63 68 3D 45 53 43 20 54 48 45 4E 20 0D 0A 09 09    ch=ESC THEN ....
012DE0:  09 4C 65 61 72 6E 4B 65 79 5E 2E 44 65 66 3A 3D    .LearnKey^.Def:=
012DF0:  70 3B 0D 0A 09 09 09 4C 65 61 72 6E 4B 65 79 5E    p;.....LearnKey^
012E00:  2E 54 65 72 6D 69 6E 61 74 6F 72 3A 3D 54 52 55    .Terminator:=TRU
012E10:  45 0D 0A 09 09 45 4C 53 45 20 0D 0A 09 09 09 43    E....ELSE .....C
012E20:  6F 6D 6D 61 6E 64 73 5B 4C 65 61 72 6E 63 68 5D    ommands[Learnch]
012E30:  3A 3D 70 20 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09    :=p .....END;...
012E40:  09 57 49 54 48 20 70 5E 20 44 4F 0D 0A 09 09 09    .WITH p^ DO.....
012E50:  4C 65 6E 67 74 68 3A 3D 4C 65 61 72 6E 4C 65 6E    Length:=LearnLen
012E60:  3B 0D 0A 09 09 09 46 4F 52 20 4C 65 61 72 6E 4C    ;.....FOR LearnL
012E70:  65 6E 3A 3D 4C 65 61 72 6E 4C 65 6E 20 54 4F 20    en:=LearnLen TO 
012E80:  31 20 42 59 20 2D 31 20 44 4F 0D 0A 09 09 09 09    1 BY -1 DO......
012E90:  43 6F 6D 6D 43 68 61 72 73 5B 4C 65 61 72 6E 4C    CommChars[LearnL
012EA0:  65 6E 5D 3A 3D 54 65 78 74 5B 4C 65 61 72 6E 4C    en]:=Text[LearnL
012EB0:  65 6E 5D 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A    en];......END;..
012EC0:  09 09 09 45 4E 44 3B 0D 0A 0D 0A 09 09 45 4E 44    ...END;......END
012ED0:  3B 0D 0A 09 45 4E 44 20 44 65 66 4D 61 63 72 6F    ;...END DefMacro
012EE0:  54 65 78 74 3B 0D 0A 50 52 4F 43 45 44 55 52 45    Text;..PROCEDURE
012EF0:  20 4C 65 61 72 6E 4D 61 63 72 6F 3B 0D 0A 0D 0A     LearnMacro;....
012F00:  28 2A 6D 61 6B 65 20 73 75 72 65 20 74 68 61 74    (*make sure that
012F10:  20 6D 61 63 72 6F 20 69 73 20 6E 6F 74 20 72 65     macro is not re
012F20:  63 75 72 73 69 76 65 2A 29 0D 0A 0D 0A 0D 0A 09    cursive*).......
012F30:  09 46 4F 52 20 69 3A 3D 31 20 54 4F 20 4D 61 63    .FOR i:=1 TO Mac
012F40:  72 6F 44 65 70 74 68 20 44 4F 0D 0A 09 09 09 49    roDepth DO.....I
012F50:  46 20 4D 61 63 72 6F 53 74 61 63 6B 5B 69 5D 2E    F MacroStack[i].
012F60:  44 65 66 3D 70 20 54 48 45 4E 0D 0A 09 09 09 09    Def=p THEN......
012F70:  45 72 72 6F 72 4D 65 73 73 61 67 65 28 27 52 65    ErrorMessage('Re
012F80:  63 75 72 73 69 76 65 20 6D 61 63 72 6F 73 21 27    cursive macros!'
012F90:  2C 27 20 27 29 3B 0D 0A 09 09 09 09 4D 61 63 72    ,' ');......Macr
012FA0:  6F 44 65 70 74 68 3A 3D 30 3B 0D 0A 09 09 09 09    oDepth:=0;......
012FB0:  52 45 54 55 52 4E 3B 0D 0A 09 09 09 09 45 4E 44    RETURN;......END
012FC0:  3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 49 4E    ;.....END;....IN
012FD0:  43 28 4D 61 63 72 6F 44 65 70 74 68 29 3B 0D 0A    C(MacroDepth);..
012FE0:  09 09 57 49 54 48 20 4D 61 63 72 6F 53 74 61 63    ..WITH MacroStac
012FF0:  6B 5B 4D 61 63 72 6F 44 65 70 74 68 5D 20 44 4F    k[MacroDepth] DO
013000:  0D 0A 09 09 09 50 6F 73 3A 3D 31 3B 0D 0A 09 09    .....Pos:=1;....
013010:  09 44 65 66 3A 3D 70 3B 0D 0A 09 09 09 43 6F 75    .Def:=p;.....Cou
013020:  6E 74 3A 3D 72 65 70 65 61 74 3B 0D 0A 09 09 09    nt:=repeat;.....
013030:  45 4E 44 3B 28 2A 57 49 54 48 2A 29 0D 0A 09 09    END;(*WITH*)....
013040:  45 4E 44 3B 28 2A 70 3C 3E 4E 49 4C 20 65 74 63    END;(*p<>NIL etc
013050:  2A 29 0D 0A 09 45 4E 44 20 41 64 64 4D 61 63 72    *)...END AddMacr
013060:  6F 3B 0D 0A 56 41 52 09 53 70 65 63 69 61 6C 53    o;..VAR.SpecialS
013070:  65 71 75 65 6E 63 65 3A 42 4F 4F 4C 45 41 4E 3D    equence:BOOLEAN=
013080:  46 41 4C 53 45 3B 0D 0A 50 52 4F 43 45 44 55 52    FALSE;..PROCEDUR
013090:  45 20 52 65 61 64 41 43 68 61 72 28 56 41 52 20    E ReadAChar(VAR 
0130A0:  52 65 73 75 6C 74 3A 43 48 41 52 29 3B 0D 0A 0D    Result:CHAR);...
0130B0:  0A 28 2A 09 72 65 61 64 20 6E 65 78 74 20 63 68    .(*.read next ch
0130C0:  61 72 61 63 74 65 72 2C 20 63 68 65 63 6B 69 6E    aracter, checkin
0130D0:  67 20 66 6F 72 20 61 72 72 6F 77 73 2F 66 75 6E    g for arrows/fun
0130E0:  63 74 69 6F 6E 20 6B 65 79 73 0D 0A 09 69 6E 20    ction keys...in 
0130F0:  61 6E 64 20 6F 75 74 20 70 6F 69 6E 74 20 74 6F    and out point to
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 C9 02 00 00 00 02    ......R.........
013120:  10 00 C5 02 00 00 00 02 10 00 C1 02 00 00 00 02    ................
013130:  10 00 C6 02 00 00 00 02 10 00 C2 02 00 00 00 02    ................
013140:  10 00 C7 02 00 00 00 02 10 00 C3 02 00 00 00 02    ................
013150:  10 00 C8 02 00 00 00 02 10 00 C4 02 00 00 00 02    ................
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:  73 20 61 20 6C 61 62 65 6C 0D 0A 09 54 68 69 73    s a label...This
013210:  20 6C 61 62 65 6C 20 6D 75 73 74 20 6E 6F 74 20     label must not 
013220:  62 65 20 61 6C 74 65 72 65 64 20 75 6E 6C 65 73    be altered unles
013230:  73 20 69 74 20 69 73 20 64 65 6C 65 74 65 64 0D    s it is deleted.
013240:  0A 09 77 69 74 68 20 44 65 6C 50 6F 73 69 74 69    ..with DelPositi
013250:  6F 6E 20 66 69 72 73 74 2A 29 0D 0A 0D 0A 50 52    on first*)....PR
013260:  4F 43 45 44 55 52 45 20 4C 61 62 65 6C 4F 70 28    OCEDURE LabelOp(
013270:  56 41 52 20 66 3A 45 64 69 74 46 69 6C 65 3B 44    VAR f:EditFile;D
013280:  65 66 69 6E 65 3A 42 4F 4F 4C 45 41 4E 3B 63 68    efine:BOOLEAN;ch
013290:  3A 43 48 41 52 29 3A 42 4F 4F 4C 45 41 4E 3B 0D    :CHAR):BOOLEAN;.
0132A0:  0A 0D 0A 28 2A 09 44 65 66 69 6E 65 20 6F 72 20    ...(*.Define or 
0132B0:  73 65 74 20 61 20 6C 61 62 65 6C 0D 0A 09 63 68    set a label...ch
0132C0:  20 69 73 20 61 20 63 68 61 72 61 63 74 65 72 20     is a character 
0132D0:  66 72 6F 6D 20 74 68 65 20 73 65 74 20 30 2E 2E    from the set 0..
0132E0:  39 2C 42 2C 4B 0D 0A 2A 29 0D 0A 0D 0A 50 52 4F    9,B,K..*)....PRO
0132F0:  43 45 44 55 52 45 20 44 65 6C 43 68 61 72 73 28    CEDURE DelChars(
013300:  56 41 52 20 66 3A 45 64 69 74 46 69 6C 65 3B 6E    VAR f:EditFile;n
013310:  75 6D 62 65 72 3A 49 4E 54 45 47 45 52 29 3B 0D    umber:INTEGER);.
013320:  0A 0D 0A 28 2A 09 64 65 6C 65 74 65 20 61 20 6E    ...(*.delete a n
013330:  75 6D 62 65 72 20 6F 66 20 63 68 61 72 61 63 74    umber of charact
013340:  65 72 73 0D 0A 09 69 66 20 6E 75 6D 62 65 72 20    ers...if number 
013350:  69 73 20 3C 30 2C 20 69 74 20 68 61 73 20 74 68    is <0, it has th
013360:  65 20 66 6F 6C 6C 6F 77 69 6E 67 20 6D 65 61 6E    e following mean
013370:  69 6E 67 73 3A 0D 0A 09 2D 31 20 64 65 6C 65 74    ings:...-1 delet
013380:  65 20 74 6F 20 65 6E 64 20 6F 66 20 6C 69 6E 65    e to end of line
013390:  0D 0A 09 2D 32 20 64 65 6C 65 74 65 20 65 6E 74    ...-2 delete ent
0133A0:  69 72 65 20 6C 69 6E 65 0D 0A 09 2D 33 20 64 65    ire line...-3 de
0133B0:  6C 65 74 65 20 72 65 6D 61 69 6E 64 65 72 20 6F    lete remainder o
0133C0:  66 20 66 69 6C 65 2A 29 0D 0A 50 52 4F 43 45 44    f file*)..PROCED
0133D0:  55 52 45 20 49 6E 73 43 68 61 72 73 28 56 41 52    URE InsChars(VAR
0133E0:  20 66 3A 45 64 69 74 46 69 6C 65 3B 56 41 52 20     f:EditFile;VAR 
0133F0:  53 3A 41 52 52 41 59 20 4F 46 20 43 48 41 52 3B    S:ARRAY OF CHAR;
013400:  29 0D 0A 0D 0A 09 4C 65 61 72 6E 63 68 3A 3D 45    ).....Learnch:=E
013410:  53 43 3B 0D 0A 09 4B 65 79 53 65 71 3A 3D 27 20    SC;...KeySeq:=' 
013420:  20 20 20 20 20 20 20 20 20 27 3B 0D 0A 09 4F 75             ';...Ou
013430:  74 4B 65 79 53 65 71 28 31 2C 4B 65 79 43 68 61    tKeySeq(1,KeyCha
013440:  69 6E 42 61 73 65 29 3B 0D 0A 09 0D 0A 09 49 46    inBase);......IF
013450:  20 72 65 70 6C 79 3C 3E 30 20 54 48 45 4E 0D 0A     reply<>0 THEN..
013460:  09 09 42 6C 6F 63 6B 5B 72 65 70 6C 79 5D 3A 3D    ..Block[reply]:=
013470:  30 78 3B 0D 0A 09 09 53 65 71 57 72 69 74 65 42    0x;....SeqWriteB
013480:  6C 6F 63 6B 28 46 2C 41 44 52 28 42 6C 6F 63 6B    lock(F,ADR(Block
013490:  29 2C 42 6C 6F 63 6B 4C 65 6E 2C 72 65 70 6C 79    ),BlockLen,reply
0134A0:  29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 43 6C 6F    );....END;...Clo
0134B0:  73 65 28 46 29 3B 0D 0A 09 45 4E 44 20 53 74 6F    se(F);...END Sto
0134C0:  72 65 4D 61 63 72 6F 73 3B 0D 0A 50 52 4F 43 45    reMacros;..PROCE
0134D0:  44 55 52 45 20 4F 75 74 43 68 28 63 68 3A 43 48    DURE OutCh(ch:CH
0134E0:  41 52 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 49 46    AR);..BEGIN...IF
0134F0:  20 63 68 3C 27 20 27 20 54 48 45 4E 0D 0A 09 09     ch<' ' THEN....
013500:  57 72 69 74 65 28 27 5E 27 29 3B 57 72 69 74 65    Write('^');Write
013510:  28 43 48 52 28 4F 52 44 28 63 68 29 2B 36 34 29    (CHR(ORD(ch)+64)
013520:  29 3B 0D 0A 09 45 4C 53 45 0D 0A 09 09 57 72 69    );...ELSE....Wri
013530:  74 65 28 63 68 29 3B 0D 0A 09 09 45 4E 44 3B 0D    te(ch);....END;.
013540:  0A 09 45 4E 44 20 4F 75 74 43 68 3B 0D 0A 50 52    ..END OutCh;..PR
013550:  4F 43 45 44 55 52 45 20 50 72 69 6E 74 4D 61 63    OCEDURE PrintMac
013560:  72 6F 73 3B 0D 0A 42 45 47 49 4E 0D 0A 09 46 4F    ros;..BEGIN...FO
013570:  52 20 63 68 3A 3D 27 41 27 20 54 4F 20 27 5A 27    R ch:='A' TO 'Z'
013580:  20 44 4F 0D 0A 09 09 49 46 20 43 6F 6D 6D 61 6E     DO....IF Comman
013590:  64 73 5B 63 68 5D 3C 3E 4E 49 4C 20 54 48 45 4E    ds[ch]<>NIL THEN
0135A0:  20 0D 0A 09 09 20 20 20 20 57 49 54 48 20 43 6F     ....    WITH Co
0135B0:  6D 6D 61 6E 64 73 5B 63 68 5D 5E 20 44 4F 0D 0A    mmands[ch]^ DO..
0135C0:  09 09 09 4F 75 74 43 68 28 63 68 29 3B 0D 0A 09    ...OutCh(ch);...
0135D0:  09 09 46 4F 52 20 69 3A 3D 31 20 54 4F 20 4C 65    ..FOR i:=1 TO Le
0135E0:  6E 67 74 68 20 44 4F 20 0D 0A 09 09 09 09 4F 75    ngth DO ......Ou
0135F0:  74 43 68 28 43 6F 6D 6D 43 68 61 72 73 5B 69 5D    tCh(CommChars[i]
013600:  20 63 68 3C 27 20 27 20 54 48 45 4E 20 63 68 3A     ch<' ' THEN ch:
013610:  3D 43 48 52 28 4F 52 44 28 63 68 29 2B 36 34 29    =CHR(ORD(ch)+64)
013620:  20 45 4E 44 3B 0D 0A 09 49 46 20 28 63 68 3E 3D     END;...IF (ch>=
013630:  27 40 27 29 20 41 4E 44 20 28 63 68 3C 3D 27 5A    '@') AND (ch<='Z
013640:  27 29 20 54 48 45 4E 0D 0A 09 09 41 64 64 4D 61    ') THEN....AddMa
013650:  63 72 6F 28 43 6F 6D 6D 61 6E 64 73 5B 63 68 5D    cro(Commands[ch]
013660:  2C 72 65 70 65 61 74 29 3B 0D 0A 09 09 45 4E 44    ,repeat);....END
013670:  3B 0D 0A 09 45 4E 44 20 4D 61 63 72 6F 3B 0D 0A    ;...END Macro;..
013680:  56 41 52 09 46 3A 46 49 4C 45 3B 0D 0A 09 72 65    VAR.F:FILE;...re
013690:  70 6C 79 3A 49 4E 54 45 47 45 52 3B 0D 0A 50 52    ply:INTEGER;..PR
0136A0:  4F 43 45 44 55 52 45 20 4C 6F 61 64 4D 61 63 72    OCEDURE LoadMacr
0136B0:  6F 73 3B 0D 0A 56 41 52 09 42 6C 6F 63 6B 3A 41    os;..VAR.Block:A
0136C0:  52 52 41 59 5B 30 2E 2E 42 6C 6F 63 6B 4C 65 6E    RRAY[0..BlockLen
0136D0:  2D 31 5D 20 4F 46 20 43 48 41 52 3B 0D 0A 42 45    -1] OF CHAR;..BE
0136E0:  47 49 4E 0D 0A 09 4C 4F 4F 50 0D 0A 09 09 53 65    GIN...LOOP....Se
0136F0:  71 52 65 61 64 42 6C 6F 63 6B 28 46 2C 41 44 52    qReadBlock(F,ADR
013700:  28 42 6C 6F 63 6B 29 2C 42 6C 6F 63 6B 4C 65 6E    (Block),BlockLen
013710:  2C 72 65 70 6C 79 29 3B 0D 0A 09 09 49 46 20 72    ,reply);....IF r
013720:  65 70 6C 79 3C 3E 42 6C 6F 63 6B 4C 65 6E 20 54    eply<>BlockLen T
013730:  48 45 4E 20 45 58 49 54 20 45 4E 44 3B 0D 0A 09    HEN EXIT END;...
013740:  09 72 65 70 6C 79 3A 3D 30 3B 0D 0A 09 09 57 48    .reply:=0;....WH
013750:  49 4C 45 20 42 6C 6F 63 6B 5B 72 65 70 6C 79 5D    ILE Block[reply]
013760:  3C 3E 30 78 20 44 4F 0D 0A 09 09 09 4C 65 61 72    <>0x DO.....Lear
013770:  6E 4C 65 6E 3A 3D 4F 52 44 28 42 6C 6F 63 6B 5B    nLen:=ORD(Block[
013780:  72 65 70 6C 79 5D 29 3B 0D 0A 09 09 09 4C 65 61    reply]);.....Lea
013790:  72 6E 63 68 3A 3D 42 6C 6F 63 6B 5B 72 65 70 6C    rnch:=Block[repl
0137A0:  79 2B 31 5D 3B 0D 0A 09 09 09 49 46 20 4C 65 61    y+1];.....IF Lea
0137B0:  72 6E 63 68 3D 45 53 43 20 54 48 45 4E 0D 0A 09    rnch=ESC THEN...
0137C0:  09 09 09 4D 6F 76 65 75 70 28 41 44 52 28 42 6C    ...Moveup(ADR(Bl
0137D0:  6F 63 6B 5B 72 65 70 6C 79 2B 32 5D 29 2C 41 44    ock[reply+2]),AD
0137E0:  52 28 4B 65 79 53 65 71 29 2C 31 30 29 3B 0D 0A    R(KeySeq),10);..
0137F0:  09 09 09 09 42 75 69 6C 64 4B 65 79 53 65 71 3B    ....BuildKeySeq;
013800:  29 20 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09    ) ......END;....
013810:  09 45 4E 44 3B 0D 0A 09 09 20 20 20 20 57 72 69    .END;....    Wri
013820:  74 65 4C 6E 3B 0D 0A 09 09 20 20 20 20 45 4E 44    teLn;....    END
013830:  3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 57 72 69 74    ;....END;...Writ
013840:  65 53 74 72 69 6E 67 28 27 20 45 6E 74 65 72 20    eString(' Enter 
013850:  61 6E 79 20 63 68 61 72 61 63 74 65 72 20 74 6F    any character to
013860:  20 63 6F 6E 74 69 6E 75 65 20 3A 27 29 3B 0D 0A     continue :');..
013870:  09 57 61 69 74 46 6F 72 43 68 3B 0D 0A 09 45 4E    .WaitForCh;...EN
013880:  44 20 50 72 69 6E 74 4D 61 63 72 6F 73 3B 0D 0A    D PrintMacros;..
013890:  42 45 47 49 4E 0D 0A 09 46 4F 52 20 63 68 3A 3D    BEGIN...FOR ch:=
0138A0:  27 40 27 20 54 4F 20 27 5A 27 20 44 4F 20 43 6F    '@' TO 'Z' DO Co
0138B0:  6D 6D 61 6E 64 73 5B 63 68 5D 3A 3D 4E 49 4C 20    mmands[ch]:=NIL 
0138C0:  45 4E 44 3B 0D 0A 09 53 68 6F 77 43 68 61 6E 67    END;...ShowChang
0138D0:  65 3A 3D 54 52 55 45 3B 0D 0A 09 4C 6F 6F 6B 75    e:=TRUE;...Looku
0138E0:  70 28 46 2C 27 4D 41 43 52 4F 53 2E 44 41 54 20    p(F,'MACROS.DAT 
0138F0:  27 2C 72 65 70 6C 79 29 3B 0D 0A 09 49 46 20 72    ',reply);...IF r
013900:  65 70 6C 79 3D 30 20 54 48 45 4E 0D 0A 09 09 4C    eply=0 THEN....L
013910:  6F 61 64 4D 61 63 72 6F 73 3B 0D 0A 09 09 45 4E    oadMacros;....EN
013920:  44 3B 0D 0A 09 09 0D 0A 09 45 4E 44 20 4D 61 63    D;.......END Mac
013930:  72 6F 73 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ros.............
013940:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
013950:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
013960:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
013970:  1A 1A 1A 1A 1A 1A 1A 1A 29 3B 0D 0A 09 09 09 57    ........);.....W
013980:  75 72 78 2C 63 75 72 79 2C 52 65 44 69 73 70 6C    urx,cury,ReDispl
013990:  61 79 3B 0D 0A 46 52 4F 4D 20 09 49 6E 74 4C 6F    ay;..FROM .IntLo
0139A0:  67 69 63 20 49 4D 50 4F 52 54 20 49 41 4E 44 3B    gic IMPORT IAND;
0139B0:  0D 0A 46 52 4F 4D 09 46 69 6C 65 73 20 49 4D 50    ..FROM.Files IMP
0139C0:  4F 52 54 20 4C 6F 6F 6B 75 70 2C 43 6C 6F 73 65    ORT Lookup,Close
0139D0:  2C 46 49 4C 45 2C 52 65 61 64 42 6C 6F 63 6B 3B    ,FILE,ReadBlock;
0139E0:  0D 0A 46 52 4F 4D 09 53 59 53 54 45 4D 20 49 4D    ..FROM.SYSTEM IM
0139F0:  50 4F 52 54 20 41 44 52 3B 0D 0A 43 4F 4E 53 54    PORT ADR;..CONST
013A00:  0D 0A 09 09 09 09 72 65 70 6C 79 3A 3D 72 65 70    ......reply:=rep
013A10:  6C 79 2B 31 30 3B 0D 0A 09 09 09 09 45 4E 44 3B    ly+10;......END;
013A20:  0D 0A 0D 0A 09 09 09 72 65 70 6C 79 3A 3D 72 65    .......reply:=re
013A30:  70 6C 79 2B 32 3B 0D 0A 09 09 09 46 4F 52 20 69    ply+2;.....FOR i
013A40:  3A 3D 31 20 54 4F 20 4C 65 61 72 6E 4C 65 6E 20    :=1 TO LearnLen 
013A50:  44 4F 0D 0A 09 09 09 09 54 65 78 74 5B 69 5D 3A    DO......Text[i]:
013A60:  3D 42 6C 6F 63 6B 5B 72 65 70 6C 79 5D 3B 0D 0A    =Block[reply];..
013A70:  09 09 09 09 49 4E 43 28 72 65 70 6C 79 29 3B 0D    ....INC(reply);.
013A80:  0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 44 65    .....END;.....De
013A90:  66 4D 61 63 72 6F 54 65 78 74 3B 0D 0A 09 09 09    fMacroText;.....
013AA0:  45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45    END;....END;...E
013AB0:  4E 44 20 4C 6F 61 64 4D 61 63 72 6F 73 3B 09 09    ND LoadMacros;..
013AC0:  09 0D 0A 50 52 4F 43 45 44 55 52 45 20 53 74 6F    ...PROCEDURE Sto
013AD0:  72 65 4D 61 63 72 6F 73 3B 0D 0A 56 41 52 09 42    reMacros;..VAR.B
013AE0:  6C 6F 63 6B 3A 41 52 52 41 59 5B 30 2E 2E 42 6C    lock:ARRAY[0..Bl
013AF0:  6F 63 6B 4C 65 6E 2D 31 5D 20 4F 46 20 43 48 41    ockLen-1] OF CHA
013B00:  52 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20    R;....PROCEDURE 
013B10:  53 74 6F 72 65 4F 6E 65 4D 61 63 72 6F 28 70 3A    StoreOneMacro(p:
013B20:  50 4B 65 79 44 65 66 29 3B 0D 0A 42 45 47 49 4E    PKeyDef);..BEGIN
013B30:  0D 0A 09 49 46 20 70 3C 3E 4E 49 4C 20 54 48 45    ...IF p<>NIL THE
013B40:  4E 0D 0A 09 09 57 49 54 48 20 70 5E 20 44 4F 0D    N....WITH p^ DO.
013B50:  0A 09 09 09 49 46 20 28 72 65 70 6C 79 2B 4C 65    ....IF (reply+Le
013B60:  6E 67 74 68 2B 31 34 29 3E 3D 42 6C 6F 63 6B 4C    ngth+14)>=BlockL
013B70:  65 6E 20 54 48 45 4E 0D 0A 09 09 09 09 42 6C 6F    en THEN......Blo
013B80:  63 6B 5B 72 65 70 6C 79 5D 3A 3D 30 78 3B 0D 0A    ck[reply]:=0x;..
013B90:  09 09 09 09 53 65 71 57 72 69 74 65 42 6C 6F 63    ....SeqWriteBloc
013BA0:  6B 28 46 2C 41 44 52 28 42 6C 6F 63 6B 29 2C 42    k(F,ADR(Block),B
013BB0:  6C 6F 63 6B 4C 65 6E 2C 72 65 70 6C 79 29 3B 0D    lockLen,reply);.
013BC0:  0A 09 09 09 09 72 65 70 6C 79 3A 3D 30 3B 0D 0A    .....reply:=0;..
013BD0:  09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 42 6C 6F    ....END;.....Blo
013BE0:  63 6B 5B 72 65 70 6C 79 5D 3A 3D 43 48 52 28 4C    ck[reply]:=CHR(L
013BF0:  65 6E 67 74 68 29 3B 0D 0A 09 09 09 42 6C 6F 63    ength);.....Bloc
013C00:  44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C    DEFINITION MODUL
013C10:  45 20 4D 61 6B 65 45 64 69 74 73 3B 0D 0A 0D 0A    E MakeEdits;....
013C20:  0D 0A 28 2A 09 52 6F 75 74 69 6E 65 73 20 74 6F    ..(*.Routines to
013C30:  20 65 64 69 74 20 61 20 66 69 6C 65 0D 0A 0D 0A     edit a file....
013C40:  09 28 69 2E 65 2E 2C 20 61 63 74 75 61 6C 6C 79    .(i.e., actually
013C50:  20 6D 61 6B 65 20 63 68 61 6E 67 65 73 20 74 6F     make changes to
013C60:  20 74 68 65 20 66 69 6C 65 29 0D 0A 0D 0A 09 44     the file).....D
013C70:  20 4D 6F 6F 72 65 20 31 31 20 4A 61 6E 20 38 35     Moore 11 Jan 85
013C80:  2A 29 0D 0A 0D 0A 46 52 4F 4D 20 46 69 6C 65 73    *)....FROM Files
013C90:  20 49 4D 50 4F 52 54 20 46 69 6C 65 4E 61 6D 65     IMPORT FileName
013CA0:  3B 0D 0A 0D 0A 54 59 50 45 09 45 64 69 74 46 69    ;....TYPE.EditFi
013CB0:  6C 65 3B 0D 0A 09 50 6F 73 69 74 69 6F 6E 3B 0D    le;...Position;.
013CC0:  0A 09 0D 0A 09 45 72 72 6F 72 52 65 63 6F 72 64    .....ErrorRecord
013CD0:  3D 52 45 43 4F 52 44 0D 0A 09 09 45 72 72 6F 72    =RECORD....Error
013CE0:  4E 75 6D 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09    Num:CARDINAL;...
013CF0:  09 43 68 61 72 50 3A 43 41 52 44 49 4E 41 4C 3B    .CharP:CARDINAL;
013D00:  0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 72 72 6F 72    ....END;...Error
013D10:  41 72 72 61 79 3D 41 52 52 41 59 5B 30 2E 2E 39    Array=ARRAY[0..9
013D20:  5D 20 4F 46 20 45 72 72 6F 72 52 65 63 6F 72 64    ] OF ErrorRecord
013D30:  3B 0D 0A 56 41 52 09 45 72 72 6F 72 4C 69 73 74    ;..VAR.ErrorList
013D40:  3A 45 72 72 6F 72 41 72 72 61 79 3B 0D 0A 09 45    :ErrorArray;...E
013D50:  72 72 6F 72 43 6F 75 6E 74 3A 43 41 52 44 49 4E    rrorCount:CARDIN
013D60:  41 4C 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45    AL;....PROCEDURE
013D70:  20 4F 70 65 6E 46 69 6C 65 28 56 41 52 20 66 3A     OpenFile(VAR f:
013D80:  45 64 69 74 46 69 6C 65 3B 66 6E 3A 46 69 6C 65    EditFile;fn:File
013D90:  4E 61 6D 65 3B 56 41 52 20 72 65 70 6C 79 3A 49    Name;VAR reply:I
013DA0:  4E 54 45 47 45 52 3B 50 6F 73 3A 43 41 52 44 49    NTEGER;Pos:CARDI
013DB0:  4E 41 4C 29 3B 0D 0A 0D 0A 28 2A 09 4C 6F 61 64    NAL);....(*.Load
013DC0:  20 74 68 65 20 66 69 6C 65 20 69 6E 74 6F 20 6D     the file into m
013DD0:  65 6D 6F 72 79 0D 0A 0D 0A 09 49 66 20 69 6E 73    emory.....If ins
013DE0:  75 66 66 69 63 69 65 6E 74 20 6D 65 6D 6F 72 79    ufficient memory
013DF0:  2C 20 72 65 74 75 72 6E 73 20 72 65 70 6C 79 3D    , returns reply=
013E00:  6B 5B 72 65 70 6C 79 2B 31 5D 3A 3D 4C 65 61 72    k[reply+1]:=Lear
013E10:  6E 63 68 3B 0D 0A 09 09 09 49 46 20 4C 65 61 72    nch;.....IF Lear
013E20:  6E 63 68 3D 45 53 43 20 54 48 45 4E 0D 0A 09 09    nch=ESC THEN....
013E30:  09 09 4D 6F 76 65 75 70 28 41 44 52 28 4B 65 79    ..Moveup(ADR(Key
013E40:  53 65 71 29 2C 41 44 52 28 42 6C 6F 63 6B 5B 72    Seq),ADR(Block[r
013E50:  65 70 6C 79 2B 32 5D 29 2C 31 30 29 3B 0D 0A 09    eply+2]),10);...
013E60:  09 09 09 72 65 70 6C 79 3A 3D 72 65 70 6C 79 2B    ...reply:=reply+
013E70:  31 30 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09    10;......END;...
013E80:  09 09 72 65 70 6C 79 3A 3D 72 65 70 6C 79 2B 32    ..reply:=reply+2
013E90:  3B 0D 0A 09 09 09 46 4F 52 20 69 3A 3D 31 20 54    ;.....FOR i:=1 T
013EA0:  4F 20 4C 65 6E 67 74 68 20 44 4F 0D 0A 09 09 09    O Length DO.....
013EB0:  09 42 6C 6F 63 6B 5B 72 65 70 6C 79 5D 3A 3D 43    .Block[reply]:=C
013EC0:  6F 6D 6D 43 68 61 72 73 5B 69 5D 3B 0D 0A 09 09    ommChars[i];....
013ED0:  09 09 49 4E 43 28 72 65 70 6C 79 29 3B 0D 0A 09    ..INC(reply);...
013EE0:  09 09 09 45 4E 44 3B 0D 0A 09 09 09 45 4E 44 3B    ...END;.....END;
013EF0:  28 2A 57 49 54 48 20 70 5E 2A 29 0D 0A 09 09 45    (*WITH p^*)....E
013F00:  4E 44 20 28 2A 49 46 20 3C 3E 4E 49 4C 2A 29 0D    ND (*IF <>NIL*).
013F10:  0A 09 45 4E 44 20 53 74 6F 72 65 4F 6E 65 4D 61    ..END StoreOneMa
013F20:  63 72 6F 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20    cro;..PROCEDURE 
013F30:  4F 75 74 4B 65 79 53 65 71 28 43 68 61 72 4E 6F    OutKeySeq(CharNo
013F40:  3A 43 41 52 44 49 4E 41 4C 3B 70 3A 50 4B 65 79    :CARDINAL;p:PKey
013F50:  43 68 61 69 6E 29 3B 0D 0A 42 45 47 49 4E 0D 0A    Chain);..BEGIN..
013F60:  09 49 46 20 70 3C 3E 4E 49 4C 20 54 48 45 4E 0D    .IF p<>NIL THEN.
013F70:  0A 09 09 57 49 54 48 20 70 5E 20 44 4F 0D 0A 09    ...WITH p^ DO...
013F80:  09 09 4B 65 79 53 65 71 5B 43 68 61 72 4E 6F 5D    ..KeySeq[CharNo]
013F90:  3A 3D 63 68 3B 0D 0A 09 09 09 49 46 20 54 65 72    :=ch;.....IF Ter
013FA0:  6D 69 6E 61 74 6F 72 20 54 48 45 4E 0D 0A 09 09    minator THEN....
013FB0:  09 09 53 74 6F 72 65 4F 6E 65 4D 61 63 72 6F 28    ..StoreOneMacro(
013FC0:  44 65 66 29 3B 0D 0A 09 09 09 45 4C 53 45 0D 0A    Def);.....ELSE..
013FD0:  09 09 09 09 4F 75 74 4B 65 79 53 65 71 28 43 68    ....OutKeySeq(Ch
013FE0:  61 72 4E 6F 2B 31 2C 4E 65 78 74 43 68 61 72 29    arNo+1,NextChar)
013FF0:  3B 0D 0A 09 09 09 09 4B 65 79 53 65 71 5B 43 68    ;......KeySeq[Ch
014000:  2D 33 0D 0A 09 69 66 20 66 69 6C 65 20 6E 6F 74    -3...if file not
014010:  20 66 6F 75 6E 64 2C 20 72 65 74 75 72 6E 73 20     found, returns 
014020:  72 65 70 6C 79 3D 2D 32 0D 0A 09 72 65 70 6C 79    reply=-2...reply
014030:  3E 30 20 69 66 20 6F 6B 2C 20 72 65 74 75 72 6E    >0 if ok, return
014040:  73 20 62 6C 6F 63 6B 73 20 72 65 61 64 2A 29 0D    s blocks read*).
014050:  0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 6C 6F    ...PROCEDURE Clo
014060:  73 65 46 69 6C 65 28 56 41 52 20 66 3A 45 64 69    seFile(VAR f:Edi
014070:  74 46 69 6C 65 3B 56 41 52 20 72 65 70 6C 79 3A    tFile;VAR reply:
014080:  49 4E 54 45 47 45 52 29 3B 0D 0A 0D 0A 28 2A 09    INTEGER);....(*.
014090:  57 72 69 74 65 20 6F 75 74 20 63 68 61 6E 67 65    Write out change
0140A0:  73 20 74 6F 20 61 6E 20 65 64 69 74 20 66 69 6C    s to an edit fil
0140B0:  65 20 61 6E 64 20 63 6C 6F 73 65 20 69 74 0D 0A    e and close it..
0140C0:  09 44 6F 6E 65 20 72 65 74 75 72 6E 73 20 66 61    .Done returns fa
0140D0:  6C 73 65 20 69 66 20 6F 75 74 20 6F 66 20 64 69    lse if out of di
0140E0:  73 63 20 73 70 61 63 65 2A 29 0D 0A 0D 0A 50 52    sc space*)....PR
0140F0:  4F 43 45 44 55 52 45 20 41 62 61 6E 64 6F 6E 46    OCEDURE AbandonF
014100:  69 6C 65 28 66 3A 45 64 69 74 46 69 6C 65 29 3B    ile(f:EditFile);
014110:  0D 0A 0D 0A 28 2A 09 41 62 61 6E 64 6F 6E 20 63    ....(*.Abandon c
014120:  68 61 6E 67 65 73 20 74 6F 20 61 6E 20 65 64 69    hanges to an edi
014130:  74 20 66 69 6C 65 2A 29 0D 0A 50 52 4F 43 45 44    t file*)..PROCED
014140:  55 52 45 20 47 65 74 50 6F 73 69 74 69 6F 6E 28    URE GetPosition(
014150:  56 41 52 20 66 3A 45 64 69 74 46 69 6C 65 3B 56    VAR f:EditFile;V
014160:  41 52 20 70 3A 50 6F 73 69 74 69 6F 6E 29 3B 0D    AR p:Position);.
014170:  0A 50 52 4F 43 45 44 55 52 45 20 53 65 74 50 6F    .PROCEDURE SetPo
014180:  73 69 74 69 6F 6E 28 56 41 52 20 66 3A 45 64 69    sition(VAR f:Edi
014190:  74 46 69 6C 65 3B 70 3A 50 6F 73 69 74 69 6F 6E    tFile;p:Position
0141A0:  29 3B 0D 0A 28 2A 09 67 65 74 2F 73 65 74 20 70    );..(*.get/set p
0141B0:  6F 73 69 74 69 6F 6E 20 69 6E 20 61 20 66 69 6C    osition in a fil
0141C0:  65 0D 0A 09 47 65 74 50 6F 73 69 74 69 6F 6E 20    e...GetPosition 
0141D0:  72 65 74 75 72 6E 73 20 74 68 65 20 63 75 72 65    returns the cure
0141E0:  6E 74 20 70 6F 73 69 74 69 6F 6E 0D 0A 09 44 65    nt position...De
0141F0:  66 69 6E 65 4C 61 62 65 6C 20 64 65 66 69 6E 65    fineLabel define
014200:  61 72 4E 6F 2B 31 5D 3A 3D 27 20 27 3B 0D 0A 09    arNo+1]:=' ';...
014210:  09 09 09 45 4E 44 3B 0D 0A 09 09 09 4F 75 74 4B    ...END;.....OutK
014220:  65 79 53 65 71 28 43 68 61 72 4E 6F 2C 4E 65 78    eySeq(CharNo,Nex
014230:  74 41 6C 74 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D    tAlt);.....END;.
014240:  0A 09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 4F 75    ...END;...END Ou
014250:  74 4B 65 79 53 65 71 3B 0D 0A 42 45 47 49 4E 0D    tKeySeq;..BEGIN.
014260:  0A 09 4C 65 61 72 6E 63 68 3A 3D 27 41 27 3B 0D    ..Learnch:='A';.
014270:  0A 09 57 48 49 4C 45 20 28 43 6F 6D 6D 61 6E 64    ..WHILE (Command
014280:  73 5B 4C 65 61 72 6E 63 68 5D 3D 4E 49 4C 29 20    s[Learnch]=NIL) 
014290:  41 4E 44 20 28 4C 65 61 72 6E 63 68 3C 3D 27 5A    AND (Learnch<='Z
0142A0:  27 29 20 44 4F 20 0D 0A 09 09 4C 65 61 72 6E 63    ') DO ....Learnc
0142B0:  68 3A 3D 43 48 52 28 4F 52 44 28 4C 65 61 72 6E    h:=CHR(ORD(Learn
0142C0:  63 68 29 2B 31 29 3B 0D 0A 09 09 45 4E 44 3B 0D    ch)+1);....END;.
0142D0:  0A 09 49 46 20 4C 65 61 72 6E 63 68 3E 27 5A 27    ..IF Learnch>'Z'
0142E0:  20 54 48 45 4E 20 52 45 54 55 52 4E 20 45 4E 44     THEN RETURN END
0142F0:  3B 0D 0A 09 43 72 65 61 74 65 28 46 2C 27 4D 41    ;...Create(F,'MA
014300:  43 52 4F 53 2E 44 41 54 20 27 2C 72 65 70 6C 79    CROS.DAT ',reply
014310:  29 3B 0D 0A 09 49 46 20 72 65 70 6C 79 3C 3E 30    );...IF reply<>0
014320:  20 54 48 45 4E 0D 0A 09 09 57 72 69 74 65 53 74     THEN....WriteSt
014330:  72 69 6E 67 28 27 20 63 6F 75 6C 64 20 6E 6F 74    ring(' could not
014340:  20 73 61 76 65 20 6D 61 63 72 6F 73 20 66 69 6C     save macros fil
014350:  65 27 29 3B 0D 0A 09 09 57 72 69 74 65 4C 6E 3B    e');....WriteLn;
014360:  0D 0A 09 09 52 45 54 55 52 4E 0D 0A 09 09 45 4E    ....RETURN....EN
014370:  44 3B 0D 0A 09 49 46 20 72 65 70 6C 79 3C 3E 30    D;...IF reply<>0
014380:  20 54 48 45 4E 20 52 45 54 55 52 4E 20 45 4E 44     THEN RETURN END
014390:  3B 0D 0A 09 72 65 70 6C 79 3A 3D 30 3B 0D 0A 09    ;...reply:=0;...
0143A0:  46 4F 52 20 4C 65 61 72 6E 63 68 3A 3D 27 41 27    FOR Learnch:='A'
0143B0:  20 54 4F 20 27 5A 27 20 44 4F 20 53 74 6F 72 65     TO 'Z' DO Store
0143C0:  4F 6E 65 4D 61 63 72 6F 28 43 6F 6D 6D 61 6E 64    OneMacro(Command
0143D0:  73 5B 4C 65 61 72 6E 63 68 5D 29 20 45 4E 44 3B    s[Learnch]) END;
0143E0:  0D 0A 0D 0A 09 28 2A 4E 6F 77 20 6F 75 74 70 75    .....(*Now outpu
0143F0:  74 20 6B 65 79 20 73 65 71 75 65 6E 63 65 73 2A    t key sequences*
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 C9 02 00 00 00 02    ......R.........
014420:  11 00 C5 02 00 00 00 02 11 00 C1 02 00 00 00 02    ................
014430:  11 00 C6 02 00 00 00 02 11 00 C2 02 00 00 00 02    ................
014440:  11 00 C7 02 00 00 00 02 11 00 C3 02 00 00 00 02    ................
014450:  11 00 C8 02 00 00 00 02 11 00 C4 02 00 00 00 02    ................
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:  6C 6F 63 6B 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55    lock;....PROCEDU
014510:  52 45 20 73 65 74 63 75 72 70 6F 73 28 56 41 52    RE setcurpos(VAR
014520:  20 66 3A 45 64 69 74 46 69 6C 65 29 3B 0D 0A 42     f:EditFile);..B
014530:  45 47 49 4E 0D 0A 09 57 49 54 48 20 66 2E 43 75    EGIN...WITH f.Cu
014540:  72 50 6F 73 20 44 4F 0D 0A 09 09 57 6F 72 6B 69    rPos DO....Worki
014550:  6E 67 3A 3D 42 6C 6F 63 6B 3B 0D 0A 09 09 43 68    ng:=Block;....Ch
014560:  61 72 50 6F 73 3A 3D 4F 66 66 73 65 74 3B 0D 0A    arPos:=Offset;..
014570:  09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 73 65 74    ..END;...END set
014580:  63 75 72 70 6F 73 3B 0D 0A 0D 0A 50 52 4F 43 45    curpos;....PROCE
014590:  44 55 52 45 20 73 61 76 65 63 75 72 70 6F 73 28    DURE savecurpos(
0145A0:  56 41 52 20 66 3A 45 64 69 74 46 69 6C 65 29 3B    VAR f:EditFile);
0145B0:  0D 0A 42 45 47 49 4E 0D 0A 09 57 49 54 48 20 66    ..BEGIN...WITH f
0145C0:  2E 43 75 72 50 6F 73 20 44 4F 0D 0A 09 09 49 46    .CurPos DO....IF
0145D0:  20 43 68 61 72 50 6F 73 3E 4F 52 44 28 57 6F 72     CharPos>ORD(Wor
0145E0:  6B 69 6E 67 5E 2E 42 6C 6F 63 6B 4C 65 6E 29 20    king^.BlockLen) 
0145F0:  54 48 45 4E 20 0D 0A 09 09 09 43 68 61 72 50 6F    THEN .....CharPo
014600:  73 3A 3D 57 6F 72 6B 69 6E 67 5E 2E 42 6C 6F 63    s:=Working^.Bloc
014610:  6B 4C 65 6E 20 0D 0A 09 09 09 45 4E 44 3B 0D 0A    kLen .....END;..
014620:  09 09 42 6C 6F 63 6B 3A 3D 57 6F 72 6B 69 6E 67    ..Block:=Working
014630:  3B 0D 0A 09 09 4F 66 66 73 65 74 3A 3D 43 68 61    ;....Offset:=Cha
014640:  72 50 6F 73 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09    rPos;....END;...
014650:  45 4E 44 20 73 61 76 65 63 75 72 70 6F 73 3B 0D    END savecurpos;.
014660:  0A 56 41 52 09 69 3A 49 4E 54 45 47 45 52 3B 0D    .VAR.i:INTEGER;.
014670:  0A 50 52 4F 43 45 44 55 52 45 20 42 61 63 6B 75    .PROCEDURE Backu
014680:  70 28 29 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A    p():BOOLEAN;....
014690:  28 2A 09 62 61 63 6B 20 75 70 20 61 20 63 68 61    (*.back up a cha
0146A0:  72 61 63 74 65 72 20 70 6F 73 69 74 69 6F 6E 20    racter position 
0146B0:  69 6E 20 74 68 65 20 63 75 72 72 65 6E 74 20 66    in the current f
0146C0:  69 6C 65 0D 0A 09 72 65 74 75 72 6E 73 20 54 52    ile...returns TR
0146D0:  55 45 20 69 66 20 73 75 63 63 65 73 73 66 75 6C    UE if successful
0146E0:  2A 29 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20 43    *)..BEGIN...IF C
0146F0:  68 61 72 50 6F 73 3C 3D 30 20 54 48 45 4E 0D 0A    harPos<=0 THEN..
014700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0147A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0147B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0147C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0147D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0147E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0147F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0148A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0148B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0148C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0148D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0148E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0148F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014900:  6C 65 6E 3A 49 4E 54 45 47 45 52 29 3B 0D 0A 28    len:INTEGER);..(
014910:  2A 09 69 6E 73 65 72 74 20 63 68 61 72 61 63 74    *.insert charact
014920:  65 72 73 2A 29 0D 0A 0D 0A 50 52 4F 43 45 44 55    ers*)....PROCEDU
014930:  52 45 20 52 65 74 72 6C 69 6E 65 28 56 41 52 20    RE Retrline(VAR 
014940:  66 3A 45 64 69 74 46 69 6C 65 3B 56 41 52 20 6C    f:EditFile;VAR l
014950:  65 6E 2C 70 6F 73 3A 49 4E 54 45 47 45 52 3B 0D    en,pos:INTEGER;.
014960:  0A 09 09 56 41 52 20 70 3A 50 6F 73 69 74 69 6F    ...VAR p:Positio
014970:  6E 3B 56 41 52 20 4C 69 6E 65 73 6D 6F 76 65 64    n;VAR Linesmoved
014980:  3A 49 4E 54 45 47 45 52 3B 4C 69 6E 65 73 3A 49    :INTEGER;Lines:I
014990:  4E 54 45 47 45 52 29 3B 0D 0A 0D 0A 28 2A 09 72    NTEGER);....(*.r
0149A0:  65 74 75 72 6E 20 69 6E 66 6F 72 6D 61 74 69 6F    eturn informatio
0149B0:  6E 20 61 62 6F 75 74 20 61 20 6C 69 6E 65 20 66    n about a line f
0149C0:  6F 72 20 74 68 65 20 67 69 76 65 6E 20 66 69 6C    or the given fil
0149D0:  65 0D 0A 0D 0A 09 6C 65 6E 20 72 65 74 75 72 6E    e.....len return
0149E0:  73 20 74 68 65 20 6C 65 6E 67 74 68 20 6F 66 20    s the length of 
0149F0:  74 68 65 20 6C 69 6E 65 0D 0A 09 70 6F 73 20 72    the line...pos r
014A00:  65 74 75 72 6E 73 20 63 75 72 72 65 6E 74 20 70    eturns current p
014A10:  6F 73 69 74 69 6F 6E 20 69 6E 20 74 68 65 20 6C    osition in the l
014A20:  69 6E 65 20 28 63 68 61 72 61 63 74 65 72 20 6E    ine (character n
014A30:  75 6D 62 65 72 29 0D 0A 09 70 20 20 20 72 65 74    umber)...p   ret
014A40:  75 72 6E 73 20 70 6F 73 69 74 69 6F 6E 20 6F 66    urns position of
014A50:  20 73 74 61 72 74 20 6F 66 20 6C 69 6E 65 0D 0A     start of line..
014A60:  09 4C 69 6E 65 73 6D 6F 76 65 64 20 72 65 74 75    .Linesmoved retu
014A70:  72 6E 73 20 6E 75 6D 62 65 72 20 6F 66 20 6C 69    rns number of li
014A80:  6E 65 73 20 61 63 74 75 61 6C 6C 79 20 6D 6F 76    nes actually mov
014A90:  65 64 20 2D 20 62 75 74 20 6F 6E 6C 79 0D 0A 09    ed - but only...
014AA0:  09 69 66 20 6D 6F 76 65 20 77 61 73 20 6E 65 67    .if move was neg
014AB0:  61 74 69 76 65 2E 20 52 65 74 75 72 6E 73 20 6E    ative. Returns n
014AC0:  65 67 61 74 69 76 65 20 76 61 6C 75 65 0D 0A 09    egative value...
014AD0:  6C 69 6E 65 73 20 28 69 6E 70 75 74 29 20 69 73    lines (input) is
014AE0:  20 6E 75 6D 62 65 72 20 6F 66 20 6C 69 6E 65 73     number of lines
014AF0:  20 74 6F 20 6D 6F 76 65 20 66 72 6F 6D 20 63 75     to move from cu
014B00:  49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D    IMPLEMENTATION M
014B10:  4F 44 55 4C 45 20 4D 61 6B 65 45 64 69 74 73 3B    ODULE MakeEdits;
014B20:  0D 0A 0D 0A 0D 0A 28 2A 09 52 6F 75 74 69 6E 65    ......(*.Routine
014B30:  73 20 74 6F 20 65 64 69 74 20 61 20 66 69 6C 65    s to edit a file
014B40:  0D 0A 0D 0A 09 28 69 2E 65 2E 2C 20 61 63 74 75    .....(i.e., actu
014B50:  61 6C 6C 79 20 6D 61 6B 65 20 63 68 61 6E 67 65    ally make change
014B60:  73 20 74 6F 20 74 68 65 20 66 69 6C 65 29 0D 0A    s to the file)..
014B70:  0D 0A 09 44 20 4D 6F 6F 72 65 20 31 31 20 4A 61    ...D Moore 11 Ja
014B80:  6E 20 38 35 2A 29 0D 0A 46 52 4F 4D 20 09 46 69    n 85*)..FROM .Fi
014B90:  6C 65 73 20 49 4D 50 4F 52 54 20 46 49 4C 45 2C    les IMPORT FILE,
014BA0:  4C 6F 6F 6B 75 70 2C 43 72 65 61 74 65 2C 53 65    Lookup,Create,Se
014BB0:  71 52 65 61 64 42 6C 6F 63 6B 2C 53 65 71 57 72    qReadBlock,SeqWr
014BC0:  69 74 65 42 6C 6F 63 6B 2C 0D 0A 09 4D 61 6B 65    iteBlock,...Make
014BD0:  42 41 4B 2C 43 6C 6F 73 65 3B 0D 0A 46 52 4F 4D    BAK,Close;..FROM
014BE0:  09 53 74 6F 72 61 67 65 20 49 4D 50 4F 52 54 20    .Storage IMPORT 
014BF0:  41 4C 4C 4F 43 41 54 45 2C 44 45 41 4C 4C 4F 43    ALLOCATE,DEALLOC
014C00:  41 54 45 2C 46 72 65 65 53 70 61 63 65 3B 0D 0A    ATE,FreeSpace;..
014C10:  46 52 4F 4D 09 53 59 53 54 45 4D 20 49 4D 50 4F    FROM.SYSTEM IMPO
014C20:  52 54 20 41 44 52 2C 42 59 54 45 3B 0D 0A 46 52    RT ADR,BYTE;..FR
014C30:  4F 4D 20 20 09 46 61 73 74 4D 6F 76 65 20 49 4D    OM  .FastMove IM
014C40:  50 4F 52 54 20 4D 6F 76 65 75 70 2C 4D 6F 76 65    PORT Moveup,Move
014C50:  64 6F 77 6E 2C 53 65 61 72 63 68 75 70 2C 53 65    down,Searchup,Se
014C60:  61 72 63 68 64 6F 77 6E 3B 0D 0A 46 52 4F 4D 09    archdown;..FROM.
014C70:  53 65 74 55 70 43 61 6C 6C 20 49 4D 50 4F 52 54    SetUpCall IMPORT
014C80:  20 4D 61 6B 65 43 61 6C 6C 3B 0D 0A 49 4D 50 4F     MakeCall;..IMPO
014C90:  52 54 09 45 64 69 74 53 74 61 74 75 73 3B 0D 0A    RT.EditStatus;..
014CA0:  43 4F 4E 53 54 09 54 65 78 74 4C 65 6E 3D 31 34    CONST.TextLen=14
014CB0:  30 3B 09 28 2A 20 6D 75 73 74 20 65 78 63 65 65    0;.(* must excee
014CC0:  64 20 61 20 62 6C 6F 63 6B 20 6F 6E 20 74 68 65    d a block on the
014CD0:  20 64 69 73 63 0D 0A 09 09 09 20 20 20 72 65 6D     disc.....   rem
014CE0:  61 69 6E 69 6E 67 20 73 70 61 63 65 20 69 73 20    aining space is 
014CF0:  66 6F 72 20 70 61 64 64 69 6E 67 2A 29 0D 0A 09    for padding*)...
014D00:  72 72 65 6E 74 20 6C 69 6E 65 0D 0A 2A 29 0D 0A    rrent line..*)..
014D10:  09 0D 0A 50 52 4F 43 45 44 55 52 45 20 52 65 61    ...PROCEDURE Rea
014D20:  64 4E 65 78 74 43 68 61 72 28 56 41 52 20 70 3A    dNextChar(VAR p:
014D30:  50 6F 73 69 74 69 6F 6E 3B 56 41 52 20 63 68 3A    Position;VAR ch:
014D40:  43 48 41 52 29 3B 0D 0A 28 2A 09 52 65 61 64 20    CHAR);..(*.Read 
014D50:  6E 65 78 74 20 63 68 61 72 61 63 74 65 72 20 66    next character f
014D60:  72 6F 6D 20 61 20 6C 69 6E 65 0D 0A 09 70 20 6D    rom a line...p m
014D70:  75 73 74 20 62 65 20 61 20 70 6F 73 69 74 69 6F    ust be a positio
014D80:  6E 20 72 65 74 75 72 6E 65 64 20 62 79 20 52 65    n returned by Re
014D90:  74 72 6C 69 6E 65 20 6F 72 20 52 65 61 64 43 68    trline or ReadCh
014DA0:  20 2D 20 6E 6F 74 20 47 65 74 50 6F 73 69 74 69     - not GetPositi
014DB0:  6F 6E 2A 29 0D 0A 0D 0A 50 52 4F 43 45 44 55 52    on*)....PROCEDUR
014DC0:  45 20 50 72 65 70 61 72 65 53 74 72 69 6E 67 28    E PrepareString(
014DD0:  73 3A 41 52 52 41 59 20 4F 46 20 43 48 41 52 3B    s:ARRAY OF CHAR;
014DE0:  6C 65 6E 3A 49 4E 54 45 47 45 52 29 3B 0D 0A 0D    len:INTEGER);...
014DF0:  0A 28 2A 09 70 72 65 70 61 72 65 20 61 20 73 74    .(*.prepare a st
014E00:  72 69 6E 67 20 66 6F 72 20 75 73 65 20 69 6E 20    ring for use in 
014E10:  61 20 66 69 6E 64 20 63 6F 6D 6D 61 6E 64 2A 29    a find command*)
014E20:  0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 42 61    ....PROCEDURE Ba
014E30:  63 6B 4F 6E 65 43 68 61 72 28 56 41 52 20 66 3A    ckOneChar(VAR f:
014E40:  45 64 69 74 46 69 6C 65 29 3A 42 4F 4F 4C 45 41    EditFile):BOOLEA
014E50:  4E 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 46 6F    N;..PROCEDURE Fo
014E60:  72 77 61 72 64 4F 6E 65 43 68 61 72 28 56 41 52    rwardOneChar(VAR
014E70:  20 66 3A 45 64 69 74 46 69 6C 65 29 3A 42 4F 4F     f:EditFile):BOO
014E80:  4C 45 41 4E 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55    LEAN;....PROCEDU
014E90:  52 45 20 46 69 6E 64 53 74 72 69 6E 67 28 56 41    RE FindString(VA
014EA0:  52 20 66 3A 45 64 69 74 46 69 6C 65 3B 42 61 63    R f:EditFile;Bac
014EB0:  6B 77 61 72 64 73 3A 42 4F 4F 4C 45 41 4E 29 3A    kwards:BOOLEAN):
014EC0:  42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 28 2A 09 41    BOOLEAN;....(*.A
014ED0:  63 74 75 61 6C 6C 79 20 66 69 6E 64 20 74 68 65    ctually find the
014EE0:  20 6E 65 78 74 20 6F 63 63 75 72 72 65 6E 63 65     next occurrence
014EF0:  20 6F 66 20 74 68 65 20 73 74 72 69 6E 67 09 0D     of the string..
014F00:  42 6C 6F 63 6B 53 69 7A 65 3D 31 32 38 3B 09 28    BlockSize=128;.(
014F10:  2A 20 63 68 61 72 61 63 74 65 72 73 20 69 6E 20    * characters in 
014F20:  61 20 64 69 73 63 20 62 6C 6F 63 6B 2A 29 0D 0A    a disc block*)..
014F30:  09 48 65 61 64 52 6F 6F 6D 3D 35 31 32 3B 09 28    .HeadRoom=512;.(
014F40:  2A 6D 69 6E 69 6D 75 6D 20 68 65 61 64 20 72 6F    *minimum head ro
014F50:  6F 6D 20 74 6F 20 6C 65 61 76 65 20 62 65 74 77    om to leave betw
014F60:  65 65 6E 20 73 74 61 63 6B 20 61 6E 64 20 68 65    een stack and he
014F70:  61 70 2A 29 0D 0A 09 43 52 3D 30 64 78 3B 0D 0A    ap*)...CR=0dx;..
014F80:  09 4C 46 3D 30 61 78 3B 0D 0A 09 46 46 3D 30 63    .LF=0ax;...FF=0c
014F90:  78 3B 0D 0A 09 45 4F 46 3D 31 61 78 3B 0D 0A 54    x;...EOF=1ax;..T
014FA0:  59 50 45 09 50 54 65 78 74 3D 50 4F 49 4E 54 45    YPE.PText=POINTE
014FB0:  52 20 54 4F 20 54 65 78 74 3B 0D 0A 09 50 50 6F    R TO Text;...PPo
014FC0:  73 69 74 69 6F 6E 3D 50 4F 49 4E 54 45 52 20 54    sition=POINTER T
014FD0:  4F 20 50 6F 73 69 74 69 6F 6E 3B 0D 0A 09 54 65    O Position;...Te
014FE0:  78 74 3D 52 45 43 4F 52 44 0D 0A 09 09 42 6C 6F    xt=RECORD....Blo
014FF0:  63 6B 4C 65 6E 3A 42 59 54 45 3B 0D 0A 09 09 43    ckLen:BYTE;....C
015000:  68 61 72 73 3A 41 52 52 41 59 5B 30 2E 2E 54 65    hars:ARRAY[0..Te
015010:  78 74 4C 65 6E 2D 31 5D 20 4F 46 20 43 48 41 52    xtLen-1] OF CHAR
015020:  3B 0D 0A 09 09 4E 65 78 74 3A 50 54 65 78 74 3B    ;....Next:PText;
015030:  09 09 28 2A 6E 65 78 74 20 62 6C 6F 63 6B 2A 29    ..(*next block*)
015040:  0D 0A 09 09 50 72 65 64 3A 50 54 65 78 74 3B 09    ....Pred:PText;.
015050:  09 28 2A 70 72 65 63 65 64 69 6E 67 20 62 6C 6F    .(*preceding blo
015060:  63 6B 2A 29 0D 0A 09 09 45 4E 44 3B 0D 0A 0D 0A    ck*)....END;....
015070:  09 09 0D 0A 09 50 6F 73 69 74 69 6F 6E 3D 52 45    .....Position=RE
015080:  43 4F 52 44 0D 0A 09 09 42 6C 6F 63 6B 3A 50 54    CORD....Block:PT
015090:  65 78 74 3B 0D 0A 09 09 4F 66 66 73 65 74 3A 42    ext;....Offset:B
0150A0:  59 54 45 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45    YTE;....END;...E
0150B0:  64 69 74 46 69 6C 65 3D 52 45 43 4F 52 44 0D 0A    ditFile=RECORD..
0150C0:  09 09 66 3A 46 49 4C 45 3B 0D 0A 09 09 43 68 61    ..f:FILE;....Cha
0150D0:  69 6E 3A 50 54 65 78 74 3B 0D 0A 09 09 43 75 72    in:PText;....Cur
0150E0:  50 6F 73 3A 50 6F 73 69 74 69 6F 6E 3B 0D 0A 09    Pos:Position;...
0150F0:  09 4C 61 62 65 6C 73 3A 41 52 52 41 59 5B 30 2E    .Labels:ARRAY[0.
015100:  0A 0D 0A 09 44 6F 6E 65 20 72 65 74 75 72 6E 73    ....Done returns
015110:  20 74 72 75 65 20 69 66 20 6F 6E 65 20 69 73 20     true if one is 
015120:  66 6F 75 6E 64 2A 29 0D 0A 50 52 4F 43 45 44 55    found*)..PROCEDU
015130:  52 45 20 47 65 74 43 75 72 72 65 6E 74 43 68 61    RE GetCurrentCha
015140:  72 28 56 41 52 20 66 3A 45 64 69 74 46 69 6C 65    r(VAR f:EditFile
015150:  29 3A 43 48 41 52 3B 0D 0A 0D 0A 28 2A 09 52 65    ):CHAR;....(*.Re
015160:  74 75 72 6E 20 63 68 61 72 61 63 74 65 72 20 63    turn character c
015170:  75 72 72 65 6E 74 6C 79 20 70 6F 73 69 74 69 6F    urrently positio
015180:  6E 65 64 20 74 6F 2A 29 0D 0A 0D 0A 50 52 4F 43    ned to*)....PROC
015190:  45 44 55 52 45 20 43 61 6C 6C 57 69 74 68 46 69    EDURE CallWithFi
0151A0:  6C 65 28 6E 61 6D 65 3A 41 52 52 41 59 20 4F 46    le(name:ARRAY OF
0151B0:  20 43 48 41 52 3B 56 41 52 20 66 3A 45 64 69 74     CHAR;VAR f:Edit
0151C0:  46 69 6C 65 29 3B 0D 0A 50 52 4F 43 45 44 55 52    File);..PROCEDUR
0151D0:  45 20 46 69 6C 65 54 79 70 65 28 56 41 52 20 66    E FileType(VAR f
0151E0:  3A 45 64 69 74 46 69 6C 65 29 3A 43 41 52 44 49    :EditFile):CARDI
0151F0:  4E 41 4C 3B 0D 0A 0D 0A 28 2A 09 43 61 6C 6C 20    NAL;....(*.Call 
015200:  70 72 6F 67 72 61 6D 20 77 69 74 68 20 66 69 6C    program with fil
015210:  65 20 61 73 20 70 61 72 61 6D 65 74 65 72 2A 29    e as parameter*)
015220:  0D 0A 50 52 4F 43 45 44 55 52 45 20 42 6C 6F 63    ..PROCEDURE Bloc
015230:  6B 43 6F 70 79 28 56 41 52 20 46 72 6F 6D 46 69    kCopy(VAR FromFi
015240:  6C 65 2C 54 6F 46 69 6C 65 3A 45 64 69 74 46 69    le,ToFile:EditFi
015250:  6C 65 29 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 50 52    le):BOOLEAN;..PR
015260:  4F 43 45 44 55 52 45 20 42 6C 6F 63 6B 44 65 6C    OCEDURE BlockDel
015270:  28 56 41 52 20 46 72 6F 6D 46 69 6C 65 3A 45 64    (VAR FromFile:Ed
015280:  69 74 46 69 6C 65 29 3A 42 4F 4F 4C 45 41 4E 3B    itFile):BOOLEAN;
015290:  0D 0A 50 52 4F 43 45 44 55 52 45 20 44 65 66 69    ..PROCEDURE Defi
0152A0:  6E 65 45 72 72 6F 72 73 28 56 41 52 20 66 3A 45    neErrors(VAR f:E
0152B0:  64 69 74 46 69 6C 65 29 3B 0D 0A 45 4E 44 20 4D    ditFile);..END M
0152C0:  61 6B 65 45 64 69 74 73 2E 0D 0A 0D 0A 0D 0A 09    akeEdits........
0152D0:  0D 0A 0D 0A 0D 0A 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0152E0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0152F0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
015300:  2E 32 34 5D 20 4F 46 20 50 6F 73 69 74 69 6F 6E    .24] OF Position
015310:  3B 0D 0A 0D 0A 09 09 28 2A 6C 61 62 65 6C 73 20    ;......(*labels 
015320:  30 20 74 6F 20 39 20 61 72 65 20 20 5E 6B 30 20    0 to 9 are  ^k0 
015330:  74 6F 20 5E 6B 39 0D 0A 09 09 20 20 20 31 30 20    to ^k9....   10 
015340:  69 73 20 5E 6B 42 0D 0A 09 09 20 20 20 31 31 20    is ^kB....   11 
015350:  69 73 20 5E 6B 6B 0D 0A 09 09 20 20 20 31 32 20    is ^kk....   12 
015360:  74 68 72 6F 75 67 68 20 31 34 20 61 72 65 20 74    through 14 are t
015370:  68 65 20 70 6F 73 69 74 69 6F 6E 73 20 69 6E 20    he positions in 
015380:  74 68 65 20 77 69 6E 64 6F 77 73 0D 0A 09 09 20    the windows.... 
015390:  20 20 31 35 20 74 68 72 6F 75 67 68 20 32 34 20      15 through 24 
0153A0:  61 72 65 20 65 72 72 6F 72 20 6D 61 72 6B 65 72    are error marker
0153B0:  73 2A 29 0D 0A 0D 0A 09 09 45 4E 44 3B 0D 0A 56    s*)......END;..V
0153C0:  41 52 09 44 6F 6E 65 3A 42 4F 4F 4C 45 41 4E 3B    AR.Done:BOOLEAN;
0153D0:  0D 0A 09 72 65 70 6C 79 3A 49 4E 54 45 47 45 52    ...reply:INTEGER
0153E0:  3B 09 0D 0A 0D 0A 09 28 2A 76 61 72 69 61 62 6C    ;......(*variabl
0153F0:  65 73 20 75 73 65 64 20 66 6F 72 20 74 65 78 74    es used for text
015400:  20 70 6F 73 69 74 69 6F 6E 20 64 75 72 69 6E 67     position during
015410:  20 6D 6F 76 65 20 6F 70 65 72 61 74 69 6F 6E 73     move operations
015420:  20 65 74 63 2A 29 0D 0A 0D 0A 09 57 6F 72 6B 69     etc*).....Worki
015430:  6E 67 3A 50 54 65 78 74 3B 0D 0A 09 43 68 61 72    ng:PText;...Char
015440:  50 6F 73 3A 49 4E 54 45 47 45 52 3B 0D 0A 09 63    Pos:INTEGER;...c
015450:  68 3A 43 48 41 52 3B 0D 0A 09 70 6F 73 3A 50 6F    h:CHAR;...pos:Po
015460:  73 69 74 69 6F 6E 3B 0D 0A 09 70 6F 73 31 2C 70    sition;...pos1,p
015470:  6F 73 32 3A 50 50 6F 73 69 74 69 6F 6E 3B 0D 0A    os2:PPosition;..
015480:  09 43 68 61 72 6E 6F 2C 43 68 61 72 73 72 65 61    .Charno,Charsrea
015490:  64 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 0D 0A 50    d:CARDINAL;....P
0154A0:  52 4F 43 45 44 55 52 45 20 4E 65 77 42 6C 6F 63    ROCEDURE NewBloc
0154B0:  6B 3B 0D 0A 42 45 47 49 4E 0D 0A 09 4E 45 57 28    k;..BEGIN...NEW(
0154C0:  57 6F 72 6B 69 6E 67 29 3B 0D 0A 09 57 6F 72 6B    Working);...Work
0154D0:  69 6E 67 5E 2E 50 72 65 64 3A 3D 4E 49 4C 3B 0D    ing^.Pred:=NIL;.
0154E0:  0A 09 57 6F 72 6B 69 6E 67 5E 2E 4E 65 78 74 3A    ..Working^.Next:
0154F0:  3D 4E 49 4C 3B 0D 0A 09 45 4E 44 20 4E 65 77 42    =NIL;...END NewB
015500:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
015510:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
015520:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
015530:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
015540:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 28 1A DE 20    ............(.. 
015550:  2F 1A 2B 1A E1 20 2C 1A 2D 1A FF FF 04 21 73 1A    /.+.. ,.-....!s.
015560:  FF FF FF FF FF FF 07 1F FF FF 36 1A 37 1A 38 1A    ..........6.7.8.
015570:  FF FF FF FF 3B 1A FF FF 3D 1A FF FF FF FF FF FF    ....;...=.......
015580:  44 20 50 72 69 6E 74 4D 61 63 72 6F 73 3B 0D 0A    D PrintMacros;..
015590:  42 45 47 49 4E 0D 0A 09 46 4F 52 20 63 68 3A 3D    BEGIN...FOR ch:=
0155A0:  27 40 27 20 54 4F 20 27 5A 27 20 44 4F 20 43 6F    '@' TO 'Z' DO Co
0155B0:  6D 6D 61 6E 64 73 5B 63 68 5D 3A 3D 4E 49 4C 20    mmands[ch]:=NIL 
0155C0:  45 4E 44 3B 0D 0A 09 53 68 6F 77 43 68 61 6E 67    END;...ShowChang
0155D0:  65 3A 3D 54 52 55 45 3B 0D 0A 09 4C 6F 6F 6B 75    e:=TRUE;...Looku
0155E0:  70 28 46 2C 27 4D 41 43 52 4F 53 2E 44 41 54 20    p(F,'MACROS.DAT 
0155F0:  27 2C 72 65 70 6C 79 29 3B 0D 0A 09 49 46 20 72    ',reply);...IF r
015600:  65 70 6C 79 3D 30 20 54 48 45 4E 0D 0A 09 09 4C    eply=0 THEN....L
015610:  6F 61 64 4D 61 63 72 6F 73 3B 0D 0A 09 09 45 4E    oadMacros;....EN
015620:  44 3B 0D 0A 09 09 0D 0A 09 45 4E 44 20 4D 61 63    D;.......END Mac
015630:  72 6F 73 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ros.............
015640:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
015650:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
015660:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
015670:  1A 1A 1A 1A 1A 1A 1A 1A 29 3B 0D 0A 09 09 09 57    ........);.....W
015680:  30 32 78 5D 3A 3D 57 69 6E 64 6F 77 3B 09 09 28    02x]:=Window;..(
015690:  2A 43 74 72 6C 20 42 2A 29 0D 0A 09 4D 61 69 6E    *Ctrl B*)...Main
0156A0:  54 61 62 6C 65 5B 31 37 78 5D 3A 3D 53 63 72 6F    Table[17x]:=Scro
0156B0:  6C 6C 55 70 3B 09 28 2A 43 74 72 6C 20 57 2A 29    llUp;.(*Ctrl W*)
0156C0:  0D 0A 09 4D 61 69 6E 54 61 62 6C 65 5B 30 62 78    ...MainTable[0bx
0156D0:  5D 3A 3D 44 65 66 4C 61 62 65 6C 3B 09 28 2A 43    ]:=DefLabel;.(*C
0156E0:  74 72 6C 20 4B 2A 29 0D 0A 09 4D 61 69 6E 54 61    trl K*)...MainTa
0156F0:  62 6C 65 5B 37 66 78 5D 3A 3D 44 65 6C 42 61 63    ble[7fx]:=DelBac
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 C9 02 00 00 00 02    ......R.........
015720:  12 00 C5 02 00 00 00 02 12 00 C1 02 00 00 00 02    ................
015730:  12 00 C6 02 00 00 00 02 12 00 C2 02 00 00 00 02    ................
015740:  12 00 C7 02 00 00 00 02 12 00 C3 02 00 00 00 02    ................
015750:  12 00 C8 02 00 00 00 02 12 00 C4 02 00 00 00 02    ................
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:  63 68 61 72 61 63 74 65 72 20 70 6F 73 69 74 69    character positi
015810:  6F 6E 20 69 6E 20 74 68 65 20 63 75 72 72 65 6E    on in the curren
015820:  74 20 66 69 6C 65 2A 29 0D 0A 42 45 47 49 4E 09    t file*)..BEGIN.
015830:  09 0D 0A 09 49 4E 43 28 43 68 61 72 50 6F 73 29    ....INC(CharPos)
015840:  3B 0D 0A 09 49 46 20 43 68 61 72 50 6F 73 3E 3D    ;...IF CharPos>=
015850:  49 4E 54 45 47 45 52 28 57 6F 72 6B 69 6E 67 5E    INTEGER(Working^
015860:  2E 42 6C 6F 63 6B 4C 65 6E 29 20 54 48 45 4E 0D    .BlockLen) THEN.
015870:  0A 09 09 0D 0A 09 09 49 46 20 57 6F 72 6B 69 6E    .......IF Workin
015880:  67 5E 2E 4E 65 78 74 3C 3E 4E 49 4C 20 54 48 45    g^.Next<>NIL THE
015890:  4E 0D 0A 09 09 09 57 6F 72 6B 69 6E 67 3A 3D 57    N.....Working:=W
0158A0:  6F 72 6B 69 6E 67 5E 2E 4E 65 78 74 3B 0D 0A 09    orking^.Next;...
0158B0:  09 09 43 68 61 72 50 6F 73 3A 3D 30 3B 0D 0A 09    ..CharPos:=0;...
0158C0:  09 45 4C 53 45 0D 0A 09 09 09 52 45 54 55 52 4E    .ELSE.....RETURN
0158D0:  20 46 41 4C 53 45 0D 0A 09 09 09 45 4E 44 3B 0D     FALSE.....END;.
0158E0:  0A 09 09 45 4E 44 3B 20 28 2A 43 68 61 72 50 6F    ...END; (*CharPo
0158F0:  73 3E 42 6C 6F 63 6B 4C 65 6E 2A 29 0D 0A 09 52    s>BlockLen*)...R
015900:  45 54 55 52 4E 20 57 6F 72 6B 69 6E 67 5E 2E 43    ETURN Working^.C
015910:  68 61 72 73 5B 43 68 61 72 50 6F 73 5D 3C 3E 45    hars[CharPos]<>E
015920:  4F 46 0D 0A 09 45 4E 44 20 41 64 76 61 6E 63 65    OF...END Advance
015930:  3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 49 6E 73    ;..PROCEDURE Ins
015940:  69 64 65 42 6C 6F 63 6B 28 56 41 52 20 46 3A 45    ideBlock(VAR F:E
015950:  64 69 74 46 69 6C 65 29 3A 42 4F 4F 4C 45 41 4E    ditFile):BOOLEAN
015960:  3B 0D 0A 0D 0A 28 2A 09 43 68 65 63 6B 20 69 66    ;....(*.Check if
015970:  20 63 75 72 72 65 6E 74 20 70 6F 73 69 74 69 6F     current positio
015980:  6E 20 69 73 20 69 6E 73 69 64 65 20 62 6C 6F 63    n is inside bloc
015990:  6B 20 2A 29 0D 0A 56 41 52 09 62 3A 50 54 65 78    k *)..VAR.b:PTex
0159A0:  74 3B 0D 0A 09 43 6F 75 6C 64 42 65 3A 42 4F 4F    t;...CouldBe:BOO
0159B0:  4C 45 41 4E 3B 0D 0A 42 45 47 49 4E 0D 0A 09 73    LEAN;..BEGIN...s
0159C0:  65 74 63 75 72 70 6F 73 28 46 29 3B 0D 0A 09 49    etcurpos(F);...I
0159D0:  46 20 28 46 2E 4C 61 62 65 6C 73 5B 31 30 5D 2E    F (F.Labels[10].
0159E0:  42 6C 6F 63 6B 3D 4E 49 4C 29 20 4F 52 20 28 46    Block=NIL) OR (F
0159F0:  2E 4C 61 62 65 6C 73 5B 31 31 5D 2E 42 6C 6F 63    .Labels[11].Bloc
015A00:  09 09 53 65 71 57 72 69 74 65 42 6C 6F 63 6B 28    ..SeqWriteBlock(
015A10:  66 2E 66 2C 41 44 52 28 62 29 2C 42 6C 6F 63 6B    f.f,ADR(b),Block
015A20:  53 69 7A 65 2C 0D 0A 09 09 09 09 09 09 72 65 70    Size,........rep
015A30:  6C 79 29 3B 0D 0A 09 09 09 09 09 70 6F 73 3A 3D    ly);.......pos:=
015A40:  30 3B 0D 0A 09 09 09 09 09 49 46 20 72 65 70 6C    0;.......IF repl
015A50:  79 3C 3E 42 6C 6F 63 6B 53 69 7A 65 20 54 48 45    y<>BlockSize THE
015A60:  4E 20 45 58 49 54 20 45 4E 44 3B 0D 0A 09 09 09    N EXIT END;.....
015A70:  09 09 45 4E 44 3B 20 28 2A 49 46 2A 29 0D 0A 09    ..END; (*IF*)...
015A80:  09 09 09 62 5B 70 6F 73 5D 3A 3D 43 68 61 72 73    ...b[pos]:=Chars
015A90:  5B 69 5D 3B 0D 0A 09 09 09 09 49 4E 43 28 70 6F    [i];......INC(po
015AA0:  73 29 3B 0D 0A 09 09 09 09 45 4E 44 3B 28 2A 46    s);......END;(*F
015AB0:  4F 52 2A 29 0D 0A 09 09 0D 0A 09 09 09 49 46 20    OR*).........IF 
015AC0:  57 6F 72 6B 69 6E 67 3D 66 2E 43 75 72 50 6F 73    Working=f.CurPos
015AD0:  2E 42 6C 6F 63 6B 20 54 48 45 4E 0D 0A 09 09 09    .Block THEN.....
015AE0:  20 20 20 20 45 64 69 74 53 74 61 74 75 73 2E 53        EditStatus.S
015AF0:  65 74 50 6F 73 69 74 69 6F 6E 28 66 2E 66 2C 43    etPosition(f.f,C
015B00:  68 61 72 6E 6F 2B 4F 52 44 28 66 2E 43 75 72 50    harno+ORD(f.CurP
015B10:  6F 73 2E 4F 66 66 73 65 74 29 29 0D 0A 09 09 09    os.Offset)).....
015B20:  20 20 20 20 45 4E 44 3B 0D 0A 09 09 09 43 68 61        END;.....Cha
015B30:  72 6E 6F 3A 3D 43 68 61 72 6E 6F 2B 4F 52 44 28    rno:=Charno+ORD(
015B40:  42 6C 6F 63 6B 4C 65 6E 29 3B 0D 0A 09 09 09 57    BlockLen);.....W
015B50:  6F 72 6B 69 6E 67 3A 3D 4E 65 78 74 0D 0A 09 09    orking:=Next....
015B60:  09 45 4E 44 3B 28 2A 57 49 54 48 20 57 6F 72 6B    .END;(*WITH Work
015B70:  69 6E 67 2A 29 0D 0A 09 09 20 20 20 20 45 4E 44    ing*)....    END
015B80:  3B 20 28 2A 57 48 49 4C 45 20 57 6F 72 6B 69 6E    ; (*WHILE Workin
015B90:  67 3C 3E 4E 49 4C 20 61 6E 64 20 6E 6F 74 20 64    g<>NIL and not d
015BA0:  69 73 63 20 66 75 6C 6C 2A 29 0D 0A 09 09 46 4F    isc full*)....FO
015BB0:  52 20 70 6F 73 3A 3D 70 6F 73 20 54 4F 20 42 6C    R pos:=pos TO Bl
015BC0:  6F 63 6B 53 69 7A 65 2D 31 20 44 4F 20 62 5B 70    ockSize-1 DO b[p
015BD0:  6F 73 5D 3A 3D 45 4F 46 20 45 4E 44 3B 0D 0A 09    os]:=EOF END;...
015BE0:  09 49 46 20 72 65 70 6C 79 3D 42 6C 6F 63 6B 53    .IF reply=BlockS
015BF0:  69 7A 65 20 54 48 45 4E 20 0D 0A 09 09 09 53 65    ize THEN .....Se
015C00:  20 09 09 49 46 20 57 6F 72 6B 69 6E 67 5E 2E 50     ..IF Working^.P
015C10:  72 65 64 3C 3E 4E 49 4C 20 54 48 45 4E 0D 0A 09    red<>NIL THEN...
015C20:  09 09 57 6F 72 6B 69 6E 67 3A 3D 57 6F 72 6B 69    ..Working:=Worki
015C30:  6E 67 5E 2E 50 72 65 64 3B 0D 0A 09 09 09 43 68    ng^.Pred;.....Ch
015C40:  61 72 50 6F 73 3A 3D 57 6F 72 6B 69 6E 67 5E 2E    arPos:=Working^.
015C50:  42 6C 6F 63 6B 4C 65 6E 3B 0D 0A 09 09 45 4C 53    BlockLen;....ELS
015C60:  45 0D 0A 09 09 09 52 45 54 55 52 4E 20 46 41 4C    E.....RETURN FAL
015C70:  53 45 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45    SE.....END;....E
015C80:  4E 44 3B 20 28 2A 43 68 61 72 50 6F 73 3C 3D 30    ND; (*CharPos<=0
015C90:  2A 29 0D 0A 09 44 45 43 28 43 68 61 72 50 6F 73    *)...DEC(CharPos
015CA0:  29 3B 0D 0A 09 52 45 54 55 52 4E 20 54 52 55 45    );...RETURN TRUE
015CB0:  0D 0A 09 45 4E 44 20 42 61 63 6B 75 70 3B 0D 0A    ...END Backup;..
015CC0:  50 52 4F 43 45 44 55 52 45 20 4F 70 65 6E 46 69    PROCEDURE OpenFi
015CD0:  6C 65 28 56 41 52 20 66 3A 45 64 69 74 46 69 6C    le(VAR f:EditFil
015CE0:  65 3B 66 6E 3A 46 69 6C 65 4E 61 6D 65 3B 56 41    e;fn:FileName;VA
015CF0:  52 20 72 65 70 6C 79 3A 49 4E 54 45 47 45 52 3B    R reply:INTEGER;
015D00:  50 6F 73 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A    Pos:CARDINAL);..
015D10:  56 41 52 09 70 3A 50 54 65 78 74 3B 0D 0A 42 45    VAR.p:PText;..BE
015D20:  47 49 4E 0D 0A 09 4C 6F 6F 6B 75 70 28 66 2E 66    GIN...Lookup(f.f
015D30:  2C 66 6E 2C 72 65 70 6C 79 29 3B 0D 0A 09 49 46    ,fn,reply);...IF
015D40:  20 50 6F 73 3D 36 35 35 33 35 20 54 48 45 4E 20     Pos=65535 THEN 
015D50:  43 68 61 72 6E 6F 3A 3D 45 64 69 74 53 74 61 74    Charno:=EditStat
015D60:  75 73 2E 47 65 74 50 6F 73 69 74 69 6F 6E 28 66    us.GetPosition(f
015D70:  2E 66 29 3B 0D 0A 09 45 4C 53 45 20 43 68 61 72    .f);...ELSE Char
015D80:  6E 6F 3A 3D 50 6F 73 20 45 4E 44 3B 0D 0A 09 43    no:=Pos END;...C
015D90:  68 61 72 73 72 65 61 64 3A 3D 30 3B 0D 0A 09 49    harsread:=0;...I
015DA0:  46 20 72 65 70 6C 79 3C 30 20 54 48 45 4E 20 0D    F reply<0 THEN .
015DB0:  0A 09 09 72 65 70 6C 79 3A 3D 2D 32 3B 0D 0A 09    ...reply:=-2;...
015DC0:  09 52 45 54 55 52 4E 0D 0A 09 09 45 4E 44 3B 0D    .RETURN....END;.
015DD0:  0A 09 70 3A 3D 4E 49 4C 3B 0D 0A 09 72 65 70 6C    ..p:=NIL;...repl
015DE0:  79 3A 3D 30 3B 0D 0A 09 46 4F 52 20 69 3A 3D 30    y:=0;...FOR i:=0
015DF0:  20 54 4F 20 48 49 47 48 28 66 2E 4C 61 62 65 6C     TO HIGH(f.Label
015E00:  71 57 72 69 74 65 42 6C 6F 63 6B 28 66 2E 66 2C    qWriteBlock(f.f,
015E10:  41 44 52 28 62 29 2C 42 6C 6F 63 6B 53 69 7A 65    ADR(b),BlockSize
015E20:  2C 72 65 70 6C 79 29 20 0D 0A 09 09 09 45 4E 44    ,reply) .....END
015E30:  3B 0D 0A 09 09 43 6C 6F 73 65 28 66 2E 66 29 3B    ;....Close(f.f);
015E40:  0D 0A 09 09 49 46 20 72 65 70 6C 79 3C 3E 42 6C    ....IF reply<>Bl
015E50:  6F 63 6B 53 69 7A 65 20 54 48 45 4E 20 72 65 70    ockSize THEN rep
015E60:  6C 79 3A 3D 2D 31 0D 0A 09 09 45 4C 53 45 20 72    ly:=-1....ELSE r
015E70:  65 70 6C 79 3A 3D 30 20 45 4E 44 3B 0D 0A 09 45    eply:=0 END;...E
015E80:  4C 53 45 09 72 65 70 6C 79 3A 3D 2D 32 20 0D 0A    LSE.reply:=-2 ..
015E90:  09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 43 6C 6F    ..END;...END Clo
015EA0:  73 65 46 69 6C 65 3B 0D 0A 09 09 09 0D 0A 09 0D    seFile;.........
015EB0:  0A 50 52 4F 43 45 44 55 52 45 20 41 62 61 6E 64    .PROCEDURE Aband
015EC0:  6F 6E 46 69 6C 65 28 66 3A 45 64 69 74 46 69 6C    onFile(f:EditFil
015ED0:  65 29 3B 0D 0A 56 41 52 09 70 3A 50 54 65 78 74    e);..VAR.p:PText
015EE0:  3B 0D 0A 28 2A 09 41 62 61 6E 64 6F 6E 20 63 68    ;..(*.Abandon ch
015EF0:  61 6E 67 65 73 20 74 6F 20 61 6E 20 65 64 69 74    anges to an edit
015F00:  20 66 69 6C 65 2A 29 0D 0A 42 45 47 49 4E 0D 0A     file*)..BEGIN..
015F10:  09 57 6F 72 6B 69 6E 67 3A 3D 66 2E 43 68 61 69    .Working:=f.Chai
015F20:  6E 3B 0D 0A 09 57 48 49 4C 45 20 57 6F 72 6B 69    n;...WHILE Worki
015F30:  6E 67 3C 3E 4E 49 4C 20 44 4F 20 0D 0A 09 09 70    ng<>NIL DO ....p
015F40:  3A 3D 57 6F 72 6B 69 6E 67 5E 2E 4E 65 78 74 3B    :=Working^.Next;
015F50:  0D 0A 09 09 44 49 53 50 4F 53 45 28 57 6F 72 6B    ....DISPOSE(Work
015F60:  69 6E 67 29 3B 0D 0A 09 09 57 6F 72 6B 69 6E 67    ing);....Working
015F70:  3A 3D 70 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45    :=p;....END;...E
015F80:  4E 44 20 41 62 61 6E 64 6F 6E 46 69 6C 65 3B 0D    ND AbandonFile;.
015F90:  0A 50 52 4F 43 45 44 55 52 45 20 47 65 74 50 6F    .PROCEDURE GetPo
015FA0:  73 69 74 69 6F 6E 28 56 41 52 20 66 3A 45 64 69    sition(VAR f:Edi
015FB0:  74 46 69 6C 65 3B 56 41 52 20 70 3A 50 6F 73 69    tFile;VAR p:Posi
015FC0:  74 69 6F 6E 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09    tion);..BEGIN...
015FD0:  70 3A 3D 66 2E 43 75 72 50 6F 73 3B 0D 0A 09 45    p:=f.CurPos;...E
015FE0:  4E 44 20 47 65 74 50 6F 73 69 74 69 6F 6E 3B 0D    ND GetPosition;.
015FF0:  0A 09 09 0D 0A 50 52 4F 43 45 44 55 52 45 20 53    .....PROCEDURE S
016000:  73 29 20 44 4F 20 66 2E 4C 61 62 65 6C 73 5B 69    s) DO f.Labels[i
016010:  5D 2E 42 6C 6F 63 6B 3A 3D 4E 49 4C 20 45 4E 44    ].Block:=NIL END
016020:  3B 0D 0A 09 4C 4F 4F 50 09 28 2A 72 65 61 64 20    ;...LOOP.(*read 
016030:  69 6E 20 74 68 65 20 66 69 6C 65 2A 29 0D 0A 09    in the file*)...
016040:  09 49 46 20 46 72 65 65 53 70 61 63 65 28 29 3C    .IF FreeSpace()<
016050:  48 65 61 64 52 6F 6F 6D 20 54 48 45 4E 0D 0A 09    HeadRoom THEN...
016060:  09 09 41 62 61 6E 64 6F 6E 46 69 6C 65 28 66 29    ..AbandonFile(f)
016070:  3B 0D 0A 09 09 09 72 65 70 6C 79 3A 3D 2D 33 3B    ;.....reply:=-3;
016080:  0D 0A 09 09 09 52 45 54 55 52 4E 0D 0A 09 09 09    .....RETURN.....
016090:  45 4E 44 3B 0D 0A 09 09 4E 65 77 42 6C 6F 63 6B    END;....NewBlock
0160A0:  3B 0D 0A 09 09 57 6F 72 6B 69 6E 67 5E 2E 50 72    ;....Working^.Pr
0160B0:  65 64 3A 3D 70 3B 0D 0A 09 09 49 46 20 70 3D 4E    ed:=p;....IF p=N
0160C0:  49 4C 20 54 48 45 4E 20 66 2E 43 68 61 69 6E 3A    IL THEN f.Chain:
0160D0:  3D 57 6F 72 6B 69 6E 67 0D 0A 09 09 45 4C 53 45    =Working....ELSE
0160E0:  20 70 5E 2E 4E 65 78 74 3A 3D 57 6F 72 6B 69 6E     p^.Next:=Workin
0160F0:  67 20 45 4E 44 3B 0D 0A 09 09 53 65 71 52 65 61    g END;....SeqRea
016100:  64 42 6C 6F 63 6B 28 66 2E 66 2C 41 44 52 28 57    dBlock(f.f,ADR(W
016110:  6F 72 6B 69 6E 67 5E 2E 43 68 61 72 73 29 2C 42    orking^.Chars),B
016120:  6C 6F 63 6B 53 69 7A 65 2C 69 29 3B 0D 0A 09 09    lockSize,i);....
016130:  49 46 20 69 3C 3E 42 6C 6F 63 6B 53 69 7A 65 20    IF i<>BlockSize 
016140:  54 48 45 4E 20 28 2A 65 6E 64 20 6F 66 20 66 69    THEN (*end of fi
016150:  6C 65 20 66 6F 75 6E 64 2A 29 0D 0A 09 09 09 49    le found*).....I
016160:  46 20 70 3C 3E 4E 49 4C 20 54 48 45 4E 20 0D 0A    F p<>NIL THEN ..
016170:  09 09 09 09 70 5E 2E 4E 65 78 74 3A 3D 4E 49 4C    ....p^.Next:=NIL
016180:  3B 0D 0A 09 09 09 09 44 49 53 50 4F 53 45 28 57    ;......DISPOSE(W
016190:  6F 72 6B 69 6E 67 29 3B 0D 0A 09 09 09 45 4C 53    orking);.....ELS
0161A0:  45 09 28 2A 61 6C 77 61 79 73 20 6B 65 65 70 20    E.(*always keep 
0161B0:  61 74 20 6C 65 61 73 74 20 6F 6E 65 20 62 6C 6F    at least one blo
0161C0:  63 6B 2A 29 0D 0A 09 09 09 09 57 6F 72 6B 69 6E    ck*)......Workin
0161D0:  67 5E 2E 42 6C 6F 63 6B 4C 65 6E 3A 3D 31 3B 0D    g^.BlockLen:=1;.
0161E0:  0A 20 20 20 09 09 09 09 57 6F 72 6B 69 6E 67 5E    .   ....Working^
0161F0:  2E 43 68 61 72 73 5B 30 5D 3A 3D 45 4F 46 3B 0D    .Chars[0]:=EOF;.
016200:  65 74 50 6F 73 69 74 69 6F 6E 28 56 41 52 20 66    etPosition(VAR f
016210:  3A 45 64 69 74 46 69 6C 65 3B 70 3A 50 6F 73 69    :EditFile;p:Posi
016220:  74 69 6F 6E 29 3B 0D 0A 28 2A 09 67 65 74 2F 73    tion);..(*.get/s
016230:  65 74 20 70 6F 73 69 74 69 6F 6E 20 69 6E 20 61    et position in a
016240:  20 66 69 6C 65 2A 29 0D 0A 42 45 47 49 4E 0D 0A     file*)..BEGIN..
016250:  09 66 2E 43 75 72 50 6F 73 3A 3D 70 3B 0D 0A 09    .f.CurPos:=p;...
016260:  0D 0A 09 28 2A 09 70 6F 69 6E 74 65 72 20 6D 61    ...(*.pointer ma
016270:  79 20 62 65 20 70 6F 69 6E 74 69 6E 67 20 6A 75    y be pointing ju
016280:  73 74 20 61 66 74 65 72 20 65 6E 64 20 6F 66 20    st after end of 
016290:  62 6C 6F 63 6B 0D 0A 09 09 28 61 66 74 65 72 20    block....(after 
0162A0:  64 65 6C 65 74 65 73 29 2C 20 72 65 67 75 6C 61    deletes), regula
0162B0:  72 69 7A 65 20 74 68 61 74 20 73 69 74 75 61 74    rize that situat
0162C0:  69 6F 6E 2A 29 0D 0A 0D 0A 09 57 49 54 48 20 66    ion*).....WITH f
0162D0:  2E 43 75 72 50 6F 73 20 44 4F 0D 0A 09 09 49 46    .CurPos DO....IF
0162E0:  20 09 20 20 20 20 28 4F 66 66 73 65 74 3E 3D 42     .    (Offset>=B
0162F0:  6C 6F 63 6B 5E 2E 42 6C 6F 63 6B 4C 65 6E 29 20    lock^.BlockLen) 
016300:  0D 0A 09 09 09 41 4E 44 20 28 42 6C 6F 63 6B 5E    .....AND (Block^
016310:  2E 4E 65 78 74 3C 3E 4E 49 4C 29 20 54 48 45 4E    .Next<>NIL) THEN
016320:  0D 0A 09 09 09 4F 66 66 73 65 74 3A 3D 30 3B 0D    .....Offset:=0;.
016330:  0A 09 09 09 42 6C 6F 63 6B 3A 3D 42 6C 6F 63 6B    ....Block:=Block
016340:  5E 2E 4E 65 78 74 0D 0A 09 09 09 45 4E 44 3B 0D    ^.Next.....END;.
016350:  0A 09 09 45 4E 44 3B 20 0D 0A 09 45 4E 44 20 53    ...END; ...END S
016360:  65 74 50 6F 73 69 74 69 6F 6E 3B 0D 0A 50 52 4F    etPosition;..PRO
016370:  43 45 44 55 52 45 20 4C 61 62 65 6C 4F 70 28 56    CEDURE LabelOp(V
016380:  41 52 20 66 3A 45 64 69 74 46 69 6C 65 3B 44 65    AR f:EditFile;De
016390:  66 69 6E 65 3A 42 4F 4F 4C 45 41 4E 3B 63 68 3A    fine:BOOLEAN;ch:
0163A0:  43 48 41 52 29 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A    CHAR):BOOLEAN;..
0163B0:  28 2A 0D 0A 09 70 65 72 66 6F 72 6D 20 61 20 6C    (*...perform a l
0163C0:  61 62 65 6C 20 6F 70 65 72 61 74 69 6F 6E 20 2C    abel operation ,
0163D0:  20 72 65 74 75 72 6E 20 74 72 75 65 20 69 66 20     return true if 
0163E0:  73 75 63 63 65 73 73 66 75 6C 0D 0A 09 44 65 66    successful...Def
0163F0:  69 6E 65 20 69 73 20 74 72 75 65 20 69 66 20 74    ine is true if t
016400:  0A 09 09 09 09 43 68 61 72 50 6F 73 3A 3D 30 3B    .....CharPos:=0;
016410:  0D 0A 09 09 09 09 73 61 76 65 63 75 72 70 6F 73    ......savecurpos
016420:  28 66 29 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A    (f);......END;..
016430:  09 09 09 45 58 49 54 0D 0A 09 09 45 4C 53 45 09    ...EXIT....ELSE.
016440:  0D 0A 09 09 0D 0A 09 09 09 57 48 49 4C 45 20 28    .........WHILE (
016450:  69 3E 30 29 20 41 4E 44 20 28 57 6F 72 6B 69 6E    i>0) AND (Workin
016460:  67 5E 2E 43 68 61 72 73 5B 69 2D 31 5D 3D 45 4F    g^.Chars[i-1]=EO
016470:  46 29 20 44 4F 0D 0A 09 09 09 09 44 45 43 28 69    F) DO......DEC(i
016480:  29 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09    );......END;....
016490:  09 49 46 20 28 57 6F 72 6B 69 6E 67 5E 2E 43 68    .IF (Working^.Ch
0164A0:  61 72 73 5B 69 2D 31 5D 3C 3E 30 61 78 29 20 41    ars[i-1]<>0ax) A
0164B0:  4E 44 20 28 69 3C 42 6C 6F 63 6B 53 69 7A 65 29    ND (i<BlockSize)
0164C0:  20 54 48 45 4E 0D 0A 09 09 09 09 49 4E 43 28 69     THEN......INC(i
0164D0:  29 3B 0D 0A 09 09 09 09 57 6F 72 6B 69 6E 67 5E    );......Working^
0164E0:  2E 43 68 61 72 73 5B 69 2D 31 5D 3A 3D 45 4F 46    .Chars[i-1]:=EOF
0164F0:  3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09    ;......END;.....
016500:  57 6F 72 6B 69 6E 67 5E 2E 42 6C 6F 63 6B 4C 65    Working^.BlockLe
016510:  6E 3A 3D 69 3B 0D 0A 09 09 09 49 46 20 43 68 61    n:=i;.....IF Cha
016520:  72 73 72 65 61 64 3C 3D 43 68 61 72 6E 6F 20 20    rsread<=Charno  
016530:  54 48 45 4E 20 0D 0A 09 09 09 09 43 68 61 72 50    THEN ......CharP
016540:  6F 73 3A 3D 43 68 61 72 6E 6F 2D 43 68 61 72 73    os:=Charno-Chars
016550:  72 65 61 64 3B 0D 0A 09 09 09 09 73 61 76 65 63    read;......savec
016560:  75 72 70 6F 73 28 66 29 3B 0D 0A 09 09 09 09 70    urpos(f);......p
016570:  3A 3D 57 6F 72 6B 69 6E 67 3B 0D 0A 09 09 09 09    :=Working;......
016580:  49 46 20 28 57 6F 72 6B 69 6E 67 5E 2E 43 68 61    IF (Working^.Cha
016590:  72 73 5B 43 68 61 72 50 6F 73 5D 3D 4C 46 29 20    rs[CharPos]=LF) 
0165A0:  0D 0A 09 09 09 09 20 20 20 41 4E 44 20 42 61 63    ......   AND Bac
0165B0:  6B 75 70 28 29 20 54 48 45 4E 0D 0A 09 09 09 09    kup() THEN......
0165C0:  09 73 61 76 65 63 75 72 70 6F 73 28 66 29 3B 0D    .savecurpos(f);.
0165D0:  0A 09 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 09    ......END;......
0165E0:  57 6F 72 6B 69 6E 67 3A 3D 70 3B 0D 0A 09 09 09    Working:=p;.....
0165F0:  09 45 4E 44 3B 0D 0A 09 09 09 43 68 61 72 73 72    .END;.....Charsr
016600:  68 65 20 6F 70 65 72 61 74 69 6F 6E 20 69 73 20    he operation is 
016610:  61 20 64 65 66 69 6E 65 20 6C 61 62 65 6C 0D 0A    a define label..
016620:  09 69 74 20 69 73 20 66 61 6C 73 65 20 69 66 20    .it is false if 
016630:  69 74 20 69 73 20 61 20 67 6F 74 6F 20 6C 61 62    it is a goto lab
016640:  65 6C 0D 0A 2A 29 0D 0A 0D 0A 56 41 52 09 69 3A    el..*)....VAR.i:
016650:  43 41 52 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 4E    CARDINAL;..BEGIN
016660:  0D 0A 09 28 2A 24 41 5E 2A 29 0D 0A 09 63 68 3A    ...(*$A^*)...ch:
016670:  3D 43 41 50 28 63 68 29 3B 0D 0A 09 43 41 53 45    =CAP(ch);...CASE
016680:  20 63 68 20 4F 46 0D 0A 09 09 27 42 27 3A 20 69     ch OF....'B': i
016690:  3A 3D 31 30 7C 0D 0A 09 09 27 5E 4B 27 2C 27 4B    :=10|....'^K','K
0166A0:  27 3A 20 69 3A 3D 31 31 7C 0D 0A 09 09 31 78 2E    ': i:=11|....1x.
0166B0:  2E 33 78 3A 69 3A 3D 4F 52 44 28 63 68 29 2B 31    .3x:i:=ORD(ch)+1
0166C0:  31 7C 0D 0A 09 09 27 30 27 2E 2E 27 39 27 3A 69    1|....'0'..'9':i
0166D0:  3A 3D 4F 52 44 28 63 68 29 2D 4F 52 44 28 27 30    :=ORD(ch)-ORD('0
0166E0:  27 29 7C 0D 0A 09 09 30 62 30 78 2E 2E 30 62 39    ')|....0b0x..0b9
0166F0:  78 3A 69 3A 3D 4F 52 44 28 63 68 29 2D 30 62 30    x:i:=ORD(ch)-0b0
016700:  68 2B 31 35 0D 0A 09 09 45 4C 53 45 20 52 45 54    h+15....ELSE RET
016710:  55 52 4E 20 46 41 4C 53 45 0D 0A 09 09 45 4E 44    URN FALSE....END
016720:  3B 0D 0A 09 49 46 20 44 65 66 69 6E 65 20 54 48    ;...IF Define TH
016730:  45 4E 0D 0A 09 09 47 65 74 50 6F 73 69 74 69 6F    EN....GetPositio
016740:  6E 28 66 2C 66 2E 4C 61 62 65 6C 73 5B 69 5D 29    n(f,f.Labels[i])
016750:  3B 0D 0A 09 45 4C 53 45 0D 0A 09 09 49 46 20 66    ;...ELSE....IF f
016760:  2E 4C 61 62 65 6C 73 5B 69 5D 2E 42 6C 6F 63 6B    .Labels[i].Block
016770:  3D 4E 49 4C 20 54 48 45 4E 20 52 45 54 55 52 4E    =NIL THEN RETURN
016780:  20 46 41 4C 53 45 20 45 4E 44 3B 0D 0A 09 09 53     FALSE END;....S
016790:  65 74 50 6F 73 69 74 69 6F 6E 28 66 2C 66 2E 4C    etPosition(f,f.L
0167A0:  61 62 65 6C 73 5B 69 5D 29 3B 0D 0A 09 20 09 45    abels[i]);... .E
0167B0:  4E 44 3B 0D 0A 09 52 45 54 55 52 4E 20 54 52 55    ND;...RETURN TRU
0167C0:  45 3B 0D 0A 09 45 4E 44 20 4C 61 62 65 6C 4F 70    E;...END LabelOp
0167D0:  3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 41 64 76    ;..PROCEDURE Adv
0167E0:  61 6E 63 65 28 29 3A 42 4F 4F 4C 45 41 4E 3B 0D    ance():BOOLEAN;.
0167F0:  0A 0D 0A 28 2A 09 61 64 76 61 6E 63 65 20 61 20    ...(*.advance a 
016800:  65 61 64 3A 3D 43 68 61 72 73 72 65 61 64 2B 4F    ead:=Charsread+O
016810:  52 44 28 57 6F 72 6B 69 6E 67 5E 2E 42 6C 6F 63    RD(Working^.Bloc
016820:  6B 4C 65 6E 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D    kLen);.....END;.
016830:  0A 09 09 70 3A 3D 57 6F 72 6B 69 6E 67 3B 0D 0A    ...p:=Working;..
016840:  09 09 72 65 70 6C 79 3A 3D 72 65 70 6C 79 2B 31    ..reply:=reply+1
016850:  3B 0D 0A 09 09 45 4E 44 3B 20 28 2A 72 65 61 64    ;....END; (*read
016860:  20 66 69 6C 65 20 6C 6F 6F 70 2A 29 0D 0A 09 43     file loop*)...C
016870:  6C 6F 73 65 28 66 2E 66 29 3B 0D 0A 09 45 4E 44    lose(f.f);...END
016880:  20 4F 70 65 6E 46 69 6C 65 3B 0D 0A 09 09 0D 0A     OpenFile;......
016890:  50 52 4F 43 45 44 55 52 45 20 43 6C 6F 73 65 46    PROCEDURE CloseF
0168A0:  69 6C 65 28 56 41 52 20 66 3A 45 64 69 74 46 69    ile(VAR f:EditFi
0168B0:  6C 65 3B 56 41 52 20 72 65 70 6C 79 3A 49 4E 54    le;VAR reply:INT
0168C0:  45 47 45 52 29 3B 0D 0A 56 41 52 09 0D 0A 09 62    EGER);..VAR....b
0168D0:  3A 41 52 52 41 59 5B 30 2E 2E 42 6C 6F 63 6B 53    :ARRAY[0..BlockS
0168E0:  69 7A 65 2D 31 5D 20 4F 46 20 43 48 41 52 3B 0D    ize-1] OF CHAR;.
0168F0:  0A 09 70 6F 73 3A 49 4E 54 45 47 45 52 3B 0D 0A    ..pos:INTEGER;..
016900:  42 45 47 49 4E 0D 0A 09 4D 61 6B 65 42 41 4B 28    BEGIN...MakeBAK(
016910:  66 2E 66 2C 72 65 70 6C 79 29 3B 0D 0A 09 43 68    f.f,reply);...Ch
016920:  61 72 6E 6F 3A 3D 31 3B 0D 0A 09 49 46 20 72 65    arno:=1;...IF re
016930:  70 6C 79 3D 30 20 54 48 45 4E 20 0D 0A 09 09 57    ply=0 THEN ....W
016940:  6F 72 6B 69 6E 67 3A 3D 66 2E 43 68 61 69 6E 3B    orking:=f.Chain;
016950:  0D 0A 09 09 70 6F 73 3A 3D 30 3B 0D 0A 09 09 72    ....pos:=0;....r
016960:  65 70 6C 79 3A 3D 42 6C 6F 63 6B 53 69 7A 65 3B    eply:=BlockSize;
016970:  0D 0A 09 09 4C 4F 4F 50 0D 0A 09 09 20 20 20 20    ....LOOP....    
016980:  49 46 20 20 28 57 6F 72 6B 69 6E 67 3D 4E 49 4C    IF  (Working=NIL
016990:  29 20 54 48 45 4E 20 45 58 49 54 20 45 4E 44 3B    ) THEN EXIT END;
0169A0:  0D 0A 09 09 20 20 20 20 57 49 54 48 20 57 6F 72    ....    WITH Wor
0169B0:  6B 69 6E 67 5E 20 44 4F 0D 0A 09 09 09 46 4F 52    king^ DO.....FOR
0169C0:  20 69 3A 3D 30 20 54 4F 20 49 4E 54 45 47 45 52     i:=0 TO INTEGER
0169D0:  28 42 6C 6F 63 6B 4C 65 6E 29 2D 31 20 44 4F 0D    (BlockLen)-1 DO.
0169E0:  0A 09 09 09 09 49 46 20 70 6F 73 3E 3D 42 6C 6F    .....IF pos>=Blo
0169F0:  63 6B 53 69 7A 65 20 54 48 45 4E 0D 0A 09 09 09    ckSize THEN.....
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 C9 02 00 00 00 02    ......R.........
016A20:  13 00 C5 02 00 00 00 02 13 00 C1 02 00 00 00 02    ................
016A30:  13 00 C6 02 00 00 00 02 13 00 C2 02 00 00 00 02    ................
016A40:  13 00 C7 02 00 00 00 02 13 00 C3 02 00 00 00 02    ................
016A50:  13 00 C8 02 00 00 00 02 13 00 C4 02 00 00 00 02    ................
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:  46 20 28 6E 75 6D 62 65 72 3D 4F 52 44 28 42 6C    F (number=ORD(Bl
016B10:  6F 63 6B 4C 65 6E 29 29 20 28 2A 3D 3E 43 68 61    ockLen)) (*=>Cha
016B20:  72 50 6F 73 3D 30 2A 29 20 54 48 45 4E 0D 0A 09    rPos=0*) THEN...
016B30:  09 09 28 2A 44 65 6C 65 74 65 20 62 6C 6F 63 6B    ..(*Delete block
016B40:  2A 29 0D 0A 0D 0A 09 09 09 49 46 20 4E 65 78 74    *).......IF Next
016B50:  3C 3E 4E 49 4C 20 54 48 45 4E 20 4E 65 78 74 5E    <>NIL THEN Next^
016B60:  2E 50 72 65 64 3A 3D 50 72 65 64 20 45 4E 44 3B    .Pred:=Pred END;
016B70:  0D 0A 09 09 09 49 46 20 50 72 65 64 3C 3E 4E 49    .....IF Pred<>NI
016B80:  4C 20 54 48 45 4E 20 0D 0A 09 09 09 09 50 72 65    L THEN ......Pre
016B90:  64 5E 2E 4E 65 78 74 3A 3D 4E 65 78 74 3B 0D 0A    d^.Next:=Next;..
016BA0:  09 09 09 09 44 49 53 50 4F 53 45 28 57 6F 72 6B    ....DISPOSE(Work
016BB0:  69 6E 67 29 3B 0D 0A 09 09 09 45 4C 53 49 46 20    ing);.....ELSIF 
016BC0:  4E 65 78 74 3C 3E 4E 49 4C 20 54 48 45 4E 20 0D    Next<>NIL THEN .
016BD0:  0A 09 09 09 09 66 2E 43 68 61 69 6E 3A 3D 4E 65    .....f.Chain:=Ne
016BE0:  78 74 3B 0D 0A 09 09 09 09 44 49 53 50 4F 53 45    xt;......DISPOSE
016BF0:  28 57 6F 72 6B 69 6E 67 29 3B 0D 0A 09 09 09 45    (Working);.....E
016C00:  4C 53 45 09 28 2A 6F 6E 6C 79 20 62 6C 6F 63 6B    LSE.(*only block
016C10:  20 69 6E 20 66 69 6C 65 20 73 6F 20 6B 65 65 70     in file so keep
016C20:  2A 29 0D 0A 09 09 09 09 42 6C 6F 63 6B 4C 65 6E    *)......BlockLen
016C30:  3A 3D 31 3B 0D 0A 09 09 09 09 57 6F 72 6B 69 6E    :=1;......Workin
016C40:  67 5E 2E 43 68 61 72 73 5B 30 5D 3A 3D 45 4F 46    g^.Chars[0]:=EOF
016C50:  3B 0D 0A 09 09 09 09 45 4E 44 3B 28 2A 50 72 65    ;......END;(*Pre
016C60:  64 3C 3E 4E 49 4C 2A 29 0D 0A 09 09 45 4C 53 45    d<>NIL*)....ELSE
016C70:  09 0D 0A 09 09 09 49 46 20 4F 52 44 28 42 6C 6F    ......IF ORD(Blo
016C80:  63 6B 4C 65 6E 29 3E 28 43 68 61 72 50 6F 73 2B    ckLen)>(CharPos+
016C90:  6E 75 6D 62 65 72 29 20 54 48 45 4E 0D 0A 09 09    number) THEN....
016CA0:  09 20 20 20 20 4D 6F 76 65 64 6F 77 6E 28 41 44    .    Movedown(AD
016CB0:  52 28 43 68 61 72 73 5B 43 68 61 72 50 6F 73 2B    R(Chars[CharPos+
016CC0:  6E 75 6D 62 65 72 5D 29 2C 0D 0A 09 09 09 09 41    number]),......A
016CD0:  44 52 28 43 68 61 72 73 5B 43 68 61 72 50 6F 73    DR(Chars[CharPos
016CE0:  5D 29 2C 0D 0A 09 09 09 09 4F 52 44 28 42 6C 6F    ]),......ORD(Blo
016CF0:  63 6B 4C 65 6E 29 2D 4F 52 44 28 43 68 61 72 50    ckLen)-ORD(CharP
016D00:  0A 09 09 43 68 61 72 50 6F 73 3A 3D 4F 66 66 73    ...CharPos:=Offs
016D10:  65 74 3B 0D 0A 09 09 57 6F 72 6B 69 6E 67 3A 3D    et;....Working:=
016D20:  42 6C 6F 63 6B 3B 0D 0A 09 09 45 4E 44 3B 0D 0A    Block;....END;..
016D30:  09 43 68 61 72 73 72 65 61 64 3A 3D 30 3B 0D 0A    .Charsread:=0;..
016D40:  09 69 3A 3D 72 65 70 6C 79 3B 0D 0A 09 72 3A 3D    .i:=reply;...r:=
016D50:  46 72 6F 6D 46 69 6C 65 2E 43 75 72 50 6F 73 3B    FromFile.CurPos;
016D60:  0D 0A 09 71 3A 3D 54 6F 46 69 6C 65 2E 43 75 72    ...q:=ToFile.Cur
016D70:  50 6F 73 3B 0D 0A 09 46 72 6F 6D 46 69 6C 65 2E    Pos;...FromFile.
016D80:  43 75 72 50 6F 73 3A 3D 46 72 6F 6D 46 69 6C 65    CurPos:=FromFile
016D90:  2E 4C 61 62 65 6C 73 5B 31 30 5D 3B 0D 0A 09 4C    .Labels[10];...L
016DA0:  4F 4F 50 0D 0A 09 09 49 46 20 69 3D 30 20 54 48    OOP....IF i=0 TH
016DB0:  45 4E 20 0D 0A 09 09 09 45 58 49 54 20 0D 0A 09    EN .....EXIT ...
016DC0:  09 09 45 4E 44 3B 0D 0A 09 09 49 4E 43 28 43 68    ..END;....INC(Ch
016DD0:  61 72 73 72 65 61 64 29 3B 0D 0A 09 09 63 5B 43    arsread);....c[C
016DE0:  68 61 72 73 72 65 61 64 5D 3A 3D 57 6F 72 6B 69    harsread]:=Worki
016DF0:  6E 67 5E 2E 43 68 61 72 73 5B 43 68 61 72 50 6F    ng^.Chars[CharPo
016E00:  73 5D 3B 0D 0A 09 09 49 46 20 28 43 68 61 72 73    s];....IF (Chars
016E10:  72 65 61 64 3D 48 49 47 48 28 63 29 29 20 4F 52    read=HIGH(c)) OR
016E20:  20 28 69 3D 31 29 20 54 48 45 4E 0D 0A 09 09 09     (i=1) THEN.....
016E30:  73 61 76 65 63 75 72 70 6F 73 28 46 72 6F 6D 46    savecurpos(FromF
016E40:  69 6C 65 29 3B 0D 0A 09 09 09 70 3A 3D 46 72 6F    ile);.....p:=Fro
016E50:  6D 46 69 6C 65 2E 43 75 72 50 6F 73 3B 0D 0A 09    mFile.CurPos;...
016E60:  09 09 54 6F 46 69 6C 65 2E 43 75 72 50 6F 73 3A    ..ToFile.CurPos:
016E70:  3D 71 3B 0D 0A 09 09 09 57 48 49 4C 45 20 43 68    =q;.....WHILE Ch
016E80:  61 72 73 72 65 61 64 3E 30 20 44 4F 0D 0A 09 09    arsread>0 DO....
016E90:  09 09 49 46 20 43 68 61 72 73 72 65 61 64 3E 54    ..IF Charsread>T
016EA0:  68 69 72 64 20 54 48 45 4E 0D 0A 09 09 09 09 09    hird THEN.......
016EB0:  49 6E 73 43 68 61 72 73 28 54 6F 46 69 6C 65 2C    InsChars(ToFile,
016EC0:  63 2C 54 68 69 72 64 29 3B 0D 0A 09 09 09 09 09    c,Third);.......
016ED0:  43 68 61 72 73 72 65 61 64 3A 3D 43 68 61 72 73    Charsread:=Chars
016EE0:  72 65 61 64 2D 54 68 69 72 64 3B 0D 0A 09 09 09    read-Third;.....
016EF0:  09 09 4D 6F 76 65 64 6F 77 6E 28 41 44 52 28 63    ..Movedown(ADR(c
016F00:  6B 3D 4E 49 4C 29 20 54 48 45 4E 0D 0A 09 09 52    k=NIL) THEN....R
016F10:  45 54 55 52 4E 20 46 41 4C 53 45 3B 0D 0A 09 09    ETURN FALSE;....
016F20:  45 4E 44 3B 0D 0A 09 62 3A 3D 46 2E 4C 61 62 65    END;...b:=F.Labe
016F30:  6C 73 5B 31 30 5D 2E 42 6C 6F 63 6B 3B 0D 0A 0D    ls[10].Block;...
016F40:  0A 09 57 48 49 4C 45 20 28 62 3C 3E 4E 49 4C 29    ..WHILE (b<>NIL)
016F50:  20 41 4E 44 20 28 62 3C 3E 46 2E 4C 61 62 65 6C     AND (b<>F.Label
016F60:  73 5B 31 31 5D 2E 42 6C 6F 63 6B 29 20 41 4E 44    s[11].Block) AND
016F70:  20 28 62 3C 3E 57 6F 72 6B 69 6E 67 29 20 44 4F     (b<>Working) DO
016F80:  0D 0A 09 09 62 3A 3D 62 5E 2E 4E 65 78 74 3B 0D    ....b:=b^.Next;.
016F90:  0A 09 09 45 4E 44 3B 0D 0A 0D 0A 09 0D 0A 09 28    ...END;........(
016FA0:  2A 69 66 20 65 6E 64 20 70 72 65 63 65 64 65 73    *if end precedes
016FB0:  20 62 65 67 69 6E 6E 69 6E 67 20 6F 66 20 62 6C     beginning of bl
016FC0:  6F 63 6B 2A 29 0D 0A 09 43 6F 75 6C 64 42 65 3A    ock*)...CouldBe:
016FD0:  3D 62 3D 57 6F 72 6B 69 6E 67 3B 0D 0A 09 49 46    =b=Working;...IF
016FE0:  20 4E 4F 54 20 43 6F 75 6C 64 42 65 20 54 48 45     NOT CouldBe THE
016FF0:  4E 20 52 45 54 55 52 4E 20 46 41 4C 53 45 20 45    N RETURN FALSE E
017000:  4E 44 3B 0D 0A 09 49 46 20 62 3D 46 2E 4C 61 62    ND;...IF b=F.Lab
017010:  65 6C 73 5B 31 30 5D 2E 42 6C 6F 63 6B 20 54 48    els[10].Block TH
017020:  45 4E 0D 0A 09 09 28 2A 09 69 6E 20 73 74 61 72    EN....(*.in star
017030:  74 20 62 6C 6F 63 6B 20 2D 20 63 68 65 63 6B 20    t block - check 
017040:  61 66 74 65 72 20 6C 61 62 65 6C 20 73 74 61 72    after label star
017050:  74 2A 29 0D 0A 09 09 43 6F 75 6C 64 42 65 3A 3D    t*)....CouldBe:=
017060:  43 68 61 72 50 6F 73 3E 3D 4F 52 44 28 46 2E 4C    CharPos>=ORD(F.L
017070:  61 62 65 6C 73 5B 31 30 5D 2E 4F 66 66 73 65 74    abels[10].Offset
017080:  29 0D 0A 09 09 45 4E 44 3B 0D 0A 09 49 46 20 62    )....END;...IF b
017090:  3D 46 2E 4C 61 62 65 6C 73 5B 31 31 5D 2E 42 6C    =F.Labels[11].Bl
0170A0:  6F 63 6B 20 54 48 45 4E 0D 0A 09 09 28 2A 09 69    ock THEN....(*.i
0170B0:  6E 20 73 74 61 72 74 20 62 6C 6F 63 6B 20 2D 20    n start block - 
0170C0:  63 68 65 63 6B 20 61 66 74 65 72 20 6C 61 62 65    check after labe
0170D0:  6C 20 73 74 61 72 74 2A 29 0D 0A 09 09 43 6F 75    l start*)....Cou
0170E0:  6C 64 42 65 3A 3D 43 6F 75 6C 64 42 65 20 41 4E    ldBe:=CouldBe AN
0170F0:  44 20 28 43 68 61 72 50 6F 73 3C 3D 4F 52 44 28    D (CharPos<=ORD(
017100:  5B 54 68 69 72 64 2B 31 5D 29 2C 0D 0A 09 09 09    [Third+1]),.....
017110:  09 09 09 41 44 52 28 63 29 2C 43 68 61 72 73 72    ...ADR(c),Charsr
017120:  65 61 64 29 3B 0D 0A 09 09 09 09 45 4C 53 45 0D    ead);......ELSE.
017130:  0A 09 09 09 09 09 49 6E 73 43 68 61 72 73 28 54    ......InsChars(T
017140:  6F 46 69 6C 65 2C 63 2C 43 68 61 72 73 72 65 61    oFile,c,Charsrea
017150:  64 29 3B 0D 0A 09 09 09 09 09 43 68 61 72 73 72    d);.......Charsr
017160:  65 61 64 3A 3D 30 3B 0D 0A 09 09 09 09 09 45 4E    ead:=0;.......EN
017170:  44 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09    D;......END;....
017180:  09 71 3A 3D 54 6F 46 69 6C 65 2E 43 75 72 50 6F    .q:=ToFile.CurPo
017190:  73 3B 0D 0A 09 09 09 46 72 6F 6D 46 69 6C 65 2E    s;.....FromFile.
0171A0:  43 75 72 50 6F 73 3A 3D 70 3B 0D 0A 09 09 09 73    CurPos:=p;.....s
0171B0:  65 74 63 75 72 70 6F 73 28 46 72 6F 6D 46 69 6C    etcurpos(FromFil
0171C0:  65 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09    e);.....END;....
0171D0:  49 46 20 4E 4F 54 20 41 64 76 61 6E 63 65 28 29    IF NOT Advance()
0171E0:  20 54 48 45 4E 20 45 58 49 54 20 28 2A 20 6E 65     THEN EXIT (* ne
0171F0:  76 65 72 20 74 61 6B 65 6E 2A 29 20 45 4E 44 3B    ver taken*) END;
017200:  0D 0A 09 09 44 45 43 28 69 29 3B 0D 0A 09 09 45    ....DEC(i);....E
017210:  4E 44 3B 09 28 2A 4C 4F 4F 50 2A 29 0D 0A 09 46    ND;.(*LOOP*)...F
017220:  72 6F 6D 46 69 6C 65 2E 43 75 72 50 6F 73 3A 3D    romFile.CurPos:=
017230:  72 3B 0D 0A 09 54 6F 46 69 6C 65 2E 43 75 72 50    r;...ToFile.CurP
017240:  6F 73 3A 3D 71 3B 0D 0A 09 52 45 54 55 52 4E 20    os:=q;...RETURN 
017250:  54 52 55 45 3B 0D 0A 09 45 4E 44 20 42 6C 6F 63    TRUE;...END Bloc
017260:  6B 43 6F 70 79 3B 0D 0A 50 52 4F 43 45 44 55 52    kCopy;..PROCEDUR
017270:  45 20 42 6C 6F 63 6B 44 65 6C 28 56 41 52 20 46    E BlockDel(VAR F
017280:  72 6F 6D 46 69 6C 65 3A 45 64 69 74 46 69 6C 65    romFile:EditFile
017290:  29 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 56 41 52 09    ):BOOLEAN;..VAR.
0172A0:  70 3A 50 6F 73 69 74 69 6F 6E 3B 0D 0A 42 45 47    p:Position;..BEG
0172B0:  49 4E 0D 0A 09 49 46 20 4E 4F 54 20 43 68 65 63    IN...IF NOT Chec
0172C0:  6B 42 6C 6F 63 6B 28 46 72 6F 6D 46 69 6C 65 29    kBlock(FromFile)
0172D0:  20 54 48 45 4E 20 52 45 54 55 52 4E 20 46 41 4C     THEN RETURN FAL
0172E0:  53 45 20 45 4E 44 3B 0D 0A 09 57 49 54 48 20 46    SE END;...WITH F
0172F0:  72 6F 6D 46 69 6C 65 20 44 4F 0D 0A 09 09 4C 61    romFile DO....La
017300:  46 2E 4C 61 62 65 6C 73 5B 31 31 5D 2E 4F 66 66    F.Labels[11].Off
017310:  73 65 74 29 29 0D 0A 09 09 45 4E 44 3B 0D 0A 09    set))....END;...
017320:  49 46 20 43 6F 75 6C 64 42 65 20 54 48 45 4E 0D    IF CouldBe THEN.
017330:  0A 09 09 57 48 49 4C 45 20 28 62 3C 3E 4E 49 4C    ...WHILE (b<>NIL
017340:  29 20 41 4E 44 20 28 62 3C 3E 46 2E 4C 61 62 65    ) AND (b<>F.Labe
017350:  6C 73 5B 31 31 5D 2E 42 6C 6F 63 6B 29 20 44 4F    ls[11].Block) DO
017360:  20 62 3A 3D 62 5E 2E 4E 65 78 74 20 45 4E 44 3B     b:=b^.Next END;
017370:  0D 0A 09 09 43 6F 75 6C 64 42 65 3A 3D 62 3C 3E    ....CouldBe:=b<>
017380:  4E 49 4C 0D 0A 09 09 45 4E 44 3B 0D 0A 09 52 45    NIL....END;...RE
017390:  54 55 52 4E 20 43 6F 75 6C 64 42 65 3B 0D 0A 09    TURN CouldBe;...
0173A0:  45 4E 44 20 49 6E 73 69 64 65 42 6C 6F 63 6B 3B    END InsideBlock;
0173B0:  0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 68    ....PROCEDURE Ch
0173C0:  65 63 6B 42 6C 6F 63 6B 28 56 41 52 20 46 3A 45    eckBlock(VAR F:E
0173D0:  64 69 74 46 69 6C 65 29 3A 42 4F 4F 4C 45 41 4E    ditFile):BOOLEAN
0173E0:  3B 0D 0A 0D 0A 28 2A 09 43 68 65 63 6B 20 69 66    ;....(*.Check if
0173F0:  20 62 65 67 69 6E 20 61 6E 64 20 65 6E 64 20 6F     begin and end o
017400:  66 20 62 6C 6F 63 6B 20 68 61 76 65 20 62 65 65    f block have bee
017410:  6E 20 63 6F 72 72 65 63 74 6C 79 20 73 65 74 20    n correctly set 
017420:  75 70 2A 29 0D 0A 0D 0A 42 45 47 49 4E 0D 0A 09    up*)....BEGIN...
017430:  49 46 20 28 46 2E 4C 61 62 65 6C 73 5B 31 30 5D    IF (F.Labels[10]
017440:  2E 42 6C 6F 63 6B 3D 4E 49 4C 29 20 4F 52 20 28    .Block=NIL) OR (
017450:  46 2E 4C 61 62 65 6C 73 5B 31 31 5D 2E 42 6C 6F    F.Labels[11].Blo
017460:  63 6B 3D 4E 49 4C 29 20 54 48 45 4E 0D 0A 09 09    ck=NIL) THEN....
017470:  52 45 54 55 52 4E 20 46 41 4C 53 45 3B 0D 0A 09    RETURN FALSE;...
017480:  09 45 4E 44 3B 0D 0A 09 57 6F 72 6B 69 6E 67 3A    .END;...Working:
017490:  3D 46 2E 4C 61 62 65 6C 73 5B 31 30 5D 2E 42 6C    =F.Labels[10].Bl
0174A0:  6F 63 6B 3B 0D 0A 09 72 65 70 6C 79 3A 3D 30 3B    ock;...reply:=0;
0174B0:  0D 0A 0D 0A 09 57 48 49 4C 45 20 28 57 6F 72 6B    .....WHILE (Work
0174C0:  69 6E 67 3C 3E 4E 49 4C 29 20 41 4E 44 20 28 57    ing<>NIL) AND (W
0174D0:  6F 72 6B 69 6E 67 3C 3E 46 2E 4C 61 62 65 6C 73    orking<>F.Labels
0174E0:  5B 31 31 5D 2E 42 6C 6F 63 6B 29 20 44 4F 0D 0A    [11].Block) DO..
0174F0:  09 09 72 65 70 6C 79 3A 3D 72 65 70 6C 79 2B 4F    ..reply:=reply+O
017500:  62 65 6C 73 5B 32 35 5D 3A 3D 43 75 72 50 6F 73    bels[25]:=CurPos
017510:  3B 0D 0A 09 09 43 75 72 50 6F 73 3A 3D 4C 61 62    ;....CurPos:=Lab
017520:  65 6C 73 5B 31 30 5D 3B 0D 0A 09 20 20 20 20 20    els[10];...     
017530:  20 20 20 44 65 6C 43 68 61 72 73 28 46 72 6F 6D       DelChars(From
017540:  46 69 6C 65 2C 72 65 70 6C 79 29 3B 0D 0A 09 09    File,reply);....
017550:  43 75 72 50 6F 73 3A 3D 4C 61 62 65 6C 73 5B 32    CurPos:=Labels[2
017560:  35 5D 3B 0D 0A 09 09 4C 61 62 65 6C 73 5B 32 35    5];....Labels[25
017570:  5D 2E 42 6C 6F 63 6B 3A 3D 4E 49 4C 3B 0D 0A 09    ].Block:=NIL;...
017580:  09 45 4E 44 3B 0D 0A 09 52 45 54 55 52 4E 20 54    .END;...RETURN T
017590:  52 55 45 3B 0D 0A 09 45 4E 44 20 42 6C 6F 63 6B    RUE;...END Block
0175A0:  44 65 6C 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20    Del;..PROCEDURE 
0175B0:  52 65 6C 6F 63 61 74 65 4C 61 62 65 6C 73 28 56    RelocateLabels(V
0175C0:  41 52 20 66 3A 45 64 69 74 46 69 6C 65 3B 6E 75    AR f:EditFile;nu
0175D0:  6D 62 65 72 3A 49 4E 54 45 47 45 52 29 3B 0D 0A    mber:INTEGER);..
0175E0:  28 2A 09 52 65 6C 6F 63 61 74 65 20 6C 61 62 65    (*.Relocate labe
0175F0:  6C 73 20 66 6F 72 20 74 68 65 20 63 75 72 72 65    ls for the curre
017600:  6E 74 20 62 6C 6F 63 6B 0D 0A 09 6E 75 6D 62 65    nt block...numbe
017610:  72 20 69 73 20 6E 75 6D 62 65 72 20 6F 66 20 63    r is number of c
017620:  68 61 72 61 63 74 65 72 73 20 62 65 69 6E 67 20    haracters being 
017630:  64 65 6C 65 74 65 64 20 0D 0A 09 28 2D 76 65 20    deleted ...(-ve 
017640:  66 6F 72 20 69 6E 73 65 72 74 69 6F 6E 73 29 0D    for insertions).
017650:  0A 2A 29 0D 0A 42 45 47 49 4E 0D 0A 20 20 20 20    .*)..BEGIN..    
017660:  20 20 20 20 46 4F 52 20 72 65 70 6C 79 3A 3D 30        FOR reply:=0
017670:  20 54 4F 20 48 49 47 48 28 66 2E 4C 61 62 65 6C     TO HIGH(f.Label
017680:  73 29 20 44 4F 0D 0A 09 09 57 49 54 48 20 66 2E    s) DO....WITH f.
017690:  4C 61 62 65 6C 73 5B 72 65 70 6C 79 5D 20 44 4F    Labels[reply] DO
0176A0:  0D 0A 09 09 09 49 46 20 28 42 6C 6F 63 6B 3D 57    .....IF (Block=W
0176B0:  6F 72 6B 69 6E 67 29 20 41 4E 44 20 28 4F 52 44    orking) AND (ORD
0176C0:  28 4F 66 66 73 65 74 29 3E 3D 43 68 61 72 50 6F    (Offset)>=CharPo
0176D0:  73 29 20 54 48 45 4E 0D 0A 09 09 09 09 49 46 20    s) THEN......IF 
0176E0:  28 6E 75 6D 62 65 72 3D 4F 52 44 28 57 6F 72 6B    (number=ORD(Work
0176F0:  69 6E 67 5E 2E 42 6C 6F 63 6B 4C 65 6E 29 29 20    ing^.BlockLen)) 
017700:  52 44 28 57 6F 72 6B 69 6E 67 5E 2E 42 6C 6F 63    RD(Working^.Bloc
017710:  6B 4C 65 6E 29 3B 0D 0A 09 09 57 6F 72 6B 69 6E    kLen);....Workin
017720:  67 3A 3D 57 6F 72 6B 69 6E 67 5E 2E 4E 65 78 74    g:=Working^.Next
017730:  3B 0D 0A 09 09 45 4E 44 3B 0D 0A 0D 0A 09 49 46    ;....END;.....IF
017740:  20 57 6F 72 6B 69 6E 67 3D 4E 49 4C 20 54 48 45     Working=NIL THE
017750:  4E 20 52 45 54 55 52 4E 20 46 41 4C 53 45 20 45    N RETURN FALSE E
017760:  4E 44 3B 0D 0A 09 0D 0A 09 28 2A 69 66 20 65 6E    ND;......(*if en
017770:  64 20 70 72 65 63 65 64 65 73 20 62 65 67 69 6E    d precedes begin
017780:  6E 69 6E 67 20 6F 66 20 62 6C 6F 63 6B 2A 29 0D    ning of block*).
017790:  0A 0D 0A 09 72 65 70 6C 79 3A 3D 72 65 70 6C 79    ....reply:=reply
0177A0:  2B 4F 52 44 28 46 2E 4C 61 62 65 6C 73 5B 31 31    +ORD(F.Labels[11
0177B0:  5D 2E 4F 66 66 73 65 74 29 2D 4F 52 44 28 46 2E    ].Offset)-ORD(F.
0177C0:  4C 61 62 65 6C 73 5B 31 30 5D 2E 4F 66 66 73 65    Labels[10].Offse
0177D0:  74 29 3B 0D 0A 09 52 45 54 55 52 4E 20 72 65 70    t);...RETURN rep
0177E0:  6C 79 3E 3D 30 0D 0A 09 45 4E 44 20 43 68 65 63    ly>=0...END Chec
0177F0:  6B 42 6C 6F 63 6B 3B 0D 0A 50 52 4F 43 45 44 55    kBlock;..PROCEDU
017800:  52 45 20 42 6C 6F 63 6B 43 6F 70 79 28 56 41 52    RE BlockCopy(VAR
017810:  20 46 72 6F 6D 46 69 6C 65 2C 54 6F 46 69 6C 65     FromFile,ToFile
017820:  3A 45 64 69 74 46 69 6C 65 29 3A 42 4F 4F 4C 45    :EditFile):BOOLE
017830:  41 4E 3B 0D 0A 0D 0A 28 2A 09 43 61 72 65 66 75    AN;....(*.Carefu
017840:  6C 20 2D 20 45 61 73 79 20 2D 20 4F 75 63 68 21    l - Easy - Ouch!
017850:  0D 0A 0D 0A 09 46 72 6F 6D 46 69 6C 65 20 61 6E    .....FromFile an
017860:  64 20 54 6F 46 69 6C 65 20 6D 61 79 20 62 65 20    d ToFile may be 
017870:  74 68 65 20 73 61 6D 65 20 20 76 61 72 69 61 62    the same  variab
017880:  6C 65 2A 29 0D 0A 0D 0A 56 41 52 09 69 3A 49 4E    le*)....VAR.i:IN
017890:  54 45 47 45 52 3B 0D 0A 09 63 3A 41 52 52 41 59    TEGER;...c:ARRAY
0178A0:  5B 31 2E 2E 54 65 78 74 4C 65 6E 5D 20 4F 46 20    [1..TextLen] OF 
0178B0:  43 48 41 52 3B 0D 0A 09 70 2C 71 2C 72 3A 50 6F    CHAR;...p,q,r:Po
0178C0:  73 69 74 69 6F 6E 3B 0D 0A 0D 0A 28 2A 09 54 68    sition;....(*.Th
0178D0:  69 73 20 63 6F 64 65 20 69 73 20 61 20 6C 69 74    is code is a lit
0178E0:  74 6C 65 20 6F 64 64 20 66 6F 72 20 74 68 65 20    tle odd for the 
0178F0:  66 6F 6C 6C 6F 77 69 6E 67 20 72 65 61 73 6F 6E    following reason
017900:  54 48 45 4E 0D 0A 09 09 09 09 09 42 6C 6F 63 6B    THEN.......Block
017910:  3A 3D 57 6F 72 6B 69 6E 67 5E 2E 4E 65 78 74 3B    :=Working^.Next;
017920:  0D 0A 09 09 09 09 09 4F 66 66 73 65 74 3A 3D 30    .......Offset:=0
017930:  3B 0D 0A 09 09 09 09 45 4C 53 49 46 20 28 6E 75    ;......ELSIF (nu
017940:  6D 62 65 72 2B 43 68 61 72 50 6F 73 29 3E 4F 52    mber+CharPos)>OR
017950:  44 28 4F 66 66 73 65 74 29 20 54 48 45 4E 0D 0A    D(Offset) THEN..
017960:  09 09 09 09 09 4F 66 66 73 65 74 3A 3D 43 68 61    .....Offset:=Cha
017970:  72 50 6F 73 0D 0A 09 09 09 09 45 4C 53 45 0D 0A    rPos......ELSE..
017980:  09 09 09 09 09 4F 66 66 73 65 74 3A 3D 4F 52 44    .....Offset:=ORD
017990:  28 4F 66 66 73 65 74 29 2D 6E 75 6D 62 65 72 0D    (Offset)-number.
0179A0:  0A 09 09 09 09 09 45 4E 44 3B 28 2A 49 46 2A 29    ......END;(*IF*)
0179B0:  0D 0A 09 09 09 09 45 4E 44 3B 28 2A 49 46 20 42    ......END;(*IF B
0179C0:  6C 6F 63 6B 3D 57 6F 72 6B 69 6E 67 20 65 74 63    lock=Working etc
0179D0:  2A 29 0D 0A 09 09 09 45 4E 44 3B 20 28 2A 57 49    *).....END; (*WI
0179E0:  54 48 2A 29 0D 0A 09 09 45 4E 44 3B 28 2A 46 4F    TH*)....END;(*FO
0179F0:  52 2A 29 0D 0A 09 45 4E 44 20 52 65 6C 6F 63 61    R*)...END Reloca
017A00:  74 65 4C 61 62 65 6C 73 3B 0D 0A 0D 0A 0D 0A 50    teLabels;......P
017A10:  52 4F 43 45 44 55 52 45 20 44 65 6C 43 68 61 72    ROCEDURE DelChar
017A20:  73 28 56 41 52 20 66 3A 45 64 69 74 46 69 6C 65    s(VAR f:EditFile
017A30:  3B 6E 75 6D 62 65 72 3A 49 4E 54 45 47 45 52 29    ;number:INTEGER)
017A40:  3B 0D 0A 0D 0A 28 2A 09 64 65 6C 65 74 65 20 61    ;....(*.delete a
017A50:  20 6E 75 6D 62 65 72 20 6F 66 20 63 68 61 72 61     number of chara
017A60:  63 74 65 72 73 2A 29 0D 0A 0D 0A 50 52 4F 43 45    cters*)....PROCE
017A70:  44 55 52 45 20 44 65 6C 49 6E 42 6C 6F 63 6B 28    DURE DelInBlock(
017A80:  6E 75 6D 62 65 72 3A 49 4E 54 45 47 45 52 29 3B    number:INTEGER);
017A90:  0D 0A 0D 0A 28 2A 09 50 65 72 66 6F 72 6D 20 61    ....(*.Perform a
017AA0:  20 64 65 6C 65 74 65 20 77 68 69 63 68 20 64 6F     delete which do
017AB0:  65 73 20 6E 6F 74 20 73 70 61 6E 20 61 20 62 6C    es not span a bl
017AC0:  6F 63 6B 2A 29 0D 0A 42 45 47 49 4E 0D 0A 09 52    ock*)..BEGIN...R
017AD0:  65 6C 6F 63 61 74 65 4C 61 62 65 6C 73 28 66 2C    elocateLabels(f,
017AE0:  6E 75 6D 62 65 72 29 3B 0D 0A 09 57 49 54 48 20    number);...WITH 
017AF0:  57 6F 72 6B 69 6E 67 5E 20 44 4F 0D 0A 09 09 49    Working^ DO....I
017B00:  3A 0D 0A 0D 0A 09 31 2F 09 49 6E 73 43 68 61 72    :.....1/.InsChar
017B10:  73 20 63 61 6E 6E 6F 74 20 69 6E 73 65 72 74 20    s cannot insert 
017B20:  6D 6F 72 65 20 74 68 61 6E 20 68 61 6C 66 20 61    more than half a
017B30:  20 62 6C 6F 63 6B 20 6F 66 20 63 68 61 72 61 63     block of charac
017B40:  74 65 72 73 0D 0A 09 32 2F 09 49 66 20 79 6F 75    ters...2/.If you
017B50:  20 64 6F 6E 27 74 20 72 65 61 64 20 61 74 20 6C     don't read at l
017B60:  65 61 73 74 20 61 20 62 6C 6F 63 6B 20 61 74 20    east a block at 
017B70:  61 20 74 69 6D 65 20 61 6E 64 20 74 68 65 0D 0A    a time and the..
017B80:  09 09 74 6F 20 61 6E 64 20 66 72 6F 6D 20 66 69    ..to and from fi
017B90:  6C 65 73 20 61 72 65 20 74 68 65 20 73 61 6D 65    les are the same
017BA0:  2C 20 79 6F 75 20 6D 61 79 20 68 61 76 65 20 74    , you may have t
017BB0:  6F 20 63 68 61 6E 67 65 20 74 68 65 0D 0A 09 09    o change the....
017BC0:  70 6F 73 69 74 69 6F 6E 20 69 6E 20 74 68 65 20    position in the 
017BD0:  66 72 6F 6D 20 66 69 6C 65 20 74 6F 20 72 65 66    from file to ref
017BE0:  6C 65 63 74 20 69 6E 73 65 72 74 69 6F 6E 73 2C    lect insertions,
017BF0:  20 77 68 69 63 68 20 69 73 0D 0A 09 09 61 77 6B     which is....awk
017C00:  77 61 72 64 20 28 74 68 6F 75 67 68 20 79 6F 75    ward (though you
017C10:  20 63 6F 75 6C 64 20 61 6C 77 61 79 73 20 61 64     could always ad
017C20:  64 20 61 20 74 65 6D 70 6F 72 61 72 79 20 6C 61    d a temporary la
017C30:  62 65 6C 29 0D 0A 0D 0A 09 54 68 65 72 65 66 6F    bel).....Therefo
017C40:  72 65 2C 20 74 65 78 74 20 69 73 20 72 65 61 64    re, text is read
017C50:  20 61 6E 64 20 74 68 65 6E 20 69 6E 73 65 72 74     and then insert
017C60:  65 64 20 69 6E 20 75 70 20 74 6F 20 74 68 72 65    ed in up to thre
017C70:  65 20 67 6F 65 73 21 2A 29 0D 0A 0D 0A 09 54 68    e goes!*).....Th
017C80:  69 72 64 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 42    ird:CARDINAL;..B
017C90:  45 47 49 4E 0D 0A 09 54 68 69 72 64 3A 3D 54 65    EGIN...Third:=Te
017CA0:  78 74 4C 65 6E 20 44 49 56 20 33 3B 0D 0A 09 49    xtLen DIV 3;...I
017CB0:  46 20 4E 4F 54 20 43 68 65 63 6B 42 6C 6F 63 6B    F NOT CheckBlock
017CC0:  28 46 72 6F 6D 46 69 6C 65 29 20 54 48 45 4E 20    (FromFile) THEN 
017CD0:  52 45 54 55 52 4E 20 46 41 4C 53 45 20 45 4E 44    RETURN FALSE END
017CE0:  3B 0D 0A 09 57 49 54 48 20 46 72 6F 6D 46 69 6C    ;...WITH FromFil
017CF0:  65 2E 4C 61 62 65 6C 73 5B 31 30 5D 20 44 4F 0D    e.Labels[10] DO.
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 C9 02 00 00 00 02    ......R.........
017D20:  14 00 C5 02 00 00 00 02 14 00 C1 02 00 00 00 02    ................
017D30:  14 00 C6 02 00 00 00 02 14 00 C2 02 00 00 00 02    ................
017D40:  14 00 C7 02 00 00 00 02 14 00 C3 02 00 00 00 02    ................
017D50:  14 00 C8 02 00 00 00 02 14 00 C4 02 00 00 00 02    ................
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:  20 20 5E 51 43 20 61 6E 64 20 5E 51 52 2A 29 0D      ^QC and ^QR*).
017E10:  0A 09 09 57 6F 72 6B 69 6E 67 3A 3D 66 2E 43 68    ...Working:=f.Ch
017E20:  61 69 6E 3B 0D 0A 09 09 43 68 61 72 50 6F 73 3A    ain;....CharPos:
017E30:  3D 30 3B 0D 0A 09 09 70 6F 73 3A 3D 30 3B 0D 0A    =0;....pos:=0;..
017E40:  09 45 4C 53 49 46 20 6C 69 6E 65 73 74 6F 6D 6F    .ELSIF linestomo
017E50:  76 65 3D 31 36 37 33 36 20 54 48 45 4E 0D 0A 09    ve=16736 THEN...
017E60:  09 57 48 49 4C 45 20 57 6F 72 6B 69 6E 67 5E 2E    .WHILE Working^.
017E70:  4E 65 78 74 3C 3E 4E 49 4C 20 44 4F 0D 0A 09 09    Next<>NIL DO....
017E80:  09 57 6F 72 6B 69 6E 67 3A 3D 57 6F 72 6B 69 6E    .Working:=Workin
017E90:  67 5E 2E 4E 65 78 74 3B 0D 0A 09 09 09 45 4E 44    g^.Next;.....END
017EA0:  3B 0D 0A 09 09 43 68 61 72 50 6F 73 3A 3D 4F 52    ;....CharPos:=OR
017EB0:  44 28 57 6F 72 6B 69 6E 67 5E 2E 42 6C 6F 63 6B    D(Working^.Block
017EC0:  4C 65 6E 29 3B 0D 0A 09 09 49 46 20 57 6F 72 6B    Len);....IF Work
017ED0:  69 6E 67 5E 2E 43 68 61 72 73 5B 43 68 61 72 50    ing^.Chars[CharP
017EE0:  6F 73 2D 31 5D 3D 45 4F 46 20 54 48 45 4E 0D 0A    os-1]=EOF THEN..
017EF0:  09 09 09 44 45 43 28 43 68 61 72 50 6F 73 29 3B    ...DEC(CharPos);
017F00:  0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 73 61 76    .....END;....sav
017F10:  65 63 75 72 70 6F 73 28 66 29 3B 0D 0A 09 09 70    ecurpos(f);....p
017F20:  3A 3D 66 2E 43 75 72 50 6F 73 3B 0D 0A 09 09 70    :=f.CurPos;....p
017F30:  6F 73 3A 3D 42 61 63 6B 75 70 4C 69 6E 65 28 29    os:=BackupLine()
017F40:  3B 0D 0A 09 09 66 2E 43 75 72 50 6F 73 3A 3D 70    ;....f.CurPos:=p
017F50:  3B 0D 0A 09 45 4C 53 45 0D 0A 09 20 20 20 20 28    ;...ELSE...    (
017F60:  2A 63 68 61 73 65 20 62 61 63 6B 77 61 72 64 73    *chase backwards
017F70:  20 75 6E 74 69 6C 20 61 20 43 52 2C 20 4C 46 20     until a CR, LF 
017F80:  6F 72 20 46 46 20 69 73 20 66 6F 75 6E 64 20 61    or FF is found a
017F90:  6E 64 0D 0A 09 20 20 20 20 20 20 63 61 6C 63 75    nd...      calcu
017FA0:  6C 61 74 65 20 70 6F 73 69 74 69 6F 6E 20 69 6E    late position in
017FB0:  20 6C 69 6E 65 2A 29 0D 0A 09 20 20 20 20 70 6F     line*)...    po
017FC0:  73 3A 3D 42 61 63 6B 75 70 4C 69 6E 65 28 29 3B    s:=BackupLine();
017FD0:  0D 0A 09 20 20 20 20 6C 65 6E 3A 3D 30 3B 0D 0A    ...    len:=0;..
017FE0:  0D 0A 09 20 20 20 20 28 2A 09 6E 6F 77 20 70 6F    ...    (*.now po
017FF0:  73 69 74 69 6F 6E 65 64 20 74 6F 20 62 65 67 69    sitioned to begi
018000:  3B 0D 0A 09 09 09 09 09 4F 66 66 73 65 74 3A 3D    ;.......Offset:=
018010:  4F 52 44 28 4F 66 66 73 65 74 29 2D 6C 65 66 74    ORD(Offset)-left
018020:  3B 0D 0A 09 09 09 09 09 45 4E 44 3B 0D 0A 09 09    ;.......END;....
018030:  09 09 45 4E 44 3B 0D 0A 09 09 09 45 4E 44 3B 0D    ..END;.....END;.
018040:  0A 09 09 09 09 09 0D 0A 09 09 57 49 54 48 20 4D    ..........WITH M
018050:  61 69 6E 42 6C 6F 63 6B 5E 20 44 4F 0D 0A 09 09    ainBlock^ DO....
018060:  09 57 6F 72 6B 69 6E 67 5E 2E 4E 65 78 74 3A 3D    .Working^.Next:=
018070:  4E 65 78 74 3B 0D 0A 09 09 09 49 46 20 4E 65 78    Next;.....IF Nex
018080:  74 3C 3E 4E 49 4C 20 54 48 45 4E 20 4E 65 78 74    t<>NIL THEN Next
018090:  5E 2E 50 72 65 64 3A 3D 57 6F 72 6B 69 6E 67 20    ^.Pred:=Working 
0180A0:  45 4E 44 3B 0D 0A 09 09 09 4E 65 78 74 3A 3D 57    END;.....Next:=W
0180B0:  6F 72 6B 69 6E 67 3B 0D 0A 09 09 09 57 6F 72 6B    orking;.....Work
0180C0:  69 6E 67 5E 2E 42 6C 6F 63 6B 4C 65 6E 3A 3D 4F    ing^.BlockLen:=O
0180D0:  52 44 28 42 6C 6F 63 6B 4C 65 6E 29 2D 6C 65 66    RD(BlockLen)-lef
0180E0:  74 3B 0D 0A 09 09 09 42 6C 6F 63 6B 4C 65 6E 3A    t;.....BlockLen:
0180F0:  3D 6C 65 66 74 3B 0D 0A 09 09 09 4D 6F 76 65 75    =left;.....Moveu
018100:  70 28 41 44 52 28 43 68 61 72 73 5B 42 6C 6F 63    p(ADR(Chars[Bloc
018110:  6B 4C 65 6E 5D 29 2C 0D 0A 09 09 09 20 20 20 20    kLen]),.....    
018120:  41 44 52 28 57 6F 72 6B 69 6E 67 5E 2E 43 68 61    ADR(Working^.Cha
018130:  72 73 29 2C 0D 0A 09 09 09 20 20 20 20 6C 65 66    rs),.....    lef
018140:  74 2B 31 29 3B 0D 0A 09 09 09 49 46 20 43 68 61    t+1);.....IF Cha
018150:  72 50 6F 73 3C 4F 52 44 28 42 6C 6F 63 6B 4C 65    rPos<ORD(BlockLe
018160:  6E 29 20 54 48 45 4E 20 57 6F 72 6B 69 6E 67 3A    n) THEN Working:
018170:  3D 4D 61 69 6E 42 6C 6F 63 6B 0D 0A 09 09 09 45    =MainBlock.....E
018180:  4C 53 45 20 43 68 61 72 50 6F 73 3A 3D 43 68 61    LSE CharPos:=Cha
018190:  72 50 6F 73 2D 4F 52 44 28 42 6C 6F 63 6B 4C 65    rPos-ORD(BlockLe
0181A0:  6E 29 20 45 4E 44 3B 0D 0A 09 09 09 49 6E 73 49    n) END;.....InsI
0181B0:  6E 42 6C 6F 63 6B 3B 0D 0A 09 09 09 45 4E 44 3B    nBlock;.....END;
0181C0:  28 2A 57 49 54 48 2A 29 0D 0A 09 09 45 4E 44 3B    (*WITH*)....END;
0181D0:  28 2A 6C 65 66 74 3E 3D 6C 65 6E 2A 29 0D 0A 09    (*left>=len*)...
0181E0:  73 61 76 65 63 75 72 70 6F 73 28 66 29 3B 0D 0A    savecurpos(f);..
0181F0:  09 45 4E 44 20 49 6E 73 43 68 61 72 73 3B 0D 0A    .END InsChars;..
018200:  6F 73 29 2D 6E 75 6D 62 65 72 29 3B 0D 0A 09 09    os)-number);....
018210:  09 09 45 4E 44 3B 0D 0A 09 09 09 42 6C 6F 63 6B    ..END;.....Block
018220:  4C 65 6E 3A 3D 4F 52 44 28 42 6C 6F 63 6B 4C 65    Len:=ORD(BlockLe
018230:  6E 29 2D 6E 75 6D 62 65 72 3B 0D 0A 09 09 09 49    n)-number;.....I
018240:  46 20 28 4E 65 78 74 3D 4E 49 4C 29 20 41 4E 44    F (Next=NIL) AND
018250:  20 28 43 68 61 72 73 5B 42 6C 6F 63 6B 4C 65 6E     (Chars[BlockLen
018260:  2D 31 5D 3C 3E 45 4F 46 29 20 54 48 45 4E 0D 0A    -1]<>EOF) THEN..
018270:  09 09 09 09 43 68 61 72 73 5B 42 6C 6F 63 6B 4C    ....Chars[BlockL
018280:  65 6E 5D 3A 3D 45 4F 46 3B 0D 0A 09 09 09 09 49    en]:=EOF;......I
018290:  4E 43 28 42 6C 6F 63 6B 4C 65 6E 29 3B 20 0D 0A    NC(BlockLen); ..
0182A0:  09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 45 4E 44    ....END;.....END
0182B0:  28 2A 20 42 6C 6F 63 6B 20 6E 6F 74 20 6E 6F 77    (* Block not now
0182C0:  20 65 6D 70 74 79 2A 29 3B 0D 0A 09 09 45 4E 44     empty*);....END
0182D0:  3B 28 2A 57 49 54 48 2A 29 0D 0A 09 45 4E 44 20    ;(*WITH*)...END 
0182E0:  44 65 6C 49 6E 42 6C 6F 63 6B 3B 0D 0A 0D 0A 56    DelInBlock;....V
0182F0:  41 52 09 4E 65 78 74 42 6C 6F 63 6B 3A 50 54 65    AR.NextBlock:PTe
018300:  78 74 3B 0D 0A 42 45 47 49 4E 0D 0A 09 73 65 74    xt;..BEGIN...set
018310:  63 75 72 70 6F 73 28 66 29 3B 0D 0A 09 57 48 49    curpos(f);...WHI
018320:  4C 45 20 28 6E 75 6D 62 65 72 3E 30 29 20 41 4E    LE (number>0) AN
018330:  44 20 28 57 6F 72 6B 69 6E 67 3C 3E 4E 49 4C 29    D (Working<>NIL)
018340:  20 44 4F 0D 0A 09 09 4E 65 78 74 42 6C 6F 63 6B     DO....NextBlock
018350:  3A 3D 57 6F 72 6B 69 6E 67 5E 2E 4E 65 78 74 3B    :=Working^.Next;
018360:  0D 0A 09 09 49 46 20 6E 75 6D 62 65 72 3C 3D 28    ....IF number<=(
018370:  4F 52 44 28 57 6F 72 6B 69 6E 67 5E 2E 42 6C 6F    ORD(Working^.Blo
018380:  63 6B 4C 65 6E 29 2D 43 68 61 72 50 6F 73 29 20    ckLen)-CharPos) 
018390:  54 48 45 4E 0D 0A 09 09 09 44 65 6C 49 6E 42 6C    THEN.....DelInBl
0183A0:  6F 63 6B 28 6E 75 6D 62 65 72 29 3B 0D 0A 09 09    ock(number);....
0183B0:  09 6E 75 6D 62 65 72 3A 3D 30 3B 0D 0A 09 09 45    .number:=0;....E
0183C0:  4C 53 45 0D 0A 09 09 09 6E 75 6D 62 65 72 3A 3D    LSE.....number:=
0183D0:  6E 75 6D 62 65 72 2D 4F 52 44 28 57 6F 72 6B 69    number-ORD(Worki
0183E0:  6E 67 5E 2E 42 6C 6F 63 6B 4C 65 6E 29 2B 43 68    ng^.BlockLen)+Ch
0183F0:  61 72 50 6F 73 3B 0D 0A 09 09 09 44 65 6C 49 6E    arPos;.....DelIn
018400:  0D 0A 0D 0A 56 41 52 09 62 3A 42 4F 4F 4C 45 41    ....VAR.b:BOOLEA
018410:  4E 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20    N;....PROCEDURE 
018420:  42 61 63 6B 75 70 4C 69 6E 65 28 29 3A 49 4E 54    BackupLine():INT
018430:  45 47 45 52 3B 0D 0A 0D 0A 28 2A 09 42 61 63 6B    EGER;....(*.Back
018440:  75 70 20 74 6F 20 62 65 67 69 6E 6E 69 6E 67 20    up to beginning 
018450:  6F 66 20 63 75 72 72 65 6E 74 20 6C 69 6E 65 0D    of current line.
018460:  0A 09 72 65 74 75 72 6E 73 20 6E 75 6D 62 65 72    ..returns number
018470:  20 6F 66 20 63 68 61 72 61 63 74 65 72 73 20 62     of characters b
018480:  61 63 6B 65 64 20 75 70 0D 0A 0D 0A 09 61 66 74    acked up.....aft
018490:  65 72 20 74 68 65 20 63 61 6C 6C 2C 20 74 68 65    er the call, the
0184A0:  20 70 6F 73 69 74 69 6F 6E 20 69 73 20 74 68 65     position is the
0184B0:  20 66 69 72 73 74 20 63 68 61 72 61 63 74 65 72     first character
0184C0:  0D 0A 09 61 66 74 65 72 20 6F 66 20 74 68 65 20    ...after of the 
0184D0:  6C 69 6E 65 2A 29 0D 0A 56 41 52 09 70 6F 73 3A    line*)..VAR.pos:
0184E0:  49 4E 54 45 47 45 52 3B 0D 0A 42 45 47 49 4E 0D    INTEGER;..BEGIN.
0184F0:  0A 09 70 6F 73 3A 3D 30 3B 0D 0A 09 4C 4F 4F 50    ..pos:=0;...LOOP
018500:  0D 0A 09 09 49 46 20 4E 4F 54 20 42 61 63 6B 75    ....IF NOT Backu
018510:  70 28 29 20 54 48 45 4E 20 45 58 49 54 20 45 4E    p() THEN EXIT EN
018520:  44 3B 0D 0A 09 09 63 68 3A 3D 57 6F 72 6B 69 6E    D;....ch:=Workin
018530:  67 5E 2E 43 68 61 72 73 5B 43 68 61 72 50 6F 73    g^.Chars[CharPos
018540:  5D 3B 0D 0A 09 09 49 46 20 28 28 63 68 3D 43 52    ];....IF ((ch=CR
018550:  29 20 4F 52 20 28 63 68 3D 4C 46 29 20 4F 52 20    ) OR (ch=LF) OR 
018560:  28 63 68 3D 46 46 29 29 20 20 54 48 45 4E 20 0D    (ch=FF))  THEN .
018570:  0A 09 09 09 62 3A 3D 41 64 76 61 6E 63 65 28 29    ....b:=Advance()
018580:  3B 0D 0A 09 09 09 45 58 49 54 20 0D 0A 09 09 09    ;.....EXIT .....
018590:  45 4E 44 3B 0D 0A 09 09 70 6F 73 3A 3D 70 6F 73    END;....pos:=pos
0185A0:  2B 31 3B 0D 0A 09 09 45 4E 44 3B 20 28 2A 4C 4F    +1;....END; (*LO
0185B0:  4F 50 2A 29 0D 0A 09 52 45 54 55 52 4E 20 70 6F    OP*)...RETURN po
0185C0:  73 3B 0D 0A 09 45 4E 44 20 42 61 63 6B 75 70 4C    s;...END BackupL
0185D0:  69 6E 65 3B 0D 0A 56 41 52 09 41 64 76 61 6E 63    ine;..VAR.Advanc
0185E0:  65 4F 4B 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 50 52    eOK:BOOLEAN;..PR
0185F0:  4F 43 45 44 55 52 45 20 41 64 76 61 6E 63 65 4C    OCEDURE AdvanceL
018600:  42 6C 6F 63 6B 28 4F 52 44 28 57 6F 72 6B 69 6E    Block(ORD(Workin
018610:  67 5E 2E 42 6C 6F 63 6B 4C 65 6E 29 2D 43 68 61    g^.BlockLen)-Cha
018620:  72 50 6F 73 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D    rPos);.....END;.
018630:  0A 09 09 49 46 20 28 6E 75 6D 62 65 72 3E 30 29    ...IF (number>0)
018640:  20 4F 52 20 28 57 6F 72 6B 69 6E 67 3D 4E 49 4C     OR (Working=NIL
018650:  29 20 54 48 45 4E 20 0D 0A 09 09 09 57 6F 72 6B    ) THEN .....Work
018660:  69 6E 67 3A 3D 4E 65 78 74 42 6C 6F 63 6B 3B 0D    ing:=NextBlock;.
018670:  0A 09 09 09 43 68 61 72 50 6F 73 3A 3D 30 3B 20    ....CharPos:=0; 
018680:  0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44    .....END;....END
018690:  3B 20 28 2A 57 48 49 4C 45 2A 29 0D 0A 09 49 46    ; (*WHILE*)...IF
0186A0:  20 57 6F 72 6B 69 6E 67 3D 4E 49 4C 20 54 48 45     Working=NIL THE
0186B0:  4E 20 0D 0A 09 09 57 6F 72 6B 69 6E 67 3A 3D 66    N ....Working:=f
0186C0:  2E 43 68 61 69 6E 3B 0D 0A 09 09 57 48 49 4C 45    .Chain;....WHILE
0186D0:  20 57 6F 72 6B 69 6E 67 5E 2E 4E 65 78 74 3C 3E     Working^.Next<>
0186E0:  4E 49 4C 20 44 4F 20 57 6F 72 6B 69 6E 67 3A 3D    NIL DO Working:=
0186F0:  57 6F 72 6B 69 6E 67 5E 2E 4E 65 78 74 20 45 4E    Working^.Next EN
018700:  44 3B 0D 0A 09 09 43 68 61 72 50 6F 73 3A 3D 57    D;....CharPos:=W
018710:  6F 72 6B 69 6E 67 5E 2E 42 6C 6F 63 6B 4C 65 6E    orking^.BlockLen
018720:  0D 0A 09 09 45 4E 44 3B 28 2A 64 65 6C 65 74 65    ....END;(*delete
018730:  64 20 65 76 65 72 79 74 68 69 6E 67 2A 29 0D 0A    d everything*)..
018740:  09 73 61 76 65 63 75 72 70 6F 73 28 66 29 3B 0D    .savecurpos(f);.
018750:  0A 09 45 4E 44 20 44 65 6C 43 68 61 72 73 3B 0D    ..END DelChars;.
018760:  0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 49 6E 73    ...PROCEDURE Ins
018770:  43 68 61 72 73 28 56 41 52 20 66 3A 45 64 69 74    Chars(VAR f:Edit
018780:  46 69 6C 65 3B 56 41 52 20 53 3A 41 52 52 41 59    File;VAR S:ARRAY
018790:  20 4F 46 20 43 48 41 52 3B 6C 65 6E 3A 49 4E 54     OF CHAR;len:INT
0187A0:  45 47 45 52 29 3B 0D 0A 28 2A 09 69 6E 73 65 72    EGER);..(*.inser
0187B0:  74 20 63 68 61 72 61 63 74 65 72 73 2A 29 0D 0A    t characters*)..
0187C0:  56 41 52 09 6C 65 66 74 2C 66 6F 6C 6C 6F 77 73    VAR.left,follows
0187D0:  3A 49 4E 54 45 47 45 52 3B 0D 0A 09 4D 61 69 6E    :INTEGER;...Main
0187E0:  42 6C 6F 63 6B 3A 50 54 65 78 74 3B 0D 0A 50 52    Block:PText;..PR
0187F0:  4F 43 45 44 55 52 45 20 49 6E 73 49 6E 42 6C 6F    OCEDURE InsInBlo
018800:  69 6E 65 28 29 3A 49 4E 54 45 47 45 52 3B 0D 0A    ine():INTEGER;..
018810:  0D 0A 28 2A 09 6D 6F 76 65 20 20 74 6F 20 73 74    ..(*.move  to st
018820:  61 72 74 20 6F 66 20 6E 65 78 74 20 6C 69 6E 65    art of next line
018830:  0D 0A 09 72 65 74 75 72 6E 73 20 63 68 61 72 61    ...returns chara
018840:  63 74 65 72 73 20 61 64 76 61 6E 63 65 64 0D 0A    cters advanced..
018850:  09 70 6F 73 69 74 69 6F 6E 73 20 74 6F 20 66 69    .positions to fi
018860:  72 73 74 20 63 68 61 72 61 63 74 65 72 20 6F 66    rst character of
018870:  20 6E 65 78 74 20 6C 69 6E 65 2A 29 0D 0A 56 41     next line*)..VA
018880:  52 09 70 6F 73 3A 49 4E 54 45 47 45 52 3B 0D 0A    R.pos:INTEGER;..
018890:  09 62 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 42 45 47    .b:BOOLEAN;..BEG
0188A0:  49 4E 0D 0A 09 41 64 76 61 6E 63 65 4F 4B 3A 3D    IN...AdvanceOK:=
0188B0:  54 52 55 45 3B 0D 0A 09 70 6F 73 3A 3D 30 3B 0D    TRUE;...pos:=0;.
0188C0:  0A 09 4C 4F 4F 50 0D 0A 09 09 63 68 3A 3D 57 6F    ..LOOP....ch:=Wo
0188D0:  72 6B 69 6E 67 5E 2E 43 68 61 72 73 5B 43 68 61    rking^.Chars[Cha
0188E0:  72 50 6F 73 5D 3B 0D 0A 09 09 49 46 20 63 68 3D    rPos];....IF ch=
0188F0:  45 4F 46 20 54 48 45 4E 20 0D 0A 09 09 09 41 64    EOF THEN .....Ad
018900:  76 61 6E 63 65 4F 4B 3A 3D 46 41 4C 53 45 3B 0D    vanceOK:=FALSE;.
018910:  0A 09 09 09 45 58 49 54 20 0D 0A 09 09 09 45 4E    ....EXIT .....EN
018920:  44 3B 0D 0A 09 09 49 46 20 28 63 68 3D 43 52 29    D;....IF (ch=CR)
018930:  20 4F 52 20 28 63 68 3D 4C 46 29 20 4F 52 20 28     OR (ch=LF) OR (
018940:  63 68 3D 46 46 29 20 54 48 45 4E 20 0D 0A 09 09    ch=FF) THEN ....
018950:  09 49 46 20 4E 4F 54 20 41 64 76 61 6E 63 65 28    .IF NOT Advance(
018960:  29 20 54 48 45 4E 20 45 58 49 54 20 45 4E 44 3B    ) THEN EXIT END;
018970:  0D 0A 09 09 09 63 68 3A 3D 57 6F 72 6B 69 6E 67    .....ch:=Working
018980:  5E 2E 43 68 61 72 73 5B 43 68 61 72 50 6F 73 5D    ^.Chars[CharPos]
018990:  3B 0D 0A 09 09 09 49 46 20 63 68 3D 4C 46 20 54    ;.....IF ch=LF T
0189A0:  48 45 4E 20 62 3A 3D 41 64 76 61 6E 63 65 28 29    HEN b:=Advance()
0189B0:  20 45 4E 44 3B 0D 0A 09 09 09 45 58 49 54 0D 0A     END;.....EXIT..
0189C0:  09 09 09 45 4E 44 3B 0D 0A 09 09 49 4E 43 28 70    ...END;....INC(p
0189D0:  6F 73 29 3B 0D 0A 09 09 49 46 20 4E 4F 54 20 41    os);....IF NOT A
0189E0:  64 76 61 6E 63 65 28 29 20 54 48 45 4E 20 0D 0A    dvance() THEN ..
0189F0:  09 09 09 41 64 76 61 6E 63 65 4F 4B 3A 3D 46 41    ...AdvanceOK:=FA
018A00:  63 6B 3B 0D 0A 56 41 52 09 73 74 61 72 74 3A 49    ck;..VAR.start:I
018A10:  4E 54 45 47 45 52 3B 0D 0A 09 69 3A 49 4E 54 45    NTEGER;...i:INTE
018A20:  47 45 52 3B 0D 0A 42 45 47 49 4E 0D 0A 0D 0A 09    GER;..BEGIN.....
018A30:  09 28 2A 61 64 6A 75 73 74 20 6C 61 62 65 6C 73    .(*adjust labels
018A40:  2A 29 0D 0A 09 52 65 6C 6F 63 61 74 65 4C 61 62    *)...RelocateLab
018A50:  65 6C 73 28 66 2C 2D 6C 65 6E 29 3B 0D 0A 09 73    els(f,-len);...s
018A60:  74 61 72 74 3A 3D 30 3B 0D 0A 09 57 49 54 48 20    tart:=0;...WITH 
018A70:  57 6F 72 6B 69 6E 67 5E 20 44 4F 0D 0A 09 09 49    Working^ DO....I
018A80:  46 20 4F 52 44 28 42 6C 6F 63 6B 4C 65 6E 29 3E    F ORD(BlockLen)>
018A90:  43 68 61 72 50 6F 73 20 54 48 45 4E 0D 0A 09 09    CharPos THEN....
018AA0:  20 20 20 20 4D 6F 76 65 75 70 28 41 44 52 28 43        Moveup(ADR(C
018AB0:  68 61 72 73 5B 43 68 61 72 50 6F 73 5D 29 2C 41    hars[CharPos]),A
018AC0:  44 52 28 43 68 61 72 73 5B 43 68 61 72 50 6F 73    DR(Chars[CharPos
018AD0:  2B 6C 65 6E 5D 29 2C 0D 0A 09 09 09 4F 52 44 28    +len]),.....ORD(
018AE0:  42 6C 6F 63 6B 4C 65 6E 29 2D 43 68 61 72 50 6F    BlockLen)-CharPo
018AF0:  73 29 3B 0D 0A 09 09 20 20 20 20 45 4E 44 3B 0D    s);....    END;.
018B00:  0A 09 09 42 6C 6F 63 6B 4C 65 6E 3A 3D 4F 52 44    ...BlockLen:=ORD
018B10:  28 42 6C 6F 63 6B 4C 65 6E 29 2B 6C 65 6E 3B 0D    (BlockLen)+len;.
018B20:  0A 09 09 57 48 49 4C 45 20 6C 65 6E 3E 30 20 44    ...WHILE len>0 D
018B30:  4F 0D 0A 09 09 09 43 68 61 72 73 5B 43 68 61 72    O.....Chars[Char
018B40:  50 6F 73 5D 3A 3D 53 5B 73 74 61 72 74 5D 3B 0D    Pos]:=S[start];.
018B50:  0A 09 09 09 49 4E 43 28 73 74 61 72 74 29 3B 0D    ....INC(start);.
018B60:  0A 09 09 09 44 45 43 28 6C 65 6E 29 3B 0D 0A 09    ....DEC(len);...
018B70:  09 09 49 4E 43 28 43 68 61 72 50 6F 73 29 3B 0D    ..INC(CharPos);.
018B80:  0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B    ....END;....END;
018B90:  0D 0A 09 45 4E 44 20 49 6E 73 49 6E 42 6C 6F 63    ...END InsInBloc
018BA0:  6B 3B 0D 0A 09 09 09 0D 0A 28 2A 09 49 66 20 74    k;.......(*.If t
018BB0:  65 78 74 20 77 69 6C 6C 20 66 69 74 20 69 6E 20    ext will fit in 
018BC0:  63 75 72 72 65 6E 74 20 62 6C 6F 63 6B 2C 20 65    current block, e
018BD0:  6E 74 65 72 20 69 6E 20 63 75 72 72 65 6E 74 20    nter in current 
018BE0:  62 6C 6F 63 6B 0D 0A 09 65 6C 73 65 20 73 70 6C    block...else spl
018BF0:  69 74 20 62 6C 6F 63 6B 20 61 6E 64 20 65 6E 74    it block and ent
018C00:  4C 53 45 3B 0D 0A 09 09 09 45 58 49 54 20 0D 0A    LSE;.....EXIT ..
018C10:  09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 20    ...END;....END; 
018C20:  28 2A 4C 4F 4F 50 2A 29 0D 0A 09 52 45 54 55 52    (*LOOP*)...RETUR
018C30:  4E 20 70 6F 73 3B 0D 0A 09 45 4E 44 20 41 64 76    N pos;...END Adv
018C40:  61 6E 63 65 4C 69 6E 65 3B 0D 0A 0D 0A 09 0D 0A    anceLine;.......
018C50:  50 52 4F 43 45 44 55 52 45 20 52 65 74 72 6C 69    PROCEDURE Retrli
018C60:  6E 65 28 56 41 52 20 66 3A 45 64 69 74 46 69 6C    ne(VAR f:EditFil
018C70:  65 3B 56 41 52 20 6C 65 6E 2C 70 6F 73 3A 49 4E    e;VAR len,pos:IN
018C80:  54 45 47 45 52 3B 56 41 52 20 70 3A 50 6F 73 69    TEGER;VAR p:Posi
018C90:  74 69 6F 6E 3B 0D 0A 09 09 56 41 52 20 6C 69 6E    tion;....VAR lin
018CA0:  65 73 6D 6F 76 65 64 3A 49 4E 54 45 47 45 52 3B    esmoved:INTEGER;
018CB0:  6C 69 6E 65 73 74 6F 6D 6F 76 65 3A 49 4E 54 45    linestomove:INTE
018CC0:  47 45 52 29 3B 0D 0A 28 2A 09 72 65 74 75 72 6E    GER);..(*.return
018CD0:  20 74 68 65 20 70 6F 73 69 74 69 6F 6E 20 69 6E     the position in
018CE0:  20 74 68 65 20 63 75 72 72 65 6E 74 20 6C 69 6E     the current lin
018CF0:  65 2A 29 0D 0A 56 41 52 09 63 68 3A 43 48 41 52    e*)..VAR.ch:CHAR
018D00:  3B 0D 0A 09 69 3A 49 4E 54 45 47 45 52 3B 0D 0A    ;...i:INTEGER;..
018D10:  09 62 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 42 45 47    .b:BOOLEAN;..BEG
018D20:  49 4E 0D 0A 09 73 65 74 63 75 72 70 6F 73 28 66    IN...setcurpos(f
018D30:  29 3B 0D 0A 09 6C 69 6E 65 73 6D 6F 76 65 64 3A    );...linesmoved:
018D40:  3D 30 3B 0D 0A 0D 0A 09 49 46 20 43 68 61 72 50    =0;.....IF CharP
018D50:  6F 73 3E 49 4E 54 45 47 45 52 28 57 6F 72 6B 69    os>INTEGER(Worki
018D60:  6E 67 5E 2E 42 6C 6F 63 6B 4C 65 6E 29 20 54 48    ng^.BlockLen) TH
018D70:  45 4E 0D 0A 09 09 43 68 61 72 50 6F 73 3A 3D 57    EN....CharPos:=W
018D80:  6F 72 6B 69 6E 67 5E 2E 42 6C 6F 63 6B 4C 65 6E    orking^.BlockLen
018D90:  20 0D 0A 09 09 45 4E 44 3B 0D 0A 0D 0A 09 49 46     ....END;.....IF
018DA0:  20 6C 69 6E 65 73 74 6F 6D 6F 76 65 3D 2D 31 36     linestomove=-16
018DB0:  37 33 36 20 54 48 45 4E 20 28 2A 67 6F 20 74 6F    736 THEN (*go to
018DC0:  20 74 6F 70 20 6F 66 20 66 69 6C 65 0D 0A 09 09     top of file....
018DD0:  09 09 20 20 20 20 54 68 69 73 20 69 73 20 61 20    ..    This is a 
018DE0:  72 65 63 65 6E 74 20 6D 6F 64 20 74 6F 20 73 70    recent mod to sp
018DF0:  65 65 64 20 75 70 20 0D 0A 09 09 09 09 20 20 20    eed up ......   
018E00:  65 72 20 69 6E 20 61 70 70 72 6F 70 72 69 61 74    er in appropriat
018E10:  65 20 62 6C 6F 63 6B 2A 29 0D 0A 0D 0A 42 45 47    e block*)....BEG
018E20:  49 4E 0D 0A 09 73 65 74 63 75 72 70 6F 73 28 66    IN...setcurpos(f
018E30:  29 3B 0D 0A 09 6C 65 66 74 3A 3D 54 65 78 74 4C    );...left:=TextL
018E40:  65 6E 2D 4F 52 44 28 57 6F 72 6B 69 6E 67 5E 2E    en-ORD(Working^.
018E50:  42 6C 6F 63 6B 4C 65 6E 29 3B 0D 0A 0D 0A 09 28    BlockLen);.....(
018E60:  2A 09 6C 65 66 74 20 69 73 20 63 68 61 72 61 63    *.left is charac
018E70:  74 65 72 73 20 6C 65 66 74 20 69 6E 20 62 6C 6F    ters left in blo
018E80:  63 6B 2A 29 0D 0A 0D 0A 09 49 46 20 6C 65 66 74    ck*).....IF left
018E90:  3E 3D 6C 65 6E 20 54 48 45 4E 20 49 6E 73 49 6E    >=len THEN InsIn
018EA0:  42 6C 6F 63 6B 0D 0A 09 45 4C 53 45 0D 0A 0D 0A    Block...ELSE....
018EB0:  09 09 28 2A 73 70 6C 69 74 20 74 68 65 20 62 6C    ..(*split the bl
018EC0:  6F 63 6B 20 73 6F 20 74 68 61 74 20 61 66 74 65    ock so that afte
018ED0:  72 20 69 6E 73 65 72 74 20 74 68 65 20 74 77 6F    r insert the two
018EE0:  20 62 6C 6F 63 6B 73 0D 0A 09 09 20 20 77 69 6C     blocks....  wil
018EF0:  6C 20 62 65 20 61 70 70 72 6F 78 20 65 71 75 61    l be approx equa
018F00:  6C 20 69 6E 20 73 69 7A 65 2A 29 0D 0A 09 09 6C    l in size*)....l
018F10:  65 66 74 3A 3D 4F 52 44 28 57 6F 72 6B 69 6E 67    eft:=ORD(Working
018F20:  5E 2E 42 6C 6F 63 6B 4C 65 6E 29 20 44 49 56 20    ^.BlockLen) DIV 
018F30:  32 3B 0D 0A 09 09 4D 61 69 6E 42 6C 6F 63 6B 3A    2;....MainBlock:
018F40:  3D 57 6F 72 6B 69 6E 67 3B 0D 0A 09 09 4E 65 77    =Working;....New
018F50:  42 6C 6F 63 6B 3B 0D 0A 09 09 57 6F 72 6B 69 6E    Block;....Workin
018F60:  67 5E 2E 50 72 65 64 3A 3D 4D 61 69 6E 42 6C 6F    g^.Pred:=MainBlo
018F70:  63 6B 3B 0D 0A 09 09 46 4F 52 20 72 65 70 6C 79    ck;....FOR reply
018F80:  3A 3D 30 20 54 4F 20 48 49 47 48 28 66 2E 4C 61    :=0 TO HIGH(f.La
018F90:  62 65 6C 73 29 20 44 4F 0D 0A 09 09 09 57 49 54    bels) DO.....WIT
018FA0:  48 20 66 2E 4C 61 62 65 6C 73 5B 72 65 70 6C 79    H f.Labels[reply
018FB0:  5D 20 44 4F 0D 0A 09 09 09 09 49 46 20 28 42 6C    ] DO......IF (Bl
018FC0:  6F 63 6B 3D 4D 61 69 6E 42 6C 6F 63 6B 29 20 41    ock=MainBlock) A
018FD0:  4E 44 20 28 4F 52 44 28 4F 66 66 73 65 74 29 3E    ND (ORD(Offset)>
018FE0:  3D 6C 65 66 74 29 20 54 48 45 4E 0D 0A 09 09 09    =left) THEN.....
018FF0:  09 09 42 6C 6F 63 6B 3A 3D 57 6F 72 6B 69 6E 67    ..Block:=Working
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 C9 02 00 00 00 02    ......R.........
019020:  15 00 C5 02 00 00 00 02 15 00 C1 02 00 00 00 02    ................
019030:  15 00 C6 02 00 00 00 02 15 00 C2 02 00 00 00 02    ................
019040:  15 00 C7 02 00 00 00 02 15 00 C3 02 00 00 00 02    ................
019050:  15 00 C8 02 00 00 00 02 15 00 C4 02 00 00 00 02    ................
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:  09 45 4E 44 20 4D 6F 76 65 54 6F 43 68 61 72 3B    .END MoveToChar;
019110:  0D 0A 50 52 4F 43 45 44 55 52 45 20 44 65 66 69    ..PROCEDURE Defi
019120:  6E 65 45 72 72 6F 72 73 28 56 41 52 20 66 3A 45    neErrors(VAR f:E
019130:  64 69 74 46 69 6C 65 29 3B 0D 0A 56 41 52 09 69    ditFile);..VAR.i
019140:  3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 62 3A 42    :CARDINAL;...b:B
019150:  4F 4F 4C 45 41 4E 3B 0D 0A 42 45 47 49 4E 0D 0A    OOLEAN;..BEGIN..
019160:  09 49 46 20 45 72 72 6F 72 43 6F 75 6E 74 3D 30    .IF ErrorCount=0
019170:  20 54 48 45 4E 20 52 45 54 55 52 4E 20 45 4E 44     THEN RETURN END
019180:  3B 0D 0A 09 46 4F 52 20 69 3A 3D 30 20 54 4F 20    ;...FOR i:=0 TO 
019190:  45 72 72 6F 72 43 6F 75 6E 74 2D 31 20 44 4F 0D    ErrorCount-1 DO.
0191A0:  0A 09 09 4D 6F 76 65 54 6F 43 68 61 72 28 66 2C    ...MoveToChar(f,
0191B0:  45 72 72 6F 72 4C 69 73 74 5B 69 5D 2E 43 68 61    ErrorList[i].Cha
0191C0:  72 50 29 3B 0D 0A 09 09 62 3A 3D 4C 61 62 65 6C    rP);....b:=Label
0191D0:  4F 70 28 66 2C 54 52 55 45 2C 43 48 52 28 30 62    Op(f,TRUE,CHR(0b
0191E0:  30 68 2B 69 29 29 3B 0D 0A 09 09 45 4E 44 3B 0D    0h+i));....END;.
0191F0:  0A 09 45 4E 44 20 44 65 66 69 6E 65 45 72 72 6F    ..END DefineErro
019200:  72 73 3B 0D 0A 0D 0A 45 4E 44 20 4D 61 6B 65 45    rs;....END MakeE
019210:  64 69 74 73 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A    dits............
019220:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
019230:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
019240:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
019250:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
019260:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
019270:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
019280:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 00    ................
019290:  00 00 00 00 00 00 00 00 00 00 30 00 80 19 00 00    ..........0.....
0192A0:  45 44 49 54 53 54 41 54 44 45 46 20 80 00 00 00    EDITSTATDEF ....
0192B0:  00 00 00 00 00 00 00 00 00 00 32 00 00 02 00 00    ..........2.....
0192C0:  45 44 49 54 53 54 41 54 4D 4F 44 20 80 00 00 00    EDITSTATMOD ....
0192D0:  00 00 00 00 00 00 00 00 00 00 33 00 80 0B 00 00    ..........3.....
0192E0:  46 49 4C 45 4F 50 53 20 44 45 46 20 80 00 00 00    FILEOPS DEF ....
0192F0:  00 00 00 00 00 00 00 00 00 00 35 00 00 02 00 00    ..........5.....
019300:  52 28 73 29 2C 41 44 52 28 53 74 72 69 6E 67 29    R(s),ADR(String)
019310:  2C 6C 65 6E 29 3B 0A 09 45 4E 44 20 50 72 65 70    ,len);..END Prep
019320:  61 72 65 53 74 72 69 6E 67 3B 0D 0A 28 2A 09 70    areString;..(*.p
019330:  72 65 70 61 72 65 20 61 20 73 74 72 69 6E 67 20    repare a string 
019340:  66 6F 72 20 75 73 65 20 69 6E 20 61 20 66 69 6E    for use in a fin
019350:  64 20 63 6F 6D 6D 61 6E 64 2A 29 0D 0A 0D 0A 50    d command*)....P
019360:  52 4F 43 45 44 55 52 45 20 46 69 6E 64 53 74 72    ROCEDURE FindStr
019370:  69 6E 67 28 56 41 52 20 66 3A 45 64 69 74 46 69    ing(VAR f:EditFi
019380:  6C 65 3B 42 61 63 6B 77 61 72 64 73 3A 42 4F 4F    le;Backwards:BOO
019390:  4C 45 41 4E 29 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A    LEAN):BOOLEAN;..
0193A0:  0D 0A 0D 0A 28 2A 09 62 61 63 6B 77 61 72 64 73    ....(*.backwards
0193B0:  20 6E 6F 74 20 79 65 74 20 69 6D 70 6C 65 6D 65     not yet impleme
0193C0:  6E 74 65 64 2A 29 0D 0A 42 45 47 49 4E 0D 0A 09    nted*)..BEGIN...
0193D0:  49 46 20 53 74 72 69 6E 67 4C 65 6E 3D 30 20 54    IF StringLen=0 T
0193E0:  48 45 4E 20 52 45 54 55 52 4E 20 54 52 55 45 20    HEN RETURN TRUE 
0193F0:  45 4E 44 3B 0D 0A 09 73 65 74 63 75 72 70 6F 73    END;...setcurpos
019400:  28 66 29 3B 0D 0A 09 49 46 20 42 61 63 6B 77 61    (f);...IF Backwa
019410:  72 64 73 20 54 48 45 4E 0D 0A 09 09 4D 61 74 63    rds THEN....Matc
019420:  68 43 68 61 72 3A 3D 53 74 72 69 6E 67 5B 53 74    hChar:=String[St
019430:  72 69 6E 67 4C 65 6E 2D 31 5D 3B 0D 0A 09 09 4C    ringLen-1];....L
019440:  4F 4F 50 0D 0A 09 09 09 49 46 20 4E 4F 54 20 42    OOP.....IF NOT B
019450:  61 63 6B 75 70 28 29 20 54 48 45 4E 20 45 58 49    ackup() THEN EXI
019460:  54 20 45 4E 44 3B 0D 0A 09 09 09 49 46 20 28 57    T END;.....IF (W
019470:  6F 72 6B 69 6E 67 5E 2E 43 68 61 72 73 5B 43 68    orking^.Chars[Ch
019480:  61 72 50 6F 73 5D 3D 4D 61 74 63 68 43 68 61 72    arPos]=MatchChar
019490:  29 20 0D 0A 09 09 09 20 20 4F 52 20 28 57 6F 72    ) .....  OR (Wor
0194A0:  6B 69 6E 67 5E 2E 43 68 61 72 73 5B 43 68 61 72    king^.Chars[Char
0194B0:  50 6F 73 5D 3D 43 41 50 28 4D 61 74 63 68 43 68    Pos]=CAP(MatchCh
0194C0:  61 72 29 29 20 54 48 45 4E 0D 0A 09 09 09 09 4D    ar)) THEN......M
0194D0:  61 74 63 68 43 68 61 72 4E 6F 3A 3D 53 74 72 69    atchCharNo:=Stri
0194E0:  6E 67 4C 65 6E 2D 32 3B 0D 0A 09 09 09 09 73 61    ngLen-2;......sa
0194F0:  76 65 63 75 72 70 6F 73 28 66 29 3B 0D 0A 09 09    vecurpos(f);....
019500:  6E 6E 69 6E 67 20 6F 66 20 63 75 72 72 65 6E 74    nning of current
019510:  20 6C 69 6E 65 0D 0A 09 09 6D 6F 76 65 20 72 65     line....move re
019520:  71 75 69 72 65 64 20 6E 75 6D 62 65 72 20 6F 66    quired number of
019530:  20 6C 69 6E 65 73 2A 29 0D 0A 0D 0A 09 20 20 20     lines*).....   
019540:  20 49 46 20 6C 69 6E 65 73 74 6F 6D 6F 76 65 3C     IF linestomove<
019550:  30 20 54 48 45 4E 0D 0A 09 09 57 48 49 4C 45 20    0 THEN....WHILE 
019560:  09 28 6C 69 6E 65 73 74 6F 6D 6F 76 65 3C 30 29    .(linestomove<0)
019570:  0D 0A 09 09 20 20 20 20 20 41 4E 44 20 28 28 43    ....     AND ((C
019580:  68 61 72 50 6F 73 3E 30 29 20 4F 52 20 28 57 6F    harPos>0) OR (Wo
019590:  72 6B 69 6E 67 5E 2E 50 72 65 64 3C 3E 4E 49 4C    rking^.Pred<>NIL
0195A0:  29 29 20 44 4F 0D 0A 09 09 09 49 4E 43 28 6C 69    )) DO.....INC(li
0195B0:  6E 65 73 74 6F 6D 6F 76 65 29 3B 0D 0A 0D 0A 09    nestomove);.....
0195C0:  09 09 28 2A 6D 6F 76 65 20 62 61 63 6B 20 6F 76    ..(*move back ov
0195D0:  65 72 20 63 72 2F 6C 66 2A 29 0D 0A 0D 0A 09 09    er cr/lf*)......
0195E0:  09 49 46 20 42 61 63 6B 75 70 28 29 20 41 4E 44    .IF Backup() AND
0195F0:  20 28 57 6F 72 6B 69 6E 67 5E 2E 43 68 61 72 73     (Working^.Chars
019600:  5B 43 68 61 72 50 6F 73 5D 3D 4C 46 29 20 54 48    [CharPos]=LF) TH
019610:  45 4E 0D 0A 09 09 09 09 62 3A 3D 42 61 63 6B 75    EN......b:=Backu
019620:  70 28 29 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09    p()......END;...
019630:  09 09 44 45 43 28 6C 69 6E 65 73 6D 6F 76 65 64    ..DEC(linesmoved
019640:  29 3B 0D 0A 09 09 09 6C 65 6E 3A 3D 42 61 63 6B    );.....len:=Back
019650:  75 70 4C 69 6E 65 28 29 3B 0D 0A 09 09 09 45 4E    upLine();.....EN
019660:  44 3B 0D 0A 09 20 20 20 20 45 4C 53 45 0D 0A 09    D;...    ELSE...
019670:  09 57 48 49 4C 45 20 09 28 6C 69 6E 65 73 74 6F    .WHILE .(linesto
019680:  6D 6F 76 65 3E 30 29 0D 0A 09 09 09 41 4E 44 20    move>0).....AND 
019690:  28 20 20 28 43 68 61 72 50 6F 73 3C 49 4E 54 45    (  (CharPos<INTE
0196A0:  47 45 52 28 57 6F 72 6B 69 6E 67 5E 2E 42 6C 6F    GER(Working^.Blo
0196B0:  63 6B 4C 65 6E 29 29 0D 0A 09 09 09 20 20 20 20    ckLen)).....    
0196C0:  4F 52 20 28 57 6F 72 6B 69 6E 67 5E 2E 4E 65 78    OR (Working^.Nex
0196D0:  74 3C 3E 4E 49 4C 29 29 20 44 4F 20 0D 0A 0D 0A    t<>NIL)) DO ....
0196E0:  09 09 09 44 45 43 28 6C 69 6E 65 73 74 6F 6D 6F    ...DEC(linestomo
0196F0:  76 65 29 3B 0D 0A 09 09 09 6C 65 6E 3A 3D 41 64    ve);.....len:=Ad
019700:  09 09 57 48 49 4C 45 20 28 4D 61 74 63 68 43 68    ..WHILE (MatchCh
019710:  61 72 4E 6F 3E 30 29 0D 0A 09 09 09 09 20 20 20    arNo>0)......   
019720:  20 41 4E 44 20 28 42 61 63 6B 75 70 28 29 29 0D     AND (Backup()).
019730:  0A 09 09 09 09 20 20 20 20 41 4E 44 20 4D 61 74    .....    AND Mat
019740:  63 68 65 73 28 29 20 44 4F 0D 0A 09 09 09 09 09    ches() DO.......
019750:  44 45 43 28 4D 61 74 63 68 43 68 61 72 4E 6F 29    DEC(MatchCharNo)
019760:  3B 0D 0A 09 09 09 09 09 45 4E 44 3B 0D 0A 09 09    ;.......END;....
019770:  09 09 49 46 20 42 61 63 6B 75 70 28 29 20 41 4E    ..IF Backup() AN
019780:  44 20 4D 61 74 63 68 65 73 28 29 20 0D 0A 09 09    D Matches() ....
019790:  09 09 20 20 20 41 4E 44 20 28 4D 61 74 63 68 43    ..   AND (MatchC
0197A0:  68 61 72 4E 6F 3D 30 29 20 54 48 45 4E 0D 0A 09    harNo=0) THEN...
0197B0:  09 09 09 09 52 45 54 55 52 4E 20 54 52 55 45 3B    ....RETURN TRUE;
0197C0:  0D 0A 09 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09    .......END;.....
0197D0:  09 73 65 74 63 75 72 70 6F 73 28 66 29 3B 0D 0A    .setcurpos(f);..
0197E0:  09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 45 4E 44    ....END;.....END
0197F0:  3B 0D 0A 09 45 4C 53 45 0D 0A 09 09 4D 61 74 63    ;...ELSE....Matc
019800:  68 43 68 61 72 3A 3D 53 74 72 69 6E 67 5B 30 5D    hChar:=String[0]
019810:  3B 0D 0A 09 09 4C 4F 4F 50 0D 0A 09 09 09 49 46    ;....LOOP.....IF
019820:  20 4E 4F 54 20 41 64 76 61 6E 63 65 28 29 20 54     NOT Advance() T
019830:  48 45 4E 20 45 58 49 54 20 45 4E 44 3B 0D 0A 09    HEN EXIT END;...
019840:  09 09 49 46 20 28 57 6F 72 6B 69 6E 67 5E 2E 43    ..IF (Working^.C
019850:  68 61 72 73 5B 43 68 61 72 50 6F 73 5D 3D 4D 61    hars[CharPos]=Ma
019860:  74 63 68 43 68 61 72 29 0D 0A 09 09 09 20 20 4F    tchChar).....  O
019870:  52 20 28 57 6F 72 6B 69 6E 67 5E 2E 43 68 61 72    R (Working^.Char
019880:  73 5B 43 68 61 72 50 6F 73 5D 3D 43 41 50 28 4D    s[CharPos]=CAP(M
019890:  61 74 63 68 43 68 61 72 29 29 20 54 48 45 4E 0D    atchChar)) THEN.
0198A0:  0A 09 09 09 09 4D 61 74 63 68 43 68 61 72 4E 6F    .....MatchCharNo
0198B0:  3A 3D 31 3B 0D 0A 09 09 09 09 73 61 76 65 63 75    :=1;......savecu
0198C0:  72 70 6F 73 28 66 29 3B 0D 0A 09 09 09 09 57 48    rpos(f);......WH
0198D0:  49 4C 45 20 28 4D 61 74 63 68 43 68 61 72 4E 6F    ILE (MatchCharNo
0198E0:  3C 53 74 72 69 6E 67 4C 65 6E 29 0D 0A 09 09 09    <StringLen).....
0198F0:  09 20 20 20 20 41 4E 44 20 28 41 64 76 61 6E 63    .    AND (Advanc
019900:  76 61 6E 63 65 4C 69 6E 65 28 29 3B 0D 0A 09 09    vanceLine();....
019910:  09 49 46 20 41 64 76 61 6E 63 65 4F 4B 20 54 48    .IF AdvanceOK TH
019920:  45 4E 20 49 4E 43 28 6C 69 6E 65 73 6D 6F 76 65    EN INC(linesmove
019930:  64 29 20 45 4E 44 3B 0D 0A 09 09 09 45 4E 44 3B    d) END;.....END;
019940:  0D 0A 09 09 45 4E 44 3B 0D 0A 09 20 20 20 20 45    ....END;...    E
019950:  4E 44 3B 0D 0A 09 73 61 76 65 63 75 72 70 6F 73    ND;...savecurpos
019960:  28 66 29 3B 70 3A 3D 66 2E 43 75 72 50 6F 73 3B    (f);p:=f.CurPos;
019970:  0D 0A 09 49 46 20 57 6F 72 6B 69 6E 67 5E 2E 43    ...IF Working^.C
019980:  68 61 72 73 5B 43 68 61 72 50 6F 73 5D 3D 45 4F    hars[CharPos]=EO
019990:  46 20 54 48 45 4E 0D 0A 0D 0A 09 09 28 2A 49 46    F THEN......(*IF
0199A0:  20 77 65 20 61 72 65 20 61 74 20 65 6E 64 20 6F     we are at end o
0199B0:  66 20 66 69 6C 65 2C 20 72 65 70 6F 73 69 74 69    f file, repositi
0199C0:  6F 6E 20 74 6F 20 73 74 61 72 74 0D 0A 09 09 20    on to start.... 
0199D0:  20 6F 66 20 63 75 72 72 65 6E 74 20 6C 69 6E 65     of current line
0199E0:  20 61 73 20 52 65 74 72 6C 69 6E 65 20 61 6C 77     as Retrline alw
0199F0:  61 79 73 20 72 65 74 75 72 6E 73 0D 0A 09 09 20    ays returns.... 
019A00:  20 70 6F 73 69 74 69 6F 6E 20 61 73 20 61 74 20     position as at 
019A10:  73 74 61 72 74 20 6F 66 20 6C 69 6E 65 2A 29 0D    start of line*).
019A20:  0A 0D 0A 09 09 6C 65 6E 3A 3D 42 61 63 6B 75 70    .....len:=Backup
019A30:  4C 69 6E 65 28 29 3B 0D 0A 09 09 73 61 76 65 63    Line();....savec
019A40:  75 72 70 6F 73 28 66 29 3B 0D 0A 09 09 70 3A 3D    urpos(f);....p:=
019A50:  66 2E 43 75 72 50 6F 73 3B 0D 0A 09 09 70 6F 73    f.CurPos;....pos
019A60:  3A 3D 6C 65 6E 0D 0A 09 45 4C 53 45 0D 0A 09 09    :=len...ELSE....
019A70:  6C 65 6E 3A 3D 41 64 76 61 6E 63 65 4C 69 6E 65    len:=AdvanceLine
019A80:  28 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 66 2E    ();....END;...f.
019A90:  43 75 72 50 6F 73 3A 3D 70 3B 0D 0A 09 45 4E 44    CurPos:=p;...END
019AA0:  20 52 65 74 72 6C 69 6E 65 3B 0D 0A 50 52 4F 43     Retrline;..PROC
019AB0:  45 44 55 52 45 20 52 65 61 64 4E 65 78 74 43 68    EDURE ReadNextCh
019AC0:  61 72 28 56 41 52 20 70 3A 50 6F 73 69 74 69 6F    ar(VAR p:Positio
019AD0:  6E 3B 56 41 52 20 63 68 3A 43 48 41 52 29 3B 0D    n;VAR ch:CHAR);.
019AE0:  0A 42 45 47 49 4E 0D 0A 09 57 49 54 48 20 70 20    .BEGIN...WITH p 
019AF0:  44 4F 0D 0A 09 09 49 46 20 4F 66 66 73 65 74 3E    DO....IF Offset>
019B00:  65 28 29 29 0D 0A 09 09 09 09 20 20 20 20 41 4E    e())......    AN
019B10:  44 20 20 4D 61 74 63 68 65 73 28 29 20 44 4F 0D    D  Matches() DO.
019B20:  0A 09 09 09 09 09 49 4E 43 28 4D 61 74 63 68 43    ......INC(MatchC
019B30:  68 61 72 4E 6F 29 3B 0D 0A 09 09 09 09 09 45 4E    harNo);.......EN
019B40:  44 3B 0D 0A 09 09 09 09 49 46 20 4D 61 74 63 68    D;......IF Match
019B50:  43 68 61 72 4E 6F 3E 3D 53 74 72 69 6E 67 4C 65    CharNo>=StringLe
019B60:  6E 20 54 48 45 4E 0D 0A 09 09 09 09 09 52 45 54    n THEN.......RET
019B70:  55 52 4E 20 54 52 55 45 3B 0D 0A 09 09 09 09 09    URN TRUE;.......
019B80:  45 4E 44 3B 0D 0A 09 09 09 09 73 65 74 63 75 72    END;......setcur
019B90:  70 6F 73 28 66 29 3B 0D 0A 09 09 09 09 45 4E 44    pos(f);......END
019BA0:  3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E    ;.....END;....EN
019BB0:  44 3B 0D 0A 09 73 61 76 65 63 75 72 70 6F 73 28    D;...savecurpos(
019BC0:  66 29 3B 0D 0A 09 52 45 54 55 52 4E 20 46 41 4C    f);...RETURN FAL
019BD0:  53 45 3B 0D 0A 09 45 4E 44 20 46 69 6E 64 53 74    SE;...END FindSt
019BE0:  72 69 6E 67 3B 0D 0A 28 2A 09 41 63 74 75 61 6C    ring;..(*.Actual
019BF0:  6C 79 20 66 69 6E 64 20 74 68 65 20 6E 65 78 74    ly find the next
019C00:  20 6F 63 63 75 72 72 65 6E 63 65 20 6F 66 20 74     occurrence of t
019C10:  68 65 20 73 74 72 69 6E 67 09 0D 0A 0D 0A 09 44    he string......D
019C20:  6F 6E 65 20 72 65 74 75 72 6E 73 20 74 72 75 65    one returns true
019C30:  20 69 66 20 6F 6E 65 20 69 73 20 66 6F 75 6E 64     if one is found
019C40:  2A 29 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 61    *)..PROCEDURE Ca
019C50:  6C 6C 57 69 74 68 46 69 6C 65 28 4E 61 6D 65 3A    llWithFile(Name:
019C60:  41 52 52 41 59 20 4F 46 20 43 48 41 52 3B 56 41    ARRAY OF CHAR;VA
019C70:  52 20 66 3A 45 64 69 74 46 69 6C 65 29 3B 0D 0A    R f:EditFile);..
019C80:  42 45 47 49 4E 0D 0A 09 4D 61 6B 65 43 61 6C 6C    BEGIN...MakeCall
019C90:  28 4E 61 6D 65 2C 66 2E 66 2E 66 29 3B 0D 0A 09    (Name,f.f.f);...
019CA0:  45 4E 44 20 43 61 6C 6C 57 69 74 68 46 69 6C 65    END CallWithFile
019CB0:  3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 46 69 6C    ;..PROCEDURE Fil
019CC0:  65 54 79 70 65 28 56 41 52 20 66 3A 45 64 69 74    eType(VAR f:Edit
019CD0:  46 69 6C 65 29 3A 43 41 52 44 49 4E 41 4C 3B 0D    File):CARDINAL;.
019CE0:  0A 42 45 47 49 4E 0D 0A 09 49 46 20 66 2E 66 2E    .BEGIN...IF f.f.
019CF0:  66 2E 66 63 62 66 74 3D 27 4D 4F 44 27 20 54 48    f.fcbft='MOD' TH
019D00:  3D 42 6C 6F 63 6B 5E 2E 42 6C 6F 63 6B 4C 65 6E    =Block^.BlockLen
019D10:  20 54 48 45 4E 0D 0A 09 09 09 49 46 20 42 6C 6F     THEN.....IF Blo
019D20:  63 6B 5E 2E 4E 65 78 74 3D 4E 49 4C 20 54 48 45    ck^.Next=NIL THE
019D30:  4E 0D 0A 09 09 09 09 63 68 3A 3D 45 4F 46 3B 0D    N......ch:=EOF;.
019D40:  0A 09 09 09 09 52 45 54 55 52 4E 0D 0A 09 09 09    .....RETURN.....
019D50:  45 4C 53 45 0D 0A 09 09 09 09 42 6C 6F 63 6B 3A    ELSE......Block:
019D60:  3D 42 6C 6F 63 6B 5E 2E 4E 65 78 74 3B 0D 0A 09    =Block^.Next;...
019D70:  09 09 09 4F 66 66 73 65 74 3A 3D 30 3B 0D 0A 09    ...Offset:=0;...
019D80:  09 09 09 45 4E 44 3B 0D 0A 09 09 09 45 4E 44 3B    ...END;.....END;
019D90:  0D 0A 09 09 63 68 3A 3D 42 6C 6F 63 6B 5E 2E 43    ....ch:=Block^.C
019DA0:  68 61 72 73 5B 4F 66 66 73 65 74 5D 3B 0D 0A 09    hars[Offset];...
019DB0:  09 49 46 20 63 68 3C 3E 45 4F 46 20 54 48 45 4E    .IF ch<>EOF THEN
019DC0:  20 4F 66 66 73 65 74 3A 3D 4F 66 66 73 65 74 2B     Offset:=Offset+
019DD0:  31 20 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A    1 END;....END;..
019DE0:  09 45 4E 44 20 52 65 61 64 4E 65 78 74 43 68 61    .END ReadNextCha
019DF0:  72 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 47 65    r;..PROCEDURE Ge
019E00:  74 43 75 72 72 65 6E 74 43 68 61 72 28 56 41 52    tCurrentChar(VAR
019E10:  20 66 3A 45 64 69 74 46 69 6C 65 29 3A 43 48 41     f:EditFile):CHA
019E20:  52 3B 0D 0A 0D 0A 42 45 47 49 4E 0D 0A 09 70 6F    R;....BEGIN...po
019E30:  73 3A 3D 66 2E 43 75 72 50 6F 73 3B 0D 0A 09 52    s:=f.CurPos;...R
019E40:  65 61 64 4E 65 78 74 43 68 61 72 28 70 6F 73 2C    eadNextChar(pos,
019E50:  63 68 29 3B 0D 0A 09 52 45 54 55 52 4E 20 63 68    ch);...RETURN ch
019E60:  0D 0A 09 45 4E 44 20 47 65 74 43 75 72 72 65 6E    ...END GetCurren
019E70:  74 43 68 61 72 3B 0D 0A 50 52 4F 43 45 44 55 52    tChar;..PROCEDUR
019E80:  45 20 20 42 61 63 6B 4F 6E 65 43 68 61 72 28 56    E  BackOneChar(V
019E90:  41 52 20 66 3A 45 64 69 74 46 69 6C 65 29 3A 42    AR f:EditFile):B
019EA0:  4F 4F 4C 45 41 4E 3B 0D 0A 42 45 47 49 4E 0D 0A    OOLEAN;..BEGIN..
019EB0:  09 73 65 74 63 75 72 70 6F 73 28 66 29 3B 0D 0A    .setcurpos(f);..
019EC0:  09 62 3A 3D 42 61 63 6B 75 70 28 29 3B 0D 0A 09    .b:=Backup();...
019ED0:  73 61 76 65 63 75 72 70 6F 73 28 66 29 3B 0D 0A    savecurpos(f);..
019EE0:  09 52 45 54 55 52 4E 20 62 0D 0A 09 45 4E 44 20    .RETURN b...END 
019EF0:  42 61 63 6B 4F 6E 65 43 68 61 72 3B 09 09 09 09    BackOneChar;....
019F00:  45 4E 20 52 45 54 55 52 4E 20 31 0D 0A 09 45 4C    EN RETURN 1...EL
019F10:  53 49 46 20 66 2E 66 2E 66 2E 66 63 62 66 74 3D    SIF f.f.f.fcbft=
019F20:  27 44 45 46 27 20 54 48 45 4E 20 52 45 54 55 52    'DEF' THEN RETUR
019F30:  4E 20 32 0D 0A 09 45 4C 53 45 20 52 45 54 55 52    N 2...ELSE RETUR
019F40:  4E 20 30 0D 0A 09 09 45 4E 44 0D 0A 09 45 4E 44    N 0....END...END
019F50:  20 46 69 6C 65 54 79 70 65 3B 0D 0A 50 52 4F 43     FileType;..PROC
019F60:  45 44 55 52 45 20 4D 6F 76 65 54 6F 43 68 61 72    EDURE MoveToChar
019F70:  28 56 41 52 20 46 69 6C 65 3A 45 64 69 74 46 69    (VAR File:EditFi
019F80:  6C 65 3B 50 6F 73 3A 43 41 52 44 49 4E 41 4C 29    le;Pos:CARDINAL)
019F90:  3B 0D 0A 56 41 52 09 69 3A 43 41 52 44 49 4E 41    ;..VAR.i:CARDINA
019FA0:  4C 3B 77 3A 50 54 65 78 74 3B 0D 0A 42 45 47 49    L;w:PText;..BEGI
019FB0:  4E 0D 0A 09 57 6F 72 6B 69 6E 67 3A 3D 46 69 6C    N...Working:=Fil
019FC0:  65 2E 43 68 61 69 6E 3B 0D 0A 09 77 3A 3D 4E 49    e.Chain;...w:=NI
019FD0:  4C 3B 0D 0A 09 69 3A 3D 30 3B 0D 0A 09 4C 4F 4F    L;...i:=0;...LOO
019FE0:  50 0D 0A 09 09 49 46 20 57 6F 72 6B 69 6E 67 3D    P....IF Working=
019FF0:  4E 49 4C 20 54 48 45 4E 20 45 58 49 54 20 45 4E    NIL THEN EXIT EN
01A000:  44 3B 0D 0A 09 09 69 3A 3D 69 2B 4F 52 44 28 57    D;....i:=i+ORD(W
01A010:  6F 72 6B 69 6E 67 5E 2E 42 6C 6F 63 6B 4C 65 6E    orking^.BlockLen
01A020:  29 3B 0D 0A 09 09 77 3A 3D 57 6F 72 6B 69 6E 67    );....w:=Working
01A030:  3B 0D 0A 09 09 49 46 20 69 3C 50 6F 73 20 54 48    ;....IF i<Pos TH
01A040:  45 4E 20 57 6F 72 6B 69 6E 67 3A 3D 57 6F 72 6B    EN Working:=Work
01A050:  69 6E 67 5E 2E 4E 65 78 74 20 45 4C 53 45 20 45    ing^.Next ELSE E
01A060:  58 49 54 20 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B    XIT END;....END;
01A070:  0D 0A 09 49 46 20 57 6F 72 6B 69 6E 67 3D 4E 49    ...IF Working=NI
01A080:  4C 20 54 48 45 4E 20 0D 0A 09 09 57 6F 72 6B 69    L THEN ....Worki
01A090:  6E 67 3A 3D 77 3B 0D 0A 09 09 43 68 61 72 50 6F    ng:=w;....CharPo
01A0A0:  73 3A 3D 77 5E 2E 42 6C 6F 63 6B 4C 65 6E 3B 0D    s:=w^.BlockLen;.
01A0B0:  0A 09 45 4C 53 45 0D 0A 09 09 43 68 61 72 50 6F    ..ELSE....CharPo
01A0C0:  73 3A 3D 50 6F 73 2D 28 69 2D 4F 52 44 28 57 6F    s:=Pos-(i-ORD(Wo
01A0D0:  72 6B 69 6E 67 5E 2E 42 6C 6F 63 6B 4C 65 6E 29    rking^.BlockLen)
01A0E0:  29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 73 61 76    );....END;...sav
01A0F0:  65 63 75 72 70 6F 73 28 46 69 6C 65 29 3B 0D 0A    ecurpos(File);..
01A100:  0D 0A 09 0D 0A 50 52 4F 43 45 44 55 52 45 20 20    .....PROCEDURE  
01A110:  46 6F 72 77 61 72 64 4F 6E 65 43 68 61 72 28 56    ForwardOneChar(V
01A120:  41 52 20 66 3A 45 64 69 74 46 69 6C 65 29 3A 42    AR f:EditFile):B
01A130:  4F 4F 4C 45 41 4E 3B 0D 0A 42 45 47 49 4E 0D 0A    OOLEAN;..BEGIN..
01A140:  09 73 65 74 63 75 72 70 6F 73 28 66 29 3B 0D 0A    .setcurpos(f);..
01A150:  09 62 3A 3D 41 64 76 61 6E 63 65 28 29 3B 0D 0A    .b:=Advance();..
01A160:  09 73 61 76 65 63 75 72 70 6F 73 28 66 29 3B 0D    .savecurpos(f);.
01A170:  0A 09 52 45 54 55 52 4E 20 62 0D 0A 09 45 4E 44    ..RETURN b...END
01A180:  20 46 6F 72 77 61 72 64 4F 6E 65 43 68 61 72 3B     ForwardOneChar;
01A190:  09 09 09 09 0D 0A 56 41 52 09 53 74 72 69 6E 67    ......VAR.String
01A1A0:  3A 41 52 52 41 59 5B 30 2E 2E 35 39 5D 20 4F 46    :ARRAY[0..59] OF
01A1B0:  20 43 48 41 52 3B 0D 0A 09 53 74 72 69 6E 67 4C     CHAR;...StringL
01A1C0:  65 6E 3A 43 41 52 44 49 4E 41 4C 3D 30 3B 09 0D    en:CARDINAL=0;..
01A1D0:  0A 09 4D 61 74 63 68 43 68 61 72 4E 6F 3A 43 41    ..MatchCharNo:CA
01A1E0:  52 44 49 4E 41 4C 3B 0D 0A 09 4D 61 74 63 68 43    RDINAL;...MatchC
01A1F0:  68 61 72 3A 43 48 41 52 3B 0D 0A 0D 0A 50 52 4F    har:CHAR;....PRO
01A200:  43 45 44 55 52 45 20 4D 61 74 63 68 65 73 28 29    CEDURE Matches()
01A210:  3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 42 45 47 49 4E    :BOOLEAN;..BEGIN
01A220:  0D 0A 09 52 45 54 55 52 4E 20 28 57 6F 72 6B 69    ...RETURN (Worki
01A230:  6E 67 5E 2E 43 68 61 72 73 5B 43 68 61 72 50 6F    ng^.Chars[CharPo
01A240:  73 5D 3D 53 74 72 69 6E 67 5B 4D 61 74 63 68 43    s]=String[MatchC
01A250:  68 61 72 4E 6F 5D 29 0D 0A 09 20 20 20 20 4F 52    harNo])...    OR
01A260:  20 28 57 6F 72 6B 69 6E 67 5E 2E 43 68 61 72 73     (Working^.Chars
01A270:  5B 43 68 61 72 50 6F 73 5D 3D 43 41 50 28 53 74    [CharPos]=CAP(St
01A280:  72 69 6E 67 5B 4D 61 74 63 68 43 68 61 72 4E 6F    ring[MatchCharNo
01A290:  5D 29 29 0D 0A 09 45 4E 44 20 4D 61 74 63 68 65    ]))...END Matche
01A2A0:  73 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 50 72    s;..PROCEDURE Pr
01A2B0:  65 70 61 72 65 53 74 72 69 6E 67 28 73 3A 41 52    epareString(s:AR
01A2C0:  52 41 59 20 4F 46 20 43 48 41 52 3B 6C 65 6E 3A    RAY OF CHAR;len:
01A2D0:  49 4E 54 45 47 45 52 29 3B 0D 0A 0D 0A 42 45 47    INTEGER);....BEG
01A2E0:  49 4E 0D 0A 09 53 74 72 69 6E 67 4C 65 6E 3A 3D    IN...StringLen:=
01A2F0:  6C 65 6E 3B 0D 0A 09 4D 6F 76 65 75 70 28 41 44    len;...Moveup(AD
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 C9 02 00 00 00 02    ......R.........
01A320:  16 00 C5 02 00 00 00 02 16 00 C1 02 00 00 00 02    ................
01A330:  16 00 C6 02 00 00 00 02 16 00 C2 02 00 00 00 02    ................
01A340:  16 00 C7 02 00 00 00 02 16 00 C3 02 00 00 00 02    ................
01A350:  16 00 C8 02 00 00 00 02 16 00 C4 02 00 00 00 02    ................
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:  6F 65 73 20 72 6F 75 6E 64 20 66 6F 72 20 65 76    oes round for ev
01A410:  65 72 20 73 69 6E 63 65 20 74 68 65 72 65 20 69    er since there i
01A420:  73 20 61 6E 0D 0A 09 09 20 20 65 78 70 6C 69 63    s an....  explic
01A430:  69 74 20 48 41 4C 54 20 69 6E 20 64 6F 6D 65 6E    it HALT in domen
01A440:  75 20 74 6F 20 73 74 6F 70 20 74 68 65 20 70 72    u to stop the pr
01A450:  6F 67 72 61 6D 2A 29 0D 0A 0D 0A 09 09 49 46 20    ogram*)......IF 
01A460:  46 69 6C 65 73 4F 70 65 6E 65 64 3E 30 20 54 48    FilesOpened>0 TH
01A470:  45 4E 20 0D 0A 09 09 09 49 6E 74 65 72 70 72 65    EN .....Interpre
01A480:  74 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 69    t;.....END;....i
01A490:  3A 3D 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 3B    :=CurrentWindow;
01A4A0:  09 0D 0A 09 09 6B 3A 3D 43 75 72 72 65 6E 74 46    .....k:=CurrentF
01A4B0:  69 6C 65 3B 0D 0A 0D 0A 09 09 28 2A 72 65 6D 65    ile;......(*reme
01A4C0:  6D 62 65 72 20 63 75 72 72 65 6E 74 20 77 69 6E    mber current win
01A4D0:  64 6F 77 20 73 69 6E 63 65 20 44 6F 6D 65 6E 75    dow since Domenu
01A4E0:  4F 70 20 6D 61 79 20 63 68 61 6E 67 65 20 69 74    Op may change it
01A4F0:  2A 29 0D 0A 0D 0A 09 09 6A 3A 3D 46 69 6C 65 73    *)......j:=Files
01A500:  4F 70 65 6E 65 64 3B 0D 0A 09 09 44 6F 4D 65 6E    Opened;....DoMen
01A510:  75 4F 70 3B 09 28 2A 65 78 70 6C 69 63 69 74 20    uOp;.(*explicit 
01A520:  65 78 69 74 20 69 6E 20 74 68 69 73 20 6D 6F 64    exit in this mod
01A530:  75 6C 65 2A 29 0D 0A 09 09 49 46 20 28 69 3D 43    ule*)....IF (i=C
01A540:  75 72 72 65 6E 74 57 69 6E 64 6F 77 29 20 41 4E    urrentWindow) AN
01A550:  44 20 28 57 69 6E 64 6F 77 73 3E 30 29 20 54 48    D (Windows>0) TH
01A560:  45 4E 0D 0A 0D 0A 09 09 09 28 2A 61 66 74 65 72    EN.......(*after
01A570:  20 6D 65 6E 75 2C 20 72 65 64 69 73 70 6C 61 79     menu, redisplay
01A580:  20 77 69 6E 64 6F 77 20 69 6E 20 77 68 69 63 68     window in which
01A590:  20 74 68 65 0D 0A 09 09 09 20 20 77 69 6E 64 6F     the.....  windo
01A5A0:  77 20 70 6F 70 70 65 64 20 75 70 2A 29 0D 0A 0D    w popped up*)...
01A5B0:  0A 09 09 09 44 69 73 70 6C 61 79 46 69 6C 65 28    ....DisplayFile(
01A5C0:  46 69 6C 65 73 5B 6B 5D 2C 69 2C 63 75 72 78 5B    Files[k],i,curx[
01A5D0:  69 5D 2C 63 75 72 79 5B 69 5D 29 3B 0D 0A 09 09    i],cury[i]);....
01A5E0:  09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 20 28 2A    .END;....END; (*
01A5F0:  4C 4F 4F 50 2A 29 0D 0A 0D 0A 09 45 4E 44 20 6D    LOOP*).....END m
01A600:  0D 0A 28 2A 09 45 72 72 6F 72 20 64 69 73 70 6C    ..(*.Error displ
01A610:  61 79 20 72 6F 75 74 69 6E 65 0D 0A 0D 0A 09 49    ay routine.....I
01A620:  66 20 74 68 65 20 65 64 69 74 6F 72 20 69 73 20    f the editor is 
01A630:  65 6E 74 65 72 65 64 20 61 73 20 74 68 65 20 72    entered as the r
01A640:  65 73 75 6C 74 20 6F 66 20 61 20 63 6F 6D 70 69    esult of a compi
01A650:  6C 61 74 69 6F 6E 20 65 72 72 6F 72 2C 0D 0A 09    lation error,...
01A660:  74 68 65 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65    the command line
01A670:  20 63 6F 6E 73 69 73 74 73 20 6F 66 20 74 68 65     consists of the
01A680:  20 6E 61 6D 65 20 6F 66 20 74 68 65 20 66 69 6C     name of the fil
01A690:  65 20 77 68 69 63 68 20 77 61 73 0D 0A 09 62 65    e which was...be
01A6A0:  69 6E 67 20 63 6F 6D 70 69 6C 65 64 20 66 6F 6C    ing compiled fol
01A6B0:  6C 6F 77 65 64 20 62 79 20 61 6E 20 6F 70 74 69    lowed by an opti
01A6C0:  6F 6E 2E 20 54 68 65 20 6F 70 74 69 6F 6E 20 63    on. The option c
01A6D0:  6F 6E 74 61 69 6E 73 0D 0A 09 74 77 6F 20 69 6E    ontains...two in
01A6E0:  74 65 67 65 72 20 76 61 6C 75 65 73 20 69 6E 20    teger values in 
01A6F0:  62 69 6E 61 72 79 20 28 73 6F 20 79 6F 75 20 63    binary (so you c
01A700:  61 6E 6E 6F 74 20 65 6E 74 65 72 20 73 61 6D 65    annot enter same
01A710:  20 66 72 6F 6D 0D 0A 09 74 68 65 20 43 50 2F 4D     from...the CP/M
01A720:  20 70 72 6F 6D 70 74 20 2D 20 6F 72 20 61 74 20     prompt - or at 
01A730:  6C 65 61 73 74 20 6E 6F 74 20 65 61 73 69 6C 79    least not easily
01A740:  29 2E 20 47 69 76 69 6E 67 20 74 68 65 20 70 6F    ). Giving the po
01A750:  73 69 74 69 6F 6E 0D 0A 09 6F 66 20 74 68 65 20    sition...of the 
01A760:  65 72 72 6F 72 20 69 6E 20 74 68 65 20 66 69 6C    error in the fil
01A770:  65 20 61 6E 64 20 74 68 65 20 65 72 72 6F 72 20    e and the error 
01A780:  6E 75 6D 62 65 72 2A 29 0D 0A 0D 0A 0D 0A 28 2A    number*)......(*
01A790:  09 57 6F 72 6B 20 74 68 72 6F 75 67 68 20 74 68    .Work through th
01A7A0:  65 20 70 61 72 61 6D 65 74 65 72 73 20 6F 70 65    e parameters ope
01A7B0:  6E 69 6E 67 20 74 68 65 20 66 69 6C 65 73 20 74    ning the files t
01A7C0:  6F 20 62 65 20 65 64 69 74 65 64 0D 0A 09 50 61    o be edited...Pa
01A7D0:  72 73 20 61 6E 64 20 50 61 72 43 6F 75 6E 74 20    rs and ParCount 
01A7E0:  68 61 76 65 20 61 6C 72 65 61 64 79 20 62 65 65    have already bee
01A7F0:  6E 20 73 65 74 20 75 70 20 62 79 20 61 20 63 61    n set up by a ca
01A800:  4D 4F 44 55 4C 45 20 6D 65 3B 0D 0A 0D 0A 28 2A    MODULE me;....(*
01A810:  09 4D 6F 64 75 6C 61 20 20 65 64 69 74 6F 72 0D    .Modula  editor.
01A820:  0A 0D 0A 09 44 61 76 65 20 4D 6F 6F 72 65 20 31    ....Dave Moore 1
01A830:  20 46 65 62 20 38 35 0D 0A 0D 0A 09 54 68 69 73     Feb 85.....This
01A840:  20 69 73 20 74 68 65 20 6D 61 69 6E 20 6D 6F 64     is the main mod
01A850:  75 6C 65 20 66 6F 72 20 74 68 65 20 65 64 69 74    ule for the edit
01A860:  6F 72 0D 0A 0D 0A 09 49 20 68 61 76 65 20 61 64    or.....I have ad
01A870:  64 65 64 20 73 6F 6D 65 20 63 6F 6D 6D 65 6E 74    ded some comment
01A880:  73 20 61 74 20 76 65 72 73 69 6F 6E 20 31 2E 32    s at version 1.2
01A890:  20 77 68 69 63 68 20 73 68 6F 75 6C 64 20 62 65     which should be
01A8A0:  20 0D 0A 09 77 6F 72 74 68 20 72 65 61 64 69 6E     ...worth readin
01A8B0:  67 20 69 66 20 79 6F 75 20 61 72 65 20 74 72 79    g if you are try
01A8C0:  69 6E 67 20 74 6F 20 6C 65 61 72 6E 20 74 6F 20    ing to learn to 
01A8D0:  77 72 69 74 65 20 69 6E 20 4D 6F 64 75 6C 61 2D    write in Modula-
01A8E0:  32 0D 0A 2A 29 0D 0A 0D 0A 46 52 4F 4D 20 45 64    2..*)....FROM Ed
01A8F0:  69 74 43 6F 6E 74 72 6F 6C 20 49 4D 50 4F 52 54    itControl IMPORT
01A900:  20 46 69 6C 65 73 2C 46 69 6C 65 73 4F 70 65 6E     Files,FilesOpen
01A910:  65 64 2C 63 75 72 78 2C 63 75 72 79 2C 43 75 72    ed,curx,cury,Cur
01A920:  72 65 6E 74 57 69 6E 64 6F 77 2C 43 68 61 6E 67    rentWindow,Chang
01A930:  65 57 69 6E 64 6F 77 2C 0D 0A 09 09 09 52 65 73    eWindow,.....Res
01A940:  65 74 53 63 72 65 65 6E 50 6F 73 2C 43 75 72 72    etScreenPos,Curr
01A950:  65 6E 74 46 69 6C 65 3B 0D 0A 46 52 4F 4D 20 45    entFile;..FROM E
01A960:  64 69 74 44 69 73 70 6C 61 79 20 49 4D 50 4F 52    ditDisplay IMPOR
01A970:  54 20 45 72 72 6F 72 4D 65 73 73 61 67 65 2C 53    T ErrorMessage,S
01A980:  65 74 57 69 6E 64 6F 77 73 2C 44 69 73 70 6C 61    etWindows,Displa
01A990:  79 46 69 6C 65 2C 57 69 6E 64 6F 77 73 2C 0D 0A    yFile,Windows,..
01A9A0:  09 09 44 69 73 70 6C 61 79 45 72 72 6F 72 2C 45    ..DisplayError,E
01A9B0:  72 72 6F 72 4F 72 64 69 6E 61 6C 3B 0D 0A 0D 0A    rrorOrdinal;....
01A9C0:  46 52 4F 4D 20 44 6F 4D 65 6E 75 20 49 4D 50 4F    FROM DoMenu IMPO
01A9D0:  52 54 20 44 6F 4D 65 6E 75 4F 70 2C 4F 70 65 6E    RT DoMenuOp,Open
01A9E0:  3B 0D 0A 0D 0A 46 52 4F 4D 20 4B 65 79 42 6F 61    ;....FROM KeyBoa
01A9F0:  72 64 20 49 4D 50 4F 52 54 20 49 6E 74 65 72 70    rd IMPORT Interp
01AA00:  6C 6C 20 74 6F 0D 0A 09 74 68 65 20 43 6F 6D 6D    ll to...the Comm
01AA10:  61 6E 64 20 6D 6F 64 75 6C 65 2A 29 0D 0A 0D 0A    and module*)....
01AA20:  50 52 4F 43 45 44 55 52 45 20 4F 70 65 6E 46 69    PROCEDURE OpenFi
01AA30:  6C 65 73 3B 0D 0A 56 41 52 09 6B 3A 49 4E 54 45    les;..VAR.k:INTE
01AA40:  47 45 52 3B 0D 0A 09 46 69 6C 65 50 6F 73 69 74    GER;...FilePosit
01AA50:  69 6F 6E 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 42    ion:CARDINAL;..B
01AA60:  45 47 49 4E 0D 0A 0D 0A 09 28 2A 09 63 68 65 63    EGIN.....(*.chec
01AA70:  6B 20 66 6F 72 20 6F 70 74 69 6F 6E 20 67 69 76    k for option giv
01AA80:  69 6E 67 20 65 72 72 6F 72 20 6E 75 6D 62 65 72    ing error number
01AA90:  20 61 6E 64 20 70 6F 73 69 74 69 6F 6E 2A 29 0D     and position*).
01AAA0:  0A 09 45 72 72 6F 72 43 6F 75 6E 74 3A 3D 30 3B    ..ErrorCount:=0;
01AAB0:  0D 0A 09 45 72 72 6F 72 4F 72 64 69 6E 61 6C 3A    ...ErrorOrdinal:
01AAC0:  3D 30 3B 0D 0A 09 57 49 54 48 20 50 61 72 73 5B    =0;...WITH Pars[
01AAD0:  50 61 72 43 6F 75 6E 74 2D 31 5D 5E 20 44 4F 0D    ParCount-1]^ DO.
01AAE0:  0A 09 09 49 46 20 43 6C 61 73 73 3D 6F 70 74 69    ...IF Class=opti
01AAF0:  6F 6E 20 54 48 45 4E 0D 0A 09 09 09 45 72 72 6F    on THEN.....Erro
01AB00:  72 43 6F 75 6E 74 3A 3D 46 69 6C 65 50 6F 73 3B    rCount:=FilePos;
01AB10:  0D 0A 09 09 09 4D 6F 76 65 75 70 28 41 44 52 28    .....Moveup(ADR(
01AB20:  43 68 61 72 73 5B 32 5D 29 2C 41 44 52 28 45 72    Chars[2]),ADR(Er
01AB30:  72 6F 72 4C 69 73 74 29 2C 34 2A 45 72 72 6F 72    rorList),4*Error
01AB40:  43 6F 75 6E 74 29 3B 0D 0A 09 09 09 44 45 43 28    Count);.....DEC(
01AB50:  50 61 72 43 6F 75 6E 74 29 3B 0D 0A 09 09 45 4C    ParCount);....EL
01AB60:  53 45 0D 0A 09 09 09 46 69 6C 65 50 6F 73 69 74    SE.....FilePosit
01AB70:  69 6F 6E 3A 3D 36 35 35 33 35 0D 0A 09 09 09 45    ion:=65535.....E
01AB80:  4E 44 3B 28 2A 49 46 2A 29 0D 0A 09 09 45 4E 44    ND;(*IF*)....END
01AB90:  3B 09 0D 0A 09 46 4F 52 20 6B 3A 3D 30 20 54 4F    ;....FOR k:=0 TO
01ABA0:  20 50 61 72 43 6F 75 6E 74 2D 31 20 44 4F 0D 0A     ParCount-1 DO..
01ABB0:  09 09 57 49 54 48 20 50 61 72 73 5B 6B 5D 5E 20    ..WITH Pars[k]^ 
01ABC0:  44 4F 0D 0A 0D 0A 09 09 28 2A 20 4E 6F 74 65 20    DO......(* Note 
01ABD0:  74 68 65 20 65 78 74 65 6E 73 69 6F 6E 20 62 65    the extension be
01ABE0:  6C 6F 77 3A 0D 0A 0D 0A 09 09 20 20 41 73 20 6F    low:......  As o
01ABF0:  66 20 56 31 2E 32 2C 20 54 68 65 20 63 6F 6D 70    f V1.2, The comp
01AC00:  72 65 74 3B 0D 0A 46 52 4F 4D 09 4D 61 6B 65 45    ret;..FROM.MakeE
01AC10:  64 69 74 20 49 4D 50 4F 52 54 20 44 65 66 69 6E    dit IMPORT Defin
01AC20:  65 45 72 72 6F 72 73 2C 45 72 72 6F 72 4C 69 73    eErrors,ErrorLis
01AC30:  74 2C 45 72 72 6F 72 43 6F 75 6E 74 3B 0D 0A 46    t,ErrorCount;..F
01AC40:  52 4F 4D 09 46 61 73 74 4D 6F 76 65 20 49 4D 50    ROM.FastMove IMP
01AC50:  4F 52 54 20 4D 6F 76 65 75 70 3B 0D 0A 28 2A 0D    ORT Moveup;..(*.
01AC60:  0A 09 54 68 65 20 6D 6F 64 75 6C 65 73 20 61 62    ..The modules ab
01AC70:  6F 76 65 20 61 72 65 20 70 61 72 74 20 6F 66 20    ove are part of 
01AC80:  74 68 65 20 65 64 69 74 6F 72 0D 0A 09 54 68 65    the editor...The
01AC90:  20 66 6F 6C 6C 6F 77 69 6E 67 20 6D 6F 64 75 6C     following modul
01ACA0:  65 73 20 61 72 65 20 61 6C 6C 20 67 65 6E 65 72    es are all gener
01ACB0:  61 6C 20 70 75 72 70 6F 73 65 20 6D 6F 64 75 6C    al purpose modul
01ACC0:  65 73 0D 0A 2A 29 0D 0A 0D 0A 46 52 4F 4D 20 43    es..*)....FROM C
01ACD0:  6F 6D 6D 61 6E 64 20 49 4D 50 4F 52 54 20 50 61    ommand IMPORT Pa
01ACE0:  72 63 6C 61 73 73 2C 6E 61 6D 65 2C 73 74 72 69    rclass,name,stri
01ACF0:  6E 67 2C 6F 70 74 69 6F 6E 2C 0D 0A 09 09 20 20    ng,option,....  
01AD00:  20 54 65 78 74 2C 50 61 72 61 6D 65 74 65 72 2C     Text,Parameter,
01AD10:  47 65 74 50 61 72 61 6D 73 3B 0D 0A 0D 0A 28 2A    GetParams;....(*
01AD20:  09 43 6F 6D 6D 61 6E 64 20 63 72 61 63 6B 73 20    .Command cracks 
01AD30:  74 68 65 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65    the command line
01AD40:  20 70 61 72 61 6D 65 74 65 72 73 20 77 68 69 63     parameters whic
01AD50:  68 20 61 72 65 20 73 65 74 20 75 70 0D 0A 09 62    h are set up...b
01AD60:  79 20 43 50 2F 4D 20 61 74 20 61 64 64 72 65 73    y CP/M at addres
01AD70:  73 20 38 30 0D 0A 2A 29 0D 0A 0D 0A 46 52 4F 4D    s 80..*)....FROM
01AD80:  20 46 69 6C 65 73 20 49 4D 50 4F 52 54 20 46 69     Files IMPORT Fi
01AD90:  6C 65 4E 61 6D 65 2C 46 49 4C 45 2C 4C 6F 6F 6B    leName,FILE,Look
01ADA0:  75 70 2C 52 65 61 64 42 6C 6F 63 6B 2C 53 65 74    up,ReadBlock,Set
01ADB0:  42 6C 6F 63 6B 3B 0D 0A 0D 0A 28 2A 09 46 69 6C    Block;....(*.Fil
01ADC0:  65 73 20 69 73 20 74 68 65 20 66 69 6C 65 20 6F    es is the file o
01ADD0:  72 69 65 6E 74 65 64 20 62 6C 6F 63 6B 20 6C 65    riented block le
01ADE0:  76 65 6C 20 49 4F 20 73 79 73 74 65 6D 2A 29 0D    vel IO system*).
01ADF0:  0A 0D 0A 46 52 4F 4D 20 53 59 53 54 45 4D 20 49    ...FROM SYSTEM I
01AE00:  69 6C 65 72 20 61 6C 6C 6F 77 73 20 79 6F 75 20    iler allows you 
01AE10:  74 6F 20 74 79 70 65 20 62 72 65 61 6B 20 77 69    to type break wi
01AE20:  74 68 20 74 79 70 65 73 0D 0A 09 09 20 20 61 6E    th types....  an
01AE30:  64 20 76 61 72 69 61 62 6C 65 73 20 6D 6F 72 65    d variables more
01AE40:  20 74 68 61 6E 20 74 77 6F 20 62 79 74 65 73 20     than two bytes 
01AE50:  69 6E 20 6C 65 6E 67 74 68 2C 20 77 68 69 63 68    in length, which
01AE60:  20 73 69 6D 70 6C 69 66 79 73 0D 0A 09 09 20 20     simplifys....  
01AE70:  74 68 69 73 20 63 6F 64 65 20 67 72 65 61 74 65    this code greate
01AE80:  6C 79 2E 20 57 68 61 74 20 69 73 20 68 61 70 70    ly. What is happ
01AE90:  65 6E 69 6E 67 20 69 73 20 74 68 61 74 20 43 68    ening is that Ch
01AEA0:  61 72 73 20 69 73 20 72 65 61 6C 6C 79 0D 0A 09    ars is really...
01AEB0:  09 20 20 6F 66 20 74 79 70 65 20 41 52 52 41 59    .  of type ARRAY
01AEC0:  5B 73 6F 6D 65 74 68 69 6E 67 5D 20 4F 46 20 43    [something] OF C
01AED0:  48 41 52 2C 20 61 6E 64 20 69 73 20 6E 6F 74 20    HAR, and is not 
01AEE0:  74 68 65 20 73 61 6D 65 20 61 73 20 46 69 6C 65    the same as File
01AEF0:  4E 61 6D 65 0D 0A 09 09 0D 0A 09 09 20 20 42 79    Name........  By
01AF00:  20 70 75 74 74 69 6E 67 20 74 68 65 20 76 61 72     putting the var
01AF10:  69 61 62 6C 65 20 69 6E 20 46 69 6C 65 4E 61 6D    iable in FileNam
01AF20:  65 28 29 2C 20 69 74 73 20 74 79 70 65 20 69 73    e(), its type is
01AF30:  20 63 68 61 6E 67 65 64 20 74 6F 0D 0A 09 09 20     changed to.... 
01AF40:  20 62 65 20 46 69 6C 65 4E 61 6D 65 2E 20 54 68     be FileName. Th
01AF50:  69 73 20 69 73 6E 27 74 20 72 65 61 6C 6C 79 20    is isn't really 
01AF60:  61 20 63 6F 65 72 63 69 6F 6E 20 73 69 6E 63 65    a coercion since
01AF70:  20 74 68 65 20 64 61 74 61 20 69 73 20 6E 6F 74     the data is not
01AF80:  0D 0A 09 09 20 20 61 6C 74 65 72 65 64 20 69 6E    ....  altered in
01AF90:  20 61 6E 79 20 77 61 79 2E 20 49 74 20 73 69 6D     any way. It sim
01AFA0:  70 6C 79 20 64 65 66 65 61 74 73 20 74 68 65 20    ply defeats the 
01AFB0:  63 6F 6D 70 69 6C 65 72 27 73 20 74 79 70 65 0D    compiler's type.
01AFC0:  0A 09 09 20 20 63 68 65 63 6B 69 6E 67 2E 20 20    ...  checking.  
01AFD0:  2A 29 0D 0A 0D 0A 09 20 09 09 4F 70 65 6E 28 46    *)..... ..Open(F
01AFE0:  69 6C 65 4E 61 6D 65 28 43 68 61 72 73 29 2C 46    ileName(Chars),F
01AFF0:  69 6C 65 50 6F 73 69 74 69 6F 6E 29 3B 0D 0A 09    ilePosition);...
01B000:  4D 50 4F 52 54 20 41 44 52 3B 0D 0A 0D 0A 46 52    MPORT ADR;....FR
01B010:  4F 4D 20 53 74 6F 72 61 67 65 20 49 4D 50 4F 52    OM Storage IMPOR
01B020:  54 20 46 75 6C 6C 55 70 3B 0D 0A 0D 0A 28 2A 09    T FullUp;....(*.
01B030:  54 65 72 6D 69 6E 61 6C 20 69 73 20 74 68 65 20    Terminal is the 
01B040:  73 74 61 6E 64 61 72 64 20 74 65 72 6D 69 6E 61    standard termina
01B050:  6C 20 69 6E 70 75 74 2D 6F 75 74 70 75 74 20 6D    l input-output m
01B060:  6F 64 75 6C 65 0D 0A 0D 0A 09 49 74 20 69 73 20    odule.....It is 
01B070:  61 6C 73 6F 20 70 6F 73 73 69 62 6C 65 20 74 6F    also possible to
01B080:  20 64 6F 20 49 6E 70 75 74 2D 4F 75 74 70 75 74     do Input-Output
01B090:  20 74 6F 20 74 68 65 20 74 65 72 6D 69 6E 61 6C     to the terminal
01B0A0:  0D 0A 09 74 68 72 6F 75 67 68 20 74 68 65 20 6D    ...through the m
01B0B0:  6F 64 75 6C 65 73 20 53 74 72 65 61 6D 73 20 61    odules Streams a
01B0C0:  6E 64 20 49 6E 4F 75 74 2C 20 62 75 74 20 74 68    nd InOut, but th
01B0D0:  65 73 65 0D 0A 09 69 6E 63 72 65 61 73 65 20 74    ese...increase t
01B0E0:  68 65 20 73 69 7A 65 20 6F 66 20 74 68 65 20 70    he size of the p
01B0F0:  72 6F 67 72 61 6D 20 61 6E 64 20 61 72 65 20 6F    rogram and are o
01B100:  6E 6C 79 20 72 65 71 75 69 72 65 64 20 69 66 20    nly required if 
01B110:  0D 0A 09 79 6F 75 20 77 61 6E 74 20 74 6F 20 64    ...you want to d
01B120:  6F 20 6D 6F 72 65 20 70 6F 77 65 72 66 75 6C 20    o more powerful 
01B130:  74 68 69 6E 67 73 2C 20 73 75 63 68 20 61 73 20    things, such as 
01B140:  66 69 6C 65 0D 0A 09 72 65 64 69 72 65 63 74 69    file...redirecti
01B150:  6F 6E 20 61 6E 64 20 6E 75 6D 62 65 72 20 63 6F    on and number co
01B160:  6E 76 65 72 73 69 6F 6E 2E 20 49 66 20 61 6C 6C    nversion. If all
01B170:  20 79 6F 75 20 77 61 6E 74 20 69 73 20 6E 75 6D     you want is num
01B180:  62 65 72 20 0D 0A 09 63 6F 6E 76 65 72 73 69 6F    ber ...conversio
01B190:  6E 2C 20 53 6D 61 6C 6C 49 4F 20 63 61 6E 20 62    n, SmallIO can b
01B1A0:  65 20 75 73 65 64 20 2A 29 20 0D 0A 0D 0A 56 41    e used *) ....VA
01B1B0:  52 09 50 61 72 73 3A 41 52 52 41 59 5B 30 2E 2E    R.Pars:ARRAY[0..
01B1C0:  33 5D 20 4F 46 20 50 61 72 61 6D 65 74 65 72 3B    3] OF Parameter;
01B1D0:  0D 0A 09 50 61 72 43 6F 75 6E 74 3A 49 4E 54 45    ...ParCount:INTE
01B1E0:  47 45 52 3B 0D 0A 0D 0A 09 28 2A 09 50 61 72 73    GER;.....(*.Pars
01B1F0:  20 69 73 20 61 6E 20 61 72 72 61 79 20 69 6E 74     is an array int
01B200:  09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A    ..END;....END;..
01B210:  09 49 46 20 45 72 72 6F 72 43 6F 75 6E 74 3E 30    .IF ErrorCount>0
01B220:  20 54 48 45 4E 20 44 65 66 69 6E 65 45 72 72 6F     THEN DefineErro
01B230:  72 73 28 46 69 6C 65 73 5B 43 75 72 72 65 6E 74    rs(Files[Current
01B240:  46 69 6C 65 5D 29 20 45 4E 44 3B 0D 0A 09 45 4E    File]) END;...EN
01B250:  44 20 4F 70 65 6E 46 69 6C 65 73 3B 09 09 09 09    D OpenFiles;....
01B260:  0D 0A 50 52 4F 43 45 44 55 52 45 20 4D 65 6D 46    ..PROCEDURE MemF
01B270:  75 6C 6C 3B 0D 0A 42 45 47 49 4E 0D 0A 09 45 72    ull;..BEGIN...Er
01B280:  72 6F 72 4D 65 73 73 61 67 65 28 27 20 4D 65 6D    rorMessage(' Mem
01B290:  6F 72 79 20 69 73 20 66 75 6C 6C 20 2D 20 70 6C    ory is full - pl
01B2A0:  65 61 73 65 20 73 61 76 65 20 66 69 6C 65 73 20    ease save files 
01B2B0:  6E 6F 77 27 2C 27 20 27 29 3B 0D 0A 09 44 6F 4D    now',' ');...DoM
01B2C0:  65 6E 75 4F 70 3B 0D 0A 09 45 4E 44 20 4D 65 6D    enuOp;...END Mem
01B2D0:  46 75 6C 6C 3B 0D 0A 56 41 52 09 63 63 63 3A 43    Full;..VAR.ccc:C
01B2E0:  48 41 52 3B 0D 0A 42 45 47 49 4E 0D 0A 0D 0A 09    HAR;..BEGIN.....
01B2F0:  28 2A 47 65 74 50 61 72 61 6D 73 20 72 65 61 64    (*GetParams read
01B300:  73 20 74 68 65 20 70 61 72 61 6D 65 74 65 72 73    s the parameters
01B310:  20 66 72 6F 6D 20 74 68 65 20 63 6F 6D 6D 61 6E     from the comman
01B320:  64 20 6C 69 6E 65 2A 29 0D 0A 0D 0A 09 46 75 6C    d line*).....Ful
01B330:  6C 55 70 3A 3D 4D 65 6D 46 75 6C 6C 3B 0D 0A 09    lUp:=MemFull;...
01B340:  47 65 74 50 61 72 61 6D 73 28 50 61 72 73 2C 50    GetParams(Pars,P
01B350:  61 72 43 6F 75 6E 74 29 3B 0D 0A 09 46 69 6C 65    arCount);...File
01B360:  73 4F 70 65 6E 65 64 3A 3D 30 3B 0D 0A 09 49 46    sOpened:=0;...IF
01B370:  20 50 61 72 43 6F 75 6E 74 3E 30 20 54 48 45 4E     ParCount>0 THEN
01B380:  20 4F 70 65 6E 46 69 6C 65 73 20 45 4E 44 3B 0D     OpenFiles END;.
01B390:  0A 09 49 46 20 45 72 72 6F 72 43 6F 75 6E 74 3C    ..IF ErrorCount<
01B3A0:  3E 30 20 54 48 45 4E 20 44 69 73 70 6C 61 79 45    >0 THEN DisplayE
01B3B0:  72 72 6F 72 20 45 4E 44 3B 0D 0A 09 49 46 20 46    rror END;...IF F
01B3C0:  69 6C 65 73 4F 70 65 6E 65 64 3E 30 20 54 48 45    ilesOpened>0 THE
01B3D0:  4E 20 43 68 61 6E 67 65 57 69 6E 64 6F 77 28 31    N ChangeWindow(1
01B3E0:  29 20 45 4E 44 3B 0D 0A 09 4C 4F 4F 50 0D 0A 0D    ) END;...LOOP...
01B3F0:  0A 09 09 28 2A 74 68 69 73 20 6C 6F 6F 70 20 67    ...(*this loop g
01B400:  6F 20 77 68 69 63 68 20 43 6F 6D 6D 61 6E 64 20    o which Command 
01B410:  77 69 6C 6C 20 70 6C 61 63 65 0D 0A 09 09 74 68    will place....th
01B420:  65 20 70 61 72 61 6D 65 74 65 72 73 20 65 6E 74    e parameters ent
01B430:  65 72 65 64 20 6F 6E 20 74 68 65 20 63 6F 6D 6D    ered on the comm
01B440:  61 6E 64 20 6C 69 6E 65 0D 0A 09 09 0D 0A 09 09    and line........
01B450:  49 74 20 6E 65 65 64 20 6F 6E 6C 79 20 62 65 20    It need only be 
01B460:  61 73 20 6C 61 72 67 65 20 61 73 20 74 68 65 20    as large as the 
01B470:  6E 75 6D 62 65 72 20 6F 66 20 70 61 72 61 6D 65    number of parame
01B480:  74 65 72 73 0D 0A 09 09 79 6F 75 20 65 78 70 65    ters....you expe
01B490:  63 74 20 74 6F 20 62 65 20 65 6E 74 65 72 65 64    ct to be entered
01B4A0:  20 6F 6E 20 74 68 65 20 63 6F 6D 6D 61 6E 64 20     on the command 
01B4B0:  6C 69 6E 65 0D 0A 0D 0A 09 09 54 68 65 20 65 64    line......The ed
01B4C0:  69 74 6F 72 20 65 78 70 65 63 74 73 20 75 70 20    itor expects up 
01B4D0:  74 6F 20 66 6F 75 72 20 70 61 72 61 6D 65 74 65    to four paramete
01B4E0:  72 73 3A 20 74 68 72 65 65 0D 0A 09 09 66 69 6C    rs: three....fil
01B4F0:  65 20 6E 61 6D 65 73 20 61 6E 64 20 73 6F 6D 65    e names and some
01B500:  20 6F 70 74 69 6F 6E 73 2C 20 61 6C 74 68 6F 75     options, althou
01B510:  67 68 20 74 68 65 20 6F 70 74 69 6F 6E 73 0D 0A    gh the options..
01B520:  09 09 61 72 65 20 63 75 72 72 65 6E 74 6C 79 20    ..are currently 
01B530:  6F 6E 6C 79 20 75 73 65 64 20 62 79 20 74 68 65    only used by the
01B540:  20 63 6F 6D 70 69 6C 65 72 20 77 68 65 6E 20 69     compiler when i
01B550:  74 20 0D 0A 09 09 6C 69 6E 6B 73 20 74 6F 20 74    t ....links to t
01B560:  68 65 20 65 64 69 74 6F 72 20 61 66 74 65 72 20    he editor after 
01B570:  61 6E 20 65 72 72 6F 72 20 61 6E 64 20 69 6E 20    an error and in 
01B580:  74 68 61 74 0D 0A 09 09 63 61 73 65 2C 20 74 68    that....case, th
01B590:  65 72 65 20 69 73 20 6F 6E 6C 79 20 6F 6E 65 20    ere is only one 
01B5A0:  6F 74 68 65 72 20 70 61 72 61 6D 65 74 65 72 0D    other parameter.
01B5B0:  0A 09 2A 29 0D 0A 0D 0A 09 6B 3A 49 4E 54 45 47    ..*).....k:INTEG
01B5C0:  45 52 3B 0D 0A 09 69 2C 6A 3A 43 41 52 44 49 4E    ER;...i,j:CARDIN
01B5D0:  41 4C 3B 0D 0A 09 72 65 70 6C 79 3A 49 4E 54 45    AL;...reply:INTE
01B5E0:  47 45 52 3B 0D 0A 09 66 6E 3A 46 69 6C 65 4E 61    GER;...fn:FileNa
01B5F0:  6D 65 3B 0D 0A 09 63 68 3A 43 48 41 52 3B 0D 0A    me;...ch:CHAR;..
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 C9 02 00 00 00 02    ......R.........
01B620:  17 00 C5 02 00 00 00 02 17 00 C1 02 00 00 00 02    ................
01B630:  17 00 C6 02 00 00 00 02 17 00 C2 02 00 00 00 02    ................
01B640:  17 00 C7 02 00 00 00 02 17 00 C3 02 00 00 00 02    ................
01B650:  17 00 C8 02 00 00 00 02 17 00 C4 02 00 00 00 02    ................
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:  45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 20 28 2A 46    END;....END; (*F
01B710:  4F 52 2A 29 0D 0A 0D 0A 09 28 2A 66 69 6E 69 73    OR*).....(*finis
01B720:  68 20 6F 66 66 20 63 75 72 72 65 6E 74 20 63 6F    h off current co
01B730:  6C 75 6D 6E 2A 29 0D 0A 0D 0A 09 49 46 20 79 31    lumn*).....IF y1
01B740:  3C 3E 28 79 2B 31 29 20 54 48 45 4E 0D 0A 09 09    <>(y+1) THEN....
01B750:  57 48 49 4C 45 20 6A 3C 64 65 70 74 68 20 44 4F    WHILE j<depth DO
01B760:  0D 0A 09 09 09 47 6F 74 6F 78 79 28 78 31 2C 79    .....Gotoxy(x1,y
01B770:  31 29 3B 0D 0A 09 09 09 57 72 69 74 65 53 74 72    1);.....WriteStr
01B780:  69 6E 67 28 27 20 20 20 20 20 20 20 20 20 20 20    ing('           
01B790:  27 29 3B 0D 0A 09 09 09 49 4E 43 28 6A 29 3B 0D    ');.....INC(j);.
01B7A0:  0A 09 09 09 49 4E 43 28 79 31 29 3B 0D 0A 09 09    ....INC(y1);....
01B7B0:  09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09    .END;....END;...
01B7C0:  0D 0A 09 28 2A 61 63 63 65 70 74 20 61 6E 20 6F    ...(*accept an o
01B7D0:  70 74 69 6F 6E 2A 29 0D 0A 0D 0A 09 4C 4F 4F 50    ption*).....LOOP
01B7E0:  0D 0A 0D 0A 09 09 28 2A 69 6E 76 65 72 73 65 20    ......(*inverse 
01B7F0:  63 75 72 72 65 6E 74 6C 79 20 73 65 6C 65 63 74    currently select
01B800:  65 64 20 6F 70 74 69 6F 6E 2A 29 0D 0A 0D 0A 09    ed option*).....
01B810:  09 78 31 3A 3D 78 2B 31 3B 0D 0A 09 09 79 31 3A    .x1:=x+1;....y1:
01B820:  3D 79 2B 31 2B 4F 70 74 69 6F 6E 4E 6F 3B 0D 0A    =y+1+OptionNo;..
01B830:  09 09 57 48 49 4C 45 20 79 31 3E 3D 28 79 2B 64    ..WHILE y1>=(y+d
01B840:  65 70 74 68 2B 31 29 20 44 4F 0D 0A 09 09 09 79    epth+1) DO.....y
01B850:  31 3A 3D 79 31 2D 64 65 70 74 68 3B 0D 0A 09 09    1:=y1-depth;....
01B860:  09 78 31 3A 3D 78 31 2B 77 69 64 74 68 2B 31 0D    .x1:=x1+width+1.
01B870:  0A 09 09 09 45 4E 44 3B 0D 0A 09 09 47 6F 74 6F    ....END;....Goto
01B880:  78 79 28 78 31 2C 79 31 29 3B 0D 0A 09 09 53 63    xy(x1,y1);....Sc
01B890:  72 65 65 6E 43 6F 6E 74 72 6F 6C 28 49 6E 76 65    reenControl(Inve
01B8A0:  72 73 65 29 3B 0D 0A 09 09 57 72 69 74 65 53 74    rse);....WriteSt
01B8B0:  72 69 6E 67 28 54 65 78 74 5B 4F 70 74 69 6F 6E    ring(Text[Option
01B8C0:  4E 6F 5D 29 3B 0D 0A 09 09 53 63 72 65 65 6E 43    No]);....ScreenC
01B8D0:  6F 6E 74 72 6F 6C 28 4E 6F 72 6D 61 6C 29 3B 0D    ontrol(Normal);.
01B8E0:  0A 09 09 47 6F 74 6F 78 79 28 78 31 2C 79 31 29    ...Gotoxy(x1,y1)
01B8F0:  3B 0D 0A 09 09 52 45 50 45 41 54 0D 0A 09 09 09    ;....REPEAT.....
01B900:  20 61 73 20 69 73 20 65 73 63 61 70 65 2A 29 0D     as is escape*).
01B910:  0A 0D 0A 46 52 4F 4D 09 53 63 72 65 65 6E 49 4F    ...FROM.ScreenIO
01B920:  09 49 4D 50 4F 52 54 09 47 6F 74 6F 78 79 2C 44    .IMPORT.Gotoxy,D
01B930:  72 61 77 42 6F 78 2C 44 69 6D 2C 53 74 61 72 74    rawBox,Dim,Start
01B940:  47 72 61 70 68 2C 0D 0A 09 09 09 09 45 6E 64 47    Graph,......EndG
01B950:  72 61 70 68 2C 56 65 72 74 69 63 61 6C 2C 49 6E    raph,Vertical,In
01B960:  76 65 72 73 65 2C 4E 6F 72 6D 61 6C 2C 0D 0A 09    verse,Normal,...
01B970:  09 09 09 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C    ...ScreenControl
01B980:  2C 52 69 6E 67 42 65 6C 6C 3B 0D 0A 46 52 4F 4D    ,RingBell;..FROM
01B990:  09 54 65 72 6D 69 6E 61 6C 09 49 4D 50 4F 52 54    .Terminal.IMPORT
01B9A0:  20 09 57 72 69 74 65 53 74 72 69 6E 67 2C 52 65     .WriteString,Re
01B9B0:  61 64 2C 57 72 69 74 65 2C 42 75 73 79 52 65 61    ad,Write,BusyRea
01B9C0:  64 3B 0D 0A 43 4F 4E 53 54 09 77 69 64 74 68 3D    d;..CONST.width=
01B9D0:  31 31 3B 09 28 2A 77 69 64 74 68 20 6F 66 20 6F    11;.(*width of o
01B9E0:  6E 65 20 6F 70 74 69 6F 6E 2A 29 0D 0A 09 45 53    ne option*)...ES
01B9F0:  43 3D 31 62 78 3B 0D 0A 09 43 52 3D 30 64 78 3B    C=1bx;...CR=0dx;
01BA00:  0D 0A 09 43 74 72 6C 58 3D 31 38 78 3B 0D 0A 09    ...CtrlX=18x;...
01BA10:  43 74 72 6C 45 3D 30 35 78 3B 0D 0A 09 43 74 72    CtrlE=05x;...Ctr
01BA20:  6C 44 3D 30 34 78 3B 0D 0A 09 43 74 72 6C 53 3D    lD=04x;...CtrlS=
01BA30:  31 33 78 3B 0D 0A 09 4C 46 3D 30 61 78 3B 0D 0A    13x;...LF=0ax;..
01BA40:  09 42 53 3D 30 38 78 3B 0D 0A 50 52 4F 43 45 44    .BS=08x;..PROCED
01BA50:  55 52 45 20 47 65 74 46 72 6F 6D 4D 65 6E 75 28    URE GetFromMenu(
01BA60:  56 41 52 20 54 65 78 74 3A 41 52 52 41 59 20 4F    VAR Text:ARRAY O
01BA70:  46 20 4D 65 6E 75 54 65 78 74 3B 78 2C 79 3A 43    F MenuText;x,y:C
01BA80:  41 52 44 49 4E 41 4C 3B 0D 0A 09 09 64 65 70 74    ARDINAL;....dept
01BA90:  68 2C 63 6F 6C 75 6D 6E 73 3A 43 41 52 44 49 4E    h,columns:CARDIN
01BAA0:  41 4C 29 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 0D    AL):CARDINAL;...
01BAB0:  0A 28 2A 20 09 54 65 78 74 20 69 73 20 74 68 65    .(* .Text is the
01BAC0:  20 74 65 78 74 20 74 6F 20 64 69 73 70 6C 61 79     text to display
01BAD0:  0D 0A 0D 0A 0D 0A 09 78 20 61 6E 64 20 79 20 61    .......x and y a
01BAE0:  72 65 20 74 68 65 20 70 6F 73 69 74 69 6F 6E 20    re the position 
01BAF0:  66 6F 72 20 74 68 65 20 74 6F 70 20 6C 65 66 74    for the top left
01BB00:  65 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 45 4E    e.............EN
01BB10:  44 3B 20 28 2A 43 68 61 72 50 6F 73 3E 42 6C 6F    D; (*CharPos>Blo
01BB20:  63 6B 4C 65 6E 2A 29 0D 0A 09 52 45 54 55 52 4E    ckLen*)...RETURN
01BB30:  20 57 6F 72 6B 69 6E 67 5E 2E 43 68 61 72 73 5B     Working^.Chars[
01BB40:  43 68 61 72 50 6F 73 5D 3C 3E 45 4F 46 0D 0A 09    CharPos]<>EOF...
01BB50:  45 4E 44 20 41 64 76 61 6E 63 65 3B 0D 0A 0D 0A    END Advance;....
01BB60:  50 52 4F 43 45 44 55 52 45 20 43 68 65 63 6B 42    PROCEDURE CheckB
01BB70:  6C 6F 63 6B 28 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    lock(...........
01BB80:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01BB90:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 18 8F 65 01 00    .............e..
01BBA0:  31 35 46 45 42 38 37 20 44 4F 43 20 00 00 00 00    15FEB87 DOC ....
01BBB0:  00 00 00 00 00 00 AC 3B 50 0E 51 0D 8F 65 01 00    .......;P.Q..e..
01BBC0:  46 49 58 45 53 20 20 20 44 4F 43 20 00 00 00 00    FIXES   DOC ....
01BBD0:  00 00 00 00 00 00 F0 73 50 0E 47 25 74 05 00 00    .......sP.G%t...
01BBE0:  46 49 58 45 53 20 20 20 42 41 4B 20 00 00 00 00    FIXES   BAK ....
01BBF0:  00 00 00 00 00 00 E2 70 50 0E F1 21 D4 03 00 00    .......pP..!....
01BC00:  0D 0A 09 09 44 45 43 28 69 29 3B 0D 0A 09 09 45    ....DEC(i);....E
01BC10:  4E 44 3B 09 28 2A 4C 4F 4F 50 2A 29 0D 0A 09 46    ND;.(*LOOP*)...F
01BC20:  72 6F 6D 46 69 6C 65 2E 43 75 72 50 6F 73 3A 3D    romFile.CurPos:=
01BC30:  72 3B 0D 0A 09 54 6F 46 69 6C 65 2E 43 75 72 50    r;...ToFile.CurP
01BC40:  6F 73 3A 3D 71 3B 0D 0A 09 52 45 54 55 52 4E 20    os:=q;...RETURN 
01BC50:  54 52 55 45 3B 0D 0A 09 45 4E 44 20 42 6C 6F 63    TRUE;...END Bloc
01BC60:  6B 43 6F 70 79 3B 0D 0A 50 52 4F 43 45 44 55 52    kCopy;..PROCEDUR
01BC70:  45 20 42 6C 6F 63 6B 44 65 6C 28 56 41 52 20 46    E BlockDel(VAR F
01BC80:  72 6F 6D 46 69 6C 65 3A 45 64 69 74 46 69 6C 65    romFile:EditFile
01BC90:  29 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 56 41 52 09    ):BOOLEAN;..VAR.
01BCA0:  70 3A 50 6F 73 69 74 69 6F 6E 3B 0D 0A 42 45 47    p:Position;..BEG
01BCB0:  49 4E 0D 0A 09 49 46 20 4E 4F 54 20 43 68 65 63    IN...IF NOT Chec
01BCC0:  6B 42 6C 6F 63 6B 28 46 72 6F 6D 46 69 6C 65 29    kBlock(FromFile)
01BCD0:  20 54 48 45 4E 20 52 45 54 55 52 4E 20 46 41 4C     THEN RETURN FAL
01BCE0:  53 45 20 45 4E 44 3B 0D 0A 09 57 49 54 48 20 46    SE END;...WITH F
01BCF0:  72 6F 6D 46 69 6C 65 20 44 4F 0D 0A 09 09 4C 61    romFile DO....La
01BD00:  20 63 6F 72 6E 65 72 20 6F 66 20 74 68 65 20 62     corner of the b
01BD10:  6F 78 0D 0A 09 64 65 70 74 68 20 69 73 20 74 68    ox...depth is th
01BD20:  65 20 6E 75 6D 62 65 72 20 6F 66 20 6F 70 74 69    e number of opti
01BD30:  6F 6E 73 20 69 6E 20 61 20 63 6F 6C 75 6D 6E 0D    ons in a column.
01BD40:  0A 09 63 6F 6C 75 6D 6E 73 20 69 73 20 74 68 65    ..columns is the
01BD50:  20 6E 75 6D 62 65 72 20 6F 66 20 63 6F 6C 75 6D     number of colum
01BD60:  6E 73 20 74 68 61 74 20 77 69 6C 6C 20 62 65 20    ns that will be 
01BD70:  72 65 71 75 69 72 65 64 09 2A 29 0D 0A 0D 0A 56    required.*)....V
01BD80:  41 52 09 78 31 2C 79 31 3A 43 41 52 44 49 4E 41    AR.x1,y1:CARDINA
01BD90:  4C 3B 0D 0A 09 69 2C 6A 3A 43 41 52 44 49 4E 41    L;...i,j:CARDINA
01BDA0:  4C 3B 0D 0A 09 4F 70 74 69 6F 6E 4E 6F 3A 43 41    L;...OptionNo:CA
01BDB0:  52 44 49 4E 41 4C 3B 0D 0A 09 63 68 3A 43 48 41    RDINAL;...ch:CHA
01BDC0:  52 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 68    R;..PROCEDURE Ch
01BDD0:  61 6E 67 65 4F 70 74 69 6F 6E 28 62 79 3A 49 4E    angeOption(by:IN
01BDE0:  54 45 47 45 52 29 3B 0D 0A 0D 0A 28 2A 09 63 68    TEGER);....(*.ch
01BDF0:  61 6E 67 65 20 74 68 65 20 63 75 72 72 65 6E 74    ange the current
01BE00:  20 6F 70 74 69 6F 6E 20 6E 75 6D 62 65 72 20 79     option number y
01BE10:  20 67 69 76 65 6E 20 69 6E 63 72 65 6D 65 6E 74     given increment
01BE20:  0D 0A 0D 0A 09 65 6E 73 75 72 65 20 69 74 20 72    .....ensure it r
01BE30:  65 6D 61 69 6E 73 20 69 6E 20 72 61 6E 67 65 2A    emains in range*
01BE40:  29 0D 0A 42 45 47 49 4E 0D 0A 09 62 79 3A 3D 62    )..BEGIN...by:=b
01BE50:  79 2B 49 4E 54 45 47 45 52 28 4F 70 74 69 6F 6E    y+INTEGER(Option
01BE60:  4E 6F 29 3B 0D 0A 09 49 46 20 62 79 3C 30 20 54    No);...IF by<0 T
01BE70:  48 45 4E 20 62 79 3A 3D 48 49 47 48 28 54 65 78    HEN by:=HIGH(Tex
01BE80:  74 29 20 0D 0A 09 45 4C 53 49 46 20 62 79 3E 48    t) ...ELSIF by>H
01BE90:  49 47 48 28 54 65 78 74 29 20 54 48 45 4E 20 62    IGH(Text) THEN b
01BEA0:  79 3A 3D 30 20 45 4E 44 3B 0D 0A 09 4F 70 74 69    y:=0 END;...Opti
01BEB0:  6F 6E 4E 6F 3A 3D 62 79 0D 0A 09 45 4E 44 20 43    onNo:=by...END C
01BEC0:  68 61 6E 67 65 4F 70 74 69 6F 6E 3B 0D 0A 50 52    hangeOption;..PR
01BED0:  4F 43 45 44 55 52 45 20 43 68 61 6E 67 65 50 6F    OCEDURE ChangePo
01BEE0:  73 3B 0D 0A 0D 0A 28 2A 09 43 68 61 6E 67 65 20    s;....(*.Change 
01BEF0:  70 6F 73 69 74 69 6F 6E 20 75 73 69 6E 67 20 66    position using f
01BF00:  44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C    DEFINITION MODUL
01BF10:  45 20 4D 65 6E 75 3B 0D 0A 0D 0A 28 2A 09 4D 65    E Menu;....(*.Me
01BF20:  6E 75 20 64 72 69 76 65 72 0D 0A 0D 0A 09 42 72    nu driver.....Br
01BF30:  69 6E 67 20 75 70 20 61 20 6D 65 6E 75 20 61 74    ing up a menu at
01BF40:  20 73 65 6C 65 63 74 65 64 20 70 6F 69 6E 74 20     selected point 
01BF50:  6F 6E 20 73 63 72 65 65 6E 20 61 6E 64 20 61 63    on screen and ac
01BF60:  63 65 70 74 20 61 6E 20 6F 70 74 69 6F 6E 0D 0A    cept an option..
01BF70:  0D 0A 09 6F 70 74 69 6F 6E 73 20 63 61 6E 20 62    ...options can b
01BF80:  65 20 73 65 6C 65 63 74 65 64 20 65 69 74 68 65    e selected eithe
01BF90:  72 20 62 79 20 73 74 72 69 6B 69 6E 67 20 66 69    r by striking fi
01BFA0:  72 73 74 20 63 68 61 72 61 63 74 65 72 20 6F 66    rst character of
01BFB0:  0D 0A 0D 0A 09 6F 70 74 69 6F 6E 20 6F 72 20 62    .....option or b
01BFC0:  79 20 65 6E 74 65 72 69 6E 67 20 6F 70 74 69 6F    y entering optio
01BFD0:  6E 20 6E 6F 20 28 6C 69 6D 69 74 65 64 20 74 6F    n no (limited to
01BFE0:  20 30 2D 39 29 0D 0A 0D 0A 09 6F 70 74 69 6F 6E     0-9).....option
01BFF0:  20 30 20 69 73 20 61 6C 77 61 79 73 20 65 78 69     0 is always exi
01C000:  74 20 77 69 74 68 6F 75 74 20 73 65 6C 65 63 74    t without select
01C010:  69 6F 6E 20 61 73 20 69 73 20 65 73 63 61 70 65    ion as is escape
01C020:  2A 29 0D 0A 0D 0A 54 59 50 45 09 4D 65 6E 75 54    *)....TYPE.MenuT
01C030:  65 78 74 3D 41 52 52 41 59 5B 31 2E 2E 31 31 5D    ext=ARRAY[1..11]
01C040:  20 4F 46 20 43 48 41 52 3B 0D 0A 0D 0A 50 52 4F     OF CHAR;....PRO
01C050:  43 45 44 55 52 45 20 47 65 74 46 72 6F 6D 4D 65    CEDURE GetFromMe
01C060:  6E 75 28 56 41 52 20 54 65 78 74 3A 41 52 52 41    nu(VAR Text:ARRA
01C070:  59 20 4F 46 20 4D 65 6E 75 54 65 78 74 3B 78 2C    Y OF MenuText;x,
01C080:  79 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 09 64    y:CARDINAL;....d
01C090:  65 70 74 68 2C 63 6F 6C 75 6D 6E 73 3A 43 41 52    epth,columns:CAR
01C0A0:  44 49 4E 41 4C 29 3A 43 41 52 44 49 4E 41 4C 3B    DINAL):CARDINAL;
01C0B0:  0D 0A 0D 0A 28 2A 20 09 54 65 78 74 20 69 73 20    ....(* .Text is 
01C0C0:  74 68 65 20 74 65 78 74 20 74 6F 20 64 69 73 70    the text to disp
01C0D0:  6C 61 79 0D 0A 0D 0A 09 78 20 61 6E 64 20 79 20    lay.....x and y 
01C0E0:  61 72 65 20 74 68 65 20 70 6F 73 69 74 69 6F 6E    are the position
01C0F0:  20 66 6F 72 20 74 68 65 20 74 6F 70 20 6C 65 66     for the top lef
01C100:  69 72 73 74 20 63 68 61 72 61 63 74 65 72 20 6F    irst character o
01C110:  66 20 6D 65 6E 75 20 61 73 20 6F 70 74 69 6F 6E    f menu as option
01C120:  0D 0A 09 41 6C 77 61 79 73 20 6D 6F 76 65 20 2D    ...Always move -
01C130:  20 73 6F 20 74 68 61 74 20 69 66 20 6D 6F 72 65     so that if more
01C140:  20 74 68 61 6E 20 6F 6E 65 20 63 6F 6D 6D 61 6E     than one comman
01C150:  64 20 73 74 61 72 74 73 20 77 69 74 68 0D 0A 09    d starts with...
01C160:  74 68 65 20 73 61 6D 65 20 63 68 61 72 61 63 74    the same charact
01C170:  65 72 20 79 6F 75 20 63 61 6E 20 67 65 74 20 74    er you can get t
01C180:  6F 20 6F 74 68 65 72 20 74 68 61 6E 20 74 68 65    o other than the
01C190:  20 66 69 72 73 74 20 2A 29 0D 0A 56 41 52 09 69     first *)..VAR.i
01C1A0:  3A 49 4E 54 45 47 45 52 3B 0D 0A 42 45 47 49 4E    :INTEGER;..BEGIN
01C1B0:  0D 0A 09 69 3A 3D 48 49 47 48 28 54 65 78 74 29    ...i:=HIGH(Text)
01C1C0:  3B 0D 0A 09 52 45 50 45 41 54 0D 0A 09 09 43 68    ;...REPEAT....Ch
01C1D0:  61 6E 67 65 4F 70 74 69 6F 6E 28 31 29 3B 0D 0A    angeOption(1);..
01C1E0:  09 09 44 45 43 28 69 29 3B 0D 0A 09 09 55 4E 54    ..DEC(i);....UNT
01C1F0:  49 4C 20 28 69 3C 30 29 20 4F 52 20 28 43 41 50    IL (i<0) OR (CAP
01C200:  28 54 65 78 74 5B 4F 70 74 69 6F 6E 4E 6F 5D 5B    (Text[OptionNo][
01C210:  31 5D 29 3D 43 41 50 28 63 68 29 29 3B 0D 0A 09    1])=CAP(ch));...
01C220:  45 4E 44 20 43 68 61 6E 67 65 50 6F 73 3B 0D 0A    END ChangePos;..
01C230:  42 45 47 49 4E 0D 0A 09 28 2A 09 64 72 61 77 20    BEGIN...(*.draw 
01C240:  74 68 65 20 62 6F 78 2A 29 0D 0A 0D 0A 09 78 31    the box*).....x1
01C250:  3A 3D 78 2B 28 77 69 64 74 68 2B 31 29 2A 63 6F    :=x+(width+1)*co
01C260:  6C 75 6D 6E 73 3B 0D 0A 09 79 31 3A 3D 79 2B 64    lumns;...y1:=y+d
01C270:  65 70 74 68 2B 31 3B 0D 0A 09 44 72 61 77 42 6F    epth+1;...DrawBo
01C280:  78 28 78 2C 79 31 2C 78 31 2C 79 29 3B 0D 0A 09    x(x,y1,x1,y);...
01C290:  53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 28 44 69    ScreenControl(Di
01C2A0:  6D 29 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74    m);...ScreenCont
01C2B0:  72 6F 6C 28 53 74 61 72 74 47 72 61 70 68 29 3B    rol(StartGraph);
01C2C0:  0D 0A 09 46 4F 52 20 69 3A 3D 31 20 54 4F 20 63    ...FOR i:=1 TO c
01C2D0:  6F 6C 75 6D 6E 73 2D 31 20 44 4F 0D 0A 09 09 78    olumns-1 DO....x
01C2E0:  31 3A 3D 78 2B 69 2A 28 77 69 64 74 68 2B 31 29    1:=x+i*(width+1)
01C2F0:  3B 0D 0A 09 09 46 4F 52 20 6A 3A 3D 79 2B 31 20    ;....FOR j:=y+1 
01C300:  74 20 63 6F 72 6E 65 72 20 6F 66 20 74 68 65 20    t corner of the 
01C310:  62 6F 78 0D 0A 09 64 65 70 74 68 20 69 73 20 74    box...depth is t
01C320:  68 65 20 6E 75 6D 62 65 72 20 6F 66 20 6F 70 74    he number of opt
01C330:  69 6F 6E 73 20 69 6E 20 61 20 63 6F 6C 75 6D 6E    ions in a column
01C340:  0D 0A 09 63 6F 6C 75 6D 6E 73 20 69 73 20 74 68    ...columns is th
01C350:  65 20 6E 75 6D 62 65 72 20 6F 66 20 63 6F 6C 75    e number of colu
01C360:  6D 6E 73 20 74 68 61 74 20 77 69 6C 6C 20 62 65    mns that will be
01C370:  20 72 65 71 75 69 72 65 64 09 2A 29 0D 0A 0D 0A     required.*)....
01C380:  45 4E 44 20 4D 65 6E 75 2E 0D 0A 1A 1A 1A 1A 1A    END Menu........
01C390:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01C3A0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01C3B0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01C3C0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01C3D0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01C3E0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01C3F0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01C400:  0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 73 61 76    .....END;....sav
01C410:  65 63 75 72 70 6F 73 28 66 29 3B 0D 0A 09 09 70    ecurpos(f);....p
01C420:  3A 3D 66 2E 43 75 72 50 6F 73 3B 0D 0A 09 09 70    :=f.CurPos;....p
01C430:  6F 73 3A 3D 42 61 63 6B 75 70 4C 69 6E 65 28 29    os:=BackupLine()
01C440:  3B 0D 0A 09 09 66 2E 43 75 72 50 6F 73 3A 3D 70    ;....f.CurPos:=p
01C450:  3B 0D 0A 09 45 4C 53 45 0D 0A 09 20 20 20 20 28    ;...ELSE...    (
01C460:  2A 63 68 61 73 65 20 62 61 63 6B 77 61 72 64 73    *chase backwards
01C470:  20 75 6E 74 69 6C 20 61 20 43 52 2C 20 4C 46 20     until a CR, LF 
01C480:  6F 72 20 46 46 20 69 73 20 66 6F 75 6E 64 20 61    or FF is found a
01C490:  6E 64 0D 0A 09 20 20 20 20 20 20 63 61 6C 63 75    nd...      calcu
01C4A0:  6C 61 74 65 20 70 6F 73 69 74 69 6F 6E 20 69 6E    late position in
01C4B0:  20 6C 69 6E 65 2A 29 0D 0A 09 20 20 20 20 70 6F     line*)...    po
01C4C0:  73 3A 3D 42 61 63 6B 75 70 4C 69 6E 65 28 29 3B    s:=BackupLine();
01C4D0:  0D 0A 09 20 20 20 20 6C 65 6E 3A 3D 30 3B 0D 0A    ...    len:=0;..
01C4E0:  0D 0A 09 20 20 20 20 28 2A 09 6E 6F 77 20 70 6F    ...    (*.now po
01C4F0:  73 69 74 69 6F 6E 65 64 20 74 6F 20 62 65 67 69    sitioned to begi
01C500:  54 4F 20 79 31 2D 31 20 44 4F 0D 0A 09 09 09 47    TO y1-1 DO.....G
01C510:  6F 74 6F 78 79 28 78 31 2C 6A 29 3B 0D 0A 09 09    otoxy(x1,j);....
01C520:  09 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 28 56    .ScreenControl(V
01C530:  65 72 74 69 63 61 6C 29 3B 0D 0A 09 09 09 45 4E    ertical);.....EN
01C540:  44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 53 63 72    D;....END;...Scr
01C550:  65 65 6E 43 6F 6E 74 72 6F 6C 28 45 6E 64 47 72    eenControl(EndGr
01C560:  61 70 68 29 3B 0D 0A 09 53 63 72 65 65 6E 43 6F    aph);...ScreenCo
01C570:  6E 74 72 6F 6C 28 4E 6F 72 6D 61 6C 29 3B 0D 0A    ntrol(Normal);..
01C580:  0D 0A 09 28 2A 77 65 20 6E 6F 77 20 68 61 76 65    ...(*we now have
01C590:  20 61 20 62 6F 78 20 61 72 6F 75 6E 64 20 74 68     a box around th
01C5A0:  65 20 6D 65 6E 75 20 77 69 74 68 20 64 69 6D 20    e menu with dim 
01C5B0:  62 61 72 73 20 62 65 74 77 65 65 6E 20 63 6F 6C    bars between col
01C5C0:  75 6D 6E 73 2A 29 0D 0A 0D 0A 09 4F 70 74 69 6F    umns*).....Optio
01C5D0:  6E 4E 6F 3A 3D 30 3B 09 28 2A 61 63 74 75 61 6C    nNo:=0;.(*actual
01C5E0:  6C 79 20 6F 6E 65 20 6C 65 73 73 20 74 68 61 6E    ly one less than
01C5F0:  20 76 61 6C 75 65 20 72 65 74 75 72 6E 65 64 2A     value returned*
01C600:  29 0D 0A 09 6A 3A 3D 30 3B 09 09 28 2A 72 6F 77    )...j:=0;..(*row
01C610:  20 6E 75 6D 62 65 72 2A 29 0D 0A 09 78 31 3A 3D     number*)...x1:=
01C620:  78 2B 31 3B 09 28 2A 70 6F 73 69 74 69 6F 6E 20    x+1;.(*position 
01C630:  66 6F 72 20 74 65 78 74 2A 29 0D 0A 09 79 31 3A    for text*)...y1:
01C640:  3D 79 2B 31 3B 09 0D 0A 09 46 4F 52 20 69 3A 3D    =y+1;....FOR i:=
01C650:  30 20 54 4F 20 48 49 47 48 28 54 65 78 74 29 20    0 TO HIGH(Text) 
01C660:  44 4F 09 0D 0A 09 09 47 6F 74 6F 78 79 28 78 31    DO.....Gotoxy(x1
01C670:  2C 79 31 29 3B 0D 0A 09 09 57 72 69 74 65 53 74    ,y1);....WriteSt
01C680:  72 69 6E 67 28 54 65 78 74 5B 69 5D 29 3B 0D 0A    ring(Text[i]);..
01C690:  09 09 49 4E 43 28 6A 29 3B 0D 0A 09 09 49 46 20    ..INC(j);....IF 
01C6A0:  6A 3D 64 65 70 74 68 20 54 48 45 4E 20 28 2A 6E    j=depth THEN (*n
01C6B0:  65 78 74 20 63 6F 6C 75 6D 6E 2A 29 0D 0A 09 09    ext column*)....
01C6C0:  09 78 31 3A 3D 78 31 2B 77 69 64 74 68 2B 31 3B    .x1:=x1+width+1;
01C6D0:  0D 0A 09 09 09 79 31 3A 3D 79 2B 31 3B 0D 0A 09    .....y1:=y+1;...
01C6E0:  09 09 6A 3A 3D 30 0D 0A 09 09 45 4C 53 45 0D 0A    ..j:=0....ELSE..
01C6F0:  09 09 09 49 4E 43 28 79 31 29 3B 0D 0A 09 09 09    ...INC(y1);.....
01C700:  28 2A 09 6D 65 6E 75 20 68 61 6E 64 6C 65 72 0D    (*.menu handler.
01C710:  0A 0D 0A 09 43 6F 70 79 72 69 67 68 74 20 44 61    ....Copyright Da
01C720:  76 65 20 4D 6F 6F 72 65 20 46 54 4C 20 4D 6F 64    ve Moore FTL Mod
01C730:  75 6C 61 2D 32 20 31 39 38 36 0D 0A 0D 0A 09 4D    ula-2 1986.....M
01C740:  6F 64 69 66 69 63 61 74 69 6F 6E 73 3A 09 43 68    odifications:.Ch
01C750:  61 6E 67 65 64 20 74 6F 20 61 6C 6C 6F 77 20 70    anged to allow p
01C760:  6F 73 69 74 69 6F 6E 20 74 6F 20 6F 70 74 69 6F    osition to optio
01C770:  6E 20 75 73 69 6E 67 20 66 69 72 73 74 0D 0A 09    n using first...
01C780:  09 09 6C 65 74 74 65 72 20 6F 66 20 6F 70 74 69    ..letter of opti
01C790:  6F 6E 2E 20 49 66 20 6D 6F 72 65 20 74 68 61 6E    on. If more than
01C7A0:  20 6F 6E 65 20 6F 70 74 69 6F 6E 20 73 74 61 72     one option star
01C7B0:  74 73 0D 0A 09 09 09 77 69 74 68 20 61 20 67 69    ts.....with a gi
01C7C0:  76 65 6E 20 6C 65 74 74 65 72 2C 20 61 6C 77 61    ven letter, alwa
01C7D0:  79 73 20 6D 6F 76 65 73 20 74 6F 20 6E 65 78 74    ys moves to next
01C7E0:  20 2A 29 0D 0A 0D 0A 0D 0A 49 4D 50 4C 45 4D 45     *)......IMPLEME
01C7F0:  4E 54 41 54 49 4F 4E 20 4D 4F 44 55 4C 45 20 4D    NTATION MODULE M
01C800:  65 6E 75 3B 0D 0A 0D 0A 28 2A 09 4D 65 6E 75 20    enu;....(*.Menu 
01C810:  64 72 69 76 65 72 0D 0A 0D 0A 09 42 72 69 6E 67    driver.....Bring
01C820:  20 75 70 20 61 20 6D 65 6E 75 20 61 74 20 73 65     up a menu at se
01C830:  6C 65 63 74 65 64 20 70 6F 69 6E 74 20 6F 6E 20    lected point on 
01C840:  73 63 72 65 65 6E 20 61 6E 64 20 61 63 63 65 70    screen and accep
01C850:  74 20 61 6E 20 6F 70 74 69 6F 6E 0D 0A 0D 0A 09    t an option.....
01C860:  6F 70 74 69 6F 6E 73 20 63 61 6E 20 62 65 20 73    options can be s
01C870:  65 6C 65 63 74 65 64 20 65 69 74 68 65 72 20 62    elected either b
01C880:  79 20 73 74 72 69 6B 69 6E 67 20 66 69 72 73 74    y striking first
01C890:  20 63 68 61 72 61 63 74 65 72 20 6F 66 0D 0A 0D     character of...
01C8A0:  0A 09 6F 70 74 69 6F 6E 20 6F 72 20 62 79 20 65    ..option or by e
01C8B0:  6E 74 65 72 69 6E 67 20 6F 70 74 69 6F 6E 20 6E    ntering option n
01C8C0:  6F 20 28 6C 69 6D 69 74 65 64 20 74 6F 20 30 2D    o (limited to 0-
01C8D0:  39 29 0D 0A 0D 0A 09 6F 70 74 69 6F 6E 20 30 20    9).....option 0 
01C8E0:  69 73 20 61 6C 77 61 79 73 20 65 78 69 74 20 77    is always exit w
01C8F0:  69 74 68 6F 75 74 20 73 65 6C 65 63 74 69 6F 6E    ithout selection
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 C9 02 00 00 00 02    ......R.........
01C920:  18 00 C5 02 00 00 00 02 18 00 C1 02 00 00 00 02    ................
01C930:  18 00 C6 02 00 00 00 02 18 00 C2 02 00 00 00 02    ................
01C940:  18 00 C7 02 00 00 00 02 18 00 C3 02 00 00 00 02    ................
01C950:  18 00 C8 02 00 00 00 02 18 00 C4 02 00 00 00 02    ................
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:  49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D    IMPLEMENTATION M
01CA10:  4F 44 55 4C 45 20 53 63 72 65 65 6E 44 75 6D 6D    ODULE ScreenDumm
01CA20:  79 3B 0D 0A 49 4D 50 4F 52 54 09 53 63 72 65 65    y;..IMPORT.Scree
01CA30:  6E 49 4F 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52    nIO;....PROCEDUR
01CA40:  45 20 43 6C 65 61 72 53 63 72 65 65 6E 3B 0D 0A    E ClearScreen;..
01CA50:  42 45 47 49 4E 0D 0A 09 53 63 72 65 65 6E 49 4F    BEGIN...ScreenIO
01CA60:  2E 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 28 53    .ScreenControl(S
01CA70:  63 72 65 65 6E 49 4F 2E 43 6C 65 61 72 53 63 72    creenIO.ClearScr
01CA80:  65 65 6E 29 3B 0D 0A 09 45 4E 44 20 43 6C 65 61    een);...END Clea
01CA90:  72 53 63 72 65 65 6E 3B 0D 0A 50 52 4F 43 45 44    rScreen;..PROCED
01CAA0:  55 52 45 20 47 6F 74 6F 78 79 28 78 2C 79 3A 43    URE Gotoxy(x,y:C
01CAB0:  41 52 44 49 4E 41 4C 29 3B 0D 0A 42 45 47 49 4E    ARDINAL);..BEGIN
01CAC0:  0D 0A 09 53 63 72 65 65 6E 49 4F 2E 47 6F 74 6F    ...ScreenIO.Goto
01CAD0:  78 79 28 78 2C 79 29 3B 0D 0A 09 45 4E 44 20 47    xy(x,y);...END G
01CAE0:  6F 74 6F 78 79 3B 0D 0A 50 52 4F 43 45 44 55 52    otoxy;..PROCEDUR
01CAF0:  45 20 52 69 6E 67 42 65 6C 6C 3B 0D 0A 42 45 47    E RingBell;..BEG
01CB00:  49 4E 0D 0A 09 53 63 72 65 65 6E 49 4F 2E 53 63    IN...ScreenIO.Sc
01CB10:  72 65 65 6E 43 6F 6E 74 72 6F 6C 28 53 63 72 65    reenControl(Scre
01CB20:  65 6E 49 4F 2E 52 69 6E 67 42 65 6C 6C 29 3B 0D    enIO.RingBell);.
01CB30:  0A 09 45 4E 44 20 52 69 6E 67 42 65 6C 6C 3B 0D    ..END RingBell;.
01CB40:  0A 50 52 4F 43 45 44 55 52 45 20 4F 75 74 70 75    .PROCEDURE Outpu
01CB50:  74 54 6F 53 63 72 65 65 6E 28 62 3A 42 4F 4F 4C    tToScreen(b:BOOL
01CB60:  45 41 4E 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 53    EAN);..BEGIN...S
01CB70:  63 72 65 65 6E 49 4F 2E 4F 75 74 70 75 74 54 6F    creenIO.OutputTo
01CB80:  53 63 72 65 65 6E 28 62 29 3B 0D 0A 09 45 4E 44    Screen(b);...END
01CB90:  20 4F 75 74 70 75 74 54 6F 53 63 72 65 65 6E 3B     OutputToScreen;
01CBA0:  0D 0A 50 52 4F 43 45 44 55 52 45 20 20 44 72 61    ..PROCEDURE  Dra
01CBB0:  77 42 6F 78 28 78 31 2C 79 31 2C 78 32 2C 79 32    wBox(x1,y1,x2,y2
01CBC0:  3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A 42 45 47    :CARDINAL);..BEG
01CBD0:  49 4E 0D 0A 09 53 63 72 65 65 6E 49 4F 2E 44 72    IN...ScreenIO.Dr
01CBE0:  61 77 42 6F 78 28 78 31 2C 79 31 2C 78 32 2C 79    awBox(x1,y1,x2,y
01CBF0:  32 29 3B 0D 0A 09 45 4E 44 20 44 72 61 77 42 6F    2);...END DrawBo
01CC00:  49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D    IMPLEMENTATION M
01CC10:  4F 44 55 4C 45 20 52 65 73 65 74 44 69 73 63 3B    ODULE ResetDisc;
01CC20:  0D 0A 46 52 4F 4D 09 43 50 4D 20 49 4D 50 4F 52    ..FROM.CPM IMPOR
01CC30:  54 20 42 44 4F 53 2C 72 73 64 66 63 3B 0D 0A 50    T BDOS,rsdfc;..P
01CC40:  52 4F 43 45 44 55 52 45 20 52 65 73 65 74 41 6C    ROCEDURE ResetAl
01CC50:  6C 44 69 73 63 73 3B 0D 0A 56 41 52 09 63 3A 43    lDiscs;..VAR.c:C
01CC60:  41 52 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 4E 0D    ARDINAL;..BEGIN.
01CC70:  0A 09 63 3A 3D 42 44 4F 53 28 72 73 64 66 63 2C    ..c:=BDOS(rsdfc,
01CC80:  30 33 66 68 29 3B 0D 0A 09 45 4E 44 20 52 65 73    03fh);...END Res
01CC90:  65 74 41 6C 6C 44 69 73 63 73 3B 0D 0A 45 4E 44    etAllDiscs;..END
01CCA0:  20 52 65 73 65 74 44 69 73 63 2E 0D 0A 1A 1A 1A     ResetDisc......
01CCB0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01CCC0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01CCD0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01CCE0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01CCF0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01CD00:  72 43 6F 75 6E 74 3A 3D 46 69 6C 65 50 6F 73 3B    rCount:=FilePos;
01CD10:  0D 0A 09 09 09 4D 6F 76 65 75 70 28 41 44 52 28    .....Moveup(ADR(
01CD20:  43 68 61 72 73 5B 32 5D 29 2C 41 44 52 28 45 72    Chars[2]),ADR(Er
01CD30:  72 6F 72 4C 69 73 74 29 2C 34 2A 45 72 72 6F 72    rorList),4*Error
01CD40:  43 6F 75 6E 74 29 3B 0D 0A 09 09 09 44 45 43 28    Count);.....DEC(
01CD50:  50 61 72 43 6F 75 6E 74 29 3B 0D 0A 09 09 45 4C    ParCount);....EL
01CD60:  53 45 0D 0A 09 09 09 46 69 6C 65 50 6F 73 69 74    SE.....FilePosit
01CD70:  69 6F 6E 3A 3D 36 35 35 33 35 0D 0A 09 09 09 45    ion:=65535.....E
01CD80:  4E 44 3B 28 2A 49 46 2A 29 0D 0A 09 09 45 4E 44    ND;(*IF*)....END
01CD90:  3B 09 0D 0A 09 46 4F 52 20 6B 3A 3D 30 20 54 4F    ;....FOR k:=0 TO
01CDA0:  20 50 61 72 43 6F 75 6E 74 2D 31 20 44 4F 0D 0A     ParCount-1 DO..
01CDB0:  09 09 57 49 54 48 20 50 61 72 73 5B 6B 5D 5E 20    ..WITH Pars[k]^ 
01CDC0:  44 4F 0D 0A 0D 0A 09 09 28 2A 20 4E 6F 74 65 20    DO......(* Note 
01CDD0:  74 68 65 20 65 78 74 65 6E 73 69 6F 6E 20 62 65    the extension be
01CDE0:  6C 6F 77 3A 0D 0A 0D 0A 09 09 20 20 41 73 20 6F    low:......  As o
01CDF0:  66 20 56 31 2E 32 2C 20 54 68 65 20 63 6F 6D 70    f V1.2, The comp
01CE00:  42 75 73 79 52 65 61 64 28 63 68 29 3B 0D 0A 09    BusyRead(ch);...
01CE10:  09 09 55 4E 54 49 4C 20 63 68 3C 3E 30 78 3B 0D    ..UNTIL ch<>0x;.
01CE20:  0A 09 09 47 6F 74 6F 78 79 28 78 31 2C 79 31 29    ...Gotoxy(x1,y1)
01CE30:  3B 0D 0A 09 09 53 63 72 65 65 6E 43 6F 6E 74 72    ;....ScreenContr
01CE40:  6F 6C 28 4E 6F 72 6D 61 6C 29 3B 0D 0A 09 09 57    ol(Normal);....W
01CE50:  72 69 74 65 53 74 72 69 6E 67 28 54 65 78 74 5B    riteString(Text[
01CE60:  4F 70 74 69 6F 6E 4E 6F 5D 29 3B 0D 0A 09 09 43    OptionNo]);....C
01CE70:  41 53 45 20 43 41 50 28 63 68 29 20 4F 46 0D 0A    ASE CAP(ch) OF..
01CE80:  09 09 45 53 43 2C 27 20 27 3A 20 52 45 54 55 52    ..ESC,' ': RETUR
01CE90:  4E 20 30 7C 0D 0A 09 09 43 52 3A 20 20 52 45 54    N 0|....CR:  RET
01CEA0:  55 52 4E 20 4F 70 74 69 6F 6E 4E 6F 2B 31 7C 0D    URN OptionNo+1|.
01CEB0:  0A 09 09 43 74 72 6C 53 2C 42 53 3A 43 68 61 6E    ...CtrlS,BS:Chan
01CEC0:  67 65 4F 70 74 69 6F 6E 28 2D 64 65 70 74 68 29    geOption(-depth)
01CED0:  7C 0D 0A 09 09 43 74 72 6C 45 3A 43 68 61 6E 67    |....CtrlE:Chang
01CEE0:  65 4F 70 74 69 6F 6E 28 2D 31 29 7C 0D 0A 09 09    eOption(-1)|....
01CEF0:  43 74 72 6C 44 3A 43 68 61 6E 67 65 4F 70 74 69    CtrlD:ChangeOpti
01CF00:  6F 6E 28 64 65 70 74 68 29 7C 0D 0A 09 09 43 74    on(depth)|....Ct
01CF10:  72 6C 58 2C 4C 46 3A 43 68 61 6E 67 65 4F 70 74    rlX,LF:ChangeOpt
01CF20:  69 6F 6E 28 31 29 7C 0D 0A 09 09 27 41 27 2E 2E    ion(1)|....'A'..
01CF30:  27 5A 27 3A 43 68 61 6E 67 65 50 6F 73 7C 0D 0A    'Z':ChangePos|..
01CF40:  09 09 45 4C 53 45 20 53 63 72 65 65 6E 43 6F 6E    ..ELSE ScreenCon
01CF50:  74 72 6F 6C 28 52 69 6E 67 42 65 6C 6C 29 0D 0A    trol(RingBell)..
01CF60:  09 09 45 4E 44 3B 28 2A 63 61 73 65 2A 29 0D 0A    ..END;(*case*)..
01CF70:  09 09 45 4E 44 3B 28 2A 4C 4F 4F 50 2A 29 0D 0A    ..END;(*LOOP*)..
01CF80:  09 45 4E 44 20 47 65 74 46 72 6F 6D 4D 65 6E 75    .END GetFromMenu
01CF90:  3B 0D 0A 09 45 4E 44 20 4D 65 6E 75 2E 0D 0A 1A    ;...END Menu....
01CFA0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01CFB0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01CFC0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01CFD0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01CFE0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01CFF0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D0A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D0B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D0C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D0D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D0E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D0F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01D200:  1A 1A 1A 1A 0A 09 09 09 45 4E 44 3B 0D 0A 09 09    ........END;....
01D210:  4C 6F 63 3A 3D 4C 6F 63 2B 31 32 38 3B 0D 0A 09    Loc:=Loc+128;...
01D220:  09 45 4E 44 3B 0D 0A 09 45 4E 44 20 43 6F 6D 70    .END;...END Comp
01D230:  42 69 6E 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    Bin.............
01D240:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D250:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D260:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D270:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D280:  20 46 6F 72 77 61 72 64 4F 6E 65 43 68 61 72 3B     ForwardOneChar;
01D290:  09 09 09 09 0D 0A 56 41 52 09 53 74 72 69 6E 67    ......VAR.String
01D2A0:  3A 41 52 52 41 59 5B 30 2E 2E 35 39 5D 20 4F 46    :ARRAY[0..59] OF
01D2B0:  20 43 48 41 52 3B 0D 0A 09 53 74 72 69 6E 67 4C     CHAR;...StringL
01D2C0:  65 6E 3A 43 41 52 44 49 4E 41 4C 3D 30 3B 09 0D    en:CARDINAL=0;..
01D2D0:  0A 09 4D 61 74 63 68 43 68 61 72 4E 6F 3A 43 41    ..MatchCharNo:CA
01D2E0:  52 44 49 4E 41 4C 3B 0D 0A 09 4D 61 74 63 68 43    RDINAL;...MatchC
01D2F0:  68 61 72 3A 43 48 41 52 3B 0D 0A 0D 0A 50 52 4F    har:CHAR;....PRO
01D300:  43 45 44 55 52 45 20 4D 61 74 63 68 65 73 28 29    CEDURE Matches()
01D310:  3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 42 45 47 49 4E    :BOOLEAN;..BEGIN
01D320:  0D 0A 09 52 45 54 55 52 4E 20 28 57 6F 72 6B 69    ...RETURN (Worki
01D330:  6E 67 5E 2E 43 68 61 72 73 5B 43 68 61 72 50 6F    ng^.Chars[CharPo
01D340:  73 5D 3D 53 74 72 69 6E 67 5B 4D 61 74 63 68 43    s]=String[MatchC
01D350:  68 61 72 4E 6F 5D 29 0D 0A 09 20 20 20 20 4F 52    harNo])...    OR
01D360:  20 28 57 6F 72 6B 69 6E 67 5E 2E 43 68 61 72 73     (Working^.Chars
01D370:  5B 43 68 61 72 50 6F 73 5D 3D 43 41 50 28 53 74    [CharPos]=CAP(St
01D380:  72 69 6E 67 5B 4D 61 74 63 68 43 68 61 72 4E 6F    ring[MatchCharNo
01D390:  5D 29 29 0D 0A 09 45 4E 44 20 4D 61 74 63 68 65    ]))...END Matche
01D3A0:  73 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 50 72    s;..PROCEDURE Pr
01D3B0:  65 70 61 72 65 53 74 72 69 6E 67 28 73 3A 41 52    epareString(s:AR
01D3C0:  52 41 59 20 4F 46 20 43 48 41 52 3B 6C 65 6E 3A    RAY OF CHAR;len:
01D3D0:  49 4E 54 45 47 45 52 29 3B 0D 0A 0D 0A 42 45 47    INTEGER);....BEG
01D3E0:  49 4E 0D 0A 09 53 74 72 69 6E 67 4C 65 6E 3A 3D    IN...StringLen:=
01D3F0:  6C 65 6E 3B 0D 0A 09 4D 6F 76 65 75 70 28 41 44    len;...Moveup(AD
01D400:  44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C    DEFINITION MODUL
01D410:  45 20 53 63 72 65 65 6E 44 75 6D 6D 79 3B 0D 0A    E ScreenDummy;..
01D420:  0D 0A 28 2A 09 74 68 69 73 20 6D 6F 64 75 6C 65    ..(*.this module
01D430:  20 77 61 73 20 77 72 69 74 74 65 6E 20 74 6F 20     was written to 
01D440:  65 6E 61 62 6C 65 0D 0A 09 73 65 76 65 72 61 6C    enable...several
01D450:  20 6D 6F 64 75 6C 65 73 20 74 6F 20 62 65 20 63     modules to be c
01D460:  6F 6D 70 69 6C 65 64 0D 0A 09 6F 6E 20 6D 61 63    ompiled...on mac
01D470:  68 69 6E 65 73 20 77 69 74 68 20 74 69 67 68 74    hines with tight
01D480:  20 54 50 41 27 73 2E 20 54 68 65 20 73 61 6D 65     TPA's. The same
01D490:  0D 0A 09 74 68 69 6E 67 20 63 61 6E 20 62 65 20    ...thing can be 
01D4A0:  64 6F 6E 65 20 77 69 74 68 20 6F 74 68 65 72 20    done with other 
01D4B0:  6D 6F 64 75 6C 65 73 20 69 66 0D 0A 09 79 6F 75    modules if...you
01D4C0:  72 20 54 50 41 20 69 73 20 74 69 67 68 74 65 72    r TPA is tighter
01D4D0:  20 74 68 61 6E 20 74 68 61 74 20 6F 66 20 6D 79     than that of my
01D4E0:  20 74 65 73 74 0D 0A 09 6D 61 63 68 69 6E 65 2E     test...machine.
01D4F0:  0D 0A 0D 0A 09 57 68 61 74 20 68 61 73 20 62 65    .....What has be
01D500:  65 6E 20 64 6F 6E 65 20 69 73 20 74 6F 20 72 65    en done is to re
01D510:  70 6C 61 63 65 20 61 20 6C 61 72 67 65 0D 0A 09    place a large...
01D520:  73 79 6D 62 6F 6C 20 74 61 62 6C 65 20 28 74 68    symbol table (th
01D530:  61 74 20 6F 66 20 53 63 72 65 65 6E 49 4F 29 20    at of ScreenIO) 
01D540:  77 69 74 68 20 61 20 0D 0A 09 73 6D 61 6C 6C 20    with a ...small 
01D550:  73 79 6D 62 6F 6C 20 74 61 62 6C 65 20 28 74 68    symbol table (th
01D560:  69 73 20 6D 6F 64 75 6C 65 29 2E 20 54 68 69 73    is module). This
01D570:  0D 0A 09 72 65 64 75 63 65 73 20 74 68 65 20 73    ...reduces the s
01D580:  79 6D 62 6F 6C 20 74 61 62 6C 65 20 73 70 61 63    ymbol table spac
01D590:  65 20 75 73 65 64 20 62 79 20 74 68 65 0D 0A 09    e used by the...
01D5A0:  63 61 6C 6C 69 6E 67 20 6D 6F 64 75 6C 65 73 2E    calling modules.
01D5B0:  20 54 68 69 73 20 69 73 20 66 75 72 74 68 65 72     This is further
01D5C0:  20 64 69 73 63 75 73 73 65 64 0D 0A 09 69 6E 20     discussed...in 
01D5D0:  74 68 65 20 6D 61 6E 75 61 6C 2E 0D 0A 2A 29 0D    the manual...*).
01D5E0:  0A 50 52 4F 43 45 44 55 52 45 20 43 6C 65 61 72    .PROCEDURE Clear
01D5F0:  53 63 72 65 65 6E 3B 0D 0A 50 52 4F 43 45 44 55    Screen;..PROCEDU
01D600:  44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C    DEFINITION MODUL
01D610:  45 20 52 65 73 65 74 44 69 73 63 3B 0D 0A 50 52    E ResetDisc;..PR
01D620:  4F 43 45 44 55 52 45 20 52 65 73 65 74 41 6C 6C    OCEDURE ResetAll
01D630:  44 69 73 63 73 3B 0D 0A 45 4E 44 20 52 65 73 65    Discs;..END Rese
01D640:  74 44 69 73 63 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A    tDisc...........
01D650:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D660:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D670:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D680:  20 64 6F 20 49 6E 70 75 74 2D 4F 75 74 70 75 74     do Input-Output
01D690:  20 74 6F 20 74 68 65 20 74 65 72 6D 69 6E 61 6C     to the terminal
01D6A0:  0D 0A 09 74 68 72 6F 75 67 68 20 74 68 65 20 6D    ...through the m
01D6B0:  6F 64 75 6C 65 73 20 53 74 72 65 61 6D 73 20 61    odules Streams a
01D6C0:  6E 64 20 49 6E 4F 75 74 2C 20 62 75 74 20 74 68    nd InOut, but th
01D6D0:  65 73 65 0D 0A 09 69 6E 63 72 65 61 73 65 20 74    ese...increase t
01D6E0:  68 65 20 73 69 7A 65 20 6F 66 20 74 68 65 20 70    he size of the p
01D6F0:  72 6F 67 72 61 6D 20 61 6E 64 20 61 72 65 20 6F    rogram and are o
01D700:  6E 6C 79 20 72 65 71 75 69 72 65 64 20 69 66 20    nly required if 
01D710:  0D 0A 09 79 6F 75 20 77 61 6E 74 20 74 6F 20 64    ...you want to d
01D720:  6F 20 6D 6F 72 65 20 70 6F 77 65 72 66 75 6C 20    o more powerful 
01D730:  74 68 69 6E 67 73 2C 20 73 75 63 68 20 61 73 20    things, such as 
01D740:  66 69 6C 65 0D 0A 09 72 65 64 69 72 65 63 74 69    file...redirecti
01D750:  6F 6E 20 61 6E 64 20 6E 75 6D 62 65 72 20 63 6F    on and number co
01D760:  6E 76 65 72 73 69 6F 6E 2E 20 49 66 20 61 6C 6C    nversion. If all
01D770:  20 79 6F 75 20 77 61 6E 74 20 69 73 20 6E 75 6D     you want is num
01D780:  62 65 72 20 0D 0A 09 63 6F 6E 76 65 72 73 69 6F    ber ...conversio
01D790:  6E 2C 20 53 6D 61 6C 6C 49 4F 20 63 61 6E 20 62    n, SmallIO can b
01D7A0:  65 20 75 73 65 64 20 2A 29 20 0D 0A 0D 0A 56 41    e used *) ....VA
01D7B0:  52 09 50 61 72 73 3A 41 52 52 41 59 5B 30 2E 2E    R.Pars:ARRAY[0..
01D7C0:  33 5D 20 4F 46 20 50 61 72 61 6D 65 74 65 72 3B    3] OF Parameter;
01D7D0:  0D 0A 09 50 61 72 43 6F 75 6E 74 3A 49 4E 54 45    ...ParCount:INTE
01D7E0:  47 45 52 3B 0D 0A 0D 0A 09 28 2A 09 50 61 72 73    GER;.....(*.Pars
01D7F0:  20 69 73 20 61 6E 20 61 72 72 61 79 20 69 6E 74     is an array int
01D800:  52 45 20 47 6F 74 6F 78 79 28 78 2C 79 3A 43 41    RE Gotoxy(x,y:CA
01D810:  52 44 49 4E 41 4C 29 3B 0D 0A 50 52 4F 43 45 44    RDINAL);..PROCED
01D820:  55 52 45 20 52 69 6E 67 42 65 6C 6C 3B 0D 0A 50    URE RingBell;..P
01D830:  52 4F 43 45 44 55 52 45 20 4F 75 74 70 75 74 54    ROCEDURE OutputT
01D840:  6F 53 63 72 65 65 6E 28 62 3A 42 4F 4F 4C 45 41    oScreen(b:BOOLEA
01D850:  4E 29 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 20    N);..PROCEDURE  
01D860:  44 72 61 77 42 6F 78 28 78 31 2C 79 31 2C 78 32    DrawBox(x1,y1,x2
01D870:  2C 79 32 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A    ,y2:CARDINAL);..
01D880:  45 4E 44 20 53 63 72 65 65 6E 44 75 6D 6D 79 2E    END ScreenDummy.
01D890:  0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D8A0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D8B0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D8C0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D8D0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D8E0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D8F0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01D900:  4F 70 65 6E 65 64 3B 0D 0A 09 09 44 6F 4D 65 6E    Opened;....DoMen
01D910:  75 4F 70 3B 09 28 2A 65 78 70 6C 69 63 69 74 20    uOp;.(*explicit 
01D920:  65 78 69 74 20 69 6E 20 74 68 69 73 20 6D 6F 64    exit in this mod
01D930:  75 6C 65 2A 29 0D 0A 09 09 49 46 20 28 69 3D 43    ule*)....IF (i=C
01D940:  75 72 72 65 6E 74 57 69 6E 64 6F 77 29 20 41 4E    urrentWindow) AN
01D950:  44 20 28 57 69 6E 64 6F 77 73 3E 30 29 20 54 48    D (Windows>0) TH
01D960:  45 4E 0D 0A 0D 0A 09 09 09 28 2A 61 66 74 65 72    EN.......(*after
01D970:  20 6D 65 6E 75 2C 20 72 65 64 69 73 70 6C 61 79     menu, redisplay
01D980:  20 77 69 6E 64 6F 77 20 69 6E 20 77 68 69 63 68     window in which
01D990:  20 74 68 65 0D 0A 09 09 09 20 20 77 69 6E 64 6F     the.....  windo
01D9A0:  77 20 70 6F 70 70 65 64 20 75 70 2A 29 0D 0A 0D    w popped up*)...
01D9B0:  0A 09 09 09 44 69 73 70 6C 61 79 46 69 6C 65 28    ....DisplayFile(
01D9C0:  46 69 6C 65 73 5B 6B 5D 2C 69 2C 63 75 72 78 5B    Files[k],i,curx[
01D9D0:  69 5D 2C 63 75 72 79 5B 69 5D 29 3B 0D 0A 09 09    i],cury[i]);....
01D9E0:  09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 20 28 2A    .END;....END; (*
01D9F0:  4C 4F 4F 50 2A 29 0D 0A 0D 0A 09 45 4E 44 20 6D    LOOP*).....END m
01DA00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DA10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DA20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DA30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DA40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DA50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DA60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DA70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DA80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DA90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DAA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DAB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DAC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DAD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DAE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DAF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DB00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DB10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DB20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DB30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DB40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DB50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DB60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DB70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DB80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DB90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DBA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DBB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DBC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DBD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DBE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01DBF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
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 C9 02 00 00 00 02    ......R.........
01DC20:  19 00 C5 02 00 00 00 02 19 00 C1 02 00 00 00 02    ................
01DC30:  19 00 C6 02 00 00 00 02 19 00 C2 02 00 00 00 02    ................
01DC40:  19 00 C7 02 00 00 00 02 19 00 C3 02 00 00 00 02    ................
01DC50:  19 00 C8 02 00 00 00 02 19 00 C4 02 00 00 00 02    ................
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:  44 49 4E 41 4C 29 3B 0D 0A 50 52 4F 43 45 44 55    DINAL);..PROCEDU
01DD10:  52 45 20 4F 75 74 70 75 74 54 6F 53 63 72 65 65    RE OutputToScree
01DD20:  6E 28 54 75 72 6E 4F 6E 3A 42 4F 4F 4C 45 41 4E    n(TurnOn:BOOLEAN
01DD30:  29 3B 0D 0A 0D 0A 28 2A 09 43 61 6C 6C 20 74 68    );....(*.Call th
01DD40:  69 73 20 72 6F 75 74 69 6E 65 20 77 69 74 68 20    is routine with 
01DD50:  46 41 4C 53 45 20 74 6F 20 70 72 65 76 65 6E 74    FALSE to prevent
01DD60:  20 6F 75 74 70 75 74 20 67 6F 69 6E 67 20 74 6F     output going to
01DD70:  20 74 68 65 0D 0A 09 73 63 72 65 65 6E 2E 20 54     the...screen. T
01DD80:  68 69 73 20 61 6C 6C 6F 77 73 20 79 6F 75 20 74    his allows you t
01DD90:  6F 20 73 75 70 70 72 65 73 73 20 6F 75 74 70 75    o suppress outpu
01DDA0:  74 20 77 68 69 6C 65 20 6C 61 72 67 65 20 61 6D    t while large am
01DDB0:  6F 75 6E 74 73 0D 0A 09 6F 66 20 73 63 72 65 65    ounts...of scree
01DDC0:  6E 20 61 6C 74 65 72 61 74 69 6F 6E 73 20 61 72    n alterations ar
01DDD0:  65 20 62 65 69 6E 67 20 6D 61 64 65 20 74 6F 20    e being made to 
01DDE0:  73 70 65 65 64 20 75 70 20 61 20 70 72 6F 67 72    speed up a progr
01DDF0:  61 6D 2E 20 4F 66 0D 0A 09 63 6F 75 72 73 65 2C    am. Of...course,
01DE00:  20 79 6F 75 20 6D 75 73 74 20 72 65 2D 65 6E 61     you must re-ena
01DE10:  62 6C 65 20 73 63 72 65 65 6E 20 6F 75 74 70 75    ble screen outpu
01DE20:  74 20 61 6E 64 20 74 68 65 6E 20 72 65 2D 64 72    t and then re-dr
01DE30:  61 77 20 74 68 65 0D 0A 09 73 63 72 65 65 6E 20    aw the...screen 
01DE40:  6C 61 74 65 72 2E 20 54 68 69 73 20 69 73 20 75    later. This is u
01DE50:  73 65 64 20 62 79 20 74 68 65 20 65 64 69 74 6F    sed by the edito
01DE60:  72 20 74 6F 20 73 75 70 70 72 65 73 73 20 73 63    r to suppress sc
01DE70:  72 65 65 6E 0D 0A 09 61 6C 74 65 72 61 74 69 6F    reen...alteratio
01DE80:  6E 73 20 64 75 72 69 6E 67 20 65 78 65 63 75 74    ns during execut
01DE90:  69 6F 6E 20 6F 66 20 72 65 70 65 61 74 73 20 2A    ion of repeats *
01DEA0:  29 0D 0A 45 4E 44 20 53 63 72 65 65 6E 49 4F 2E    )..END ScreenIO.
01DEB0:  0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01DEC0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01DED0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01DEE0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01DEF0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01DF00:  64 69 6E 61 74 65 73 20 61 6E 64 20 61 66 74 65    dinates and afte
01DF10:  72 20 74 68 65 0D 0A 09 09 09 63 75 72 73 6F 72    r the.....cursor
01DF20:  20 61 64 64 72 65 73 73 20 63 6F 6D 6D 61 6E 64     address command
01DF30:  2E 0D 0A 0D 0A 09 09 4D 6F 76 65 4C 65 66 74 2C    .......MoveLeft,
01DF40:  4D 6F 76 65 52 69 67 68 74 2C 4D 6F 76 65 44 6F    MoveRight,MoveDo
01DF50:  77 6E 2C 4D 6F 76 65 55 70 0D 0A 0D 0A 09 09 09    wn,MoveUp.......
01DF60:  43 75 72 73 6F 72 20 6D 6F 76 65 20 63 6F 6D 6D    Cursor move comm
01DF70:  61 6E 64 73 0D 0A 09 09 2A 29 0D 0A 09 28 2A 09    ands....*)...(*.
01DF80:  59 6F 75 20 73 68 6F 75 6C 64 20 6E 6F 74 20 6E    You should not n
01DF90:  65 65 64 20 74 6F 20 75 73 65 20 74 68 65 20 6E    eed to use the n
01DFA0:  65 78 74 20 66 65 77 20 74 79 70 65 20 64 65 63    ext few type dec
01DFB0:  6C 61 72 61 74 69 6F 6E 73 0D 0A 09 09 54 68 65    larations....The
01DFC0:  79 20 61 72 65 20 69 6E 63 6C 75 64 65 64 20 68    y are included h
01DFD0:  65 72 65 20 66 6F 72 20 75 73 65 20 62 79 20 74    ere for use by t
01DFE0:  68 65 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E    he configuration
01DFF0:  20 70 72 6F 67 72 61 6D 2A 29 0D 0A 0D 0A 0D 0A     program*)......
01E000:  50 52 4F 43 45 44 55 52 45 20 47 6F 74 6F 78 79    PROCEDURE Gotoxy
01E010:  28 78 2C 79 3A 43 41 52 44 49 4E 41 4C 29 3B 09    (x,y:CARDINAL);.
01E020:  09 0D 0A 0D 0A 28 2A 09 09 50 6F 73 69 74 69 6F    .....(*..Positio
01E030:  6E 20 74 6F 20 67 69 76 65 6E 20 63 6F 6F 72 64    n to given coord
01E040:  69 6E 61 74 65 73 0D 0A 09 09 74 6F 70 20 6C 65    inates....top le
01E050:  66 74 20 69 73 20 61 6C 77 61 79 73 20 30 2C 30    ft is always 0,0
01E060:  2C 20 77 68 69 63 68 20 6D 65 61 6E 73 20 74 68    , which means th
01E070:  61 74 0D 0A 09 09 74 68 65 20 62 69 67 67 65 72    at....the bigger
01E080:  20 79 20 69 73 2C 20 74 68 65 20 66 75 72 74 68     y is, the furth
01E090:  65 72 20 64 6F 77 6E 20 74 68 65 20 73 63 72 65    er down the scre
01E0A0:  65 6E 0D 0A 0D 0A 09 09 78 20 69 73 20 63 6F 6C    en......x is col
01E0B0:  75 6D 6E 2C 20 79 20 69 73 20 72 6F 77 0D 0A 0D    umn, y is row...
01E0C0:  0A 09 09 41 20 27 53 74 61 6E 64 61 72 64 27 20    ...A 'Standard' 
01E0D0:  53 63 72 65 65 6E 20 69 73 20 38 30 20 62 79 20    Screen is 80 by 
01E0E0:  32 34 2E 20 54 68 65 20 6C 69 6D 69 74 20 69 73    24. The limit is
01E0F0:  20 73 65 74 20 62 79 0D 0A 09 09 74 68 65 20 74     set by....the t
01E100:  78 3B 0D 0A 45 4E 44 20 53 63 72 65 65 6E 44 75    x;..END ScreenDu
01E110:  6D 6D 79 2E 0D 0A 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A    mmy.............
01E120:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01E130:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01E140:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01E150:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01E160:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01E170:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01E180:  65 20 73 65 6C 65 63 74 65 64 20 65 69 74 68 65    e selected eithe
01E190:  72 20 62 79 20 73 74 72 69 6B 69 6E 67 20 66 69    r by striking fi
01E1A0:  72 73 74 20 63 68 61 72 61 63 74 65 72 20 6F 66    rst character of
01E1B0:  0D 0A 0D 0A 09 6F 70 74 69 6F 6E 20 6F 72 20 62    .....option or b
01E1C0:  79 20 65 6E 74 65 72 69 6E 67 20 6F 70 74 69 6F    y entering optio
01E1D0:  6E 20 6E 6F 20 28 6C 69 6D 69 74 65 64 20 74 6F    n no (limited to
01E1E0:  20 30 2D 39 29 0D 0A 0D 0A 09 6F 70 74 69 6F 6E     0-9).....option
01E1F0:  20 30 20 69 73 20 61 6C 77 61 79 73 20 65 78 69     0 is always exi
01E200:  74 20 77 69 74 68 6F 75 74 20 73 65 6C 65 63 74    t without select
01E210:  69 6F 6E 20 61 73 20 69 73 20 65 73 63 61 70 65    ion as is escape
01E220:  2A 29 0D 0A 0D 0A 54 59 50 45 09 4D 65 6E 75 54    *)....TYPE.MenuT
01E230:  65 78 74 3D 41 52 52 41 59 5B 31 2E 2E 31 31 5D    ext=ARRAY[1..11]
01E240:  20 4F 46 20 43 48 41 52 3B 0D 0A 0D 0A 50 52 4F     OF CHAR;....PRO
01E250:  43 45 44 55 52 45 20 47 65 74 46 72 6F 6D 4D 65    CEDURE GetFromMe
01E260:  6E 75 28 56 41 52 20 54 65 78 74 3A 41 52 52 41    nu(VAR Text:ARRA
01E270:  59 20 4F 46 20 4D 65 6E 75 54 65 78 74 3B 78 2C    Y OF MenuText;x,
01E280:  79 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 09 64    y:CARDINAL;....d
01E290:  65 70 74 68 2C 63 6F 6C 75 6D 6E 73 3A 43 41 52    epth,columns:CAR
01E2A0:  44 49 4E 41 4C 29 3A 43 41 52 44 49 4E 41 4C 3B    DINAL):CARDINAL;
01E2B0:  0D 0A 0D 0A 28 2A 20 09 54 65 78 74 20 69 73 20    ....(* .Text is 
01E2C0:  74 68 65 20 74 65 78 74 20 74 6F 20 64 69 73 70    the text to disp
01E2D0:  6C 61 79 0D 0A 0D 0A 09 78 20 61 6E 64 20 79 20    lay.....x and y 
01E2E0:  61 72 65 20 74 68 65 20 70 6F 73 69 74 69 6F 6E    are the position
01E2F0:  20 66 6F 72 20 74 68 65 20 74 6F 70 20 6C 65 66     for the top lef
01E300:  65 72 6D 69 6E 61 6C 20 64 65 66 69 6E 69 74 69    erminal definiti
01E310:  6F 6E 20 66 69 6C 65 09 2A 29 0D 0A 0D 0A 50 52    on file.*)....PR
01E320:  4F 43 45 44 55 52 45 20 4C 6F 61 64 54 65 72 6D    OCEDURE LoadTerm
01E330:  43 6F 64 65 28 66 69 6C 65 6E 61 6D 65 3A 46 69    Code(filename:Fi
01E340:  6C 65 4E 61 6D 65 29 3B 0D 0A 0D 0A 28 2A 09 09    leName);....(*..
01E350:  4C 6F 61 64 20 74 68 65 20 74 65 72 6D 69 6E 61    Load the termina
01E360:  6C 20 64 65 66 69 6E 69 74 69 6F 6E 20 66 6F 72    l definition for
01E370:  20 74 68 65 20 63 75 72 72 65 6E 74 20 74 65 72     the current ter
01E380:  6D 69 6E 61 6C 0D 0A 0D 0A 09 09 66 69 6C 65 6E    minal......filen
01E390:  61 6D 65 20 69 73 20 74 68 65 20 6E 61 6D 65 20    ame is the name 
01E3A0:  6F 66 20 74 68 65 20 66 69 6C 65 20 74 6F 20 72    of the file to r
01E3B0:  65 61 64 0D 0A 0D 0A 09 09 4E 6F 72 6D 61 6C 6C    ead......Normall
01E3C0:  79 2C 20 77 68 65 6E 20 74 68 65 20 70 72 6F 67    y, when the prog
01E3D0:  72 61 6D 20 69 73 20 6C 6F 61 64 65 64 2C 20 74    ram is loaded, t
01E3E0:  68 65 20 66 69 6C 65 0D 0A 09 09 27 54 45 52 4D    he file....'TERM
01E3F0:  49 4E 41 4C 2E 43 4F 44 27 20 69 73 20 6C 6F 61    INAL.COD' is loa
01E400:  64 65 64 20 66 72 6F 6D 20 74 68 65 20 6C 6F 67    ded from the log
01E410:  67 65 64 20 69 6E 20 64 69 73 63 0D 0A 09 09 54    ged in disc....T
01E420:  68 69 73 20 72 6F 75 74 69 6E 65 20 6F 6E 6C 79    his routine only
01E430:  20 6E 65 65 64 73 20 74 6F 20 62 65 20 75 73 65     needs to be use
01E440:  64 20 69 66 20 74 68 61 74 0D 0A 09 09 66 69 6C    d if that....fil
01E450:  65 20 69 73 20 6E 6F 74 20 74 68 65 20 6F 6E 65    e is not the one
01E460:  20 74 6F 20 75 73 65 20 28 65 67 2C 20 74 6F 20     to use (eg, to 
01E470:  73 77 61 70 20 73 63 72 65 65 6E 73 2A 29 20 0D    swap screens*) .
01E480:  0A 0D 0A 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45    .......PROCEDURE
01E490:  20 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 28 73     ScreenControl(s
01E4A0:  3A 45 64 69 74 73 29 3B 0D 0A 0D 0A 28 2A 09 09    :Edits);....(*..
01E4B0:  50 65 72 66 6F 72 6D 20 61 20 73 63 72 65 65 6E    Perform a screen
01E4C0:  20 63 6F 6E 74 72 6F 6C 20 6F 70 65 72 61 74 69     control operati
01E4D0:  6F 6E 2A 29 0D 0A 0D 0A 50 52 4F 43 45 44 55 52    on*)....PROCEDUR
01E4E0:  45 20 20 44 72 61 77 42 6F 78 28 78 31 2C 79 31    E  DrawBox(x1,y1
01E4F0:  2C 78 32 2C 79 32 3A 43 41 52 44 49 4E 41 4C 29    ,x2,y2:CARDINAL)
01E500:  44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C    DEFINITION MODUL
01E510:  45 20 53 63 72 65 65 6E 49 4F 3B 0D 0A 0D 0A 28    E ScreenIO;....(
01E520:  2A 09 53 63 72 65 65 6E 20 68 61 6E 64 6C 69 6E    *.Screen handlin
01E530:  67 20 72 6F 75 74 69 6E 65 73 20 66 6F 72 20 63    g routines for c
01E540:  75 72 73 6F 72 20 70 6F 73 69 74 69 6F 6E 2C 20    ursor position, 
01E550:  61 74 74 72 69 62 75 74 65 20 65 74 63 0D 0A 0D    attribute etc...
01E560:  0A 09 53 70 65 63 69 66 69 63 20 74 6F 20 74 68    ..Specific to th
01E570:  69 73 20 63 6F 6D 70 69 6C 65 72 2A 29 0D 0A 0D    is compiler*)...
01E580:  0A 46 52 4F 4D 09 53 59 53 54 45 4D 20 49 4D 50    .FROM.SYSTEM IMP
01E590:  4F 52 54 20 42 59 54 45 3B 0D 0A 46 52 4F 4D 09    ORT BYTE;..FROM.
01E5A0:  46 69 6C 65 73 20 49 4D 50 4F 52 54 20 46 69 6C    Files IMPORT Fil
01E5B0:  65 4E 61 6D 65 3B 0D 0A 54 59 50 45 09 45 64 69    eName;..TYPE.Edi
01E5C0:  74 73 3D 28 44 69 6D 2C 42 72 69 67 68 74 2C 4E    ts=(Dim,Bright,N
01E5D0:  6F 72 6D 61 6C 2C 49 6E 76 65 72 73 65 2C 42 6C    ormal,Inverse,Bl
01E5E0:  69 6E 6B 2C 53 74 61 72 74 47 72 61 70 68 2C 45    ink,StartGraph,E
01E5F0:  6E 64 47 72 61 70 68 2C 0D 0A 09 09 44 65 6C 43    ndGraph,....DelC
01E600:  68 61 72 2C 44 65 6C 4C 69 6E 65 2C 49 6E 73 43    har,DelLine,InsC
01E610:  68 61 72 2C 49 6E 73 4C 69 6E 65 2C 44 65 6C 45    har,InsLine,DelE
01E620:  6F 6C 2C 44 65 6C 45 6F 73 2C 43 6C 65 61 72 53    ol,DelEos,ClearS
01E630:  63 72 65 65 6E 2C 0D 0A 09 09 48 6F 72 69 7A 6F    creen,....Horizo
01E640:  6E 74 61 6C 2C 56 65 72 74 69 63 61 6C 2C 43 6F    ntal,Vertical,Co
01E650:  72 6E 65 72 4C 4C 2C 43 6F 72 6E 65 72 55 4C 2C    rnerLL,CornerUL,
01E660:  43 6F 72 6E 65 72 55 52 2C 43 6F 72 6E 65 72 4C    CornerUR,CornerL
01E670:  52 2C 0D 0A 09 09 53 74 61 72 74 78 79 2C 4D 69    R,....Startxy,Mi
01E680:  64 64 6C 65 58 59 2C 45 6E 64 58 59 2C 52 69 6E    ddleXY,EndXY,Rin
01E690:  67 42 65 6C 6C 2C 4D 6F 76 65 4C 65 66 74 2C 4D    gBell,MoveLeft,M
01E6A0:  6F 76 65 52 69 67 68 74 2C 0D 0A 09 09 4D 6F 76    oveRight,....Mov
01E6B0:  65 44 6F 77 6E 2C 4D 6F 76 65 55 70 29 3B 0D 0A    eDown,MoveUp);..
01E6C0:  0D 0A 09 28 2A 09 54 68 65 20 65 64 69 74 74 69    ...(*.The editti
01E6D0:  6E 67 20 6D 6E 65 6D 6F 6E 69 63 73 20 68 61 76    ng mnemonics hav
01E6E0:  65 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20    e the following 
01E6F0:  6D 65 61 6E 69 6E 67 20 0D 0A 0D 0A 09 09 44 69    meaning ......Di
01E700:  3B 0D 0A 0D 0A 28 2A 09 09 64 72 61 77 20 61 20    ;....(*..draw a 
01E710:  62 6F 78 20 66 6F 72 20 61 20 77 69 6E 64 6F 77    box for a window
01E720:  20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E 0D 0A     on the screen..
01E730:  0D 0A 09 09 78 31 2C 79 31 20 20 69 73 20 74 68    ....x1,y1  is th
01E740:  65 20 6C 6F 77 65 72 20 6C 65 66 74 20 63 6F 72    e lower left cor
01E750:  6E 65 72 0D 0A 09 09 78 32 2C 79 32 20 20 69 73    ner....x2,y2  is
01E760:  20 75 70 70 65 72 20 72 69 67 68 74 20 63 6F 72     upper right cor
01E770:  6E 65 72 2A 29 0D 0A 50 52 4F 43 45 44 55 52 45    ner*)..PROCEDURE
01E780:  20 43 6C 69 70 28 78 31 2C 79 31 2C 78 32 2C 79     Clip(x1,y1,x2,y
01E790:  32 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A 28 2A    2:CARDINAL);..(*
01E7A0:  09 09 53 65 74 20 63 6C 69 70 20 62 6F 75 6E 64    ..Set clip bound
01E7B0:  61 72 69 65 73 0D 0A 09 09 75 73 65 64 20 62 79    aries....used by
01E7C0:  20 57 69 6E 64 6F 77 73 20 77 68 65 6E 20 64 72     Windows when dr
01E7D0:  61 77 69 6E 67 20 62 6F 78 65 73 20 73 6F 20 74    awing boxes so t
01E7E0:  68 61 74 20 6F 6E 6C 79 20 74 68 65 0D 0A 09 09    hat only the....
01E7F0:  70 61 72 74 73 20 6F 66 20 74 68 65 20 62 6F 78    parts of the box
01E800:  65 73 20 6D 61 73 6B 65 64 20 61 72 65 20 72 65    es masked are re
01E810:  2D 64 72 61 77 6E 0D 0A 09 09 68 61 73 20 6E 6F    -drawn....has no
01E820:  20 65 66 66 65 63 74 20 65 78 63 65 70 74 20 69     effect except i
01E830:  6E 20 44 72 61 77 42 6F 78 2A 29 0D 0A 56 41 52    n DrawBox*)..VAR
01E840:  09 53 63 72 65 65 6E 44 65 70 74 68 2C 53 63 72    .ScreenDepth,Scr
01E850:  65 65 6E 57 69 64 74 68 3A 43 41 52 44 49 4E 41    eenWidth:CARDINA
01E860:  4C 3B 0D 0A 09 4D 61 64 65 43 68 61 6E 67 65 3A    L;...MadeChange:
01E870:  42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 09 28 2A 09    BOOLEAN;.....(*.
01E880:  43 6F 6E 74 72 6F 6C 20 69 73 20 74 68 65 20 63    Control is the c
01E890:  75 72 72 65 6E 74 20 63 6F 6E 74 72 6F 6C 20 63    urrent control c
01E8A0:  6F 64 65 20 73 65 74 20 66 6F 72 20 74 68 65 20    ode set for the 
01E8B0:  74 65 72 6D 69 6E 61 6C 0D 0A 0D 0A 09 09 4D 61    terminal......Ma
01E8C0:  64 65 43 68 61 6E 67 65 20 69 73 20 54 52 55 45    deChange is TRUE
01E8D0:  20 6F 6E 20 72 65 74 75 72 6E 20 66 72 6F 6D 20     on return from 
01E8E0:  53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 20 69 66    ScreenControl if
01E8F0:  20 74 68 65 20 0D 0A 09 09 72 65 71 75 69 72 65     the ....require
01E900:  6D 2C 42 72 69 67 68 74 2C 4E 6F 72 6D 61 6C 2C    m,Bright,Normal,
01E910:  49 6E 76 65 72 73 65 2C 42 6C 69 6E 6B 0D 0A 0D    Inverse,Blink...
01E920:  0A 09 09 09 45 6E 74 65 72 20 74 68 65 20 67 69    ....Enter the gi
01E930:  76 65 6E 20 6D 6F 64 65 2E 20 4D 6F 64 65 73 20    ven mode. Modes 
01E940:  73 68 6F 75 6C 64 20 6E 6F 74 20 62 65 20 63 6F    should not be co
01E950:  6D 62 69 6E 65 64 0D 0A 09 09 09 61 73 20 74 6F    mbined.....as to
01E960:  6F 20 6D 75 63 68 20 76 61 72 69 61 74 69 6F 6E    o much variation
01E970:  20 65 78 69 73 74 73 20 62 65 74 77 65 65 6E 20     exists between 
01E980:  74 65 72 6D 69 6E 61 6C 73 20 69 6E 0D 0A 09 09    terminals in....
01E990:  09 74 68 69 73 20 61 72 65 61 0D 0A 0D 0A 09 09    .this area......
01E9A0:  53 74 61 72 74 47 72 61 70 68 2C 45 6E 64 47 72    StartGraph,EndGr
01E9B0:  61 70 68 0D 0A 0D 0A 09 09 09 45 6E 74 65 72 20    aph.......Enter 
01E9C0:  61 6E 64 20 65 78 69 74 20 67 72 61 70 68 69 63    and exit graphic
01E9D0:  20 63 68 61 72 61 63 74 65 72 20 73 65 74 20 6D     character set m
01E9E0:  6F 64 65 0D 0A 09 09 09 55 73 65 64 20 66 6F 72    ode.....Used for
01E9F0:  20 64 72 61 77 69 6E 67 20 62 61 72 73 20 61 72     drawing bars ar
01EA00:  6F 75 6E 64 20 77 69 6E 64 6F 77 73 0D 0A 09 09    ound windows....
01EA10:  09 49 66 20 79 6F 75 72 20 74 65 72 6D 69 6E 61    .If your termina
01EA20:  6C 20 63 61 6E 20 64 6F 20 74 68 69 73 20 77 69    l can do this wi
01EA30:  74 68 20 6F 72 64 69 6E 61 72 79 20 63 68 61 72    th ordinary char
01EA40:  61 63 74 65 72 73 2C 0D 0A 09 09 09 73 65 74 20    acters,.....set 
01EA50:  74 68 65 73 65 20 73 65 71 75 65 6E 63 65 73 20    these sequences 
01EA60:  65 6D 70 74 79 20 61 6E 64 20 70 75 74 20 74 68    empty and put th
01EA70:  65 20 72 65 71 75 69 72 65 64 20 0D 0A 09 09 09    e required .....
01EA80:  63 68 61 72 61 63 74 65 72 73 20 69 6E 20 74 68    characters in th
01EA90:  65 20 73 65 71 75 65 6E 63 65 73 20 62 65 6C 6F    e sequences belo
01EAA0:  77 0D 0A 0D 0A 09 09 44 65 6C 43 68 61 72 2C 44    w......DelChar,D
01EAB0:  65 6C 4C 69 6E 65 2C 49 6E 73 43 68 61 72 2C 49    elLine,InsChar,I
01EAC0:  6E 73 4C 69 6E 65 2C 44 65 6C 45 6F 6C 2C 44 65    nsLine,DelEol,De
01EAD0:  6C 45 6F 73 2C 43 6C 65 61 72 53 63 72 65 65 6E    lEos,ClearScreen
01EAE0:  0D 0A 0D 0A 09 09 09 50 65 72 66 6F 72 6D 20 74    .......Perform t
01EAF0:  68 65 20 76 61 72 69 6F 75 73 20 65 64 69 74 74    he various editt
01EB00:  64 20 63 6F 64 65 20 69 73 20 69 6D 70 6C 65 6D    d code is implem
01EB10:  65 6E 74 65 64 2C 20 65 6C 73 65 20 66 61 6C 73    ented, else fals
01EB20:  65 0D 0A 0D 0A 09 09 45 64 69 74 44 69 73 70 20    e......EditDisp 
01EB30:  63 6F 6E 74 61 69 6E 73 20 63 6F 64 65 20 74 6F    contains code to
01EB40:  20 73 69 6D 75 6C 61 74 65 20 73 6F 6D 65 20 63     simulate some c
01EB50:  6F 64 65 73 20 77 68 65 6E 20 74 68 65 79 0D 0A    odes when they..
01EB60:  09 09 61 72 65 20 6E 6F 74 20 69 6D 70 6C 65 6D    ..are not implem
01EB70:  65 6E 74 65 64 2A 29 0D 0A 0D 0A 28 2A 09 4E 65    ented*)....(*.Ne
01EB80:  77 20 72 6F 75 74 69 6E 65 73 20 61 64 64 65 64    w routines added
01EB90:  20 61 74 20 76 65 72 73 69 6F 6E 20 31 2E 30 32     at version 1.02
01EBA0:  0D 0A 0D 0A 09 54 68 65 73 65 20 72 6F 75 74 69    .....These routi
01EBB0:  6E 65 73 20 6D 6F 76 65 20 74 68 65 20 72 65 73    nes move the res
01EBC0:  70 6F 73 69 62 69 6C 74 79 20 66 6F 72 20 73 63    posibilty for sc
01EBD0:  72 6F 6C 6C 69 6E 67 20 77 69 74 68 69 6E 20 61    rolling within a
01EBE0:  20 77 69 6E 64 6F 77 20 66 72 6F 6D 0D 0A 09 45     window from...E
01EBF0:  64 69 74 53 74 61 74 20 74 6F 20 53 63 72 65 65    ditStat to Scree
01EC00:  6E 49 4F 0D 0A 0D 0A 09 54 68 69 73 20 69 73 20    nIO.....This is 
01EC10:  64 6F 6E 65 20 73 6F 20 74 68 61 74 2C 20 77 68    done so that, wh
01EC20:  65 6E 20 77 6F 72 6B 69 6E 67 20 77 69 74 68 20    en working with 
01EC30:  74 68 65 20 6D 65 6D 6F 72 79 20 6D 61 70 70 65    the memory mappe
01EC40:  64 20 76 65 72 73 69 6F 6E 20 6F 66 20 53 63 72    d version of Scr
01EC50:  65 65 6E 49 4F 2C 0D 0A 09 54 68 65 20 42 61 72    eenIO,...The Bar
01EC60:  73 20 6E 65 65 64 20 6E 6F 74 20 6A 75 6D 70 20    s need not jump 
01EC70:  75 70 20 61 6E 64 20 64 6F 77 6E 20 77 68 65 6E    up and down when
01EC80:  20 61 20 77 69 6E 64 6F 77 20 69 73 20 73 63 72     a window is scr
01EC90:  6F 6C 6C 65 64 2A 29 0D 0A 50 52 4F 43 45 44 55    olled*)..PROCEDU
01ECA0:  52 45 20 53 63 72 6F 6C 6C 57 69 6E 64 6F 77 55    RE ScrollWindowU
01ECB0:  70 28 53 74 61 72 74 4C 69 6E 65 2C 45 6E 64 4C    p(StartLine,EndL
01ECC0:  69 6E 65 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A    ine:CARDINAL);..
01ECD0:  50 52 4F 43 45 44 55 52 45 20 53 63 72 6F 6C 6C    PROCEDURE Scroll
01ECE0:  57 69 6E 64 6F 77 44 6F 77 6E 28 53 74 61 72 74    WindowDown(Start
01ECF0:  4C 69 6E 65 2C 45 6E 64 4C 69 6E 65 3A 43 41 52    Line,EndLine:CAR
01ED00:  69 6E 67 20 73 65 71 75 65 6E 63 65 73 0D 0A 09    ing sequences...
01ED10:  09 09 44 65 6C 45 6F 6C 20 64 65 6C 65 74 65 73    ..DelEol deletes
01ED20:  20 66 72 6F 6D 20 75 6E 64 65 72 20 63 75 72 73     from under curs
01ED30:  6F 72 20 74 6F 20 65 6E 64 20 6F 66 20 6C 69 6E    or to end of lin
01ED40:  65 0D 0A 09 09 09 44 65 6C 45 6F 73 20 64 65 6C    e.....DelEos del
01ED50:  65 74 65 73 20 66 72 6F 6D 20 75 6E 64 65 72 20    etes from under 
01ED60:  63 75 72 73 6F 72 20 74 6F 20 65 6E 64 20 6F 66    cursor to end of
01ED70:  20 73 63 72 65 65 6E 0D 0A 09 09 09 43 6C 65 61     screen.....Clea
01ED80:  72 73 63 72 65 65 6E 20 68 6F 6D 65 73 20 74 68    rscreen homes th
01ED90:  65 20 63 75 72 73 6F 72 20 61 73 20 77 65 6C 6C    e cursor as well
01EDA0:  20 28 74 6F 20 74 6F 70 20 6C 65 66 74 29 0D 0A     (to top left)..
01EDB0:  0D 0A 09 09 48 6F 72 69 7A 6F 6E 74 61 6C 2C 56    ....Horizontal,V
01EDC0:  65 72 74 69 63 61 6C 2C 43 6F 72 6E 65 72 4C 4C    ertical,CornerLL
01EDD0:  2C 43 6F 72 6E 65 72 55 4C 2C 43 6F 72 6E 65 72    ,CornerUL,Corner
01EDE0:  55 52 2C 43 6F 72 6E 65 72 4C 52 0D 0A 0D 0A 09    UR,CornerLR.....
01EDF0:  09 09 43 68 61 72 61 63 74 65 72 20 73 65 71 75    ..Character sequ
01EE00:  65 6E 63 65 73 20 74 6F 20 64 72 61 77 20 68 6F    ences to draw ho
01EE10:  72 69 7A 6F 6E 74 61 6C 20 61 6E 64 20 76 65 72    rizontal and ver
01EE20:  74 69 63 61 6C 0D 0A 09 09 09 62 61 72 73 20 61    tical.....bars a
01EE30:  72 6F 75 6E 64 20 77 69 6E 64 6F 77 73 20 61 6E    round windows an
01EE40:  64 20 74 6F 20 64 6F 20 74 68 65 20 63 6F 72 6E    d to do the corn
01EE50:  65 72 73 20 28 6C 6F 77 65 72 20 6C 65 66 74 2C    ers (lower left,
01EE60:  0D 0A 09 09 09 75 70 70 65 72 20 6C 65 66 74 2C    .....upper left,
01EE70:  20 75 70 70 65 72 20 72 69 67 68 74 2C 6C 6F 77     upper right,low
01EE80:  65 72 20 72 69 67 68 74 29 0D 0A 0D 0A 09 09 53    er right)......S
01EE90:  74 61 72 74 78 79 2C 4D 69 64 64 6C 65 58 59 2C    tartxy,MiddleXY,
01EEA0:  45 6E 64 58 59 0D 0A 0D 0A 09 09 09 54 68 65 20    EndXY.......The 
01EEB0:  63 68 61 72 61 63 74 65 72 20 73 65 71 75 65 6E    character sequen
01EEC0:  63 65 73 20 74 6F 20 73 74 61 72 74 20 61 20 63    ces to start a c
01EED0:  75 72 73 6F 72 20 61 64 64 72 65 73 73 0D 0A 09    ursor address...
01EEE0:  09 09 63 6F 6D 6D 61 6E 64 2C 20 66 6F 72 20 62    ..command, for b
01EEF0:  65 74 77 65 65 6E 20 74 68 65 20 63 6F 2D 6F 72    etween the co-or
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 C9 02 00 00 00 02    ......R.........
01EF20:  1A 00 C5 02 00 00 00 02 1A 00 C1 02 00 00 00 02    ................
01EF30:  1A 00 C6 02 00 00 00 02 1A 00 C2 02 00 00 00 02    ................
01EF40:  1A 00 C7 02 00 00 00 02 1A 00 C3 02 00 00 00 02    ................
01EF50:  1A 00 C8 02 00 00 00 02 1A 00 C4 02 00 00 00 02    ................
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:  49 46 20 41 63 74 69 76 65 20 41 4E 44 20 4F 75    IF Active AND Ou
01F010:  74 70 75 74 45 6E 61 62 6C 65 64 20 54 48 45 4E    tputEnabled THEN
01F020:  0D 0A 09 57 49 54 48 20 43 6F 6E 74 72 6F 6C 20    ...WITH Control 
01F030:  44 4F 0D 0A 09 09 47 6F 74 6F 78 79 28 78 31 2C    DO....Gotoxy(x1,
01F040:  79 31 29 3B 0D 0A 09 09 53 63 72 65 65 6E 43 6F    y1);....ScreenCo
01F050:  6E 74 72 6F 6C 28 53 74 61 72 74 47 72 61 70 68    ntrol(StartGraph
01F060:  29 3B 0D 0A 09 09 49 6E 42 6F 75 6E 64 28 78 31    );....InBound(x1
01F070:  2C 79 31 2C 43 6F 72 6E 65 72 4C 4C 29 3B 0D 0A    ,y1,CornerLL);..
01F080:  09 09 46 4F 52 20 69 3A 3D 78 31 2B 31 20 54 4F    ..FOR i:=x1+1 TO
01F090:  20 78 32 2D 31 20 44 4F 20 49 6E 42 6F 75 6E 64     x2-1 DO InBound
01F0A0:  28 69 2C 79 31 2C 48 6F 72 69 7A 6F 6E 74 61 6C    (i,y1,Horizontal
01F0B0:  29 20 45 4E 44 3B 0D 0A 09 09 49 6E 42 6F 75 6E    ) END;....InBoun
01F0C0:  64 28 78 32 2C 79 31 2C 43 6F 72 6E 65 72 4C 52    d(x2,y1,CornerLR
01F0D0:  29 3B 0D 0A 09 09 47 6F 74 6F 78 79 28 78 31 2C    );....Gotoxy(x1,
01F0E0:  79 32 29 3B 0D 0A 09 09 49 6E 42 6F 75 6E 64 28    y2);....InBound(
01F0F0:  78 31 2C 79 32 2C 43 6F 72 6E 65 72 55 4C 29 3B    x1,y2,CornerUL);
01F100:  0D 0A 09 09 46 4F 52 20 69 3A 3D 78 31 2B 31 20    ....FOR i:=x1+1 
01F110:  54 4F 20 78 32 2D 31 20 44 4F 20 49 6E 42 6F 75    TO x2-1 DO InBou
01F120:  6E 64 28 69 2C 79 32 2C 48 6F 72 69 7A 6F 6E 74    nd(i,y2,Horizont
01F130:  61 6C 29 20 45 4E 44 3B 0D 0A 09 09 49 6E 42 6F    al) END;....InBo
01F140:  75 6E 64 28 78 32 2C 79 32 2C 43 6F 72 6E 65 72    und(x2,y2,Corner
01F150:  55 52 29 3B 0D 0A 09 09 46 4F 52 20 69 3A 3D 79    UR);....FOR i:=y
01F160:  32 2B 31 20 54 4F 20 79 31 2D 31 20 20 44 4F 0D    2+1 TO y1-1  DO.
01F170:  0A 09 09 09 47 6F 74 6F 78 79 28 78 32 2C 69 29    ....Gotoxy(x2,i)
01F180:  3B 0D 0A 09 09 09 49 6E 42 6F 75 6E 64 28 78 32    ;.....InBound(x2
01F190:  2C 69 2C 56 65 72 74 69 63 61 6C 29 3B 0D 0A 09    ,i,Vertical);...
01F1A0:  09 09 45 4E 44 3B 0D 0A 09 09 46 4F 52 20 69 3A    ..END;....FOR i:
01F1B0:  3D 79 32 2B 31 20 54 4F 20 79 31 2D 31 20 44 4F    =y2+1 TO y1-1 DO
01F1C0:  0D 0A 09 09 09 47 6F 74 6F 78 79 28 78 31 2C 69    .....Gotoxy(x1,i
01F1D0:  29 3B 0D 0A 09 09 09 49 6E 42 6F 75 6E 64 28 78    );.....InBound(x
01F1E0:  31 2C 69 2C 56 65 72 74 69 63 61 6C 29 3B 0D 0A    1,i,Vertical);..
01F1F0:  09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 28    ...END;....END;(
01F200:  66 66 73 65 74 3B 0D 0A 09 09 09 6A 3A 3D 79 2B    ffset;.....j:=y+
01F210:  58 59 4F 66 66 73 65 74 3B 0D 0A 09 09 45 4C 53    XYOffset;....ELS
01F220:  45 0D 0A 09 09 09 69 3A 3D 79 2B 58 59 4F 66 66    E.....i:=y+XYOff
01F230:  73 65 74 3B 0D 0A 09 09 09 6A 3A 3D 78 2B 58 59    set;.....j:=x+XY
01F240:  4F 66 66 73 65 74 3B 0D 0A 09 09 09 45 4E 44 3B    Offset;.....END;
01F250:  0D 0A 09 09 49 46 20 41 73 63 69 69 20 54 48 45    ....IF Ascii THE
01F260:  4E 20 57 72 69 74 65 41 73 63 69 69 28 69 29 0D    N WriteAscii(i).
01F270:  0A 09 09 45 4C 53 45 20 57 72 69 74 65 28 43 48    ...ELSE Write(CH
01F280:  52 28 69 29 29 20 45 4E 44 3B 0D 0A 09 09 53 63    R(i)) END;....Sc
01F290:  72 65 65 6E 43 6F 6E 74 72 6F 6C 28 4D 69 64 64    reenControl(Midd
01F2A0:  6C 65 58 59 29 3B 0D 0A 09 09 49 46 20 41 73 63    leXY);....IF Asc
01F2B0:  69 69 20 54 48 45 4E 20 57 72 69 74 65 41 73 63    ii THEN WriteAsc
01F2C0:  69 69 28 6A 29 0D 0A 09 09 45 4C 53 45 20 57 72    ii(j)....ELSE Wr
01F2D0:  69 74 65 28 43 48 52 28 6A 29 29 20 45 4E 44 3B    ite(CHR(j)) END;
01F2E0:  0D 0A 09 09 53 63 72 65 65 6E 43 6F 6E 74 72 6F    ....ScreenContro
01F2F0:  6C 28 45 6E 64 58 59 29 3B 0D 0A 09 09 45 4E 44    l(EndXY);....END
01F300:  3B 20 28 2A 57 49 54 48 2A 29 0D 0A 09 49 46 20    ; (*WITH*)...IF 
01F310:  69 6E 67 20 54 48 45 4E 20 53 63 72 65 65 6E 43    ing THEN ScreenC
01F320:  6F 6E 74 72 6F 6C 28 53 74 61 72 74 47 72 61 70    ontrol(StartGrap
01F330:  68 29 20 45 4E 44 3B 0D 0A 09 45 4E 44 28 2A 49    h) END;...END(*I
01F340:  46 2A 29 0D 0A 20 20 20 20 45 4E 44 20 47 6F 74    F*)..    END Got
01F350:  6F 78 79 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52    oxy;....PROCEDUR
01F360:  45 20 4C 6F 61 64 54 65 72 6D 43 6F 64 65 28 66    E LoadTermCode(f
01F370:  69 6C 65 6E 61 6D 65 3A 46 69 6C 65 4E 61 6D 65    ilename:FileName
01F380:  29 3B 0D 0A 56 41 52 09 66 6E 3A 46 49 4C 45 3B    );..VAR.fn:FILE;
01F390:  0D 0A 09 72 65 70 6C 79 3A 49 4E 54 45 47 45 52    ...reply:INTEGER
01F3A0:  3B 0D 0A 0D 0A 28 2A 09 09 64 65 66 69 6E 65 20    ;....(*..define 
01F3B0:  61 20 74 65 6D 70 6F 72 61 72 79 20 61 72 65 61    a temporary area
01F3C0:  20 66 6F 72 20 72 65 61 64 69 6E 67 20 6F 66 20     for reading of 
01F3D0:  66 69 6C 65 0D 0A 09 09 69 74 20 6D 75 73 74 20    file....it must 
01F3E0:  62 65 20 65 71 75 61 6C 20 69 6E 20 73 69 7A 65    be equal in size
01F3F0:  20 74 6F 20 74 68 65 20 73 69 7A 65 20 6F 66 20     to the size of 
01F400:  49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D    IMPLEMENTATION M
01F410:  4F 44 55 4C 45 20 53 63 72 65 65 6E 49 4F 3B 0D    ODULE ScreenIO;.
01F420:  0A 46 52 4F 4D 20 54 65 72 6D 69 6E 61 6C 20 49    .FROM Terminal I
01F430:  4D 50 4F 52 54 20 43 68 61 72 52 6F 75 74 69 6E    MPORT CharRoutin
01F440:  65 2C 43 68 61 72 45 6E 61 62 6C 65 64 3B 0D 0A    e,CharEnabled;..
01F450:  46 52 4F 4D 20 46 69 6C 65 73 20 49 4D 50 4F 52    FROM Files IMPOR
01F460:  54 20 4C 6F 6F 6B 75 70 2C 46 49 4C 45 2C 52 65    T Lookup,FILE,Re
01F470:  61 64 42 6C 6F 63 6B 3B 0D 0A 46 52 4F 4D 20 46    adBlock;..FROM F
01F480:  61 73 74 4D 6F 76 65 20 49 4D 50 4F 52 54 20 4D    astMove IMPORT M
01F490:  6F 76 65 75 70 3B 0D 0A 46 52 4F 4D 20 53 59 53    oveup;..FROM SYS
01F4A0:  54 45 4D 20 49 4D 50 4F 52 54 20 41 44 52 2C 53    TEM IMPORT ADR,S
01F4B0:  49 5A 45 2C 57 4F 52 44 3B 0D 0A 46 52 4F 4D 09    IZE,WORD;..FROM.
01F4C0:  43 50 4D 20 49 4D 50 4F 52 54 20 77 63 63 66 63    CPM IMPORT wccfc
01F4D0:  2C 42 44 4F 53 3B 0D 0A 28 2A 09 53 63 72 65 65    ,BDOS;..(*.Scree
01F4E0:  6E 20 68 61 6E 64 6C 69 6E 67 20 72 6F 75 74 69    n handling routi
01F4F0:  6E 65 73 20 66 6F 72 20 63 75 72 73 6F 72 20 70    nes for cursor p
01F500:  6F 73 69 74 69 6F 6E 2C 20 61 74 74 72 69 62 75    osition, attribu
01F510:  74 65 20 65 74 63 0D 0A 0D 0A 09 54 68 69 73 20    te etc.....This 
01F520:  6D 6F 64 75 6C 65 20 69 73 20 73 70 65 63 69 66    module is specif
01F530:  69 63 20 74 6F 20 74 68 69 73 20 63 6F 6D 70 69    ic to this compi
01F540:  6C 65 72 2A 29 0D 0A 54 59 50 45 0D 0A 09 43 6F    ler*)..TYPE...Co
01F550:  6E 74 72 6F 6C 53 65 71 75 65 6E 63 65 3D 52 45    ntrolSequence=RE
01F560:  43 4F 52 44 0D 0A 09 09 43 68 61 72 73 3A 41 52    CORD....Chars:AR
01F570:  52 41 59 5B 31 2E 2E 37 5D 20 4F 46 20 43 48 41    RAY[1..7] OF CHA
01F580:  52 3B 0D 0A 09 09 53 65 71 4C 65 6E 3A 42 59 54    R;....SeqLen:BYT
01F590:  45 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 0D 0A 0D 0A    E;....END;......
01F5A0:  09 43 6F 6E 74 72 6F 6C 43 6F 64 65 73 3D 52 45    .ControlCodes=RE
01F5B0:  43 4F 52 44 0D 0A 09 09 45 64 69 74 53 65 71 75    CORD....EditSequ
01F5C0:  65 6E 63 65 73 3A 41 52 52 41 59 20 45 64 69 74    ences:ARRAY Edit
01F5D0:  73 20 4F 46 20 43 6F 6E 74 72 6F 6C 53 65 71 75    s OF ControlSequ
01F5E0:  65 6E 63 65 3B 0D 0A 09 09 41 73 63 69 69 3A 42    ence;....Ascii:B
01F5F0:  4F 4F 4C 45 41 4E 3B 20 28 2A 74 72 75 65 20 69    OOLEAN; (*true i
01F600:  63 6F 6E 74 72 6F 6C 2C 20 70 61 64 64 65 64 0D    control, padded.
01F610:  0A 09 09 6F 75 74 20 74 6F 20 61 20 6D 75 6C 74    ...out to a mult
01F620:  69 70 6C 65 20 6F 66 20 31 32 38 20 62 79 74 65    iple of 128 byte
01F630:  73 2A 29 0D 0A 0D 0A 09 62 6C 6F 63 6B 3A 41 52    s*).....block:AR
01F640:  52 41 59 5B 30 2E 2E 31 32 38 2A 28 53 49 5A 45    RAY[0..128*(SIZE
01F650:  28 43 6F 6E 74 72 6F 6C 29 20 44 49 56 20 31 32    (Control) DIV 12
01F660:  38 29 2B 31 32 37 5D 20 4F 46 20 43 48 41 52 3B    8)+127] OF CHAR;
01F670:  0D 0A 0D 0A 28 2A 09 09 4C 6F 61 64 20 74 68 65    ....(*..Load the
01F680:  20 74 65 72 6D 69 6E 61 6C 20 64 65 66 69 6E 69     terminal defini
01F690:  74 69 6F 6E 20 66 6F 72 20 74 68 65 20 63 75 72    tion for the cur
01F6A0:  72 65 6E 74 20 74 65 72 6D 69 6E 61 6C 0D 0A 0D    rent terminal...
01F6B0:  0A 09 09 66 69 6C 65 6E 61 6D 65 20 69 73 20 74    ...filename is t
01F6C0:  68 65 20 6E 61 6D 65 20 6F 66 20 74 68 65 20 66    he name of the f
01F6D0:  69 6C 65 20 74 6F 20 72 65 61 64 0D 0A 0D 0A 09    ile to read.....
01F6E0:  09 4E 6F 72 6D 61 6C 6C 79 2C 20 77 68 65 6E 20    .Normally, when 
01F6F0:  74 68 65 20 70 72 6F 67 72 61 6D 20 69 73 20 6C    the program is l
01F700:  6F 61 64 65 64 2C 20 74 68 65 20 66 69 6C 65 0D    oaded, the file.
01F710:  0A 09 09 27 54 45 52 4D 49 4E 41 4C 2E 43 4F 44    ...'TERMINAL.COD
01F720:  27 20 69 73 20 6C 6F 61 64 65 64 20 66 72 6F 6D    ' is loaded from
01F730:  20 74 68 65 20 6C 6F 67 67 65 64 20 69 6E 20 64     the logged in d
01F740:  69 73 63 0D 0A 09 09 54 68 69 73 20 72 6F 75 74    isc....This rout
01F750:  69 6E 65 20 6F 6E 6C 79 20 6E 65 65 64 73 20 74    ine only needs t
01F760:  6F 20 62 65 20 75 73 65 64 20 69 66 20 74 68 61    o be used if tha
01F770:  74 0D 0A 09 09 66 69 6C 65 20 69 73 20 6E 6F 74    t....file is not
01F780:  20 74 68 65 20 6F 6E 65 20 74 6F 20 75 73 65 20     the one to use 
01F790:  28 65 67 2C 20 74 6F 20 73 77 61 70 20 73 63 72    (eg, to swap scr
01F7A0:  65 65 6E 73 2A 29 20 0D 0A 0D 0A 42 45 47 49 4E    eens*) ....BEGIN
01F7B0:  0D 0A 09 4C 6F 6F 6B 75 70 28 66 6E 2C 66 69 6C    ...Lookup(fn,fil
01F7C0:  65 6E 61 6D 65 2C 72 65 70 6C 79 29 3B 0D 0A 09    ename,reply);...
01F7D0:  49 46 20 72 65 70 6C 79 3C 30 20 54 48 45 4E 20    IF reply<0 THEN 
01F7E0:  41 63 74 69 76 65 3A 3D 46 41 4C 53 45 0D 0A 09    Active:=FALSE...
01F7F0:  45 4C 53 45 0D 0A 09 09 52 65 61 64 42 6C 6F 63    ELSE....ReadBloc
01F800:  66 20 63 6F 2D 6F 72 64 69 6E 61 74 65 73 20 6F    f co-ordinates o
01F810:  75 74 20 6F 75 74 70 75 74 20 61 73 20 0D 0A 09    ut output as ...
01F820:  09 09 09 20 61 73 63 69 69 20 6E 75 6D 62 65 72    ... ascii number
01F830:  73 20 72 61 74 68 65 72 20 74 68 61 6E 20 62 69    s rather than bi
01F840:  6E 61 72 79 2A 29 0D 0A 09 09 43 6F 6C 75 6D 6E    nary*)....Column
01F850:  46 69 72 73 74 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A    First:BOOLEAN;..
01F860:  09 09 41 64 64 72 65 73 73 49 6E 47 72 61 70 68    ..AddressInGraph
01F870:  3A 42 4F 4F 4C 45 41 4E 3B 20 28 2A 74 72 75 65    :BOOLEAN; (*true
01F880:  20 69 66 20 63 61 6E 20 63 68 61 6E 67 65 20 63     if can change c
01F890:  6F 6F 72 64 69 6E 61 74 65 73 0D 0A 09 09 09 09    oordinates......
01F8A0:  09 20 20 69 6E 20 67 72 61 70 68 20 6D 6F 64 65    .  in graph mode
01F8B0:  2A 29 0D 0A 09 09 43 61 72 72 69 61 67 65 52 65    *)....CarriageRe
01F8C0:  74 75 72 6E 3A 42 4F 4F 4C 45 41 4E 3B 20 28 2A    turn:BOOLEAN; (*
01F8D0:  74 72 75 65 20 69 66 20 63 61 72 72 69 61 67 65    true if carriage
01F8E0:  20 72 65 74 75 72 6E 20 72 65 74 75 72 6E 73 20     return returns 
01F8F0:  0D 0A 09 09 09 09 09 20 20 74 6F 20 73 74 61 72    .......  to star
01F900:  74 20 6F 66 20 63 75 72 72 65 6E 74 20 72 6F 77    t of current row
01F910:  2A 29 0D 0A 09 09 53 63 72 65 65 6E 44 65 70 74    *)....ScreenDept
01F920:  68 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 09 53    h:CARDINAL;....S
01F930:  63 72 65 65 6E 57 69 64 74 68 3A 43 41 52 44 49    creenWidth:CARDI
01F940:  4E 41 4C 3B 0D 0A 09 09 58 59 4F 66 66 73 65 74    NAL;....XYOffset
01F950:  3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 09 45 4E    :CARDINAL;....EN
01F960:  44 3B 20 0D 0A 09 09 0D 0A 0D 0A 56 41 52 09 43    D; ........VAR.C
01F970:  6F 6E 74 72 6F 6C 3A 43 6F 6E 74 72 6F 6C 43 6F    ontrol:ControlCo
01F980:  64 65 73 3B 0D 0A 09 41 63 74 69 76 65 3A 42 4F    des;...Active:BO
01F990:  4F 4C 45 41 4E 3B 0D 0A 09 49 6E 47 72 61 70 68    OLEAN;...InGraph
01F9A0:  3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 09 4C 6F 77 78    :BOOLEAN;...Lowx
01F9B0:  2C 48 69 67 68 78 2C 4C 6F 77 79 2C 48 69 67 68    ,Highx,Lowy,High
01F9C0:  79 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 4F 75    y:CARDINAL;...Ou
01F9D0:  74 70 75 74 45 6E 61 62 6C 65 64 3A 42 4F 4F 4C    tputEnabled:BOOL
01F9E0:  45 41 4E 3B 0D 0A 28 2A 50 52 4F 43 45 44 55 52    EAN;..(*PROCEDUR
01F9F0:  45 20 57 72 69 74 65 28 69 3A 43 48 41 52 29 3B    E Write(i:CHAR);
01FA00:  6B 28 66 6E 2C 41 44 52 28 62 6C 6F 63 6B 29 2C    k(fn,ADR(block),
01FA10:  30 2C 53 49 5A 45 28 62 6C 6F 63 6B 29 2C 72 65    0,SIZE(block),re
01FA20:  70 6C 79 29 3B 0D 0A 09 09 41 63 74 69 76 65 3A    ply);....Active:
01FA30:  3D 72 65 70 6C 79 3E 3D 53 49 5A 45 28 43 6F 6E    =reply>=SIZE(Con
01FA40:  74 72 6F 6C 29 3B 0D 0A 09 09 4D 6F 76 65 75 70    trol);....Moveup
01FA50:  28 41 44 52 28 62 6C 6F 63 6B 29 2C 41 44 52 28    (ADR(block),ADR(
01FA60:  43 6F 6E 74 72 6F 6C 29 2C 53 49 5A 45 28 43 6F    Control),SIZE(Co
01FA70:  6E 74 72 6F 6C 29 29 3B 0D 0A 09 09 45 4E 44 3B    ntrol));....END;
01FA80:  0D 0A 09 53 63 72 65 65 6E 57 69 64 74 68 3A 3D    ...ScreenWidth:=
01FA90:  43 6F 6E 74 72 6F 6C 2E 53 63 72 65 65 6E 57 69    Control.ScreenWi
01FAA0:  64 74 68 3B 0D 0A 09 53 63 72 65 65 6E 44 65 70    dth;...ScreenDep
01FAB0:  74 68 3A 3D 43 6F 6E 74 72 6F 6C 2E 53 63 72 65    th:=Control.Scre
01FAC0:  65 6E 44 65 70 74 68 3B 0D 0A 09 45 4E 44 20 4C    enDepth;...END L
01FAD0:  6F 61 64 54 65 72 6D 43 6F 64 65 3B 0D 0A 0D 0A    oadTermCode;....
01FAE0:  50 52 4F 43 45 44 55 52 45 20 53 63 72 65 65 6E    PROCEDURE Screen
01FAF0:  43 6F 6E 74 72 6F 6C 28 73 3A 45 64 69 74 73 29    Control(s:Edits)
01FB00:  3B 0D 0A 0D 0A 28 2A 09 09 50 65 72 66 6F 72 6D    ;....(*..Perform
01FB10:  20 61 20 73 63 72 65 65 6E 20 63 6F 6E 74 72 6F     a screen contro
01FB20:  6C 20 6F 70 65 72 61 74 69 6F 6E 2A 29 0D 0A 56    l operation*)..V
01FB30:  41 52 09 69 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A    AR.i:CARDINAL;..
01FB40:  42 45 47 49 4E 0D 0A 09 49 46 20 41 63 74 69 76    BEGIN...IF Activ
01FB50:  65 20 41 4E 44 20 4F 75 74 70 75 74 45 6E 61 62    e AND OutputEnab
01FB60:  6C 65 64 20 54 48 45 4E 0D 0A 09 09 57 49 54 48    led THEN....WITH
01FB70:  20 43 6F 6E 74 72 6F 6C 2E 45 64 69 74 53 65 71     Control.EditSeq
01FB80:  75 65 6E 63 65 73 5B 73 5D 20 44 4F 0D 0A 09 09    uences[s] DO....
01FB90:  09 4D 61 64 65 43 68 61 6E 67 65 3A 3D 53 65 71    .MadeChange:=Seq
01FBA0:  4C 65 6E 3E 30 3B 0D 0A 09 09 09 46 4F 52 20 69    Len>0;.....FOR i
01FBB0:  3A 3D 31 20 54 4F 20 4F 52 44 28 53 65 71 4C 65    :=1 TO ORD(SeqLe
01FBC0:  6E 29 20 44 4F 20 57 72 69 74 65 28 43 68 61 72    n) DO Write(Char
01FBD0:  73 5B 69 5D 29 20 45 4E 44 3B 0D 0A 09 09 09 45    s[i]) END;.....E
01FBE0:  4E 44 3B 0D 0A 09 09 49 46 20 4E 4F 54 20 43 6F    ND;....IF NOT Co
01FBF0:  6E 74 72 6F 6C 2E 41 64 64 72 65 73 73 49 6E 47    ntrol.AddressInG
01FC00:  0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20 28 69 3E    ..BEGIN...IF (i>
01FC10:  3D 27 20 27 29 20 41 4E 44 20 28 69 3C 3D 27 7A    =' ') AND (i<='z
01FC20:  27 29 20 54 48 45 4E 20 54 65 72 6D 69 6E 61 6C    ') THEN Terminal
01FC30:  2E 57 72 69 74 65 28 69 29 0D 0A 09 45 4C 53 45    .Write(i)...ELSE
01FC40:  20 0D 0A 09 09 54 65 72 6D 69 6E 61 6C 2E 57 72     ....Terminal.Wr
01FC50:  69 74 65 28 27 3C 27 29 3B 0D 0A 09 09 57 72 69    ite('<');....Wri
01FC60:  74 65 48 65 78 28 4F 52 44 28 69 29 2C 33 29 3B    teHex(ORD(i),3);
01FC70:  0D 0A 09 09 54 65 72 6D 69 6E 61 6C 2E 57 72 69    ....Terminal.Wri
01FC80:  74 65 28 27 3E 27 29 3B 0D 0A 09 09 45 4E 44 3B    te('>');....END;
01FC90:  0D 0A 09 45 4E 44 20 57 72 69 74 65 3B 2A 29 0D    ...END Write;*).
01FCA0:  0A 50 52 4F 43 45 44 55 52 45 20 57 72 69 74 65    .PROCEDURE Write
01FCB0:  28 62 3A 43 48 41 52 29 3B 0D 0A 56 41 52 09 69    (b:CHAR);..VAR.i
01FCC0:  3A 49 4E 54 45 47 45 52 3B 09 28 2A 6E 65 65 64    :INTEGER;.(*need
01FCD0:  65 64 20 74 6F 20 61 76 6F 69 64 20 63 6F 6E 66    ed to avoid conf
01FCE0:  6C 69 63 74 20 77 69 74 68 20 67 6C 6F 62 61 6C    lict with global
01FCF0:  2A 29 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20 4F    *)..BEGIN...IF O
01FD00:  75 74 70 75 74 45 6E 61 62 6C 65 64 20 54 48 45    utputEnabled THE
01FD10:  4E 0D 0A 09 09 69 3A 3D 42 44 4F 53 28 77 63 63    N....i:=BDOS(wcc
01FD20:  66 63 2C 57 4F 52 44 28 62 29 29 0D 0A 09 09 45    fc,WORD(b))....E
01FD30:  4E 44 3B 0D 0A 09 45 4E 44 20 57 72 69 74 65 3B    ND;...END Write;
01FD40:  0D 0A 50 52 4F 43 45 44 55 52 45 20 57 72 69 74    ..PROCEDURE Writ
01FD50:  65 41 73 63 69 69 28 69 3A 49 4E 54 45 47 45 52    eAscii(i:INTEGER
01FD60:  29 3B 0D 0A 56 41 52 09 54 65 78 74 3A 41 52 52    );..VAR.Text:ARR
01FD70:  41 59 5B 31 2E 2E 33 5D 20 4F 46 20 43 48 41 52    AY[1..3] OF CHAR
01FD80:  3B 0D 0A 09 6A 2C 6B 3A 49 4E 54 45 47 45 52 3B    ;...j,k:INTEGER;
01FD90:  0D 0A 42 45 47 49 4E 0D 0A 09 6A 3A 3D 33 3B 0D    ..BEGIN...j:=3;.
01FDA0:  0A 09 57 48 49 4C 45 20 28 6A 3E 30 29 20 41 4E    ..WHILE (j>0) AN
01FDB0:  44 20 28 69 3C 3E 30 29 20 44 4F 0D 0A 09 09 6B    D (i<>0) DO....k
01FDC0:  3A 3D 69 20 44 49 56 20 31 30 3B 0D 0A 09 09 54    :=i DIV 10;....T
01FDD0:  65 78 74 5B 6A 5D 3A 3D 43 48 52 28 69 2D 31 30    ext[j]:=CHR(i-10
01FDE0:  2A 6B 2B 4F 52 44 28 27 30 27 29 29 3B 0D 0A 09    *k+ORD('0'));...
01FDF0:  09 69 3A 3D 6B 3B 0D 0A 09 09 6A 3A 3D 6A 2D 31    .i:=k;....j:=j-1
01FE00:  72 61 70 68 20 54 48 45 4E 0D 0A 09 09 09 49 46    raph THEN.....IF
01FE10:  20 73 3D 53 74 61 72 74 47 72 61 70 68 20 54 48     s=StartGraph TH
01FE20:  45 4E 20 49 6E 47 72 61 70 68 3A 3D 54 52 55 45    EN InGraph:=TRUE
01FE30:  0D 0A 09 09 09 45 4C 53 49 46 20 73 3D 45 6E 64    .....ELSIF s=End
01FE40:  47 72 61 70 68 20 54 48 45 4E 20 49 6E 47 72 61    Graph THEN InGra
01FE50:  70 68 3A 3D 46 41 4C 53 45 20 45 4E 44 3B 0D 0A    ph:=FALSE END;..
01FE60:  09 09 09 45 4E 44 3B 0D 0A 09 45 4C 53 45 20 20    ...END;...ELSE  
01FE70:  4D 61 64 65 43 68 61 6E 67 65 3A 3D 46 41 4C 53    MadeChange:=FALS
01FE80:  45 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E 44    E;....END;...END
01FE90:  20 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 3B 0D     ScreenControl;.
01FEA0:  0A 50 52 4F 43 45 44 55 52 45 20 49 6E 42 6F 75    .PROCEDURE InBou
01FEB0:  6E 64 28 78 2C 79 3A 43 41 52 44 49 4E 41 4C 3B    nd(x,y:CARDINAL;
01FEC0:  63 68 3A 45 64 69 74 73 29 3B 0D 0A 42 45 47 49    ch:Edits);..BEGI
01FED0:  4E 0D 0A 09 49 46 20 09 28 78 3E 3D 4C 6F 77 78    N...IF .(x>=Lowx
01FEE0:  29 20 41 4E 44 20 28 78 3C 3D 48 69 67 68 78 29    ) AND (x<=Highx)
01FEF0:  0D 0A 09 20 20 41 4E 44 09 28 79 3E 3D 4C 6F 77    ...  AND.(y>=Low
01FF00:  79 29 20 41 4E 44 20 28 79 3C 3D 48 69 67 68 79    y) AND (y<=Highy
01FF10:  29 20 54 48 45 4E 20 0D 0A 09 09 53 63 72 65 65    ) THEN ....Scree
01FF20:  6E 43 6F 6E 74 72 6F 6C 28 63 68 29 3B 0D 0A 09    nControl(ch);...
01FF30:  09 45 4E 44 0D 0A 09 45 4E 44 20 49 6E 42 6F 75    .END...END InBou
01FF40:  6E 64 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 20    nd;..PROCEDURE  
01FF50:  44 72 61 77 42 6F 78 28 78 31 2C 79 31 2C 78 32    DrawBox(x1,y1,x2
01FF60:  2C 79 32 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A    ,y2:CARDINAL);..
01FF70:  0D 0A 28 2A 09 09 64 72 61 77 20 61 20 62 6F 78    ..(*..draw a box
01FF80:  20 66 6F 72 20 61 20 77 69 6E 64 6F 77 20 6F 6E     for a window on
01FF90:  20 74 68 65 20 73 63 72 65 65 6E 0D 0A 0D 0A 09     the screen.....
01FFA0:  09 78 31 2C 79 31 20 20 69 73 20 74 68 65 20 6C    .x1,y1  is the l
01FFB0:  6F 77 65 72 20 6C 65 66 74 20 63 6F 72 6E 65 72    ower left corner
01FFC0:  0D 0A 09 09 78 32 2C 79 32 20 20 69 73 20 75 70    ....x2,y2  is up
01FFD0:  70 65 72 20 72 69 67 68 74 20 63 6F 72 6E 65 72    per right corner
01FFE0:  2A 29 0D 0A 56 41 52 09 69 3A 43 41 52 44 49 4E    *)..VAR.i:CARDIN
01FFF0:  41 4C 3B 0D 0A 42 45 47 49 4E 0D 0A 20 20 20 20    AL;..BEGIN..    
020000:  3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 46 4F 52 20    ;....END;...FOR 
020010:  6B 3A 3D 6A 2B 31 20 54 4F 20 33 20 44 4F 20 57    k:=j+1 TO 3 DO W
020020:  72 69 74 65 28 54 65 78 74 5B 6B 5D 29 20 45 4E    rite(Text[k]) EN
020030:  44 3B 0D 0A 09 45 4E 44 20 57 72 69 74 65 41 73    D;...END WriteAs
020040:  63 69 69 3B 20 0D 0A 50 52 4F 43 45 44 55 52 45    cii; ..PROCEDURE
020050:  20 47 6F 74 6F 78 79 28 78 2C 79 3A 43 41 52 44     Gotoxy(x,y:CARD
020060:  49 4E 41 4C 29 3B 09 09 0D 0A 0D 0A 28 2A 09 09    INAL);......(*..
020070:  50 6F 73 69 74 69 6F 6E 20 74 6F 20 67 69 76 65    Position to give
020080:  6E 20 63 6F 6F 72 64 69 6E 61 74 65 73 0D 0A 09    n coordinates...
020090:  09 74 6F 70 20 6C 65 66 74 20 69 73 20 61 6C 77    .top left is alw
0200A0:  61 79 73 20 30 2C 30 20 0D 0A 0D 0A 09 09 78 20    ays 0,0 ......x 
0200B0:  69 73 20 63 6F 6C 75 6D 6E 2C 20 79 20 69 73 20    is column, y is 
0200C0:  72 6F 77 0D 0A 0D 0A 09 09 41 20 27 53 74 61 6E    row......A 'Stan
0200D0:  64 61 72 64 27 20 53 63 72 65 65 6E 20 69 73 20    dard' Screen is 
0200E0:  38 30 20 62 79 20 32 34 2E 20 54 68 65 20 6C 69    80 by 24. The li
0200F0:  6D 69 74 20 69 73 20 73 65 74 20 62 79 0D 0A 09    mit is set by...
020100:  09 74 68 65 20 74 65 72 6D 69 6E 61 6C 20 64 65    .the terminal de
020110:  66 69 6E 69 74 69 6F 6E 20 66 69 6C 65 09 2A 29    finition file.*)
020120:  0D 0A 56 41 52 09 69 2C 6A 3A 49 4E 54 45 47 45    ..VAR.i,j:INTEGE
020130:  52 3B 0D 0A 09 69 6E 67 3A 42 4F 4F 4C 45 41 4E    R;...ing:BOOLEAN
020140:  3B 0D 0A 42 45 47 49 4E 0D 0A 20 20 20 20 49 46    ;..BEGIN..    IF
020150:  20 41 63 74 69 76 65 20 41 4E 44 20 4F 75 74 70     Active AND Outp
020160:  75 74 45 6E 61 62 6C 65 64 20 54 48 45 4E 0D 0A    utEnabled THEN..
020170:  09 57 49 54 48 20 43 6F 6E 74 72 6F 6C 20 44 4F    .WITH Control DO
020180:  0D 0A 09 09 69 6E 67 3A 3D 49 6E 47 72 61 70 68    ....ing:=InGraph
020190:  3B 0D 0A 09 09 49 46 20 49 6E 47 72 61 70 68 20    ;....IF InGraph 
0201A0:  54 48 45 4E 20 53 63 72 65 65 6E 43 6F 6E 74 72    THEN ScreenContr
0201B0:  6F 6C 28 45 6E 64 47 72 61 70 68 29 20 45 4E 44    ol(EndGraph) END
0201C0:  3B 0D 0A 09 09 53 63 72 65 65 6E 43 6F 6E 74 72    ;....ScreenContr
0201D0:  6F 6C 28 53 74 61 72 74 78 79 29 3B 0D 0A 09 09    ol(Startxy);....
0201E0:  49 46 20 43 6F 6C 75 6D 6E 46 69 72 73 74 20 54    IF ColumnFirst T
0201F0:  48 45 4E 0D 0A 09 09 09 69 3A 3D 78 2B 58 59 4F    HEN.....i:=x+XYO
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 C9 02 00 00 00 02    ......R.........
020220:  1B 00 C5 02 00 00 00 02 1B 00 C1 02 00 00 00 02    ................
020230:  1B 00 C6 02 00 00 00 02 1B 00 C2 02 00 00 00 02    ................
020240:  1B 00 C7 02 00 00 00 02 1B 00 C3 02 00 00 00 02    ................
020250:  1B 00 C8 02 00 00 00 02 1B 00 C4 02 00 00 00 02    ................
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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0203A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0203B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0203C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0203D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0203E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0203F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0204A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0204B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0204C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0204D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0204E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0204F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020500:  0A 45 4E 44 20 53 65 74 55 70 43 61 6C 6C 2E 0D    .END SetUpCall..
020510:  0A 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
020520:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
020530:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
020540:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
020550:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
020560:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
020570:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
020580:  0A 46 52 4F 4D 09 53 59 53 54 45 4D 20 49 4D 50    .FROM.SYSTEM IMP
020590:  4F 52 54 20 42 59 54 45 3B 0D 0A 46 52 4F 4D 09    ORT BYTE;..FROM.
0205A0:  46 69 6C 65 73 20 49 4D 50 4F 52 54 20 46 69 6C    Files IMPORT Fil
0205B0:  65 4E 61 6D 65 3B 0D 0A 54 59 50 45 09 45 64 69    eName;..TYPE.Edi
0205C0:  74 73 3D 28 44 69 6D 2C 42 72 69 67 68 74 2C 4E    ts=(Dim,Bright,N
0205D0:  6F 72 6D 61 6C 2C 49 6E 76 65 72 73 65 2C 42 6C    ormal,Inverse,Bl
0205E0:  69 6E 6B 2C 53 74 61 72 74 47 72 61 70 68 2C 45    ink,StartGraph,E
0205F0:  6E 64 47 72 61 70 68 2C 0D 0A 09 09 44 65 6C 43    ndGraph,....DelC
020600:  68 61 72 2C 44 65 6C 4C 69 6E 65 2C 49 6E 73 43    har,DelLine,InsC
020610:  68 61 72 2C 49 6E 73 4C 69 6E 65 2C 44 65 6C 45    har,InsLine,DelE
020620:  6F 6C 2C 44 65 6C 45 6F 73 2C 43 6C 65 61 72 53    ol,DelEos,ClearS
020630:  63 72 65 65 6E 2C 0D 0A 09 09 48 6F 72 69 7A 6F    creen,....Horizo
020640:  6E 74 61 6C 2C 56 65 72 74 69 63 61 6C 2C 43 6F    ntal,Vertical,Co
020650:  72 6E 65 72 4C 4C 2C 43 6F 72 6E 65 72 55 4C 2C    rnerLL,CornerUL,
020660:  43 6F 72 6E 65 72 55 52 2C 43 6F 72 6E 65 72 4C    CornerUR,CornerL
020670:  52 2C 0D 0A 09 09 53 74 61 72 74 78 79 2C 4D 69    R,....Startxy,Mi
020680:  64 64 6C 65 58 59 2C 45 6E 64 58 59 2C 52 69 6E    ddleXY,EndXY,Rin
020690:  67 42 65 6C 6C 2C 4D 6F 76 65 4C 65 66 74 2C 4D    gBell,MoveLeft,M
0206A0:  6F 76 65 52 69 67 68 74 2C 0D 0A 09 09 4D 6F 76    oveRight,....Mov
0206B0:  65 44 6F 77 6E 2C 4D 6F 76 65 55 70 29 3B 0D 0A    eDown,MoveUp);..
0206C0:  0D 0A 09 28 2A 09 54 68 65 20 65 64 69 74 74 69    ...(*.The editti
0206D0:  6E 67 20 6D 6E 65 6D 6F 6E 69 63 73 20 68 61 76    ng mnemonics hav
0206E0:  65 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20    e the following 
0206F0:  6D 65 61 6E 69 6E 67 20 0D 0A 0D 0A 09 09 44 69    meaning ......Di
020700:  2A 57 49 54 48 20 43 6F 6E 74 72 6F 6C 2A 29 0D    *WITH Control*).
020710:  0A 09 09 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C    ...ScreenControl
020720:  28 45 6E 64 47 72 61 70 68 29 3B 0D 0A 09 45 4E    (EndGraph);...EN
020730:  44 3B 20 28 2A 49 46 20 41 63 74 69 76 65 2A 29    D; (*IF Active*)
020740:  0D 0A 20 20 20 20 45 4E 44 20 44 72 61 77 42 6F    ..    END DrawBo
020750:  78 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 6C    x;..PROCEDURE Cl
020760:  69 70 28 78 31 2C 79 31 2C 78 32 2C 79 32 3A 43    ip(x1,y1,x2,y2:C
020770:  41 52 44 49 4E 41 4C 29 3B 0D 0A 42 45 47 49 4E    ARDINAL);..BEGIN
020780:  0D 0A 09 4C 6F 77 78 3A 3D 78 31 3B 0D 0A 09 48    ...Lowx:=x1;...H
020790:  69 67 68 78 3A 3D 78 32 3B 0D 0A 09 4C 6F 77 79    ighx:=x2;...Lowy
0207A0:  3A 3D 79 32 3B 0D 0A 09 48 69 67 68 79 3A 3D 79    :=y2;...Highy:=y
0207B0:  31 3B 0D 0A 09 45 4E 44 20 43 6C 69 70 3B 0D 0A    1;...END Clip;..
0207C0:  50 52 4F 43 45 44 55 52 45 20 53 63 72 6F 6C 6C    PROCEDURE Scroll
0207D0:  57 69 6E 64 6F 77 55 70 28 53 74 61 72 74 6F 66    WindowUp(Startof
0207E0:  57 69 6E 64 6F 77 2C 45 6E 64 6F 66 57 69 6E 64    Window,EndofWind
0207F0:  6F 77 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A 42    ow:CARDINAL);..B
020800:  45 47 49 4E 0D 0A 09 47 6F 74 6F 78 79 28 30 2C    EGIN...Gotoxy(0,
020810:  45 6E 64 6F 66 57 69 6E 64 6F 77 29 3B 0D 0A 09    EndofWindow);...
020820:  53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 28 44 65    ScreenControl(De
020830:  6C 4C 69 6E 65 29 3B 0D 0A 09 47 6F 74 6F 78 79    lLine);...Gotoxy
020840:  28 30 2C 53 74 61 72 74 6F 66 57 69 6E 64 6F 77    (0,StartofWindow
020850:  29 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 72    );...ScreenContr
020860:  6F 6C 28 49 6E 73 4C 69 6E 65 29 3B 0D 0A 09 45    ol(InsLine);...E
020870:  4E 44 20 53 63 72 6F 6C 6C 57 69 6E 64 6F 77 55    ND ScrollWindowU
020880:  70 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 53 63    p;..PROCEDURE Sc
020890:  72 6F 6C 6C 57 69 6E 64 6F 77 44 6F 77 6E 28 53    rollWindowDown(S
0208A0:  74 61 72 74 6F 66 57 69 6E 64 6F 77 2C 45 6E 64    tartofWindow,End
0208B0:  6F 66 57 69 6E 64 6F 77 3A 43 41 52 44 49 4E 41    ofWindow:CARDINA
0208C0:  4C 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 47 6F 74    L);..BEGIN...Got
0208D0:  6F 78 79 28 30 2C 53 74 61 72 74 6F 66 57 69 6E    oxy(0,StartofWin
0208E0:  64 6F 77 29 3B 0D 0A 09 53 63 72 65 65 6E 43 6F    dow);...ScreenCo
0208F0:  6E 74 72 6F 6C 28 44 65 6C 4C 69 6E 65 29 3B 0D    ntrol(DelLine);.
020900:  49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D    IMPLEMENTATION M
020910:  4F 44 55 4C 45 20 53 65 74 55 70 43 61 6C 6C 3B    ODULE SetUpCall;
020920:  0D 0A 0D 0A 28 2A 09 53 45 54 20 55 70 20 63 61    ....(*.SET Up ca
020930:  6C 6C 20 70 61 72 61 6D 65 74 65 72 73 20 66 6F    ll parameters fo
020940:  72 20 61 20 70 72 6F 67 72 61 6D 20 61 6E 64 20    r a program and 
020950:  63 68 61 69 6E 20 74 6F 20 69 74 0D 0A 09 2A 29    chain to it...*)
020960:  0D 0A 46 52 4F 4D 09 43 68 61 69 6E 20 49 4D 50    ..FROM.Chain IMP
020970:  4F 52 54 20 4C 6F 61 64 41 6E 64 45 78 65 63 75    ORT LoadAndExecu
020980:  74 65 3B 0D 0A 46 52 4F 4D 09 53 59 53 54 45 4D    te;..FROM.SYSTEM
020990:  20 49 4D 50 4F 52 54 20 42 59 54 45 3B 0D 0A 28     IMPORT BYTE;..(
0209A0:  2A 09 4C 6F 77 20 63 6F 72 65 20 76 61 72 69 61    *.Low core varia
0209B0:  62 6C 65 73 2A 29 0D 0A 56 41 52 09 66 63 62 31    bles*)..VAR.fcb1
0209C0:  5B 35 63 68 5D 3A 66 63 62 3B 0D 0A 09 66 63 62    [5ch]:fcb;...fcb
0209D0:  32 5B 36 63 68 5D 3A 66 63 62 3B 0D 0A 09 63 6F    2[6ch]:fcb;...co
0209E0:  6D 6D 61 6E 64 6C 65 6E 5B 38 30 68 5D 3A 42 59    mmandlen[80h]:BY
0209F0:  54 45 3B 0D 0A 09 63 6F 6D 6D 61 6E 64 5B 38 31    TE;...command[81
020A00:  68 5D 3A 41 52 52 41 59 5B 30 2E 2E 38 30 5D 20    h]:ARRAY[0..80] 
020A10:  4F 46 20 43 48 41 52 3B 0D 0A 09 69 2C 6A 3A 49    OF CHAR;...i,j:I
020A20:  4E 54 45 47 45 52 3B 0D 0A 50 52 4F 43 45 44 55    NTEGER;..PROCEDU
020A30:  52 45 20 4D 61 6B 65 43 61 6C 6C 28 70 72 6F 67    RE MakeCall(prog
020A40:  6E 61 6D 65 3A 41 52 52 41 59 20 4F 46 20 43 48    name:ARRAY OF CH
020A50:  41 52 3B 56 41 52 20 66 3A 66 63 62 29 3B 0D 0A    AR;VAR f:fcb);..
020A60:  42 45 47 49 4E 0D 0A 20 09 66 63 62 31 3A 3D 66    BEGIN.. .fcb1:=f
020A70:  3B 0D 0A 09 66 63 62 32 2E 66 63 62 64 6E 3A 3D    ;...fcb2.fcbdn:=
020A80:  30 3B 0D 0A 09 66 63 62 32 2E 66 63 62 66 6E 5B    0;...fcb2.fcbfn[
020A90:  31 5D 3A 3D 27 20 27 3B 0D 0A 09 28 2A 73 65 74    1]:=' ';...(*set
020AA0:  20 75 70 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65     up command line
020AB0:  2A 29 0D 0A 0D 0A 09 69 3A 3D 30 3B 0D 0A 09 6A    *).....i:=0;...j
020AC0:  3A 3D 31 3B 0D 0A 09 49 46 20 66 63 62 31 2E 66    :=1;...IF fcb1.f
020AD0:  63 62 64 6E 3C 3E 30 20 54 48 45 4E 0D 0A 09 09    cbdn<>0 THEN....
020AE0:  63 6F 6D 6D 61 6E 64 5B 69 5D 3A 3D 43 48 52 28    command[i]:=CHR(
020AF0:  4F 52 44 28 66 63 62 31 2E 66 63 62 64 6E 29 2B    ORD(fcb1.fcbdn)+
020B00:  0A 09 47 6F 74 6F 78 79 28 30 2C 45 6E 64 6F 66    ..Gotoxy(0,Endof
020B10:  57 69 6E 64 6F 77 29 3B 20 20 20 0D 0A 09 53 63    Window);   ...Sc
020B20:  72 65 65 6E 43 6F 6E 74 72 6F 6C 28 49 6E 73 4C    reenControl(InsL
020B30:  69 6E 65 29 3B 0D 0A 09 53 63 72 65 65 6E 43 6F    ine);...ScreenCo
020B40:  6E 74 72 6F 6C 28 44 65 6C 45 6F 6C 29 3B 20 20    ntrol(DelEol);  
020B50:  20 0D 0A 09 45 4E 44 20 53 63 72 6F 6C 6C 57 69     ...END ScrollWi
020B60:  6E 64 6F 77 44 6F 77 6E 3B 0D 0A 0D 0A 28 2A 09    ndowDown;....(*.
020B70:  43 75 72 73 6F 72 20 62 6C 69 6E 6B 20 72 6F 75    Cursor blink rou
020B80:  74 69 6E 65 20 2D 20 6F 6E 6C 79 20 73 75 70 70    tine - only supp
020B90:  6F 72 74 65 64 20 69 6E 20 6D 65 6D 6F 72 79 20    orted in memory 
020BA0:  6D 61 70 70 65 64 0D 0A 09 76 65 72 73 69 6F 6E    mapped...version
020BB0:  20 6F 66 20 73 63 72 65 65 6E 69 6F 2A 29 0D 0A     of screenio*)..
020BC0:  50 52 4F 43 45 44 55 52 45 20 4F 75 74 70 75 74    PROCEDURE Output
020BD0:  54 6F 53 63 72 65 65 6E 28 4F 6E 3A 42 4F 4F 4C    ToScreen(On:BOOL
020BE0:  45 41 4E 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 4F    EAN);..BEGIN...O
020BF0:  75 74 70 75 74 45 6E 61 62 6C 65 64 3A 3D 4F 6E    utputEnabled:=On
020C00:  0D 0A 09 45 4E 44 20 4F 75 74 70 75 74 54 6F 53    ...END OutputToS
020C10:  63 72 65 65 6E 3B 09 0D 0A 0D 0A 42 45 47 49 4E    creen;.....BEGIN
020C20:  09 28 2A 49 6E 69 74 69 61 6C 69 73 61 74 69 6F    .(*Initialisatio
020C30:  6E 20 70 61 72 74 2A 29 0D 0A 09 43 68 61 72 52    n part*)...CharR
020C40:  6F 75 74 69 6E 65 3A 3D 57 72 69 74 65 3B 0D 0A    outine:=Write;..
020C50:  09 43 68 61 72 45 6E 61 62 6C 65 64 3A 3D 54 52    .CharEnabled:=TR
020C60:  55 45 3B 09 0D 0A 0D 0A 09 49 6E 47 72 61 70 68    UE;......InGraph
020C70:  3A 3D 46 41 4C 53 45 3B 0D 0A 09 4F 75 74 70 75    :=FALSE;...Outpu
020C80:  74 45 6E 61 62 6C 65 64 3A 3D 54 52 55 45 3B 0D    tEnabled:=TRUE;.
020C90:  0A 09 4C 6F 61 64 54 65 72 6D 43 6F 64 65 28 27    ..LoadTermCode('
020CA0:  43 4F 4E 54 52 4F 4C 2E 44 41 54 27 29 3B 0D 0A    CONTROL.DAT');..
020CB0:  09 4C 6F 77 78 3A 3D 30 3B 4C 6F 77 79 3A 3D 30    .Lowx:=0;Lowy:=0
020CC0:  3B 0D 0A 09 48 69 67 68 78 3A 3D 39 39 39 3B 48    ;...Highx:=999;H
020CD0:  69 67 68 79 3A 3D 39 39 39 3B 0D 0A 09 53 63 72    ighy:=999;...Scr
020CE0:  65 65 6E 57 69 64 74 68 3A 3D 43 6F 6E 74 72 6F    eenWidth:=Contro
020CF0:  6C 2E 53 63 72 65 65 6E 57 69 64 74 68 3B 0D 0A    l.ScreenWidth;..
020D00:  4F 52 44 28 27 41 27 29 2D 31 29 3B 0D 0A 09 09    ORD('A')-1);....
020D10:  49 4E 43 28 69 29 3B 0D 0A 09 09 63 6F 6D 6D 61    INC(i);....comma
020D20:  6E 64 5B 69 5D 3A 3D 27 3A 27 3B 0D 0A 09 09 49    nd[i]:=':';....I
020D30:  4E 43 28 69 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A    NC(i);....END;..
020D40:  09 57 48 49 4C 45 20 28 6A 3C 3D 38 29 20 41 4E    .WHILE (j<=8) AN
020D50:  44 20 28 66 63 62 31 2E 66 63 62 66 6E 5B 6A 5D    D (fcb1.fcbfn[j]
020D60:  3C 3E 27 20 27 29 20 44 4F 0D 0A 09 09 63 6F 6D    <>' ') DO....com
020D70:  6D 61 6E 64 5B 69 5D 3A 3D 66 63 62 31 2E 66 63    mand[i]:=fcb1.fc
020D80:  62 66 6E 5B 6A 5D 3B 0D 0A 09 09 49 4E 43 28 69    bfn[j];....INC(i
020D90:  29 3B 0D 0A 09 09 49 4E 43 28 6A 29 3B 0D 0A 09    );....INC(j);...
020DA0:  09 45 4E 44 3B 0D 0A 09 6A 3A 3D 31 3B 0D 0A 09    .END;...j:=1;...
020DB0:  63 6F 6D 6D 61 6E 64 5B 69 5D 3A 3D 27 2E 27 3B    command[i]:='.';
020DC0:  0D 0A 09 49 4E 43 28 69 29 3B 0D 0A 09 57 48 49    ...INC(i);...WHI
020DD0:  4C 45 20 28 6A 3C 3D 33 29 20 41 4E 44 20 28 66    LE (j<=3) AND (f
020DE0:  2E 66 63 62 66 74 5B 6A 5D 3C 3E 27 20 27 29 20    .fcbft[j]<>' ') 
020DF0:  44 4F 0D 0A 09 09 63 6F 6D 6D 61 6E 64 5B 69 5D    DO....command[i]
020E00:  3A 3D 66 63 62 31 2E 66 63 62 66 74 5B 6A 5D 3B    :=fcb1.fcbft[j];
020E10:  0D 0A 09 09 49 4E 43 28 69 29 3B 0D 0A 09 09 49    ....INC(i);....I
020E20:  4E 43 28 6A 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A    NC(j);....END;..
020E30:  09 6A 3A 3D 30 3B 0D 0A 09 57 48 49 4C 45 20 28    .j:=0;...WHILE (
020E40:  6A 3C 3D 48 49 47 48 28 70 72 6F 67 6E 61 6D 65    j<=HIGH(progname
020E50:  29 29 20 41 4E 44 20 28 70 72 6F 67 6E 61 6D 65    )) AND (progname
020E60:  5B 6A 5D 3C 3E 27 5B 27 29 20 44 4F 20 49 4E 43    [j]<>'[') DO INC
020E70:  28 6A 29 20 45 4E 44 3B 0D 0A 09 49 46 20 28 6A    (j) END;...IF (j
020E80:  3C 48 49 47 48 28 70 72 6F 67 6E 61 6D 65 29 29    <HIGH(progname))
020E90:  20 54 48 45 4E 20 0D 0A 09 09 63 6F 6D 6D 61 6E     THEN ....comman
020EA0:  64 5B 69 5D 3A 3D 27 5B 27 3B 0D 0A 09 09 49 4E    d[i]:='[';....IN
020EB0:  43 28 69 29 3B 0D 0A 09 09 63 6F 6D 6D 61 6E 64    C(i);....command
020EC0:  5B 69 5D 3A 3D 70 72 6F 67 6E 61 6D 65 5B 6A 2B    [i]:=progname[j+
020ED0:  31 5D 3B 0D 0A 09 09 49 4E 43 28 69 29 3B 0D 0A    1];....INC(i);..
020EE0:  09 09 45 4E 44 3B 0D 0A 09 63 6F 6D 6D 61 6E 64    ..END;...command
020EF0:  6C 65 6E 3A 3D 69 3B 0D 0A 09 66 2E 66 63 62 66    len:=i;...f.fcbf
020F00:  09 53 63 72 65 65 6E 44 65 70 74 68 3A 3D 43 6F    .ScreenDepth:=Co
020F10:  6E 74 72 6F 6C 2E 53 63 72 65 65 6E 44 65 70 74    ntrol.ScreenDept
020F20:  68 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 72    h;...ScreenContr
020F30:  6F 6C 28 43 6C 65 61 72 53 63 72 65 65 6E 29 3B    ol(ClearScreen);
020F40:  0D 0A 09 45 4E 44 20 53 63 72 65 65 6E 49 4F 2E    ...END ScreenIO.
020F50:  0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
020F60:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
020F70:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
020F80:  45 4E 44 3B 0D 0A 09 09 09 09 73 65 74 63 75 72    END;......setcur
020F90:  70 6F 73 28 66 29 3B 0D 0A 09 09 09 09 45 4E 44    pos(f);......END
020FA0:  3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E    ;.....END;....EN
020FB0:  44 3B 0D 0A 09 73 61 76 65 63 75 72 70 6F 73 28    D;...savecurpos(
020FC0:  66 29 3B 0D 0A 09 52 45 54 55 52 4E 20 46 41 4C    f);...RETURN FAL
020FD0:  53 45 3B 0D 0A 09 45 4E 44 20 46 69 6E 64 53 74    SE;...END FindSt
020FE0:  72 69 6E 67 3B 0D 0A 28 2A 09 41 63 74 75 61 6C    ring;..(*.Actual
020FF0:  6C 79 20 66 69 6E 64 20 74 68 65 20 6E 65 78 74    ly find the next
021000:  20 6F 63 63 75 72 72 65 6E 63 65 20 6F 66 20 74     occurrence of t
021010:  68 65 20 73 74 72 69 6E 67 09 0D 0A 0D 0A 09 44    he string......D
021020:  6F 6E 65 20 72 65 74 75 72 6E 73 20 74 72 75 65    one returns true
021030:  20 69 66 20 6F 6E 65 20 69 73 20 66 6F 75 6E 64     if one is found
021040:  2A 29 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 61    *)..PROCEDURE Ca
021050:  6C 6C 57 69 74 68 46 69 6C 65 28 4E 61 6D 65 3A    llWithFile(Name:
021060:  41 52 52 41 59 20 4F 46 20 43 48 41 52 3B 56 41    ARRAY OF CHAR;VA
021070:  52 20 66 3A 45 64 69 74 46 69 6C 65 29 3B 0D 0A    R f:EditFile);..
021080:  42 45 47 49 4E 0D 0A 09 4D 61 6B 65 43 61 6C 6C    BEGIN...MakeCall
021090:  28 4E 61 6D 65 2C 66 2E 66 2E 66 29 3B 0D 0A 09    (Name,f.f.f);...
0210A0:  45 4E 44 20 43 61 6C 6C 57 69 74 68 46 69 6C 65    END CallWithFile
0210B0:  3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 46 69 6C    ;..PROCEDURE Fil
0210C0:  65 54 79 70 65 28 56 41 52 20 66 3A 45 64 69 74    eType(VAR f:Edit
0210D0:  46 69 6C 65 29 3A 43 41 52 44 49 4E 41 4C 3B 0D    File):CARDINAL;.
0210E0:  0A 42 45 47 49 4E 0D 0A 09 49 46 20 66 2E 66 2E    .BEGIN...IF f.f.
0210F0:  66 2E 66 63 62 66 74 3D 27 4D 4F 44 27 20 54 48    f.fcbft='MOD' TH
021100:  6E 3A 3D 27 20 20 20 20 20 20 20 20 27 3B 0D 0A    n:='        ';..
021110:  09 46 4F 52 20 69 3A 3D 30 20 54 4F 20 6A 2D 31    .FOR i:=0 TO j-1
021120:  20 44 4F 0D 0A 09 09 66 2E 66 63 62 66 6E 5B 69     DO....f.fcbfn[i
021130:  2B 31 5D 3A 3D 70 72 6F 67 6E 61 6D 65 5B 69 5D    +1]:=progname[i]
021140:  3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 66 2E 66 63    ;....END;...f.fc
021150:  62 66 74 3A 3D 27 43 4F 4D 27 3B 0D 0A 09 66 2E    bft:='COM';...f.
021160:  66 63 62 64 6E 3A 3D 30 3B 0D 0A 09 66 2E 66 63    fcbdn:=0;...f.fc
021170:  62 65 78 3A 3D 30 3B 0D 0A 09 66 2E 66 63 62 63    bex:=0;...f.fcbc
021180:  72 3A 3D 30 3B 0D 0A 09 4C 6F 61 64 41 6E 64 45    r:=0;...LoadAndE
021190:  78 65 63 75 74 65 28 66 29 3B 0D 0A 09 45 4E 44    xecute(f);...END
0211A0:  20 4D 61 6B 65 43 61 6C 6C 3B 09 0D 0A 45 4E 44     MakeCall;...END
0211B0:  20 53 65 74 55 70 43 61 6C 6C 2E 0D 0A 0D 0A 1A     SetUpCall......
0211C0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0211D0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0211E0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0211F0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
021200:  64 65 64 20 66 72 6F 6D 20 74 68 65 20 6C 6F 67    ded from the log
021210:  67 65 64 20 69 6E 20 64 69 73 63 0D 0A 09 09 54    ged in disc....T
021220:  68 69 73 20 72 6F 75 74 69 6E 65 20 6F 6E 6C 79    his routine only
021230:  20 6E 65 65 64 73 20 74 6F 20 62 65 20 75 73 65     needs to be use
021240:  64 20 69 66 20 74 68 61 74 0D 0A 09 09 66 69 6C    d if that....fil
021250:  65 20 69 73 20 6E 6F 74 20 74 68 65 20 6F 6E 65    e is not the one
021260:  20 74 6F 20 75 73 65 20 28 65 67 2C 20 74 6F 20     to use (eg, to 
021270:  73 77 61 70 20 73 63 72 65 65 6E 73 2A 29 20 0D    swap screens*) .
021280:  0A 0D 0A 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45    .......PROCEDURE
021290:  20 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 28 73     ScreenControl(s
0212A0:  3A 45 64 69 74 73 29 3B 0D 0A 0D 0A 28 2A 09 09    :Edits);....(*..
0212B0:  50 65 72 66 6F 72 6D 20 61 20 73 63 72 65 65 6E    Perform a screen
0212C0:  20 63 6F 6E 74 72 6F 6C 20 6F 70 65 72 61 74 69     control operati
0212D0:  6F 6E 2A 29 0D 0A 0D 0A 50 52 4F 43 45 44 55 52    on*)....PROCEDUR
0212E0:  45 20 20 44 72 61 77 42 6F 78 28 78 31 2C 79 31    E  DrawBox(x1,y1
0212F0:  2C 78 32 2C 79 32 3A 43 41 52 44 49 4E 41 4C 29    ,x2,y2:CARDINAL)
021300:  44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C    DEFINITION MODUL
021310:  45 20 53 65 74 55 70 43 61 6C 6C 3B 0D 0A 0D 0A    E SetUpCall;....
021320:  28 2A 09 53 45 54 20 55 70 20 63 61 6C 6C 20 70    (*.SET Up call p
021330:  61 72 61 6D 65 74 65 72 73 20 66 6F 72 20 61 20    arameters for a 
021340:  70 72 6F 67 72 61 6D 20 61 6E 64 20 63 68 61 69    program and chai
021350:  6E 20 74 6F 20 69 74 0D 0A 0D 0A 09 54 68 69 73    n to it.....This
021360:  20 6D 6F 64 75 6C 65 20 69 73 20 75 73 65 64 20     module is used 
021370:  62 79 20 74 68 65 20 65 64 69 74 6F 72 20 66 6F    by the editor fo
021380:  72 20 63 61 6C 6C 69 6E 67 20 74 68 65 0D 0A 09    r calling the...
021390:  63 6F 6D 70 69 6C 65 72 73 2E 0D 0A 0D 0A 09 54    compilers......T
0213A0:  68 65 20 73 65 63 6F 6E 64 20 70 61 72 61 6D 65    he second parame
0213B0:  74 65 72 20 69 73 20 74 68 65 20 66 63 62 20 66    ter is the fcb f
0213C0:  6F 72 20 74 68 65 20 66 69 6C 65 20 77 68 69 63    or the file whic
0213D0:  68 20 69 73 20 74 6F 20 62 65 20 63 6F 6D 70 69    h is to be compi
0213E0:  6C 65 64 0D 0A 0D 0A 09 49 74 20 77 69 6C 6C 20    led.....It will 
0213F0:  62 65 20 73 65 74 20 75 70 20 6F 6E 20 74 68 65    be set up on the
021400:  20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 20 61 73     command line as
021410:  20 61 20 70 61 72 61 6D 65 74 65 72 2E 20 49 74     a parameter. It
021420:  20 77 69 6C 6C 20 62 65 20 66 6F 6C 6C 6F 77 65     will be followe
021430:  64 0D 0A 09 62 79 20 2F 45 20 61 73 20 61 6E 20    d...by /E as an 
021440:  6F 70 74 69 6F 6E 2E 0D 0A 0D 0A 09 49 66 20 74    option......If t
021450:  68 69 73 20 69 73 20 74 6F 6F 20 63 6C 65 76 65    his is too cleve
021460:  72 20 66 6F 72 20 79 6F 75 72 20 72 65 71 75 69    r for your requi
021470:  72 65 6D 65 6E 74 73 2C 20 79 6F 75 20 63 6F 75    rements, you cou
021480:  6C 64 20 75 73 65 20 74 68 65 20 6D 6F 64 75 6C    ld use the modul
021490:  65 0D 0A 09 27 43 68 61 69 6E 27 20 64 69 72 65    e...'Chain' dire
0214A0:  63 74 6C 79 2E 0D 0A 09 2A 29 0D 0A 0D 0A 46 52    ctly....*)....FR
0214B0:  4F 4D 20 09 43 50 4D 20 49 4D 50 4F 52 54 20 66    OM .CPM IMPORT f
0214C0:  63 62 2C 61 6C 66 61 3B 0D 0A 50 52 4F 43 45 44    cb,alfa;..PROCED
0214D0:  55 52 45 20 4D 61 6B 65 43 61 6C 6C 28 70 72 6F    URE MakeCall(pro
0214E0:  67 6E 61 6D 65 3A 41 52 52 41 59 20 4F 46 20 43    gname:ARRAY OF C
0214F0:  48 41 52 3B 56 41 52 20 66 3A 66 63 62 29 3B 0D    HAR;VAR f:fcb);.
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 C9 02 00 00 00 02    ......R.........
021520:  1C 00 C5 02 00 00 00 02 1C 00 C1 02 00 00 00 02    ................
021530:  1C 00 C6 02 00 00 00 02 1C 00 C2 02 00 00 00 02    ................
021540:  1C 00 C7 02 00 00 00 02 1C 00 C3 02 00 00 00 02    ................
021550:  1C 00 C8 02 00 00 00 02 1C 00 C4 02 00 00 00 02    ................
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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0216A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0216B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0216C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0216D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0216E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0216F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0217A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0217B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0217C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0217D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0217E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0217F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0218A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0218B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0218C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0218D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0218E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0218F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0219A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0219B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0219C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0219D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0219E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0219F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021A00:  6D 64 20 73 63 72 65 65 6E 69 6F 2E 64 65 66 0D    md screenio.def.
021A10:  0A 6D 64 20 73 63 72 65 65 6E 64 75 2E 64 65 66    .md screendu.def
021A20:  0D 0A 6D 64 20 72 65 73 65 74 64 69 73 2E 64 65    ..md resetdis.de
021A30:  66 0D 0A 6D 32 20 73 63 72 65 65 6E 69 6F 2E 6D    f..m2 screenio.m
021A40:  6F 64 0D 0A 6D 64 20 6D 61 6B 65 65 64 69 74 2E    od..md makeedit.
021A50:  64 65 66 0D 0A 6D 64 20 65 64 69 74 73 74 61 74    def..md editstat
021A60:  2E 64 65 66 0D 0A 6D 32 20 6D 61 6B 65 65 64 69    .def..m2 makeedi
021A70:  74 2E 6D 6F 64 0D 0A 6D 64 20 65 64 69 74 63 6F    t.mod..md editco
021A80:  6E 74 2E 64 65 66 0D 0A 6D 64 20 6D 61 63 72 6F    nt.def..md macro
021A90:  73 2E 64 65 66 0D 0A 6D 64 20 6D 65 6E 75 2E 64    s.def..md menu.d
021AA0:  65 66 0D 0A 6D 64 20 64 6F 6D 65 6E 75 2E 64 65    ef..md domenu.de
021AB0:  66 0D 0A 6D 64 20 65 64 69 74 64 69 73 70 2E 64    f..md editdisp.d
021AC0:  65 66 0D 0A 6D 64 20 73 65 74 75 70 63 61 6C 2E    ef..md setupcal.
021AD0:  64 65 66 0D 0A 6D 64 20 65 64 69 74 63 6F 6E 74    def..md editcont
021AE0:  2E 64 65 66 0D 0A 6D 64 20 6B 65 79 62 6F 61 72    .def..md keyboar
021AF0:  64 2E 64 65 66 0D 0A 6D 32 20 6D 65 6E 75 2E 6D    d.def..m2 menu.m
021B00:  6F 64 0D 0A 6D 32 20 65 64 69 74 73 74 61 74 2E    od..m2 editstat.
021B10:  6D 6F 64 0D 0A 6D 32 20 6D 61 63 72 6F 73 2E 6D    mod..m2 macros.m
021B20:  6F 64 0D 0A 6D 32 20 64 6F 6D 65 6E 75 2E 6D 6F    od..m2 domenu.mo
021B30:  64 0D 0A 6D 32 20 65 64 69 74 64 69 73 70 2E 6D    d..m2 editdisp.m
021B40:  6F 64 0D 0A 6D 32 20 65 64 69 74 63 6F 6E 74 2E    od..m2 editcont.
021B50:  6D 6F 64 0D 0A 6D 32 20 6D 65 2E 6D 6F 64 0D 0A    mod..m2 me.mod..
021B60:  6D 32 20 73 63 72 65 65 6E 64 75 2E 6D 6F 64 0D    m2 screendu.mod.
021B70:  0A 6D 32 20 72 65 73 65 74 64 69 73 2E 6D 6F 64    .m2 resetdis.mod
021B80:  0D 0A 6D 32 20 6B 65 79 62 6F 61 72 64 2E 6D 6F    ..m2 keyboard.mo
021B90:  64 0D 0A 6D 32 20 73 65 74 75 70 63 61 6C 2E 6D    d..m2 setupcal.m
021BA0:  6F 64 0D 0A 6D 32 20 6D 61 63 72 6F 73 2E 6D 6F    od..m2 macros.mo
021BB0:  64 0D 0A 6D 32 20 6D 61 6B 65 65 64 69 74 2E 6D    d..m2 makeedit.m
021BC0:  6F 64 0D 0A 6D 32 20 6D 65 2E 6D 6F 64 0D 0A 6D    od..m2 me.mod..m
021BD0:  6C 20 6D 65 2F 64 0D 0A 1A 65 2E 6D 6F 64 0D 0A    l me/d...e.mod..
021BE0:  6D 32 20 73 63 72 65 65 6E 64 75 2E 6D 6F 64 0D    m2 screendu.mod.
021BF0:  0A 6D 32 20 72 65 73 65 74 64 69 73 2E 6D 6F 64    .m2 resetdis.mod
021C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
021FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0220A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0220B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0220C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0220D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0220E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0220F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0221A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0221B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0221C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0221D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0221E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0221F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0222A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0222B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0222C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0222D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0222E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0222F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0223A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0223B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0223C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0223D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0223E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0223F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0224A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0224B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0224C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0224D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0224E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0224F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0225A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0225B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0225C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0225D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0225E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0225F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0226A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0226B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0226C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0226D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0226E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0226F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0227A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0227B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0227C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0227D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0227E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0227F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
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 C9 02 00 00 00 02    ......R.........
022820:  1D 00 C5 02 00 00 00 02 1D 00 C1 02 00 00 00 02    ................
022830:  1D 00 C6 02 00 00 00 02 1D 00 C2 02 00 00 00 02    ................
022840:  1D 00 C7 02 00 00 00 02 1D 00 C3 02 00 00 00 02    ................
022850:  1D 00 C8 02 00 00 00 02 1D 00 C4 02 00 00 00 02    ................
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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0229A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0229B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0229C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0229D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0229E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0229F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022B00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022B10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022B20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022B30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022B40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022B50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022B60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022B70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022B80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022B90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022BA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022BB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022BC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022BD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022BE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022BF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
022FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0230A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0230B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0230C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0230D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0230E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0230F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0231A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0231B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0231C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0231D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0231E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0231F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0232A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0232B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0232C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0232D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0232E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0232F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0233A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0233B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0233C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0233D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0233E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0233F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0234A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0234B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0234C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0234D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0234E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0234F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0235A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0235B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0235C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0235D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0235E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0235F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0236A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0236B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0236C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0236D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0236E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0236F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0237A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0237B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0237C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0237D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0237E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0237F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0238A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0238B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0238C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0238D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0238E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0238F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0239A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0239B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0239C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0239D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0239E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0239F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
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 C9 02 00 00 00 02    ......R.........
023B20:  1E 00 C5 02 00 00 00 02 1E 00 C1 02 00 00 00 02    ................
023B30:  1E 00 C6 02 00 00 00 02 1E 00 C2 02 00 00 00 02    ................
023B40:  1E 00 C7 02 00 00 00 02 1E 00 C3 02 00 00 00 02    ................
023B50:  1E 00 C8 02 00 00 00 02 1E 00 C4 02 00 00 00 02    ................
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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0240A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0240B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0240C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0240D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0240E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0240F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0241A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0241B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0241C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0241D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0241E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0241F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0242A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0242B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0242C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0242D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0242E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0242F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0243A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0243B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0243C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0243D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0243E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0243F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0244A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0244B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0244C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0244D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0244E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0244F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0245A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0245B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0245C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0245D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0245E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0245F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0246A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0246B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0246C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0246D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0246E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0246F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0247A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0247B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0247C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0247D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0247E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0247F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0248A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0248B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0248C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0248D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0248E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0248F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0249A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0249B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0249C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0249D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0249E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0249F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024B00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024B10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024B20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024B30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024B40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024B50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024B60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024B70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024B80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024B90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024BA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024BB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024BC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024BD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024BE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024BF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
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 C9 02 00 00 00 02    ......R.........
024E20:  1F 00 C5 02 00 00 00 02 1F 00 C1 02 00 00 00 02    ................
024E30:  1F 00 C6 02 00 00 00 02 1F 00 C2 02 00 00 00 02    ................
024E40:  1F 00 C7 02 00 00 00 02 1F 00 C3 02 00 00 00 02    ................
024E50:  1F 00 C8 02 00 00 00 02 1F 00 C4 02 00 00 00 02    ................
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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
024FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0250A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0250B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0250C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0250D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0250E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0250F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0251A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0251B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0251C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0251D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0251E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0251F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0252A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0252B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0252C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0252D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0252E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0252F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0253A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0253B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0253C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0253D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0253E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0253F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0254A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0254B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0254C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0254D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0254E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0254F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0255A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0255B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0255C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0255D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0255E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0255F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0256A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0256B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0256C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0256D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0256E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0256F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0257A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0257B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0257C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0257D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0257E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0257F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0258A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0258B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0258C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0258D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0258E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0258F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0259A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0259B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0259C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0259D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0259E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0259F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025B00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025B10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025B20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025B30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025B40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025B50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025B60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025B70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025B80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025B90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025BA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025BB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025BC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025BD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025BE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025BF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025C00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025C10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025C20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025C30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025C40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025C50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025C60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025C70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025C80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025C90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025CA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025CB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025CC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025CD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025CE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025CF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025D00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025D10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025D20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025D30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025D40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025D50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025D60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025D70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025D80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025D90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025DA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025DB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025DC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025DD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025DE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025DF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
025FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0260A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0260B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0260C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0260D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0260E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0260F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
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 C9 02 00 00 00 02     .....R. .......
026120:  20 00 C5 02 00 00 00 02 20 00 C1 02 00 00 00 02     ....... .......
026130:  20 00 C6 02 00 00 00 02 20 00 C2 02 00 00 00 02     ....... .......
026140:  20 00 C7 02 00 00 00 02 20 00 C3 02 00 00 00 02     ....... .......
026150:  20 00 C8 02 00 00 00 02 20 00 C4 02 00 00 00 02     ....... .......
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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0262A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0262B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0262C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0262D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0262E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0262F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0263A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0263B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0263C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0263D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0263E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0263F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0264A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0264B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0264C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0264D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0264E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0264F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0265A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0265B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0265C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0265D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0265E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0265F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0266A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0266B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0266C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0266D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0266E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0266F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0267A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0267B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0267C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0267D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0267E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0267F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
026800:  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 C9 02 00 00 00 02    !.....R.!.......
027420:  21 00 C5 02 00 00 00 02 21 00 C1 02 00 00 00 02    !.......!.......
027430:  21 00 C6 02 00 00 00 02 21 00 C2 02 00 00 00 02    !.......!.......
027440:  21 00 C7 02 00 00 00 02 21 00 C3 02 00 00 00 02    !.......!.......
027450:  21 00 C8 02 00 00 00 02 21 00 C4 02 00 00 00 02    !.......!.......
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 C9 02 00 00 00 02    ".....R.".......
028720:  22 00 C5 02 00 00 00 02 22 00 C1 02 00 00 00 02    ".......".......
028730:  22 00 C6 02 00 00 00 02 22 00 C2 02 00 00 00 02    ".......".......
028740:  22 00 C7 02 00 00 00 02 22 00 C3 02 00 00 00 02    ".......".......
028750:  22 00 C8 02 00 00 00 02 22 00 C4 02 00 00 00 02    ".......".......
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 C9 02 00 00 00 02    #.....R.#.......
029A20:  23 00 C5 02 00 00 00 02 23 00 C1 02 00 00 00 02    #.......#.......
029A30:  23 00 C6 02 00 00 00 02 23 00 C2 02 00 00 00 02    #.......#.......
029A40:  23 00 C7 02 00 00 00 02 23 00 C3 02 00 00 00 02    #.......#.......
029A50:  23 00 C8 02 00 00 00 02 23 00 C4 02 00 00 00 02    #.......#.......
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 C9 02 00 00 00 02    $.....R.$.......
02AD20:  24 00 C5 02 00 00 00 02 24 00 C1 02 00 00 00 02    $.......$.......
02AD30:  24 00 C6 02 00 00 00 02 24 00 C2 02 00 00 00 02    $.......$.......
02AD40:  24 00 C7 02 00 00 00 02 24 00 C3 02 00 00 00 02    $.......$.......
02AD50:  24 00 C8 02 00 00 00 02 24 00 C4 02 00 00 00 02    $.......$.......
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 C9 02 00 00 00 02    %.....R.%.......
02C020:  25 00 C5 02 00 00 00 02 25 00 C1 02 00 00 00 02    %.......%.......
02C030:  25 00 C6 02 00 00 00 02 25 00 C2 02 00 00 00 02    %.......%.......
02C040:  25 00 C7 02 00 00 00 02 25 00 C3 02 00 00 00 02    %.......%.......
02C050:  25 00 C8 02 00 00 00 02 25 00 C4 02 00 00 00 02    %.......%.......
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 C9 02 00 00 00 02    &.....R.&.......
02D320:  26 00 C5 02 00 00 00 02 26 00 C1 02 00 00 00 02    &.......&.......
02D330:  26 00 C6 02 00 00 00 02 26 00 C2 02 00 00 00 02    &.......&.......
02D340:  26 00 C7 02 00 00 00 02 26 00 C3 02 00 00 00 02    &.......&.......
02D350:  26 00 C8 02 00 00 00 02 26 00 C4 02 00 00 00 02    &.......&.......
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 C9 02 00 00 00 02    '.....R.'.......
02E620:  27 00 C5 02 00 00 00 02 27 00 C1 02 00 00 00 02    '.......'.......
02E630:  27 00 C6 02 00 00 00 02 27 00 C2 02 00 00 00 02    '.......'.......
02E640:  27 00 C7 02 00 00 00 02 27 00 C3 02 00 00 00 02    '.......'.......
02E650:  27 00 C8 02 00 00 00 02 27 00 C4 02 00 00 00 02    '.......'.......
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    ................
RESULT OF SEARCH :
PRO=333   CHEA=0   COD=20   MUSI=0   COP=13   GRA=58   WRIT=125   198=7   199=0   STARTER=0   KBI=0   CAAV=0   L.TOURNIER=0  
EXTENDED CPC DSK File    SAMdisk140311(  R! !  !222  2!G7£o(! !$  q(a 2y Wp((2R8
#!(Gw#2# .# WDEL V2.0 (C) 1987 HiSoft  $Drive is R/O!$No matching files$  Cannot
 delete!$  Delete (Y/N/A/Q/P) $*"QRhB8KGB h2!l #- #Q(B #  2mh2BF!m  !  ! !!Q(G2 
!Q!LB!"L# B( -B qa 2b(1w(,y 2p(!B2(22BQB2#bk6"!F# #(h2(4!+6B#6A#V6K"!#3WP      C
OMSD      COMWD      COM!README!ED!  -2JULY1987 -BACKUPNOW!-VERSION124DOMENU  DE
FDOMENU  MOD9EDITCONTDEFEDITCONTMODm !"#$%&'()EDITDISPDEF*EDITDISPMOD3+,-./01EDI
TSTATDEF2EDITSTATMOD345KEYBOARDDEF6r+s+w""(w"#GH .HsH#2go"Q *#"!R02Kx(#Q"(!x  "O
! !jR0Ur+ x # A  0G22GO!-++ ## #Q(B22WP V3.0 (C) 1987 HiSoft  Buffer size $  $No
 files$ Open failed$ Disc I/O error (Full )$ to $  Same$  Copy (Y/N/A/Q/P/B/W) $
 LKEYBOARDMODD789MACROS  DEFMACROS  MODOABCDEFGHIJMAKEEDITDEFKLMNMAKEEDITMODOPQR
STUVWXYZMAKEEDITMOD abME      MOD&cdefgMENU    DEFhMENU    MODijklRESETDISDEFmRE
SETDISMODnSCREENDUDEFoSCREENDUMODpSCREENIODEF qrstSCREENIOMOD-uvwxyzSETUPCALDEF2
! !2U2  !  2"V####2X6 A!!e(G2 eG!eA. (+4(1nf( +#M7NU2U(# .#!eGX8% (nfVutXNWEnfut
!eGR(( X(SETUPCALMOD RECMPED SUB# 00P*Vnf"YG72KY28y( #kbG(M#.!NK!d Ur+ x # A  0!
jR0SD V1.0 by Adam Denning (C) HiSoft 1986  $$ S$  $R $  $K  Recs $  Disc free s
pace $function i sourc an Man  librar formDO  Lookup(Inf,Namesj,reply)  IF reply
0 THEN  WriteString(' Could not open ')  WriteString(Namesj)  Wr  Rsert/delete l
ine or clear to  end of line).  Mind you don't overwrite your only copy of ME.CO
M  while experimenting--and copy ME.COM from your original disks if  you have an
y doubts.   If strapped for room, or just experimenting, MACROS.MBE has no  func
tion key code and therefore is smaller.  As before, rename  it to MACROS.MOD bef
ore recompiling.   SAMPLE PROGRAM INSTRUCTIONS    CAT.MOD      A file display pr
ogram without the shortcomings of 'type'.  CAT can   Number output lines  Page o
utpComputers' Z80 Card.  To produce a memory mapped  version, start with the Mic
roBee, as that is the most standard.   To replace the standard version of Screen
IO by a memory mapped  version, simply compile the memory mapped implementation 
module  in place of the standard implementation module--no changes are  needed i
n the definition module.  NOTE the Osborne version is  for Osborne Is only, NOT 
the Executive.  The Vixen is also  slightly different.   Compiling the editor. *
********************    The submit file RECMPED.SUB can be used to recompile the
 editor    SUBMIT RECMPED    the distributed form of this file assumes that the 
files are all on the  current drive.  You may want to add "B" in front the filen
ames being  compiled (or add whatever drive name you are using).  Note that SUBM
IT only  works from drive A on many computers.   Mapping your keyboard.   If you
 want to modify the editor to use your keyboard arrow keys and function keys, yo
u will want to edit the module KEYBOARD.MO                           Notes for  
                          FTL Modula-2 Editor/ToolKit disc                      
      Workman & Associates      This disc contains the entire sources for the FT
L Modula-2 editor and a number of utilities which you may find useful.       See
 the end of this file for more details on the utilities.  They are    COMPDIRa d
irectory compare program.  This program is invaluable to software developers who
 need to ensure that their distribution discs are complete and contD,  then reco
mpile the editor (see above).   Editor Cook's Guide.    The main modules in the 
editor are    METhe top level module.  EDITCONTControls the screen display.  EDI
TDISPSome other screen display procedures--essentially part  of EDITCONT, kept s
eparate for ease of maintenance.  MAKEEDITPerforms the changes to the file(s) be
ing edited.  KEYBOARDAccepts input from the keyboard and calls appropriate  rout
ines to perform the requested edit functions.  DOMENUSupports the options menu (
that ain the latest versions of files. See the file COMPDIR.MOD and instructions
 below.  COMPAREan Ascii file comparison program.  This program does line-by- li
ne comparisons of files.  It uses a powerful comparison  method which rarely get
s lost, and which can detect block moves.  See the file COMPARE.MOD and the docu
mentation below.   CATa generalised listing module intended primarily for use on
  RCPMs.  It can do tab expansion, line numbering, string search, position by li
ne number and wild cais, open file,  comp/exit, etc).  EDITSTATPicks up the file
 position for a file when it's opened.  MACROSHandles macro expansion and defini
tion, including the  learn mode.  Makes and saves them "on the fly" during edits
, too.  SETUPCAL        Editor uses this module to call the compilers.  See  als
o the module CHAIN for another example of this.   Note for users or abusers of d
umb terminals.    You must rename EDITCONT.DMB and EDITDISP.DMB to end in .MOD b
efore  recompiling the dumb editor (without inrds.   See the file CAT.MOD and th
e documentation below.      PATTERNThis is a pattern matching module which match
es complex  (even recursive!) patterns.  See PATTERN.DEF for description  of use
, and TestPat.MOD as an example.   SCREENIOThe screen input-output routines used
 by the editor.  The  standard version of ScreenIO (SCREENIO.MOD), plus some mem
ory  mapped versions are supplied.  SCREENIO.OSB is for the Osborne  1, SCREENIO
.MBE is for the MicroBee, and SCREENIO.EAR is for  the Earth   Rnter.  These are
 very near the beginning of the  program (see the .MOD file).  Each control code
 can be up to 8 characters long  and is terminated by a value of 0 if less than 
characters are required.  Naturally, you may also change the .COM file.   The co
ntrol characters in the supplied program are set for a STAR DPS510,  which is su
pposed to be Epson compatible, so the program may well run 'as is'  on Epsons an
d Epson clones.    How the program works      For each line, a hash total ige mo
de.  Multiple commands may  be placed on a line.  The commands are              
  Display some help information.  number         Restart listing from given line
 number.  + or - number  Advance (or retire) by the given number of lines.  /str
ing/       Restart listing from next occurence of string. The delimiters  can be
 any printing non-alphanumeric character.    A number and a search string can be
 combined to search from a  given line number.  If no string is entered ("//"), 
the  previously entered ut  Expand tabs to spaces  Wrap lines for listing to ter
minals without auto-line wrap  Reposition by line number or by string search  Us
e wild cards on the command line  See non-printing characters in hex (other than
 CR/LF/TAB)    CAT is not a CP/M implementation of the cat program on UNIX it is
 more like  UNIX's MORE.    To run the program    CAT   file list /options  or  
CAT   file list options    The options may also be omitted.  The "file list" is 
a list of file names or  wild cards which matcstring is searched for again.    N
Toggle line numbering option.  IToggle tab expansion option.  WToggle software l
ine wrap option.  If the W is followed by a  number, the number resets the scree
n width.  PToggle page mode. If the P is followed y a number, it resets  the pag
e length.  Note that the first P on any command line  always causes page mode to
 be cleared, as page mode is always  enabled when the command line is processed.
  Hence, to just  change the page length, you must do P20P (say).h file names.  
For example    CAT b*.def b*.mod   will list the definition files, then the modu
le files.    An option is zero or more alphabetics.  Some of the alphabetics may
 be  followed by a number.  If a number is included, it must immediately follow 
 the option character--it must not be separated.    The options are    P - use p
age mode.  At the end of every page of output, CAT will  prompt for a command (s
ee below).  The option may be followed by the number  of lines to a page.  Defau
lt length i  QQuit this file.  Ctrl CReturn to CP/M.      Compare - compare two 
Ascii files line by line      This program displays the differences between two 
files.  It presents the  output in a reasonably readable form (it would look bea
ut on a colour printer).  The program is based on a method described by Paul Hec
kel in 'A Technique  for Isolating Differences between Files', Communications of
 the ACM, Vol 21  No 4, April 1978, pp 264-268.  To run the program   s 24. W - 
Set software line wrap.  Lines longer than the line width will be  wrapped aroun
d by the software.  This is useful if your terminal will not  perform hardware l
ine wraps.  It also prevents any text falling off the top  of screen as the resu
lt of hardware line wraps.  "W" may be followed by the  number of columns on the
 screen.  Default width is 80.  I - Expand tabs.  Tabs are expanded to an approp
riate number of spaces.  N - Number lines. Each line is preceded by a line numbe
r.    Examples    COMPARE old file,new file,List file    The third file is optio
nal.  If omitted, the output is to the printer.  You  can use device names (e.g.
 TTY) as well as disc file names.    The two files are compared line by line.  L
ines which have been deleted from  the old file are printed in italics.  Inserte
d lines are printed in bold.  Lines which have been moved to a new position are 
printed in their new  position surrounded by lines of asterisks.  You may need t
o patch the printer  control codes for your priCAT  b*.def/NP    Use page mode a
nd number the lines.    CAT  b*.def/P16W64N    Use page mode and software wrap w
ith pagelength 16 and width 64.    CAT Commands    At the end of a page of outpu
t in page mode, Cat will stop and ask for a  command.  You may then enter any of
 the commands described below.  In fact, you can enter a command character at an
y time.  When Cat determines  that a character has been typed, it will bring up 
the 'Command  ' prompt,  display the character you typed, and go into pa  Rnsion
.  Optionally, you may create a file containing a list of the file names added, 
 deleted or matching.    The command to call the program takes the form    COMPD
IR wild card, wild card , list file /options    Where each wild card produces on
e of the lists to compare.    To compare two discs    COMPDIR a*.* b*.*    Optio
ns are any of the following    TCompare only file extension (by default, the who
le name is compared).  Ncompare only file name--base name, minus the extension. 
   T and N ares calculated.  Then the unique lines in each file  are identified.
  When a unique line matches a unique line in the second file,  the two lines ar
e cross-linked.    Next, lines adjacent to cross-linked lines are compared and, 
if identical,  they are linked.  This grows the area of linking outwards from pa
irs of   matching unique lines (and also from the beginning and end of the files
) until  as many lines as possible have been cross-linked.    Finally the text i
s scanned and printed out.  Lines in the new f mutually exclusive.    CIf file n
ames match, compare the file contents as well.  EOutput file names which match t
o list file.  AOutput file names which have been added to the second list.  DOut
put file names which have been deleted from the first list.  MOutput file names 
which differ in contents.    These options may be combined.  Examples    To chec
k that every '.mod' file has a '.rel' file   Compdir b*.mod b*.rel/n    To write
 the deleted names to a file so that the missing  '.rel'  files may ile which ar
e  not linked to anything in the old file are insertions.  Unlinked lines in the
  old file are deletions.  Lines in the new file which link to out-of-order old 
 file lines are parts of a block move.    Further Work    A number of things can
 be done with this program    1/  Make it work on three files.  Often, a new ver
sion of a program is created (say, for another machine) and  then the original v
ersion is modified.  The problem is then inserting the  new changes to the origi
nal file into thebe discovered    Compdir b*.mod b*.rel bcomps.sub/nd    If you 
intend to regenerate those files, edit the file to add "M2 " to the  start of ea
ch line.  If you are using the Modula-2 editor, do one in learn  mode and then d
o the rest with a repeated execution of the defined macro.    To create a list o
f all definition and implementation modules on disc B    Compdir b*.mod b*.def t
.lst/ade    Happy Modulating!!      DF      COM CRDISKCOMPEXE b other version, w
hile retaining  any changes made toproduce that version.  Probably fairly diffic
ult to do.   2/   Make it work across machines.  Sometimes, one of the files is 
on another machine.  It would be nice to  have the old file on the remote machin
e and only transfer the checksums and  the lines which have been deleted across 
the link.  Fairly easy, but  reliability of the link will cause problems.  3/   
Write a pair of extract/merge programs.  Continuing on from point 2, write a pro
gram to creatDEFINITION MODULE DoMenu    (*Menu processor for editor*)  FROM Fil
es IMPORT FileName,FILE,Close,Create  PROCEDURE Redisplay  PROCEDURE DoMenuOp  P
ROCEDURE Open(fnFileNamePosCARDINAL)  PROCEDURE GetString(VAR sARRAY OF CHARVAR 
lenCARDINALpromptARRAY OF CHAR)  END DoMenu.  ons are supplied.  SCREENIO.OSB is
 for the Osborne  1, SCREENIO.MBE is for the MicroBee, and SCREENIO.EAR is for  
the Earth e a differences file  and another to merge the differences on a remote
 machine.  This should be  quite easy, given 2.    Altogether, these three exten
sions would be about right for a term project for  one student.  Of course, if a
nyone out there wants to do this, we'll happily  give author's credit.    CompDi
r - Compare two directories      CompDir compares disc directories.  The compari
son may use the full file  name, just the base name, or (not very useful) just t
he exte  ROCEDURE WriteAwayFile  BEGIN  CloseFile(FilesCurrentFile,reply)  IF re
ply-1 THEN   ErrorMessage('Disc Full ',' ')  ELSIF reply-2 THEN  ErrorMessage('D
irectory Full ',' ')  END  UpdatedCurrentFileFALSE  END WriteAwayFile  PROCEDURE
 SaveFiles  VARiINTEGER  BEGIN  iCurrentFile  reply0  FOR CurrentFile1 TO FilesO
pened DO  IF UpdatedCurrentFile THEN WriteAwayFile END  IF reply0 THEN RETURN EN
D  END  CurrentFilei  END SaveFiles  PROCEDURE PrepareToLeaveELSE  Close(f)  Ope
nFile(FilesFilesOpened+1,fn,reply,Pos)  END  END  END (*reply-2*)  IF reply(-4) 
THEN  ErrorMessage('Could not create ',fn)  ELSIF reply(-3) THEN  ErrorMessage('
Out of Memory loading ',fn )  ELSIF reply(-2) THEN  ErrorMessage('File not found
',fn)  ELSIF reply0 THEN  ErrorMessage(' Other error opening file',fn)  ELSE (*f
ile ok*)  INC(FilesOpened)  INC(Windows)  WindowFileWindowsFilesOpened  SetWindo
ws(Windows)  bLabelOp(Fil(*Perform menu operations    Copyright,  Dave Moore FTL
 Modula-2 1986    26 June 86  D Moore  Put BackSpace inside IF to improve  backs
pacing performance of GetString    *)  IMPLEMENTATION MODULE DoMenu    (*menu pr
ocessor for editor    contains all commands which are performed from a menu*)  F
ROMTerminal IMPORT Write,WriteString,ReadString,ReadBuffer,WriteLn,Read,  BusyRe
ad,ClearCharBuffer  FROM MakeEdits IMPORT OpenFile,CloseFile,AbandonFile,CallWit
hFile,FileType,LabelOp  FROMMenu IMPORTesFilesOpened,TRUE,CHR(Windows))  SetLeft
Marg(FilesFilesOpened,Windows,  curxWindows,curyWindows)  UpdatedFilesOpenedFALS
E  ChangeWindow(Windows)  END(*replyvarious values*)  END(*fn1' '*)      Redispl
ay      END Open    PROCEDURE SetBoxPos(VAR yCARDINAL)  BEGIN  IF Windows2 THEN 
y13*(CurrentWindow-1)  ELSIF CurrentWindow0 THEN y0  ELSEy8*(CurrentWindow-1) EN
D  END SetBoxPos  VARx,y,charsCARDINAL  PROCEDURE BackSpace  BEGIN  Write(08x)  
Write(' GetFromMenu,MenuText  FROM EditControl IMPORT CurrentWindow,CurrentFile,
FilesOpened,curx,cury,Files,  ElideWindow,ChangeWindow,ResetScreenPos,Updated,Le
ftMargin,  MakeWindow,WindowFile,FilePosition  FROMEditDisplay IMPORT ErrorMessa
ge,SetWindows,DisplayFile,SetLeftMarg,Windows  FROMMacros IMPORT StoreMacros  FR
OMScreenDummy IMPORT ClearScreen,DrawBox,Gotoxy  FROMResetDisc IMPORT ResetAllDi
scs  VARTextARRAY 0..9 OF MenuText   'Open  File ',  'Save  File ',  'Close File
 ',   ')  Write(08x)  DEC(chars)  END BackSpace  PROCEDURE GetString(VAR sARRAY 
OF CHARVAR lenCARDINALpromptARRAY OF CHAR)  BEGIN  SetBoxPos(y)  DrawBox(11,y+3,
14+HIGH(s)+HIGH(prompt),y+1)  Gotoxy(12,y+2)  FOR x0 TO HIGH(prompt) DO Write(pr
omptx) END  FOR x0 TO HIGH(s) DO Write(' ') END  Gotoxy(12+HIGH(prompt)+1,y+2)  
len0ch0x  chars0  LOOP  IF lenHIGH(s) THEN EXIT END  REPEAT  BusyRead(ch)  UNTIL
 ch0x  IF ch0dx THEN EXIT END  IF (ch08x) OR (ch13'Split File ',  'Compile    ',
  'Comp/Exit  ',  'Quit File  ',  'Quit Window',  'Exit Edit  ',  'Reset Disc ' 
 cCARDINAL  replyINTEGER  iCARDINAL  chCHAR  PROCEDURE Redisplay  BEGIN  SetWind
ows(Windows)  FOR i1 TO Windows DO  DisplayFile(FilesWindowFilei,i,curxi,curyi) 
 END  ResetScreenPos  END Redisplay  PROCEDURE ClearDisplay  BEGIN  Gotoxy(0,0) 
 ClearScreen  END ClearDisplay  PROCEDURE Really()BOOLEAN  BEGIN  WriteString(' 
(Y/N) ')  REx) OR (ch7fx) THEN  IF len0 THEN   DEC(len)  IF slen' ' THEN BackSpa
ce END  BackSpace  END  ELSIF ch18x THEN  FOR len1 TO chars DO BackSpace END  le
n0  chars0  ELSE  IF ch' ' THEN   Write('')  Write(CHR(ORD(ch)+64))  INC(chars) 
 ELSE Write(ch) END  INC(chars)  slench  INC(len)  END  END(*WHILE*)  FOR xlen T
O HIGH(s) DO sx' ' END  END GetString    PROCEDURE DoMenuOp  VARyCARDINAL  fnFil
eName  PRPEAT  BusyRead(ch)  chCAP(ch)  UNTIL (ch'Y') OR (ch'N')  Write(ch)  RET
URN ch'Y'  END Really  PROCEDURE Open(fnFileNamePosCARDINAL)  (*Open the file wh
ose name is in fn    re-adjust the display as required*)  VARfFILE  bBOOLEAN  BE
GIN      IF fn1' ' THEN   OpenFile(FilesFilesOpened+1,fn,reply,Pos)  IF reply(-2
) THEN  ClearDisplay  WriteString(' Create ')  WriteString(fn)    IF Really() TH
EN  Create(f,fn,reply)  IF reply0 THEN  reply-4    RNAL  Thisx,ThisyCARDINAL  Le
ftMarginARRAY1..MaxEditFiles OF CARDINAL  LineLenINTEGER  LinePosINTEGER  Update
dARRAY1..MaxEditFiles OF BOOLEAN  WindowFileARRAY1..MaxEditFiles OF CARDINAL  Mo
vedOKBOOLEAN  PROCEDURE InsOneChar(chCHAR)  PROCEDURE DelOneChar  PROCEDURE DelT
oEOL  PROCEDURE DelFullLine  PROCEDURE Left  PROCEDURE Right  PROCEDURE Down  PR
OCEDURE Up  PROCEDURE UpScreen  PROCEDURE DownScreen  PROCEDURE Top  PROCEDURE B
ottom  PROCEDURE ChangeWindow(iINTEGER)  ND(*FilesOpened*)      8IF FilesOpened0
 THEN  IF CountRefs()1 THEN     ElideWindow(CurrentWindow)    ChangeWindow(1)   
 Redisplay    ELSE CheckRemoveFile END  END      9PrepareToLeave    IF reply0 TH
EN HALT END  10 ResetAllDiscs     ErrorMessage(' All discs now read/write',' ') 
    END  END (*IF FilesOpened etc *)  END DoMenuOp  END DoMenu.  List THEN  Writ
eChar(List,Device)  WriteChar(List,ch)  END  WriteString(Name  BEGIN  SaveFiles 
 IF reply0 THEN  ClearDisplay  StoreMacros  END  END PrepareToLeave    PROCEDURE
 CallCompilers(opt1,opt2ARRAY OF CHAR)  BEGIN  PrepareToLeave  IF reply0 THEN   
   CASE FileType(FilesCurrentFile) OF  1CallWithFile(opt1,FilesCurrentFile)  2Ca
llWithFile(opt2,FilesCurrentFile)  END  Redisplay  ErrorMessage(' Invalid File T
ype',' ')      END(*IF*)  END CallCompilers  PROCEDURE CountRefs()CARDINAL  VARj
CARDINAL  BEGIN  j0  FOR i1 )  Wmodule.  EDITCONTControls the screen display.  E
DITDISPSome other screen display procedures--essentially part  of EDITCONT, kept
 separate for ease of maintenance.  MAKEEDITPerforms the changes to the file(s) 
being edited.  KEYBOARDAccepts input from the keyboard and calls appropriate  ro
utines to perform the requested edit functions.  DOMENUSupports the options menu
 (that TO Windows DO  IF WindowFileiCurrentFile THEN INC(j) END  END  RETURN j  
END CountRefs  PROCEDURE RemoveFile  VARj,kCARDINALchCHAR  BEGIN  jCurrentFile  
k1  WHILE kWindows DO  IF WindowFilekj THEN   ElideWindow(k)  (*which decrements
 windows*)  ELSE IF WindowFilekj THEN  DEC(WindowFilek)  END       INC(k)       
END  END  AbandonFile(Filesj)  FOR ij+1 TO FilesOpened DO   Filesi-1Filesi  Upda
tedi-1Updatedi  END  DEC(FilesOpened)  ChangeWindow(1)    Redisplay  END RemoveF
ile  PROCEDURE CheckRemoveFile  BEGIN  IF UpdatedCurrentFile THEN  ClearDisplay 
 WriteString(' File updated - Are you sure ')  IF NOT Really() THEN   Redisplay 
 RETURN   END  END  RemoveFile  END CheckRemoveFile  BEGIN  SetBoxPos(y)  cGetFr
omMenu(Text,10,y,5,2)  ClearCharBuffer  IF (FilesOpened0) AND (c IN 2..8) THEN  
ErrorMessage('You have to be editing a file to do this',' ')  ELSE CASE c OF  1I
F WindDEFINITION MODULE EditControl  FROM MakeEdits IMPORT EditFile,Position  FR
OM Terminal IMPORT Write,WriteLn    (*Editor control - data areas for file and r
outines which actually  perform edit functions by calling makeedit to edit the f
ile and  editdisp to change the screen*)  CONST  MaxEditFiles3    VARFiles ARRAY
1..MaxEditFiles OF EditFile  FilesOpenedCARDINAL  CurrentFile,CurrentWindowCARDI
NAL  FilePositionARRAY1..MaxEditFiles OF Position  curx,curyARRAY1..MaxEditFiles
 OF CARDIows3 THEN ErrorMessage(' 3 windows is max allowed',' ')    ELSE  GetStr
ing(fn,y,'File')  Open(fn,65535)  END      2WriteAwayFile      3WriteAwayFile   
 IF reply0 THEN   RemoveFile  END      4IF Windows3 THEN ErrorMessage(' 3 window
s is max allowed',' ')    ELSE  MakeWindow  SetWindows(Windows)  ChangeWindow(Cu
rrentWindow)  Redisplay  END    5CallCompilers('M2E ','MDE ')  6CallCompilers('M
2 ','MD ')  7IF FilesOpened0 THEN  CheckRemoveFile  E  RThisx-CurrentLeftMargin 
 curxCurrentWindowThisx  ResetPos  END ChangePos    PROCEDURE LineMove(byINTEGER
)  VARiINTEGER  BEGIN  ReDrawnFALSE  iLinePos  SetLinePos(by)  LinePosi  ChangeP
os  IF ABS(by)1 THEN  ReDisplayWindow  END  END LineMove  VARpwPosition  PROCEDU
RE WritePartLine(cCARDINAL)  BEGIN  DoScreenChange(DelEol)  GetPosition(CurFileP
tr,pw)  LOOP  ReadNextChar(pw,ch)  IF (ch0dx) OR (ch1ax) OR (ch0ax) THEN EXIT EN
D  IF c(ScreenWidth+CARDINAL  StartofWindow,EndofWindowCARDINAL  chCHAR  Current
LeftMarginCARDINAL  FileLimitBOOLEAN  ReDrawnBOOLEAN  CurFilePtrPEditFile  PROCE
DURE ChangePosFORWARD  PROCEDURE DoScreenChange(CodeEdits)  BEGIN  ScreenControl
(Code)  END DoScreenChange      VARlinesmovedINTEGER  pPosition    PROCEDURE Set
LinePos(moveINTEGER)  BEGIN  Retrline(CurFilePtr,LineLen,LinePos,p,linesmoved,mo
ve)  END SetLinePos  PROCEDURE MarkAsUpdated  BEGIN  UpdatedCurrentFileTRUE  END
 MarkPROCEDURE ElideWindow(iINTEGER)  PROCEDURE MakeWindow  PROCEDURE ScrollUp  
PROCEDURE ScrollDown  PROCEDURE ResetScreenPos  PROCEDURE FarRight  PROCEDURE Fa
rLeft  PROCEDURE Search(ReplaceARRAY OF CHARRLenINTEGERLenCARDINAL)BOOLEAN  PROC
EDURE OverWrite(chCHAR)  PROCEDURE FindWord(BackWardBOOLEANDeleteBOOLEAN)  PROCE
DURE ReDisplay  PROCEDURE GoToLabel(chCHAR)  END EditControl.  T  DEF Ex  iAsUpd
ated  PROCEDURE DelToEOL  BEGIN  MarkAsUpdated  IF LinePosLineLen THEN   DelChar
s(CurFilePtr,LineLen-LinePos)   END  LineLenLinePos  DoScreenChange(DelEol)  END
 DelToEOL  VAR  bBOOLEAN  PROCEDURE ResetPos  BEGIN  Gotoxy(Thisx,Thisy)  END Re
setPos  PROCEDURE ReDisplayWindow  BEGIN  DisplayFile(CurFilePtr,CurrentWindow,T
hisx,Thisy)  ResetPos  curxCurrentWindowThisx  curyCurrentWindowThisy  ReDrawnTR
UE  END ReDisplayWindow  PROCEDURE ReDisplay  BEGIN  ReDisplayWindow  SetLinePos
(0)  ChangePos  END ReDisplay  PROCEDURE ChangeMargin(IncINTEGER)  BEGIN  IF (In
c0) AND  (CurrentLeftMarginCARDINAL(-Inc)) THEN   Inc-INTEGER(CurrentLeftMargin)
   END  IF (Inc0) AND (ThisxCARDINAL(Inc)) THEN IncThisx END  CurrentLeftMarginI
NTEGER(CurrentLeftMargin)+Inc  ThisxINTEGER(Thisx)-Inc  curxCurrentWindowThisx  
LeftMarginCurrentWindowCurrentLeftMargin  ReDisplayWindow  ResetPos  END ChangeM
argin    PROCEDURE ChangePos  VIMPLEMENTATION MODULE EditControl    (*Editor con
trol - data areas for file and routines which actually  perform edit functions b
y calling makeedit to edit the file and  editdisp to change the screen*)    FROM
 MakeEdits IMPORT InsChars,DelChars,Retrline,BackOneChar,ForwardOneChar,  GetCur
rentChar,GetPosition,SetPosition,ReadNextChar,FindString,  LabelOp  FROM EditDis
play IMPORT DisplayFile,ErrorMessage,Windows,LinesPerWindow  FROM ScreenIO IMPOR
T Edits,DelChar,DelLine,InsChar,InsLine,DelEol,MoveUpARiCARDINAL  BEGIN  IF Line
LenLinePos THEN   LinePosLineLen  END  Thisx0  i0  LOOP  INC(i)  chGetCurrentCha
r(CurFilePtr)  IF (iCARDINAL(LinePos)) OR (chEOF) THEN EXIT END  IF chTAB THEN T
hisxIAND(Thisx+8,0fff8h)   ELSE  INC(Thisx) END  bForwardOneChar(CurFilePtr)   E
ND  iThisx  WHILE Thisx(ScreenWidth+CurrentLeftMargin) DO  ChangeMargin(32)  Thi
sxi  END  WHILE ThisxCurrentLeftMargin DO  ChangeMargin(-32)  Thisxi  END  Thisx
,  MoveDown,MoveLeft,MoveRight,Gotoxy,ClearScreen,  ScreenControl,ScrollWindowUp
,ScrollWindowDown,  ScreenWidth,ScreenDepth  FROM IntLogic IMPORT IAND  FROMSYST
EM IMPORT ADR  CONSTCR0dx  TAB09x  LF0ax  EOF1ax  (*A remark on the use of LineP
os and curx    LinePos always points to the number of the character within the  
text line. It need not be the same as the position on the  screen because of the
 use of tab characters*)  TYPEPEditFilePOINTER TO EditFile  VARiINTEGER  c  R st
ring of marks, tabs  or spoaces    The cursor is repositioned*)  VARchCHAR  b1BO
OLEAN  BEGIN  FileLimitFALSE  IF Backward THEN   Left  IF NOT MovedOK THEN RETUR
N END  END  chGetCurrentChar(CurFilePtr)  b1AlphaNum(ch)  IF chEOF THEN RETURN E
ND  REPEAT  IF Delete THEN DelOneChar END  IF Backward   THEN Left  ELSIF NOT De
lete THEN Right END  chGetCurrentChar(CurFilePtr)  UNTIL  (b1AlphaNum(ch)) OR Fi
leLimit OR (chEOF)  IF Backward AND NOT FileLimit THEnePos(i)  IF linesmovedi TH
EN  MovedOKTRUE  ScrollWindowDown(StartofWindow,EndofWindow)  Gotoxy(0,EndofWind
ow)  WriteLine  ResetPos  ELSE  MovedOKFALSE  END  SetPosition(CurFilePtr,p)  Re
setPos  LineLenSaveLineLen  LinePosSaveLinePos  END ScrollTextDown  PROCEDURE Sc
rollDown  BEGIN  ScrollTextDown  IF MovedOK THEN  IF ThisyStartofWindow THEN   D
EC(Thisy)  ResetPos  ELSE  LineMove(1)  ResetPos  END  END  END ScrollDown  PROC
EDURE LCurrentLeftMargin) THEN EXIT END  IF chTAB THEN   REPEAT  IF cCurrentLeft
Margin THEN Write(' ') END   INC(c)  UNTIL IAND(c,7)1  ELSE  IF cCurrentLeftMarg
in THEN Write(ch) END  INC(c)  END  END(*LOOP*)  END WritePartLine  PROCEDURE Wr
iteLine  BEGIN  WritePartLine(1)  END WriteLine  PROCEDURE RemoveLine    (*Remov
e a line from the screen and bring another line up at the bottom    Thisy gives 
line to remove*)  VARpPosition  BEGIN  Gotoxy(0,Thisy)  Scroleft  VARchCHAR  Sav
eLineLenCARDINAL  pPosition  BEGIN  MovedOKTRUE  ReDrawnFALSE  SaveLineLenLineLe
n  GetPosition(CurFilePtr,p)  IF LinePos0 THEN  bBackOneChar(CurFilePtr)  chGetC
urrentChar(CurFilePtr)  IF (CurrentLeftMargin0) AND (Thisx0) THEN  ChangeMargin(
-32)  END  DEC(LinePos)  IF NOT ReDrawn THEN  IF chTAB THEN  DEC(Thisx)  ResetPo
s  ELSE  LineMove(0)  END  END    ELSE  Thisx1023  LinePos1023  Up  IlWindowDown
(Thisy,EndofWindow)  iEndofWindow-Thisy+1  GetPosition(CurFilePtr,p)  SetLinePos
(i)  IF linesmovedi THEN  MovedOKTRUE  Gotoxy(0,EndofWindow)  WriteLine  END  Se
tPosition(CurFilePtr,p)  END RemoveLine  PROCEDURE DelFullLine  BEGIN  MarkAsUpd
ated  RemoveLine  SetLinePos(0)  DelChars(CurFilePtr,LineLen+2)  LinePos0  IF Cu
rrentLeftMargin0 THEN   ChangeMargin(-INTEGER(CurrentLeftMargin))  END  Thisx0  
ResetPos  LinePos0  SetLinePos(0)  EF NOT MovedOK THEN  LinePos0  LineLenSaveLin
eLen  SetPosition(CurFilePtr,p)  Thisx0  ResetPos  END  END  END Left  PROCEDURE
 Right  VARchCHAR  iCARDINAL  BEGIN  chGetCurrentChar(CurFilePtr)  IF ch1ax (*on
 EOF char*) THEN RETURN END  IF LinePosLineLen THEN  Thisx0  LinePos0  Down    E
LSE    IF chTAB THEN i9 ELSE i1 END  IF (Thisx+i)(ScreenWidth-1) THEN  ChangeMar
gin(32)  END  bForwardOneChar(CurFilePtr)  INC(LinePND DelFullLine      PROCEDUR
E ScrollTextUp    (*Scroll up one line in the file  (which means the text scroll
s down - backwards to  what you might think at first)*)    VARpPosition  SaveLin
eLen,SaveLinePosCARDINAL  BEGIN  SaveLineLenLineLen  SaveLinePosLinePos  iStarto
fWindow-Thisy-1  GetPosition(CurFilePtr,p)  SetLinePos(i)  IF linesmovedi THEN  
MovedOKTRUE  ScrollWindowUp(StartofWindow,EndofWindow)  Gotoxy(0,StartofWindow) 
 WriteLine  ELSE  MovedOKFALSE  os)  IF chTAB THEN  INC(Thisx)  ResetPos  ELSE  
  (*if moves over tabs are slow, replace the    repeated moves right by a gotoxy
*)  ThisxIAND(Thisx+8,0fff8h)  ResetPos  END  END  END Right    PROCEDURE AlphaN
um(chCHAR)BOOLEAN  BEGIN  chCAP(ch)  RETURN ((ch'A') AND (ch'Z')) OR ((ch'0') AN
D (ch'9'))  END AlphaNum    PROCEDURE FindWord(BackwardBOOLEANDeleteBOOLEAN)    
(*Find a word and optionally delete it    A word is a string alphanumerics or aE
ND  SetPosition(CurFilePtr,p)  ResetPos  LineLenSaveLineLen  LinePosSaveLinePos 
 END ScrollTextUp  PROCEDURE ScrollUp  BEGIN  ScrollTextUp  IF MovedOK THEN  IF 
ThisyEndofWindow THEN   INC(Thisy)  ResetPos  ELSE   LineMove(-1)  ResetPos  END
  END  END ScrollUp  PROCEDURE ScrollTextDown  VARpPosition  SaveLineLen,SaveLin
ePosCARDINAL  BEGIN  SaveLineLenLineLen  SaveLinePosLinePos  iEndofWindow-Thisy+
1  GetPosition(CurFilePtr,p)  SetLi  RELSE  EndofWindowScreenDepth-2  END    END
 ChangeWindow  PROCEDURE ResetScreenPos  BEGIN  IF CurrentWindow0 THEN  Thisxcur
xCurrentWindow  ThisycuryCurrentWindow  ResetPos  END  END ResetScreenPos  PROCE
DURE MoveWindow(from,toCARDINAL)  VARbBOOLEAN  BEGIN  curxtocurxfrom  curytocury
from  LeftMargintoLeftMarginfrom  WindowFiletoWindowFilefrom  bLabelOp(FilesWind
owFileto,TRUE,CHR(to))  END MoveWindow  PROCEDURE ElideWindow(WindowND (chTAB) T
HEN  DelChars(CurFilePtr,1)  CH10ch  InsChars(CurFilePtr,CH1,1)  bBackOneChar(Cu
rFilePtr)  Write(ch)  ResetPos  Right  UpdatedCurrentFileTRUE  ELSE  DelOneChar 
 InsOneChar(ch)  END  ELSE  InsOneChar(ch)  END  END OverWrite  PROCEDURE Up    
BEGIN  IF ThisyStartofWindow THEN  ScrollTextUp  END  LineMove(-1)  FileLimitlin
esmoved0  IF (linesmoved0) AND (ThisyStartofWindow) AND NOT ReDrawn THEN   DEC(T
hisy)N Right END  END FindWord  PROCEDURE Down  BEGIN  LineMove(1)  FileLimitlin
esmoved0  IF linesmoved0 THEN  IF (ThisyEndofWindow) THEN  INC(Thisy)  ScrollTex
tDown  DEC(Thisy)  ResetPos  ELSIF  NOT ReDrawn THEN   INC(Thisy)  ResetPos  END
  END   END Down    PROCEDURE RedoLine  BEGIN  Gotoxy(0,Thisy)  SetLinePos(0)  W
riteLine  ChangePos  END RedoLine    PROCEDURE InsOneChar(chCHAR)  VARCH1ARRAY0.
.0 OF CHAR  BEGIN  ReDrawnFALSE  MarkAsUpd  ResetPos  END  END Up  PROCEDURE UpS
creen  BEGIN  LineMove(1-INTEGER(LinesPerWindow))  END UpScreen  PROCEDURE DownS
creen  BEGIN  LineMove(LinesPerWindow-1)  END DownScreen  PROCEDURE Top  BEGIN  
LinePos0  LineMove(-16736)  END Top  PROCEDURE Bottom  BEGIN  LinePos999  LineMo
ve(16736)  END Bottom  PROCEDURE FarLeft  BEGIN  IF CurrentLeftMargin0 THEN   Ch
angeMargin(-INTEGER(CurrentLeftMargin))  END  SetLinePos(0)  LinePos0  ChangePos
  END FarLeft  PROCEated  CH10ch  InsChars(CurFilePtr,CH1,1)  INC(LinePos)  INC(
LineLen)  IF chCR THEN  CH10LF  InsChars(CurFilePtr,CH1,1)  ResetPos  DoScreenCh
ange(DelEol)  IF ThisyEndofWindow THEN  (*ScrollTextDown*)  ScrollWindowDown(Sta
rtofWindow,EndofWindow)  DEC(Thisy)  END  Gotoxy(0,EndofWindow)  ScrollWindowUp(
Thisy+1,EndofWindow)  ResetPos  INC(Thisy)  ResetPos  LinePos0  RedoLine  ELSIF 
chTAB THEN RedoLine  ELSE  IF Thisx(ScreenWidth-DURE FarRight  BEGIN  SetLinePos
(0)  LinePosLineLen  ChangePos  END FarRight  PROCEDURE ChangeWindow(NoINTEGER) 
 VARbBOOLEAN  BEGIN  IF CurrentWindow0 THEN  curxCurrentWindowThisx  curyCurrent
WindowThisy  bLabelOp(CurFilePtr,TRUE,CHR(CurrentWindow))  END  CurrentWindowNo 
   IF CurrentWindowWindows THEN CurrentWindowWindows END  IF CurrentWindow0 THEN
  (*set up a pointer to the current file to save index calculation    every time
 the file is referenc1) THEN  ChangeMargin(32)  END  IF NOT ReDrawn THEN  IF Lin
ePosLineLen THEN  bBackOneChar(CurFilePtr)  WritePartLine(CurrentLeftMargin+This
x+1)  INC(Thisx)  bForwardOneChar(CurFilePtr)  ELSE  Write(ch)  INC(Thisx)  END 
 END  END  ResetPos  END InsOneChar  PROCEDURE DelOneChar  BEGIN  MarkAsUpdated 
 chGetCurrentChar(CurFilePtr)  IF LinePosLineLen THEN i2  ELSE i1 END  DelChars(
CurFilePtr,i)  IF i2 THEN  IF ThisyEed*)  CurrentFileWindowFileCurrentWindow  Cu
rFilePtrPEditFile(ADR(FilesCurrentFile))  bLabelOp(CurFilePtr,FALSE,CHR(CurrentW
indow))  ThisxcurxCurrentWindow  ThisycuryCurrentWindow  CurrentLeftMarginLeftMa
rginCurrentWindow  SetLinePos(0)  ChangePos  i(ScreenDepth-Windows) DIV Windows 
 StartofWindowCARDINAL(i+1)*(CurrentWindow-1)  ELSE   StartofWindow0  i0   END  
IF CurrentWindowWindows THEN  EndofWindowStartofWindow+CARDINAL(i-1)  ndofWindow
 THEN   INC(Thisy)  iLinePos  RemoveLine  LinePosi  DEC(Thisy)  RedoLine  END  E
LSE  DEC(LineLen)  WritePartLine(CurrentLeftMargin+Thisx+1)  END  (*ELSIF chTAB 
THEN  RedoLine  ELSE  LineLenLineLen-1  DoScreenChange(DelChar)  END*)  ResetPos
  END DelOneChar  PROCEDURE OverWrite(chCHAR)  VARCH1ARRAY0..0 OF CHAR  BEGIN  C
H10GetCurrentChar(CurFilePtr)  IF (CH10CR) AND (chCR) AND (CH101ax) THEN  IF (CH
10TAB) A  RndowINTEGERVAR curx,curyCARDINAL)  BEGIN  Retrline(f,len,charsin,pos,
moved,0)  linepos0  FOR ic0 TO charsin DO  ReadNextChar(pos,ch)  IF ch09x THEN l
ineposIAND(linepos+8,0fff8h)  ELSE INC(linepos) END  END  LeftMarg0  WHILE linep
os(LeftMarg+ScreenWidth) DO  LeftMargLeftMarg+32  END  LeftMarginwindowLeftMarg 
 END SetLeftMarg  PROCEDURE DisplayFile(fEditFilewindowINTEGERVAR curx,curyCARDI
NAL)    (*redisplay as much text as will fit in the window  for th   (*redisplay
 as much text as will fit in the window  for the given file starting at the curr
ent position in the file    curx and cury return the screen co-ordinates for the
  current position in the file*)    PROCEDURE SetLeftMarg(fEditFilewindowINTEGER
VAR curx,curyCARDINAL)    (*Set up left margin of a newly opened file *)  PROCED
URE DisplayError  VARWindowsCARDINAL  LinesPerWindowCARDINAL  END EditDisplay.  
NoINTEGER)  BEGIN  FOR iWindowNo+1 TO INTEGER(Windows) DO  MoveWindow(i,i-1)  EN
D  DEC(Windows)  CurrentWindow0  END ElideWindow  PROCEDURE MakeWindow  BEGIN  I
NC(Windows)  MoveWindow(CurrentWindow,Windows)  END MakeWindow  PROCEDURE Search
(ReplaceARRAY OF CHARRLenINTEGERLenCARDINAL)BOOLEAN    (*search for string and r
eplace if found*)  VARbBOOLEAN  FoundBOOLEAN  BEGIN  bLen128  IF b THEN LenLen-1
28 END  FoundFindString(CurFilePtr,b)  IF Found AND (RLenIMPLEMENTATION MODULE E
ditDisplay  (*Display part of a file being edited*)  FROMSCREENIO IMPORT Gotoxy,
ScreenControl,  MadeChange,ScreenWidth,ScreenDepth  FROM Terminal IMPORT WriteSt
ring,Write,WriteLn,Read  FROM MakeEdits IMPORT Position,Retrline,ReadNextChar,Er
rorList,ErrorCount,LabelOp  FROMEditCont IMPORT LeftMargin,Files,CurrentWindow,C
urrentFile,Thisx,Thisy,  curx,cury,ReDisplay  FROM IntLogic IMPORT IAND  FROMFil
es IMPORT Lookup,Close,FILE,ReadBlock  FROMSYSTEM IMPORT ADR  CONST0) THEN  Mark
AsUpdated  DelChars(CurFilePtr,Len)   InsChars(CurFilePtr,Replace,RLen)  bBackOn
eChar(CurFilePtr)  END  ReDisplay  RETURN Found  END Search  PROCEDURE GoToLabel
(chCHAR)  BEGIN  IF LabelOp(CurFilePtr,FALSE,ch) THEN  ReDisplay  ELSE  ErrorMes
sage(' Label not defined',' ')  ResetPos  END  END GoToLabel  BEGIN  CurrentWind
ow0  CurrentFile0  CurFilePtrPEditFile(ADR(Files1))  END EditControl.    EOF1ax 
   PROCEDURE ErrorMessage(s1,s2ARRAY OF CHAR)    (*Display error message at bott
om of screen*)  VAR iINTEGER  BEGIN  Gotoxy(0,ScreenDepth-1)  ScreenControl(Ring
Bell)  ScreenControl(DelEol)  WriteString(s1)WriteString(s2)  END ErrorMessage  
PROCEDURE SetWindows(iINTEGER)    (*set number of edit windows in use - you must
 refresh the entire  screen with calls to DisplayFile after a call to this  rout
ine*)  VARj,kCARDINAL    BEGIN  Windowsi  ScreenControl(ClearScreen)   !"#$%&'()
*+023456789  PROCEDURE DoMenuOp  PROCEDURE Open(fnFileNamePosCARDINAL)  PROCEDUR
E GetString(VAR sARRAY OF CHARVAR lenCARDINALpromptARRAY OF CHAR)  END DoMenu.  
ons are supplied.  SCREENIO.OSB is for the Osborne  1, SCREENIO.MBE is for the M
icroBee, and SCREENIO.EAR is for  the Earth IF Windows1 THEN  LinesPerWindow(Scr
eenDepth-Windows) DIV Windows  ELSELinesPerWindowScreenDepth-1 END  FOR j2 TO Wi
ndows DO  Gotoxy(0,(LinesPerWindow+1)*(j-1)-1)  ScreenControl(StartGraph)  FOR k
1 TO ScreenWidth DO   ScreenControl(Horizontal)  END  ScreenControl(EndGraph)  E
ND  END SetWindows  (*put a line between the windows*)    VARchCHAR  posPosition
  charsin,icINTEGER  len,movedINTEGER  linepos,LeftMargCARDINAL  PROCEDURE SetLe
ftMarg(fEditFilewiDEFINITION MODULE EditDisplay  (*Display part of a file being 
edited*)    FROM ScreenIO  IMPORT Edits  FROM MakeEdits IMPORT EditFile  VARErro
rOrdinalCARDINAL  PROCEDURE ErrorMessage(s1,s2ARRAY OF CHAR)    (*Display error 
message at bottom of screen*)    PROCEDURE SetWindows(iINTEGER)    (*set number 
of edit windows in use - you must refresh the entire  screen with calls to Displ
ayFile after a call to this  routine*)    PROCEDURE DisplayFile(fEditFilewindowI
NTEGERVAR curx,curyCARDINAL)    R         x,Thisy)*)  Gotoxy(Thisx,Thisy)  curxC
urrentWindowThisx  curyCurrentWindowThisy  END DisplayError  BEGIN  Windows0  EN
D EditDisplay.  ftMargin0 THEN   ChangeMargin(-INTEGER(CurrentLeftMargin))  END 
 Thisx0  ResetPos  LinePos0  SetLinePos(0)  EN RETURN 0 END  FOR kk-1 TO 0 BY -1
 DO  ii+ORD(bk)  END  RETURN i  END Count  PROCEDURE WriteCard(iCARDINAL)  VARtA
RRAY0..3 OF CHAR  j,kCARDINAL  BEGIN  kHIGH(t)  WHILE i0 DO  ji DIV 10  tkCHR(OR
D('0')+i-10*j)  ij  DEC(k)  END  FOR kk+1 TO HIGH(t) DO Write(tk) END  END Write
Card  BEGIN  IF ErrorOrdinalErrorCount THEN RETURN END  Gotoxy(0,ScreenDepth-1) 
 ErrorNumberErrorListErrorOrdinal.ErrorNum  ScreenControl(DelEol)  WriteStrine g
iven file starting at the current position in the file*)  VARi,j,k,lineposCARDIN
AL  movedoneINTEGER  startlineINTEGER (*first line of window*)  BEGIN  LeftMargL
eftMarginwindow  startline(INTEGER(LinesPerWindow)+1)*(window-1)  Gotoxy(0,start
line)    (*first line of this window*)  i0(*line within window*)  kLinesPerWindo
w DIV 2  Retrline(f,len,charsin,pos,moved,-k)    LOOP    (*check if this is the 
line we were positioned to upon entry*)    linepos0  j0  LOg('Error ')  WriteCar
d(ErrorNumber)  WriteString('(')WriteCard(ErrorOrdinal+1)  WriteString(' of ')Wr
iteCard(ErrorCount)  WriteString(') ')  Lookup(f,'ERRMSG.DAT ',reply)    (*Looku
p opens the file for input/output    reply returns zero if no file is found    a
 device name can be used in front of the file name   In fact, you can use a non-
disc file name (eg PUN or CON)   but if you do this, you must do your IO through
 the module   Streams (or InOut, which calls streams), as the IO to tOP  IF (mov
ed0) AND (jCARDINAL(charsin)) THEN  curxlinepos-LeftMarg  curyi+CARDINAL(startli
ne)  END  INC(j)  IF jCARDINAL(len) THEN EXIT END    (*check for cursor line*)  
  ReadNextChar(pos,ch)  IF ch09x THEN   REPEAT  INC(linepos)  IF (lineposLeftMar
g)   AND (linepos(ScreenWidth+LeftMarg)) THEN   Write(' ')   END  UNTIL IAND(lin
epos,7)0  ELSIF chEOF THEN EXIT  ELSE   INC(linepos)  IF (lineposLeftMarg)  he  
 serial devices is performed by that module (it calls Files   to do IO to disc d
evices)  *)  IF reply0 THEN(*OK - file found*)      (*read the first 1 or two bl
ocks of the error     message file, countin the characters preceding the    erro
r emssage we want *)  ReadBlock(f,ADR(b),0,128,reply)  jErrorNumber  IF ErrorNum
ber128 THEN  iCount(128)  ReadBlock(f,ADR(b),1,128,reply)  jj-128  ELSE  i0  END
  ii+Count(j-1)  LengthORD(bj-1)  ji DIVAND (linepos(ScreenWidth+LeftMarg)) THEN
   Write(ch)   END  END(*IF chvarious things*)  END (*inner loop*)  INC(i)  IF l
inepos(ScreenWidth+LeftMarg) THEN   ScreenControl(DelEol)   END  IF iLinesPerWin
dow THEN EXIT  ELSE   WriteLn  linepos0  END  INC(moved)  Retrline(f,len,ic,pos,
movedone,1)  IF movedone0 THEN  FOR ii+1 TO LinesPerWindow DO  ScreenControl(Del
Eol)  WriteLn  END  EXIT  END  END(*LOOP*)  END DisplayF 128 (*block to read*)  
ii - 128*j (*offset of first character in block*)  ReadBlock(f,ADR(b),j+2,128,re
ply)  FOR k0 TO Length-1 DO  IF i128 THEN   INC(j)  ReadBlock(f,ADR(b),j+2,128,r
eply)   i0  END  tkbi  INC(i)  END  tLength0c  WriteString(t)  ELSE  WriteString
(' Could not open error messages file')  END  blLabelOp(FilesCurrentFile,FALSE,C
HR(ErrorOrdinal+0b0h))  ReDisplay  (*DisplayFile(FilesCurrentFile,CurrentWindow,
Thisile  PROCEDURE DisplayError    (*The error message file contains the message
s,     The first two blocks give the lengths of the error messages  The remainin
g blocks give the text of the error messages *)  TYPETextARRAY0..63 OF CHAR    V
ARfFILE(*FILE is a type exported from the module Files*)    bARRAY 0..127 OF CHA
R  i,j,k,LengthCARDINAL  tText  ErrorNumberCARDINAL  replyINTEGER  blBOOLEAN  PR
OCEDURE Count(kCARDINAL)CARDINAL  VARiCARDINAL  BEGIN  i0  IF k0 THE  Ran be ope
ned*)  Lookup(datfile,'EDITSTAT.DAT ',reply)  IF reply0 THEN  Create(datfile,'ED
ITSTAT.DAT',reply)  IF reply0 THEN   Gotoxy(0,ScreenDepth-1)  WriteString(' Coul
d not open status file')  openedFALSE  END  END  BlockNo60000(*set impossibly bi
g*)    END EditStatus.  dowFiletoWindowFilefrom  bLabelOp(FilesWindowFileto,TRUE
,CHR(to))  END MoveWindow  PROCEDURE ElideWindow(Windowck(BytesPerBlock-TSIZE(CA
RDINAL)) DIV TSIZE(FileRec)  FillSizeBytesPerBlock-TSIZE(CARDINAL)-EntriesPerBlo
ck*TSIZE(FileRec)  TYPEBlockRECORD  EntriesCARDINAL(*in this block*)  FileEntryA
RRAY0..EntriesPerBlock-1 OF FileRec  FillerARRAY1..FillSize OF CHAR  END    VARd
atfileFILE  BlockNoCARDINAL  EntryNoCARDINAL  BufferBlock  fFILE  replyINTEGER  
openedBOOLEAN  chCHAR  PROCEDURE WriteFile  BEGIN  SetBlock(datfile,BlockNo)  Se
qWriteBlock(datfile,ADR(Buffer),BytesPerBlock,reply)  Close(datfile)  Lookup(dat
file,'EDITSTAT.DAT ',reply)  END WriteFile    PROCEDURE MakeEntry  BEGIN  WITH B
uffer.FileEntryEntryNo DO  Filefnf.f.fcbfn  Fileftf.f.fcbft  FilePos0  END  Writ
eFile  END MakeEntry    PROCEDURE ExamineBlock  BEGIN  EntryNo0  WHILE (EntryNoB
uffer.Entries)       AND (   (Buffer.FileEntryEntryNo.Filefnf.f.fcbfn)    OR (Bu
ffer.FileEntryEntryNo.Fileftf.f.fcbft)) DO  INC(EntryNo)  END  IF EntryNoBuffer.
EntrDEFINITION MODULE EditStatus    (*Save/return edit status for a file    The 
file EDITSTAT.DAT on the default drive is always used  for edit statii*)  FROM F
iles  IMPORT FILE  FROMCPM IMPORT alfa,exten  PROCEDURE GetPosition(FnFILE)CARDI
NAL    (*get file position (character number)*)    PROCEDURE SetPosition(FnFILEp
osCARDINAL)    (*set file position*)  END EditStatus.  ies THEN  IF Buffer.Entri
esHIGH(Buffer.FileEntry) THEN  INC(Buffer.Entries)  MakeEntry  ELSEEntryNo60000 
END  END  END ExamineBlock  PROCEDURE Search    (*Find entry - create entry if n
eccessary*)  BEGIN  IF BlockNo60000 THEN ExamineBlock  ELSE EntryNo60000 END  IF
 EntryNo60000 THEN  SetBlock(datfile,0)  BlockNo0  END  WHILE EntryNo60000 DO  S
eqReadBlock(datfile,ADR(Buffer),BytesPerBlock,reply)  IF replyBytesPerBlock THEN
  Buffer.Entries1  EntryNo0  MakeEntry  ELSE  ExamineBlock  END  IF EntryNo60000
 THEN INC(BlockNo) END  END  END Search      PROCEDURE GetPosition(FnFILE)CARDIN
AL  BEGIN  fFn  IF opened THEN  Search  RETURN Buffer.FileEntryEntryNo.FilePos  
ELSERETURN 0 END  END GetPosition    PROCEDURE SetPosition(FnFILEPosCARDINAL)  B
EGIN  fFn  IF opened THEN  Search  Buffer.FileEntryEntryNo.FilePosPos  WriteFile
  END  END SetPosition    BEGIN  openedTRUE(*assume file cIMPLEMENTATION MODULE 
EditStatus    (*Save/return edit status for a file    The file EDITSTAT.DAT on t
he default drive is always used  for edit statii*)  FROM Files IMPORT Lookup,Cre
ate,Close,SeqReadBlock,SeqWriteBlock,SetBlock,  ConvertFileName  FROM ScreenIO I
MPORT Gotoxy,ScreenDepth  FROM SYSTEM IMPORT ADR,TSIZE  FROM Terminal IMPORT Wri
teString  TYPEFileRecRECORD  Filefnalfa  Fileftexten  FilePosCARDINAL  END    CO
NSTBytesPerBlock128(*Bytes per disc block*)  EntriesPerBlo  RGIN  IF InsertMode 
THEN   InsOneChar(ch)  ELSE  OverWrite(ch)  END  END InsChar  PROCEDURE BreakLin
e  BEGIN  InsOneChar(0dx)  Left  END BreakLine  VARLenCARDINAL0  ReplaceStringAR
RAY0..60 OF CHAR  RLenINTEGER  PROCEDURE DoFind  BEGIN    (* the passing of the 
backwards status is a real kludge     which was introduced as a quick fix while 
I was a long     way from home, to avoid having to update my work discs     at h
ome with too much stuff *)    IF Len0 THEN   IF Backcro,ReadAChar,Macro,LearnMac
ro,PrintMacros,  CheckInterrupt,Found  (*Act on commands entered from the keyboa
rd     This module handles keyboard despatch during file editting*)    TYPETabAr
rayARRAY 0x..7fx OF PROC  TablePOINTER TO TabARRAY  VAR  chCHAR  MainTableTabArr
ay  interpretingBOOLEAN  ParValueINTEGER0  GroupOfCodesARRAY1..30 OF CHAR  Group
Len,GroupPosCARDINAL  iCARDINAL  InsertModeBOOLEANTRUE  NoBellBOOLEANFALSE  Back
wardsBOOLEANFALSE  PROCEDURE BellDEFINITION MODULE Keyboard      (*Act on comman
ds entered from the keyboard     This module handles keyboard despatch during fi
le editting*)    PROCEDURE Interpret    (*Start keyboard interpretation (effecti
vely edit mode)*)  END Keyboard.  e,ReadNextChar,ErrorList,ErrorCount,LabelOp  F
ROMEditCont IMPORT LeftMargin,Files,CurrentWindow,CurrentFile,Thisx,Thisy,  curx
,cury,ReDisplay  FROM IntLogic IMPORT IAND  FROMFiles IMPORT Lookup,Close,FILE,R
eadBlock  FROMSYSTEM IMPORT ADR  CONST    (*ring the bell - primarilly used for 
un-assigned keys*)  BEGIN  IF NOT NoBell THEN  RingBell  END  ParValue0  END Bel
l  PROCEDURE QuickFORWARD  PROCEDURE EscapeCount    (*escape character processin
g    if followed by number, repeats next key given number of times  *)  VARiINTE
GER  BEGIN  ParValue0  LOOP  IF (ch'0') AND (ch'9') THEN  ParValue10*ParValue+(O
RD(ch)-ORD('0'))  ELSE   EXIT  END  ReadAChar(ch)  END(*LOOP*)    IF (ch1bx) OR 
(ch0ax) THEN (*escape something*)  ReadAChar(ch)  Macro(ch,ParValue)  ParValue0 
 ELSIF ch11x THEN Quick  ELSE  FoundTRUE (*Set false as sign of failure *)  WHIL
E (ParValue0) AND Found DO   IF CheckInterrupt() THEN ParValue0   ELSE  DEC(ParV
alue)  IF chCHR(127) THEN chCHR(ORD(ch)-128) END  MainTablech  END  END  ParValu
e0  END  END EscapeCount  PROCEDURE Escape  VAR SaveBackBOOLEAN  BEGIN  ReadACha
r(ch)  IF ch'-' THEN  BackwardsTRUE  ReadA(*Keyboard despatcher and some editing
 functions    Copyright (C) Dave Moore FTL Modula-2 1986    Modifications  20 Ju
ly 86 Handling of backwards changed so that direction     of find remains same u
nless explicit count entered.     This allows use of just L for backwards search
es    *)    IMPLEMENTATION MODULE Keyboard    FROMScreenDummy IMPORT RingBell,Go
toxy,ClearScreen,OutputToScreen  FROMEditDisplay IMPORT ErrorMessage,Windows,Dis
playError,ErrorOrdinal  FROMEditControl IMPORT InsOneChChar(ch)  EscapeCount    
ELSIF (ch'0') AND (ch'9') THEN   BackwardsFALSE  EscapeCount  ELSIF ch04x THEN D
efMacroRedisplay  ELSIF ch0cx THEN LearnMacroRedisplay  ELSIF ch10x THEN ClearSc
reenPrintMacrosRedisplay  ELSE Macro(ch,1) END  END Escape  PROCEDURE Endinterpr
et    (*End keyboard interpretation    Note that this module can be assigned to 
a key so that you can  exit from edit mode gracefully  *)  BEGIN  interpretingFA
LSE  END Endinterpret  PROCEDURE InsChar  BEar,DelOneChar,DelToEOL,DelFullLine, 
    Left,Right,Down,Up,UpScreen,DownScreen,Top,Bottom,     CurrentWindow,FilesOp
ened,curx,cury,ChangeWindow,     ScrollUp,ScrollDown,ResetScreenPos,     Top,Bot
tom,FarLeft,FarRight,Files,Search,OverWrite,      FindWord,ReDisplay,GoToLabel,U
pdated,CurrentFile,     Thisx,Thisy,WindowFile,MovedOK  FROMMakeEdit IMPORT Prep
areString,FindString,LabelOp,BlockCopy,BlockDel,  ErrorCount  FROMDoMenu  IMPORT
     GetString,Redisplay  FROMMacrosIMPORTDefMa   R         Left(*Ctrl H (Backsp
ace)*)  MainTable1axScrollDown(*Ctrl Z*)  MainTable03xDownScreen(*Ctrl C*)  Main
Table12xUpScreen(*Ctrl R*)  MainTable14xDelWord(*Ctrl T*)  MainTable06xForwardWo
rd(*Ctrl F*)  MainTable0axEscape(*treat line feed as if escape*)  MainTable01xBa
ckwardWord(*Ctrl A*)  MainTable11xQuick(*Ctrl Q*)  MainTable02xWindow(*Ctrl B*) 
 MainTable17xScrollUp(*Ctrl W*)  MainTable0bxDefLabel(*Ctrl K*)  MainTable7fxDel
BacoError(ErrorOrdinal)  '0'..'9'GotoError(ORD(ch)-ORD('0'))  END  END MoveToErr
or  PROCEDURE Quick  VARFirstBOOLEAN  BEGIN  FirstTRUE  ReadAChar(ch)  chCAP(ch)
  IF ParValue0 THEN ParValue1 END  WHILE ParValue0 DO    CASE ch OF      'E',05x
MoveToError      'Y',19xDelToEOL      'D',04xFarRight      'S',13xFarLeft      '
R',12xTop      'C',03xBottom      'F',06xIF First THEN Find ELSE DoFind END     
  'A',01xIF First THEN Replace ELSE DoFind END      'G',07xwards THEN FoundSearc
h(ReplaceString,RLen,Len+128)  ELSE FoundSearch(ReplaceString,RLen,Len) END  END
  END DoFind  PROCEDURE Find  VARSearchStringARRAY0..60 OF CHAR  BEGIN  GetStrin
g(SearchString,Len,'Find')  IF Len0 THEN  PrepareString(SearchString,Len)  RLen-
1  DoFind  ELSE  ReDisplay  END END Find  PROCEDURE Replace  VARSearchStringARRA
Y0..60 OF CHAR  LCARDINAL    BEGIN  GetString(SearchString,Len,'Alter')  IF Len0
 THEN  PrepareString(SearchStriNoBellNOT NoBell      'K','B','0'..'9'GoToLabel(c
h)   END    FirstFALSE    DEC(ParValue)    END  END Quick  PROCEDURE Window  VAR
iCARDINAL  BEGIN  iCurrentWindow+1  IF iWindows THEN i1 END  ChangeWindow(i)  Re
Display  END Window  PROCEDURE DelBack  BEGIN  Left  IF MovedOK THEN DelOneChar 
END  END DelBack  PROCEDURE Interpret    (*Start keyboard interpretation*)  BEGI
N  ResetScreenPos  interpretingTRUE  ParValue0  WHILE interpreting DO  ReadAChar
(cng,Len)  GetString(ReplaceString,L,'To   ')  RLenL  DoFind  ELSE  ReDisplay  E
ND  END Replace  PROCEDURE SetUpdated  BEGIN  UpdatedCurrentFileTRUE  END SetUpd
ated  PROCEDURE DelABlock(iCARDINAL)BOOLEAN  VAR bBOOLEAN  jCARDINAL  BEGIN  bBl
ockDel(Filesi)  jCurrentFile  ChangeWindow(i)  Redisplay  ChangeWindow(j)  RETUR
N b  END DelABlock  PROCEDURE DefLabel  VARiCARDINAL  b,rBOOLEAN  BEGIN  ReadACh
ar(ch)  iCurrentWindow    (*If control B'h)  IF chCHR(127) THEN chCHR(ORD(ch)-12
8) END  MainTablech  END  END Interpret    PROCEDURE FlipInsert  BEGIN  InsertMo
deNOT InsertMode  END FlipInsert    PROCEDURE DelWord  BEGIN  FindWord(FALSE,TRU
E)  END DelWord    PROCEDURE ForwardWord  BEGIN  FindWord(FALSE,FALSE)  END Forw
ardWord  PROCEDURE BackwardWord  BEGIN  FindWord(TRUE,FALSE)  END BackwardWord  
  (*Initialise a keyboard dispatch tables*)    BEGIN  FOR ch0x TO 7fx DO MainTab
lechBell END    MainTabs intervene, change source window*)  WHILE ch02x (*CTRL B
*) DO  IF iWindows THEN i1 ELSE INC(i) END  Gotoxy(curxi,curyi)  ReadAChar(ch)  
END  chCAP(ch)  rFALSE  iWindowFilei  CASE ch OF  'C',03xbBlockCopy(Filesi,Files
CurrentFile)    'Y',19xbDelABlock(i)    'V',16xbBlockCopy(Filesi,FilesCurrentFil
e)  IF b  THEN bDelABlock(i) END    ELSE   b LabelOp(FilesCurrentFile,TRUE,ch)  
rTRUE  END  IF b THEN  IF NOT r le1bxEscape    (*printable characters are insert
ed as is *)    FOR ch' ' TO '' DO MainTablechInsChar END  MainTable0dxInsChar  M
ainTable09xInsChar    (*cursor control keys*)    MainTable13xLeft  MainTable18xD
own  MainTable04xRight  MainTable05xUp    (*Other control keys*)    MainTable07x
DelOneChar(*Ctrl G*)  MainTable19xDelFullLine(*Ctrl Y*)  MainTable16xFlipInsert(
*Ctrl V*)  MainTable0exBreakLine(*Ctrl N*)  MainTable08xTHEN ReDisplaySetUpdated
 END  ELSE  IF r THEN ErrorMessage('Bad label',' ')  ELSE ErrorMessage('Block Un
defined',' ') END  Gotoxy(Thisx,Thisy)  END  END DefLabel  PROCEDURE MoveToError
  PROCEDURE GotoError(iCARDINAL)  BEGIN  IF iErrorCount THEN ErrorOrdinaliDispla
yError  ELSE  ErrorMessage(' No such error ',' ')  END  END GotoError    BEGIN  
ReadAChar(ch)  chCAP(ch)  CASE ch OF  'N',0exGotoError(ErrorOrdinal+1)  'P',10xG
otoError(ErrorOrdinal-1)  'C',03xGot  Rpart *)    WHILE (KeyPosNIL) AND  (KeySeq
i' ') DO    SearchToNext(KeySeqi)  IF KeyPosNIL THEN   INC(i)  LastKeyPosKeyPos 
 LearnKeyKeyPos  KeyPosKeyPos.NextChar  END  END  IF KeySeqi' ' THEN (*must alre
ady be in table*)  RETURN  END    (* Assuming this is not the first entry, LastK
eyPos points     to the entry to which we should attach this new character  *)  
WHILE  (KeySeqi' ') DO  NEW(KeyPos)  WITH KeyPos DO  chKeySeqi  NextIMPLEMENTATI
ON MODULE Macros  FROMDoMenu IMPORT GetString,Redisplay  FROMStorage IMPORT  ALL
OCATE,DEALLOCATE  FROMTerminal IMPORT BusyRead,WriteString,WriteLn,Write  FROMFi
les IMPORT FILE,SeqReadBlock,SeqWriteBlock,Lookup,Create,Close  FROMSYSTEM IMPOR
T ADR,TSIZE  FROMEditDisplay IMPORT ErrorMessage  FROMFastMove IMPORT Moveup  FR
OMScreenDu IMPORT OutputToScreen  CONSTBlockLen128  ESC1bx  TYPE  KeyDefRECORD  
Length1..61  CommCharsARRAY1..20 OF CHAR  END  PKeyDefPOINk(*Del *)  MainTable0c
xDoFind(*Ctrl L*) MainTable1fxDelBack(*- on Osborne 1*)    (*The next key,  assi
gned to Endinterpret is called,  'Menu' in the documentation. That is, to proces
s a menu,  we drop out of edit mode. The calling routine (Me) the calls  the men
u routine - not this module*)    MainTable0fxEndinterpret(*Ctrl O*)  END Keyboar
d.  DOC J XScTER TO KeyDef  MacroPointRECORD  PosCARDINAL  DefPKeyDef  CountINTE
GER  END  PKeyChainPOINTER TO KeyChain  KeyChainRECORD  chCHAR  NextAltPKeyChain
 (*next alternative*)  CASE TerminatorBOOLEAN OF  TRUE (*terminates a key sequen
ce *)  DefPKeyDef  FALSE (*in the moddle of a key sequence *)  NextCharPKeyChain
  END (*CASE*)  END(*RECORD*)    VAR  chCHAR  CommandsARRAY''..'Z' OF PKeyDef  M
acroDepthCARDINAL0  MacroStackARRAY1..5 OF MacroPoint  LearnchCHAR  LearnLenCARD
INAL  LearningBOOLEANFALSE  TextARRAY1..60 OF CHAR  iCARDINAL  KeySeqARRAY1..10 
OF CHAR  KeyChainBasePKeyChainNIL(*base of table of key defs*)  LastKeyPos,KeyPo
sPKeyChain(*pointers used for searching*)  LearnKeyPKeyChain(*pointer to key bei
ng defined*)    (*keep a circular buffer of characters while matching is  happen
ing*)    inCARDINAL1  outCARDINAL1  lookCARDINAL  BufferARRAY1..11 OF CHAR  Show
ChangeBOOLEAN DEFINITION MODULE Macros    (*A simple macro processor for  the ed
itor    Can probably be easily hacked for other purposes*)    VARFoundBOOLEANTRU
E    (*Found is a variable which, if set to false, will abort all  macros *)  PR
OCEDURE LearnMacro  PROCEDURE DefMacro    (*define a macro *)    PROCEDURE ReadA
Char(VAR chCHAR)    (*read next character - from macro if one active      - from
 terminal if not*)    PROCEDURE Macro(chCHARrepeatINTEGER)    (*start macro with
 given character value PROCEDURE SearchToNext(chCHAR)    (*Search for the charac
ter ch    KeyPos points to the first table  to examine  for a match  *)  BEGIN  
WHILE (KeyPosNIL) AND (KeyPos.chch) DO  KeyPosKeyPos.NextAlt  END  END SearchToN
ext  PROCEDURE BuildKeySeq    (*Enter a key sequence into the key sequence tree 
   On entry, KeySeq contains sequence to build    On exit, KeyPos points to entr
y for macro pointer*)  BEGIN  i1  KeyPosKeyChainBase  LastKeyPosNIL  (* First sc
an down common   (must be alpha)*)  PROCEDURE StoreMacros  PROCEDURE PrintMacros
  PROCEDURE CheckInterrupt()BOOLEAN  END Macros.  00 MOD L '  ELSERETURN 0 END  
END GetPosition    PROCEDURE SetPosition(FnFILEPosCARDINAL)  BEGIN  fFn  IF open
ed THEN  Search  Buffer.FileEntryEntryNo.FilePosPos  WriteFile  END  END SetPosi
tion    BEGIN  openedTRUE(*assume file c  R(*Learn a macro definition  called at
 either end of definition*)    BEGIN  IF NOT Learning THEN  GetDefChar  Learning
TRUE  LearnLen0  ELSE  LearnLenLearnLen-2  DefMacroText  LearningFALSE  END  END
 LearnMacro  PROCEDURE DefMacro  BEGIN  GetDefChar  IF (Learnch'A') AND (Learnch
'Z') OR (LearnchESC) THEN  GetString(Text,LearnLen,'Macro')  DefMacroText  END  
END DefMacro  PROCEDURE Macro(chCHARrepeatINTEGER)  VARiCARDINAL  BEGIN  chCAP(c
h)  IF the characters which have been read ahead  By ReadAChar in an attempt to 
resolve a macro    When ReadAChar is entered, if this buffer is not empty,  the 
first character is to be looked up to see if it is a   start of a key definition
*)  PROCEDURE IncPointer(VAR iCARDINAL)  BEGIN  IF iHIGH(Buffer) THEN i0 END  IN
C(i)  END IncPointer  BEGIN  lookout  IF SpecialSequence THEN     (*  is used fo
r function/arrow keys as a macro     so that repeat counts can still be used*)  
  Result'CharNIL  TerminatorFALSE  IF LastKeyPosNIL THEN  NextAltLastKeyPos.Next
Char  LastKeyPos.NextCharKeyPos  ELSE  NextAltKeyChainBase  KeyChainBaseKeyPos  
END  END  LastKeyPosKeyPos  INC(i)  END  LearnKeyKeyPos  END BuildKeySeq     PRO
CEDURE WaitForCh  BEGIN  IF NOT ShowChange THEN  ShowChangeTRUE  OutputToScreen(
TRUE)  Redisplay  END  REPEAT  BusyRead(ch)  UNTIL ch0x  END WaitForCh  PROCEDUR
E CheckInterrupt()BO'  SpecialSequenceFALSE  RETURN  END  KeyPosKeyChainBase  LO
OP  IF inlook THEN  ResultBufferlook  IncPointer(look)  ELSE  GetAChar(Result)  
BufferinResult  IncPointer(in)  lookin  END  SearchToNext(Result)  IF KeyPosNIL 
THEN  ResultBufferout  IncPointer(out)  RETURN  END  WITH KeyPos DO  IF Terminat
or THEN  outlook  inlook    (* we could add the macro   directly at this point (
the first  verOLEAN    (*Check the keyboard for an interupt (Control U)    Also,
 if Escape has been typed, stop terminal output  until another character is type
d*)    VARch1CHAR  BEGIN  BusyRead(ch1)  CASE ch1 OF   15xRETURN TRUE        1bx
ShowChangeFALSE      OutputToScreen(FALSE)  END  RETURN FALSE  END CheckInterrup
t  PROCEDURE GetAChar(VAR ch1CHAR)  BEGIN  IF MacroDepth0 THEN  WaitForCh  ch1ch
  IF Learning AND (LearnLenHIGH(Text)) THEN  INC(LearnLen)  TextLearnLension did
 so), but that would prevent the  use of repeat counts with function/arrow  keys
. So instead ESC  is returned, where  ESC  is always the macro we just found*)  
  Commands''Def  SpecialSequenceTRUE  ResultESC    RETURN  ELSE  KeyPosNextChar 
 END  END  END  END ReadAChar    PROCEDURE GetDefChar  VARTextARRAY1..1 OF CHAR 
 BEGIN  GetString(Text,LearnLen,'Char to define')  LearnchCAP(Text1)  IF Learnch
ESC THEN  ch  END  ELSE  WITH MacroStackMacroDepth DO  IF PosDef.Length THEN    
  DEC(Count)      IF CheckInterrupt() OR NOT Found THEN  MacroDepth1  Count0  EN
D      IF Count1 THEN  DEC(MacroDepth)      ELSE  Pos1  END      GetAChar(ch1)  
ELSE  ch1Def.CommCharsPos  INC(Pos)  END  END  END  END GetAChar  PROCEDURE AddM
acro(pPKeyDefrepeatINTEGER)  BEGIN  IF (pNIL) AND (MacroDepthHIGH(MacroStack)) T
HEN    GetString(KeySeq,LearnLen,'Key to define')  BuildKeySeq  END  END GetDefC
har  PROCEDURE DefMacroText  VARpPKeyDef  BEGIN  IF LearnLen0 THEN  ALLOCATE(p,T
SIZE(CARDINAL)+LearnLen)  IF LearnchESC THEN   LearnKey.Defp  LearnKey.Terminato
rTRUE  ELSE   CommandsLearnchp   END  WITH p DO  LengthLearnLen  FOR LearnLenLea
rnLen TO 1 BY -1 DO  CommCharsLearnLenTextLearnLen  END  END    END  END DefMacr
oText  PROCEDURE LearnMacro    (*make sure that macro is not recursive*)      FO
R i1 TO MacroDepth DO  IF MacroStacki.Defp THEN  ErrorMessage('Recursive macros!
',' ')  MacroDepth0  RETURN  END  END  INC(MacroDepth)  WITH MacroStackMacroDept
h DO  Pos1  Defp  Countrepeat  END(*WITH*)  END(*pNIL etc*)  END AddMacro  VARSp
ecialSequenceBOOLEANFALSE  PROCEDURE ReadAChar(VAR ResultCHAR)    (*read next ch
aracter, checking for arrows/function keys  in and out point to  Rs a label  Thi
s label must not be altered unless it is deleted  with DelPosition first*)    PR
OCEDURE LabelOp(VAR fEditFileDefineBOOLEANchCHAR)BOOLEAN    (*Define or set a la
bel  ch is a character from the set 0..9,B,K  *)    PROCEDURE DelChars(VAR fEdit
FilenumberINTEGER)    (*delete a number of characters  if number is 0, it has th
e following meanings  -1 delete to end of line  -2 delete entire line  -3 delete
 remainder of file*)  PROCEDURE InsChars(VAR fEditFileVAR SARRAY OF CHAR)    Lea
rnchESC  KeySeq'          '  OutKeySeq(1,KeyChainBase)    IF reply0 THEN  Blockr
eply0x  SeqWriteBlock(F,ADR(Block),BlockLen,reply)  END  Close(F)  END StoreMacr
os  PROCEDURE OutCh(chCHAR)  BEGIN  IF ch' ' THEN  Write('')Write(CHR(ORD(ch)+64
))  ELSE  Write(ch)  END  END OutCh  PROCEDURE PrintMacros  BEGIN  FOR ch'A' TO 
'Z' DO  IF CommandschNIL THEN       WITH Commandsch DO  OutCh(ch)  FOR i1 TO Len
gth DO   OutCh(CommCharsi ch' ' THEN chCHR(ORD(ch)+64) END  IF (ch'') AND (ch'Z'
) THEN  AddMacro(Commandsch,repeat)  END  END Macro  VARFFILE  replyINTEGER  PRO
CEDURE LoadMacros  VARBlockARRAY0..BlockLen-1 OF CHAR  BEGIN  LOOP  SeqReadBlock
(F,ADR(Block),BlockLen,reply)  IF replyBlockLen THEN EXIT END  reply0  WHILE Blo
ckreply0x DO  LearnLenORD(Blockreply)  LearnchBlockreply+1  IF LearnchESC THEN  
Moveup(ADR(Blockreply+2),ADR(KeySeq),10)  BuildKeySeq)   END  END      WriteLn  
    END  END  WriteString(' Enter any character to continue ')  WaitForCh  END P
rintMacros  BEGIN  FOR ch'' TO 'Z' DO CommandschNIL END  ShowChangeTRUE  Lookup(
F,'MACROS.DAT ',reply)  IF reply0 THEN  LoadMacros  END    END Macros.  )  Wurx,
cury,ReDisplay  FROM IntLogic IMPORT IAND  FROMFiles IMPORT Lookup,Close,FILE,Re
adBlock  FROMSYSTEM IMPORT ADR  CONST  replyreply+10  END    replyreply+2  FOR i
1 TO LearnLen DO  TextiBlockreply  INC(reply)  END  DefMacroText  END  END  END 
LoadMacros  PROCEDURE StoreMacros  VARBlockARRAY0..BlockLen-1 OF CHAR    PROCEDU
RE StoreOneMacro(pPKeyDef)  BEGIN  IF pNIL THEN  WITH p DO  IF (reply+Length+14)
BlockLen THEN  Blockreply0x  SeqWriteBlock(F,ADR(Block),BlockLen,reply)  reply0 
 END  BlockreplyCHR(Length)  BlocDEFINITION MODULE MakeEdits      (*Routines to 
edit a file    (i.e., actually make changes to the file)    D Moore 11 Jan 85*) 
   FROM Files IMPORT FileName    TYPEEditFile  Position    ErrorRecordRECORD  Er
rorNumCARDINAL  CharPCARDINAL  END  ErrorArrayARRAY0..9 OF ErrorRecord  VARError
ListErrorArray  ErrorCountCARDINAL    PROCEDURE OpenFile(VAR fEditFilefnFileName
VAR replyINTEGERPosCARDINAL)    (*Load the file into memory    If insufficient m
emory, returns replykreply+1Learnch  IF LearnchESC THEN  Moveup(ADR(KeySeq),ADR(
Blockreply+2),10)  replyreply+10  END  replyreply+2  FOR i1 TO Length DO  Blockr
eplyCommCharsi  INC(reply)  END  END(*WITH p*)  END (*IF NIL*)  END StoreOneMacr
o  PROCEDURE OutKeySeq(CharNoCARDINALpPKeyChain)  BEGIN  IF pNIL THEN  WITH p DO
  KeySeqCharNoch  IF Terminator THEN  StoreOneMacro(Def)  ELSE  OutKeySeq(CharNo
+1,NextChar)  KeySeqCh-3  if file not found, returns reply-2  reply0 if ok, retu
rns blocks read*)    PROCEDURE CloseFile(VAR fEditFileVAR replyINTEGER)    (*Wri
te out changes to an edit file and close it  Done returns false if out of disc s
pace*)    PROCEDURE AbandonFile(fEditFile)    (*Abandon changes to an edit file*
)  PROCEDURE GetPosition(VAR fEditFileVAR pPosition)  PROCEDURE SetPosition(VAR 
fEditFilepPosition)  (*get/set position in a file  GetPosition returns the curen
t position  DefineLabel definearNo+1' '  END  OutKeySeq(CharNo,NextAlt)  END  EN
D  END OutKeySeq  BEGIN  Learnch'A'  WHILE (CommandsLearnchNIL) AND (Learnch'Z')
 DO   LearnchCHR(ORD(Learnch)+1)  END  IF Learnch'Z' THEN RETURN END  Create(F,'
MACROS.DAT ',reply)  IF reply0 THEN  WriteString(' could not save macros file') 
 WriteLn  RETURN  END  IF reply0 THEN RETURN END  reply0  FOR Learnch'A' TO 'Z' 
DO StoreOneMacro(CommandsLearnch) END    (*Now output key sequences*  Rlock    P
ROCEDURE setcurpos(VAR fEditFile)  BEGIN  WITH f.CurPos DO  WorkingBlock  CharPo
sOffset  END  END setcurpos    PROCEDURE savecurpos(VAR fEditFile)  BEGIN  WITH 
f.CurPos DO  IF CharPosORD(Working.BlockLen) THEN   CharPosWorking.BlockLen   EN
D  BlockWorking  OffsetCharPos  END  END savecurpos  VARiINTEGER  PROCEDURE Back
up()BOOLEAN    (*back up a character position in the current file  returns TRUE 
if successful*)  BEGIN  IF CharPos0 THEN  lenINTEGER)  (*insert characters*)    
PROCEDURE Retrline(VAR fEditFileVAR len,posINTEGER  VAR pPositionVAR LinesmovedI
NTEGERLinesINTEGER)    (*return information about a line for the given file    l
en returns the length of the line  pos returns current position in the line (cha
racter number)  p   returns position of start of line  Linesmoved returns number
 of lines actually moved - but only  if move was negative. Returns negative valu
e  lines (input) is number of lines to move from cuIMPLEMENTATION MODULE MakeEdi
ts      (*Routines to edit a file    (i.e., actually make changes to the file)  
  D Moore 11 Jan 85*)  FROM Files IMPORT FILE,Lookup,Create,SeqReadBlock,SeqWrit
eBlock,  MakeBAK,Close  FROMStorage IMPORT ALLOCATE,DEALLOCATE,FreeSpace  FROMSY
STEM IMPORT ADR,BYTE  FROM  FastMove IMPORT Moveup,Movedown,Searchup,Searchdown 
 FROMSetUpCall IMPORT MakeCall  IMPORTEditStatus  CONSTTextLen140(* must exceed 
a block on the disc     remaining space is for padding*)  rrent line  *)    PROC
EDURE ReadNextChar(VAR pPositionVAR chCHAR)  (*Read next character from a line  
p must be a position returned by Retrline or ReadCh - not GetPosition*)    PROCE
DURE PrepareString(sARRAY OF CHARlenINTEGER)    (*prepare a string for use in a 
find command*)    PROCEDURE BackOneChar(VAR fEditFile)BOOLEAN  PROCEDURE Forward
OneChar(VAR fEditFile)BOOLEAN    PROCEDURE FindString(VAR fEditFileBackwardsBOOL
EAN)BOOLEAN    (*Actually find the next occurrence of the string BlockSize128(* 
characters in a disc block*)  HeadRoom512(*minimum head room to leave between st
ack and heap*)  CR0dx  LF0ax  FF0cx  EOF1ax  TYPEPTextPOINTER TO Text  PPosition
POINTER TO Position  TextRECORD  BlockLenBYTE  CharsARRAY0..TextLen-1 OF CHAR  N
extPText(*next block*)  PredPText(*preceding block*)  END      PositionRECORD  B
lockPText  OffsetBYTE  END  EditFileRECORD  fFILE  ChainPText  CurPosPosition  L
abelsARRAY0.   Done returns true if one is found*)  PROCEDURE GetCurrentChar(VAR
 fEditFile)CHAR    (*Return character currently positioned to*)    PROCEDURE Cal
lWithFile(nameARRAY OF CHARVAR fEditFile)  PROCEDURE FileType(VAR fEditFile)CARD
INAL    (*Call program with file as parameter*)  PROCEDURE BlockCopy(VAR FromFil
e,ToFileEditFile)BOOLEAN  PROCEDURE BlockDel(VAR FromFileEditFile)BOOLEAN  PROCE
DURE DefineErrors(VAR fEditFile)  END MakeEdits.              .24 OF Position   
 (*labels 0 to 9 are  k0 to k9     10 is kB     11 is kk     12 through 14 are t
he positions in the windows     15 through 24 are error markers*)    END  VARDon
eBOOLEAN  replyINTEGER    (*variables used for text position during move operati
ons etc*)    WorkingPText  CharPosINTEGER  chCHAR  posPosition  pos1,pos2PPositi
on  Charno,CharsreadCARDINAL    PROCEDURE NewBlock  BEGIN  NEW(Working)  Working
.PredNIL  Working.NextNIL  END NewB( /+ ,-!s678D PrintMacros  BEGIN  FOR ch'' TO
 'Z' DO CommandschNIL END  ShowChangeTRUE  Lookup(F,'MACROS.DAT ',reply)  IF rep
ly0 THEN  LoadMacros  END    END Macros.  )  W02xWindow(*Ctrl B*)  MainTable17xS
crollUp(*Ctrl W*)  MainTable0bxDefLabel(*Ctrl K*)  MainTable7fxDelBac  Rcharacte
r position in the current file*)  BEGIN  INC(CharPos)  IF CharPosINTEGER(Working
.BlockLen) THEN    IF Working.NextNIL THEN  WorkingWorking.Next  CharPos0  ELSE 
 RETURN FALSE  END  END (*CharPosBlockLen*)  RETURN Working.CharsCharPosEOF  END
 Advance  PROCEDURE InsideBlock(VAR FEditFile)BOOLEAN    (*Check if current posi
tion is inside block *)  VARbPText  CouldBeBOOLEAN  BEGIN  setcurpos(F)  IF (F.L
abels10.BlockNIL) OR (F.Labels11.BlocSeqWriteBlock(f.f,ADR(b),BlockSize,  reply)
  pos0  IF replyBlockSize THEN EXIT END  END (*IF*)  bposCharsi  INC(pos)  END(*
FOR*)    IF Workingf.CurPos.Block THEN      EditStatus.SetPosition(f.f,Charno+OR
D(f.CurPos.Offset))      END  CharnoCharno+ORD(BlockLen)  WorkingNext  END(*WITH
 Working*)      END (*WHILE WorkingNIL and not disc full*)  FOR pospos TO BlockS
ize-1 DO bposEOF END  IF replyBlockSize THEN   Se IF Working.PredNIL THEN  Worki
ngWorking.Pred  CharPosWorking.BlockLen  ELSE  RETURN FALSE  END  END (*CharPos0
*)  DEC(CharPos)  RETURN TRUE  END Backup  PROCEDURE OpenFile(VAR fEditFilefnFil
eNameVAR replyINTEGERPosCARDINAL)  VARpPText  BEGIN  Lookup(f.f,fn,reply)  IF Po
s65535 THEN CharnoEditStatus.GetPosition(f.f)  ELSE CharnoPos END  Charsread0  I
F reply0 THEN   reply-2  RETURN  END  pNIL  reply0  FOR i0 TO HIGH(f.LabelqWrite
Block(f.f,ADR(b),BlockSize,reply)   END  Close(f.f)  IF replyBlockSize THEN repl
y-1  ELSE reply0 END  ELSEreply-2   END  END CloseFile      PROCEDURE AbandonFil
e(fEditFile)  VARpPText  (*Abandon changes to an edit file*)  BEGIN  Workingf.Ch
ain  WHILE WorkingNIL DO   pWorking.Next  DISPOSE(Working)  Workingp  END  END A
bandonFile  PROCEDURE GetPosition(VAR fEditFileVAR pPosition)  BEGIN  pf.CurPos 
 END GetPosition    PROCEDURE Ss) DO f.Labelsi.BlockNIL END  LOOP(*read in the f
ile*)  IF FreeSpace()HeadRoom THEN  AbandonFile(f)  reply-3  RETURN  END  NewBlo
ck  Working.Predp  IF pNIL THEN f.ChainWorking  ELSE p.NextWorking END  SeqReadB
lock(f.f,ADR(Working.Chars),BlockSize,i)  IF iBlockSize THEN (*end of file found
*)  IF pNIL THEN   p.NextNIL  DISPOSE(Working)  ELSE(*always keep at least one b
lock*)  Working.BlockLen1     Working.Chars0EOF etPosition(VAR fEditFilepPositio
n)  (*get/set position in a file*)  BEGIN  f.CurPosp    (*pointer may be pointin
g just after end of block  (after deletes), regularize that situation*)    WITH 
f.CurPos DO  IF     (OffsetBlock.BlockLen)   AND (Block.NextNIL) THEN  Offset0  
BlockBlock.Next  END  END   END SetPosition  PROCEDURE LabelOp(VAR fEditFileDefi
neBOOLEANchCHAR)BOOLEAN  (*  perform a label operation , return true if successf
ul  Define is true if t CharPos0  savecurpos(f)  END  EXIT  ELSE    WHILE (i0) A
ND (Working.Charsi-1EOF) DO  DEC(i)  END  IF (Working.Charsi-10ax) AND (iBlockSi
ze) THEN  INC(i)  Working.Charsi-1EOF  END  Working.BlockLeni  IF CharsreadCharn
o  THEN   CharPosCharno-Charsread  savecurpos(f)  pWorking  IF (Working.CharsCha
rPosLF)      AND Backup() THEN  savecurpos(f)  END  Workingp  END  Charsrhe oper
ation is a define label  it is false if it is a goto label  *)    VARiCARDINAL  
BEGIN  (*$A*)  chCAP(ch)  CASE ch OF  'B' i10  'K','K' i11  1x..3xiORD(ch)+11  '
0'..'9'iORD(ch)-ORD('0')  0b0x..0b9xiORD(ch)-0b0h+15  ELSE RETURN FALSE  END  IF
 Define THEN  GetPosition(f,f.Labelsi)  ELSE  IF f.Labelsi.BlockNIL THEN RETURN 
FALSE END  SetPosition(f,f.Labelsi)   END  RETURN TRUE  END LabelOp  PROCEDURE A
dvance()BOOLEAN    (*advance a eadCharsread+ORD(Working.BlockLen)  END  pWorking
  replyreply+1  END (*read file loop*)  Close(f.f)  END OpenFile    PROCEDURE Cl
oseFile(VAR fEditFileVAR replyINTEGER)  VAR  bARRAY0..BlockSize-1 OF CHAR  posIN
TEGER  BEGIN  MakeBAK(f.f,reply)  Charno1  IF reply0 THEN   Workingf.Chain  pos0
  replyBlockSize  LOOP      IF  (WorkingNIL) THEN EXIT END      WITH Working DO 
 FOR i0 TO INTEGER(BlockLen)-1 DO  IF posBlockSize THEN    RF (numberORD(BlockLe
n)) (*CharPos0*) THEN  (*Delete block*)    IF NextNIL THEN Next.PredPred END  IF
 PredNIL THEN   Pred.NextNext  DISPOSE(Working)  ELSIF NextNIL THEN   f.ChainNex
t  DISPOSE(Working)  ELSE(*only block in file so keep*)  BlockLen1  Working.Char
s0EOF  END(*PredNIL*)  ELSE  IF ORD(BlockLen)(CharPos+number) THEN      Movedown
(ADR(CharsCharPos+number),  ADR(CharsCharPos),  ORD(BlockLen)-ORD(CharP CharPosO
ffset  WorkingBlock  END  Charsread0  ireply  rFromFile.CurPos  qToFile.CurPos  
FromFile.CurPosFromFile.Labels10  LOOP  IF i0 THEN   EXIT   END  INC(Charsread) 
 cCharsreadWorking.CharsCharPos  IF (CharsreadHIGH(c)) OR (i1) THEN  savecurpos(
FromFile)  pFromFile.CurPos  ToFile.CurPosq  WHILE Charsread0 DO  IF CharsreadTh
ird THEN  InsChars(ToFile,c,Third)  CharsreadCharsread-Third  Movedown(ADR(ckNIL
) THEN  RETURN FALSE  END  bF.Labels10.Block    WHILE (bNIL) AND (bF.Labels11.Bl
ock) AND (bWorking) DO  bb.Next  END      (*if end precedes beginning of block*)
  CouldBebWorking  IF NOT CouldBe THEN RETURN FALSE END  IF bF.Labels10.Block TH
EN  (*in start block - check after label start*)  CouldBeCharPosORD(F.Labels10.O
ffset)  END  IF bF.Labels11.Block THEN  (*in start block - check after label sta
rt*)  CouldBeCouldBe AND (CharPosORD(Third+1),  ADR(c),Charsread)  ELSE  InsChar
s(ToFile,c,Charsread)  Charsread0  END  END  qToFile.CurPos  FromFile.CurPosp  s
etcurpos(FromFile)  END  IF NOT Advance() THEN EXIT (* never taken*) END  DEC(i)
  END(*LOOP*)  FromFile.CurPosr  ToFile.CurPosq  RETURN TRUE  END BlockCopy  PRO
CEDURE BlockDel(VAR FromFileEditFile)BOOLEAN  VARpPosition  BEGIN  IF NOT CheckB
lock(FromFile) THEN RETURN FALSE END  WITH FromFile DO  LaF.Labels11.Offset))  E
ND  IF CouldBe THEN  WHILE (bNIL) AND (bF.Labels11.Block) DO bb.Next END  CouldB
ebNIL  END  RETURN CouldBe  END InsideBlock    PROCEDURE CheckBlock(VAR FEditFil
e)BOOLEAN    (*Check if begin and end of block have been correctly set up*)    B
EGIN  IF (F.Labels10.BlockNIL) OR (F.Labels11.BlockNIL) THEN  RETURN FALSE  END 
 WorkingF.Labels10.Block  reply0    WHILE (WorkingNIL) AND (WorkingF.Labels11.Bl
ock) DO  replyreply+Obels25CurPos  CurPosLabels10          DelChars(FromFile,rep
ly)  CurPosLabels25  Labels25.BlockNIL  END  RETURN TRUE  END BlockDel  PROCEDUR
E RelocateLabels(VAR fEditFilenumberINTEGER)  (*Relocate labels for the current 
block  number is number of characters being deleted   (-ve for insertions)  *)  
BEGIN          FOR reply0 TO HIGH(f.Labels) DO  WITH f.Labelsreply DO  IF (Block
Working) AND (ORD(Offset)CharPos) THEN  IF (numberORD(Working.BlockLen)) RD(Work
ing.BlockLen)  WorkingWorking.Next  END    IF WorkingNIL THEN RETURN FALSE END  
  (*if end precedes beginning of block*)    replyreply+ORD(F.Labels11.Offset)-OR
D(F.Labels10.Offset)  RETURN reply0  END CheckBlock  PROCEDURE BlockCopy(VAR Fro
mFile,ToFileEditFile)BOOLEAN    (*Careful - Easy - Ouch!    FromFile and ToFile 
may be the same  variable*)    VARiINTEGER  cARRAY1..TextLen OF CHAR  p,q,rPosit
ion    (*This code is a little odd for the following reasonTHEN  BlockWorking.Ne
xt  Offset0  ELSIF (number+CharPos)ORD(Offset) THEN  OffsetCharPos  ELSE  Offset
ORD(Offset)-number  END(*IF*)  END(*IF BlockWorking etc*)  END (*WITH*)  END(*FO
R*)  END RelocateLabels      PROCEDURE DelChars(VAR fEditFilenumberINTEGER)    (
*delete a number of characters*)    PROCEDURE DelInBlock(numberINTEGER)    (*Per
form a delete which does not span a block*)  BEGIN  RelocateLabels(f,number)  WI
TH Working DO  I    1/InsChars cannot insert more than half a block of character
s  2/If you don't read at least a block at a time and the  to and from files are
 the same, you may have to change the  position in the from file to reflect inse
rtions, which is  awkward (though you could always add a temporary label)    The
refore, text is read and then inserted in up to three goes!*)    ThirdCARDINAL  
BEGIN  ThirdTextLen DIV 3  IF NOT CheckBlock(FromFile) THEN RETURN FALSE END  WI
TH FromFile.Labels10 DO   R  QC and QR*)  Workingf.Chain  CharPos0  pos0  ELSIF 
linestomove16736 THEN  WHILE Working.NextNIL DO  WorkingWorking.Next  END  CharP
osORD(Working.BlockLen)  IF Working.CharsCharPos-1EOF THEN  DEC(CharPos)  END  s
avecurpos(f)  pf.CurPos  posBackupLine()  f.CurPosp  ELSE      (*chase backwards
 until a CR, LF or FF is found and        calculate position in line*)      posB
ackupLine()      len0        (*now positioned to begi  OffsetORD(Offset)-left  E
ND  END  END    WITH MainBlock DO  Working.NextNext  IF NextNIL THEN Next.PredWo
rking END  NextWorking  Working.BlockLenORD(BlockLen)-left  BlockLenleft  Moveup
(ADR(CharsBlockLen),      ADR(Working.Chars),      left+1)  IF CharPosORD(BlockL
en) THEN WorkingMainBlock  ELSE CharPosCharPos-ORD(BlockLen) END  InsInBlock  EN
D(*WITH*)  END(*leftlen*)  savecurpos(f)  END InsChars  os)-number)  END  BlockL
enORD(BlockLen)-number  IF (NextNIL) AND (CharsBlockLen-1EOF) THEN  CharsBlockLe
nEOF  INC(BlockLen)   END  END(* Block not now empty*)  END(*WITH*)  END DelInBl
ock    VARNextBlockPText  BEGIN  setcurpos(f)  WHILE (number0) AND (WorkingNIL) 
DO  NextBlockWorking.Next  IF number(ORD(Working.BlockLen)-CharPos) THEN  DelInB
lock(number)  number0  ELSE  numbernumber-ORD(Working.BlockLen)+CharPos  DelIn  
  VARbBOOLEAN    PROCEDURE BackupLine()INTEGER    (*Backup to beginning of curre
nt line  returns number of characters backed up    after the call, the position 
is the first character  after of the line*)  VARposINTEGER  BEGIN  pos0  LOOP  I
F NOT Backup() THEN EXIT END  chWorking.CharsCharPos  IF ((chCR) OR (chLF) OR (c
hFF))  THEN   bAdvance()  EXIT   END  pospos+1  END (*LOOP*)  RETURN pos  END Ba
ckupLine  VARAdvanceOKBOOLEAN  PROCEDURE AdvanceLBlock(ORD(Working.BlockLen)-Cha
rPos)  END  IF (number0) OR (WorkingNIL) THEN   WorkingNextBlock  CharPos0   END
  END (*WHILE*)  IF WorkingNIL THEN   Workingf.Chain  WHILE Working.NextNIL DO W
orkingWorking.Next END  CharPosWorking.BlockLen  END(*deleted everything*)  save
curpos(f)  END DelChars    PROCEDURE InsChars(VAR fEditFileVAR SARRAY OF CHARlen
INTEGER)  (*insert characters*)  VARleft,followsINTEGER  MainBlockPText  PROCEDU
RE InsInBloine()INTEGER    (*move  to start of next line  returns characters adv
anced  positions to first character of next line*)  VARposINTEGER  bBOOLEAN  BEG
IN  AdvanceOKTRUE  pos0  LOOP  chWorking.CharsCharPos  IF chEOF THEN   AdvanceOK
FALSE  EXIT   END  IF (chCR) OR (chLF) OR (chFF) THEN   IF NOT Advance() THEN EX
IT END  chWorking.CharsCharPos  IF chLF THEN bAdvance() END  EXIT  END  INC(pos)
  IF NOT Advance() THEN   AdvanceOKFAck  VARstartINTEGER  iINTEGER  BEGIN    (*a
djust labels*)  RelocateLabels(f,-len)  start0  WITH Working DO  IF ORD(BlockLen
)CharPos THEN      Moveup(ADR(CharsCharPos),ADR(CharsCharPos+len),  ORD(BlockLen
)-CharPos)      END  BlockLenORD(BlockLen)+len  WHILE len0 DO  CharsCharPosSstar
t  INC(start)  DEC(len)  INC(CharPos)  END  END  END InsInBlock    (*If text wil
l fit in current block, enter in current block  else split block and entLSE  EXI
T   END  END (*LOOP*)  RETURN pos  END AdvanceLine      PROCEDURE Retrline(VAR f
EditFileVAR len,posINTEGERVAR pPosition  VAR linesmovedINTEGERlinestomoveINTEGER
)  (*return the position in the current line*)  VARchCHAR  iINTEGER  bBOOLEAN  B
EGIN  setcurpos(f)  linesmoved0    IF CharPosINTEGER(Working.BlockLen) THEN  Cha
rPosWorking.BlockLen   END    IF linestomove-16736 THEN (*go to top of file     
 This is a recent mod to speed up      er in appropriate block*)    BEGIN  setcu
rpos(f)  leftTextLen-ORD(Working.BlockLen)    (*left is characters left in block
*)    IF leftlen THEN InsInBlock  ELSE    (*split the block so that after insert
 the two blocks    will be approx equal in size*)  leftORD(Working.BlockLen) DIV
 2  MainBlockWorking  NewBlock  Working.PredMainBlock  FOR reply0 TO HIGH(f.Labe
ls) DO  WITH f.Labelsreply DO  IF (BlockMainBlock) AND (ORD(Offset)left) THEN  B
lockWorking  REND MoveToChar  PROCEDURE DefineErrors(VAR fEditFile)  VARiCARDINA
L  bBOOLEAN  BEGIN  IF ErrorCount0 THEN RETURN END  FOR i0 TO ErrorCount-1 DO  M
oveToChar(f,ErrorListi.CharP)  bLabelOp(f,TRUE,CHR(0b0h+i))  END  END DefineErro
rs    END MakeEdits.  0EDITSTATDEF 2EDITSTATMOD 3FILEOPS DEF 5R(s),ADR(String),l
en) END PrepareString  (*prepare a string for use in a find command*)    PROCEDU
RE FindString(VAR fEditFileBackwardsBOOLEAN)BOOLEAN      (*backwards not yet imp
lemented*)  BEGIN  IF StringLen0 THEN RETURN TRUE END  setcurpos(f)  IF Backward
s THEN  MatchCharStringStringLen-1  LOOP  IF NOT Backup() THEN EXIT END  IF (Wor
king.CharsCharPosMatchChar)     OR (Working.CharsCharPosCAP(MatchChar)) THEN  Ma
tchCharNoStringLen-2  savecurpos(f)  nning of current line  move required number
 of lines*)        IF linestomove0 THEN  WHILE (linestomove0)       AND ((CharPo
s0) OR (Working.PredNIL)) DO  INC(linestomove)    (*move back over cr/lf*)    IF
 Backup() AND (Working.CharsCharPosLF) THEN  bBackup()  END  DEC(linesmoved)  le
nBackupLine()  END      ELSE  WHILE (linestomove0)  AND (  (CharPosINTEGER(Worki
ng.BlockLen))      OR (Working.NextNIL)) DO     DEC(linestomove)  lenAdWHILE (Ma
tchCharNo0)      AND (Backup())      AND Matches() DO  DEC(MatchCharNo)  END  IF
 Backup() AND Matches()      AND (MatchCharNo0) THEN  RETURN TRUE  END  setcurpo
s(f)  END  END  ELSE  MatchCharString0  LOOP  IF NOT Advance() THEN EXIT END  IF
 (Working.CharsCharPosMatchChar)    OR (Working.CharsCharPosCAP(MatchChar)) THEN
  MatchCharNo1  savecurpos(f)  WHILE (MatchCharNoStringLen)      AND (Advancvanc
eLine()  IF AdvanceOK THEN INC(linesmoved) END  END  END      END  savecurpos(f)
pf.CurPos  IF Working.CharsCharPosEOF THEN    (*IF we are at end of file, reposi
tion to start    of current line as Retrline always returns    position as at st
art of line*)    lenBackupLine()  savecurpos(f)  pf.CurPos  poslen  ELSE  lenAdv
anceLine()  END  f.CurPosp  END Retrline  PROCEDURE ReadNextChar(VAR pPositionVA
R chCHAR)  BEGIN  WITH p DO  IF Offsete())      AND  Matches() DO  INC(MatchChar
No)  END  IF MatchCharNoStringLen THEN  RETURN TRUE  END  setcurpos(f)  END  END
  END  savecurpos(f)  RETURN FALSE  END FindString  (*Actually find the next occ
urrence of the string    Done returns true if one is found*)  PROCEDURE CallWith
File(NameARRAY OF CHARVAR fEditFile)  BEGIN  MakeCall(Name,f.f.f)  END CallWithF
ile  PROCEDURE FileType(VAR fEditFile)CARDINAL  BEGIN  IF f.f.f.fcbft'MOD' THBlo
ck.BlockLen THEN  IF Block.NextNIL THEN  chEOF  RETURN  ELSE  BlockBlock.Next  O
ffset0  END  END  chBlock.CharsOffset  IF chEOF THEN OffsetOffset+1 END  END  EN
D ReadNextChar  PROCEDURE GetCurrentChar(VAR fEditFile)CHAR    BEGIN  posf.CurPo
s  ReadNextChar(pos,ch)  RETURN ch  END GetCurrentChar  PROCEDURE  BackOneChar(V
AR fEditFile)BOOLEAN  BEGIN  setcurpos(f)  bBackup()  savecurpos(f)  RETURN b  E
ND BackOneCharEN RETURN 1  ELSIF f.f.f.fcbft'DEF' THEN RETURN 2  ELSE RETURN 0  
END  END FileType  PROCEDURE MoveToChar(VAR FileEditFilePosCARDINAL)  VARiCARDIN
ALwPText  BEGIN  WorkingFile.Chain  wNIL  i0  LOOP  IF WorkingNIL THEN EXIT END 
 ii+ORD(Working.BlockLen)  wWorking  IF iPos THEN WorkingWorking.Next ELSE EXIT 
END  END  IF WorkingNIL THEN   Workingw  CharPosw.BlockLen  ELSE  CharPosPos-(i-
ORD(Working.BlockLen))  END  savecurpos(File)      PROCEDURE  ForwardOneChar(VAR
 fEditFile)BOOLEAN  BEGIN  setcurpos(f)  bAdvance()  savecurpos(f)  RETURN b  EN
D ForwardOneChar  VARStringARRAY0..59 OF CHAR  StringLenCARDINAL0  MatchCharNoCA
RDINAL  MatchCharCHAR    PROCEDURE Matches()BOOLEAN  BEGIN  RETURN (Working.Char
sCharPosStringMatchCharNo)      OR (Working.CharsCharPosCAP(StringMatchCharNo)) 
 END Matches  PROCEDURE PrepareString(sARRAY OF CHARlenINTEGER)    BEGIN  String
Lenlen  Moveup(AD  Roes round for ever since there is an    explicit HALT in dom
enu to stop the program*)    IF FilesOpened0 THEN   Interpret  END  iCurrentWind
ow  kCurrentFile    (*remember current window since DomenuOp may change it*)    
jFilesOpened  DoMenuOp(*explicit exit in this module*)  IF (iCurrentWindow) AND 
(Windows0) THEN    (*after menu, redisplay window in which the    window popped 
up*)    DisplayFile(Filesk,i,curxi,curyi)  END  END (*LOOP*)    END m  (*Error d
isplay routine    If the editor is entered as the result of a compilation error,
  the command line consists of the name of the file which was  being compiled fo
llowed by an option. The option contains  two integer values in binary (so you c
annot enter same from  the CP/M prompt - or at least not easily). Giving the pos
ition  of the error in the file and the error number*)      (*Work through the p
arameters opening the files to be edited  Pars and ParCount have already been se
t up by a caMODULE me    (*Modula  editor    Dave Moore 1 Feb 85    This is the 
main module for the editor    I have added some comments at version 1.2 which sh
ould be   worth reading if you are trying to learn to write in Modula-2  *)    F
ROM EditControl IMPORT Files,FilesOpened,curx,cury,CurrentWindow,ChangeWindow,  
ResetScreenPos,CurrentFile  FROM EditDisplay IMPORT ErrorMessage,SetWindows,Disp
layFile,Windows,  DisplayError,ErrorOrdinal    FROM DoMenu IMPORT DoMenuOp,Open 
   FROM KeyBoard IMPORT Interpll to  the Command module*)    PROCEDURE OpenFiles
  VARkINTEGER  FilePositionCARDINAL  BEGIN    (*check for option giving error nu
mber and position*)  ErrorCount0  ErrorOrdinal0  WITH ParsParCount-1 DO  IF Clas
soption THEN  ErrorCountFilePos  Moveup(ADR(Chars2),ADR(ErrorList),4*ErrorCount)
  DEC(ParCount)  ELSE  FilePosition65535  END(*IF*)  END  FOR k0 TO ParCount-1 D
O  WITH Parsk DO    (* Note the extension below      As of V1.2, The compret  FR
OMMakeEdit IMPORT DefineErrors,ErrorList,ErrorCount  FROMFastMove IMPORT Moveup 
 (*  The modules above are part of the editor  The following modules are all gen
eral purpose modules  *)    FROM Command IMPORT Parclass,name,string,option,    
 Text,Parameter,GetParams    (*Command cracks the command line parameters which 
are set up  by CP/M at address 80  *)    FROM Files IMPORT FileName,FILE,Lookup,
ReadBlock,SetBlock    (*Files is the file oriented block level IO system*)    FR
OM SYSTEM Iiler allows you to type break with types    and variables more than t
wo bytes in length, which simplifys    this code greately. What is happening is 
that Chars is really    of type ARRAYsomething OF CHAR, and is not the same as F
ileName      By putting the variable in FileName(), its type is changed to    be
 FileName. This isn't really a coercion since the data is not    altered in any 
way. It simply defeats the compiler's type    checking.  *)     Open(FileName(Ch
ars),FilePosition)  MPORT ADR    FROM Storage IMPORT FullUp    (*Terminal is the
 standard terminal input-output module    It is also possible to do Input-Output
 to the terminal  through the modules Streams and InOut, but these  increase the
 size of the program and are only required if   you want to do more powerful thi
ngs, such as file  redirection and number conversion. If all you want is number 
  conversion, SmallIO can be used *)     VARParsARRAY0..3 OF Parameter  ParCount
INTEGER    (*Pars is an array intEND  END  IF ErrorCount0 THEN DefineErrors(File
sCurrentFile) END  END OpenFiles  PROCEDURE MemFull  BEGIN  ErrorMessage(' Memor
y is full - please save files now',' ')  DoMenuOp  END MemFull  VARcccCHAR  BEGI
N    (*GetParams reads the parameters from the command line*)    FullUpMemFull  
GetParams(Pars,ParCount)  FilesOpened0  IF ParCount0 THEN OpenFiles END  IF Erro
rCount0 THEN DisplayError END  IF FilesOpened0 THEN ChangeWindow(1) END  LOOP   
 (*this loop go which Command will place  the parameters entered on the command 
line    It need only be as large as the number of parameters  you expect to be e
ntered on the command line    The editor expects up to four parameters three  fi
le names and some options, although the options  are currently only used by the 
compiler when it   links to the editor after an error and in that  case, there i
s only one other parameter  *)    kINTEGER  i,jCARDINAL  replyINTEGER  fnFileNam
e  chCHAR    REND  END (*FOR*)    (*finish off current column*)    IF y1(y+1) TH
EN  WHILE jdepth DO  Gotoxy(x1,y1)  WriteString('           ')  INC(j)  INC(y1) 
 END  END    (*accept an option*)    LOOP    (*inverse currently selected option
*)    x1x+1  y1y+1+OptionNo  WHILE y1(y+depth+1) DO  y1y1-depth  x1x1+width+1  E
ND  Gotoxy(x1,y1)  ScreenControl(Inverse)  WriteString(TextOptionNo)  ScreenCont
rol(Normal)  Gotoxy(x1,y1)  REPEAT   as is escape*)    FROMScreenIOIMPORTGotoxy,
DrawBox,Dim,StartGraph,  EndGraph,Vertical,Inverse,Normal,  ScreenControl,RingBe
ll  FROMTerminalIMPORT WriteString,Read,Write,BusyRead  CONSTwidth11(*width of o
ne option*)  ESC1bx  CR0dx  CtrlX18x  CtrlE05x  CtrlD04x  CtrlS13x  LF0ax  BS08x
  PROCEDURE GetFromMenu(VAR TextARRAY OF MenuTextx,yCARDINAL  depth,columnsCARDI
NAL)CARDINAL    (* Text is the text to display      x and y are the position for
 the top lefte.  END (*CharPosBlockLen*)  RETURN Working.CharsCharPosEOF  END Ad
vance    PROCEDURE CheckBlock(e15FEB87 DOC PQ eFIXES   DOC sPG%tFIXES   BAK pP! 
 DEC(i)  END(*LOOP*)  FromFile.CurPosr  ToFile.CurPosq  RETURN TRUE  END BlockCo
py  PROCEDURE BlockDel(VAR FromFileEditFile)BOOLEAN  VARpPosition  BEGIN  IF NOT
 CheckBlock(FromFile) THEN RETURN FALSE END  WITH FromFile DO  La corner of the 
box  depth is the number of options in a column  columns is the number of column
s that will be required*)    VARx1,y1CARDINAL  i,jCARDINAL  OptionNoCARDINAL  ch
CHAR  PROCEDURE ChangeOption(byINTEGER)    (*change the current option number y 
given increment    ensure it remains in range*)  BEGIN  byby+INTEGER(OptionNo)  
IF by0 THEN byHIGH(Text)   ELSIF byHIGH(Text) THEN by0 END  OptionNoby  END Chan
geOption  PROCEDURE ChangePos    (*Change position using fDEFINITION MODULE Menu
    (*Menu driver    Bring up a menu at selected point on screen and accept an o
ption    options can be selected either by striking first character of    option
 or by entering option no (limited to 0-9)    option 0 is always exit without se
lection as is escape*)    TYPEMenuTextARRAY1..11 OF CHAR    PROCEDURE GetFromMen
u(VAR TextARRAY OF MenuTextx,yCARDINAL  depth,columnsCARDINAL)CARDINAL    (* Tex
t is the text to display    x and y are the position for the top lefirst charact
er of menu as option  Always move - so that if more than one command starts with
  the same character you can get to other than the first *)  VARiINTEGER  BEGIN 
 iHIGH(Text)  REPEAT  ChangeOption(1)  DEC(i)  UNTIL (i0) OR (CAP(TextOptionNo1)
CAP(ch))  END ChangePos  BEGIN  (*draw the box*)    x1x+(width+1)*columns  y1y+d
epth+1  DrawBox(x,y1,x1,y)  ScreenControl(Dim)  ScreenControl(StartGraph)  FOR i
1 TO columns-1 DO  x1x+i*(width+1)  FOR jy+1 t corner of the box  depth is the n
umber of options in a column  columns is the number of columns that will be requ
ired*)    END Menu.    END  savecurpos(f)  pf.CurPos  posBackupLine()  f.CurPosp
  ELSE      (*chase backwards until a CR, LF or FF is found and        calculate
 position in line*)      posBackupLine()      len0        (*now positioned to be
giTO y1-1 DO  Gotoxy(x1,j)  ScreenControl(Vertical)  END  END  ScreenControl(End
Graph)  ScreenControl(Normal)    (*we now have a box around the menu with dim ba
rs between columns*)    OptionNo0(*actually one less than value returned*)  j0(*
row number*)  x1x+1(*position for text*)  y1y+1  FOR i0 TO HIGH(Text) DO  Gotoxy
(x1,y1)  WriteString(Texti)  INC(j)  IF jdepth THEN (*next column*)  x1x1+width+
1  y1y+1  j0  ELSE  INC(y1)  (*menu handler    Copyright Dave Moore FTL Modula-2
 1986    ModificationsChanged to allow position to option using first  letter of
 option. If more than one option starts  with a given letter, always moves to ne
xt *)      IMPLEMENTATION MODULE Menu    (*Menu driver    Bring up a menu at sel
ected point on screen and accept an option    options can be selected either by 
striking first character of    option or by entering option no (limited to 0-9) 
   option 0 is always exit without selection  RIMPLEMENTATION MODULE ScreenDummy
  IMPORTScreenIO    PROCEDURE ClearScreen  BEGIN  ScreenIO.ScreenControl(ScreenI
O.ClearScreen)  END ClearScreen  PROCEDURE Gotoxy(x,yCARDINAL)  BEGIN  ScreenIO.
Gotoxy(x,y)  END Gotoxy  PROCEDURE RingBell  BEGIN  ScreenIO.ScreenControl(Scree
nIO.RingBell)  END RingBell  PROCEDURE OutputToScreen(bBOOLEAN)  BEGIN  ScreenIO
.OutputToScreen(b)  END OutputToScreen  PROCEDURE  DrawBox(x1,y1,x2,y2CARDINAL) 
 BEGIN  ScreenIO.DrawBox(x1,y1,x2,y2)  END DrawBoIMPLEMENTATION MODULE ResetDisc
  FROMCPM IMPORT BDOS,rsdfc  PROCEDURE ResetAllDiscs  VARcCARDINAL  BEGIN  cBDOS
(rsdfc,03fh)  END ResetAllDiscs  END ResetDisc.  rCountFilePos  Moveup(ADR(Chars
2),ADR(ErrorList),4*ErrorCount)  DEC(ParCount)  ELSE  FilePosition65535  END(*IF
*)  END  FOR k0 TO ParCount-1 DO  WITH Parsk DO    (* Note the extension below  
    As of V1.2, The compBusyRead(ch)  UNTIL ch0x  Gotoxy(x1,y1)  ScreenControl(N
ormal)  WriteString(TextOptionNo)  CASE CAP(ch) OF  ESC,' ' RETURN 0  CR  RETURN
 OptionNo+1  CtrlS,BSChangeOption(-depth)  CtrlEChangeOption(-1)  CtrlDChangeOpt
ion(depth)  CtrlX,LFChangeOption(1)  'A'..'Z'ChangePos  ELSE ScreenControl(RingB
ell)  END(*case*)  END(*LOOP*)  END GetFromMenu  END Menu.   END  LocLoc+128  EN
D  END CompBin.   ForwardOneChar  VARStringARRAY0..59 OF CHAR  StringLenCARDINAL
0  MatchCharNoCARDINAL  MatchCharCHAR    PROCEDURE Matches()BOOLEAN  BEGIN  RETU
RN (Working.CharsCharPosStringMatchCharNo)      OR (Working.CharsCharPosCAP(Stri
ngMatchCharNo))  END Matches  PROCEDURE PrepareString(sARRAY OF CHARlenINTEGER) 
   BEGIN  StringLenlen  Moveup(ADDEFINITION MODULE ScreenDummy    (*this module 
was written to enable  several modules to be compiled  on machines with tight TP
A's. The same  thing can be done with other modules if  your TPA is tighter than
 that of my test  machine.    What has been done is to replace a large  symbol t
able (that of ScreenIO) with a   small symbol table (this module). This  reduces
 the symbol table space used by the  calling modules. This is further discussed 
 in the manual.  *)  PROCEDURE ClearScreen  PROCEDUDEFINITION MODULE ResetDisc  
PROCEDURE ResetAllDiscs  END ResetDisc.   do Input-Output to the terminal  throu
gh the modules Streams and InOut, but these  increase the size of the program an
d are only required if   you want to do more powerful things, such as file  redi
rection and number conversion. If all you want is number   conversion, SmallIO c
an be used *)     VARParsARRAY0..3 OF Parameter  ParCountINTEGER    (*Pars is an
 array intRE Gotoxy(x,yCARDINAL)  PROCEDURE RingBell  PROCEDURE OutputToScreen(b
BOOLEAN)  PROCEDURE  DrawBox(x1,y1,x2,y2CARDINAL)  END ScreenDummy.  Opened  DoM
enuOp(*explicit exit in this module*)  IF (iCurrentWindow) AND (Windows0) THEN  
  (*after menu, redisplay window in which the    window popped up*)    DisplayFi
le(Filesk,i,curxi,curyi)  END  END (*LOOP*)    END m  RDINAL)  PROCEDURE OutputT
oScreen(TurnOnBOOLEAN)    (*Call this routine with FALSE to prevent output going
 to the  screen. This allows you to suppress output while large amounts  of scre
en alterations are being made to speed up a program. Of  course, you must re-ena
ble screen output and then re-draw the  screen later. This is used by the editor
 to suppress screen  alterations during execution of repeats *)  END ScreenIO.  
dinates and after the  cursor address command.    MoveLeft,MoveRight,MoveDown,Mo
veUp    Cursor move commands  *)  (*You should not need to use the next few type
 declarations  They are included here for use by the configuration program*)    
  PROCEDURE Gotoxy(x,yCARDINAL)    (*Position to given coordinates  top left is 
always 0,0, which means that  the bigger y is, the further down the screen    x 
is column, y is row    A 'Standard' Screen is 80 by 24. The limit is set by  the
 tx  END ScreenDummy.    e selected either by striking first character of    opt
ion or by entering option no (limited to 0-9)    option 0 is always exit without
 selection as is escape*)    TYPEMenuTextARRAY1..11 OF CHAR    PROCEDURE GetFrom
Menu(VAR TextARRAY OF MenuTextx,yCARDINAL  depth,columnsCARDINAL)CARDINAL    (* 
Text is the text to display    x and y are the position for the top leferminal d
efinition file*)    PROCEDURE LoadTermCode(filenameFileName)    (*Load the termi
nal definition for the current terminal    filename is the name of the file to r
ead    Normally, when the program is loaded, the file  'TERMINAL.COD' is loaded 
from the logged in disc  This routine only needs to be used if that  file is not
 the one to use (eg, to swap screens*)         PROCEDURE ScreenControl(sEdits)  
  (*Perform a screen control operation*)    PROCEDURE  DrawBox(x1,y1,x2,y2CARDIN
AL)DEFINITION MODULE ScreenIO    (*Screen handling routines for cursor position,
 attribute etc    Specific to this compiler*)    FROMSYSTEM IMPORT BYTE  FROMFil
es IMPORT FileName  TYPEEdits(Dim,Bright,Normal,Inverse,Blink,StartGraph,EndGrap
h,  DelChar,DelLine,InsChar,InsLine,DelEol,DelEos,ClearScreen,  Horizontal,Verti
cal,CornerLL,CornerUL,CornerUR,CornerLR,  Startxy,MiddleXY,EndXY,RingBell,MoveLe
ft,MoveRight,  MoveDown,MoveUp)    (*The editting mnemonics have the following m
eaning     Di    (*draw a box for a window on the screen    x1,y1  is the lower 
left corner  x2,y2  is upper right corner*)  PROCEDURE Clip(x1,y1,x2,y2CARDINAL)
  (*Set clip boundaries  used by Windows when drawing boxes so that only the  pa
rts of the boxes masked are re-drawn  has no effect except in DrawBox*)  VARScre
enDepth,ScreenWidthCARDINAL  MadeChangeBOOLEAN    (*Control is the current contr
ol code set for the terminal    MadeChange is TRUE on return from ScreenControl 
if the   requirem,Bright,Normal,Inverse,Blink    Enter the given mode. Modes sho
uld not be combined  as too much variation exists between terminals in  this are
a    StartGraph,EndGraph    Enter and exit graphic character set mode  Used for 
drawing bars around windows  If your terminal can do this with ordinary characte
rs,  set these sequences empty and put the required   characters in the sequence
s below    DelChar,DelLine,InsChar,InsLine,DelEol,DelEos,ClearScreen    Perform 
the various edittd code is implemented, else false    EditDisp contains code to 
simulate some codes when they  are not implemented*)    (*New routines added at 
version 1.02    These routines move the resposibilty for scrolling within a wind
ow from  EditStat to ScreenIO    This is done so that, when working with the mem
ory mapped version of ScreenIO,  The Bars need not jump up and down when a windo
w is scrolled*)  PROCEDURE ScrollWindowUp(StartLine,EndLineCARDINAL)  PROCEDURE 
ScrollWindowDown(StartLine,EndLineCARing sequences  DelEol deletes from under cu
rsor to end of line  DelEos deletes from under cursor to end of screen  Clearscr
een homes the cursor as well (to top left)    Horizontal,Vertical,CornerLL,Corne
rUL,CornerUR,CornerLR    Character sequences to draw horizontal and vertical  ba
rs around windows and to do the corners (lower left,  upper left, upper right,lo
wer right)    Startxy,MiddleXY,EndXY    The character sequences to start a curso
r address  command, for between the co-or  RIF Active AND OutputEnabled THEN  WI
TH Control DO  Gotoxy(x1,y1)  ScreenControl(StartGraph)  InBound(x1,y1,CornerLL)
  FOR ix1+1 TO x2-1 DO InBound(i,y1,Horizontal) END  InBound(x2,y1,CornerLR)  Go
toxy(x1,y2)  InBound(x1,y2,CornerUL)  FOR ix1+1 TO x2-1 DO InBound(i,y2,Horizont
al) END  InBound(x2,y2,CornerUR)  FOR iy2+1 TO y1-1  DO  Gotoxy(x2,i)  InBound(x
2,i,Vertical)  END  FOR iy2+1 TO y1-1 DO  Gotoxy(x1,i)  InBound(x1,i,Vertical)  
END  END(ffset  jy+XYOffset  ELSE  iy+XYOffset  jx+XYOffset  END  IF Ascii THEN 
WriteAscii(i)  ELSE Write(CHR(i)) END  ScreenControl(MiddleXY)  IF Ascii THEN Wr
iteAscii(j)  ELSE Write(CHR(j)) END  ScreenControl(EndXY)  END (*WITH*)  IF ing 
THEN ScreenControl(StartGraph) END  END(*IF*)      END Gotoxy    PROCEDURE LoadT
ermCode(filenameFileName)  VARfnFILE  replyINTEGER    (*define a temporary area 
for reading of file  it must be equal in size to the size of IMPLEMENTATION MODU
LE ScreenIO  FROM Terminal IMPORT CharRoutine,CharEnabled  FROM Files IMPORT Loo
kup,FILE,ReadBlock  FROM FastMove IMPORT Moveup  FROM SYSTEM IMPORT ADR,SIZE,WOR
D  FROMCPM IMPORT wccfc,BDOS  (*Screen handling routines for cursor position, at
tribute etc    This module is specific to this compiler*)  TYPE  ControlSequence
RECORD  CharsARRAY1..7 OF CHAR  SeqLenBYTE  END      ControlCodesRECORD  EditSeq
uencesARRAY Edits OF ControlSequence  AsciiBOOLEAN (*true icontrol, padded  out 
to a multiple of 128 bytes*)    blockARRAY0..128*(SIZE(Control) DIV 128)+127 OF 
CHAR    (*Load the terminal definition for the current terminal    filename is t
he name of the file to read    Normally, when the program is loaded, the file  '
TERMINAL.COD' is loaded from the logged in disc  This routine only needs to be u
sed if that  file is not the one to use (eg, to swap screens*)     BEGIN  Lookup
(fn,filename,reply)  IF reply0 THEN ActiveFALSE  ELSE  ReadBlocf co-ordinates ou
t output as    ascii numbers rather than binary*)  ColumnFirstBOOLEAN  AddressIn
GraphBOOLEAN (*true if can change coordinates    in graph mode*)  CarriageReturn
BOOLEAN (*true if carriage return returns     to start of current row*)  ScreenD
epthCARDINAL  ScreenWidthCARDINAL  XYOffsetCARDINAL  END       VARControlControl
Codes  ActiveBOOLEAN  InGraphBOOLEAN  Lowx,Highx,Lowy,HighyCARDINAL  OutputEnabl
edBOOLEAN  (*PROCEDURE Write(iCHAR)k(fn,ADR(block),0,SIZE(block),reply)  Activer
eplySIZE(Control)  Moveup(ADR(block),ADR(Control),SIZE(Control))  END  ScreenWid
thControl.ScreenWidth  ScreenDepthControl.ScreenDepth  END LoadTermCode    PROCE
DURE ScreenControl(sEdits)    (*Perform a screen control operation*)  VARiCARDIN
AL  BEGIN  IF Active AND OutputEnabled THEN  WITH Control.EditSequencess DO  Mad
eChangeSeqLen0  FOR i1 TO ORD(SeqLen) DO Write(Charsi) END  END  IF NOT Control.
AddressInG  BEGIN  IF (i' ') AND (i'z') THEN Terminal.Write(i)  ELSE   Terminal.
Write('')  WriteHex(ORD(i),3)  Terminal.Write('')  END  END Write*)  PROCEDURE W
rite(bCHAR)  VARiINTEGER(*needed to avoid conflict with global*)  BEGIN  IF Outp
utEnabled THEN  iBDOS(wccfc,WORD(b))  END  END Write  PROCEDURE WriteAscii(iINTE
GER)  VARTextARRAY1..3 OF CHAR  j,kINTEGER  BEGIN  j3  WHILE (j0) AND (i0) DO  k
i DIV 10  TextjCHR(i-10*k+ORD('0'))  ik  jj-1raph THEN  IF sStartGraph THEN InGr
aphTRUE  ELSIF sEndGraph THEN InGraphFALSE END  END  ELSE  MadeChangeFALSE  END 
 END ScreenControl  PROCEDURE InBound(x,yCARDINALchEdits)  BEGIN  IF (xLowx) AND
 (xHighx)    AND(yLowy) AND (yHighy) THEN   ScreenControl(ch)  END  END InBound 
 PROCEDURE  DrawBox(x1,y1,x2,y2CARDINAL)    (*draw a box for a window on the scr
een    x1,y1  is the lower left corner  x2,y2  is upper right corner*)  VARiCARD
INAL  BEGIN        END  FOR kj+1 TO 3 DO Write(Textk) END  END WriteAscii   PROC
EDURE Gotoxy(x,yCARDINAL)    (*Position to given coordinates  top left is always
 0,0     x is column, y is row    A 'Standard' Screen is 80 by 24. The limit is 
set by  the terminal definition file*)  VARi,jINTEGER  ingBOOLEAN  BEGIN      IF
 Active AND OutputEnabled THEN  WITH Control DO  ingInGraph  IF InGraph THEN Scr
eenControl(EndGraph) END  ScreenControl(Startxy)  IF ColumnFirst THEN  ix+XYO  R
 END SetUpCall.     FROMSYSTEM IMPORT BYTE  FROMFiles IMPORT FileName  TYPEEdits
(Dim,Bright,Normal,Inverse,Blink,StartGraph,EndGraph,  DelChar,DelLine,InsChar,I
nsLine,DelEol,DelEos,ClearScreen,  Horizontal,Vertical,CornerLL,CornerUL,CornerU
R,CornerLR,  Startxy,MiddleXY,EndXY,RingBell,MoveLeft,MoveRight,  MoveDown,MoveU
p)    (*The editting mnemonics have the following meaning     Di*WITH Control*) 
 ScreenControl(EndGraph)  END (*IF Active*)      END DrawBox  PROCEDURE Clip(x1,
y1,x2,y2CARDINAL)  BEGIN  Lowxx1  Highxx2  Lowyy2  Highyy1  END Clip  PROCEDURE 
ScrollWindowUp(StartofWindow,EndofWindowCARDINAL)  BEGIN  Gotoxy(0,EndofWindow) 
 ScreenControl(DelLine)  Gotoxy(0,StartofWindow)  ScreenControl(InsLine)  END Sc
rollWindowUp  PROCEDURE ScrollWindowDown(StartofWindow,EndofWindowCARDINAL)  BEG
IN  Gotoxy(0,StartofWindow)  ScreenControl(DelLine) IMPLEMENTATION MODULE SetUpC
all    (*SET Up call parameters for a program and chain to it  *)  FROMChain IMP
ORT LoadAndExecute  FROMSYSTEM IMPORT BYTE  (*Low core variables*)  VARfcb15chfc
b  fcb26chfcb  commandlen80hBYTE  command81hARRAY0..80 OF CHAR  i,jINTEGER  PROC
EDURE MakeCall(prognameARRAY OF CHARVAR ffcb)  BEGIN   fcb1f  fcb2.fcbdn0  fcb2.
fcbfn1' '  (*set up command line*)    i0  j1  IF fcb1.fcbdn0 THEN  commandiCHR(O
RD(fcb1.fcbdn)+ Gotoxy(0,EndofWindow)     ScreenControl(InsLine)  ScreenControl(
DelEol)     END ScrollWindowDown    (*Cursor blink routine - only supported in m
emory mapped  version of screenio*)  PROCEDURE OutputToScreen(OnBOOLEAN)  BEGIN 
 OutputEnabledOn  END OutputToScreen    BEGIN(*Initialisation part*)  CharRoutin
eWrite  CharEnabledTRUE    InGraphFALSE  OutputEnabledTRUE  LoadTermCode('CONTRO
L.DAT')  Lowx0Lowy0  Highx999Highy999  ScreenWidthControl.ScreenWidth  ORD('A')-
1)  INC(i)  commandi''  INC(i)  END  WHILE (j8) AND (fcb1.fcbfnj' ') DO  command
ifcb1.fcbfnj  INC(i)  INC(j)  END  j1  commandi'.'  INC(i)  WHILE (j3) AND (f.fc
bftj' ') DO  commandifcb1.fcbftj  INC(i)  INC(j)  END  j0  WHILE (jHIGH(progname
)) AND (prognamej'') DO INC(j) END  IF (jHIGH(progname)) THEN   commandi''  INC(
i)  commandiprognamej+1  INC(i)  END  commandleni  f.fcbfScreenDepthControl.Scre
enDepth  ScreenControl(ClearScreen)  END ScreenIO.  END  setcurpos(f)  END  END 
 END  savecurpos(f)  RETURN FALSE  END FindString  (*Actually find the next occu
rrence of the string    Done returns true if one is found*)  PROCEDURE CallWithF
ile(NameARRAY OF CHARVAR fEditFile)  BEGIN  MakeCall(Name,f.f.f)  END CallWithFi
le  PROCEDURE FileType(VAR fEditFile)CARDINAL  BEGIN  IF f.f.f.fcbft'MOD' THn'  
      '  FOR i0 TO j-1 DO  f.fcbfni+1prognamei  END  f.fcbft'COM'  f.fcbdn0  f.f
cbex0  f.fcbcr0  LoadAndExecute(f)  END MakeCall  END SetUpCall.    ded from the
 logged in disc  This routine only needs to be used if that  file is not the one
 to use (eg, to swap screens*)         PROCEDURE ScreenControl(sEdits)    (*Perf
orm a screen control operation*)    PROCEDURE  DrawBox(x1,y1,x2,y2CARDINAL)DEFIN
ITION MODULE SetUpCall    (*SET Up call parameters for a program and chain to it
    This module is used by the editor for calling the  compilers.    The second 
parameter is the fcb for the file which is to be compiled    It will be set up o
n the command line as a parameter. It will be followed  by /E as an option.    I
f this is too clever for your requirements, you could use the module  'Chain' di
rectly.  *)    FROM CPM IMPORT fcb,alfa  PROCEDURE MakeCall(prognameARRAY OF CHA
RVAR ffcb)   Rmd screenio.def  md screendu.def  md resetdis.def  m2 screenio.mod
  md makeedit.def  md editstat.def  m2 makeedit.mod  md editcont.def  md macros.
def  md menu.def  md domenu.def  md editdisp.def  md setupcal.def  md editcont.d
ef  md keyboard.def  m2 menu.mod  m2 editstat.mod  m2 macros.mod  m2 domenu.mod 
 m2 editdisp.mod  m2 editcont.mod  m2 me.mod  m2 screendu.mod  m2 resetdis.mod  
m2 keyboard.mod  m2 setupcal.mod  m2 macros.mod  m2 makeedit.mod  m2 me.mod  ml 
me/d  e.mod  m2 screendu.mod  m2 resetdis.mod  R  R  R   R           !R!!!!!!!!!
  "R"""""""""  #R#########  $R$$$$$$$$$  %R%%%%%%%%%  &R&&&&&&&&&  'R'''''''''
Tous droits réservés. Reproduction sans autorisation interdite. © Kukulcan