Ftl Modula 2 (UK) (Face 3B) (1988) [UTILITAIRE].dsk
   
Choose sector :
Size : 512 (Real : 512)
000000: ED 7B 06 00 11 7C 02 CD 3A 01 21 80 00 7E B7 20 .{...|..:.!..~.
000010: 0B 21 E0 02 11 5C 00 01 0C 00 ED B0 11 5C 00 D5 .!...\.......\..
000020: DD E1 DD 7E 01 FE 20 20 16 D5 13 21 E1 02 01 0B ...~.. ...!....
000030: 00 ED B0 D1 18 09 CD 3A 01 C7 0E 09 C3 05 00 AF .......:........
000040: 32 EC 02 32 ED 02 1A 32 EE 02 0E 11 CD 05 00 3C 2..2...2.......<
000050: 20 05 11 A6 02 18 DF F5 3A EE 02 B7 20 09 0E 19 .......:... ...
000060: CD 05 00 3C 32 EE 02 21 00 00 47 37 CB 15 CB 14 ...<2..!..G7....
000070: A7 10 F9 E5 0E 1D CD 05 00 D1 7D A3 6F 7C A2 B5 ..........}.o|..
000080: 28 05 11 98 02 18 AF F1 3D 87 87 87 87 87 5F 16 (.......=....._.
000090: 00 21 80 00 19 CD FB 01 0E 12 CD 05 00 3C 20 E8 .!...........< .
0000A0: 21 EF 02 E5 CD 24 02 3A ED 02 B7 20 1E 11 C9 02 !....$.:... ....
0000B0: CD 3A 01 0E 01 CD 05 00 F6 20 FE 71 28 3C FE 61 .:....... .q(<.a
0000C0: 20 05 32 ED 02 18 04 FE 79 20 03 CD 57 02 F5 11 .2.....y ..W...
0000D0: 95 02 CD 3A 01 F1 E1 FE 70 3A EC 02 28 0C 11 0C ...:....p:..(...
0000E0: 00 19 3D 28 15 32 EC 02 18 B9 11 F4 FF 19 11 EF ..=(.2..........
0000F0: 02 B7 ED 52 19 38 03 3C 18 EB C7 23 E5 11 0C 00 ...R.8.<...#....
000100: 21 00 00 3A EC 02 B7 28 04 47 19 10 FD 11 EF 02 !..:...(.G......
000110: 19 F5 3A EE 02 77 F1 23 D1 EB 01 0B 00 ED B0 3C ..:..w.#.......<
000120: 32 EC 02 C9 7E 23 E5 C6 40 5F 0E 02 CD 05 00 1E 2...~#..@_......
000130: 3A 0E 02 CD 05 00 E1 06 0B E5 C5 3E 03 B8 20 09 :..........>.. .
000140: E5 1E 2E 0E 02 CD 05 00 E1 5E CB BB 0E 02 CD 05 .........^......
000150: 00 C1 E1 23 10 E3 C9 D1 E1 E5 D5 11 5C 00 01 0C ...#........\...
000160: 00 ED B0 11 5C 00 D5 DD E1 DD CB 09 7E 20 07 0E ....\.......~ ..
000170: 13 CD 05 00 3C C0 11 B8 02 C3 3A 01 57 44 45 4C ....<.....:.WDEL
000180: 20 56 32 2E 30 20 28 43 29 20 31 39 38 37 20 48 V2.0 (C) 1987 H
000190: 69 53 6F 66 74 0D 0A 24 44 72 69 76 65 20 69 73 iSoft..$Drive is
0001A0: 20 52 2F 4F 21 24 4E 6F 20 6D 61 74 63 68 69 6E R/O!$No matchin
0001B0: 67 20 66 69 6C 65 73 24 20 20 43 61 6E 6E 6F 74 g files$ Cannot
0001C0: 20 64 65 6C 65 74 65 21 24 20 20 44 65 6C 65 74 delete!$ Delet
0001D0: 65 20 28 59 2F 4E 2F 41 2F 51 2F 50 29 3F 20 24 e (Y/N/A/Q/P)? $
0001E0: 00 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 00 00 00 00 .???????????....
0001F0: FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 FF 00 ................
Size : 512 (Real : 512)
000000: 2A 06 00 F9 11 00 FF 19 22 F9 04 11 51 11 A7 ED *......."...Q...
000010: 52 7C 1F 1F E6 3F 3C F5 11 68 04 CD 42 03 CD 38 R|...?<..h..B..8
000020: 04 F1 CD E9 03 3E 4B CD 47 03 11 8F 04 CD 42 03 .....>K.G.....B.
000030: 3A 5C 00 B7 20 03 CD 68 01 32 F3 04 21 6C 00 7E :\.. ..h.2..!l.~
000040: B7 20 1C 23 7E FE 2D 20 13 23 7E FE 51 28 04 FE . .#~.- .#~.Q(..
000050: 42 20 09 23 7E FE 20 20 03 32 6D 00 CD 68 01 32 B .#~. .2m..h.2
000060: F2 04 18 0B CD 42 03 C7 0E 19 CD 05 00 3C C9 11 .....B.......<..
000070: 46 05 01 0B 00 21 6D 00 7E FE 20 20 03 21 E7 04 F....!m.~. .!..
000080: ED B0 11 5C 00 D5 DD E1 DD 7E 01 FE 20 20 0B D5 ...\.....~.. ..
000090: 13 21 E7 04 01 0B 00 ED B0 D1 0E 11 CD 05 00 3C .!.............<
0000A0: 20 05 11 92 04 18 BD 3D 87 87 87 87 87 5F 16 00 ......=....._..
0000B0: 21 80 00 19 3A F4 04 F5 E5 21 51 05 B7 28 07 47 !...:....!Q..(.G
0000C0: 11 0B 00 19 10 FD D1 13 01 0B 00 EB ED B0 F1 3C ...............<
0000D0: 32 F4 04 0E 12 CD 05 00 3C 20 CC 21 51 05 E5 CD 2.......< .!Q...
0000E0: 9B 02 21 FE 04 CD 4C 03 11 C1 04 CD 42 03 21 22 ..!...L.....B.!"
0000F0: 05 E5 CD 4C 03 E1 11 FE 04 06 0C 1A BE 23 13 20 ...L.........#.
000100: 10 10 F8 11 C6 04 CD 42 03 3A FD 04 B7 28 3C 18 .......B.:...(<.
000110: 5B 3A F7 04 B7 20 2D 11 CD 04 CD 42 03 0E 01 CD [:... -....B....
000120: 05 00 F6 20 FE 71 CA 00 00 FE 61 20 05 32 F7 04 ... .q....a .2..
000130: 18 0C FE 62 28 31 FE 77 28 2C FE 79 20 09 3A F5 ...b(1.w(,.y .:.
000140: 04 32 F6 04 CD CC 02 FE 70 28 21 11 8F 04 CD 42 .2......p(!....B
000150: 03 E1 11 0B 00 19 AF 32 FD 04 3A F4 04 3D 28 C6 .......2..:..=(.
000160: 32 F4 04 C3 DE 01 AF 32 F6 04 18 D8 11 8F 04 CD 2......2........
000170: 42 03 E1 11 F5 FF 19 01 51 05 B7 ED 42 09 DA 00 B.......Q...B...
000180: 00 3E 01 32 FD 04 3A F4 04 3C 18 D4 01 23 00 E5 .>.2..:..<...#..
000190: D5 62 6B 13 36 00 ED B0 D1 E1 C9 E5 11 FE 04 CD .bk.6...........
0001A0: 8C 02 3A F3 04 12 13 01 0B 00 ED B0 11 22 05 CD ..:.........."..
0001B0: 8C 02 3A F2 04 12 13 21 46 05 06 0B 7E FE 3F 23 ..:....!F...~.?#
0001C0: E3 20 01 7E 23 E3 12 13 10 F2 E1 C9 11 FE 04 0E . .~#...........
0001D0: 0F CD 05 00 3C 28 68 AF 32 1E 05 3A F6 04 B7 28 ....<(h.2..:...(
0001E0: 34 21 2B 05 7E F5 36 42 23 5E 36 41 23 56 36 4B 4!+.~.6B#^6A#V6K
0001F0: E5 D5 11 22 05 0E 13 CD 05 00 21 23 05 11 33 05 ..."......!#..3.
Size : 512 (Real : 512)
000000: 00 57 50 20 20 20 20 20 20 43 4F 4D 00 00 00 08 .WP COM....
000010: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000020: 00 53 44 20 20 20 20 20 20 43 4F 4D 00 00 00 07 .SD COM....
000030: 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000040: 00 57 44 20 20 20 20 20 20 43 4F 4D 00 00 00 04 .WD COM....
000050: 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000060: 00 2D 32 4A 55 4C 59 31 39 38 37 20 00 00 00 00 .-2JULY1987 ....
000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000080: 00 2D 42 41 43 4B 55 50 4E 4F 57 21 00 00 00 00 .-BACKUPNOW!....
000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000A0: 00 2D 56 45 52 53 49 4F 4E 31 32 34 00 00 00 00 .-VERSION124....
0000B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000C0: 00 43 41 54 20 20 20 20 20 4D 4F 44 00 00 00 80 .CAT MOD....
0000D0: 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 ................
0000E0: 00 43 41 54 20 20 20 20 20 4D 4F 44 01 00 00 04 .CAT MOD....
0000F0: 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000100: 00 43 4F 4D 4D 41 4E 44 20 44 45 46 00 00 00 09 .COMMAND DEF....
000110: 16 17 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000120: 00 43 4F 4D 4D 41 4E 44 20 4D 4F 44 00 00 00 0C .COMMAND MOD....
000130: 18 19 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000140: 00 43 4F 4D 50 41 52 45 20 4D 4F 44 00 00 00 61 .COMPARE MOD...a
000150: 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 00 00 00 ...... !"#$%&...
000160: 00 43 4F 4D 50 42 49 4E 20 4D 4F 44 00 00 00 0D .COMPBIN MOD....
000170: 27 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 '(..............
000180: 00 43 4F 4D 50 44 49 52 20 4D 4F 44 00 00 00 4E .COMPDIR MOD...N
000190: 29 2A 2B 2C 2D 2E 2F 30 31 32 00 00 00 00 00 00 )*+,-./012......
0001A0: 00 46 49 4C 45 4F 50 53 20 44 45 46 00 00 00 04 .FILEOPS DEF....
0001B0: 33 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3...............
0001C0: 00 46 49 4C 45 4F 50 53 20 4D 4F 44 00 00 00 14 .FILEOPS MOD....
0001D0: 34 35 36 00 00 00 00 00 00 00 00 00 00 00 00 00 456.............
0001E0: 00 47 45 54 46 49 4C 45 53 44 45 46 00 00 00 06 .GETFILESDEF....
0001F0: 37 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7...............
Size : 512 (Real : 512)
000000: 01 0B 00 ED B0 D1 E1 72 2B 73 2B F1 77 0E 17 11 .......r+s+.w...
000010: 22 05 CD 05 00 11 22 05 D5 0E 13 CD 05 00 D1 0E ".....".........
000020: 16 CD 05 00 3C 28 18 CD 77 03 C0 11 22 05 D5 0E ....<(..w..."...
000030: 10 CD 05 00 D1 0E 13 CD 05 00 11 A8 04 18 03 11 ................
000040: 9B 04 0E 09 C3 05 00 5F 0E 02 18 F8 7E C6 40 23 ......._....~.@#
000050: E5 CD 47 03 1E 3A CD 48 03 E1 06 0B E5 C5 3E 03 ..G..:.H......>.
000060: B8 20 07 E5 1E 2E CD 48 03 E1 5E CB BB 73 CD 48 . .....H..^..s.H
000070: 03 C1 E1 23 10 E6 C9 AF 32 F8 04 67 6F 22 FB 04 ...#....2..go"..
000080: 11 51 11 D5 0E 1A CD 05 00 11 FE 04 0E 14 CD 05 .Q..............
000090: 00 D1 A7 20 19 2A FB 04 23 22 FB 04 21 80 00 19 ... .*..#"..!...
0000A0: ED 5B F9 04 EB ED 52 30 DA 3E 01 32 F8 04 ED 4B .[....R0.>.2...K
0000B0: FB 04 78 B1 28 23 11 51 11 C5 D5 0E 1A CD 05 00 ..x.(#.Q........
0000C0: 11 22 05 0E 15 CD 05 00 D1 C1 A7 28 02 AF C9 21 .".........(...!
0000D0: 80 00 19 EB 0B 78 B1 20 E0 3A F8 04 A7 20 98 11 .....x. .:... ..
0000E0: 22 05 0E 10 CD 05 00 3C C9 4F AF 21 81 00 1E 02 "......<.O.!....
0000F0: D5 E5 11 0A 00 21 00 00 06 10 CB 11 17 ED 6A ED .....!........j.
000100: 52 30 01 19 3F 10 F3 CB 11 17 55 E1 72 2B D1 1D R0..?.....U.r+..
000110: 20 DE 06 02 CB 81 78 FE 01 20 02 CB C1 23 7E B7 .....x.. ...#~.
000120: 20 08 CB 41 20 04 3E 20 18 04 CB C1 C6 30 E5 C5 ..A .> .....0..
000130: CD 47 03 C1 E1 10 DF C9 AF 32 F7 04 32 F4 04 47 .G.......2..2..G
000140: 3A 80 00 4F 21 81 00 3E 2D ED B1 C0 2B 2B 7E FE :..O!..>-...++~.
000150: 20 23 23 20 F2 7E 23 FE 51 28 08 FE 42 C0 32 F5 ## .~#.Q(..B.2.
000160: 04 18 F2 32 F7 04 18 ED 57 50 20 56 33 2E 30 20 ...2....WP V3.0
000170: 28 43 29 20 31 39 38 37 20 48 69 53 6F 66 74 0D (C) 1987 HiSoft.
000180: 0A 42 75 66 66 65 72 20 73 69 7A 65 3A 20 24 0D .Buffer size: $.
000190: 0A 24 4E 6F 20 66 69 6C 65 73 24 20 4F 70 65 6E .$No files$ Open
0001A0: 20 66 61 69 6C 65 64 24 20 44 69 73 63 20 49 2F failed$ Disc I/
0001B0: 4F 20 65 72 72 6F 72 20 28 46 75 6C 6C 20 3F 29 O error (Full ?)
0001C0: 24 20 74 6F 20 24 20 20 53 61 6D 65 24 20 20 43 $ to $ Same$ C
0001D0: 6F 70 79 20 28 59 2F 4E 2F 41 2F 51 2F 50 2F 42 opy (Y/N/A/Q/P/B
0001E0: 2F 57 29 3F 20 24 00 3F 3F 3F 3F 3F 3F 3F 3F 3F /W)? $.?????????
0001F0: 3F 3F 00 00 00 00 00 00 00 00 00 00 00 00 20 4C ??............ L
Size : 512 (Real : 512)
000000: 00 47 45 54 46 49 4C 45 53 4D 4F 44 00 00 00 0F .GETFILESMOD....
000010: 38 39 00 00 00 00 00 00 00 00 00 00 00 00 00 00 89..............
000020: 00 49 4D 50 4F 52 54 20 20 44 45 46 00 00 00 17 .IMPORT DEF....
000030: 3A 3B 3C 00 00 00 00 00 00 00 00 00 00 00 00 00 :;<.............
000040: 00 49 4D 50 4F 52 54 20 20 4D 4F 44 00 00 00 3E .IMPORT MOD...>
000050: 3D 3E 3F 40 41 42 43 44 00 00 00 00 00 00 00 00 =>?@ABCD........
000060: 00 4D 41 43 52 4F 53 20 20 4D 42 45 00 00 00 33 .MACROS MBE...3
000070: 45 46 47 48 49 4A 4B 00 00 00 00 00 00 00 00 00 EFGHIJK.........
000080: 00 4D 4C 55 20 20 20 20 20 4D 4F 44 00 00 00 64 .MLU MOD...d
000090: 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 00 00 00 LMNOPQRSTUVWX...
0000A0: 00 50 41 54 54 45 52 4E 20 44 45 46 00 00 00 30 .PATTERN DEF...0
0000B0: 59 5A 5B 5C 5D 5E 00 00 00 00 00 00 00 00 00 00 YZ[\]^..........
0000C0: 00 50 41 54 54 45 52 4E 20 4D 4F 44 00 00 00 35 .PATTERN MOD...5
0000D0: 5F 60 61 62 63 64 65 00 00 00 00 00 00 00 00 00 _`abcde.........
0000E0: 00 53 43 52 45 45 4E 49 4F 45 41 52 00 00 00 55 .SCREENIOEAR...U
0000F0: 66 67 68 69 6A 6B 6C 6D 6E 6F 70 00 00 00 00 00 fghijklmnop.....
000100: 00 53 43 52 45 45 4E 49 4F 4D 42 45 00 00 00 53 .SCREENIOMBE...S
000110: 71 72 73 74 75 76 77 78 79 7A 7B 00 00 00 00 00 qrstuvwxyz{.....
000120: 00 53 43 52 45 45 4E 49 4F 4F 53 42 00 00 00 50 .SCREENIOOSB...P
000130: 7C 7D 7E 7F 80 81 82 83 84 85 00 00 00 00 00 00 |}~.............
000140: 00 54 45 53 54 50 41 54 20 4D 4F 44 00 00 00 0C .TESTPAT MOD....
000150: 86 87 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000160: 00 45 44 49 54 43 4F 4E 54 44 4D 42 00 00 00 6E .EDITCONTDMB...n
000170: 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 00 00 ................
000180: 00 45 44 49 54 44 49 53 50 44 4D 42 00 00 00 35 .EDITDISPDMB...5
000190: 96 97 98 99 9A 9B 9C 00 00 00 00 00 00 00 00 00 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: ED 7B 06 00 11 F3 03 CD 87 01 0E 19 CD 05 00 32 .{.............2
000010: 5C 04 21 80 00 7E A7 20 0B 21 1F 04 11 5C 00 01 \.!..~. .!...\..
000020: 0C 00 ED B0 AF 32 55 04 32 5F 04 11 5C 00 D5 DD .....2U.2_..\...
000030: E1 DD 7E 01 FE 20 20 0B D5 13 21 20 04 01 0B 00 ..~.. ...! ....
000040: ED B0 D1 1A B7 20 04 3A 5C 04 3C 3D 32 5D 04 5F ..... .:\.<=2]._
000050: 0E 0E CD 05 00 0E 1F CD 05 00 22 56 04 23 23 23 .........."V.###
000060: 23 7E 32 58 04 11 5C 00 DD 36 0C 3F 0E 11 CD 05 #~2X..\..6.?....
000070: 00 3C 20 18 11 41 04 CD 87 01 CD 1B 03 3A 5C 04 .< ..A.......:\.
000080: 5F 0E 0E CD 05 00 C7 0E 09 C3 05 00 3D 87 87 87 _...........=...
000090: 87 87 5F 16 00 21 80 00 19 3A 5F 04 F5 E5 21 65 .._..!...:_...!e
0000A0: 04 B7 28 07 47 11 10 00 19 10 FD D1 01 10 00 EB ..(.G...........
0000B0: ED B0 F1 3C 32 5F 04 0E 12 CD 05 00 3C 20 CD CD ...<2_......< ..
0000C0: 65 02 3A 5F 04 47 DD 21 65 04 C5 DD CB 00 7E CC e.:_.G.!e.....~.
0000D0: DC 01 11 10 00 DD 19 C1 10 F0 18 98 CD 41 02 11 .............A..
0000E0: 2E 04 DD CB 0A 7E 28 03 11 2B 04 CD 87 01 11 34 .....~(..+.....4
0000F0: 04 DD CB 09 7E 28 03 11 31 04 CD 87 01 DD 6E 0F ....~(..1.....n.
000100: DD 66 0E 7D B4 28 13 7D E6 07 20 01 2B CB 3C CB .f.}.(.}.. .+.<.
000110: 1D CB 3C CB 1D CB 3C CB 1D 23 4D 7C CD A2 03 11 ..<...<..#M|....
000120: 37 04 CD 87 01 DD 4E 0F DD 7E 0E CD A2 03 11 1A 7.....N..~......
000130: 04 3A 55 04 EE 01 32 55 04 28 03 11 1D 04 C3 87 .:U...2U.(......
000140: 01 DD E5 E1 06 0B 23 E5 C5 3E 03 B8 20 09 E5 1E ......#..>.. ...
000150: 2E 0E 02 CD 05 00 E1 5E CB BB 0E 02 CD 05 00 C1 .......^........
000160: E1 23 10 E3 C9 DD 21 65 04 3A 5F 04 47 C5 3A 58 .#....!e.:_.G.:X
000170: 04 DD BE 0C 38 25 DD 7E 0F FE 80 20 1E CD CC 02 ....8%.~... ....
000180: 28 19 FD CB 00 FE FD 6E 0F FD 66 0E DD 5E 0F DD (......n..f..^..
000190: 56 0E 19 DD 75 0F DD 74 0E 18 E2 3A 58 04 B7 C4 V...u..t...:X...
0001A0: AB 02 11 10 00 DD 19 C1 10 C3 C9 3C 5F DD 4E 0C ...........<_.N.
0001B0: AF 57 CD DD 03 7D B7 C8 45 DD 6E 0F DD 66 0E 11 .W...}..E.n..f..
0001C0: 80 00 19 10 FD DD 75 0F DD 74 0E C9 FD 21 65 04 ......u..t...!e.
0001D0: C5 3A 5F 04 47 DD E5 FD E5 E1 D1 A7 ED 52 28 09 .:_.G........R(.
0001E0: FD CB 00 7E CC 08 03 28 0A 11 10 00 FD 19 10 E5 ...~...(........
0001F0: AF C1 C9 3A 58 04 B7 28 0B DD E5 FD E5 DD E1 CD ...:X..(........
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: AB 02 DD E1 F6 01 C1 C9 DD E5 FD E5 D1 E1 C5 06 ................
000010: 0B 23 13 1A BE 20 02 10 F8 C1 C9 0E 0C CD 05 00 .#... ..........
000020: FE 30 30 50 DD 2A 56 04 DD 6E 05 DD 66 06 22 59 .00P.*V..n..f."Y
000030: 04 DD 7E 02 D6 02 47 AF 37 17 10 FD 32 5B 04 0E ..~...G.7...2[..
000040: 1B CD 05 00 ED 4B 59 04 03 11 00 00 3E 08 32 5E .....KY.....>.2^
000050: 04 CB 16 38 01 13 0B 79 B0 28 09 3A 5E 04 3D 20 ...8...y.(.:^.=
000060: ED 23 18 E8 6B 62 3A 5B 04 47 05 28 03 19 10 FD .#..kb:[.G.(....
000070: 7C 4D 18 23 3A 5D 04 0E 2E 5F CD 05 00 06 03 DD |M.#:]..._......
000080: 21 80 00 DD CB 02 3E DD CB 01 1E DD CB 00 1E 10 !.....>.........
000090: F2 DD 7E 01 DD 4E 00 CD A2 03 3E 4B 5F 0E 02 C3 ..~..N....>K_...
0000A0: 05 00 21 64 04 1E 05 D5 E5 11 0A 00 CD DD 03 55 ..!d...........U
0000B0: E1 72 2B D1 1D 20 F0 06 05 CB 81 78 FE 01 20 02 .r+.. .....x.. .
0000C0: CB C1 23 7E B7 20 08 CB 41 20 04 3E 20 18 04 CB ..#~. ..A .> ...
0000D0: C1 C6 30 E5 C5 CD 9C 03 C1 E1 10 DF C9 21 00 00 ..0..........!..
0000E0: 06 10 CB 11 17 ED 6A ED 52 30 01 19 3F 10 F3 CB ......j.R0..?...
0000F0: 11 17 C9 53 44 20 56 31 2E 30 20 62 79 20 41 64 ...SD V1.0 by Ad
000100: 61 6D 20 44 65 6E 6E 69 6E 67 20 28 43 29 20 48 am Denning (C) H
000110: 69 53 6F 66 74 20 31 39 38 36 0D 0A 24 09 24 00 iSoft 1986..$.$.
000120: 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 3F 20 53 24 20 20 ??????????? S$
000130: 24 52 20 24 20 20 24 4B 20 20 52 65 63 73 3A 20 $R $ $K Recs:
000140: 24 0D 0A 44 69 73 63 20 66 72 65 65 20 73 70 61 $..Disc free spa
000150: 63 65 3A 20 24 66 75 6E 63 74 69 6F 6E F3 20 69 ce: $function. i
000160: EE 20 73 6F 75 72 63 E5 20 61 6E E4 20 4D 61 6E . sourc. an. Man
000170: F8 20 8D 0A 6C 69 62 72 61 72 F9 20 66 6F 72 6D . ..librar. form
000180: 3B 0D 0A 09 6A 2C 6B 3A 49 4E 54 45 47 45 52 3B ;...j,k:INTEGER;
000190: 0D 0A 42 45 47 49 4E 0D 0A 09 6A 3A 3D 33 3B 0D ..BEGIN...j:=3;.
0001A0: 0A 09 57 48 49 4C 45 20 28 6A 3E 30 29 20 41 4E ..WHILE (j>0) AN
0001B0: 44 20 28 69 3C 3E 30 29 20 44 4F 0D 0A 09 09 6B D (i<>0) DO....k
0001C0: 3A 3D 69 20 44 49 56 20 31 30 3B 0D 0A 09 09 54 :=i DIV 10;....T
0001D0: 65 78 74 5B 6A 5D 3A 3D 43 48 52 28 69 2D 31 30 ext[j]:=CHR(i-10
0001E0: 2A 6B 2B 4F 52 44 28 27 30 27 29 29 3B 0D 0A 09 *k+ORD('0'));...
0001F0: 09 69 3A 3D 6B 3B 0D 0A 09 09 6A 3A 3D 6A 2D 31 .i:=k;....j:=j-1
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: 64 6F 75 62 6C 65 64 2E 20 42 75 74 20 66 65 77 doubled. But few
000010: 20 66 69 6C 65 73 20 77 69 6C 6C 20 68 61 76 65 files will have
000020: 20 6D 6F 72 65 20 0D 0A 09 20 20 74 68 61 6E 20 more ... than
000030: 32 30 30 30 20 6C 69 6E 65 73 20 69 6E 20 74 68 2000 lines in th
000040: 65 6D 2C 20 73 6F 20 69 74 20 64 69 64 6E 27 74 em, so it didn't
000050: 20 73 65 65 6D 20 77 6F 72 74 68 20 74 68 65 20 seem worth the
000060: 65 78 74 72 61 20 65 66 66 6F 72 74 2E 0D 0A 0D extra effort....
000070: 0A 09 20 20 59 6F 75 20 63 61 6E 20 63 68 61 6E .. You can chan
000080: 67 65 20 74 68 65 20 75 70 70 65 72 20 62 6F 75 ge the upper bou
000090: 6E 64 20 61 74 20 77 69 6C 6C 20 74 6F 20 63 68 nd at will to ch
0000A0: 61 6E 67 65 20 74 68 65 20 73 69 7A 65 20 6F 66 ange the size of
0000B0: 20 74 68 65 0D 0A 09 20 20 74 61 62 6C 65 2E 20 the... table.
0000C0: 20 2A 29 0D 0A 0D 0A 09 48 69 67 68 57 61 74 65 *).....HighWate
0000D0: 72 3A 43 41 52 44 49 4E 41 4C 3B 09 28 2A 54 68 r:CARDINAL;.(*Th
0000E0: 65 20 74 6F 70 20 65 6E 74 72 79 20 69 6E 20 50 e top entry in P
0000F0: 6F 73 74 61 62 6C 65 20 77 68 69 63 68 20 69 73 ostable which is
000100: 20 76 61 6C 69 64 2A 29 0D 0A 56 41 52 09 4C 69 valid*)..VAR.Li
000110: 6E 65 4F 66 46 69 6C 65 3A 43 41 52 44 49 4E 41 neOfFile:CARDINA
000120: 4C 3B 0D 0A 09 43 6F 6E 74 69 6E 75 61 74 69 6F L;...Continuatio
000130: 6E 3A 42 4F 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B n:BOOLEAN=FALSE;
000140: 09 28 2A 74 72 75 65 20 69 66 20 6C 69 6E 65 20 .(*true if line
000150: 69 73 20 63 6F 6E 74 69 6E 75 61 74 69 6F 6E 20 is continuation
000160: 6F 66 0D 0A 09 09 09 09 09 20 20 70 72 65 76 69 of....... previ
000170: 6F 75 73 20 6C 69 6E 65 2A 29 0D 0A 0D 0A 50 52 ous line*)....PR
000180: 4F 43 45 44 55 52 45 20 41 64 64 4D 61 72 6B 65 OCEDURE AddMarke
000190: 72 3B 0D 0A 0D 0A 28 2A 09 41 64 64 20 61 20 6D r;....(*.Add a m
0001A0: 61 72 6B 65 72 20 74 6F 20 74 68 65 20 70 6F 73 arker to the pos
0001B0: 69 74 69 6F 6E 20 74 61 62 6C 65 2E 20 20 4C 69 ition table. Li
0001C0: 6E 4F 66 46 69 6C 65 20 67 69 76 65 73 20 6C 69 nOfFile gives li
0001D0: 6E 65 20 6E 75 6D 62 65 72 2A 29 0D 0A 42 45 47 ne number*)..BEG
0001E0: 49 4E 0D 0A 09 49 46 20 28 4C 69 6E 65 4F 66 46 IN...IF (LineOfF
0001F0: 69 6C 65 3C 48 49 47 48 28 50 6F 73 54 61 62 6C ile<HIGH(PosTabl
Size : 512 (Real : 512)
000000: 52 09 72 65 70 6C 79 3A 49 4E 54 45 47 45 52 3B R.reply:INTEGER;
000010: 0D 0A 09 69 2C 6A 3A 49 4E 54 45 47 45 52 3B 0D ...i,j:INTEGER;.
000020: 0A 09 49 6E 66 3A 46 49 4C 45 3B 09 28 2A 69 6E ..Inf:FILE;.(*in
000030: 70 75 74 20 66 69 6C 65 2A 29 0D 0A 0D 0A 09 28 put file*).....(
000040: 2A 09 54 68 65 20 69 6E 70 75 74 20 69 73 20 62 *.The input is b
000050: 75 66 66 65 72 65 64 3A 0D 0A 09 09 42 75 66 66 uffered:....Buff
000060: 65 72 20 20 20 20 20 63 6F 6E 74 61 69 6E 73 20 er contains
000070: 74 68 65 20 74 65 78 74 20 74 6F 20 62 75 66 66 the text to buff
000080: 65 72 0D 0A 09 09 42 6C 6F 63 6B 4E 6F 20 20 20 er....BlockNo
000090: 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 6E 75 contains the nu
0000A0: 6D 62 65 72 20 6F 66 20 74 68 65 20 66 69 72 73 mber of the firs
0000B0: 74 20 62 6C 6F 63 6B 20 69 6E 20 74 68 65 20 62 t block in the b
0000C0: 75 66 66 65 72 0D 0A 09 09 09 20 20 20 54 68 69 uffer..... Thi
0000D0: 73 20 76 61 72 69 61 62 6C 65 20 69 73 20 6D 6F s variable is mo
0000E0: 64 69 66 69 65 64 20 62 79 20 74 68 65 20 72 61 dified by the ra
0000F0: 6E 64 6F 6D 20 70 6F 73 69 74 69 6F 6E 69 6E 67 ndom positioning
000100: 0D 0A 09 09 09 20 20 20 63 6F 64 65 20 74 6F 20 ..... code to
000110: 72 65 66 6C 65 63 74 20 63 68 61 6E 67 65 73 20 reflect changes
000120: 69 6E 20 74 68 65 20 66 69 6C 65 20 70 6F 73 69 in the file posi
000130: 74 69 6F 6E 0D 0A 09 09 43 68 61 72 50 6F 73 20 tion....CharPos
000140: 20 20 20 67 69 76 65 73 20 74 68 65 20 63 68 61 gives the cha
000150: 72 61 63 74 65 72 20 6E 75 6D 62 65 72 20 6F 66 racter number of
000160: 20 74 68 65 20 6E 65 78 74 20 63 68 61 72 61 63 the next charac
000170: 74 65 72 20 74 6F 20 0D 0A 09 09 09 20 20 20 62 ter to ..... b
000180: 65 20 6C 69 73 74 65 64 20 66 72 6F 6D 20 74 68 e listed from th
000190: 65 20 62 75 66 66 65 72 0D 0A 09 09 43 68 61 72 e buffer....Char
0001A0: 43 6F 75 6E 74 20 20 67 69 76 65 73 20 6E 75 6D Count gives num
0001B0: 62 65 72 20 6F 66 20 76 61 6C 69 64 20 63 68 61 ber of valid cha
0001C0: 72 61 63 74 65 72 73 20 69 6E 20 74 68 65 20 62 racters in the b
0001D0: 75 66 66 65 72 2C 20 69 74 20 6D 61 79 20 62 65 uffer, it may be
0001E0: 0D 0A 09 09 09 20 20 20 6C 65 73 73 20 74 68 61 ..... less tha
0001F0: 6E 20 74 68 65 20 62 75 66 66 65 72 20 6C 65 6E n the buffer len
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: 67 74 68 20 77 68 65 6E 20 65 6E 64 2D 6F 66 2D gth when end-of-
000010: 66 69 6C 65 20 69 73 0D 0A 09 09 09 20 20 20 65 file is..... e
000020: 6E 63 6F 75 6E 74 65 72 65 64 0D 0A 2A 29 0D 0A ncountered..*)..
000030: 09 42 75 66 66 65 72 3A 41 52 52 41 59 5B 30 2E .Buffer:ARRAY[0.
000040: 2E 42 75 66 66 65 72 53 69 7A 65 2D 31 5D 20 4F .BufferSize-1] O
000050: 46 20 43 48 41 52 3B 0D 0A 09 4E 65 78 74 42 6C F CHAR;...NextBl
000060: 6F 63 6B 4E 6F 2C 42 6C 6F 63 6B 4E 6F 3A 43 41 ockNo,BlockNo:CA
000070: 52 44 49 4E 41 4C 3B 0D 0A 09 43 68 61 72 50 6F RDINAL;...CharPo
000080: 73 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 43 68 s:CARDINAL;...Ch
000090: 61 72 43 6F 75 6E 74 3A 43 41 52 44 49 4E 41 4C arCount:CARDINAL
0000A0: 3B 0D 0A 09 50 61 67 65 4E 75 6D 62 65 72 3A 49 ;...PageNumber:I
0000B0: 4E 54 45 47 45 52 3B 0D 0A 09 50 61 67 65 4C 65 NTEGER;...PageLe
0000C0: 6E 3A 43 41 52 44 49 4E 41 4C 3D 32 34 3B 0D 0A n:CARDINAL=24;..
0000D0: 0D 0A 50 52 4F 43 45 44 55 52 45 20 52 65 61 64 ..PROCEDURE Read
0000E0: 42 75 66 66 65 72 3B 0D 0A 42 45 47 49 4E 0D 0A Buffer;..BEGIN..
0000F0: 09 42 6C 6F 63 6B 4E 6F 3A 3D 4E 65 78 74 42 6C .BlockNo:=NextBl
000100: 6F 63 6B 4E 6F 3B 09 0D 0A 09 52 65 61 64 42 6C ockNo;....ReadBl
000110: 6F 63 6B 28 49 6E 66 2C 41 44 52 28 42 75 66 66 ock(Inf,ADR(Buff
000120: 65 72 29 2C 30 2C 42 75 66 66 65 72 53 69 7A 65 er),0,BufferSize
000130: 2C 72 65 70 6C 79 29 3B 0D 0A 09 43 68 61 72 43 ,reply);...CharC
000140: 6F 75 6E 74 3A 3D 72 65 70 6C 79 3B 0D 0A 0D 0A ount:=reply;....
000150: 09 28 2A 50 61 64 20 72 65 73 74 20 6F 66 20 62 .(*Pad rest of b
000160: 75 66 66 65 72 20 77 69 74 68 20 65 6E 64 2D 6F uffer with end-o
000170: 66 2D 66 69 6C 65 20 63 68 61 72 61 63 74 65 72 f-file character
000180: 73 0D 0A 09 20 20 4E 6F 72 6D 61 6C 6C 79 2C 20 s... Normally,
000190: 43 68 61 72 43 6F 75 6E 74 20 77 69 6C 6C 20 65 CharCount will e
0001A0: 71 75 61 6C 20 48 49 47 48 28 62 75 66 66 65 72 qual HIGH(buffer
0001B0: 29 2B 31 2C 20 73 6F 20 6E 6F 0D 0A 09 20 20 70 )+1, so no... p
0001C0: 61 64 64 69 6E 67 20 74 61 6B 65 73 20 70 6C 61 adding takes pla
0001D0: 63 65 2A 29 0D 0A 0D 0A 09 46 4F 52 20 43 68 61 ce*).....FOR Cha
0001E0: 72 50 6F 73 3A 3D 43 68 61 72 43 6F 75 6E 74 20 rPos:=CharCount
0001F0: 54 4F 20 48 49 47 48 28 42 75 66 66 65 72 29 20 TO HIGH(Buffer)
Size : 512 (Real : 512)
000000: 4D 4F 44 55 4C 45 20 43 61 74 3B 0D 0A 0D 0A 28 MODULE Cat;....(
000010: 2A 09 4C 69 73 74 20 6F 6E 65 20 6F 66 20 6D 6F *.List one of mo
000020: 72 65 20 66 69 6C 65 73 20 74 6F 20 74 68 65 20 re files to the
000030: 74 65 72 6D 69 6E 61 6C 0D 0A 0D 0A 0D 0A 09 43 terminal.......C
000040: 61 6C 6C 20 69 73 20 43 41 54 20 20 20 3C 28 77 all is CAT <(w
000050: 69 6C 64 20 63 61 72 64 29 20 66 69 6C 65 20 6E ild card) file n
000060: 61 6D 65 3E 2C 2E 2E 2E 2E 20 5B 4F 70 74 69 6F ame>,.... [Optio
000070: 6E 73 0D 0A 0D 0A 09 57 68 65 72 65 20 74 68 65 ns.....Where the
000080: 20 77 69 6C 64 20 63 61 72 64 20 66 69 6C 65 20 wild card file
000090: 6E 61 6D 65 73 20 61 72 65 20 74 68 65 20 6E 61 names are the na
0000A0: 6D 65 73 20 6F 66 20 66 69 6C 65 73 20 74 6F 20 mes of files to
0000B0: 6C 69 73 74 0D 0A 09 54 68 65 20 6F 70 74 69 6F list...The optio
0000C0: 6E 73 20 61 72 65 3A 0D 0A 0D 0A 09 09 50 20 2D ns are:......P -
0000D0: 20 72 75 6E 20 69 6E 20 70 61 67 65 20 6D 6F 64 run in page mod
0000E0: 65 0D 0A 09 09 20 20 20 20 69 6E 20 70 61 67 65 e.... in page
0000F0: 20 6D 6F 64 65 2C 20 61 74 20 74 68 65 20 65 6E mode, at the en
000100: 64 20 6F 66 20 65 61 63 68 20 73 63 72 65 65 6E d of each screen
000110: 20 6F 66 20 6F 75 74 70 75 74 2C 0D 0A 09 09 20 of output,....
000120: 20 20 20 61 20 70 72 6F 6D 70 74 20 6C 69 6E 65 a prompt line
000130: 20 69 73 20 70 72 65 73 65 6E 74 65 64 2E 0D 0A is presented...
000140: 0D 0A 09 09 20 20 20 50 20 6D 61 79 20 62 65 20 .... P may be
000150: 66 6F 6C 6C 6F 77 65 64 20 62 79 20 74 68 65 20 followed by the
000160: 73 63 72 65 65 6E 20 6C 65 6E 67 74 68 20 69 6E screen length in
000170: 20 6C 69 6E 65 73 0D 0A 09 09 20 20 20 20 20 64 lines.... d
000180: 65 66 61 75 6C 74 20 69 73 20 32 34 0D 0A 0D 0A efault is 24....
000190: 09 09 4E 20 2D 20 6F 75 74 70 75 74 20 6C 69 6E ..N - output lin
0001A0: 65 20 6E 75 6D 62 65 72 73 0D 0A 09 09 57 20 2D e numbers....W -
0001B0: 20 77 72 61 70 20 6C 69 6E 65 73 20 6C 6F 6E 67 wrap lines long
0001C0: 65 72 20 74 68 61 6E 20 73 63 72 65 65 6E 20 77 er than screen w
0001D0: 69 64 74 68 0D 0A 09 09 20 20 20 20 57 20 6D 61 idth.... W ma
0001E0: 79 20 62 65 20 66 6F 6C 6C 6F 77 65 64 20 62 79 y be followed by
0001F0: 20 73 63 72 65 65 6E 20 77 69 64 74 68 20 69 6E screen width in
Size : 512 (Real : 512)
000000: 44 4F 20 42 75 66 66 65 72 5B 43 68 61 72 50 6F DO Buffer[CharPo
000010: 73 5D 3A 3D 45 4F 46 20 45 4E 44 3B 0D 0A 09 43 s]:=EOF END;...C
000020: 68 61 72 50 6F 73 3A 3D 30 3B 0D 0A 0D 0A 09 28 harPos:=0;.....(
000030: 2A 09 69 6E 63 72 65 6D 65 6E 74 20 4E 65 78 74 *.increment Next
000040: 42 6C 6F 63 6B 20 74 6F 20 61 6C 6C 6F 77 20 66 Block to allow f
000050: 6F 72 20 64 61 74 61 20 72 65 61 64 2A 29 0D 0A or data read*)..
000060: 0D 0A 09 4E 65 78 74 42 6C 6F 63 6B 4E 6F 3A 3D ...NextBlockNo:=
000070: 49 4E 54 45 47 45 52 28 42 6C 6F 63 6B 4E 6F 29 INTEGER(BlockNo)
000080: 2B 72 65 70 6C 79 20 44 49 56 20 42 6C 6F 63 6B +reply DIV Block
000090: 53 69 7A 65 3B 0D 0A 09 45 4E 44 20 52 65 61 64 Size;...END Read
0000A0: 42 75 66 66 65 72 3B 0D 0A 0D 0A 56 41 52 09 63 Buffer;....VAR.c
0000B0: 68 3A 43 48 41 52 3B 09 09 28 2A 6E 65 78 74 20 h:CHAR;..(*next
0000C0: 63 68 61 72 61 63 74 65 72 20 72 65 61 64 2A 29 character read*)
0000D0: 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 4E 65 ....PROCEDURE Ne
0000E0: 78 74 43 68 61 72 3B 0D 0A 42 45 47 49 4E 0D 0A xtChar;..BEGIN..
0000F0: 09 49 46 20 43 68 61 72 50 6F 73 3E 3D 43 68 61 .IF CharPos>=Cha
000100: 72 43 6F 75 6E 74 20 54 48 45 4E 20 0D 0A 09 09 rCount THEN ....
000110: 52 65 61 64 42 75 66 66 65 72 3B 0D 0A 09 09 45 ReadBuffer;....E
000120: 4E 44 3B 20 20 28 2A 49 46 20 43 68 61 72 50 6F ND; (*IF CharPo
000130: 73 3E 3D 43 68 61 72 43 6F 75 6E 74 2A 29 0D 0A s>=CharCount*)..
000140: 09 63 68 3A 3D 42 75 66 66 65 72 5B 43 68 61 72 .ch:=Buffer[Char
000150: 50 6F 73 5D 3B 0D 0A 09 49 4E 43 28 43 68 61 72 Pos];...INC(Char
000160: 50 6F 73 29 3B 0D 0A 09 45 4E 44 20 4E 65 78 74 Pos);...END Next
000170: 43 68 61 72 3B 0D 0A 0D 0A 28 2A 09 46 69 6C 65 Char;....(*.File
000180: 20 70 6F 73 69 74 69 6F 6E 69 6E 67 20 72 6F 75 positioning rou
000190: 74 69 6E 65 73 0D 0A 0D 0A 09 59 6F 75 20 63 61 tines.....You ca
0001A0: 6E 20 70 6F 73 69 74 69 6F 6E 20 61 20 66 69 6C n position a fil
0001B0: 65 20 62 79 3A 0D 0A 0D 0A 09 09 69 29 09 47 69 e by:......i).Gi
0001C0: 76 69 6E 67 20 74 68 65 20 6E 75 6D 62 65 72 20 ving the number
0001D0: 6F 66 20 74 68 65 20 6C 69 6E 65 20 74 6F 20 6C of the line to l
0001E0: 69 73 74 20 66 72 6F 6D 0D 0A 09 09 69 69 29 09 ist from....ii).
0001F0: 47 69 76 69 6E 67 20 61 20 73 74 72 69 6E 67 20 Giving a string
Size : 512 (Real : 512)
000000: 20 63 68 61 72 61 63 74 65 72 73 0D 0A 09 09 20 characters....
000010: 20 20 20 64 65 66 61 75 6C 74 20 69 73 20 38 30 default is 80
000020: 0D 0A 0D 0A 09 09 49 20 2D 20 65 78 70 61 6E 64 ......I - expand
000030: 20 74 61 62 73 20 74 6F 20 73 70 61 63 65 73 0D tabs to spaces.
000040: 0A 0D 0A 0D 0A 0D 0A 09 46 6F 72 20 65 78 61 6D ........For exam
000050: 70 6C 65 3A 0D 0A 0D 0A 09 09 43 41 54 20 62 3A ple:......CAT b:
000060: 2A 2E 64 65 66 20 62 3A 2A 2E 6D 6F 64 20 62 3A *.def b:*.mod b:
000070: 2A 2E 73 75 62 5B 50 31 36 57 31 30 30 4E 0D 0A *.sub[P16W100N..
000080: 0D 0A 0D 0A 0D 0A 09 54 68 69 73 20 69 73 20 61 .......This is a
000090: 20 68 61 63 6B 20 6F 66 20 74 68 65 20 4C 49 53 hack of the LIS
0000A0: 54 20 70 72 6F 67 72 61 6D 20 77 68 69 63 68 20 T program which
0000B0: 63 6F 6D 65 73 20 77 69 74 68 20 6D 79 0D 0A 09 comes with my...
0000C0: 4D 6F 64 75 6C 61 2D 32 20 63 6F 6D 70 69 6C 65 Modula-2 compile
0000D0: 72 2E 20 28 42 75 74 20 68 69 67 68 6C 79 20 6D r. (But highly m
0000E0: 6F 64 69 66 69 65 64 29 0D 0A 0D 0A 09 4C 69 6D odified).....Lim
0000F0: 69 74 61 74 69 6F 6E 73 3A 0D 0A 09 3D 3D 3D 3D itations:...====
000100: 3D 3D 3D 3D 3D 3D 3D 3D 0D 0A 09 09 41 74 20 6D ========....At m
000110: 6F 73 74 20 31 30 20 28 77 69 6C 64 20 63 61 72 ost 10 (wild car
000120: 64 29 20 66 69 6C 65 20 6E 61 6D 65 73 20 63 61 d) file names ca
000130: 6E 20 62 65 20 75 73 65 64 0D 0A 09 09 45 61 63 n be used....Eac
000140: 68 20 77 69 6C 64 20 63 61 72 64 20 73 68 6F 75 h wild card shou
000150: 6C 64 20 6E 6F 74 20 6D 61 74 63 68 20 6D 6F 72 ld not match mor
000160: 65 20 74 68 61 6E 20 31 30 30 20 61 63 74 75 61 e than 100 actua
000170: 6C 20 66 69 6C 65 73 0D 0A 0D 0A 09 44 61 76 65 l files.....Dave
000180: 20 4D 6F 6F 72 65 20 2A 29 0D 0A 0D 0A 46 52 4F Moore *)....FRO
000190: 4D 20 53 59 53 54 45 4D 20 49 4D 50 4F 52 54 20 M SYSTEM IMPORT
0001A0: 41 44 44 52 45 53 53 2C 41 44 52 2C 54 53 49 5A ADDRESS,ADR,TSIZ
0001B0: 45 3B 0D 0A 46 52 4F 4D 20 43 6F 6D 6D 61 6E 64 E;..FROM Command
0001C0: 20 49 4D 50 4F 52 54 20 50 61 72 61 6D 65 74 65 IMPORT Paramete
0001D0: 72 2C 50 61 72 63 6C 61 73 73 2C 47 65 74 50 61 r,Parclass,GetPa
0001E0: 72 61 6D 73 3B 0D 0A 46 52 4F 4D 20 46 69 6C 65 rams;..FROM File
0001F0: 73 20 49 4D 50 4F 52 54 20 46 69 6C 65 4E 61 6D s IMPORT FileNam
Size : 512 (Real : 512)
000000: 74 6F 20 6C 69 73 74 20 69 6E 20 74 68 65 20 66 to list in the f
000010: 6F 72 6D 20 2F 73 74 72 69 6E 67 2F 20 28 77 68 orm /string/ (wh
000020: 65 72 65 0D 0A 09 09 09 2F 20 69 73 20 61 6E 79 ere...../ is any
000030: 20 6E 6F 6E 2D 61 6C 70 68 61 6E 75 6D 65 72 69 non-alphanumeri
000040: 63 20 63 68 61 72 61 63 74 65 72 29 0D 0A 09 09 c character)....
000050: 69 69 69 29 09 41 20 63 6F 6D 62 69 6E 61 74 69 iii).A combinati
000060: 6F 6E 20 6F 66 20 74 68 65 20 74 77 6F 3A 20 31 on of the two: 1
000070: 30 2F 73 74 72 69 6E 67 2F 20 74 6F 20 73 74 61 0/string/ to sta
000080: 72 74 20 73 65 61 72 63 68 0D 0A 09 09 09 61 74 rt search.....at
000090: 20 61 20 67 69 76 65 6E 20 6C 69 6E 65 2E 0D 0A a given line...
0000A0: 2A 29 0D 0A 54 59 50 45 09 50 6F 73 69 74 69 6F *)..TYPE.Positio
0000B0: 6E 3D 52 45 43 4F 52 44 0D 0A 09 09 42 6C 6F 63 n=RECORD....Bloc
0000C0: 6B 4E 75 6D 62 65 72 3A 43 41 52 44 49 4E 41 4C kNumber:CARDINAL
0000D0: 3B 09 09 28 2A 42 6C 6F 63 6B 20 69 6E 20 77 68 ;..(*Block in wh
0000E0: 69 63 68 20 6C 69 6E 65 20 73 74 61 72 74 73 2A ich line starts*
0000F0: 29 0D 0A 09 09 43 68 61 72 4F 66 66 73 65 74 3A )....CharOffset:
000100: 43 41 52 44 49 4E 41 4C 3B 09 09 28 2A 43 68 61 CARDINAL;..(*Cha
000110: 72 61 63 74 65 72 20 6F 66 66 73 65 74 20 69 6E racter offset in
000120: 20 62 75 66 66 65 72 2A 29 0D 0A 09 09 45 4E 44 buffer*)....END
000130: 3B 0D 0A 56 41 52 09 50 6F 73 54 61 62 6C 65 3A ;..VAR.PosTable:
000140: 41 52 52 41 59 5B 31 2E 2E 32 30 30 30 5D 20 4F ARRAY[1..2000] O
000150: 46 20 20 50 6F 73 69 74 69 6F 6E 3B 0D 0A 0D 0A F Position;....
000160: 09 28 2A 54 68 69 73 20 63 6F 64 65 20 63 6F 75 .(*This code cou
000170: 6C 64 20 62 65 20 6D 61 64 65 20 6D 6F 72 65 20 ld be made more
000180: 66 61 6E 63 79 20 62 79 20 68 61 76 69 6E 67 20 fancy by having
000190: 61 6E 20 69 6E 63 72 65 6D 65 6E 74 20 73 69 7A an increment siz
0001A0: 65 0D 0A 09 20 20 73 6F 20 74 68 61 74 20 61 73 e... so that as
0001B0: 20 74 68 65 20 50 6F 73 54 61 62 6C 65 20 62 65 the PosTable be
0001C0: 63 6F 6D 65 73 20 66 75 6C 6C 2C 20 65 76 65 72 comes full, ever
0001D0: 79 20 73 65 63 6F 6E 64 20 65 6E 74 72 79 20 69 y second entry i
0001E0: 73 0D 0A 09 20 20 72 65 6D 6F 76 65 64 20 61 6E s... removed an
0001F0: 64 20 74 68 65 20 69 6E 63 72 65 6D 65 6E 74 20 d the increment
Size : 512 (Real : 512)
000000: 65 2C 46 49 4C 45 2C 4C 6F 6F 6B 75 70 2C 43 72 e,FILE,Lookup,Cr
000010: 65 61 74 65 2C 52 65 61 64 42 6C 6F 63 6B 2C 53 eate,ReadBlock,S
000020: 65 74 42 6C 6F 63 6B 3B 0D 0A 46 52 4F 4D 20 47 etBlock;..FROM G
000030: 65 74 46 69 6C 65 73 20 49 4D 50 4F 52 54 20 47 etFiles IMPORT G
000040: 65 74 4E 61 6D 65 73 3B 0D 0A 46 52 4F 4D 20 54 etNames;..FROM T
000050: 65 72 6D 69 6E 61 6C 20 49 4D 50 4F 52 54 20 57 erminal IMPORT W
000060: 72 69 74 65 53 74 72 69 6E 67 2C 57 72 69 74 65 riteString,Write
000070: 4C 6E 2C 57 72 69 74 65 2C 52 65 61 64 2C 42 75 Ln,Write,Read,Bu
000080: 73 79 52 65 61 64 2C 43 6C 65 61 72 43 68 61 72 syRead,ClearChar
000090: 42 75 66 66 65 72 3B 0D 0A 46 52 4F 4D 20 53 6F Buffer;..FROM So
0000A0: 72 74 20 49 4D 50 4F 52 54 20 53 6F 72 74 52 65 rt IMPORT SortRe
0000B0: 63 6F 72 64 73 3B 0D 0A 46 52 4F 4D 20 49 6E 74 cords;..FROM Int
0000C0: 4C 6F 67 69 63 20 49 4D 50 4F 52 54 20 49 41 4E Logic IMPORT IAN
0000D0: 44 3B 0D 0A 46 52 4F 4D 20 53 6D 61 6C 6C 49 4F D;..FROM SmallIO
0000E0: 20 49 4D 50 4F 52 54 20 57 72 69 74 65 49 6E 74 IMPORT WriteInt
0000F0: 2C 57 72 69 74 65 48 65 78 2C 57 72 69 74 65 43 ,WriteHex,WriteC
000100: 61 72 64 3B 0D 0A 43 4F 4E 53 54 09 42 75 66 66 ard;..CONST.Buff
000110: 65 72 53 69 7A 65 3D 34 30 39 36 3B 09 09 28 2A erSize=4096;..(*
000120: 42 79 74 65 73 20 74 6F 20 72 65 61 64 20 69 6E Bytes to read in
000130: 20 61 20 73 69 6E 67 6C 65 20 62 6C 6F 63 6B 2A a single block*
000140: 29 0D 0A 09 42 6C 6F 63 6B 53 69 7A 65 3D 31 32 )...BlockSize=12
000150: 38 3B 09 09 09 28 2A 42 6C 6F 63 6B 20 73 69 7A 8;...(*Block siz
000160: 65 20 69 6E 20 62 79 74 65 73 2D 2D 75 73 65 64 e in bytes--used
000170: 20 66 6F 72 20 72 61 6E 64 6F 6D 0D 0A 09 09 09 for random.....
000180: 09 09 20 20 70 6F 73 69 74 69 6F 6E 69 6E 67 2A .. positioning*
000190: 29 0D 0A 0D 0A 09 43 52 3D 30 64 78 3B 0D 0A 09 ).....CR=0dx;...
0001A0: 4C 46 3D 30 61 78 3B 0D 0A 09 54 41 42 3D 30 39 LF=0ax;...TAB=09
0001B0: 78 3B 0D 0A 09 45 4F 46 3D 31 61 78 3B 0D 0A 09 x;...EOF=1ax;...
0001C0: 42 53 3D 30 38 78 3B 0D 0A 09 44 45 4C 3D 37 46 BS=08x;...DEL=7F
0001D0: 78 3B 0D 0A 0D 0A 54 59 50 45 20 09 50 46 69 6C x;....TYPE .PFil
0001E0: 65 4E 61 6D 65 3D 50 4F 49 4E 54 45 52 20 54 4F eName=POINTER TO
0001F0: 20 46 69 6C 65 4E 61 6D 65 3B 0D 0A 0D 0A 56 41 FileName;....VA
Size : 512 (Real : 512)
000000: 0A 09 50 61 67 65 57 69 64 74 68 3A 43 41 52 44 ..PageWidth:CARD
000010: 49 4E 41 4C 3D 38 30 3B 0D 0A 09 4C 69 6E 65 4E INAL=80;...LineN
000020: 75 6D 62 65 72 3A 43 41 52 44 49 4E 41 4C 3B 0D umber:CARDINAL;.
000030: 0A 0D 0A 0D 0A 56 41 52 09 45 6E 64 4F 66 46 69 .....VAR.EndOfFi
000040: 6C 65 3A 42 4F 4F 4C 45 41 4E 3B 09 09 28 2A 73 le:BOOLEAN;..(*s
000050: 65 74 20 74 72 75 65 20 61 66 74 65 72 20 2A 2A et true after **
000060: 20 45 6E 64 20 6F 66 20 46 69 6C 65 20 2A 2A 20 End of File **
000070: 68 61 73 0D 0A 09 09 09 09 09 20 20 62 65 65 6E has....... been
000080: 20 6F 75 74 70 75 74 20 62 79 20 57 72 69 74 65 output by Write
000090: 4C 69 6E 65 2A 29 0D 0A 0D 0A 28 2A 09 57 72 69 Line*)....(*.Wri
0000A0: 74 65 20 61 20 6C 69 6E 65 20 6F 66 20 6F 75 74 te a line of out
0000B0: 70 75 74 09 0D 0A 09 54 68 65 20 66 69 72 73 74 put....The first
0000C0: 20 63 68 61 72 61 63 74 65 72 20 6F 66 20 74 68 character of th
0000D0: 65 20 6C 69 6E 65 20 74 6F 20 62 65 20 77 72 69 e line to be wri
0000E0: 74 74 65 6E 20 6D 75 73 74 0D 0A 09 62 65 20 61 tten must...be a
0000F0: 76 61 69 6C 61 62 6C 65 20 69 6E 20 74 68 65 20 vailable in the
000100: 76 61 72 69 61 62 6C 65 20 63 68 20 62 65 66 6F variable ch befo
000110: 72 65 20 65 6E 74 72 79 20 74 6F 20 74 68 65 20 re entry to the
000120: 72 6F 75 74 69 6E 65 0D 0A 09 2A 29 0D 0A 0D 0A routine...*)....
000130: 50 52 4F 43 45 44 55 52 45 20 57 72 69 74 65 4C PROCEDURE WriteL
000140: 69 6E 65 3B 0D 0A 56 41 52 09 43 68 61 72 73 57 ine;..VAR.CharsW
000150: 72 69 74 74 65 6E 3A 43 41 52 44 49 4E 41 4C 3B ritten:CARDINAL;
000160: 0D 0A 0D 0A 42 45 47 49 4E 0D 0A 0D 0A 09 43 68 ....BEGIN.....Ch
000170: 61 72 73 57 72 69 74 74 65 6E 3A 3D 30 3B 0D 0A arsWritten:=0;..
000180: 0D 0A 09 49 46 20 4E 75 6D 62 65 72 4C 69 6E 65 ...IF NumberLine
000190: 73 20 54 48 45 4E 0D 0A 09 09 49 46 20 43 6F 6E s THEN....IF Con
0001A0: 74 69 6E 75 61 74 69 6F 6E 20 54 48 45 4E 20 0D tinuation THEN .
0001B0: 0A 09 09 09 57 72 69 74 65 53 74 72 69 6E 67 28 ....WriteString(
0001C0: 27 20 20 20 20 20 20 27 29 3B 0D 0A 09 09 45 4C ' ');....EL
0001D0: 53 45 09 0D 0A 09 09 09 57 72 69 74 65 49 6E 74 SE......WriteInt
0001E0: 28 4C 69 6E 65 4F 66 46 69 6C 65 2C 35 29 3B 0D (LineOfFile,5);.
0001F0: 0A 09 09 09 57 72 69 74 65 28 27 7C 27 29 3B 0D ....Write('|');.
Size : 512 (Real : 512)
000000: 73 20 72 6F 75 74 69 6E 65 20 64 6F 65 73 20 61 s routine does a
000010: 20 70 6C 61 69 6E 20 73 69 6D 70 6C 65 20 73 65 plain simple se
000020: 61 72 63 68 2E 20 54 68 65 72 65 20 61 72 65 20 arch. There are
000030: 6D 75 63 68 0D 0A 09 66 61 73 74 65 72 20 77 61 much...faster wa
000040: 79 73 20 6F 66 20 64 6F 69 6E 67 20 73 65 61 72 ys of doing sear
000050: 63 68 65 73 2C 20 62 75 74 20 74 68 65 79 20 61 ches, but they a
000060: 72 65 20 70 72 6F 62 61 62 6C 79 0D 0A 09 67 6F re probably...go
000070: 69 6E 67 20 74 6F 20 62 65 20 73 77 61 6D 70 65 ing to be swampe
000080: 64 20 62 79 20 74 68 65 20 49 4F 20 74 69 6D 65 d by the IO time
000090: 20 61 6E 79 77 61 79 2A 29 0D 0A 56 41 52 09 73 anyway*)..VAR.s
0000A0: 74 72 69 6E 67 3A 4D 61 74 63 68 53 74 72 69 6E tring:MatchStrin
0000B0: 67 3B 0D 0A 09 6C 65 6E 3A 43 41 52 44 49 4E 41 g;...len:CARDINA
0000C0: 4C 3B 0D 0A 09 6E 63 68 3A 43 48 41 52 3B 0D 0A L;...nch:CHAR;..
0000D0: 09 69 2C 6A 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A .i,j:CARDINAL;..
0000E0: 09 50 61 72 74 69 61 6C 50 6F 73 3A 41 52 52 41 .PartialPos:ARRA
0000F0: 59 5B 31 2E 2E 36 30 5D 20 4F 46 20 43 41 52 44 Y[1..60] OF CARD
000100: 49 4E 41 4C 3B 0D 0A 09 50 61 72 74 69 61 6C 73 INAL;...Partials
000110: 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 :CARDINAL;..BEGI
000120: 4E 0D 0A 09 6C 65 6E 3A 3D 30 3B 0D 0A 09 4C 4F N...len:=0;...LO
000130: 4F 50 0D 0A 09 09 52 65 61 64 28 6E 63 68 29 3B OP....Read(nch);
000140: 0D 0A 09 09 49 46 20 28 6E 63 68 3D 42 53 29 20 ....IF (nch=BS)
000150: 4F 52 20 28 6E 63 68 3D 44 45 4C 29 20 54 48 45 OR (nch=DEL) THE
000160: 4E 0D 0A 09 09 09 49 46 20 6C 65 6E 3E 30 20 54 N.....IF len>0 T
000170: 48 45 4E 20 44 45 43 28 6C 65 6E 29 20 45 4E 44 HEN DEC(len) END
000180: 3B 0D 0A 09 09 45 4C 53 49 46 20 28 6E 63 68 3D ;....ELSIF (nch=
000190: 44 65 6C 69 6D 69 74 65 72 29 20 4F 52 20 28 6C Delimiter) OR (l
0001A0: 65 6E 3D 48 49 47 48 28 73 74 72 69 6E 67 29 29 en=HIGH(string))
0001B0: 0D 0A 09 09 09 4F 52 20 28 6E 63 68 3D 43 52 29 .....OR (nch=CR)
0001C0: 20 4F 52 20 28 6E 63 68 3D 4C 46 29 20 54 48 45 OR (nch=LF) THE
0001D0: 4E 0D 0A 09 09 09 45 58 49 54 0D 0A 09 09 45 4C N.....EXIT....EL
0001E0: 53 45 0D 0A 09 09 09 49 4E 43 28 6C 65 6E 29 3B SE.....INC(len);
0001F0: 0D 0A 09 09 09 73 74 72 69 6E 67 5B 6C 65 6E 5D .....string[len]
Size : 512 (Real : 512)
000000: 65 29 29 20 41 4E 44 20 28 4C 69 6E 65 4F 66 46 e)) AND (LineOfF
000010: 69 6C 65 3E 48 69 67 68 57 61 74 65 72 29 20 54 ile>HighWater) T
000020: 48 45 4E 0D 0A 09 09 48 69 67 68 57 61 74 65 72 HEN....HighWater
000030: 3A 3D 4C 69 6E 65 4F 66 46 69 6C 65 3B 0D 0A 09 :=LineOfFile;...
000040: 09 57 49 54 48 20 50 6F 73 54 61 62 6C 65 5B 48 .WITH PosTable[H
000050: 69 67 68 57 61 74 65 72 5D 20 44 4F 0D 0A 09 09 ighWater] DO....
000060: 09 42 6C 6F 63 6B 4E 75 6D 62 65 72 3A 3D 42 6C .BlockNumber:=Bl
000070: 6F 63 6B 4E 6F 3B 0D 0A 09 09 09 43 68 61 72 4F ockNo;.....CharO
000080: 66 66 73 65 74 3A 3D 43 68 61 72 50 6F 73 0D 0A ffset:=CharPos..
000090: 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D ...END;....END;.
0000A0: 0A 09 45 4E 44 20 41 64 64 4D 61 72 6B 65 72 3B ..END AddMarker;
0000B0: 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 52 65 ....PROCEDURE Re
0000C0: 70 6F 73 69 74 69 6F 6E 46 69 6C 65 3B 0D 0A 0D positionFile;...
0000D0: 0A 28 2A 09 52 65 70 6F 73 69 74 69 6F 6E 20 66 .(*.Reposition f
0000E0: 69 6C 65 20 74 6F 20 6C 69 6E 65 20 6E 75 6D 62 ile to line numb
0000F0: 65 72 20 67 69 76 65 6E 20 62 79 20 4C 69 6E 65 er given by Line
000100: 4F 66 46 69 6C 65 2E 0D 0A 0D 0A 09 54 68 69 73 OfFile......This
000110: 20 6C 69 6E 65 20 6E 75 6D 62 65 72 20 6E 65 65 line number nee
000120: 64 20 6E 6F 74 20 62 65 20 77 69 74 68 69 6E 20 d not be within
000130: 74 68 65 20 70 61 72 74 20 6F 66 20 74 68 65 20 the part of the
000140: 66 69 6C 65 0D 0A 09 61 6C 72 65 61 64 79 20 65 file...already e
000150: 78 61 6D 69 6E 65 64 20 28 6F 72 20 70 72 65 76 xamined (or prev
000160: 69 6F 75 73 6C 79 20 73 6B 69 70 70 65 64 29 20 iously skipped)
000170: 73 6F 20 74 68 61 74 20 69 74 20 6D 61 79 20 62 so that it may b
000180: 65 0D 0A 09 6E 65 63 65 73 73 61 72 79 20 74 6F e...necessary to
000190: 20 61 64 76 61 6E 63 65 20 61 73 20 66 61 72 20 advance as far
0001A0: 61 73 20 70 6F 73 73 69 62 6C 65 20 61 6E 64 20 as possible and
0001B0: 74 68 65 6E 20 73 63 61 6E 20 66 6F 72 77 61 72 then scan forwar
0001C0: 64 2E 0D 0A 0D 0A 09 54 68 69 73 20 72 6F 75 74 d......This rout
0001D0: 69 6E 65 20 6F 6E 6C 79 20 68 61 6E 64 6C 65 73 ine only handles
0001E0: 20 70 6F 73 69 74 69 6F 6E 69 6E 67 20 62 79 20 positioning by
0001F0: 6C 69 6E 65 20 6E 75 6D 62 65 72 2D 2D 73 65 65 line number--see
Size : 512 (Real : 512)
000000: 3A 3D 6E 63 68 3B 0D 0A 09 09 09 45 4E 44 3B 20 :=nch;.....END;
000010: 28 2A 49 46 20 63 68 3D 42 53 20 65 74 63 2A 29 (*IF ch=BS etc*)
000020: 0D 0A 09 09 45 4E 44 3B 28 2A 4C 4F 4F 50 2A 29 ....END;(*LOOP*)
000030: 0D 0A 0D 0A 09 73 74 72 69 6E 67 5B 6C 65 6E 2B .....string[len+
000040: 31 5D 3A 3D 30 78 3B 09 28 2A 73 65 74 20 73 6F 1]:=0x;.(*set so
000050: 20 73 74 72 69 6E 67 20 63 61 6E 20 6C 61 74 65 string can late
000060: 72 20 62 65 20 70 72 69 6E 74 65 64 2A 29 0D 0A r be printed*)..
000070: 0D 0A 09 49 46 20 6C 65 6E 3C 3E 30 20 54 48 45 ...IF len<>0 THE
000080: 4E 0D 0A 09 09 4C 61 73 74 4C 65 6E 3A 3D 6C 65 N....LastLen:=le
000090: 6E 3B 0D 0A 09 09 4C 61 73 74 53 74 72 69 6E 67 n;....LastString
0000A0: 3A 3D 73 74 72 69 6E 67 3B 0D 0A 09 09 45 4E 44 :=string;....END
0000B0: 3B 0D 0A 09 49 46 20 4C 61 73 74 4C 65 6E 3D 30 ;...IF LastLen=0
0000C0: 20 54 48 45 4E 0D 0A 09 09 57 72 69 74 65 53 74 THEN....WriteSt
0000D0: 72 69 6E 67 28 27 20 45 72 72 6F 72 20 2D 20 6E ring(' Error - n
0000E0: 6F 20 70 72 65 76 69 6F 75 73 20 73 65 61 72 63 o previous searc
0000F0: 68 20 73 74 72 69 6E 67 27 29 3B 0D 0A 09 09 57 h string');....W
000100: 72 69 74 65 4C 6E 3B 0D 0A 09 45 4C 53 45 09 28 riteLn;...ELSE.(
000110: 2A 73 74 61 72 74 20 6D 61 74 63 68 2A 29 0D 0A *start match*)..
000120: 09 09 50 61 72 74 69 61 6C 73 3A 3D 30 3B 0D 0A ..Partials:=0;..
000130: 09 09 4C 4F 4F 50 0D 0A 09 09 09 49 46 20 63 68 ..LOOP.....IF ch
000140: 3D 45 4F 46 20 54 48 45 4E 20 45 58 49 54 20 45 =EOF THEN EXIT E
000150: 4E 44 3B 0D 0A 09 09 09 57 48 49 4C 45 20 63 68 ND;.....WHILE ch
000160: 3D 43 52 20 44 4F 0D 0A 09 09 09 09 4E 65 78 74 =CR DO......Next
000170: 43 68 61 72 3B 0D 0A 09 09 09 09 49 46 20 63 68 Char;......IF ch
000180: 3D 4C 46 20 54 48 45 4E 20 4E 65 78 74 43 68 61 =LF THEN NextCha
000190: 72 20 45 4E 44 3B 0D 0A 09 09 09 09 49 4E 43 28 r END;......INC(
0001A0: 4C 69 6E 65 4F 66 46 69 6C 65 29 3B 0D 0A 09 09 LineOfFile);....
0001B0: 09 09 41 64 64 4D 61 72 6B 65 72 3B 0D 0A 09 09 ..AddMarker;....
0001C0: 09 09 45 4E 44 3B 0D 0A 09 09 09 28 2A 61 64 64 ..END;.....(*add
0001D0: 20 61 20 6E 65 77 20 70 61 72 74 69 61 6C 20 6D a new partial m
0001E0: 61 74 63 68 20 77 68 69 63 68 20 68 61 73 20 6A atch which has j
0001F0: 75 73 74 20 6D 61 74 63 68 65 64 0D 0A 09 09 09 ust matched.....
Size : 512 (Real : 512)
000000: 20 0D 0A 09 53 65 61 72 63 68 20 66 6F 72 20 70 ...Search for p
000010: 6F 73 69 74 69 6F 6E 69 6E 67 20 62 79 20 73 74 ositioning by st
000020: 72 69 6E 67 20 6D 61 74 63 68 2E 2A 29 0D 0A 0D ring match.*)...
000030: 0A 56 41 52 09 52 65 71 75 69 72 65 64 3A 43 41 .VAR.Required:CA
000040: 52 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 4E 0D 0A RDINAL;..BEGIN..
000050: 09 52 65 71 75 69 72 65 64 3A 3D 4C 69 6E 65 4F .Required:=LineO
000060: 66 46 69 6C 65 3B 0D 0A 0D 0A 28 2A 09 20 20 09 fFile;....(*. .
000070: 52 65 63 61 6C 63 75 6C 61 74 65 20 70 61 67 65 Recalculate page
000080: 20 6E 75 6D 62 65 72 20 61 73 73 75 6D 69 6E 67 number assuming
000090: 20 74 68 61 74 20 6E 6F 20 6C 69 6E 65 73 20 6F that no lines o
0000A0: 76 65 72 66 6C 6F 77 65 64 20 28 74 68 61 74 0D verflowed (that.
0000B0: 0A 09 09 69 73 2C 20 74 68 61 74 20 74 68 65 20 ...is, that the
0000C0: 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 65 72 20 6F maximum number o
0000D0: 66 20 6C 69 6E 65 73 20 6F 63 63 75 72 65 64 20 f lines occured
0000E0: 6F 6E 20 65 61 63 68 20 70 61 67 65 29 2E 0D 0A on each page)...
0000F0: 0D 0A 09 20 20 09 4E 6F 74 65 20 74 68 61 74 20 ... .Note that
000100: 74 68 65 20 70 61 67 65 20 6E 75 6D 62 65 72 20 the page number
000110: 69 73 20 61 6C 77 61 79 73 20 69 6E 63 72 65 6D is always increm
000120: 65 6E 74 65 64 20 62 65 66 6F 72 65 20 69 74 20 ented before it
000130: 69 73 0D 0A 09 09 70 72 69 6E 74 65 64 20 73 6F is....printed so
000140: 20 74 68 61 74 20 74 68 69 73 20 63 6F 64 65 20 that this code
000150: 64 6F 65 73 20 6E 6F 74 20 72 65 73 75 6C 74 20 does not result
000160: 69 6E 20 70 61 67 65 20 6E 75 6D 62 65 72 73 20 in page numbers
000170: 74 68 61 74 0D 0A 09 09 61 72 65 20 6F 6E 65 20 that....are one
000180: 74 6F 6F 20 73 6D 61 6C 6C 2E 0D 0A 2A 29 0D 0A too small...*)..
000190: 0D 0A 09 50 61 67 65 4E 75 6D 62 65 72 3A 3D 28 ...PageNumber:=(
0001A0: 4C 69 6E 65 4F 66 46 69 6C 65 2D 31 29 20 44 49 LineOfFile-1) DI
0001B0: 56 20 28 50 61 67 65 4C 65 6E 2D 32 29 3B 0D 0A V (PageLen-2);..
0001C0: 09 49 46 20 4C 69 6E 65 4F 66 46 69 6C 65 3E 48 .IF LineOfFile>H
0001D0: 69 67 68 57 61 74 65 72 20 54 48 45 4E 20 4C 69 ighWater THEN Li
0001E0: 6E 65 4F 66 46 69 6C 65 3A 3D 48 69 67 68 57 61 neOfFile:=HighWa
0001F0: 74 65 72 20 45 4E 44 3B 0D 0A 09 43 6F 6E 74 69 ter END;...Conti
Size : 512 (Real : 512)
000000: 20 20 74 68 65 20 6E 75 6C 6C 20 73 74 72 69 6E the null strin
000010: 67 2A 29 0D 0A 0D 0A 09 09 09 49 4E 43 28 50 61 g*).......INC(Pa
000020: 72 74 69 61 6C 73 29 3B 0D 0A 09 09 09 50 61 72 rtials);.....Par
000030: 74 69 61 6C 50 6F 73 5B 50 61 72 74 69 61 6C 73 tialPos[Partials
000040: 5D 3A 3D 31 3B 0D 0A 0D 0A 09 09 09 28 2A 74 72 ]:=1;.......(*tr
000050: 79 20 74 6F 20 61 64 76 61 6E 63 65 20 61 6C 6C y to advance all
000060: 20 74 68 65 20 65 78 69 73 74 69 6E 67 20 70 61 the existing pa
000070: 72 74 69 61 6C 6C 79 20 63 6F 6D 70 6C 65 74 65 rtially complete
000080: 64 0D 0A 09 09 09 20 20 6D 61 74 63 68 65 73 2A d..... matches*
000090: 29 0D 0A 0D 0A 09 09 09 6A 3A 3D 30 3B 0D 0A 09 ).......j:=0;...
0000A0: 09 09 46 4F 52 20 69 3A 3D 31 20 54 4F 20 50 61 ..FOR i:=1 TO Pa
0000B0: 72 74 69 61 6C 73 20 44 4F 0D 0A 09 09 09 09 6E rtials DO......n
0000C0: 63 68 3A 3D 4C 61 73 74 53 74 72 69 6E 67 5B 50 ch:=LastString[P
0000D0: 61 72 74 69 61 6C 50 6F 73 5B 69 5D 5D 3B 0D 0A artialPos[i]];..
0000E0: 09 09 09 09 49 46 20 28 6E 63 68 3D 63 68 29 20 ....IF (nch=ch)
0000F0: 4F 52 20 28 43 41 50 28 6E 63 68 29 3D 63 68 29 OR (CAP(nch)=ch)
000100: 20 54 48 45 4E 0D 0A 0D 0A 09 09 09 09 28 2A 20 THEN........(*
000110: 74 68 65 20 74 77 6F 20 63 6F 6E 64 69 74 69 6F the two conditio
000120: 6E 73 20 69 6E 20 74 68 65 20 61 62 6F 76 65 20 ns in the above
000130: 6C 69 6E 65 0D 0A 09 09 09 09 20 20 20 70 72 6F line...... pro
000140: 76 69 64 65 20 66 6F 72 20 6C 6F 77 65 72 20 63 vide for lower c
000150: 61 73 65 20 74 6F 20 69 6E 20 74 68 65 20 6D 61 ase to in the ma
000160: 74 63 68 20 0D 0A 09 09 09 09 20 20 20 73 74 72 tch ...... str
000170: 69 6E 67 20 74 6F 20 6D 61 74 63 68 20 65 69 74 ing to match eit
000180: 68 65 72 20 63 61 73 65 2A 29 0D 0A 0D 0A 09 09 her case*)......
000190: 09 09 09 49 4E 43 28 6A 29 3B 0D 0A 09 09 09 09 ...INC(j);......
0001A0: 09 50 61 72 74 69 61 6C 50 6F 73 5B 6A 5D 3A 3D .PartialPos[j]:=
0001B0: 50 61 72 74 69 61 6C 50 6F 73 5B 69 5D 2B 31 3B PartialPos[i]+1;
0001C0: 0D 0A 09 09 09 09 09 49 46 20 50 61 72 74 69 61 .......IF Partia
0001D0: 6C 50 6F 73 5B 6A 5D 3E 4C 61 73 74 4C 65 6E 20 lPos[j]>LastLen
0001E0: 54 48 45 4E 20 0D 0A 09 09 09 09 09 09 45 58 49 THEN ........EXI
0001F0: 54 20 20 28 2A 6D 61 74 63 68 20 66 6F 75 6E 64 T (*match found
Size : 512 (Real : 512)
000000: 6E 75 61 74 69 6F 6E 3A 3D 46 41 4C 53 45 3B 0D nuation:=FALSE;.
000010: 0A 0D 0A 09 49 46 20 4C 69 6E 65 4F 66 46 69 6C ....IF LineOfFil
000020: 65 3E 30 20 54 48 45 4E 0D 0A 09 20 20 20 20 57 e>0 THEN... W
000030: 49 54 48 20 50 6F 73 54 61 62 6C 65 5B 4C 69 6E ITH PosTable[Lin
000040: 65 4F 66 46 69 6C 65 5D 20 44 4F 0D 0A 09 09 49 eOfFile] DO....I
000050: 46 20 42 6C 6F 63 6B 4E 75 6D 62 65 72 3C 3E 42 F BlockNumber<>B
000060: 6C 6F 63 6B 4E 6F 20 54 48 45 4E 0D 0A 09 09 09 lockNo THEN.....
000070: 53 65 74 42 6C 6F 63 6B 28 49 6E 66 2C 42 6C 6F SetBlock(Inf,Blo
000080: 63 6B 4E 75 6D 62 65 72 29 3B 0D 0A 09 09 09 4E ckNumber);.....N
000090: 65 78 74 42 6C 6F 63 6B 4E 6F 3A 3D 42 6C 6F 63 extBlockNo:=Bloc
0000A0: 6B 4E 75 6D 62 65 72 3B 0D 0A 09 09 09 52 65 61 kNumber;.....Rea
0000B0: 64 42 75 66 66 65 72 3B 0D 0A 09 09 09 45 4E 44 dBuffer;.....END
0000C0: 3B 0D 0A 09 09 43 68 61 72 50 6F 73 3A 3D 43 68 ;....CharPos:=Ch
0000D0: 61 72 4F 66 66 73 65 74 2D 31 3B 0D 0A 09 09 4E arOffset-1;....N
0000E0: 65 78 74 43 68 61 72 3B 09 09 28 2A 72 65 2D 70 extChar;..(*re-p
0000F0: 72 69 6D 65 20 63 68 61 72 61 63 74 65 72 20 70 rime character p
000100: 6F 69 6E 74 65 72 2A 29 0D 0A 0D 0A 09 09 28 2A ointer*)......(*
000110: 09 54 68 65 20 72 65 71 75 69 72 65 64 20 63 68 .The required ch
000120: 61 72 61 63 74 65 72 20 69 73 20 6F 6E 65 20 6C aracter is one l
000130: 65 73 73 20 74 68 61 6E 20 74 68 65 20 0D 0A 09 ess than the ...
000140: 09 09 73 61 76 65 64 20 6D 61 72 6B 65 72 20 61 ..saved marker a
000150: 73 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 s the character
000160: 70 6F 69 6E 74 65 72 20 69 73 0D 0A 09 09 09 69 pointer is.....i
000170: 6E 63 72 65 6D 65 6E 74 65 64 20 61 66 74 65 72 ncremented after
000180: 20 74 68 65 20 66 69 72 73 74 20 63 68 61 72 61 the first chara
000190: 63 74 65 72 20 6F 66 20 74 68 65 20 6C 69 6E 65 cter of the line
0001A0: 20 69 73 0D 0A 09 09 09 72 65 74 75 72 6E 65 64 is.....returned
0001B0: 2E 20 42 75 74 20 74 68 65 20 62 6C 6F 63 6B 20 . But the block
0001C0: 69 73 20 63 6F 72 72 65 63 74 2C 20 62 65 63 61 is correct, beca
0001D0: 75 73 65 20 74 68 65 0D 0A 09 09 09 27 70 6F 73 use the.....'pos
0001E0: 69 74 69 6F 6E 20 62 65 79 6F 6E 64 20 65 6E 64 ition beyond end
0001F0: 20 6F 66 20 62 6C 6F 63 6B 27 20 69 73 20 6E 6F of block' is no
Size : 512 (Real : 512)
000000: 2A 29 0D 0A 09 09 09 09 09 09 45 4E 44 3B 0D 0A *)........END;..
000010: 09 09 09 09 09 0D 0A 09 09 09 09 09 45 4E 44 3B ............END;
000020: 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 50 ......END;.....P
000030: 61 72 74 69 61 6C 73 3A 3D 6A 3B 0D 0A 09 09 09 artials:=j;.....
000040: 4E 65 78 74 43 68 61 72 3B 0D 0A 09 09 09 45 4E NextChar;.....EN
000050: 44 3B 0D 0A 09 09 28 2A 65 69 74 68 65 72 20 63 D;....(*either c
000060: 68 3D 45 4F 46 20 6F 72 20 61 20 6D 61 74 63 68 h=EOF or a match
000070: 20 68 61 73 20 62 65 65 6E 20 66 6F 75 6E 64 2A has been found*
000080: 29 0D 0A 09 09 49 46 20 63 68 3D 45 4F 46 20 54 )....IF ch=EOF T
000090: 48 45 4E 0D 0A 09 09 09 57 72 69 74 65 4C 6E 3B HEN.....WriteLn;
0000A0: 0D 0A 09 09 09 57 72 69 74 65 53 74 72 69 6E 67 .....WriteString
0000B0: 28 4C 61 73 74 53 74 72 69 6E 67 29 3B 0D 0A 09 (LastString);...
0000C0: 09 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 ..WriteString('
0000D0: 63 6F 75 6C 64 20 6E 6F 74 20 62 65 20 66 6F 75 could not be fou
0000E0: 6E 64 27 29 3B 0D 0A 09 09 45 4C 53 45 0D 0A 09 nd');....ELSE...
0000F0: 09 09 52 65 70 6F 73 69 74 69 6F 6E 46 69 6C 65 ..RepositionFile
000100: 3B 20 28 2A 74 6F 20 73 74 61 72 74 20 6F 66 20 ; (*to start of
000110: 63 75 72 72 65 6E 74 20 6C 69 6E 65 2A 29 0D 0A current line*)..
000120: 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 28 ...END;....END;(
000130: 2A 73 65 61 72 63 68 20 73 74 72 69 6E 67 20 65 *search string e
000140: 6E 74 65 72 65 64 20 6F 72 20 65 78 69 73 74 65 ntered or existe
000150: 64 2A 29 0D 0A 09 45 4E 44 20 53 65 61 72 63 68 d*)...END Search
000160: 3B 0D 0A 09 0D 0A 28 2A 09 4F 70 74 69 6F 6E 20 ;.....(*.Option
000170: 66 6C 61 67 73 20 61 6E 64 20 73 63 72 65 65 6E flags and screen
000180: 20 64 69 6D 65 6E 73 69 6F 6E 73 2A 29 0D 0A 0D dimensions*)...
000190: 0A 56 41 52 09 50 61 67 65 4D 6F 64 65 3A 42 4F .VAR.PageMode:BO
0001A0: 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B 0D 0A 09 4C OLEAN=FALSE;...L
0001B0: 69 6E 65 57 72 61 70 3A 42 4F 4F 4C 45 41 4E 3D ineWrap:BOOLEAN=
0001C0: 46 41 4C 53 45 3B 0D 0A 09 4E 75 6D 62 65 72 4C FALSE;...NumberL
0001D0: 69 6E 65 73 3A 42 4F 4F 4C 45 41 4E 3D 46 41 4C ines:BOOLEAN=FAL
0001E0: 53 45 3B 0D 0A 09 45 78 70 61 6E 64 54 61 62 73 SE;...ExpandTabs
0001F0: 3A 42 4F 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B 0D :BOOLEAN=FALSE;.
Size : 512 (Real : 512)
000000: 74 20 63 68 65 63 6B 65 64 0D 0A 09 09 09 75 6E t checked.....un
000010: 74 69 6C 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E til the followin
000020: 67 20 63 68 61 72 61 63 74 65 72 20 69 73 20 73 g character is s
000030: 6F 75 67 68 74 2A 29 0D 0A 09 09 45 4E 44 3B 28 ought*)....END;(
000040: 2A 57 49 54 48 2A 29 0D 0A 09 20 20 20 20 45 4E *WITH*)... EN
000050: 44 3B 28 2A 49 46 20 4C 69 6E 65 4F 66 46 69 6C D;(*IF LineOfFil
000060: 65 3E 30 2A 29 0D 0A 09 57 48 49 4C 45 20 4C 69 e>0*)...WHILE Li
000070: 6E 65 4F 66 46 69 6C 65 3C 52 65 71 75 69 72 65 neOfFile<Require
000080: 64 20 44 4F 0D 0A 09 09 57 48 49 4C 45 20 63 68 d DO....WHILE ch
000090: 3C 3E 43 52 20 44 4F 20 4E 65 78 74 43 68 61 72 <>CR DO NextChar
0000A0: 20 45 4E 44 3B 0D 0A 09 09 4E 65 78 74 43 68 61 END;....NextCha
0000B0: 72 3B 0D 0A 09 09 49 46 20 63 68 3D 4C 46 20 54 r;....IF ch=LF T
0000C0: 48 45 4E 20 4E 65 78 74 43 68 61 72 20 45 4E 44 HEN NextChar END
0000D0: 3B 0D 0A 09 09 49 4E 43 28 4C 69 6E 65 4F 66 46 ;....INC(LineOfF
0000E0: 69 6C 65 29 3B 0D 0A 09 09 41 64 64 4D 61 72 6B ile);....AddMark
0000F0: 65 72 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E er;....END;...EN
000100: 44 20 52 65 70 6F 73 69 74 69 6F 6E 46 69 6C 65 D RepositionFile
000110: 3B 0D 0A 0D 0A 54 59 50 45 09 4D 61 74 63 68 53 ;....TYPE.MatchS
000120: 74 72 69 6E 67 3D 41 52 52 41 59 5B 31 2E 2E 36 tring=ARRAY[1..6
000130: 30 5D 20 4F 46 20 43 48 41 52 3B 0D 0A 0D 0A 56 0] OF CHAR;....V
000140: 41 52 09 4C 61 73 74 53 74 72 69 6E 67 3A 4D 61 AR.LastString:Ma
000150: 74 63 68 53 74 72 69 6E 67 3B 0D 0A 09 4C 61 73 tchString;...Las
000160: 74 4C 65 6E 3A 43 41 52 44 49 4E 41 4C 3D 30 3B tLen:CARDINAL=0;
000170: 09 28 2A 6C 65 6E 67 74 68 20 6F 66 20 6C 61 73 .(*length of las
000180: 74 20 6D 61 74 63 68 65 64 20 73 74 72 69 6E 67 t matched string
000190: 2A 29 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 *)....PROCEDURE
0001A0: 53 65 61 72 63 68 28 44 65 6C 69 6D 69 74 65 72 Search(Delimiter
0001B0: 3A 43 48 41 52 29 3B 0D 0A 0D 0A 28 2A 09 53 65 :CHAR);....(*.Se
0001C0: 61 72 63 68 20 66 6F 72 20 61 20 73 74 72 69 6E arch for a strin
0001D0: 67 20 66 72 6F 6D 20 74 68 65 20 63 75 72 72 65 g from the curre
0001E0: 6E 74 20 70 6F 73 69 74 69 6F 6E 20 69 6E 20 74 nt position in t
0001F0: 68 65 20 66 69 6C 65 0D 0A 09 0D 0A 09 54 68 69 he file......Thi
Size : 512 (Real : 512)
000000: 6E 65 73 20 70 65 72 20 70 61 67 65 27 29 3B 0D nes per page');.
000010: 0A 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 57 72 69 ..WriteLn;...Wri
000020: 74 65 53 74 72 69 6E 67 28 27 57 36 34 20 20 20 teString('W64
000030: 20 20 20 20 20 20 20 2D 20 74 6F 67 67 6C 65 20 - toggle
000040: 6C 69 6E 65 20 77 72 61 70 2C 20 73 65 74 20 36 line wrap, set 6
000050: 34 20 63 6F 6C 75 6D 6E 73 20 70 65 72 20 6C 69 4 columns per li
000060: 6E 65 27 29 3B 0D 0A 09 57 72 69 74 65 4C 6E 3B ne');...WriteLn;
000070: 0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 ...WriteString('
000080: 49 20 20 20 20 20 20 20 20 20 20 20 20 2D 20 74 I - t
000090: 6F 67 67 6C 65 20 74 61 62 73 20 65 78 70 61 6E oggle tabs expan
0000A0: 73 69 6F 6E 27 29 3B 0D 0A 09 57 72 69 74 65 4C sion');...WriteL
0000B0: 6E 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 n;...WriteString
0000C0: 28 27 4E 20 20 20 20 20 20 20 20 20 20 20 20 2D ('N -
0000D0: 20 74 6F 67 67 6C 65 20 6C 69 6E 65 20 6E 75 6D toggle line num
0000E0: 62 65 72 69 6E 67 27 29 3B 57 72 69 74 65 4C 6E bering');WriteLn
0000F0: 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28 ;...WriteString(
000100: 27 20 43 6F 6D 6D 61 6E 64 3A 27 29 3B 0D 0A 09 ' Command:');...
000110: 45 4E 44 20 50 72 69 6E 74 48 65 6C 70 3B 09 0D END PrintHelp;..
000120: 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 4E 65 77 ...PROCEDURE New
000130: 56 61 6C 75 65 28 56 41 52 20 64 65 66 61 75 6C Value(VAR defaul
000140: 74 3A 43 41 52 44 49 4E 41 4C 3B 6C 69 6D 69 74 t:CARDINAL;limit
000150: 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A 56 41 52 :CARDINAL);..VAR
000160: 09 69 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 42 45 .i:CARDINAL;..BE
000170: 47 49 4E 0D 0A 09 52 65 61 64 28 63 68 29 3B 0D GIN...Read(ch);.
000180: 0A 09 69 3A 3D 4E 75 6D 62 65 72 28 29 3B 0D 0A ..i:=Number();..
000190: 09 49 46 20 69 3E 3D 6C 69 6D 69 74 20 54 48 45 .IF i>=limit THE
0001A0: 4E 20 64 65 66 61 75 6C 74 3A 3D 69 20 45 4E 44 N default:=i END
0001B0: 0D 0A 09 45 4E 44 20 4E 65 77 56 61 6C 75 65 3B ...END NewValue;
0001C0: 0D 0A 09 0D 0A 42 45 47 49 4E 0D 0A 09 45 6E 64 .....BEGIN...End
0001D0: 4F 66 46 69 6C 65 3A 3D 46 41 4C 53 45 3B 0D 0A OfFile:=FALSE;..
0001E0: 09 4E 65 78 74 42 6C 6F 63 6B 4E 6F 3A 3D 30 3B .NextBlockNo:=0;
0001F0: 0D 0A 09 4C 69 6E 65 4E 75 6D 62 65 72 3A 3D 32 ...LineNumber:=2
Size : 512 (Real : 512)
000000: 66 69 6C 65 2C 66 69 6C 65 2C 2E 2E 2E 5B 6F 70 file,file,...[op
000010: 74 69 6F 6E 73 27 29 3B 57 72 69 74 65 4C 6E 3B tions');WriteLn;
000020: 0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 ...WriteString('
000030: 20 77 68 65 72 65 20 66 69 6C 65 20 69 73 20 61 where file is a
000040: 20 66 69 6C 65 20 74 6F 20 6C 69 73 74 20 6F 72 file to list or
000050: 20 61 20 77 69 6C 64 20 63 61 72 64 20 66 6F 72 a wild card for
000060: 20 66 69 6C 65 73 20 74 6F 20 6C 69 73 74 27 29 files to list')
000070: 3B 0D 0A 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 57 ;...WriteLn;...W
000080: 72 69 74 65 4C 6E 3B 0D 0A 09 57 72 69 74 65 53 riteLn;...WriteS
000090: 74 72 69 6E 67 28 27 20 54 68 65 20 6F 70 74 69 tring(' The opti
0000A0: 6F 6E 73 20 61 72 65 3A 27 29 3B 57 72 69 74 65 ons are:');Write
0000B0: 4C 6E 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E Ln;...WriteStrin
0000C0: 67 28 27 09 09 50 20 2D 20 6F 75 74 70 75 74 20 g('..P - output
0000D0: 69 6E 20 70 61 67 65 20 6D 6F 64 65 27 29 3B 57 in page mode');W
0000E0: 72 69 74 65 4C 6E 3B 0D 0A 09 57 72 69 74 65 53 riteLn;...WriteS
0000F0: 74 72 69 6E 67 28 27 09 09 4E 20 2D 20 6E 75 6D tring('..N - num
000100: 62 65 72 20 6C 69 6E 65 73 20 6F 6E 20 6F 75 74 ber lines on out
000110: 70 75 74 27 29 3B 57 72 69 74 65 4C 6E 3B 0D 0A put');WriteLn;..
000120: 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 09 09 .WriteString('..
000130: 57 20 2D 20 77 72 61 70 20 6C 6F 6E 67 20 6C 69 W - wrap long li
000140: 6E 65 73 27 29 3B 57 72 69 74 65 4C 6E 3B 0D 0A nes');WriteLn;..
000150: 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 09 09 .WriteString('..
000160: 49 20 2D 20 65 78 70 61 6E 64 20 74 61 62 73 20 I - expand tabs
000170: 74 6F 20 73 70 61 63 65 73 27 29 3B 57 72 69 74 to spaces');Writ
000180: 65 4C 6E 3B 0D 0A 09 57 72 69 74 65 4C 6E 3B 0D eLn;...WriteLn;.
000190: 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 ..WriteString('
0001A0: 66 6F 72 20 65 78 61 6D 70 6C 65 3A 20 20 43 41 for example: CA
0001B0: 54 20 2A 2E 44 45 46 5B 50 31 36 57 32 30 4E 27 T *.DEF[P16W20N'
0001C0: 29 3B 57 72 69 74 65 4C 6E 3B 0D 0A 09 48 41 4C );WriteLn;...HAL
0001D0: 54 0D 0A 09 45 4E 44 20 55 73 61 67 65 3B 0D 0A T...END Usage;..
0001E0: 0D 0A 0D 0A 0D 0A 0D 0A 56 41 52 09 50 61 72 61 ........VAR.Para
0001F0: 6D 3A 41 52 52 41 59 20 5B 30 2E 2E 31 30 5D 20 m:ARRAY [0..10]
Size : 512 (Real : 512)
000000: 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B ....END;....END;
000010: 0D 0A 09 49 46 20 4E 4F 54 20 43 6F 6E 74 69 6E ...IF NOT Contin
000020: 75 61 74 69 6F 6E 20 54 48 45 4E 20 0D 0A 09 09 uation THEN ....
000030: 41 64 64 4D 61 72 6B 65 72 3B 0D 0A 09 09 49 4E AddMarker;....IN
000040: 43 28 4C 69 6E 65 4F 66 46 69 6C 65 29 3B 0D 0A C(LineOfFile);..
000050: 09 09 45 4E 44 3B 0D 0A 09 43 6F 6E 74 69 6E 75 ..END;...Continu
000060: 61 74 69 6F 6E 3A 3D 46 41 4C 53 45 3B 0D 0A 0D ation:=FALSE;...
000070: 0A 09 4C 4F 4F 50 0D 0A 0D 0A 09 09 28 2A 73 74 ..LOOP......(*st
000080: 72 69 70 20 74 6F 70 20 62 69 74 20 2D 20 73 68 rip top bit - sh
000090: 6F 75 6C 64 20 70 72 6F 62 61 62 6C 79 20 62 65 ould probably be
0000A0: 20 6F 70 74 69 6F 6E 20 63 6F 6E 74 72 6F 6C 6C option controll
0000B0: 65 64 2A 29 0D 0A 0D 0A 09 09 49 46 20 43 68 61 ed*)......IF Cha
0000C0: 72 73 57 72 69 74 74 65 6E 3E 3D 50 61 67 65 57 rsWritten>=PageW
0000D0: 69 64 74 68 20 54 48 45 4E 20 0D 0A 09 09 09 43 idth THEN .....C
0000E0: 6F 6E 74 69 6E 75 61 74 69 6F 6E 3A 3D 54 52 55 ontinuation:=TRU
0000F0: 45 3B 0D 0A 09 09 09 57 72 69 74 65 4C 6E 3B 0D E;.....WriteLn;.
000100: 0A 09 09 09 52 45 54 55 52 4E 0D 0A 09 09 09 45 ....RETURN.....E
000110: 4E 44 3B 0D 0A 0D 0A 09 09 49 46 20 63 68 3E 38 ND;......IF ch>8
000120: 30 78 20 54 48 45 4E 20 63 68 3A 3D 43 48 52 28 0x THEN ch:=CHR(
000130: 4F 52 44 28 63 68 29 2D 38 30 68 29 20 45 4E 44 ORD(ch)-80h) END
000140: 3B 0D 0A 0D 0A 09 09 43 41 53 45 20 63 68 20 4F ;......CASE ch O
000150: 46 0D 0A 09 09 45 4F 46 3A 09 28 2A 45 6E 64 20 F....EOF:.(*End
000160: 6F 66 20 46 69 6C 65 20 63 68 61 72 61 63 74 65 of File characte
000170: 72 20 66 6F 75 6E 64 2C 0D 0A 09 09 09 20 20 28 r found,..... (
000180: 65 69 74 68 65 72 20 66 72 6F 6D 20 66 69 6C 65 either from file
000190: 20 6F 72 20 67 65 6E 65 72 61 74 65 64 20 62 79 or generated by
0001A0: 20 4E 65 78 74 43 68 61 72 29 0D 0A 09 09 09 20 NextChar).....
0001B0: 20 69 66 20 6E 6F 74 68 69 6E 67 20 68 61 73 20 if nothing has
0001C0: 62 65 65 6E 20 70 72 69 6E 74 65 64 20 6F 6E 20 been printed on
0001D0: 6C 69 6E 65 2C 0D 0A 09 09 09 20 20 6A 75 73 74 line,..... just
0001E0: 20 72 65 74 75 72 6E 20 65 6E 64 20 6F 66 20 66 return end of f
0001F0: 69 6C 65 20 73 74 61 74 75 73 0D 0A 09 09 09 20 ile status.....
Size : 512 (Real : 512)
000000: 4F 46 20 50 61 72 61 6D 65 74 65 72 3B 0D 0A 09 OF Parameter;...
000010: 43 6F 75 6E 74 3A 49 4E 54 45 47 45 52 3B 0D 0A Count:INTEGER;..
000020: 09 4E 61 6D 65 73 3A 41 52 52 41 59 20 5B 30 2E .Names:ARRAY [0.
000030: 2E 31 30 30 5D 20 4F 46 20 46 69 6C 65 4E 61 6D .100] OF FileNam
000040: 65 3B 0D 0A 09 4E 61 6D 65 43 6F 75 6E 74 20 3A e;...NameCount :
000050: 20 49 4E 54 45 47 45 52 3B 0D 0A 09 43 6F 75 6E INTEGER;...Coun
000060: 74 65 72 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A ter : INTEGER;..
000070: 09 43 6E 74 65 72 20 3A 20 49 4E 54 45 47 45 52 .Cnter : INTEGER
000080: 3B 0D 0A 0D 0A 28 2A 09 4F 75 74 70 75 74 20 74 ;....(*.Output t
000090: 68 65 20 66 69 6C 65 20 61 6C 72 65 61 64 79 20 he file already
0000A0: 6F 70 65 6E 65 64 2A 29 0D 0A 0D 0A 09 0D 0A 50 opened*).......P
0000B0: 52 4F 43 45 44 55 52 45 20 4F 75 74 70 75 74 46 ROCEDURE OutputF
0000C0: 69 6C 65 28 4E 61 6D 65 3A 41 52 52 41 59 20 4F ile(Name:ARRAY O
0000D0: 46 20 43 48 41 52 29 3B 0D 0A 56 41 52 09 63 68 F CHAR);..VAR.ch
0000E0: 3A 43 48 41 52 3B 0D 0A 09 69 3A 43 41 52 44 49 :CHAR;...i:CARDI
0000F0: 4E 41 4C 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 NAL;..PROCEDURE
000100: 50 61 67 65 48 65 61 64 65 72 3B 0D 0A 42 45 47 PageHeader;..BEG
000110: 49 4E 0D 0A 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 IN...WriteLn;...
000120: 57 72 69 74 65 53 74 72 69 6E 67 28 4E 61 6D 65 WriteString(Name
000130: 29 3B 0D 0A 0D 0A 09 28 2A 20 49 66 20 74 65 72 );.....(* If ter
000140: 6D 69 6E 61 6C 20 73 75 70 70 6F 72 74 73 20 74 minal supports t
000150: 61 62 73 2C 20 70 75 74 20 70 61 67 65 20 6E 75 abs, put page nu
000160: 6D 62 65 72 20 6F 6E 20 72 69 67 68 74 20 68 61 mber on right ha
000170: 6E 64 20 73 69 64 65 0D 0A 09 6F 66 20 73 63 72 nd side...of scr
000180: 65 65 6E 2C 20 6F 74 68 65 72 77 69 73 65 20 6A een, otherwise j
000190: 75 73 74 20 67 6F 20 69 6E 20 31 30 20 63 68 61 ust go in 10 cha
0001A0: 72 73 20 74 6F 20 73 61 76 65 20 74 69 6D 65 20 rs to save time
0001B0: 6F 6E 0D 0A 09 61 6C 6F 77 20 6C 69 6E 6B 73 2A on...alow links*
0001C0: 29 0D 0A 0D 0A 09 49 46 20 4E 4F 54 20 45 78 70 ).....IF NOT Exp
0001D0: 61 6E 64 54 61 62 73 20 54 48 45 4E 0D 0A 09 09 andTabs THEN....
0001E0: 46 4F 52 20 69 3A 3D 32 37 20 54 4F 20 50 61 67 FOR i:=27 TO Pag
0001F0: 65 57 69 64 74 68 20 42 59 20 38 20 44 4F 20 57 eWidth BY 8 DO W
Size : 512 (Real : 512)
000000: 20 49 66 20 6C 69 6E 65 20 77 61 73 20 69 6E 63 If line was inc
000010: 6F 6D 70 6C 65 74 65 2C 20 70 72 69 6E 74 20 3C omplete, print <
000020: 45 4F 46 3E 20 61 6E 64 20 0D 0A 09 09 09 20 20 EOF> and .....
000030: 72 65 74 75 72 6E 2A 29 0D 0A 0D 0A 09 09 09 49 return*).......I
000040: 46 20 28 43 68 61 72 73 57 72 69 74 74 65 6E 3D F (CharsWritten=
000050: 30 29 20 54 48 45 4E 0D 0A 09 09 09 09 57 72 69 0) THEN......Wri
000060: 74 65 53 74 72 69 6E 67 28 27 20 20 09 20 20 2A teString(' . *
000070: 2A 20 45 6E 64 20 6F 66 20 46 69 6C 65 20 2A 2A * End of File **
000080: 27 29 3B 0D 0A 09 09 09 09 45 6E 64 4F 66 46 69 ');......EndOfFi
000090: 6C 65 3A 3D 54 52 55 45 3B 0D 0A 09 09 09 45 4C le:=TRUE;.....EL
0000A0: 53 45 0D 0A 09 09 09 09 57 72 69 74 65 53 74 72 SE......WriteStr
0000B0: 69 6E 67 28 27 3C 45 4F 46 3E 27 29 3B 0D 0A 09 ing('<EOF>');...
0000C0: 09 09 09 45 4E 44 3B 0D 0A 09 09 09 52 45 54 55 ...END;.....RETU
0000D0: 52 4E 3B 0D 0A 09 09 09 7C 0D 0A 0D 0A 09 09 43 RN;.....|......C
0000E0: 52 3A 09 28 2A 43 61 72 72 69 61 67 65 20 72 65 R:.(*Carriage re
0000F0: 74 75 72 6E 20 66 6F 75 6E 64 2A 29 0D 0A 09 09 turn found*)....
000100: 09 4E 65 78 74 43 68 61 72 3B 0D 0A 09 09 09 49 .NextChar;.....I
000110: 46 20 28 63 68 3D 4C 46 29 20 54 48 45 4E 20 4E F (ch=LF) THEN N
000120: 65 78 74 43 68 61 72 20 45 4E 44 3B 0D 0A 09 09 extChar END;....
000130: 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 09 45 58 .WriteLn;.....EX
000140: 49 54 3B 0D 0A 09 09 09 7C 0D 0A 09 09 4C 46 3A IT;.....|....LF:
000150: 09 28 2A 6D 75 73 74 20 62 65 20 61 20 73 74 72 .(*must be a str
000160: 61 79 20 6C 69 6E 65 20 66 65 65 64 2C 20 74 72 ay line feed, tr
000170: 65 61 74 20 61 73 20 61 0D 0A 09 09 09 20 20 6C eat as a..... l
000180: 69 6E 65 20 74 65 72 6D 69 6E 61 74 6F 72 2A 29 ine terminator*)
000190: 0D 0A 09 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 .....WriteLn;...
0001A0: 09 09 45 58 49 54 3B 0D 0A 09 09 09 7C 0D 0A 09 ..EXIT;.....|...
0001B0: 09 54 41 42 3A 09 52 45 50 45 41 54 0D 0A 09 09 .TAB:.REPEAT....
0001C0: 09 09 49 4E 43 28 43 68 61 72 73 57 72 69 74 74 ..INC(CharsWritt
0001D0: 65 6E 29 3B 0D 0A 09 09 09 09 49 46 20 43 68 61 en);......IF Cha
0001E0: 72 73 57 72 69 74 74 65 6E 3E 3D 50 61 67 65 57 rsWritten>=PageW
0001F0: 69 64 74 68 20 54 48 45 4E 0D 0A 09 09 09 09 09 idth THEN.......
Size : 512 (Real : 512)
000000: 72 69 74 65 28 54 41 42 29 20 45 4E 44 3B 0D 0A rite(TAB) END;..
000010: 09 45 4C 53 45 0D 0A 09 09 46 4F 52 20 69 3A 3D .ELSE....FOR i:=
000020: 31 20 54 4F 20 31 30 20 44 4F 20 57 72 69 74 65 1 TO 10 DO Write
000030: 28 27 20 27 29 20 45 4E 44 3B 0D 0A 09 09 45 4E (' ') END;....EN
000040: 44 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 D;...WriteString
000050: 28 27 50 61 67 65 3A 20 27 29 3B 0D 0A 09 57 72 ('Page: ');...Wr
000060: 69 74 65 49 6E 74 28 50 61 67 65 4E 75 6D 62 65 iteInt(PageNumbe
000070: 72 2C 35 29 3B 0D 0A 09 57 72 69 74 65 4C 6E 3B r,5);...WriteLn;
000080: 0D 0A 09 45 4E 44 20 50 61 67 65 48 65 61 64 65 ...END PageHeade
000090: 72 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 r;....PROCEDURE
0000A0: 4E 75 6D 62 65 72 28 29 3A 43 41 52 44 49 4E 41 Number():CARDINA
0000B0: 4C 3B 0D 0A 54 59 50 45 09 43 68 61 72 53 65 74 L;..TYPE.CharSet
0000C0: 3D 53 45 54 20 4F 46 20 43 48 41 52 3B 0D 0A 56 =SET OF CHAR;..V
0000D0: 41 52 09 69 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A AR.i:CARDINAL;..
0000E0: 42 45 47 49 4E 0D 0A 09 69 3A 3D 30 3B 0D 0A 09 BEGIN...i:=0;...
0000F0: 57 48 49 4C 45 20 63 68 20 49 4E 20 43 68 61 72 WHILE ch IN Char
000100: 53 65 74 7B 27 30 27 2E 2E 27 39 27 2C 42 53 2C Set{'0'..'9',BS,
000110: 44 45 4C 7D 20 44 4F 0D 0A 09 09 49 46 20 28 63 DEL} DO....IF (c
000120: 68 3D 42 53 29 20 4F 52 20 28 63 68 3D 44 45 4C h=BS) OR (ch=DEL
000130: 29 20 54 48 45 4E 20 69 3A 3D 69 20 44 49 56 20 ) THEN i:=i DIV
000140: 31 30 0D 0A 09 09 45 4C 53 45 0D 0A 09 09 09 69 10....ELSE.....i
000150: 3A 3D 31 30 2A 69 2B 28 4F 52 44 28 63 68 29 2D :=10*i+(ORD(ch)-
000160: 4F 52 44 28 27 30 27 29 29 3B 0D 0A 09 09 09 45 ORD('0'));.....E
000170: 4E 44 3B 0D 0A 09 09 52 65 61 64 28 63 68 29 3B ND;....Read(ch);
000180: 0D 0A 09 09 45 4E 44 3B 0D 0A 09 52 45 54 55 52 ....END;...RETUR
000190: 4E 20 69 0D 0A 09 45 4E 44 20 4E 75 6D 62 65 72 N i...END Number
0001A0: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 50 72 69 ;..PROCEDURE Pri
0001B0: 6E 74 48 65 6C 70 3B 0D 0A 42 45 47 49 4E 0D 0A ntHelp;..BEGIN..
0001C0: 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 45 .WriteString(' E
0001D0: 78 61 6D 70 6C 65 73 20 6F 66 20 70 6F 73 73 69 xamples of possi
0001E0: 62 6C 65 20 72 65 73 70 6F 6E 73 65 73 3A 27 29 ble responses:')
0001F0: 3B 57 72 69 74 65 4C 6E 3B 0D 0A 09 57 72 69 74 ;WriteLn;...Writ
Size : 512 (Real : 512)
000000: 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 09 09 09 43 WriteLn;.......C
000010: 6F 6E 74 69 6E 75 61 74 69 6F 6E 3A 3D 54 52 55 ontinuation:=TRU
000020: 45 3B 0D 0A 09 09 09 09 09 52 45 54 55 52 4E 09 E;.......RETURN.
000030: 28 2A 6E 6F 74 65 20 74 68 61 74 20 74 61 62 20 (*note that tab
000040: 67 65 74 73 20 70 72 6F 63 65 73 73 65 64 20 61 gets processed a
000050: 67 61 69 6E 0D 0A 09 09 09 09 09 09 20 20 61 74 gain........ at
000060: 20 73 74 61 72 74 20 6F 66 20 6E 65 78 74 20 6C start of next l
000070: 69 6E 65 2A 29 0D 0A 09 09 09 09 09 45 4E 44 3B ine*).......END;
000080: 0D 0A 09 09 09 09 49 46 20 45 78 70 61 6E 64 54 ......IF ExpandT
000090: 61 62 73 20 4F 52 20 4E 75 6D 62 65 72 4C 69 6E abs OR NumberLin
0000A0: 65 73 20 54 48 45 4E 20 57 72 69 74 65 28 27 20 es THEN Write('
0000B0: 27 29 20 45 4E 44 3B 0D 0A 09 09 09 09 55 4E 54 ') END;......UNT
0000C0: 49 4C 20 49 41 4E 44 28 43 68 61 72 73 57 72 69 IL IAND(CharsWri
0000D0: 74 74 65 6E 2C 37 29 3D 37 3B 0D 0A 09 09 09 49 tten,7)=7;.....I
0000E0: 46 20 4E 4F 54 20 28 45 78 70 61 6E 64 54 61 62 F NOT (ExpandTab
0000F0: 73 20 4F 52 20 4E 75 6D 62 65 72 4C 69 6E 65 73 s OR NumberLines
000100: 29 20 54 48 45 4E 20 57 72 69 74 65 28 54 41 42 ) THEN Write(TAB
000110: 29 20 45 4E 44 3B 0D 0A 09 09 09 7C 0D 0A 09 09 ) END;.....|....
000120: 30 78 2E 2E 31 66 78 3A 09 28 2A 6E 6F 6E 2D 70 0x..1fx:.(*non-p
000130: 72 69 6E 74 69 6E 67 20 63 68 61 72 61 63 74 65 rinting characte
000140: 72 73 2E 20 54 68 69 73 20 69 73 20 63 68 65 61 rs. This is chea
000150: 74 69 6E 67 0D 0A 09 09 09 09 20 20 73 6C 69 67 ting...... slig
000160: 68 74 6C 79 20 2D 20 73 68 6F 75 6C 64 20 65 78 htly - should ex
000170: 63 6C 75 64 65 20 43 52 20 4C 46 20 61 6E 64 20 clude CR LF and
000180: 54 41 42 2A 29 0D 0A 09 09 09 49 46 20 43 68 61 TAB*).....IF Cha
000190: 72 73 57 72 69 74 74 65 6E 3E 3D 28 50 61 67 65 rsWritten>=(Page
0001A0: 57 69 64 74 68 2D 34 29 20 54 48 45 4E 0D 0A 09 Width-4) THEN...
0001B0: 09 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 09 ...WriteLn;.....
0001C0: 09 43 6F 6E 74 69 6E 75 61 74 69 6F 6E 3A 3D 54 .Continuation:=T
0001D0: 52 55 45 3B 0D 0A 09 09 09 09 52 45 54 55 52 4E RUE;......RETURN
0001E0: 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 57 ......END;.....W
0001F0: 72 69 74 65 28 27 3C 27 29 3B 0D 0A 09 09 09 57 rite('<');.....W
Size : 512 (Real : 512)
000000: 65 53 74 72 69 6E 67 28 27 20 3F 20 20 20 20 20 eString(' ?
000010: 20 20 20 20 20 20 2D 20 54 68 69 73 20 6D 65 73 - This mes
000020: 73 61 67 65 27 29 3B 57 72 69 74 65 4C 6E 3B 0D sage');WriteLn;.
000030: 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 ..WriteString('
000040: 32 32 37 20 20 20 20 20 20 20 20 20 2D 20 20 6C 227 - l
000050: 69 73 74 20 66 72 6F 6D 20 6C 69 6E 65 20 32 32 ist from line 22
000060: 37 27 29 3B 57 72 69 74 65 4C 6E 3B 0D 0A 09 57 7');WriteLn;...W
000070: 72 69 74 65 53 74 72 69 6E 67 28 27 20 2B 32 30 riteString(' +20
000080: 20 6F 72 20 2D 32 30 20 20 2D 20 67 6F 20 66 6F or -20 - go fo
000090: 72 77 61 72 64 20 28 62 61 63 6B 29 20 32 30 20 rward (back) 20
0000A0: 6C 69 6E 65 73 27 29 3B 0D 0A 09 57 72 69 74 65 lines');...Write
0000B0: 4C 6E 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E Ln;...WriteStrin
0000C0: 67 28 27 20 71 20 28 6F 72 20 51 29 20 20 20 20 g(' q (or Q)
0000D0: 2D 20 67 6F 20 74 6F 20 6E 65 78 74 20 66 69 6C - go to next fil
0000E0: 65 27 29 3B 57 72 69 74 65 4C 6E 3B 0D 0A 09 57 e');WriteLn;...W
0000F0: 72 69 74 65 53 74 72 69 6E 67 28 27 20 43 6F 6E riteString(' Con
000100: 74 72 6F 6C 20 43 20 20 20 20 20 20 20 2D 20 61 trol C - a
000110: 62 6F 72 74 20 72 75 6E 27 29 3B 57 72 69 74 65 bort run');Write
000120: 4C 6E 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E Ln;...WriteStrin
000130: 67 28 27 2F 73 74 72 69 6E 67 2F 20 20 20 20 20 g('/string/
000140: 2D 20 6C 69 73 74 20 66 72 6F 6D 20 6E 65 78 74 - list from next
000150: 20 6F 63 63 75 72 65 6E 63 65 20 6F 66 20 73 74 occurence of st
000160: 72 69 6E 67 27 29 3B 0D 0A 09 57 72 69 74 65 4C ring');...WriteL
000170: 6E 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 n;...WriteString
000180: 28 27 31 30 30 2F 73 74 72 69 6E 67 2F 20 20 2D ('100/string/ -
000190: 20 6C 69 73 74 20 66 72 6F 6D 20 66 69 72 73 74 list from first
0001A0: 20 6F 63 63 75 72 65 6E 63 65 20 61 66 74 65 72 occurence after
0001B0: 20 6C 69 6E 65 20 31 30 30 27 29 3B 0D 0A 09 57 line 100');...W
0001C0: 72 69 74 65 4C 6E 3B 0D 0A 09 57 72 69 74 65 53 riteLn;...WriteS
0001D0: 74 72 69 6E 67 28 27 50 32 30 20 20 20 20 20 20 tring('P20
0001E0: 20 20 20 20 2D 20 74 6F 67 67 6C 65 20 70 61 67 - toggle pag
0001F0: 65 20 6D 6F 64 65 20 73 65 74 20 32 30 20 6C 69 e mode set 20 li
Size : 512 (Real : 512)
000000: 72 69 74 65 48 65 78 28 4F 52 44 28 63 68 29 2C riteHex(ORD(ch),
000010: 32 29 3B 0D 0A 09 09 09 57 72 69 74 65 28 27 3E 2);.....Write('>
000020: 27 29 3B 0D 0A 09 09 09 43 68 61 72 73 57 72 69 ');.....CharsWri
000030: 74 74 65 6E 3A 3D 43 68 61 72 73 57 72 69 74 74 tten:=CharsWritt
000040: 65 6E 2B 34 3B 0D 0A 09 09 09 7C 0D 0A 09 09 45 en+4;.....|....E
000050: 4C 53 45 09 57 72 69 74 65 28 63 68 29 3B 0D 0A LSE.Write(ch);..
000060: 09 09 09 49 4E 43 28 43 68 61 72 73 57 72 69 74 ...INC(CharsWrit
000070: 74 65 6E 29 3B 0D 0A 09 09 09 45 4E 44 3B 28 2A ten);.....END;(*
000080: 43 41 53 45 2A 29 0D 0A 09 09 4E 65 78 74 43 68 CASE*)....NextCh
000090: 61 72 3B 0D 0A 09 09 45 4E 44 3B 28 2A 4C 4F 4F ar;....END;(*LOO
0000A0: 50 2A 29 0D 0A 09 45 4E 44 20 57 72 69 74 65 4C P*)...END WriteL
0000B0: 69 6E 65 3B 09 09 0D 0A 0D 0A 28 2A 09 54 68 65 ine;......(*.The
0000C0: 20 6E 65 78 74 20 72 6F 75 74 69 6E 65 20 69 73 next routine is
0000D0: 20 75 73 65 64 20 62 79 20 74 68 65 20 73 6F 72 used by the sor
0000E0: 74 20 6D 6F 64 75 6C 65 0D 0A 09 74 6F 20 70 65 t module...to pe
0000F0: 72 66 6F 72 6D 20 6B 65 79 20 63 6F 6D 70 61 72 rform key compar
000100: 69 73 6F 6E 73 2A 29 0D 0A 0D 0A 50 52 4F 43 45 isons*)....PROCE
000110: 44 55 52 45 20 43 6F 6D 70 61 72 28 61 2C 62 3A DURE Compar(a,b:
000120: 41 44 44 52 45 53 53 29 3A 42 4F 4F 4C 45 41 4E ADDRESS):BOOLEAN
000130: 3B 0D 0A 56 41 52 09 70 2C 71 3A 50 46 69 6C 65 ;..VAR.p,q:PFile
000140: 4E 61 6D 65 3B 0D 0A 42 45 47 49 4E 0D 0A 09 70 Name;..BEGIN...p
000150: 3A 3D 50 46 69 6C 65 4E 61 6D 65 28 61 29 3B 0D :=PFileName(a);.
000160: 0A 09 71 3A 3D 50 46 69 6C 65 4E 61 6D 65 28 62 ..q:=PFileName(b
000170: 29 3B 0D 0A 09 52 45 54 55 52 4E 20 70 5E 3E 71 );...RETURN p^>q
000180: 5E 0D 0A 09 45 4E 44 20 43 6F 6D 70 61 72 3B 0D ^...END Compar;.
000190: 0A 50 52 4F 43 45 44 55 52 45 20 55 73 61 67 65 .PROCEDURE Usage
0001A0: 3B 0D 0A 42 45 47 49 4E 0D 0A 09 57 72 69 74 65 ;..BEGIN...Write
0001B0: 53 74 72 69 6E 67 28 27 55 73 61 67 65 20 69 73 String('Usage is
0001C0: 3A 20 20 20 43 41 54 20 66 69 6C 65 2C 66 69 6C : CAT file,fil
0001D0: 65 2C 2E 2E 2E 27 29 3B 57 72 69 74 65 4C 6E 3B e,...');WriteLn;
0001E0: 0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 ...WriteString('
0001F0: 20 20 20 20 20 20 6F 72 20 20 20 20 43 41 54 20 or CAT
Size : 512 (Real : 512)
000000: 44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C DEFINITION MODUL
000010: 45 20 43 6F 6D 6D 61 6E 64 3B 0D 0A 0D 0A 28 2A E Command;....(*
000020: 09 43 6F 6D 6D 61 6E 64 20 6C 69 6E 65 20 70 72 .Command line pr
000030: 6F 63 65 73 73 6F 72 2A 29 0D 0A 46 52 4F 4D 20 ocessor*)..FROM
000040: 53 59 53 54 45 4D 20 49 4D 50 4F 52 54 20 42 59 SYSTEM IMPORT BY
000050: 54 45 3B 0D 0A 0D 0A 54 59 50 45 0D 0A 09 50 61 TE;....TYPE...Pa
000060: 72 63 6C 61 73 73 3D 28 6E 61 6D 65 2C 73 74 72 rclass=(name,str
000070: 69 6E 67 2C 6F 70 74 69 6F 6E 29 3B 0D 0A 0D 0A ing,option);....
000080: 09 28 2A 09 50 61 72 63 6C 61 73 73 20 69 73 20 .(*.Parclass is
000090: 61 20 62 65 73 74 20 67 75 65 73 73 20 73 74 79 a best guess sty
0000A0: 6C 65 20 6F 66 20 74 68 69 6E 67 3A 0D 0A 09 09 le of thing:....
0000B0: 49 66 20 74 68 65 20 70 61 72 61 6D 65 74 65 72 If the parameter
0000C0: 20 69 73 20 69 6E 20 71 75 6F 74 65 73 20 69 74 is in quotes it
0000D0: 20 69 73 20 61 20 73 74 72 69 6E 67 0D 0A 09 09 is a string....
0000E0: 49 66 20 69 74 20 66 6F 6C 6C 6F 77 73 20 61 20 If it follows a
0000F0: 27 5B 27 20 6F 72 20 61 20 27 2F 27 20 69 74 20 '[' or a '/' it
000100: 69 73 20 61 6E 20 6F 70 74 69 6F 6E 0D 0A 09 09 is an option....
000110: 28 74 68 65 72 65 20 69 73 20 6F 6E 6C 79 20 65 (there is only e
000120: 76 65 72 20 6F 6E 65 20 6F 70 74 69 6F 6E 20 70 ver one option p
000130: 61 72 61 6D 65 74 65 72 2E 20 49 74 20 69 73 0D arameter. It is.
000140: 0A 09 09 61 6C 77 61 79 73 20 6C 61 73 74 2C 20 ...always last,
000150: 61 6E 64 20 69 74 20 63 6F 6E 74 61 69 6E 73 20 and it contains
000160: 65 76 65 72 79 74 68 69 6E 67 20 66 72 6F 6D 20 everything from
000170: 74 68 65 20 2F 20 6F 72 20 0D 0A 09 09 5B 20 6F the / or ....[ o
000180: 6E 77 61 72 64 73 0D 0A 09 09 45 76 65 72 79 74 nwards....Everyt
000190: 68 69 6E 67 20 65 6C 73 65 20 69 73 20 61 20 6E hing else is a n
0001A0: 61 6D 65 20 28 6E 6F 20 76 61 6C 69 64 69 74 79 ame (no validity
0001B0: 20 63 68 65 63 6B 69 6E 67 20 70 65 72 66 6F 72 checking perfor
0001C0: 6D 65 64 2A 29 0D 0A 0D 0A 09 54 65 78 74 3D 52 med*).....Text=R
0001D0: 45 43 4F 52 44 0D 0A 09 09 4C 65 6E 67 74 68 3A ECORD....Length:
0001E0: 42 59 54 45 3B 09 09 28 2A 72 65 74 75 72 6E 73 BYTE;..(*returns
0001F0: 20 62 79 74 65 73 20 69 6E 20 70 61 72 61 6D 65 bytes in parame
Size : 512 (Real : 512)
000000: 4E 0D 0A 09 09 57 49 54 48 20 50 61 72 61 6D 5B N....WITH Param[
000010: 43 6F 75 6E 74 2D 31 5D 5E 20 44 4F 0D 0A 0D 0A Count-1]^ DO....
000020: 09 09 09 28 2A 09 52 65 63 6F 67 6E 69 73 65 20 ...(*.Recognise
000030: 66 6C 61 67 73 2A 29 0D 0A 0D 0A 09 09 09 69 3A flags*).......i:
000040: 3D 30 3B 0D 0A 09 09 09 57 48 49 4C 45 20 69 3C =0;.....WHILE i<
000050: 43 41 52 44 49 4E 41 4C 28 4C 65 6E 67 74 68 29 CARDINAL(Length)
000060: 20 44 4F 0D 0A 09 09 09 09 43 41 53 45 20 43 68 DO......CASE Ch
000070: 61 72 73 5B 69 5D 20 4F 46 0D 0A 09 09 09 09 27 ars[i] OF......'
000080: 49 27 3A 45 78 70 61 6E 64 54 61 62 73 3A 3D 54 I':ExpandTabs:=T
000090: 52 55 45 3B 0D 0A 09 09 09 09 20 20 20 20 49 4E RUE;...... IN
0000A0: 43 28 69 29 7C 0D 0A 09 09 09 09 27 57 27 3A 4C C(i)|......'W':L
0000B0: 69 6E 65 57 72 61 70 3A 3D 54 52 55 45 3B 0D 0A ineWrap:=TRUE;..
0000C0: 09 09 09 09 20 20 20 20 49 4E 43 28 69 29 3B 0D .... INC(i);.
0000D0: 0A 09 09 09 09 20 20 20 20 50 61 67 65 57 69 64 ..... PageWid
0000E0: 74 68 3A 3D 47 65 74 4E 75 6D 28 43 68 61 72 73 th:=GetNum(Chars
0000F0: 2C 69 2C 4F 52 44 28 4C 65 6E 67 74 68 29 29 3B ,i,ORD(Length));
000100: 0D 0A 09 09 09 09 20 20 20 20 49 46 20 50 61 67 ...... IF Pag
000110: 65 57 69 64 74 68 3D 30 20 54 48 45 4E 20 50 61 eWidth=0 THEN Pa
000120: 67 65 57 69 64 74 68 3A 3D 38 30 20 45 4E 44 3B geWidth:=80 END;
000130: 0D 0A 0D 0A 09 09 09 09 09 28 2A 43 68 65 63 6B .........(*Check
000140: 20 70 61 67 65 20 77 69 64 74 68 20 69 73 20 72 page width is r
000150: 65 61 73 6F 6E 61 62 6C 65 2A 29 0D 0A 0D 0A 09 easonable*).....
000160: 09 09 09 20 20 20 20 49 46 20 50 61 67 65 57 69 ... IF PageWi
000170: 64 74 68 3C 33 32 20 54 48 45 4E 0D 0A 09 09 09 dth<32 THEN.....
000180: 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 09 09 ..WriteLn;......
000190: 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 2A .WriteString(' *
0001A0: 2A 2A 20 50 61 67 65 20 77 69 64 74 68 20 74 6F ** Page width to
0001B0: 6F 20 6E 61 72 72 6F 77 20 2A 2A 2A 27 29 3B 0D o narrow ***');.
0001C0: 0A 09 09 09 09 09 57 72 69 74 65 4C 6E 3B 0D 0A ......WriteLn;..
0001D0: 09 09 09 09 09 55 73 61 67 65 3B 0D 0A 09 09 09 .....Usage;.....
0001E0: 09 09 45 4E 44 3B 0D 0A 09 09 09 09 20 20 20 7C ..END;...... |
0001F0: 0D 0A 09 09 09 09 27 4E 27 3A 4E 75 6D 62 65 72 ......'N':Number
Size : 512 (Real : 512)
000000: 3B 0D 0A 09 4C 69 6E 65 4F 66 46 69 6C 65 3A 3D ;...LineOfFile:=
000010: 31 3B 0D 0A 09 50 61 67 65 4E 75 6D 62 65 72 3A 1;...PageNumber:
000020: 3D 31 3B 0D 0A 09 43 68 61 72 50 6F 73 3A 3D 31 =1;...CharPos:=1
000030: 3B 0D 0A 09 43 68 61 72 43 6F 75 6E 74 3A 3D 30 ;...CharCount:=0
000040: 3B 0D 0A 09 48 69 67 68 57 61 74 65 72 3A 3D 30 ;...HighWater:=0
000050: 3B 0D 0A 09 4E 65 78 74 43 68 61 72 3B 09 28 2A ;...NextChar;.(*
000060: 70 72 69 6D 65 20 6C 6F 6F 6B 2D 61 68 65 61 64 prime look-ahead
000070: 20 63 68 61 72 61 63 74 65 72 2A 29 0D 0A 09 57 character*)...W
000080: 72 69 74 65 4C 6E 3B 0D 0A 09 48 69 67 68 57 61 riteLn;...HighWa
000090: 74 65 72 3A 3D 30 3B 0D 0A 09 49 46 20 50 61 67 ter:=0;...IF Pag
0000A0: 65 4D 6F 64 65 20 54 48 45 4E 0D 0A 09 09 50 61 eMode THEN....Pa
0000B0: 67 65 48 65 61 64 65 72 3B 0D 0A 09 09 45 4E 44 geHeader;....END
0000C0: 3B 0D 0A 09 4C 4F 4F 50 0D 0A 09 09 49 46 20 20 ;...LOOP....IF
0000D0: 45 6E 64 4F 66 46 69 6C 65 20 54 48 45 4E 20 45 EndOfFile THEN E
0000E0: 58 49 54 20 45 4E 44 3B 0D 0A 09 09 57 72 69 74 XIT END;....Writ
0000F0: 65 4C 69 6E 65 3B 0D 0A 09 09 49 4E 43 28 4C 69 eLine;....INC(Li
000100: 6E 65 4E 75 6D 62 65 72 29 3B 0D 0A 0D 0A 09 09 neNumber);......
000110: 28 2A 20 63 68 65 63 6B 20 66 6F 72 20 61 6E 79 (* check for any
000120: 74 68 69 6E 67 20 74 79 70 65 73 20 61 74 20 63 thing types at c
000130: 6F 6E 73 6F 6C 65 0D 0A 09 09 20 20 20 69 66 20 onsole.... if
000140: 63 74 72 6C 20 63 2C 20 74 68 65 20 61 62 6F 72 ctrl c, the abor
000150: 74 2C 20 69 66 20 71 20 6F 72 20 51 2A 29 0D 0A t, if q or Q*)..
000160: 0D 0A 09 09 42 75 73 79 52 65 61 64 28 63 68 29 ....BusyRead(ch)
000170: 3B 0D 0A 09 09 49 46 20 28 50 61 67 65 4D 6F 64 ;....IF (PageMod
000180: 65 20 41 4E 44 20 28 28 4C 69 6E 65 4E 75 6D 62 e AND ((LineNumb
000190: 65 72 3E 3D 50 61 67 65 4C 65 6E 29 20 4F 52 20 er>=PageLen) OR
0001A0: 45 6E 64 4F 66 46 69 6C 65 29 29 20 0D 0A 09 09 EndOfFile)) ....
0001B0: 20 20 20 4F 52 20 28 63 68 3C 3E 30 78 29 20 54 OR (ch<>0x) T
0001C0: 48 45 4E 0D 0A 09 09 09 49 46 20 45 6E 64 4F 66 HEN.....IF EndOf
0001D0: 46 69 6C 65 20 54 48 45 4E 20 44 45 43 28 43 68 File THEN DEC(Ch
0001E0: 61 72 50 6F 73 29 20 45 4E 44 3B 0D 0A 09 09 09 arPos) END;.....
0001F0: 45 6E 64 4F 66 46 69 6C 65 3A 3D 46 41 4C 53 45 EndOfFile:=FALSE
Size : 512 (Real : 512)
000000: 4C 69 6E 65 73 3A 3D 54 52 55 45 3B 0D 0A 09 09 Lines:=TRUE;....
000010: 09 09 20 20 20 20 49 4E 43 28 69 29 7C 0D 0A 09 .. INC(i)|...
000020: 09 09 09 27 50 27 3A 50 61 67 65 4D 6F 64 65 3A ...'P':PageMode:
000030: 3D 54 52 55 45 3B 0D 0A 09 09 09 09 20 20 20 20 =TRUE;......
000040: 49 4E 43 28 69 29 3B 0D 0A 09 09 09 09 20 20 20 INC(i);......
000050: 20 50 61 67 65 4C 65 6E 3A 3D 47 65 74 4E 75 6D PageLen:=GetNum
000060: 28 43 68 61 72 73 2C 69 2C 4F 52 44 28 4C 65 6E (Chars,i,ORD(Len
000070: 67 74 68 29 29 3B 0D 0A 09 09 09 09 20 20 20 20 gth));......
000080: 49 46 20 50 61 67 65 4C 65 6E 3D 30 20 54 48 45 IF PageLen=0 THE
000090: 4E 20 50 61 67 65 4C 65 6E 3A 3D 32 34 20 45 4E N PageLen:=24 EN
0000A0: 44 3B 0D 0A 0D 0A 09 09 09 09 09 28 2A 43 68 65 D;.........(*Che
0000B0: 63 6B 20 70 61 67 65 20 6C 65 6E 67 74 68 20 69 ck page length i
0000C0: 73 20 72 65 61 73 6F 6E 61 62 6C 65 2A 29 0D 0A s reasonable*)..
0000D0: 0D 0A 09 09 09 09 20 20 20 20 49 46 20 50 61 67 ...... IF Pag
0000E0: 65 4C 65 6E 3C 31 30 20 54 48 45 4E 0D 0A 09 09 eLen<10 THEN....
0000F0: 09 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 09 ...WriteLn;.....
000100: 09 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 ..WriteString('
000110: 2A 2A 2A 20 50 61 67 65 20 6C 65 6E 67 74 68 20 *** Page length
000120: 74 6F 6F 20 73 68 6F 72 74 20 2A 2A 2A 27 29 3B too short ***');
000130: 0D 0A 09 09 09 09 09 57 72 69 74 65 4C 6E 3B 0D .......WriteLn;.
000140: 0A 09 09 09 09 09 55 73 61 67 65 0D 0A 09 09 09 ......Usage.....
000150: 09 09 45 4E 44 0D 0A 09 09 09 09 20 20 20 20 7C ..END...... |
000160: 0D 0A 09 09 09 09 45 4C 53 45 0D 0A 09 09 09 09 ......ELSE......
000170: 20 20 20 20 55 73 61 67 65 0D 0A 09 09 09 09 20 Usage......
000180: 20 20 20 45 4E 44 3B 28 2A 43 41 53 45 2A 29 0D END;(*CASE*).
000190: 0A 09 09 09 09 45 4E 44 3B 28 2A 57 48 49 4C 45 .....END;(*WHILE
0001A0: 2A 29 0D 0A 09 09 09 45 4E 44 3B 20 28 2A 57 49 *).....END; (*WI
0001B0: 54 48 2A 29 0D 0A 09 09 44 45 43 28 43 6F 75 6E TH*)....DEC(Coun
0001C0: 74 29 3B 0D 0A 09 09 45 4E 44 3B 20 28 2A 49 46 t);....END; (*IF
0001D0: 20 6F 70 74 69 6F 6E 2A 29 0D 0A 0D 0A 09 49 46 option*).....IF
0001E0: 20 43 6F 75 6E 74 3D 30 20 54 48 45 4E 20 55 73 Count=0 THEN Us
0001F0: 61 67 65 20 45 4E 44 3B 0D 0A 09 49 46 20 4E 75 age END;...IF Nu
Size : 512 (Real : 512)
000000: 3B 0D 0A 09 09 09 50 61 67 65 4D 6F 64 65 3A 3D ;.....PageMode:=
000010: 54 52 55 45 3B 0D 0A 09 09 09 57 72 69 74 65 53 TRUE;.....WriteS
000020: 74 72 69 6E 67 28 27 20 43 6F 6D 6D 61 6E 64 20 tring(' Command
000030: 3A 27 29 3B 0D 0A 09 09 09 49 46 20 63 68 3D 30 :');.....IF ch=0
000040: 78 20 54 48 45 4E 20 52 65 61 64 28 63 68 29 20 x THEN Read(ch)
000050: 0D 0A 09 09 09 45 4C 53 45 20 09 57 72 69 74 65 .....ELSE .Write
000060: 28 63 68 29 3B 0D 0A 09 09 09 09 43 6C 65 61 72 (ch);......Clear
000070: 43 68 61 72 42 75 66 66 65 72 0D 0A 09 09 09 09 CharBuffer......
000080: 45 4E 44 3B 0D 0A 09 09 09 4C 4F 4F 50 0D 0A 09 END;.....LOOP...
000090: 09 09 20 20 20 20 43 41 53 45 20 43 41 50 28 63 .. CASE CAP(c
0000A0: 68 29 20 4F 46 0D 0A 09 09 09 09 27 50 27 3A 50 h) OF......'P':P
0000B0: 61 67 65 4D 6F 64 65 3A 3D 4E 4F 54 20 50 61 67 ageMode:=NOT Pag
0000C0: 65 4D 6F 64 65 3B 0D 0A 09 09 09 09 20 20 20 20 eMode;......
0000D0: 4E 65 77 56 61 6C 75 65 28 50 61 67 65 4C 65 6E NewValue(PageLen
0000E0: 2C 31 32 29 7C 0D 0A 09 09 09 09 27 4E 27 3A 4E ,12)|......'N':N
0000F0: 75 6D 62 65 72 4C 69 6E 65 73 3A 3D 4E 4F 54 20 umberLines:=NOT
000100: 4E 75 6D 62 65 72 4C 69 6E 65 73 3B 52 65 61 64 NumberLines;Read
000110: 28 63 68 29 7C 0D 0A 09 09 09 09 27 49 27 3A 45 (ch)|......'I':E
000120: 78 70 61 6E 64 54 61 62 73 3A 3D 4E 4F 54 20 45 xpandTabs:=NOT E
000130: 78 70 61 6E 64 54 61 62 73 3B 52 65 61 64 28 63 xpandTabs;Read(c
000140: 68 29 7C 0D 0A 09 09 09 09 27 57 27 3A 4C 69 6E h)|......'W':Lin
000150: 65 57 72 61 70 3A 3D 4E 4F 54 20 4C 69 6E 65 57 eWrap:=NOT LineW
000160: 72 61 70 3B 0D 0A 09 09 09 09 20 20 20 20 4E 65 rap;...... Ne
000170: 77 56 61 6C 75 65 28 50 61 67 65 57 69 64 74 68 wValue(PageWidth
000180: 2C 34 30 29 7C 0D 0A 09 09 09 09 27 3F 27 3A 50 ,40)|......'?':P
000190: 72 69 6E 74 48 65 6C 70 3B 52 65 61 64 28 63 68 rintHelp;Read(ch
0001A0: 29 7C 0D 0A 09 09 09 09 27 2B 27 3A 52 65 61 64 )|......'+':Read
0001B0: 28 63 68 29 3B 0D 0A 09 09 09 20 09 20 20 20 20 (ch);..... .
0001C0: 4C 69 6E 65 4F 66 46 69 6C 65 3A 3D 4C 69 6E 65 LineOfFile:=Line
0001D0: 4F 66 46 69 6C 65 2B 4E 75 6D 62 65 72 28 29 0D OfFile+Number().
0001E0: 0A 09 09 09 09 20 20 20 20 52 65 70 6F 73 69 74 ..... Reposit
0001F0: 69 6F 6E 46 69 6C 65 7C 0D 0A 09 09 09 09 27 2D ionFile|......'-
Size : 512 (Real : 512)
000000: 6D 62 65 72 4C 69 6E 65 73 20 54 48 45 4E 20 50 mberLines THEN P
000010: 61 67 65 57 69 64 74 68 3A 3D 50 61 67 65 57 69 ageWidth:=PageWi
000020: 64 74 68 2D 36 20 45 4E 44 3B 0D 0A 0D 0A 09 46 dth-6 END;.....F
000030: 4F 52 20 69 3A 3D 30 20 54 4F 20 43 41 52 44 49 OR i:=0 TO CARDI
000040: 4E 41 4C 28 43 6F 75 6E 74 2D 31 29 20 44 4F 0D NAL(Count-1) DO.
000050: 0A 09 09 47 65 74 4E 61 6D 65 73 28 50 61 72 61 ...GetNames(Para
000060: 6D 5B 69 5D 5E 2E 43 68 61 72 73 2C 4E 61 6D 65 m[i]^.Chars,Name
000070: 73 2C 4E 61 6D 65 43 6F 75 6E 74 29 3B 0D 0A 09 s,NameCount);...
000080: 09 49 46 20 4E 61 6D 65 43 6F 75 6E 74 3E 31 20 .IF NameCount>1
000090: 54 48 45 4E 0D 0A 09 09 09 53 6F 72 74 52 65 63 THEN.....SortRec
0000A0: 6F 72 64 73 28 41 44 52 28 4E 61 6D 65 73 29 2C ords(ADR(Names),
0000B0: 43 41 52 44 49 4E 41 4C 28 4E 61 6D 65 43 6F 75 CARDINAL(NameCou
0000C0: 6E 74 29 2C 0D 0A 09 09 09 09 54 53 49 5A 45 28 nt),......TSIZE(
0000D0: 46 69 6C 65 4E 61 6D 65 29 2C 43 6F 6D 70 61 72 FileName),Compar
0000E0: 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 46 );.....END;....F
0000F0: 4F 52 20 6A 3A 3D 30 20 54 4F 20 4E 61 6D 65 43 OR j:=0 TO NameC
000100: 6F 75 6E 74 2D 31 20 44 4F 0D 0A 09 09 09 4C 6F ount-1 DO.....Lo
000110: 6F 6B 75 70 28 49 6E 66 2C 4E 61 6D 65 73 5B 6A okup(Inf,Names[j
000120: 5D 2C 72 65 70 6C 79 29 3B 0D 0A 09 09 09 49 46 ],reply);.....IF
000130: 20 72 65 70 6C 79 3C 30 20 54 48 45 4E 0D 0A 09 reply<0 THEN...
000140: 09 09 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 ...WriteString('
000150: 20 43 6F 75 6C 64 20 6E 6F 74 20 6F 70 65 6E 20 Could not open
000160: 27 29 3B 0D 0A 09 09 09 09 57 72 69 74 65 53 74 ');......WriteSt
000170: 72 69 6E 67 28 4E 61 6D 65 73 5B 6A 5D 29 3B 0D ring(Names[j]);.
000180: 0A 09 09 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 .....WriteLn;...
000190: 09 09 45 4C 53 45 0D 0A 09 09 09 09 4F 75 74 70 ..ELSE......Outp
0001A0: 75 74 46 69 6C 65 28 4E 61 6D 65 73 5B 6A 5D 29 utFile(Names[j])
0001B0: 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 ;......END;.....
0001C0: 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 END;....END;...E
0001D0: 4E 44 20 4C 69 73 74 69 74 3B 09 09 09 0D 0A 42 ND Listit;.....B
0001E0: 45 47 49 4E 0D 0A 09 4C 69 73 74 69 74 3B 0D 0A EGIN...Listit;..
0001F0: 09 45 4E 44 20 43 61 74 2E 0D 0A 1A 1A 1A 1A 1A .END Cat........
Size : 512 (Real : 512)
000000: 27 3A 52 65 61 64 28 63 68 29 3B 0D 0A 09 09 09 ':Read(ch);.....
000010: 09 20 20 20 20 69 3A 3D 4E 75 6D 62 65 72 28 29 . i:=Number()
000020: 3B 0D 0A 09 09 09 09 20 20 20 20 49 46 20 69 3E ;...... IF i>
000030: 4C 69 6E 65 4F 66 46 69 6C 65 20 54 48 45 4E 20 LineOfFile THEN
000040: 4C 69 6E 65 4F 66 46 69 6C 65 3A 3D 31 0D 0A 09 LineOfFile:=1...
000050: 09 09 09 20 20 20 20 45 4C 53 45 20 4C 69 6E 65 ... ELSE Line
000060: 4F 66 46 69 6C 65 3A 3D 4C 69 6E 65 4F 66 46 69 OfFile:=LineOfFi
000070: 6C 65 2D 69 20 45 4E 44 3B 0D 0A 09 09 09 09 20 le-i END;......
000080: 20 20 20 52 65 70 6F 73 69 74 69 6F 6E 46 69 6C RepositionFil
000090: 65 0D 0A 09 09 09 09 20 20 20 20 7C 0D 0A 09 09 e...... |....
0000A0: 09 09 27 30 27 2E 2E 27 39 27 3A 4C 69 6E 65 4F ..'0'..'9':LineO
0000B0: 66 46 69 6C 65 3A 3D 4E 75 6D 62 65 72 28 29 3B fFile:=Number();
0000C0: 0D 0A 09 09 09 09 09 20 52 65 70 6F 73 69 74 69 ....... Repositi
0000D0: 6F 6E 46 69 6C 65 7C 0D 0A 09 09 09 09 27 21 27 onFile|......'!'
0000E0: 2E 2E 27 2A 27 2C 27 2C 27 2C 27 2E 27 2C 27 2F ..'*',',','.','/
0000F0: 27 2C 27 3A 27 2E 2E 27 40 27 2C 27 7B 27 2E 2E ',':'..'@','{'..
000100: 27 7E 27 2C 0D 0A 09 09 09 09 27 5B 27 2E 2E 27 '~',......'['..'
000110: 60 27 3A 0D 0A 09 09 09 09 09 53 65 61 72 63 68 `':.......Search
000120: 28 63 68 29 3B 52 65 61 64 28 63 68 29 7C 0D 0A (ch);Read(ch)|..
000130: 09 09 09 09 0D 0A 09 09 09 09 30 33 78 3A 0D 0A ..........03x:..
000140: 09 09 09 09 09 48 41 4C 54 7C 0D 0A 09 09 09 09 .....HALT|......
000150: 45 4C 53 45 20 45 58 49 54 0D 0A 09 09 09 09 45 ELSE EXIT......E
000160: 4E 44 28 2A 43 41 53 45 2A 29 3B 0D 0A 09 09 09 ND(*CASE*);.....
000170: 20 20 20 20 45 4E 44 3B 28 2A 4C 4F 4F 50 2A 29 END;(*LOOP*)
000180: 0D 0A 09 09 09 49 46 20 43 41 50 28 63 68 29 3D .....IF CAP(ch)=
000190: 27 51 27 20 54 48 45 4E 20 45 58 49 54 20 45 4E 'Q' THEN EXIT EN
0001A0: 44 3B 0D 0A 09 09 09 49 4E 43 28 50 61 67 65 4E D;.....INC(PageN
0001B0: 75 6D 62 65 72 29 3B 0D 0A 09 09 09 50 61 67 65 umber);.....Page
0001C0: 48 65 61 64 65 72 3B 0D 0A 09 09 09 4C 69 6E 65 Header;.....Line
0001D0: 4E 75 6D 62 65 72 3A 3D 32 3B 0D 0A 09 09 09 45 Number:=2;.....E
0001E0: 4E 44 3B 0D 0A 0D 0A 09 09 45 4E 44 3B 0D 0A 09 ND;......END;...
0001F0: 45 4E 44 20 4F 75 74 70 75 74 46 69 6C 65 3B 0D END OutputFile;.
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 4C 69 73 ...PROCEDURE Lis
000010: 74 69 74 3B 0D 0A 56 41 52 09 69 3A 43 41 52 44 tit;..VAR.i:CARD
000020: 49 4E 41 4C 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 INAL;....PROCEDU
000030: 52 45 20 47 65 74 4E 75 6D 28 43 68 61 72 73 3A RE GetNum(Chars:
000040: 41 52 52 41 59 20 4F 46 20 43 48 41 52 3B 56 41 ARRAY OF CHAR;VA
000050: 52 20 50 6F 73 3A 43 41 52 44 49 4E 41 4C 3B 4C R Pos:CARDINAL;L
000060: 65 6E 3A 43 41 52 44 49 4E 41 4C 29 3A 43 41 52 en:CARDINAL):CAR
000070: 44 49 4E 41 4C 3B 0D 0A 0D 0A 28 2A 09 47 65 74 DINAL;....(*.Get
000080: 20 61 20 6E 75 6D 62 65 72 20 66 72 6F 6D 20 61 a number from a
000090: 20 70 61 72 61 6D 65 74 65 72 20 69 6E 20 74 68 parameter in th
0000A0: 65 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 2A 29 e command line*)
0000B0: 0D 0A 54 59 50 45 09 43 68 61 72 53 65 74 3D 53 ..TYPE.CharSet=S
0000C0: 45 54 20 4F 46 20 43 48 41 52 3B 0D 0A 56 41 52 ET OF CHAR;..VAR
0000D0: 09 69 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 42 45 .i:CARDINAL;..BE
0000E0: 47 49 4E 0D 0A 09 69 3A 3D 30 3B 0D 0A 09 57 48 GIN...i:=0;...WH
0000F0: 49 4C 45 20 28 50 6F 73 3C 4C 65 6E 29 20 41 4E ILE (Pos<Len) AN
000100: 44 20 28 43 68 61 72 73 5B 50 6F 73 5D 20 49 4E D (Chars[Pos] IN
000110: 20 43 68 61 72 53 65 74 7B 27 30 27 2E 2E 27 39 CharSet{'0'..'9
000120: 27 7D 29 20 44 4F 0D 0A 09 09 69 3A 3D 31 30 2A '}) DO....i:=10*
000130: 69 2B 4F 52 44 28 43 68 61 72 73 5B 50 6F 73 5D i+ORD(Chars[Pos]
000140: 29 2D 4F 52 44 28 27 30 27 29 3B 0D 0A 09 09 49 )-ORD('0');....I
000150: 4E 43 28 50 6F 73 29 3B 0D 0A 09 09 45 4E 44 3B NC(Pos);....END;
000160: 09 0D 0A 09 52 45 54 55 52 4E 20 69 0D 0A 09 45 ....RETURN i...E
000170: 4E 44 20 47 65 74 4E 75 6D 3B 0D 0A 42 45 47 49 ND GetNum;..BEGI
000180: 4E 0D 0A 0D 0A 09 47 65 74 50 61 72 61 6D 73 28 N.....GetParams(
000190: 50 61 72 61 6D 2C 43 6F 75 6E 74 29 3B 0D 0A 20 Param,Count);..
0001A0: 20 20 20 20 20 20 20 43 6F 75 6E 74 65 72 20 3A Counter :
0001B0: 3D 20 31 3B 0D 0A 20 20 20 20 20 20 20 20 49 46 = 1;.. IF
0001C0: 20 43 6F 75 6E 74 3D 30 20 54 48 45 4E 20 55 73 Count=0 THEN Us
0001D0: 61 67 65 20 45 4E 44 3B 0D 0A 0D 0A 09 49 46 20 age END;.....IF
0001E0: 50 61 72 61 6D 5B 43 6F 75 6E 74 2D 31 5D 5E 2E Param[Count-1]^.
0001F0: 43 6C 61 73 73 3D 6F 70 74 69 6F 6E 20 54 48 45 Class=option THE
Size : 512 (Real : 512)
000000: 6F 6D 20 66 69 6C 65 20 28 69 2E 65 2E 20 0D 0A om file (i.e. ..
000010: 09 76 65 72 79 20 6E 65 61 72 20 74 68 65 20 62 .very near the b
000020: 65 67 69 6E 6E 69 6E 67 29 20 45 61 63 68 20 63 eginning) Each c
000030: 6F 6E 74 72 6F 6C 20 63 6F 64 65 20 63 61 6E 20 ontrol code can
000040: 62 65 20 75 70 20 74 6F 20 38 20 63 68 61 72 61 be up to 8 chara
000050: 63 74 65 72 73 20 6C 6F 6E 67 0D 0A 09 61 6E 64 cters long...and
000060: 20 69 73 20 74 65 72 6D 69 6E 61 74 65 64 20 62 is terminated b
000070: 79 20 61 20 76 61 6C 75 65 20 6F 66 20 30 20 69 y a value of 0 i
000080: 66 20 6C 65 73 73 20 74 68 61 6E 20 38 20 63 68 f less than 8 ch
000090: 61 72 61 63 74 65 72 73 20 69 73 20 72 65 71 75 aracters is requ
0000A0: 69 72 65 64 0D 0A 0D 0A 09 54 68 65 20 63 6F 6E ired.....The con
0000B0: 74 72 6F 6C 20 63 68 61 72 61 63 74 65 72 73 20 trol characters
0000C0: 69 6E 20 74 68 65 20 73 75 70 70 6C 69 65 64 20 in the supplied
0000D0: 70 72 6F 67 72 61 6D 20 61 72 65 20 73 65 74 20 program are set
0000E0: 66 6F 72 20 61 20 53 54 41 52 20 44 50 53 35 31 for a STAR DPS51
0000F0: 30 2C 0D 0A 09 77 68 69 63 68 20 69 73 20 73 75 0,...which is su
000100: 70 70 6F 73 65 64 20 74 6F 20 62 65 20 45 70 73 pposed to be Eps
000110: 6F 6E 20 63 6F 6D 70 61 74 69 62 6C 65 2C 20 73 on compatible, s
000120: 6F 20 74 68 65 20 70 72 6F 67 72 61 6D 20 6D 61 o the program ma
000130: 79 20 77 65 6C 6C 20 72 75 6E 20 27 61 73 20 69 y well run 'as i
000140: 73 27 0D 0A 09 6F 6E 20 45 70 73 6F 6E 73 20 61 s'...on Epsons a
000150: 6E 64 20 45 70 73 6F 6E 20 63 6C 6F 6E 65 73 0D nd Epson clones.
000160: 0A 0D 0A 09 54 68 65 20 70 72 6F 67 72 61 6D 20 ....The program
000170: 69 73 20 62 61 73 65 64 20 6F 6E 20 61 20 6D 65 is based on a me
000180: 74 68 6F 64 20 64 65 73 63 72 69 62 65 64 20 62 thod described b
000190: 79 20 50 61 75 6C 20 48 65 63 6B 65 6C 20 27 41 y Paul Heckel 'A
0001A0: 20 54 65 63 68 6E 69 71 75 65 20 66 6F 72 0D 0A Technique for..
0001B0: 09 49 73 6F 6C 61 74 69 6E 67 20 44 69 66 66 65 .Isolating Diffe
0001C0: 72 65 6E 63 65 73 20 62 65 74 77 65 65 6E 20 46 rences between F
0001D0: 69 6C 65 73 27 2C 20 43 6F 6D 6D 75 6E 69 63 61 iles', Communica
0001E0: 74 69 6F 6E 73 20 6F 66 20 74 68 65 20 41 43 4D tions of the ACM
0001F0: 2C 20 56 6F 6C 20 32 31 0D 0A 09 4E 6F 20 34 2C , Vol 21...No 4,
Size : 512 (Real : 512)
000000: 0D 0A 09 09 43 68 61 72 73 5B 6C 65 6E 5D 3A 3D ....Chars[len]:=
000010: 30 78 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 63 6F 0x;....END;...co
000020: 75 6E 74 3A 3D 63 6F 75 6E 74 2B 31 0D 0A 09 45 unt:=count+1...E
000030: 4E 44 20 42 75 69 6C 64 3B 0D 0A 28 2A 09 63 72 ND Build;..(*.cr
000040: 61 63 6B 20 74 68 65 20 63 6F 6D 6D 61 6E 64 20 ack the command
000050: 6C 69 6E 65 2A 29 0D 0A 42 45 47 49 4E 0D 0A 09 line*)..BEGIN...
000060: 69 3A 3D 30 3B 0D 0A 09 63 6F 75 6E 74 3A 3D 30 i:=0;...count:=0
000070: 3B 0D 0A 09 4C 4F 4F 50 0D 0A 09 09 49 46 20 63 ;...LOOP....IF c
000080: 6F 75 6E 74 3E 48 49 47 48 28 70 29 20 54 48 45 ount>HIGH(p) THE
000090: 4E 20 0D 0A 09 09 09 45 58 49 54 20 0D 0A 09 09 N .....EXIT ....
0000A0: 09 45 4E 44 3B 0D 0A 09 09 57 48 49 4C 45 20 28 .END;....WHILE (
0000B0: 69 3C 49 4E 54 45 47 45 52 28 43 6F 6D 6D 4C 65 i<INTEGER(CommLe
0000C0: 6E 67 74 68 29 29 20 41 4E 44 20 28 43 6F 6D 6D ngth)) AND (Comm
0000D0: 54 65 78 74 5B 69 5D 3D 27 20 27 29 20 44 4F 0D Text[i]=' ') DO.
0000E0: 0A 09 09 09 49 4E 43 28 69 29 0D 0A 09 09 09 45 ....INC(i).....E
0000F0: 4E 44 3B 0D 0A 09 09 49 46 20 69 3E 3D 49 4E 54 ND;....IF i>=INT
000100: 45 47 45 52 28 43 6F 6D 6D 4C 65 6E 67 74 68 29 EGER(CommLength)
000110: 20 54 48 45 4E 20 45 58 49 54 20 45 4E 44 3B 0D THEN EXIT END;.
000120: 0A 09 09 43 41 53 45 20 43 6F 6D 6D 54 65 78 74 ...CASE CommText
000130: 5B 69 5D 20 4F 46 0D 0A 09 09 27 5B 27 2C 27 2F [i] OF....'[','/
000140: 27 3A 28 2A 4F 70 74 69 6F 6E 20 66 6F 75 6E 64 ':(*Option found
000150: 2A 29 0D 0A 09 09 09 49 4E 43 28 69 29 3B 0D 0A *).....INC(i);..
000160: 09 09 09 42 75 69 6C 64 28 49 4E 54 45 47 45 52 ...Build(INTEGER
000170: 28 43 6F 6D 6D 4C 65 6E 67 74 68 29 2D 69 2C 30 (CommLength)-i,0
000180: 64 78 2C 6F 70 74 69 6F 6E 29 3B 0D 0A 09 09 09 dx,option);.....
000190: 45 58 49 54 0D 0A 09 09 09 7C 0D 0A 09 09 27 22 EXIT.....|....'"
0001A0: 27 2C 22 27 22 3A 6A 3A 3D 69 2B 31 3B 0D 0A 09 ',"'":j:=i+1;...
0001B0: 09 09 57 48 49 4C 45 20 28 43 6F 6D 6D 54 65 78 ..WHILE (CommTex
0001C0: 74 5B 69 5D 3C 3E 43 6F 6D 6D 54 65 78 74 5B 6A t[i]<>CommText[j
0001D0: 5D 29 20 0D 0A 09 09 09 09 41 4E 44 20 28 6A 3C ]) ......AND (j<
0001E0: 49 4E 54 45 47 45 52 28 43 6F 6D 6D 4C 65 6E 67 INTEGER(CommLeng
0001F0: 74 68 29 29 20 44 4F 0D 0A 09 09 09 09 49 4E 43 th)) DO......INC
Size : 512 (Real : 512)
000000: 74 65 72 2A 29 0D 0A 09 09 54 65 72 6D 69 6E 61 ter*)....Termina
000010: 74 6F 72 3A 43 48 41 52 3B 09 28 2A 72 65 74 75 tor:CHAR;.(*retu
000020: 72 6E 73 20 6E 65 78 74 20 63 68 61 72 61 63 74 rns next charact
000030: 65 72 2C 20 6F 72 0D 0A 09 09 09 09 09 64 65 6C er, or.......del
000040: 69 6D 69 74 65 72 20 66 6F 72 20 73 74 72 69 6E imiter for strin
000050: 67 73 2A 29 09 0D 0A 09 09 43 6C 61 73 73 3A 50 gs*).....Class:P
000060: 61 72 63 6C 61 73 73 3B 09 09 28 2A 63 6C 61 73 arclass;..(*clas
000070: 73 20 6F 66 20 70 61 72 61 6D 65 74 65 72 2A 29 s of parameter*)
000080: 0D 0A 09 09 43 41 53 45 20 3A 42 4F 4F 4C 45 41 ....CASE :BOOLEA
000090: 4E 20 4F 46 0D 0A 09 09 20 20 20 20 46 41 4C 53 N OF.... FALS
0000A0: 45 3A 46 69 6C 65 50 6F 73 3A 43 41 52 44 49 4E E:FilePos:CARDIN
0000B0: 41 4C 3B 45 72 72 6F 72 4E 6F 3A 43 41 52 44 49 AL;ErrorNo:CARDI
0000C0: 4E 41 4C 7C 0D 0A 09 09 20 20 20 20 54 52 55 45 NAL|.... TRUE
0000D0: 3A 43 68 61 72 73 3A 41 52 52 41 59 5B 30 2E 2E :Chars:ARRAY[0..
0000E0: 31 32 37 5D 20 4F 46 20 43 48 41 52 3B 0D 0A 09 127] OF CHAR;...
0000F0: 09 20 20 20 20 45 4E 44 0D 0A 09 09 09 09 09 28 . END.......(
000100: 2A 70 61 72 61 6D 65 74 65 72 20 2D 20 61 6C 77 *parameter - alw
000110: 61 79 73 20 74 65 72 6D 69 6E 61 74 65 64 20 62 ays terminated b
000120: 79 0D 0A 09 09 09 09 09 20 20 61 20 7A 65 72 6F y....... a zero
000130: 20 62 79 74 65 2C 20 62 75 74 20 74 68 61 74 20 byte, but that
000140: 62 79 74 65 20 69 73 20 6E 6F 74 0D 0A 09 09 09 byte is not.....
000150: 09 09 20 20 69 6E 63 6C 75 64 65 64 20 69 6E 20 .. included in
000160: 74 68 65 20 6C 65 6E 67 74 68 2A 29 0D 0A 09 09 the length*)....
000170: 45 4E 44 3B 0D 0A 0D 0A 09 50 61 72 61 6D 65 74 END;.....Paramet
000180: 65 72 3D 50 4F 49 4E 54 45 52 20 54 4F 20 54 65 er=POINTER TO Te
000190: 78 74 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 47 xt;..PROCEDURE G
0001A0: 65 74 50 61 72 61 6D 73 28 56 41 52 20 70 3A 41 etParams(VAR p:A
0001B0: 52 52 41 59 20 4F 46 20 50 61 72 61 6D 65 74 65 RRAY OF Paramete
0001C0: 72 3B 56 41 52 20 63 6F 75 6E 74 3A 49 4E 54 45 r;VAR count:INTE
0001D0: 47 45 52 29 3B 0D 0A 28 2A 09 63 72 61 63 6B 20 GER);..(*.crack
0001E0: 74 68 65 20 63 6F 6D 6D 61 6E 64 20 6C 69 6E 65 the command line
0001F0: 2A 29 0D 0A 56 41 52 09 43 6F 6D 6D 4C 65 6E 67 *)..VAR.CommLeng
Size : 512 (Real : 512)
000000: 28 6A 29 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 (j)......END;...
000010: 09 09 49 4E 43 28 69 29 3B 0D 0A 09 09 09 42 75 ..INC(i);.....Bu
000020: 69 6C 64 28 6A 2D 69 2C 43 6F 6D 6D 54 65 78 74 ild(j-i,CommText
000030: 5B 69 2D 31 5D 2C 73 74 72 69 6E 67 29 3B 0D 0A [i-1],string);..
000040: 09 09 09 49 4E 43 28 6A 29 3B 0D 0A 09 09 09 7C ...INC(j);.....|
000050: 0D 0A 09 09 45 4C 53 45 09 6A 3A 3D 69 2B 31 3B ....ELSE.j:=i+1;
000060: 0D 0A 09 09 09 57 48 49 4C 45 20 09 09 28 43 6F .....WHILE ..(Co
000070: 6D 6D 54 65 78 74 5B 6A 5D 3C 3E 27 20 27 29 20 mmText[j]<>' ')
000080: 0D 0A 09 09 09 09 41 4E 44 09 28 43 6F 6D 6D 54 ......AND.(CommT
000090: 65 78 74 5B 6A 5D 3C 3E 27 2C 27 29 20 0D 0A 09 ext[j]<>',') ...
0000A0: 09 09 09 41 4E 44 09 28 43 6F 6D 6D 54 65 78 74 ...AND.(CommText
0000B0: 5B 6A 5D 3C 3E 27 5B 27 29 0D 0A 09 09 09 09 41 [j]<>'[')......A
0000C0: 4E 44 09 28 43 6F 6D 6D 54 65 78 74 5B 6A 5D 3C ND.(CommText[j]<
0000D0: 3E 27 2F 27 29 0D 0A 09 09 09 09 41 4E 44 20 09 >'/')......AND .
0000E0: 28 6A 3C 49 4E 54 45 47 45 52 28 43 6F 6D 6D 4C (j<INTEGER(CommL
0000F0: 65 6E 67 74 68 29 29 20 44 4F 0D 0A 09 09 09 09 ength)) DO......
000100: 49 4E 43 28 6A 29 0D 0A 09 09 09 09 45 4E 44 3B INC(j)......END;
000110: 0D 0A 09 09 09 42 75 69 6C 64 28 6A 2D 69 2C 43 .....Build(j-i,C
000120: 6F 6D 6D 54 65 78 74 5B 6A 5D 2C 6E 61 6D 65 29 ommText[j],name)
000130: 3B 0D 0A 09 09 09 45 4E 44 3B 28 2A 63 61 73 65 ;.....END;(*case
000140: 2A 29 0D 0A 09 09 0D 0A 09 09 69 3A 3D 6A 3B 0D *)........i:=j;.
000150: 0A 09 09 49 46 20 43 6F 6D 6D 54 65 78 74 5B 69 ...IF CommText[i
000160: 5D 3D 27 2C 27 20 54 48 45 4E 20 49 4E 43 28 69 ]=',' THEN INC(i
000170: 29 20 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 20 28 ) END;....END; (
000180: 2A 4C 4F 4F 50 2A 29 0D 0A 09 45 4E 44 20 47 65 *LOOP*)...END Ge
000190: 74 50 61 72 61 6D 73 3B 0D 0A 09 09 09 09 0D 0A tParams;........
0001A0: 45 4E 44 20 43 6F 6D 6D 61 6E 64 2E 0D 0A 1A 1A END Command.....
0001B0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001C0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
Size : 512 (Real : 512)
000000: 74 68 5B 38 30 68 5D 3A 42 59 54 45 3B 0D 0A 09 th[80h]:BYTE;...
000010: 43 6F 6D 6D 54 65 78 74 5B 38 31 68 5D 3A 41 52 CommText[81h]:AR
000020: 52 41 59 5B 30 2E 2E 31 32 36 5D 20 4F 46 20 43 RAY[0..126] OF C
000030: 48 41 52 3B 20 0D 0A 45 4E 44 20 43 6F 6D 6D 61 HAR; ..END Comma
000040: 6E 64 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A nd..............
000050: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000060: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000070: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000080: 64 20 44 4F 0D 0A 09 09 57 48 49 4C 45 20 63 68 d DO....WHILE ch
000090: 3C 3E 43 52 20 44 4F 20 4E 65 78 74 43 68 61 72 <>CR DO NextChar
0000A0: 20 45 4E 44 3B 0D 0A 09 09 4E 65 78 74 43 68 61 END;....NextCha
0000B0: 72 3B 0D 0A 09 09 49 46 20 63 68 3D 4C 46 20 54 r;....IF ch=LF T
0000C0: 48 45 4E 20 4E 65 78 74 43 68 61 72 20 45 4E 44 HEN NextChar END
0000D0: 3B 0D 0A 09 09 49 4E 43 28 4C 69 6E 65 4F 66 46 ;....INC(LineOfF
0000E0: 69 6C 65 29 3B 0D 0A 09 09 41 64 64 4D 61 72 6B ile);....AddMark
0000F0: 65 72 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E er;....END;...EN
000100: 44 20 52 65 70 6F 73 69 74 69 6F 6E 46 69 6C 65 D RepositionFile
000110: 3B 0D 0A 0D 0A 54 59 50 45 09 4D 61 74 63 68 53 ;....TYPE.MatchS
000120: 74 72 69 6E 67 3D 41 52 52 41 59 5B 31 2E 2E 36 tring=ARRAY[1..6
000130: 30 5D 20 4F 46 20 43 48 41 52 3B 0D 0A 0D 0A 56 0] OF CHAR;....V
000140: 41 52 09 4C 61 73 74 53 74 72 69 6E 67 3A 4D 61 AR.LastString:Ma
000150: 74 63 68 53 74 72 69 6E 67 3B 0D 0A 09 4C 61 73 tchString;...Las
000160: 74 4C 65 6E 3A 43 41 52 44 49 4E 41 4C 3D 30 3B tLen:CARDINAL=0;
000170: 09 28 2A 6C 65 6E 67 74 68 20 6F 66 20 6C 61 73 .(*length of las
000180: 74 20 6D 61 74 63 68 65 64 20 73 74 72 69 6E 67 t matched string
000190: 2A 29 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 *)....PROCEDURE
0001A0: 53 65 61 72 63 68 28 44 65 6C 69 6D 69 74 65 72 Search(Delimiter
0001B0: 3A 43 48 41 52 29 3B 0D 0A 0D 0A 28 2A 09 53 65 :CHAR);....(*.Se
0001C0: 61 72 63 68 20 66 6F 72 20 61 20 73 74 72 69 6E arch for a strin
0001D0: 67 20 66 72 6F 6D 20 74 68 65 20 63 75 72 72 65 g from the curre
0001E0: 6E 74 20 70 6F 73 69 74 69 6F 6E 20 69 6E 20 74 nt position in t
0001F0: 68 65 20 66 69 6C 65 0D 0A 09 0D 0A 09 54 68 69 he file......Thi
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: 4D 4F 44 55 4C 45 20 43 6F 6D 70 61 72 65 3B 0D MODULE Compare;.
000010: 0A 0D 0A 28 2A 09 43 6F 6D 70 61 72 65 20 74 77 ...(*.Compare tw
000020: 6F 20 66 69 6C 65 73 0D 0A 0D 0A 09 43 61 6C 6C o files.....Call
000030: 20 69 73 20 43 4F 4D 50 41 52 45 20 20 20 6F 6C is COMPARE ol
000040: 64 20 66 69 6C 65 2C 6E 65 77 20 66 69 6C 65 2C d file,new file,
000050: 5B 4C 69 73 74 20 66 69 6C 65 5D 0D 0A 0D 0A 09 [List file].....
000060: 54 68 65 20 74 77 6F 20 66 69 6C 65 73 20 61 72 The two files ar
000070: 65 20 63 6F 6D 70 61 72 65 64 20 6C 69 6E 65 20 e compared line
000080: 62 79 20 6C 69 6E 65 0D 0A 0D 0A 09 6C 69 6E 65 by line.....line
000090: 73 20 77 68 69 63 68 20 68 61 76 65 20 62 65 65 s which have bee
0000A0: 6E 20 64 65 6C 65 74 65 64 20 66 72 6F 6D 20 74 n deleted from t
0000B0: 68 65 20 6F 6C 64 20 66 69 6C 65 20 61 72 65 20 he old file are
0000C0: 70 72 69 6E 74 65 64 20 69 6E 20 69 74 61 6C 69 printed in itali
0000D0: 63 73 0D 0A 09 6C 69 6E 65 73 20 77 68 69 63 68 cs...lines which
0000E0: 20 68 61 76 65 20 62 65 65 6E 20 69 6E 73 65 72 have been inser
0000F0: 74 65 64 20 61 72 65 20 70 72 69 6E 74 65 64 20 ted are printed
000100: 69 6E 20 65 6D 70 68 61 73 69 73 65 64 20 6D 6F in emphasised mo
000110: 64 65 0D 0A 09 6C 69 6E 65 73 20 77 68 69 63 68 de...lines which
000120: 20 68 61 76 65 20 62 65 65 6E 20 6D 6F 76 65 64 have been moved
000130: 20 74 6F 20 61 20 6E 65 77 20 70 6F 73 69 74 69 to a new positi
000140: 6F 6E 20 61 72 65 20 70 72 69 6E 74 65 64 20 69 on are printed i
000150: 6E 20 74 68 65 69 72 20 6E 65 77 0D 0A 09 70 6F n their new...po
000160: 73 69 74 69 6F 6E 20 77 69 74 68 20 61 20 62 6F sition with a bo
000170: 78 20 73 75 72 72 6F 75 6E 64 69 6E 67 20 74 68 x surrounding th
000180: 65 6D 0D 0A 0D 0A 09 59 6F 75 20 6D 61 79 20 6E em.....You may n
000190: 65 65 64 20 74 6F 20 70 61 74 63 68 20 74 68 65 eed to patch the
0001A0: 20 70 72 69 6E 74 65 72 20 63 6F 6E 74 72 6F 6C printer control
0001B0: 20 63 6F 64 65 73 20 66 6F 72 20 79 6F 75 72 20 codes for your
0001C0: 70 72 69 6E 74 65 72 0D 0A 09 54 68 65 73 65 20 printer...These
0001D0: 63 6F 6E 74 72 6F 6C 20 63 6F 64 65 73 20 61 72 control codes ar
0001E0: 65 20 61 74 20 61 62 6F 75 74 20 61 64 64 72 65 e at about addre
0001F0: 73 73 20 31 30 34 68 20 69 6E 20 74 68 65 20 63 ss 104h in the c
Size : 512 (Real : 512)
000000: 49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D IMPLEMENTATION M
000010: 4F 44 55 4C 45 20 43 6F 6D 6D 61 6E 64 3B 0D 0A ODULE Command;..
000020: 0D 0A 0D 0A 28 2A 09 43 6F 6D 6D 61 6E 64 20 6C ....(*.Command l
000030: 69 6E 65 20 70 72 6F 63 65 73 73 6F 72 2A 29 0D ine processor*).
000040: 0A 46 52 4F 4D 20 53 74 6F 72 61 67 65 20 49 4D .FROM Storage IM
000050: 50 4F 52 54 20 41 4C 4C 4F 43 41 54 45 3B 0D 0A PORT ALLOCATE;..
000060: 46 52 4F 4D 20 53 59 53 54 45 4D 20 20 49 4D 50 FROM SYSTEM IMP
000070: 4F 52 54 20 41 44 44 52 45 53 53 3B 0D 0A 56 41 ORT ADDRESS;..VA
000080: 52 09 69 2C 6A 2C 6B 3A 49 4E 54 45 47 45 52 3B R.i,j,k:INTEGER;
000090: 0D 0A 50 52 4F 43 45 44 55 52 45 20 47 65 74 50 ..PROCEDURE GetP
0000A0: 61 72 61 6D 73 28 56 41 52 20 70 3A 41 52 52 41 arams(VAR p:ARRA
0000B0: 59 20 4F 46 20 50 61 72 61 6D 65 74 65 72 3B 56 Y OF Parameter;V
0000C0: 41 52 20 63 6F 75 6E 74 3A 49 4E 54 45 47 45 52 AR count:INTEGER
0000D0: 29 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 42 75 );..PROCEDURE Bu
0000E0: 69 6C 64 28 6C 65 6E 3A 49 4E 54 45 47 45 52 3B ild(len:INTEGER;
0000F0: 63 68 3A 43 48 41 52 3B 63 3A 50 61 72 63 6C 61 ch:CHAR;c:Parcla
000100: 73 73 29 3B 0D 0A 56 41 52 09 61 64 3A 41 44 44 ss);..VAR.ad:ADD
000110: 52 45 53 53 3B 0D 0A 42 45 47 49 4E 0D 0A 0D 0A RESS;..BEGIN....
000120: 09 41 4C 4C 4F 43 41 54 45 28 61 64 2C 6C 65 6E .ALLOCATE(ad,len
000130: 2B 34 29 3B 0D 0A 09 70 5B 63 6F 75 6E 74 5D 3A +4);...p[count]:
000140: 3D 61 64 3B 0D 0A 09 57 49 54 48 20 70 5B 63 6F =ad;...WITH p[co
000150: 75 6E 74 5D 5E 20 44 4F 0D 0A 09 09 49 46 20 6A unt]^ DO....IF j
000160: 3E 3D 49 4E 54 45 47 45 52 28 43 6F 6D 6D 4C 65 >=INTEGER(CommLe
000170: 6E 67 74 68 29 54 48 45 4E 20 54 65 72 6D 69 6E ngth)THEN Termin
000180: 61 74 6F 72 3A 3D 30 64 78 0D 0A 09 09 45 4C 53 ator:=0dx....ELS
000190: 45 20 54 65 72 6D 69 6E 61 74 6F 72 3A 3D 63 68 E Terminator:=ch
0001A0: 20 45 4E 44 3B 0D 0A 09 09 4C 65 6E 67 74 68 3A END;....Length:
0001B0: 3D 6C 65 6E 3B 0D 0A 09 09 43 6C 61 73 73 3A 3D =len;....Class:=
0001C0: 63 3B 0D 0A 09 09 46 4F 52 20 6B 3A 3D 30 20 54 c;....FOR k:=0 T
0001D0: 4F 20 6C 65 6E 2D 31 20 44 4F 0D 0A 09 09 09 43 O len-1 DO.....C
0001E0: 68 61 72 73 5B 6B 5D 3A 3D 43 6F 6D 6D 54 65 78 hars[k]:=CommTex
0001F0: 74 5B 69 2B 6B 5D 3B 0D 0A 09 09 09 45 4E 44 3B t[i+k];.....END;
Size : 512 (Real : 512)
000000: 09 74 68 65 20 6C 69 6E 65 73 20 61 72 65 20 75 .the lines are u
000010: 6E 69 71 75 65 20 61 6E 64 20 74 68 65 79 20 6D nique and they m
000020: 61 74 63 68 20 2D 20 73 65 74 20 75 70 20 63 72 atch - set up cr
000030: 6F 73 73 20 70 6F 69 6E 74 65 72 73 2A 29 0D 0A oss pointers*)..
000040: 0D 0A 09 09 09 09 4F 6C 64 4C 69 6E 6B 5B 6B 5D ......OldLink[k]
000050: 3A 3D 69 3B 0D 0A 09 09 09 09 4E 65 77 4C 69 6E :=i;......NewLin
000060: 6B 5B 69 5D 3A 3D 6B 3B 0D 0A 09 09 09 09 45 4E k[i]:=k;......EN
000070: 44 3B 0D 0A 09 09 09 45 4E 44 3B 20 28 2A 49 46 D;.....END; (*IF
000080: 20 63 6F 75 6E 74 3D 31 20 28 74 68 65 20 6F 75 count=1 (the ou
000090: 74 65 72 20 6F 6E 65 29 2A 29 0D 0A 09 09 45 4E ter one)*)....EN
0000A0: 44 3B 20 28 2A 46 4F 52 20 69 2A 29 0D 0A 0D 0A D; (*FOR i*)....
0000B0: 09 28 2A 09 61 74 20 74 68 69 73 20 70 6F 69 6E .(*.at this poin
0000C0: 74 2C 20 4E 65 77 4C 69 6E 6B 5B 69 5D 3D 6A 20 t, NewLink[i]=j
0000D0: 3C 3D 3E 20 4F 6C 64 4C 69 6E 65 5B 6A 5D 3D 69 <=> OldLine[j]=i
0000E0: 0D 0A 09 09 54 68 69 73 20 63 6F 6E 64 69 74 69 ....This conditi
0000F0: 6F 6E 20 69 73 20 63 65 6E 74 72 61 6C 20 74 6F on is central to
000100: 20 74 68 65 20 77 68 6F 6C 65 20 70 72 6F 67 72 the whole progr
000110: 61 6D 09 2A 29 20 09 0D 0A 0D 0A 09 28 2A 09 6E am.*) ......(*.n
000120: 6F 77 20 74 68 61 74 20 74 68 65 20 75 6E 69 71 ow that the uniq
000130: 75 65 20 6C 69 6E 65 73 20 61 72 65 20 63 72 6F ue lines are cro
000140: 73 73 2D 6C 69 6E 6B 65 64 2C 20 77 65 20 61 74 ss-linked, we at
000150: 74 65 6D 70 74 20 74 6F 20 27 67 72 6F 77 27 0D tempt to 'grow'.
000160: 0A 09 09 74 68 65 20 6C 69 6E 6B 73 20 6F 75 74 ...the links out
000170: 77 61 72 64 73 20 66 72 6F 6D 20 74 68 65 20 63 wards from the c
000180: 72 6F 73 73 2D 6C 69 6E 6B 65 64 20 6C 69 6E 65 ross-linked line
000190: 73 2A 29 0D 0A 0D 0A 09 6B 3A 3D 31 3B 0D 0A 09 s*).....k:=1;...
0001A0: 57 48 49 4C 45 20 28 6B 3C 3D 4F 6C 64 4C 65 6E WHILE (k<=OldLen
0001B0: 29 20 44 4F 0D 0A 09 09 49 46 20 4E 65 77 4C 69 ) DO....IF NewLi
0001C0: 6E 6B 5B 6B 5D 3C 3E 30 20 54 48 45 4E 20 0D 0A nk[k]<>0 THEN ..
0001D0: 0D 0A 09 09 09 28 2A 67 72 6F 77 20 62 61 63 6B .....(*grow back
0001E0: 77 61 72 64 73 2A 29 0D 0A 0D 0A 09 09 09 6A 3A wards*).......j:
0001F0: 3D 4E 65 77 4C 69 6E 6B 5B 6B 5D 2D 31 3B 0D 0A =NewLink[k]-1;..
Size : 512 (Real : 512)
000000: 20 77 68 65 6E 20 6F 6E 65 20 6F 66 20 74 68 65 when one of the
000010: 20 66 69 6C 65 73 20 69 73 20 6F 6E 20 61 20 72 files is on a r
000020: 65 6D 6F 74 65 20 6D 61 63 68 69 6E 65 0D 0A 09 emote machine...
000030: 73 69 6E 63 65 20 74 68 65 6E 20 6F 6E 6C 79 20 since then only
000040: 74 68 65 20 68 61 73 68 20 74 6F 74 61 6C 73 20 the hash totals
000050: 61 6E 64 20 74 68 65 20 61 6C 74 65 72 65 64 20 and the altered
000060: 6C 69 6E 65 73 20 6E 65 65 64 20 74 6F 20 62 65 lines need to be
000070: 20 74 72 61 6E 73 6D 69 74 74 65 64 2A 29 0D 0A transmitted*)..
000080: 0D 0A 54 59 50 45 09 48 61 73 68 41 72 72 61 79 ..TYPE.HashArray
000090: 3D 41 52 52 41 59 5B 31 2E 2E 4D 61 78 46 69 6C =ARRAY[1..MaxFil
0000A0: 65 53 69 7A 65 5D 20 4F 46 20 43 41 52 44 49 4E eSize] OF CARDIN
0000B0: 41 4C 3B 0D 0A 56 41 52 09 4F 6C 64 48 61 73 68 AL;..VAR.OldHash
0000C0: 2C 4E 65 77 48 61 73 68 3A 48 61 73 68 41 72 72 ,NewHash:HashArr
0000D0: 61 79 3B 0D 0A 09 4F 6C 64 4C 65 6E 2C 4E 65 77 ay;...OldLen,New
0000E0: 4C 65 6E 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 50 Len:CARDINAL;..P
0000F0: 52 4F 43 45 44 55 52 45 20 43 61 6C 63 48 61 73 ROCEDURE CalcHas
000100: 68 28 56 41 52 09 54 65 78 74 3A 41 52 52 41 59 h(VAR.Text:ARRAY
000110: 20 4F 46 20 43 48 41 52 29 3A 43 41 52 44 49 4E OF CHAR):CARDIN
000120: 41 4C 3B 0D 0A 56 41 52 09 69 2C 6A 3A 43 41 52 AL;..VAR.i,j:CAR
000130: 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 4E 0D 0A 09 DINAL;..BEGIN...
000140: 69 3A 3D 30 3B 0D 0A 09 6A 3A 3D 30 3B 0D 0A 09 i:=0;...j:=0;...
000150: 57 48 49 4C 45 20 28 69 3C 3D 48 49 47 48 28 54 WHILE (i<=HIGH(T
000160: 65 78 74 29 29 20 41 4E 44 20 28 54 65 78 74 5B ext)) AND (Text[
000170: 69 5D 3C 3E 30 78 29 20 44 4F 0D 0A 0D 0A 09 09 i]<>0x) DO......
000180: 28 2A 09 61 64 64 20 79 6F 75 72 20 66 61 76 6F (*.add your favo
000190: 75 72 69 74 65 20 68 61 73 68 69 6E 67 20 66 75 urite hashing fu
0001A0: 6E 63 74 69 6F 6E 20 68 65 72 65 2A 29 0D 0A 0D nction here*)...
0001B0: 0A 09 09 6A 3A 3D 33 2A 6A 2B 4F 52 44 28 54 65 ...j:=3*j+ORD(Te
0001C0: 78 74 5B 69 5D 29 3B 0D 0A 09 09 49 4E 43 28 69 xt[i]);....INC(i
0001D0: 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 52 45 54 );....END;...RET
0001E0: 55 52 4E 20 6A 3B 0D 0A 09 45 4E 44 20 43 61 6C URN j;...END Cal
0001F0: 63 48 61 73 68 3B 0D 0A 50 52 4F 43 45 44 55 52 cHash;..PROCEDUR
Size : 512 (Real : 512)
000000: 20 41 70 72 69 6C 20 31 39 37 38 2C 20 70 70 20 April 1978, pp
000010: 32 36 34 2D 32 36 38 2E 20 0D 0A 0D 0A 09 42 61 264-268. .....Ba
000020: 73 69 63 61 6C 6C 79 2C 20 74 68 65 20 74 65 63 sically, the tec
000030: 68 6E 69 71 75 65 20 63 6F 6E 73 69 73 74 73 20 hnique consists
000040: 6F 66 20 63 6F 6D 70 61 72 69 6E 67 20 74 68 65 of comparing the
000050: 20 74 77 6F 20 66 69 6C 65 73 20 74 6F 20 66 69 two files to fi
000060: 6E 64 20 61 6C 6C 0D 0A 09 74 68 65 20 75 6E 69 nd all...the uni
000070: 71 75 65 20 6C 69 6E 65 73 20 69 6E 20 65 61 63 que lines in eac
000080: 68 20 77 68 69 63 68 20 6D 61 74 63 68 20 61 20 h which match a
000090: 75 6E 69 71 75 65 20 6C 69 6E 65 20 69 6E 20 74 unique line in t
0000A0: 68 65 20 6F 74 68 65 72 2E 20 54 68 65 73 65 20 he other. These
0000B0: 0D 0A 09 6C 69 6E 65 73 20 67 69 76 65 20 66 69 ...lines give fi
0000C0: 78 65 64 20 70 6F 69 6E 74 73 20 66 72 6F 6D 20 xed points from
0000D0: 77 68 69 63 68 20 6D 61 74 63 68 69 6E 67 20 72 which matching r
0000E0: 65 67 69 6F 6E 73 20 63 61 6E 20 62 65 20 67 72 egions can be gr
0000F0: 6F 77 6E 20 6F 75 74 77 61 72 64 73 2E 0D 0A 09 own outwards....
000100: 4F 6E 63 65 20 61 6C 6C 20 74 68 65 20 72 65 67 Once all the reg
000110: 69 6F 6E 73 20 73 6F 20 70 72 6F 64 75 63 65 64 ions so produced
000120: 20 68 61 76 65 20 62 65 65 6E 20 63 72 65 61 74 have been creat
000130: 65 64 2C 20 61 6E 79 20 6C 69 6E 65 20 69 6E 20 ed, any line in
000140: 74 68 65 20 6F 6C 64 20 66 69 6C 65 20 0D 0A 09 the old file ...
000150: 77 68 69 63 68 20 69 73 20 6E 6F 74 20 61 74 74 which is not att
000160: 61 63 68 65 64 20 74 6F 20 61 20 6C 69 6E 65 20 ached to a line
000170: 69 6E 20 74 68 65 20 6E 65 77 20 66 69 6C 65 20 in the new file
000180: 69 73 20 61 20 64 65 6C 65 74 69 6F 6E 2E 20 41 is a deletion. A
000190: 6E 79 20 6C 69 6E 65 20 69 6E 20 74 68 65 20 0D ny line in the .
0001A0: 0A 09 6E 65 77 20 66 69 6C 65 20 77 68 69 63 68 ..new file which
0001B0: 20 69 73 20 6E 6F 74 20 61 74 74 61 63 68 65 64 is not attached
0001C0: 20 74 6F 20 61 20 6C 69 6E 65 20 69 6E 20 74 68 to a line in th
0001D0: 65 20 6F 6C 64 20 66 69 6C 65 20 69 73 20 61 6E e old file is an
0001E0: 20 69 6E 73 65 72 74 69 6F 6E 2C 20 77 68 69 6C insertion, whil
0001F0: 65 0D 0A 09 61 20 62 6C 6F 63 6B 20 6D 6F 76 65 e...a block move
Size : 512 (Real : 512)
000000: 45 20 52 65 61 64 53 74 72 65 61 6D 28 56 41 52 E ReadStream(VAR
000010: 20 73 3A 53 54 52 45 41 4D 3B 56 41 52 20 48 61 s:STREAM;VAR Ha
000020: 73 68 3A 48 61 73 68 41 72 72 61 79 29 3A 43 41 sh:HashArray):CA
000030: 52 44 49 4E 41 4C 3B 0D 0A 28 2A 0D 0A 09 52 65 RDINAL;..(*...Re
000040: 61 64 20 69 6E 20 61 20 66 69 6C 65 20 61 6E 64 ad in a file and
000050: 20 63 61 6C 63 75 6C 61 74 65 20 74 68 65 20 68 calculate the h
000060: 61 73 68 20 74 6F 74 61 6C 73 20 66 6F 72 20 74 ash totals for t
000070: 68 65 20 66 69 6C 65 0D 0A 2A 29 0D 0A 56 41 52 he file..*)..VAR
000080: 09 69 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 4C .i:CARDINAL;...L
000090: 69 6E 65 3A 41 52 52 41 59 5B 31 2E 2E 38 30 5D ine:ARRAY[1..80]
0000A0: 20 4F 46 20 43 48 41 52 3B 0D 0A 42 45 47 49 4E OF CHAR;..BEGIN
0000B0: 0D 0A 09 53 77 69 74 63 68 49 6E 53 74 72 65 61 ...SwitchInStrea
0000C0: 6D 28 73 29 3B 0D 0A 09 69 3A 3D 30 3B 0D 0A 09 m(s);...i:=0;...
0000D0: 0D 0A 09 57 48 49 4C 45 20 28 69 3C 48 49 47 48 ...WHILE (i<HIGH
0000E0: 28 48 61 73 68 29 29 20 41 4E 44 20 28 4E 4F 54 (Hash)) AND (NOT
0000F0: 20 45 4F 53 28 73 29 29 20 44 4F 0D 0A 09 09 52 EOS(s)) DO....R
000100: 65 61 64 4C 69 6E 65 28 4C 69 6E 65 29 3B 0D 0A eadLine(Line);..
000110: 09 09 49 4E 43 28 69 29 3B 0D 0A 09 09 48 61 73 ..INC(i);....Has
000120: 68 5B 69 5D 3A 3D 43 61 6C 63 48 61 73 68 28 4C h[i]:=CalcHash(L
000130: 69 6E 65 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 ine);....END;...
000140: 52 65 73 65 74 28 73 29 3B 0D 0A 09 50 6F 70 49 Reset(s);...PopI
000150: 6E 53 74 72 65 61 6D 3B 0D 0A 09 52 45 54 55 52 nStream;...RETUR
000160: 4E 20 69 3B 0D 0A 09 45 4E 44 20 52 65 61 64 53 N i;...END ReadS
000170: 74 72 65 61 6D 3B 0D 0A 0D 0A 09 20 20 20 0D 0A tream;..... ..
000180: 50 52 4F 43 45 44 55 52 45 20 55 73 61 67 65 3B PROCEDURE Usage;
000190: 0D 0A 42 45 47 49 4E 0D 0A 09 57 72 69 74 65 53 ..BEGIN...WriteS
0001A0: 74 72 69 6E 67 28 27 55 73 61 67 65 20 69 73 3A tring('Usage is:
0001B0: 20 20 20 43 4F 4D 50 41 52 45 20 6F 6C 64 20 66 COMPARE old f
0001C0: 69 6C 65 2C 6E 65 77 20 66 69 6C 65 27 29 3B 57 ile,new file');W
0001D0: 72 69 74 65 4C 6E 3B 0D 0A 09 57 72 69 74 65 53 riteLn;...WriteS
0001E0: 74 72 69 6E 67 28 27 20 20 20 20 20 20 6F 72 20 tring(' or
0001F0: 20 20 20 43 4F 4D 50 41 52 45 20 6F 6C 64 20 66 COMPARE old f
Size : 512 (Real : 512)
000000: 20 69 73 20 65 6E 63 6F 75 6E 74 65 72 65 64 20 is encountered
000010: 77 68 65 6E 20 74 68 65 20 6C 69 6E 65 73 20 70 when the lines p
000020: 6F 69 6E 74 65 64 20 74 6F 20 69 6E 20 74 68 65 ointed to in the
000030: 20 6F 6C 64 20 66 69 6C 65 20 61 72 65 20 66 75 old file are fu
000040: 72 74 68 65 72 0D 0A 09 64 6F 77 6E 20 74 68 65 rther...down the
000050: 20 66 69 6C 65 20 74 68 61 6E 20 73 6F 6D 65 20 file than some
000060: 6F 74 68 65 72 20 6C 69 6E 65 73 20 77 68 69 63 other lines whic
000070: 68 20 68 61 76 65 20 6E 6F 74 20 79 65 74 20 62 h have not yet b
000080: 65 65 6E 20 70 72 6F 63 65 73 73 65 64 20 61 6E een processed an
000090: 64 20 77 68 69 63 68 0D 0A 09 61 72 65 20 61 73 d which...are as
0000A0: 73 6F 63 69 61 74 65 64 20 77 69 74 68 20 6C 69 sociated with li
0000B0: 6E 65 73 20 69 6E 20 74 68 65 20 6E 65 77 20 66 nes in the new f
0000C0: 69 6C 65 2E 0D 0A 0D 0A 09 2A 29 0D 0A 0D 0A 46 ile......*)....F
0000D0: 52 4F 4D 20 09 53 59 53 54 45 4D 20 09 09 49 4D ROM .SYSTEM ..IM
0000E0: 50 4F 52 54 20 41 44 44 52 45 53 53 2C 41 44 52 PORT ADDRESS,ADR
0000F0: 2C 54 53 49 5A 45 3B 0D 0A 46 52 4F 4D 20 09 43 ,TSIZE;..FROM .C
000100: 6F 6D 6D 61 6E 64 20 09 49 4D 50 4F 52 54 20 50 ommand .IMPORT P
000110: 61 72 61 6D 65 74 65 72 2C 50 61 72 63 6C 61 73 arameter,Parclas
000120: 73 2C 47 65 74 50 61 72 61 6D 73 3B 0D 0A 46 52 s,GetParams;..FR
000130: 4F 4D 20 09 46 69 6C 65 73 20 09 09 49 4D 50 4F OM .Files ..IMPO
000140: 52 54 20 46 69 6C 65 4E 61 6D 65 2C 46 49 4C 45 RT FileName,FILE
000150: 2C 4C 6F 6F 6B 75 70 2C 43 72 65 61 74 65 3B 0D ,Lookup,Create;.
000160: 0A 46 52 4F 4D 20 09 53 74 72 65 61 6D 73 20 09 .FROM .Streams .
000170: 49 4D 50 4F 52 54 20 43 6F 6E 6E 65 63 74 2C 44 IMPORT Connect,D
000180: 69 73 63 6F 6E 6E 65 63 74 2C 53 54 52 45 41 4D isconnect,STREAM
000190: 2C 69 6E 70 75 74 2C 6F 75 74 70 75 74 2C 57 72 ,input,output,Wr
0001A0: 69 74 65 43 68 61 72 2C 0D 0A 09 09 09 09 52 65 iteChar,......Re
0001B0: 61 64 43 68 61 72 2C 45 4F 53 2C 57 72 69 74 65 adChar,EOS,Write
0001C0: 52 65 63 2C 52 65 73 65 74 3B 0D 0A 46 52 4F 4D Rec,Reset;..FROM
0001D0: 20 09 54 65 72 6D 69 6E 61 6C 09 49 4D 50 4F 52 .Terminal.IMPOR
0001E0: 54 20 57 72 69 74 65 53 74 72 69 6E 67 2C 57 72 T WriteString,Wr
0001F0: 69 74 65 4C 6E 3B 0D 0A 46 52 4F 4D 20 09 53 6F iteLn;..FROM .So
Size : 512 (Real : 512)
000000: 69 6C 65 2C 6E 65 77 20 66 69 6C 65 2C 6F 75 74 ile,new file,out
000010: 70 75 74 20 66 69 6C 65 27 29 3B 0D 0A 09 57 72 put file');...Wr
000020: 69 74 65 4C 6E 3B 0D 0A 09 57 72 69 74 65 4C 6E iteLn;...WriteLn
000030: 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28 ;...WriteString(
000040: 27 20 66 6F 72 20 65 78 61 6D 70 6C 65 3A 20 20 ' for example:
000050: 43 4F 4D 50 41 52 45 20 4D 45 2E 42 41 4B 20 4D COMPARE ME.BAK M
000060: 45 2E 4D 4F 44 27 29 3B 57 72 69 74 65 4C 6E 3B E.MOD');WriteLn;
000070: 0D 0A 09 48 41 4C 54 0D 0A 09 45 4E 44 20 55 73 ...HALT...END Us
000080: 61 67 65 3B 0D 0A 0D 0A 56 41 52 09 4F 6C 64 4C age;....VAR.OldL
000090: 69 6E 6B 2C 4E 65 77 4C 69 6E 6B 3A 48 61 73 68 ink,NewLink:Hash
0000A0: 41 72 72 61 79 3B 0D 0A 0D 0A 09 28 2A 09 4F 6C Array;.....(*.Ol
0000B0: 64 4C 69 6E 6B 20 63 6F 6E 74 61 69 6E 73 20 74 dLink contains t
0000C0: 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 61 20 6C he number of a l
0000D0: 69 6E 65 20 69 6E 20 74 68 65 20 6E 65 77 20 66 ine in the new f
0000E0: 69 6C 65 20 77 68 69 63 68 20 69 73 0D 0A 09 09 ile which is....
0000F0: 6C 69 6E 6B 65 64 20 74 6F 20 61 20 67 69 76 65 linked to a give
000100: 6E 20 6C 69 6E 65 20 69 6E 20 74 68 65 20 6F 6C n line in the ol
000110: 64 20 66 69 6C 65 2C 20 61 6E 64 20 76 69 63 65 d file, and vice
000120: 2D 76 65 72 73 61 0D 0A 09 09 41 6E 20 65 6E 74 -versa....An ent
000130: 72 79 20 63 6F 6E 74 61 69 6E 73 20 7A 65 72 6F ry contains zero
000140: 20 69 66 20 6E 6F 20 6C 69 6E 6B 20 68 61 73 20 if no link has
000150: 62 65 65 6E 20 6D 61 64 65 2A 29 0D 0A 0D 0A 0D been made*).....
000160: 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 47 65 6E ...PROCEDURE Gen
000170: 65 72 61 74 65 4C 69 6E 6B 73 3B 0D 0A 56 41 52 erateLinks;..VAR
000180: 09 69 2C 6A 2C 6B 3A 43 41 52 44 49 4E 41 4C 3B .i,j,k:CARDINAL;
000190: 0D 0A 09 63 6F 75 6E 74 3A 43 41 52 44 49 4E 41 ...count:CARDINA
0001A0: 4C 3B 0D 0A 42 45 47 49 4E 0D 0A 09 46 4F 52 20 L;..BEGIN...FOR
0001B0: 69 3A 3D 31 20 54 4F 20 48 49 47 48 28 4F 6C 64 i:=1 TO HIGH(Old
0001C0: 4C 69 6E 6B 29 20 44 4F 0D 0A 09 09 4F 6C 64 4C Link) DO....OldL
0001D0: 69 6E 6B 5B 69 5D 3A 3D 30 3B 0D 0A 09 09 4E 65 ink[i]:=0;....Ne
0001E0: 77 4C 69 6E 6B 5B 69 5D 3A 3D 30 3B 0D 0A 09 09 wLink[i]:=0;....
0001F0: 45 4E 44 3B 0D 0A 0D 0A 09 28 2A 09 6C 6F 6F 6B END;.....(*.look
Size : 512 (Real : 512)
000000: 72 74 20 09 09 49 4D 50 4F 52 54 20 53 6F 72 74 rt ..IMPORT Sort
000010: 52 65 63 6F 72 64 73 3B 0D 0A 46 52 4F 4D 20 09 Records;..FROM .
000020: 49 6E 4F 75 74 20 09 09 49 4D 50 4F 52 54 20 57 InOut ..IMPORT W
000030: 72 69 74 65 43 61 72 64 2C 53 77 69 74 63 68 49 riteCard,SwitchI
000040: 6E 53 74 72 65 61 6D 2C 53 77 69 74 63 68 4F 75 nStream,SwitchOu
000050: 74 53 74 72 65 61 6D 2C 0D 0A 09 09 09 09 50 6F tStream,......Po
000060: 70 49 6E 53 74 72 65 61 6D 2C 50 6F 70 4F 75 74 pInStream,PopOut
000070: 53 74 72 65 61 6D 2C 52 65 61 64 4C 69 6E 65 3B Stream,ReadLine;
000080: 0D 0A 43 4F 4E 53 54 09 4D 61 78 46 69 6C 65 53 ..CONST.MaxFileS
000090: 69 7A 65 3D 32 30 30 30 3B 09 28 2A 6C 69 6E 65 ize=2000;.(*line
0000A0: 73 20 69 6E 20 66 69 6C 65 20 6D 61 78 2A 29 0D s in file max*).
0000B0: 0A 09 46 46 3D 30 63 78 3B 0D 0A 09 54 41 42 3D ..FF=0cx;...TAB=
0000C0: 30 39 78 3B 0D 0A 09 4C 46 3D 30 61 78 3B 0D 0A 09x;...LF=0ax;..
0000D0: 09 43 52 3D 30 64 78 3B 0D 0A 54 59 50 45 20 09 .CR=0dx;..TYPE .
0000E0: 50 46 69 6C 65 4E 61 6D 65 3D 50 4F 49 4E 54 45 PFileName=POINTE
0000F0: 52 20 54 4F 20 46 69 6C 65 4E 61 6D 65 3B 0D 0A R TO FileName;..
000100: 09 50 72 69 6E 74 43 6F 6E 74 72 6F 6C 3D 41 52 .PrintControl=AR
000110: 52 41 59 5B 30 2E 2E 37 5D 20 4F 46 20 43 48 41 RAY[0..7] OF CHA
000120: 52 3B 0D 0A 56 41 52 09 0D 0A 09 28 2A 09 50 72 R;..VAR....(*.Pr
000130: 69 6E 74 65 72 20 43 6F 6E 74 72 6F 6C 20 43 6F inter Control Co
000140: 64 65 73 20 61 20 7A 65 72 6F 20 62 79 74 65 20 des a zero byte
000150: 74 65 72 6D 69 6E 61 74 65 73 09 2A 29 0D 0A 0D terminates.*)...
000160: 0A 09 49 74 61 6C 69 63 73 4F 6E 09 3A 50 72 69 ..ItalicsOn.:Pri
000170: 6E 74 43 6F 6E 74 72 6F 6C 09 3D 5B 31 62 78 2C ntControl.=[1bx,
000180: 27 34 27 2C 30 5D 3B 0D 0A 09 49 74 61 6C 69 63 '4',0];...Italic
000190: 73 4F 66 66 09 3A 50 72 69 6E 74 43 6F 6E 74 72 sOff.:PrintContr
0001A0: 6F 6C 09 3D 5B 31 62 78 2C 27 35 27 2C 30 5D 3B ol.=[1bx,'5',0];
0001B0: 0D 0A 09 42 6F 6C 64 4F 6E 09 09 3A 50 72 69 6E ...BoldOn..:Prin
0001C0: 74 43 6F 6E 74 72 6F 6C 09 3D 5B 31 62 78 2C 27 tControl.=[1bx,'
0001D0: 45 27 2C 30 5D 3B 0D 0A 09 42 6F 6C 64 4F 66 66 E',0];...BoldOff
0001E0: 09 09 3A 50 72 69 6E 74 43 6F 6E 74 72 6F 6C 09 ..:PrintControl.
0001F0: 3D 5B 31 62 78 2C 27 46 27 2C 30 5D 3B 0D 0A 0D =[1bx,'F',0];...
Size : 512 (Real : 512)
000000: 20 66 6F 72 20 61 6C 6C 20 6F 6C 64 20 6C 69 6E for all old lin
000010: 65 73 20 77 68 69 63 68 20 6D 61 74 63 68 20 65 es which match e
000020: 78 61 63 74 6C 79 20 6F 6E 65 20 6E 65 77 20 6C xactly one new l
000030: 69 6E 65 2A 29 0D 0A 0D 0A 09 46 4F 52 20 69 3A ine*).....FOR i:
000040: 3D 30 20 54 4F 20 4F 6C 64 4C 65 6E 20 44 4F 0D =0 TO OldLen DO.
000050: 0A 09 09 63 6F 75 6E 74 3A 3D 30 3B 0D 0A 09 09 ...count:=0;....
000060: 6A 3A 3D 31 3B 0D 0A 09 09 57 48 49 4C 45 20 28 j:=1;....WHILE (
000070: 63 6F 75 6E 74 3C 32 29 20 41 4E 44 20 28 6A 3C count<2) AND (j<
000080: 3D 4E 65 77 4C 65 6E 29 20 44 4F 0D 0A 09 09 09 =NewLen) DO.....
000090: 49 46 20 4F 6C 64 48 61 73 68 5B 69 5D 3D 4E 65 IF OldHash[i]=Ne
0000A0: 77 48 61 73 68 5B 6A 5D 20 54 48 45 4E 20 0D 0A wHash[j] THEN ..
0000B0: 09 09 09 09 49 4E 43 28 63 6F 75 6E 74 29 3B 20 ....INC(count);
0000C0: 0D 0A 09 09 09 09 6B 3A 3D 6A 3B 0D 0A 09 09 09 ......k:=j;.....
0000D0: 09 45 4E 44 3B 0D 0A 09 09 09 49 4E 43 28 6A 29 .END;.....INC(j)
0000E0: 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 49 46 ;.....END;....IF
0000F0: 20 63 6F 75 6E 74 3D 31 20 54 48 45 4E 0D 0A 0D count=1 THEN...
000100: 0A 09 09 28 2A 70 6F 73 73 69 62 6C 65 20 6D 61 ...(*possible ma
000110: 74 63 68 20 2D 20 63 68 65 63 6B 20 74 68 61 74 tch - check that
000120: 20 74 68 65 20 6E 65 77 20 6C 69 6E 65 20 6F 6E the new line on
000130: 6C 79 20 6D 61 74 63 68 65 73 20 74 68 69 73 20 ly matches this
000140: 6F 6C 64 20 6C 69 6E 65 2A 29 0D 0A 0D 0A 09 09 old line*)......
000150: 09 63 6F 75 6E 74 3A 3D 30 3B 0D 0A 09 09 09 6A .count:=0;.....j
000160: 3A 3D 31 3B 0D 0A 09 09 09 57 48 49 4C 45 20 28 :=1;.....WHILE (
000170: 63 6F 75 6E 74 3C 32 29 20 41 4E 44 20 28 6A 3C count<2) AND (j<
000180: 3D 4F 6C 64 4C 65 6E 29 20 44 4F 0D 0A 09 09 09 =OldLen) DO.....
000190: 09 49 46 20 4F 6C 64 48 61 73 68 5B 6A 5D 3D 4E .IF OldHash[j]=N
0001A0: 65 77 48 61 73 68 5B 6B 5D 20 54 48 45 4E 20 0D ewHash[k] THEN .
0001B0: 0A 09 09 09 09 09 49 4E 43 28 63 6F 75 6E 74 29 ......INC(count)
0001C0: 3B 0D 0A 09 09 09 09 09 45 4E 44 3B 0D 0A 09 09 ;.......END;....
0001D0: 09 09 49 4E 43 28 6A 29 3B 0D 0A 09 09 09 09 45 ..INC(j);......E
0001E0: 4E 44 3B 0D 0A 09 09 09 49 46 20 63 6F 75 6E 74 ND;.....IF count
0001F0: 3D 31 20 54 48 45 4E 0D 0A 0D 0A 09 09 09 28 2A =1 THEN.......(*
Size : 512 (Real : 512)
000000: 0A 09 4C 69 73 74 3A 53 54 52 45 41 4D 3B 0D 0A ..List:STREAM;..
000010: 09 4C 69 73 74 46 3A 46 49 4C 45 3B 0D 0A 09 72 .ListF:FILE;...r
000020: 65 70 6C 79 3A 49 4E 54 45 47 45 52 3B 0D 0A 09 eply:INTEGER;...
000030: 69 2C 6A 3A 49 4E 54 45 47 45 52 3B 0D 0A 0D 0A i,j:INTEGER;....
000040: 09 4F 6C 64 73 3A 53 54 52 45 41 4D 3B 0D 0A 09 .Olds:STREAM;...
000050: 4F 6C 64 66 3A 46 49 4C 45 3B 0D 0A 09 0D 0A 09 Oldf:FILE;......
000060: 4E 65 77 73 3A 53 54 52 45 41 4D 3B 0D 0A 09 4E News:STREAM;...N
000070: 65 77 66 3A 46 49 4C 45 3B 0D 0A 0D 0A 09 63 68 ewf:FILE;.....ch
000080: 3A 43 48 41 52 3B 0D 0A 09 43 68 61 72 50 6F 73 :CHAR;...CharPos
000090: 3A 43 41 52 44 49 4E 41 4C 3B 09 28 2A 70 6F 73 :CARDINAL;.(*pos
0000A0: 69 74 69 6F 6E 20 69 6E 20 6C 69 6E 65 2A 29 0D ition in line*).
0000B0: 0A 09 0D 0A 0D 0A 28 2A 09 46 6F 72 20 65 61 63 ......(*.For eac
0000C0: 68 20 66 69 6C 65 2C 20 77 65 20 68 61 76 65 20 h file, we have
0000D0: 61 6E 20 61 72 72 61 79 20 6F 66 20 68 61 73 68 an array of hash
0000E0: 20 74 6F 74 61 6C 73 20 66 6F 72 20 74 68 65 20 totals for the
0000F0: 6C 69 6E 65 73 20 6F 66 20 74 68 65 20 66 69 6C lines of the fil
000100: 65 0D 0A 09 55 73 69 6E 67 20 68 61 73 68 20 74 e...Using hash t
000110: 6F 74 61 6C 73 20 69 6E 73 74 65 61 64 20 6F 66 otals instead of
000120: 20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 6C 69 the original li
000130: 6E 65 73 20 63 61 75 73 65 73 20 61 20 73 6C 69 nes causes a sli
000140: 67 68 74 20 63 68 61 6E 63 65 0D 0A 09 74 68 61 ght chance...tha
000150: 74 20 6C 69 6E 65 73 20 77 69 6C 6C 20 6D 61 74 t lines will mat
000160: 63 68 20 77 68 65 6E 20 74 68 65 79 20 73 68 6F ch when they sho
000170: 75 6C 64 20 6E 6F 74 2C 20 62 75 74 20 61 6C 6C uld not, but all
000180: 6F 77 73 20 6C 61 72 67 65 72 20 66 69 6C 65 73 ows larger files
000190: 0D 0A 09 74 6F 20 62 65 20 63 6F 6D 70 61 72 65 ...to be compare
0001A0: 64 20 61 6E 64 20 61 6C 73 6F 20 6D 61 6B 65 73 d and also makes
0001B0: 20 69 74 20 70 6F 73 73 69 62 6C 65 20 74 6F 20 it possible to
0001C0: 65 78 74 65 6E 64 20 74 68 65 20 70 72 6F 67 72 extend the progr
0001D0: 61 6D 20 69 6E 20 74 68 65 20 66 75 74 75 72 65 am in the future
0001E0: 0D 0A 09 74 6F 20 77 6F 72 6B 20 77 69 74 68 20 ...to work with
0001F0: 72 65 61 73 6F 6E 61 62 6C 65 20 73 70 65 65 64 reasonable speed
Size : 512 (Real : 512)
000000: 20 62 75 74 0D 0A 09 09 20 20 65 61 63 68 20 70 but.... each p
000010: 6F 69 6E 74 65 72 20 70 6F 69 6E 74 73 20 73 6F ointer points so
000020: 6D 65 77 68 65 72 65 0D 0A 0D 0A 09 09 20 20 49 mewhere...... I
000030: 66 20 74 68 65 20 74 65 78 74 20 69 6E 20 74 68 f the text in th
000040: 65 20 6E 65 77 20 66 69 6C 65 20 70 6F 69 6E 74 e new file point
000050: 65 64 20 74 6F 20 62 79 20 74 68 65 20 6F 6C 64 ed to by the old
000060: 20 66 69 6C 65 20 68 61 73 0D 0A 09 09 20 20 62 file has.... b
000070: 65 65 6E 20 70 61 73 73 65 64 2C 20 69 74 20 68 een passed, it h
000080: 61 73 20 61 6C 72 65 61 64 79 20 62 65 65 6E 20 as already been
000090: 77 72 69 74 74 65 6E 20 73 6F 20 77 65 20 69 67 written so we ig
0000A0: 6E 6F 72 65 20 74 68 65 0D 0A 09 09 20 20 6F 6C nore the.... ol
0000B0: 64 20 6C 69 6E 65 20 61 6E 64 20 6C 6F 6F 6B 20 d line and look
0000C0: 66 6F 72 20 73 6F 6D 65 74 68 69 6E 67 20 6D 6F for something mo
0000D0: 72 65 20 69 6E 74 65 72 65 73 74 69 6E 67 20 28 re interesting (
0000E0: 65 2E 67 2E 20 0D 0A 09 09 20 20 61 20 53 63 6F e.g. .... a Sco
0000F0: 74 73 6D 61 6E 20 77 69 6E 6E 69 6E 67 20 57 69 tsman winning Wi
000100: 6D 62 6C 65 64 6F 6E 29 0D 0A 0D 0A 09 09 20 20 mbledon)......
000110: 42 65 63 61 75 73 65 20 6F 66 20 74 68 65 20 63 Because of the c
000120: 65 6E 74 72 61 6C 20 70 72 65 64 69 63 61 74 65 entral predicate
000130: 2C 20 77 65 20 6B 6E 6F 77 20 74 68 61 74 0D 0A , we know that..
000140: 0D 0A 09 09 20 20 4E 65 77 4C 69 6E 6B 5B 4F 6C .... NewLink[Ol
000150: 64 4C 69 6E 6B 5B 6E 65 77 69 6E 64 65 78 5D 5D dLink[newindex]]
000160: 3D 6E 65 77 69 6E 64 65 78 0D 0A 09 09 20 61 6E =newindex.... an
000170: 64 0D 0A 09 09 20 20 4F 6C 64 4C 69 6E 6B 5B 4E d.... OldLink[N
000180: 65 77 4C 69 6E 6B 5B 6F 6C 64 69 6E 64 65 78 5D ewLink[oldindex]
000190: 5D 3D 6F 6C 64 69 6E 64 65 78 0D 0A 0D 0A 2A 29 ]=oldindex....*)
0001A0: 0D 0A 0D 0A 09 09 45 4C 53 49 46 20 4E 65 77 4C ......ELSIF NewL
0001B0: 69 6E 6B 5B 6F 6C 64 69 6E 64 65 78 5D 3C 6E 65 ink[oldindex]<ne
0001C0: 77 69 6E 64 65 78 20 54 48 45 4E 0D 0A 09 09 09 windex THEN.....
0001D0: 53 6B 69 70 4F 6C 64 3B 0D 0A 09 09 09 49 4E 43 SkipOld;.....INC
0001E0: 28 6F 6C 64 69 6E 64 65 78 29 3B 0D 0A 0D 0A 28 (oldindex);....(
0001F0: 2A 20 09 09 20 20 20 73 6F 20 4E 65 77 4C 69 6E * .. so NewLin
Size : 512 (Real : 512)
000000: 78 5D 2C 36 29 3B 0D 0A 09 57 72 69 74 65 43 61 x],6);...WriteCa
000010: 72 64 28 6E 65 77 69 6E 64 65 78 2C 36 29 3B 57 rd(newindex,6);W
000020: 72 69 74 65 43 61 72 64 28 4F 6C 64 4C 69 6E 6B riteCard(OldLink
000030: 5B 6E 65 77 69 6E 64 65 78 5D 2C 36 29 3B 0D 0A [newindex],6);..
000040: 09 50 6F 70 4F 75 74 53 74 72 65 61 6D 3B 0D 0A .PopOutStream;..
000050: 2A 29 0D 0A 09 57 72 69 74 65 43 68 61 72 28 4C *)...WriteChar(L
000060: 69 73 74 2C 30 64 78 29 3B 0D 0A 09 57 72 69 74 ist,0dx);...Writ
000070: 65 43 68 61 72 28 4C 69 73 74 2C 30 61 78 29 3B eChar(List,0ax);
000080: 0D 0A 09 45 4E 44 20 57 72 69 74 65 45 6F 6C 3B ...END WriteEol;
000090: 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 44 65 ....PROCEDURE De
0000A0: 6C 65 74 65 64 3B 0D 0A 0D 0A 28 2A 09 50 72 69 leted;....(*.Pri
0000B0: 6E 74 20 6F 75 74 20 61 20 6C 69 6E 65 20 66 72 nt out a line fr
0000C0: 6F 6D 20 74 68 65 20 6F 6C 64 20 66 69 6C 65 2A om the old file*
0000D0: 29 0D 0A 0D 0A 42 45 47 49 4E 0D 0A 09 47 65 74 )....BEGIN...Get
0000E0: 4C 69 6E 65 28 4F 6C 64 73 2C 6F 6C 64 6C 69 6E Line(Olds,oldlin
0000F0: 65 29 3B 0D 0A 09 50 72 69 6E 74 28 49 74 61 6C e);...Print(Ital
000100: 69 63 73 4F 6E 29 3B 0D 0A 09 50 72 69 6E 74 28 icsOn);...Print(
000110: 6F 6C 64 6C 69 6E 65 29 3B 0D 0A 09 50 72 69 6E oldline);...Prin
000120: 74 28 49 74 61 6C 69 63 73 4F 66 66 29 3B 0D 0A t(ItalicsOff);..
000130: 09 57 72 69 74 65 45 6F 6C 3B 0D 0A 09 45 4E 44 .WriteEol;...END
000140: 20 44 65 6C 65 74 65 64 3B 0D 0A 0D 0A 50 52 4F Deleted;....PRO
000150: 43 45 44 55 52 45 20 53 6B 69 70 4F 6C 64 3B 0D CEDURE SkipOld;.
000160: 0A 42 45 47 49 4E 0D 0A 09 47 65 74 4C 69 6E 65 .BEGIN...GetLine
000170: 28 4F 6C 64 73 2C 6F 6C 64 6C 69 6E 65 29 3B 0D (Olds,oldline);.
000180: 0A 09 45 4E 44 20 53 6B 69 70 4F 6C 64 3B 0D 0A ..END SkipOld;..
000190: 0D 0A 50 52 4F 43 45 44 55 52 45 20 49 6E 73 65 ..PROCEDURE Inse
0001A0: 72 74 65 64 3B 0D 0A 42 45 47 49 4E 0D 0A 09 47 rted;..BEGIN...G
0001B0: 65 74 4C 69 6E 65 28 4E 65 77 73 2C 6E 65 77 6C etLine(News,newl
0001C0: 69 6E 65 29 3B 0D 0A 09 50 72 69 6E 74 28 42 6F ine);...Print(Bo
0001D0: 6C 64 4F 6E 29 3B 0D 0A 09 50 72 69 6E 74 28 6E ldOn);...Print(n
0001E0: 65 77 6C 69 6E 65 29 3B 0D 0A 09 50 72 69 6E 74 ewline);...Print
0001F0: 28 42 6F 6C 64 4F 66 66 29 3B 0D 0A 09 57 72 69 (BoldOff);...Wri
Size : 512 (Real : 512)
000000: 09 09 09 69 3A 3D 6B 2D 31 3B 0D 0A 09 09 09 57 ...i:=k-1;.....W
000010: 48 49 4C 45 20 28 6A 3E 30 29 20 41 4E 44 20 28 HILE (j>0) AND (
000020: 69 3E 30 29 20 41 4E 44 20 28 4F 6C 64 4C 69 6E i>0) AND (OldLin
000030: 6B 5B 6A 2B 31 5D 3D 69 2B 31 29 0D 0A 09 09 09 k[j+1]=i+1).....
000040: 09 41 4E 44 20 28 4E 65 77 48 61 73 68 5B 6A 5D .AND (NewHash[j]
000050: 3D 4F 6C 64 48 61 73 68 5B 69 5D 29 20 0D 0A 09 =OldHash[i]) ...
000060: 09 09 09 41 4E 44 20 28 4F 6C 64 4C 69 6E 6B 5B ...AND (OldLink[
000070: 6A 5D 3D 30 29 20 41 4E 44 20 28 4E 65 77 4C 69 j]=0) AND (NewLi
000080: 6E 6B 5B 69 5D 3D 30 29 20 44 4F 0D 0A 09 09 09 nk[i]=0) DO.....
000090: 09 4F 6C 64 4C 69 6E 6B 5B 6A 5D 3A 3D 69 3B 0D .OldLink[j]:=i;.
0000A0: 0A 09 09 09 09 4E 65 77 4C 69 6E 6B 5B 69 5D 3A .....NewLink[i]:
0000B0: 3D 6A 3B 0D 0A 0D 0A 09 09 09 09 28 2A 20 6E 6F =j;........(* no
0000C0: 74 65 20 63 65 6E 74 72 61 6C 20 70 72 65 64 69 te central predi
0000D0: 63 61 74 65 20 73 74 69 6C 6C 20 73 61 74 69 73 cate still satis
0000E0: 66 69 65 64 2A 29 0D 0A 0D 0A 09 09 09 09 44 45 fied*)........DE
0000F0: 43 28 69 29 3B 0D 0A 09 09 09 09 44 45 43 28 6A C(i);......DEC(j
000100: 29 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 );......END;....
000110: 09 6A 3A 3D 4E 65 77 4C 69 6E 6B 5B 6B 5D 2B 31 .j:=NewLink[k]+1
000120: 3B 0D 0A 09 09 09 69 3A 3D 6B 2B 31 3B 0D 0A 0D ;.....i:=k+1;...
000130: 0A 09 09 09 28 2A 67 72 6F 77 20 66 6F 72 77 61 ....(*grow forwa
000140: 72 64 73 20 2D 20 28 73 6C 69 67 68 74 20 6F 70 rds - (slight op
000150: 74 69 6D 69 73 61 74 69 6F 6E 29 20 74 68 65 72 timisation) ther
000160: 65 20 69 73 20 6E 6F 20 6E 65 65 64 20 74 6F 0D e is no need to.
000170: 0A 09 09 09 20 20 63 68 65 63 6B 20 66 6F 72 20 .... check for
000180: 6E 6F 6E 7A 65 72 6F 20 6C 69 6E 6B 73 20 6F 6E nonzero links on
000190: 20 74 68 65 20 66 6F 72 77 61 72 64 20 70 61 73 the forward pas
0001A0: 73 20 73 69 6E 63 65 20 6E 6F 6E 2D 7A 65 72 6F s since non-zero
0001B0: 20 6C 69 6E 6B 73 0D 0A 09 09 09 20 20 3D 3E 4C links..... =>L
0001C0: 69 6E 65 73 20 6D 61 74 63 68 20 61 6E 64 20 61 ines match and a
0001D0: 72 65 20 75 6E 69 71 75 65 2C 20 61 6E 64 20 74 re unique, and t
0001E0: 68 65 20 62 61 63 6B 20 70 61 73 73 20 77 6F 75 he back pass wou
0001F0: 6C 64 20 62 65 20 65 6D 70 74 79 2A 29 0D 0A 0D ld be empty*)...
Size : 512 (Real : 512)
000000: 74 65 45 6F 6C 3B 0D 0A 09 45 4E 44 20 49 6E 73 teEol;...END Ins
000010: 65 72 74 65 64 3B 0D 0A 50 52 4F 43 45 44 55 52 erted;..PROCEDUR
000020: 45 20 4E 6F 43 68 61 6E 67 65 3B 0D 0A 42 45 47 E NoChange;..BEG
000030: 49 4E 0D 0A 09 47 65 74 4C 69 6E 65 28 4E 65 77 IN...GetLine(New
000040: 73 2C 6E 65 77 6C 69 6E 65 29 3B 0D 0A 09 47 65 s,newline);...Ge
000050: 74 4C 69 6E 65 28 4F 6C 64 73 2C 6F 6C 64 6C 69 tLine(Olds,oldli
000060: 6E 65 29 3B 09 0D 0A 09 50 72 69 6E 74 28 6E 65 ne);....Print(ne
000070: 77 6C 69 6E 65 29 3B 0D 0A 09 57 72 69 74 65 45 wline);...WriteE
000080: 6F 6C 0D 0A 09 45 4E 44 20 4E 6F 43 68 61 6E 67 ol...END NoChang
000090: 65 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 e;....PROCEDURE
0000A0: 42 6C 6F 63 6B 4D 6F 76 65 3B 0D 0A 56 41 52 20 BlockMove;..VAR
0000B0: 69 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 42 45 47 i:CARDINAL;..BEG
0000C0: 49 4E 0D 0A 09 46 4F 52 20 69 3A 3D 31 20 54 4F IN...FOR i:=1 TO
0000D0: 20 32 35 20 44 4F 20 57 72 69 74 65 43 68 61 72 25 DO WriteChar
0000E0: 28 4C 69 73 74 2C 27 2A 27 29 20 45 4E 44 3B 0D (List,'*') END;.
0000F0: 0A 09 50 72 69 6E 74 28 27 20 42 6C 6F 63 6B 20 ..Print(' Block
000100: 6D 6F 76 65 64 20 66 72 6F 6D 20 6C 69 6E 65 20 moved from line
000110: 27 29 3B 0D 0A 09 53 77 69 74 63 68 4F 75 74 53 ');...SwitchOutS
000120: 74 72 65 61 6D 28 4C 69 73 74 29 3B 0D 0A 09 57 tream(List);...W
000130: 72 69 74 65 43 61 72 64 28 4F 6C 64 4C 69 6E 6B riteCard(OldLink
000140: 5B 6E 65 77 69 6E 64 65 78 5D 2C 36 29 3B 0D 0A [newindex],6);..
000150: 09 50 6F 70 4F 75 74 53 74 72 65 61 6D 3B 0D 0A .PopOutStream;..
000160: 09 46 4F 52 20 69 3A 3D 32 35 2B 32 39 2B 31 20 .FOR i:=25+29+1
000170: 54 4F 20 37 39 20 44 4F 20 57 72 69 74 65 43 68 TO 79 DO WriteCh
000180: 61 72 28 4C 69 73 74 2C 27 2A 27 29 20 45 4E 44 ar(List,'*') END
000190: 3B 0D 0A 09 57 72 69 74 65 45 6F 6C 3B 0D 0A 09 ;...WriteEol;...
0001A0: 69 3A 3D 4F 6C 64 4C 69 6E 6B 5B 6E 65 77 69 6E i:=OldLink[newin
0001B0: 64 65 78 5D 3B 0D 0A 09 57 48 49 4C 45 20 28 6E dex];...WHILE (n
0001C0: 65 77 69 6E 64 65 78 3C 3D 4E 65 77 4C 65 6E 29 ewindex<=NewLen)
0001D0: 20 41 4E 44 20 28 69 3D 4F 6C 64 4C 69 6E 6B 5B AND (i=OldLink[
0001E0: 6E 65 77 69 6E 64 65 78 5D 29 20 44 4F 0D 0A 09 newindex]) DO...
0001F0: 09 47 65 74 4C 69 6E 65 28 4E 65 77 73 2C 6E 65 .GetLine(News,ne
Size : 512 (Real : 512)
000000: 0A 09 09 09 57 48 49 4C 45 20 28 6A 3C 3D 4E 65 ....WHILE (j<=Ne
000010: 77 4C 65 6E 29 20 41 4E 44 20 28 69 3C 3D 4F 6C wLen) AND (i<=Ol
000020: 64 4C 65 6E 29 20 41 4E 44 20 28 4F 6C 64 4C 69 dLen) AND (OldLi
000030: 6E 6B 5B 6A 2D 31 5D 3D 69 2D 31 29 20 0D 0A 09 nk[j-1]=i-1) ...
000040: 09 09 09 41 4E 44 20 28 4E 65 77 48 61 73 68 5B ...AND (NewHash[
000050: 6A 5D 3D 4F 6C 64 48 61 73 68 5B 69 5D 29 20 44 j]=OldHash[i]) D
000060: 4F 0D 0A 09 09 09 09 4F 6C 64 4C 69 6E 6B 5B 6A O......OldLink[j
000070: 5D 3A 3D 69 3B 0D 0A 09 09 09 09 4E 65 77 4C 69 ]:=i;......NewLi
000080: 6E 6B 5B 69 5D 3A 3D 6A 3B 0D 0A 0D 0A 09 09 09 nk[i]:=j;.......
000090: 09 28 2A 73 74 69 6C 6C 20 68 6F 6C 64 73 2A 29 .(*still holds*)
0000A0: 0D 0A 20 09 09 09 09 49 4E 43 28 69 29 3B 0D 0A .. ....INC(i);..
0000B0: 09 09 09 09 49 4E 43 28 6A 29 3B 0D 0A 09 09 09 ....INC(j);.....
0000C0: 09 45 4E 44 3B 0D 0A 09 09 09 6B 3A 3D 69 3B 0D .END;.....k:=i;.
0000D0: 0A 09 09 45 4C 53 45 09 49 4E 43 28 6B 29 0D 0A ...ELSE.INC(k)..
0000E0: 09 09 09 45 4E 44 20 28 2A 57 48 49 4C 45 20 6B ...END (*WHILE k
0000F0: 3C 3D 4F 6C 64 4C 65 6E 2A 29 3B 0D 0A 09 09 45 <=OldLen*);....E
000100: 4E 44 3B 0D 0A 0D 0A 09 28 2A 67 72 6F 77 20 66 ND;.....(*grow f
000110: 6F 72 77 61 72 64 73 20 66 72 6F 6D 20 62 65 67 orwards from beg
000120: 69 6E 6E 69 6E 67 20 6F 66 20 66 69 6C 65 73 2A inning of files*
000130: 29 0D 0A 0D 0A 09 69 3A 3D 31 3B 0D 0A 09 6A 3A ).....i:=1;...j:
000140: 3D 31 3B 0D 0A 09 57 48 49 4C 45 20 28 69 3C 3D =1;...WHILE (i<=
000150: 4F 6C 64 4C 65 6E 29 20 41 4E 44 20 28 6A 3C 3D OldLen) AND (j<=
000160: 4E 65 77 4C 65 6E 29 20 0D 0A 09 09 41 4E 44 20 NewLen) ....AND
000170: 28 4F 6C 64 48 61 73 68 5B 69 5D 3D 4E 65 77 48 (OldHash[i]=NewH
000180: 61 73 68 5B 6A 5D 29 20 0D 0A 09 09 41 4E 44 20 ash[j]) ....AND
000190: 28 4E 65 77 4C 69 6E 6B 5B 69 5D 3D 30 29 20 41 (NewLink[i]=0) A
0001A0: 4E 44 20 28 4F 6C 64 4C 69 6E 6B 5B 6A 5D 3D 30 ND (OldLink[j]=0
0001B0: 29 20 44 4F 0D 0A 0D 0A 09 09 28 2A 74 68 65 20 ) DO......(*the
0001C0: 6C 61 73 74 20 6C 69 6E 65 20 6F 66 20 74 68 65 last line of the
0001D0: 20 63 6F 6E 64 69 74 69 6F 6E 20 69 73 20 70 72 condition is pr
0001E0: 6F 62 61 62 6C 79 20 6E 6F 74 0D 0A 09 09 20 20 obably not....
0001F0: 6E 65 63 65 73 73 61 72 79 2C 20 62 75 74 20 61 necessary, but a
Size : 512 (Real : 512)
000000: 77 6C 69 6E 65 29 3B 0D 0A 09 09 50 72 69 6E 74 wline);....Print
000010: 28 6E 65 77 6C 69 6E 65 29 3B 0D 0A 09 09 57 72 (newline);....Wr
000020: 69 74 65 45 6F 6C 3B 0D 0A 09 09 49 4E 43 28 6E iteEol;....INC(n
000030: 65 77 69 6E 64 65 78 29 3B 0D 0A 09 09 49 4E 43 ewindex);....INC
000040: 28 69 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 46 (i);....END;...F
000050: 4F 52 20 69 3A 3D 31 20 54 4F 20 37 39 20 44 4F OR i:=1 TO 79 DO
000060: 20 57 72 69 74 65 43 68 61 72 28 4C 69 73 74 2C WriteChar(List,
000070: 27 2A 27 29 20 45 4E 44 3B 0D 0A 09 57 72 69 74 '*') END;...Writ
000080: 65 45 6F 6C 3B 0D 0A 09 45 4E 44 20 42 6C 6F 63 eEol;...END Bloc
000090: 6B 4D 6F 76 65 3B 0D 0A 0D 0A 42 45 47 49 4E 0D kMove;....BEGIN.
0000A0: 0A 09 0D 0A 09 6F 6C 64 69 6E 64 65 78 3A 3D 31 .....oldindex:=1
0000B0: 3B 09 28 2A 63 75 72 72 65 6E 74 20 6C 69 6E 65 ;.(*current line
0000C0: 20 69 6E 20 6F 6C 64 20 66 69 6C 65 2A 29 0D 0A in old file*)..
0000D0: 09 6E 65 77 69 6E 64 65 78 3A 3D 31 3B 09 28 2A .newindex:=1;.(*
0000E0: 63 75 72 72 65 6E 74 20 6C 69 6E 65 20 69 6E 20 current line in
0000F0: 6E 65 77 20 62 75 66 66 65 72 2A 29 0D 0A 0D 0A new buffer*)....
000100: 09 28 2A 09 43 61 75 74 69 6F 6E 3A 20 57 65 6C .(*.Caution: Wel
000110: 6C 20 63 6F 6D 6D 65 6E 74 65 64 20 63 6F 64 65 l commented code
000120: 20 61 68 65 61 64 0D 0A 09 09 09 20 50 72 6F 67 ahead..... Prog
000130: 72 61 6D 6D 65 72 20 70 72 6F 62 61 62 6C 79 20 rammer probably
000140: 64 69 64 6E 27 74 20 75 6E 64 65 72 73 74 61 6E didn't understan
000150: 64 20 77 68 61 74 20 68 65 20 77 61 73 20 64 6F d what he was do
000160: 69 6E 67 20 0D 0A 09 09 0D 0A 09 09 2A 29 0D 0A ing ........*)..
000170: 09 57 48 49 4C 45 20 28 6F 6C 64 69 6E 64 65 78 .WHILE (oldindex
000180: 3C 3D 4F 6C 64 4C 65 6E 29 20 4F 52 20 28 6E 65 <=OldLen) OR (ne
000190: 77 69 6E 64 65 78 3C 3D 4E 65 77 4C 65 6E 29 20 windex<=NewLen)
0001A0: 44 4F 0D 0A 09 09 28 2A 09 66 69 72 73 74 20 63 DO....(*.first c
0001B0: 68 65 63 6B 20 69 66 20 65 69 74 68 65 72 20 69 heck if either i
0001C0: 6E 64 65 78 20 69 73 20 6F 66 66 20 65 6E 64 0D ndex is off end.
0001D0: 0A 09 09 09 6F 66 20 66 69 6C 65 2A 29 0D 0A 09 ....of file*)...
0001E0: 0D 0A 09 09 49 46 20 6E 65 77 69 6E 64 65 78 3E ....IF newindex>
0001F0: 4E 65 77 4C 65 6E 20 54 48 45 4E 20 0D 0A 09 09 NewLen THEN ....
Size : 512 (Real : 512)
000000: 76 6F 69 64 73 20 77 6F 72 72 79 69 6E 67 20 61 voids worrying a
000010: 62 6F 75 74 20 70 61 74 68 6F 6C 6F 67 69 63 61 bout pathologica
000020: 6C 20 63 61 73 65 2A 29 0D 0A 0D 0A 09 09 4E 65 l case*)......Ne
000030: 77 4C 69 6E 6B 5B 69 5D 3A 3D 6A 3B 0D 0A 09 09 wLink[i]:=j;....
000040: 4F 6C 64 4C 69 6E 6B 5B 6A 5D 3A 3D 69 3B 0D 0A OldLink[j]:=i;..
000050: 09 09 49 4E 43 28 69 29 3B 0D 0A 09 09 49 4E 43 ..INC(i);....INC
000060: 28 6A 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 0D 0A (j);....END;....
000070: 09 28 2A 67 72 6F 77 20 62 61 63 6B 77 61 72 64 .(*grow backward
000080: 73 20 66 72 6F 6D 20 65 6E 64 20 6F 66 20 66 69 s from end of fi
000090: 6C 65 73 2A 29 0D 0A 09 69 3A 3D 4F 6C 64 4C 65 les*)...i:=OldLe
0000A0: 6E 3B 0D 0A 09 6A 3A 3D 4E 65 77 4C 65 6E 3B 0D n;...j:=NewLen;.
0000B0: 0A 09 57 48 49 4C 45 20 28 69 3E 30 29 20 41 4E ..WHILE (i>0) AN
0000C0: 44 20 28 6A 3E 30 29 20 0D 0A 09 09 41 4E 44 20 D (j>0) ....AND
0000D0: 28 4F 6C 64 48 61 73 68 5B 69 5D 3D 4E 65 77 48 (OldHash[i]=NewH
0000E0: 61 73 68 5B 6A 5D 29 0D 0A 09 09 41 4E 44 20 28 ash[j])....AND (
0000F0: 4E 65 77 4C 69 6E 6B 5B 69 5D 3D 30 29 20 41 4E NewLink[i]=0) AN
000100: 44 20 28 4F 6C 64 4C 69 6E 6B 5B 6A 5D 3D 30 29 D (OldLink[j]=0)
000110: 20 44 4F 0D 0A 09 09 4E 65 77 4C 69 6E 6B 5B 69 DO....NewLink[i
000120: 5D 3A 3D 6A 3B 0D 0A 09 09 4F 6C 64 4C 69 6E 6B ]:=j;....OldLink
000130: 5B 6A 5D 3A 3D 69 3B 0D 0A 09 09 44 45 43 28 69 [j]:=i;....DEC(i
000140: 29 3B 0D 0A 09 09 44 45 43 28 6A 29 3B 0D 0A 09 );....DEC(j);...
000150: 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 47 65 6E 65 .END;...END Gene
000160: 72 61 74 65 4C 69 6E 6B 73 3B 0D 0A 0D 0A 0D 0A rateLinks;......
000170: 50 52 4F 43 45 44 55 52 45 20 57 72 69 74 65 52 PROCEDURE WriteR
000180: 65 73 75 6C 74 73 3B 0D 0A 56 41 52 09 6F 6C 64 esults;..VAR.old
000190: 69 6E 64 65 78 2C 6E 65 77 69 6E 64 65 78 3A 43 index,newindex:C
0001A0: 41 52 44 49 4E 41 4C 3B 0D 0A 09 6F 6C 64 6C 69 ARDINAL;...oldli
0001B0: 6E 65 2C 6E 65 77 6C 69 6E 65 3A 41 52 52 41 59 ne,newline:ARRAY
0001C0: 20 5B 31 2E 2E 38 30 5D 20 4F 46 20 43 48 41 52 [1..80] OF CHAR
0001D0: 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 47 ;....PROCEDURE G
0001E0: 65 74 4C 69 6E 65 28 56 41 52 20 73 3A 53 54 52 etLine(VAR s:STR
0001F0: 45 41 4D 3B 56 41 52 20 6C 3A 41 52 52 41 59 20 EAM;VAR l:ARRAY
Size : 512 (Real : 512)
000000: 09 44 65 6C 65 74 65 64 3B 0D 0A 09 09 09 49 4E .Deleted;.....IN
000010: 43 28 6F 6C 64 69 6E 64 65 78 29 3B 0D 0A 09 09 C(oldindex);....
000020: 45 4C 53 49 46 20 6F 6C 64 69 6E 64 65 78 3E 4F ELSIF oldindex>O
000030: 6C 64 4C 65 6E 20 54 48 45 4E 0D 0A 09 09 09 49 ldLen THEN.....I
000040: 6E 73 65 72 74 65 64 3B 0D 0A 09 09 09 49 4E 43 nserted;.....INC
000050: 28 6E 65 77 69 6E 64 65 78 29 3B 0D 0A 09 09 45 (newindex);....E
000060: 4C 53 49 46 20 4E 65 77 4C 69 6E 6B 5B 6F 6C 64 LSIF NewLink[old
000070: 69 6E 64 65 78 5D 3D 30 20 54 48 45 4E 0D 0A 09 index]=0 THEN...
000080: 09 09 44 65 6C 65 74 65 64 3B 0D 0A 09 09 09 49 ..Deleted;.....I
000090: 4E 43 28 6F 6C 64 69 6E 64 65 78 29 3B 0D 0A 09 NC(oldindex);...
0000A0: 09 45 4C 53 49 46 20 4F 6C 64 4C 69 6E 6B 5B 6E .ELSIF OldLink[n
0000B0: 65 77 69 6E 64 65 78 5D 3D 30 20 54 48 45 4E 0D ewindex]=0 THEN.
0000C0: 0A 09 09 09 49 6E 73 65 72 74 65 64 3B 0D 0A 09 ....Inserted;...
0000D0: 09 09 49 4E 43 28 6E 65 77 69 6E 64 65 78 29 3B ..INC(newindex);
0000E0: 0D 0A 0D 0A 09 09 28 2A 09 69 66 20 70 6F 69 6E ......(*.if poin
0000F0: 74 65 72 73 20 6D 61 74 63 68 2C 20 6C 69 6E 65 ters match, line
000100: 20 69 73 20 75 6E 63 68 61 6E 67 65 64 0D 0A 09 is unchanged...
000110: 09 09 6F 72 20 69 66 20 61 20 70 6F 69 6E 74 65 ..or if a pointe
000120: 72 20 69 73 20 7A 65 72 6F 2C 20 6C 69 6E 65 20 r is zero, line
000130: 69 73 20 6E 65 77 20 6F 72 20 64 65 6C 65 74 65 is new or delete
000140: 64 2A 29 0D 0A 0D 0A 09 09 45 4C 53 49 46 20 28 d*)......ELSIF (
000150: 4E 65 77 4C 69 6E 6B 5B 6F 6C 64 69 6E 64 65 78 NewLink[oldindex
000160: 5D 3D 6E 65 77 69 6E 64 65 78 29 20 0D 0A 09 09 ]=newindex) ....
000170: 20 20 20 20 41 4E 44 20 28 4F 6C 64 4C 69 6E 6B AND (OldLink
000180: 5B 6E 65 77 69 6E 64 65 78 5D 3D 6F 6C 64 69 6E [newindex]=oldin
000190: 64 65 78 29 20 54 48 45 4E 0D 0A 09 09 09 4E 6F dex) THEN.....No
0001A0: 43 68 61 6E 67 65 3B 0D 0A 09 09 09 49 4E 43 28 Change;.....INC(
0001B0: 6F 6C 64 69 6E 64 65 78 29 3B 0D 0A 09 09 09 49 oldindex);.....I
0001C0: 4E 43 28 6E 65 77 69 6E 64 65 78 29 3B 0D 0A 0D NC(newindex);...
0001D0: 0A 0D 0A 28 2A 09 09 20 20 6E 6F 6E 65 20 6F 66 ...(*.. none of
0001E0: 20 74 68 65 20 61 62 6F 76 65 3A 20 70 6F 69 6E the above: poin
0001F0: 74 65 72 73 20 64 6F 6E 27 74 20 6D 61 74 63 68 ters don't match
Size : 512 (Real : 512)
000000: 4F 46 20 43 48 41 52 29 3B 0D 0A 42 45 47 49 4E OF CHAR);..BEGIN
000010: 0D 0A 09 53 77 69 74 63 68 49 6E 53 74 72 65 61 ...SwitchInStrea
000020: 6D 28 73 29 3B 0D 0A 09 52 65 61 64 4C 69 6E 65 m(s);...ReadLine
000030: 28 6C 29 3B 0D 0A 09 50 6F 70 49 6E 53 74 72 65 (l);...PopInStre
000040: 61 6D 3B 0D 0A 09 45 4E 44 20 47 65 74 4C 69 6E am;...END GetLin
000050: 65 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 e;....PROCEDURE
000060: 50 72 69 6E 74 28 61 3A 41 52 52 41 59 20 4F 46 Print(a:ARRAY OF
000070: 20 43 48 41 52 29 3B 0D 0A 0D 0A 28 2A 09 4F 75 CHAR);....(*.Ou
000080: 74 70 75 74 20 61 20 6C 69 6E 65 20 74 72 75 6E tput a line trun
000090: 63 61 74 69 6E 67 20 74 72 61 69 6C 69 6E 67 20 cating trailing
0000A0: 73 70 61 63 65 73 2A 29 0D 0A 0D 0A 56 41 52 20 spaces*)....VAR
0000B0: 09 69 2C 6A 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A .i,j:CARDINAL;..
0000C0: 42 45 47 49 4E 0D 0A 09 69 3A 3D 30 3B 0D 0A 09 BEGIN...i:=0;...
0000D0: 6A 3A 3D 30 3B 0D 0A 09 57 48 49 4C 45 20 28 69 j:=0;...WHILE (i
0000E0: 3C 3D 48 49 47 48 28 61 29 29 20 41 4E 44 20 28 <=HIGH(a)) AND (
0000F0: 61 5B 69 5D 3C 3E 30 78 29 20 44 4F 0D 0A 09 09 a[i]<>0x) DO....
000100: 49 46 20 61 5B 69 5D 3C 3E 27 20 27 20 54 48 45 IF a[i]<>' ' THE
000110: 4E 0D 0A 09 09 09 46 4F 52 20 6A 3A 3D 6A 20 54 N.....FOR j:=j T
000120: 4F 20 69 20 44 4F 20 57 72 69 74 65 43 68 61 72 O i DO WriteChar
000130: 28 4C 69 73 74 2C 61 5B 6A 5D 29 20 45 4E 44 3B (List,a[j]) END;
000140: 0D 0A 09 09 09 49 4E 43 28 6A 29 3B 0D 0A 09 09 .....INC(j);....
000150: 09 45 4E 44 3B 0D 0A 09 09 49 4E 43 28 69 29 3B .END;....INC(i);
000160: 0D 0A 09 09 45 4E 44 3B 0D 0A 09 0D 0A 09 45 4E ....END;......EN
000170: 44 20 50 72 69 6E 74 3B 0D 0A 0D 0A 50 52 4F 43 D Print;....PROC
000180: 45 44 55 52 45 20 57 72 69 74 65 45 6F 6C 3B 0D EDURE WriteEol;.
000190: 0A 42 45 47 49 4E 0D 0A 28 2A 09 64 65 62 75 67 .BEGIN..(*.debug
0001A0: 20 63 6F 64 65 20 63 6F 6D 6D 65 6E 74 65 64 20 code commented
0001B0: 6F 75 74 0D 0A 0D 0A 09 53 77 69 74 63 68 4F 75 out.....SwitchOu
0001C0: 74 53 74 72 65 61 6D 28 4C 69 73 74 29 3B 0D 0A tStream(List);..
0001D0: 09 57 72 69 74 65 43 61 72 64 28 6F 6C 64 69 6E .WriteCard(oldin
0001E0: 64 65 78 2C 36 29 3B 57 72 69 74 65 43 61 72 64 dex,6);WriteCard
0001F0: 28 4E 65 77 4C 69 6E 6B 5B 6F 6C 64 69 6E 64 65 (NewLink[oldinde
Size : 512 (Real : 512)
000000: 65 71 52 65 61 64 42 6C 6F 63 6B 28 49 6E 32 2C eqReadBlock(In2,
000010: 41 44 52 28 42 6C 6F 63 6B 32 29 2C 31 32 38 2C ADR(Block2),128,
000020: 72 65 70 6C 79 32 29 3B 0D 0A 09 09 57 72 69 74 reply2);....Writ
000030: 65 48 65 78 28 4C 6F 63 2C 34 29 3B 0D 0A 09 09 eHex(Loc,4);....
000040: 57 72 69 74 65 53 74 72 69 6E 67 28 30 64 78 29 WriteString(0dx)
000050: 3B 0D 0A 09 09 49 46 20 28 72 65 70 6C 79 31 3C ;....IF (reply1<
000060: 3E 31 32 38 29 20 4F 52 20 28 72 65 70 6C 79 32 >128) OR (reply2
000070: 3C 3E 31 32 38 29 20 54 48 45 4E 20 45 58 49 54 <>128) THEN EXIT
000080: 20 45 4E 44 3B 0D 0A 09 09 69 3A 3D 30 3B 0D 0A END;....i:=0;..
000090: 09 09 57 48 49 4C 45 20 28 69 3C 31 32 38 29 20 ..WHILE (i<128)
0000A0: 41 4E 44 20 28 42 6C 6F 63 6B 31 5B 69 5D 3D 42 AND (Block1[i]=B
0000B0: 6C 6F 63 6B 32 5B 69 5D 29 20 44 4F 20 49 4E 43 lock2[i]) DO INC
0000C0: 28 69 29 20 45 4E 44 3B 0D 0A 09 09 49 46 20 69 (i) END;....IF i
0000D0: 3C 31 32 38 20 54 48 45 4E 0D 0A 09 09 09 46 4F <128 THEN.....FO
0000E0: 52 20 69 3A 3D 30 20 54 4F 20 31 32 37 20 42 59 R i:=0 TO 127 BY
0000F0: 20 38 20 44 4F 0D 0A 09 09 09 09 57 72 69 74 65 8 DO......Write
000100: 48 65 78 28 4C 6F 63 2B 69 2C 34 29 3B 0D 0A 09 Hex(Loc+i,4);...
000110: 09 09 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 ...WriteString('
000120: 3A 27 29 3B 0D 0A 09 09 09 09 46 4F 52 20 6A 3A :');......FOR j:
000130: 3D 69 20 54 4F 20 69 2B 37 20 44 4F 0D 0A 09 09 =i TO i+7 DO....
000140: 09 09 09 57 72 69 74 65 48 65 78 28 42 6C 6F 63 ...WriteHex(Bloc
000150: 6B 31 5B 6A 5D 2C 32 29 3B 0D 0A 09 09 09 09 09 k1[j],2);.......
000160: 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 27 29 WriteString(' ')
000170: 3B 0D 0A 09 09 09 09 09 45 4E 44 3B 0D 0A 09 09 ;.......END;....
000180: 09 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 ..WriteString('
000190: 27 29 3B 0D 0A 09 09 09 09 46 4F 52 20 6A 3A 3D ');......FOR j:=
0001A0: 69 20 54 4F 20 69 2B 37 20 44 4F 0D 0A 09 09 09 i TO i+7 DO.....
0001B0: 09 09 57 72 69 74 65 48 65 78 28 42 6C 6F 63 6B ..WriteHex(Block
0001C0: 32 5B 6A 5D 2C 32 29 3B 0D 0A 09 09 09 09 09 57 2[j],2);.......W
0001D0: 72 69 74 65 53 74 72 69 6E 67 28 27 20 27 29 3B riteString(' ');
0001E0: 0D 0A 09 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 .......END;.....
0001F0: 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 09 09 45 .WriteLn;......E
Size : 512 (Real : 512)
000000: 69 6E 67 2A 29 0D 0A 0D 0A 09 52 65 73 65 74 28 ing*).....Reset(
000010: 4E 65 77 73 29 3B 0D 0A 09 52 65 73 65 74 28 4F News);...Reset(O
000020: 6C 64 73 29 3B 0D 0A 09 0D 0A 09 57 72 69 74 65 lds);......Write
000030: 52 65 73 75 6C 74 73 3B 0D 0A 09 44 69 73 63 6F Results;...Disco
000040: 6E 6E 65 63 74 28 4C 69 73 74 2C 54 52 55 45 29 nnect(List,TRUE)
000050: 3B 0D 0A 09 45 4E 44 20 43 6F 6D 70 61 72 65 2E ;...END Compare.
000060: 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000070: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000080: 0D 0A 09 09 09 09 49 46 20 45 78 70 61 6E 64 54 ......IF ExpandT
000090: 61 62 73 20 4F 52 20 4E 75 6D 62 65 72 4C 69 6E abs OR NumberLin
0000A0: 65 73 20 54 48 45 4E 20 57 72 69 74 65 28 27 20 es THEN Write('
0000B0: 27 29 20 45 4E 44 3B 0D 0A 09 09 09 09 55 4E 54 ') END;......UNT
0000C0: 49 4C 20 49 41 4E 44 28 43 68 61 72 73 57 72 69 IL IAND(CharsWri
0000D0: 74 74 65 6E 2C 37 29 3D 37 3B 0D 0A 09 09 09 49 tten,7)=7;.....I
0000E0: 46 20 4E 4F 54 20 28 45 78 70 61 6E 64 54 61 62 F NOT (ExpandTab
0000F0: 73 20 4F 52 20 4E 75 6D 62 65 72 4C 69 6E 65 73 s OR NumberLines
000100: 29 20 54 48 45 4E 20 57 72 69 74 65 28 54 41 42 ) THEN Write(TAB
000110: 29 20 45 4E 44 3B 0D 0A 09 09 09 7C 0D 0A 09 09 ) END;.....|....
000120: 30 78 2E 2E 31 66 78 3A 09 28 2A 6E 6F 6E 2D 70 0x..1fx:.(*non-p
000130: 72 69 6E 74 69 6E 67 20 63 68 61 72 61 63 74 65 rinting characte
000140: 72 73 2E 20 54 68 69 73 20 69 73 20 63 68 65 61 rs. This is chea
000150: 74 69 6E 67 0D 0A 09 09 09 09 20 20 73 6C 69 67 ting...... slig
000160: 68 74 6C 79 20 2D 20 73 68 6F 75 6C 64 20 65 78 htly - should ex
000170: 63 6C 75 64 65 20 43 52 20 4C 46 20 61 6E 64 20 clude CR LF and
000180: 54 41 42 2A 29 0D 0A 09 09 09 49 46 20 43 68 61 TAB*).....IF Cha
000190: 72 73 57 72 69 74 74 65 6E 3E 3D 28 50 61 67 65 rsWritten>=(Page
0001A0: 57 69 64 74 68 2D 34 29 20 54 48 45 4E 0D 0A 09 Width-4) THEN...
0001B0: 09 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 09 ...WriteLn;.....
0001C0: 09 43 6F 6E 74 69 6E 75 61 74 69 6F 6E 3A 3D 54 .Continuation:=T
0001D0: 52 55 45 3B 0D 0A 09 09 09 09 52 45 54 55 52 4E RUE;......RETURN
0001E0: 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 57 ......END;.....W
0001F0: 72 69 74 65 28 27 3C 27 29 3B 0D 0A 09 09 09 57 rite('<');.....W
Size : 512 (Real : 512)
000000: 6B 5B 6F 6C 64 69 6E 64 65 78 5D 3E 3D 6E 65 77 k[oldindex]>=new
000010: 69 6E 64 65 78 0D 0A 0D 0A 09 09 20 20 20 62 75 index...... bu
000020: 74 2C 20 69 66 20 4E 65 77 4C 69 6E 6B 5B 6F 6C t, if NewLink[ol
000030: 64 69 6E 64 65 78 5D 3D 6E 65 77 69 6E 64 65 78 dindex]=newindex
000040: 20 74 68 65 6E 20 0D 0A 09 09 09 20 20 20 4F 6C then ..... Ol
000050: 64 4C 69 6E 6B 5B 6E 65 77 69 6E 64 65 78 5D 3D dLink[newindex]=
000060: 4F 6C 64 4C 69 6E 6B 5B 4E 65 77 4C 69 6E 6B 5B OldLink[NewLink[
000070: 6F 6C 64 69 6E 64 65 78 5D 5D 3D 6E 65 77 6C 69 oldindex]]=newli
000080: 6E 6B 0D 0A 09 09 09 77 68 69 63 68 20 69 73 20 nk.....which is
000090: 6E 6F 74 20 74 72 75 65 20 28 73 69 6E 63 65 20 not true (since
0000A0: 74 68 65 20 63 72 6F 73 73 2D 6C 69 6E 6B 65 64 the cross-linked
0000B0: 20 63 61 73 65 20 77 61 73 20 68 61 6E 64 6C 65 case was handle
0000C0: 64 0D 0A 09 09 09 65 61 72 6C 69 65 72 29 0D 0A d.....earlier)..
0000D0: 0D 0A 09 09 20 20 48 65 6E 63 65 20 4E 65 77 4C .... Hence NewL
0000E0: 69 6E 6B 5B 6F 6C 64 69 6E 64 65 78 5D 3E 6E 65 ink[oldindex]>ne
0000F0: 77 69 6E 64 65 78 20 61 6E 64 20 77 65 20 63 61 windex and we ca
000100: 6E 20 6C 65 61 76 65 20 74 68 65 20 6C 69 6E 65 n leave the line
000110: 20 74 69 6C 6C 20 6C 61 74 65 72 0D 0A 0D 0A 09 till later.....
000120: 09 20 20 57 65 20 6D 75 73 74 20 74 68 65 72 65 . We must there
000130: 66 6F 72 65 20 64 6F 20 73 6F 6D 65 74 68 69 6E fore do somethin
000140: 67 20 77 69 74 68 20 74 68 65 20 6E 65 77 20 6C g with the new l
000150: 69 6E 65 20 2D 20 69 74 20 69 73 20 74 68 65 0D ine - it is the.
000160: 0A 09 09 20 20 73 74 61 72 74 20 6F 66 20 61 20 ... start of a
000170: 6D 6F 76 65 64 20 62 6C 6F 63 6B 0D 0A 2A 29 0D moved block..*).
000180: 0A 20 09 09 45 4C 53 45 0D 0A 09 09 09 42 6C 6F . ..ELSE.....Blo
000190: 63 6B 4D 6F 76 65 3B 09 28 2A 69 6E 63 20 6F 66 ckMove;.(*inc of
0001A0: 20 6E 65 77 69 6E 64 65 78 20 64 6F 6E 65 20 69 newindex done i
0001B0: 6E 20 62 6C 6F 63 6B 6D 6F 76 65 2A 29 0D 0A 09 n blockmove*)...
0001C0: 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 28 2A ..END;....END;(*
0001D0: 4C 4F 4F 50 2A 29 0D 0A 09 45 4E 44 20 57 72 69 LOOP*)...END Wri
0001E0: 74 65 52 65 73 75 6C 74 73 3B 0D 0A 0D 0A 56 41 teResults;....VA
0001F0: 52 09 50 61 72 61 6D 3A 41 52 52 41 59 20 5B 30 R.Param:ARRAY [0
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: 2E 2E 32 5D 20 4F 46 20 50 61 72 61 6D 65 74 65 ..2] OF Paramete
000010: 72 3B 0D 0A 09 43 6F 75 6E 74 3A 49 4E 54 45 47 r;...Count:INTEG
000020: 45 52 3B 0D 0A 09 0D 0A 50 52 4F 43 45 44 55 52 ER;.....PROCEDUR
000030: 45 20 4F 70 65 6E 49 6E 70 75 74 28 56 41 52 20 E OpenInput(VAR
000040: 73 3A 53 54 52 45 41 4D 3B 56 41 52 20 66 3A 46 s:STREAM;VAR f:F
000050: 49 4C 45 3B 70 61 72 61 6D 3A 50 61 72 61 6D 65 ILE;param:Parame
000060: 74 65 72 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 4C ter);..BEGIN...L
000070: 6F 6F 6B 75 70 28 66 2C 46 69 6C 65 4E 61 6D 65 ookup(f,FileName
000080: 28 70 61 72 61 6D 5E 2E 43 68 61 72 73 29 2C 72 (param^.Chars),r
000090: 65 70 6C 79 29 3B 0D 0A 09 49 46 20 72 65 70 6C eply);...IF repl
0000A0: 79 3C 30 20 54 48 45 4E 0D 0A 09 09 57 72 69 74 y<0 THEN....Writ
0000B0: 65 53 74 72 69 6E 67 28 27 20 43 6F 75 6C 64 20 eString(' Could
0000C0: 6E 6F 74 20 6F 70 65 6E 20 27 29 3B 0D 0A 09 09 not open ');....
0000D0: 57 72 69 74 65 53 74 72 69 6E 67 28 70 61 72 61 WriteString(para
0000E0: 6D 5E 2E 43 68 61 72 73 29 3B 0D 0A 09 09 57 72 m^.Chars);....Wr
0000F0: 69 74 65 4C 6E 3B 0D 0A 09 09 48 41 4C 54 3B 0D iteLn;....HALT;.
000100: 0A 09 09 45 4E 44 3B 0D 0A 09 43 6F 6E 6E 65 63 ...END;...Connec
000110: 74 28 73 2C 66 2C 69 6E 70 75 74 29 3B 0D 0A 09 t(s,f,input);...
000120: 45 4E 44 20 4F 70 65 6E 49 6E 70 75 74 3B 0D 0A END OpenInput;..
000130: 50 52 4F 43 45 44 55 52 45 20 4F 70 65 6E 46 69 PROCEDURE OpenFi
000140: 6C 65 73 3B 0D 0A 42 45 47 49 4E 0D 0A 0D 0A 09 les;..BEGIN.....
000150: 28 2A 09 49 6E 70 75 74 20 74 68 65 20 70 61 72 (*.Input the par
000160: 61 6D 65 74 65 72 73 2C 20 63 6F 6E 6E 65 63 74 ameters, connect
000170: 20 74 68 65 20 66 69 6C 65 73 20 74 6F 20 73 74 the files to st
000180: 72 65 61 6D 73 2A 29 0D 0A 0D 0A 09 47 65 74 50 reams*).....GetP
000190: 61 72 61 6D 73 28 50 61 72 61 6D 2C 43 6F 75 6E arams(Param,Coun
0001A0: 74 29 3B 0D 0A 0D 0A 09 28 2A 09 49 66 20 6C 65 t);.....(*.If le
0001B0: 73 73 20 74 68 61 6E 20 32 20 70 61 72 61 6D 65 ss than 2 parame
0001C0: 74 65 72 73 2C 20 67 69 76 65 20 75 73 61 67 65 ters, give usage
0001D0: 20 61 6E 64 20 65 78 69 74 2A 29 0D 0A 0D 0A 09 and exit*).....
0001E0: 49 46 20 43 6F 75 6E 74 3C 32 20 54 48 45 4E 20 IF Count<2 THEN
0001F0: 55 73 61 67 65 20 45 4E 44 3B 0D 0A 0D 0A 09 28 Usage END;.....(
Size : 512 (Real : 512)
000000: 4D 4F 44 55 4C 45 20 43 6F 6D 70 42 69 6E 3B 0D MODULE CompBin;.
000010: 0A 0D 0A 28 2A 09 43 6F 6D 70 61 72 65 20 74 77 ...(*.Compare tw
000020: 6F 20 62 69 6E 61 72 79 20 66 69 6C 65 73 20 2A o binary files *
000030: 29 0D 0A 0D 0A 46 52 4F 4D 09 54 65 72 6D 69 6E )....FROM.Termin
000040: 61 6C 20 49 4D 50 4F 52 54 20 57 72 69 74 65 53 al IMPORT WriteS
000050: 74 72 69 6E 67 2C 57 72 69 74 65 4C 6E 3B 0D 0A tring,WriteLn;..
000060: 46 52 4F 4D 09 53 6D 61 6C 6C 49 4F 20 20 49 4D FROM.SmallIO IM
000070: 50 4F 52 54 20 57 72 69 74 65 48 65 78 3B 0D 0A PORT WriteHex;..
000080: 46 52 4F 4D 09 53 74 72 65 61 6D 73 20 49 4D 50 FROM.Streams IMP
000090: 4F 52 54 20 44 69 72 65 63 74 69 6F 6E 3B 0D 0A ORT Direction;..
0000A0: 46 52 4F 4D 09 51 75 69 63 6B 53 74 72 20 49 4D FROM.QuickStr IM
0000B0: 50 4F 52 54 20 53 74 72 65 61 6D 52 65 63 6F 72 PORT StreamRecor
0000C0: 64 2C 4F 70 65 6E 53 74 72 65 61 6D 73 2C 4F 70 d,OpenStreams,Op
0000D0: 74 69 6F 6E 73 53 65 74 3B 0D 0A 46 52 4F 4D 09 tionsSet;..FROM.
0000E0: 53 59 53 54 45 4D 20 20 20 49 4D 50 4F 52 54 20 SYSTEM IMPORT
0000F0: 41 44 52 2C 42 59 54 45 3B 0D 0A 46 52 4F 4D 09 ADR,BYTE;..FROM.
000100: 46 69 6C 65 73 20 49 4D 50 4F 52 54 20 46 49 4C Files IMPORT FIL
000110: 45 2C 53 65 71 52 65 61 64 42 6C 6F 63 6B 3B 0D E,SeqReadBlock;.
000120: 0A 56 41 52 09 49 6E 31 2C 49 6E 32 3A 46 49 4C .VAR.In1,In2:FIL
000130: 45 3B 0D 0A 09 42 6C 6F 63 6B 31 2C 42 6C 6F 63 E;...Block1,Bloc
000140: 6B 32 3A 41 52 52 41 59 20 5B 30 2E 2E 31 32 37 k2:ARRAY [0..127
000150: 5D 20 4F 46 20 42 59 54 45 3B 0D 0A 09 72 65 70 ] OF BYTE;...rep
000160: 6C 79 31 2C 72 65 70 6C 79 32 3A 49 4E 54 45 47 ly1,reply2:INTEG
000170: 45 52 3B 0D 0A 09 4C 6F 63 3A 43 41 52 44 49 4E ER;...Loc:CARDIN
000180: 41 4C 3B 0D 0A 09 69 2C 6A 3A 43 41 52 44 49 4E AL;...i,j:CARDIN
000190: 41 4C 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 56 AL;..PROCEDURE V
0001A0: 65 72 79 51 75 69 63 6B 28 29 3A 42 4F 4F 4C 45 eryQuick():BOOLE
0001B0: 41 4E 3B 0D 0A 0D 0A 28 2A 09 4F 70 65 6E 20 61 AN;....(*.Open a
0001C0: 20 73 74 72 65 61 6D 20 66 6F 72 20 69 6E 70 75 stream for inpu
0001D0: 74 20 61 6E 64 20 61 20 73 74 72 65 61 6D 20 66 t and a stream f
0001E0: 6F 72 20 6F 75 74 70 75 74 20 2A 29 0D 0A 56 41 or output *)..VA
0001F0: 52 09 53 3A 41 52 52 41 59 5B 31 2E 2E 32 5D 20 R.S:ARRAY[1..2]
Size : 512 (Real : 512)
000000: 2A 09 49 66 20 33 20 70 61 72 61 6D 65 74 65 72 *.If 3 parameter
000010: 73 2C 20 74 68 69 72 64 20 70 61 72 61 6D 65 74 s, third paramet
000020: 65 72 20 69 73 20 66 69 6C 65 20 74 6F 20 72 65 er is file to re
000030: 63 65 69 76 65 20 6F 75 74 70 75 74 0D 0A 09 09 ceive output....
000040: 6F 74 68 65 72 77 69 73 65 2C 20 61 74 74 61 63 otherwise, attac
000050: 68 20 6F 75 74 70 75 74 20 74 6F 20 74 68 65 20 h output to the
000060: 70 72 69 6E 74 65 72 20 28 4C 53 54 3A 29 0D 0A printer (LST:)..
000070: 09 2A 29 0D 0A 0D 0A 09 49 46 20 43 6F 75 6E 74 .*).....IF Count
000080: 3D 33 20 54 48 45 4E 0D 0A 09 09 43 72 65 61 74 =3 THEN....Creat
000090: 65 28 4C 69 73 74 46 2C 46 69 6C 65 4E 61 6D 65 e(ListF,FileName
0000A0: 28 50 61 72 61 6D 5B 43 6F 75 6E 74 2D 31 5D 5E (Param[Count-1]^
0000B0: 2E 43 68 61 72 73 29 2C 72 65 70 6C 79 29 3B 0D .Chars),reply);.
0000C0: 0A 09 09 49 46 20 72 65 70 6C 79 3C 3E 30 20 54 ...IF reply<>0 T
0000D0: 48 45 4E 0D 0A 09 09 09 57 72 69 74 65 53 74 72 HEN.....WriteStr
0000E0: 69 6E 67 28 27 20 43 6F 75 6C 64 20 6E 6F 74 20 ing(' Could not
0000F0: 63 72 65 61 74 65 20 6C 69 73 74 20 66 69 6C 65 create list file
000100: 27 29 3B 0D 0A 09 09 09 57 72 69 74 65 4C 6E 3B ');.....WriteLn;
000110: 0D 0A 09 09 09 48 41 4C 54 3B 0D 0A 09 09 09 45 .....HALT;.....E
000120: 4E 44 3B 0D 0A 09 45 4C 53 45 0D 0A 09 09 43 72 ND;...ELSE....Cr
000130: 65 61 74 65 28 4C 69 73 74 46 2C 27 4C 53 54 3A eate(ListF,'LST:
000140: 27 2C 72 65 70 6C 79 29 3B 0D 0A 09 09 45 4E 44 ',reply);....END
000150: 3B 0D 0A 09 43 6F 6E 6E 65 63 74 28 4C 69 73 74 ;...Connect(List
000160: 2C 4C 69 73 74 46 2C 6F 75 74 70 75 74 29 3B 0D ,ListF,output);.
000170: 0A 0D 0A 09 28 2A 09 4F 70 65 6E 20 74 68 65 20 ....(*.Open the
000180: 66 69 6C 65 73 20 74 6F 20 62 65 20 63 6F 6D 70 files to be comp
000190: 61 72 65 64 09 2A 29 0D 0A 09 0D 0A 09 4F 70 65 ared.*)......Ope
0001A0: 6E 49 6E 70 75 74 28 4F 6C 64 73 2C 4F 6C 64 66 nInput(Olds,Oldf
0001B0: 2C 50 61 72 61 6D 5B 30 5D 29 3B 0D 0A 09 4F 70 ,Param[0]);...Op
0001C0: 65 6E 49 6E 70 75 74 28 4E 65 77 73 2C 4E 65 77 enInput(News,New
0001D0: 66 2C 50 61 72 61 6D 5B 31 5D 29 3B 09 0D 0A 09 f,Param[1]);....
0001E0: 45 4E 44 20 4F 70 65 6E 46 69 6C 65 73 3B 0D 0A END OpenFiles;..
0001F0: 0D 0A 50 52 4F 43 45 44 55 52 45 20 52 65 61 64 ..PROCEDURE Read
Size : 512 (Real : 512)
000000: 4F 46 20 53 74 72 65 61 6D 52 65 63 6F 72 64 3B OF StreamRecord;
000010: 0D 0A 09 6F 3A 4F 70 74 69 6F 6E 73 53 65 74 3B ...o:OptionsSet;
000020: 0D 0A 42 45 47 49 4E 0D 0A 09 57 49 54 48 20 53 ..BEGIN...WITH S
000030: 5B 31 5D 20 44 4F 0D 0A 09 09 49 73 53 74 72 65 [1] DO....IsStre
000040: 61 6D 3A 3D 46 41 4C 53 45 3B 0D 0A 09 09 44 69 am:=FALSE;....Di
000050: 72 3A 3D 69 6E 70 75 74 3B 0D 0A 09 09 4C 6F 6F r:=input;....Loo
000060: 6B 75 70 46 69 72 73 74 3A 3D 46 41 4C 53 45 3B kupFirst:=FALSE;
000070: 0D 0A 09 09 4D 75 73 74 53 75 70 70 6C 79 3A 3D ....MustSupply:=
000080: 46 41 4C 53 45 3B 0D 0A 09 09 46 69 6C 65 3A 3D FALSE;....File:=
000090: 41 44 52 28 49 6E 31 29 3B 0D 0A 09 09 45 4E 44 ADR(In1);....END
0000A0: 3B 0D 0A 09 57 49 54 48 20 53 5B 32 5D 20 44 4F ;...WITH S[2] DO
0000B0: 0D 0A 09 09 49 73 53 74 72 65 61 6D 3A 3D 46 41 ....IsStream:=FA
0000C0: 4C 53 45 3B 0D 0A 09 09 44 65 66 61 75 6C 74 4E LSE;....DefaultN
0000D0: 61 6D 65 3A 3D 27 43 4F 4E 3A 27 3B 0D 0A 09 09 ame:='CON:';....
0000E0: 44 69 72 3A 3D 69 6E 70 75 74 3B 0D 0A 09 09 4C Dir:=input;....L
0000F0: 6F 6F 6B 75 70 46 69 72 73 74 3A 3D 46 41 4C 53 ookupFirst:=FALS
000100: 45 3B 0D 0A 09 09 4D 75 73 74 53 75 70 70 6C 79 E;....MustSupply
000110: 3A 3D 54 52 55 45 3B 0D 0A 09 09 46 69 6C 65 3A :=TRUE;....File:
000120: 3D 41 44 52 28 49 6E 32 29 3B 0D 0A 09 09 45 4E =ADR(In2);....EN
000130: 44 3B 0D 0A 09 52 45 54 55 52 4E 20 4F 70 65 6E D;...RETURN Open
000140: 53 74 72 65 61 6D 73 28 53 2C 6F 29 3B 0D 0A 09 Streams(S,o);...
000150: 45 4E 44 20 56 65 72 79 51 75 69 63 6B 3B 0D 0A END VeryQuick;..
000160: 42 45 47 49 4E 0D 0A 09 49 46 20 20 56 65 72 79 BEGIN...IF Very
000170: 51 75 69 63 6B 28 29 20 54 48 45 4E 0D 0A 09 09 Quick() THEN....
000180: 57 72 69 74 65 53 74 72 69 6E 67 28 27 46 69 6C WriteString('Fil
000190: 65 73 20 6E 6F 74 20 66 6F 75 6E 64 20 27 29 3B es not found ');
0001A0: 0D 0A 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 ....WriteLn;....
0001B0: 48 41 4C 54 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 HALT;....END;...
0001C0: 4C 6F 63 3A 3D 30 3B 0D 0A 09 4C 4F 4F 50 0D 0A Loc:=0;...LOOP..
0001D0: 09 09 53 65 71 52 65 61 64 42 6C 6F 63 6B 28 49 ..SeqReadBlock(I
0001E0: 6E 31 2C 41 44 52 28 42 6C 6F 63 6B 31 29 2C 31 n1,ADR(Block1),1
0001F0: 32 38 2C 72 65 70 6C 79 31 29 3B 0D 0A 09 09 53 28,reply1);....S
Size : 512 (Real : 512)
000000: 49 6E 70 75 74 46 69 6C 65 73 3B 0D 0A 42 45 47 InputFiles;..BEG
000010: 49 4E 0D 0A 0D 0A 09 57 72 69 74 65 53 74 72 69 IN.....WriteStri
000020: 6E 67 28 27 20 52 65 61 64 69 6E 67 20 6F 6C 64 ng(' Reading old
000030: 20 66 69 6C 65 20 27 29 3B 0D 0A 09 4F 6C 64 4C file ');...OldL
000040: 65 6E 3A 3D 52 65 61 64 53 74 72 65 61 6D 28 4F en:=ReadStream(O
000050: 6C 64 73 2C 4F 6C 64 48 61 73 68 29 3B 0D 0A 09 lds,OldHash);...
000060: 57 72 69 74 65 43 61 72 64 28 4F 6C 64 4C 65 6E WriteCard(OldLen
000070: 2C 35 29 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 ,5);...WriteStri
000080: 6E 67 28 27 20 6C 69 6E 65 73 20 66 6F 75 6E 64 ng(' lines found
000090: 27 29 3B 57 72 69 74 65 4C 6E 3B 0D 0A 0D 0A 09 ');WriteLn;.....
0000A0: 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 52 65 WriteString(' Re
0000B0: 61 64 69 6E 67 20 6E 65 77 20 66 69 6C 65 20 27 ading new file '
0000C0: 29 3B 0D 0A 09 4E 65 77 4C 65 6E 3A 3D 52 65 61 );...NewLen:=Rea
0000D0: 64 53 74 72 65 61 6D 28 4E 65 77 73 2C 4E 65 77 dStream(News,New
0000E0: 48 61 73 68 29 3B 0D 0A 09 57 72 69 74 65 43 61 Hash);...WriteCa
0000F0: 72 64 28 4E 65 77 4C 65 6E 2C 35 29 3B 0D 0A 09 rd(NewLen,5);...
000100: 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 6C 69 WriteString(' li
000110: 6E 65 73 20 66 6F 75 6E 64 27 29 3B 57 72 69 74 nes found');Writ
000120: 65 4C 6E 3B 0D 0A 09 45 4E 44 20 52 65 61 64 49 eLn;...END ReadI
000130: 6E 70 75 74 46 69 6C 65 73 3B 0D 0A 0D 0A 42 45 nputFiles;....BE
000140: 47 49 4E 09 28 2A 6D 61 69 6E 20 70 72 6F 67 72 GIN.(*main progr
000150: 61 6D 2A 29 0D 0A 0D 0A 09 4F 70 65 6E 46 69 6C am*).....OpenFil
000160: 65 73 3B 0D 0A 09 52 65 61 64 49 6E 70 75 74 46 es;...ReadInputF
000170: 69 6C 65 73 3B 0D 0A 0D 0A 09 57 72 69 74 65 53 iles;.....WriteS
000180: 74 72 69 6E 67 28 27 20 47 65 6E 65 72 61 74 69 tring(' Generati
000190: 6E 67 20 63 72 6F 73 73 20 6C 69 6E 6B 73 27 29 ng cross links')
0001A0: 3B 57 72 69 74 65 4C 6E 3B 0D 0A 09 47 65 6E 65 ;WriteLn;...Gene
0001B0: 72 61 74 65 4C 69 6E 6B 73 3B 0D 0A 09 57 72 69 rateLinks;...Wri
0001C0: 74 65 53 74 72 69 6E 67 28 27 20 4C 69 73 74 69 teString(' Listi
0001D0: 6E 67 27 29 3B 57 72 69 74 65 4C 6E 3B 0D 0A 0D ng');WriteLn;...
0001E0: 0A 09 28 2A 72 65 70 6F 73 69 74 69 6F 6E 20 73 ..(*reposition s
0001F0: 74 72 65 61 6D 73 20 74 6F 20 62 65 67 69 6E 6E treams to beginn
Size : 512 (Real : 512)
000000: 4E 44 3B 0D 0A 09 09 45 4E 44 3B 28 2A 57 49 54 ND;....END;(*WIT
000010: 48 2A 29 0D 0A 09 45 4E 44 20 43 72 61 63 6B 46 H*)...END CrackF
000020: 69 6C 65 4E 61 6D 65 3B 0D 0A 09 0D 0A 50 52 4F ileName;.....PRO
000030: 43 45 44 55 52 45 20 55 73 61 67 65 3B 0D 0A 42 CEDURE Usage;..B
000040: 45 47 49 4E 0D 0A 09 57 72 69 74 65 4C 6E 3B 0D EGIN...WriteLn;.
000050: 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 55 ..WriteString('U
000060: 73 61 67 65 20 69 73 3A 20 20 20 43 4F 4D 50 44 sage is: COMPD
000070: 49 52 20 77 69 6C 64 20 63 61 72 64 20 66 69 6C IR wild card fil
000080: 65 20 6E 61 6D 65 27 29 3B 0D 0A 09 57 72 69 74 e name');...Writ
000090: 65 53 74 72 69 6E 67 28 27 2C 20 77 69 6C 64 20 eString(', wild
0000A0: 63 61 72 64 20 66 69 6C 65 20 6E 61 6D 65 20 5B card file name [
0000B0: 2C 20 6C 69 73 74 20 66 69 6C 65 5D 20 5B 2F 6F , list file] [/o
0000C0: 70 74 69 6F 6E 73 5D 27 29 3B 0D 0A 09 57 72 69 ptions]');...Wri
0000D0: 74 65 4C 6E 3B 57 72 69 74 65 4C 6E 3B 0D 0A 09 teLn;WriteLn;...
0000E0: 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 4F 70 WriteString(' Op
0000F0: 74 69 6F 6E 73 20 61 72 65 3A 20 20 27 29 3B 57 tions are: ');W
000100: 72 69 74 65 4C 6E 3B 0D 0A 09 57 72 69 74 65 53 riteLn;...WriteS
000110: 74 72 69 6E 67 28 27 09 09 54 09 63 6F 6D 70 61 tring('..T.compa
000120: 72 65 20 6F 6E 6C 79 20 66 69 6C 65 20 74 79 70 re only file typ
000130: 65 20 27 29 3B 57 72 69 74 65 4C 6E 3B 0D 0A 09 e ');WriteLn;...
000140: 57 72 69 74 65 53 74 72 69 6E 67 28 27 09 09 4E WriteString('..N
000150: 09 63 6F 6D 70 61 72 65 20 6F 6E 6C 79 20 66 69 .compare only fi
000160: 6C 65 20 6E 61 6D 65 27 29 3B 57 72 69 74 65 4C le name');WriteL
000170: 6E 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 n;...WriteString
000180: 28 27 09 09 43 09 63 6F 6D 70 61 72 65 20 63 6F ('..C.compare co
000190: 6E 74 65 6E 74 73 20 6F 66 20 6D 61 74 63 68 69 ntents of matchi
0001A0: 6E 67 20 66 69 6C 65 73 27 29 3B 57 72 69 74 65 ng files');Write
0001B0: 4C 6E 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E Ln;...WriteStrin
0001C0: 67 28 27 09 09 45 09 4F 75 74 70 75 74 20 66 69 g('..E.Output fi
0001D0: 6C 65 20 6E 61 6D 65 73 20 77 68 69 63 68 20 6D le names which m
0001E0: 61 74 63 68 20 74 6F 20 6C 69 73 74 20 66 69 6C atch to list fil
0001F0: 65 27 29 3B 57 72 69 74 65 4C 6E 3B 0D 0A 09 57 e');WriteLn;...W
Size : 512 (Real : 512)
000000: 74 6F 72 79 20 70 75 72 70 6F 73 65 73 2E 20 54 tory purposes. T
000010: 68 65 20 70 72 6F 67 72 61 6D 20 69 73 20 77 72 he program is wr
000020: 69 74 74 65 6E 20 69 6E 20 0D 0A 09 46 54 4C 20 itten in ...FTL
000030: 4D 6F 64 75 6C 61 2D 32 2E 0D 0A 09 2A 29 0D 0A Modula-2....*)..
000040: 0D 0A 46 52 4F 4D 20 09 53 59 53 54 45 4D 20 09 ..FROM .SYSTEM .
000050: 09 49 4D 50 4F 52 54 20 41 44 44 52 45 53 53 2C .IMPORT ADDRESS,
000060: 41 44 52 2C 54 53 49 5A 45 3B 0D 0A 46 52 4F 4D ADR,TSIZE;..FROM
000070: 20 09 43 6F 6D 6D 61 6E 64 20 09 49 4D 50 4F 52 .Command .IMPOR
000080: 54 20 50 61 72 61 6D 65 74 65 72 2C 50 61 72 63 T Parameter,Parc
000090: 6C 61 73 73 2C 47 65 74 50 61 72 61 6D 73 3B 0D lass,GetParams;.
0000A0: 0A 46 52 4F 4D 20 09 54 65 72 6D 69 6E 61 6C 09 .FROM .Terminal.
0000B0: 49 4D 50 4F 52 54 20 57 72 69 74 65 53 74 72 69 IMPORT WriteStri
0000C0: 6E 67 2C 57 72 69 74 65 4C 6E 2C 57 72 69 74 65 ng,WriteLn,Write
0000D0: 3B 0D 0A 46 52 4F 4D 20 09 53 6F 72 74 20 09 09 ;..FROM .Sort ..
0000E0: 49 4D 50 4F 52 54 20 53 6F 72 74 52 65 63 6F 72 IMPORT SortRecor
0000F0: 64 73 3B 0D 0A 46 52 4F 4D 09 46 69 6C 65 73 20 ds;..FROM.Files
000100: 09 09 49 4D 50 4F 52 54 20 46 69 6C 65 4E 61 6D ..IMPORT FileNam
000110: 65 2C 46 49 4C 45 2C 43 72 65 61 74 65 3B 0D 0A e,FILE,Create;..
000120: 46 52 4F 4D 09 47 65 74 46 69 6C 65 73 09 49 4D FROM.GetFiles.IM
000130: 50 4F 52 54 20 47 65 74 4E 61 6D 65 73 3B 0D 0A PORT GetNames;..
000140: 46 52 4F 4D 09 53 74 72 69 6E 67 73 09 09 49 4D FROM.Strings..IM
000150: 50 4F 52 54 20 4C 65 6E 67 74 68 3B 0D 0A 46 52 PORT Length;..FR
000160: 4F 4D 09 53 74 72 65 61 6D 73 09 09 49 4D 50 4F OM.Streams..IMPO
000170: 52 54 20 53 54 52 45 41 4D 2C 43 6F 6E 6E 65 63 RT STREAM,Connec
000180: 74 2C 44 69 73 63 6F 6E 6E 65 63 74 2C 57 72 69 t,Disconnect,Wri
000190: 74 65 43 68 61 72 2C 44 69 72 65 63 74 69 6F 6E teChar,Direction
0001A0: 3B 0D 0A 49 4D 50 4F 52 54 09 49 6E 4F 75 74 3B ;..IMPORT.InOut;
0001B0: 0D 0A 46 52 4F 4D 09 46 69 6C 65 4F 70 73 09 09 ..FROM.FileOps..
0001C0: 49 4D 50 4F 52 54 20 46 69 6C 65 43 6F 6D 70 3B IMPORT FileComp;
0001D0: 0D 0A 43 4F 4E 53 54 09 4D 61 78 46 69 6C 65 73 ..CONST.MaxFiles
0001E0: 3D 35 31 32 3B 09 28 2A 6D 61 78 20 66 69 6C 65 =512;.(*max file
0001F0: 73 20 74 6F 20 62 65 20 6D 61 74 63 68 65 64 2A s to be matched*
Size : 512 (Real : 512)
000000: 4E 44 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 ND;.....END;....
000010: 4C 6F 63 3A 3D 4C 6F 63 2B 31 32 38 3B 0D 0A 09 Loc:=Loc+128;...
000020: 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 43 6F 6D 70 .END;...END Comp
000030: 42 69 6E 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A Bin.............
000040: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000050: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000060: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000070: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000080: 65 65 6E 20 70 72 6F 63 65 73 73 65 64 20 61 6E een processed an
000090: 64 20 77 68 69 63 68 0D 0A 09 61 72 65 20 61 73 d which...are as
0000A0: 73 6F 63 69 61 74 65 64 20 77 69 74 68 20 6C 69 sociated with li
0000B0: 6E 65 73 20 69 6E 20 74 68 65 20 6E 65 77 20 66 nes in the new f
0000C0: 69 6C 65 2E 0D 0A 0D 0A 09 2A 29 0D 0A 0D 0A 46 ile......*)....F
0000D0: 52 4F 4D 20 09 53 59 53 54 45 4D 20 09 09 49 4D ROM .SYSTEM ..IM
0000E0: 50 4F 52 54 20 41 44 44 52 45 53 53 2C 41 44 52 PORT ADDRESS,ADR
0000F0: 2C 54 53 49 5A 45 3B 0D 0A 46 52 4F 4D 20 09 43 ,TSIZE;..FROM .C
000100: 6F 6D 6D 61 6E 64 20 09 49 4D 50 4F 52 54 20 50 ommand .IMPORT P
000110: 61 72 61 6D 65 74 65 72 2C 50 61 72 63 6C 61 73 arameter,Parclas
000120: 73 2C 47 65 74 50 61 72 61 6D 73 3B 0D 0A 46 52 s,GetParams;..FR
000130: 4F 4D 20 09 46 69 6C 65 73 20 09 09 49 4D 50 4F OM .Files ..IMPO
000140: 52 54 20 46 69 6C 65 4E 61 6D 65 2C 46 49 4C 45 RT FileName,FILE
000150: 2C 4C 6F 6F 6B 75 70 2C 43 72 65 61 74 65 3B 0D ,Lookup,Create;.
000160: 0A 46 52 4F 4D 20 09 53 74 72 65 61 6D 73 20 09 .FROM .Streams .
000170: 49 4D 50 4F 52 54 20 43 6F 6E 6E 65 63 74 2C 44 IMPORT Connect,D
000180: 69 73 63 6F 6E 6E 65 63 74 2C 53 54 52 45 41 4D isconnect,STREAM
000190: 2C 69 6E 70 75 74 2C 6F 75 74 70 75 74 2C 57 72 ,input,output,Wr
0001A0: 69 74 65 43 68 61 72 2C 0D 0A 09 09 09 09 52 65 iteChar,......Re
0001B0: 61 64 43 68 61 72 2C 45 4F 53 2C 57 72 69 74 65 adChar,EOS,Write
0001C0: 52 65 63 2C 52 65 73 65 74 3B 0D 0A 46 52 4F 4D Rec,Reset;..FROM
0001D0: 20 09 54 65 72 6D 69 6E 61 6C 09 49 4D 50 4F 52 .Terminal.IMPOR
0001E0: 54 20 57 72 69 74 65 53 74 72 69 6E 67 2C 57 72 T WriteString,Wr
0001F0: 69 74 65 4C 6E 3B 0D 0A 46 52 4F 4D 20 09 53 6F iteLn;..FROM .So
Size : 512 (Real : 512)
000000: 29 0D 0A 0D 0A 54 59 50 45 20 09 0D 0A 09 43 6F )....TYPE ....Co
000010: 6D 70 43 6C 61 73 73 3D 28 57 68 6F 6C 65 2C 4E mpClass=(Whole,N
000020: 61 6D 65 2C 54 79 70 65 29 3B 0D 0A 09 46 69 6C ame,Type);...Fil
000030: 65 52 65 63 6F 72 64 3D 52 45 43 4F 52 44 0D 0A eRecord=RECORD..
000040: 09 09 44 65 76 69 63 65 3A 43 48 41 52 3B 0D 0A ..Device:CHAR;..
000050: 09 09 4E 61 6D 65 3A 41 52 52 41 59 5B 31 2E 2E ..Name:ARRAY[1..
000060: 38 5D 20 4F 46 20 43 48 41 52 3B 0D 0A 09 09 54 8] OF CHAR;....T
000070: 79 70 65 3A 41 52 52 41 59 5B 31 2E 2E 33 5D 20 ype:ARRAY[1..3]
000080: 4F 46 20 43 48 41 52 3B 0D 0A 09 09 45 4E 44 3B OF CHAR;....END;
000090: 0D 0A 09 50 46 69 6C 65 4E 61 6D 65 3D 50 4F 49 ...PFileName=POI
0000A0: 4E 54 45 52 20 54 4F 20 46 69 6C 65 52 65 63 6F NTER TO FileReco
0000B0: 72 64 3B 0D 0A 09 46 69 6C 65 41 72 72 61 79 3D rd;...FileArray=
0000C0: 41 52 52 41 59 5B 31 2E 2E 4D 61 78 46 69 6C 65 ARRAY[1..MaxFile
0000D0: 73 5D 20 4F 46 20 46 69 6C 65 52 65 63 6F 72 64 s] OF FileRecord
0000E0: 3B 0D 0A 56 41 52 09 0D 0A 09 50 61 72 61 6D 3A ;..VAR....Param:
0000F0: 41 52 52 41 59 5B 31 2E 2E 34 5D 20 4F 46 20 50 ARRAY[1..4] OF P
000100: 61 72 61 6D 65 74 65 72 3B 09 09 28 2A 61 72 65 arameter;..(*are
000110: 61 20 66 6F 72 20 63 6F 6D 6D 61 6E 64 20 6C 69 a for command li
000120: 6E 65 2A 29 0D 0A 09 43 6F 75 6E 74 3A 49 4E 54 ne*)...Count:INT
000130: 45 47 45 52 3B 09 09 09 09 28 2A 70 61 72 61 6D EGER;....(*param
000140: 65 74 65 72 73 2A 29 0D 0A 0D 0A 09 4C 65 66 74 eters*).....Left
000150: 4E 61 6D 65 73 2C 52 69 67 68 74 4E 61 6D 65 73 Names,RightNames
000160: 3A 46 69 6C 65 41 72 72 61 79 3B 0D 0A 09 4C 65 :FileArray;...Le
000170: 66 74 4E 61 6D 65 43 6F 75 6E 74 2C 52 69 67 68 ftNameCount,Righ
000180: 74 4E 61 6D 65 43 6F 75 6E 74 3A 49 4E 54 45 47 tNameCount:INTEG
000190: 45 52 3B 0D 0A 0D 0A 09 43 6F 6D 70 63 6C 61 73 ER;.....Compclas
0001A0: 73 3A 43 6F 6D 70 43 6C 61 73 73 3D 57 68 6F 6C s:CompClass=Whol
0001B0: 65 3B 0D 0A 09 4F 75 74 70 75 74 41 64 64 65 64 e;...OutputAdded
0001C0: 3A 42 4F 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B 0D :BOOLEAN=FALSE;.
0001D0: 0A 09 4F 75 74 70 75 74 45 71 75 61 6C 3A 42 4F ..OutputEqual:BO
0001E0: 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B 0D 0A 09 43 OLEAN=FALSE;...C
0001F0: 6F 6D 70 61 72 65 43 6F 6E 74 65 6E 74 73 3A 42 ompareContents:B
Size : 512 (Real : 512)
000000: 28 2A 09 09 52 65 76 69 73 69 6F 6E 20 48 69 73 (*..Revision His
000010: 74 6F 72 79 3A 0D 0A 0D 0A 09 09 32 34 20 4D 61 tory:......24 Ma
000020: 72 63 68 20 38 36 20 20 44 61 76 65 20 4D 6F 6F rch 86 Dave Moo
000030: 72 65 0D 0A 09 09 09 46 69 78 65 64 20 63 6F 6D re.....Fixed com
000040: 70 69 6C 61 74 69 6F 6E 20 65 72 72 6F 72 73 20 pilation errors
000050: 63 61 75 73 65 64 20 62 79 20 75 70 67 72 61 64 caused by upgrad
000060: 69 6E 67 20 6F 66 0D 0A 09 09 09 63 6F 6D 70 69 ing of.....compi
000070: 6C 65 72 20 65 72 72 6F 72 20 63 68 65 63 6B 69 ler error checki
000080: 6E 67 2E 0D 0A 09 09 09 49 6E 63 72 65 61 73 65 ng......Increase
000090: 64 20 4D 61 78 46 69 6C 65 73 20 74 6F 20 35 31 d MaxFiles to 51
0000A0: 32 2E 0D 0A 0D 0A 09 09 42 75 67 73 3A 0D 0A 0D 2.......Bugs:...
0000B0: 0A 09 09 09 46 61 69 6C 73 20 69 66 20 6D 6F 72 ....Fails if mor
0000C0: 65 20 74 68 61 6E 20 4D 61 78 46 69 6C 65 73 20 e than MaxFiles
0000D0: 66 69 6C 65 73 20 61 72 65 20 66 6F 75 6E 64 2E files are found.
0000E0: 20 54 68 69 73 0D 0A 09 09 09 69 73 20 6E 6F 74 This.....is not
0000F0: 20 61 20 70 72 6F 62 6C 65 6D 20 75 6E 64 65 72 a problem under
000100: 20 43 50 2F 4D 20 73 69 6E 63 65 20 64 69 72 65 CP/M since dire
000110: 63 74 6F 72 69 65 73 20 66 69 6C 6C 0D 0A 09 09 ctories fill....
000120: 09 62 65 66 6F 72 65 20 74 68 61 74 20 6D 61 6E .before that man
000130: 79 20 66 69 6C 65 73 20 61 72 65 20 66 6F 75 6E y files are foun
000140: 64 2C 20 62 75 74 20 69 74 20 63 61 6E 20 63 61 d, but it can ca
000150: 75 73 65 0D 0A 09 09 09 70 72 6F 62 6C 65 6D 73 use.....problems
000160: 20 75 6E 64 65 72 20 4D 53 44 4F 53 20 28 77 69 under MSDOS (wi
000170: 74 68 20 61 20 5A 38 30 20 63 61 72 64 29 0D 0A th a Z80 card)..
000180: 2A 29 0D 0A 09 09 09 0D 0A 0D 0A 28 2A 24 6C 2D *).........(*$l-
000190: 2A 29 0D 0A 4D 4F 44 55 4C 45 20 43 6F 6D 70 44 *)..MODULE CompD
0001A0: 69 72 3B 0D 0A 0D 0A 28 2A 09 43 6F 6D 70 44 69 ir;....(*.CompDi
0001B0: 72 20 2D 20 43 6F 6D 70 61 72 65 20 74 77 6F 20 r - Compare two
0001C0: 64 69 72 65 63 74 6F 72 69 65 73 0D 0A 0D 0A 09 directories.....
0001D0: 44 61 76 65 20 4D 6F 6F 72 65 0D 0A 09 43 65 72 Dave Moore...Cer
0001E0: 65 6E 6B 6F 66 20 43 6F 6D 70 75 74 69 6E 67 0D enkof Computing.
0001F0: 0A 09 50 4F 20 42 6F 78 20 33 30 35 20 57 79 6E ..PO Box 305 Wyn
Size : 512 (Real : 512)
000000: 4F 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B 0D 0A 09 OOLEAN=FALSE;...
000010: 4F 75 74 70 75 74 44 65 6C 65 74 65 64 3A 42 4F OutputDeleted:BO
000020: 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B 0D 0A 09 4F OLEAN=FALSE;...O
000030: 75 74 70 75 74 4D 6F 64 69 66 69 65 64 3A 42 4F utputModified:BO
000040: 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B 0D 0A 0D 0A OLEAN=FALSE;....
000050: 09 4C 69 73 74 4F 70 65 6E 3A 42 4F 4F 4C 45 41 .ListOpen:BOOLEA
000060: 4E 3D 46 41 4C 53 45 3B 0D 0A 09 4C 69 73 74 3A N=FALSE;...List:
000070: 53 54 52 45 41 4D 3B 0D 0A 09 4C 69 73 74 46 3A STREAM;...ListF:
000080: 46 49 4C 45 3B 0D 0A 50 52 4F 43 45 44 55 52 45 FILE;..PROCEDURE
000090: 20 43 72 61 63 6B 46 69 6C 65 4E 61 6D 65 28 54 CrackFileName(T
0000A0: 65 78 74 3A 41 52 52 41 59 20 4F 46 20 43 48 41 ext:ARRAY OF CHA
0000B0: 52 3B 56 41 52 20 52 65 63 3A 46 69 6C 65 52 65 R;VAR Rec:FileRe
0000C0: 63 6F 72 64 29 3B 0D 0A 0D 0A 28 2A 09 43 6F 6E cord);....(*.Con
0000D0: 76 65 72 74 20 74 68 65 20 74 65 78 74 20 66 6F vert the text fo
0000E0: 72 6D 20 6F 66 20 61 20 66 69 6C 65 20 6E 61 6D rm of a file nam
0000F0: 65 20 74 6F 20 74 68 65 0D 0A 09 65 78 70 61 6E e to the...expan
000100: 64 65 64 20 66 6F 72 6D 2A 29 0D 0A 56 41 52 09 ded form*)..VAR.
000110: 69 2C 6A 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 42 i,j:CARDINAL;..B
000120: 45 47 49 4E 0D 0A 09 57 49 54 48 20 52 65 63 20 EGIN...WITH Rec
000130: 44 4F 0D 0A 09 09 49 46 20 54 65 78 74 5B 31 5D DO....IF Text[1]
000140: 3D 27 3A 27 20 54 48 45 4E 0D 0A 09 09 09 44 65 =':' THEN.....De
000150: 76 69 63 65 3A 3D 43 41 50 28 54 65 78 74 5B 30 vice:=CAP(Text[0
000160: 5D 29 3B 0D 0A 09 09 09 69 3A 3D 32 3B 0D 0A 09 ]);.....i:=2;...
000170: 09 45 4C 53 45 0D 0A 09 09 09 44 65 76 69 63 65 .ELSE.....Device
000180: 3A 3D 27 20 27 3B 0D 0A 09 09 09 69 3A 3D 30 3B :=' ';.....i:=0;
000190: 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 6A 3A 3D .....END;....j:=
0001A0: 31 3B 0D 0A 0D 0A 09 09 28 2A 09 70 69 63 6B 20 1;......(*.pick
0001B0: 75 70 20 66 69 6C 65 20 6E 61 6D 65 20 2A 29 0D up file name *).
0001C0: 0A 0D 0A 09 09 57 48 49 4C 45 20 20 20 28 69 3C .....WHILE (i<
0001D0: 3D 48 49 47 48 28 54 65 78 74 29 29 0D 0A 09 09 =HIGH(Text))....
0001E0: 20 20 20 20 41 4E 44 09 28 54 65 78 74 5B 69 5D AND.(Text[i]
0001F0: 3C 3E 30 78 29 0D 0A 09 09 20 20 20 20 41 4E 44 <>0x).... AND
Size : 512 (Real : 512)
000000: 6E 75 6D 20 43 65 6E 74 72 61 6C 20 34 31 37 38 num Central 4178
000010: 0D 0A 0D 0A 0D 0A 09 43 61 6C 6C 20 69 73 20 43 .......Call is C
000020: 4F 4D 50 44 49 52 20 20 20 77 69 6C 64 20 63 61 OMPDIR wild ca
000030: 72 64 2C 77 69 6C 64 20 63 61 72 64 2C 6C 69 73 rd,wild card,lis
000040: 74 20 66 69 6C 65 20 5B 6F 70 74 69 6F 6E 73 0D t file [options.
000050: 0A 0D 0A 09 57 68 65 72 65 20 65 61 63 68 20 77 ....Where each w
000060: 69 6C 64 20 63 61 72 64 20 70 72 6F 64 75 63 65 ild card produce
000070: 73 20 6F 6E 65 20 6F 66 20 74 68 65 20 6C 69 73 s one of the lis
000080: 74 73 20 74 6F 20 63 6F 6D 70 61 72 65 0D 0A 0D ts to compare...
000090: 0A 09 46 6F 72 20 65 78 61 6D 70 6C 65 2C 20 74 ..For example, t
0000A0: 6F 20 63 6F 6D 70 61 72 65 20 74 77 6F 20 64 69 o compare two di
0000B0: 73 63 73 2C 20 64 6F 3A 20 43 4F 4D 50 44 49 52 scs, do: COMPDIR
0000C0: 20 61 3A 2A 2E 2A 20 62 3A 2A 2E 2A 0D 0A 0D 0A a:*.* b:*.*....
0000D0: 09 4F 70 74 69 6F 6E 73 20 61 72 65 20 61 6E 79 .Options are any
0000E0: 20 6F 66 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E of the followin
0000F0: 67 3A 0D 0A 09 09 54 09 63 6F 6D 70 61 72 65 20 g:....T.compare
000100: 6F 6E 6C 79 20 66 69 6C 65 20 74 79 70 65 20 28 only file type (
000110: 62 79 20 64 65 66 61 75 6C 74 2C 20 74 68 65 20 by default, the
000120: 77 68 6F 6C 65 20 6E 61 6D 65 20 69 73 20 63 6F whole name is co
000130: 6D 70 61 72 65 64 29 0D 0A 09 09 09 28 62 79 20 mpared).....(by
000140: 66 69 6C 65 20 74 79 70 65 2C 20 49 20 6D 65 61 file type, I mea
000150: 6E 20 74 68 65 20 28 33 29 20 63 68 61 72 61 63 n the (3) charac
000160: 74 65 72 73 20 61 66 74 65 72 20 74 68 65 20 64 ters after the d
000170: 6F 74 29 0D 0A 09 09 4E 09 63 6F 6D 70 61 72 65 ot)....N.compare
000180: 20 6F 6E 6C 79 20 66 69 6C 65 20 6E 61 6D 65 0D only file name.
000190: 0A 09 09 43 09 69 66 20 66 69 6C 65 20 6E 61 6D ...C.if file nam
0001A0: 65 73 20 6D 61 74 63 68 2C 20 63 68 65 63 6B 20 es match, check
0001B0: 66 69 6C 65 20 63 6F 6E 74 65 6E 74 73 20 61 73 file contents as
0001C0: 20 77 65 6C 6C 0D 0A 09 09 0D 0A 09 09 0D 0A 09 well...........
0001D0: 09 09 54 68 65 73 65 20 74 77 6F 20 6F 70 74 69 ..These two opti
0001E0: 6F 6E 73 20 61 72 65 20 6D 75 74 75 61 6C 6C 79 ons are mutually
0001F0: 20 65 78 63 6C 75 73 69 76 65 0D 0A 0D 0A 09 09 exclusive......
Size : 512 (Real : 512)
000000: 20 28 54 65 78 74 5B 69 5D 3C 3E 27 20 27 29 0D (Text[i]<>' ').
000010: 0A 09 09 20 20 20 20 41 4E 44 09 28 54 65 78 74 ... AND.(Text
000020: 5B 69 5D 3C 3E 27 2E 27 29 20 44 4F 0D 0A 09 09 [i]<>'.') DO....
000030: 09 49 46 20 20 6A 3C 3D 48 49 47 48 28 4E 61 6D .IF j<=HIGH(Nam
000040: 65 29 20 54 48 45 4E 20 4E 61 6D 65 5B 6A 5D 3A e) THEN Name[j]:
000050: 3D 54 65 78 74 5B 69 5D 20 45 4E 44 3B 0D 0A 09 =Text[i] END;...
000060: 09 09 49 4E 43 28 6A 29 3B 0D 0A 09 09 09 49 4E ..INC(j);.....IN
000070: 43 28 69 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A C(i);.....END;..
000080: 09 09 46 4F 52 20 6A 3A 3D 6A 20 54 4F 20 48 49 ..FOR j:=j TO HI
000090: 47 48 28 4E 61 6D 65 29 20 44 4F 20 4E 61 6D 65 GH(Name) DO Name
0000A0: 5B 6A 5D 3A 3D 30 78 20 45 4E 44 3B 0D 0A 0D 0A [j]:=0x END;....
0000B0: 09 09 28 2A 4E 6F 74 65 20 74 68 61 74 20 49 20 ..(*Note that I
0000C0: 75 73 65 20 7A 65 72 6F 20 69 6E 73 74 65 61 64 use zero instead
0000D0: 20 6F 66 20 62 6C 61 6E 6B 20 66 69 6C 6C 20 74 of blank fill t
0000E0: 6F 20 73 69 6D 70 6C 69 66 79 20 6C 69 73 74 69 o simplify listi
0000F0: 6E 67 0D 0A 09 09 20 20 6F 66 20 74 68 65 20 6E ng.... of the n
000100: 61 6D 65 73 2A 29 0D 0A 09 09 6A 3A 3D 31 3B 0D ames*)....j:=1;.
000110: 0A 09 09 49 46 20 54 65 78 74 5B 69 5D 3D 27 2E ...IF Text[i]='.
000120: 27 20 54 48 45 4E 20 49 4E 43 28 69 29 20 45 4E ' THEN INC(i) EN
000130: 44 3B 0D 0A 09 09 57 48 49 4C 45 20 20 20 28 69 D;....WHILE (i
000140: 3C 3D 48 49 47 48 28 54 65 78 74 29 29 0D 0A 09 <=HIGH(Text))...
000150: 09 20 20 20 20 41 4E 44 09 28 54 65 78 74 5B 69 . AND.(Text[i
000160: 5D 3C 3E 30 78 29 0D 0A 09 09 20 20 20 20 41 4E ]<>0x).... AN
000170: 44 09 28 54 65 78 74 5B 69 5D 3C 3E 27 20 27 29 D.(Text[i]<>' ')
000180: 20 44 4F 0D 0A 09 09 09 49 46 20 20 6A 3C 3D 48 DO.....IF j<=H
000190: 49 47 48 28 54 79 70 65 29 20 54 48 45 4E 20 54 IGH(Type) THEN T
0001A0: 79 70 65 5B 6A 5D 3A 3D 54 65 78 74 5B 69 5D 20 ype[j]:=Text[i]
0001B0: 45 4E 44 3B 0D 0A 09 09 09 49 4E 43 28 6A 29 3B END;.....INC(j);
0001C0: 0D 0A 09 09 09 49 4E 43 28 69 29 3B 0D 0A 09 09 .....INC(i);....
0001D0: 09 45 4E 44 3B 0D 0A 09 09 46 4F 52 20 6A 3A 3D .END;....FOR j:=
0001E0: 6A 20 54 4F 20 48 49 47 48 28 54 79 70 65 29 20 j TO HIGH(Type)
0001F0: 44 4F 20 54 79 70 65 5B 6A 5D 3A 3D 30 78 20 45 DO Type[j]:=0x E
Size : 512 (Real : 512)
000000: 45 09 4F 75 74 70 75 74 20 66 69 6C 65 20 6E 61 E.Output file na
000010: 6D 65 73 20 77 68 69 63 68 20 6D 61 74 63 68 20 mes which match
000020: 74 6F 20 6C 69 73 74 20 66 69 6C 65 0D 0A 09 09 to list file....
000030: 41 09 4F 75 74 70 75 74 20 66 69 6C 65 20 6E 61 A.Output file na
000040: 6D 65 73 20 77 68 69 63 68 20 68 61 76 65 20 62 mes which have b
000050: 65 65 6E 20 61 64 64 65 64 20 74 6F 20 74 68 65 een added to the
000060: 20 73 65 63 6F 6E 64 20 6C 69 73 74 0D 0A 09 09 second list....
000070: 44 09 4F 75 74 70 75 74 20 66 69 6C 65 20 6E 61 D.Output file na
000080: 6D 65 73 20 77 68 69 63 68 20 68 61 76 65 20 62 mes which have b
000090: 65 65 6E 20 64 65 6C 65 74 65 64 20 66 72 6F 6D een deleted from
0000A0: 20 74 68 65 20 66 69 72 73 74 20 6C 69 73 74 0D the first list.
0000B0: 0A 09 09 4D 09 4F 75 74 70 75 74 20 66 69 6C 65 ...M.Output file
0000C0: 73 20 77 68 69 63 68 20 68 61 76 65 20 62 65 65 s which have bee
0000D0: 6E 20 6D 6F 64 69 66 69 65 64 20 74 6F 20 74 68 n modified to th
0000E0: 65 20 6C 69 73 74 20 66 69 6C 65 0D 0A 0D 0A 09 e list file.....
0000F0: 09 09 54 68 65 73 65 20 6F 70 74 69 6F 6E 73 20 ..These options
000100: 6D 61 79 20 62 65 20 63 6F 6D 62 69 6E 65 64 0D may be combined.
000110: 0A 0D 0A 0D 0A 09 54 68 65 20 70 72 6F 67 72 61 ......The progra
000120: 6D 20 63 61 6E 20 62 65 20 76 65 72 79 20 75 73 m can be very us
000130: 65 66 75 6C 20 66 6F 72 20 75 70 64 61 74 69 6E eful for updatin
000140: 67 20 64 69 73 63 73 20 62 61 73 65 64 20 6F 6E g discs based on
000150: 20 74 68 65 69 72 0D 0A 09 65 78 69 73 74 69 6E their...existin
000160: 67 20 63 6F 6E 74 65 6E 74 73 2C 20 77 68 69 63 g contents, whic
000170: 68 20 69 73 20 61 6E 20 61 72 65 61 20 69 6E 20 h is an area in
000180: 77 68 69 63 68 20 73 77 65 65 70 20 69 73 20 77 which sweep is w
000190: 65 61 6B 2E 20 0D 0A 0D 0A 09 54 68 69 73 20 69 eak. .....This i
0001A0: 73 20 61 20 6D 6F 64 69 66 69 65 64 20 61 6E 64 s a modified and
0001B0: 20 65 6E 68 61 6E 63 65 64 20 76 65 72 73 69 6F enhanced versio
0001C0: 6E 20 6F 66 20 74 68 65 20 6F 72 69 67 69 6E 61 n of the origina
0001D0: 6C 20 43 6F 6D 70 44 69 72 20 70 72 6F 67 72 61 l CompDir progra
0001E0: 6D 0D 0A 09 77 68 69 63 68 20 77 61 73 20 77 72 m...which was wr
0001F0: 69 74 74 65 6E 20 66 6F 72 20 65 78 70 6F 73 69 itten for exposi
Size : 512 (Real : 512)
000000: 47 49 4E 0D 0A 09 53 65 74 4E 61 6D 65 28 66 31 GIN...SetName(f1
000010: 2C 66 6E 31 29 3B 0D 0A 09 53 65 74 4E 61 6D 65 ,fn1);...SetName
000020: 28 66 32 2C 66 6E 32 29 3B 0D 0A 09 52 45 54 55 (f2,fn2);...RETU
000030: 52 4E 20 46 69 6C 65 43 6F 6D 70 28 66 6E 31 2C RN FileComp(fn1,
000040: 66 6E 32 29 0D 0A 09 45 4E 44 20 43 6F 6D 70 61 fn2)...END Compa
000050: 72 65 4F 4B 3B 0D 0A 09 09 0D 0A 56 41 52 09 72 reOK;......VAR.r
000060: 65 70 6C 79 3A 49 4E 54 45 47 45 52 3B 0D 0A 42 eply:INTEGER;..B
000070: 45 47 49 4E 0D 0A 0D 0A 0D 0A 09 47 65 74 50 61 EGIN.......GetPa
000080: 72 61 6D 73 28 50 61 72 61 6D 2C 43 6F 75 6E 74 rams(Param,Count
000090: 29 3B 0D 0A 09 49 46 20 28 43 6F 75 6E 74 3E 30 );...IF (Count>0
0000A0: 29 20 41 4E 44 20 28 50 61 72 61 6D 5B 43 6F 75 ) AND (Param[Cou
0000B0: 6E 74 5D 5E 2E 43 6C 61 73 73 3D 6F 70 74 69 6F nt]^.Class=optio
0000C0: 6E 29 20 54 48 45 4E 0D 0A 09 09 47 65 74 4F 70 n) THEN....GetOp
0000D0: 74 69 6F 6E 73 28 50 61 72 61 6D 5B 43 6F 75 6E tions(Param[Coun
0000E0: 74 5D 29 3B 0D 0A 09 09 44 45 43 28 43 6F 75 6E t]);....DEC(Coun
0000F0: 74 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 49 46 t);....END;...IF
000100: 20 43 6F 75 6E 74 3C 32 20 54 48 45 4E 20 55 73 Count<2 THEN Us
000110: 61 67 65 20 45 4E 44 3B 0D 0A 20 20 20 20 20 20 age END;..
000120: 20 20 49 46 20 43 6F 75 6E 74 3D 33 20 54 48 45 IF Count=3 THE
000130: 4E 20 0D 0A 09 09 43 72 65 61 74 65 28 4C 69 73 N ....Create(Lis
000140: 74 46 2C 46 69 6C 65 4E 61 6D 65 28 50 61 72 61 tF,FileName(Para
000150: 6D 5B 33 5D 5E 2E 43 68 61 72 73 29 2C 72 65 70 m[3]^.Chars),rep
000160: 6C 79 29 3B 0D 0A 09 09 49 46 20 72 65 70 6C 79 ly);....IF reply
000170: 3C 30 20 54 48 45 4E 0D 0A 09 09 09 57 72 69 74 <0 THEN.....Writ
000180: 65 53 74 72 69 6E 67 28 27 20 43 6F 75 6C 64 20 eString(' Could
000190: 6E 6F 74 20 6F 70 65 6E 20 6F 75 74 70 75 74 20 not open output
0001A0: 66 69 6C 65 20 27 29 3B 0D 0A 09 09 09 57 72 69 file ');.....Wri
0001B0: 74 65 53 74 72 69 6E 67 28 50 61 72 61 6D 5B 33 teString(Param[3
0001C0: 5D 5E 2E 43 68 61 72 73 29 3B 0D 0A 09 09 09 57 ]^.Chars);.....W
0001D0: 72 69 74 65 4C 6E 3B 0D 0A 09 09 09 48 41 4C 54 riteLn;.....HALT
0001E0: 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 43 6F ;.....END;....Co
0001F0: 6E 6E 65 63 74 28 4C 69 73 74 2C 4C 69 73 74 46 nnect(List,ListF
Size : 512 (Real : 512)
000000: 5D 3D 30 78 29 20 41 4E 44 20 28 50 61 72 61 6D ]=0x) AND (Param
000010: 5E 2E 43 68 61 72 73 5B 31 5D 3D 27 3A 27 29 20 ^.Chars[1]=':')
000020: 54 48 45 4E 0D 0A 09 09 54 65 78 74 3A 3D 27 20 THEN....Text:='
000030: 3A 2A 2E 2A 27 3B 0D 0A 09 09 54 65 78 74 5B 30 :*.*';....Text[0
000040: 5D 3A 3D 50 61 72 61 6D 5E 2E 43 68 61 72 73 5B ]:=Param^.Chars[
000050: 30 5D 3B 0D 0A 09 09 47 65 74 4E 61 6D 65 73 28 0];....GetNames(
000060: 54 65 78 74 2C 4E 61 6D 65 54 65 78 74 2C 4E 61 Text,NameText,Na
000070: 6D 65 43 6F 75 6E 74 29 3B 0D 0A 09 45 4C 53 45 meCount);...ELSE
000080: 0D 0A 09 09 47 65 74 4E 61 6D 65 73 28 50 61 72 ....GetNames(Par
000090: 61 6D 5E 2E 43 68 61 72 73 2C 4E 61 6D 65 54 65 am^.Chars,NameTe
0000A0: 78 74 2C 4E 61 6D 65 43 6F 75 6E 74 29 3B 0D 0A xt,NameCount);..
0000B0: 09 09 45 4E 44 3B 0D 0A 09 0D 0A 09 28 2A 63 72 ..END;......(*cr
0000C0: 61 63 6B 20 6E 61 6D 65 73 2A 29 0D 0A 0D 0A 09 ack names*).....
0000D0: 46 4F 52 20 69 3A 3D 31 20 54 4F 20 4E 61 6D 65 FOR i:=1 TO Name
0000E0: 43 6F 75 6E 74 20 44 4F 0D 0A 09 09 43 72 61 63 Count DO....Crac
0000F0: 6B 46 69 6C 65 4E 61 6D 65 28 4E 61 6D 65 54 65 kFileName(NameTe
000100: 78 74 5B 69 5D 2C 4E 61 6D 65 73 5B 69 5D 29 3B xt[i],Names[i]);
000110: 0D 0A 09 09 45 4E 44 3B 0D 0A 0D 0A 09 49 46 20 ....END;.....IF
000120: 4E 61 6D 65 43 6F 75 6E 74 3E 31 20 54 48 45 4E NameCount>1 THEN
000130: 0D 0A 09 09 53 6F 72 74 52 65 63 6F 72 64 73 28 ....SortRecords(
000140: 41 44 52 28 4E 61 6D 65 73 29 2C 43 41 52 44 49 ADR(Names),CARDI
000150: 4E 41 4C 28 4E 61 6D 65 43 6F 75 6E 74 29 2C 0D NAL(NameCount),.
000160: 0A 09 09 09 54 53 49 5A 45 28 46 69 6C 65 52 65 ....TSIZE(FileRe
000170: 63 6F 72 64 29 2C 43 6F 6D 70 61 72 29 3B 0D 0A cord),Compar);..
000180: 09 09 45 4E 44 3B 0D 0A 09 09 09 0D 0A 09 09 09 ..END;..........
000190: 0D 0A 09 45 4E 44 20 45 78 70 61 6E 64 4E 61 6D ...END ExpandNam
0001A0: 65 73 3B 0D 0A 0D 0A 56 41 52 09 69 2C 6A 3A 49 es;....VAR.i,j:I
0001B0: 4E 54 45 47 45 52 3B 0D 0A 50 52 4F 43 45 44 55 NTEGER;..PROCEDU
0001C0: 52 45 20 57 72 69 74 65 54 6F 4C 69 73 74 28 56 RE WriteToList(V
0001D0: 41 52 20 4E 3A 46 69 6C 65 52 65 63 6F 72 64 29 AR N:FileRecord)
0001E0: 3B 0D 0A 42 45 47 49 4E 0D 0A 09 57 49 54 48 20 ;..BEGIN...WITH
0001F0: 4E 20 44 4F 0D 0A 09 09 49 6E 4F 75 74 2E 57 72 N DO....InOut.Wr
Size : 512 (Real : 512)
000000: 72 69 74 65 53 74 72 69 6E 67 28 27 09 09 41 09 riteString('..A.
000010: 4F 75 74 70 75 74 20 66 69 6C 65 20 6E 61 6D 65 Output file name
000020: 73 20 77 68 69 63 68 20 68 61 76 65 20 62 65 65 s which have bee
000030: 6E 20 61 64 64 65 64 20 74 6F 20 74 68 65 20 73 n added to the s
000040: 65 63 6F 6E 64 20 6C 69 73 74 27 29 3B 57 72 69 econd list');Wri
000050: 74 65 4C 6E 3B 0D 0A 09 57 72 69 74 65 53 74 72 teLn;...WriteStr
000060: 69 6E 67 28 27 09 09 44 09 4F 75 74 70 75 74 20 ing('..D.Output
000070: 66 69 6C 65 20 6E 61 6D 65 73 20 77 68 69 63 68 file names which
000080: 20 68 61 76 65 20 62 65 65 6E 20 64 65 6C 65 74 have been delet
000090: 65 64 20 66 72 6F 6D 20 74 68 65 20 66 69 72 73 ed from the firs
0000A0: 74 20 6C 69 73 74 27 29 3B 57 72 69 74 65 4C 6E t list');WriteLn
0000B0: 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28 ;...WriteString(
0000C0: 27 09 09 4D 09 4F 75 74 70 75 74 20 66 69 6C 65 '..M.Output file
0000D0: 20 6E 61 6D 65 73 20 6F 66 20 6D 6F 64 69 66 69 names of modifi
0000E0: 65 64 20 66 69 6C 65 73 20 27 29 3B 57 72 69 74 ed files ');Writ
0000F0: 65 4C 6E 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 eLn;...WriteStri
000100: 6E 67 28 27 09 09 09 28 49 6D 70 6C 69 65 73 20 ng('...(Implies
000110: 43 20 6F 70 74 69 6F 6E 29 27 29 3B 57 72 69 74 C option)');Writ
000120: 65 4C 6E 3B 0D 0A 09 48 41 4C 54 0D 0A 09 45 4E eLn;...HALT...EN
000130: 44 20 55 73 61 67 65 3B 0D 0A 0D 0A 0D 0A 50 52 D Usage;......PR
000140: 4F 43 45 44 55 52 45 20 47 65 74 4F 70 74 69 6F OCEDURE GetOptio
000150: 6E 73 28 70 3A 50 61 72 61 6D 65 74 65 72 29 3B ns(p:Parameter);
000160: 0D 0A 56 41 52 09 69 3A 43 41 52 44 49 4E 41 4C ..VAR.i:CARDINAL
000170: 3B 0D 0A 42 45 47 49 4E 0D 0A 09 57 49 54 48 20 ;..BEGIN...WITH
000180: 70 5E 20 44 4F 0D 0A 09 09 69 3A 3D 30 3B 0D 0A p^ DO....i:=0;..
000190: 09 09 4C 4F 4F 50 0D 0A 09 09 09 43 41 53 45 20 ..LOOP.....CASE
0001A0: 43 68 61 72 73 5B 69 5D 20 4F 46 0D 0A 09 09 09 Chars[i] OF.....
0001B0: 09 30 78 3A 45 58 49 54 7C 0D 0A 09 09 09 09 27 .0x:EXIT|......'
0001C0: 54 27 3A 43 6F 6D 70 63 6C 61 73 73 3A 3D 54 79 T':Compclass:=Ty
0001D0: 70 65 7C 0D 0A 09 09 09 09 27 4E 27 3A 43 6F 6D pe|......'N':Com
0001E0: 70 63 6C 61 73 73 3A 3D 4E 61 6D 65 7C 0D 0A 09 pclass:=Name|...
0001F0: 09 09 09 27 45 27 3A 4F 75 74 70 75 74 45 71 75 ...'E':OutputEqu
Size : 512 (Real : 512)
000000: 69 74 65 53 74 72 69 6E 67 28 4E 61 6D 65 29 3B iteString(Name);
000010: 0D 0A 09 09 57 72 69 74 65 43 68 61 72 28 4C 69 ....WriteChar(Li
000020: 73 74 2C 27 2E 27 29 3B 0D 0A 09 09 49 6E 4F 75 st,'.');....InOu
000030: 74 2E 57 72 69 74 65 53 74 72 69 6E 67 28 54 79 t.WriteString(Ty
000040: 70 65 29 3B 0D 0A 09 09 49 6E 4F 75 74 2E 57 72 pe);....InOut.Wr
000050: 69 74 65 4C 6E 3B 0D 0A 09 09 45 4E 44 3B 0D 0A iteLn;....END;..
000060: 09 45 4E 44 20 57 72 69 74 65 54 6F 4C 69 73 74 .END WriteToList
000070: 3B 0D 0A 09 0D 0A 50 52 4F 43 45 44 55 52 45 20 ;.....PROCEDURE
000080: 57 72 69 74 65 4E 61 6D 65 28 56 41 52 20 4E 3A WriteName(VAR N:
000090: 46 69 6C 65 52 65 63 6F 72 64 3B 54 6F 4C 69 73 FileRecord;ToLis
0000A0: 74 3A 42 4F 4F 4C 45 41 4E 29 3B 0D 0A 0D 0A 28 t:BOOLEAN);....(
0000B0: 2A 09 6F 75 74 70 75 74 20 61 20 66 69 6C 65 20 *.output a file
0000C0: 72 65 63 6F 72 64 20 61 73 20 61 20 76 61 6C 69 record as a vali
0000D0: 64 20 66 69 6C 65 20 6E 61 6D 65 0D 0A 09 49 46 d file name...IF
0000E0: 20 54 6F 6C 69 73 74 2C 20 6F 75 74 70 75 74 20 Tolist, output
0000F0: 69 74 20 74 6F 20 6C 69 73 74 20 61 73 20 77 65 it to list as we
000100: 6C 6C 2A 29 0D 0A 0D 0A 56 41 52 09 69 3A 43 41 ll*)....VAR.i:CA
000110: 52 44 49 4E 41 4C 3B 0D 0A 09 63 68 3A 43 48 41 RDINAL;...ch:CHA
000120: 52 3B 0D 0A 42 45 47 49 4E 0D 0A 09 57 49 54 48 R;..BEGIN...WITH
000130: 20 4E 20 44 4F 0D 0A 09 09 49 46 20 44 65 76 69 N DO....IF Devi
000140: 63 65 3C 3E 27 20 27 20 54 48 45 4E 20 0D 0A 09 ce<>' ' THEN ...
000150: 09 09 63 68 3A 3D 27 3A 27 0D 0A 09 09 45 4C 53 ..ch:=':'....ELS
000160: 45 0D 0A 09 09 09 63 68 3A 3D 27 20 27 0D 0A 09 E.....ch:=' '...
000170: 09 09 45 4E 44 3B 0D 0A 09 09 57 72 69 74 65 28 ..END;....Write(
000180: 44 65 76 69 63 65 29 3B 0D 0A 09 09 57 72 69 74 Device);....Writ
000190: 65 28 63 68 29 3B 0D 0A 09 09 49 46 20 54 6F 4C e(ch);....IF ToL
0001A0: 69 73 74 20 54 48 45 4E 0D 0A 09 09 09 57 72 69 ist THEN.....Wri
0001B0: 74 65 43 68 61 72 28 4C 69 73 74 2C 44 65 76 69 teChar(List,Devi
0001C0: 63 65 29 3B 0D 0A 09 09 09 57 72 69 74 65 43 68 ce);.....WriteCh
0001D0: 61 72 28 4C 69 73 74 2C 63 68 29 3B 0D 0A 09 09 ar(List,ch);....
0001E0: 09 45 4E 44 3B 0D 0A 09 09 57 72 69 74 65 53 74 .END;....WriteSt
0001F0: 72 69 6E 67 28 4E 61 6D 65 29 3B 0D 0A 09 09 57 ring(Name);....W
Size : 512 (Real : 512)
000000: 61 6C 3A 3D 54 52 55 45 7C 0D 0A 09 09 09 09 27 al:=TRUE|......'
000010: 41 27 3A 4F 75 74 70 75 74 41 64 64 65 64 3A 3D A':OutputAdded:=
000020: 54 52 55 45 7C 0D 0A 09 09 09 09 27 44 27 3A 4F TRUE|......'D':O
000030: 75 74 70 75 74 44 65 6C 65 74 65 64 3A 3D 54 52 utputDeleted:=TR
000040: 55 45 7C 0D 0A 09 09 09 09 27 4D 27 3A 4F 75 74 UE|......'M':Out
000050: 70 75 74 4D 6F 64 69 66 69 65 64 3A 3D 54 52 55 putModified:=TRU
000060: 45 3B 0D 0A 09 09 09 09 20 20 20 20 43 6F 6D 70 E;...... Comp
000070: 61 72 65 43 6F 6E 74 65 6E 74 73 3A 3D 54 52 55 areContents:=TRU
000080: 45 7C 0D 0A 09 09 09 09 27 43 27 3A 43 6F 6D 70 E|......'C':Comp
000090: 61 72 65 43 6F 6E 74 65 6E 74 73 3A 3D 54 52 55 areContents:=TRU
0000A0: 45 0D 0A 09 09 09 09 45 4C 53 45 20 55 73 61 67 E......ELSE Usag
0000B0: 65 3B 0D 0A 09 09 09 09 45 4E 44 3B 28 2A 55 73 e;......END;(*Us
0000C0: 61 67 65 2A 29 0D 0A 09 09 09 49 4E 43 28 69 29 age*).....INC(i)
0000D0: 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E ;.....END;....EN
0000E0: 44 3B 28 2A 57 49 54 48 2A 29 0D 0A 09 45 4E 44 D;(*WITH*)...END
0000F0: 20 47 65 74 4F 70 74 69 6F 6E 73 3B 0D 0A 09 09 GetOptions;....
000100: 09 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 6F 6D ...PROCEDURE Com
000110: 70 61 72 28 61 2C 62 3A 41 44 44 52 45 53 53 29 par(a,b:ADDRESS)
000120: 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 28 2A 09 :BOOLEAN;....(*.
000130: 6B 65 79 20 63 6F 6D 70 61 72 69 73 6F 6E 20 72 key comparison r
000140: 6F 75 74 69 6E 65 20 66 6F 72 20 74 68 65 20 73 outine for the s
000150: 6F 72 74 20 6D 6F 64 75 6C 65 0D 0A 09 52 65 74 ort module...Ret
000160: 75 72 6E 73 20 54 52 55 45 20 69 66 20 61 20 69 urns TRUE if a i
000170: 73 20 67 72 65 61 74 65 72 20 74 68 61 6E 20 62 s greater than b
000180: 0D 0A 0D 0A 09 54 68 69 73 20 72 6F 75 74 69 6E .....This routin
000190: 65 20 61 6C 77 61 79 73 20 63 6F 6D 70 61 72 65 e always compare
0001A0: 73 20 74 68 65 20 66 75 6C 6C 20 6E 61 6D 65 20 s the full name
0001B0: 61 73 20 69 74 20 69 73 20 75 73 65 64 0D 0A 09 as it is used...
0001C0: 66 6F 72 20 73 6F 72 74 69 6E 67 2E 20 54 68 65 for sorting. The
0001D0: 20 65 71 75 61 6C 69 74 79 20 72 6F 75 74 69 6E equality routin
0001E0: 65 20 6F 6E 6C 79 20 63 6F 6D 70 61 72 65 73 20 e only compares
0001F0: 74 68 65 20 70 61 72 74 0D 0A 09 6F 66 20 74 68 the part...of th
Size : 512 (Real : 512)
000000: 72 69 74 65 28 27 2E 27 29 3B 0D 0A 09 09 57 72 rite('.');....Wr
000010: 69 74 65 53 74 72 69 6E 67 28 54 79 70 65 29 3B iteString(Type);
000020: 0D 0A 09 09 49 46 20 54 6F 4C 69 73 74 20 54 48 ....IF ToList TH
000030: 45 4E 0D 0A 09 09 09 57 72 69 74 65 54 6F 4C 69 EN.....WriteToLi
000040: 73 74 28 4E 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D st(N);.....END;.
000050: 0A 0D 0A 09 09 28 2A 4E 6F 77 20 70 61 64 20 6E .....(*Now pad n
000060: 61 6D 65 20 6F 75 74 20 74 6F 20 31 36 20 63 6F ame out to 16 co
000070: 6C 75 6D 6E 73 2A 29 0D 0A 0D 0A 09 09 46 4F 52 lumns*)......FOR
000080: 20 69 3A 3D 4C 65 6E 67 74 68 28 4E 61 6D 65 29 i:=Length(Name)
000090: 2B 4C 65 6E 67 74 68 28 54 79 70 65 29 2B 34 20 +Length(Type)+4
0000A0: 54 4F 20 31 36 20 44 4F 0D 0A 09 09 09 57 72 69 TO 16 DO.....Wri
0000B0: 74 65 28 27 20 27 29 3B 0D 0A 09 09 09 45 4E 44 te(' ');.....END
0000C0: 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 ;....END;...END
0000D0: 57 72 69 74 65 4E 61 6D 65 3B 0D 0A 50 52 4F 43 WriteName;..PROC
0000E0: 45 44 55 52 45 20 50 72 69 6E 74 4C 65 66 74 3B EDURE PrintLeft;
0000F0: 0D 0A 42 45 47 49 4E 0D 0A 09 57 72 69 74 65 4E ..BEGIN...WriteN
000100: 61 6D 65 28 4C 65 66 74 4E 61 6D 65 73 5B 69 5D ame(LeftNames[i]
000110: 2C 4F 75 74 70 75 74 44 65 6C 65 74 65 64 29 3B ,OutputDeleted);
000120: 0D 0A 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 45 4E ...WriteLn;...EN
000130: 44 20 50 72 69 6E 74 4C 65 66 74 3B 0D 0A 50 52 D PrintLeft;..PR
000140: 4F 43 45 44 55 52 45 20 50 72 69 6E 74 52 69 67 OCEDURE PrintRig
000150: 68 74 3B 0D 0A 42 45 47 49 4E 0D 0A 20 09 57 72 ht;..BEGIN.. .Wr
000160: 69 74 65 53 74 72 69 6E 67 28 27 20 20 20 20 20 iteString('
000170: 20 20 20 20 20 20 20 20 20 20 20 27 29 3B 0D 0A ');..
000180: 09 57 72 69 74 65 4E 61 6D 65 28 52 69 67 68 74 .WriteName(Right
000190: 4E 61 6D 65 73 5B 6A 5D 2C 4F 75 74 70 75 74 41 Names[j],OutputA
0001A0: 64 64 65 64 29 3B 0D 0A 09 57 72 69 74 65 4C 6E dded);...WriteLn
0001B0: 3B 0D 0A 09 45 4E 44 20 50 72 69 6E 74 52 69 67 ;...END PrintRig
0001C0: 68 74 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 ht;....PROCEDURE
0001D0: 20 43 6F 6D 70 61 72 65 4F 4B 28 66 31 2C 66 32 CompareOK(f1,f2
0001E0: 3A 46 69 6C 65 52 65 63 6F 72 64 29 3A 42 4F 4F :FileRecord):BOO
0001F0: 4C 45 41 4E 3B 0D 0A 0D 0A 56 41 52 09 66 6E 31 LEAN;....VAR.fn1
Size : 512 (Real : 512)
000000: 65 20 6E 61 6D 65 20 72 65 71 75 65 73 74 65 64 e name requested
000010: 20 62 79 20 74 68 65 20 66 6C 61 67 73 2E 20 41 by the flags. A
000020: 73 20 61 20 72 65 73 75 6C 74 2C 20 61 20 74 65 s a result, a te
000030: 73 74 0D 0A 09 66 6F 72 20 65 71 75 61 6C 69 74 st...for equalit
000040: 79 20 73 68 6F 75 6C 64 20 62 65 20 6D 61 64 65 y should be made
000050: 20 66 69 72 73 74 2A 29 0D 0A 0D 0A 56 41 52 09 first*)....VAR.
000060: 70 2C 71 3A 50 46 69 6C 65 4E 61 6D 65 3B 0D 0A p,q:PFileName;..
000070: 42 45 47 49 4E 0D 0A 09 70 3A 3D 50 46 69 6C 65 BEGIN...p:=PFile
000080: 4E 61 6D 65 28 61 29 3B 0D 0A 09 71 3A 3D 50 46 Name(a);...q:=PF
000090: 69 6C 65 4E 61 6D 65 28 62 29 3B 0D 0A 09 43 41 ileName(b);...CA
0000A0: 53 45 20 43 6F 6D 70 63 6C 61 73 73 20 4F 46 0D SE Compclass OF.
0000B0: 0A 09 09 54 79 70 65 3A 49 46 20 20 70 5E 2E 54 ...Type:IF p^.T
0000C0: 79 70 65 3C 3E 71 5E 2E 54 79 70 65 20 54 48 45 ype<>q^.Type THE
0000D0: 4E 20 52 45 54 55 52 4E 20 70 5E 2E 54 79 70 65 N RETURN p^.Type
0000E0: 3E 71 5E 2E 54 79 70 65 0D 0A 09 09 20 20 20 20 >q^.Type....
0000F0: 20 45 4C 53 45 20 52 45 54 55 52 4E 20 70 5E 2E ELSE RETURN p^.
000100: 4E 61 6D 65 3E 71 5E 2E 4E 61 6D 65 20 45 4E 44 Name>q^.Name END
000110: 3B 20 0D 0A 09 09 09 7C 0D 0A 09 09 4E 61 6D 65 ; .....|....Name
000120: 2C 57 68 6F 6C 65 3A 49 46 20 70 5E 2E 4E 61 6D ,Whole:IF p^.Nam
000130: 65 3C 3E 71 5E 2E 4E 61 6D 65 20 54 48 45 4E 20 e<>q^.Name THEN
000140: 52 45 54 55 52 4E 20 70 5E 2E 4E 61 6D 65 3E 71 RETURN p^.Name>q
000150: 5E 2E 4E 61 6D 65 0D 0A 09 09 20 20 20 20 20 20 ^.Name....
000160: 45 4C 53 45 20 52 45 54 55 52 4E 20 70 5E 2E 54 ELSE RETURN p^.T
000170: 79 70 65 3E 71 5E 2E 54 79 70 65 20 45 4E 44 3B ype>q^.Type END;
000180: 0D 0A 09 09 45 4E 44 3B 28 2A 43 41 53 45 2A 29 ....END;(*CASE*)
000190: 0D 0A 0D 0A 09 45 4E 44 20 43 6F 6D 70 61 72 3B .....END Compar;
0001A0: 0D 0A 50 52 4F 43 45 44 55 52 45 20 45 71 75 61 ..PROCEDURE Equa
0001B0: 6C 28 70 2C 71 3A 46 69 6C 65 52 65 63 6F 72 64 l(p,q:FileRecord
0001C0: 29 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 28 2A ):BOOLEAN;....(*
0001D0: 09 63 6F 6D 70 61 72 65 20 74 6F 20 6E 61 6D 65 .compare to name
0001E0: 73 20 66 6F 72 20 65 71 75 61 6C 69 74 79 0D 0A s for equality..
0001F0: 09 70 61 74 74 65 72 6E 65 64 20 61 66 74 65 72 .patterned after
Size : 512 (Real : 512)
000000: 2C 66 6E 32 3A 46 69 6C 65 4E 61 6D 65 3B 0D 0A ,fn2:FileName;..
000010: 0D 0A 50 52 4F 43 45 44 55 52 45 20 53 65 74 4E ..PROCEDURE SetN
000020: 61 6D 65 28 66 3A 46 69 6C 65 52 65 63 6F 72 64 ame(f:FileRecord
000030: 3B 56 41 52 20 66 6E 3A 46 69 6C 65 4E 61 6D 65 ;VAR fn:FileName
000040: 29 3B 0D 0A 56 41 52 09 69 2C 6A 3A 43 41 52 44 );..VAR.i,j:CARD
000050: 49 4E 41 4C 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 INAL;....PROCEDU
000060: 52 45 20 50 75 74 28 63 68 3A 43 48 41 52 29 3B RE Put(ch:CHAR);
000070: 0D 0A 42 45 47 49 4E 0D 0A 09 66 6E 5B 69 5D 3A ..BEGIN...fn[i]:
000080: 3D 63 68 3B 0D 0A 09 49 4E 43 28 69 29 3B 0D 0A =ch;...INC(i);..
000090: 09 45 4E 44 20 50 75 74 3B 0D 0A 0D 0A 42 45 47 .END Put;....BEG
0000A0: 49 4E 0D 0A 09 69 3A 3D 30 3B 0D 0A 09 57 49 54 IN...i:=0;...WIT
0000B0: 48 20 66 20 44 4F 0D 0A 09 09 49 46 20 44 65 76 H f DO....IF Dev
0000C0: 69 63 65 3C 3E 27 20 27 20 54 48 45 4E 20 0D 0A ice<>' ' THEN ..
0000D0: 09 09 09 50 75 74 28 44 65 76 69 63 65 29 3B 0D ...Put(Device);.
0000E0: 0A 09 09 09 50 75 74 28 27 3A 27 29 3B 0D 0A 09 ....Put(':');...
0000F0: 09 09 45 4E 44 3B 0D 0A 09 09 6A 3A 3D 31 3B 0D ..END;....j:=1;.
000100: 0A 09 09 57 48 49 4C 45 20 28 6A 3C 3D 48 49 47 ...WHILE (j<=HIG
000110: 48 28 4E 61 6D 65 29 29 20 41 4E 44 20 28 4E 61 H(Name)) AND (Na
000120: 6D 65 5B 6A 5D 3C 3E 30 78 29 20 44 4F 0D 0A 09 me[j]<>0x) DO...
000130: 09 09 50 75 74 28 4E 61 6D 65 5B 6A 5D 29 3B 0D ..Put(Name[j]);.
000140: 0A 09 09 09 49 4E 43 28 6A 29 3B 0D 0A 09 09 09 ....INC(j);.....
000150: 45 4E 44 3B 0D 0A 09 09 6A 3A 3D 31 3B 0D 0A 09 END;....j:=1;...
000160: 09 50 75 74 28 27 2E 27 29 3B 0D 0A 09 09 57 48 .Put('.');....WH
000170: 49 4C 45 20 28 6A 3C 3D 48 49 47 48 28 54 79 70 ILE (j<=HIGH(Typ
000180: 65 29 29 20 41 4E 44 20 28 54 79 70 65 5B 6A 5D e)) AND (Type[j]
000190: 3C 3E 30 78 29 20 44 4F 0D 0A 09 09 09 50 75 74 <>0x) DO.....Put
0001A0: 28 54 79 70 65 5B 6A 5D 29 3B 0D 0A 09 09 09 49 (Type[j]);.....I
0001B0: 4E 43 28 6A 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D NC(j);.....END;.
0001C0: 0A 09 09 57 48 49 4C 45 20 69 3C 3D 48 49 47 48 ...WHILE i<=HIGH
0001D0: 28 66 6E 29 20 44 4F 20 50 75 74 28 27 20 27 29 (fn) DO Put(' ')
0001E0: 20 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 END;....END;...
0001F0: 45 4E 44 20 53 65 74 4E 61 6D 65 3B 0D 0A 42 45 END SetName;..BE
Size : 512 (Real : 512)
000000: 20 74 68 65 20 70 72 65 63 65 64 69 6E 67 20 72 the preceding r
000010: 6F 75 74 69 6E 65 2A 29 0D 0A 0D 0A 0D 0A 42 45 outine*)......BE
000020: 47 49 4E 0D 0A 09 43 41 53 45 20 43 6F 6D 70 63 GIN...CASE Compc
000030: 6C 61 73 73 20 4F 46 0D 0A 09 09 54 79 70 65 3A lass OF....Type:
000040: 52 45 54 55 52 4E 20 70 2E 54 79 70 65 3D 71 2E RETURN p.Type=q.
000050: 54 79 70 65 7C 0D 0A 09 09 4E 61 6D 65 3A 52 45 Type|....Name:RE
000060: 54 55 52 4E 20 70 2E 4E 61 6D 65 3D 71 2E 4E 61 TURN p.Name=q.Na
000070: 6D 65 7C 0D 0A 09 09 57 68 6F 6C 65 3A 49 46 20 me|....Whole:IF
000080: 70 2E 4E 61 6D 65 3C 3E 71 2E 4E 61 6D 65 20 54 p.Name<>q.Name T
000090: 48 45 4E 20 52 45 54 55 52 4E 20 46 41 4C 53 45 HEN RETURN FALSE
0000A0: 0D 0A 09 09 20 20 20 20 20 20 45 4C 53 45 20 52 .... ELSE R
0000B0: 45 54 55 52 4E 20 70 2E 54 79 70 65 3D 71 2E 54 ETURN p.Type=q.T
0000C0: 79 70 65 20 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B ype END;....END;
0000D0: 28 2A 43 41 53 45 2A 29 0D 0A 0D 0A 09 45 4E 44 (*CASE*).....END
0000E0: 20 45 71 75 61 6C 3B 0D 0A 0D 0A 50 52 4F 43 45 Equal;....PROCE
0000F0: 44 55 52 45 20 45 78 70 61 6E 64 4E 61 6D 65 73 DURE ExpandNames
000100: 28 50 61 72 61 6D 3A 50 61 72 61 6D 65 74 65 72 (Param:Parameter
000110: 3B 56 41 52 20 4E 61 6D 65 73 3A 46 69 6C 65 41 ;VAR Names:FileA
000120: 72 72 61 79 3B 0D 0A 09 09 09 56 41 52 20 4E 61 rray;.....VAR Na
000130: 6D 65 43 6F 75 6E 74 3A 49 4E 54 45 47 45 52 29 meCount:INTEGER)
000140: 3B 0D 0A 0D 0A 28 2A 09 45 78 70 61 6E 64 20 77 ;....(*.Expand w
000150: 69 6C 64 20 63 61 72 64 20 66 69 6C 65 20 6E 61 ild card file na
000160: 6D 65 20 69 6E 74 6F 20 6C 69 73 74 20 6F 66 20 me into list of
000170: 66 69 6C 65 73 0D 0A 09 61 6E 64 20 73 6F 72 74 files...and sort
000180: 20 72 65 73 75 6C 74 20 2A 29 0D 0A 56 41 52 09 result *)..VAR.
000190: 69 2C 6A 3A 49 4E 54 45 47 45 52 3B 0D 0A 09 4E i,j:INTEGER;...N
0001A0: 61 6D 65 54 65 78 74 3A 41 52 52 41 59 20 5B 31 ameText:ARRAY [1
0001B0: 2E 2E 4D 61 78 46 69 6C 65 73 5D 20 4F 46 20 46 ..MaxFiles] OF F
0001C0: 69 6C 65 4E 61 6D 65 3B 0D 0A 09 54 65 78 74 3A ileName;...Text:
0001D0: 41 52 52 41 59 5B 30 2E 2E 35 5D 20 4F 46 20 43 ARRAY[0..5] OF C
0001E0: 48 41 52 3B 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 HAR;..BEGIN...IF
0001F0: 20 28 50 61 72 61 6D 5E 2E 43 68 61 72 73 5B 32 (Param^.Chars[2
Size : 512 (Real : 512)
000000: 0D 0A 09 09 09 46 72 65 65 55 70 28 32 29 3B 0D .....FreeUp(2);.
000010: 0A 09 09 09 52 45 54 55 52 4E 20 54 52 55 45 20 ....RETURN TRUE
000020: 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 46 4F 52 .....END;....FOR
000030: 20 69 3A 3D 30 20 54 4F 20 72 65 70 6C 79 31 2D i:=0 TO reply1-
000040: 31 20 44 4F 0D 0A 09 09 09 49 46 20 62 31 5E 5B 1 DO.....IF b1^[
000050: 69 5D 3C 3E 62 32 5E 5B 69 5D 20 54 48 45 4E 20 i]<>b2^[i] THEN
000060: 0D 0A 09 09 09 09 46 72 65 65 55 70 28 32 29 3B ......FreeUp(2);
000070: 0D 0A 09 09 09 09 52 45 54 55 52 4E 20 46 41 4C ......RETURN FAL
000080: 53 45 20 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 SE ......END;...
000090: 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 28 2A ..END;....END;(*
0000A0: 4C 4F 4F 50 2A 29 0D 0A 09 45 4E 44 20 46 69 6C LOOP*)...END Fil
0000B0: 65 43 6F 6D 70 3B 0D 0A 50 52 4F 43 45 44 55 52 eComp;..PROCEDUR
0000C0: 45 20 46 69 6C 65 4D 6F 76 65 28 66 6E 31 2C 66 E FileMove(fn1,f
0000D0: 6E 32 3A 41 52 52 41 59 20 4F 46 20 43 48 41 52 n2:ARRAY OF CHAR
0000E0: 29 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 42 45 47 49 ):BOOLEAN;..BEGI
0000F0: 4E 0D 0A 09 53 65 74 55 70 28 31 29 3B 0D 0A 09 N...SetUp(1);...
000100: 4C 6F 6F 6B 75 70 28 66 31 2C 46 69 6C 65 4E 61 Lookup(f1,FileNa
000110: 6D 65 28 66 6E 31 29 2C 72 65 70 6C 79 29 3B 0D me(fn1),reply);.
000120: 0A 09 49 46 20 72 65 70 6C 79 3C 3E 30 20 54 48 ..IF reply<>0 TH
000130: 45 4E 0D 0A 09 09 57 72 69 74 65 53 74 72 69 6E EN....WriteStrin
000140: 67 28 27 20 49 6E 70 75 74 20 66 69 6C 65 20 6E g(' Input file n
000150: 6F 74 20 66 6F 75 6E 64 20 27 29 3B 0D 0A 09 09 ot found ');....
000160: 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 46 72 65 65 WriteLn;....Free
000170: 55 70 28 31 29 3B 0D 0A 09 09 52 45 54 55 52 4E Up(1);....RETURN
000180: 20 46 41 4C 53 45 3B 0D 0A 09 09 45 4E 44 3B 0D FALSE;....END;.
000190: 0A 09 43 72 65 61 74 65 28 66 32 2C 46 69 6C 65 ..Create(f2,File
0001A0: 4E 61 6D 65 28 66 6E 32 29 2C 72 65 70 6C 79 29 Name(fn2),reply)
0001B0: 3B 0D 0A 09 49 46 20 72 65 70 6C 79 3C 3E 30 20 ;...IF reply<>0
0001C0: 54 48 45 4E 0D 0A 09 09 57 72 69 74 65 53 74 72 THEN....WriteStr
0001D0: 69 6E 67 28 27 20 44 69 72 65 63 74 6F 72 79 20 ing(' Directory
0001E0: 66 75 6C 6C 20 27 29 3B 0D 0A 09 09 57 72 69 74 full ');....Writ
0001F0: 65 4C 6E 3B 0D 0A 09 09 46 72 65 65 55 70 28 31 eLn;....FreeUp(1
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: 2C 6F 75 74 70 75 74 29 3B 0D 0A 09 09 49 6E 4F ,output);....InO
000010: 75 74 2E 53 77 69 74 63 68 4F 75 74 53 74 72 65 ut.SwitchOutStre
000020: 61 6D 28 4C 69 73 74 29 3B 0D 0A 09 09 4C 69 73 am(List);....Lis
000030: 74 4F 70 65 6E 3A 3D 54 52 55 45 3B 0D 0A 09 45 tOpen:=TRUE;...E
000040: 4C 53 45 0D 0A 09 09 49 46 20 4F 75 74 70 75 74 LSE....IF Output
000050: 41 64 64 65 64 20 4F 52 20 4F 75 74 70 75 74 44 Added OR OutputD
000060: 65 6C 65 74 65 64 20 4F 52 20 0D 0A 09 09 20 20 eleted OR ....
000070: 20 4F 75 74 70 75 74 45 71 75 61 6C 20 4F 52 20 OutputEqual OR
000080: 4F 75 74 70 75 74 4D 6F 64 69 66 69 65 64 20 54 OutputModified T
000090: 48 45 4E 20 0D 0A 09 09 09 57 72 69 74 65 53 74 HEN .....WriteSt
0000A0: 72 69 6E 67 28 27 20 41 20 44 20 45 20 61 6E 64 ring(' A D E and
0000B0: 20 4D 20 6F 70 74 69 6F 6E 73 20 72 65 71 75 69 M options requi
0000C0: 72 65 20 6F 75 74 70 75 74 20 66 69 6C 65 20 6E re output file n
0000D0: 61 6D 65 24 27 29 0D 0A 09 09 09 57 72 69 74 65 ame$').....Write
0000E0: 4C 6E 3B 0D 0A 09 09 09 55 73 61 67 65 3B 0D 0A Ln;.....Usage;..
0000F0: 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D ...END;....END;.
000100: 0A 09 45 78 70 61 6E 64 4E 61 6D 65 73 28 50 61 ..ExpandNames(Pa
000110: 72 61 6D 5B 31 5D 2C 4C 65 66 74 4E 61 6D 65 73 ram[1],LeftNames
000120: 2C 4C 65 66 74 4E 61 6D 65 43 6F 75 6E 74 29 3B ,LeftNameCount);
000130: 0D 0A 09 45 78 70 61 6E 64 4E 61 6D 65 73 28 50 ...ExpandNames(P
000140: 61 72 61 6D 5B 32 5D 2C 52 69 67 68 74 4E 61 6D aram[2],RightNam
000150: 65 73 2C 52 69 67 68 74 4E 61 6D 65 43 6F 75 6E es,RightNameCoun
000160: 74 29 3B 0D 0A 0D 0A 09 28 2A 6E 6F 77 20 70 65 t);.....(*now pe
000170: 72 66 6F 72 6D 20 6D 65 72 67 65 20 70 61 73 73 rform merge pass
000180: 20 6F 66 20 74 77 6F 20 6C 69 73 74 73 2A 29 0D of two lists*).
000190: 0A 0D 0A 09 69 3A 3D 31 3B 0D 0A 09 6A 3A 3D 31 ....i:=1;...j:=1
0001A0: 3B 0D 0A 09 57 48 49 4C 45 20 28 69 3C 3D 4C 65 ;...WHILE (i<=Le
0001B0: 66 74 4E 61 6D 65 43 6F 75 6E 74 29 20 41 4E 44 ftNameCount) AND
0001C0: 20 28 6A 3C 3D 52 69 67 68 74 4E 61 6D 65 43 6F (j<=RightNameCo
0001D0: 75 6E 74 29 20 44 4F 0D 0A 09 09 49 46 20 45 71 unt) DO....IF Eq
0001E0: 75 61 6C 28 4C 65 66 74 4E 61 6D 65 73 5B 69 5D ual(LeftNames[i]
0001F0: 2C 52 69 67 68 74 4E 61 6D 65 73 5B 6A 5D 29 20 ,RightNames[j])
Size : 512 (Real : 512)
000000: 49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D IMPLEMENTATION M
000010: 4F 44 55 4C 45 20 46 69 6C 65 4F 70 73 3B 0D 0A ODULE FileOps;..
000020: 0D 0A 46 52 4F 4D 09 53 59 53 54 45 4D 09 49 4D ..FROM.SYSTEM.IM
000030: 50 4F 52 54 20 42 59 54 45 2C 41 44 52 2C 41 44 PORT BYTE,ADR,AD
000040: 44 52 45 53 53 3B 0D 0A 46 52 4F 4D 09 53 54 4F DRESS;..FROM.STO
000050: 52 41 47 45 20 49 4D 50 4F 52 54 20 46 72 65 65 RAGE IMPORT Free
000060: 53 70 61 63 65 2C 41 4C 4C 4F 43 41 54 45 2C 44 Space,ALLOCATE,D
000070: 45 41 4C 4C 4F 43 41 54 45 2C 52 45 4C 45 41 53 EALLOCATE,RELEAS
000080: 45 3B 0D 0A 46 52 4F 4D 09 46 69 6C 65 73 09 49 E;..FROM.Files.I
000090: 4D 50 4F 52 54 20 4C 6F 6F 6B 75 70 2C 43 72 65 MPORT Lookup,Cre
0000A0: 61 74 65 2C 53 65 71 52 65 61 64 42 6C 6F 63 6B ate,SeqReadBlock
0000B0: 2C 53 65 71 57 72 69 74 65 42 6C 6F 63 6B 2C 43 ,SeqWriteBlock,C
0000C0: 6C 6F 73 65 2C 0D 0A 09 09 09 46 49 4C 45 2C 46 lose,.....FILE,F
0000D0: 69 6C 65 4E 61 6D 65 3B 0D 0A 46 52 4F 4D 09 54 ileName;..FROM.T
0000E0: 65 72 6D 69 6E 61 6C 20 49 4D 50 4F 52 54 20 57 erminal IMPORT W
0000F0: 72 69 74 65 53 74 72 69 6E 67 2C 57 72 69 74 65 riteString,Write
000100: 4C 6E 3B 0D 0A 0D 0A 28 2A 09 50 65 72 66 6F 72 Ln;....(*.Perfor
000110: 6D 20 73 6F 6D 65 20 66 69 6C 65 20 6F 70 65 72 m some file oper
000120: 61 74 69 6F 6E 73 20 2A 29 0D 0A 0D 0A 54 59 50 ations *)....TYP
000130: 45 09 50 42 6C 6F 63 6B 3D 50 4F 49 4E 54 45 52 E.PBlock=POINTER
000140: 20 54 4F 20 42 6C 6F 63 6B 3B 0D 0A 09 42 6C 6F TO Block;...Blo
000150: 63 6B 3D 41 52 52 41 59 5B 30 2E 2E 31 32 37 5D ck=ARRAY[0..127]
000160: 20 4F 46 20 42 59 54 45 3B 0D 0A 56 41 52 09 62 OF BYTE;..VAR.b
000170: 31 2C 62 32 3A 50 42 6C 6F 63 6B 3B 0D 0A 09 69 1,b2:PBlock;...i
000180: 2C 6A 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 42 ,j:CARDINAL;...B
000190: 75 66 66 53 69 7A 65 3A 43 41 52 44 49 4E 41 4C uffSize:CARDINAL
0001A0: 3B 0D 0A 09 72 65 70 6C 79 3A 49 4E 54 45 47 45 ;...reply:INTEGE
0001B0: 52 3B 0D 0A 09 66 31 2C 66 32 3A 46 49 4C 45 3B R;...f1,f2:FILE;
0001C0: 0D 0A 09 72 65 70 6C 79 31 2C 72 65 70 6C 79 32 ...reply1,reply2
0001D0: 3A 49 4E 54 45 47 45 52 3B 0D 0A 50 52 4F 43 45 :INTEGER;..PROCE
0001E0: 44 55 52 45 20 53 65 74 55 70 28 43 6F 75 6E 74 DURE SetUp(Count
0001F0: 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A 0D 0A 28 :CARDINAL);....(
Size : 512 (Real : 512)
000000: 54 48 45 4E 0D 0A 0D 0A 09 09 09 57 72 69 74 65 THEN.......Write
000010: 4E 61 6D 65 28 4C 65 66 74 4E 61 6D 65 73 5B 69 Name(LeftNames[i
000020: 5D 2C 4F 75 74 70 75 74 45 71 75 61 6C 29 3B 0D ],OutputEqual);.
000030: 0A 09 09 09 57 72 69 74 65 4E 61 6D 65 28 52 69 ....WriteName(Ri
000040: 67 68 74 4E 61 6D 65 73 5B 6A 5D 2C 46 41 4C 53 ghtNames[j],FALS
000050: 45 29 3B 0D 0A 09 09 09 49 46 20 43 6F 6D 70 61 E);.....IF Compa
000060: 72 65 43 6F 6E 74 65 6E 74 73 20 41 4E 44 20 0D reContents AND .
000070: 0A 09 09 09 20 20 4E 4F 54 20 43 6F 6D 70 61 72 .... NOT Compar
000080: 65 4F 4B 28 4C 65 66 74 4E 61 6D 65 73 5B 69 5D eOK(LeftNames[i]
000090: 2C 52 69 67 68 74 4E 61 6D 65 73 5B 6A 5D 29 20 ,RightNames[j])
0000A0: 54 48 45 4E 0D 0A 09 09 09 09 57 72 69 74 65 53 THEN......WriteS
0000B0: 74 72 69 6E 67 28 27 20 46 69 6C 65 73 20 44 69 tring(' Files Di
0000C0: 66 66 65 72 20 27 29 3B 0D 0A 09 09 09 09 49 46 ffer ');......IF
0000D0: 20 4F 75 74 70 75 74 4D 6F 64 69 66 69 65 64 20 OutputModified
0000E0: 54 48 45 4E 0D 0A 09 09 09 09 09 57 72 69 74 65 THEN.......Write
0000F0: 54 6F 4C 69 73 74 28 4C 65 66 74 4E 61 6D 65 73 ToList(LeftNames
000100: 5B 69 5D 29 3B 0D 0A 09 09 09 09 09 45 4E 44 3B [i]);.......END;
000110: 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 57 ......END;.....W
000120: 72 69 74 65 4C 6E 3B 0D 0A 09 09 09 49 4E 43 28 riteLn;.....INC(
000130: 69 29 3B 0D 0A 09 09 09 49 4E 43 28 6A 29 3B 0D i);.....INC(j);.
000140: 0A 0D 0A 09 09 45 4C 53 49 46 20 4E 4F 54 20 43 .....ELSIF NOT C
000150: 6F 6D 70 61 72 28 41 44 52 28 4C 65 66 74 4E 61 ompar(ADR(LeftNa
000160: 6D 65 73 5B 69 5D 29 2C 41 44 52 28 52 69 67 68 mes[i]),ADR(Righ
000170: 74 4E 61 6D 65 73 5B 6A 5D 29 29 20 54 48 45 4E tNames[j])) THEN
000180: 0D 0A 0D 0A 09 09 09 50 72 69 6E 74 4C 65 66 74 .......PrintLeft
000190: 3B 0D 0A 09 09 09 49 4E 43 28 69 29 3B 0D 0A 0D ;.....INC(i);...
0001A0: 0A 09 09 45 4C 53 45 20 28 2A 4C 65 66 74 6E 61 ...ELSE (*Leftna
0001B0: 6D 65 73 5B 69 5D 3E 52 69 67 68 74 4E 61 6D 65 mes[i]>RightName
0001C0: 73 5B 6A 5D 2A 29 0D 0A 09 0D 0A 09 09 09 50 72 s[j]*)........Pr
0001D0: 69 6E 74 52 69 67 68 74 3B 09 0D 0A 09 09 09 49 intRight;......I
0001E0: 4E 43 28 6A 29 3B 0D 0A 09 09 09 45 4E 44 3B 28 NC(j);.....END;(
0001F0: 2A 49 46 2A 29 0D 0A 09 09 45 4E 44 3B 28 2A 57 *IF*)....END;(*W
Size : 512 (Real : 512)
000000: 2A 09 53 65 74 20 75 70 20 31 20 6F 72 20 32 20 *.Set up 1 or 2
000010: 62 75 66 66 65 72 73 20 75 73 69 6E 67 20 61 6C buffers using al
000020: 6C 20 61 76 61 69 6C 61 62 6C 65 20 6D 65 6D 6F l available memo
000030: 72 79 20 2A 29 0D 0A 0D 0A 42 45 47 49 4E 0D 0A ry *)....BEGIN..
000040: 09 69 3A 3D 28 46 72 65 65 53 70 61 63 65 28 29 .i:=(FreeSpace()
000050: 2D 31 30 32 34 29 20 44 49 56 20 31 32 38 3B 0D -1024) DIV 128;.
000060: 0A 09 49 46 20 69 3C 43 6F 75 6E 74 20 54 48 45 ..IF i<Count THE
000070: 4E 0D 0A 09 09 57 72 69 74 65 53 74 72 69 6E 67 N....WriteString
000080: 28 27 20 4F 75 74 20 6F 66 20 4D 65 6D 6F 72 79 (' Out of Memory
000090: 20 69 6E 20 46 69 6C 65 4F 70 73 27 29 3B 0D 0A in FileOps');..
0000A0: 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 48 41 ..WriteLn;....HA
0000B0: 4C 54 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 69 3A LT;....END;...i:
0000C0: 3D 69 20 44 49 56 20 43 6F 75 6E 74 3B 0D 0A 09 =i DIV Count;...
0000D0: 42 75 66 66 53 69 7A 65 3A 3D 31 32 38 2A 69 3B BuffSize:=128*i;
0000E0: 0D 0A 09 41 4C 4C 4F 43 41 54 45 28 62 31 2C 42 ...ALLOCATE(b1,B
0000F0: 75 66 66 53 69 7A 65 29 3B 0D 0A 09 49 46 20 43 uffSize);...IF C
000100: 6F 75 6E 74 3D 32 20 54 48 45 4E 20 41 4C 4C 4F ount=2 THEN ALLO
000110: 43 41 54 45 28 62 32 2C 42 75 66 66 53 69 7A 65 CATE(b2,BuffSize
000120: 29 20 45 4E 44 3B 0D 0A 09 45 4E 44 20 53 65 74 ) END;...END Set
000130: 55 70 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 46 Up;..PROCEDURE F
000140: 72 65 65 55 70 28 69 3A 43 41 52 44 49 4E 41 4C reeUp(i:CARDINAL
000150: 29 3B 0D 0A 28 2A 09 72 65 6C 65 61 73 65 20 62 );..(*.release b
000160: 75 66 66 65 72 73 20 2D 20 75 73 65 64 20 74 6F uffers - used to
000170: 20 64 69 73 70 6F 73 65 20 74 68 65 6D 20 62 75 dispose them bu
000180: 74 20 6E 6F 77 0D 0A 09 64 6F 65 73 20 61 20 72 t now...does a r
000190: 65 6C 65 61 73 65 20 77 68 69 63 68 20 69 73 20 elease which is
0001A0: 66 61 73 74 65 72 2E 20 41 73 20 61 20 72 65 73 faster. As a res
0001B0: 75 6C 74 20 70 61 72 61 6D 65 74 65 72 20 69 73 ult parameter is
0001C0: 20 6E 6F 74 20 72 65 71 75 69 72 65 64 0D 0A 20 not required..
0001D0: 2A 29 0D 0A 42 45 47 49 4E 0D 0A 09 52 45 4C 45 *)..BEGIN...RELE
0001E0: 41 53 45 28 41 44 44 52 45 53 53 28 62 31 29 29 ASE(ADDRESS(b1))
0001F0: 3B 0D 0A 09 45 4E 44 20 46 72 65 65 55 70 3B 0D ;...END FreeUp;.
Size : 512 (Real : 512)
000000: 48 49 4C 45 2A 29 0D 0A 0D 0A 09 28 2A 70 72 6F HILE*).....(*pro
000010: 63 65 73 73 20 73 74 72 61 67 67 6C 65 72 73 2A cess stragglers*
000020: 29 0D 0A 0D 0A 09 57 48 49 4C 45 20 69 3C 3D 4C ).....WHILE i<=L
000030: 65 66 74 4E 61 6D 65 43 6F 75 6E 74 20 44 4F 0D eftNameCount DO.
000040: 0A 09 09 50 72 69 6E 74 4C 65 66 74 3B 0D 0A 09 ...PrintLeft;...
000050: 09 49 4E 43 28 69 29 3B 0D 0A 09 09 45 4E 44 3B .INC(i);....END;
000060: 0D 0A 0D 0A 09 57 48 49 4C 45 20 6A 3C 3D 52 69 .....WHILE j<=Ri
000070: 67 68 74 4E 61 6D 65 43 6F 75 6E 74 20 44 4F 0D ghtNameCount DO.
000080: 0A 09 09 50 72 69 6E 74 52 69 67 68 74 3B 0D 0A ...PrintRight;..
000090: 09 09 49 4E 43 28 6A 29 3B 0D 0A 09 09 45 4E 44 ..INC(j);....END
0000A0: 3B 0D 0A 09 49 46 20 4C 69 73 74 4F 70 65 6E 20 ;...IF ListOpen
0000B0: 54 48 45 4E 0D 0A 09 09 44 69 73 63 6F 6E 6E 65 THEN....Disconne
0000C0: 63 74 28 4C 69 73 74 2C 54 52 55 45 29 3B 0D 0A ct(List,TRUE);..
0000D0: 09 09 45 4E 44 3B 09 0D 0A 09 45 4E 44 20 43 6F ..END;....END Co
0000E0: 6D 70 44 69 72 2E 0D 0A 0D 0A 1A 1A 1A 1A 1A 1A mpDir...........
0000F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000100: 0A 09 09 28 2A 70 6F 73 73 69 62 6C 65 20 6D 61 ...(*possible ma
000110: 74 63 68 20 2D 20 63 68 65 63 6B 20 74 68 61 74 tch - check that
000120: 20 74 68 65 20 6E 65 77 20 6C 69 6E 65 20 6F 6E the new line on
000130: 6C 79 20 6D 61 74 63 68 65 73 20 74 68 69 73 20 ly matches this
000140: 6F 6C 64 20 6C 69 6E 65 2A 29 0D 0A 0D 0A 09 09 old line*)......
000150: 09 63 6F 75 6E 74 3A 3D 30 3B 0D 0A 09 09 09 6A .count:=0;.....j
000160: 3A 3D 31 3B 0D 0A 09 09 09 57 48 49 4C 45 20 28 :=1;.....WHILE (
000170: 63 6F 75 6E 74 3C 32 29 20 41 4E 44 20 28 6A 3C count<2) AND (j<
000180: 3D 4F 6C 64 4C 65 6E 29 20 44 4F 0D 0A 09 09 09 =OldLen) DO.....
000190: 09 49 46 20 4F 6C 64 48 61 73 68 5B 6A 5D 3D 4E .IF OldHash[j]=N
0001A0: 65 77 48 61 73 68 5B 6B 5D 20 54 48 45 4E 20 0D ewHash[k] THEN .
0001B0: 0A 09 09 09 09 09 49 4E 43 28 63 6F 75 6E 74 29 ......INC(count)
0001C0: 3B 0D 0A 09 09 09 09 09 45 4E 44 3B 0D 0A 09 09 ;.......END;....
0001D0: 09 09 49 4E 43 28 6A 29 3B 0D 0A 09 09 09 09 45 ..INC(j);......E
0001E0: 4E 44 3B 0D 0A 09 09 09 49 46 20 63 6F 75 6E 74 ND;.....IF count
0001F0: 3D 31 20 54 48 45 4E 0D 0A 0D 0A 09 09 09 28 2A =1 THEN.......(*
Size : 512 (Real : 512)
000000: 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 46 69 6C ...PROCEDURE Fil
000010: 65 43 6F 6D 70 28 66 6E 31 2C 66 6E 32 3A 41 52 eComp(fn1,fn2:AR
000020: 52 41 59 20 4F 46 20 43 48 41 52 29 3A 42 4F 4F RAY OF CHAR):BOO
000030: 4C 45 41 4E 3B 0D 0A 0D 0A 28 2A 09 43 6F 6D 70 LEAN;....(*.Comp
000040: 61 72 65 20 74 77 6F 20 66 69 6C 65 73 20 2D 20 are two files -
000050: 72 65 74 75 72 6E 20 54 52 55 45 20 69 66 20 65 return TRUE if e
000060: 71 75 61 6C 20 2A 29 0D 0A 56 41 52 09 69 3A 49 qual *)..VAR.i:I
000070: 4E 54 45 47 45 52 3B 0D 0A 42 45 47 49 4E 0D 0A NTEGER;..BEGIN..
000080: 09 53 65 74 55 70 28 32 29 3B 0D 0A 09 4C 6F 6F .SetUp(2);...Loo
000090: 6B 75 70 28 66 31 2C 46 69 6C 65 4E 61 6D 65 28 kup(f1,FileName(
0000A0: 66 6E 31 29 2C 72 65 70 6C 79 29 3B 0D 0A 09 49 fn1),reply);...I
0000B0: 46 20 72 65 70 6C 79 3C 3E 30 20 54 48 45 4E 20 F reply<>0 THEN
0000C0: 0D 0A 09 09 46 72 65 65 55 70 28 32 29 3B 0D 0A ....FreeUp(2);..
0000D0: 09 09 52 45 54 55 52 4E 20 46 41 4C 53 45 20 0D ..RETURN FALSE .
0000E0: 0A 09 09 45 4E 44 3B 0D 0A 09 4C 6F 6F 6B 75 70 ...END;...Lookup
0000F0: 28 66 32 2C 46 69 6C 65 4E 61 6D 65 28 66 6E 32 (f2,FileName(fn2
000100: 29 2C 72 65 70 6C 79 29 3B 0D 0A 09 49 46 20 72 ),reply);...IF r
000110: 65 70 6C 79 3C 3E 30 20 54 48 45 4E 20 0D 0A 09 eply<>0 THEN ...
000120: 09 46 72 65 65 55 70 28 32 29 3B 0D 0A 09 09 52 .FreeUp(2);....R
000130: 45 54 55 52 4E 20 46 41 4C 53 45 20 0D 0A 09 09 ETURN FALSE ....
000140: 45 4E 44 3B 0D 0A 09 4C 4F 4F 50 0D 0A 09 09 53 END;...LOOP....S
000150: 65 71 52 65 61 64 42 6C 6F 63 6B 28 66 31 2C 41 eqReadBlock(f1,A
000160: 44 52 28 62 31 5E 29 2C 42 75 66 66 53 69 7A 65 DR(b1^),BuffSize
000170: 2C 72 65 70 6C 79 31 29 3B 0D 0A 09 09 53 65 71 ,reply1);....Seq
000180: 52 65 61 64 42 6C 6F 63 6B 28 66 32 2C 41 44 52 ReadBlock(f2,ADR
000190: 28 62 32 5E 29 2C 42 75 66 66 53 69 7A 65 2C 72 (b2^),BuffSize,r
0001A0: 65 70 6C 79 32 29 3B 0D 0A 09 09 49 46 20 72 65 eply2);....IF re
0001B0: 70 6C 79 31 3C 3E 72 65 70 6C 79 32 20 54 48 45 ply1<>reply2 THE
0001C0: 4E 0D 0A 09 09 09 46 72 65 65 55 70 28 32 29 3B N.....FreeUp(2);
0001D0: 0D 0A 09 09 09 52 45 54 55 52 4E 20 46 41 4C 53 .....RETURN FALS
0001E0: 45 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 49 46 E.....END;....IF
0001F0: 20 72 65 70 6C 79 31 3C 3D 30 20 54 48 45 4E 20 reply1<=0 THEN
Size : 512 (Real : 512)
000000: 44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C DEFINITION MODUL
000010: 45 20 46 69 6C 65 4F 70 73 3B 0D 0A 0D 0A 28 2A E FileOps;....(*
000020: 09 50 65 72 66 6F 72 6D 20 73 6F 6D 65 20 66 69 .Perform some fi
000030: 6C 65 20 6F 70 65 72 61 74 69 6F 6E 73 20 2A 29 le operations *)
000040: 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 46 69 ....PROCEDURE Fi
000050: 6C 65 43 6F 6D 70 28 66 31 2C 66 32 3A 41 52 52 leComp(f1,f2:ARR
000060: 41 59 20 4F 46 20 43 48 41 52 29 3A 42 4F 4F 4C AY OF CHAR):BOOL
000070: 45 41 4E 3B 0D 0A 0D 0A 28 2A 09 43 6F 6D 70 61 EAN;....(*.Compa
000080: 72 65 20 74 77 6F 20 66 69 6C 65 73 20 2D 20 72 re two files - r
000090: 65 74 75 72 6E 20 54 52 55 45 20 69 66 20 65 71 eturn TRUE if eq
0000A0: 75 61 6C 0D 0A 0D 0A 09 49 46 20 65 69 74 68 65 ual.....IF eithe
0000B0: 72 20 66 69 6C 65 20 69 73 20 6E 6F 74 20 70 72 r file is not pr
0000C0: 65 73 65 6E 74 2C 20 46 41 4C 53 45 20 69 73 20 esent, FALSE is
0000D0: 72 65 74 75 72 6E 65 64 0D 0A 09 46 41 4C 53 45 returned...FALSE
0000E0: 20 69 73 20 73 74 69 6C 6C 20 72 65 74 75 72 6E is still return
0000F0: 65 64 20 69 66 20 6E 65 69 74 68 65 72 20 66 69 ed if neither fi
000100: 6C 65 20 69 73 20 70 72 65 73 65 6E 74 20 2A 29 le is present *)
000110: 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 46 69 ....PROCEDURE Fi
000120: 6C 65 4D 6F 76 65 28 66 31 2C 66 32 3A 41 52 52 leMove(f1,f2:ARR
000130: 41 59 20 4F 46 20 43 48 41 52 29 3A 42 4F 4F 4C AY OF CHAR):BOOL
000140: 45 41 4E 3B 0D 0A 0D 0A 28 2A 09 4D 6F 76 65 20 EAN;....(*.Move
000150: 66 31 20 74 6F 20 66 32 20 2D 20 72 65 74 75 72 f1 to f2 - retur
000160: 6E 73 20 54 52 55 45 20 69 66 20 73 75 63 63 65 ns TRUE if succe
000170: 73 73 66 75 6C 20 2A 29 0D 0A 0D 0A 45 4E 44 20 ssful *)....END
000180: 46 69 6C 65 4F 70 73 2E 0D 0A 0D 0A 0D 0A 1A 1A FileOps.........
000190: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001A0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001B0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001C0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
Size : 512 (Real : 512)
000000: 44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C DEFINITION MODUL
000010: 45 20 49 6D 70 6F 72 74 3B 0D 0A 0D 0A 28 2A 09 E Import;....(*.
000020: 54 68 69 73 20 6D 6F 64 75 6C 65 20 61 6C 6C 6F This module allo
000030: 77 73 20 79 6F 75 20 74 6F 20 70 69 63 6B 20 75 ws you to pick u
000040: 70 0D 0A 09 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 p...information
000050: 61 62 6F 75 74 20 73 79 6D 62 6F 6C 73 20 65 78 about symbols ex
000060: 70 6F 72 74 65 64 0D 0A 09 66 72 6F 6D 20 61 6E ported...from an
000070: 6F 74 68 65 72 20 6D 6F 64 75 6C 65 2E 20 49 74 other module. It
000080: 20 69 73 20 75 73 65 64 20 62 79 20 74 68 65 20 is used by the
000090: 61 73 73 65 6D 62 6C 65 72 0D 0A 09 43 6F 70 79 assembler...Copy
0000A0: 72 69 67 68 74 20 28 43 29 20 44 61 76 65 20 4D right (C) Dave M
0000B0: 6F 6F 72 65 2C 20 46 54 4C 20 4D 6F 64 75 6C 61 oore, FTL Modula
0000C0: 2D 32 20 31 39 38 36 0D 0A 09 54 68 69 73 20 69 -2 1986...This i
0000D0: 73 20 61 20 67 65 6E 65 72 69 63 20 6D 6F 64 75 s a generic modu
0000E0: 6C 65 0D 0A 20 2A 29 0D 0A 46 52 4F 4D 09 53 59 le.. *)..FROM.SY
0000F0: 53 54 45 4D 20 49 4D 50 4F 52 54 20 42 59 54 45 STEM IMPORT BYTE
000100: 2C 41 44 44 52 45 53 53 3B 0D 0A 46 52 4F 4D 09 ,ADDRESS;..FROM.
000110: 46 69 6C 65 73 20 49 4D 50 4F 52 54 20 46 69 6C Files IMPORT Fil
000120: 65 4E 61 6D 65 3B 0D 0A 54 59 50 45 09 61 6C 66 eName;..TYPE.alf
000130: 61 09 3D 20 41 52 52 41 59 5B 31 2E 2E 33 32 5D a.= ARRAY[1..32]
000140: 20 4F 46 20 43 48 41 52 3B 20 0D 0A 09 0D 0A 09 OF CHAR; ......
000150: 74 79 70 65 63 6C 61 73 73 3D 28 69 6E 74 74 79 typeclass=(intty
000160: 70 65 2C 72 65 61 6C 74 79 70 65 2C 63 68 61 72 pe,realtype,char
000170: 74 79 70 65 2C 62 6F 6F 6C 74 79 70 65 2C 0D 0A type,booltype,..
000180: 09 09 61 72 72 61 79 74 79 70 65 2C 72 65 63 6F ..arraytype,reco
000190: 72 64 74 79 70 65 2C 73 75 62 72 74 79 70 65 2C rdtype,subrtype,
0001A0: 66 6F 72 77 61 72 64 72 65 66 2C 70 6F 69 6E 74 forwardref,point
0001B0: 74 79 70 65 2C 0D 0A 09 09 73 65 74 74 79 70 65 type,....settype
0001C0: 2C 73 74 72 69 6E 67 74 79 70 65 2C 77 6F 72 64 ,stringtype,word
0001D0: 74 79 70 65 2C 62 79 74 65 74 79 70 65 2C 70 72 type,bytetype,pr
0001E0: 74 79 70 65 2C 65 6E 75 6D 74 79 70 65 2C 0D 0A type,enumtype,..
0001F0: 09 09 63 61 72 64 74 79 70 65 2C 61 64 64 72 74 ..cardtype,addrt
Size : 512 (Real : 512)
000000: 49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D IMPLEMENTATION M
000010: 4F 44 55 4C 45 20 47 65 74 46 69 6C 65 73 3B 0D ODULE GetFiles;.
000020: 0A 46 52 4F 4D 20 43 50 4D 20 49 4D 50 4F 52 54 .FROM CPM IMPORT
000030: 20 42 44 4F 53 2C 42 44 4F 53 48 4C 2C 73 66 6F BDOS,BDOSHL,sfo
000040: 66 63 2C 73 6E 6F 66 63 2C 66 63 62 2C 73 64 61 fc,snofc,fcb,sda
000050: 66 63 3B 0D 0A 46 52 4F 4D 20 43 50 4D 42 49 4F fc;..FROM CPMBIO
000060: 53 20 49 4D 50 4F 52 54 20 64 69 72 65 63 74 6F S IMPORT directo
000070: 72 79 3B 0D 0A 46 52 4F 4D 20 53 59 53 54 45 4D ry;..FROM SYSTEM
000080: 20 49 4D 50 4F 52 54 20 41 44 52 3B 0D 0A 46 52 IMPORT ADR;..FR
000090: 4F 4D 20 46 69 6C 65 73 20 49 4D 50 4F 52 54 20 OM Files IMPORT
0000A0: 43 6F 6E 76 65 72 74 46 69 6C 65 4E 61 6D 65 3B ConvertFileName;
0000B0: 0D 0A 28 2A 09 47 65 74 20 61 20 6C 69 73 74 20 ..(*.Get a list
0000C0: 6F 66 20 66 69 6C 65 20 6E 61 6D 65 73 20 6D 65 of file names me
0000D0: 65 74 69 6E 67 20 61 20 77 69 6C 64 63 61 72 64 eting a wildcard
0000E0: 20 64 65 73 63 72 69 70 74 69 6F 6E 2A 29 0D 0A description*)..
0000F0: 56 41 52 09 69 2C 6A 2C 6B 3A 49 4E 54 45 47 45 VAR.i,j,k:INTEGE
000100: 52 3B 0D 0A 09 66 3A 66 63 62 3B 0D 0A 09 6E 61 R;...f:fcb;...na
000110: 6D 65 3A 46 69 6C 65 4E 61 6D 65 3B 0D 0A 09 44 me:FileName;...D
000120: 65 76 43 68 61 72 3A 43 48 41 52 3B 0D 0A 09 57 evChar:CHAR;...W
000130: 69 6C 64 43 61 72 64 3A 42 4F 4F 4C 45 41 4E 3B ildCard:BOOLEAN;
000140: 0D 0A 50 52 4F 43 45 44 55 52 45 20 47 65 74 4E ..PROCEDURE GetN
000150: 61 6D 65 73 28 50 61 74 74 65 72 6E 3A 41 52 52 ames(Pattern:ARR
000160: 41 59 20 4F 46 20 43 48 41 52 3B 56 41 52 20 6E AY OF CHAR;VAR n
000170: 61 6D 65 73 3A 41 52 52 41 59 20 4F 46 20 46 69 ames:ARRAY OF Fi
000180: 6C 65 4E 61 6D 65 3B 0D 0A 09 09 20 20 56 41 52 leName;.... VAR
000190: 20 43 6F 75 6E 74 3A 49 4E 54 45 47 45 52 29 3B Count:INTEGER);
0001A0: 0D 0A 56 41 52 09 64 6D 61 3A 41 52 52 41 59 20 ..VAR.dma:ARRAY
0001B0: 5B 30 2E 2E 33 5D 20 4F 46 20 64 69 72 65 63 74 [0..3] OF direct
0001C0: 6F 72 79 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 ory;....PROCEDUR
0001D0: 45 20 53 65 61 72 63 68 46 6F 72 46 69 6C 65 4E E SearchForFileN
0001E0: 61 6D 65 73 3B 0D 0A 42 45 47 49 4E 0D 0A 09 43 ames;..BEGIN...C
0001F0: 6F 6E 76 65 72 74 46 69 6C 65 4E 61 6D 65 28 66 onvertFileName(f
Size : 512 (Real : 512)
000000: 29 3B 0D 0A 09 09 52 45 54 55 52 4E 20 46 41 4C );....RETURN FAL
000010: 53 45 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 4C 4F SE;....END;...LO
000020: 4F 50 0D 0A 09 09 53 65 71 52 65 61 64 42 6C 6F OP....SeqReadBlo
000030: 63 6B 28 66 31 2C 41 44 52 28 62 31 5E 29 2C 42 ck(f1,ADR(b1^),B
000040: 75 66 66 53 69 7A 65 2C 72 65 70 6C 79 31 29 3B uffSize,reply1);
000050: 0D 0A 09 09 49 46 20 72 65 70 6C 79 31 3C 3D 30 ....IF reply1<=0
000060: 20 54 48 45 4E 0D 0A 09 09 09 43 6C 6F 73 65 28 THEN.....Close(
000070: 66 31 29 3B 0D 0A 09 09 09 43 6C 6F 73 65 28 66 f1);.....Close(f
000080: 32 29 3B 0D 0A 09 09 09 46 72 65 65 55 70 28 31 2);.....FreeUp(1
000090: 29 3B 0D 0A 09 09 09 52 45 54 55 52 4E 20 54 52 );.....RETURN TR
0000A0: 55 45 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 UE;.....END;....
0000B0: 53 65 71 57 72 69 74 65 42 6C 6F 63 6B 28 66 32 SeqWriteBlock(f2
0000C0: 2C 41 44 52 28 62 32 5E 29 2C 42 75 66 66 53 69 ,ADR(b2^),BuffSi
0000D0: 7A 65 2C 72 65 70 6C 79 32 29 3B 0D 0A 09 09 49 ze,reply2);....I
0000E0: 46 20 72 65 70 6C 79 32 3C 3E 72 65 70 6C 79 31 F reply2<>reply1
0000F0: 20 54 48 45 4E 0D 0A 09 09 09 57 72 69 74 65 53 THEN.....WriteS
000100: 74 72 69 6E 67 28 27 20 44 69 73 63 20 66 75 6C tring(' Disc ful
000110: 6C 20 27 29 3B 0D 0A 09 09 09 57 72 69 74 65 4C l ');.....WriteL
000120: 6E 3B 0D 0A 09 09 09 46 72 65 65 55 70 28 31 29 n;.....FreeUp(1)
000130: 3B 0D 0A 09 09 09 52 45 54 55 52 4E 20 46 41 4C ;.....RETURN FAL
000140: 53 45 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 SE;.....END;....
000150: 45 4E 44 3B 0D 0A 09 45 4E 44 20 46 69 6C 65 4D END;...END FileM
000160: 6F 76 65 3B 0D 0A 0D 0A 45 4E 44 20 46 69 6C 65 ove;....END File
000170: 4F 70 73 2E 0D 0A 0D 0A 0D 0A 1A 1A 1A 1A 1A 1A Ops.............
000180: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000190: 1A 00 00 00 00 00 52 42 82 0D 30 02 80 03 00 00 ......RB..0.....
0001A0: 54 45 53 54 4E 45 53 54 4D 4F 44 20 00 00 00 00 TESTNESTMOD ....
0001B0: 00 00 00 00 00 00 67 3E 52 0D 08 1F 5B 01 00 00 ......g>R...[...
0001C0: 53 4D 41 4C 4C 49 4F 20 52 45 4C 20 00 00 00 00 SMALLIO REL ....
0001D0: 00 00 00 00 00 00 AF 42 82 0D 38 02 00 09 00 00 .......B..8.....
0001E0: 42 55 49 4C 44 4C 49 42 42 41 54 20 00 00 00 00 BUILDLIBBAT ....
0001F0: 00 00 00 00 00 00 87 9D 79 0C AB 13 00 03 00 00 ........y.......
Size : 512 (Real : 512)
000000: 2C 6E 61 6D 65 29 3B 0D 0A 0D 0A 09 49 46 20 66 ,name);.....IF f
000010: 2E 66 63 62 64 6E 3D 30 20 54 48 45 4E 20 44 65 .fcbdn=0 THEN De
000020: 76 43 68 61 72 3A 3D 27 20 27 0D 0A 09 45 4C 53 vChar:=' '...ELS
000030: 45 20 44 65 76 43 68 61 72 3A 3D 43 48 52 28 4F E DevChar:=CHR(O
000040: 52 44 28 66 2E 66 63 62 64 6E 29 2B 28 4F 52 44 RD(f.fcbdn)+(ORD
000050: 28 27 41 27 29 2D 31 29 29 20 45 4E 44 3B 0D 0A ('A')-1)) END;..
000060: 0D 0A 0D 0A 09 28 2A 09 4E 6F 77 20 73 63 61 6E .....(*.Now scan
000070: 20 66 6F 72 20 6D 61 74 63 68 69 6E 67 20 6E 61 for matching na
000080: 6D 65 73 2A 29 0D 0A 0D 0A 09 69 3A 3D 42 44 4F mes*).....i:=BDO
000090: 53 28 73 64 61 66 63 2C 41 44 52 28 64 6D 61 29 S(sdafc,ADR(dma)
0000A0: 29 3B 09 28 2A 73 65 74 20 64 6D 61 20 62 75 66 );.(*set dma buf
0000B0: 66 65 72 20 61 64 64 72 65 73 73 2A 29 09 0D 0A fer address*)...
0000C0: 09 69 3A 3D 42 44 4F 53 28 73 66 6F 66 63 2C 41 .i:=BDOS(sfofc,A
0000D0: 44 52 28 66 29 29 3B 09 09 28 2A 73 74 61 72 74 DR(f));..(*start
0000E0: 20 73 65 61 72 63 68 2A 29 0D 0A 09 43 6F 75 6E search*)...Coun
0000F0: 74 3A 3D 30 3B 0D 0A 09 57 48 49 4C 45 20 69 3C t:=0;...WHILE i<
000100: 3E 32 35 35 20 44 4F 0D 0A 09 09 6A 3A 3D 30 3B >255 DO....j:=0;
000110: 0D 0A 09 09 49 46 20 44 65 76 43 68 61 72 3C 3E ....IF DevChar<>
000120: 27 20 27 20 54 48 45 4E 0D 0A 09 09 09 6E 61 6D ' ' THEN.....nam
000130: 65 5B 30 5D 3A 3D 44 65 76 43 68 61 72 3B 0D 0A e[0]:=DevChar;..
000140: 09 09 09 6E 61 6D 65 5B 31 5D 3A 3D 27 3A 27 3B ...name[1]:=':';
000150: 0D 0A 09 09 09 6A 3A 3D 32 3B 0D 0A 09 09 09 45 .....j:=2;.....E
000160: 4E 44 3B 0D 0A 09 09 57 49 54 48 20 64 6D 61 5B ND;....WITH dma[
000170: 69 5D 20 44 4F 0D 0A 09 09 09 6B 3A 3D 31 3B 0D i] DO.....k:=1;.
000180: 0A 09 09 09 57 48 49 4C 45 20 28 6B 3C 3D 48 49 ....WHILE (k<=HI
000190: 47 48 28 64 69 72 66 6E 29 29 20 41 4E 44 20 28 GH(dirfn)) AND (
0001A0: 64 69 72 66 6E 5B 6B 5D 3C 3E 27 20 27 29 20 44 dirfn[k]<>' ') D
0001B0: 4F 0D 0A 09 09 09 09 6E 61 6D 65 5B 6A 5D 3A 3D O......name[j]:=
0001C0: 64 69 72 66 6E 5B 6B 5D 3B 0D 0A 09 09 09 09 49 dirfn[k];......I
0001D0: 4E 43 28 6A 29 3B 0D 0A 09 09 09 09 49 4E 43 28 NC(j);......INC(
0001E0: 6B 29 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 k);......END;...
0001F0: 09 09 6E 61 6D 65 5B 6A 5D 3A 3D 27 2E 27 3B 0D ..name[j]:='.';.
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: 0A 09 09 09 6B 3A 3D 31 3B 49 4E 43 28 6A 29 3B ....k:=1;INC(j);
000010: 0D 0A 09 09 09 57 48 49 4C 45 20 28 6B 3C 3D 48 .....WHILE (k<=H
000020: 49 47 48 28 64 69 72 66 74 29 29 20 41 4E 44 20 IGH(dirft)) AND
000030: 28 64 69 72 66 74 5B 6B 5D 3C 3E 27 20 27 29 20 (dirft[k]<>' ')
000040: 44 4F 0D 0A 09 09 09 09 6E 61 6D 65 5B 6A 5D 3A DO......name[j]:
000050: 3D 64 69 72 66 74 5B 6B 5D 3B 0D 0A 09 09 09 09 =dirft[k];......
000060: 49 4E 43 28 6A 29 3B 0D 0A 09 09 09 09 49 4E 43 INC(j);......INC
000070: 28 6B 29 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A (k);......END;..
000080: 09 09 09 45 4E 44 3B 20 28 2A 57 49 54 48 20 44 ...END; (*WITH D
000090: 4D 41 2A 29 0D 0A 09 09 46 4F 52 20 6A 3A 3D 6A MA*)....FOR j:=j
0000A0: 20 54 4F 20 48 49 47 48 28 6E 61 6D 65 29 20 44 TO HIGH(name) D
0000B0: 4F 20 6E 61 6D 65 5B 6A 5D 3A 3D 27 20 27 20 45 O name[j]:=' ' E
0000C0: 4E 44 3B 0D 0A 09 09 6E 61 6D 65 73 5B 43 6F 75 ND;....names[Cou
0000D0: 6E 74 5D 3A 3D 6E 61 6D 65 3B 0D 0A 09 09 49 4E nt]:=name;....IN
0000E0: 43 28 43 6F 75 6E 74 29 3B 0D 0A 09 09 69 3A 3D C(Count);....i:=
0000F0: 42 44 4F 53 28 73 6E 6F 66 63 2C 41 44 52 28 66 BDOS(snofc,ADR(f
000100: 29 29 3B 09 28 2A 67 6F 20 74 6F 20 6E 65 78 74 ));.(*go to next
000110: 2A 29 0D 0A 09 09 45 4E 44 3B 20 28 2A 57 48 49 *)....END; (*WHI
000120: 4C 45 20 69 3C 3E 32 35 35 2A 29 0D 0A 09 0D 0A LE i<>255*).....
000130: 09 69 3A 3D 42 44 4F 53 28 73 64 61 66 63 2C 38 .i:=BDOS(sdafc,8
000140: 30 48 29 3B 09 09 28 2A 72 65 73 65 74 20 74 6F 0H);..(*reset to
000150: 20 64 65 66 61 75 6C 74 2A 29 0D 0A 09 0D 0A 09 default*)......
000160: 45 4E 44 20 53 65 61 72 63 68 46 6F 72 46 69 6C END SearchForFil
000170: 65 4E 61 6D 65 73 3B 0D 0A 42 45 47 49 4E 0D 0A eNames;..BEGIN..
000180: 0D 0A 09 28 2A 20 43 6F 6E 76 65 72 74 20 50 61 ...(* Convert Pa
000190: 74 74 65 72 6E 20 74 6F 20 61 20 66 69 6C 65 20 ttern to a file
0001A0: 6E 61 6D 65 2A 29 0D 0A 09 0D 0A 09 6A 3A 3D 48 name*)......j:=H
0001B0: 49 47 48 28 50 61 74 74 65 72 6E 29 3B 0D 0A 09 IGH(Pattern);...
0001C0: 57 69 6C 64 43 61 72 64 3A 3D 46 41 4C 53 45 3B WildCard:=FALSE;
0001D0: 0D 0A 09 49 46 20 6A 3E 48 49 47 48 28 6E 61 6D ...IF j>HIGH(nam
0001E0: 65 29 20 54 48 45 4E 20 6A 3A 3D 48 49 47 48 28 e) THEN j:=HIGH(
0001F0: 6E 61 6D 65 29 20 45 4E 44 3B 0D 0A 09 46 4F 52 name) END;...FOR
Size : 512 (Real : 512)
000000: 44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C DEFINITION MODUL
000010: 45 20 47 65 74 46 69 6C 65 73 3B 0D 0A 0D 0A 28 E GetFiles;....(
000020: 2A 09 47 65 74 20 61 20 6C 69 73 74 20 6F 66 20 *.Get a list of
000030: 66 69 6C 65 20 6E 61 6D 65 73 20 6D 65 65 74 69 file names meeti
000040: 6E 67 20 61 20 77 69 6C 64 63 61 72 64 20 64 65 ng a wildcard de
000050: 73 63 72 69 70 74 69 6F 6E 2A 29 0D 0A 46 52 4F scription*)..FRO
000060: 4D 20 46 69 6C 65 73 20 49 4D 50 4F 52 54 20 46 M Files IMPORT F
000070: 69 6C 65 4E 61 6D 65 3B 0D 0A 50 52 4F 43 45 44 ileName;..PROCED
000080: 55 52 45 20 47 65 74 4E 61 6D 65 73 28 50 61 74 URE GetNames(Pat
000090: 74 65 72 6E 3A 41 52 52 41 59 20 4F 46 20 43 48 tern:ARRAY OF CH
0000A0: 41 52 3B 0D 0A 09 09 56 41 52 09 6E 61 6D 65 73 AR;....VAR.names
0000B0: 3A 41 52 52 41 59 20 4F 46 20 46 69 6C 65 4E 61 :ARRAY OF FileNa
0000C0: 6D 65 3B 56 41 52 20 63 6F 75 6E 74 3A 49 4E 54 me;VAR count:INT
0000D0: 45 47 45 52 29 3B 0D 0A 0D 0A 28 2A 09 50 61 74 EGER);....(*.Pat
0000E0: 74 65 72 6E 20 69 73 20 61 20 70 61 74 74 65 72 tern is a patter
0000F0: 6E 20 74 6F 20 75 73 65 20 66 6F 72 20 74 68 65 n to use for the
000100: 20 73 65 61 72 63 68 0D 0A 09 6E 61 6D 65 73 20 search...names
000110: 72 65 74 75 72 6E 73 20 61 20 6C 69 73 74 20 6F returns a list o
000120: 66 20 6D 61 74 63 68 69 6E 67 20 66 69 6C 65 20 f matching file
000130: 6E 61 6D 65 20 28 77 69 74 68 20 6E 6F 20 64 65 name (with no de
000140: 76 69 63 65 20 6E 61 6D 65 0D 0A 09 09 6F 6E 20 vice name....on
000150: 74 68 65 20 66 72 6F 6E 74 29 0D 0A 09 63 6F 75 the front)...cou
000160: 6E 74 20 72 65 74 75 72 6E 73 20 6E 75 6D 62 65 nt returns numbe
000170: 72 20 6F 66 20 6E 61 6D 65 73 20 72 65 74 75 72 r of names retur
000180: 6E 65 64 20 69 6E 20 6E 61 6D 65 73 0D 0A 0D 0A ned in names....
000190: 09 49 66 20 74 68 65 20 67 69 76 65 6E 20 6E 61 .If the given na
0001A0: 6D 65 20 63 6F 6E 74 61 69 6E 73 20 6E 6F 20 77 me contains no w
0001B0: 69 6C 64 20 63 61 72 64 2C 20 69 74 20 69 73 20 ild card, it is
0001C0: 61 6C 77 61 79 73 20 72 65 74 75 72 6E 65 64 0D always returned.
0001D0: 0A 09 61 73 20 74 68 65 20 6F 6E 6C 79 20 6D 61 ..as the only ma
0001E0: 74 63 68 2C 20 77 68 65 74 68 65 72 20 69 74 20 tch, whether it
0001F0: 65 78 69 73 74 73 20 6F 72 20 6E 6F 74 20 0D 0A exists or not ..
Size : 512 (Real : 512)
000000: 20 69 3A 3D 30 20 54 4F 20 6A 20 44 4F 20 0D 0A i:=0 TO j DO ..
000010: 09 09 6E 61 6D 65 5B 69 5D 3A 3D 50 61 74 74 65 ..name[i]:=Patte
000020: 72 6E 5B 69 5D 3B 0D 0A 09 09 49 46 20 28 6E 61 rn[i];....IF (na
000030: 6D 65 5B 69 5D 3D 27 2A 27 29 20 4F 52 20 28 6E me[i]='*') OR (n
000040: 61 6D 65 5B 69 5D 3D 27 3F 27 29 20 54 48 45 4E ame[i]='?') THEN
000050: 20 57 69 6C 64 43 61 72 64 3A 3D 54 52 55 45 20 WildCard:=TRUE
000060: 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 46 END;....END;...F
000070: 4F 52 20 69 3A 3D 69 2B 31 20 54 4F 20 48 49 47 OR i:=i+1 TO HIG
000080: 48 28 6E 61 6D 65 29 20 44 4F 20 6E 61 6D 65 5B H(name) DO name[
000090: 69 5D 3A 3D 27 20 27 20 45 4E 44 3B 0D 0A 0D 0A i]:=' ' END;....
0000A0: 09 49 46 20 57 69 6C 64 43 61 72 64 20 54 48 45 .IF WildCard THE
0000B0: 4E 20 53 65 61 72 63 68 46 6F 72 46 69 6C 65 4E N SearchForFileN
0000C0: 61 6D 65 73 0D 0A 09 45 4C 53 45 0D 0A 09 09 43 ames...ELSE....C
0000D0: 6F 75 6E 74 3A 3D 31 3B 0D 0A 09 09 6E 61 6D 65 ount:=1;....name
0000E0: 73 5B 30 5D 3A 3D 6E 61 6D 65 0D 0A 09 09 45 4E s[0]:=name....EN
0000F0: 44 3B 0D 0A 09 45 4E 44 20 47 65 74 4E 61 6D 65 D;...END GetName
000100: 73 3B 0D 0A 45 4E 44 20 47 65 74 46 69 6C 65 73 s;..END GetFiles
000110: 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000120: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000130: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000140: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000150: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000160: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000170: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000180: 70 5E 20 44 4F 0D 0A 09 09 69 3A 3D 30 3B 0D 0A p^ DO....i:=0;..
000190: 09 09 4C 4F 4F 50 0D 0A 09 09 09 43 41 53 45 20 ..LOOP.....CASE
0001A0: 43 68 61 72 73 5B 69 5D 20 4F 46 0D 0A 09 09 09 Chars[i] OF.....
0001B0: 09 30 78 3A 45 58 49 54 7C 0D 0A 09 09 09 09 27 .0x:EXIT|......'
0001C0: 54 27 3A 43 6F 6D 70 63 6C 61 73 73 3A 3D 54 79 T':Compclass:=Ty
0001D0: 70 65 7C 0D 0A 09 09 09 09 27 4E 27 3A 43 6F 6D pe|......'N':Com
0001E0: 70 63 6C 61 73 73 3A 3D 4E 61 6D 65 7C 0D 0A 09 pclass:=Name|...
0001F0: 09 09 09 27 45 27 3A 4F 75 74 70 75 74 45 71 75 ...'E':OutputEqu
Size : 512 (Real : 512)
000000: 0D 0A 09 57 68 69 6C 65 20 74 68 69 73 20 6D 65 ...While this me
000010: 61 6E 73 20 74 68 61 74 20 74 68 69 73 20 72 6F ans that this ro
000020: 75 74 69 6E 65 20 63 61 6E 6E 6F 74 20 62 65 20 utine cannot be
000030: 75 73 65 64 20 74 6F 20 63 68 65 63 6B 20 66 6F used to check fo
000040: 72 0D 0A 09 74 68 65 20 65 78 69 73 74 65 6E 63 r...the existenc
000050: 65 20 6F 66 20 61 20 66 69 6C 65 2C 20 69 74 20 e of a file, it
000060: 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 63 can be used to c
000070: 6F 6E 76 65 72 74 20 61 20 70 61 72 61 6D 65 74 onvert a paramet
000080: 65 72 0D 0A 09 74 6F 20 61 20 66 69 6C 65 6E 61 er...to a filena
000090: 6D 65 20 61 73 20 72 65 71 75 69 72 65 64 20 62 me as required b
0000A0: 79 20 74 68 65 20 6D 6F 64 75 6C 65 20 46 69 6C y the module Fil
0000B0: 65 73 20 2A 29 0D 0A 45 4E 44 20 47 65 74 46 69 es *)..END GetFi
0000C0: 6C 65 73 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A les.............
0000D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0000E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0000F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000100: 61 72 61 6D 65 74 65 72 3B 09 09 28 2A 61 72 65 arameter;..(*are
000110: 61 20 66 6F 72 20 63 6F 6D 6D 61 6E 64 20 6C 69 a for command li
000120: 6E 65 2A 29 0D 0A 09 43 6F 75 6E 74 3A 49 4E 54 ne*)...Count:INT
000130: 45 47 45 52 3B 09 09 09 09 28 2A 70 61 72 61 6D EGER;....(*param
000140: 65 74 65 72 73 2A 29 0D 0A 0D 0A 09 4C 65 66 74 eters*).....Left
000150: 4E 61 6D 65 73 2C 52 69 67 68 74 4E 61 6D 65 73 Names,RightNames
000160: 3A 46 69 6C 65 41 72 72 61 79 3B 0D 0A 09 4C 65 :FileArray;...Le
000170: 66 74 4E 61 6D 65 43 6F 75 6E 74 2C 52 69 67 68 ftNameCount,Righ
000180: 74 4E 61 6D 65 43 6F 75 6E 74 3A 49 4E 54 45 47 tNameCount:INTEG
000190: 45 52 3B 0D 0A 0D 0A 09 43 6F 6D 70 63 6C 61 73 ER;.....Compclas
0001A0: 73 3A 43 6F 6D 70 43 6C 61 73 73 3D 57 68 6F 6C s:CompClass=Whol
0001B0: 65 3B 0D 0A 09 4F 75 74 70 75 74 41 64 64 65 64 e;...OutputAdded
0001C0: 3A 42 4F 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B 0D :BOOLEAN=FALSE;.
0001D0: 0A 09 4F 75 74 70 75 74 45 71 75 61 6C 3A 42 4F ..OutputEqual:BO
0001E0: 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B 0D 0A 09 43 OLEAN=FALSE;...C
0001F0: 6F 6D 70 61 72 65 43 6F 6E 74 65 6E 74 73 3A 42 ompareContents:B
Size : 512 (Real : 512)
000000: 4C 41 59 20 3A 20 70 6E 61 6D 65 3B 20 0D 0A 09 LAY : pname; ...
000010: 4C 41 53 54 4E 41 4D 45 3A 20 70 6E 61 6D 65 3B LASTNAME: pname;
000020: 0D 0A 09 4E 41 4D 45 50 4E 54 3A 70 6E 61 6D 65 ...NAMEPNT:pname
000030: 3B 20 0D 0A 0D 0A 28 2A 09 53 79 6D 62 6F 6C 20 ; ....(*.Symbol
000040: 74 61 62 6C 65 20 65 6E 74 72 69 65 73 20 63 6F table entries co
000050: 6E 73 69 73 74 20 6F 66 20 61 20 4E 41 4D 45 20 nsist of a NAME
000060: 72 65 63 6F 72 64 20 70 72 65 63 65 64 65 64 0D record preceded.
000070: 0A 09 62 79 20 61 20 69 64 65 6E 74 69 66 69 65 ..by a identifie
000080: 72 20 6C 65 6E 67 74 68 20 42 59 54 45 20 70 72 r length BYTE pr
000090: 65 63 65 64 65 64 20 62 79 20 74 68 65 20 69 64 eceded by the id
0000A0: 65 6E 74 69 66 69 65 72 0D 0A 09 73 74 6F 72 65 entifier...store
0000B0: 64 20 62 61 63 6B 77 61 72 64 73 2E 20 54 68 65 d backwards. The
0000C0: 20 74 6F 70 20 62 69 74 20 6F 66 20 74 68 65 20 top bit of the
0000D0: 6C 65 6E 67 74 68 20 69 73 20 73 65 74 20 74 6F length is set to
0000E0: 20 27 68 69 64 65 27 0D 0A 09 74 68 65 20 69 64 'hide'...the id
0000F0: 65 6E 74 69 66 69 65 72 2E 20 54 68 65 20 73 65 entifier. The se
000100: 63 6F 6E 64 20 74 6F 70 20 62 69 74 20 69 73 20 cond top bit is
000110: 75 73 65 64 20 74 6F 20 6D 61 72 6B 20 61 63 63 used to mark acc
000120: 65 73 73 69 62 6C 65 20 0D 0A 09 73 79 6D 62 6F essible ...symbo
000130: 6C 73 20 74 68 6F 75 67 68 20 74 68 69 73 20 69 ls though this i
000140: 73 20 6E 6F 74 20 64 6F 6E 65 20 62 79 20 74 68 s not done by th
000150: 69 73 20 76 65 72 73 69 6F 6E 20 6F 66 20 74 68 is version of th
000160: 65 20 0D 0A 09 69 6D 70 6F 72 74 20 6D 6F 64 75 e ...import modu
000170: 6C 65 20 2A 29 0D 0A 09 0D 0A 50 52 4F 43 45 44 le *).....PROCED
000180: 55 52 45 20 48 49 44 45 28 70 3A 41 44 44 52 45 URE HIDE(p:ADDRE
000190: 53 53 29 3B 0D 0A 0D 0A 28 2A 09 48 69 64 65 20 SS);....(*.Hide
0001A0: 61 6E 20 69 64 65 6E 74 69 66 69 65 72 0D 0A 0D an identifier...
0001B0: 0A 09 41 6E 20 69 64 65 6E 74 69 66 69 65 72 20 ..An identifier
0001C0: 69 73 20 68 69 64 64 65 6E 20 62 79 20 73 65 74 is hidden by set
0001D0: 74 69 6E 67 20 74 68 65 20 74 6F 70 20 62 69 74 ting the top bit
0001E0: 0D 0A 09 6F 66 20 74 68 65 20 62 79 74 65 20 70 ...of the byte p
0001F0: 72 65 63 65 64 69 6E 67 20 74 68 65 20 70 6F 69 receding the poi
Size : 512 (Real : 512)
000000: 6C 6F 66 66 73 65 74 3A 49 4E 54 45 47 45 52 3B loffset:INTEGER;
000010: 09 28 2A 72 65 6C 20 63 6F 64 65 20 62 75 66 66 .(*rel code buff
000020: 65 72 20 70 6F 69 6E 74 65 72 2A 29 0D 0A 09 09 er pointer*)....
000030: 09 6D 64 72 65 6C 62 6C 6F 63 6B 3A 49 4E 54 45 .mdrelblock:INTE
000040: 47 45 52 3B 09 28 2A 61 6E 64 20 62 6C 6F 63 6B GER;.(*and block
000050: 20 6E 75 6D 62 65 72 2A 29 20 0D 0A 09 09 09 7C number*) .....|
000060: 0D 0A 09 09 6C 69 6E 6B 63 6C 61 73 73 3A 6C 69 ....linkclass:li
000070: 6E 6B 3A 70 6E 61 6D 65 0D 0A 09 09 45 4E 44 3B nk:pname....END;
000080: 0D 0A 09 20 20 20 20 45 4E 44 3B 0D 0A 56 41 52 ... END;..VAR
000090: 09 49 44 3A 61 6C 66 61 3B 0D 0A 50 52 4F 43 45 .ID:alfa;..PROCE
0000A0: 44 55 52 45 20 52 45 54 52 4E 41 4D 45 28 50 3A DURE RETRNAME(P:
0000B0: 41 44 44 52 45 53 53 29 3B 0D 0A 50 52 4F 43 45 ADDRESS);..PROCE
0000C0: 44 55 52 45 20 4C 4F 4F 4B 55 50 28 69 64 3A 61 DURE LOOKUP(id:a
0000D0: 6C 66 61 3B 74 61 62 3A 70 6E 61 6D 65 29 3A 70 lfa;tab:pname):p
0000E0: 6E 61 6D 65 3B 0D 0A 50 52 4F 43 45 44 55 52 45 name;..PROCEDURE
0000F0: 20 4C 4F 41 44 46 49 4C 45 28 66 6E 3A 46 69 6C LOADFILE(fn:Fil
000100: 65 4E 61 6D 65 29 3A 70 6E 61 6D 65 3B 0D 0A 45 eName):pname;..E
000110: 4E 44 20 49 6D 70 6F 72 74 2E 0D 0A 0D 0A 1A 1A ND Import.......
000120: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000130: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000140: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000150: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000160: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 46 20 00 00 00 00 ..........F ....
000170: 00 00 00 00 00 00 D6 51 90 0D 45 00 9B 03 00 00 .......Q..E.....
000180: 09 57 72 69 74 65 4E 61 6D 65 28 52 69 67 68 74 .WriteName(Right
000190: 4E 61 6D 65 73 5B 6A 5D 2C 4F 75 74 70 75 74 41 Names[j],OutputA
0001A0: 64 64 65 64 29 3B 0D 0A 09 57 72 69 74 65 4C 6E dded);...WriteLn
0001B0: 3B 0D 0A 09 45 4E 44 20 50 72 69 6E 74 52 69 67 ;...END PrintRig
0001C0: 68 74 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 ht;....PROCEDURE
0001D0: 20 43 6F 6D 70 61 72 65 4F 4B 28 66 31 2C 66 32 CompareOK(f1,f2
0001E0: 3A 46 69 6C 65 52 65 63 6F 72 64 29 3A 42 4F 4F :FileRecord):BOO
0001F0: 4C 45 41 4E 3B 0D 0A 0D 0A 56 41 52 09 66 6E 31 LEAN;....VAR.fn1
Size : 512 (Real : 512)
000000: 79 70 65 2C 75 6E 6B 6E 6F 77 6E 74 79 70 65 2C ype,unknowntype,
000010: 69 6E 74 6F 72 63 61 72 64 29 3B 0D 0A 09 70 6E intorcard);...pn
000020: 61 6D 65 3D 50 4F 49 4E 54 45 52 20 54 4F 20 6E ame=POINTER TO n
000030: 61 6D 65 3B 0D 0A 0D 0A 09 70 70 61 72 61 6D 3D ame;.....pparam=
000040: 50 4F 49 4E 54 45 52 20 54 4F 20 70 61 72 61 6D POINTER TO param
000050: 3B 0D 0A 09 70 61 72 61 6D 3D 52 45 43 4F 52 44 ;...param=RECORD
000060: 0D 0A 09 09 76 61 72 70 61 72 3A 42 4F 4F 4C 45 ....varpar:BOOLE
000070: 41 4E 3B 0D 0A 09 09 76 61 72 74 79 70 65 3A 70 AN;....vartype:p
000080: 6E 61 6D 65 3B 0D 0A 09 09 6E 65 78 74 3A 70 70 name;....next:pp
000090: 61 72 61 6D 3B 0D 0A 09 09 6F 70 65 6E 61 72 72 aram;....openarr
0000A0: 61 79 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 09 09 45 ay:BOOLEAN;....E
0000B0: 4E 44 3B 0D 0A 09 6F 62 6A 65 63 74 09 3D 20 28 ND;...object.= (
0000C0: 20 28 2A 20 74 79 70 65 73 20 6F 66 20 73 79 6D (* types of sym
0000D0: 62 6F 6C 20 74 61 62 6C 65 20 65 6E 74 72 79 73 bol table entrys
0000E0: 20 2A 29 0D 0A 09 09 63 6F 6E 73 74 61 6E 74 2C *)....constant,
0000F0: 20 70 72 6F 7A 65 64 75 72 65 2C 20 66 75 6E 6B prozedure, funk
000100: 74 69 6F 6E 2C 0D 0A 09 09 76 61 72 69 61 62 6C tion,....variabl
000110: 65 2C 20 74 69 70 65 2C 73 74 64 70 72 6F 63 2C e, tipe,stdproc,
000120: 73 74 64 66 75 6E 63 2C 6D 6F 64 63 6C 61 73 73 stdfunc,modclass
000130: 2C 6C 69 6E 6B 63 6C 61 73 73 2C 66 6F 72 72 65 ,linkclass,forre
000140: 66 65 72 0D 0A 09 09 29 3B 0D 0A 09 76 66 6F 72 fer....);...vfor
000150: 6D 3D 42 59 54 45 3B 0D 0A 09 6E 61 6D 65 3D 52 m=BYTE;...name=R
000160: 45 43 4F 52 44 0D 0A 09 09 6C 6F 77 65 72 3A 70 ECORD....lower:p
000170: 6E 61 6D 65 3B 0D 0A 09 09 75 70 70 65 72 3A 70 name;....upper:p
000180: 6E 61 6D 65 3B 0D 0A 09 09 65 78 70 6F 72 74 6C name;....exportl
000190: 69 6E 6B 3A 70 6E 61 6D 65 3B 0D 0A 09 09 6E 74 ink:pname;....nt
0001A0: 79 70 65 3A 70 6E 61 6D 65 3B 0D 0A 09 09 43 41 ype:pname;....CA
0001B0: 53 45 20 6E 61 6D 65 63 6C 61 73 73 3A 6F 62 6A SE nameclass:obj
0001C0: 65 63 74 20 4F 46 0D 0A 09 09 63 6F 6E 73 74 61 ect OF....consta
0001D0: 6E 74 3A 76 61 6C 75 3A 49 4E 54 45 47 45 52 3B nt:valu:INTEGER;
0001E0: 0D 0A 09 09 09 43 41 53 45 20 3A 49 4E 54 45 47 .....CASE :INTEG
0001F0: 45 52 20 4F 46 0D 0A 09 09 09 09 30 3A 61 63 74 ER OF......0:act
Size : 512 (Real : 512)
000000: 49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D IMPLEMENTATION M
000010: 4F 44 55 4C 45 20 49 6D 70 6F 72 74 3B 20 0D 0A ODULE Import; ..
000020: 0D 0A 28 2A 20 09 41 20 6D 6F 64 75 6C 65 20 74 ..(* .A module t
000030: 6F 20 70 65 72 66 6F 72 6D 20 65 78 70 6F 72 74 o perform export
000040: 73 20 61 6E 64 20 69 6D 70 6F 72 74 73 20 66 6F s and imports fo
000050: 72 20 6D 6F 64 75 6C 61 2D 32 20 0D 0A 20 20 09 r modula-2 .. .
000060: 70 72 6F 67 72 61 6D 73 2E 20 54 68 69 73 20 6D programs. This m
000070: 6F 64 75 6C 65 20 77 69 6C 6C 20 72 65 61 64 20 odule will read
000080: 53 59 4D 20 66 69 6C 65 73 20 63 72 65 61 74 65 SYM files create
000090: 64 20 62 79 20 74 68 65 0D 0A 09 46 54 4C 20 4D d by the...FTL M
0000A0: 6F 64 75 6C 61 2D 32 20 63 6F 6D 70 69 6C 65 72 odula-2 compiler
0000B0: 20 0D 0A 0D 0A 09 54 68 69 73 20 6D 6F 64 75 6C .....This modul
0000C0: 65 20 64 6F 65 73 20 6E 6F 74 20 63 6F 6E 74 61 e does not conta
0000D0: 69 6E 20 61 6C 6C 20 74 68 65 20 63 6F 64 65 20 in all the code
0000E0: 72 65 71 75 69 72 65 64 20 74 6F 20 69 6D 70 6F required to impo
0000F0: 72 74 0D 0A 09 6D 75 6C 74 69 70 6C 65 20 73 79 rt...multiple sy
000100: 6D 62 6F 6C 20 74 61 62 6C 65 73 2E 20 46 6F 72 mbol tables. For
000110: 20 74 68 69 73 20 72 65 61 73 6F 6E 2C 20 69 66 this reason, if
000120: 20 79 6F 75 20 75 73 65 20 74 68 69 73 0D 0A 09 you use this...
000130: 6D 6F 64 75 6C 65 20 74 6F 20 69 6D 70 6F 72 74 module to import
000140: 20 73 65 76 65 72 61 6C 20 73 79 6D 62 6F 6C 20 several symbol
000150: 74 61 62 6C 65 73 2C 20 74 68 65 79 20 77 69 6C tables, they wil
000160: 6C 20 6E 6F 74 20 62 65 20 6C 69 6E 6B 65 64 0D l not be linked.
000170: 0A 09 74 6F 67 65 74 68 65 72 20 63 6F 72 72 65 ..together corre
000180: 63 74 6C 79 2E 20 54 68 69 73 20 6D 65 61 6E 73 ctly. This means
000190: 20 74 68 61 74 20 79 6F 75 20 63 61 6E 6E 6F 74 that you cannot
0001A0: 20 64 6F 20 74 79 70 65 20 63 68 65 63 6B 69 6E do type checkin
0001B0: 67 0D 0A 09 75 73 69 6E 67 20 74 68 69 73 20 6D g...using this m
0001C0: 6F 64 75 6C 65 2E 0D 0A 0D 0A 09 4C 65 74 20 6D odule......Let m
0001D0: 65 20 65 78 70 6C 61 69 6E 20 74 68 61 74 20 6D e explain that m
0001E0: 6F 72 65 20 74 68 6F 72 6F 75 67 68 6C 79 2E 20 ore thoroughly.
0001F0: 45 61 63 68 20 53 59 4D 20 54 61 62 6C 65 20 63 Each SYM Table c
Size : 512 (Real : 512)
000000: 76 61 6C 3A 49 4E 54 45 47 45 52 3B 0D 0A 09 09 val:INTEGER;....
000010: 09 09 20 20 65 6E 75 6D 3A 42 4F 4F 4C 45 41 4E .. enum:BOOLEAN
000020: 7C 0D 0A 09 09 09 09 31 3A 72 76 61 6C 3A 52 45 |......1:rval:RE
000030: 41 4C 0D 0A 09 09 09 09 45 4E 44 7C 0D 0A 09 09 AL......END|....
000040: 70 72 6F 7A 65 64 75 72 65 2C 66 75 6E 6B 74 69 prozedure,funkti
000050: 6F 6E 3A 0D 0A 09 09 09 70 61 64 72 3A 49 4E 54 on:.....padr:INT
000060: 45 47 45 52 3B 0D 0A 09 09 09 66 6F 72 72 65 66 EGER;.....forref
000070: 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 09 09 09 63 6F :BOOLEAN;.....co
000080: 64 65 61 64 72 3A 49 4E 54 45 47 45 52 3B 0D 0A deadr:INTEGER;..
000090: 09 09 09 70 72 6F 63 6D 6F 64 3A 42 59 54 45 3B ...procmod:BYTE;
0000A0: 0D 0A 09 09 09 65 78 69 73 74 6F 70 65 6E 3A 42 .....existopen:B
0000B0: 4F 4F 4C 45 41 4E 3B 0D 0A 09 09 09 7C 0D 0A 09 OOLEAN;.....|...
0000C0: 09 76 61 72 69 61 62 6C 65 3A 61 64 64 72 73 3A .variable:addrs:
0000D0: 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 20 67 72 INTEGER;..... gr
0000E0: 6F 75 70 3A 42 59 54 45 3B 0D 0A 09 09 09 20 66 oup:BYTE;..... f
0000F0: 6F 72 6D 3A 76 66 6F 72 6D 3B 7C 0D 0A 09 09 74 orm:vform;|....t
000100: 69 70 65 3A 09 73 69 7A 65 3A 49 4E 54 45 47 45 ipe:.size:INTEGE
000110: 52 3B 0D 0A 09 09 09 43 41 53 45 20 63 6C 61 73 R;.....CASE clas
000120: 73 3A 74 79 70 65 63 6C 61 73 73 20 4F 46 0D 0A s:typeclass OF..
000130: 09 09 09 09 61 72 72 61 79 74 79 70 65 3A 65 6C ....arraytype:el
000140: 65 6D 74 79 70 65 3A 70 6E 61 6D 65 3B 0D 0A 09 emtype:pname;...
000150: 09 09 09 09 20 20 69 6E 64 65 78 74 79 70 65 3A .... indextype:
000160: 70 6E 61 6D 65 7C 28 2A 6E 69 6C 3D 3E 6E 6F 6E pname|(*nil=>non
000170: 65 2A 29 0D 0A 09 09 09 09 72 65 63 6F 72 64 74 e*)......recordt
000180: 79 70 65 3A 73 75 62 66 69 65 6C 64 73 3A 70 6E ype:subfields:pn
000190: 61 6D 65 7C 0D 0A 09 09 09 09 73 75 62 72 74 79 ame|......subrty
0001A0: 70 65 2C 65 6E 75 6D 74 79 70 65 3A 6C 6F 77 3A pe,enumtype:low:
0001B0: 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 09 09 20 INTEGER;.......
0001C0: 20 20 20 20 20 20 20 20 20 68 69 67 68 3A 49 4E high:IN
0001D0: 54 45 47 45 52 3B 0D 0A 09 09 09 09 09 09 20 20 TEGER;........
0001E0: 62 74 79 70 65 3A 70 6E 61 6D 65 7C 0D 0A 09 09 btype:pname|....
0001F0: 09 09 70 6F 69 6E 74 74 79 70 65 2C 73 65 74 74 ..pointtype,sett
Size : 512 (Real : 512)
000000: 6F 6D 74 61 69 6E 73 20 61 20 0D 0A 09 63 6F 70 omtains a ...cop
000010: 79 20 6F 66 20 65 76 65 72 79 20 64 65 63 6C 61 y of every decla
000020: 72 61 74 69 6F 6E 20 77 68 69 63 68 20 69 73 20 ration which is
000030: 75 73 65 64 20 69 6E 20 74 68 65 20 53 59 4D 20 used in the SYM
000040: 74 61 62 6C 65 2E 20 46 6F 72 0D 0A 09 65 78 61 table. For...exa
000050: 6D 70 6C 65 2C 20 69 74 20 79 6F 75 20 69 6D 70 mple, it you imp
000060: 6F 72 74 20 42 59 54 45 20 66 72 6F 6D 20 53 59 ort BYTE from SY
000070: 53 54 45 4D 2C 20 74 68 65 72 65 20 69 73 20 61 STEM, there is a
000080: 20 63 6F 70 79 20 6F 66 20 74 68 65 0D 0A 09 64 copy of the...d
000090: 65 63 6C 61 72 61 74 69 6F 6E 20 66 6F 72 20 42 eclaration for B
0000A0: 59 54 45 2E 20 41 20 73 79 6D 62 6F 6C 20 6C 69 YTE. A symbol li
0000B0: 6B 65 20 42 59 54 45 20 69 73 20 6C 69 6B 65 6C ke BYTE is likel
0000C0: 79 20 74 6F 20 62 65 20 69 6D 70 6F 72 74 65 64 y to be imported
0000D0: 0D 0A 09 62 79 20 61 20 6E 75 6D 62 65 72 20 6F ...by a number o
0000E0: 66 20 64 69 66 66 65 72 65 6E 74 20 73 79 6D 62 f different symb
0000F0: 6F 6C 20 74 61 62 6C 65 73 20 61 6E 64 20 73 6F ol tables and so
000100: 20 73 65 76 65 72 61 6C 20 63 6F 70 69 65 73 0D several copies.
000110: 0A 09 6F 66 20 74 68 65 20 64 65 63 6C 61 72 61 ..of the declara
000120: 74 69 6F 6E 20 77 69 6C 6C 20 65 78 69 73 74 2E tion will exist.
000130: 20 49 6E 20 74 68 65 20 63 6F 6D 70 69 6C 65 72 In the compiler
000140: 2C 20 61 6C 6C 20 74 68 65 73 65 20 61 72 65 20 , all these are
000150: 6C 69 6E 6B 65 64 0D 0A 09 74 6F 67 65 74 68 65 linked...togethe
000160: 72 20 73 6F 20 74 68 61 74 20 42 59 54 45 20 6F r so that BYTE o
000170: 6E 6C 79 20 68 61 73 20 6F 6E 65 20 61 63 74 69 nly has one acti
000180: 76 65 20 64 65 66 69 6E 69 74 69 6F 6E 2E 20 4F ve definition. O
000190: 74 68 65 72 77 69 73 65 2C 20 0D 0A 09 76 61 72 therwise, ...var
0001A0: 69 61 62 6C 65 73 20 6F 66 20 74 79 70 65 20 42 iables of type B
0001B0: 59 54 45 20 69 6D 70 6F 72 74 65 64 20 66 72 6F YTE imported fro
0001C0: 6D 20 64 69 66 66 65 72 65 6E 74 20 6D 6F 64 75 m different modu
0001D0: 6C 65 73 20 77 6F 75 6C 64 20 6E 6F 74 0D 0A 09 les would not...
0001E0: 62 65 20 63 6F 6D 70 61 74 69 62 6C 65 2E 09 0D be compatible...
0001F0: 0A 0D 0A 09 4E 6F 72 20 64 6F 65 73 20 69 74 20 ....Nor does it
Size : 512 (Real : 512)
000000: 79 70 65 3A 72 65 66 74 79 70 65 3A 70 6E 61 6D ype:reftype:pnam
000010: 65 7C 0D 0A 09 09 09 09 70 72 74 79 70 65 3A 70 e|......prtype:p
000020: 72 70 61 72 73 3A 70 70 61 72 61 6D 7C 0D 0A 09 rpars:pparam|...
000030: 09 09 09 75 6E 6B 6E 6F 77 6E 74 79 70 65 2C 66 ...unknowntype,f
000040: 6F 72 77 61 72 64 72 65 66 3A 74 6D 6F 64 6E 6F orwardref:tmodno
000050: 3A 49 4E 54 45 47 45 52 7C 0D 0A 09 09 09 09 45 :INTEGER|......E
000060: 4E 44 3B 0D 0A 09 09 09 09 7C 0D 0A 09 09 73 74 ND;......|....st
000070: 64 70 72 6F 63 3A 73 74 64 6F 72 64 3A 49 4E 54 dproc:stdord:INT
000080: 45 47 45 52 7C 0D 0A 09 09 73 74 64 66 75 6E 63 EGER|....stdfunc
000090: 3A 0D 0A 09 09 09 67 65 6E 6C 69 73 74 3A 70 6E :.....genlist:pn
0000A0: 61 6D 65 3B 0D 0A 09 09 09 73 74 64 63 6C 61 73 ame;.....stdclas
0000B0: 73 3A 42 59 54 45 3B 0D 0A 09 09 09 70 61 72 74 s:BYTE;.....part
0000C0: 79 70 65 3A 70 6E 61 6D 65 3B 0D 0A 09 09 09 63 ype:pname;.....c
0000D0: 6F 6D 70 61 74 3A 42 59 54 45 3B 0D 0A 09 09 09 ompat:BYTE;.....
0000E0: 43 41 53 45 20 3A 49 4E 54 45 47 45 52 20 4F 46 CASE :INTEGER OF
0000F0: 0D 0A 09 09 09 09 30 3A 66 75 6E 63 6E 6F 3A 42 ......0:funcno:B
000100: 59 54 45 7C 0D 0A 09 09 09 09 31 3A 66 75 6E 63 YTE|......1:func
000110: 64 6F 70 3A 42 59 54 45 3B 66 75 6E 63 63 6F 6E dop:BYTE;funccon
000120: 73 74 3A 49 4E 54 45 47 45 52 7C 0D 0A 09 09 09 st:INTEGER|.....
000130: 09 32 3A 66 75 6E 63 6D 6F 70 3A 42 59 54 45 7C .2:funcmop:BYTE|
000140: 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 7C ......END;.....|
000150: 0D 0A 09 09 6D 6F 64 63 6C 61 73 73 3A 6D 61 67 ....modclass:mag
000160: 69 63 3A 49 4E 54 45 47 45 52 3B 09 28 2A 6D 61 ic:INTEGER;.(*ma
000170: 67 69 63 20 6E 75 6D 62 65 72 2A 29 0D 0A 09 09 gic number*)....
000180: 09 6E 65 78 74 6D 6F 64 75 6C 65 3A 70 6E 61 6D .nextmodule:pnam
000190: 65 3B 09 28 2A 6E 65 78 74 20 69 6D 70 6F 72 74 e;.(*next import
0001A0: 65 64 20 6D 6F 64 75 6C 65 2A 29 0D 0A 09 09 09 ed module*).....
0001B0: 6D 6F 64 6E 61 6D 65 73 3A 70 6E 61 6D 65 3B 09 modnames:pname;.
0001C0: 09 28 2A 73 79 6D 62 6F 6C 20 74 61 62 6C 65 2A .(*symbol table*
0001D0: 29 0D 0A 09 09 09 6D 6F 64 6C 69 73 74 3A 70 6E ).....modlist:pn
0001E0: 61 6D 65 3B 09 09 28 2A 6C 69 6E 6B 65 64 20 6C ame;..(*linked l
0001F0: 69 73 74 20 6F 66 20 6E 61 6D 65 73 2A 29 0D 0A ist of names*)..
Size : 512 (Real : 512)
000000: 63 6F 6E 74 61 69 6E 20 74 68 65 20 63 6F 64 65 contain the code
000010: 20 74 6F 20 70 72 6F 63 65 73 73 20 74 68 65 20 to process the
000020: 69 6D 70 6F 72 74 20 6C 69 73 74 0D 0A 09 2A 29 import list...*)
000030: 0D 0A 46 52 4F 4D 09 46 61 73 74 4D 6F 76 65 20 ..FROM.FastMove
000040: 49 4D 50 4F 52 54 20 4D 6F 76 65 75 70 3B 0D 0A IMPORT Moveup;..
000050: 46 52 4F 4D 09 53 74 6F 72 61 67 65 20 49 4D 50 FROM.Storage IMP
000060: 4F 52 54 20 41 4C 4C 4F 43 41 54 45 3B 0D 0A 46 ORT ALLOCATE;..F
000070: 52 4F 4D 09 54 65 72 6D 69 6E 61 6C 20 49 4D 50 ROM.Terminal IMP
000080: 4F 52 54 20 57 72 69 74 65 53 74 72 69 6E 67 2C ORT WriteString,
000090: 57 72 69 74 65 4C 6E 3B 0D 0A 46 52 4F 4D 09 53 WriteLn;..FROM.S
0000A0: 59 53 54 45 4D 20 49 4D 50 4F 52 54 20 41 44 52 YSTEM IMPORT ADR
0000B0: 3B 0D 0A 46 52 4F 4D 09 46 69 6C 65 73 20 49 4D ;..FROM.Files IM
0000C0: 50 4F 52 54 20 4C 6F 6F 6B 75 70 2C 53 65 71 52 PORT Lookup,SeqR
0000D0: 65 61 64 42 6C 6F 63 6B 2C 43 6C 6F 73 65 2C 46 eadBlock,Close,F
0000E0: 49 4C 45 3B 0D 0A 43 4F 4E 53 54 09 42 69 67 67 ILE;..CONST.Bigg
0000F0: 65 73 74 46 69 6C 65 3D 38 31 39 31 3B 09 28 2A estFile=8191;.(*
000100: 62 69 67 67 65 73 74 20 73 79 6D 20 66 69 6C 65 biggest sym file
000110: 20 72 65 61 64 61 62 6C 65 2A 29 20 20 0D 0A 0D readable*) ...
000120: 0A 56 41 52 20 0D 0A 09 43 4F 4D 50 4C 49 4E 4B .VAR ...COMPLINK
000130: 3A 70 6E 61 6D 65 3B 20 0D 0A 09 50 4C 49 4E 4B :pname; ...PLINK
000140: 2C 4C 41 53 54 4C 49 4E 4B 2C 6E 6C 69 6E 6B 3A ,LASTLINK,nlink:
000150: 70 6E 61 6D 65 3B 20 0D 0A 09 52 45 4C 4F 46 46 pname; ...RELOFF
000160: 2C 47 4C 4F 42 52 45 4C 4F 46 46 2C 52 45 4C 42 ,GLOBRELOFF,RELB
000170: 41 53 45 3A 43 41 52 44 49 4E 41 4C 3B 20 0D 0A ASE:CARDINAL; ..
000180: 09 53 49 44 3A 61 6C 66 61 3B 20 0D 0A 09 48 49 .SID:alfa; ...HI
000190: 44 45 41 4C 4C 3A 42 4F 4F 4C 45 41 4E 3D 46 41 DEALL:BOOLEAN=FA
0001A0: 4C 53 45 3B 20 0D 0A 09 48 49 44 45 4F 54 48 45 LSE; ...HIDEOTHE
0001B0: 52 53 3A 42 4F 4F 4C 45 41 4E 3B 20 0D 0A 09 4E RS:BOOLEAN; ...N
0001C0: 45 57 4D 4F 44 4E 41 4D 45 3A 70 6E 61 6D 65 3B EWMODNAME:pname;
0001D0: 20 0D 0A 09 4D 4F 44 55 4C 45 4E 41 4D 45 3A 61 ...MODULENAME:a
0001E0: 6C 66 61 3B 20 0D 0A 09 4D 4F 44 55 4C 45 50 4E lfa; ...MODULEPN
0001F0: 54 3A 70 6E 61 6D 65 3B 20 0D 0A 09 44 49 53 50 T:pname; ...DISP
Size : 512 (Real : 512)
000000: 09 09 09 61 6E 6F 6E 6C 69 73 74 3A 70 6E 61 6D ...anonlist:pnam
000010: 65 3B 09 09 28 2A 61 6E 6F 6E 79 6D 6F 75 73 20 e;..(*anonymous
000020: 6E 61 6D 65 73 2A 29 0D 0A 09 09 09 6D 6F 64 62 names*).....modb
000030: 61 73 65 3A 43 41 52 44 49 4E 41 4C 3B 09 28 2A ase:CARDINAL;.(*
000040: 66 6F 72 20 74 61 62 6C 65 20 72 65 6C 6F 63 61 for table reloca
000050: 74 69 6F 6E 2A 29 0D 0A 09 09 09 67 6C 6F 62 61 tion*).....globa
000060: 6C 62 61 73 65 3A 43 41 52 44 49 4E 41 4C 3B 09 lbase:CARDINAL;.
000070: 28 2A 66 6F 72 20 67 6C 6F 62 61 6C 20 72 65 6C (*for global rel
000080: 6F 63 61 74 69 6F 6E 2A 29 0D 0A 09 09 09 6D 6F ocation*).....mo
000090: 64 64 65 62 75 67 3A 42 4F 4F 4C 45 41 4E 3B 09 ddebug:BOOLEAN;.
0000A0: 28 2A 74 72 75 65 20 69 66 20 63 6F 6D 70 69 6C (*true if compil
0000B0: 65 64 20 77 69 74 68 20 64 65 62 75 67 2A 29 0D ed with debug*).
0000C0: 0A 0D 0A 09 09 09 28 2A 54 68 65 20 66 6F 6C 6C ......(*The foll
0000D0: 6F 77 69 6E 67 20 76 61 72 69 61 62 6C 65 73 20 owing variables
0000E0: 67 69 76 65 20 74 68 65 20 73 74 61 74 65 20 6F give the state o
0000F0: 66 20 74 68 65 0D 0A 09 09 09 76 61 72 69 61 62 f the.....variab
000100: 6C 65 73 20 61 66 74 65 72 20 74 68 65 20 64 65 les after the de
000110: 66 20 6D 6F 64 75 6C 65 20 69 73 20 63 6F 6D 70 f module is comp
000120: 69 6C 65 64 2A 29 20 0D 0A 0D 0A 09 09 09 6D 64 iled*) .......md
000130: 67 72 6F 75 70 6E 6F 3A 49 4E 54 45 47 45 52 3B groupno:INTEGER;
000140: 09 28 2A 6E 75 6D 62 65 72 20 6F 66 20 76 61 72 .(*number of var
000150: 69 61 62 6C 65 20 67 72 6F 75 70 73 2A 29 0D 0A iable groups*)..
000160: 09 09 09 6D 64 63 6F 6E 73 74 6E 6F 3A 49 4E 54 ...mdconstno:INT
000170: 45 47 45 52 3B 09 28 2A 6E 75 6D 62 65 72 20 6F EGER;.(*number o
000180: 66 20 63 6F 6E 73 74 61 6E 74 73 20 2A 29 0D 0A f constants *)..
000190: 09 09 09 6D 64 6C 61 62 6E 6F 3A 49 4E 54 45 47 ...mdlabno:INTEG
0001A0: 45 52 3B 09 28 2A 6E 75 6D 62 65 72 20 6F 66 20 ER;.(*number of
0001B0: 70 72 6F 63 65 64 75 72 65 73 2A 29 0D 0A 09 09 procedures*)....
0001C0: 09 6D 64 6D 6F 64 75 6C 65 6E 6F 3A 49 4E 54 45 .mdmoduleno:INTE
0001D0: 47 45 52 3B 09 28 2A 6E 75 6D 62 65 72 20 66 6F GER;.(*number fo
0001E0: 20 6E 65 78 74 20 69 6D 70 6F 72 74 65 64 20 6D next imported m
0001F0: 6F 64 75 6C 65 2A 29 0D 0A 09 09 09 6D 64 72 65 odule*).....mdre
Size : 512 (Real : 512)
000000: 53 49 44 20 54 48 45 4E 20 4C 41 53 54 4E 41 4D SID THEN LASTNAM
000010: 45 5E 2E 75 70 70 65 72 3A 3D 43 4F 4D 50 4C 49 E^.upper:=COMPLI
000020: 4E 4B 0D 0A 09 09 45 4C 53 45 20 4C 41 53 54 4E NK....ELSE LASTN
000030: 41 4D 45 5E 2E 6C 6F 77 65 72 3A 3D 43 4F 4D 50 AME^.lower:=COMP
000040: 4C 49 4E 4B 20 45 4E 44 3B 0D 0A 09 09 45 4E 44 LINK END;....END
000050: 3B 0D 0A 09 43 4F 4D 50 4C 49 4E 4B 5E 2E 75 70 ;...COMPLINK^.up
000060: 70 65 72 3A 3D 4E 49 4C 3B 0D 0A 09 43 4F 4D 50 per:=NIL;...COMP
000070: 4C 49 4E 4B 5E 2E 6C 6F 77 65 72 3A 3D 4E 49 4C LINK^.lower:=NIL
000080: 3B 0D 0A 09 09 0D 0A 20 20 20 20 20 20 45 4E 44 ;...... END
000090: 20 45 4E 54 45 52 4E 41 4D 45 3B 20 0D 0A 0D 0A ENTERNAME; ....
0000A0: 50 52 4F 43 45 44 55 52 45 20 4D 45 52 47 45 4E PROCEDURE MERGEN
0000B0: 41 4D 45 53 3B 20 0D 0A 28 2A 20 0D 0A 20 20 6D AMES; ..(* .. m
0000C0: 65 72 67 65 20 74 68 65 20 6E 61 6D 65 73 20 70 erge the names p
0000D0: 6F 69 6E 74 65 64 20 74 6F 20 62 79 20 63 6F 6D ointed to by com
0000E0: 70 6C 69 6E 6B 20 69 6E 74 6F 20 74 68 65 20 74 plink into the t
0000F0: 61 62 6C 65 20 6F 6E 65 20 62 65 6C 6F 77 20 74 able one below t
000100: 68 65 20 0D 0A 20 20 74 6F 70 20 6F 66 20 74 68 he .. top of th
000110: 65 20 64 69 73 70 6C 61 79 20 0D 0A 20 20 0D 0A e display .. ..
000120: 20 20 4E 6F 74 65 20 74 68 61 74 20 74 68 65 20 Note that the
000130: 68 65 61 70 20 69 73 20 6E 6F 74 20 63 75 74 20 heap is not cut
000140: 62 61 63 6B 20 73 69 6E 63 65 20 74 68 61 74 20 back since that
000150: 0D 0A 20 20 68 61 73 20 61 6C 72 65 61 64 79 20 .. has already
000160: 62 65 65 6E 20 64 6F 6E 65 20 62 79 20 74 68 65 been done by the
000170: 20 63 6F 6D 70 72 65 73 73 20 72 6F 75 74 69 6E compress routin
000180: 65 2C 20 69 66 20 72 65 71 75 69 72 65 64 2A 29 e, if required*)
000190: 0D 0A 56 41 52 20 50 3A 70 6E 61 6D 65 3B 20 0D ..VAR P:pname; .
0001A0: 0A 42 45 47 49 4E 0D 0A 09 43 4F 4D 50 4C 49 4E .BEGIN...COMPLIN
0001B0: 4B 3A 3D 4E 45 57 4D 4F 44 4E 41 4D 45 5E 2E 6D K:=NEWMODNAME^.m
0001C0: 6F 64 6C 69 73 74 3B 20 0D 0A 09 57 48 49 4C 45 odlist; ...WHILE
0001D0: 20 28 43 4F 4D 50 4C 49 4E 4B 3C 3E 4E 49 4C 29 (COMPLINK<>NIL)
0001E0: 20 44 4F 20 0D 0A 09 09 45 4E 54 45 52 4E 41 4D DO ....ENTERNAM
0001F0: 45 3B 20 0D 0A 09 09 43 4F 4D 50 4C 49 4E 4B 3A E; ....COMPLINK:
Size : 512 (Real : 512)
000000: 20 20 20 72 65 63 6F 72 64 74 79 70 65 3A 0D 0A recordtype:..
000010: 09 09 09 09 09 73 75 62 66 69 65 6C 64 73 3A 3D .....subfields:=
000020: 52 45 4C 50 4E 54 52 28 73 75 62 66 69 65 6C 64 RELPNTR(subfield
000030: 73 29 3B 20 0D 0A 09 09 09 09 09 7C 0D 0A 09 09 s); .......|....
000040: 09 09 20 20 20 20 73 75 62 72 74 79 70 65 2C 65 .. subrtype,e
000050: 6E 75 6D 74 79 70 65 3A 0D 0A 09 09 09 09 09 62 numtype:.......b
000060: 74 79 70 65 3A 3D 52 45 4C 50 4E 54 52 28 62 74 type:=RELPNTR(bt
000070: 79 70 65 29 3B 20 0D 0A 09 09 09 09 09 7C 0D 0A ype); .......|..
000080: 09 09 09 09 20 20 20 20 70 6F 69 6E 74 74 79 70 .... pointtyp
000090: 65 2C 73 65 74 74 79 70 65 3A 0D 0A 09 09 09 09 e,settype:......
0000A0: 09 72 65 66 74 79 70 65 3A 3D 52 45 4C 50 4E 54 .reftype:=RELPNT
0000B0: 52 28 72 65 66 74 79 70 65 29 3B 20 0D 0A 09 09 R(reftype); ....
0000C0: 09 09 09 7C 0D 0A 09 09 09 09 20 20 20 20 70 72 ...|...... pr
0000D0: 74 79 70 65 3A 0D 0A 09 09 09 09 09 70 72 70 61 type:.......prpa
0000E0: 72 73 3A 3D 52 45 4C 50 4E 54 52 28 70 72 70 61 rs:=RELPNTR(prpa
0000F0: 72 73 29 3B 20 0D 0A 09 09 09 09 09 4F 4C 44 50 rs); .......OLDP
000100: 41 52 3A 3D 70 72 70 61 72 73 3B 20 0D 0A 09 09 AR:=prpars; ....
000110: 09 09 09 57 48 49 4C 45 20 4F 4C 44 50 41 52 3C ...WHILE OLDPAR<
000120: 3E 4E 49 4C 20 44 4F 20 0D 0A 09 09 09 09 09 20 >NIL DO .......
000130: 20 20 20 57 49 54 48 20 4F 4C 44 50 41 52 5E 20 WITH OLDPAR^
000140: 44 4F 20 0D 0A 09 09 09 09 09 09 76 61 72 74 79 DO ........varty
000150: 70 65 3A 3D 52 45 4C 50 4E 54 52 28 76 61 72 74 pe:=RELPNTR(vart
000160: 79 70 65 29 3B 20 0D 0A 09 09 09 09 09 09 6E 65 ype); ........ne
000170: 78 74 3A 3D 52 45 4C 50 4E 54 52 28 6E 65 78 74 xt:=RELPNTR(next
000180: 29 3B 20 0D 0A 09 09 09 09 09 09 4F 4C 44 50 41 ); ........OLDPA
000190: 52 3A 3D 6E 65 78 74 3B 20 0D 0A 09 09 09 09 09 R:=next; .......
0001A0: 09 45 4E 44 3B 0D 0A 09 09 09 09 09 20 20 20 20 .END;.......
0001B0: 45 4E 44 3B 0D 0A 09 09 09 09 09 20 0D 0A 09 09 END;....... ....
0001C0: 09 09 09 7C 0D 0A 09 09 09 09 20 20 20 20 45 4E ...|...... EN
0001D0: 44 3B 0D 0A 09 09 09 09 7C 28 2A 63 61 73 65 20 D;......|(*case
0001E0: 63 6C 61 73 73 2A 29 0D 0A 09 09 09 20 20 20 20 class*).....
0001F0: 6C 69 6E 6B 63 6C 61 73 73 3A 0D 0A 09 09 09 09 linkclass:......
Size : 512 (Real : 512)
000000: 6E 74 65 72 20 2A 29 0D 0A 42 45 47 49 4E 0D 0A nter *)..BEGIN..
000010: 09 70 3A 3D 41 44 44 52 45 53 53 28 43 41 52 44 .p:=ADDRESS(CARD
000020: 49 4E 41 4C 28 70 29 2D 31 29 3B 0D 0A 09 49 46 INAL(p)-1);...IF
000030: 20 70 5E 3C 31 32 38 20 54 48 45 4E 20 70 5E 3A p^<128 THEN p^:
000040: 3D 70 5E 2B 31 32 38 20 45 4E 44 3B 0D 0A 09 45 =p^+128 END;...E
000050: 4E 44 20 48 49 44 45 3B 0D 0A 50 52 4F 43 45 44 ND HIDE;..PROCED
000060: 55 52 45 20 55 4E 48 49 44 45 28 70 3A 41 44 44 URE UNHIDE(p:ADD
000070: 52 45 53 53 29 3B 0D 0A 0D 0A 28 2A 09 48 69 64 RESS);....(*.Hid
000080: 65 20 61 6E 20 69 64 65 6E 74 69 66 69 65 72 0D e an identifier.
000090: 0A 0D 0A 09 41 6E 20 69 64 65 6E 74 69 66 69 65 ....An identifie
0000A0: 72 20 69 73 20 68 69 64 64 65 6E 20 62 79 20 73 r is hidden by s
0000B0: 65 74 74 69 6E 67 20 74 68 65 20 74 6F 70 20 62 etting the top b
0000C0: 69 74 0D 0A 09 6F 66 20 74 68 65 20 62 79 74 65 it...of the byte
0000D0: 20 70 72 65 63 65 64 69 6E 67 20 74 68 65 20 70 preceding the p
0000E0: 6F 69 6E 74 65 72 20 2A 29 0D 0A 42 45 47 49 4E ointer *)..BEGIN
0000F0: 0D 0A 09 70 3A 3D 41 44 44 52 45 53 53 28 43 41 ...p:=ADDRESS(CA
000100: 52 44 49 4E 41 4C 28 70 29 2D 31 29 3B 0D 0A 09 RDINAL(p)-1);...
000110: 49 46 20 70 5E 3E 3D 31 32 38 20 54 48 45 4E 20 IF p^>=128 THEN
000120: 70 5E 3A 3D 70 5E 2D 31 32 38 20 45 4E 44 3B 0D p^:=p^-128 END;.
000130: 0A 09 45 4E 44 20 55 4E 48 49 44 45 3B 0D 0A 50 ..END UNHIDE;..P
000140: 52 4F 43 45 44 55 52 45 20 52 45 54 52 4E 41 4D ROCEDURE RETRNAM
000150: 45 28 70 3A 41 44 44 52 45 53 53 29 3B 0D 0A 56 E(p:ADDRESS);..V
000160: 41 52 09 69 3A 49 4E 54 45 47 45 52 3B 0D 0A 09 AR.i:INTEGER;...
000170: 6C 65 6E 3A 49 4E 54 45 47 45 52 3B 0D 0A 42 45 len:INTEGER;..BE
000180: 47 49 4E 0D 0A 09 70 3A 3D 41 44 44 52 45 53 53 GIN...p:=ADDRESS
000190: 28 43 41 52 44 49 4E 41 4C 28 70 29 2D 31 29 3B (CARDINAL(p)-1);
0001A0: 0D 0A 09 6C 65 6E 3A 3D 4F 52 44 28 70 5E 29 3B ...len:=ORD(p^);
0001B0: 0D 0A 09 28 2A 63 6C 65 61 72 20 74 6F 70 20 74 ...(*clear top t
0001C0: 77 6F 20 62 69 74 73 20 2A 29 0D 0A 0D 0A 09 49 wo bits *).....I
0001D0: 46 20 6C 65 6E 3E 3D 31 32 38 20 54 48 45 4E 20 F len>=128 THEN
0001E0: 6C 65 6E 3A 3D 6C 65 6E 2D 31 32 38 20 45 4E 44 len:=len-128 END
0001F0: 3B 0D 0A 09 49 46 20 6C 65 6E 3E 3D 36 34 20 54 ;...IF len>=64 T
Size : 512 (Real : 512)
000000: 6C 69 6E 6B 3A 3D 52 45 4C 50 4E 54 52 28 6C 69 link:=RELPNTR(li
000010: 6E 6B 29 3B 20 0D 0A 09 09 09 09 7C 0D 0A 09 09 nk); ......|....
000020: 09 20 20 20 20 45 4E 44 3B 20 28 2A 63 61 73 65 . END; (*case
000030: 20 6E 61 6D 65 63 6C 61 73 73 2A 29 0D 0A 09 09 nameclass*)....
000040: 09 6E 6C 69 6E 6B 3A 3D 65 78 70 6F 72 74 6C 69 .nlink:=exportli
000050: 6E 6B 3B 20 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 nk; .....END;...
000060: 09 20 20 20 20 45 4E 44 3B 20 28 2A 77 68 69 6C . END; (*whil
000070: 65 20 6E 6C 69 6E 6B 3C 3E 6E 69 6C 2A 29 0D 0A e nlink<>nil*)..
000080: 09 45 4E 44 20 52 45 4C 4F 43 41 54 45 3B 20 28 .END RELOCATE; (
000090: 2A 72 65 6C 6F 63 61 74 65 2A 29 0D 0A 50 52 4F *relocate*)..PRO
0000A0: 43 45 44 55 52 45 20 52 45 41 44 46 49 4C 45 28 CEDURE READFILE(
0000B0: 66 6E 3A 46 69 6C 65 4E 61 6D 65 29 3A 42 4F 4F fn:FileName):BOO
0000C0: 4C 45 41 4E 3B 0D 0A 54 59 50 45 09 42 6C 6F 63 LEAN;..TYPE.Bloc
0000D0: 6B 3D 41 52 52 41 59 5B 30 2E 2E 31 32 37 5D 20 k=ARRAY[0..127]
0000E0: 4F 46 20 42 59 54 45 3B 0D 0A 09 70 42 6C 6F 63 OF BYTE;...pBloc
0000F0: 6B 3D 50 4F 49 4E 54 45 52 20 54 4F 20 42 6C 6F k=POINTER TO Blo
000100: 63 6B 3B 0D 0A 56 41 52 09 66 3A 46 49 4C 45 3B ck;..VAR.f:FILE;
000110: 0D 0A 09 72 65 70 6C 79 3A 49 4E 54 45 47 45 52 ...reply:INTEGER
000120: 3B 0D 0A 09 46 69 72 73 74 3A 42 4F 4F 4C 45 41 ;...First:BOOLEA
000130: 4E 3B 0D 0A 09 70 3A 70 42 6C 6F 63 6B 3B 0D 0A N;...p:pBlock;..
000140: 09 62 3A 41 52 52 41 59 5B 30 2E 2E 42 69 67 67 .b:ARRAY[0..Bigg
000150: 65 73 74 46 69 6C 65 5D 20 4F 46 20 42 59 54 45 estFile] OF BYTE
000160: 3B 0D 0A 42 45 47 49 4E 0D 0A 09 72 65 70 6C 79 ;..BEGIN...reply
000170: 3A 3D 31 3B 0D 0A 09 57 48 49 4C 45 20 28 72 65 :=1;...WHILE (re
000180: 70 6C 79 3C 48 49 47 48 28 66 6E 29 29 20 41 4E ply<HIGH(fn)) AN
000190: 44 20 28 66 6E 5B 72 65 70 6C 79 5D 3C 3E 27 2E D (fn[reply]<>'.
0001A0: 27 29 20 41 4E 44 20 28 66 6E 5B 72 65 70 6C 79 ') AND (fn[reply
0001B0: 5D 3C 3E 27 20 27 29 0D 0A 09 09 41 4E 44 20 28 ]<>' ')....AND (
0001C0: 66 6E 5B 72 65 70 6C 79 5D 3C 3E 30 78 29 20 44 fn[reply]<>0x) D
0001D0: 4F 0D 0A 09 09 49 4E 43 28 72 65 70 6C 79 29 3B O....INC(reply);
0001E0: 0D 0A 09 09 45 4E 44 3B 0D 0A 09 49 46 20 72 65 ....END;...IF re
0001F0: 70 6C 79 3E 48 49 47 48 28 66 6E 29 20 54 48 45 ply>HIGH(fn) THE
Size : 512 (Real : 512)
000000: 48 45 4E 20 6C 65 6E 3A 3D 6C 65 6E 2D 36 34 20 HEN len:=len-64
000010: 45 4E 44 3B 0D 0A 09 49 46 20 6C 65 6E 3E 3D 33 END;...IF len>=3
000020: 32 20 54 48 45 4E 20 6C 65 6E 3A 3D 6C 65 6E 2D 2 THEN len:=len-
000030: 33 32 20 45 4E 44 3B 0D 0A 0D 0A 09 46 4F 52 20 32 END;.....FOR
000040: 69 3A 3D 31 20 54 4F 20 6C 65 6E 20 44 4F 0D 0A i:=1 TO len DO..
000050: 09 09 70 3A 3D 41 44 44 52 45 53 53 28 43 41 52 ..p:=ADDRESS(CAR
000060: 44 49 4E 41 4C 28 70 29 2D 31 29 3B 0D 0A 09 09 DINAL(p)-1);....
000070: 49 44 5B 69 5D 3A 3D 43 48 52 28 70 5E 29 3B 0D ID[i]:=CHR(p^);.
000080: 0A 09 09 45 4E 44 3B 0D 0A 09 46 4F 52 20 69 3A ...END;...FOR i:
000090: 3D 6C 65 6E 2B 31 20 54 4F 20 48 49 47 48 28 49 =len+1 TO HIGH(I
0000A0: 44 29 20 44 4F 20 49 44 5B 69 5D 3A 3D 27 20 27 D) DO ID[i]:=' '
0000B0: 20 45 4E 44 3B 09 0D 0A 09 45 4E 44 20 52 45 54 END;....END RET
0000C0: 52 4E 41 4D 45 3B 0D 0A 0D 0A 50 52 4F 43 45 44 RNAME;....PROCED
0000D0: 55 52 45 20 4C 4F 4F 4B 55 50 28 4C 49 44 3A 61 URE LOOKUP(LID:a
0000E0: 6C 66 61 3B 54 41 42 4C 45 3A 70 6E 61 6D 65 29 lfa;TABLE:pname)
0000F0: 3A 70 6E 61 6D 65 3B 0D 0A 42 45 47 49 4E 0D 0A :pname;..BEGIN..
000100: 09 4C 41 53 54 4E 41 4D 45 3A 3D 4E 49 4C 3B 0D .LASTNAME:=NIL;.
000110: 0A 09 4C 4F 4F 50 0D 0A 09 09 0D 0A 09 09 49 46 ..LOOP........IF
000120: 20 54 41 42 4C 45 3D 4E 49 4C 20 54 48 45 4E 20 TABLE=NIL THEN
000130: 45 58 49 54 20 45 4E 44 3B 0D 0A 09 09 4C 41 53 EXIT END;....LAS
000140: 54 4E 41 4D 45 3A 3D 54 41 42 4C 45 3B 0D 0A 09 TNAME:=TABLE;...
000150: 09 52 45 54 52 4E 41 4D 45 28 54 41 42 4C 45 29 .RETRNAME(TABLE)
000160: 3B 0D 0A 09 09 49 46 20 49 44 3C 4C 49 44 20 54 ;....IF ID<LID T
000170: 48 45 4E 20 54 41 42 4C 45 3A 3D 54 41 42 4C 45 HEN TABLE:=TABLE
000180: 5E 2E 75 70 70 65 72 0D 0A 09 09 45 4C 53 49 46 ^.upper....ELSIF
000190: 20 49 44 3E 4C 49 44 20 54 48 45 4E 20 54 41 42 ID>LID THEN TAB
0001A0: 4C 45 3A 3D 54 41 42 4C 45 5E 2E 6C 6F 77 65 72 LE:=TABLE^.lower
0001B0: 0D 0A 09 09 45 4C 53 45 20 45 58 49 54 20 45 4E ....ELSE EXIT EN
0001C0: 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 52 45 54 D;....END;...RET
0001D0: 55 52 4E 20 54 41 42 4C 45 0D 0A 09 45 4E 44 20 URN TABLE...END
0001E0: 4C 4F 4F 4B 55 50 3B 0D 0A 50 52 4F 43 45 44 55 LOOKUP;..PROCEDU
0001F0: 52 45 20 52 45 4C 50 4E 54 52 28 46 49 45 4C 44 RE RELPNTR(FIELD
Size : 512 (Real : 512)
000000: 4E 20 52 45 54 55 52 4E 20 46 41 4C 53 45 20 45 N RETURN FALSE E
000010: 4E 44 3B 0D 0A 09 49 46 20 66 6E 5B 72 65 70 6C ND;...IF fn[repl
000020: 79 5D 3C 3E 27 2E 27 20 54 48 45 4E 0D 0A 09 09 y]<>'.' THEN....
000030: 49 46 20 28 72 65 70 6C 79 2B 33 29 3E 48 49 47 IF (reply+3)>HIG
000040: 48 28 66 6E 29 20 54 48 45 4E 20 52 45 54 55 52 H(fn) THEN RETUR
000050: 4E 20 46 41 4C 53 45 20 45 4E 44 3B 0D 0A 09 09 N FALSE END;....
000060: 66 6E 5B 72 65 70 6C 79 5D 3A 3D 27 2E 27 3B 0D fn[reply]:='.';.
000070: 0A 09 09 66 6E 5B 72 65 70 6C 79 2B 31 5D 3A 3D ...fn[reply+1]:=
000080: 27 53 27 3B 0D 0A 09 09 66 6E 5B 72 65 70 6C 79 'S';....fn[reply
000090: 2B 32 5D 3A 3D 27 59 27 3B 0D 0A 09 09 66 6E 5B +2]:='Y';....fn[
0000A0: 72 65 70 6C 79 2B 33 5D 3A 3D 27 4D 27 3B 0D 0A reply+3]:='M';..
0000B0: 09 09 66 6E 5B 72 65 70 6C 79 2B 34 5D 3A 3D 27 ..fn[reply+4]:='
0000C0: 20 27 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 4C 6F ';....END;...Lo
0000D0: 6F 6B 75 70 28 66 2C 66 6E 2C 72 65 70 6C 79 29 okup(f,fn,reply)
0000E0: 3B 0D 0A 09 49 46 20 72 65 70 6C 79 3C 3E 30 20 ;...IF reply<>0
0000F0: 54 48 45 4E 20 0D 0A 09 09 57 72 69 74 65 53 74 THEN ....WriteSt
000100: 72 69 6E 67 28 27 20 46 69 6C 65 20 6E 6F 74 20 ring(' File not
000110: 66 6F 75 6E 64 27 29 3B 57 72 69 74 65 53 74 72 found');WriteStr
000120: 69 6E 67 28 66 6E 29 3B 57 72 69 74 65 4C 6E 3B ing(fn);WriteLn;
000130: 0D 0A 09 09 52 45 54 55 52 4E 20 46 41 4C 53 45 ....RETURN FALSE
000140: 20 0D 0A 09 09 45 4E 44 3B 0D 0A 0D 0A 09 28 2A ....END;.....(*
000150: 52 65 61 64 20 74 68 65 20 64 61 74 61 20 2A 29 Read the data *)
000160: 0D 0A 09 53 65 71 52 65 61 64 42 6C 6F 63 6B 28 ...SeqReadBlock(
000170: 66 2C 41 44 52 28 62 29 2C 53 49 5A 45 28 62 29 f,ADR(b),SIZE(b)
000180: 2C 72 65 70 6C 79 29 3B 0D 0A 09 49 46 20 72 65 ,reply);...IF re
000190: 70 6C 79 3D 30 20 54 48 45 4E 20 0D 0A 09 09 57 ply=0 THEN ....W
0001A0: 72 69 74 65 53 74 72 69 6E 67 28 27 53 59 4D 20 riteString('SYM
0001B0: 46 69 6C 65 20 45 6D 70 74 79 20 27 29 3B 57 72 File Empty ');Wr
0001C0: 69 74 65 4C 6E 3B 0D 0A 09 09 52 45 54 55 52 4E iteLn;....RETURN
0001D0: 20 46 41 4C 53 45 20 0D 0A 09 09 45 4E 44 3B 0D FALSE ....END;.
0001E0: 0A 09 49 46 20 72 65 70 6C 79 3D 53 49 5A 45 28 ..IF reply=SIZE(
0001F0: 62 29 20 54 48 45 4E 0D 0A 09 09 57 72 69 74 65 b) THEN....Write
Size : 512 (Real : 512)
000000: 53 3A 41 44 44 52 45 53 53 29 3A 41 44 44 52 45 S:ADDRESS):ADDRE
000010: 53 53 3B 20 0D 0A 0D 0A 28 2A 09 52 65 6C 6F 63 SS; ....(*.Reloc
000020: 61 74 65 20 61 20 70 6F 69 6E 74 65 72 20 0D 0A ate a pointer ..
000030: 0D 0A 09 54 68 65 72 65 20 61 72 65 20 74 77 6F ...There are two
000040: 20 61 72 65 61 73 20 77 68 69 63 68 20 74 68 65 areas which the
000050: 20 70 6F 69 6E 74 65 72 20 6D 61 79 20 6E 65 65 pointer may nee
000060: 64 0D 0A 09 72 65 6C 6F 63 61 74 69 6E 67 20 72 d...relocating r
000070: 65 6C 61 74 69 76 65 20 74 6F 20 28 73 65 65 20 elative to (see
000080: 43 68 75 72 63 68 69 6C 6C 29 2E 20 54 68 65 20 Churchill). The
000090: 67 6C 6F 62 61 6C 73 0D 0A 09 73 79 6D 62 6F 6C globals...symbol
0000A0: 20 74 61 62 6C 65 20 61 6E 64 20 74 68 65 20 6C table and the l
0000B0: 6F 63 61 6C 20 73 79 6D 62 6F 6C 73 20 74 61 62 ocal symbols tab
0000C0: 6C 65 2E 0D 0A 0D 0A 09 54 68 65 20 67 6C 6F 62 le......The glob
0000D0: 61 6C 20 73 79 6D 62 6F 6C 20 74 61 62 6C 65 20 al symbol table
0000E0: 69 73 20 61 73 73 75 6D 65 64 20 74 6F 20 62 65 is assumed to be
0000F0: 20 6C 6F 77 65 72 20 69 6E 20 6D 65 6D 6F 72 79 lower in memory
000100: 2A 29 0D 0A 56 41 52 09 61 3A 41 44 44 52 45 53 *)..VAR.a:ADDRES
000110: 53 3B 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20 46 S;..BEGIN...IF F
000120: 49 45 4C 44 53 3D 4E 49 4C 20 54 48 45 4E 20 0D IELDS=NIL THEN .
000130: 0A 09 20 20 20 20 09 61 3A 3D 4E 49 4C 20 0D 0A .. .a:=NIL ..
000140: 09 45 4C 53 49 46 20 43 41 52 44 49 4E 41 4C 28 .ELSIF CARDINAL(
000150: 46 49 45 4C 44 53 29 3C 52 45 4C 42 41 53 45 20 FIELDS)<RELBASE
000160: 54 48 45 4E 0D 0A 09 09 61 3A 3D 41 44 44 52 45 THEN....a:=ADDRE
000170: 53 53 28 43 41 52 44 49 4E 41 4C 28 46 49 45 4C SS(CARDINAL(FIEL
000180: 44 53 29 2D 47 4C 4F 42 52 45 4C 4F 46 46 29 0D DS)-GLOBRELOFF).
000190: 0A 09 45 4C 53 45 0D 0A 09 09 61 3A 3D 41 44 44 ..ELSE....a:=ADD
0001A0: 52 45 53 53 28 43 41 52 44 49 4E 41 4C 28 46 49 RESS(CARDINAL(FI
0001B0: 45 4C 44 53 29 2D 52 45 4C 4F 46 46 29 0D 0A 09 ELDS)-RELOFF)...
0001C0: 20 09 45 4E 44 3B 0D 0A 09 52 45 54 55 52 4E 20 .END;...RETURN
0001D0: 61 0D 0A 20 20 20 20 20 20 09 45 4E 44 20 52 45 a.. .END RE
0001E0: 4C 50 4E 54 52 3B 20 0D 0A 0D 0A 50 52 4F 43 45 LPNTR; ....PROCE
0001F0: 44 55 52 45 20 52 45 4C 4F 43 41 54 45 3B 20 0D DURE RELOCATE; .
Size : 512 (Real : 512)
000000: 53 74 72 69 6E 67 28 27 20 53 59 4D 20 66 69 6C String(' SYM fil
000010: 65 20 74 6F 6F 20 6C 61 72 67 65 20 27 29 3B 0D e too large ');.
000020: 0A 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 52 ...WriteLn;....R
000030: 45 54 55 52 4E 20 46 41 4C 53 45 3B 0D 0A 09 09 ETURN FALSE;....
000040: 45 4E 44 3B 0D 0A 09 41 4C 4C 4F 43 41 54 45 28 END;...ALLOCATE(
000050: 70 2C 72 65 70 6C 79 29 3B 0D 0A 09 4D 6F 76 65 p,reply);...Move
000060: 75 70 28 41 44 52 28 62 29 2C 70 2C 72 65 70 6C up(ADR(b),p,repl
000070: 79 29 3B 0D 0A 09 47 4C 4F 42 52 45 4C 4F 46 46 y);...GLOBRELOFF
000080: 3A 3D 30 3B 0D 0A 09 4E 45 57 4D 4F 44 4E 41 4D :=0;...NEWMODNAM
000090: 45 3A 3D 70 6E 61 6D 65 28 43 41 52 44 49 4E 41 E:=pname(CARDINA
0000A0: 4C 28 70 29 2B 4F 52 44 28 62 5B 30 5D 29 2B 32 L(p)+ORD(b[0])+2
0000B0: 29 3B 0D 0A 09 52 45 54 52 4E 41 4D 45 28 4E 45 );...RETRNAME(NE
0000C0: 57 4D 4F 44 4E 41 4D 45 29 3B 0D 0A 09 52 45 4C WMODNAME);...REL
0000D0: 4F 46 46 3A 3D 4E 45 57 4D 4F 44 4E 41 4D 45 5E OFF:=NEWMODNAME^
0000E0: 2E 6D 6F 64 62 61 73 65 2D 43 41 52 44 49 4E 41 .modbase-CARDINA
0000F0: 4C 28 70 29 3B 0D 0A 09 52 45 4C 42 41 53 45 3A L(p);...RELBASE:
000100: 3D 4E 45 57 4D 4F 44 4E 41 4D 45 5E 2E 6D 6F 64 =NEWMODNAME^.mod
000110: 62 61 73 65 3B 0D 0A 09 43 6C 6F 73 65 28 66 29 base;...Close(f)
000120: 3B 0D 0A 09 52 45 54 55 52 4E 20 54 52 55 45 3B ;...RETURN TRUE;
000130: 0D 0A 09 45 4E 44 20 52 45 41 44 46 49 4C 45 3B ...END READFILE;
000140: 0D 0A 50 52 4F 43 45 44 55 52 45 20 45 4E 54 45 ..PROCEDURE ENTE
000150: 52 4E 41 4D 45 3B 20 0D 0A 56 41 52 09 53 49 44 RNAME; ..VAR.SID
000160: 3A 61 6C 66 61 3B 0D 0A 42 45 47 49 4E 0D 0A 09 :alfa;..BEGIN...
000170: 52 45 54 52 4E 41 4D 45 28 43 4F 4D 50 4C 49 4E RETRNAME(COMPLIN
000180: 4B 29 3B 20 0D 0A 09 53 49 44 3A 3D 49 44 3B 0D K); ...SID:=ID;.
000190: 0A 09 4E 41 4D 45 50 4E 54 3A 3D 4C 4F 4F 4B 55 ..NAMEPNT:=LOOKU
0001A0: 50 28 49 44 2C 44 49 53 50 4C 41 59 29 3B 20 0D P(ID,DISPLAY); .
0001B0: 0A 09 49 46 20 4C 41 53 54 4E 41 4D 45 3D 4E 49 ..IF LASTNAME=NI
0001C0: 4C 20 54 48 45 4E 20 44 49 53 50 4C 41 59 3A 3D L THEN DISPLAY:=
0001D0: 43 4F 4D 50 4C 49 4E 4B 0D 0A 09 45 4C 53 45 0D COMPLINK...ELSE.
0001E0: 0A 09 09 52 45 54 52 4E 41 4D 45 28 4C 41 53 54 ...RETRNAME(LAST
0001F0: 4E 41 4D 45 29 3B 0D 0A 09 09 49 46 20 49 44 3C NAME);....IF ID<
Size : 512 (Real : 512)
000000: 0A 28 2A 20 52 65 6C 6F 63 61 74 65 20 6F 6E 65 .(* Relocate one
000010: 20 6F 66 20 74 68 65 20 65 6E 74 72 79 20 6C 69 of the entry li
000020: 73 74 73 20 6A 75 73 74 20 65 6E 74 65 72 65 64 sts just entered
000030: 20 0D 0A 20 20 0D 0A 20 20 41 6C 73 6F 2C 20 69 .. .. Also, i
000040: 66 20 61 6E 79 20 65 6E 74 72 79 20 69 73 20 61 f any entry is a
000050: 20 6C 69 6E 6B 2C 20 72 65 70 6C 61 63 65 20 70 link, replace p
000060: 6F 69 6E 74 65 72 20 62 79 20 70 6F 69 6E 74 65 ointer by pointe
000070: 72 20 74 6F 20 0D 0A 20 20 6C 69 6E 6B 65 64 20 r to .. linked
000080: 6F 62 6A 65 63 74 2A 29 0D 0A 56 41 52 09 4F 4C object*)..VAR.OL
000090: 44 50 41 52 3A 70 70 61 72 61 6D 3B 0D 0A 42 45 DPAR:pparam;..BE
0000A0: 47 49 4E 0D 0A 09 57 48 49 4C 45 20 6E 6C 69 6E GIN...WHILE nlin
0000B0: 6B 3C 3E 4E 49 4C 20 44 4F 20 0D 0A 09 20 20 20 k<>NIL DO ...
0000C0: 20 57 49 54 48 20 6E 6C 69 6E 6B 5E 20 44 4F 20 WITH nlink^ DO
0000D0: 0D 0A 09 09 52 45 54 52 4E 41 4D 45 28 6E 6C 69 ....RETRNAME(nli
0000E0: 6E 6B 29 3B 0D 0A 09 09 6E 74 79 70 65 3A 3D 52 nk);....ntype:=R
0000F0: 45 4C 50 4E 54 52 28 6E 74 79 70 65 29 3B 20 0D ELPNTR(ntype); .
000100: 0A 09 09 6C 6F 77 65 72 3A 3D 52 45 4C 50 4E 54 ...lower:=RELPNT
000110: 52 28 6C 6F 77 65 72 29 3B 20 0D 0A 09 09 75 70 R(lower); ....up
000120: 70 65 72 3A 3D 52 45 4C 50 4E 54 52 28 75 70 70 per:=RELPNTR(upp
000130: 65 72 29 3B 20 0D 0A 0D 0A 09 09 65 78 70 6F 72 er); ......expor
000140: 74 6C 69 6E 6B 3A 3D 52 45 4C 50 4E 54 52 28 65 tlink:=RELPNTR(e
000150: 78 70 6F 72 74 6C 69 6E 6B 29 3B 20 0D 0A 09 09 xportlink); ....
000160: 43 41 53 45 20 6E 61 6D 65 63 6C 61 73 73 20 4F CASE nameclass O
000170: 46 20 0D 0A 09 09 09 74 69 70 65 3A 0D 0A 09 09 F .....tipe:....
000180: 09 20 20 20 20 43 41 53 45 20 63 6C 61 73 73 20 . CASE class
000190: 4F 46 20 0D 0A 09 09 09 09 20 20 20 20 61 72 72 OF ...... arr
0001A0: 61 79 74 79 70 65 3A 0D 0A 09 09 09 09 09 65 6C aytype:.......el
0001B0: 65 6D 74 79 70 65 3A 3D 52 45 4C 50 4E 54 52 28 emtype:=RELPNTR(
0001C0: 65 6C 65 6D 74 79 70 65 29 3B 20 0D 0A 09 09 09 elemtype); .....
0001D0: 09 09 69 6E 64 65 78 74 79 70 65 3A 3D 52 45 4C ..indextype:=REL
0001E0: 50 4E 54 52 28 69 6E 64 65 78 74 79 70 65 29 3B PNTR(indextype);
0001F0: 20 0D 0A 09 09 09 09 09 7C 0D 0A 09 09 09 09 20 .......|......
Size : 512 (Real : 512)
000000: 0A 09 09 57 49 54 48 20 4D 61 63 72 6F 53 74 61 ...WITH MacroSta
000010: 63 6B 5B 4D 61 63 72 6F 44 65 70 74 68 5D 20 44 ck[MacroDepth] D
000020: 4F 0D 0A 09 09 09 50 6F 73 3A 3D 31 3B 0D 0A 09 O.....Pos:=1;...
000030: 09 09 44 65 66 3A 3D 70 3B 0D 0A 09 09 09 43 6F ..Def:=p;.....Co
000040: 75 6E 74 3A 3D 72 65 70 65 61 74 3B 0D 0A 09 09 unt:=repeat;....
000050: 09 45 4E 44 3B 28 2A 57 49 54 48 2A 29 0D 0A 09 .END;(*WITH*)...
000060: 09 45 4E 44 3B 28 2A 70 3C 3E 4E 49 4C 20 65 74 .END;(*p<>NIL et
000070: 63 2A 29 0D 0A 09 45 4E 44 20 41 64 64 4D 61 63 c*)...END AddMac
000080: 72 6F 3B 0D 0A 56 41 52 09 53 70 65 63 69 61 6C ro;..VAR.Special
000090: 53 65 71 75 65 6E 63 65 3A 42 4F 4F 4C 45 41 4E Sequence:BOOLEAN
0000A0: 3D 46 41 4C 53 45 3B 0D 0A 50 52 4F 43 45 44 55 =FALSE;..PROCEDU
0000B0: 52 45 20 52 65 61 64 41 43 68 61 72 28 56 41 52 RE ReadAChar(VAR
0000C0: 20 52 65 73 75 6C 74 3A 43 48 41 52 29 3B 0D 0A Result:CHAR);..
0000D0: 0D 0A 28 2A 09 72 65 61 64 20 6E 65 78 74 20 63 ..(*.read next c
0000E0: 68 61 72 61 63 74 65 72 2C 20 63 68 65 63 6B 69 haracter, checki
0000F0: 6E 67 20 66 6F 72 20 61 72 72 6F 77 73 2F 66 75 ng for arrows/fu
000100: 6E 63 74 69 6F 6E 20 6B 65 79 73 0D 0A 09 69 6E nction keys...in
000110: 20 61 6E 64 20 6F 75 74 20 70 6F 69 6E 74 20 74 and out point t
000120: 6F 20 74 68 65 20 63 68 61 72 61 63 74 65 72 73 o the characters
000130: 20 77 68 69 63 68 20 68 61 76 65 20 62 65 65 6E which have been
000140: 20 72 65 61 64 20 61 68 65 61 64 0D 0A 09 42 79 read ahead...By
000150: 20 52 65 61 64 41 43 68 61 72 20 69 6E 20 61 6E ReadAChar in an
000160: 20 61 74 74 65 6D 70 74 20 74 6F 20 72 65 73 6F attempt to reso
000170: 6C 76 65 20 61 20 6D 61 63 72 6F 0D 0A 0D 0A 09 lve a macro.....
000180: 57 68 65 6E 20 52 65 61 64 41 43 68 61 72 20 69 When ReadAChar i
000190: 73 20 65 6E 74 65 72 65 64 2C 20 69 66 20 74 68 s entered, if th
0001A0: 69 73 20 62 75 66 66 65 72 20 69 73 20 6E 6F 74 is buffer is not
0001B0: 20 65 6D 70 74 79 2C 0D 0A 09 74 68 65 20 66 69 empty,...the fi
0001C0: 72 73 74 20 63 68 61 72 61 63 74 65 72 20 69 73 rst character is
0001D0: 20 74 6F 20 62 65 20 6C 6F 6F 6B 65 64 20 75 70 to be looked up
0001E0: 20 74 6F 20 73 65 65 20 69 66 20 69 74 20 69 73 to see if it is
0001F0: 20 61 20 0D 0A 09 73 74 61 72 74 20 6F 66 20 61 a ...start of a
Size : 512 (Real : 512)
000000: 72 65 65 6E 49 4F 20 49 4D 50 4F 52 54 20 4F 75 reenIO IMPORT Ou
000010: 74 70 75 74 54 6F 53 63 72 65 65 6E 3B 0D 0A 43 tputToScreen;..C
000020: 4F 4E 53 54 09 42 6C 6F 63 6B 4C 65 6E 3D 31 32 ONST.BlockLen=12
000030: 38 3B 0D 0A 09 45 53 43 3D 31 62 78 3B 0D 0A 54 8;...ESC=1bx;..T
000040: 59 50 45 0D 0A 09 4B 65 79 44 65 66 3D 52 45 43 YPE...KeyDef=REC
000050: 4F 52 44 0D 0A 09 09 4C 65 6E 67 74 68 3A 5B 31 ORD....Length:[1
000060: 2E 2E 36 31 5D 3B 0D 0A 09 09 43 6F 6D 6D 43 68 ..61];....CommCh
000070: 61 72 73 3A 41 52 52 41 59 5B 31 2E 2E 32 30 5D ars:ARRAY[1..20]
000080: 20 4F 46 20 43 48 41 52 3B 0D 0A 09 09 45 4E 44 OF CHAR;....END
000090: 3B 0D 0A 09 50 4B 65 79 44 65 66 3D 50 4F 49 4E ;...PKeyDef=POIN
0000A0: 54 45 52 20 54 4F 20 4B 65 79 44 65 66 3B 0D 0A TER TO KeyDef;..
0000B0: 09 4D 61 63 72 6F 50 6F 69 6E 74 3D 52 45 43 4F .MacroPoint=RECO
0000C0: 52 44 0D 0A 09 09 50 6F 73 3A 43 41 52 44 49 4E RD....Pos:CARDIN
0000D0: 41 4C 3B 0D 0A 09 09 44 65 66 3A 50 4B 65 79 44 AL;....Def:PKeyD
0000E0: 65 66 3B 0D 0A 09 09 43 6F 75 6E 74 3A 49 4E 54 ef;....Count:INT
0000F0: 45 47 45 52 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 EGER;....END;...
000100: 09 09 09 0D 0A 56 41 52 0D 0A 09 63 68 3A 43 48 .....VAR...ch:CH
000110: 41 52 3B 0D 0A 09 43 6F 6D 6D 61 6E 64 73 3A 41 AR;...Commands:A
000120: 52 52 41 59 5B 27 40 27 2E 2E 27 5A 27 5D 20 4F RRAY['@'..'Z'] O
000130: 46 20 50 4B 65 79 44 65 66 3B 0D 0A 09 4D 61 63 F PKeyDef;...Mac
000140: 72 6F 44 65 70 74 68 3A 43 41 52 44 49 4E 41 4C roDepth:CARDINAL
000150: 3D 30 3B 0D 0A 09 4D 61 63 72 6F 53 74 61 63 6B =0;...MacroStack
000160: 3A 41 52 52 41 59 5B 31 2E 2E 35 5D 20 4F 46 20 :ARRAY[1..5] OF
000170: 4D 61 63 72 6F 50 6F 69 6E 74 3B 0D 0A 09 4C 65 MacroPoint;...Le
000180: 61 72 6E 63 68 3A 43 48 41 52 3B 0D 0A 09 4C 65 arnch:CHAR;...Le
000190: 61 72 6E 4C 65 6E 3A 43 41 52 44 49 4E 41 4C 3B arnLen:CARDINAL;
0001A0: 0D 0A 09 4C 65 61 72 6E 69 6E 67 3A 42 4F 4F 4C ...Learning:BOOL
0001B0: 45 41 4E 3D 46 41 4C 53 45 3B 0D 0A 09 54 65 78 EAN=FALSE;...Tex
0001C0: 74 3A 41 52 52 41 59 5B 31 2E 2E 36 30 5D 20 4F t:ARRAY[1..60] O
0001D0: 46 20 43 48 41 52 3B 0D 0A 09 69 3A 43 41 52 44 F CHAR;...i:CARD
0001E0: 49 4E 41 4C 3B 0D 0A 09 53 68 6F 77 43 68 61 6E INAL;...ShowChan
0001F0: 67 65 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 09 ge:BOOLEAN;.....
Size : 512 (Real : 512)
000000: 3D 43 4F 4D 50 4C 49 4E 4B 5E 2E 65 78 70 6F 72 =COMPLINK^.expor
000010: 74 6C 69 6E 6B 3B 20 0D 0A 09 09 45 4E 44 3B 0D tlink; ....END;.
000020: 0A 09 45 4E 44 20 4D 45 52 47 45 4E 41 4D 45 53 ..END MERGENAMES
000030: 3B 20 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 ; ....PROCEDURE
000040: 4C 4F 41 44 46 49 4C 45 28 66 6E 3A 46 69 6C 65 LOADFILE(fn:File
000050: 4E 61 6D 65 29 3A 70 6E 61 6D 65 3B 0D 0A 28 2A Name):pname;..(*
000060: 20 6C 6F 61 64 20 61 20 66 69 6C 65 20 74 6F 20 load a file to
000070: 62 65 20 69 6D 70 6F 72 74 65 64 20 20 20 0D 0A be imported ..
000080: 20 20 0D 0A 20 20 72 65 6C 6F 63 61 74 65 20 74 .. relocate t
000090: 68 65 20 65 6E 74 72 69 65 73 20 2A 29 0D 0A 20 he entries *)..
0000A0: 20 0D 0A 56 41 52 20 09 54 49 44 3A 61 6C 66 61 ..VAR .TID:alfa
0000B0: 3B 20 0D 0A 09 0D 0A 42 45 47 49 4E 0D 0A 09 44 ; .....BEGIN...D
0000C0: 49 53 50 4C 41 59 3A 3D 4E 49 4C 3B 0D 0A 09 47 ISPLAY:=NIL;...G
0000D0: 4C 4F 42 52 45 4C 4F 46 46 3A 3D 30 3B 0D 0A 09 LOBRELOFF:=0;...
0000E0: 49 46 20 4E 4F 54 20 52 45 41 44 46 49 4C 45 28 IF NOT READFILE(
0000F0: 66 6E 29 20 54 48 45 4E 20 0D 0A 09 20 20 20 20 fn) THEN ...
000100: 52 45 54 55 52 4E 20 4E 49 4C 0D 0A 09 20 20 20 RETURN NIL...
000110: 20 45 4E 44 3B 0D 0A 28 2A 09 6E 65 77 6D 6F 64 END;..(*.newmod
000120: 6E 61 6D 65 20 70 6F 69 6E 74 73 20 74 6F 20 65 name points to e
000130: 6E 74 72 79 20 66 6F 72 20 66 69 72 73 74 20 6D ntry for first m
000140: 6F 64 75 6C 65 20 6E 61 6D 65 20 0D 0A 20 20 20 odule name ..
000150: 20 09 77 68 69 63 68 20 69 73 20 74 68 65 20 6E .which is the n
000160: 61 6D 65 20 6F 66 20 74 68 65 20 6D 6F 64 75 6C ame of the modul
000170: 65 20 62 65 69 6E 67 20 6C 6F 61 64 65 64 20 0D e being loaded .
000180: 0A 20 20 20 20 09 69 74 20 69 73 20 66 6F 6C 6C . .it is foll
000190: 6F 77 65 64 20 62 79 20 61 20 63 68 61 69 6E 20 owed by a chain
0001A0: 6F 66 20 6E 61 6D 65 73 20 6F 66 20 6D 6F 64 75 of names of modu
0001B0: 6C 65 73 20 0D 0A 20 20 20 09 69 6D 70 6F 72 74 les .. .import
0001C0: 65 64 20 62 79 20 74 68 61 74 20 6D 6F 64 75 6C ed by that modul
0001D0: 65 20 0D 0A 20 20 0D 0A 20 20 09 69 6E 20 74 68 e .. .. .in th
0001E0: 65 20 63 61 73 65 20 6F 66 20 74 68 65 20 66 69 e case of the fi
0001F0: 72 73 74 20 6D 6F 64 75 6C 65 2C 20 77 65 20 6D rst module, we m
Size : 512 (Real : 512)
000000: 28 2A 09 6B 65 65 70 20 61 20 63 69 72 63 75 6C (*.keep a circul
000010: 61 72 20 62 75 66 66 65 72 20 6F 66 20 63 68 61 ar buffer of cha
000020: 72 61 63 74 65 72 73 20 77 68 69 6C 65 20 6D 61 racters while ma
000030: 74 63 68 69 6E 67 20 69 73 0D 0A 09 09 68 61 70 tching is....hap
000040: 70 65 6E 69 6E 67 2A 29 0D 0A 0D 0A 0D 0A 50 52 pening*)......PR
000050: 4F 43 45 44 55 52 45 20 57 61 69 74 46 6F 72 43 OCEDURE WaitForC
000060: 68 3B 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20 4E h;..BEGIN...IF N
000070: 4F 54 20 53 68 6F 77 43 68 61 6E 67 65 20 54 48 OT ShowChange TH
000080: 45 4E 0D 0A 09 09 53 68 6F 77 43 68 61 6E 67 65 EN....ShowChange
000090: 3A 3D 54 52 55 45 3B 0D 0A 09 09 4F 75 74 70 75 :=TRUE;....Outpu
0000A0: 74 54 6F 53 63 72 65 65 6E 28 54 52 55 45 29 3B tToScreen(TRUE);
0000B0: 0D 0A 09 09 52 65 64 69 73 70 6C 61 79 3B 0D 0A ....Redisplay;..
0000C0: 09 09 45 4E 44 3B 0D 0A 09 52 45 50 45 41 54 0D ..END;...REPEAT.
0000D0: 0A 09 09 42 75 73 79 52 65 61 64 28 63 68 29 3B ...BusyRead(ch);
0000E0: 0D 0A 09 09 55 4E 54 49 4C 20 63 68 3C 3E 30 78 ....UNTIL ch<>0x
0000F0: 3B 0D 0A 09 45 4E 44 20 57 61 69 74 46 6F 72 43 ;...END WaitForC
000100: 68 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 68 h;..PROCEDURE Ch
000110: 65 63 6B 49 6E 74 65 72 72 75 70 74 28 29 3A 42 eckInterrupt():B
000120: 4F 4F 4C 45 41 4E 3B 0D 0A 0D 0A 28 2A 09 43 68 OOLEAN;....(*.Ch
000130: 65 63 6B 20 74 68 65 20 6B 65 79 62 6F 61 72 64 eck the keyboard
000140: 20 66 6F 72 20 61 6E 20 69 6E 74 65 72 75 70 74 for an interupt
000150: 20 28 43 6F 6E 74 72 6F 6C 20 55 29 0D 0A 0D 0A (Control U)....
000160: 09 41 6C 73 6F 2C 20 69 66 20 45 73 63 61 70 65 .Also, if Escape
000170: 20 68 61 73 20 62 65 65 6E 20 74 79 70 65 64 2C has been typed,
000180: 20 73 74 6F 70 20 74 65 72 6D 69 6E 61 6C 20 6F stop terminal o
000190: 75 74 70 75 74 0D 0A 09 75 6E 74 69 6C 20 61 6E utput...until an
0001A0: 6F 74 68 65 72 20 63 68 61 72 61 63 74 65 72 20 other character
0001B0: 69 73 20 74 79 70 65 64 2A 29 0D 0A 0D 0A 56 41 is typed*)....VA
0001C0: 52 09 63 68 31 3A 43 48 41 52 3B 0D 0A 42 45 47 R.ch1:CHAR;..BEG
0001D0: 49 4E 0D 0A 09 42 75 73 79 52 65 61 64 28 63 68 IN...BusyRead(ch
0001E0: 31 29 3B 0D 0A 09 43 41 53 45 20 63 68 31 20 4F 1);...CASE ch1 O
0001F0: 46 20 0D 0A 09 09 31 35 78 3A 52 45 54 55 52 4E F ....15x:RETURN
Size : 512 (Real : 512)
000000: 75 73 74 20 73 65 74 20 74 68 65 20 0D 0A 20 20 ust set the ..
000010: 09 6E 75 6D 62 65 72 73 20 6F 66 20 74 68 65 20 .numbers of the
000020: 76 61 72 69 61 62 6C 65 73 20 74 6F 20 6D 6F 64 variables to mod
000030: 75 6C 65 6E 6F 20 0D 0A 20 20 09 62 75 74 20 74 uleno .. .but t
000040: 68 69 73 20 69 73 20 69 72 72 65 6C 65 76 61 6E his is irrelevan
000050: 74 20 66 6F 72 20 74 68 65 20 6F 74 68 65 72 20 t for the other
000060: 0D 0A 20 20 09 6D 6F 64 75 6C 65 73 20 61 73 20 .. .modules as
000070: 74 68 65 20 76 61 72 69 61 62 6C 65 73 20 63 61 the variables ca
000080: 6E 6E 6F 74 20 62 65 20 61 63 63 65 73 73 65 64 nnot be accessed
000090: 20 0D 0A 20 20 09 75 6E 6C 65 73 73 20 65 78 70 .. .unless exp
0000A0: 6C 69 63 69 74 6C 79 20 69 6D 70 6F 72 74 65 64 licitly imported
0000B0: 20 2A 29 0D 0A 0D 0A 09 43 4F 4D 50 4C 49 4E 4B *).....COMPLINK
0000C0: 3A 3D 4E 45 57 4D 4F 44 4E 41 4D 45 3B 20 0D 0A :=NEWMODNAME; ..
0000D0: 09 57 48 49 4C 45 20 43 4F 4D 50 4C 49 4E 4B 3C .WHILE COMPLINK<
0000E0: 3E 4E 49 4C 20 44 4F 20 0D 0A 09 20 20 20 20 57 >NIL DO ... W
0000F0: 49 54 48 20 43 4F 4D 50 4C 49 4E 4B 5E 20 44 4F ITH COMPLINK^ DO
000100: 20 0D 0A 09 09 52 45 54 52 4E 41 4D 45 28 43 4F ....RETRNAME(CO
000110: 4D 50 4C 49 4E 4B 29 3B 0D 0A 09 09 6D 6F 64 6C MPLINK);....modl
000120: 69 73 74 3A 3D 52 45 4C 50 4E 54 52 28 6D 6F 64 ist:=RELPNTR(mod
000130: 6C 69 73 74 29 3B 20 0D 0A 09 09 61 6E 6F 6E 6C list); ....anonl
000140: 69 73 74 3A 3D 52 45 4C 50 4E 54 52 28 61 6E 6F ist:=RELPNTR(ano
000150: 6E 6C 69 73 74 29 3B 20 0D 0A 09 09 6E 6C 69 6E nlist); ....nlin
000160: 6B 3A 3D 6D 6F 64 6C 69 73 74 3B 20 0D 0A 09 09 k:=modlist; ....
000170: 52 45 4C 4F 43 41 54 45 3B 0D 0A 09 09 6E 6C 69 RELOCATE;....nli
000180: 6E 6B 3A 3D 61 6E 6F 6E 6C 69 73 74 3B 20 0D 0A nk:=anonlist; ..
000190: 09 09 52 45 4C 4F 43 41 54 45 3B 0D 0A 09 09 6E ..RELOCATE;....n
0001A0: 65 78 74 6D 6F 64 75 6C 65 3A 3D 52 45 4C 50 4E extmodule:=RELPN
0001B0: 54 52 28 6E 65 78 74 6D 6F 64 75 6C 65 29 3B 20 TR(nextmodule);
0001C0: 0D 0A 09 09 43 4F 4D 50 4C 49 4E 4B 3A 3D 6E 65 ....COMPLINK:=ne
0001D0: 78 74 6D 6F 64 75 6C 65 3B 20 0D 0A 09 09 45 4E xtmodule; ....EN
0001E0: 44 3B 0D 0A 09 20 20 20 20 45 4E 44 3B 0D 0A 09 D;... END;...
0001F0: 4D 45 52 47 45 4E 41 4D 45 53 3B 0D 0A 09 4E 45 MERGENAMES;...NE
Size : 512 (Real : 512)
000000: 20 54 52 55 45 0D 0A 09 09 20 20 20 20 7C 0D 0A TRUE.... |..
000010: 09 09 31 62 78 3A 53 68 6F 77 43 68 61 6E 67 65 ..1bx:ShowChange
000020: 3A 3D 46 41 4C 53 45 3B 0D 0A 09 09 20 20 20 20 :=FALSE;....
000030: 4F 75 74 70 75 74 54 6F 53 63 72 65 65 6E 28 46 OutputToScreen(F
000040: 41 4C 53 45 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A ALSE);....END;..
000050: 09 52 45 54 55 52 4E 20 46 41 4C 53 45 0D 0A 09 .RETURN FALSE...
000060: 45 4E 44 20 43 68 65 63 6B 49 6E 74 65 72 72 75 END CheckInterru
000070: 70 74 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 47 pt;..PROCEDURE G
000080: 65 74 41 43 68 61 72 28 56 41 52 20 63 68 31 3A etAChar(VAR ch1:
000090: 43 48 41 52 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 CHAR);..BEGIN...
0000A0: 49 46 20 4D 61 63 72 6F 44 65 70 74 68 3D 30 20 IF MacroDepth=0
0000B0: 54 48 45 4E 0D 0A 09 09 57 61 69 74 46 6F 72 43 THEN....WaitForC
0000C0: 68 3B 0D 0A 09 09 63 68 31 3A 3D 63 68 3B 0D 0A h;....ch1:=ch;..
0000D0: 09 09 49 46 20 4C 65 61 72 6E 69 6E 67 20 41 4E ..IF Learning AN
0000E0: 44 20 28 4C 65 61 72 6E 4C 65 6E 3C 48 49 47 48 D (LearnLen<HIGH
0000F0: 28 54 65 78 74 29 29 20 54 48 45 4E 0D 0A 09 09 (Text)) THEN....
000100: 09 49 4E 43 28 4C 65 61 72 6E 4C 65 6E 29 3B 0D .INC(LearnLen);.
000110: 0A 09 09 09 54 65 78 74 5B 4C 65 61 72 6E 4C 65 ....Text[LearnLe
000120: 6E 5D 3A 3D 63 68 3B 0D 0A 09 09 09 45 4E 44 3B n]:=ch;.....END;
000130: 0D 0A 09 45 4C 53 45 0D 0A 09 09 57 49 54 48 20 ...ELSE....WITH
000140: 4D 61 63 72 6F 53 74 61 63 6B 5B 4D 61 63 72 6F MacroStack[Macro
000150: 44 65 70 74 68 5D 20 44 4F 0D 0A 09 09 09 49 46 Depth] DO.....IF
000160: 20 50 6F 73 3E 44 65 66 5E 2E 4C 65 6E 67 74 68 Pos>Def^.Length
000170: 20 54 48 45 4E 0D 0A 09 09 09 20 20 20 20 44 45 THEN..... DE
000180: 43 28 43 6F 75 6E 74 29 3B 0D 0A 09 09 09 20 20 C(Count);.....
000190: 20 20 49 46 20 43 68 65 63 6B 49 6E 74 65 72 72 IF CheckInterr
0001A0: 75 70 74 28 29 20 4F 52 20 4E 4F 54 20 46 6F 75 upt() OR NOT Fou
0001B0: 6E 64 20 54 48 45 4E 0D 0A 09 09 09 09 4D 61 63 nd THEN......Mac
0001C0: 72 6F 44 65 70 74 68 3A 3D 31 3B 0D 0A 09 09 09 roDepth:=1;.....
0001D0: 09 43 6F 75 6E 74 3A 3D 30 3B 0D 0A 09 09 09 09 .Count:=0;......
0001E0: 45 4E 44 3B 0D 0A 09 09 09 20 20 20 20 49 46 20 END;..... IF
0001F0: 43 6F 75 6E 74 3C 31 20 54 48 45 4E 0D 0A 09 09 Count<1 THEN....
Size : 512 (Real : 512)
000000: 57 4D 4F 44 4E 41 4D 45 5E 2E 6D 6F 64 6E 61 6D WMODNAME^.modnam
000010: 65 73 3A 3D 44 49 53 50 4C 41 59 3B 09 20 20 20 es:=DISPLAY;.
000020: 20 20 0D 0A 09 52 45 54 55 52 4E 20 4E 45 57 4D ...RETURN NEWM
000030: 4F 44 4E 41 4D 45 3B 20 0D 0A 09 20 0D 0A 09 45 ODNAME; ... ...E
000040: 4E 44 20 4C 4F 41 44 46 49 4C 45 3B 20 0D 0A 09 ND LOADFILE; ...
000050: 45 4E 44 20 49 6D 70 6F 72 74 2E 0D 0A 20 0D 0A END Import... ..
000060: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000070: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000080: 1A 1A 1A 1A 20 20 20 20 42 41 4B 20 00 00 00 00 .... BAK ....
000090: 00 00 00 00 00 00 77 51 90 0D 17 22 A4 20 00 00 ......wQ...". ..
0000A0: 41 4E 53 49 20 20 20 20 53 59 53 00 00 00 00 00 ANSI SYS.....
0000B0: 00 00 00 00 00 00 60 6D 67 0A A1 00 73 06 00 00 ......`mg...s...
0000C0: 41 53 53 49 47 4E 20 20 43 4F 4D 00 00 00 00 00 ASSIGN COM.....
0000D0: 00 00 00 00 00 00 60 6D 67 0A A2 00 E5 05 00 00 ......`mg.......
0000E0: 41 54 54 52 49 42 20 20 45 58 45 00 00 00 00 00 ATTRIB EXE.....
0000F0: 00 00 00 00 00 00 60 6D 67 0A A3 00 F3 3A 00 00 ......`mg....:..
000100: 6F 75 6E 74 3D 32 20 54 48 45 4E 20 41 4C 4C 4F ount=2 THEN ALLO
000110: 43 41 54 45 28 62 32 2C 42 75 66 66 53 69 7A 65 CATE(b2,BuffSize
000120: 29 20 45 4E 44 3B 0D 0A 09 45 4E 44 20 53 65 74 ) END;...END Set
000130: 55 70 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 46 Up;..PROCEDURE F
000140: 72 65 65 55 70 28 69 3A 43 41 52 44 49 4E 41 4C reeUp(i:CARDINAL
000150: 29 3B 0D 0A 28 2A 09 72 65 6C 65 61 73 65 20 62 );..(*.release b
000160: 75 66 66 65 72 73 20 2D 20 75 73 65 64 20 74 6F uffers - used to
000170: 20 64 69 73 70 6F 73 65 20 74 68 65 6D 20 62 75 dispose them bu
000180: 74 20 6E 6F 77 0D 0A 09 64 6F 65 73 20 61 20 72 t now...does a r
000190: 65 6C 65 61 73 65 20 77 68 69 63 68 20 69 73 20 elease which is
0001A0: 66 61 73 74 65 72 2E 20 41 73 20 61 20 72 65 73 faster. As a res
0001B0: 75 6C 74 20 70 61 72 61 6D 65 74 65 72 20 69 73 ult parameter is
0001C0: 20 6E 6F 74 20 72 65 71 75 69 72 65 64 0D 0A 20 not required..
0001D0: 2A 29 0D 0A 42 45 47 49 4E 0D 0A 09 52 45 4C 45 *)..BEGIN...RELE
0001E0: 41 53 45 28 41 44 44 52 45 53 53 28 62 31 29 29 ASE(ADDRESS(b1))
0001F0: 3B 0D 0A 09 45 4E 44 20 46 72 65 65 55 70 3B 0D ;...END FreeUp;.
Size : 512 (Real : 512)
000000: 09 09 44 45 43 28 4D 61 63 72 6F 44 65 70 74 68 ..DEC(MacroDepth
000010: 29 3B 0D 0A 09 09 09 20 20 20 20 45 4C 53 45 0D );..... ELSE.
000020: 0A 09 09 09 09 50 6F 73 3A 3D 31 3B 0D 0A 09 09 .....Pos:=1;....
000030: 09 09 45 4E 44 3B 0D 0A 09 09 09 20 20 20 20 47 ..END;..... G
000040: 65 74 41 43 68 61 72 28 63 68 31 29 3B 0D 0A 09 etAChar(ch1);...
000050: 09 09 45 4C 53 45 0D 0A 09 09 09 09 63 68 31 3A ..ELSE......ch1:
000060: 3D 44 65 66 5E 2E 43 6F 6D 6D 43 68 61 72 73 5B =Def^.CommChars[
000070: 50 6F 73 5D 3B 0D 0A 09 09 09 09 49 4E 43 28 50 Pos];......INC(P
000080: 6F 73 29 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A os);......END;..
000090: 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D ...END;....END;.
0000A0: 0A 09 45 4E 44 20 47 65 74 41 43 68 61 72 3B 0D ..END GetAChar;.
0000B0: 0A 50 52 4F 43 45 44 55 52 45 20 41 64 64 4D 61 .PROCEDURE AddMa
0000C0: 63 72 6F 28 70 3A 50 4B 65 79 44 65 66 3B 72 65 cro(p:PKeyDef;re
0000D0: 70 65 61 74 3A 49 4E 54 45 47 45 52 29 3B 0D 0A peat:INTEGER);..
0000E0: 42 45 47 49 4E 0D 0A 09 49 46 20 28 70 3C 3E 4E BEGIN...IF (p<>N
0000F0: 49 4C 29 20 41 4E 44 20 28 4D 61 63 72 6F 44 65 IL) AND (MacroDe
000100: 70 74 68 3C 3D 48 49 47 48 28 4D 61 63 72 6F 53 pth<=HIGH(MacroS
000110: 74 61 63 6B 29 29 20 54 48 45 4E 0D 0A 0D 0A 09 tack)) THEN.....
000120: 09 28 2A 6D 61 6B 65 20 73 75 72 65 20 74 68 61 .(*make sure tha
000130: 74 20 6D 61 63 72 6F 20 69 73 20 6E 6F 74 20 72 t macro is not r
000140: 65 63 75 72 73 69 76 65 2A 29 0D 0A 0D 0A 0D 0A ecursive*)......
000150: 09 09 46 4F 52 20 69 3A 3D 31 20 54 4F 20 4D 61 ..FOR i:=1 TO Ma
000160: 63 72 6F 44 65 70 74 68 20 44 4F 0D 0A 09 09 09 croDepth DO.....
000170: 49 46 20 4D 61 63 72 6F 53 74 61 63 6B 5B 69 5D IF MacroStack[i]
000180: 2E 44 65 66 3D 70 20 54 48 45 4E 0D 0A 09 09 09 .Def=p THEN.....
000190: 09 45 72 72 6F 72 4D 65 73 73 61 67 65 28 27 52 .ErrorMessage('R
0001A0: 65 63 75 72 73 69 76 65 20 6D 61 63 72 6F 73 21 ecursive macros!
0001B0: 27 2C 27 20 27 29 3B 0D 0A 09 09 09 09 4D 61 63 ',' ');......Mac
0001C0: 72 6F 44 65 70 74 68 3A 3D 30 3B 0D 0A 09 09 09 roDepth:=0;.....
0001D0: 09 52 45 54 55 52 4E 3B 0D 0A 09 09 09 09 45 4E .RETURN;......EN
0001E0: 44 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 49 D;.....END;....I
0001F0: 4E 43 28 4D 61 63 72 6F 44 65 70 74 68 29 3B 0D NC(MacroDepth);.
Size : 512 (Real : 512)
000000: 49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D IMPLEMENTATION M
000010: 4F 44 55 4C 45 20 4D 61 63 72 6F 73 3B 0D 0A 0D ODULE Macros;...
000020: 0A 28 2A 09 54 68 69 73 20 69 73 20 61 20 73 70 .(*.This is a sp
000030: 65 63 69 61 6C 20 76 65 72 73 69 6F 6E 20 6F 66 ecial version of
000040: 20 6D 61 63 72 6F 73 20 66 6F 72 20 6D 61 63 68 macros for mach
000050: 69 6E 65 73 0D 0A 09 77 68 69 63 68 20 64 6F 20 ines...which do
000060: 6E 6F 74 20 68 61 76 65 20 66 75 6E 63 74 69 6F not have functio
000070: 6E 20 6B 65 79 73 20 61 74 20 61 6C 6C 2C 20 73 n keys at all, s
000080: 6F 20 64 6F 0D 0A 09 6E 6F 74 20 6E 65 65 64 20 o do...not need
000090: 74 68 65 20 65 78 74 72 61 20 63 6F 64 65 20 66 the extra code f
0000A0: 6F 72 20 66 75 6E 63 74 69 6F 6E 20 6B 65 79 20 or function key
0000B0: 64 65 74 65 63 74 69 6F 6E 2A 29 0D 0A 0D 0A 46 detection*)....F
0000C0: 52 4F 4D 09 44 6F 4D 65 6E 75 20 49 4D 50 4F 52 ROM.DoMenu IMPOR
0000D0: 54 20 47 65 74 53 74 72 69 6E 67 2C 52 65 64 69 T GetString,Redi
0000E0: 73 70 6C 61 79 3B 0D 0A 46 52 4F 4D 09 53 74 6F splay;..FROM.Sto
0000F0: 72 61 67 65 20 49 4D 50 4F 52 54 20 20 41 4C 4C rage IMPORT ALL
000100: 4F 43 41 54 45 2C 44 45 41 4C 4C 4F 43 41 54 45 OCATE,DEALLOCATE
000110: 3B 0D 0A 46 52 4F 4D 09 54 65 72 6D 69 6E 61 6C ;..FROM.Terminal
000120: 20 49 4D 50 4F 52 54 20 42 75 73 79 52 65 61 64 IMPORT BusyRead
000130: 2C 57 72 69 74 65 53 74 72 69 6E 67 2C 57 72 69 ,WriteString,Wri
000140: 74 65 4C 6E 2C 57 72 69 74 65 3B 0D 0A 46 52 4F teLn,Write;..FRO
000150: 4D 09 46 69 6C 65 73 20 49 4D 50 4F 52 54 20 46 M.Files IMPORT F
000160: 49 4C 45 2C 53 65 71 52 65 61 64 42 6C 6F 63 6B ILE,SeqReadBlock
000170: 2C 53 65 71 57 72 69 74 65 42 6C 6F 63 6B 2C 4C ,SeqWriteBlock,L
000180: 6F 6F 6B 75 70 2C 43 72 65 61 74 65 2C 43 6C 6F ookup,Create,Clo
000190: 73 65 3B 0D 0A 46 52 4F 4D 09 53 59 53 54 45 4D se;..FROM.SYSTEM
0001A0: 20 49 4D 50 4F 52 54 20 41 44 52 2C 54 53 49 5A IMPORT ADR,TSIZ
0001B0: 45 3B 0D 0A 46 52 4F 4D 09 45 64 69 74 44 69 73 E;..FROM.EditDis
0001C0: 70 6C 61 79 20 49 4D 50 4F 52 54 20 45 72 72 6F play IMPORT Erro
0001D0: 72 4D 65 73 73 61 67 65 3B 0D 0A 46 52 4F 4D 09 rMessage;..FROM.
0001E0: 46 61 73 74 4D 6F 76 65 20 49 4D 50 4F 52 54 20 FastMove IMPORT
0001F0: 4D 6F 76 65 75 70 3B 0D 0A 46 52 4F 4D 09 53 63 Moveup;..FROM.Sc
Size : 512 (Real : 512)
000000: 4D 4F 44 55 4C 45 20 4D 79 4C 55 3B 0D 0A 0D 0A MODULE MyLU;....
000010: 28 2A 09 44 61 76 65 20 4D 6F 6F 72 65 27 73 20 (*.Dave Moore's
000020: 6F 77 6E 20 76 65 72 73 69 6F 6E 20 6F 66 20 4C own version of L
000030: 55 20 66 6F 72 20 75 73 65 20 77 69 74 68 20 68 U for use with h
000040: 69 73 20 4D 6F 64 75 6C 61 2D 32 0D 0A 09 63 6F is Modula-2...co
000050: 6D 70 69 6C 65 72 20 2A 29 0D 0A 0D 0A 46 52 4F mpiler *)....FRO
000060: 4D 09 54 65 72 6D 69 6E 61 6C 20 49 4D 50 4F 52 M.Terminal IMPOR
000070: 54 20 57 72 69 74 65 53 74 72 69 6E 67 2C 57 72 T WriteString,Wr
000080: 69 74 65 4C 6E 2C 52 65 61 64 53 74 72 69 6E 67 iteLn,ReadString
000090: 2C 57 72 69 74 65 3B 20 0D 0A 46 52 4F 4D 09 46 ,Write; ..FROM.F
0000A0: 69 6C 65 73 20 09 49 4D 50 4F 52 54 20 46 49 4C iles .IMPORT FIL
0000B0: 45 2C 52 65 61 64 42 6C 6F 63 6B 2C 57 72 69 74 E,ReadBlock,Writ
0000C0: 65 42 6C 6F 63 6B 2C 4C 6F 6F 6B 75 70 2C 43 72 eBlock,Lookup,Cr
0000D0: 65 61 74 65 2C 46 69 6C 65 4E 61 6D 65 2C 0D 0A eate,FileName,..
0000E0: 09 09 09 53 65 71 52 65 61 64 42 6C 6F 63 6B 2C ...SeqReadBlock,
0000F0: 53 65 71 57 72 69 74 65 42 6C 6F 63 6B 2C 43 6F SeqWriteBlock,Co
000100: 6E 76 65 72 74 46 69 6C 65 4E 61 6D 65 2C 43 6C nvertFileName,Cl
000110: 6F 73 65 2C 0D 0A 09 09 09 4D 61 6B 65 42 41 4B ose,.....MakeBAK
000120: 2C 53 65 74 42 6C 6F 63 6B 2C 44 65 76 69 63 65 ,SetBlock,Device
000130: 74 79 70 65 3B 0D 0A 46 52 4F 4D 09 53 6D 61 6C type;..FROM.Smal
000140: 6C 49 4F 20 49 4D 50 4F 52 54 20 52 65 61 64 43 lIO IMPORT ReadC
000150: 61 72 64 2C 57 72 69 74 65 43 61 72 64 2C 57 72 ard,WriteCard,Wr
000160: 69 74 65 48 65 78 3B 0D 0A 46 52 4F 4D 09 53 59 iteHex;..FROM.SY
000170: 53 54 45 4D 20 20 49 4D 50 4F 52 54 20 42 59 54 STEM IMPORT BYT
000180: 45 2C 41 44 52 2C 54 53 49 5A 45 3B 0D 0A 46 52 E,ADR,TSIZE;..FR
000190: 4F 4D 09 43 50 4D 09 49 4D 50 4F 52 54 20 66 63 OM.CPM.IMPORT fc
0001A0: 62 2C 61 6C 66 61 2C 65 78 74 65 6E 2C 6F 70 6E b,alfa,exten,opn
0001B0: 66 63 2C 42 44 4F 53 3B 0D 0A 46 52 4F 4D 09 53 fc,BDOS;..FROM.S
0001C0: 74 72 69 6E 67 73 20 49 4D 50 4F 52 54 20 4C 65 trings IMPORT Le
0001D0: 6E 67 74 68 3B 0D 0A 46 52 4F 4D 09 53 74 6F 72 ngth;..FROM.Stor
0001E0: 61 67 65 20 49 4D 50 4F 52 54 20 41 4C 4C 4F 43 age IMPORT ALLOC
0001F0: 41 54 45 3B 0D 0A 54 59 50 45 0D 0A 09 49 6E 64 ATE;..TYPE...Ind
Size : 512 (Real : 512)
000000: 6D 43 68 61 72 73 5B 69 5D 3B 0D 0A 09 09 09 09 mChars[i];......
000010: 49 4E 43 28 72 65 70 6C 79 29 3B 0D 0A 09 09 09 INC(reply);.....
000020: 09 45 4E 44 3B 0D 0A 09 09 09 45 4E 44 3B 28 2A .END;.....END;(*
000030: 57 49 54 48 20 70 5E 2A 29 0D 0A 09 09 45 4E 44 WITH p^*)....END
000040: 20 28 2A 49 46 20 3C 3E 4E 49 4C 2A 29 0D 0A 09 (*IF <>NIL*)...
000050: 45 4E 44 20 53 74 6F 72 65 4F 6E 65 4D 61 63 72 END StoreOneMacr
000060: 6F 3B 0D 0A 42 45 47 49 4E 0D 0A 09 4C 65 61 72 o;..BEGIN...Lear
000070: 6E 63 68 3A 3D 27 41 27 3B 0D 0A 09 57 48 49 4C nch:='A';...WHIL
000080: 45 20 28 43 6F 6D 6D 61 6E 64 73 5B 4C 65 61 72 E (Commands[Lear
000090: 6E 63 68 5D 3D 4E 49 4C 29 20 41 4E 44 20 28 4C nch]=NIL) AND (L
0000A0: 65 61 72 6E 63 68 3C 3D 27 5A 27 29 20 44 4F 20 earnch<='Z') DO
0000B0: 0D 0A 09 09 4C 65 61 72 6E 63 68 3A 3D 43 48 52 ....Learnch:=CHR
0000C0: 28 4F 52 44 28 4C 65 61 72 6E 63 68 29 2B 31 29 (ORD(Learnch)+1)
0000D0: 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 49 46 20 4C ;....END;...IF L
0000E0: 65 61 72 6E 63 68 3E 27 5A 27 20 54 48 45 4E 20 earnch>'Z' THEN
0000F0: 52 45 54 55 52 4E 20 45 4E 44 3B 0D 0A 09 43 72 RETURN END;...Cr
000100: 65 61 74 65 28 46 2C 27 4D 41 43 52 4F 53 2E 44 eate(F,'MACROS.D
000110: 41 54 20 27 2C 72 65 70 6C 79 29 3B 0D 0A 09 49 AT ',reply);...I
000120: 46 20 72 65 70 6C 79 3C 3E 30 20 54 48 45 4E 0D F reply<>0 THEN.
000130: 0A 09 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 ...WriteString('
000140: 20 63 6F 75 6C 64 20 6E 6F 74 20 73 61 76 65 20 could not save
000150: 6D 61 63 72 6F 73 20 66 69 6C 65 27 29 3B 0D 0A macros file');..
000160: 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 52 45 ..WriteLn;....RE
000170: 54 55 52 4E 0D 0A 09 09 45 4E 44 3B 0D 0A 09 49 TURN....END;...I
000180: 46 20 72 65 70 6C 79 3C 3E 30 20 54 48 45 4E 20 F reply<>0 THEN
000190: 52 45 54 55 52 4E 20 45 4E 44 3B 0D 0A 09 72 65 RETURN END;...re
0001A0: 70 6C 79 3A 3D 30 3B 0D 0A 09 46 4F 52 20 4C 65 ply:=0;...FOR Le
0001B0: 61 72 6E 63 68 3A 3D 27 41 27 20 54 4F 20 27 5A arnch:='A' TO 'Z
0001C0: 27 20 44 4F 20 53 74 6F 72 65 4F 6E 65 4D 61 63 ' DO StoreOneMac
0001D0: 72 6F 28 43 6F 6D 6D 61 6E 64 73 5B 4C 65 61 72 ro(Commands[Lear
0001E0: 6E 63 68 5D 29 20 45 4E 44 3B 0D 0A 0D 0A 09 28 nch]) END;.....(
0001F0: 2A 4E 6F 77 20 6F 75 74 70 75 74 20 6B 65 79 20 *Now output key
Size : 512 (Real : 512)
000000: 20 6B 65 79 20 64 65 66 69 6E 69 74 69 6F 6E 2A key definition*
000010: 29 0D 0A 42 45 47 49 4E 0D 0A 09 47 65 74 41 43 )..BEGIN...GetAC
000020: 68 61 72 28 52 65 73 75 6C 74 29 3B 0D 0A 09 45 har(Result);...E
000030: 4E 44 20 52 65 61 64 41 43 68 61 72 3B 0D 0A 09 ND ReadAChar;...
000040: 09 09 09 09 0D 0A 50 52 4F 43 45 44 55 52 45 20 ......PROCEDURE
000050: 47 65 74 44 65 66 43 68 61 72 3B 0D 0A 56 41 52 GetDefChar;..VAR
000060: 09 54 65 78 74 3A 41 52 52 41 59 5B 31 2E 2E 31 .Text:ARRAY[1..1
000070: 5D 20 4F 46 20 43 48 41 52 3B 0D 0A 42 45 47 49 ] OF CHAR;..BEGI
000080: 4E 0D 0A 09 47 65 74 53 74 72 69 6E 67 28 54 65 N...GetString(Te
000090: 78 74 2C 4C 65 61 72 6E 4C 65 6E 2C 27 43 68 61 xt,LearnLen,'Cha
0000A0: 72 20 74 6F 20 64 65 66 69 6E 65 3A 27 29 3B 0D r to define:');.
0000B0: 0A 09 4C 65 61 72 6E 63 68 3A 3D 43 41 50 28 54 ..Learnch:=CAP(T
0000C0: 65 78 74 5B 31 5D 29 3B 0D 0A 09 45 4E 44 20 47 ext[1]);...END G
0000D0: 65 74 44 65 66 43 68 61 72 3B 0D 0A 50 52 4F 43 etDefChar;..PROC
0000E0: 45 44 55 52 45 20 44 65 66 4D 61 63 72 6F 54 65 EDURE DefMacroTe
0000F0: 78 74 3B 0D 0A 56 41 52 09 70 3A 50 4B 65 79 44 xt;..VAR.p:PKeyD
000100: 65 66 3B 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20 ef;..BEGIN...IF
000110: 4C 65 61 72 6E 4C 65 6E 3E 30 20 54 48 45 4E 0D LearnLen>0 THEN.
000120: 0A 09 09 41 4C 4C 4F 43 41 54 45 28 70 2C 54 53 ...ALLOCATE(p,TS
000130: 49 5A 45 28 43 41 52 44 49 4E 41 4C 29 2B 4C 65 IZE(CARDINAL)+Le
000140: 61 72 6E 4C 65 6E 29 3B 0D 0A 09 09 43 6F 6D 6D arnLen);....Comm
000150: 61 6E 64 73 5B 4C 65 61 72 6E 63 68 5D 3A 3D 70 ands[Learnch]:=p
000160: 20 0D 0A 09 09 57 49 54 48 20 70 5E 20 44 4F 0D ....WITH p^ DO.
000170: 0A 09 09 09 4C 65 6E 67 74 68 3A 3D 4C 65 61 72 ....Length:=Lear
000180: 6E 4C 65 6E 3B 0D 0A 09 09 09 46 4F 52 20 4C 65 nLen;.....FOR Le
000190: 61 72 6E 4C 65 6E 3A 3D 4C 65 61 72 6E 4C 65 6E arnLen:=LearnLen
0001A0: 20 54 4F 20 31 20 42 59 20 2D 31 20 44 4F 0D 0A TO 1 BY -1 DO..
0001B0: 09 09 09 09 43 6F 6D 6D 43 68 61 72 73 5B 4C 65 ....CommChars[Le
0001C0: 61 72 6E 4C 65 6E 5D 3A 3D 54 65 78 74 5B 4C 65 arnLen]:=Text[Le
0001D0: 61 72 6E 4C 65 6E 5D 3B 0D 0A 09 09 09 09 45 4E arnLen];......EN
0001E0: 44 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 0D 0A 09 D;.....END;.....
0001F0: 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 44 65 66 4D .END;...END DefM
Size : 512 (Real : 512)
000000: 73 65 71 75 65 6E 63 65 73 2A 29 0D 0A 09 49 46 sequences*)...IF
000010: 20 72 65 70 6C 79 3C 3E 30 20 54 48 45 4E 0D 0A reply<>0 THEN..
000020: 09 09 42 6C 6F 63 6B 5B 72 65 70 6C 79 5D 3A 3D ..Block[reply]:=
000030: 30 78 3B 0D 0A 09 09 53 65 71 57 72 69 74 65 42 0x;....SeqWriteB
000040: 6C 6F 63 6B 28 46 2C 41 44 52 28 42 6C 6F 63 6B lock(F,ADR(Block
000050: 29 2C 42 6C 6F 63 6B 4C 65 6E 2C 72 65 70 6C 79 ),BlockLen,reply
000060: 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 0D 0A 09 43 );....END;.....C
000070: 6C 6F 73 65 28 46 29 3B 0D 0A 09 45 4E 44 20 53 lose(F);...END S
000080: 74 6F 72 65 4D 61 63 72 6F 73 3B 0D 0A 50 52 4F toreMacros;..PRO
000090: 43 45 44 55 52 45 20 4F 75 74 43 68 28 63 68 3A CEDURE OutCh(ch:
0000A0: 43 48 41 52 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 CHAR);..BEGIN...
0000B0: 49 46 20 63 68 3C 27 20 27 20 54 48 45 4E 0D 0A IF ch<' ' THEN..
0000C0: 09 09 57 72 69 74 65 28 27 5E 27 29 3B 57 72 69 ..Write('^');Wri
0000D0: 74 65 28 43 48 52 28 4F 52 44 28 63 68 29 2B 36 te(CHR(ORD(ch)+6
0000E0: 34 29 29 3B 0D 0A 09 45 4C 53 45 0D 0A 09 09 57 4));...ELSE....W
0000F0: 72 69 74 65 28 63 68 29 3B 0D 0A 09 09 45 4E 44 rite(ch);....END
000100: 3B 0D 0A 09 45 4E 44 20 4F 75 74 43 68 3B 0D 0A ;...END OutCh;..
000110: 50 52 4F 43 45 44 55 52 45 20 50 72 69 6E 74 4D PROCEDURE PrintM
000120: 61 63 72 6F 73 3B 0D 0A 42 45 47 49 4E 0D 0A 09 acros;..BEGIN...
000130: 46 4F 52 20 63 68 3A 3D 27 41 27 20 54 4F 20 27 FOR ch:='A' TO '
000140: 5A 27 20 44 4F 0D 0A 09 09 49 46 20 43 6F 6D 6D Z' DO....IF Comm
000150: 61 6E 64 73 5B 63 68 5D 3C 3E 4E 49 4C 20 54 48 ands[ch]<>NIL TH
000160: 45 4E 20 0D 0A 09 09 20 20 20 20 57 49 54 48 20 EN .... WITH
000170: 43 6F 6D 6D 61 6E 64 73 5B 63 68 5D 5E 20 44 4F Commands[ch]^ DO
000180: 0D 0A 09 09 09 4F 75 74 43 68 28 63 68 29 3B 0D .....OutCh(ch);.
000190: 0A 09 09 09 46 4F 52 20 69 3A 3D 31 20 54 4F 20 ....FOR i:=1 TO
0001A0: 4C 65 6E 67 74 68 20 44 4F 20 0D 0A 09 09 09 09 Length DO ......
0001B0: 4F 75 74 43 68 28 43 6F 6D 6D 43 68 61 72 73 5B OutCh(CommChars[
0001C0: 69 5D 29 20 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A i]) ......END;..
0001D0: 09 09 09 45 4E 44 3B 0D 0A 09 09 20 20 20 20 57 ...END;.... W
0001E0: 72 69 74 65 4C 6E 3B 0D 0A 09 09 20 20 20 20 45 riteLn;.... E
0001F0: 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 57 72 ND;....END;...Wr
Size : 512 (Real : 512)
000000: 61 63 72 6F 54 65 78 74 3B 0D 0A 50 52 4F 43 45 acroText;..PROCE
000010: 44 55 52 45 20 4C 65 61 72 6E 4D 61 63 72 6F 3B DURE LearnMacro;
000020: 0D 0A 0D 0A 28 2A 09 4C 65 61 72 6E 20 61 20 6D ....(*.Learn a m
000030: 61 63 72 6F 20 64 65 66 69 6E 69 74 69 6F 6E 09 acro definition.
000040: 0D 0A 09 63 61 6C 6C 65 64 20 61 74 20 65 69 74 ...called at eit
000050: 68 65 72 20 65 6E 64 20 6F 66 20 64 65 66 69 6E her end of defin
000060: 69 74 69 6F 6E 2A 29 0D 0A 0D 0A 42 45 47 49 4E ition*)....BEGIN
000070: 0D 0A 09 49 46 20 4E 4F 54 20 4C 65 61 72 6E 69 ...IF NOT Learni
000080: 6E 67 20 54 48 45 4E 0D 0A 09 09 47 65 74 44 65 ng THEN....GetDe
000090: 66 43 68 61 72 3B 0D 0A 09 09 4C 65 61 72 6E 69 fChar;....Learni
0000A0: 6E 67 3A 3D 54 52 55 45 3B 0D 0A 09 09 4C 65 61 ng:=TRUE;....Lea
0000B0: 72 6E 4C 65 6E 3A 3D 30 3B 0D 0A 09 45 4C 53 45 rnLen:=0;...ELSE
0000C0: 0D 0A 09 09 4C 65 61 72 6E 4C 65 6E 3A 3D 4C 65 ....LearnLen:=Le
0000D0: 61 72 6E 4C 65 6E 2D 32 3B 0D 0A 09 09 44 65 66 arnLen-2;....Def
0000E0: 4D 61 63 72 6F 54 65 78 74 3B 0D 0A 09 09 4C 65 MacroText;....Le
0000F0: 61 72 6E 69 6E 67 3A 3D 46 41 4C 53 45 3B 0D 0A arning:=FALSE;..
000100: 09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 4C 65 61 ..END;...END Lea
000110: 72 6E 4D 61 63 72 6F 3B 0D 0A 50 52 4F 43 45 44 rnMacro;..PROCED
000120: 55 52 45 20 44 65 66 4D 61 63 72 6F 3B 0D 0A 42 URE DefMacro;..B
000130: 45 47 49 4E 0D 0A 09 47 65 74 44 65 66 43 68 61 EGIN...GetDefCha
000140: 72 3B 0D 0A 09 49 46 20 28 4C 65 61 72 6E 63 68 r;...IF (Learnch
000150: 3E 3D 27 41 27 29 20 41 4E 44 20 28 4C 65 61 72 >='A') AND (Lear
000160: 6E 63 68 3C 3D 27 5A 27 29 20 4F 52 20 28 4C 65 nch<='Z') OR (Le
000170: 61 72 6E 63 68 3D 45 53 43 29 20 54 48 45 4E 0D arnch=ESC) THEN.
000180: 0A 09 09 47 65 74 53 74 72 69 6E 67 28 54 65 78 ...GetString(Tex
000190: 74 2C 4C 65 61 72 6E 4C 65 6E 2C 27 4D 61 63 72 t,LearnLen,'Macr
0001A0: 6F 3A 27 29 3B 0D 0A 09 09 44 65 66 4D 61 63 72 o:');....DefMacr
0001B0: 6F 54 65 78 74 3B 0D 0A 09 09 45 4E 44 3B 0D 0A oText;....END;..
0001C0: 09 45 4E 44 20 44 65 66 4D 61 63 72 6F 3B 0D 0A .END DefMacro;..
0001D0: 50 52 4F 43 45 44 55 52 45 20 4D 61 63 72 6F 28 PROCEDURE Macro(
0001E0: 63 68 3A 43 48 41 52 3B 72 65 70 65 61 74 3A 49 ch:CHAR;repeat:I
0001F0: 4E 54 45 47 45 52 29 3B 0D 0A 56 41 52 09 69 3A NTEGER);..VAR.i:
Size : 512 (Real : 512)
000000: 69 74 65 53 74 72 69 6E 67 28 27 20 45 6E 74 65 iteString(' Ente
000010: 72 20 61 6E 79 20 63 68 61 72 61 63 74 65 72 20 r any character
000020: 74 6F 20 63 6F 6E 74 69 6E 75 65 20 3A 27 29 3B to continue :');
000030: 0D 0A 09 57 61 69 74 46 6F 72 43 68 3B 0D 0A 09 ...WaitForCh;...
000040: 45 4E 44 20 50 72 69 6E 74 4D 61 63 72 6F 73 3B END PrintMacros;
000050: 0D 0A 42 45 47 49 4E 0D 0A 09 53 68 6F 77 43 68 ..BEGIN...ShowCh
000060: 61 6E 67 65 3A 3D 54 52 55 45 3B 0D 0A 09 46 4F ange:=TRUE;...FO
000070: 52 20 63 68 3A 3D 27 40 27 20 54 4F 20 27 5A 27 R ch:='@' TO 'Z'
000080: 20 44 4F 20 43 6F 6D 6D 61 6E 64 73 5B 63 68 5D DO Commands[ch]
000090: 3A 3D 4E 49 4C 20 45 4E 44 3B 0D 0A 09 4C 6F 6F :=NIL END;...Loo
0000A0: 6B 75 70 28 46 2C 27 4D 41 43 52 4F 53 2E 44 41 kup(F,'MACROS.DA
0000B0: 54 20 27 2C 72 65 70 6C 79 29 3B 0D 0A 09 49 46 T ',reply);...IF
0000C0: 20 72 65 70 6C 79 3D 30 20 54 48 45 4E 0D 0A 09 reply=0 THEN...
0000D0: 09 4C 6F 61 64 4D 61 63 72 6F 73 3B 0D 0A 09 09 .LoadMacros;....
0000E0: 45 4E 44 3B 0D 0A 09 09 0D 0A 09 45 4E 44 20 4D END;.......END M
0000F0: 61 63 72 6F 73 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A acros...........
000100: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000110: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000120: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000130: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000140: 1A 44 49 53 43 32 20 20 42 41 54 20 00 00 00 00 .DISC2 BAT ....
000150: 00 00 00 00 00 00 08 82 21 0D E1 0B 3A 01 00 00 ........!...:...
000160: 4C 44 49 53 43 33 20 20 42 41 54 20 00 00 00 00 LDISC3 BAT ....
000170: 00 00 00 00 00 00 75 92 21 0D E2 0B 5E 03 00 00 ......u.!...^...
000180: 79 70 65 3A 73 75 62 66 69 65 6C 64 73 3A 70 6E ype:subfields:pn
000190: 61 6D 65 7C 0D 0A 09 09 09 09 73 75 62 72 74 79 ame|......subrty
0001A0: 70 65 2C 65 6E 75 6D 74 79 70 65 3A 6C 6F 77 3A pe,enumtype:low:
0001B0: 49 4E 54 45 47 45 52 3B 0D 0A 09 09 09 09 09 20 INTEGER;.......
0001C0: 20 20 20 20 20 20 20 20 20 68 69 67 68 3A 49 4E high:IN
0001D0: 54 45 47 45 52 3B 0D 0A 09 09 09 09 09 09 20 20 TEGER;........
0001E0: 62 74 79 70 65 3A 70 6E 61 6D 65 7C 0D 0A 09 09 btype:pname|....
0001F0: 09 09 70 6F 69 6E 74 74 79 70 65 2C 73 65 74 74 ..pointtype,sett
Size : 512 (Real : 512)
000000: 43 41 52 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 4E CARDINAL;..BEGIN
000010: 0D 0A 09 63 68 3A 3D 43 41 50 28 63 68 29 3B 0D ...ch:=CAP(ch);.
000020: 0A 09 49 46 20 63 68 3C 27 20 27 20 54 48 45 4E ..IF ch<' ' THEN
000030: 20 63 68 3A 3D 43 48 52 28 4F 52 44 28 63 68 29 ch:=CHR(ORD(ch)
000040: 2B 36 34 29 20 45 4E 44 3B 0D 0A 09 49 46 20 28 +64) END;...IF (
000050: 63 68 3E 3D 27 40 27 29 20 41 4E 44 20 28 63 68 ch>='@') AND (ch
000060: 3C 3D 27 5A 27 29 20 54 48 45 4E 0D 0A 09 09 41 <='Z') THEN....A
000070: 64 64 4D 61 63 72 6F 28 43 6F 6D 6D 61 6E 64 73 ddMacro(Commands
000080: 5B 63 68 5D 2C 72 65 70 65 61 74 29 3B 0D 0A 09 [ch],repeat);...
000090: 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 4D 61 63 72 .END;...END Macr
0000A0: 6F 3B 0D 0A 56 41 52 09 46 3A 46 49 4C 45 3B 0D o;..VAR.F:FILE;.
0000B0: 0A 09 72 65 70 6C 79 3A 49 4E 54 45 47 45 52 3B ..reply:INTEGER;
0000C0: 0D 0A 50 52 4F 43 45 44 55 52 45 20 4C 6F 61 64 ..PROCEDURE Load
0000D0: 4D 61 63 72 6F 73 3B 0D 0A 56 41 52 09 42 6C 6F Macros;..VAR.Blo
0000E0: 63 6B 3A 41 52 52 41 59 5B 30 2E 2E 42 6C 6F 63 ck:ARRAY[0..Bloc
0000F0: 6B 4C 65 6E 2D 31 5D 20 4F 46 20 43 48 41 52 3B kLen-1] OF CHAR;
000100: 0D 0A 42 45 47 49 4E 0D 0A 09 4C 4F 4F 50 0D 0A ..BEGIN...LOOP..
000110: 09 09 53 65 71 52 65 61 64 42 6C 6F 63 6B 28 46 ..SeqReadBlock(F
000120: 2C 41 44 52 28 42 6C 6F 63 6B 29 2C 42 6C 6F 63 ,ADR(Block),Bloc
000130: 6B 4C 65 6E 2C 72 65 70 6C 79 29 3B 0D 0A 09 09 kLen,reply);....
000140: 49 46 20 72 65 70 6C 79 3C 3E 42 6C 6F 63 6B 4C IF reply<>BlockL
000150: 65 6E 20 54 48 45 4E 20 45 58 49 54 20 45 4E 44 en THEN EXIT END
000160: 3B 0D 0A 09 09 72 65 70 6C 79 3A 3D 30 3B 0D 0A ;....reply:=0;..
000170: 09 09 57 48 49 4C 45 20 42 6C 6F 63 6B 5B 72 65 ..WHILE Block[re
000180: 70 6C 79 5D 3C 3E 30 78 20 44 4F 0D 0A 09 09 09 ply]<>0x DO.....
000190: 4C 65 61 72 6E 4C 65 6E 3A 3D 4F 52 44 28 42 6C LearnLen:=ORD(Bl
0001A0: 6F 63 6B 5B 72 65 70 6C 79 5D 29 3B 0D 0A 09 09 ock[reply]);....
0001B0: 09 4C 65 61 72 6E 63 68 3A 3D 42 6C 6F 63 6B 5B .Learnch:=Block[
0001C0: 72 65 70 6C 79 2B 31 5D 3B 0D 0A 09 09 09 72 65 reply+1];.....re
0001D0: 70 6C 79 3A 3D 72 65 70 6C 79 2B 32 3B 0D 0A 09 ply:=reply+2;...
0001E0: 09 09 46 4F 52 20 69 3A 3D 31 20 54 4F 20 4C 65 ..FOR i:=1 TO Le
0001F0: 61 72 6E 4C 65 6E 20 44 4F 0D 0A 09 09 09 09 54 arnLen DO......T
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: 65 78 74 5B 69 5D 3A 3D 42 6C 6F 63 6B 5B 72 65 ext[i]:=Block[re
000010: 70 6C 79 5D 3B 0D 0A 09 09 09 09 49 4E 43 28 72 ply];......INC(r
000020: 65 70 6C 79 29 3B 0D 0A 09 09 09 09 45 4E 44 3B eply);......END;
000030: 0D 0A 09 09 09 44 65 66 4D 61 63 72 6F 54 65 78 .....DefMacroTex
000040: 74 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45 t;.....END;....E
000050: 4E 44 3B 0D 0A 09 45 4E 44 20 4C 6F 61 64 4D 61 ND;...END LoadMa
000060: 63 72 6F 73 3B 09 09 09 0D 0A 50 52 4F 43 45 44 cros;.....PROCED
000070: 55 52 45 20 53 74 6F 72 65 4D 61 63 72 6F 73 3B URE StoreMacros;
000080: 0D 0A 56 41 52 09 42 6C 6F 63 6B 3A 41 52 52 41 ..VAR.Block:ARRA
000090: 59 5B 30 2E 2E 42 6C 6F 63 6B 4C 65 6E 2D 31 5D Y[0..BlockLen-1]
0000A0: 20 4F 46 20 43 48 41 52 3B 0D 0A 0D 0A 50 52 4F OF CHAR;....PRO
0000B0: 43 45 44 55 52 45 20 53 74 6F 72 65 4F 6E 65 4D CEDURE StoreOneM
0000C0: 61 63 72 6F 28 70 3A 50 4B 65 79 44 65 66 29 3B acro(p:PKeyDef);
0000D0: 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20 70 3C 3E ..BEGIN...IF p<>
0000E0: 4E 49 4C 20 54 48 45 4E 0D 0A 09 09 57 49 54 48 NIL THEN....WITH
0000F0: 20 70 5E 20 44 4F 0D 0A 09 09 09 49 46 20 28 72 p^ DO.....IF (r
000100: 65 70 6C 79 2B 4C 65 6E 67 74 68 2B 31 34 29 3E eply+Length+14)>
000110: 3D 42 6C 6F 63 6B 4C 65 6E 20 54 48 45 4E 0D 0A =BlockLen THEN..
000120: 09 09 09 09 42 6C 6F 63 6B 5B 72 65 70 6C 79 5D ....Block[reply]
000130: 3A 3D 30 78 3B 0D 0A 09 09 09 09 53 65 71 57 72 :=0x;......SeqWr
000140: 69 74 65 42 6C 6F 63 6B 28 46 2C 41 44 52 28 42 iteBlock(F,ADR(B
000150: 6C 6F 63 6B 29 2C 42 6C 6F 63 6B 4C 65 6E 2C 72 lock),BlockLen,r
000160: 65 70 6C 79 29 3B 0D 0A 09 09 09 09 72 65 70 6C eply);......repl
000170: 79 3A 3D 30 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D y:=0;......END;.
000180: 0A 09 09 09 42 6C 6F 63 6B 5B 72 65 70 6C 79 5D ....Block[reply]
000190: 3A 3D 43 48 52 28 4C 65 6E 67 74 68 29 3B 0D 0A :=CHR(Length);..
0001A0: 09 09 09 42 6C 6F 63 6B 5B 72 65 70 6C 79 2B 31 ...Block[reply+1
0001B0: 5D 3A 3D 4C 65 61 72 6E 63 68 3B 0D 0A 09 09 09 ]:=Learnch;.....
0001C0: 72 65 70 6C 79 3A 3D 72 65 70 6C 79 2B 32 3B 0D reply:=reply+2;.
0001D0: 0A 09 09 09 46 4F 52 20 69 3A 3D 31 20 54 4F 20 ....FOR i:=1 TO
0001E0: 4C 65 6E 67 74 68 20 44 4F 0D 0A 09 09 09 09 42 Length DO......B
0001F0: 6C 6F 63 6B 5B 72 65 70 6C 79 5D 3A 3D 43 6F 6D lock[reply]:=Com
Size : 512 (Real : 512)
000000: 48 28 42 75 66 66 65 72 49 6E 29 20 54 48 45 4E H(BufferIn) THEN
000010: 0D 0A 09 09 53 65 71 52 65 61 64 42 6C 6F 63 6B ....SeqReadBlock
000020: 28 46 72 6F 6D 2C 41 44 52 28 42 75 66 66 65 72 (From,ADR(Buffer
000030: 49 6E 29 2C 53 49 5A 45 28 42 75 66 66 65 72 49 In),SIZE(BufferI
000040: 6E 29 2C 72 65 70 6C 79 29 3B 0D 0A 09 09 49 6E n),reply);....In
000050: 50 6F 73 3A 3D 30 3B 0D 0A 09 09 45 4E 44 3B 0D Pos:=0;....END;.
000060: 0A 09 63 68 3A 3D 42 75 66 66 65 72 49 6E 5B 49 ..ch:=BufferIn[I
000070: 6E 50 6F 73 5D 3B 0D 0A 28 2A 09 57 72 69 74 65 nPos];..(*.Write
000080: 43 61 72 64 28 49 6E 50 6F 73 2C 34 29 3B 57 72 Card(InPos,4);Wr
000090: 69 74 65 53 74 72 69 6E 67 28 27 20 27 29 3B 57 iteString(' ');W
0000A0: 72 69 74 65 48 65 78 28 4F 52 44 28 63 68 29 2C riteHex(ORD(ch),
0000B0: 34 29 3B 57 72 69 74 65 4C 6E 3B 2A 29 0D 0A 09 4);WriteLn;*)...
0000C0: 49 4E 43 28 49 6E 50 6F 73 29 3B 0D 0A 09 45 4E INC(InPos);...EN
0000D0: 44 20 47 65 74 43 68 61 72 3B 0D 0A 50 52 4F 43 D GetChar;..PROC
0000E0: 45 44 55 52 45 20 46 6C 75 73 68 4F 75 74 3B 0D EDURE FlushOut;.
0000F0: 0A 56 41 52 09 72 65 70 6C 79 3A 49 4E 54 45 47 .VAR.reply:INTEG
000100: 45 52 3B 0D 0A 09 69 3A 43 41 52 44 49 4E 41 4C ER;...i:CARDINAL
000110: 3B 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20 4F 75 ;..BEGIN...IF Ou
000120: 74 50 6F 73 3D 30 20 54 48 45 4E 20 52 45 54 55 tPos=0 THEN RETU
000130: 52 4E 20 45 4E 44 3B 0D 0A 09 69 3A 3D 31 32 38 RN END;...i:=128
000140: 2A 28 28 4F 75 74 50 6F 73 2B 31 32 37 29 20 44 *((OutPos+127) D
000150: 49 56 20 31 32 38 29 3B 0D 0A 09 49 46 20 69 3E IV 128);...IF i>
000160: 48 49 47 48 28 42 75 66 66 65 72 4F 75 74 29 20 HIGH(BufferOut)
000170: 54 48 45 4E 20 69 3A 3D 48 49 47 48 28 42 75 66 THEN i:=HIGH(Buf
000180: 66 65 72 4F 75 74 29 20 45 4E 44 3B 0D 0A 09 57 ferOut) END;...W
000190: 48 49 4C 45 20 4F 75 74 50 6F 73 3C 69 20 44 4F HILE OutPos<i DO
0001A0: 0D 0A 09 09 42 75 66 66 65 72 4F 75 74 5B 4F 75 ....BufferOut[Ou
0001B0: 74 50 6F 73 5D 3A 3D 31 61 78 3B 0D 0A 09 09 49 tPos]:=1ax;....I
0001C0: 4E 43 28 4F 75 74 50 6F 73 29 3B 0D 0A 09 09 45 NC(OutPos);....E
0001D0: 4E 44 3B 0D 0A 09 49 4E 43 28 69 29 3B 0D 0A 09 ND;...INC(i);...
0001E0: 53 65 71 57 72 69 74 65 42 6C 6F 63 6B 28 54 6F SeqWriteBlock(To
0001F0: 2C 41 44 52 28 42 75 66 66 65 72 4F 75 74 29 2C ,ADR(BufferOut),
Size : 512 (Real : 512)
000000: 70 6C 79 3D 30 20 54 48 45 4E 20 45 58 49 54 20 ply=0 THEN EXIT
000010: 45 4E 44 3B 0D 0A 09 09 53 65 71 57 72 69 74 65 END;....SeqWrite
000020: 42 6C 6F 63 6B 28 54 6F 2C 41 44 52 28 42 75 66 Block(To,ADR(Buf
000030: 66 65 72 29 2C 72 65 70 6C 79 2C 72 65 70 6C 79 fer),reply,reply
000040: 29 3B 0D 0A 09 09 6A 3A 3D 6A 2B 43 41 52 44 49 );....j:=j+CARDI
000050: 4E 41 4C 28 72 65 70 6C 79 29 20 44 49 56 20 31 NAL(reply) DIV 1
000060: 32 38 3B 0D 0A 09 09 49 46 20 4D 61 78 53 65 63 28;....IF MaxSec
000070: 74 6F 72 73 3C 3D 38 20 54 48 45 4E 20 45 58 49 tors<=8 THEN EXI
000080: 54 20 45 4E 44 3B 0D 0A 09 09 4D 61 78 53 65 63 T END;....MaxSec
000090: 74 6F 72 73 3A 3D 4D 61 78 53 65 63 74 6F 72 73 tors:=MaxSectors
0000A0: 2D 38 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 52 45 -8;....END;...RE
0000B0: 54 55 52 4E 20 6A 3B 0D 0A 09 45 4E 44 20 54 72 TURN j;...END Tr
0000C0: 61 6E 73 66 65 72 3B 0D 0A 50 52 4F 43 45 44 55 ansfer;..PROCEDU
0000D0: 52 45 20 55 6E 53 63 72 75 6E 63 68 28 56 41 52 RE UnScrunch(VAR
0000E0: 20 46 72 6F 6D 2C 54 6F 3A 46 49 4C 45 29 3B 0D From,To:FILE);.
0000F0: 0A 54 59 50 45 09 50 4E 61 6D 65 3D 50 4F 49 4E .TYPE.PName=POIN
000100: 54 45 52 20 54 4F 20 4E 61 6D 65 3B 0D 0A 09 49 TER TO Name;...I
000110: 64 65 6E 74 3D 41 52 52 41 59 5B 30 2E 2E 36 30 dent=ARRAY[0..60
000120: 5D 20 4F 46 20 43 48 41 52 3B 0D 0A 09 4E 61 6D ] OF CHAR;...Nam
000130: 65 3D 52 45 43 4F 52 44 0D 0A 09 09 43 6F 64 65 e=RECORD....Code
000140: 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 09 4E 65 :CARDINAL;....Ne
000150: 78 74 3A 50 4E 61 6D 65 3B 0D 0A 09 09 54 65 78 xt:PName;....Tex
000160: 74 3A 49 64 65 6E 74 3B 0D 0A 09 09 45 4E 44 3B t:Ident;....END;
000170: 0D 0A 56 41 52 09 69 2C 6A 3A 43 41 52 44 49 4E ..VAR.i,j:CARDIN
000180: 41 4C 3B 0D 0A 09 72 65 70 6C 79 3A 49 4E 54 45 AL;...reply:INTE
000190: 47 45 52 3B 0D 0A 09 42 75 66 66 65 72 49 6E 2C GER;...BufferIn,
0001A0: 42 75 66 66 65 72 4F 75 74 3A 41 52 52 41 59 5B BufferOut:ARRAY[
0001B0: 30 2E 2E 31 30 32 33 5D 20 4F 46 20 42 59 54 45 0..1023] OF BYTE
0001C0: 3B 0D 0A 09 54 61 62 6C 65 3A 50 4E 61 6D 65 3B ;...Table:PName;
0001D0: 0D 0A 09 70 3A 50 4E 61 6D 65 3B 0D 0A 09 43 6F ...p:PName;...Co
0001E0: 64 65 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 49 de:CARDINAL;...I
0001F0: 64 3A 49 64 65 6E 74 3B 0D 0A 09 49 6E 50 6F 73 d:Ident;...InPos
Size : 512 (Real : 512)
000000: 65 78 52 65 63 6F 72 64 3D 52 45 43 4F 52 44 0D exRecord=RECORD.
000010: 0A 09 09 53 74 61 74 75 73 3A 42 59 54 45 3B 0D ...Status:BYTE;.
000020: 0A 09 09 42 61 73 65 4E 61 6D 65 3A 61 6C 66 61 ...BaseName:alfa
000030: 3B 0D 0A 09 09 45 78 74 3A 65 78 74 65 6E 3B 0D ;....Ext:exten;.
000040: 0A 09 09 53 74 61 72 74 53 65 63 74 6F 72 3A 43 ...StartSector:C
000050: 41 52 44 49 4E 41 4C 3B 0D 0A 09 09 4C 65 6E 67 ARDINAL;....Leng
000060: 74 68 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 09 th:CARDINAL;....
000070: 44 61 74 65 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A Date:CARDINAL;..
000080: 09 09 54 69 6D 65 3A 43 41 52 44 49 4E 41 4C 3B ..Time:CARDINAL;
000090: 0D 0A 09 09 53 63 72 75 6E 63 68 65 64 3A 42 4F ....Scrunched:BO
0000A0: 4F 4C 45 41 4E 3B 0D 0A 09 09 46 69 6C 6C 65 72 OLEAN;....Filler
0000B0: 20 3A 41 52 52 41 59 20 5B 31 2E 2E 31 31 5D 20 :ARRAY [1..11]
0000C0: 4F 46 20 42 59 54 45 3B 0D 0A 09 09 45 4E 44 3B OF BYTE;....END;
0000D0: 0D 0A 09 49 6E 64 65 78 3D 41 52 52 41 59 5B 31 ...Index=ARRAY[1
0000E0: 2E 2E 31 32 38 5D 20 4F 46 20 49 6E 64 65 78 52 ..128] OF IndexR
0000F0: 65 63 6F 72 64 3B 0D 0A 56 41 52 09 4C 69 62 3A ecord;..VAR.Lib:
000100: 46 49 4C 45 3B 0D 0A 09 4C 69 62 4E 61 6D 65 3A FILE;...LibName:
000110: 46 69 6C 65 4E 61 6D 65 3B 0D 0A 09 72 65 70 6C FileName;...repl
000120: 79 3A 49 4E 54 45 47 45 52 3B 0D 0A 09 44 69 72 y:INTEGER;...Dir
000130: 65 63 74 6F 72 79 3A 49 6E 64 65 78 3B 0D 0A 09 ectory:Index;...
000140: 53 6C 6F 74 73 3A 43 41 52 44 49 4E 41 4C 3B 0D Slots:CARDINAL;.
000150: 0A 09 4E 65 78 74 53 65 63 74 6F 72 3A 43 41 52 ..NextSector:CAR
000160: 44 49 4E 41 4C 3B 0D 0A 09 69 2C 6A 3A 43 41 52 DINAL;...i,j:CAR
000170: 44 49 4E 41 4C 3B 0D 0A 09 43 6F 6D 6D 61 6E 64 DINAL;...Command
000180: 43 48 3A 43 48 41 52 3B 0D 0A 09 46 4E 61 6D 65 CH:CHAR;...FName
000190: 3A 46 69 6C 65 4E 61 6D 65 3B 0D 0A 50 52 4F 43 :FileName;..PROC
0001A0: 45 44 55 52 45 20 52 65 61 64 43 6F 6D 6D 61 6E EDURE ReadComman
0001B0: 64 3B 0D 0A 28 2A 09 72 65 61 64 20 61 6E 20 69 d;..(*.read an i
0001C0: 6E 70 75 74 20 63 6F 6D 6D 61 6E 64 2C 20 72 65 nput command, re
0001D0: 74 75 72 6E 20 63 6F 6D 6D 61 6E 64 20 6C 65 74 turn command let
0001E0: 74 65 72 20 69 6E 20 43 6F 6D 6D 61 6E 64 43 48 ter in CommandCH
0001F0: 0D 0A 09 72 65 74 75 72 6E 20 66 69 6C 65 20 6E ...return file n
Size : 512 (Real : 512)
000000: 2C 4F 75 74 50 6F 73 3A 43 41 52 44 49 4E 41 4C ,OutPos:CARDINAL
000010: 3B 0D 0A 09 63 68 3A 43 48 41 52 3B 0D 0A 09 45 ;...ch:CHAR;...E
000020: 6F 66 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 50 52 4F of:BOOLEAN;..PRO
000030: 43 45 44 55 52 45 20 45 6E 74 65 72 49 64 28 73 CEDURE EnterId(s
000040: 3A 41 52 52 41 59 20 4F 46 20 43 48 41 52 29 3B :ARRAY OF CHAR);
000050: 0D 0A 56 41 52 09 72 3A 50 4E 61 6D 65 3B 0D 0A ..VAR.r:PName;..
000060: 09 69 2C 6A 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A .i,j:CARDINAL;..
000070: 42 45 47 49 4E 0D 0A 09 6A 3A 3D 4C 65 6E 67 74 BEGIN...j:=Lengt
000080: 68 28 73 29 3B 0D 0A 09 41 4C 4C 4F 43 41 54 45 h(s);...ALLOCATE
000090: 28 72 2C 6A 2B 54 53 49 5A 45 28 43 41 52 44 49 (r,j+TSIZE(CARDI
0000A0: 4E 41 4C 29 2B 54 53 49 5A 45 28 50 4E 61 6D 65 NAL)+TSIZE(PName
0000B0: 29 2B 31 29 3B 0D 0A 09 0D 0A 09 72 5E 2E 43 6F )+1);......r^.Co
0000C0: 64 65 3A 3D 43 6F 64 65 3B 0D 0A 09 57 49 54 48 de:=Code;...WITH
0000D0: 20 72 5E 20 44 4F 0D 0A 09 09 4E 65 78 74 3A 3D r^ DO....Next:=
0000E0: 54 61 62 6C 65 3B 0D 0A 09 09 54 61 62 6C 65 3A Table;....Table:
0000F0: 3D 72 3B 0D 0A 09 09 46 4F 52 20 69 3A 3D 30 20 =r;....FOR i:=0
000100: 54 4F 20 6A 2D 31 20 44 4F 20 54 65 78 74 5B 69 TO j-1 DO Text[i
000110: 5D 3A 3D 73 5B 69 5D 20 45 4E 44 3B 0D 0A 09 09 ]:=s[i] END;....
000120: 54 65 78 74 5B 6A 5D 3A 3D 30 78 3B 0D 0A 09 09 Text[j]:=0x;....
000130: 45 4E 44 3B 0D 0A 09 45 4E 44 20 45 6E 74 65 72 END;...END Enter
000140: 49 64 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 45 Id;..PROCEDURE E
000150: 6E 74 65 72 47 49 64 28 4C 65 6E 3A 43 41 52 44 nterGId(Len:CARD
000160: 49 4E 41 4C 3B 73 3A 41 52 52 41 59 20 4F 46 20 INAL;s:ARRAY OF
000170: 43 48 41 52 29 3B 0D 0A 56 41 52 20 09 69 2C 6A CHAR);..VAR .i,j
000180: 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 69 64 3A :CARDINAL;...id:
000190: 49 64 65 6E 74 3B 0D 0A 42 45 47 49 4E 0D 0A 09 Ident;..BEGIN...
0001A0: 69 3A 3D 30 3B 0D 0A 09 57 48 49 4C 45 20 28 69 i:=0;...WHILE (i
0001B0: 3C 48 49 47 48 28 73 29 29 20 44 4F 0D 0A 09 09 <HIGH(s)) DO....
0001C0: 46 4F 52 20 6A 3A 3D 69 20 54 4F 20 69 2B 4C 65 FOR j:=i TO i+Le
0001D0: 6E 2D 31 20 44 4F 0D 0A 09 09 09 69 64 5B 6A 2D n-1 DO.....id[j-
0001E0: 69 5D 3A 3D 73 5B 6A 5D 0D 0A 09 09 09 45 4E 44 i]:=s[j].....END
0001F0: 3B 0D 0A 09 09 69 64 5B 4C 65 6E 5D 3A 3D 30 78 ;....id[Len]:=0x
Size : 512 (Real : 512)
000000: 61 6D 65 20 69 6E 20 46 4E 61 6D 65 2A 29 0D 0A ame in FName*)..
000010: 56 41 52 09 54 65 78 74 3A 41 52 52 41 59 5B 31 VAR.Text:ARRAY[1
000020: 2E 2E 32 30 5D 20 4F 46 20 43 48 41 52 3B 0D 0A ..20] OF CHAR;..
000030: 09 69 2C 6A 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A .i,j:CARDINAL;..
000040: 42 45 47 49 4E 0D 0A 09 57 72 69 74 65 53 74 72 BEGIN...WriteStr
000050: 69 6E 67 28 27 43 6F 6D 6D 61 6E 64 3A 27 29 3B ing('Command:');
000060: 0D 0A 09 52 65 61 64 53 74 72 69 6E 67 28 54 65 ...ReadString(Te
000070: 78 74 29 3B 0D 0A 09 43 6F 6D 6D 61 6E 64 43 48 xt);...CommandCH
000080: 3A 3D 43 41 50 28 54 65 78 74 5B 31 5D 29 3B 0D :=CAP(Text[1]);.
000090: 0A 09 69 3A 3D 32 3B 0D 0A 09 57 48 49 4C 45 20 ..i:=2;...WHILE
0000A0: 28 69 3C 3D 48 49 47 48 28 54 65 78 74 29 29 20 (i<=HIGH(Text))
0000B0: 41 4E 44 20 28 54 65 78 74 5B 69 5D 3D 27 20 27 AND (Text[i]=' '
0000C0: 29 20 44 4F 0D 0A 09 09 49 4E 43 28 69 29 20 0D ) DO....INC(i) .
0000D0: 0A 09 09 45 4E 44 3B 0D 0A 09 6A 3A 3D 30 3B 0D ...END;...j:=0;.
0000E0: 0A 09 57 48 49 4C 45 20 28 6A 3C 3D 48 49 47 48 ..WHILE (j<=HIGH
0000F0: 28 46 4E 61 6D 65 29 29 20 41 4E 44 20 28 69 3C (FName)) AND (i<
000100: 3D 48 49 47 48 28 54 65 78 74 29 29 20 41 4E 44 =HIGH(Text)) AND
000110: 20 28 54 65 78 74 5B 69 5D 3C 3E 30 63 29 20 44 (Text[i]<>0c) D
000120: 4F 0D 0A 09 09 46 4E 61 6D 65 5B 6A 5D 3A 3D 43 O....FName[j]:=C
000130: 41 50 28 54 65 78 74 5B 69 5D 29 3B 0D 0A 09 09 AP(Text[i]);....
000140: 49 4E 43 28 6A 29 3B 0D 0A 09 09 49 4E 43 28 69 INC(j);....INC(i
000150: 29 0D 0A 09 09 45 4E 44 3B 0D 0A 09 57 48 49 4C )....END;...WHIL
000160: 45 20 6A 3C 3D 48 49 47 48 28 46 4E 61 6D 65 29 E j<=HIGH(FName)
000170: 20 44 4F 0D 0A 09 09 46 4E 61 6D 65 5B 6A 5D 3A DO....FName[j]:
000180: 3D 27 20 27 3B 0D 0A 09 09 49 4E 43 28 6A 29 0D =' ';....INC(j).
000190: 0A 09 09 45 4E 44 0D 0A 09 45 4E 44 20 52 65 61 ...END...END Rea
0001A0: 64 43 6F 6D 6D 61 6E 64 3B 20 20 0D 0A 50 52 4F dCommand; ..PRO
0001B0: 43 45 44 55 52 45 20 41 64 64 45 6E 74 72 79 28 CEDURE AddEntry(
0001C0: 4E 61 6D 65 3A 66 63 62 3B 50 6F 73 69 74 69 6F Name:fcb;Positio
0001D0: 6E 2C 53 69 7A 65 2C 45 44 61 74 65 2C 45 54 69 n,Size,EDate,ETi
0001E0: 6D 65 3A 43 41 52 44 49 4E 41 4C 3B 53 63 3A 42 me:CARDINAL;Sc:B
0001F0: 4F 4F 4C 45 41 4E 29 3B 0D 0A 56 41 52 09 69 2C OOLEAN);..VAR.i,
Size : 512 (Real : 512)
000000: 3B 0D 0A 09 09 45 6E 74 65 72 49 64 28 69 64 29 ;....EnterId(id)
000010: 3B 0D 0A 09 09 49 4E 43 28 43 6F 64 65 29 3B 0D ;....INC(Code);.
000020: 0A 09 09 69 3A 3D 69 2B 4C 65 6E 3B 0D 0A 09 09 ...i:=i+Len;....
000030: 45 4E 44 3B 0D 0A 09 45 4E 44 20 45 6E 74 65 72 END;...END Enter
000040: 47 49 64 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 GId;..PROCEDURE
000050: 53 65 74 55 70 4E 61 6D 65 73 3B 0D 0A 56 41 52 SetUpNames;..VAR
000060: 09 73 3A 49 64 65 6E 74 3B 0D 0A 50 52 4F 43 45 .s:Ident;..PROCE
000070: 44 55 52 45 20 50 75 74 49 64 3B 0D 0A 42 45 47 DURE PutId;..BEG
000080: 49 4E 0D 0A 09 73 5B 69 5D 3A 3D 30 78 3B 0D 0A IN...s[i]:=0x;..
000090: 09 45 6E 74 65 72 49 64 28 73 29 3B 0D 0A 09 49 .EnterId(s);...I
0000A0: 4E 43 28 43 6F 64 65 29 3B 0D 0A 09 45 4E 44 20 NC(Code);...END
0000B0: 50 75 74 49 64 3B 0D 0A 42 45 47 49 4E 0D 0A 09 PutId;..BEGIN...
0000C0: 43 6F 64 65 3A 3D 31 32 38 3B 0D 0A 09 45 6E 74 Code:=128;...Ent
0000D0: 65 72 47 49 64 28 32 2C 27 42 59 44 4F 49 46 49 erGId(2,'BYDOIFI
0000E0: 4E 4F 46 4F 52 54 4F 27 29 3B 0D 0A 09 45 6E 74 NOFORTO');...Ent
0000F0: 65 72 47 49 64 28 33 2C 27 41 4E 44 44 49 56 45 erGId(3,'ANDDIVE
000100: 4E 44 46 4F 52 4D 4F 44 4E 4F 54 53 45 54 56 41 NDFORMODNOTSETVA
000110: 52 41 44 52 27 29 3B 0D 0A 09 45 6E 74 65 72 47 RADR');...EnterG
000120: 49 64 28 34 2C 27 43 41 53 45 45 4C 53 45 45 58 Id(4,'CASEELSEEX
000130: 49 54 46 52 4F 4D 4C 4F 4F 50 54 48 45 4E 54 59 ITFROMLOOPTHENTY
000140: 50 45 57 49 54 48 48 49 47 48 43 48 41 52 54 52 PEWITHHIGHCHARTR
000150: 55 45 27 29 3B 0D 0A 09 45 6E 74 65 72 47 49 64 UE');...EnterGId
000160: 28 35 2C 27 41 52 52 41 59 42 45 47 49 4E 43 4F (5,'ARRAYBEGINCO
000170: 4E 53 54 45 4C 53 49 46 55 4E 54 49 4C 57 48 49 NSTELSIFUNTILWHI
000180: 4C 45 46 41 4C 53 45 27 29 3B 0D 0A 09 45 6E 74 LEFALSE');...Ent
000190: 65 72 47 49 64 28 36 2C 27 45 58 50 4F 52 54 49 erGId(6,'EXPORTI
0001A0: 4D 50 4F 52 54 4D 4F 44 55 4C 45 52 45 43 4F 52 MPORTMODULERECOR
0001B0: 44 52 45 50 45 41 54 52 45 54 55 52 4E 27 29 3B DREPEATRETURN');
0001C0: 0D 0A 09 45 6E 74 65 72 47 49 64 28 37 2C 27 50 ...EnterGId(7,'P
0001D0: 4F 49 4E 54 45 52 57 72 69 74 65 4C 6E 49 4E 54 OINTERWriteLnINT
0001E0: 45 47 45 52 41 44 44 52 45 53 53 42 4F 4F 4C 45 EGERADDRESSBOOLE
0001F0: 41 4E 27 29 3B 0D 0A 09 45 6E 74 65 72 47 49 64 AN');...EnterGId
Size : 512 (Real : 512)
000000: 6A 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 42 45 47 j:CARDINAL;..BEG
000010: 49 4E 0D 0A 09 69 3A 3D 32 3B 0D 0A 09 57 48 49 IN...i:=2;...WHI
000020: 4C 45 20 28 69 3C 3D 53 6C 6F 74 73 29 20 41 4E LE (i<=Slots) AN
000030: 44 20 28 44 69 72 65 63 74 6F 72 79 5B 69 5D 2E D (Directory[i].
000040: 53 74 61 74 75 73 3C 3E 30 66 66 68 29 20 44 4F Status<>0ffh) DO
000050: 20 49 4E 43 28 69 29 20 45 4E 44 3B 0D 0A 09 49 INC(i) END;...I
000060: 46 20 69 3E 53 6C 6F 74 73 20 54 48 45 4E 0D 0A F i>Slots THEN..
000070: 09 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 ..WriteString('
000080: 44 69 72 65 63 74 6F 72 79 20 66 75 6C 6C 20 2D Directory full -
000090: 20 72 65 64 6F 20 77 69 74 68 20 6D 6F 72 65 20 redo with more
0000A0: 73 6C 6F 74 73 27 29 3B 0D 0A 09 09 57 72 69 74 slots');....Writ
0000B0: 65 4C 6E 3B 0D 0A 09 09 48 41 4C 54 3B 0D 0A 09 eLn;....HALT;...
0000C0: 09 45 4E 44 3B 0D 0A 09 57 49 54 48 20 44 69 72 .END;...WITH Dir
0000D0: 65 63 74 6F 72 79 5B 69 5D 20 44 4F 0D 0A 09 09 ectory[i] DO....
0000E0: 53 74 61 74 75 73 3A 3D 30 3B 0D 0A 09 09 42 61 Status:=0;....Ba
0000F0: 73 65 4E 61 6D 65 3A 3D 4E 61 6D 65 2E 66 63 62 seName:=Name.fcb
000100: 66 6E 3B 0D 0A 09 09 45 78 74 3A 3D 4E 61 6D 65 fn;....Ext:=Name
000110: 2E 66 63 62 66 74 3B 0D 0A 09 09 53 74 61 72 74 .fcbft;....Start
000120: 53 65 63 74 6F 72 3A 3D 50 6F 73 69 74 69 6F 6E Sector:=Position
000130: 3B 0D 0A 09 09 4C 65 6E 67 74 68 3A 3D 53 69 7A ;....Length:=Siz
000140: 65 3B 0D 0A 09 09 44 61 74 65 3A 3D 45 44 61 74 e;....Date:=EDat
000150: 65 3B 0D 0A 09 09 54 69 6D 65 3A 3D 45 54 69 6D e;....Time:=ETim
000160: 65 3B 0D 0A 09 09 53 63 72 75 6E 63 68 65 64 3A e;....Scrunched:
000170: 3D 53 63 3B 0D 0A 09 09 46 4F 52 20 6A 3A 3D 31 =Sc;....FOR j:=1
000180: 20 54 4F 20 48 49 47 48 28 46 69 6C 6C 65 72 29 TO HIGH(Filler)
000190: 20 44 4F 20 46 69 6C 6C 65 72 5B 6A 5D 3A 3D 30 DO Filler[j]:=0
0001A0: 20 45 4E 44 3B 0D 0A 09 09 45 4E 44 0D 0A 09 45 END;....END...E
0001B0: 4E 44 20 41 64 64 45 6E 74 72 79 3B 0D 0A 50 52 ND AddEntry;..PR
0001C0: 4F 43 45 44 55 52 45 20 46 69 6E 64 4E 61 6D 65 OCEDURE FindName
0001D0: 28 66 3A 66 63 62 29 3A 43 41 52 44 49 4E 41 4C (f:fcb):CARDINAL
0001E0: 3B 0D 0A 28 2A 09 66 69 6E 64 20 61 20 6E 61 6D ;..(*.find a nam
0001F0: 65 20 2D 20 72 65 74 75 72 6E 20 30 20 69 66 20 e - return 0 if
Size : 512 (Real : 512)
000000: 28 38 2C 27 43 41 52 44 49 4E 41 4C 54 65 72 6D (8,'CARDINALTerm
000010: 69 6E 61 6C 27 29 3B 0D 0A 09 45 6E 74 65 72 47 inal');...EnterG
000020: 49 64 28 39 2C 27 50 52 4F 43 45 44 55 52 45 51 Id(9,'PROCEDUREQ
000030: 55 41 4C 49 46 49 45 44 43 6F 70 79 72 69 67 68 UALIFIEDCopyrigh
000040: 74 27 29 3B 0D 0A 09 45 6E 74 65 72 49 64 28 27 t');...EnterId('
000050: 44 45 46 49 4E 49 54 49 4F 4E 27 29 3B 49 4E 43 DEFINITION');INC
000060: 28 43 6F 64 65 29 3B 0D 0A 09 45 6E 74 65 72 49 (Code);...EnterI
000070: 64 28 27 57 72 69 74 65 53 74 72 69 6E 67 27 29 d('WriteString')
000080: 3B 49 4E 43 28 43 6F 64 65 29 3B 0D 0A 09 28 2A ;INC(Code);...(*
000090: 09 45 6E 74 65 72 20 74 61 62 20 63 6F 64 65 73 .Enter tab codes
0000A0: 2A 29 0D 0A 09 46 4F 52 20 69 3A 3D 31 20 54 4F *)...FOR i:=1 TO
0000B0: 20 36 20 44 4F 0D 0A 09 09 73 5B 69 2D 31 5D 3A 6 DO....s[i-1]:
0000C0: 3D 30 39 78 3B 0D 0A 09 09 50 75 74 49 64 3B 0D =09x;....PutId;.
0000D0: 0A 09 09 45 4E 44 3B 0D 0A 09 28 2A 09 65 6E 74 ...END;...(*.ent
0000E0: 65 72 20 73 70 61 63 65 20 73 65 71 75 65 6E 63 er space sequenc
0000F0: 65 73 2A 29 0D 0A 09 73 5B 30 5D 3A 3D 27 20 27 es*)...s[0]:=' '
000100: 3B 0D 0A 09 46 4F 52 20 69 3A 3D 32 20 54 4F 20 ;...FOR i:=2 TO
000110: 36 20 44 4F 0D 0A 09 09 73 5B 69 2D 31 5D 3A 3D 6 DO....s[i-1]:=
000120: 27 20 27 3B 0D 0A 09 09 50 75 74 49 64 3B 0D 0A ' ';....PutId;..
000130: 09 09 45 4E 44 3B 0D 0A 09 28 2A 09 45 6E 74 65 ..END;...(*.Ente
000140: 72 20 43 52 2F 4C 46 20 63 6F 64 65 2A 29 0D 0A r CR/LF code*)..
000150: 09 73 5B 30 5D 3A 3D 30 64 78 3B 0D 0A 09 73 5B .s[0]:=0dx;...s[
000160: 31 5D 3A 3D 30 61 78 3B 0D 0A 09 69 3A 3D 32 3B 1]:=0ax;...i:=2;
000170: 0D 0A 09 50 75 74 49 64 3B 0D 0A 09 46 4F 52 20 ...PutId;...FOR
000180: 69 3A 3D 33 20 54 4F 20 36 20 44 4F 0D 0A 09 09 i:=3 TO 6 DO....
000190: 73 5B 69 2D 31 5D 3A 3D 30 39 78 3B 0D 0A 09 09 s[i-1]:=09x;....
0001A0: 50 75 74 49 64 3B 0D 0A 09 09 45 4E 44 3B 0D 0A PutId;....END;..
0001B0: 0D 0A 09 45 4E 44 20 53 65 74 55 70 4E 61 6D 65 ...END SetUpName
0001C0: 73 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 47 65 s;..PROCEDURE Ge
0001D0: 74 43 68 61 72 3B 0D 0A 56 41 52 09 72 65 70 6C tChar;..VAR.repl
0001E0: 79 3A 49 4E 54 45 47 45 52 3B 0D 0A 42 45 47 49 y:INTEGER;..BEGI
0001F0: 4E 0D 0A 09 49 46 20 49 6E 50 6F 73 3E 48 49 47 N...IF InPos>HIG
Size : 512 (Real : 512)
000000: 6E 6F 74 20 66 6F 75 6E 64 20 2A 29 0D 0A 56 41 not found *)..VA
000010: 52 09 69 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 42 R.i:CARDINAL;..B
000020: 45 47 49 4E 0D 0A 09 69 3A 3D 32 3B 0D 0A 09 4C EGIN...i:=2;...L
000030: 4F 4F 50 0D 0A 09 09 49 46 20 69 3E 53 6C 6F 74 OOP....IF i>Slot
000040: 73 20 54 48 45 4E 20 52 45 54 55 52 4E 20 30 20 s THEN RETURN 0
000050: 45 4E 44 3B 0D 0A 09 09 57 49 54 48 20 44 69 72 END;....WITH Dir
000060: 65 63 74 6F 72 79 5B 69 5D 20 44 4F 0D 0A 09 09 ectory[i] DO....
000070: 09 49 46 20 28 53 74 61 74 75 73 3D 30 29 20 41 .IF (Status=0) A
000080: 4E 44 20 28 42 61 73 65 4E 61 6D 65 3D 66 2E 66 ND (BaseName=f.f
000090: 63 62 66 6E 29 20 41 4E 44 20 28 45 78 74 3D 66 cbfn) AND (Ext=f
0000A0: 2E 66 63 62 66 74 29 20 54 48 45 4E 0D 0A 09 09 .fcbft) THEN....
0000B0: 09 09 52 45 54 55 52 4E 20 69 0D 0A 09 09 09 09 ..RETURN i......
0000C0: 45 4E 44 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 END;.....END;...
0000D0: 09 49 4E 43 28 69 29 3B 0D 0A 09 09 45 4E 44 3B .INC(i);....END;
0000E0: 0D 0A 09 45 4E 44 20 46 69 6E 64 4E 61 6D 65 3B ...END FindName;
0000F0: 0D 0A 50 52 4F 43 45 44 55 52 45 20 54 72 61 6E ..PROCEDURE Tran
000100: 73 66 65 72 28 56 41 52 20 46 72 6F 6D 2C 54 6F sfer(VAR From,To
000110: 3A 46 49 4C 45 3B 4D 61 78 53 65 63 74 6F 72 73 :FILE;MaxSectors
000120: 3A 43 41 52 44 49 4E 41 4C 29 3A 43 41 52 44 49 :CARDINAL):CARDI
000130: 4E 41 4C 3B 0D 0A 56 41 52 09 69 2C 6A 3A 43 41 NAL;..VAR.i,j:CA
000140: 52 44 49 4E 41 4C 3B 0D 0A 09 72 65 70 6C 79 3A RDINAL;...reply:
000150: 49 4E 54 45 47 45 52 3B 0D 0A 09 42 75 66 66 65 INTEGER;...Buffe
000160: 72 3A 41 52 52 41 59 5B 30 2E 2E 31 30 32 33 5D r:ARRAY[0..1023]
000170: 20 4F 46 20 42 59 54 45 3B 0D 0A 42 45 47 49 4E OF BYTE;..BEGIN
000180: 0D 0A 09 6A 3A 3D 30 3B 0D 0A 09 4C 4F 4F 50 0D ...j:=0;...LOOP.
000190: 0A 09 09 49 46 20 4D 61 78 53 65 63 74 6F 72 73 ...IF MaxSectors
0001A0: 3E 38 20 54 48 45 4E 20 69 3A 3D 38 2A 31 32 38 >8 THEN i:=8*128
0001B0: 20 45 4C 53 45 20 69 3A 3D 4D 61 78 53 65 63 74 ELSE i:=MaxSect
0001C0: 6F 72 73 2A 31 32 38 20 45 4E 44 3B 0D 0A 09 09 ors*128 END;....
0001D0: 53 65 71 52 65 61 64 42 6C 6F 63 6B 28 46 72 6F SeqReadBlock(Fro
0001E0: 6D 2C 41 44 52 28 42 75 66 66 65 72 29 2C 69 2C m,ADR(Buffer),i,
0001F0: 72 65 70 6C 79 29 3B 0D 0A 09 09 49 46 20 72 65 reply);....IF re
Size : 512 (Real : 512)
000000: 69 6C 65 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 ile;..PROCEDURE
000010: 45 78 74 72 61 63 74 46 69 6C 65 28 66 6E 3A 41 ExtractFile(fn:A
000020: 52 52 41 59 20 4F 46 20 43 48 41 52 29 3B 0D 0A RRAY OF CHAR);..
000030: 56 41 52 09 66 3A 66 63 62 3B 0D 0A 09 69 3A 43 VAR.f:fcb;...i:C
000040: 41 52 44 49 4E 41 4C 3B 0D 0A 09 66 6F 3A 46 49 ARDINAL;...fo:FI
000050: 4C 45 3B 0D 0A 42 45 47 49 4E 0D 0A 09 43 6F 6E LE;..BEGIN...Con
000060: 76 65 72 74 46 69 6C 65 4E 61 6D 65 28 66 2C 46 vertFileName(f,F
000070: 69 6C 65 4E 61 6D 65 28 66 6E 29 29 3B 0D 0A 09 ileName(fn));...
000080: 69 3A 3D 46 69 6E 64 4E 61 6D 65 28 66 29 3B 0D i:=FindName(f);.
000090: 0A 09 49 46 20 69 3D 30 20 54 48 45 4E 20 0D 0A ..IF i=0 THEN ..
0000A0: 09 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 ..WriteString('
0000B0: 43 6F 75 6C 64 20 6E 6F 74 20 66 69 6E 64 20 3A Could not find :
0000C0: 27 29 3B 0D 0A 09 09 57 72 69 74 65 53 74 72 69 ');....WriteStri
0000D0: 6E 67 28 66 6E 29 3B 0D 0A 09 09 57 72 69 74 65 ng(fn);....Write
0000E0: 4C 6E 0D 0A 09 45 4C 53 45 0D 0A 09 09 57 72 69 Ln...ELSE....Wri
0000F0: 74 65 53 74 72 69 6E 67 28 27 45 78 74 72 61 63 teString('Extrac
000100: 74 69 6E 67 20 27 29 3B 0D 0A 09 09 57 72 69 74 ting ');....Writ
000110: 65 53 74 72 69 6E 67 28 66 6E 29 3B 0D 0A 09 09 eString(fn);....
000120: 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 43 72 65 61 WriteLn;....Crea
000130: 74 65 28 66 6F 2C 46 69 6C 65 4E 61 6D 65 28 66 te(fo,FileName(f
000140: 6E 29 2C 72 65 70 6C 79 29 3B 0D 0A 09 09 49 46 n),reply);....IF
000150: 20 72 65 70 6C 79 3C 3E 30 20 54 48 45 4E 0D 0A reply<>0 THEN..
000160: 09 09 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 ...WriteString('
000170: 20 43 6F 75 6C 64 20 6E 6F 74 20 63 72 65 61 74 Could not creat
000180: 65 20 27 29 3B 0D 0A 09 09 09 57 72 69 74 65 53 e ');.....WriteS
000190: 74 72 69 6E 67 28 66 6E 29 3B 0D 0A 09 09 09 57 tring(fn);.....W
0001A0: 72 69 74 65 4C 6E 3B 0D 0A 09 09 09 52 45 54 55 riteLn;.....RETU
0001B0: 52 4E 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 57 RN.....END;....W
0001C0: 49 54 48 20 44 69 72 65 63 74 6F 72 79 5B 69 5D ITH Directory[i]
0001D0: 20 44 4F 0D 0A 09 09 09 53 65 74 42 6C 6F 63 6B DO.....SetBlock
0001E0: 28 4C 69 62 2C 53 74 61 72 74 53 65 63 74 6F 72 (Lib,StartSector
0001F0: 29 3B 0D 0A 09 09 09 49 46 20 53 63 72 75 6E 63 );.....IF Scrunc
Size : 512 (Real : 512)
000000: 53 45 0D 0A 09 09 09 09 57 72 69 74 65 4C 6E 3B SE......WriteLn;
000010: 0D 0A 09 09 09 09 57 72 69 74 65 53 74 72 69 6E ......WriteStrin
000020: 67 28 27 20 50 6C 65 61 73 65 20 65 6E 74 65 72 g(' Please enter
000030: 20 59 65 73 20 6F 72 20 4E 6F 3A 27 29 3B 0D 0A Yes or No:');..
000040: 09 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B ....END;....END;
000050: 0D 0A 09 45 4E 44 20 59 65 73 3B 0D 0A 50 52 4F ...END Yes;..PRO
000060: 43 45 44 55 52 45 20 47 65 74 53 6C 6F 74 43 6F CEDURE GetSlotCo
000070: 75 6E 74 3B 0D 0A 42 45 47 49 4E 0D 0A 09 57 72 unt;..BEGIN...Wr
000080: 69 74 65 53 74 72 69 6E 67 28 27 20 48 6F 77 20 iteString(' How
000090: 6D 61 6E 79 20 73 6C 6F 74 73 20 3F 27 29 3B 0D many slots ?');.
0000A0: 0A 09 52 65 61 64 43 61 72 64 28 53 6C 6F 74 73 ..ReadCard(Slots
0000B0: 29 3B 0D 0A 09 49 46 20 53 6C 6F 74 73 3E 48 49 );...IF Slots>HI
0000C0: 47 48 28 44 69 72 65 63 74 6F 72 79 29 20 54 48 GH(Directory) TH
0000D0: 45 4E 0D 0A 09 09 57 72 69 74 65 43 61 72 64 28 EN....WriteCard(
0000E0: 48 49 47 48 28 44 69 72 65 63 74 6F 72 79 29 2C HIGH(Directory),
0000F0: 34 29 3B 0D 0A 09 09 57 72 69 74 65 53 74 72 69 4);....WriteStri
000100: 6E 67 28 27 20 69 73 20 6D 61 78 69 6D 75 6D 20 ng(' is maximum
000110: 73 6C 6F 74 73 20 61 6C 6C 6F 77 65 64 20 62 79 slots allowed by
000120: 20 74 68 69 73 20 70 72 6F 67 72 61 6D 27 29 3B this program');
000130: 0D 0A 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 ....WriteLn;....
000140: 53 6C 6F 74 73 3A 3D 48 49 47 48 28 44 69 72 65 Slots:=HIGH(Dire
000150: 63 74 6F 72 79 29 3B 0D 0A 09 09 45 4E 44 3B 0D ctory);....END;.
000160: 0A 09 53 6C 6F 74 73 3A 3D 34 2A 28 28 53 6C 6F ..Slots:=4*((Slo
000170: 74 73 2B 33 29 20 44 49 56 20 34 29 3B 0D 0A 09 ts+3) DIV 4);...
000180: 49 46 20 53 6C 6F 74 73 3D 30 20 54 48 45 4E 20 IF Slots=0 THEN
000190: 48 41 4C 54 20 45 4E 44 3B 0D 0A 09 57 72 69 74 HALT END;...Writ
0001A0: 65 43 61 72 64 28 53 6C 6F 74 73 2C 34 29 3B 0D eCard(Slots,4);.
0001B0: 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 ..WriteString('
0001C0: 53 6C 6F 74 73 20 61 6C 6C 6F 63 61 74 65 64 27 Slots allocated'
0001D0: 29 3B 0D 0A 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 );...WriteLn;...
0001E0: 46 4F 52 20 69 3A 3D 31 20 54 4F 20 53 6C 6F 74 FOR i:=1 TO Slot
0001F0: 73 20 44 4F 20 0D 0A 09 09 57 49 54 48 20 44 69 s DO ....WITH Di
Size : 512 (Real : 512)
000000: 69 2C 72 65 70 6C 79 29 3B 0D 0A 09 4F 75 74 50 i,reply);...OutP
000010: 6F 73 3A 3D 30 3B 0D 0A 09 45 4E 44 20 46 6C 75 os:=0;...END Flu
000020: 73 68 4F 75 74 3B 0D 0A 50 52 4F 43 45 44 55 52 shOut;..PROCEDUR
000030: 45 20 50 75 74 43 68 61 72 28 63 68 3A 43 48 41 E PutChar(ch:CHA
000040: 52 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20 R);..BEGIN...IF
000050: 4F 75 74 50 6F 73 3E 48 49 47 48 28 42 75 66 66 OutPos>HIGH(Buff
000060: 65 72 49 6E 29 20 54 48 45 4E 20 46 6C 75 73 68 erIn) THEN Flush
000070: 4F 75 74 20 45 4E 44 3B 0D 0A 09 42 75 66 66 65 Out END;...Buffe
000080: 72 4F 75 74 5B 4F 75 74 50 6F 73 5D 3A 3D 63 68 rOut[OutPos]:=ch
000090: 3B 0D 0A 09 49 4E 43 28 4F 75 74 50 6F 73 29 3B ;...INC(OutPos);
0000A0: 0D 0A 09 45 4E 44 20 50 75 74 43 68 61 72 3B 0D ...END PutChar;.
0000B0: 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 47 65 74 ...PROCEDURE Get
0000C0: 43 6F 64 65 3B 0D 0A 42 45 47 49 4E 0D 0A 09 43 Code;..BEGIN...C
0000D0: 6F 64 65 3A 3D 30 3B 0D 0A 09 49 46 20 63 68 3C ode:=0;...IF ch<
0000E0: 27 20 27 20 54 48 45 4E 0D 0A 09 09 43 6F 64 65 ' ' THEN....Code
0000F0: 3A 3D 4F 52 44 28 63 68 29 2A 32 35 36 3B 0D 0A :=ORD(ch)*256;..
000100: 09 09 47 65 74 43 68 61 72 3B 0D 0A 09 09 45 4E ..GetChar;....EN
000110: 44 3B 0D 0A 09 43 6F 64 65 3A 3D 43 6F 64 65 2B D;...Code:=Code+
000120: 4F 52 44 28 63 68 29 3B 0D 0A 09 45 4E 44 20 47 ORD(ch);...END G
000130: 65 74 43 6F 64 65 3B 0D 0A 50 52 4F 43 45 44 55 etCode;..PROCEDU
000140: 52 45 20 50 75 74 49 64 3B 0D 0A 56 41 52 09 69 RE PutId;..VAR.i
000150: 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 70 3A 50 :CARDINAL;...p:P
000160: 4E 61 6D 65 3B 0D 0A 42 45 47 49 4E 0D 0A 09 47 Name;..BEGIN...G
000170: 65 74 43 6F 64 65 3B 0D 0A 09 70 3A 3D 54 61 62 etCode;...p:=Tab
000180: 6C 65 3B 0D 0A 09 57 48 49 4C 45 20 28 70 3C 3E le;...WHILE (p<>
000190: 4E 49 4C 29 20 41 4E 44 20 28 70 5E 2E 43 6F 64 NIL) AND (p^.Cod
0001A0: 65 3C 3E 43 6F 64 65 29 20 44 4F 20 0D 0A 09 09 e<>Code) DO ....
0001B0: 70 3A 3D 70 5E 2E 4E 65 78 74 20 0D 0A 09 09 45 p:=p^.Next ....E
0001C0: 4E 44 3B 0D 0A 09 49 46 20 70 3D 4E 49 4C 20 54 ND;...IF p=NIL T
0001D0: 48 45 4E 20 0D 0A 09 09 57 72 69 74 65 53 74 72 HEN ....WriteStr
0001E0: 69 6E 67 28 27 20 65 72 72 6F 72 20 69 6E 20 50 ing(' error in P
0001F0: 75 74 49 64 27 29 3B 0D 0A 09 09 57 72 69 74 65 utId');....Write
Size : 512 (Real : 512)
000000: 72 65 63 74 6F 72 79 5B 69 5D 20 44 4F 0D 0A 09 rectory[i] DO...
000010: 09 09 53 74 61 74 75 73 3A 3D 30 66 66 68 3B 0D ..Status:=0ffh;.
000020: 0A 09 09 09 42 61 73 65 4E 61 6D 65 3A 3D 27 20 ....BaseName:='
000030: 20 20 20 20 20 20 20 27 3B 0D 0A 09 09 09 45 78 ';.....Ex
000040: 74 3A 3D 27 20 20 20 27 3B 0D 0A 09 09 09 45 4E t:=' ';.....EN
000050: 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 57 49 54 D;....END;...WIT
000060: 48 20 44 69 72 65 63 74 6F 72 79 5B 31 5D 20 44 H Directory[1] D
000070: 4F 0D 0A 09 09 53 74 61 74 75 73 3A 3D 30 3B 0D O....Status:=0;.
000080: 0A 09 09 4C 65 6E 67 74 68 3A 3D 53 6C 6F 74 73 ...Length:=Slots
000090: 20 44 49 56 20 34 3B 0D 0A 09 09 53 74 61 72 74 DIV 4;....Start
0000A0: 53 65 63 74 6F 72 3A 3D 30 3B 0D 0A 09 09 45 4E Sector:=0;....EN
0000B0: 44 3B 0D 0A 09 4E 65 78 74 53 65 63 74 6F 72 3A D;...NextSector:
0000C0: 3D 53 6C 6F 74 73 20 44 49 56 20 34 3B 0D 0A 09 =Slots DIV 4;...
0000D0: 45 4E 44 20 47 65 74 53 6C 6F 74 43 6F 75 6E 74 END GetSlotCount
0000E0: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 4F 70 65 ;..PROCEDURE Ope
0000F0: 6E 4C 69 62 72 61 72 79 3B 0D 0A 28 2A 09 6F 70 nLibrary;..(*.op
000100: 65 6E 20 74 68 65 20 6C 69 62 72 61 72 79 20 66 en the library f
000110: 69 6C 65 20 2A 29 0D 0A 42 45 47 49 4E 0D 0A 09 ile *)..BEGIN...
000120: 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 45 6E WriteString(' En
000130: 74 65 72 20 6E 61 6D 65 20 6F 66 20 6C 69 62 72 ter name of libr
000140: 61 72 79 20 66 69 6C 65 3A 27 29 3B 0D 0A 09 52 ary file:');...R
000150: 65 61 64 53 74 72 69 6E 67 28 4C 69 62 4E 61 6D eadString(LibNam
000160: 65 29 3B 0D 0A 09 4C 6F 6F 6B 75 70 28 4C 69 62 e);...Lookup(Lib
000170: 2C 4C 69 62 4E 61 6D 65 2C 72 65 70 6C 79 29 3B ,LibName,reply);
000180: 0D 0A 09 49 46 20 72 65 70 6C 79 3C 3E 30 20 54 ...IF reply<>0 T
000190: 48 45 4E 0D 0A 09 09 57 72 69 74 65 53 74 72 69 HEN....WriteStri
0001A0: 6E 67 28 27 20 43 6F 75 6C 64 20 6E 6F 74 20 66 ng(' Could not f
0001B0: 69 6E 64 20 74 68 61 74 20 66 69 6C 65 20 2D 20 ind that file -
0001C0: 63 72 65 61 74 65 20 69 74 20 3F 27 29 3B 0D 0A create it ?');..
0001D0: 09 09 49 46 20 59 65 73 28 29 20 54 48 45 4E 0D ..IF Yes() THEN.
0001E0: 0A 09 09 09 43 72 65 61 74 65 28 4C 69 62 2C 4C ....Create(Lib,L
0001F0: 69 62 4E 61 6D 65 2C 72 65 70 6C 79 29 3B 0D 0A ibName,reply);..
Size : 512 (Real : 512)
000000: 43 61 72 64 28 43 6F 64 65 2C 34 29 3B 0D 0A 09 Card(Code,4);...
000010: 09 57 72 69 74 65 53 74 72 69 6E 67 28 54 61 62 .WriteString(Tab
000020: 6C 65 5E 2E 54 65 78 74 29 3B 0D 0A 09 09 57 72 le^.Text);....Wr
000030: 69 74 65 4C 6E 3B 0D 0A 09 09 52 45 54 55 52 4E iteLn;....RETURN
000040: 0D 0A 09 09 45 4E 44 3B 0D 0A 09 69 3A 3D 30 3B ....END;...i:=0;
000050: 0D 0A 09 57 49 54 48 20 70 5E 20 44 4F 0D 0A 09 ...WITH p^ DO...
000060: 09 57 48 49 4C 45 20 54 65 78 74 5B 69 5D 3C 3E .WHILE Text[i]<>
000070: 30 78 20 44 4F 0D 0A 09 09 09 50 75 74 43 68 61 0x DO.....PutCha
000080: 72 28 54 65 78 74 5B 69 5D 29 3B 0D 0A 09 09 09 r(Text[i]);.....
000090: 49 4E 43 28 69 29 3B 0D 0A 09 09 09 45 4E 44 3B INC(i);.....END;
0000A0: 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 50 ....END;...END P
0000B0: 75 74 49 64 3B 0D 0A 50 52 4F 43 45 44 55 52 45 utId;..PROCEDURE
0000C0: 20 44 65 66 43 6F 64 65 3B 0D 0A 56 41 52 09 49 DefCode;..VAR.I
0000D0: 64 3A 49 64 65 6E 74 3B 0D 0A 09 69 3A 43 41 52 d:Ident;...i:CAR
0000E0: 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 4E 0D 0A 09 DINAL;..BEGIN...
0000F0: 47 65 74 43 68 61 72 3B 0D 0A 09 49 46 20 63 68 GetChar;...IF ch
000100: 3D 30 78 20 54 48 45 4E 20 45 6F 66 3A 3D 54 52 =0x THEN Eof:=TR
000110: 55 45 3B 52 45 54 55 52 4E 20 45 4E 44 3B 0D 0A UE;RETURN END;..
000120: 09 69 3A 3D 30 3B 0D 0A 09 57 48 49 4C 45 20 63 .i:=0;...WHILE c
000130: 68 3C 3E 30 78 20 44 4F 0D 0A 09 09 49 64 5B 69 h<>0x DO....Id[i
000140: 5D 3A 3D 63 68 3B 0D 0A 09 09 50 75 74 43 68 61 ]:=ch;....PutCha
000150: 72 28 63 68 29 3B 0D 0A 09 09 47 65 74 43 68 61 r(ch);....GetCha
000160: 72 3B 0D 0A 09 09 49 4E 43 28 69 29 3B 0D 0A 09 r;....INC(i);...
000170: 09 45 4E 44 3B 0D 0A 09 49 64 5B 69 5D 3A 3D 30 .END;...Id[i]:=0
000180: 63 3B 0D 0A 09 47 65 74 43 68 61 72 3B 0D 0A 09 c;...GetChar;...
000190: 47 65 74 43 6F 64 65 3B 0D 0A 09 45 6E 74 65 72 GetCode;...Enter
0001A0: 49 64 28 49 64 29 3B 0D 0A 09 45 4E 44 20 44 65 Id(Id);...END De
0001B0: 66 43 6F 64 65 3B 0D 0A 09 09 0D 0A 42 45 47 49 fCode;......BEGI
0001C0: 4E 0D 0A 09 54 61 62 6C 65 3A 3D 4E 49 4C 3B 0D N...Table:=NIL;.
0001D0: 0A 09 53 65 74 55 70 4E 61 6D 65 73 3B 0D 0A 09 ..SetUpNames;...
0001E0: 6A 3A 3D 30 3B 0D 0A 09 49 6E 50 6F 73 3A 3D 48 j:=0;...InPos:=H
0001F0: 49 47 48 28 42 75 66 66 65 72 49 6E 29 2B 31 3B IGH(BufferIn)+1;
Size : 512 (Real : 512)
000000: 09 09 09 49 46 20 72 65 70 6C 79 3C 3E 30 20 54 ...IF reply<>0 T
000010: 48 45 4E 0D 0A 09 09 09 09 57 72 69 74 65 53 74 HEN......WriteSt
000020: 72 69 6E 67 28 27 20 63 6F 75 6C 64 20 6E 6F 74 ring(' could not
000030: 20 63 72 65 61 74 65 20 69 74 20 65 69 74 68 65 create it eithe
000040: 72 27 29 3B 0D 0A 09 09 09 09 57 72 69 74 65 4C r');......WriteL
000050: 6E 3B 0D 0A 09 09 09 09 48 41 4C 54 0D 0A 09 09 n;......HALT....
000060: 09 09 45 4E 44 3B 0D 0A 09 09 09 47 65 74 53 6C ..END;.....GetSl
000070: 6F 74 43 6F 75 6E 74 3B 0D 0A 09 09 45 4C 53 45 otCount;....ELSE
000080: 0D 0A 09 09 09 57 72 69 74 65 53 74 72 69 6E 67 .....WriteString
000090: 28 27 20 72 75 6E 20 63 61 6E 63 65 6C 6C 65 64 (' run cancelled
0000A0: 27 29 3B 0D 0A 09 09 09 57 72 69 74 65 4C 6E 3B ');.....WriteLn;
0000B0: 0D 0A 09 09 09 48 41 4C 54 3B 0D 0A 09 09 09 45 .....HALT;.....E
0000C0: 4E 44 3B 0D 0A 09 45 4C 53 45 0D 0A 09 09 52 65 ND;...ELSE....Re
0000D0: 61 64 42 6C 6F 63 6B 28 4C 69 62 2C 41 44 52 28 adBlock(Lib,ADR(
0000E0: 44 69 72 65 63 74 6F 72 79 29 2C 30 2C 53 49 5A Directory),0,SIZ
0000F0: 45 28 44 69 72 65 63 74 6F 72 79 29 2C 72 65 70 E(Directory),rep
000100: 6C 79 29 3B 0D 0A 09 09 53 6C 6F 74 73 3A 3D 34 ly);....Slots:=4
000110: 2A 44 69 72 65 63 74 6F 72 79 5B 31 5D 2E 4C 65 *Directory[1].Le
000120: 6E 67 74 68 3B 0D 0A 09 09 57 72 69 74 65 43 61 ngth;....WriteCa
000130: 72 64 28 53 6C 6F 74 73 2C 34 29 3B 57 72 69 74 rd(Slots,4);Writ
000140: 65 53 74 72 69 6E 67 28 27 20 73 6C 6F 74 73 20 eString(' slots
000150: 66 6F 75 6E 64 27 29 3B 57 72 69 74 65 4C 6E 3B found');WriteLn;
000160: 0D 0A 09 09 4E 65 78 74 53 65 63 74 6F 72 3A 3D ....NextSector:=
000170: 30 3B 0D 0A 09 09 46 4F 52 20 69 3A 3D 31 20 54 0;....FOR i:=1 T
000180: 4F 20 53 6C 6F 74 73 20 44 4F 0D 0A 09 09 09 57 O Slots DO.....W
000190: 49 54 48 20 44 69 72 65 63 74 6F 72 79 5B 69 5D ITH Directory[i]
0001A0: 20 44 4F 0D 0A 09 09 09 09 49 46 20 53 74 61 74 DO......IF Stat
0001B0: 75 73 3C 3E 30 66 66 68 20 54 48 45 4E 0D 0A 09 us<>0ffh THEN...
0001C0: 09 09 09 09 6A 3A 3D 4C 65 6E 67 74 68 2B 53 74 ....j:=Length+St
0001D0: 61 72 74 53 65 63 74 6F 72 3B 0D 0A 09 09 09 09 artSector;......
0001E0: 09 49 46 20 6A 3E 4E 65 78 74 53 65 63 74 6F 72 .IF j>NextSector
0001F0: 20 54 48 45 4E 20 4E 65 78 74 53 65 63 74 6F 72 THEN NextSector
Size : 512 (Real : 512)
000000: 0D 0A 09 4F 75 74 50 6F 73 3A 3D 30 3B 0D 0A 09 ...OutPos:=0;...
000010: 47 65 74 43 68 61 72 3B 0D 0A 09 45 6F 66 3A 3D GetChar;...Eof:=
000020: 46 41 4C 53 45 3B 0D 0A 09 4C 4F 4F 50 0D 0A 09 FALSE;...LOOP...
000030: 09 49 46 20 63 68 3D 30 78 20 54 48 45 4E 20 44 .IF ch=0x THEN D
000040: 65 66 43 6F 64 65 20 0D 0A 09 09 45 4C 53 49 46 efCode ....ELSIF
000050: 20 28 63 68 3E 30 37 66 78 29 20 4F 52 20 28 63 (ch>07fx) OR (c
000060: 68 3C 27 20 27 29 20 54 48 45 4E 20 50 75 74 49 h<' ') THEN PutI
000070: 64 0D 0A 09 09 45 4C 53 45 20 50 75 74 43 68 61 d....ELSE PutCha
000080: 72 28 63 68 29 20 45 4E 44 3B 0D 0A 09 09 47 65 r(ch) END;....Ge
000090: 74 43 68 61 72 3B 0D 0A 09 09 49 46 20 45 6F 66 tChar;....IF Eof
0000A0: 20 54 48 45 4E 20 45 58 49 54 20 45 4E 44 3B 0D THEN EXIT END;.
0000B0: 0A 09 09 45 4E 44 3B 0D 0A 09 46 6C 75 73 68 4F ...END;...FlushO
0000C0: 75 74 3B 0D 0A 09 45 4E 44 20 55 6E 53 63 72 75 ut;...END UnScru
0000D0: 6E 63 68 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 nch;..PROCEDURE
0000E0: 44 6F 41 64 64 69 74 69 6F 6E 28 56 41 52 20 66 DoAddition(VAR f
0000F0: 3A 46 49 4C 45 3B 53 63 3A 42 4F 4F 4C 45 41 4E :FILE;Sc:BOOLEAN
000100: 29 3B 0D 0A 56 41 52 09 69 2C 6A 3A 43 41 52 44 );..VAR.i,j:CARD
000110: 49 4E 41 4C 3B 0D 0A 42 45 47 49 4E 0D 0A 09 69 INAL;..BEGIN...i
000120: 3A 3D 46 69 6E 64 4E 61 6D 65 28 66 2E 66 29 3B :=FindName(f.f);
000130: 0D 0A 09 49 46 20 69 3C 3E 30 20 54 48 45 4E 20 ...IF i<>0 THEN
000140: 44 69 72 65 63 74 6F 72 79 5B 69 5D 2E 53 74 61 Directory[i].Sta
000150: 74 75 73 3A 3D 30 66 66 68 20 45 4E 44 3B 0D 0A tus:=0ffh END;..
000160: 09 53 65 74 42 6C 6F 63 6B 28 4C 69 62 2C 4E 65 .SetBlock(Lib,Ne
000170: 78 74 53 65 63 74 6F 72 29 3B 0D 0A 09 6A 3A 3D xtSector);...j:=
000180: 4E 65 78 74 53 65 63 74 6F 72 3B 0D 0A 09 4E 65 NextSector;...Ne
000190: 78 74 53 65 63 74 6F 72 3A 3D 4E 65 78 74 53 65 xtSector:=NextSe
0001A0: 63 74 6F 72 2B 54 72 61 6E 73 66 65 72 28 66 2C ctor+Transfer(f,
0001B0: 4C 69 62 2C 36 35 35 33 35 29 3B 0D 0A 09 43 6C Lib,65535);...Cl
0001C0: 6F 73 65 28 66 29 3B 20 0D 0A 09 41 64 64 45 6E ose(f); ...AddEn
0001D0: 74 72 79 28 66 2E 66 2C 6A 2C 4E 65 78 74 53 65 try(f.f,j,NextSe
0001E0: 63 74 6F 72 2D 6A 2C 30 2C 30 2C 53 63 29 3B 0D ctor-j,0,0,Sc);.
0001F0: 0A 09 45 4E 44 20 44 6F 41 64 64 69 74 69 6F 6E ..END DoAddition
Size : 512 (Real : 512)
000000: 3A 3D 6A 20 45 4E 44 3B 0D 0A 09 09 09 09 09 45 :=j END;.......E
000010: 4E 44 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 ND;......END;...
000020: 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A ..END;....END;..
000030: 09 45 4E 44 20 4F 70 65 6E 4C 69 62 72 61 72 79 .END OpenLibrary
000040: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 6C 6F ;..PROCEDURE Clo
000050: 73 65 4C 69 62 72 61 72 79 3B 0D 0A 42 45 47 49 seLibrary;..BEGI
000060: 4E 0D 0A 09 57 72 69 74 65 42 6C 6F 63 6B 28 4C N...WriteBlock(L
000070: 69 62 2C 41 44 52 28 44 69 72 65 63 74 6F 72 79 ib,ADR(Directory
000080: 29 2C 30 2C 31 32 38 2A 28 53 6C 6F 74 73 20 44 ),0,128*(Slots D
000090: 49 56 20 34 29 2C 72 65 70 6C 79 29 3B 0D 0A 09 IV 4),reply);...
0000A0: 43 6C 6F 73 65 28 4C 69 62 29 3B 0D 0A 09 45 4E Close(Lib);...EN
0000B0: 44 20 43 6C 6F 73 65 4C 69 62 72 61 72 79 3B 0D D CloseLibrary;.
0000C0: 0A 50 52 4F 43 45 44 55 52 45 20 44 65 6C 65 74 .PROCEDURE Delet
0000D0: 65 46 69 6C 65 28 66 6E 3A 41 52 52 41 59 20 4F eFile(fn:ARRAY O
0000E0: 46 20 43 48 41 52 29 3B 0D 0A 56 41 52 09 66 3A F CHAR);..VAR.f:
0000F0: 66 63 62 3B 0D 0A 09 69 3A 43 41 52 44 49 4E 41 fcb;...i:CARDINA
000100: 4C 3B 0D 0A 42 45 47 49 4E 0D 0A 09 43 6F 6E 76 L;..BEGIN...Conv
000110: 65 72 74 46 69 6C 65 4E 61 6D 65 28 66 2C 46 69 ertFileName(f,Fi
000120: 6C 65 4E 61 6D 65 28 66 6E 29 29 3B 0D 0A 09 69 leName(fn));...i
000130: 3A 3D 46 69 6E 64 4E 61 6D 65 28 66 29 3B 0D 0A :=FindName(f);..
000140: 09 49 46 20 69 3D 30 20 54 48 45 4E 20 0D 0A 09 .IF i=0 THEN ...
000150: 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 43 .WriteString(' C
000160: 6F 75 6C 64 20 6E 6F 74 20 66 69 6E 64 20 3A 27 ould not find :'
000170: 29 3B 0D 0A 09 09 57 72 69 74 65 53 74 72 69 6E );....WriteStrin
000180: 67 28 66 6E 29 3B 0D 0A 09 09 57 72 69 74 65 4C g(fn);....WriteL
000190: 6E 0D 0A 09 45 4C 53 45 0D 0A 09 09 57 72 69 74 n...ELSE....Writ
0001A0: 65 53 74 72 69 6E 67 28 66 6E 29 3B 0D 0A 09 09 eString(fn);....
0001B0: 57 72 69 74 65 53 74 72 69 6E 67 28 66 6E 29 3B WriteString(fn);
0001C0: 0D 0A 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 ....WriteLn;....
0001D0: 44 69 72 65 63 74 6F 72 79 5B 69 5D 2E 53 74 61 Directory[i].Sta
0001E0: 74 75 73 3A 3D 30 66 66 68 3B 0D 0A 09 09 45 4E tus:=0ffh;....EN
0001F0: 44 3B 0D 0A 09 45 4E 44 20 44 65 6C 65 74 65 46 D;...END DeleteF
Size : 512 (Real : 512)
000000: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 41 64 64 ;..PROCEDURE Add
000010: 46 69 6C 65 28 66 6E 3A 41 52 52 41 59 20 4F 46 File(fn:ARRAY OF
000020: 20 43 48 41 52 3B 53 63 3A 42 4F 4F 4C 45 41 4E CHAR;Sc:BOOLEAN
000030: 29 3B 0D 0A 28 2A 09 63 6F 70 79 20 61 20 66 69 );..(*.copy a fi
000040: 6C 65 20 69 6E 74 6F 20 74 68 65 20 63 75 72 72 le into the curr
000050: 65 6E 74 20 6C 69 62 72 61 72 79 2A 29 0D 0A 56 ent library*)..V
000060: 41 52 09 66 3A 46 49 4C 45 3B 0D 0A 09 69 2C 6A AR.f:FILE;...i,j
000070: 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 42 75 66 :CARDINAL;...Buf
000080: 66 65 72 3A 41 52 52 41 59 5B 30 2E 2E 31 30 32 fer:ARRAY[0..102
000090: 33 5D 20 4F 46 20 42 59 54 45 3B 0D 0A 42 45 47 3] OF BYTE;..BEG
0000A0: 49 4E 0D 0A 09 4C 6F 6F 6B 75 70 28 66 2C 46 69 IN...Lookup(f,Fi
0000B0: 6C 65 4E 61 6D 65 28 66 6E 29 2C 72 65 70 6C 79 leName(fn),reply
0000C0: 29 3B 0D 0A 09 49 46 20 72 65 70 6C 79 3C 3E 30 );...IF reply<>0
0000D0: 20 54 48 45 4E 0D 0A 09 09 57 72 69 74 65 53 74 THEN....WriteSt
0000E0: 72 69 6E 67 28 27 46 69 6C 65 20 3A 27 29 3B 0D ring('File :');.
0000F0: 0A 09 09 57 72 69 74 65 53 74 72 69 6E 67 28 66 ...WriteString(f
000100: 6E 29 3B 0D 0A 09 09 57 72 69 74 65 53 74 72 69 n);....WriteStri
000110: 6E 67 28 27 20 6E 6F 74 20 66 6F 75 6E 64 27 29 ng(' not found')
000120: 3B 0D 0A 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 ;....WriteLn;...
000130: 09 52 45 54 55 52 4E 3B 0D 0A 09 09 45 4E 44 3B .RETURN;....END;
000140: 0D 0A 09 44 6F 41 64 64 69 74 69 6F 6E 28 66 2C ...DoAddition(f,
000150: 53 63 29 3B 0D 0A 09 45 4E 44 20 41 64 64 46 69 Sc);...END AddFi
000160: 6C 65 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 59 le;..PROCEDURE Y
000170: 65 73 28 29 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 56 es():BOOLEAN;..V
000180: 41 52 09 73 3A 41 52 52 41 59 5B 31 2E 2E 33 5D AR.s:ARRAY[1..3]
000190: 20 4F 46 20 43 48 41 52 3B 0D 0A 42 45 47 49 4E OF CHAR;..BEGIN
0001A0: 0D 0A 09 4C 4F 4F 50 0D 0A 09 09 52 65 61 64 53 ...LOOP....ReadS
0001B0: 74 72 69 6E 67 28 73 29 3B 0D 0A 09 09 43 41 53 tring(s);....CAS
0001C0: 45 20 43 41 50 28 73 5B 31 5D 29 20 4F 46 0D 0A E CAP(s[1]) OF..
0001D0: 09 09 09 27 59 27 3A 52 45 54 55 52 4E 20 54 52 ...'Y':RETURN TR
0001E0: 55 45 7C 0D 0A 09 09 09 27 4E 27 3A 52 45 54 55 UE|.....'N':RETU
0001F0: 52 4E 20 46 41 4C 53 45 7C 0D 0A 09 09 09 45 4C RN FALSE|.....EL
Size : 512 (Real : 512)
000000: 66 2C 09 28 2A 20 41 20 63 68 61 72 61 63 74 65 f,.(* A characte
000010: 72 20 66 72 6F 6D 20 61 20 73 65 74 2A 29 0D 0A r from a set*)..
000020: 09 09 20 20 41 6C 74 65 72 6E 61 74 69 76 65 73 .. Alternatives
000030: 2C 09 28 2A 20 4F 6E 65 20 6F 66 20 74 77 6F 20 ,.(* One of two
000040: 61 6C 74 65 72 6E 61 74 69 76 65 73 2A 29 0D 0A alternatives*)..
000050: 09 09 20 20 43 6F 6E 63 61 74 2C 09 28 2A 20 43 .. Concat,.(* C
000060: 6F 6E 63 61 74 65 6E 61 74 65 20 74 77 6F 20 70 oncatenate two p
000070: 61 74 74 65 72 6E 73 2A 29 0D 0A 09 09 20 20 52 atterns*).... R
000080: 69 67 68 74 4C 69 6D 69 74 29 3B 09 28 2A 20 4D ightLimit);.(* M
000090: 61 6B 65 20 73 75 72 65 20 61 74 20 72 69 67 68 ake sure at righ
0000A0: 74 20 62 6F 75 6E 64 61 72 79 2A 29 0D 0A 0D 0A t boundary*)....
0000B0: 09 43 68 61 72 53 65 74 3D 53 45 54 20 4F 46 20 .CharSet=SET OF
0000C0: 43 48 41 52 3B 0D 0A 0D 0A 09 50 4E 6F 64 65 3D CHAR;.....PNode=
0000D0: 50 4F 49 4E 54 45 52 20 54 4F 20 4E 6F 64 65 3B POINTER TO Node;
0000E0: 0D 0A 0D 0A 09 50 53 74 61 74 75 73 3D 50 4F 49 .....PStatus=POI
0000F0: 4E 54 45 52 20 54 4F 20 53 74 61 74 65 3B 0D 0A NTER TO State;..
000100: 0D 0A 28 2A 09 49 66 20 61 20 6D 61 74 63 68 20 ..(*.If a match
000110: 69 73 20 73 75 63 63 65 73 73 66 75 6C 2C 20 74 is successful, t
000120: 68 65 20 6D 61 74 63 68 20 69 73 20 72 65 74 75 he match is retu
000130: 72 6E 65 64 20 62 79 20 61 20 74 72 65 65 20 6F rned by a tree o
000140: 66 0D 0A 09 73 74 61 74 65 73 2E 20 45 61 63 68 f...states. Each
000150: 20 6E 6F 64 65 20 69 6E 20 74 68 65 20 74 72 65 node in the tre
000160: 65 20 67 69 76 65 73 20 74 68 65 20 73 74 61 72 e gives the star
000170: 74 20 70 6F 73 69 74 69 6F 6E 20 6F 66 20 74 68 t position of th
000180: 65 0D 0A 09 6D 61 74 63 68 20 61 6E 64 20 74 68 e...match and th
000190: 65 20 70 6F 73 69 74 69 6F 6E 20 6F 66 20 74 68 e position of th
0001A0: 65 20 6E 65 78 74 20 63 68 61 72 61 63 74 65 72 e next character
0001B0: 20 66 6F 6C 6C 6F 77 69 6E 67 20 74 68 65 20 6D following the m
0001C0: 61 74 63 68 2E 0D 0A 0D 0A 09 49 74 20 61 6C 73 atch......It als
0001D0: 6F 20 63 6F 6E 74 61 69 6E 73 20 61 20 70 6F 69 o contains a poi
0001E0: 6E 74 65 72 20 74 6F 20 74 68 65 20 70 61 74 74 nter to the patt
0001F0: 65 72 6E 20 6E 6F 64 65 20 77 68 69 63 68 20 77 ern node which w
Size : 512 (Real : 512)
000000: 09 09 09 57 49 54 48 20 44 69 72 65 63 74 6F 72 ...WITH Director
000010: 79 5B 6A 5D 20 44 4F 0D 0A 09 09 09 09 49 46 20 y[j] DO......IF
000020: 53 74 61 74 75 73 3C 3E 30 66 66 68 20 54 48 45 Status<>0ffh THE
000030: 4E 0D 0A 09 09 09 09 20 20 20 20 66 2E 66 3A 3D N...... f.f:=
000040: 66 63 62 28 44 69 72 65 63 74 6F 72 79 5B 6A 5D fcb(Directory[j]
000050: 29 3B 0D 0A 09 09 09 09 20 20 20 20 53 65 74 55 );...... SetU
000060: 70 46 63 62 28 66 29 3B 0D 0A 09 09 09 09 20 20 pFcb(f);......
000070: 20 20 66 2E 66 2E 66 63 62 64 6E 3A 3D 4F 52 44 f.f.fcbdn:=ORD
000080: 28 46 4E 61 6D 65 5B 69 5D 29 2D 4F 52 44 28 27 (FName[i])-ORD('
000090: 41 27 29 2B 31 3B 0D 0A 09 09 09 09 20 20 20 20 A')+1;......
0000A0: 6B 3A 3D 42 44 4F 53 28 6F 70 6E 66 63 2C 41 44 k:=BDOS(opnfc,AD
0000B0: 52 28 66 2E 66 29 29 3B 0D 0A 09 09 09 09 20 20 R(f.f));......
0000C0: 20 20 49 46 20 6B 3C 3E 30 66 66 68 20 54 48 45 IF k<>0ffh THE
0000D0: 4E 0D 0A 09 09 09 09 09 57 72 69 74 65 53 74 72 N.......WriteStr
0000E0: 69 6E 67 28 27 20 55 70 64 61 74 69 6E 67 3A 27 ing(' Updating:'
0000F0: 29 3B 0D 0A 09 09 09 09 09 44 69 73 70 6C 61 79 );.......Display
000100: 4E 61 6D 65 28 49 6E 64 65 78 52 65 63 6F 72 64 Name(IndexRecord
000110: 28 66 2E 66 29 29 3B 0D 0A 09 09 09 09 09 57 72 (f.f));.......Wr
000120: 69 74 65 4C 6E 3B 09 0D 0A 09 09 09 09 09 44 6F iteLn;........Do
000130: 41 64 64 69 74 69 6F 6E 28 66 2C 53 63 72 75 6E Addition(f,Scrun
000140: 63 68 65 64 29 3B 0D 0A 09 09 09 09 09 45 4E 44 ched);.......END
000150: 3B 0D 0A 09 09 09 09 20 20 20 20 45 4E 44 3B 0D ;...... END;.
000160: 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 45 4E .....END;.....EN
000170: 44 3B 0D 0A 09 09 49 4E 43 28 69 29 3B 0D 0A 09 D;....INC(i);...
000180: 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 55 70 64 61 .END;...END Upda
000190: 74 65 41 6C 6C 3B 0D 0A 42 45 47 49 4E 0D 0A 09 teAll;..BEGIN...
0001A0: 4F 70 65 6E 4C 69 62 72 61 72 79 3B 0D 0A 09 57 OpenLibrary;...W
0001B0: 72 69 74 65 53 74 72 69 6E 67 28 27 20 43 6F 6D riteString(' Com
0001C0: 6D 61 6E 64 73 20 61 72 65 3A 09 46 20 2D 20 46 mands are:.F - F
0001D0: 69 6E 69 73 68 27 29 3B 57 72 69 74 65 4C 6E 3B inish');WriteLn;
0001E0: 0D 0A 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 ...WriteString('
0001F0: 09 09 41 20 2D 20 41 64 64 20 6F 72 20 75 70 64 ..A - Add or upd
Size : 512 (Real : 512)
000000: 68 65 64 20 54 48 45 4E 20 55 6E 53 63 72 75 6E hed THEN UnScrun
000010: 63 68 28 4C 69 62 2C 66 6F 29 3B 0D 0A 09 09 09 ch(Lib,fo);.....
000020: 45 4C 53 45 20 69 3A 3D 54 72 61 6E 73 66 65 72 ELSE i:=Transfer
000030: 28 4C 69 62 2C 66 6F 2C 4C 65 6E 67 74 68 29 20 (Lib,fo,Length)
000040: 45 4E 44 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 END;.....END;...
000050: 09 43 6C 6F 73 65 28 66 6F 29 3B 0D 0A 09 09 45 .Close(fo);....E
000060: 4E 44 3B 0D 0A 09 45 4E 44 20 45 78 74 72 61 63 ND;...END Extrac
000070: 74 46 69 6C 65 3B 0D 0A 50 52 4F 43 45 44 55 52 tFile;..PROCEDUR
000080: 45 20 44 69 73 70 6C 61 79 4E 61 6D 65 28 20 64 E DisplayName( d
000090: 3A 49 6E 64 65 78 52 65 63 6F 72 64 29 3B 0D 0A :IndexRecord);..
0000A0: 56 41 52 09 6A 3A 43 41 52 44 49 4E 41 4C 3B 0D VAR.j:CARDINAL;.
0000B0: 0A 42 45 47 49 4E 0D 0A 09 6A 3A 3D 31 3B 0D 0A .BEGIN...j:=1;..
0000C0: 09 57 49 54 48 20 64 20 44 4F 0D 0A 09 09 57 48 .WITH d DO....WH
0000D0: 49 4C 45 20 28 6A 3C 3D 38 29 20 41 4E 44 20 28 ILE (j<=8) AND (
0000E0: 42 61 73 65 4E 61 6D 65 5B 6A 5D 3C 3E 27 20 27 BaseName[j]<>' '
0000F0: 29 20 44 4F 0D 0A 09 09 09 57 72 69 74 65 28 42 ) DO.....Write(B
000100: 61 73 65 4E 61 6D 65 5B 6A 5D 29 3B 0D 0A 09 09 aseName[j]);....
000110: 09 49 4E 43 28 6A 29 3B 0D 0A 09 09 09 45 4E 44 .INC(j);.....END
000120: 3B 0D 0A 09 09 57 72 69 74 65 53 74 72 69 6E 67 ;....WriteString
000130: 28 27 2E 27 29 3B 0D 0A 09 09 57 72 69 74 65 53 ('.');....WriteS
000140: 74 72 69 6E 67 28 45 78 74 29 3B 0D 0A 09 09 57 tring(Ext);....W
000150: 48 49 4C 45 20 6A 3C 3D 38 20 44 4F 20 0D 0A 09 HILE j<=8 DO ...
000160: 09 09 57 72 69 74 65 28 27 20 27 29 3B 0D 0A 09 ..Write(' ');...
000170: 09 09 49 4E 43 28 6A 29 3B 0D 0A 09 09 09 45 4E ..INC(j);.....EN
000180: 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E 44 D;....END;...END
000190: 20 44 69 73 70 6C 61 79 4E 61 6D 65 3B 0D 0A 0D DisplayName;...
0001A0: 0A 50 52 4F 43 45 44 55 52 45 20 4C 69 73 74 4E .PROCEDURE ListN
0001B0: 61 6D 65 73 3B 0D 0A 56 41 52 09 69 2C 6A 2C 6B ames;..VAR.i,j,k
0001C0: 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 :CARDINAL;..BEGI
0001D0: 4E 0D 0A 09 6B 3A 3D 30 3B 0D 0A 09 46 4F 52 20 N...k:=0;...FOR
0001E0: 69 3A 3D 32 20 54 4F 20 53 6C 6F 74 73 20 44 4F i:=2 TO Slots DO
0001F0: 0D 0A 09 09 57 49 54 48 20 44 69 72 65 63 74 6F ....WITH Directo
Size : 512 (Real : 512)
000000: 61 74 65 27 29 3B 57 72 69 74 65 4C 6E 3B 0D 0A ate');WriteLn;..
000010: 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 09 09 .WriteString('..
000020: 44 20 2D 20 44 65 6C 65 74 65 27 29 3B 57 72 69 D - Delete');Wri
000030: 74 65 4C 6E 3B 20 0D 0A 09 57 72 69 74 65 53 74 teLn; ...WriteSt
000040: 72 69 6E 67 28 27 09 09 45 20 2D 20 45 78 74 72 ring('..E - Extr
000050: 61 63 74 27 29 3B 57 72 69 74 65 4C 6E 3B 0D 0A act');WriteLn;..
000060: 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 09 09 .WriteString('..
000070: 4C 20 2D 20 4C 69 73 74 20 66 69 6C 65 73 27 29 L - List files')
000080: 3B 57 72 69 74 65 4C 6E 3B 0D 0A 09 57 72 69 74 ;WriteLn;...Writ
000090: 65 53 74 72 69 6E 67 28 27 09 09 52 20 2D 20 52 eString('..R - R
0000A0: 65 6F 72 67 61 6E 69 7A 65 27 29 3B 57 72 69 74 eorganize');Writ
0000B0: 65 4C 6E 3B 0D 0A 09 57 72 69 74 65 53 74 72 69 eLn;...WriteStri
0000C0: 6E 67 28 27 09 09 55 20 2D 20 55 70 64 61 74 65 ng('..U - Update
0000D0: 20 41 6C 6C 27 29 3B 57 72 69 74 65 4C 6E 3B 0D All');WriteLn;.
0000E0: 0A 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 4C 4F 4F ..WriteLn;...LOO
0000F0: 50 0D 0A 09 09 52 65 61 64 43 6F 6D 6D 61 6E 64 P....ReadCommand
000100: 3B 0D 0A 09 09 43 41 53 45 20 43 6F 6D 6D 61 6E ;....CASE Comman
000110: 64 43 48 20 4F 46 20 0D 0A 09 09 09 27 46 27 3A dCH OF .....'F':
000120: 43 6C 6F 73 65 4C 69 62 72 61 72 79 3B 45 58 49 CloseLibrary;EXI
000130: 54 7C 0D 0A 09 09 09 27 41 27 3A 41 64 64 46 69 T|.....'A':AddFi
000140: 6C 65 28 46 4E 61 6D 65 2C 46 41 4C 53 45 29 7C le(FName,FALSE)|
000150: 0D 0A 09 09 09 27 53 27 3A 41 64 64 46 69 6C 65 .....'S':AddFile
000160: 28 46 4E 61 6D 65 2C 54 52 55 45 29 7C 0D 0A 09 (FName,TRUE)|...
000170: 09 09 27 44 27 3A 44 65 6C 65 74 65 46 69 6C 65 ..'D':DeleteFile
000180: 28 46 4E 61 6D 65 29 7C 0D 0A 09 09 09 27 45 27 (FName)|.....'E'
000190: 3A 45 78 74 72 61 63 74 46 69 6C 65 28 46 4E 61 :ExtractFile(FNa
0001A0: 6D 65 29 7C 0D 0A 09 09 09 27 4C 27 3A 4C 69 73 me)|.....'L':Lis
0001B0: 74 4E 61 6D 65 73 7C 0D 0A 09 09 09 27 55 27 3A tNames|.....'U':
0001C0: 55 70 64 61 74 65 41 6C 6C 7C 0D 0A 09 09 09 27 UpdateAll|.....'
0001D0: 52 27 3A 52 65 6F 72 67 3B 09 0D 0A 09 09 09 45 R':Reorg;......E
0001E0: 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E ND;....END;...EN
0001F0: 44 20 4D 79 4C 55 2E 0D 0A 20 1A 0F FD 02 00 00 D MyLU... ......
Size : 512 (Real : 512)
000000: 72 79 5B 69 5D 20 44 4F 0D 0A 09 09 09 49 46 20 ry[i] DO.....IF
000010: 53 74 61 74 75 73 3C 3E 30 66 66 68 20 54 48 45 Status<>0ffh THE
000020: 4E 0D 0A 09 09 09 09 44 69 73 70 6C 61 79 4E 61 N......DisplayNa
000030: 6D 65 28 44 69 72 65 63 74 6F 72 79 5B 69 5D 29 me(Directory[i])
000040: 3B 0D 0A 09 09 09 09 57 72 69 74 65 43 61 72 64 ;......WriteCard
000050: 28 4C 65 6E 67 74 68 2A 31 32 38 2C 35 29 3B 0D (Length*128,5);.
000060: 0A 09 09 09 09 49 4E 43 28 6B 29 3B 0D 0A 09 09 .....INC(k);....
000070: 09 09 49 46 20 6B 3D 34 20 54 48 45 4E 20 57 72 ..IF k=4 THEN Wr
000080: 69 74 65 4C 6E 3B 6B 3A 3D 30 0D 0A 09 09 09 09 iteLn;k:=0......
000090: 45 4C 53 45 20 57 72 69 74 65 53 74 72 69 6E 67 ELSE WriteString
0000A0: 28 27 20 20 27 29 20 45 4E 44 3B 0D 0A 09 09 09 (' ') END;.....
0000B0: 09 45 4E 44 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A .END;.....END;..
0000C0: 09 09 45 4E 44 3B 0D 0A 09 49 46 20 6B 3C 3E 30 ..END;...IF k<>0
0000D0: 20 54 48 45 4E 20 57 72 69 74 65 4C 6E 20 45 4E THEN WriteLn EN
0000E0: 44 3B 0D 0A 09 45 4E 44 20 4C 69 73 74 4E 61 6D D;...END ListNam
0000F0: 65 73 3B 20 0D 0A 50 52 4F 43 45 44 55 52 45 20 es; ..PROCEDURE
000100: 53 65 74 55 70 46 63 62 28 56 41 52 20 66 3A 46 SetUpFcb(VAR f:F
000110: 49 4C 45 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 20 ILE);..BEGIN...
000120: 20 20 20 66 2E 64 65 76 74 79 70 65 3A 3D 64 69 f.devtype:=di
000130: 73 63 3B 0D 0A 09 20 20 20 20 66 2E 65 6F 66 3A sc;... f.eof:
000140: 3D 46 41 4C 53 45 3B 0D 0A 09 20 20 20 20 57 49 =FALSE;... WI
000150: 54 48 20 66 2E 66 20 44 4F 0D 0A 09 09 66 63 62 TH f.f DO....fcb
000160: 65 78 3A 3D 30 3B 0D 0A 09 09 66 63 62 63 72 3A ex:=0;....fcbcr:
000170: 3D 30 3B 0D 0A 09 09 63 70 6D 72 65 73 3A 3D 30 =0;....cpmres:=0
000180: 3B 0D 0A 09 09 66 63 62 72 63 3A 3D 30 3B 0D 0A ;....fcbrc:=0;..
000190: 09 09 66 63 62 72 6E 2E 6C 6F 77 6F 72 64 65 72 ..fcbrn.loworder
0001A0: 3A 3D 30 3B 0D 0A 09 09 66 63 62 72 6E 2E 68 69 :=0;....fcbrn.hi
0001B0: 67 68 6F 72 64 65 72 3A 3D 30 3B 0D 0A 09 09 45 ghorder:=0;....E
0001C0: 4E 44 3B 0D 0A 09 45 4E 44 20 53 65 74 55 70 46 ND;...END SetUpF
0001D0: 63 62 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 52 cb;..PROCEDURE R
0001E0: 65 6F 72 67 3B 0D 0A 56 41 52 09 69 2C 6A 2C 6B eorg;..VAR.i,j,k
0001F0: 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 4F 6C 64 :CARDINAL;...Old
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: 44 69 72 3A 49 6E 64 65 78 3B 0D 0A 09 4F 6C 64 Dir:Index;...Old
000010: 53 6C 6F 74 73 3A 43 41 52 44 49 4E 41 4C 3B 0D Slots:CARDINAL;.
000020: 0A 09 4F 6C 64 4C 69 62 3A 46 49 4C 45 3B 0D 0A ..OldLib:FILE;..
000030: 42 45 47 49 4E 0D 0A 09 4F 6C 64 4C 69 62 3A 3D BEGIN...OldLib:=
000040: 4C 69 62 3B 0D 0A 09 43 6C 6F 73 65 28 4C 69 62 Lib;...Close(Lib
000050: 29 3B 0D 0A 09 4D 61 6B 65 42 41 4B 28 4C 69 62 );...MakeBAK(Lib
000060: 2C 72 65 70 6C 79 29 3B 0D 0A 09 4F 6C 64 44 69 ,reply);...OldDi
000070: 72 3A 3D 44 69 72 65 63 74 6F 72 79 3B 0D 0A 09 r:=Directory;...
000080: 4F 6C 64 53 6C 6F 74 73 3A 3D 53 6C 6F 74 73 3B OldSlots:=Slots;
000090: 0D 0A 09 53 65 74 55 70 46 63 62 28 4F 6C 64 4C ...SetUpFcb(OldL
0000A0: 69 62 29 3B 0D 0A 09 4F 6C 64 4C 69 62 2E 66 2E ib);...OldLib.f.
0000B0: 66 63 62 66 74 3A 3D 27 42 41 4B 27 3B 0D 0A 09 fcbft:='BAK';...
0000C0: 6B 3A 3D 42 44 4F 53 28 6F 70 6E 66 63 2C 41 44 k:=BDOS(opnfc,AD
0000D0: 52 28 4F 6C 64 4C 69 62 2E 66 29 29 3B 0D 0A 09 R(OldLib.f));...
0000E0: 43 72 65 61 74 65 28 4C 69 62 2C 4C 69 62 4E 61 Create(Lib,LibNa
0000F0: 6D 65 2C 72 65 70 6C 79 29 3B 0D 0A 09 49 46 20 me,reply);...IF
000100: 72 65 70 6C 79 3C 3E 30 20 54 48 45 4E 0D 0A 09 reply<>0 THEN...
000110: 09 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 43 .WriteString(' C
000120: 6F 75 6C 64 20 6E 6F 74 20 63 72 65 61 74 65 20 ould not create
000130: 6E 65 77 20 6C 69 62 72 61 72 79 27 29 3B 0D 0A new library');..
000140: 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 52 45 ..WriteLn;....RE
000150: 54 55 52 4E 0D 0A 09 09 45 4E 44 3B 0D 0A 09 57 TURN....END;...W
000160: 72 69 74 65 53 74 72 69 6E 67 28 27 20 4F 6C 64 riteString(' Old
000170: 20 6C 69 62 72 61 72 79 20 68 61 64 20 27 29 3B library had ');
000180: 57 72 69 74 65 43 61 72 64 28 4F 6C 64 53 6C 6F WriteCard(OldSlo
000190: 74 73 2C 34 29 3B 0D 0A 09 57 72 69 74 65 53 74 ts,4);...WriteSt
0001A0: 72 69 6E 67 28 27 20 73 6C 6F 74 73 27 29 3B 57 ring(' slots');W
0001B0: 72 69 74 65 4C 6E 3B 0D 0A 09 47 65 74 53 6C 6F riteLn;...GetSlo
0001C0: 74 43 6F 75 6E 74 3B 0D 0A 09 46 4F 52 20 69 3A tCount;...FOR i:
0001D0: 3D 32 20 54 4F 20 4F 6C 64 53 6C 6F 74 73 20 44 =2 TO OldSlots D
0001E0: 4F 0D 0A 09 09 57 49 54 48 20 4F 6C 64 44 69 72 O....WITH OldDir
0001F0: 5B 69 5D 20 44 4F 0D 0A 09 09 09 49 46 20 53 74 [i] DO.....IF St
Size : 512 (Real : 512)
000000: 44 45 46 49 4E 49 54 49 4F 4E 20 4D 4F 44 55 4C DEFINITION MODUL
000010: 45 20 50 61 74 74 65 72 6E 3B 0D 0A 0D 0A 28 2A E Pattern;....(*
000020: 09 54 68 69 73 20 69 73 20 61 20 70 61 74 74 65 .This is a patte
000030: 72 6E 20 6D 61 74 63 68 69 6E 67 20 6D 6F 64 75 rn matching modu
000040: 6C 65 0D 0A 0D 0A 09 44 61 76 65 20 4D 6F 6F 72 le.....Dave Moor
000050: 65 2C 20 46 54 4C 20 4D 6F 64 75 6C 61 2D 32 0D e, FTL Modula-2.
000060: 0A 0D 0A 09 54 6F 20 6D 61 74 63 68 20 61 20 70 ....To match a p
000070: 61 74 74 65 72 6E 20 77 69 74 68 20 74 68 69 73 attern with this
000080: 20 6D 6F 64 75 6C 65 2C 20 79 6F 75 20 6D 75 73 module, you mus
000090: 74 20 63 72 65 61 74 65 20 61 0D 0A 09 70 61 74 t create a...pat
0000A0: 74 65 72 6E 20 64 65 73 63 72 69 70 74 69 6F 6E tern description
0000B0: 20 77 69 74 68 20 74 68 65 20 22 43 72 65 61 74 with the "Creat
0000C0: 65 22 20 66 75 6E 63 74 69 6F 6E 73 2C 20 61 6E e" functions, an
0000D0: 64 20 74 68 65 6E 20 0D 0A 09 75 73 65 20 74 68 d then ...use th
0000E0: 65 20 4D 61 74 63 68 50 61 74 74 65 72 6E 20 66 e MatchPattern f
0000F0: 75 6E 63 74 69 6F 6E 2E 0D 0A 0D 0A 09 54 68 69 unction......Thi
000100: 73 20 66 75 6E 63 74 69 6F 6E 20 72 65 74 75 72 s function retur
000110: 6E 73 20 61 20 74 72 65 65 20 64 65 73 63 72 69 ns a tree descri
000120: 62 69 6E 67 20 74 68 65 20 6D 61 74 63 68 2C 20 bing the match,
000130: 69 66 20 73 75 63 63 65 73 73 66 75 6C 2C 0D 0A if successful,..
000140: 09 6F 72 20 4E 49 4C 20 69 66 20 6E 6F 74 20 73 .or NIL if not s
000150: 75 63 63 65 73 73 66 75 6C 2E 0D 0A 0D 0A 09 0D uccessful.......
000160: 0A 2A 29 0D 0A 54 59 50 45 0D 0A 0D 0A 28 2A 09 .*)..TYPE....(*.
000170: 54 68 65 20 70 72 6F 67 72 61 6D 20 6D 61 74 63 The program matc
000180: 68 65 73 20 61 20 74 72 65 65 20 72 65 70 72 65 hes a tree repre
000190: 73 65 6E 74 69 6E 67 20 61 20 70 61 74 74 65 72 senting a patter
0001A0: 6E 0D 0A 09 74 68 65 72 65 20 61 72 65 20 61 20 n...there are a
0001B0: 76 61 72 69 65 74 79 20 6F 66 20 6E 6F 64 65 20 variety of node
0001C0: 74 79 70 65 73 2A 29 0D 0A 09 0D 0A 09 4E 6F 64 types*)......Nod
0001D0: 65 54 79 70 65 3D 28 53 74 72 69 6E 67 2C 20 09 eType=(String, .
0001E0: 28 2A 20 41 20 73 74 72 69 6E 67 20 6F 66 20 63 (* A string of c
0001F0: 68 61 72 73 2A 29 0D 0A 09 09 20 20 41 6E 79 4F hars*).... AnyO
Size : 512 (Real : 512)
000000: 61 74 75 73 3C 3E 30 66 66 68 20 54 48 45 4E 0D atus<>0ffh THEN.
000010: 0A 09 09 09 09 53 65 74 42 6C 6F 63 6B 28 4F 6C .....SetBlock(Ol
000020: 64 4C 69 62 2C 53 74 61 72 74 53 65 63 74 6F 72 dLib,StartSector
000030: 29 3B 0D 0A 09 09 09 09 53 65 74 42 6C 6F 63 6B );......SetBlock
000040: 28 4C 69 62 2C 4E 65 78 74 53 65 63 74 6F 72 29 (Lib,NextSector)
000050: 3B 0D 0A 09 09 09 09 6B 3A 3D 4E 65 78 74 53 65 ;......k:=NextSe
000060: 63 74 6F 72 3B 0D 0A 09 09 09 09 6A 3A 3D 54 72 ctor;......j:=Tr
000070: 61 6E 73 66 65 72 28 4F 6C 64 4C 69 62 2C 4C 69 ansfer(OldLib,Li
000080: 62 2C 4C 65 6E 67 74 68 29 3B 0D 0A 09 09 09 09 b,Length);......
000090: 41 64 64 45 6E 74 72 79 28 66 63 62 28 4F 6C 64 AddEntry(fcb(Old
0000A0: 44 69 72 5B 69 5D 29 2C 6B 2C 6A 2C 44 61 74 65 Dir[i]),k,j,Date
0000B0: 2C 54 69 6D 65 2C 53 63 72 75 6E 63 68 65 64 29 ,Time,Scrunched)
0000C0: 3B 0D 0A 09 09 09 09 4E 65 78 74 53 65 63 74 6F ;......NextSecto
0000D0: 72 3A 3D 4E 65 78 74 53 65 63 74 6F 72 2B 6A 3B r:=NextSector+j;
0000E0: 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 45 ......END;.....E
0000F0: 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E ND;....END;...EN
000100: 44 20 52 65 6F 72 67 3B 0D 0A 50 52 4F 43 45 44 D Reorg;..PROCED
000110: 55 52 45 20 55 70 64 61 74 65 41 6C 6C 3B 0D 0A URE UpdateAll;..
000120: 56 41 52 09 69 2C 6A 2C 6B 3A 43 41 52 44 49 4E VAR.i,j,k:CARDIN
000130: 41 4C 3B 0D 0A 09 66 3A 46 49 4C 45 3B 0D 0A 42 AL;...f:FILE;..B
000140: 45 47 49 4E 0D 0A 09 69 3A 3D 30 3B 49 46 20 46 EGIN...i:=0;IF F
000150: 4E 61 6D 65 5B 30 5D 3D 27 20 27 20 54 48 45 4E Name[0]=' ' THEN
000160: 20 46 4E 61 6D 65 5B 30 5D 3A 3D 27 40 27 20 45 FName[0]:='@' E
000170: 4E 44 3B 0D 0A 09 57 48 49 4C 45 20 28 69 3C 3D ND;...WHILE (i<=
000180: 48 49 47 48 28 46 4E 61 6D 65 29 29 41 4E 44 20 HIGH(FName))AND
000190: 28 46 4E 61 6D 65 5B 69 5D 3C 3E 27 20 27 29 20 (FName[i]<>' ')
0001A0: 44 4F 0D 0A 09 09 57 72 69 74 65 53 74 72 69 6E DO....WriteStrin
0001B0: 67 28 27 20 53 65 61 72 63 68 69 6E 67 20 64 69 g(' Searching di
0001C0: 73 6B 20 27 29 3B 0D 0A 09 09 57 72 69 74 65 28 sk ');....Write(
0001D0: 46 4E 61 6D 65 5B 69 5D 29 3B 0D 0A 09 09 57 72 FName[i]);....Wr
0001E0: 69 74 65 4C 6E 3B 0D 0A 09 09 46 4F 52 20 6A 3A iteLn;....FOR j:
0001F0: 3D 32 20 54 4F 20 53 6C 6F 74 73 20 44 4F 0D 0A =2 TO Slots DO..
Size : 512 (Real : 512)
000000: 20 4F 46 20 43 48 41 52 29 3A 50 53 74 61 74 75 OF CHAR):PStatu
000010: 73 3B 0D 0A 0D 0A 28 2A 09 4D 61 74 63 68 20 61 s;....(*.Match a
000020: 20 50 61 74 74 65 72 6E 20 0D 0A 09 70 20 69 73 Pattern ...p is
000030: 20 74 68 65 20 72 6F 6F 74 20 6F 66 20 74 68 65 the root of the
000040: 20 70 61 74 74 65 72 6E 20 74 6F 20 6D 61 74 63 pattern to matc
000050: 68 0D 0A 09 73 20 69 73 20 74 68 65 20 74 65 78 h...s is the tex
000060: 74 20 74 6F 20 6D 61 74 63 68 0D 0A 0D 0A 09 54 t to match.....T
000070: 68 65 20 66 75 6E 63 74 69 6F 6E 20 72 65 74 75 he function retu
000080: 72 6E 73 20 61 20 74 72 65 65 20 69 66 20 74 68 rns a tree if th
000090: 65 20 6D 61 74 63 68 20 69 73 20 73 75 63 63 65 e match is succe
0000A0: 73 73 66 75 6C 2E 0D 0A 09 49 74 20 72 65 74 75 ssful....It retu
0000B0: 72 6E 73 20 4E 49 4C 20 69 66 20 74 68 65 20 6D rns NIL if the m
0000C0: 61 74 63 68 20 66 61 69 6C 73 2E 0D 0A 0D 0A 09 atch fails......
0000D0: 54 68 65 20 6D 61 74 63 68 20 6D 75 73 74 20 73 The match must s
0000E0: 74 61 72 74 20 61 74 20 74 68 65 20 62 65 67 69 tart at the begi
0000F0: 6E 6E 69 6E 67 20 6F 66 20 74 68 65 20 73 74 72 nning of the str
000100: 69 6E 67 2C 20 62 75 74 20 69 74 0D 0A 09 6E 65 ing, but it...ne
000110: 65 64 20 6E 6F 74 20 6D 61 74 63 68 20 74 68 65 ed not match the
000120: 20 65 6E 74 69 72 65 20 73 74 72 69 6E 67 20 2D entire string -
000130: 20 74 68 69 73 20 63 61 6E 20 62 65 20 66 6F 72 this can be for
000140: 63 65 64 20 62 79 20 75 73 69 6E 67 0D 0A 09 61 ced by using...a
000150: 20 6C 69 6D 69 74 20 6E 6F 64 65 2E 20 0D 0A 0D limit node. ...
000160: 0A 09 49 66 20 79 6F 75 20 77 61 6E 74 20 74 6F ..If you want to
000170: 20 75 6E 2D 61 6E 63 68 6F 72 20 74 68 65 20 6D un-anchor the m
000180: 61 74 63 68 20 66 72 6F 6D 20 74 68 65 20 62 65 atch from the be
000190: 67 69 6E 6E 69 6E 67 20 6F 66 20 74 68 65 0D 0A ginning of the..
0001A0: 09 73 74 72 69 6E 67 2C 20 75 73 65 20 61 20 70 .string, use a p
0001B0: 61 74 74 65 72 6E 3A 0D 0A 0D 0A 09 09 43 72 65 attern:......Cre
0001C0: 61 74 65 43 6F 6E 63 61 74 4E 6F 64 65 28 0D 0A ateConcatNode(..
0001D0: 09 09 09 43 72 65 61 74 65 41 6E 79 4F 66 4E 6F ...CreateAnyOfNo
0001E0: 64 65 28 43 68 61 72 53 65 74 7B 30 78 2E 2E 30 de(CharSet{0x..0
0001F0: 66 66 78 7D 2C 30 2C 36 34 30 30 30 2C 46 41 4C ffx},0,64000,FAL
Size : 512 (Real : 512)
000000: 0A 09 4E 45 57 28 45 29 3B 0D 0A 09 74 65 6D 70 ..NEW(E);...temp
000010: 3A 3D 43 72 65 61 74 65 41 6C 74 4E 6F 64 65 28 :=CreateAltNode(
000020: 0D 0A 09 09 20 20 20 43 72 65 61 74 65 53 74 72 .... CreateStr
000030: 69 6E 67 4E 6F 64 65 28 27 61 27 29 2C 0D 0A 09 ingNode('a'),...
000040: 09 20 20 20 43 72 65 61 74 65 43 6F 6E 63 61 74 . CreateConcat
000050: 4E 6F 64 65 28 0D 0A 09 09 09 43 72 65 61 74 65 Node(.....Create
000060: 53 74 72 69 6E 67 4E 6F 64 65 28 27 61 27 29 2C StringNode('a'),
000070: 0D 0A 09 09 09 45 29 0D 0A 09 09 20 20 20 29 3B .....E).... );
000080: 0D 0A 09 45 5E 3A 3D 74 65 6D 70 5E 3B 0D 0A 0D ...E^:=temp^;...
000090: 0A 09 57 65 20 68 61 76 65 20 61 6C 6C 6F 63 61 ..We have alloca
0000A0: 74 65 64 20 22 45 22 20 66 69 72 73 74 20 73 6F ted "E" first so
0000B0: 20 74 68 61 74 20 69 74 20 63 61 6E 20 62 65 20 that it can be
0000C0: 75 73 65 64 20 69 6E 20 74 68 65 0D 0A 09 66 75 used in the...fu
0000D0: 6E 63 74 69 6F 6E 2E 20 57 65 20 63 6F 75 6C 64 nction. We could
0000E0: 20 6E 6F 74 20 73 69 6D 70 6C 79 20 61 73 73 69 not simply assi
0000F0: 67 6E 20 74 68 65 20 70 6F 69 6E 74 65 72 20 72 gn the pointer r
000100: 65 74 75 72 6E 65 64 20 62 79 0D 0A 09 43 72 65 eturned by...Cre
000110: 61 74 65 43 6F 6E 63 61 74 4E 6F 64 65 20 74 6F ateConcatNode to
000120: 20 45 2C 20 73 69 6E 63 65 20 74 68 65 6E 20 74 E, since then t
000130: 68 65 20 45 20 75 73 65 64 20 69 6E 20 74 68 65 he E used in the
000140: 20 66 75 6E 63 74 69 6F 6E 0D 0A 09 77 6F 75 6C function...woul
000150: 64 20 62 65 20 70 6F 69 6E 74 69 6E 67 20 65 6C d be pointing el
000160: 73 65 77 68 65 72 65 2E 20 49 6E 73 74 65 61 64 sewhere. Instead
000170: 2C 20 77 65 20 6D 75 73 74 20 63 6F 70 79 20 74 , we must copy t
000180: 68 65 20 63 6F 6E 74 65 6E 74 73 0D 0A 09 6F 66 he contents...of
000190: 20 74 65 6D 70 20 69 6E 74 6F 20 45 20 73 6F 20 temp into E so
0001A0: 74 68 61 74 20 74 68 65 20 70 6F 69 6E 74 65 72 that the pointer
0001B0: 73 20 72 65 6D 61 69 6E 20 63 6F 72 72 65 63 74 s remain correct
0001C0: 2E 0D 0A 0D 0A 09 54 68 69 73 20 70 61 74 74 65 ......This patte
0001D0: 72 6E 20 22 45 22 20 69 73 20 6E 6F 74 20 79 65 rn "E" is not ye
0001E0: 74 20 72 65 61 64 79 20 74 6F 20 62 65 20 75 73 t ready to be us
0001F0: 65 64 2C 20 73 69 6E 63 65 20 74 68 65 20 70 61 ed, since the pa
Size : 512 (Real : 512)
000000: 61 73 20 6D 61 74 63 68 65 64 2E 0D 0A 0D 0A 09 as matched......
000010: 54 68 69 73 20 69 6E 66 6F 72 6D 61 74 69 6F 6E This information
000020: 20 68 61 73 20 74 6F 20 62 65 20 6B 65 70 74 20 has to be kept
000030: 73 65 70 61 72 61 74 65 6C 79 20 66 72 6F 6D 20 separately from
000040: 74 68 65 20 70 61 74 74 65 72 6E 20 64 65 63 72 the pattern decr
000050: 69 70 74 69 6F 6E 0D 0A 09 6E 6F 64 65 20 62 65 iption...node be
000060: 63 61 75 73 65 20 61 20 67 69 76 65 6E 20 70 61 cause a given pa
000070: 74 74 65 72 6E 20 6E 6F 64 65 20 63 61 6E 20 6D ttern node can m
000080: 61 74 63 68 20 73 65 76 65 72 61 6C 20 74 69 6D atch several tim
000090: 65 73 20 69 6E 20 61 20 67 69 76 65 6E 0D 0A 09 es in a given...
0000A0: 70 61 74 74 65 72 6E 2C 20 65 69 74 68 65 72 20 pattern, either
0000B0: 62 65 63 61 75 73 65 20 6F 66 20 72 65 63 75 72 because of recur
0000C0: 73 69 6F 6E 2C 20 6F 72 20 62 65 63 61 75 73 65 sion, or because
0000D0: 20 79 6F 75 20 68 61 76 65 20 63 68 6F 73 65 6E you have chosen
0000E0: 20 74 6F 0D 0A 09 73 61 76 65 20 73 70 61 63 65 to...save space
0000F0: 20 62 79 20 75 73 69 6E 67 20 61 20 73 69 6E 67 by using a sing
000100: 6C 65 20 6E 6F 64 65 20 69 6E 20 73 65 76 65 72 le node in sever
000110: 61 6C 20 64 69 66 66 65 72 65 6E 74 20 70 6C 61 al different pla
000120: 63 65 73 20 69 6E 20 61 20 0D 0A 09 70 61 74 74 ces in a ...patt
000130: 65 72 6E 2E 0D 0A 0D 0A 2A 29 09 0D 0A 0D 0A 09 ern.....*)......
000140: 53 74 61 74 65 3D 52 45 43 4F 52 44 0D 0A 09 09 State=RECORD....
000150: 53 74 61 74 75 73 3A 43 41 52 44 49 4E 41 4C 3B Status:CARDINAL;
000160: 09 28 2A 09 53 74 61 74 75 73 20 69 73 20 61 20 .(*.Status is a
000170: 73 74 61 74 75 73 20 66 69 65 6C 64 20 75 73 65 status field use
000180: 64 0D 0A 09 09 09 09 09 09 66 6F 72 20 62 61 63 d........for bac
000190: 6B 2D 74 72 61 63 6B 69 6E 67 20 62 79 20 74 68 k-tracking by th
0001A0: 65 20 6E 6F 64 65 0D 0A 09 09 09 09 09 09 63 6C e node........cl
0001B0: 61 73 73 65 73 20 41 6C 74 65 72 6E 61 74 69 76 asses Alternativ
0001C0: 65 73 20 61 6E 64 20 0D 0A 09 09 09 09 09 09 41 es and ........A
0001D0: 6E 79 4F 66 0D 0A 0D 0A 09 09 09 09 09 09 57 68 nyOf..........Wh
0001E0: 65 6E 20 77 65 20 61 72 65 20 62 61 63 6B 74 72 en we are backtr
0001F0: 61 63 6B 69 6E 67 20 74 6F 20 74 72 79 20 0D 0A acking to try ..
Size : 512 (Real : 512)
000000: 74 74 65 72 6E 0D 0A 09 77 69 6C 6C 20 6F 6E 6C ttern...will onl
000010: 79 20 6D 61 74 63 68 20 74 68 65 20 66 69 72 73 y match the firs
000020: 74 20 22 61 22 20 61 6E 64 20 74 68 65 6E 20 72 t "a" and then r
000030: 65 74 75 72 6E 2E 20 57 65 20 6D 75 73 74 20 61 eturn. We must a
000040: 64 64 20 61 0D 0A 09 22 4C 69 6D 69 74 4E 6F 64 dd a..."LimitNod
000050: 65 22 20 74 6F 20 65 6E 73 75 72 65 20 74 68 61 e" to ensure tha
000060: 74 20 61 6C 6C 20 74 68 65 20 73 74 72 69 6E 67 t all the string
000070: 20 69 73 20 6D 61 74 63 68 65 64 0D 0A 0D 0A 09 is matched.....
000080: 45 31 3A 3D 43 72 65 61 74 65 43 6F 6E 63 61 74 E1:=CreateConcat
000090: 4E 6F 64 65 28 45 2C 43 72 65 61 74 65 4C 69 6D Node(E,CreateLim
0000A0: 69 74 4E 6F 64 65 28 29 29 3B 0D 0A 0D 0A 09 45 itNode());.....E
0000B0: 31 20 77 69 6C 6C 20 65 6E 73 75 72 65 20 74 68 1 will ensure th
0000C0: 61 74 20 61 6C 6C 20 6F 66 20 74 68 65 20 73 74 at all of the st
0000D0: 72 69 6E 67 20 69 73 20 6D 61 74 63 68 65 64 0D ring is matched.
0000E0: 0A 2A 29 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 .*)..PROCEDURE C
0000F0: 72 65 61 74 65 53 74 72 69 6E 67 4E 6F 64 65 28 reateStringNode(
000100: 73 3A 41 52 52 41 59 20 4F 46 20 43 48 41 52 29 s:ARRAY OF CHAR)
000110: 3A 50 4E 6F 64 65 3B 0D 0A 0D 0A 28 2A 09 43 72 :PNode;....(*.Cr
000120: 65 61 74 65 20 61 20 6E 6F 64 65 20 77 68 69 63 eate a node whic
000130: 68 20 6D 61 74 63 68 65 73 20 61 20 66 69 78 65 h matches a fixe
000140: 64 20 73 74 72 69 6E 67 0D 0A 0D 0A 09 73 20 69 d string.....s i
000150: 73 20 74 68 65 20 73 74 72 69 6E 67 20 74 6F 20 s the string to
000160: 6D 61 74 63 68 2A 29 0D 0A 0D 0A 50 52 4F 43 45 match*)....PROCE
000170: 44 55 52 45 20 43 72 65 61 74 65 41 6C 74 4E 6F DURE CreateAltNo
000180: 64 65 28 70 2C 71 3A 50 4E 6F 64 65 29 3A 50 4E de(p,q:PNode):PN
000190: 6F 64 65 3B 0D 0A 0D 0A 28 2A 09 4D 61 74 63 68 ode;....(*.Match
0001A0: 20 65 69 74 68 65 72 20 70 20 6F 72 20 71 20 2A either p or q *
0001B0: 29 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 )....PROCEDURE C
0001C0: 72 65 61 74 65 41 6E 79 4F 66 4E 6F 64 65 28 73 reateAnyOfNode(s
0001D0: 3A 43 68 61 72 53 65 74 3B 6D 69 6E 2C 6D 61 78 :CharSet;min,max
0001E0: 3A 43 41 52 44 49 4E 41 4C 3B 4C 6F 6E 67 65 73 :CARDINAL;Longes
0001F0: 74 3A 42 4F 4F 4C 45 41 4E 29 3A 50 4E 6F 64 65 t:BOOLEAN):PNode
Size : 512 (Real : 512)
000000: 09 09 09 09 09 09 61 6E 20 61 6C 74 65 72 6E 61 ......an alterna
000010: 74 69 76 65 20 6D 61 74 63 68 20 6F 72 20 61 20 tive match or a
000020: 6C 6F 6E 67 65 72 0D 0A 09 09 09 09 09 09 6F 6E longer........on
000030: 65 2C 20 74 68 69 73 20 76 61 6C 75 65 20 69 73 e, this value is
000040: 20 69 6E 63 72 65 6D 65 6E 74 65 64 0D 0A 0D 0A incremented....
000050: 09 09 09 09 09 09 57 68 65 6E 20 77 65 20 61 72 ......When we ar
000060: 65 20 74 72 61 63 6B 69 6E 67 20 66 6F 72 77 61 e tracking forwa
000070: 72 64 2C 20 0D 0A 09 09 09 09 09 09 69 74 20 69 rd, ........it i
000080: 73 20 69 6E 69 74 69 61 6C 69 7A 65 64 2A 29 0D s initialized*).
000090: 0A 0D 0A 09 09 4D 61 74 63 68 65 64 41 74 3A 43 .....MatchedAt:C
0000A0: 41 52 44 49 4E 41 4C 3B 09 09 28 2A 20 50 6F 73 ARDINAL;..(* Pos
0000B0: 69 74 69 6F 6E 20 61 74 20 77 68 69 63 68 20 74 ition at which t
0000C0: 68 69 73 20 0D 0A 09 09 09 09 09 09 20 20 20 6E his ........ n
0000D0: 6F 64 65 20 6D 61 74 63 68 65 64 2A 29 0D 0A 09 ode matched*)...
0000E0: 09 50 61 74 74 65 72 6E 4E 6F 64 65 3A 50 4E 6F .PatternNode:PNo
0000F0: 64 65 3B 09 09 28 2A 20 50 6F 69 6E 74 65 72 20 de;..(* Pointer
000100: 74 6F 20 70 61 74 74 65 72 6E 20 6E 6F 64 65 20 to pattern node
000110: 0D 0A 09 09 09 09 09 09 20 20 20 6D 61 74 63 68 ........ match
000120: 65 64 20 62 79 20 74 68 69 73 20 73 74 61 74 75 ed by this statu
000130: 73 20 6E 6F 64 65 2A 29 0D 0A 09 09 4D 61 74 63 s node*)....Matc
000140: 68 65 64 54 6F 3A 43 41 52 44 49 4E 41 4C 3B 09 hedTo:CARDINAL;.
000150: 09 28 2A 20 50 6F 73 69 74 69 6F 6E 20 6F 66 20 .(* Position of
000160: 63 68 61 72 61 63 74 65 72 20 61 66 74 65 72 0D character after.
000170: 0A 09 09 09 09 09 09 20 20 20 6C 61 73 74 20 63 ....... last c
000180: 68 61 72 61 63 74 65 72 20 6D 61 74 63 68 65 64 haracter matched
000190: 20 62 79 20 0D 0A 09 09 09 09 09 09 20 20 20 70 by ........ p
0001A0: 61 74 74 65 72 6E 2A 29 0D 0A 09 09 4C 65 66 74 attern*)....Left
0001B0: 2C 52 69 67 68 74 3A 50 53 74 61 74 75 73 3B 09 ,Right:PStatus;.
0001C0: 09 28 2A 20 50 6F 69 6E 74 65 72 20 74 6F 20 73 .(* Pointer to s
0001D0: 75 62 73 74 61 74 75 73 20 74 72 65 65 0D 0A 09 ubstatus tree...
0001E0: 09 09 09 09 20 20 20 20 20 09 20 20 20 4C 65 66 .... . Lef
0001F0: 74 20 69 73 20 75 73 65 64 20 66 6F 72 20 41 6C t is used for Al
Size : 512 (Real : 512)
000000: 3B 0D 0A 0D 0A 28 2A 09 4D 61 74 63 68 20 61 6E ;....(*.Match an
000010: 79 20 63 68 61 72 61 63 74 65 72 20 69 6E 20 73 y character in s
000020: 65 74 20 22 73 22 0D 0A 0D 0A 09 6D 69 6E 20 61 et "s".....min a
000030: 6E 64 20 6D 61 78 20 61 72 65 20 74 68 65 20 6D nd max are the m
000040: 69 6E 69 6D 75 6D 20 61 6E 64 20 6D 61 78 69 6D inimum and maxim
000050: 75 6D 20 63 68 61 72 61 63 74 65 72 73 20 74 6F um characters to
000060: 20 6D 61 74 63 68 0D 0A 0D 0A 09 4E 6F 72 6D 61 match.....Norma
000070: 6C 6C 79 2C 20 74 68 65 20 66 69 72 73 74 20 61 lly, the first a
000080: 74 74 65 6D 70 74 20 6D 61 74 63 68 65 73 20 74 ttempt matches t
000090: 68 65 20 73 68 6F 72 74 65 73 74 20 61 63 63 65 he shortest acce
0000A0: 70 74 61 62 6C 65 20 6E 75 6D 62 65 72 0D 0A 09 ptable number...
0000B0: 6F 66 20 63 68 61 72 61 63 74 65 72 73 2E 20 49 of characters. I
0000C0: 6E 20 74 68 69 73 20 63 61 73 65 2C 20 74 6F 20 n this case, to
0000D0: 6D 61 74 63 68 20 6D 6F 72 65 20 63 68 61 72 61 match more chara
0000E0: 63 74 65 72 73 2C 20 62 61 63 6B 74 72 61 63 6B cters, backtrack
0000F0: 69 6E 67 0D 0A 09 6D 75 73 74 20 62 65 20 70 65 ing...must be pe
000100: 72 66 6F 72 6D 65 64 2E 0D 0A 0D 0A 09 49 66 20 rformed......If
000110: 79 6F 75 20 6B 6E 6F 77 20 74 68 61 74 20 6D 61 you know that ma
000120: 74 63 68 69 6E 67 20 74 68 65 20 6D 6F 73 74 20 tching the most
000130: 70 6F 73 73 69 62 6C 65 20 63 68 61 72 61 63 74 possible charact
000140: 65 72 73 20 77 69 6C 6C 20 6E 6F 74 20 63 61 75 ers will not cau
000150: 73 65 0D 0A 09 74 68 65 20 70 61 74 74 65 72 6E se...the pattern
000160: 20 74 6F 20 66 61 69 6C 20 28 66 6F 72 20 65 78 to fail (for ex
000170: 61 6D 70 6C 65 2C 20 77 68 65 6E 20 6D 61 74 63 ample, when matc
000180: 68 69 6E 67 20 69 64 65 6E 74 69 66 69 65 72 73 hing identifiers
000190: 20 69 6E 20 0D 0A 09 4D 6F 64 75 6C 61 2D 32 2C in ...Modula-2,
0001A0: 20 69 6E 20 77 68 69 63 68 20 69 64 65 6E 74 69 in which identi
0001B0: 66 69 65 72 73 20 63 61 6E 6E 6F 74 20 72 75 6E fiers cannot run
0001C0: 20 74 6F 67 65 74 68 65 72 2C 20 74 68 65 6E 20 together, then
0001D0: 73 70 65 63 69 66 79 69 6E 67 0D 0A 09 54 52 55 specifying...TRU
0001E0: 45 20 66 6F 72 20 4C 6F 6E 67 65 73 74 20 77 69 E for Longest wi
0001F0: 6C 6C 20 70 72 6F 64 75 63 65 20 61 20 66 61 73 ll produce a fas
Size : 512 (Real : 512)
000000: 74 65 72 6E 61 74 69 76 65 73 0D 0A 09 09 09 09 ternatives......
000010: 09 09 20 20 20 42 6F 74 68 20 4C 65 66 74 20 61 .. Both Left a
000020: 6E 64 20 52 69 67 68 74 20 61 72 65 20 75 73 65 nd Right are use
000030: 64 0D 0A 09 09 09 09 09 09 20 20 20 66 6F 72 20 d........ for
000040: 43 6F 6E 63 61 6E 74 65 6E 61 74 69 6F 6E 2A 29 Concantenation*)
000050: 0D 0A 09 09 45 4E 44 3B 0D 0A 0D 0A 09 4E 6F 64 ....END;.....Nod
000060: 65 3D 52 45 43 4F 52 44 0D 0A 09 09 43 41 53 45 e=RECORD....CASE
000070: 20 4E 54 79 70 65 3A 4E 6F 64 65 54 79 70 65 20 NType:NodeType
000080: 4F 46 0D 0A 09 09 09 53 74 72 69 6E 67 3A 0D 0A OF.....String:..
000090: 09 09 09 09 54 65 78 74 4C 65 6E 3A 43 41 52 44 ....TextLen:CARD
0000A0: 49 4E 41 4C 3B 0D 0A 09 09 09 09 54 65 78 74 3A INAL;......Text:
0000B0: 41 52 52 41 59 5B 30 2E 2E 30 5D 20 4F 46 20 43 ARRAY[0..0] OF C
0000C0: 48 41 52 3B 0D 0A 09 09 09 09 7C 0D 0A 09 09 09 HAR;......|.....
0000D0: 41 6E 79 4F 66 3A 0D 0A 09 09 09 09 4D 61 74 63 AnyOf:......Matc
0000E0: 68 3A 43 68 61 72 53 65 74 3B 0D 0A 09 09 09 09 h:CharSet;......
0000F0: 4D 69 6E 43 6F 75 6E 74 2C 4D 61 78 43 6F 75 6E MinCount,MaxCoun
000100: 74 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 09 09 t:CARDINAL;.....
000110: 09 46 61 73 74 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A .Fast:BOOLEAN;..
000120: 09 09 09 09 7C 0D 0A 09 09 09 41 6C 74 65 72 6E ....|.....Altern
000130: 61 74 69 76 65 73 2C 43 6F 6E 63 61 74 3A 0D 0A atives,Concat:..
000140: 09 09 09 09 46 69 72 73 74 2C 53 65 63 6F 6E 64 ....First,Second
000150: 3A 50 4E 6F 64 65 3B 0D 0A 09 09 09 09 28 2A 20 :PNode;......(*
000160: 69 66 20 65 69 74 68 65 72 20 69 73 20 6E 75 6C if either is nul
000170: 6C 2C 20 69 74 20 6D 61 74 63 68 65 73 20 74 68 l, it matches th
000180: 65 20 6E 75 6C 6C 20 73 74 72 69 6E 67 2A 29 0D e null string*).
000190: 0A 09 09 09 09 7C 0D 0A 09 09 09 45 4E 44 3B 0D .....|.....END;.
0001A0: 0A 09 09 09 09 0D 0A 09 09 45 4E 44 3B 09 0D 0A .........END;...
0001B0: 0D 0A 28 2A 09 54 68 65 20 66 6F 6C 6C 6F 77 69 ..(*.The followi
0001C0: 6E 67 20 66 75 6E 63 74 69 6F 6E 73 20 72 65 74 ng functions ret
0001D0: 75 72 6E 20 61 20 6E 6F 64 65 20 72 65 70 72 65 urn a node repre
0001E0: 73 65 6E 74 69 6E 67 20 61 20 70 61 74 74 65 72 senting a patter
0001F0: 6E 20 74 6F 20 62 65 0D 0A 09 6D 61 74 63 68 65 n to be...matche
Size : 512 (Real : 512)
000000: 74 65 72 20 70 61 74 74 65 72 6E 20 6D 61 74 63 ter pattern matc
000010: 68 0D 0A 2A 29 0D 0A 0D 0A 50 52 4F 43 45 44 55 h..*)....PROCEDU
000020: 52 45 20 43 72 65 61 74 65 43 6F 6E 63 61 74 4E RE CreateConcatN
000030: 6F 64 65 28 70 2C 71 3A 50 4E 6F 64 65 29 3A 50 ode(p,q:PNode):P
000040: 4E 6F 64 65 3B 0D 0A 0D 0A 28 2A 09 4D 61 74 63 Node;....(*.Matc
000050: 68 20 70 61 74 74 65 72 6E 20 70 20 66 6F 6C 6C h pattern p foll
000060: 6F 77 65 64 20 62 79 20 70 61 74 74 65 72 6E 20 owed by pattern
000070: 71 20 2A 29 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 q *)....PROCEDUR
000080: 45 20 43 72 65 61 74 65 4C 69 6D 69 74 4E 6F 64 E CreateLimitNod
000090: 65 28 29 3A 50 4E 6F 64 65 3B 0D 0A 0D 0A 28 2A e():PNode;....(*
0000A0: 09 4D 61 74 63 68 20 6F 6E 6C 79 20 69 66 20 61 .Match only if a
0000B0: 6C 6C 20 6F 66 20 74 68 65 20 73 74 72 69 6E 67 ll of the string
0000C0: 20 68 61 73 20 62 65 65 6E 20 6D 61 74 63 68 65 has been matche
0000D0: 64 20 0D 0A 0D 0A 09 42 65 77 61 72 65 3A 0D 0A d .....Beware:..
0000E0: 0D 0A 09 09 44 6F 20 6E 6F 74 20 75 73 65 20 61 ....Do not use a
0000F0: 20 6C 69 6D 69 74 20 6E 6F 64 65 20 61 73 20 70 limit node as p
000100: 61 72 74 20 6F 66 20 61 20 70 61 74 74 65 72 6E art of a pattern
000110: 20 77 68 69 63 68 0D 0A 09 09 63 61 6E 20 62 65 which....can be
000120: 20 63 61 6C 6C 65 64 20 72 65 63 75 72 73 69 76 called recursiv
000130: 65 6C 79 20 28 73 75 63 68 20 61 73 20 22 45 22 ely (such as "E"
000140: 20 61 62 6F 76 65 29 2E 20 49 66 20 79 6F 75 20 above). If you
000150: 64 6F 2C 0D 0A 09 09 74 68 65 20 70 61 74 74 65 do,....the patte
000160: 72 6E 20 6D 61 74 63 68 65 72 20 77 69 6C 6C 20 rn matcher will
000170: 61 74 74 65 6D 70 74 20 74 6F 20 6D 61 74 63 68 attempt to match
000180: 20 74 68 65 20 65 6E 64 20 6F 66 20 74 68 65 0D the end of the.
000190: 0A 09 09 73 74 72 69 6E 67 20 6F 6E 20 65 76 65 ...string on eve
0001A0: 72 79 20 72 65 63 75 72 73 69 6F 6E 2C 20 77 68 ry recursion, wh
0001B0: 69 63 68 20 6D 61 79 20 70 72 65 76 65 6E 74 20 ich may prevent
0001C0: 72 65 63 75 72 73 69 6F 6E 20 61 74 20 61 6C 6C recursion at all
0001D0: 0D 0A 0D 0A 2A 29 0D 0A 0D 0A 50 52 4F 43 45 44 ....*)....PROCED
0001E0: 55 52 45 20 4D 61 74 63 68 50 61 74 74 65 72 6E URE MatchPattern
0001F0: 28 70 3A 50 4E 6F 64 65 3B 73 3A 41 52 52 41 59 (p:PNode;s:ARRAY
Size : 512 (Real : 512)
000000: 64 2E 0D 0A 0D 0A 09 53 6F 6D 65 20 6F 66 20 74 d......Some of t
000010: 68 65 20 66 75 6E 63 74 69 6F 6E 73 20 72 65 71 he functions req
000020: 75 69 72 65 20 6F 74 68 65 72 20 70 61 74 74 65 uire other patte
000030: 72 6E 73 20 61 73 20 70 61 72 61 6D 65 74 65 72 rns as parameter
000040: 73 2E 20 54 68 65 73 65 0D 0A 09 63 61 6E 20 62 s. These...can b
000050: 65 20 67 65 6E 65 72 61 74 65 64 20 75 73 69 6E e generated usin
000060: 67 20 6E 65 73 74 65 64 20 66 75 6E 63 74 69 6F g nested functio
000070: 6E 20 63 61 6C 6C 73 2E 0D 0A 0D 0A 09 52 65 63 n calls......Rec
000080: 75 72 73 69 6F 6E 20 69 73 20 70 6F 73 73 69 62 ursion is possib
000090: 6C 65 2C 20 62 75 74 20 73 6F 6D 65 20 65 78 74 le, but some ext
0000A0: 72 61 20 77 6F 72 6B 20 69 73 20 72 65 71 75 69 ra work is requi
0000B0: 72 65 64 20 74 6F 20 64 65 66 69 6E 65 20 61 0D red to define a.
0000C0: 0A 09 72 65 63 75 72 73 69 76 65 20 70 61 74 74 ..recursive patt
0000D0: 65 72 6E 2E 20 59 6F 75 20 6D 75 73 74 20 61 6C ern. You must al
0000E0: 6C 6F 63 61 74 65 20 73 74 6F 72 61 67 65 20 66 locate storage f
0000F0: 6F 72 20 61 20 72 65 63 75 72 73 69 76 65 20 70 or a recursive p
000100: 61 74 74 65 72 6E 0D 0A 09 62 65 66 6F 72 65 20 attern...before
000110: 69 74 20 69 73 20 75 73 65 64 2C 20 61 6E 64 20 it is used, and
000120: 74 68 65 6E 20 61 73 73 69 67 6E 20 69 74 73 20 then assign its
000130: 63 6F 6E 74 65 6E 74 73 20 61 66 74 65 72 20 69 contents after i
000140: 74 20 69 73 20 64 65 66 69 6E 65 64 2E 0D 0A 0D t is defined....
000150: 0A 09 46 6F 72 20 65 78 61 6D 70 6C 65 2C 20 73 ..For example, s
000160: 75 70 70 6F 73 65 20 77 65 20 77 61 6E 74 20 74 uppose we want t
000170: 6F 20 73 65 74 20 75 70 20 61 20 70 61 74 74 65 o set up a patte
000180: 72 6E 20 77 68 69 63 68 20 6D 61 74 63 68 65 73 rn which matches
000190: 20 61 20 73 74 72 69 6E 67 0D 0A 09 6F 66 20 61 a string...of a
0001A0: 27 73 2E 20 54 68 65 20 70 61 74 74 65 72 6E 20 's. The pattern
0001B0: 63 61 6E 20 62 65 20 67 69 76 65 6E 20 62 79 20 can be given by
0001C0: 74 68 65 20 67 72 61 6D 6D 61 72 3A 0D 0A 0D 0A the grammar:....
0001D0: 09 45 2D 3E 61 7C 61 45 0D 0A 0D 0A 09 54 68 69 .E->a|aE.....Thi
0001E0: 73 20 77 6F 75 6C 64 20 62 65 20 73 65 74 20 75 s would be set u
0001F0: 70 20 61 73 20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D p as follows:...
Size : 512 (Real : 512)
000000: 72 74 50 6F 73 3B 0D 0A 09 09 09 52 45 54 55 52 rtPos;.....RETUR
000010: 4E 20 46 41 4C 53 45 0D 0A 09 09 09 7C 09 09 09 N FALSE.....|...
000020: 0D 0A 09 09 09 45 4E 44 20 28 2A 43 41 53 45 2A .....END (*CASE*
000030: 29 0D 0A 09 09 45 4E 44 20 28 2A 57 49 54 48 2A )....END (*WITH*
000040: 29 0D 0A 09 45 4E 44 20 50 3B 0D 0A 42 45 47 49 )...END P;..BEGI
000050: 4E 0D 0A 09 70 3A 3D 71 5E 2E 50 61 74 74 65 72 N...p:=q^.Patter
000060: 6E 4E 6F 64 65 3B 0D 0A 09 49 46 20 50 28 29 20 nNode;...IF P()
000070: 54 48 45 4E 0D 0A 09 09 49 46 20 74 65 6D 70 3C THEN....IF temp<
000080: 3E 4E 49 4C 20 54 48 45 4E 0D 0A 09 09 09 71 5E >NIL THEN.....q^
000090: 3A 3D 74 65 6D 70 5E 3B 0D 0A 09 09 09 44 49 53 :=temp^;.....DIS
0000A0: 50 4F 53 45 28 74 65 6D 70 29 3B 0D 0A 09 09 45 POSE(temp);....E
0000B0: 4C 53 45 0D 0A 20 09 09 20 20 20 20 57 49 54 48 LSE.. .. WITH
0000C0: 20 71 5E 20 44 4F 0D 0A 20 09 09 09 53 74 61 74 q^ DO.. ...Stat
0000D0: 75 73 3A 3D 4D 61 74 63 68 53 74 61 74 75 73 3B us:=MatchStatus;
0000E0: 0D 0A 09 09 09 50 61 74 74 65 72 6E 4E 6F 64 65 .....PatternNode
0000F0: 3A 3D 70 3B 0D 0A 09 09 09 4D 61 74 63 68 65 64 :=p;.....Matched
000100: 41 74 3A 3D 53 74 61 72 74 50 6F 73 3B 0D 0A 09 At:=StartPos;...
000110: 09 09 4D 61 74 63 68 65 64 54 6F 3A 3D 50 6F 73 ..MatchedTo:=Pos
000120: 3B 0D 0A 09 09 09 4C 65 66 74 3A 3D 4D 61 74 63 ;.....Left:=Matc
000130: 68 4C 65 66 74 3B 0D 0A 09 09 09 52 69 67 68 74 hLeft;.....Right
000140: 3A 3D 4D 61 74 63 68 52 69 67 68 74 3B 0D 0A 09 :=MatchRight;...
000150: 09 09 45 4E 44 3B 0D 0A 09 09 20 20 20 20 45 4E ..END;.... EN
000160: 44 3B 0D 0A 09 45 4C 53 45 0D 0A 09 09 44 49 53 D;...ELSE....DIS
000170: 50 4F 53 45 28 71 29 3B 0D 0A 09 09 43 68 61 6E POSE(q);....Chan
000180: 67 65 64 3A 3D 46 41 4C 53 45 3B 0D 0A 09 09 45 ged:=FALSE;....E
000190: 4E 44 3B 0D 0A 09 52 45 54 55 52 4E 20 71 3B 0D ND;...RETURN q;.
0001A0: 0A 09 45 4E 44 20 42 61 63 6B 54 72 61 63 6B 3B ..END BackTrack;
0001B0: 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 50 61 ....PROCEDURE Pa
0001C0: 74 74 65 72 6E 28 70 3A 50 4E 6F 64 65 3B 56 41 ttern(p:PNode;VA
0001D0: 52 20 73 3A 41 52 52 41 59 20 4F 46 20 43 48 41 R s:ARRAY OF CHA
0001E0: 52 3B 56 41 52 20 50 6F 73 3A 43 41 52 44 49 4E R;VAR Pos:CARDIN
0001F0: 41 4C 29 3A 50 53 74 61 74 75 73 3B 0D 0A 0D 0A AL):PStatus;....
Size : 512 (Real : 512)
000000: 74 61 74 75 73 3B 56 41 52 20 73 3A 41 52 52 41 tatus;VAR s:ARRA
000010: 59 20 4F 46 20 43 48 41 52 3B 56 41 52 20 50 6F Y OF CHAR;VAR Po
000020: 73 3A 43 41 52 44 49 4E 41 4C 29 3A 50 53 74 61 s:CARDINAL):PSta
000030: 74 75 73 3B 0D 0A 0D 0A 28 2A 09 70 65 72 66 6F tus;....(*.perfo
000040: 72 6D 20 62 61 63 6B 74 72 61 63 6B 69 6E 67 20 rm backtracking
000050: 61 66 74 65 72 20 61 20 66 61 69 6C 75 72 65 0D after a failure.
000060: 0A 0D 0A 09 52 65 74 75 72 6E 73 20 54 52 55 45 ....Returns TRUE
000070: 20 69 66 20 61 20 6E 65 77 20 6D 61 74 63 68 20 if a new match
000080: 77 61 73 20 66 6F 75 6E 64 20 66 6F 72 20 6E 6F was found for no
000090: 64 65 20 70 0D 0A 0D 0A 09 4F 6E 20 65 6E 74 72 de p.....On entr
0000A0: 79 20 74 68 65 20 66 69 72 73 74 20 74 69 6D 65 y the first time
0000B0: 2C 20 43 68 61 6E 67 65 64 20 6D 75 73 74 20 62 , Changed must b
0000C0: 65 20 66 61 6C 73 65 0D 0A 09 69 74 20 77 69 6C e false...it wil
0000D0: 6C 20 62 65 20 73 65 74 20 74 72 75 65 20 62 79 l be set true by
0000E0: 20 74 68 65 20 66 69 72 73 74 20 6E 6F 64 65 20 the first node
0000F0: 77 68 69 63 68 20 65 78 74 65 6E 64 73 20 69 74 which extends it
000100: 73 20 6D 61 74 63 68 0D 0A 09 48 65 6E 63 65 2C s match...Hence,
000110: 20 43 68 61 6E 67 65 64 20 6D 75 73 74 20 62 65 Changed must be
000120: 20 74 72 75 65 20 69 66 20 62 61 63 6B 74 72 61 true if backtra
000130: 63 6B 69 6D 6E 67 20 69 73 20 63 6F 6D 70 6C 65 ckimng is comple
000140: 74 65 6C 79 20 73 75 63 63 65 73 73 66 75 6C 2A tely successful*
000150: 29 0D 0A 0D 0A 56 41 52 09 63 6F 75 6E 74 3A 43 )....VAR.count:C
000160: 41 52 44 49 4E 41 4C 3B 0D 0A 09 53 74 61 72 74 ARDINAL;...Start
000170: 50 6F 73 2C 4C 61 73 74 50 6F 73 3A 43 41 52 44 Pos,LastPos:CARD
000180: 49 4E 41 4C 3B 0D 0A 09 70 3A 50 4E 6F 64 65 3B INAL;...p:PNode;
000190: 0D 0A 09 53 61 76 65 4D 61 74 63 68 3A 43 41 52 ...SaveMatch:CAR
0001A0: 44 49 4E 41 4C 3B 0D 0A 09 4D 61 74 63 68 4C 65 DINAL;...MatchLe
0001B0: 66 74 2C 4D 61 74 63 68 52 69 67 68 74 3A 50 53 ft,MatchRight:PS
0001C0: 74 61 74 75 73 3B 0D 0A 09 74 65 6D 70 3A 50 53 tatus;...temp:PS
0001D0: 74 61 74 75 73 3B 0D 0A 09 4D 61 74 63 68 53 74 tatus;...MatchSt
0001E0: 61 74 75 73 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A atus:CARDINAL;..
0001F0: 09 53 61 76 65 50 6F 73 3A 43 41 52 44 49 4E 41 .SavePos:CARDINA
Size : 512 (Real : 512)
000000: 53 45 29 2C 0D 0A 09 09 09 45 29 3B 0D 0A 0D 0A SE),.....E);....
000010: 09 77 68 65 72 65 20 45 20 69 73 20 74 68 65 20 .where E is the
000020: 70 61 74 74 65 72 6E 20 74 6F 20 62 65 20 6D 61 pattern to be ma
000030: 74 63 68 65 64 20 69 6E 20 75 6E 2D 61 6E 63 68 tched in un-anch
000040: 6F 72 65 64 20 6D 6F 64 65 2E 0D 0A 0D 0A 09 54 ored mode......T
000050: 68 65 20 74 72 65 65 20 72 65 74 75 72 6E 65 64 he tree returned
000060: 20 62 79 20 74 68 65 20 70 61 74 74 65 72 6E 20 by the pattern
000070: 6D 61 74 63 68 65 72 20 63 6F 6E 74 61 69 6E 73 matcher contains
000080: 2C 20 69 6E 20 65 76 65 72 79 20 6E 6F 64 65 2C , in every node,
000090: 20 74 68 65 0D 0A 09 66 69 72 73 74 20 63 68 61 the...first cha
0000A0: 72 61 63 74 65 72 20 6D 61 74 63 68 65 64 20 62 racter matched b
0000B0: 79 20 74 68 65 20 70 61 74 74 65 72 6E 2C 20 61 y the pattern, a
0000C0: 6E 64 20 74 68 65 20 70 6F 73 69 74 69 6F 6E 20 nd the position
0000D0: 6F 66 20 74 68 65 20 6E 65 78 74 0D 0A 09 63 68 of the next...ch
0000E0: 61 72 61 63 74 65 72 20 66 6F 6C 6C 6F 77 69 6E aracter followin
0000F0: 67 20 74 68 65 20 6D 61 74 63 68 20 28 73 6F 20 g the match (so
000100: 74 68 61 74 20 74 68 65 20 64 69 66 66 65 72 65 that the differe
000110: 6E 63 65 20 62 65 74 77 65 65 6E 20 74 68 65 73 nce between thes
000120: 65 0D 0A 09 74 77 6F 20 76 61 6C 75 65 73 20 67 e...two values g
000130: 69 76 65 73 20 74 68 65 20 6E 75 6D 62 65 72 20 ives the number
000140: 6F 66 20 63 68 61 72 61 63 74 65 72 73 20 6D 61 of characters ma
000150: 74 63 68 65 64 29 2E 0D 0A 0D 0A 09 49 6E 20 61 tched)......In a
000160: 64 64 69 74 69 6F 6E 2C 20 65 61 63 68 20 6E 6F ddition, each no
000170: 64 65 20 63 6F 6E 74 61 69 6E 73 20 61 20 70 6F de contains a po
000180: 69 6E 74 65 72 20 74 6F 20 74 68 65 20 70 61 74 inter to the pat
000190: 74 65 72 6E 20 6E 6F 64 65 20 6D 61 74 63 68 65 tern node matche
0001A0: 64 0D 0A 09 61 6E 64 20 69 74 20 6D 61 79 20 63 d...and it may c
0001B0: 6F 6E 74 61 69 6E 20 70 6F 69 6E 74 65 72 73 20 ontain pointers
0001C0: 74 6F 20 73 75 62 2D 70 61 74 74 65 72 6E 73 20 to sub-patterns
0001D0: 77 68 69 63 68 20 77 65 72 65 20 6D 61 74 63 68 which were match
0001E0: 65 64 2E 0D 0A 0D 0A 2A 29 0D 0A 45 4E 44 20 50 ed.....*)..END P
0001F0: 61 74 74 65 72 6E 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A attern..........
Size : 512 (Real : 512)
000000: 4C 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 50 28 L;..PROCEDURE P(
000010: 29 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 42 45 47 49 ):BOOLEAN;..BEGI
000020: 4E 0D 0A 09 28 2A 20 52 65 63 75 72 73 69 76 65 N...(* Recursive
000030: 6C 79 20 6D 61 74 63 68 20 74 68 65 20 70 61 74 ly match the pat
000040: 74 65 72 6E 20 2A 29 0D 0A 09 57 49 54 48 20 70 tern *)...WITH p
000050: 5E 20 44 4F 0D 0A 20 09 20 20 20 20 50 6F 73 3A ^ DO.. . Pos:
000060: 3D 71 5E 2E 4D 61 74 63 68 65 64 41 74 3B 0D 0A =q^.MatchedAt;..
000070: 09 20 20 20 20 53 74 61 72 74 50 6F 73 3A 3D 50 . StartPos:=P
000080: 6F 73 3B 0D 0A 09 20 20 20 20 74 65 6D 70 3A 3D os;... temp:=
000090: 4E 49 4C 3B 0D 0A 09 20 20 20 20 4D 61 74 63 68 NIL;... Match
0000A0: 53 74 61 74 75 73 3A 3D 71 5E 2E 53 74 61 74 75 Status:=q^.Statu
0000B0: 73 3B 0D 0A 09 20 20 20 20 43 41 53 45 20 4E 54 s;... CASE NT
0000C0: 79 70 65 20 4F 46 0D 0A 09 09 53 74 72 69 6E 67 ype OF....String
0000D0: 2C 52 69 67 68 74 4C 69 6D 69 74 3A 0D 0A 09 09 ,RightLimit:....
0000E0: 09 74 65 6D 70 3A 3D 50 61 74 74 65 72 6E 28 70 .temp:=Pattern(p
0000F0: 2C 73 2C 50 6F 73 29 3B 0D 0A 09 09 09 52 45 54 ,s,Pos);.....RET
000100: 55 52 4E 20 74 65 6D 70 3C 3E 4E 49 4C 3B 0D 0A URN temp<>NIL;..
000110: 09 09 09 7C 20 28 2A 73 74 72 69 6E 67 20 65 74 ...| (*string et
000120: 63 2A 29 0D 0A 09 09 41 6E 79 4F 66 3A 0D 0A 09 c*)....AnyOf:...
000130: 09 09 50 6F 73 3A 3D 71 5E 2E 4D 61 74 63 68 65 ..Pos:=q^.Matche
000140: 64 54 6F 3B 0D 0A 09 09 09 49 46 20 28 4D 61 74 dTo;.....IF (Mat
000150: 63 68 53 74 61 74 75 73 3C 4D 61 78 43 6F 75 6E chStatus<MaxCoun
000160: 74 29 20 41 4E 44 20 28 73 5B 50 6F 73 5D 20 49 t) AND (s[Pos] I
000170: 4E 20 4D 61 74 63 68 29 20 54 48 45 4E 0D 0A 09 N Match) THEN...
000180: 09 09 09 49 4E 43 28 4D 61 74 63 68 53 74 61 74 ...INC(MatchStat
000190: 75 73 29 3B 0D 0A 09 09 09 09 43 68 61 6E 67 65 us);......Change
0001A0: 64 3A 3D 54 52 55 45 3B 0D 0A 09 09 09 09 52 45 d:=TRUE;......RE
0001B0: 54 55 52 4E 20 54 52 55 45 3B 0D 0A 09 09 09 09 TURN TRUE;......
0001C0: 45 4E 44 3B 0D 0A 09 09 09 52 45 54 55 52 4E 20 END;.....RETURN
0001D0: 46 41 4C 53 45 3B 0D 0A 09 09 09 7C 0D 0A 09 09 FALSE;.....|....
0001E0: 41 6C 74 65 72 6E 61 74 69 76 65 73 3A 0D 0A 09 Alternatives:...
0001F0: 09 09 49 46 20 4D 61 74 63 68 53 74 61 74 75 73 ..IF MatchStatus
Size : 512 (Real : 512)
000000: 28 2A 24 6C 2D 2A 29 0D 0A 49 4D 50 4C 45 4D 45 (*$l-*)..IMPLEME
000010: 4E 54 41 54 49 4F 4E 20 4D 4F 44 55 4C 45 20 50 NTATION MODULE P
000020: 61 74 74 65 72 6E 3B 0D 0A 0D 0A 28 2A 09 54 68 attern;....(*.Th
000030: 69 73 20 69 73 20 61 20 70 61 74 74 65 72 6E 20 is is a pattern
000040: 6D 61 74 63 68 69 6E 67 20 6D 6F 64 75 6C 65 0D matching module.
000050: 0A 0D 0A 09 44 61 76 65 20 4D 6F 6F 72 65 2C 20 ....Dave Moore,
000060: 46 54 4C 20 4D 6F 64 75 6C 61 2D 32 0D 0A 0D 0A FTL Modula-2....
000070: 2A 29 0D 0A 0D 0A 46 52 4F 4D 09 53 54 4F 52 41 *)....FROM.STORA
000080: 47 45 20 49 4D 50 4F 52 54 20 41 4C 4C 4F 43 41 GE IMPORT ALLOCA
000090: 54 45 2C 44 45 41 4C 4C 4F 43 41 54 45 3B 0D 0A TE,DEALLOCATE;..
0000A0: 46 52 4F 4D 09 53 74 72 69 6E 67 73 20 49 4D 50 FROM.Strings IMP
0000B0: 4F 52 54 20 4C 65 6E 67 74 68 3B 0D 0A 46 52 4F ORT Length;..FRO
0000C0: 4D 09 53 59 53 54 45 4D 09 49 4D 50 4F 52 54 20 M.SYSTEM.IMPORT
0000D0: 54 53 49 5A 45 3B 0D 0A 56 41 52 09 69 2C 6A 3A TSIZE;..VAR.i,j:
0000E0: 43 41 52 44 49 4E 41 4C 3B 0D 0A 0D 0A 09 43 68 CARDINAL;.....Ch
0000F0: 61 6E 67 65 64 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A anged:BOOLEAN;..
000100: 09 4C 65 6E 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A .Len:CARDINAL;..
000110: 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 72 65 61 ..PROCEDURE Crea
000120: 74 65 53 74 72 69 6E 67 4E 6F 64 65 28 73 3A 41 teStringNode(s:A
000130: 52 52 41 59 20 4F 46 20 43 48 41 52 29 3A 50 4E RRAY OF CHAR):PN
000140: 6F 64 65 3B 0D 0A 56 41 52 09 70 3A 50 4E 6F 64 ode;..VAR.p:PNod
000150: 65 3B 0D 0A 42 45 47 49 4E 0D 0A 0D 0A 28 2A 54 e;..BEGIN....(*T
000160: 68 69 73 20 70 72 6F 63 65 64 75 72 65 20 69 73 his procedure is
000170: 20 70 72 6F 76 69 64 65 64 20 74 6F 20 61 6C 6C provided to all
000180: 6F 77 20 74 68 65 20 63 72 65 61 74 69 6F 6E 20 ow the creation
000190: 6F 66 20 6E 6F 64 65 73 0D 0A 20 20 66 6F 72 20 of nodes.. for
0001A0: 73 74 72 69 6E 67 73 20 65 61 73 69 6C 6C 79 2E strings easilly.
0001B0: 20 4F 6E 6C 79 20 74 68 65 20 72 65 71 75 69 72 Only the requir
0001C0: 65 64 20 61 6D 6F 75 6E 74 20 6F 66 20 6D 65 6D ed amount of mem
0001D0: 6F 72 79 20 69 73 20 61 6C 6C 6F 63 61 74 65 64 ory is allocated
0001E0: 2A 29 0D 0A 0D 0A 09 69 3A 3D 4C 65 6E 67 74 68 *).....i:=Length
0001F0: 28 73 29 3B 0D 0A 09 41 4C 4C 4F 43 41 54 45 28 (s);...ALLOCATE(
Size : 512 (Real : 512)
000000: 3D 31 20 54 48 45 4E 0D 0A 09 09 09 09 4D 61 74 =1 THEN......Mat
000010: 63 68 4C 65 66 74 3A 3D 42 61 63 6B 54 72 61 63 chLeft:=BackTrac
000020: 6B 28 71 5E 2E 4C 65 66 74 2C 73 2C 50 6F 73 29 k(q^.Left,s,Pos)
000030: 3B 0D 0A 09 09 09 09 49 46 20 28 4D 61 74 63 68 ;......IF (Match
000040: 4C 65 66 74 3C 3E 4E 49 4C 29 20 41 4E 44 20 43 Left<>NIL) AND C
000050: 68 61 6E 67 65 64 20 54 48 45 4E 20 0D 0A 09 09 hanged THEN ....
000060: 09 09 09 52 45 54 55 52 4E 20 54 52 55 45 0D 0A ...RETURN TRUE..
000070: 09 09 09 09 45 4C 53 45 0D 0A 09 09 09 09 09 4D ....ELSE.......M
000080: 61 74 63 68 53 74 61 74 75 73 3A 3D 32 3B 0D 0A atchStatus:=2;..
000090: 09 09 09 09 09 43 68 61 6E 67 65 64 3A 3D 54 52 .....Changed:=TR
0000A0: 55 45 3B 0D 0A 09 09 09 09 09 50 6F 73 3A 3D 53 UE;.......Pos:=S
0000B0: 74 61 72 74 50 6F 73 3B 0D 0A 09 09 09 09 09 4D tartPos;.......M
0000C0: 61 74 63 68 4C 65 66 74 3A 3D 50 61 74 74 65 72 atchLeft:=Patter
0000D0: 6E 28 53 65 63 6F 6E 64 2C 73 2C 50 6F 73 29 3B n(Second,s,Pos);
0000E0: 0D 0A 09 09 09 09 09 52 45 54 55 52 4E 20 4D 61 .......RETURN Ma
0000F0: 74 63 68 4C 65 66 74 3C 3E 4E 49 4C 3B 0D 0A 09 tchLeft<>NIL;...
000100: 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 45 4C 53 ....END;.....ELS
000110: 45 20 28 2A 53 74 61 74 75 73 3D 32 2A 29 0D 0A E (*Status=2*)..
000120: 09 09 09 09 4D 61 74 63 68 4C 65 66 74 3A 3D 42 ....MatchLeft:=B
000130: 61 63 6B 54 72 61 63 6B 28 71 5E 2E 4C 65 66 74 ackTrack(q^.Left
000140: 2C 73 2C 50 6F 73 29 3B 0D 0A 09 09 09 09 52 45 ,s,Pos);......RE
000150: 54 55 52 4E 20 4D 61 74 63 68 4C 65 66 74 3C 3E TURN MatchLeft<>
000160: 4E 49 4C 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A NIL;......END;..
000170: 09 09 09 7C 0D 0A 09 09 43 6F 6E 63 61 74 3A 0D ...|....Concat:.
000180: 0A 0D 0A 09 09 09 28 2A 20 73 65 65 20 69 66 20 ......(* see if
000190: 77 65 20 63 61 6E 20 62 61 63 6B 74 72 61 63 6B we can backtrack
0001A0: 20 6F 6E 20 74 68 65 20 73 65 63 6F 6E 64 20 73 on the second s
0001B0: 74 72 69 6E 67 2A 29 0D 0A 0D 0A 09 09 09 50 6F tring*).......Po
0001C0: 73 3A 3D 4D 61 74 63 68 53 74 61 74 75 73 3B 0D s:=MatchStatus;.
0001D0: 0A 09 09 09 4D 61 74 63 68 4C 65 66 74 3A 3D 71 ....MatchLeft:=q
0001E0: 5E 2E 4C 65 66 74 3B 0D 0A 09 09 09 4D 61 74 63 ^.Left;.....Matc
0001F0: 68 52 69 67 68 74 3A 3D 42 61 63 6B 54 72 61 63 hRight:=BackTrac
Size : 512 (Real : 512)
000000: 70 2C 69 2B 33 2A 54 53 49 5A 45 28 43 41 52 44 p,i+3*TSIZE(CARD
000010: 49 4E 41 4C 29 2B 54 53 49 5A 45 28 4E 6F 64 65 INAL)+TSIZE(Node
000020: 54 79 70 65 29 29 3B 0D 0A 09 57 49 54 48 20 70 Type));...WITH p
000030: 5E 20 44 4F 0D 0A 09 09 46 4F 52 20 6A 3A 3D 30 ^ DO....FOR j:=0
000040: 20 54 4F 20 69 2D 31 20 44 4F 20 0D 0A 09 09 09 TO i-1 DO .....
000050: 54 65 78 74 5B 6A 5D 3A 3D 73 5B 6A 5D 20 0D 0A Text[j]:=s[j] ..
000060: 09 09 09 45 4E 44 3B 0D 0A 09 09 54 65 78 74 4C ...END;....TextL
000070: 65 6E 3A 3D 69 3B 0D 0A 09 09 4E 54 79 70 65 3A en:=i;....NType:
000080: 3D 53 74 72 69 6E 67 3B 0D 0A 09 09 45 4E 44 3B =String;....END;
000090: 0D 0A 09 52 45 54 55 52 4E 20 70 3B 0D 0A 09 45 ...RETURN p;...E
0000A0: 4E 44 20 43 72 65 61 74 65 53 74 72 69 6E 67 4E ND CreateStringN
0000B0: 6F 64 65 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 ode;..PROCEDURE
0000C0: 43 72 65 61 74 65 41 6C 74 4E 6F 64 65 28 6D 2C CreateAltNode(m,
0000D0: 71 3A 50 4E 6F 64 65 29 3A 50 4E 6F 64 65 3B 0D q:PNode):PNode;.
0000E0: 0A 56 41 52 09 70 3A 50 4E 6F 64 65 3B 0D 0A 42 .VAR.p:PNode;..B
0000F0: 45 47 49 4E 0D 0A 09 4E 45 57 28 70 29 3B 0D 0A EGIN...NEW(p);..
000100: 09 57 49 54 48 20 70 5E 20 44 4F 0D 0A 09 09 4E .WITH p^ DO....N
000110: 54 79 70 65 3A 3D 41 6C 74 65 72 6E 61 74 69 76 Type:=Alternativ
000120: 65 73 3B 0D 0A 09 09 46 69 72 73 74 3A 3D 6D 3B es;....First:=m;
000130: 0D 0A 09 09 53 65 63 6F 6E 64 3A 3D 71 3B 0D 0A ....Second:=q;..
000140: 09 09 45 4E 44 3B 0D 0A 09 52 45 54 55 52 4E 20 ..END;...RETURN
000150: 70 0D 0A 09 45 4E 44 20 43 72 65 61 74 65 41 6C p...END CreateAl
000160: 74 4E 6F 64 65 3B 0D 0A 50 52 4F 43 45 44 55 52 tNode;..PROCEDUR
000170: 45 20 43 72 65 61 74 65 41 6E 79 4F 66 4E 6F 64 E CreateAnyOfNod
000180: 65 28 73 3A 43 68 61 72 53 65 74 3B 6D 69 6E 2C e(s:CharSet;min,
000190: 6D 61 78 3A 43 41 52 44 49 4E 41 4C 3B 4C 6F 6E max:CARDINAL;Lon
0001A0: 67 65 73 74 3A 42 4F 4F 4C 45 41 4E 29 3A 50 4E gest:BOOLEAN):PN
0001B0: 6F 64 65 3B 0D 0A 56 41 52 09 70 3A 50 4E 6F 64 ode;..VAR.p:PNod
0001C0: 65 3B 0D 0A 42 45 47 49 4E 0D 0A 09 4E 45 57 28 e;..BEGIN...NEW(
0001D0: 70 29 3B 0D 0A 09 57 49 54 48 20 70 5E 20 44 4F p);...WITH p^ DO
0001E0: 0D 0A 09 09 4E 54 79 70 65 3A 3D 41 6E 79 4F 66 ....NType:=AnyOf
0001F0: 3B 0D 0A 09 09 4D 69 6E 43 6F 75 6E 74 3A 3D 6D ;....MinCount:=m
Size : 512 (Real : 512)
000000: 6B 28 71 5E 2E 52 69 67 68 74 2C 73 2C 50 6F 73 k(q^.Right,s,Pos
000010: 29 3B 0D 0A 09 09 09 49 46 20 28 4D 61 74 63 68 );.....IF (Match
000020: 52 69 67 68 74 3C 3E 4E 49 4C 29 20 41 4E 44 20 Right<>NIL) AND
000030: 43 68 61 6E 67 65 64 20 54 48 45 4E 0D 0A 09 09 Changed THEN....
000040: 09 09 52 45 54 55 52 4E 20 54 52 55 45 0D 0A 09 ..RETURN TRUE...
000050: 09 09 09 45 4E 44 3B 0D 0A 09 09 09 50 6F 73 3A ...END;.....Pos:
000060: 3D 71 5E 2E 4D 61 74 63 68 65 64 41 74 3B 0D 0A =q^.MatchedAt;..
000070: 09 09 09 0D 0A 09 09 09 28 2A 20 69 66 20 6E 6F ........(* if no
000080: 74 2C 20 74 72 79 20 74 6F 20 62 61 63 6B 74 72 t, try to backtr
000090: 61 63 6B 20 74 68 65 20 66 69 72 73 74 20 73 74 ack the first st
0000A0: 72 69 6E 67 0D 0A 09 09 09 20 20 20 75 6E 74 69 ring..... unti
0000B0: 6C 20 74 68 65 20 73 65 63 6F 6E 64 20 73 74 72 l the second str
0000C0: 69 6E 67 20 6D 61 74 63 68 65 73 2A 29 09 09 09 ing matches*)...
0000D0: 0D 0A 09 09 09 43 68 61 6E 67 65 64 3A 3D 46 41 .....Changed:=FA
0000E0: 4C 53 45 3B 0D 0A 09 09 09 53 61 76 65 50 6F 73 LSE;.....SavePos
0000F0: 3A 3D 50 6F 73 3B 0D 0A 09 09 09 4C 4F 4F 50 0D :=Pos;.....LOOP.
000100: 0A 09 09 09 09 50 6F 73 3A 3D 53 61 76 65 50 6F .....Pos:=SavePo
000110: 73 3B 0D 0A 09 09 09 09 4D 61 74 63 68 4C 65 66 s;......MatchLef
000120: 74 3A 3D 42 61 63 6B 54 72 61 63 6B 28 71 5E 2E t:=BackTrack(q^.
000130: 4C 65 66 74 2C 73 2C 50 6F 73 29 3B 0D 0A 09 09 Left,s,Pos);....
000140: 09 09 49 46 20 28 4D 61 74 63 68 4C 65 66 74 3D ..IF (MatchLeft=
000150: 4E 49 4C 29 20 4F 52 20 4E 4F 54 20 43 68 61 6E NIL) OR NOT Chan
000160: 67 65 64 20 54 48 45 4E 20 45 58 49 54 20 45 4E ged THEN EXIT EN
000170: 44 3B 0D 0A 09 09 09 09 4D 61 74 63 68 52 69 67 D;......MatchRig
000180: 68 74 3A 3D 50 61 74 74 65 72 6E 28 53 65 63 6F ht:=Pattern(Seco
000190: 6E 64 2C 73 2C 50 6F 73 29 3B 0D 0A 09 09 09 09 nd,s,Pos);......
0001A0: 49 46 20 4D 61 74 63 68 52 69 67 68 74 3C 3E 4E IF MatchRight<>N
0001B0: 49 4C 20 54 48 45 4E 0D 0A 09 09 09 09 09 52 45 IL THEN.......RE
0001C0: 54 55 52 4E 20 54 52 55 45 0D 0A 09 09 09 09 09 TURN TRUE.......
0001D0: 45 4E 44 3B 0D 0A 09 09 09 09 43 68 61 6E 67 65 END;......Change
0001E0: 64 3A 3D 46 41 4C 53 45 3B 0D 0A 09 09 09 09 45 d:=FALSE;......E
0001F0: 4E 44 3B 0D 0A 09 09 09 50 6F 73 3A 3D 53 74 61 ND;.....Pos:=Sta
Size : 512 (Real : 512)
000000: 69 6E 3B 0D 0A 09 09 4D 61 78 43 6F 75 6E 74 3A in;....MaxCount:
000010: 3D 6D 61 78 3B 0D 0A 09 09 46 61 73 74 3A 3D 4C =max;....Fast:=L
000020: 6F 6E 67 65 73 74 3B 0D 0A 09 09 4D 61 74 63 68 ongest;....Match
000030: 3A 3D 73 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 52 :=s;....END;...R
000040: 45 54 55 52 4E 20 70 0D 0A 09 45 4E 44 20 43 72 ETURN p...END Cr
000050: 65 61 74 65 41 6E 79 4F 66 4E 6F 64 65 3B 0D 0A eateAnyOfNode;..
000060: 50 52 4F 43 45 44 55 52 45 20 43 72 65 61 74 65 PROCEDURE Create
000070: 43 6F 6E 63 61 74 4E 6F 64 65 28 6D 2C 71 3A 50 ConcatNode(m,q:P
000080: 4E 6F 64 65 29 3A 50 4E 6F 64 65 3B 0D 0A 56 41 Node):PNode;..VA
000090: 52 09 70 3A 50 4E 6F 64 65 3B 0D 0A 42 45 47 49 R.p:PNode;..BEGI
0000A0: 4E 0D 0A 09 4E 45 57 28 70 29 3B 0D 0A 09 57 49 N...NEW(p);...WI
0000B0: 54 48 20 70 5E 20 44 4F 0D 0A 09 09 4E 54 79 70 TH p^ DO....NTyp
0000C0: 65 3A 3D 43 6F 6E 63 61 74 3B 0D 0A 09 09 46 69 e:=Concat;....Fi
0000D0: 72 73 74 3A 3D 6D 3B 0D 0A 09 09 53 65 63 6F 6E rst:=m;....Secon
0000E0: 64 3A 3D 71 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 d:=q;....END;...
0000F0: 52 45 54 55 52 4E 20 70 0D 0A 09 45 4E 44 20 43 RETURN p...END C
000100: 72 65 61 74 65 43 6F 6E 63 61 74 4E 6F 64 65 3B reateConcatNode;
000110: 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 72 ....PROCEDURE Cr
000120: 65 61 74 65 4C 69 6D 69 74 4E 6F 64 65 28 29 3A eateLimitNode():
000130: 50 4E 6F 64 65 3B 0D 0A 56 41 52 09 70 3A 50 4E PNode;..VAR.p:PN
000140: 6F 64 65 3B 0D 0A 42 45 47 49 4E 0D 0A 09 4E 45 ode;..BEGIN...NE
000150: 57 28 70 29 3B 0D 0A 09 70 5E 2E 4E 54 79 70 65 W(p);...p^.NType
000160: 3A 3D 52 69 67 68 74 4C 69 6D 69 74 3B 0D 0A 09 :=RightLimit;...
000170: 52 45 54 55 52 4E 20 70 3B 0D 0A 09 45 4E 44 20 RETURN p;...END
000180: 43 72 65 61 74 65 4C 69 6D 69 74 4E 6F 64 65 3B CreateLimitNode;
000190: 0D 0A 50 52 4F 43 45 44 55 52 45 20 50 61 74 74 ..PROCEDURE Patt
0001A0: 65 72 6E 28 70 3A 50 4E 6F 64 65 3B 56 41 52 20 ern(p:PNode;VAR
0001B0: 73 3A 41 52 52 41 59 20 4F 46 20 43 48 41 52 3B s:ARRAY OF CHAR;
0001C0: 56 41 52 20 50 6F 73 3A 43 41 52 44 49 4E 41 4C VAR Pos:CARDINAL
0001D0: 29 3A 50 53 74 61 74 75 73 3B 46 4F 52 57 41 52 ):PStatus;FORWAR
0001E0: 44 3B 0D 0A 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 D;......PROCEDUR
0001F0: 45 20 42 61 63 6B 54 72 61 63 6B 28 71 3A 50 53 E BackTrack(q:PS
Size : 512 (Real : 512)
000000: 49 6E 63 72 65 6D 65 6E 74 3D 31 3B 09 28 2A 6E Increment=1;.(*n
000010: 75 6D 62 65 72 20 6F 66 20 62 79 74 65 73 20 62 umber of bytes b
000020: 65 74 77 65 65 6E 20 63 68 61 72 61 63 74 65 72 etween character
000030: 73 2A 29 0D 0A 09 53 63 72 65 65 6E 53 69 7A 65 s*)...ScreenSize
000040: 3D 38 30 2A 32 34 3B 09 28 2A 6E 75 6D 62 65 72 =80*24;.(*number
000050: 20 6F 66 20 62 79 74 65 73 20 69 6E 20 73 63 72 of bytes in scr
000060: 65 65 6E 20 61 72 65 61 2A 29 0D 0A 0D 0A 09 43 een area*).....C
000070: 52 3D 30 64 78 3B 09 09 09 28 2A 43 61 72 72 69 R=0dx;...(*Carri
000080: 61 67 65 20 72 65 74 75 72 6E 2A 29 0D 0A 09 4C age return*)...L
000090: 46 3D 30 61 78 3B 09 09 09 28 2A 4C 69 6E 65 20 F=0ax;...(*Line
0000A0: 66 65 65 64 2A 29 0D 0A 09 54 41 42 3D 30 39 78 feed*)...TAB=09x
0000B0: 3B 09 09 28 2A 54 41 42 2A 29 0D 0A 09 42 53 3D ;..(*TAB*)...BS=
0000C0: 30 38 78 3B 0D 0A 56 41 52 0D 0A 09 42 75 66 66 08x;..VAR...Buff
0000D0: 65 72 3A 41 52 52 41 59 5B 30 2E 2E 31 32 35 5D er:ARRAY[0..125]
0000E0: 20 4F 46 20 42 59 54 45 3B 20 28 2A 42 75 66 66 OF BYTE; (*Buff
0000F0: 65 72 20 66 6F 72 20 75 70 20 74 6F 20 61 20 6C er for up to a l
000100: 69 6E 65 20 2A 29 0D 0A 09 42 61 73 65 41 64 64 ine *)...BaseAdd
000110: 72 3A 43 41 52 44 49 4E 41 4C 3D 30 42 30 30 30 r:CARDINAL=0B000
000120: 68 3B 20 28 2A 73 65 67 20 61 64 64 72 65 73 73 h; (*seg address
000130: 20 6F 66 20 61 64 61 70 74 65 72 20 2D 20 63 68 of adapter - ch
000140: 61 6E 67 65 20 66 6F 72 20 63 6F 6C 6F 75 72 2A ange for colour*
000150: 29 0D 0A 09 42 75 66 66 65 72 52 6F 77 3A 43 41 )...BufferRow:CA
000160: 52 44 49 4E 41 4C 3B 09 28 2A 52 6F 77 20 42 65 RDINAL;.(*Row Be
000170: 69 6E 67 20 73 61 76 65 64 20 2A 29 0D 0A 09 42 ing saved *)...B
000180: 75 66 66 65 72 43 6F 6C 3A 43 41 52 44 49 4E 41 ufferCol:CARDINA
000190: 4C 3B 09 28 2A 53 74 61 72 74 20 43 6F 6C 75 6D L;.(*Start Colum
0001A0: 6E 2A 29 0D 0A 09 42 75 66 66 65 72 43 6F 75 6E n*)...BufferCoun
0001B0: 74 3A 43 41 52 44 49 4E 41 4C 3D 30 3B 20 28 2A t:CARDINAL=0; (*
0001C0: 45 4E 74 72 69 65 73 20 69 6E 20 62 75 66 66 65 ENtries in buffe
0001D0: 72 20 2A 29 09 0D 0A 09 41 74 74 72 69 62 75 74 r *)....Attribut
0001E0: 65 73 3A 43 41 52 44 49 4E 41 4C 3D 37 3B 0D 0A es:CARDINAL=7;..
0001F0: 09 53 63 72 65 65 6E 50 6F 73 3A 43 41 52 44 49 .ScreenPos:CARDI
Size : 512 (Real : 512)
000000: 09 09 45 4E 44 3B 0D 0A 09 52 45 54 55 52 4E 20 ..END;...RETURN
000010: 51 3B 0D 0A 09 45 4E 44 20 50 61 74 74 65 72 6E Q;...END Pattern
000020: 3B 0D 0A 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 ;......PROCEDURE
000030: 20 4D 61 74 63 68 50 61 74 74 65 72 6E 28 70 3A MatchPattern(p:
000040: 50 4E 6F 64 65 3B 73 3A 41 52 52 41 59 20 4F 46 PNode;s:ARRAY OF
000050: 20 43 48 41 52 29 3A 50 53 74 61 74 75 73 3B 0D CHAR):PStatus;.
000060: 0A 0D 0A 28 2A 09 4D 61 74 63 68 20 61 20 50 61 ...(*.Match a Pa
000070: 74 74 65 72 6E 20 0D 0A 09 70 20 69 73 20 74 68 ttern ...p is th
000080: 65 20 72 6F 6F 74 20 6F 66 20 74 68 65 20 70 61 e root of the pa
000090: 74 74 65 72 6E 20 74 6F 20 6D 61 74 63 68 0D 0A ttern to match..
0000A0: 09 73 20 69 73 20 74 68 65 20 74 65 78 74 20 74 .s is the text t
0000B0: 6F 20 6D 61 74 63 68 0D 0A 0D 0A 09 54 68 65 20 o match.....The
0000C0: 66 75 6E 63 74 69 6F 6E 20 72 65 74 75 72 6E 73 function returns
0000D0: 20 74 72 75 65 20 6F 6E 6C 79 20 69 66 20 74 68 true only if th
0000E0: 65 20 73 74 72 69 6E 67 20 6D 61 74 63 68 65 73 e string matches
0000F0: 0D 0A 09 63 6F 6D 70 6C 65 74 65 6C 79 2E 0D 0A ...completely...
000100: 0D 0A 09 4F 66 20 63 6F 75 72 73 65 2C 20 79 6F ...Of course, yo
000110: 75 20 63 61 6E 20 61 6C 77 61 79 73 20 75 73 65 u can always use
000120: 64 20 72 65 70 65 61 74 65 64 20 73 65 74 73 20 d repeated sets
000130: 6F 66 20 61 6E 79 74 68 69 6E 67 0D 0A 09 61 74 of anything...at
000140: 20 74 68 65 20 62 65 67 69 6E 6E 69 6E 67 20 61 the beginning a
000150: 6E 64 2E 6F 72 20 65 6E 64 20 6F 66 20 61 20 73 nd.or end of a s
000160: 74 72 69 6E 67 20 69 6E 20 6F 72 64 65 72 20 74 tring in order t
000170: 6F 0D 0A 09 6D 61 74 63 68 20 6F 6E 6C 79 20 70 o...match only p
000180: 61 72 74 20 6F 66 20 61 20 73 74 72 69 6E 67 2A art of a string*
000190: 29 0D 0A 0D 0A 56 41 52 09 50 6F 73 3A 43 41 52 )....VAR.Pos:CAR
0001A0: 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 4E 0D 0A 09 DINAL;..BEGIN...
0001B0: 50 6F 73 3A 3D 30 3B 0D 0A 09 4C 65 6E 3A 3D 4C Pos:=0;...Len:=L
0001C0: 65 6E 67 74 68 28 73 29 3B 0D 0A 09 52 45 54 55 ength(s);...RETU
0001D0: 52 4E 20 50 61 74 74 65 72 6E 28 70 2C 73 2C 50 RN Pattern(p,s,P
0001E0: 6F 73 29 3B 0D 0A 09 45 4E 44 20 4D 61 74 63 68 os);...END Match
0001F0: 50 61 74 74 65 72 6E 3B 0D 0A 45 4E 44 20 50 61 Pattern;..END Pa
Size : 512 (Real : 512)
000000: 28 2A 09 54 68 69 73 20 70 72 6F 63 65 64 75 72 (*.This procedur
000010: 65 20 6D 61 74 63 68 65 73 20 66 6F 72 77 61 72 e matches forwar
000020: 64 20 2A 29 0D 0A 56 41 52 09 63 6F 75 6E 74 3A d *)..VAR.count:
000030: 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 53 74 61 72 CARDINAL;...Star
000040: 74 50 6F 73 2C 4C 61 73 74 50 6F 73 3A 43 41 52 tPos,LastPos:CAR
000050: 44 49 4E 41 4C 3B 0D 0A 09 53 61 76 65 4D 61 74 DINAL;...SaveMat
000060: 63 68 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 51 ch:CARDINAL;...Q
000070: 3A 50 53 74 61 74 75 73 3B 0D 0A 09 4D 61 74 63 :PStatus;...Matc
000080: 68 53 74 61 74 75 73 3A 43 41 52 44 49 4E 41 4C hStatus:CARDINAL
000090: 3B 0D 0A 09 4D 61 74 63 68 4C 65 66 74 2C 4D 61 ;...MatchLeft,Ma
0000A0: 74 63 68 52 69 67 68 74 3A 50 53 74 61 74 75 73 tchRight:PStatus
0000B0: 3B 0D 0A 09 53 61 76 65 50 6F 73 3A 43 41 52 44 ;...SavePos:CARD
0000C0: 49 4E 41 4C 3B 0D 0A 50 52 4F 43 45 44 55 52 45 INAL;..PROCEDURE
0000D0: 20 50 28 29 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 42 P():BOOLEAN;..B
0000E0: 45 47 49 4E 0D 0A 09 28 2A 20 52 65 63 75 72 73 EGIN...(* Recurs
0000F0: 69 76 65 6C 79 20 6D 61 74 63 68 20 74 68 65 20 ively match the
000100: 70 61 74 74 65 72 6E 20 2A 29 0D 0A 09 57 49 54 pattern *)...WIT
000110: 48 20 70 5E 20 44 4F 0D 0A 09 20 20 20 20 53 74 H p^ DO... St
000120: 61 72 74 50 6F 73 3A 3D 50 6F 73 3B 0D 0A 09 20 artPos:=Pos;...
000130: 20 20 20 43 41 53 45 20 4E 54 79 70 65 20 4F 46 CASE NType OF
000140: 0D 0A 09 09 53 74 72 69 6E 67 3A 0D 0A 09 09 09 ....String:.....
000150: 49 46 20 28 4C 65 6E 2D 50 6F 73 29 3C 54 65 78 IF (Len-Pos)<Tex
000160: 74 4C 65 6E 20 54 48 45 4E 20 52 45 54 55 52 4E tLen THEN RETURN
000170: 20 46 41 4C 53 45 0D 0A 09 09 09 45 4C 53 45 0D FALSE.....ELSE.
000180: 0A 09 09 09 09 69 3A 3D 30 3B 0D 0A 09 09 09 09 .....i:=0;......
000190: 57 48 49 4C 45 20 28 69 3C 54 65 78 74 4C 65 6E WHILE (i<TextLen
0001A0: 29 20 41 4E 44 20 28 73 5B 50 6F 73 5D 3D 54 65 ) AND (s[Pos]=Te
0001B0: 78 74 5B 69 5D 29 20 44 4F 0D 0A 09 09 09 09 09 xt[i]) DO.......
0001C0: 49 4E 43 28 50 6F 73 29 3B 0D 0A 09 09 09 09 09 INC(Pos);.......
0001D0: 49 4E 43 28 69 29 3B 0D 0A 09 09 09 09 09 45 4E INC(i);.......EN
0001E0: 44 3B 0D 0A 09 09 09 09 49 46 20 69 3D 54 65 78 D;......IF i=Tex
0001F0: 74 4C 65 6E 20 54 48 45 4E 20 0D 0A 09 09 09 09 tLen THEN ......
Size : 512 (Real : 512)
000000: 74 74 65 72 6E 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A ttern...........
000010: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000020: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000030: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000040: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000050: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000060: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000070: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000080: 0A 09 09 4C 65 6E 67 74 68 3A 3D 53 6C 6F 74 73 ...Length:=Slots
000090: 20 44 49 56 20 34 3B 0D 0A 09 09 53 74 61 72 74 DIV 4;....Start
0000A0: 53 65 63 74 6F 72 3A 3D 30 3B 0D 0A 09 09 45 4E Sector:=0;....EN
0000B0: 44 3B 0D 0A 09 4E 65 78 74 53 65 63 74 6F 72 3A D;...NextSector:
0000C0: 3D 53 6C 6F 74 73 20 44 49 56 20 34 3B 0D 0A 09 =Slots DIV 4;...
0000D0: 45 4E 44 20 47 65 74 53 6C 6F 74 43 6F 75 6E 74 END GetSlotCount
0000E0: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 4F 70 65 ;..PROCEDURE Ope
0000F0: 6E 4C 69 62 72 61 72 79 3B 0D 0A 28 2A 09 6F 70 nLibrary;..(*.op
000100: 65 6E 20 74 68 65 20 6C 69 62 72 61 72 79 20 66 en the library f
000110: 69 6C 65 20 2A 29 0D 0A 42 45 47 49 4E 0D 0A 09 ile *)..BEGIN...
000120: 57 72 69 74 65 53 74 72 69 6E 67 28 27 20 45 6E WriteString(' En
000130: 74 65 72 20 6E 61 6D 65 20 6F 66 20 6C 69 62 72 ter name of libr
000140: 61 72 79 20 66 69 6C 65 3A 27 29 3B 0D 0A 09 52 ary file:');...R
000150: 65 61 64 53 74 72 69 6E 67 28 4C 69 62 4E 61 6D eadString(LibNam
000160: 65 29 3B 0D 0A 09 4C 6F 6F 6B 75 70 28 4C 69 62 e);...Lookup(Lib
000170: 2C 4C 69 62 4E 61 6D 65 2C 72 65 70 6C 79 29 3B ,LibName,reply);
000180: 0D 0A 09 49 46 20 72 65 70 6C 79 3C 3E 30 20 54 ...IF reply<>0 T
000190: 48 45 4E 0D 0A 09 09 57 72 69 74 65 53 74 72 69 HEN....WriteStri
0001A0: 6E 67 28 27 20 43 6F 75 6C 64 20 6E 6F 74 20 66 ng(' Could not f
0001B0: 69 6E 64 20 74 68 61 74 20 66 69 6C 65 20 2D 20 ind that file -
0001C0: 63 72 65 61 74 65 20 69 74 20 3F 27 29 3B 0D 0A create it ?');..
0001D0: 09 09 49 46 20 59 65 73 28 29 20 54 48 45 4E 0D ..IF Yes() THEN.
0001E0: 0A 09 09 09 43 72 65 61 74 65 28 4C 69 62 2C 4C ....Create(Lib,L
0001F0: 69 62 4E 61 6D 65 2C 72 65 70 6C 79 29 3B 0D 0A ibName,reply);..
Size : 512 (Real : 512)
000000: 09 52 45 54 55 52 4E 20 54 52 55 45 0D 0A 09 09 .RETURN TRUE....
000010: 09 09 45 4C 53 45 0D 0A 09 09 09 09 09 50 6F 73 ..ELSE.......Pos
000020: 3A 3D 50 6F 73 2D 69 3B 0D 0A 09 09 09 09 09 52 :=Pos-i;.......R
000030: 45 54 55 52 4E 20 46 41 4C 53 45 3B 0D 0A 09 09 ETURN FALSE;....
000040: 09 09 09 45 4E 44 3B 0D 0A 09 09 09 09 45 4E 44 ...END;......END
000050: 3B 28 2A 20 6C 6F 6E 67 20 65 6E 6F 75 67 68 20 ;(* long enough
000060: 74 6F 20 6D 61 74 63 68 2A 29 0D 0A 09 09 09 7C to match*).....|
000070: 20 28 2A 73 74 72 69 6E 67 2A 29 0D 0A 09 09 41 (*string*)....A
000080: 6E 79 4F 66 3A 09 4D 61 74 63 68 53 74 61 74 75 nyOf:.MatchStatu
000090: 73 3A 3D 30 3B 0D 0A 09 09 09 57 48 49 4C 45 20 s:=0;.....WHILE
0000A0: 28 4D 61 74 63 68 53 74 61 74 75 73 3C 4D 69 6E (MatchStatus<Min
0000B0: 43 6F 75 6E 74 29 20 41 4E 44 20 28 73 5B 50 6F Count) AND (s[Po
0000C0: 73 5D 20 49 4E 20 4D 61 74 63 68 29 20 44 4F 0D s] IN Match) DO.
0000D0: 0A 09 09 09 09 49 4E 43 28 50 6F 73 29 3B 0D 0A .....INC(Pos);..
0000E0: 09 09 09 09 49 4E 43 28 4D 61 74 63 68 53 74 61 ....INC(MatchSta
0000F0: 74 75 73 29 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D tus);......END;.
000100: 0A 09 09 09 49 46 20 46 61 73 74 20 54 48 45 4E ....IF Fast THEN
000110: 0D 0A 09 09 09 09 57 48 49 4C 45 20 28 4D 61 74 ......WHILE (Mat
000120: 63 68 53 74 61 74 75 73 3C 4D 61 78 43 6F 75 6E chStatus<MaxCoun
000130: 74 29 20 41 4E 44 20 28 73 5B 50 6F 73 5D 20 49 t) AND (s[Pos] I
000140: 4E 20 4D 61 74 63 68 29 20 44 4F 0D 0A 09 09 09 N Match) DO.....
000150: 09 09 49 4E 43 28 50 6F 73 29 3B 0D 0A 09 09 09 ..INC(Pos);.....
000160: 09 09 49 4E 43 28 4D 61 74 63 68 53 74 61 74 75 ..INC(MatchStatu
000170: 73 29 3B 0D 0A 09 09 09 09 09 45 4E 44 3B 0D 0A s);.......END;..
000180: 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 52 45 54 ....END;.....RET
000190: 55 52 4E 20 4D 61 74 63 68 53 74 61 74 75 73 3E URN MatchStatus>
0001A0: 3D 4D 69 6E 43 6F 75 6E 74 3B 0D 0A 09 09 09 7C =MinCount;.....|
0001B0: 0D 0A 09 09 41 6C 74 65 72 6E 61 74 69 76 65 73 ....Alternatives
0001C0: 3A 0D 0A 09 09 09 09 4D 61 74 63 68 4C 65 66 74 :......MatchLeft
0001D0: 3A 3D 50 61 74 74 65 72 6E 28 46 69 72 73 74 2C :=Pattern(First,
0001E0: 73 2C 50 6F 73 29 0D 0A 09 09 09 09 49 46 20 20 s,Pos)......IF
0001F0: 4D 61 74 63 68 4C 65 66 74 3C 3E 4E 49 4C 20 54 MatchLeft<>NIL T
Size : 512 (Real : 512)
000000: 49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D IMPLEMENTATION M
000010: 4F 44 55 4C 45 20 53 63 72 65 65 6E 49 4F 3B 0D ODULE ScreenIO;.
000020: 0A 0D 0A 28 2A 09 54 68 69 73 20 69 73 20 74 68 ...(*.This is th
000030: 65 20 45 61 72 74 68 20 43 50 45 4D 20 76 65 72 e Earth CPEM ver
000040: 73 69 6F 6E 20 6F 66 20 53 63 72 65 65 6E 49 4F sion of ScreenIO
000050: 0D 0A 0D 0A 09 59 6F 75 20 6E 65 65 64 20 72 65 .....You need re
000060: 76 20 30 2E 32 32 20 6F 72 20 6C 61 74 65 72 20 v 0.22 or later
000070: 6F 66 20 43 50 45 4D 20 74 6F 20 75 73 65 20 74 of CPEM to use t
000080: 68 69 73 20 70 72 6F 67 72 61 6D 0D 0A 09 49 74 his program...It
000090: 20 75 73 65 73 20 69 6E 74 20 31 36 68 20 74 6F uses int 16h to
0000A0: 20 70 65 72 66 6F 72 6D 20 49 4F 2C 20 73 6F 20 perform IO, so
0000B0: 79 6F 75 72 20 6D 61 63 68 69 6E 65 20 6D 75 73 your machine mus
0000C0: 74 20 62 65 20 49 42 4D 20 0D 0A 09 63 6F 6D 70 t be IBM ...comp
0000D0: 61 74 69 62 6C 65 20 61 74 20 74 68 65 20 42 49 atible at the BI
0000E0: 4F 53 20 6C 65 76 65 6C 0D 0A 0D 0A 09 54 68 69 OS level.....Thi
0000F0: 73 20 69 73 20 61 20 73 6C 69 67 68 74 6C 79 20 s is a slightly
000100: 6D 6F 64 69 66 69 65 64 20 76 65 72 73 69 6F 6E modified version
000110: 20 6F 66 20 53 63 72 65 65 6E 49 4F 2E 49 42 4D of ScreenIO.IBM
000120: 20 77 68 69 63 68 20 77 69 6C 6C 0D 0A 09 62 65 which will...be
000130: 20 61 76 61 69 6C 61 62 6C 65 20 77 68 65 6E 20 available when
000140: 74 68 65 20 4D 53 44 4F 53 20 76 65 72 73 69 6F the MSDOS versio
000150: 6E 20 6F 66 20 74 68 65 20 63 6F 6D 70 69 6C 65 n of the compile
000160: 72 20 69 73 20 72 75 6E 6E 69 6E 67 0D 0A 0D 0A r is running....
000170: 09 54 68 65 20 64 69 66 66 65 72 65 6E 63 65 20 .The difference
000180: 69 73 20 74 68 61 74 20 74 68 69 73 20 76 65 72 is that this ver
000190: 73 69 6F 6E 20 62 75 66 66 65 72 73 20 73 63 72 sion buffers scr
0001A0: 65 65 6E 20 6F 75 74 70 75 74 20 69 6E 20 6F 72 een output in or
0001B0: 64 65 72 20 74 6F 0D 0A 09 73 70 65 65 64 20 75 der to...speed u
0001C0: 70 20 73 63 72 65 65 6E 20 6F 75 74 70 75 74 2C p screen output,
0001D0: 20 61 73 20 63 68 61 72 61 63 74 65 72 20 61 74 as character at
0001E0: 20 61 20 74 69 6D 65 20 77 61 73 20 74 6F 6F 20 a time was too
0001F0: 73 6C 6F 77 0D 0A 2A 29 0D 0A 0D 0A 46 52 4F 4D slow..*)....FROM
Size : 512 (Real : 512)
000000: 48 45 4E 20 0D 0A 09 09 09 09 09 4D 61 74 63 68 HEN .......Match
000010: 53 74 61 74 75 73 3A 3D 31 3B 0D 0A 09 09 09 09 Status:=1;......
000020: 09 52 45 54 55 52 4E 20 54 52 55 45 0D 0A 09 09 .RETURN TRUE....
000030: 09 09 45 4C 53 45 0D 0A 09 09 09 09 09 0D 0A 09 ..ELSE..........
000040: 09 09 09 09 4D 61 74 63 68 53 74 61 74 75 73 3A ....MatchStatus:
000050: 3D 32 3B 0D 0A 09 09 09 09 09 4D 61 74 63 68 4C =2;.......MatchL
000060: 65 66 74 3A 3D 50 61 74 74 65 72 6E 28 53 65 63 eft:=Pattern(Sec
000070: 6F 6E 64 2C 73 2C 50 6F 73 29 3B 20 0D 0A 09 09 ond,s,Pos); ....
000080: 09 09 09 52 45 54 55 52 4E 20 4D 61 74 63 68 4C ...RETURN MatchL
000090: 65 66 74 3C 3E 4E 49 4C 0D 0A 09 09 09 09 09 45 eft<>NIL.......E
0000A0: 4E 44 3B 0D 0A 09 09 09 7C 0D 0A 09 09 43 6F 6E ND;.....|....Con
0000B0: 63 61 74 3A 0D 0A 09 09 09 4D 61 74 63 68 4C 65 cat:.....MatchLe
0000C0: 66 74 3A 3D 50 61 74 74 65 72 6E 28 46 69 72 73 ft:=Pattern(Firs
0000D0: 74 2C 73 2C 50 6F 73 29 3B 0D 0A 09 09 09 49 46 t,s,Pos);.....IF
0000E0: 20 4D 61 74 63 68 4C 65 66 74 3C 3E 4E 49 4C 20 MatchLeft<>NIL
0000F0: 54 48 45 4E 0D 0A 09 09 09 09 4D 61 74 63 68 53 THEN......MatchS
000100: 74 61 74 75 73 3A 3D 50 6F 73 3B 0D 0A 09 09 09 tatus:=Pos;.....
000110: 09 4D 61 74 63 68 52 69 67 68 74 3A 3D 50 61 74 .MatchRight:=Pat
000120: 74 65 72 6E 28 53 65 63 6F 6E 64 2C 73 2C 50 6F tern(Second,s,Po
000130: 73 29 3B 0D 0A 09 09 09 09 49 46 20 4D 61 74 63 s);......IF Matc
000140: 68 52 69 67 68 74 3C 3E 4E 49 4C 20 54 48 45 4E hRight<>NIL THEN
000150: 0D 0A 09 09 09 09 09 52 45 54 55 52 4E 20 54 52 .......RETURN TR
000160: 55 45 0D 0A 09 09 09 09 09 45 4E 44 3B 0D 0A 09 UE.......END;...
000170: 09 09 09 43 68 61 6E 67 65 64 3A 3D 46 41 4C 53 ...Changed:=FALS
000180: 45 3B 0D 0A 09 09 09 09 53 61 76 65 50 6F 73 3A E;......SavePos:
000190: 3D 50 6F 73 3B 0D 0A 09 09 09 09 4C 4F 4F 50 0D =Pos;......LOOP.
0001A0: 0A 09 09 09 09 09 50 6F 73 3A 3D 53 61 76 65 50 ......Pos:=SaveP
0001B0: 6F 73 3B 0D 0A 09 09 09 09 09 4D 61 74 63 68 4C os;.......MatchL
0001C0: 65 66 74 3A 3D 42 61 63 6B 54 72 61 63 6B 28 4D eft:=BackTrack(M
0001D0: 61 74 63 68 4C 65 66 74 2C 73 2C 50 6F 73 29 3B atchLeft,s,Pos);
0001E0: 0D 0A 09 09 09 09 09 49 46 20 28 4D 61 74 63 68 .......IF (Match
0001F0: 4C 65 66 74 3D 4E 49 4C 29 20 4F 52 20 4E 4F 54 Left=NIL) OR NOT
Size : 512 (Real : 512)
000000: 20 54 65 72 6D 69 6E 61 6C 20 49 4D 50 4F 52 54 Terminal IMPORT
000010: 20 43 68 61 72 52 6F 75 74 69 6E 65 2C 43 68 61 CharRoutine,Cha
000020: 72 45 6E 61 62 6C 65 64 2C 42 6C 69 6E 6B 52 6F rEnabled,BlinkRo
000030: 75 74 69 6E 65 2C 42 6C 69 6E 6B 45 6E 61 62 6C utine,BlinkEnabl
000040: 65 64 3B 0D 0A 46 52 4F 4D 20 53 59 53 54 45 4D ed;..FROM SYSTEM
000050: 20 49 4D 50 4F 52 54 20 41 44 52 2C 53 49 5A 45 IMPORT ADR,SIZE
000060: 3B 0D 0A 46 52 4F 4D 20 43 50 4D 20 49 4D 50 4F ;..FROM CPM IMPO
000070: 52 54 20 77 63 63 66 63 2C 42 44 4F 53 3B 0D 0A RT wccfc,BDOS;..
000080: 46 52 4F 4D 20 49 6E 74 4C 6F 67 69 63 20 49 4D FROM IntLogic IM
000090: 50 4F 52 54 20 49 41 4E 44 3B 0D 0A 46 52 4F 4D PORT IAND;..FROM
0000A0: 20 53 79 73 43 61 6C 6C 20 49 4D 50 4F 52 54 20 SysCall IMPORT
0000B0: 49 6E 74 2C 50 61 63 6B 65 74 2C 52 65 61 64 4F Int,Packet,ReadO
0000C0: 72 57 72 69 74 65 3B 0D 0A 0D 0A 28 2A 09 53 63 rWrite;....(*.Sc
0000D0: 72 65 65 6E 20 68 61 6E 64 6C 69 6E 67 20 72 6F reen handling ro
0000E0: 75 74 69 6E 65 73 20 66 6F 72 20 63 75 72 73 6F utines for curso
0000F0: 72 20 70 6F 73 69 74 69 6F 6E 2C 20 61 74 74 72 r position, attr
000100: 69 62 75 74 65 20 65 74 63 0D 0A 0D 0A 09 53 70 ibute etc.....Sp
000110: 65 63 69 66 69 63 20 74 6F 20 74 68 69 73 20 63 ecific to this c
000120: 6F 6D 70 69 6C 65 72 2A 29 0D 0A 0D 0A 43 4F 4E ompiler*)....CON
000130: 53 54 09 4C 6F 67 53 63 72 65 65 6E 57 69 64 74 ST.LogScreenWidt
000140: 68 3D 38 30 3B 09 28 2A 4C 6F 67 69 63 61 6C 20 h=80;.(*Logical
000150: 73 63 72 65 65 6E 20 77 69 64 74 68 20 0D 0A 09 screen width ...
000160: 09 09 09 28 6D 61 6E 79 20 70 65 6F 70 6C 65 20 ...(many people
000170: 6F 6E 6C 79 20 68 61 76 65 20 38 30 29 2A 29 0D only have 80)*).
000180: 0A 09 52 6F 77 57 69 64 74 68 3D 38 30 3B 09 09 ..RowWidth=80;..
000190: 28 2A 77 69 64 74 68 20 6F 66 20 6D 65 6D 6F 72 (*width of memor
0001A0: 79 20 66 6F 72 20 6F 6E 65 20 72 6F 77 20 0D 0A y for one row ..
0001B0: 09 09 09 09 28 69 2E 65 2E 20 6E 75 6D 62 65 72 ....(i.e. number
0001C0: 20 6F 66 20 62 79 74 65 73 2A 29 0D 0A 09 4C 6F of bytes*)...Lo
0001D0: 67 53 63 72 65 65 6E 44 65 70 74 68 3D 32 34 3B gScreenDepth=24;
0001E0: 09 09 28 2A 4C 69 6E 65 73 20 6F 6E 20 74 68 65 ..(*Lines on the
0001F0: 20 73 63 72 65 65 6E 2A 29 0D 0A 09 43 68 61 72 screen*)...Char
Size : 512 (Real : 512)
000000: 20 43 68 61 6E 67 65 64 20 54 48 45 4E 0D 0A 09 Changed THEN...
000010: 09 09 09 09 09 45 58 49 54 0D 0A 09 09 09 09 09 .....EXIT.......
000020: 09 45 4E 44 3B 0D 0A 09 09 09 09 09 4D 61 74 63 .END;.......Matc
000030: 68 52 69 67 68 74 3A 3D 50 61 74 74 65 72 6E 28 hRight:=Pattern(
000040: 53 65 63 6F 6E 64 2C 73 2C 50 6F 73 29 0D 0A 09 Second,s,Pos)...
000050: 09 09 09 09 49 46 20 4D 61 74 63 68 52 69 67 68 ....IF MatchRigh
000060: 74 3C 3E 4E 49 4C 20 54 48 45 4E 0D 0A 09 09 09 t<>NIL THEN.....
000070: 09 09 09 52 45 54 55 52 4E 20 54 52 55 45 0D 0A ...RETURN TRUE..
000080: 09 09 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 09 ......END;......
000090: 09 43 68 61 6E 67 65 64 3A 3D 46 41 4C 53 45 3B .Changed:=FALSE;
0000A0: 0D 0A 09 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 .......END;.....
0000B0: 09 45 4E 44 3B 0D 0A 09 09 09 50 6F 73 3A 3D 53 .END;.....Pos:=S
0000C0: 74 61 72 74 50 6F 73 3B 0D 0A 09 09 09 52 45 54 tartPos;.....RET
0000D0: 55 52 4E 20 46 41 4C 53 45 0D 0A 09 09 09 7C 09 URN FALSE.....|.
0000E0: 09 09 0D 0A 09 09 52 69 67 68 74 4C 69 6D 69 74 ......RightLimit
0000F0: 3A 0D 0A 09 09 09 52 45 54 55 52 4E 20 50 6F 73 :.....RETURN Pos
000100: 3D 4C 65 6E 0D 0A 09 09 09 45 4E 44 3B 20 28 2A =Len.....END; (*
000110: 43 41 53 45 2A 29 0D 0A 09 09 45 4E 44 20 28 2A CASE*)....END (*
000120: 57 49 54 48 2A 29 0D 0A 09 45 4E 44 20 50 3B 0D WITH*)...END P;.
000130: 0A 42 45 47 49 4E 0D 0A 09 49 46 20 50 28 29 20 .BEGIN...IF P()
000140: 54 48 45 4E 0D 0A 09 09 4E 45 57 28 51 29 3B 0D THEN....NEW(Q);.
000150: 0A 09 09 57 49 54 48 20 51 5E 20 44 4F 0D 0A 09 ...WITH Q^ DO...
000160: 09 09 53 74 61 74 75 73 3A 3D 4D 61 74 63 68 53 ..Status:=MatchS
000170: 74 61 74 75 73 3B 0D 0A 09 09 09 50 61 74 74 65 tatus;.....Patte
000180: 72 6E 4E 6F 64 65 3A 3D 70 3B 0D 0A 09 09 09 4D rnNode:=p;.....M
000190: 61 74 63 68 65 64 41 74 3A 3D 53 74 61 72 74 50 atchedAt:=StartP
0001A0: 6F 73 3B 0D 0A 09 09 09 4D 61 74 63 68 65 64 54 os;.....MatchedT
0001B0: 6F 3A 3D 50 6F 73 3B 0D 0A 09 09 09 4C 65 66 74 o:=Pos;.....Left
0001C0: 3A 3D 4D 61 74 63 68 4C 65 66 74 3B 0D 0A 09 09 :=MatchLeft;....
0001D0: 09 52 69 67 68 74 3A 3D 4D 61 74 63 68 52 69 67 .Right:=MatchRig
0001E0: 68 74 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 45 ht;.....END;...E
0001F0: 4C 53 45 0D 0A 09 09 51 3A 3D 4E 49 4C 3B 0D 0A LSE....Q:=NIL;..
Size : 512 (Real : 512)
000000: 6E 65 65 64 20 61 6C 74 65 72 61 74 69 6F 6E 20 need alteration
000010: 66 6F 72 20 76 61 72 69 6F 75 73 20 6D 61 63 68 for various mach
000020: 69 6E 65 73 2A 29 0D 0A 42 45 47 49 4E 0D 0A 20 ines*)..BEGIN..
000030: 20 20 20 49 46 20 4F 75 74 70 75 74 45 6E 61 62 IF OutputEnab
000040: 6C 65 64 20 54 48 45 4E 0D 0A 09 46 6C 75 73 68 led THEN...Flush
000050: 42 75 66 66 65 72 3B 0D 0A 09 43 6C 65 61 72 43 Buffer;...ClearC
000060: 75 72 73 6F 72 3B 0D 0A 09 43 41 53 45 20 73 20 ursor;...CASE s
000070: 4F 46 0D 0A 09 44 69 6D 3A 48 61 6C 66 49 6E 74 OF...Dim:HalfInt
000080: 65 6E 73 69 74 79 3A 3D 54 52 55 45 7C 0D 0A 09 ensity:=TRUE|...
000090: 42 72 69 67 68 74 3A 09 48 61 6C 66 49 6E 74 65 Bright:.HalfInte
0000A0: 6E 73 69 74 79 3A 3D 46 41 4C 53 45 0D 0A 09 09 nsity:=FALSE....
0000B0: 45 6E 68 61 6E 63 65 64 56 69 64 65 6F 3A 3D 54 EnhancedVideo:=T
0000C0: 52 55 45 7C 0D 0A 09 4E 6F 72 6D 61 6C 3A 09 48 RUE|...Normal:.H
0000D0: 61 6C 66 49 6E 74 65 6E 73 69 74 79 3A 3D 46 41 alfIntensity:=FA
0000E0: 4C 53 45 3B 0D 0A 09 09 45 6E 68 61 6E 63 65 64 LSE;....Enhanced
0000F0: 56 69 64 65 6F 3A 3D 46 41 4C 53 45 3B 0D 0A 09 Video:=FALSE;...
000100: 09 49 6E 76 65 72 73 65 56 69 64 65 6F 3A 3D 46 .InverseVideo:=F
000110: 41 4C 53 45 3B 0D 0A 09 09 42 6C 69 6E 6B 69 6E ALSE;....Blinkin
000120: 67 3A 3D 46 41 4C 53 45 3B 0D 0A 09 09 55 6E 64 g:=FALSE;....Und
000130: 65 72 4C 69 6E 65 3A 3D 46 41 4C 53 45 7C 0D 0A erLine:=FALSE|..
000140: 09 49 6E 76 65 72 73 65 3A 49 6E 76 65 72 73 65 .Inverse:Inverse
000150: 56 69 64 65 6F 3A 3D 54 52 55 45 7C 0D 0A 09 42 Video:=TRUE|...B
000160: 6C 69 6E 6B 3A 42 6C 69 6E 6B 69 6E 67 3A 3D 54 link:Blinking:=T
000170: 52 55 45 7C 0D 0A 09 53 74 61 72 74 47 72 61 70 RUE|...StartGrap
000180: 68 2C 45 6E 64 47 72 61 70 68 3A 28 2A 64 6F 20 h,EndGraph:(*do
000190: 6E 6F 74 68 69 6E 67 2A 29 7C 0D 0A 09 44 65 6C nothing*)|...Del
0001A0: 43 68 61 72 3A 28 2A 4D 6F 76 65 20 72 65 73 74 Char:(*Move rest
0001B0: 20 6F 66 20 6C 69 6E 65 20 75 70 20 6F 6E 65 2C of line up one,
0001C0: 20 61 64 64 20 62 6C 61 6E 6B 20 74 6F 20 65 6E add blank to en
0001D0: 64 2A 29 0D 0A 09 09 69 3A 3D 43 6F 6C 4E 6F 3B d*)....i:=ColNo;
0001E0: 0D 0A 09 09 46 4F 52 20 6A 3A 3D 43 6F 6C 4E 6F ....FOR j:=ColNo
0001F0: 20 54 4F 20 52 6F 77 57 69 64 74 68 2D 32 20 44 TO RowWidth-2 D
Size : 512 (Real : 512)
000000: 61 72 64 27 20 53 63 72 65 65 6E 20 69 73 20 38 ard' Screen is 8
000010: 30 20 62 79 20 32 34 2E 20 54 68 65 20 6C 69 6D 0 by 24. The lim
000020: 69 74 20 69 73 20 73 65 74 20 62 79 0D 0A 09 09 it is set by....
000030: 74 68 65 20 74 65 72 6D 69 6E 61 6C 20 64 65 66 the terminal def
000040: 69 6E 69 74 69 6F 6E 20 66 69 6C 65 09 2A 29 0D inition file.*).
000050: 0A 42 45 47 49 4E 0D 0A 20 20 20 20 49 46 20 4F .BEGIN.. IF O
000060: 75 74 70 75 74 45 6E 61 62 6C 65 64 20 54 48 45 utputEnabled THE
000070: 4E 0D 0A 09 43 6C 65 61 72 43 75 72 73 6F 72 3B N...ClearCursor;
000080: 0D 0A 09 43 6F 6C 4E 6F 3A 3D 78 3B 0D 0A 09 52 ...ColNo:=x;...R
000090: 6F 77 4E 6F 3A 3D 79 3B 0D 0A 09 53 63 72 65 65 owNo:=y;...Scree
0000A0: 6E 50 6F 73 3A 3D 43 6F 6C 4E 6F 2B 52 6F 77 4E nPos:=ColNo+RowN
0000B0: 6F 2A 43 68 61 72 49 6E 63 72 65 6D 65 6E 74 2A o*CharIncrement*
0000C0: 52 6F 77 57 69 64 74 68 3B 0D 0A 09 49 46 20 53 RowWidth;...IF S
0000D0: 63 72 65 65 6E 50 6F 73 3E 3D 53 63 72 65 65 6E creenPos>=Screen
0000E0: 53 69 7A 65 20 54 48 45 4E 0D 0A 09 09 43 6F 6C Size THEN....Col
0000F0: 4E 6F 3A 3D 30 3B 0D 0A 09 09 52 6F 77 4E 6F 3A No:=0;....RowNo:
000100: 3D 30 3B 0D 0A 09 09 53 63 72 65 65 6E 50 6F 73 =0;....ScreenPos
000110: 3A 3D 30 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 :=0;....END;...E
000120: 4E 44 3B 0D 0A 20 20 20 20 46 6C 75 73 68 42 75 ND;.. FlushBu
000130: 66 66 65 72 3B 0D 0A 20 20 20 20 45 4E 44 20 47 ffer;.. END G
000140: 6F 74 6F 78 79 3B 0D 0A 0D 0A 50 52 4F 43 45 44 otoxy;....PROCED
000150: 55 52 45 20 50 75 74 61 6E 64 49 6E 63 28 63 68 URE PutandInc(ch
000160: 3A 43 48 41 52 29 3B 0D 0A 0D 0A 28 2A 09 6F 75 :CHAR);....(*.ou
000170: 74 70 75 74 20 61 20 63 68 61 72 61 63 74 65 72 tput a character
000180: 20 61 6E 64 20 69 6E 63 72 65 6D 65 6E 74 20 70 and increment p
000190: 6F 69 6E 74 65 72 73 2A 29 0D 0A 0D 0A 42 45 47 ointers*)....BEG
0001A0: 49 4E 0D 0A 09 49 46 20 42 75 66 66 65 72 43 6F IN...IF BufferCo
0001B0: 75 6E 74 3D 30 20 54 48 45 4E 0D 0A 09 09 42 75 unt=0 THEN....Bu
0001C0: 66 66 65 72 52 6F 77 3A 3D 52 6F 77 4E 6F 3B 0D fferRow:=RowNo;.
0001D0: 0A 09 09 42 75 66 66 65 72 43 6F 6C 3A 3D 43 6F ...BufferCol:=Co
0001E0: 6C 4E 6F 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 49 lNo;....END;...I
0001F0: 46 20 28 42 75 66 66 65 72 52 6F 77 3C 3E 52 6F F (BufferRow<>Ro
Size : 512 (Real : 512)
000000: 4E 41 4C 3B 09 28 2A 6E 65 78 74 20 63 68 61 72 NAL;.(*next char
000010: 61 63 74 65 72 20 70 6F 73 69 74 69 6F 6E 20 6F acter position o
000020: 6E 20 73 63 72 65 65 6E 2A 29 0D 0A 09 43 6F 6C n screen*)...Col
000030: 4E 6F 2C 52 6F 77 4E 6F 3A 43 41 52 44 49 4E 41 No,RowNo:CARDINA
000040: 4C 3B 09 28 2A 77 68 69 63 68 20 72 65 70 72 65 L;.(*which repre
000050: 73 65 6E 74 73 20 74 68 65 20 67 69 76 65 6E 20 sents the given
000060: 70 6F 73 69 74 69 6F 6E 2A 29 0D 0A 0D 0A 09 28 position*).....(
000070: 2A 09 43 6F 6E 74 72 6F 6C 20 61 74 74 72 69 62 *.Control attrib
000080: 75 74 65 73 2A 29 0D 0A 0D 0A 09 48 61 6C 66 49 utes*).....HalfI
000090: 6E 74 65 6E 73 69 74 79 3A 42 4F 4F 4C 45 41 4E ntensity:BOOLEAN
0000A0: 3D 46 41 4C 53 45 3B 09 28 2A 74 72 75 65 20 69 =FALSE;.(*true i
0000B0: 66 20 69 6E 20 68 61 6C 66 20 69 6E 74 65 6E 73 f in half intens
0000C0: 69 74 79 20 6D 6F 64 65 2A 29 0D 0A 09 45 6E 68 ity mode*)...Enh
0000D0: 61 6E 63 65 64 56 69 64 65 6F 3A 42 4F 4F 4C 45 ancedVideo:BOOLE
0000E0: 41 4E 3D 46 41 4C 53 45 3B 0D 0A 09 55 6E 64 65 AN=FALSE;...Unde
0000F0: 72 4C 69 6E 65 3A 42 4F 4F 4C 45 41 4E 3D 46 41 rLine:BOOLEAN=FA
000100: 4C 53 45 3B 09 28 2A 74 72 75 65 20 69 66 20 69 LSE;.(*true if i
000110: 6E 20 75 6E 64 65 72 6C 69 6E 65 20 6D 6F 64 65 n underline mode
000120: 2A 29 0D 0A 09 49 6E 76 65 72 73 65 56 69 64 65 *)...InverseVide
000130: 6F 3A 42 4F 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B o:BOOLEAN=FALSE;
000140: 0D 0A 09 42 6C 69 6E 6B 69 6E 67 3A 42 4F 4F 4C ...Blinking:BOOL
000150: 45 41 4E 3D 46 41 4C 53 45 3B 0D 0A 09 69 2C 6A EAN=FALSE;...i,j
000160: 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 63 68 3A :CARDINAL;...ch:
000170: 43 48 41 52 3B 0D 0A 0D 0A 28 2A 09 54 68 65 20 CHAR;....(*.The
000180: 6E 65 78 74 20 66 65 77 20 72 6F 75 74 69 6E 65 next few routine
000190: 73 20 68 61 6E 64 6C 65 20 74 68 65 20 63 75 72 s handle the cur
0001A0: 73 6F 72 0D 0A 0D 0A 09 57 61 73 55 6E 64 65 72 sor.....WasUnder
0001B0: 4C 69 6E 65 64 20 69 73 20 74 72 75 65 20 69 66 Lined is true if
0001C0: 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 75 the character u
0001D0: 6E 64 65 72 20 74 68 65 20 63 75 72 73 6F 72 0D nder the cursor.
0001E0: 0A 09 73 74 61 72 74 65 64 20 6F 75 74 20 75 6E ..started out un
0001F0: 64 65 72 6C 69 6E 65 64 0D 0A 09 0D 0A 09 54 69 derlined......Ti
Size : 512 (Real : 512)
000000: 77 4E 6F 29 20 4F 52 20 28 42 75 66 66 65 72 43 wNo) OR (BufferC
000010: 6F 6C 2A 32 2B 42 75 66 66 65 72 43 6F 75 6E 74 ol*2+BufferCount
000020: 3C 3E 32 2A 43 6F 6C 4E 6F 29 0D 0A 09 09 4F 52 <>2*ColNo)....OR
000030: 20 28 42 75 66 66 65 72 43 6F 75 6E 74 3D 31 32 (BufferCount=12
000040: 36 29 20 54 48 45 4E 20 0D 0A 09 09 46 6C 75 73 6) THEN ....Flus
000050: 68 42 75 66 66 65 72 3B 0D 0A 09 09 45 4E 44 3B hBuffer;....END;
000060: 0D 0A 09 49 46 20 42 75 66 66 65 72 43 6F 75 6E ...IF BufferCoun
000070: 74 3D 30 20 54 48 45 4E 0D 0A 09 09 42 75 66 66 t=0 THEN....Buff
000080: 65 72 52 6F 77 3A 3D 52 6F 77 4E 6F 3B 0D 0A 09 erRow:=RowNo;...
000090: 09 42 75 66 66 65 72 43 6F 6C 3A 3D 43 6F 6C 4E .BufferCol:=ColN
0000A0: 6F 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 42 75 66 o;....END;...Buf
0000B0: 66 65 72 5B 42 75 66 66 65 72 43 6F 75 6E 74 5D fer[BufferCount]
0000C0: 3A 3D 4F 52 44 28 63 68 29 3B 0D 0A 09 49 4E 43 :=ORD(ch);...INC
0000D0: 28 42 75 66 66 65 72 43 6F 75 6E 74 29 3B 0D 0A (BufferCount);..
0000E0: 09 42 75 66 66 65 72 5B 42 75 66 66 65 72 43 6F .Buffer[BufferCo
0000F0: 75 6E 74 5D 3A 3D 41 74 74 72 69 62 75 74 65 73 unt]:=Attributes
000100: 3B 0D 0A 09 49 4E 43 28 42 75 66 66 65 72 43 6F ;...INC(BufferCo
000110: 75 6E 74 29 3B 0D 0A 09 53 63 72 65 65 6E 50 6F unt);...ScreenPo
000120: 73 3A 3D 53 63 72 65 65 6E 50 6F 73 2B 43 68 61 s:=ScreenPos+Cha
000130: 72 49 6E 63 72 65 6D 65 6E 74 3B 0D 0A 09 49 4E rIncrement;...IN
000140: 43 28 43 6F 6C 4E 6F 29 3B 0D 0A 09 49 46 20 43 C(ColNo);...IF C
000150: 6F 6C 4E 6F 3E 3D 4C 6F 67 53 63 72 65 65 6E 57 olNo>=LogScreenW
000160: 69 64 74 68 20 54 48 45 4E 0D 0A 09 09 49 46 20 idth THEN....IF
000170: 52 6F 77 4E 6F 3C 28 4C 6F 67 53 63 72 65 65 6E RowNo<(LogScreen
000180: 44 65 70 74 68 2D 31 29 20 54 48 45 4E 0D 0A 09 Depth-1) THEN...
000190: 09 09 49 4E 43 28 52 6F 77 4E 6F 29 3B 0D 0A 09 ..INC(RowNo);...
0001A0: 09 09 43 6F 6C 4E 6F 3A 3D 30 3B 0D 0A 09 09 45 ..ColNo:=0;....E
0001B0: 4C 53 45 0D 0A 09 09 09 44 45 43 28 43 6F 6C 4E LSE.....DEC(ColN
0001C0: 6F 29 3B 0D 0A 09 09 09 44 45 43 28 53 63 72 65 o);.....DEC(Scre
0001D0: 65 6E 50 6F 73 29 3B 0D 0A 09 09 09 45 4E 44 3B enPos);.....END;
0001E0: 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 50 ....END;...END P
0001F0: 75 74 61 6E 64 49 6E 63 3B 0D 0A 0D 0A 50 52 4F utandInc;....PRO
Size : 512 (Real : 512)
000000: 6D 65 54 6F 43 68 61 6E 67 65 20 69 73 20 61 20 meToChange is a
000010: 63 6F 75 6E 74 65 72 20 74 68 61 74 20 64 65 74 counter that det
000020: 65 72 6D 69 6E 65 73 20 77 68 65 6E 20 74 68 65 ermines when the
000030: 20 63 75 72 73 6F 72 20 73 68 6F 75 6C 64 0D 0A cursor should..
000040: 09 62 65 20 63 68 61 6E 67 65 64 20 66 72 6F 6D .be changed from
000050: 20 69 74 73 20 63 75 72 72 65 6E 74 20 76 61 6C its current val
000060: 75 65 20 74 6F 20 69 74 73 20 6E 65 67 61 74 69 ue to its negati
000070: 76 65 2C 20 74 6F 20 61 6C 6C 6F 77 20 62 6C 69 ve, to allow bli
000080: 6E 6B 69 6E 67 0D 0A 2A 29 0D 0A 56 41 52 09 57 nking..*)..VAR.W
000090: 61 73 55 6E 64 65 72 4C 69 6E 65 64 3A 42 4F 4F asUnderLined:BOO
0000A0: 4C 45 41 4E 3D 46 41 4C 53 45 3B 0D 0A 09 54 69 LEAN=FALSE;...Ti
0000B0: 6D 65 54 6F 43 68 61 6E 67 65 3A 49 4E 54 45 47 meToChange:INTEG
0000C0: 45 52 3D 30 3B 0D 0A 09 4F 75 74 70 75 74 45 6E ER=0;...OutputEn
0000D0: 61 62 6C 65 64 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A abled:BOOLEAN;..
0000E0: 09 70 3A 50 61 63 6B 65 74 3B 0D 0A 28 2A 09 42 .p:Packet;..(*.B
0000F0: 6C 69 6E 6B 20 63 75 72 73 6F 72 20 2D 20 64 65 link cursor - de
000100: 63 72 65 6D 65 6E 74 20 74 69 6D 65 72 2C 20 69 crement timer, i
000110: 66 20 6E 65 67 61 74 69 76 65 20 72 65 73 65 74 f negative reset
000120: 20 61 6E 64 0D 0A 09 63 68 61 6E 67 65 20 74 6F and...change to
000130: 70 20 62 69 74 20 6F 66 20 63 68 61 72 61 63 74 p bit of charact
000140: 65 72 20 75 6E 64 65 72 20 63 75 72 73 6F 72 2A er under cursor*
000150: 29 0D 0A 50 52 4F 43 45 44 55 52 45 20 53 65 74 )..PROCEDURE Set
000160: 43 75 72 73 6F 72 3B 0D 0A 42 45 47 49 4E 0D 0A Cursor;..BEGIN..
000170: 28 2A 09 4D 6F 76 65 20 63 75 72 73 6F 72 20 74 (*.Move cursor t
000180: 6F 20 63 75 72 72 65 6E 74 20 73 63 72 65 65 6E o current screen
000190: 20 70 6F 73 69 74 69 6F 6E 20 2A 29 0D 0A 0D 0A position *)....
0001A0: 09 57 49 54 48 20 70 20 44 4F 0D 0A 09 09 41 58 .WITH p DO....AX
0001B0: 3A 3D 30 32 30 30 68 3B 0D 0A 09 09 44 58 3A 3D :=0200h;....DX:=
0001C0: 32 35 36 2A 52 6F 77 4E 6F 2B 43 6F 6C 4E 6F 3B 256*RowNo+ColNo;
0001D0: 0D 0A 09 09 42 58 3A 3D 30 3B 0D 0A 09 09 45 4E ....BX:=0;....EN
0001E0: 44 3B 0D 0A 09 49 6E 74 28 70 29 3B 0D 0A 09 0D D;...Int(p);....
0001F0: 0A 0D 0A 28 2A 09 57 61 73 55 6E 64 65 72 4C 69 ...(*.WasUnderLi
Size : 512 (Real : 512)
000000: 43 45 44 55 52 45 20 57 72 69 74 65 28 63 68 3A CEDURE Write(ch:
000010: 43 48 41 52 29 3B 0D 0A 28 2A 09 57 72 69 74 65 CHAR);..(*.Write
000020: 20 61 20 63 68 61 72 61 63 74 65 72 0D 0A 0D 0A a character....
000030: 09 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 .This routine is
000040: 20 75 73 65 64 20 62 79 20 74 65 72 6D 69 6E 61 used by termina
000050: 6C 20 77 68 65 6E 20 74 68 69 73 20 76 65 72 73 l when this vers
000060: 69 6F 6E 20 6F 66 20 53 63 72 65 65 6E 49 4F 20 ion of ScreenIO
000070: 0D 0A 09 69 73 20 69 6E 20 75 73 65 20 62 65 63 ...is in use bec
000080: 61 75 73 65 20 61 20 66 6C 61 67 20 69 73 20 73 ause a flag is s
000090: 65 74 20 62 79 20 74 68 65 20 69 6E 69 74 69 61 et by the initia
0000A0: 6C 69 73 61 74 69 6F 6E 20 6F 66 20 74 68 69 73 lisation of this
0000B0: 20 6D 6F 64 75 6C 65 20 0D 0A 09 74 6F 67 65 74 module ...toget
0000C0: 68 65 72 20 77 69 74 68 20 74 68 65 20 61 64 64 her with the add
0000D0: 72 65 73 73 20 6F 66 20 74 68 69 73 20 72 6F 75 ress of this rou
0000E0: 74 69 6E 65 0D 0A 0D 0A 2A 29 0D 0A 42 45 47 49 tine....*)..BEGI
0000F0: 4E 0D 0A 20 20 20 20 49 46 20 4F 75 74 70 75 74 N.. IF Output
000100: 45 6E 61 62 6C 65 64 20 54 48 45 4E 0D 0A 09 43 Enabled THEN...C
000110: 6C 65 61 72 43 75 72 73 6F 72 3B 0D 0A 09 49 46 learCursor;...IF
000120: 20 63 68 3E 30 37 66 78 20 54 48 45 4E 20 63 68 ch>07fx THEN ch
000130: 3A 3D 43 48 52 28 4F 52 44 28 63 68 29 2D 31 32 :=CHR(ORD(ch)-12
000140: 38 29 20 45 4E 44 3B 0D 0A 09 49 46 20 63 68 3D 8) END;...IF ch=
000150: 43 52 20 54 48 45 4E 0D 0A 09 09 53 63 72 65 65 CR THEN....Scree
000160: 6E 50 6F 73 3A 3D 53 63 72 65 65 6E 50 6F 73 2D nPos:=ScreenPos-
000170: 43 6F 6C 4E 6F 3B 0D 0A 09 09 43 6F 6C 4E 6F 3A ColNo;....ColNo:
000180: 3D 30 3B 0D 0A 09 45 4C 53 49 46 20 63 68 3D 4C =0;...ELSIF ch=L
000190: 46 20 54 48 45 4E 0D 0A 09 09 49 46 20 52 6F 77 F THEN....IF Row
0001A0: 4E 6F 3C 28 4C 6F 67 53 63 72 65 65 6E 44 65 70 No<(LogScreenDep
0001B0: 74 68 2D 31 29 20 54 48 45 4E 0D 0A 09 09 09 49 th-1) THEN.....I
0001C0: 4E 43 28 52 6F 77 4E 6F 29 3B 0D 0A 09 09 09 53 NC(RowNo);.....S
0001D0: 63 72 65 65 6E 50 6F 73 3A 3D 53 63 72 65 65 6E creenPos:=Screen
0001E0: 50 6F 73 2B 52 6F 77 57 69 64 74 68 3B 0D 0A 09 Pos+RowWidth;...
0001F0: 09 09 45 4E 44 0D 0A 09 45 4C 53 49 46 20 63 68 ..END...ELSIF ch
Size : 512 (Real : 512)
000000: 6E 65 64 3A 3D 53 63 72 65 65 6E 5B 53 63 72 65 ned:=Screen[Scre
000010: 65 6E 50 6F 73 5D 3E 3D 38 30 78 3B 0D 0A 09 53 enPos]>=80x;...S
000020: 63 72 65 65 6E 5B 53 63 72 65 65 6E 50 6F 73 5D creen[ScreenPos]
000030: 3A 3D 43 48 52 28 4F 52 44 28 53 63 72 65 65 6E :=CHR(ORD(Screen
000040: 5B 53 63 72 65 65 6E 50 6F 73 5D 29 2B 31 32 38 [ScreenPos])+128
000050: 29 3B 2A 29 0D 0A 09 45 4E 44 20 53 65 74 43 75 );*)...END SetCu
000060: 72 73 6F 72 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 rsor;....PROCEDU
000070: 52 45 20 46 6C 75 73 68 42 75 66 66 65 72 3B 0D RE FlushBuffer;.
000080: 0A 56 41 52 09 70 3A 50 61 63 6B 65 74 3B 0D 0A .VAR.p:Packet;..
000090: 42 45 47 49 4E 0D 0A 09 49 46 20 42 75 66 66 65 BEGIN...IF Buffe
0000A0: 72 43 6F 75 6E 74 3E 30 20 54 48 45 4E 20 0D 0A rCount>0 THEN ..
0000B0: 09 09 57 49 54 48 20 70 20 44 4F 0D 0A 09 09 09 ..WITH p DO.....
0000C0: 49 6E 74 4E 6F 3A 3D 42 75 66 66 65 72 43 6F 75 IntNo:=BufferCou
0000D0: 6E 74 3B 0D 0A 09 09 09 41 58 3A 3D 41 44 52 28 nt;.....AX:=ADR(
0000E0: 42 75 66 66 65 72 29 3B 0D 0A 09 09 09 42 58 3A Buffer);.....BX:
0000F0: 3D 42 75 66 66 65 72 52 6F 77 2A 31 36 30 2B 42 =BufferRow*160+B
000100: 75 66 66 65 72 43 6F 6C 2A 32 3B 0D 0A 09 09 09 ufferCol*2;.....
000110: 43 58 3A 3D 42 61 73 65 41 64 64 72 3B 0D 0A 09 CX:=BaseAddr;...
000120: 09 09 52 65 61 64 4F 72 57 72 69 74 65 28 54 52 ..ReadOrWrite(TR
000130: 55 45 2C 70 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D UE,p);.....END;.
000140: 0A 09 09 45 4E 44 3B 0D 0A 09 42 75 66 66 65 72 ...END;...Buffer
000150: 43 6F 75 6E 74 3A 3D 30 3B 0D 0A 09 53 65 74 43 Count:=0;...SetC
000160: 75 72 73 6F 72 3B 0D 0A 09 45 4E 44 20 46 6C 75 ursor;...END Flu
000170: 73 68 42 75 66 66 65 72 3B 0D 0A 0D 0A 50 52 4F shBuffer;....PRO
000180: 43 45 44 55 52 45 20 42 6C 69 6E 6B 43 75 72 73 CEDURE BlinkCurs
000190: 6F 72 3B 0D 0A 42 45 47 49 4E 0D 0A 28 2A 09 09 or;..BEGIN..(*..
0001A0: 44 6F 65 73 20 6E 6F 74 68 69 6E 67 20 28 79 65 Does nothing (ye
0001B0: 74 29 20 6F 6E 20 45 61 72 74 68 20 63 61 72 64 t) on Earth card
0001C0: 20 76 65 72 73 69 6F 6E 20 0D 0A 09 44 45 43 28 version ...DEC(
0001D0: 54 69 6D 65 54 6F 43 68 61 6E 67 65 29 3B 0D 0A TimeToChange);..
0001E0: 09 49 46 20 54 69 6D 65 54 6F 43 68 61 6E 67 65 .IF TimeToChange
0001F0: 3C 30 20 54 48 45 4E 0D 0A 09 09 54 69 6D 65 54 <0 THEN....TimeT
Size : 512 (Real : 512)
000000: 3D 42 53 20 54 48 45 4E 0D 0A 09 09 49 46 20 43 =BS THEN....IF C
000010: 6F 6C 4E 6F 3E 30 20 54 48 45 4E 0D 0A 09 09 09 olNo>0 THEN.....
000020: 44 45 43 28 43 6F 6C 4E 6F 29 3B 0D 0A 09 09 09 DEC(ColNo);.....
000030: 44 45 43 28 53 63 72 65 65 6E 50 6F 73 29 3B 0D DEC(ScreenPos);.
000040: 0A 09 09 09 45 4E 44 0D 0A 09 45 4C 53 49 46 20 ....END...ELSIF
000050: 63 68 3D 54 41 42 20 54 48 45 4E 0D 0A 09 09 4C ch=TAB THEN....L
000060: 4F 4F 50 0D 0A 09 09 09 49 46 20 43 6F 6C 4E 6F OOP.....IF ColNo
000070: 3E 3D 4C 6F 67 53 63 72 65 65 6E 57 69 64 74 68 >=LogScreenWidth
000080: 2D 31 20 54 48 45 4E 20 45 58 49 54 20 45 4E 44 -1 THEN EXIT END
000090: 3B 0D 0A 09 09 09 50 75 74 61 6E 64 49 6E 63 28 ;.....PutandInc(
0000A0: 27 20 27 29 3B 0D 0A 09 09 09 49 46 20 49 41 4E ' ');.....IF IAN
0000B0: 44 28 43 6F 6C 4E 6F 2C 37 29 3D 30 20 54 48 45 D(ColNo,7)=0 THE
0000C0: 4E 20 45 58 49 54 20 45 4E 44 0D 0A 09 09 09 45 N EXIT END.....E
0000D0: 4E 44 20 28 2A 4C 4F 4F 50 2A 29 0D 0A 09 45 4C ND (*LOOP*)...EL
0000E0: 53 45 0D 0A 09 09 49 46 20 55 6E 64 65 72 4C 69 SE....IF UnderLi
0000F0: 6E 65 20 4F 52 20 45 6E 68 61 6E 63 65 64 56 69 ne OR EnhancedVi
000100: 64 65 6F 20 4F 52 20 42 6C 69 6E 6B 69 6E 67 20 deo OR Blinking
000110: 4F 52 20 49 6E 76 65 72 73 65 56 69 64 65 6F 20 OR InverseVideo
000120: 54 48 45 4E 0D 0A 09 09 09 41 74 74 72 69 62 75 THEN.....Attribu
000130: 74 65 73 3A 3D 31 3B 0D 0A 09 09 09 45 4E 44 3B tes:=1;.....END;
000140: 0D 0A 09 09 50 75 74 61 6E 64 49 6E 63 28 63 68 ....PutandInc(ch
000150: 29 3B 0D 0A 09 09 45 4E 44 3B 20 28 2A 4E 6F 74 );....END; (*Not
000160: 20 43 52 20 6F 72 20 4C 46 20 6F 72 20 54 41 42 CR or LF or TAB
000170: 2A 29 0D 0A 09 41 74 74 72 69 62 75 74 65 73 3A *)...Attributes:
000180: 3D 37 3B 0D 0A 09 53 65 74 43 75 72 73 6F 72 3B =7;...SetCursor;
000190: 0D 0A 09 45 4E 44 3B 0D 0A 20 20 20 20 45 4E 44 ...END;.. END
0001A0: 20 57 72 69 74 65 3B 0D 0A 0D 0A 50 52 4F 43 45 Write;....PROCE
0001B0: 44 55 52 45 20 53 63 72 65 65 6E 43 6F 6E 74 72 DURE ScreenContr
0001C0: 6F 6C 28 73 3A 45 64 69 74 73 29 3B 0D 0A 0D 0A ol(s:Edits);....
0001D0: 28 2A 09 09 50 65 72 66 6F 72 6D 20 61 20 73 63 (*..Perform a sc
0001E0: 72 65 65 6E 20 63 6F 6E 74 72 6F 6C 20 6F 70 65 reen control ope
0001F0: 72 61 74 69 6F 6E 0D 0A 0D 0A 09 09 4D 61 79 20 ration......May
Size : 512 (Real : 512)
000000: 6F 43 68 61 6E 67 65 3A 3D 39 30 30 3B 09 28 2A oChange:=900;.(*
000010: 63 68 61 6E 67 65 20 74 6F 20 63 68 61 6E 67 65 change to change
000020: 20 62 6C 69 6E 6B 20 72 61 74 65 2A 29 0D 0A 09 blink rate*)...
000030: 09 53 63 72 65 65 6E 5B 53 63 72 65 65 6E 50 6F .Screen[ScreenPo
000040: 73 5D 3A 3D 43 48 52 28 4F 52 44 28 53 63 72 65 s]:=CHR(ORD(Scre
000050: 65 6E 5B 53 63 72 65 65 6E 50 6F 73 5D 29 2B 31 en[ScreenPos])+1
000060: 32 38 29 0D 0A 09 09 45 4E 44 0D 0A 2A 29 0D 0A 28)....END..*)..
000070: 09 46 6C 75 73 68 42 75 66 66 65 72 3B 0D 0A 09 .FlushBuffer;...
000080: 45 4E 44 20 42 6C 69 6E 6B 43 75 72 73 6F 72 3B END BlinkCursor;
000090: 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 6C ....PROCEDURE Cl
0000A0: 65 61 72 43 75 72 73 6F 72 3B 0D 0A 42 45 47 49 earCursor;..BEGI
0000B0: 4E 0D 0A 28 2A 09 41 6C 73 6F 20 75 6E 2D 69 6D N..(*.Also un-im
0000C0: 70 6C 65 6D 65 6E 74 65 64 0D 0A 0D 0A 09 49 46 plemented.....IF
0000D0: 20 28 53 63 72 65 65 6E 5B 53 63 72 65 65 6E 50 (Screen[ScreenP
0000E0: 6F 73 5D 3E 37 66 78 29 3C 3E 57 61 73 55 6E 64 os]>7fx)<>WasUnd
0000F0: 65 72 4C 69 6E 65 64 20 54 48 45 4E 0D 0A 09 09 erLined THEN....
000100: 53 63 72 65 65 6E 5B 53 63 72 65 65 6E 50 6F 73 Screen[ScreenPos
000110: 5D 3A 3D 43 48 52 28 4F 52 44 28 53 63 72 65 65 ]:=CHR(ORD(Scree
000120: 6E 5B 53 63 72 65 65 6E 50 6F 73 5D 29 2B 31 32 n[ScreenPos])+12
000130: 38 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 57 61 8);....END;...Wa
000140: 73 55 6E 64 65 72 4C 69 6E 65 64 3A 3D 46 41 4C sUnderLined:=FAL
000150: 53 45 3B 0D 0A 2A 29 0D 0A 09 45 4E 44 20 43 6C SE;..*)...END Cl
000160: 65 61 72 43 75 72 73 6F 72 3B 0D 0A 09 09 09 0D earCursor;......
000170: 0A 09 09 09 0D 0A 50 52 4F 43 45 44 55 52 45 20 ......PROCEDURE
000180: 47 6F 74 6F 78 79 28 78 2C 79 3A 43 41 52 44 49 Gotoxy(x,y:CARDI
000190: 4E 41 4C 29 3B 09 09 0D 0A 0D 0A 28 2A 09 09 50 NAL);......(*..P
0001A0: 6F 73 69 74 69 6F 6E 20 74 6F 20 67 69 76 65 6E osition to given
0001B0: 20 63 6F 6F 72 64 69 6E 61 74 65 73 0D 0A 09 09 coordinates....
0001C0: 74 6F 70 20 6C 65 66 74 20 69 73 20 61 6C 77 61 top left is alwa
0001D0: 79 73 20 30 2C 30 20 0D 0A 0D 0A 09 09 78 20 69 ys 0,0 ......x i
0001E0: 73 20 63 6F 6C 75 6D 6E 2C 20 79 20 69 73 20 72 s column, y is r
0001F0: 6F 77 0D 0A 0D 0A 09 09 41 20 27 53 74 61 6E 64 ow......A 'Stand
Size : 512 (Real : 512)
000000: 20 79 31 2D 31 20 20 44 4F 0D 0A 09 09 47 6F 74 y1-1 DO....Got
000010: 6F 78 79 28 78 32 2C 69 29 3B 0D 0A 09 09 53 63 oxy(x2,i);....Sc
000020: 72 65 65 6E 43 6F 6E 74 72 6F 6C 28 56 65 72 74 reenControl(Vert
000030: 69 63 61 6C 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A ical);....END;..
000040: 09 46 4F 52 20 69 3A 3D 79 32 2B 31 20 54 4F 20 .FOR i:=y2+1 TO
000050: 79 31 2D 31 20 44 4F 0D 0A 09 09 47 6F 74 6F 78 y1-1 DO....Gotox
000060: 79 28 78 31 2C 69 29 3B 0D 0A 09 09 53 63 72 65 y(x1,i);....Scre
000070: 65 6E 43 6F 6E 74 72 6F 6C 28 56 65 72 74 69 63 enControl(Vertic
000080: 61 6C 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 al);....END;...E
000090: 4E 44 3B 0D 0A 20 20 20 20 45 4E 44 20 44 72 61 ND;.. END Dra
0000A0: 77 42 6F 78 3B 0D 0A 50 52 4F 43 45 44 55 52 45 wBox;..PROCEDURE
0000B0: 20 4F 75 74 70 75 74 54 6F 53 63 72 65 65 6E 28 OutputToScreen(
0000C0: 4F 6E 3A 42 4F 4F 4C 45 41 4E 29 3B 0D 0A 42 45 On:BOOLEAN);..BE
0000D0: 47 49 4E 0D 0A 09 4F 75 74 70 75 74 45 6E 61 62 GIN...OutputEnab
0000E0: 6C 65 64 3A 3D 4F 6E 0D 0A 09 45 4E 44 20 4F 75 led:=On...END Ou
0000F0: 74 70 75 74 54 6F 53 63 72 65 65 6E 3B 09 0D 0A tputToScreen;...
000100: 42 45 47 49 4E 0D 0A 09 4F 75 74 70 75 74 45 6E BEGIN...OutputEn
000110: 61 62 6C 65 64 3A 3D 54 52 55 45 3B 0D 0A 09 28 abled:=TRUE;...(
000120: 2A 09 53 65 74 20 75 70 20 50 43 47 20 43 68 61 *.Set up PCG Cha
000130: 72 61 63 74 65 72 73 2A 29 0D 0A 09 53 63 72 65 racters*)...Scre
000140: 65 6E 50 6F 73 3A 3D 30 3B 0D 0A 09 70 2E 49 6E enPos:=0;...p.In
000150: 74 4E 6F 3A 3D 31 36 3B 09 28 2A 69 6E 74 65 72 tNo:=16;.(*inter
000160: 72 75 70 74 20 66 6F 72 20 76 69 64 65 6F 20 6F rupt for video o
000170: 6E 20 38 30 38 38 2A 29 09 0D 0A 09 42 6C 69 6E n 8088*)....Blin
000180: 6B 52 6F 75 74 69 6E 65 3A 3D 42 6C 69 6E 6B 43 kRoutine:=BlinkC
000190: 75 72 73 6F 72 3B 0D 0A 09 42 6C 69 6E 6B 45 6E ursor;...BlinkEn
0001A0: 61 62 6C 65 64 3A 3D 54 52 55 45 3B 0D 0A 09 53 abled:=TRUE;...S
0001B0: 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 28 43 6C 65 creenControl(Cle
0001C0: 61 72 53 63 72 65 65 6E 29 3B 0D 0A 09 43 6F 6C arScreen);...Col
0001D0: 4E 6F 3A 3D 30 3B 0D 0A 09 52 6F 77 4E 6F 3A 3D No:=0;...RowNo:=
0001E0: 30 3B 0D 0A 09 43 68 61 72 52 6F 75 74 69 6E 65 0;...CharRoutine
0001F0: 3A 3D 57 72 69 74 65 3B 0D 0A 09 43 68 61 72 45 :=Write;...CharE
Size : 512 (Real : 512)
000000: 09 53 74 61 72 74 78 79 2C 4D 69 64 64 6C 65 58 .Startxy,MiddleX
000010: 59 2C 45 6E 64 58 59 3A 28 2A 63 75 72 73 6F 72 Y,EndXY:(*cursor
000020: 20 61 64 64 72 65 73 73 69 6E 67 20 2D 20 6E 6F addressing - no
000030: 74 20 72 65 71 75 69 72 65 64 2A 29 7C 0D 0A 09 t required*)|...
000040: 52 69 6E 67 42 65 6C 6C 3A 69 3A 3D 42 44 4F 53 RingBell:i:=BDOS
000050: 28 77 63 63 66 63 2C 37 29 7C 0D 0A 09 4D 6F 76 (wccfc,7)|...Mov
000060: 65 4C 65 66 74 3A 49 46 20 43 6F 6C 4E 6F 3E 30 eLeft:IF ColNo>0
000070: 20 54 48 45 4E 20 0D 0A 09 09 09 44 45 43 28 43 THEN .....DEC(C
000080: 6F 6C 4E 6F 29 3B 0D 0A 09 09 09 44 45 43 28 53 olNo);.....DEC(S
000090: 63 72 65 65 6E 50 6F 73 29 3B 0D 0A 09 09 45 4C creenPos);....EL
0000A0: 53 49 46 20 52 6F 77 4E 6F 3E 30 20 54 48 45 4E SIF RowNo>0 THEN
0000B0: 0D 0A 09 09 09 44 45 43 28 52 6F 77 4E 6F 29 3B .....DEC(RowNo);
0000C0: 0D 0A 09 09 09 43 6F 6C 4E 6F 3A 3D 4C 6F 67 53 .....ColNo:=LogS
0000D0: 63 72 65 65 6E 57 69 64 74 68 2D 31 3B 0D 0A 09 creenWidth-1;...
0000E0: 09 09 53 63 72 65 65 6E 50 6F 73 3A 3D 43 6F 6C ..ScreenPos:=Col
0000F0: 4E 6F 2B 52 6F 77 4E 6F 2A 52 6F 77 57 69 64 74 No+RowNo*RowWidt
000100: 68 3B 0D 0A 09 09 09 45 4E 44 7C 0D 0A 09 4D 6F h;.....END|...Mo
000110: 76 65 52 69 67 68 74 3A 49 46 20 43 6F 6C 4E 6F veRight:IF ColNo
000120: 3C 28 4C 6F 67 53 63 72 65 65 6E 57 69 64 74 68 <(LogScreenWidth
000130: 2D 31 29 20 54 48 45 4E 20 0D 0A 09 09 09 49 4E -1) THEN .....IN
000140: 43 28 43 6F 6C 4E 6F 29 3B 0D 0A 09 09 09 49 4E C(ColNo);.....IN
000150: 43 28 53 63 72 65 65 6E 50 6F 73 29 3B 0D 0A 09 C(ScreenPos);...
000160: 09 45 4C 53 49 46 20 52 6F 77 4E 6F 3C 28 4C 6F .ELSIF RowNo<(Lo
000170: 67 53 63 72 65 65 6E 44 65 70 74 68 2D 31 29 20 gScreenDepth-1)
000180: 54 48 45 4E 0D 0A 09 09 09 43 6F 6C 4E 6F 3A 3D THEN.....ColNo:=
000190: 30 3B 0D 0A 09 09 09 49 4E 43 28 52 6F 77 4E 6F 0;.....INC(RowNo
0001A0: 29 3B 0D 0A 09 09 09 53 63 72 65 65 6E 50 6F 73 );.....ScreenPos
0001B0: 3A 3D 52 6F 77 4E 6F 2A 52 6F 77 57 69 64 74 68 :=RowNo*RowWidth
0001C0: 3B 0D 0A 09 09 09 45 4E 44 7C 0D 0A 09 4D 6F 76 ;.....END|...Mov
0001D0: 65 44 6F 77 6E 3A 49 46 20 52 6F 77 4E 6F 3C 28 eDown:IF RowNo<(
0001E0: 4C 6F 67 53 63 72 65 65 6E 44 65 70 74 68 2D 31 LogScreenDepth-1
0001F0: 29 20 54 48 45 4E 0D 0A 09 09 09 49 4E 43 28 52 ) THEN.....INC(R
Size : 512 (Real : 512)
000000: 4F 0D 0A 09 09 09 43 6F 6C 4E 6F 3A 3D 6A 2B 31 O.....ColNo:=j+1
000010: 3B 0D 0A 09 09 09 53 65 74 43 75 72 73 6F 72 3B ;.....SetCursor;
000020: 0D 0A 09 09 09 57 49 54 48 20 70 20 44 4F 0D 0A .....WITH p DO..
000030: 09 09 09 09 41 58 3A 3D 38 30 30 68 3B 0D 0A 09 ....AX:=800h;...
000040: 09 09 09 42 58 3A 3D 30 3B 0D 0A 09 09 09 09 49 ...BX:=0;......I
000050: 6E 74 28 70 29 3B 09 28 2A 52 65 61 64 20 63 68 nt(p);.(*Read ch
000060: 61 72 61 63 74 65 72 20 2A 29 0D 0A 09 09 09 09 aracter *)......
000070: 63 68 3A 3D 43 48 52 28 43 41 52 44 49 4E 41 4C ch:=CHR(CARDINAL
000080: 28 41 58 29 29 3B 0D 0A 09 09 09 09 44 45 43 28 (AX));......DEC(
000090: 43 6F 6C 4E 6F 29 3B 0D 0A 09 09 09 09 53 65 74 ColNo);......Set
0000A0: 43 75 72 73 6F 72 3B 0D 0A 09 09 09 09 42 58 3A Cursor;......BX:
0000B0: 3D 37 3B 0D 0A 09 09 09 09 41 58 3A 3D 30 39 30 =7;......AX:=090
0000C0: 30 48 2B 4F 52 44 28 63 68 29 3B 0D 0A 09 09 09 0H+ORD(ch);.....
0000D0: 09 43 58 3A 3D 31 3B 0D 0A 09 09 09 09 49 6E 74 .CX:=1;......Int
0000E0: 28 70 29 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A (p);......END;..
0000F0: 09 09 09 45 4E 44 3B 0D 0A 09 09 43 6F 6C 4E 6F ...END;....ColNo
000100: 3A 3D 52 6F 77 57 69 64 74 68 2D 31 3B 0D 0A 09 :=RowWidth-1;...
000110: 09 53 65 74 43 75 72 73 6F 72 3B 0D 0A 09 09 57 .SetCursor;....W
000120: 49 54 48 20 70 20 44 4F 0D 0A 09 09 09 41 58 3A ITH p DO.....AX:
000130: 3D 30 39 32 30 68 3B 0D 0A 09 09 09 42 58 3A 3D =0920h;.....BX:=
000140: 37 3B 0D 0A 09 09 09 43 58 3A 3D 31 3B 0D 0A 09 7;.....CX:=1;...
000150: 09 09 49 6E 74 28 70 29 3B 0D 0A 09 09 09 45 4E ..Int(p);.....EN
000160: 44 3B 0D 0A 09 09 43 6F 6C 4E 6F 3A 3D 69 3B 0D D;....ColNo:=i;.
000170: 0A 09 09 53 65 74 43 75 72 73 6F 72 3B 0D 0A 09 ...SetCursor;...
000180: 09 7C 0D 0A 09 44 65 6C 4C 69 6E 65 3A 28 2A 4D .|...DelLine:(*M
000190: 6F 76 65 20 72 65 73 74 20 6F 66 20 73 63 72 65 ove rest of scre
0001A0: 65 6E 20 75 70 20 61 20 6C 69 6E 65 2C 20 61 64 en up a line, ad
0001B0: 64 20 62 6C 61 6E 6B 20 6C 69 6E 65 20 61 74 20 d blank line at
0001C0: 65 6E 64 2A 29 0D 0A 09 09 57 49 54 48 20 70 20 end*)....WITH p
0001D0: 44 4F 0D 0A 09 09 09 41 58 3A 3D 30 36 30 31 68 DO.....AX:=0601h
0001E0: 3B 0D 0A 09 09 09 43 58 3A 3D 32 35 36 2A 52 6F ;.....CX:=256*Ro
0001F0: 77 4E 6F 3B 0D 0A 09 09 09 44 58 3A 3D 32 35 36 wNo;.....DX:=256
Size : 512 (Real : 512)
000000: 6F 77 4E 6F 29 3B 0D 0A 09 09 09 53 63 72 65 65 owNo);.....Scree
000010: 6E 50 6F 73 3A 3D 53 63 72 65 65 6E 50 6F 73 2B nPos:=ScreenPos+
000020: 52 6F 77 57 69 64 74 68 3B 0D 0A 09 09 09 45 4E RowWidth;.....EN
000030: 44 7C 0D 0A 09 4D 6F 76 65 55 70 3A 49 46 20 52 D|...MoveUp:IF R
000040: 6F 77 4E 6F 3E 30 20 54 48 45 4E 0D 0A 09 09 09 owNo>0 THEN.....
000050: 44 45 43 28 52 6F 77 4E 6F 29 3B 0D 0A 09 09 09 DEC(RowNo);.....
000060: 53 63 72 65 65 6E 50 6F 73 3A 3D 53 63 72 65 65 ScreenPos:=Scree
000070: 6E 50 6F 73 2D 52 6F 77 57 69 64 74 68 3B 0D 0A nPos-RowWidth;..
000080: 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 20 ...END;....END;
000090: 28 2A 43 41 53 45 2A 29 0D 0A 09 53 65 74 43 75 (*CASE*)...SetCu
0000A0: 72 73 6F 72 3B 0D 0A 09 45 4E 44 3B 0D 0A 20 20 rsor;...END;..
0000B0: 20 20 45 4E 44 20 53 63 72 65 65 6E 43 6F 6E 74 END ScreenCont
0000C0: 72 6F 6C 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 rol;..PROCEDURE
0000D0: 53 63 72 6F 6C 6C 57 69 6E 64 6F 77 55 70 28 53 ScrollWindowUp(S
0000E0: 74 61 72 74 6F 66 57 69 6E 64 6F 77 2C 45 6E 64 tartofWindow,End
0000F0: 6F 66 57 69 6E 64 6F 77 3A 43 41 52 44 49 4E 41 ofWindow:CARDINA
000100: 4C 29 3B 0D 0A 42 45 47 49 4E 0D 0A 20 20 20 20 L);..BEGIN..
000110: 49 46 20 4F 75 74 70 75 74 45 6E 61 62 6C 65 64 IF OutputEnabled
000120: 20 41 4E 44 20 28 53 74 61 72 74 6F 66 57 69 6E AND (StartofWin
000130: 64 6F 77 3C 45 6E 64 6F 66 57 69 6E 64 6F 77 29 dow<EndofWindow)
000140: 20 54 48 45 4E 0D 0A 09 43 6C 65 61 72 43 75 72 THEN...ClearCur
000150: 73 6F 72 3B 0D 0A 09 57 49 54 48 20 70 20 44 4F sor;...WITH p DO
000160: 0D 0A 09 09 41 58 3A 3D 30 37 30 31 68 0D 0A 09 ....AX:=0701h...
000170: 09 43 58 3A 3D 32 35 36 2A 53 74 61 72 74 6F 66 .CX:=256*Startof
000180: 57 69 6E 64 6F 77 3B 0D 0A 09 09 44 58 3A 3D 32 Window;....DX:=2
000190: 35 36 2A 45 6E 64 6F 66 57 69 6E 64 6F 77 2B 4C 56*EndofWindow+L
0001A0: 6F 67 53 63 72 65 65 6E 57 69 64 74 68 2D 31 3B ogScreenWidth-1;
0001B0: 0D 0A 09 09 42 58 3A 3D 30 37 30 30 68 3B 0D 0A ....BX:=0700h;..
0001C0: 09 09 45 4E 44 3B 0D 0A 09 49 6E 74 28 70 29 3B ..END;...Int(p);
0001D0: 0D 0A 09 53 65 74 43 75 72 73 6F 72 3B 0D 0A 09 ...SetCursor;...
0001E0: 45 4E 44 3B 0D 0A 20 20 20 20 45 4E 44 20 53 63 END;.. END Sc
0001F0: 72 6F 6C 6C 57 69 6E 64 6F 77 55 70 3B 0D 0A 50 rollWindowUp;..P
Size : 512 (Real : 512)
000000: 2A 28 4C 6F 67 53 63 72 65 65 6E 44 65 70 74 68 *(LogScreenDepth
000010: 2D 31 29 2B 4C 6F 67 53 63 72 65 65 6E 57 69 64 -1)+LogScreenWid
000020: 74 68 2D 31 3B 0D 0A 09 09 09 42 58 3A 3D 30 37 th-1;.....BX:=07
000030: 30 30 68 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 00h;.....END;...
000040: 09 49 6E 74 28 70 29 3B 0D 0A 09 09 7C 0D 0A 09 .Int(p);....|...
000050: 49 6E 73 43 68 61 72 3A 28 2A 4D 6F 76 65 20 72 InsChar:(*Move r
000060: 65 73 74 20 6F 66 20 6C 69 6E 65 20 75 70 20 6F est of line up o
000070: 6E 65 2C 20 61 64 64 20 62 6C 61 6E 6B 20 74 6F ne, add blank to
000080: 20 65 6E 64 2A 29 0D 0A 09 09 69 3A 3D 43 6F 6C end*)....i:=Col
000090: 4E 6F 3B 0D 0A 09 09 46 4F 52 20 6A 3A 3D 52 6F No;....FOR j:=Ro
0000A0: 77 57 69 64 74 68 2D 32 20 54 4F 20 43 6F 6C 4E wWidth-2 TO ColN
0000B0: 6F 20 42 59 20 2D 31 20 44 4F 0D 0A 09 09 09 43 o BY -1 DO.....C
0000C0: 6F 6C 4E 6F 3A 3D 6A 3B 0D 0A 09 09 09 53 65 74 olNo:=j;.....Set
0000D0: 43 75 72 73 6F 72 3B 0D 0A 09 09 09 57 49 54 48 Cursor;.....WITH
0000E0: 20 70 20 44 4F 0D 0A 09 09 09 09 41 58 3A 3D 38 p DO......AX:=8
0000F0: 30 30 68 3B 0D 0A 09 09 09 09 42 58 3A 3D 30 3B 00h;......BX:=0;
000100: 0D 0A 09 09 09 09 49 6E 74 28 70 29 3B 09 28 2A ......Int(p);.(*
000110: 52 65 61 64 20 63 68 61 72 61 63 74 65 72 20 2A Read character *
000120: 29 0D 0A 09 09 09 09 63 68 3A 3D 43 48 52 28 43 )......ch:=CHR(C
000130: 41 52 44 49 4E 41 4C 28 41 58 29 29 3B 0D 0A 09 ARDINAL(AX));...
000140: 09 09 09 49 4E 43 28 43 6F 6C 4E 6F 29 3B 0D 0A ...INC(ColNo);..
000150: 09 09 09 09 53 65 74 43 75 72 73 6F 72 3B 0D 0A ....SetCursor;..
000160: 09 09 09 09 42 58 3A 3D 37 3B 0D 0A 09 09 09 09 ....BX:=7;......
000170: 41 58 3A 3D 30 39 30 30 48 2B 4F 52 44 28 63 68 AX:=0900H+ORD(ch
000180: 29 3B 0D 0A 09 09 09 09 43 58 3A 3D 31 3B 0D 0A );......CX:=1;..
000190: 09 09 09 09 49 6E 74 28 70 29 3B 0D 0A 09 09 09 ....Int(p);.....
0001A0: 09 45 4E 44 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A .END;.....END;..
0001B0: 09 09 43 6F 6C 4E 6F 3A 3D 69 3B 0D 0A 09 09 53 ..ColNo:=i;....S
0001C0: 65 74 43 75 72 73 6F 72 3B 0D 0A 09 09 57 49 54 etCursor;....WIT
0001D0: 48 20 70 20 44 4F 0D 0A 09 09 09 41 58 3A 3D 30 H p DO.....AX:=0
0001E0: 39 32 30 68 3B 0D 0A 09 09 09 42 58 3A 3D 37 3B 920h;.....BX:=7;
0001F0: 0D 0A 09 09 09 43 58 3A 3D 31 3B 0D 0A 09 09 09 .....CX:=1;.....
Size : 512 (Real : 512)
000000: 52 4F 43 45 44 55 52 45 20 53 63 72 6F 6C 6C 57 ROCEDURE ScrollW
000010: 69 6E 64 6F 77 44 6F 77 6E 28 53 74 61 72 74 6F indowDown(Starto
000020: 66 57 69 6E 64 6F 77 2C 45 6E 64 6F 66 57 69 6E fWindow,EndofWin
000030: 64 6F 77 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A dow:CARDINAL);..
000040: 42 45 47 49 4E 0D 0A 20 20 20 20 49 46 20 4F 75 BEGIN.. IF Ou
000050: 74 70 75 74 45 6E 61 62 6C 65 64 20 41 4E 44 20 tputEnabled AND
000060: 28 53 74 61 72 74 6F 66 57 69 6E 64 6F 77 3C 45 (StartofWindow<E
000070: 6E 64 6F 66 57 69 6E 64 6F 77 29 20 54 48 45 4E ndofWindow) THEN
000080: 0D 0A 09 43 6C 65 61 72 43 75 72 73 6F 72 3B 0D ...ClearCursor;.
000090: 0A 09 57 49 54 48 20 70 20 44 4F 0D 0A 09 09 41 ..WITH p DO....A
0000A0: 58 3A 3D 30 36 30 31 68 0D 0A 09 09 43 58 3A 3D X:=0601h....CX:=
0000B0: 32 35 36 2A 53 74 61 72 74 6F 66 57 69 6E 64 6F 256*StartofWindo
0000C0: 77 3B 0D 0A 09 09 44 58 3A 3D 32 35 36 2A 45 6E w;....DX:=256*En
0000D0: 64 6F 66 57 69 6E 64 6F 77 2B 4C 6F 67 53 63 72 dofWindow+LogScr
0000E0: 65 65 6E 57 69 64 74 68 2D 31 3B 0D 0A 09 09 42 eenWidth-1;....B
0000F0: 58 3A 3D 30 37 30 30 68 3B 0D 0A 09 09 45 4E 44 X:=0700h;....END
000100: 3B 0D 0A 09 49 6E 74 28 70 29 3B 0D 0A 09 53 65 ;...Int(p);...Se
000110: 74 43 75 72 73 6F 72 3B 0D 0A 09 45 4E 44 3B 0D tCursor;...END;.
000120: 0A 20 20 20 20 45 4E 44 20 53 63 72 6F 6C 6C 57 . END ScrollW
000130: 69 6E 64 6F 77 44 6F 77 6E 3B 0D 0A 0D 0A 50 52 indowDown;....PR
000140: 4F 43 45 44 55 52 45 20 4C 6F 61 64 54 65 72 6D OCEDURE LoadTerm
000150: 43 6F 64 65 28 46 3A 46 69 6C 65 4E 61 6D 65 29 Code(F:FileName)
000160: 3B 0D 0A 42 45 47 49 4E 0D 0A 09 28 2A 6E 6F 74 ;..BEGIN...(*not
000170: 20 69 6D 70 6C 65 6D 65 6E 74 65 64 20 69 6E 20 implemented in
000180: 74 68 69 73 20 76 65 72 73 69 6F 6E 2A 29 0D 0A this version*)..
000190: 09 45 4E 44 20 4C 6F 61 64 54 65 72 6D 43 6F 64 .END LoadTermCod
0001A0: 65 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 6C e;..PROCEDURE Cl
0001B0: 69 70 28 78 31 2C 79 31 2C 78 32 2C 79 32 3A 43 ip(x1,y1,x2,y2:C
0001C0: 41 52 44 49 4E 41 4C 29 3B 0D 0A 42 45 47 49 4E ARDINAL);..BEGIN
0001D0: 0D 0A 09 28 2A 6E 6F 74 20 69 6D 70 6C 65 6D 65 ...(*not impleme
0001E0: 6E 74 65 64 20 69 6E 20 74 68 69 73 20 76 65 72 nted in this ver
0001F0: 73 69 6F 6E 2A 29 0D 0A 09 45 4E 44 20 43 6C 69 sion*)...END Cli
Size : 512 (Real : 512)
000000: 49 6E 74 28 70 29 3B 0D 0A 09 09 09 45 4E 44 3B Int(p);.....END;
000010: 0D 0A 09 09 53 65 74 43 75 72 73 6F 72 3B 0D 0A ....SetCursor;..
000020: 09 09 7C 0D 0A 09 49 6E 73 4C 69 6E 65 3A 28 2A ..|...InsLine:(*
000030: 4D 6F 76 65 20 72 65 73 74 20 6F 66 20 73 63 72 Move rest of scr
000040: 65 65 6E 20 75 70 20 61 20 6C 69 6E 65 2C 20 61 een up a line, a
000050: 64 64 20 62 6C 61 6E 6B 20 6C 69 6E 65 20 61 74 dd blank line at
000060: 20 65 6E 64 2A 29 0D 0A 09 09 57 49 54 48 20 70 end*)....WITH p
000070: 20 44 4F 0D 0A 09 09 09 41 58 3A 3D 30 37 30 31 DO.....AX:=0701
000080: 68 3B 0D 0A 09 09 09 43 58 3A 3D 32 35 36 2A 52 h;.....CX:=256*R
000090: 6F 77 4E 6F 3B 0D 0A 09 09 09 44 58 3A 3D 32 35 owNo;.....DX:=25
0000A0: 36 2A 28 4C 6F 67 53 63 72 65 65 6E 44 65 70 74 6*(LogScreenDept
0000B0: 68 2D 31 29 2B 4C 6F 67 53 63 72 65 65 6E 57 69 h-1)+LogScreenWi
0000C0: 64 74 68 2D 31 3B 0D 0A 09 09 09 42 58 3A 3D 30 dth-1;.....BX:=0
0000D0: 37 30 30 68 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 700h;.....END;..
0000E0: 09 09 49 6E 74 28 70 29 3B 0D 0A 09 09 7C 0D 0A ..Int(p);....|..
0000F0: 09 44 65 6C 45 6F 6C 3A 49 46 20 43 6F 6C 4E 6F .DelEol:IF ColNo
000100: 2B 31 3C 52 6F 77 57 69 64 74 68 20 54 48 45 4E +1<RowWidth THEN
000110: 0D 0A 09 09 09 57 49 54 48 20 70 20 44 4F 0D 0A .....WITH p DO..
000120: 09 09 09 09 41 58 3A 3D 30 39 32 30 68 3B 0D 0A ....AX:=0920h;..
000130: 09 09 09 09 42 58 3A 3D 37 3B 0D 0A 09 09 09 09 ....BX:=7;......
000140: 43 58 3A 3D 52 6F 77 57 69 64 74 68 2D 43 6F 6C CX:=RowWidth-Col
000150: 4E 6F 2D 31 3B 0D 0A 09 09 09 09 49 6E 74 28 70 No-1;......Int(p
000160: 29 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 );......END;....
000170: 09 45 4E 44 3B 0D 0A 09 09 7C 0D 0A 09 44 65 6C .END;....|...Del
000180: 45 6F 73 3A 28 2A 6E 6F 74 20 69 6D 70 6C 65 6D Eos:(*not implem
000190: 65 6E 74 65 64 20 2D 20 62 75 74 20 73 69 6D 69 ented - but simi
0001A0: 6C 61 72 20 74 6F 20 70 72 65 76 69 6F 75 73 2A lar to previous*
0001B0: 29 7C 0D 0A 09 43 6C 65 61 72 53 63 72 65 65 6E )|...ClearScreen
0001C0: 3A 0D 0A 09 09 09 28 2A 4F 73 62 6F 72 6E 65 20 :.....(*Osborne
0001D0: 73 70 65 63 69 66 69 63 20 2D 20 68 6F 6D 65 20 specific - home
0001E0: 73 63 72 65 65 6E 20 61 6E 64 20 63 75 72 73 6F screen and curso
0001F0: 72 20 0D 0A 09 09 09 20 70 6F 73 69 74 69 6F 6E r ..... position
Size : 512 (Real : 512)
000000: 70 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 20 44 p;..PROCEDURE D
000010: 72 61 77 42 6F 78 28 78 31 2C 79 31 2C 78 32 2C rawBox(x1,y1,x2,
000020: 79 32 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A 0D y2:CARDINAL);...
000030: 0A 28 2A 09 09 64 72 61 77 20 61 20 62 6F 78 20 .(*..draw a box
000040: 66 6F 72 20 61 20 77 69 6E 64 6F 77 20 6F 6E 20 for a window on
000050: 74 68 65 20 73 63 72 65 65 6E 0D 0A 0D 0A 09 09 the screen......
000060: 78 31 2C 79 31 20 20 69 73 20 74 68 65 20 6C 6F x1,y1 is the lo
000070: 77 65 72 20 6C 65 66 74 20 63 6F 72 6E 65 72 0D wer left corner.
000080: 0A 09 09 78 32 2C 79 32 20 20 69 73 20 75 70 70 ...x2,y2 is upp
000090: 65 72 20 72 69 67 68 74 20 63 6F 72 6E 65 72 2A er right corner*
0000A0: 29 0D 0A 56 41 52 09 69 3A 43 41 52 44 49 4E 41 )..VAR.i:CARDINA
0000B0: 4C 3B 0D 0A 42 45 47 49 4E 0D 0A 20 20 20 20 49 L;..BEGIN.. I
0000C0: 46 20 4F 75 74 70 75 74 45 6E 61 62 6C 65 64 20 F OutputEnabled
0000D0: 54 48 45 4E 0D 0A 09 47 6F 74 6F 78 79 28 78 31 THEN...Gotoxy(x1
0000E0: 2C 79 31 29 3B 0D 0A 09 53 63 72 65 65 6E 43 6F ,y1);...ScreenCo
0000F0: 6E 74 72 6F 6C 28 53 74 61 72 74 47 72 61 70 68 ntrol(StartGraph
000100: 29 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 72 );...ScreenContr
000110: 6F 6C 28 43 6F 72 6E 65 72 4C 4C 29 3B 0D 0A 09 ol(CornerLL);...
000120: 46 4F 52 20 69 3A 3D 78 31 2B 31 20 54 4F 20 78 FOR i:=x1+1 TO x
000130: 32 2D 31 20 44 4F 20 53 63 72 65 65 6E 43 6F 6E 2-1 DO ScreenCon
000140: 74 72 6F 6C 28 48 6F 72 69 7A 6F 6E 74 61 6C 29 trol(Horizontal)
000150: 20 45 4E 44 3B 0D 0A 09 53 63 72 65 65 6E 43 6F END;...ScreenCo
000160: 6E 74 72 6F 6C 28 43 6F 72 6E 65 72 4C 52 29 3B ntrol(CornerLR);
000170: 0D 0A 09 47 6F 74 6F 78 79 28 78 31 2C 79 32 29 ...Gotoxy(x1,y2)
000180: 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 72 6F ;...ScreenContro
000190: 6C 28 43 6F 72 6E 65 72 55 4C 29 3B 0D 0A 09 46 l(CornerUL);...F
0001A0: 4F 52 20 69 3A 3D 78 31 2B 31 20 54 4F 20 78 32 OR i:=x1+1 TO x2
0001B0: 2D 31 20 44 4F 20 53 63 72 65 65 6E 43 6F 6E 74 -1 DO ScreenCont
0001C0: 72 6F 6C 28 48 6F 72 69 7A 6F 6E 74 61 6C 29 20 rol(Horizontal)
0001D0: 45 4E 44 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E END;...ScreenCon
0001E0: 74 72 6F 6C 28 43 6F 72 6E 65 72 55 52 29 3B 0D trol(CornerUR);.
0001F0: 0A 09 46 4F 52 20 69 3A 3D 79 32 2B 31 20 54 4F ..FOR i:=y2+1 TO
Size : 512 (Real : 512)
000000: 20 61 73 20 73 74 6F 72 65 64 20 69 6E 20 42 49 as stored in BI
000010: 4F 53 20 74 61 62 6C 65 73 2A 29 0D 0A 09 09 0D OS tables*).....
000020: 0A 09 09 09 28 2A 6E 6F 77 20 63 6C 65 61 72 20 ....(*now clear
000030: 64 69 73 70 6C 61 79 20 6D 65 6D 6F 72 79 2A 29 display memory*)
000040: 0D 0A 09 09 57 49 54 48 20 70 20 44 4F 0D 0A 09 ....WITH p DO...
000050: 09 09 41 58 3A 3D 30 36 30 30 68 3B 0D 0A 09 09 ..AX:=0600h;....
000060: 09 43 58 3A 3D 30 3B 0D 0A 09 09 09 44 58 3A 3D .CX:=0;.....DX:=
000070: 32 35 36 2A 28 4C 6F 67 53 63 72 65 65 6E 44 65 256*(LogScreenDe
000080: 70 74 68 2D 31 29 2B 4C 6F 67 53 63 72 65 65 6E pth-1)+LogScreen
000090: 57 69 64 74 68 2D 31 3B 0D 0A 09 09 09 42 58 3A Width-1;.....BX:
0000A0: 3D 30 37 30 30 68 3B 0D 0A 09 09 09 45 4E 44 3B =0700h;.....END;
0000B0: 0D 0A 09 09 49 6E 74 28 70 29 3B 0D 0A 09 09 53 ....Int(p);....S
0000C0: 63 72 65 65 6E 50 6F 73 3A 3D 30 3B 0D 0A 09 09 creenPos:=0;....
0000D0: 43 6F 6C 4E 6F 3A 3D 30 3B 0D 0A 09 09 52 6F 77 ColNo:=0;....Row
0000E0: 4E 6F 3A 3D 30 0D 0A 09 09 7C 0D 0A 0D 0A 09 28 No:=0....|.....(
0000F0: 2A 20 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 * The following
000100: 67 72 61 70 68 69 63 73 20 63 68 61 72 61 63 74 graphics charact
000110: 65 72 73 20 77 69 6C 6C 20 6E 65 65 64 20 74 6F ers will need to
000120: 20 62 65 20 6D 6F 64 69 66 69 65 64 20 66 6F 72 be modified for
000130: 20 0D 0A 09 20 20 20 64 69 66 66 65 72 65 6E 74 ... different
000140: 20 64 69 73 70 6C 61 79 20 73 79 73 74 65 6D 73 display systems
000150: 2A 29 0D 0A 0D 0A 09 48 6F 72 69 7A 6F 6E 74 61 *).....Horizonta
000160: 6C 3A 50 75 74 61 6E 64 49 6E 63 28 30 63 64 78 l:PutandInc(0cdx
000170: 29 7C 0D 0A 09 56 65 72 74 69 63 61 6C 3A 50 75 )|...Vertical:Pu
000180: 74 61 6E 64 49 6E 63 28 30 62 61 78 29 7C 0D 0A tandInc(0bax)|..
000190: 09 43 6F 72 6E 65 72 4C 4C 3A 50 75 74 61 6E 64 .CornerLL:Putand
0001A0: 49 6E 63 28 30 63 38 78 29 7C 0D 0A 09 43 6F 72 Inc(0c8x)|...Cor
0001B0: 6E 65 72 55 4C 3A 50 75 74 61 6E 64 49 6E 63 28 nerUL:PutandInc(
0001C0: 30 63 39 78 29 7C 0D 0A 09 43 6F 72 6E 65 72 55 0c9x)|...CornerU
0001D0: 52 3A 50 75 74 61 6E 64 49 6E 63 28 30 62 62 78 R:PutandInc(0bbx
0001E0: 29 7C 0D 0A 09 43 6F 72 6E 65 72 4C 52 3A 50 75 )|...CornerLR:Pu
0001F0: 74 61 6E 64 49 6E 63 28 30 62 63 78 29 7C 0D 0A tandInc(0bcx)|..
Size : 512 (Real : 512)
000000: 09 6F 75 74 70 75 74 20 61 20 63 68 61 72 61 63 .output a charac
000010: 74 65 72 20 61 6E 64 20 69 6E 63 72 65 6D 65 6E ter and incremen
000020: 74 20 70 6F 69 6E 74 65 72 73 2A 29 0D 0A 0D 0A t pointers*)....
000030: 42 45 47 49 4E 0D 0A 09 53 63 72 65 65 6E 5B 53 BEGIN...Screen[S
000040: 63 72 65 65 6E 50 6F 73 5D 3A 3D 63 68 3B 0D 0A creenPos]:=ch;..
000050: 0D 0A 09 53 63 72 65 65 6E 50 6F 73 3A 3D 53 63 ...ScreenPos:=Sc
000060: 72 65 65 6E 50 6F 73 2B 43 68 61 72 49 6E 63 72 reenPos+CharIncr
000070: 65 6D 65 6E 74 3B 0D 0A 09 49 4E 43 28 43 6F 6C ement;...INC(Col
000080: 4E 6F 29 3B 0D 0A 09 49 46 20 43 6F 6C 4E 6F 3E No);...IF ColNo>
000090: 3D 4C 6F 67 53 63 72 65 65 6E 57 69 64 74 68 20 =LogScreenWidth
0000A0: 54 48 45 4E 0D 0A 09 09 49 46 20 52 6F 77 4E 6F THEN....IF RowNo
0000B0: 3C 28 4C 6F 67 53 63 72 65 65 6E 44 65 70 74 68 <(LogScreenDepth
0000C0: 2D 31 29 20 54 48 45 4E 0D 0A 09 09 09 49 4E 43 -1) THEN.....INC
0000D0: 28 52 6F 77 4E 6F 29 3B 0D 0A 09 09 09 43 6F 6C (RowNo);.....Col
0000E0: 4E 6F 3A 3D 30 3B 0D 0A 09 09 45 4C 53 45 0D 0A No:=0;....ELSE..
0000F0: 09 09 09 44 45 43 28 43 6F 6C 4E 6F 29 3B 0D 0A ...DEC(ColNo);..
000100: 09 09 09 44 45 43 28 53 63 72 65 65 6E 50 6F 73 ...DEC(ScreenPos
000110: 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45 );.....END;....E
000120: 4E 44 3B 0D 0A 09 45 4E 44 20 50 75 74 61 6E 64 ND;...END Putand
000130: 49 6E 63 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 Inc;....PROCEDUR
000140: 45 20 57 72 69 74 65 28 63 68 3A 43 48 41 52 29 E Write(ch:CHAR)
000150: 3B 0D 0A 28 2A 09 57 72 69 74 65 20 61 20 63 68 ;..(*.Write a ch
000160: 61 72 61 63 74 65 72 0D 0A 0D 0A 09 54 68 69 73 aracter.....This
000170: 20 72 6F 75 74 69 6E 65 20 69 73 20 75 73 65 64 routine is used
000180: 20 62 79 20 74 65 72 6D 69 6E 61 6C 20 77 68 65 by terminal whe
000190: 6E 20 74 68 69 73 20 76 65 72 73 69 6F 6E 20 6F n this version o
0001A0: 66 20 53 63 72 65 65 6E 49 4F 20 0D 0A 09 69 73 f ScreenIO ...is
0001B0: 20 69 6E 20 75 73 65 20 62 65 63 61 75 73 65 20 in use because
0001C0: 61 20 66 6C 61 67 20 69 73 20 73 65 74 20 62 79 a flag is set by
0001D0: 20 74 68 65 20 69 6E 69 74 69 61 6C 69 73 61 74 the initialisat
0001E0: 69 6F 6E 20 6F 66 20 74 68 69 73 20 6D 6F 64 75 ion of this modu
0001F0: 6C 65 20 0D 0A 09 74 6F 67 65 74 68 65 72 20 77 le ...together w
Size : 512 (Real : 512)
000000: 72 69 61 67 65 20 72 65 74 75 72 6E 2A 29 0D 0A riage return*)..
000010: 09 4C 46 3D 30 61 78 3B 09 09 09 28 2A 4C 69 6E .LF=0ax;...(*Lin
000020: 65 20 66 65 65 64 2A 29 0D 0A 09 54 41 42 3D 30 e feed*)...TAB=0
000030: 39 78 3B 09 09 28 2A 54 41 42 2A 29 0D 0A 09 42 9x;..(*TAB*)...B
000040: 53 3D 30 38 78 3B 0D 0A 56 41 52 0D 0A 09 53 63 S=08x;..VAR...Sc
000050: 72 65 65 6E 5B 30 66 30 30 30 68 5D 3A 41 52 52 reen[0f000h]:ARR
000060: 41 59 5B 30 2E 2E 53 63 72 65 65 6E 53 69 7A 65 AY[0..ScreenSize
000070: 2D 31 5D 20 4F 46 20 43 48 41 52 3B 0D 0A 09 50 -1] OF CHAR;...P
000080: 43 47 5B 30 66 38 30 30 68 5D 3A 41 52 52 41 59 CG[0f800h]:ARRAY
000090: 5B 30 2E 2E 34 38 5D 20 4F 46 20 43 48 41 52 3B [0..48] OF CHAR;
0000A0: 0D 0A 09 53 63 72 65 65 6E 50 6F 73 3A 43 41 52 ...ScreenPos:CAR
0000B0: 44 49 4E 41 4C 3B 09 28 2A 6E 65 78 74 20 63 68 DINAL;.(*next ch
0000C0: 61 72 61 63 74 65 72 20 70 6F 73 69 74 69 6F 6E aracter position
0000D0: 20 6F 6E 20 73 63 72 65 65 6E 2A 29 0D 0A 09 43 on screen*)...C
0000E0: 6F 6C 4E 6F 2C 52 6F 77 4E 6F 3A 43 41 52 44 49 olNo,RowNo:CARDI
0000F0: 4E 41 4C 3B 09 28 2A 77 68 69 63 68 20 72 65 70 NAL;.(*which rep
000100: 72 65 73 65 6E 74 73 20 74 68 65 20 67 69 76 65 resents the give
000110: 6E 20 70 6F 73 69 74 69 6F 6E 2A 29 0D 0A 0D 0A n position*)....
000120: 09 28 2A 09 43 6F 6E 74 72 6F 6C 20 61 74 74 72 .(*.Control attr
000130: 69 62 75 74 65 73 2A 29 0D 0A 0D 0A 09 48 61 6C ibutes*).....Hal
000140: 66 49 6E 74 65 6E 73 69 74 79 3A 42 4F 4F 4C 45 fIntensity:BOOLE
000150: 41 4E 3D 46 41 4C 53 45 3B 09 28 2A 74 72 75 65 AN=FALSE;.(*true
000160: 20 69 66 20 69 6E 20 68 61 6C 66 20 69 6E 74 65 if in half inte
000170: 6E 73 69 74 79 20 6D 6F 64 65 2A 29 0D 0A 09 45 nsity mode*)...E
000180: 6E 68 61 6E 63 65 64 56 69 64 65 6F 3A 42 4F 4F nhancedVideo:BOO
000190: 4C 45 41 4E 3D 46 41 4C 53 45 3B 0D 0A 09 55 6E LEAN=FALSE;...Un
0001A0: 64 65 72 4C 69 6E 65 3A 42 4F 4F 4C 45 41 4E 3D derLine:BOOLEAN=
0001B0: 46 41 4C 53 45 3B 09 28 2A 74 72 75 65 20 69 66 FALSE;.(*true if
0001C0: 20 69 6E 20 75 6E 64 65 72 6C 69 6E 65 20 6D 6F in underline mo
0001D0: 64 65 2A 29 0D 0A 09 49 6E 76 65 72 73 65 56 69 de*)...InverseVi
0001E0: 64 65 6F 3A 42 4F 4F 4C 45 41 4E 3D 46 41 4C 53 deo:BOOLEAN=FALS
0001F0: 45 3B 0D 0A 09 42 6C 69 6E 6B 69 6E 67 3A 42 4F E;...Blinking:BO
Size : 512 (Real : 512)
000000: 6E 61 62 6C 65 64 3A 3D 54 52 55 45 3B 09 0D 0A nabled:=TRUE;...
000010: 09 53 63 72 65 65 6E 57 69 64 74 68 3A 3D 4C 6F .ScreenWidth:=Lo
000020: 67 53 63 72 65 65 6E 57 69 64 74 68 3B 0D 0A 09 gScreenWidth;...
000030: 53 63 72 65 65 6E 44 65 70 74 68 3A 3D 4C 6F 67 ScreenDepth:=Log
000040: 53 63 72 65 65 6E 44 65 70 74 68 3B 0D 0A 09 45 ScreenDepth;...E
000050: 4E 44 20 53 63 72 65 65 6E 49 4F 2E 0D 0A 1A 1A ND ScreenIO.....
000060: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000070: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000080: 0D 0A 09 45 5E 3A 3D 74 65 6D 70 5E 3B 0D 0A 0D ...E^:=temp^;...
000090: 0A 09 57 65 20 68 61 76 65 20 61 6C 6C 6F 63 61 ..We have alloca
0000A0: 74 65 64 20 22 45 22 20 66 69 72 73 74 20 73 6F ted "E" first so
0000B0: 20 74 68 61 74 20 69 74 20 63 61 6E 20 62 65 20 that it can be
0000C0: 75 73 65 64 20 69 6E 20 74 68 65 0D 0A 09 66 75 used in the...fu
0000D0: 6E 63 74 69 6F 6E 2E 20 57 65 20 63 6F 75 6C 64 nction. We could
0000E0: 20 6E 6F 74 20 73 69 6D 70 6C 79 20 61 73 73 69 not simply assi
0000F0: 67 6E 20 74 68 65 20 70 6F 69 6E 74 65 72 20 72 gn the pointer r
000100: 65 74 75 72 6E 65 64 20 62 79 0D 0A 09 43 72 65 eturned by...Cre
000110: 61 74 65 43 6F 6E 63 61 74 4E 6F 64 65 20 74 6F ateConcatNode to
000120: 20 45 2C 20 73 69 6E 63 65 20 74 68 65 6E 20 74 E, since then t
000130: 68 65 20 45 20 75 73 65 64 20 69 6E 20 74 68 65 he E used in the
000140: 20 66 75 6E 63 74 69 6F 6E 0D 0A 09 77 6F 75 6C function...woul
000150: 64 20 62 65 20 70 6F 69 6E 74 69 6E 67 20 65 6C d be pointing el
000160: 73 65 77 68 65 72 65 2E 20 49 6E 73 74 65 61 64 sewhere. Instead
000170: 2C 20 77 65 20 6D 75 73 74 20 63 6F 70 79 20 74 , we must copy t
000180: 68 65 20 63 6F 6E 74 65 6E 74 73 0D 0A 09 6F 66 he contents...of
000190: 20 74 65 6D 70 20 69 6E 74 6F 20 45 20 73 6F 20 temp into E so
0001A0: 74 68 61 74 20 74 68 65 20 70 6F 69 6E 74 65 72 that the pointer
0001B0: 73 20 72 65 6D 61 69 6E 20 63 6F 72 72 65 63 74 s remain correct
0001C0: 2E 0D 0A 0D 0A 09 54 68 69 73 20 70 61 74 74 65 ......This patte
0001D0: 72 6E 20 22 45 22 20 69 73 20 6E 6F 74 20 79 65 rn "E" is not ye
0001E0: 74 20 72 65 61 64 79 20 74 6F 20 62 65 20 75 73 t ready to be us
0001F0: 65 64 2C 20 73 69 6E 63 65 20 74 68 65 20 70 61 ed, since the pa
Size : 512 (Real : 512)
000000: 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B 0D 0A 09 69 OLEAN=FALSE;...i
000010: 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 0D 0A 28 2A :CARDINAL;....(*
000020: 09 54 68 65 20 6E 65 78 74 20 66 65 77 20 72 6F .The next few ro
000030: 75 74 69 6E 65 73 20 68 61 6E 64 6C 65 20 74 68 utines handle th
000040: 65 20 63 75 72 73 6F 72 0D 0A 0D 0A 09 57 61 73 e cursor.....Was
000050: 55 6E 64 65 72 4C 69 6E 65 64 20 69 73 20 74 72 UnderLined is tr
000060: 75 65 20 69 66 20 74 68 65 20 63 68 61 72 61 63 ue if the charac
000070: 74 65 72 20 75 6E 64 65 72 20 74 68 65 20 63 75 ter under the cu
000080: 72 73 6F 72 0D 0A 09 73 74 61 72 74 65 64 20 6F rsor...started o
000090: 75 74 20 75 6E 64 65 72 6C 69 6E 65 64 0D 0A 09 ut underlined...
0000A0: 0D 0A 09 54 69 6D 65 54 6F 43 68 61 6E 67 65 20 ...TimeToChange
0000B0: 69 73 20 61 20 63 6F 75 6E 74 65 72 20 74 68 61 is a counter tha
0000C0: 74 20 64 65 74 65 72 6D 69 6E 65 73 20 77 68 65 t determines whe
0000D0: 6E 20 74 68 65 20 63 75 72 73 6F 72 20 73 68 6F n the cursor sho
0000E0: 75 6C 64 0D 0A 09 62 65 20 63 68 61 6E 67 65 64 uld...be changed
0000F0: 20 66 72 6F 6D 20 69 74 73 20 63 75 72 72 65 6E from its curren
000100: 74 20 76 61 6C 75 65 20 74 6F 20 69 74 73 20 6E t value to its n
000110: 65 67 61 74 69 76 65 2C 20 74 6F 20 61 6C 6C 6F egative, to allo
000120: 77 20 62 6C 69 6E 6B 69 6E 67 0D 0A 2A 29 0D 0A w blinking..*)..
000130: 56 41 52 09 57 61 73 55 6E 64 65 72 4C 69 6E 65 VAR.WasUnderLine
000140: 64 3A 42 4F 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B d:BOOLEAN=FALSE;
000150: 0D 0A 09 54 69 6D 65 54 6F 43 68 61 6E 67 65 3A ...TimeToChange:
000160: 49 4E 54 45 47 45 52 3D 30 3B 0D 0A 09 4F 75 74 INTEGER=0;...Out
000170: 70 75 74 45 6E 61 62 6C 65 64 3A 42 4F 4F 4C 45 putEnabled:BOOLE
000180: 41 4E 3B 0D 0A 0D 0A 28 2A 09 42 6C 69 6E 6B 20 AN;....(*.Blink
000190: 63 75 72 73 6F 72 20 2D 20 64 65 63 72 65 6D 65 cursor - decreme
0001A0: 6E 74 20 74 69 6D 65 72 2C 20 69 66 20 6E 65 67 nt timer, if neg
0001B0: 61 74 69 76 65 20 72 65 73 65 74 20 61 6E 64 0D ative reset and.
0001C0: 0A 09 63 68 61 6E 67 65 20 74 6F 70 20 62 69 74 ..change top bit
0001D0: 20 6F 66 20 63 68 61 72 61 63 74 65 72 20 75 6E of character un
0001E0: 64 65 72 20 63 75 72 73 6F 72 2A 29 0D 0A 0D 0A der cursor*)....
0001F0: 50 52 4F 43 45 44 55 52 45 20 42 6C 69 6E 6B 43 PROCEDURE BlinkC
Size : 512 (Real : 512)
000000: 49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D IMPLEMENTATION M
000010: 4F 44 55 4C 45 20 53 63 72 65 65 6E 49 4F 3B 0D ODULE ScreenIO;.
000020: 0A 0D 0A 28 2A 09 54 68 69 73 20 69 73 20 74 68 ...(*.This is th
000030: 65 20 6D 65 6D 6F 72 79 20 6D 61 70 70 65 64 20 e memory mapped
000040: 76 65 72 73 69 6F 6E 20 6F 66 20 73 63 72 65 65 version of scree
000050: 6E 20 69 6E 70 75 74 2D 6F 75 74 70 75 74 0D 0A n input-output..
000060: 0D 0A 09 54 6F 20 75 73 65 20 69 74 20 6F 6E 20 ...To use it on
000070: 79 6F 75 72 20 6D 61 63 68 69 6E 65 2C 20 79 6F your machine, yo
000080: 75 20 6D 61 79 20 6E 65 65 64 20 74 6F 20 63 68 u may need to ch
000090: 61 6E 67 65 20 73 6F 6D 65 20 6F 66 20 74 68 65 ange some of the
0000A0: 20 0D 0A 09 63 6F 6E 73 74 61 6E 74 73 20 62 65 ...constants be
0000B0: 6C 6F 77 0D 0A 0D 0A 09 54 68 65 20 6D 6F 64 75 low.....The modu
0000C0: 6C 65 20 61 73 73 75 6D 65 73 20 74 68 61 74 20 le assumes that
0000D0: 74 68 65 20 6D 65 6D 6F 72 79 20 66 6F 72 20 74 the memory for t
0000E0: 68 65 20 73 63 72 65 65 6E 20 69 73 20 63 6F 6E he screen is con
0000F0: 74 69 67 75 6F 75 73 20 0D 0A 09 61 6E 64 20 69 tiguous ...and i
000100: 6E 20 74 68 65 20 64 65 66 61 75 6C 74 20 62 61 n the default ba
000110: 6E 6B 2E 20 28 49 66 20 69 74 20 69 73 20 69 6E nk. (If it is in
000120: 20 61 6E 6F 74 68 65 72 20 62 61 6E 6B 2C 20 79 another bank, y
000130: 6F 75 20 77 69 6C 6C 20 68 61 76 65 20 0D 0A 09 ou will have ...
000140: 74 6F 20 63 68 61 6E 67 65 20 74 68 65 20 63 6F to change the co
000150: 64 65 20 6F 66 20 74 68 65 20 6D 6F 64 75 6C 65 de of the module
000160: 20 61 70 70 72 6F 70 72 69 61 74 65 6C 79 29 0D appropriately).
000170: 0A 0D 0A 09 54 68 65 20 76 61 6C 75 65 73 20 73 ....The values s
000180: 65 74 20 62 65 6C 6F 77 20 61 72 65 20 66 6F 72 et below are for
000190: 20 61 6E 20 4F 73 62 6F 72 6E 65 20 31 20 77 69 an Osborne 1 wi
0001A0: 74 68 20 53 63 72 65 65 6E 20 50 61 63 6B 0D 0A th Screen Pack..
0001B0: 0D 0A 09 4E 6F 74 65 20 74 68 61 74 20 74 68 69 ...Note that thi
0001C0: 73 20 76 65 72 73 69 6F 6E 20 6F 66 20 73 63 72 s version of scr
0001D0: 65 65 6E 69 6F 20 64 6F 65 73 20 6E 6F 74 20 75 eenio does not u
0001E0: 73 65 20 74 68 65 20 74 65 72 6D 69 6E 61 6C 20 se the terminal
0001F0: 0D 0A 09 64 65 66 69 6E 69 74 69 6F 6E 20 66 69 ...definition fi
Size : 512 (Real : 512)
000000: 75 72 73 6F 72 3B 0D 0A 42 45 47 49 4E 0D 0A 09 ursor;..BEGIN...
000010: 44 45 43 28 54 69 6D 65 54 6F 43 68 61 6E 67 65 DEC(TimeToChange
000020: 29 3B 0D 0A 09 49 46 20 54 69 6D 65 54 6F 43 68 );...IF TimeToCh
000030: 61 6E 67 65 3C 30 20 54 48 45 4E 0D 0A 09 09 54 ange<0 THEN....T
000040: 69 6D 65 54 6F 43 68 61 6E 67 65 3A 3D 39 30 30 imeToChange:=900
000050: 3B 09 28 2A 63 68 61 6E 67 65 20 74 6F 20 63 68 ;.(*change to ch
000060: 61 6E 67 65 20 62 6C 69 6E 6B 20 72 61 74 65 2A ange blink rate*
000070: 29 0D 0A 09 09 53 63 72 65 65 6E 5B 53 63 72 65 )....Screen[Scre
000080: 65 6E 50 6F 73 5D 3A 3D 43 48 52 28 4F 52 44 28 enPos]:=CHR(ORD(
000090: 53 63 72 65 65 6E 5B 53 63 72 65 65 6E 50 6F 73 Screen[ScreenPos
0000A0: 5D 29 2B 31 32 38 29 0D 0A 09 09 45 4E 44 0D 0A ])+128)....END..
0000B0: 09 45 4E 44 20 42 6C 69 6E 6B 43 75 72 73 6F 72 .END BlinkCursor
0000C0: 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 ;....PROCEDURE C
0000D0: 6C 65 61 72 43 75 72 73 6F 72 3B 0D 0A 42 45 47 learCursor;..BEG
0000E0: 49 4E 0D 0A 09 49 46 20 28 53 63 72 65 65 6E 5B IN...IF (Screen[
0000F0: 53 63 72 65 65 6E 50 6F 73 5D 3E 37 66 78 29 3C ScreenPos]>7fx)<
000100: 3E 57 61 73 55 6E 64 65 72 4C 69 6E 65 64 20 54 >WasUnderLined T
000110: 48 45 4E 0D 0A 09 09 53 63 72 65 65 6E 5B 53 63 HEN....Screen[Sc
000120: 72 65 65 6E 50 6F 73 5D 3A 3D 43 48 52 28 4F 52 reenPos]:=CHR(OR
000130: 44 28 53 63 72 65 65 6E 5B 53 63 72 65 65 6E 50 D(Screen[ScreenP
000140: 6F 73 5D 29 2B 31 32 38 29 3B 0D 0A 09 09 45 4E os])+128);....EN
000150: 44 3B 0D 0A 09 57 61 73 55 6E 64 65 72 4C 69 6E D;...WasUnderLin
000160: 65 64 3A 3D 46 41 4C 53 45 3B 0D 0A 09 45 4E 44 ed:=FALSE;...END
000170: 20 43 6C 65 61 72 43 75 72 73 6F 72 3B 0D 0A 50 ClearCursor;..P
000180: 52 4F 43 45 44 55 52 45 20 53 65 74 43 75 72 73 ROCEDURE SetCurs
000190: 6F 72 3B 0D 0A 42 45 47 49 4E 0D 0A 09 57 61 73 or;..BEGIN...Was
0001A0: 55 6E 64 65 72 4C 69 6E 65 64 3A 3D 53 63 72 65 UnderLined:=Scre
0001B0: 65 6E 5B 53 63 72 65 65 6E 50 6F 73 5D 3E 3D 38 en[ScreenPos]>=8
0001C0: 30 78 3B 0D 0A 09 53 63 72 65 65 6E 5B 53 63 72 0x;...Screen[Scr
0001D0: 65 65 6E 50 6F 73 5D 3A 3D 43 48 52 28 4F 52 44 eenPos]:=CHR(ORD
0001E0: 28 53 63 72 65 65 6E 5B 53 63 72 65 65 6E 50 6F (Screen[ScreenPo
0001F0: 73 5D 29 2B 31 32 38 29 3B 0D 0A 09 45 4E 44 20 s])+128);...END
Size : 512 (Real : 512)
000000: 6C 65 2E 20 48 65 6E 63 65 2C 20 74 68 65 20 67 le. Hence, the g
000010: 72 61 70 68 69 63 73 20 63 68 61 72 61 63 74 65 raphics characte
000020: 72 73 20 66 6F 72 20 74 68 65 20 62 6F 78 20 61 rs for the box a
000030: 72 65 0D 0A 09 68 61 72 64 20 63 6F 64 65 64 20 re...hard coded
000040: 69 6E 20 74 68 65 20 66 69 6C 65 0D 0A 0D 0A 09 in the file.....
000050: 54 68 69 73 20 76 65 72 73 69 6F 6E 20 77 69 6C This version wil
000060: 6C 20 6E 6F 74 20 73 75 70 70 6F 72 74 20 68 61 l not support ha
000070: 6C 66 20 69 6E 74 65 6E 73 69 74 79 20 6F 6E 20 lf intensity on
000080: 74 68 65 20 4F 73 62 6F 72 6E 65 20 73 69 6E 63 the Osborne sinc
000090: 65 20 0D 0A 09 74 68 61 74 20 66 61 63 69 6C 69 e ...that facili
0000A0: 74 79 20 64 6F 65 73 20 6E 6F 74 20 77 6F 72 6B ty does not work
0000B0: 20 61 73 20 64 6F 63 75 6D 65 6E 74 65 64 2E 20 as documented.
0000C0: 54 68 69 73 20 6D 61 79 20 62 65 20 73 6F 6D 65 This may be some
0000D0: 74 68 69 6E 67 0D 0A 09 74 6F 20 64 6F 20 77 69 thing...to do wi
0000E0: 74 68 20 6D 79 20 4F 73 62 6F 72 6E 65 20 68 61 th my Osborne ha
0000F0: 76 69 6E 67 20 62 65 65 6E 20 68 61 63 6B 65 64 ving been hacked
000100: 0D 0A 0D 0A 09 54 68 69 73 20 76 65 72 73 69 6F .....This versio
000110: 6E 20 77 69 6C 6C 20 6E 6F 74 20 73 63 72 6F 6C n will not scrol
000120: 6C 20 74 68 65 20 73 63 72 65 65 6E 20 65 69 74 l the screen eit
000130: 68 65 72 0D 0A 2A 29 0D 0A 0D 0A 46 52 4F 4D 20 her..*)....FROM
000140: 54 65 72 6D 69 6E 61 6C 20 49 4D 50 4F 52 54 20 Terminal IMPORT
000150: 43 68 61 72 52 6F 75 74 69 6E 65 2C 43 68 61 72 CharRoutine,Char
000160: 45 6E 61 62 6C 65 64 2C 42 6C 69 6E 6B 52 6F 75 Enabled,BlinkRou
000170: 74 69 6E 65 2C 42 6C 69 6E 6B 45 6E 61 62 6C 65 tine,BlinkEnable
000180: 64 3B 0D 0A 46 52 4F 4D 20 46 61 73 74 4D 6F 76 d;..FROM FastMov
000190: 65 20 49 4D 50 4F 52 54 20 4D 6F 76 65 75 70 2C e IMPORT Moveup,
0001A0: 4D 6F 76 65 64 6F 77 6E 3B 0D 0A 46 52 4F 4D 20 Movedown;..FROM
0001B0: 53 59 53 54 45 4D 20 49 4D 50 4F 52 54 20 41 44 SYSTEM IMPORT AD
0001C0: 52 2C 53 49 5A 45 3B 0D 0A 46 52 4F 4D 20 43 50 R,SIZE;..FROM CP
0001D0: 4D 20 49 4D 50 4F 52 54 20 77 63 63 66 63 2C 42 M IMPORT wccfc,B
0001E0: 44 4F 53 3B 0D 0A 28 2A 46 52 4F 4D 20 4F 73 62 DOS;..(*FROM Osb
0001F0: 6F 72 6E 65 20 49 4D 50 4F 52 54 20 42 61 6E 6B orne IMPORT Bank
Size : 512 (Real : 512)
000000: 53 65 74 43 75 72 73 6F 72 3B 0D 0A 0D 0A 50 52 SetCursor;....PR
000010: 4F 43 45 44 55 52 45 20 47 6F 74 6F 78 79 28 78 OCEDURE Gotoxy(x
000020: 2C 79 3A 43 41 52 44 49 4E 41 4C 29 3B 09 09 0D ,y:CARDINAL);...
000030: 0A 0D 0A 28 2A 09 09 50 6F 73 69 74 69 6F 6E 20 ...(*..Position
000040: 74 6F 20 67 69 76 65 6E 20 63 6F 6F 72 64 69 6E to given coordin
000050: 61 74 65 73 0D 0A 09 09 74 6F 70 20 6C 65 66 74 ates....top left
000060: 20 69 73 20 61 6C 77 61 79 73 20 30 2C 30 20 0D is always 0,0 .
000070: 0A 0D 0A 09 09 78 20 69 73 20 63 6F 6C 75 6D 6E .....x is column
000080: 2C 20 79 20 69 73 20 72 6F 77 0D 0A 0D 0A 09 09 , y is row......
000090: 41 20 27 53 74 61 6E 64 61 72 64 27 20 53 63 72 A 'Standard' Scr
0000A0: 65 65 6E 20 69 73 20 38 30 20 62 79 20 32 34 2E een is 80 by 24.
0000B0: 20 54 68 65 20 6C 69 6D 69 74 20 69 73 20 73 65 The limit is se
0000C0: 74 20 62 79 0D 0A 09 09 74 68 65 20 74 65 72 6D t by....the term
0000D0: 69 6E 61 6C 20 64 65 66 69 6E 69 74 69 6F 6E 20 inal definition
0000E0: 66 69 6C 65 09 2A 29 0D 0A 42 45 47 49 4E 0D 0A file.*)..BEGIN..
0000F0: 20 20 20 20 49 46 20 4F 75 74 70 75 74 45 6E 61 IF OutputEna
000100: 62 6C 65 64 20 54 48 45 4E 0D 0A 09 43 6C 65 61 bled THEN...Clea
000110: 72 43 75 72 73 6F 72 3B 0D 0A 09 43 6F 6C 4E 6F rCursor;...ColNo
000120: 3A 3D 78 3B 0D 0A 09 52 6F 77 4E 6F 3A 3D 79 3B :=x;...RowNo:=y;
000130: 0D 0A 09 53 63 72 65 65 6E 50 6F 73 3A 3D 43 6F ...ScreenPos:=Co
000140: 6C 4E 6F 2B 52 6F 77 4E 6F 2A 43 68 61 72 49 6E lNo+RowNo*CharIn
000150: 63 72 65 6D 65 6E 74 2A 52 6F 77 57 69 64 74 68 crement*RowWidth
000160: 3B 0D 0A 09 49 46 20 53 63 72 65 65 6E 50 6F 73 ;...IF ScreenPos
000170: 3E 3D 53 63 72 65 65 6E 53 69 7A 65 20 54 48 45 >=ScreenSize THE
000180: 4E 0D 0A 09 09 43 6F 6C 4E 6F 3A 3D 30 3B 0D 0A N....ColNo:=0;..
000190: 09 09 52 6F 77 4E 6F 3A 3D 30 3B 0D 0A 09 09 53 ..RowNo:=0;....S
0001A0: 63 72 65 65 6E 50 6F 73 3A 3D 30 3B 0D 0A 09 09 creenPos:=0;....
0001B0: 45 4E 44 3B 0D 0A 09 53 65 74 43 75 72 73 6F 72 END;...SetCursor
0001C0: 3B 0D 0A 09 45 4E 44 3B 0D 0A 20 20 20 20 45 4E ;...END;.. EN
0001D0: 44 20 47 6F 74 6F 78 79 3B 0D 0A 0D 0A 50 52 4F D Gotoxy;....PRO
0001E0: 43 45 44 55 52 45 20 50 75 74 61 6E 64 49 6E 63 CEDURE PutandInc
0001F0: 28 63 68 3A 43 48 41 52 29 3B 0D 0A 0D 0A 28 2A (ch:CHAR);....(*
Size : 512 (Real : 512)
000000: 32 3B 2A 29 0D 0A 46 52 4F 4D 20 49 6E 74 4C 6F 2;*)..FROM IntLo
000010: 67 69 63 20 49 4D 50 4F 52 54 20 49 41 4E 44 3B gic IMPORT IAND;
000020: 0D 0A 0D 0A 28 2A 09 53 63 72 65 65 6E 20 68 61 ....(*.Screen ha
000030: 6E 64 6C 69 6E 67 20 72 6F 75 74 69 6E 65 73 20 ndling routines
000040: 66 6F 72 20 63 75 72 73 6F 72 20 70 6F 73 69 74 for cursor posit
000050: 69 6F 6E 2C 20 61 74 74 72 69 62 75 74 65 20 65 ion, attribute e
000060: 74 63 0D 0A 0D 0A 09 53 70 65 63 69 66 69 63 20 tc.....Specific
000070: 74 6F 20 74 68 69 73 20 63 6F 6D 70 69 6C 65 72 to this compiler
000080: 2A 29 0D 0A 0D 0A 43 4F 4E 53 54 09 4C 6F 67 53 *)....CONST.LogS
000090: 63 72 65 65 6E 57 69 64 74 68 3D 38 30 3B 09 28 creenWidth=80;.(
0000A0: 2A 4C 6F 67 69 63 61 6C 20 73 63 72 65 65 6E 20 *Logical screen
0000B0: 77 69 64 74 68 20 0D 0A 09 09 09 09 28 6D 61 6E width ......(man
0000C0: 79 20 70 65 6F 70 6C 65 20 6F 6E 6C 79 20 68 61 y people only ha
0000D0: 76 65 20 38 30 29 2A 29 0D 0A 09 52 6F 77 57 69 ve 80)*)...RowWi
0000E0: 64 74 68 3D 38 30 3B 09 09 28 2A 77 69 64 74 68 dth=80;..(*width
0000F0: 20 6F 66 20 6D 65 6D 6F 72 79 20 66 6F 72 20 6F of memory for o
000100: 6E 65 20 72 6F 77 20 0D 0A 09 09 09 09 28 69 2E ne row ......(i.
000110: 65 2E 20 6E 75 6D 62 65 72 20 6F 66 20 62 79 74 e. number of byt
000120: 65 73 2A 29 0D 0A 09 4C 6F 67 53 63 72 65 65 6E es*)...LogScreen
000130: 44 65 70 74 68 3D 32 34 3B 09 09 28 2A 4C 69 6E Depth=24;..(*Lin
000140: 65 73 20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E es on the screen
000150: 2A 29 0D 0A 09 53 63 72 65 65 6E 53 74 61 72 74 *)...ScreenStart
000160: 3D 30 66 30 30 30 68 3B 09 28 2A 62 61 73 65 20 =0f000h;.(*base
000170: 6F 66 20 73 63 72 65 65 6E 2A 29 0D 0A 09 43 68 of screen*)...Ch
000180: 61 72 49 6E 63 72 65 6D 65 6E 74 3D 31 3B 09 28 arIncrement=1;.(
000190: 2A 6E 75 6D 62 65 72 20 6F 66 20 62 79 74 65 73 *number of bytes
0001A0: 20 62 65 74 77 65 65 6E 20 63 68 61 72 61 63 74 between charact
0001B0: 65 72 73 2A 29 0D 0A 09 53 63 72 65 65 6E 53 69 ers*)...ScreenSi
0001C0: 7A 65 3D 38 30 2A 32 34 3B 09 28 2A 6E 75 6D 62 ze=80*24;.(*numb
0001D0: 65 72 20 6F 66 20 62 79 74 65 73 20 69 6E 20 73 er of bytes in s
0001E0: 63 72 65 65 6E 20 61 72 65 61 2A 29 0D 0A 0D 0A creen area*)....
0001F0: 09 43 52 3D 30 64 78 3B 09 09 09 28 2A 43 61 72 .CR=0dx;...(*Car
Size : 512 (Real : 512)
000000: 6F 77 57 69 64 74 68 2D 31 20 44 4F 0D 0A 09 09 owWidth-1 DO....
000010: 53 63 72 65 65 6E 5B 69 5D 3A 3D 27 20 27 3B 0D Screen[i]:=' ';.
000020: 0A 09 09 45 4E 44 3B 0D 0A 09 53 65 74 43 75 72 ...END;...SetCur
000030: 73 6F 72 3B 0D 0A 09 45 4E 44 3B 0D 0A 20 20 20 sor;...END;..
000040: 20 45 4E 44 20 53 63 72 6F 6C 6C 57 69 6E 64 6F END ScrollWindo
000050: 77 55 70 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 wUp;..PROCEDURE
000060: 53 63 72 6F 6C 6C 57 69 6E 64 6F 77 44 6F 77 6E ScrollWindowDown
000070: 28 53 74 61 72 74 6F 66 57 69 6E 64 6F 77 2C 45 (StartofWindow,E
000080: 6E 64 6F 66 57 69 6E 64 6F 77 3A 43 41 52 44 49 ndofWindow:CARDI
000090: 4E 41 4C 29 3B 0D 0A 42 45 47 49 4E 0D 0A 20 20 NAL);..BEGIN..
0000A0: 20 20 49 46 20 4F 75 74 70 75 74 45 6E 61 62 6C IF OutputEnabl
0000B0: 65 64 20 54 48 45 4E 0D 0A 09 43 6C 65 61 72 43 ed THEN...ClearC
0000C0: 75 72 73 6F 72 3B 0D 0A 09 4D 6F 76 65 64 6F 77 ursor;...Movedow
0000D0: 6E 28 41 44 52 28 53 63 72 65 65 6E 5B 28 53 74 n(ADR(Screen[(St
0000E0: 61 72 74 6F 66 57 69 6E 64 6F 77 2B 31 29 2A 52 artofWindow+1)*R
0000F0: 6F 77 57 69 64 74 68 5D 29 2C 0D 0A 09 09 20 41 owWidth]),.... A
000100: 44 52 28 53 63 72 65 65 6E 5B 28 53 74 61 72 74 DR(Screen[(Start
000110: 6F 66 57 69 6E 64 6F 77 29 2A 52 6F 77 57 69 64 ofWindow)*RowWid
000120: 74 68 5D 29 2C 0D 0A 09 09 20 28 45 6E 64 6F 66 th]),.... (Endof
000130: 57 69 6E 64 6F 77 2D 53 74 61 72 74 6F 66 57 69 Window-StartofWi
000140: 6E 64 6F 77 29 2A 52 6F 77 57 69 64 74 68 29 3B ndow)*RowWidth);
000150: 0D 0A 09 46 4F 52 20 69 3A 3D 45 6E 64 6F 66 57 ...FOR i:=EndofW
000160: 69 6E 64 6F 77 2A 52 6F 77 57 69 64 74 68 20 54 indow*RowWidth T
000170: 4F 20 28 45 6E 64 6F 66 57 69 6E 64 6F 77 2B 31 O (EndofWindow+1
000180: 29 2A 52 6F 77 57 69 64 74 68 2D 31 20 44 4F 0D )*RowWidth-1 DO.
000190: 0A 09 09 53 63 72 65 65 6E 5B 69 5D 3A 3D 27 20 ...Screen[i]:='
0001A0: 27 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 53 65 74 ';....END;...Set
0001B0: 43 75 72 73 6F 72 3B 0D 0A 09 45 4E 44 3B 0D 0A Cursor;...END;..
0001C0: 20 20 20 20 45 4E 44 20 53 63 72 6F 6C 6C 57 69 END ScrollWi
0001D0: 6E 64 6F 77 44 6F 77 6E 3B 0D 0A 0D 0A 50 52 4F ndowDown;....PRO
0001E0: 43 45 44 55 52 45 20 4C 6F 61 64 54 65 72 6D 43 CEDURE LoadTermC
0001F0: 6F 64 65 28 46 3A 46 69 6C 65 4E 61 6D 65 29 3B ode(F:FileName);
Size : 512 (Real : 512)
000000: 63 72 65 65 6E 50 6F 73 2B 31 5D 29 2C 52 6F 77 creenPos+1]),Row
000010: 57 69 64 74 68 2D 43 6F 6C 4E 6F 2D 31 29 3B 0D Width-ColNo-1);.
000020: 0A 09 09 53 63 72 65 65 6E 5B 53 63 72 65 65 6E ...Screen[Screen
000030: 50 6F 73 5D 3A 3D 27 20 27 7C 0D 0A 09 49 6E 73 Pos]:=' '|...Ins
000040: 4C 69 6E 65 3A 28 2A 4D 6F 76 65 20 72 65 73 74 Line:(*Move rest
000050: 20 6F 66 20 73 63 72 65 65 6E 20 64 6F 77 6E 20 of screen down
000060: 6F 6E 65 20 6C 69 6E 65 2C 20 61 64 64 20 62 6C one line, add bl
000070: 61 6E 6B 20 6C 69 6E 65 2A 29 0D 0A 09 09 4D 6F ank line*)....Mo
000080: 76 65 75 70 28 41 44 52 28 53 63 72 65 65 6E 5B veup(ADR(Screen[
000090: 53 63 72 65 65 6E 50 6F 73 2D 43 6F 6C 4E 6F 5D ScreenPos-ColNo]
0000A0: 29 2C 41 44 52 28 53 63 72 65 65 6E 5B 53 63 72 ),ADR(Screen[Scr
0000B0: 65 65 6E 50 6F 73 2D 43 6F 6C 4E 6F 2B 52 6F 77 eenPos-ColNo+Row
0000C0: 57 69 64 74 68 5D 29 2C 0D 0A 09 09 53 63 72 65 Width]),....Scre
0000D0: 65 6E 53 69 7A 65 2D 53 63 72 65 65 6E 50 6F 73 enSize-ScreenPos
0000E0: 2B 43 6F 6C 4E 6F 2D 52 6F 77 57 69 64 74 68 29 +ColNo-RowWidth)
0000F0: 3B 0D 0A 09 09 46 4F 52 20 69 3A 3D 53 63 72 65 ;....FOR i:=Scre
000100: 65 6E 50 6F 73 2D 43 6F 6C 4E 6F 20 54 4F 20 53 enPos-ColNo TO S
000110: 63 72 65 65 6E 50 6F 73 2D 43 6F 6C 4E 6F 2B 52 creenPos-ColNo+R
000120: 6F 77 57 69 64 74 68 2D 31 20 44 4F 0D 0A 09 09 owWidth-1 DO....
000130: 09 53 63 72 65 65 6E 5B 69 5D 3A 3D 27 20 27 3B .Screen[i]:=' ';
000140: 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 7C 0D 0A .....END;....|..
000150: 09 44 65 6C 45 6F 6C 3A 46 4F 52 20 69 3A 3D 53 .DelEol:FOR i:=S
000160: 63 72 65 65 6E 50 6F 73 20 54 4F 20 53 63 72 65 creenPos TO Scre
000170: 65 6E 50 6F 73 2D 43 6F 6C 4E 6F 2B 52 6F 77 57 enPos-ColNo+RowW
000180: 69 64 74 68 2D 31 20 44 4F 20 53 63 72 65 65 6E idth-1 DO Screen
000190: 5B 69 5D 3A 3D 27 20 27 20 45 4E 44 7C 0D 0A 09 [i]:=' ' END|...
0001A0: 44 65 6C 45 6F 73 3A 46 4F 52 20 69 3A 3D 53 63 DelEos:FOR i:=Sc
0001B0: 72 65 65 6E 50 6F 73 20 54 4F 20 53 63 72 65 65 reenPos TO Scree
0001C0: 6E 53 69 7A 65 2D 31 20 44 4F 20 53 63 72 65 65 nSize-1 DO Scree
0001D0: 6E 5B 69 5D 3A 3D 27 20 27 20 45 4E 44 7C 0D 0A n[i]:=' ' END|..
0001E0: 09 43 6C 65 61 72 53 63 72 65 65 6E 3A 0D 0A 09 .ClearScreen:...
0001F0: 09 09 28 2A 4F 73 62 6F 72 6E 65 20 73 70 65 63 ..(*Osborne spec
Size : 512 (Real : 512)
000000: 69 74 68 20 74 68 65 20 61 64 64 72 65 73 73 20 ith the address
000010: 6F 66 20 74 68 69 73 20 72 6F 75 74 69 6E 65 0D of this routine.
000020: 0A 0D 0A 09 54 68 69 73 20 72 6F 75 74 69 6E 65 ....This routine
000030: 20 77 69 6C 6C 20 6E 65 65 64 20 63 68 61 6E 67 will need chang
000040: 69 6E 67 20 66 6F 72 20 64 69 66 66 65 72 65 6E ing for differen
000050: 74 20 76 69 64 65 6F 20 73 79 73 74 65 6D 73 0D t video systems.
000060: 0A 0D 0A 09 54 68 65 20 4F 73 62 6F 72 6E 65 20 ....The Osborne
000070: 31 20 69 73 20 76 65 72 79 20 6C 69 6D 69 74 65 1 is very limite
000080: 64 20 2D 20 61 6C 6C 20 79 6F 75 20 63 61 6E 20 d - all you can
000090: 64 6F 20 69 73 0D 0A 09 75 6E 64 65 72 6C 69 6E do is...underlin
0000A0: 65 20 61 6E 64 20 68 61 6C 66 20 69 6E 74 65 6E e and half inten
0000B0: 73 69 74 79 2E 20 41 6C 6C 20 6F 74 68 65 72 73 sity. All others
0000C0: 20 61 72 65 20 6D 61 70 70 65 64 20 6F 6E 74 6F are mapped onto
0000D0: 20 74 68 65 73 65 20 74 77 6F 0D 0A 2A 29 0D 0A these two..*)..
0000E0: 42 45 47 49 4E 0D 0A 20 20 20 20 49 46 20 4F 75 BEGIN.. IF Ou
0000F0: 74 70 75 74 45 6E 61 62 6C 65 64 20 54 48 45 4E tputEnabled THEN
000100: 0D 0A 09 43 6C 65 61 72 43 75 72 73 6F 72 3B 0D ...ClearCursor;.
000110: 0A 09 49 46 20 63 68 3E 30 37 66 78 20 54 48 45 ..IF ch>07fx THE
000120: 4E 20 63 68 3A 3D 43 48 52 28 4F 52 44 28 63 68 N ch:=CHR(ORD(ch
000130: 29 2D 31 32 38 29 20 45 4E 44 3B 0D 0A 09 49 46 )-128) END;...IF
000140: 20 63 68 3D 43 52 20 54 48 45 4E 0D 0A 09 09 53 ch=CR THEN....S
000150: 63 72 65 65 6E 50 6F 73 3A 3D 53 63 72 65 65 6E creenPos:=Screen
000160: 50 6F 73 2D 43 6F 6C 4E 6F 3B 0D 0A 09 09 43 6F Pos-ColNo;....Co
000170: 6C 4E 6F 3A 3D 30 3B 0D 0A 09 45 4C 53 49 46 20 lNo:=0;...ELSIF
000180: 63 68 3D 4C 46 20 54 48 45 4E 0D 0A 09 09 49 46 ch=LF THEN....IF
000190: 20 52 6F 77 4E 6F 3C 28 4C 6F 67 53 63 72 65 65 RowNo<(LogScree
0001A0: 6E 44 65 70 74 68 2D 31 29 20 54 48 45 4E 0D 0A nDepth-1) THEN..
0001B0: 09 09 09 49 4E 43 28 52 6F 77 4E 6F 29 3B 0D 0A ...INC(RowNo);..
0001C0: 09 09 09 53 63 72 65 65 6E 50 6F 73 3A 3D 53 63 ...ScreenPos:=Sc
0001D0: 72 65 65 6E 50 6F 73 2B 52 6F 77 57 69 64 74 68 reenPos+RowWidth
0001E0: 3B 0D 0A 09 09 09 45 4E 44 0D 0A 09 45 4C 53 49 ;.....END...ELSI
0001F0: 46 20 63 68 3D 42 53 20 54 48 45 4E 0D 0A 09 09 F ch=BS THEN....
Size : 512 (Real : 512)
000000: 69 66 69 63 20 2D 20 68 6F 6D 65 20 73 63 72 65 ific - home scre
000010: 65 6E 20 61 6E 64 20 63 75 72 73 6F 72 20 0D 0A en and cursor ..
000020: 09 09 09 20 70 6F 73 69 74 69 6F 6E 20 61 73 20 ... position as
000030: 73 74 6F 72 65 64 20 69 6E 20 42 49 4F 53 20 74 stored in BIOS t
000040: 61 62 6C 65 73 2A 29 0D 0A 09 09 0D 0A 09 09 09 ables*).........
000050: 28 2A 6E 6F 77 20 63 6C 65 61 72 20 64 69 73 70 (*now clear disp
000060: 6C 61 79 20 6D 65 6D 6F 72 79 2A 29 0D 0A 09 09 lay memory*)....
000070: 20 20 20 20 53 63 72 65 65 6E 5B 30 5D 3A 3D 27 Screen[0]:='
000080: 20 27 3B 0D 0A 09 09 20 20 20 20 4D 6F 76 65 75 ';.... Moveu
000090: 70 28 41 44 52 28 53 63 72 65 65 6E 5B 31 5D 29 p(ADR(Screen[1])
0000A0: 2C 41 44 52 28 53 63 72 65 65 6E 5B 30 5D 29 2C ,ADR(Screen[0]),
0000B0: 53 63 72 65 65 6E 53 69 7A 65 2D 31 29 3B 0D 0A ScreenSize-1);..
0000C0: 09 09 20 20 20 20 53 63 72 65 65 6E 50 6F 73 3A .. ScreenPos:
0000D0: 3D 30 3B 0D 0A 09 09 20 20 20 20 43 6F 6C 4E 6F =0;.... ColNo
0000E0: 3A 3D 30 3B 0D 0A 09 09 20 20 20 20 52 6F 77 4E :=0;.... RowN
0000F0: 6F 3A 3D 30 0D 0A 09 09 20 20 20 20 7C 0D 0A 0D o:=0.... |...
000100: 0A 09 28 2A 20 54 68 65 20 66 6F 6C 6C 6F 77 69 ..(* The followi
000110: 6E 67 20 67 72 61 70 68 69 63 73 20 63 68 61 72 ng graphics char
000120: 61 63 74 65 72 73 20 77 69 6C 6C 20 6E 65 65 64 acters will need
000130: 20 74 6F 20 62 65 20 6D 6F 64 69 66 69 65 64 20 to be modified
000140: 66 6F 72 20 0D 0A 09 20 20 20 64 69 66 66 65 72 for ... differ
000150: 65 6E 74 20 64 69 73 70 6C 61 79 20 73 79 73 74 ent display syst
000160: 65 6D 73 2A 29 0D 0A 0D 0A 09 48 6F 72 69 7A 6F ems*).....Horizo
000170: 6E 74 61 6C 3A 50 75 74 61 6E 64 49 6E 63 28 38 ntal:PutandInc(8
000180: 31 78 29 7C 0D 0A 09 56 65 72 74 69 63 61 6C 3A 1x)|...Vertical:
000190: 50 75 74 61 6E 64 49 6E 63 28 38 30 78 29 7C 0D PutandInc(80x)|.
0001A0: 0A 09 43 6F 72 6E 65 72 4C 4C 3A 50 75 74 61 6E ..CornerLL:Putan
0001B0: 64 49 6E 63 28 38 34 78 29 7C 0D 0A 09 43 6F 72 dInc(84x)|...Cor
0001C0: 6E 65 72 55 4C 3A 50 75 74 61 6E 64 49 6E 63 28 nerUL:PutandInc(
0001D0: 38 32 78 29 7C 0D 0A 09 43 6F 72 6E 65 72 55 52 82x)|...CornerUR
0001E0: 3A 50 75 74 61 6E 64 49 6E 63 28 38 33 78 29 7C :PutandInc(83x)|
0001F0: 0D 0A 09 43 6F 72 6E 65 72 4C 52 3A 50 75 74 61 ...CornerLR:Puta
Size : 512 (Real : 512)
000000: 49 46 20 43 6F 6C 4E 6F 3E 30 20 54 48 45 4E 0D IF ColNo>0 THEN.
000010: 0A 09 09 09 44 45 43 28 43 6F 6C 4E 6F 29 3B 0D ....DEC(ColNo);.
000020: 0A 09 09 09 44 45 43 28 53 63 72 65 65 6E 50 6F ....DEC(ScreenPo
000030: 73 29 3B 0D 0A 09 09 09 53 63 72 65 65 6E 5B 53 s);.....Screen[S
000040: 63 72 65 65 6E 50 6F 73 5D 3A 3D 27 20 27 0D 0A creenPos]:=' '..
000050: 09 09 09 45 4E 44 0D 0A 09 45 4C 53 49 46 20 63 ...END...ELSIF c
000060: 68 3D 54 41 42 20 54 48 45 4E 0D 0A 09 09 4C 4F h=TAB THEN....LO
000070: 4F 50 0D 0A 09 09 09 49 46 20 43 6F 6C 4E 6F 3E OP.....IF ColNo>
000080: 3D 4C 6F 67 53 63 72 65 65 6E 57 69 64 74 68 2D =LogScreenWidth-
000090: 31 20 54 48 45 4E 20 45 58 49 54 20 45 4E 44 3B 1 THEN EXIT END;
0000A0: 0D 0A 09 09 09 53 63 72 65 65 6E 5B 53 63 72 65 .....Screen[Scre
0000B0: 65 6E 50 6F 73 5D 3A 3D 27 20 27 3B 0D 0A 09 09 enPos]:=' ';....
0000C0: 09 49 4E 43 28 53 63 72 65 65 6E 50 6F 73 29 3B .INC(ScreenPos);
0000D0: 0D 0A 09 09 09 49 4E 43 28 43 6F 6C 4E 6F 29 3B .....INC(ColNo);
0000E0: 0D 0A 09 09 09 49 46 20 49 41 4E 44 28 43 6F 6C .....IF IAND(Col
0000F0: 4E 6F 2C 37 29 3D 30 20 54 48 45 4E 20 45 58 49 No,7)=0 THEN EXI
000100: 54 20 45 4E 44 0D 0A 09 09 09 45 4E 44 20 28 2A T END.....END (*
000110: 4C 4F 4F 50 2A 29 0D 0A 09 45 4C 53 45 09 0D 0A LOOP*)...ELSE...
000120: 09 09 49 46 20 55 6E 64 65 72 4C 69 6E 65 20 4F ..IF UnderLine O
000130: 52 20 45 6E 68 61 6E 63 65 64 56 69 64 65 6F 20 R EnhancedVideo
000140: 4F 52 20 42 6C 69 6E 6B 69 6E 67 20 4F 52 20 49 OR Blinking OR I
000150: 6E 76 65 72 73 65 56 69 64 65 6F 20 54 48 45 4E nverseVideo THEN
000160: 20 0D 0A 09 09 09 63 68 3A 3D 43 48 52 28 4F 52 .....ch:=CHR(OR
000170: 44 28 63 68 29 2B 31 32 38 29 0D 0A 09 09 09 45 D(ch)+128).....E
000180: 4E 44 3B 0D 0A 09 09 50 75 74 61 6E 64 49 6E 63 ND;....PutandInc
000190: 28 63 68 29 3B 0D 0A 09 09 45 4E 44 3B 20 28 2A (ch);....END; (*
0001A0: 4E 6F 74 20 43 52 20 6F 72 20 4C 46 20 6F 72 20 Not CR or LF or
0001B0: 54 41 42 2A 29 0D 0A 09 53 65 74 43 75 72 73 6F TAB*)...SetCurso
0001C0: 72 3B 0D 0A 09 45 4E 44 3B 0D 0A 20 20 20 20 45 r;...END;.. E
0001D0: 4E 44 20 57 72 69 74 65 3B 0D 0A 0D 0A 0D 0A 50 ND Write;......P
0001E0: 52 4F 43 45 44 55 52 45 20 53 63 72 65 65 6E 43 ROCEDURE ScreenC
0001F0: 6F 6E 74 72 6F 6C 28 73 3A 45 64 69 74 73 29 3B ontrol(s:Edits);
Size : 512 (Real : 512)
000000: 6E 64 49 6E 63 28 38 35 78 29 7C 0D 0A 09 53 74 ndInc(85x)|...St
000010: 61 72 74 78 79 2C 4D 69 64 64 6C 65 58 59 2C 45 artxy,MiddleXY,E
000020: 6E 64 58 59 3A 28 2A 63 75 72 73 6F 72 20 61 64 ndXY:(*cursor ad
000030: 64 72 65 73 73 69 6E 67 20 2D 20 6E 6F 74 20 72 dressing - not r
000040: 65 71 75 69 72 65 64 2A 29 7C 0D 0A 09 52 69 6E equired*)|...Rin
000050: 67 42 65 6C 6C 3A 69 3A 3D 42 44 4F 53 28 77 63 gBell:i:=BDOS(wc
000060: 63 66 63 2C 37 29 7C 0D 0A 09 4D 6F 76 65 4C 65 cfc,7)|...MoveLe
000070: 66 74 3A 49 46 20 43 6F 6C 4E 6F 3E 30 20 54 48 ft:IF ColNo>0 TH
000080: 45 4E 20 0D 0A 09 09 09 44 45 43 28 43 6F 6C 4E EN .....DEC(ColN
000090: 6F 29 3B 0D 0A 09 09 09 44 45 43 28 53 63 72 65 o);.....DEC(Scre
0000A0: 65 6E 50 6F 73 29 3B 0D 0A 09 09 45 4C 53 49 46 enPos);....ELSIF
0000B0: 20 52 6F 77 4E 6F 3E 30 20 54 48 45 4E 0D 0A 09 RowNo>0 THEN...
0000C0: 09 09 44 45 43 28 52 6F 77 4E 6F 29 3B 0D 0A 09 ..DEC(RowNo);...
0000D0: 09 09 43 6F 6C 4E 6F 3A 3D 4C 6F 67 53 63 72 65 ..ColNo:=LogScre
0000E0: 65 6E 57 69 64 74 68 2D 31 3B 0D 0A 09 09 09 53 enWidth-1;.....S
0000F0: 63 72 65 65 6E 50 6F 73 3A 3D 43 6F 6C 4E 6F 2B creenPos:=ColNo+
000100: 52 6F 77 4E 6F 2A 52 6F 77 57 69 64 74 68 3B 0D RowNo*RowWidth;.
000110: 0A 09 09 09 45 4E 44 7C 0D 0A 09 4D 6F 76 65 52 ....END|...MoveR
000120: 69 67 68 74 3A 49 46 20 43 6F 6C 4E 6F 3C 28 4C ight:IF ColNo<(L
000130: 6F 67 53 63 72 65 65 6E 57 69 64 74 68 2D 31 29 ogScreenWidth-1)
000140: 20 54 48 45 4E 20 0D 0A 09 09 09 49 4E 43 28 43 THEN .....INC(C
000150: 6F 6C 4E 6F 29 3B 0D 0A 09 09 09 49 4E 43 28 53 olNo);.....INC(S
000160: 63 72 65 65 6E 50 6F 73 29 3B 0D 0A 09 09 45 4C creenPos);....EL
000170: 53 49 46 20 52 6F 77 4E 6F 3C 28 4C 6F 67 53 63 SIF RowNo<(LogSc
000180: 72 65 65 6E 44 65 70 74 68 2D 31 29 20 54 48 45 reenDepth-1) THE
000190: 4E 0D 0A 09 09 09 43 6F 6C 4E 6F 3A 3D 30 3B 0D N.....ColNo:=0;.
0001A0: 0A 09 09 09 49 4E 43 28 52 6F 77 4E 6F 29 3B 0D ....INC(RowNo);.
0001B0: 0A 09 09 09 53 63 72 65 65 6E 50 6F 73 3A 3D 52 ....ScreenPos:=R
0001C0: 6F 77 4E 6F 2A 52 6F 77 57 69 64 74 68 3B 0D 0A owNo*RowWidth;..
0001D0: 09 09 09 45 4E 44 7C 0D 0A 09 4D 6F 76 65 44 6F ...END|...MoveDo
0001E0: 77 6E 3A 49 46 20 52 6F 77 4E 6F 3C 28 4C 6F 67 wn:IF RowNo<(Log
0001F0: 53 63 72 65 65 6E 44 65 70 74 68 2D 31 29 20 54 ScreenDepth-1) T
Size : 512 (Real : 512)
000000: 0D 0A 0D 0A 28 2A 09 09 50 65 72 66 6F 72 6D 20 ....(*..Perform
000010: 61 20 73 63 72 65 65 6E 20 63 6F 6E 74 72 6F 6C a screen control
000020: 20 6F 70 65 72 61 74 69 6F 6E 0D 0A 0D 0A 09 09 operation......
000030: 4D 61 79 20 6E 65 65 64 20 61 6C 74 65 72 61 74 May need alterat
000040: 69 6F 6E 20 66 6F 72 20 76 61 72 69 6F 75 73 20 ion for various
000050: 6D 61 63 68 69 6E 65 73 2A 29 0D 0A 0D 0A 42 45 machines*)....BE
000060: 47 49 4E 0D 0A 20 20 20 20 49 46 20 4F 75 74 70 GIN.. IF Outp
000070: 75 74 45 6E 61 62 6C 65 64 20 54 48 45 4E 0D 0A utEnabled THEN..
000080: 09 43 6C 65 61 72 43 75 72 73 6F 72 3B 0D 0A 09 .ClearCursor;...
000090: 43 41 53 45 20 73 20 4F 46 0D 0A 09 44 69 6D 3A CASE s OF...Dim:
0000A0: 48 61 6C 66 49 6E 74 65 6E 73 69 74 79 3A 3D 54 HalfIntensity:=T
0000B0: 52 55 45 7C 0D 0A 09 42 72 69 67 68 74 3A 09 48 RUE|...Bright:.H
0000C0: 61 6C 66 49 6E 74 65 6E 73 69 74 79 3A 3D 46 41 alfIntensity:=FA
0000D0: 4C 53 45 0D 0A 09 09 45 6E 68 61 6E 63 65 64 56 LSE....EnhancedV
0000E0: 69 64 65 6F 3A 3D 54 52 55 45 7C 0D 0A 09 4E 6F ideo:=TRUE|...No
0000F0: 72 6D 61 6C 3A 09 48 61 6C 66 49 6E 74 65 6E 73 rmal:.HalfIntens
000100: 69 74 79 3A 3D 46 41 4C 53 45 3B 0D 0A 09 09 45 ity:=FALSE;....E
000110: 6E 68 61 6E 63 65 64 56 69 64 65 6F 3A 3D 46 41 nhancedVideo:=FA
000120: 4C 53 45 3B 0D 0A 09 09 49 6E 76 65 72 73 65 56 LSE;....InverseV
000130: 69 64 65 6F 3A 3D 46 41 4C 53 45 3B 0D 0A 09 09 ideo:=FALSE;....
000140: 42 6C 69 6E 6B 69 6E 67 3A 3D 46 41 4C 53 45 3B Blinking:=FALSE;
000150: 0D 0A 09 09 55 6E 64 65 72 4C 69 6E 65 3A 3D 46 ....UnderLine:=F
000160: 41 4C 53 45 7C 0D 0A 09 49 6E 76 65 72 73 65 3A ALSE|...Inverse:
000170: 49 6E 76 65 72 73 65 56 69 64 65 6F 3A 3D 54 52 InverseVideo:=TR
000180: 55 45 7C 0D 0A 09 42 6C 69 6E 6B 3A 42 6C 69 6E UE|...Blink:Blin
000190: 6B 69 6E 67 3A 3D 54 52 55 45 7C 0D 0A 09 53 74 king:=TRUE|...St
0001A0: 61 72 74 47 72 61 70 68 2C 45 6E 64 47 72 61 70 artGraph,EndGrap
0001B0: 68 3A 28 2A 64 6F 20 6E 6F 74 68 69 6E 67 2A 29 h:(*do nothing*)
0001C0: 7C 0D 0A 09 44 65 6C 43 68 61 72 3A 28 2A 4D 6F |...DelChar:(*Mo
0001D0: 76 65 20 72 65 73 74 20 6F 66 20 6C 69 6E 65 20 ve rest of line
0001E0: 75 70 20 6F 6E 65 2C 20 61 64 64 20 62 6C 61 6E up one, add blan
0001F0: 6B 20 74 6F 20 65 6E 64 2A 29 0D 0A 09 09 4D 6F k to end*)....Mo
Size : 512 (Real : 512)
000000: 48 45 4E 0D 0A 09 09 09 49 4E 43 28 52 6F 77 4E HEN.....INC(RowN
000010: 6F 29 3B 0D 0A 09 09 09 53 63 72 65 65 6E 50 6F o);.....ScreenPo
000020: 73 3A 3D 53 63 72 65 65 6E 50 6F 73 2B 52 6F 77 s:=ScreenPos+Row
000030: 57 69 64 74 68 3B 0D 0A 09 09 09 45 4E 44 7C 0D Width;.....END|.
000040: 0A 09 4D 6F 76 65 55 70 3A 49 46 20 52 6F 77 4E ..MoveUp:IF RowN
000050: 6F 3E 30 20 54 48 45 4E 0D 0A 09 09 09 44 45 43 o>0 THEN.....DEC
000060: 28 52 6F 77 4E 6F 29 3B 0D 0A 09 09 09 53 63 72 (RowNo);.....Scr
000070: 65 65 6E 50 6F 73 3A 3D 53 63 72 65 65 6E 50 6F eenPos:=ScreenPo
000080: 73 2D 52 6F 77 57 69 64 74 68 3B 0D 0A 09 09 09 s-RowWidth;.....
000090: 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 20 28 2A 43 END;....END; (*C
0000A0: 41 53 45 2A 29 0D 0A 09 53 65 74 43 75 72 73 6F ASE*)...SetCurso
0000B0: 72 3B 0D 0A 09 45 4E 44 3B 0D 0A 20 20 20 20 45 r;...END;.. E
0000C0: 4E 44 20 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C ND ScreenControl
0000D0: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 53 63 72 ;..PROCEDURE Scr
0000E0: 6F 6C 6C 57 69 6E 64 6F 77 55 70 28 53 74 61 72 ollWindowUp(Star
0000F0: 74 6F 66 57 69 6E 64 6F 77 2C 45 6E 64 6F 66 57 tofWindow,EndofW
000100: 69 6E 64 6F 77 3A 43 41 52 44 49 4E 41 4C 29 3B indow:CARDINAL);
000110: 0D 0A 42 45 47 49 4E 0D 0A 20 20 20 20 49 46 20 ..BEGIN.. IF
000120: 4F 75 74 70 75 74 45 6E 61 62 6C 65 64 20 54 48 OutputEnabled TH
000130: 45 4E 0D 0A 09 43 6C 65 61 72 43 75 72 73 6F 72 EN...ClearCursor
000140: 3B 0D 0A 09 4D 6F 76 65 75 70 28 41 44 52 28 53 ;...Moveup(ADR(S
000150: 63 72 65 65 6E 5B 28 53 74 61 72 74 6F 66 57 69 creen[(StartofWi
000160: 6E 64 6F 77 29 2A 52 6F 77 57 69 64 74 68 5D 29 ndow)*RowWidth])
000170: 2C 0D 0A 09 09 20 41 44 52 28 53 63 72 65 65 6E ,.... ADR(Screen
000180: 5B 28 53 74 61 72 74 6F 66 57 69 6E 64 6F 77 2B [(StartofWindow+
000190: 31 29 2A 52 6F 77 57 69 64 74 68 5D 29 2C 0D 0A 1)*RowWidth]),..
0001A0: 09 09 20 28 45 6E 64 6F 66 57 69 6E 64 6F 77 2D .. (EndofWindow-
0001B0: 53 74 61 72 74 6F 66 57 69 6E 64 6F 77 29 2A 52 StartofWindow)*R
0001C0: 6F 77 57 69 64 74 68 29 3B 0D 0A 09 46 4F 52 20 owWidth);...FOR
0001D0: 69 3A 3D 53 74 61 72 74 6F 66 57 69 6E 64 6F 77 i:=StartofWindow
0001E0: 2A 52 6F 77 57 69 64 74 68 20 54 4F 20 28 53 74 *RowWidth TO (St
0001F0: 61 72 74 6F 66 57 69 6E 64 6F 77 2B 31 29 2A 52 artofWindow+1)*R
Size : 512 (Real : 512)
000000: 76 65 64 6F 77 6E 28 41 44 52 28 53 63 72 65 65 vedown(ADR(Scree
000010: 6E 5B 53 63 72 65 65 6E 50 6F 73 2B 31 5D 29 2C n[ScreenPos+1]),
000020: 41 44 52 28 53 63 72 65 65 6E 5B 53 63 72 65 65 ADR(Screen[Scree
000030: 6E 50 6F 73 5D 29 2C 52 6F 77 57 69 64 74 68 2D nPos]),RowWidth-
000040: 43 6F 6C 4E 6F 2D 31 29 3B 0D 0A 09 09 53 63 72 ColNo-1);....Scr
000050: 65 65 6E 5B 53 63 72 65 65 6E 50 6F 73 2D 43 6F een[ScreenPos-Co
000060: 6C 4E 6F 2B 52 6F 77 57 69 64 74 68 2D 31 5D 3A lNo+RowWidth-1]:
000070: 3D 27 20 27 7C 0D 0A 09 44 65 6C 4C 69 6E 65 3A =' '|...DelLine:
000080: 28 2A 4D 6F 76 65 20 72 65 73 74 20 6F 66 20 73 (*Move rest of s
000090: 63 72 65 65 6E 20 75 70 20 61 20 6C 69 6E 65 2C creen up a line,
0000A0: 20 61 64 64 20 62 6C 61 6E 6B 20 6C 69 6E 65 20 add blank line
0000B0: 61 74 20 65 6E 64 2A 29 0D 0A 09 09 4D 6F 76 65 at end*)....Move
0000C0: 64 6F 77 6E 28 41 44 52 28 53 63 72 65 65 6E 5B down(ADR(Screen[
0000D0: 53 63 72 65 65 6E 50 6F 73 2D 43 6F 6C 4E 6F 2B ScreenPos-ColNo+
0000E0: 52 6F 77 57 69 64 74 68 5D 29 2C 0D 0A 09 09 09 RowWidth]),.....
0000F0: 20 41 44 52 28 53 63 72 65 65 6E 5B 53 63 72 65 ADR(Screen[Scre
000100: 65 6E 50 6F 73 2D 43 6F 6C 4E 6F 5D 29 2C 0D 0A enPos-ColNo]),..
000110: 09 09 09 53 63 72 65 65 6E 53 69 7A 65 2D 53 63 ...ScreenSize-Sc
000120: 72 65 65 6E 50 6F 73 2B 43 6F 6C 4E 6F 2D 52 6F reenPos+ColNo-Ro
000130: 77 57 69 64 74 68 29 3B 0D 0A 09 09 46 4F 52 20 wWidth);....FOR
000140: 69 3A 3D 53 63 72 65 65 6E 53 69 7A 65 2D 52 6F i:=ScreenSize-Ro
000150: 77 57 69 64 74 68 20 54 4F 20 53 63 72 65 65 6E wWidth TO Screen
000160: 53 69 7A 65 2D 31 20 44 4F 20 53 63 72 65 65 6E Size-1 DO Screen
000170: 5B 69 5D 3A 3D 27 20 27 20 45 4E 44 3B 0D 0A 09 [i]:=' ' END;...
000180: 09 7C 0D 0A 09 49 6E 73 43 68 61 72 3A 28 2A 4D .|...InsChar:(*M
000190: 6F 76 65 20 72 65 73 74 20 6F 66 20 6C 69 6E 65 ove rest of line
0001A0: 20 72 69 67 68 74 20 6F 6E 65 20 63 68 61 72 61 right one chara
0001B0: 63 74 65 72 2C 20 6C 61 73 74 20 63 68 61 72 61 cter, last chara
0001C0: 63 74 65 72 20 6D 61 79 20 62 65 20 6C 6F 73 74 cter may be lost
0001D0: 2A 29 0D 0A 09 09 4D 6F 76 65 75 70 28 41 44 52 *)....Moveup(ADR
0001E0: 28 53 63 72 65 65 6E 5B 53 63 72 65 65 6E 50 6F (Screen[ScreenPo
0001F0: 73 5D 29 2C 41 44 52 28 53 63 72 65 65 6E 5B 53 s]),ADR(Screen[S
Size : 512 (Real : 512)
000000: 43 61 72 72 69 61 67 65 20 72 65 74 75 72 6E 2A Carriage return*
000010: 29 0D 0A 09 4C 46 3D 30 61 78 3B 09 09 09 28 2A )...LF=0ax;...(*
000020: 4C 69 6E 65 20 66 65 65 64 2A 29 0D 0A 09 54 41 Line feed*)...TA
000030: 42 3D 30 39 78 3B 09 09 28 2A 54 41 42 2A 29 0D B=09x;..(*TAB*).
000040: 0A 09 42 53 3D 30 38 78 3B 0D 0A 56 41 52 0D 0A ..BS=08x;..VAR..
000050: 09 4F 75 74 70 75 74 45 6E 61 62 6C 65 64 3A 42 .OutputEnabled:B
000060: 4F 4F 4C 45 41 4E 3B 0D 0A 09 53 63 72 65 65 6E OOLEAN;...Screen
000070: 5B 30 66 30 30 30 68 5D 3A 41 52 52 41 59 5B 30 [0f000h]:ARRAY[0
000080: 2E 2E 53 63 72 65 65 6E 53 69 7A 65 2D 31 5D 20 ..ScreenSize-1]
000090: 4F 46 20 43 48 41 52 3B 0D 0A 09 53 63 72 65 65 OF CHAR;...Scree
0000A0: 6E 50 6F 73 3A 43 41 52 44 49 4E 41 4C 3B 09 28 nPos:CARDINAL;.(
0000B0: 2A 6E 65 78 74 20 63 68 61 72 61 63 74 65 72 20 *next character
0000C0: 70 6F 73 69 74 69 6F 6E 20 6F 6E 20 73 63 72 65 position on scre
0000D0: 65 6E 2A 29 0D 0A 09 43 6F 6C 4E 6F 2C 52 6F 77 en*)...ColNo,Row
0000E0: 4E 6F 3A 43 41 52 44 49 4E 41 4C 3B 09 28 2A 77 No:CARDINAL;.(*w
0000F0: 68 69 63 68 20 72 65 70 72 65 73 65 6E 74 73 20 hich represents
000100: 74 68 65 20 67 69 76 65 6E 20 70 6F 73 69 74 69 the given positi
000110: 6F 6E 2A 29 0D 0A 0D 0A 09 28 2A 09 43 6F 6E 74 on*).....(*.Cont
000120: 72 6F 6C 20 61 74 74 72 69 62 75 74 65 73 2A 29 rol attributes*)
000130: 0D 0A 0D 0A 09 48 61 6C 66 49 6E 74 65 6E 73 69 .....HalfIntensi
000140: 74 79 3A 42 4F 4F 4C 45 41 4E 3D 46 41 4C 53 45 ty:BOOLEAN=FALSE
000150: 3B 09 28 2A 74 72 75 65 20 69 66 20 69 6E 20 68 ;.(*true if in h
000160: 61 6C 66 20 69 6E 74 65 6E 73 69 74 79 20 6D 6F alf intensity mo
000170: 64 65 2A 29 0D 0A 09 45 6E 68 61 6E 63 65 64 56 de*)...EnhancedV
000180: 69 64 65 6F 3A 42 4F 4F 4C 45 41 4E 3D 46 41 4C ideo:BOOLEAN=FAL
000190: 53 45 3B 0D 0A 09 55 6E 64 65 72 4C 69 6E 65 3A SE;...UnderLine:
0001A0: 42 4F 4F 4C 45 41 4E 3D 46 41 4C 53 45 3B 09 28 BOOLEAN=FALSE;.(
0001B0: 2A 74 72 75 65 20 69 66 20 69 6E 20 75 6E 64 65 *true if in unde
0001C0: 72 6C 69 6E 65 20 6D 6F 64 65 2A 29 0D 0A 09 49 rline mode*)...I
0001D0: 6E 76 65 72 73 65 56 69 64 65 6F 3A 42 4F 4F 4C nverseVideo:BOOL
0001E0: 45 41 4E 3D 46 41 4C 53 45 3B 0D 0A 09 42 6C 69 EAN=FALSE;...Bli
0001F0: 6E 6B 69 6E 67 3A 42 4F 4F 4C 45 41 4E 3D 46 41 nking:BOOLEAN=FA
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: 0D 0A 42 45 47 49 4E 0D 0A 09 28 2A 6E 6F 74 20 ..BEGIN...(*not
000010: 69 6D 70 6C 65 6D 65 6E 74 65 64 20 69 6E 20 74 implemented in t
000020: 68 69 73 20 76 65 72 73 69 6F 6E 2A 29 0D 0A 09 his version*)...
000030: 45 4E 44 20 4C 6F 61 64 54 65 72 6D 43 6F 64 65 END LoadTermCode
000040: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 6C 69 ;..PROCEDURE Cli
000050: 70 28 78 31 2C 79 31 2C 78 32 2C 79 32 3A 43 41 p(x1,y1,x2,y2:CA
000060: 52 44 49 4E 41 4C 29 3B 0D 0A 42 45 47 49 4E 0D RDINAL);..BEGIN.
000070: 0A 09 28 2A 6E 6F 74 20 69 6D 70 6C 65 6D 65 6E ..(*not implemen
000080: 74 65 64 20 69 6E 20 74 68 69 73 20 76 65 72 73 ted in this vers
000090: 69 6F 6E 2A 29 0D 0A 09 45 4E 44 20 43 6C 69 70 ion*)...END Clip
0000A0: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 20 44 72 ;..PROCEDURE Dr
0000B0: 61 77 42 6F 78 28 78 31 2C 79 31 2C 78 32 2C 79 awBox(x1,y1,x2,y
0000C0: 32 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A 0D 0A 2:CARDINAL);....
0000D0: 28 2A 09 09 64 72 61 77 20 61 20 62 6F 78 20 66 (*..draw a box f
0000E0: 6F 72 20 61 20 77 69 6E 64 6F 77 20 6F 6E 20 74 or a window on t
0000F0: 68 65 20 73 63 72 65 65 6E 0D 0A 0D 0A 09 09 78 he screen......x
000100: 31 2C 79 31 20 20 69 73 20 74 68 65 20 6C 6F 77 1,y1 is the low
000110: 65 72 20 6C 65 66 74 20 63 6F 72 6E 65 72 0D 0A er left corner..
000120: 09 09 78 32 2C 79 32 20 20 69 73 20 75 70 70 65 ..x2,y2 is uppe
000130: 72 20 72 69 67 68 74 20 63 6F 72 6E 65 72 2A 29 r right corner*)
000140: 0D 0A 56 41 52 09 69 3A 43 41 52 44 49 4E 41 4C ..VAR.i:CARDINAL
000150: 3B 0D 0A 42 45 47 49 4E 0D 0A 20 20 20 20 49 46 ;..BEGIN.. IF
000160: 20 4F 75 74 70 75 74 45 6E 61 62 6C 65 64 20 54 OutputEnabled T
000170: 48 45 4E 0D 0A 09 47 6F 74 6F 78 79 28 78 31 2C HEN...Gotoxy(x1,
000180: 79 31 29 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E y1);...ScreenCon
000190: 74 72 6F 6C 28 53 74 61 72 74 47 72 61 70 68 29 trol(StartGraph)
0001A0: 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 72 6F ;...ScreenContro
0001B0: 6C 28 43 6F 72 6E 65 72 4C 4C 29 3B 0D 0A 09 46 l(CornerLL);...F
0001C0: 4F 52 20 69 3A 3D 78 31 2B 31 20 54 4F 20 78 32 OR i:=x1+1 TO x2
0001D0: 2D 31 20 44 4F 20 53 63 72 65 65 6E 43 6F 6E 74 -1 DO ScreenCont
0001E0: 72 6F 6C 28 48 6F 72 69 7A 6F 6E 74 61 6C 29 20 rol(Horizontal)
0001F0: 45 4E 44 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E END;...ScreenCon
Size : 512 (Real : 512)
000000: 49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 4D IMPLEMENTATION M
000010: 4F 44 55 4C 45 20 53 63 72 65 65 6E 49 4F 3B 0D ODULE ScreenIO;.
000020: 0A 0D 0A 28 2A 09 54 68 69 73 20 69 73 20 74 68 ...(*.This is th
000030: 65 20 6D 65 6D 6F 72 79 20 6D 61 70 70 65 64 20 e memory mapped
000040: 76 65 72 73 69 6F 6E 20 6F 66 20 73 63 72 65 65 version of scree
000050: 6E 20 69 6E 70 75 74 2D 6F 75 74 70 75 74 0D 0A n input-output..
000060: 0D 0A 09 54 6F 20 75 73 65 20 69 74 20 6F 6E 20 ...To use it on
000070: 79 6F 75 72 20 6D 61 63 68 69 6E 65 2C 20 79 6F your machine, yo
000080: 75 20 6D 61 79 20 6E 65 65 64 20 74 6F 20 63 68 u may need to ch
000090: 61 6E 67 65 20 73 6F 6D 65 20 6F 66 20 74 68 65 ange some of the
0000A0: 20 0D 0A 09 63 6F 6E 73 74 61 6E 74 73 20 62 65 ...constants be
0000B0: 6C 6F 77 0D 0A 0D 0A 09 54 68 65 20 6D 6F 64 75 low.....The modu
0000C0: 6C 65 20 61 73 73 75 6D 65 73 20 74 68 61 74 20 le assumes that
0000D0: 74 68 65 20 6D 65 6D 6F 72 79 20 66 6F 72 20 74 the memory for t
0000E0: 68 65 20 73 63 72 65 65 6E 20 69 73 20 63 6F 6E he screen is con
0000F0: 74 69 67 75 6F 75 73 20 0D 0A 09 61 6E 64 20 69 tiguous ...and i
000100: 6E 20 74 68 65 20 64 65 66 61 75 6C 74 20 62 61 n the default ba
000110: 6E 6B 2E 20 28 49 66 20 69 74 20 69 73 20 69 6E nk. (If it is in
000120: 20 61 6E 6F 74 68 65 72 20 62 61 6E 6B 2C 20 79 another bank, y
000130: 6F 75 20 77 69 6C 6C 20 68 61 76 65 20 0D 0A 09 ou will have ...
000140: 74 6F 20 63 68 61 6E 67 65 20 74 68 65 20 63 6F to change the co
000150: 64 65 20 6F 66 20 74 68 65 20 6D 6F 64 75 6C 65 de of the module
000160: 20 61 70 70 72 6F 70 72 69 61 74 65 6C 79 29 0D appropriately).
000170: 0A 0D 0A 09 54 68 65 20 76 61 6C 75 65 73 20 73 ....The values s
000180: 65 74 20 62 65 6C 6F 77 20 61 72 65 20 66 6F 72 et below are for
000190: 20 61 6E 20 4F 73 62 6F 72 6E 65 20 31 20 77 69 an Osborne 1 wi
0001A0: 74 68 20 53 63 72 65 65 6E 20 50 61 63 6B 0D 0A th Screen Pack..
0001B0: 0D 0A 09 4E 6F 74 65 20 74 68 61 74 20 74 68 69 ...Note that thi
0001C0: 73 20 76 65 72 73 69 6F 6E 20 6F 66 20 73 63 72 s version of scr
0001D0: 65 65 6E 69 6F 20 64 6F 65 73 20 6E 6F 74 20 75 eenio does not u
0001E0: 73 65 20 74 68 65 20 74 65 72 6D 69 6E 61 6C 20 se the terminal
0001F0: 0D 0A 09 64 65 66 69 6E 69 74 69 6F 6E 20 66 69 ...definition fi
Size : 512 (Real : 512)
000000: 74 72 6F 6C 28 43 6F 72 6E 65 72 4C 52 29 3B 0D trol(CornerLR);.
000010: 0A 09 47 6F 74 6F 78 79 28 78 31 2C 79 32 29 3B ..Gotoxy(x1,y2);
000020: 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C ...ScreenControl
000030: 28 43 6F 72 6E 65 72 55 4C 29 3B 0D 0A 09 46 4F (CornerUL);...FO
000040: 52 20 69 3A 3D 78 31 2B 31 20 54 4F 20 78 32 2D R i:=x1+1 TO x2-
000050: 31 20 44 4F 20 53 63 72 65 65 6E 43 6F 6E 74 72 1 DO ScreenContr
000060: 6F 6C 28 48 6F 72 69 7A 6F 6E 74 61 6C 29 20 45 ol(Horizontal) E
000070: 4E 44 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 ND;...ScreenCont
000080: 72 6F 6C 28 43 6F 72 6E 65 72 55 52 29 3B 0D 0A rol(CornerUR);..
000090: 09 46 4F 52 20 69 3A 3D 79 32 2B 31 20 54 4F 20 .FOR i:=y2+1 TO
0000A0: 79 31 2D 31 20 20 44 4F 0D 0A 09 09 47 6F 74 6F y1-1 DO....Goto
0000B0: 78 79 28 78 32 2C 69 29 3B 0D 0A 09 09 53 63 72 xy(x2,i);....Scr
0000C0: 65 65 6E 43 6F 6E 74 72 6F 6C 28 56 65 72 74 69 eenControl(Verti
0000D0: 63 61 6C 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 cal);....END;...
0000E0: 46 4F 52 20 69 3A 3D 79 32 2B 31 20 54 4F 20 79 FOR i:=y2+1 TO y
0000F0: 31 2D 31 20 44 4F 0D 0A 09 09 47 6F 74 6F 78 79 1-1 DO....Gotoxy
000100: 28 78 31 2C 69 29 3B 0D 0A 09 09 53 63 72 65 65 (x1,i);....Scree
000110: 6E 43 6F 6E 74 72 6F 6C 28 56 65 72 74 69 63 61 nControl(Vertica
000120: 6C 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 45 4E l);....END;...EN
000130: 44 3B 0D 0A 20 20 20 20 45 4E 44 20 44 72 61 77 D;.. END Draw
000140: 42 6F 78 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 Box;..PROCEDURE
000150: 4F 75 74 70 75 74 54 6F 53 63 72 65 65 6E 28 4F OutputToScreen(O
000160: 6E 3A 42 4F 4F 4C 45 41 4E 29 3B 0D 0A 42 45 47 n:BOOLEAN);..BEG
000170: 49 4E 0D 0A 09 4F 75 74 70 75 74 45 6E 61 62 6C IN...OutputEnabl
000180: 65 64 3A 3D 4F 6E 0D 0A 09 45 4E 44 20 4F 75 74 ed:=On...END Out
000190: 70 75 74 54 6F 53 63 72 65 65 6E 3B 09 0D 0A 42 putToScreen;...B
0001A0: 45 47 49 4E 0D 0A 09 4F 75 74 70 75 74 45 6E 61 EGIN...OutputEna
0001B0: 62 6C 65 64 3A 3D 54 52 55 45 3B 0D 0A 09 28 2A bled:=TRUE;...(*
0001C0: 09 53 65 74 20 75 70 20 50 43 47 20 43 68 61 72 .Set up PCG Char
0001D0: 61 63 74 65 72 73 2A 29 0D 0A 09 46 4F 52 20 69 acters*)...FOR i
0001E0: 3A 3D 30 20 54 4F 20 36 2A 31 36 2D 31 20 44 4F :=0 TO 6*16-1 DO
0001F0: 20 50 43 47 5B 69 5D 3A 3D 30 78 20 45 4E 44 3B PCG[i]:=0x END;
Size : 512 (Real : 512)
000000: 6C 65 2E 20 48 65 6E 63 65 2C 20 74 68 65 20 67 le. Hence, the g
000010: 72 61 70 68 69 63 73 20 63 68 61 72 61 63 74 65 raphics characte
000020: 72 73 20 66 6F 72 20 74 68 65 20 62 6F 78 20 61 rs for the box a
000030: 72 65 0D 0A 09 68 61 72 64 20 63 6F 64 65 64 20 re...hard coded
000040: 69 6E 20 74 68 65 20 66 69 6C 65 0D 0A 0D 0A 09 in the file.....
000050: 54 68 69 73 20 76 65 72 73 69 6F 6E 20 77 69 6C This version wil
000060: 6C 20 6E 6F 74 20 73 75 70 70 6F 72 74 20 68 61 l not support ha
000070: 6C 66 20 69 6E 74 65 6E 73 69 74 79 20 6F 6E 20 lf intensity on
000080: 74 68 65 20 4F 73 62 6F 72 6E 65 20 73 69 6E 63 the Osborne sinc
000090: 65 20 0D 0A 09 74 68 61 74 20 66 61 63 69 6C 69 e ...that facili
0000A0: 74 79 20 64 6F 65 73 20 6E 6F 74 20 77 6F 72 6B ty does not work
0000B0: 20 61 73 20 64 6F 63 75 6D 65 6E 74 65 64 2E 20 as documented.
0000C0: 54 68 69 73 20 6D 61 79 20 62 65 20 73 6F 6D 65 This may be some
0000D0: 74 68 69 6E 67 0D 0A 09 74 6F 20 64 6F 20 77 69 thing...to do wi
0000E0: 74 68 20 6D 79 20 4F 73 62 6F 72 6E 65 20 68 61 th my Osborne ha
0000F0: 76 69 6E 67 20 62 65 65 6E 20 68 61 63 6B 65 64 ving been hacked
000100: 0D 0A 0D 0A 09 54 68 69 73 20 76 65 72 73 69 6F .....This versio
000110: 6E 20 77 69 6C 6C 20 6E 6F 74 20 73 63 72 6F 6C n will not scrol
000120: 6C 20 74 68 65 20 73 63 72 65 65 6E 20 65 69 74 l the screen eit
000130: 68 65 72 0D 0A 2A 29 0D 0A 0D 0A 46 52 4F 4D 20 her..*)....FROM
000140: 54 65 72 6D 69 6E 61 6C 20 49 4D 50 4F 52 54 20 Terminal IMPORT
000150: 43 68 61 72 52 6F 75 74 69 6E 65 2C 43 68 61 72 CharRoutine,Char
000160: 45 6E 61 62 6C 65 64 2C 42 6C 69 6E 6B 52 6F 75 Enabled,BlinkRou
000170: 74 69 6E 65 2C 42 6C 69 6E 6B 45 6E 61 62 6C 65 tine,BlinkEnable
000180: 64 3B 0D 0A 46 52 4F 4D 20 46 61 73 74 4D 6F 76 d;..FROM FastMov
000190: 65 20 49 4D 50 4F 52 54 20 4D 6F 76 65 75 70 2C e IMPORT Moveup,
0001A0: 4D 6F 76 65 64 6F 77 6E 3B 0D 0A 46 52 4F 4D 20 Movedown;..FROM
0001B0: 53 59 53 54 45 4D 20 49 4D 50 4F 52 54 20 41 44 SYSTEM IMPORT AD
0001C0: 52 2C 53 49 5A 45 3B 0D 0A 46 52 4F 4D 20 43 50 R,SIZE;..FROM CP
0001D0: 4D 20 49 4D 50 4F 52 54 20 77 63 63 66 63 2C 42 M IMPORT wccfc,B
0001E0: 44 4F 53 3B 0D 0A 28 2A 46 52 4F 4D 20 4F 73 62 DOS;..(*FROM Osb
0001F0: 6F 72 6E 65 20 49 4D 50 4F 52 54 20 42 61 6E 6B orne IMPORT Bank
Size : 512 (Real : 512)
000000: 0D 0A 09 46 4F 52 20 69 3A 3D 30 20 54 4F 20 31 ...FOR i:=0 TO 1
000010: 30 20 44 4F 20 50 43 47 5B 69 5D 3A 3D 33 63 78 0 DO PCG[i]:=3cx
000020: 20 45 4E 44 3B 0D 0A 09 28 2A 09 48 6F 72 69 7A END;...(*.Horiz
000030: 6F 6E 74 61 6C 20 62 61 72 2A 29 0D 0A 09 46 4F ontal bar*)...FO
000040: 52 20 69 3A 3D 31 36 2B 33 20 54 4F 20 31 36 2B R i:=16+3 TO 16+
000050: 33 2B 34 20 44 4F 20 50 43 47 5B 69 5D 3A 3D 30 3+4 DO PCG[i]:=0
000060: 66 66 78 20 45 4E 44 3B 0D 0A 09 28 2A 09 55 70 ffx END;...(*.Up
000070: 70 65 72 20 4C 65 66 74 2A 29 0D 0A 09 46 4F 52 per Left*)...FOR
000080: 20 69 3A 3D 32 2A 31 36 2B 33 20 54 4F 20 32 2A i:=2*16+3 TO 2*
000090: 31 36 2B 33 2B 34 20 44 4F 20 50 43 47 5B 69 5D 16+3+4 DO PCG[i]
0000A0: 3A 3D 33 66 78 20 45 4E 44 3B 0D 0A 09 46 4F 52 :=3fx END;...FOR
0000B0: 20 69 3A 3D 32 2A 31 36 2B 33 2B 35 20 54 4F 20 i:=2*16+3+5 TO
0000C0: 33 2A 31 36 2D 31 20 44 4F 20 50 43 47 5B 69 5D 3*16-1 DO PCG[i]
0000D0: 3A 3D 33 63 78 20 45 4E 44 3B 0D 0A 09 28 2A 09 :=3cx END;...(*.
0000E0: 55 70 70 65 72 20 52 69 67 68 74 2A 29 0D 0A 09 Upper Right*)...
0000F0: 46 4F 52 20 69 3A 3D 33 2A 31 36 2B 33 20 54 4F FOR i:=3*16+3 TO
000100: 20 33 2A 31 36 2B 33 2B 34 20 44 4F 20 50 43 47 3*16+3+4 DO PCG
000110: 5B 69 5D 3A 3D 30 66 63 78 20 45 4E 44 3B 0D 0A [i]:=0fcx END;..
000120: 09 46 4F 52 20 69 3A 3D 33 2A 31 36 2B 33 2B 35 .FOR i:=3*16+3+5
000130: 20 54 4F 20 34 2A 31 36 2D 31 20 44 4F 20 50 43 TO 4*16-1 DO PC
000140: 47 5B 69 5D 3A 3D 33 63 78 20 45 4E 44 3B 0D 0A G[i]:=3cx END;..
000150: 09 28 2A 09 4C 6F 77 65 72 20 4C 65 66 74 2A 29 .(*.Lower Left*)
000160: 0D 0A 09 46 4F 52 20 69 3A 3D 34 2A 31 36 20 54 ...FOR i:=4*16 T
000170: 4F 20 34 2A 31 36 2B 32 20 44 4F 20 50 43 47 5B O 4*16+2 DO PCG[
000180: 69 5D 3A 3D 33 63 78 20 45 4E 44 3B 0D 0A 09 46 i]:=3cx END;...F
000190: 4F 52 20 69 3A 3D 34 2A 31 36 2B 33 20 54 4F 20 OR i:=4*16+3 TO
0001A0: 34 2A 31 36 2B 33 2B 34 20 44 4F 20 50 43 47 5B 4*16+3+4 DO PCG[
0001B0: 69 5D 3A 3D 33 66 78 20 45 4E 44 3B 0D 0A 09 28 i]:=3fx END;...(
0001C0: 2A 09 4C 6F 77 65 72 20 52 69 67 68 74 2A 29 0D *.Lower Right*).
0001D0: 0A 09 46 4F 52 20 69 3A 3D 35 2A 31 36 20 54 4F ..FOR i:=5*16 TO
0001E0: 20 35 2A 31 36 2B 32 20 44 4F 20 50 43 47 5B 69 5*16+2 DO PCG[i
0001F0: 5D 3A 3D 30 33 63 78 20 45 4E 44 3B 0D 0A 09 46 ]:=03cx END;...F
Size : 512 (Real : 512)
000000: 32 3B 2A 29 0D 0A 46 52 4F 4D 20 49 6E 74 4C 6F 2;*)..FROM IntLo
000010: 67 69 63 20 49 4D 50 4F 52 54 20 49 41 4E 44 3B gic IMPORT IAND;
000020: 0D 0A 0D 0A 28 2A 09 53 63 72 65 65 6E 20 68 61 ....(*.Screen ha
000030: 6E 64 6C 69 6E 67 20 72 6F 75 74 69 6E 65 73 20 ndling routines
000040: 66 6F 72 20 63 75 72 73 6F 72 20 70 6F 73 69 74 for cursor posit
000050: 69 6F 6E 2C 20 61 74 74 72 69 62 75 74 65 20 65 ion, attribute e
000060: 74 63 0D 0A 0D 0A 09 53 70 65 63 69 66 69 63 20 tc.....Specific
000070: 74 6F 20 74 68 69 73 20 63 6F 6D 70 69 6C 65 72 to this compiler
000080: 2A 29 0D 0A 0D 0A 43 4F 4E 53 54 09 4C 6F 67 53 *)....CONST.LogS
000090: 63 72 65 65 6E 57 69 64 74 68 3D 31 30 30 3B 09 creenWidth=100;.
0000A0: 28 2A 4C 6F 67 69 63 61 6C 20 73 63 72 65 65 6E (*Logical screen
0000B0: 20 77 69 64 74 68 20 0D 0A 09 09 09 09 28 6D 61 width ......(ma
0000C0: 6E 79 20 70 65 6F 70 6C 65 20 6F 6E 6C 79 20 68 ny people only h
0000D0: 61 76 65 20 38 30 29 2A 29 0D 0A 09 52 6F 77 57 ave 80)*)...RowW
0000E0: 69 64 74 68 3D 31 32 38 3B 09 09 28 2A 77 69 64 idth=128;..(*wid
0000F0: 74 68 20 6F 66 20 6D 65 6D 6F 72 79 20 66 6F 72 th of memory for
000100: 20 6F 6E 65 20 72 6F 77 20 0D 0A 09 09 09 09 28 one row ......(
000110: 69 2E 65 2E 20 6E 75 6D 62 65 72 20 6F 66 20 62 i.e. number of b
000120: 79 74 65 73 2A 29 0D 0A 09 4C 6F 67 53 63 72 65 ytes*)...LogScre
000130: 65 6E 44 65 70 74 68 3D 32 34 3B 09 09 28 2A 4C enDepth=24;..(*L
000140: 69 6E 65 73 20 6F 6E 20 74 68 65 20 73 63 72 65 ines on the scre
000150: 65 6E 2A 29 0D 0A 09 53 63 72 65 65 6E 53 74 61 en*)...ScreenSta
000160: 72 74 3D 30 66 30 30 30 68 3B 09 28 2A 62 61 73 rt=0f000h;.(*bas
000170: 65 20 6F 66 20 73 63 72 65 65 6E 2A 29 0D 0A 09 e of screen*)...
000180: 43 68 61 72 49 6E 63 72 65 6D 65 6E 74 3D 31 3B CharIncrement=1;
000190: 09 28 2A 6E 75 6D 62 65 72 20 6F 66 20 62 79 74 .(*number of byt
0001A0: 65 73 20 62 65 74 77 65 65 6E 20 63 68 61 72 61 es between chara
0001B0: 63 74 65 72 73 2A 29 0D 0A 09 53 63 72 65 65 6E cters*)...Screen
0001C0: 53 69 7A 65 3D 31 32 38 2A 33 32 3B 09 28 2A 6E Size=128*32;.(*n
0001D0: 75 6D 62 65 72 20 6F 66 20 62 79 74 65 73 20 69 umber of bytes i
0001E0: 6E 20 73 63 72 65 65 6E 20 61 72 65 61 2A 29 0D n screen area*).
0001F0: 0A 0D 0A 09 43 52 3D 30 64 78 3B 09 09 09 28 2A ....CR=0dx;...(*
Size : 512 (Real : 512)
000000: 4F 52 20 69 3A 3D 35 2A 31 36 2B 33 20 54 4F 20 OR i:=5*16+3 TO
000010: 35 2A 31 36 2B 33 2B 34 20 44 4F 20 50 43 47 5B 5*16+3+4 DO PCG[
000020: 69 5D 3A 3D 30 66 63 78 20 45 4E 44 3B 0D 0A 09 i]:=0fcx END;...
000030: 53 63 72 65 65 6E 50 6F 73 3A 3D 30 3B 0D 0A 09 ScreenPos:=0;...
000040: 0D 0A 09 42 6C 69 6E 6B 52 6F 75 74 69 6E 65 3A ...BlinkRoutine:
000050: 3D 42 6C 69 6E 6B 43 75 72 73 6F 72 3B 0D 0A 09 =BlinkCursor;...
000060: 42 6C 69 6E 6B 45 6E 61 62 6C 65 64 3A 3D 54 52 BlinkEnabled:=TR
000070: 55 45 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 UE;...ScreenCont
000080: 72 6F 6C 28 43 6C 65 61 72 53 63 72 65 65 6E 29 rol(ClearScreen)
000090: 3B 0D 0A 09 43 6F 6C 4E 6F 3A 3D 30 3B 0D 0A 09 ;...ColNo:=0;...
0000A0: 52 6F 77 4E 6F 3A 3D 30 3B 0D 0A 09 43 68 61 72 RowNo:=0;...Char
0000B0: 52 6F 75 74 69 6E 65 3A 3D 57 72 69 74 65 3B 0D Routine:=Write;.
0000C0: 0A 09 43 68 61 72 45 6E 61 62 6C 65 64 3A 3D 54 ..CharEnabled:=T
0000D0: 52 55 45 3B 09 0D 0A 09 53 63 72 65 65 6E 57 69 RUE;....ScreenWi
0000E0: 64 74 68 3A 3D 4C 6F 67 53 63 72 65 65 6E 57 69 dth:=LogScreenWi
0000F0: 64 74 68 3B 0D 0A 09 53 63 72 65 65 6E 44 65 70 dth;...ScreenDep
000100: 74 68 3A 3D 4C 6F 67 53 63 72 65 65 6E 44 65 70 th:=LogScreenDep
000110: 74 68 3B 0D 0A 09 45 4E 44 20 53 63 72 65 65 6E th;...END Screen
000120: 49 4F 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A IO..............
000130: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000140: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000150: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000160: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000170: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000180: 69 73 20 74 68 61 74 20 74 68 69 73 20 76 65 72 is that this ver
000190: 73 69 6F 6E 20 62 75 66 66 65 72 73 20 73 63 72 sion buffers scr
0001A0: 65 65 6E 20 6F 75 74 70 75 74 20 69 6E 20 6F 72 een output in or
0001B0: 64 65 72 20 74 6F 0D 0A 09 73 70 65 65 64 20 75 der to...speed u
0001C0: 70 20 73 63 72 65 65 6E 20 6F 75 74 70 75 74 2C p screen output,
0001D0: 20 61 73 20 63 68 61 72 61 63 74 65 72 20 61 74 as character at
0001E0: 20 61 20 74 69 6D 65 20 77 61 73 20 74 6F 6F 20 a time was too
0001F0: 73 6C 6F 77 0D 0A 2A 29 0D 0A 0D 0A 46 52 4F 4D slow..*)....FROM
Size : 512 (Real : 512)
000000: 29 3B 0D 0A 09 09 53 63 72 65 65 6E 5B 53 63 72 );....Screen[Scr
000010: 65 65 6E 50 6F 73 5D 3A 3D 27 20 27 7C 0D 0A 09 eenPos]:=' '|...
000020: 49 6E 73 4C 69 6E 65 3A 28 2A 4D 6F 76 65 20 72 InsLine:(*Move r
000030: 65 73 74 20 6F 66 20 73 63 72 65 65 6E 20 64 6F est of screen do
000040: 77 6E 20 6F 6E 65 20 6C 69 6E 65 2C 20 61 64 64 wn one line, add
000050: 20 62 6C 61 6E 6B 20 6C 69 6E 65 2A 29 0D 0A 09 blank line*)...
000060: 09 4D 6F 76 65 75 70 28 41 44 52 28 53 63 72 65 .Moveup(ADR(Scre
000070: 65 6E 5B 53 63 72 65 65 6E 50 6F 73 2D 43 6F 6C en[ScreenPos-Col
000080: 4E 6F 5D 29 2C 41 44 52 28 53 63 72 65 65 6E 5B No]),ADR(Screen[
000090: 53 63 72 65 65 6E 50 6F 73 2D 43 6F 6C 4E 6F 2B ScreenPos-ColNo+
0000A0: 52 6F 77 57 69 64 74 68 5D 29 2C 0D 0A 09 09 53 RowWidth]),....S
0000B0: 63 72 65 65 6E 53 69 7A 65 2D 53 63 72 65 65 6E creenSize-Screen
0000C0: 50 6F 73 2B 43 6F 6C 4E 6F 2D 52 6F 77 57 69 64 Pos+ColNo-RowWid
0000D0: 74 68 29 3B 0D 0A 09 09 46 4F 52 20 69 3A 3D 53 th);....FOR i:=S
0000E0: 63 72 65 65 6E 50 6F 73 2D 43 6F 6C 4E 6F 20 54 creenPos-ColNo T
0000F0: 4F 20 53 63 72 65 65 6E 50 6F 73 2D 43 6F 6C 4E O ScreenPos-ColN
000100: 6F 2B 52 6F 77 57 69 64 74 68 2D 31 20 44 4F 0D o+RowWidth-1 DO.
000110: 0A 09 09 09 53 63 72 65 65 6E 5B 69 5D 3A 3D 27 ....Screen[i]:='
000120: 20 27 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 ';.....END;....
000130: 7C 0D 0A 09 44 65 6C 45 6F 6C 3A 46 4F 52 20 69 |...DelEol:FOR i
000140: 3A 3D 53 63 72 65 65 6E 50 6F 73 20 54 4F 20 53 :=ScreenPos TO S
000150: 63 72 65 65 6E 50 6F 73 2D 43 6F 6C 4E 6F 2B 52 creenPos-ColNo+R
000160: 6F 77 57 69 64 74 68 2D 31 20 44 4F 20 53 63 72 owWidth-1 DO Scr
000170: 65 65 6E 5B 69 5D 3A 3D 27 20 27 20 45 4E 44 7C een[i]:=' ' END|
000180: 0D 0A 09 44 65 6C 45 6F 73 3A 46 4F 52 20 69 3A ...DelEos:FOR i:
000190: 3D 53 63 72 65 65 6E 50 6F 73 20 54 4F 20 53 63 =ScreenPos TO Sc
0001A0: 72 65 65 6E 53 69 7A 65 2D 31 20 44 4F 20 53 63 reenSize-1 DO Sc
0001B0: 72 65 65 6E 5B 69 5D 3A 3D 27 20 27 20 45 4E 44 reen[i]:=' ' END
0001C0: 7C 0D 0A 09 43 6C 65 61 72 53 63 72 65 65 6E 3A |...ClearScreen:
0001D0: 0D 0A 09 09 09 28 2A 4F 73 62 6F 72 6E 65 20 73 .....(*Osborne s
0001E0: 70 65 63 69 66 69 63 20 2D 20 68 6F 6D 65 20 73 pecific - home s
0001F0: 63 72 65 65 6E 20 61 6E 64 20 63 75 72 73 6F 72 creen and cursor
Size : 512 (Real : 512)
000000: 6E 65 0D 0A 0D 0A 09 54 68 69 73 20 72 6F 75 74 ne.....This rout
000010: 69 6E 65 20 77 69 6C 6C 20 6E 65 65 64 20 63 68 ine will need ch
000020: 61 6E 67 69 6E 67 20 66 6F 72 20 64 69 66 66 65 anging for diffe
000030: 72 65 6E 74 20 76 69 64 65 6F 20 73 79 73 74 65 rent video syste
000040: 6D 73 0D 0A 0D 0A 09 54 68 65 20 4F 73 62 6F 72 ms.....The Osbor
000050: 6E 65 20 31 20 69 73 20 76 65 72 79 20 6C 69 6D ne 1 is very lim
000060: 69 74 65 64 20 2D 20 61 6C 6C 20 79 6F 75 20 63 ited - all you c
000070: 61 6E 20 64 6F 20 69 73 0D 0A 09 75 6E 64 65 72 an do is...under
000080: 6C 69 6E 65 20 61 6E 64 20 68 61 6C 66 20 69 6E line and half in
000090: 74 65 6E 73 69 74 79 2E 20 41 6C 6C 20 6F 74 68 tensity. All oth
0000A0: 65 72 73 20 61 72 65 20 6D 61 70 70 65 64 20 6F ers are mapped o
0000B0: 6E 74 6F 20 74 68 65 73 65 20 74 77 6F 0D 0A 2A nto these two..*
0000C0: 29 0D 0A 42 45 47 49 4E 0D 0A 20 20 20 20 49 46 )..BEGIN.. IF
0000D0: 20 4F 75 74 70 75 74 45 6E 61 62 6C 65 64 20 54 OutputEnabled T
0000E0: 48 45 4E 0D 0A 09 43 6C 65 61 72 43 75 72 73 6F HEN...ClearCurso
0000F0: 72 3B 0D 0A 09 49 46 20 63 68 3E 30 37 66 78 20 r;...IF ch>07fx
000100: 54 48 45 4E 20 63 68 3A 3D 43 48 52 28 4F 52 44 THEN ch:=CHR(ORD
000110: 28 63 68 29 2D 31 32 38 29 20 45 4E 44 3B 0D 0A (ch)-128) END;..
000120: 09 49 46 20 63 68 3D 43 52 20 54 48 45 4E 0D 0A .IF ch=CR THEN..
000130: 09 09 53 63 72 65 65 6E 50 6F 73 3A 3D 53 63 72 ..ScreenPos:=Scr
000140: 65 65 6E 50 6F 73 2D 43 6F 6C 4E 6F 3B 0D 0A 09 eenPos-ColNo;...
000150: 09 43 6F 6C 4E 6F 3A 3D 30 3B 0D 0A 09 45 4C 53 .ColNo:=0;...ELS
000160: 49 46 20 63 68 3D 4C 46 20 54 48 45 4E 0D 0A 09 IF ch=LF THEN...
000170: 09 49 46 20 52 6F 77 4E 6F 3C 28 4C 6F 67 53 63 .IF RowNo<(LogSc
000180: 72 65 65 6E 44 65 70 74 68 2D 31 29 20 54 48 45 reenDepth-1) THE
000190: 4E 0D 0A 09 09 09 49 4E 43 28 52 6F 77 4E 6F 29 N.....INC(RowNo)
0001A0: 3B 0D 0A 09 09 09 53 63 72 65 65 6E 50 6F 73 3A ;.....ScreenPos:
0001B0: 3D 53 63 72 65 65 6E 50 6F 73 2B 52 6F 77 57 69 =ScreenPos+RowWi
0001C0: 64 74 68 3B 0D 0A 09 09 09 45 4E 44 0D 0A 09 45 dth;.....END...E
0001D0: 4C 53 49 46 20 63 68 3D 42 53 20 54 48 45 4E 0D LSIF ch=BS THEN.
0001E0: 0A 09 09 49 46 20 43 6F 6C 4E 6F 3E 30 20 54 48 ...IF ColNo>0 TH
0001F0: 45 4E 0D 0A 09 09 09 44 45 43 28 43 6F 6C 4E 6F EN.....DEC(ColNo
Size : 512 (Real : 512)
000000: 4C 53 45 3B 0D 0A 09 69 3A 43 41 52 44 49 4E 41 LSE;...i:CARDINA
000010: 4C 3B 0D 0A 0D 0A 28 2A 09 54 68 65 20 6E 65 78 L;....(*.The nex
000020: 74 20 66 65 77 20 72 6F 75 74 69 6E 65 73 20 68 t few routines h
000030: 61 6E 64 6C 65 20 74 68 65 20 63 75 72 73 6F 72 andle the cursor
000040: 0D 0A 0D 0A 09 57 61 73 55 6E 64 65 72 4C 69 6E .....WasUnderLin
000050: 65 64 20 69 73 20 74 72 75 65 20 69 66 20 74 68 ed is true if th
000060: 65 20 63 68 61 72 61 63 74 65 72 20 75 6E 64 65 e character unde
000070: 72 20 74 68 65 20 63 75 72 73 6F 72 0D 0A 09 73 r the cursor...s
000080: 74 61 72 74 65 64 20 6F 75 74 20 75 6E 64 65 72 tarted out under
000090: 6C 69 6E 65 64 0D 0A 09 0D 0A 09 54 69 6D 65 54 lined......TimeT
0000A0: 6F 43 68 61 6E 67 65 20 69 73 20 61 20 63 6F 75 oChange is a cou
0000B0: 6E 74 65 72 20 74 68 61 74 20 64 65 74 65 72 6D nter that determ
0000C0: 69 6E 65 73 20 77 68 65 6E 20 74 68 65 20 63 75 ines when the cu
0000D0: 72 73 6F 72 20 73 68 6F 75 6C 64 0D 0A 09 62 65 rsor should...be
0000E0: 20 63 68 61 6E 67 65 64 20 66 72 6F 6D 20 69 74 changed from it
0000F0: 73 20 63 75 72 72 65 6E 74 20 76 61 6C 75 65 20 s current value
000100: 74 6F 20 69 74 73 20 6E 65 67 61 74 69 76 65 2C to its negative,
000110: 20 74 6F 20 61 6C 6C 6F 77 20 62 6C 69 6E 6B 69 to allow blinki
000120: 6E 67 0D 0A 2A 29 0D 0A 56 41 52 09 57 61 73 55 ng..*)..VAR.WasU
000130: 6E 64 65 72 4C 69 6E 65 64 3A 42 4F 4F 4C 45 41 nderLined:BOOLEA
000140: 4E 3D 46 41 4C 53 45 3B 0D 0A 09 54 69 6D 65 54 N=FALSE;...TimeT
000150: 6F 43 68 61 6E 67 65 3A 49 4E 54 45 47 45 52 3D oChange:INTEGER=
000160: 30 3B 0D 0A 0D 0A 28 2A 09 42 6C 69 6E 6B 20 63 0;....(*.Blink c
000170: 75 72 73 6F 72 20 2D 20 64 65 63 72 65 6D 65 6E ursor - decremen
000180: 74 20 74 69 6D 65 72 2C 20 69 66 20 6E 65 67 61 t timer, if nega
000190: 74 69 76 65 20 72 65 73 65 74 20 61 6E 64 0D 0A tive reset and..
0001A0: 09 63 68 61 6E 67 65 20 74 6F 70 20 62 69 74 20 .change top bit
0001B0: 6F 66 20 63 68 61 72 61 63 74 65 72 20 75 6E 64 of character und
0001C0: 65 72 20 63 75 72 73 6F 72 2A 29 0D 0A 0D 0A 50 er cursor*)....P
0001D0: 52 4F 43 45 44 55 52 45 20 42 6C 69 6E 6B 43 75 ROCEDURE BlinkCu
0001E0: 72 73 6F 72 3B 0D 0A 42 45 47 49 4E 0D 0A 09 44 rsor;..BEGIN...D
0001F0: 45 43 28 54 69 6D 65 54 6F 43 68 61 6E 67 65 29 EC(TimeToChange)
Size : 512 (Real : 512)
000000: 29 3B 0D 0A 09 09 09 44 45 43 28 53 63 72 65 65 );.....DEC(Scree
000010: 6E 50 6F 73 29 3B 0D 0A 09 09 09 53 63 72 65 65 nPos);.....Scree
000020: 6E 5B 53 63 72 65 65 6E 50 6F 73 5D 3A 3D 27 20 n[ScreenPos]:='
000030: 27 0D 0A 09 09 09 45 4E 44 0D 0A 09 45 4C 53 49 '.....END...ELSI
000040: 46 20 63 68 3D 54 41 42 20 54 48 45 4E 0D 0A 09 F ch=TAB THEN...
000050: 09 4C 4F 4F 50 0D 0A 09 09 09 49 46 20 43 6F 6C .LOOP.....IF Col
000060: 4E 6F 3E 3D 4C 6F 67 53 63 72 65 65 6E 57 69 64 No>=LogScreenWid
000070: 74 68 2D 31 20 54 48 45 4E 20 45 58 49 54 20 45 th-1 THEN EXIT E
000080: 4E 44 3B 0D 0A 09 09 09 53 63 72 65 65 6E 5B 53 ND;.....Screen[S
000090: 63 72 65 65 6E 50 6F 73 5D 3A 3D 27 20 27 3B 0D creenPos]:=' ';.
0000A0: 0A 09 09 09 49 4E 43 28 53 63 72 65 65 6E 50 6F ....INC(ScreenPo
0000B0: 73 29 3B 0D 0A 09 09 09 49 4E 43 28 43 6F 6C 4E s);.....INC(ColN
0000C0: 6F 29 3B 0D 0A 09 09 09 49 46 20 49 41 4E 44 28 o);.....IF IAND(
0000D0: 43 6F 6C 4E 6F 2C 37 29 3D 30 20 54 48 45 4E 20 ColNo,7)=0 THEN
0000E0: 45 58 49 54 20 45 4E 44 0D 0A 09 09 09 45 4E 44 EXIT END.....END
0000F0: 20 28 2A 4C 4F 4F 50 2A 29 0D 0A 09 45 4C 53 45 (*LOOP*)...ELSE
000100: 09 0D 0A 09 09 49 46 20 55 6E 64 65 72 4C 69 6E .....IF UnderLin
000110: 65 20 4F 52 20 45 6E 68 61 6E 63 65 64 56 69 64 e OR EnhancedVid
000120: 65 6F 20 4F 52 20 42 6C 69 6E 6B 69 6E 67 20 4F eo OR Blinking O
000130: 52 20 49 6E 76 65 72 73 65 56 69 64 65 6F 20 54 R InverseVideo T
000140: 48 45 4E 20 0D 0A 09 09 09 63 68 3A 3D 43 48 52 HEN .....ch:=CHR
000150: 28 4F 52 44 28 63 68 29 2B 31 32 38 29 0D 0A 09 (ORD(ch)+128)...
000160: 09 09 45 4E 44 3B 0D 0A 09 09 50 75 74 61 6E 64 ..END;....Putand
000170: 49 6E 63 28 63 68 29 3B 0D 0A 09 09 45 4E 44 3B Inc(ch);....END;
000180: 20 28 2A 4E 6F 74 20 43 52 20 6F 72 20 4C 46 20 (*Not CR or LF
000190: 6F 72 20 54 41 42 2A 29 0D 0A 09 53 65 74 43 75 or TAB*)...SetCu
0001A0: 72 73 6F 72 3B 0D 0A 09 45 4E 44 20 0D 0A 20 20 rsor;...END ..
0001B0: 20 20 45 4E 44 20 57 72 69 74 65 3B 0D 0A 0D 0A END Write;....
0001C0: 0D 0A 50 52 4F 43 45 44 55 52 45 20 53 63 72 65 ..PROCEDURE Scre
0001D0: 65 6E 43 6F 6E 74 72 6F 6C 28 73 3A 45 64 69 74 enControl(s:Edit
0001E0: 73 29 3B 0D 0A 0D 0A 28 2A 09 09 50 65 72 66 6F s);....(*..Perfo
0001F0: 72 6D 20 61 20 73 63 72 65 65 6E 20 63 6F 6E 74 rm a screen cont
Size : 512 (Real : 512)
000000: 3B 0D 0A 09 49 46 20 54 69 6D 65 54 6F 43 68 61 ;...IF TimeToCha
000010: 6E 67 65 3C 30 20 54 48 45 4E 0D 0A 09 09 54 69 nge<0 THEN....Ti
000020: 6D 65 54 6F 43 68 61 6E 67 65 3A 3D 39 30 30 3B meToChange:=900;
000030: 09 28 2A 63 68 61 6E 67 65 20 74 6F 20 63 68 61 .(*change to cha
000040: 6E 67 65 20 62 6C 69 6E 6B 20 72 61 74 65 2A 29 nge blink rate*)
000050: 0D 0A 09 09 53 63 72 65 65 6E 5B 53 63 72 65 65 ....Screen[Scree
000060: 6E 50 6F 73 5D 3A 3D 43 48 52 28 4F 52 44 28 53 nPos]:=CHR(ORD(S
000070: 63 72 65 65 6E 5B 53 63 72 65 65 6E 50 6F 73 5D creen[ScreenPos]
000080: 29 2B 31 32 38 29 0D 0A 09 09 45 4E 44 0D 0A 09 )+128)....END...
000090: 45 4E 44 20 42 6C 69 6E 6B 43 75 72 73 6F 72 3B END BlinkCursor;
0000A0: 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 6C ....PROCEDURE Cl
0000B0: 65 61 72 43 75 72 73 6F 72 3B 0D 0A 42 45 47 49 earCursor;..BEGI
0000C0: 4E 0D 0A 09 49 46 20 28 53 63 72 65 65 6E 5B 53 N...IF (Screen[S
0000D0: 63 72 65 65 6E 50 6F 73 5D 3E 37 66 78 29 3C 3E creenPos]>7fx)<>
0000E0: 57 61 73 55 6E 64 65 72 4C 69 6E 65 64 20 54 48 WasUnderLined TH
0000F0: 45 4E 0D 0A 09 09 53 63 72 65 65 6E 5B 53 63 72 EN....Screen[Scr
000100: 65 65 6E 50 6F 73 5D 3A 3D 43 48 52 28 4F 52 44 eenPos]:=CHR(ORD
000110: 28 53 63 72 65 65 6E 5B 53 63 72 65 65 6E 50 6F (Screen[ScreenPo
000120: 73 5D 29 2B 31 32 38 29 3B 0D 0A 09 09 45 4E 44 s])+128);....END
000130: 3B 0D 0A 09 57 61 73 55 6E 64 65 72 4C 69 6E 65 ;...WasUnderLine
000140: 64 3A 3D 46 41 4C 53 45 3B 0D 0A 09 45 4E 44 20 d:=FALSE;...END
000150: 43 6C 65 61 72 43 75 72 73 6F 72 3B 0D 0A 50 52 ClearCursor;..PR
000160: 4F 43 45 44 55 52 45 20 53 65 74 43 75 72 73 6F OCEDURE SetCurso
000170: 72 3B 0D 0A 42 45 47 49 4E 0D 0A 09 57 61 73 55 r;..BEGIN...WasU
000180: 6E 64 65 72 4C 69 6E 65 64 3A 3D 53 63 72 65 65 nderLined:=Scree
000190: 6E 5B 53 63 72 65 65 6E 50 6F 73 5D 3E 3D 38 30 n[ScreenPos]>=80
0001A0: 78 3B 0D 0A 09 53 63 72 65 65 6E 5B 53 63 72 65 x;...Screen[Scre
0001B0: 65 6E 50 6F 73 5D 3A 3D 43 48 52 28 4F 52 44 28 enPos]:=CHR(ORD(
0001C0: 53 63 72 65 65 6E 5B 53 63 72 65 65 6E 50 6F 73 Screen[ScreenPos
0001D0: 5D 29 2B 31 32 38 29 3B 0D 0A 09 45 4E 44 20 53 ])+128);...END S
0001E0: 65 74 43 75 72 73 6F 72 3B 0D 0A 0D 0A 50 52 4F etCursor;....PRO
0001F0: 43 45 44 55 52 45 20 47 6F 74 6F 78 79 28 78 2C CEDURE Gotoxy(x,
Size : 512 (Real : 512)
000000: 72 6F 6C 20 6F 70 65 72 61 74 69 6F 6E 0D 0A 0D rol operation...
000010: 0A 09 09 4D 61 79 20 6E 65 65 64 20 61 6C 74 65 ...May need alte
000020: 72 61 74 69 6F 6E 20 66 6F 72 20 76 61 72 69 6F ration for vario
000030: 75 73 20 6D 61 63 68 69 6E 65 73 2A 29 0D 0A 0D us machines*)...
000040: 0A 42 45 47 49 4E 0D 0A 20 20 20 20 49 46 20 4F .BEGIN.. IF O
000050: 75 74 70 75 74 45 6E 61 62 6C 65 64 20 54 48 45 utputEnabled THE
000060: 4E 0D 0A 09 43 6C 65 61 72 43 75 72 73 6F 72 3B N...ClearCursor;
000070: 0D 0A 09 43 41 53 45 20 73 20 4F 46 0D 0A 09 44 ...CASE s OF...D
000080: 69 6D 3A 48 61 6C 66 49 6E 74 65 6E 73 69 74 79 im:HalfIntensity
000090: 3A 3D 54 52 55 45 7C 0D 0A 09 42 72 69 67 68 74 :=TRUE|...Bright
0000A0: 3A 09 48 61 6C 66 49 6E 74 65 6E 73 69 74 79 3A :.HalfIntensity:
0000B0: 3D 46 41 4C 53 45 0D 0A 09 09 45 6E 68 61 6E 63 =FALSE....Enhanc
0000C0: 65 64 56 69 64 65 6F 3A 3D 54 52 55 45 7C 0D 0A edVideo:=TRUE|..
0000D0: 09 4E 6F 72 6D 61 6C 3A 09 48 61 6C 66 49 6E 74 .Normal:.HalfInt
0000E0: 65 6E 73 69 74 79 3A 3D 46 41 4C 53 45 3B 0D 0A ensity:=FALSE;..
0000F0: 09 09 45 6E 68 61 6E 63 65 64 56 69 64 65 6F 3A ..EnhancedVideo:
000100: 3D 46 41 4C 53 45 3B 0D 0A 09 09 49 6E 76 65 72 =FALSE;....Inver
000110: 73 65 56 69 64 65 6F 3A 3D 46 41 4C 53 45 3B 0D seVideo:=FALSE;.
000120: 0A 09 09 42 6C 69 6E 6B 69 6E 67 3A 3D 46 41 4C ...Blinking:=FAL
000130: 53 45 3B 0D 0A 09 09 55 6E 64 65 72 4C 69 6E 65 SE;....UnderLine
000140: 3A 3D 46 41 4C 53 45 7C 0D 0A 09 49 6E 76 65 72 :=FALSE|...Inver
000150: 73 65 3A 49 6E 76 65 72 73 65 56 69 64 65 6F 3A se:InverseVideo:
000160: 3D 54 52 55 45 7C 0D 0A 09 42 6C 69 6E 6B 3A 42 =TRUE|...Blink:B
000170: 6C 69 6E 6B 69 6E 67 3A 3D 54 52 55 45 7C 0D 0A linking:=TRUE|..
000180: 09 53 74 61 72 74 47 72 61 70 68 2C 45 6E 64 47 .StartGraph,EndG
000190: 72 61 70 68 3A 28 2A 64 6F 20 6E 6F 74 68 69 6E raph:(*do nothin
0001A0: 67 2A 29 7C 0D 0A 09 44 65 6C 43 68 61 72 3A 28 g*)|...DelChar:(
0001B0: 2A 4D 6F 76 65 20 72 65 73 74 20 6F 66 20 6C 69 *Move rest of li
0001C0: 6E 65 20 75 70 20 6F 6E 65 2C 20 61 64 64 20 62 ne up one, add b
0001D0: 6C 61 6E 6B 20 74 6F 20 65 6E 64 2A 29 0D 0A 09 lank to end*)...
0001E0: 09 4D 6F 76 65 64 6F 77 6E 28 41 44 52 28 53 63 .Movedown(ADR(Sc
0001F0: 72 65 65 6E 5B 53 63 72 65 65 6E 50 6F 73 2B 31 reen[ScreenPos+1
Size : 512 (Real : 512)
000000: 79 3A 43 41 52 44 49 4E 41 4C 29 3B 09 09 0D 0A y:CARDINAL);....
000010: 0D 0A 28 2A 09 09 50 6F 73 69 74 69 6F 6E 20 74 ..(*..Position t
000020: 6F 20 67 69 76 65 6E 20 63 6F 6F 72 64 69 6E 61 o given coordina
000030: 74 65 73 0D 0A 09 09 74 6F 70 20 6C 65 66 74 20 tes....top left
000040: 69 73 20 61 6C 77 61 79 73 20 30 2C 30 20 0D 0A is always 0,0 ..
000050: 0D 0A 09 09 78 20 69 73 20 63 6F 6C 75 6D 6E 2C ....x is column,
000060: 20 79 20 69 73 20 72 6F 77 0D 0A 0D 0A 09 09 41 y is row......A
000070: 20 27 53 74 61 6E 64 61 72 64 27 20 53 63 72 65 'Standard' Scre
000080: 65 6E 20 69 73 20 38 30 20 62 79 20 32 34 2E 20 en is 80 by 24.
000090: 54 68 65 20 6C 69 6D 69 74 20 69 73 20 73 65 74 The limit is set
0000A0: 20 62 79 0D 0A 09 09 74 68 65 20 74 65 72 6D 69 by....the termi
0000B0: 6E 61 6C 20 64 65 66 69 6E 69 74 69 6F 6E 20 66 nal definition f
0000C0: 69 6C 65 09 2A 29 0D 0A 42 45 47 49 4E 0D 0A 20 ile.*)..BEGIN..
0000D0: 20 20 20 49 46 20 4F 75 74 70 75 74 45 6E 61 62 IF OutputEnab
0000E0: 6C 65 64 20 54 48 45 4E 0D 0A 09 43 6C 65 61 72 led THEN...Clear
0000F0: 43 75 72 73 6F 72 3B 0D 0A 09 43 6F 6C 4E 6F 3A Cursor;...ColNo:
000100: 3D 78 3B 0D 0A 09 52 6F 77 4E 6F 3A 3D 79 3B 0D =x;...RowNo:=y;.
000110: 0A 09 53 63 72 65 65 6E 50 6F 73 3A 3D 43 6F 6C ..ScreenPos:=Col
000120: 4E 6F 2B 52 6F 77 4E 6F 2A 43 68 61 72 49 6E 63 No+RowNo*CharInc
000130: 72 65 6D 65 6E 74 2A 52 6F 77 57 69 64 74 68 3B rement*RowWidth;
000140: 0D 0A 09 49 46 20 53 63 72 65 65 6E 50 6F 73 3E ...IF ScreenPos>
000150: 3D 53 63 72 65 65 6E 53 69 7A 65 20 54 48 45 4E =ScreenSize THEN
000160: 0D 0A 09 09 43 6F 6C 4E 6F 3A 3D 30 3B 0D 0A 09 ....ColNo:=0;...
000170: 09 52 6F 77 4E 6F 3A 3D 30 3B 0D 0A 09 09 53 63 .RowNo:=0;....Sc
000180: 72 65 65 6E 50 6F 73 3A 3D 30 3B 0D 0A 09 09 45 reenPos:=0;....E
000190: 4E 44 3B 0D 0A 09 53 65 74 43 75 72 73 6F 72 3B ND;...SetCursor;
0001A0: 0D 0A 20 20 20 20 09 45 4E 44 20 0D 0A 20 20 20 .. .END ..
0001B0: 20 45 4E 44 20 47 6F 74 6F 78 79 3B 0D 0A 0D 0A END Gotoxy;....
0001C0: 50 52 4F 43 45 44 55 52 45 20 50 75 74 61 6E 64 PROCEDURE Putand
0001D0: 49 6E 63 28 63 68 3A 43 48 41 52 29 3B 0D 0A 0D Inc(ch:CHAR);...
0001E0: 0A 28 2A 09 6F 75 74 70 75 74 20 61 20 63 68 61 .(*.output a cha
0001F0: 72 61 63 74 65 72 20 61 6E 64 20 69 6E 63 72 65 racter and incre
Size : 512 (Real : 512)
000000: 5D 29 2C 41 44 52 28 53 63 72 65 65 6E 5B 53 63 ]),ADR(Screen[Sc
000010: 72 65 65 6E 50 6F 73 5D 29 2C 52 6F 77 57 69 64 reenPos]),RowWid
000020: 74 68 2D 43 6F 6C 4E 6F 2D 31 29 3B 0D 0A 09 09 th-ColNo-1);....
000030: 53 63 72 65 65 6E 5B 53 63 72 65 65 6E 50 6F 73 Screen[ScreenPos
000040: 2D 43 6F 6C 4E 6F 2B 52 6F 77 57 69 64 74 68 2D -ColNo+RowWidth-
000050: 31 5D 3A 3D 27 20 27 7C 0D 0A 09 44 65 6C 4C 69 1]:=' '|...DelLi
000060: 6E 65 3A 28 2A 4D 6F 76 65 20 72 65 73 74 20 6F ne:(*Move rest o
000070: 66 20 73 63 72 65 65 6E 20 75 70 20 61 20 6C 69 f screen up a li
000080: 6E 65 2C 20 61 64 64 20 62 6C 61 6E 6B 20 6C 69 ne, add blank li
000090: 6E 65 20 61 74 20 65 6E 64 2A 29 0D 0A 09 09 4D ne at end*)....M
0000A0: 6F 76 65 64 6F 77 6E 28 41 44 52 28 53 63 72 65 ovedown(ADR(Scre
0000B0: 65 6E 5B 53 63 72 65 65 6E 50 6F 73 2D 43 6F 6C en[ScreenPos-Col
0000C0: 4E 6F 2B 52 6F 77 57 69 64 74 68 5D 29 2C 0D 0A No+RowWidth]),..
0000D0: 09 09 09 20 41 44 52 28 53 63 72 65 65 6E 5B 53 ... ADR(Screen[S
0000E0: 63 72 65 65 6E 50 6F 73 2D 43 6F 6C 4E 6F 5D 29 creenPos-ColNo])
0000F0: 2C 0D 0A 09 09 09 53 63 72 65 65 6E 53 69 7A 65 ,.....ScreenSize
000100: 2D 53 63 72 65 65 6E 50 6F 73 2B 43 6F 6C 4E 6F -ScreenPos+ColNo
000110: 2D 52 6F 77 57 69 64 74 68 29 3B 0D 0A 09 09 46 -RowWidth);....F
000120: 4F 52 20 69 3A 3D 53 63 72 65 65 6E 53 69 7A 65 OR i:=ScreenSize
000130: 2D 52 6F 77 57 69 64 74 68 20 54 4F 20 53 63 72 -RowWidth TO Scr
000140: 65 65 6E 53 69 7A 65 2D 31 20 44 4F 20 53 63 72 eenSize-1 DO Scr
000150: 65 65 6E 5B 69 5D 3A 3D 27 20 27 20 45 4E 44 3B een[i]:=' ' END;
000160: 0D 0A 09 09 7C 0D 0A 09 49 6E 73 43 68 61 72 3A ....|...InsChar:
000170: 28 2A 4D 6F 76 65 20 72 65 73 74 20 6F 66 20 6C (*Move rest of l
000180: 69 6E 65 20 72 69 67 68 74 20 6F 6E 65 20 63 68 ine right one ch
000190: 61 72 61 63 74 65 72 2C 20 6C 61 73 74 20 63 68 aracter, last ch
0001A0: 61 72 61 63 74 65 72 20 6D 61 79 20 62 65 20 6C aracter may be l
0001B0: 6F 73 74 2A 29 0D 0A 09 09 4D 6F 76 65 75 70 28 ost*)....Moveup(
0001C0: 41 44 52 28 53 63 72 65 65 6E 5B 53 63 72 65 65 ADR(Screen[Scree
0001D0: 6E 50 6F 73 5D 29 2C 41 44 52 28 53 63 72 65 65 nPos]),ADR(Scree
0001E0: 6E 5B 53 63 72 65 65 6E 50 6F 73 2B 31 5D 29 2C n[ScreenPos+1]),
0001F0: 52 6F 77 57 69 64 74 68 2D 43 6F 6C 4E 6F 2D 31 RowWidth-ColNo-1
Size : 512 (Real : 512)
000000: 6D 65 6E 74 20 70 6F 69 6E 74 65 72 73 2A 29 0D ment pointers*).
000010: 0A 0D 0A 42 45 47 49 4E 0D 0A 09 53 63 72 65 65 ...BEGIN...Scree
000020: 6E 5B 53 63 72 65 65 6E 50 6F 73 5D 3A 3D 63 68 n[ScreenPos]:=ch
000030: 3B 0D 0A 0D 0A 09 53 63 72 65 65 6E 50 6F 73 3A ;.....ScreenPos:
000040: 3D 53 63 72 65 65 6E 50 6F 73 2B 43 68 61 72 49 =ScreenPos+CharI
000050: 6E 63 72 65 6D 65 6E 74 3B 0D 0A 09 49 4E 43 28 ncrement;...INC(
000060: 43 6F 6C 4E 6F 29 3B 0D 0A 09 49 46 20 43 6F 6C ColNo);...IF Col
000070: 4E 6F 3E 3D 4C 6F 67 53 63 72 65 65 6E 57 69 64 No>=LogScreenWid
000080: 74 68 20 54 48 45 4E 0D 0A 09 09 49 46 20 52 6F th THEN....IF Ro
000090: 77 4E 6F 3C 28 4C 6F 67 53 63 72 65 65 6E 44 65 wNo<(LogScreenDe
0000A0: 70 74 68 2D 31 29 20 54 48 45 4E 0D 0A 09 09 09 pth-1) THEN.....
0000B0: 49 4E 43 28 52 6F 77 4E 6F 29 3B 0D 0A 09 09 09 INC(RowNo);.....
0000C0: 43 6F 6C 4E 6F 3A 3D 30 3B 0D 0A 09 09 45 4C 53 ColNo:=0;....ELS
0000D0: 45 0D 0A 09 09 09 44 45 43 28 43 6F 6C 4E 6F 29 E.....DEC(ColNo)
0000E0: 3B 0D 0A 09 09 09 44 45 43 28 53 63 72 65 65 6E ;.....DEC(Screen
0000F0: 50 6F 73 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A Pos);.....END;..
000100: 09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 50 75 74 ..END;...END Put
000110: 61 6E 64 49 6E 63 3B 0D 0A 0D 0A 50 52 4F 43 45 andInc;....PROCE
000120: 44 55 52 45 20 57 72 69 74 65 28 63 68 3A 43 48 DURE Write(ch:CH
000130: 41 52 29 3B 0D 0A 28 2A 09 57 72 69 74 65 20 61 AR);..(*.Write a
000140: 20 63 68 61 72 61 63 74 65 72 0D 0A 0D 0A 09 54 character.....T
000150: 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 75 his routine is u
000160: 73 65 64 20 62 79 20 74 65 72 6D 69 6E 61 6C 20 sed by terminal
000170: 77 68 65 6E 20 74 68 69 73 20 76 65 72 73 69 6F when this versio
000180: 6E 20 6F 66 20 53 63 72 65 65 6E 49 4F 20 0D 0A n of ScreenIO ..
000190: 09 69 73 20 69 6E 20 75 73 65 20 62 65 63 61 75 .is in use becau
0001A0: 73 65 20 61 20 66 6C 61 67 20 69 73 20 73 65 74 se a flag is set
0001B0: 20 62 79 20 74 68 65 20 69 6E 69 74 69 61 6C 69 by the initiali
0001C0: 73 61 74 69 6F 6E 20 6F 66 20 74 68 69 73 20 6D sation of this m
0001D0: 6F 64 75 6C 65 20 0D 0A 09 74 6F 67 65 74 68 65 odule ...togethe
0001E0: 72 20 77 69 74 68 20 74 68 65 20 61 64 64 72 65 r with the addre
0001F0: 73 73 20 6F 66 20 74 68 69 73 20 72 6F 75 74 69 ss of this routi
Size : 512 (Real : 512)
000000: 64 65 28 0D 0A 09 09 09 09 43 72 65 61 74 65 53 de(......CreateS
000010: 74 72 69 6E 67 4E 6F 64 65 28 27 28 27 29 2C 0D tringNode('('),.
000020: 0A 09 09 09 09 45 78 70 29 2C 0D 0A 09 09 09 43 .....Exp),.....C
000030: 72 65 61 74 65 53 74 72 69 6E 67 4E 6F 64 65 28 reateStringNode(
000040: 27 29 27 29 0D 0A 09 09 09 29 0D 0A 09 09 29 3B ')').....)....);
000050: 0D 0A 09 74 65 6D 70 3A 3D 43 72 65 61 74 65 41 ...temp:=CreateA
000060: 6C 74 4E 6F 64 65 28 0D 0A 09 09 46 61 63 74 2C ltNode(....Fact,
000070: 0D 0A 09 09 43 72 65 61 74 65 43 6F 6E 63 61 74 ....CreateConcat
000080: 4E 6F 64 65 28 0D 0A 09 09 09 46 61 63 74 2C 0D Node(.....Fact,.
000090: 0A 09 09 09 43 72 65 61 74 65 43 6F 6E 63 61 74 ....CreateConcat
0000A0: 4E 6F 64 65 28 0D 0A 09 09 09 09 43 72 65 61 74 Node(......Creat
0000B0: 65 53 74 72 69 6E 67 4E 6F 64 65 28 27 2A 27 29 eStringNode('*')
0000C0: 2C 0D 0A 09 09 09 09 54 65 72 6D 29 0D 0A 09 09 ,......Term)....
0000D0: 09 29 0D 0A 09 09 29 3B 0D 0A 09 54 65 72 6D 5E .)....);...Term^
0000E0: 3A 3D 74 65 6D 70 5E 3B 0D 0A 09 74 65 6D 70 3A :=temp^;...temp:
0000F0: 3D 43 72 65 61 74 65 41 6C 74 4E 6F 64 65 28 0D =CreateAltNode(.
000100: 0A 09 09 20 20 20 20 54 65 72 6D 2C 0D 0A 09 09 ... Term,....
000110: 20 20 20 20 43 72 65 61 74 65 43 6F 6E 63 61 74 CreateConcat
000120: 4E 6F 64 65 28 0D 0A 09 09 09 54 65 72 6D 2C 0D Node(.....Term,.
000130: 0A 09 09 09 43 72 65 61 74 65 43 6F 6E 63 61 74 ....CreateConcat
000140: 4E 6F 64 65 28 0D 0A 09 09 09 09 43 72 65 61 74 Node(......Creat
000150: 65 53 74 72 69 6E 67 4E 6F 64 65 28 27 2B 27 29 eStringNode('+')
000160: 2C 0D 0A 09 09 09 09 45 78 70 29 0D 0A 09 09 09 ,......Exp).....
000170: 29 0D 0A 09 09 20 20 20 20 29 3B 0D 0A 09 45 78 ).... );...Ex
000180: 70 5E 3A 3D 74 65 6D 70 5E 3B 0D 0A 09 45 78 70 p^:=temp^;...Exp
000190: 31 3A 3D 43 72 65 61 74 65 43 6F 6E 63 61 74 4E 1:=CreateConcatN
0001A0: 6F 64 65 28 0D 0A 09 09 45 78 70 2C 0D 0A 09 09 ode(....Exp,....
0001B0: 43 72 65 61 74 65 4C 69 6D 69 74 4E 6F 64 65 28 CreateLimitNode(
0001C0: 29 29 3B 0D 0A 09 49 46 20 4D 61 74 63 68 50 61 ));...IF MatchPa
0001D0: 74 74 65 72 6E 28 45 78 70 31 2C 27 32 2A 32 27 ttern(Exp1,'2*2'
0001E0: 29 3C 3E 4E 49 4C 20 54 48 45 4E 20 57 72 69 74 )<>NIL THEN Writ
0001F0: 65 53 74 72 69 6E 67 28 27 31 3A 20 20 4F 4B 27 eString('1: OK'
Size : 512 (Real : 512)
000000: 74 68 5D 29 2C 0D 0A 09 09 20 28 45 6E 64 6F 66 th]),.... (Endof
000010: 57 69 6E 64 6F 77 2D 53 74 61 72 74 6F 66 57 69 Window-StartofWi
000020: 6E 64 6F 77 29 2A 52 6F 77 57 69 64 74 68 29 3B ndow)*RowWidth);
000030: 0D 0A 09 46 4F 52 20 69 3A 3D 45 6E 64 6F 66 57 ...FOR i:=EndofW
000040: 69 6E 64 6F 77 2A 52 6F 77 57 69 64 74 68 20 54 indow*RowWidth T
000050: 4F 20 28 45 6E 64 6F 66 57 69 6E 64 6F 77 2B 31 O (EndofWindow+1
000060: 29 2A 52 6F 77 57 69 64 74 68 2D 31 20 44 4F 0D )*RowWidth-1 DO.
000070: 0A 09 09 53 63 72 65 65 6E 5B 69 5D 3A 3D 27 20 ...Screen[i]:='
000080: 27 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 53 65 74 ';....END;...Set
000090: 43 75 72 73 6F 72 3B 0D 0A 09 45 4E 44 20 0D 0A Cursor;...END ..
0000A0: 20 20 20 20 45 4E 44 20 53 63 72 6F 6C 6C 57 69 END ScrollWi
0000B0: 6E 64 6F 77 44 6F 77 6E 3B 0D 0A 0D 0A 50 52 4F ndowDown;....PRO
0000C0: 43 45 44 55 52 45 20 4C 6F 61 64 54 65 72 6D 43 CEDURE LoadTermC
0000D0: 6F 64 65 28 46 3A 46 69 6C 65 4E 61 6D 65 29 3B ode(F:FileName);
0000E0: 0D 0A 42 45 47 49 4E 0D 0A 09 28 2A 6E 6F 74 20 ..BEGIN...(*not
0000F0: 69 6D 70 6C 65 6D 65 6E 74 65 64 20 69 6E 20 74 implemented in t
000100: 68 69 73 20 76 65 72 73 69 6F 6E 2A 29 0D 0A 09 his version*)...
000110: 45 4E 44 20 4C 6F 61 64 54 65 72 6D 43 6F 64 65 END LoadTermCode
000120: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 6C 69 ;..PROCEDURE Cli
000130: 70 28 78 31 2C 79 31 2C 78 32 2C 79 32 3A 43 41 p(x1,y1,x2,y2:CA
000140: 52 44 49 4E 41 4C 29 3B 0D 0A 42 45 47 49 4E 0D RDINAL);..BEGIN.
000150: 0A 09 28 2A 6E 6F 74 20 69 6D 70 6C 65 6D 65 6E ..(*not implemen
000160: 74 65 64 20 69 6E 20 74 68 69 73 20 76 65 72 73 ted in this vers
000170: 69 6F 6E 2A 29 0D 0A 09 45 4E 44 20 43 6C 69 70 ion*)...END Clip
000180: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 20 44 72 ;..PROCEDURE Dr
000190: 61 77 42 6F 78 28 78 31 2C 79 31 2C 78 32 2C 79 awBox(x1,y1,x2,y
0001A0: 32 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A 0D 0A 2:CARDINAL);....
0001B0: 28 2A 09 09 64 72 61 77 20 61 20 62 6F 78 20 66 (*..draw a box f
0001C0: 6F 72 20 61 20 77 69 6E 64 6F 77 20 6F 6E 20 74 or a window on t
0001D0: 68 65 20 73 63 72 65 65 6E 0D 0A 0D 0A 09 09 78 he screen......x
0001E0: 31 2C 79 31 20 20 69 73 20 74 68 65 20 6C 6F 77 1,y1 is the low
0001F0: 65 72 20 6C 65 66 74 20 63 6F 72 6E 65 72 0D 0A er left corner..
Size : 512 (Real : 512)
000000: 20 0D 0A 09 09 09 20 70 6F 73 69 74 69 6F 6E 20 ..... position
000010: 61 73 20 73 74 6F 72 65 64 20 69 6E 20 42 49 4F as stored in BIO
000020: 53 20 74 61 62 6C 65 73 2A 29 0D 0A 09 09 20 20 S tables*)....
000030: 20 20 69 3A 3D 42 44 4F 53 28 77 63 63 66 63 2C i:=BDOS(wccfc,
000040: 31 62 68 29 3B 69 3A 3D 42 44 4F 53 28 77 63 63 1bh);i:=BDOS(wcc
000050: 66 63 2C 4F 52 44 28 27 53 27 29 29 3B 0D 0A 09 fc,ORD('S'));...
000060: 09 20 20 20 20 69 3A 3D 42 44 4F 53 28 77 63 63 . i:=BDOS(wcc
000070: 66 63 2C 33 32 29 3B 69 3A 3D 42 44 4F 53 28 77 fc,32);i:=BDOS(w
000080: 63 63 66 63 2C 33 32 29 3B 0D 0A 09 09 20 20 20 ccfc,32);....
000090: 20 69 3A 3D 42 44 4F 53 28 77 63 63 66 63 2C 31 i:=BDOS(wccfc,1
0000A0: 62 68 29 3B 69 3A 3D 42 44 4F 53 28 77 63 63 66 bh);i:=BDOS(wccf
0000B0: 63 2C 4F 52 44 28 27 3D 27 29 29 3B 0D 0A 09 09 c,ORD('='));....
0000C0: 20 20 20 20 69 3A 3D 42 44 4F 53 28 77 63 63 66 i:=BDOS(wccf
0000D0: 63 2C 33 32 29 3B 69 3A 3D 42 44 4F 53 28 77 63 c,32);i:=BDOS(wc
0000E0: 63 66 63 2C 33 32 29 3B 0D 0A 09 09 20 20 20 20 cfc,32);....
0000F0: 28 2A 42 61 6E 6B 32 28 41 44 52 28 53 63 72 65 (*Bank2(ADR(Scre
000100: 65 6E 5B 30 5D 29 2C 41 44 52 28 53 63 72 65 65 en[0]),ADR(Scree
000110: 6E 5B 53 63 72 65 65 6E 53 69 7A 65 2D 31 5D 29 n[ScreenSize-1])
000120: 2C 38 30 68 29 2A 29 0D 0A 09 09 0D 0A 09 09 09 ,80h)*).........
000130: 28 2A 6E 6F 77 20 63 6C 65 61 72 20 64 69 73 70 (*now clear disp
000140: 6C 61 79 20 6D 65 6D 6F 72 79 2A 29 0D 0A 09 09 lay memory*)....
000150: 20 20 20 20 53 63 72 65 65 6E 5B 30 5D 3A 3D 27 Screen[0]:='
000160: 20 27 3B 0D 0A 09 09 20 20 20 20 4D 6F 76 65 75 ';.... Moveu
000170: 70 28 41 44 52 28 53 63 72 65 65 6E 5B 31 5D 29 p(ADR(Screen[1])
000180: 2C 41 44 52 28 53 63 72 65 65 6E 5B 30 5D 29 2C ,ADR(Screen[0]),
000190: 53 63 72 65 65 6E 53 69 7A 65 2D 31 29 3B 0D 0A ScreenSize-1);..
0001A0: 09 09 20 20 20 20 53 63 72 65 65 6E 50 6F 73 3A .. ScreenPos:
0001B0: 3D 30 3B 0D 0A 09 09 20 20 20 20 43 6F 6C 4E 6F =0;.... ColNo
0001C0: 3A 3D 30 3B 0D 0A 09 09 20 20 20 20 52 6F 77 4E :=0;.... RowN
0001D0: 6F 3A 3D 30 0D 0A 09 09 20 20 20 20 7C 0D 0A 0D o:=0.... |...
0001E0: 0A 09 28 2A 20 54 68 65 20 66 6F 6C 6C 6F 77 69 ..(* The followi
0001F0: 6E 67 20 67 72 61 70 68 69 63 73 20 63 68 61 72 ng graphics char
Size : 512 (Real : 512)
000000: 09 09 78 32 2C 79 32 20 20 69 73 20 75 70 70 65 ..x2,y2 is uppe
000010: 72 20 72 69 67 68 74 20 63 6F 72 6E 65 72 2A 29 r right corner*)
000020: 0D 0A 56 41 52 09 69 3A 43 41 52 44 49 4E 41 4C ..VAR.i:CARDINAL
000030: 3B 0D 0A 42 45 47 49 4E 0D 0A 20 20 20 20 49 46 ;..BEGIN.. IF
000040: 20 4F 75 74 70 75 74 45 6E 61 62 6C 65 64 20 54 OutputEnabled T
000050: 48 45 4E 0D 0A 09 47 6F 74 6F 78 79 28 78 31 2C HEN...Gotoxy(x1,
000060: 79 31 29 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E y1);...ScreenCon
000070: 74 72 6F 6C 28 53 74 61 72 74 47 72 61 70 68 29 trol(StartGraph)
000080: 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 72 6F ;...ScreenContro
000090: 6C 28 43 6F 72 6E 65 72 4C 4C 29 3B 0D 0A 09 46 l(CornerLL);...F
0000A0: 4F 52 20 69 3A 3D 78 31 2B 31 20 54 4F 20 78 32 OR i:=x1+1 TO x2
0000B0: 2D 31 20 44 4F 20 53 63 72 65 65 6E 43 6F 6E 74 -1 DO ScreenCont
0000C0: 72 6F 6C 28 48 6F 72 69 7A 6F 6E 74 61 6C 29 20 rol(Horizontal)
0000D0: 45 4E 44 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E END;...ScreenCon
0000E0: 74 72 6F 6C 28 43 6F 72 6E 65 72 4C 52 29 3B 0D trol(CornerLR);.
0000F0: 0A 09 47 6F 74 6F 78 79 28 78 31 2C 79 32 29 3B ..Gotoxy(x1,y2);
000100: 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C ...ScreenControl
000110: 28 43 6F 72 6E 65 72 55 4C 29 3B 0D 0A 09 46 4F (CornerUL);...FO
000120: 52 20 69 3A 3D 78 31 2B 31 20 54 4F 20 78 32 2D R i:=x1+1 TO x2-
000130: 31 20 44 4F 20 53 63 72 65 65 6E 43 6F 6E 74 72 1 DO ScreenContr
000140: 6F 6C 28 48 6F 72 69 7A 6F 6E 74 61 6C 29 20 45 ol(Horizontal) E
000150: 4E 44 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 ND;...ScreenCont
000160: 72 6F 6C 28 43 6F 72 6E 65 72 55 52 29 3B 0D 0A rol(CornerUR);..
000170: 09 46 4F 52 20 69 3A 3D 79 32 2B 31 20 54 4F 20 .FOR i:=y2+1 TO
000180: 79 31 2D 31 20 20 44 4F 0D 0A 09 09 47 6F 74 6F y1-1 DO....Goto
000190: 78 79 28 78 32 2C 69 29 3B 0D 0A 09 09 53 63 72 xy(x2,i);....Scr
0001A0: 65 65 6E 43 6F 6E 74 72 6F 6C 28 56 65 72 74 69 eenControl(Verti
0001B0: 63 61 6C 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 cal);....END;...
0001C0: 46 4F 52 20 69 3A 3D 79 32 2B 31 20 54 4F 20 79 FOR i:=y2+1 TO y
0001D0: 31 2D 31 20 44 4F 0D 0A 09 09 47 6F 74 6F 78 79 1-1 DO....Gotoxy
0001E0: 28 78 31 2C 69 29 3B 0D 0A 09 09 53 63 72 65 65 (x1,i);....Scree
0001F0: 6E 43 6F 6E 74 72 6F 6C 28 56 65 72 74 69 63 61 nControl(Vertica
Size : 512 (Real : 512)
000000: 61 63 74 65 72 73 20 77 69 6C 6C 20 6E 65 65 64 acters will need
000010: 20 74 6F 20 62 65 20 6D 6F 64 69 66 69 65 64 20 to be modified
000020: 66 6F 72 20 0D 0A 09 20 20 20 64 69 66 66 65 72 for ... differ
000030: 65 6E 74 20 64 69 73 70 6C 61 79 20 73 79 73 74 ent display syst
000040: 65 6D 73 2A 29 0D 0A 0D 0A 09 48 6F 72 69 7A 6F ems*).....Horizo
000050: 6E 74 61 6C 3A 50 75 74 61 6E 64 49 6E 63 28 31 ntal:PutandInc(1
000060: 62 78 29 7C 0D 0A 09 56 65 72 74 69 63 61 6C 3A bx)|...Vertical:
000070: 50 75 74 61 6E 64 49 6E 63 28 30 62 78 29 7C 0D PutandInc(0bx)|.
000080: 0A 09 43 6F 72 6E 65 72 4C 4C 3A 50 75 74 61 6E ..CornerLL:Putan
000090: 64 49 6E 63 28 31 63 78 29 7C 0D 0A 09 43 6F 72 dInc(1cx)|...Cor
0000A0: 6E 65 72 55 4C 3A 50 75 74 61 6E 64 49 6E 63 28 nerUL:PutandInc(
0000B0: 30 66 78 29 7C 0D 0A 09 43 6F 72 6E 65 72 55 52 0fx)|...CornerUR
0000C0: 3A 50 75 74 61 6E 64 49 6E 63 28 31 30 78 29 7C :PutandInc(10x)|
0000D0: 0D 0A 09 43 6F 72 6E 65 72 4C 52 3A 50 75 74 61 ...CornerLR:Puta
0000E0: 6E 64 49 6E 63 28 31 66 78 29 7C 0D 0A 09 53 74 ndInc(1fx)|...St
0000F0: 61 72 74 78 79 2C 4D 69 64 64 6C 65 58 59 2C 45 artxy,MiddleXY,E
000100: 6E 64 58 59 3A 28 2A 63 75 72 73 6F 72 20 61 64 ndXY:(*cursor ad
000110: 64 72 65 73 73 69 6E 67 20 2D 20 6E 6F 74 20 72 dressing - not r
000120: 65 71 75 69 72 65 64 2A 29 7C 0D 0A 09 52 69 6E equired*)|...Rin
000130: 67 42 65 6C 6C 3A 69 3A 3D 42 44 4F 53 28 77 63 gBell:i:=BDOS(wc
000140: 63 66 63 2C 37 29 7C 0D 0A 09 4D 6F 76 65 4C 65 cfc,7)|...MoveLe
000150: 66 74 3A 49 46 20 43 6F 6C 4E 6F 3E 30 20 54 48 ft:IF ColNo>0 TH
000160: 45 4E 20 0D 0A 09 09 09 44 45 43 28 43 6F 6C 4E EN .....DEC(ColN
000170: 6F 29 3B 0D 0A 09 09 09 44 45 43 28 53 63 72 65 o);.....DEC(Scre
000180: 65 6E 50 6F 73 29 3B 0D 0A 09 09 45 4C 53 49 46 enPos);....ELSIF
000190: 20 52 6F 77 4E 6F 3E 30 20 54 48 45 4E 0D 0A 09 RowNo>0 THEN...
0001A0: 09 09 44 45 43 28 52 6F 77 4E 6F 29 3B 0D 0A 09 ..DEC(RowNo);...
0001B0: 09 09 43 6F 6C 4E 6F 3A 3D 4C 6F 67 53 63 72 65 ..ColNo:=LogScre
0001C0: 65 6E 57 69 64 74 68 2D 31 3B 0D 0A 09 09 09 53 enWidth-1;.....S
0001D0: 63 72 65 65 6E 50 6F 73 3A 3D 43 6F 6C 4E 6F 2B creenPos:=ColNo+
0001E0: 52 6F 77 4E 6F 2A 52 6F 77 57 69 64 74 68 3B 0D RowNo*RowWidth;.
0001F0: 0A 09 09 09 45 4E 44 7C 0D 0A 09 4D 6F 76 65 52 ....END|...MoveR
Size : 512 (Real : 512)
000000: 6C 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 20 20 20 l);....END;..
000010: 20 20 09 45 4E 44 0D 0A 20 20 20 20 45 4E 44 20 .END.. END
000020: 44 72 61 77 42 6F 78 3B 0D 0A 50 52 4F 43 45 44 DrawBox;..PROCED
000030: 55 52 45 20 4F 75 74 70 75 74 54 6F 53 63 72 65 URE OutputToScre
000040: 65 6E 28 4F 6E 3A 42 4F 4F 4C 45 41 4E 29 3B 0D en(On:BOOLEAN);.
000050: 0A 42 45 47 49 4E 0D 0A 09 4F 75 74 70 75 74 45 .BEGIN...OutputE
000060: 6E 61 62 6C 65 64 3A 3D 4F 6E 0D 0A 09 45 4E 44 nabled:=On...END
000070: 20 4F 75 74 70 75 74 54 6F 53 63 72 65 65 6E 3B OutputToScreen;
000080: 09 0D 0A 42 45 47 49 4E 0D 0A 09 4F 75 74 70 75 ...BEGIN...Outpu
000090: 74 45 6E 61 62 6C 65 64 3A 3D 54 52 55 45 3B 0D tEnabled:=TRUE;.
0000A0: 0A 09 42 6C 69 6E 6B 52 6F 75 74 69 6E 65 3A 3D ..BlinkRoutine:=
0000B0: 42 6C 69 6E 6B 43 75 72 73 6F 72 3B 0D 0A 09 42 BlinkCursor;...B
0000C0: 6C 69 6E 6B 45 6E 61 62 6C 65 64 3A 3D 54 52 55 linkEnabled:=TRU
0000D0: 45 3B 0D 0A 09 53 63 72 65 65 6E 50 6F 73 3A 3D E;...ScreenPos:=
0000E0: 30 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 72 0;...ScreenContr
0000F0: 6F 6C 28 43 6C 65 61 72 53 63 72 65 65 6E 29 3B ol(ClearScreen);
000100: 0D 0A 09 43 6F 6C 4E 6F 3A 3D 30 3B 0D 0A 09 52 ...ColNo:=0;...R
000110: 6F 77 4E 6F 3A 3D 30 3B 0D 0A 09 43 68 61 72 52 owNo:=0;...CharR
000120: 6F 75 74 69 6E 65 3A 3D 57 72 69 74 65 3B 0D 0A outine:=Write;..
000130: 09 43 68 61 72 45 6E 61 62 6C 65 64 3A 3D 54 52 .CharEnabled:=TR
000140: 55 45 3B 09 0D 0A 09 53 63 72 65 65 6E 57 69 64 UE;....ScreenWid
000150: 74 68 3A 3D 4C 6F 67 53 63 72 65 65 6E 57 69 64 th:=LogScreenWid
000160: 74 68 3B 0D 0A 09 53 63 72 65 65 6E 44 65 70 74 th;...ScreenDept
000170: 68 3A 3D 4C 6F 67 53 63 72 65 65 6E 44 65 70 74 h:=LogScreenDept
000180: 68 3B 0D 0A 09 45 4E 44 20 53 63 72 65 65 6E 49 h;...END ScreenI
000190: 4F 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A O...............
0001A0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001B0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001C0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
Size : 512 (Real : 512)
000000: 69 67 68 74 3A 49 46 20 43 6F 6C 4E 6F 3C 28 4C ight:IF ColNo<(L
000010: 6F 67 53 63 72 65 65 6E 57 69 64 74 68 2D 31 29 ogScreenWidth-1)
000020: 20 54 48 45 4E 20 0D 0A 09 09 09 49 4E 43 28 43 THEN .....INC(C
000030: 6F 6C 4E 6F 29 3B 0D 0A 09 09 09 49 4E 43 28 53 olNo);.....INC(S
000040: 63 72 65 65 6E 50 6F 73 29 3B 0D 0A 09 09 45 4C creenPos);....EL
000050: 53 49 46 20 52 6F 77 4E 6F 3C 28 4C 6F 67 53 63 SIF RowNo<(LogSc
000060: 72 65 65 6E 44 65 70 74 68 2D 31 29 20 54 48 45 reenDepth-1) THE
000070: 4E 0D 0A 09 09 09 43 6F 6C 4E 6F 3A 3D 30 3B 0D N.....ColNo:=0;.
000080: 0A 09 09 09 49 4E 43 28 52 6F 77 4E 6F 29 3B 0D ....INC(RowNo);.
000090: 0A 09 09 09 53 63 72 65 65 6E 50 6F 73 3A 3D 52 ....ScreenPos:=R
0000A0: 6F 77 4E 6F 2A 52 6F 77 57 69 64 74 68 3B 0D 0A owNo*RowWidth;..
0000B0: 09 09 09 45 4E 44 7C 0D 0A 09 4D 6F 76 65 44 6F ...END|...MoveDo
0000C0: 77 6E 3A 49 46 20 52 6F 77 4E 6F 3C 28 4C 6F 67 wn:IF RowNo<(Log
0000D0: 53 63 72 65 65 6E 44 65 70 74 68 2D 31 29 20 54 ScreenDepth-1) T
0000E0: 48 45 4E 0D 0A 09 09 09 49 4E 43 28 52 6F 77 4E HEN.....INC(RowN
0000F0: 6F 29 3B 0D 0A 09 09 09 53 63 72 65 65 6E 50 6F o);.....ScreenPo
000100: 73 3A 3D 53 63 72 65 65 6E 50 6F 73 2B 52 6F 77 s:=ScreenPos+Row
000110: 57 69 64 74 68 3B 0D 0A 09 09 09 45 4E 44 7C 0D Width;.....END|.
000120: 0A 09 4D 6F 76 65 55 70 3A 49 46 20 52 6F 77 4E ..MoveUp:IF RowN
000130: 6F 3E 30 20 54 48 45 4E 0D 0A 09 09 09 44 45 43 o>0 THEN.....DEC
000140: 28 52 6F 77 4E 6F 29 3B 0D 0A 09 09 09 53 63 72 (RowNo);.....Scr
000150: 65 65 6E 50 6F 73 3A 3D 53 63 72 65 65 6E 50 6F eenPos:=ScreenPo
000160: 73 2D 52 6F 77 57 69 64 74 68 3B 0D 0A 09 09 09 s-RowWidth;.....
000170: 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 20 28 2A 43 END;....END; (*C
000180: 41 53 45 2A 29 0D 0A 09 53 65 74 43 75 72 73 6F ASE*)...SetCurso
000190: 72 3B 0D 0A 09 45 4E 44 20 0D 0A 20 20 20 20 45 r;...END .. E
0001A0: 4E 44 20 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C ND ScreenControl
0001B0: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 53 63 72 ;..PROCEDURE Scr
0001C0: 6F 6C 6C 57 69 6E 64 6F 77 55 70 28 53 74 61 72 ollWindowUp(Star
0001D0: 74 6F 66 57 69 6E 64 6F 77 2C 45 6E 64 6F 66 57 tofWindow,EndofW
0001E0: 69 6E 64 6F 77 3A 43 41 52 44 49 4E 41 4C 29 3B indow:CARDINAL);
0001F0: 0D 0A 42 45 47 49 4E 0D 0A 20 20 20 20 49 46 20 ..BEGIN.. IF
Size : 512 (Real : 512)
000000: 4D 4F 44 55 4C 45 20 54 65 73 74 3B 0D 0A 0D 0A MODULE Test;....
000010: 28 2A 09 54 65 73 74 20 6F 66 20 70 61 74 74 65 (*.Test of patte
000020: 72 6E 20 6D 61 74 63 68 20 6D 6F 64 75 6C 65 20 rn match module
000030: 2A 29 0D 0A 0D 0A 46 52 4F 4D 09 54 65 72 6D 69 *)....FROM.Termi
000040: 6E 61 6C 20 49 4D 50 4F 52 54 20 57 72 69 74 65 nal IMPORT Write
000050: 53 74 72 69 6E 67 2C 52 65 61 64 53 74 72 69 6E String,ReadStrin
000060: 67 2C 57 72 69 74 65 4C 6E 3B 0D 0A 46 52 4F 4D g,WriteLn;..FROM
000070: 09 50 61 74 74 65 72 6E 20 49 4D 50 4F 52 54 20 .Pattern IMPORT
000080: 4E 6F 64 65 54 79 70 65 2C 50 4E 6F 64 65 2C 43 NodeType,PNode,C
000090: 72 65 61 74 65 53 74 72 69 6E 67 4E 6F 64 65 2C reateStringNode,
0000A0: 4D 61 74 63 68 50 61 74 74 65 72 6E 2C 43 68 61 MatchPattern,Cha
0000B0: 72 53 65 74 2C 0D 0A 09 09 09 43 72 65 61 74 65 rSet,.....Create
0000C0: 41 6C 74 4E 6F 64 65 2C 43 72 65 61 74 65 53 74 AltNode,CreateSt
0000D0: 72 69 6E 67 4E 6F 64 65 2C 0D 0A 09 09 09 43 72 ringNode,.....Cr
0000E0: 65 61 74 65 41 6E 79 4F 66 4E 6F 64 65 2C 43 72 eateAnyOfNode,Cr
0000F0: 65 61 74 65 43 6F 6E 63 61 74 4E 6F 64 65 2C 43 eateConcatNode,C
000100: 72 65 61 74 65 4C 69 6D 69 74 4E 6F 64 65 3B 0D reateLimitNode;.
000110: 0A 46 52 4F 4D 09 53 74 6F 72 61 67 65 20 49 4D .FROM.Storage IM
000120: 50 4F 52 54 20 41 4C 4C 4F 43 41 54 45 3B 0D 0A PORT ALLOCATE;..
000130: 56 41 52 09 45 78 70 31 2C 45 78 70 2C 54 65 72 VAR.Exp1,Exp,Ter
000140: 6D 2C 46 61 63 74 3A 50 4E 6F 64 65 3B 0D 0A 09 m,Fact:PNode;...
000150: 74 65 6D 70 3A 50 4E 6F 64 65 3B 0D 0A 42 45 47 temp:PNode;..BEG
000160: 49 4E 0D 0A 09 4E 45 57 28 45 78 70 29 3B 0D 0A IN...NEW(Exp);..
000170: 09 4E 45 57 28 54 65 72 6D 29 3B 0D 0A 09 46 61 .NEW(Term);...Fa
000180: 63 74 3A 3D 43 72 65 61 74 65 41 6C 74 4E 6F 64 ct:=CreateAltNod
000190: 65 28 0D 0A 09 09 43 72 65 61 74 65 41 6E 79 4F e(....CreateAnyO
0001A0: 66 4E 6F 64 65 28 43 68 61 72 53 65 74 7B 27 41 fNode(CharSet{'A
0001B0: 27 2E 2E 27 5A 27 2C 27 30 27 2E 2E 27 39 27 2C '..'Z','0'..'9',
0001C0: 27 61 27 2E 2E 27 7A 27 7D 2C 31 2C 33 30 30 30 'a'..'z'},1,3000
0001D0: 30 2C 54 52 55 45 29 2C 0D 0A 09 09 43 72 65 61 0,TRUE),....Crea
0001E0: 74 65 43 6F 6E 63 61 74 4E 6F 64 65 28 0D 0A 09 teConcatNode(...
0001F0: 09 09 43 72 65 61 74 65 43 6F 6E 63 61 74 4E 6F ..CreateConcatNo
Size : 512 (Real : 512)
000000: 4F 75 74 70 75 74 45 6E 61 62 6C 65 64 20 54 48 OutputEnabled TH
000010: 45 4E 0D 0A 09 43 6C 65 61 72 43 75 72 73 6F 72 EN...ClearCursor
000020: 3B 0D 0A 09 4D 6F 76 65 75 70 28 41 44 52 28 53 ;...Moveup(ADR(S
000030: 63 72 65 65 6E 5B 28 53 74 61 72 74 6F 66 57 69 creen[(StartofWi
000040: 6E 64 6F 77 29 2A 52 6F 77 57 69 64 74 68 5D 29 ndow)*RowWidth])
000050: 2C 0D 0A 09 09 20 41 44 52 28 53 63 72 65 65 6E ,.... ADR(Screen
000060: 5B 28 53 74 61 72 74 6F 66 57 69 6E 64 6F 77 2B [(StartofWindow+
000070: 31 29 2A 52 6F 77 57 69 64 74 68 5D 29 2C 0D 0A 1)*RowWidth]),..
000080: 09 09 20 28 45 6E 64 6F 66 57 69 6E 64 6F 77 2D .. (EndofWindow-
000090: 53 74 61 72 74 6F 66 57 69 6E 64 6F 77 29 2A 52 StartofWindow)*R
0000A0: 6F 77 57 69 64 74 68 29 3B 0D 0A 09 46 4F 52 20 owWidth);...FOR
0000B0: 69 3A 3D 53 74 61 72 74 6F 66 57 69 6E 64 6F 77 i:=StartofWindow
0000C0: 2A 52 6F 77 57 69 64 74 68 20 54 4F 20 28 53 74 *RowWidth TO (St
0000D0: 61 72 74 6F 66 57 69 6E 64 6F 77 2B 31 29 2A 52 artofWindow+1)*R
0000E0: 6F 77 57 69 64 74 68 2D 31 20 44 4F 0D 0A 09 09 owWidth-1 DO....
0000F0: 53 63 72 65 65 6E 5B 69 5D 3A 3D 27 20 27 3B 0D Screen[i]:=' ';.
000100: 0A 09 09 45 4E 44 3B 0D 0A 09 53 65 74 43 75 72 ...END;...SetCur
000110: 73 6F 72 3B 0D 0A 09 45 4E 44 20 0D 0A 20 20 20 sor;...END ..
000120: 20 45 4E 44 20 53 63 72 6F 6C 6C 57 69 6E 64 6F END ScrollWindo
000130: 77 55 70 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 wUp;..PROCEDURE
000140: 53 63 72 6F 6C 6C 57 69 6E 64 6F 77 44 6F 77 6E ScrollWindowDown
000150: 28 53 74 61 72 74 6F 66 57 69 6E 64 6F 77 2C 45 (StartofWindow,E
000160: 6E 64 6F 66 57 69 6E 64 6F 77 3A 43 41 52 44 49 ndofWindow:CARDI
000170: 4E 41 4C 29 3B 0D 0A 42 45 47 49 4E 0D 0A 20 20 NAL);..BEGIN..
000180: 20 20 49 46 20 4F 75 74 70 75 74 45 6E 61 62 6C IF OutputEnabl
000190: 65 64 20 54 48 45 4E 0D 0A 09 43 6C 65 61 72 43 ed THEN...ClearC
0001A0: 75 72 73 6F 72 3B 0D 0A 09 4D 6F 76 65 64 6F 77 ursor;...Movedow
0001B0: 6E 28 41 44 52 28 53 63 72 65 65 6E 5B 28 53 74 n(ADR(Screen[(St
0001C0: 61 72 74 6F 66 57 69 6E 64 6F 77 2B 31 29 2A 52 artofWindow+1)*R
0001D0: 6F 77 57 69 64 74 68 5D 29 2C 0D 0A 09 09 20 41 owWidth]),.... A
0001E0: 44 52 28 53 63 72 65 65 6E 5B 28 53 74 61 72 74 DR(Screen[(Start
0001F0: 6F 66 57 69 6E 64 6F 77 29 2A 52 6F 77 57 69 64 ofWindow)*RowWid
Size : 512 (Real : 512)
000000: 6C 65 50 74 72 5E 29 3B 0D 0A 09 09 49 46 20 28 lePtr^);....IF (
000010: 69 3E 43 41 52 44 49 4E 41 4C 28 4C 69 6E 65 50 i>CARDINAL(LineP
000020: 6F 73 29 29 20 4F 52 20 28 63 68 3D 45 4F 46 29 os)) OR (ch=EOF)
000030: 20 54 48 45 4E 20 45 58 49 54 20 45 4E 44 3B 0D THEN EXIT END;.
000040: 0A 09 09 49 46 20 63 68 3D 54 41 42 20 54 48 45 ...IF ch=TAB THE
000050: 4E 20 54 68 69 73 78 3A 3D 49 41 4E 44 28 54 68 N Thisx:=IAND(Th
000060: 69 73 78 2B 38 2C 30 66 66 66 38 68 29 20 0D 0A isx+8,0fff8h) ..
000070: 09 09 45 4C 53 45 20 20 49 4E 43 28 54 68 69 73 ..ELSE INC(This
000080: 78 29 20 45 4E 44 3B 0D 0A 09 09 62 3A 3D 46 6F x) END;....b:=Fo
000090: 72 77 61 72 64 4F 6E 65 43 68 61 72 28 43 75 72 rwardOneChar(Cur
0000A0: 46 69 6C 65 50 74 72 5E 29 20 0D 0A 09 09 45 4E FilePtr^) ....EN
0000B0: 44 3B 0D 0A 09 69 3A 3D 54 68 69 73 78 3B 0D 0A D;...i:=Thisx;..
0000C0: 09 57 48 49 4C 45 20 54 68 69 73 78 3E 3D 28 53 .WHILE Thisx>=(S
0000D0: 63 72 65 65 6E 57 69 64 74 68 2B 43 75 72 72 65 creenWidth+Curre
0000E0: 6E 74 4C 65 66 74 4D 61 72 67 69 6E 29 20 44 4F ntLeftMargin) DO
0000F0: 0D 0A 09 09 43 68 61 6E 67 65 4D 61 72 67 69 6E ....ChangeMargin
000100: 28 33 32 29 3B 0D 0A 09 09 54 68 69 73 78 3A 3D (32);....Thisx:=
000110: 69 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 57 48 49 i;....END;...WHI
000120: 4C 45 20 54 68 69 73 78 3C 43 75 72 72 65 6E 74 LE Thisx<Current
000130: 4C 65 66 74 4D 61 72 67 69 6E 20 44 4F 0D 0A 09 LeftMargin DO...
000140: 09 43 68 61 6E 67 65 4D 61 72 67 69 6E 28 2D 33 .ChangeMargin(-3
000150: 32 29 3B 0D 0A 09 09 54 68 69 73 78 3A 3D 69 3B 2);....Thisx:=i;
000160: 0D 0A 09 09 45 4E 44 3B 0D 0A 09 54 68 69 73 78 ....END;...Thisx
000170: 3A 3D 54 68 69 73 78 2D 43 75 72 72 65 6E 74 4C :=Thisx-CurrentL
000180: 65 66 74 4D 61 72 67 69 6E 3B 0D 0A 09 63 75 72 eftMargin;...cur
000190: 78 5B 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 5D x[CurrentWindow]
0001A0: 3A 3D 54 68 69 73 78 3B 0D 0A 09 52 65 73 65 74 :=Thisx;...Reset
0001B0: 50 6F 73 3B 0D 0A 09 45 4E 44 20 43 68 61 6E 67 Pos;...END Chang
0001C0: 65 50 6F 73 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 ePos;....PROCEDU
0001D0: 52 45 20 4C 69 6E 65 4D 6F 76 65 28 62 79 3A 49 RE LineMove(by:I
0001E0: 4E 54 45 47 45 52 29 3B 0D 0A 56 41 52 09 69 3A NTEGER);..VAR.i:
0001F0: 49 4E 54 45 47 45 52 3B 0D 0A 42 45 47 49 4E 0D INTEGER;..BEGIN.
Size : 512 (Real : 512)
000000: 72 20 77 69 74 68 69 6E 20 74 68 65 0D 0A 09 74 r within the...t
000010: 65 78 74 20 6C 69 6E 65 2E 20 49 74 20 6E 65 65 ext line. It nee
000020: 64 20 6E 6F 74 20 62 65 20 74 68 65 20 73 61 6D d not be the sam
000030: 65 20 61 73 20 74 68 65 20 70 6F 73 69 74 69 6F e as the positio
000040: 6E 20 6F 6E 20 74 68 65 0D 0A 09 73 63 72 65 65 n on the...scree
000050: 6E 20 62 65 63 61 75 73 65 20 6F 66 20 74 68 65 n because of the
000060: 20 75 73 65 20 6F 66 20 74 61 62 20 63 68 61 72 use of tab char
000070: 61 63 74 65 72 73 2A 29 0D 0A 54 59 50 45 09 50 acters*)..TYPE.P
000080: 45 64 69 74 46 69 6C 65 3D 50 4F 49 4E 54 45 52 EditFile=POINTER
000090: 20 54 4F 20 45 64 69 74 46 69 6C 65 3B 0D 0A 56 TO EditFile;..V
0000A0: 41 52 09 69 3A 49 4E 54 45 47 45 52 3B 0D 0A 09 AR.i:INTEGER;...
0000B0: 63 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 53 74 c:CARDINAL;...St
0000C0: 61 72 74 6F 66 57 69 6E 64 6F 77 2C 45 6E 64 6F artofWindow,Endo
0000D0: 66 57 69 6E 64 6F 77 3A 43 41 52 44 49 4E 41 4C fWindow:CARDINAL
0000E0: 3B 0D 0A 09 63 68 3A 43 48 41 52 3B 0D 0A 09 43 ;...ch:CHAR;...C
0000F0: 75 72 72 65 6E 74 4C 65 66 74 4D 61 72 67 69 6E urrentLeftMargin
000100: 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 09 46 69 6C :CARDINAL;...Fil
000110: 65 4C 69 6D 69 74 3A 42 4F 4F 4C 45 41 4E 3B 0D eLimit:BOOLEAN;.
000120: 0A 09 52 65 44 72 61 77 6E 3A 42 4F 4F 4C 45 41 ..ReDrawn:BOOLEA
000130: 4E 3B 0D 0A 09 43 75 72 46 69 6C 65 50 74 72 3A N;...CurFilePtr:
000140: 50 45 64 69 74 46 69 6C 65 3B 0D 0A 50 52 4F 43 PEditFile;..PROC
000150: 45 44 55 52 45 20 43 68 61 6E 67 65 50 6F 73 3B EDURE ChangePos;
000160: 46 4F 52 57 41 52 44 3B 0D 0A 50 52 4F 43 45 44 FORWARD;..PROCED
000170: 55 52 45 20 44 6F 53 63 72 65 65 6E 43 68 61 6E URE DoScreenChan
000180: 67 65 28 43 6F 64 65 3A 45 64 69 74 73 29 3B 0D ge(Code:Edits);.
000190: 0A 42 45 47 49 4E 0D 0A 09 53 63 72 65 65 6E 43 .BEGIN...ScreenC
0001A0: 6F 6E 74 72 6F 6C 28 43 6F 64 65 29 3B 0D 0A 09 ontrol(Code);...
0001B0: 45 4E 44 20 44 6F 53 63 72 65 65 6E 43 68 61 6E END DoScreenChan
0001C0: 67 65 3B 0D 0A 0D 0A 0D 0A 56 41 52 09 6C 69 6E ge;......VAR.lin
0001D0: 65 73 6D 6F 76 65 64 3A 49 4E 54 45 47 45 52 3B esmoved:INTEGER;
0001E0: 0D 0A 09 70 3A 50 6F 73 69 74 69 6F 6E 3B 0D 0A ...p:Position;..
0001F0: 0D 0A 50 52 4F 43 45 44 55 52 45 20 53 65 74 4C ..PROCEDURE SetL
Size : 512 (Real : 512)
000000: 29 20 45 4E 44 3B 0D 0A 09 49 46 20 4D 61 74 63 ) END;...IF Matc
000010: 68 50 61 74 74 65 72 6E 28 45 78 70 31 2C 27 32 hPattern(Exp1,'2
000020: 2B 33 2A 32 27 29 3C 3E 4E 49 4C 20 54 48 45 4E +3*2')<>NIL THEN
000030: 20 57 72 69 74 65 53 74 72 69 6E 67 28 27 32 3A WriteString('2:
000040: 20 20 4F 4B 27 29 20 45 4E 44 3B 0D 0A 09 49 46 OK') END;...IF
000050: 20 4D 61 74 63 68 50 61 74 74 65 72 6E 28 45 78 MatchPattern(Ex
000060: 70 31 2C 27 32 2A 28 32 2B 33 29 27 29 3C 3E 4E p1,'2*(2+3)')<>N
000070: 49 4C 20 54 48 45 4E 20 57 72 69 74 65 53 74 72 IL THEN WriteStr
000080: 69 6E 67 28 27 33 3A 20 20 4F 4B 27 29 20 45 4E ing('3: OK') EN
000090: 44 3B 0D 0A 09 49 46 20 4D 61 74 63 68 50 61 74 D;...IF MatchPat
0000A0: 74 65 72 6E 28 45 78 70 31 2C 27 32 2A 32 2A 33 tern(Exp1,'2*2*3
0000B0: 2A 34 27 29 3C 3E 4E 49 4C 20 54 48 45 4E 20 57 *4')<>NIL THEN W
0000C0: 72 69 74 65 53 74 72 69 6E 67 28 27 34 3A 20 20 riteString('4:
0000D0: 4F 4B 27 29 20 45 4E 44 3B 0D 0A 09 49 46 20 4D OK') END;...IF M
0000E0: 61 74 63 68 50 61 74 74 65 72 6E 28 45 78 70 31 atchPattern(Exp1
0000F0: 2C 27 32 2A 32 2B 33 2A 37 27 29 3C 3E 4E 49 4C ,'2*2+3*7')<>NIL
000100: 20 54 48 45 4E 20 57 72 69 74 65 53 74 72 69 6E THEN WriteStrin
000110: 67 28 27 35 3A 20 20 4F 4B 27 29 20 45 4E 44 3B g('5: OK') END;
000120: 0D 0A 09 49 46 20 4D 61 74 63 68 50 61 74 74 65 ...IF MatchPatte
000130: 72 6E 28 45 78 70 31 2C 27 32 2A 32 2B 33 2A 34 rn(Exp1,'2*2+3*4
000140: 2B 28 39 2B 38 29 27 29 3C 3E 4E 49 4C 20 54 48 +(9+8)')<>NIL TH
000150: 45 4E 20 57 72 69 74 65 53 74 72 69 6E 67 28 27 EN WriteString('
000160: 36 3A 20 20 4F 4B 27 29 20 45 4E 44 3B 0D 0A 09 6: OK') END;...
000170: 49 46 20 4D 61 74 63 68 50 61 74 74 65 72 6E 28 IF MatchPattern(
000180: 45 78 70 31 2C 27 32 2B 2B 32 27 29 3C 3E 4E 49 Exp1,'2++2')<>NI
000190: 4C 20 54 48 45 4E 20 57 72 69 74 65 53 74 72 69 L THEN WriteStri
0001A0: 6E 67 28 27 37 3A 20 6E 6F 74 20 6F 6B 20 27 29 ng('7: not ok ')
0001B0: 20 45 4E 44 3B 0D 0A 09 45 4E 44 20 54 65 73 74 END;...END Test
0001C0: 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0001F0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
Size : 512 (Real : 512)
000000: 69 6E 65 50 6F 73 28 6D 6F 76 65 3A 49 4E 54 45 inePos(move:INTE
000010: 47 45 52 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 52 GER);..BEGIN...R
000020: 65 74 72 6C 69 6E 65 28 43 75 72 46 69 6C 65 50 etrline(CurFileP
000030: 74 72 5E 2C 4C 69 6E 65 4C 65 6E 2C 4C 69 6E 65 tr^,LineLen,Line
000040: 50 6F 73 2C 70 2C 6C 69 6E 65 73 6D 6F 76 65 64 Pos,p,linesmoved
000050: 2C 6D 6F 76 65 29 3B 0D 0A 09 45 4E 44 20 53 65 ,move);...END Se
000060: 74 4C 69 6E 65 50 6F 73 3B 0D 0A 50 52 4F 43 45 tLinePos;..PROCE
000070: 44 55 52 45 20 4D 61 72 6B 41 73 55 70 64 61 74 DURE MarkAsUpdat
000080: 65 64 3B 0D 0A 42 45 47 49 4E 0D 0A 09 55 70 64 ed;..BEGIN...Upd
000090: 61 74 65 64 5B 43 75 72 72 65 6E 74 46 69 6C 65 ated[CurrentFile
0000A0: 5D 3A 3D 54 52 55 45 0D 0A 09 45 4E 44 20 4D 61 ]:=TRUE...END Ma
0000B0: 72 6B 41 73 55 70 64 61 74 65 64 3B 0D 0A 50 52 rkAsUpdated;..PR
0000C0: 4F 43 45 44 55 52 45 20 52 65 73 65 74 50 6F 73 OCEDURE ResetPos
0000D0: 3B 0D 0A 42 45 47 49 4E 0D 0A 09 47 6F 74 6F 78 ;..BEGIN...Gotox
0000E0: 79 28 54 68 69 73 78 2C 54 68 69 73 79 29 3B 0D y(Thisx,Thisy);.
0000F0: 0A 09 45 4E 44 20 52 65 73 65 74 50 6F 73 3B 0D ..END ResetPos;.
000100: 0A 50 52 4F 43 45 44 55 52 45 20 43 6C 65 61 72 .PROCEDURE Clear
000110: 52 65 73 74 4F 66 4C 69 6E 65 3B 0D 0A 42 45 47 RestOfLine;..BEG
000120: 49 4E 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 72 IN...ScreenContr
000130: 6F 6C 28 44 65 6C 45 6F 6C 29 3B 0D 0A 09 49 46 ol(DelEol);...IF
000140: 20 4E 4F 54 20 4D 61 64 65 43 68 61 6E 67 65 20 NOT MadeChange
000150: 54 48 45 4E 0D 0A 09 09 46 4F 52 20 63 3A 3D 54 THEN....FOR c:=T
000160: 68 69 73 78 2B 31 20 54 4F 20 53 63 72 65 65 6E hisx+1 TO Screen
000170: 57 69 64 74 68 20 44 4F 20 57 72 69 74 65 28 27 Width DO Write('
000180: 20 27 29 20 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B ') END;....END;
000190: 0D 0A 09 52 65 73 65 74 50 6F 73 3B 0D 0A 09 45 ...ResetPos;...E
0001A0: 4E 44 20 43 6C 65 61 72 52 65 73 74 4F 66 4C 69 ND ClearRestOfLi
0001B0: 6E 65 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 44 ne;..PROCEDURE D
0001C0: 65 6C 54 6F 45 4F 4C 3B 0D 0A 56 41 52 09 69 3A elToEOL;..VAR.i:
0001D0: 43 41 52 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 4E CARDINAL;..BEGIN
0001E0: 0D 0A 09 4D 61 72 6B 41 73 55 70 64 61 74 65 64 ...MarkAsUpdated
0001F0: 3B 0D 0A 09 49 46 20 4C 69 6E 65 50 6F 73 3C 3D ;...IF LinePos<=
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: 4C 69 6E 65 4C 65 6E 20 54 48 45 4E 20 0D 0A 09 LineLen THEN ...
000010: 09 44 65 6C 43 68 61 72 73 28 43 75 72 46 69 6C .DelChars(CurFil
000020: 65 50 74 72 5E 2C 4C 69 6E 65 4C 65 6E 2D 4C 69 ePtr^,LineLen-Li
000030: 6E 65 50 6F 73 29 20 0D 0A 09 09 45 4E 44 3B 0D nePos) ....END;.
000040: 0A 09 4C 69 6E 65 4C 65 6E 3A 3D 4C 69 6E 65 50 ..LineLen:=LineP
000050: 6F 73 3B 0D 0A 09 43 6C 65 61 72 52 65 73 74 4F os;...ClearRestO
000060: 66 4C 69 6E 65 3B 0D 0A 09 45 4E 44 20 44 65 6C fLine;...END Del
000070: 54 6F 45 4F 4C 3B 0D 0A 56 41 52 09 0D 0A 09 62 ToEOL;..VAR....b
000080: 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 50 52 4F 43 45 :BOOLEAN;..PROCE
000090: 44 55 52 45 20 52 65 44 69 73 70 6C 61 79 57 69 DURE ReDisplayWi
0000A0: 6E 64 6F 77 3B 0D 0A 42 45 47 49 4E 0D 0A 09 44 ndow;..BEGIN...D
0000B0: 69 73 70 6C 61 79 46 69 6C 65 28 43 75 72 46 69 isplayFile(CurFi
0000C0: 6C 65 50 74 72 5E 2C 43 75 72 72 65 6E 74 57 69 lePtr^,CurrentWi
0000D0: 6E 64 6F 77 2C 54 68 69 73 78 2C 54 68 69 73 79 ndow,Thisx,Thisy
0000E0: 29 3B 0D 0A 09 52 65 73 65 74 50 6F 73 3B 0D 0A );...ResetPos;..
0000F0: 09 63 75 72 78 5B 43 75 72 72 65 6E 74 57 69 6E .curx[CurrentWin
000100: 64 6F 77 5D 3A 3D 54 68 69 73 78 3B 0D 0A 09 63 dow]:=Thisx;...c
000110: 75 72 79 5B 43 75 72 72 65 6E 74 57 69 6E 64 6F ury[CurrentWindo
000120: 77 5D 3A 3D 54 68 69 73 79 3B 0D 0A 09 52 65 44 w]:=Thisy;...ReD
000130: 72 61 77 6E 3A 3D 54 52 55 45 3B 0D 0A 09 45 4E rawn:=TRUE;...EN
000140: 44 20 52 65 44 69 73 70 6C 61 79 57 69 6E 64 6F D ReDisplayWindo
000150: 77 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 52 65 w;..PROCEDURE Re
000160: 44 69 73 70 6C 61 79 3B 0D 0A 42 45 47 49 4E 0D Display;..BEGIN.
000170: 0A 09 52 65 44 69 73 70 6C 61 79 57 69 6E 64 6F ..ReDisplayWindo
000180: 77 3B 0D 0A 09 53 65 74 4C 69 6E 65 50 6F 73 28 w;...SetLinePos(
000190: 30 29 3B 0D 0A 09 43 68 61 6E 67 65 50 6F 73 3B 0);...ChangePos;
0001A0: 0D 0A 09 45 4E 44 20 52 65 44 69 73 70 6C 61 79 ...END ReDisplay
0001B0: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 68 61 ;..PROCEDURE Cha
0001C0: 6E 67 65 4D 61 72 67 69 6E 28 49 6E 63 3A 49 4E ngeMargin(Inc:IN
0001D0: 54 45 47 45 52 29 3B 0D 0A 42 45 47 49 4E 0D 0A TEGER);..BEGIN..
0001E0: 09 49 46 20 28 49 6E 63 3C 30 29 20 41 4E 44 20 .IF (Inc<0) AND
0001F0: 20 28 43 75 72 72 65 6E 74 4C 65 66 74 4D 61 72 (CurrentLeftMar
Size : 512 (Real : 512)
000000: 0D 0A 28 2A 09 54 68 69 73 20 69 73 20 61 20 76 ..(*.This is a v
000010: 65 72 73 69 6F 6E 20 6F 66 20 65 64 69 74 63 6F ersion of editco
000020: 6E 74 20 66 6F 72 20 70 65 6F 70 6C 65 20 77 69 nt for people wi
000030: 74 68 0D 0A 09 64 75 6D 62 20 74 65 72 6D 69 6E th...dumb termin
000040: 61 6C 73 2E 20 20 54 68 65 20 6F 6E 6C 79 20 66 als. The only f
000050: 61 63 69 6C 69 74 69 65 73 20 77 68 69 63 68 20 acilities which
000060: 74 68 69 73 20 76 65 72 73 69 6F 6E 0D 0A 09 6F this version...o
000070: 66 20 45 44 49 54 43 4F 4E 54 20 61 73 73 75 6D f EDITCONT assum
000080: 65 73 20 69 73 20 47 6F 74 6F 78 79 20 61 6E 64 es is Gotoxy and
000090: 20 74 68 65 20 61 62 69 6C 69 74 79 20 74 6F 20 the ability to
0000A0: 68 69 67 68 6C 69 67 68 74 0D 0A 09 69 6E 20 73 highlight...in s
0000B0: 6F 6D 65 20 77 61 79 20 2A 29 0D 0A 0D 0A 28 2A ome way *)....(*
0000C0: 24 6C 2D 2A 29 0D 0A 49 4D 50 4C 45 4D 45 4E 54 $l-*)..IMPLEMENT
0000D0: 41 54 49 4F 4E 20 4D 4F 44 55 4C 45 20 45 64 69 ATION MODULE Edi
0000E0: 74 43 6F 6E 74 72 6F 6C 3B 0D 0A 0D 0A 28 2A 09 tControl;....(*.
0000F0: 45 64 69 74 6F 72 20 63 6F 6E 74 72 6F 6C 20 2D Editor control -
000100: 20 64 61 74 61 20 61 72 65 61 73 20 66 6F 72 20 data areas for
000110: 66 69 6C 65 20 61 6E 64 20 72 6F 75 74 69 6E 65 file and routine
000120: 73 20 77 68 69 63 68 20 61 63 74 75 61 6C 6C 79 s which actually
000130: 0D 0A 09 70 65 72 66 6F 72 6D 20 65 64 69 74 20 ...perform edit
000140: 66 75 6E 63 74 69 6F 6E 73 20 62 79 20 63 61 6C functions by cal
000150: 6C 69 6E 67 20 6D 61 6B 65 65 64 69 74 20 74 6F ling makeedit to
000160: 20 65 64 69 74 20 74 68 65 20 66 69 6C 65 20 61 edit the file a
000170: 6E 64 0D 0A 09 65 64 69 74 64 69 73 70 20 74 6F nd...editdisp to
000180: 20 63 68 61 6E 67 65 20 74 68 65 20 73 63 72 65 change the scre
000190: 65 6E 2A 29 0D 0A 0D 0A 46 52 4F 4D 20 4D 61 6B en*)....FROM Mak
0001A0: 65 45 64 69 74 73 20 49 4D 50 4F 52 54 20 49 6E eEdits IMPORT In
0001B0: 73 43 68 61 72 73 2C 44 65 6C 43 68 61 72 73 2C sChars,DelChars,
0001C0: 52 65 74 72 6C 69 6E 65 2C 42 61 63 6B 4F 6E 65 Retrline,BackOne
0001D0: 43 68 61 72 2C 46 6F 72 77 61 72 64 4F 6E 65 43 Char,ForwardOneC
0001E0: 68 61 72 2C 0D 0A 09 09 47 65 74 43 75 72 72 65 har,....GetCurre
0001F0: 6E 74 43 68 61 72 2C 47 65 74 50 6F 73 69 74 69 ntChar,GetPositi
Size : 512 (Real : 512)
000000: 67 69 6E 3C 43 41 52 44 49 4E 41 4C 28 2D 49 6E gin<CARDINAL(-In
000010: 63 29 29 20 54 48 45 4E 20 0D 0A 09 09 49 6E 63 c)) THEN ....Inc
000020: 3A 3D 2D 49 4E 54 45 47 45 52 28 43 75 72 72 65 :=-INTEGER(Curre
000030: 6E 74 4C 65 66 74 4D 61 72 67 69 6E 29 20 0D 0A ntLeftMargin) ..
000040: 09 09 45 4E 44 3B 0D 0A 09 49 46 20 28 49 6E 63 ..END;...IF (Inc
000050: 3E 30 29 20 41 4E 44 20 28 54 68 69 73 78 3C 43 >0) AND (Thisx<C
000060: 41 52 44 49 4E 41 4C 28 49 6E 63 29 29 20 54 48 ARDINAL(Inc)) TH
000070: 45 4E 20 49 6E 63 3A 3D 54 68 69 73 78 20 45 4E EN Inc:=Thisx EN
000080: 44 3B 0D 0A 09 43 75 72 72 65 6E 74 4C 65 66 74 D;...CurrentLeft
000090: 4D 61 72 67 69 6E 3A 3D 49 4E 54 45 47 45 52 28 Margin:=INTEGER(
0000A0: 43 75 72 72 65 6E 74 4C 65 66 74 4D 61 72 67 69 CurrentLeftMargi
0000B0: 6E 29 2B 49 6E 63 3B 0D 0A 09 54 68 69 73 78 3A n)+Inc;...Thisx:
0000C0: 3D 49 4E 54 45 47 45 52 28 54 68 69 73 78 29 2D =INTEGER(Thisx)-
0000D0: 49 6E 63 3B 0D 0A 09 63 75 72 78 5B 43 75 72 72 Inc;...curx[Curr
0000E0: 65 6E 74 57 69 6E 64 6F 77 5D 3A 3D 54 68 69 73 entWindow]:=This
0000F0: 78 3B 0D 0A 09 4C 65 66 74 4D 61 72 67 69 6E 5B x;...LeftMargin[
000100: 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 5D 3A 3D CurrentWindow]:=
000110: 43 75 72 72 65 6E 74 4C 65 66 74 4D 61 72 67 69 CurrentLeftMargi
000120: 6E 3B 0D 0A 09 52 65 44 69 73 70 6C 61 79 57 69 n;...ReDisplayWi
000130: 6E 64 6F 77 3B 0D 0A 09 52 65 73 65 74 50 6F 73 ndow;...ResetPos
000140: 3B 0D 0A 09 45 4E 44 20 43 68 61 6E 67 65 4D 61 ;...END ChangeMa
000150: 72 67 69 6E 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 rgin;....PROCEDU
000160: 52 45 20 43 68 61 6E 67 65 50 6F 73 3B 0D 0A 56 RE ChangePos;..V
000170: 41 52 09 69 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A AR.i:CARDINAL;..
000180: 42 45 47 49 4E 0D 0A 09 49 46 20 4C 69 6E 65 4C BEGIN...IF LineL
000190: 65 6E 3C 4C 69 6E 65 50 6F 73 20 54 48 45 4E 20 en<LinePos THEN
0001A0: 0D 0A 09 09 4C 69 6E 65 50 6F 73 3A 3D 4C 69 6E ....LinePos:=Lin
0001B0: 65 4C 65 6E 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 eLen;....END;...
0001C0: 54 68 69 73 78 3A 3D 30 3B 0D 0A 09 69 3A 3D 30 Thisx:=0;...i:=0
0001D0: 3B 09 0D 0A 09 4C 4F 4F 50 0D 0A 09 09 49 4E 43 ;....LOOP....INC
0001E0: 28 69 29 3B 0D 0A 09 09 63 68 3A 3D 47 65 74 43 (i);....ch:=GetC
0001F0: 75 72 72 65 6E 74 43 68 61 72 28 43 75 72 46 69 urrentChar(CurFi
Size : 512 (Real : 512)
000000: 6F 6E 2C 53 65 74 50 6F 73 69 74 69 6F 6E 2C 52 on,SetPosition,R
000010: 65 61 64 4E 65 78 74 43 68 61 72 2C 46 69 6E 64 eadNextChar,Find
000020: 53 74 72 69 6E 67 2C 0D 0A 09 09 4C 61 62 65 6C String,....Label
000030: 4F 70 3B 0D 0A 46 52 4F 4D 20 45 64 69 74 44 69 Op;..FROM EditDi
000040: 73 70 6C 61 79 20 49 4D 50 4F 52 54 20 44 69 73 splay IMPORT Dis
000050: 70 6C 61 79 46 69 6C 65 2C 45 72 72 6F 72 4D 65 playFile,ErrorMe
000060: 73 73 61 67 65 2C 57 69 6E 64 6F 77 73 2C 4C 69 ssage,Windows,Li
000070: 6E 65 73 50 65 72 57 69 6E 64 6F 77 3B 0D 0A 46 nesPerWindow;..F
000080: 52 4F 4D 20 53 63 72 65 65 6E 49 4F 20 49 4D 50 ROM ScreenIO IMP
000090: 4F 52 54 20 45 64 69 74 73 2C 44 65 6C 43 68 61 ORT Edits,DelCha
0000A0: 72 2C 44 65 6C 4C 69 6E 65 2C 49 6E 73 43 68 61 r,DelLine,InsCha
0000B0: 72 2C 49 6E 73 4C 69 6E 65 2C 44 65 6C 45 6F 6C r,InsLine,DelEol
0000C0: 2C 4D 6F 76 65 55 70 2C 0D 0A 09 09 09 4D 6F 76 ,MoveUp,.....Mov
0000D0: 65 44 6F 77 6E 2C 4D 6F 76 65 4C 65 66 74 2C 4D eDown,MoveLeft,M
0000E0: 6F 76 65 52 69 67 68 74 2C 47 6F 74 6F 78 79 2C oveRight,Gotoxy,
0000F0: 43 6C 65 61 72 53 63 72 65 65 6E 2C 0D 0A 09 09 ClearScreen,....
000100: 09 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 2C 0D .ScreenControl,.
000110: 0A 09 09 09 53 63 72 65 65 6E 57 69 64 74 68 2C ....ScreenWidth,
000120: 53 63 72 65 65 6E 44 65 70 74 68 2C 4D 61 64 65 ScreenDepth,Made
000130: 43 68 61 6E 67 65 3B 0D 0A 46 52 4F 4D 20 49 6E Change;..FROM In
000140: 74 4C 6F 67 69 63 20 49 4D 50 4F 52 54 20 49 41 tLogic IMPORT IA
000150: 4E 44 3B 09 0D 0A 46 52 4F 4D 09 53 59 53 54 45 ND;...FROM.SYSTE
000160: 4D 20 49 4D 50 4F 52 54 20 41 44 52 3B 0D 0A 43 M IMPORT ADR;..C
000170: 4F 4E 53 54 09 43 52 3D 30 64 78 3B 0D 0A 09 54 ONST.CR=0dx;...T
000180: 41 42 3D 30 39 78 3B 0D 0A 09 4C 46 3D 30 61 78 AB=09x;...LF=0ax
000190: 3B 0D 0A 09 45 4F 46 3D 31 61 78 3B 0D 0A 28 2A ;...EOF=1ax;..(*
0001A0: 09 41 20 72 65 6D 61 72 6B 20 6F 6E 20 74 68 65 .A remark on the
0001B0: 20 75 73 65 20 6F 66 20 4C 69 6E 65 50 6F 73 20 use of LinePos
0001C0: 61 6E 64 20 63 75 72 78 0D 0A 0D 0A 09 4C 69 6E and curx.....Lin
0001D0: 65 50 6F 73 20 61 6C 77 61 79 73 20 70 6F 69 6E ePos always poin
0001E0: 74 73 20 74 6F 20 74 68 65 20 6E 75 6D 62 65 72 ts to the number
0001F0: 20 6F 66 20 74 68 65 20 63 68 61 72 61 63 74 65 of the characte
Size : 512 (Real : 512)
000000: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 41 6C 70 ;..PROCEDURE Alp
000010: 68 61 4E 75 6D 28 63 68 3A 43 48 41 52 29 3A 42 haNum(ch:CHAR):B
000020: 4F 4F 4C 45 41 4E 3B 0D 0A 42 45 47 49 4E 0D 0A OOLEAN;..BEGIN..
000030: 09 63 68 3A 3D 43 41 50 28 63 68 29 3B 0D 0A 09 .ch:=CAP(ch);...
000040: 52 45 54 55 52 4E 20 28 28 63 68 3E 3D 27 41 27 RETURN ((ch>='A'
000050: 29 20 41 4E 44 20 28 63 68 3C 3D 27 5A 27 29 29 ) AND (ch<='Z'))
000060: 20 4F 52 20 28 28 63 68 3E 3D 27 30 27 29 20 41 OR ((ch>='0') A
000070: 4E 44 20 28 63 68 3C 3D 27 39 27 29 29 3B 0D 0A ND (ch<='9'));..
000080: 09 45 4E 44 20 41 6C 70 68 61 4E 75 6D 3B 0D 0A .END AlphaNum;..
000090: 0D 0A 50 52 4F 43 45 44 55 52 45 20 46 69 6E 64 ..PROCEDURE Find
0000A0: 57 6F 72 64 28 42 61 63 6B 77 61 72 64 3A 42 4F Word(Backward:BO
0000B0: 4F 4C 45 41 4E 3B 44 65 6C 65 74 65 3A 42 4F 4F OLEAN;Delete:BOO
0000C0: 4C 45 41 4E 29 3B 0D 0A 0D 0A 28 2A 09 46 69 6E LEAN);....(*.Fin
0000D0: 64 20 61 20 77 6F 72 64 20 61 6E 64 20 6F 70 74 d a word and opt
0000E0: 69 6F 6E 61 6C 6C 79 20 64 65 6C 65 74 65 20 69 ionally delete i
0000F0: 74 0D 0A 0D 0A 09 41 20 77 6F 72 64 20 69 73 20 t.....A word is
000100: 61 20 73 74 72 69 6E 67 20 61 6C 70 68 61 6E 75 a string alphanu
000110: 6D 65 72 69 63 73 20 6F 72 20 61 20 73 74 72 69 merics or a stri
000120: 6E 67 20 6F 66 20 6D 61 72 6B 73 2C 20 74 61 62 ng of marks, tab
000130: 73 20 20 6F 72 20 73 70 6F 61 63 65 73 0D 0A 0D s or spoaces...
000140: 0A 09 54 68 65 20 63 75 72 73 6F 72 20 69 73 20 ..The cursor is
000150: 72 65 70 6F 73 69 74 69 6F 6E 65 64 2A 29 0D 0A repositioned*)..
000160: 56 41 52 09 63 68 3A 43 48 41 52 3B 0D 0A 09 62 VAR.ch:CHAR;...b
000170: 31 3A 42 4F 4F 4C 45 41 4E 3B 0D 0A 42 45 47 49 1:BOOLEAN;..BEGI
000180: 4E 0D 0A 09 46 69 6C 65 4C 69 6D 69 74 3A 3D 46 N...FileLimit:=F
000190: 41 4C 53 45 3B 0D 0A 09 49 46 20 42 61 63 6B 77 ALSE;...IF Backw
0001A0: 61 72 64 20 54 48 45 4E 20 0D 0A 09 09 4C 65 66 ard THEN ....Lef
0001B0: 74 3B 0D 0A 09 09 49 46 20 4E 4F 54 20 4D 6F 76 t;....IF NOT Mov
0001C0: 65 64 4F 4B 20 54 48 45 4E 20 52 45 54 55 52 4E edOK THEN RETURN
0001D0: 20 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 END;....END;...
0001E0: 63 68 3A 3D 47 65 74 43 75 72 72 65 6E 74 43 68 ch:=GetCurrentCh
0001F0: 61 72 28 43 75 72 46 69 6C 65 50 74 72 5E 29 3B ar(CurFilePtr^);
Size : 512 (Real : 512)
000000: 20 0D 0A 09 09 43 68 61 6E 67 65 4D 61 72 67 69 ....ChangeMargi
000010: 6E 28 2D 49 4E 54 45 47 45 52 28 43 75 72 72 65 n(-INTEGER(Curre
000020: 6E 74 4C 65 66 74 4D 61 72 67 69 6E 29 29 0D 0A ntLeftMargin))..
000030: 09 09 45 4E 44 3B 0D 0A 09 54 68 69 73 78 3A 3D ..END;...Thisx:=
000040: 30 3B 0D 0A 09 52 65 73 65 74 50 6F 73 3B 0D 0A 0;...ResetPos;..
000050: 09 4C 69 6E 65 50 6F 73 3A 3D 30 3B 0D 0A 09 53 .LinePos:=0;...S
000060: 65 74 4C 69 6E 65 50 6F 73 28 30 29 3B 0D 0A 09 etLinePos(0);...
000070: 45 4E 44 20 44 65 6C 46 75 6C 6C 4C 69 6E 65 3B END DelFullLine;
000080: 0D 0A 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 ......PROCEDURE
000090: 53 63 72 6F 6C 6C 54 65 78 74 28 42 79 3A 49 4E ScrollText(By:IN
0000A0: 54 45 47 45 52 29 3B 0D 0A 0D 0A 28 2A 09 53 63 TEGER);....(*.Sc
0000B0: 72 6F 6C 6C 20 75 70 20 6F 6E 65 20 6C 69 6E 65 roll up one line
0000C0: 20 69 6E 20 74 68 65 20 66 69 6C 65 0D 0A 09 28 in the file...(
0000D0: 77 68 69 63 68 20 6D 65 61 6E 73 20 74 68 65 20 which means the
0000E0: 74 65 78 74 20 73 63 72 6F 6C 6C 73 20 64 6F 77 text scrolls dow
0000F0: 6E 20 2D 20 62 61 63 6B 77 61 72 64 73 20 74 6F n - backwards to
000100: 0D 0A 09 77 68 61 74 20 79 6F 75 20 6D 69 67 68 ...what you migh
000110: 74 20 74 68 69 6E 6B 20 61 74 20 66 69 72 73 74 t think at first
000120: 29 2A 29 0D 0A 0D 0A 42 45 47 49 4E 0D 0A 09 53 )*)....BEGIN...S
000130: 63 72 6F 6C 6C 57 69 6E 64 6F 77 28 53 74 61 72 crollWindow(Star
000140: 74 6F 66 57 69 6E 64 6F 77 2C 45 6E 64 6F 66 57 tofWindow,EndofW
000150: 69 6E 64 6F 77 2C 42 79 29 3B 0D 0A 09 45 4E 44 indow,By);...END
000160: 20 53 63 72 6F 6C 6C 54 65 78 74 3B 0D 0A 50 52 ScrollText;..PR
000170: 4F 43 45 44 55 52 45 20 53 63 72 6F 6C 6C 55 70 OCEDURE ScrollUp
000180: 3B 0D 0A 42 45 47 49 4E 0D 0A 09 0D 0A 09 53 63 ;..BEGIN......Sc
000190: 72 6F 6C 6C 54 65 78 74 28 2D 31 29 3B 0D 0A 09 rollText(-1);...
0001A0: 49 46 20 4D 6F 76 65 64 4F 4B 20 54 48 45 4E 0D IF MovedOK THEN.
0001B0: 0A 09 09 49 46 20 54 68 69 73 79 3C 45 6E 64 6F ...IF Thisy<Endo
0001C0: 66 57 69 6E 64 6F 77 20 54 48 45 4E 20 0D 0A 09 fWindow THEN ...
0001D0: 09 09 49 4E 43 28 54 68 69 73 79 29 3B 0D 0A 09 ..INC(Thisy);...
0001E0: 09 09 52 65 73 65 74 50 6F 73 3B 0D 0A 09 09 45 ..ResetPos;....E
0001F0: 4C 53 45 20 09 0D 0A 09 09 09 4C 69 6E 65 4D 6F LSE ......LineMo
Size : 512 (Real : 512)
000000: 0A 09 52 65 44 72 61 77 6E 3A 3D 46 41 4C 53 45 ..ReDrawn:=FALSE
000010: 3B 0D 0A 09 69 3A 3D 4C 69 6E 65 50 6F 73 3B 0D ;...i:=LinePos;.
000020: 0A 09 53 65 74 4C 69 6E 65 50 6F 73 28 62 79 29 ..SetLinePos(by)
000030: 3B 0D 0A 09 4C 69 6E 65 50 6F 73 3A 3D 69 3B 0D ;...LinePos:=i;.
000040: 0A 09 43 68 61 6E 67 65 50 6F 73 3B 0D 0A 28 2A ..ChangePos;..(*
000050: 09 49 46 20 41 42 53 28 62 79 29 3E 31 20 54 48 .IF ABS(by)>1 TH
000060: 45 4E 0D 0A 09 09 52 65 44 69 73 70 6C 61 79 57 EN....ReDisplayW
000070: 69 6E 64 6F 77 3B 0D 0A 09 09 45 4E 44 3B 2A 29 indow;....END;*)
000080: 0D 0A 09 45 4E 44 20 4C 69 6E 65 4D 6F 76 65 3B ...END LineMove;
000090: 0D 0A 56 41 52 09 70 77 3A 50 6F 73 69 74 69 6F ..VAR.pw:Positio
0000A0: 6E 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 57 72 n;..PROCEDURE Wr
0000B0: 69 74 65 50 61 72 74 4C 69 6E 65 28 63 3A 43 41 itePartLine(c:CA
0000C0: 52 44 49 4E 41 4C 29 3B 0D 0A 56 41 52 09 53 61 RDINAL);..VAR.Sa
0000D0: 76 65 78 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 42 vex:CARDINAL;..B
0000E0: 45 47 49 4E 0D 0A 09 47 65 74 50 6F 73 69 74 69 EGIN...GetPositi
0000F0: 6F 6E 28 43 75 72 46 69 6C 65 50 74 72 5E 2C 70 on(CurFilePtr^,p
000100: 77 29 3B 0D 0A 09 4C 4F 4F 50 0D 0A 09 09 52 65 w);...LOOP....Re
000110: 61 64 4E 65 78 74 43 68 61 72 28 70 77 2C 63 68 adNextChar(pw,ch
000120: 29 3B 0D 0A 09 09 49 46 20 28 63 68 3D 30 64 78 );....IF (ch=0dx
000130: 29 20 4F 52 20 28 63 68 3D 31 61 78 29 20 4F 52 ) OR (ch=1ax) OR
000140: 20 28 63 68 3D 30 61 78 29 20 54 48 45 4E 20 45 (ch=0ax) THEN E
000150: 58 49 54 20 45 4E 44 3B 0D 0A 09 09 49 46 20 63 XIT END;....IF c
000160: 3E 3D 28 53 63 72 65 65 6E 57 69 64 74 68 2B 43 >=(ScreenWidth+C
000170: 75 72 72 65 6E 74 4C 65 66 74 4D 61 72 67 69 6E urrentLeftMargin
000180: 29 20 54 48 45 4E 20 45 58 49 54 20 45 4E 44 3B ) THEN EXIT END;
000190: 0D 0A 09 09 49 46 20 63 68 3D 54 41 42 20 54 48 ....IF ch=TAB TH
0001A0: 45 4E 20 0D 0A 09 09 09 52 45 50 45 41 54 0D 0A EN .....REPEAT..
0001B0: 09 09 09 09 49 46 20 63 3E 43 75 72 72 65 6E 74 ....IF c>Current
0001C0: 4C 65 66 74 4D 61 72 67 69 6E 20 54 48 45 4E 20 LeftMargin THEN
0001D0: 57 72 69 74 65 28 27 20 27 29 20 45 4E 44 3B 20 Write(' ') END;
0001E0: 0D 0A 09 09 09 09 49 4E 43 28 63 29 3B 0D 0A 09 ......INC(c);...
0001F0: 09 09 09 55 4E 54 49 4C 20 49 41 4E 44 28 63 2C ...UNTIL IAND(c,
Size : 512 (Real : 512)
000000: 76 65 28 2D 31 29 3B 0D 0A 09 09 09 52 65 73 65 ve(-1);.....Rese
000010: 74 50 6F 73 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A tPos;.....END;..
000020: 09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 53 63 72 ..END;...END Scr
000030: 6F 6C 6C 55 70 3B 0D 0A 50 52 4F 43 45 44 55 52 ollUp;..PROCEDUR
000040: 45 20 53 63 72 6F 6C 6C 44 6F 77 6E 3B 0D 0A 42 E ScrollDown;..B
000050: 45 47 49 4E 0D 0A 09 53 63 72 6F 6C 6C 54 65 78 EGIN...ScrollTex
000060: 74 28 31 29 3B 0D 0A 09 49 46 20 4D 6F 76 65 64 t(1);...IF Moved
000070: 4F 4B 20 54 48 45 4E 0D 0A 09 09 49 46 20 54 68 OK THEN....IF Th
000080: 69 73 79 3E 53 74 61 72 74 6F 66 57 69 6E 64 6F isy>StartofWindo
000090: 77 20 54 48 45 4E 20 0D 0A 09 09 09 44 45 43 28 w THEN .....DEC(
0000A0: 54 68 69 73 79 29 3B 0D 0A 09 09 45 4C 53 45 0D Thisy);....ELSE.
0000B0: 0A 09 09 09 4C 69 6E 65 4D 6F 76 65 28 31 29 3B ....LineMove(1);
0000C0: 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 .....END;....END
0000D0: 3B 0D 0A 09 52 65 73 65 74 50 6F 73 3B 0D 0A 09 ;...ResetPos;...
0000E0: 45 4E 44 20 53 63 72 6F 6C 6C 44 6F 77 6E 3B 0D END ScrollDown;.
0000F0: 0A 50 52 4F 43 45 44 55 52 45 20 4C 65 66 74 3B .PROCEDURE Left;
000100: 0D 0A 56 41 52 09 63 68 3A 43 48 41 52 3B 0D 0A ..VAR.ch:CHAR;..
000110: 09 53 61 76 65 4C 69 6E 65 4C 65 6E 3A 43 41 52 .SaveLineLen:CAR
000120: 44 49 4E 41 4C 3B 0D 0A 09 70 3A 50 6F 73 69 74 DINAL;...p:Posit
000130: 69 6F 6E 3B 0D 0A 42 45 47 49 4E 0D 0A 09 4D 6F ion;..BEGIN...Mo
000140: 76 65 64 4F 4B 3A 3D 54 52 55 45 3B 0D 0A 09 52 vedOK:=TRUE;...R
000150: 65 44 72 61 77 6E 3A 3D 46 41 4C 53 45 3B 0D 0A eDrawn:=FALSE;..
000160: 09 53 61 76 65 4C 69 6E 65 4C 65 6E 3A 3D 4C 69 .SaveLineLen:=Li
000170: 6E 65 4C 65 6E 3B 0D 0A 09 47 65 74 50 6F 73 69 neLen;...GetPosi
000180: 74 69 6F 6E 28 43 75 72 46 69 6C 65 50 74 72 5E tion(CurFilePtr^
000190: 2C 70 29 3B 0D 0A 09 49 46 20 4C 69 6E 65 50 6F ,p);...IF LinePo
0001A0: 73 3E 30 20 54 48 45 4E 0D 0A 09 09 62 3A 3D 42 s>0 THEN....b:=B
0001B0: 61 63 6B 4F 6E 65 43 68 61 72 28 43 75 72 46 69 ackOneChar(CurFi
0001C0: 6C 65 50 74 72 5E 29 3B 0D 0A 09 09 63 68 3A 3D lePtr^);....ch:=
0001D0: 47 65 74 43 75 72 72 65 6E 74 43 68 61 72 28 43 GetCurrentChar(C
0001E0: 75 72 46 69 6C 65 50 74 72 5E 29 3B 0D 0A 09 09 urFilePtr^);....
0001F0: 49 46 20 28 43 75 72 72 65 6E 74 4C 65 66 74 4D IF (CurrentLeftM
Size : 512 (Real : 512)
000000: 37 29 3D 31 3B 0D 0A 09 09 45 4C 53 45 0D 0A 09 7)=1;....ELSE...
000010: 09 09 49 46 20 63 3E 43 75 72 72 65 6E 74 4C 65 ..IF c>CurrentLe
000020: 66 74 4D 61 72 67 69 6E 20 54 48 45 4E 20 57 72 ftMargin THEN Wr
000030: 69 74 65 28 63 68 29 20 45 4E 44 3B 0D 0A 09 09 ite(ch) END;....
000040: 09 49 4E 43 28 63 29 3B 0D 0A 09 09 09 45 4E 44 .INC(c);.....END
000050: 3B 0D 0A 09 09 45 4E 44 28 2A 4C 4F 4F 50 2A 29 ;....END(*LOOP*)
000060: 3B 0D 0A 09 53 61 76 65 78 3A 3D 54 68 69 73 78 ;...Savex:=Thisx
000070: 3B 0D 0A 09 49 46 20 63 3C 43 75 72 72 65 6E 74 ;...IF c<Current
000080: 4C 65 66 74 4D 61 72 67 69 6E 20 54 48 45 4E 20 LeftMargin THEN
000090: 54 68 69 73 78 3A 3D 30 3B 0D 0A 09 45 4C 53 45 Thisx:=0;...ELSE
0000A0: 20 54 68 69 73 78 3A 3D 63 2D 43 75 72 72 65 6E Thisx:=c-Curren
0000B0: 74 4C 65 66 74 4D 61 72 67 69 6E 20 45 4E 44 3B tLeftMargin END;
0000C0: 0D 0A 09 43 6C 65 61 72 52 65 73 74 4F 66 4C 69 ...ClearRestOfLi
0000D0: 6E 65 3B 0D 0A 09 54 68 69 73 78 3A 3D 53 61 76 ne;...Thisx:=Sav
0000E0: 65 78 3B 0D 0A 09 45 4E 44 20 57 72 69 74 65 50 ex;...END WriteP
0000F0: 61 72 74 4C 69 6E 65 3B 0D 0A 50 52 4F 43 45 44 artLine;..PROCED
000100: 55 52 45 20 57 72 69 74 65 4C 69 6E 65 3B 0D 0A URE WriteLine;..
000110: 42 45 47 49 4E 0D 0A 09 57 72 69 74 65 50 61 72 BEGIN...WritePar
000120: 74 4C 69 6E 65 28 31 29 3B 0D 0A 09 45 4E 44 20 tLine(1);...END
000130: 57 72 69 74 65 4C 69 6E 65 3B 0D 0A 50 52 4F 43 WriteLine;..PROC
000140: 45 44 55 52 45 20 53 63 72 6F 6C 6C 57 69 6E 64 EDURE ScrollWind
000150: 6F 77 28 53 74 61 72 74 2C 45 6E 64 3A 43 41 52 ow(Start,End:CAR
000160: 44 49 4E 41 4C 3B 42 79 3A 49 4E 54 45 47 45 52 DINAL;By:INTEGER
000170: 29 3B 0D 0A 28 2A 09 53 63 72 6F 6C 6C 20 74 68 );..(*.Scroll th
000180: 65 20 77 69 6E 64 6F 77 20 62 79 20 72 65 64 69 e window by redi
000190: 73 70 6C 61 79 69 6E 67 20 61 6C 6C 20 6F 72 20 splaying all or
0001A0: 70 61 72 74 20 6F 66 20 69 74 0D 0A 0D 0A 09 53 part of it.....S
0001B0: 74 61 72 74 20 61 6E 64 20 45 6E 64 20 67 69 76 tart and End giv
0001C0: 65 20 61 63 74 75 61 6C 20 73 63 72 65 65 6E 20 e actual screen
0001D0: 70 6F 69 73 74 69 6F 6E 73 20 28 69 6E 20 79 29 poistions (in y)
0001E0: 20 66 6F 72 0D 0A 09 74 68 65 20 74 6F 70 20 61 for...the top a
0001F0: 6E 64 20 62 6F 74 74 6F 6D 20 6F 66 20 74 68 65 nd bottom of the
Size : 512 (Real : 512)
000000: 61 72 67 69 6E 3E 30 29 20 41 4E 44 20 28 54 68 argin>0) AND (Th
000010: 69 73 78 3D 30 29 20 54 48 45 4E 0D 0A 09 09 09 isx=0) THEN.....
000020: 43 68 61 6E 67 65 4D 61 72 67 69 6E 28 2D 33 32 ChangeMargin(-32
000030: 29 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 44 );.....END;....D
000040: 45 43 28 4C 69 6E 65 50 6F 73 29 3B 0D 0A 09 09 EC(LinePos);....
000050: 49 46 20 4E 4F 54 20 52 65 44 72 61 77 6E 20 54 IF NOT ReDrawn T
000060: 48 45 4E 0D 0A 09 09 09 49 46 20 63 68 3C 3E 54 HEN.....IF ch<>T
000070: 41 42 20 54 48 45 4E 0D 0A 09 09 09 09 44 45 43 AB THEN......DEC
000080: 28 54 68 69 73 78 29 3B 0D 0A 09 09 09 09 52 65 (Thisx);......Re
000090: 73 65 74 50 6F 73 3B 0D 0A 09 09 09 45 4C 53 45 setPos;.....ELSE
0000A0: 0D 0A 09 09 09 09 4C 69 6E 65 4D 6F 76 65 28 30 ......LineMove(0
0000B0: 29 3B 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 );......END;....
0000C0: 09 45 4E 44 3B 0D 0A 0D 0A 09 45 4C 53 45 0D 0A .END;.....ELSE..
0000D0: 09 09 54 68 69 73 78 3A 3D 31 30 32 33 3B 0D 0A ..Thisx:=1023;..
0000E0: 09 09 4C 69 6E 65 50 6F 73 3A 3D 31 30 32 33 3B ..LinePos:=1023;
0000F0: 0D 0A 09 09 55 70 3B 0D 0A 09 09 49 46 20 4E 4F ....Up;....IF NO
000100: 54 20 4D 6F 76 65 64 4F 4B 20 54 48 45 4E 0D 0A T MovedOK THEN..
000110: 09 09 09 4C 69 6E 65 50 6F 73 3A 3D 30 3B 0D 0A ...LinePos:=0;..
000120: 09 09 09 4C 69 6E 65 4C 65 6E 3A 3D 53 61 76 65 ...LineLen:=Save
000130: 4C 69 6E 65 4C 65 6E 3B 0D 0A 09 09 09 53 65 74 LineLen;.....Set
000140: 50 6F 73 69 74 69 6F 6E 28 43 75 72 46 69 6C 65 Position(CurFile
000150: 50 74 72 5E 2C 70 29 3B 0D 0A 09 09 09 54 68 69 Ptr^,p);.....Thi
000160: 73 78 3A 3D 30 3B 0D 0A 09 09 09 52 65 73 65 74 sx:=0;.....Reset
000170: 50 6F 73 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 Pos;.....END;...
000180: 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 4C 65 66 74 .END;...END Left
000190: 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 52 45 20 52 ;....PROCEDURE R
0001A0: 69 67 68 74 3B 0D 0A 56 41 52 09 63 68 3A 43 48 ight;..VAR.ch:CH
0001B0: 41 52 3B 0D 0A 09 69 3A 43 41 52 44 49 4E 41 4C AR;...i:CARDINAL
0001C0: 3B 0D 0A 42 45 47 49 4E 0D 0A 09 63 68 3A 3D 47 ;..BEGIN...ch:=G
0001D0: 65 74 43 75 72 72 65 6E 74 43 68 61 72 28 43 75 etCurrentChar(Cu
0001E0: 72 46 69 6C 65 50 74 72 5E 29 3B 0D 0A 09 49 46 rFilePtr^);...IF
0001F0: 20 63 68 3D 31 61 78 20 28 2A 6F 6E 20 45 4F 46 ch=1ax (*on EOF
Size : 512 (Real : 512)
000000: 20 73 63 72 6F 6C 6C 2A 29 0D 0A 56 41 52 09 0D scroll*)..VAR..
000010: 0A 09 70 3A 50 6F 73 69 74 69 6F 6E 3B 0D 0A 09 ..p:Position;...
000020: 69 3A 49 4E 54 45 47 45 52 3B 0D 0A 42 45 47 49 i:INTEGER;..BEGI
000030: 4E 0D 0A 09 47 65 74 50 6F 73 69 74 69 6F 6E 28 N...GetPosition(
000040: 43 75 72 46 69 6C 65 50 74 72 5E 2C 70 29 3B 0D CurFilePtr^,p);.
000050: 0A 09 69 3A 3D 49 4E 54 45 47 45 52 28 53 74 61 ..i:=INTEGER(Sta
000060: 72 74 29 2D 49 4E 54 45 47 45 52 28 54 68 69 73 rt)-INTEGER(This
000070: 79 29 2B 42 79 3B 0D 0A 09 53 65 74 4C 69 6E 65 y)+By;...SetLine
000080: 50 6F 73 28 69 29 3B 0D 0A 09 4D 6F 76 65 64 4F Pos(i);...MovedO
000090: 4B 3A 3D 46 41 4C 53 45 3B 0D 0A 09 49 46 20 6C K:=FALSE;...IF l
0000A0: 69 6E 65 73 6D 6F 76 65 64 3C 3E 69 20 54 48 45 inesmoved<>i THE
0000B0: 4E 20 52 45 54 55 52 4E 20 45 4E 44 3B 0D 0A 09 N RETURN END;...
0000C0: 4D 6F 76 65 64 4F 4B 3A 3D 54 52 55 45 3B 0D 0A MovedOK:=TRUE;..
0000D0: 09 69 3A 3D 53 74 61 72 74 3B 0D 0A 09 4C 4F 4F .i:=Start;...LOO
0000E0: 50 0D 0A 09 09 49 46 20 43 41 52 44 49 4E 41 4C P....IF CARDINAL
0000F0: 28 69 29 3E 45 6E 64 20 54 48 45 4E 20 45 58 49 (i)>End THEN EXI
000100: 54 20 45 4E 44 3B 0D 0A 09 09 47 6F 74 6F 78 79 T END;....Gotoxy
000110: 28 30 2C 69 29 3B 0D 0A 09 09 57 72 69 74 65 4C (0,i);....WriteL
000120: 69 6E 65 3B 0D 0A 09 09 53 65 74 4C 69 6E 65 50 ine;....SetLineP
000130: 6F 73 28 31 29 0D 0A 09 09 49 46 20 6C 69 6E 65 os(1)....IF line
000140: 73 6D 6F 76 65 64 3C 3E 31 20 54 48 45 4E 20 45 smoved<>1 THEN E
000150: 58 49 54 20 45 4E 44 3B 09 0D 0A 09 09 49 4E 43 XIT END;.....INC
000160: 28 69 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 53 (i);....END;...S
000170: 65 74 50 6F 73 69 74 69 6F 6E 28 43 75 72 46 69 etPosition(CurFi
000180: 6C 65 50 74 72 5E 2C 70 29 3B 0D 0A 09 53 65 74 lePtr^,p);...Set
000190: 4C 69 6E 65 50 6F 73 28 30 29 3B 0D 0A 09 43 68 LinePos(0);...Ch
0001A0: 61 6E 67 65 50 6F 73 3B 0D 0A 09 45 4E 44 20 53 angePos;...END S
0001B0: 63 72 6F 6C 6C 57 69 6E 64 6F 77 3B 0D 0A 50 52 crollWindow;..PR
0001C0: 4F 43 45 44 55 52 45 20 52 65 6D 6F 76 65 4C 69 OCEDURE RemoveLi
0001D0: 6E 65 3B 0D 0A 0D 0A 28 2A 09 52 65 6D 6F 76 65 ne;....(*.Remove
0001E0: 20 61 20 6C 69 6E 65 20 66 72 6F 6D 20 74 68 65 a line from the
0001F0: 20 73 63 72 65 65 6E 20 61 6E 64 20 62 72 69 6E screen and brin
Size : 512 (Real : 512)
000000: 20 63 68 61 72 2A 29 20 54 48 45 4E 20 52 45 54 char*) THEN RET
000010: 55 52 4E 20 45 4E 44 3B 0D 0A 09 62 3A 3D 46 6F URN END;...b:=Fo
000020: 72 77 61 72 64 4F 6E 65 43 68 61 72 28 43 75 72 rwardOneChar(Cur
000030: 46 69 6C 65 50 74 72 5E 29 3B 0D 0A 09 49 46 20 FilePtr^);...IF
000040: 4C 69 6E 65 50 6F 73 3E 3D 4C 69 6E 65 4C 65 6E LinePos>=LineLen
000050: 20 54 48 45 4E 0D 0A 09 09 54 68 69 73 78 3A 3D THEN....Thisx:=
000060: 30 3B 0D 0A 09 09 4C 69 6E 65 50 6F 73 3A 3D 30 0;....LinePos:=0
000070: 3B 0D 0A 09 09 62 3A 3D 42 61 63 6B 4F 6E 65 43 ;....b:=BackOneC
000080: 68 61 72 28 43 75 72 46 69 6C 65 50 74 72 5E 29 har(CurFilePtr^)
000090: 3B 0D 0A 09 09 44 6F 77 6E 3B 0D 0A 0D 0A 09 45 ;....Down;.....E
0000A0: 4C 53 45 0D 0A 0D 0A 09 09 49 46 20 63 68 3D 54 LSE......IF ch=T
0000B0: 41 42 20 54 48 45 4E 20 69 3A 3D 39 20 45 4C 53 AB THEN i:=9 ELS
0000C0: 45 20 69 3A 3D 31 20 45 4E 44 3B 0D 0A 09 09 49 E i:=1 END;....I
0000D0: 46 20 28 54 68 69 73 78 2B 69 29 3E 3D 28 53 63 F (Thisx+i)>=(Sc
0000E0: 72 65 65 6E 57 69 64 74 68 2D 31 29 20 54 48 45 reenWidth-1) THE
0000F0: 4E 0D 0A 09 09 09 43 68 61 6E 67 65 4D 61 72 67 N.....ChangeMarg
000100: 69 6E 28 33 32 29 3B 0D 0A 09 09 09 45 4E 44 3B in(32);.....END;
000110: 0D 0A 09 09 49 4E 43 28 4C 69 6E 65 50 6F 73 29 ....INC(LinePos)
000120: 3B 0D 0A 09 09 49 46 20 63 68 3C 3E 54 41 42 20 ;....IF ch<>TAB
000130: 54 48 45 4E 0D 0A 09 09 09 49 4E 43 28 54 68 69 THEN.....INC(Thi
000140: 73 78 29 3B 0D 0A 09 09 09 52 65 73 65 74 50 6F sx);.....ResetPo
000150: 73 3B 0D 0A 09 09 45 4C 53 45 0D 0A 0D 0A 09 09 s;....ELSE......
000160: 09 28 2A 69 66 20 6D 6F 76 65 73 20 6F 76 65 72 .(*if moves over
000170: 20 74 61 62 73 20 61 72 65 20 73 6C 6F 77 2C 20 tabs are slow,
000180: 72 65 70 6C 61 63 65 20 74 68 65 0D 0A 09 09 09 replace the.....
000190: 20 20 72 65 70 65 61 74 65 64 20 6D 6F 76 65 73 repeated moves
0001A0: 20 72 69 67 68 74 20 62 79 20 61 20 67 6F 74 6F right by a goto
0001B0: 78 79 2A 29 0D 0A 09 09 09 54 68 69 73 78 3A 3D xy*).....Thisx:=
0001C0: 49 41 4E 44 28 54 68 69 73 78 2B 38 2C 30 66 66 IAND(Thisx+8,0ff
0001D0: 66 38 68 29 3B 0D 0A 09 09 09 52 65 73 65 74 50 f8h);.....ResetP
0001E0: 6F 73 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 os;.....END;....
0001F0: 45 4E 44 3B 0D 0A 09 45 4E 44 20 52 69 67 68 74 END;...END Right
Size : 512 (Real : 512)
000000: 67 20 61 6E 6F 74 68 65 72 20 6C 69 6E 65 20 75 g another line u
000010: 70 20 61 74 20 74 68 65 20 62 6F 74 74 6F 6D 0D p at the bottom.
000020: 0A 0D 0A 09 54 68 69 73 79 20 67 69 76 65 73 20 ....Thisy gives
000030: 6C 69 6E 65 20 74 6F 20 72 65 6D 6F 76 65 2A 29 line to remove*)
000040: 0D 0A 56 41 52 09 70 3A 50 6F 73 69 74 69 6F 6E ..VAR.p:Position
000050: 3B 0D 0A 42 45 47 49 4E 0D 0A 09 47 6F 74 6F 78 ;..BEGIN...Gotox
000060: 79 28 30 2C 54 68 69 73 79 29 3B 0D 0A 09 53 63 y(0,Thisy);...Sc
000070: 72 6F 6C 6C 57 69 6E 64 6F 77 28 54 68 69 73 79 rollWindow(Thisy
000080: 2C 45 6E 64 6F 66 57 69 6E 64 6F 77 2C 31 29 3B ,EndofWindow,1);
000090: 0D 0A 09 69 3A 3D 45 6E 64 6F 66 57 69 6E 64 6F ...i:=EndofWindo
0000A0: 77 2D 54 68 69 73 79 2B 31 3B 0D 0A 09 47 65 74 w-Thisy+1;...Get
0000B0: 50 6F 73 69 74 69 6F 6E 28 43 75 72 46 69 6C 65 Position(CurFile
0000C0: 50 74 72 5E 2C 70 29 3B 0D 0A 09 53 65 74 4C 69 Ptr^,p);...SetLi
0000D0: 6E 65 50 6F 73 28 69 29 3B 0D 0A 09 49 46 20 6C nePos(i);...IF l
0000E0: 69 6E 65 73 6D 6F 76 65 64 3D 69 20 54 48 45 4E inesmoved=i THEN
0000F0: 0D 0A 09 09 4D 6F 76 65 64 4F 4B 3A 3D 54 52 55 ....MovedOK:=TRU
000100: 45 3B 0D 0A 09 09 47 6F 74 6F 78 79 28 30 2C 45 E;....Gotoxy(0,E
000110: 6E 64 6F 66 57 69 6E 64 6F 77 29 3B 0D 0A 09 09 ndofWindow);....
000120: 57 72 69 74 65 4C 69 6E 65 3B 0D 0A 09 09 45 4E WriteLine;....EN
000130: 44 3B 0D 0A 09 53 65 74 50 6F 73 69 74 69 6F 6E D;...SetPosition
000140: 28 43 75 72 46 69 6C 65 50 74 72 5E 2C 70 29 3B (CurFilePtr^,p);
000150: 0D 0A 09 45 4E 44 20 52 65 6D 6F 76 65 4C 69 6E ...END RemoveLin
000160: 65 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 44 65 e;..PROCEDURE De
000170: 6C 46 75 6C 6C 4C 69 6E 65 3B 0D 0A 42 45 47 49 lFullLine;..BEGI
000180: 4E 0D 0A 09 4D 61 72 6B 41 73 55 70 64 61 74 65 N...MarkAsUpdate
000190: 64 3B 0D 0A 09 52 65 6D 6F 76 65 4C 69 6E 65 3B d;...RemoveLine;
0001A0: 0D 0A 09 53 65 74 4C 69 6E 65 50 6F 73 28 30 29 ...SetLinePos(0)
0001B0: 3B 0D 0A 09 44 65 6C 43 68 61 72 73 28 43 75 72 ;...DelChars(Cur
0001C0: 46 69 6C 65 50 74 72 5E 2C 4C 69 6E 65 4C 65 6E FilePtr^,LineLen
0001D0: 2B 32 29 3B 0D 0A 09 4C 69 6E 65 50 6F 73 3A 3D +2);...LinePos:=
0001E0: 30 3B 0D 0A 09 49 46 20 43 75 72 72 65 6E 74 4C 0;...IF CurrentL
0001F0: 65 66 74 4D 61 72 67 69 6E 3E 30 20 54 48 45 4E eftMargin>0 THEN
Size : 512 (Real : 512)
000000: 61 6E 67 65 50 6F 73 3B 0D 0A 09 09 69 3A 3D 28 angePos;....i:=(
000010: 53 63 72 65 65 6E 44 65 70 74 68 2D 57 69 6E 64 ScreenDepth-Wind
000020: 6F 77 73 29 20 44 49 56 20 57 69 6E 64 6F 77 73 ows) DIV Windows
000030: 3B 0D 0A 09 09 53 74 61 72 74 6F 66 57 69 6E 64 ;....StartofWind
000040: 6F 77 3A 3D 28 69 2B 31 29 2A 28 43 75 72 72 65 ow:=(i+1)*(Curre
000050: 6E 74 57 69 6E 64 6F 77 2D 31 29 3B 0D 0A 09 45 ntWindow-1);...E
000060: 4C 53 45 20 0D 0A 09 09 53 74 61 72 74 6F 66 57 LSE ....StartofW
000070: 69 6E 64 6F 77 3A 3D 30 3B 0D 0A 09 09 69 3A 3D indow:=0;....i:=
000080: 30 20 0D 0A 09 09 45 4E 44 3B 0D 0A 09 49 46 20 0 ....END;...IF
000090: 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 3C 57 69 CurrentWindow<Wi
0000A0: 6E 64 6F 77 73 20 54 48 45 4E 0D 0A 09 09 45 6E ndows THEN....En
0000B0: 64 6F 66 57 69 6E 64 6F 77 3A 3D 53 74 61 72 74 dofWindow:=Start
0000C0: 6F 66 57 69 6E 64 6F 77 2B 69 2D 31 3B 0D 0A 09 ofWindow+i-1;...
0000D0: 45 4C 53 45 0D 0A 09 09 45 6E 64 6F 66 57 69 6E ELSE....EndofWin
0000E0: 64 6F 77 3A 3D 53 63 72 65 65 6E 44 65 70 74 68 dow:=ScreenDepth
0000F0: 2D 32 0D 0A 09 09 45 4E 44 3B 0D 0A 0D 0A 09 45 -2....END;.....E
000100: 4E 44 20 43 68 61 6E 67 65 57 69 6E 64 6F 77 3B ND ChangeWindow;
000110: 0D 0A 50 52 4F 43 45 44 55 52 45 20 52 65 73 65 ..PROCEDURE Rese
000120: 74 53 63 72 65 65 6E 50 6F 73 3B 0D 0A 42 45 47 tScreenPos;..BEG
000130: 49 4E 0D 0A 09 49 46 20 43 75 72 72 65 6E 74 57 IN...IF CurrentW
000140: 69 6E 64 6F 77 3C 3E 30 20 54 48 45 4E 0D 0A 09 indow<>0 THEN...
000150: 09 54 68 69 73 78 3A 3D 63 75 72 78 5B 43 75 72 .Thisx:=curx[Cur
000160: 72 65 6E 74 57 69 6E 64 6F 77 5D 3B 0D 0A 09 09 rentWindow];....
000170: 54 68 69 73 79 3A 3D 63 75 72 79 5B 43 75 72 72 Thisy:=cury[Curr
000180: 65 6E 74 57 69 6E 64 6F 77 5D 3B 0D 0A 09 09 52 entWindow];....R
000190: 65 73 65 74 50 6F 73 3B 0D 0A 09 09 45 4E 44 3B esetPos;....END;
0001A0: 0D 0A 09 45 4E 44 20 52 65 73 65 74 53 63 72 65 ...END ResetScre
0001B0: 65 6E 50 6F 73 3B 0D 0A 50 52 4F 43 45 44 55 52 enPos;..PROCEDUR
0001C0: 45 20 4D 6F 76 65 57 69 6E 64 6F 77 28 66 72 6F E MoveWindow(fro
0001D0: 6D 2C 74 6F 3A 43 41 52 44 49 4E 41 4C 29 3B 0D m,to:CARDINAL);.
0001E0: 0A 56 41 52 09 62 3A 42 4F 4F 4C 45 41 4E 3B 0D .VAR.b:BOOLEAN;.
0001F0: 0A 42 45 47 49 4E 0D 0A 09 63 75 72 78 5B 74 6F .BEGIN...curx[to
Size : 512 (Real : 512)
000000: 43 48 31 3A 41 52 52 41 59 5B 30 2E 2E 30 5D 20 CH1:ARRAY[0..0]
000010: 4F 46 20 43 48 41 52 3B 0D 0A 42 45 47 49 4E 0D OF CHAR;..BEGIN.
000020: 0A 09 43 48 31 5B 30 5D 3A 3D 47 65 74 43 75 72 ..CH1[0]:=GetCur
000030: 72 65 6E 74 43 68 61 72 28 43 75 72 46 69 6C 65 rentChar(CurFile
000040: 50 74 72 5E 29 3B 0D 0A 09 49 46 20 28 43 48 31 Ptr^);...IF (CH1
000050: 5B 30 5D 3C 3E 43 52 29 20 41 4E 44 20 28 63 68 [0]<>CR) AND (ch
000060: 3C 3E 43 52 29 20 41 4E 44 20 28 43 48 31 5B 30 <>CR) AND (CH1[0
000070: 5D 3C 3E 31 61 78 29 20 54 48 45 4E 0D 0A 09 09 ]<>1ax) THEN....
000080: 49 46 20 28 43 48 31 5B 30 5D 3C 3E 54 41 42 29 IF (CH1[0]<>TAB)
000090: 20 41 4E 44 20 28 63 68 3C 3E 54 41 42 29 20 54 AND (ch<>TAB) T
0000A0: 48 45 4E 0D 0A 09 09 09 44 65 6C 43 68 61 72 73 HEN.....DelChars
0000B0: 28 43 75 72 46 69 6C 65 50 74 72 5E 2C 31 29 3B (CurFilePtr^,1);
0000C0: 0D 0A 09 09 09 43 48 31 5B 30 5D 3A 3D 63 68 3B .....CH1[0]:=ch;
0000D0: 0D 0A 09 09 09 49 6E 73 43 68 61 72 73 28 43 75 .....InsChars(Cu
0000E0: 72 46 69 6C 65 50 74 72 5E 2C 43 48 31 2C 31 29 rFilePtr^,CH1,1)
0000F0: 3B 0D 0A 09 09 09 62 3A 3D 42 61 63 6B 4F 6E 65 ;.....b:=BackOne
000100: 43 68 61 72 28 43 75 72 46 69 6C 65 50 74 72 5E Char(CurFilePtr^
000110: 29 3B 0D 0A 09 09 09 57 72 69 74 65 28 63 68 29 );.....Write(ch)
000120: 3B 0D 0A 09 09 09 52 65 73 65 74 50 6F 73 3B 0D ;.....ResetPos;.
000130: 0A 09 09 09 52 69 67 68 74 3B 0D 0A 09 09 09 4D ....Right;.....M
000140: 61 72 6B 41 73 55 70 64 61 74 65 64 3B 0D 0A 09 arkAsUpdated;...
000150: 09 45 4C 53 45 0D 0A 09 09 09 44 65 6C 4F 6E 65 .ELSE.....DelOne
000160: 43 68 61 72 3B 0D 0A 09 09 09 49 6E 73 4F 6E 65 Char;.....InsOne
000170: 43 68 61 72 28 63 68 29 3B 0D 0A 09 09 09 45 4E Char(ch);.....EN
000180: 44 3B 0D 0A 09 45 4C 53 45 0D 0A 09 09 49 6E 73 D;...ELSE....Ins
000190: 4F 6E 65 43 68 61 72 28 63 68 29 3B 0D 0A 09 09 OneChar(ch);....
0001A0: 45 4E 44 3B 0D 0A 09 45 4E 44 20 4F 76 65 72 57 END;...END OverW
0001B0: 72 69 74 65 3B 0D 0A 50 52 4F 43 45 44 55 52 45 rite;..PROCEDURE
0001C0: 20 55 70 3B 0D 0A 09 0D 0A 42 45 47 49 4E 0D 0A Up;.....BEGIN..
0001D0: 09 49 46 20 54 68 69 73 79 3C 3D 53 74 61 72 74 .IF Thisy<=Start
0001E0: 6F 66 57 69 6E 64 6F 77 20 54 48 45 4E 0D 0A 09 ofWindow THEN...
0001F0: 09 52 65 44 69 73 70 6C 61 79 57 69 6E 64 6F 77 .ReDisplayWindow
Size : 512 (Real : 512)
000000: 0D 0A 09 62 31 3A 3D 41 6C 70 68 61 4E 75 6D 28 ...b1:=AlphaNum(
000010: 63 68 29 3B 0D 0A 09 49 46 20 63 68 3D 45 4F 46 ch);...IF ch=EOF
000020: 20 54 48 45 4E 20 52 45 54 55 52 4E 20 45 4E 44 THEN RETURN END
000030: 3B 0D 0A 09 52 45 50 45 41 54 0D 0A 09 09 49 46 ;...REPEAT....IF
000040: 20 44 65 6C 65 74 65 20 54 48 45 4E 20 44 65 6C Delete THEN Del
000050: 4F 6E 65 43 68 61 72 20 45 4E 44 3B 0D 0A 09 09 OneChar END;....
000060: 49 46 20 42 61 63 6B 77 61 72 64 20 20 20 54 48 IF Backward TH
000070: 45 4E 20 4C 65 66 74 0D 0A 09 09 45 4C 53 49 46 EN Left....ELSIF
000080: 20 4E 4F 54 20 44 65 6C 65 74 65 20 54 48 45 4E NOT Delete THEN
000090: 20 52 69 67 68 74 20 45 4E 44 3B 0D 0A 09 09 63 Right END;....c
0000A0: 68 3A 3D 47 65 74 43 75 72 72 65 6E 74 43 68 61 h:=GetCurrentCha
0000B0: 72 28 43 75 72 46 69 6C 65 50 74 72 5E 29 3B 0D r(CurFilePtr^);.
0000C0: 0A 09 09 55 4E 54 49 4C 20 20 28 62 31 3C 3E 41 ...UNTIL (b1<>A
0000D0: 6C 70 68 61 4E 75 6D 28 63 68 29 29 20 4F 52 20 lphaNum(ch)) OR
0000E0: 46 69 6C 65 4C 69 6D 69 74 20 4F 52 20 28 63 68 FileLimit OR (ch
0000F0: 3D 45 4F 46 29 3B 0D 0A 09 49 46 20 42 61 63 6B =EOF);...IF Back
000100: 77 61 72 64 20 41 4E 44 20 4E 4F 54 20 46 69 6C ward AND NOT Fil
000110: 65 4C 69 6D 69 74 20 54 48 45 4E 20 52 69 67 68 eLimit THEN Righ
000120: 74 20 45 4E 44 3B 0D 0A 09 45 4E 44 20 46 69 6E t END;...END Fin
000130: 64 57 6F 72 64 3B 0D 0A 50 52 4F 43 45 44 55 52 dWord;..PROCEDUR
000140: 45 20 44 6F 77 6E 3B 0D 0A 42 45 47 49 4E 0D 0A E Down;..BEGIN..
000150: 09 4C 69 6E 65 4D 6F 76 65 28 31 29 3B 0D 0A 09 .LineMove(1);...
000160: 46 69 6C 65 4C 69 6D 69 74 3A 3D 6C 69 6E 65 73 FileLimit:=lines
000170: 6D 6F 76 65 64 3D 30 3B 0D 0A 09 49 46 20 6C 69 moved=0;...IF li
000180: 6E 65 73 6D 6F 76 65 64 3E 30 20 54 48 45 4E 0D nesmoved>0 THEN.
000190: 0A 09 09 49 46 20 28 54 68 69 73 79 3E 3D 45 6E ...IF (Thisy>=En
0001A0: 64 6F 66 57 69 6E 64 6F 77 29 20 54 48 45 4E 0D dofWindow) THEN.
0001B0: 0A 09 09 09 52 65 44 69 73 70 6C 61 79 57 69 6E ....ReDisplayWin
0001C0: 64 6F 77 3B 0D 0A 09 09 45 4C 53 49 46 20 20 4E dow;....ELSIF N
0001D0: 4F 54 20 52 65 44 72 61 77 6E 20 54 48 45 4E 20 OT ReDrawn THEN
0001E0: 0D 0A 09 09 09 49 4E 43 28 54 68 69 73 79 29 3B .....INC(Thisy);
0001F0: 0D 0A 09 09 09 52 65 73 65 74 50 6F 73 3B 0D 0A .....ResetPos;..
Size : 512 (Real : 512)
000000: 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 4C 69 6E 65 ;....END;...Line
000010: 4D 6F 76 65 28 2D 31 29 3B 0D 0A 09 46 69 6C 65 Move(-1);...File
000020: 4C 69 6D 69 74 3A 3D 6C 69 6E 65 73 6D 6F 76 65 Limit:=linesmove
000030: 64 3D 30 3B 0D 0A 09 49 46 20 28 6C 69 6E 65 73 d=0;...IF (lines
000040: 6D 6F 76 65 64 3C 3E 30 29 20 41 4E 44 20 28 54 moved<>0) AND (T
000050: 68 69 73 79 3E 53 74 61 72 74 6F 66 57 69 6E 64 hisy>StartofWind
000060: 6F 77 29 20 41 4E 44 20 4E 4F 54 20 52 65 44 72 ow) AND NOT ReDr
000070: 61 77 6E 20 54 48 45 4E 20 0D 0A 09 09 44 45 43 awn THEN ....DEC
000080: 28 54 68 69 73 79 29 3B 0D 0A 09 09 52 65 73 65 (Thisy);....Rese
000090: 74 50 6F 73 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 tPos;....END;...
0000A0: 45 4E 44 20 55 70 3B 0D 0A 50 52 4F 43 45 44 55 END Up;..PROCEDU
0000B0: 52 45 20 55 70 53 63 72 65 65 6E 3B 0D 0A 42 45 RE UpScreen;..BE
0000C0: 47 49 4E 0D 0A 09 4C 69 6E 65 4D 6F 76 65 28 31 GIN...LineMove(1
0000D0: 2D 49 4E 54 45 47 45 52 28 4C 69 6E 65 73 50 65 -INTEGER(LinesPe
0000E0: 72 57 69 6E 64 6F 77 29 29 3B 0D 0A 09 52 65 44 rWindow));...ReD
0000F0: 69 73 70 6C 61 79 57 69 6E 64 6F 77 3B 0D 0A 09 isplayWindow;...
000100: 45 4E 44 20 55 70 53 63 72 65 65 6E 3B 0D 0A 50 END UpScreen;..P
000110: 52 4F 43 45 44 55 52 45 20 44 6F 77 6E 53 63 72 ROCEDURE DownScr
000120: 65 65 6E 3B 0D 0A 42 45 47 49 4E 0D 0A 09 4C 69 een;..BEGIN...Li
000130: 6E 65 4D 6F 76 65 28 4C 69 6E 65 73 50 65 72 57 neMove(LinesPerW
000140: 69 6E 64 6F 77 2D 31 29 3B 0D 0A 09 52 65 44 69 indow-1);...ReDi
000150: 73 70 6C 61 79 57 69 6E 64 6F 77 3B 0D 0A 09 45 splayWindow;...E
000160: 4E 44 20 44 6F 77 6E 53 63 72 65 65 6E 3B 0D 0A ND DownScreen;..
000170: 50 52 4F 43 45 44 55 52 45 20 54 6F 70 3B 0D 0A PROCEDURE Top;..
000180: 42 45 47 49 4E 0D 0A 09 4C 69 6E 65 50 6F 73 3A BEGIN...LinePos:
000190: 3D 30 3B 0D 0A 09 4C 69 6E 65 4D 6F 76 65 28 2D =0;...LineMove(-
0001A0: 31 36 37 33 36 29 3B 0D 0A 09 52 65 44 69 73 70 16736);...ReDisp
0001B0: 6C 61 79 57 69 6E 64 6F 77 3B 0D 0A 09 45 4E 44 layWindow;...END
0001C0: 20 54 6F 70 3B 0D 0A 50 52 4F 43 45 44 55 52 45 Top;..PROCEDURE
0001D0: 20 42 6F 74 74 6F 6D 3B 0D 0A 42 45 47 49 4E 0D Bottom;..BEGIN.
0001E0: 0A 09 4C 69 6E 65 50 6F 73 3A 3D 39 39 39 3B 0D ..LinePos:=999;.
0001F0: 0A 09 4C 69 6E 65 4D 6F 76 65 28 31 36 37 33 36 ..LineMove(16736
Size : 512 (Real : 512)
000000: 09 09 09 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 20 ...END;....END;
000010: 0D 0A 09 45 4E 44 20 44 6F 77 6E 3B 0D 0A 0D 0A ...END Down;....
000020: 50 52 4F 43 45 44 55 52 45 20 52 65 64 6F 4C 69 PROCEDURE RedoLi
000030: 6E 65 3B 0D 0A 42 45 47 49 4E 0D 0A 09 47 6F 74 ne;..BEGIN...Got
000040: 6F 78 79 28 30 2C 54 68 69 73 79 29 3B 0D 0A 09 oxy(0,Thisy);...
000050: 53 65 74 4C 69 6E 65 50 6F 73 28 30 29 3B 0D 0A SetLinePos(0);..
000060: 09 57 72 69 74 65 4C 69 6E 65 3B 0D 0A 09 43 68 .WriteLine;...Ch
000070: 61 6E 67 65 50 6F 73 3B 0D 0A 09 45 4E 44 20 52 angePos;...END R
000080: 65 64 6F 4C 69 6E 65 3B 0D 0A 0D 0A 50 52 4F 43 edoLine;....PROC
000090: 45 44 55 52 45 20 49 6E 73 4F 6E 65 43 68 61 72 EDURE InsOneChar
0000A0: 28 63 68 3A 43 48 41 52 29 3B 0D 0A 56 41 52 09 (ch:CHAR);..VAR.
0000B0: 43 48 31 3A 41 52 52 41 59 5B 30 2E 2E 30 5D 20 CH1:ARRAY[0..0]
0000C0: 4F 46 20 43 48 41 52 3B 0D 0A 42 45 47 49 4E 0D OF CHAR;..BEGIN.
0000D0: 0A 09 52 65 44 72 61 77 6E 3A 3D 46 41 4C 53 45 ..ReDrawn:=FALSE
0000E0: 3B 0D 0A 09 4D 61 72 6B 41 73 55 70 64 61 74 65 ;...MarkAsUpdate
0000F0: 64 3B 0D 0A 09 43 48 31 5B 30 5D 3A 3D 63 68 3B d;...CH1[0]:=ch;
000100: 0D 0A 09 49 6E 73 43 68 61 72 73 28 43 75 72 46 ...InsChars(CurF
000110: 69 6C 65 50 74 72 5E 2C 43 48 31 2C 31 29 3B 0D ilePtr^,CH1,1);.
000120: 0A 09 49 4E 43 28 4C 69 6E 65 50 6F 73 29 3B 0D ..INC(LinePos);.
000130: 0A 09 49 4E 43 28 4C 69 6E 65 4C 65 6E 29 3B 0D ..INC(LineLen);.
000140: 0A 09 49 46 20 63 68 3D 43 52 20 54 48 45 4E 0D ..IF ch=CR THEN.
000150: 0A 09 09 43 48 31 5B 30 5D 3A 3D 4C 46 3B 0D 0A ...CH1[0]:=LF;..
000160: 09 09 49 6E 73 43 68 61 72 73 28 43 75 72 46 69 ..InsChars(CurFi
000170: 6C 65 50 74 72 5E 2C 43 48 31 2C 31 29 3B 0D 0A lePtr^,CH1,1);..
000180: 09 09 52 65 73 65 74 50 6F 73 3B 0D 0A 09 09 43 ..ResetPos;....C
000190: 6C 65 61 72 52 65 73 74 4F 66 4C 69 6E 65 3B 0D learRestOfLine;.
0001A0: 0A 09 09 49 46 20 54 68 69 73 79 3E 3D 45 6E 64 ...IF Thisy>=End
0001B0: 6F 66 57 69 6E 64 6F 77 20 54 48 45 4E 0D 0A 09 ofWindow THEN...
0001C0: 09 09 53 63 72 6F 6C 6C 54 65 78 74 28 30 29 3B ..ScrollText(0);
0001D0: 0D 0A 09 09 09 44 45 43 28 54 68 69 73 79 29 3B .....DEC(Thisy);
0001E0: 0D 0A 09 09 45 4C 53 45 20 20 20 20 53 63 72 6F ....ELSE Scro
0001F0: 6C 6C 57 69 6E 64 6F 77 28 54 68 69 73 79 2B 31 llWindow(Thisy+1
Size : 512 (Real : 512)
000000: 29 3B 0D 0A 09 52 65 44 69 73 70 6C 61 79 57 69 );...ReDisplayWi
000010: 6E 64 6F 77 3B 0D 0A 09 45 4E 44 20 42 6F 74 74 ndow;...END Bott
000020: 6F 6D 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 46 om;..PROCEDURE F
000030: 61 72 4C 65 66 74 3B 0D 0A 42 45 47 49 4E 0D 0A arLeft;..BEGIN..
000040: 09 49 46 20 43 75 72 72 65 6E 74 4C 65 66 74 4D .IF CurrentLeftM
000050: 61 72 67 69 6E 3E 30 20 54 48 45 4E 20 0D 0A 09 argin>0 THEN ...
000060: 09 43 68 61 6E 67 65 4D 61 72 67 69 6E 28 2D 49 .ChangeMargin(-I
000070: 4E 54 45 47 45 52 28 43 75 72 72 65 6E 74 4C 65 NTEGER(CurrentLe
000080: 66 74 4D 61 72 67 69 6E 29 29 0D 0A 09 09 45 4E ftMargin))....EN
000090: 44 3B 0D 0A 09 53 65 74 4C 69 6E 65 50 6F 73 28 D;...SetLinePos(
0000A0: 30 29 3B 0D 0A 09 4C 69 6E 65 50 6F 73 3A 3D 30 0);...LinePos:=0
0000B0: 3B 0D 0A 09 43 68 61 6E 67 65 50 6F 73 3B 0D 0A ;...ChangePos;..
0000C0: 09 45 4E 44 20 46 61 72 4C 65 66 74 3B 0D 0A 50 .END FarLeft;..P
0000D0: 52 4F 43 45 44 55 52 45 20 46 61 72 52 69 67 68 ROCEDURE FarRigh
0000E0: 74 3B 0D 0A 42 45 47 49 4E 0D 0A 09 53 65 74 4C t;..BEGIN...SetL
0000F0: 69 6E 65 50 6F 73 28 30 29 3B 0D 0A 09 4C 69 6E inePos(0);...Lin
000100: 65 50 6F 73 3A 3D 4C 69 6E 65 4C 65 6E 3B 0D 0A ePos:=LineLen;..
000110: 09 43 68 61 6E 67 65 50 6F 73 3B 0D 0A 09 45 4E .ChangePos;...EN
000120: 44 20 46 61 72 52 69 67 68 74 3B 0D 0A 50 52 4F D FarRight;..PRO
000130: 43 45 44 55 52 45 20 43 68 61 6E 67 65 57 69 6E CEDURE ChangeWin
000140: 64 6F 77 28 4E 6F 3A 49 4E 54 45 47 45 52 29 3B dow(No:INTEGER);
000150: 0D 0A 56 41 52 09 62 3A 42 4F 4F 4C 45 41 4E 3B ..VAR.b:BOOLEAN;
000160: 0D 0A 09 69 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A ...i:CARDINAL;..
000170: 42 45 47 49 4E 0D 0A 09 49 46 20 43 75 72 72 65 BEGIN...IF Curre
000180: 6E 74 57 69 6E 64 6F 77 3C 3E 30 20 54 48 45 4E ntWindow<>0 THEN
000190: 0D 0A 09 09 63 75 72 78 5B 43 75 72 72 65 6E 74 ....curx[Current
0001A0: 57 69 6E 64 6F 77 5D 3A 3D 54 68 69 73 78 3B 0D Window]:=Thisx;.
0001B0: 0A 09 09 63 75 72 79 5B 43 75 72 72 65 6E 74 57 ...cury[CurrentW
0001C0: 69 6E 64 6F 77 5D 3A 3D 54 68 69 73 79 3B 0D 0A indow]:=Thisy;..
0001D0: 09 09 62 3A 3D 4C 61 62 65 6C 4F 70 28 43 75 72 ..b:=LabelOp(Cur
0001E0: 46 69 6C 65 50 74 72 5E 2C 54 52 55 45 2C 43 48 FilePtr^,TRUE,CH
0001F0: 52 28 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 29 R(CurrentWindow)
Size : 512 (Real : 512)
000000: 2C 45 6E 64 6F 66 57 69 6E 64 6F 77 2C 2D 31 29 ,EndofWindow,-1)
000010: 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 49 4E ;.....END;....IN
000020: 43 28 54 68 69 73 79 29 3B 0D 0A 09 09 52 65 73 C(Thisy);....Res
000030: 65 74 50 6F 73 3B 0D 0A 09 09 4C 69 6E 65 50 6F etPos;....LinePo
000040: 73 3A 3D 30 3B 0D 0A 09 09 52 65 64 6F 4C 69 6E s:=0;....RedoLin
000050: 65 3B 0D 0A 09 45 4C 53 49 46 20 63 68 3D 54 41 e;...ELSIF ch=TA
000060: 42 20 54 48 45 4E 20 52 65 64 6F 4C 69 6E 65 09 B THEN RedoLine.
000070: 0D 0A 09 45 4C 53 45 0D 0A 09 09 49 46 20 54 68 ...ELSE....IF Th
000080: 69 73 78 3E 3D 28 53 63 72 65 65 6E 57 69 64 74 isx>=(ScreenWidt
000090: 68 2D 31 29 20 54 48 45 4E 0D 0A 09 09 09 43 68 h-1) THEN.....Ch
0000A0: 61 6E 67 65 4D 61 72 67 69 6E 28 33 32 29 3B 0D angeMargin(32);.
0000B0: 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 49 46 20 4E ....END;....IF N
0000C0: 4F 54 20 52 65 44 72 61 77 6E 20 54 48 45 4E 0D OT ReDrawn THEN.
0000D0: 0A 09 09 09 49 46 20 4C 69 6E 65 50 6F 73 3C 4C ....IF LinePos<L
0000E0: 69 6E 65 4C 65 6E 20 54 48 45 4E 0D 0A 09 09 09 ineLen THEN.....
0000F0: 09 62 3A 3D 42 61 63 6B 4F 6E 65 43 68 61 72 28 .b:=BackOneChar(
000100: 43 75 72 46 69 6C 65 50 74 72 5E 29 3B 0D 0A 09 CurFilePtr^);...
000110: 09 09 09 57 72 69 74 65 50 61 72 74 4C 69 6E 65 ...WritePartLine
000120: 28 43 75 72 72 65 6E 74 4C 65 66 74 4D 61 72 67 (CurrentLeftMarg
000130: 69 6E 2B 54 68 69 73 78 2B 31 29 3B 0D 0A 09 09 in+Thisx+1);....
000140: 09 09 49 4E 43 28 54 68 69 73 78 29 3B 0D 0A 09 ..INC(Thisx);...
000150: 09 09 09 62 3A 3D 46 6F 72 77 61 72 64 4F 6E 65 ...b:=ForwardOne
000160: 43 68 61 72 28 43 75 72 46 69 6C 65 50 74 72 5E Char(CurFilePtr^
000170: 29 3B 09 09 09 09 0D 0A 09 09 09 45 4C 53 45 0D );.........ELSE.
000180: 0A 09 09 09 09 57 72 69 74 65 28 63 68 29 3B 0D .....Write(ch);.
000190: 0A 09 09 09 09 49 4E 43 28 54 68 69 73 78 29 3B .....INC(Thisx);
0001A0: 0D 0A 09 09 09 09 45 4E 44 3B 0D 0A 09 09 09 45 ......END;.....E
0001B0: 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 52 65 ND;....END;...Re
0001C0: 73 65 74 50 6F 73 3B 0D 0A 09 45 4E 44 20 49 6E setPos;...END In
0001D0: 73 4F 6E 65 43 68 61 72 3B 0D 0A 50 52 4F 43 45 sOneChar;..PROCE
0001E0: 44 55 52 45 20 44 65 6C 4F 6E 65 43 68 61 72 3B DURE DelOneChar;
0001F0: 0D 0A 42 45 47 49 4E 0D 0A 09 4D 61 72 6B 41 73 ..BEGIN...MarkAs
Size : 512 (Real : 512)
000000: 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 43 75 72 );....END;...Cur
000010: 72 65 6E 74 57 69 6E 64 6F 77 3A 3D 4E 6F 3B 0D rentWindow:=No;.
000020: 0A 09 0D 0A 09 49 46 20 43 75 72 72 65 6E 74 57 .....IF CurrentW
000030: 69 6E 64 6F 77 3E 57 69 6E 64 6F 77 73 20 54 48 indow>Windows TH
000040: 45 4E 20 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 EN CurrentWindow
000050: 3A 3D 57 69 6E 64 6F 77 73 20 45 4E 44 3B 0D 0A :=Windows END;..
000060: 09 49 46 20 43 75 72 72 65 6E 74 57 69 6E 64 6F .IF CurrentWindo
000070: 77 3C 3E 30 20 54 48 45 4E 0D 0A 09 09 28 2A 73 w<>0 THEN....(*s
000080: 65 74 20 75 70 20 61 20 70 6F 69 6E 74 65 72 20 et up a pointer
000090: 74 6F 20 74 68 65 20 63 75 72 72 65 6E 74 20 66 to the current f
0000A0: 69 6C 65 20 74 6F 20 73 61 76 65 20 69 6E 64 65 ile to save inde
0000B0: 78 20 63 61 6C 63 75 6C 61 74 69 6F 6E 0D 0A 09 x calculation...
0000C0: 09 20 20 65 76 65 72 79 20 74 69 6D 65 20 74 68 . every time th
0000D0: 65 20 66 69 6C 65 20 69 73 20 72 65 66 65 72 65 e file is refere
0000E0: 6E 63 65 64 2A 29 0D 0A 09 09 43 75 72 72 65 6E nced*)....Curren
0000F0: 74 46 69 6C 65 3A 3D 57 69 6E 64 6F 77 46 69 6C tFile:=WindowFil
000100: 65 5B 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 5D e[CurrentWindow]
000110: 3B 0D 0A 09 09 43 75 72 46 69 6C 65 50 74 72 3A ;....CurFilePtr:
000120: 3D 50 45 64 69 74 46 69 6C 65 28 41 44 52 28 46 =PEditFile(ADR(F
000130: 69 6C 65 73 5B 43 75 72 72 65 6E 74 46 69 6C 65 iles[CurrentFile
000140: 5D 29 29 3B 0D 0A 09 09 62 3A 3D 4C 61 62 65 6C ]));....b:=Label
000150: 4F 70 28 43 75 72 46 69 6C 65 50 74 72 5E 2C 46 Op(CurFilePtr^,F
000160: 41 4C 53 45 2C 43 48 52 28 43 75 72 72 65 6E 74 ALSE,CHR(Current
000170: 57 69 6E 64 6F 77 29 29 3B 0D 0A 09 09 54 68 69 Window));....Thi
000180: 73 78 3A 3D 63 75 72 78 5B 43 75 72 72 65 6E 74 sx:=curx[Current
000190: 57 69 6E 64 6F 77 5D 3B 0D 0A 09 09 54 68 69 73 Window];....This
0001A0: 79 3A 3D 63 75 72 79 5B 43 75 72 72 65 6E 74 57 y:=cury[CurrentW
0001B0: 69 6E 64 6F 77 5D 3B 0D 0A 09 09 43 75 72 72 65 indow];....Curre
0001C0: 6E 74 4C 65 66 74 4D 61 72 67 69 6E 3A 3D 4C 65 ntLeftMargin:=Le
0001D0: 66 74 4D 61 72 67 69 6E 5B 43 75 72 72 65 6E 74 ftMargin[Current
0001E0: 57 69 6E 64 6F 77 5D 3B 0D 0A 09 09 53 65 74 4C Window];....SetL
0001F0: 69 6E 65 50 6F 73 28 30 29 3B 0D 0A 09 09 43 68 inePos(0);....Ch
Size : 512 (Real : 512)
000000: 55 70 64 61 74 65 64 3B 0D 0A 09 63 68 3A 3D 47 Updated;...ch:=G
000010: 65 74 43 75 72 72 65 6E 74 43 68 61 72 28 43 75 etCurrentChar(Cu
000020: 72 46 69 6C 65 50 74 72 5E 29 3B 0D 0A 09 49 46 rFilePtr^);...IF
000030: 20 4C 69 6E 65 50 6F 73 3D 4C 69 6E 65 4C 65 6E LinePos=LineLen
000040: 20 54 48 45 4E 20 69 3A 3D 32 0D 0A 09 45 4C 53 THEN i:=2...ELS
000050: 45 20 69 3A 3D 31 20 45 4E 44 3B 0D 0A 09 44 65 E i:=1 END;...De
000060: 6C 43 68 61 72 73 28 43 75 72 46 69 6C 65 50 74 lChars(CurFilePt
000070: 72 5E 2C 69 29 3B 0D 0A 09 49 46 20 69 3D 32 20 r^,i);...IF i=2
000080: 54 48 45 4E 0D 0A 09 09 49 46 20 54 68 69 73 79 THEN....IF Thisy
000090: 3C 45 6E 64 6F 66 57 69 6E 64 6F 77 20 54 48 45 <EndofWindow THE
0000A0: 4E 20 0D 0A 09 09 09 49 4E 43 28 54 68 69 73 79 N .....INC(Thisy
0000B0: 29 3B 0D 0A 09 09 09 69 3A 3D 4C 69 6E 65 50 6F );.....i:=LinePo
0000C0: 73 3B 0D 0A 09 09 09 52 65 6D 6F 76 65 4C 69 6E s;.....RemoveLin
0000D0: 65 3B 0D 0A 09 09 09 4C 69 6E 65 50 6F 73 3A 3D e;.....LinePos:=
0000E0: 69 3B 0D 0A 09 09 09 44 45 43 28 54 68 69 73 79 i;.....DEC(Thisy
0000F0: 29 3B 0D 0A 09 09 09 52 65 64 6F 4C 69 6E 65 3B );.....RedoLine;
000100: 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 45 4C 53 45 .....END;...ELSE
000110: 09 0D 0A 09 09 44 45 43 28 4C 69 6E 65 4C 65 6E .....DEC(LineLen
000120: 29 3B 0D 0A 09 09 57 72 69 74 65 50 61 72 74 4C );....WritePartL
000130: 69 6E 65 28 43 75 72 72 65 6E 74 4C 65 66 74 4D ine(CurrentLeftM
000140: 61 72 67 69 6E 2B 54 68 69 73 78 2B 31 29 3B 0D argin+Thisx+1);.
000150: 0A 09 09 45 4E 44 3B 0D 0A 28 2A 09 45 4C 53 49 ...END;..(*.ELSI
000160: 46 20 63 68 3D 54 41 42 20 54 48 45 4E 0D 0A 09 F ch=TAB THEN...
000170: 09 52 65 64 6F 4C 69 6E 65 0D 0A 09 45 4C 53 45 .RedoLine...ELSE
000180: 0D 0A 09 09 4C 69 6E 65 4C 65 6E 3A 3D 4C 69 6E ....LineLen:=Lin
000190: 65 4C 65 6E 2D 31 3B 0D 0A 09 09 44 6F 53 63 72 eLen-1;....DoScr
0001A0: 65 65 6E 43 68 61 6E 67 65 28 44 65 6C 43 68 61 eenChange(DelCha
0001B0: 72 29 3B 0D 0A 09 09 45 4E 44 3B 2A 29 0D 0A 09 r);....END;*)...
0001C0: 52 65 73 65 74 50 6F 73 3B 0D 0A 09 45 4E 44 20 ResetPos;...END
0001D0: 44 65 6C 4F 6E 65 43 68 61 72 3B 0D 0A 50 52 4F DelOneChar;..PRO
0001E0: 43 45 44 55 52 45 20 4F 76 65 72 57 72 69 74 65 CEDURE OverWrite
0001F0: 28 63 68 3A 43 48 41 52 29 3B 0D 0A 56 41 52 09 (ch:CHAR);..VAR.
Size : 512 (Real : 512)
000000: 69 6E 5B 77 69 6E 64 6F 77 5D 3B 0D 0A 09 73 74 in[window];...st
000010: 61 72 74 6C 69 6E 65 3A 3D 28 49 4E 54 45 47 45 artline:=(INTEGE
000020: 52 28 4C 69 6E 65 73 50 65 72 57 69 6E 64 6F 77 R(LinesPerWindow
000030: 29 2B 31 29 2A 28 77 69 6E 64 6F 77 2D 31 29 3B )+1)*(window-1);
000040: 0D 0A 09 47 6F 74 6F 78 79 28 30 2C 73 74 61 72 ...Gotoxy(0,star
000050: 74 6C 69 6E 65 29 3B 0D 0A 0D 0A 09 28 2A 66 69 tline);.....(*fi
000060: 72 73 74 20 6C 69 6E 65 20 6F 66 20 74 68 69 73 rst line of this
000070: 20 77 69 6E 64 6F 77 2A 29 0D 0A 09 69 3A 3D 30 window*)...i:=0
000080: 3B 09 28 2A 6C 69 6E 65 20 77 69 74 68 69 6E 20 ;.(*line within
000090: 77 69 6E 64 6F 77 2A 29 0D 0A 09 6B 3A 3D 4C 69 window*)...k:=Li
0000A0: 6E 65 73 50 65 72 57 69 6E 64 6F 77 20 44 49 56 nesPerWindow DIV
0000B0: 20 32 3B 0D 0A 09 52 65 74 72 6C 69 6E 65 28 66 2;...Retrline(f
0000C0: 2C 6C 65 6E 2C 63 68 61 72 73 69 6E 2C 70 6F 73 ,len,charsin,pos
0000D0: 2C 6D 6F 76 65 64 2C 2D 6B 29 3B 0D 0A 09 0D 0A ,moved,-k);.....
0000E0: 09 4C 4F 4F 50 0D 0A 0D 0A 09 09 28 2A 63 68 65 .LOOP......(*che
0000F0: 63 6B 20 69 66 20 74 68 69 73 20 69 73 20 74 68 ck if this is th
000100: 65 20 6C 69 6E 65 20 77 65 20 77 65 72 65 20 70 e line we were p
000110: 6F 73 69 74 69 6F 6E 65 64 20 74 6F 20 75 70 6F ositioned to upo
000120: 6E 20 65 6E 74 72 79 2A 29 0D 0A 0D 0A 09 09 6C n entry*)......l
000130: 69 6E 65 70 6F 73 3A 3D 30 3B 0D 0A 09 09 6A 3A inepos:=0;....j:
000140: 3D 30 3B 0D 0A 09 09 4C 4F 4F 50 0D 0A 09 09 09 =0;....LOOP.....
000150: 49 46 20 28 6D 6F 76 65 64 3D 30 29 20 41 4E 44 IF (moved=0) AND
000160: 20 28 6A 3C 3D 43 41 52 44 49 4E 41 4C 28 63 68 (j<=CARDINAL(ch
000170: 61 72 73 69 6E 29 29 20 54 48 45 4E 0D 0A 09 09 arsin)) THEN....
000180: 09 09 63 75 72 78 3A 3D 6C 69 6E 65 70 6F 73 2D ..curx:=linepos-
000190: 4C 65 66 74 4D 61 72 67 3B 0D 0A 09 09 09 09 63 LeftMarg;......c
0001A0: 75 72 79 3A 3D 69 2B 43 41 52 44 49 4E 41 4C 28 ury:=i+CARDINAL(
0001B0: 73 74 61 72 74 6C 69 6E 65 29 0D 0A 09 09 09 09 startline)......
0001C0: 45 4E 44 3B 0D 0A 09 09 09 49 4E 43 28 6A 29 3B END;.....INC(j);
0001D0: 0D 0A 09 09 09 49 46 20 6A 3E 43 41 52 44 49 4E .....IF j>CARDIN
0001E0: 41 4C 28 6C 65 6E 29 20 54 48 45 4E 20 45 58 49 AL(len) THEN EXI
0001F0: 54 20 45 4E 44 3B 0D 0A 0D 0A 09 09 09 28 2A 63 T END;.......(*c
Size : 512 (Real : 512)
000000: 54 68 69 73 78 2C 54 68 69 73 79 2C 0D 0A 09 09 Thisx,Thisy,....
000010: 09 63 75 72 78 2C 63 75 72 79 2C 52 65 44 69 73 .curx,cury,ReDis
000020: 70 6C 61 79 3B 0D 0A 46 52 4F 4D 20 09 49 6E 74 play;..FROM .Int
000030: 4C 6F 67 69 63 20 49 4D 50 4F 52 54 20 49 41 4E Logic IMPORT IAN
000040: 44 3B 0D 0A 46 52 4F 4D 09 46 69 6C 65 73 20 49 D;..FROM.Files I
000050: 4D 50 4F 52 54 20 4C 6F 6F 6B 75 70 2C 43 6C 6F MPORT Lookup,Clo
000060: 73 65 2C 46 49 4C 45 2C 52 65 61 64 42 6C 6F 63 se,FILE,ReadBloc
000070: 6B 3B 0D 0A 46 52 4F 4D 09 53 59 53 54 45 4D 20 k;..FROM.SYSTEM
000080: 49 4D 50 4F 52 54 20 41 44 52 3B 0D 0A 43 4F 4E IMPORT ADR;..CON
000090: 53 54 09 45 4F 46 3D 31 61 78 3B 0D 0A 50 52 4F ST.EOF=1ax;..PRO
0000A0: 43 45 44 55 52 45 20 43 6C 65 61 72 54 6F 45 6E CEDURE ClearToEn
0000B0: 64 28 69 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A d(i:CARDINAL);..
0000C0: 42 45 47 49 4E 0D 0A 09 53 63 72 65 65 6E 43 6F BEGIN...ScreenCo
0000D0: 6E 74 72 6F 6C 28 44 65 6C 45 6F 6C 29 3B 0D 0A ntrol(DelEol);..
0000E0: 09 49 46 20 4E 4F 54 20 4D 61 64 65 43 68 61 6E .IF NOT MadeChan
0000F0: 67 65 20 54 48 45 4E 0D 0A 09 09 46 4F 52 20 69 ge THEN....FOR i
000100: 3A 3D 69 20 54 4F 20 53 63 72 65 65 6E 57 69 64 :=i TO ScreenWid
000110: 74 68 2D 31 20 44 4F 20 57 72 69 74 65 28 27 20 th-1 DO Write('
000120: 27 29 20 45 4E 44 3B 0D 0A 09 09 45 4E 44 3B 0D ') END;....END;.
000130: 0A 09 45 4E 44 20 43 6C 65 61 72 54 6F 45 6E 64 ..END ClearToEnd
000140: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 45 72 72 ;..PROCEDURE Err
000150: 6F 72 4D 65 73 73 61 67 65 28 73 31 2C 73 32 3A orMessage(s1,s2:
000160: 41 52 52 41 59 20 4F 46 20 43 48 41 52 29 3B 0D ARRAY OF CHAR);.
000170: 0A 0D 0A 28 2A 09 44 69 73 70 6C 61 79 20 65 72 ...(*.Display er
000180: 72 6F 72 20 6D 65 73 73 61 67 65 20 61 74 20 62 ror message at b
000190: 6F 74 74 6F 6D 20 6F 66 20 73 63 72 65 65 6E 2A ottom of screen*
0001A0: 29 0D 0A 56 41 52 20 69 3A 49 4E 54 45 47 45 52 )..VAR i:INTEGER
0001B0: 3B 0D 0A 42 45 47 49 4E 0D 0A 09 47 6F 74 6F 78 ;..BEGIN...Gotox
0001C0: 79 28 30 2C 53 63 72 65 65 6E 44 65 70 74 68 2D y(0,ScreenDepth-
0001D0: 31 29 3B 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 1);...ScreenCont
0001E0: 72 6F 6C 28 52 69 6E 67 42 65 6C 6C 29 3B 0D 0A rol(RingBell);..
0001F0: 09 43 6C 65 61 72 54 6F 45 6E 64 28 31 29 3B 0D .ClearToEnd(1);.
Size : 512 (Real : 512)
000000: 5D 3A 3D 63 75 72 78 5B 66 72 6F 6D 5D 3B 0D 0A ]:=curx[from];..
000010: 09 63 75 72 79 5B 74 6F 5D 3A 3D 63 75 72 79 5B .cury[to]:=cury[
000020: 66 72 6F 6D 5D 3B 0D 0A 09 4C 65 66 74 4D 61 72 from];...LeftMar
000030: 67 69 6E 5B 74 6F 5D 3A 3D 4C 65 66 74 4D 61 72 gin[to]:=LeftMar
000040: 67 69 6E 5B 66 72 6F 6D 5D 3B 0D 0A 09 57 69 6E gin[from];...Win
000050: 64 6F 77 46 69 6C 65 5B 74 6F 5D 3A 3D 57 69 6E dowFile[to]:=Win
000060: 64 6F 77 46 69 6C 65 5B 66 72 6F 6D 5D 3B 0D 0A dowFile[from];..
000070: 09 62 3A 3D 4C 61 62 65 6C 4F 70 28 46 69 6C 65 .b:=LabelOp(File
000080: 73 5B 57 69 6E 64 6F 77 46 69 6C 65 5B 74 6F 5D s[WindowFile[to]
000090: 5D 2C 54 52 55 45 2C 43 48 52 28 74 6F 29 29 3B ],TRUE,CHR(to));
0000A0: 0D 0A 09 45 4E 44 20 4D 6F 76 65 57 69 6E 64 6F ...END MoveWindo
0000B0: 77 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 45 6C w;..PROCEDURE El
0000C0: 69 64 65 57 69 6E 64 6F 77 28 57 69 6E 64 6F 77 ideWindow(Window
0000D0: 4E 6F 3A 49 4E 54 45 47 45 52 29 3B 0D 0A 42 45 No:INTEGER);..BE
0000E0: 47 49 4E 0D 0A 09 46 4F 52 20 69 3A 3D 57 69 6E GIN...FOR i:=Win
0000F0: 64 6F 77 4E 6F 2B 31 20 54 4F 20 49 4E 54 45 47 dowNo+1 TO INTEG
000100: 45 52 28 57 69 6E 64 6F 77 73 29 20 44 4F 0D 0A ER(Windows) DO..
000110: 09 09 4D 6F 76 65 57 69 6E 64 6F 77 28 69 2C 69 ..MoveWindow(i,i
000120: 2D 31 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 44 -1);....END;...D
000130: 45 43 28 57 69 6E 64 6F 77 73 29 3B 0D 0A 09 43 EC(Windows);...C
000140: 75 72 72 65 6E 74 57 69 6E 64 6F 77 3A 3D 30 3B urrentWindow:=0;
000150: 0D 0A 09 45 4E 44 20 45 6C 69 64 65 57 69 6E 64 ...END ElideWind
000160: 6F 77 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 4D ow;..PROCEDURE M
000170: 61 6B 65 57 69 6E 64 6F 77 3B 0D 0A 42 45 47 49 akeWindow;..BEGI
000180: 4E 0D 0A 09 49 4E 43 28 57 69 6E 64 6F 77 73 29 N...INC(Windows)
000190: 3B 0D 0A 09 4D 6F 76 65 57 69 6E 64 6F 77 28 43 ;...MoveWindow(C
0001A0: 75 72 72 65 6E 74 57 69 6E 64 6F 77 2C 57 69 6E urrentWindow,Win
0001B0: 64 6F 77 73 29 3B 0D 0A 09 45 4E 44 20 4D 61 6B dows);...END Mak
0001C0: 65 57 69 6E 64 6F 77 3B 0D 0A 50 52 4F 43 45 44 eWindow;..PROCED
0001D0: 55 52 45 20 53 65 61 72 63 68 28 52 65 70 6C 61 URE Search(Repla
0001E0: 63 65 3A 41 52 52 41 59 20 4F 46 20 43 48 41 52 ce:ARRAY OF CHAR
0001F0: 3B 52 4C 65 6E 3A 49 4E 54 45 47 45 52 3B 4C 65 ;RLen:INTEGER;Le
Size : 512 (Real : 512)
000000: 0A 09 47 6F 74 6F 78 79 28 30 2C 53 63 72 65 65 ..Gotoxy(0,Scree
000010: 6E 44 65 70 74 68 2D 31 29 3B 0D 0A 09 57 72 69 nDepth-1);...Wri
000020: 74 65 53 74 72 69 6E 67 28 73 31 29 3B 57 72 69 teString(s1);Wri
000030: 74 65 53 74 72 69 6E 67 28 73 32 29 3B 0D 0A 09 teString(s2);...
000040: 45 4E 44 20 45 72 72 6F 72 4D 65 73 73 61 67 65 END ErrorMessage
000050: 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 53 65 74 ;..PROCEDURE Set
000060: 57 69 6E 64 6F 77 73 28 69 3A 49 4E 54 45 47 45 Windows(i:INTEGE
000070: 52 29 3B 0D 0A 0D 0A 28 2A 09 73 65 74 20 6E 75 R);....(*.set nu
000080: 6D 62 65 72 20 6F 66 20 65 64 69 74 20 77 69 6E mber of edit win
000090: 64 6F 77 73 20 69 6E 20 75 73 65 20 2D 20 79 6F dows in use - yo
0000A0: 75 20 6D 75 73 74 20 72 65 66 72 65 73 68 20 74 u must refresh t
0000B0: 68 65 20 65 6E 74 69 72 65 0D 0A 09 73 63 72 65 he entire...scre
0000C0: 65 6E 20 77 69 74 68 20 63 61 6C 6C 73 20 74 6F en with calls to
0000D0: 20 44 69 73 70 6C 61 79 46 69 6C 65 20 61 66 74 DisplayFile aft
0000E0: 65 72 20 61 20 63 61 6C 6C 20 74 6F 20 74 68 69 er a call to thi
0000F0: 73 0D 0A 09 72 6F 75 74 69 6E 65 2A 29 0D 0A 56 s...routine*)..V
000100: 41 52 09 6A 2C 6B 3A 43 41 52 44 49 4E 41 4C 3B AR.j,k:CARDINAL;
000110: 0D 0A 09 0D 0A 42 45 47 49 4E 0D 0A 09 57 69 6E .....BEGIN...Win
000120: 64 6F 77 73 3A 3D 69 3B 0D 0A 09 53 63 72 65 65 dows:=i;...Scree
000130: 6E 43 6F 6E 74 72 6F 6C 28 43 6C 65 61 72 53 63 nControl(ClearSc
000140: 72 65 65 6E 29 3B 0D 0A 09 49 46 20 57 69 6E 64 reen);...IF Wind
000150: 6F 77 73 3E 31 20 54 48 45 4E 0D 0A 09 09 4C 69 ows>1 THEN....Li
000160: 6E 65 73 50 65 72 57 69 6E 64 6F 77 3A 3D 28 53 nesPerWindow:=(S
000170: 63 72 65 65 6E 44 65 70 74 68 2D 57 69 6E 64 6F creenDepth-Windo
000180: 77 73 29 20 44 49 56 20 57 69 6E 64 6F 77 73 3B ws) DIV Windows;
000190: 0D 0A 09 45 4C 53 45 09 4C 69 6E 65 73 50 65 72 ...ELSE.LinesPer
0001A0: 57 69 6E 64 6F 77 3A 3D 53 63 72 65 65 6E 44 65 Window:=ScreenDe
0001B0: 70 74 68 2D 31 20 45 4E 44 3B 0D 0A 09 46 4F 52 pth-1 END;...FOR
0001C0: 20 6A 3A 3D 32 20 54 4F 20 57 69 6E 64 6F 77 73 j:=2 TO Windows
0001D0: 20 44 4F 0D 0A 09 09 47 6F 74 6F 78 79 28 30 2C DO....Gotoxy(0,
0001E0: 28 4C 69 6E 65 73 50 65 72 57 69 6E 64 6F 77 2B (LinesPerWindow+
0001F0: 31 29 2A 28 6A 2D 31 29 2D 31 29 3B 0D 0A 09 09 1)*(j-1)-1);....
Size : 512 (Real : 512)
000000: 6E 3A 43 41 52 44 49 4E 41 4C 29 3A 42 4F 4F 4C n:CARDINAL):BOOL
000010: 45 41 4E 3B 0D 0A 0D 0A 28 2A 09 73 65 61 72 63 EAN;....(*.searc
000020: 68 20 66 6F 72 20 73 74 72 69 6E 67 20 61 6E 64 h for string and
000030: 20 72 65 70 6C 61 63 65 20 69 66 20 66 6F 75 6E replace if foun
000040: 64 2A 29 0D 0A 56 41 52 09 62 3A 42 4F 4F 4C 45 d*)..VAR.b:BOOLE
000050: 41 4E 3B 0D 0A 09 46 6F 75 6E 64 3A 42 4F 4F 4C AN;...Found:BOOL
000060: 45 41 4E 3B 0D 0A 42 45 47 49 4E 0D 0A 09 62 3A EAN;..BEGIN...b:
000070: 3D 4C 65 6E 3E 31 32 38 3B 0D 0A 09 49 46 20 62 =Len>128;...IF b
000080: 20 54 48 45 4E 20 4C 65 6E 3A 3D 4C 65 6E 2D 31 THEN Len:=Len-1
000090: 32 38 20 45 4E 44 3B 0D 0A 09 46 6F 75 6E 64 3A 28 END;...Found:
0000A0: 3D 46 69 6E 64 53 74 72 69 6E 67 28 43 75 72 46 =FindString(CurF
0000B0: 69 6C 65 50 74 72 5E 2C 62 29 3B 0D 0A 09 49 46 ilePtr^,b);...IF
0000C0: 20 46 6F 75 6E 64 20 41 4E 44 20 28 52 4C 65 6E Found AND (RLen
0000D0: 3E 3D 30 29 20 54 48 45 4E 0D 0A 09 09 4D 61 72 >=0) THEN....Mar
0000E0: 6B 41 73 55 70 64 61 74 65 64 3B 0D 0A 09 09 44 kAsUpdated;....D
0000F0: 65 6C 43 68 61 72 73 28 43 75 72 46 69 6C 65 50 elChars(CurFileP
000100: 74 72 5E 2C 4C 65 6E 29 20 0D 0A 09 09 49 6E 73 tr^,Len) ....Ins
000110: 43 68 61 72 73 28 43 75 72 46 69 6C 65 50 74 72 Chars(CurFilePtr
000120: 5E 2C 52 65 70 6C 61 63 65 2C 52 4C 65 6E 29 3B ^,Replace,RLen);
000130: 0D 0A 09 09 62 3A 3D 42 61 63 6B 4F 6E 65 43 68 ....b:=BackOneCh
000140: 61 72 28 43 75 72 46 69 6C 65 50 74 72 5E 29 3B ar(CurFilePtr^);
000150: 0D 0A 09 09 45 4E 44 3B 0D 0A 09 52 65 44 69 73 ....END;...ReDis
000160: 70 6C 61 79 3B 0D 0A 09 52 45 54 55 52 4E 20 46 play;...RETURN F
000170: 6F 75 6E 64 3B 0D 0A 09 45 4E 44 20 53 65 61 72 ound;...END Sear
000180: 63 68 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 47 ch;..PROCEDURE G
000190: 6F 54 6F 4C 61 62 65 6C 28 63 68 3A 43 48 41 52 oToLabel(ch:CHAR
0001A0: 29 3B 0D 0A 42 45 47 49 4E 0D 0A 09 49 46 20 4C );..BEGIN...IF L
0001B0: 61 62 65 6C 4F 70 28 43 75 72 46 69 6C 65 50 74 abelOp(CurFilePt
0001C0: 72 5E 2C 46 41 4C 53 45 2C 63 68 29 20 54 48 45 r^,FALSE,ch) THE
0001D0: 4E 0D 0A 09 09 52 65 44 69 73 70 6C 61 79 3B 0D N....ReDisplay;.
0001E0: 0A 09 45 4C 53 45 0D 0A 09 09 45 72 72 6F 72 4D ..ELSE....ErrorM
0001F0: 65 73 73 61 67 65 28 27 20 4C 61 62 65 6C 20 6E essage(' Label n
Size : 512 (Real : 512)
000000: 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C 28 53 74 ScreenControl(St
000010: 61 72 74 47 72 61 70 68 29 3B 0D 0A 09 09 46 4F artGraph);....FO
000020: 52 20 6B 3A 3D 31 20 54 4F 20 53 63 72 65 65 6E R k:=1 TO Screen
000030: 57 69 64 74 68 20 44 4F 20 0D 0A 09 09 09 53 63 Width DO .....Sc
000040: 72 65 65 6E 43 6F 6E 74 72 6F 6C 28 48 6F 72 69 reenControl(Hori
000050: 7A 6F 6E 74 61 6C 29 3B 0D 0A 09 09 09 45 4E 44 zontal);.....END
000060: 3B 0D 0A 09 09 53 63 72 65 65 6E 43 6F 6E 74 72 ;....ScreenContr
000070: 6F 6C 28 45 6E 64 47 72 61 70 68 29 3B 0D 0A 09 ol(EndGraph);...
000080: 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 53 65 74 57 .END;...END SetW
000090: 69 6E 64 6F 77 73 3B 0D 0A 09 28 2A 70 75 74 20 indows;...(*put
0000A0: 61 20 6C 69 6E 65 20 62 65 74 77 65 65 6E 20 74 a line between t
0000B0: 68 65 20 77 69 6E 64 6F 77 73 2A 29 0D 0A 0D 0A he windows*)....
0000C0: 56 41 52 09 63 68 3A 43 48 41 52 3B 0D 0A 09 70 VAR.ch:CHAR;...p
0000D0: 6F 73 3A 50 6F 73 69 74 69 6F 6E 3B 0D 0A 09 63 os:Position;...c
0000E0: 68 61 72 73 69 6E 2C 69 63 3A 49 4E 54 45 47 45 harsin,ic:INTEGE
0000F0: 52 3B 0D 0A 09 6C 65 6E 2C 6D 6F 76 65 64 3A 49 R;...len,moved:I
000100: 4E 54 45 47 45 52 3B 0D 0A 09 6C 69 6E 65 70 6F NTEGER;...linepo
000110: 73 2C 4C 65 66 74 4D 61 72 67 3A 43 41 52 44 49 s,LeftMarg:CARDI
000120: 4E 41 4C 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 NAL;..PROCEDURE
000130: 53 65 74 4C 65 66 74 4D 61 72 67 28 66 3A 45 64 SetLeftMarg(f:Ed
000140: 69 74 46 69 6C 65 3B 77 69 6E 64 6F 77 3A 49 4E itFile;window:IN
000150: 54 45 47 45 52 3B 56 41 52 20 63 75 72 78 2C 63 TEGER;VAR curx,c
000160: 75 72 79 3A 43 41 52 44 49 4E 41 4C 29 3B 0D 0A ury:CARDINAL);..
000170: 42 45 47 49 4E 0D 0A 09 52 65 74 72 6C 69 6E 65 BEGIN...Retrline
000180: 28 66 2C 6C 65 6E 2C 63 68 61 72 73 69 6E 2C 70 (f,len,charsin,p
000190: 6F 73 2C 6D 6F 76 65 64 2C 30 29 3B 0D 0A 09 6C os,moved,0);...l
0001A0: 69 6E 65 70 6F 73 3A 3D 30 3B 0D 0A 09 46 4F 52 inepos:=0;...FOR
0001B0: 20 69 63 3A 3D 30 20 54 4F 20 63 68 61 72 73 69 ic:=0 TO charsi
0001C0: 6E 20 44 4F 0D 0A 09 09 52 65 61 64 4E 65 78 74 n DO....ReadNext
0001D0: 43 68 61 72 28 70 6F 73 2C 63 68 29 3B 0D 0A 09 Char(pos,ch);...
0001E0: 09 49 46 20 63 68 3D 30 39 78 20 54 48 45 4E 20 .IF ch=09x THEN
0001F0: 6C 69 6E 65 70 6F 73 3A 3D 49 41 4E 44 28 6C 69 linepos:=IAND(li
Size : 512 (Real : 512)
000000: 6F 74 20 64 65 66 69 6E 65 64 27 2C 27 20 27 29 ot defined',' ')
000010: 3B 0D 0A 09 09 52 65 73 65 74 50 6F 73 3B 0D 0A ;....ResetPos;..
000020: 09 09 45 4E 44 3B 0D 0A 09 45 4E 44 20 47 6F 54 ..END;...END GoT
000030: 6F 4C 61 62 65 6C 3B 09 09 0D 0A 42 45 47 49 4E oLabel;....BEGIN
000040: 0D 0A 09 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 ...CurrentWindow
000050: 3A 3D 30 3B 0D 0A 09 43 75 72 72 65 6E 74 46 69 :=0;...CurrentFi
000060: 6C 65 3A 3D 30 3B 0D 0A 09 43 75 72 46 69 6C 65 le:=0;...CurFile
000070: 50 74 72 3A 3D 50 45 64 69 74 46 69 6C 65 28 41 Ptr:=PEditFile(A
000080: 44 52 28 46 69 6C 65 73 5B 31 5D 29 29 3B 0D 0A DR(Files[1]));..
000090: 09 45 4E 44 20 45 64 69 74 43 6F 6E 74 72 6F 6C .END EditControl
0000A0: 2E 0D 0A 0D 0A 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0000B0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0000C0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0000D0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0000E0: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
0000F0: 1A 1A 1A 1A 1A 1A FF 0F 00 00 00 00 00 00 00 00 ................
000100: 0D 0A 0D 0A 09 54 68 69 73 20 76 65 72 73 69 6F .....This versio
000110: 6E 20 77 69 6C 6C 20 6E 6F 74 20 73 63 72 6F 6C n will not scrol
000120: 6C 20 74 68 65 20 73 63 72 65 65 6E 20 65 69 74 l the screen eit
000130: 68 65 72 0D 0A 2A 29 0D 0A 0D 0A 46 52 4F 4D 20 her..*)....FROM
000140: 54 65 72 6D 69 6E 61 6C 20 49 4D 50 4F 52 54 20 Terminal IMPORT
000150: 43 68 61 72 52 6F 75 74 69 6E 65 2C 43 68 61 72 CharRoutine,Char
000160: 45 6E 61 62 6C 65 64 2C 42 6C 69 6E 6B 52 6F 75 Enabled,BlinkRou
000170: 74 69 6E 65 2C 42 6C 69 6E 6B 45 6E 61 62 6C 65 tine,BlinkEnable
000180: 64 3B 0D 0A 46 52 4F 4D 20 46 61 73 74 4D 6F 76 d;..FROM FastMov
000190: 65 20 49 4D 50 4F 52 54 20 4D 6F 76 65 75 70 2C e IMPORT Moveup,
0001A0: 4D 6F 76 65 64 6F 77 6E 3B 0D 0A 46 52 4F 4D 20 Movedown;..FROM
0001B0: 53 59 53 54 45 4D 20 49 4D 50 4F 52 54 20 41 44 SYSTEM IMPORT AD
0001C0: 52 2C 53 49 5A 45 3B 0D 0A 46 52 4F 4D 20 43 50 R,SIZE;..FROM CP
0001D0: 4D 20 49 4D 50 4F 52 54 20 77 63 63 66 63 2C 42 M IMPORT wccfc,B
0001E0: 44 4F 53 3B 0D 0A 28 2A 46 52 4F 4D 20 4F 73 62 DOS;..(*FROM Osb
0001F0: 6F 72 6E 65 20 49 4D 50 4F 52 54 20 42 61 6E 6B orne IMPORT Bank
Size : 512 (Real : 512)
000000: 6E 65 70 6F 73 2B 38 2C 30 66 66 66 38 68 29 0D nepos+8,0fff8h).
000010: 0A 09 09 45 4C 53 45 20 49 4E 43 28 6C 69 6E 65 ...ELSE INC(line
000020: 70 6F 73 29 20 45 4E 44 3B 0D 0A 09 09 45 4E 44 pos) END;....END
000030: 3B 0D 0A 09 4C 65 66 74 4D 61 72 67 3A 3D 30 3B ;...LeftMarg:=0;
000040: 0D 0A 09 57 48 49 4C 45 20 6C 69 6E 65 70 6F 73 ...WHILE linepos
000050: 3E 28 4C 65 66 74 4D 61 72 67 2B 53 63 72 65 65 >(LeftMarg+Scree
000060: 6E 57 69 64 74 68 29 20 44 4F 0D 0A 09 09 4C 65 nWidth) DO....Le
000070: 66 74 4D 61 72 67 3A 3D 4C 65 66 74 4D 61 72 67 ftMarg:=LeftMarg
000080: 2B 33 32 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 4C +32;....END;...L
000090: 65 66 74 4D 61 72 67 69 6E 5B 77 69 6E 64 6F 77 eftMargin[window
0000A0: 5D 3A 3D 4C 65 66 74 4D 61 72 67 3B 0D 0A 09 45 ]:=LeftMarg;...E
0000B0: 4E 44 20 53 65 74 4C 65 66 74 4D 61 72 67 3B 0D ND SetLeftMarg;.
0000C0: 0A 50 52 4F 43 45 44 55 52 45 20 44 69 73 70 6C .PROCEDURE Displ
0000D0: 61 79 46 69 6C 65 28 66 3A 45 64 69 74 46 69 6C ayFile(f:EditFil
0000E0: 65 3B 77 69 6E 64 6F 77 3A 49 4E 54 45 47 45 52 e;window:INTEGER
0000F0: 3B 56 41 52 20 63 75 72 78 2C 63 75 72 79 3A 43 ;VAR curx,cury:C
000100: 41 52 44 49 4E 41 4C 29 3B 0D 0A 0D 0A 28 2A 09 ARDINAL);....(*.
000110: 72 65 64 69 73 70 6C 61 79 20 61 73 20 6D 75 63 redisplay as muc
000120: 68 20 74 65 78 74 20 61 73 20 77 69 6C 6C 20 66 h text as will f
000130: 69 74 20 69 6E 20 74 68 65 20 77 69 6E 64 6F 77 it in the window
000140: 0D 0A 09 66 6F 72 20 74 68 65 20 67 69 76 65 6E ...for the given
000150: 20 66 69 6C 65 20 73 74 61 72 74 69 6E 67 20 61 file starting a
000160: 74 20 74 68 65 20 63 75 72 72 65 6E 74 20 70 6F t the current po
000170: 73 69 74 69 6F 6E 20 69 6E 20 74 68 65 20 66 69 sition in the fi
000180: 6C 65 2A 29 0D 0A 56 41 52 09 69 2C 6A 2C 6B 2C le*)..VAR.i,j,k,
000190: 6C 69 6E 65 70 6F 73 3A 43 41 52 44 49 4E 41 4C linepos:CARDINAL
0001A0: 3B 0D 0A 09 6D 6F 76 65 64 6F 6E 65 3A 49 4E 54 ;...movedone:INT
0001B0: 45 47 45 52 3B 09 0D 0A 09 73 74 61 72 74 6C 69 EGER;....startli
0001C0: 6E 65 3A 49 4E 54 45 47 45 52 3B 20 28 2A 66 69 ne:INTEGER; (*fi
0001D0: 72 73 74 20 6C 69 6E 65 20 6F 66 20 77 69 6E 64 rst line of wind
0001E0: 6F 77 2A 29 0D 0A 42 45 47 49 4E 0D 0A 09 4C 65 ow*)..BEGIN...Le
0001F0: 66 74 4D 61 72 67 3A 3D 4C 65 66 74 4D 61 72 67 ftMarg:=LeftMarg
Size : 512 (Real : 512)
000000: 28 2A 09 54 68 69 73 20 69 73 20 74 68 65 20 64 (*.This is the d
000010: 75 6D 62 20 73 63 72 65 65 6E 20 76 65 72 73 69 umb screen versi
000020: 6F 6E 20 6F 66 20 45 64 69 74 44 69 73 70 6C 61 on of EditDispla
000030: 79 0D 0A 0D 0A 09 49 74 20 75 73 65 73 20 77 72 y.....It uses wr
000040: 69 74 65 73 20 6F 66 20 62 6C 61 6E 6B 73 20 74 ites of blanks t
000050: 6F 20 63 6C 65 61 72 20 74 68 65 20 72 65 73 74 o clear the rest
000060: 20 6F 66 20 65 61 63 68 20 6C 69 6E 65 20 69 6E of each line in
000070: 73 74 65 61 64 20 6F 66 0D 0A 09 44 65 6C 65 74 stead of...Delet
000080: 65 20 74 6F 20 45 4F 4C 20 2A 29 0D 0A 0D 0A 0D e to EOL *).....
000090: 0A 49 4D 50 4C 45 4D 45 4E 54 41 54 49 4F 4E 20 .IMPLEMENTATION
0000A0: 4D 4F 44 55 4C 45 20 45 64 69 74 44 69 73 70 6C MODULE EditDispl
0000B0: 61 79 3B 0D 0A 28 2A 09 44 69 73 70 6C 61 79 20 ay;..(*.Display
0000C0: 70 61 72 74 20 6F 66 20 61 20 66 69 6C 65 20 62 part of a file b
0000D0: 65 69 6E 67 20 65 64 69 74 65 64 2A 29 0D 0A 46 eing edited*)..F
0000E0: 52 4F 4D 09 53 43 52 45 45 4E 49 4F 20 49 4D 50 ROM.SCREENIO IMP
0000F0: 4F 52 54 20 47 6F 74 6F 78 79 2C 53 63 72 65 65 ORT Gotoxy,Scree
000100: 6E 43 6F 6E 74 72 6F 6C 2C 0D 0A 09 09 09 4D 61 nControl,.....Ma
000110: 64 65 43 68 61 6E 67 65 2C 53 63 72 65 65 6E 57 deChange,ScreenW
000120: 69 64 74 68 2C 53 63 72 65 65 6E 44 65 70 74 68 idth,ScreenDepth
000130: 3B 0D 0A 46 52 4F 4D 20 09 54 65 72 6D 69 6E 61 ;..FROM .Termina
000140: 6C 20 49 4D 50 4F 52 54 20 57 72 69 74 65 53 74 l IMPORT WriteSt
000150: 72 69 6E 67 2C 57 72 69 74 65 2C 57 72 69 74 65 ring,Write,Write
000160: 4C 6E 2C 52 65 61 64 2C 3B 0D 0A 46 52 4F 4D 20 Ln,Read,;..FROM
000170: 09 4D 61 6B 65 45 64 69 74 73 20 49 4D 50 4F 52 .MakeEdits IMPOR
000180: 54 20 50 6F 73 69 74 69 6F 6E 2C 52 65 74 72 6C T Position,Retrl
000190: 69 6E 65 2C 52 65 61 64 4E 65 78 74 43 68 61 72 ine,ReadNextChar
0001A0: 2C 45 72 72 6F 72 4C 69 73 74 2C 45 72 72 6F 72 ,ErrorList,Error
0001B0: 43 6F 75 6E 74 2C 4C 61 62 65 6C 4F 70 3B 0D 0A Count,LabelOp;..
0001C0: 46 52 4F 4D 09 45 64 69 74 43 6F 6E 74 20 49 4D FROM.EditCont IM
0001D0: 50 4F 52 54 20 4C 65 66 74 4D 61 72 67 69 6E 2C PORT LeftMargin,
0001E0: 46 69 6C 65 73 2C 43 75 72 72 65 6E 74 57 69 6E Files,CurrentWin
0001F0: 64 6F 77 2C 43 75 72 72 65 6E 74 46 69 6C 65 2C dow,CurrentFile,
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: 2E 44 41 54 20 27 2C 72 65 70 6C 79 29 3B 0D 0A .DAT ',reply);..
000010: 0D 0A 09 28 2A 4C 6F 6F 6B 75 70 20 6F 70 65 6E ...(*Lookup open
000020: 73 20 74 68 65 20 66 69 6C 65 20 66 6F 72 20 69 s the file for i
000030: 6E 70 75 74 2F 6F 75 74 70 75 74 0D 0A 09 20 20 nput/output...
000040: 72 65 70 6C 79 20 72 65 74 75 72 6E 73 20 7A 65 reply returns ze
000050: 72 6F 20 69 66 20 6E 6F 20 66 69 6C 65 20 69 73 ro if no file is
000060: 20 66 6F 75 6E 64 0D 0A 09 20 20 61 20 64 65 76 found... a dev
000070: 69 63 65 20 6E 61 6D 65 20 63 61 6E 20 62 65 20 ice name can be
000080: 75 73 65 64 20 69 6E 20 66 72 6F 6E 74 20 6F 66 used in front of
000090: 20 74 68 65 20 66 69 6C 65 20 6E 61 6D 65 0D 0A the file name..
0000A0: 09 20 49 6E 20 66 61 63 74 2C 20 79 6F 75 20 63 . In fact, you c
0000B0: 61 6E 20 75 73 65 20 61 20 6E 6F 6E 2D 64 69 73 an use a non-dis
0000C0: 63 20 66 69 6C 65 20 6E 61 6D 65 20 28 65 67 20 c file name (eg
0000D0: 50 55 4E 3A 20 6F 72 20 43 4F 4E 3A 29 0D 0A 09 PUN: or CON:)...
0000E0: 20 62 75 74 20 69 66 20 79 6F 75 20 64 6F 20 74 but if you do t
0000F0: 68 69 73 2C 20 79 6F 75 20 6D 75 73 74 20 64 6F his, you must do
000100: 20 79 6F 75 72 20 49 4F 20 74 68 72 6F 75 67 68 your IO through
000110: 20 74 68 65 20 6D 6F 64 75 6C 65 0D 0A 09 20 53 the module... S
000120: 74 72 65 61 6D 73 20 28 6F 72 20 49 6E 4F 75 74 treams (or InOut
000130: 2C 20 77 68 69 63 68 20 63 61 6C 6C 73 20 73 74 , which calls st
000140: 72 65 61 6D 73 29 2C 20 61 73 20 74 68 65 20 49 reams), as the I
000150: 4F 20 74 6F 20 74 68 65 0D 0A 09 20 73 65 72 69 O to the... seri
000160: 61 6C 20 64 65 76 69 63 65 73 20 69 73 20 70 65 al devices is pe
000170: 72 66 6F 72 6D 65 64 20 62 79 20 74 68 61 74 20 rformed by that
000180: 6D 6F 64 75 6C 65 20 28 69 74 20 63 61 6C 6C 73 module (it calls
000190: 20 46 69 6C 65 73 0D 0A 09 20 74 6F 20 64 6F 20 Files... to do
0001A0: 49 4F 20 74 6F 20 64 69 73 63 20 64 65 76 69 63 IO to disc devic
0001B0: 65 73 29 0D 0A 2A 29 0D 0A 09 49 46 20 72 65 70 es)..*)...IF rep
0001C0: 6C 79 3D 30 20 54 48 45 4E 09 09 28 2A 4F 4B 20 ly=0 THEN..(*OK
0001D0: 2D 20 66 69 6C 65 20 66 6F 75 6E 64 2A 29 0D 0A - file found*)..
0001E0: 09 09 0D 0A 0D 0A 09 09 28 2A 72 65 61 64 20 74 ........(*read t
0001F0: 68 65 20 66 69 72 73 74 20 31 20 6F 72 20 74 77 he first 1 or tw
Size : 512 (Real : 512)
000000: 68 65 63 6B 20 66 6F 72 20 63 75 72 73 6F 72 20 heck for cursor
000010: 6C 69 6E 65 2A 29 0D 0A 0D 0A 09 09 09 52 65 61 line*).......Rea
000020: 64 4E 65 78 74 43 68 61 72 28 70 6F 73 2C 63 68 dNextChar(pos,ch
000030: 29 3B 0D 0A 09 09 09 49 46 20 63 68 3D 30 39 78 );.....IF ch=09x
000040: 20 54 48 45 4E 20 0D 0A 09 09 09 09 52 45 50 45 THEN ......REPE
000050: 41 54 0D 0A 09 09 09 09 09 49 4E 43 28 6C 69 6E AT.......INC(lin
000060: 65 70 6F 73 29 3B 0D 0A 09 09 09 09 09 49 46 20 epos);.......IF
000070: 28 6C 69 6E 65 70 6F 73 3E 4C 65 66 74 4D 61 72 (linepos>LeftMar
000080: 67 29 20 0D 0A 09 09 09 09 09 41 4E 44 20 28 6C g) .......AND (l
000090: 69 6E 65 70 6F 73 3C 28 53 63 72 65 65 6E 57 69 inepos<(ScreenWi
0000A0: 64 74 68 2B 4C 65 66 74 4D 61 72 67 29 29 20 54 dth+LeftMarg)) T
0000B0: 48 45 4E 20 0D 0A 09 09 09 09 09 09 57 72 69 74 HEN ........Writ
0000C0: 65 28 27 20 27 29 20 0D 0A 09 09 09 09 09 09 45 e(' ') ........E
0000D0: 4E 44 3B 0D 0A 09 09 09 09 09 55 4E 54 49 4C 20 ND;.......UNTIL
0000E0: 49 41 4E 44 28 6C 69 6E 65 70 6F 73 2C 37 29 3D IAND(linepos,7)=
0000F0: 30 3B 0D 0A 09 09 09 45 4C 53 49 46 20 63 68 3D 0;.....ELSIF ch=
000100: 45 4F 46 20 54 48 45 4E 20 45 58 49 54 0D 0A 09 EOF THEN EXIT...
000110: 09 09 45 4C 53 45 20 0D 0A 09 09 09 09 49 4E 43 ..ELSE ......INC
000120: 28 6C 69 6E 65 70 6F 73 29 3B 0D 0A 09 09 09 09 (linepos);......
000130: 49 46 20 28 6C 69 6E 65 70 6F 73 3E 4C 65 66 74 IF (linepos>Left
000140: 4D 61 72 67 29 0D 0A 09 09 09 09 41 4E 44 20 28 Marg)......AND (
000150: 6C 69 6E 65 70 6F 73 3C 28 53 63 72 65 65 6E 57 linepos<(ScreenW
000160: 69 64 74 68 2B 4C 65 66 74 4D 61 72 67 29 29 20 idth+LeftMarg))
000170: 54 48 45 4E 20 0D 0A 09 09 09 09 09 57 72 69 74 THEN .......Writ
000180: 65 28 63 68 29 20 0D 0A 09 09 09 09 09 45 4E 44 e(ch) .......END
000190: 3B 0D 0A 09 09 09 09 45 4E 44 3B 28 2A 49 46 20 ;......END;(*IF
0001A0: 63 68 3D 76 61 72 69 6F 75 73 20 74 68 69 6E 67 ch=various thing
0001B0: 73 2A 29 0D 0A 09 09 09 45 4E 44 20 28 2A 69 6E s*).....END (*in
0001C0: 6E 65 72 20 6C 6F 6F 70 2A 29 3B 0D 0A 09 09 49 ner loop*);....I
0001D0: 4E 43 28 69 29 3B 0D 0A 09 09 49 46 20 6C 69 6E NC(i);....IF lin
0001E0: 65 70 6F 73 3E 3D 4C 65 66 74 4D 61 72 67 20 54 epos>=LeftMarg T
0001F0: 48 45 4E 0D 0A 09 09 09 43 6C 65 61 72 54 6F 45 HEN.....ClearToE
Size : 512 (Real : 512)
000000: 6F 20 62 6C 6F 63 6B 73 20 6F 66 20 74 68 65 20 o blocks of the
000010: 65 72 72 6F 72 20 0D 0A 09 09 20 20 6D 65 73 73 error .... mess
000020: 61 67 65 20 66 69 6C 65 2C 20 63 6F 75 6E 74 69 age file, counti
000030: 6E 20 74 68 65 20 63 68 61 72 61 63 74 65 72 73 n the characters
000040: 20 70 72 65 63 65 64 69 6E 67 20 74 68 65 0D 0A preceding the..
000050: 09 09 20 20 65 72 72 6F 72 20 65 6D 73 73 61 67 .. error emssag
000060: 65 20 77 65 20 77 61 6E 74 20 2A 29 0D 0A 09 09 e we want *)....
000070: 52 65 61 64 42 6C 6F 63 6B 28 66 2C 41 44 52 28 ReadBlock(f,ADR(
000080: 62 29 2C 30 2C 31 32 38 2C 72 65 70 6C 79 29 3B b),0,128,reply);
000090: 0D 0A 09 09 6A 3A 3D 45 72 72 6F 72 4E 75 6D 62 ....j:=ErrorNumb
0000A0: 65 72 3B 0D 0A 09 09 49 46 20 45 72 72 6F 72 4E er;....IF ErrorN
0000B0: 75 6D 62 65 72 3E 31 32 38 20 54 48 45 4E 0D 0A umber>128 THEN..
0000C0: 09 09 09 69 3A 3D 43 6F 75 6E 74 28 31 32 38 29 ...i:=Count(128)
0000D0: 3B 0D 0A 09 09 09 52 65 61 64 42 6C 6F 63 6B 28 ;.....ReadBlock(
0000E0: 66 2C 41 44 52 28 62 29 2C 31 2C 31 32 38 2C 72 f,ADR(b),1,128,r
0000F0: 65 70 6C 79 29 3B 0D 0A 09 09 09 6A 3A 3D 6A 2D eply);.....j:=j-
000100: 31 32 38 0D 0A 09 09 45 4C 53 45 0D 0A 09 09 09 128....ELSE.....
000110: 69 3A 3D 30 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A i:=0;.....END;..
000120: 09 09 69 3A 3D 69 2B 43 6F 75 6E 74 28 6A 2D 31 ..i:=i+Count(j-1
000130: 29 3B 0D 0A 09 09 4C 65 6E 67 74 68 3A 3D 4F 52 );....Length:=OR
000140: 44 28 62 5B 6A 2D 31 5D 29 3B 0D 0A 09 09 6A 3A D(b[j-1]);....j:
000150: 3D 69 20 44 49 56 20 31 32 38 3B 20 28 2A 62 6C =i DIV 128; (*bl
000160: 6F 63 6B 20 74 6F 20 72 65 61 64 2A 29 0D 0A 09 ock to read*)...
000170: 09 69 3A 3D 69 20 2D 20 31 32 38 2A 6A 3B 20 28 .i:=i - 128*j; (
000180: 2A 6F 66 66 73 65 74 20 6F 66 20 66 69 72 73 74 *offset of first
000190: 20 63 68 61 72 61 63 74 65 72 20 69 6E 20 62 6C character in bl
0001A0: 6F 63 6B 2A 29 0D 0A 09 09 52 65 61 64 42 6C 6F ock*)....ReadBlo
0001B0: 63 6B 28 66 2C 41 44 52 28 62 29 2C 6A 2B 32 2C ck(f,ADR(b),j+2,
0001C0: 31 32 38 2C 72 65 70 6C 79 29 3B 0D 0A 09 09 46 128,reply);....F
0001D0: 4F 52 20 6B 3A 3D 30 20 54 4F 20 4C 65 6E 67 74 OR k:=0 TO Lengt
0001E0: 68 2D 31 20 44 4F 0D 0A 09 09 09 49 46 20 69 3D h-1 DO.....IF i=
0001F0: 31 32 38 20 54 48 45 4E 20 0D 0A 09 09 09 09 49 128 THEN ......I
Size : 512 (Real : 512)
000000: 6E 64 28 6C 69 6E 65 70 6F 73 2B 31 2D 4C 65 66 nd(linepos+1-Lef
000010: 74 4D 61 72 67 29 3B 0D 0A 09 09 45 4C 53 45 0D tMarg);....ELSE.
000020: 0A 09 09 09 43 6C 65 61 72 54 6F 45 6E 64 28 31 ....ClearToEnd(1
000030: 29 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 49 46 ).....END;....IF
000040: 20 69 3D 4C 69 6E 65 73 50 65 72 57 69 6E 64 6F i=LinesPerWindo
000050: 77 20 54 48 45 4E 20 45 58 49 54 0D 0A 09 09 45 w THEN EXIT....E
000060: 4C 53 45 20 0D 0A 09 09 09 57 72 69 74 65 4C 6E LSE .....WriteLn
000070: 3B 0D 0A 09 09 09 6C 69 6E 65 70 6F 73 3A 3D 30 ;.....linepos:=0
000080: 3B 0D 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 49 4E ;.....END;....IN
000090: 43 28 6D 6F 76 65 64 29 3B 09 0D 0A 09 09 52 65 C(moved);.....Re
0000A0: 74 72 6C 69 6E 65 28 66 2C 6C 65 6E 2C 69 63 2C trline(f,len,ic,
0000B0: 70 6F 73 2C 6D 6F 76 65 64 6F 6E 65 2C 31 29 3B pos,movedone,1);
0000C0: 0D 0A 09 09 49 46 20 6D 6F 76 65 64 6F 6E 65 3D ....IF movedone=
0000D0: 30 20 54 48 45 4E 0D 0A 09 09 09 46 4F 52 20 69 0 THEN.....FOR i
0000E0: 3A 3D 69 2B 31 20 54 4F 20 4C 69 6E 65 73 50 65 :=i+1 TO LinesPe
0000F0: 72 57 69 6E 64 6F 77 20 44 4F 0D 0A 09 09 09 09 rWindow DO......
000100: 43 6C 65 61 72 54 6F 45 6E 64 28 31 29 3B 0D 0A ClearToEnd(1);..
000110: 09 09 09 09 57 72 69 74 65 4C 6E 3B 0D 0A 09 09 ....WriteLn;....
000120: 09 09 45 4E 44 3B 0D 0A 09 09 09 45 58 49 54 0D ..END;.....EXIT.
000130: 0A 09 09 09 45 4E 44 0D 0A 09 09 45 4E 44 3B 28 ....END....END;(
000140: 2A 4C 4F 4F 50 2A 29 0D 0A 09 45 4E 44 20 44 69 *LOOP*)...END Di
000150: 73 70 6C 61 79 46 69 6C 65 3B 0D 0A 50 52 4F 43 splayFile;..PROC
000160: 45 44 55 52 45 20 44 69 73 70 6C 61 79 45 72 72 EDURE DisplayErr
000170: 6F 72 3B 0D 0A 0D 0A 28 2A 09 54 68 65 20 65 72 or;....(*.The er
000180: 72 6F 72 20 6D 65 73 73 61 67 65 20 66 69 6C 65 ror message file
000190: 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 6D 65 contains the me
0001A0: 73 73 61 67 65 73 2C 20 0D 0A 0D 0A 09 54 68 65 ssages, .....The
0001B0: 20 66 69 72 73 74 20 74 77 6F 20 62 6C 6F 63 6B first two block
0001C0: 73 20 67 69 76 65 20 74 68 65 20 6C 65 6E 67 74 s give the lengt
0001D0: 68 73 20 6F 66 20 74 68 65 20 65 72 72 6F 72 20 hs of the error
0001E0: 6D 65 73 73 61 67 65 73 0D 0A 09 54 68 65 20 72 messages...The r
0001F0: 65 6D 61 69 6E 69 6E 67 20 62 6C 6F 63 6B 73 20 emaining blocks
Size : 512 (Real : 512)
000000: 4E 43 28 6A 29 3B 0D 0A 09 09 09 09 52 65 61 64 NC(j);......Read
000010: 42 6C 6F 63 6B 28 66 2C 41 44 52 28 62 29 2C 6A Block(f,ADR(b),j
000020: 2B 32 2C 31 32 38 2C 72 65 70 6C 79 29 20 0D 0A +2,128,reply) ..
000030: 09 09 09 09 69 3A 3D 30 3B 0D 0A 09 09 09 09 45 ....i:=0;......E
000040: 4E 44 3B 0D 0A 09 09 09 74 5B 6B 5D 3A 3D 62 5B ND;.....t[k]:=b[
000050: 69 5D 3B 0D 0A 09 09 09 49 4E 43 28 69 29 3B 0D i];.....INC(i);.
000060: 0A 09 09 09 45 4E 44 3B 0D 0A 09 09 74 5B 4C 65 ....END;....t[Le
000070: 6E 67 74 68 5D 3A 3D 30 63 3B 0D 0A 09 09 57 72 ngth]:=0c;....Wr
000080: 69 74 65 53 74 72 69 6E 67 28 74 29 3B 0D 0A 09 iteString(t);...
000090: 45 4C 53 45 0D 0A 09 09 57 72 69 74 65 53 74 72 ELSE....WriteStr
0000A0: 69 6E 67 28 27 20 43 6F 75 6C 64 20 6E 6F 74 20 ing(' Could not
0000B0: 6F 70 65 6E 20 65 72 72 6F 72 20 6D 65 73 73 61 open error messa
0000C0: 67 65 73 20 66 69 6C 65 27 29 3B 0D 0A 09 09 45 ges file');....E
0000D0: 4E 44 3B 0D 0A 09 62 6C 3A 3D 4C 61 62 65 6C 4F ND;...bl:=LabelO
0000E0: 70 28 46 69 6C 65 73 5B 43 75 72 72 65 6E 74 46 p(Files[CurrentF
0000F0: 69 6C 65 5D 2C 46 41 4C 53 45 2C 43 48 52 28 45 ile],FALSE,CHR(E
000100: 72 72 6F 72 4F 72 64 69 6E 61 6C 2B 30 62 30 68 rrorOrdinal+0b0h
000110: 29 29 3B 0D 0A 09 52 65 44 69 73 70 6C 61 79 3B ));...ReDisplay;
000120: 0D 0A 28 2A 09 44 69 73 70 6C 61 79 46 69 6C 65 ..(*.DisplayFile
000130: 28 46 69 6C 65 73 5B 43 75 72 72 65 6E 74 46 69 (Files[CurrentFi
000140: 6C 65 5D 2C 43 75 72 72 65 6E 74 57 69 6E 64 6F le],CurrentWindo
000150: 77 2C 54 68 69 73 78 2C 54 68 69 73 79 29 3B 2A w,Thisx,Thisy);*
000160: 29 0D 0A 09 47 6F 74 6F 78 79 28 54 68 69 73 78 )...Gotoxy(Thisx
000170: 2C 54 68 69 73 79 29 3B 0D 0A 09 63 75 72 78 5B ,Thisy);...curx[
000180: 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 5D 3A 3D CurrentWindow]:=
000190: 54 68 69 73 78 3B 0D 0A 09 63 75 72 79 5B 43 75 Thisx;...cury[Cu
0001A0: 72 72 65 6E 74 57 69 6E 64 6F 77 5D 3A 3D 54 68 rrentWindow]:=Th
0001B0: 69 73 79 3B 0D 0A 09 45 4E 44 20 44 69 73 70 6C isy;...END Displ
0001C0: 61 79 45 72 72 6F 72 3B 09 0D 0A 42 45 47 49 4E ayError;...BEGIN
0001D0: 0D 0A 09 57 69 6E 64 6F 77 73 3A 3D 30 3B 0D 0A ...Windows:=0;..
0001E0: 09 45 4E 44 20 45 64 69 74 44 69 73 70 6C 61 79 .END EditDisplay
0001F0: 2E 0D 0A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
Size : 512 (Real : 512)
000000: 67 69 76 65 20 74 68 65 20 74 65 78 74 20 6F 66 give the text of
000010: 20 74 68 65 20 65 72 72 6F 72 20 6D 65 73 73 61 the error messa
000020: 67 65 73 20 2A 29 0D 0A 54 59 50 45 09 54 65 78 ges *)..TYPE.Tex
000030: 74 3D 41 52 52 41 59 5B 30 2E 2E 36 33 5D 20 4F t=ARRAY[0..63] O
000040: 46 20 43 48 41 52 3B 0D 0A 0D 0A 56 41 52 09 66 F CHAR;....VAR.f
000050: 3A 46 49 4C 45 3B 09 09 09 28 2A 46 49 4C 45 20 :FILE;...(*FILE
000060: 69 73 20 61 20 74 79 70 65 20 65 78 70 6F 72 74 is a type export
000070: 65 64 20 66 72 6F 6D 20 74 68 65 20 6D 6F 64 75 ed from the modu
000080: 6C 65 20 46 69 6C 65 73 2A 29 0D 0A 0D 0A 09 62 le Files*).....b
000090: 3A 41 52 52 41 59 20 5B 30 2E 2E 31 32 37 5D 20 :ARRAY [0..127]
0000A0: 4F 46 20 43 48 41 52 3B 0D 0A 09 69 2C 6A 2C 6B OF CHAR;...i,j,k
0000B0: 2C 4C 65 6E 67 74 68 3A 43 41 52 44 49 4E 41 4C ,Length:CARDINAL
0000C0: 3B 0D 0A 09 74 3A 54 65 78 74 3B 0D 0A 09 45 72 ;...t:Text;...Er
0000D0: 72 6F 72 4E 75 6D 62 65 72 3A 43 41 52 44 49 4E rorNumber:CARDIN
0000E0: 41 4C 3B 0D 0A 09 72 65 70 6C 79 3A 49 4E 54 45 AL;...reply:INTE
0000F0: 47 45 52 3B 0D 0A 09 62 6C 3A 42 4F 4F 4C 45 41 GER;...bl:BOOLEA
000100: 4E 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 43 6F N;..PROCEDURE Co
000110: 75 6E 74 28 6B 3A 43 41 52 44 49 4E 41 4C 29 3A unt(k:CARDINAL):
000120: 43 41 52 44 49 4E 41 4C 3B 0D 0A 56 41 52 09 69 CARDINAL;..VAR.i
000130: 3A 43 41 52 44 49 4E 41 4C 3B 0D 0A 42 45 47 49 :CARDINAL;..BEGI
000140: 4E 0D 0A 09 69 3A 3D 30 3B 0D 0A 09 49 46 20 6B N...i:=0;...IF k
000150: 3D 30 20 54 48 45 4E 20 52 45 54 55 52 4E 20 30 =0 THEN RETURN 0
000160: 20 45 4E 44 3B 0D 0A 09 46 4F 52 20 6B 3A 3D 6B END;...FOR k:=k
000170: 2D 31 20 54 4F 20 30 20 42 59 20 2D 31 20 44 4F -1 TO 0 BY -1 DO
000180: 0D 0A 09 09 69 3A 3D 69 2B 4F 52 44 28 62 5B 6B ....i:=i+ORD(b[k
000190: 5D 29 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 52 45 ]);....END;...RE
0001A0: 54 55 52 4E 20 69 0D 0A 09 45 4E 44 20 43 6F 75 TURN i...END Cou
0001B0: 6E 74 3B 0D 0A 50 52 4F 43 45 44 55 52 45 20 57 nt;..PROCEDURE W
0001C0: 72 69 74 65 43 61 72 64 28 69 3A 43 41 52 44 49 riteCard(i:CARDI
0001D0: 4E 41 4C 29 3B 0D 0A 56 41 52 09 74 3A 41 52 52 NAL);..VAR.t:ARR
0001E0: 41 59 5B 30 2E 2E 33 5D 20 4F 46 20 43 48 41 52 AY[0..3] OF CHAR
0001F0: 3B 0D 0A 09 6A 2C 6B 3A 43 41 52 44 49 4E 41 4C ;...j,k:CARDINAL
Size : 512 (Real : 512)
000000: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A ................
000010: 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 5D 3A 3D 44 6F ...........]:=Do
000020: 46 69 6E 64 3B 09 09 28 2A 43 74 72 6C 20 4C 2A Find;..(*Ctrl L*
000030: 29 0A 09 4D 61 69 6E 54 61 62 6C 65 5B 31 66 78 )..MainTable[1fx
000040: 5D 3A 3D 44 65 6C 42 61 63 6B 3B 09 28 2A 5E 2D ]:=DelBack;.(*^-
000050: 20 6F 6E 20 4F 73 62 6F 72 6E 65 20 31 2A 29 0D on Osborne 1*).
000060: 0A 0D 0A 09 28 2A 09 54 68 65 20 6E 65 78 74 20 ....(*.The next
000070: 6B 65 79 2C 20 20 61 73 73 69 67 6E 65 64 20 74 key, assigned t
000080: 78 29 20 45 4E 44 3B 0D 0A 09 09 62 3A 3D 46 6F x) END;....b:=Fo
000090: 72 77 61 72 64 4F 6E 65 43 68 61 72 28 43 75 72 rwardOneChar(Cur
0000A0: 46 69 6C 65 50 74 72 5E 29 20 0D 0A 09 09 45 4E FilePtr^) ....EN
0000B0: 44 3B 0D 0A 09 69 3A 3D 54 68 69 73 78 3B 0D 0A D;...i:=Thisx;..
0000C0: 09 57 48 49 4C 45 20 54 68 69 73 78 3E 3D 28 53 .WHILE Thisx>=(S
0000D0: 63 72 65 65 6E 57 69 64 74 68 2B 43 75 72 72 65 creenWidth+Curre
0000E0: 6E 74 4C 65 66 74 4D 61 72 67 69 6E 29 20 44 4F ntLeftMargin) DO
0000F0: 0D 0A 09 09 43 68 61 6E 67 65 4D 61 72 67 69 6E ....ChangeMargin
000100: 28 33 32 29 3B 0D 0A 09 09 54 68 69 73 78 3A 3D (32);....Thisx:=
000110: 69 3B 0D 0A 09 09 45 4E 44 3B 0D 0A 09 57 48 49 i;....END;...WHI
000120: 4C 45 20 54 68 69 73 78 3C 43 75 72 72 65 6E 74 LE Thisx<Current
000130: 4C 65 66 74 4D 61 72 67 69 6E 20 44 4F 0D 0A 09 LeftMargin DO...
000140: 09 43 68 61 6E 67 65 4D 61 72 67 69 6E 28 2D 33 .ChangeMargin(-3
000150: 32 29 3B 0D 0A 09 09 54 68 69 73 78 3A 3D 69 3B 2);....Thisx:=i;
000160: 0D 0A 09 09 45 4E 44 3B 0D 0A 09 54 68 69 73 78 ....END;...Thisx
000170: 3A 3D 54 68 69 73 78 2D 43 75 72 72 65 6E 74 4C :=Thisx-CurrentL
000180: 65 66 74 4D 61 72 67 69 6E 3B 0D 0A 09 63 75 72 eftMargin;...cur
000190: 78 5B 43 75 72 72 65 6E 74 57 69 6E 64 6F 77 5D x[CurrentWindow]
0001A0: 3A 3D 54 68 69 73 78 3B 0D 0A 09 52 65 73 65 74 :=Thisx;...Reset
0001B0: 50 6F 73 3B 0D 0A 09 45 4E 44 20 43 68 61 6E 67 Pos;...END Chang
0001C0: 65 50 6F 73 3B 0D 0A 0D 0A 50 52 4F 43 45 44 55 ePos;....PROCEDU
0001D0: 52 45 20 4C 69 6E 65 4D 6F 76 65 28 62 79 3A 49 RE LineMove(by:I
0001E0: 4E 54 45 47 45 52 29 3B 0D 0A 56 41 52 09 69 3A NTEGER);..VAR.i:
0001F0: 49 4E 54 45 47 45 52 3B 0D 0A 42 45 47 49 4E 0D INTEGER;..BEGIN.
Size : 512 (Real : 512)
000000: 3B 0D 0A 42 45 47 49 4E 0D 0A 09 6B 3A 3D 48 49 ;..BEGIN...k:=HI
000010: 47 48 28 74 29 3B 0D 0A 09 57 48 49 4C 45 20 69 GH(t);...WHILE i
000020: 3C 3E 30 20 44 4F 0D 0A 09 09 6A 3A 3D 69 20 44 <>0 DO....j:=i D
000030: 49 56 20 31 30 3B 0D 0A 09 09 74 5B 6B 5D 3A 3D IV 10;....t[k]:=
000040: 43 48 52 28 4F 52 44 28 27 30 27 29 2B 69 2D 31 CHR(ORD('0')+i-1
000050: 30 2A 6A 29 3B 0D 0A 09 09 69 3A 3D 6A 3B 0D 0A 0*j);....i:=j;..
000060: 09 09 44 45 43 28 6B 29 3B 0D 0A 09 09 45 4E 44 ..DEC(k);....END
000070: 3B 0D 0A 09 46 4F 52 20 6B 3A 3D 6B 2B 31 20 54 ;...FOR k:=k+1 T
000080: 4F 20 48 49 47 48 28 74 29 20 44 4F 20 57 72 69 O HIGH(t) DO Wri
000090: 74 65 28 74 5B 6B 5D 29 20 45 4E 44 3B 0D 0A 09 te(t[k]) END;...
0000A0: 45 4E 44 20 57 72 69 74 65 43 61 72 64 3B 0D 0A END WriteCard;..
0000B0: 42 45 47 49 4E 0D 0A 09 49 46 20 45 72 72 6F 72 BEGIN...IF Error
0000C0: 4F 72 64 69 6E 61 6C 3E 3D 45 72 72 6F 72 43 6F Ordinal>=ErrorCo
0000D0: 75 6E 74 20 54 48 45 4E 20 52 45 54 55 52 4E 20 unt THEN RETURN
0000E0: 45 4E 44 3B 0D 0A 09 47 6F 74 6F 78 79 28 30 2C END;...Gotoxy(0,
0000F0: 53 63 72 65 65 6E 44 65 70 74 68 2D 31 29 3B 0D ScreenDepth-1);.
000100: 0A 09 45 72 72 6F 72 4E 75 6D 62 65 72 3A 3D 45 ..ErrorNumber:=E
000110: 72 72 6F 72 4C 69 73 74 5B 45 72 72 6F 72 4F 72 rrorList[ErrorOr
000120: 64 69 6E 61 6C 5D 2E 45 72 72 6F 72 4E 75 6D 3B dinal].ErrorNum;
000130: 0D 0A 09 53 63 72 65 65 6E 43 6F 6E 74 72 6F 6C ...ScreenControl
000140: 28 44 65 6C 45 6F 6C 29 3B 0D 0A 09 57 72 69 74 (DelEol);...Writ
000150: 65 53 74 72 69 6E 67 28 27 45 72 72 6F 72 20 27 eString('Error '
000160: 29 3B 0D 0A 09 57 72 69 74 65 43 61 72 64 28 45 );...WriteCard(E
000170: 72 72 6F 72 4E 75 6D 62 65 72 29 3B 0D 0A 09 57 rrorNumber);...W
000180: 72 69 74 65 53 74 72 69 6E 67 28 27 28 27 29 3B riteString('(');
000190: 57 72 69 74 65 43 61 72 64 28 45 72 72 6F 72 4F WriteCard(ErrorO
0001A0: 72 64 69 6E 61 6C 2B 31 29 3B 0D 0A 09 57 72 69 rdinal+1);...Wri
0001B0: 74 65 53 74 72 69 6E 67 28 27 20 6F 66 20 27 29 teString(' of ')
0001C0: 3B 57 72 69 74 65 43 61 72 64 28 45 72 72 6F 72 ;WriteCard(Error
0001D0: 43 6F 75 6E 74 29 3B 0D 0A 09 57 72 69 74 65 53 Count);...WriteS
0001E0: 74 72 69 6E 67 28 27 29 20 3A 27 29 3B 0D 0A 09 tring(') :');...
0001F0: 4C 6F 6F 6B 75 70 28 66 2C 27 45 52 52 4D 53 47 Lookup(f,'ERRMSG
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
Size : 512 (Real : 512)
000000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0000F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0001F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
   
Tous droits réservés. Reproduction sans autorisation interdite. © Kukulcan