000000: 45 58 54 45 4E 44 45 44 20 43 50 43 20 44 53 4B EXTENDED CPC DSK
000010: 20 46 69 6C 65 0D 0A 44 69 73 6B 2D 49 6E 66 6F File..Disk-Info
000020: 0D 0A 43 50 43 44 69 73 6B 58 50 20 76 32 2E 30 ..CPCDiskXP v2.0
000030: 28 01 00 00 13 13 13 13 13 13 13 13 13 13 13 13 (...............
000040: 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 ................
000050: 13 13 13 13 13 13 13 13 13 13 13 13 00 00 00 00 ................
000060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0000F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000100: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
000110: 00 00 00 00 02 09 2A E5 00 00 C1 02 00 00 00 02 ......*.........
000120: 00 00 C6 02 00 00 00 02 00 00 C2 02 00 00 00 02 ................
000130: 00 00 C7 02 00 00 00 02 00 00 C3 02 00 00 00 02 ................
000140: 00 00 C8 02 00 00 00 02 00 00 C4 02 00 00 00 02 ................
000150: 00 00 C9 02 00 00 00 02 00 00 C5 02 00 00 00 02 ................
000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000200: 00 44 20 20 20 20 20 20 20 43 4F 4D 00 00 00 07 .D COM....
000210: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000220: 00 4A 52 54 4D 41 4E 20 20 35 30 30 00 00 00 80 .JRTMAN 500....
000230: 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 ................
000240: 00 4A 52 54 4D 41 4E 20 20 35 30 30 01 00 00 80 .JRTMAN 500....
000250: 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 ............. !"
000260: 00 4A 52 54 4D 41 4E 20 20 35 30 30 02 00 00 0F .JRTMAN 500....
000270: 23 24 00 00 00 00 00 00 00 00 00 00 00 00 00 00 #$..............
000280: 00 4A 52 54 4D 41 4E 20 20 36 30 30 00 00 00 80 .JRTMAN 600....
000290: 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 %&'()*+,-./01234
0002A0: 00 4A 52 54 4D 41 4E 20 20 36 30 30 01 00 00 80 .JRTMAN 600....
0002B0: 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 56789:;<=>?@ABCD
0002C0: 00 4A 52 54 4D 41 4E 20 20 36 30 30 02 00 00 80 .JRTMAN 600....
0002D0: 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 EFGHIJKLMNOPQRST
0002E0: 00 4A 52 54 4D 41 4E 20 20 36 30 30 03 00 00 1E .JRTMAN 600....
0002F0: 55 56 57 58 00 00 00 00 00 00 00 00 00 00 00 00 UVWX............
000300: 00 4A 52 54 4D 41 4E 20 20 37 30 30 00 00 00 80 .JRTMAN 700....
000310: 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 YZ[\]^_`abcdefgh
000320: 00 4A 52 54 4D 41 4E 20 20 37 30 30 01 00 00 80 .JRTMAN 700....
000330: 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 ijklmnopqrstuvwx
000340: 00 4A 52 54 4D 41 4E 20 20 37 30 30 02 00 00 1A .JRTMAN 700....
000350: 79 7A 7B 7C 00 00 00 00 00 00 00 00 00 00 00 00 yz{|............
000360: 00 4A 52 54 4D 41 4E 20 20 38 30 30 00 00 00 80 .JRTMAN 800....
000370: 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C }~..............
000380: 00 4A 52 54 4D 41 4E 20 20 38 30 30 01 00 00 34 .JRTMAN 800...4
000390: 8D 8E 8F 90 91 92 93 00 00 00 00 00 00 00 00 00 ................
0003A0: 00 4A 52 54 4D 41 4E 20 20 41 50 50 00 00 00 80 .JRTMAN APP....
0003B0: 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 ...............£
0003C0: 00 4A 52 54 4D 41 4E 20 20 41 50 50 01 00 00 23 .JRTMAN APP...#
0003D0: A4 A5 A6 A7 A8 00 00 00 00 00 00 00 00 00 00 00 ................
0003E0: 00 2D 50 41 53 43 41 4C 20 34 30 37 00 00 00 00 .-PASCAL 407....
0003F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000400: 04 CD 2F 04 A0 C1 03 18 BB CD 02 04 CD 02 04 21 ../............!
000410: 67 04 CD 08 04 20 46 69 6C 65 F3 CD 08 04 20 45 g.... File.... E
000420: 78 74 65 6E 74 F3 CD 08 04 20 53 79 73 74 65 6D xtent.... System
000430: 20 66 69 6C 65 F3 CD 08 04 4B 20 4C 69 73 74 65 file....K Liste
000440: 64 A0 CD 08 04 4B 20 55 73 65 64 A0 0E 1F CD 05 d....K Used.....
000450: 00 3E 05 CD E7 03 5E 23 56 13 23 23 CD 8B 03 CD .>....^#V.##....
000460: 8B 03 CD 82 03 ED 5B 6F 04 A7 ED 52 CD 0D 04 4B ......[o...R...K
000470: 20 46 72 65 65 0D 8A ED 7B 87 04 C9 5F 0E 0E C3 Free...{..._...
000480: 05 00 3A 71 04 EB 3D C8 29 18 FB 23 06 08 7E 07 ..:q..=.)..#..~.
000490: 30 01 1B 10 FA C9 E5 69 60 29 29 29 29 EB 2A 84 0......i`)))).*.
0004A0: 04 A7 ED 52 EB E1 C9 0E 0B 06 08 CD C2 03 CD 2F ...R.........../
0004B0: 04 AE 06 03 CD C2 03 41 78 A7 C8 CD 2F 04 A0 10 .......Ax.../...
0004C0: FA C9 23 7E E6 7F FE 21 D4 3B 04 10 F5 C9 CD FB ..#~...!.;......
0004D0: 03 C0 21 80 00 06 80 7E 23 FE 1A C8 C5 E5 CD 52 ..!....~#......R
0004E0: 04 E1 C1 10 F2 18 E7 85 6F D0 24 C9 71 23 10 FC ........o.$.q#..
0004F0: C9 0E 0F 11 5C 00 CD 05 00 3C C9 0E 14 CD F3 03 ....\....<......
000500: 3D C9 CD 2F 04 0D 8A C9 5E 23 56 23 EB D5 0E 00 =../....^#V#....
000510: 11 10 27 CD 3E 04 11 E8 03 CD 3E 04 11 64 00 CD ..'.>.....>..d..
000520: 3E 04 11 0A 00 CD 3E 04 7D C6 30 CD 52 04 E1 E3 >.....>.}.0.R...
000530: 7E CD 52 04 CB 7E 23 28 F7 E3 C9 0D 18 14 06 2F ~.R..~#(......./
000540: 04 A7 ED 52 30 FA 19 78 0C FE 30 20 05 0D 20 02 ...R0..x..0 .. .
000550: 3E 20 C5 D5 E5 E6 7F F5 5F 0E 02 CD 05 00 F1 E1 > ......_.......
000560: D1 C1 C9 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000580: FA DA 5A 45 19 D6 80 2B 42 91 94 AC E9 F0 5C 62 ..ZE...+B.....\b
000590: 91 84 46 E9 4E 49 7D EC 83 0F 70 B3 F5 4F CF 4F ..F.NI}...p..O.O
0005A0: 7C 80 9B 5D DC AE 57 EB EB F1 C1 FA 64 71 B3 BA |..]..W.....dq..
0005B0: 7F 82 97 3E C0 FD 58 9C DC 7F B6 78 EC 03 DC 8F ...>..X....x....
0005C0: 17 27 AB 07 1B DC AE 57 0F 1E AF 16 8F AF 1F 9F .'.....W........
0005D0: FC 71 5C AD C7 67 0F 36 3E C0 FD F8 E3 6A 31 AE .q\..g.6>....j1.
0005E0: 1E DC 3F D9 E0 F6 2F 27 7F 78 70 72 7B BB C1 5F ..?.../'.xpr{.._
0005F0: 3E 2E D6 CF 6E C7 DB 8D 0F 70 3F 5E DC 6D F0 E2 >...n....p?^.m..
000600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0006A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0006B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0006C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0006D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0006E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0006F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0007A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0007B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0007C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0007D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0007E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0007F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000800: 20 20 20 20 20 20 37 2E 20 20 20 20 49 6E 70 75 7. Inpu
000810: 74 2F 6F 75 74 70 75 74 0D 0A 0D 0A 20 20 20 20 t/output....
000820: 20 20 20 20 20 20 20 4A 52 54 20 20 50 61 73 63 JRT Pasc
000830: 61 6C 20 69 6E 63 6C 75 64 65 73 20 61 20 70 6F al includes a po
000840: 77 65 72 66 75 6C 20 69 6E 70 75 74 2F 6F 75 74 werful input/out
000850: 70 75 74 20 73 75 62 73 79 73 74 65 6D 20 77 68 put subsystem wh
000860: 69 63 68 20 63 61 6E 0D 0A 20 20 20 20 20 20 62 ich can.. b
000870: 65 20 75 73 65 64 20 74 6F 20 6D 65 65 74 20 76 e used to meet v
000880: 69 72 74 75 61 6C 6C 79 20 61 6E 79 20 70 72 6F irtually any pro
000890: 63 65 73 73 69 6E 67 20 72 65 71 75 69 72 65 6D cessing requirem
0008A0: 65 6E 74 2E 20 20 54 68 72 65 65 20 6D 6F 64 65 ent. Three mode
0008B0: 73 20 6F 66 0D 0A 20 20 20 20 20 20 69 6E 70 75 s of.. inpu
0008C0: 74 2F 6F 75 74 70 75 74 20 2D 20 63 6F 6E 73 6F t/output - conso
0008D0: 6C 65 2C 20 73 65 71 75 65 6E 74 69 61 6C 20 64 le, sequential d
0008E0: 69 73 6B 2C 20 72 61 6E 64 6F 6D 20 64 69 73 6B isk, random disk
0008F0: 20 2D 20 61 72 65 20 70 72 6F 76 69 64 65 64 2E - are provided.
000900: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 44 .... D
000910: 69 73 6B 20 66 69 6C 65 73 20 63 61 6E 20 62 65 isk files can be
000920: 20 70 72 6F 63 65 73 73 65 64 20 69 6E 20 65 69 processed in ei
000930: 74 68 65 72 20 54 45 58 54 20 20 6D 6F 64 65 20 ther TEXT mode
000940: 20 6F 72 20 20 69 6E 20 20 42 49 4E 41 52 59 0D or in BINARY.
000950: 0A 20 20 20 20 20 20 6D 6F 64 65 2E 20 20 20 54 . mode. T
000960: 45 58 54 20 20 6D 6F 64 65 20 69 73 20 6D 6F 73 EXT mode is mos
000970: 74 20 63 6F 6D 6D 6F 6E 6C 79 20 75 73 65 64 20 t commonly used
000980: 62 79 20 42 41 53 49 43 20 6C 61 6E 67 75 61 67 by BASIC languag
000990: 65 73 2E 20 20 44 61 74 61 20 69 73 0D 0A 20 20 es. Data is..
0009A0: 20 20 20 20 73 74 6F 72 65 64 20 69 6E 20 41 53 stored in AS
0009B0: 43 49 49 20 74 65 78 74 20 72 65 61 64 61 62 6C CII text readabl
0009C0: 65 20 66 6F 72 6D 61 74 2E 20 20 42 49 4E 41 52 e format. BINAR
0009D0: 59 20 6D 6F 64 65 20 69 73 20 66 6F 75 6E 64 20 Y mode is found
0009E0: 6F 6E 20 6C 61 72 67 65 72 0D 0A 20 20 20 20 20 on larger..
0009F0: 20 6D 69 6E 69 20 61 6E 64 20 6D 61 69 6E 66 72 mini and mainfr
000A00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000C00: 61 6D 65 20 63 6F 6D 70 75 74 65 72 73 2E 20 20 ame computers.
000C10: 54 68 65 20 64 61 74 61 20 69 73 20 69 6E 70 75 The data is inpu
000C20: 74 2F 6F 75 74 70 75 74 20 69 6E 20 74 68 65 20 t/output in the
000C30: 62 69 6E 61 72 79 0D 0A 20 20 20 20 20 20 66 6F binary.. fo
000C40: 72 6D 61 74 20 75 73 65 64 20 69 6E 74 65 72 6E rmat used intern
000C50: 61 6C 6C 79 20 62 79 20 74 68 65 20 6C 61 6E 67 ally by the lang
000C60: 75 61 67 65 2E 20 20 4E 6F 74 20 6F 6E 6C 79 20 uage. Not only
000C70: 69 73 20 20 74 68 65 20 20 64 61 74 61 20 20 6D is the data m
000C80: 6F 72 65 0D 0A 20 20 20 20 20 20 63 6F 6D 70 61 ore.. compa
000C90: 63 74 20 20 69 6E 20 20 73 6F 6D 65 20 63 61 73 ct in some cas
000CA0: 65 73 20 62 75 74 20 69 74 20 69 73 20 61 6C 73 es but it is als
000CB0: 6F 20 6F 66 20 66 69 78 65 64 20 6C 65 6E 67 74 o of fixed lengt
000CC0: 68 2E 20 20 46 6F 72 20 65 78 61 6D 70 6C 65 2C h. For example,
000CD0: 0D 0A 20 20 20 20 20 20 61 6E 20 69 6E 74 65 67 .. an integ
000CE0: 65 72 20 69 6E 20 74 65 78 74 20 66 6F 72 6D 61 er in text forma
000CF0: 74 20 63 6F 75 6C 64 20 6F 63 63 75 70 79 20 66 t could occupy f
000D00: 72 6F 6D 20 74 77 6F 20 62 79 74 65 73 20 74 6F rom two bytes to
000D10: 20 20 73 69 78 20 20 62 79 74 65 73 2C 0D 0A 20 six bytes,..
000D20: 20 20 20 20 20 64 65 70 65 6E 64 69 6E 67 20 20 depending
000D30: 6F 6E 20 20 69 74 73 20 20 76 61 6C 75 65 2E 20 on its value.
000D40: 20 42 75 74 20 69 6E 20 62 69 6E 61 72 79 20 66 But in binary f
000D50: 6F 72 6D 61 74 20 61 6E 20 69 6E 74 65 67 65 72 ormat an integer
000D60: 20 69 73 20 61 6C 77 61 79 73 0D 0A 20 20 20 20 is always..
000D70: 20 20 65 78 61 63 74 6C 79 20 74 77 6F 20 62 79 exactly two by
000D80: 74 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 tes.....
000D90: 20 20 20 54 45 58 54 20 6D 6F 64 65 20 69 73 20 TEXT mode is
000DA0: 73 6F 6D 65 74 69 6D 65 73 20 63 61 6C 6C 65 64 sometimes called
000DB0: 20 20 22 73 74 72 65 61 6D 20 20 49 2F 4F 22 2E "stream I/O".
000DC0: 20 20 20 42 49 4E 41 52 59 20 20 6D 6F 64 65 20 BINARY mode
000DD0: 20 69 73 0D 0A 20 20 20 20 20 20 73 6F 6D 65 74 is.. somet
000DE0: 69 6D 65 73 20 63 61 6C 6C 65 64 20 22 72 65 63 imes called "rec
000DF0: 6F 72 64 20 49 2F 4F 22 2E 0D 0A 0D 0A 20 20 20 ord I/O".....
000E00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000ED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001000: 20 20 20 20 20 20 20 20 41 6E 6F 74 68 65 72 20 Another
001010: 20 61 64 76 61 6E 74 61 67 65 20 6F 66 20 62 69 advantage of bi
001020: 6E 61 72 79 20 66 6F 72 6D 61 74 20 69 73 20 74 nary format is t
001030: 68 61 74 20 74 68 65 20 75 73 65 72 20 63 61 6E hat the user can
001040: 20 70 72 6F 63 65 73 73 0D 0A 20 20 20 20 20 20 process..
001050: 64 61 74 61 20 66 69 6C 65 73 20 6F 72 20 43 4F data files or CO
001060: 4D 20 66 69 6C 65 73 20 63 6F 6E 74 61 69 6E 69 M files containi
001070: 6E 67 20 73 70 65 63 69 61 6C 20 63 6F 6E 74 72 ng special contr
001080: 6F 6C 20 63 68 61 72 61 63 74 65 72 73 2E 0D 0A ol characters...
001090: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 41 6C 6C .. All
0010A0: 20 66 69 6C 65 73 20 69 6E 20 4A 52 54 20 50 61 files in JRT Pa
0010B0: 73 63 61 6C 20 61 72 65 20 22 75 6E 74 79 70 65 scal are "untype
0010C0: 64 22 2E 20 54 68 61 74 20 20 69 73 2C 20 20 74 d". That is, t
0010D0: 68 65 20 20 75 73 65 72 20 20 63 61 6E 0D 0A 20 he user can..
0010E0: 20 20 20 20 20 72 65 61 64 20 20 61 6E 64 20 20 read and
0010F0: 77 72 69 74 65 20 20 64 61 74 61 20 6F 66 20 61 write data of a
001100: 6E 79 20 66 6F 72 6D 61 74 20 74 6F 20 61 6E 79 ny format to any
001110: 20 66 69 6C 65 2E 20 20 54 68 65 20 75 73 65 72 file. The user
001120: 20 63 61 6E 20 77 72 69 74 65 0D 0A 20 20 20 20 can write..
001130: 20 20 72 65 63 6F 72 64 73 20 6F 66 20 65 6E 74 records of ent
001140: 69 72 65 6C 79 20 64 69 66 66 65 72 65 6E 74 20 irely different
001150: 66 6F 72 6D 61 74 73 20 61 6E 64 20 73 69 7A 65 formats and size
001160: 73 20 6F 6E 20 74 68 65 20 73 61 6D 65 20 66 69 s on the same fi
001170: 6C 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 le.....
001180: 20 20 4A 52 54 20 20 50 61 73 63 61 6C 20 20 61 JRT Pascal a
001190: 6C 73 6F 20 20 73 75 70 70 6F 72 74 73 20 20 64 lso supports d
0011A0: 69 72 65 63 74 20 20 61 63 63 65 73 73 20 20 74 irect access t
0011B0: 6F 20 20 20 74 68 65 20 20 20 68 61 72 64 77 61 o the hardwa
0011C0: 72 65 0D 0A 20 20 20 20 20 20 69 6E 70 75 74 2F re.. input/
0011D0: 6F 75 74 70 75 74 20 20 70 6F 72 74 73 20 20 77 output ports w
0011E0: 69 74 68 6F 75 74 20 20 68 61 76 69 6E 67 20 20 ithout having
0011F0: 74 6F 20 20 77 72 69 74 65 20 20 61 6E 20 61 73 to write an as
001200: ED 73 87 04 31 09 05 18 23 20 20 44 69 73 6B 20 .s..1...# Disk
001210: 56 32 2E 35 20 28 63 29 20 50 68 69 6C 20 57 68 V2.5 (c) Phil Wh
001220: 65 65 6C 65 72 20 31 39 38 32 20 20 2A 06 00 2E eeler 1982 *...
001230: 00 11 F2 07 B7 ED 52 22 84 04 0E 20 1E FF CD 05 ......R"... ....
001240: 00 32 86 04 21 5D 00 7E FE 20 20 06 01 3F 0B CD .2..!].~. ..?..
001250: EC 03 3A 5C 00 3D F4 7C 03 21 5C 00 11 74 04 01 ..:\.=.|.!\..t..
001260: 10 00 ED B0 21 6C 00 11 5C 00 01 10 00 ED B0 21 ....!l..\......!
001270: 5C 00 E5 7E 32 83 04 36 00 CD F1 03 C4 CE 03 E1 \..~2..6........
001280: 01 3F 0C CD EC 03 0E 1F CD 05 00 23 23 7E D6 02 .?.........##~..
001290: 32 71 04 23 23 7E 2F 32 72 04 23 23 7E 32 73 04 2q.##~/2r.##~2s.
0012A0: 21 63 04 01 00 0E CD EC 03 0E 11 CD F3 03 CA BF !c..............
0012B0: 02 3D 0F 0F 0F 21 80 00 CD E7 03 7E FE 10 23 DC .=...!.....~..#.
0012C0: C6 01 0E 12 18 E5 E5 3E 0F CD E7 03 06 10 3A 73 .......>......:s
0012D0: 04 4F 11 00 00 7E 0C 0D 28 03 23 05 B6 A7 28 01 .O...~..(.#...(.
0012E0: 13 23 10 F1 CD 82 03 22 65 04 ED 5B 6F 04 19 22 .#....."e..[o.."
0012F0: 6F 04 2A 69 04 23 22 69 04 E1 E5 3E 0B CD E7 03 o.*i.#"i...>....
001300: 5E 2B 2B 4E 3A 72 04 A3 20 12 2A 67 04 23 22 67 ^++N:r.£ .*g.#"g
001310: 04 CB 79 28 07 2A 6B 04 23 22 6B 04 E1 CB 79 28 ..y(.*k.#"k...y(
001320: 05 3A 83 04 A7 C8 3A 86 04 2B BE 23 C0 11 75 04 .:....:..+.#..u.
001330: CD A5 02 C0 E5 2A 65 04 ED 5B 6D 04 19 22 6D 04 .....*e..[m.."m.
001340: 01 00 00 E1 E5 2A 63 04 A7 ED 42 E1 28 39 CD 96 .....*c...B.(9..
001350: 03 CD A5 02 28 21 30 03 03 18 E9 C5 E5 D5 ED 4B ....(!0........K
001360: 63 04 CD 96 03 E1 A7 ED 52 44 4D 1B 1B 21 10 00 c.......RDM..!..
001370: 19 ED B0 E1 C1 18 14 EB 2B 56 2B 5E EB ED 4B 65 ........+V+^..Ke
001380: 04 09 EB 73 23 72 C9 ED 4B 63 04 CD 96 03 D5 01 ...s#r..Kc......
001390: 0B 00 ED B0 E1 ED 5B 65 04 2B 72 2B 73 2A 63 04 ......[e.+r+s*c.
0013A0: 23 22 63 04 C9 C5 06 0B D5 E5 1A E6 7F FE 3F 28 #"c...........?(
0013B0: 06 4E CB B9 B9 20 04 23 13 10 EF E1 D1 C1 C9 01 .N... .#........
0013C0: 00 00 1E FF 2A 63 04 A7 ED 42 09 28 3C 1C 7B FE ....*c...B.(<.{.
0013D0: 04 38 05 CD 02 04 1E 00 C5 D5 CD 96 03 EB E5 11 .8..............
0013E0: 08 00 19 CB 7E E1 3E 20 28 02 3E 2A CD 52 04 E5 ....~.> (.>*.R..
0013F0: 2B CD A7 03 E1 2B 2B CD 08 04 CB D1 7B FE 03 28 +....++.....{..(
001400: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
001410: 01 00 00 00 02 09 2A E5 01 00 C1 02 00 00 00 02 ......*.........
001420: 01 00 C6 02 00 00 00 02 01 00 C2 02 00 00 00 02 ................
001430: 01 00 C7 02 00 00 00 02 01 00 C3 02 00 00 00 02 ................
001440: 01 00 C8 02 00 00 00 02 01 00 C4 02 00 00 00 02 ................
001450: 01 00 C9 02 00 00 00 02 01 00 C5 02 00 00 00 02 ................
001460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0014F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001500: 73 65 6D 62 6C 79 20 6C 61 6E 67 75 61 67 65 0D sembly language.
001510: 0A 20 20 20 20 20 20 73 75 62 72 6F 75 74 69 6E . subroutin
001520: 65 2E 20 20 20 54 68 65 20 20 62 75 69 6C 74 69 e. The builti
001530: 6E 20 20 66 75 6E 63 74 69 6F 6E 20 20 50 4F 52 n function POR
001540: 54 49 4E 20 20 61 6E 64 20 20 62 75 69 6C 74 69 TIN and builti
001550: 6E 20 20 70 72 6F 63 65 64 75 72 65 0D 0A 20 20 n procedure..
001560: 20 20 20 20 50 4F 52 54 4F 55 54 20 20 61 72 65 PORTOUT are
001570: 20 20 64 65 73 63 72 69 62 65 64 20 20 69 6E 20 described in
001580: 20 74 68 65 20 20 73 65 63 74 69 6F 6E 73 20 20 the sections
001590: 6F 6E 20 20 62 75 69 6C 74 69 6E 20 66 75 6E 63 on builtin func
0015A0: 74 69 6F 6E 73 20 61 6E 64 0D 0A 20 20 20 20 20 tions and..
0015B0: 20 62 75 69 6C 74 69 6E 20 70 72 6F 63 65 64 75 builtin procedu
0015C0: 72 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 res.....
0015D0: 20 20 20 4A 52 54 20 50 61 73 63 61 6C 20 76 65 JRT Pascal ve
0015E0: 72 73 69 6F 6E 20 33 20 6E 6F 77 20 73 75 70 70 rsion 3 now supp
0015F0: 6F 72 74 73 20 50 61 73 63 61 6C 20 66 69 6C 65 orts Pascal file
001600: 20 20 76 61 72 69 61 62 6C 65 73 2E 20 20 46 69 variables. Fi
001610: 6C 65 73 0D 0A 20 20 20 20 20 20 6D 61 79 20 20 les.. may
001620: 6E 6F 77 20 20 62 65 20 70 61 73 73 65 64 20 61 now be passed a
001630: 73 20 70 61 72 61 6D 65 74 65 72 73 20 74 6F 20 s parameters to
001640: 70 72 6F 63 65 64 75 72 65 73 2C 20 61 6C 6C 6F procedures, allo
001650: 63 61 74 65 64 20 6C 6F 63 61 6C 6C 79 20 69 6E cated locally in
001660: 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 64 75 72 .. procedur
001670: 65 73 2C 20 62 65 20 75 73 65 64 20 69 6E 20 72 es, be used in r
001680: 65 63 6F 72 64 73 20 20 6F 72 20 20 61 72 72 61 ecords or arra
001690: 79 73 2C 20 20 62 65 20 20 75 73 65 64 20 20 69 ys, be used i
0016A0: 6E 20 20 61 73 73 69 67 6E 6D 65 6E 74 0D 0A 20 n assignment..
0016B0: 20 20 20 20 20 73 74 61 74 65 6D 65 6E 74 73 2E statements.
0016C0: 20 20 54 68 65 20 20 50 61 73 63 61 6C 20 20 62 The Pascal b
0016D0: 75 69 6C 74 69 6E 20 20 70 72 6F 63 65 64 75 72 uiltin procedur
0016E0: 65 73 20 20 47 45 54 20 20 61 6E 64 20 20 50 55 es GET and PU
0016F0: 54 20 20 61 72 65 20 6E 6F 77 0D 0A 20 20 20 20 T are now..
001700: 72 61 63 74 65 72 73 20 61 6E 64 20 73 69 6E 67 racters and sing
001710: 6C 65 20 71 75 6F 74 65 73 20 61 72 65 20 69 67 le quotes are ig
001720: 6E 6F 72 65 64 2E 20 20 54 68 65 20 73 79 73 74 nored. The syst
001730: 65 6D 20 77 69 6C 6C 20 6E 6F 74 20 20 61 6C 6C em will not all
001740: 6F 77 0D 0A 20 20 20 20 20 20 6D 6F 72 65 20 20 ow.. more
001750: 63 68 61 72 61 63 74 65 72 73 20 74 6F 20 62 65 characters to be
001760: 20 6B 65 79 65 64 20 69 6E 20 74 68 61 6E 20 63 keyed in than c
001770: 61 6E 20 66 69 74 20 69 6E 74 6F 20 74 68 65 20 an fit into the
001780: 76 61 72 69 61 62 6C 65 20 69 6E 20 74 68 65 0D variable in the.
001790: 0A 20 20 20 20 20 20 52 45 41 44 27 73 20 70 61 . READ's pa
0017A0: 72 61 6D 65 74 65 72 20 6C 69 73 74 2E 0D 0A 0D rameter list....
0017B0: 0A 20 20 20 20 20 20 20 20 20 20 20 43 6F 6E 73 . Cons
0017C0: 6F 6C 65 20 6F 75 74 70 75 74 20 63 61 6E 20 61 ole output can a
0017D0: 6C 73 6F 20 62 65 20 72 6F 75 74 65 64 20 74 6F lso be routed to
0017E0: 20 74 68 65 20 70 72 69 6E 74 65 72 20 6F 72 20 the printer or
0017F0: 6C 69 73 74 20 64 65 76 69 63 65 2E 0D 0A 20 20 list device...
001800: 20 20 20 20 54 68 65 20 53 59 53 54 45 4D 20 70 The SYSTEM p
001810: 72 6F 63 65 64 75 72 65 20 69 73 20 66 75 6C 6C rocedure is full
001820: 79 20 64 65 73 63 72 69 62 65 64 20 69 6E 20 20 y described in
001830: 74 68 65 20 20 73 65 63 74 69 6F 6E 20 20 6F 6E the section on
001840: 20 20 62 75 69 6C 74 69 6E 0D 0A 20 20 20 20 20 builtin..
001850: 20 70 72 6F 63 65 64 75 72 65 73 2E 20 53 6F 6D procedures. Som
001860: 65 20 6F 66 20 69 74 73 20 6F 70 74 69 6F 6E 73 e of its options
001870: 20 61 72 65 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 are:....
001880: 20 20 20 20 20 20 20 20 20 20 20 53 59 53 54 45 SYSTE
001890: 4D 28 20 4C 49 53 54 20 29 3B 20 20 20 20 20 20 M( LIST );
0018A0: 20 20 20 72 6F 75 74 65 20 6F 75 74 70 75 74 20 route output
0018B0: 74 6F 20 70 72 69 6E 74 65 72 0D 0A 20 20 20 20 to printer..
0018C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 59 SY
0018D0: 53 54 45 4D 28 20 4E 4F 4C 49 53 54 20 29 3B 20 STEM( NOLIST );
0018E0: 20 20 20 20 20 20 64 6F 20 6E 6F 74 20 72 6F 75 do not rou
0018F0: 74 65 20 74 6F 20 70 72 69 6E 74 65 72 0D 0A 20 te to printer..
001900: 20 20 73 75 70 70 6F 72 74 65 64 2E 0D 0A 0D 0A supported.....
001910: 20 20 20 20 20 20 37 2E 31 20 20 20 43 6F 6E 73 7.1 Cons
001920: 6F 6C 65 20 69 6E 70 75 74 2F 6F 75 74 70 75 74 ole input/output
001930: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 43 .... C
001940: 6F 6E 73 6F 6C 65 20 69 6E 70 75 74 2F 6F 75 74 onsole input/out
001950: 70 75 74 20 20 69 73 20 20 74 68 65 20 20 75 73 put is the us
001960: 75 61 6C 20 20 6D 65 61 6E 73 20 20 66 6F 72 20 ual means for
001970: 20 61 20 20 70 72 6F 67 72 61 6D 20 20 74 6F 0D a program to.
001980: 0A 20 20 20 20 20 20 69 6E 74 65 72 61 63 74 20 . interact
001990: 20 77 69 74 68 20 20 74 68 65 20 20 75 73 65 72 with the user
0019A0: 2E 20 20 20 44 61 74 61 20 20 76 61 6C 75 65 73 . Data values
0019B0: 20 63 61 6E 20 62 65 20 64 69 73 70 6C 61 79 65 can be displaye
0019C0: 64 20 61 74 20 61 20 76 69 64 65 6F 0D 0A 20 20 d at a video..
0019D0: 20 20 20 20 74 65 72 6D 69 6E 61 6C 20 6F 72 20 terminal or
0019E0: 74 65 6C 65 74 79 70 65 20 61 6E 64 20 64 61 74 teletype and dat
0019F0: 61 20 63 61 6E 20 62 65 20 6B 65 79 65 64 20 69 a can be keyed i
001A00: 6E 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 n.....
001A10: 20 43 6F 6E 73 6F 6C 65 20 69 6E 70 75 74 2F 6F Console input/o
001A20: 75 74 70 75 74 20 61 6C 77 61 79 73 20 6F 63 63 utput always occ
001A30: 75 72 73 20 69 6E 20 74 65 78 74 20 20 72 61 74 urs in text rat
001A40: 68 65 72 20 20 74 68 61 6E 20 20 62 69 6E 61 72 her than binar
001A50: 79 0D 0A 20 20 20 20 20 20 66 6F 72 6D 61 74 2E y.. format.
001A60: 20 49 6E 74 65 67 65 72 73 2C 20 72 65 61 6C 20 Integers, real
001A70: 6E 75 6D 62 65 72 73 2C 20 73 74 72 69 6E 67 73 numbers, strings
001A80: 2C 20 63 68 61 72 61 63 74 65 72 73 20 61 6E 64 , characters and
001A90: 20 42 6F 6F 6C 65 61 6E 73 20 77 69 6C 6C 0D 0A Booleans will..
001AA0: 20 20 20 20 20 20 62 65 20 20 64 69 73 70 6C 61 be displa
001AB0: 79 65 64 20 20 69 6E 20 74 65 78 74 20 66 6F 72 yed in text for
001AC0: 6D 61 74 2E 20 20 53 65 74 20 76 61 72 69 61 62 mat. Set variab
001AD0: 6C 65 73 20 68 61 76 65 20 6E 6F 20 6D 65 61 6E les have no mean
001AE0: 69 6E 67 66 75 6C 20 74 65 78 74 0D 0A 20 20 20 ingful text..
001AF0: 20 20 20 66 6F 72 6D 61 74 20 61 6E 64 20 63 61 format and ca
001B00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
001B10: 20 53 59 53 54 45 4D 28 20 43 4F 4E 53 20 29 3B SYSTEM( CONS );
001B20: 20 20 20 20 20 20 20 20 20 72 6F 75 74 65 20 74 route t
001B30: 6F 20 63 6F 6E 73 6F 6C 65 20 64 65 76 69 63 65 o console device
001B40: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
001B50: 20 20 20 20 53 59 53 54 45 4D 28 20 4E 4F 43 4F SYSTEM( NOCO
001B60: 4E 53 20 29 3B 20 20 20 20 20 20 20 64 6F 20 6E NS ); do n
001B70: 6F 74 20 72 6F 75 74 65 20 74 6F 20 63 6F 6E 73 ot route to cons
001B80: 6F 6C 65 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 ole....
001B90: 20 20 54 68 65 20 20 62 75 69 6C 74 69 6E 20 20 The builtin
001BA0: 70 72 6F 63 65 64 75 72 65 73 2F 66 75 6E 63 74 procedures/funct
001BB0: 69 6F 6E 73 20 20 75 73 65 64 20 69 6E 20 63 6F ions used in co
001BC0: 6E 73 6F 6C 65 20 69 6E 70 75 74 2F 6F 75 74 70 nsole input/outp
001BD0: 75 74 0D 0A 20 20 20 20 20 20 61 72 65 3A 0D 0A ut.. are:..
001BE0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
001BF0: 20 20 20 20 52 45 41 44 2C 20 52 45 41 44 4C 4E READ, READLN
001C00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 64 read
001C10: 20 64 61 74 61 20 69 6E 74 6F 20 73 74 6F 72 61 data into stora
001C20: 67 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ge..
001C30: 20 20 20 20 20 20 57 52 49 54 45 2C 20 57 52 49 WRITE, WRI
001C40: 54 45 4C 4E 20 20 20 20 20 20 20 20 20 20 77 72 TELN wr
001C50: 69 74 65 20 64 61 74 61 20 74 6F 20 63 6F 6E 73 ite data to cons
001C60: 6F 6C 65 2F 70 72 69 6E 74 65 72 0D 0A 20 20 20 ole/printer..
001C70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 E
001C80: 4F 4C 4E 20 20 20 20 20 20 20 20 20 20 20 20 20 OLN
001C90: 20 20 20 20 20 20 20 65 6E 64 20 6F 66 20 6C 69 end of li
001CA0: 6E 65 20 66 75 6E 63 74 69 6F 6E 0D 0A 0D 0A 0D ne function.....
001CB0: 0A 20 20 20 20 20 20 37 2E 32 20 20 20 53 65 71 . 7.2 Seq
001CC0: 75 65 6E 74 69 61 6C 20 66 69 6C 65 20 70 72 6F uential file pro
001CD0: 63 65 73 73 69 6E 67 0D 0A 0D 0A 20 20 20 20 20 cessing....
001CE0: 20 20 20 20 20 20 44 69 73 6B 20 66 69 6C 65 73 Disk files
001CF0: 20 61 72 65 20 6E 6F 74 20 69 6E 68 65 72 65 6E are not inheren
001D00: 6E 6E 6F 74 20 62 65 20 77 72 69 74 74 65 6E 20 nnot be written
001D10: 74 6F 20 74 68 65 20 63 6F 6E 73 6F 6C 65 2E 0D to the console..
001D20: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 49 4D ... IM
001D30: 50 4F 52 54 41 4E 54 20 2D 20 53 69 6E 63 65 20 PORTANT - Since
001D40: 74 68 65 20 63 6F 6E 73 6F 6C 65 20 69 73 20 72 the console is r
001D50: 65 67 61 72 64 65 64 20 61 73 20 61 20 74 65 78 egarded as a tex
001D60: 74 20 64 65 76 69 63 65 2C 20 64 61 74 61 0D 0A t device, data..
001D70: 20 20 20 20 20 20 69 74 65 6D 73 20 61 72 65 20 items are
001D80: 64 65 6C 69 6D 69 74 65 64 20 62 79 20 63 6F 6D delimited by com
001D90: 6D 61 73 2C 20 73 70 61 63 65 73 2C 20 74 61 62 mas, spaces, tab
001DA0: 73 20 61 6E 64 20 73 65 6D 69 63 6F 6C 6F 6E 73 s and semicolons
001DB0: 2E 20 20 54 6F 20 20 72 65 61 64 0D 0A 20 20 20 . To read..
001DC0: 20 20 20 6F 6E 65 20 63 68 61 72 61 63 74 65 72 one character
001DD0: 20 61 74 20 61 20 74 69 6D 65 2C 20 75 73 65 20 at a time, use
001DE0: 74 68 69 73 20 66 75 6E 63 74 69 6F 6E 3A 0D 0A this function:..
001DF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 55 FU
001E00: 4E 43 54 49 4F 4E 20 47 45 54 5F 43 48 41 52 20 NCTION GET_CHAR
001E10: 3A 20 43 48 41 52 3B 0D 0A 20 20 20 20 20 20 20 : CHAR;..
001E20: 20 20 20 20 20 20 20 56 41 52 20 52 20 3A 20 52 VAR R : R
001E30: 45 43 4F 52 44 0D 0A 20 20 20 20 20 20 20 20 20 ECORD..
001E40: 20 20 20 20 20 20 20 20 20 20 20 20 20 46 4C 41 FLA
001E50: 47 2C 41 2C 43 2C 44 2C 45 2C 44 2C 4C 2C 48 20 G,A,C,D,E,D,L,H
001E60: 3A 20 43 48 41 52 3B 0D 0A 20 20 20 20 20 20 20 : CHAR;..
001E70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 E
001E80: 4E 44 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ND;..
001E90: 20 20 20 42 45 47 49 4E 0D 0A 20 20 20 20 20 20 BEGIN..
001EA0: 20 20 20 20 20 20 20 20 52 2E 43 20 3A 3D 20 43 R.C := C
001EB0: 48 52 28 31 29 3B 0D 0A 20 20 20 20 20 20 20 20 HR(1);..
001EC0: 20 20 20 20 20 20 43 41 4C 4C 28 20 35 2C 52 2C CALL( 5,R,
001ED0: 52 20 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 R );..
001EE0: 20 20 20 20 47 45 54 5F 43 48 41 52 20 3A 3D 20 GET_CHAR :=
001EF0: 52 2E 41 0D 0A 20 20 20 20 20 20 20 20 20 20 20 R.A..
001F00: 74 6C 79 20 73 65 71 75 65 6E 74 69 61 6C 20 6F tly sequential o
001F10: 72 20 72 61 6E 64 6F 6D 2E 20 20 54 68 6F 73 65 r random. Those
001F20: 20 74 65 72 6D 73 0D 0A 20 20 20 20 20 20 61 70 terms.. ap
001F30: 70 6C 79 20 74 6F 20 74 68 65 20 6D 65 61 6E 73 ply to the means
001F40: 20 6F 66 20 61 63 63 65 73 73 20 77 68 69 63 68 of access which
001F50: 20 6D 61 79 20 62 65 20 61 70 70 6C 69 65 64 20 may be applied
001F60: 74 6F 20 61 6E 79 20 64 69 73 6B 20 66 69 6C 65 to any disk file
001F70: 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
001F80: 53 65 71 75 65 6E 74 69 61 6C 20 66 69 6C 65 20 Sequential file
001F90: 20 70 72 6F 63 65 73 73 69 6E 67 20 20 69 73 20 processing is
001FA0: 20 67 65 6E 65 72 61 6C 6C 79 20 20 66 61 73 74 generally fast
001FB0: 65 72 20 20 74 68 61 6E 20 20 72 61 6E 64 6F 6D er than random
001FC0: 0D 0A 20 20 20 20 20 20 61 63 63 65 73 73 20 20 .. access
001FD0: 62 65 63 61 75 73 65 20 20 69 6E 70 75 74 2F 6F because input/o
001FE0: 75 74 70 75 74 20 20 63 61 6E 20 20 62 65 20 20 utput can be
001FF0: 62 75 66 66 65 72 65 64 20 61 6E 64 20 62 65 63 buffered and bec
002000: 61 75 73 65 20 74 68 65 20 64 69 73 6B 0D 0A 20 ause the disk..
002010: 20 20 20 20 20 70 6F 73 69 74 69 6F 6E 69 6E 67 positioning
002020: 20 6D 65 63 68 61 6E 69 73 6D 20 6F 6E 6C 79 20 mechanism only
002030: 6E 65 65 64 73 20 74 6F 20 6D 6F 76 65 20 73 68 needs to move sh
002040: 6F 72 74 20 64 69 73 74 61 6E 63 65 73 2E 0D 0A ort distances...
002050: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 4A 52 54 .. JRT
002060: 20 50 61 73 63 61 6C 20 6C 65 74 73 20 74 68 65 Pascal lets the
002070: 20 75 73 65 72 20 20 6F 62 74 61 69 6E 20 20 6D user obtain m
002080: 61 78 69 6D 75 6D 20 20 70 72 6F 63 65 73 73 69 aximum processi
002090: 6E 67 20 20 73 70 65 65 64 20 20 62 79 0D 0A 20 ng speed by..
0020A0: 20 20 20 20 20 64 65 66 69 6E 69 6E 67 20 20 74 defining t
0020B0: 68 65 20 20 62 75 66 66 65 72 20 20 73 69 7A 65 he buffer size
0020C0: 20 20 66 6F 72 20 73 65 71 75 65 6E 74 69 61 6C for sequential
0020D0: 20 66 69 6C 65 73 2E 20 20 54 68 65 20 62 75 66 files. The buf
0020E0: 66 65 72 20 69 73 20 74 68 65 0D 0A 20 20 20 20 fer is the..
0020F0: 20 20 68 6F 6C 64 69 6E 67 20 61 72 65 61 20 77 holding area w
002100: 20 20 20 45 4E 44 3B 0D 0A 0D 0A 20 20 20 20 20 END;....
002110: 20 20 20 20 20 20 55 73 69 6E 67 20 20 74 68 65 Using the
002120: 20 20 48 45 58 24 20 62 75 69 6C 74 69 6E 20 66 HEX$ builtin f
002130: 75 6E 63 74 69 6F 6E 2C 20 61 6E 79 20 76 61 72 unction, any var
002140: 69 61 62 6C 65 20 63 61 6E 20 62 65 20 63 6F 6E iable can be con
002150: 76 65 72 74 65 64 0D 0A 20 20 20 20 20 20 74 6F verted.. to
002160: 20 68 65 78 20 66 6F 72 6D 61 74 20 66 6F 72 20 hex format for
002170: 64 69 72 65 63 74 20 64 69 73 70 6C 61 79 2E 20 direct display.
002180: 20 4F 6E 20 20 63 6F 6E 73 6F 6C 65 20 20 69 6E On console in
002190: 70 75 74 20 20 66 6F 72 20 20 69 6E 74 65 67 65 put for intege
0021A0: 72 73 2C 0D 0A 20 20 20 20 20 20 64 61 74 61 20 rs,.. data
0021B0: 20 6D 61 79 20 62 65 20 6B 65 79 65 64 20 69 6E may be keyed in
0021C0: 20 75 73 69 6E 67 20 73 74 61 6E 64 61 72 64 20 using standard
0021D0: 64 65 63 69 6D 61 6C 20 66 6F 72 6D 61 74 20 6F decimal format o
0021E0: 72 20 69 6E 20 68 65 78 20 66 6F 72 6D 61 74 2E r in hex format.
0021F0: 0D 0A 20 20 20 20 20 20 41 6E 20 27 48 27 20 63 .. An 'H' c
002200: 68 61 72 61 63 74 65 72 20 73 75 66 66 69 78 20 haracter suffix
002210: 69 6E 64 69 63 61 74 65 73 20 68 65 78 20 66 6F indicates hex fo
002220: 72 6D 61 74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 rmat.....
002230: 20 20 20 20 4F 6E 20 69 6E 70 75 74 20 74 6F 20 On input to
002240: 74 68 65 20 63 6F 6E 73 6F 6C 65 2C 20 64 61 74 the console, dat
002250: 61 20 69 74 65 6D 73 20 6D 61 79 20 62 65 20 73 a items may be s
002260: 65 70 61 72 61 74 65 64 20 62 79 20 20 73 70 61 eparated by spa
002270: 63 65 73 2C 0D 0A 20 20 20 20 20 20 74 61 62 73 ces,.. tabs
002280: 2C 20 20 63 6F 6D 6D 61 73 20 6F 72 20 73 65 6D , commas or sem
002290: 69 63 6F 6C 6F 6E 73 2E 20 20 43 68 61 72 61 63 icolons. Charac
0022A0: 74 65 72 20 6F 72 20 73 74 72 75 63 74 75 72 65 ter or structure
0022B0: 64 20 76 61 72 69 61 62 6C 65 20 69 6E 70 75 74 d variable input
0022C0: 73 0D 0A 20 20 20 20 20 20 77 68 69 63 68 20 63 s.. which c
0022D0: 6F 6E 74 61 69 6E 20 73 70 65 63 69 61 6C 20 63 ontain special c
0022E0: 68 61 72 61 63 74 65 72 73 20 6D 61 79 20 62 65 haracters may be
0022F0: 20 20 65 6E 74 65 72 65 64 20 20 69 6E 20 20 73 entered in s
002300: 68 65 72 65 20 64 69 73 6B 20 64 61 74 61 20 69 here disk data i
002310: 73 20 6C 6F 61 64 65 64 20 61 6E 64 20 20 77 72 s loaded and wr
002320: 69 74 74 65 6E 2E 20 20 20 54 68 69 73 20 20 61 itten. This a
002330: 72 65 61 20 20 69 73 0D 0A 20 20 20 20 20 20 66 rea is.. f
002340: 69 6C 6C 65 64 20 20 6F 72 20 20 65 6D 70 74 69 illed or empti
002350: 65 64 20 69 6E 20 6F 6E 65 20 62 75 72 73 74 20 ed in one burst
002360: 2D 20 6F 6E 65 20 64 69 73 6B 20 61 63 63 65 73 - one disk acces
002370: 73 20 77 69 74 68 20 6F 6E 65 20 68 65 61 64 20 s with one head
002380: 6C 6F 61 64 0D 0A 20 20 20 20 20 20 6F 70 65 72 load.. oper
002390: 61 74 69 6F 6E 2E 20 41 20 76 65 72 79 20 73 6D ation. A very sm
0023A0: 61 6C 6C 20 62 75 66 66 65 72 20 6D 61 79 20 20 all buffer may
0023B0: 63 61 75 73 65 20 20 64 69 73 6B 20 20 22 63 68 cause disk "ch
0023C0: 61 74 74 65 72 69 6E 67 22 20 20 64 75 72 69 6E attering" durin
0023D0: 67 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 73 73 g.. process
0023E0: 69 6E 67 20 20 62 65 63 61 75 73 65 20 6F 66 20 ing because of
0023F0: 66 72 65 71 75 65 6E 74 20 61 63 63 65 73 73 65 frequent accesse
002400: 73 2E 20 20 41 20 6C 61 72 67 65 20 62 75 66 66 s. A large buff
002410: 65 72 20 77 69 6C 6C 20 72 65 73 75 6C 74 0D 0A er will result..
002420: 20 20 20 20 20 20 69 6E 20 6C 65 73 73 20 66 72 in less fr
002430: 65 71 75 65 6E 74 20 62 75 74 20 6C 6F 6E 67 65 equent but longe
002440: 72 20 64 69 73 6B 20 61 63 63 65 73 73 65 73 2E r disk accesses.
002450: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 .... T
002460: 68 65 20 62 75 66 66 65 72 20 73 69 7A 65 20 69 he buffer size i
002470: 73 20 73 70 65 63 69 66 69 65 64 20 61 73 20 61 s specified as a
002480: 6E 20 20 69 6E 74 65 67 65 72 20 20 65 78 70 72 n integer expr
002490: 65 73 73 69 6F 6E 20 20 69 6E 20 20 74 68 65 0D ession in the.
0024A0: 0A 20 20 20 20 20 20 52 45 53 45 54 20 20 6F 72 . RESET or
0024B0: 20 20 52 45 57 52 49 54 45 20 70 72 6F 63 65 64 REWRITE proced
0024C0: 75 72 65 2E 20 20 49 74 20 77 69 6C 6C 20 62 65 ure. It will be
0024D0: 20 72 6F 75 6E 64 65 64 20 75 70 20 74 6F 20 61 rounded up to a
0024E0: 20 6D 75 6C 74 69 70 6C 65 20 6F 66 0D 0A 20 20 multiple of..
0024F0: 20 20 20 20 31 32 38 2E 20 20 49 66 20 73 74 6F 128. If sto
002500: 69 6E 67 6C 65 20 20 71 75 6F 74 65 73 2E 0D 0A ingle quotes...
002510: 20 20 20 20 20 20 54 68 65 20 71 75 6F 74 65 20 The quote
002520: 63 68 61 72 61 63 74 65 72 20 69 74 73 65 6C 66 character itself
002530: 20 6D 61 79 20 62 65 20 65 6E 74 65 72 65 64 20 may be entered
002540: 62 79 20 64 6F 75 62 6C 69 6E 67 20 69 74 2E 0D by doubling it..
002550: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 53 ... S
002560: 61 6D 70 6C 65 20 69 6E 70 75 74 20 6C 69 6E 65 ample input line
002570: 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 s:....
002580: 20 20 20 20 20 20 20 20 33 2E 31 34 31 35 39 2C 3.14159,
002590: 37 37 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 77..
0025A0: 20 20 20 20 20 20 30 33 63 68 2C 27 4A 52 54 20 03ch,'JRT
0025B0: 53 79 73 74 65 6D 73 27 0D 0A 20 20 20 20 20 20 Systems'..
0025C0: 20 20 20 20 20 20 20 20 20 20 20 20 27 64 6F 6E 'don
0025D0: 27 27 74 20 73 61 79 20 79 6F 75 20 63 61 6E 27 ''t say you can'
0025E0: 27 74 27 0D 0A 20 20 20 20 20 20 20 20 20 20 20 't'..
0025F0: 20 20 20 20 20 20 20 36 2E 37 30 32 33 34 65 2D 6.70234e-
002600: 32 35 2C 30 2E 30 30 30 30 30 30 33 0D 0A 0D 0A 25,0.0000003....
002610: 20 20 20 20 20 20 20 20 20 20 20 52 65 61 64 69 Readi
002620: 6E 67 20 20 66 72 6F 6D 20 20 74 68 65 20 20 63 ng from the c
002630: 6F 6E 73 6F 6C 65 20 20 69 6E 74 6F 20 20 61 20 onsole into a
002640: 20 64 79 6E 61 6D 69 63 20 73 74 72 69 6E 67 20 dynamic string
002650: 76 61 72 69 61 62 6C 65 20 69 73 0D 0A 20 20 20 variable is..
002660: 20 20 20 74 72 65 61 74 65 64 20 64 69 66 66 65 treated diffe
002670: 72 65 6E 74 6C 79 2E 20 20 41 6E 20 65 6E 74 69 rently. An enti
002680: 72 65 20 6C 69 6E 65 20 6F 66 20 74 65 78 74 20 re line of text
002690: 20 69 73 20 20 6F 62 74 61 69 6E 65 64 20 20 66 is obtained f
0026A0: 72 6F 6D 20 20 74 68 65 0D 0A 20 20 20 20 20 20 rom the..
0026B0: 63 6F 6E 73 6F 6C 65 20 20 61 6E 64 20 20 6D 6F console and mo
0026C0: 76 65 64 20 20 64 69 72 65 63 74 6C 79 20 20 69 ved directly i
0026D0: 6E 74 6F 20 20 74 68 65 20 20 73 74 72 69 6E 67 nto the string
0026E0: 20 76 61 72 69 61 62 6C 65 2E 20 20 53 65 70 61 variable. Sepa
0026F0: 72 61 74 6F 72 0D 0A 20 20 20 20 20 20 63 68 61 rator.. cha
002700: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
002710: 02 00 00 00 02 09 2A E5 02 00 C1 02 00 00 00 02 ......*.........
002720: 02 00 C6 02 00 00 00 02 02 00 C2 02 00 00 00 02 ................
002730: 02 00 C7 02 00 00 00 02 02 00 C3 02 00 00 00 02 ................
002740: 02 00 C8 02 00 00 00 02 02 00 C4 02 00 00 00 02 ................
002750: 02 00 C9 02 00 00 00 02 02 00 C5 02 00 00 00 02 ................
002760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0027F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
002800: 72 61 67 65 20 69 73 20 70 6C 65 6E 74 69 66 75 rage is plentifu
002810: 6C 2C 20 62 75 66 66 65 72 73 20 6F 66 20 34 30 l, buffers of 40
002820: 39 36 20 20 6F 72 20 20 38 31 39 32 20 20 62 79 96 or 8192 by
002830: 74 65 73 20 20 77 69 6C 6C 0D 0A 20 20 20 20 20 tes will..
002840: 20 69 6D 70 72 6F 76 65 20 70 72 6F 63 65 73 73 improve process
002850: 69 6E 67 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ing.....
002860: 20 20 20 54 68 65 20 20 62 75 69 6C 74 69 6E 20 The builtin
002870: 20 70 72 6F 63 65 64 75 72 65 73 2F 66 75 6E 63 procedures/func
002880: 74 69 6F 6E 73 20 20 75 73 65 64 20 69 6E 20 73 tions used in s
002890: 65 71 75 65 6E 74 69 61 6C 20 64 69 73 6B 20 66 equential disk f
0028A0: 69 6C 65 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 ile.. proce
0028B0: 73 73 69 6E 67 20 61 72 65 0D 0A 0D 0A 20 20 20 ssing are....
0028C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 R
0028D0: 45 53 45 54 20 20 20 20 20 20 20 20 20 20 20 20 ESET
0028E0: 20 6F 70 65 6E 20 66 69 6C 65 20 66 6F 72 20 69 open file for i
0028F0: 6E 70 75 74 0D 0A 20 20 20 20 20 20 20 20 20 20 nput..
002900: 20 20 20 20 20 20 20 20 52 45 57 52 49 54 45 20 REWRITE
002910: 20 20 20 20 20 20 20 20 20 20 6F 70 65 6E 20 66 open f
002920: 69 6C 65 20 66 6F 72 20 6F 75 74 70 75 74 0D 0A ile for output..
002930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
002940: 20 20 43 4C 4F 53 45 20 20 20 20 20 20 20 20 20 CLOSE
002950: 20 20 20 20 74 65 72 6D 69 6E 61 74 65 20 66 69 terminate fi
002960: 6C 65 20 70 72 6F 63 65 73 73 69 6E 67 0D 0A 20 le processing..
002970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
002980: 20 52 45 41 44 2C 20 52 45 41 44 4C 4E 20 20 20 READ, READLN
002990: 20 20 20 72 65 61 64 20 64 61 74 61 20 69 6E 74 read data int
0029A0: 6F 20 73 74 6F 72 61 67 65 0D 0A 20 20 20 20 20 o storage..
0029B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 57 52 49 WRI
0029C0: 54 45 2C 20 57 52 49 54 45 4C 4E 20 20 20 20 77 TE, WRITELN w
0029D0: 72 69 74 65 20 64 61 74 61 20 74 6F 20 64 69 73 rite data to dis
0029E0: 6B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 k..
0029F0: 20 20 20 20 20 45 4F 46 20 20 20 20 20 20 20 20 EOF
002A00: 20 20 74 68 65 20 20 6C 6F 63 61 74 69 6F 6E 0D the location.
002A10: 0A 20 20 20 20 20 20 6F 66 20 74 68 65 20 64 61 . of the da
002A20: 74 61 20 69 74 65 6D 20 77 69 74 68 69 6E 20 74 ta item within t
002A30: 68 65 20 66 69 6C 65 2E 20 20 54 68 65 20 66 69 he file. The fi
002A40: 72 73 74 20 62 79 74 65 20 69 73 20 61 74 20 52 rst byte is at R
002A50: 42 41 3D 30 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 BA=0.....
002A60: 20 20 20 20 54 68 65 20 20 52 42 41 20 20 6D 6F The RBA mo
002A70: 64 65 20 6F 66 20 70 72 6F 63 65 73 73 69 6E 67 de of processing
002A80: 20 67 69 76 65 73 20 6D 75 63 68 20 67 72 65 61 gives much grea
002A90: 74 65 72 20 66 6C 65 78 69 62 69 6C 69 74 79 20 ter flexibility
002AA0: 74 68 61 6E 0D 0A 20 20 20 20 20 20 52 52 4E 2E than.. RRN.
002AB0: 20 20 49 66 20 61 6C 6C 20 72 65 63 6F 72 64 73 If all records
002AC0: 20 68 61 64 20 74 6F 20 62 65 20 74 68 65 20 73 had to be the s
002AD0: 61 6D 65 20 73 69 7A 65 2C 20 74 68 65 6E 20 61 ame size, then a
002AE0: 6C 6C 20 77 6F 75 6C 64 20 68 61 76 65 20 20 74 ll would have t
002AF0: 6F 0D 0A 20 20 20 20 20 20 62 65 20 74 68 65 20 o.. be the
002B00: 73 69 7A 65 20 6F 66 20 74 68 65 20 6C 61 72 67 size of the larg
002B10: 65 73 74 2C 20 72 65 73 75 6C 74 69 6E 67 20 69 est, resulting i
002B20: 6E 20 6D 75 63 68 20 77 61 73 74 65 64 20 73 70 n much wasted sp
002B30: 61 63 65 20 61 6E 64 20 73 6C 6F 77 65 72 0D 0A ace and slower..
002B40: 20 20 20 20 20 20 61 63 63 65 73 73 2E 0D 0A 0D access....
002B50: 0A 20 20 20 20 20 20 20 20 20 20 20 42 65 67 69 . Begi
002B60: 6E 6E 69 6E 67 20 20 77 69 74 68 20 20 4A 52 54 nning with JRT
002B70: 20 20 50 61 73 63 61 6C 20 76 65 72 73 69 6F 6E Pascal version
002B80: 20 32 2E 31 2C 20 72 61 6E 64 6F 6D 20 66 69 6C 2.1, random fil
002B90: 65 73 20 75 70 20 74 6F 20 74 68 65 0D 0A 20 20 es up to the..
002BA0: 20 20 20 20 43 50 2F 4D 20 6D 61 78 69 6D 75 6D CP/M maximum
002BB0: 20 6F 66 20 38 20 6D 65 67 61 62 79 74 65 73 20 of 8 megabytes
002BC0: 61 72 65 20 73 75 70 70 6F 72 74 65 64 2E 20 54 are supported. T
002BD0: 68 65 20 52 42 41 20 6F 72 20 52 52 4E 20 20 76 he RBA or RRN v
002BE0: 61 6C 75 65 20 20 6D 61 79 0D 0A 20 20 20 20 20 alue may..
002BF0: 20 62 65 20 20 61 6E 20 20 69 6E 74 65 67 65 72 be an integer
002C00: 20 20 20 20 20 20 20 65 6E 64 20 6F 66 20 66 69 end of fi
002C10: 6C 65 20 66 75 6E 63 74 69 6F 6E 0D 0A 20 20 20 le function..
002C20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 E
002C30: 4F 4C 4E 20 20 20 20 20 20 20 20 20 20 20 20 20 OLN
002C40: 20 65 6E 64 20 6F 66 20 6C 69 6E 65 20 66 75 6E end of line fun
002C50: 63 74 69 6F 6E 0D 0A 20 20 20 20 20 20 20 20 20 ction..
002C60: 20 20 20 20 20 20 20 20 20 45 52 41 53 45 20 20 ERASE
002C70: 20 20 20 20 20 20 20 20 20 20 20 64 65 6C 65 74 delet
002C80: 65 20 61 20 66 69 6C 65 0D 0A 20 20 20 20 20 20 e a file..
002C90: 20 20 20 20 20 20 20 20 20 20 20 20 52 45 4E 41 RENA
002CA0: 4D 45 20 20 20 20 20 20 20 20 20 20 20 20 72 65 ME re
002CB0: 6E 61 6D 65 20 61 20 66 69 6C 65 0D 0A 0D 0A 0D name a file.....
002CC0: 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D ................
002CD0: 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D ................
002CE0: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 ... Th
002CF0: 69 73 20 73 61 6D 70 6C 65 20 70 72 6F 67 72 61 is sample progra
002D00: 6D 20 72 65 61 64 73 20 69 6E 20 61 20 66 69 6C m reads in a fil
002D10: 65 20 61 6E 64 20 64 75 6D 70 73 20 69 74 20 69 e and dumps it i
002D20: 6E 20 20 68 65 78 20 20 66 6F 72 6D 61 74 0D 0A n hex format..
002D30: 20 20 20 20 20 20 74 6F 20 74 68 65 20 63 6F 6E to the con
002D40: 73 6F 6C 65 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 sole:....
002D50: 20 20 20 20 20 20 20 20 20 20 20 50 52 4F 47 52 PROGR
002D60: 41 4D 20 44 55 4D 50 3B 0D 0A 0D 0A 20 20 20 20 AM DUMP;....
002D70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 59 TY
002D80: 50 45 20 42 4C 4F 43 4B 20 3D 20 41 52 52 41 59 PE BLOCK = ARRAY
002D90: 20 5B 31 2E 2E 31 36 5D 20 4F 46 20 43 48 41 52 [1..16] OF CHAR
002DA0: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
002DB0: 20 20 20 20 20 20 20 20 20 20 20 4E 41 4D 45 20 NAME
002DC0: 3D 20 41 52 52 41 59 20 5B 31 2E 2E 31 34 5D 20 = ARRAY [1..14]
002DD0: 4F 46 20 43 48 41 52 3B 0D 0A 0D 0A 20 20 20 20 OF CHAR;....
002DE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 41 VA
002DF0: 52 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 R..
002E00: 20 20 6F 72 20 61 20 72 65 61 6C 20 65 78 70 72 or a real expr
002E10: 65 73 73 69 6F 6E 2E 20 50 72 6F 67 72 61 6D 73 ession. Programs
002E20: 20 77 72 69 74 74 65 6E 20 75 6E 64 65 72 20 65 written under e
002E30: 61 72 6C 69 65 72 0D 0A 20 20 20 20 20 20 76 65 arlier.. ve
002E40: 72 73 69 6F 6E 73 20 61 72 65 20 73 6F 75 72 63 rsions are sourc
002E50: 65 20 63 6F 64 65 20 63 6F 6D 70 61 74 69 62 6C e code compatibl
002E60: 65 20 62 75 74 20 6D 75 73 74 20 62 65 20 72 65 e but must be re
002E70: 63 6F 6D 70 69 6C 65 64 20 75 73 69 6E 67 20 20 compiled using
002E80: 74 68 65 0D 0A 20 20 20 20 20 20 76 65 72 73 69 the.. versi
002E90: 6F 6E 20 32 2E 31 20 6F 72 20 6C 61 74 65 72 20 on 2.1 or later
002EA0: 63 6F 6D 70 69 6C 65 72 2E 0D 0A 0D 0A 20 20 20 compiler.....
002EB0: 20 20 20 20 20 20 20 20 54 68 65 20 70 72 6F 63 The proc
002EC0: 65 64 75 72 65 73 20 75 73 65 64 20 69 6E 20 72 edures used in r
002ED0: 61 6E 64 6F 6D 20 66 69 6C 65 20 70 72 6F 63 65 andom file proce
002EE0: 73 73 69 6E 67 20 61 72 65 3A 0D 0A 0D 0A 20 20 ssing are:....
002EF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
002F00: 20 20 20 20 4F 50 45 4E 20 20 20 20 20 20 20 20 OPEN
002F10: 20 20 20 20 6F 70 65 6E 20 6F 72 20 63 72 65 61 open or crea
002F20: 74 65 20 72 61 6E 64 6F 6D 20 66 69 6C 65 0D 0A te random file..
002F30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
002F40: 20 20 20 20 20 20 43 4C 4F 53 45 20 20 20 20 20 CLOSE
002F50: 20 20 20 20 20 20 74 65 72 6D 69 6E 61 74 65 20 terminate
002F60: 66 69 6C 65 20 70 72 6F 63 65 73 73 69 6E 67 0D file processing.
002F70: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
002F80: 20 20 20 20 20 20 20 52 45 41 44 20 20 20 20 20 READ
002F90: 20 20 20 20 20 20 20 72 65 61 64 20 64 61 74 61 read data
002FA0: 20 69 6E 74 6F 20 73 74 6F 72 61 67 65 0D 0A 20 into storage..
002FB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
002FC0: 20 20 20 20 20 57 52 49 54 45 20 20 20 20 20 20 WRITE
002FD0: 20 20 20 20 20 74 72 61 6E 73 66 65 72 20 64 61 transfer da
002FE0: 74 61 20 74 6F 20 64 69 73 6B 0D 0A 20 20 20 20 ta to disk..
002FF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003000: 20 20 20 20 20 42 20 3A 20 42 4C 4F 43 4B 3B 0D B : BLOCK;.
003010: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
003020: 20 20 20 44 55 4D 50 5F 46 49 4C 45 20 3A 20 46 DUMP_FILE : F
003030: 49 4C 45 20 4F 46 20 42 4C 4F 43 4B 3B 0D 0A 20 ILE OF BLOCK;..
003040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003050: 20 46 49 4C 45 4E 41 4D 45 20 3A 20 4E 41 4D 45 FILENAME : NAME
003060: 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ;....
003070: 20 20 20 20 20 20 20 42 45 47 49 4E 0D 0A 20 20 BEGIN..
003080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003090: 57 48 49 4C 45 20 54 52 55 45 20 44 4F 20 20 20 WHILE TRUE DO
0030A0: 20 20 28 2A 20 49 4E 46 49 4E 49 54 45 20 4C 4F (* INFINITE LO
0030B0: 4F 50 20 2A 29 0D 0A 20 20 20 20 20 20 20 20 20 OP *)..
0030C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 B
0030D0: 45 47 49 4E 0D 0A 20 20 20 20 20 20 20 20 20 20 EGIN..
0030E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 52 WR
0030F0: 49 54 45 28 27 65 6E 74 65 72 20 66 69 6C 65 6E ITE('enter filen
003100: 61 6D 65 20 3A 20 27 29 3B 0D 0A 20 20 20 20 20 ame : ');..
003110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003120: 20 20 20 52 45 41 44 4C 4E 28 20 46 49 4C 45 4E READLN( FILEN
003130: 41 4D 45 20 29 3B 0D 0A 20 20 20 20 20 20 20 20 AME );..
003140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003150: 52 45 53 45 54 28 20 44 55 4D 50 5F 46 49 4C 45 RESET( DUMP_FILE
003160: 2C 20 46 49 4C 45 4E 41 4D 45 2C 0D 0A 20 20 20 , FILENAME,..
003170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003180: 20 20 20 20 20 20 20 20 20 20 20 42 49 4E 41 52 BINAR
003190: 59 2C 20 34 30 39 36 29 3B 0D 0A 20 20 20 20 20 Y, 4096);..
0031A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0031B0: 20 20 20 57 48 49 4C 45 20 4E 4F 54 20 45 4F 46 WHILE NOT EOF
0031C0: 28 20 44 55 4D 50 5F 46 49 4C 45 20 29 20 44 4F ( DUMP_FILE ) DO
0031D0: 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
0031E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0031F0: 20 42 45 47 49 4E 0D 0A 20 20 20 20 20 20 20 20 BEGIN..
003200: 20 20 45 52 41 53 45 20 20 20 20 20 20 20 20 20 ERASE
003210: 20 20 64 65 6C 65 74 65 20 61 20 66 69 6C 65 0D delete a file.
003220: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
003230: 20 20 20 20 20 20 20 52 45 4E 41 4D 45 20 20 20 RENAME
003240: 20 20 20 20 20 20 20 72 65 6E 61 6D 65 20 61 20 rename a
003250: 66 69 6C 65 0D 0A 0D 0A 20 20 20 20 20 20 20 20 file....
003260: 20 20 20 41 20 20 73 61 6D 70 6C 65 20 70 72 6F A sample pro
003270: 67 72 61 6D 20 73 68 6F 77 73 20 72 61 6E 64 6F gram shows rando
003280: 6D 20 61 63 63 65 73 73 20 74 6F 20 61 20 66 69 m access to a fi
003290: 6C 65 20 63 6F 6E 74 61 69 6E 69 6E 67 20 73 61 le containing sa
0032A0: 6C 65 73 0D 0A 20 20 20 20 20 20 69 6E 66 6F 72 les.. infor
0032B0: 6D 61 74 69 6F 6E 20 66 6F 72 20 74 68 65 20 20 mation for the
0032C0: 76 61 72 69 6F 75 73 20 20 64 65 70 61 72 74 6D various departm
0032D0: 65 6E 74 73 20 20 6F 66 20 20 61 20 20 72 65 74 ents of a ret
0032E0: 61 69 6C 20 20 73 74 6F 72 65 2E 20 20 54 68 65 ail store. The
0032F0: 0D 0A 20 20 20 20 20 20 72 65 63 6F 72 64 73 20 .. records
003300: 61 72 65 20 6C 6F 63 61 74 65 64 20 62 79 20 64 are located by d
003310: 65 70 61 72 74 6D 65 6E 74 20 6E 75 6D 62 65 72 epartment number
003320: 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D ................
003330: 0A 20 20 20 20 20 20 53 61 6D 70 6C 65 20 70 72 . Sample pr
003340: 6F 67 72 61 6D 3A 0D 0A 0D 0A 20 20 20 20 20 20 ogram:....
003350: 20 20 20 20 20 20 20 20 50 52 4F 47 52 41 4D 20 PROGRAM
003360: 49 4E 51 55 49 52 59 3B 0D 0A 0D 0A 20 20 20 20 INQUIRY;....
003370: 20 20 20 20 20 20 20 20 20 20 4C 41 42 45 4C 20 LABEL
003380: 31 30 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 10;....
003390: 20 20 20 20 20 54 59 50 45 0D 0A 20 20 20 20 20 TYPE..
0033A0: 20 20 20 20 20 20 20 20 20 44 45 50 54 5F 52 45 DEPT_RE
0033B0: 43 4F 52 44 20 3D 20 52 45 43 4F 52 44 0D 0A 20 CORD = RECORD..
0033C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0033D0: 20 20 20 20 20 49 4E 56 45 4E 54 4F 52 59 20 20 INVENTORY
0033E0: 20 20 20 20 20 3A 20 52 45 41 4C 3B 0D 0A 20 20 : REAL;..
0033F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003410: 20 20 20 20 20 20 52 45 41 44 28 20 44 55 4D 50 READ( DUMP
003420: 5F 46 49 4C 45 3B 20 42 29 3B 0D 0A 20 20 20 20 _FILE; B);..
003430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003440: 20 20 20 20 20 20 20 20 20 20 57 52 49 54 45 4C WRITEL
003450: 4E 28 20 48 45 58 24 28 42 29 20 29 3B 0D 0A 20 N( HEX$(B) );..
003460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003470: 20 20 20 20 20 20 20 20 20 20 20 20 20 45 4E 44 END
003480: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
003490: 20 20 20 20 20 20 20 20 20 20 20 43 4C 4F 53 45 CLOSE
0034A0: 28 20 44 55 4D 50 5F 46 49 4C 45 20 29 3B 0D 0A ( DUMP_FILE );..
0034B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0034C0: 20 20 20 20 20 20 20 20 57 52 49 54 45 4C 4E 3B WRITELN;
0034D0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
0034E0: 20 20 20 20 20 20 20 20 20 20 45 4E 44 3B 0D 0A END;..
0034F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003500: 20 20 45 4E 44 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 END.......
003510: 20 20 37 2E 33 20 20 20 52 61 6E 64 6F 6D 20 66 7.3 Random f
003520: 69 6C 65 20 70 72 6F 63 65 73 73 69 6E 67 0D 0A ile processing..
003530: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 43 50 2F .. CP/
003540: 4D 20 20 76 65 72 73 69 6F 6E 20 32 2E 32 20 6F M version 2.2 o
003550: 72 20 68 69 67 68 65 72 20 69 73 20 72 65 71 75 r higher is requ
003560: 69 72 65 64 20 74 6F 20 75 73 65 20 4A 52 54 20 ired to use JRT
003570: 50 61 73 63 61 6C 20 72 61 6E 64 6F 6D 0D 0A 20 Pascal random..
003580: 20 20 20 20 20 66 69 6C 65 20 70 72 6F 63 65 73 file proces
003590: 73 69 6E 67 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 sing.....
0035A0: 20 20 20 20 46 6F 72 20 6D 61 6E 79 20 74 79 70 For many typ
0035B0: 65 73 20 6F 66 20 70 72 6F 63 65 73 73 69 6E 67 es of processing
0035C0: 20 69 74 20 69 73 20 6E 6F 74 20 6B 6E 6F 77 6E it is not known
0035D0: 20 69 6E 20 61 64 76 61 6E 63 65 20 69 6E 20 77 in advance in w
0035E0: 68 69 63 68 0D 0A 20 20 20 20 20 20 73 65 71 75 hich.. sequ
0035F0: 65 6E 63 65 20 74 68 65 20 72 65 63 6F 72 64 73 ence the records
003600: 20 20 20 20 4D 54 44 5F 53 41 4C 45 53 20 20 20 MTD_SALES
003610: 20 20 20 20 3A 20 52 45 41 4C 3B 0D 0A 20 20 20 : REAL;..
003620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003630: 20 20 20 59 54 44 5F 53 41 4C 45 53 20 20 20 20 YTD_SALES
003640: 20 20 20 3A 20 52 45 41 4C 3B 0D 0A 20 20 20 20 : REAL;..
003650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003660: 20 20 44 49 53 43 4F 55 4E 54 20 20 20 20 20 20 DISCOUNT
003670: 20 20 3A 20 52 45 41 4C 3B 0D 0A 20 20 20 20 20 : REAL;..
003680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003690: 20 45 4E 44 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 END;....
0036A0: 20 20 20 20 20 20 20 56 41 52 0D 0A 20 20 20 20 VAR..
0036B0: 20 20 20 20 20 20 20 20 20 20 49 4E 50 55 54 5F INPUT_
0036C0: 41 52 45 41 20 20 20 20 20 20 3A 20 44 45 50 54 AREA : DEPT
0036D0: 5F 52 45 43 4F 52 44 3B 0D 0A 20 20 20 20 20 20 _RECORD;..
0036E0: 20 20 20 20 20 20 20 20 44 45 50 54 5F 46 49 4C DEPT_FIL
0036F0: 45 20 20 20 20 20 20 20 3A 20 46 49 4C 45 20 4F E : FILE O
003700: 46 20 44 45 50 54 5F 52 45 43 4F 52 44 3B 0D 0A F DEPT_RECORD;..
003710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 45 DE
003720: 50 54 20 20 20 20 20 20 20 20 20 20 20 20 3A 20 PT :
003730: 49 4E 54 45 47 45 52 3B 0D 0A 0D 0A 20 20 20 20 INTEGER;....
003740: 20 20 20 20 20 20 20 20 20 20 42 45 47 49 4E 20 BEGIN
003750: 20 20 28 2A 20 49 4E 51 55 49 52 59 20 2A 29 0D (* INQUIRY *).
003760: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4F . O
003770: 50 45 4E 28 20 44 45 50 54 5F 46 49 4C 45 2C 20 PEN( DEPT_FILE,
003780: 27 43 3A 44 45 50 54 44 41 54 41 2E 52 4E 44 27 'C:DEPTDATA.RND'
003790: 2C 20 42 49 4E 41 52 59 20 29 3B 0D 0A 0D 0A 20 , BINARY );....
0037A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 50 REP
0037B0: 45 41 54 0D 0A 20 20 20 20 20 20 20 20 20 20 20 EAT..
0037C0: 20 20 20 20 20 57 52 49 54 45 28 27 45 6E 74 65 WRITE('Ente
0037D0: 72 20 64 65 70 74 20 6E 75 6D 62 65 72 20 3A 20 r dept number :
0037E0: 27 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ');..
0037F0: 20 20 20 20 20 52 45 41 44 4C 4E 28 20 44 45 50 READLN( DEP
003800: 20 6F 66 20 61 20 66 69 6C 65 20 77 69 6C 6C 20 of a file will
003810: 62 65 20 6E 65 65 64 65 64 2E 20 20 41 20 73 70 be needed. A sp
003820: 65 6C 6C 69 6E 67 20 64 69 63 74 69 6F 6E 61 72 elling dictionar
003830: 79 0D 0A 20 20 20 20 20 20 6F 72 20 6F 6E 6C 69 y.. or onli
003840: 6E 65 20 69 6E 71 75 69 72 79 20 63 75 73 74 6F ne inquiry custo
003850: 6D 65 72 20 64 61 74 61 62 61 73 65 20 6F 62 76 mer database obv
003860: 69 6F 75 73 6C 79 20 6D 75 73 74 20 75 73 65 20 iously must use
003870: 72 61 6E 64 6F 6D 20 20 61 63 63 65 73 73 0D 0A random access..
003880: 20 20 20 20 20 20 66 69 6C 65 73 2E 0D 0A 0D 0A files.....
003890: 20 20 20 20 20 20 20 20 20 20 20 49 6E 20 20 4A In J
0038A0: 52 54 20 20 50 61 73 63 61 6C 2C 20 20 72 61 6E RT Pascal, ran
0038B0: 64 6F 6D 20 61 63 63 65 73 73 20 69 73 20 66 75 dom access is fu
0038C0: 6C 6C 79 20 73 75 70 70 6F 72 74 65 64 2E 20 20 lly supported.
0038D0: 44 61 74 61 20 63 61 6E 20 62 65 0D 0A 20 20 20 Data can be..
0038E0: 20 20 20 72 65 61 64 20 61 6E 64 20 75 70 64 61 read and upda
0038F0: 74 65 64 20 62 79 20 70 72 6F 76 69 64 69 6E 67 ted by providing
003900: 20 74 68 65 20 72 65 6C 61 74 69 76 65 20 72 65 the relative re
003910: 63 6F 72 64 20 6E 75 6D 62 65 72 20 28 52 52 4E cord number (RRN
003920: 29 20 77 69 74 68 69 6E 0D 0A 20 20 20 20 20 20 ) within..
003930: 74 68 65 20 66 69 6C 65 20 66 6F 72 20 66 69 78 the file for fix
003940: 65 64 20 6C 65 6E 67 74 68 20 72 65 63 6F 72 64 ed length record
003950: 73 2E 20 20 54 68 65 20 66 69 72 73 74 20 20 72 s. The first r
003960: 65 63 6F 72 64 20 20 69 73 20 20 61 74 20 20 52 ecord is at R
003970: 52 4E 3D 30 2E 0D 0A 20 20 20 20 20 20 46 6F 72 RN=0... For
003980: 20 20 76 61 72 69 61 62 6C 65 20 20 6C 65 6E 67 variable leng
003990: 74 68 20 20 72 65 63 6F 72 64 73 2C 20 20 74 68 th records, th
0039A0: 65 20 20 64 61 74 61 20 20 63 61 6E 20 62 65 20 e data can be
0039B0: 72 65 61 64 20 6F 72 20 75 70 64 61 74 65 64 20 read or updated
0039C0: 62 79 0D 0A 20 20 20 20 20 20 70 72 6F 76 69 64 by.. provid
0039D0: 69 6E 67 20 74 68 65 20 72 65 6C 61 74 69 76 65 ing the relative
0039E0: 20 62 79 74 65 20 61 64 64 72 65 73 73 20 28 52 byte address (R
0039F0: 42 41 29 2E 20 20 54 68 65 20 52 42 41 20 69 73 BA). The RBA is
003A00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
003A10: 03 00 00 00 02 09 2A E5 03 00 C1 02 00 00 00 02 ......*.........
003A20: 03 00 C6 02 00 00 00 02 03 00 C2 02 00 00 00 02 ................
003A30: 03 00 C7 02 00 00 00 02 03 00 C3 02 00 00 00 02 ................
003A40: 03 00 C8 02 00 00 00 02 03 00 C4 02 00 00 00 02 ................
003A50: 03 00 C9 02 00 00 00 02 03 00 C5 02 00 00 00 02 ................
003A60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003A70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003A80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003A90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003B00: 54 20 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 T );..
003B10: 20 20 20 20 20 20 49 46 20 44 45 50 54 20 3D 20 IF DEPT =
003B20: 39 39 39 20 54 48 45 4E 20 47 4F 54 4F 20 31 30 999 THEN GOTO 10
003B30: 3B 20 20 20 28 2A 20 45 58 49 54 20 2A 29 0D 0A ; (* EXIT *)..
003B40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003B50: 52 45 41 44 28 20 44 45 50 54 5F 46 49 4C 45 2C READ( DEPT_FILE,
003B60: 20 52 52 4E 2C 20 44 45 50 54 3B 0D 0A 20 20 20 RRN, DEPT;..
003B70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003B80: 20 20 20 49 4E 50 55 54 5F 41 52 45 41 20 29 3B INPUT_AREA );
003B90: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
003BA0: 20 20 57 52 49 54 45 4C 4E 3B 0D 0A 20 20 20 20 WRITELN;..
003BB0: 20 20 20 20 20 20 20 20 20 20 20 20 57 52 49 54 WRIT
003BC0: 45 4C 4E 28 27 64 65 70 74 20 27 2C 44 45 50 54 ELN('dept ',DEPT
003BD0: 2C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
003BE0: 20 20 20 20 20 20 20 20 20 27 20 20 20 69 6E 76 ' inv
003BF0: 20 27 2C 49 4E 50 55 54 5F 41 52 45 41 2E 49 4E ',INPUT_AREA.IN
003C00: 56 45 4E 54 4F 52 59 3A 39 3A 32 2C 0D 0A 20 20 VENTORY:9:2,..
003C10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
003C20: 20 20 20 20 27 20 20 20 64 69 73 63 20 27 2C 49 ' disc ',I
003C30: 4E 50 55 54 5F 41 52 45 41 2E 44 49 53 43 4F 55 NPUT_AREA.DISCOU
003C40: 4E 54 3A 39 3A 32 29 3B 0D 0A 20 20 20 20 20 20 NT:9:2);..
003C50: 20 20 20 20 20 20 20 20 20 20 57 52 49 54 45 4C WRITEL
003C60: 4E 28 27 20 20 20 4D 54 44 20 73 61 6C 65 73 27 N(' MTD sales'
003C70: 2C 4D 54 44 5F 53 41 4C 45 53 3A 39 3A 32 2C 0D ,MTD_SALES:9:2,.
003C80: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
003C90: 20 20 20 20 20 20 20 27 20 20 20 59 54 44 20 73 ' YTD s
003CA0: 61 6C 65 73 27 2C 59 54 44 5F 53 41 4C 45 53 3A ales',YTD_SALES:
003CB0: 39 3A 32 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 9:2);..
003CC0: 20 20 20 20 20 20 20 57 52 49 54 45 4C 4E 3B 0D WRITELN;.
003CD0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 . 1
003CE0: 30 3A 20 20 20 20 20 28 2A 20 45 58 49 54 20 4C 0: (* EXIT L
003CF0: 41 42 45 4C 20 2A 29 0D 0A 20 20 20 20 20 20 20 ABEL *)..
003D00: 20 20 20 20 20 20 20 20 20 6B 65 79 20 73 69 7A key siz
003D10: 65 20 20 20 20 20 20 20 20 6D 61 78 20 72 65 63 e max rec
003D20: 6F 72 64 73 0D 0A 20 20 20 20 20 20 20 20 20 20 ords..
003D30: 20 20 20 20 5F 5F 5F 5F 5F 5F 5F 5F 20 20 20 20 ________
003D40: 20 20 20 20 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D ___________.
003D50: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
003D60: 20 20 34 20 20 20 20 20 20 20 20 20 20 20 20 20 4
003D70: 20 33 32 37 36 37 20 20 3C 2D 2D 2D 20 20 20 4E 32767 <--- N
003D80: 6F 74 20 6D 6F 72 65 20 74 68 61 6E 20 33 32 37 ot more than 327
003D90: 36 37 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 67..
003DA0: 20 20 20 20 20 36 20 20 20 20 20 20 20 20 20 20 6
003DB0: 20 20 20 20 32 38 39 32 38 20 20 20 20 20 20 20 28928
003DC0: 20 20 72 65 63 6F 72 64 73 20 65 76 65 72 20 61 records ever a
003DD0: 6C 6C 6F 77 65 64 0D 0A 20 20 20 20 20 20 20 20 llowed..
003DE0: 20 20 20 20 20 20 20 20 20 38 20 20 20 20 20 20 8
003DF0: 20 20 20 20 20 20 20 20 32 33 38 30 38 0D 0A 20 23808..
003E00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 1
003E10: 35 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31 5 1
003E20: 34 33 33 36 0D 0A 0D 0A 20 20 20 20 20 20 20 20 4336....
003E30: 20 20 20 54 68 65 20 6D 61 78 69 6D 75 6D 20 6E The maximum n
003E40: 75 6D 62 65 72 20 6F 66 20 72 65 63 6F 72 64 73 umber of records
003E50: 20 73 68 6F 75 6C 64 20 62 65 20 20 73 65 74 20 should be set
003E60: 20 74 6F 20 20 73 6F 6D 65 77 68 61 74 20 20 6C to somewhat l
003E70: 65 73 73 0D 0A 20 20 20 20 20 20 74 68 61 6E 20 ess.. than
003E80: 20 74 68 65 20 20 6D 61 78 69 6D 75 6D 20 74 68 the maximum th
003E90: 65 6F 72 65 74 69 63 61 6C 20 6E 75 6D 62 65 72 eoretical number
003EA0: 20 6F 66 20 72 65 63 6F 72 64 73 2C 20 74 6F 20 of records, to
003EB0: 70 72 65 76 65 6E 74 20 74 68 65 20 6C 6F 73 73 prevent the loss
003EC0: 0D 0A 20 20 20 20 20 20 6F 66 20 61 20 72 65 63 .. of a rec
003ED0: 6F 72 64 20 77 68 65 6E 20 61 64 64 69 6E 67 20 ord when adding
003EE0: 74 6F 20 61 6E 20 75 6E 62 61 6C 61 6E 63 65 64 to an unbalanced
003EF0: 20 66 69 6C 65 2E 20 20 4E 6F 74 65 20 20 61 6C file. Note al
003F00: 20 20 20 20 20 20 20 55 4E 54 49 4C 20 44 45 50 UNTIL DEP
003F10: 54 20 3D 20 39 39 39 3B 0D 0A 0D 0A 20 20 20 20 T = 999;....
003F20: 20 20 20 20 20 20 20 20 20 20 43 4C 4F 53 45 28 CLOSE(
003F30: 20 44 45 50 54 5F 46 49 4C 45 20 29 3B 0D 0A 20 DEPT_FILE );..
003F40: 20 20 20 20 20 20 20 20 20 20 20 20 20 45 4E 44 END
003F50: 20 20 20 20 20 28 2A 20 49 4E 51 55 49 52 59 20 (* INQUIRY
003F60: 2A 29 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 37 *)....... 7
003F70: 2E 34 20 20 20 49 6E 64 65 78 65 64 20 66 69 6C .4 Indexed fil
003F80: 65 20 70 72 6F 63 65 73 73 69 6E 67 0D 0A 0D 0A e processing....
003F90: 20 20 20 20 20 20 20 20 20 20 20 43 50 2F 4D 20 CP/M
003FA0: 76 65 72 73 69 6F 6E 20 32 2E 32 20 6F 72 20 68 version 2.2 or h
003FB0: 69 67 68 65 72 20 69 73 20 72 65 71 75 69 72 65 igher is require
003FC0: 64 20 74 6F 20 75 73 65 20 4A 52 54 20 50 61 73 d to use JRT Pas
003FD0: 63 61 6C 20 69 6E 64 65 78 65 64 0D 0A 20 20 20 cal indexed..
003FE0: 20 20 20 66 69 6C 65 20 70 72 6F 63 65 73 73 69 file processi
003FF0: 6E 67 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 ng.....
004000: 20 20 42 65 67 69 6E 6E 69 6E 67 20 77 69 74 68 Beginning with
004010: 20 76 65 72 73 69 6F 6E 20 33 2E 30 2C 20 4A 52 version 3.0, JR
004020: 54 20 50 61 73 63 61 6C 20 70 72 6F 76 69 64 65 T Pascal provide
004030: 73 20 66 75 6C 6C 20 73 75 70 70 6F 72 74 20 66 s full support f
004040: 6F 72 0D 0A 20 20 20 20 20 20 69 6E 64 65 78 65 or.. indexe
004050: 64 20 20 66 69 6C 65 73 2E 20 20 20 54 68 65 20 d files. The
004060: 20 69 6E 64 65 78 20 66 69 6C 65 20 73 79 73 74 index file syst
004070: 65 6D 20 69 73 20 69 6D 70 6C 65 6D 65 6E 74 65 em is implemente
004080: 64 20 61 73 20 32 20 65 78 74 65 72 6E 61 6C 0D d as 2 external.
004090: 0A 20 20 20 20 20 20 70 72 6F 63 65 64 75 72 65 . procedure
0040A0: 73 20 73 6F 20 74 68 61 74 20 69 74 20 6F 63 63 s so that it occ
0040B0: 75 70 69 65 73 20 6E 6F 20 6D 61 69 6E 20 73 74 upies no main st
0040C0: 6F 72 61 67 65 20 77 68 65 6E 20 69 74 20 69 73 orage when it is
0040D0: 20 20 6E 6F 74 20 20 62 65 69 6E 67 0D 0A 20 20 not being..
0040E0: 20 20 20 20 75 73 65 64 2E 0D 0A 0D 0A 20 20 20 used.....
0040F0: 20 20 20 20 20 20 20 20 49 6E 64 65 78 65 64 20 Indexed
004100: 73 6F 20 20 74 68 61 74 20 20 74 68 65 0D 0A 20 so that the..
004110: 20 20 20 20 20 66 69 6C 65 20 20 6F 66 20 20 69 file of i
004120: 6E 64 65 78 65 73 20 77 69 6C 6C 20 62 65 20 32 ndexes will be 2
004130: 35 37 6B 20 77 68 65 6E 20 74 68 65 20 6D 61 78 57k when the max
004140: 69 6D 75 6D 20 6E 75 6D 62 65 72 20 6F 66 20 72 imum number of r
004150: 65 63 6F 72 64 73 20 61 72 65 0D 0A 20 20 20 20 ecords are..
004160: 20 20 65 6E 74 65 72 65 64 2C 20 73 6F 20 61 20 entered, so a
004170: 72 65 61 73 6F 6E 61 62 6C 65 20 28 68 69 67 68 reasonable (high
004180: 29 20 20 65 73 74 69 6D 61 74 65 20 20 73 68 6F ) estimate sho
004190: 75 6C 64 20 20 62 65 20 20 75 73 65 64 20 20 66 uld be used f
0041A0: 6F 72 20 20 74 68 65 0D 0A 20 20 20 20 20 20 6D or the.. m
0041B0: 61 78 69 6D 75 6D 20 6E 75 6D 62 65 72 20 6F 66 aximum number of
0041C0: 20 72 65 63 6F 72 64 73 2E 0D 0A 0D 0A 20 20 20 records.....
0041D0: 20 20 20 20 20 20 20 20 49 4D 50 4F 52 54 41 4E IMPORTAN
0041E0: 54 20 20 2D 20 20 4E 6F 20 6B 65 79 20 73 68 6F T - No key sho
0041F0: 75 6C 64 20 63 6F 6E 74 61 69 6E 20 61 6C 6C 20 uld contain all
004200: 7A 65 72 6F 65 73 2C 20 73 69 6E 63 65 20 61 20 zeroes, since a
004210: 7A 65 72 6F 20 6B 65 79 0D 0A 20 20 20 20 20 20 zero key..
004220: 69 73 20 75 73 65 64 20 74 6F 20 69 6E 64 69 63 is used to indic
004230: 61 74 65 20 64 65 6C 65 74 65 64 20 6B 65 79 73 ate deleted keys
004240: 20 61 6E 64 20 72 65 63 6F 72 64 73 2E 0D 0A 0D and records....
004250: 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 . The
004260: 6B 65 79 20 6D 75 73 74 20 62 65 20 74 68 65 20 key must be the
004270: 66 69 72 73 74 20 66 69 65 6C 64 20 69 6E 20 65 first field in e
004280: 61 63 68 20 72 65 63 6F 72 64 2E 20 20 20 54 68 ach record. Th
004290: 65 20 20 6B 65 79 20 20 73 69 7A 65 0D 0A 20 20 e key size..
0042A0: 20 20 20 20 6D 61 79 20 62 65 20 66 72 6F 6D 20 may be from
0042B0: 32 20 74 6F 20 33 32 20 62 79 74 65 73 2E 0D 0A 2 to 32 bytes...
0042C0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 41 20 75 .. A u
0042D0: 74 69 6C 69 74 79 20 70 72 6F 67 72 61 6D 20 49 tility program I
0042E0: 4E 44 45 58 32 20 69 73 20 70 72 6F 76 69 64 65 NDEX2 is provide
0042F0: 64 20 74 6F 20 72 65 6F 72 67 61 6E 69 7A 65 20 d to reorganize
004300: 20 66 69 6C 65 73 20 63 6F 6E 73 69 73 74 20 6F files consist o
004310: 66 20 74 77 6F 20 73 65 70 61 72 61 74 65 20 64 f two separate d
004320: 69 73 6B 20 66 69 6C 65 73 3A 20 74 68 65 20 6D isk files: the m
004330: 61 69 6E 20 64 61 74 61 0D 0A 20 20 20 20 20 20 ain data..
004340: 66 69 6C 65 20 77 69 74 68 20 61 20 66 69 6C 65 file with a file
004350: 74 79 70 65 20 6F 66 20 44 41 54 20 61 6E 64 20 type of DAT and
004360: 61 6E 20 69 6E 64 65 78 20 66 69 6C 65 20 77 69 an index file wi
004370: 74 68 20 20 74 68 65 20 20 66 69 6C 65 74 79 70 th the filetyp
004380: 65 20 20 6F 66 0D 0A 20 20 20 20 20 20 49 58 30 e of.. IX0
004390: 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
0043A0: 54 68 65 20 20 69 6E 64 65 78 65 64 20 20 66 69 The indexed fi
0043B0: 6C 65 20 20 73 79 73 74 65 6D 20 20 68 61 73 20 le system has
0043C0: 20 33 20 20 63 6F 6D 70 6F 6E 65 6E 74 73 2E 20 3 components.
0043D0: 20 49 4E 44 45 58 30 20 65 78 74 65 72 6E 61 6C INDEX0 external
0043E0: 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 64 75 72 .. procedur
0043F0: 65 20 70 65 72 66 6F 72 6D 73 20 6D 6F 73 74 20 e performs most
004400: 6F 66 20 74 68 65 20 66 75 6E 63 74 69 6F 6E 73 of the functions
004410: 2E 20 49 4E 44 45 58 31 20 20 65 78 74 65 72 6E . INDEX1 extern
004420: 61 6C 20 20 70 72 6F 63 65 64 75 72 65 0D 0A 20 al procedure..
004430: 20 20 20 20 20 63 6F 6D 70 72 65 73 73 65 73 20 compresses
004440: 20 74 68 65 20 20 64 61 74 61 20 20 66 69 6C 65 the data file
004450: 73 20 20 61 6E 64 20 72 65 62 61 6C 61 6E 63 65 s and rebalance
004460: 73 20 74 68 65 20 69 6E 64 65 78 65 73 2E 20 20 s the indexes.
004470: 54 68 65 20 49 4E 44 45 58 32 0D 0A 20 20 20 20 The INDEX2..
004480: 20 20 70 72 6F 67 72 61 6D 20 69 73 20 65 78 65 program is exe
004490: 63 75 74 65 64 20 62 79 20 69 74 73 65 6C 66 20 cuted by itself
0044A0: 61 6E 64 20 20 72 65 6F 72 67 61 6E 69 7A 65 73 and reorganizes
0044B0: 20 20 74 68 65 20 20 66 69 6C 65 73 20 20 66 6F the files fo
0044C0: 72 20 20 6D 6F 72 65 0D 0A 20 20 20 20 20 20 65 r more.. e
0044D0: 66 66 69 63 69 65 6E 74 20 61 63 63 65 73 73 2E fficient access.
0044E0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 .... T
0044F0: 68 65 20 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 he external proc
004500: 74 68 65 20 64 61 74 61 20 66 69 6C 65 0D 0A 20 the data file..
004510: 20 20 20 20 20 61 6E 64 20 67 65 6E 65 72 61 74 and generat
004520: 65 20 6E 65 77 20 69 6E 64 65 78 20 66 69 6C 65 e new index file
004530: 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 37 2E s....... 7.
004540: 34 2E 31 20 20 49 6E 64 65 78 20 66 69 6C 65 20 4.1 Index file
004550: 66 6F 72 6D 61 74 0D 0A 0D 0A 20 20 20 20 20 20 format....
004560: 20 20 20 20 20 54 68 65 20 20 69 6E 64 65 78 20 The index
004570: 20 66 69 6C 65 20 69 73 20 64 69 76 69 64 65 64 file is divided
004580: 20 69 6E 74 6F 20 6F 6E 65 20 70 72 69 6D 61 72 into one primar
004590: 79 20 69 6E 64 65 78 20 61 6E 64 20 75 70 20 74 y index and up t
0045A0: 6F 20 32 35 36 0D 0A 20 20 20 20 20 20 73 65 63 o 256.. sec
0045B0: 6F 6E 64 61 72 79 20 69 6E 64 65 78 65 73 2E 20 ondary indexes.
0045C0: 20 45 61 63 68 20 69 6E 64 65 78 20 62 6C 6F 63 Each index bloc
0045D0: 6B 20 69 73 20 31 30 32 34 20 62 79 74 65 73 2E k is 1024 bytes.
0045E0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 .... T
0045F0: 68 65 20 70 72 69 6D 61 72 79 20 69 6E 64 65 78 he primary index
004600: 20 63 6F 6E 74 61 69 6E 73 20 32 35 36 20 34 2D contains 256 4-
004610: 62 79 74 65 20 66 69 65 6C 64 73 2E 20 20 45 61 byte fields. Ea
004620: 63 68 20 6F 66 20 74 68 65 73 65 20 20 69 73 0D ch of these is.
004630: 0A 20 20 20 20 20 20 74 68 65 20 66 69 72 73 74 . the first
004640: 20 34 20 62 79 74 65 73 20 6F 66 20 74 68 65 20 4 bytes of the
004650: 6C 6F 77 65 73 74 20 6B 65 79 20 69 6E 20 61 20 lowest key in a
004660: 73 65 63 6F 6E 64 61 72 79 20 69 6E 64 65 78 2E secondary index.
004670: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 .... T
004680: 68 65 20 20 73 65 63 6F 6E 64 61 72 79 20 20 69 he secondary i
004690: 6E 64 65 78 65 73 20 20 63 6F 6E 74 61 69 6E 20 ndexes contain
0046A0: 20 61 63 74 75 61 6C 20 20 6B 65 79 20 20 76 61 actual key va
0046B0: 6C 75 65 73 20 61 6E 64 20 33 2D 62 79 74 65 0D lues and 3-byte.
0046C0: 0A 20 20 20 20 20 20 72 65 63 6F 72 64 20 6C 6F . record lo
0046D0: 61 63 61 74 6F 72 20 66 69 65 6C 64 73 2E 20 20 acator fields.
0046E0: 54 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 6B 65 The number of ke
0046F0: 79 73 20 70 65 72 20 73 65 63 6F 6E 64 61 72 79 ys per secondary
004700: 65 64 75 72 65 20 49 4E 44 45 58 30 20 70 65 72 edure INDEX0 per
004710: 66 6F 72 6D 73 20 74 68 65 73 65 20 6F 70 65 72 forms these oper
004720: 61 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20 ations:....
004730: 20 20 20 20 20 20 20 20 20 41 20 20 20 20 20 20 A
004740: 20 61 64 64 20 61 20 6E 65 77 20 72 65 63 6F 72 add a new recor
004750: 64 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 d..
004760: 20 42 20 20 20 20 20 20 20 72 65 61 64 20 66 69 B read fi
004770: 72 73 74 20 72 65 63 6F 72 64 20 28 62 65 67 69 rst record (begi
004780: 6E 6E 69 6E 67 29 0D 0A 20 20 20 20 20 20 20 20 nning)..
004790: 20 20 20 20 20 20 43 20 20 20 20 20 20 20 63 6C C cl
0047A0: 6F 73 65 20 66 69 6C 65 0D 0A 20 20 20 20 20 20 ose file..
0047B0: 20 20 20 20 20 20 20 20 44 20 20 20 20 20 20 20 D
0047C0: 64 65 6C 65 74 65 20 61 20 72 65 63 6F 72 64 0D delete a record.
0047D0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 . F
0047E0: 20 20 20 20 20 20 20 66 6C 75 73 68 20 62 75 66 flush buf
0047F0: 66 65 72 73 2C 20 63 6C 6F 73 65 20 61 6E 64 20 fers, close and
004800: 72 65 6F 70 65 6E 20 66 69 6C 65 73 0D 0A 20 20 reopen files..
004810: 20 20 20 20 20 20 20 20 20 20 20 20 4E 20 20 20 N
004820: 20 20 20 20 6E 65 77 20 66 69 6C 65 20 61 6C 6C new file all
004830: 6F 63 61 74 69 6F 6E 0D 0A 20 20 20 20 20 20 20 ocation..
004840: 20 20 20 20 20 20 20 4F 20 20 20 20 20 20 20 6F O o
004850: 70 65 6E 20 66 69 6C 65 0D 0A 20 20 20 20 20 20 pen file..
004860: 20 20 20 20 20 20 20 20 51 20 20 20 20 20 20 20 Q
004870: 71 75 65 72 79 20 77 68 65 74 68 65 72 20 69 6E query whether in
004880: 64 65 78 65 73 20 73 68 6F 75 6C 64 20 62 65 20 dexes should be
004890: 62 61 6C 61 6E 63 65 64 0D 0A 20 20 20 20 20 20 balanced..
0048A0: 20 20 20 20 20 20 20 20 52 20 20 20 20 20 20 20 R
0048B0: 72 65 61 64 20 61 20 72 65 63 6F 72 64 0D 0A 20 read a record..
0048C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 20 20 S
0048D0: 20 20 20 20 20 72 65 61 64 20 6E 65 78 74 20 72 read next r
0048E0: 65 63 6F 72 64 20 69 6E 20 73 65 71 75 65 6E 63 ecord in sequenc
0048F0: 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 e..
004900: 20 69 6E 64 65 78 20 69 73 3A 0D 0A 0D 0A 20 20 index is:....
004910: 20 20 20 20 20 20 20 20 20 20 20 20 31 30 32 34 1024
004920: 20 44 49 56 20 28 4B 45 59 5F 53 49 5A 45 20 2B DIV (KEY_SIZE +
004930: 33 29 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 37 2E 3)...... 7.
004940: 34 2E 32 20 20 44 61 74 61 20 66 69 6C 65 20 66 4.2 Data file f
004950: 6F 72 6D 61 74 0D 0A 0D 0A 20 20 20 20 20 20 20 ormat....
004960: 20 20 20 20 54 68 65 20 64 61 74 61 20 66 69 6C The data fil
004970: 65 20 63 6F 6E 73 69 73 74 73 20 6F 66 20 61 20 e consists of a
004980: 31 30 32 34 20 62 79 74 65 20 63 6F 6E 74 72 6F 1024 byte contro
004990: 6C 20 72 65 63 6F 72 64 20 66 6F 6C 6C 6F 77 65 l record followe
0049A0: 64 20 62 79 0D 0A 20 20 20 20 20 20 74 68 65 20 d by.. the
0049B0: 64 61 74 61 20 72 65 63 6F 72 64 73 2E 0D 0A 0D data records....
0049C0: 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 . The
0049D0: 63 6F 6E 74 72 6F 6C 20 72 65 63 6F 72 64 20 63 control record c
0049E0: 6F 6E 74 61 69 6E 73 20 74 68 65 20 66 69 6C 65 ontains the file
0049F0: 6E 61 6D 65 2C 20 6D 61 78 69 6D 75 6D 20 72 65 name, maximum re
004A00: 63 6F 72 64 20 20 63 6F 75 6E 74 2C 0D 0A 20 20 cord count,..
004A10: 20 20 20 20 63 75 72 72 65 6E 74 20 20 72 65 63 current rec
004A20: 6F 72 64 20 20 63 6F 75 6E 74 2C 20 20 6B 65 79 ord count, key
004A30: 20 20 73 69 7A 65 2C 20 20 72 65 63 6F 72 64 20 size, record
004A40: 20 73 69 7A 65 2C 20 20 64 65 6C 65 74 65 20 63 size, delete c
004A50: 6F 75 6E 74 2C 20 61 6E 64 0D 0A 20 20 20 20 20 ount, and..
004A60: 20 64 65 6C 65 74 65 64 20 72 65 63 6F 72 64 20 deleted record
004A70: 6C 69 73 74 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 list.........
004A80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004A90: 20 20 20 20 20 20 20 20 20 20 20 49 6E 64 65 78 Index
004AA0: 20 66 69 6C 65 20 66 6F 72 6D 61 74 0D 0A 0D 0A file format....
004AB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004AC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 2D !-
004AD0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
004AE0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 21 0D --------------!.
004AF0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
004B00: 20 55 20 20 20 20 20 20 20 75 70 64 61 74 65 20 U update
004B10: 61 20 72 65 63 6F 72 64 0D 0A 20 20 20 20 20 20 a record..
004B20: 20 20 20 20 20 20 20 20 57 20 20 20 20 20 20 20 W
004B30: 69 73 73 75 65 20 61 20 77 61 72 6E 69 6E 67 0D issue a warning.
004B40: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5A . Z
004B50: 20 20 20 20 20 20 20 74 75 72 6E 20 6F 66 66 20 turn off
004B60: 77 61 72 6E 69 6E 67 20 6D 65 73 73 61 67 65 0D warning message.
004B70: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 49 4E 44 ... IND
004B80: 45 58 31 20 70 65 72 66 6F 72 6D 73 20 74 68 65 EX1 performs the
004B90: 73 65 20 6F 70 65 72 61 74 69 6F 6E 73 3A 0D 0A se operations:..
004BA0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
004BB0: 4A 20 20 20 20 20 20 20 72 65 62 61 6C 61 6E 63 J rebalanc
004BC0: 65 20 74 68 65 20 69 6E 64 65 78 65 73 0D 0A 20 e the indexes..
004BD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 4B 20 20 K
004BE0: 20 20 20 20 20 63 6F 6D 70 72 65 73 73 20 64 61 compress da
004BF0: 74 61 20 66 69 6C 65 20 61 6E 64 20 62 61 6C 61 ta file and bala
004C00: 6E 63 65 20 69 6E 64 65 78 65 73 0D 0A 0D 0A 20 nce indexes....
004C10: 20 20 20 20 20 20 20 20 20 20 52 65 63 6F 72 64 Record
004C20: 73 20 6D 75 73 74 20 61 6C 6C 20 62 65 20 74 68 s must all be th
004C30: 65 20 73 61 6D 65 20 73 69 7A 65 20 2D 20 66 72 e same size - fr
004C40: 6F 6D 20 31 36 20 74 6F 20 32 30 34 38 20 62 79 om 16 to 2048 by
004C50: 74 65 73 2E 20 20 54 68 65 79 0D 0A 20 20 20 20 tes. They..
004C60: 20 20 6E 65 65 64 20 20 6E 6F 74 20 20 62 65 20 need not be
004C70: 20 61 20 6D 75 6C 74 69 70 6C 65 20 6F 66 20 31 a multiple of 1
004C80: 32 38 20 62 79 74 65 73 2E 20 54 68 65 20 6D 61 28 bytes. The ma
004C90: 78 69 6D 75 6D 20 6E 75 6D 62 65 72 20 6F 66 20 ximum number of
004CA0: 72 65 63 6F 72 64 73 0D 0A 20 20 20 20 20 20 64 records.. d
004CB0: 65 70 65 6E 64 73 20 6F 6E 20 74 68 65 20 6B 65 epends on the ke
004CC0: 79 20 73 69 7A 65 3A 0D 0A 0D 0A 20 20 20 20 20 y size:....
004CD0: 20 20 20 20 20 20 20 20 20 28 31 30 32 34 20 44 (1024 D
004CE0: 49 56 20 28 4B 45 59 5F 53 49 5A 45 20 2B 33 29 IV (KEY_SIZE +3)
004CF0: 29 20 2A 20 32 35 36 0D 0A 0D 0A 20 20 20 20 20 ) * 256....
004D00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
004D10: 04 00 00 00 02 09 2A E5 04 00 C1 02 00 00 00 02 ......*.........
004D20: 04 00 C6 02 00 00 00 02 04 00 C2 02 00 00 00 02 ................
004D30: 04 00 C7 02 00 00 00 02 04 00 C3 02 00 00 00 02 ................
004D40: 04 00 C8 02 00 00 00 02 04 00 C4 02 00 00 00 02 ................
004D50: 04 00 C9 02 00 00 00 02 04 00 C5 02 00 00 00 02 ................
004D60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004D70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004D80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004D90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004DF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004E00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 !
004E10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004E20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 !
004E30: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
004E40: 31 20 4B 20 62 6C 6F 63 6B 73 20 20 20 20 20 20 1 K blocks
004E50: 21 20 20 20 20 70 72 69 6D 61 72 79 20 69 6E 64 ! primary ind
004E60: 65 78 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ex
004E70: 21 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 !..
004E80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004E90: 20 21 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D !--------------
004EA0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
004EB0: 2D 21 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 -!..
004EC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004ED0: 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 20 !
004EE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004EF0: 20 20 21 0D 0A 20 20 20 20 20 20 20 20 20 20 20 !..
004F00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004F10: 20 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 !
004F20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004F30: 20 20 20 21 0D 0A 20 20 20 20 20 20 20 20 20 20 !..
004F40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004F50: 20 20 20 20 21 2D 2D 2D 2D 2D 20 75 70 20 74 6F !----- up to
004F60: 20 32 35 36 20 20 20 20 20 20 20 20 2D 2D 2D 2D 256 ----
004F70: 2D 2D 2D 2D 21 0D 0A 20 20 20 20 20 20 20 20 20 ----!..
004F80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004F90: 20 20 20 20 20 21 20 20 20 20 20 20 20 20 20 20 !
004FA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004FB0: 20 20 20 20 20 21 0D 0A 20 20 20 20 20 20 20 20 !..
004FC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
004FD0: 20 20 20 20 20 20 21 20 20 20 20 20 20 73 65 63 ! sec
004FE0: 6F 6E 64 61 72 79 20 69 6E 64 65 78 65 73 20 20 ondary indexes
004FF0: 20 20 20 20 20 20 21 0D 0A 20 20 20 20 20 20 20 !..
005000: 62 65 20 69 73 73 75 65 64 2C 20 73 65 65 20 63 be issued, see c
005010: 6F 6D 6D 61 6E 64 0D 0A 20 20 20 20 20 20 27 57 ommand.. 'W
005020: 27 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 '.....
005030: 20 41 6E 20 69 6E 64 65 78 65 64 20 66 69 6C 65 An indexed file
005040: 20 6D 75 73 74 20 62 65 20 61 6C 6C 6F 63 61 74 must be allocat
005050: 65 64 20 62 65 66 6F 72 65 20 69 74 20 20 63 61 ed before it ca
005060: 6E 20 20 62 65 20 20 6F 70 65 6E 65 64 20 20 6F n be opened o
005070: 72 0D 0A 20 20 20 20 20 20 75 73 65 64 20 69 6E r.. used in
005080: 20 61 6E 79 20 77 61 79 2E 0D 0A 0D 0A 20 20 20 any way.....
005090: 20 20 20 20 20 20 20 20 45 61 63 68 20 74 69 6D Each tim
0050A0: 65 20 49 4E 44 45 58 30 20 69 73 20 63 61 6C 6C e INDEX0 is call
0050B0: 65 64 2C 20 61 20 76 61 6C 69 64 20 63 6F 6D 6D ed, a valid comm
0050C0: 61 6E 64 20 63 6F 64 65 20 6D 75 73 74 20 62 65 and code must be
0050D0: 20 70 61 73 73 65 64 2E 0D 0A 20 20 20 20 20 20 passed...
0050E0: 54 68 65 20 20 6B 65 79 2C 20 64 61 74 61 2C 20 The key, data,
0050F0: 61 6E 64 20 69 72 20 70 61 72 61 6D 65 74 65 72 and ir parameter
005100: 73 20 61 72 65 20 61 6C 73 6F 20 72 65 71 75 69 s are also requi
005110: 72 65 64 2C 20 61 6C 74 68 6F 75 67 68 20 6B 65 red, although ke
005120: 79 20 61 6E 64 0D 0A 20 20 20 20 20 20 64 61 74 y and.. dat
005130: 61 20 77 69 6C 6C 20 6E 6F 74 20 62 65 20 75 73 a will not be us
005140: 65 64 20 62 79 20 65 76 65 72 79 20 63 6F 6D 6D ed by every comm
005150: 61 6E 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 and.....
005160: 20 20 20 49 74 20 69 73 20 61 6C 6C 6F 77 65 64 It is allowed
005170: 20 74 6F 20 68 61 76 65 20 6D 75 6C 74 69 70 6C to have multipl
005180: 65 20 69 6E 64 65 78 65 64 20 66 69 6C 65 73 20 e indexed files
005190: 6F 70 65 6E 20 20 61 74 20 20 74 68 65 20 20 73 open at the s
0051A0: 61 6D 65 0D 0A 20 20 20 20 20 20 74 69 6D 65 2E ame.. time.
0051B0: 20 20 45 61 63 68 20 6F 6E 65 20 69 73 20 69 6E Each one is in
0051C0: 64 65 6E 74 69 66 69 65 64 20 62 79 20 61 20 64 dentified by a d
0051D0: 69 66 66 65 72 65 6E 74 20 69 6E 64 65 78 5F 72 ifferent index_r
0051E0: 65 63 6F 72 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 ecord.....
0051F0: 20 20 20 20 20 54 68 65 20 20 69 6E 64 65 78 20 The index
005200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005210: 20 20 20 20 20 20 20 21 2D 2D 2D 2D 2D 20 20 20 !-----
005220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D -
005230: 2D 2D 2D 2D 2D 2D 2D 21 0D 0A 20 20 20 20 20 20 -------!..
005240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005250: 20 20 20 20 20 20 20 20 21 20 20 20 20 20 20 20 !
005260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005270: 20 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 20 !..
005280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005290: 20 20 20 20 20 20 20 20 20 21 20 20 20 20 20 20 !
0052A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0052B0: 20 20 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 !..
0052C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0052D0: 20 20 20 20 20 20 20 20 20 20 21 2D 2D 2D 2D 2D !-----
0052E0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
0052F0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 21 0D 0A 0D 0A 0D ----------!.....
005300: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
005310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005320: 20 44 61 74 61 20 66 69 6C 65 20 66 6F 72 6D 61 Data file forma
005330: 74 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 t....
005340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005350: 20 20 20 21 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D !------------
005360: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
005370: 2D 2D 2D 21 0D 0A 20 20 20 20 20 20 20 20 20 20 ---!..
005380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005390: 20 20 20 20 21 20 20 20 63 6F 6E 74 72 6F 6C 20 ! control
0053A0: 72 65 63 6F 72 64 20 20 31 20 4B 20 20 20 20 20 record 1 K
0053B0: 20 20 20 20 21 0D 0A 20 20 20 20 20 20 20 20 20 !..
0053C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0053D0: 20 20 20 20 20 21 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D !----------
0053E0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
0053F0: 2D 2D 2D 2D 2D 21 0D 0A 20 20 20 20 20 20 20 20 -----!..
005400: 72 65 63 6F 72 64 20 28 49 52 29 20 73 68 6F 75 record (IR) shou
005410: 6C 64 20 62 65 20 73 65 74 20 74 6F 20 62 6C 61 ld be set to bla
005420: 6E 6B 73 20 62 65 66 6F 72 65 20 69 6E 64 69 76 nks before indiv
005430: 69 64 75 61 6C 0D 0A 20 20 20 20 20 20 66 69 65 idual.. fie
005440: 6C 64 73 20 61 72 65 20 69 6E 69 74 69 61 6C 69 lds are initiali
005450: 7A 65 64 2E 20 20 46 6F 72 20 61 20 67 69 76 65 zed. For a give
005460: 6E 20 69 6E 64 65 78 20 66 69 6C 65 2C 20 74 68 n index file, th
005470: 65 20 20 66 69 72 73 74 20 20 63 61 6C 6C 20 20 e first call
005480: 74 6F 0D 0A 20 20 20 20 20 20 49 4E 44 45 58 30 to.. INDEX0
005490: 20 69 6E 20 61 20 70 72 6F 67 72 61 6D 20 73 68 in a program sh
0054A0: 6F 75 6C 64 20 62 65 20 74 6F 20 6F 70 65 6E 20 ould be to open
0054B0: 28 27 4F 27 29 20 6F 72 20 63 72 65 61 74 65 20 ('O') or create
0054C0: 28 27 4E 27 29 20 74 68 65 20 69 6E 64 65 78 0D ('N') the index.
0054D0: 0A 20 20 20 20 20 20 61 6E 64 20 20 64 61 74 61 . and data
0054E0: 20 20 66 69 6C 65 73 2E 20 20 28 49 4E 44 45 58 files. (INDEX
0054F0: 30 20 20 63 61 6E 20 62 65 20 63 61 6C 6C 65 64 0 can be called
005500: 20 77 69 74 68 20 74 68 65 20 27 57 27 20 66 69 with the 'W' fi
005510: 72 73 74 2C 20 73 6F 20 74 68 61 74 0D 0A 20 20 rst, so that..
005520: 20 20 20 20 65 72 72 6F 72 20 6D 65 73 73 61 67 error messag
005530: 65 73 20 77 69 6C 6C 20 62 65 20 70 72 69 6E 74 es will be print
005540: 65 64 2E 29 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 ed.)......
005550: 37 2E 34 2E 34 20 20 49 4E 44 45 58 20 63 6F 6D 7.4.4 INDEX com
005560: 6D 61 6E 64 73 0D 0A 0D 0A 20 20 20 20 20 20 20 mands....
005570: 20 20 20 20 43 6F 6D 6D 61 6E 64 73 20 4A 20 61 Commands J a
005580: 6E 64 20 4B 20 20 61 72 65 20 20 70 72 6F 63 65 nd K are proce
005590: 73 73 65 64 20 20 62 79 20 20 49 4E 44 45 58 31 ssed by INDEX1
0055A0: 2E 20 20 20 41 6C 6C 20 20 6F 74 68 65 72 73 20 . All others
0055B0: 20 61 72 65 0D 0A 20 20 20 20 20 20 70 72 6F 63 are.. proc
0055C0: 65 73 73 65 64 20 62 79 20 49 4E 44 45 58 30 2E essed by INDEX0.
0055D0: 0D 0A 0D 0A 20 20 20 20 20 20 41 20 20 20 20 20 .... A
0055E0: 20 20 61 64 64 20 61 20 6E 65 77 20 72 65 63 6F add a new reco
0055F0: 72 64 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 rd..
005600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005610: 20 20 20 20 20 20 21 20 20 20 20 20 20 20 20 20 !
005620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005630: 20 20 20 20 20 20 21 0D 0A 20 20 20 20 20 20 20 !..
005640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005650: 20 20 20 20 20 20 20 21 20 20 20 64 61 74 61 20 ! data
005660: 72 65 63 6F 72 64 73 20 20 20 20 20 20 20 20 20 records
005670: 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 20 20 !..
005680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005690: 20 20 20 20 20 20 20 20 21 20 20 20 20 20 20 20 !
0056A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0056B0: 20 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 20 !..
0056C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0056D0: 20 20 20 20 20 20 20 20 20 21 20 20 20 20 20 20 !
0056E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0056F0: 20 20 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 !..
005700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005710: 20 20 20 20 20 20 20 20 20 20 21 20 20 20 20 20 !
005720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005730: 20 20 20 20 20 20 20 20 20 20 21 0D 0A 20 20 20 !..
005740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005750: 20 20 20 20 20 20 20 20 20 20 20 21 2D 2D 2D 2D !----
005760: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
005770: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 21 0D 0A 0D 0A -----------!....
005780: 0D 0A 20 20 20 20 20 20 37 2E 34 2E 33 20 20 55 .. 7.4.3 U
005790: 73 69 6E 67 20 49 4E 44 45 58 30 0D 0A 0D 0A 20 sing INDEX0....
0057A0: 20 20 20 20 20 20 20 20 20 20 54 68 65 20 69 6E The in
0057B0: 64 65 78 65 64 20 66 69 6C 65 20 73 79 73 74 65 dexed file syste
0057C0: 6D 20 69 73 20 69 6D 70 6C 65 6D 65 6E 74 65 64 m is implemented
0057D0: 20 69 6E 20 61 6E 20 65 78 74 65 72 6E 61 6C 20 in an external
0057E0: 20 70 72 6F 63 65 64 75 72 65 0D 0A 20 20 20 20 procedure..
0057F0: 20 20 6E 61 6D 65 64 20 20 49 4E 44 45 58 30 2E named INDEX0.
005800: 20 20 20 20 20 20 20 20 20 20 2D 20 69 6E 73 65 - inse
005810: 72 74 20 61 20 6E 65 77 20 6B 65 79 20 69 6E 74 rt a new key int
005820: 6F 20 69 6E 64 65 78 2C 20 69 66 20 64 75 70 6C o index, if dupl
005830: 69 63 61 74 65 20 6B 65 79 0D 0A 20 20 20 20 20 icate key..
005840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005850: 20 20 20 65 78 69 73 74 73 2C 20 61 62 6F 72 74 exists, abort
005860: 20 6F 70 65 72 61 74 69 6F 6E 0D 0A 20 20 20 20 operation..
005870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005880: 20 20 2D 20 77 72 69 74 65 20 6E 65 77 20 64 61 - write new da
005890: 74 61 20 72 65 63 6F 72 64 20 74 6F 20 64 61 74 ta record to dat
0058A0: 61 20 66 69 6C 65 0D 0A 0D 0A 20 20 20 20 20 20 a file....
0058B0: 42 20 20 20 20 20 20 20 72 65 61 64 20 66 69 72 B read fir
0058C0: 73 74 20 72 65 63 6F 72 64 20 28 62 65 67 69 6E st record (begin
0058D0: 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 )..
0058E0: 20 20 20 20 20 20 20 20 20 2D 20 72 65 61 64 20 - read
0058F0: 74 68 65 20 66 69 72 73 74 20 72 65 63 6F 72 64 the first record
005900: 20 28 69 6E 20 73 6F 72 74 65 64 20 6F 72 64 65 (in sorted orde
005910: 72 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 r)..
005920: 20 20 20 20 20 20 20 20 20 20 2D 20 72 65 74 75 - retu
005930: 72 6E 73 20 6B 65 79 20 61 6E 64 20 72 65 63 6F rns key and reco
005940: 72 64 0D 0A 0D 0A 20 20 20 20 20 20 43 20 20 20 rd.... C
005950: 20 20 20 20 63 6C 6F 73 65 20 69 6E 64 65 78 65 close indexe
005960: 64 20 66 69 6C 65 73 0D 0A 20 20 20 20 20 20 20 d files..
005970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D -
005980: 20 74 68 69 73 20 4D 55 53 54 20 62 65 20 64 6F this MUST be do
005990: 6E 65 20 6F 6E 20 63 6F 6D 70 6C 65 74 69 6F 6E ne on completion
0059A0: 20 6F 66 20 70 72 6F 63 65 73 73 69 6E 67 0D 0A of processing..
0059B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0059C0: 20 20 20 20 20 20 20 20 6F 72 20 6E 65 77 6C 79 or newly
0059D0: 20 77 72 69 74 74 65 6E 20 64 61 74 61 20 6D 61 written data ma
0059E0: 79 20 62 65 20 6C 6F 73 74 0D 0A 0D 0A 20 20 20 y be lost....
0059F0: 20 20 20 44 20 20 20 20 20 20 20 64 65 6C 65 74 D delet
005A00: 20 20 54 6F 20 61 63 63 65 73 73 20 69 74 2C 20 To access it,
005A10: 74 68 65 73 65 20 64 65 63 6C 61 72 61 74 69 6F these declaratio
005A20: 6E 73 20 61 72 65 20 72 65 71 75 69 72 65 64 20 ns are required
005A30: 69 6E 20 79 6F 75 72 0D 0A 20 20 20 20 20 20 6D in your.. m
005A40: 61 69 6E 20 70 72 6F 67 72 61 6D 3A 0D 0A 0D 0A ain program:....
005A50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 59 TY
005A60: 50 45 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 PE..
005A70: 20 20 4B 45 59 5F 54 59 50 45 20 3D 20 20 2D 2D KEY_TYPE = --
005A80: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 7B 20 79 ------------ { y
005A90: 6F 75 72 20 6B 65 79 20 74 79 70 65 20 64 65 63 our key type dec
005AA0: 6C 61 72 61 74 69 6F 6E 73 20 7D 0D 0A 20 20 20 larations }..
005AB0: 20 20 20 20 20 20 20 20 20 20 20 52 45 43 4F 52 RECOR
005AC0: 44 5F 54 59 50 45 20 3D 20 20 2D 2D 2D 2D 2D 2D D_TYPE = ------
005AD0: 2D 2D 2D 2D 2D 20 7B 20 79 6F 75 72 20 72 65 63 ----- { your rec
005AE0: 6F 72 64 20 74 79 70 65 20 64 65 63 6C 61 72 61 ord type declara
005AF0: 74 69 6F 6E 73 20 7D 0D 0A 20 20 20 20 20 20 20 tions }..
005B00: 20 20 20 20 20 20 20 49 4E 44 45 58 5F 52 45 43 INDEX_REC
005B10: 4F 52 44 20 3D 20 52 45 43 4F 52 44 0D 0A 20 20 ORD = RECORD..
005B20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005B30: 20 20 20 20 44 49 53 4B 20 3A 20 43 48 41 52 3B DISK : CHAR;
005B40: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
005B50: 20 20 20 20 20 20 20 20 46 49 4C 45 4E 41 4D 45 FILENAME
005B60: 20 3A 20 41 52 52 41 59 20 5B 31 2E 2E 38 5D 20 : ARRAY [1..8]
005B70: 4F 46 20 43 48 41 52 3B 0D 0A 20 20 20 20 20 20 OF CHAR;..
005B80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005B90: 52 45 54 55 52 4E 5F 43 4F 44 45 20 3A 20 49 4E RETURN_CODE : IN
005BA0: 54 45 47 45 52 3B 0D 0A 20 20 20 20 20 20 20 20 TEGER;..
005BB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 RE
005BC0: 53 45 52 56 45 44 20 3A 20 41 52 52 41 59 20 5B SERVED : ARRAY [
005BD0: 31 2E 2E 32 30 30 5D 20 4F 46 20 43 48 41 52 3B 1..200] OF CHAR;
005BE0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
005BF0: 20 20 20 20 20 20 20 20 45 4E 44 3B 0D 0A 0D 0A END;....
005C00: 65 20 61 20 72 65 63 6F 72 64 0D 0A 20 20 20 20 e a record..
005C10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005C20: 20 20 2D 20 6E 75 6C 6C 69 66 79 20 6B 65 79 20 - nullify key
005C30: 65 6E 74 72 79 20 66 6F 72 20 72 65 63 6F 72 64 entry for record
005C40: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
005C50: 20 20 20 20 20 20 20 20 2D 20 61 64 64 20 72 65 - add re
005C60: 63 6F 72 64 20 6C 6F 63 61 74 6F 72 20 74 6F 20 cord locator to
005C70: 64 65 6C 65 74 65 20 6C 69 73 74 0D 0A 0D 0A 20 delete list....
005C80: 20 20 20 20 20 46 20 20 20 20 20 20 20 66 6C 75 F flu
005C90: 73 68 20 62 75 66 66 65 72 73 2C 20 63 6C 6F 73 sh buffers, clos
005CA0: 65 20 61 6E 64 20 72 65 6F 70 65 6E 20 66 69 6C e and reopen fil
005CB0: 65 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 es..
005CC0: 20 20 20 20 20 20 20 20 20 20 2D 20 66 6C 75 73 - flus
005CD0: 68 20 62 75 66 66 65 72 73 20 74 68 61 74 20 68 h buffers that h
005CE0: 61 76 65 20 63 68 61 6E 67 65 64 0D 0A 20 20 20 ave changed..
005CF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005D00: 20 20 20 2D 20 63 6C 6F 73 65 20 66 69 6C 65 73 - close files
005D10: 20 74 6F 20 70 72 65 73 65 72 76 65 20 63 68 61 to preserve cha
005D20: 6E 67 65 73 0D 0A 0D 0A 20 20 20 20 20 20 4A 20 nges.... J
005D30: 20 20 20 20 20 20 72 65 62 61 6C 61 6E 63 65 20 rebalance
005D40: 69 6E 64 65 78 65 73 20 28 49 4E 44 45 58 31 29 indexes (INDEX1)
005D50: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
005D60: 20 20 20 20 20 20 20 20 2D 20 75 73 65 73 20 74 - uses t
005D70: 65 6D 70 6F 72 61 72 79 20 66 69 6C 65 0D 0A 20 emporary file..
005D80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005D90: 20 20 20 20 20 2D 20 64 65 6C 65 74 65 73 20 6F - deletes o
005DA0: 6C 64 20 69 6E 64 65 78 20 66 69 6C 65 0D 0A 20 ld index file..
005DB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005DC0: 20 20 20 20 20 2D 20 72 65 6E 61 6D 65 73 20 6E - renames n
005DD0: 65 77 20 69 6E 64 65 78 20 66 69 6C 65 0D 0A 0D ew index file...
005DE0: 0A 20 20 20 20 20 20 4B 20 20 20 20 20 20 20 72 . K r
005DF0: 65 62 61 6C 61 6E 63 65 20 69 6E 64 65 78 65 73 ebalance indexes
005E00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 52 PR
005E10: 4F 43 45 44 55 52 45 20 49 4E 44 45 58 30 20 28 OCEDURE INDEX0 (
005E20: 20 43 4F 4D 4D 41 4E 44 20 3A 20 43 48 41 52 3B COMMAND : CHAR;
005E30: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
005E40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005E50: 20 20 56 41 52 20 4B 45 59 20 3A 20 4B 45 59 5F VAR KEY : KEY_
005E60: 54 59 50 45 3B 0D 0A 20 20 20 20 20 20 20 20 20 TYPE;..
005E70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005E80: 20 20 20 20 20 20 20 56 41 52 20 44 41 54 41 20 VAR DATA
005E90: 3A 20 52 45 43 4F 52 44 5F 54 59 50 45 3B 0D 0A : RECORD_TYPE;..
005EA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005EB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
005EC0: 56 41 52 20 49 52 20 3A 20 49 4E 44 45 58 5F 52 VAR IR : INDEX_R
005ED0: 45 43 4F 52 44 20 29 3B 20 45 58 54 45 52 4E 3B ECORD ); EXTERN;
005EE0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 .... T
005EF0: 6F 20 75 73 65 20 49 4E 44 45 58 30 20 74 68 65 o use INDEX0 the
005F00: 20 69 6E 64 65 78 5F 72 65 63 6F 72 64 20 20 6D index_record m
005F10: 75 73 74 20 20 62 65 20 20 69 6E 69 74 69 61 6C ust be initial
005F20: 69 7A 65 64 20 20 77 69 74 68 20 20 74 68 65 0D ized with the.
005F30: 0A 20 20 20 20 20 20 66 69 6C 65 6E 61 6D 65 20 . filename
005F40: 20 61 6E 64 20 20 64 69 73 6B 20 20 6F 6E 20 77 and disk on w
005F50: 68 69 63 68 20 74 68 65 20 66 69 6C 65 20 69 73 hich the file is
005F60: 20 6C 6F 63 61 74 65 64 2E 20 54 68 65 20 72 65 located. The re
005F70: 74 75 72 6E 20 63 6F 64 65 20 69 73 0D 0A 20 20 turn code is..
005F80: 20 20 20 20 73 65 74 20 62 79 20 49 4E 44 45 58 set by INDEX
005F90: 30 20 20 61 6E 64 20 20 69 6E 64 69 63 61 74 65 0 and indicate
005FA0: 73 20 20 69 66 20 20 65 61 63 68 20 20 6F 70 65 s if each ope
005FB0: 72 61 74 69 6F 6E 20 20 77 61 73 20 20 73 75 63 ration was suc
005FC0: 63 65 73 73 66 75 6C 6C 79 0D 0A 20 20 20 20 20 cessfully..
005FD0: 20 63 6F 6D 70 6C 65 74 65 64 2E 20 20 20 57 61 completed. Wa
005FE0: 72 6E 69 6E 67 20 20 6D 65 73 73 61 67 65 73 20 rning messages
005FF0: 20 6D 61 79 20 6F 70 74 69 6F 6E 61 6C 6C 79 20 may optionally
006000: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
006010: 05 00 00 00 02 09 2A E5 05 00 C1 02 00 00 00 02 ......*.........
006020: 05 00 C6 02 00 00 00 02 05 00 C2 02 00 00 00 02 ................
006030: 05 00 C7 02 00 00 00 02 05 00 C3 02 00 00 00 02 ................
006040: 05 00 C8 02 00 00 00 02 05 00 C4 02 00 00 00 02 ................
006050: 05 00 C9 02 00 00 00 02 05 00 C5 02 00 00 00 02 ................
006060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006100: 20 61 6E 64 20 63 6F 6D 70 61 63 74 20 64 61 74 and compact dat
006110: 61 20 66 69 6C 65 20 28 49 4E 44 45 58 31 29 0D a file (INDEX1).
006120: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
006130: 20 20 20 20 20 20 20 2D 20 75 73 65 73 20 74 65 - uses te
006140: 6D 70 6F 72 61 72 79 20 66 69 6C 65 73 0D 0A 20 mporary files..
006150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
006160: 20 20 20 20 20 2D 20 64 65 6C 65 74 65 73 20 6F - deletes o
006170: 6C 64 20 69 6E 64 65 78 20 61 6E 64 20 64 61 74 ld index and dat
006180: 61 20 66 69 6C 65 73 0D 0A 20 20 20 20 20 20 20 a files..
006190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D -
0061A0: 20 72 65 6E 61 6D 65 73 20 6E 65 77 20 69 6E 64 renames new ind
0061B0: 65 78 20 61 6E 64 20 64 61 74 61 20 66 69 6C 65 ex and data file
0061C0: 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 s..
0061D0: 20 20 20 20 20 20 20 20 20 2D 20 72 65 6F 70 65 - reope
0061E0: 6E 20 66 69 6C 65 73 20 66 6F 72 20 66 75 72 74 n files for furt
0061F0: 68 65 72 20 70 72 6F 63 65 73 73 69 6E 67 0D 0A her processing..
006200: 0D 0A 20 20 20 20 20 20 4E 20 20 20 20 20 20 20 .. N
006210: 6E 65 77 20 66 69 6C 65 20 61 6C 6C 6F 63 61 74 new file allocat
006220: 69 6F 6E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ion..
006230: 20 20 20 20 20 20 20 20 20 20 20 2D 20 70 72 6F - pro
006240: 67 72 61 6D 20 77 69 6C 6C 20 69 6E 71 75 69 72 gram will inquir
006250: 65 20 61 74 20 74 68 65 20 63 6F 6E 73 6F 6C 65 e at the console
006260: 20 74 68 65 0D 0A 20 20 20 20 20 20 20 20 20 20 the..
006270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 pa
006280: 72 61 6D 65 74 65 72 73 20 6F 66 20 74 68 65 20 rameters of the
006290: 6E 65 77 20 69 6E 64 65 78 65 64 20 66 69 6C 65 new indexed file
0062A0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
0062B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0062C0: 31 2E 20 72 65 63 6F 72 64 20 73 69 7A 65 20 69 1. record size i
0062D0: 6E 20 62 79 74 65 73 0D 0A 20 20 20 20 20 20 20 n bytes..
0062E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0062F0: 20 20 20 20 20 20 20 32 2E 20 6B 65 79 20 73 69 2. key si
006300: 69 74 68 6F 75 74 20 63 6C 6F 73 69 6E 67 20 70 ithout closing p
006310: 72 65 76 69 6F 75 73 0D 0A 20 20 20 20 20 20 20 revious..
006320: 20 20 20 20 20 20 20 66 69 6C 65 0D 0A 0D 0A 20 file....
006330: 20 20 20 20 20 37 20 20 20 20 20 20 20 69 6E 76 7 inv
006340: 61 6C 69 64 20 63 6F 6D 6D 61 6E 64 20 28 65 67 alid command (eg
006350: 2E 20 27 4D 27 20 6F 72 20 61 6E 20 27 53 27 20 . 'M' or an 'S'
006360: 77 69 74 68 6F 75 74 0D 0A 20 20 20 20 20 20 20 without..
006370: 20 20 20 20 20 20 20 61 20 70 72 65 63 65 65 64 a preceed
006380: 69 6E 67 20 27 42 27 2C 20 27 52 27 2C 20 27 53 ing 'B', 'R', 'S
006390: 27 2C 20 6F 72 20 27 55 27 29 0D 0A 0D 0A 20 20 ', or 'U')....
0063A0: 20 20 20 20 38 20 20 20 20 20 20 20 66 69 6C 65 8 file
0063B0: 20 6E 6F 74 20 6F 70 65 6E 0D 0A 0D 0A 20 20 20 not open....
0063C0: 20 20 20 39 20 20 20 20 20 20 20 73 65 72 69 6F 9 serio
0063D0: 75 73 20 65 72 72 6F 72 20 28 20 6E 6F 20 73 70 us error ( no sp
0063E0: 65 63 69 66 69 63 20 6D 65 73 73 61 67 65 20 29 ecific message )
0063F0: 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 37 2E 34 2E ...... 7.4.
006400: 36 20 20 42 61 6C 61 6E 63 65 64 20 69 6E 64 65 6 Balanced inde
006410: 78 65 73 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 xes....
006420: 20 20 53 65 61 72 63 68 69 6E 67 20 20 66 6F 72 Searching for
006430: 20 72 65 63 6F 72 64 73 20 69 73 20 75 73 75 61 records is usua
006440: 6C 6C 79 20 76 65 72 79 20 65 66 66 69 63 69 65 lly very efficie
006450: 6E 74 2C 20 62 6F 74 68 20 69 6E 20 72 61 6E 64 nt, both in rand
006460: 6F 6D 0D 0A 20 20 20 20 20 20 61 6E 64 20 73 65 om.. and se
006470: 71 75 65 6E 74 69 61 6C 20 6D 6F 64 65 73 2E 20 quential modes.
006480: 41 64 64 69 6E 67 20 74 6F 20 61 20 20 64 61 74 Adding to a dat
006490: 61 20 20 62 61 73 65 20 20 69 73 20 20 75 73 75 a base is usu
0064A0: 61 6C 6C 79 20 20 65 66 66 69 63 69 65 6E 74 0D ally efficient.
0064B0: 0A 20 20 20 20 20 20 75 6E 74 69 6C 20 6F 6E 65 . until one
0064C0: 20 6F 72 20 6D 6F 72 65 20 6F 66 20 74 68 65 20 or more of the
0064D0: 73 65 63 6F 6E 64 61 72 79 20 69 6E 64 65 78 65 secondary indexe
0064E0: 73 20 67 65 74 73 20 66 75 6C 6C 2E 20 28 49 66 s gets full. (If
0064F0: 20 72 65 63 6F 72 64 73 20 61 72 65 0D 0A 20 20 records are..
006500: 7A 65 20 69 6E 20 62 79 74 65 73 0D 0A 20 20 20 ze in bytes..
006510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
006520: 20 20 20 20 20 20 20 20 20 20 20 33 2E 20 6D 61 3. ma
006530: 78 69 6D 75 6D 20 6E 75 6D 62 65 72 20 6F 66 20 ximum number of
006540: 72 65 63 6F 72 64 73 20 74 6F 20 62 65 0D 0A 20 records to be..
006550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
006560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
006570: 61 6C 6C 6F 77 65 64 3B 20 74 68 65 20 69 6E 64 allowed; the ind
006580: 65 78 20 66 69 6C 65 20 77 69 6C 6C 20 62 65 0D ex file will be.
006590: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
0065A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0065B0: 20 20 61 6C 6C 6F 63 61 74 65 64 20 62 61 73 65 allocated base
0065C0: 64 20 6F 6E 20 74 68 69 73 20 6E 75 6D 62 65 72 d on this number
0065D0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
0065E0: 20 20 20 20 20 20 20 20 2D 20 69 6E 64 65 78 20 - index
0065F0: 66 69 6C 65 73 20 61 72 65 20 6C 65 66 74 20 6F files are left o
006600: 70 65 6E 20 66 6F 72 0D 0A 20 20 20 20 20 20 20 pen for..
006610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
006620: 20 66 75 72 74 68 65 72 20 70 72 6F 63 65 73 73 further process
006630: 69 6E 67 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ing..
006640: 20 20 20 20 20 20 20 20 20 20 20 2D 20 66 69 6C - fil
006650: 65 73 20 6D 75 73 74 20 62 65 20 63 6C 6F 73 65 es must be close
006660: 64 20 28 6F 72 20 66 6C 75 73 68 65 64 29 0D 0A d (or flushed)..
006670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
006680: 20 20 20 20 20 20 20 20 74 6F 20 70 72 65 73 65 to prese
006690: 72 76 65 20 74 68 65 20 6E 65 77 20 63 6F 6E 74 rve the new cont
0066A0: 65 6E 74 73 0D 0A 0D 0A 20 20 20 20 20 20 4F 20 ents.... O
0066B0: 20 20 20 20 20 20 6F 70 65 6E 20 69 6E 64 65 78 open index
0066C0: 65 64 20 66 69 6C 65 73 0D 0A 20 20 20 20 20 20 ed files..
0066D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0066E0: 2D 20 6F 70 65 6E 20 74 68 65 20 69 6E 64 65 78 - open the index
0066F0: 20 61 6E 64 20 64 61 74 61 20 66 69 6C 65 73 0D and data files.
006700: 20 20 20 20 61 64 64 65 64 20 20 69 6E 20 20 73 added in s
006710: 6F 72 74 65 64 20 20 6F 72 64 65 72 2C 20 20 74 orted order, t
006720: 68 65 6E 20 20 74 68 65 20 20 61 64 64 69 74 69 hen the additi
006730: 6F 6E 20 20 70 72 6F 63 65 73 73 20 20 77 69 6C on process wil
006740: 6C 20 62 65 20 76 65 72 79 0D 0A 20 20 20 20 20 l be very..
006750: 20 65 66 66 69 63 69 65 6E 74 2E 29 20 49 4E 44 efficient.) IND
006760: 45 58 30 20 77 69 6C 6C 20 6E 6F 74 20 61 75 74 EX0 will not aut
006770: 6F 6D 61 74 69 63 61 6C 6C 79 20 22 62 61 6C 61 omatically "bala
006780: 6E 63 65 22 20 6B 65 79 73 20 69 6E 20 74 68 65 nce" keys in the
006790: 20 69 6E 64 65 78 0D 0A 20 20 20 20 20 20 66 69 index.. fi
0067A0: 6C 65 73 2C 20 73 6F 20 74 68 61 74 20 61 64 64 les, so that add
0067B0: 69 74 69 6F 6E 73 20 66 69 6C 6C 20 75 70 20 74 itions fill up t
0067C0: 68 65 20 73 65 63 6F 6E 64 61 72 79 20 69 6E 64 he secondary ind
0067D0: 65 78 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 exes.....
0067E0: 20 20 20 20 59 6F 75 72 20 70 72 6F 67 72 61 6D Your program
0067F0: 20 63 61 6E 20 22 51 75 65 72 79 22 20 74 68 65 can "Query" the
006800: 20 73 74 61 74 75 73 20 6F 66 20 61 6E 20 69 6E status of an in
006810: 64 65 78 65 64 20 66 69 6C 65 20 62 79 20 20 75 dexed file by u
006820: 73 69 6E 67 0D 0A 20 20 20 20 20 20 27 51 27 20 sing.. 'Q'
006830: 20 69 6E 20 61 20 63 61 6C 6C 20 74 6F 20 74 68 in a call to th
006840: 65 20 69 6E 64 65 78 2E 20 20 54 68 65 20 66 69 e index. The fi
006850: 72 73 74 20 6C 65 74 74 65 72 20 6F 66 20 74 68 rst letter of th
006860: 65 20 6B 65 79 20 77 69 6C 6C 20 62 65 20 73 65 e key will be se
006870: 74 0D 0A 20 20 20 20 20 20 74 6F 20 27 59 27 20 t.. to 'Y'
006880: 69 66 20 74 68 65 20 69 6E 64 65 78 65 73 20 73 if the indexes s
006890: 68 6F 75 6C 64 20 62 65 20 62 61 6C 61 6E 63 65 hould be balance
0068A0: 64 2C 20 61 6E 64 20 20 27 4E 27 20 20 69 66 20 d, and 'N' if
0068B0: 20 74 68 61 74 20 20 69 73 20 20 6E 6F 74 0D 0A that is not..
0068C0: 20 20 20 20 20 20 6E 65 63 65 73 73 61 72 79 20 necessary
0068D0: 20 79 65 74 2E 20 20 20 28 49 4E 44 45 58 30 20 yet. (INDEX0
0068E0: 64 65 63 69 64 65 73 20 74 68 61 74 20 74 68 65 decides that the
0068F0: 20 69 6E 64 65 78 65 73 20 73 68 6F 75 6C 64 20 indexes should
006900: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
006910: 20 20 20 20 20 20 20 2D 20 6C 6F 61 64 20 74 68 - load th
006920: 65 20 70 72 69 6D 61 72 79 20 69 6E 64 65 78 20 e primary index
006930: 69 6E 74 6F 20 64 79 6E 61 6D 69 63 0D 0A 20 20 into dynamic..
006940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
006950: 20 20 20 20 20 20 73 74 6F 72 61 67 65 0D 0A 0D storage...
006960: 0A 20 20 20 20 20 20 51 20 20 20 20 20 20 20 71 . Q q
006970: 75 65 72 79 20 64 61 74 61 20 62 61 73 65 20 73 uery data base s
006980: 74 61 74 75 73 0D 0A 20 20 20 20 20 20 20 20 20 tatus..
006990: 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 20 72 - r
0069A0: 65 74 75 72 6E 20 27 59 27 20 69 6E 20 6B 65 79 eturn 'Y' in key
0069B0: 5B 31 5D 20 69 66 20 74 68 65 20 64 61 74 61 0D [1] if the data.
0069C0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
0069D0: 20 20 20 20 20 20 20 20 20 62 61 73 65 20 73 68 base sh
0069E0: 6F 75 6C 64 20 62 65 20 72 65 6F 72 67 61 6E 69 ould be reorgani
0069F0: 7A 65 64 20 28 27 4A 27 29 0D 0A 20 20 20 20 20 zed ('J')..
006A00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
006A10: 20 2D 20 65 6C 73 65 20 72 65 74 75 72 6E 20 27 - else return '
006A20: 4E 27 20 69 6E 20 6B 65 79 5B 31 5D 0D 0A 0D 0A N' in key[1]....
006A30: 20 20 20 20 20 20 52 20 20 20 20 20 20 20 72 65 R re
006A40: 61 64 20 61 20 72 65 63 6F 72 64 0D 0A 20 20 20 ad a record..
006A50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
006A60: 20 20 20 2D 20 73 65 61 72 63 68 20 74 68 65 20 - search the
006A70: 69 6E 64 65 78 65 73 20 66 6F 72 20 74 68 65 20 indexes for the
006A80: 6B 65 79 0D 0A 20 20 20 20 20 20 20 20 20 20 20 key..
006A90: 20 20 20 20 20 20 20 20 20 20 20 2D 20 72 65 61 - rea
006AA0: 64 20 74 68 65 20 64 61 74 61 20 72 65 63 6F 72 d the data recor
006AB0: 64 20 69 6E 74 6F 20 74 68 65 20 0D 0A 20 20 20 d into the ..
006AC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
006AD0: 20 20 20 20 20 75 73 65 72 27 73 20 72 65 63 6F user's reco
006AE0: 72 64 20 76 61 72 69 61 62 6C 65 0D 0A 0D 0A 20 rd variable....
006AF0: 20 20 20 20 20 53 20 20 20 20 20 20 20 72 65 61 S rea
006B00: 62 65 20 62 61 6C 61 6E 63 65 64 0D 0A 20 20 20 be balanced..
006B10: 20 20 20 77 68 65 6E 20 61 6E 20 61 64 64 20 28 when an add (
006B20: 27 41 27 29 20 6D 75 73 74 20 6D 6F 76 65 20 61 'A') must move a
006B30: 20 20 73 65 63 6F 6E 64 61 72 79 20 20 69 6E 64 secondary ind
006B40: 65 78 20 20 66 72 6F 6D 20 20 6F 6E 65 20 20 62 ex from one b
006B50: 6C 6F 63 6B 20 20 74 6F 0D 0A 20 20 20 20 20 20 lock to..
006B60: 61 6E 6F 74 68 65 72 29 2E 0D 0A 0D 0A 20 20 20 another).....
006B70: 20 52 65 6F 72 67 61 6E 69 7A 69 6E 67 20 69 6E Reorganizing in
006B80: 64 65 78 65 73 0D 0A 0D 0A 20 20 20 20 20 20 20 dexes....
006B90: 20 20 20 20 54 6F 20 72 65 6F 72 67 61 6E 69 7A To reorganiz
006BA0: 65 20 61 6E 20 69 6E 64 65 78 65 64 20 66 69 6C e an indexed fil
006BB0: 65 20 73 6F 20 74 68 61 74 20 61 64 64 69 6E 67 e so that adding
006BC0: 20 6E 65 77 20 72 65 63 6F 72 64 73 20 77 69 6C new records wil
006BD0: 6C 20 62 65 0D 0A 20 20 20 20 20 20 65 66 66 69 l be.. effi
006BE0: 63 69 65 6E 74 2C 20 73 65 74 20 74 68 65 20 72 cient, set the r
006BF0: 65 63 6F 72 64 20 61 72 67 75 6D 65 6E 74 20 74 ecord argument t
006C00: 6F 20 61 6C 6C 20 62 6C 61 6E 6B 73 20 61 6E 64 o all blanks and
006C10: 20 63 61 6C 6C 20 49 4E 44 45 58 31 20 77 69 74 call INDEX1 wit
006C20: 68 0D 0A 20 20 20 20 20 20 63 6F 6D 6D 61 6E 64 h.. command
006C30: 20 20 27 4A 27 20 20 28 66 6F 72 20 20 61 64 4A 'J' (for adJ
006C40: 75 73 74 20 20 6F 72 20 20 4A 75 73 74 69 66 79 ust or Justify
006C50: 29 2E 20 20 20 49 4E 44 45 58 31 20 20 77 69 6C ). INDEX1 wil
006C60: 6C 20 63 72 65 61 74 65 20 61 20 6E 65 77 0D 0A l create a new..
006C70: 20 20 20 20 20 20 62 61 6C 61 6E 63 65 64 20 69 balanced i
006C80: 6E 64 65 78 20 66 69 6C 65 20 6F 6E 20 74 68 65 ndex file on the
006C90: 20 73 61 6D 65 20 20 64 69 73 6B 20 20 61 73 20 same disk as
006CA0: 20 74 68 65 20 20 63 75 72 72 65 6E 74 20 20 69 the current i
006CB0: 6E 64 65 78 20 20 66 69 6C 65 2E 0D 0A 20 20 20 ndex file...
006CC0: 20 20 20 54 68 65 72 65 20 20 6D 75 73 74 20 20 There must
006CD0: 62 65 20 20 73 70 61 63 65 20 20 66 6F 72 20 20 be space for
006CE0: 74 68 65 20 6E 65 77 20 69 6E 64 65 78 20 66 69 the new index fi
006CF0: 6C 65 2C 20 77 68 69 63 68 20 77 69 6C 6C 20 62 le, which will b
006D00: 64 20 6E 65 78 74 20 72 65 63 6F 72 64 20 69 6E d next record in
006D10: 20 73 65 71 75 65 6E 63 65 0D 0A 20 20 20 20 20 sequence..
006D20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
006D30: 20 2D 20 77 69 6C 6C 20 72 65 61 64 20 6E 65 78 - will read nex
006D40: 74 20 72 65 63 6F 72 64 20 61 66 74 65 72 20 61 t record after a
006D50: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
006D60: 20 20 20 20 20 20 20 20 20 20 70 72 65 76 69 6F previo
006D70: 75 73 20 27 42 27 2C 20 27 52 27 2C 20 27 53 27 us 'B', 'R', 'S'
006D80: 2C 20 6F 72 20 27 55 27 0D 0A 0D 0A 20 20 20 20 , or 'U'....
006D90: 20 20 55 20 20 20 20 20 20 20 75 70 64 61 74 65 U update
006DA0: 20 61 20 72 65 63 6F 72 64 0D 0A 20 20 20 20 20 a record..
006DB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
006DC0: 20 2D 20 74 68 65 20 75 70 64 61 74 65 20 6F 70 - the update op
006DD0: 65 72 61 74 69 6F 6E 20 4D 55 53 54 20 41 4C 57 eration MUST ALW
006DE0: 41 59 53 20 62 65 0D 0A 20 20 20 20 20 20 20 20 AYS be..
006DF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
006E00: 70 72 65 63 65 64 65 64 20 62 79 20 61 20 72 65 preceded by a re
006E10: 61 64 20 6F 70 65 72 61 74 69 6F 6E 20 77 69 74 ad operation wit
006E20: 68 20 74 68 65 0D 0A 20 20 20 20 20 20 20 20 20 h the..
006E30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 s
006E40: 61 6D 65 20 6B 65 79 0D 0A 20 20 20 20 20 20 20 ame key..
006E50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D -
006E60: 20 77 72 69 74 65 20 6D 6F 64 69 66 69 65 64 20 write modified
006E70: 72 65 63 6F 72 64 20 74 6F 20 64 61 74 61 20 66 record to data f
006E80: 69 6C 65 0D 0A 0D 0A 20 20 20 20 20 20 57 20 20 ile.... W
006E90: 20 20 20 20 20 77 61 72 6E 69 6E 67 20 6D 65 73 warning mes
006EA0: 73 61 67 65 73 0D 0A 20 20 20 20 20 20 20 20 20 sages..
006EB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 20 74 - t
006EC0: 75 72 6E 20 6F 6E 20 74 68 65 20 77 61 72 6E 69 urn on the warni
006ED0: 6E 67 20 6D 65 73 73 61 67 65 20 66 65 61 74 75 ng message featu
006EE0: 72 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 re..
006EF0: 20 20 20 20 20 20 20 20 20 20 2D 20 63 61 75 73 - caus
006F00: 65 20 63 61 6C 6C 65 64 0D 0A 20 20 20 20 20 20 e called..
006F10: 6E 61 6D 65 2E 24 24 49 2E 20 20 49 4E 44 45 58 name.$$I. INDEX
006F20: 31 20 77 69 6C 6C 20 74 68 65 6E 20 64 65 6C 65 1 will then dele
006F30: 74 65 20 74 68 65 20 6F 6C 64 20 2E 49 58 30 20 te the old .IX0
006F40: 66 69 6C 65 20 61 6E 64 20 20 72 65 6E 61 6D 65 file and rename
006F50: 20 20 74 68 65 0D 0A 20 20 20 20 20 20 6E 65 77 the.. new
006F60: 20 20 66 69 6C 65 20 20 74 6F 20 20 6E 61 6D 65 file to name
006F70: 2E 49 58 30 2E 20 20 20 52 65 6F 72 67 61 6E 69 .IX0. Reorgani
006F80: 7A 61 74 69 6F 6E 20 74 61 6B 65 73 20 32 35 30 zation takes 250
006F90: 30 20 74 6F 20 33 32 30 30 20 62 79 74 65 73 20 0 to 3200 bytes
006FA0: 6F 66 0D 0A 20 20 20 20 20 20 73 70 61 63 65 20 of.. space
006FB0: 69 6E 20 6D 61 69 6E 20 6D 65 6D 6F 72 79 20 61 in main memory a
006FC0: 73 20 77 65 6C 6C 20 61 73 20 73 70 61 63 65 20 s well as space
006FD0: 6F 6E 20 74 68 65 20 64 69 73 6B 2C 20 20 73 6F on the disk, so
006FE0: 20 20 69 74 20 20 69 73 20 20 6E 65 76 65 72 0D it is never.
006FF0: 0A 20 20 20 20 20 20 64 6F 6E 65 20 61 75 74 6F . done auto
007000: 6D 61 74 69 63 61 6C 6C 79 2E 20 20 49 4E 44 45 matically. INDE
007010: 58 31 20 6D 75 73 74 20 62 65 20 64 65 63 6C 61 X1 must be decla
007020: 72 65 64 20 61 73 20 61 6E 20 65 78 74 65 72 6E red as an extern
007030: 61 6C 20 70 72 6F 63 65 64 75 72 65 0D 0A 20 20 al procedure..
007040: 20 20 20 20 28 6A 75 73 74 20 20 61 73 20 20 49 (just as I
007050: 4E 44 45 58 30 20 20 77 61 73 20 20 64 65 63 6C NDEX0 was decl
007060: 61 72 65 64 29 20 69 66 20 79 6F 75 72 20 70 72 ared) if your pr
007070: 6F 67 72 61 6D 20 69 73 20 67 6F 69 6E 67 20 74 ogram is going t
007080: 6F 20 62 61 6C 61 6E 63 65 0D 0A 20 20 20 20 20 o balance..
007090: 20 69 6E 64 65 78 65 73 20 22 6F 6E 20 74 68 65 indexes "on the
0070A0: 20 66 6C 79 22 2E 0D 0A 0D 0A 20 20 20 20 20 20 fly".....
0070B0: 20 20 20 20 20 20 20 20 50 52 4F 43 45 44 55 52 PROCEDUR
0070C0: 45 20 49 4E 44 45 58 31 20 28 20 43 4F 4D 4D 41 E INDEX1 ( COMMA
0070D0: 4E 44 20 3A 20 43 48 41 52 3B 0D 0A 20 20 20 20 ND : CHAR;..
0070E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0070F0: 20 20 20 20 20 20 20 20 20 20 20 20 56 41 52 20 VAR
007100: 65 64 20 6E 6F 6E 2D 7A 65 72 6F 20 72 65 74 75 ed non-zero retu
007110: 72 6E 20 63 6F 64 65 73 20 74 6F 20 70 72 69 6E rn codes to prin
007120: 74 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 t..
007130: 20 20 20 20 20 20 20 20 20 20 20 76 65 72 62 61 verba
007140: 6C 20 65 72 72 6F 72 20 6D 65 73 73 61 67 65 73 l error messages
007150: 0D 0A 0D 0A 20 20 20 20 20 20 5A 20 20 20 20 20 .... Z
007160: 20 20 74 75 72 6E 20 6F 66 66 20 77 61 72 6E 69 turn off warni
007170: 6E 67 20 6D 65 73 73 61 67 65 73 0D 0A 0D 0A 0D ng messages.....
007180: 0A 20 20 20 20 20 20 37 2E 34 2E 35 20 20 49 4E . 7.4.5 IN
007190: 44 45 58 20 72 65 74 75 72 6E 20 63 6F 64 65 73 DEX return codes
0071A0: 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 30 20 20 20 ...... 0
0071B0: 20 20 20 20 73 75 63 63 65 73 73 66 75 6C 20 63 successful c
0071C0: 6F 6D 70 6C 65 74 69 6F 6E 0D 0A 0D 0A 20 20 20 ompletion....
0071D0: 20 20 20 31 20 20 20 20 20 20 20 64 75 70 6C 69 1 dupli
0071E0: 63 61 74 65 20 6B 65 79 0D 0A 0D 0A 20 20 20 20 cate key....
0071F0: 20 20 32 20 20 20 20 20 20 20 6D 61 78 69 6D 75 2 maximu
007200: 6D 20 6E 75 6D 62 65 72 20 6F 66 20 72 65 63 6F m number of reco
007210: 72 64 73 20 65 78 63 65 65 64 65 64 0D 0A 0D 0A rds exceeded....
007220: 20 20 20 20 20 20 33 20 20 20 20 20 20 20 6B 65 3 ke
007230: 79 20 6E 6F 74 20 66 6F 75 6E 64 0D 0A 0D 0A 20 y not found....
007240: 20 20 20 20 20 34 20 20 20 20 20 20 20 75 70 64 4 upd
007250: 61 74 65 20 6B 65 79 20 64 6F 65 73 20 6E 6F 74 ate key does not
007260: 20 6D 61 74 63 68 20 72 65 61 64 20 6B 65 79 20 match read key
007270: 6F 72 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 or..
007280: 20 20 70 72 65 76 69 6F 75 73 20 72 65 61 64 20 previous read
007290: 77 61 73 20 6E 6F 74 20 73 75 63 63 65 73 73 66 was not successf
0072A0: 75 6C 0D 0A 0D 0A 20 20 20 20 20 20 35 20 20 20 ul.... 5
0072B0: 20 20 20 20 6B 65 79 20 76 61 6C 75 65 20 64 6F key value do
0072C0: 65 73 20 6E 6F 74 20 6D 61 74 63 68 20 6B 65 79 es not match key
0072D0: 20 69 6E 20 72 65 63 6F 72 64 0D 0A 0D 0A 20 20 in record....
0072E0: 20 20 20 20 36 20 20 20 20 20 20 20 73 65 63 6F 6 seco
0072F0: 6E 64 20 6F 70 65 6E 20 6F 72 20 6E 65 77 20 77 nd open or new w
007300: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
007310: 06 00 00 00 02 09 2A E5 06 00 C1 02 00 00 00 02 ......*.........
007320: 06 00 C6 02 00 00 00 02 06 00 C2 02 00 00 00 02 ................
007330: 06 00 C7 02 00 00 00 02 06 00 C3 02 00 00 00 02 ................
007340: 06 00 C8 02 00 00 00 02 06 00 C4 02 00 00 00 02 ................
007350: 06 00 C9 02 00 00 00 02 06 00 C5 02 00 00 00 02 ................
007360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007400: 4B 45 59 20 3A 20 4B 45 59 5F 54 59 50 45 3B 0D KEY : KEY_TYPE;.
007410: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
007420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
007430: 20 56 41 52 20 44 41 54 41 20 3A 20 52 45 43 4F VAR DATA : RECO
007440: 52 44 5F 54 59 50 45 3B 0D 0A 20 20 20 20 20 20 RD_TYPE;..
007450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
007460: 20 20 20 20 20 20 20 20 20 20 56 41 52 20 49 52 VAR IR
007470: 20 3A 20 49 4E 44 45 58 5F 52 45 43 4F 52 44 20 : INDEX_RECORD
007480: 29 3B 20 45 58 54 45 52 4E 3B 0D 0A 0D 0A 20 20 ); EXTERN;....
007490: 20 20 20 20 20 20 20 20 20 49 4E 44 45 58 31 20 INDEX1
0074A0: 73 75 70 70 6F 72 74 73 20 74 68 65 20 4A 20 61 supports the J a
0074B0: 6E 64 20 4B 20 6F 70 65 72 61 74 69 6F 6E 73 20 nd K operations
0074C0: 77 68 69 63 68 20 20 61 72 65 20 20 64 65 73 63 which are desc
0074D0: 72 69 62 65 64 20 20 69 6E 0D 0A 20 20 20 20 20 ribed in..
0074E0: 20 73 65 63 74 69 6F 6E 20 37 2E 34 2E 34 2E 0D section 7.4.4..
0074F0: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 49 6E ... In
007500: 20 20 67 65 6E 65 72 61 6C 2C 20 20 74 68 65 20 general, the
007510: 20 72 65 63 6F 72 64 20 20 76 61 72 69 61 62 6C record variabl
007520: 65 20 20 73 68 6F 75 6C 64 20 62 65 20 73 65 74 e should be set
007530: 20 74 6F 20 61 6C 6C 20 62 6C 61 6E 6B 73 0D 0A to all blanks..
007540: 20 20 20 20 20 20 62 65 66 6F 72 65 20 49 4E 44 before IND
007550: 45 58 31 20 69 73 20 63 61 6C 6C 65 64 2E 0D 0A EX1 is called...
007560: 0D 0A 0D 0A 20 20 20 20 20 20 37 2E 34 2E 37 20 .... 7.4.7
007570: 20 49 4E 44 45 58 32 20 75 74 69 6C 69 74 79 0D INDEX2 utility.
007580: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 79 ... Ty
007590: 70 65 20 45 58 45 43 20 49 4E 44 45 58 32 20 74 pe EXEC INDEX2 t
0075A0: 6F 20 72 65 62 61 6C 61 6E 63 65 20 74 68 65 20 o rebalance the
0075B0: 69 6E 64 65 78 65 73 20 69 6E 20 20 74 68 65 20 indexes in the
0075C0: 20 66 69 6C 65 20 20 61 6E 64 20 20 74 6F 0D 0A file and to..
0075D0: 20 20 20 20 20 20 63 6F 6D 70 61 63 74 20 20 74 compact t
0075E0: 68 65 20 64 61 74 61 20 61 66 74 65 72 20 6D 61 he data after ma
0075F0: 6E 79 20 64 65 6C 65 74 69 6F 6E 73 2E 20 20 49 ny deletions. I
007600: 77 61 6E 74 20 74 6F 20 61 73 73 69 67 6E 0D 0A want to assign..
007610: 20 20 20 20 20 20 72 65 63 20 74 6F 20 63 6F 6E rec to con
007620: 74 61 69 6E 20 6E 65 77 5F 70 61 72 61 6D 2C 20 tain new_param,
007630: 61 6E 64 20 74 68 65 6E 20 63 61 6C 6C 20 49 4E and then call IN
007640: 44 45 58 31 2C 20 66 6F 72 20 65 78 61 6D 70 6C DEX1, for exampl
007650: 65 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 e....
007660: 20 72 65 63 20 3A 3D 20 6E 65 77 5F 70 61 72 61 rec := new_para
007670: 6D 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 m;..
007680: 49 4E 44 45 58 31 20 28 27 4B 27 2C 6B 65 79 2C INDEX1 ('K',key,
007690: 20 72 65 63 2C 20 69 72 29 3B 0D 0A 0D 0A 20 20 rec, ir);....
0076A0: 20 20 20 20 20 20 20 20 20 4D 6F 73 74 20 70 72 Most pr
0076B0: 6F 67 72 61 6D 73 20 77 69 6C 6C 20 6E 6F 74 20 ograms will not
0076C0: 6E 65 65 64 20 74 6F 20 75 73 65 20 74 68 65 20 need to use the
0076D0: 20 27 4B 27 20 20 6F 70 74 69 6F 6E 2C 20 20 73 'K' option, s
0076E0: 69 6E 63 65 20 20 74 68 65 0D 0A 20 20 20 20 20 ince the..
0076F0: 20 65 71 75 69 76 61 6C 65 6E 74 20 20 63 61 6E equivalent can
007700: 20 20 62 65 20 20 64 6F 6E 65 20 61 73 20 6E 65 be done as ne
007710: 65 64 65 64 20 62 79 20 68 61 76 69 6E 67 20 74 eded by having t
007720: 68 65 20 75 73 65 72 20 69 73 73 75 65 20 74 68 he user issue th
007730: 65 20 43 50 2F 4D 0D 0A 20 20 20 20 20 20 63 6F e CP/M.. co
007740: 6D 6D 61 6E 64 20 45 58 45 43 20 49 4E 44 45 58 mmand EXEC INDEX
007750: 32 2C 20 70 72 65 66 65 72 61 62 6C 79 20 61 66 2, preferably af
007760: 74 65 72 20 74 68 65 20 64 61 74 61 20 62 61 73 ter the data bas
007770: 65 73 20 68 61 76 65 20 62 65 65 6E 20 63 6F 70 es have been cop
007780: 69 65 64 0D 0A 20 20 20 20 20 20 74 6F 20 62 61 ied.. to ba
007790: 63 6B 75 70 20 64 69 73 6B 73 2E 0D 0A 0D 0A 0D ckup disks......
0077A0: 0A 20 20 20 20 20 20 37 2E 34 2E 38 20 20 45 66 . 7.4.8 Ef
0077B0: 66 69 63 69 65 6E 63 79 20 6E 6F 74 65 73 0D 0A ficiency notes..
0077C0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 52 65 61 .. Rea
0077D0: 64 69 6E 67 20 72 65 63 6F 72 64 73 20 66 72 6F ding records fro
0077E0: 6D 20 74 68 65 20 64 61 74 61 20 62 61 73 65 20 m the data base
0077F0: 69 73 20 6F 6E 6C 79 20 73 6C 6F 77 20 77 68 65 is only slow whe
007800: 4E 44 45 58 32 20 77 69 6C 6C 20 61 73 6B 20 66 NDEX2 will ask f
007810: 6F 72 20 74 68 65 20 6E 61 6D 65 0D 0A 20 20 20 or the name..
007820: 20 20 20 6F 66 20 74 68 65 20 64 69 73 6B 20 64 of the disk d
007830: 72 69 76 65 20 63 6F 6E 74 61 69 6E 69 6E 67 20 rive containing
007840: 74 68 65 20 69 6E 64 65 78 65 64 20 66 69 6C 65 the indexed file
007850: 73 20 28 41 20 74 6F 20 50 29 2C 20 74 68 65 20 s (A to P), the
007860: 6E 61 6D 65 20 20 6F 66 0D 0A 20 20 20 20 20 20 name of..
007870: 69 6E 64 65 78 20 20 66 69 6C 65 73 20 20 28 77 index files (w
007880: 68 69 63 68 20 20 79 6F 75 20 20 77 6F 75 6C 64 hich you would
007890: 20 20 65 6E 74 65 72 20 20 77 69 74 68 6F 75 74 enter without
0078A0: 20 61 6E 79 20 27 2E 27 20 6F 72 20 27 2E 44 41 any '.' or '.DA
0078B0: 54 27 20 6F 72 0D 0A 20 20 20 20 20 20 27 2E 49 T' or.. '.I
0078C0: 58 30 27 29 2C 20 61 6E 64 20 74 68 65 20 6E 61 X0'), and the na
0078D0: 6D 65 20 6F 66 20 74 68 65 20 63 6F 6D 70 61 63 me of the compac
0078E0: 74 65 64 20 66 69 6C 65 73 2E 20 20 59 6F 75 20 ted files. You
0078F0: 63 61 6E 20 68 61 76 65 20 20 74 68 65 20 20 6E can have the n
007900: 65 77 0D 0A 20 20 20 20 20 20 66 69 6C 65 73 20 ew.. files
007910: 70 75 74 20 6F 6E 20 74 68 65 20 73 61 6D 65 20 put on the same
007920: 6F 72 20 61 6E 6F 74 68 65 72 20 64 69 73 6B 20 or another disk
007930: 64 72 69 76 65 20 61 73 20 74 68 65 20 6F 72 69 drive as the ori
007940: 67 69 6E 61 6C 20 66 69 6C 65 73 2E 0D 0A 0D 0A ginal files.....
007950: 20 20 20 20 20 20 20 20 20 20 20 49 4E 44 45 58 INDEX
007960: 32 20 20 77 69 6C 6C 20 20 61 6C 73 6F 20 20 61 2 will also a
007970: 73 6B 20 66 6F 72 20 61 20 6E 65 77 20 6E 75 6D sk for a new num
007980: 62 65 72 20 6F 66 20 6D 61 78 69 6D 75 6D 20 72 ber of maximum r
007990: 65 63 6F 72 64 73 2E 20 20 49 66 0D 0A 20 20 20 ecords. If..
0079A0: 20 20 20 79 6F 75 20 65 6E 74 65 72 20 30 2C 20 you enter 0,
0079B0: 74 68 65 20 70 72 65 76 69 6F 75 73 20 6D 61 78 the previous max
0079C0: 69 6D 75 6D 20 77 69 6C 6C 20 62 65 20 75 73 65 imum will be use
0079D0: 64 2E 0D 0A 0D 0A 20 20 20 20 43 6F 6D 70 72 65 d..... Compre
0079E0: 73 73 69 6E 67 20 64 61 74 61 20 66 72 6F 6D 20 ssing data from
0079F0: 77 69 74 68 69 6E 20 61 20 70 72 6F 67 72 61 6D within a program
007A00: 6E 20 20 76 65 72 79 20 20 6D 61 6E 79 0D 0A 20 n very many..
007A10: 20 20 20 20 20 6B 65 79 73 20 20 68 61 76 65 20 keys have
007A20: 20 74 68 65 20 20 73 61 6D 65 20 20 66 69 72 73 the same firs
007A30: 74 20 66 6F 75 72 20 63 68 61 72 61 63 74 65 72 t four character
007A40: 73 2E 20 20 49 66 20 74 68 65 20 69 6E 64 65 78 s. If the index
007A50: 65 73 20 69 6E 20 6D 6F 72 65 0D 0A 20 20 20 20 es in more..
007A60: 20 20 74 68 61 6E 20 6F 6E 65 20 73 65 63 6F 6E than one secon
007A70: 64 61 72 79 20 69 6E 64 65 78 20 62 6C 6F 63 6B dary index block
007A80: 20 68 61 76 65 20 74 68 65 20 73 61 6D 65 20 66 have the same f
007A90: 69 72 73 74 20 20 66 6F 75 72 20 20 63 68 61 72 irst four char
007AA0: 61 63 74 65 72 73 2C 0D 0A 20 20 20 20 20 20 49 acters,.. I
007AB0: 4E 44 45 58 30 20 6D 61 79 20 68 61 76 65 20 74 NDEX0 may have t
007AC0: 6F 20 73 65 61 72 63 68 20 6D 6F 72 65 20 74 68 o search more th
007AD0: 61 6E 20 6F 6E 65 20 73 65 63 6F 6E 64 61 72 79 an one secondary
007AE0: 20 69 6E 64 65 78 20 62 6C 6F 63 6B 20 74 6F 20 index block to
007AF0: 66 69 6E 64 0D 0A 20 20 20 20 20 20 61 20 67 69 find.. a gi
007B00: 76 65 6E 20 72 65 63 6F 72 64 2E 20 47 65 6E 65 ven record. Gene
007B10: 72 61 6C 6C 79 2C 20 74 68 69 73 20 77 69 6C 6C rally, this will
007B20: 20 6E 6F 74 20 6F 63 63 75 72 2E 0D 0A 0D 0A 20 not occur.....
007B30: 20 20 20 20 20 20 20 20 20 20 52 61 6E 64 6F 6D Random
007B40: 20 20 6F 75 74 70 75 74 20 20 69 6E 20 20 67 65 output in ge
007B50: 6E 65 72 61 6C 20 20 75 6E 64 65 72 20 20 43 50 neral under CP
007B60: 2F 4D 20 20 69 73 20 20 69 6E 65 66 66 69 63 69 /M is ineffici
007B70: 65 6E 74 20 64 75 65 20 74 6F 0D 0A 20 20 20 20 ent due to..
007B80: 20 20 62 75 66 66 65 72 69 6E 67 20 72 65 71 75 buffering requ
007B90: 69 72 65 6D 65 6E 74 73 2E 20 20 52 61 6E 64 6F irements. Rando
007BA0: 6D 20 6F 75 74 70 75 74 20 77 69 6C 6C 20 62 65 m output will be
007BB0: 20 20 6D 6F 73 74 20 20 65 66 66 69 63 69 65 6E most efficien
007BC0: 74 20 20 77 69 74 68 0D 0A 20 20 20 20 20 20 64 t with.. d
007BD0: 6F 75 62 6C 65 20 64 65 6E 73 69 74 79 20 64 69 ouble density di
007BE0: 73 6B 73 20 77 69 74 68 20 31 4B 20 62 6C 6F 63 sks with 1K bloc
007BF0: 6B 73 20 6F 72 20 77 69 74 68 20 73 69 6E 67 6C ks or with singl
007C00: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 49 .... I
007C10: 4E 44 45 58 32 20 75 73 65 73 20 49 4E 44 45 58 NDEX2 uses INDEX
007C20: 30 20 61 6E 64 20 49 4E 44 45 58 31 20 74 6F 20 0 and INDEX1 to
007C30: 70 65 72 66 6F 72 6D 20 74 68 65 20 61 63 74 75 perform the actu
007C40: 61 6C 20 69 6E 64 65 78 65 64 20 66 69 6C 65 0D al indexed file.
007C50: 0A 20 20 20 20 20 20 61 63 63 65 73 73 65 73 2E . accesses.
007C60: 20 20 48 69 67 68 6C 79 20 73 6F 70 68 69 73 74 Highly sophist
007C70: 69 63 61 74 65 64 20 20 70 72 6F 67 72 61 6D 73 icated programs
007C80: 20 20 63 61 6E 20 20 61 6C 73 6F 20 20 75 73 65 can also use
007C90: 20 20 49 4E 44 45 58 31 20 20 74 6F 0D 0A 20 20 INDEX1 to..
007CA0: 20 20 20 20 63 6F 6D 70 61 63 74 20 20 74 68 65 compact the
007CB0: 20 20 64 61 74 61 20 20 66 69 6C 65 20 20 61 73 data file as
007CC0: 20 77 65 6C 6C 20 61 73 20 62 61 6C 61 6E 63 65 well as balance
007CD0: 20 74 68 65 20 69 6E 64 65 78 65 73 2E 20 43 61 the indexes. Ca
007CE0: 6C 6C 20 49 4E 44 45 58 31 0D 0A 20 20 20 20 20 ll INDEX1..
007CF0: 20 77 69 74 68 20 74 68 65 20 63 6F 6D 6D 61 6E with the comman
007D00: 64 20 27 4B 27 20 28 6B 6F 6D 70 72 65 73 73 29 d 'K' (kompress)
007D10: 20 74 6F 20 64 6F 20 61 20 63 6F 6D 70 6C 65 74 to do a complet
007D20: 65 20 72 65 6F 72 67 61 6E 69 7A 61 74 69 6F 6E e reorganization
007D30: 2E 20 20 20 49 66 0D 0A 20 20 20 20 20 20 74 68 . If.. th
007D40: 65 20 20 72 65 63 6F 72 64 20 20 61 72 67 75 6D e record argum
007D50: 65 6E 74 20 20 69 73 20 73 65 74 20 74 6F 20 61 ent is set to a
007D60: 6C 6C 20 62 6C 61 6E 6B 73 2C 20 74 68 65 6E 20 ll blanks, then
007D70: 74 68 65 20 73 61 6D 65 20 64 69 73 6B 20 64 72 the same disk dr
007D80: 69 76 65 0D 0A 20 20 20 20 20 20 61 6E 64 20 73 ive.. and s
007D90: 61 6D 65 20 6D 61 78 69 6D 75 6D 20 72 65 63 6F ame maximum reco
007DA0: 72 64 20 63 6F 75 6E 74 20 77 69 6C 6C 20 62 65 rd count will be
007DB0: 20 75 73 65 64 20 69 6E 20 63 72 65 61 74 69 6E used in creatin
007DC0: 67 20 74 68 65 20 20 6E 65 77 20 20 64 61 74 61 g the new data
007DD0: 0D 0A 20 20 20 20 20 20 62 61 73 65 20 20 20 63 .. base c
007DE0: 6F 70 69 65 73 2E 20 20 20 49 66 20 20 74 68 65 opies. If the
007DF0: 20 20 72 65 63 6F 72 64 20 20 61 72 67 75 6D 65 record argume
007E00: 65 20 64 65 6E 73 69 74 79 20 64 69 73 6B 73 20 e density disks
007E10: 77 69 74 68 0D 0A 20 20 20 20 20 20 31 32 38 20 with.. 128
007E20: 62 6C 6F 63 6B 73 2E 0D 0A 0D 0A 20 20 20 20 4D blocks..... M
007E30: 61 78 69 6D 75 6D 20 6E 75 6D 62 65 72 20 6F 66 aximum number of
007E40: 20 72 65 63 6F 72 64 73 0D 0A 0D 0A 20 20 20 20 records....
007E50: 20 20 20 20 20 20 20 54 68 65 20 20 6D 61 78 69 The maxi
007E60: 6D 75 6D 20 20 6E 75 6D 62 65 72 20 6F 66 20 72 mum number of r
007E70: 65 63 6F 72 64 73 20 73 68 6F 75 6C 64 20 62 65 ecords should be
007E80: 20 73 65 74 20 74 6F 20 73 6F 6D 65 77 68 61 74 set to somewhat
007E90: 20 28 35 30 20 74 6F 0D 0A 20 20 20 20 20 20 32 (50 to.. 2
007EA0: 30 30 29 20 6C 65 73 73 20 74 68 61 6E 20 74 68 00) less than th
007EB0: 65 20 74 68 65 6F 72 65 74 69 63 61 6C 20 6D 61 e theoretical ma
007EC0: 78 69 6D 75 6D 2E 20 20 49 66 2C 20 66 6F 72 20 ximum. If, for
007ED0: 65 78 61 6D 70 6C 65 2C 20 38 2D 62 79 74 65 20 example, 8-byte
007EE0: 6B 65 79 73 0D 0A 20 20 20 20 20 20 61 72 65 20 keys.. are
007EF0: 64 65 63 6C 61 72 65 64 20 77 69 74 68 20 75 70 declared with up
007F00: 20 74 6F 20 32 33 38 30 38 20 72 65 63 6F 72 64 to 23808 record
007F10: 73 2C 20 32 35 36 20 72 65 63 6F 72 64 73 20 61 s, 256 records a
007F20: 72 65 20 20 65 6E 74 65 72 65 64 2C 20 20 74 68 re entered, th
007F30: 65 0D 0A 20 20 20 20 20 20 69 6E 64 65 78 65 73 e.. indexes
007F40: 20 20 61 72 65 20 20 62 61 6C 61 6E 63 65 64 20 are balanced
007F50: 20 28 77 69 74 68 20 20 27 4A 27 29 2E 20 20 54 (with 'J'). T
007F60: 68 65 72 65 20 77 69 6C 6C 20 6E 6F 77 20 62 65 here will now be
007F70: 20 32 35 36 20 73 65 63 6F 6E 64 61 72 79 0D 0A 256 secondary..
007F80: 20 20 20 20 20 20 69 6E 64 65 78 65 73 20 62 6C indexes bl
007F90: 6F 63 6B 73 20 77 69 74 68 20 6F 6E 65 20 6B 65 ocks with one ke
007FA0: 79 20 65 61 63 68 2E 20 20 54 68 65 6E 2C 20 69 y each. Then, i
007FB0: 66 20 39 32 20 72 65 63 6F 72 64 73 20 61 72 65 f 92 records are
007FC0: 20 61 64 64 65 64 20 77 69 74 68 0D 0A 20 20 20 added with..
007FD0: 20 20 20 6B 65 79 20 67 72 65 61 74 65 72 20 74 key greater t
007FE0: 68 61 6E 20 74 68 65 20 32 35 36 74 68 20 72 65 han the 256th re
007FF0: 63 6F 72 64 2C 20 74 68 65 20 6C 61 73 74 20 73 cord, the last s
008000: 6E 74 20 20 69 73 20 20 67 69 76 65 6E 20 20 74 nt is given t
008010: 68 65 20 20 66 6F 6C 6C 6F 77 69 6E 67 0D 0A 20 he following..
008020: 20 20 20 20 20 73 74 72 75 63 74 75 72 65 2C 20 structure,
008030: 74 68 65 6E 20 61 6C 74 65 72 6E 61 74 65 20 64 then alternate d
008040: 69 73 6B 20 64 72 69 76 65 73 20 6F 72 20 61 20 isk drives or a
008050: 64 69 66 66 65 72 65 6E 74 20 20 6D 61 78 69 6D different maxim
008060: 75 6D 20 20 6E 75 6D 62 65 72 0D 0A 20 20 20 20 um number..
008070: 20 20 6F 66 20 72 65 63 6F 72 64 73 20 63 61 6E of records can
008080: 20 62 65 20 73 65 74 2E 0D 0A 0D 0A 0D 0A 20 20 be set.......
008090: 20 20 20 20 20 20 20 20 20 20 56 41 52 0D 0A 20 VAR..
0080A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0080B0: 20 6E 65 77 5F 70 61 72 61 6D 20 3A 20 52 45 43 new_param : REC
0080C0: 4F 52 44 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ORD..
0080D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6E 65 77 new
0080E0: 5F 64 69 73 6B 5F 66 6C 61 67 20 3A 20 43 48 41 _disk_flag : CHA
0080F0: 52 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 R;..
008100: 20 20 20 20 20 20 20 20 20 20 20 20 6E 65 77 5F new_
008110: 64 69 73 6B 20 3A 20 43 48 41 52 3B 0D 0A 20 20 disk : CHAR;..
008120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
008130: 20 20 20 20 20 20 6D 61 78 5F 6E 72 5F 66 6C 61 max_nr_fla
008140: 67 20 3A 20 43 48 41 52 3B 0D 0A 20 20 20 20 20 g : CHAR;..
008150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
008160: 20 20 20 6D 61 78 5F 6E 72 5F 72 65 63 20 3A 20 max_nr_rec :
008170: 49 4E 54 45 47 45 52 3B 0D 0A 20 20 20 20 20 20 INTEGER;..
008180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
008190: 20 20 6F 6C 64 5F 6C 65 61 76 65 20 3A 20 43 48 old_leave : CH
0081A0: 41 52 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 AR;..
0081B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 45 4E 44 END
0081C0: 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ;....
0081D0: 53 65 74 20 20 20 6E 65 77 5F 70 61 72 61 6D 2E Set new_param.
0081E0: 6E 65 77 5F 64 69 73 6B 5F 66 6C 61 67 20 20 20 new_disk_flag
0081F0: 74 6F 20 20 20 27 59 27 20 20 69 66 20 20 6E 65 to 'Y' if ne
008200: 65 63 6F 6E 64 61 72 79 20 69 6E 64 65 78 20 20 econdary index
008210: 77 69 6C 6C 20 20 62 65 0D 0A 20 20 20 20 20 20 will be..
008220: 66 75 6C 6C 2E 20 20 20 53 69 6E 63 65 20 20 6F full. Since o
008230: 6E 65 20 20 73 65 63 6F 6E 64 61 72 79 20 20 69 ne secondary i
008240: 6E 64 65 78 20 20 62 6C 6F 63 6B 20 20 63 61 6E ndex block can
008250: 20 68 6F 6C 64 20 39 33 20 38 2D 62 79 74 65 20 hold 93 8-byte
008260: 6B 65 79 73 2C 0D 0A 20 20 20 20 20 20 61 64 64 keys,.. add
008270: 69 6E 67 20 61 20 39 33 72 64 20 6B 65 79 20 6C ing a 93rd key l
008280: 61 72 67 65 72 20 74 68 61 6E 20 20 74 68 65 20 arger than the
008290: 20 32 35 36 74 68 20 20 77 69 6C 6C 20 20 22 6F 256th will "o
0082A0: 76 65 72 66 6C 6F 77 22 20 20 74 68 65 20 20 74 verflow" the t
0082B0: 6F 70 0D 0A 20 20 20 20 20 20 73 65 63 6F 6E 64 op.. second
0082C0: 61 72 79 20 69 6E 64 65 78 20 62 6C 6F 63 6B 2E ary index block.
0082D0: 20 41 20 73 65 72 69 6F 75 73 20 65 72 72 6F 72 A serious error
0082E0: 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
0082F0: 43 75 72 72 65 6E 74 6C 79 2C 20 20 74 68 65 20 Currently, the
008300: 20 6D 61 78 69 6D 75 6D 20 20 6E 75 6D 62 65 72 maximum number
008310: 20 20 6F 66 20 20 72 65 63 6F 72 64 73 20 69 73 of records is
008320: 20 33 32 37 36 37 20 66 6F 72 20 69 6E 64 65 78 32767 for index
008330: 0D 0A 20 20 20 20 20 20 66 69 6C 65 73 20 77 69 .. files wi
008340: 74 68 20 32 2D 2C 20 33 2D 2C 20 61 6E 64 20 34 th 2-, 3-, and 4
008350: 2D 62 79 74 65 20 6B 65 79 73 2E 0D 0A 0D 0A 0D -byte keys......
008360: 0A 20 20 20 20 20 20 37 2E 34 2E 39 20 20 53 61 . 7.4.9 Sa
008370: 6D 70 6C 65 20 69 6E 64 65 78 65 64 20 66 69 6C mple indexed fil
008380: 65 20 70 72 6F 67 72 61 6D 0D 0A 0D 0A 20 20 20 e program....
008390: 20 20 20 20 20 20 20 20 54 68 65 20 66 6F 6C 6C The foll
0083A0: 6F 77 69 6E 67 20 73 69 6D 70 6C 65 20 70 72 6F owing simple pro
0083B0: 67 72 61 6D 20 77 69 6C 6C 20 6C 65 74 20 79 6F gram will let yo
0083C0: 75 20 63 72 65 61 74 65 2C 20 61 64 64 20 74 6F u create, add to
0083D0: 2C 20 71 75 65 72 79 2C 0D 0A 20 20 20 20 20 20 , query,..
0083E0: 63 6C 6F 73 65 2C 20 61 6E 64 20 73 65 61 72 63 close, and searc
0083F0: 68 20 61 6E 79 20 64 61 74 61 20 62 61 73 65 2E h any data base.
008400: 77 5F 70 61 72 61 6D 2E 6E 65 77 5F 64 69 73 6B w_param.new_disk
008410: 0D 0A 20 20 20 20 20 20 63 6F 6E 74 61 69 6E 73 .. contains
008420: 20 20 61 6E 6F 74 68 65 72 20 20 20 64 69 73 6B another disk
008430: 20 20 20 64 72 69 76 65 20 20 20 6C 65 74 74 65 drive lette
008440: 72 20 20 20 28 73 75 63 68 20 20 20 61 73 20 20 r (such as
008450: 20 27 43 27 29 2E 20 20 20 20 53 65 74 0D 0A 20 'C'). Set..
008460: 20 20 20 20 20 6E 65 77 5F 70 61 72 61 6D 2E 6D new_param.m
008470: 61 78 5F 6E 72 5F 66 6C 61 67 20 20 74 6F 20 20 ax_nr_flag to
008480: 27 59 27 20 69 66 20 6E 65 77 5F 70 61 72 61 6D 'Y' if new_param
008490: 2E 6D 61 78 5F 6E 72 5F 72 65 63 20 63 6F 6E 74 .max_nr_rec cont
0084A0: 61 69 6E 73 20 61 20 6E 65 77 0D 0A 20 20 20 20 ains a new..
0084B0: 20 20 6D 61 78 69 6D 75 6D 20 6E 75 6D 62 65 72 maximum number
0084C0: 20 6F 66 20 72 65 63 6F 72 64 73 2C 20 73 75 63 of records, suc
0084D0: 68 20 61 73 20 32 30 30 30 2E 0D 0A 0D 0A 20 20 h as 2000.....
0084E0: 20 20 20 20 20 20 20 20 20 54 68 65 20 6E 65 77 The new
0084F0: 5F 64 69 73 6B 5F 66 6C 61 67 20 6F 6E 6C 79 20 _disk_flag only
008500: 77 6F 72 6B 73 20 77 69 74 68 20 74 68 65 20 27 works with the '
008510: 4B 27 20 6F 70 74 69 6F 6E 2E 20 20 54 68 65 20 K' option. The
008520: 6F 6C 64 5F 6C 65 61 76 65 0D 0A 20 20 20 20 20 old_leave..
008530: 20 66 6C 61 67 20 6F 6E 6C 79 20 77 6F 72 6B 73 flag only works
008540: 20 77 69 74 68 20 74 68 65 20 27 4B 27 20 6F 70 with the 'K' op
008550: 74 69 6F 6E 20 77 68 65 6E 20 61 20 6E 65 77 5F tion when a new_
008560: 64 69 73 6B 20 69 73 20 73 70 65 63 69 66 69 65 disk is specifie
008570: 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 d.....
008580: 20 57 68 65 6E 20 74 68 65 20 27 4B 27 20 6F 70 When the 'K' op
008590: 74 69 6F 6E 20 69 73 20 75 73 65 64 2C 20 20 74 tion is used, t
0085A0: 68 65 20 20 72 65 63 6F 72 64 20 20 70 61 73 73 he record pass
0085B0: 65 64 20 20 6D 75 73 74 20 20 62 65 20 20 62 69 ed must be bi
0085C0: 67 0D 0A 20 20 20 20 20 20 65 6E 6F 75 67 68 20 g.. enough
0085D0: 20 74 6F 20 68 6F 6C 64 20 72 65 63 6F 72 64 73 to hold records
0085E0: 20 72 65 61 64 20 66 72 6F 6D 20 74 68 65 20 64 read from the d
0085F0: 69 73 6B 2E 20 20 59 6F 75 20 6D 69 67 68 74 20 isk. You might
008600: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
008610: 07 00 00 00 02 09 2A E5 07 00 C1 02 00 00 00 02 ......*.........
008620: 07 00 C6 02 00 00 00 02 07 00 C2 02 00 00 00 02 ................
008630: 07 00 C7 02 00 00 00 02 07 00 C3 02 00 00 00 02 ................
008640: 07 00 C8 02 00 00 00 02 07 00 C4 02 00 00 00 02 ................
008650: 07 00 C9 02 00 00 00 02 07 00 C5 02 00 00 00 02 ................
008660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0086F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008700: 20 20 49 74 20 61 73 73 75 6D 65 73 20 74 68 61 It assumes tha
008710: 74 20 74 68 65 20 72 65 63 6F 72 64 20 61 6E 64 t the record and
008720: 20 20 74 68 65 0D 0A 20 20 20 20 20 20 6B 65 79 the.. key
008730: 20 20 20 61 72 65 20 20 20 61 6C 70 68 61 6E 75 are alphanu
008740: 6D 65 72 69 63 20 20 28 70 72 69 6E 74 61 62 6C meric (printabl
008750: 65 29 20 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 2E e) information.
008760: 20 20 20 59 6F 75 20 20 63 61 6E 20 20 65 6E 74 You can ent
008770: 65 72 0D 0A 20 20 20 20 20 20 69 6E 64 69 76 69 er.. indivi
008780: 64 75 61 6C 20 63 6F 6D 6D 61 6E 64 73 20 74 6F dual commands to
008790: 20 20 74 68 65 20 20 70 72 6F 67 72 61 6D 2C 20 the program,
0087A0: 20 77 68 69 63 68 20 20 77 69 6C 6C 20 20 63 61 which will ca
0087B0: 6C 6C 20 20 49 4E 44 45 58 30 20 20 28 6F 72 0D ll INDEX0 (or.
0087C0: 0A 20 20 20 20 20 20 49 4E 44 45 58 31 29 20 20 . INDEX1)
0087D0: 74 6F 20 70 65 72 66 6F 72 6D 20 74 68 65 20 65 to perform the e
0087E0: 71 75 69 76 61 6C 65 6E 74 20 63 6F 6D 6D 61 6E quivalent comman
0087F0: 64 2E 20 20 54 68 65 20 72 75 6E 74 69 6D 65 20 d. The runtime
008800: 65 78 61 6D 70 6C 65 20 74 68 61 74 0D 0A 20 20 example that..
008810: 20 20 20 20 66 6F 6C 6C 6F 77 73 20 74 68 65 20 follows the
008820: 6C 69 73 74 69 6E 67 20 6F 66 20 20 54 53 54 49 listing of TSTI
008830: 4E 44 45 58 20 20 73 68 6F 77 73 20 20 74 68 65 NDEX shows the
008840: 20 20 63 72 65 61 74 69 6F 6E 20 20 6F 66 20 20 creation of
008850: 61 20 20 73 69 6D 70 6C 65 0D 0A 20 20 20 20 20 a simple..
008860: 20 61 64 64 72 65 73 73 20 20 66 69 6C 65 2C 20 address file,
008870: 77 69 74 68 20 31 36 20 63 68 61 72 61 63 74 65 with 16 characte
008880: 72 20 73 65 61 72 63 68 20 6B 65 79 73 20 61 6E r search keys an
008890: 64 20 28 6F 6E 65 20 6C 69 6E 65 29 20 61 64 64 d (one line) add
0088A0: 72 65 73 73 65 73 0D 0A 20 20 20 20 20 20 75 70 resses.. up
0088B0: 20 74 6F 20 38 30 20 63 68 61 72 61 63 74 65 72 to 80 character
0088C0: 73 20 6C 6F 6E 67 2E 20 20 54 68 65 20 72 65 73 s long. The res
0088D0: 75 6C 74 69 6E 67 20 72 65 63 6F 72 64 73 20 61 ulting records a
0088E0: 72 65 20 20 74 68 65 6E 20 20 39 36 20 20 62 79 re then 96 by
0088F0: 74 65 73 0D 0A 20 20 20 20 20 20 6C 6F 6E 67 2E tes.. long.
008900: 6F 72 20 6B 6F 6D 70 72 65 73 73 20 6D 75 73 74 or kompress must
008910: 20 63 61 6C 6C 20 49 4E 44 45 58 31 20 2A 29 0D call INDEX1 *).
008920: 0A 20 20 20 20 20 20 20 20 20 20 20 20 49 46 20 . IF
008930: 28 63 6D 64 20 69 6E 20 5B 27 4A 27 2C 20 27 4B (cmd in ['J', 'K
008940: 27 5D 20 54 48 45 4E 0D 0A 20 20 20 20 20 20 20 '] THEN..
008950: 20 20 20 20 20 20 20 20 20 20 20 42 45 47 49 4E BEGIN
008960: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
008970: 20 20 20 20 72 65 63 20 3A 3D 20 27 20 27 3B 0D rec := ' ';.
008980: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
008990: 20 20 20 49 4E 44 45 58 31 28 63 6D 64 2C 20 6B INDEX1(cmd, k
0089A0: 65 79 2C 20 72 65 63 2C 20 69 72 29 3B 0D 0A 20 ey, rec, ir);..
0089B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0089C0: 20 45 4E 44 0D 0A 20 20 20 20 20 20 20 20 20 20 END..
0089D0: 20 20 45 4C 53 45 0D 0A 20 20 20 20 20 20 20 20 ELSE..
0089E0: 20 20 20 20 20 20 20 20 20 20 49 4E 44 45 58 30 INDEX0
0089F0: 28 63 6D 64 2C 20 6B 65 79 2C 20 72 65 63 2C 20 (cmd, key, rec,
008A00: 69 72 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 ir);..
008A10: 20 20 49 46 20 28 69 72 2E 72 65 74 75 72 6E 5F IF (ir.return_
008A20: 63 6F 64 65 20 3C 3E 20 30 29 20 54 48 45 4E 0D code <> 0) THEN.
008A30: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
008A40: 20 20 20 42 45 47 49 4E 0D 0A 20 20 20 20 20 20 BEGIN..
008A50: 20 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 writ
008A60: 65 6C 6E 28 27 45 72 72 6F 72 3A 27 2C 20 69 72 eln('Error:', ir
008A70: 2E 72 65 74 75 72 6E 5F 63 6F 64 65 29 3B 0D 0A .return_code);..
008A80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
008A90: 20 20 45 4E 44 3B 0D 0A 20 20 20 20 20 20 20 20 END;..
008AA0: 20 20 20 20 49 46 20 28 63 6D 64 20 3D 20 27 51 IF (cmd = 'Q
008AB0: 27 29 20 54 48 45 4E 0D 0A 20 20 20 20 20 20 20 ') THEN..
008AC0: 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 write
008AD0: 6C 6E 28 27 71 75 65 72 79 20 72 65 73 75 6C 74 ln('query result
008AE0: 3A 20 27 2C 6B 65 79 5B 31 5D 29 3B 0D 0A 0D 0A : ',key[1]);....
008AF0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 49 46 .. IF
008B00: 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A ................
008B10: 0D 0A 20 20 20 20 20 20 50 52 4F 47 52 41 4D 20 .. PROGRAM
008B20: 74 73 74 69 6E 64 65 78 3B 0D 0A 0D 0A 20 20 20 tstindex;....
008B30: 20 20 20 54 59 50 45 0D 0A 20 20 20 20 20 20 20 TYPE..
008B40: 20 20 20 20 20 6B 65 79 5F 74 20 3D 20 41 52 52 key_t = ARR
008B50: 41 59 5B 31 2E 2E 32 35 36 5D 20 6F 66 20 43 48 AY[1..256] of CH
008B60: 41 52 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 AR;..
008B70: 20 72 65 63 5F 74 20 3D 20 41 52 52 41 59 5B 31 rec_t = ARRAY[1
008B80: 2E 2E 32 30 34 38 5D 20 6F 66 20 43 48 41 52 3B ..2048] of CHAR;
008B90: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 63 74 .. ct
008BA0: 72 6C 5F 72 65 63 20 3D 20 52 45 43 4F 52 44 0D rl_rec = RECORD.
008BB0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
008BC0: 20 20 20 63 5F 31 20 3A 20 41 52 52 41 59 5B 31 c_1 : ARRAY[1
008BD0: 2E 2E 34 5D 20 6F 66 20 49 4E 54 45 47 45 52 3B ..4] of INTEGER;
008BE0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
008BF0: 20 20 20 20 72 65 63 5F 73 69 7A 65 20 3A 20 49 rec_size : I
008C00: 4E 54 45 47 45 52 3B 0D 0A 20 20 20 20 20 20 20 NTEGER;..
008C10: 20 20 20 20 20 20 20 20 20 20 20 63 5F 32 20 3A c_2 :
008C20: 20 49 4E 54 45 47 45 52 3B 0D 0A 20 20 20 20 20 INTEGER;..
008C30: 20 20 20 20 20 20 20 20 20 20 20 20 20 6B 65 79 key
008C40: 5F 73 69 7A 65 20 3A 20 49 4E 54 45 47 45 52 3B _size : INTEGER;
008C50: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
008C60: 20 20 20 20 65 6E 64 3B 0D 0A 20 20 20 20 20 20 end;..
008C70: 20 20 20 20 20 20 69 6E 64 65 78 5F 72 65 63 6F index_reco
008C80: 72 64 20 3D 20 52 45 43 4F 52 44 0D 0A 20 20 20 rd = RECORD..
008C90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 d
008CA0: 69 73 6B 20 3A 20 43 48 41 52 3B 0D 0A 20 20 20 isk : CHAR;..
008CB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 f
008CC0: 69 6C 65 6E 61 6D 65 20 3A 20 41 52 52 41 59 5B ilename : ARRAY[
008CD0: 31 2E 2E 38 5D 20 6F 66 20 43 48 41 52 3B 0D 0A 1..8] of CHAR;..
008CE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
008CF0: 20 20 72 65 74 75 72 6E 5F 63 6F 64 65 20 3A 20 return_code :
008D00: 20 28 63 6D 64 20 69 6E 20 5B 27 42 27 2C 20 27 (cmd in ['B', '
008D10: 52 27 2C 20 27 53 27 5D 29 20 54 48 45 4E 0D 0A R', 'S']) THEN..
008D20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
008D30: 20 20 42 45 47 49 4E 0D 0A 20 20 20 20 20 20 20 BEGIN..
008D40: 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 write
008D50: 6C 6E 28 27 6B 65 79 3A 20 27 2C 20 63 6F 70 79 ln('key: ', copy
008D60: 28 72 65 63 2C 20 31 2C 20 69 72 2E 63 74 6C 5E (rec, 1, ir.ctl^
008D70: 2E 6B 65 79 5F 73 69 7A 65 29 29 3B 0D 0A 20 20 .key_size));..
008D80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
008D90: 77 72 69 74 65 6C 6E 28 27 64 61 74 61 3A 20 27 writeln('data: '
008DA0: 2C 20 63 6F 70 79 28 72 65 63 2C 20 69 72 2E 63 , copy(rec, ir.c
008DB0: 74 6C 5E 2E 6B 65 79 5F 73 69 7A 65 20 2B 20 31 tl^.key_size + 1
008DC0: 2C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ,..
008DD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 72 2E ir.
008DE0: 63 74 6C 5E 2E 72 65 63 5F 73 69 7A 65 20 2D 20 ctl^.rec_size -
008DF0: 69 72 2E 63 74 6C 5E 2E 6B 65 79 5F 73 69 7A 65 ir.ctl^.key_size
008E00: 29 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ));..
008E10: 20 20 20 20 20 20 20 45 4E 44 3B 0D 0A 20 20 20 END;..
008E20: 20 20 20 20 20 20 20 20 20 55 4E 54 49 4C 20 28 UNTIL (
008E30: 63 6D 64 20 3D 20 27 3F 27 29 3B 0D 0A 20 20 20 cmd = '?');..
008E40: 20 20 20 45 4E 44 2E 20 20 20 20 20 20 20 20 28 END. (
008E50: 2A 20 74 73 74 69 6E 64 65 78 20 2A 29 0D 0A 0D * tstindex *)...
008E60: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 45 78 ... Ex
008E70: 65 63 75 74 69 6F 6E 20 20 6F 66 20 20 54 53 54 ecution of TST
008E80: 49 4E 44 45 58 20 20 69 73 20 73 68 6F 77 6E 20 INDEX is shown
008E90: 66 6F 72 20 61 20 73 69 6D 70 6C 65 20 64 61 74 for a simple dat
008EA0: 61 20 62 61 73 65 20 77 69 74 68 20 31 36 0D 0A a base with 16..
008EB0: 20 20 20 20 20 20 63 68 61 72 61 63 74 65 72 20 character
008EC0: 6E 61 6D 65 73 20 61 6E 64 20 75 70 20 74 6F 20 names and up to
008ED0: 39 36 20 63 68 61 72 61 63 74 65 72 73 20 6F 66 96 characters of
008EE0: 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 28 77 68 information (wh
008EF0: 69 63 68 20 68 61 70 70 65 6E 73 0D 0A 20 20 20 ich happens..
008F00: 49 4E 54 45 47 45 52 3B 0D 0A 20 20 20 20 20 20 INTEGER;..
008F10: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 5F res_
008F20: 31 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 20 20 1 : INTEGER;..
008F30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
008F40: 63 74 72 6C 20 3A 20 5E 63 74 72 6C 5F 72 65 63 ctrl : ^ctrl_rec
008F50: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
008F60: 20 20 20 20 20 72 65 73 65 72 76 65 64 20 3A 20 reserved :
008F70: 41 52 52 41 59 5B 31 2E 2E 31 39 36 5D 20 6F 66 ARRAY[1..196] of
008F80: 20 43 48 41 52 3B 0D 0A 20 20 20 20 20 20 20 20 CHAR;..
008F90: 20 20 20 20 20 20 20 20 20 20 45 4E 44 3B 0D 0A END;..
008FA0: 0D 0A 20 20 20 20 20 20 56 41 52 0D 0A 20 20 20 .. VAR..
008FB0: 20 20 20 20 20 20 20 20 20 6B 65 79 20 3A 20 6B key : k
008FC0: 65 79 5F 74 3B 0D 0A 20 20 20 20 20 20 20 20 20 ey_t;..
008FD0: 20 20 20 72 65 63 20 3A 20 72 65 63 5F 74 3B 0D rec : rec_t;.
008FE0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 63 6D 64 . cmd
008FF0: 20 3A 20 43 48 41 52 3B 0D 0A 20 20 20 20 20 20 : CHAR;..
009000: 20 20 20 20 20 20 69 72 20 3A 20 69 6E 64 65 78 ir : index
009010: 5F 72 65 63 6F 72 64 3B 0D 0A 20 20 20 20 20 20 _record;..
009020: 20 20 20 20 20 20 74 65 6D 5F 64 20 3A 20 41 52 tem_d : AR
009030: 52 41 59 5B 31 2E 2E 32 30 34 38 5D 20 6F 66 20 RAY[1..2048] of
009040: 43 48 41 52 3B 0D 0A 0D 0A 20 20 20 20 20 20 50 CHAR;.... P
009050: 52 4F 43 45 44 55 52 45 20 49 4E 44 45 58 30 20 ROCEDURE INDEX0
009060: 28 20 63 6F 6D 6D 61 6E 64 20 3A 20 43 48 41 52 ( command : CHAR
009070: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
009080: 20 20 20 20 20 76 61 72 20 6B 65 79 20 3A 20 6B var key : k
009090: 65 79 5F 74 3B 0D 0A 20 20 20 20 20 20 20 20 20 ey_t;..
0090A0: 20 20 20 20 20 20 20 20 20 76 61 72 20 72 65 63 var rec
0090B0: 20 3A 20 72 65 63 5F 74 3B 0D 0A 20 20 20 20 20 : rec_t;..
0090C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var
0090D0: 20 69 72 20 3A 20 69 6E 64 65 78 5F 72 65 63 6F ir : index_reco
0090E0: 72 64 20 29 3B 20 65 78 74 65 72 6E 3B 0D 0A 0D rd ); extern;...
0090F0: 0A 20 20 20 20 20 20 50 52 4F 43 45 44 55 52 45 . PROCEDURE
009100: 20 20 20 74 6F 20 62 65 20 61 64 64 72 65 73 73 to be address
009110: 65 73 29 2E 20 20 4E 6F 74 65 20 74 68 61 74 20 es). Note that
009120: 74 68 65 20 6B 65 79 20 6C 65 6E 67 74 68 20 20 the key length
009130: 61 6E 64 20 20 72 65 63 6F 72 64 20 20 6C 65 6E and record len
009140: 67 74 68 20 20 61 72 65 0D 0A 20 20 20 20 20 20 gth are..
009150: 65 6E 74 65 72 65 64 20 66 72 6F 6D 20 74 68 65 entered from the
009160: 20 74 65 72 6D 69 6E 61 6C 20 69 6E 20 74 68 65 terminal in the
009170: 20 4E 20 63 6F 6D 6D 61 6E 64 2E 0D 0A 0D 0A 20 N command.....
009180: 20 20 20 20 20 41 3E 45 58 45 43 20 42 3A 54 53 A>EXEC B:TS
009190: 54 49 4E 44 45 58 0D 0A 20 20 20 20 20 20 45 78 TINDEX.. Ex
0091A0: 65 63 20 20 76 65 72 20 33 2E 30 0D 0A 0D 0A 20 ec ver 3.0....
0091B0: 20 20 20 20 20 44 69 73 6B 3A 20 42 0D 0A 20 20 Disk: B..
0091C0: 20 20 20 20 46 69 6C 65 3A 20 41 44 44 52 45 53 File: ADDRES
0091D0: 53 0D 0A 20 20 20 20 20 20 63 6D 64 3A 20 57 0D S.. cmd: W.
0091E0: 0A 20 20 20 20 20 20 63 6D 64 3A 20 4E 0D 0A 20 . cmd: N..
0091F0: 20 20 20 20 20 52 65 63 6F 72 64 20 73 69 7A 65 Record size
009200: 20 69 6E 20 62 79 74 65 73 3A 20 39 36 0D 0A 20 in bytes: 96..
009210: 20 20 20 20 20 4B 65 79 20 73 69 7A 65 20 69 6E Key size in
009220: 20 62 79 74 65 73 3A 20 31 36 0D 0A 20 20 20 20 bytes: 16..
009230: 20 20 4D 61 78 69 6D 75 6D 20 6E 75 6D 62 65 72 Maximum number
009240: 20 6F 66 20 72 65 63 6F 72 64 73 3A 20 35 30 30 of records: 500
009250: 0D 0A 20 20 20 20 20 20 63 6D 64 3A 20 41 0D 0A .. cmd: A..
009260: 20 20 20 20 20 20 6B 65 79 3A 20 4A 52 54 0D 0A key: JRT..
009270: 20 20 20 20 20 20 64 61 74 61 3A 20 27 4A 52 54 data: 'JRT
009280: 20 53 79 73 74 65 6D 73 2F 34 35 20 43 61 6D 69 Systems/45 Cami
009290: 6E 6F 20 41 6C 74 6F 2F 4D 69 6C 6C 20 56 61 6C no Alto/Mill Val
0092A0: 6C 65 79 2C 20 43 41 20 39 34 39 34 31 27 0D 0A ley, CA 94941'..
0092B0: 20 20 20 20 20 20 63 6D 64 3A 20 41 0D 0A 20 20 cmd: A..
0092C0: 20 20 20 20 6B 65 79 3A 20 4F 4C 44 0D 0A 20 20 key: OLD..
0092D0: 20 20 20 20 64 61 74 61 3A 20 27 4F 6C 64 20 4A data: 'Old J
0092E0: 52 54 20 4F 66 66 69 63 65 2F 35 35 30 20 49 72 RT Office/550 Ir
0092F0: 76 69 6E 67 20 53 74 2F 53 46 2C 20 43 41 20 39 ving St/SF, CA 9
009300: 20 49 4E 44 45 58 31 20 28 20 63 6F 6D 6D 61 6E INDEX1 ( comman
009310: 64 20 3A 20 43 48 41 52 3B 0D 0A 20 20 20 20 20 d : CHAR;..
009320: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var
009330: 20 6B 65 79 20 3A 20 6B 65 79 5F 74 3B 0D 0A 20 key : key_t;..
009340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
009350: 20 76 61 72 20 72 65 63 20 3A 20 72 65 63 5F 74 var rec : rec_t
009360: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
009370: 20 20 20 20 20 76 61 72 20 69 72 20 3A 20 69 6E var ir : in
009380: 64 65 78 5F 72 65 63 6F 72 64 20 29 3B 20 65 78 dex_record ); ex
009390: 74 65 72 6E 3B 0D 0A 0D 0A 20 20 20 20 20 20 42 tern;.... B
0093A0: 45 47 49 4E 20 20 20 20 20 20 20 28 2A 20 74 73 EGIN (* ts
0093B0: 74 69 6E 64 65 78 20 2A 29 0D 0A 20 20 20 20 20 tindex *)..
0093C0: 20 69 72 20 3A 3D 20 27 20 27 3B 0D 0A 20 20 20 ir := ' ';..
0093D0: 20 20 20 77 72 69 74 65 28 27 44 69 73 6B 3A 20 write('Disk:
0093E0: 27 29 3B 0D 0A 20 20 20 20 20 20 72 65 61 64 6C ');.. readl
0093F0: 6E 28 69 72 2E 64 69 73 6B 29 3B 0D 0A 20 20 20 n(ir.disk);..
009400: 20 20 20 77 72 69 74 65 28 27 46 69 6C 65 3A 20 write('File:
009410: 27 29 3B 0D 0A 20 20 20 20 20 20 72 65 61 64 6C ');.. readl
009420: 6E 28 69 72 2E 66 69 6C 65 6E 61 6D 65 29 3B 0D n(ir.filename);.
009430: 0A 20 20 20 20 20 20 52 45 50 45 41 54 0D 0A 20 . REPEAT..
009440: 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 write
009450: 28 27 63 6D 64 3A 20 27 29 3B 0D 0A 20 20 20 20 ('cmd: ');..
009460: 20 20 20 20 20 20 20 20 72 65 61 64 6C 6E 28 63 readln(c
009470: 6D 64 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 md);..
009480: 20 20 63 6D 64 20 3A 3D 20 75 70 63 61 73 65 28 cmd := upcase(
009490: 63 6D 64 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 cmd);..
0094A0: 20 20 20 6B 65 79 20 3A 3D 20 27 20 27 3B 0D 0A key := ' ';..
0094B0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 63 20 rec
0094C0: 3A 3D 20 27 20 27 3B 0D 0A 20 20 20 20 20 20 20 := ' ';..
0094D0: 20 20 20 20 20 49 46 20 28 63 6D 64 20 69 6E 20 IF (cmd in
0094E0: 5B 27 41 27 2C 20 27 44 27 2C 20 27 52 27 2C 20 ['A', 'D', 'R',
0094F0: 27 55 27 5D 29 20 54 48 45 4E 20 0D 0A 20 20 20 'U']) THEN ..
009500: 34 31 32 32 27 0D 0A 20 20 20 20 20 20 63 6D 64 4122'.. cmd
009510: 3A 20 42 0D 0A 20 20 20 20 20 20 6B 65 79 3A 20 : B.. key:
009520: 4A 52 54 0D 0A 20 20 20 20 20 20 64 61 74 61 3A JRT.. data:
009530: 20 4A 52 54 20 53 79 73 74 65 6D 73 2F 34 35 20 JRT Systems/45
009540: 63 61 6D 69 6E 6F 20 41 6C 74 6F 2F 4D 69 6C 6C camino Alto/Mill
009550: 20 56 61 6C 6C 65 79 2C 20 43 41 20 39 34 39 34 Valley, CA 9494
009560: 31 0D 0A 20 20 20 20 20 20 63 6D 64 3A 20 53 0D 1.. cmd: S.
009570: 0A 20 20 20 20 20 20 6B 65 79 3A 20 4F 4C 44 0D . key: OLD.
009580: 0A 20 20 20 20 20 20 64 61 74 61 3A 20 4F 6C 64 . data: Old
009590: 20 4A 52 54 20 4F 66 66 69 63 65 2F 35 35 30 20 JRT Office/550
0095A0: 49 72 76 69 6E 67 20 53 74 2F 53 46 2C 20 43 41 Irving St/SF, CA
0095B0: 20 39 34 31 32 32 0D 0A 20 20 20 20 20 20 63 6D 94122.. cm
0095C0: 64 3A 20 53 0D 0A 20 20 20 20 20 20 25 49 4E 44 d: S.. %IND
0095D0: 45 58 20 65 72 72 6F 72 3A 20 4B 65 79 20 6E 6F EX error: Key no
0095E0: 74 20 66 6F 75 6E 64 0D 0A 20 20 20 20 20 20 45 t found.. E
0095F0: 72 72 6F 72 3A 20 33 0D 0A 20 20 20 20 20 20 63 rror: 3.. c
009600: 6D 64 3A 20 61 0D 0A 20 20 20 20 20 20 6B 65 79 md: a.. key
009610: 3A 20 4C 49 54 54 4C 45 0D 0A 20 20 20 20 20 20 : LITTLE..
009620: 64 61 74 61 3A 20 27 4C 69 74 74 6C 65 20 49 74 data: 'Little It
009630: 61 6C 79 2F 34 31 30 39 20 32 34 74 68 20 53 74 aly/4109 24th St
009640: 2F 53 46 2C 20 43 41 20 39 34 31 31 34 27 0D 0A /SF, CA 94114'..
009650: 20 20 20 20 20 20 63 6D 64 3A 20 61 0D 0A 20 20 cmd: a..
009660: 20 20 20 20 6B 65 79 3A 20 53 5A 45 43 48 57 41 key: SZECHWA
009670: 4E 0D 0A 20 20 20 20 20 20 64 61 74 61 3A 20 27 N.. data: '
009680: 53 7A 65 63 68 77 61 6E 20 43 6F 75 72 74 2F 31 Szechwan Court/1
009690: 36 36 38 20 48 61 69 67 68 74 20 53 74 2F 53 46 668 Haight St/SF
0096A0: 2C 20 43 41 20 39 34 31 31 37 27 0D 0A 20 20 20 , CA 94117'..
0096B0: 20 20 20 63 6D 64 3A 20 66 0D 0A 20 20 20 20 20 cmd: f..
0096C0: 20 63 6D 64 3A 20 72 0D 0A 20 20 20 20 20 20 6B cmd: r.. k
0096D0: 65 79 3A 20 4A 52 54 0D 0A 20 20 20 20 20 20 6B ey: JRT.. k
0096E0: 65 79 3A 20 4A 52 54 0D 0A 20 20 20 20 20 20 64 ey: JRT.. d
0096F0: 61 74 61 3A 20 4A 52 54 20 53 79 73 74 65 6D 73 ata: JRT Systems
009700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 B
009710: 45 47 49 4E 0D 0A 20 20 20 20 20 20 20 20 20 20 EGIN..
009720: 20 20 20 20 20 20 20 20 77 72 69 74 65 28 27 6B write('k
009730: 65 79 3A 20 27 29 3B 0D 0A 20 20 20 20 20 20 20 ey: ');..
009740: 20 20 20 20 20 20 20 20 20 20 20 72 65 61 64 6C readl
009750: 6E 28 6B 65 79 29 3B 0D 0A 20 20 20 20 20 20 20 n(key);..
009760: 20 20 20 20 20 20 20 20 20 20 20 49 46 20 28 63 IF (c
009770: 6D 64 20 69 6E 20 5B 27 41 27 2C 20 27 55 27 5D md in ['A', 'U']
009780: 20 54 48 45 4E 0D 0A 20 20 20 20 20 20 20 20 20 THEN..
009790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 B
0097A0: 45 47 49 4E 0D 0A 20 20 20 20 20 20 20 20 20 20 EGIN..
0097B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 72 wr
0097C0: 69 74 65 28 27 64 61 74 61 3A 20 27 29 3B 0D 0A ite('data: ');..
0097D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0097E0: 20 20 20 20 20 20 20 20 72 65 61 64 6C 6E 28 74 readln(t
0097F0: 65 6D 5F 64 29 3B 0D 0A 20 20 20 20 20 20 20 20 em_d);..
009800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
009810: 72 65 63 20 3A 3D 20 63 6F 70 79 28 6B 65 79 2C rec := copy(key,
009820: 20 31 2C 20 69 72 2E 63 74 6C 5E 2E 6B 65 79 5F 1, ir.ctl^.key_
009830: 73 69 7A 65 29 20 2B 0D 0A 20 20 20 20 20 20 20 size) +..
009840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
009850: 20 20 20 20 20 20 20 20 63 6F 70 79 28 74 65 6D copy(tem
009860: 5F 64 2C 20 31 2C 20 69 72 2E 63 74 6C 5E 2E 72 _d, 1, ir.ctl^.r
009870: 65 63 5F 73 69 7A 65 20 2D 0D 0A 20 20 20 20 20 ec_size -..
009880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
009890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i
0098A0: 72 2E 63 74 6C 5E 2E 6B 65 79 5F 73 69 7A 65 29 r.ctl^.key_size)
0098B0: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
0098C0: 20 20 20 20 20 20 20 20 20 20 20 45 4E 44 3B 0D END;.
0098D0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
0098E0: 20 20 20 45 4E 44 3B 0D 0A 20 20 20 20 20 20 20 END;..
0098F0: 20 20 20 20 20 28 2A 20 6A 75 73 74 69 66 79 20 (* justify
009900: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
009910: 08 00 00 00 02 09 2A E5 08 00 C1 02 00 00 00 02 ......*.........
009920: 08 00 C6 02 00 00 00 02 08 00 C2 02 00 00 00 02 ................
009930: 08 00 C7 02 00 00 00 02 08 00 C3 02 00 00 00 02 ................
009940: 08 00 C8 02 00 00 00 02 08 00 C4 02 00 00 00 02 ................
009950: 08 00 C9 02 00 00 00 02 08 00 C5 02 00 00 00 02 ................
009960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
009970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
009980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
009990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0099F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
009A00: 2F 34 35 20 43 61 6D 69 6E 6F 20 41 6C 74 6F 2F /45 Camino Alto/
009A10: 4D 69 6C 6C 20 56 61 6C 6C 65 79 2C 20 43 41 20 Mill Valley, CA
009A20: 39 34 39 34 31 0D 0A 20 20 20 20 20 20 63 6D 64 94941.. cmd
009A30: 3A 20 72 0D 0A 20 20 20 20 20 20 6B 65 79 3A 20 : r.. key:
009A40: 4F 54 48 45 52 0D 0A 20 20 20 20 20 20 25 49 4E OTHER.. %IN
009A50: 44 45 58 20 65 72 72 6F 72 3A 20 4B 65 79 20 6E DEX error: Key n
009A60: 6F 74 20 66 6F 75 6E 64 0D 0A 20 20 20 20 20 20 ot found..
009A70: 72 65 74 75 72 6E 20 63 6F 64 65 20 33 0D 0A 20 return code 3..
009A80: 20 20 20 20 20 63 6D 64 3A 20 7A 0D 0A 20 20 20 cmd: z..
009A90: 20 20 20 63 6D 64 3A 20 3F 0D 0A 20 20 20 20 20 cmd: ?..
009AA0: 20 45 72 72 6F 72 3A 20 37 0D 0A 0D 0A 20 20 20 Error: 7....
009AB0: 20 20 20 50 72 6F 67 72 61 6D 20 74 65 72 6D 69 Program termi
009AC0: 6E 61 74 69 6F 6E 0D 0A 0D 0A 20 20 20 20 20 20 nation....
009AD0: 37 2E 35 20 20 43 4C 4F 53 45 0D 0A 0D 0A 20 20 7.5 CLOSE....
009AE0: 20 20 20 20 46 6F 72 6D 61 74 0D 0A 20 20 20 20 Format..
009AF0: 20 20 43 4C 4F 53 45 20 28 20 66 69 6C 65 5F 76 CLOSE ( file_v
009B00: 61 72 69 61 62 6C 65 20 29 3B 0D 0A 0D 0A 20 20 ariable );....
009B10: 20 20 20 20 20 20 20 20 20 54 68 65 20 20 43 4C The CL
009B20: 4F 53 45 20 20 62 75 69 6C 74 69 6E 20 20 70 72 OSE builtin pr
009B30: 6F 63 65 64 75 72 65 20 20 74 65 72 6D 69 6E 61 ocedure termina
009B40: 74 65 73 20 20 70 72 6F 63 65 73 73 69 6E 67 20 tes processing
009B50: 61 67 61 69 6E 73 74 20 61 0D 0A 20 20 20 20 20 against a..
009B60: 20 73 65 71 75 65 6E 74 69 61 6C 20 6F 72 20 72 sequential or r
009B70: 61 6E 64 6F 6D 20 64 69 73 6B 20 66 69 6C 65 2E andom disk file.
009B80: 20 20 49 66 20 61 20 73 65 71 75 65 6E 74 69 61 If a sequentia
009B90: 6C 20 6F 75 74 70 75 74 20 66 69 6C 65 20 20 69 l output file i
009BA0: 73 20 20 6E 6F 74 0D 0A 20 20 20 20 20 20 70 72 s not.. pr
009BB0: 6F 70 65 72 6C 79 20 20 63 6C 6F 73 65 64 2C 20 operly closed,
009BC0: 20 74 68 65 20 20 64 61 74 61 20 20 77 72 69 74 the data writ
009BD0: 74 65 6E 20 20 6F 75 74 20 77 69 6C 6C 20 62 65 ten out will be
009BE0: 20 6C 6F 73 74 20 62 65 63 61 75 73 65 20 43 4C lost because CL
009BF0: 4F 53 45 0D 0A 20 20 20 20 20 20 75 70 64 61 74 OSE.. updat
009C00: 20 2A 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 *)..
009C10: 20 20 20 57 48 49 4C 45 20 43 48 20 3C 3E 20 43 WHILE CH <> C
009C20: 48 52 28 31 41 48 29 20 44 4F 0D 0A 20 20 20 20 HR(1AH) DO..
009C30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
009C40: 20 20 42 45 47 49 4E 0D 0A 20 20 20 20 20 20 20 BEGIN..
009C50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 W
009C60: 52 49 54 45 28 20 43 48 20 29 3B 0D 0A 20 20 20 RITE( CH );..
009C70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
009C80: 20 20 20 52 45 41 44 28 46 31 3B 20 43 48 29 3B READ(F1; CH);
009C90: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
009CA0: 20 20 20 20 20 20 20 20 45 4E 44 3B 0D 0A 20 20 END;..
009CB0: 20 20 20 20 20 20 20 20 20 20 20 20 43 4C 4F 53 CLOS
009CC0: 45 28 20 46 31 20 29 3B 0D 0A 0D 0A 20 20 20 20 E( F1 );....
009CD0: 20 20 37 2E 36 20 20 20 20 20 45 4F 4C 4E 0D 0A 7.6 EOLN..
009CE0: 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 74 20 31 .. Format 1
009CF0: 0D 0A 20 20 20 20 20 20 45 4F 4C 4E 20 28 20 66 .. EOLN ( f
009D00: 69 6C 65 5F 76 61 72 69 61 62 6C 65 20 29 3B 0D ile_variable );.
009D10: 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 74 20 ... Format
009D20: 32 0D 0A 20 20 20 20 20 20 45 4F 4C 4E 3B 0D 0A 2.. EOLN;..
009D30: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 65 .. The
009D40: 20 65 6E 64 20 6F 66 20 6C 69 6E 65 20 66 75 6E end of line fun
009D50: 63 74 69 6F 6E 20 72 65 74 75 72 6E 73 20 61 20 ction returns a
009D60: 42 6F 6F 6C 65 61 6E 20 76 61 6C 75 65 20 74 72 Boolean value tr
009D70: 75 65 20 69 66 20 74 68 65 20 65 6E 64 0D 0A 20 ue if the end..
009D80: 20 20 20 20 20 6F 66 20 6C 69 6E 65 20 69 73 20 of line is
009D90: 20 72 65 61 63 68 65 64 2C 20 20 6F 74 68 65 72 reached, other
009DA0: 77 69 73 65 20 20 69 74 20 20 72 65 74 75 72 6E wise it return
009DB0: 73 20 20 66 61 6C 73 65 2E 20 20 20 54 68 69 73 s false. This
009DC0: 20 20 66 75 6E 63 74 69 6F 6E 0D 0A 20 20 20 20 function..
009DD0: 20 20 61 70 70 6C 69 65 73 20 6F 6E 6C 79 20 74 applies only t
009DE0: 6F 20 63 6F 6E 73 6F 6C 65 20 61 6E 64 20 74 65 o console and te
009DF0: 78 74 20 66 69 6C 65 73 2C 20 6E 6F 74 20 74 6F xt files, not to
009E00: 65 73 20 74 68 65 20 64 69 73 6B 20 64 69 72 65 es the disk dire
009E10: 63 74 6F 72 79 2E 20 20 54 68 69 73 20 20 70 72 ctory. This pr
009E20: 6F 63 65 64 75 72 65 20 20 61 6C 73 6F 20 20 72 ocedure also r
009E30: 65 6C 65 61 73 65 73 20 20 73 74 6F 72 61 67 65 eleases storage
009E40: 0D 0A 20 20 20 20 20 20 72 65 73 65 72 76 65 64 .. reserved
009E50: 20 66 6F 72 20 69 6E 70 75 74 2F 6F 75 72 70 75 for input/ourpu
009E60: 74 20 62 75 66 66 65 72 73 20 6F 66 20 73 65 71 t buffers of seq
009E70: 75 65 6E 74 69 61 6C 20 66 69 6C 65 73 2E 0D 0A uential files...
009E80: 0D 0A 20 20 20 20 20 20 45 78 61 6D 70 6C 65 73 .. Examples
009E90: 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 :....
009EA0: 20 20 20 43 4C 4F 53 45 20 28 20 46 31 20 29 3B CLOSE ( F1 );
009EB0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
009EC0: 43 4C 4F 53 45 20 28 20 44 41 54 41 5F 46 49 4C CLOSE ( DATA_FIL
009ED0: 45 20 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 E );..
009EE0: 20 20 20 20 43 4C 4F 53 45 20 28 20 4D 41 53 54 CLOSE ( MAST
009EF0: 45 52 5F 43 55 53 54 4F 4D 45 52 5F 52 45 50 4F ER_CUSTOMER_REPO
009F00: 52 54 20 29 3B 0D 0A 1A 45 78 61 6D 70 6C 65 73 RT );...Examples
009F10: 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 :....
009F20: 20 20 20 43 4C 4F 53 45 20 28 20 46 31 20 29 3B CLOSE ( F1 );
009F30: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
009F40: 43 4C 4F 53 45 20 28 20 44 41 54 41 5F 46 49 4C CLOSE ( DATA_FIL
009F50: 45 20 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 E );..
009F60: 20 20 20 20 43 4C 4F 53 45 20 28 20 4D 41 53 54 CLOSE ( MAST
009F70: 45 52 5F 43 55 53 54 4F 4D 45 52 5F 52 45 50 4F ER_CUSTOMER_REPO
009F80: B0 00 8D B6 86 23 50 C4 00 53 02 9A A4 99 29 0F .....#P..S....).
009F90: 00 56 66 0E 98 B6 9E 92 02 74 EF 03 DC 24 52 23 .Vf......t...$R#
009FA0: 4A 98 00 34 49 73 04 50 C4 00 53 02 1A 45 8D 28 J..4Is.P..S..E.(
009FB0: CA 40 B4 75 9B 58 0C E9 36 A6 39 70 B8 B5 5C 59 .@.u.X..6.9p..\Y
009FC0: 03 D4 54 6B 35 F7 01 6E 92 6C 6D 59 D8 6A 13 8F ..Tk5..n.lmY.j..
009FD0: 06 1F 7C 80 7B B8 D6 40 1B 09 B8 B8 5C AC 6E 36 ..|.{..@....\.n6
009FE0: C0 5C B7 0A 68 94 EE 94 D4 C0 A1 56 80 2E 45 A2 .\..h......V..E.
009FF0: D5 46 52 9A 03 62 00 D0 3D 26 65 24 F9 00 37 69 .FR..b..=&e$..7i
00A000: 20 62 69 6E 61 72 79 20 66 69 6C 65 73 2E 0D 0A binary files...
00A010: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 46 6F 72 .. For
00A020: 6D 61 74 20 20 31 20 69 73 20 75 73 65 64 20 74 mat 1 is used t
00A030: 6F 20 73 65 6E 73 65 20 65 6E 64 20 6F 66 20 6C o sense end of l
00A040: 69 6E 65 20 77 68 69 6C 65 20 72 65 61 64 69 6E ine while readin
00A050: 67 20 64 69 73 6B 20 66 69 6C 65 73 2E 0D 0A 20 g disk files...
00A060: 20 20 20 20 20 46 6F 72 6D 61 74 20 32 20 69 73 Format 2 is
00A070: 20 75 73 65 64 20 74 6F 20 73 65 6E 73 65 20 65 used to sense e
00A080: 6E 64 20 6F 66 20 6C 69 6E 65 20 69 6E 20 63 6F nd of line in co
00A090: 6E 73 6F 6C 65 20 69 6E 70 75 74 2E 0D 0A 0D 0A nsole input.....
00A0A0: 20 20 20 20 20 20 20 20 20 20 20 54 68 69 73 20 This
00A0B0: 66 75 6E 63 74 69 6F 6E 20 69 73 20 75 73 65 64 function is used
00A0C0: 20 70 72 69 6D 61 72 69 6C 79 20 74 6F 20 72 65 primarily to re
00A0D0: 61 64 20 69 6E 20 61 6E 20 75 6E 6B 6E 6F 77 6E ad in an unknown
00A0E0: 20 6E 75 6D 62 65 72 20 20 6F 66 0D 0A 20 20 20 number of..
00A0F0: 20 20 20 64 61 74 61 20 20 69 74 65 6D 73 20 66 data items f
00A100: 72 6F 6D 20 61 20 6C 69 6E 65 20 6F 66 20 74 65 rom a line of te
00A110: 78 74 2E 20 20 45 78 65 63 75 74 69 6E 67 20 61 xt. Executing a
00A120: 20 52 45 41 44 4C 4E 2C 20 77 69 74 68 20 6F 72 READLN, with or
00A130: 20 77 69 74 68 6F 75 74 0D 0A 20 20 20 20 20 20 without..
00A140: 61 6E 79 20 70 61 72 61 6D 65 74 65 72 73 2C 20 any parameters,
00A150: 61 6C 77 61 79 73 20 72 65 73 65 74 73 20 45 4F always resets EO
00A160: 4C 4E 20 74 6F 20 66 61 6C 73 65 20 61 6E 64 20 LN to false and
00A170: 70 6F 73 69 74 69 6F 6E 73 20 74 68 65 20 66 69 positions the fi
00A180: 6C 65 20 61 74 0D 0A 20 20 20 20 20 20 74 68 65 le at.. the
00A190: 20 73 74 61 72 74 20 6F 66 20 74 68 65 20 6E 65 start of the ne
00A1A0: 78 74 20 6C 69 6E 65 20 6F 66 20 74 65 78 74 2E xt line of text.
00A1B0: 0D 0A 0D 0A 20 20 20 20 20 20 45 78 61 6D 70 6C .... Exampl
00A1C0: 65 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 31 2E 20 es:.... 1.
00A1D0: 20 20 20 20 20 28 2A 20 52 45 41 44 20 4E 55 4D (* READ NUM
00A1E0: 42 45 52 53 20 46 52 4F 4D 20 43 4F 4E 53 4F 4C BERS FROM CONSOL
00A1F0: 45 2C 20 43 4F 4D 50 55 54 45 20 41 56 47 20 2A E, COMPUTE AVG *
00A200: 20 20 20 20 20 20 37 2E 35 2E 31 20 20 20 45 4F 7.5.1 EO
00A210: 46 0D 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 F.... Forma
00A220: 74 0D 0A 20 20 20 20 20 20 45 4F 46 20 28 20 66 t.. EOF ( f
00A230: 69 6C 65 5F 76 61 72 69 61 62 6C 65 20 29 3B 0D ile_variable );.
00A240: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 ... Th
00A250: 65 20 20 65 6E 64 20 20 6F 66 20 20 66 69 6C 65 e end of file
00A260: 20 20 66 75 6E 63 74 69 6F 6E 20 69 6E 64 69 63 function indic
00A270: 61 74 65 73 20 77 68 65 6E 20 74 68 65 20 65 6E ates when the en
00A280: 64 20 6F 66 20 61 20 66 69 6C 65 20 69 73 0D 0A d of a file is..
00A290: 20 20 20 20 20 20 72 65 61 63 68 65 64 20 64 75 reached du
00A2A0: 72 69 6E 67 20 69 6E 70 75 74 20 70 72 6F 63 65 ring input proce
00A2B0: 73 73 69 6E 67 2E 20 20 49 74 20 72 65 74 75 72 ssing. It retur
00A2C0: 6E 73 20 61 20 42 6F 6F 6C 65 61 6E 20 76 61 6C ns a Boolean val
00A2D0: 75 65 20 6F 66 20 20 74 72 75 65 0D 0A 20 20 20 ue of true..
00A2E0: 20 20 20 69 6D 6D 65 64 69 61 74 65 6C 79 20 20 immediately
00A2F0: 61 66 74 65 72 20 65 6E 64 20 6F 66 20 66 69 6C after end of fil
00A300: 65 20 64 65 74 65 63 74 69 6F 6E 2C 20 6F 74 68 e detection, oth
00A310: 65 72 77 69 73 65 20 69 74 20 72 65 74 75 72 6E erwise it return
00A320: 73 20 66 61 6C 73 65 2E 0D 0A 20 20 20 20 20 20 s false...
00A330: 54 68 65 20 45 4F 46 20 66 75 6E 63 74 69 6F 6E The EOF function
00A340: 20 68 61 73 20 6E 6F 20 6D 65 61 6E 69 6E 67 20 has no meaning
00A350: 69 6E 20 63 6F 6E 73 6F 6C 65 20 6F 72 20 72 61 in console or ra
00A360: 6E 64 6F 6D 20 64 69 73 6B 20 70 72 6F 63 65 73 ndom disk proces
00A370: 73 69 6E 67 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 sing.....
00A380: 20 20 20 20 57 68 65 6E 20 70 72 6F 63 65 73 73 When process
00A390: 69 6E 67 20 61 20 66 69 6C 65 20 69 6E 20 74 65 ing a file in te
00A3A0: 78 74 20 6D 6F 64 65 2C 20 65 6E 64 20 20 6F 66 xt mode, end of
00A3B0: 20 20 66 69 6C 65 20 20 69 73 20 20 64 65 74 65 file is dete
00A3C0: 63 74 65 64 0D 0A 20 20 20 20 20 20 77 68 65 6E cted.. when
00A3D0: 20 20 61 6C 6C 20 20 64 61 74 61 20 20 75 70 20 all data up
00A3E0: 74 6F 20 74 68 65 20 66 69 72 73 74 20 43 54 52 to the first CTR
00A3F0: 4C 2D 5A 20 28 31 41 48 29 20 68 61 73 20 62 65 L-Z (1AH) has be
00A400: 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 )..
00A410: 20 54 4F 54 41 4C 20 3A 3D 20 30 3B 20 20 20 20 TOTAL := 0;
00A420: 20 43 4F 55 4E 54 20 3A 3D 20 30 3B 0D 0A 20 20 COUNT := 0;..
00A430: 20 20 20 20 20 20 20 20 20 20 20 20 57 48 49 4C WHIL
00A440: 45 20 4E 4F 54 20 45 4F 4C 4E 20 44 4F 0D 0A 20 E NOT EOLN DO..
00A450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00A460: 20 20 20 20 20 42 45 47 49 4E 0D 0A 20 20 20 20 BEGIN..
00A470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00A480: 20 20 52 45 41 44 28 20 4E 55 4D 42 45 52 20 29 READ( NUMBER )
00A490: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
00A4A0: 20 20 20 20 20 20 20 20 20 54 4F 54 41 4C 20 3A TOTAL :
00A4B0: 3D 20 54 4F 54 41 4C 20 2B 20 4E 55 4D 42 45 52 = TOTAL + NUMBER
00A4C0: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
00A4D0: 20 20 20 20 20 20 20 20 20 43 4F 55 4E 54 20 3A COUNT :
00A4E0: 3D 20 43 4F 55 4E 54 20 2B 20 31 3B 0D 0A 20 20 = COUNT + 1;..
00A4F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00A500: 20 20 20 20 45 4E 44 3B 0D 0A 20 20 20 20 20 20 END;..
00A510: 20 20 20 20 20 20 20 20 52 45 41 44 4C 4E 3B 0D READLN;.
00A520: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 . A
00A530: 56 45 52 41 47 45 20 3A 3D 20 54 4F 54 41 4C 20 VERAGE := TOTAL
00A540: 44 49 56 20 43 4F 55 4E 54 3B 0D 0A 0D 0A 20 20 DIV COUNT;....
00A550: 20 20 20 20 32 2E 20 20 20 20 20 20 28 2A 20 52 2. (* R
00A560: 45 41 44 20 44 41 54 41 20 46 52 4F 4D 20 46 49 EAD DATA FROM FI
00A570: 4C 45 2C 20 43 4F 55 4E 54 20 4C 49 4E 45 53 20 LE, COUNT LINES
00A580: 4F 46 20 54 45 58 54 20 2A 29 0D 0A 20 20 20 20 OF TEXT *)..
00A590: 20 20 20 20 20 20 20 20 20 20 4C 49 4E 45 5F 43 LINE_C
00A5A0: 4F 55 4E 54 20 3A 3D 20 30 3B 0D 0A 20 20 20 20 OUNT := 0;..
00A5B0: 20 20 20 20 20 20 20 20 20 20 57 48 49 4C 45 20 WHILE
00A5C0: 4E 4F 54 20 45 4F 46 28 46 31 29 20 44 4F 0D 0A NOT EOF(F1) DO..
00A5D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00A5E0: 20 20 20 20 20 20 42 45 47 49 4E 0D 0A 20 20 20 BEGIN..
00A5F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00A600: 65 6E 20 72 65 61 64 2E 20 20 54 68 69 73 20 69 en read. This i
00A610: 73 0D 0A 20 20 20 20 20 20 74 68 65 20 73 74 61 s.. the sta
00A620: 6E 64 61 72 64 20 63 68 61 72 61 63 74 65 72 20 ndard character
00A630: 74 6F 20 69 6E 64 69 63 61 74 65 20 74 68 65 20 to indicate the
00A640: 65 6E 64 20 6F 66 20 64 61 74 61 2E 0D 0A 0D 0A end of data.....
00A650: 20 20 20 20 20 20 20 20 20 20 20 57 68 65 6E 20 When
00A660: 70 72 6F 63 65 73 73 69 6E 67 20 61 20 66 69 6C processing a fil
00A670: 65 20 69 6E 20 62 69 6E 61 72 79 20 6D 6F 64 65 e in binary mode
00A680: 2C 20 65 6E 64 20 6F 66 20 66 69 6C 65 20 20 69 , end of file i
00A690: 73 20 20 64 65 74 65 63 74 65 64 0D 0A 20 20 20 s detected..
00A6A0: 20 20 20 77 68 65 6E 20 20 61 6C 6C 20 20 74 68 when all th
00A6B0: 65 20 64 61 74 61 20 69 6E 20 74 68 65 20 6C 61 e data in the la
00A6C0: 73 74 20 61 6C 6C 6F 63 61 74 65 64 20 73 65 63 st allocated sec
00A6D0: 74 6F 72 20 6F 66 20 74 68 65 20 66 69 6C 65 20 tor of the file
00A6E0: 68 61 73 20 62 65 65 6E 0D 0A 20 20 20 20 20 20 has been..
00A6F0: 72 65 61 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 45 read..... E
00A700: 78 61 6D 70 6C 65 73 3A 0D 0A 0D 0A 20 20 20 20 xamples:....
00A710: 20 20 31 2E 20 20 20 20 20 20 28 2A 20 43 4F 4D 1. (* COM
00A720: 50 55 54 45 20 54 48 45 20 41 56 45 52 41 47 45 PUTE THE AVERAGE
00A730: 20 4F 46 20 41 20 46 49 4C 45 20 4F 46 20 4E 55 OF A FILE OF NU
00A740: 4D 42 45 52 53 20 2A 29 0D 0A 20 20 20 20 20 20 MBERS *)..
00A750: 20 20 20 20 20 20 20 20 52 45 53 45 54 28 20 46 RESET( F
00A760: 31 2C 20 27 44 41 49 4C 59 2E 53 41 4C 27 2C 20 1, 'DAILY.SAL',
00A770: 54 45 58 54 2C 20 34 30 39 36 29 3B 0D 0A 20 20 TEXT, 4096);..
00A780: 20 20 20 20 20 20 20 20 20 20 20 20 54 4F 54 41 TOTA
00A790: 4C 20 3A 3D 20 30 3B 0D 0A 20 20 20 20 20 20 20 L := 0;..
00A7A0: 20 20 20 20 20 20 20 43 4F 55 4E 54 20 3A 3D 20 COUNT :=
00A7B0: 30 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 0;..
00A7C0: 20 20 57 48 49 4C 45 20 4E 4F 54 20 45 4F 46 28 WHILE NOT EOF(
00A7D0: 46 31 29 20 44 4F 0D 0A 20 20 20 20 20 20 20 20 F1) DO..
00A7E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 45 BE
00A7F0: 47 49 4E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 GIN..
00A800: 20 20 20 52 45 41 44 28 46 31 3B 20 44 41 54 41 READ(F1; DATA
00A810: 5F 49 54 45 4D 29 3B 0D 0A 20 20 20 20 20 20 20 _ITEM);..
00A820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 P
00A830: 52 4F 43 45 53 53 5F 44 41 54 41 28 20 44 41 54 ROCESS_DATA( DAT
00A840: 41 5F 49 54 45 4D 20 29 3B 0D 0A 20 20 20 20 20 A_ITEM );..
00A850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00A860: 20 49 46 20 45 4F 4C 4E 28 46 31 29 20 54 48 45 IF EOLN(F1) THE
00A870: 4E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 N..
00A880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00A890: 20 42 45 47 49 4E 0D 0A 20 20 20 20 20 20 20 20 BEGIN..
00A8A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00A8B0: 20 20 20 20 20 20 4C 49 4E 45 5F 43 4F 55 4E 54 LINE_COUNT
00A8C0: 20 3A 3D 20 4C 49 4E 45 5F 43 4F 55 4E 54 20 2B := LINE_COUNT +
00A8D0: 20 31 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 1;..
00A8E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00A8F0: 20 20 20 52 45 41 44 4C 4E 28 46 31 29 0D 0A 20 READLN(F1)..
00A900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00A910: 20 20 20 20 20 20 20 20 20 20 20 20 20 45 4E 44 END
00A920: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
00A930: 20 20 20 20 20 20 20 20 20 45 4E 44 3B 0D 0A 0D END;...
00A940: 0A 0D 0A 20 20 20 20 20 20 37 2E 37 20 20 20 20 ... 7.7
00A950: 20 45 52 41 53 45 0D 0A 0D 0A 20 20 20 20 20 20 ERASE....
00A960: 46 6F 72 6D 61 74 0D 0A 20 20 20 20 20 20 45 52 Format.. ER
00A970: 41 53 45 20 28 20 66 69 6C 65 6E 61 6D 65 20 29 ASE ( filename )
00A980: 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ;....
00A990: 54 68 65 20 45 52 41 53 45 20 70 72 6F 63 65 64 The ERASE proced
00A9A0: 75 72 65 20 64 65 6C 65 74 65 73 20 66 69 6C 65 ure deletes file
00A9B0: 73 20 66 72 6F 6D 20 74 68 65 20 64 69 73 6B 2E s from the disk.
00A9C0: 20 20 49 74 20 63 61 6E 20 62 65 20 75 73 65 64 It can be used
00A9D0: 0D 0A 20 20 20 20 20 20 74 6F 20 64 65 6C 65 74 .. to delet
00A9E0: 65 20 66 69 6C 65 73 20 20 66 72 6F 6D 20 20 61 e files from a
00A9F0: 6E 79 20 20 61 76 61 69 6C 61 62 6C 65 20 20 64 ny available d
00AA00: 20 20 20 20 20 20 20 20 20 20 20 52 45 41 44 28 READ(
00AA10: 46 31 3B 20 44 41 49 4C 59 5F 53 41 4C 45 53 29 F1; DAILY_SALES)
00AA20: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
00AA30: 20 20 20 20 20 20 20 20 20 54 4F 54 41 4C 20 3A TOTAL :
00AA40: 3D 20 54 4F 54 41 4C 20 2B 20 44 41 49 4C 59 5F = TOTAL + DAILY_
00AA50: 53 41 4C 45 53 3B 0D 0A 20 20 20 20 20 20 20 20 SALES;..
00AA60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 4F CO
00AA70: 55 4E 54 20 3A 3D 20 43 4F 55 4E 54 20 2B 20 31 UNT := COUNT + 1
00AA80: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
00AA90: 20 20 20 20 20 20 20 20 20 45 4E 44 3B 0D 0A 20 END;..
00AAA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 56 45 AVE
00AAB0: 52 41 47 45 20 3A 3D 20 54 4F 54 41 4C 20 2F 20 RAGE := TOTAL /
00AAC0: 43 4F 55 4E 54 3B 0D 0A 20 20 20 20 20 20 20 20 COUNT;..
00AAD0: 20 20 20 20 20 20 43 4C 4F 53 45 28 20 46 31 20 CLOSE( F1
00AAE0: 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 32 2E 20 20 );.... 2.
00AAF0: 20 20 20 20 28 2A 20 57 52 49 54 45 20 41 20 46 (* WRITE A F
00AB00: 49 4C 45 20 54 4F 20 54 48 45 20 50 52 49 4E 54 ILE TO THE PRINT
00AB10: 45 52 20 2A 29 0D 0A 20 20 20 20 20 20 20 20 20 ER *)..
00AB20: 20 20 20 20 20 53 59 53 54 45 4D 28 20 4C 49 53 SYSTEM( LIS
00AB30: 54 20 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 T );..
00AB40: 20 20 20 20 52 45 53 45 54 28 20 46 31 2C 20 27 RESET( F1, '
00AB50: 54 45 53 54 2E 50 41 53 27 2C 20 42 49 4E 41 52 TEST.PAS', BINAR
00AB60: 59 2C 20 32 30 34 38 20 29 3B 0D 0A 20 20 20 20 Y, 2048 );..
00AB70: 20 20 20 20 20 20 20 20 20 20 52 45 41 44 28 46 READ(F
00AB80: 31 3B 20 43 48 29 3B 0D 0A 20 20 20 20 20 20 20 1; CH);..
00AB90: 20 20 20 20 20 20 20 28 2A 20 49 4E 53 54 45 41 (* INSTEA
00ABA0: 44 20 4F 46 20 55 53 49 4E 47 20 45 4F 46 2C 20 D OF USING EOF,
00ABB0: 57 45 20 44 49 52 45 43 54 4C 59 20 54 45 53 54 WE DIRECTLY TEST
00ABC0: 20 46 4F 52 20 0D 0A 20 20 20 20 20 20 20 20 20 FOR ..
00ABD0: 20 20 20 20 20 41 20 43 48 41 52 41 43 54 45 52 A CHARACTER
00ABE0: 20 31 41 48 2C 20 53 49 4E 43 45 20 54 48 49 53 1AH, SINCE THIS
00ABF0: 20 49 53 20 42 49 4E 41 52 59 20 46 49 4C 45 20 IS BINARY FILE
00AC00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00AC10: 09 00 00 00 02 09 2A E5 09 00 C1 02 00 00 00 02 ......*.........
00AC20: 09 00 C6 02 00 00 00 02 09 00 C2 02 00 00 00 02 ................
00AC30: 09 00 C7 02 00 00 00 02 09 00 C3 02 00 00 00 02 ................
00AC40: 09 00 C8 02 00 00 00 02 09 00 C4 02 00 00 00 02 ................
00AC50: 09 00 C9 02 00 00 00 02 09 00 C5 02 00 00 00 02 ................
00AC60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AC70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AC80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AC90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00ACF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00AD00: 69 73 6B 20 20 62 79 20 20 69 6E 63 6C 75 64 69 isk by includi
00AD10: 6E 67 20 20 74 68 65 20 20 64 69 73 6B 0D 0A 20 ng the disk..
00AD20: 20 20 20 20 20 69 64 65 6E 74 69 66 69 65 72 20 identifier
00AD30: 69 6E 20 74 68 65 20 66 69 6C 65 6E 61 6D 65 2E in the filename.
00AD40: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 45 .... E
00AD50: 52 41 53 45 20 20 69 73 20 20 69 6D 70 6C 65 6D RASE is implem
00AD60: 65 6E 74 65 64 20 20 61 73 20 20 61 6E 20 20 65 ented as an e
00AD70: 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 xternal procedur
00AD80: 65 2E 20 20 41 6E 79 20 70 72 6F 67 72 61 6D 0D e. Any program.
00AD90: 0A 20 20 20 20 20 20 72 65 66 65 72 65 6E 63 69 . referenci
00ADA0: 6E 67 20 69 74 20 6D 75 73 74 20 69 6E 63 6C 75 ng it must inclu
00ADB0: 64 65 20 69 74 20 64 65 63 6C 61 72 61 74 69 6F de it declaratio
00ADC0: 6E 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 n:....
00ADD0: 20 20 20 20 20 20 20 20 20 20 20 20 50 52 4F 43 PROC
00ADE0: 45 44 55 52 45 20 45 52 41 53 45 20 28 20 4E 41 EDURE ERASE ( NA
00ADF0: 4D 45 20 3A 20 53 54 52 49 4E 47 5B 32 30 5D 20 ME : STRING[20]
00AE00: 29 3B 20 45 58 54 45 52 4E 3B 0D 0A 0D 0A 20 20 ); EXTERN;....
00AE10: 20 20 20 20 45 78 61 6D 70 6C 65 73 3A 0D 0A 0D Examples:...
00AE20: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
00AE30: 20 20 20 20 20 20 20 45 52 41 53 45 28 20 27 54 ERASE( 'T
00AE40: 45 53 54 50 47 4D 2E 50 41 53 27 20 29 3B 0D 0A ESTPGM.PAS' );..
00AE50: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
00AE60: 20 20 20 20 20 20 20 20 45 52 41 53 45 28 20 43 ERASE( C
00AE70: 4F 4E 43 41 54 28 20 27 42 3A 27 2C 20 46 49 4C ONCAT( 'B:', FIL
00AE80: 45 4E 41 4D 45 2C 20 46 49 4C 45 54 59 50 45 20 ENAME, FILETYPE
00AE90: 29 20 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ) );....
00AEA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 52 ER
00AEB0: 41 53 45 28 20 27 41 3A 27 20 2B 20 4E 41 4D 45 ASE( 'A:' + NAME
00AEC0: 20 2B 20 27 2E 48 45 58 27 20 29 3B 0D 0A 0D 0A + '.HEX' );....
00AED0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00AEE0: 20 20 20 20 20 20 45 52 41 53 45 28 20 42 41 43 ERASE( BAC
00AEF0: 4B 55 50 5F 46 49 4C 45 20 29 3B 0D 0A 0D 0A 0D KUP_FILE );.....
00AF00: 61 6D 69 6C 69 61 72 20 66 65 61 74 75 72 65 73 amiliar features
00AF10: 20 73 75 63 68 20 61 73 20 77 69 74 68 20 74 72 such as with tr
00AF20: 61 69 6C 69 6E 67 20 73 69 67 6E 73 2E 0D 0A 0D ailing signs....
00AF30: 0A 20 20 20 20 20 20 20 20 20 20 20 50 49 43 54 . PICT
00AF40: 55 52 45 20 20 74 61 6B 65 73 20 20 61 20 20 66 URE takes a f
00AF50: 6F 72 6D 61 74 20 73 74 72 69 6E 67 20 61 6E 64 ormat string and
00AF60: 20 61 20 72 65 61 6C 20 6E 75 6D 62 65 72 20 61 a real number a
00AF70: 73 20 61 72 67 75 6D 65 6E 74 73 2E 0D 0A 20 20 s arguments...
00AF80: 20 20 20 20 49 74 20 72 65 74 75 72 6E 73 20 61 It returns a
00AF90: 20 66 6F 72 6D 61 74 65 64 20 73 74 72 69 6E 67 formated string
00AFA0: 2C 20 77 68 69 63 68 20 63 61 6E 20 62 65 20 70 , which can be p
00AFB0: 72 69 6E 74 65 64 20 20 6F 6E 20 20 74 68 65 20 rinted on the
00AFC0: 20 63 6F 6E 73 6F 6C 65 2C 0D 0A 20 20 20 20 20 console,..
00AFD0: 20 74 68 65 20 6C 69 6E 65 20 70 72 69 6E 74 65 the line printe
00AFE0: 72 2C 20 77 72 69 74 74 65 6E 20 74 6F 20 61 20 r, written to a
00AFF0: 66 69 6C 65 2C 20 63 6F 6E 63 61 74 65 6E 61 74 file, concatenat
00B000: 65 64 20 77 69 74 68 20 6F 74 68 65 72 20 73 74 ed with other st
00B010: 72 69 6E 67 73 2C 0D 0A 20 20 20 20 20 20 6F 72 rings,.. or
00B020: 20 73 61 76 65 64 20 66 6F 72 20 66 75 72 74 68 saved for furth
00B030: 65 72 20 70 72 6F 63 65 73 73 69 6E 67 2E 20 20 er processing.
00B040: 46 6F 72 20 65 78 61 6D 70 6C 65 2C 0D 0A 0D 0A For example,....
00B050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 RE
00B060: 53 24 20 3A 3D 20 50 49 43 54 55 52 45 28 22 2A S$ := PICTURE("*
00B070: 24 23 23 2C 23 23 23 2E 23 23 22 2C 20 31 34 35 $##,###.##", 145
00B080: 36 2E 32 30 29 3B 0D 0A 20 20 20 20 20 20 20 20 6.20);..
00B090: 20 20 20 20 20 20 57 52 49 54 45 4C 4E 20 28 22 WRITELN ("
00B0A0: 53 75 6D 3A 20 22 2C 20 50 49 43 54 55 52 45 28 Sum: ", PICTURE(
00B0B0: 22 23 23 23 2C 23 23 23 2E 23 23 23 20 23 23 23 "###,###.### ###
00B0C0: 22 2C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ",..
00B0D0: 20 20 20 20 20 20 20 20 20 20 36 35 38 33 2E 31 6583.1
00B0E0: 32 33 34 35 36 37 29 29 3B 0D 0A 0D 0A 20 20 20 234567));....
00B0F0: 20 20 20 77 69 6C 6C 20 20 73 65 74 20 20 52 45 will set RE
00B100: 0A 20 20 20 20 20 20 37 2E 38 20 20 47 45 54 0D . 7.8 GET.
00B110: 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 74 0D ... Format.
00B120: 0A 20 20 20 20 20 20 47 45 54 20 28 20 66 69 6C . GET ( fil
00B130: 65 5F 76 61 72 69 61 62 6C 65 20 29 3B 0D 0A 0D e_variable );...
00B140: 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 69 73 . This
00B150: 20 73 74 61 6E 64 61 72 64 20 50 61 73 63 61 6C standard Pascal
00B160: 20 70 72 6F 63 65 64 75 72 65 20 6D 6F 76 65 73 procedure moves
00B170: 20 74 68 65 20 6E 65 78 74 20 64 61 74 61 20 69 the next data i
00B180: 74 65 6D 20 66 72 6F 6D 20 74 68 65 0D 0A 20 20 tem from the..
00B190: 20 20 20 20 73 65 71 75 65 6E 74 69 61 6C 20 66 sequential f
00B1A0: 69 6C 65 20 69 6E 74 6F 20 74 68 65 20 66 69 6C ile into the fil
00B1B0: 65 27 73 20 62 75 66 66 65 72 20 76 61 72 69 61 e's buffer varia
00B1C0: 62 6C 65 2E 20 20 20 49 66 20 20 74 68 65 72 65 ble. If there
00B1D0: 20 20 69 73 20 20 6E 6F 74 0D 0A 20 20 20 20 20 is not..
00B1E0: 20 61 6E 6F 74 68 65 72 20 64 61 74 61 20 69 74 another data it
00B1F0: 65 6D 20 69 6E 20 74 68 65 20 66 69 6C 65 20 74 em in the file t
00B200: 68 65 6E 20 74 68 65 20 45 4F 46 20 66 75 6E 63 hen the EOF func
00B210: 74 69 6F 6E 20 62 65 63 6F 6D 65 73 20 74 72 75 tion becomes tru
00B220: 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 e.....
00B230: 20 54 68 65 20 20 52 45 41 44 20 70 72 6F 63 65 The READ proce
00B240: 64 75 72 65 20 61 6C 6C 6F 77 73 20 72 65 61 64 dure allows read
00B250: 69 6E 67 20 64 69 72 65 63 74 6C 79 20 66 72 6F ing directly fro
00B260: 6D 20 61 20 66 69 6C 65 20 69 6E 74 6F 20 61 6E m a file into an
00B270: 79 0D 0A 20 20 20 20 20 20 76 61 72 69 61 62 6C y.. variabl
00B280: 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 e.....
00B290: 20 20 20 20 52 45 41 44 20 28 20 46 3B 20 58 20 READ ( F; X
00B2A0: 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 );....
00B2B0: 20 69 73 20 65 71 75 69 76 61 6C 65 6E 74 20 74 is equivalent t
00B2C0: 6F 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 o:....
00B2D0: 20 20 20 20 58 20 3A 3D 20 46 5E 3B 0D 0A 20 20 X := F^;..
00B2E0: 20 20 20 20 20 20 20 20 20 20 20 20 47 45 54 20 GET
00B2F0: 28 20 46 20 29 3B 0D 0A 0D 0A 0D 0A 20 20 20 20 ( F );......
00B300: 53 24 20 20 28 77 68 69 63 68 20 20 73 68 6F 75 S$ (which shou
00B310: 6C 64 20 20 62 65 20 20 64 65 63 6C 61 72 65 64 ld be declared
00B320: 20 61 73 20 61 20 73 74 72 69 6E 67 20 6F 72 20 as a string or
00B330: 61 72 72 61 79 20 6F 66 0D 0A 20 20 20 20 20 20 array of..
00B340: 63 68 61 72 61 63 74 65 72 73 29 20 74 6F 20 74 characters) to t
00B350: 68 65 20 65 6C 65 76 65 6E 20 63 68 61 72 61 63 he eleven charac
00B360: 74 65 72 73 20 2A 2A 24 31 2C 34 35 36 2E 32 30 ters **$1,456.20
00B370: 20 20 61 6E 64 20 20 6E 65 78 74 20 20 77 72 69 and next wri
00B380: 74 65 20 20 61 0D 0A 20 20 20 20 20 20 6C 69 6E te a.. lin
00B390: 65 20 63 6F 6E 73 69 73 74 69 6E 67 20 6F 66 20 e consisting of
00B3A0: 74 68 65 20 74 77 65 6E 74 79 20 63 68 61 72 61 the twenty chara
00B3B0: 63 74 65 72 73 20 20 53 75 6D 3A 20 20 20 36 2C cters Sum: 6,
00B3C0: 35 38 33 2E 31 32 33 20 34 35 36 2E 0D 0A 0D 0A 583.123 456.....
00B3D0: 20 20 20 20 20 20 20 20 20 20 20 50 49 43 54 55 PICTU
00B3E0: 52 45 20 20 20 69 73 20 20 20 73 75 70 70 6C 69 RE is suppli
00B3F0: 65 64 20 20 20 61 73 20 20 20 61 20 20 63 6F 6D ed as a com
00B400: 70 69 6C 65 64 20 20 66 75 6E 63 74 69 6F 6E 20 piled function
00B410: 20 28 74 68 65 20 20 66 69 6C 65 0D 0A 20 20 20 (the file..
00B420: 20 20 20 50 49 43 54 55 52 45 2E 49 4E 54 29 2E PICTURE.INT).
00B430: 20 20 50 49 43 54 55 52 45 20 6D 75 73 74 20 62 PICTURE must b
00B440: 65 20 64 65 63 6C 61 72 65 64 20 69 6E 20 61 6E e declared in an
00B450: 79 20 70 72 6F 67 72 61 6D 20 74 68 61 74 20 20 y program that
00B460: 75 73 65 73 20 20 69 74 0D 0A 20 20 20 20 20 20 uses it..
00B470: 61 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 as..
00B480: 20 20 46 55 4E 43 54 49 4F 4E 20 50 49 43 54 55 FUNCTION PICTU
00B490: 52 45 20 28 46 4D 54 20 3A 20 53 54 52 49 4E 47 RE (FMT : STRING
00B4A0: 3B 20 52 20 3A 20 52 45 41 4C 29 20 3A 0D 0A 20 ; R : REAL) :..
00B4B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00B4C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 54 ST
00B4D0: 52 49 4E 47 3B 20 45 58 54 45 52 4E 3B 0D 0A 0D RING; EXTERN;...
00B4E0: 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 . The
00B4F0: 66 6F 72 6D 61 74 20 73 74 72 69 6E 67 20 69 73 format string is
00B500: 20 20 37 2E 39 20 20 20 4F 50 45 4E 0D 0A 0D 0A 7.9 OPEN....
00B510: 20 20 20 20 20 20 46 6F 72 6D 61 74 20 31 0D 0A Format 1..
00B520: 20 20 20 20 20 20 4F 50 45 4E 20 28 20 66 69 6C OPEN ( fil
00B530: 65 5F 76 61 72 69 61 62 6C 65 2C 20 66 69 6C 65 e_variable, file
00B540: 6E 61 6D 65 2C 20 42 49 4E 41 52 59 20 29 3B 0D name, BINARY );.
00B550: 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 74 20 ... Format
00B560: 32 0D 0A 20 20 20 20 20 20 4F 50 45 4E 20 28 20 2.. OPEN (
00B570: 66 69 6C 65 5F 76 61 72 69 61 62 6C 65 2C 20 66 file_variable, f
00B580: 69 6C 65 6E 61 6D 65 2C 20 54 45 58 54 20 29 3B ilename, TEXT );
00B590: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 .... T
00B5A0: 68 65 20 4F 50 45 4E 20 62 75 69 6C 74 69 6E 20 he OPEN builtin
00B5B0: 70 72 6F 63 65 64 75 72 65 20 69 73 20 75 73 65 procedure is use
00B5C0: 64 20 20 74 6F 20 20 6F 70 65 6E 20 20 66 69 6C d to open fil
00B5D0: 65 73 20 20 66 6F 72 20 20 72 61 6E 64 6F 6D 0D es for random.
00B5E0: 0A 20 20 20 20 20 20 61 63 63 65 73 73 2E 20 20 . access.
00B5F0: 20 46 6F 72 6D 61 74 20 31 20 69 73 20 75 73 65 Format 1 is use
00B600: 64 20 74 6F 20 6F 70 65 6E 20 66 69 6C 65 73 20 d to open files
00B610: 69 6E 20 62 69 6E 61 72 79 20 6D 6F 64 65 2E 20 in binary mode.
00B620: 20 46 6F 72 6D 61 74 20 32 20 69 73 0D 0A 20 20 Format 2 is..
00B630: 20 20 20 20 75 73 65 64 20 74 6F 20 6F 70 65 6E used to open
00B640: 20 66 69 6C 65 73 20 69 6E 20 74 65 78 74 20 6D files in text m
00B650: 6F 64 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ode.....
00B660: 20 20 20 54 68 65 20 66 69 6C 65 5F 76 61 72 69 The file_vari
00B670: 61 62 6C 65 20 72 65 66 65 72 73 20 74 6F 20 61 able refers to a
00B680: 20 66 69 6C 65 20 76 61 72 69 61 62 6C 65 20 64 file variable d
00B690: 65 63 6C 61 72 65 64 20 69 6E 20 74 68 65 20 20 eclared in the
00B6A0: 56 41 52 0D 0A 20 20 20 20 20 20 64 65 63 6C 61 VAR.. decla
00B6B0: 72 61 74 69 6F 6E 20 20 20 73 65 63 74 69 6F 6E ration section
00B6C0: 2E 20 20 20 54 68 65 20 20 66 69 6C 65 6E 61 6D . The filenam
00B6D0: 65 20 20 69 73 20 20 61 20 20 73 74 72 69 6E 67 e is a string
00B6E0: 20 20 6F 72 20 20 73 74 72 75 63 74 75 72 65 64 or structured
00B6F0: 0D 0A 20 20 20 20 20 20 65 78 70 72 65 73 73 69 .. expressi
00B700: 20 6E 6F 74 20 68 61 72 64 20 74 6F 20 63 72 65 not hard to cre
00B710: 61 74 65 2E 20 20 50 49 43 54 55 52 45 20 67 65 ate. PICTURE ge
00B720: 6E 65 72 61 6C 6C 79 20 70 75 74 73 0D 0A 20 20 nerally puts..
00B730: 20 20 20 20 6F 6E 65 20 20 63 68 61 72 61 63 74 one charact
00B740: 65 72 20 69 6E 20 74 68 65 20 72 65 73 75 6C 74 er in the result
00B750: 20 73 74 72 69 6E 67 20 66 6F 72 20 65 76 65 72 string for ever
00B760: 79 20 63 68 61 72 61 63 74 65 72 20 69 6E 20 74 y character in t
00B770: 68 65 20 66 6F 72 6D 61 74 0D 0A 20 20 20 20 20 he format..
00B780: 20 73 74 72 69 6E 67 2C 20 74 68 65 20 65 78 63 string, the exc
00B790: 65 70 74 69 6F 6E 73 20 6D 61 72 6B 65 64 20 77 eptions marked w
00B7A0: 69 74 68 20 61 20 2A 2E 20 20 54 68 65 20 20 66 ith a *. The f
00B7B0: 6F 72 6D 61 74 20 20 63 68 61 72 61 63 74 65 72 ormat character
00B7C0: 73 20 20 61 72 65 0D 0A 20 20 20 20 20 20 73 75 s are.. su
00B7D0: 6D 6D 61 72 69 7A 65 64 20 62 65 6C 6F 77 2E 0D mmarized below..
00B7E0: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 4E 6F ... No
00B7F0: 74 65 20 20 74 68 61 74 20 20 79 6F 75 20 20 77 te that you w
00B800: 69 6C 6C 20 75 73 75 61 6C 6C 79 20 6E 65 65 64 ill usually need
00B810: 20 6F 6E 6C 79 20 70 6F 75 6E 64 20 73 69 67 6E only pound sign
00B820: 73 2C 20 63 6F 6D 6D 61 73 2C 20 61 6E 64 0D 0A s, commas, and..
00B830: 20 20 20 20 20 20 70 65 72 69 6F 64 73 20 69 6E periods in
00B840: 20 79 6F 75 72 20 66 6F 72 6D 61 74 73 2E 0D 0A your formats...
00B850: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 46 6F 72 .. For
00B860: 6D 61 74 20 20 20 20 20 52 65 70 6C 61 63 65 64 mat Replaced
00B870: 20 77 69 74 68 0D 0A 0D 0A 20 20 20 20 20 20 20 with....
00B880: 20 20 20 20 20 20 20 30 20 20 20 20 20 20 20 4C 0 L
00B890: 69 74 65 72 61 6C 20 7A 65 72 6F 20 28 75 73 65 iteral zero (use
00B8A0: 64 20 6F 6E 6C 79 20 77 69 74 68 20 65 78 70 6F d only with expo
00B8B0: 6E 65 6E 74 69 61 6C 20 6E 6F 74 61 74 69 6F 6E nential notation
00B8C0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
00B8D0: 39 20 20 20 20 20 20 20 41 20 64 65 63 69 6D 61 9 A decima
00B8E0: 6C 20 64 69 67 69 74 20 28 61 6C 77 61 79 73 29 l digit (always)
00B8F0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
00B900: 6F 6E 20 77 68 69 63 68 20 6D 61 79 20 69 6E 63 on which may inc
00B910: 6C 75 64 65 20 64 69 73 6B 20 69 64 65 6E 74 69 lude disk identi
00B920: 66 69 65 72 20 6C 65 74 74 65 72 2E 0D 0A 0D 0A fier letter.....
00B930: 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 66 The f
00B940: 69 6C 65 20 73 70 65 63 69 66 69 65 64 20 62 79 ile specified by
00B950: 20 74 68 65 20 66 69 6C 65 6E 61 6D 65 20 69 73 the filename is
00B960: 20 6F 70 65 6E 65 64 20 66 6F 72 20 75 73 65 20 opened for use
00B970: 69 66 20 70 72 65 73 65 6E 74 2E 0D 0A 20 20 20 if present...
00B980: 20 20 20 49 66 20 6E 6F 74 20 70 72 65 73 65 6E If not presen
00B990: 74 2C 20 61 20 6E 65 77 20 66 69 6C 65 20 69 73 t, a new file is
00B9A0: 20 63 72 65 61 74 65 64 2E 0D 0A 20 20 20 20 20 created...
00B9B0: 20 20 20 20 20 20 42 6F 74 68 20 66 6F 72 6D 61 Both forma
00B9C0: 74 73 20 6D 61 79 20 62 65 20 75 73 65 64 20 77 ts may be used w
00B9D0: 69 74 68 20 62 6F 74 68 20 52 52 4E 20 61 6E 64 ith both RRN and
00B9E0: 20 52 42 41 20 61 63 63 65 73 73 69 6E 67 2E 0D RBA accessing..
00B9F0: 0A 0D 0A 20 20 20 20 20 20 45 78 61 6D 70 6C 65 ... Example
00BA00: 73 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 s:..
00BA10: 20 20 20 20 20 20 20 20 20 20 4F 50 45 4E 20 28 OPEN (
00BA20: 20 49 4E 56 45 4E 54 4F 52 59 2C 20 27 49 4E 56 INVENTORY, 'INV
00BA30: 45 4E 54 52 59 2E 44 41 54 27 2C 20 42 49 4E 41 ENTRY.DAT', BINA
00BA40: 52 59 20 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 RY );....
00BA50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4F O
00BA60: 50 45 4E 20 28 20 46 31 2C 20 52 41 4E 47 45 20 PEN ( F1, RANGE
00BA70: 2B 20 27 2E 44 41 54 27 2C 20 54 45 58 54 20 29 + '.DAT', TEXT )
00BA80: 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ;....
00BA90: 20 20 20 20 20 20 20 20 20 20 20 4F 50 45 4E 20 OPEN
00BAA0: 28 20 43 41 53 45 5F 48 49 53 54 4F 52 59 2C 20 ( CASE_HISTORY,
00BAB0: 27 44 3A 54 4F 52 54 53 2E 4C 49 42 27 2C 20 42 'D:TORTS.LIB', B
00BAC0: 49 4E 41 52 59 20 29 3B 0D 0A 0D 0A 20 20 20 20 INARY );....
00BAD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00BAE0: 20 20 4F 50 45 4E 20 28 20 44 49 43 54 49 4F 4E OPEN ( DICTION
00BAF0: 41 52 59 2C 20 27 42 3A 53 50 45 4C 4C 49 4E 47 ARY, 'B:SPELLING
00BB00: 42 20 20 20 20 20 20 20 53 70 61 63 65 20 28 6F B Space (o
00BB10: 72 20 66 69 6C 6C 20 63 68 61 72 61 63 74 65 72 r fill character
00BB20: 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 )..
00BB30: 20 43 52 20 20 20 20 20 20 43 52 20 69 66 20 74 CR CR if t
00BB40: 68 65 20 6E 75 6D 62 65 72 20 69 73 20 70 6F 73 he number is pos
00BB50: 69 74 69 76 65 2C 20 65 6C 73 65 20 73 70 61 63 itive, else spac
00BB60: 65 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 es..
00BB70: 20 20 44 42 20 20 20 20 20 20 44 42 20 69 66 20 DB DB if
00BB80: 74 68 65 20 6E 75 6D 62 65 72 20 69 73 20 6E 65 the number is ne
00BB90: 67 61 74 69 76 65 2C 20 65 6C 73 65 20 73 70 61 gative, else spa
00BBA0: 63 65 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ces..
00BBB0: 20 20 20 45 20 20 20 20 20 20 20 45 78 70 6F 6E E Expon
00BBC0: 65 6E 74 20 28 63 6F 6E 73 69 73 74 69 6E 67 20 ent (consisting
00BBD0: 6F 66 20 45 2C 20 73 69 67 6E 2C 20 61 6E 64 20 of E, sign, and
00BBE0: 74 77 6F 20 64 69 67 69 74 73 29 20 28 2A 29 0D two digits) (*).
00BBF0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 . E
00BC00: 2B 23 23 20 20 20 20 45 78 70 6F 6E 65 6E 74 20 +## Exponent
00BC10: 28 73 69 67 6E 20 61 6E 64 20 64 69 67 69 74 20 (sign and digit
00BC20: 69 6E 64 69 63 61 74 69 6F 6E 73 20 61 72 65 20 indications are
00BC30: 69 67 6E 6F 72 65 64 29 20 28 2A 29 0D 0A 20 20 ignored) (*)..
00BC40: 20 20 20 20 20 20 20 20 20 20 20 20 4C 20 20 20 L
00BC50: 20 20 20 20 4C 69 74 65 72 61 6C 20 4C 20 28 61 Literal L (a
00BC60: 73 20 61 20 63 75 72 72 65 6E 63 79 20 73 69 67 s a currency sig
00BC70: 6E 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 n)..
00BC80: 20 20 53 20 20 20 20 20 20 20 4D 69 6E 75 73 20 S Minus
00BC90: 6F 72 20 70 6C 75 73 20 73 69 67 6E 0D 0A 20 20 or plus sign..
00BCA0: 20 20 20 20 20 20 20 20 20 20 20 20 56 20 20 20 V
00BCB0: 20 20 20 20 49 6D 70 6C 69 65 64 20 64 65 63 69 Implied deci
00BCC0: 6D 61 6C 20 70 6F 69 6E 74 20 20 28 2A 29 0D 0A mal point (*)..
00BCD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5A 20 Z
00BCE0: 20 20 20 20 20 20 44 69 67 69 74 20 6F 72 20 66 Digit or f
00BCF0: 69 6C 6C 20 63 68 61 72 61 63 74 65 72 0D 0A 20 ill character..
00BD00: 2E 4C 49 42 27 2C 20 42 49 4E 41 52 59 20 29 3B .LIB', BINARY );
00BD10: 0D 0A 0D 0A 20 20 20 20 20 20 37 2E 31 30 20 20 .... 7.10
00BD20: 50 49 43 54 55 52 45 0D 0A 0D 0A 20 20 20 20 20 PICTURE....
00BD30: 20 20 20 20 20 20 54 68 65 20 65 78 74 65 72 6E The extern
00BD40: 61 6C 20 20 66 75 6E 63 74 69 6F 6E 20 20 50 49 al function PI
00BD50: 43 54 55 52 45 20 20 61 6C 6C 6F 77 73 20 20 79 CTURE allows y
00BD60: 6F 75 20 20 74 6F 20 20 66 6F 72 6D 61 74 20 20 ou to format
00BD70: 28 72 65 61 6C 29 0D 0A 20 20 20 20 20 20 6E 75 (real).. nu
00BD80: 6D 62 65 72 73 20 20 69 6E 20 20 70 6F 77 65 72 mbers in power
00BD90: 66 75 6C 20 20 77 61 79 73 2E 20 20 20 43 68 65 ful ways. Che
00BDA0: 63 6B 20 20 70 72 69 6E 74 69 6E 67 20 69 73 20 ck printing is
00BDB0: 65 61 73 79 2C 20 61 73 20 61 72 65 20 63 6F 6D easy, as are com
00BDC0: 6D 61 73 0D 0A 20 20 20 20 20 20 77 69 74 68 69 mas.. withi
00BDD0: 6E 20 61 20 6E 75 6D 62 65 72 20 61 6E 64 20 65 n a number and e
00BDE0: 78 70 6F 6E 65 6E 74 69 61 6C 20 6E 6F 74 61 74 xponential notat
00BDF0: 69 6F 6E 2E 20 20 46 6C 6F 61 74 69 6E 67 20 28 ion. Floating (
00BE00: 6F 72 20 66 69 78 65 64 29 20 64 6F 6C 6C 61 72 or fixed) dollar
00BE10: 0D 0A 20 20 20 20 20 20 73 69 67 6E 61 20 61 72 .. signa ar
00BE20: 65 20 65 61 73 79 20 74 6F 20 73 70 65 63 69 66 e easy to specif
00BE30: 79 2E 20 20 20 43 72 65 64 69 74 20 20 61 6E 64 y. Credit and
00BE40: 20 20 64 65 62 69 74 20 20 69 6E 64 69 63 61 74 debit indicat
00BE50: 69 6F 6E 73 20 20 63 61 6E 20 20 62 65 0D 0A 20 ions can be..
00BE60: 20 20 20 20 20 69 6E 63 6C 75 64 65 64 2E 20 20 included.
00BE70: 20 4C 69 74 65 72 61 6C 20 63 68 61 72 61 63 74 Literal charact
00BE80: 65 72 73 20 73 75 63 68 20 61 73 20 63 75 72 72 ers such as curr
00BE90: 65 6E 63 79 20 73 69 67 6E 73 20 63 61 6E 20 61 ency signs can a
00BEA0: 6C 73 6F 20 62 65 20 70 75 74 0D 0A 20 20 20 20 lso be put..
00BEB0: 20 20 69 6E 20 74 68 65 20 66 6F 72 6D 61 74 74 in the formatt
00BEC0: 65 64 20 20 73 74 72 69 6E 67 2E 20 20 20 43 4F ed string. CO
00BED0: 42 4F 4C 20 20 61 6E 64 20 20 50 4C 2F 49 20 20 BOL and PL/I
00BEE0: 70 72 6F 67 72 61 6D 6D 65 72 73 20 20 77 69 6C programmers wil
00BEF0: 6C 20 20 66 69 6E 64 0D 0A 20 20 20 20 20 20 66 l find.. f
00BF00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00BF10: 0A 00 00 00 02 09 2A E5 0A 00 C1 02 00 00 00 02 ......*.........
00BF20: 0A 00 C6 02 00 00 00 02 0A 00 C2 02 00 00 00 02 ................
00BF30: 0A 00 C7 02 00 00 00 02 0A 00 C3 02 00 00 00 02 ................
00BF40: 0A 00 C8 02 00 00 00 02 0A 00 C4 02 00 00 00 02 ................
00BF50: 0A 00 C9 02 00 00 00 02 0A 00 C5 02 00 00 00 02 ................
00BF60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BF70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BF80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BF90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00BFF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00C000: 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 20 20 -
00C010: 20 20 20 20 20 4D 69 6E 75 73 20 73 69 67 6E 20 Minus sign
00C020: 69 66 20 6E 65 67 61 74 69 76 65 2C 20 65 6C 73 if negative, els
00C030: 65 20 73 70 61 63 65 0D 0A 20 20 20 20 20 20 20 e space..
00C040: 20 20 20 20 20 20 20 2B 20 20 20 20 20 20 20 50 + P
00C050: 6C 75 73 20 73 69 67 6E 20 69 66 20 70 6F 73 69 lus sign if posi
00C060: 74 69 76 65 2C 20 65 6C 73 65 20 6D 69 6E 75 73 tive, else minus
00C070: 20 73 69 67 6E 0D 0A 20 20 20 20 20 20 20 20 20 sign..
00C080: 20 20 20 20 20 23 20 20 20 20 20 20 20 44 69 67 # Dig
00C090: 69 74 20 6F 72 20 66 69 6C 6C 20 63 68 61 72 61 it or fill chara
00C0A0: 63 74 65 72 0D 0A 20 20 20 20 20 20 20 20 20 20 cter..
00C0B0: 20 20 20 20 25 20 20 20 20 20 20 20 44 69 67 69 % Digi
00C0C0: 74 20 6F 72 20 66 69 6C 6C 20 63 68 61 72 61 63 t or fill charac
00C0D0: 74 65 72 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ter..
00C0E0: 20 20 20 2A 20 20 20 20 20 20 20 41 73 74 65 72 * Aster
00C0F0: 69 73 6B 20 66 69 6C 6C 0D 0A 20 20 20 20 20 20 isk fill..
00C100: 20 20 20 20 20 20 20 20 2A 2A 20 20 20 20 20 20 **
00C110: 41 73 74 65 72 69 73 6B 20 66 69 6C 6C 20 61 6E Asterisk fill an
00C120: 64 20 6F 6E 65 20 64 69 67 69 74 0D 0A 20 20 20 d one digit..
00C130: 20 20 20 20 20 20 20 20 20 20 20 2A 24 20 20 20 *$
00C140: 20 20 20 41 73 74 65 72 69 73 6B 20 66 69 6C 6C Asterisk fill
00C150: 20 61 6E 64 20 66 6C 6F 61 74 69 6E 67 20 64 6F and floating do
00C160: 6C 6C 61 72 20 73 69 67 6E 0D 0A 20 20 20 20 20 llar sign..
00C170: 20 20 20 20 20 20 20 20 20 2A 2A 24 20 20 20 20 **$
00C180: 20 41 73 74 65 72 69 73 6B 20 66 69 6C 6C 2C 20 Asterisk fill,
00C190: 66 6C 6F 61 74 69 6E 67 20 64 6F 6C 6C 61 72 20 floating dollar
00C1A0: 73 69 67 6E 2C 20 61 6E 64 20 6F 6E 65 20 64 69 sign, and one di
00C1B0: 67 69 74 0D 0A 20 20 20 20 20 20 20 20 20 20 20 git..
00C1C0: 20 20 20 2C 20 20 20 20 20 20 20 43 6F 6D 6D 61 , Comma
00C1D0: 20 69 66 20 64 69 67 69 74 20 68 61 73 20 61 6C if digit has al
00C1E0: 72 65 61 64 79 20 62 65 65 6E 20 66 6F 72 6D 61 ready been forma
00C1F0: 74 65 64 2C 20 65 6C 73 65 20 73 70 61 63 65 0D ted, else space.
00C200: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
00C210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C |
00C230: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
00C240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C250: 2D 31 37 2E 39 38 20 20 20 20 20 20 20 20 20 20 -17.98
00C260: 20 20 20 2D 31 37 20 20 20 20 20 20 20 20 20 20 -17
00C270: 35 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 5..
00C280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C2A0: 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 |..
00C2B0: 20 20 23 23 23 2E 23 23 20 20 20 20 20 20 20 20 ###.##
00C2C0: 20 20 32 39 2E 39 35 20 20 20 20 20 20 20 20 20 29.95
00C2D0: 20 20 20 20 32 39 2E 39 35 20 20 20 20 20 20 20 29.95
00C2E0: 20 20 36 0D 0A 20 20 20 20 20 20 20 20 20 20 20 6..
00C2F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C310: 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 |..
00C320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C330: 20 20 20 20 2D 31 30 2E 37 35 36 20 20 20 20 20 -10.756
00C340: 20 20 20 20 20 2D 31 30 2E 37 35 20 20 20 20 20 -10.75
00C350: 20 20 20 20 36 0D 0A 0D 0A 20 20 20 20 50 75 6E 6.... Pun
00C360: 63 74 75 61 74 69 6F 6E 0D 0A 0D 0A 20 20 20 20 ctuation....
00C370: 20 20 20 20 20 20 20 43 6F 6D 6D 61 73 20 63 61 Commas ca
00C380: 6E 20 62 65 20 69 6E 73 65 72 74 65 64 20 69 6E n be inserted in
00C390: 20 74 68 65 20 66 6F 72 6D 61 74 65 64 20 6E 75 the formated nu
00C3A0: 6D 62 65 72 2E 20 20 41 20 63 6F 6D 6D 61 20 20 mber. A comma
00C3B0: 69 6E 20 20 74 68 65 0D 0A 20 20 20 20 20 20 66 in the.. f
00C3C0: 6F 72 6D 61 74 20 20 77 69 6C 6C 20 20 63 61 75 ormat will cau
00C3D0: 73 65 20 20 61 20 63 6F 6D 6D 61 20 41 54 20 54 se a comma AT T
00C3E0: 48 45 20 43 4F 52 52 45 53 50 4F 4E 44 49 4E 47 HE CORRESPONDING
00C3F0: 20 50 4F 53 49 54 49 4F 4E 20 69 66 20 61 20 64 POSITION if a d
00C400: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F . /
00C410: 20 20 20 20 20 20 20 4C 69 74 65 72 61 6C 20 2F Literal /
00C420: 20 28 6F 72 20 66 69 6C 6C 20 63 68 61 72 61 63 (or fill charac
00C430: 74 65 72 29 0D 0A 20 20 20 20 20 20 20 20 20 20 ter)..
00C440: 20 20 20 20 3A 20 20 20 20 20 20 20 4C 69 74 65 : Lite
00C450: 72 61 6C 20 3A 20 28 6F 72 20 66 69 6C 6C 20 63 ral : (or fill c
00C460: 68 61 72 61 63 74 65 72 29 0D 0A 20 20 20 20 20 haracter)..
00C470: 20 20 20 20 20 20 20 20 20 73 70 61 63 65 20 20 space
00C480: 20 4C 69 74 65 72 61 6C 20 73 70 61 63 65 20 28 Literal space (
00C490: 6F 72 20 66 69 6C 6C 20 63 68 61 72 61 63 74 65 or fill characte
00C4A0: 72 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 r)..
00C4B0: 20 20 5E 20 20 20 20 20 20 20 45 78 70 6F 6E 65 ^ Expone
00C4C0: 6E 74 20 28 45 2C 20 73 69 67 6E 2C 20 61 6E 64 nt (E, sign, and
00C4D0: 20 74 77 6F 20 64 69 67 69 74 73 29 20 20 28 2A two digits) (*
00C4E0: 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 )..
00C4F0: 20 5E 5E 5E 5E 20 20 20 20 45 78 70 6F 6E 65 6E ^^^^ Exponen
00C500: 74 20 20 28 2A 29 0D 0A 20 20 20 20 20 20 20 20 t (*)..
00C510: 20 20 20 20 20 20 5F 20 20 20 20 20 20 20 4E 65 _ Ne
00C520: 78 74 20 63 68 61 72 61 63 74 65 72 20 69 73 20 xt character is
00C530: 69 6E 63 6C 75 64 65 64 20 6C 69 74 65 72 61 6C included literal
00C540: 6C 79 20 28 2A 29 0D 0A 20 20 20 20 20 20 20 20 ly (*)..
00C550: 20 20 20 20 20 20 5F 2A 20 6F 72 20 2A 20 41 20 _* or * A
00C560: 73 69 6E 67 6C 65 20 61 73 74 65 72 69 73 6B 20 single asterisk
00C570: 28 2A 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 (*)..
00C580: 20 20 20 5F 24 20 6F 72 20 24 20 41 20 73 69 6E _$ or $ A sin
00C590: 67 6C 65 20 64 6F 6C 6C 61 72 20 73 69 67 6E 20 gle dollar sign
00C5A0: 28 2A 29 0D 0A 0D 0A 20 20 20 20 20 20 45 78 61 (*).... Exa
00C5B0: 6D 70 6C 65 73 20 28 6F 75 72 20 66 61 76 6F 72 mples (our favor
00C5C0: 69 74 65 20 66 6F 72 6D 61 74 73 29 0D 0A 0D 0A ite formats)....
00C5D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 23 -#
00C5E0: 2E 23 23 23 20 23 23 23 5E 5E 5E 5E 20 20 20 20 .### ###^^^^
00C5F0: 20 20 20 20 20 20 4C 61 72 67 65 20 61 6E 64 20 Large and
00C600: 69 67 69 74 0D 0A 20 20 20 20 20 20 68 61 73 20 igit.. has
00C610: 61 6C 72 65 61 64 79 20 62 65 65 6E 20 70 75 74 already been put
00C620: 20 69 6E 74 6F 20 74 68 65 20 72 65 73 75 6C 74 into the result
00C630: 20 20 69 6E 20 20 61 20 20 70 6F 73 69 74 69 6F in a positio
00C640: 6E 20 20 74 6F 20 20 74 68 65 20 20 63 6F 6D 6D n to the comm
00C650: 61 0D 0A 20 20 20 20 20 20 70 6F 73 69 74 69 6F a.. positio
00C660: 6E 2E 20 20 20 49 66 20 20 6E 6F 20 20 73 69 67 n. If no sig
00C670: 6E 69 66 69 63 61 6E 74 20 20 64 69 67 69 74 20 nificant digit
00C680: 68 61 73 20 62 65 65 6E 20 73 65 65 6E 2C 20 74 has been seen, t
00C690: 68 65 6E 20 61 20 73 70 61 63 65 20 6F 72 0D 0A hen a space or..
00C6A0: 20 20 20 20 20 20 61 73 74 65 72 69 73 6B 20 69 asterisk i
00C6B0: 73 20 73 75 62 73 74 69 74 75 74 65 64 2E 20 20 s substituted.
00C6C0: 4E 6F 74 65 20 74 68 61 74 20 50 49 43 54 55 52 Note that PICTUR
00C6D0: 45 20 20 44 4F 45 53 20 20 4E 4F 54 20 20 61 75 E DOES NOT au
00C6E0: 74 6F 6D 61 74 69 63 61 6C 6C 79 0D 0A 20 20 20 tomatically..
00C6F0: 20 20 20 70 75 74 20 20 63 6F 6D 6D 61 73 20 20 put commas
00C700: 65 76 65 72 79 20 20 74 68 69 72 64 20 20 70 6F every third po
00C710: 73 69 74 69 6F 6E 2E 20 20 20 59 6F 75 20 20 63 sition. You c
00C720: 61 6E 20 20 70 6C 61 63 65 20 20 63 6F 6D 6D 61 an place comma
00C730: 73 20 69 6E 20 61 6E 79 0D 0A 20 20 20 20 20 20 s in any..
00C740: 6D 65 61 6E 69 6E 67 66 75 6C 20 28 6F 72 20 6D meaningful (or m
00C750: 65 61 6E 69 6E 67 6C 65 73 73 29 20 70 6F 73 69 eaningless) posi
00C760: 74 69 6F 6E 20 69 6E 20 79 6F 75 72 20 6E 75 6D tion in your num
00C770: 62 65 72 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ber.....
00C780: 20 20 20 20 20 20 46 6F 72 6D 61 74 20 20 20 20 Format
00C790: 20 20 20 20 20 20 4E 75 6D 62 65 72 20 20 20 20 Number
00C7A0: 20 20 20 20 20 20 20 52 65 73 75 6C 74 20 20 20 Result
00C7B0: 20 20 20 4C 65 6E 67 74 68 0D 0A 20 20 20 20 20 Length..
00C7C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C7D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C7E0: 20 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 |..
00C7F0: 20 20 20 20 20 20 20 20 20 20 23 23 23 2C 23 23 ###,##
00C800: 73 6D 61 6C 6C 20 6E 75 6D 62 65 72 73 0D 0A 20 small numbers..
00C810: 20 20 20 20 20 20 20 20 20 20 20 20 20 24 23 23 $##
00C820: 2E 23 23 20 20 20 20 20 20 20 20 20 20 20 20 20 .##
00C830: 20 20 20 20 20 50 72 69 63 65 20 6F 66 20 4A 52 Price of JR
00C840: 54 20 50 61 73 63 61 6C 0D 0A 20 20 20 20 20 20 T Pascal..
00C850: 20 20 20 20 20 20 20 20 23 23 23 2C 23 23 23 20 ###,###
00C860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00C870: 4E 75 6D 62 65 72 20 6F 66 20 68 61 70 70 79 20 Number of happy
00C880: 63 75 73 74 6F 6D 65 72 73 0D 0A 20 20 20 20 20 customers..
00C890: 20 20 20 20 20 20 20 20 20 2A 24 23 23 23 2C 23 *$###,#
00C8A0: 23 23 2E 23 23 20 20 20 20 20 20 20 20 20 20 20 ##.##
00C8B0: 20 43 68 65 63 6B 73 20 28 65 73 70 65 63 69 61 Checks (especia
00C8C0: 6C 6C 79 20 70 61 79 20 63 68 65 63 6B 73 29 0D lly pay checks).
00C8D0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D . -
00C8E0: 23 23 2C 23 23 23 2C 23 23 23 2C 23 23 23 2C 23 ##,###,###,###,#
00C8F0: 23 23 2E 23 23 20 20 43 68 61 6E 67 65 20 69 6E ##.## Change in
00C900: 20 74 68 65 20 6E 61 74 69 6F 6E 61 6C 20 64 65 the national de
00C910: 62 74 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 bt....
00C920: 20 49 6E 20 67 65 6E 65 72 61 6C 2C 20 50 49 43 In general, PIC
00C930: 54 55 52 45 20 63 61 6E 20 75 73 65 20 61 6E 79 TURE can use any
00C940: 20 66 6F 72 6D 61 74 20 20 77 69 74 68 20 20 6C format with l
00C950: 65 67 61 6C 20 20 63 68 61 72 61 63 74 65 72 73 egal characters
00C960: 2E 0D 0A 20 20 20 20 20 20 49 74 20 20 69 73 20 ... It is
00C970: 20 70 6F 73 73 69 62 6C 65 20 20 74 6F 20 20 63 possible to c
00C980: 72 65 61 74 65 20 20 72 69 64 69 63 75 6C 6F 75 reate ridiculou
00C990: 73 20 20 66 6F 72 6D 61 74 73 2C 20 20 73 75 63 s formats, suc
00C9A0: 68 20 61 73 20 22 2D 2B 22 2E 20 20 41 6E 0D 0A h as "-+". An..
00C9B0: 20 20 20 20 20 20 61 70 70 72 6F 70 72 69 61 74 appropriat
00C9C0: 65 20 6D 61 74 63 68 69 6E 67 20 73 74 72 69 6E e matching strin
00C9D0: 67 20 77 69 6C 6C 20 62 65 20 72 65 74 75 72 6E g will be return
00C9E0: 65 64 20 28 65 69 74 68 65 72 20 73 70 61 63 65 ed (either space
00C9F0: 2C 20 70 6C 75 73 2C 20 20 6F 72 0D 0A 20 20 20 , plus, or..
00CA00: 23 20 20 20 20 20 20 20 20 20 32 34 37 30 20 20 # 2470
00CA10: 20 20 20 20 20 20 20 20 20 20 20 20 20 32 2C 34 2,4
00CA20: 37 30 20 20 20 20 20 20 20 20 37 0D 0A 20 20 20 70 7..
00CA30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00CA40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00CA50: 20 20 20 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 |..
00CA60: 20 20 20 20 20 20 20 20 20 20 20 20 23 2C 23 23 #,##
00CA70: 23 20 20 20 20 20 20 20 20 20 20 20 2D 39 39 39 # -999
00CA80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 39 -9
00CA90: 39 39 20 20 20 20 20 20 20 20 20 20 35 0D 0A 20 99 5..
00CAA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00CAB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00CAC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D 0A |..
00CAD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 2C #,
00CAE0: 23 23 23 23 23 23 20 20 20 20 20 20 20 20 32 37 ###### 27
00CAF0: 34 33 35 36 32 20 20 20 20 20 20 20 20 20 20 32 43562 2
00CB00: 2C 37 34 33 35 36 32 20 20 20 20 20 20 20 38 0D ,743562 8.
00CB10: 0A 0D 0A 20 20 20 20 20 20 43 4F 55 4E 54 20 59 ... COUNT Y
00CB20: 4F 55 52 20 43 4F 4D 4D 41 53 20 41 4E 44 20 44 OUR COMMAS AND D
00CB30: 49 47 49 54 53 2E 20 20 43 6F 6D 6D 61 73 20 63 IGITS. Commas c
00CB40: 61 6E 20 62 65 20 75 73 65 64 20 61 66 74 65 72 an be used after
00CB50: 20 20 74 68 65 20 20 64 65 63 69 6D 61 6C 0D 0A the decimal..
00CB60: 20 20 20 20 20 20 70 6F 69 6E 74 20 69 66 20 64 point if d
00CB70: 65 73 69 72 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 esired.....
00CB80: 20 20 20 20 20 20 41 20 73 70 61 63 65 20 28 6F A space (o
00CB90: 72 20 42 29 20 77 6F 72 6B 73 20 65 78 61 63 74 r B) works exact
00CBA0: 6C 79 20 74 68 65 20 73 61 6D 65 20 61 73 20 63 ly the same as c
00CBB0: 6F 6D 6D 61 73 20 66 6F 72 20 74 68 6F 73 65 20 ommas for those
00CBC0: 6F 66 20 79 6F 75 0D 0A 20 20 20 20 20 20 77 68 of you.. wh
00CBD0: 6F 20 20 77 61 6E 74 20 20 74 6F 20 20 70 75 6E o want to pun
00CBE0: 63 74 75 61 74 65 20 6E 75 6D 62 65 72 73 20 77 ctuate numbers w
00CBF0: 69 74 68 20 73 70 61 63 65 73 20 69 6E 73 74 65 ith spaces inste
00CC00: 20 20 20 6D 69 6E 75 73 20 20 69 6E 20 20 74 68 minus in th
00CC10: 69 73 20 20 63 61 73 65 29 2E 20 20 20 49 66 20 is case). If
00CC20: 20 74 68 65 20 20 66 6F 72 6D 61 74 20 63 6F 6E the format con
00CC30: 74 61 69 6E 73 20 61 6E 64 20 69 6E 76 61 6C 69 tains and invali
00CC40: 64 20 66 6F 72 6D 61 74 0D 0A 20 20 20 20 20 20 d format..
00CC50: 63 68 61 72 61 63 74 65 72 2C 20 50 49 43 54 55 character, PICTU
00CC60: 52 45 20 77 69 6C 6C 20 63 6F 6D 70 6C 61 69 6E RE will complain
00CC70: 20 61 6E 64 20 20 77 69 6C 6C 20 20 72 65 74 75 and will retu
00CC80: 72 6E 20 20 61 20 20 74 77 6F 20 20 63 68 61 72 rn a two char
00CC90: 61 63 74 65 72 0D 0A 20 20 20 20 20 20 73 74 72 acter.. str
00CCA0: 69 6E 67 20 3F 3F 0D 0A 0D 0A 20 20 20 20 20 20 ing ??....
00CCB0: 20 20 20 20 20 55 70 70 65 72 20 20 63 61 73 65 Upper case
00CCC0: 20 61 6E 64 20 6C 6F 77 65 72 20 63 61 73 65 20 and lower case
00CCD0: 6C 65 74 74 65 72 73 20 61 72 65 20 65 71 75 69 letters are equi
00CCE0: 76 61 6C 65 6E 74 20 69 6E 20 74 68 65 20 66 6F valent in the fo
00CCF0: 72 6D 61 74 2C 0D 0A 20 20 20 20 20 20 73 6F 20 rmat,.. so
00CD00: 45 20 6F 72 20 65 20 63 61 6E 20 62 65 20 75 73 E or e can be us
00CD10: 65 64 20 66 6F 72 20 74 68 65 20 65 78 70 6F 6E ed for the expon
00CD20: 65 6E 74 2E 0D 0A 0D 0A 20 20 20 20 53 69 6D 70 ent..... Simp
00CD30: 6C 65 20 6E 75 6D 62 65 72 20 66 6F 72 6D 61 74 le number format
00CD40: 69 6E 67 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 ing....
00CD50: 20 20 50 6F 75 6E 64 20 73 69 67 6E 73 20 28 23 Pound signs (#
00CD60: 29 20 61 72 65 20 75 73 75 61 6C 6C 79 20 75 73 ) are usually us
00CD70: 65 64 20 74 6F 20 69 6E 64 69 63 61 74 65 20 77 ed to indicate w
00CD80: 68 65 72 65 20 64 69 67 69 74 73 20 73 68 6F 75 here digits shou
00CD90: 6C 64 0D 0A 20 20 20 20 20 20 62 65 20 70 6C 61 ld.. be pla
00CDA0: 63 65 64 2E 20 20 41 20 64 65 63 69 6D 61 6C 20 ced. A decimal
00CDB0: 70 6F 69 6E 74 20 69 6E 64 69 63 61 74 65 73 20 point indicates
00CDC0: 77 68 65 72 65 20 74 68 65 20 64 65 63 69 6D 61 where the decima
00CDD0: 6C 20 70 6F 69 6E 74 20 20 73 68 6F 75 6C 64 0D l point should.
00CDE0: 0A 20 20 20 20 20 20 67 6F 2E 20 20 20 50 49 43 . go. PIC
00CDF0: 54 55 52 45 20 20 64 6F 65 73 20 20 4E 4F 20 20 TURE does NO
00CE00: 61 64 20 6F 66 20 63 6F 6D 6D 61 73 2E 20 20 4E ad of commas. N
00CE10: 6F 74 65 0D 0A 20 20 20 20 20 20 74 68 61 74 20 ote.. that
00CE20: 74 68 69 73 20 69 73 20 64 69 66 66 65 72 65 6E this is differen
00CE30: 74 20 66 72 6F 6D 20 74 68 65 20 20 50 52 49 4E t from the PRIN
00CE40: 54 20 20 55 53 49 4E 47 20 20 73 74 61 74 65 6D T USING statem
00CE50: 65 6E 74 20 20 69 6E 20 20 42 61 73 69 63 73 2C ent in Basics,
00CE60: 0D 0A 20 20 20 20 20 20 77 68 69 63 68 20 74 72 .. which tr
00CE70: 65 61 74 20 62 6C 61 6E 6B 73 20 61 73 20 64 65 eat blanks as de
00CE80: 6C 69 6D 69 74 65 72 73 2E 0D 0A 0D 0A 20 20 20 limiters.....
00CE90: 20 45 78 70 6F 6E 65 6E 74 69 61 6C 20 4E 6F 74 Exponential Not
00CEA0: 61 74 69 6F 6E 0D 0A 0D 0A 20 20 20 20 20 20 20 ation....
00CEB0: 20 20 20 20 45 78 70 6F 6E 65 6E 74 69 61 6C 20 Exponential
00CEC0: 20 6E 6F 74 61 74 69 6F 6E 20 69 73 20 69 6E 64 notation is ind
00CED0: 69 63 61 74 65 64 20 65 69 74 68 65 72 20 77 69 icated either wi
00CEE0: 74 68 20 61 6E 20 75 70 61 72 72 6F 77 20 28 5E th an uparrow (^
00CEF0: 29 20 6F 72 0D 0A 20 20 20 20 20 20 74 68 65 20 ) or.. the
00CF00: 6C 65 74 74 65 72 20 45 2E 20 20 46 6F 6C 6C 6F letter E. Follo
00CF10: 77 69 6E 67 20 75 70 61 72 72 6F 77 73 2C 20 73 wing uparrows, s
00CF20: 69 67 6E 73 2C 20 61 6E 64 20 20 64 69 67 69 74 igns, and digit
00CF30: 20 20 69 6E 64 69 63 61 74 6F 72 73 20 20 61 72 indicators ar
00CF40: 65 0D 0A 20 20 20 20 20 20 69 67 6E 6F 72 65 64 e.. ignored
00CF50: 2C 20 20 73 6F 20 20 79 6F 75 20 63 61 6E 20 75 , so you can u
00CF60: 73 65 20 5E 5E 5E 5E 20 6F 72 20 45 2B 23 23 2E se ^^^^ or E+##.
00CF70: 20 20 54 68 65 20 66 6F 72 6D 61 74 65 64 20 65 The formated e
00CF80: 78 70 6F 6E 65 6E 74 20 41 4C 57 41 59 53 0D 0A xponent ALWAYS..
00CF90: 20 20 20 20 20 20 74 61 6B 65 73 20 66 6F 75 72 takes four
00CFA0: 20 63 68 61 72 61 63 74 65 72 73 3A 20 20 74 68 characters: th
00CFB0: 65 20 6C 65 74 74 65 72 20 45 2C 20 74 68 65 20 e letter E, the
00CFC0: 73 69 67 6E 20 6F 66 20 74 68 65 20 20 65 78 70 sign of the exp
00CFD0: 6F 6E 65 6E 74 2C 20 20 61 6E 64 0D 0A 20 20 20 onent, and..
00CFE0: 20 20 20 74 77 6F 20 64 69 67 69 74 73 2E 0D 0A two digits...
00CFF0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 49 66 20 .. If
00D000: 72 6F 75 6E 64 69 6E 67 2C 20 20 62 75 74 20 20 rounding, but
00D010: 6A 75 73 74 20 74 72 75 6E 63 61 74 65 73 20 69 just truncates i
00D020: 6E 73 69 67 6E 69 66 69 63 61 6E 74 0D 0A 20 20 nsignificant..
00D030: 20 20 20 20 64 69 67 69 74 73 2E 20 20 28 54 68 digits. (Th
00D040: 65 20 76 65 72 74 69 63 61 6C 20 62 61 72 20 6A e vertical bar j
00D050: 75 73 74 20 69 6E 64 69 63 61 74 65 73 20 74 68 ust indicates th
00D060: 65 20 73 74 61 72 74 20 6F 66 20 74 68 65 20 72 e start of the r
00D070: 65 73 75 6C 74 20 20 69 6E 0D 0A 20 20 20 20 20 esult in..
00D080: 20 74 68 65 20 20 66 6F 6C 6C 6F 77 69 6E 67 20 the following
00D090: 20 65 78 61 6D 70 6C 65 73 2C 20 20 61 6E 64 20 examples, and
00D0A0: 20 77 69 6C 6C 20 20 6E 6F 74 20 20 62 65 20 20 will not be
00D0B0: 69 6E 63 6C 75 64 65 64 20 69 6E 20 74 68 65 20 included in the
00D0C0: 61 63 74 75 61 6C 0D 0A 20 20 20 20 20 20 72 65 actual.. re
00D0D0: 73 75 6C 74 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 sult).....
00D0E0: 20 20 20 20 20 20 20 20 46 6F 72 6D 61 74 20 20 Format
00D0F0: 20 20 20 20 20 20 20 20 4E 75 6D 62 65 72 20 20 Number
00D100: 20 20 20 20 20 20 20 20 20 52 65 73 75 6C 74 20 Result
00D110: 20 20 20 20 20 4C 65 6E 67 74 68 0D 0A 20 20 20 Length..
00D120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D140: 20 20 20 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 |..
00D150: 20 20 20 20 20 20 20 20 20 20 20 20 23 23 23 23 ####
00D160: 23 20 20 20 20 20 20 20 20 20 20 20 31 35 30 30 # 1500
00D170: 30 20 20 20 20 20 20 20 20 20 20 20 20 31 35 30 0 150
00D180: 30 30 20 20 20 20 20 20 20 20 20 20 35 0D 0A 20 00 5..
00D190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D1A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D1B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D 0A |..
00D1C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D1D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 32 -2
00D1E0: 2E 36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .6
00D1F0: 20 20 2D 32 20 20 20 20 20 20 20 20 20 20 35 0D -2 5.
00D200: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00D210: 0B 00 00 00 02 09 2A E5 0B 00 C1 02 00 00 00 02 ......*.........
00D220: 0B 00 C6 02 00 00 00 02 0B 00 C2 02 00 00 00 02 ................
00D230: 0B 00 C7 02 00 00 00 02 0B 00 C3 02 00 00 00 02 ................
00D240: 0B 00 C8 02 00 00 00 02 0B 00 C4 02 00 00 00 02 ................
00D250: 0B 00 C9 02 00 00 00 02 0B 00 C5 02 00 00 00 02 ................
00D260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D2F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00D300: 20 79 6F 75 20 20 77 61 6E 74 20 20 50 49 43 54 you want PICT
00D310: 55 52 45 20 74 6F 20 63 72 65 61 74 65 20 6E 75 URE to create nu
00D320: 6D 62 65 72 73 20 69 6E 20 65 78 70 6F 6E 65 6E mbers in exponen
00D330: 74 69 61 6C 20 6E 6F 74 61 74 69 6F 6E 0D 0A 20 tial notation..
00D340: 20 20 20 20 20 77 69 74 68 20 61 20 6C 65 61 64 with a lead
00D350: 69 6E 67 20 30 20 62 65 66 6F 72 65 20 74 68 65 ing 0 before the
00D360: 20 64 65 63 69 6D 61 6C 20 70 6F 69 6E 74 2C 20 decimal point,
00D370: 79 6F 75 20 63 61 6E 20 75 73 65 20 74 68 65 20 you can use the
00D380: 64 69 67 69 74 20 30 20 69 6E 0D 0A 20 20 20 20 digit 0 in..
00D390: 20 20 61 20 66 6F 72 6D 61 74 20 62 65 66 6F 72 a format befor
00D3A0: 65 20 74 68 65 20 64 65 63 69 6D 61 6C 2E 0D 0A e the decimal...
00D3B0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
00D3C0: 46 6F 72 6D 61 74 20 20 20 20 20 20 20 20 20 20 Format
00D3D0: 4E 75 6D 62 65 72 20 20 20 20 20 20 20 20 20 20 Number
00D3E0: 20 52 65 73 75 6C 74 20 20 20 20 20 20 4C 65 6E Result Len
00D3F0: 67 74 68 0D 0A 20 20 20 20 20 20 20 20 20 20 20 gth..
00D400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D420: 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 |..
00D430: 20 20 20 20 23 2E 23 23 23 5E 20 20 20 20 20 20 #.###^
00D440: 20 20 20 20 31 35 30 30 30 20 20 20 20 20 20 20 15000
00D450: 20 20 20 20 20 31 2E 35 30 30 45 2B 30 34 20 20 1.500E+04
00D460: 20 20 20 20 39 0D 0A 20 20 20 20 20 20 20 20 20 9..
00D470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D490: 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 |..
00D4A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D4B0: 20 20 20 20 20 20 2D 32 2E 35 20 20 20 20 20 20 -2.5
00D4C0: 20 20 20 20 20 20 20 2D 2E 32 35 30 45 2B 30 31 -.250E+01
00D4D0: 20 20 20 20 20 20 39 0D 0A 20 20 20 20 20 20 20 9..
00D4E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D4F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D |.
00D520: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
00D530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D -
00D540: 31 35 30 30 30 20 20 20 20 20 20 20 20 20 20 20 15000
00D550: 2D 30 2E 31 35 30 20 30 30 30 45 2B 30 35 20 20 -0.150 000E+05
00D560: 20 20 31 34 0D 0A 20 20 20 20 20 20 20 20 20 20 14..
00D570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D590: 20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 |..
00D5A0: 20 20 20 20 20 2D 23 2E 23 23 23 23 23 23 5E 5E -#.######^^
00D5B0: 5E 5E 20 20 20 31 35 30 30 30 20 20 20 20 20 20 ^^ 15000
00D5C0: 20 20 20 20 20 20 20 31 2E 35 30 30 30 30 30 45 1.500000E
00D5D0: 2B 30 34 20 20 20 20 20 31 33 0D 0A 20 20 20 20 +04 13..
00D5E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D5F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D600: 20 20 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 |..
00D610: 20 20 20 20 20 20 20 20 20 20 20 2D 2E 23 23 23 -.###
00D620: 5E 20 20 20 20 20 20 20 20 20 20 31 35 30 30 31 ^ 15001
00D630: 20 20 20 20 20 20 20 20 20 20 20 20 20 2E 31 35 .15
00D640: 30 45 2B 30 34 20 20 20 20 20 20 20 20 20 20 39 0E+04 9
00D650: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
00D660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D680: 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 |..
00D690: 20 2B 2E 23 23 23 5E 20 20 20 20 20 20 20 20 20 +.###^
00D6A0: 20 31 35 30 30 31 20 20 20 20 20 20 20 20 20 20 15001
00D6B0: 20 20 2B 2E 31 35 30 45 2B 30 34 20 20 20 20 20 +.150E+04
00D6C0: 20 20 20 20 20 39 0D 0A 20 20 20 20 20 20 20 20 9..
00D6D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D6E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D6F0: 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 |..
00D700: 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 20 |..
00D710: 20 20 20 20 20 20 20 20 23 23 23 2E 23 23 23 23 ###.####
00D720: 5E 20 20 20 20 20 20 20 31 35 30 30 30 20 20 20 ^ 15000
00D730: 20 20 20 20 20 20 20 20 20 31 35 30 2E 30 30 30 150.000
00D740: 30 45 2B 30 31 20 20 20 31 32 0D 0A 20 20 20 20 0E+01 12..
00D750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D770: 20 20 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 |..
00D780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D790: 20 20 20 20 20 20 20 20 20 20 20 2D 32 2E 35 20 -2.5
00D7A0: 20 20 20 20 20 20 20 20 20 20 20 20 2D 32 35 2E -25.
00D7B0: 30 30 30 30 45 2D 30 31 20 20 20 31 32 0D 0A 20 0000E-01 12..
00D7C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D7D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D7E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D 0A |..
00D7F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 23 ##
00D800: 23 2E 23 23 23 23 45 2B 23 23 20 20 20 20 2D 32 #.####E+## -2
00D810: 2E 35 20 20 20 20 20 20 20 20 20 20 20 20 20 2D .5 -
00D820: 32 35 2E 30 30 30 30 45 2D 30 31 20 20 20 31 32 25.0000E-01 12
00D830: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
00D840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D860: 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 |..
00D870: 20 30 2E 23 23 23 20 23 23 23 5E 5E 5E 5E 20 20 0.### ###^^^^
00D880: 20 31 35 30 30 30 20 20 20 20 20 20 20 20 20 20 15000
00D890: 20 20 30 2E 31 35 30 20 30 30 30 45 2B 30 35 20 0.150 000E+05
00D8A0: 20 31 33 0D 0A 0D 0A 0D 0A 20 20 20 20 53 69 67 13...... Sig
00D8B0: 6E 73 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 ns....
00D8C0: 20 4E 6F 72 6D 61 6C 6C 79 2C 20 50 49 43 54 55 Normally, PICTU
00D8D0: 52 45 20 20 77 69 6C 6C 20 20 70 75 74 20 20 61 RE will put a
00D8E0: 20 20 6D 69 6E 75 73 20 20 73 69 67 6E 20 20 62 minus sign b
00D8F0: 65 66 6F 72 65 20 20 74 68 65 20 20 66 69 72 73 efore the firs
00D900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D910: 20 20 20 20 20 20 20 2D 32 2E 35 30 36 20 20 20 -2.506
00D920: 20 20 20 20 20 20 20 20 2D 2E 32 35 30 45 2B 30 -.250E+0
00D930: 31 20 20 20 20 20 20 20 20 20 20 39 0D 0A 20 20 1 9..
00D940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D960: 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D 0A 20 |..
00D970: 20 20 20 20 20 20 20 20 20 20 20 20 20 2E 23 23 .##
00D980: 23 2D 5E 20 20 20 20 20 20 20 20 20 20 31 35 30 #-^ 150
00D990: 30 31 20 20 20 20 20 20 20 20 20 20 20 20 2E 31 01 .1
00D9A0: 35 30 20 45 2B 30 34 20 20 20 20 20 20 20 20 20 50 E+04
00D9B0: 20 39 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 9..
00D9C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D9D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00D9E0: 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 |..
00D9F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00DA00: 20 20 20 2D 32 2E 35 30 36 20 20 20 20 20 20 20 -2.506
00DA10: 20 20 20 20 2E 32 35 30 2D 45 2B 30 31 20 20 20 .250-E+01
00DA20: 20 20 20 20 20 20 20 39 0D 0A 0D 0A 20 20 20 20 9....
00DA30: 20 20 20 20 20 20 20 4E 6F 74 65 20 74 68 61 74 Note that
00DA40: 20 79 6F 75 20 63 61 6E 20 70 75 74 20 74 68 65 you can put the
00DA50: 20 73 69 67 6E 20 20 69 6E 20 20 61 20 20 6E 75 sign in a nu
00DA60: 6D 62 65 72 20 20 6F 66 20 20 69 6E 61 70 70 72 mber of inappr
00DA70: 6F 70 72 69 61 74 65 0D 0A 20 20 20 20 20 20 70 opriate.. p
00DA80: 6C 61 63 65 73 20 61 6E 64 20 63 61 6E 20 65 76 laces and can ev
00DA90: 65 6E 20 68 61 76 65 20 74 68 65 20 73 69 67 6E en have the sign
00DAA0: 20 61 70 70 65 61 72 20 6D 6F 72 65 20 74 68 61 appear more tha
00DAB0: 74 20 6F 6E 63 65 2E 0D 0A 0D 0A 20 20 20 20 44 t once..... D
00DAC0: 6F 6C 6C 61 72 20 73 69 67 6E 73 20 61 6E 64 20 ollar signs and
00DAD0: 63 68 65 63 6B 20 70 72 69 6E 74 69 6E 67 0D 0A check printing..
00DAE0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 46 6C 6F .. Flo
00DAF0: 61 74 69 6E 67 20 20 20 64 6F 6C 6C 61 72 20 20 ating dollar
00DB00: 74 0D 0A 20 20 20 20 20 20 73 69 67 6E 69 66 69 t.. signifi
00DB10: 63 61 6E 74 20 20 64 69 67 69 74 20 20 69 6E 20 cant digit in
00DB20: 20 61 20 6E 75 6D 62 65 72 20 69 66 20 74 68 61 a number if tha
00DB30: 74 20 6E 75 6D 62 65 72 20 69 73 20 6E 65 67 61 t number is nega
00DB40: 74 69 76 65 2E 20 20 54 68 69 73 20 69 73 0D 0A tive. This is..
00DB50: 20 20 20 20 20 20 63 61 6C 6C 65 64 20 61 20 66 called a f
00DB60: 6C 6F 61 74 69 6E 67 20 73 69 67 6E 2C 20 61 6E loating sign, an
00DB70: 64 20 77 69 6C 6C 20 74 61 6B 65 20 75 70 20 6F d will take up o
00DB80: 6E 65 20 64 69 67 69 74 20 70 6F 73 69 74 69 6F ne digit positio
00DB90: 6E 2E 20 20 59 6F 75 20 63 61 6E 0D 0A 20 20 20 n. You can..
00DBA0: 20 20 20 68 61 76 65 20 50 49 43 54 55 52 45 20 have PICTURE
00DBB0: 68 61 6E 64 6C 65 20 74 68 65 20 73 69 67 6E 20 handle the sign
00DBC0: 69 6E 20 6D 61 6E 79 20 6F 74 68 65 72 20 77 61 in many other wa
00DBD0: 79 73 2E 20 20 54 6F 20 20 70 75 74 20 20 74 68 ys. To put th
00DBE0: 65 20 20 6D 69 6E 75 73 0D 0A 20 20 20 20 20 20 e minus..
00DBF0: 73 69 67 6E 20 20 28 6F 72 20 20 62 6C 61 6E 6B sign (or blank
00DC00: 29 20 20 69 6E 20 20 61 20 20 66 69 78 65 64 20 ) in a fixed
00DC10: 70 6F 73 69 74 69 6F 6E 2C 20 75 73 65 20 61 20 position, use a
00DC20: 2D 20 69 6E 20 74 68 65 20 66 6F 72 6D 61 74 2E - in the format.
00DC30: 20 20 54 68 65 0D 0A 20 20 20 20 20 20 6D 69 6E The.. min
00DC40: 75 73 20 73 69 67 6E 20 63 61 6E 20 62 65 20 62 us sign can be b
00DC50: 65 66 6F 72 65 20 74 68 65 20 66 69 72 73 74 20 efore the first
00DC60: 73 69 67 6E 69 66 69 63 61 6E 74 20 64 69 67 69 significant digi
00DC70: 74 20 6F 72 20 61 74 20 74 68 65 20 65 6E 64 20 t or at the end
00DC80: 6F 66 0D 0A 20 20 20 20 20 20 74 68 65 20 6E 75 of.. the nu
00DC90: 6D 62 65 72 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 mber.....
00DCA0: 20 20 20 20 54 6F 20 70 75 74 20 61 20 6E 65 67 To put a neg
00DCB0: 61 74 69 76 65 20 6F 72 20 70 6F 73 69 74 69 76 ative or positiv
00DCC0: 65 20 73 69 67 6E 20 69 6E 20 61 20 66 69 78 65 e sign in a fixe
00DCD0: 64 20 20 70 6F 73 69 74 69 6F 6E 2C 20 20 75 73 d position, us
00DCE0: 65 20 20 61 0D 0A 20 20 20 20 20 20 70 6C 75 73 e a.. plus
00DCF0: 20 73 69 67 6E 20 28 2B 29 20 6F 72 20 61 6E 20 sign (+) or an
00DD00: 20 73 69 67 6E 73 20 20 20 61 6E 64 20 20 20 61 signs and a
00DD10: 73 74 65 72 69 73 6B 73 20 20 20 66 69 6C 6C 20 sterisks fill
00DD20: 20 20 77 6F 72 6B 20 20 69 6E 20 20 61 0D 0A 20 work in a..
00DD30: 20 20 20 20 20 73 74 72 61 69 67 68 74 66 6F 72 straightfor
00DD40: 77 61 72 64 20 6D 61 6E 6E 65 72 2C 20 61 6E 64 ward manner, and
00DD50: 20 77 69 6C 6C 20 70 72 6F 64 75 63 65 20 20 74 will produce t
00DD60: 68 65 20 20 73 6F 72 74 20 20 6F 66 20 20 72 65 he sort of re
00DD70: 73 75 6C 74 73 20 20 79 6F 75 0D 0A 20 20 20 20 sults you..
00DD80: 20 20 77 6F 75 6C 64 20 20 77 61 6E 74 20 66 6F would want fo
00DD90: 72 20 70 72 69 6E 74 69 6E 67 20 64 6F 6C 6C 61 r printing dolla
00DDA0: 72 20 73 69 67 6E 20 61 6D 6F 75 6E 74 73 20 6F r sign amounts o
00DDB0: 72 20 63 68 65 63 6B 73 2E 20 20 54 6F 20 65 6E r checks. To en
00DDC0: 74 65 72 20 61 20 24 0D 0A 20 20 20 20 20 20 6F ter a $.. o
00DDD0: 72 20 2A 20 61 74 20 61 20 66 69 78 65 64 20 70 r * at a fixed p
00DDE0: 6F 73 69 74 69 6F 6E 2C 20 75 73 65 20 6F 6E 65 osition, use one
00DDF0: 20 6F 66 20 74 68 65 20 22 6C 69 74 65 72 61 6C of the "literal
00DE00: 20 20 6E 65 78 74 22 20 20 63 68 61 72 61 63 74 next" charact
00DE10: 65 72 73 2C 0D 0A 20 20 20 20 20 20 74 68 65 20 ers,.. the
00DE20: 75 6E 64 65 72 6C 69 6E 65 20 28 5F 29 20 6F 72 underline (_) or
00DE30: 20 62 61 63 6B 73 6C 61 73 68 20 28 29 20 62 65 backslash () be
00DE40: 66 6F 72 65 20 74 68 65 20 24 20 6F 72 20 2A 2E fore the $ or *.
00DE50: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
00DE60: 20 20 46 6F 72 6D 61 74 20 20 20 20 20 20 20 20 Format
00DE70: 20 20 4E 75 6D 62 65 72 20 20 20 20 20 20 20 20 Number
00DE80: 20 20 20 52 65 73 75 6C 74 20 20 20 20 20 20 20 Result
00DE90: 4C 65 6E 67 74 68 0D 0A 20 20 20 20 20 20 20 20 Length..
00DEA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00DEB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00DEC0: 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 |..
00DED0: 20 20 20 20 20 20 20 5F 24 23 23 2C 23 23 23 2E _$##,###.
00DEE0: 23 23 20 20 20 20 20 32 37 34 35 2E 32 33 20 20 ## 2745.23
00DEF0: 20 20 20 20 20 20 20 20 24 20 32 2C 37 34 35 2E $ 2,745.
00DF00: 53 20 69 6E 73 74 65 61 64 20 6F 66 20 74 68 65 S instead of the
00DF10: 20 6D 69 6E 75 73 20 73 69 67 6E 2E 0D 0A 0D 0A minus sign.....
00DF20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6F Fo
00DF30: 72 6D 61 74 20 20 20 20 20 20 20 20 20 20 4E 75 rmat Nu
00DF40: 6D 62 65 72 20 20 20 20 20 20 20 20 20 20 20 52 mber R
00DF50: 65 73 75 6C 74 20 20 20 20 20 20 4C 65 6E 67 74 esult Lengt
00DF60: 68 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 h..
00DF70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00DF80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00DF90: 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 |..
00DFA0: 20 20 2D 23 23 23 23 20 20 20 20 20 20 20 20 20 -####
00DFB0: 20 20 2D 31 32 20 20 20 20 20 20 20 20 20 20 20 -12
00DFC0: 20 20 20 2D 20 20 31 32 20 20 20 20 20 20 20 20 - 12
00DFD0: 20 20 35 0D 0A 20 20 20 20 20 20 20 20 20 20 20 5..
00DFE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00DFF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E000: 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 |..
00E010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E020: 20 20 20 20 31 33 34 20 20 20 20 20 20 20 20 20 134
00E030: 20 20 20 20 20 20 20 31 33 34 20 20 20 20 20 20 134
00E040: 20 20 20 20 35 0D 0A 20 20 20 20 20 20 20 20 20 5..
00E050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E070: 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 |..
00E080: 20 20 20 20 20 20 23 23 23 23 2B 20 20 20 20 20 ####+
00E090: 20 20 20 20 20 20 2D 31 32 20 20 20 20 20 20 20 -12
00E0A0: 20 20 20 20 20 20 20 20 20 31 32 2D 20 20 20 20 12-
00E0B0: 20 20 20 20 20 20 35 0D 0A 20 20 20 20 20 20 20 5..
00E0C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E0D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E0E0: 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 20 |..
00E0F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E100: 32 33 20 20 20 20 20 31 30 0D 0A 20 20 20 20 20 23 10..
00E110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E130: 20 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 |..
00E140: 20 20 20 20 20 20 20 20 20 20 24 23 23 2C 23 23 $##,##
00E150: 23 2E 23 23 20 20 20 20 20 20 32 36 34 35 2E 32 #.## 2645.2
00E160: 33 20 20 20 20 20 20 20 20 20 20 20 24 32 2C 37 3 $2,7
00E170: 34 35 2E 32 33 20 20 20 20 20 31 30 0D 0A 0D 0A 45.23 10....
00E180: 20 20 20 20 20 20 20 20 20 20 20 4E 6F 74 65 20 Note
00E190: 20 74 68 61 74 20 20 74 68 65 20 20 2A 2A 2C 20 that the **,
00E1A0: 20 24 24 2C 20 20 61 6E 64 20 20 2A 2A 24 20 20 $$, and **$
00E1B0: 66 6F 72 6D 61 74 73 20 61 72 65 20 6F 70 74 69 formats are opti
00E1C0: 6F 6E 61 6C 20 69 6E 20 4A 52 54 0D 0A 20 20 20 onal in JRT..
00E1D0: 20 20 20 50 61 73 63 61 6C 27 73 20 50 49 43 54 Pascal's PICT
00E1E0: 55 52 45 20 66 75 6E 63 74 69 6F 6E 2E 20 20 54 URE function. T
00E1F0: 68 65 79 20 61 72 65 20 65 71 75 69 76 61 6C 65 hey are equivale
00E200: 6E 74 20 74 6F 20 2A 23 2C 20 24 23 2C 20 20 61 nt to *#, $#, a
00E210: 6E 64 20 20 2A 24 23 2C 0D 0A 20 20 20 20 20 20 nd *$#,..
00E220: 72 65 73 70 65 63 74 69 76 65 6C 79 0D 0A 20 20 respectively..
00E230: 20 20 20 20 20 20 20 20 20 54 68 65 20 20 6F 6E The on
00E240: 6C 79 20 20 65 78 63 65 70 74 69 6F 6E 73 20 20 ly exceptions
00E250: 74 6F 20 20 74 68 65 20 22 6F 6E 65 20 66 6F 72 to the "one for
00E260: 6D 61 74 20 63 68 61 72 61 63 74 65 72 2C 20 6F mat character, o
00E270: 6E 65 20 72 65 73 75 6C 74 0D 0A 20 20 20 20 20 ne result..
00E280: 20 63 68 61 72 61 63 74 65 72 22 20 72 75 6C 65 character" rule
00E290: 20 61 72 65 0D 0A 0D 0A 20 20 20 20 20 20 20 20 are....
00E2A0: 20 20 20 20 20 20 31 29 20 74 68 65 20 74 77 6F 1) the two
00E2B0: 20 22 6C 69 74 65 72 61 6C 20 6E 65 78 74 22 20 "literal next"
00E2C0: 63 68 61 72 61 63 74 65 72 73 20 28 5F 20 61 6E characters (_ an
00E2D0: 64 20 20 29 0D 0A 20 20 20 20 20 20 20 20 20 20 d )..
00E2E0: 20 20 20 20 20 20 20 77 68 69 63 68 20 64 6F 20 which do
00E2F0: 6E 6F 74 20 61 70 70 65 61 72 20 69 6E 20 74 68 not appear in th
00E300: 20 20 20 20 20 20 20 20 31 33 34 20 20 20 20 20 134
00E310: 20 20 20 20 20 20 20 20 20 20 31 33 34 2B 20 20 134+
00E320: 20 20 20 20 20 20 20 20 35 0D 0A 0D 0A 20 20 20 5....
00E330: 20 20 20 20 20 20 20 20 57 69 74 68 20 20 65 78 With ex
00E340: 70 6F 6E 65 6E 74 69 61 6C 20 20 6E 6F 74 61 74 ponential notat
00E350: 69 6F 6E 2C 20 20 79 6F 75 20 77 69 6C 6C 20 67 ion, you will g
00E360: 65 6E 65 72 61 6C 6C 79 20 77 61 6E 74 20 74 6F enerally want to
00E370: 20 73 70 65 63 69 66 79 0D 0A 20 20 20 20 20 20 specify..
00E380: 74 68 65 20 6C 6F 63 61 74 69 6F 6E 20 6F 66 20 the location of
00E390: 74 68 65 20 73 69 67 6E 2C 20 73 69 6E 63 65 20 the sign, since
00E3A0: 61 20 66 6C 6F 61 74 69 6E 67 20 73 69 67 6E 20 a floating sign
00E3B0: 77 69 6C 6C 20 63 61 75 73 65 20 20 6F 6E 65 20 will cause one
00E3C0: 20 6C 65 73 73 0D 0A 20 20 20 20 20 20 64 69 67 less.. dig
00E3D0: 69 74 20 20 62 65 66 6F 72 65 20 20 74 68 65 20 it before the
00E3E0: 20 64 65 63 69 6D 61 6C 20 20 74 6F 20 62 65 20 decimal to be
00E3F0: 70 72 69 6E 74 65 64 20 57 49 54 48 20 4E 45 47 printed WITH NEG
00E400: 41 54 49 56 45 20 4E 55 4D 42 45 52 53 20 74 68 ATIVE NUMBERS th
00E410: 61 6E 0D 0A 20 20 20 20 20 20 77 69 74 68 20 50 an.. with P
00E420: 4F 53 49 54 49 56 45 20 4E 55 4D 42 45 52 53 2E OSITIVE NUMBERS.
00E430: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
00E440: 20 20 46 6F 72 6D 61 74 20 20 20 20 20 20 20 20 Format
00E450: 20 20 4E 75 6D 62 65 72 20 20 20 20 20 20 20 20 Number
00E460: 20 20 20 52 65 73 75 6C 74 20 20 20 20 20 20 20 Result
00E470: 20 20 4C 65 6E 67 74 68 0D 0A 20 20 20 20 20 20 Length..
00E480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E4A0: 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 |..
00E4B0: 20 20 20 20 20 20 20 20 20 2D 30 2E 23 23 23 20 -0.###
00E4C0: 23 23 23 5E 5E 5E 5E 20 20 31 35 30 30 30 20 20 ###^^^^ 15000
00E4D0: 20 20 20 20 20 20 20 20 20 20 20 30 2E 31 35 30 0.150
00E4E0: 20 30 30 30 45 2B 30 35 20 20 20 20 31 34 0D 0A 000E+05 14..
00E4F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E500: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00E510: 0C 00 00 00 02 09 2A E5 0C 00 C1 02 00 00 00 02 ......*.........
00E520: 0C 00 C6 02 00 00 00 02 0C 00 C2 02 00 00 00 02 ................
00E530: 0C 00 C7 02 00 00 00 02 0C 00 C3 02 00 00 00 02 ................
00E540: 0C 00 C8 02 00 00 00 02 0C 00 C4 02 00 00 00 02 ................
00E550: 0C 00 C9 02 00 00 00 02 0C 00 C5 02 00 00 00 02 ................
00E560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E5F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00E600: 65 20 72 65 73 75 6C 74 0D 0A 20 20 20 20 20 20 e result..
00E610: 20 20 20 20 20 20 20 20 32 29 20 74 68 65 20 56 2) the V
00E620: 2C 20 77 68 69 63 68 20 69 73 20 6E 6F 74 20 70 , which is not p
00E630: 72 69 6E 74 65 64 0D 0A 20 20 20 20 20 20 20 20 rinted..
00E640: 20 20 20 20 20 20 33 29 20 74 68 65 20 74 77 6F 3) the two
00E650: 20 65 78 70 6F 6E 65 6E 74 20 63 68 61 72 61 63 exponent charac
00E660: 74 65 72 73 20 28 5E 20 61 6E 64 20 45 29 20 77 ters (^ and E) w
00E670: 68 69 63 68 0D 0A 20 20 20 20 20 20 20 20 20 20 hich..
00E680: 20 20 20 20 20 20 20 61 6C 77 61 79 73 20 74 61 always ta
00E690: 6B 65 20 66 6F 75 72 20 63 68 61 72 61 63 74 65 ke four characte
00E6A0: 72 73 20 28 61 6E 64 20 77 68 69 63 68 20 63 61 rs (and which ca
00E6B0: 75 73 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 use..
00E6C0: 20 20 20 20 20 20 66 6F 6C 6C 6F 77 69 6E 67 20 following
00E6D0: 5E 2C 20 2B 2C 20 2D 2C 20 23 2C 20 61 6E 64 20 ^, +, -, #, and
00E6E0: 39 20 73 70 65 63 69 66 69 63 61 74 69 6F 6E 73 9 specifications
00E6F0: 20 74 6F 0D 0A 20 20 20 20 20 20 20 20 20 20 20 to..
00E700: 20 20 20 20 20 20 62 65 20 69 67 6E 6F 72 65 64 be ignored
00E710: 20 69 6E 20 74 68 65 20 66 6F 72 6D 61 74 29 2E in the format).
00E720: 0D 0A 20 20 20 20 4F 76 65 72 66 6C 6F 77 0D 0A .. Overflow..
00E730: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 4F 76 65 .. Ove
00E740: 72 66 6C 6F 77 20 6F 63 63 75 72 73 20 77 68 65 rflow occurs whe
00E750: 6E 20 74 68 65 20 6E 75 6D 62 65 72 20 74 6F 20 n the number to
00E760: 62 65 20 66 6F 72 6D 61 74 65 64 20 63 61 6E 6E be formated cann
00E770: 6F 74 20 66 69 74 20 69 6E 20 74 68 65 0D 0A 20 ot fit in the..
00E780: 20 20 20 20 20 66 6F 72 6D 61 74 20 70 72 6F 76 format prov
00E790: 69 64 65 64 2C 20 61 73 20 77 68 65 6E 20 31 30 ided, as when 10
00E7A0: 30 30 20 69 73 20 74 6F 20 62 65 20 20 66 6F 72 00 is to be for
00E7B0: 6D 61 74 65 64 20 20 69 6E 20 20 61 20 20 74 68 mated in a th
00E7C0: 72 65 65 20 20 64 69 67 69 74 0D 0A 20 20 20 20 ree digit..
00E7D0: 20 20 66 69 65 6C 64 20 20 28 23 23 23 29 2E 20 field (###).
00E7E0: 20 20 57 68 65 6E 20 20 74 68 61 74 20 20 68 61 When that ha
00E7F0: 70 70 65 6E 73 2C 20 50 49 43 54 55 52 45 20 70 ppens, PICTURE p
00E800: 20 46 4F 52 20 49 20 3A 3D 20 31 20 54 4F 20 4E FOR I := 1 TO N
00E810: 52 5F 52 45 41 4C 53 20 44 4F 0D 0A 20 20 20 20 R_REALS DO..
00E820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E840: 42 45 47 49 4E 0D 0A 20 20 20 20 20 20 20 20 20 BEGIN..
00E850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E860: 20 20 20 20 20 20 20 20 20 20 20 57 52 49 54 45 WRITE
00E870: 4C 4E 28 49 3A 33 2C 20 27 20 27 2C 0D 0A 20 20 LN(I:3, ' ',..
00E880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E8A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E8B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D |.
00E8C0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
00E8D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E8E0: 20 20 20 20 20 20 20 20 20 20 20 52 45 41 4C 24 REAL$
00E8F0: 28 52 45 41 4C 5F 41 52 52 5B 49 5D 2C 20 27 20 (REAL_ARR[I], '
00E900: 20 20 27 2C 0D 0A 20 20 20 20 20 20 20 20 20 20 ',..
00E910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E930: 50 49 43 54 55 52 45 28 50 49 43 2C 20 52 45 41 PICTURE(PIC, REA
00E940: 4C 5F 41 52 52 5B 49 5D 29 2C 0D 0A 20 20 20 20 L_ARR[I]),..
00E950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E970: 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 20 |..
00E980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E9A0: 20 20 20 20 27 20 27 29 3B 0D 0A 20 20 20 20 20 ' ');..
00E9B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00E9C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 E
00E9D0: 4E 44 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ND;..
00E9E0: 20 20 20 20 20 20 20 20 20 20 20 20 55 4E 54 49 UNTI
00E9F0: 4C 20 28 50 49 43 20 3D 20 27 2A 27 29 3B 0D 0A L (PIC = '*');..
00EA00: 75 74 73 20 61 20 25 20 69 6E 20 70 6C 61 63 65 uts a % in place
00EA10: 20 6F 66 20 41 4C 4C 0D 0A 20 20 20 20 20 20 64 of ALL.. d
00EA20: 69 67 69 74 73 2E 20 20 49 6E 20 65 78 70 6F 6E igits. In expon
00EA30: 65 6E 74 69 61 6C 20 6E 6F 74 61 74 69 6F 6E 2C ential notation,
00EA40: 20 74 68 65 20 6F 6E 6C 79 20 63 61 75 73 65 20 the only cause
00EA50: 6F 66 20 6F 76 65 72 66 6C 6F 77 20 69 73 20 20 of overflow is
00EA60: 77 69 74 68 0D 0A 20 20 20 20 20 20 6E 65 67 61 with.. nega
00EA70: 74 69 76 65 20 20 6E 75 6D 62 65 72 73 20 77 68 tive numbers wh
00EA80: 65 6E 20 6E 6F 20 73 69 67 6E 20 69 73 20 69 6E en no sign is in
00EA90: 64 69 63 61 74 65 64 20 61 6E 64 20 6E 6F 20 64 dicated and no d
00EAA0: 69 67 69 74 73 20 61 72 65 20 61 6C 6C 6F 77 65 igits are allowe
00EAB0: 64 0D 0A 20 20 20 20 20 20 62 65 66 6F 72 65 20 d.. before
00EAC0: 74 68 65 20 64 65 63 69 6D 61 6C 20 70 6F 69 6E the decimal poin
00EAD0: 74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 t.....
00EAE0: 20 20 20 20 46 6F 72 6D 61 74 20 20 20 20 20 20 Format
00EAF0: 20 20 20 20 4E 75 6D 62 65 72 20 20 20 20 20 20 Number
00EB00: 20 20 20 20 20 52 65 73 75 6C 74 20 20 20 20 20 Result
00EB10: 20 20 4C 65 6E 67 74 68 0D 0A 20 20 20 20 20 20 Length..
00EB20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00EB30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00EB40: 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 |..
00EB50: 20 20 20 20 20 20 20 20 20 2D 23 23 20 20 20 20 -##
00EB60: 20 20 20 20 20 20 20 20 20 32 30 30 30 30 35 20 200005
00EB70: 20 20 20 20 20 20 20 20 20 20 20 25 25 20 20 20 %%
00EB80: 20 20 20 20 20 20 20 20 20 33 0D 0A 20 20 20 20 3..
00EB90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00EBA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00EBB0: 20 20 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 |..
00EBC0: 20 20 20 20 20 20 20 20 20 20 20 23 23 23 23 23 #####
00EBD0: 23 20 20 20 20 20 20 20 20 20 20 2D 34 30 30 30 # -4000
00EBE0: 30 31 30 32 20 20 20 20 20 20 20 20 2D 25 25 25 0102 -%%%
00EBF0: 25 25 20 20 20 20 20 20 20 20 20 36 0D 0A 20 20 %% 6..
00EC00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 4E EN
00EC10: 44 2E 0D 0A 0D 0A 20 20 20 20 20 20 4E 6F 74 65 D..... Note
00EC20: 20 74 68 61 74 20 63 75 72 72 65 6E 74 6C 79 2C that currently,
00EC30: 20 4A 52 54 20 50 61 73 63 61 6C 20 72 65 71 75 JRT Pascal requ
00EC40: 69 72 65 73 20 74 68 61 74 20 72 65 61 6C 20 6E ires that real n
00EC50: 75 6D 62 65 72 73 20 65 6E 74 65 72 65 64 20 69 umbers entered i
00EC60: 6E 0D 0A 20 20 20 20 20 20 65 78 70 6F 6E 65 6E n.. exponen
00EC70: 74 69 61 6C 20 20 66 6F 72 6D 20 20 6D 75 73 74 tial form must
00EC80: 20 68 61 76 65 20 61 20 65 78 70 6F 6E 65 6E 74 have a exponent
00EC90: 20 73 69 67 6E 20 61 6E 64 20 74 77 6F 20 65 78 sign and two ex
00ECA0: 70 6F 6E 65 6E 74 20 64 65 63 69 6D 61 6C 0D 0A ponent decimal..
00ECB0: 20 20 20 20 20 20 64 69 67 69 74 73 2E 20 20 54 digits. T
00ECC0: 68 69 73 20 72 65 73 74 72 69 63 74 69 6F 6E 20 his restriction
00ECD0: 77 69 6C 6C 20 62 65 20 72 65 6C 61 78 65 64 20 will be relaxed
00ECE0: 69 6E 20 74 68 65 20 66 75 74 75 72 65 2E 0D 0A in the future...
00ECF0: 0D 0A 20 20 20 20 46 6F 72 6D 61 74 73 20 66 6F .. Formats fo
00ED00: 72 20 65 78 2D 43 4F 42 4F 4C 20 61 6E 64 20 50 r ex-COBOL and P
00ED10: 4C 2F 49 20 70 72 6F 67 72 61 6D 6D 65 72 73 0D L/I programmers.
00ED20: 0A 0D 0A 20 20 20 20 20 20 54 68 65 20 66 6F 72 ... The for
00ED30: 6D 61 74 20 63 68 61 72 61 63 74 65 72 20 56 20 mat character V
00ED40: 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 73 can be used to s
00ED50: 65 74 20 61 6E 20 20 69 6D 70 6C 69 65 64 20 20 et an implied
00ED60: 64 65 63 69 6D 61 6C 20 20 70 6F 69 6E 74 0D 0A decimal point..
00ED70: 20 20 20 20 20 20 77 69 74 68 6F 75 74 20 20 70 without p
00ED80: 72 69 6E 74 69 6E 67 20 20 6F 6E 65 2E 20 20 20 rinting one.
00ED90: 28 56 2E 20 20 61 6E 64 20 20 2E 56 20 20 63 61 (V. and .V ca
00EDA0: 6E 20 61 6C 73 6F 20 62 65 20 75 73 65 64 2E 20 n also be used.
00EDB0: 20 54 68 65 20 2E 20 77 69 6C 6C 0D 0A 20 20 20 The . will..
00EDC0: 20 20 20 61 6C 77 61 79 73 20 62 65 20 69 6E 63 always be inc
00EDD0: 6C 75 64 65 64 20 69 6E 20 74 68 65 20 72 65 73 luded in the res
00EDE0: 75 6C 74 2E 20 20 5A 20 63 61 6E 20 62 65 20 75 ult. Z can be u
00EDF0: 73 65 64 20 69 6E 20 70 6C 61 63 65 20 6F 66 20 sed in place of
00EE00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00EE10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00EE20: 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D 0A 20 |..
00EE30: 20 20 20 20 20 20 20 20 20 20 20 20 20 2A 24 23 *$#
00EE40: 2C 23 23 23 20 20 20 20 20 20 20 20 20 34 30 30 ,### 400
00EE50: 31 30 32 20 20 20 20 20 20 20 20 20 20 20 2A 24 102 *$
00EE60: 25 2C 25 25 25 20 20 20 20 20 20 20 20 37 0D 0A %,%%% 7..
00EE70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00EE80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00EE90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D |.
00EEA0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2E . .
00EEB0: 23 23 23 5E 20 20 20 20 20 20 20 20 20 20 20 2D ###^ -
00EEC0: 32 30 37 20 20 20 20 20 20 20 20 20 20 20 20 20 207
00EED0: 2E 25 25 25 45 2B 30 33 20 20 20 20 20 20 20 38 .%%%E+03 8
00EEE0: 0D 0A 0D 0A 20 20 20 20 54 65 73 74 69 6E 67 20 .... Testing
00EEF0: 66 6F 72 6D 61 74 73 20 66 6F 72 20 50 49 43 54 formats for PICT
00EF00: 55 52 45 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 URE....
00EF10: 20 20 48 65 72 65 20 69 73 20 20 61 20 20 72 6F Here is a ro
00EF20: 75 74 69 6E 65 20 20 79 6F 75 20 20 63 61 6E 20 utine you can
00EF30: 20 75 73 65 20 20 74 6F 20 20 74 65 73 74 20 20 use to test
00EF40: 79 6F 75 72 20 20 6F 77 6E 20 20 50 49 43 54 55 your own PICTU
00EF50: 52 45 0D 0A 20 20 20 20 20 20 73 70 65 63 69 66 RE.. specif
00EF60: 69 63 61 74 69 6F 6E 73 2E 20 20 20 28 57 65 20 ications. (We
00EF70: 20 75 73 65 20 20 61 6E 20 20 65 78 74 65 6E 73 use an extens
00EF80: 69 6F 6E 20 6F 66 20 74 68 69 73 20 70 72 6F 67 ion of this prog
00EF90: 72 61 6D 20 74 68 61 74 20 61 6C 6C 6F 77 73 0D ram that allows.
00EFA0: 0A 20 20 20 20 20 20 66 69 6C 65 20 69 6E 70 75 . file inpu
00EFB0: 74 20 61 6E 64 20 6F 75 74 70 75 74 20 74 6F 20 t and output to
00EFC0: 74 65 73 74 20 6F 75 72 73 2E 29 20 54 68 65 20 test ours.) The
00EFD0: 70 72 6F 67 72 61 6D 20 72 65 61 64 73 20 74 68 program reads th
00EFE0: 65 20 6E 75 6D 62 65 72 20 20 6F 66 0D 0A 20 20 e number of..
00EFF0: 20 20 20 20 72 65 61 6C 20 20 64 69 67 69 74 73 real digits
00F000: 23 2C 20 61 6E 64 20 39 0D 0A 20 20 20 20 20 20 #, and 9..
00F010: 63 61 6E 20 62 65 20 75 73 65 64 20 74 6F 20 66 can be used to f
00F020: 6F 72 63 65 20 70 72 69 6E 74 69 6E 67 20 6F 66 orce printing of
00F030: 20 61 20 64 69 67 69 74 2E 0D 0A 0D 0A 20 20 20 a digit.....
00F040: 20 20 20 54 68 65 20 22 6C 69 74 65 72 61 6C 22 The "literal"
00F050: 20 2F 20 61 6E 64 20 3A 20 63 61 6E 20 62 65 20 / and : can be
00F060: 75 73 65 64 2E 20 20 54 68 65 79 20 77 69 6C 6C used. They will
00F070: 20 62 65 20 72 65 70 6C 61 63 65 64 20 62 79 20 be replaced by
00F080: 74 68 65 20 66 69 6C 6C 0D 0A 20 20 20 20 20 20 the fill..
00F090: 63 68 61 72 61 63 74 65 72 20 28 73 70 61 63 65 character (space
00F0A0: 20 6F 72 20 2A 29 20 69 66 20 61 70 70 72 6F 70 or *) if approp
00F0B0: 72 69 61 74 65 2E 20 20 4D 75 6C 74 69 70 6C 65 riate. Multiple
00F0C0: 20 2B 20 61 6E 64 20 2D 20 73 69 67 6E 73 20 63 + and - signs c
00F0D0: 61 6E 20 62 65 0D 0A 20 20 20 20 20 20 75 73 65 an be.. use
00F0E0: 64 20 69 6E 20 70 6C 61 63 65 20 6F 66 20 23 20 d in place of #
00F0F0: 74 6F 20 63 61 75 73 65 20 66 6C 6F 61 74 69 6E to cause floatin
00F100: 67 20 73 69 67 6E 73 2E 0D 0A 0D 0A 20 20 20 20 g signs.....
00F110: 20 20 53 75 62 74 6C 65 20 64 69 66 66 65 72 65 Subtle differe
00F120: 6E 63 65 73 20 62 65 74 77 65 65 6E 20 4A 52 54 nces between JRT
00F130: 20 50 61 73 63 61 6C 27 73 20 50 49 43 54 55 52 Pascal's PICTUR
00F140: 45 20 61 6E 64 20 20 6F 74 68 65 72 20 20 6C 61 E and other la
00F150: 6E 67 75 61 67 65 73 0D 0A 20 20 20 20 20 20 77 nguages.. w
00F160: 69 6C 6C 20 62 65 20 66 6F 75 6E 64 2E 20 20 55 ill be found. U
00F170: 73 65 20 74 68 65 20 54 45 53 54 50 49 43 54 20 se the TESTPICT
00F180: 72 6F 75 74 69 6E 65 20 74 6F 20 65 78 70 65 72 routine to exper
00F190: 69 6D 65 6E 74 20 61 73 20 6E 65 65 64 65 64 2E iment as needed.
00F1A0: 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 37 2E 31 31 ...... 7.11
00F1B0: 20 20 50 55 54 0D 0A 0D 0A 20 20 20 20 20 20 46 PUT.... F
00F1C0: 6F 72 6D 61 74 0D 0A 20 20 20 20 20 20 50 55 54 ormat.. PUT
00F1D0: 20 28 20 66 69 6C 65 5F 76 61 72 69 61 62 6C 65 ( file_variable
00F1E0: 20 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 );....
00F1F0: 20 20 54 68 69 73 20 20 73 74 61 6E 64 61 72 64 This standard
00F200: 20 20 74 6F 20 62 65 20 66 6F 72 6D 61 74 65 64 to be formated
00F210: 20 61 6E 64 20 74 68 65 20 6E 75 6D 62 65 72 73 and the numbers
00F220: 20 74 6F 20 62 65 20 66 6F 72 6D 61 74 65 64 2E to be formated.
00F230: 20 20 49 74 20 74 68 65 6E 0D 0A 20 20 20 20 20 It then..
00F240: 20 72 65 61 64 73 20 6F 6E 65 20 66 6F 72 6D 61 reads one forma
00F250: 74 20 73 70 65 63 69 66 69 63 61 74 69 6F 6E 20 t specification
00F260: 61 74 20 20 61 20 20 74 69 6D 65 20 20 61 6E 20 at a time an
00F270: 20 70 72 69 6E 74 73 20 20 65 61 63 68 20 20 6F prints each o
00F280: 66 20 20 74 68 65 0D 0A 20 20 20 20 20 20 6E 75 f the.. nu
00F290: 6D 62 65 72 73 20 69 6E 20 74 68 61 74 20 66 6F mbers in that fo
00F2A0: 72 6D 61 74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 rmat.....
00F2B0: 20 20 20 20 20 20 20 50 52 4F 47 52 41 4D 20 54 PROGRAM T
00F2C0: 45 53 54 50 49 43 54 0D 0A 0D 0A 20 20 20 20 20 ESTPICT....
00F2D0: 20 20 20 20 20 20 20 20 20 43 4F 4E 53 54 0D 0A CONST..
00F2E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00F2F0: 20 20 20 20 20 20 4D 41 58 5F 52 45 41 4C 20 3D MAX_REAL =
00F300: 20 31 30 30 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 100;....
00F310: 20 20 20 20 20 20 20 56 41 52 0D 0A 20 20 20 20 VAR..
00F320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00F330: 20 20 49 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A I : INTEGER;..
00F340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00F350: 20 20 20 20 20 20 4E 52 5F 52 45 41 4C 53 20 3A NR_REALS :
00F360: 20 49 4E 54 45 47 45 52 3B 0D 0A 20 20 20 20 20 INTEGER;..
00F370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00F380: 20 50 49 43 20 3A 20 53 54 52 49 4E 47 3B 0D 0A PIC : STRING;..
00F390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00F3A0: 20 20 20 20 20 20 52 45 41 4C 5F 41 52 52 20 3A REAL_ARR :
00F3B0: 20 41 52 52 41 59 5B 31 2E 2E 4D 41 58 5F 52 45 ARRAY[1..MAX_RE
00F3C0: 41 4C 5D 20 4F 46 20 52 45 41 4C 3B 0D 0A 0D 0A AL] OF REAL;....
00F3D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 55 FU
00F3E0: 4E 43 54 49 4F 4E 20 50 49 43 54 55 52 45 20 28 NCTION PICTURE (
00F3F0: 20 46 4D 54 20 3A 20 53 54 52 49 4E 47 3B 20 52 FMT : STRING; R
00F400: 20 50 61 73 63 61 6C 20 70 72 6F 63 65 64 75 72 Pascal procedur
00F410: 65 20 61 70 70 65 6E 64 73 20 74 68 65 20 63 75 e appends the cu
00F420: 72 72 65 6E 74 20 76 61 6C 75 65 20 6F 66 20 74 rrent value of t
00F430: 68 65 0D 0A 20 20 20 20 20 20 62 75 66 66 65 72 he.. buffer
00F440: 20 76 61 72 69 61 62 6C 65 20 74 6F 20 74 68 65 variable to the
00F450: 20 73 65 71 75 65 6E 74 69 61 6C 20 66 69 6C 65 sequential file
00F460: 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
00F470: 54 68 65 20 57 52 49 54 45 20 70 72 6F 63 65 64 The WRITE proced
00F480: 75 72 65 20 61 6C 6C 6F 77 73 20 77 72 69 74 69 ure allows writi
00F490: 6E 67 20 64 69 72 65 63 74 6C 79 20 74 6F 20 61 ng directly to a
00F4A0: 20 66 69 6C 65 20 20 66 72 6F 6D 20 20 61 6E 79 file from any
00F4B0: 0D 0A 20 20 20 20 20 20 76 61 72 69 61 62 6C 65 .. variable
00F4C0: 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
00F4D0: 20 20 20 57 52 49 54 45 20 28 20 46 3B 20 58 20 WRITE ( F; X
00F4E0: 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 );....
00F4F0: 20 69 73 20 65 71 75 69 76 61 6C 65 6E 74 20 74 is equivalent t
00F500: 6F 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 o:....
00F510: 20 20 20 20 46 5E 20 3A 3D 20 58 3B 0D 0A 20 20 F^ := X;..
00F520: 20 20 20 20 20 20 20 20 20 20 20 20 50 55 54 20 PUT
00F530: 28 20 46 20 29 3B 0D 0A 0D 0A 0D 0A 20 20 20 20 ( F );......
00F540: 20 20 37 2E 31 32 20 20 20 20 52 45 41 44 2C 20 7.12 READ,
00F550: 52 45 41 44 4C 4E 0D 0A 0D 0A 20 20 20 20 20 20 READLN....
00F560: 46 6F 72 6D 61 74 20 31 20 20 28 63 6F 6E 73 6F Format 1 (conso
00F570: 6C 65 29 0D 0A 20 20 20 20 20 20 52 45 41 44 2F le).. READ/
00F580: 4C 4E 20 28 76 61 72 69 61 62 6C 65 31 2C 20 76 LN (variable1, v
00F590: 61 72 69 61 62 6C 65 32 2C 2E 2E 2E 20 29 3B 0D ariable2,... );.
00F5A0: 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 74 20 ... Format
00F5B0: 32 20 20 28 73 65 71 75 65 6E 74 69 61 6C 20 64 2 (sequential d
00F5C0: 69 73 6B 29 0D 0A 20 20 20 20 20 20 52 45 41 44 isk).. READ
00F5D0: 2F 4C 4E 20 28 20 66 69 6C 65 5F 76 61 72 69 61 /LN ( file_varia
00F5E0: 62 6C 65 20 3B 20 76 61 72 69 61 62 6C 65 31 2C ble ; variable1,
00F5F0: 20 76 61 72 69 61 62 6C 65 32 2C 2E 2E 2E 20 29 variable2,... )
00F600: 20 3A 20 52 45 41 4C 29 20 3A 20 53 54 52 49 4E : REAL) : STRIN
00F610: 47 3B 20 45 58 54 45 52 4E 3B 0D 0A 0D 0A 20 20 G; EXTERN;....
00F620: 20 20 20 20 20 20 20 20 20 20 20 20 42 45 47 49 BEGI
00F630: 4E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 N..
00F640: 20 52 45 50 45 41 54 0D 0A 20 20 20 20 20 20 20 REPEAT..
00F650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 W
00F660: 52 49 54 45 28 27 4E 75 6D 62 65 72 20 6F 66 20 RITE('Number of
00F670: 72 65 61 6C 20 6E 75 6D 62 65 72 73 20 74 6F 20 real numbers to
00F680: 66 6F 72 6D 61 74 3A 20 27 29 3B 0D 0A 20 20 20 format: ');..
00F690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00F6A0: 20 20 20 52 45 41 44 4C 4E 28 4E 52 5F 52 45 41 READLN(NR_REA
00F6B0: 4C 53 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 LS);..
00F6C0: 20 20 20 20 20 20 20 20 20 20 20 20 55 4E 54 49 UNTI
00F6D0: 4C 20 28 4E 52 5F 52 45 41 4C 53 20 3C 20 4D 41 L (NR_REALS < MA
00F6E0: 58 5F 52 45 41 4C 29 3B 0D 0A 20 20 20 20 20 20 X_REAL);..
00F6F0: 20 20 20 20 20 20 20 20 46 4F 52 20 49 20 3A 3D FOR I :=
00F700: 20 31 20 54 4F 20 4E 52 5F 52 45 41 4C 53 20 44 1 TO NR_REALS D
00F710: 4F 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 O..
00F720: 20 20 20 20 20 20 20 20 20 52 45 41 44 28 52 45 READ(RE
00F730: 41 4C 5F 41 52 52 5B 49 5D 29 3B 0D 0A 20 20 20 AL_ARR[I]);..
00F740: 20 20 20 20 20 20 20 20 20 20 20 52 45 41 44 4C READL
00F750: 4E 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 N;....
00F760: 20 20 20 20 52 45 50 45 41 54 0D 0A 20 20 20 20 REPEAT..
00F770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00F780: 20 20 57 52 49 54 45 28 27 46 6F 72 6D 61 74 3A WRITE('Format:
00F790: 20 27 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 ');..
00F7A0: 20 20 20 20 20 20 20 20 20 20 20 20 52 45 41 44 READ
00F7B0: 4C 4E 28 50 49 43 29 3B 0D 0A 20 20 20 20 20 20 LN(PIC);..
00F7C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00F7D0: 49 46 28 50 49 43 20 3C 3E 20 27 2A 27 29 20 54 IF(PIC <> '*') T
00F7E0: 48 45 4E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 HEN..
00F7F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00F800: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
00F810: 0D 00 00 00 02 09 2A E5 0D 00 C1 02 00 00 00 02 ......*.........
00F820: 0D 00 C6 02 00 00 00 02 0D 00 C2 02 00 00 00 02 ................
00F830: 0D 00 C7 02 00 00 00 02 0D 00 C3 02 00 00 00 02 ................
00F840: 0D 00 C8 02 00 00 00 02 0D 00 C4 02 00 00 00 02 ................
00F850: 0D 00 C9 02 00 00 00 02 0D 00 C5 02 00 00 00 02 ................
00F860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F890: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F8F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F900: 3B 0D 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 ;.... Forma
00F910: 74 20 33 20 20 28 72 61 6E 64 6F 6D 20 64 69 73 t 3 (random dis
00F920: 6B 29 0D 0A 20 20 20 20 20 20 52 45 41 44 2F 4C k).. READ/L
00F930: 4E 20 28 20 66 69 6C 65 5F 76 61 72 69 61 62 6C N ( file_variabl
00F940: 65 2C 20 52 52 4E 2C 20 69 6E 74 65 67 65 72 5F e, RRN, integer_
00F950: 6F 72 5F 72 65 61 6C 5F 65 78 70 72 20 3B 0D 0A or_real_expr ;..
00F960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00F970: 20 20 20 20 20 20 76 61 72 69 61 62 6C 65 31 2C variable1,
00F980: 20 76 61 72 69 61 62 6C 65 32 2C 2E 2E 2E 20 29 variable2,... )
00F990: 3B 0D 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 ;.... Forma
00F9A0: 74 20 34 20 20 28 72 61 6E 64 6F 6D 20 64 69 73 t 4 (random dis
00F9B0: 6B 29 0D 0A 20 20 20 20 20 20 52 45 41 44 2F 4C k).. READ/L
00F9C0: 4E 20 28 20 66 69 6C 65 5F 76 61 72 69 61 62 6C N ( file_variabl
00F9D0: 65 2C 20 52 42 41 2C 20 69 6E 74 65 67 65 72 5F e, RBA, integer_
00F9E0: 6F 72 5F 72 65 61 6C 5F 65 78 70 72 20 3B 0D 0A or_real_expr ;..
00F9F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00FA00: 20 20 20 20 20 20 76 61 72 69 61 62 6C 65 31 2C variable1,
00FA10: 20 76 61 72 69 61 62 6C 65 32 2C 2E 2E 2E 20 29 variable2,... )
00FA20: 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ;....
00FA30: 54 68 65 20 20 52 45 41 44 20 20 73 74 61 6E 64 The READ stand
00FA40: 61 72 64 20 70 72 6F 63 65 64 75 72 65 20 69 73 ard procedure is
00FA50: 20 75 73 65 64 20 74 6F 20 62 72 69 6E 67 20 64 used to bring d
00FA60: 61 74 61 20 66 72 6F 6D 20 63 6F 6E 73 6F 6C 65 ata from console
00FA70: 0D 0A 20 20 20 20 20 20 6F 72 20 64 69 73 6B 20 .. or disk
00FA80: 69 6E 74 6F 20 6D 61 69 6E 20 73 74 6F 72 61 67 into main storag
00FA90: 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 e.....
00FAA0: 20 46 6F 72 6D 61 74 20 31 20 69 73 20 75 73 65 Format 1 is use
00FAB0: 64 20 66 6F 72 20 72 65 61 64 69 6E 67 20 64 61 d for reading da
00FAC0: 74 61 20 20 66 72 6F 6D 20 20 74 68 65 20 20 63 ta from the c
00FAD0: 6F 6E 73 6F 6C 65 20 20 6B 65 79 62 6F 61 72 64 onsole keyboard
00FAE0: 2E 0D 0A 20 20 20 20 20 20 57 68 65 6E 20 20 69 ... When i
00FAF0: 74 20 20 69 73 20 20 65 78 65 63 75 74 65 64 20 t is executed
00FB00: 66 69 72 73 74 0D 0A 20 20 20 20 20 20 72 65 63 first.. rec
00FB10: 6F 72 64 20 20 6E 75 6D 62 65 72 20 20 69 73 20 ord number is
00FB20: 20 61 74 20 20 52 52 4E 3D 30 2E 20 20 20 54 68 at RRN=0. Th
00FB30: 65 20 66 69 6C 65 20 6D 75 73 74 20 68 61 76 65 e file must have
00FB40: 20 62 65 65 6E 20 73 75 63 63 65 73 73 66 75 6C been successful
00FB50: 6C 79 0D 0A 20 20 20 20 20 20 6F 70 65 6E 65 64 ly.. opened
00FB60: 20 77 69 74 68 20 74 68 65 20 4F 50 45 4E 20 70 with the OPEN p
00FB70: 72 6F 63 65 64 75 72 65 2E 20 20 53 65 71 75 65 rocedure. Seque
00FB80: 6E 74 69 61 6C 20 61 6E 64 20 72 61 6E 64 6F 6D ntial and random
00FB90: 20 66 69 6C 65 20 20 61 63 63 65 73 73 65 73 0D file accesses.
00FBA0: 0A 20 20 20 20 20 20 63 61 6E 6E 6F 74 20 62 65 . cannot be
00FBB0: 20 6D 69 78 65 64 20 75 6E 6C 65 73 73 20 74 68 mixed unless th
00FBC0: 65 20 66 69 6C 65 20 69 73 20 66 69 72 73 74 20 e file is first
00FBD0: 63 6C 6F 73 65 64 20 61 6E 64 20 74 68 65 6E 20 closed and then
00FBE0: 72 65 2D 6F 70 65 6E 65 64 20 69 6E 0D 0A 20 20 re-opened in..
00FBF0: 20 20 20 20 74 68 65 20 20 6F 74 68 65 72 20 20 the other
00FC00: 6D 6F 64 65 2E 20 20 54 68 65 20 73 69 7A 65 20 mode. The size
00FC10: 6F 66 20 72 65 63 6F 72 64 73 20 6F 6E 20 74 68 of records on th
00FC20: 65 20 66 69 6C 65 20 66 6F 72 20 52 52 4E 20 70 e file for RRN p
00FC30: 72 6F 63 65 73 73 69 6E 67 0D 0A 20 20 20 20 20 rocessing..
00FC40: 20 69 73 20 64 65 74 65 72 6D 69 6E 65 64 20 77 is determined w
00FC50: 68 65 6E 20 74 68 65 20 66 69 6C 65 20 69 73 20 hen the file is
00FC60: 64 65 63 6C 61 72 65 64 2E 20 20 46 6F 72 20 65 declared. For e
00FC70: 78 61 6D 70 6C 65 2C 20 61 20 46 49 4C 45 20 4F xample, a FILE O
00FC80: 46 20 52 45 41 4C 0D 0A 20 20 20 20 20 20 68 61 F REAL.. ha
00FC90: 73 20 61 20 72 65 63 6F 72 64 20 73 69 7A 65 20 s a record size
00FCA0: 6F 66 20 38 20 62 79 74 65 73 2E 0D 0A 0D 0A 20 of 8 bytes.....
00FCB0: 20 20 20 20 20 20 20 20 20 20 46 6F 72 6D 61 74 Format
00FCC0: 20 34 20 69 73 20 75 73 65 64 20 74 6F 20 72 65 4 is used to re
00FCD0: 61 64 20 64 61 74 61 20 66 72 6F 6D 20 61 20 72 ad data from a r
00FCE0: 61 6E 64 6F 6D 20 66 69 6C 65 20 62 79 20 20 67 andom file by g
00FCF0: 69 76 69 6E 67 20 20 74 68 65 0D 0A 20 20 20 20 iving the..
00FD00: 20 69 74 20 20 77 69 6C 6C 20 6F 62 74 61 69 6E it will obtain
00FD10: 20 64 61 74 61 20 66 72 6F 6D 20 74 68 65 20 63 data from the c
00FD20: 6F 6E 73 6F 6C 65 20 62 75 66 66 65 72 2C 0D 0A onsole buffer,..
00FD30: 20 20 20 20 20 20 63 6F 6E 76 65 72 74 20 69 74 convert it
00FD40: 20 74 6F 20 74 68 65 20 70 72 6F 70 65 72 20 66 to the proper f
00FD50: 6F 72 6D 61 74 2C 20 61 6E 64 20 73 74 6F 72 65 ormat, and store
00FD60: 20 74 68 65 20 64 61 74 61 20 69 6E 20 74 68 65 the data in the
00FD70: 20 20 73 70 65 63 69 66 69 65 64 0D 0A 20 20 20 specified..
00FD80: 20 20 20 76 61 72 69 61 62 6C 65 73 2E 20 20 49 variables. I
00FD90: 66 20 73 75 66 66 69 63 69 65 6E 74 20 64 61 74 f sufficient dat
00FDA0: 61 20 69 73 20 6E 6F 74 20 61 76 61 69 6C 61 62 a is not availab
00FDB0: 6C 65 2C 20 74 68 65 20 73 79 73 74 65 6D 20 77 le, the system w
00FDC0: 69 6C 6C 20 77 61 69 74 0D 0A 20 20 20 20 20 20 ill wait..
00FDD0: 66 6F 72 20 20 6D 6F 72 65 20 20 64 61 74 61 20 for more data
00FDE0: 74 6F 20 62 65 20 6B 65 79 65 64 20 69 6E 2E 20 to be keyed in.
00FDF0: 49 66 20 64 61 74 61 20 69 73 20 6B 65 79 65 64 If data is keyed
00FE00: 20 69 6E 20 77 69 74 68 20 75 6E 61 63 63 65 70 in with unaccep
00FE10: 74 61 62 6C 65 0D 0A 20 20 20 20 20 20 66 6F 72 table.. for
00FE20: 6D 61 74 2C 20 61 20 77 61 72 6E 69 6E 67 20 6D mat, a warning m
00FE30: 65 73 73 61 67 65 20 69 73 20 69 73 73 75 65 64 essage is issued
00FE40: 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
00FE50: 44 79 6E 61 6D 69 63 20 73 74 72 69 6E 67 20 76 Dynamic string v
00FE60: 61 72 69 61 62 6C 65 73 20 6D 61 79 20 6F 6E 6C ariables may onl
00FE70: 79 20 62 65 20 75 73 65 64 20 69 6E 20 52 45 41 y be used in REA
00FE80: 44 20 66 6F 72 6D 61 74 20 31 20 2D 20 20 69 6E D format 1 - in
00FE90: 0D 0A 20 20 20 20 20 20 63 6F 6E 73 6F 6C 65 20 .. console
00FEA0: 20 69 6E 70 75 74 20 20 2D 20 61 6E 64 20 6E 6F input - and no
00FEB0: 74 20 69 6E 20 64 69 73 6B 20 66 69 6C 65 20 69 t in disk file i
00FEC0: 6E 70 75 74 2E 20 20 54 6F 20 72 65 61 64 20 63 nput. To read c
00FED0: 68 61 72 61 63 74 65 72 20 64 61 74 61 0D 0A 20 haracter data..
00FEE0: 20 20 20 20 20 66 72 6F 6D 20 64 69 73 6B 20 66 from disk f
00FEF0: 69 6C 65 73 2C 20 61 72 72 61 79 73 20 6F 66 20 iles, arrays of
00FF00: 20 20 72 65 6C 61 74 69 76 65 20 20 62 79 74 65 relative byte
00FF10: 20 20 61 64 64 72 65 73 73 20 20 28 52 42 41 29 address (RBA)
00FF20: 20 20 6F 66 20 74 68 65 20 64 61 74 61 20 69 74 of the data it
00FF30: 65 6D 20 72 65 71 75 69 72 65 64 2E 20 20 54 68 em required. Th
00FF40: 65 20 66 69 72 73 74 0D 0A 20 20 20 20 20 20 62 e first.. b
00FF50: 79 74 65 20 6F 66 20 74 68 65 20 66 69 6C 65 20 yte of the file
00FF60: 69 73 20 61 74 20 52 42 41 3D 30 2E 20 20 54 68 is at RBA=0. Th
00FF70: 65 20 66 69 6C 65 20 6D 75 73 74 20 68 61 76 65 e file must have
00FF80: 20 20 62 65 65 6E 20 20 73 75 63 63 65 73 73 66 been successf
00FF90: 75 6C 6C 79 0D 0A 20 20 20 20 20 20 6F 70 65 6E ully.. open
00FFA0: 65 64 20 20 77 69 74 68 20 20 74 68 65 20 20 4F ed with the O
00FFB0: 50 45 4E 20 70 72 6F 63 65 64 75 72 65 2E 20 20 PEN procedure.
00FFC0: 52 61 6E 64 6F 6D 20 70 72 6F 63 65 73 73 69 6E Random processin
00FFD0: 67 20 63 61 6E 6E 6F 74 20 62 65 20 6D 69 78 65 g cannot be mixe
00FFE0: 64 0D 0A 20 20 20 20 20 20 77 69 74 68 20 73 65 d.. with se
00FFF0: 71 75 65 6E 74 69 61 6C 20 70 72 6F 63 65 73 73 quential process
010000: 69 6E 67 20 62 75 74 20 52 52 4E 20 61 6E 64 20 ing but RRN and
010010: 52 42 41 20 70 72 6F 63 65 73 73 69 6E 67 20 20 RBA processing
010020: 63 61 6E 20 20 62 65 20 20 6D 69 78 65 64 0D 0A can be mixed..
010030: 20 20 20 20 20 20 77 69 74 68 6F 75 74 20 72 65 without re
010040: 2D 6F 70 65 6E 69 6E 67 20 74 68 65 20 66 69 6C -opening the fil
010050: 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 45 78 61 6D e..... Exam
010060: 70 6C 65 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 ples:....
010070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 R
010080: 45 41 44 4C 4E 28 20 41 2C 20 42 20 29 3B 0D 0A EADLN( A, B );..
010090: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
0100A0: 20 20 20 20 20 20 20 20 52 45 41 44 28 20 44 41 READ( DA
0100B0: 54 41 5F 46 49 4C 45 3B 20 58 5F 44 41 54 41 2C TA_FILE; X_DATA,
0100C0: 20 59 5F 44 41 54 41 20 29 3B 0D 0A 0D 0A 20 20 Y_DATA );....
0100D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0100E0: 20 20 20 20 52 45 41 44 28 20 48 49 53 54 4F 52 READ( HISTOR
0100F0: 59 5F 46 49 4C 45 2C 20 52 52 4E 2C 20 59 45 41 Y_FILE, RRN, YEA
010100: 63 68 61 72 61 63 74 65 72 73 20 6F 72 20 72 65 characters or re
010110: 63 6F 72 64 73 20 6D 61 79 20 62 65 20 75 73 65 cords may be use
010120: 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 d.....
010130: 20 52 65 61 64 69 6E 67 20 66 72 6F 6D 20 74 68 Reading from th
010140: 65 20 63 6F 6E 73 6F 6C 65 20 20 69 6E 74 6F 20 e console into
010150: 20 61 20 20 64 79 6E 61 6D 69 63 20 20 73 74 72 a dynamic str
010160: 69 6E 67 20 20 76 61 72 69 61 62 6C 65 20 20 69 ing variable i
010170: 73 0D 0A 20 20 20 20 20 20 74 72 65 61 74 65 64 s.. treated
010180: 20 20 64 69 66 66 65 72 65 6E 74 6C 79 2E 20 20 differently.
010190: 20 41 6E 20 20 65 6E 74 69 72 65 20 20 6C 69 6E An entire lin
0101A0: 65 20 6F 66 20 74 65 78 74 20 69 73 20 6F 62 74 e of text is obt
0101B0: 61 69 6E 65 64 20 66 72 6F 6D 20 74 68 65 0D 0A ained from the..
0101C0: 20 20 20 20 20 20 63 6F 6E 73 6F 6C 65 20 61 6E console an
0101D0: 64 20 6D 6F 76 65 64 20 20 64 69 72 65 63 74 6C d moved directl
0101E0: 79 20 20 69 6E 74 6F 20 20 74 68 65 20 20 73 74 y into the st
0101F0: 72 69 6E 67 20 20 76 61 72 69 61 62 6C 65 2E 20 ring variable.
010200: 20 20 53 65 70 61 72 61 74 6F 72 0D 0A 20 20 20 Separator..
010210: 20 20 20 63 68 61 72 61 63 74 65 72 73 20 20 61 characters a
010220: 6E 64 20 73 69 6E 67 6C 65 20 71 75 6F 74 65 73 nd single quotes
010230: 20 61 72 65 20 69 67 6E 6F 72 65 64 2E 20 20 54 are ignored. T
010240: 68 65 20 73 79 73 74 65 6D 20 77 69 6C 6C 20 6E he system will n
010250: 6F 74 20 61 6C 6C 6F 77 0D 0A 20 20 20 20 20 20 ot allow..
010260: 6D 6F 72 65 20 63 68 61 72 61 63 74 65 72 73 20 more characters
010270: 74 6F 20 62 65 20 6B 65 79 65 64 20 69 6E 20 74 to be keyed in t
010280: 68 61 6E 20 63 61 6E 20 66 69 74 20 69 6E 74 6F han can fit into
010290: 20 74 68 65 20 20 76 61 72 69 61 62 6C 65 2E 20 the variable.
0102A0: 20 20 54 68 65 0D 0A 20 20 20 20 20 20 73 74 72 The.. str
0102B0: 69 6E 67 20 20 76 61 72 69 61 62 6C 65 20 20 6D ing variable m
0102C0: 75 73 74 20 20 62 65 20 20 74 68 65 20 6F 6E 6C ust be the onl
0102D0: 79 20 76 61 72 69 61 62 6C 65 20 69 6E 20 74 68 y variable in th
0102E0: 65 20 52 45 41 44 27 73 20 70 61 72 61 6D 65 74 e READ's paramet
0102F0: 65 72 0D 0A 20 20 20 20 20 20 6C 69 73 74 2E 0D er.. list..
010300: 52 3B 20 4D 41 4A 4F 52 5F 45 56 45 4E 54 20 29 R; MAJOR_EVENT )
010310: 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ;....
010320: 20 20 20 20 20 20 20 20 20 20 20 52 45 41 44 28 READ(
010330: 20 49 4E 51 55 49 52 59 5F 46 49 4C 45 2C 20 52 INQUIRY_FILE, R
010340: 42 41 2C 20 30 3B 20 49 4E 44 45 58 20 29 3B 0D BA, 0; INDEX );.
010350: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
010360: 20 20 20 20 20 20 20 20 20 52 45 41 44 4C 4E 3B READLN;
010370: 20 20 20 20 20 20 20 20 20 28 2A 20 52 45 53 45 (* RESE
010380: 54 20 45 4F 4C 4E 20 2A 29 0D 0A 0D 0A 0D 0A 20 T EOLN *)......
010390: 20 20 20 20 20 37 2E 31 33 20 20 20 20 52 45 4E 7.13 REN
0103A0: 41 4D 45 0D 0A 0D 0A 20 20 20 20 20 20 46 6F 72 AME.... For
0103B0: 6D 61 74 0D 0A 20 20 20 20 20 20 52 45 4E 41 4D mat.. RENAM
0103C0: 45 20 28 20 6F 6C 64 5F 6E 61 6D 65 2C 20 6E 65 E ( old_name, ne
0103D0: 77 5F 6E 61 6D 65 20 29 3B 0D 0A 0D 0A 0D 0A 20 w_name );......
0103E0: 20 20 20 20 20 20 20 20 20 20 54 68 65 20 20 52 The R
0103F0: 45 4E 41 4D 45 20 20 70 72 6F 63 65 64 75 72 65 ENAME procedure
010400: 20 69 73 20 75 73 65 64 20 74 6F 20 72 65 6E 61 is used to rena
010410: 6D 65 20 64 69 73 6B 20 66 69 6C 65 73 20 6F 6E me disk files on
010420: 20 61 6E 79 20 64 69 73 6B 2E 0D 0A 20 20 20 20 any disk...
010430: 20 20 54 68 65 20 6F 6C 64 5F 6E 61 6D 65 20 61 The old_name a
010440: 6E 64 20 6E 65 77 5F 6E 61 6D 65 20 61 72 65 20 nd new_name are
010450: 73 74 72 69 6E 67 20 65 78 70 72 65 73 73 69 6F string expressio
010460: 6E 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 ns.....
010470: 20 20 52 45 4E 41 4D 45 20 69 73 20 69 6D 70 6C RENAME is impl
010480: 65 6D 65 6E 74 65 64 20 61 73 20 61 6E 20 20 65 emented as an e
010490: 78 74 65 72 6E 61 6C 20 20 70 72 6F 63 65 64 75 xternal procedu
0104A0: 72 65 2E 20 20 20 41 6E 79 20 20 70 72 6F 67 72 re. Any progr
0104B0: 61 6D 0D 0A 20 20 20 20 20 20 72 65 66 65 72 65 am.. refere
0104C0: 6E 63 69 6E 67 20 69 74 20 6D 75 73 74 20 69 6E ncing it must in
0104D0: 63 6C 75 64 65 20 69 74 20 64 65 63 6C 61 72 61 clude it declara
0104E0: 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 tions:....
0104F0: 20 20 20 20 20 20 20 20 20 20 20 20 50 52 4F 43 PROC
010500: 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
010510: 57 68 65 6E 20 61 6C 6C 20 64 61 74 61 20 6F 6E When all data on
010520: 20 61 20 67 69 76 65 6E 20 69 6E 70 75 74 20 6C a given input l
010530: 69 6E 65 20 68 61 73 20 62 65 65 6E 20 72 65 61 ine has been rea
010540: 64 20 69 6E 2C 20 20 74 68 65 20 20 45 4F 4C 4E d in, the EOLN
010550: 0D 0A 20 20 20 20 20 20 66 75 6E 63 74 69 6F 6E .. function
010560: 20 20 62 65 63 6F 6D 65 73 20 20 74 72 75 65 2E becomes true.
010570: 20 20 20 54 68 65 20 20 52 45 41 44 4C 4E 20 20 The READLN
010580: 70 72 6F 63 65 64 75 72 65 20 20 68 61 73 20 74 procedure has t
010590: 68 65 20 61 64 64 69 74 69 6F 6E 61 6C 0D 0A 20 he additional..
0105A0: 20 20 20 20 20 70 75 72 70 6F 73 65 20 6F 66 20 purpose of
0105B0: 72 65 73 65 74 74 69 6E 67 20 45 4F 4C 4E 20 74 resetting EOLN t
0105C0: 6F 20 66 61 6C 73 65 2E 20 20 52 45 41 44 4C 4E o false. READLN
0105D0: 20 20 61 6C 77 61 79 73 20 20 63 6C 65 61 72 73 always clears
0105E0: 20 20 6F 75 74 20 20 74 68 65 0D 0A 20 20 20 20 out the..
0105F0: 20 20 63 75 72 72 65 6E 74 20 20 69 6E 70 75 74 current input
010600: 20 20 6C 69 6E 65 2E 20 20 46 6F 72 20 65 78 61 line. For exa
010610: 6D 70 6C 65 2C 20 69 66 20 35 20 6E 75 6D 62 65 mple, if 5 numbe
010620: 72 73 20 77 65 72 65 20 6B 65 79 65 64 20 69 6E rs were keyed in
010630: 20 6F 6E 20 6F 6E 65 0D 0A 20 20 20 20 20 20 6C on one.. l
010640: 69 6E 65 20 61 6E 64 20 61 20 52 45 41 44 4C 4E ine and a READLN
010650: 20 77 65 72 65 20 69 73 73 75 65 64 20 77 69 74 were issued wit
010660: 68 20 33 20 76 61 72 69 61 62 6C 65 73 20 69 6E h 3 variables in
010670: 20 69 74 73 20 70 61 72 61 6D 65 74 65 72 20 6C its parameter l
010680: 69 73 74 2C 0D 0A 20 20 20 20 20 20 74 68 65 20 ist,.. the
010690: 6C 61 73 74 20 32 20 6E 75 6D 62 65 72 73 20 6F last 2 numbers o
0106A0: 6E 20 74 68 61 74 20 6C 69 6E 65 20 77 6F 75 6C n that line woul
0106B0: 64 20 62 65 20 6C 6F 73 74 2E 0D 0A 0D 0A 20 20 d be lost.....
0106C0: 20 20 20 20 20 20 20 20 20 46 6F 72 6D 61 74 20 Format
0106D0: 32 20 69 73 20 75 73 65 64 20 74 6F 20 72 65 61 2 is used to rea
0106E0: 64 20 69 6E 20 64 61 74 61 20 66 72 6F 6D 20 61 d in data from a
0106F0: 20 20 73 65 71 75 65 6E 74 69 61 6C 20 20 64 69 sequential di
010700: 45 44 55 52 45 20 52 45 4E 41 4D 45 20 28 20 4F EDURE RENAME ( O
010710: 4C 44 2C 20 4E 45 57 31 20 3A 20 53 54 52 49 4E LD, NEW1 : STRIN
010720: 47 5B 32 30 5D 20 29 3B 0D 0A 20 20 20 20 20 20 G[20] );..
010730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
010740: 20 20 20 20 20 20 20 45 58 54 45 52 4E 3B 0D 0A EXTERN;..
010750: 0D 0A 20 20 20 20 20 20 45 78 61 6D 70 6C 65 73 .. Examples
010760: 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 :....
010770: 20 20 20 20 20 20 20 52 45 4E 41 4D 45 28 20 27 RENAME( '
010780: 43 3A 54 45 53 54 2E 50 41 53 27 2C 20 27 54 45 C:TEST.PAS', 'TE
010790: 53 54 32 2E 50 41 53 27 20 29 3B 0D 0A 0D 0A 20 ST2.PAS' );....
0107A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0107B0: 20 52 45 4E 41 4D 45 28 20 4F 4C 44 5F 46 49 4C RENAME( OLD_FIL
0107C0: 45 5F 4E 41 4D 45 2C 20 4E 45 57 5F 46 49 4C 45 E_NAME, NEW_FILE
0107D0: 5F 4E 41 4D 45 20 29 3B 0D 0A 0D 0A 20 20 20 20 _NAME );....
0107E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 RE
0107F0: 4E 41 4D 45 28 20 44 49 53 4B 20 2B 20 4F 4C 44 NAME( DISK + OLD
010800: 5F 4E 41 4D 45 2C 20 4E 45 57 5F 4E 41 4D 45 20 _NAME, NEW_NAME
010810: 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 );....
010820: 20 20 20 20 20 20 20 20 52 45 4E 41 4D 45 28 20 RENAME(
010830: 27 53 4F 52 54 2E 42 41 4B 27 2C 20 27 53 4F 52 'SORT.BAK', 'SOR
010840: 54 2E 50 41 53 27 20 29 3B 0D 0A 0D 0A 0D 0A 20 T.PAS' );......
010850: 20 20 20 20 20 37 2E 31 34 20 20 52 45 53 45 54 7.14 RESET
010860: 20 0D 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 .... Forma
010870: 74 20 31 0D 0A 20 20 20 20 20 20 52 45 53 45 54 t 1.. RESET
010880: 20 28 20 66 69 6C 65 5F 76 61 72 69 61 62 6C 65 ( file_variable
010890: 2C 20 66 69 6C 65 6E 61 6D 65 2C 20 42 49 4E 41 , filename, BINA
0108A0: 52 59 2C 20 62 75 66 72 5F 73 69 7A 65 20 29 3B RY, bufr_size );
0108B0: 0D 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 74 .... Format
0108C0: 20 32 0D 0A 20 20 20 20 20 20 52 45 53 45 54 20 2.. RESET
0108D0: 28 20 66 69 6C 65 5F 76 61 72 69 61 62 6C 65 2C ( file_variable,
0108E0: 20 66 69 6C 65 6E 61 6D 65 2C 20 54 45 58 54 2C filename, TEXT,
0108F0: 20 62 75 66 72 5F 73 69 7A 65 20 29 3B 0D 0A 0D bufr_size );...
010900: 73 6B 20 20 66 69 6C 65 2E 0D 0A 20 20 20 20 20 sk file...
010910: 20 57 68 65 74 68 65 72 20 20 74 68 65 20 20 66 Whether the f
010920: 69 6C 65 20 20 69 73 20 20 70 72 6F 63 65 73 73 ile is process
010930: 65 64 20 61 73 20 74 65 78 74 20 6F 72 20 62 69 ed as text or bi
010940: 6E 61 72 79 20 64 61 74 61 20 69 73 20 73 70 65 nary data is spe
010950: 63 69 66 69 65 64 0D 0A 20 20 20 20 20 20 77 68 cified.. wh
010960: 65 6E 20 74 68 65 20 66 69 6C 65 20 69 73 20 6F en the file is o
010970: 70 65 6E 65 64 20 28 52 45 53 45 54 29 2E 20 20 pened (RESET).
010980: 54 68 65 20 66 69 6C 65 5F 76 61 72 69 61 62 6C The file_variabl
010990: 65 20 6D 75 73 74 20 72 65 66 65 72 20 20 74 6F e must refer to
0109A0: 20 20 61 0D 0A 20 20 20 20 20 20 66 69 6C 65 20 a.. file
0109B0: 20 77 68 69 63 68 20 20 68 61 73 20 20 62 65 65 which has bee
0109C0: 6E 20 20 73 75 63 63 65 73 73 66 75 6C 6C 79 20 n successfully
0109D0: 20 6F 70 65 6E 65 64 20 6F 72 20 61 20 72 75 6E opened or a run
0109E0: 2D 74 69 6D 65 20 65 72 72 6F 72 20 77 69 6C 6C -time error will
0109F0: 0D 0A 20 20 20 20 20 20 6F 63 63 75 72 2E 0D 0A .. occur...
010A00: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 4E 6F 74 .. Not
010A10: 65 20 74 68 61 74 20 4A 52 54 20 50 61 73 63 61 e that JRT Pasca
010A20: 6C 20 75 73 65 73 20 61 20 73 65 6D 69 63 6F 6C l uses a semicol
010A30: 6F 6E 20 20 61 66 74 65 72 20 20 74 68 65 20 20 on after the
010A40: 66 69 6C 65 5F 76 61 72 69 61 62 6C 65 0D 0A 20 file_variable..
010A50: 20 20 20 20 20 72 61 74 68 65 72 20 74 68 61 6E rather than
010A60: 20 61 20 63 6F 6D 6D 61 2E 0D 0A 0D 0A 20 20 20 a comma.....
010A70: 20 20 20 20 20 20 20 20 46 6F 72 6D 61 74 20 20 Format
010A80: 33 20 20 69 73 20 20 75 73 65 64 20 74 6F 20 72 3 is used to r
010A90: 65 61 64 20 69 6E 20 64 61 74 61 20 66 72 6F 6D ead in data from
010AA0: 20 61 20 72 61 6E 64 6F 6D 20 66 69 6C 65 20 62 a random file b
010AB0: 79 20 67 69 76 69 6E 67 0D 0A 20 20 20 20 20 20 y giving..
010AC0: 74 68 65 20 72 65 6C 61 74 69 76 65 20 72 65 63 the relative rec
010AD0: 6F 72 64 20 6E 75 6D 62 65 72 20 28 52 52 4E 29 ord number (RRN)
010AE0: 20 6F 66 20 74 68 65 20 72 65 63 6F 72 64 20 72 of the record r
010AF0: 65 71 75 69 72 65 64 2E 20 20 20 54 68 65 20 20 equired. The
010B00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
010B10: 0E 00 00 00 02 09 2A E5 0E 00 C1 02 00 00 00 02 ......*.........
010B20: 0E 00 C6 02 00 00 00 02 0E 00 C2 02 00 00 00 02 ................
010B30: 0E 00 C7 02 00 00 00 02 0E 00 C3 02 00 00 00 02 ................
010B40: 0E 00 C8 02 00 00 00 02 0E 00 C4 02 00 00 00 02 ................
010B50: 0E 00 C9 02 00 00 00 02 0E 00 C5 02 00 00 00 02 ................
010B60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010B70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010B80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010B90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010C00: 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 . The
010C10: 20 52 45 53 45 54 20 20 73 74 61 6E 64 61 72 64 RESET standard
010C20: 20 20 70 72 6F 63 65 64 75 72 65 20 69 73 20 75 procedure is u
010C30: 73 65 64 20 74 6F 20 6F 70 65 6E 20 61 6C 72 65 sed to open alre
010C40: 61 64 79 20 65 78 69 73 74 69 6E 67 0D 0A 20 20 ady existing..
010C50: 20 20 20 20 66 69 6C 65 73 20 66 6F 72 20 73 65 files for se
010C60: 71 75 65 6E 74 69 61 6C 20 69 6E 70 75 74 2E 0D quential input..
010C70: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 49 4D ... IM
010C80: 50 4F 52 54 41 4E 54 20 43 48 41 4E 47 45 20 66 PORTANT CHANGE f
010C90: 72 6F 6D 20 76 65 72 73 69 6F 6E 20 32 2E 32 20 rom version 2.2
010CA0: 74 6F 20 76 65 72 73 69 6F 6E 20 33 2E 30 20 6F to version 3.0 o
010CB0: 66 20 4A 52 54 20 20 50 61 73 63 61 6C 3A 0D 0A f JRT Pascal:..
010CC0: 20 20 20 20 20 20 52 45 53 45 54 20 20 6E 6F 77 RESET now
010CD0: 20 73 65 74 73 20 74 68 65 20 45 4F 46 20 66 75 sets the EOF fu
010CE0: 6E 63 74 69 6F 6E 20 74 6F 20 74 72 75 65 20 61 nction to true a
010CF0: 6E 64 20 69 73 73 75 65 73 20 61 20 77 61 72 6E nd issues a warn
010D00: 69 6E 67 20 6D 65 73 73 61 67 65 0D 0A 20 20 20 ing message..
010D10: 20 20 20 69 66 20 74 68 65 20 66 69 6C 65 20 64 if the file d
010D20: 6F 65 73 20 6E 6F 74 20 65 78 69 73 74 20 6F 6E oes not exist on
010D30: 20 64 69 73 6B 2E 20 20 49 74 20 75 73 65 64 20 disk. It used
010D40: 74 6F 20 63 61 75 73 65 20 74 68 65 20 6F 6C 64 to cause the old
010D50: 20 70 72 6F 67 72 61 6D 0D 0A 20 20 20 20 20 20 program..
010D60: 74 6F 20 74 65 72 6D 69 6E 61 74 65 20 77 69 74 to terminate wit
010D70: 68 20 61 6E 20 65 72 72 6F 72 2E 20 20 4E 4F 54 h an error. NOT
010D80: 45 3A 20 41 6C 6C 20 70 72 6F 67 72 61 6D 73 20 E: All programs
010D90: 73 68 6F 75 6C 64 20 6E 6F 77 20 20 74 65 73 74 should now test
010DA0: 20 20 45 4F 46 0D 0A 20 20 20 20 20 20 69 6D 6D EOF.. imm
010DB0: 65 64 69 61 74 65 6C 79 20 61 66 74 65 72 20 52 ediately after R
010DC0: 45 53 45 54 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 ESET.....
010DD0: 20 20 20 20 46 6F 72 6D 61 74 20 20 31 20 20 69 Format 1 i
010DE0: 73 20 75 73 65 64 20 74 6F 20 6F 70 65 6E 20 66 s used to open f
010DF0: 69 6C 65 73 20 69 6E 20 62 69 6E 61 72 79 20 6D iles in binary m
010E00: 2E 20 20 54 68 65 20 62 75 66 66 65 72 20 20 73 . The buffer s
010E10: 69 7A 65 20 20 69 73 0D 0A 20 20 20 20 20 20 72 ize is.. r
010E20: 6F 75 6E 64 65 64 20 75 70 20 74 6F 20 61 20 6D ounded up to a m
010E30: 75 6C 74 69 70 6C 65 20 6F 66 20 31 32 38 2E 0D ultiple of 128..
010E40: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 56 61 ... Va
010E50: 6C 75 65 73 20 6C 69 6B 65 20 31 30 32 34 2C 20 lues like 1024,
010E60: 32 30 34 38 20 61 6E 64 20 34 30 39 36 20 61 72 2048 and 4096 ar
010E70: 65 20 72 65 63 6F 6D 6D 65 6E 64 65 64 20 66 6F e recommended fo
010E80: 72 20 62 75 66 72 5F 73 69 7A 65 2E 0D 0A 0D 0A r bufr_size.....
010E90: 20 20 20 20 20 20 45 78 61 6D 70 6C 65 73 3A 0D Examples:.
010EA0: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
010EB0: 20 20 20 20 20 52 45 57 52 49 54 45 28 20 4C 4F REWRITE( LO
010EC0: 47 5F 46 49 4C 45 2C 20 27 46 3A 4C 4F 47 2E 44 G_FILE, 'F:LOG.D
010ED0: 41 54 27 2C 20 54 45 58 54 2C 20 35 31 32 20 29 AT', TEXT, 512 )
010EE0: 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ;....
010EF0: 20 20 20 20 20 20 20 52 45 57 52 49 54 45 28 20 REWRITE(
010F00: 52 45 50 4F 52 54 2C 20 4D 4F 4E 54 48 20 2B 20 REPORT, MONTH +
010F10: 27 2E 52 50 54 27 2C 20 54 45 58 54 2C 20 31 30 '.RPT', TEXT, 10
010F20: 32 34 20 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 24 );....
010F30: 20 20 20 20 20 20 20 20 20 20 20 52 45 57 52 49 REWRI
010F40: 54 45 28 20 53 59 4D 42 4F 4C 2C 20 50 47 4D 20 TE( SYMBOL, PGM
010F50: 2B 20 27 2E 53 59 4D 27 2C 20 42 49 4E 41 52 59 + '.SYM', BINARY
010F60: 2C 20 32 35 36 20 29 3B 0D 0A 0D 0A 20 20 20 20 , 256 );....
010F70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 RE
010F80: 57 52 49 54 45 28 20 53 54 41 54 49 53 54 49 43 WRITE( STATISTIC
010F90: 53 2C 20 27 42 3A 53 54 41 54 53 2E 44 41 54 27 S, 'B:STATS.DAT'
010FA0: 2C 20 54 45 58 54 2C 20 37 36 38 20 29 3B 0D 0A , TEXT, 768 );..
010FB0: 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 ..........
010FC0: 37 2E 31 36 20 20 57 52 49 54 45 2C 20 57 52 49 7.16 WRITE, WRI
010FD0: 54 45 4C 4E 0D 0A 0D 0A 20 20 20 20 20 20 46 6F TELN.... Fo
010FE0: 72 6D 61 74 20 31 20 20 28 63 6F 6E 73 6F 6C 65 rmat 1 (console
010FF0: 29 0D 0A 20 20 20 20 20 20 57 52 49 54 45 2F 4C ).. WRITE/L
011000: 6F 64 65 2E 20 20 46 6F 72 6D 61 74 20 32 20 6F ode. Format 2 o
011010: 70 65 6E 73 0D 0A 20 20 20 20 20 20 66 69 6C 65 pens.. file
011020: 73 20 69 6E 20 74 65 78 74 20 6D 6F 64 65 2E 0D s in text mode..
011030: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 ... Th
011040: 65 20 66 69 6C 65 5F 76 61 72 69 61 62 6C 65 20 e file_variable
011050: 72 65 66 65 72 73 20 74 6F 20 61 20 66 69 6C 65 refers to a file
011060: 20 76 61 72 69 61 62 6C 65 20 64 65 63 6C 61 72 variable declar
011070: 65 64 20 69 6E 20 74 68 65 20 20 56 41 52 0D 0A ed in the VAR..
011080: 20 20 20 20 20 20 64 65 63 6C 61 72 61 74 69 6F declaratio
011090: 6E 20 20 20 73 65 63 74 69 6F 6E 2E 20 20 20 54 n section. T
0110A0: 68 65 20 20 66 69 6C 65 6E 61 6D 65 20 20 69 73 he filename is
0110B0: 20 20 61 20 20 73 74 72 69 6E 67 20 20 6F 72 20 a string or
0110C0: 20 73 74 72 75 63 74 75 72 65 64 0D 0A 20 20 20 structured..
0110D0: 20 20 20 65 78 70 72 65 73 73 69 6F 6E 20 77 68 expression wh
0110E0: 69 63 68 20 6D 61 79 20 69 6E 63 6C 75 64 65 20 ich may include
0110F0: 64 69 73 6B 20 69 64 65 6E 74 69 66 69 65 72 20 disk identifier
011100: 6C 65 74 74 65 72 2E 0D 0A 0D 0A 20 20 20 20 20 letter.....
011110: 20 20 20 20 20 20 54 68 65 20 62 75 66 72 5F 73 The bufr_s
011120: 69 7A 65 20 69 73 20 61 6E 20 69 6E 74 65 67 65 ize is an intege
011130: 72 20 65 78 70 72 65 73 73 69 6F 6E 20 77 68 69 r expression whi
011140: 63 68 20 69 6E 64 69 63 61 74 65 73 20 74 68 65 ch indicates the
011150: 20 20 73 69 7A 65 0D 0A 20 20 20 20 20 20 6F 66 size.. of
011160: 20 20 74 68 65 20 20 69 6E 70 75 74 20 20 62 75 the input bu
011170: 66 66 65 72 20 20 74 6F 20 20 62 65 20 20 61 6C ffer to be al
011180: 6C 6F 63 61 74 65 64 20 20 69 6E 20 20 64 79 6E located in dyn
011190: 61 6D 69 63 20 73 74 6F 72 61 67 65 2E 20 20 57 amic storage. W
0111A0: 68 65 6E 0D 0A 20 20 20 20 20 20 73 74 6F 72 61 hen.. stora
0111B0: 72 61 67 65 20 69 73 20 61 76 61 69 6C 61 62 6C rage is availabl
0111C0: 65 2C 20 6C 61 72 67 65 72 20 62 75 66 66 65 72 e, larger buffer
0111D0: 73 20 20 61 72 65 20 20 70 72 65 66 65 72 72 65 s are preferre
0111E0: 64 20 20 62 65 63 61 75 73 65 20 20 74 68 65 79 d because they
0111F0: 0D 0A 20 20 20 20 20 20 72 65 73 75 6C 74 20 69 .. result i
011200: 4E 20 28 20 76 61 72 69 61 62 6C 65 31 2C 20 76 N ( variable1, v
011210: 61 72 69 61 62 6C 65 32 2C 2E 2E 2E 20 29 3B 0D ariable2,... );.
011220: 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 74 20 ... Format
011230: 32 20 20 28 73 65 71 75 65 6E 74 69 61 6C 20 64 2 (sequential d
011240: 69 73 6B 29 0D 0A 20 20 20 20 20 20 57 52 49 54 isk).. WRIT
011250: 45 2F 4C 4E 20 28 20 66 69 6C 65 5F 76 61 72 69 E/LN ( file_vari
011260: 61 62 6C 65 20 3B 20 76 61 72 69 61 62 6C 65 31 able ; variable1
011270: 2C 20 76 61 72 69 61 62 6C 65 32 2C 2E 2E 2E 20 , variable2,...
011280: 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D );.... Form
011290: 61 74 20 33 20 20 28 72 61 6E 64 6F 6D 20 64 69 at 3 (random di
0112A0: 73 6B 29 0D 0A 20 20 20 20 20 20 57 52 49 54 45 sk).. WRITE
0112B0: 2F 4C 4E 20 28 20 66 69 6C 65 5F 76 61 72 69 61 /LN ( file_varia
0112C0: 62 6C 65 2C 20 52 52 4E 2C 20 69 6E 74 65 67 65 ble, RRN, intege
0112D0: 72 5F 6F 72 5F 72 65 61 6C 5F 65 78 70 72 20 3B r_or_real_expr ;
0112E0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
0112F0: 20 20 20 20 76 61 72 69 61 62 6C 65 31 2C 20 76 variable1, v
011300: 61 72 69 61 62 6C 65 32 2C 2E 2E 2E 20 29 3B 0D ariable2,... );.
011310: 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 74 20 ... Format
011320: 34 20 20 28 72 61 6E 64 6F 6D 20 64 69 73 6B 29 4 (random disk)
011330: 0D 0A 20 20 20 20 20 20 57 52 49 54 45 2F 4C 4E .. WRITE/LN
011340: 20 28 20 66 69 6C 65 5F 76 61 72 69 61 62 6C 65 ( file_variable
011350: 2C 20 52 42 41 2C 20 69 6E 74 65 67 65 72 5F 6F , RBA, integer_o
011360: 72 5F 72 65 61 6C 5F 65 78 70 72 20 3B 0D 0A 20 r_real_expr ;..
011370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
011380: 20 76 61 72 69 61 62 6C 65 31 2C 20 76 61 72 69 variable1, vari
011390: 61 62 6C 65 32 2C 2E 2E 2E 20 29 3B 0D 0A 0D 0A able2,... );....
0113A0: 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 20 The
0113B0: 57 52 49 54 45 20 73 74 61 6E 64 61 72 64 20 70 WRITE standard p
0113C0: 72 6F 63 65 64 75 72 65 20 69 73 20 75 73 65 64 rocedure is used
0113D0: 20 74 6F 20 74 72 61 6E 73 66 65 72 20 64 61 74 to transfer dat
0113E0: 61 20 66 72 6F 6D 20 6D 61 69 6E 0D 0A 20 20 20 a from main..
0113F0: 20 20 20 73 74 6F 72 61 67 65 20 74 6F 20 74 68 storage to th
011400: 6E 20 66 65 77 65 72 20 64 69 73 6B 20 61 63 63 n fewer disk acc
011410: 65 73 73 65 73 20 61 6E 64 20 74 68 75 73 20 66 esses and thus f
011420: 61 73 74 65 72 20 70 72 6F 63 65 73 73 69 6E 67 aster processing
011430: 2E 20 20 54 68 65 20 62 75 66 66 65 72 0D 0A 20 . The buffer..
011440: 20 20 20 20 20 73 69 7A 65 20 69 73 20 72 6F 75 size is rou
011450: 6E 64 65 64 20 75 70 20 74 6F 20 61 20 6D 75 6C nded up to a mul
011460: 74 69 70 6C 65 20 6F 66 20 31 32 38 2E 0D 0A 0D tiple of 128....
011470: 0A 20 20 20 20 20 20 20 20 20 20 20 56 61 6C 75 . Valu
011480: 65 73 20 6C 69 6B 65 20 31 30 32 34 2C 20 32 30 es like 1024, 20
011490: 34 38 20 61 6E 64 20 34 30 39 36 20 61 72 65 20 48 and 4096 are
0114A0: 72 65 63 6F 6D 6D 65 6E 64 65 64 20 66 6F 72 20 recommended for
0114B0: 62 75 66 72 5F 73 69 7A 65 2E 0D 0A 0D 0A 20 20 bufr_size.....
0114C0: 20 20 20 20 45 78 61 6D 70 6C 65 73 3A 0D 0A 0D Examples:...
0114D0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
0114E0: 20 20 20 52 45 53 45 54 28 20 49 4E 50 55 54 5F RESET( INPUT_
0114F0: 46 49 4C 45 2C 20 27 53 4F 55 52 43 45 2E 50 41 FILE, 'SOURCE.PA
011500: 53 27 2C 20 42 49 4E 41 52 59 2C 20 31 30 32 34 S', BINARY, 1024
011510: 20 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 );....
011520: 20 20 20 20 20 20 20 20 20 52 45 53 45 54 28 20 RESET(
011530: 4C 4F 47 2C 20 27 42 3A 4C 4F 47 2E 44 41 54 27 LOG, 'B:LOG.DAT'
011540: 2C 20 54 45 58 54 2C 20 32 30 34 38 20 29 3B 0D , TEXT, 2048 );.
011550: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
011560: 20 20 20 20 20 52 45 53 45 54 28 20 44 41 49 4C RESET( DAIL
011570: 59 5F 53 41 4C 45 53 2C 20 27 43 3A 44 41 49 4C Y_SALES, 'C:DAIL
011580: 59 2E 44 41 54 27 2C 20 54 45 58 54 2C 20 32 35 Y.DAT', TEXT, 25
011590: 36 20 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 6 );....
0115A0: 20 20 20 20 20 20 20 20 20 20 52 45 53 45 54 28 RESET(
0115B0: 20 53 54 41 54 49 53 54 49 43 53 2C 20 27 53 54 STATISTICS, 'ST
0115C0: 41 54 2E 44 41 54 27 2C 20 42 49 4E 41 52 59 2C AT.DAT', BINARY,
0115D0: 20 31 30 32 34 20 29 3B 0D 0A 0D 0A 0D 0A 20 20 1024 );......
0115E0: 20 20 20 20 37 2E 31 35 20 20 52 45 57 52 49 54 7.15 REWRIT
0115F0: 45 0D 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 E.... Forma
011600: 65 20 63 6F 6E 73 6F 6C 65 20 66 6F 72 20 64 69 e console for di
011610: 73 70 6C 61 79 20 6F 72 20 74 6F 20 64 69 73 6B splay or to disk
011620: 20 66 6F 72 20 73 74 6F 72 61 67 65 2E 0D 0A 0D for storage....
011630: 0A 20 20 20 20 20 20 20 20 20 20 20 46 6F 72 6D . Form
011640: 61 74 20 31 20 69 73 20 75 73 65 64 20 74 6F 20 at 1 is used to
011650: 77 72 69 74 65 20 64 61 74 61 20 74 6F 20 74 68 write data to th
011660: 65 20 63 6F 6E 73 6F 6C 65 20 6F 72 20 20 70 72 e console or pr
011670: 69 6E 74 65 72 2E 20 20 20 54 68 65 0D 0A 20 20 inter. The..
011680: 20 20 20 20 63 6F 6E 73 6F 6C 65 20 20 69 73 20 console is
011690: 20 61 6C 77 61 79 73 20 20 63 6F 6E 73 69 64 65 always conside
0116A0: 72 65 64 20 20 74 6F 20 20 62 65 20 20 61 20 74 red to be a t
0116B0: 65 78 74 20 64 65 76 69 63 65 2C 20 69 2E 65 2E ext device, i.e.
0116C0: 2C 20 64 61 74 61 20 69 73 0D 0A 20 20 20 20 20 , data is..
0116D0: 20 61 6C 77 61 79 73 20 63 6F 6E 76 65 72 74 65 always converte
0116E0: 64 20 74 6F 20 72 65 61 64 61 62 6C 65 20 74 65 d to readable te
0116F0: 78 74 20 20 66 6F 72 6D 61 74 20 20 62 65 66 6F xt format befo
011700: 72 65 20 20 6F 75 74 70 75 74 2E 20 20 20 53 74 re output. St
011710: 61 6E 64 61 72 64 0D 0A 20 20 20 20 20 20 41 53 andard.. AS
011720: 43 49 49 20 63 6F 6E 74 72 6F 6C 20 63 68 61 72 CII control char
011730: 61 63 74 65 72 73 20 61 72 65 20 73 75 70 70 6F acters are suppo
011740: 72 74 65 64 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 rted:....
011750: 20 20 20 20 20 20 20 20 64 65 63 69 6D 61 6C 20 decimal
011760: 20 68 65 78 20 20 20 70 75 72 70 6F 73 65 0D 0A hex purpose..
011770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D -
011780: 2D 2D 2D 2D 2D 2D 20 20 2D 2D 2D 20 20 20 2D 2D ------ --- --
011790: 2D 2D 2D 2D 2D 2D 0D 0A 20 20 20 20 20 20 20 20 ------..
0117A0: 20 20 20 20 20 20 20 20 20 20 39 20 20 20 20 20 9
0117B0: 30 39 68 20 20 20 68 6F 72 69 7A 6F 6E 74 61 6C 09h horizontal
0117C0: 20 74 61 62 0D 0A 20 20 20 20 20 20 20 20 20 20 tab..
0117D0: 20 20 20 20 20 20 20 20 31 30 20 20 20 20 30 61 10 0a
0117E0: 68 20 20 20 6C 69 6E 65 20 66 65 65 64 0D 0A 20 h line feed..
0117F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
011800: 74 20 31 0D 0A 20 20 20 20 20 20 52 45 57 52 49 t 1.. REWRI
011810: 54 45 28 20 66 69 6C 65 5F 76 61 72 69 61 62 6C TE( file_variabl
011820: 65 2C 20 66 69 6C 65 6E 61 6D 65 2C 20 42 49 4E e, filename, BIN
011830: 41 52 59 2C 20 62 75 66 72 5F 73 69 7A 65 20 29 ARY, bufr_size )
011840: 3B 0D 0A 0D 0A 20 20 20 20 20 20 46 6F 72 6D 61 ;.... Forma
011850: 74 20 32 0D 0A 20 20 20 20 20 20 52 45 57 52 49 t 2.. REWRI
011860: 54 45 28 20 66 69 6C 65 5F 76 61 72 69 61 62 6C TE( file_variabl
011870: 65 2C 20 66 69 6C 65 6E 61 6D 65 2C 20 54 45 58 e, filename, TEX
011880: 54 2C 20 62 75 66 72 5F 73 69 7A 65 20 29 3B 0D T, bufr_size );.
011890: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 ... Th
0118A0: 65 20 20 52 45 57 52 49 54 45 20 20 73 74 61 6E e REWRITE stan
0118B0: 64 61 72 64 20 20 70 72 6F 63 65 64 75 72 65 20 dard procedure
0118C0: 20 69 73 20 75 73 65 64 20 74 6F 20 6F 70 65 6E is used to open
0118D0: 20 61 6C 6C 20 66 69 6C 65 73 20 66 6F 72 0D 0A all files for..
0118E0: 20 20 20 20 20 20 73 65 71 75 65 6E 74 69 61 6C sequential
0118F0: 20 64 69 73 6B 20 6F 75 74 70 75 74 2E 20 20 41 disk output. A
011900: 20 20 6E 65 77 20 20 66 69 6C 65 20 20 77 69 74 new file wit
011910: 68 20 20 74 68 65 20 20 67 69 76 65 6E 20 20 66 h the given f
011920: 69 6C 65 6E 61 6D 65 20 20 69 73 0D 0A 20 20 20 ilename is..
011930: 20 20 20 61 6C 6C 6F 63 61 74 65 64 2E 20 20 49 allocated. I
011940: 66 20 61 20 66 69 6C 65 20 77 69 74 68 20 74 68 f a file with th
011950: 61 74 20 6E 61 6D 65 20 61 6C 72 65 61 64 79 20 at name already
011960: 65 78 69 73 74 73 2C 20 69 74 20 69 73 20 64 65 exists, it is de
011970: 6C 65 74 65 64 20 74 6F 0D 0A 20 20 20 20 20 20 leted to..
011980: 66 72 65 65 20 74 68 65 20 73 70 61 63 65 20 61 free the space a
011990: 6C 6C 6F 63 61 74 65 64 20 74 6F 20 69 74 2E 0D llocated to it..
0119A0: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 46 6F ... Fo
0119B0: 72 6D 61 74 20 20 31 20 20 69 73 20 75 73 65 64 rmat 1 is used
0119C0: 20 74 6F 20 6F 70 65 6E 20 66 69 6C 65 73 20 69 to open files i
0119D0: 6E 20 62 69 6E 61 72 79 20 6D 6F 64 65 2E 20 20 n binary mode.
0119E0: 46 6F 72 6D 61 74 20 32 20 6F 70 65 6E 73 0D 0A Format 2 opens..
0119F0: 20 20 20 20 20 20 66 69 6C 65 73 20 69 6E 20 74 files in t
011A00: 20 31 32 20 20 20 20 30 63 68 20 20 20 66 6F 72 12 0ch for
011A10: 6D 20 66 65 65 64 2C 20 63 6C 65 61 72 20 73 63 m feed, clear sc
011A20: 72 65 65 6E 0D 0A 20 20 20 20 20 20 20 20 20 20 reen..
011A30: 20 20 20 20 20 20 20 20 31 33 20 20 20 20 30 64 13 0d
011A40: 68 20 20 20 63 61 72 72 69 61 67 65 20 72 65 74 h carriage ret
011A50: 75 72 6E 2C 20 65 6E 64 20 6C 69 6E 65 0D 0A 0D urn, end line...
011A60: 0A 20 20 20 20 20 20 20 20 20 20 20 46 6F 72 20 . For
011A70: 20 65 78 61 6D 70 6C 65 2C 20 20 65 78 65 63 75 example, execu
011A80: 74 69 6E 67 20 20 74 68 65 20 50 61 73 63 61 6C ting the Pascal
011A90: 20 73 74 61 74 65 6D 65 6E 74 20 57 52 49 54 45 statement WRITE
011AA0: 28 20 43 48 52 28 31 32 29 20 29 3B 0D 0A 20 20 ( CHR(12) );..
011AB0: 20 20 20 20 77 69 6C 6C 20 63 6C 65 61 72 20 74 will clear t
011AC0: 68 65 20 73 63 72 65 65 6E 20 6F 66 20 6D 6F 73 he screen of mos
011AD0: 74 20 74 79 70 65 73 20 6F 66 20 43 52 54 20 74 t types of CRT t
011AE0: 65 72 6D 69 6E 61 6C 73 2E 0D 0A 0D 0A 20 20 20 erminals.....
011AF0: 20 20 20 20 20 20 20 20 54 68 65 20 57 52 49 54 The WRIT
011B00: 45 4C 4E 20 73 74 61 74 65 6D 65 6E 74 20 69 73 ELN statement is
011B10: 20 69 64 65 6E 74 69 63 61 6C 20 74 6F 20 74 68 identical to th
011B20: 65 20 57 52 49 54 45 20 65 78 63 65 70 74 20 20 e WRITE except
011B30: 74 68 61 74 20 20 69 74 0D 0A 20 20 20 20 20 20 that it..
011B40: 61 6C 73 6F 20 77 72 69 74 65 73 20 61 20 63 61 also writes a ca
011B50: 72 72 69 61 67 65 20 72 65 74 75 72 6E 20 63 68 rriage return ch
011B60: 61 72 61 63 74 65 72 20 61 66 74 65 72 20 74 68 aracter after th
011B70: 65 20 64 61 74 61 2C 20 69 2E 65 2E 2C 20 69 74 e data, i.e., it
011B80: 20 65 6E 64 73 0D 0A 20 20 20 20 20 20 74 68 65 ends.. the
011B90: 20 20 63 75 72 72 65 6E 74 20 20 6F 75 74 70 75 current outpu
011BA0: 74 20 20 6C 69 6E 65 2E 20 20 41 20 57 52 49 54 t line. A WRIT
011BB0: 45 4C 4E 20 6D 61 79 20 62 65 20 75 73 65 64 20 ELN may be used
011BC0: 62 79 20 69 74 73 65 6C 66 2C 20 77 69 74 68 6F by itself, witho
011BD0: 75 74 0D 0A 20 20 20 20 20 20 61 6E 79 20 76 61 ut.. any va
011BE0: 72 69 61 62 6C 65 73 2C 20 74 6F 20 77 72 69 74 riables, to writ
011BF0: 65 20 61 20 62 6C 61 6E 6B 20 6C 69 6E 65 20 74 e a blank line t
011C00: 65 78 74 20 6D 6F 64 65 2E 0D 0A 0D 0A 20 20 20 ext mode.....
011C10: 20 20 20 20 20 20 20 20 54 68 65 20 66 69 6C 65 The file
011C20: 5F 76 61 72 69 61 62 6C 65 20 72 65 66 65 72 73 _variable refers
011C30: 20 74 6F 20 61 20 66 69 6C 65 20 76 61 72 69 61 to a file varia
011C40: 62 6C 65 20 64 65 63 6C 61 72 65 64 20 69 6E 20 ble declared in
011C50: 74 68 65 20 20 56 41 52 0D 0A 20 20 20 20 20 20 the VAR..
011C60: 64 65 63 6C 61 72 61 74 69 6F 6E 20 20 20 73 65 declaration se
011C70: 63 74 69 6F 6E 2E 20 20 20 54 68 65 20 20 66 69 ction. The fi
011C80: 6C 65 6E 61 6D 65 20 20 69 73 20 20 61 20 20 73 lename is a s
011C90: 74 72 69 6E 67 20 20 6F 72 20 20 73 74 72 75 63 tring or struc
011CA0: 74 75 72 65 64 0D 0A 20 20 20 20 20 20 65 78 70 tured.. exp
011CB0: 72 65 73 73 69 6F 6E 20 77 68 69 63 68 20 6D 61 ression which ma
011CC0: 79 20 69 6E 63 6C 75 64 65 20 64 69 73 6B 20 69 y include disk i
011CD0: 64 65 6E 74 69 66 69 65 72 20 6C 65 74 74 65 72 dentifier letter
011CE0: 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
011CF0: 54 68 65 20 62 75 66 72 5F 73 69 7A 65 20 69 73 The bufr_size is
011D00: 20 61 6E 20 69 6E 74 65 67 65 72 20 65 78 70 72 an integer expr
011D10: 65 73 73 69 6F 6E 20 77 68 69 63 68 20 69 6E 64 ession which ind
011D20: 69 63 61 74 65 73 20 74 68 65 20 20 73 69 7A 65 icates the size
011D30: 0D 0A 20 20 20 20 20 20 6F 66 20 74 68 65 20 69 .. of the i
011D40: 6E 70 75 74 20 62 75 66 66 65 72 20 74 6F 20 62 nput buffer to b
011D50: 65 20 61 6C 6C 6F 63 61 74 65 64 20 69 6E 20 64 e allocated in d
011D60: 79 6E 61 6D 69 63 20 73 74 6F 72 61 67 65 2E 20 ynamic storage.
011D70: 20 57 68 65 6E 20 73 74 6F 72 61 67 65 0D 0A 20 When storage..
011D80: 20 20 20 20 20 69 73 20 20 61 76 61 69 6C 61 62 is availab
011D90: 6C 65 2C 20 20 6C 61 72 67 65 72 20 20 62 75 66 le, larger buf
011DA0: 66 65 72 73 20 20 61 72 65 20 70 72 65 66 65 72 fers are prefer
011DB0: 72 65 64 20 62 65 63 61 75 73 65 20 74 68 65 79 red because they
011DC0: 20 72 65 73 75 6C 74 20 69 6E 0D 0A 20 20 20 20 result in..
011DD0: 20 20 66 65 77 65 72 20 64 69 73 6B 20 61 63 63 fewer disk acc
011DE0: 65 73 73 65 73 20 61 6E 64 20 74 68 75 73 20 66 esses and thus f
011DF0: 61 73 74 65 72 20 70 72 6F 63 65 73 73 69 6E 67 aster processing
011E00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
011E10: 0F 00 00 00 02 09 2A E5 0F 00 C1 02 00 00 00 02 ......*.........
011E20: 0F 00 C6 02 00 00 00 02 0F 00 C2 02 00 00 00 02 ................
011E30: 0F 00 C7 02 00 00 00 02 0F 00 C3 02 00 00 00 02 ................
011E40: 0F 00 C8 02 00 00 00 02 0F 00 C4 02 00 00 00 02 ................
011E50: 0F 00 C9 02 00 00 00 02 0F 00 C5 02 00 00 00 02 ................
011E60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011E70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011E80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011E90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011ED0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011EF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
011F00: 6F 20 74 68 65 20 6F 75 74 70 75 74 20 64 65 76 o the output dev
011F10: 69 63 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ice.....
011F20: 20 20 20 46 6F 72 6D 61 74 20 32 20 69 73 20 75 Format 2 is u
011F30: 73 65 64 20 74 6F 20 77 72 69 74 65 20 64 61 74 sed to write dat
011F40: 61 20 74 6F 20 20 73 71 75 65 6E 74 69 61 6C 20 a to squential
011F50: 20 64 69 73 6B 20 20 66 69 6C 65 73 2E 20 20 20 disk files.
011F60: 54 68 65 0D 0A 20 20 20 20 20 20 66 69 6C 65 20 The.. file
011F70: 20 6D 75 73 74 20 20 68 61 76 65 20 20 62 65 65 must have bee
011F80: 6E 20 20 73 75 63 63 65 73 73 66 75 6C 6C 79 20 n successfully
011F90: 6F 70 65 6E 65 64 20 77 69 74 68 20 61 20 52 45 opened with a RE
011FA0: 57 52 49 54 45 20 70 72 6F 63 65 64 75 72 65 2E WRITE procedure.
011FB0: 0D 0A 20 20 20 20 20 20 54 68 69 73 20 66 6F 72 .. This for
011FC0: 6D 61 74 20 6D 61 79 20 62 65 20 75 73 65 64 20 mat may be used
011FD0: 69 6E 20 65 69 74 68 65 72 20 62 69 6E 61 72 79 in either binary
011FE0: 20 6F 72 20 74 65 78 74 20 6D 6F 64 65 20 70 72 or text mode pr
011FF0: 6F 63 65 73 73 69 6E 67 2E 0D 0A 0D 0A 20 20 20 ocessing.....
012000: 20 20 20 20 20 20 20 20 4E 6F 74 65 20 74 68 61 Note tha
012010: 74 20 4A 52 54 20 50 61 73 63 61 6C 20 75 73 65 t JRT Pascal use
012020: 73 20 61 20 73 65 6D 69 63 6F 6C 6F 6E 20 20 61 s a semicolon a
012030: 66 74 65 72 20 20 74 68 65 20 20 66 69 6C 65 5F fter the file_
012040: 76 61 72 69 61 62 6C 65 0D 0A 20 20 20 20 20 20 variable..
012050: 72 61 74 68 65 72 20 74 68 61 6E 20 61 20 63 6F rather than a co
012060: 6D 6D 61 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 mma.....
012070: 20 20 20 46 6F 72 6D 61 74 20 20 33 20 20 69 73 Format 3 is
012080: 20 20 75 73 65 64 20 74 6F 20 77 72 69 74 65 20 used to write
012090: 64 61 74 61 20 74 6F 20 61 20 72 61 6E 64 6F 6D data to a random
0120A0: 20 66 69 6C 65 20 62 79 20 67 69 76 69 6E 67 20 file by giving
0120B0: 74 68 65 0D 0A 20 20 20 20 20 20 72 65 6C 61 74 the.. relat
0120C0: 69 76 65 20 72 65 63 6F 72 64 20 6E 75 6D 62 65 ive record numbe
0120D0: 72 20 28 52 52 4E 29 20 6F 66 20 74 68 65 20 72 r (RRN) of the r
0120E0: 65 63 6F 72 64 20 62 65 69 6E 67 20 75 70 64 61 ecord being upda
0120F0: 74 65 64 20 6F 72 20 20 63 72 65 61 74 65 64 2E ted or created.
012100: 20 57 52 49 54 45 28 20 4E 45 47 41 54 49 56 45 WRITE( NEGATIVE
012110: 5F 44 41 54 41 3B 20 44 41 54 41 20 29 0D 0A 20 _DATA; DATA )..
012120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
012130: 20 45 4C 53 45 0D 0A 20 20 20 20 20 20 20 20 20 ELSE..
012140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 W
012150: 52 49 54 45 28 20 50 4F 53 49 54 49 56 45 5F 44 RITE( POSITIVE_D
012160: 41 54 41 3B 20 44 41 54 41 20 29 3B 0D 0A 0D 0A ATA; DATA );....
012170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
012180: 20 20 57 52 49 54 45 4C 4E 28 20 52 45 50 4F 52 WRITELN( REPOR
012190: 54 3B 20 54 4F 54 41 4C 5F 53 41 4C 45 53 3A 31 T; TOTAL_SALES:1
0121A0: 32 3A 32 20 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 2:2 );....
0121B0: 20 20 20 20 20 20 20 20 20 20 20 20 57 52 49 54 WRIT
0121C0: 45 28 20 43 55 53 54 4F 4D 45 52 5F 46 49 4C 45 E( CUSTOMER_FILE
0121D0: 2C 20 52 52 4E 2C 20 43 55 53 54 5F 4E 55 4D 3B , RRN, CUST_NUM;
0121E0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
0121F0: 20 20 20 20 20 20 20 20 20 20 4E 45 57 5F 43 55 NEW_CU
012200: 53 54 4F 4D 45 52 5F 52 45 43 4F 52 44 20 29 3B STOMER_RECORD );
012210: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
012220: 20 20 20 20 20 20 57 52 49 54 45 28 20 49 4E 51 WRITE( INQ
012230: 55 49 52 59 2C 20 52 42 41 2C 20 30 3B 20 49 4E UIRY, RBA, 0; IN
012240: 44 45 58 20 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 DEX );....
012250: 20 20 20 20 20 20 20 20 20 20 20 20 57 52 49 54 WRIT
012260: 45 4C 4E 3B 20 20 20 20 28 2A 20 57 52 49 54 45 ELN; (* WRITE
012270: 20 42 4C 41 4E 4B 20 4C 49 4E 45 20 2A 29 0D 0A BLANK LINE *)..
012280: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
012290: 20 20 20 20 57 52 49 54 45 28 20 43 48 52 28 30 WRITE( CHR(0
0122A0: 43 48 29 20 29 3B 20 20 20 20 20 20 28 2A 20 43 CH) ); (* C
0122B0: 4C 45 41 52 20 53 43 52 45 45 4E 20 2A 29 0D 0A LEAR SCREEN *)..
0122C0: 0D 0A 0D 0A 20 20 20 20 20 20 38 2E 20 20 20 4C .... 8. L
0122D0: 69 6E 6B 65 72 0D 0A 0D 0A 20 20 20 20 20 20 20 inker....
0122E0: 20 20 20 20 54 68 65 20 75 73 65 20 6F 66 20 74 The use of t
0122F0: 68 65 20 6C 69 6E 6B 65 72 20 69 73 20 65 6E 74 he linker is ent
012300: 0D 0A 20 20 20 20 20 20 54 68 65 20 20 66 69 72 .. The fir
012310: 73 74 20 20 72 65 63 6F 72 64 20 69 73 20 61 74 st record is at
012320: 20 52 52 4E 3D 30 2E 20 20 54 68 65 20 66 69 6C RRN=0. The fil
012330: 65 20 6D 75 73 74 20 68 61 76 65 20 62 65 65 6E e must have been
012340: 20 73 75 63 63 65 73 73 66 75 6C 6C 79 0D 0A 20 successfully..
012350: 20 20 20 20 20 6F 70 65 6E 65 64 20 20 77 69 74 opened wit
012360: 68 20 20 74 68 65 20 20 4F 50 45 4E 20 20 70 72 h the OPEN pr
012370: 6F 63 65 64 75 72 65 2E 20 20 20 53 65 71 75 65 ocedure. Seque
012380: 6E 74 69 61 6C 20 20 61 6E 64 20 20 20 72 61 6E ntial and ran
012390: 64 6F 6D 20 20 20 66 69 6C 65 0D 0A 20 20 20 20 dom file..
0123A0: 20 20 70 72 6F 63 65 73 73 69 6E 67 20 20 63 61 processing ca
0123B0: 6E 6E 6F 74 20 20 62 65 20 20 6D 69 78 65 64 20 nnot be mixed
0123C0: 20 75 6E 6C 65 73 73 20 20 74 68 65 20 20 66 69 unless the fi
0123D0: 6C 65 20 69 73 20 66 69 72 73 74 20 63 6C 6F 73 le is first clos
0123E0: 65 64 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 72 ed then.. r
0123F0: 65 2D 6F 70 65 6E 65 64 20 69 6E 20 74 68 65 20 e-opened in the
012400: 6F 74 68 65 72 20 6D 6F 64 65 2E 20 20 54 68 65 other mode. The
012410: 20 73 69 7A 65 20 6F 66 20 72 65 63 6F 72 64 73 size of records
012420: 20 6F 6E 20 74 68 65 20 66 69 6C 65 20 66 6F 72 on the file for
012430: 20 52 52 4E 0D 0A 20 20 20 20 20 20 70 72 6F 63 RRN.. proc
012440: 65 73 73 69 6E 67 20 69 73 20 64 65 74 65 72 6D essing is determ
012450: 69 6E 65 64 20 77 68 65 6E 20 74 68 65 20 66 69 ined when the fi
012460: 6C 65 20 69 73 20 64 65 63 6C 61 72 65 64 2E 20 le is declared.
012470: 20 46 6F 72 20 20 65 78 61 6D 70 6C 65 2C 20 20 For example,
012480: 61 0D 0A 20 20 20 20 20 20 46 49 4C 45 20 20 4F a.. FILE O
012490: 46 20 20 52 45 41 4C 20 20 68 61 73 20 20 61 20 F REAL has a
0124A0: 20 72 65 63 6F 72 64 20 20 73 69 7A 65 20 20 6F record size o
0124B0: 66 20 20 38 20 20 62 79 74 65 73 2C 20 20 74 68 f 8 bytes, th
0124C0: 65 20 73 69 7A 65 20 6F 66 20 72 65 61 6C 0D 0A e size of real..
0124D0: 20 20 20 20 20 20 76 61 72 69 61 62 6C 65 73 2E variables.
0124E0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 46 .... F
0124F0: 6F 72 6D 61 74 20 34 20 69 73 20 75 73 65 64 20 ormat 4 is used
012500: 69 72 65 6C 79 20 6F 70 74 69 6F 6E 61 6C 2E 20 irely optional.
012510: 20 49 74 20 69 73 20 75 73 65 64 20 74 6F 20 6D It is used to m
012520: 65 72 67 65 0D 0A 20 20 20 20 20 20 61 20 20 50 erge.. a P
012530: 61 73 63 61 6C 20 20 70 72 6F 67 72 61 6D 20 20 ascal program
012540: 27 2E 49 4E 54 27 20 20 66 69 6C 65 20 20 77 69 '.INT' file wi
012550: 74 68 20 20 73 6F 6D 65 20 20 6F 72 20 20 61 6C th some or al
012560: 6C 20 6F 66 20 69 74 73 20 65 78 74 65 72 6E 61 l of its externa
012570: 6C 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 64 75 l.. procedu
012580: 72 65 2F 66 75 6E 63 74 69 6F 6E 20 27 2E 49 4E re/function '.IN
012590: 54 27 20 66 69 6C 65 73 2E 20 20 49 74 20 63 61 T' files. It ca
0125A0: 6E 20 70 72 6F 63 65 73 73 20 20 70 72 6F 63 65 n process proce
0125B0: 64 75 72 65 73 20 20 77 72 69 74 74 65 6E 0D 0A dures written..
0125C0: 20 20 20 20 20 20 69 6E 20 61 73 73 65 6D 62 6C in assembl
0125D0: 65 72 20 61 73 20 77 65 6C 6C 20 61 73 20 50 61 er as well as Pa
0125E0: 73 63 61 6C 2E 20 20 54 6F 20 72 75 6E 20 74 68 scal. To run th
0125F0: 65 20 6C 69 6E 6B 65 72 2C 20 65 6E 74 65 72 3A e linker, enter:
012600: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
012610: 20 20 20 20 20 20 45 58 45 43 20 4C 49 4E 4B 45 EXEC LINKE
012620: 52 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 R....
012630: 54 68 65 20 20 6C 69 6E 6B 65 72 20 20 77 69 6C The linker wil
012640: 6C 20 20 69 73 73 75 65 20 61 20 70 72 6F 6D 70 l issue a promp
012650: 74 20 74 6F 20 74 68 65 20 63 6F 6E 73 6F 6C 65 t to the console
012660: 20 66 6F 72 20 74 68 65 20 70 72 6F 67 72 61 6D for the program
012670: 0D 0A 20 20 20 20 20 20 6E 61 6D 65 2E 20 20 41 .. name. A
012680: 66 74 65 72 20 74 68 65 20 6D 61 69 6E 20 70 72 fter the main pr
012690: 6F 67 72 61 6D 20 68 61 73 20 62 65 65 6E 20 70 ogram has been p
0126A0: 72 6F 63 65 73 73 65 64 2C 20 74 68 65 20 20 75 rocessed, the u
0126B0: 73 65 72 20 20 77 69 6C 6C 20 20 62 65 0D 0A 20 ser will be..
0126C0: 20 20 20 20 20 70 72 6F 6D 70 74 65 64 20 20 74 prompted t
0126D0: 6F 20 20 73 65 6C 65 63 74 20 20 77 68 69 63 68 o select which
0126E0: 20 6F 66 20 74 68 65 20 65 78 74 65 72 6E 61 6C of the external
0126F0: 20 70 72 6F 63 65 64 75 72 65 73 20 74 6F 20 6D procedures to m
012700: 74 6F 20 77 72 69 74 65 20 64 61 74 61 20 74 6F to write data to
012710: 20 61 20 72 61 6E 64 6F 6D 20 66 69 6C 65 20 20 a random file
012720: 62 79 20 20 67 69 76 69 6E 67 20 20 74 68 65 0D by giving the.
012730: 0A 20 20 20 20 20 20 72 65 6C 61 74 69 76 65 20 . relative
012740: 20 62 79 74 65 20 20 61 64 64 72 65 73 73 20 28 byte address (
012750: 52 42 41 29 20 61 74 20 77 68 69 63 68 20 74 68 RBA) at which th
012760: 65 20 64 61 74 61 20 69 73 20 74 6F 20 62 65 20 e data is to be
012770: 73 74 6F 72 65 64 2E 20 20 54 68 65 0D 0A 20 20 stored. The..
012780: 20 20 20 20 66 69 72 73 74 20 62 79 74 65 20 6F first byte o
012790: 66 20 74 68 65 20 20 66 69 6C 65 20 20 69 73 20 f the file is
0127A0: 20 61 74 20 20 52 42 41 3D 30 2E 20 20 20 54 68 at RBA=0. Th
0127B0: 65 20 20 64 61 74 61 20 20 77 69 6C 6C 20 20 62 e data will b
0127C0: 65 20 20 73 74 6F 72 65 64 0D 0A 20 20 20 20 20 e stored..
0127D0: 20 62 65 67 69 6E 6E 69 6E 67 20 61 74 20 74 68 beginning at th
0127E0: 65 20 73 70 65 63 69 66 69 65 64 20 52 42 41 20 e specified RBA
0127F0: 61 6E 64 20 63 6F 6E 74 69 6E 75 69 6E 67 20 75 and continuing u
012800: 6E 74 69 6C 20 69 74 20 69 73 20 61 6C 6C 20 77 ntil it is all w
012810: 72 69 74 74 65 6E 0D 0A 20 20 20 20 20 20 6F 75 ritten.. ou
012820: 74 2E 20 20 20 54 68 65 20 20 66 69 6C 65 20 20 t. The file
012830: 6D 75 73 74 20 20 68 61 76 65 20 20 62 65 65 6E must have been
012840: 20 20 73 75 63 63 65 73 73 66 75 6C 6C 79 20 6F successfully o
012850: 70 65 6E 65 64 20 77 69 74 68 20 74 68 65 20 4F pened with the O
012860: 50 45 4E 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 PEN.. proce
012870: 64 75 72 65 2E 20 20 20 52 61 6E 64 6F 6D 20 20 dure. Random
012880: 70 72 6F 63 65 73 73 69 6E 67 20 20 63 61 6E 6E processing cann
012890: 6F 74 20 20 62 65 20 20 6D 69 78 65 64 20 20 77 ot be mixed w
0128A0: 69 74 68 20 20 20 73 65 71 75 65 6E 74 69 61 6C ith sequential
0128B0: 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 73 73 69 .. processi
0128C0: 6E 67 20 62 75 74 20 52 52 4E 20 61 6E 64 20 52 ng but RRN and R
0128D0: 42 41 20 70 72 6F 63 65 73 73 69 6E 67 20 63 61 BA processing ca
0128E0: 6E 20 62 65 20 6D 69 78 65 64 20 77 69 74 68 6F n be mixed witho
0128F0: 75 74 20 72 65 2D 6F 70 65 6E 69 6E 67 0D 0A 20 ut re-opening..
012900: 65 72 67 65 2E 20 20 54 68 65 0D 0A 20 20 20 20 erge. The..
012910: 20 20 70 72 6F 63 65 64 75 72 65 73 20 72 65 66 procedures ref
012920: 65 72 65 6E 63 65 64 20 62 79 20 74 68 69 73 20 erenced by this
012930: 20 70 72 6F 67 72 61 6D 20 20 77 69 6C 6C 20 20 program will
012940: 62 65 20 20 6C 69 73 74 65 64 20 20 77 69 74 68 be listed with
012950: 20 20 74 68 65 69 72 0D 0A 20 20 20 20 20 20 69 their.. i
012960: 64 65 6E 74 69 66 69 63 61 74 69 6F 6E 20 20 6E dentification n
012970: 75 6D 62 65 72 73 20 20 28 31 20 74 6F 20 36 33 umbers (1 to 63
012980: 29 2E 20 20 41 6E 20 61 73 74 65 72 69 73 6B 20 ). An asterisk
012990: 69 6E 64 69 63 61 74 65 73 20 70 72 6F 63 65 64 indicates proced
0129A0: 75 72 65 73 0D 0A 20 20 20 20 20 20 73 65 6C 65 ures.. sele
0129B0: 63 74 65 64 2E 20 20 50 6F 73 73 69 62 6C 65 20 cted. Possible
0129C0: 72 65 70 6C 69 65 73 20 74 6F 20 74 68 65 20 27 replies to the '
0129D0: 50 72 6F 63 65 64 75 72 65 20 73 65 6C 65 63 74 Procedure select
0129E0: 69 6F 6E 27 20 6D 65 73 73 61 67 65 20 20 61 72 ion' message ar
0129F0: 65 0D 0A 20 20 20 20 20 20 6C 69 73 74 65 64 20 e.. listed
012A00: 20 62 65 6C 6F 77 2E 20 20 20 4D 6F 72 65 20 20 below. More
012A10: 74 68 61 6E 20 20 6F 6E 65 20 20 6E 75 6D 62 65 than one numbe
012A20: 72 20 20 6D 61 79 20 20 62 65 20 20 65 6E 74 65 r may be ente
012A30: 72 65 64 20 65 61 63 68 20 74 69 6D 65 2C 0D 0A red each time,..
012A40: 20 20 20 20 20 20 73 65 70 61 72 61 74 65 64 20 separated
012A50: 62 79 20 73 70 61 63 65 73 2E 20 20 45 6E 74 65 by spaces. Ente
012A60: 72 69 6E 67 20 7A 65 72 6F 20 65 6E 64 73 20 74 ring zero ends t
012A70: 68 65 20 69 6E 74 65 72 61 63 74 69 76 65 20 70 he interactive p
012A80: 6F 72 74 69 6F 6E 20 20 61 6E 64 0D 0A 20 20 20 ortion and..
012A90: 20 20 20 63 61 75 73 65 73 20 6D 65 72 67 65 20 causes merge
012AA0: 70 72 6F 63 65 73 73 69 6E 67 20 74 6F 20 62 65 processing to be
012AB0: 67 69 6E 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 gin.....
012AC0: 20 20 20 20 20 20 20 20 20 20 72 65 70 6C 79 20 reply
012AD0: 20 20 20 20 20 20 70 75 72 70 6F 73 65 0D 0A 20 purpose..
012AE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
012AF0: 20 2D 2D 2D 2D 2D 20 20 20 20 20 20 20 2D 2D 2D ----- ---
012B00: 20 20 20 20 20 74 68 65 20 66 69 6C 65 2E 0D 0A the file...
012B10: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 57 68 65 .. Whe
012B20: 6E 20 20 70 72 6F 63 65 73 73 69 6E 67 20 69 6E n processing in
012B30: 20 74 65 78 74 20 6D 6F 64 65 2C 20 61 20 63 6F text mode, a co
012B40: 6E 76 65 6E 69 65 6E 74 20 66 6F 72 6D 61 74 74 nvenient formatt
012B50: 69 6E 67 20 6F 70 74 69 6F 6E 20 69 73 0D 0A 20 ing option is..
012B60: 20 20 20 20 20 61 76 61 69 6C 61 62 6C 65 2E 20 available.
012B70: 20 41 6E 79 20 6F 66 20 74 68 65 20 76 61 72 69 Any of the vari
012B80: 61 62 6C 65 73 20 69 6E 20 74 68 65 20 57 52 49 ables in the WRI
012B90: 54 45 20 70 61 72 61 6D 65 74 65 72 20 6C 69 73 TE parameter lis
012BA0: 74 20 20 6D 61 79 20 20 62 65 0D 0A 20 20 20 20 t may be..
012BB0: 20 20 73 75 66 66 69 78 65 64 20 20 77 69 74 68 suffixed with
012BC0: 20 61 20 63 6F 6C 6F 6E 20 61 6E 64 20 61 6E 20 a colon and an
012BD0: 69 6E 74 65 67 65 72 20 65 78 70 72 65 73 73 69 integer expressi
012BE0: 6F 6E 2E 20 20 54 68 69 73 20 73 70 65 63 69 66 on. This specif
012BF0: 69 65 73 20 74 68 65 0D 0A 20 20 20 20 20 20 66 ies the.. f
012C00: 69 65 6C 64 20 77 69 64 74 68 20 6F 66 20 74 68 ield width of th
012C10: 65 20 64 61 74 61 20 76 61 6C 75 65 20 62 65 69 e data value bei
012C20: 6E 67 20 77 72 69 74 74 65 6E 2E 20 20 49 46 20 ng written. IF
012C30: 20 74 68 65 20 20 64 61 74 61 20 20 69 74 65 6D the data item
012C40: 20 20 69 73 0D 0A 20 20 20 20 20 20 73 68 6F 72 is.. shor
012C50: 74 65 72 20 20 74 68 61 6E 20 20 74 68 69 73 20 ter than this
012C60: 20 74 68 65 6E 20 20 73 70 61 63 65 73 20 77 69 then spaces wi
012C70: 6C 6C 20 62 65 20 69 6E 73 65 72 74 65 64 20 6F ll be inserted o
012C80: 6E 20 74 68 65 20 6C 65 66 74 20 6F 66 20 74 68 n the left of th
012C90: 65 0D 0A 20 20 20 20 20 20 69 74 65 6D 2E 20 20 e.. item.
012CA0: 54 68 69 73 20 6F 70 74 69 6F 6E 20 69 73 20 75 This option is u
012CB0: 73 65 64 20 77 68 65 6E 20 63 6F 6C 75 6D 6E 73 sed when columns
012CC0: 20 6F 66 20 66 69 67 75 72 65 73 20 6D 75 73 74 of figures must
012CD0: 20 62 65 20 61 6C 69 67 6E 65 64 2E 0D 0A 0D 0A be aligned.....
012CE0: 20 20 20 20 20 20 20 20 20 20 20 41 20 73 65 63 A sec
012CF0: 6F 6E 64 20 6F 70 74 69 6F 6E 20 69 73 20 61 76 ond option is av
012D00: 2D 2D 2D 2D 2D 0D 0A 20 20 20 20 20 20 20 20 20 -----..
012D10: 20 20 20 20 20 20 20 20 20 31 20 74 6F 20 36 33 1 to 63
012D20: 20 20 20 20 20 73 65 6C 65 63 74 20 74 68 69 73 select this
012D30: 20 70 72 6F 63 65 64 75 72 65 0D 0A 20 20 20 20 procedure..
012D40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 36 -6
012D50: 33 20 74 6F 20 2D 31 20 20 20 64 65 2D 73 65 6C 3 to -1 de-sel
012D60: 65 63 74 20 74 68 69 73 20 70 72 6F 63 65 64 75 ect this procedu
012D70: 72 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 re..
012D80: 20 20 20 20 20 20 31 30 30 20 20 20 20 20 20 20 100
012D90: 20 20 73 65 6C 65 63 74 20 61 6C 6C 20 70 72 6F select all pro
012DA0: 63 65 64 75 72 65 73 0D 0A 20 20 20 20 20 20 20 cedures..
012DB0: 20 20 20 20 20 20 20 20 20 20 20 2D 31 30 30 20 -100
012DC0: 20 20 20 20 20 20 20 72 65 73 65 74 2C 20 73 65 reset, se
012DD0: 6C 65 63 74 20 6E 6F 6E 65 0D 0A 20 20 20 20 20 lect none..
012DE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 20 0
012DF0: 20 20 20 20 20 20 20 20 20 65 6E 64 20 73 65 6C end sel
012E00: 65 63 74 69 6F 6E 2C 20 62 65 67 69 6E 20 6D 65 ection, begin me
012E10: 72 67 65 20 70 72 6F 63 65 73 73 69 6E 67 0D 0A rge processing..
012E20: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 65 .. The
012E30: 20 20 6F 75 74 70 75 74 20 20 6D 6F 64 75 6C 65 output module
012E40: 20 66 69 6C 65 20 77 69 6C 6C 20 68 61 76 65 20 file will have
012E50: 74 68 65 20 73 61 6D 65 20 66 69 6C 65 6E 61 6D the same filenam
012E60: 65 20 61 73 20 74 68 65 20 6D 61 69 6E 0D 0A 20 e as the main..
012E70: 20 20 20 20 20 70 72 6F 67 72 61 6D 20 61 6E 64 program and
012E80: 20 61 20 66 69 6C 65 74 79 70 65 20 6F 66 20 27 a filetype of '
012E90: 2E 49 4E 54 27 2E 20 20 54 68 65 20 66 69 6C 65 .INT'. The file
012EA0: 74 79 70 65 20 6F 66 20 74 68 65 20 20 6D 61 69 type of the mai
012EB0: 6E 20 20 70 72 6F 67 72 61 6D 0D 0A 20 20 20 20 n program..
012EC0: 20 20 77 69 6C 6C 20 20 62 65 20 20 72 65 6E 61 will be rena
012ED0: 6D 65 64 20 20 74 6F 20 27 2E 49 4E 32 27 2E 20 med to '.IN2'.
012EE0: 20 49 66 20 61 6E 79 20 6F 66 20 74 68 65 20 73 If any of the s
012EF0: 65 6C 65 63 74 65 64 20 69 6E 70 75 74 20 70 72 elected input pr
012F00: 61 69 6C 61 62 6C 65 20 66 6F 72 20 72 65 61 6C ailable for real
012F10: 20 6E 75 6D 62 65 72 73 2E 20 20 41 66 74 65 72 numbers. After
012F20: 20 74 68 65 20 20 66 69 65 6C 64 0D 0A 20 20 20 the field..
012F30: 20 20 20 77 69 64 74 68 20 20 69 6E 74 65 67 65 width intege
012F40: 72 20 20 65 78 70 72 65 73 73 69 6F 6E 2C 20 61 r expression, a
012F50: 20 73 65 63 6F 6E 64 20 63 6F 6C 6F 6E 20 61 6E second colon an
012F60: 64 20 69 6E 74 65 67 65 72 20 65 78 70 72 65 73 d integer expres
012F70: 73 69 6F 6E 20 6D 61 79 0D 0A 20 20 20 20 20 20 sion may..
012F80: 62 65 20 75 73 65 64 20 74 6F 20 69 6E 64 69 63 be used to indic
012F90: 61 74 65 20 74 68 65 20 6E 75 6D 62 65 72 20 6F ate the number o
012FA0: 66 20 64 69 67 69 74 73 20 72 69 67 68 74 20 6F f digits right o
012FB0: 66 20 74 68 65 20 20 64 65 63 69 6D 61 6C 20 20 f the decimal
012FC0: 70 6C 61 63 65 0D 0A 20 20 20 20 20 20 74 6F 20 place.. to
012FD0: 62 65 20 64 69 73 70 6C 61 79 65 64 2E 0D 0A 0D be displayed....
012FE0: 0A 0D 0A 20 20 20 20 20 20 45 78 61 6D 70 6C 65 ... Example
012FF0: 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 s:....
013000: 20 20 20 20 20 20 20 20 57 52 49 54 45 4C 4E 28 WRITELN(
013010: 20 27 54 48 45 20 54 49 4D 45 20 49 53 20 27 2C 'THE TIME IS ',
013020: 47 45 54 5F 54 49 4D 45 20 29 3B 0D 0A 0D 0A 20 GET_TIME );....
013030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
013040: 20 57 52 49 54 45 28 20 44 41 54 41 5F 46 49 4C WRITE( DATA_FIL
013050: 45 3B 20 58 5B 31 5D 2C 20 58 5B 32 5D 2C 20 58 E; X[1], X[2], X
013060: 5B 33 5D 20 29 3B 0D 0A 0D 0A 20 20 20 20 20 20 [3] );....
013070: 20 20 20 20 20 20 20 20 20 20 20 20 46 4F 52 20 FOR
013080: 49 3A 3D 31 20 54 4F 20 31 30 30 20 44 4F 0D 0A I:=1 TO 100 DO..
013090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0130A0: 20 20 20 20 20 20 20 20 57 52 49 54 45 28 20 44 WRITE( D
0130B0: 41 54 41 5F 46 49 4C 45 3B 20 58 5B 31 5D 20 29 ATA_FILE; X[1] )
0130C0: 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ;....
0130D0: 20 20 20 20 20 20 20 49 46 20 44 41 54 41 20 3C IF DATA <
0130E0: 20 30 20 54 48 45 4E 0D 0A 20 20 20 20 20 20 20 0 THEN..
0130F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
013100: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
013110: 10 00 00 00 02 09 2A E5 10 00 C1 02 00 00 00 02 ......*.........
013120: 10 00 C6 02 00 00 00 02 10 00 C2 02 00 00 00 02 ................
013130: 10 00 C7 02 00 00 00 02 10 00 C3 02 00 00 00 02 ................
013140: 10 00 C8 02 00 00 00 02 10 00 C4 02 00 00 00 02 ................
013150: 10 00 C9 02 00 00 00 02 10 00 C5 02 00 00 00 02 ................
013160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
013170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
013180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
013190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0131F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
013200: 6F 63 65 64 75 72 65 0D 0A 20 20 20 20 20 20 66 ocedure.. f
013210: 69 6C 65 73 20 61 72 65 20 6E 6F 74 20 70 72 65 iles are not pre
013220: 73 65 6E 74 2C 20 61 20 72 75 6E 2D 74 69 6D 65 sent, a run-time
013230: 20 65 72 72 6F 72 20 77 69 6C 6C 20 20 6F 63 63 error will occ
013240: 75 72 20 20 61 6E 64 20 20 74 68 65 20 20 6C 69 ur and the li
013250: 6E 6B 65 72 0D 0A 20 20 20 20 20 20 77 69 6C 6C nker.. will
013260: 20 74 65 72 6D 69 6E 61 74 65 2E 20 20 41 6C 6C terminate. All
013270: 20 66 69 6C 65 73 20 6D 75 73 74 20 62 65 20 70 files must be p
013280: 72 65 73 65 6E 74 20 6F 6E 20 74 68 65 20 41 3A resent on the A:
013290: 20 64 69 73 6B 2E 0D 0A 0D 0A 20 20 20 20 20 20 disk.....
0132A0: 39 2E 20 20 43 75 73 74 6F 6D 69 7A 0D 0A 0D 0A 9. Customiz....
0132B0: 20 20 20 20 20 20 20 20 20 20 20 45 78 74 65 72 Exter
0132C0: 6E 61 6C 20 20 70 72 6F 63 65 64 75 72 65 73 20 nal procedures
0132D0: 20 61 6E 64 20 66 75 6E 63 74 69 6F 6E 73 20 61 and functions a
0132E0: 72 65 20 63 6F 6D 70 69 6C 65 64 20 73 65 70 61 re compiled sepa
0132F0: 72 61 74 65 6C 79 20 66 72 6F 6D 0D 0A 20 20 20 rately from..
013300: 20 20 20 74 68 65 20 6D 61 69 6E 20 70 72 6F 67 the main prog
013310: 72 61 6D 2E 20 20 54 68 65 79 20 63 61 6E 20 62 ram. They can b
013320: 65 20 6C 69 6E 6B 65 64 20 74 6F 67 65 74 68 65 e linked togethe
013330: 72 20 77 69 74 68 20 74 68 65 20 6D 61 69 6E 20 r with the main
013340: 20 70 72 6F 67 72 61 6D 0D 0A 20 20 20 20 20 20 program..
013350: 75 73 69 6E 67 20 20 74 68 65 20 20 4C 69 6E 6B using the Link
013360: 65 72 20 20 28 73 65 63 74 69 6F 6E 20 38 20 6F er (section 8 o
013370: 66 20 74 68 69 73 20 6D 61 6E 75 61 6C 29 2E 20 f this manual).
013380: 20 49 66 20 74 68 69 73 20 69 73 20 6E 6F 74 20 If this is not
013390: 64 6F 6E 65 2C 0D 0A 20 20 20 20 20 20 74 68 65 done,.. the
0133A0: 79 20 77 69 6C 6C 20 62 65 20 61 75 74 6F 6D 61 y will be automa
0133B0: 74 69 63 61 6C 6C 79 20 6C 6F 61 64 65 64 20 66 tically loaded f
0133C0: 72 6F 6D 20 64 69 73 6B 20 69 6E 74 6F 20 74 68 rom disk into th
0133D0: 65 20 63 6F 6D 70 75 74 65 72 27 73 20 20 6D 61 e computer's ma
0133E0: 69 6E 0D 0A 20 20 20 20 20 20 73 74 6F 72 61 67 in.. storag
0133F0: 65 20 20 77 68 65 6E 20 20 74 68 65 79 20 20 61 e when they a
013400: 2C 20 73 75 63 68 20 61 73 20 20 52 4D 41 43 20 , such as RMAC
013410: 20 6F 72 20 20 4D 41 43 52 4F 2D 38 30 2E 20 20 or MACRO-80.
013420: 20 54 68 65 20 20 20 43 4F 4E 56 45 52 54 4D 0D The CONVERTM.
013430: 0A 20 20 20 20 20 20 75 74 69 6C 69 74 79 20 20 . utility
013440: 63 6F 6E 76 65 72 74 73 20 20 74 68 65 20 20 27 converts the '
013450: 2E 52 45 4C 27 20 66 69 6C 65 73 20 70 72 6F 64 .REL' files prod
013460: 75 63 65 64 20 62 79 20 74 68 65 73 65 20 74 77 uced by these tw
013470: 6F 20 61 73 73 65 6D 62 6C 65 72 73 0D 0A 20 20 o assemblers..
013480: 20 20 20 20 69 6E 74 6F 20 27 2E 49 4E 54 27 20 into '.INT'
013490: 66 6F 72 6D 61 74 20 66 69 6C 65 73 20 77 68 69 format files whi
0134A0: 63 68 20 6D 61 79 20 62 65 20 61 63 63 65 73 73 ch may be access
0134B0: 65 64 20 61 73 20 65 78 74 65 72 6E 61 6C 20 70 ed as external p
0134C0: 72 6F 63 65 64 75 72 65 73 0D 0A 20 20 20 20 20 rocedures..
0134D0: 20 28 73 65 65 20 73 65 63 74 69 6F 6E 20 31 30 (see section 10
0134E0: 2E 37 20 6F 66 20 74 68 69 73 20 6D 61 6E 75 61 .7 of this manua
0134F0: 6C 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 l).....
013500: 20 20 54 68 65 20 4A 52 54 20 61 73 73 65 6D 62 The JRT assemb
013510: 6C 65 72 20 74 72 61 6E 73 6C 61 74 65 73 20 38 ler translates 8
013520: 30 38 30 20 20 61 73 73 65 6D 62 6C 79 20 20 6C 080 assembly l
013530: 61 6E 67 75 61 67 65 20 20 69 6E 74 6F 20 20 4A anguage into J
013540: 52 54 0D 0A 20 20 20 20 20 20 72 65 6C 6F 63 61 RT.. reloca
013550: 74 61 62 6C 65 20 20 66 6F 72 6D 61 74 20 20 6D table format m
013560: 6F 64 75 6C 65 73 2E 20 20 20 54 68 65 73 65 20 odules. These
013570: 20 6D 6F 64 75 6C 65 73 20 20 63 61 6E 20 20 62 modules can b
013580: 65 20 63 61 6C 6C 65 64 20 66 72 6F 6D 20 61 0D e called from a.
013590: 0A 20 20 20 20 20 20 50 61 73 63 61 6C 20 20 70 . Pascal p
0135A0: 72 6F 67 72 61 6D 20 20 61 73 20 20 69 66 20 20 rogram as if
0135B0: 74 68 65 79 20 20 77 65 72 65 20 20 20 50 61 73 they were Pas
0135C0: 63 61 6C 20 20 20 65 78 74 65 72 6E 61 6C 20 20 cal external
0135D0: 20 70 72 6F 63 65 64 75 72 65 73 2E 0D 0A 20 20 procedures...
0135E0: 20 20 20 20 50 61 72 61 6D 65 74 65 72 73 20 20 Parameters
0135F0: 6D 61 79 20 20 62 65 20 20 70 61 73 73 65 64 20 may be passed
013600: 72 65 20 20 66 69 72 73 74 20 20 72 65 66 65 72 re first refer
013610: 65 6E 63 65 64 2E 20 20 20 49 66 20 20 61 20 73 enced. If a s
013620: 68 6F 72 74 2D 6F 6E 2D 73 74 6F 72 61 67 65 0D hort-on-storage.
013630: 0A 20 20 20 20 20 20 63 6F 6E 64 69 74 69 6F 6E . condition
013640: 20 61 72 69 73 65 73 2C 20 74 68 65 79 20 6D 61 arises, they ma
013650: 79 20 62 65 20 70 75 72 67 65 64 20 66 72 6F 6D y be purged from
013660: 20 73 74 6F 72 61 67 65 20 20 69 66 20 20 74 68 storage if th
013670: 65 79 20 20 61 72 65 20 20 6E 6F 74 0D 0A 20 20 ey are not..
013680: 20 20 20 20 63 75 72 72 65 6E 74 6C 79 20 61 63 currently ac
013690: 74 69 76 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 tive.....
0136A0: 20 20 20 20 50 72 6F 63 65 64 75 72 65 73 20 20 Procedures
0136B0: 77 68 69 63 68 20 20 61 72 65 20 72 61 72 65 6C which are rarel
0136C0: 79 20 75 73 65 64 2C 20 6C 69 6B 65 20 69 6E 69 y used, like ini
0136D0: 74 69 61 6C 69 7A 61 74 69 6F 6E 20 6F 72 20 65 tialization or e
0136E0: 72 72 6F 72 0D 0A 20 20 20 20 20 20 68 61 6E 64 rror.. hand
0136F0: 6C 69 6E 67 2C 20 77 6F 75 6C 64 20 6E 6F 74 20 ling, would not
013700: 6F 63 63 75 70 79 20 6D 61 69 6E 20 73 74 6F 72 occupy main stor
013710: 61 67 65 20 65 78 63 65 70 74 20 20 77 68 65 6E age except when
013720: 20 20 6E 65 65 64 65 64 2E 20 20 20 41 6C 73 6F needed. Also
013730: 2C 0D 0A 20 20 20 20 20 20 76 65 72 79 20 20 6C ,.. very l
013740: 61 72 67 65 20 20 70 72 6F 67 72 61 6D 73 20 20 arge programs
013750: 6D 69 67 68 74 20 20 62 65 20 20 64 69 76 69 64 might be divid
013760: 65 64 20 20 69 6E 74 6F 20 20 73 65 76 65 72 61 ed into severa
013770: 6C 20 70 68 61 73 65 73 2C 20 65 61 63 68 0D 0A l phases, each..
013780: 20 20 20 20 20 20 63 6F 72 72 65 73 70 6F 6E 64 correspond
013790: 69 6E 67 20 74 6F 20 61 6E 20 65 78 74 65 72 6E ing to an extern
0137A0: 61 6C 20 70 72 6F 63 65 64 75 72 65 2E 0D 0A 0D al procedure....
0137B0: 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 . The
0137C0: 45 58 45 43 20 6C 6F 61 64 73 20 74 68 65 20 65 EXEC loads the e
0137D0: 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 xternal procedur
0137E0: 65 73 20 66 72 6F 6D 20 64 69 73 6B 2E 20 20 54 es from disk. T
0137F0: 68 65 72 65 20 20 69 73 20 20 6E 6F 0D 0A 20 20 here is no..
013800: 74 6F 20 74 68 65 6D 20 61 6E 64 20 66 75 6E 63 to them and func
013810: 74 69 6F 6E 20 72 65 74 75 72 6E 20 76 61 6C 75 tion return valu
013820: 65 73 20 6D 61 79 20 62 65 0D 0A 20 20 20 20 20 es may be..
013830: 20 72 65 63 65 69 76 65 64 2E 0D 0A 0D 0A 20 20 received.....
013840: 20 20 20 20 20 20 20 20 20 54 68 65 20 4A 52 54 The JRT
013850: 20 20 61 73 73 65 6D 62 6C 65 72 20 20 69 73 20 assembler is
013860: 20 63 6F 6D 70 61 74 69 62 6C 65 20 20 77 69 74 compatible wit
013870: 68 20 20 74 68 65 20 20 73 74 61 6E 64 61 72 64 h the standard
013880: 20 20 41 53 4D 2E 43 4F 4D 0D 0A 20 20 20 20 20 ASM.COM..
013890: 20 70 72 6F 67 72 61 6D 20 20 64 69 73 74 72 69 program distri
0138A0: 62 75 74 65 64 20 77 69 74 68 20 43 50 2F 4D 2E buted with CP/M.
0138B0: 20 20 49 6E 70 75 74 20 66 69 6C 65 73 20 6D 75 Input files mu
0138C0: 73 74 20 68 61 76 65 20 61 20 66 69 6C 65 20 74 st have a file t
0138D0: 79 70 65 20 6F 66 0D 0A 20 20 20 20 20 20 27 2E ype of.. '.
0138E0: 41 53 4D 27 2E 20 20 54 68 65 20 61 73 73 65 6D ASM'. The assem
0138F0: 62 6C 65 72 20 6F 75 74 70 75 74 20 69 73 20 61 bler output is a
013900: 20 66 69 6C 65 20 6F 66 20 74 79 70 65 20 27 2E file of type '.
013910: 49 4E 54 27 2C 20 77 68 69 63 68 20 6D 61 79 20 INT', which may
013920: 20 62 65 0D 0A 20 20 20 20 20 20 6C 69 6E 6B 65 be.. linke
013930: 64 20 77 69 74 68 20 74 68 65 20 6D 61 69 6E 20 d with the main
013940: 70 72 6F 67 72 61 6D 20 6F 72 20 61 75 74 6F 6D program or autom
013950: 61 74 69 63 61 6C 6C 79 20 6C 6F 61 64 65 64 20 atically loaded
013960: 61 74 20 72 75 6E 2D 74 69 6D 65 2E 0D 0A 0D 0A at run-time.....
013970: 0D 0A 20 20 20 20 20 20 31 30 2E 31 20 20 45 6E .. 10.1 En
013980: 74 72 79 20 63 6F 64 65 73 0D 0A 0D 0A 20 20 20 try codes....
013990: 20 20 20 20 20 20 20 20 41 66 74 65 72 20 20 61 After a
0139A0: 6E 20 20 65 78 74 65 72 6E 61 6C 20 20 70 72 6F n external pro
0139B0: 63 65 64 75 72 65 20 69 73 20 6C 6F 61 64 65 64 cedure is loaded
0139C0: 20 69 6E 74 6F 20 6D 61 69 6E 20 73 74 6F 72 61 into main stora
0139D0: 67 65 2C 20 45 58 45 43 0D 0A 20 20 20 20 20 20 ge, EXEC..
0139E0: 74 72 61 6E 73 66 65 72 73 20 63 6F 6E 74 72 6F transfers contro
0139F0: 6C 20 74 6F 20 69 74 2E 20 20 41 20 66 69 76 65 l to it. A five
013A00: 20 20 20 20 6E 65 65 64 20 20 74 6F 20 20 69 6E need to in
013A10: 66 6F 72 6D 20 20 45 58 45 43 20 6F 6E 20 77 68 form EXEC on wh
013A20: 69 63 68 20 64 69 73 6B 20 65 61 63 68 20 70 72 ich disk each pr
013A30: 6F 63 65 64 75 72 65 20 72 65 73 69 64 65 73 20 ocedure resides
013A40: 2D 20 69 74 20 77 69 6C 6C 0D 0A 20 20 20 20 20 - it will..
013A50: 20 73 65 61 72 63 68 20 66 6F 72 20 74 68 65 6D search for them
013A60: 2E 20 20 54 68 69 73 20 6D 65 61 6E 73 20 74 68 . This means th
013A70: 61 74 20 79 6F 75 20 64 6F 20 4E 4F 54 20 20 68 at you do NOT h
013A80: 61 76 65 20 20 74 6F 20 20 70 75 74 20 20 61 6C ave to put al
013A90: 6C 20 20 74 68 65 0D 0A 20 20 20 20 20 20 70 72 l the.. pr
013AA0: 6F 67 72 61 6D 20 73 65 63 74 69 6F 6E 73 20 6F ogram sections o
013AB0: 6E 74 6F 20 74 68 65 20 41 3A 20 64 69 73 6B 2E nto the A: disk.
013AC0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 45 .... E
013AD0: 58 45 43 20 20 61 6E 64 20 20 74 68 65 20 20 63 XEC and the c
013AE0: 6F 6D 70 69 6C 65 72 2C 20 20 4A 52 54 50 41 53 ompiler, JRTPAS
013AF0: 33 2C 20 20 63 6F 6E 74 61 69 6E 20 27 64 69 73 3, contain 'dis
013B00: 6B 20 73 65 61 72 63 68 20 6C 69 73 74 73 27 0D k search lists'.
013B10: 0A 20 20 20 20 20 20 77 68 69 63 68 20 73 70 65 . which spe
013B20: 63 69 66 79 20 77 68 69 63 68 20 64 69 73 6B 73 cify which disks
013B30: 20 61 72 65 20 61 76 61 69 6C 61 62 6C 65 20 6F are available o
013B40: 6E 20 74 68 65 20 20 73 79 73 74 65 6D 2E 20 20 n the system.
013B50: 54 68 65 20 20 64 65 66 61 75 6C 74 0D 0A 20 20 The default..
013B60: 20 20 20 20 6C 69 73 74 73 20 20 61 72 65 20 20 lists are
013B70: 73 65 74 20 20 74 6F 20 20 27 41 42 27 2C 20 20 set to 'AB',
013B80: 69 2E 65 2E 2C 20 20 64 72 69 76 65 73 20 41 3A i.e., drives A:
013B90: 20 61 6E 64 20 42 3A 2E 20 20 54 68 65 20 73 65 and B:. The se
013BA0: 61 63 68 20 6C 69 73 74 73 0D 0A 20 20 20 20 20 ach lists..
013BB0: 20 73 68 6F 75 6C 64 20 62 65 20 20 6D 6F 64 69 should be modi
013BC0: 66 69 65 64 20 20 74 6F 20 20 72 65 66 6C 65 63 fied to reflec
013BD0: 74 20 20 74 68 65 20 20 68 61 72 64 77 61 72 65 t the hardware
013BE0: 20 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 2E configuration.
013BF0: 20 20 20 54 68 65 0D 0A 20 20 20 20 20 20 43 75 The.. Cu
013C00: 20 62 79 74 65 20 63 6F 64 65 20 28 39 35 2C 36 byte code (95,6
013C10: 2C 30 2C 39 32 2C 30 29 20 69 73 20 70 6C 61 63 ,0,92,0) is plac
013C20: 65 64 20 61 74 0D 0A 20 20 20 20 20 20 74 68 65 ed at.. the
013C30: 20 73 74 61 72 74 20 6F 66 20 74 68 65 20 70 72 start of the pr
013C40: 6F 63 65 64 75 72 65 20 74 6F 20 69 6E 66 6F 72 ocedure to infor
013C50: 6D 20 45 58 45 43 20 74 68 61 74 20 74 68 69 73 m EXEC that this
013C60: 20 69 73 20 20 61 6E 20 20 61 73 73 65 6D 62 6C is an assembl
013C70: 65 72 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 64 er.. proced
013C80: 75 72 65 20 20 72 61 74 68 65 72 20 20 74 68 61 ure rather tha
013C90: 6E 20 50 61 73 63 61 6C 2E 20 20 54 68 65 20 70 n Pascal. The p
013CA0: 72 6F 63 65 64 75 72 65 20 6D 75 73 74 20 65 6E rocedure must en
013CB0: 64 20 77 69 74 68 20 61 20 72 65 74 75 72 6E 0D d with a return.
013CC0: 0A 20 20 20 20 20 20 28 52 45 54 29 20 69 6E 73 . (RET) ins
013CD0: 74 72 75 63 74 69 6F 6E 2E 20 20 41 6E 79 20 72 truction. Any r
013CE0: 65 67 69 73 74 65 72 73 20 45 58 43 45 50 54 20 egisters EXCEPT
013CF0: 74 68 65 20 38 30 38 30 20 73 74 61 63 6B 20 20 the 8080 stack
013D00: 70 6F 69 6E 74 65 72 20 20 6D 61 79 0D 0A 20 20 pointer may..
013D10: 20 20 20 20 62 65 20 6D 6F 64 69 66 69 65 64 2E be modified.
013D20: 0D 0A 0D 0A 20 20 20 20 20 20 45 78 61 6D 70 6C .... Exampl
013D30: 65 20 6F 66 20 65 6E 74 72 79 20 63 6F 64 65 73 e of entry codes
013D40: 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 :....
013D50: 20 20 20 20 20 20 20 3B 70 72 6F 63 65 64 75 72 ;procedur
013D60: 65 20 65 6E 74 72 79 0D 0A 20 20 20 20 20 20 20 e entry..
013D70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
013D80: 20 64 62 20 39 35 2C 36 2C 30 2C 39 32 2C 30 20 db 95,6,0,92,0
013D90: 20 20 20 3B 72 65 71 75 69 72 65 64 20 65 6E 74 ;required ent
013DA0: 72 79 20 63 6F 64 65 73 0D 0A 20 20 20 20 20 20 ry codes..
013DB0: 20 20 20 20 20 20 20 20 20 20 20 20 3B 0D 0A 20 ;..
013DC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
013DD0: 20 3B 73 65 6E 64 20 61 20 6D 65 73 73 61 67 65 ;send a message
013DE0: 20 74 6F 20 63 6F 6E 73 6F 6C 65 0D 0A 20 20 20 to console..
013DF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
013E00: 73 74 6F 6D 69 7A 20 20 70 72 6F 67 72 61 6D 20 stomiz program
013E10: 20 69 73 20 20 70 72 6F 76 69 64 65 64 20 20 74 is provided t
013E20: 6F 20 6D 6F 64 69 66 79 20 74 68 65 20 6C 69 73 o modify the lis
013E30: 74 73 20 69 6E 20 62 6F 74 68 20 45 58 45 43 20 ts in both EXEC
013E40: 61 6E 64 0D 0A 20 20 20 20 20 20 4A 52 54 50 41 and.. JRTPA
013E50: 53 32 20 73 69 6D 75 6C 74 61 6E 65 6F 75 73 6C S2 simultaneousl
013E60: 79 2E 20 20 42 65 66 6F 72 65 20 72 75 6E 6E 69 y. Before runni
013E70: 6E 67 20 43 75 73 74 6F 6D 69 7A 2C 20 62 65 20 ng Customiz, be
013E80: 73 75 72 65 20 20 74 68 61 74 20 20 62 6F 74 68 sure that both
013E90: 0D 0A 20 20 20 20 20 20 45 58 45 43 20 20 61 6E .. EXEC an
013EA0: 64 20 20 4A 52 54 50 41 53 33 20 20 61 72 65 20 d JRTPAS3 are
013EB0: 20 6E 6F 74 20 20 77 72 69 74 65 20 20 70 72 6F not write pro
013EC0: 74 65 63 74 65 64 20 20 66 69 6C 65 73 20 20 6F tected files o
013ED0: 72 20 20 6F 6E 20 61 20 77 72 69 74 65 0D 0A 20 r on a write..
013EE0: 20 20 20 20 20 70 72 6F 63 74 65 63 74 65 64 20 proctected
013EF0: 64 69 73 6B 20 6F 72 20 64 72 69 76 65 2E 20 20 disk or drive.
013F00: 54 6F 20 72 75 6E 20 43 75 73 74 6F 6D 69 7A 2C To run Customiz,
013F10: 20 65 6E 74 65 72 3A 0D 0A 0D 0A 20 20 20 20 20 enter:....
013F20: 20 20 20 20 20 20 20 20 20 20 20 20 20 45 58 45 EXE
013F30: 43 20 43 55 53 54 4F 4D 49 5A 0D 0A 0D 0A 20 20 C CUSTOMIZ....
013F40: 20 20 20 20 20 20 20 20 20 41 20 6E 65 77 20 64 A new d
013F50: 69 73 6B 20 73 65 61 72 63 68 20 6C 69 73 74 2C isk search list,
013F60: 20 77 69 74 68 20 75 70 20 74 6F 20 66 6F 75 72 with up to four
013F70: 20 20 64 69 73 6B 20 20 6C 65 74 74 65 72 73 2C disk letters,
013F80: 20 20 6D 61 79 20 20 62 65 0D 0A 20 20 20 20 20 may be..
013F90: 20 73 70 65 63 69 66 69 65 64 2E 20 20 20 54 68 specified. Th
013FA0: 65 20 6C 65 74 74 65 72 73 20 6D 75 73 74 20 62 e letters must b
013FB0: 65 20 63 6F 6E 74 69 67 75 6F 75 73 2E 20 4E 4F e contiguous. NO
013FC0: 54 45 20 74 68 61 74 20 74 68 69 73 20 6C 69 73 TE that this lis
013FD0: 74 20 61 6C 73 6F 0D 0A 20 20 20 20 20 20 64 65 t also.. de
013FE0: 74 65 72 6D 69 6E 65 73 20 74 68 65 20 53 45 51 termines the SEQ
013FF0: 55 45 4E 43 45 20 69 6E 20 77 68 69 63 68 20 20 UENCE in which
014000: 20 20 20 20 20 6D 76 69 20 63 2C 39 20 20 20 20 mvi c,9
014010: 20 20 20 20 20 20 20 3B 70 72 69 6E 74 20 62 75 ;print bu
014020: 66 66 65 72 20 63 6F 64 65 0D 0A 20 20 20 20 20 ffer code..
014030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
014040: 20 20 20 6C 78 69 20 64 2C 6D 73 67 20 20 20 20 lxi d,msg
014050: 20 20 20 20 20 3B 61 64 64 72 65 73 73 20 6F 66 ;address of
014060: 20 6D 65 73 73 61 67 65 0D 0A 20 20 20 20 20 20 message..
014070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
014080: 20 20 63 61 6C 6C 20 35 20 20 20 20 20 20 20 20 call 5
014090: 20 20 20 20 3B 62 64 6F 73 20 65 6E 74 72 79 20 ;bdos entry
0140A0: 70 6F 69 6E 74 0D 0A 20 20 20 20 20 20 20 20 20 point..
0140B0: 20 20 20 20 20 20 20 20 20 3B 0D 0A 20 20 20 20 ;..
0140C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0140D0: 20 20 20 20 72 65 74 20 20 20 20 20 20 20 20 20 ret
0140E0: 20 20 20 20 20 20 3B 65 6E 64 20 6F 66 20 70 72 ;end of pr
0140F0: 6F 63 65 64 75 72 65 0D 0A 20 20 20 20 20 20 20 ocedure..
014100: 20 20 20 20 20 20 20 20 20 20 20 3B 0D 0A 20 20 ;..
014110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
014120: 6D 73 67 20 20 20 64 62 20 27 4A 52 54 41 53 4D msg db 'JRTASM
014130: 20 73 61 6D 70 6C 65 20 70 72 6F 63 65 64 75 72 sample procedur
014140: 65 27 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 e'..
014150: 20 20 20 20 20 20 20 20 20 20 20 20 64 62 20 30 db 0
014160: 64 68 2C 30 61 68 2C 27 24 27 20 20 20 20 3B 63 dh,0ah,'$' ;c
014170: 61 72 72 69 61 67 65 20 72 65 74 75 72 6E 2F 6C arriage return/l
014180: 69 6E 65 20 66 65 65 64 0D 0A 20 20 20 20 20 20 ine feed..
014190: 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;
0141A0: 20 20 20 65 6E 64 0D 0A 0D 0A 20 20 20 20 20 20 end....
0141B0: 20 20 20 20 20 49 66 20 20 74 68 69 73 20 70 72 If this pr
0141C0: 6F 63 65 64 75 72 65 20 77 65 72 65 20 6E 61 6D ocedure were nam
0141D0: 65 64 20 53 41 4D 50 4C 45 2E 41 53 4D 20 74 68 ed SAMPLE.ASM th
0141E0: 65 6E 20 74 68 65 20 64 65 63 6C 61 72 61 74 69 en the declarati
0141F0: 6F 6E 20 69 6E 0D 0A 20 20 20 20 20 20 74 68 65 on in.. the
014200: 74 68 65 20 20 64 69 73 6B 73 20 20 61 72 65 20 the disks are
014210: 20 73 65 61 72 63 68 65 64 20 20 66 6F 72 20 20 searched for
014220: 74 68 65 0D 0A 20 20 20 20 20 20 65 78 74 65 72 the.. exter
014230: 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 73 20 61 nal procedures a
014240: 6E 64 20 66 75 6E 63 74 69 6F 6E 73 2E 0D 0A 0D nd functions....
014250: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
014260: 20 20 20 41 42 43 20 20 20 20 20 20 20 20 20 20 ABC
014270: 20 28 6E 6F 74 65 20 6E 6F 20 73 70 61 63 65 73 (note no spaces
014280: 20 62 65 74 77 65 65 6E 20 6C 65 74 74 65 72 73 between letters
014290: 29 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 31 30 2E )...... 10.
0142A0: 20 20 20 41 73 73 65 6D 62 6C 65 72 0D 0A 0D 0A Assembler....
0142B0: 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 4A The J
0142C0: 52 54 20 50 61 73 63 61 6C 20 73 79 73 74 65 6D RT Pascal system
0142D0: 20 70 72 6F 76 69 64 65 73 20 74 77 6F 20 6D 65 provides two me
0142E0: 74 68 6F 64 73 20 6F 66 20 70 72 65 70 61 72 69 thods of prepari
0142F0: 6E 67 20 65 78 74 65 72 6E 61 6C 0D 0A 20 20 20 ng external..
014300: 20 20 20 70 72 6F 63 65 64 75 72 65 73 20 20 61 procedures a
014310: 6E 64 20 20 66 75 6E 63 74 69 6F 6E 73 20 20 77 nd functions w
014320: 72 69 74 74 65 6E 20 20 69 6E 20 61 73 73 65 6D ritten in assem
014330: 62 6C 79 20 6C 61 6E 67 75 61 67 65 2E 20 20 41 bly language. A
014340: 20 73 70 65 63 69 61 6C 0D 0A 20 20 20 20 20 20 special..
014350: 70 75 72 70 6F 73 65 20 61 73 73 65 6D 62 6C 65 purpose assemble
014360: 72 20 69 73 20 70 72 6F 76 69 64 65 64 20 77 68 r is provided wh
014370: 69 63 68 20 67 65 6E 65 72 61 74 65 73 20 6D 6F ich generates mo
014380: 64 75 6C 65 73 20 69 6E 20 74 68 65 20 20 63 6F dules in the co
014390: 72 72 65 63 74 0D 0A 20 20 20 20 20 20 66 6F 72 rrect.. for
0143A0: 6D 61 74 2E 20 20 20 54 68 65 20 20 73 65 63 6F mat. The seco
0143B0: 6E 64 20 20 6D 65 74 68 6F 64 20 20 6D 61 79 20 nd method may
0143C0: 20 62 65 20 20 75 73 65 64 20 20 69 66 20 20 61 be used if a
0143D0: 20 20 4D 69 63 72 6F 73 6F 66 74 20 66 6F 72 6D Microsoft form
0143E0: 61 74 0D 0A 20 20 20 20 20 20 61 73 73 65 6D 62 at.. assemb
0143F0: 6C 65 72 20 69 73 20 61 76 61 69 6C 61 62 6C 65 ler is available
014400: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
014410: 11 00 00 00 02 09 2A E5 11 00 C1 02 00 00 00 02 ......*.........
014420: 11 00 C6 02 00 00 00 02 11 00 C2 02 00 00 00 02 ................
014430: 11 00 C7 02 00 00 00 02 11 00 C3 02 00 00 00 02 ................
014440: 11 00 C8 02 00 00 00 02 11 00 C4 02 00 00 00 02 ................
014450: 11 00 C9 02 00 00 00 02 11 00 C5 02 00 00 00 02 ................
014460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014500: 20 50 61 73 63 61 6C 20 70 72 6F 67 72 61 6D 20 Pascal program
014510: 72 65 66 65 72 65 6E 63 69 6E 67 20 69 74 20 77 referencing it w
014520: 6F 75 6C 64 20 62 65 3A 0D 0A 0D 0A 20 20 20 20 ould be:....
014530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 52 PR
014540: 4F 43 45 44 55 52 45 20 53 41 4D 50 4C 45 3B 20 OCEDURE SAMPLE;
014550: 45 58 54 45 52 4E 3B 0D 0A 0D 0A 0D 0A 0D 0A 0D EXTERN;.........
014560: 0A 0D 0A 0D 0A 20 20 20 20 20 20 31 30 2E 32 20 ..... 10.2
014570: 20 4F 70 65 72 61 74 69 6E 67 20 4A 52 54 41 53 Operating JRTAS
014580: 4D 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 M....
014590: 54 6F 20 61 73 73 65 6D 62 6C 65 20 61 6E 20 65 To assemble an e
0145A0: 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 xternal procedur
0145B0: 65 2C 20 65 6E 74 65 72 3A 0D 0A 0D 0A 20 20 20 e, enter:....
0145C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 E
0145D0: 58 45 43 20 4A 52 54 41 53 4D 0D 0A 0D 0A 20 20 XEC JRTASM....
0145E0: 20 20 20 20 59 6F 75 20 77 69 6C 6C 20 62 65 20 You will be
0145F0: 70 72 6F 6D 70 74 65 64 20 61 74 20 20 74 68 65 prompted at the
014600: 20 20 63 6F 6E 73 6F 6C 65 20 20 66 6F 72 20 20 console for
014610: 74 68 65 20 20 69 6E 70 75 74 20 20 66 69 6C 65 the input file
014620: 6E 61 6D 65 20 20 61 6E 64 0D 0A 20 20 20 20 20 name and..
014630: 20 6F 70 74 69 6F 6E 73 2E 20 20 54 68 65 20 6F options. The o
014640: 70 74 69 6F 6E 73 20 61 72 65 3A 0D 0A 0D 0A 20 ptions are:....
014650: 20 20 20 20 20 20 20 20 20 31 20 20 2D 20 20 70 1 - p
014660: 72 6F 64 75 63 65 20 61 20 6C 69 73 74 69 6E 67 roduce a listing
014670: 20 6F 6E 20 74 68 65 20 63 6F 6E 73 6F 6C 65 20 on the console
014680: 64 75 72 69 6E 67 20 70 61 73 73 20 31 20 6F 66 during pass 1 of
014690: 20 74 68 65 0D 0A 20 20 20 20 20 20 20 20 20 20 the..
0146A0: 20 61 73 73 65 6D 62 6C 79 20 70 72 6F 63 65 73 assembly proces
0146B0: 73 2C 20 75 73 65 66 75 6C 20 66 6F 72 20 64 65 s, useful for de
0146C0: 62 75 67 67 69 6E 67 2E 0D 0A 0D 0A 20 20 20 20 bugging.....
0146D0: 20 20 20 20 20 20 43 20 2D 20 70 72 6F 64 75 63 C - produc
0146E0: 65 20 61 6E 20 6F 75 74 70 75 74 20 20 66 69 6C e an output fil
0146F0: 65 20 20 6F 66 20 20 74 79 70 65 20 20 27 2E 43 e of type '.C
014700: 74 61 62 6C 65 0D 0A 20 20 20 20 20 20 69 66 20 table.. if
014710: 20 69 74 20 72 65 66 65 72 73 20 74 6F 20 61 6E it refers to an
014720: 20 61 64 64 72 65 73 73 2C 20 6F 74 68 65 72 77 address, otherw
014730: 69 73 65 20 69 74 20 69 73 20 66 69 78 65 64 2E ise it is fixed.
014740: 20 20 49 66 20 61 6E 79 20 73 79 6D 62 6F 6C 20 If any symbol
014750: 69 6E 0D 0A 20 20 20 20 20 20 61 6E 20 20 65 78 in.. an ex
014760: 70 72 65 73 73 69 6F 6E 20 20 69 73 20 20 72 65 pression is re
014770: 6C 6F 63 61 74 61 62 6C 65 20 20 74 68 65 6E 20 locatable then
014780: 20 74 68 65 20 20 20 65 6E 74 69 72 65 20 20 20 the entire
014790: 65 78 70 72 65 73 73 69 6F 6E 20 20 20 69 73 0D expression is.
0147A0: 0A 20 20 20 20 20 20 72 65 6C 6F 63 61 74 61 62 . relocatab
0147B0: 6C 65 2E 20 20 50 61 72 65 6E 74 68 65 73 69 73 le. Parenthesis
0147C0: 20 6D 61 79 20 62 65 20 6E 65 73 74 65 64 20 74 may be nested t
0147D0: 6F 20 61 6E 79 20 6C 65 76 65 6C 2E 0D 0A 0D 0A o any level.....
0147E0: 20 20 20 20 20 20 20 20 20 20 20 54 68 65 73 65 These
0147F0: 20 6F 70 65 72 61 74 6F 72 73 20 61 72 65 20 73 operators are s
014800: 75 70 70 6F 72 74 65 64 3A 0D 0A 0D 0A 20 20 20 upported:....
014810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2A *
014820: 20 20 2F 20 20 2B 20 20 2D 0D 0A 20 20 20 20 20 / + -..
014830: 20 20 20 20 20 20 20 20 20 20 20 20 20 4E 4F 54 NOT
014840: 20 20 41 4E 44 20 20 4F 52 20 20 58 4F 52 0D 0A AND OR XOR..
014850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
014860: 20 20 4D 4F 44 20 20 48 49 47 48 20 20 4C 4F 57 MOD HIGH LOW
014870: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
014880: 20 20 20 20 45 51 20 20 4E 45 20 20 4C 54 20 20 EQ NE LT
014890: 4C 45 20 20 47 54 20 20 47 45 0D 0A 0D 0A 20 20 LE GT GE....
0148A0: 20 20 20 20 31 30 2E 35 20 20 20 50 61 72 61 6D 10.5 Param
0148B0: 65 74 65 72 73 20 61 6E 64 20 66 75 6E 63 74 69 eters and functi
0148C0: 6F 6E 20 72 65 74 75 72 6E 20 76 61 6C 75 65 73 on return values
0148D0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 50 .... P
0148E0: 61 72 61 6D 65 74 65 72 73 20 20 6F 66 20 61 6E arameters of an
0148F0: 79 20 64 61 74 61 20 74 79 70 65 20 6D 61 79 20 y data type may
014900: 4F 4D 27 20 20 72 61 74 68 65 72 20 20 74 68 61 OM' rather tha
014910: 6E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 27 2E n.. '.
014920: 49 4E 54 27 2E 20 20 54 68 69 73 20 20 69 73 20 INT'. This is
014930: 6E 6F 74 20 61 6E 20 65 78 74 65 72 6E 61 6C 20 not an external
014940: 70 72 6F 63 65 64 75 72 65 20 62 75 74 20 61 20 procedure but a
014950: 64 69 72 65 63 74 6C 79 0D 0A 20 20 20 20 20 20 directly..
014960: 20 20 20 20 20 65 78 65 63 75 74 61 62 6C 65 20 executable
014970: 63 6F 6D 6D 61 6E 64 20 66 69 6C 65 20 69 6E 20 command file in
014980: 73 74 61 6E 64 61 72 64 20 43 50 2F 4D 20 66 6F standard CP/M fo
014990: 72 6D 61 74 2E 20 20 41 6E 20 20 20 4F 52 47 0D rmat. An ORG.
0149A0: 0A 20 20 20 20 20 20 20 20 20 20 20 31 30 30 48 . 100H
0149B0: 20 20 20 20 64 69 72 65 63 74 69 76 65 20 20 73 directive s
0149C0: 68 6F 75 6C 64 20 20 62 65 20 20 69 6E 63 6C 75 hould be inclu
0149D0: 64 65 64 20 20 73 69 6E 63 65 20 74 68 65 20 64 ded since the d
0149E0: 65 66 61 75 6C 74 0D 0A 20 20 20 20 20 20 20 20 efault..
0149F0: 20 20 20 6F 72 69 67 69 6E 20 69 73 20 30 2E 0D origin is 0..
014A00: 0A 0D 0A 0D 0A 20 20 20 20 20 20 31 30 2E 33 20 ..... 10.3
014A10: 20 20 44 69 72 65 63 74 69 76 65 73 0D 0A 0D 0A Directives....
014A20: 20 20 20 20 20 20 20 20 20 20 20 54 68 65 73 65 These
014A30: 20 61 73 73 65 6D 62 6C 65 72 20 64 69 72 65 63 assembler direc
014A40: 74 69 76 65 73 20 61 72 65 20 73 75 70 70 6F 72 tives are suppor
014A50: 74 65 64 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ted:....
014A60: 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74 direct
014A70: 69 76 65 20 20 20 20 20 20 20 20 20 70 75 72 70 ive purp
014A80: 6F 73 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ose..
014A90: 20 20 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D ---------
014AA0: 20 20 20 20 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D -------
014AB0: 2D 2D 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 --..
014AC0: 20 20 20 20 20 20 4F 52 47 20 20 20 20 20 20 20 ORG
014AD0: 20 20 20 20 20 20 20 20 73 65 74 20 6C 6F 63 61 set loca
014AE0: 74 69 6F 6E 20 63 6F 75 6E 74 65 72 2C 20 6E 6F tion counter, no
014AF0: 74 20 75 73 65 64 0D 0A 20 20 20 20 20 20 20 20 t used..
014B00: 62 65 20 70 61 73 73 65 64 20 74 6F 20 61 73 73 be passed to ass
014B10: 65 6D 62 6C 65 72 20 65 78 74 65 72 6E 61 6C 0D embler external.
014B20: 0A 20 20 20 20 20 20 70 72 6F 63 65 64 75 72 65 . procedure
014B30: 73 20 61 6E 64 20 66 75 6E 63 74 69 6F 6E 73 2E s and functions.
014B40: 20 20 54 68 65 20 45 58 45 43 20 20 6D 61 69 6E The EXEC main
014B50: 74 61 69 6E 73 20 20 61 20 20 64 61 74 61 20 20 tains a data
014B60: 73 74 61 63 6B 20 20 77 68 69 63 68 0D 0A 20 20 stack which..
014B70: 20 20 20 20 63 6F 6E 74 61 69 6E 73 20 61 6C 6C contains all
014B80: 20 73 74 61 74 69 63 20 76 61 72 69 61 62 6C 65 static variable
014B90: 73 2C 20 70 61 72 61 6D 65 74 65 72 73 2C 20 66 s, parameters, f
014BA0: 75 6E 63 74 69 6F 6E 20 72 65 74 75 72 6E 20 76 unction return v
014BB0: 61 6C 75 65 73 20 61 6E 64 0D 0A 20 20 20 20 20 alues and..
014BC0: 20 70 72 6F 63 65 64 75 72 65 20 6C 69 6E 6B 61 procedure linka
014BD0: 67 65 20 62 6C 6F 63 6B 73 2E 0D 0A 0D 0A 20 20 ge blocks.....
014BE0: 20 20 20 20 20 20 20 20 20 54 68 72 65 65 20 61 Three a
014BF0: 64 64 72 65 73 73 20 70 6F 69 6E 74 65 72 73 20 ddress pointers
014C00: 61 72 65 20 75 73 65 64 20 74 6F 20 61 63 63 65 are used to acce
014C10: 73 73 20 74 68 65 20 64 61 74 61 20 73 74 61 63 ss the data stac
014C20: 6B 2E 20 20 54 68 65 73 65 0D 0A 20 20 20 20 20 k. These..
014C30: 20 61 72 65 20 20 61 76 61 69 6C 61 62 6C 65 20 are available
014C40: 20 74 6F 20 20 65 78 74 65 72 6E 61 6C 20 70 72 to external pr
014C50: 6F 63 65 64 75 72 65 73 20 69 6E 20 74 68 65 20 ocedures in the
014C60: 38 30 38 30 20 72 65 67 69 73 74 65 72 20 70 61 8080 register pa
014C70: 69 72 73 20 6F 6E 0D 0A 20 20 20 20 20 20 65 6E irs on.. en
014C80: 74 72 79 20 74 6F 20 74 68 65 20 70 72 6F 63 65 try to the proce
014C90: 64 75 72 65 2E 0D 0A 20 20 20 20 20 20 20 20 20 dure...
014CA0: 20 20 20 20 20 20 20 20 20 42 41 53 45 20 20 28 BASE (
014CB0: 48 4C 29 20 2D 20 61 64 64 72 65 73 73 20 6F 66 HL) - address of
014CC0: 20 74 68 65 20 64 61 74 61 20 73 74 61 63 6B 0D the data stack.
014CD0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
014CE0: 20 20 20 43 55 52 20 20 20 28 44 45 29 20 2D 20 CUR (DE) -
014CF0: 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 6C address of the l
014D00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
014D10: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6E 20 in
014D20: 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 external procedu
014D30: 72 65 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 res..
014D40: 20 20 20 20 20 20 20 53 45 54 20 20 20 20 20 20 SET
014D50: 20 20 20 20 20 20 20 20 20 61 73 73 69 67 6E 20 assign
014D60: 61 20 76 61 6C 75 65 20 74 6F 20 61 20 76 61 72 a value to a var
014D70: 69 61 62 6C 65 0D 0A 20 20 20 20 20 20 20 20 20 iable..
014D80: 20 20 20 20 20 20 20 20 20 45 51 55 20 20 20 20 EQU
014D90: 20 20 20 20 20 20 20 20 20 20 20 61 73 73 69 67 assig
014DA0: 6E 20 61 20 76 61 6C 75 65 20 74 6F 20 61 20 66 n a value to a f
014DB0: 69 78 65 64 20 73 79 6D 62 6F 6C 0D 0A 20 20 20 ixed symbol..
014DC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 I
014DD0: 46 2F 45 4C 53 45 2F 45 4E 44 49 46 20 20 20 20 F/ELSE/ENDIF
014DE0: 20 63 6F 6E 64 69 74 69 6F 6E 61 6C 20 61 73 73 conditional ass
014DF0: 65 6D 62 6C 79 20 6F 66 20 63 6F 64 65 2C 0D 0A embly of code,..
014E00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
014E10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
014E20: 20 20 20 20 20 6D 61 79 20 62 65 20 6E 65 73 74 may be nest
014E30: 65 64 20 74 6F 20 31 36 20 6C 65 76 65 6C 73 0D ed to 16 levels.
014E40: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
014E50: 20 20 20 44 42 20 20 20 20 20 20 20 20 20 20 20 DB
014E60: 20 20 20 20 20 64 65 66 69 6E 65 20 62 79 74 65 define byte
014E70: 2C 20 6D 75 6C 74 69 70 6C 65 20 6F 70 65 72 61 , multiple opera
014E80: 6E 64 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 nds..
014E90: 20 20 20 20 20 20 20 44 57 20 20 20 20 20 20 20 DW
014EA0: 20 20 20 20 20 20 20 20 20 64 65 66 69 6E 65 20 define
014EB0: 77 6F 72 64 0D 0A 20 20 20 20 20 20 20 20 20 20 word..
014EC0: 20 20 20 20 20 20 20 20 44 53 20 20 20 20 20 20 DS
014ED0: 20 20 20 20 20 20 20 20 20 20 64 65 66 69 6E 65 define
014EE0: 20 73 74 6F 72 61 67 65 0D 0A 20 20 20 20 20 20 storage..
014EF0: 20 20 20 20 20 20 20 20 20 20 20 20 52 45 41 44 READ
014F00: 69 6E 6B 61 67 65 20 62 6C 6F 63 6B 20 66 6F 72 inkage block for
014F10: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
014F20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
014F30: 20 20 63 75 72 72 65 6E 74 6C 79 20 61 63 74 69 currently acti
014F40: 76 65 20 70 72 6F 63 65 64 75 72 65 0D 0A 20 20 ve procedure..
014F50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
014F60: 54 4F 53 20 20 20 28 42 43 29 20 2D 20 74 6F 70 TOS (BC) - top
014F70: 20 6F 66 20 73 74 61 63 6B 2C 20 70 6F 69 6E 74 of stack, point
014F80: 73 20 70 61 73 74 20 6C 61 73 74 0D 0A 20 20 20 s past last..
014F90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
014FA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 61 6C 6C all
014FB0: 6F 63 61 74 65 64 20 62 79 74 65 0D 0A 0D 0A 20 ocated byte....
014FC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
014FD0: 20 54 4F 53 2D 2D 3E 49 20 20 20 20 20 20 20 20 TOS-->I
014FE0: 20 20 20 20 20 20 20 20 20 49 0D 0A 20 20 20 20 I..
014FF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015000: 20 20 20 20 49 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D I-----------
015010: 2D 2D 2D 2D 2D 2D 49 0D 0A 20 20 20 20 20 20 20 ------I..
015020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015030: 20 49 20 20 20 20 20 36 20 62 79 74 65 73 20 20 I 6 bytes
015040: 20 20 20 49 20 20 20 20 20 6C 69 6E 6B 61 67 65 I linkage
015050: 20 62 6C 6F 63 6B 20 66 6F 72 0D 0A 20 20 20 20 block for..
015060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015070: 20 20 20 20 49 20 20 20 20 20 20 20 20 20 20 20 I
015080: 20 20 20 20 20 20 49 20 20 20 20 20 20 63 75 72 I cur
015090: 72 65 6E 74 20 70 72 6F 63 65 64 75 72 65 0D 0A rent procedure..
0150A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0150B0: 20 20 43 55 52 2D 2D 3E 49 20 20 20 20 20 20 20 CUR-->I
0150C0: 20 20 20 20 20 20 20 20 20 20 49 0D 0A 20 20 20 I..
0150D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0150E0: 20 20 20 20 20 49 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D I----------
0150F0: 2D 2D 2D 2D 2D 2D 2D 49 0D 0A 20 20 20 20 20 20 -------I..
015100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 73 us
015110: 65 64 20 74 6F 20 61 73 73 69 67 6E 20 61 20 6E ed to assign a n
015120: 65 77 20 76 61 6C 75 65 20 74 6F 20 61 0D 0A 20 ew value to a..
015130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015150: 20 20 20 20 76 61 72 69 61 62 6C 65 2C 20 6C 69 variable, li
015160: 6B 65 20 53 45 54 20 65 78 63 65 70 74 20 74 68 ke SET except th
015170: 61 74 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 at..
015180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015190: 20 20 20 20 20 20 20 20 20 76 61 6C 75 65 20 69 value i
0151A0: 73 20 6F 62 74 61 69 6E 65 64 20 66 72 6F 6D 20 s obtained from
0151B0: 63 6F 6E 73 6F 6C 65 20 0D 0A 20 20 20 20 20 20 console ..
0151C0: 20 20 20 20 20 20 20 20 20 20 20 20 57 52 49 54 WRIT
0151D0: 45 20 20 20 20 20 20 20 20 20 20 20 20 20 64 69 E di
0151E0: 73 70 6C 61 79 20 73 74 72 69 6E 67 73 20 6F 72 splay strings or
0151F0: 20 65 78 70 72 65 73 73 69 6F 6E 73 20 0D 0A 20 expressions ..
015200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015220: 20 20 20 20 6F 6E 20 63 6F 6E 73 6F 6C 65 0D 0A on console..
015230: 0D 0A 20 20 20 20 20 20 45 78 61 6D 70 6C 65 73 .. Examples
015240: 20 6F 66 20 64 69 72 65 63 74 69 76 65 73 3A 0D of directives:.
015250: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 31 ... 1
015260: 2E 20 20 20 20 20 20 20 20 20 61 20 20 20 20 20 . a
015270: 73 65 74 20 39 0D 0A 20 20 20 20 20 20 20 20 20 set 9..
015280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015290: 20 20 20 20 69 66 20 61 20 3D 20 39 0D 0A 20 20 if a = 9..
0152A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0152B0: 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 write
0152C0: 20 27 61 20 69 73 20 65 71 75 61 6C 20 74 6F 20 'a is equal to
0152D0: 6E 69 6E 65 27 0D 0A 20 20 20 20 20 20 20 20 20 nine'..
0152E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0152F0: 20 20 20 20 65 6C 73 65 0D 0A 20 20 20 20 20 20 else..
015300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015310: 20 20 49 20 20 20 20 20 32 20 62 79 74 65 73 20 I 2 bytes
015320: 20 20 20 20 49 20 20 20 20 20 70 61 72 61 6D 65 I parame
015330: 74 65 72 20 6C 65 6E 67 74 68 20 66 6C 64 0D 0A ter length fld..
015340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015350: 20 20 20 20 20 20 20 20 49 2D 2D 2D 2D 2D 2D 2D I-------
015360: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 0D 0A 20 20 20 ----------I..
015370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015380: 20 20 20 20 20 49 20 20 20 20 20 78 20 62 79 74 I x byt
015390: 65 73 20 20 20 20 20 49 20 20 20 20 20 70 61 72 es I par
0153A0: 61 6D 65 74 65 72 73 20 6F 66 20 0D 0A 20 20 20 ameters of ..
0153B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0153C0: 20 20 20 20 20 49 20 20 20 20 20 20 20 20 20 20 I
0153D0: 20 20 20 20 20 20 20 49 20 20 20 20 20 20 63 75 I cu
0153E0: 72 72 65 6E 74 20 70 72 6F 63 65 64 75 72 65 0D rrent procedure.
0153F0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
015400: 20 20 20 20 20 20 20 20 20 49 2D 2D 2D 2D 2D 2D I------
015410: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 0D 0A 20 20 -----------I..
015420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015430: 20 20 20 20 20 20 49 20 20 20 20 20 20 20 20 20 I
015440: 20 20 20 20 20 20 20 20 49 20 20 20 20 20 67 6C I gl
015450: 6F 62 61 6C 20 76 61 72 69 61 62 6C 65 73 20 0D obal variables .
015460: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
015470: 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 20 I
015480: 20 20 20 20 20 20 20 20 20 20 20 49 20 20 20 20 I
015490: 20 20 6F 66 20 6D 61 69 6E 20 70 72 6F 67 72 61 of main progra
0154A0: 6D 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 m ..
0154B0: 20 20 20 20 20 20 20 20 20 20 20 20 49 2D 2D 2D I---
0154C0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 0D --------------I.
0154D0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
0154E0: 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 36 I 6
0154F0: 20 62 79 74 65 73 20 20 20 20 20 49 20 20 20 20 bytes I
015500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015510: 20 20 20 20 20 20 20 77 72 69 74 65 20 27 61 20 write 'a
015520: 20 69 73 20 6E 6F 74 20 65 71 75 61 6C 20 74 6F is not equal to
015530: 20 6E 69 6E 65 27 0D 0A 20 20 20 20 20 20 20 20 nine'..
015540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015550: 20 20 20 20 20 65 6E 64 69 66 0D 0A 0D 0A 20 20 endif....
015560: 20 20 20 20 20 20 20 20 20 20 32 2E 20 20 20 20 2.
015570: 20 20 20 20 20 78 20 20 20 20 20 72 65 61 64 20 x read
015580: 20 20 20 20 20 20 20 3B 6D 73 67 20 61 74 20 63 ;msg at c
015590: 6F 6E 73 6F 6C 65 20 77 69 6C 6C 20 61 73 6B 20 onsole will ask
0155A0: 66 6F 72 20 78 20 0D 0A 20 20 20 20 20 20 20 20 for x ..
0155B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0155C0: 20 20 20 20 20 77 72 69 74 65 20 27 78 20 73 71 write 'x sq
0155D0: 75 61 72 65 64 20 69 73 20 27 2C 28 78 20 2A 20 uared is ',(x *
0155E0: 78 29 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 x)....
0155F0: 20 20 33 2E 20 20 20 20 20 20 20 20 20 61 20 20 3. a
015600: 20 20 20 73 65 74 20 61 20 2B 20 31 20 20 20 3B set a + 1 ;
015610: 69 6E 63 72 65 6D 65 6E 74 20 61 0D 0A 20 20 20 increment a..
015620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015630: 20 20 20 20 20 20 20 20 20 20 64 62 20 27 73 74 db 'st
015640: 72 69 6E 67 27 2C 61 2C 32 35 35 0D 0A 0D 0A 0D ring',a,255.....
015650: 0A 20 20 20 20 20 20 31 30 2E 34 20 20 20 45 78 . 10.4 Ex
015660: 70 72 65 73 73 69 6F 6E 73 0D 0A 0D 0A 20 20 20 pressions....
015670: 20 20 20 20 20 20 20 20 49 6E 74 65 67 65 72 20 Integer
015680: 65 78 70 72 65 73 73 69 6F 6E 73 20 20 63 61 6E expressions can
015690: 20 20 62 65 20 20 75 73 65 64 20 20 69 6E 20 20 be used in
0156A0: 61 73 73 65 6D 62 6C 65 72 20 20 69 6E 73 74 72 assembler instr
0156B0: 75 63 74 69 6F 6E 73 2E 0D 0A 20 20 20 20 20 20 uctions...
0156C0: 45 78 70 72 65 73 73 69 6F 6E 73 20 61 72 65 20 Expressions are
0156D0: 65 69 74 68 65 72 20 66 69 78 65 64 20 6F 72 20 either fixed or
0156E0: 72 65 6C 6F 63 61 74 61 62 6C 65 2E 20 20 41 20 relocatable. A
0156F0: 73 79 6D 62 6F 6C 20 69 73 20 72 65 6C 6F 63 61 symbol is reloca
015700: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
015710: 12 00 00 00 02 09 2A E5 12 00 C1 02 00 00 00 02 ......*.........
015720: 12 00 C6 02 00 00 00 02 12 00 C2 02 00 00 00 02 ................
015730: 12 00 C7 02 00 00 00 02 12 00 C3 02 00 00 00 02 ................
015740: 12 00 C8 02 00 00 00 02 12 00 C4 02 00 00 00 02 ................
015750: 12 00 C9 02 00 00 00 02 12 00 C5 02 00 00 00 02 ................
015760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0157F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015800: 20 6C 69 6E 6B 61 67 65 20 62 6C 6F 63 6B 20 66 linkage block f
015810: 6F 72 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 or..
015820: 20 20 20 20 20 20 20 20 20 20 20 20 49 20 20 20 I
015830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 20 I
015840: 20 20 20 20 20 6D 61 69 6E 20 70 72 6F 67 72 61 main progra
015850: 6D 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 m..
015860: 20 20 20 20 42 41 53 45 2D 2D 3E 49 2D 2D 2D 2D BASE-->I----
015870: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 0D 0A -------------I..
015880: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 57 69 74 .. Wit
015890: 68 20 74 68 65 20 74 68 72 65 65 20 64 61 74 61 h the three data
0158A0: 20 73 74 61 63 6B 20 70 6F 69 6E 74 65 72 73 2C stack pointers,
0158B0: 20 74 68 65 20 70 61 72 61 6D 65 74 65 72 73 20 the parameters
0158C0: 70 61 73 73 65 64 20 74 6F 20 74 68 65 0D 0A 20 passed to the..
0158D0: 20 20 20 20 20 70 72 6F 63 65 64 75 72 65 20 63 procedure c
0158E0: 61 6E 20 62 65 20 61 63 63 65 73 73 65 64 2E 20 an be accessed.
0158F0: 20 49 66 20 69 74 20 69 73 20 61 20 66 75 6E 63 If it is a func
015900: 74 69 6F 6E 2C 20 74 68 65 20 72 65 74 75 72 6E tion, the return
015910: 20 76 61 6C 75 65 20 63 61 6E 0D 0A 20 20 20 20 value can..
015920: 20 20 62 65 20 73 74 6F 72 65 64 2E 20 41 6C 73 be stored. Als
015930: 6F 2C 20 74 68 65 20 67 6C 6F 62 61 6C 20 76 61 o, the global va
015940: 72 69 61 62 6C 65 73 20 6F 66 20 20 74 68 65 20 riables of the
015950: 20 6D 61 69 6E 20 20 70 72 6F 67 72 61 6D 20 20 main program
015960: 63 61 6E 20 20 62 65 0D 0A 20 20 20 20 20 20 61 can be.. a
015970: 63 63 65 73 73 65 64 2E 20 20 20 46 6F 72 20 65 ccessed. For e
015980: 78 61 6D 70 6C 65 2C 20 69 66 20 74 68 65 20 66 xample, if the f
015990: 69 72 73 74 20 67 6C 6F 62 61 6C 20 76 61 72 69 irst global vari
0159A0: 61 62 6C 65 20 64 65 63 6C 61 72 65 64 20 69 6E able declared in
0159B0: 20 74 68 65 0D 0A 20 20 20 20 20 20 6D 61 69 6E the.. main
0159C0: 20 50 61 73 63 61 6C 20 70 72 6F 67 72 61 6D 20 Pascal program
0159D0: 77 68 69 63 68 20 63 61 6C 6C 73 20 74 68 65 20 which calls the
0159E0: 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 external procedu
0159F0: 72 65 20 69 73 20 61 6E 20 20 69 6E 74 65 67 65 re is an intege
015A00: 72 6E 20 76 61 6C 75 65 20 69 73 20 6F 66 20 74 rn value is of t
015A10: 79 70 65 20 41 52 52 41 59 20 5B 31 2E 2E 34 5D ype ARRAY [1..4]
015A20: 20 4F 46 20 43 48 41 52 3B 29 0D 0A 0D 0A 20 20 OF CHAR;)....
015A30: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6E return
015A40: 20 76 61 6C 75 65 20 20 72 76 20 6C 65 6E 20 20 value rv len
015A50: 20 20 27 58 27 20 20 20 31 20 20 20 20 20 6C 65 'X' 1 le
015A60: 6E 67 74 68 20 20 20 6C 69 6E 6B 61 67 65 20 62 ngth linkage b
015A70: 6C 6F 63 6B 0D 0A 20 20 20 20 20 20 20 20 20 20 lock..
015A80: 20 20 72 72 20 72 72 20 72 72 20 72 72 20 20 20 rr rr rr rr
015A90: 30 34 30 30 20 20 20 20 20 20 35 38 20 20 20 20 0400 58
015AA0: 30 31 30 30 20 20 30 33 30 30 20 20 20 78 78 20 0100 0300 xx
015AB0: 78 78 20 78 78 20 78 78 20 78 78 20 78 78 20 20 xx xx xx xx xx
015AC0: 79 79 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 yy..
015AD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015AE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015AF0: 20 20 20 20 20 20 20 20 20 20 20 49 20 20 20 20 I
015B00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 0D I.
015B10: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
015B20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015B30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015B40: 20 20 20 20 20 20 20 20 43 55 52 20 20 20 20 20 CUR
015B50: 20 20 20 20 20 20 20 20 20 20 20 54 4F 53 0D 0A TOS..
015B60: 0D 0A 20 20 20 20 20 20 31 30 2E 36 20 20 20 44 .. 10.6 D
015B70: 65 62 75 67 67 69 6E 67 20 61 73 73 65 6D 62 6C ebugging assembl
015B80: 65 72 20 70 72 6F 63 65 64 75 72 65 73 0D 0A 0D er procedures...
015B90: 0A 20 20 20 20 20 20 20 20 20 20 20 4F 6E 65 20 . One
015BA0: 65 66 66 65 63 74 69 76 65 20 20 77 61 79 20 20 effective way
015BB0: 74 6F 20 20 64 65 62 75 67 20 20 65 78 74 65 72 to debug exter
015BC0: 6E 61 6C 20 20 70 72 6F 63 65 64 75 72 65 73 20 nal procedures
015BD0: 20 77 72 69 74 74 65 6E 20 20 69 6E 0D 0A 20 20 written in..
015BE0: 20 20 20 20 61 73 73 65 6D 62 6C 65 72 20 20 75 assembler u
015BF0: 73 65 73 20 20 74 68 65 20 20 43 50 2F 4D 20 44 ses the CP/M D
015C00: 72 0D 0A 20 20 20 20 20 20 6E 61 6D 65 64 20 49 r.. named I
015C10: 4E 54 31 2C 20 74 68 65 6E 20 6A 75 73 74 20 61 NT1, then just a
015C20: 64 64 20 36 20 74 6F 20 74 68 65 20 42 41 53 45 dd 6 to the BASE
015C30: 20 70 6F 69 6E 74 65 72 20 74 6F 20 67 65 74 20 pointer to get
015C40: 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 0D 0A the address of..
015C50: 20 20 20 20 20 20 49 4E 54 31 2E 20 20 20 54 68 INT1. Th
015C60: 65 20 20 42 41 53 45 20 20 70 6F 69 6E 74 65 72 e BASE pointer
015C70: 20 20 69 73 20 20 69 6E 20 20 72 65 67 69 73 74 is in regist
015C80: 65 72 20 20 70 61 69 72 20 48 4C 20 6F 6E 20 65 er pair HL on e
015C90: 6E 74 72 79 20 74 6F 20 74 68 65 0D 0A 20 20 20 ntry to the..
015CA0: 20 20 20 70 72 6F 63 65 64 75 72 65 2E 0D 0A 20 procedure...
015CB0: 20 20 20 20 20 20 20 20 20 20 44 61 74 61 20 73 Data s
015CC0: 74 61 63 6B 20 61 66 74 65 72 20 70 72 6F 63 65 tack after proce
015CD0: 64 75 72 65 20 63 61 6C 6C 20 20 44 45 4D 4F 28 dure call DEMO(
015CE0: 20 27 41 27 2C 37 20 29 3B 0D 0A 0D 0A 20 20 20 'A',7 );....
015CF0: 20 20 20 20 20 20 20 20 20 27 41 27 20 20 20 37 'A' 7
015D00: 20 20 20 20 20 6C 65 6E 67 74 68 20 20 20 20 20 length
015D10: 20 20 20 6C 69 6E 6B 61 67 65 20 62 6C 6F 63 6B linkage block
015D20: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 34 31 .. 41
015D30: 20 20 20 20 30 37 30 30 20 20 30 33 30 30 20 20 0700 0300
015D40: 20 20 20 20 20 20 78 78 20 78 78 20 78 78 20 78 xx xx xx x
015D50: 78 20 78 78 20 78 78 20 20 79 79 0D 0A 20 20 20 x xx xx yy..
015D60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015D70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015D80: 20 49 20 20 20 20 20 20 20 20 20 20 20 20 20 20 I
015D90: 20 20 20 20 49 0D 0A 20 20 20 20 20 20 20 20 20 I..
015DA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
015DB0: 20 20 20 20 20 20 20 20 20 20 20 43 55 52 20 20 CUR
015DC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 4F TO
015DD0: 53 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 S.... The
015DE0: 74 77 6F 20 62 79 74 65 20 69 6E 74 65 67 65 72 two byte integer
015DF0: 20 66 69 65 6C 64 73 20 61 72 65 20 69 6E 20 38 fields are in 8
015E00: 79 6E 61 6D 69 63 20 44 65 62 75 67 67 69 6E 67 ynamic Debugging
015E10: 20 54 6F 6F 6C 20 28 44 44 54 29 2E 20 49 66 20 Tool (DDT). If
015E20: 61 20 75 73 65 72 20 69 73 0D 0A 20 20 20 20 20 a user is..
015E30: 20 72 75 6E 6E 69 6E 67 20 61 20 50 61 73 63 61 running a Pasca
015E40: 6C 20 70 72 6F 67 72 61 6D 20 75 6E 64 65 72 20 l program under
015E50: 44 44 54 2C 20 74 68 65 6E 20 61 20 52 53 54 20 DDT, then a RST
015E60: 37 20 69 6E 73 74 72 75 63 74 69 6F 6E 20 77 69 7 instruction wi
015E70: 6C 6C 20 20 62 65 0D 0A 20 20 20 20 20 20 73 65 ll be.. se
015E80: 65 6E 20 20 61 73 20 20 61 20 20 62 72 65 61 6B en as a break
015E90: 70 6F 69 6E 74 20 20 61 6E 64 20 20 61 6C 6C 6F point and allo
015EA0: 77 20 20 74 68 65 20 20 75 73 65 72 20 20 74 6F w the user to
015EB0: 20 61 63 63 65 73 73 20 61 6C 6C 20 74 68 65 20 access all the
015EC0: 44 44 54 0D 0A 20 20 20 20 20 20 66 61 63 69 6C DDT.. facil
015ED0: 69 74 69 65 73 2E 20 20 54 6F 20 72 75 6E 20 75 ities. To run u
015EE0: 6E 64 65 72 20 44 44 54 2C 20 65 6E 74 65 72 3A nder DDT, enter:
015EF0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
015F00: 20 20 20 20 20 20 44 44 54 20 45 58 45 43 2E 43 DDT EXEC.C
015F10: 4F 4D 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 OM..
015F20: 20 20 20 20 20 20 49 70 72 6F 67 72 61 6D 5F 6E Iprogram_n
015F30: 61 6D 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ame..
015F40: 20 20 20 20 20 20 20 47 31 30 30 0D 0A 0D 0A 20 G100....
015F50: 20 20 20 20 20 20 20 20 20 20 57 68 65 6E 20 74 When t
015F60: 68 65 20 20 52 53 54 20 20 37 20 20 69 6E 73 74 he RST 7 inst
015F70: 72 75 63 74 69 6F 6E 20 20 69 73 20 20 65 6E 63 ruction is enc
015F80: 6F 75 6E 74 65 72 65 64 2C 20 20 44 44 54 20 20 ountered, DDT
015F90: 77 69 6C 6C 20 20 67 61 69 6E 0D 0A 20 20 20 20 will gain..
015FA0: 20 20 63 6F 6E 74 72 6F 6C 2E 20 20 20 54 68 65 control. The
015FB0: 20 20 64 69 73 70 6C 61 79 2C 20 20 6D 6F 64 69 display, modi
015FC0: 66 79 2C 20 20 64 69 73 61 73 73 65 6D 62 6C 65 fy, disassemble
015FD0: 20 66 61 63 69 6C 69 74 69 65 73 20 74 68 65 6E facilities then
015FE0: 20 63 61 6E 20 62 65 0D 0A 20 20 20 20 20 20 75 can be.. u
015FF0: 73 65 64 20 74 6F 20 65 78 61 6D 69 6E 65 20 74 sed to examine t
016000: 30 38 30 20 20 62 79 74 65 2D 72 65 76 65 72 73 080 byte-revers
016010: 65 20 20 66 6F 72 6D 61 74 2E 20 20 20 54 68 65 e format. The
016020: 0D 0A 20 20 20 20 20 20 70 61 72 61 6D 65 74 65 .. paramete
016030: 72 20 20 6C 65 6E 67 74 68 20 20 66 69 65 6C 64 r length field
016040: 20 69 73 20 65 71 75 61 6C 20 74 6F 20 74 68 72 is equal to thr
016050: 65 65 2E 20 20 54 68 65 20 6C 69 6E 6B 61 67 65 ee. The linkage
016060: 20 62 6C 6F 63 6B 20 69 73 20 73 69 78 0D 0A 20 block is six..
016070: 20 20 20 20 20 62 79 74 65 73 20 6F 66 20 75 6E bytes of un
016080: 73 70 65 63 69 66 69 65 64 20 64 61 74 61 0D 0A specified data..
016090: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 50 61 72 .. Par
0160A0: 61 6D 65 74 65 72 73 20 61 72 65 20 61 63 63 65 ameters are acce
0160B0: 73 73 65 64 20 62 79 20 64 65 63 72 65 6D 65 6E ssed by decremen
0160C0: 74 69 6E 67 20 74 68 65 20 43 55 52 20 70 6F 69 ting the CUR poi
0160D0: 6E 74 65 72 2E 20 20 50 61 73 63 61 6C 0D 0A 20 nter. Pascal..
0160E0: 20 20 20 20 20 76 61 6C 75 65 20 70 61 72 61 6D value param
0160F0: 65 74 65 72 73 20 20 61 72 65 20 20 61 63 74 75 eters are actu
016100: 61 6C 6C 79 20 20 70 72 65 73 65 6E 74 20 20 69 ally present i
016110: 6E 20 20 74 68 65 20 20 64 61 74 61 20 20 73 74 n the data st
016120: 61 63 6B 2E 20 20 20 46 6F 72 0D 0A 20 20 20 20 ack. For..
016130: 20 20 72 65 66 65 72 65 6E 63 65 20 20 70 61 72 reference par
016140: 61 6D 65 74 65 72 73 2C 20 20 74 68 65 20 61 64 ameters, the ad
016150: 64 72 65 73 73 20 6F 66 20 74 68 65 20 76 61 72 dress of the var
016160: 69 61 62 6C 65 20 69 73 20 70 72 65 73 65 6E 74 iable is present
016170: 20 69 6E 20 74 68 65 0D 0A 20 20 20 20 20 20 64 in the.. d
016180: 61 74 61 20 73 74 61 63 6B 2E 20 20 49 66 20 74 ata stack. If t
016190: 68 65 20 70 72 6F 63 65 64 75 72 65 20 68 61 73 he procedure has
0161A0: 20 6E 6F 20 70 61 72 61 6D 65 74 65 72 73 2C 20 no parameters,
0161B0: 74 68 65 20 70 61 72 61 6D 65 74 65 72 20 6C 65 the parameter le
0161C0: 6E 67 74 68 0D 0A 20 20 20 20 20 20 66 69 65 6C ngth.. fiel
0161D0: 64 20 69 73 20 7A 65 72 6F 2E 0D 0A 0D 0A 20 20 d is zero.....
0161E0: 20 20 20 20 20 20 20 20 20 46 75 6E 63 74 69 6F Functio
0161F0: 6E 20 72 65 74 75 72 6E 20 76 61 6C 75 65 73 20 n return values
016200: 68 65 20 70 72 6F 63 65 64 75 72 65 20 64 61 74 he procedure dat
016210: 61 20 61 72 65 61 73 2E 20 20 54 6F 20 72 65 73 a areas. To res
016220: 75 6D 65 20 20 65 78 65 63 75 74 69 6F 6E 2C 20 ume execution,
016230: 20 75 73 65 0D 0A 20 20 20 20 20 20 74 68 65 20 use.. the
016240: 58 50 20 63 6F 6D 6D 61 6E 64 20 74 6F 20 73 65 XP command to se
016250: 74 20 74 68 65 20 69 6E 73 74 72 75 63 74 69 6F t the instructio
016260: 6E 20 61 64 64 72 65 73 73 20 61 68 65 61 64 20 n address ahead
016270: 62 79 20 31 2C 20 74 6F 20 67 65 74 20 70 61 73 by 1, to get pas
016280: 74 0D 0A 20 20 20 20 20 20 74 68 65 20 52 53 54 t.. the RST
016290: 20 37 20 69 6E 73 74 72 75 63 74 69 6F 6E 2E 0D 7 instruction..
0162A0: 0A 0D 0A 0D 0A 20 20 20 20 20 20 31 30 2E 37 20 ..... 10.7
0162B0: 20 20 43 6F 6E 76 65 72 74 6D 20 70 72 6F 67 72 Convertm progr
0162C0: 61 6D 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 am....
0162D0: 20 54 68 65 20 20 43 6F 6E 76 65 72 74 6D 20 20 The Convertm
0162E0: 70 72 6F 67 72 61 6D 20 20 74 72 61 6E 73 6C 61 program transla
0162F0: 74 65 73 20 4D 69 63 72 6F 73 6F 66 74 20 66 6F tes Microsoft fo
016300: 72 6D 61 74 20 27 2E 52 45 4C 27 20 66 69 6C 65 rmat '.REL' file
016310: 73 0D 0A 20 20 20 20 20 20 69 6E 74 6F 20 4A 52 s.. into JR
016320: 54 20 66 6F 72 6D 61 74 20 27 2E 49 4E 54 27 20 T format '.INT'
016330: 66 69 6C 65 73 2E 20 20 4F 6E 6C 79 20 20 27 2E files. Only '.
016340: 52 45 4C 27 20 20 66 69 6C 65 73 20 20 6D 61 79 REL' files may
016350: 20 20 62 65 20 20 69 6E 70 75 74 20 20 2D 0D 0A be input -..
016360: 20 20 20 20 20 20 27 2E 48 45 58 27 20 66 69 6C '.HEX' fil
016370: 65 73 20 64 6F 20 6E 6F 74 20 63 6F 6E 74 61 69 es do not contai
016380: 6E 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 61 62 n information ab
016390: 6F 75 74 20 72 65 6C 6F 63 61 74 69 6F 6E 20 61 out relocation a
0163A0: 64 64 72 65 73 73 65 73 2E 0D 0A 0D 0A 20 20 20 ddresses.....
0163B0: 20 20 20 20 20 20 20 20 54 6F 20 72 75 6E 20 74 To run t
0163C0: 68 65 20 43 6F 6E 76 65 72 74 6D 20 70 72 6F 67 he Convertm prog
0163D0: 72 61 6D 2C 20 65 6E 74 65 72 3A 0D 0A 0D 0A 20 ram, enter:....
0163E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0163F0: 20 45 58 45 43 20 43 4F 4E 56 45 52 54 4D 0D 0A EXEC CONVERTM..
016400: 6D 75 73 74 20 62 65 20 73 74 6F 72 65 64 20 6A must be stored j
016410: 75 73 74 20 62 65 66 6F 72 65 20 74 68 65 20 66 ust before the f
016420: 75 6E 63 74 69 6F 6E 27 73 0D 0A 20 20 20 20 20 unction's..
016430: 20 66 69 72 73 74 20 70 61 72 61 6D 65 74 65 72 first parameter
016440: 20 69 6E 20 74 68 65 20 64 61 74 61 20 73 74 61 in the data sta
016450: 63 6B 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 ck.....
016460: 20 20 44 61 74 61 20 73 74 61 63 6B 20 61 66 74 Data stack aft
016470: 65 72 20 66 75 6E 63 74 69 6F 6E 20 63 61 6C 6C er function call
016480: 20 20 58 20 3A 3D 20 54 45 53 54 28 20 33 2C 38 X := TEST( 3,8
016490: 20 29 3B 0D 0A 20 20 20 20 20 20 28 54 68 65 20 );.. (The
0164A0: 72 65 74 75 72 6E 20 76 61 6C 75 65 20 69 73 20 return value is
0164B0: 6F 66 20 74 68 65 20 74 79 70 65 20 69 6E 74 65 of the type inte
0164C0: 67 65 72 29 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ger)....
0164D0: 20 20 20 20 20 20 20 20 20 20 33 20 20 20 20 20 3
0164E0: 38 20 20 20 20 20 6C 65 6E 67 74 68 20 20 20 20 8 length
0164F0: 20 20 20 20 6C 69 6E 6B 61 67 65 20 62 6C 6F 63 linkage bloc
016500: 6B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 72 k.. r
016510: 72 72 72 20 20 30 33 30 30 20 20 30 38 30 30 20 rrr 0300 0800
016520: 20 30 34 30 30 20 20 20 20 20 20 20 20 78 78 20 0400 xx
016530: 78 78 20 78 78 20 78 78 20 78 78 20 78 78 20 20 xx xx xx xx xx
016540: 79 79 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 yy..
016550: 49 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 I
016560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 20 I
016570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
016580: 20 49 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 I..
016590: 72 65 74 75 72 6E 20 76 61 6C 75 65 20 20 20 20 return value
0165A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 55 CU
0165B0: 52 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 R
0165C0: 20 54 4F 53 0D 0A 0D 0A 20 20 20 20 20 20 20 20 TOS....
0165D0: 20 20 20 49 66 20 74 68 65 20 72 65 74 75 72 6E If the return
0165E0: 20 76 61 6C 75 65 20 69 73 20 6F 66 20 74 79 70 value is of typ
0165F0: 65 20 43 48 41 52 2C 20 61 20 73 74 72 69 6E 67 e CHAR, a string
016600: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 65 .. The
016610: 20 20 70 72 6F 67 72 61 6D 20 20 77 69 6C 6C 20 program will
016620: 20 69 6E 71 75 69 72 65 20 20 61 74 20 20 74 68 inquire at th
016630: 65 20 63 6F 6E 73 6F 6C 65 20 66 6F 72 20 74 68 e console for th
016640: 65 20 6E 61 6D 65 20 6F 66 20 74 68 65 0D 0A 20 e name of the..
016650: 20 20 20 20 20 6D 6F 64 75 6C 65 20 74 6F 20 62 module to b
016660: 65 20 74 72 61 6E 73 6C 61 74 65 64 2E 20 20 41 e translated. A
016670: 20 66 69 6C 65 20 74 79 70 65 20 20 6F 66 20 20 file type of
016680: 27 2E 52 45 4C 27 20 20 69 73 20 20 61 73 73 75 '.REL' is assu
016690: 6D 65 64 2E 20 20 20 54 68 65 0D 0A 20 20 20 20 med. The..
0166A0: 20 20 6F 75 74 70 75 74 20 6D 6F 64 75 6C 65 20 output module
0166B0: 27 2E 49 4E 54 27 20 66 69 6C 65 20 69 73 20 70 '.INT' file is p
0166C0: 6C 61 63 65 64 20 6F 6E 20 74 68 65 20 73 61 6D laced on the sam
0166D0: 65 20 64 69 73 6B 2E 0D 0A 0D 0A 0D 0A 20 20 20 e disk.......
0166E0: 20 20 20 31 30 2E 38 20 20 20 53 61 6D 70 6C 65 10.8 Sample
0166F0: 20 61 73 73 65 6D 62 6C 79 20 70 72 6F 67 72 61 assembly progra
016700: 6D 73 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 ms....
016710: 20 54 68 72 65 65 20 20 73 61 6D 70 6C 65 20 61 Three sample a
016720: 73 73 65 6D 62 6C 79 20 70 72 6F 67 72 61 6D 73 ssembly programs
016730: 20 61 72 65 20 69 6E 63 6C 75 64 65 64 20 68 65 are included he
016740: 72 65 2E 20 20 54 77 6F 20 65 78 74 65 72 6E 61 re. Two externa
016750: 6C 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 64 75 l.. procedu
016760: 72 65 73 20 28 73 65 74 62 69 74 2C 20 72 65 73 res (setbit, res
016770: 65 74 62 69 74 29 20 61 6E 64 20 6F 6E 65 20 65 etbit) and one e
016780: 78 74 65 72 6E 61 6C 20 66 75 6E 63 74 69 6F 6E xternal function
016790: 20 28 74 65 73 74 62 69 74 29 20 63 61 6E 0D 0A (testbit) can..
0167A0: 20 20 20 20 20 20 62 65 20 63 61 6C 6C 65 64 20 be called
0167B0: 66 72 6F 6D 20 61 6E 79 20 50 61 73 63 61 6C 20 from any Pascal
0167C0: 70 72 6F 67 72 61 6D 20 6F 72 20 65 78 74 65 72 program or exter
0167D0: 6E 61 6C 20 66 75 6E 63 74 69 6F 6E 2E 20 20 54 nal function. T
0167E0: 68 65 73 65 20 20 73 6D 61 6C 6C 0D 0A 20 20 20 hese small..
0167F0: 20 20 20 6D 6F 64 75 6C 65 73 20 20 70 72 6F 76 modules prov
016800: 2C 20 6F 72 20 20 61 20 20 73 74 72 75 63 74 75 , or a structu
016810: 72 65 64 0D 0A 20 20 20 20 20 20 76 61 72 69 61 red.. varia
016820: 62 6C 65 20 20 28 65 6E 74 69 72 65 20 20 61 72 ble (entire ar
016830: 72 61 79 2C 20 20 65 6E 74 69 72 65 20 20 72 65 ray, entire re
016840: 63 6F 72 64 29 20 20 74 68 65 6E 20 20 74 68 65 cord) then the
016850: 72 65 20 69 73 20 61 20 74 77 6F 20 62 79 74 65 re is a two byte
016860: 0D 0A 20 20 20 20 20 20 6C 65 6E 67 74 68 20 66 .. length f
016870: 69 65 6C 64 20 62 65 74 77 65 65 6E 20 74 68 65 ield between the
016880: 20 72 65 74 75 72 6E 20 76 61 6C 75 65 20 61 6E return value an
016890: 64 20 74 68 65 20 66 69 72 73 74 20 70 61 72 61 d the first para
0168A0: 6D 65 74 65 72 2E 20 20 20 54 68 69 73 0D 0A 20 meter. This..
0168B0: 20 20 20 20 20 66 69 65 6C 64 20 20 69 73 20 20 field is
0168C0: 73 65 74 20 62 79 20 45 58 45 43 20 61 6E 64 20 set by EXEC and
0168D0: 4D 55 53 54 20 4E 4F 54 20 62 65 20 6D 6F 64 69 MUST NOT be modi
0168E0: 66 69 65 64 2E 20 20 49 66 20 74 68 65 20 72 65 fied. If the re
0168F0: 74 75 72 6E 20 76 61 6C 75 65 0D 0A 20 20 20 20 turn value..
016900: 20 20 69 73 20 61 20 64 79 6E 61 6D 69 63 20 73 is a dynamic s
016910: 74 72 69 6E 67 2C 20 74 68 65 20 63 75 72 72 65 tring, the curre
016920: 6E 74 20 6C 65 6E 67 74 68 20 66 69 65 6C 64 20 nt length field
016930: 69 73 20 61 20 74 77 6F 20 62 79 74 65 20 66 69 is a two byte fi
016940: 65 6C 64 20 20 61 74 0D 0A 20 20 20 20 20 20 74 eld at.. t
016950: 68 65 20 20 62 65 67 69 6E 6E 69 6E 67 20 20 6F he beginning o
016960: 66 20 74 68 65 20 73 74 72 69 6E 67 2E 20 54 68 f the string. Th
016970: 69 73 20 6D 75 73 74 20 62 65 20 73 65 74 20 74 is must be set t
016980: 6F 20 74 68 65 20 64 65 73 69 72 65 64 20 6C 65 o the desired le
016990: 6E 67 74 68 0D 0A 20 20 20 20 20 20 6F 66 20 74 ngth.. of t
0169A0: 68 65 20 66 69 65 6C 64 2E 0D 0A 0D 0A 20 20 20 he field.....
0169B0: 20 20 20 20 20 20 20 20 44 61 74 61 20 73 74 61 Data sta
0169C0: 63 6B 20 61 66 74 65 72 20 66 75 6E 63 74 69 6F ck after functio
0169D0: 6E 20 63 61 6C 6C 20 20 4E 41 4D 45 20 3A 3D 20 n call NAME :=
0169E0: 4C 4F 4F 4B 55 50 28 20 27 58 27 2C 31 29 3B 0D LOOKUP( 'X',1);.
0169F0: 0A 20 20 20 20 20 20 28 54 68 65 20 72 65 74 75 . (The retu
016A00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
016A10: 13 00 00 00 02 09 2A E5 13 00 C1 02 00 00 00 02 ......*.........
016A20: 13 00 C6 02 00 00 00 02 13 00 C2 02 00 00 00 02 ................
016A30: 13 00 C7 02 00 00 00 02 13 00 C3 02 00 00 00 02 ................
016A40: 13 00 C8 02 00 00 00 02 13 00 C4 02 00 00 00 02 ................
016A50: 13 00 C9 02 00 00 00 02 13 00 C5 02 00 00 00 02 ................
016A60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016A70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016A80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016A90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016AF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
016B00: 69 64 65 20 20 66 61 73 74 20 20 61 6E 64 20 73 ide fast and s
016B10: 69 6D 70 6C 65 20 62 69 74 20 6D 61 6E 69 70 75 imple bit manipu
016B20: 6C 61 74 69 6F 6E 20 66 61 63 69 6C 69 74 69 65 lation facilitie
016B30: 73 2E 20 20 54 68 65 79 0D 0A 20 20 20 20 20 20 s. They..
016B40: 61 6C 73 6F 20 69 6C 6C 75 73 74 72 61 74 65 20 also illustrate
016B50: 74 68 65 20 70 61 73 73 69 6E 67 20 61 6E 64 20 the passing and
016B60: 72 65 74 75 72 6E 69 6E 67 20 6F 66 20 70 61 72 returning of par
016B70: 61 6D 65 74 65 72 73 20 66 6F 72 20 20 61 73 73 ameters for ass
016B80: 65 6D 62 6C 79 0D 0A 20 20 20 20 20 20 6C 61 6E embly.. lan
016B90: 67 75 61 67 65 20 65 78 74 65 72 6E 61 6C 20 70 guage external p
016BA0: 72 6F 63 65 64 75 72 65 73 2E 0D 0A 0D 0A 20 20 rocedures.....
016BB0: 20 20 20 20 4C 69 73 74 69 6E 67 20 6F 66 20 73 Listing of s
016BC0: 65 74 62 69 74 2E 61 73 6D 3A 0D 0A 0D 0A 20 20 etbit.asm:....
016BD0: 20 20 20 20 3B 73 65 74 62 69 74 2E 61 73 6D 0D ;setbit.asm.
016BE0: 0A 20 20 20 20 20 20 3B 65 78 74 65 72 6E 61 6C . ;external
016BF0: 20 70 72 6F 63 65 64 75 72 65 20 77 68 69 63 68 procedure which
016C00: 20 73 65 74 73 20 61 20 62 69 74 20 6F 6E 20 69 sets a bit on i
016C10: 6E 20 61 20 62 79 74 65 0D 0A 20 20 20 20 20 20 n a byte..
016C20: 3B 0D 0A 20 20 20 20 20 20 3B 20 70 72 6F 63 65 ;.. ; proce
016C30: 64 75 72 65 20 73 65 74 62 69 74 20 28 20 76 61 dure setbit ( va
016C40: 72 20 78 20 3A 20 63 68 61 72 3B 20 62 69 74 20 r x : char; bit
016C50: 3A 20 69 6E 74 65 67 65 72 20 29 3B 0D 0A 20 20 : integer );..
016C60: 20 20 20 20 3B 20 20 20 20 20 20 20 20 20 20 20 ;
016C70: 20 20 20 20 65 78 74 65 72 6E 3B 0D 0A 20 20 20 extern;..
016C80: 20 20 20 3B 20 62 69 74 23 20 69 6E 20 72 61 6E ; bit# in ran
016C90: 67 65 20 30 2E 2E 37 0D 0A 20 20 20 20 20 20 3B ge 0..7.. ;
016CA0: 0D 0A 20 20 20 20 20 20 3B 65 6E 74 72 79 20 63 .. ;entry c
016CB0: 6F 64 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ode..
016CC0: 20 20 20 64 62 20 39 35 2C 36 2C 30 20 20 20 20 db 95,6,0
016CD0: 20 20 20 3B 69 6E 74 20 76 6D 63 6F 64 65 0D 0A ;int vmcode..
016CE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 62 db
016CF0: 20 39 32 20 20 20 20 20 20 20 20 20 20 20 3B 6C 92 ;l
016D00: 20 20 20 20 20 20 20 20 20 20 20 20 64 62 20 39 db 9
016D10: 35 2C 36 2C 30 20 20 20 20 20 20 20 3B 69 6E 74 5,6,0 ;int
016D20: 20 76 6D 63 6F 64 65 0D 0A 20 20 20 20 20 20 20 vmcode..
016D30: 20 20 20 20 20 20 20 64 62 20 39 32 20 20 20 20 db 92
016D40: 20 20 20 20 20 20 20 3B 6C 70 6E 20 76 6D 63 6F ;lpn vmco
016D50: 64 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 de..
016D60: 20 20 64 62 20 30 20 20 20 20 20 20 20 20 20 20 db 0
016D70: 20 20 3B 6D 6F 64 65 20 76 6D 63 6F 64 65 0D 0A ;mode vmcode..
016D80: 20 20 20 20 20 20 3B 6F 6E 20 65 6E 74 72 79 20 ;on entry
016D90: 20 62 63 3D 77 74 6F 73 20 20 64 65 3D 77 62 20 bc=wtos de=wb
016DA0: 20 68 6C 3D 77 62 61 73 65 0D 0A 20 20 20 20 20 hl=wbase..
016DB0: 20 3B 0D 0A 20 20 20 20 20 20 3B 67 65 74 20 62 ;.. ;get b
016DC0: 69 74 23 20 69 6E 74 6F 20 62 5F 72 65 67 20 61 it# into b_reg a
016DD0: 6E 64 20 78 20 69 6E 74 6F 20 61 5F 72 65 67 0D nd x into a_reg.
016DE0: 0A 20 20 20 20 20 20 74 65 73 74 62 69 74 20 78 . testbit x
016DF0: 63 68 67 20 20 20 20 20 20 20 20 20 20 20 20 3B chg ;
016E00: 68 6C 3D 77 62 0D 0A 20 20 20 20 20 20 20 20 20 hl=wb..
016E10: 20 20 20 20 20 64 63 78 20 68 21 20 64 63 78 20 dcx h! dcx
016E20: 68 21 20 64 63 78 20 68 21 20 64 63 78 20 68 20 h! dcx h! dcx h
016E30: 3B 70 6F 69 6E 74 20 74 6F 20 62 69 74 20 6C 6F ;point to bit lo
016E40: 77 6E 69 62 0D 0A 20 20 20 20 20 20 20 20 20 20 wnib..
016E50: 20 20 20 20 6D 6F 76 20 62 2C 6D 20 20 20 20 20 mov b,m
016E60: 20 20 20 20 3B 6C 6F 77 20 62 79 74 65 20 6F 66 ;low byte of
016E70: 20 62 69 74 0D 0A 20 20 20 20 20 20 20 20 20 20 bit..
016E80: 20 20 20 20 64 63 78 20 68 21 20 6D 6F 76 20 61 dcx h! mov a
016E90: 2C 6D 20 20 3B 78 0D 0A 20 20 20 20 20 20 20 20 ,m ;x..
016EA0: 20 20 20 20 20 20 69 6E 72 20 62 0D 0A 20 20 20 inr b..
016EB0: 20 20 20 3B 73 68 69 66 74 20 6C 6F 6F 70 0D 0A ;shift loop..
016EC0: 20 20 20 20 20 20 6C 6F 6F 70 20 20 20 20 72 6C loop rl
016ED0: 63 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 c..
016EE0: 20 64 63 72 20 62 0D 0A 20 20 20 20 20 20 20 20 dcr b..
016EF0: 20 20 20 20 20 20 6A 6E 7A 20 6C 6F 6F 70 0D 0A jnz loop..
016F00: 70 6E 20 76 6D 63 6F 64 65 0D 0A 20 20 20 20 20 pn vmcode..
016F10: 20 20 20 20 20 20 20 20 20 64 62 20 30 20 20 20 db 0
016F20: 20 20 20 20 20 20 20 20 20 3B 6D 6F 64 65 20 76 ;mode v
016F30: 6D 63 6F 64 65 0D 0A 20 20 20 20 20 20 3B 6F 6E mcode.. ;on
016F40: 20 65 6E 74 72 79 20 20 62 63 3D 77 74 6F 73 20 entry bc=wtos
016F50: 20 64 65 3D 77 62 20 20 68 6C 3D 77 62 61 73 65 de=wb hl=wbase
016F60: 0D 0A 20 20 20 20 20 20 3B 0D 0A 20 20 20 20 20 .. ;..
016F70: 20 3B 67 65 74 20 62 69 74 23 20 69 6E 20 62 5F ;get bit# in b_
016F80: 72 65 67 2C 20 20 61 64 64 72 28 78 29 20 69 6E reg, addr(x) in
016F90: 20 68 6C 2C 20 20 78 20 69 6E 74 6F 20 63 5F 72 hl, x into c_r
016FA0: 65 67 0D 0A 20 20 20 20 20 20 73 65 74 62 69 74 eg.. setbit
016FB0: 20 20 78 63 68 67 20 20 20 20 20 20 20 20 20 20 xchg
016FC0: 20 20 3B 68 6C 3D 77 62 0D 0A 20 20 20 20 20 20 ;hl=wb..
016FD0: 20 20 20 20 20 20 20 20 64 63 78 20 68 21 20 64 dcx h! d
016FE0: 63 78 20 68 21 20 64 63 78 20 68 21 20 64 63 78 cx h! dcx h! dcx
016FF0: 20 68 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 h..
017000: 20 20 6D 6F 76 20 62 2C 6D 20 20 20 20 20 20 20 mov b,m
017010: 20 20 3B 62 69 74 23 0D 0A 20 20 20 20 20 20 20 ;bit#..
017020: 20 20 20 20 20 20 20 64 63 78 20 68 21 20 6D 6F dcx h! mo
017030: 76 20 64 2C 6D 21 20 64 63 78 20 68 21 20 6D 6F v d,m! dcx h! mo
017040: 76 20 65 2C 6D 20 3B 61 64 64 72 28 78 29 0D 0A v e,m ;addr(x)..
017050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 78 63 xc
017060: 68 67 20 20 20 20 20 20 20 20 20 20 20 20 3B 68 hg ;h
017070: 6C 3D 61 64 64 72 28 78 29 0D 0A 20 20 20 20 20 l=addr(x)..
017080: 20 20 20 20 20 20 20 20 20 6D 6F 76 20 63 2C 6D mov c,m
017090: 20 20 20 20 20 20 20 20 20 3B 63 3D 78 0D 0A 20 ;c=x..
0170A0: 20 20 20 20 20 3B 63 72 65 61 74 65 20 6D 61 73 ;create mas
0170B0: 6B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 k..
0170C0: 20 69 6E 72 20 62 20 20 20 20 20 20 20 20 20 20 inr b
0170D0: 20 3B 69 6E 63 72 20 6C 6F 6F 70 20 63 6F 75 6E ;incr loop coun
0170E0: 74 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 t..
0170F0: 20 6D 76 69 20 61 2C 31 0D 0A 20 20 20 20 20 20 mvi a,1..
017100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6A 63 jc
017110: 20 74 72 75 65 20 20 20 20 20 20 20 20 20 3B 62 true ;b
017120: 69 74 20 69 73 20 73 65 74 0D 0A 20 20 20 20 20 it is set..
017130: 20 3B 66 61 6C 73 65 20 3A 20 62 69 74 20 69 73 ;false : bit is
017140: 20 7A 65 72 6F 0D 0A 20 20 20 20 20 20 20 20 20 zero..
017150: 20 20 20 20 20 64 63 78 20 68 21 20 6D 76 69 20 dcx h! mvi
017160: 6D 2C 30 21 20 64 63 78 20 68 21 20 6D 76 69 20 m,0! dcx h! mvi
017170: 6D 2C 30 0D 0A 20 20 20 20 20 20 20 20 20 20 20 m,0..
017180: 20 20 20 72 65 74 0D 0A 20 20 20 20 20 20 3B 74 ret.. ;t
017190: 72 75 65 20 3A 20 62 69 74 20 69 73 20 6F 6E 65 rue : bit is one
0171A0: 0D 0A 20 20 20 20 20 20 74 72 75 65 20 20 20 20 .. true
0171B0: 64 63 78 20 68 21 20 6D 76 69 20 6D 2C 30 21 20 dcx h! mvi m,0!
0171C0: 64 63 78 20 68 21 20 6D 76 69 20 6D 2C 31 0D 0A dcx h! mvi m,1..
0171D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re
0171E0: 74 0D 0A 20 20 20 20 20 20 3B 0D 0A 20 20 20 20 t.. ;..
0171F0: 20 20 20 20 20 20 20 20 20 20 65 6E 64 0D 0A 1A end...
017200: 2D 7D 80 3B EF 94 F4 D7 6C 39 11 8E 11 59 59 D3 -}.;....l9...YY.
017210: 2D E1 DE 1F 5E 61 81 AB 23 1F 7C 80 9B 1C 5E A1 -...^a..#.|...^.
017220: B7 94 72 C4 94 92 DE A2 8D 94 61 0D 93 32 92 D2 ..r.......a..2..
017230: 1C D3 39 4E 3B 25 3D AE 8E 7C 80 3B 9F E2 18 FF ..9N;%=..|.;....
017240: 57 2A 51 5F 76 BB DD D2 07 B8 F3 69 DB AB EB 68 W*Q_v......i...h
017250: BF 11 8E 61 0D 53 47 6A E9 03 DC 79 B2 86 AE A3 ...a.SGj...y...£
017260: FD 46 38 86 35 4C 1D A9 A5 0F 70 E7 4A 6F AF 8B .F8.5L....p.Jo..
017270: 6E 0D E3 18 D6 30 75 A4 96 3E C0 9D DF BB 8E 8D n....0u..>......
017280: 14 6B 3A 1C 43 91 A4 A5 0F 70 E7 F3 EB D8 48 B1 .k:.C....p....H.
017290: A6 C3 31 14 49 5A FA 00 77 4E 26 2F 7D F0 01 6E ..1.IZ..wN&/}..n
0172A0: 72 26 CA 07 B8 C9 69 67 71 8C D3 4E 49 7F 6D 0D r&....igq..NI.m.
0172B0: 93 EA A5 D0 D2 07 1F 7C F0 01 6E 72 78 85 5E A7 .......|..nrx.^.
0172C0: A4 B7 D6 74 10 45 68 23 65 4C E7 68 94 EE 94 D4 ...t.Eh#eL.h....
0172D0: 38 ED 70 75 E4 03 DC A4 B7 89 AE 8D D4 84 63 88 8.pu..........c.
0172E0: 52 32 FF CD DD 30 3C DA FD 16 BA 47 A9 44 2D 7D R2...0<....G.D-}
0172F0: 80 9B B0 E5 44 38 86 28 25 F3 DF DC 0D C3 A3 9F ....D8.(%.....£.
017300: 6C 6F 6F 70 20 20 20 20 72 72 63 0D 0A 20 20 20 loop rrc..
017310: 20 20 20 20 20 20 20 20 20 20 20 64 63 72 20 62 dcr b
017320: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
017330: 6A 6E 7A 20 6C 6F 6F 70 0D 0A 20 20 20 20 20 20 jnz loop..
017340: 3B 61 3D 6D 61 73 6B 20 20 63 3D 62 79 74 65 0D ;a=mask c=byte.
017350: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6F . o
017360: 72 61 20 63 0D 0A 20 20 20 20 20 20 20 20 20 20 ra c..
017370: 20 20 20 20 6D 6F 76 20 6D 2C 61 20 20 20 20 20 mov m,a
017380: 20 20 20 20 3B 73 74 6F 72 65 20 62 79 74 65 0D ;store byte.
017390: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 . r
0173A0: 65 74 0D 0A 20 20 20 20 20 20 3B 0D 0A 20 20 20 et.. ;..
0173B0: 20 20 20 20 20 20 20 20 20 20 20 65 6E 64 0D 0A end..
0173C0: 0D 0A 20 20 20 20 20 20 4C 69 73 74 69 6E 67 20 .. Listing
0173D0: 6F 66 20 72 65 73 65 74 62 69 74 2E 61 73 6D 0D of resetbit.asm.
0173E0: 0A 0D 0A 20 20 20 20 20 20 3B 72 65 73 65 74 62 ... ;resetb
0173F0: 69 74 2E 61 73 6D 0D 0A 20 20 20 20 20 20 3B 65 it.asm.. ;e
017400: 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 xternal procedur
017410: 65 20 77 68 69 63 68 20 72 65 73 65 74 20 62 69 e which reset bi
017420: 74 20 69 6E 20 61 20 62 79 74 65 0D 0A 20 20 20 t in a byte..
017430: 20 20 20 3B 0D 0A 20 20 20 20 20 20 3B 20 70 72 ;.. ; pr
017440: 6F 63 65 64 75 72 65 20 72 65 73 65 74 62 69 74 ocedure resetbit
017450: 20 28 20 76 61 72 20 78 20 3A 20 63 68 61 72 3B ( var x : char;
017460: 20 62 69 74 20 3A 20 69 6E 74 65 67 65 72 20 29 bit : integer )
017470: 3B 0D 0A 20 20 20 20 20 20 3B 20 20 20 20 20 20 ;.. ;
017480: 20 20 20 20 20 20 20 20 20 65 78 74 65 72 6E 3B extern;
017490: 0D 0A 20 20 20 20 20 20 3B 20 62 69 74 23 20 69 .. ; bit# i
0174A0: 6E 20 72 61 6E 67 65 20 30 2E 2E 37 0D 0A 20 20 n range 0..7..
0174B0: 20 20 20 20 3B 0D 0A 20 20 20 20 20 20 3B 65 6E ;.. ;en
0174C0: 74 72 79 20 63 6F 64 65 0D 0A 20 20 20 20 20 20 try code..
0174D0: 20 20 20 20 20 20 20 20 64 62 20 39 35 2C 36 2C db 95,6,
0174E0: 30 20 20 20 20 20 20 20 3B 69 6E 74 20 76 6D 63 0 ;int vmc
0174F0: 6F 64 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ode..
017500: 20 20 20 20 20 20 31 31 2E 20 20 20 53 74 6F 72 11. Stor
017510: 61 67 65 20 6D 61 6E 61 67 65 6D 65 6E 74 0D 0A age management..
017520: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 69 .. Thi
017530: 73 20 20 73 65 63 74 69 6F 6E 20 64 69 73 63 75 s section discu
017540: 73 73 65 73 20 74 68 65 20 69 6E 69 74 69 61 6C sses the initial
017550: 69 7A 61 74 69 6F 6E 20 61 6E 64 20 73 74 72 75 ization and stru
017560: 63 74 75 72 65 20 6F 66 20 6D 61 69 6E 0D 0A 20 cture of main..
017570: 20 20 20 20 20 73 74 6F 72 61 67 65 20 69 6E 20 storage in
017580: 74 68 65 20 4A 52 54 20 50 61 73 63 61 6C 20 73 the JRT Pascal s
017590: 79 73 74 65 6D 20 64 75 72 69 6E 67 20 65 78 65 ystem during exe
0175A0: 63 75 74 69 6F 6E 20 6F 66 20 50 61 73 63 61 6C cution of Pascal
0175B0: 20 70 72 6F 67 72 61 6D 73 2E 0D 0A 0D 0A 0D 0A programs.......
0175C0: 20 20 20 20 20 20 31 31 2E 31 20 20 4D 61 69 6E 11.1 Main
0175D0: 20 73 74 6F 72 61 67 65 0D 0A 0D 0A 20 20 20 20 storage....
0175E0: 20 20 20 20 20 20 20 57 68 65 6E 20 61 20 50 61 When a Pa
0175F0: 73 63 61 6C 20 70 72 6F 67 72 61 6D 20 69 73 20 scal program is
017600: 73 74 61 72 74 65 64 20 62 79 20 65 6E 74 65 72 started by enter
017610: 69 6E 67 20 74 68 65 20 20 63 6F 6D 6D 61 6E 64 ing the command
017620: 20 20 22 45 58 45 43 0D 0A 20 20 20 20 20 20 70 "EXEC.. p
017630: 72 6F 67 5F 6E 61 6D 65 22 2C 20 20 74 68 65 20 rog_name", the
017640: 45 58 45 43 2E 43 4F 4D 20 66 69 6C 65 20 69 73 EXEC.COM file is
017650: 20 6C 6F 61 64 65 64 20 69 6E 74 6F 20 6D 61 69 loaded into mai
017660: 6E 20 73 74 6F 72 61 67 65 20 61 74 20 61 64 64 n storage at add
017670: 72 65 73 73 0D 0A 20 20 20 20 20 20 31 30 30 48 ress.. 100H
017680: 20 62 79 20 74 68 65 20 43 50 2F 4D 20 6F 70 65 by the CP/M ope
017690: 72 61 74 69 6E 67 20 73 79 73 74 65 6D 2E 20 20 rating system.
0176A0: 41 66 74 65 72 20 45 58 45 43 20 72 65 63 65 69 After EXEC recei
0176B0: 76 65 73 20 63 6F 6E 74 72 6F 6C 20 20 66 72 6F ves control fro
0176C0: 6D 0D 0A 20 20 20 20 20 20 43 50 2F 4D 2C 20 20 m.. CP/M,
0176D0: 69 74 20 20 64 65 74 65 72 6D 69 6E 65 73 20 20 it determines
0176E0: 68 6F 77 20 6D 75 63 68 20 73 74 6F 72 61 67 65 how much storage
0176F0: 20 69 73 20 61 76 61 69 6C 61 62 6C 65 20 61 6E is available an
017700: 20 20 20 64 62 20 39 32 20 20 20 20 20 20 20 20 db 92
017710: 20 20 20 3B 6C 70 6E 20 76 6D 63 6F 64 65 0D 0A ;lpn vmcode..
017720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 62 db
017730: 20 30 20 20 20 20 20 20 20 20 20 20 20 20 3B 6D 0 ;m
017740: 6F 64 65 20 76 6D 63 6F 64 65 0D 0A 20 20 20 20 ode vmcode..
017750: 20 20 3B 6F 6E 20 65 6E 74 72 79 20 20 62 63 3D ;on entry bc=
017760: 77 74 6F 73 20 20 64 65 3D 77 62 20 20 68 6C 3D wtos de=wb hl=
017770: 77 62 61 73 65 0D 0A 20 20 20 20 20 20 3B 0D 0A wbase.. ;..
017780: 20 20 20 20 20 20 3B 67 65 74 20 62 69 74 23 20 ;get bit#
017790: 69 6E 20 62 5F 72 65 67 2C 20 20 61 64 64 72 28 in b_reg, addr(
0177A0: 78 29 20 69 6E 20 68 6C 2C 20 20 78 20 69 6E 74 x) in hl, x int
0177B0: 6F 20 63 5F 72 65 67 0D 0A 20 20 20 20 20 20 72 o c_reg.. r
0177C0: 65 73 65 74 62 69 74 20 78 63 68 67 20 20 20 20 esetbit xchg
0177D0: 20 20 20 20 20 20 20 3B 68 6C 3D 77 62 0D 0A 20 ;hl=wb..
0177E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 63 78 dcx
0177F0: 20 68 21 20 64 63 78 20 68 21 20 64 63 78 20 68 h! dcx h! dcx h
017800: 21 20 64 63 78 20 68 0D 0A 20 20 20 20 20 20 20 ! dcx h..
017810: 20 20 20 20 20 20 20 6D 6F 76 20 62 2C 6D 20 20 mov b,m
017820: 20 20 20 20 20 20 20 3B 62 69 74 23 0D 0A 20 20 ;bit#..
017830: 20 20 20 20 20 20 20 20 20 20 20 20 64 63 78 20 dcx
017840: 68 21 20 6D 6F 76 20 64 2C 6D 21 20 64 63 78 20 h! mov d,m! dcx
017850: 68 21 20 6D 6F 76 20 65 2C 6D 20 3B 61 64 64 72 h! mov e,m ;addr
017860: 28 78 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 (x)..
017870: 20 20 20 78 63 68 67 20 20 20 20 20 20 20 20 20 xchg
017880: 20 20 20 3B 68 6C 3D 61 64 64 72 28 78 29 0D 0A ;hl=addr(x)..
017890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6D 6F mo
0178A0: 76 20 63 2C 6D 20 20 20 20 20 20 20 20 20 3B 63 v c,m ;c
0178B0: 3D 78 0D 0A 20 20 20 20 20 20 3B 63 72 65 61 74 =x.. ;creat
0178C0: 65 20 6D 61 73 6B 0D 0A 20 20 20 20 20 20 20 20 e mask..
0178D0: 20 20 20 20 20 20 69 6E 72 20 62 20 20 20 20 20 inr b
0178E0: 20 20 20 20 20 20 3B 69 6E 63 72 20 6C 6F 6F 70 ;incr loop
0178F0: 20 63 6F 75 6E 74 0D 0A 20 20 20 20 20 20 20 20 count..
017900: 64 20 66 6F 72 6D 61 74 73 20 74 68 69 73 0D 0A d formats this..
017910: 20 20 20 20 20 20 61 72 65 61 2E 20 20 20 45 58 area. EX
017920: 45 43 20 20 74 68 65 6E 20 20 6C 6F 61 64 73 20 EC then loads
017930: 20 74 68 65 20 20 50 61 73 63 61 6C 20 20 70 72 the Pascal pr
017940: 6F 67 72 61 6D 20 20 6D 6F 64 75 6C 65 20 20 66 ogram module f
017950: 72 6F 6D 20 20 20 64 69 73 6B 2E 0D 0A 20 20 20 rom disk...
017960: 20 20 20 50 72 6F 63 65 73 73 69 6E 67 20 6F 66 Processing of
017970: 20 74 68 65 20 50 61 73 63 61 6C 20 70 72 6F 67 the Pascal prog
017980: 72 61 6D 20 74 68 65 6E 20 62 65 67 69 6E 73 2E ram then begins.
017990: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 44 .... D
0179A0: 75 72 69 6E 67 20 20 70 72 6F 67 72 61 6D 20 20 uring program
0179B0: 65 78 65 63 75 74 69 6F 6E 2C 20 20 74 68 65 72 execution, ther
0179C0: 65 20 61 72 65 20 66 6F 75 72 20 6D 61 69 6E 20 e are four main
0179D0: 72 65 67 69 6F 6E 73 20 6F 66 20 6D 61 69 6E 0D regions of main.
0179E0: 0A 20 20 20 20 20 20 73 74 6F 72 61 67 65 2E 20 . storage.
0179F0: 20 53 74 61 72 74 69 6E 67 20 66 72 6F 6D 20 74 Starting from t
017A00: 68 65 20 6C 6F 77 65 73 74 20 61 64 64 72 65 73 he lowest addres
017A10: 73 2C 20 74 68 65 73 65 20 61 72 65 3A 0D 0A 0D s, these are:...
017A20: 0A 20 20 20 20 20 20 31 2E 20 45 58 45 43 20 2D . 1. EXEC -
017A30: 20 54 68 65 20 72 75 6E 2D 74 69 6D 65 20 65 6E The run-time en
017A40: 76 69 72 6F 6E 6D 65 6E 74 2E 20 20 54 68 69 73 vironment. This
017A50: 20 72 65 67 69 6F 6E 20 69 73 20 66 69 78 65 64 region is fixed
017A60: 20 69 6E 20 73 69 7A 65 20 61 6E 64 0D 0A 20 20 in size and..
017A70: 20 20 20 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 contains the
017A80: 20 70 72 69 6D 61 72 79 20 72 75 6E 2D 74 69 6D primary run-tim
017A90: 65 20 73 75 70 70 6F 72 74 20 73 79 73 74 65 6D e support system
017AA0: 2E 0D 0A 0D 0A 20 20 20 20 20 20 32 2E 20 50 61 ..... 2. Pa
017AB0: 73 63 61 6C 20 70 72 6F 67 72 61 6D 20 6D 6F 64 scal program mod
017AC0: 75 6C 65 20 2D 20 54 68 69 73 20 72 65 67 69 6F ule - This regio
017AD0: 6E 20 69 73 20 66 69 78 65 64 20 69 6E 20 73 69 n is fixed in si
017AE0: 7A 65 20 61 6E 64 20 20 63 6F 6E 74 61 69 6E 73 ze and contains
017AF0: 0D 0A 20 20 20 20 20 20 74 68 65 20 63 6F 6D 70 .. the comp
017B00: 20 20 20 20 20 20 6D 76 69 20 61 2C 30 66 65 68 mvi a,0feh
017B10: 0D 0A 20 20 20 20 20 20 6C 6F 6F 70 20 20 20 20 .. loop
017B20: 72 72 63 0D 0A 20 20 20 20 20 20 20 20 20 20 20 rrc..
017B30: 20 20 20 64 63 72 20 62 0D 0A 20 20 20 20 20 20 dcr b..
017B40: 20 20 20 20 20 20 20 20 6A 6E 7A 20 6C 6F 6F 70 jnz loop
017B50: 0D 0A 20 20 20 20 20 20 3B 61 3D 6D 61 73 6B 20 .. ;a=mask
017B60: 20 63 3D 62 79 74 65 0D 0A 20 20 20 20 20 20 20 c=byte..
017B70: 20 20 20 20 20 20 20 61 6E 61 20 63 0D 0A 20 20 ana c..
017B80: 20 20 20 20 20 20 20 20 20 20 20 20 6D 6F 76 20 mov
017B90: 6D 2C 61 20 20 20 20 20 20 20 20 20 3B 73 74 6F m,a ;sto
017BA0: 72 65 20 62 79 74 65 0D 0A 20 20 20 20 20 20 20 re byte..
017BB0: 20 20 20 20 20 20 20 72 65 74 0D 0A 20 20 20 20 ret..
017BC0: 20 20 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ;..
017BD0: 20 20 20 65 6E 64 0D 0A 0D 0A 0D 0A 20 20 20 20 end......
017BE0: 20 20 4C 69 73 74 69 6E 67 20 6F 66 20 74 65 73 Listing of tes
017BF0: 74 62 69 74 2E 61 73 6D 0D 0A 0D 0A 20 20 20 20 tbit.asm....
017C00: 20 20 3B 74 65 73 74 62 69 74 2E 61 73 6D 0D 0A ;testbit.asm..
017C10: 20 20 20 20 20 20 3B 65 78 74 65 72 6E 61 6C 20 ;external
017C20: 66 75 6E 63 74 69 6F 6E 20 77 68 69 63 68 20 72 function which r
017C30: 65 74 75 72 6E 73 20 62 69 74 20 76 61 6C 75 65 eturns bit value
017C40: 20 6F 66 20 61 20 62 79 74 65 0D 0A 20 20 20 20 of a byte..
017C50: 20 20 3B 0D 0A 20 20 20 20 20 20 3B 20 66 75 6E ;.. ; fun
017C60: 63 74 69 6F 6E 20 74 65 73 74 62 69 74 20 28 20 ction testbit (
017C70: 78 20 3A 20 63 68 61 72 3B 20 62 69 74 20 3A 20 x : char; bit :
017C80: 69 6E 74 65 67 65 72 20 29 3A 0D 0A 20 20 20 20 integer ):..
017C90: 20 20 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 ;
017CA0: 20 20 62 6F 6F 6C 65 61 6E 3B 20 65 78 74 65 72 boolean; exter
017CB0: 6E 3B 0D 0A 20 20 20 20 20 20 3B 0D 0A 20 20 20 n;.. ;..
017CC0: 20 20 20 3B 20 62 69 74 20 6E 75 6D 62 65 72 20 ; bit number
017CD0: 69 73 20 69 6E 20 72 61 6E 67 65 20 30 2E 2E 37 is in range 0..7
017CE0: 0D 0A 20 20 20 20 20 20 3B 0D 0A 20 20 20 20 20 .. ;..
017CF0: 20 3B 65 6E 74 72 79 20 63 6F 64 65 0D 0A 20 20 ;entry code..
017D00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
017D10: 14 00 00 00 02 09 2A E5 14 00 C1 02 00 00 00 02 ......*.........
017D20: 14 00 C6 02 00 00 00 02 14 00 C2 02 00 00 00 02 ................
017D30: 14 00 C7 02 00 00 00 02 14 00 C3 02 00 00 00 02 ................
017D40: 14 00 C8 02 00 00 00 02 14 00 C4 02 00 00 00 02 ................
017D50: 14 00 C9 02 00 00 00 02 14 00 C5 02 00 00 00 02 ................
017D60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017D70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017D80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017D90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017E00: 69 6C 65 64 20 50 61 73 63 61 6C 20 70 72 6F 67 iled Pascal prog
017E10: 72 61 6D 20 66 72 6F 6D 20 61 6E 20 27 2E 49 4E ram from an '.IN
017E20: 54 27 20 66 69 6C 65 2E 0D 0A 0D 0A 20 20 20 20 T' file.....
017E30: 20 20 33 2E 20 20 44 61 74 61 20 20 73 74 61 63 3. Data stac
017E40: 6B 20 20 2D 20 54 68 69 73 20 72 65 67 69 6F 6E k - This region
017E50: 20 69 73 20 76 61 72 69 61 62 6C 65 20 69 6E 20 is variable in
017E60: 73 69 7A 65 2E 20 20 49 74 20 62 65 67 69 6E 73 size. It begins
017E70: 20 61 74 20 74 68 65 0D 0A 20 20 20 20 20 20 65 at the.. e
017E80: 6E 64 20 6F 66 20 74 68 65 20 50 61 73 63 61 6C nd of the Pascal
017E90: 20 70 72 6F 67 72 61 6D 20 61 6E 64 20 20 67 72 program and gr
017EA0: 6F 77 73 20 20 74 6F 77 61 72 64 20 20 68 69 67 ows toward hig
017EB0: 68 65 72 20 20 61 64 64 72 65 73 73 65 73 20 20 her addresses
017EC0: 28 61 6E 64 0D 0A 20 20 20 20 20 20 74 6F 77 61 (and.. towa
017ED0: 72 64 20 20 74 68 65 20 20 64 79 6E 61 6D 69 63 rd the dynamic
017EE0: 20 20 73 74 6F 72 61 67 65 20 20 72 65 67 69 6F storage regio
017EF0: 6E 2C 20 20 64 69 73 63 75 73 73 65 64 20 6E 65 n, discussed ne
017F00: 78 74 29 2E 20 20 54 68 69 73 20 72 65 67 69 6F xt). This regio
017F10: 6E 0D 0A 20 20 20 20 20 20 63 6F 6E 74 61 69 6E n.. contain
017F20: 73 20 61 6C 6C 20 73 74 61 74 69 63 20 76 61 72 s all static var
017F30: 69 61 62 6C 65 73 20 28 74 68 6F 73 65 20 63 72 iables (those cr
017F40: 65 61 74 65 64 20 20 62 79 20 20 56 41 52 20 20 eated by VAR
017F50: 64 65 63 6C 61 72 61 74 69 6F 6E 73 29 2C 0D 0A declarations),..
017F60: 20 20 20 20 20 20 70 61 72 61 6D 65 74 65 72 73 parameters
017F70: 20 70 61 73 73 65 64 20 74 6F 20 70 72 6F 63 65 passed to proce
017F80: 64 75 72 65 73 20 61 6E 64 20 70 72 6F 63 65 64 dures and proced
017F90: 75 72 65 20 61 63 74 69 76 61 74 69 6F 6E 20 62 ure activation b
017FA0: 6C 6F 63 6B 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 locks.....
017FB0: 34 2E 20 20 44 79 6E 61 6D 69 63 20 20 73 74 6F 4. Dynamic sto
017FC0: 72 61 67 65 20 2D 20 54 68 69 73 20 72 65 67 69 rage - This regi
017FD0: 6F 6E 20 69 73 20 76 61 72 69 61 62 6C 65 20 69 on is variable i
017FE0: 6E 20 73 69 7A 65 2E 20 20 49 74 20 62 65 67 69 n size. It begi
017FF0: 6E 73 20 61 74 0D 0A 20 20 20 20 20 20 74 68 65 ns at.. the
018000: 20 73 69 7A 65 20 20 20 20 20 20 20 20 49 0D 0A size I..
018010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 20 I
018030: 20 20 20 64 69 72 65 63 74 69 6F 6E 20 6F 66 20 direction of
018040: 67 72 6F 77 74 68 20 20 5E 20 20 20 49 0D 0A 20 growth ^ I..
018050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018060: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 2D 2D I--
018070: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
018080: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 0D 0A 20 20 -----------I..
018090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0180A0: 20 20 20 20 20 20 20 20 20 20 20 20 49 20 20 50 I P
0180B0: 41 53 43 41 4C 20 50 52 4F 47 52 41 4D 20 20 20 ASCAL PROGRAM
0180C0: 20 20 20 20 20 20 20 20 20 20 49 0D 0A 20 20 20 I..
0180D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0180E0: 20 20 20 20 20 20 20 20 20 20 20 49 20 20 20 20 I
0180F0: 20 20 20 20 49 4E 54 20 6D 6F 64 75 6C 65 20 20 INT module
018100: 20 20 20 20 20 20 20 20 20 49 0D 0A 20 20 20 20 I..
018110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018120: 20 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 I
018130: 66 69 78 65 64 20 69 6E 20 73 69 7A 65 20 20 20 fixed in size
018140: 20 20 20 20 20 20 20 20 49 0D 0A 20 20 20 20 20 I..
018150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018160: 20 20 20 20 20 20 20 20 20 49 2D 2D 2D 2D 2D 2D I------
018170: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
018180: 2D 2D 2D 2D 2D 2D 2D 49 0D 0A 20 20 20 20 20 20 -------I..
018190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0181A0: 20 20 20 20 20 20 20 20 49 20 20 45 58 45 43 2E I EXEC.
0181B0: 43 4F 4D 20 20 20 20 20 20 20 20 20 20 20 20 20 COM
0181C0: 20 20 20 20 20 20 49 0D 0A 20 20 20 20 20 20 20 I..
0181D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0181E0: 20 20 20 20 20 20 20 49 20 20 20 20 20 20 20 72 I r
0181F0: 75 6E 2D 74 69 6D 65 20 73 79 73 74 65 6D 20 20 un-time system
018200: 20 74 6F 70 20 6F 66 20 61 76 61 69 6C 61 62 6C top of availabl
018210: 65 20 73 74 6F 72 61 67 65 20 61 6E 64 20 67 72 e storage and gr
018220: 6F 77 73 20 64 6F 77 6E 20 20 74 6F 77 61 72 64 ows down toward
018230: 20 20 6C 6F 77 65 72 20 20 61 64 64 72 65 73 73 lower address
018240: 65 73 0D 0A 20 20 20 20 20 20 28 61 6E 64 20 20 es.. (and
018250: 74 6F 77 61 72 64 73 20 20 74 68 65 20 20 64 61 towards the da
018260: 74 61 20 20 73 74 61 63 6B 2C 20 20 70 72 65 76 ta stack, prev
018270: 69 6F 75 73 6C 79 20 64 69 73 63 75 73 73 65 64 iously discussed
018280: 29 2E 20 20 54 68 69 73 20 72 65 67 69 6F 6E 0D ). This region.
018290: 0A 20 20 20 20 20 20 63 6F 6E 74 61 69 6E 73 20 . contains
0182A0: 64 79 6E 61 6D 69 63 20 76 61 72 69 61 62 6C 65 dynamic variable
0182B0: 73 20 28 74 68 6F 73 65 20 20 63 72 65 61 74 65 s (those create
0182C0: 64 20 20 62 79 20 20 74 68 65 20 20 4E 45 57 20 d by the NEW
0182D0: 20 70 72 6F 63 65 64 75 72 65 29 2C 0D 0A 20 20 procedure),..
0182E0: 20 20 20 20 69 6E 70 75 74 2F 6F 75 74 70 75 74 input/output
0182F0: 20 20 62 75 66 66 65 72 73 2C 20 20 66 69 6C 65 buffers, file
018300: 20 20 63 6F 6E 74 72 6F 6C 20 62 6C 6F 63 6B 73 control blocks
018310: 2C 20 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 , external proce
018320: 64 75 72 65 73 20 61 6E 64 0D 0A 20 20 20 20 20 dures and..
018330: 20 45 58 45 43 20 63 6F 6E 74 72 6F 6C 20 74 61 EXEC control ta
018340: 62 6C 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 bles.....
018350: 20 20 20 20 53 69 6E 63 65 20 74 68 65 20 64 61 Since the da
018360: 74 61 20 73 74 61 63 6B 20 61 6E 64 20 74 68 65 ta stack and the
018370: 20 64 79 6E 61 6D 69 63 20 73 74 6F 72 61 67 65 dynamic storage
018380: 20 72 65 67 69 6F 6E 73 20 67 72 6F 77 20 74 6F regions grow to
018390: 77 61 72 64 0D 0A 20 20 20 20 20 20 65 61 63 68 ward.. each
0183A0: 20 6F 74 68 65 72 2C 20 61 20 63 6F 6C 6C 69 73 other, a collis
0183B0: 69 6F 6E 20 62 65 74 77 65 65 6E 20 74 68 65 73 ion between thes
0183C0: 65 20 61 72 65 61 73 20 69 73 20 70 6F 73 73 69 e areas is possi
0183D0: 62 6C 65 20 77 68 65 6E 20 20 73 74 6F 72 61 67 ble when storag
0183E0: 65 0D 0A 20 20 20 20 20 20 69 73 20 20 6E 65 61 e.. is nea
0183F0: 72 6C 79 20 20 66 75 6C 6C 2E 20 20 20 54 6F 20 rly full. To
018400: 20 20 20 20 20 49 0D 0A 20 20 20 20 20 20 20 20 I..
018410: 20 6C 6F 77 20 61 64 64 72 65 73 73 20 31 30 30 low address 100
018420: 48 20 20 20 20 20 49 20 20 20 20 20 66 69 78 65 H I fixe
018430: 64 20 69 6E 20 73 69 7A 65 20 20 20 20 20 20 20 d in size
018440: 20 20 20 20 49 0D 0A 20 20 20 20 20 20 20 20 20 I..
018450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018460: 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D -----------
018470: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
018480: 2D 2D 2D 2D 0D 0A 0D 0A 20 20 20 20 20 20 31 31 ----.... 11
018490: 2E 32 20 20 44 79 6E 61 6D 69 63 20 73 74 6F 72 .2 Dynamic stor
0184A0: 61 67 65 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 age....
0184B0: 20 20 54 68 65 20 4A 52 54 20 50 61 73 63 61 6C The JRT Pascal
0184C0: 20 72 75 6E 2D 74 69 6D 65 20 73 79 73 74 65 6D run-time system
0184D0: 20 20 70 72 6F 76 69 64 65 73 20 20 54 52 55 45 provides TRUE
0184E0: 20 20 64 79 6E 61 6D 69 63 20 20 73 74 6F 72 61 dynamic stora
0184F0: 67 65 0D 0A 20 20 20 20 20 20 77 69 74 68 20 20 ge.. with
018500: 61 75 74 6F 2D 63 6F 6D 70 72 65 73 73 69 6F 6E auto-compression
018510: 2E 20 20 20 56 69 72 74 75 61 6C 20 20 73 74 6F . Virtual sto
018520: 72 61 67 65 20 20 69 73 20 73 75 70 70 6F 72 74 rage is support
018530: 65 64 20 66 6F 72 20 65 78 74 65 72 6E 61 6C 0D ed for external.
018540: 0A 20 20 20 20 20 20 70 72 6F 63 65 64 75 72 65 . procedure
018550: 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 s.....
018560: 20 54 68 65 20 4A 52 54 20 50 61 73 63 61 6C 20 The JRT Pascal
018570: 44 79 6E 61 6D 69 63 20 53 74 6F 72 61 67 65 20 Dynamic Storage
018580: 4D 61 6E 61 67 65 6D 65 6E 74 20 53 79 73 74 65 Management Syste
018590: 6D 20 69 73 20 64 65 73 69 67 6E 65 64 20 20 74 m is designed t
0185A0: 6F 0D 0A 20 20 20 20 20 20 70 72 6F 76 69 64 65 o.. provide
0185B0: 20 20 63 6F 6D 70 6C 65 74 65 20 20 73 75 70 70 complete supp
0185C0: 6F 72 74 20 66 6F 72 20 61 64 76 61 6E 63 65 64 ort for advanced
0185D0: 20 66 65 61 74 75 72 65 73 20 73 75 63 68 20 61 features such a
0185E0: 73 20 64 79 6E 61 6D 69 63 20 64 61 74 61 0D 0A s dynamic data..
0185F0: 20 20 20 20 20 20 73 74 72 75 63 74 75 72 65 73 structures
018600: 20 70 72 65 76 65 6E 74 20 20 74 68 69 73 20 20 prevent this
018610: 63 6F 6E 64 69 74 69 6F 6E 2C 20 74 68 65 20 72 condition, the r
018620: 75 6E 2D 74 69 6D 65 20 73 79 73 74 65 6D 0D 0A un-time system..
018630: 20 20 20 20 20 20 6D 61 69 6E 74 61 69 6E 73 20 maintains
018640: 61 20 36 34 20 62 79 74 65 20 63 75 73 68 69 6F a 64 byte cushio
018650: 6E 20 62 65 74 77 65 65 6E 20 74 68 65 20 74 77 n between the tw
018660: 6F 20 61 72 65 61 73 2E 20 20 57 68 65 6E 20 74 o areas. When t
018670: 68 65 20 20 63 75 73 68 69 6F 6E 0D 0A 20 20 20 he cushion..
018680: 20 20 20 62 65 63 6F 6D 65 73 20 6C 65 73 73 20 becomes less
018690: 74 68 61 6E 20 36 34 20 62 79 74 65 73 2C 20 74 than 64 bytes, t
0186A0: 68 65 20 72 75 6E 2D 74 69 6D 65 20 73 79 73 74 he run-time syst
0186B0: 65 6D 20 74 61 6B 65 73 20 73 65 76 65 72 61 6C em takes several
0186C0: 20 61 63 74 69 6F 6E 73 0D 0A 20 20 20 20 20 20 actions..
0186D0: 74 6F 20 72 65 73 74 6F 72 65 20 74 68 65 20 63 to restore the c
0186E0: 75 73 68 69 6F 6E 2E 0D 0A 0D 0A 20 20 20 20 20 ushion.....
0186F0: 20 20 20 20 20 20 49 66 20 20 74 68 65 72 65 20 If there
018700: 20 69 73 20 20 6C 65 73 73 20 74 68 61 6E 20 36 is less than 6
018710: 34 20 62 79 74 65 73 20 6F 66 20 66 72 65 65 20 4 bytes of free
018720: 73 70 61 63 65 20 69 6E 20 6D 61 69 6E 20 73 74 space in main st
018730: 6F 72 61 67 65 2C 0D 0A 20 20 20 20 20 20 74 68 orage,.. th
018740: 65 20 6C 65 61 73 74 2D 72 65 63 65 6E 74 6C 79 e least-recently
018750: 2D 75 73 65 64 20 70 72 6F 63 65 64 75 72 65 20 -used procedure
018760: 77 69 6C 6C 20 62 65 20 64 65 6C 65 74 65 64 2E will be deleted.
018770: 20 20 20 44 79 6E 61 6D 69 63 20 20 73 74 6F 72 Dynamic stor
018780: 61 67 65 0D 0A 20 20 20 20 20 20 69 73 20 20 74 age.. is t
018790: 68 65 6E 20 20 63 6F 6D 70 72 65 73 73 65 64 20 hen compressed
0187A0: 20 28 73 65 65 20 20 73 65 63 74 69 6F 6E 20 31 (see section 1
0187B0: 31 2E 32 20 6F 66 20 74 68 69 73 20 6D 61 6E 75 1.2 of this manu
0187C0: 61 6C 29 2E 20 20 50 72 6F 63 65 73 73 69 6E 67 al). Processing
0187D0: 0D 0A 20 20 20 20 20 20 77 69 6C 6C 20 63 6F 6E .. will con
0187E0: 74 69 6E 75 65 20 65 76 65 6E 20 20 69 66 20 20 tinue even if
0187F0: 74 68 65 20 20 63 75 73 68 69 6F 6E 20 20 63 61 the cushion ca
018800: 20 28 6C 69 6E 6B 65 64 20 6C 69 73 74 73 2C 20 (linked lists,
018810: 74 72 65 65 73 2C 20 72 69 6E 67 73 2C 2E 2E 2E trees, rings,...
018820: 29 20 61 6E 64 20 63 6F 6D 70 6C 65 74 65 6C 79 ) and completely
018830: 20 20 61 75 74 6F 6D 61 74 69 63 0D 0A 20 20 20 automatic..
018840: 20 20 20 76 69 72 74 75 61 6C 20 20 73 74 6F 72 virtual stor
018850: 61 67 65 20 20 66 6F 72 20 20 65 78 74 65 72 6E age for extern
018860: 61 6C 20 70 72 6F 63 65 64 75 72 65 20 61 6E 64 al procedure and
018870: 20 66 75 6E 63 74 69 6F 6E 20 63 6F 64 65 2E 20 function code.
018880: 20 44 79 6E 61 6D 69 63 0D 0A 20 20 20 20 20 20 Dynamic..
018890: 73 74 6F 72 61 67 65 20 6D 61 79 20 63 6F 6E 74 storage may cont
0188A0: 61 69 6E 20 74 68 65 73 65 20 69 74 65 6D 73 3A ain these items:
0188B0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
0188C0: 31 2E 20 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 1. external proc
0188D0: 65 64 75 72 65 73 2F 66 75 6E 63 74 69 6F 6E 73 edures/functions
0188E0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 32 2E .. 2.
0188F0: 20 64 79 6E 61 6D 69 63 20 76 61 72 69 61 62 6C dynamic variabl
018900: 65 73 20 63 72 65 61 74 65 64 20 62 79 20 74 68 es created by th
018910: 65 20 4E 45 57 20 70 72 6F 63 65 64 75 72 65 0D e NEW procedure.
018920: 0A 20 20 20 20 20 20 20 20 20 20 20 20 33 2E 20 . 3.
018930: 69 6E 70 75 74 2F 6F 75 74 70 75 74 20 62 75 66 input/output buf
018940: 66 65 72 73 0D 0A 20 20 20 20 20 20 20 20 20 20 fers..
018950: 20 20 34 2E 20 66 69 6C 65 20 63 6F 6E 74 72 6F 4. file contro
018960: 6C 20 62 6C 6F 63 6B 73 0D 0A 20 20 20 20 20 20 l blocks..
018970: 20 20 20 20 20 20 35 2E 20 45 58 45 43 20 63 6F 5. EXEC co
018980: 6E 74 72 6F 6C 20 62 6C 6F 63 6B 73 20 61 6E 64 ntrol blocks and
018990: 20 70 6F 69 6E 74 65 72 20 74 61 62 6C 65 73 0D pointer tables.
0189A0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 36 2E 20 . 6.
0189B0: 61 20 66 72 65 65 20 6C 69 73 74 20 6F 66 20 64 a free list of d
0189C0: 65 2D 61 6C 6C 6F 63 61 74 65 64 20 73 74 6F 72 e-allocated stor
0189D0: 61 67 65 20 62 6C 6F 63 6B 73 0D 0A 0D 0A 20 20 age blocks....
0189E0: 20 20 20 20 20 20 20 20 20 41 6C 6C 20 6F 66 20 All of
0189F0: 74 68 65 73 65 20 69 74 65 6D 73 20 61 72 65 20 these items are
018A00: 6E 6E 6F 74 20 20 62 65 20 20 72 65 73 74 6F 72 nnot be restor
018A10: 65 64 2C 20 20 61 6C 74 68 6F 75 67 68 0D 0A 20 ed, although..
018A20: 20 20 20 20 20 70 65 72 66 6F 72 6D 61 6E 63 65 performance
018A30: 20 77 69 6C 6C 20 67 72 61 64 75 61 6C 6C 79 20 will gradually
018A40: 64 65 63 72 65 61 73 65 2E 0D 0A 0D 0A 20 20 20 decrease.....
018A50: 20 20 20 20 20 20 20 20 4F 6E 6C 79 20 20 69 66 Only if
018A60: 20 20 74 68 65 72 65 20 20 69 73 20 61 63 74 75 there is actu
018A70: 61 6C 6C 79 20 61 20 63 6F 6C 6C 6C 69 73 69 6F ally a colllisio
018A80: 6E 20 62 65 74 77 65 65 6E 20 74 68 65 20 64 61 n between the da
018A90: 74 61 20 73 74 61 63 6B 0D 0A 20 20 20 20 20 20 ta stack..
018AA0: 61 6E 64 20 74 68 65 20 64 79 6E 61 6D 69 63 20 and the dynamic
018AB0: 73 74 6F 72 61 67 65 20 72 65 67 69 6F 6E 73 20 storage regions
018AC0: 77 69 6C 6C 20 74 68 65 20 72 75 6E 2D 74 69 6D will the run-tim
018AD0: 65 20 73 79 73 74 65 6D 20 72 65 63 6F 67 6E 69 e system recogni
018AE0: 7A 65 20 61 6E 0D 0A 20 20 20 20 20 20 65 72 72 ze an.. err
018AF0: 6F 72 20 63 6F 6E 64 69 74 69 6F 6E 20 61 6E 64 or condition and
018B00: 20 74 65 72 6D 69 6E 61 74 65 20 70 72 6F 63 65 terminate proce
018B10: 73 73 69 6E 67 2E 0D 0A 0D 0A 20 20 20 20 20 20 ssing.....
018B20: 4D 61 70 20 6F 66 20 6D 61 69 6E 20 73 74 6F 72 Map of main stor
018B30: 61 67 65 20 75 73 65 20 69 6E 20 4A 52 54 20 50 age use in JRT P
018B40: 61 73 63 61 6C 20 73 79 73 74 65 6D 3A 0D 0A 0D ascal system:...
018B50: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
018B60: 20 20 20 68 69 67 68 20 20 20 20 20 20 20 20 2D high -
018B70: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
018B80: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A --------------..
018B90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018BA0: 20 20 61 64 64 72 65 73 73 20 20 20 20 20 49 20 address I
018BB0: 44 59 4E 41 4D 49 43 20 53 54 4F 52 41 47 45 20 DYNAMIC STORAGE
018BC0: 20 20 20 20 20 20 20 20 20 20 20 20 49 0D 0A 20 I..
018BD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018BE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 20 20 I
018BF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018C00: 61 6C 6C 6F 63 61 74 65 64 20 61 73 20 62 6C 6F allocated as blo
018C10: 63 6B 73 20 6F 66 20 20 64 79 6E 61 6D 69 63 20 cks of dynamic
018C20: 20 73 74 6F 72 61 67 65 2E 0D 0A 20 20 20 20 20 storage...
018C30: 20 44 79 6E 61 6D 69 63 20 20 73 74 6F 72 61 67 Dynamic storag
018C40: 65 20 20 62 6C 6F 63 6B 73 20 20 61 72 65 20 20 e blocks are
018C50: 61 64 64 72 65 73 73 65 64 20 20 69 6E 64 69 72 addressed indir
018C60: 65 63 74 6C 79 20 69 6E 20 4A 52 54 20 50 61 73 ectly in JRT Pas
018C70: 63 61 6C 20 69 6E 0D 0A 20 20 20 20 20 20 6F 72 cal in.. or
018C80: 64 65 72 20 74 6F 20 61 6C 6C 6F 77 20 74 68 65 der to allow the
018C90: 20 62 6C 6F 63 6B 73 20 74 6F 20 62 65 20 6D 6F blocks to be mo
018CA0: 76 65 64 20 64 75 72 69 6E 67 20 63 6F 6D 70 72 ved during compr
018CB0: 65 73 73 69 6F 6E 20 62 79 20 20 75 70 64 61 74 ession by updat
018CC0: 69 6E 67 0D 0A 20 20 20 20 20 20 61 20 20 70 6F ing.. a po
018CD0: 69 6E 74 65 72 20 20 74 61 62 6C 65 2E 20 20 20 inter table.
018CE0: 54 68 65 20 20 76 61 6C 75 65 20 20 73 74 6F 72 The value stor
018CF0: 65 64 20 20 69 6E 20 61 20 70 6F 69 6E 74 65 72 ed in a pointer
018D00: 20 76 61 72 69 61 62 6C 65 20 62 79 20 74 68 65 variable by the
018D10: 0D 0A 20 20 20 20 20 20 65 78 65 63 75 74 69 6F .. executio
018D20: 6E 20 6F 66 20 74 68 65 20 4E 45 57 20 70 72 6F n of the NEW pro
018D30: 63 65 64 75 72 65 20 69 73 20 61 20 22 76 69 72 cedure is a "vir
018D40: 74 75 61 6C 20 61 64 64 72 65 73 73 22 20 72 61 tual address" ra
018D50: 74 68 65 72 20 74 68 61 6E 20 74 68 65 0D 0A 20 ther than the..
018D60: 20 20 20 20 20 72 65 61 6C 20 61 64 64 72 65 73 real addres
018D70: 73 20 6F 66 20 74 68 65 20 62 6C 6F 63 6B 20 61 s of the block a
018D80: 6C 6C 6F 63 61 74 65 64 2E 20 20 54 68 65 20 76 llocated. The v
018D90: 69 72 74 75 61 6C 20 61 64 64 72 65 73 73 20 69 irtual address i
018DA0: 73 20 75 73 65 64 20 20 74 6F 0D 0A 20 20 20 20 s used to..
018DB0: 20 20 6C 6F 63 61 74 65 20 20 61 6E 20 20 65 6E locate an en
018DC0: 74 72 79 20 20 69 6E 20 61 6E 20 69 6E 74 65 72 try in an inter
018DD0: 6E 61 6C 20 74 61 62 6C 65 20 63 61 6C 6C 65 64 nal table called
018DE0: 20 61 20 70 6F 69 6E 74 65 72 20 74 61 62 6C 65 a pointer table
018DF0: 2C 20 77 68 69 63 68 0D 0A 20 20 20 20 20 20 63 , which.. c
018E00: 20 20 20 20 20 20 20 20 20 20 20 49 0D 0A 20 20 I..
018E10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018E20: 20 20 20 20 20 20 20 20 20 20 20 20 49 20 20 20 I
018E30: 20 20 76 61 72 69 61 62 6C 65 20 69 6E 20 73 69 variable in si
018E40: 7A 65 20 20 20 20 20 20 20 20 49 0D 0A 20 20 20 ze I..
018E50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018E60: 20 20 20 20 20 20 20 20 20 20 20 49 20 20 20 20 I
018E70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018E80: 20 20 20 20 20 20 20 20 20 49 0D 0A 20 20 20 20 I..
018E90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018EA0: 20 20 20 20 20 20 20 20 20 20 49 20 20 64 69 72 I dir
018EB0: 65 63 74 69 6F 6E 20 6F 66 20 67 72 6F 77 74 68 ection of growth
018EC0: 20 20 20 20 76 20 20 20 49 0D 0A 20 20 20 20 20 v I..
018ED0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018EE0: 20 20 20 20 20 20 20 20 20 49 2D 2D 2D 2D 2D 2D I------
018EF0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
018F00: 2D 2D 2D 2D 2D 2D 2D 49 0D 0A 20 20 20 20 20 20 -------I..
018F10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018F20: 20 20 20 20 20 20 20 20 49 20 20 20 20 75 6E 75 I unu
018F30: 73 65 64 20 61 72 65 61 20 28 43 55 53 48 49 4F sed area (CUSHIO
018F40: 4E 29 20 20 20 20 49 20 20 36 34 20 62 79 74 65 N) I 64 byte
018F50: 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 s..
018F60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018F70: 20 49 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D I--------------
018F80: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 ---------------I
018F90: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
018FA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
018FB0: 49 20 20 44 41 54 41 20 53 54 41 43 4B 20 20 20 I DATA STACK
018FC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 0D I.
018FD0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
018FE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 I
018FF0: 20 20 20 20 20 76 61 72 69 61 62 6C 65 20 69 6E variable in
019000: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
019010: 15 00 00 00 02 09 2A E5 15 00 C1 02 00 00 00 02 ......*.........
019020: 15 00 C6 02 00 00 00 02 15 00 C2 02 00 00 00 02 ................
019030: 15 00 C7 02 00 00 00 02 15 00 C3 02 00 00 00 02 ................
019040: 15 00 C8 02 00 00 00 02 15 00 C4 02 00 00 00 02 ................
019050: 15 00 C9 02 00 00 00 02 15 00 C5 02 00 00 00 02 ................
019060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
019070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
019080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
019090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0190F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
019100: 6F 6E 74 61 69 6E 73 20 74 68 65 20 73 69 7A 65 ontains the size
019110: 20 61 6E 64 20 72 65 61 6C 20 61 64 64 72 65 73 and real addres
019120: 73 20 6F 66 20 65 61 63 68 20 73 74 6F 72 61 67 s of each storag
019130: 65 20 62 6C 6F 63 6B 2E 20 20 54 68 65 72 65 20 e block. There
019140: 20 6D 61 79 0D 0A 20 20 20 20 20 20 62 65 20 75 may.. be u
019150: 70 20 74 6F 20 33 32 20 70 6F 69 6E 74 65 72 20 p to 32 pointer
019160: 74 61 62 6C 65 73 20 61 6E 64 20 65 61 63 68 20 tables and each
019170: 6F 6E 65 20 63 6F 6E 74 61 69 6E 73 20 75 70 20 one contains up
019180: 74 6F 20 35 32 20 65 6E 74 72 69 65 73 20 66 6F to 52 entries fo
019190: 72 0D 0A 20 20 20 20 20 20 73 74 6F 72 61 67 65 r.. storage
0191A0: 20 62 6C 6F 63 6B 73 2E 20 20 44 75 72 69 6E 67 blocks. During
0191B0: 20 64 79 6E 61 6D 69 63 20 73 74 6F 72 61 67 65 dynamic storage
0191C0: 20 63 6F 6D 70 72 65 73 73 69 6F 6E 2C 20 74 68 compression, th
0191D0: 65 20 72 65 61 6C 20 61 64 64 72 65 73 73 0D 0A e real address..
0191E0: 20 20 20 20 20 20 6F 66 20 20 61 20 20 73 74 6F of a sto
0191F0: 72 61 67 65 20 20 62 6C 6F 63 6B 20 20 6D 61 79 rage block may
019200: 20 20 63 68 61 6E 67 65 2C 20 20 62 75 74 20 74 change, but t
019210: 68 65 20 76 69 72 74 75 61 6C 20 61 64 64 72 65 he virtual addre
019220: 73 73 20 64 6F 65 73 20 6E 6F 74 0D 0A 20 20 20 ss does not..
019230: 20 20 20 63 68 61 6E 67 65 2E 0D 0A 0D 0A 20 20 change.....
019240: 20 20 20 20 20 20 20 20 20 54 68 65 20 64 79 6E The dyn
019250: 61 6D 69 63 20 73 74 6F 72 61 67 65 20 6D 61 6E amic storage man
019260: 61 67 65 72 20 70 65 72 66 6F 72 6D 73 20 74 68 ager performs th
019270: 65 73 65 20 73 65 72 76 69 63 65 73 3A 0D 0A 0D ese services:...
019280: 0A 20 20 20 20 20 20 31 2E 20 46 6F 72 6D 61 74 . 1. Format
019290: 20 64 79 6E 61 6D 69 63 20 73 74 6F 72 61 67 65 dynamic storage
0192A0: 20 61 6E 64 20 69 6E 69 74 69 61 6C 69 7A 65 20 and initialize
0192B0: 70 6F 69 6E 74 65 72 20 74 61 62 6C 65 73 2E 0D pointer tables..
0192C0: 0A 0D 0A 20 20 20 20 20 20 32 2E 20 4D 61 69 6E ... 2. Main
0192D0: 74 61 69 6E 20 74 68 65 20 66 72 65 65 20 6C 69 tain the free li
0192E0: 73 74 2E 20 20 54 68 69 73 20 69 73 20 20 61 20 st. This is a
0192F0: 20 6C 69 6E 6B 65 64 20 20 6C 69 73 74 20 20 77 linked list w
019300: 73 65 67 6D 65 6E 74 20 70 72 6F 63 65 64 75 72 segment procedur
019310: 65 73 2C 20 6F 76 65 72 6C 61 79 73 20 6F 72 20 es, overlays or
019320: 63 68 61 69 6E 69 6E 67 2C 20 74 68 65 20 76 69 chaining, the vi
019330: 72 74 75 61 6C 20 73 74 6F 72 61 67 65 20 6D 61 rtual storage ma
019340: 6E 61 67 65 72 0D 0A 20 20 20 20 20 20 6C 6F 61 nager.. loa
019350: 64 73 2C 20 61 6E 64 20 77 68 65 6E 20 6E 65 63 ds, and when nec
019360: 65 73 73 61 72 79 20 64 65 6C 65 74 65 73 2C 20 essary deletes,
019370: 20 70 72 6F 67 72 61 6D 20 20 73 65 63 74 69 6F program sectio
019380: 6E 73 20 20 61 75 74 6F 6D 61 74 69 63 61 6C 6C ns automaticall
019390: 79 2E 0D 0A 20 20 20 20 20 20 54 68 69 73 20 20 y... This
0193A0: 6D 61 6B 65 73 20 20 74 68 65 20 61 63 74 75 61 makes the actua
0193B0: 6C 20 73 74 6F 72 61 67 65 20 6F 66 20 74 68 65 l storage of the
0193C0: 20 63 6F 6D 70 75 74 65 72 20 73 65 65 6D 20 6D computer seem m
0193D0: 75 63 68 20 6C 61 72 67 65 72 20 74 68 61 6E 0D uch larger than.
0193E0: 0A 20 20 20 20 20 20 69 74 20 61 63 74 75 61 6C . it actual
0193F0: 6C 79 20 69 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 ly is.....
019400: 20 20 20 20 20 52 65 66 65 72 20 74 6F 20 74 68 Refer to th
019410: 65 20 70 72 65 76 69 6F 75 73 20 73 65 63 74 69 e previous secti
019420: 6F 6E 20 6F 6E 20 73 74 6F 72 61 67 65 20 6D 61 on on storage ma
019430: 6E 61 67 65 6D 65 6E 74 20 66 6F 72 20 20 61 20 nagement for a
019440: 20 66 75 6C 6C 0D 0A 20 20 20 20 20 20 64 65 73 full.. des
019450: 63 72 69 70 74 69 6F 6E 20 6F 66 20 76 69 72 74 cription of virt
019460: 75 61 6C 2F 64 79 6E 61 6D 69 63 20 73 74 6F 72 ual/dynamic stor
019470: 61 67 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 age.....
019480: 20 20 20 45 78 74 65 72 6E 61 6C 20 70 72 6F 63 External proc
019490: 65 64 75 72 65 73 20 61 72 65 20 6C 6F 61 64 65 edures are loade
0194A0: 64 20 69 6E 74 6F 20 64 79 6E 61 6D 69 63 20 73 d into dynamic s
0194B0: 74 6F 72 61 67 65 20 62 79 20 45 58 45 43 20 77 torage by EXEC w
0194C0: 68 65 6E 0D 0A 20 20 20 20 20 20 74 68 65 79 20 hen.. they
0194D0: 20 61 72 65 20 20 66 69 72 73 74 20 20 72 65 66 are first ref
0194E0: 65 72 65 6E 63 65 64 2C 20 20 75 6E 6C 65 73 73 erenced, unless
0194F0: 20 20 74 68 65 79 20 77 65 72 65 20 6C 69 6E 6B they were link
019500: 68 69 63 68 20 20 63 6F 6E 74 61 69 6E 73 0D 0A hich contains..
019510: 20 20 20 20 20 20 62 6C 6F 63 6B 73 20 20 6F 66 blocks of
019520: 20 20 73 74 6F 72 61 67 65 20 20 77 68 69 63 68 storage which
019530: 20 20 68 61 76 65 20 20 62 65 65 6E 20 20 64 65 have been de
019540: 2D 61 6C 6C 6F 63 61 74 65 64 20 20 28 62 79 20 -allocated (by
019550: 74 68 65 20 44 49 53 50 4F 53 45 0D 0A 20 20 20 the DISPOSE..
019560: 20 20 20 70 72 6F 63 65 64 75 72 65 2C 20 20 62 procedure, b
019570: 79 20 20 63 6C 6F 73 69 6E 67 20 20 61 20 20 66 y closing a f
019580: 69 6C 65 2C 20 20 6F 72 20 20 62 79 20 20 70 75 ile, or by pu
019590: 72 67 69 6E 67 20 20 6F 66 20 20 61 6E 20 20 20 rging of an
0195A0: 65 78 74 65 72 6E 61 6C 0D 0A 20 20 20 20 20 20 external..
0195B0: 70 72 6F 63 65 64 75 72 65 29 2E 0D 0A 0D 0A 20 procedure).....
0195C0: 20 20 20 20 20 33 2E 20 20 41 6C 6C 6F 63 61 74 3. Allocat
0195D0: 65 20 20 61 20 73 74 6F 72 61 67 65 20 62 6C 6F e a storage blo
0195E0: 63 6B 2E 20 20 57 68 65 6E 20 61 20 73 74 6F 72 ck. When a stor
0195F0: 61 67 65 20 62 6C 6F 63 6B 20 69 73 20 72 65 71 age block is req
019600: 75 65 73 74 65 64 20 28 62 79 0D 0A 20 20 20 20 uested (by..
019610: 20 20 74 68 65 20 4E 45 57 20 70 72 6F 63 65 64 the NEW proced
019620: 75 72 65 2C 20 6F 70 65 6E 69 6E 67 20 61 20 66 ure, opening a f
019630: 69 6C 65 2C 20 6F 72 20 6C 6F 61 64 69 6E 67 20 ile, or loading
019640: 61 6E 20 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 an external proc
019650: 65 64 75 72 65 29 2C 0D 0A 20 20 20 20 20 20 74 edure),.. t
019660: 68 65 20 73 74 6F 72 61 67 65 20 6D 61 6E 61 67 he storage manag
019670: 65 72 20 61 74 74 65 6D 70 74 73 20 74 6F 20 73 er attempts to s
019680: 61 74 69 73 66 79 20 74 68 69 73 20 72 65 71 75 atisfy this requ
019690: 65 73 74 20 62 79 20 73 65 61 72 63 68 69 6E 67 est by searching
0196A0: 20 74 68 65 0D 0A 20 20 20 20 20 20 66 72 65 65 the.. free
0196B0: 20 6C 69 73 74 20 6F 72 20 65 78 74 65 6E 64 69 list or extendi
0196C0: 6E 67 20 74 68 65 20 64 79 6E 61 6D 69 63 20 73 ng the dynamic s
0196D0: 74 6F 72 61 67 65 20 72 65 67 69 6F 6E 2E 20 57 torage region. W
0196E0: 68 65 6E 20 73 63 61 6E 6E 69 6E 67 20 20 74 68 hen scanning th
0196F0: 65 0D 0A 20 20 20 20 20 20 66 72 65 65 20 20 6C e.. free l
019700: 65 64 20 77 69 74 68 20 74 68 65 20 6D 61 69 6E ed with the main
019710: 0D 0A 20 20 20 20 20 20 70 72 6F 67 72 61 6D 20 .. program
019720: 74 6F 20 66 6F 72 6D 20 6F 6E 65 20 6D 6F 64 75 to form one modu
019730: 6C 65 20 28 73 65 65 20 73 65 63 74 69 6F 6E 20 le (see section
019740: 38 20 66 6F 72 20 61 20 20 64 65 73 63 72 69 70 8 for a descrip
019750: 74 69 6F 6E 20 20 6F 66 20 20 74 68 65 0D 0A 20 tion of the..
019760: 20 20 20 20 20 6C 69 6E 6B 65 72 29 2E 20 20 20 linker).
019770: 54 68 65 20 20 6C 6F 61 64 69 6E 67 20 20 69 73 The loading is
019780: 20 20 74 72 61 6E 73 70 61 72 65 6E 74 20 74 6F transparent to
019790: 20 74 68 65 20 70 72 6F 67 72 61 6D 6D 65 72 20 the programmer
0197A0: 69 6E 20 74 68 61 74 20 6E 6F 0D 0A 20 20 20 20 in that no..
0197B0: 20 20 70 6C 61 6E 6E 69 6E 67 20 6F 72 20 65 66 planning or ef
0197C0: 66 6F 72 74 20 69 73 20 72 65 71 75 69 72 65 64 fort is required
0197D0: 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
0197E0: 45 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 External procedu
0197F0: 72 65 73 20 77 68 69 63 68 20 61 72 65 20 6E 6F res which are no
019800: 74 20 6C 69 6E 6B 65 64 20 77 69 74 68 20 74 68 t linked with th
019810: 65 20 20 6D 61 69 6E 20 20 70 72 6F 67 72 61 6D e main program
019820: 0D 0A 20 20 20 20 20 20 72 65 6D 61 69 6E 20 20 .. remain
019830: 69 6E 20 20 73 74 6F 72 61 67 65 20 20 6F 6E 63 in storage onc
019840: 65 20 20 74 68 65 79 20 20 61 72 65 20 6C 6F 61 e they are loa
019850: 64 65 64 20 75 6E 6C 65 73 73 20 61 20 73 68 6F ded unless a sho
019860: 72 74 2D 6F 6E 2D 73 74 6F 72 61 67 65 0D 0A 20 rt-on-storage..
019870: 20 20 20 20 20 63 6F 6E 64 69 74 69 6F 6E 20 6F condition o
019880: 63 63 75 72 73 2C 20 20 74 68 65 6E 20 20 74 68 ccurs, then th
019890: 65 20 20 6C 65 61 73 74 2D 72 65 63 65 6E 74 6C e least-recentl
0198A0: 79 2D 75 73 65 64 20 20 70 72 6F 63 65 64 75 72 y-used procedur
0198B0: 65 20 20 6D 61 79 20 20 62 65 0D 0A 20 20 20 20 e may be..
0198C0: 20 20 64 65 6C 65 74 65 64 2E 20 20 20 49 66 20 deleted. If
0198D0: 20 74 68 69 73 20 20 68 61 70 70 65 6E 73 2C 20 this happens,
0198E0: 20 74 68 65 20 63 6F 6E 74 72 6F 6C 20 62 6C 6F the control blo
0198F0: 63 6B 73 20 61 73 73 6F 63 69 61 74 65 64 20 77 cks associated w
019900: 69 73 74 20 20 66 6F 72 20 20 61 20 20 62 6C 6F ist for a blo
019910: 63 6B 2C 20 20 74 68 65 20 20 66 69 72 73 74 20 ck, the first
019920: 62 6C 6F 63 6B 20 77 68 69 63 68 20 69 73 20 6C block which is l
019930: 61 72 67 65 20 65 6E 6F 75 67 68 20 69 73 0D 0A arge enough is..
019940: 20 20 20 20 20 20 73 65 6C 65 63 74 65 64 2E 20 selected.
019950: 20 49 66 20 74 68 69 73 20 62 6C 6F 63 6B 20 69 If this block i
019960: 73 20 6D 75 63 68 20 74 6F 6F 20 20 6C 61 72 67 s much too larg
019970: 65 2C 20 20 69 74 20 20 69 73 20 20 73 70 6C 69 e, it is spli
019980: 74 20 20 61 6E 64 20 20 74 68 65 0D 0A 20 20 20 t and the..
019990: 20 20 20 72 65 6D 61 69 6E 64 65 72 20 20 72 65 remainder re
0199A0: 74 75 72 6E 65 64 20 20 74 6F 20 74 68 65 20 66 turned to the f
0199B0: 72 65 65 20 6C 69 73 74 2E 20 20 41 66 74 65 72 ree list. After
0199C0: 20 61 20 62 6C 6F 63 6B 20 68 61 73 20 62 65 65 a block has bee
0199D0: 6E 20 66 6F 75 6E 64 2C 0D 0A 20 20 20 20 20 20 n found,..
0199E0: 69 74 73 20 72 65 61 6C 20 61 64 64 72 65 73 73 its real address
0199F0: 2C 20 73 69 7A 65 2C 20 61 6E 64 20 61 20 66 6C , size, and a fl
019A00: 61 67 20 66 69 65 6C 64 20 61 72 65 20 20 65 6E ag field are en
019A10: 74 65 72 65 64 20 20 69 6E 20 20 61 20 20 70 6F tered in a po
019A20: 69 6E 74 65 72 0D 0A 20 20 20 20 20 20 74 61 62 inter.. tab
019A30: 6C 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 34 2E 20 le..... 4.
019A40: 52 65 6C 65 61 73 65 20 61 20 62 6C 6F 63 6B 20 Release a block
019A50: 6F 66 20 73 74 6F 72 61 67 65 2E 20 20 54 68 69 of storage. Thi
019A60: 73 20 61 64 64 73 20 61 20 64 65 2D 61 6C 6C 6F s adds a de-allo
019A70: 63 61 74 65 64 20 62 6C 6F 63 6B 20 74 6F 20 74 cated block to t
019A80: 68 65 0D 0A 20 20 20 20 20 20 66 72 65 65 20 6C he.. free l
019A90: 69 73 74 20 61 6E 64 20 64 65 6C 65 74 65 73 20 ist and deletes
019AA0: 74 68 65 20 63 6F 72 72 65 73 70 6F 6E 64 69 6E the correspondin
019AB0: 67 20 70 6F 69 6E 74 65 72 20 74 61 62 6C 65 20 g pointer table
019AC0: 65 6E 74 72 69 65 73 2E 0D 0A 0D 0A 20 20 20 20 entries.....
019AD0: 20 20 35 2E 20 20 44 65 74 65 72 6D 69 6E 65 20 5. Determine
019AE0: 74 68 65 20 61 6D 6F 75 6E 74 20 6F 66 20 66 72 the amount of fr
019AF0: 65 65 20 73 70 61 63 65 2E 20 20 54 68 65 20 66 ee space. The f
019B00: 69 74 68 20 74 68 65 0D 0A 20 20 20 20 20 20 70 ith the.. p
019B10: 72 6F 63 65 64 75 72 65 20 41 52 45 20 4B 45 50 rocedure ARE KEP
019B20: 54 20 73 6F 20 74 68 61 74 20 72 65 6C 6F 61 64 T so that reload
019B30: 69 6E 67 2C 20 69 66 20 6E 65 63 65 73 73 61 72 ing, if necessar
019B40: 79 2C 20 63 61 6E 20 62 65 20 64 6F 6E 65 20 20 y, can be done
019B50: 6D 6F 72 65 0D 0A 20 20 20 20 20 20 72 61 70 69 more.. rapi
019B60: 64 6C 79 2E 20 20 57 68 65 6E 20 6D 61 69 6E 20 dly. When main
019B70: 73 74 6F 72 61 67 65 20 69 73 20 73 65 76 65 72 storage is sever
019B80: 65 6C 79 20 6F 76 65 72 6C 6F 61 64 65 64 2C 20 ely overloaded,
019B90: 66 72 65 71 75 65 6E 74 20 64 65 6C 65 74 69 6E frequent deletin
019BA0: 67 0D 0A 20 20 20 20 20 20 61 6E 64 20 20 72 65 g.. and re
019BB0: 6C 6F 61 64 69 6E 67 20 20 6F 66 20 20 65 78 74 loading of ext
019BC0: 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 73 ernal procedures
019BD0: 20 6D 61 79 20 6F 63 63 75 72 2E 20 20 54 68 69 may occur. Thi
019BE0: 73 20 63 6F 6E 64 69 74 69 6F 6E 20 69 73 0D 0A s condition is..
019BF0: 20 20 20 20 20 20 63 61 6C 6C 65 64 20 20 22 74 called "t
019C00: 68 72 61 73 68 69 6E 67 22 2E 20 20 20 54 68 72 hrashing". Thr
019C10: 61 73 68 69 6E 67 20 20 63 61 6E 20 20 62 65 20 ashing can be
019C20: 20 72 65 63 6F 67 6E 69 7A 65 64 20 20 62 79 20 recognized by
019C30: 20 20 75 6E 75 73 75 61 6C 6C 79 0D 0A 20 20 20 unusually..
019C40: 20 20 20 66 72 65 71 75 65 6E 74 20 20 64 69 73 frequent dis
019C50: 6B 20 20 61 63 63 65 73 73 69 6E 67 20 20 61 6E k accessing an
019C60: 64 20 6C 69 74 74 6C 65 20 75 73 65 66 75 6C 20 d little useful
019C70: 70 72 6F 63 65 73 73 69 6E 67 20 62 65 69 6E 67 processing being
019C80: 20 64 6F 6E 65 20 62 79 0D 0A 20 20 20 20 20 20 done by..
019C90: 74 68 65 20 70 72 6F 67 72 61 6D 2E 20 20 49 74 the program. It
019CA0: 20 69 73 20 6E 65 63 65 73 73 61 72 79 20 69 6E is necessary in
019CB0: 20 74 68 69 73 20 20 63 61 73 65 20 20 74 6F 20 this case to
019CC0: 20 72 65 64 75 63 65 20 20 74 68 65 20 20 73 74 reduce the st
019CD0: 6F 72 61 67 65 0D 0A 20 20 20 20 20 20 72 65 71 orage.. req
019CE0: 75 69 72 65 6D 65 6E 74 73 20 6F 66 20 74 68 65 uirements of the
019CF0: 20 70 72 6F 67 72 61 6D 2E 0D 0A 0D 0A 0D 0A 20 program.......
019D00: 72 65 65 20 73 70 61 63 65 20 69 73 20 74 68 65 ree space is the
019D10: 20 73 75 6D 20 6F 66 0D 0A 20 20 20 20 20 20 74 sum of.. t
019D20: 68 65 20 73 69 7A 65 73 20 6F 66 20 61 6C 6C 20 he sizes of all
019D30: 62 6C 6F 63 6B 73 20 6F 6E 20 74 68 65 20 66 72 blocks on the fr
019D40: 65 65 20 6C 69 73 74 20 61 6E 64 20 20 74 68 65 ee list and the
019D50: 20 20 73 69 7A 65 20 20 6F 66 20 20 74 68 65 20 size of the
019D60: 20 67 61 70 0D 0A 20 20 20 20 20 20 62 65 74 77 gap.. betw
019D70: 65 65 6E 20 74 68 65 20 64 61 74 61 20 73 74 61 een the data sta
019D80: 63 6B 20 72 65 67 69 6F 6E 20 61 6E 64 20 74 68 ck region and th
019D90: 65 20 64 79 6E 61 6D 69 63 20 73 74 6F 72 61 67 e dynamic storag
019DA0: 65 20 72 65 67 69 6F 6E 2E 0D 0A 0D 0A 20 20 20 e region.....
019DB0: 20 20 20 36 2E 20 43 6F 6D 70 72 65 73 73 20 64 6. Compress d
019DC0: 79 6E 61 6D 69 63 20 73 74 6F 72 61 67 65 2E 20 ynamic storage.
019DD0: 20 41 6C 6C 20 6F 66 20 74 68 65 20 61 6C 6C 6F All of the allo
019DE0: 63 61 74 65 64 20 73 74 6F 72 61 67 65 20 62 6C cated storage bl
019DF0: 6F 63 6B 73 20 61 72 65 0D 0A 20 20 20 20 20 20 ocks are..
019E00: 6D 6F 76 65 64 20 69 6E 74 6F 20 74 68 65 20 74 moved into the t
019E10: 6F 70 20 6F 66 20 73 74 6F 72 61 67 65 20 74 6F op of storage to
019E20: 20 65 6C 69 6D 69 6E 61 74 65 20 66 72 65 65 20 eliminate free
019E30: 73 70 61 63 65 2E 20 20 54 68 65 20 66 72 65 65 space. The free
019E40: 20 6C 69 73 74 0D 0A 20 20 20 20 20 20 69 73 20 list.. is
019E50: 20 73 65 74 20 20 74 6F 20 20 61 20 6E 75 6C 6C set to a null
019E60: 20 70 6F 69 6E 74 65 72 2E 20 20 54 68 65 20 70 pointer. The p
019E70: 6F 69 6E 74 65 72 20 74 61 62 6C 65 20 65 6E 74 ointer table ent
019E80: 72 69 65 73 20 6F 66 20 61 6C 6C 20 62 6C 6F 63 ries of all bloc
019E90: 6B 73 0D 0A 20 20 20 20 20 20 61 72 65 20 20 75 ks.. are u
019EA0: 70 64 61 74 65 64 2E 20 20 20 49 66 20 20 65 78 pdated. If ex
019EB0: 74 65 72 6E 61 6C 20 20 70 72 6F 63 65 64 75 72 ternal procedur
019EC0: 65 73 20 20 77 65 72 65 20 20 20 6D 6F 76 65 64 es were moved
019ED0: 20 20 20 74 68 65 6E 20 20 20 74 68 65 69 72 0D then their.
019EE0: 0A 20 20 20 20 20 20 72 65 6C 6F 63 61 74 61 62 . relocatab
019EF0: 6C 65 20 20 61 64 64 72 65 73 73 65 73 20 20 61 le addresses a
019F00: 20 20 20 20 20 31 32 2E 31 20 20 43 6F 64 69 6E 12.1 Codin
019F10: 67 20 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 g external proce
019F20: 64 75 72 65 73 20 61 6E 64 20 66 75 6E 63 74 69 dures and functi
019F30: 6F 6E 73 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 ons....
019F40: 20 20 54 68 65 20 65 78 74 65 72 6E 61 6C 20 70 The external p
019F50: 72 6F 63 65 64 75 72 65 20 50 61 73 63 61 6C 20 rocedure Pascal
019F60: 66 69 6C 65 20 69 73 20 76 65 72 79 20 73 69 6D file is very sim
019F70: 69 6C 61 72 20 74 6F 20 61 20 73 74 61 6E 64 61 ilar to a standa
019F80: 72 64 0D 0A 20 20 20 20 20 20 22 69 6E 74 65 72 rd.. "inter
019F90: 6E 61 6C 22 20 20 70 72 6F 63 65 64 75 72 65 20 nal" procedure
019FA0: 20 69 6E 20 66 6F 72 6D 61 74 2E 20 20 49 6E 20 in format. In
019FB0: 6D 61 6E 79 20 63 61 73 65 73 20 74 68 65 20 6F many cases the o
019FC0: 6E 6C 79 20 64 69 66 66 65 72 65 6E 63 65 73 0D nly differences.
019FD0: 0A 20 20 20 20 20 20 66 72 6F 6D 20 61 20 73 74 . from a st
019FE0: 61 6E 64 61 72 64 20 70 72 6F 63 65 64 75 72 65 andard procedure
019FF0: 20 66 6F 72 6D 61 74 20 61 72 65 20 74 68 61 74 format are that
01A000: 20 74 68 65 20 50 52 4F 43 45 44 55 52 45 20 72 the PROCEDURE r
01A010: 65 73 65 72 76 65 64 20 77 6F 72 64 0D 0A 20 20 eserved word..
01A020: 20 20 20 20 69 73 20 70 72 65 63 65 64 65 64 20 is preceded
01A030: 62 79 20 74 68 65 20 72 65 73 65 72 76 65 64 20 by the reserved
01A040: 77 6F 72 64 20 45 58 54 45 52 4E 20 61 6E 64 20 word EXTERN and
01A050: 74 68 61 74 20 74 68 65 20 20 77 68 6F 6C 65 20 that the whole
01A060: 20 66 69 6C 65 20 20 69 73 0D 0A 20 20 20 20 20 file is..
01A070: 20 65 6E 64 65 64 20 20 77 69 74 68 20 20 61 20 ended with a
01A080: 20 70 65 72 69 6F 64 20 20 74 6F 20 20 73 69 67 period to sig
01A090: 6E 69 66 79 20 20 74 68 65 20 65 6E 64 20 6F 66 nify the end of
01A0A0: 20 74 68 65 20 63 6F 6D 70 69 6C 65 20 75 6E 69 the compile uni
01A0B0: 74 2E 20 20 41 6E 0D 0A 20 20 20 20 20 20 65 78 t. An.. ex
01A0C0: 61 6D 70 6C 65 20 6F 66 20 74 68 69 73 20 62 61 ample of this ba
01A0D0: 73 69 63 20 63 61 73 65 20 66 6F 6C 6C 6F 77 73 sic case follows
01A0E0: 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 :....
01A0F0: 20 20 20 20 20 20 20 45 58 54 45 52 4E 0D 0A 0D EXTERN...
01A100: 72 65 20 20 61 64 6A 75 73 74 65 64 2E 20 20 49 re adjusted. I
01A110: 66 20 61 63 74 69 76 65 20 65 78 74 65 72 6E 61 f active externa
01A120: 6C 20 70 72 6F 63 65 64 75 72 65 73 0D 0A 20 20 l procedures..
01A130: 20 20 20 20 77 65 72 65 20 6D 6F 76 65 64 20 74 were moved t
01A140: 68 65 6E 20 74 68 65 20 50 61 73 63 61 6C 20 70 hen the Pascal p
01A150: 72 6F 67 72 61 6D 20 63 6F 75 6E 74 65 72 20 61 rogram counter a
01A160: 6E 64 20 74 68 65 20 20 70 72 6F 63 65 64 75 72 nd the procedur
01A170: 65 20 20 72 65 74 75 72 6E 0D 0A 20 20 20 20 20 e return..
01A180: 20 61 64 64 72 65 73 73 65 73 20 61 72 65 20 61 addresses are a
01A190: 64 6A 75 73 74 65 64 2E 0D 0A 0D 0A 20 20 20 20 djusted.....
01A1A0: 20 20 37 2E 20 43 6F 6E 76 65 72 74 20 74 68 65 7. Convert the
01A1B0: 20 76 69 72 74 75 61 6C 20 61 64 64 72 65 73 73 virtual address
01A1C0: 20 6F 66 20 61 20 62 6C 6F 63 6B 20 74 6F 20 61 of a block to a
01A1D0: 20 72 65 61 6C 20 61 64 64 72 65 73 73 2E 0D 0A real address...
01A1E0: 0D 0A 20 20 20 20 20 20 31 32 2E 20 20 20 45 78 .. 12. Ex
01A1F0: 74 65 72 6E 61 6C 20 50 72 6F 63 65 64 75 72 65 ternal Procedure
01A200: 73 20 61 6E 64 20 46 75 6E 63 74 69 6F 6E 73 0D s and Functions.
01A210: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 45 78 ... Ex
01A220: 74 65 72 6E 61 6C 20 20 70 72 6F 63 65 64 75 72 ternal procedur
01A230: 65 73 20 61 72 65 20 61 20 66 61 63 69 6C 69 74 es are a facilit
01A240: 79 20 66 6F 72 20 73 65 67 6D 65 6E 74 69 6E 67 y for segmenting
01A250: 20 70 72 6F 67 72 61 6D 73 20 69 6E 74 6F 0D 0A programs into..
01A260: 20 20 20 20 20 20 73 65 70 61 72 61 74 65 6C 79 separately
01A270: 20 63 6F 6D 70 69 6C 65 64 20 6D 6F 64 75 6C 65 compiled module
01A280: 73 2E 20 20 57 69 74 68 20 74 68 65 73 65 2C 20 s. With these,
01A290: 20 74 68 65 20 20 73 69 7A 65 20 20 6F 66 20 20 the size of
01A2A0: 74 68 65 20 20 65 6E 74 69 72 65 0D 0A 20 20 20 the entire..
01A2B0: 20 20 20 70 72 6F 67 72 61 6D 20 20 63 61 6E 20 program can
01A2C0: 20 62 65 20 70 72 61 63 74 69 63 61 6C 6C 79 20 be practically
01A2D0: 75 6E 6C 69 6D 69 74 65 64 2E 20 20 54 68 69 73 unlimited. This
01A2E0: 20 69 73 20 62 65 63 61 75 73 65 2C 20 75 6E 6C is because, unl
01A2F0: 69 6B 65 20 77 69 74 68 0D 0A 20 20 20 20 20 20 ike with..
01A300: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01A310: 16 00 00 00 02 09 2A E5 16 00 C1 02 00 00 00 02 ......*.........
01A320: 16 00 C6 02 00 00 00 02 16 00 C2 02 00 00 00 02 ................
01A330: 16 00 C7 02 00 00 00 02 16 00 C3 02 00 00 00 02 ................
01A340: 16 00 C8 02 00 00 00 02 16 00 C4 02 00 00 00 02 ................
01A350: 16 00 C9 02 00 00 00 02 16 00 C5 02 00 00 00 02 ................
01A360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A400: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
01A410: 20 20 20 28 2A 20 50 52 49 4E 54 20 54 48 45 20 (* PRINT THE
01A420: 54 4F 54 41 4C 20 41 4E 44 20 41 56 45 52 41 47 TOTAL AND AVERAG
01A430: 45 20 4F 46 20 34 20 4E 55 4D 42 45 52 53 20 2A E OF 4 NUMBERS *
01A440: 29 20 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ) ..
01A450: 20 20 20 20 20 20 50 52 4F 43 45 44 55 52 45 20 PROCEDURE
01A460: 58 44 45 4D 4F 20 28 41 2C 42 2C 43 2C 44 20 3A XDEMO (A,B,C,D :
01A470: 20 52 45 41 4C 20 29 3B 0D 0A 20 20 20 20 20 20 REAL );..
01A480: 20 20 20 20 20 20 20 20 20 20 20 20 56 41 52 0D VAR.
01A490: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
01A4A0: 20 20 20 54 4F 54 41 4C 20 3A 20 52 45 41 4C 3B TOTAL : REAL;
01A4B0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
01A4C0: 20 20 20 20 20 20 42 45 47 49 4E 0D 0A 20 20 20 BEGIN..
01A4D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 T
01A4E0: 4F 54 41 4C 20 3A 3D 20 41 20 2B 20 42 20 2B 20 OTAL := A + B +
01A4F0: 43 20 2B 20 44 3B 0D 0A 20 20 20 20 20 20 20 20 C + D;..
01A500: 20 20 20 20 20 20 20 20 20 20 57 52 49 54 45 4C WRITEL
01A510: 4E 28 27 54 4F 54 41 4C 20 3D 27 2C 54 4F 54 41 N('TOTAL =',TOTA
01A520: 4C 2C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 L,..
01A530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 27 20 '
01A540: 20 41 56 45 52 41 47 45 20 3D 27 2C 54 4F 54 41 AVERAGE =',TOTA
01A550: 4C 20 2F 20 34 2E 30 29 3B 0D 0A 20 20 20 20 20 L / 4.0);..
01A560: 20 20 20 20 20 20 20 20 20 20 20 20 20 45 4E 44 END
01A570: 3B 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 2A 2A ;....... **
01A580: 2A 2A 2A 2A 20 49 4D 50 4F 52 54 41 4E 54 20 2A **** IMPORTANT *
01A590: 2A 2A 2A 2A 2A 20 52 45 41 44 20 54 48 45 20 46 ***** READ THE F
01A5A0: 4F 4C 4C 4F 57 49 4E 47 20 43 41 52 45 46 55 4C OLLOWING CAREFUL
01A5B0: 4C 59 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 LY....
01A5C0: 20 4A 52 54 20 50 61 73 63 61 6C 20 65 78 74 65 JRT Pascal exte
01A5D0: 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 73 20 rnal procedures
01A5E0: 63 61 6E 20 20 61 63 63 65 73 73 20 20 61 6C 6C can access all
01A5F0: 20 20 6F 66 20 20 74 68 65 20 20 67 6C 6F 62 61 of the globa
01A600: 20 20 20 20 20 20 20 20 20 20 20 20 49 46 20 20 IF
01A610: 4E 20 3D 20 20 43 55 53 54 4F 4D 45 52 5F 4C 49 N = CUSTOMER_LI
01A620: 53 54 5B 49 5D 2E 43 55 53 54 5F 4E 41 4D 45 20 ST[I].CUST_NAME
01A630: 54 48 45 4E 0D 0A 20 20 20 20 20 20 20 20 20 20 THEN..
01A640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01A650: 20 53 45 41 52 43 48 3A 3D 43 55 53 54 4F 4D 45 SEARCH:=CUSTOME
01A660: 52 5F 4C 49 53 54 5B 49 5D 0D 0A 20 20 20 20 20 R_LIST[I]..
01A670: 20 20 20 20 20 20 20 20 20 20 20 20 20 45 4C 53 ELS
01A680: 45 20 20 20 20 20 53 45 41 52 43 48 3A 3D 27 20 E SEARCH:='
01A690: 27 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 ';....
01A6A0: 20 20 20 20 20 20 20 20 45 4E 44 3B 2E 0D 0A 0D END;....
01A6B0: 0A 0D 0A 20 20 20 20 20 20 31 32 2E 32 20 20 52 ... 12.2 R
01A6C0: 65 66 65 72 65 6E 63 69 6E 67 20 65 78 74 65 72 eferencing exter
01A6D0: 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 73 20 61 nal procedures a
01A6E0: 6E 64 20 66 75 6E 63 74 69 6F 6E 73 0D 0A 0D 0A nd functions....
01A6F0: 20 20 20 20 20 20 20 20 20 20 20 45 78 74 65 72 Exter
01A700: 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 73 20 61 nal procedures a
01A710: 6E 64 20 66 75 6E 63 74 69 6F 6E 73 20 4D 55 53 nd functions MUS
01A720: 54 20 62 65 20 64 65 63 6C 61 72 65 64 20 69 6E T be declared in
01A730: 20 20 74 68 65 20 20 6D 61 69 6E 0D 0A 20 20 20 the main..
01A740: 20 20 20 70 72 6F 67 72 61 6D 73 20 20 77 68 69 programs whi
01A750: 63 68 20 20 72 65 66 65 72 65 6E 63 65 20 74 68 ch reference th
01A760: 65 6D 2E 20 20 54 68 65 69 72 20 64 65 63 6C 61 em. Their decla
01A770: 72 61 74 69 6F 6E 20 69 73 20 69 64 65 6E 74 69 ration is identi
01A780: 63 61 6C 20 74 6F 20 61 0D 0A 20 20 20 20 20 20 cal to a..
01A790: 72 65 67 75 6C 61 72 20 70 72 6F 63 65 64 75 72 regular procedur
01A7A0: 65 20 65 78 63 65 70 74 20 74 68 61 74 20 74 68 e except that th
01A7B0: 65 20 65 6E 74 69 72 65 20 62 6F 64 79 20 20 6F e entire body o
01A7C0: 66 20 20 74 68 65 20 20 70 72 6F 63 65 64 75 72 f the procedur
01A7D0: 65 20 20 69 73 0D 0A 20 20 20 20 20 20 72 65 70 e is.. rep
01A7E0: 6C 61 63 65 64 20 77 69 74 68 20 74 68 65 20 72 laced with the r
01A7F0: 65 73 65 72 76 65 64 20 77 6F 72 64 20 45 58 54 eserved word EXT
01A800: 6C 0D 0A 20 20 20 20 20 20 76 61 72 69 61 62 6C l.. variabl
01A810: 65 73 20 69 6E 20 74 68 65 20 6D 61 69 6E 20 70 es in the main p
01A820: 72 6F 67 72 61 6D 2E 20 20 54 68 65 20 47 4C 4F rogram. The GLO
01A830: 42 41 4C 20 56 41 52 49 41 42 4C 45 53 20 61 72 BAL VARIABLES ar
01A840: 65 20 74 68 6F 73 65 20 49 4E 20 54 48 45 0D 0A e those IN THE..
01A850: 20 20 20 20 20 20 4D 41 49 4E 20 20 50 52 4F 47 MAIN PROG
01A860: 52 41 4D 20 44 45 43 4C 41 52 45 44 20 42 45 46 RAM DECLARED BEF
01A870: 4F 52 45 20 41 4E 59 20 50 52 4F 43 45 44 55 52 ORE ANY PROCEDUR
01A880: 45 20 4F 52 20 46 55 4E 43 54 49 4F 4E 20 44 45 E OR FUNCTION DE
01A890: 43 4C 41 52 41 54 49 4F 4E 53 2E 0D 0A 20 20 20 CLARATIONS...
01A8A0: 20 20 20 54 68 65 79 20 61 72 65 20 76 61 72 69 They are vari
01A8B0: 61 62 6C 65 73 20 74 68 61 74 20 61 72 65 20 61 ables that are a
01A8C0: 76 61 69 6C 61 62 6C 65 20 67 6C 6F 62 61 6C 6C vailable globall
01A8D0: 79 20 61 6E 64 20 6E 6F 74 20 6F 6E 6C 79 20 6C y and not only l
01A8E0: 6F 63 61 6C 20 20 74 6F 0D 0A 20 20 20 20 20 20 ocal to..
01A8F0: 73 6F 6D 65 20 20 70 72 6F 63 65 64 75 72 65 2E some procedure.
01A900: 20 20 49 6E 20 74 68 65 20 70 72 65 63 65 64 69 In the precedi
01A910: 6E 67 20 65 78 61 6D 70 6C 65 2C 20 54 4F 54 41 ng example, TOTA
01A920: 4C 20 69 73 20 61 20 6C 6F 63 61 6C 20 76 61 72 L is a local var
01A930: 69 61 62 6C 65 0D 0A 20 20 20 20 20 20 2D 20 69 iable.. - i
01A940: 74 20 69 73 20 6E 6F 74 20 61 63 63 65 73 73 69 t is not accessi
01A950: 62 6C 65 20 6F 75 74 73 69 64 65 20 6F 66 20 74 ble outside of t
01A960: 68 65 20 70 72 6F 63 65 64 75 72 65 20 58 44 45 he procedure XDE
01A970: 4D 4F 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 MO.....
01A980: 20 20 54 6F 20 61 63 63 65 73 73 20 67 6C 6F 62 To access glob
01A990: 61 6C 20 76 61 72 69 61 62 6C 65 73 20 20 6F 72 al variables or
01A9A0: 20 20 66 69 6C 65 73 2C 20 20 74 68 65 69 72 20 files, their
01A9B0: 20 64 65 63 6C 61 72 61 74 69 6F 6E 73 20 20 61 declarations a
01A9C0: 72 65 0D 0A 20 20 20 20 20 20 69 6E 73 65 72 74 re.. insert
01A9D0: 65 64 20 20 69 6E 20 20 74 68 65 20 20 65 78 74 ed in the ext
01A9E0: 65 72 6E 61 6C 20 20 70 72 6F 63 65 64 75 72 65 ernal procedure
01A9F0: 20 66 69 6C 65 20 41 46 54 45 52 20 74 68 65 20 file AFTER the
01AA00: 45 52 4E 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ERN.....
01AA10: 20 20 20 20 20 20 20 20 20 20 50 52 4F 43 45 44 PROCED
01AA20: 55 52 45 20 50 4C 4F 54 54 45 52 20 28 20 58 2C URE PLOTTER ( X,
01AA30: 59 20 3A 20 49 4E 54 45 47 45 52 20 29 3B 20 45 Y : INTEGER ); E
01AA40: 58 54 45 52 4E 3B 0D 0A 0D 0A 20 20 20 20 20 20 XTERN;....
01AA50: 20 20 20 20 20 20 20 20 20 20 20 20 46 55 4E 43 FUNC
01AA60: 54 49 4F 4E 20 43 55 42 45 52 4F 4F 54 20 28 20 TION CUBEROOT (
01AA70: 41 20 3A 20 52 45 41 4C 20 29 3A 20 52 45 41 4C A : REAL ): REAL
01AA80: 3B 20 45 58 54 45 52 4E 3B 0D 0A 0D 0A 20 20 20 ; EXTERN;....
01AA90: 20 20 20 20 20 20 20 20 46 6F 72 20 20 63 6C 61 For cla
01AAA0: 72 69 74 79 2C 20 20 69 74 20 20 69 73 20 20 75 rity, it is u
01AAB0: 73 65 66 75 6C 20 20 74 6F 20 20 67 72 6F 75 70 seful to group
01AAC0: 20 20 61 6C 6C 20 65 78 74 65 72 6E 61 6C 20 70 all external p
01AAD0: 72 6F 63 65 64 75 72 65 0D 0A 20 20 20 20 20 20 rocedure..
01AAE0: 64 65 63 6C 61 72 61 74 69 6F 6E 73 20 61 73 20 declarations as
01AAF0: 74 68 65 20 66 69 72 73 74 20 20 70 72 6F 63 65 the first proce
01AB00: 64 75 72 65 20 20 64 65 63 6C 61 72 61 74 69 6F dure declaratio
01AB10: 6E 73 20 20 69 6E 20 20 74 68 65 20 20 70 72 6F ns in the pro
01AB20: 67 72 61 6D 2E 0D 0A 20 20 20 20 20 20 45 78 74 gram... Ext
01AB30: 65 72 6E 61 6C 20 20 70 72 6F 63 65 64 75 72 65 ernal procedure
01AB40: 73 20 20 6D 61 79 20 20 72 65 66 65 72 65 6E 63 s may referenc
01AB50: 65 20 20 6F 74 68 65 72 20 20 65 78 74 65 72 6E e other extern
01AB60: 61 6C 20 20 70 72 6F 63 65 64 75 72 65 73 20 20 al procedures
01AB70: 69 66 0D 0A 20 20 20 20 20 20 61 70 70 72 6F 70 if.. approp
01AB80: 72 69 61 74 65 20 64 65 63 6C 61 72 61 74 69 6F riate declaratio
01AB90: 6E 73 20 61 72 65 20 69 6E 63 6C 75 64 65 64 20 ns are included
01ABA0: 69 6E 20 74 68 65 20 72 65 66 65 72 65 6E 63 69 in the referenci
01ABB0: 6E 67 20 70 72 6F 63 65 64 75 72 65 2E 0D 0A 0D ng procedure....
01ABC0: 0A 20 20 20 20 20 20 20 20 20 20 20 45 58 45 43 . EXEC
01ABD0: 20 69 6E 64 65 6E 74 69 66 69 65 73 20 20 65 78 indentifies ex
01ABE0: 74 65 72 6E 61 6C 20 20 70 72 6F 63 65 64 75 72 ternal procedur
01ABF0: 65 73 20 20 62 79 20 20 61 20 20 53 45 51 55 45 es by a SEQUE
01AC00: 77 6F 72 64 20 45 58 54 45 52 4E 20 61 6E 64 0D word EXTERN and.
01AC10: 0A 20 20 20 20 20 20 42 45 46 4F 52 45 20 74 68 . BEFORE th
01AC20: 65 20 70 72 6F 63 65 64 75 72 65 20 68 65 61 64 e procedure head
01AC30: 65 72 2E 20 20 54 68 65 20 74 68 72 65 65 20 64 er. The three d
01AC40: 65 63 6C 61 72 61 74 69 6F 6E 20 20 73 65 63 74 eclaration sect
01AC50: 69 6F 6E 73 20 20 43 4F 4E 53 54 2C 0D 0A 20 20 ions CONST,..
01AC60: 20 20 20 20 54 59 50 45 2C 20 20 56 41 52 20 20 TYPE, VAR
01AC70: 6D 61 79 20 62 65 20 69 6E 73 65 72 74 65 64 20 may be inserted
01AC80: 61 74 20 74 68 69 73 20 70 6F 69 6E 74 2E 20 20 at this point.
01AC90: 54 68 65 79 20 6D 75 73 74 20 62 65 20 69 64 65 They must be ide
01ACA0: 6E 74 69 63 61 6C 20 74 6F 0D 0A 20 20 20 20 20 ntical to..
01ACB0: 20 74 68 65 20 67 6C 6F 62 61 6C 20 64 65 63 6C the global decl
01ACC0: 61 72 61 74 69 6F 6E 73 20 69 6E 20 74 68 65 20 arations in the
01ACD0: 6D 61 69 6E 20 70 72 6F 67 72 61 6D 2C 20 65 78 main program, ex
01ACE0: 63 65 70 74 20 20 74 68 61 74 20 20 61 64 64 69 cept that addi
01ACF0: 74 69 6F 6E 61 6C 0D 0A 20 20 20 20 20 20 63 6F tional.. co
01AD00: 6E 73 74 61 6E 74 73 20 61 6E 64 20 74 79 70 65 nstants and type
01AD10: 20 69 64 65 6E 74 69 66 69 65 72 73 20 6D 61 79 identifiers may
01AD20: 20 62 65 20 61 64 64 65 64 20 68 65 72 65 2E 0D be added here..
01AD30: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 79 ... Ty
01AD40: 70 65 20 20 69 64 65 6E 74 69 66 69 65 72 73 20 pe identifiers
01AD50: 20 6D 61 79 20 20 62 65 20 20 72 65 71 75 69 72 may be requir
01AD60: 65 64 20 20 69 6E 20 20 74 68 65 20 20 70 72 6F ed in the pro
01AD70: 63 65 64 75 72 65 20 20 68 65 61 64 65 72 0D 0A cedure header..
01AD80: 20 20 20 20 20 20 70 61 72 61 6D 65 74 65 72 20 parameter
01AD90: 6C 69 73 74 20 6F 72 20 20 69 6E 20 20 61 20 20 list or in a
01ADA0: 66 75 6E 63 74 69 6F 6E 20 20 72 65 74 75 72 6E function return
01ADB0: 20 20 76 61 6C 75 65 20 20 64 65 63 6C 61 72 61 value declara
01ADC0: 74 69 6F 6E 2E 20 20 20 54 68 65 0D 0A 20 20 20 tion. The..
01ADD0: 20 20 20 64 65 63 6C 61 72 61 74 69 6F 6E 20 20 declaration
01ADE0: 6F 66 20 20 74 68 65 73 65 20 20 74 79 70 65 20 of these type
01ADF0: 20 69 64 65 6E 74 69 66 69 65 72 73 20 20 73 68 identifiers sh
01AE00: 4E 43 45 20 20 4E 55 4D 42 45 52 2E 0D 0A 20 20 NCE NUMBER...
01AE10: 20 20 20 20 45 78 74 65 72 6E 61 6C 20 20 70 72 External pr
01AE20: 6F 63 65 64 75 72 65 73 20 20 53 48 4F 55 4C 44 ocedures SHOULD
01AE30: 20 41 4C 57 41 59 53 20 42 45 20 44 45 43 4C 41 ALWAYS BE DECLA
01AE40: 52 45 44 20 49 4E 20 54 48 45 20 53 41 4D 45 20 RED IN THE SAME
01AE50: 53 45 51 55 45 4E 43 45 2C 0D 0A 20 20 20 20 20 SEQUENCE,..
01AE60: 20 69 6E 20 74 68 65 20 6D 61 69 6E 20 70 72 6F in the main pro
01AE70: 67 72 61 6D 20 6F 72 20 69 6E 20 61 6E 6F 74 68 gram or in anoth
01AE80: 65 72 20 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 er external proc
01AE90: 65 64 75 72 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 edure.....
01AEA0: 20 20 20 20 20 4E 4F 54 45 20 20 74 68 61 74 20 NOTE that
01AEB0: 20 54 48 45 20 20 55 53 45 52 20 20 4D 55 53 54 THE USER MUST
01AEC0: 20 20 45 4E 53 55 52 45 20 20 74 68 61 74 20 20 ENSURE that
01AED0: 20 65 78 74 65 72 6E 61 6C 20 20 20 70 72 6F 63 external proc
01AEE0: 65 64 75 72 65 0D 0A 20 20 20 20 20 20 64 65 63 edure.. dec
01AEF0: 6C 61 72 61 74 69 6F 6E 73 20 20 61 6E 64 20 20 larations and
01AF00: 70 61 72 61 6D 65 74 65 72 20 20 6C 69 73 74 73 parameter lists
01AF10: 20 20 61 72 65 20 20 43 4F 4E 53 49 53 54 45 4E are CONSISTEN
01AF20: 54 20 20 61 6D 6F 6E 67 20 64 69 66 66 65 72 65 T among differe
01AF30: 6E 74 0D 0A 20 20 20 20 20 20 66 69 6C 65 73 2C nt.. files,
01AF40: 20 73 69 6E 63 65 20 74 68 65 20 63 6F 6D 70 69 since the compi
01AF50: 6C 65 72 20 64 6F 65 73 20 6E 6F 74 20 76 61 6C ler does not val
01AF60: 69 64 61 74 65 20 74 68 69 73 2E 0D 0A 0D 0A 0D idate this......
01AF70: 0A 20 20 20 20 20 20 31 33 2E 20 20 20 44 65 62 . 13. Deb
01AF80: 75 67 67 69 6E 67 20 50 61 73 63 61 6C 20 70 72 ugging Pascal pr
01AF90: 6F 67 72 61 6D 73 0D 0A 0D 0A 20 20 20 20 20 20 ograms....
01AFA0: 20 20 20 20 20 44 65 62 75 67 67 69 6E 67 20 20 Debugging
01AFB0: 63 6F 6D 70 75 74 65 72 20 70 72 6F 67 72 61 6D computer program
01AFC0: 73 20 69 73 20 74 68 65 20 70 72 6F 63 65 73 73 s is the process
01AFD0: 20 6F 66 20 63 6F 72 72 65 63 74 69 6E 67 20 22 of correcting "
01AFE0: 62 75 67 73 22 0D 0A 20 20 20 20 20 20 69 6E 20 bugs".. in
01AFF0: 61 20 70 72 6F 67 72 61 6D 20 73 6F 20 74 68 61 a program so tha
01B000: 6F 75 6C 64 20 20 61 70 70 65 61 72 20 49 4E 20 ould appear IN
01B010: 54 48 45 20 53 41 4D 45 0D 0A 20 20 20 20 20 20 THE SAME..
01B020: 4C 4F 43 41 54 49 4F 4E 20 61 73 20 74 68 65 20 LOCATION as the
01B030: 67 6C 6F 62 61 6C 20 64 65 63 6C 61 72 61 74 69 global declarati
01B040: 6F 6E 73 20 2D 2D 20 6A 75 73 74 20 61 66 74 65 ons -- just afte
01B050: 72 20 45 58 54 45 52 4E 2E 0D 0A 0D 0A 0D 0A 0D r EXTERN........
01B060: 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D ................
01B070: 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
01B080: 20 20 20 20 20 20 20 45 58 54 45 52 4E 0D 0A 0D EXTERN...
01B090: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
01B0A0: 20 20 20 43 4F 4E 53 54 0D 0A 0D 0A 20 20 20 20 CONST....
01B0B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4E 41 NA
01B0C0: 4D 45 5F 53 49 5A 45 20 3D 20 33 32 3B 0D 0A 0D ME_SIZE = 32;...
01B0D0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
01B0E0: 20 20 20 54 59 50 45 0D 0A 0D 0A 20 20 20 20 20 TYPE....
01B0F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 4E 41 4D NAM
01B100: 45 20 3D 20 41 52 52 41 59 20 5B 31 2E 2E 4E 41 E = ARRAY [1..NA
01B110: 4D 45 5F 53 49 5A 45 5D 20 4F 46 20 43 48 41 52 ME_SIZE] OF CHAR
01B120: 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ;....
01B130: 20 20 20 20 20 20 20 43 55 53 54 4F 4D 45 52 5F CUSTOMER_
01B140: 52 45 43 4F 52 44 20 3D 20 52 45 43 4F 52 44 0D RECORD = RECORD.
01B150: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
01B160: 20 20 20 20 20 20 20 20 20 43 55 53 54 5F 4E 41 CUST_NA
01B170: 4D 45 2C 20 43 55 53 54 5F 41 44 44 52 20 20 20 ME, CUST_ADDR
01B180: 20 3A 20 4E 41 4D 45 3B 0D 0A 20 20 20 20 20 20 : NAME;..
01B190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01B1A0: 20 20 42 41 4C 41 4E 43 45 20 20 20 20 20 20 20 BALANCE
01B1B0: 20 20 20 20 20 20 20 20 20 20 3A 20 52 45 41 4C : REAL
01B1C0: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
01B1D0: 20 20 20 20 20 20 20 20 20 20 20 45 4E 44 3B 0D END;.
01B1E0: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
01B1F0: 20 20 20 20 20 56 41 52 20 20 20 28 2A 20 4D 41 VAR (* MA
01B200: 74 20 69 74 20 77 69 6C 6C 20 20 70 65 72 66 6F t it will perfo
01B210: 72 6D 20 20 61 73 20 20 64 65 73 69 72 65 64 2E rm as desired.
01B220: 20 20 20 54 68 65 72 65 20 20 61 72 65 20 20 74 There are t
01B230: 77 6F 0D 0A 20 20 20 20 20 20 70 68 61 73 65 73 wo.. phases
01B240: 20 20 6F 66 20 64 65 62 75 67 67 69 6E 67 3A 20 of debugging:
01B250: 20 63 6F 72 72 65 63 74 69 6E 67 20 73 79 6E 74 correcting synt
01B260: 61 78 20 65 72 72 6F 72 73 20 69 6E 20 61 20 70 ax errors in a p
01B270: 72 6F 67 72 61 6D 20 69 6E 20 6F 72 64 65 72 0D rogram in order.
01B280: 0A 20 20 20 20 20 20 74 6F 20 6F 62 74 61 69 6E . to obtain
01B290: 20 61 6E 20 65 72 72 6F 72 2D 66 72 65 65 20 63 an error-free c
01B2A0: 6F 6D 70 69 6C 65 2C 20 61 6E 64 20 63 6F 72 72 ompile, and corr
01B2B0: 65 63 74 69 6E 67 20 20 65 72 72 6F 72 73 20 20 ecting errors
01B2C0: 77 68 69 63 68 20 20 6F 63 63 75 72 0D 0A 20 20 which occur..
01B2D0: 20 20 20 20 64 75 72 69 6E 67 20 74 68 65 20 72 during the r
01B2E0: 75 6E 6E 69 6E 67 20 6F 66 20 74 68 65 20 70 72 unning of the pr
01B2F0: 6F 67 72 61 6D 20 61 66 74 65 72 20 61 20 63 6C ogram after a cl
01B300: 65 61 6E 20 63 6F 6D 70 69 6C 65 2E 20 20 52 65 ean compile. Re
01B310: 66 65 72 65 6E 63 69 6E 67 0D 0A 20 20 20 20 20 ferencing..
01B320: 20 61 6E 20 20 75 6E 64 65 63 6C 61 72 65 64 20 an undeclared
01B330: 20 76 61 72 69 61 62 6C 65 20 20 69 73 20 20 61 variable is a
01B340: 6E 20 20 65 78 61 6D 70 6C 65 20 6F 66 20 74 68 n example of th
01B350: 65 20 66 69 72 73 74 20 6B 69 6E 64 20 6F 66 20 e first kind of
01B360: 65 72 72 6F 72 2E 0D 0A 20 20 20 20 20 20 44 69 error... Di
01B370: 76 69 64 69 6E 67 20 62 79 20 7A 65 72 6F 20 69 viding by zero i
01B380: 73 20 61 6E 20 65 78 61 6D 70 6C 65 20 6F 66 20 s an example of
01B390: 74 68 65 20 73 65 63 6F 6E 64 20 6B 69 6E 64 2E the second kind.
01B3A0: 20 20 54 68 69 73 20 20 73 65 63 74 69 6F 6E 20 This section
01B3B0: 20 69 73 0D 0A 20 20 20 20 20 20 70 72 69 6D 61 is.. prima
01B3C0: 72 69 6C 79 20 20 63 6F 6E 63 65 72 6E 65 64 20 rily concerned
01B3D0: 77 69 74 68 20 74 68 65 20 73 65 63 6F 6E 64 20 with the second
01B3E0: 6B 69 6E 64 20 6F 66 20 65 72 72 6F 72 20 2D 20 kind of error -
01B3F0: 74 68 6F 73 65 20 74 68 61 74 20 6F 63 63 75 72 those that occur
01B400: 49 4E 20 50 52 4F 47 52 41 4D 20 47 4C 4F 42 41 IN PROGRAM GLOBA
01B410: 4C 20 56 41 52 49 41 42 4C 45 53 20 2A 29 0D 0A L VARIABLES *)..
01B420: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
01B430: 20 20 20 20 43 55 53 54 4F 4D 45 52 5F 4C 49 53 CUSTOMER_LIS
01B440: 54 20 3A 20 41 52 52 41 59 20 5B 31 2E 2E 31 30 T : ARRAY [1..10
01B450: 30 5D 20 4F 46 20 0D 0A 20 20 20 20 20 20 20 20 0] OF ..
01B460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01B470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01B480: 20 20 43 55 53 54 4F 4D 45 52 5F 52 45 43 4F 52 CUSTOMER_RECOR
01B490: 44 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 D;....
01B4A0: 20 20 20 20 20 20 20 20 28 2A 2A 2A 2A 20 53 45 (**** SE
01B4B0: 41 52 43 48 20 43 55 53 54 4F 4D 45 52 20 4C 49 ARCH CUSTOMER LI
01B4C0: 53 54 20 46 4F 52 20 47 49 56 45 4E 20 4E 41 4D ST FOR GIVEN NAM
01B4D0: 45 20 2A 2A 2A 2A 29 0D 0A 20 20 20 20 20 20 20 E ****)..
01B4E0: 20 20 20 20 20 20 20 20 20 20 20 46 55 4E 43 54 FUNCT
01B4F0: 49 4F 4E 20 53 45 41 52 43 48 20 28 20 4E 20 3A ION SEARCH ( N :
01B500: 20 4E 41 4D 45 20 29 20 3A 20 43 55 53 54 4F 4D NAME ) : CUSTOM
01B510: 45 52 5F 52 45 43 4F 52 44 3B 0D 0A 20 20 20 20 ER_RECORD;..
01B520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 56 41 VA
01B530: 52 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 R..
01B540: 20 20 20 20 20 49 20 3A 20 49 4E 54 45 47 45 52 I : INTEGER
01B550: 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ;....
01B560: 20 20 20 20 20 20 20 42 45 47 49 4E 0D 0A 20 20 BEGIN..
01B570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01B580: 49 3A 3D 31 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 I:=1;....
01B590: 20 20 20 20 20 20 20 20 20 20 20 57 48 49 4C 45 WHILE
01B5A0: 20 28 4E 20 3C 3E 20 43 55 53 54 4F 4D 45 52 5F (N <> CUSTOMER_
01B5B0: 4C 49 53 54 5B 49 5D 2E 43 55 53 54 5F 4E 41 4D LIST[I].CUST_NAM
01B5C0: 45 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 E..
01B5D0: 20 20 20 20 20 20 20 20 20 20 20 41 4E 44 20 28 AND (
01B5E0: 49 20 3C 3D 20 31 30 30 29 20 44 4F 20 20 20 49 I <= 100) DO I
01B5F0: 3A 3D 49 2B 31 3B 0D 0A 0D 0A 20 20 20 20 20 20 :=I+1;....
01B600: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01B610: 17 00 00 00 02 09 2A E5 17 00 C1 02 00 00 00 02 ......*.........
01B620: 17 00 C6 02 00 00 00 02 17 00 C2 02 00 00 00 02 ................
01B630: 17 00 C7 02 00 00 00 02 17 00 C3 02 00 00 00 02 ................
01B640: 17 00 C8 02 00 00 00 02 17 00 C4 02 00 00 00 02 ................
01B650: 17 00 C9 02 00 00 00 02 17 00 C5 02 00 00 00 02 ................
01B660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B6F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B700: 0D 0A 20 20 20 20 20 20 64 75 72 69 6E 67 20 70 .. during p
01B710: 72 6F 67 72 61 6D 20 74 65 73 74 69 6E 67 2E 0D rogram testing..
01B720: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 4A 52 ... JR
01B730: 54 20 50 61 73 63 61 6C 20 70 72 6F 76 69 64 65 T Pascal provide
01B740: 73 20 73 65 76 65 72 61 6C 20 66 61 63 69 6C 69 s several facili
01B750: 74 69 65 73 20 74 6F 20 73 69 6D 70 6C 69 66 79 ties to simplify
01B760: 20 74 68 65 20 20 6C 6F 63 61 74 69 6F 6E 0D 0A the location..
01B770: 20 20 20 20 20 20 61 6E 64 20 20 74 68 65 20 20 and the
01B780: 63 6F 72 72 65 63 74 69 6F 6E 20 6F 66 20 72 75 correction of ru
01B790: 6E 2D 74 69 6D 65 20 65 72 72 6F 72 73 2E 20 20 n-time errors.
01B7A0: 54 68 65 20 64 65 62 75 67 67 69 6E 67 20 70 68 The debugging ph
01B7B0: 69 6C 6F 73 6F 70 68 79 20 69 73 0D 0A 20 20 20 ilosophy is..
01B7C0: 20 20 20 74 6F 20 70 72 6F 76 69 64 65 20 74 68 to provide th
01B7D0: 65 20 20 70 72 6F 67 72 61 6D 6D 65 72 20 20 77 e programmer w
01B7E0: 69 74 68 20 20 61 73 20 20 6D 75 63 68 20 20 72 ith as much r
01B7F0: 65 6C 65 76 61 6E 74 20 20 69 6E 66 6F 72 6D 61 elevant informa
01B800: 74 69 6F 6E 20 20 61 73 0D 0A 20 20 20 20 20 20 tion as..
01B810: 70 6F 73 73 69 62 6C 65 20 69 6E 20 61 20 63 6C possible in a cl
01B820: 65 61 72 6C 79 20 66 6F 72 6D 61 74 74 65 64 20 early formatted
01B830: 64 69 73 70 6C 61 79 2E 20 20 54 68 65 20 72 75 display. The ru
01B840: 6E 2D 74 69 6D 65 20 73 79 73 74 65 6D 20 64 65 n-time system de
01B850: 74 65 63 74 73 0D 0A 20 20 20 20 20 20 65 72 72 tects.. err
01B860: 6F 72 73 20 20 61 74 20 20 74 77 6F 20 20 6C 65 ors at two le
01B870: 76 65 6C 73 20 20 6F 66 20 20 73 65 76 65 72 69 vels of severi
01B880: 74 79 20 20 2D 20 20 65 72 72 6F 72 73 20 20 61 ty - errors a
01B890: 6E 64 20 77 61 72 6E 69 6E 67 73 2E 20 20 57 68 nd warnings. Wh
01B8A0: 65 6E 0D 0A 20 20 20 20 20 20 77 61 72 6E 69 6E en.. warnin
01B8B0: 67 73 20 6F 63 63 75 72 2C 20 61 20 6D 65 73 73 gs occur, a mess
01B8C0: 61 67 65 20 69 73 20 69 73 73 75 65 64 20 61 6E age is issued an
01B8D0: 64 20 70 72 6F 63 65 73 73 69 6E 67 20 20 63 6F d processing co
01B8E0: 6E 74 69 6E 75 65 73 2E 20 20 20 57 68 65 6E 0D ntinues. When.
01B8F0: 0A 20 20 20 20 20 20 61 6E 20 65 72 72 6F 72 20 . an error
01B900: 74 68 65 20 65 72 72 6F 72 20 6D 65 73 73 61 67 the error messag
01B910: 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 e.....
01B920: 20 54 68 65 20 63 6F 64 69 6E 67 20 6F 66 20 74 The coding of t
01B930: 68 65 73 65 20 64 69 72 65 63 74 69 76 65 73 20 hese directives
01B940: 61 6E 64 20 75 73 65 20 20 6F 66 20 20 74 68 65 and use of the
01B950: 20 20 53 59 53 54 45 4D 20 20 62 75 69 6C 74 69 SYSTEM builti
01B960: 6E 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 64 75 n.. procedu
01B970: 72 65 20 20 74 6F 20 20 63 6F 6E 74 72 6F 6C 20 re to control
01B980: 20 74 68 65 20 20 74 72 61 63 65 73 20 20 61 72 the traces ar
01B990: 65 20 20 64 65 73 63 72 69 62 65 64 20 69 6E 20 e described in
01B9A0: 74 68 65 20 73 65 63 74 69 6F 6E 20 6F 6E 0D 0A the section on..
01B9B0: 20 20 20 20 20 20 63 6F 6D 70 69 6C 65 72 20 64 compiler d
01B9C0: 69 72 65 63 74 69 76 65 73 20 28 73 65 63 74 69 irectives (secti
01B9D0: 6F 6E 20 33 20 6F 66 20 74 68 69 73 20 6D 61 6E on 3 of this man
01B9E0: 75 61 6C 29 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 ual).......
01B9F0: 20 31 33 2E 32 20 20 44 45 42 55 47 20 70 72 6F 13.2 DEBUG pro
01BA00: 63 65 64 75 72 65 0D 0A 0D 0A 20 20 20 20 20 20 cedure....
01BA10: 20 20 20 20 20 54 68 65 20 44 45 42 55 47 20 65 The DEBUG e
01BA20: 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 xternal procedur
01BA30: 65 20 61 6C 6C 6F 77 73 20 74 68 65 20 63 6F 6E e allows the con
01BA40: 74 72 6F 6C 20 6F 66 20 20 74 68 65 20 20 64 79 trol of the dy
01BA50: 6E 61 6D 69 63 0D 0A 20 20 20 20 20 20 74 72 61 namic.. tra
01BA60: 63 65 20 20 66 61 63 69 6C 69 74 69 65 73 20 77 ce facilities w
01BA70: 68 69 6C 65 20 61 20 70 72 6F 67 72 61 6D 20 69 hile a program i
01BA80: 73 20 62 65 69 6E 67 20 74 65 73 74 65 64 2E 20 s being tested.
01BA90: 20 54 68 65 20 70 72 6F 63 65 64 75 72 65 20 61 The procedure a
01BAA0: 6E 64 0D 0A 20 20 20 20 20 20 6C 69 6E 65 20 74 nd.. line t
01BAB0: 72 61 63 65 73 20 63 61 6E 20 62 65 20 74 75 72 races can be tur
01BAC0: 6E 65 64 20 6F 6E 20 6F 72 20 6F 66 66 20 61 6E ned on or off an
01BAD0: 64 20 74 68 65 20 6C 69 6E 65 20 72 61 6E 67 65 d the line range
01BAE0: 20 63 61 6E 20 62 65 20 73 65 74 20 20 62 79 0D can be set by.
01BAF0: 0A 20 20 20 20 20 20 63 6F 6D 6D 61 6E 64 73 20 . commands
01BB00: 6F 63 63 75 72 73 2C 20 70 72 6F 63 65 73 73 69 occurs, processi
01BB10: 6E 67 20 6D 75 73 74 20 74 65 72 6D 69 6E 61 74 ng must terminat
01BB20: 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 e.....
01BB30: 20 45 72 72 6F 72 20 20 61 6E 64 20 77 61 72 6E Error and warn
01BB40: 69 6E 67 20 6D 65 73 73 61 67 65 73 20 61 72 65 ing messages are
01BB50: 20 61 6C 6C 20 70 72 65 73 65 6E 74 65 64 20 69 all presented i
01BB60: 6E 20 76 65 72 62 61 6C 20 66 6F 72 6D 61 74 20 n verbal format
01BB70: 2D 0D 0A 20 20 20 20 20 20 74 68 65 72 65 20 61 -.. there a
01BB80: 72 65 20 6E 6F 20 6E 75 6D 62 65 72 20 6F 72 20 re no number or
01BB90: 6C 65 74 74 65 72 20 63 6F 64 65 73 20 74 6F 20 letter codes to
01BBA0: 6C 6F 6F 6B 20 75 70 2E 20 20 54 68 65 73 65 20 look up. These
01BBB0: 20 6D 65 73 73 61 67 65 73 20 20 61 72 65 0D 0A messages are..
01BBC0: 20 20 20 20 20 20 73 74 6F 72 65 64 20 6F 6E 20 stored on
01BBD0: 61 20 64 69 73 6B 20 66 69 6C 65 20 73 6F 20 74 a disk file so t
01BBE0: 68 61 74 20 6D 61 69 6E 20 73 74 6F 72 61 67 65 hat main storage
01BBF0: 20 69 73 20 6E 6F 74 20 77 61 73 74 65 64 2E 0D is not wasted..
01BC00: 0A 0D 0A 0D 0A 20 20 20 20 20 20 31 33 2E 31 20 ..... 13.1
01BC10: 20 54 72 61 63 65 20 6F 70 74 69 6F 6E 73 0D 0A Trace options..
01BC20: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 4A 52 54 .. JRT
01BC30: 20 20 50 61 73 63 61 6C 20 20 61 6C 6C 6F 77 73 Pascal allows
01BC40: 20 20 61 20 74 72 61 63 65 20 6F 66 20 74 68 65 a trace of the
01BC50: 20 70 72 6F 67 72 61 6D 20 6C 69 6E 65 20 6E 75 program line nu
01BC60: 6D 62 65 72 73 20 77 68 69 6C 65 20 61 0D 0A 20 mbers while a..
01BC70: 20 20 20 20 20 70 72 6F 67 72 61 6D 20 69 73 20 program is
01BC80: 72 75 6E 6E 69 6E 67 2E 20 54 68 69 73 20 74 72 running. This tr
01BC90: 61 63 65 20 6D 61 79 20 62 65 20 74 75 72 6E 65 ace may be turne
01BCA0: 64 20 6F 6E 20 6F 72 20 6F 66 66 20 62 79 20 74 d on or off by t
01BCB0: 68 65 20 70 72 6F 67 72 61 6D 0D 0A 20 20 20 20 he program..
01BCC0: 20 20 69 74 73 65 6C 66 2E 20 20 54 68 65 20 72 itself. The r
01BCD0: 61 6E 67 65 20 6F 66 20 6C 69 6E 65 20 6E 75 6D ange of line num
01BCE0: 62 65 72 73 20 74 6F 20 62 65 20 74 72 61 63 65 bers to be trace
01BCF0: 64 20 6D 61 79 20 61 6C 73 6F 20 20 62 65 20 20 d may also be
01BD00: 65 6E 74 65 72 65 64 20 66 72 6F 6D 20 74 68 65 entered from the
01BD10: 20 63 6F 6E 73 6F 6C 65 2E 0D 0A 0D 0A 20 20 20 console.....
01BD20: 20 20 20 20 20 20 20 20 54 68 65 20 20 66 69 6C The fil
01BD30: 65 20 20 44 45 42 55 47 2E 49 4E 54 20 20 6F 6E e DEBUG.INT on
01BD40: 20 20 74 68 65 20 20 64 69 73 74 72 69 62 75 74 the distribut
01BD50: 69 6F 6E 20 64 69 73 6B 20 69 73 20 74 68 65 20 ion disk is the
01BD60: 63 6F 6D 70 69 6C 65 64 0D 0A 20 20 20 20 20 20 compiled..
01BD70: 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 external procedu
01BD80: 72 65 20 6D 6F 64 75 6C 65 2E 20 20 54 6F 20 72 re module. To r
01BD90: 65 66 65 72 65 6E 63 65 20 61 6E 20 65 78 74 65 eference an exte
01BDA0: 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 20 66 rnal procedure f
01BDB0: 72 6F 6D 20 61 0D 0A 20 20 20 20 20 20 50 61 73 rom a.. Pas
01BDC0: 63 61 6C 20 70 72 6F 67 72 61 6D 2C 20 69 74 20 cal program, it
01BDD0: 69 73 20 6E 65 63 65 73 73 61 72 79 20 74 6F 20 is necessary to
01BDE0: 64 65 63 6C 61 72 65 20 69 74 3A 0D 0A 0D 0A 20 declare it:....
01BDF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01BE00: 20 50 52 4F 43 45 44 55 52 45 20 44 45 42 55 47 PROCEDURE DEBUG
01BE10: 3B 20 45 58 54 45 52 4E 3B 0D 0A 0D 0A 20 20 20 ; EXTERN;....
01BE20: 20 20 20 20 20 20 20 20 54 68 65 20 70 72 6F 63 The proc
01BE30: 65 64 75 72 65 20 63 61 6E 20 62 65 20 63 61 6C edure can be cal
01BE40: 6C 65 64 20 66 72 6F 6D 20 61 6E 20 6E 75 6D 62 led from an numb
01BE50: 65 72 20 6F 66 20 70 6C 61 63 65 73 20 69 6E 20 er of places in
01BE60: 74 68 65 20 74 65 73 74 0D 0A 20 20 20 20 20 20 the test..
01BE70: 70 72 6F 67 72 61 6D 20 62 79 20 69 6E 73 65 72 program by inser
01BE80: 74 69 6E 67 20 61 20 70 72 6F 63 65 64 75 72 65 ting a procedure
01BE90: 20 63 61 6C 6C 20 73 74 61 74 65 6D 65 6E 74 3A call statement:
01BEA0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
01BEB0: 20 20 20 20 20 20 44 45 42 55 47 3B 0D 0A 0D 0A DEBUG;....
01BEC0: 20 20 20 20 20 20 20 20 20 20 20 57 68 65 6E 20 When
01BED0: 69 74 20 69 73 20 61 63 74 69 76 61 74 65 64 2C it is activated,
01BEE0: 20 44 45 42 55 47 20 77 69 6C 6C 20 69 6E 74 65 DEBUG will inte
01BEF0: 72 61 63 74 20 77 69 74 68 20 74 68 65 20 70 72 ract with the pr
01BF00: 73 65 74 20 20 62 79 0D 0A 20 20 20 20 20 20 74 set by.. t
01BF10: 68 65 20 70 72 6F 67 72 61 6D 2E 0D 0A 0D 0A 20 he program.....
01BF20: 20 20 20 20 20 20 20 20 20 20 41 20 20 74 72 61 A tra
01BF30: 63 65 20 20 6F 66 20 20 70 72 6F 63 65 64 75 72 ce of procedur
01BF40: 65 20 6E 61 6D 65 73 20 63 61 6E 20 61 6C 73 6F e names can also
01BF50: 20 62 65 20 70 72 6F 64 75 63 65 64 2E 20 20 4F be produced. O
01BF60: 6E 20 65 6E 74 72 79 20 74 6F 0D 0A 20 20 20 20 n entry to..
01BF70: 20 20 65 61 63 68 20 70 72 6F 63 65 64 75 72 65 each procedure
01BF80: 2C 20 74 68 65 20 6E 61 6D 65 20 61 6E 64 20 61 , the name and a
01BF90: 63 74 69 76 61 74 69 6F 6E 20 63 6F 75 6E 74 20 ctivation count
01BFA0: 69 73 20 64 69 73 70 6C 61 79 65 64 2E 20 20 4F is displayed. O
01BFB0: 6E 20 65 78 69 74 2C 0D 0A 20 20 20 20 20 20 74 n exit,.. t
01BFC0: 68 65 20 6E 61 6D 65 20 6F 66 20 74 68 65 20 70 he name of the p
01BFD0: 72 6F 63 65 64 75 72 65 20 69 73 20 64 69 73 70 rocedure is disp
01BFE0: 6C 61 79 65 64 2E 20 20 54 68 69 73 20 20 66 65 layed. This fe
01BFF0: 61 74 75 72 65 20 20 63 61 6E 20 20 61 6C 73 6F ature can also
01C000: 20 20 62 65 0D 0A 20 20 20 20 20 20 74 75 72 6E be.. turn
01C010: 65 64 20 6F 6E 20 6F 72 20 6F 66 66 20 75 6E 64 ed on or off und
01C020: 65 72 20 70 72 6F 67 72 61 6D 20 63 6F 6E 74 72 er program contr
01C030: 6F 6C 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 ol.....
01C040: 20 20 54 68 65 20 20 45 78 65 63 20 20 69 6E 74 The Exec int
01C050: 65 72 72 75 70 74 20 20 6D 6F 64 65 20 63 61 6E errupt mode can
01C060: 20 62 65 20 65 6E 74 65 72 65 64 20 62 79 20 61 be entered by a
01C070: 20 63 6F 6E 74 72 6F 6C 2D 6E 20 63 6F 6D 6D 61 control-n comma
01C080: 6E 64 0D 0A 20 20 20 20 20 20 77 68 69 6C 65 20 nd.. while
01C090: 61 20 70 72 6F 67 72 61 6D 20 69 73 20 72 75 6E a program is run
01C0A0: 6E 69 6E 67 2E 20 20 49 6E 20 74 68 69 73 20 6D ning. In this m
01C0B0: 6F 64 65 2C 20 74 68 65 20 74 72 61 63 65 73 20 ode, the traces
01C0C0: 61 6E 64 20 6C 69 6E 65 20 6E 75 6D 62 65 72 0D and line number.
01C0D0: 0A 20 20 20 20 20 20 72 61 6E 67 65 20 63 61 6E . range can
01C0E0: 20 62 65 20 6D 6F 64 69 66 69 65 64 2E 20 20 4F be modified. O
01C0F0: 74 68 65 72 20 73 79 73 74 65 6D 20 73 74 61 74 ther system stat
01C100: 6F 67 72 61 6D 6D 65 72 20 74 6F 0D 0A 20 20 20 ogrammer to..
01C110: 20 20 20 6D 6F 64 69 66 79 20 74 68 65 20 63 75 modify the cu
01C120: 72 72 65 6E 74 20 74 72 61 63 65 20 6F 70 65 72 rrent trace oper
01C130: 61 74 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D ations..........
01C140: 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 ...........
01C150: 20 4C 69 73 74 69 6E 67 20 6F 66 20 44 45 42 55 Listing of DEBU
01C160: 47 2E 50 41 53 3A 0D 0A 0D 0A 20 20 20 20 20 20 G.PAS:....
01C170: 65 78 74 65 72 6E 0D 0A 0D 0A 20 20 20 20 20 20 extern....
01C180: 70 72 6F 63 65 64 75 72 65 20 64 65 62 75 67 3B procedure debug;
01C190: 0D 0A 0D 0A 20 20 20 20 20 20 76 61 72 0D 0A 20 .... var..
01C1A0: 20 20 20 20 20 72 65 70 6C 79 20 3A 20 63 68 61 reply : cha
01C1B0: 72 3B 0D 0A 20 20 20 20 20 20 6C 6F 77 65 72 2C r;.. lower,
01C1C0: 20 75 70 70 65 72 20 3A 20 69 6E 74 65 67 65 72 upper : integer
01C1D0: 3B 0D 0A 0D 0A 20 20 20 20 20 20 62 65 67 69 6E ;.... begin
01C1E0: 20 28 2A 20 64 65 62 75 67 20 2A 29 0D 0A 20 20 (* debug *)..
01C1F0: 20 20 20 20 77 72 69 74 65 6C 6E 3B 0D 0A 20 20 writeln;..
01C200: 20 20 20 20 77 72 69 74 65 28 27 41 63 74 69 76 write('Activ
01C210: 61 74 65 20 6C 69 6E 65 20 74 72 61 63 65 3F 20 ate line trace?
01C220: 20 79 2F 6E 20 3A 20 27 29 3B 0D 0A 20 20 20 20 y/n : ');..
01C230: 20 20 72 65 61 64 6C 6E 28 72 65 70 6C 79 29 3B readln(reply);
01C240: 0D 0A 20 20 20 20 20 20 69 66 20 75 70 63 61 73 .. if upcas
01C250: 65 28 72 65 70 6C 79 29 20 3D 20 27 59 27 20 74 e(reply) = 'Y' t
01C260: 68 65 6E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 hen..
01C270: 20 20 20 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 begin..
01C280: 20 20 20 20 20 20 20 20 77 72 69 74 65 28 27 52 write('R
01C290: 61 6E 67 65 20 6F 66 20 6C 69 6E 65 73 3F 20 20 ange of lines?
01C2A0: 6C 6F 77 65 72 2C 75 70 70 65 72 20 3A 20 27 29 lower,upper : ')
01C2B0: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
01C2C0: 20 72 65 61 64 6C 6E 28 6C 6F 77 65 72 2C 75 70 readln(lower,up
01C2D0: 70 65 72 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 per);..
01C2E0: 20 20 20 20 20 73 79 73 74 65 6D 28 20 6C 74 72 system( ltr
01C2F0: 61 63 65 20 29 3B 0D 0A 20 20 20 20 20 20 20 20 ace );..
01C300: 75 73 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 63 us information c
01C310: 61 6E 20 20 61 6C 73 6F 20 20 62 65 0D 0A 20 20 an also be..
01C320: 20 20 20 20 64 69 73 70 6C 61 79 65 64 2E 20 20 displayed.
01C330: 20 57 68 65 6E 20 20 69 6E 20 69 6E 74 65 72 72 When in interr
01C340: 75 70 74 20 6D 6F 64 65 2C 20 65 6E 74 65 72 69 upt mode, enteri
01C350: 6E 67 20 61 20 73 70 61 63 65 20 63 68 61 72 61 ng a space chara
01C360: 63 74 65 72 20 77 69 6C 6C 0D 0A 20 20 20 20 20 cter will..
01C370: 20 63 61 75 73 65 20 61 20 6C 69 73 74 20 6F 66 cause a list of
01C380: 20 76 61 6C 69 64 20 63 6F 6D 6D 61 6E 64 73 20 valid commands
01C390: 74 6F 20 62 65 20 64 69 73 70 6C 61 79 65 64 2E to be displayed.
01C3A0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 45 .... E
01C3B0: 78 65 63 20 20 69 6E 74 65 72 72 75 70 74 20 20 xec interrupt
01C3C0: 61 6C 6C 6F 77 73 20 20 61 73 79 6E 63 68 72 6F allows asynchro
01C3D0: 6E 6F 75 73 20 20 63 6F 6E 74 72 6F 6C 20 20 6F nous control o
01C3E0: 66 20 20 20 74 68 65 20 20 20 74 72 61 63 65 0D f the trace.
01C3F0: 0A 20 20 20 20 20 20 66 61 63 69 6C 69 74 79 2E . facility.
01C400: 20 20 50 72 6F 67 72 61 6D 6D 65 64 20 20 63 6F Programmed co
01C410: 6E 74 72 6F 6C 20 20 69 73 20 20 61 6C 73 6F 20 ntrol is also
01C420: 20 73 75 70 70 6F 72 74 65 64 20 20 77 69 74 68 supported with
01C430: 20 20 74 68 65 20 53 59 53 54 45 4D 0D 0A 20 20 the SYSTEM..
01C440: 20 20 20 20 62 75 69 6C 74 69 6E 20 70 72 6F 63 builtin proc
01C450: 65 64 75 72 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 edure.....
01C460: 20 20 20 20 20 41 6E 20 20 69 6E 74 65 72 61 63 An interac
01C470: 74 69 76 65 20 20 65 78 74 65 72 6E 61 6C 20 20 tive external
01C480: 70 72 6F 63 65 64 75 72 65 20 20 74 6F 20 20 63 procedure to c
01C490: 6F 6E 74 72 6F 6C 20 20 74 68 65 73 65 20 20 20 ontrol these
01C4A0: 74 72 61 63 65 0D 0A 20 20 20 20 20 20 66 61 63 trace.. fac
01C4B0: 69 6C 69 74 69 65 73 20 61 74 20 72 75 6E 2D 74 ilities at run-t
01C4C0: 69 6D 65 20 69 73 20 70 72 6F 76 69 64 65 64 2E ime is provided.
01C4D0: 20 20 54 68 65 20 44 45 42 55 47 20 70 72 6F 63 The DEBUG proc
01C4E0: 65 64 75 72 65 20 69 73 20 64 65 73 63 72 69 62 edure is describ
01C4F0: 65 64 0D 0A 20 20 20 20 20 20 69 6E 20 73 65 63 ed.. in sec
01C500: 20 20 20 20 20 20 73 79 73 74 65 6D 28 20 6C 72 system( lr
01C510: 61 6E 67 65 2C 6C 6F 77 65 72 2C 75 70 70 65 72 ange,lower,upper
01C520: 20 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 );..
01C530: 20 20 20 65 6E 64 0D 0A 20 20 20 20 20 20 65 6C end.. el
01C540: 73 65 20 20 20 20 73 79 73 74 65 6D 28 20 6E 6F se system( no
01C550: 6C 74 72 61 63 65 20 29 3B 0D 0A 0D 0A 20 20 20 ltrace );....
01C560: 20 20 20 77 72 69 74 65 28 27 41 63 74 69 76 61 write('Activa
01C570: 74 65 20 70 72 6F 63 65 64 75 72 65 20 74 72 61 te procedure tra
01C580: 63 65 3F 20 20 79 2F 6E 20 3A 20 27 29 3B 0D 0A ce? y/n : ');..
01C590: 20 20 20 20 20 20 72 65 61 64 6C 6E 28 72 65 70 readln(rep
01C5A0: 6C 79 29 3B 0D 0A 20 20 20 20 20 20 69 66 20 75 ly);.. if u
01C5B0: 70 63 61 73 65 28 72 65 70 6C 79 29 20 3D 20 27 pcase(reply) = '
01C5C0: 59 27 20 74 68 65 6E 20 73 79 73 74 65 6D 28 20 Y' then system(
01C5D0: 70 74 72 61 63 65 20 29 0D 0A 20 20 20 20 20 20 ptrace )..
01C5E0: 65 6C 73 65 20 20 20 20 73 79 73 74 65 6D 28 20 else system(
01C5F0: 6E 6F 70 74 72 61 63 65 20 29 3B 0D 0A 20 20 20 noptrace );..
01C600: 20 20 20 77 72 69 74 65 6C 6E 3B 0D 0A 20 20 20 writeln;..
01C610: 20 20 20 65 6E 64 3B 20 20 20 20 28 2A 20 64 65 end; (* de
01C620: 62 75 67 20 2A 29 2E 0D 0A 0D 0A 0D 0A 20 20 20 bug *).......
01C630: 20 20 20 31 33 2E 33 20 20 53 79 73 74 65 6D 20 13.3 System
01C640: 73 74 61 74 75 73 20 64 69 73 70 6C 61 79 0D 0A status display..
01C650: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 57 68 65 .. Whe
01C660: 6E 20 61 6E 20 65 72 72 6F 72 20 69 73 20 64 65 n an error is de
01C670: 74 65 63 74 65 64 2C 20 61 6E 20 65 72 72 6F 72 tected, an error
01C680: 20 6D 65 73 73 61 67 65 20 69 73 20 64 69 73 70 message is disp
01C690: 6C 61 79 65 64 20 6F 6E 20 20 74 68 65 0D 0A 20 layed on the..
01C6A0: 20 20 20 20 20 63 6F 6E 73 6F 6C 65 2E 20 20 54 console. T
01C6B0: 68 65 20 63 75 72 72 65 6E 74 20 6C 69 6E 65 20 he current line
01C6C0: 6E 75 6D 62 65 72 20 61 6E 64 20 6C 61 73 74 20 number and last
01C6D0: 65 6E 74 65 72 65 64 20 70 72 6F 63 65 64 75 72 entered procedur
01C6E0: 65 20 6E 61 6D 65 20 6D 61 79 0D 0A 20 20 20 20 e name may..
01C6F0: 20 20 61 6C 73 6F 20 20 62 65 20 20 64 69 73 70 also be disp
01C700: 74 69 6F 6E 20 31 33 2E 32 20 6F 66 20 74 68 69 tion 13.2 of thi
01C710: 73 20 6D 61 6E 75 61 6C 2E 0D 0A 0D 0A 20 20 20 s manual.....
01C720: 20 20 20 20 20 20 20 20 54 6F 20 75 73 65 20 74 To use t
01C730: 68 65 73 65 20 74 72 61 63 65 73 2C 20 74 68 65 hese traces, the
01C740: 20 25 4C 54 52 41 43 45 20 61 6E 64 20 25 50 54 %LTRACE and %PT
01C750: 52 41 43 45 20 63 6F 6D 70 69 6C 65 72 20 64 69 RACE compiler di
01C760: 72 65 63 74 69 76 65 73 0D 0A 20 20 20 20 20 20 rectives..
01C770: 6D 75 73 74 20 20 62 65 20 20 69 6E 73 65 72 74 must be insert
01C780: 65 64 20 20 69 6E 20 74 68 65 20 70 72 6F 67 72 ed in the progr
01C790: 61 6D 2E 20 20 49 74 20 69 73 20 72 65 63 6F 6D am. It is recom
01C7A0: 6D 65 6E 64 65 64 20 74 68 61 74 20 74 68 65 20 mended that the
01C7B0: 66 69 72 73 74 0D 0A 20 20 20 20 20 20 6C 69 6E first.. lin
01C7C0: 65 20 6F 66 20 61 20 70 72 6F 67 72 61 6D 20 62 e of a program b
01C7D0: 65 69 6E 67 20 74 65 73 74 65 64 20 63 6F 6E 74 eing tested cont
01C7E0: 61 69 6E 73 20 62 6F 74 68 20 64 69 72 65 63 74 ains both direct
01C7F0: 69 76 65 73 2C 20 73 6F 20 74 68 61 74 20 20 74 ives, so that t
01C800: 68 65 0D 0A 20 20 20 20 20 20 65 6E 74 69 72 65 he.. entire
01C810: 20 20 70 72 6F 67 72 61 6D 20 20 77 69 6C 6C 20 program will
01C820: 62 65 20 73 75 62 6A 65 63 74 20 74 6F 20 74 72 be subject to tr
01C830: 61 63 69 6E 67 2E 20 20 41 6E 20 61 64 64 69 74 acing. An addit
01C840: 69 6F 6E 61 6C 20 61 64 76 61 6E 74 61 67 65 0D ional advantage.
01C850: 0A 20 20 20 20 20 20 69 73 20 74 68 61 74 20 77 . is that w
01C860: 68 65 6E 20 74 68 65 73 65 20 6F 70 74 69 6F 6E hen these option
01C870: 73 20 20 61 72 65 20 20 70 72 65 73 65 6E 74 2C s are present,
01C880: 20 20 69 66 20 20 61 6E 20 20 65 72 72 6F 72 20 if an error
01C890: 20 6F 72 20 20 77 61 72 6E 69 6E 67 0D 0A 20 20 or warning..
01C8A0: 20 20 20 20 6F 63 63 75 72 73 2C 20 20 74 68 65 occurs, the
01C8B0: 20 20 6C 69 6E 65 20 20 6E 75 6D 62 65 72 20 20 line number
01C8C0: 61 6E 64 20 20 74 68 65 20 20 6C 61 74 65 73 74 and the latest
01C8D0: 20 20 70 72 6F 63 65 64 75 72 65 20 20 6E 61 6D procedure nam
01C8E0: 65 20 77 69 6C 6C 20 62 65 0D 0A 20 20 20 20 20 e will be..
01C8F0: 20 64 69 73 70 6C 61 79 65 64 20 77 69 74 68 20 displayed with
01C900: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01C910: 18 00 00 00 02 09 2A E5 18 00 C1 02 00 00 00 02 ......*.........
01C920: 18 00 C6 02 00 00 00 02 18 00 C2 02 00 00 00 02 ................
01C930: 18 00 C7 02 00 00 00 02 18 00 C3 02 00 00 00 02 ................
01C940: 18 00 C8 02 00 00 00 02 18 00 C4 02 00 00 00 02 ................
01C950: 18 00 C9 02 00 00 00 02 18 00 C5 02 00 00 00 02 ................
01C960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01C9F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01CA00: 6C 61 79 65 64 20 20 28 73 65 65 20 20 73 65 63 layed (see sec
01CA10: 74 69 6F 6E 20 31 33 2E 31 29 2E 20 20 41 20 73 tion 13.1). A s
01CA20: 79 73 74 65 6D 20 73 74 61 74 75 73 20 64 69 73 ystem status dis
01CA30: 70 6C 61 79 20 69 73 0D 0A 20 20 20 20 20 20 61 play is.. a
01CA40: 6C 73 6F 20 63 72 65 61 74 65 64 2E 20 20 54 68 lso created. Th
01CA50: 69 73 20 64 69 73 70 6C 61 79 20 63 6F 6E 74 61 is display conta
01CA60: 69 6E 73 20 20 75 73 65 66 75 6C 20 20 69 6E 66 ins useful inf
01CA70: 6F 72 6D 61 74 69 6F 6E 20 20 61 62 6F 75 74 20 ormation about
01CA80: 20 74 68 65 0D 0A 20 20 20 20 20 20 63 75 72 72 the.. curr
01CA90: 65 6E 74 20 73 74 61 74 65 20 6F 66 20 74 68 65 ent state of the
01CAA0: 20 72 75 6E 2D 74 69 6D 65 20 73 79 73 74 65 6D run-time system
01CAB0: 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
01CAC0: 54 68 65 20 20 73 79 73 74 65 6D 20 73 74 61 74 The system stat
01CAD0: 75 73 20 64 69 73 70 6C 61 79 20 73 68 6F 77 73 us display shows
01CAE0: 20 6E 69 6E 65 20 66 69 65 6C 64 73 20 6F 66 20 nine fields of
01CAF0: 69 6E 66 6F 72 6D 61 74 69 6F 6E 2E 20 20 49 66 information. If
01CB00: 0D 0A 20 20 20 20 20 20 65 78 74 65 72 6E 61 6C .. external
01CB10: 20 70 72 6F 63 65 64 75 72 65 73 20 61 72 65 20 procedures are
01CB20: 70 72 65 73 65 6E 74 2C 20 74 68 65 20 65 78 74 present, the ext
01CB30: 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 20 ernal procedure
01CB40: 74 61 62 6C 65 20 69 73 20 61 6C 73 6F 0D 0A 20 table is also..
01CB50: 20 20 20 20 20 66 6F 72 6D 61 74 74 65 64 20 61 formatted a
01CB60: 6E 64 20 64 69 73 70 6C 61 79 65 64 2E 0D 0A 0D nd displayed....
01CB70: 0A 20 20 20 20 53 79 73 74 65 6D 20 73 74 61 74 . System stat
01CB80: 75 73 20 64 69 73 70 6C 61 79 0D 0A 0D 0A 20 20 us display....
01CB90: 20 20 20 20 20 20 20 61 64 64 72 20 3A 35 34 46 addr :54F
01CBA0: 35 20 20 20 70 72 6F 67 20 3A 33 42 41 37 20 20 5 prog :3BA7
01CBB0: 20 73 69 7A 65 20 3A 34 38 31 35 0D 0A 20 20 20 size :4815..
01CBC0: 20 20 20 20 20 20 62 61 73 65 20 3A 38 33 42 43 base :83BC
01CBD0: 20 20 20 63 75 72 20 20 3A 38 39 41 43 20 20 20 cur :89AC
01CBE0: 74 6F 73 20 20 3A 38 41 33 33 0D 0A 20 20 20 20 tos :8A33..
01CBF0: 20 20 20 20 20 6C 6F 77 20 20 3A 41 38 42 39 20 low :A8B9
01CC00: 20 2D 20 74 68 65 20 6C 6F 77 65 73 74 20 61 64 - the lowest ad
01CC10: 64 72 65 73 73 20 6F 63 63 75 70 69 65 64 20 62 dress occupied b
01CC20: 79 20 61 6E 79 20 64 79 6E 61 6D 69 63 20 73 74 y any dynamic st
01CC30: 6F 72 61 67 65 20 62 6C 6F 63 6B 2E 0D 0A 0D 0A orage block.....
01CC40: 20 20 20 20 20 20 38 2E 20 20 63 6F 6D 70 72 20 8. compr
01CC50: 20 2D 20 20 61 20 20 63 6F 75 6E 74 20 20 6F 66 - a count of
01CC60: 20 20 74 68 65 20 20 6E 75 6D 62 65 72 20 20 6F the number o
01CC70: 66 20 20 74 69 6D 65 73 20 20 73 74 6F 72 61 67 f times storag
01CC80: 65 20 20 68 61 73 20 62 65 65 6E 0D 0A 20 20 20 e has been..
01CC90: 20 20 20 61 75 74 6F 2D 63 6F 6D 70 72 65 73 73 auto-compress
01CCA0: 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 39 2E 20 ed..... 9.
01CCB0: 70 75 72 67 65 20 2D 20 61 20 63 6F 75 6E 74 20 purge - a count
01CCC0: 6F 66 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 of the number of
01CCD0: 20 20 65 78 74 65 72 6E 61 6C 20 20 70 72 6F 63 external proc
01CCE0: 65 64 75 72 65 73 20 20 74 68 61 74 20 20 68 61 edures that ha
01CCF0: 76 65 0D 0A 20 20 20 20 20 20 62 65 65 6E 20 70 ve.. been p
01CD00: 75 72 67 65 64 20 66 72 6F 6D 20 64 79 6E 61 6D urged from dynam
01CD10: 69 63 20 73 74 6F 72 61 67 65 20 64 75 65 20 74 ic storage due t
01CD20: 6F 20 73 68 6F 72 74 2D 6F 6E 2D 73 74 6F 72 61 o short-on-stora
01CD30: 67 65 20 63 6F 6E 64 69 74 69 6F 6E 2E 0D 0A 0D ge condition....
01CD40: 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 . The
01CD50: 20 73 79 73 74 65 6D 20 20 73 74 61 74 75 73 20 system status
01CD60: 20 64 69 73 70 6C 61 79 20 20 6D 61 79 20 63 6F display may co
01CD70: 6E 74 61 69 6E 20 6F 6E 65 20 61 64 64 69 74 69 ntain one additi
01CD80: 6F 6E 61 6C 20 6C 69 6E 65 20 6F 66 0D 0A 20 20 onal line of..
01CD90: 20 20 20 20 69 6E 70 75 74 2F 6F 75 74 70 75 74 input/output
01CDA0: 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 2E 20 20 54 information. T
01CDB0: 68 65 20 6E 61 6D 65 20 6F 66 20 74 68 65 20 6D he name of the m
01CDC0: 6F 73 74 20 20 72 65 63 65 6E 74 6C 79 20 20 72 ost recently r
01CDD0: 65 66 65 72 65 6E 63 65 64 0D 0A 20 20 20 20 20 eferenced..
01CDE0: 20 66 69 6C 65 2C 20 61 20 73 74 61 74 75 73 20 file, a status
01CDF0: 62 79 74 65 20 61 6E 64 20 74 68 65 20 63 75 72 byte and the cur
01CE00: 20 20 63 6F 6D 70 72 3A 30 30 30 32 20 20 20 70 compr:0002 p
01CE10: 75 72 67 65 3A 30 30 30 30 0D 0A 0D 0A 20 20 20 urge:0000....
01CE20: 20 20 20 20 20 20 20 20 4D 6F 73 74 20 6F 66 20 Most of
01CE30: 74 68 65 73 65 20 76 61 6C 75 65 73 20 69 6E 64 these values ind
01CE40: 69 63 61 74 65 20 74 68 65 20 75 73 65 20 6F 66 icate the use of
01CE50: 20 73 74 6F 72 61 67 65 20 69 6E 20 74 68 65 20 storage in the
01CE60: 72 75 6E 2D 74 69 6D 65 0D 0A 20 20 20 20 20 20 run-time..
01CE70: 73 79 73 74 65 6D 2E 20 20 53 74 6F 72 61 67 65 system. Storage
01CE80: 20 6D 61 6E 61 67 65 6D 65 6E 74 20 69 73 20 64 management is d
01CE90: 69 73 63 75 73 73 65 64 20 66 75 6C 6C 79 20 69 iscussed fully i
01CEA0: 6E 20 73 65 63 74 69 6F 6E 20 31 31 20 6F 66 20 n section 11 of
01CEB0: 20 74 68 69 73 0D 0A 20 20 20 20 20 20 6D 61 6E this.. man
01CEC0: 75 61 6C 2E 20 20 41 20 73 69 6D 70 6C 69 66 69 ual. A simplifi
01CED0: 65 64 20 6D 61 70 20 6F 66 20 73 74 6F 72 61 67 ed map of storag
01CEE0: 65 20 69 73 20 70 72 65 73 65 6E 74 65 64 20 68 e is presented h
01CEF0: 65 72 65 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ere:....
01CF00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CF10: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
01CF20: 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 20 20 20 20 20 ---------..
01CF30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CF40: 20 20 20 49 20 20 20 20 20 20 20 20 20 43 50 2F I CP/
01CF50: 4D 20 20 20 20 20 20 20 20 20 20 49 0D 0A 20 20 M I..
01CF60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CF70: 20 20 20 20 20 20 49 2D 2D 2D 2D 2D 2D 2D 2D 2D I---------
01CF80: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 0D --------------I.
01CF90: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
01CFA0: 20 20 20 20 20 20 20 20 20 49 20 20 20 20 44 59 I DY
01CFB0: 4E 41 4D 49 43 20 53 54 4F 52 41 47 45 20 20 20 NAMIC STORAGE
01CFC0: 20 49 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 I..
01CFD0: 20 20 20 20 20 20 20 20 20 20 20 20 49 20 20 20 I
01CFE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01CFF0: 20 20 20 20 49 0D 0A 20 20 20 20 20 20 20 20 20 I..
01D000: 72 65 6E 74 20 64 65 66 61 75 6C 74 20 64 69 73 rent default dis
01D010: 6B 20 77 69 6C 6C 20 62 65 20 64 69 73 70 6C 61 k will be displa
01D020: 79 65 64 20 69 66 0D 0A 20 20 20 20 20 20 66 69 yed if.. fi
01D030: 6C 65 73 20 68 61 76 65 20 62 65 65 6E 20 75 73 les have been us
01D040: 65 64 20 62 79 20 74 68 65 20 70 72 6F 67 72 61 ed by the progra
01D050: 6D 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 m.....
01D060: 20 20 20 20 20 20 20 20 40 3A 53 41 4D 50 4C 45 @:SAMPLE
01D070: 20 20 50 41 53 20 20 20 20 38 38 20 20 20 41 0D PAS 88 A.
01D080: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 49 66 ... If
01D090: 20 20 74 68 65 20 20 66 69 6C 65 20 77 61 73 20 the file was
01D0A0: 6F 70 65 6E 65 64 20 77 69 74 68 6F 75 74 20 73 opened without s
01D0B0: 70 65 63 69 66 79 69 6E 67 20 61 20 64 69 73 6B pecifying a disk
01D0C0: 20 6C 65 74 74 65 72 20 74 68 65 6E 20 40 0D 0A letter then @..
01D0D0: 20 20 20 20 20 20 69 73 20 73 68 6F 77 6E 2C 20 is shown,
01D0E0: 6F 74 68 65 72 77 69 73 65 20 20 74 68 65 20 20 otherwise the
01D0F0: 64 69 73 6B 20 20 6C 65 74 74 65 72 2E 20 20 20 disk letter.
01D100: 54 68 65 20 20 73 74 61 74 75 73 20 20 62 79 74 The status byt
01D110: 65 20 20 63 6F 6E 74 61 69 6E 73 0D 0A 20 20 20 e contains..
01D120: 20 20 20 73 65 76 65 72 61 6C 20 66 6C 61 67 20 several flag
01D130: 62 69 74 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 bits:....
01D140: 20 20 20 20 20 20 20 20 20 20 20 62 69 74 20 20 bit
01D150: 20 6D 65 61 6E 69 6E 67 0D 0A 20 20 20 20 20 20 meaning..
01D160: 20 20 20 20 20 20 20 20 20 20 20 20 2D 2D 2D 20 ---
01D170: 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 20 20 20 ---------..
01D180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 38 8
01D190: 30 20 20 20 20 66 69 6C 65 20 69 73 20 6F 70 65 0 file is ope
01D1A0: 6E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 n..
01D1B0: 20 20 20 20 20 34 30 20 20 20 20 72 61 6E 64 6F 40 rando
01D1C0: 6D 20 6D 6F 64 65 20 2D 20 6E 6F 74 20 73 65 71 m mode - not seq
01D1D0: 75 65 6E 74 69 61 6C 0D 0A 20 20 20 20 20 20 20 uential..
01D1E0: 20 20 20 20 20 20 20 20 20 20 20 32 30 20 20 20 20
01D1F0: 20 74 65 78 74 20 6D 6F 64 65 20 2D 20 6E 6F 74 text mode - not
01D200: 20 20 20 20 20 20 20 6C 6F 77 2D 2D 2D 3E 20 49 low---> I
01D210: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
01D220: 2D 2D 2D 2D 2D 2D 2D 49 0D 0A 20 20 20 20 20 20 -------I..
01D230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D240: 20 20 49 20 20 20 20 20 20 20 20 20 20 20 20 20 I
01D250: 20 20 20 20 20 20 20 20 20 20 49 0D 0A 20 20 20 I..
01D260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D270: 20 20 20 20 20 49 20 20 20 20 20 75 6E 75 73 65 I unuse
01D280: 64 20 20 20 20 20 20 20 20 20 20 20 20 49 0D 0A d I..
01D290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D2A0: 20 20 20 20 20 20 20 20 49 20 20 20 20 20 20 20 I
01D2B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D2C0: 49 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 I..
01D2D0: 20 20 20 74 6F 73 2D 2D 2D 3E 20 49 2D 2D 2D 2D tos---> I----
01D2E0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
01D2F0: 2D 2D 2D 49 0D 0A 20 20 20 20 20 20 20 20 20 20 ---I..
01D300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 20 I
01D310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D320: 20 20 20 20 20 20 49 0D 0A 20 20 20 20 20 20 20 I..
01D330: 20 20 20 20 20 20 20 20 20 63 75 72 2D 2D 2D 3E cur--->
01D340: 20 49 20 20 20 20 20 20 44 41 54 41 20 53 54 41 I DATA STA
01D350: 43 4B 20 20 20 20 20 20 20 49 0D 0A 20 20 20 20 CK I..
01D360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D370: 20 20 20 20 49 20 20 20 20 20 20 20 20 20 20 20 I
01D380: 20 20 20 20 20 20 20 20 20 20 20 20 49 0D 0A 20 I..
01D390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 b
01D3A0: 61 73 65 2D 2D 3E 20 49 2D 2D 2D 2D 2D 2D 2D 2D ase--> I--------
01D3B0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 ---------------I
01D3C0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
01D3D0: 20 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 I
01D3E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D3F0: 20 20 49 0D 0A 20 20 20 20 20 20 20 20 20 20 20 I..
01D400: 20 62 69 6E 61 72 79 0D 0A 20 20 20 20 20 20 20 binary..
01D410: 20 20 20 20 20 20 20 20 20 20 20 31 30 20 20 20 10
01D420: 20 45 4F 4C 4E 20 66 6C 61 67 20 73 65 74 0D 0A EOLN flag set..
01D430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D440: 20 20 30 38 20 20 20 20 69 6E 70 75 74 20 2D 20 08 input -
01D450: 6E 6F 74 20 6F 75 74 70 75 74 20 6F 72 20 72 61 not output or ra
01D460: 6E 64 6F 6D 0D 0A 20 20 20 20 20 20 20 20 20 20 ndom..
01D470: 20 20 20 20 20 20 20 20 30 34 20 20 20 20 45 4F 04 EO
01D480: 46 20 66 6C 61 67 20 73 65 74 0D 0A 0D 0A 20 20 F flag set....
01D490: 20 20 20 20 46 6F 72 6D 61 74 74 65 64 20 65 78 Formatted ex
01D4A0: 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 ternal procedure
01D4B0: 20 74 61 62 6C 65 0D 0A 0D 0A 20 20 20 20 20 20 table....
01D4C0: 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72 6F expro
01D4D0: 63 20 6E 61 6D 65 20 20 61 64 64 72 20 20 20 75 c name addr u
01D4E0: 73 65 20 63 6E 74 20 20 20 74 69 6D 65 20 20 73 se cnt time s
01D4F0: 74 61 74 0D 0A 20 20 20 20 20 20 20 20 20 20 20 tat..
01D500: 20 20 20 20 20 20 20 41 43 43 54 50 41 59 31 20 ACCTPAY1
01D510: 20 20 20 43 32 41 45 20 20 20 20 30 30 30 30 20 C2AE 0000
01D520: 20 20 20 20 30 30 30 34 20 20 20 33 30 0D 0A 20 0004 30..
01D530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D540: 20 41 43 43 54 50 41 59 32 20 20 20 20 33 45 32 ACCTPAY2 3E2
01D550: 32 20 20 20 20 30 30 30 30 20 20 20 20 20 30 31 2 0000 01
01D560: 36 35 20 20 20 37 34 0D 0A 20 20 20 20 20 20 20 65 74..
01D570: 20 20 20 20 20 20 20 20 20 20 20 47 45 4E 4C 45 GENLE
01D580: 44 47 31 20 20 20 20 30 30 30 31 20 20 20 20 30 DG1 0001 0
01D590: 30 30 30 20 20 20 20 20 30 30 30 30 20 20 20 30 000 0000 0
01D5A0: 30 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 0..
01D5B0: 20 20 20 20 20 41 43 43 54 52 45 43 31 20 20 20 ACCTREC1
01D5C0: 20 33 46 35 35 20 20 20 20 30 30 30 31 20 20 20 3F55 0001
01D5D0: 20 20 30 31 34 45 20 20 20 46 34 0D 0A 20 20 20 014E F4..
01D5E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 A
01D5F0: 43 43 54 52 45 43 32 20 20 20 20 34 34 30 43 20 CCTREC2 440C
01D600: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 20 20 I
01D610: 20 20 20 50 41 53 43 41 4C 20 43 4F 44 45 20 20 PASCAL CODE
01D620: 20 20 20 20 20 49 20 20 3C 2D 2D 61 64 64 72 20 I <--addr
01D630: 28 6F 66 20 65 72 72 6F 72 29 0D 0A 20 20 20 20 (of error)..
01D640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D650: 20 20 20 20 49 20 20 20 20 20 20 20 20 20 20 20 I
01D660: 20 20 20 20 20 20 20 20 20 20 20 20 49 0D 0A 20 I..
01D670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 p
01D680: 72 6F 67 2D 2D 3E 20 49 2D 2D 2D 2D 2D 2D 2D 2D rog--> I--------
01D690: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 ---------------I
01D6A0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
01D6B0: 20 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 I
01D6C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D6D0: 20 20 49 0D 0A 20 20 20 20 20 20 20 20 20 20 20 I..
01D6E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 20 20 I
01D6F0: 20 20 20 45 58 45 43 20 72 75 6E 2D 74 69 6D 65 EXEC run-time
01D700: 20 20 20 20 20 49 0D 0A 20 20 20 20 20 20 20 20 I..
01D710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D720: 49 20 20 20 20 20 73 79 73 74 65 6D 20 20 20 20 I system
01D730: 20 20 20 20 20 20 20 20 49 0D 0A 20 20 20 20 20 I..
01D740: 20 20 20 20 20 20 20 20 20 20 20 31 30 30 68 2D 100h-
01D750: 2D 3E 20 49 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D -> I------------
01D760: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 0D 0A 20 20 -----------I..
01D770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01D780: 20 20 20 20 20 20 49 20 20 20 20 20 72 65 73 65 I rese
01D790: 72 76 65 64 20 61 72 65 61 20 20 20 20 20 49 0D rved area I.
01D7A0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
01D7B0: 20 20 20 20 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D -------
01D7C0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
01D7D0: 2D 2D 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 31 2E --...... 1.
01D7E0: 20 61 64 64 72 20 2D 20 74 68 65 20 61 64 64 72 addr - the addr
01D7F0: 65 73 73 20 61 74 20 77 68 69 63 68 20 74 68 65 ess at which the
01D800: 20 20 20 30 30 30 31 20 20 20 20 20 30 31 35 41 0001 015A
01D810: 20 20 20 46 34 0D 0A 20 20 20 20 20 20 20 20 20 F4..
01D820: 20 20 20 20 20 20 20 20 20 53 4F 52 54 20 20 20 SORT
01D830: 20 20 20 20 20 30 30 30 31 20 20 20 20 30 30 30 0001 000
01D840: 30 20 20 20 20 20 30 30 30 30 20 20 20 30 30 0D 0 0000 00.
01D850: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
01D860: 20 20 2B 49 4E 56 45 4E 54 52 59 20 20 20 20 35 +INVENTRY 5
01D870: 30 33 41 20 20 20 20 30 30 30 31 20 20 20 20 20 03A 0001
01D880: 30 32 30 44 20 20 20 46 34 0D 0A 20 20 20 20 20 020D F4..
01D890: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 48 45 CHE
01D8A0: 43 4B 53 20 20 20 20 20 20 35 30 35 32 20 20 20 CKS 5052
01D8B0: 20 30 30 30 30 20 20 20 20 20 30 31 30 33 20 20 0000 0103
01D8C0: 20 33 30 0D 0A 0D 0A 20 20 20 20 20 20 31 2E 20 30.... 1.
01D8D0: 20 65 78 70 72 6F 63 20 20 6E 61 6D 65 20 20 2D exproc name -
01D8E0: 20 74 68 65 20 6E 61 6D 65 20 6F 66 20 74 68 65 the name of the
01D8F0: 20 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 external proced
01D900: 75 72 65 20 6F 72 20 66 75 6E 63 74 69 6F 6E 2E ure or function.
01D910: 20 41 0D 0A 20 20 20 20 20 20 70 6C 75 73 20 73 A.. plus s
01D920: 69 67 6E 20 69 6E 64 69 63 61 74 65 73 20 74 68 ign indicates th
01D930: 65 20 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 e external proce
01D940: 64 75 72 65 20 77 68 69 63 68 20 77 61 73 20 20 dure which was
01D950: 6D 6F 73 74 20 20 63 75 72 72 65 6E 74 6C 79 0D most currently.
01D960: 0A 20 20 20 20 20 20 65 6E 74 65 72 65 64 20 20 . entered
01D970: 6F 72 20 20 65 78 69 74 65 64 2E 20 20 54 68 69 or exited. Thi
01D980: 73 20 20 69 73 20 20 6E 6F 74 20 20 6E 65 63 65 s is not nece
01D990: 73 73 61 72 69 6C 79 20 74 68 65 20 63 75 72 72 ssarily the curr
01D9A0: 65 6E 74 6C 79 20 61 63 74 69 76 65 0D 0A 20 20 ently active..
01D9B0: 20 20 20 20 70 72 6F 63 65 64 75 72 65 2E 0D 0A procedure...
01D9C0: 0D 0A 20 20 20 20 20 20 32 2E 20 61 64 64 72 20 .. 2. addr
01D9D0: 2D 20 74 68 65 20 61 64 64 72 65 73 73 20 69 6E - the address in
01D9E0: 20 20 6D 61 69 6E 20 20 73 74 6F 72 61 67 65 20 main storage
01D9F0: 20 6F 66 20 20 74 68 65 20 20 65 78 74 65 72 6E of the extern
01DA00: 20 65 72 72 6F 72 20 6F 63 63 75 72 72 65 64 2E error occurred.
01DA10: 20 54 68 69 73 20 6D 61 79 20 62 65 20 69 6E 20 This may be in
01DA20: 74 68 65 0D 0A 20 20 20 20 20 20 50 61 73 63 61 the.. Pasca
01DA30: 6C 20 20 63 6F 64 65 20 20 61 72 65 61 20 6F 72 l code area or
01DA40: 20 69 6E 20 74 68 65 20 64 79 6E 61 6D 69 63 20 in the dynamic
01DA50: 73 74 6F 72 61 67 65 20 61 72 65 61 20 69 66 20 storage area if
01DA60: 74 68 65 20 65 72 72 6F 72 20 77 61 73 20 69 6E the error was in
01DA70: 0D 0A 20 20 20 20 20 20 61 6E 20 65 78 74 65 72 .. an exter
01DA80: 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 2E 0D 0A nal procedure...
01DA90: 0D 0A 20 20 20 20 20 20 32 2E 20 70 72 6F 67 20 .. 2. prog
01DAA0: 2D 20 74 68 65 20 73 74 61 72 74 69 6E 67 20 61 - the starting a
01DAB0: 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 6D 61 ddress of the ma
01DAC0: 69 6E 20 50 61 73 63 61 6C 20 70 72 6F 67 72 61 in Pascal progra
01DAD0: 6D 2E 0D 0A 0D 0A 20 20 20 20 20 20 33 2E 20 73 m..... 3. s
01DAE0: 69 7A 65 20 2D 20 74 68 65 20 73 69 7A 65 20 6F ize - the size o
01DAF0: 66 20 74 68 65 20 6D 61 69 6E 20 70 72 6F 67 72 f the main progr
01DB00: 61 6D 20 6D 6F 64 75 6C 65 2E 0D 0A 0D 0A 20 20 am module.....
01DB10: 20 20 20 20 34 2E 20 62 61 73 65 20 2D 20 74 68 4. base - th
01DB20: 65 20 62 61 73 65 20 6F 72 20 62 6F 74 74 6F 6D e base or bottom
01DB30: 20 6F 66 20 74 68 65 20 64 61 74 61 20 73 74 61 of the data sta
01DB40: 63 6B 2E 0D 0A 0D 0A 20 20 20 20 20 20 35 2E 20 ck..... 5.
01DB50: 63 75 72 20 20 2D 20 74 68 65 20 61 64 64 72 65 cur - the addre
01DB60: 73 73 20 6F 66 20 74 68 65 20 63 75 72 72 65 6E ss of the curren
01DB70: 74 20 70 72 6F 63 65 64 75 72 65 20 61 63 74 69 t procedure acti
01DB80: 76 61 74 69 6F 6E 20 62 6C 6F 63 6B 2E 0D 0A 0D vation block....
01DB90: 0A 20 20 20 20 20 20 36 2E 20 74 6F 73 20 20 2D . 6. tos -
01DBA0: 20 74 6F 70 20 6F 66 20 73 74 61 63 6B 2E 20 54 top of stack. T
01DBB0: 68 69 73 20 69 73 20 74 68 65 20 61 64 64 72 65 his is the addre
01DBC0: 73 73 20 6A 75 73 74 20 70 61 73 74 20 74 68 65 ss just past the
01DBD0: 20 65 6E 64 20 6F 66 20 20 74 68 65 0D 0A 20 20 end of the..
01DBE0: 20 20 20 20 64 61 74 61 20 73 74 61 63 6B 2E 0D data stack..
01DBF0: 0A 0D 0A 20 20 20 20 20 20 37 2E 20 6C 6F 77 20 ... 7. low
01DC00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01DC10: 19 00 00 00 02 09 2A E5 19 00 C1 02 00 00 00 02 ......*.........
01DC20: 19 00 C6 02 00 00 00 02 19 00 C2 02 00 00 00 02 ................
01DC30: 19 00 C7 02 00 00 00 02 19 00 C3 02 00 00 00 02 ................
01DC40: 19 00 C8 02 00 00 00 02 19 00 C4 02 00 00 00 02 ................
01DC50: 19 00 C9 02 00 00 00 02 19 00 C5 02 00 00 00 02 ................
01DC60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DC70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DC80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DC90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DCF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01DD00: 61 6C 20 20 70 72 6F 63 65 64 75 72 65 0D 0A 20 al procedure..
01DD10: 20 20 20 20 20 6D 6F 64 75 6C 65 2E 20 20 49 66 module. If
01DD20: 20 20 74 68 69 73 20 20 76 61 6C 75 65 20 20 69 this value i
01DD30: 73 20 30 30 30 31 20 74 68 65 6E 20 74 68 65 20 s 0001 then the
01DD40: 6D 6F 64 75 6C 65 20 69 73 20 6E 6F 74 20 63 75 module is not cu
01DD50: 72 72 65 6E 74 6C 79 20 69 6E 0D 0A 20 20 20 20 rrently in..
01DD60: 20 20 6D 61 69 6E 20 73 74 6F 72 61 67 65 2E 0D main storage..
01DD70: 0A 0D 0A 20 20 20 20 20 20 33 2E 20 75 73 65 20 ... 3. use
01DD80: 63 6E 74 20 2D 20 61 20 20 63 6F 75 6E 74 20 20 cnt - a count
01DD90: 6F 66 20 20 74 68 65 20 20 6E 75 6D 62 65 72 20 of the number
01DDA0: 20 6F 66 20 20 74 69 6D 65 73 20 20 74 68 65 20 of times the
01DDB0: 20 70 72 6F 63 65 64 75 72 65 20 20 69 73 0D 0A procedure is..
01DDC0: 20 20 20 20 20 20 43 55 52 52 45 4E 54 4C 59 20 CURRENTLY
01DDD0: 20 61 63 74 69 76 65 2E 20 20 20 55 73 75 61 6C active. Usual
01DDE0: 6C 79 20 20 74 68 69 73 20 20 77 69 6C 6C 20 62 ly this will b
01DDF0: 65 20 30 30 30 30 20 28 6E 6F 74 20 61 63 74 69 e 0000 (not acti
01DE00: 76 65 29 20 6F 72 20 30 30 30 31 0D 0A 20 20 20 ve) or 0001..
01DE10: 20 20 20 28 61 63 74 69 76 65 29 2E 20 20 49 74 (active). It
01DE20: 20 77 69 6C 6C 20 62 65 20 67 72 65 61 74 65 72 will be greater
01DE30: 20 74 68 61 74 20 30 30 30 31 20 20 6F 6E 6C 79 that 0001 only
01DE40: 20 20 69 66 20 20 74 68 65 20 20 70 72 6F 63 65 if the proce
01DE50: 64 75 72 65 20 20 69 73 0D 0A 20 20 20 20 20 20 dure is..
01DE60: 63 61 6C 6C 65 64 20 72 65 63 75 72 73 69 76 65 called recursive
01DE70: 6C 79 2E 0D 0A 0D 0A 20 20 20 20 20 20 34 2E 20 ly..... 4.
01DE80: 20 20 74 69 6D 65 20 20 20 2D 20 20 20 69 6E 20 time - in
01DE90: 20 20 6F 72 64 65 72 20 20 20 74 6F 20 20 20 64 order to d
01DEA0: 65 74 65 72 6D 69 6E 65 20 20 20 77 68 69 63 68 etermine which
01DEB0: 20 20 20 70 72 6F 63 65 64 75 72 65 20 20 20 77 procedure w
01DEC0: 61 73 0D 0A 20 20 20 20 20 20 6C 65 61 73 74 2D as.. least-
01DED0: 72 65 63 65 6E 74 6C 79 2D 75 73 65 64 2C 20 74 recently-used, t
01DEE0: 68 65 20 72 75 6E 2D 74 69 6D 65 20 20 73 79 73 he run-time sys
01DEF0: 74 65 6D 20 20 6D 61 69 6E 74 61 69 6E 73 20 20 tem maintains
01DF00: 72 20 20 6F 63 63 75 72 72 65 64 20 20 69 6E 20 r occurred in
01DF10: 20 6D 61 69 6E 20 20 70 72 6F 67 72 61 6D 20 20 main program
01DF20: 42 45 47 49 4E 2D 45 4E 44 20 62 6C 6F 63 6B 2C BEGIN-END block,
01DF30: 20 6E 6F 74 20 69 6E 0D 0A 20 20 20 20 20 20 70 not in.. p
01DF40: 72 6F 63 65 64 75 72 65 2E 0D 0A 0D 0A 20 20 20 rocedure.....
01DF50: 20 20 20 25 50 72 6F 63 20 2D 20 65 72 72 6F 72 %Proc - error
01DF60: 20 6F 63 63 75 72 72 65 64 20 69 6E 20 70 72 6F occurred in pro
01DF70: 63 65 64 75 72 65 2C 20 6E 6F 74 20 69 6E 20 20 cedure, not in
01DF80: 6D 61 69 6E 20 20 70 72 6F 67 72 61 6D 20 20 42 main program B
01DF90: 45 47 49 4E 2D 45 4E 44 0D 0A 20 20 20 20 20 20 EGIN-END..
01DFA0: 62 6C 6F 63 6B 2E 0D 0A 0D 0A 20 20 20 20 20 20 block.....
01DFB0: 25 54 72 61 63 65 20 2D 20 6C 69 6E 65 20 6E 75 %Trace - line nu
01DFC0: 6D 62 65 72 20 74 72 61 63 65 20 69 6E 64 69 63 mber trace indic
01DFD0: 61 74 6F 72 2E 0D 0A 0D 0A 20 20 20 20 20 20 25 ator..... %
01DFE0: 57 61 72 6E 69 6E 67 20 2D 20 6E 6F 6E 2D 66 61 Warning - non-fa
01DFF0: 74 61 6C 20 65 72 72 6F 72 20 63 6F 6E 64 69 74 tal error condit
01E000: 69 6F 6E 2E 20 20 50 72 6F 63 65 73 73 69 6E 67 ion. Processing
01E010: 20 63 6F 6E 74 69 6E 75 65 73 2E 0D 0A 0D 0A 20 continues.....
01E020: 20 20 20 20 20 31 33 2E 35 20 20 43 6F 6D 6D 6F 13.5 Commo
01E030: 6E 20 50 72 6F 62 6C 65 6D 73 0D 0A 0D 0A 20 20 n Problems....
01E040: 20 20 20 20 41 2E 20 20 47 65 6E 65 72 61 6C 20 A. General
01E050: 64 69 66 66 69 63 75 6C 74 69 65 73 0D 0A 0D 0A difficulties....
01E060: 20 20 20 20 31 2E 20 20 54 68 65 20 6D 61 73 74 1. The mast
01E070: 65 72 20 64 69 73 6B 73 20 61 63 63 69 64 65 6E er disks acciden
01E080: 74 6C 79 20 67 6F 74 20 65 72 61 73 65 64 20 62 tly got erased b
01E090: 79 20 61 20 70 72 6F 67 72 61 6D 2E 2E 2E 0D 0A y a program.....
01E0A0: 20 20 20 20 20 20 4D 41 4B 45 20 20 42 41 43 4B MAKE BACK
01E0B0: 55 50 20 20 43 4F 50 49 45 53 20 20 4F 46 20 20 UP COPIES OF
01E0C0: 4A 52 54 20 20 50 41 53 43 41 4C 20 20 77 68 65 JRT PASCAL whe
01E0D0: 6E 20 79 6F 75 20 66 69 72 73 74 20 67 65 74 20 n you first get
01E0E0: 69 74 2E 0D 0A 0D 0A 20 20 20 20 32 2E 20 20 54 it..... 2. T
01E0F0: 68 65 20 64 69 73 6B 73 20 77 69 6C 6C 20 6E 6F he disks will no
01E100: 61 20 20 70 73 65 75 64 6F 2D 74 69 6D 65 72 0D a pseudo-timer.
01E110: 0A 20 20 20 20 20 20 77 68 69 63 68 20 20 69 73 . which is
01E120: 20 20 69 6E 63 72 65 6D 65 6E 74 65 64 20 6F 6E incremented on
01E130: 63 65 20 6F 6E 20 65 61 63 68 20 65 6E 74 72 79 ce on each entry
01E140: 20 74 6F 20 6F 72 20 65 78 69 74 20 66 72 6F 6D to or exit from
01E150: 20 61 6E 20 65 78 74 65 72 6E 61 6C 0D 0A 20 20 an external..
01E160: 20 20 20 20 70 72 6F 63 65 64 75 72 65 2E 20 54 procedure. T
01E170: 68 65 20 66 69 65 6C 64 20 63 6F 6E 74 61 69 6E he field contain
01E180: 73 20 74 68 65 20 76 61 6C 75 65 20 6F 66 20 74 s the value of t
01E190: 68 65 20 70 73 65 75 64 6F 2D 74 69 6D 65 72 20 he pseudo-timer
01E1A0: 74 68 65 20 20 6C 61 73 74 0D 0A 20 20 20 20 20 the last..
01E1B0: 20 74 69 6D 65 20 74 68 65 20 70 72 6F 63 65 64 time the proced
01E1C0: 75 72 65 20 77 61 73 20 65 6E 74 65 72 65 64 20 ure was entered
01E1D0: 6F 72 20 65 78 69 74 65 64 2E 0D 0A 0D 0A 20 20 or exited.....
01E1E0: 20 20 20 20 35 2E 20 73 74 61 74 20 2D 20 61 20 5. stat - a
01E1F0: 73 74 61 74 75 73 20 69 6E 64 69 63 61 74 6F 72 status indicator
01E200: 20 77 69 74 68 20 73 65 76 65 72 61 6C 20 66 6C with several fl
01E210: 61 67 20 62 69 74 73 3A 0D 0A 0D 0A 20 20 20 20 ag bits:....
01E220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 69 bi
01E230: 74 20 20 20 6D 65 61 6E 69 6E 67 0D 0A 20 20 20 t meaning..
01E240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D -
01E250: 2D 2D 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 20 -- --------..
01E260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01E270: 20 38 30 20 20 20 20 70 72 6F 63 65 64 75 72 65 80 procedure
01E280: 20 69 73 20 63 75 72 72 65 6E 74 6C 79 20 61 63 is currently ac
01E290: 74 69 76 65 0D 0A 20 20 20 20 20 20 20 20 20 20 tive..
01E2A0: 20 20 20 20 20 20 20 20 34 30 20 20 20 20 70 72 40 pr
01E2B0: 6F 63 65 64 75 72 65 20 77 61 73 20 6C 69 6E 6B ocedure was link
01E2C0: 65 64 20 77 69 74 68 20 6D 61 69 6E 20 70 72 6F ed with main pro
01E2D0: 67 72 61 6D 0D 0A 20 20 20 20 20 20 20 20 20 20 gram..
01E2E0: 20 20 20 20 20 20 20 20 32 30 20 20 20 20 70 72 20 pr
01E2F0: 6F 63 65 64 75 72 65 20 69 73 20 63 75 72 72 65 ocedure is curre
01E300: 74 20 62 6F 6F 74 20 75 70 20 77 68 65 6E 20 6F t boot up when o
01E310: 6E 20 69 73 20 20 70 75 74 20 20 69 6E 20 20 64 n is put in d
01E320: 72 69 76 65 20 20 41 3A 20 20 61 6E 64 20 20 74 rive A: and t
01E330: 68 65 0D 0A 20 20 20 20 20 20 73 79 73 74 65 6D he.. system
01E340: 20 69 73 20 72 65 73 65 74 2E 2E 2E 0D 0A 20 20 is reset.....
01E350: 20 20 20 20 59 6F 75 20 6E 65 65 64 20 79 6F 75 You need you
01E360: 72 20 6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 r operating syst
01E370: 65 6D 2E 0D 0A 0D 0A 20 20 20 20 33 2E 20 20 57 em..... 3. W
01E380: 69 74 68 20 43 50 2F 4D 20 31 2E 34 2C 20 43 44 ith CP/M 1.4, CD
01E390: 4F 53 20 6F 72 20 74 68 65 20 65 71 75 69 76 61 OS or the equiva
01E3A0: 6C 65 6E 74 73 2C 20 43 55 53 54 4F 4D 49 5A 2C lents, CUSTOMIZ,
01E3B0: 20 4C 49 4E 4B 45 52 20 61 6E 64 20 72 61 6E 64 LINKER and rand
01E3C0: 6F 6D 0D 0A 20 20 20 20 20 20 49 2F 4F 20 69 6E om.. I/O in
01E3D0: 20 67 65 6E 65 72 61 6C 20 77 69 6C 6C 20 6E 6F general will no
01E3E0: 74 20 77 6F 72 6B 2E 2E 2E 2E 0D 0A 20 20 20 20 t work......
01E3F0: 20 20 53 6F 72 72 79 20 61 62 6F 75 74 20 74 68 Sorry about th
01E400: 61 74 2C 20 62 75 74 20 74 6F 20 67 65 74 20 72 at, but to get r
01E410: 61 6E 64 6F 6D 20 49 2F 4F 20 6F 6E 20 38 20 6D andom I/O on 8 m
01E420: 65 67 61 62 79 74 65 20 66 69 6C 65 73 2C 20 43 egabyte files, C
01E430: 50 2F 4D 20 32 2E 32 0D 0A 20 20 20 20 20 20 77 P/M 2.2.. w
01E440: 6F 75 6C 64 20 20 62 65 20 20 72 65 71 75 69 72 ould be requir
01E450: 65 64 2E 20 20 20 4C 49 4E 4B 45 52 20 20 69 73 ed. LINKER is
01E460: 20 20 6E 65 76 65 72 20 72 65 71 75 69 72 65 64 never required
01E470: 20 66 6F 72 20 4A 52 54 20 50 61 73 63 61 6C 2E for JRT Pascal.
01E480: 20 54 68 65 0D 0A 20 20 20 20 20 20 66 75 6E 63 The.. func
01E490: 74 69 6F 6E 20 6F 66 20 43 55 53 54 4F 4D 49 5A tion of CUSTOMIZ
01E4A0: 20 63 61 6E 20 62 65 20 70 65 72 66 6F 72 6D 65 can be performe
01E4B0: 64 20 62 79 20 74 77 6F 20 73 69 6D 70 6C 65 20 d by two simple
01E4C0: 70 61 74 63 68 65 73 20 20 69 6E 20 20 44 44 54 patches in DDT
01E4D0: 2E 0D 0A 20 20 20 20 20 20 54 68 69 73 20 20 20 ... This
01E4E0: 69 6E 76 6F 6C 76 65 73 20 20 70 61 74 63 68 69 involves patchi
01E4F0: 6E 67 20 20 74 68 65 20 20 64 69 73 6B 20 20 73 ng the disk s
01E500: 6E 74 6C 79 20 69 6E 20 73 74 6F 72 61 67 65 0D ntly in storage.
01E510: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
01E520: 20 20 20 31 30 20 20 20 20 70 72 6F 63 65 64 75 10 procedu
01E530: 72 65 20 66 69 6C 65 20 63 6F 6E 74 72 6F 6C 20 re file control
01E540: 62 6C 6F 63 6B 20 69 73 20 6F 70 65 6E 0D 0A 20 block is open..
01E550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01E560: 20 30 34 20 20 20 20 70 72 6F 63 65 64 75 72 65 04 procedure
01E570: 20 61 64 64 72 65 73 73 20 69 73 20 72 65 61 6C address is real
01E580: 2C 20 6E 6F 74 20 76 69 72 74 75 61 6C 0D 0A 0D , not virtual...
01E590: 0A 20 20 20 20 20 20 31 33 2E 34 20 20 52 75 6E . 13.4 Run
01E5A0: 2D 74 69 6D 65 20 6D 65 73 73 61 67 65 73 0D 0A -time messages..
01E5B0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 65 .. The
01E5C0: 20 20 72 75 6E 2D 74 69 6D 65 20 20 73 79 73 74 run-time syst
01E5D0: 65 6D 20 20 70 72 6F 76 69 64 65 73 20 20 73 65 em provides se
01E5E0: 76 65 72 61 6C 20 20 6D 65 73 73 61 67 65 73 20 veral messages
01E5F0: 74 6F 20 61 69 64 20 69 6E 20 74 68 65 0D 0A 20 to aid in the..
01E600: 20 20 20 20 20 63 6F 72 72 65 63 74 69 6F 6E 20 correction
01E610: 6F 66 20 65 72 72 6F 72 20 6F 72 20 65 78 63 65 of error or exce
01E620: 70 74 69 6F 6E 61 6C 20 63 6F 6E 64 69 74 69 6F ptional conditio
01E630: 6E 73 2E 20 20 49 6E 20 61 64 64 69 74 69 6F 6E ns. In addition
01E640: 20 74 6F 20 20 74 68 65 73 65 0D 0A 20 20 20 20 to these..
01E650: 20 20 67 65 6E 65 72 61 6C 20 20 6D 65 73 73 61 general messa
01E660: 67 65 73 2C 20 61 62 6F 75 74 20 37 35 20 6D 6F ges, about 75 mo
01E670: 72 65 20 73 70 65 63 69 66 69 63 20 6D 65 73 73 re specific mess
01E680: 61 67 65 73 20 6F 66 20 31 20 74 6F 20 34 20 6C ages of 1 to 4 l
01E690: 69 6E 65 73 20 74 6F 0D 0A 20 20 20 20 20 20 74 ines to.. t
01E6A0: 65 78 74 20 61 72 65 20 70 72 6F 76 69 64 65 64 ext are provided
01E6B0: 20 74 6F 20 64 65 73 63 72 69 62 65 20 70 61 72 to describe par
01E6C0: 74 69 63 75 6C 61 72 20 65 72 72 6F 72 20 63 6F ticular error co
01E6D0: 6E 64 69 74 69 6F 6E 73 2E 0D 0A 0D 0A 20 20 20 nditions.....
01E6E0: 20 20 20 20 20 20 20 20 54 68 65 20 20 67 65 6E The gen
01E6F0: 65 72 61 6C 20 20 72 75 6E 2D 74 69 6D 65 20 20 eral run-time
01E700: 65 61 72 63 68 20 20 6C 69 73 74 20 20 69 6E 20 earch list in
01E710: 20 45 58 45 43 2E 43 4F 4D 20 20 61 6E 64 0D 0A EXEC.COM and..
01E720: 20 20 20 20 20 20 4A 52 54 50 41 53 33 2E 43 4F JRTPAS3.CO
01E730: 4D 2E 20 20 42 6F 74 68 20 6F 66 20 74 68 65 73 M. Both of thes
01E740: 65 20 6C 69 73 74 20 61 72 65 20 61 74 20 30 31 e list are at 01
01E750: 35 35 68 20 61 6E 64 20 63 6F 6E 73 69 73 74 20 55h and consist
01E760: 20 6F 66 20 20 75 70 20 20 74 6F 0D 0A 20 20 20 of up to..
01E770: 20 20 20 66 6F 75 72 20 75 70 70 65 72 20 63 61 four upper ca
01E780: 73 65 20 6C 65 74 74 65 72 73 20 66 6F 6C 6C 6F se letters follo
01E790: 77 65 64 20 62 79 20 61 20 5A 2E 0D 0A 0D 0A 20 wed by a Z.....
01E7A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 3E 44 A>D
01E7B0: 44 54 20 45 58 45 43 2E 43 4F 4D 0D 0A 20 20 20 DT EXEC.COM..
01E7C0: 20 20 20 20 20 20 20 20 20 20 20 2D 53 31 35 35 -S155
01E7D0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
01E7E0: 30 31 35 35 20 34 31 20 34 31 0D 0A 20 20 20 20 0155 41 41..
01E7F0: 20 20 20 20 20 20 20 20 20 20 30 31 35 36 20 34 0156 4
01E800: 32 20 34 32 0D 0A 20 20 20 20 20 20 20 20 20 20 2 42..
01E810: 20 20 20 20 30 31 35 37 20 34 41 20 35 41 20 20 0157 4A 5A
01E820: 20 20 20 20 28 61 6E 20 75 70 70 65 72 20 63 61 (an upper ca
01E830: 73 65 20 5A 29 0D 0A 20 20 20 20 20 20 20 20 20 se Z)..
01E840: 20 20 20 20 20 30 31 35 38 20 30 30 20 2E 20 0D 0158 00 . .
01E850: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D . -
01E860: 47 30 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 G0..
01E870: 20 20 41 3E 53 41 56 45 20 39 33 20 45 58 45 43 A>SAVE 93 EXEC
01E880: 2E 43 4F 4D 0D 0A 0D 0A 20 20 20 20 20 20 20 20 .COM....
01E890: 46 6F 72 20 4A 52 54 50 41 53 33 2E 43 4F 4D 2C For JRTPAS3.COM,
01E8A0: 20 74 68 65 20 53 41 56 45 20 63 6F 6D 6D 61 6E the SAVE comman
01E8B0: 64 20 6C 69 6E 65 20 69 73 0D 0A 20 20 20 20 20 d line is..
01E8C0: 20 20 20 20 20 20 20 20 20 41 3E 53 41 56 45 20 A>SAVE
01E8D0: 38 35 20 4A 52 54 50 41 53 33 2E 43 4F 4D 0D 0A 85 JRTPAS3.COM..
01E8E0: 0D 0A 20 20 20 20 34 2E 20 20 54 68 65 20 64 69 .. 4. The di
01E8F0: 61 67 6E 6F 73 74 69 63 20 22 4A 52 54 50 41 53 agnostic "JRTPAS
01E900: 6D 65 73 73 61 67 65 73 20 20 61 72 65 20 20 61 messages are a
01E910: 6C 6C 20 20 70 72 65 66 69 78 65 64 20 20 77 69 ll prefixed wi
01E920: 74 68 20 20 61 20 20 25 0D 0A 20 20 20 20 20 20 th a %..
01E930: 63 68 61 72 61 63 74 65 72 2E 20 20 54 68 65 73 character. Thes
01E940: 65 20 6D 65 73 73 61 67 65 73 20 61 72 65 20 6C e messages are l
01E950: 69 73 74 65 64 20 68 65 72 65 3A 0D 0A 0D 0A 20 isted here:....
01E960: 20 20 20 20 20 25 45 6E 74 72 79 20 20 2D 20 20 %Entry -
01E970: 69 6E 64 69 63 61 74 65 64 20 20 65 6E 74 72 79 indicated entry
01E980: 20 20 74 6F 20 20 61 20 20 70 72 6F 63 65 64 75 to a procedu
01E990: 72 65 20 77 68 65 6E 20 70 72 6F 63 65 64 75 72 re when procedur
01E9A0: 65 20 74 72 61 63 65 20 69 73 0D 0A 20 20 20 20 e trace is..
01E9B0: 20 20 61 63 74 69 76 65 2E 20 20 50 72 6F 63 65 active. Proce
01E9C0: 64 75 72 65 20 6E 61 6D 65 20 61 6E 64 20 61 63 dure name and ac
01E9D0: 74 69 76 61 74 69 6F 6E 20 20 63 6F 75 6E 74 20 tivation count
01E9E0: 20 61 72 65 20 20 6C 69 73 74 65 64 2E 20 20 45 are listed. E
01E9F0: 78 74 65 72 6E 61 6C 0D 0A 20 20 20 20 20 20 70 xternal.. p
01EA00: 72 6F 63 65 64 75 72 65 73 20 61 72 65 20 69 6E rocedures are in
01EA10: 64 69 63 61 74 65 64 20 62 79 20 61 6E 20 61 73 dicated by an as
01EA20: 74 65 72 69 73 6B 20 62 65 66 6F 72 65 20 74 68 terisk before th
01EA30: 65 20 6E 61 6D 65 2E 0D 0A 0D 0A 20 20 20 20 20 e name.....
01EA40: 20 25 45 72 72 6F 72 20 2D 20 66 61 74 61 6C 20 %Error - fatal
01EA50: 65 72 72 6F 72 20 64 65 74 65 63 74 65 64 20 62 error detected b
01EA60: 79 20 72 75 6E 2D 74 69 6D 65 20 73 79 73 74 65 y run-time syste
01EA70: 6D 2E 20 50 72 6F 67 72 61 6D 20 74 65 72 6D 69 m. Program termi
01EA80: 6E 61 74 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 nates.....
01EA90: 25 45 78 69 74 20 2D 20 69 6E 64 69 63 61 74 65 %Exit - indicate
01EAA0: 73 20 65 78 69 74 20 66 72 6F 6D 20 70 72 6F 63 s exit from proc
01EAB0: 65 64 75 72 65 20 77 68 65 6E 20 70 72 6F 63 65 edure when proce
01EAC0: 64 75 72 65 20 74 72 61 63 65 20 69 73 20 61 63 dure trace is ac
01EAD0: 74 69 76 65 2E 0D 0A 20 20 20 20 20 20 50 72 6F tive... Pro
01EAE0: 63 65 64 75 72 65 20 20 6E 61 6D 65 20 20 69 73 cedure name is
01EAF0: 20 20 6C 69 73 74 65 64 2E 20 20 45 78 74 65 72 listed. Exter
01EB00: 33 3F 22 20 6F 72 20 22 53 4F 55 52 43 45 20 46 3?" or "SOURCE F
01EB10: 49 4C 45 20 4E 4F 54 20 46 4F 55 4E 44 22 20 63 ILE NOT FOUND" c
01EB20: 6F 6D 65 73 20 75 70 2E 2E 2E 0D 0A 20 20 20 20 omes up.....
01EB30: 20 20 43 50 2F 4D 20 20 6E 65 65 64 73 20 20 74 CP/M needs t
01EB40: 6F 20 20 6B 6E 6F 77 20 20 74 68 65 20 20 64 72 o know the dr
01EB50: 69 76 65 20 20 6F 6E 20 20 77 68 69 63 68 20 20 ive on which
01EB60: 74 68 65 20 66 69 6C 65 20 4A 52 54 50 41 53 33 the file JRTPAS3
01EB70: 2E 43 4F 4D 20 69 73 0D 0A 20 20 20 20 20 20 6C .COM is.. l
01EB80: 6F 63 61 74 65 64 2C 20 69 66 20 69 74 20 69 73 ocated, if it is
01EB90: 20 6E 6F 74 20 6F 6E 20 74 68 65 20 63 75 72 72 not on the curr
01EBA0: 65 6E 74 20 64 65 66 61 75 6C 74 20 64 72 69 76 ent default driv
01EBB0: 65 2E 20 20 4A 52 54 50 41 53 33 20 6E 65 65 64 e. JRTPAS3 need
01EBC0: 73 20 74 6F 0D 0A 20 20 20 20 20 20 6B 6E 6F 77 s to.. know
01EBD0: 20 74 68 65 20 64 72 69 76 65 20 6F 6E 20 77 68 the drive on wh
01EBE0: 69 63 68 20 74 68 65 20 73 6F 75 72 63 65 20 66 ich the source f
01EBF0: 69 6C 65 20 74 6F 20 62 65 20 20 63 6F 6D 70 69 ile to be compi
01EC00: 6C 65 64 20 20 69 73 20 20 6C 6F 63 61 74 65 64 led is located
01EC10: 2E 0D 0A 20 20 20 20 20 20 46 75 72 74 68 65 72 ... Further
01EC20: 2C 20 74 68 61 74 20 73 6F 75 72 63 65 20 66 69 , that source fi
01EC30: 6C 65 20 6D 75 73 74 20 68 61 76 65 20 61 20 27 le must have a '
01EC40: 2E 50 41 53 27 20 73 75 66 66 69 78 20 6F 6E 20 .PAS' suffix on
01EC50: 74 68 65 20 6E 61 6D 65 2E 20 20 53 6F 2C 0D 0A the name. So,..
01EC60: 20 20 20 20 20 20 66 6F 72 20 20 65 78 61 6D 70 for examp
01EC70: 6C 65 2C 20 20 79 6F 75 20 20 6D 61 79 20 20 6E le, you may n
01EC80: 65 65 64 20 20 74 6F 20 74 79 70 65 20 42 3A 4A eed to type B:J
01EC90: 52 54 50 41 53 33 20 42 3A 50 47 4D 20 69 66 20 RTPAS3 B:PGM if
01ECA0: 74 68 65 20 64 65 66 61 75 6C 74 0D 0A 20 20 20 the default..
01ECB0: 20 20 20 64 72 69 76 65 20 69 73 20 41 3A 20 61 drive is A: a
01ECC0: 6E 64 20 62 6F 74 68 20 4A 52 54 50 41 53 33 2E nd both JRTPAS3.
01ECD0: 43 4F 4D 20 61 6E 64 20 50 47 4D 2E 50 41 53 20 COM and PGM.PAS
01ECE0: 61 72 65 20 6F 6E 20 74 68 65 20 42 3A 20 64 72 are on the B: dr
01ECF0: 69 76 65 2E 0D 0A 0D 0A 20 20 20 20 35 2E 20 20 ive..... 5.
01ED00: 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 73 20 61 nal procedures a
01ED10: 72 65 20 69 6E 64 69 63 61 74 65 64 20 62 79 20 re indicated by
01ED20: 61 6E 0D 0A 20 20 20 20 20 20 61 73 74 65 72 69 an.. asteri
01ED30: 73 6B 20 62 65 66 6F 72 65 20 74 68 65 20 6E 61 sk before the na
01ED40: 6D 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 25 45 78 me..... %Ex
01ED50: 74 65 72 6E 20 2D 20 69 6E 64 69 63 61 74 65 73 tern - indicates
01ED60: 20 74 68 61 74 20 65 72 72 6F 72 20 6F 63 63 75 that error occu
01ED70: 72 72 65 64 20 77 68 69 6C 65 20 61 74 74 65 6D rred while attem
01ED80: 70 74 69 6E 67 20 74 6F 20 20 6C 6F 61 64 20 20 pting to load
01ED90: 61 6E 0D 0A 20 20 20 20 20 20 65 78 74 65 72 6E an.. extern
01EDA0: 61 6C 20 70 72 6F 63 65 64 75 72 65 20 6D 6F 64 al procedure mod
01EDB0: 75 6C 65 2E 20 54 68 65 20 70 72 6F 63 65 64 75 ule. The procedu
01EDC0: 72 65 20 6E 61 6D 65 20 69 73 20 6C 69 73 74 65 re name is liste
01EDD0: 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 25 49 6E 70 d..... %Inp
01EDE0: 75 74 20 20 65 72 72 6F 72 20 20 2D 20 69 6E 64 ut error - ind
01EDF0: 69 63 61 74 65 73 20 61 20 66 6F 72 6D 61 74 20 icates a format
01EE00: 65 72 72 6F 72 20 77 68 65 6E 20 72 65 61 64 69 error when readi
01EE10: 6E 67 20 63 6F 6E 73 6F 6C 65 20 69 6E 70 75 74 ng console input
01EE20: 2C 0D 0A 20 20 20 20 20 20 73 75 63 68 20 61 73 ,.. such as
01EE30: 20 65 6E 74 65 72 69 6E 67 20 61 20 63 68 61 72 entering a char
01EE40: 61 63 74 65 72 20 73 74 72 69 6E 67 20 77 68 65 acter string whe
01EE50: 6E 20 61 6E 20 69 6E 74 65 67 65 72 20 77 61 73 n an integer was
01EE60: 20 65 78 70 65 63 74 65 64 2E 0D 0A 0D 0A 20 20 expected.....
01EE70: 20 20 20 20 25 4C 69 6E 65 20 2D 20 69 6E 64 69 %Line - indi
01EE80: 63 61 74 65 73 20 6C 69 6E 65 20 6E 75 6D 62 65 cates line numbe
01EE90: 72 20 77 68 65 72 65 20 65 72 72 6F 72 20 6F 63 r where error oc
01EEA0: 63 75 72 72 65 64 2E 20 54 68 65 20 20 6D 6F 64 curred. The mod
01EEB0: 75 6C 65 20 20 6D 75 73 74 0D 0A 20 20 20 20 20 ule must..
01EEC0: 20 68 61 76 65 20 62 65 65 6E 20 63 6F 6D 70 69 have been compi
01EED0: 6C 65 64 20 77 69 74 68 20 25 4C 54 52 41 43 45 led with %LTRACE
01EEE0: 20 6F 70 74 69 6F 6E 2E 0D 0A 0D 0A 20 20 20 20 option.....
01EEF0: 20 20 25 4D 61 69 6E 20 20 2D 20 20 65 72 72 6F %Main - erro
01EF00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
01EF10: 1A 00 00 00 02 09 2A E5 1A 00 C1 02 00 00 00 02 ......*.........
01EF20: 1A 00 C6 02 00 00 00 02 1A 00 C2 02 00 00 00 02 ................
01EF30: 1A 00 C7 02 00 00 00 02 1A 00 C3 02 00 00 00 02 ................
01EF40: 1A 00 C8 02 00 00 00 02 1A 00 C4 02 00 00 00 02 ................
01EF50: 1A 00 C9 02 00 00 00 02 1A 00 C5 02 00 00 00 02 ................
01EF60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EF70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EF80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EF90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01EFF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01F000: 54 68 65 20 63 6F 6D 70 69 6C 65 72 20 61 6E 64 The compiler and
01F010: 20 65 76 65 72 79 74 68 69 6E 67 20 65 6C 73 65 everything else
01F020: 20 64 6F 65 73 20 6E 6F 74 20 66 69 74 20 6F 6E does not fit on
01F030: 20 6F 6E 65 20 64 69 73 6B 2E 2E 2E 0D 0A 20 20 one disk.....
01F040: 20 20 20 20 54 68 65 72 65 20 61 72 65 20 6D 61 There are ma
01F050: 6E 79 20 70 6F 73 73 69 62 6C 65 20 77 61 79 73 ny possible ways
01F060: 20 74 6F 20 73 65 74 20 4A 52 54 20 50 61 73 63 to set JRT Pasc
01F070: 61 6C 20 75 70 20 20 77 68 65 6E 20 20 79 6F 75 al up when you
01F080: 20 20 68 61 76 65 20 20 61 0D 0A 20 20 20 20 20 have a..
01F090: 20 73 79 73 74 65 6D 20 77 69 74 68 20 73 6D 61 system with sma
01F0A0: 6C 6C 20 64 72 69 76 65 20 63 61 70 61 62 69 6C ll drive capabil
01F0B0: 69 74 69 65 73 2E 20 20 4F 6E 65 20 69 73 3A 0D ities. One is:.
01F0C0: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
01F0D0: 20 4F 6E 20 64 69 73 6B 20 41 3A 20 20 20 20 20 On disk A:
01F0E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01F0F0: 20 4F 6E 20 64 69 73 6B 20 42 3A 0D 0A 20 20 20 On disk B:..
01F100: 20 20 20 20 20 20 20 20 20 20 20 2D 45 58 45 43 -EXEC
01F110: 2E 43 4F 4D 20 20 20 20 20 20 20 20 20 20 20 20 .COM
01F120: 20 20 20 20 20 20 20 20 20 20 20 2D 4A 52 54 50 -JRTP
01F130: 41 53 33 2E 43 4F 4D 0D 0A 20 20 20 20 20 20 20 AS3.COM..
01F140: 20 20 20 20 20 20 20 2D 79 6F 75 72 20 65 64 69 -your edi
01F150: 74 6F 72 20 20 20 20 20 20 20 20 20 20 20 20 20 tor
01F160: 20 20 20 20 20 20 20 2D 50 41 53 43 41 4C 30 2E -PASCAL0.
01F170: 49 4E 54 0D 0A 20 20 20 20 20 20 20 20 20 20 20 INT..
01F180: 20 20 20 20 20 28 45 44 2C 20 57 6F 72 64 53 74 (ED, WordSt
01F190: 61 72 2C 20 65 74 63 2E 29 20 20 20 20 20 20 20 ar, etc.)
01F1A0: 20 20 20 2D 50 41 53 43 41 4C 31 2E 49 4E 54 0D -PASCAL1.INT.
01F1B0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2D . -
01F1C0: 74 68 65 20 50 41 53 43 41 4C 20 53 4F 55 52 43 the PASCAL SOURC
01F1D0: 45 20 70 72 6F 67 72 61 6D 20 20 20 20 20 20 2D E program -
01F1E0: 50 41 53 43 41 4C 32 2E 49 4E 54 0D 0A 20 20 20 PASCAL2.INT..
01F1F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 65 69 bei
01F200: 20 20 41 20 73 79 73 74 65 6D 20 72 65 73 65 74 A system reset
01F210: 20 6D 61 79 20 62 65 20 6E 65 65 64 65 64 2E 0D may be needed..
01F220: 0A 0D 0A 0D 0A 20 20 20 20 20 20 42 2E 20 20 43 ..... B. C
01F230: 6F 6D 70 69 6C 65 72 20 45 72 72 6F 72 73 0D 0A ompiler Errors..
01F240: 0D 0A 20 20 20 20 31 2E 20 20 53 74 72 69 6E 67 .. 1. String
01F250: 20 6C 69 74 65 72 61 6C 20 74 6F 6F 20 6C 6F 6E literal too lon
01F260: 67 2E 2E 2E 0D 0A 20 20 20 20 20 20 53 6F 6D 65 g..... Some
01F270: 77 68 65 72 65 20 69 6E 20 74 68 65 20 70 72 6F where in the pro
01F280: 67 72 61 6D 2C 20 61 20 6C 69 74 65 72 61 6C 20 gram, a literal
01F290: 73 74 72 69 6E 67 20 64 6F 65 73 20 6E 6F 74 20 string does not
01F2A0: 68 61 76 65 20 61 20 63 6C 6F 73 69 6E 67 20 6F have a closing o
01F2B0: 72 0D 0A 20 20 20 20 20 20 6F 70 65 6E 69 6E 67 r.. opening
01F2C0: 20 73 69 6E 67 6C 65 20 71 75 6F 74 65 2E 20 20 single quote.
01F2D0: 54 68 69 73 20 65 72 72 6F 72 20 69 73 20 63 61 This error is ca
01F2E0: 75 67 68 74 20 62 79 20 20 74 68 65 20 20 6C 65 ught by the le
01F2F0: 78 69 63 61 6C 20 20 73 63 61 6E 6E 65 72 0D 0A xical scanner..
01F300: 20 20 20 20 20 20 62 65 66 6F 72 65 20 20 74 68 before th
01F310: 65 20 20 70 72 6F 67 72 61 6D 20 69 73 20 6C 69 e program is li
01F320: 73 74 65 64 2E 20 20 28 4D 6F 73 74 20 65 64 69 sted. (Most edi
01F330: 74 6F 72 73 20 6D 61 6B 65 20 69 74 20 65 61 73 tors make it eas
01F340: 79 20 74 6F 20 73 65 61 72 63 68 0D 0A 20 20 20 y to search..
01F350: 20 20 20 66 6F 72 20 61 6C 6C 20 6C 69 6E 65 73 for all lines
01F360: 20 77 69 74 68 20 73 69 6E 67 6C 65 20 71 75 6F with single quo
01F370: 74 65 73 2E 29 0D 0A 0D 0A 20 20 20 20 32 2E 20 tes.).... 2.
01F380: 20 42 6C 6F 63 6B 20 73 74 72 75 63 74 75 72 65 Block structure
01F390: 20 69 6E 76 61 6C 69 64 20 28 61 6E 64 20 6F 74 invalid (and ot
01F3A0: 68 65 72 20 73 74 72 61 6E 67 65 20 64 69 61 67 her strange diag
01F3B0: 6E 6F 73 74 69 63 73 29 2E 2E 2E 0D 0A 20 20 20 nostics).....
01F3C0: 20 20 20 50 65 72 68 61 70 73 20 74 68 65 20 70 Perhaps the p
01F3D0: 72 6F 67 72 61 6D 20 69 73 20 61 74 74 65 6D 70 rogram is attemp
01F3E0: 74 69 6E 67 20 74 6F 20 64 65 63 6C 61 72 65 20 ting to declare
01F3F0: 6F 72 20 75 73 65 20 61 20 72 65 73 65 72 76 65 or use a reserve
01F400: 6E 67 20 64 65 76 65 6C 6F 70 65 64 20 20 20 20 ng developed
01F410: 20 20 20 20 20 20 20 20 20 20 20 2D 50 41 53 43 -PASC
01F420: 41 4C 33 2E 49 4E 54 0D 0A 20 20 20 20 20 20 20 AL3.INT..
01F430: 20 20 20 20 20 20 20 2D 70 65 72 68 61 70 73 20 -perhaps
01F440: 50 41 53 43 41 4C 2E 4C 49 42 20 20 20 20 20 20 PASCAL.LIB
01F450: 20 20 20 20 20 20 20 2D 50 41 53 43 41 4C 34 2E -PASCAL4.
01F460: 49 4E 54 0D 0A 20 20 20 20 20 20 20 20 20 20 20 INT..
01F470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01F480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
01F490: 20 20 20 2D 50 41 53 43 41 4C 2E 4C 49 42 0D 0A -PASCAL.LIB..
01F4A0: 0D 0A 20 20 20 20 20 20 59 6F 75 20 20 4F 73 62 .. You Osb
01F4B0: 6F 72 6E 65 20 20 6F 77 6E 65 72 73 20 6D 61 79 orne owners may
01F4C0: 20 68 61 76 65 20 74 6F 20 64 6F 20 73 6F 6D 65 have to do some
01F4D0: 20 73 68 75 66 66 6C 69 6E 67 20 75 6E 74 69 6C shuffling until
01F4E0: 20 79 6F 75 20 66 69 6E 64 20 74 68 65 0D 0A 20 you find the..
01F4F0: 20 20 20 20 20 61 72 72 61 6E 67 65 6D 65 6E 74 arrangement
01F500: 20 74 68 61 74 20 77 6F 72 6B 73 20 62 65 73 74 that works best
01F510: 20 66 6F 72 20 79 6F 75 2E 20 20 46 6F 72 20 65 for you. For e
01F520: 78 61 6D 70 6C 65 2C 20 74 68 65 20 63 6F 6D 70 xample, the comp
01F530: 69 6C 65 72 20 20 64 69 73 6B 0D 0A 20 20 20 20 iler disk..
01F540: 20 20 63 6F 75 6C 64 20 62 65 20 6F 6E 20 64 72 could be on dr
01F550: 69 76 65 20 41 3A 2C 20 77 68 69 63 68 20 77 6F ive A:, which wo
01F560: 75 6C 64 20 61 6C 74 65 72 6E 61 74 65 20 77 69 uld alternate wi
01F570: 74 68 20 74 68 65 20 57 6F 72 64 53 74 61 72 20 th the WordStar
01F580: 64 69 73 6B 20 61 73 0D 0A 20 20 20 20 20 20 6E disk as.. n
01F590: 65 63 65 73 73 61 72 79 20 20 28 77 69 74 68 20 ecessary (with
01F5A0: 20 61 70 70 72 6F 70 72 69 61 74 65 20 20 43 6F appropriate Co
01F5B0: 6E 74 72 6F 6C 2D 43 27 73 20 20 61 66 74 65 72 ntrol-C's after
01F5C0: 20 64 69 73 6B 20 63 68 61 6E 67 65 73 29 2E 20 disk changes).
01F5D0: 20 54 68 65 0D 0A 20 20 20 20 20 20 73 6F 75 72 The.. sour
01F5E0: 63 65 20 61 6E 64 20 6F 62 6A 65 63 74 20 70 72 ce and object pr
01F5F0: 6F 67 72 61 6D 73 20 20 63 6F 75 6C 64 20 20 74 ograms could t
01F600: 64 20 20 77 6F 72 64 2E 0D 0A 20 20 20 20 20 20 d word...
01F610: 54 68 65 20 20 6C 69 73 74 20 20 6F 66 20 20 72 The list of r
01F620: 65 73 65 72 76 65 64 20 20 77 6F 72 64 73 20 20 eserved words
01F630: 69 6E 20 4A 52 54 20 50 61 73 63 61 6C 20 69 73 in JRT Pascal is
01F640: 20 73 6F 6D 65 77 68 61 74 20 6C 6F 6E 67 65 72 somewhat longer
01F650: 20 74 68 61 6E 0D 0A 20 20 20 20 20 20 73 74 61 than.. sta
01F660: 6E 64 61 72 64 2E 20 46 6F 72 20 65 78 61 6D 70 ndard. For examp
01F670: 6C 65 2C 20 4C 45 4E 47 54 48 20 61 6E 64 20 50 le, LENGTH and P
01F680: 4F 53 20 61 72 65 20 72 65 73 65 72 76 65 64 2E OS are reserved.
01F690: 0D 0A 0D 0A 20 20 20 20 33 2E 20 20 43 6F 6D 70 .... 3. Comp
01F6A0: 69 6C 65 72 20 61 63 74 73 20 6C 69 6B 65 20 73 iler acts like s
01F6B0: 6F 6D 65 74 68 69 6E 67 20 69 73 20 6E 6F 74 20 omething is not
01F6C0: 74 68 65 72 65 2E 2E 2E 0D 0A 20 20 20 20 20 20 there.....
01F6D0: 4D 61 6E 79 20 76 65 72 73 69 6F 6E 73 20 6F 66 Many versions of
01F6E0: 20 57 6F 72 64 53 74 61 72 20 73 65 74 20 74 68 WordStar set th
01F6F0: 65 20 68 69 67 68 2D 6F 72 64 65 72 20 20 62 69 e high-order bi
01F700: 74 20 20 6F 66 20 20 74 68 65 20 20 27 63 75 72 t of the 'cur
01F710: 72 65 6E 74 27 0D 0A 20 20 20 20 20 20 63 68 61 rent'.. cha
01F720: 72 61 63 74 65 72 20 20 77 68 65 6E 20 20 61 20 racter when a
01F730: 20 66 69 6C 65 20 69 73 20 63 6C 6F 73 65 64 2C file is closed,
01F740: 20 65 76 65 6E 20 77 68 65 6E 20 65 64 69 74 69 even when editi
01F750: 6E 67 20 69 6E 20 6E 6F 6E 2D 64 6F 63 75 6D 65 ng in non-docume
01F760: 6E 74 0D 0A 20 20 20 20 20 20 66 6F 72 6D 2E 20 nt.. form.
01F770: 20 41 4C 57 41 59 53 20 65 6E 64 20 61 20 57 6F ALWAYS end a Wo
01F780: 72 64 53 74 61 72 20 65 64 69 74 20 77 69 74 68 rdStar edit with
01F790: 20 28 5E 51 43 29 20 62 65 66 6F 72 65 20 28 5E (^QC) before (^
01F7A0: 4B 44 29 2E 20 20 41 6C 73 6F 2C 20 75 73 65 0D KD). Also, use.
01F7B0: 0A 20 20 20 20 20 20 50 49 50 20 6E 65 77 66 69 . PIP newfi
01F7C0: 6C 65 2E 50 41 53 3D 6F 6C 64 66 69 6C 65 2E 50 le.PAS=oldfile.P
01F7D0: 41 53 5B 5A 5D 20 74 6F 20 63 6C 65 61 72 20 6F AS[Z] to clear o
01F7E0: 66 66 20 70 61 72 69 74 79 20 62 69 74 73 2E 0D ff parity bits..
01F7F0: 0A 0D 0A 20 20 20 20 34 2E 20 20 43 6F 6D 70 69 ... 4. Compi
01F800: 68 65 6E 20 20 73 74 61 79 20 20 6F 6E 20 20 42 hen stay on B
01F810: 3A 2C 20 20 70 65 72 68 61 70 73 20 20 77 69 74 :, perhaps wit
01F820: 68 0D 0A 20 20 20 20 20 20 45 58 45 43 2E 43 4F h.. EXEC.CO
01F830: 4D 20 61 6E 64 20 61 6E 6F 74 68 65 72 20 63 6F M and another co
01F840: 70 79 20 6F 66 20 50 41 53 43 41 4C 2E 4C 49 42 py of PASCAL.LIB
01F850: 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 42 65 ... Be
01F860: 20 20 73 75 72 65 20 20 74 68 65 72 65 20 20 69 sure there i
01F870: 73 20 61 20 63 6F 70 79 20 6F 66 20 79 6F 75 72 s a copy of your
01F880: 20 6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 65 operating syste
01F890: 6D 20 6F 6E 20 65 61 63 68 20 64 69 73 6B 0D 0A m on each disk..
01F8A0: 20 20 20 20 20 20 79 6F 75 20 70 75 74 20 69 6E you put in
01F8B0: 20 64 72 69 76 65 20 41 3A 2E 0D 0A 0D 0A 20 20 drive A:.....
01F8C0: 20 20 36 2E 20 20 54 68 65 20 63 6F 6D 70 69 6C 6. The compil
01F8D0: 65 72 20 28 6F 72 20 72 75 6E 2D 74 69 6D 65 29 er (or run-time)
01F8E0: 20 55 53 45 44 20 74 6F 20 77 6F 72 6B 2C 20 62 USED to work, b
01F8F0: 75 74 20 6E 6F 77 20 69 74 20 64 6F 65 73 6E 27 ut now it doesn'
01F900: 74 2E 2E 2E 0D 0A 20 20 20 20 20 20 55 73 65 20 t..... Use
01F910: 45 58 45 43 20 56 45 52 49 46 59 20 74 6F 20 63 EXEC VERIFY to c
01F920: 68 65 63 6B 20 74 68 65 20 63 6F 6D 70 69 6C 65 heck the compile
01F930: 72 20 61 6E 64 2F 6F 72 20 72 75 6E 20 20 74 69 r and/or run ti
01F940: 6D 65 20 20 66 69 6C 65 73 20 20 61 67 61 69 6E me files again
01F950: 2E 0D 0A 20 20 20 20 20 20 45 76 65 6E 20 69 66 ... Even if
01F960: 20 74 68 65 20 73 75 6D 73 20 61 67 72 65 65 2C the sums agree,
01F970: 20 61 20 66 69 6C 65 20 6F 72 20 66 69 6C 65 73 a file or files
01F980: 20 6D 61 79 20 68 61 76 65 20 67 6F 74 74 65 6E may have gotten
01F990: 20 73 68 75 66 66 6C 65 64 20 62 79 20 61 0D 0A shuffled by a..
01F9A0: 20 20 20 20 20 20 6D 61 6C 66 75 6E 63 74 69 6F malfunctio
01F9B0: 6E 69 6E 67 20 20 70 72 6F 67 72 61 6D 2C 20 20 ning program,
01F9C0: 68 61 72 64 77 61 72 65 20 20 65 72 72 6F 72 73 hardware errors
01F9D0: 2C 20 6F 72 20 62 61 64 20 64 69 73 6B 65 74 74 , or bad diskett
01F9E0: 65 20 68 61 6E 64 6C 69 6E 67 2E 0D 0A 20 20 20 e handling...
01F9F0: 20 20 20 49 66 20 6E 65 63 65 73 73 61 72 79 2C If necessary,
01FA00: 6C 65 72 20 22 67 6F 65 73 20 61 77 61 79 22 2E ler "goes away".
01FA10: 2E 2E 0D 0A 20 20 20 20 20 20 48 69 74 20 73 79 .... Hit sy
01FA20: 73 74 65 6D 20 72 65 73 65 74 2C 20 74 68 65 6E stem reset, then
01FA30: 20 20 6C 6F 6F 6B 20 20 66 6F 72 20 20 75 6E 64 look for und
01FA40: 65 63 6C 61 72 65 64 20 20 76 61 72 69 61 62 6C eclared variabl
01FA50: 65 73 2C 20 20 74 79 70 65 73 2C 20 20 6F 72 0D es, types, or.
01FA60: 0A 20 20 20 20 20 20 63 6F 6E 73 74 61 6E 74 73 . constants
01FA70: 20 20 69 6E 20 20 74 68 65 20 20 6E 65 78 74 20 in the next
01FA80: 20 6C 69 6E 65 20 20 6C 69 73 74 65 64 2E 20 20 line listed.
01FA90: 20 41 6C 73 6F 20 20 63 68 65 63 6B 20 66 6F 72 Also check for
01FAA0: 20 3B 20 6F 72 20 2C 20 75 73 65 64 0D 0A 20 20 ; or , used..
01FAB0: 20 20 20 20 69 6E 61 70 70 72 6F 70 72 69 61 74 inappropriat
01FAC0: 65 6C 79 2E 20 20 4C 6F 6F 6B 20 66 6F 72 20 75 ely. Look for u
01FAD0: 6E 62 61 6C 61 6E 63 65 64 20 70 61 72 65 6E 74 nbalanced parent
01FAE0: 68 65 73 69 73 2E 0D 0A 0D 0A 20 20 20 20 35 2E hesis..... 5.
01FAF0: 20 20 4F 75 74 20 6F 66 20 6D 65 6D 6F 72 79 2E Out of memory.
01FB00: 2E 2E 0D 0A 20 20 20 20 20 20 53 70 6C 69 74 20 .... Split
01FB10: 74 68 65 20 70 72 6F 67 72 61 6D 20 69 6E 74 6F the program into
01FB20: 20 61 20 6D 61 69 6E 20 70 72 6F 67 72 61 6D 20 a main program
01FB30: 61 6E 64 20 65 78 74 65 72 6E 61 6C 20 70 72 6F and external pro
01FB40: 63 65 64 75 72 65 73 20 73 6F 20 74 68 61 74 0D cedures so that.
01FB50: 0A 20 20 20 20 20 20 65 61 63 68 20 70 6F 72 74 . each port
01FB60: 69 6F 6E 20 69 73 20 36 30 30 20 74 6F 20 31 32 ion is 600 to 12
01FB70: 30 30 20 6C 69 6E 65 73 20 6C 6F 6E 67 2E 20 28 00 lines long. (
01FB80: 4D 61 78 69 6D 75 6D 20 20 6C 65 6E 67 74 68 20 Maximum length
01FB90: 20 64 65 70 65 6E 64 73 20 20 6F 6E 0D 0A 20 20 depends on..
01FBA0: 20 20 20 20 74 68 65 20 70 72 6F 67 72 61 6D 20 the program
01FBB0: 61 6E 64 20 74 68 65 20 61 76 61 69 6C 61 62 6C and the availabl
01FBC0: 65 20 6D 65 6D 6F 72 79 2E 29 0D 0A 0D 0A 20 20 e memory.)....
01FBD0: 20 20 36 2E 20 20 41 72 72 61 79 20 6F 75 74 20 6. Array out
01FBE0: 6F 66 20 62 6F 75 6E 64 73 20 61 74 20 65 6E 64 of bounds at end
01FBF0: 20 6F 66 20 63 6F 6D 70 69 6C 61 74 69 6F 6E 2E of compilation.
01FC00: 20 67 6F 20 62 61 63 6B 20 74 6F 20 74 68 65 20 go back to the
01FC10: 20 6F 72 69 67 69 6E 61 6C 20 20 6D 61 73 74 65 original maste
01FC20: 72 20 20 64 69 73 6B 73 20 20 28 77 72 69 74 65 r disks (write
01FC30: 2D 70 72 6F 74 65 63 74 0D 0A 20 20 20 20 20 20 -protect..
01FC40: 6C 61 62 65 6C 73 2C 20 20 72 69 67 68 74 3F 29 labels, right?)
01FC50: 20 20 61 6E 64 20 20 63 6F 70 79 20 20 74 68 65 and copy the
01FC60: 20 20 6E 65 65 64 65 64 20 66 69 6C 65 73 20 74 needed files t
01FC70: 6F 20 61 20 4E 45 57 20 64 69 73 6B 65 74 74 65 o a NEW diskette
01FC80: 2E 20 20 49 66 0D 0A 20 20 20 20 20 20 6E 65 63 . If.. nec
01FC90: 65 73 73 61 72 79 2C 20 61 63 74 20 61 73 20 69 essary, act as i
01FCA0: 66 20 79 6F 75 20 68 61 64 20 6A 75 73 74 20 67 f you had just g
01FCB0: 6F 74 74 65 6E 20 4A 52 54 20 50 61 73 63 61 6C otten JRT Pascal
01FCC0: 20 28 73 71 75 61 72 65 2D 31 29 2E 0D 0A 0D 0A (square-1).....
01FCD0: 20 20 20 20 37 2E 20 20 45 58 45 43 20 56 45 52 7. EXEC VER
01FCE0: 49 46 59 20 64 6F 65 73 20 6E 6F 74 20 65 76 65 IFY does not eve
01FCF0: 6E 20 77 6F 72 6B 2E 2E 2E 0D 0A 20 20 20 20 20 n work.....
01FD00: 20 4D 61 6B 65 20 73 75 72 65 20 74 68 61 74 20 Make sure that
01FD10: 45 58 45 43 2E 43 4F 4D 2C 20 56 45 52 49 46 59 EXEC.COM, VERIFY
01FD20: 2E 49 4E 54 2C 20 61 6E 64 20 50 41 53 43 41 4C .INT, and PASCAL
01FD30: 2E 4C 49 42 20 20 61 72 65 20 20 4D 4F 55 4E 54 .LIB are MOUNT
01FD40: 45 44 20 20 6F 6E 0D 0A 20 20 20 20 20 20 79 6F ED on.. yo
01FD50: 75 72 20 64 69 73 6B 20 73 79 73 74 65 6D 2C 20 ur disk system,
01FD60: 61 6E 64 20 74 68 61 74 20 79 6F 75 20 74 6F 6C and that you tol
01FD70: 64 20 43 50 2F 4D 20 74 68 65 20 72 69 67 68 74 d CP/M the right
01FD80: 20 64 72 69 76 65 20 66 6F 72 20 45 58 45 43 2E drive for EXEC.
01FD90: 43 4F 4D 0D 0A 20 20 20 20 20 20 61 6E 64 20 20 COM.. and
01FDA0: 74 68 61 74 20 20 79 6F 75 20 20 67 61 76 65 20 that you gave
01FDB0: 45 58 45 43 20 74 68 65 20 72 69 67 68 74 20 6C EXEC the right l
01FDC0: 6F 63 61 74 69 6F 6E 20 66 6F 72 20 56 45 52 49 ocation for VERI
01FDD0: 46 59 2E 49 4E 54 2E 20 20 59 6F 75 20 6D 61 79 FY.INT. You may
01FDE0: 0D 0A 20 20 20 20 20 20 6E 65 65 64 20 74 6F 20 .. need to
01FDF0: 75 73 65 20 42 3A 45 58 45 43 20 42 3A 56 45 52 use B:EXEC B:VER
01FE00: 2E 2E 0D 0A 20 20 20 20 20 20 45 78 74 65 72 6E .... Extern
01FE10: 61 6C 20 20 70 72 6F 63 65 64 75 72 65 20 20 6E al procedure n
01FE20: 61 6D 65 73 20 20 63 61 6E 20 20 62 65 20 20 38 ames can be 8
01FE30: 20 63 68 61 72 61 63 74 65 72 73 20 6C 6F 6E 67 characters long
01FE40: 20 61 6E 64 20 73 68 6F 75 6C 64 20 6E 6F 74 0D and should not.
01FE50: 0A 20 20 20 20 20 20 63 6F 6E 74 61 69 6E 20 24 . contain $
01FE60: 20 6F 72 20 5F 20 63 68 61 72 61 63 74 65 72 73 or _ characters
01FE70: 2C 20 73 69 6E 63 65 20 74 68 65 20 65 78 70 72 , since the expr
01FE80: 6F 63 20 6E 61 6D 65 20 20 69 73 20 20 74 75 72 oc name is tur
01FE90: 6E 65 64 20 20 69 6E 74 6F 20 20 61 0D 0A 20 20 ned into a..
01FEA0: 20 20 20 20 43 50 2F 4D 20 66 69 6C 65 20 6E 61 CP/M file na
01FEB0: 6D 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 43 me....... C
01FEC0: 2E 20 20 52 75 6E 2D 74 69 6D 65 20 45 72 72 6F . Run-time Erro
01FED0: 72 73 0D 0A 0D 0A 20 20 20 20 31 2E 20 20 4F 62 rs.... 1. Ob
01FEE0: 6A 65 63 74 20 66 69 6C 65 20 6E 6F 74 20 66 6F ject file not fo
01FEF0: 75 6E 64 2E 2E 2E 0D 0A 20 20 20 20 20 20 4D 61 und..... Ma
01FF00: 6B 65 20 20 73 75 72 65 20 74 68 61 74 20 74 68 ke sure that th
01FF10: 65 20 73 6F 75 72 63 65 20 70 72 6F 67 72 61 6D e source program
01FF20: 20 69 73 20 63 6F 6D 70 69 6C 65 64 20 73 75 63 is compiled suc
01FF30: 63 65 73 73 66 75 6C 6C 79 2C 20 61 6E 64 20 74 cessfully, and t
01FF40: 68 61 74 0D 0A 20 20 20 20 20 20 74 68 65 20 61 hat.. the a
01FF50: 70 70 72 6F 70 72 69 61 74 65 20 64 72 69 76 65 ppropriate drive
01FF60: 20 69 73 20 69 6E 64 69 63 61 74 65 64 20 6F 6E is indicated on
01FF70: 20 74 68 65 20 66 69 6C 65 20 6E 61 6D 65 2C 20 the file name,
01FF80: 61 73 20 45 58 45 43 20 42 3A 50 47 4D 2E 0D 0A as EXEC B:PGM...
01FF90: 0D 0A 20 20 20 20 32 2E 20 20 4C 69 62 72 61 72 .. 2. Librar
01FFA0: 79 20 6E 6F 74 20 70 72 65 73 65 6E 74 2E 2E 2E y not present...
01FFB0: 0D 0A 20 20 20 20 20 20 50 41 53 43 41 4C 2E 4C .. PASCAL.L
01FFC0: 49 42 20 6D 75 73 74 20 62 65 20 70 72 65 73 65 IB must be prese
01FFD0: 6E 74 20 6F 6E 20 6F 6E 65 20 6F 66 20 74 68 65 nt on one of the
01FFE0: 20 64 72 69 76 65 73 20 69 6E 20 74 68 65 20 20 drives in the
01FFF0: 22 64 69 73 6B 20 20 73 65 61 72 63 68 0D 0A 20 "disk search..
020000: 49 46 59 20 69 66 20 74 68 65 20 66 69 6C 65 73 IFY if the files
020010: 20 61 72 65 20 6F 6E 20 20 42 3A 2E 20 20 20 52 are on B:. R
020020: 65 6D 65 6D 62 65 72 20 20 77 68 65 6E 0D 0A 20 emember when..
020030: 20 20 20 20 20 79 6F 75 20 72 75 6E 20 45 58 45 you run EXE
020040: 43 2E 43 4F 4D 20 74 68 61 74 20 50 41 53 43 41 C.COM that PASCA
020050: 4C 2E 4C 49 42 20 6D 75 73 74 20 62 65 20 70 72 L.LIB must be pr
020060: 65 73 65 6E 74 20 6F 6E 20 6F 6E 65 20 6F 66 20 esent on one of
020070: 74 68 65 20 64 72 69 76 65 73 0D 0A 20 20 20 20 the drives..
020080: 20 20 69 6E 20 74 68 65 20 22 64 69 73 6B 20 73 in the "disk s
020090: 65 61 72 63 68 20 6C 69 73 74 22 20 28 75 73 75 earch list" (usu
0200A0: 61 6C 6C 79 20 41 3A 20 6F 72 20 42 3A 29 2E 0D ally A: or B:)..
0200B0: 0A 0D 0A 20 20 20 20 38 2E 20 20 42 44 4F 53 20 ... 8. BDOS
0200C0: 65 72 72 6F 72 73 20 73 68 6F 77 20 75 70 20 77 errors show up w
0200D0: 68 65 6E 20 61 20 44 49 52 20 69 73 20 72 65 71 hen a DIR is req
0200E0: 75 65 73 74 65 64 20 6F 66 20 61 20 6D 61 73 74 uested of a mast
0200F0: 65 72 20 64 69 73 6B 2E 2E 2E 0D 0A 20 20 20 20 er disk.....
020100: 20 20 4D 61 6B 65 20 20 73 75 72 65 20 20 74 68 Make sure th
020110: 61 74 20 20 79 6F 75 72 20 20 73 79 73 74 65 6D at your system
020120: 20 20 69 73 20 20 65 78 70 65 63 74 69 6E 67 20 is expecting
020130: 20 61 20 20 64 69 73 6B 20 20 69 6E 20 74 68 65 a disk in the
020140: 20 66 6F 72 6D 61 74 0D 0A 20 20 20 20 20 20 70 format.. p
020150: 72 6F 76 69 64 65 64 2E 20 20 46 6F 72 20 65 78 rovided. For ex
020160: 61 6D 70 6C 65 2C 20 20 73 69 6E 67 6C 65 20 20 ample, single
020170: 64 65 6E 73 69 74 79 20 20 38 22 20 20 64 69 73 density 8" dis
020180: 6B 73 3A 20 20 53 6F 6D 65 20 20 6F 70 65 72 61 ks: Some opera
020190: 74 69 6E 67 0D 0A 20 20 20 20 20 20 73 79 73 74 ting.. syst
0201A0: 65 6D 73 20 20 63 61 6E 6E 6F 74 20 73 65 6E 73 ems cannot sens
0201B0: 65 20 61 20 64 65 6E 73 69 74 79 20 63 68 61 6E e a density chan
0201C0: 67 65 20 6F 6E 63 65 20 74 68 65 79 20 68 61 76 ge once they hav
0201D0: 65 20 64 65 74 65 72 6D 69 6E 65 64 20 22 74 68 e determined "th
0201E0: 65 0D 0A 20 20 20 20 20 20 66 6F 72 6D 61 74 20 e.. format
0201F0: 66 6F 72 20 74 68 61 74 20 64 72 69 76 65 22 2E for that drive".
020200: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
020210: 1B 00 00 00 02 09 2A E5 1B 00 C1 02 00 00 00 02 ......*.........
020220: 1B 00 C6 02 00 00 00 02 1B 00 C2 02 00 00 00 02 ................
020230: 1B 00 C7 02 00 00 00 02 1B 00 C3 02 00 00 00 02 ................
020240: 1B 00 C8 02 00 00 00 02 1B 00 C4 02 00 00 00 02 ................
020250: 1B 00 C9 02 00 00 00 02 1B 00 C5 02 00 00 00 02 ................
020260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0202F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020300: 20 20 20 20 20 6C 69 73 74 22 20 28 75 73 75 61 list" (usua
020310: 6C 6C 79 20 41 3A 20 6F 72 20 42 3A 29 2E 0D 0A lly A: or B:)...
020320: 0D 0A 20 20 20 20 33 2E 20 20 46 69 6C 65 73 20 .. 3. Files
020330: 6E 65 76 65 72 20 67 65 74 20 77 72 69 74 74 65 never get writte
020340: 6E 20 74 6F 2E 2E 2E 0D 0A 20 20 20 20 20 20 43 n to..... C
020350: 4C 4F 53 45 28 66 69 6C 65 5F 76 61 72 69 61 62 LOSE(file_variab
020360: 6C 65 29 20 20 69 73 20 20 72 65 71 75 69 72 65 le) is require
020370: 64 20 20 61 66 74 65 72 20 66 69 6C 65 73 20 68 d after files h
020380: 61 76 65 20 62 65 65 6E 20 77 72 69 74 74 65 6E ave been written
020390: 2C 20 73 6F 0D 0A 20 20 20 20 20 20 74 68 61 74 , so.. that
0203A0: 20 43 50 2F 4D 20 70 65 72 66 6F 72 6D 73 20 61 CP/M performs a
0203B0: 20 70 72 6F 70 65 72 20 63 6C 6F 73 65 20 6F 6E proper close on
0203C0: 20 74 68 65 20 66 69 6C 65 2E 20 20 4F 74 68 65 the file. Othe
0203D0: 72 77 69 73 65 2C 20 20 74 68 65 20 20 66 69 6C rwise, the fil
0203E0: 65 0D 0A 20 20 20 20 20 20 73 69 7A 65 20 77 69 e.. size wi
0203F0: 6C 6C 20 62 65 20 74 68 65 20 6E 65 78 74 20 6C ll be the next l
020400: 6F 77 65 72 20 6D 75 6C 74 69 70 6C 65 20 6F 66 ower multiple of
020410: 20 31 36 4B 20 69 6E 20 73 69 7A 65 2C 20 75 73 16K in size, us
020420: 75 61 6C 6C 79 20 7A 65 72 6F 2E 0D 0A 0D 0A 20 ually zero.....
020430: 20 20 20 34 2E 20 20 20 52 65 61 64 69 6E 67 20 4. Reading
020440: 20 63 68 61 72 61 63 74 65 72 73 20 20 66 72 6F characters fro
020450: 6D 20 61 20 66 69 6C 65 2C 20 6D 6F 73 74 20 6F m a file, most o
020460: 66 20 74 68 65 20 63 68 61 72 61 63 74 65 72 73 f the characters
020470: 20 69 6E 20 61 20 77 6F 72 64 0D 0A 20 20 20 20 in a word..
020480: 20 20 67 65 74 20 73 6B 69 70 70 65 64 2E 2E 2E get skipped...
020490: 0D 0A 20 20 20 20 20 20 54 68 65 20 64 69 66 66 .. The diff
0204A0: 65 72 65 6E 63 65 20 62 65 74 77 65 65 6E 20 62 erence between b
0204B0: 69 6E 61 72 79 20 61 6E 64 20 74 65 78 74 20 6D inary and text m
0204C0: 6F 64 65 73 20 61 72 65 20 73 69 67 6E 69 66 69 odes are signifi
0204D0: 63 61 6E 74 2E 20 20 49 66 20 79 6F 75 0D 0A 20 cant. If you..
0204E0: 20 20 20 20 20 77 61 6E 74 20 65 76 65 72 79 20 want every
0204F0: 63 68 61 72 61 63 74 65 72 20 69 6E 20 61 20 66 character in a f
020500: 72 20 20 65 78 69 74 0D 0A 20 20 20 20 20 20 74 r exit.. t
020510: 68 65 20 20 70 72 6F 67 72 61 6D 20 77 69 74 68 he program with
020520: 20 5A 20 6F 72 20 63 6F 6E 74 69 6E 75 65 20 77 Z or continue w
020530: 69 74 68 20 52 2C 20 61 73 20 61 70 70 72 6F 70 ith R, as approp
020540: 72 69 61 74 65 29 2E 20 20 55 73 65 20 25 4C 54 riate). Use %LT
020550: 52 41 43 45 0D 0A 20 20 20 20 20 20 6F 72 20 24 RACE.. or $
020560: 4C 20 77 68 65 6E 20 63 6F 6D 70 69 6C 69 6E 67 L when compiling
020570: 20 74 68 65 20 70 72 6F 67 72 61 6D 20 74 6F 20 the program to
020580: 61 6C 6C 6F 77 20 20 65 78 65 63 75 74 69 6F 6E allow execution
020590: 20 20 69 6E 74 65 72 72 75 70 74 73 20 20 61 6E interrupts an
0205A0: 64 0D 0A 20 20 20 20 20 20 61 6C 73 6F 20 65 72 d.. also er
0205B0: 72 6F 72 20 64 69 61 67 6E 6F 73 74 69 63 73 20 ror diagnostics
0205C0: 77 69 74 68 20 6C 69 6E 65 20 6E 75 6D 62 65 72 with line number
0205D0: 73 2E 0D 0A 1A 0A 20 20 20 20 20 20 6F 72 20 24 s..... or $
0205E0: 4C 20 77 68 65 6E 20 63 6F 6D 70 69 6C 69 6E 67 L when compiling
0205F0: 20 74 68 65 20 70 72 6F 67 72 61 6D 20 74 6F 20 the program to
020600: E8 EC 70 EF BA 53 36 03 5B DD A6 0C 4C 09 88 C4 ..p..S6.[...L...
020610: 60 8D 5E 52 24 D8 1E 9D B2 19 C9 1A 8A 50 AD 31 `.^R$........P.1
020620: D6 74 90 A2 74 8C 3E C0 4D B8 22 74 4A 9A 0A B1 .t..t.>.M."tJ...
020630: D2 6D CA 98 12 74 6D 99 29 0F C0 45 37 CC AF 3B .m...tm.)..E7..;
020640: 65 33 6C 44 B2 6F 68 6B 23 21 12 83 35 D0 4B 8A e3lD.ohk#!..5.K.
020650: 04 D8 DE 07 B8 49 A7 6C 06 92 35 14 01 D5 1A 63 .....I.l..5....c
020660: 4D 07 B4 0D 20 26 03 59 6F 0D 20 8A C0 1A 53 82 M... &.Yo. ...S.
020670: AE 2D 33 E5 01 B8 E8 EC A0 F4 36 42 4C F6 01 6E .-3.......6BL..n
020680: 72 DA D9 A1 E8 D4 D6 26 A2 68 C3 62 0D B8 22 98 r......&.h.b..".
020690: B6 9E 92 82 EE 81 64 0D 45 40 4C 06 4C 5B 4F 49 ......d.E@L.L[OI
0206A0: 01 BA 07 4A 25 4A 0A 93 8A 3E C0 4D A4 28 1D 23 ...J%J...>.M.(.#
0206B0: B8 22 4C 75 9E 43 F7 E0 8A D0 24 CD B0 1C 29 F5 ."Lu.C....$...).
0206C0: 38 AC AD 69 23 B4 A1 A3 C1 07 1F E0 1E AE 2B 02 8..i#..£......+.
0206D0: 4C 5B 4F 49 01 BA 87 D2 DB 08 31 19 45 A7 B6 36 L[OI......1.E..6
0206E0: 11 B1 D2 6D CA 30 5A D5 92 D2 1C 53 42 B6 67 36 ...m.0Z....SB.g6
0206F0: DA 69 22 4C E7 3E C0 4D EE 76 03 F0 3C 69 46 B4 .i"L.>.M.v..<iF.
020700: 69 6C 65 2C 20 75 73 65 20 20 62 69 6E 61 72 79 ile, use binary
020710: 20 20 69 6E 20 20 74 68 65 20 20 72 65 73 65 74 in the reset
020720: 20 20 6F 66 20 20 6F 70 65 6E 0D 0A 20 20 20 20 of open..
020730: 20 20 73 74 61 74 65 6D 65 6E 74 2E 0D 0A 0D 0A statement.....
020740: 20 20 20 20 35 2E 20 20 20 52 65 61 64 69 6E 67 5. Reading
020750: 20 20 66 72 6F 6D 20 20 61 20 20 66 69 6C 65 20 from a file
020760: 20 69 6E 20 20 62 69 6E 61 72 79 20 20 6D 6F 64 in binary mod
020770: 65 2C 20 20 65 6E 64 20 20 6F 66 20 66 69 6C 65 e, end of file
020780: 20 69 73 20 68 61 72 64 20 74 6F 0D 0A 20 20 20 is hard to..
020790: 20 20 20 64 65 74 65 72 6D 69 6E 65 2E 2E 2E 0D determine....
0207A0: 0A 20 20 20 20 20 20 43 6F 6E 74 72 6F 6C 2D 5A . Control-Z
0207B0: 20 28 31 61 68 29 20 6D 61 72 6B 73 20 74 68 65 (1ah) marks the
0207C0: 20 65 6E 64 20 6F 66 20 61 20 74 65 78 74 20 66 end of a text f
0207D0: 69 6C 65 20 28 75 6E 6C 65 73 73 20 74 68 65 20 ile (unless the
0207E0: 72 65 61 6C 20 65 6E 64 20 20 6F 66 0D 0A 20 20 real end of..
0207F0: 20 20 20 20 66 69 6C 65 20 20 6F 6E 20 20 61 20 file on a
020800: 20 31 32 38 20 20 62 79 74 65 20 20 62 6F 75 6E 128 byte boun
020810: 64 61 72 79 20 20 6F 63 63 75 72 73 29 2E 20 20 dary occurs).
020820: 20 54 65 73 74 20 20 66 6F 72 20 62 6F 74 68 20 Test for both
020830: 63 68 61 72 61 63 74 65 72 0D 0A 20 20 20 20 20 character..
020840: 20 3D 43 48 52 28 32 36 29 20 61 6E 64 20 45 4F =CHR(26) and EO
020850: 46 2E 20 20 46 6F 72 20 62 69 6E 61 72 79 20 72 F. For binary r
020860: 65 63 6F 72 64 73 2C 20 61 20 73 70 65 63 69 61 ecords, a specia
020870: 6C 20 72 65 63 6F 72 64 20 63 6F 6E 73 69 73 74 l record consist
020880: 69 6E 67 20 6F 66 0D 0A 20 20 20 20 20 20 61 6C ing of.. al
020890: 6C 20 32 35 35 20 28 30 66 66 68 29 20 6F 72 20 l 255 (0ffh) or
0208A0: 61 6C 6C 20 45 4F 46 27 73 20 28 31 61 68 29 20 all EOF's (1ah)
0208B0: 6D 61 79 20 62 65 20 6E 65 65 64 65 64 20 74 6F may be needed to
0208C0: 20 6D 61 72 6B 20 20 74 68 65 20 20 65 6E 64 20 mark the end
0208D0: 20 6F 66 0D 0A 20 20 20 20 20 20 74 68 65 20 66 of.. the f
0208E0: 69 6C 65 2C 20 73 69 6E 63 65 20 43 50 2F 4D 20 ile, since CP/M
0208F0: 6F 6E 6C 79 20 6B 65 65 70 73 20 74 72 61 63 6B only keeps track
020900: 19 E5 21 01 00 EB E1 73 C3 64 88 21 01 00 E5 21 ..!....s.d.!...!
020910: 58 8B 5E 23 56 EB 11 39 00 19 5E 23 56 D5 D1 E1 X.^#V..9..^#V...
020920: 2B E5 D5 22 69 88 D1 E1 23 E5 D5 CD A9 8B 22 6B +.."i...#....."k
020930: 88 2A 69 88 23 22 69 88 2A 6B 88 2B 22 6B 88 7C .*i.#"i.*k.+"k.|
020940: B5 CA 4D 88 21 58 8B 5E 23 56 EB 22 6D 88 2A 6D ..M.!X.^#V."m.*m
020950: 88 11 3F 00 19 16 00 5E D5 21 80 00 E5 CD 7B 90 ..?....^.!....{.
020960: F1 D2 CF 87 2A 6D 88 11 3F 00 19 E5 21 00 00 EB ....*m..?...!...
020970: E1 73 2A 6D 88 11 41 00 19 16 00 5E EB 7D 2F 1F .s*m..A....^.}/.
020980: D2 CF 87 21 1A 00 E5 2A 6D 88 11 42 00 19 E5 CD ...!...*m..B....
020990: 6D 8F E1 22 67 88 21 56 8B E5 21 14 00 E5 2A 6D m.."g.!V..!...*m
0209A0: 88 11 11 00 19 E5 CD 6D 8F E1 EB E1 73 23 72 21 .......m....s#r!
0209B0: 56 8B 5E 23 56 D5 21 00 00 E5 CD C3 90 F1 D2 CF V.^#V.!.........
0209C0: 87 2A 6D 88 11 41 00 19 E5 21 01 00 EB E1 73 2A .*m..A...!....s*
0209D0: 6D 88 11 41 00 19 7E 1F D2 0C 88 2A 65 88 E5 21 m..A..~....*e..!
0209E0: FF 00 EB E1 73 2A 6D 88 11 3C 00 19 E5 21 01 00 ....s*m..<...!..
0209F0: EB E1 73 2A 6D 88 11 36 00 19 E5 21 00 00 EB E1 ..s*m..6...!....
020A00: 73 23 72 CD 70 8F C3 64 88 C3 2C 88 2A 65 88 E5 s#r.p..d..,.*e..
020A10: 2A 6D 88 11 42 00 19 E5 2A 6D 88 11 3F 00 19 16 *m..B...*m..?...
020A20: 00 5E EB D1 19 16 00 5E EB EB E1 73 2A 6D 88 11 .^.....^...s*m..
020A30: 3F 00 19 E5 2A 6D 88 11 3F 00 19 16 00 5E EB 23 ?...*m..?....^.#
020A40: EB E1 73 2A 65 88 23 22 65 88 C3 31 87 21 58 8B ..s*e.#"e..1.!X.
020A50: 5E 23 56 EB 11 36 00 19 E5 21 00 00 EB E1 73 23 ^#V..6...!....s#
020A60: 72 CD 70 8F C9 00 00 00 00 00 00 00 00 00 00 C3 r.p.............
020A70: 00 00 C3 78 88 C3 1A 89 CD 4E 8C E1 7D 32 31 8B ...x.....N..}21.
020A80: CD 54 8C 21 58 8B 5E 23 56 EB 22 3D 8B 2A 3D 8B .T.!X.^#V."=.*=.
020A90: 11 3F 00 19 16 00 5E D5 21 80 00 E5 CD 7B 90 F1 .?....^.!....{..
020AA0: D2 E3 88 21 56 8B E5 21 1A 00 E5 2A 3D 8B 11 42 ...!V..!...*=..B
020AB0: 00 19 E5 CD 6D 8F E1 EB E1 73 23 72 21 56 8B E5 ....m....s#r!V..
020AC0: 21 15 00 E5 2A 3D 8B 11 11 00 19 E5 CD 6D 8F E1 !...*=.......m..
020AD0: EB E1 73 23 72 2A 3D 8B 11 3F 00 19 E5 21 00 00 ..s#r*=..?...!..
020AE0: EB E1 73 2A 3D 8B 11 42 00 19 E5 2A 3D 8B 11 3F ..s*=..B...*=..?
020AF0: 00 19 16 00 5E EB D1 19 E5 3A 31 8B 26 00 6F EB ....^....:1.&.o.
020B00: 20 6F 66 20 31 32 38 2D 62 79 74 65 20 73 65 63 of 128-byte sec
020B10: 74 6F 72 73 2E 0D 0A 0D 0A 20 20 20 20 36 2E 20 tors..... 6.
020B20: 20 45 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 External proced
020B30: 75 72 65 73 20 67 65 74 20 61 6C 6C 20 6D 69 78 ures get all mix
020B40: 65 64 20 75 70 2E 2E 2E 0D 0A 20 20 20 20 20 20 ed up.....
020B50: 44 65 63 6C 61 72 65 20 65 78 74 65 72 6E 61 6C Declare external
020B60: 20 70 72 6F 63 65 64 75 72 65 73 20 70 72 6F 70 procedures prop
020B70: 65 72 6C 79 2E 20 20 57 68 65 6E 20 65 78 74 65 erly. When exte
020B80: 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 73 20 rnal procedures
020B90: 72 65 66 65 72 0D 0A 20 20 20 20 20 20 74 6F 20 refer.. to
020BA0: 20 6F 74 68 65 72 20 65 78 74 65 72 6E 61 6C 20 other external
020BB0: 70 72 6F 63 65 64 75 72 65 73 2C 20 74 68 65 20 procedures, the
020BC0: 64 65 63 6C 61 72 61 74 69 6F 6E 20 6F 72 64 65 declaration orde
020BD0: 72 20 63 6F 75 6E 74 20 6D 75 73 74 20 6D 61 74 r count must mat
020BE0: 63 68 0D 0A 20 20 20 20 20 20 74 68 6F 73 65 20 ch.. those
020BF0: 69 6E 20 74 68 65 20 6D 61 69 6E 20 70 72 6F 67 in the main prog
020C00: 72 61 6D 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ram:....
020C10: 20 20 20 20 20 20 49 66 20 79 6F 75 72 20 6D 61 If your ma
020C20: 69 6E 20 68 61 73 0D 0A 0D 0A 20 20 20 20 20 20 in has....
020C30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
020C40: 46 55 4E 43 54 49 4F 4E 20 43 4F 53 28 52 20 3A FUNCTION COS(R :
020C50: 20 52 45 41 4C 29 3A 20 52 45 41 4C 3B 20 45 58 REAL): REAL; EX
020C60: 54 45 52 4E 3B 0D 0A 20 20 20 20 20 20 20 20 20 TERN;..
020C70: 20 20 20 20 20 20 20 20 20 20 20 20 20 46 55 4E FUN
020C80: 43 54 49 4F 4E 20 53 49 4E 28 52 20 3A 20 52 45 CTION SIN(R : RE
020C90: 41 4C 29 3A 20 52 45 41 4C 3B 20 45 58 54 45 52 AL): REAL; EXTER
020CA0: 4E 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 N;....
020CB0: 20 20 20 20 61 6E 64 20 79 6F 75 72 20 65 78 70 and your exp
020CC0: 72 6F 63 20 68 61 73 20 64 65 63 6C 61 72 65 64 roc has declared
020CD0: 20 6F 6E 6C 79 0D 0A 0D 0A 20 20 20 20 20 20 20 only....
020CE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 F
020CF0: 55 4E 43 54 49 4F 4E 20 53 49 4E 28 52 20 3A 20 UNCTION SIN(R :
020D00: 20 20 20 20 20 20 31 34 2E 20 20 20 45 78 74 65 14. Exte
020D10: 6E 64 65 64 20 43 41 53 45 20 73 74 61 74 65 6D nded CASE statem
020D20: 65 6E 74 0D 0A 0D 0A 20 20 20 20 20 20 46 6F 72 ent.... For
020D30: 6D 61 74 0D 0A 0D 0A 20 20 20 20 20 20 43 41 53 mat.... CAS
020D40: 45 20 73 65 6C 65 63 74 6F 72 5F 65 78 70 72 65 E selector_expre
020D50: 73 73 69 6F 6E 20 4F 46 0D 0A 20 20 20 20 20 20 ssion OF..
020D60: 6C 61 62 65 6C 5F 65 78 70 72 65 73 73 69 6F 6E label_expression
020D70: 20 2E 2E 2E 20 2C 20 6C 61 62 65 6C 5F 65 78 70 ... , label_exp
020D80: 72 65 73 73 69 6F 6E 20 3A 20 73 74 61 74 65 6D ression : statem
020D90: 65 6E 74 3B 0D 0A 20 20 20 20 20 20 20 2E 2E 2E ent;.. ...
020DA0: 0D 0A 20 20 20 20 20 20 20 2E 2E 2E 0D 0A 20 20 .. .....
020DB0: 20 20 20 20 45 4C 53 45 20 3A 20 73 74 61 74 65 ELSE : state
020DC0: 6D 65 6E 74 3B 0D 0A 20 20 20 20 20 20 45 4E 44 ment;.. END
020DD0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 .... T
020DE0: 68 65 20 20 43 41 53 45 20 20 73 74 61 74 65 6D he CASE statem
020DF0: 65 6E 74 20 69 73 20 75 73 65 64 20 74 6F 20 73 ent is used to s
020E00: 65 6C 65 63 74 20 6F 6E 65 20 6F 66 20 73 65 76 elect one of sev
020E10: 65 72 61 6C 20 73 74 61 74 65 6D 65 6E 74 73 0D eral statements.
020E20: 0A 20 20 20 20 20 20 66 6F 72 20 65 78 65 63 75 . for execu
020E30: 74 69 6F 6E 20 62 61 73 65 64 20 6F 6E 20 74 68 tion based on th
020E40: 65 20 76 61 6C 75 65 20 20 6F 66 20 20 74 68 65 e value of the
020E50: 20 20 73 65 6C 65 63 74 6F 72 5F 65 78 70 72 65 selector_expre
020E60: 73 73 69 6F 6E 2E 20 20 20 54 68 65 0D 0A 20 20 ssion. The..
020E70: 20 20 20 20 73 65 6C 65 63 74 6F 72 5F 65 78 70 selector_exp
020E80: 72 65 73 73 69 6F 6E 20 61 6E 64 20 74 68 65 20 ression and the
020E90: 6C 61 62 65 6C 5F 65 78 70 72 65 73 73 69 6F 6E label_expression
020EA0: 20 6D 75 73 74 20 62 65 20 63 6F 6D 70 61 74 69 must be compati
020EB0: 62 69 6C 65 20 64 61 74 61 0D 0A 20 20 20 20 20 bile data..
020EC0: 20 74 79 70 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 types.....
020ED0: 20 20 20 20 20 20 54 68 65 20 20 6C 61 62 65 6C The label
020EE0: 5F 65 78 70 72 65 73 73 69 6F 6E 73 20 20 61 72 _expressions ar
020EF0: 65 20 20 65 76 61 6C 75 61 74 65 64 20 20 73 65 e evaluated se
020F00: 52 45 41 4C 29 3A 20 52 45 41 4C 3B 20 45 58 54 REAL): REAL; EXT
020F10: 45 52 4E 3B 0D 0A 0D 0A 20 20 20 20 20 20 6C 6F ERN;.... lo
020F20: 20 61 6E 64 20 62 65 68 6F 6C 64 2C 20 74 68 65 and behold, the
020F30: 20 65 78 70 72 6F 63 20 77 69 6C 6C 20 67 65 74 exproc will get
020F40: 20 61 20 76 61 6C 75 65 20 6F 66 20 31 2E 30 20 a value of 1.0
020F50: 69 66 20 69 74 20 70 61 73 73 65 73 20 30 2E 30 if it passes 0.0
020F60: 20 74 6F 0D 0A 20 20 20 20 20 20 77 68 61 74 20 to.. what
020F70: 69 74 20 74 68 69 6E 6B 73 20 69 73 20 53 49 4E it thinks is SIN
020F80: 2E 20 20 54 68 65 20 65 78 70 72 6F 63 20 77 69 . The exproc wi
020F90: 6C 6C 20 20 68 61 76 65 20 20 61 63 74 75 61 6C ll have actual
020FA0: 6C 79 20 20 63 61 6C 6C 65 64 20 20 43 4F 53 2E ly called COS.
020FB0: 0D 0A 20 20 20 20 20 20 49 6E 74 65 72 6E 61 6C .. Internal
020FC0: 6C 79 2C 20 65 78 74 65 72 6E 61 6C 20 70 72 6F ly, external pro
020FD0: 63 65 64 75 72 65 73 20 72 65 66 65 72 20 74 6F cedures refer to
020FE0: 20 6F 74 68 65 72 20 65 78 74 65 72 6E 61 6C 20 other external
020FF0: 70 72 6F 63 65 64 75 72 65 73 20 62 79 0D 0A 20 procedures by..
021000: 20 20 20 20 20 6E 75 6D 62 65 72 2E 20 20 20 27 number. '
021010: 44 75 6D 6D 79 27 20 20 64 65 63 6C 61 72 61 74 Dummy' declarat
021020: 69 6F 6E 73 20 73 75 63 68 20 61 73 20 50 52 4F ions such as PRO
021030: 43 45 44 55 52 45 20 58 31 3B 20 45 58 54 45 52 CEDURE X1; EXTER
021040: 4E 3B 20 20 63 61 6E 20 62 65 0D 0A 20 20 20 20 N; can be..
021050: 20 20 75 73 65 64 20 61 73 20 70 6C 61 63 65 20 used as place
021060: 68 6F 6C 64 65 72 73 2C 20 61 73 20 6C 6F 6E 67 holders, as long
021070: 20 61 73 20 74 68 65 20 6E 61 6D 65 73 20 20 61 as the names a
021080: 72 65 20 20 75 6E 69 71 75 65 2E 20 20 20 54 68 re unique. Th
021090: 65 20 20 6E 61 6D 65 0D 0A 20 20 20 20 20 20 75 e name.. u
0210A0: 73 65 64 20 20 69 6E 20 74 68 65 20 4D 41 49 4E sed in the MAIN
0210B0: 20 70 72 6F 67 72 61 6D 20 77 69 6C 6C 20 62 65 program will be
0210C0: 20 75 73 65 64 20 74 6F 20 66 69 6E 64 20 74 68 used to find th
0210D0: 65 20 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 e external proce
0210E0: 64 75 72 65 0D 0A 20 20 20 20 20 20 6F 6E 20 74 dure.. on t
0210F0: 68 65 20 64 69 73 6B 2E 0D 0A 0D 0A 20 20 20 20 he disk.....
021100: 71 75 65 6E 74 69 61 6C 6C 79 2E 20 20 49 66 20 quentially. If
021110: 6F 6E 65 20 69 73 0D 0A 20 20 20 20 20 20 66 6F one is.. fo
021120: 75 6E 64 20 65 71 75 61 6C 20 74 6F 20 74 68 65 und equal to the
021130: 20 73 65 6C 65 63 74 6F 72 2C 20 74 68 65 20 63 selector, the c
021140: 6F 72 72 65 73 70 6F 6E 64 69 6E 67 20 73 74 61 orresponding sta
021150: 74 65 6D 65 6E 74 20 69 73 20 65 78 65 63 75 74 tement is execut
021160: 65 64 2E 0D 0A 20 20 20 20 20 20 49 66 20 6E 6F ed... If no
021170: 6E 65 20 61 72 65 20 20 65 71 75 61 6C 2C 20 20 ne are equal,
021180: 74 68 65 6E 20 20 74 68 65 20 20 6F 70 74 69 6F then the optio
021190: 6E 61 6C 20 20 45 4C 53 45 20 20 63 6C 61 75 73 nal ELSE claus
0211A0: 65 20 20 73 74 61 74 65 6D 65 6E 74 20 20 69 73 e statement is
0211B0: 0D 0A 20 20 20 20 20 20 65 78 65 63 75 74 65 64 .. executed
0211C0: 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
0211D0: 54 68 65 20 20 45 4C 53 45 20 20 63 6C 61 75 73 The ELSE claus
0211E0: 65 20 20 69 73 20 20 61 20 20 4A 52 54 20 20 50 e is a JRT P
0211F0: 61 73 63 61 6C 20 65 78 74 65 6E 73 69 6F 6E 2E ascal extension.
021200: 20 20 41 6C 73 6F 2C 20 73 74 61 6E 64 61 72 64 Also, standard
021210: 0D 0A 20 20 20 20 20 20 50 61 73 63 61 6C 20 61 .. Pascal a
021220: 6C 6C 6F 77 73 20 6F 6E 6C 79 20 63 6F 6E 73 74 llows only const
021230: 61 6E 74 73 20 61 73 20 6C 61 62 65 6C 73 2C 20 ants as labels,
021240: 77 68 69 6C 65 20 65 78 70 72 65 73 73 69 6F 6E while expression
021250: 73 20 61 72 65 20 61 6C 6C 6F 77 65 64 0D 0A 20 s are allowed..
021260: 20 20 20 20 20 62 79 20 4A 52 54 20 50 61 73 63 by JRT Pasc
021270: 61 6C 2E 20 4E 6F 74 20 6D 6F 72 65 20 74 68 61 al. Not more tha
021280: 6E 20 31 32 38 20 6C 61 62 65 6C 20 63 6C 61 75 n 128 label clau
021290: 73 65 73 20 20 61 72 65 20 20 61 6C 6C 6F 77 65 ses are allowe
0212A0: 64 20 20 69 6E 20 20 6F 6E 65 0D 0A 20 20 20 20 d in one..
0212B0: 20 20 43 41 53 45 20 20 73 74 61 74 65 6D 65 6E CASE statemen
0212C0: 74 2E 20 20 20 4E 6F 74 20 20 6D 6F 72 65 20 20 t. Not more
0212D0: 74 68 61 6E 20 20 31 32 38 20 20 6C 61 62 65 6C than 128 label
0212E0: 73 20 20 70 65 72 20 6C 61 62 65 6C 20 63 6C 61 s per label cla
0212F0: 75 73 65 20 61 72 65 0D 0A 20 20 20 20 20 20 61 use are.. a
021300: 37 2E 20 20 56 61 6C 75 65 73 20 61 72 65 20 6E 7. Values are n
021310: 6F 74 20 20 72 65 74 75 72 6E 65 64 20 20 63 6F ot returned co
021320: 72 72 65 63 74 6C 79 20 20 66 72 6F 6D 20 20 65 rrectly from e
021330: 78 74 65 72 6E 61 6C 20 20 66 75 6E 63 74 69 6F xternal functio
021340: 6E 73 20 20 28 6F 72 0D 0A 20 20 20 20 20 20 61 ns (or.. a
021350: 72 67 75 6D 65 6E 74 73 20 61 72 65 20 6E 6F 74 rguments are not
021360: 20 70 61 73 73 65 64 20 63 6F 72 72 65 63 74 6C passed correctl
021370: 79 20 74 6F 20 65 78 74 65 72 6E 61 6C 20 70 72 y to external pr
021380: 6F 63 65 64 75 72 65 73 29 2E 2E 2E 0D 0A 20 20 ocedures).....
021390: 20 20 20 20 4D 61 6B 65 20 20 73 75 72 65 20 20 Make sure
0213A0: 74 68 65 20 64 65 63 6C 61 72 61 74 69 6F 6E 20 the declaration
0213B0: 6F 66 20 61 72 67 75 6D 65 6E 74 73 20 69 6E 20 of arguments in
0213C0: 74 68 65 20 63 61 6C 6C 69 6E 67 20 70 72 6F 67 the calling prog
0213D0: 72 61 6D 20 6D 61 74 63 68 0D 0A 20 20 20 20 20 ram match..
0213E0: 20 74 68 6F 73 65 20 69 6E 20 74 68 65 20 65 78 those in the ex
0213F0: 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 ternal procedure
021400: 2E 20 20 49 66 20 61 20 56 41 52 20 20 69 73 20 . If a VAR is
021410: 20 6D 69 73 73 69 6E 67 20 20 69 6E 20 20 6F 6E missing in on
021420: 65 20 20 61 6E 64 0D 0A 20 20 20 20 20 20 70 72 e and.. pr
021430: 65 73 65 6E 74 20 69 6E 20 61 6E 6F 74 68 65 72 esent in another
021440: 2C 20 79 6F 75 20 63 6F 75 6C 64 20 68 61 76 65 , you could have
021450: 20 74 72 6F 75 62 6C 65 2E 0D 0A 0D 0A 20 20 20 trouble.....
021460: 20 38 2E 20 20 20 43 6F 6E 74 72 6F 6C 2D 43 20 8. Control-C
021470: 20 64 6F 65 73 20 20 6E 6F 74 20 73 74 6F 70 20 does not stop
021480: 61 20 70 72 6F 67 72 61 6D 20 28 6F 72 20 63 6F a program (or co
021490: 6E 74 72 6F 6C 2D 4E 20 64 6F 65 73 20 6E 6F 74 ntrol-N does not
0214A0: 20 73 74 6F 70 20 69 74 0D 0A 20 20 20 20 20 20 stop it..
0214B0: 65 69 74 68 65 72 29 2E 2E 2E 0D 0A 20 20 20 20 either).....
0214C0: 20 20 55 73 65 20 63 6F 6E 74 72 6F 6C 2D 4E 20 Use control-N
0214D0: 74 6F 20 63 61 75 73 65 20 61 6E 20 65 78 65 63 to cause an exec
0214E0: 75 74 69 6F 6E 20 69 6E 74 65 72 72 75 70 74 20 ution interrupt
0214F0: 28 79 6F 75 20 20 63 61 6E 20 20 65 69 74 68 65 (you can eithe
021500: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
021510: 1C 00 00 00 02 09 2A E5 1C 00 C1 02 00 00 00 02 ......*.........
021520: 1C 00 C6 02 00 00 00 02 1C 00 C2 02 00 00 00 02 ................
021530: 1C 00 C7 02 00 00 00 02 1C 00 C3 02 00 00 00 02 ................
021540: 1C 00 C8 02 00 00 00 02 1C 00 C4 02 00 00 00 02 ................
021550: 1C 00 C9 02 00 00 00 02 1C 00 C5 02 00 00 00 02 ................
021560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021600: 6C 6C 6F 77 65 64 2E 20 20 54 68 65 20 73 74 61 llowed. The sta
021610: 74 65 6D 65 6E 74 73 20 73 68 6F 75 6C 64 20 62 tements should b
021620: 65 20 20 66 6F 6C 6C 6F 77 65 64 20 20 62 79 20 e followed by
021630: 20 61 20 20 73 65 6D 69 63 6F 6C 6F 6E 2E 20 20 a semicolon.
021640: 20 54 68 65 0D 0A 20 20 20 20 20 20 73 65 6D 69 The.. semi
021650: 63 6F 6C 6F 6E 20 69 73 20 6F 70 74 69 6F 6E 61 colon is optiona
021660: 6C 20 6F 6E 20 74 68 65 20 6C 61 73 74 20 73 74 l on the last st
021670: 61 74 65 6D 65 6E 74 20 69 6E 20 74 68 65 20 43 atement in the C
021680: 41 53 45 20 73 74 61 74 65 6D 65 6E 74 2E 0D 0A ASE statement...
021690: 0D 0A 20 20 20 20 20 20 45 78 61 6D 70 6C 65 73 .. Examples
0216A0: 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 :....
0216B0: 20 43 41 53 45 20 49 20 4F 46 0D 0A 20 20 20 20 CASE I OF..
0216C0: 20 20 20 20 20 20 20 20 32 20 3A 20 57 52 49 54 2 : WRIT
0216D0: 45 4C 4E 28 27 49 20 49 53 20 32 27 29 3B 0D 0A ELN('I IS 2');..
0216E0: 20 20 20 20 20 20 20 20 20 20 20 20 34 20 3A 20 4 :
0216F0: 57 52 49 54 45 4C 4E 28 27 49 20 49 53 20 34 27 WRITELN('I IS 4'
021700: 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 );..
021710: 45 4C 53 45 20 3A 20 57 52 49 54 45 4C 4E 28 27 ELSE : WRITELN('
021720: 49 20 49 53 20 4E 4F 54 20 32 20 4F 52 20 34 27 I IS NOT 2 OR 4'
021730: 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 );..
021740: 45 4E 44 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 END;....
021750: 20 20 20 20 43 41 53 45 20 4C 41 4E 47 55 41 47 CASE LANGUAG
021760: 45 20 4F 46 20 20 20 20 20 20 20 20 28 2A 20 53 E OF (* S
021770: 54 52 49 4E 47 20 45 58 50 52 45 53 53 49 4F 4E TRING EXPRESSION
021780: 20 2A 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 *)..
021790: 20 27 50 41 53 43 41 4C 27 20 20 20 20 3A 20 59 'PASCAL' : Y
0217A0: 45 41 52 20 3A 3D 20 31 39 37 30 3B 0D 0A 20 20 EAR := 1970;..
0217B0: 20 20 20 20 20 20 20 20 20 20 27 50 4C 2F 49 27 'PL/I'
0217C0: 20 20 20 20 20 20 3A 20 59 45 41 52 20 3A 3D 20 : YEAR :=
0217D0: 31 39 36 34 3B 0D 0A 20 20 20 20 20 20 20 20 20 1964;..
0217E0: 20 20 20 27 42 41 53 49 43 27 20 20 20 20 20 3A 'BASIC' :
0217F0: 20 59 45 41 52 20 3A 3D 20 31 39 36 35 3B 0D 0A YEAR := 1965;..
021800: 65 64 75 72 65 20 20 47 4F 54 4F 58 59 20 20 69 edure GOTOXY i
021810: 6E 0D 0A 20 20 20 20 20 20 74 68 65 20 43 52 54 n.. the CRT
021820: 4D 41 50 2E 50 41 53 20 66 69 6C 65 2E 20 20 54 MAP.PAS file. T
021830: 68 65 20 73 63 72 65 65 6E 20 63 6C 65 61 72 20 he screen clear
021840: 63 6F 64 65 20 69 73 20 70 72 6F 63 65 64 75 72 code is procedur
021850: 65 20 43 4C 45 41 52 2E 0D 0A 0D 0A 20 20 20 20 e CLEAR.....
021860: 20 20 20 20 20 20 20 50 72 6F 63 65 64 75 72 65 Procedure
021870: 20 20 50 41 52 54 32 20 20 66 72 6F 6D 20 43 52 PART2 from CR
021880: 54 4D 41 50 2E 50 41 53 20 69 73 20 72 65 70 72 TMAP.PAS is repr
021890: 6F 64 75 63 65 64 20 68 65 72 65 2E 20 20 54 68 oduced here. Th
0218A0: 69 73 20 63 6F 64 65 0D 0A 20 20 20 20 20 20 67 is code.. g
0218B0: 65 6E 65 72 61 74 65 73 20 22 70 61 72 74 32 22 enerates "part2"
0218C0: 20 6F 66 20 74 68 65 20 20 67 65 6E 65 72 61 74 of the generat
0218D0: 65 64 20 20 65 78 74 65 72 6E 61 6C 20 20 70 72 ed external pr
0218E0: 6F 63 65 64 75 72 65 2E 20 20 20 54 68 65 20 20 ocedure. The
0218F0: 6C 69 6E 65 0D 0A 20 20 20 20 20 20 6D 61 72 6B line.. mark
021900: 65 64 20 20 58 58 58 20 20 63 6F 6E 74 61 69 6E ed XXX contain
021910: 73 20 74 68 65 20 74 65 72 6D 69 6E 61 6C 20 63 s the terminal c
021920: 6F 64 65 73 20 66 6F 72 20 63 6C 65 61 72 69 6E odes for clearin
021930: 67 20 74 68 65 20 43 52 54 20 73 63 72 65 65 6E g the CRT screen
021940: 2E 0D 0A 20 20 20 20 20 20 54 68 65 20 6C 69 6E ... The lin
021950: 65 20 6D 61 72 6B 65 64 20 59 59 59 20 63 6F 6E e marked YYY con
021960: 74 61 69 6E 73 20 74 68 65 20 74 65 72 6D 69 6E tains the termin
021970: 61 6C 20 63 6F 64 65 73 20 66 6F 72 20 6D 6F 76 al codes for mov
021980: 69 6E 67 20 74 68 65 20 63 75 72 73 6F 72 0D 0A ing the cursor..
021990: 20 20 20 20 20 20 74 6F 20 61 20 70 61 72 74 69 to a parti
0219A0: 63 75 6C 61 72 20 70 6F 73 69 74 69 6F 6E 2E 0D cular position..
0219B0: 0A 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 64 75 ... procedu
0219C0: 72 65 20 70 61 72 74 32 3B 0D 0A 20 20 20 20 20 re part2;..
0219D0: 20 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 77 72 begin.. wr
0219E0: 69 74 65 6C 6E 28 66 32 3B 20 27 70 72 6F 63 65 iteln(f2; 'proce
0219F0: 64 75 72 65 20 63 6C 65 61 72 3B 27 29 3B 0D 0A dure clear;');..
021A00: 20 20 20 20 20 20 20 20 20 20 20 20 45 4E 44 3B END;
021A10: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
021A20: 28 2A 20 45 58 41 4D 50 4C 45 20 4F 46 20 45 58 (* EXAMPLE OF EX
021A30: 50 52 45 53 53 49 4F 4E 53 20 49 4E 20 4C 41 42 PRESSIONS IN LAB
021A40: 45 4C 53 20 2A 29 0D 0A 20 20 20 20 20 20 20 20 ELS *)..
021A50: 20 20 20 20 43 41 53 45 20 41 4E 47 4C 45 20 4F CASE ANGLE O
021A60: 46 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 50 F.. P
021A70: 48 49 20 20 20 20 20 20 20 20 20 3A 20 57 52 49 HI : WRI
021A80: 54 45 4C 4E 28 27 50 48 49 27 29 3B 0D 0A 20 20 TELN('PHI');..
021A90: 20 20 20 20 20 20 20 20 20 20 32 2E 30 20 2A 20 2.0 *
021AA0: 50 48 49 20 20 20 3A 20 57 52 49 54 45 4C 4E 28 PHI : WRITELN(
021AB0: 27 54 57 4F 20 50 48 49 27 29 3B 0D 0A 20 20 20 'TWO PHI');..
021AC0: 20 20 20 20 20 20 20 20 20 33 2E 30 20 2A 20 50 3.0 * P
021AD0: 48 49 20 20 20 3A 20 57 52 49 54 45 4C 4E 28 27 HI : WRITELN('
021AE0: 54 48 52 45 45 20 50 48 49 27 29 3B 0D 0A 20 20 THREE PHI');..
021AF0: 20 20 20 20 20 20 20 20 20 20 45 4C 53 45 20 20 ELSE
021B00: 20 20 20 20 20 20 3A 20 57 52 49 54 45 4C 4E 28 : WRITELN(
021B10: 27 41 4E 47 4C 45 20 4E 4F 54 20 4F 4E 20 4E 4F 'ANGLE NOT ON NO
021B20: 44 45 27 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 DE');..
021B30: 20 20 20 45 4E 44 3B 0D 0A 0D 0A 20 20 20 20 20 END;....
021B40: 20 20 20 20 20 20 20 28 2A 20 45 58 41 4D 50 4C (* EXAMPL
021B50: 45 20 4F 46 20 42 4F 4F 4C 45 41 4E 20 53 45 4C E OF BOOLEAN SEL
021B60: 45 43 54 4F 52 20 41 4E 44 20 4C 41 42 45 4C 20 ECTOR AND LABEL
021B70: 45 58 50 52 45 53 53 49 4F 4E 53 20 2A 29 0D 0A EXPRESSIONS *)..
021B80: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 28 2A .. (*
021B90: 20 43 48 45 43 4B 20 56 4F 4C 54 41 47 45 20 56 CHECK VOLTAGE V
021BA0: 20 46 4F 52 20 56 41 4C 49 44 20 52 41 4E 47 45 FOR VALID RANGE
021BB0: 20 2A 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 *)..
021BC0: 20 43 41 53 45 20 54 52 55 45 20 4F 46 20 0D 0A CASE TRUE OF ..
021BD0: 20 20 20 20 20 20 20 20 20 20 20 20 28 56 20 3E (V >
021BE0: 20 32 2E 35 29 20 41 4E 44 20 28 56 20 3C 20 34 2.5) AND (V < 4
021BF0: 2E 33 29 20 20 20 20 20 20 20 3A 20 50 52 4F 43 .3) : PROC
021C00: 20 20 20 20 20 20 77 72 69 74 65 6C 6E 28 66 32 writeln(f2
021C10: 3B 20 27 62 65 67 69 6E 27 29 3B 0D 0A 20 20 20 ; 'begin');..
021C20: 20 20 20 77 72 69 74 65 6C 6E 28 66 32 3B 20 27 writeln(f2; '
021C30: 77 72 69 74 65 28 63 68 72 28 32 37 29 2C 27 27 write(chr(27),''
021C40: 2A 27 27 29 3B 27 29 3B 20 20 20 20 20 20 20 20 *'');');
021C50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
021C60: 7B 20 58 58 58 20 7D 0D 0A 20 20 20 20 20 20 77 { XXX }.. w
021C70: 72 69 74 65 6C 6E 28 66 32 3B 20 27 65 6E 64 3B riteln(f2; 'end;
021C80: 27 29 3B 0D 0A 20 20 20 20 20 20 77 72 69 74 65 ');.. write
021C90: 6C 6E 28 66 32 29 3B 0D 0A 20 20 20 20 20 20 77 ln(f2);.. w
021CA0: 72 69 74 65 6C 6E 28 66 32 3B 20 27 70 72 6F 63 riteln(f2; 'proc
021CB0: 65 64 75 72 65 20 67 6F 74 6F 78 79 20 28 78 2C edure gotoxy (x,
021CC0: 79 20 3A 20 69 6E 74 65 67 65 72 20 29 3B 27 29 y : integer );')
021CD0: 3B 0D 0A 20 20 20 20 20 20 77 72 69 74 65 6C 6E ;.. writeln
021CE0: 28 66 32 3B 20 27 62 65 67 69 6E 27 29 3B 0D 0A (f2; 'begin');..
021CF0: 20 20 20 20 20 20 77 72 69 74 65 6C 6E 28 66 32 writeln(f2
021D00: 3B 20 27 77 72 69 74 65 28 63 68 72 28 32 37 29 ; 'write(chr(27)
021D10: 2C 27 27 3D 27 27 2C 63 68 72 28 79 2B 32 30 68 ,''='',chr(y+20h
021D20: 29 2C 63 68 72 28 78 2B 32 30 68 29 29 3B 27 29 ),chr(x+20h));')
021D30: 3B 20 20 7B 20 59 59 59 20 7D 0D 0A 20 20 20 20 ; { YYY }..
021D40: 20 20 77 72 69 74 65 6C 6E 28 66 32 3B 20 27 65 writeln(f2; 'e
021D50: 6E 64 3B 27 29 3B 0D 0A 20 20 20 20 20 20 77 72 nd;');.. wr
021D60: 69 74 65 6C 6E 28 66 32 29 3B 0D 0A 20 20 20 20 iteln(f2);..
021D70: 20 20 65 6E 64 3B 20 7B 70 61 72 74 32 7D 0D 0A end; {part2}..
021D80: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
021D90: 54 68 65 20 43 52 54 20 73 63 72 65 65 6E 20 63 The CRT screen c
021DA0: 6F 72 72 64 69 6E 61 74 65 73 20 68 61 76 65 20 orrdinates have
021DB0: 74 68 65 20 6F 72 69 67 69 6E 20 30 2C 30 20 69 the origin 0,0 i
021DC0: 6E 20 74 68 65 20 0D 0A 20 20 20 20 20 20 20 20 n the ..
021DD0: 20 20 20 20 20 20 75 70 70 65 72 20 6C 65 66 74 upper left
021DE0: 20 63 6F 72 6E 65 72 3A 0D 0A 0D 0A 20 20 20 20 corner:....
021DF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
021E00: 45 53 53 5F 52 41 4E 47 45 5F 31 3B 0D 0A 20 20 ESS_RANGE_1;..
021E10: 20 20 20 20 20 20 20 20 20 20 28 56 20 3E 20 35 (V > 5
021E20: 2E 36 29 20 41 4E 44 20 28 56 20 3C 3D 20 31 34 .6) AND (V <= 14
021E30: 2E 30 38 29 20 20 20 20 3A 20 50 52 4F 43 45 53 .08) : PROCES
021E40: 53 5F 52 41 4E 47 45 5F 32 3B 0D 0A 20 20 20 20 S_RANGE_2;..
021E50: 20 20 20 20 20 20 20 20 28 56 20 3E 20 33 35 2E (V > 35.
021E60: 36 29 20 41 4E 44 20 28 56 20 3C 3D 20 31 30 30 6) AND (V <= 100
021E70: 2E 30 29 20 20 20 3A 20 50 52 4F 43 45 53 53 5F .0) : PROCESS_
021E80: 52 41 4E 47 45 5F 33 3B 0D 0A 20 20 20 20 20 20 RANGE_3;..
021E90: 20 20 20 20 20 20 45 4C 53 45 20 3A 20 57 52 49 ELSE : WRI
021EA0: 54 45 4C 4E 28 27 56 4F 4C 54 41 47 45 20 4F 55 TELN('VOLTAGE OU
021EB0: 54 20 4F 46 20 56 41 4C 49 44 20 52 41 4E 47 45 T OF VALID RANGE
021EC0: 53 3A 27 2C 56 29 3B 0D 0A 20 20 20 20 20 20 20 S:',V);..
021ED0: 20 20 20 20 20 45 4E 44 3B 0D 0A 0D 0A 0D 0A 20 END;......
021EE0: 20 20 20 20 20 31 35 2E 20 20 20 43 52 54 20 46 15. CRT F
021EF0: 6F 72 6D 61 74 74 69 6E 67 0D 0A 0D 0A 20 20 20 ormatting....
021F00: 20 20 20 20 20 20 20 20 54 68 69 73 20 73 65 63 This sec
021F10: 74 69 6F 6E 20 64 65 73 63 72 69 62 65 73 20 4A tion describes J
021F20: 52 54 20 50 61 73 63 61 6C 20 43 52 54 20 66 6F RT Pascal CRT fo
021F30: 72 6D 61 74 74 69 6E 67 20 66 61 63 69 6C 69 74 rmatting facilit
021F40: 69 65 73 2E 20 20 49 74 0D 0A 20 20 20 20 20 20 ies. It..
021F50: 72 65 71 75 72 69 65 73 20 20 61 20 20 62 61 73 requries a bas
021F60: 69 63 20 20 6B 6E 6F 77 6C 65 64 67 65 20 20 6F ic knowledge o
021F70: 66 20 20 50 61 73 63 61 6C 20 20 61 6E 64 20 6F f Pascal and o
021F80: 66 20 4A 52 54 20 50 61 73 63 61 6C 20 65 78 74 f JRT Pascal ext
021F90: 65 72 6E 61 6C 0D 0A 20 20 20 20 20 20 70 72 6F ernal.. pro
021FA0: 63 65 64 75 72 65 73 2E 0D 0A 0D 0A 20 20 20 20 cedures.....
021FB0: 20 20 20 20 20 20 20 54 68 65 20 43 52 54 4D 41 The CRTMA
021FC0: 50 20 75 74 69 6C 69 74 79 20 65 6E 61 62 6C 65 P utility enable
021FD0: 73 20 74 68 65 20 75 73 65 72 20 20 74 6F 20 20 s the user to
021FE0: 71 75 69 63 6B 6C 79 20 20 66 6F 72 6D 61 74 20 quickly format
021FF0: 20 61 20 20 43 52 54 0D 0A 20 20 20 20 20 20 74 a CRT.. t
022000: 20 20 30 20 20 20 20 20 20 20 20 20 20 20 20 20 0
022010: 20 20 78 20 20 20 20 20 20 20 20 20 20 20 20 20 x
022020: 20 20 37 39 0D 0A 20 20 20 20 20 20 20 20 20 20 79..
022030: 20 20 20 20 20 20 20 20 20 20 20 20 2D 2D 2D 2D ----
022040: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
022050: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A --------------..
022060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
022070: 20 20 20 30 20 20 21 20 20 20 20 20 20 20 20 20 0 !
022080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
022090: 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 20 20 !..
0220A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0220B0: 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 !
0220C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0220D0: 20 21 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 !..
0220E0: 20 20 20 20 20 20 20 20 20 20 21 20 20 20 20 20 !
0220F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
022100: 20 20 20 20 20 20 20 20 20 20 20 21 0D 0A 20 20 !..
022110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
022120: 20 79 20 20 21 20 20 20 20 20 20 20 20 20 20 20 y !
022130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
022140: 20 20 20 20 20 21 0D 0A 20 20 20 20 20 20 20 20 !..
022150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20 !
022160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
022170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 !
022180: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
022190: 20 20 20 20 20 20 20 20 21 20 20 20 20 20 20 20 !
0221A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0221B0: 20 20 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 !..
0221C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 33 23
0221D0: 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 20 !
0221E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0221F0: 20 20 20 21 0D 0A 20 20 20 20 20 20 20 20 20 20 !..
022200: 65 72 6D 69 6E 61 6C 20 73 63 72 65 65 6E 2E 20 erminal screen.
022210: 20 4F 6E 65 20 72 65 63 6F 72 64 20 61 74 20 61 One record at a
022220: 20 74 69 6D 65 20 6D 61 79 20 62 65 20 64 69 73 time may be dis
022230: 70 6C 61 79 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 played.....
022240: 20 20 20 20 20 20 54 68 65 20 20 75 74 69 6C 69 The utili
022250: 74 79 20 20 70 72 6F 67 72 61 6D 20 20 74 61 6B ty program tak
022260: 65 73 20 61 73 20 69 74 73 20 69 6E 70 75 74 20 es as its input
022270: 61 20 4D 61 70 20 44 65 73 63 72 69 70 74 69 6F a Map Descriptio
022280: 6E 20 46 69 6C 65 0D 0A 20 20 20 20 20 20 28 4D n File.. (M
022290: 44 46 29 20 77 68 69 63 68 20 64 65 73 63 72 69 DF) which descri
0222A0: 62 65 73 20 74 68 65 20 43 52 54 20 6D 61 70 20 bes the CRT map
0222B0: 69 6E 20 61 20 73 69 6D 70 6C 65 20 63 6F 6D 6D in a simple comm
0222C0: 61 6E 64 20 6C 61 6E 67 75 61 67 65 2E 20 20 20 and language.
0222D0: 54 68 65 0D 0A 20 20 20 20 20 20 75 74 69 6C 69 The.. utili
0222E0: 74 79 20 20 67 65 6E 65 72 61 74 65 73 20 74 68 ty generates th
0222F0: 65 20 73 6F 75 72 63 65 20 70 72 6F 67 72 61 6D e source program
022300: 20 66 6F 72 20 61 20 50 61 73 63 61 6C 20 65 78 for a Pascal ex
022310: 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 ternal procedure
022320: 0D 0A 20 20 20 20 20 20 77 68 69 63 68 20 6D 61 .. which ma
022330: 79 20 74 68 65 6E 20 62 65 20 63 6F 6D 70 69 6C y then be compil
022340: 65 64 2E 20 20 54 68 69 73 20 65 78 74 65 72 6E ed. This extern
022350: 61 6C 20 70 72 6F 63 65 64 75 72 65 20 63 6F 6E al procedure con
022360: 74 61 69 6E 73 20 61 6C 6C 20 74 68 65 0D 0A 20 tains all the..
022370: 20 20 20 20 20 6C 6F 67 69 63 20 74 6F 20 64 69 logic to di
022380: 73 70 6C 61 79 20 61 6C 6C 20 6F 72 20 70 61 72 splay all or par
022390: 74 20 6F 66 20 6F 6E 65 20 72 65 63 6F 72 64 20 t of one record
0223A0: 20 64 61 74 61 20 20 74 79 70 65 2E 20 20 20 44 data type. D
0223B0: 65 73 63 72 69 70 74 69 76 65 0D 0A 20 20 20 20 escriptive..
0223C0: 20 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 6D 61 information ma
0223D0: 79 20 61 6C 73 6F 20 62 65 20 64 69 73 70 6C 61 y also be displa
0223E0: 79 65 64 20 6F 6E 20 74 68 65 20 73 63 72 65 65 yed on the scree
0223F0: 6E 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 53 6F n....... So
022400: 20 20 20 20 20 20 20 20 20 20 20 20 2D 2D 2D 2D ----
022410: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
022420: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A --------------..
022430: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
022440: 54 68 65 20 66 69 72 73 74 20 63 6F 6F 72 64 69 The first coordi
022450: 6E 61 74 65 20 58 20 69 6E 64 69 63 61 74 65 73 nate X indicates
022460: 20 74 68 65 20 63 6F 6C 75 6D 6E 2C 20 74 68 65 the column, the
022470: 20 73 65 63 6F 6E 64 0D 0A 20 20 20 20 20 20 20 second..
022480: 20 20 20 20 20 20 20 59 20 69 6E 64 69 63 61 74 Y indicat
022490: 65 73 20 74 68 65 20 72 6F 77 2E 0D 0A 0D 0A 0D es the row......
0224A0: 0A 20 20 20 20 20 20 31 35 2E 31 20 20 53 74 72 . 15.1 Str
0224B0: 75 63 74 75 72 65 20 6F 66 20 74 68 65 20 65 78 ucture of the ex
0224C0: 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 ternal procedure
0224D0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 43 .... C
0224E0: 52 54 4D 41 50 20 67 65 6E 65 72 61 74 65 73 20 RTMAP generates
0224F0: 61 20 50 61 73 63 61 6C 20 65 78 74 65 72 6E 61 a Pascal externa
022500: 6C 20 70 72 6F 63 65 64 75 72 65 20 20 61 63 63 l procedure acc
022510: 6F 72 64 69 6E 67 20 20 74 6F 20 20 74 68 65 0D ording to the.
022520: 0A 20 20 20 20 20 20 70 61 72 61 6D 65 74 65 72 . parameter
022530: 73 20 69 6E 20 74 68 65 20 4D 61 70 20 44 65 73 s in the Map Des
022540: 63 72 69 70 74 69 6F 6E 20 46 69 6C 65 2E 20 20 cription File.
022550: 54 68 69 73 20 65 78 74 65 72 6E 61 6C 20 70 72 This external pr
022560: 6F 63 65 64 75 72 65 20 74 68 65 6E 0D 0A 20 20 ocedure then..
022570: 20 20 20 20 64 6F 65 73 20 74 68 65 20 64 69 73 does the dis
022580: 70 6C 61 79 20 66 6F 72 6D 61 74 74 69 6E 67 20 play formatting
022590: 6F 66 20 79 6F 75 72 20 64 61 74 61 20 72 65 63 of your data rec
0225A0: 6F 72 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ord.....
0225B0: 20 20 20 20 20 20 53 74 72 75 63 74 75 72 65 20 Structure
0225C0: 6F 66 20 74 68 65 20 67 65 6E 65 72 61 74 65 64 of the generated
0225D0: 20 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 external proced
0225E0: 75 72 65 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ure:....
0225F0: 20 20 20 20 20 20 50 41 52 54 31 20 20 20 45 58 PART1 EX
022600: 75 72 63 65 20 63 6F 64 65 20 66 6F 72 20 43 52 urce code for CR
022610: 54 4D 41 50 20 69 73 20 69 6E 63 6C 75 64 65 20 TMAP is include
022620: 61 6E 64 20 69 74 73 20 66 65 61 74 75 72 65 73 and its features
022630: 20 6D 61 79 20 62 65 20 6D 6F 64 69 66 69 65 64 may be modified
022640: 20 6F 72 0D 0A 20 20 20 20 20 20 65 78 74 65 6E or.. exten
022650: 64 65 64 2E 20 20 20 54 68 65 20 20 64 69 73 74 ded. The dist
022660: 72 69 62 75 74 69 6F 6E 20 20 76 65 72 73 69 6F ribution versio
022670: 6E 20 20 6F 66 20 43 52 54 4D 41 50 20 61 73 73 n of CRTMAP ass
022680: 75 6D 65 73 20 61 20 54 65 6C 65 76 69 64 65 6F umes a Televideo
022690: 0D 0A 20 20 20 20 20 20 64 69 73 70 6C 61 79 20 .. display
0226A0: 74 65 72 6D 69 6E 61 6C 2E 20 20 49 74 20 20 6D terminal. It m
0226B0: 61 79 20 20 62 65 20 20 61 64 61 70 74 65 64 20 ay be adapted
0226C0: 20 74 6F 20 20 61 6E 79 20 20 6F 74 68 65 72 20 to any other
0226D0: 20 74 65 72 6D 69 6E 61 6C 20 20 6F 72 0D 0A 20 terminal or..
0226E0: 20 20 20 20 20 63 6F 6D 70 75 74 65 72 20 20 62 computer b
0226F0: 79 20 20 6D 6F 64 69 66 79 69 6E 67 20 20 74 77 y modifying tw
022700: 6F 20 20 6C 69 6E 65 73 20 20 69 6E 20 74 68 65 o lines in the
022710: 20 70 72 6F 67 72 61 6D 2E 20 20 54 68 65 73 65 program. These
022720: 20 74 77 6F 20 6C 69 6E 65 73 0D 0A 20 20 20 20 two lines..
022730: 20 20 73 70 65 63 69 66 79 20 74 68 65 20 63 6F specify the co
022740: 6E 74 72 6F 6C 20 63 6F 64 65 73 20 66 6F 72 20 ntrol codes for
022750: 63 75 72 73 6F 72 20 20 70 6F 73 69 74 69 6F 6E cursor position
022760: 69 6E 67 20 20 61 6E 64 20 20 63 6C 65 61 72 69 ing and cleari
022770: 6E 67 20 20 74 68 65 0D 0A 20 20 20 20 20 20 73 ng the.. s
022780: 63 72 65 65 6E 2E 20 20 20 43 6F 6E 73 75 6C 74 creen. Consult
022790: 20 79 6F 75 72 20 64 69 73 70 6C 61 79 20 74 65 your display te
0227A0: 72 6D 69 6E 61 6C 20 75 73 65 72 20 6D 61 6E 75 rminal user manu
0227B0: 61 6C 20 66 6F 72 20 74 68 65 20 63 6F 64 65 73 al for the codes
0227C0: 20 66 6F 72 0D 0A 20 20 20 20 20 20 79 6F 75 72 for.. your
0227D0: 20 73 79 73 74 65 6D 2E 20 20 54 68 65 20 63 75 system. The cu
0227E0: 72 73 6F 72 20 70 6F 73 69 74 69 6F 6E 69 6E 67 rsor positioning
0227F0: 20 63 6F 64 65 20 69 73 20 69 6E 20 70 72 6F 63 code is in proc
022800: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
022810: 1D 00 00 00 02 09 2A E5 1D 00 C1 02 00 00 00 02 ......*.........
022820: 1D 00 C6 02 00 00 00 02 1D 00 C2 02 00 00 00 02 ................
022830: 1D 00 C7 02 00 00 00 02 1D 00 C3 02 00 00 00 02 ................
022840: 1D 00 C8 02 00 00 00 02 1D 00 C4 02 00 00 00 02 ................
022850: 1D 00 C9 02 00 00 00 02 1D 00 C5 02 00 00 00 02 ................
022860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022890: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0228F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022900: 54 45 52 4E 0D 0A 20 20 20 20 20 20 20 20 20 20 TERN..
022910: 20 20 20 20 20 20 20 20 20 20 20 20 54 59 50 45 TYPE
022920: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
022930: 20 20 20 20 20 20 20 20 25 49 4E 43 4C 55 44 45 %INCLUDE
022940: 20 74 79 70 65 5F 64 65 63 6C 61 72 61 74 69 6F type_declaratio
022950: 6E 5F 66 69 6C 65 6E 61 6D 65 0D 0A 20 20 20 20 n_filename..
022960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
022970: 20 20 50 52 4F 43 45 44 55 52 45 20 65 78 70 72 PROCEDURE expr
022980: 6F 63 5F 6E 61 6D 65 0D 0A 20 20 20 20 20 20 20 oc_name..
022990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0229A0: 20 20 20 20 20 20 20 28 20 56 41 52 20 52 20 3A ( VAR R :
0229B0: 20 74 79 70 65 5F 6E 61 6D 65 20 29 3B 0D 0A 0D type_name );...
0229C0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 . P
0229D0: 41 52 54 32 20 20 20 50 52 4F 43 45 44 55 52 45 ART2 PROCEDURE
0229E0: 20 43 4C 45 41 52 3B 0D 0A 20 20 20 20 20 20 20 CLEAR;..
0229F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 P
022A00: 52 4F 43 45 44 55 52 45 20 47 4F 54 4F 58 59 3B ROCEDURE GOTOXY;
022A10: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
022A20: 20 20 50 41 52 54 33 20 20 20 50 52 4F 43 45 44 PART3 PROCED
022A30: 55 52 45 20 44 49 53 50 4C 41 59 3B 20 20 20 20 URE DISPLAY;
022A40: 20 20 7B 20 66 6F 72 6D 61 74 20 74 68 65 20 43 { format the C
022A50: 52 54 20 7D 0D 0A 0D 0A 20 20 20 20 20 20 20 20 RT }....
022A60: 20 20 20 20 20 20 50 41 52 54 34 2E 2E 50 41 52 PART4..PAR
022A70: 54 38 20 28 6F 6D 69 74 74 65 64 29 0D 0A 0D 0A T8 (omitted)....
022A80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 41 PA
022A90: 52 54 39 20 20 20 42 45 47 49 4E 0D 0A 20 20 20 RT9 BEGIN..
022AA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
022AB0: 20 20 20 6D 61 69 6E 5F 6C 69 6E 65 5F 63 6F 64 main_line_cod
022AC0: 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 e..
022AD0: 20 20 20 20 20 20 20 20 20 45 4E 44 3B 2E 0D 0A END;...
022AE0: 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 ..............
022AF0: 20 20 20 20 31 35 2E 32 20 20 20 4D 61 70 20 44 15.2 Map D
022B00: 45 4C 44 20 31 30 2C 32 30 2C 20 63 75 73 74 6F ELD 10,20, custo
022B10: 6D 65 72 5F 6E 61 6D 65 0D 0A 20 20 20 20 20 20 mer_name..
022B20: 20 20 20 20 20 20 20 20 46 49 45 4C 44 20 31 32 FIELD 12
022B30: 2C 32 30 2C 20 61 63 63 6F 75 6E 74 5F 62 61 6C ,20, account_bal
022B40: 61 6E 63 65 3A 31 30 3A 32 0D 0A 20 20 20 20 20 ance:10:2..
022B50: 20 20 20 20 20 20 20 20 20 46 49 45 4C 44 20 32 FIELD 2
022B60: 30 2C 36 30 2C 20 64 61 79 73 5F 75 6E 74 69 6C 0,60, days_until
022B70: 5F 61 72 6D 61 67 65 64 64 6F 6E 3A 31 0D 0A 0D _armageddon:1...
022B80: 0A 20 20 20 20 20 20 43 55 52 53 4F 52 20 2D 20 . CURSOR -
022B90: 73 70 65 63 69 66 69 65 73 20 77 68 65 72 65 20 specifies where
022BA0: 74 68 65 20 20 63 75 72 73 6F 72 20 20 73 68 6F the cursor sho
022BB0: 75 6C 64 20 20 62 65 20 20 70 6F 73 69 74 69 6F uld be positio
022BC0: 6E 65 64 20 20 6F 6E 20 20 74 68 65 0D 0A 20 20 ned on the..
022BD0: 20 20 20 20 20 20 20 20 20 20 20 20 73 63 72 65 scre
022BE0: 65 6E 20 61 66 74 65 72 20 74 68 65 20 72 65 63 en after the rec
022BF0: 6F 72 64 20 69 73 20 64 69 73 70 6C 61 79 65 64 ord is displayed
022C00: 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
022C10: 20 20 20 43 55 52 53 4F 52 20 63 6F 6C 75 6D 6E CURSOR column
022C20: 2C 20 72 6F 77 0D 0A 0D 0A 20 20 20 20 20 20 45 , row.... E
022C30: 4E 44 20 2D 20 69 6E 64 69 63 61 74 65 73 20 65 ND - indicates e
022C40: 6E 64 20 6F 66 20 4D 61 70 20 44 65 73 63 72 69 nd of Map Descri
022C50: 70 74 69 6F 6E 20 46 69 6C 65 2C 20 41 4C 57 41 ption File, ALWA
022C60: 59 53 20 72 65 71 75 69 72 65 64 2E 0D 0A 0D 0A YS required.....
022C70: 0D 0A 20 20 20 20 20 20 31 35 2E 33 20 20 4F 70 .. 15.3 Op
022C80: 65 72 61 74 69 6E 67 20 43 52 54 4D 41 50 0D 0A erating CRTMAP..
022C90: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 6F 20 .. To
022CA0: 20 6F 70 65 72 61 74 65 20 20 43 52 54 4D 41 50 operate CRTMAP
022CB0: 2C 20 20 66 69 72 73 74 20 20 70 72 65 70 61 72 , first prepar
022CC0: 65 20 20 74 68 65 20 20 4D 61 70 20 20 44 65 73 e the Map Des
022CD0: 63 72 69 70 74 69 6F 6E 20 46 69 6C 65 0D 0A 20 cription File..
022CE0: 20 20 20 20 20 28 73 65 63 74 69 6F 6E 20 31 35 (section 15
022CF0: 2E 32 29 2E 20 20 50 72 65 70 61 72 65 20 61 20 .2). Prepare a
022D00: 65 66 69 6E 69 74 69 6F 6E 20 46 69 6C 65 0D 0A efinition File..
022D10: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 65 .. The
022D20: 20 20 4D 44 46 20 64 65 66 69 6E 65 73 20 74 68 MDF defines th
022D30: 65 20 66 6F 72 6D 61 74 20 6F 66 20 74 68 65 20 e format of the
022D40: 43 52 54 20 73 63 72 65 65 6E 20 66 6F 72 20 74 CRT screen for t
022D50: 68 65 20 64 69 73 70 6C 61 79 20 6F 66 0D 0A 20 he display of..
022D60: 20 20 20 20 20 6F 6E 65 20 72 65 63 6F 72 64 20 one record
022D70: 74 79 70 65 2E 20 20 43 52 54 4D 41 50 20 72 65 type. CRTMAP re
022D80: 63 6F 67 6E 69 7A 65 73 20 73 65 76 65 6E 20 64 cognizes seven d
022D90: 69 66 66 65 72 65 6E 74 20 4D 44 46 20 63 6F 6D ifferent MDF com
022DA0: 6D 61 6E 64 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 mands.....
022DB0: 20 20 20 20 20 54 68 65 20 4D 44 46 20 63 6F 6D The MDF com
022DC0: 6D 61 6E 64 73 20 4D 55 53 54 20 62 65 20 65 6E mands MUST be en
022DD0: 74 65 72 65 64 20 69 6E 20 61 20 66 69 78 65 64 tered in a fixed
022DE0: 20 73 65 71 75 65 6E 63 65 20 65 78 63 65 70 74 sequence except
022DF0: 20 20 66 6F 72 0D 0A 20 20 20 20 20 20 4C 49 54 for.. LIT
022E00: 45 52 41 4C 20 20 61 6E 64 20 20 46 49 45 4C 44 ERAL and FIELD
022E10: 20 20 77 68 69 63 68 20 20 6D 61 79 20 20 62 65 which may be
022E20: 20 20 69 6E 74 65 72 6D 69 78 65 64 2E 20 20 54 intermixed. T
022E30: 68 65 72 65 20 73 68 6F 75 6C 64 20 62 65 20 6F here should be o
022E40: 6E 65 0D 0A 20 20 20 20 20 20 63 6F 6D 6D 61 6E ne.. comman
022E50: 64 20 70 65 72 20 6C 69 6E 65 2E 20 20 42 6C 61 d per line. Bla
022E60: 6E 6B 20 6C 69 6E 65 73 20 6D 61 79 20 62 65 20 nk lines may be
022E70: 69 6E 73 65 72 74 65 64 20 66 6F 72 20 72 65 61 inserted for rea
022E80: 64 61 62 69 6C 69 74 79 2E 0D 0A 0D 0A 20 20 20 dability.....
022E90: 20 20 20 20 20 20 20 20 20 20 20 45 58 50 52 4F EXPRO
022EA0: 43 20 3D 20 65 65 65 65 65 65 65 65 0D 0A 20 20 C = eeeeeeee..
022EB0: 20 20 20 20 20 20 20 20 20 20 20 20 49 4E 43 4C INCL
022EC0: 55 44 45 20 3D 20 69 69 69 69 69 69 69 69 0D 0A UDE = iiiiiiii..
022ED0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 RE
022EE0: 43 4F 52 44 20 3D 20 72 72 72 72 72 72 72 72 0D CORD = rrrrrrrr.
022EF0: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
022F00: 66 69 6C 65 20 63 6F 6E 74 61 69 6E 69 6E 67 20 file containing
022F10: 74 68 65 20 72 65 63 6F 72 64 20 74 6F 20 62 65 the record to be
022F20: 20 64 69 73 70 6C 61 79 65 64 0D 0A 20 20 20 20 displayed..
022F30: 20 20 61 6E 64 20 69 74 73 20 73 75 62 6F 72 64 and its subord
022F40: 69 6E 61 74 65 20 74 79 70 65 20 64 65 63 6C 61 inate type decla
022F50: 72 61 74 69 6F 6E 73 20 2D 20 20 74 68 69 73 20 rations - this
022F60: 20 77 69 6C 6C 20 20 62 65 20 20 74 68 65 20 20 will be the
022F70: 49 4E 43 4C 55 44 45 0D 0A 20 20 20 20 20 20 66 INCLUDE.. f
022F80: 69 6C 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ile.....
022F90: 20 20 20 4D 61 6B 65 20 20 73 75 72 65 20 20 74 Make sure t
022FA0: 68 65 20 20 43 52 54 4D 41 50 20 20 75 74 69 6C he CRTMAP util
022FB0: 69 74 79 20 20 77 61 73 20 20 6D 6F 64 69 66 69 ity was modifi
022FC0: 65 64 20 20 74 6F 20 73 75 70 70 6F 72 74 20 79 ed to support y
022FD0: 6F 75 72 0D 0A 20 20 20 20 20 20 74 65 72 6D 69 our.. termi
022FE0: 6E 61 6C 20 74 79 70 65 20 28 73 65 65 20 73 65 nal type (see se
022FF0: 63 74 69 6F 6E 20 31 35 2E 29 2E 0D 0A 0D 0A 20 ction 15.).....
023000: 20 20 20 20 20 20 20 20 20 20 54 6F 20 72 75 6E To run
023010: 20 74 68 65 20 75 74 69 6C 69 74 79 2C 20 65 6E the utility, en
023020: 74 65 72 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ter:....
023030: 20 20 20 20 20 20 45 58 45 43 20 43 52 54 4D 41 EXEC CRTMA
023040: 50 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 P....
023050: 49 74 20 77 69 6C 6C 20 61 73 6B 20 66 6F 72 20 It will ask for
023060: 74 68 65 20 20 22 66 69 6C 65 6E 61 6D 65 2E 74 the "filename.t
023070: 79 70 65 22 20 20 6F 66 20 20 79 6F 75 72 20 20 ype" of your
023080: 4D 61 70 20 20 44 65 73 63 72 69 70 74 69 6F 6E Map Description
023090: 0D 0A 20 20 20 20 20 20 46 69 6C 65 2E 0D 0A 0D .. File....
0230A0: 0A 20 20 20 20 20 20 20 20 20 20 20 4F 6E 20 20 . On
0230B0: 73 75 63 63 65 73 73 66 75 6C 20 74 65 72 6D 69 successful termi
0230C0: 6E 61 74 69 6F 6E 20 6F 66 20 43 52 54 4D 41 50 nation of CRTMAP
0230D0: 2C 20 74 68 65 20 6E 65 77 20 65 78 74 65 72 6E , the new extern
0230E0: 61 6C 20 70 72 6F 63 65 64 75 72 65 0D 0A 20 20 al procedure..
0230F0: 20 20 20 20 73 6F 75 72 63 65 20 66 69 6C 65 20 source file
023100: 20 61 6E 79 20 6E 75 6D 62 65 72 20 6F 66 20 69 any number of i
023110: 6E 74 65 72 6D 69 78 65 64 20 4C 49 54 45 52 41 ntermixed LITERA
023120: 4C 20 61 6E 64 20 46 49 45 4C 44 20 63 6F 6D 6D L and FIELD comm
023130: 61 6E 64 73 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ands....
023140: 20 20 20 20 20 20 43 55 52 53 4F 52 20 3D 20 78 CURSOR = x
023150: 2C 79 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ,y..
023160: 20 20 45 4E 44 0D 0A 0D 0A 20 20 20 20 4D 44 46 END.... MDF
023170: 20 43 6F 6D 6D 61 6E 64 73 0D 0A 0D 0A 20 20 20 Commands....
023180: 20 20 20 45 58 50 52 4F 43 20 2D 20 74 68 65 20 EXPROC - the
023190: 6E 61 6D 65 20 6F 66 20 20 74 68 65 20 20 65 78 name of the ex
0231A0: 74 65 72 6E 61 6C 20 20 70 72 6F 63 65 64 75 72 ternal procedur
0231B0: 65 20 20 74 6F 20 20 62 65 20 20 67 65 6E 65 72 e to be gener
0231C0: 61 74 65 64 20 20 62 79 0D 0A 20 20 20 20 20 20 ated by..
0231D0: 20 20 20 20 20 20 20 20 43 52 54 4D 41 50 2E 0D CRTMAP..
0231E0: 0A 0D 0A 20 20 20 20 20 20 49 4E 43 4C 55 44 45 ... INCLUDE
0231F0: 20 20 2D 20 20 74 68 65 20 20 6E 61 6D 65 20 20 - the name
023200: 6F 66 20 20 74 68 65 20 20 25 49 4E 43 4C 55 44 of the %INCLUD
023210: 45 20 66 69 6C 65 20 77 68 69 63 68 20 63 6F 6E E file which con
023220: 74 61 69 6E 73 20 74 68 65 20 54 59 50 45 0D 0A tains the TYPE..
023230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 de
023240: 63 6C 61 72 61 74 69 6F 6E 20 6F 66 20 74 68 65 claration of the
023250: 20 72 65 63 6F 72 64 20 74 6F 20 62 65 20 64 69 record to be di
023260: 73 70 6C 61 79 65 64 20 61 6E 64 20 61 6C 6C 20 splayed and all
023270: 20 54 59 50 45 73 20 20 61 6E 64 0D 0A 20 20 20 TYPEs and..
023280: 20 20 20 20 20 20 20 20 20 20 20 43 4F 4E 53 54 CONST
023290: 61 6E 74 73 20 74 6F 20 77 68 69 63 68 20 69 74 ants to which it
0232A0: 20 72 65 66 65 72 73 2E 0D 0A 0D 0A 20 20 20 20 refers.....
0232B0: 20 20 20 20 20 20 20 20 20 20 65 78 61 6D 70 6C exampl
0232C0: 65 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 e:..
0232D0: 20 20 49 4E 43 4C 55 44 45 20 3D 20 54 59 50 45 INCLUDE = TYPE
0232E0: 53 2E 44 43 4C 0D 0A 0D 0A 20 20 20 20 20 20 52 S.DCL.... R
0232F0: 45 43 4F 52 44 20 2D 20 74 68 65 20 6E 61 6D 65 ECORD - the name
023300: 77 69 6C 6C 20 62 65 20 66 6F 75 6E 64 20 6F 6E will be found on
023310: 20 74 68 65 20 64 65 66 61 75 6C 74 20 64 69 73 the default dis
023320: 6B 2E 20 20 49 74 20 6D 75 73 74 20 20 62 65 20 k. It must be
023330: 20 63 6F 6D 70 69 6C 65 64 0D 0A 20 20 20 20 20 compiled..
023340: 20 77 69 74 68 20 74 68 65 20 4A 52 54 20 50 61 with the JRT Pa
023350: 73 63 61 6C 20 76 65 72 73 69 6F 6E 20 33 20 63 scal version 3 c
023360: 6F 6D 70 69 6C 65 72 2E 0D 0A 0D 0A 0D 0A 20 20 ompiler.......
023370: 20 20 20 20 31 35 2E 34 20 20 20 43 52 54 4D 41 15.4 CRTMA
023380: 50 20 65 78 61 6D 70 6C 65 0D 0A 0D 0A 20 20 20 P example....
023390: 20 20 20 20 20 20 20 20 41 6E 20 65 78 61 6D 70 An examp
0233A0: 6C 65 20 6F 66 20 74 68 65 20 75 73 65 20 6F 66 le of the use of
0233B0: 20 74 68 65 20 43 52 54 4D 41 50 20 75 74 69 6C the CRTMAP util
0233C0: 69 74 79 20 69 73 20 70 72 6F 76 69 64 65 64 20 ity is provided
0233D0: 68 65 72 65 2E 20 20 41 0D 0A 20 20 20 20 20 20 here. A..
0233E0: 73 69 6D 70 6C 65 20 20 20 63 75 73 74 6F 6D 65 simple custome
0233F0: 72 20 20 20 72 65 63 6F 72 64 20 20 69 73 20 20 r record is
023400: 66 6F 72 6D 61 74 74 65 64 20 20 61 6E 64 20 20 formatted and
023410: 64 69 73 70 6C 61 79 65 64 2E 20 20 20 54 68 65 displayed. The
023420: 20 20 4D 61 70 0D 0A 20 20 20 20 20 20 44 65 66 Map.. Def
023430: 69 6E 69 74 69 6F 6E 20 20 46 69 6C 65 20 20 6E inition File n
023440: 61 6D 65 64 20 20 4D 44 46 20 20 69 73 20 20 6C amed MDF is l
023450: 69 73 74 65 64 2E 20 20 20 54 68 65 20 20 69 6E isted. The in
023460: 63 6C 75 64 65 20 20 66 69 6C 65 20 20 6E 61 6D clude file nam
023470: 65 64 0D 0A 20 20 20 20 20 20 43 55 53 54 4F 4D ed.. CUSTOM
023480: 45 52 2E 50 41 53 20 20 20 63 6F 6E 74 61 69 6E ER.PAS contain
023490: 73 20 20 74 68 65 20 20 6D 61 69 6E 20 20 72 65 s the main re
0234A0: 63 6F 72 64 20 20 64 65 63 6C 61 72 61 74 69 6F cord declaratio
0234B0: 6E 20 20 43 55 53 54 20 20 61 6E 64 20 20 61 0D n CUST and a.
0234C0: 0A 20 20 20 20 20 20 73 75 62 6F 72 64 69 6E 61 . subordina
0234D0: 74 65 20 64 65 63 6C 61 72 61 74 69 6F 6E 20 43 te declaration C
0234E0: 48 41 52 33 30 2E 0D 0A 0D 0A 20 20 20 20 20 20 HAR30.....
0234F0: 20 20 20 20 20 54 68 65 20 65 78 74 65 72 6E 61 The externa
023500: 20 6F 66 20 74 68 65 20 72 65 63 6F 72 64 20 64 of the record d
023510: 61 74 61 20 74 79 70 65 20 74 6F 20 62 65 20 64 ata type to be d
023520: 69 73 70 6C 61 79 65 64 20 2D 20 74 68 69 73 20 isplayed - this
023530: 74 79 70 65 0D 0A 20 20 20 20 20 20 20 20 20 20 type..
023540: 20 20 20 20 64 65 63 6C 61 72 61 74 69 6F 6E 20 declaration
023550: 69 73 20 69 6E 20 74 68 65 20 69 6E 63 6C 75 64 is in the includ
023560: 65 20 66 69 6C 65 2E 0D 0A 0D 0A 20 20 20 20 20 e file.....
023570: 20 4C 49 54 45 52 41 4C 20 20 2D 20 20 63 61 75 LITERAL - cau
023580: 73 65 73 20 20 61 20 20 63 68 61 72 61 63 74 65 ses a characte
023590: 72 20 20 73 74 72 69 6E 67 20 20 74 6F 20 20 62 r string to b
0235A0: 65 20 64 69 73 70 6C 61 79 65 64 20 6F 6E 20 74 e displayed on t
0235B0: 68 65 20 43 52 54 0D 0A 20 20 20 20 20 20 20 20 he CRT..
0235C0: 20 20 20 20 20 20 73 63 72 65 65 6E 2C 20 74 68 screen, th
0235D0: 65 20 73 74 72 69 6E 67 20 6D 75 73 74 20 62 65 e string must be
0235E0: 20 65 6E 74 65 72 65 64 20 62 65 74 77 65 65 6E entered between
0235F0: 20 73 69 6E 67 6C 65 20 71 75 6F 74 65 73 2E 0D single quotes..
023600: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
023610: 20 4C 49 54 45 52 41 4C 20 63 6F 6C 75 6D 6E 2C LITERAL column,
023620: 20 72 6F 77 2C 20 27 6C 69 74 65 72 61 6C 20 73 row, 'literal s
023630: 74 72 69 6E 67 20 74 6F 20 62 65 20 64 69 73 70 tring to be disp
023640: 6C 61 79 65 64 27 0D 0A 0D 0A 20 20 20 20 20 20 layed'....
023650: 20 20 20 20 20 20 20 20 65 78 61 6D 70 6C 65 73 examples
023660: 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 :..
023670: 20 4C 49 54 45 52 41 4C 20 30 2C 30 2C 27 2A 20 LITERAL 0,0,'*
023680: 74 68 69 73 20 69 73 20 74 68 65 20 75 70 70 65 this is the uppe
023690: 72 20 6C 65 66 74 20 63 6F 72 6E 65 72 27 0D 0A r left corner'..
0236A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4C 49 LI
0236B0: 54 45 52 41 4C 20 34 30 2C 31 32 2C 27 2A 20 74 TERAL 40,12,'* t
0236C0: 68 69 73 20 69 73 20 61 62 6F 75 74 20 74 68 65 his is about the
0236D0: 20 63 65 6E 74 65 72 27 0D 0A 20 20 20 20 20 20 center'..
0236E0: 20 20 20 20 20 20 20 20 4C 49 54 45 52 41 4C 20 LITERAL
0236F0: 30 2C 32 33 2C 27 62 6F 74 74 6F 6D 20 72 6F 77 0,23,'bottom row
023700: 6C 20 70 72 6F 63 65 64 75 72 65 20 67 65 6E 65 l procedure gene
023710: 72 61 74 65 64 20 62 79 20 43 52 54 4D 41 50 20 rated by CRTMAP
023720: 69 73 20 6E 61 6D 65 64 20 20 43 55 53 54 4D 41 is named CUSTMA
023730: 50 2E 50 41 53 0D 0A 20 20 20 20 20 20 61 6E 64 P.PAS.. and
023740: 20 69 73 20 6C 69 73 74 65 64 2E 0D 0A 0D 0A 20 is listed.....
023750: 20 20 20 20 20 20 20 20 20 20 41 20 63 6F 6D 70 A comp
023760: 6C 65 74 65 20 63 6F 6D 70 69 6C 65 72 20 6C 69 lete compiler li
023770: 73 74 69 6E 67 20 6F 66 20 43 52 54 4D 41 50 2E sting of CRTMAP.
023780: 50 41 53 20 66 6F 6C 6C 6F 77 73 2E 0D 0A 0D 0A PAS follows.....
023790: 20 20 20 20 20 20 4F 70 65 72 61 74 69 6F 6E 20 Operation
0237A0: 66 6C 6F 77 63 68 61 72 74 20 6F 66 20 43 52 54 flowchart of CRT
0237B0: 4D 41 50 20 75 74 69 6C 69 74 79 20 28 76 65 72 MAP utility (ver
0237C0: 20 33 2E 30 29 0D 0A 0D 0A 20 20 20 20 20 20 20 3.0)....
0237D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0237E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 4D 61 70 Map
0237F0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
023800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023810: 20 20 44 65 73 63 72 69 70 74 69 6F 6E 0D 0A 20 Description..
023820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023840: 20 20 20 46 69 6C 65 0D 0A 20 20 20 20 20 20 20 File..
023850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 !
023870: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
023880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023890: 20 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 20 !..
0238A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0238B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0238C0: 20 21 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 !..
0238D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0238E0: 20 20 20 20 20 20 20 20 20 20 21 0D 0A 20 20 20 !..
0238F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023900: 20 6F 66 20 74 68 65 20 63 72 74 27 0D 0A 0D 0A of the crt'....
023910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 63 sc
023920: 72 65 65 6E 20 63 6F 6F 72 64 69 6E 61 74 65 73 reen coordinates
023930: 20 68 61 76 65 20 74 68 65 20 6F 72 69 67 69 6E have the origin
023940: 20 20 30 2C 30 20 20 69 6E 20 20 74 68 65 20 20 0,0 in the
023950: 75 70 70 65 72 20 20 6C 65 66 74 0D 0A 20 20 20 upper left..
023960: 20 20 20 20 20 20 20 20 20 20 20 63 6F 72 6E 65 corne
023970: 72 2C 20 20 66 69 72 73 74 20 6E 75 6D 62 65 72 r, first number
023980: 20 58 20 69 73 20 74 68 65 20 63 6F 6C 75 6D 6E X is the column
023990: 2C 20 73 65 63 6F 6E 64 20 6E 75 6D 62 65 72 20 , second number
0239A0: 59 20 69 73 20 74 68 65 0D 0A 20 20 20 20 20 20 Y is the..
0239B0: 20 20 20 20 20 20 20 20 72 6F 77 2E 0D 0A 0D 0A row.....
0239C0: 20 20 20 20 20 20 46 49 45 4C 44 20 2D 20 63 61 FIELD - ca
0239D0: 75 73 65 73 20 61 20 66 69 65 6C 64 20 69 6E 20 uses a field in
0239E0: 74 68 65 20 69 6E 70 75 74 20 72 65 63 6F 72 64 the input record
0239F0: 20 74 6F 20 20 62 65 20 20 64 69 73 70 6C 61 79 to be display
023A00: 65 64 20 20 61 74 20 20 74 68 65 0D 0A 20 20 20 ed at the..
023A10: 20 20 20 20 20 20 20 20 20 20 20 73 70 65 63 69 speci
023A20: 66 69 65 64 20 20 6C 6F 63 61 74 69 6F 6E 2C 20 fied location,
023A30: 20 6D 61 79 20 20 69 6E 63 6C 75 64 65 20 6F 70 may include op
023A40: 74 69 6F 6E 61 6C 20 6D 69 6E 69 6D 75 6D 20 77 tional minimum w
023A50: 69 64 74 68 20 61 6E 64 0D 0A 20 20 20 20 20 20 idth and..
023A60: 20 20 20 20 20 20 20 20 64 65 63 69 6D 61 6C 20 decimal
023A70: 70 6C 61 63 65 73 20 6E 75 6D 62 65 72 73 20 66 places numbers f
023A80: 6F 72 20 64 69 73 70 6C 61 79 69 6E 67 20 69 6E or displaying in
023A90: 74 65 67 65 72 73 20 61 6E 64 20 72 65 61 6C 73 tegers and reals
023AA0: 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
023AB0: 20 20 20 46 49 45 4C 44 20 63 6F 6C 75 6D 6E 2C FIELD column,
023AC0: 20 72 6F 77 2C 20 66 69 65 6C 64 5F 6E 61 6D 65 row, field_name
023AD0: 20 20 7B 3A 6D 69 6E 5F 77 69 64 74 68 20 7B 3A {:min_width {:
023AE0: 64 65 63 5F 70 6C 61 63 65 73 7D 7D 0D 0A 0D 0A dec_places}}....
023AF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 49 FI
023B00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
023B10: 1E 00 00 00 02 09 2A E5 1E 00 C1 02 00 00 00 02 ......*.........
023B20: 1E 00 C6 02 00 00 00 02 1E 00 C2 02 00 00 00 02 ................
023B30: 1E 00 C7 02 00 00 00 02 1E 00 C3 02 00 00 00 02 ................
023B40: 1E 00 C8 02 00 00 00 02 1E 00 C4 02 00 00 00 02 ................
023B50: 1E 00 C9 02 00 00 00 02 1E 00 C5 02 00 00 00 02 ................
023B60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023B70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023B80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023B90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023BF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023C00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023C10: 20 20 20 56 0D 0A 20 20 20 20 20 20 20 20 20 20 V..
023C20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023C30: 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ------------
023C40: 2D 2D 2D 2D 2D 0D 0A 20 20 20 20 20 20 20 20 20 -----..
023C50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023C60: 20 20 20 20 20 21 20 20 20 20 20 20 20 20 20 20 !
023C70: 20 20 20 20 20 21 0D 0A 20 20 20 20 20 20 20 20 !..
023C80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023C90: 20 20 20 20 20 20 21 20 20 20 43 52 54 4D 41 50 ! CRTMAP
023CA0: 20 20 20 20 20 20 21 0D 0A 20 20 20 20 20 20 20 !..
023CB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023CC0: 20 20 20 20 20 20 20 21 20 20 20 20 75 74 69 6C ! util
023CD0: 74 69 79 20 20 20 20 21 0D 0A 20 20 20 20 20 20 tiy !..
023CE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023CF0: 20 20 20 20 20 20 20 20 21 20 20 20 20 20 20 20 !
023D00: 20 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 20 !..
023D10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023D20: 20 20 20 20 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D -------
023D30: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 20 20 20 20 ----------..
023D40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023D50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023D60: 20 20 21 0D 0A 20 20 20 20 20 20 20 20 20 20 20 !..
023D70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023D80: 20 20 20 20 20 20 20 20 20 20 20 21 0D 0A 20 20 !..
023D90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023DA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023DB0: 20 20 20 20 21 0D 0A 20 20 20 20 20 20 20 20 20 !..
023DC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023DD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 56 0D 0A V..
023DE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023DF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023E00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023E10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023E20: 20 20 20 20 20 20 20 20 20 20 20 21 0D 0A 20 20 !..
023E30: 20 20 20 20 21 20 20 20 20 20 20 20 20 20 20 20 !
023E40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023E50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023E60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023E70: 20 20 20 20 21 0D 0A 20 20 20 20 20 20 21 20 20 !.. !
023E80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023E90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023EA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023EB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 21 0D 0A !..
023EC0: 20 20 20 20 20 20 21 20 20 20 20 20 20 20 20 20 !
023ED0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023EE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023EF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023F00: 20 20 20 20 20 20 21 0D 0A 20 20 20 20 20 20 21 !.. !
023F10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023F20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023F30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023F40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 !
023F50: 0D 0A 20 20 20 20 20 20 21 20 20 20 20 20 20 20 .. !
023F60: 42 61 6C 61 6E 63 65 20 20 24 20 20 20 31 34 39 Balance $ 149
023F70: 30 2E 33 34 20 20 20 20 20 20 20 20 20 20 20 20 0.34
023F80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023F90: 20 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 20 !..
023FA0: 20 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 !
023FB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023FC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023FD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
023FE0: 20 21 0D 0A 20 20 20 20 20 20 21 20 20 20 20 20 !.. !
023FF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024000: 50 61 73 63 61 6C 20 73 6F 75 72 63 65 0D 0A 20 Pascal source..
024010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c
024030: 6F 64 65 20 65 78 74 65 72 6E 61 6C 20 20 20 20 ode external
024040: 20 25 69 6E 63 6C 75 64 65 0D 0A 20 20 20 20 20 %include..
024050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024060: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6F pro
024070: 63 65 64 75 72 65 20 20 20 20 20 20 20 20 20 66 cedure f
024080: 69 6C 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ile..
024090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0240A0: 20 20 20 20 20 20 20 20 20 20 20 21 20 20 20 20 !
0240B0: 20 20 20 20 20 20 20 20 20 20 20 2F 20 0D 0A 20 / ..
0240C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0240D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0240E0: 20 20 20 20 20 21 20 20 20 20 20 20 20 20 20 20 !
0240F0: 20 20 20 20 2F 0D 0A 20 20 20 20 20 20 20 20 20 /..
024100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024110: 20 20 20 20 20 20 20 20 20 20 20 20 20 21 20 20 !
024120: 20 20 20 20 20 20 20 20 20 20 20 2F 0D 0A 20 20 /..
024130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024150: 20 20 20 20 21 20 20 20 20 20 20 20 20 20 20 20 !
024160: 20 2F 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 /..
024170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024180: 20 20 20 20 20 20 20 20 20 20 21 20 20 20 20 20 !
024190: 20 20 20 20 20 20 2F 0D 0A 20 20 20 20 20 20 20 /..
0241A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0241B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 !
0241C0: 20 20 20 20 20 20 20 20 20 20 2F 0D 0A 20 20 20 /..
0241D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0241E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0241F0: 20 20 20 21 20 20 20 20 20 20 20 20 20 2F 0D 0A ! /..
024200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024220: 20 20 20 20 20 20 20 20 20 20 21 0D 0A 20 20 20 !..
024230: 20 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 !
024240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024270: 20 20 20 21 0D 0A 20 20 20 20 20 20 21 20 20 20 !.. !
024280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0242A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0242B0: 20 20 20 20 20 20 20 20 20 20 20 20 21 0D 0A 20 !..
0242C0: 20 20 20 20 20 21 20 20 5F 20 20 20 20 20 20 20 ! _
0242D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0242E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0242F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024300: 20 20 20 20 20 21 0D 0A 20 20 20 20 20 20 21 20 !.. !
024310: 21 5F 21 20 20 20 20 20 20 20 20 20 20 20 20 20 !_!
024320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 0D !.
024350: 0A 20 20 20 20 20 20 21 5F 5F 5F 5F 5F 5F 5F 5F . !________
024360: 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ________________
024370: 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ________________
024380: 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F ________________
024390: 5F 5F 5F 5F 5F 5F 5F 21 0D 0A 20 20 20 20 20 20 _______!..
0243A0: 46 69 6C 65 20 43 55 53 54 4F 4D 45 52 2E 50 41 File CUSTOMER.PA
0243B0: 53 0D 0A 20 20 20 20 20 20 63 6F 6E 74 61 69 6E S.. contain
0243C0: 73 20 54 59 50 45 20 64 65 63 6C 61 72 61 74 69 s TYPE declarati
0243D0: 6F 6E 20 6F 66 20 63 75 73 74 6F 6D 65 72 20 64 on of customer d
0243E0: 61 74 61 20 72 65 63 6F 72 64 0D 0A 0D 0A 20 20 ata record....
0243F0: 20 20 20 20 43 48 41 52 33 30 20 3D 20 41 52 52 CHAR30 = ARR
024400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024420: 20 20 20 20 20 20 21 20 20 20 20 20 20 20 20 2F ! /
024430: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
024440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024450: 20 20 20 20 20 20 20 20 21 20 20 20 20 20 20 20 !
024460: 2F 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 /..
024470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024480: 20 20 20 20 20 20 20 20 20 56 20 20 20 20 20 20 V
024490: 56 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 V..
0244A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0244B0: 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ---------------
0244C0: 2D 2D 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 --..
0244D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0244E0: 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 20 !
0244F0: 20 20 21 0D 0A 20 20 20 20 20 20 20 20 20 20 20 !..
024500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024510: 20 20 20 21 20 20 20 4A 52 54 50 41 53 33 20 20 ! JRTPAS3
024520: 20 20 20 21 0D 0A 20 20 20 20 20 20 20 20 20 20 !..
024530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024540: 20 20 20 20 21 20 20 20 20 20 20 20 20 20 20 20 !
024550: 20 20 20 20 21 0D 0A 20 20 20 20 20 20 20 20 20 !..
024560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024570: 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D -----------
024580: 2D 2D 2D 2D 2D 2D 0D 0A 20 20 20 20 20 20 20 20 ------..
024590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0245A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 0D !.
0245B0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
0245C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0245D0: 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 20 20 !..
0245E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0245F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024600: 41 59 20 5B 31 2E 2E 33 30 5D 20 4F 46 20 43 48 AY [1..30] OF CH
024610: 41 52 3B 0D 0A 20 20 20 20 20 20 43 55 53 54 20 AR;.. CUST
024620: 3D 20 20 20 52 45 43 4F 52 44 0D 0A 20 20 20 20 = RECORD..
024630: 20 20 20 20 20 20 20 20 20 20 20 4E 41 4D 45 20 NAME
024640: 3A 20 43 48 41 52 33 30 3B 0D 0A 20 20 20 20 20 : CHAR30;..
024650: 20 20 20 20 20 20 20 20 20 20 41 44 44 52 45 53 ADDRES
024660: 53 20 3A 20 43 48 41 52 33 30 3B 0D 0A 20 20 20 S : CHAR30;..
024670: 20 20 20 20 20 20 20 20 20 20 20 20 43 49 54 59 CITY
024680: 20 3A 20 43 48 41 52 33 30 3B 0D 0A 20 20 20 20 : CHAR30;..
024690: 20 20 20 20 20 20 20 20 20 20 20 42 41 4C 41 4E BALAN
0246A0: 43 45 20 3A 20 52 45 41 4C 3B 0D 0A 20 20 20 20 CE : REAL;..
0246B0: 20 20 20 20 20 20 20 20 20 20 20 45 4E 44 3B 0D END;.
0246C0: 0A 0D 0A 20 20 20 20 20 20 46 49 4C 45 20 4D 44 ... FILE MD
0246D0: 46 0D 0A 20 20 20 20 20 20 63 6F 6E 74 61 69 6E F.. contain
0246E0: 73 20 4D 61 70 20 44 65 66 69 6E 69 74 69 6F 6E s Map Definition
0246F0: 20 46 69 6C 65 20 77 68 69 63 68 20 64 65 73 63 File which desc
024700: 72 69 62 65 73 20 43 52 54 20 73 63 72 65 65 6E ribes CRT screen
024710: 20 66 6F 72 6D 61 74 0D 0A 0D 0A 20 20 20 20 20 format....
024720: 20 45 58 50 52 4F 43 20 3D 20 43 55 53 54 4D 41 EXPROC = CUSTMA
024730: 50 0D 0A 20 20 20 20 20 20 49 4E 43 4C 55 44 45 P.. INCLUDE
024740: 20 3D 20 43 55 53 54 4F 4D 45 52 2E 50 41 53 0D = CUSTOMER.PAS.
024750: 0A 20 20 20 20 20 20 52 45 43 4F 52 44 20 3D 20 . RECORD =
024760: 43 55 53 54 0D 0A 0D 0A 20 20 20 20 20 20 4C 49 CUST.... LI
024770: 54 45 52 41 4C 20 3D 20 30 2C 30 2C 27 2D 2D 2D TERAL = 0,0,'---
024780: 2D 2D 2D 2D 2D 2D 2D 20 43 55 53 54 4F 4D 45 52 ------- CUSTOMER
024790: 20 52 45 43 4F 52 44 20 2D 2D 2D 2D 2D 2D 2D 2D RECORD --------
0247A0: 2D 2D 27 0D 0A 0D 0A 20 20 20 20 20 20 4C 49 54 --'.... LIT
0247B0: 45 52 41 4C 20 3D 20 35 2C 33 2C 27 4E 61 6D 65 ERAL = 5,3,'Name
0247C0: 20 27 0D 0A 20 20 20 20 20 20 46 49 45 4C 44 20 '.. FIELD
0247D0: 3D 31 32 2C 33 2C 4E 41 4D 45 0D 0A 0D 0A 20 20 =12,3,NAME....
0247E0: 20 20 20 20 4C 49 54 45 52 41 4C 20 3D 20 35 2C LITERAL = 5,
0247F0: 35 2C 27 41 64 64 72 20 27 0D 0A 20 20 20 20 20 5,'Addr '..
024800: 21 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 !..
024810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024820: 20 20 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 !..
024830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024850: 20 20 56 0D 0A 20 20 20 20 20 20 20 20 20 20 20 V..
024860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024870: 20 20 20 20 20 20 20 63 6F 6D 70 69 6C 65 64 0D compiled.
024880: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
024890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0248A0: 20 43 52 54 20 6D 61 70 70 69 6E 67 0D 0A 20 20 CRT mapping..
0248B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0248C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0248D0: 65 78 74 65 72 6E 61 6C 0D 0A 20 20 20 20 20 20 external..
0248E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0248F0: 20 20 20 20 20 20 20 20 20 20 20 70 72 6F 63 65 proce
024900: 64 75 72 65 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A dure............
024910: 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ........
024920: 43 52 54 20 53 63 72 65 65 6E 20 66 6F 72 6D 61 CRT Screen forma
024930: 74 74 65 64 20 62 79 20 43 55 53 54 4D 41 50 20 tted by CUSTMAP
024940: 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 external procedu
024950: 72 65 0D 0A 20 20 20 20 20 20 2D 2D 2D 2D 2D 2D re.. ------
024960: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
024970: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
024980: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
024990: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 20 20 20 -----------..
0249A0: 20 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 !
0249B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0249C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0249D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0249E0: 20 20 20 21 0D 0A 20 20 20 20 20 20 21 20 20 2D !.. ! -
0249F0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 43 55 53 54 4F 4D --------- CUSTOM
024A00: 20 46 49 45 4C 44 20 3D 20 31 32 2C 35 2C 41 44 FIELD = 12,5,AD
024A10: 44 52 45 53 53 0D 0A 0D 0A 20 20 20 20 20 20 4C DRESS.... L
024A20: 49 54 45 52 41 4C 20 3D 20 35 2C 37 2C 27 43 69 ITERAL = 5,7,'Ci
024A30: 74 79 20 27 0D 0A 20 20 20 20 20 20 46 49 45 4C ty '.. FIEL
024A40: 44 20 3D 20 31 32 2C 37 2C 43 49 54 59 0D 0A 0D D = 12,7,CITY...
024A50: 0A 20 20 20 20 20 20 4C 49 54 45 52 41 4C 20 3D . LITERAL =
024A60: 20 31 35 2C 31 34 2C 27 42 61 6C 61 6E 63 65 20 15,14,'Balance
024A70: 24 27 0D 0A 20 20 20 20 20 20 46 49 45 4C 44 20 $'.. FIELD
024A80: 3D 20 31 35 2C 31 34 2C 42 41 4C 41 4E 43 45 3A = 15,14,BALANCE:
024A90: 38 3A 32 0D 0A 0D 0A 20 20 20 20 20 20 43 55 52 8:2.... CUR
024AA0: 53 4F 52 20 3D 20 30 2C 32 32 0D 0A 20 20 20 20 SOR = 0,22..
024AB0: 20 20 45 4E 44 0D 0A 0D 0A 20 20 20 20 20 20 46 END.... F
024AC0: 69 6C 65 20 43 55 53 54 4D 41 50 2E 50 41 53 0D ile CUSTMAP.PAS.
024AD0: 0A 20 20 20 20 20 20 50 61 73 63 61 6C 20 65 78 . Pascal ex
024AE0: 74 65 72 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 ternal procedure
024AF0: 20 67 65 6E 65 72 61 74 65 64 20 62 79 20 43 52 generated by CR
024B00: 54 4D 41 50 20 75 74 69 6C 69 74 79 0D 0A 0D 0A TMAP utility....
024B10: 20 20 20 20 20 20 7B 20 43 52 54 4D 41 50 20 67 { CRTMAP g
024B20: 65 6E 65 72 61 74 65 64 20 65 78 74 65 72 6E 61 enerated externa
024B30: 6C 20 70 72 6F 63 65 64 75 72 65 20 7D 0D 0A 20 l procedure }..
024B40: 20 20 20 20 20 65 78 74 65 72 6E 0D 0A 0D 0A 20 extern....
024B50: 20 20 20 20 20 74 79 70 65 0D 0A 20 20 20 20 20 type..
024B60: 20 25 69 6E 63 6C 75 64 65 20 28 27 43 55 53 54 %include ('CUST
024B70: 4F 4D 45 52 2E 50 41 53 20 20 20 20 27 29 0D 0A OMER.PAS ')..
024B80: 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 64 75 72 .. procedur
024B90: 65 20 43 55 53 54 4D 41 50 20 20 20 20 20 20 20 e CUSTMAP
024BA0: 20 20 28 20 76 61 72 20 72 20 3A 20 43 55 53 54 ( var r : CUST
024BB0: 20 20 20 20 20 20 20 20 20 20 20 20 29 3B 0D 0A );..
024BC0: 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 64 75 72 .. procedur
024BD0: 65 20 63 6C 65 61 72 3B 0D 0A 20 20 20 20 20 20 e clear;..
024BE0: 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 77 72 69 begin.. wri
024BF0: 74 65 28 63 68 72 28 32 37 29 2C 27 2A 27 29 3B te(chr(27),'*');
024C00: 45 52 20 52 45 43 4F 52 44 20 2D 2D 2D 2D 2D 2D ER RECORD ------
024C10: 2D 2D 2D 2D 20 20 20 20 20 20 20 20 20 20 20 20 ----
024C20: 20 20 20 20 20 20 20 20 20 20 20 20 21 0D 0A 20 !..
024C30: 20 20 20 20 20 21 20 20 20 20 20 20 20 20 20 20 !
024C40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024C50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024C60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024C70: 20 20 20 20 20 21 0D 0A 20 20 20 20 20 20 21 20 !.. !
024C80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024C90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024CA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024CB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 0D !.
024CC0: 0A 20 20 20 20 20 20 21 20 20 20 20 20 20 20 4E . ! N
024CD0: 61 6D 65 20 20 50 41 53 43 41 4C 2C 20 42 4C 41 ame PASCAL, BLA
024CE0: 49 53 45 20 20 20 20 20 20 20 20 20 20 20 20 20 ISE
024CF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024D00: 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 20 20 !..
024D10: 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 !
024D20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024D30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024D40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024D50: 21 0D 0A 20 20 20 20 20 20 21 20 20 20 20 20 20 !.. !
024D60: 20 41 64 64 72 20 20 37 37 37 20 52 55 45 20 44 Addr 777 RUE D
024D70: 27 41 52 47 45 4E 54 20 20 20 20 20 20 20 20 20 'ARGENT
024D80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024D90: 20 20 20 20 20 20 20 20 20 21 0D 0A 20 20 20 20 !..
024DA0: 20 20 21 20 20 20 20 20 20 20 20 20 20 20 20 20 !
024DB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024DC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024DD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
024DE0: 20 20 21 0D 0A 20 20 20 20 20 20 21 20 20 20 20 !.. !
024DF0: 20 20 20 43 69 74 79 20 20 50 41 52 49 53 20 20 City PARIS
024E00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
024E10: 1F 00 00 00 02 09 2A E5 1F 00 C1 02 00 00 00 02 ......*.........
024E20: 1F 00 C6 02 00 00 00 02 1F 00 C2 02 00 00 00 02 ................
024E30: 1F 00 C7 02 00 00 00 02 1F 00 C3 02 00 00 00 02 ................
024E40: 1F 00 C8 02 00 00 00 02 1F 00 C4 02 00 00 00 02 ................
024E50: 1F 00 C9 02 00 00 00 02 1F 00 C5 02 00 00 00 02 ................
024E60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024E70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024E80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024E90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024ED0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024F00: 0D 0A 20 20 20 20 20 20 65 6E 64 3B 0D 0A 0D 0A .. end;....
024F10: 20 20 20 20 20 20 70 72 6F 63 65 64 75 72 65 20 procedure
024F20: 67 6F 74 6F 78 79 20 28 20 78 2C 79 20 3A 20 69 gotoxy ( x,y : i
024F30: 6E 74 65 67 65 72 20 29 3B 0D 0A 20 20 20 20 20 nteger );..
024F40: 20 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 77 72 begin.. wr
024F50: 69 74 65 28 63 68 72 28 32 37 29 2C 27 3D 27 2C ite(chr(27),'=',
024F60: 63 68 72 28 79 2B 32 30 68 29 2C 63 68 72 28 78 chr(y+20h),chr(x
024F70: 2B 32 30 68 29 29 3B 0D 0A 20 20 20 20 20 20 65 +20h));.. e
024F80: 6E 64 3B 0D 0A 0D 0A 20 20 20 20 20 20 70 72 6F nd;.... pro
024F90: 63 65 64 75 72 65 20 64 69 73 70 6C 61 79 3B 0D cedure display;.
024FA0: 0A 20 20 20 20 20 20 62 65 67 69 6E 0D 0A 20 20 . begin..
024FB0: 20 20 20 20 63 6C 65 61 72 3B 0D 0A 20 20 20 20 clear;..
024FC0: 20 20 67 6F 74 6F 78 79 28 20 30 20 20 20 20 20 gotoxy( 0
024FD0: 20 20 20 20 20 20 20 20 20 20 2C 30 20 20 20 20 ,0
024FE0: 20 20 20 20 20 20 20 20 20 20 20 29 3B 0D 0A 20 );..
024FF0: 20 20 20 20 20 77 72 69 74 65 28 27 2D 2D 2D 2D write('----
025000: 2D 2D 2D 2D 2D 2D 20 43 55 53 54 4F 4D 45 52 20 ------ CUSTOMER
025010: 52 45 43 4F 52 44 20 2D 2D 2D 2D 2D 2D 2D 2D 2D RECORD ---------
025020: 2D 27 29 3B 0D 0A 20 20 20 20 20 20 67 6F 74 6F -');.. goto
025030: 78 79 28 20 35 20 20 20 20 20 20 20 20 20 20 20 xy( 5
025040: 20 20 20 20 2C 33 20 20 20 20 20 20 20 20 20 20 ,3
025050: 20 20 20 20 20 29 3B 0D 0A 20 20 20 20 20 20 77 );.. w
025060: 72 69 74 65 28 27 4E 61 6D 65 20 27 29 3B 0D 0A rite('Name ');..
025070: 20 20 20 20 20 20 67 6F 74 6F 78 79 28 20 31 32 gotoxy( 12
025080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2C 33 ,3
025090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 )
0250A0: 3B 0D 0A 20 20 20 20 20 20 77 72 69 74 65 28 20 ;.. write(
0250B0: 72 2C 4E 41 4D 45 20 20 20 20 20 20 20 20 20 20 r,NAME
0250C0: 20 20 29 3B 0D 0A 20 20 20 20 20 20 67 6F 74 6F );.. goto
0250D0: 78 79 28 20 35 20 20 20 20 20 20 20 20 20 20 20 xy( 5
0250E0: 20 20 20 20 2C 35 20 20 20 20 20 20 20 20 20 20 ,5
0250F0: 20 20 20 20 20 29 3B 0D 0A 20 20 20 20 20 20 77 );.. w
025100: 61 62 65 6C 20 39 39 3B 0D 0A 30 30 39 31 20 20 abel 99;..0091
025110: 30 30 34 37 3A 20 20 20 20 20 76 61 72 0D 0A 30 0047: var..0
025120: 30 39 31 20 20 30 30 34 37 3A 20 20 20 20 20 69 091 0047: i
025130: 20 3A 20 69 6E 74 65 67 65 72 3B 0D 0A 30 30 39 : integer;..009
025140: 34 20 20 30 30 34 38 3A 20 20 20 20 20 62 65 67 4 0048: beg
025150: 69 6E 0D 0A 30 30 39 44 20 20 30 30 34 39 3A 20 in..009D 0049:
025160: 20 20 20 20 77 6F 72 64 20 3A 3D 20 27 20 27 3B word := ' ';
025170: 0D 0A 30 30 41 43 20 20 30 30 35 30 3A 20 20 20 ..00AC 0050:
025180: 20 20 77 68 69 6C 65 20 6E 6F 74 20 28 63 68 20 while not (ch
025190: 69 6E 20 61 6C 70 68 61 6D 65 72 69 63 29 20 64 in alphameric) d
0251A0: 6F 0D 0A 30 30 41 43 20 20 30 30 35 31 3A 20 20 o..00AC 0051:
0251B0: 20 20 20 20 20 20 20 20 20 20 20 62 65 67 69 6E begin
0251C0: 0D 0A 30 30 42 31 20 20 30 30 35 32 3A 20 20 20 ..00B1 0052:
0251D0: 20 20 20 20 20 20 20 20 20 20 67 65 74 5F 63 68 get_ch
0251E0: 61 72 3B 0D 0A 30 30 42 34 20 20 30 30 35 33 3A ar;..00B4 0053:
0251F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6E 64 end
025200: 3B 0D 0A 30 30 43 34 20 20 30 30 35 34 3A 20 20 ;..00C4 0054:
025210: 20 20 20 77 6F 72 64 5B 31 5D 20 3A 3D 20 63 68 word[1] := ch
025220: 3B 0D 0A 30 30 43 39 20 20 30 30 35 35 3A 20 20 ;..00C9 0055:
025230: 20 20 20 69 20 3A 3D 20 32 3B 0D 0A 30 30 43 45 i := 2;..00CE
025240: 20 20 30 30 35 36 3A 20 20 20 20 20 67 65 74 5F 0056: get_
025250: 63 68 61 72 3B 0D 0A 30 30 44 43 20 20 30 30 35 char;..00DC 005
025260: 37 3A 20 20 20 20 20 77 68 69 6C 65 20 28 63 68 7: while (ch
025270: 20 69 6E 20 61 6C 70 68 61 6D 65 72 69 63 29 20 in alphameric)
025280: 64 6F 0D 0A 30 30 44 43 20 20 30 30 35 38 3A 20 do..00DC 0058:
025290: 20 20 20 20 20 20 20 20 20 20 20 20 62 65 67 69 begi
0252A0: 6E 0D 0A 30 30 45 46 20 20 30 30 35 39 3A 20 20 n..00EF 0059:
0252B0: 20 20 20 20 20 20 20 20 20 20 20 77 6F 72 64 5B word[
0252C0: 69 5D 20 3A 3D 20 63 68 3B 0D 0A 30 30 46 39 20 i] := ch;..00F9
0252D0: 20 30 30 36 30 3A 20 20 20 20 20 20 20 20 20 20 0060:
0252E0: 20 20 20 69 20 3A 3D 20 69 20 2B 20 31 3B 0D 0A i := i + 1;..
0252F0: 30 30 46 45 20 20 30 30 36 31 3A 20 20 20 20 20 00FE 0061:
025300: 72 69 74 65 28 27 41 64 64 72 20 27 29 3B 0D 0A rite('Addr ');..
025310: 20 20 20 20 20 20 67 6F 74 6F 78 79 28 20 31 32 gotoxy( 12
025320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2C 35 ,5
025330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 )
025340: 3B 0D 0A 20 20 20 20 20 20 77 72 69 74 65 28 20 ;.. write(
025350: 72 2C 41 44 44 52 45 53 53 20 20 20 20 20 20 20 r,ADDRESS
025360: 20 20 29 3B 0D 0A 20 20 20 20 20 20 67 6F 74 6F );.. goto
025370: 78 79 28 20 35 20 20 20 20 20 20 20 20 20 20 20 xy( 5
025380: 20 20 20 20 2C 37 20 20 20 20 20 20 20 20 20 20 ,7
025390: 20 20 20 20 20 29 3B 0D 0A 20 20 20 20 20 20 77 );.. w
0253A0: 72 69 74 65 28 27 43 69 74 79 20 27 29 3B 0D 0A rite('City ');..
0253B0: 20 20 20 20 20 20 67 6F 74 6F 78 79 28 20 31 32 gotoxy( 12
0253C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2C 37 ,7
0253D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 )
0253E0: 3B 0D 0A 20 20 20 20 20 20 77 72 69 74 65 28 20 ;.. write(
0253F0: 72 2C 43 49 54 59 20 20 20 20 20 20 20 20 20 20 r,CITY
025400: 20 20 29 3B 0D 0A 20 20 20 20 20 20 67 6F 74 6F );.. goto
025410: 78 79 28 20 35 20 20 20 20 20 20 20 20 20 20 20 xy( 5
025420: 20 20 20 20 2C 31 34 20 20 20 20 20 20 20 20 20 ,14
025430: 20 20 20 20 20 29 3B 0D 0A 20 20 20 20 20 20 77 );.. w
025440: 72 69 74 65 28 27 42 61 6C 61 6E 63 65 20 24 27 rite('Balance $'
025450: 29 3B 0D 0A 20 20 20 20 20 20 67 6F 74 6F 78 79 );.. gotoxy
025460: 28 20 31 35 20 20 20 20 20 20 20 20 20 20 20 20 ( 15
025470: 20 20 2C 31 34 20 20 20 20 20 20 20 20 20 20 20 ,14
025480: 20 20 20 29 3B 0D 0A 20 20 20 20 20 20 77 72 69 );.. wri
025490: 74 65 28 20 72 2C 42 41 4C 41 4E 43 45 3A 38 3A te( r,BALANCE:8:
0254A0: 32 20 20 20 20 20 29 3B 0D 0A 20 20 20 20 20 20 2 );..
0254B0: 67 6F 74 6F 78 79 28 20 30 20 20 20 20 20 20 20 gotoxy( 0
0254C0: 20 20 20 20 20 20 20 20 2C 32 32 20 20 20 20 20 ,22
0254D0: 20 20 20 20 20 20 20 20 20 29 3B 0D 0A 20 20 20 );..
0254E0: 20 20 20 65 6E 64 3B 0D 0A 0D 0A 20 20 20 20 20 end;....
0254F0: 20 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 64 69 begin.. di
025500: 20 20 20 20 20 20 20 20 67 65 74 5F 63 68 61 72 get_char
025510: 3B 0D 0A 30 31 30 31 20 20 30 30 36 32 3A 20 20 ;..0101 0062:
025520: 20 20 20 20 20 20 20 20 20 20 20 65 6E 64 3B 0D end;.
025530: 0A 30 31 30 45 20 20 30 30 36 33 3A 20 20 20 20 .010E 0063:
025540: 20 77 6F 72 64 20 3A 3D 20 75 70 63 61 73 65 28 word := upcase(
025550: 77 6F 72 64 29 3B 0D 0A 30 31 30 46 20 20 30 30 word);..010F 00
025560: 36 34 3A 20 20 20 20 20 65 6E 64 3B 20 7B 67 65 64: end; {ge
025570: 74 5F 77 6F 72 64 7D 0D 0A 30 31 30 46 20 20 30 t_word}..010F 0
025580: 30 36 35 3A 0D 0A 30 31 30 46 20 20 30 30 36 36 065:..010F 0066
025590: 3A 0D 0A 30 31 30 46 20 20 30 30 36 37 3A 20 20 :..010F 0067:
0255A0: 20 20 20 70 72 6F 63 65 64 75 72 65 20 69 6E 69 procedure ini
0255B0: 74 3B 0D 0A 30 31 31 35 20 20 30 30 36 38 3A 20 t;..0115 0068:
0255C0: 20 20 20 20 62 65 67 69 6E 0D 0A 30 31 32 43 20 begin..012C
0255D0: 20 30 30 36 39 3A 20 20 20 20 20 77 72 69 74 65 0069: write
0255E0: 6C 6E 28 27 43 52 54 4D 41 50 20 20 76 65 72 20 ln('CRTMAP ver
0255F0: 33 2E 30 27 29 3B 0D 0A 30 31 33 30 20 20 30 30 3.0');..0130 00
025600: 37 30 3A 20 20 20 20 20 77 72 69 74 65 6C 6E 3B 70: writeln;
025610: 0D 0A 30 31 35 37 20 20 30 30 37 31 3A 20 20 20 ..0157 0071:
025620: 20 20 77 72 69 74 65 28 27 6E 61 6D 65 20 6F 66 write('name of
025630: 20 4D 61 70 20 44 65 73 72 69 70 74 69 6F 6E 20 Map Desription
025640: 46 69 6C 65 20 3A 20 27 29 3B 0D 0A 30 31 36 30 File : ');..0160
025650: 20 20 30 30 37 32 3A 20 20 20 20 20 72 65 61 64 0072: read
025660: 6C 6E 28 6D 61 70 5F 66 69 6C 65 5F 6E 61 6D 65 ln(map_file_name
025670: 29 3B 0D 0A 30 31 36 34 20 20 30 30 37 33 3A 20 );..0164 0073:
025680: 20 20 20 20 77 72 69 74 65 6C 6E 3B 0D 0A 30 31 writeln;..01
025690: 36 38 20 20 30 30 37 34 3A 20 20 20 20 20 77 72 68 0074: wr
0256A0: 69 74 65 6C 6E 3B 0D 0A 30 31 37 37 20 20 30 30 iteln;..0177 00
0256B0: 37 35 3A 20 20 20 20 20 72 65 73 65 74 28 66 31 75: reset(f1
0256C0: 2C 6D 61 70 5F 66 69 6C 65 5F 6E 61 6D 65 2C 62 ,map_file_name,b
0256D0: 69 6E 61 72 79 2C 32 35 36 29 3B 0D 0A 30 31 37 inary,256);..017
0256E0: 43 20 20 30 30 37 36 3A 20 20 20 20 20 65 6E 64 C 0076: end
0256F0: 5F 6F 66 5F 66 69 6C 65 20 3A 3D 20 66 61 6C 73 _of_file := fals
025700: 73 70 6C 61 79 3B 0D 0A 20 20 20 20 20 20 65 6E splay;.. en
025710: 64 3B 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 d;.....
025720: 20 20 20 20 20 20 20 2D 2D 2D 2D 2D 20 43 52 54 ----- CRT
025730: 20 4D 61 70 70 69 6E 67 20 55 74 69 6C 69 74 79 Mapping Utility
025740: 20 2D 2D 2D 2D 2D 0D 0A 0D 0A 30 30 30 30 20 20 -----....0000
025750: 30 30 30 32 3A 20 20 20 20 20 25 70 61 67 65 28 0002: %page(
025760: 35 30 29 0D 0A 30 30 30 30 20 20 30 30 30 33 3A 50)..0000 0003:
025770: 0D 0A 30 30 30 30 20 20 30 30 30 34 3A 20 20 20 ..0000 0004:
025780: 20 20 7B 20 54 68 69 73 20 76 65 72 73 69 6F 6E { This version
025790: 20 73 65 74 75 70 20 66 6F 72 20 54 65 6C 65 76 setup for Telev
0257A0: 69 64 65 6F 20 74 65 72 6D 69 6E 61 6C 73 2E 20 ideo terminals.
0257B0: 54 6F 20 61 64 61 70 74 20 74 6F 20 6F 74 68 0D To adapt to oth.
0257C0: 0A 30 30 30 30 20 20 30 30 30 35 3A 20 20 20 20 .0000 0005:
0257D0: 20 74 65 72 6D 69 6E 61 6C 73 20 6D 6F 64 69 66 terminals modif
0257E0: 79 20 50 52 4F 43 45 44 55 52 45 20 50 41 52 54 y PROCEDURE PART
0257F0: 32 20 77 68 69 63 68 20 67 65 6E 65 72 61 74 65 2 which generate
025800: 73 20 74 68 65 20 63 75 72 73 6F 72 0D 0A 30 30 s the cursor..00
025810: 30 30 20 20 30 30 30 36 3A 20 20 20 20 20 70 6F 00 0006: po
025820: 73 69 74 69 6F 6E 69 6E 67 20 28 67 6F 74 6F 78 sitioning (gotox
025830: 79 29 20 61 6E 64 20 63 6C 65 61 72 20 73 63 72 y) and clear scr
025840: 65 65 6E 20 28 63 6C 65 61 72 29 20 63 6F 64 65 een (clear) code
025850: 73 2E 20 7D 0D 0A 30 30 30 30 20 20 30 30 30 37 s. }..0000 0007
025860: 3A 0D 0A 30 30 30 30 20 20 30 30 30 38 3A 20 20 :..0000 0008:
025870: 20 20 20 70 72 6F 67 72 61 6D 20 63 72 74 6D 61 program crtma
025880: 70 3B 0D 0A 30 30 30 30 20 20 30 30 30 39 3A 0D p;..0000 0009:.
025890: 0A 30 30 30 33 20 20 30 30 31 30 3A 20 20 20 20 .0003 0010:
0258A0: 20 74 79 70 65 0D 0A 30 30 31 30 20 20 30 30 31 type..0010 001
0258B0: 31 3A 20 20 20 20 20 63 68 61 72 31 36 20 3D 20 1: char16 =
0258C0: 61 72 72 61 79 20 5B 31 2E 2E 31 36 5D 20 6F 66 array [1..16] of
0258D0: 20 63 68 61 72 3B 0D 0A 30 30 31 30 20 20 30 30 char;..0010 00
0258E0: 31 32 3A 0D 0A 30 30 31 30 20 20 30 30 31 33 3A 12:..0010 0013:
0258F0: 20 20 20 20 20 76 61 72 0D 0A 30 30 31 30 20 20 var..0010
025900: 65 3B 0D 0A 30 31 38 35 20 20 30 30 37 37 3A 20 e;..0185 0077:
025910: 20 20 20 20 63 68 20 3A 3D 20 27 20 27 3B 0D 0A ch := ' ';..
025920: 30 31 41 37 20 20 30 30 37 38 3A 20 20 20 20 20 01A7 0078:
025930: 61 6C 70 68 61 6D 65 72 69 63 20 3A 3D 20 5B 27 alphameric := ['
025940: 41 27 2E 2E 27 5A 27 2C 27 61 27 2E 2E 27 7A 27 A'..'Z','a'..'z'
025950: 2C 27 30 27 2E 2E 27 39 27 2C 27 3A 27 2C 27 2E ,'0'..'9',':','.
025960: 27 5D 3B 0D 0A 30 31 41 43 20 20 30 30 37 39 3A '];..01AC 0079:
025970: 20 20 20 20 20 67 65 74 5F 77 6F 72 64 3B 0D 0A get_word;..
025980: 30 31 45 31 20 20 30 30 38 30 3A 20 20 20 20 20 01E1 0080:
025990: 69 66 20 77 6F 72 64 20 3C 3E 20 27 45 58 50 52 if word <> 'EXPR
0259A0: 4F 43 27 20 74 68 65 6E 20 65 72 72 6F 72 28 27 OC' then error('
0259B0: 45 58 50 52 4F 43 20 63 6F 6D 6D 61 6E 64 20 65 EXPROC command e
0259C0: 78 70 65 63 74 65 64 27 29 3B 0D 0A 30 31 45 36 xpected');..01E6
0259D0: 20 20 30 30 38 31 3A 20 20 20 20 20 67 65 74 5F 0081: get_
0259E0: 77 6F 72 64 3B 0D 0A 30 31 46 32 20 20 30 30 38 word;..01F2 008
0259F0: 32 3A 20 20 20 20 20 65 78 70 72 6F 63 5F 6E 61 2: exproc_na
025A00: 6D 65 20 3A 3D 20 77 6F 72 64 3B 0D 0A 30 32 30 me := word;..020
025A10: 41 20 20 30 30 38 33 3A 20 20 20 20 20 72 65 77 A 0083: rew
025A20: 72 69 74 65 28 66 32 2C 20 65 78 70 72 6F 63 5F rite(f2, exproc_
025A30: 6E 61 6D 65 20 2B 20 27 2E 70 61 73 27 2C 20 62 name + '.pas', b
025A40: 69 6E 61 72 79 2C 20 32 35 36 29 3B 0D 0A 30 32 inary, 256);..02
025A50: 30 46 20 20 30 30 38 34 3A 20 20 20 20 20 67 65 0F 0084: ge
025A60: 74 5F 77 6F 72 64 3B 0D 0A 30 32 34 36 20 20 30 t_word;..0246 0
025A70: 30 38 35 3A 20 20 20 20 20 69 66 20 77 6F 72 64 085: if word
025A80: 20 3C 3E 20 27 49 4E 43 4C 55 44 45 27 20 74 68 <> 'INCLUDE' th
025A90: 65 6E 20 65 72 72 6F 72 28 27 49 4E 43 4C 55 44 en error('INCLUD
025AA0: 45 27 20 63 6F 6D 6D 61 6E 64 20 65 78 70 65 63 E' command expec
025AB0: 74 65 64 27 29 3B 0D 0A 30 32 34 42 20 20 30 30 ted');..024B 00
025AC0: 38 36 3A 20 20 20 20 20 67 65 74 5F 77 6F 72 64 86: get_word
025AD0: 3B 0D 0A 30 32 35 37 20 20 30 30 38 37 3A 20 20 ;..0257 0087:
025AE0: 20 20 20 69 6E 63 6C 75 64 65 5F 6E 61 6D 65 20 include_name
025AF0: 3A 3D 20 77 6F 72 64 3B 0D 0A 30 32 35 43 20 20 := word;..025C
025B00: 30 30 31 34 3A 20 20 20 20 20 63 68 20 3A 20 63 0014: ch : c
025B10: 68 61 72 3B 0D 0A 30 30 31 30 20 20 30 30 31 35 har;..0010 0015
025B20: 3A 20 20 20 20 20 61 6C 70 68 61 6D 65 72 69 63 : alphameric
025B30: 20 3A 20 73 65 74 20 6F 66 20 63 68 61 72 3B 0D : set of char;.
025B40: 0A 30 30 31 30 20 20 30 30 31 36 3A 20 20 20 20 .0010 0016:
025B50: 20 65 6E 64 5F 6F 66 5F 66 69 6C 65 20 3A 20 62 end_of_file : b
025B60: 6F 6F 6C 65 61 6E 3B 0D 0A 30 30 31 30 20 20 30 oolean;..0010 0
025B70: 30 31 37 3A 20 20 20 20 20 6D 61 70 5F 66 69 6C 017: map_fil
025B80: 65 5F 6E 61 6D 65 20 3A 20 73 74 72 69 6E 67 5B e_name : string[
025B90: 31 35 5D 3B 0D 0A 30 30 31 30 20 20 30 30 31 38 15];..0010 0018
025BA0: 3A 20 20 20 20 20 77 6F 72 64 20 3A 20 63 68 61 : word : cha
025BB0: 72 31 36 3B 0D 0A 30 30 31 30 20 20 30 30 31 39 r16;..0010 0019
025BC0: 3A 20 20 20 20 20 65 78 70 72 6F 63 5F 6E 61 6D : exproc_nam
025BD0: 65 20 3A 20 63 68 61 72 31 36 3B 0D 0A 30 30 31 e : char16;..001
025BE0: 30 20 20 30 30 32 30 3A 20 20 20 20 20 69 6E 63 0 0020: inc
025BF0: 6C 75 64 65 5F 6E 61 6D 65 20 3A 20 63 68 61 72 lude_name : char
025C00: 31 36 3B 0D 0A 30 30 31 30 20 20 30 30 32 31 3A 16;..0010 0021:
025C10: 20 20 20 20 20 72 65 63 6F 72 64 5F 6E 61 6D 65 record_name
025C20: 20 3A 20 63 68 61 72 31 36 3B 0D 0A 30 30 31 30 : char16;..0010
025C30: 20 20 30 30 32 32 3A 20 20 20 20 20 66 31 2C 20 0022: f1,
025C40: 66 32 20 3A 20 66 69 6C 65 20 6F 66 20 63 68 61 f2 : file of cha
025C50: 72 3B 0D 0A 30 30 31 30 20 20 30 30 32 33 3A 0D r;..0010 0023:.
025C60: 0A 30 30 31 30 20 20 30 30 32 34 3A 0D 0A 30 30 .0010 0024:..00
025C70: 31 30 20 20 30 30 32 35 3A 20 20 20 20 20 70 72 10 0025: pr
025C80: 6F 63 65 64 75 72 65 20 65 72 72 6F 72 20 28 20 ocedure error (
025C90: 6D 73 67 20 3A 20 73 74 72 69 6E 67 5B 34 30 5D msg : string[40]
025CA0: 20 29 3B 0D 0A 30 30 31 33 20 20 30 30 32 36 3A );..0013 0026:
025CB0: 20 20 20 20 20 76 61 72 0D 0A 30 30 31 33 20 20 var..0013
025CC0: 30 30 32 37 3A 20 20 20 20 20 64 75 6D 6D 79 20 0027: dummy
025CD0: 3A 20 63 68 61 72 31 36 3B 0D 0A 30 30 31 36 20 : char16;..0016
025CE0: 20 30 30 32 38 3A 20 20 20 20 20 62 65 67 69 6E 0028: begin
025CF0: 0D 0A 30 30 31 41 20 20 30 30 32 39 3A 20 20 20 ..001A 0029:
025D00: 30 30 38 38 3A 20 20 20 20 20 67 65 74 5F 77 6F 0088: get_wo
025D10: 72 64 3B 0D 0A 30 32 39 31 20 20 30 30 38 39 3A rd;..0291 0089:
025D20: 20 20 20 20 20 69 66 20 77 6F 72 64 20 3C 3E 20 if word <>
025D30: 27 52 45 43 4F 52 44 27 20 74 68 65 6E 20 65 72 'RECORD' then er
025D40: 72 6F 72 28 27 52 45 43 4F 52 44 27 20 63 6F 6D ror('RECORD' com
025D50: 6D 61 6E 64 20 65 78 70 65 63 74 65 64 27 29 3B mand expected');
025D60: 0D 0A 30 32 39 36 20 20 30 30 39 30 3A 20 20 20 ..0296 0090:
025D70: 20 20 67 65 74 5F 77 6F 72 64 3B 0D 0A 30 32 41 get_word;..02A
025D80: 32 20 20 30 30 39 31 3A 20 20 20 20 20 72 65 63 2 0091: rec
025D90: 6F 72 64 5F 6E 61 6D 65 20 3A 3D 20 77 6F 72 64 ord_name := word
025DA0: 3B 0D 0A 30 32 41 33 20 20 30 30 39 32 3A 20 20 ;..02A3 0092:
025DB0: 20 20 20 65 6E 64 3B 20 7B 69 6E 69 74 7D 0D 0A end; {init}..
025DC0: 30 32 41 33 20 20 30 30 39 33 3A 0D 0A 30 32 41 02A3 0093:..02A
025DD0: 33 20 20 30 30 39 34 3A 0D 0A 30 32 41 33 20 20 3 0094:..02A3
025DE0: 30 30 39 35 3A 20 20 20 20 20 70 72 6F 63 65 64 0095: proced
025DF0: 75 72 65 20 70 61 72 74 31 3B 0D 0A 30 32 41 39 ure part1;..02A9
025E00: 20 20 30 30 39 36 3A 20 20 20 20 20 62 65 67 69 0096: begi
025E10: 6E 0D 0A 30 32 44 46 20 20 30 30 39 37 3A 20 20 n..02DF 0097:
025E20: 20 20 20 77 72 69 74 65 6C 6E 28 66 32 3B 20 27 writeln(f2; '
025E30: 7B 43 52 54 4D 41 50 20 67 65 6E 65 72 61 74 65 {CRTMAP generate
025E40: 64 20 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 d external proce
025E50: 64 75 72 65 20 7D 27 29 3B 0D 0A 30 32 46 34 20 dure }');..02F4
025E60: 20 30 30 39 38 3A 20 20 20 20 20 77 72 69 74 65 0098: write
025E70: 6C 6E 28 66 32 3B 20 27 65 78 74 65 72 6E 27 29 ln(f2; 'extern')
025E80: 3B 0D 0A 30 32 46 46 20 20 30 30 39 39 3A 20 20 ;..02FF 0099:
025E90: 20 20 20 77 72 69 74 65 6C 6E 28 66 32 29 3B 0D writeln(f2);.
025EA0: 0A 30 33 31 32 20 20 30 31 30 30 3A 20 20 20 20 .0312 0100:
025EB0: 20 77 72 69 74 65 6C 6E 28 66 32 3B 20 27 74 79 writeln(f2; 'ty
025EC0: 70 65 27 29 3B 0D 0A 30 33 33 43 20 20 30 31 30 pe');..033C 010
025ED0: 31 3A 20 20 20 20 20 77 72 69 74 65 6C 6E 28 66 1: writeln(f
025EE0: 32 3B 20 27 25 69 6E 63 6C 75 64 65 20 28 27 27 2; '%include (''
025EF0: 27 2C 69 6E 63 6C 75 64 65 5F 6E 61 6D 65 2C 27 ',include_name,'
025F00: 20 20 77 72 69 74 65 6C 6E 3B 0D 0A 30 30 31 45 writeln;..001E
025F10: 20 20 30 30 33 30 3A 20 20 20 20 20 77 72 69 74 0030: writ
025F20: 65 6C 6E 3B 0D 0A 30 30 32 38 20 20 30 30 33 31 eln;..0028 0031
025F30: 3A 20 20 20 20 20 77 72 69 74 65 6C 6E 28 6D 73 : writeln(ms
025F40: 67 29 3B 0D 0A 30 30 32 43 20 20 30 30 33 32 3A g);..002C 0032:
025F50: 20 20 20 20 20 77 72 69 74 65 6C 6E 3B 0D 0A 30 writeln;..0
025F60: 30 32 43 20 20 30 30 33 33 3A 20 20 20 20 20 7B 02C 0033: {
025F70: 20 61 62 6E 6F 72 6D 61 6C 6C 79 20 74 65 72 6D abnormally term
025F80: 69 6E 61 74 65 20 2D 20 72 65 74 75 72 6E 20 74 inate - return t
025F90: 6F 20 43 50 2F 4D 20 7D 0D 0A 30 30 33 34 20 20 o CP/M }..0034
025FA0: 30 30 33 34 3A 20 20 20 20 20 63 61 6C 6C 28 30 0034: call(0
025FB0: 2C 64 75 6D 6D 79 2C 64 75 6D 6D 79 29 3B 0D 0A ,dummy,dummy);..
025FC0: 30 30 33 35 20 20 30 30 33 35 3A 20 20 20 20 20 0035 0035:
025FD0: 65 6E 64 3B 0D 0A 30 30 33 35 20 20 30 30 33 36 end;..0035 0036
025FE0: 3A 0D 0A 30 30 33 35 20 20 30 30 33 37 3A 20 20 :..0035 0037:
025FF0: 20 20 20 70 72 6F 63 65 64 75 72 65 20 67 65 74 procedure get
026000: 5F 63 68 61 72 3B 0D 0A 30 30 33 42 20 20 30 30 _char;..003B 00
026010: 33 38 3A 20 20 20 20 20 62 65 67 69 6E 0D 0A 30 38: begin..0
026020: 30 34 43 20 20 30 30 33 39 3A 20 20 20 20 20 72 04C 0039: r
026030: 65 61 64 28 66 31 3B 20 63 68 29 3B 0D 0A 30 30 ead(f1; ch);..00
026040: 38 31 20 20 30 30 34 30 3A 20 20 20 20 20 69 66 81 0040: if
026050: 20 63 68 20 3D 20 63 68 72 28 31 61 68 29 20 74 ch = chr(1ah) t
026060: 68 65 6E 20 65 72 72 6F 72 28 27 50 72 65 6D 61 hen error('Prema
026070: 74 75 72 65 20 65 6E 64 20 6F 66 20 69 6E 70 75 ture end of inpu
026080: 74 20 66 69 6C 65 27 29 3B 0D 0A 30 30 38 44 20 t file');..008D
026090: 20 30 30 34 31 3A 20 20 20 20 20 77 72 69 74 65 0041: write
0260A0: 28 63 68 29 3B 0D 0A 30 30 38 45 20 20 30 30 34 (ch);..008E 004
0260B0: 32 3A 20 20 20 20 20 65 6E 64 3B 0D 0A 30 30 38 2: end;..008
0260C0: 45 20 20 30 30 34 33 3A 0D 0A 30 30 38 45 20 20 E 0043:..008E
0260D0: 30 30 34 34 3A 20 20 20 20 20 70 72 6F 63 65 64 0044: proced
0260E0: 75 72 65 20 67 65 74 5F 77 6F 72 64 3B 0D 0A 30 ure get_word;..0
0260F0: 30 39 31 20 20 30 30 34 35 3A 20 20 20 20 20 6C 091 0045: l
026100: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
026110: 20 00 00 00 02 09 2A E5 20 00 C1 02 00 00 00 02 .....*. .......
026120: 20 00 C6 02 00 00 00 02 20 00 C2 02 00 00 00 02 ....... .......
026130: 20 00 C7 02 00 00 00 02 20 00 C3 02 00 00 00 02 ....... .......
026140: 20 00 C8 02 00 00 00 02 20 00 C4 02 00 00 00 02 ....... .......
026150: 20 00 C9 02 00 00 00 02 20 00 C5 02 00 00 00 02 ....... .......
026160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0261F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026200: 27 27 29 27 29 3B 0D 0A 30 33 34 37 20 20 30 31 '')');..0347 01
026210: 30 32 3A 20 20 20 20 20 77 72 69 74 65 6C 6E 28 02: writeln(
026220: 66 32 29 3B 0D 0A 30 33 38 36 20 20 30 31 30 33 f2);..0386 0103
026230: 3A 20 20 20 20 20 77 72 69 74 65 6C 6E 28 66 32 : writeln(f2
026240: 3B 20 27 70 72 6F 63 65 64 75 72 65 20 27 2C 65 ; 'procedure ',e
026250: 78 70 72 6F 63 5F 6E 61 6D 65 2C 20 27 28 76 61 xproc_name, '(va
026260: 72 20 72 20 3A 20 27 2E 72 65 63 6F 72 5F 6E 61 r r : '.recor_na
026270: 6D 0D 0A 27 29 3B 27 29 3B 0D 0A 30 33 39 31 20 m..');');..0391
026280: 20 30 31 30 34 3A 20 20 20 20 20 77 72 69 74 65 0104: write
026290: 6C 6E 28 66 32 29 3B 0D 0A 30 33 39 32 20 20 30 ln(f2);..0392 0
0262A0: 31 30 35 3A 20 20 20 20 20 65 6E 64 3B 20 7B 70 105: end; {p
0262B0: 61 72 74 31 7D 0D 0A 30 33 39 32 20 20 30 31 30 art1}..0392 010
0262C0: 36 3A 0D 0A 30 33 39 32 20 20 30 31 30 37 3A 0D 6:..0392 0107:.
0262D0: 0A 30 33 39 32 20 20 30 31 30 38 3A 20 20 20 20 .0392 0108:
0262E0: 20 70 72 6F 63 65 64 75 72 65 20 70 61 72 74 32 procedure part2
0262F0: 3B 0D 0A 30 33 39 38 20 20 30 31 30 39 3A 20 20 ;..0398 0109:
026300: 20 20 20 62 65 67 69 6E 0D 0A 30 33 42 37 20 20 begin..03B7
026310: 30 31 31 30 3A 20 20 20 20 20 77 72 69 74 65 6C 0110: writel
026320: 6E 28 66 32 3B 20 27 70 72 6F 63 65 64 75 72 65 n(f2; 'procedure
026330: 20 63 6C 65 61 72 3B 27 29 3B 0D 0A 30 33 43 42 clear;');..03CB
026340: 20 20 30 31 31 31 3A 20 20 20 20 20 77 72 69 74 0111: writ
026350: 65 6C 6E 28 66 32 3B 20 27 62 65 67 69 6E 27 29 eln(f2; 'begin')
026360: 3B 0D 0A 30 33 45 44 20 20 30 31 31 32 3A 20 20 ;..03ED 0112:
026370: 20 20 20 77 72 69 74 65 6C 6E 28 66 32 3B 20 27 writeln(f2; '
026380: 77 72 69 74 65 28 63 68 72 28 32 37 29 2C 27 27 write(chr(27),''
026390: 2A 27 27 29 3B 27 29 3B 0D 0A 30 34 30 30 20 20 *'');');..0400
0263A0: 30 31 31 33 3A 20 20 20 20 20 77 72 69 74 65 6C 0113: writel
0263B0: 6E 28 66 32 3B 20 27 65 6E 64 3B 27 29 3B 0D 0A n(f2; 'end;');..
0263C0: 30 34 30 42 20 20 30 31 31 34 3A 20 20 20 20 20 040B 0114:
0263D0: 77 72 69 74 65 6C 6E 28 66 32 29 3B 0D 0A 30 34 writeln(f2);..04
0263E0: 33 44 20 20 30 31 31 35 3A 20 20 20 20 20 77 72 3D 0115: wr
0263F0: 69 74 65 6C 6E 28 66 32 3B 20 27 70 72 6F 63 65 iteln(f2; 'proce
026400: 0D 0A 30 36 38 34 20 20 30 31 37 30 3A 20 20 20 ..0684 0170:
026410: 20 20 20 20 20 20 20 20 20 20 27 43 55 52 53 4F 'CURSO
026420: 52 27 20 3A 20 70 72 6F 63 65 73 73 5F 63 6F 6F R' : process_coo
026430: 72 64 69 6E 61 74 65 73 3B 0D 0A 30 36 39 36 20 rdinates;..0696
026440: 20 30 31 37 31 3A 20 20 20 20 20 20 20 20 20 20 0171:
026450: 20 20 20 27 45 4E 44 27 20 3A 20 65 6E 64 5F 6F 'END' : end_o
026460: 66 5F 66 69 6C 65 20 3A 3D 20 74 72 75 65 3B 0D f_file := true;.
026470: 0A 30 36 44 33 20 20 30 31 37 32 3A 20 20 20 20 .06D3 0172:
026480: 20 20 20 20 20 20 20 20 20 65 6C 73 65 20 3A 20 else :
026490: 65 72 72 6F 72 28 27 4C 49 54 45 52 41 4C 2C 20 error('LITERAL,
0264A0: 46 49 45 4C 44 2C 20 43 55 52 53 4F 52 2C 20 6F FIELD, CURSOR, o
0264B0: 72 20 45 4E 44 20 63 6F 6D 6D 61 6E 64 20 65 78 r END command ex
0264C0: 0D 0A 63 74 65 64 27 29 3B 0D 0A 30 36 44 34 20 ..cted');..06D4
0264D0: 20 30 31 37 33 3A 20 20 20 20 20 20 20 20 20 20 0173:
0264E0: 20 20 20 65 6E 64 3B 0D 0A 30 36 44 37 20 20 30 end;..06D7 0
0264F0: 31 37 34 3A 20 20 20 20 20 20 20 20 20 20 20 20 174:
026500: 20 65 6E 64 3B 0D 0A 30 36 45 41 20 20 30 31 37 end;..06EA 017
026510: 35 3A 20 20 20 20 20 77 72 69 74 65 6C 6E 28 66 5: writeln(f
026520: 32 3B 20 27 65 6E 64 3B 27 20 29 3B 0D 0A 30 36 2; 'end;' );..06
026530: 46 35 20 20 30 31 37 36 3A 20 20 20 20 20 77 72 F5 0176: wr
026540: 69 74 65 6C 6E 28 66 32 29 3B 0D 0A 30 36 46 36 iteln(f2);..06F6
026550: 20 20 30 31 37 37 3A 20 20 20 20 20 65 6E 64 3B 0177: end;
026560: 20 7B 70 61 72 74 33 7D 0D 0A 30 36 46 36 20 20 {part3}..06F6
026570: 30 31 37 38 3A 0D 0A 30 36 46 36 20 20 30 31 37 0178:..06F6 017
026580: 39 3A 0D 0A 30 36 46 36 20 20 30 31 38 30 3A 20 9:..06F6 0180:
026590: 20 20 20 20 70 72 6F 63 65 64 75 72 65 20 70 61 procedure pa
0265A0: 72 74 39 3B 0D 0A 30 36 46 43 20 20 30 31 38 31 rt9;..06FC 0181
0265B0: 3A 20 20 20 20 20 62 65 67 69 6E 0D 0A 30 37 31 : begin..071
0265C0: 30 20 20 30 31 38 32 3A 20 20 20 20 20 77 72 69 0 0182: wri
0265D0: 74 65 6C 6E 28 66 32 3B 20 27 62 65 67 69 6E 27 teln(f2; 'begin'
0265E0: 29 3B 0D 0A 30 37 32 37 20 20 30 31 38 33 3A 20 );..0727 0183:
0265F0: 20 20 20 20 77 72 69 74 65 6C 6E 28 66 32 3B 20 writeln(f2;
026600: 64 75 72 65 20 67 6F 74 6F 78 79 20 28 20 78 2C dure gotoxy ( x,
026610: 79 20 3A 20 69 6E 74 65 67 65 72 20 29 3B 27 29 y : integer );')
026620: 3B 0D 0A 30 34 35 31 20 20 30 31 31 36 3A 20 20 ;..0451 0116:
026630: 20 20 20 77 72 69 74 65 6C 6E 28 66 32 3B 20 27 writeln(f2; '
026640: 62 65 67 69 6E 27 29 3B 0D 0A 30 34 38 39 20 20 begin');..0489
026650: 30 31 31 37 3A 20 20 20 20 20 77 72 69 74 65 6C 0117: writel
026660: 6E 28 66 32 3B 20 27 77 72 69 74 65 28 63 68 72 n(f2; 'write(chr
026670: 28 32 37 29 2C 27 27 3D 27 27 2C 63 68 72 28 79 (27),''='',chr(y
026680: 2B 32 30 68 29 2C 63 68 72 28 78 2B 32 30 68 29 +20h),chr(x+20h)
026690: 29 3B 27 29 3B 0D 0A 30 34 39 43 20 20 30 31 31 );');..049C 011
0266A0: 38 3A 20 20 20 20 20 77 72 69 74 65 6C 6E 28 66 8: writeln(f
0266B0: 32 3B 20 27 65 6E 64 3B 27 29 3B 0D 0A 30 34 41 2; 'end;');..04A
0266C0: 37 20 20 30 31 31 39 3A 20 20 20 20 20 77 72 69 7 0119: wri
0266D0: 74 65 6C 6E 28 66 32 29 3B 0D 0A 30 34 41 38 20 teln(f2);..04A8
0266E0: 20 30 31 32 30 3A 20 20 20 20 20 65 6E 64 3B 20 0120: end;
0266F0: 7B 70 61 72 74 32 7D 0D 0A 30 34 41 38 20 20 30 {part2}..04A8 0
026700: 31 32 31 3A 0D 0A 30 34 41 38 20 20 30 31 32 32 121:..04A8 0122
026710: 3A 0D 0A 30 34 41 38 20 20 30 31 32 33 3A 20 20 :..04A8 0123:
026720: 20 20 20 70 72 6F 63 65 64 75 72 65 20 70 61 72 procedure par
026730: 74 33 3B 20 20 20 20 20 20 20 7B 63 72 65 61 74 t3; {creat
026740: 65 20 44 49 53 50 4C 41 59 20 70 72 6F 63 65 64 e DISPLAY proced
026750: 75 72 65 7D 0D 0A 30 34 41 38 20 20 30 31 32 34 ure}..04A8 0124
026760: 3A 0D 0A 30 34 41 42 20 20 30 31 32 35 3A 20 20 :..04AB 0125:
026770: 20 20 20 70 72 6F 63 65 64 75 72 65 20 70 72 6F procedure pro
026780: 63 65 73 73 5F 63 6F 6F 72 64 69 6E 61 74 65 73 cess_coordinates
026790: 3B 0D 0A 30 34 41 45 20 20 30 31 32 36 3A 20 20 ;..04AE 0126:
0267A0: 20 20 20 76 61 72 0D 0A 30 34 41 45 20 20 30 31 var..04AE 01
0267B0: 32 37 3A 20 20 20 20 20 78 5F 63 6F 6F 72 64 2C 27: x_coord,
0267C0: 20 79 5F 63 6F 6F 72 64 20 3A 20 63 68 61 72 31 y_coord : char1
0267D0: 36 3B 0D 0A 30 34 42 31 20 20 30 31 32 38 3A 20 6;..04B1 0128:
0267E0: 20 20 20 20 62 65 67 69 6E 0D 0A 30 34 42 36 20 begin..04B6
0267F0: 20 30 31 32 39 3A 20 20 20 20 20 67 65 74 5F 77 0129: get_w
026800: 27 64 69 73 70 6C 61 79 3B 27 29 3B 0D 0A 30 37 'display;');..07
026810: 33 42 20 20 30 31 38 34 3A 20 20 20 20 20 77 72 3B 0184: wr
026820: 69 74 65 6C 6E 28 66 32 3B 20 27 65 6E 64 3B 2E iteln(f2; 'end;.
026830: 27 29 3B 0D 0A 30 37 33 43 20 20 30 31 38 35 3A ');..073C 0185:
026840: 20 20 20 20 20 65 6E 64 3B 20 7B 70 61 72 74 39 end; {part9
026850: 7D 0D 0A 30 37 33 43 20 20 30 31 38 36 3A 0D 0A }..073C 0186:..
026860: 30 37 33 43 20 20 30 31 38 37 3A 0D 0A 30 37 33 073C 0187:..073
026870: 46 20 20 30 31 38 38 3A 20 20 20 20 20 62 65 67 F 0188: beg
026880: 69 6E 20 7B 63 72 74 6D 61 70 7D 0D 0A 30 37 34 in {crtmap}..074
026890: 34 20 20 30 31 38 39 3A 20 20 20 20 20 69 6E 69 4 0189: ini
0268A0: 74 3B 0D 0A 30 37 34 39 20 20 30 31 39 30 3A 20 t;..0749 0190:
0268B0: 20 20 20 20 70 61 72 74 31 3B 0D 0A 30 37 34 45 part1;..074E
0268C0: 20 20 30 31 39 31 3A 20 20 20 20 20 70 61 72 74 0191: part
0268D0: 32 3B 0D 0A 30 37 35 33 20 20 30 31 39 32 3A 20 2;..0753 0192:
0268E0: 20 20 20 20 70 61 72 74 33 3B 0D 0A 30 37 35 38 part3;..0758
0268F0: 20 20 30 31 39 33 3A 20 20 20 20 20 70 61 72 74 0193: part
026900: 39 3B 0D 0A 30 37 35 43 20 20 30 31 39 34 3A 20 9;..075C 0194:
026910: 20 20 20 20 63 6C 6F 73 65 28 66 31 29 3B 0D 0A close(f1);..
026920: 30 37 36 30 20 20 30 31 39 35 3A 20 20 20 20 20 0760 0195:
026930: 63 6C 6F 73 65 28 66 32 29 3B 0D 0A 30 37 36 31 close(f2);..0761
026940: 20 20 30 31 39 36 3A 20 20 20 20 20 65 6E 64 20 0196: end
026950: 7B 63 72 74 6D 61 70 7D 2E 0D 0A 4E 6F 20 65 72 {crtmap}...No er
026960: 72 6F 72 73 20 64 65 74 65 63 74 65 64 0D 0A 4D rors detected..M
026970: 6F 64 75 6C 65 20 73 69 7A 65 20 3D 20 31 38 39 odule size = 189
026980: 33 20 64 65 63 20 62 79 74 65 73 0D 0A 45 6E 64 3 dec bytes..End
026990: 20 6F 66 20 63 6F 6D 70 69 6C 65 20 66 6F 72 20 of compile for
0269A0: 43 52 54 4D 41 50 0D 0A 1A 35 3A 20 20 20 20 20 CRTMAP...5:
0269B0: 63 6C 6F 73 65 28 66 32 29 3B 0D 0A 30 37 36 31 close(f2);..0761
0269C0: 20 20 30 31 39 36 3A 20 20 20 20 20 65 6E 64 20 0196: end
0269D0: 7B 63 72 74 6D 61 70 7D 2E 0D 0A 4E 6F 20 65 72 {crtmap}...No er
0269E0: 72 6F 72 73 20 64 65 74 65 63 74 65 64 0D 0A 4D rors detected..M
0269F0: 6F 64 75 6C 65 20 73 69 7A 65 20 3D 20 31 38 39 odule size = 189
026A00: 6F 72 64 3B 0D 0A 30 34 43 32 20 20 30 31 33 30 ord;..04C2 0130
026A10: 3A 20 20 20 20 20 78 5F 63 6F 6F 72 64 20 3A 3D : x_coord :=
026A20: 20 77 6F 72 64 3B 0D 0A 30 34 43 37 20 20 30 31 word;..04C7 01
026A30: 33 31 3A 20 20 20 20 20 67 65 74 5F 77 6F 72 64 31: get_word
026A40: 3B 0D 0A 30 34 44 33 20 20 30 31 33 32 3A 20 20 ;..04D3 0132:
026A50: 20 20 20 79 5F 63 6F 6F 72 64 20 3A 3D 20 77 6F y_coord := wo
026A60: 72 64 3B 0D 0A 30 35 30 37 20 20 30 31 33 33 3A rd;..0507 0133:
026A70: 20 20 20 20 20 77 72 69 74 65 6C 6E 28 66 32 3B writeln(f2;
026A80: 20 27 67 6F 74 6F 78 79 28 20 27 2C 78 5F 63 6F 'gotoxy( ',x_co
026A90: 6F 72 64 2C 27 2C 27 2C 79 5F 63 6F 6F 72 64 2C ord,',',y_coord,
026AA0: 27 29 3B 27 29 3B 0D 0A 30 35 30 38 20 20 30 31 ');');..0508 01
026AB0: 33 34 3A 20 20 20 20 20 65 6E 64 3B 0D 0A 30 35 34: end;..05
026AC0: 30 38 20 20 30 31 33 35 3A 0D 0A 30 35 30 38 20 08 0135:..0508
026AD0: 20 30 31 33 36 3A 20 20 20 20 20 70 72 6F 63 65 0136: proce
026AE0: 64 75 72 65 20 70 72 6F 63 65 73 73 5F 73 74 72 dure process_str
026AF0: 69 6E 67 3B 0D 0A 30 35 30 45 20 20 30 31 33 37 ing;..050E 0137
026B00: 3A 20 20 20 20 20 62 65 67 69 6E 0D 0A 30 35 30 : begin..050
026B10: 45 20 20 30 31 33 38 3A 20 20 20 20 20 7B 66 69 E 0138: {fi
026B20: 6E 64 20 73 74 61 72 74 20 6F 66 20 73 74 72 69 nd start of stri
026B30: 6E 67 7D 0D 0A 30 35 32 45 20 20 30 31 33 39 3A ng}..052E 0139:
026B40: 20 20 20 20 20 77 68 69 6C 65 20 6E 6F 74 20 28 while not (
026B50: 63 68 20 69 6E 20 5B 27 27 27 27 2C 63 68 72 28 ch in ['''',chr(
026B60: 30 64 68 29 2C 27 20 27 2C 63 68 72 28 39 29 2C 0dh),' ',chr(9),
026B70: 63 68 72 28 31 61 68 29 5D 29 20 64 6F 0D 0A 30 chr(1ah)]) do..0
026B80: 35 33 36 20 20 30 31 34 30 3A 20 20 20 20 20 20 536 0140:
026B90: 20 20 20 20 20 20 20 67 65 74 5F 63 68 61 72 3B get_char;
026BA0: 0D 0A 30 35 36 36 20 20 30 31 34 31 3A 20 20 20 ..0566 0141:
026BB0: 20 20 69 66 20 63 68 20 3C 3E 20 27 27 27 27 20 if ch <> ''''
026BC0: 74 68 65 6E 20 65 72 72 6F 72 28 27 4C 69 74 65 then error('Lite
026BD0: 72 61 6C 20 73 74 72 69 6E 67 20 65 78 70 65 63 ral string expec
026BE0: 74 65 64 27 29 3B 0D 0A 30 35 37 42 20 20 30 31 ted');..057B 01
026BF0: 34 32 3A 20 20 20 20 20 77 72 69 74 65 28 66 32 42: write(f2
026C00: CD 87 58 E1 22 33 50 3A 31 50 26 00 6F E5 21 0D ..X."3P:1P&.o.!.
026C10: 00 E5 CD FB 58 F1 D2 28 4F 21 05 00 E5 21 0A 00 ....X..(O!...!..
026C20: E5 CD 87 58 E1 22 33 50 C3 CA 4F 2A 39 50 11 38 ...X."3P..O*9P.8
026C30: 00 19 16 00 5E D5 21 04 00 E5 CD FB 58 F1 D2 56 ....^.!.....X..V
026C40: 4F 21 02 00 E5 3A 31 50 26 00 6F E5 CD 87 58 E1 O!...:1P&.o...X.
026C50: 22 33 50 C3 93 4F 2A 39 50 11 38 00 19 16 00 5E "3P..O*9P.8....^
026C60: D5 21 05 00 E5 CD FB 58 F1 D2 81 4F 21 06 00 E5 .!.....X...O!...
026C70: 3A 31 50 26 00 6F E5 CD 87 58 E1 22 33 50 C3 93 :1P&.o...X."3P..
026C80: 4F 21 04 00 E5 3A 31 50 26 00 6F E5 CD 87 58 E1 O!...:1P&.o...X.
026C90: 22 33 50 2A 39 50 11 38 00 19 16 00 5E D5 21 04 "3P*9P.8....^.!.
026CA0: 00 E5 CD FB 58 F1 D2 CA 4F 3A 31 50 26 00 6F E5 ....X...O:1P&.o.
026CB0: 21 0D 00 E5 CD FB 58 F1 D2 CA 4F 21 02 00 E5 21 !.....X...O!...!
026CC0: 0A 00 E5 CD 87 58 E1 22 33 50 2A 2F 50 23 22 2F .....X."3P*/P#"/
026CD0: 50 C3 7D 4E C3 27 50 21 01 00 E5 21 52 50 5E 23 P.}N.'P!...!RP^#
026CE0: 56 EB 11 39 00 19 5E 23 56 D5 D1 E1 2B E5 D5 22 V..9..^#V...+.."
026CF0: 35 50 D1 E1 23 E5 D5 CD A3 50 22 3D 50 2A 35 50 5P..#...£P"=P*5P
026D00: 23 22 35 50 2A 3D 50 2B 22 3D 50 7C B5 CA 24 50 #"5P*=P+"=P|..$P
026D10: 2A 2F 50 16 00 5E D5 CD 6C 4D 2A 2F 50 23 22 2F */P..^..lM*/P#"/
026D20: 50 C3 FD 4F CD 8A 58 C9 C3 CA 4F 00 00 00 00 00 P..O..X...O.....
026D30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 C3 ................
026D40: 00 00 C3 45 50 2A 50 50 22 54 50 2A 54 50 E3 E9 ...EP*PP"TP*TP..
026D50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 E1 D1 ................
026D60: 01 21 00 21 5C 00 E5 D5 C5 CD B2 5B 31 00 01 21 .!.!\......[1..!
026D70: 00 01 E5 11 85 50 21 80 00 01 1E 00 E5 D5 C5 CD .....P!.........
026D80: B2 5B C3 80 00 D1 D5 0E 1A CD 05 00 E1 11 80 00 .[..............
026D90: 19 E5 11 5C 00 0E 14 CD 05 00 FE 01 C2 80 00 E1 ...\............
026DA0: C3 00 01 E1 22 CF 50 D1 E1 E5 D5 E5 D5 CD 2E 59 ....".P........Y
026DB0: F1 DA C4 50 D1 E1 7B 95 6F 7A 9C 67 23 23 E5 2A ...P..{.oz.g##.*
026DC0: CF 50 E3 C9 E1 D1 21 01 00 E5 2A CF 50 E3 C9 00 .P....!...*.P...
026DD0: 00 E1 E3 22 43 51 C3 20 51 CD D1 50 C2 E7 50 21 ..."CQ. Q..P..P!
026DE0: 01 00 E5 2A 43 51 E9 21 00 00 C3 E2 50 CD D1 50 ...*CQ.!....P..P
026DF0: C2 DF 50 C3 E7 50 CD D1 50 DA E7 50 CA E7 50 C3 ..P..P..P..P..P.
026E00: 3B 20 27 77 72 69 74 65 28 27 29 3B 0D 0A 30 35 ; 'write(');..05
026E10: 37 42 20 20 30 31 34 33 3A 20 20 20 20 20 72 65 7B 0143: re
026E20: 70 65 61 74 0D 0A 30 35 38 45 20 20 30 31 34 34 peat..058E 0144
026E30: 3A 20 20 20 20 20 20 20 77 72 69 74 65 28 66 32 : write(f2
026E40: 3B 20 63 68 29 3B 0D 0A 30 35 39 33 20 20 30 31 ; ch);..0593 01
026E50: 34 35 3A 20 20 20 20 20 20 20 67 65 74 5F 63 68 45: get_ch
026E60: 61 72 3B 0D 0A 30 35 41 31 20 20 30 31 34 36 3A ar;..05A1 0146:
026E70: 20 20 20 20 20 75 6E 74 69 6C 20 63 68 20 3D 20 until ch =
026E80: 63 68 72 28 30 64 68 29 3B 0D 0A 30 35 42 32 20 chr(0dh);..05B2
026E90: 20 30 31 34 37 3A 20 20 20 20 20 77 72 69 74 65 0147: write
026EA0: 6C 6E 28 66 32 3B 20 27 29 3B 27 29 3B 0D 0A 30 ln(f2; ');');..0
026EB0: 35 42 33 20 20 30 31 34 38 3A 20 20 20 20 20 65 5B3 0148: e
026EC0: 6E 64 3B 0D 0A 30 35 42 33 20 20 30 31 34 39 3A nd;..05B3 0149:
026ED0: 0D 0A 30 35 42 33 20 20 30 31 35 30 3A 0D 0A 30 ..05B3 0150:..0
026EE0: 35 42 36 20 20 30 31 35 31 3A 20 20 20 20 20 62 5B6 0151: b
026EF0: 65 67 69 6E 20 7B 70 61 72 74 33 7D 0D 0A 30 35 egin {part3}..05
026F00: 44 37 20 20 30 31 35 32 3A 20 20 20 20 20 77 72 D7 0152: wr
026F10: 69 74 65 6C 6E 28 66 32 3B 20 27 70 72 6F 63 65 iteln(f2; 'proce
026F20: 64 75 72 65 20 64 69 73 70 6C 61 79 3B 27 29 3B dure display;');
026F30: 0D 0A 30 35 45 42 20 20 30 31 35 33 3A 20 20 20 ..05EB 0153:
026F40: 20 20 77 72 69 74 65 6C 6E 28 66 32 3B 20 27 62 writeln(f2; 'b
026F50: 65 67 69 6E 27 29 3B 0D 0A 30 36 30 30 20 20 30 egin');..0600 0
026F60: 31 35 34 3A 20 20 20 20 20 77 72 69 74 65 6C 6E 154: writeln
026F70: 28 66 32 3B 20 27 63 6C 65 61 72 3B 27 29 3B 0D (f2; 'clear;');.
026F80: 0A 30 36 30 38 20 20 30 31 35 35 3A 20 20 20 20 .0608 0155:
026F90: 20 77 68 69 6C 65 20 6E 6F 74 20 65 6E 64 5F 6F while not end_o
026FA0: 66 5F 66 69 6C 65 20 64 6F 0D 0A 30 36 30 38 20 f_file do..0608
026FB0: 20 30 31 35 36 3A 20 20 20 20 20 20 20 20 20 20 0156:
026FC0: 20 20 20 62 65 67 69 6E 0D 0A 30 36 30 44 20 20 begin..060D
026FD0: 30 31 35 37 3A 20 20 20 20 20 20 20 20 20 20 20 0157:
026FE0: 20 20 67 65 74 5F 77 6F 72 64 3B 0D 0A 30 36 31 get_word;..061
026FF0: 33 20 20 30 31 35 38 3A 20 20 20 20 20 20 20 20 3 0158:
027000: 20 20 20 20 20 20 41 2E 20 20 20 52 65 73 65 72 A. Reser
027010: 76 65 64 20 77 6F 72 64 73 0D 0A 0D 0A 20 20 20 ved words....
027020: 20 20 20 20 20 20 20 20 54 68 65 20 20 66 6F 6C The fol
027030: 6C 6F 77 69 6E 67 20 20 77 6F 72 64 73 20 20 61 lowing words a
027040: 72 65 20 72 65 73 65 72 76 65 64 20 69 6E 20 4A re reserved in J
027050: 52 54 20 50 61 73 63 61 6C 20 61 6E 64 20 6D 61 RT Pascal and ma
027060: 79 20 6E 6F 74 20 62 65 0D 0A 20 20 20 20 20 20 y not be..
027070: 75 73 65 64 20 61 73 20 69 64 65 6E 74 69 66 69 used as identifi
027080: 65 72 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ers:....
027090: 20 20 20 20 61 62 73 0D 0A 20 20 20 20 20 20 20 abs..
0270A0: 20 20 20 20 20 61 64 64 72 0D 0A 20 20 20 20 20 addr..
0270B0: 20 20 20 20 20 20 20 61 6C 6C 6F 63 61 74 65 0D allocate.
0270C0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 61 6E 64 . and
0270D0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 61 72 .. ar
0270E0: 72 61 79 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ray..
0270F0: 20 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 20 20 begin..
027100: 20 20 20 20 62 69 6E 61 72 79 0D 0A 20 20 20 20 binary..
027110: 20 20 20 20 20 20 20 20 62 6F 6F 6C 65 61 6E 0D boolean.
027120: 0A 20 20 20 20 20 20 20 20 20 20 20 20 63 61 6C . cal
027130: 6C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 63 l.. c
027140: 61 73 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ase..
027150: 20 63 68 61 72 0D 0A 20 20 20 20 20 20 20 20 20 char..
027160: 20 20 20 63 68 72 0D 0A 20 20 20 20 20 20 20 20 chr..
027170: 20 20 20 20 63 6C 6F 73 65 0D 0A 20 20 20 20 20 close..
027180: 20 20 20 20 20 20 20 63 6F 6D 70 72 65 73 73 0D compress.
027190: 0A 20 20 20 20 20 20 20 20 20 20 20 20 63 6F 6E . con
0271A0: 63 61 74 0D 0A 20 20 20 20 20 20 20 20 20 20 20 cat..
0271B0: 20 63 6F 6E 73 0D 0A 20 20 20 20 20 20 20 20 20 cons..
0271C0: 20 20 20 63 6F 6E 73 74 0D 0A 20 20 20 20 20 20 const..
0271D0: 20 20 20 20 20 20 63 6F 70 79 0D 0A 20 20 20 20 copy..
0271E0: 20 20 20 20 20 20 20 20 64 65 61 6C 6C 6F 63 61 dealloca
0271F0: 74 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 te..
027200: 20 20 20 20 20 63 61 73 65 20 77 6F 72 64 20 6F case word o
027210: 66 0D 0A 30 36 32 31 20 20 30 31 35 39 3A 20 20 f..0621 0159:
027220: 20 20 20 20 20 20 20 20 20 20 20 27 4C 49 54 45 'LITE
027230: 52 41 4C 27 20 3A 0D 0A 30 36 32 31 20 20 30 31 RAL' :..0621 01
027240: 36 30 3A 20 20 20 20 20 20 20 20 20 20 20 20 20 60:
027250: 20 20 20 20 20 20 20 20 62 65 67 69 6E 0D 0A 30 begin..0
027260: 36 32 36 20 20 30 31 36 31 3A 20 20 20 20 20 20 626 0161:
027270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 p
027280: 72 6F 63 65 73 73 5F 63 6F 6F 72 64 69 6E 61 74 rocess_coordinat
027290: 65 73 3B 0D 0A 30 36 32 42 20 20 30 31 36 32 3A es;..062B 0162:
0272A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0272B0: 20 20 20 20 20 70 72 6F 63 65 73 73 5F 73 74 72 process_str
0272C0: 69 6E 67 3B 0D 0A 30 36 32 45 20 20 30 31 36 33 ing;..062E 0163
0272D0: 3A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :
0272E0: 20 20 20 20 20 20 65 6E 64 3B 0D 0A 30 36 33 41 end;..063A
0272F0: 20 20 30 31 36 34 3A 20 20 20 20 20 20 20 20 20 0164:
027300: 20 20 20 20 27 46 49 45 4C 44 27 20 3A 0D 0A 30 'FIELD' :..0
027310: 36 33 41 20 20 30 31 36 35 3A 20 20 20 20 20 20 63A 0165:
027320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 b
027330: 65 67 69 6E 0D 0A 30 36 33 46 20 20 30 31 36 36 egin..063F 0166
027340: 3A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :
027350: 20 20 20 20 20 20 70 72 6F 63 65 73 73 5F 63 6F process_co
027360: 6F 72 64 69 6E 61 74 65 73 3B 0D 0A 30 36 34 34 ordinates;..0644
027370: 20 20 30 31 36 37 3A 20 20 20 20 20 20 20 20 20 0167:
027380: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 5F get_
027390: 77 6F 72 64 3B 0D 0A 30 36 36 43 20 20 30 31 36 word;..066C 016
0273A0: 38 3A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 8:
0273B0: 20 20 20 20 20 20 20 77 72 69 74 65 6C 6E 28 66 writeln(f
0273C0: 32 3B 20 27 77 72 69 74 65 28 20 72 2C 27 2C 77 2; 'write( r,',w
0273D0: 6F 72 64 2C 27 29 3B 27 29 3B 0D 0A 30 36 36 46 ord,');');..066F
0273E0: 20 20 30 31 36 39 3A 20 20 20 20 20 20 20 20 20 0169:
0273F0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6E 64 3B end;
027400: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
027410: 21 00 00 00 02 09 2A E5 21 00 C1 02 00 00 00 02 !.....*.!.......
027420: 21 00 C6 02 00 00 00 02 21 00 C2 02 00 00 00 02 !.......!.......
027430: 21 00 C7 02 00 00 00 02 21 00 C3 02 00 00 00 02 !.......!.......
027440: 21 00 C8 02 00 00 00 02 21 00 C4 02 00 00 00 02 !.......!.......
027450: 21 00 C9 02 00 00 00 02 21 00 C5 02 00 00 00 02 !.......!.......
027460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0274F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027500: 64 65 6C 65 74 65 0D 0A 20 20 20 20 20 20 20 20 delete..
027510: 20 20 20 20 64 69 73 70 6F 73 65 0D 0A 20 20 20 dispose..
027520: 20 20 20 20 20 20 20 20 20 64 69 76 0D 0A 20 20 div..
027530: 20 20 20 20 20 20 20 20 20 20 64 6F 0D 0A 20 20 do..
027540: 20 20 20 20 20 20 20 20 20 20 64 6F 77 6E 74 6F downto
027550: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 65 6C .. el
027560: 73 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 se..
027570: 65 6E 64 0D 0A 20 20 20 20 20 20 20 20 20 20 20 end..
027580: 20 65 6F 66 0D 0A 20 20 20 20 20 20 20 20 20 20 eof..
027590: 20 20 65 6F 6C 6E 0D 0A 20 20 20 20 20 20 20 20 eoln..
0275A0: 20 20 20 20 65 78 74 65 6E 0D 0A 20 20 20 20 20 exten..
0275B0: 20 20 20 20 20 20 20 66 61 6C 73 65 0D 0A 20 20 false..
0275C0: 20 20 20 20 20 20 20 20 20 20 66 69 6C 65 0D 0A file..
0275D0: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6C 6C fill
0275E0: 63 68 61 72 0D 0A 20 20 20 20 20 20 20 20 20 20 char..
0275F0: 20 20 66 6F 72 0D 0A 20 20 20 20 20 20 20 20 20 for..
027600: 20 20 20 66 6F 72 77 61 72 64 0D 0A 20 20 20 20 forward..
027610: 20 20 20 20 20 20 20 20 66 72 65 65 0D 0A 20 20 free..
027620: 20 20 20 20 20 20 20 20 20 20 66 75 6E 63 74 69 functi
027630: 6F 6E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 on..
027640: 67 65 74 0D 0A 20 20 20 20 20 20 20 20 20 20 20 get..
027650: 20 67 6F 74 6F 0D 0A 20 20 20 20 20 20 20 20 20 goto..
027660: 20 20 20 68 65 78 24 0D 0A 20 20 20 20 20 20 20 hex$..
027670: 20 20 20 20 20 69 66 0D 0A 20 20 20 20 20 20 20 if..
027680: 20 20 20 20 20 69 6E 0D 0A 20 20 20 20 20 20 20 in..
027690: 20 20 20 20 20 69 6E 63 6C 75 64 65 0D 0A 20 20 include..
0276A0: 20 20 20 20 20 20 20 20 20 20 69 6E 69 74 69 61 initia
0276B0: 6C 69 7A 65 0D 0A 20 20 20 20 20 20 20 20 20 20 lize..
0276C0: 20 20 69 6E 70 75 74 0D 0A 20 20 20 20 20 20 20 input..
0276D0: 20 20 20 20 20 69 6E 73 65 72 74 0D 0A 20 20 20 insert..
0276E0: 20 20 20 20 20 20 20 20 20 69 6E 74 65 67 65 72 integer
0276F0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6C 61 .. la
027700: 20 20 63 6F 6E 73 6F 6C 65 20 20 69 6E 70 75 74 console input
027710: 20 74 6F 20 73 70 65 63 69 66 79 20 74 68 65 20 to specify the
027720: 6C 69 6E 65 20 72 61 6E 67 65 20 74 6F 20 62 65 line range to be
027730: 20 6D 6F 6E 69 74 6F 72 65 64 20 61 6E 64 20 74 monitored and t
027740: 68 65 20 6C 69 6E 65 0D 0A 20 20 20 20 20 20 73 he line.. s
027750: 70 61 63 69 6E 67 2E 20 20 57 68 65 6E 20 20 74 pacing. When t
027760: 68 6F 73 65 20 20 70 61 72 61 6D 65 74 65 72 73 hose parameters
027770: 20 20 68 61 76 65 20 20 62 65 65 6E 20 20 65 6E have been en
027780: 74 65 72 65 64 2C 20 20 74 68 65 20 20 70 72 6F tered, the pro
027790: 67 72 61 6D 0D 0A 20 20 20 20 20 20 65 78 65 63 gram.. exec
0277A0: 75 74 69 6F 6E 20 77 69 6C 6C 20 62 65 67 69 6E ution will begin
0277B0: 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
0277C0: 49 66 20 20 41 63 74 69 76 61 6E 20 20 69 73 20 If Activan is
0277D0: 61 63 74 69 76 65 20 77 68 65 6E 20 74 68 65 20 active when the
0277E0: 70 72 6F 67 72 61 6D 20 74 65 72 6D 69 6E 61 74 program terminat
0277F0: 65 73 2C 20 41 63 74 69 76 61 6E 20 6D 6F 64 65 es, Activan mode
027800: 0D 0A 20 20 20 20 20 20 69 73 20 65 6E 74 65 72 .. is enter
027810: 65 64 20 73 6F 20 74 68 61 74 20 61 20 66 69 6E ed so that a fin
027820: 61 6C 20 68 69 73 74 6F 67 72 61 6D 20 63 61 6E al histogram can
027830: 20 62 65 20 70 72 69 6E 74 65 64 2E 0D 0A 0D 0A be printed.....
027840: 20 20 20 20 20 20 20 20 20 20 20 57 68 69 6C 65 While
027850: 20 74 68 65 20 70 72 6F 67 72 61 6D 20 69 73 20 the program is
027860: 72 75 6E 6E 69 6E 67 2C 20 69 74 20 63 61 6E 20 running, it can
027870: 62 65 20 69 6E 74 65 72 72 75 70 74 65 64 20 61 be interrupted a
027880: 6E 64 20 20 63 6F 6E 74 72 6F 6C 0D 0A 20 20 20 nd control..
027890: 20 20 20 72 65 74 75 72 6E 65 64 20 20 74 6F 20 returned to
0278A0: 20 41 63 74 69 76 61 6E 20 62 79 20 6B 65 79 69 Activan by keyi
0278B0: 6E 67 20 69 6E 20 61 20 63 6F 6E 74 72 6F 6C 2D ng in a control-
0278C0: 41 20 63 6F 6D 6D 61 6E 64 2E 20 20 41 63 74 69 A command. Acti
0278D0: 76 61 6E 20 77 69 6C 6C 0D 0A 20 20 20 20 20 20 van will..
0278E0: 74 68 65 6E 20 72 65 71 75 65 73 74 20 77 68 69 then request whi
0278F0: 63 68 20 61 63 74 69 6F 6E 20 69 73 20 64 65 73 ch action is des
027900: 62 65 6C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 bel..
027910: 20 6C 65 6E 67 74 68 0D 0A 20 20 20 20 20 20 20 length..
027920: 20 20 20 20 20 6C 69 73 74 0D 0A 20 20 20 20 20 list..
027930: 20 20 20 20 20 20 20 6C 72 61 6E 67 65 0D 0A 20 lrange..
027940: 20 20 20 20 20 20 20 20 20 20 20 6C 74 72 61 63 ltrac
027950: 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6D e.. m
027960: 61 70 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ap..
027970: 6D 61 78 69 6E 74 0D 0A 20 20 20 20 20 20 20 20 maxint..
027980: 20 20 20 20 6D 6F 64 0D 0A 20 20 20 20 20 20 20 mod..
027990: 20 20 20 20 20 6E 65 77 0D 0A 20 20 20 20 20 20 new..
0279A0: 20 20 20 20 20 20 6E 69 6C 0D 0A 20 20 20 20 20 nil..
0279B0: 20 20 20 20 20 20 20 6E 6F 63 6F 6E 73 0D 0A 20 nocons..
0279C0: 20 20 20 20 20 20 20 20 20 20 20 6E 6F 6C 69 73 nolis
0279D0: 74 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6E t.. n
0279E0: 6F 6C 74 72 61 63 65 0D 0A 20 20 20 20 20 20 20 oltrace..
0279F0: 20 20 20 20 20 6E 6F 70 74 72 61 63 65 0D 0A 20 noptrace..
027A00: 20 20 20 20 20 20 20 20 20 20 20 6E 6F 74 0D 0A not..
027A10: 20 20 20 20 20 20 20 20 20 20 20 20 6E 6F 77 61 nowa
027A20: 72 6E 69 6E 67 0D 0A 20 20 20 20 20 20 20 20 20 rning..
027A30: 20 20 20 6F 64 64 0D 0A 20 20 20 20 20 20 20 20 odd..
027A40: 20 20 20 20 6F 66 0D 0A 20 20 20 20 20 20 20 20 of..
027A50: 20 20 20 20 6F 70 65 6E 0D 0A 20 20 20 20 20 20 open..
027A60: 20 20 20 20 20 20 6F 72 0D 0A 20 20 20 20 20 20 or..
027A70: 20 20 20 20 20 20 6F 72 64 0D 0A 20 20 20 20 20 ord..
027A80: 20 20 20 20 20 20 20 6F 75 74 70 75 74 0D 0A 20 output..
027A90: 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 0D page.
027AA0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 70 6F 72 . por
027AB0: 74 69 6E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 tin..
027AC0: 20 70 6F 72 74 6F 75 74 0D 0A 20 20 20 20 20 20 portout..
027AD0: 20 20 20 20 20 20 70 6F 73 0D 0A 20 20 20 20 20 pos..
027AE0: 20 20 20 20 20 20 20 70 72 65 64 0D 0A 20 20 20 pred..
027AF0: 20 20 20 20 20 20 20 20 20 70 72 6F 63 65 64 75 procedu
027B00: 69 72 65 64 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 ired:....
027B10: 20 20 20 20 20 20 20 20 20 20 63 6F 64 65 20 20 code
027B20: 20 61 63 74 69 6F 6E 0D 0A 20 20 20 20 20 20 20 action..
027B30: 20 20 20 20 20 20 20 20 20 20 2D 2D 2D 2D 20 20 ----
027B40: 20 2D 2D 2D 2D 2D 2D 2D 0D 0A 20 20 20 20 20 20 -------..
027B50: 20 20 20 20 20 20 20 20 20 20 20 20 43 20 20 20 C
027B60: 20 20 63 6C 65 61 72 20 74 68 65 20 63 6F 75 6E clear the coun
027B70: 74 65 72 73 20 74 6F 20 7A 65 72 6F 0D 0A 20 20 ters to zero..
027B80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
027B90: 48 20 20 20 20 20 70 72 69 6E 74 20 68 69 73 74 H print hist
027BA0: 6F 67 72 61 6D 20 6F 66 20 61 63 74 69 76 69 74 ogram of activit
027BB0: 79 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 y..
027BC0: 20 20 20 20 20 49 20 20 20 20 20 69 6E 69 74 69 I initi
027BD0: 61 6C 69 7A 65 20 74 68 65 20 6C 69 6E 65 20 72 alize the line r
027BE0: 61 6E 67 65 20 61 6E 64 20 73 70 61 63 69 6E 67 ange and spacing
027BF0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
027C00: 20 20 20 20 4D 20 20 20 20 20 72 75 6E 20 74 68 M run th
027C10: 65 20 70 72 6F 67 72 61 6D 20 77 69 74 68 20 41 e program with A
027C20: 63 74 69 76 61 6E 20 6D 6F 6E 69 74 6F 72 69 6E ctivan monitorin
027C30: 67 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 g..
027C40: 20 20 20 20 20 57 20 20 20 20 20 72 75 6E 20 74 W run t
027C50: 68 65 20 70 72 6F 67 72 61 6D 20 77 69 74 68 6F he program witho
027C60: 75 74 20 41 63 74 69 76 61 6E 0D 0A 20 20 20 20 ut Activan..
027C70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5A 20 Z
027C80: 20 20 20 20 74 65 72 6D 69 6E 61 74 65 20 74 68 terminate th
027C90: 65 20 70 72 6F 67 72 61 6D 0D 0A 0D 0A 0D 0A 0D e program.......
027CA0: 0A 20 20 20 20 20 20 43 2E 20 20 42 6C 6F 63 6B . C. Block
027CB0: 20 6C 65 74 74 65 72 73 0D 0A 0D 0A 20 20 20 20 letters....
027CC0: 20 20 20 20 20 20 20 41 6E 20 20 65 78 74 65 72 An exter
027CD0: 6E 61 6C 20 20 70 72 6F 63 65 64 75 72 65 20 20 nal procedure
027CE0: 6E 61 6D 65 64 20 20 4C 45 54 54 45 52 53 20 20 named LETTERS
027CF0: 69 73 20 70 72 6F 76 69 64 65 64 20 74 6F 20 67 is provided to g
027D00: 72 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 re..
027D10: 70 72 6F 67 72 61 6D 0D 0A 20 20 20 20 20 20 20 program..
027D20: 20 20 20 20 20 70 74 72 61 63 65 0D 0A 20 20 20 ptrace..
027D30: 20 20 20 20 20 20 20 20 20 70 75 74 0D 0A 20 20 put..
027D40: 20 20 20 20 20 20 20 20 20 20 72 62 61 0D 0A 20 rba..
027D50: 20 20 20 20 20 20 20 20 20 20 20 72 65 61 64 0D read.
027D60: 0A 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 . rea
027D70: 64 6C 6E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 dln..
027D80: 20 72 65 61 6C 0D 0A 20 20 20 20 20 20 20 20 20 real..
027D90: 20 20 20 72 65 61 6C 24 0D 0A 20 20 20 20 20 20 real$..
027DA0: 20 20 20 20 20 20 72 65 63 6F 72 64 0D 0A 20 20 record..
027DB0: 20 20 20 20 20 20 20 20 20 20 72 65 70 65 61 74 repeat
027DC0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 72 65 .. re
027DD0: 73 65 74 0D 0A 20 20 20 20 20 20 20 20 20 20 20 set..
027DE0: 20 72 65 77 72 69 74 65 0D 0A 20 20 20 20 20 20 rewrite..
027DF0: 20 20 20 20 20 20 72 6F 75 6E 64 0D 0A 20 20 20 round..
027E00: 20 20 20 20 20 20 20 20 20 72 72 6E 0D 0A 20 20 rrn..
027E10: 20 20 20 20 20 20 20 20 20 20 73 65 74 0D 0A 20 set..
027E20: 20 20 20 20 20 20 20 20 20 20 20 73 71 72 0D 0A sqr..
027E30: 20 20 20 20 20 20 20 20 20 20 20 20 73 75 63 63 succ
027E40: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 73 74 .. st
027E50: 72 69 6E 67 0D 0A 20 20 20 20 20 20 20 20 20 20 ring..
027E60: 20 20 73 79 73 74 65 6D 0D 0A 20 20 20 20 20 20 system..
027E70: 20 20 20 20 20 20 74 65 78 74 0D 0A 20 20 20 20 text..
027E80: 20 20 20 20 20 20 20 20 74 68 65 6E 0D 0A 20 20 then..
027E90: 20 20 20 20 20 20 20 20 20 20 74 6F 0D 0A 20 20 to..
027EA0: 20 20 20 20 20 20 20 20 20 20 74 72 75 65 0D 0A true..
027EB0: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 75 6E trun
027EC0: 63 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 74 c.. t
027ED0: 79 70 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ype..
027EE0: 20 75 6E 74 69 6C 0D 0A 20 20 20 20 20 20 20 20 until..
027EF0: 20 20 20 20 75 70 63 61 73 65 0D 0A 20 20 20 20 upcase..
027F00: 65 6E 65 72 61 74 65 0D 0A 20 20 20 20 20 20 6C enerate.. l
027F10: 61 72 67 65 20 62 6C 6F 63 6B 20 6C 65 74 74 65 arge block lette
027F20: 72 73 2E 20 54 68 65 73 65 20 6C 65 74 74 65 72 rs. These letter
027F30: 73 20 61 72 65 20 39 20 6C 69 6E 65 73 20 68 69 s are 9 lines hi
027F40: 67 68 20 61 6E 64 20 66 72 6F 6D 20 34 20 74 6F gh and from 4 to
027F50: 20 20 31 30 0D 0A 20 20 20 20 20 20 63 6F 6C 75 10.. colu
027F60: 6D 6E 73 20 20 77 69 64 65 2E 20 20 20 54 68 65 mns wide. The
027F70: 20 20 65 78 74 65 72 6E 61 6C 20 70 72 6F 63 65 external proce
027F80: 64 75 72 65 20 67 65 6E 65 72 61 74 65 73 20 61 dure generates a
027F90: 6E 20 65 6E 74 69 72 65 20 72 6F 77 20 61 74 20 n entire row at
027FA0: 61 0D 0A 20 20 20 20 20 20 74 69 6D 65 20 6F 66 a.. time of
027FB0: 20 6C 65 74 74 65 72 73 20 66 6F 72 20 75 73 65 letters for use
027FC0: 20 61 73 20 72 65 70 6F 72 74 20 68 65 61 64 65 as report heade
027FD0: 72 73 2C 20 70 72 6F 67 72 61 6D 20 69 64 65 6E rs, program iden
027FE0: 74 69 66 69 65 72 73 2C 20 20 65 74 63 2E 0D 0A tifiers, etc...
027FF0: 20 20 20 20 20 20 54 68 65 20 6F 75 74 70 75 74 The output
028000: 20 6C 69 6E 65 20 6D 61 79 20 62 65 20 75 70 20 line may be up
028010: 74 6F 20 32 32 30 20 63 6F 6C 75 6D 6E 73 20 77 to 220 columns w
028020: 69 64 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ide.....
028030: 20 20 20 54 68 65 20 20 75 70 70 65 72 20 20 63 The upper c
028040: 61 73 65 20 20 6C 65 74 74 65 72 73 2C 20 6E 75 ase letters, nu
028050: 6D 62 65 72 73 2C 20 61 6E 64 20 64 61 73 68 20 mbers, and dash
028060: 6D 61 79 20 62 65 20 69 6E 70 75 74 20 74 6F 20 may be input to
028070: 74 68 65 0D 0A 20 20 20 20 20 20 65 78 74 65 72 the.. exter
028080: 6E 61 6C 20 70 72 6F 63 65 64 75 72 65 2E 20 20 nal procedure.
028090: 55 6E 73 75 70 70 6F 72 74 65 64 20 63 68 61 72 Unsupported char
0280A0: 61 63 74 65 72 73 20 61 72 65 20 63 6F 6E 76 65 acters are conve
0280B0: 72 74 65 64 20 74 6F 20 20 73 70 61 63 65 73 2E rted to spaces.
0280C0: 0D 0A 20 20 20 20 20 20 4C 6F 77 65 72 20 63 61 .. Lower ca
0280D0: 73 65 20 63 68 61 72 61 63 74 65 72 73 20 61 72 se characters ar
0280E0: 65 20 63 6F 6E 76 65 72 74 65 64 20 74 6F 20 75 e converted to u
0280F0: 70 70 65 72 20 63 61 73 65 2E 0D 0A 0D 0A 20 20 pper case.....
028100: 20 20 20 20 20 20 20 20 76 61 72 0D 0A 20 20 20 var..
028110: 20 20 20 20 20 20 20 20 20 77 61 72 6E 69 6E 67 warning
028120: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 77 68 .. wh
028130: 69 6C 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ile..
028140: 20 77 69 74 68 0D 0A 20 20 20 20 20 20 20 20 20 with..
028150: 20 20 20 77 72 69 74 65 0D 0A 20 20 20 20 20 20 write..
028160: 20 20 20 20 20 20 77 72 69 74 65 6C 6E 0D 0A 20 writeln..
028170: 20 20 20 20 20 20 20 20 20 20 20 78 6F 72 0D 0A xor..
028180: 0D 0A 0D 0A 20 20 20 20 20 20 42 2E 20 20 20 41 .... B. A
028190: 63 74 69 76 69 74 79 20 61 6E 61 6C 79 7A 65 72 ctivity analyzer
0281A0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 .... T
0281B0: 68 65 20 61 63 74 69 76 69 74 79 20 61 6E 61 6C he activity anal
0281C0: 79 7A 65 72 2C 20 41 63 74 69 76 61 6E 2C 20 69 yzer, Activan, i
0281D0: 73 20 61 20 66 61 63 69 6C 69 74 79 20 77 68 69 s a facility whi
0281E0: 63 68 20 6D 6F 6E 69 74 6F 72 73 20 74 68 65 0D ch monitors the.
0281F0: 0A 20 20 20 20 20 20 65 78 65 63 75 74 69 6F 6E . execution
028200: 20 20 6F 66 20 20 61 20 50 61 73 63 61 6C 20 70 of a Pascal p
028210: 72 6F 67 72 61 6D 20 61 6E 64 20 70 72 69 6E 74 rogram and print
028220: 73 20 61 20 67 72 61 70 68 20 73 68 6F 77 69 6E s a graph showin
028230: 67 20 74 68 65 20 61 6D 6F 75 6E 74 0D 0A 20 20 g the amount..
028240: 20 20 20 20 6F 66 20 74 69 6D 65 20 73 70 65 6E of time spen
028250: 74 20 65 78 65 63 75 74 69 6E 67 20 65 61 63 68 t executing each
028260: 20 70 6F 72 74 69 6F 6E 20 6F 66 20 74 68 65 20 portion of the
028270: 70 72 6F 67 72 61 6D 2E 20 20 54 6F 20 75 73 65 program. To use
028280: 20 41 63 74 69 76 61 6E 2C 0D 0A 20 20 20 20 20 Activan,..
028290: 20 61 20 70 72 6F 67 72 61 6D 20 6D 75 73 74 20 a program must
0282A0: 62 65 20 63 6F 6D 70 69 6C 65 64 20 77 69 74 68 be compiled with
0282B0: 20 20 74 68 65 20 20 25 4C 54 52 41 43 45 20 20 the %LTRACE
0282C0: 64 69 72 65 63 74 69 76 65 20 20 6F 72 20 20 74 directive or t
0282D0: 68 65 20 20 24 4C 0D 0A 20 20 20 20 20 20 63 6F he $L.. co
0282E0: 6D 70 69 6C 65 20 73 77 69 74 63 68 20 6F 6E 2E mpile switch on.
0282F0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 41 .... A
028300: 20 20 20 20 20 20 20 20 20 54 68 65 20 20 6F 75 The ou
028310: 74 70 75 74 20 66 72 6F 6D 20 6C 65 74 74 65 72 tput from letter
028320: 73 20 69 73 20 70 6C 61 63 65 64 20 69 6E 20 61 s is placed in a
028330: 20 62 75 66 66 65 72 20 77 68 69 63 68 20 69 73 buffer which is
028340: 20 61 6E 20 61 72 72 61 79 0D 0A 20 20 20 20 20 an array..
028350: 20 6F 66 20 73 74 72 69 6E 67 73 2E 20 20 54 68 of strings. Th
028360: 69 73 20 6D 75 73 74 20 62 65 20 64 65 66 69 6E is must be defin
028370: 65 64 20 65 78 61 63 74 6C 79 20 61 73 20 73 68 ed exactly as sh
028380: 6F 77 6E 2E 20 20 54 68 65 20 20 64 65 63 6C 61 own. The decla
028390: 72 61 74 69 6F 6E 0D 0A 20 20 20 20 20 20 66 6F ration.. fo
0283A0: 72 20 4C 45 54 54 45 52 53 20 69 73 3A 0D 0A 0D r LETTERS is:...
0283B0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 54 59 50 . TYP
0283C0: 45 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 42 E.. B
0283D0: 55 46 46 45 52 20 3D 20 41 52 52 41 59 20 5B 31 UFFER = ARRAY [1
0283E0: 2E 2E 39 5D 20 4F 46 20 53 54 52 49 4E 47 5B 32 ..9] OF STRING[2
0283F0: 32 30 5D 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20];....
028400: 20 20 20 20 50 52 4F 43 45 44 55 52 45 20 4C 45 PROCEDURE LE
028410: 54 54 45 52 53 20 28 49 4E 50 55 54 5F 53 54 52 TTERS (INPUT_STR
028420: 49 4E 47 20 3A 20 53 54 52 49 4E 47 3B 0D 0A 20 ING : STRING;..
028430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
028440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 4C SL
028450: 41 4E 54 20 3A 20 43 48 41 52 3B 0D 0A 20 20 20 ANT : CHAR;..
028460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
028470: 20 20 20 20 20 20 20 20 20 20 20 20 56 41 52 20 VAR
028480: 42 20 3A 20 42 55 46 46 45 52 20 29 3B 20 45 58 B : BUFFER ); EX
028490: 54 45 52 4E 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 TERN;....
0284A0: 20 20 20 20 54 68 65 20 20 69 6E 70 75 74 5F 73 The input_s
0284B0: 74 72 69 6E 67 20 20 69 73 20 20 74 68 65 20 6C tring is the l
0284C0: 69 6E 65 20 6F 66 20 63 68 61 72 61 63 74 65 72 ine of character
0284D0: 73 20 74 6F 20 62 65 20 63 6F 6E 76 65 72 74 65 s to be converte
0284E0: 64 20 74 6F 0D 0A 20 20 20 20 20 20 62 6C 6F 63 d to.. bloc
0284F0: 6B 20 6C 65 74 74 65 72 20 66 6F 72 6D 61 74 2E k letter format.
028500: 63 74 69 76 61 6E 20 20 6D 6F 6E 69 74 6F 72 73 ctivan monitors
028510: 20 20 74 68 65 20 20 6C 69 6E 65 20 20 6E 75 6D the line num
028520: 62 65 72 73 20 20 61 73 20 61 20 70 72 6F 67 72 bers as a progr
028530: 61 6D 20 65 78 65 63 75 74 65 73 20 61 6E 64 0D am executes and.
028540: 0A 20 20 20 20 20 20 6B 65 65 70 73 20 63 6F 75 . keeps cou
028550: 6E 74 65 72 73 20 66 6F 72 20 74 68 65 20 6C 69 nters for the li
028560: 6E 65 20 6E 75 6D 62 65 72 73 20 69 6E 20 74 68 ne numbers in th
028570: 65 20 73 70 65 63 69 66 69 65 64 20 72 61 6E 67 e specified rang
028580: 65 2E 20 54 68 65 20 72 61 6E 67 65 0D 0A 20 20 e. The range..
028590: 20 20 20 20 6F 66 20 6C 69 6E 65 20 6E 75 6D 62 of line numb
0285A0: 65 72 73 20 74 6F 20 62 65 20 6D 6F 6E 69 74 6F ers to be monito
0285B0: 72 65 64 20 61 6E 64 20 74 68 65 20 6C 69 6E 65 red and the line
0285C0: 20 73 70 61 63 69 6E 67 20 63 61 6E 20 62 65 20 spacing can be
0285D0: 20 73 65 74 20 20 61 6E 64 0D 0A 20 20 20 20 20 set and..
0285E0: 20 63 68 61 6E 67 65 64 20 77 68 65 6E 20 74 68 changed when th
0285F0: 65 20 70 72 6F 67 72 61 6D 20 69 73 20 72 75 6E e program is run
028600: 6E 69 6E 67 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 ning.....
028610: 20 20 20 20 54 6F 20 20 72 75 6E 20 20 61 20 20 To run a
028620: 70 72 6F 67 72 61 6D 20 77 69 74 68 20 41 63 74 program with Act
028630: 69 76 61 6E 2C 20 73 70 65 63 69 66 79 20 74 68 ivan, specify th
028640: 65 20 24 41 20 73 77 69 74 63 68 20 77 68 65 6E e $A switch when
028650: 20 74 68 65 0D 0A 20 20 20 20 20 20 70 72 6F 67 the.. prog
028660: 72 61 6D 20 69 73 20 73 74 61 72 74 65 64 20 77 ram is started w
028670: 69 74 68 20 74 68 65 20 45 58 45 43 20 63 6F 6D ith the EXEC com
028680: 6D 61 6E 64 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 mand:....
028690: 20 20 20 20 20 20 20 20 20 20 20 45 58 45 43 20 EXEC
0286A0: 54 45 58 54 50 47 4D 20 20 24 41 0D 0A 0D 0A 20 TEXTPGM $A....
0286B0: 20 20 20 20 20 20 20 20 20 20 42 65 66 6F 72 65 Before
0286C0: 20 20 74 68 65 20 20 70 72 6F 67 72 61 6D 20 20 the program
0286D0: 62 65 67 69 6E 73 20 20 65 78 65 63 75 74 69 6F begins executio
0286E0: 6E 2C 20 20 41 63 74 69 76 61 6E 20 20 77 69 6C n, Activan wil
0286F0: 6C 20 20 72 65 71 75 65 73 74 0D 0A 20 20 20 20 l request..
028700: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
028710: 22 00 00 00 02 09 2A E5 22 00 C1 02 00 00 00 02 ".....*.".......
028720: 22 00 C6 02 00 00 00 02 22 00 C2 02 00 00 00 02 ".......".......
028730: 22 00 C7 02 00 00 00 02 22 00 C3 02 00 00 00 02 ".......".......
028740: 22 00 C8 02 00 00 00 02 22 00 C4 02 00 00 00 02 ".......".......
028750: 22 00 C9 02 00 00 00 02 22 00 C5 02 00 00 00 02 ".......".......
028760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
028770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
028780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
028790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0287F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
028800: 20 20 54 68 65 20 73 6C 61 6E 74 20 63 68 61 72 The slant char
028810: 61 63 74 65 72 20 70 72 6F 76 69 64 65 73 20 66 acter provides f
028820: 6F 72 20 20 27 73 74 72 65 61 6D 6C 69 6E 65 64 or 'streamlined
028830: 27 0D 0A 20 20 20 20 20 20 63 68 61 72 61 63 74 '.. charact
028840: 65 72 73 20 62 79 20 73 6C 61 6E 74 69 6E 67 20 ers by slanting
028850: 74 6F 20 74 68 65 20 6C 65 66 74 20 6F 72 20 72 to the left or r
028860: 69 67 68 74 2E 20 20 53 6C 61 6E 74 20 6D 61 79 ight. Slant may
028870: 20 62 65 20 27 4C 27 20 6F 72 20 27 52 27 0D 0A be 'L' or 'R'..
028880: 20 20 20 20 20 20 6F 72 20 20 27 20 20 27 2C 20 or ' ',
028890: 20 66 6F 72 20 6E 6F 20 73 6C 61 6E 74 2E 20 20 for no slant.
0288A0: 54 68 65 20 6F 75 74 70 75 74 20 62 75 66 66 65 The output buffe
0288B0: 72 20 42 20 72 65 66 65 72 73 20 74 6F 20 61 20 r B refers to a
0288C0: 76 61 72 69 61 62 6C 65 20 6F 66 0D 0A 20 20 20 variable of..
0288D0: 20 20 20 74 79 70 65 20 62 75 66 66 65 72 20 69 type buffer i
0288E0: 6E 20 74 68 65 20 75 73 65 72 27 73 20 70 72 6F n the user's pro
0288F0: 67 72 61 6D 2E 20 20 20 4E 6F 74 65 20 20 74 68 gram. Note th
028900: 61 74 20 20 42 20 20 69 73 20 20 61 20 20 72 65 at B is a re
028910: 66 65 72 65 6E 63 65 64 0D 0A 20 20 20 20 20 20 ferenced..
028920: 70 61 72 61 6D 65 74 65 72 2E 0D 0A 0D 0A 20 20 parameter.....
028930: 20 20 20 20 20 20 20 20 20 54 68 69 73 20 20 73 This s
028940: 61 6D 70 6C 65 20 20 70 72 6F 67 72 61 6D 20 20 ample program
028950: 77 69 6C 6C 20 70 72 69 6E 74 20 6F 75 74 20 74 will print out t
028960: 68 65 20 77 6F 72 64 20 27 50 41 53 43 41 4C 27 he word 'PASCAL'
028970: 20 69 6E 20 62 6C 6F 63 6B 0D 0A 20 20 20 20 20 in block..
028980: 20 6C 65 74 74 65 72 73 3A 0D 0A 0D 0A 20 20 20 letters:....
028990: 20 20 20 20 20 20 20 20 20 50 52 4F 47 52 41 4D PROGRAM
0289A0: 20 42 4C 4F 43 4B 53 3B 0D 0A 0D 0A 20 20 20 20 BLOCKS;....
0289B0: 20 20 20 20 20 20 20 20 54 59 50 45 0D 0A 20 20 TYPE..
0289C0: 20 20 20 20 20 20 20 20 20 20 42 55 46 46 45 52 BUFFER
0289D0: 20 3D 20 41 52 52 41 59 20 5B 31 2E 2E 39 5D 20 = ARRAY [1..9]
0289E0: 4F 46 20 53 54 52 49 4E 47 5B 32 32 30 5D 3B 0D OF STRING[220];.
0289F0: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 56 ... V
028A00: 20 20 20 20 56 41 52 20 52 20 20 3A 20 4A 53 54 VAR R : JST
028A10: 41 54 5F 49 4E 54 45 52 46 41 43 45 20 29 3B 0D AT_INTERFACE );.
028A20: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
028A30: 20 20 20 20 20 20 20 20 20 45 58 54 45 52 4E 3B EXTERN;
028A40: 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 45 2E 20 20 ...... E.
028A50: 20 4A 47 52 41 46 0D 0A 0D 0A 20 20 20 20 20 20 JGRAF....
028A60: 20 20 20 20 20 4A 47 52 41 46 20 20 69 73 20 20 JGRAF is
028A70: 61 6E 20 20 65 78 74 65 72 6E 61 6C 20 20 70 72 an external pr
028A80: 6F 63 65 64 75 72 65 20 20 77 68 69 63 68 20 66 ocedure which f
028A90: 6F 72 6D 61 74 73 20 78 2D 79 20 67 72 61 70 68 ormats x-y graph
028AA0: 73 20 61 6E 64 0D 0A 20 20 20 20 20 20 73 63 61 s and.. sca
028AB0: 74 74 65 72 20 67 72 61 70 68 73 2E 20 20 54 68 tter graphs. Th
028AC0: 65 20 67 72 61 70 68 20 73 69 7A 65 20 69 6E 20 e graph size in
028AD0: 72 6F 77 73 20 61 6E 64 20 63 6F 6C 75 6D 6E 73 rows and columns
028AE0: 20 61 6E 64 20 74 68 65 20 6C 6F 77 65 72 20 61 and the lower a
028AF0: 6E 64 0D 0A 20 20 20 20 20 20 75 70 70 65 72 20 nd.. upper
028B00: 78 20 61 6E 64 20 79 20 62 6F 75 6E 64 73 20 61 x and y bounds a
028B10: 72 65 20 73 65 74 20 62 79 20 74 68 65 20 75 73 re set by the us
028B20: 65 72 2E 20 20 41 20 74 69 74 6C 65 20 74 6F 20 er. A title to
028B30: 74 68 65 20 20 67 72 61 70 68 20 20 6D 61 79 0D the graph may.
028B40: 0A 20 20 20 20 20 20 62 65 20 20 70 72 6F 76 69 . be provi
028B50: 64 65 64 2E 20 20 20 4F 6E 63 65 20 74 68 65 20 ded. Once the
028B60: 67 72 61 70 68 20 68 61 73 20 62 65 65 6E 20 70 graph has been p
028B70: 72 65 70 61 72 65 64 2C 20 69 74 20 63 61 6E 20 repared, it can
028B80: 62 65 20 64 69 73 70 6C 61 79 65 64 0D 0A 20 20 be displayed..
028B90: 20 20 20 20 6F 6E 20 74 68 65 20 63 6F 6E 73 6F on the conso
028BA0: 6C 65 2C 20 70 72 69 6E 74 65 64 20 6F 72 20 73 le, printed or s
028BB0: 74 6F 72 65 64 20 69 6E 20 61 20 64 69 73 6B 20 tored in a disk
028BC0: 66 69 6C 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 file.....
028BD0: 20 20 20 20 41 6E 79 20 6E 75 6D 62 65 72 20 6F Any number o
028BE0: 66 20 20 64 61 74 61 20 20 70 6F 69 6E 74 73 20 f data points
028BF0: 20 63 61 6E 20 20 62 65 20 20 70 6C 6F 74 74 65 can be plotte
028C00: 41 52 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 AR..
028C10: 49 20 3A 20 49 4E 54 45 47 45 52 3B 0D 0A 20 20 I : INTEGER;..
028C20: 20 20 20 20 20 20 20 20 20 20 42 4C 4F 43 4B 53 BLOCKS
028C30: 5F 42 55 46 52 20 3A 20 42 55 46 46 45 52 3B 0D _BUFR : BUFFER;.
028C40: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 50 ... P
028C50: 52 4F 43 45 44 55 52 45 20 4C 45 54 54 45 52 53 ROCEDURE LETTERS
028C60: 20 28 20 49 4E 50 55 54 5F 53 54 52 49 4E 47 20 ( INPUT_STRING
028C70: 3A 20 53 54 52 49 4E 47 3B 0D 0A 20 20 20 20 20 : STRING;..
028C80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
028C90: 20 20 20 20 20 20 20 20 20 20 20 53 4C 41 4E 54 SLANT
028CA0: 20 3A 20 43 48 41 52 3B 0D 0A 20 20 20 20 20 20 : CHAR;..
028CB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
028CC0: 20 20 20 20 20 20 20 20 20 20 56 41 52 20 42 20 VAR B
028CD0: 3A 20 42 55 46 46 45 52 20 29 3B 20 45 58 54 45 : BUFFER ); EXTE
028CE0: 52 4E 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 RN;....
028CF0: 20 20 20 42 45 47 49 4E 0D 0A 20 20 20 20 20 20 BEGIN..
028D00: 20 20 20 20 20 20 4C 45 54 54 45 52 53 28 27 50 LETTERS('P
028D10: 41 53 43 41 4C 27 2C 27 52 27 2C 42 4C 4F 43 4B ASCAL','R',BLOCK
028D20: 53 5F 42 55 46 52 29 3B 0D 0A 20 20 20 20 20 20 S_BUFR);..
028D30: 20 20 20 20 20 20 53 59 53 54 45 4D 28 4C 49 53 SYSTEM(LIS
028D40: 54 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 T);..
028D50: 20 46 4F 52 20 49 3A 3D 31 20 54 4F 20 39 20 44 FOR I:=1 TO 9 D
028D60: 4F 20 57 52 49 54 45 4C 4E 28 20 42 4C 4F 43 4B O WRITELN( BLOCK
028D70: 53 5F 42 55 46 52 5B 49 5D 20 29 3B 0D 0A 20 20 S_BUFR[I] );..
028D80: 20 20 20 20 20 20 20 20 20 20 45 4E 44 2E 0D 0A END...
028D90: 0D 0A 0D 0A 20 20 20 20 20 20 44 2E 20 20 20 4A .... D. J
028DA0: 53 54 41 54 0D 0A 0D 0A 20 20 20 20 20 20 20 20 STAT....
028DB0: 20 20 20 4A 53 54 41 54 20 20 69 73 20 20 61 6E JSTAT is an
028DC0: 20 20 65 78 74 65 72 6E 61 6C 20 20 70 72 6F 63 external proc
028DD0: 65 64 75 72 65 20 20 77 68 69 63 68 20 63 61 6E edure which can
028DE0: 20 62 65 20 75 73 65 64 20 74 6F 20 63 6F 6D 70 be used to comp
028DF0: 75 74 65 0D 0A 20 20 20 20 20 20 73 65 76 65 72 ute.. sever
028E00: 64 2E 20 20 20 41 6E 79 20 20 6E 75 6D 62 65 72 d. Any number
028E10: 20 20 6F 66 0D 0A 20 20 20 20 20 20 73 65 70 61 of.. sepa
028E20: 72 61 74 65 20 20 20 70 6C 6F 74 73 20 20 20 63 rate plots c
028E30: 61 6E 20 20 62 65 20 20 70 72 65 70 61 72 65 64 an be prepared
028E40: 20 20 73 69 6D 75 6C 74 61 6E 65 6F 75 73 6C 79 simultaneously
028E50: 20 20 28 77 69 74 68 69 6E 20 20 6D 65 6D 6F 72 (within memor
028E60: 79 0D 0A 20 20 20 20 20 20 6C 69 6D 69 74 61 74 y.. limitat
028E70: 69 6F 6E 73 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 ions).....
028E80: 20 20 20 20 20 54 6F 20 20 75 73 65 20 20 4A 47 To use JG
028E90: 52 41 46 2C 20 20 79 6F 75 72 20 20 70 72 6F 67 RAF, your prog
028EA0: 72 61 6D 20 20 28 6F 72 20 20 6F 63 63 61 73 69 ram (or occasi
028EB0: 6F 6E 61 6C 6C 79 20 20 61 6E 20 20 20 65 78 74 onally an ext
028EC0: 65 72 6E 61 6C 0D 0A 20 20 20 20 20 20 70 72 6F ernal.. pro
028ED0: 63 65 64 75 72 65 29 20 6D 75 73 74 20 64 65 63 cedure) must dec
028EE0: 6C 61 72 65 20 74 68 65 20 63 68 61 72 39 30 30 lare the char900
028EF0: 30 20 61 6E 64 20 6A 67 72 61 66 5F 69 6E 74 65 0 and jgraf_inte
028F00: 72 66 61 63 65 20 74 79 70 65 73 2E 20 20 59 6F rface types. Yo
028F10: 75 72 0D 0A 20 20 20 20 20 20 70 72 6F 67 72 61 ur.. progra
028F20: 6D 20 20 20 6D 75 73 74 20 20 20 74 68 65 6E 20 m must then
028F30: 20 20 64 65 63 6C 61 72 65 20 20 20 6F 6E 65 20 declare one
028F40: 20 28 6F 72 20 20 6D 6F 72 65 29 20 20 76 61 72 (or more) var
028F50: 69 61 62 6C 65 20 20 6F 66 20 20 74 79 70 65 0D iable of type.
028F60: 0A 20 20 20 20 20 20 6A 67 72 61 66 5F 69 6E 74 . jgraf_int
028F70: 65 72 66 61 63 65 2E 20 20 46 6F 72 20 63 6F 6E erface. For con
028F80: 76 65 6E 69 65 6E 63 65 2C 20 74 68 65 20 20 69 venience, the i
028F90: 6E 74 65 72 66 61 63 65 20 20 76 61 72 69 61 62 nterface variab
028FA0: 6C 65 20 20 77 69 6C 6C 20 20 62 65 0D 0A 20 20 le will be..
028FB0: 20 20 20 20 63 61 6C 6C 65 64 20 20 6A 67 69 20 called jgi
028FC0: 20 69 6E 20 74 68 69 73 20 64 6F 63 75 6D 65 6E in this documen
028FD0: 74 2E 20 20 59 6F 75 72 20 70 72 6F 67 72 61 6D t. Your program
028FE0: 20 63 6F 75 6C 64 20 63 61 6C 6C 20 74 68 65 20 could call the
028FF0: 69 6E 74 65 72 66 61 63 65 0D 0A 20 20 20 20 20 interface..
029000: 61 6C 20 62 61 73 69 63 20 73 74 61 74 69 73 74 al basic statist
029010: 69 63 73 20 67 69 76 65 6E 20 61 6E 20 61 72 72 ics given an arr
029020: 61 79 20 6F 66 20 72 65 61 6C 20 6E 75 6D 62 65 ay of real numbe
029030: 72 73 20 61 73 20 69 6E 70 75 74 2E 20 20 49 74 rs as input. It
029040: 0D 0A 20 20 20 20 20 20 63 6F 6D 70 75 74 65 73 .. computes
029050: 20 74 68 65 20 61 72 69 74 68 6D 65 74 69 63 20 the arithmetic
029060: 6D 65 61 6E 2C 20 73 74 61 6E 64 61 72 64 20 64 mean, standard d
029070: 65 76 69 61 74 69 6F 6E 2C 20 76 61 72 69 61 6E eviation, varian
029080: 63 65 2C 20 73 6B 65 77 6E 65 73 73 2C 0D 0A 20 ce, skewness,..
029090: 20 20 20 20 20 6B 75 72 74 6F 73 69 73 20 61 6E kurtosis an
0290A0: 64 20 74 68 65 20 66 69 72 73 74 20 66 6F 75 72 d the first four
0290B0: 20 6D 6F 6D 65 6E 74 73 20 61 62 6F 75 74 20 74 moments about t
0290C0: 68 65 20 6D 65 61 6E 2E 0D 0A 0D 0A 20 20 20 20 he mean.....
0290D0: 20 20 20 20 20 20 20 54 68 65 20 73 6F 75 72 63 The sourc
0290E0: 65 20 63 6F 64 65 20 66 6F 72 20 4A 53 54 41 54 e code for JSTAT
0290F0: 20 69 73 20 70 72 6F 76 69 64 65 64 20 6F 6E 20 is provided on
029100: 74 68 65 20 20 64 69 73 74 72 69 62 75 74 69 6F the distributio
029110: 6E 20 20 64 69 73 6B 0D 0A 20 20 20 20 20 20 61 n disk.. a
029120: 6E 64 20 20 6D 61 79 20 62 65 20 6D 6F 64 69 66 nd may be modif
029130: 69 65 64 20 61 73 20 6E 65 63 65 73 73 61 72 79 ied as necessary
029140: 2E 20 20 54 68 65 20 70 72 6F 63 65 64 75 72 65 . The procedure
029150: 20 69 73 20 72 65 73 74 72 69 63 74 65 64 20 74 is restricted t
029160: 6F 20 61 6E 0D 0A 20 20 20 20 20 20 61 72 72 61 o an.. arra
029170: 79 20 6F 66 20 31 30 30 30 20 72 65 61 6C 20 20 y of 1000 real
029180: 6E 75 6D 62 65 72 73 2C 20 20 62 75 74 20 20 74 numbers, but t
029190: 68 69 73 20 20 63 61 6E 20 20 62 65 20 20 65 61 his can be ea
0291A0: 73 69 6C 79 20 20 63 68 61 6E 67 65 64 20 20 62 sily changed b
0291B0: 79 0D 0A 20 20 20 20 20 20 6D 6F 64 69 66 79 69 y.. modifyi
0291C0: 6E 67 20 20 20 74 68 65 20 20 20 64 65 63 6C 61 ng the decla
0291D0: 72 61 74 69 6F 6E 20 20 20 6F 66 20 20 74 68 65 ration of the
0291E0: 20 20 64 61 74 61 20 20 74 79 70 65 20 20 6A 73 data type js
0291F0: 74 61 74 5F 61 72 72 61 79 20 20 61 6E 64 0D 0A tat_array and..
029200: 20 76 61 72 69 61 62 6C 65 28 73 29 20 61 6E 79 variable(s) any
029210: 74 68 69 6E 67 20 61 70 70 72 6F 70 72 69 61 74 thing appropriat
029220: 65 2E 20 20 59 6F 75 72 20 20 70 72 6F 67 72 61 e. Your progra
029230: 6D 20 20 6D 75 73 74 20 20 61 6C 73 6F 20 20 64 m must also d
029240: 65 63 6C 61 72 65 0D 0A 20 20 20 20 20 20 4A 47 eclare.. JG
029250: 52 41 46 20 61 73 20 61 6E 20 65 78 74 65 72 6E RAF as an extern
029260: 61 6C 20 70 72 6F 63 65 64 75 72 65 2E 0D 0A 0D al procedure....
029270: 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 . The
029280: 20 64 65 63 6C 61 72 61 74 69 6F 6E 73 20 20 66 declarations f
029290: 6F 72 20 20 73 61 6D 70 6C 65 20 20 6D 61 69 6E or sample main
0292A0: 20 20 70 72 6F 67 72 61 6D 20 20 74 6F 20 20 74 program to t
0292B0: 61 6B 65 20 70 6C 6F 74 74 69 6E 67 0D 0A 20 20 ake plotting..
0292C0: 20 20 20 20 63 6F 6D 6D 61 6E 64 73 20 66 72 6F commands fro
0292D0: 6D 20 61 20 64 69 73 6B 20 66 69 6C 65 20 61 6E m a disk file an
0292E0: 64 20 63 72 65 61 74 65 20 61 20 70 6C 6F 74 20 d create a plot
0292F0: 69 73 20 73 68 6F 77 6E 20 68 65 72 65 2E 20 20 is shown here.
029300: 28 54 68 65 20 62 6F 64 79 0D 0A 20 20 20 20 20 (The body..
029310: 20 6F 66 20 74 68 65 20 73 61 6D 70 6C 65 20 70 of the sample p
029320: 72 6F 67 72 61 6D 20 69 73 20 6C 69 73 74 65 64 rogram is listed
029330: 20 6C 61 74 65 72 2E 29 20 20 45 76 65 72 79 74 later.) Everyt
029340: 68 69 6E 67 20 20 6C 69 73 74 65 64 20 20 68 65 hing listed he
029350: 72 65 20 20 69 73 0D 0A 20 20 20 20 20 20 72 65 re is.. re
029360: 71 75 69 72 65 64 20 6F 66 20 61 6E 79 20 70 72 quired of any pr
029370: 6F 67 72 61 6D 20 75 73 69 6E 67 20 4A 47 52 41 ogram using JGRA
029380: 46 20 65 78 63 65 70 74 20 66 6F 72 20 74 68 65 F except for the
029390: 20 64 65 63 6C 61 72 61 74 69 6F 6E 73 20 6E 6F declarations no
0293A0: 74 65 64 0D 0A 20 20 20 20 20 20 61 73 20 73 70 ted.. as sp
0293B0: 65 63 69 66 69 63 20 74 6F 20 6A 67 2E 0D 0A 0D ecific to jg....
0293C0: 0A 20 20 20 20 20 20 70 72 6F 67 72 61 6D 20 6A . program j
0293D0: 67 3B 0D 0A 20 20 20 20 20 20 25 6C 74 72 61 63 g;.. %ltrac
0293E0: 65 20 25 70 74 72 61 63 65 20 20 28 2A 20 6F 70 e %ptrace (* op
0293F0: 74 69 6F 6E 61 6C 20 2D 20 73 75 67 67 65 73 74 tional - suggest
029400: 20 20 20 20 20 20 72 65 63 6F 6D 70 69 6C 69 6E recompilin
029410: 67 20 74 68 65 20 70 72 6F 63 65 64 75 72 65 2E g the procedure.
029420: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 57 .... W
029430: 68 69 6C 65 20 6A 73 74 61 74 5F 61 72 72 61 79 hile jstat_array
029440: 20 69 73 20 64 65 63 6C 61 72 65 64 20 61 73 20 is declared as
029450: 61 20 31 30 30 30 20 65 6C 65 6D 65 6E 74 20 20 a 1000 element
029460: 61 72 72 61 79 2C 20 20 61 20 20 6D 75 63 68 0D array, a much.
029470: 0A 20 20 20 20 20 20 73 6D 61 6C 6C 65 72 20 20 . smaller
029480: 61 72 72 61 79 20 20 6D 61 79 20 20 62 65 20 20 array may be
029490: 75 73 65 64 20 74 6F 20 68 6F 6C 64 20 74 68 65 used to hold the
0294A0: 20 64 61 74 61 20 76 61 6C 75 65 73 20 73 69 6E data values sin
0294B0: 63 65 20 74 68 65 20 69 6E 70 75 74 0D 0A 20 20 ce the input..
0294C0: 20 20 20 20 61 72 72 61 79 20 69 73 20 75 73 65 array is use
0294D0: 64 20 61 73 20 61 20 72 65 66 65 72 65 6E 63 65 d as a reference
0294E0: 64 20 70 61 72 61 6D 65 74 65 72 2E 0D 0A 0D 0A d parameter.....
0294F0: 20 20 20 20 20 20 20 20 20 20 20 4A 53 54 41 54 JSTAT
029500: 20 28 69 6E 20 69 74 73 20 64 69 73 74 72 69 62 (in its distrib
029510: 75 74 65 64 20 66 6F 72 6D 29 20 72 65 71 75 69 uted form) requi
029520: 72 65 73 20 74 68 72 65 65 20 70 61 72 61 6D 65 res three parame
029530: 74 65 72 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 ters:....
029540: 20 20 20 20 20 6E 20 2D 20 6E 75 6D 62 65 72 20 n - number
029550: 6F 66 20 64 61 74 61 20 69 74 65 6D 73 20 69 6E of data items in
029560: 20 74 68 65 20 69 6E 70 75 74 20 61 72 72 61 79 the input array
029570: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 ....
029580: 78 20 2D 20 61 72 72 61 79 20 6F 66 20 75 70 20 x - array of up
029590: 74 6F 20 31 30 30 30 20 72 65 61 6C 20 6E 75 6D to 1000 real num
0295A0: 62 65 72 73 0D 0A 0D 0A 20 20 20 20 20 20 20 20 bers....
0295B0: 20 20 20 20 72 20 2D 20 6F 75 74 70 75 74 20 72 r - output r
0295C0: 65 63 6F 72 64 20 63 6F 6E 74 61 69 6E 69 6E 67 ecord containing
0295D0: 20 63 6F 6D 70 75 74 65 64 20 73 74 61 74 69 73 computed statis
0295E0: 74 69 63 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 tic......
0295F0: 20 20 20 20 54 68 65 20 66 6F 6C 6C 6F 77 69 6E The followin
029600: 65 64 20 2A 29 0D 0A 0D 0A 20 20 20 20 20 20 74 ed *).... t
029610: 79 70 65 0D 0A 20 20 20 20 20 20 63 68 61 72 39 ype.. char9
029620: 30 30 30 20 3D 20 61 72 72 61 79 20 5B 31 2E 2E 000 = array [1..
029630: 39 30 30 30 5D 20 6F 66 20 63 68 61 72 3B 0D 0A 9000] of char;..
029640: 20 20 20 20 20 20 6A 67 72 61 66 5F 69 6E 74 65 jgraf_inte
029650: 72 66 61 63 65 20 3D 20 72 65 63 6F 72 64 0D 0A rface = record..
029660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6F co
029670: 6D 6D 61 6E 64 20 3A 20 63 68 61 72 3B 20 20 20 mmand : char;
029680: 20 20 20 20 20 20 28 2A 20 52 20 2A 29 0D 0A 20 (* R *)..
029690: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6C 6F plo
0296A0: 74 5F 63 68 61 72 20 3A 20 63 68 61 72 3B 20 20 t_char : char;
0296B0: 20 20 20 20 20 28 2A 20 52 20 2A 29 0D 0A 20 20 (* R *)..
0296C0: 20 20 20 20 20 20 20 20 20 20 20 20 78 5F 67 72 x_gr
0296D0: 69 64 20 3A 20 62 6F 6F 6C 65 61 6E 3B 20 20 20 id : boolean;
0296E0: 20 20 20 20 28 2A 20 52 20 2A 29 0D 0A 20 20 20 (* R *)..
0296F0: 20 20 20 20 20 20 20 20 20 20 20 79 5F 67 72 69 y_gri
029700: 64 20 3A 20 62 6F 6F 6C 65 61 6E 3B 20 20 20 20 d : boolean;
029710: 20 20 20 28 2A 20 52 20 2A 29 0D 0A 20 20 20 20 (* R *)..
029720: 20 20 20 20 20 20 20 20 20 20 72 6F 77 73 20 3A rows :
029730: 20 69 6E 74 65 67 65 72 3B 20 20 20 20 20 20 20 integer;
029740: 20 20 28 2A 20 52 20 2A 29 0D 0A 20 20 20 20 20 (* R *)..
029750: 20 20 20 20 20 20 20 20 20 63 6F 6C 75 6D 6E 73 columns
029760: 20 3A 20 69 6E 74 65 67 65 72 3B 20 20 20 20 20 : integer;
029770: 20 28 2A 20 52 20 2A 29 0D 0A 20 20 20 20 20 20 (* R *)..
029780: 20 20 20 20 20 20 20 20 78 5F 6C 6F 77 65 72 20 x_lower
029790: 3A 20 72 65 61 6C 3B 20 20 20 20 20 20 20 20 20 : real;
0297A0: 28 2A 20 52 20 2A 29 0D 0A 20 20 20 20 20 20 20 (* R *)..
0297B0: 20 20 20 20 20 20 20 78 5F 75 70 70 65 72 20 3A x_upper :
0297C0: 20 72 65 61 6C 3B 20 20 20 20 20 20 20 20 20 28 real; (
0297D0: 2A 20 52 20 2A 29 0D 0A 20 20 20 20 20 20 20 20 * R *)..
0297E0: 20 20 20 20 20 20 79 5F 6C 6F 77 65 72 20 3A 20 y_lower :
0297F0: 72 65 61 6C 3B 20 20 20 20 20 20 20 20 20 28 2A real; (*
029800: 67 20 74 79 70 65 20 64 65 63 6C 61 72 61 74 69 g type declarati
029810: 6F 6E 73 20 61 6E 64 20 20 70 72 6F 63 65 64 75 ons and procedu
029820: 72 65 20 20 64 65 63 6C 61 72 61 74 69 6F 6E 20 re declaration
029830: 20 61 72 65 0D 0A 20 20 20 20 20 20 72 65 71 75 are.. requ
029840: 69 72 65 64 20 69 6E 20 74 68 65 20 63 61 6C 6C ired in the call
029850: 69 6E 67 20 50 61 73 63 61 6C 20 70 72 6F 67 72 ing Pascal progr
029860: 61 6D 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 am:....
029870: 20 20 20 54 59 50 45 0D 0A 20 20 20 20 20 20 20 TYPE..
029880: 20 20 20 20 20 4A 53 54 41 54 5F 49 4E 54 45 52 JSTAT_INTER
029890: 46 41 43 45 20 3D 0D 0A 20 20 20 20 20 20 20 20 FACE =..
0298A0: 20 20 20 20 20 20 20 20 20 20 52 45 43 4F 52 44 RECORD
0298B0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
0298C0: 20 20 20 20 4D 45 41 4E 2C 20 53 54 41 4E 44 41 MEAN, STANDA
0298D0: 52 44 5F 44 45 56 49 41 54 49 4F 4E 2C 0D 0A 20 RD_DEVIATION,..
0298E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0298F0: 20 56 41 52 49 41 4E 43 45 2C 20 53 4B 45 57 4E VARIANCE, SKEWN
029900: 45 53 53 2C 20 4B 55 52 54 4F 53 49 53 2C 0D 0A ESS, KURTOSIS,..
029910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
029920: 20 20 4D 31 2C 20 4D 32 2C 20 4D 33 2C 20 4D 34 M1, M2, M3, M4
029930: 20 3A 20 52 45 41 4C 3B 0D 0A 20 20 20 20 20 20 : REAL;..
029940: 20 20 20 20 20 20 20 20 20 20 20 20 45 4E 44 3B END;
029950: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 4A 53 .. JS
029960: 54 41 54 5F 41 52 52 41 59 20 3D 20 41 52 52 41 TAT_ARRAY = ARRA
029970: 59 20 5B 31 2E 2E 31 30 30 30 5D 20 4F 46 20 52 Y [1..1000] OF R
029980: 45 41 4C 3B 0D 0A 0D 0A 20 20 20 20 20 20 20 20 EAL;....
029990: 20 20 20 20 50 52 4F 43 45 44 55 52 45 20 4A 53 PROCEDURE JS
0299A0: 54 41 54 20 28 4E 20 3A 20 49 4E 54 45 47 45 52 TAT (N : INTEGER
0299B0: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
0299C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
0299D0: 56 41 52 20 58 20 20 3A 20 4A 53 54 41 54 5F 41 VAR X : JSTAT_A
0299E0: 52 52 41 59 3B 0D 0A 20 20 20 20 20 20 20 20 20 RRAY;..
0299F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
029A00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
029A10: 23 00 00 00 02 09 2A E5 23 00 C1 02 00 00 00 02 #.....*.#.......
029A20: 23 00 C6 02 00 00 00 02 23 00 C2 02 00 00 00 02 #.......#.......
029A30: 23 00 C7 02 00 00 00 02 23 00 C3 02 00 00 00 02 #.......#.......
029A40: 23 00 C8 02 00 00 00 02 23 00 C4 02 00 00 00 02 #.......#.......
029A50: 23 00 C9 02 00 00 00 02 23 00 C5 02 00 00 00 02 #.......#.......
029A60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029A70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029A80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029A90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029AF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
029B00: 20 52 20 2A 29 0D 0A 20 20 20 20 20 20 20 20 20 R *)..
029B10: 20 20 20 20 20 79 5F 75 70 70 65 72 20 3A 20 72 y_upper : r
029B20: 65 61 6C 3B 20 20 20 20 20 20 20 20 20 28 2A 20 eal; (*
029B30: 52 20 2A 29 0D 0A 20 20 20 20 20 20 20 20 20 20 R *)..
029B40: 20 20 20 20 66 69 6C 65 6E 61 6D 65 20 3A 20 61 filename : a
029B50: 72 72 61 79 20 5B 31 2E 2E 31 34 5D 20 6F 66 20 rray [1..14] of
029B60: 63 68 61 72 3B 0D 0A 20 20 20 20 20 20 20 20 20 char;..
029B70: 20 20 20 20 20 67 72 61 66 5F 74 69 74 6C 65 20 graf_title
029B80: 3A 20 73 74 72 69 6E 67 3B 20 20 20 20 28 2A 20 : string; (*
029B90: 52 20 2A 29 0D 0A 0D 0A 20 20 20 20 20 20 28 2A R *).... (*
029BA0: 20 66 69 65 6C 64 73 20 62 65 6C 6F 77 20 75 73 fields below us
029BB0: 65 64 20 69 6E 74 65 72 6E 61 6C 6C 79 20 62 79 ed internally by
029BC0: 20 6A 67 72 61 66 20 2A 29 0D 0A 20 20 20 20 20 jgraf *)..
029BD0: 20 20 20 20 20 20 20 20 20 62 20 3A 20 5E 63 68 b : ^ch
029BE0: 61 72 39 30 30 30 3B 0D 0A 20 20 20 20 20 20 20 ar9000;..
029BF0: 20 20 20 20 20 20 20 62 75 66 72 5F 73 69 7A 65 bufr_size
029C00: 20 3A 20 69 6E 74 65 67 65 72 3B 0D 0A 20 20 20 : integer;..
029C10: 20 20 20 20 20 20 20 20 20 20 20 6C 69 6E 65 5F line_
029C20: 73 69 7A 65 20 3A 20 69 6E 74 65 67 65 72 3B 0D size : integer;.
029C30: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 . r
029C40: 6F 77 5F 63 6F 75 6E 74 20 3A 20 69 6E 74 65 67 ow_count : integ
029C50: 65 72 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 er;..
029C60: 20 20 20 78 5F 73 70 61 63 69 6E 67 20 3A 20 72 x_spacing : r
029C70: 65 61 6C 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 eal;..
029C80: 20 20 20 20 79 5F 73 70 61 63 69 6E 67 20 3A 20 y_spacing :
029C90: 72 65 61 6C 3B 0D 0A 20 20 20 20 20 20 20 20 20 real;..
029CA0: 20 20 20 20 20 65 6E 64 3B 0D 0A 0D 0A 20 20 20 end;....
029CB0: 20 20 20 76 61 72 0D 0A 20 20 20 20 20 20 6A 67 var.. jg
029CC0: 69 20 3A 20 6A 67 72 61 66 5F 69 6E 74 65 72 66 i : jgraf_interf
029CD0: 61 63 65 3B 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 ace;........
029CE0: 20 20 28 2A 20 66 6F 6C 6C 6F 77 69 6E 67 20 61 (* following a
029CF0: 72 65 20 75 73 65 64 20 62 79 20 70 72 6F 67 72 re used by progr
029D00: 20 31 35 2E 39 2C 20 32 30 35 2E 37 20 29 3B 0D 15.9, 205.7 );.
029D10: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4A . J
029D20: 47 49 2E 50 4C 4F 54 5F 43 48 41 52 20 3A 3D 20 GI.PLOT_CHAR :=
029D30: 27 23 27 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 '#';..
029D40: 20 20 20 20 4A 47 52 41 46 20 28 20 4A 47 49 2C JGRAF ( JGI,
029D50: 20 39 2E 30 2C 20 31 30 35 2E 30 20 29 3B 0D 0A 9.0, 105.0 );..
029D60: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 54 6F 20 .. To
029D70: 70 72 69 6E 74 20 74 68 65 20 67 72 61 70 68 20 print the graph
029D80: 6F 6E 20 74 68 65 20 63 6F 6E 73 6F 6C 65 2C 20 on the console,
029D90: 73 65 74 20 6A 67 69 2E 63 6F 6D 6D 61 6E 64 20 set jgi.command
029DA0: 20 74 6F 20 20 27 43 27 20 20 61 6E 64 0D 0A 20 to 'C' and..
029DB0: 20 20 20 20 20 63 61 6C 6C 20 4A 47 52 41 46 20 call JGRAF
029DC0: 77 69 74 68 20 78 20 61 6E 64 20 79 20 61 72 67 with x and y arg
029DD0: 75 6D 65 6E 74 73 20 7A 65 72 6F 2C 20 61 73 0D uments zero, as.
029DE0: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
029DF0: 20 4A 47 49 2E 43 4F 4D 4D 41 4E 44 20 3A 3D 20 JGI.COMMAND :=
029E00: 27 43 27 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 'C';..
029E10: 20 20 20 20 4A 47 52 41 46 20 28 20 4A 47 49 2C JGRAF ( JGI,
029E20: 20 30 2E 30 2C 20 30 2E 30 20 29 3B 0D 0A 0D 0A 0.0, 0.0 );....
029E30: 20 20 20 20 20 20 20 20 20 20 20 49 66 20 20 79 If y
029E40: 6F 75 20 20 77 61 6E 74 20 20 6F 75 74 70 75 74 ou want output
029E50: 20 20 74 6F 20 20 74 68 65 20 20 6C 69 6E 65 20 to the line
029E60: 20 70 72 69 6E 74 65 72 20 20 61 73 20 77 65 6C printer as wel
029E70: 6C 20 61 73 20 74 6F 20 74 68 65 0D 0A 20 20 20 l as to the..
029E80: 20 20 20 63 6F 6E 73 6F 6C 65 2C 20 73 65 74 20 console, set
029E90: 6A 67 69 2E 63 6F 6D 6D 61 6E 64 20 74 6F 20 27 jgi.command to '
029EA0: 50 27 20 69 6E 73 74 65 61 64 20 6F 66 20 27 43 P' instead of 'C
029EB0: 27 20 62 65 66 6F 72 65 20 63 61 6C 6C 69 6E 67 ' before calling
029EC0: 20 4A 47 52 41 46 2E 0D 0A 0D 0A 20 20 20 20 20 JGRAF.....
029ED0: 20 20 20 20 20 20 54 6F 20 77 72 69 74 65 20 74 To write t
029EE0: 68 65 20 67 72 61 70 68 20 74 6F 20 61 20 66 69 he graph to a fi
029EF0: 6C 65 2C 20 73 65 74 20 6A 67 69 2E 66 69 6C 65 le, set jgi.file
029F00: 61 6D 20 6A 67 20 2A 29 0D 0A 20 20 20 20 20 20 am jg *)..
029F10: 66 69 6C 65 5F 6E 61 6D 65 20 3A 20 61 72 72 61 file_name : arra
029F20: 79 5B 31 2E 2E 32 30 5D 20 6F 66 20 63 68 61 72 y[1..20] of char
029F30: 3B 0D 0A 20 20 20 20 20 20 74 69 74 6C 65 20 3A ;.. title :
029F40: 20 61 72 72 61 79 5B 31 2E 2E 32 34 5D 20 6F 66 array[1..24] of
029F50: 20 63 68 61 72 3B 0D 0A 20 20 20 20 20 20 69 6E char;.. in
029F60: 66 20 3A 20 66 69 6C 65 20 6F 66 20 63 68 61 72 f : file of char
029F70: 3B 0D 0A 20 20 20 20 20 20 78 2C 20 79 20 3A 20 ;.. x, y :
029F80: 72 65 61 6C 3B 0D 0A 20 20 20 20 20 20 63 6F 6D real;.. com
029F90: 6D 61 6E 64 20 3A 20 63 68 61 72 3B 0D 0A 20 20 mand : char;..
029FA0: 20 20 20 20 28 2A 20 65 6E 64 20 6F 66 20 76 61 (* end of va
029FB0: 72 69 61 62 6C 65 73 20 75 73 65 64 20 62 79 20 riables used by
029FC0: 73 61 6D 70 6C 65 20 70 72 6F 67 72 61 6D 20 2A sample program *
029FD0: 29 0D 0A 0D 0A 20 20 20 20 20 20 70 72 6F 63 65 ).... proce
029FE0: 64 75 72 65 20 6A 67 72 61 66 20 28 20 76 61 72 dure jgraf ( var
029FF0: 20 6A 67 20 3A 20 6A 67 72 61 66 5F 69 6E 74 65 jg : jgraf_inte
02A000: 72 66 61 63 65 3B 0D 0A 20 20 20 20 20 20 20 20 rface;..
02A010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02A020: 78 2C 20 79 20 3A 20 72 65 61 6C 20 29 3B 20 65 x, y : real ); e
02A030: 78 74 65 72 6E 3B 0D 0A 0D 0A 20 20 20 20 20 20 xtern;....
02A040: 28 2A 20 65 6E 64 20 6F 66 20 64 65 63 6C 61 72 (* end of declar
02A050: 61 74 69 6F 6E 73 20 2A 29 0D 0A 0D 0A 20 20 20 ations *)....
02A060: 20 20 20 20 20 20 20 20 54 6F 20 20 70 72 6F 64 To prod
02A070: 75 63 65 20 20 67 72 61 70 68 73 2C 20 20 79 6F uce graphs, yo
02A080: 75 72 20 70 72 6F 67 72 61 6D 20 6D 75 73 74 20 ur program must
02A090: 66 69 72 73 74 20 73 65 74 20 61 6C 6C 20 6D 65 first set all me
02A0A0: 6D 62 65 72 73 20 6F 66 0D 0A 20 20 20 20 20 20 mbers of..
02A0B0: 6A 67 69 20 6D 61 72 6B 65 64 20 28 2A 20 20 52 jgi marked (* R
02A0C0: 20 20 2A 29 20 20 69 6E 20 20 74 68 65 20 20 6A *) in the j
02A0D0: 67 72 61 66 5F 69 6E 74 65 72 66 61 63 65 20 20 graf_interface
02A0E0: 74 79 70 65 20 20 64 65 63 6C 61 72 61 74 69 6F type declaratio
02A0F0: 6E 20 20 74 6F 0D 0A 20 20 20 20 20 20 61 70 70 n to.. app
02A100: 6E 61 6D 65 20 20 74 6F 20 20 74 68 65 20 20 64 name to the d
02A110: 65 73 69 72 65 64 0D 0A 20 20 20 20 20 20 6E 61 esired.. na
02A120: 6D 65 2C 20 6A 67 69 2E 63 6F 6D 6D 61 6E 64 20 me, jgi.command
02A130: 74 6F 20 27 53 27 2C 20 61 6E 64 20 63 61 6C 6C to 'S', and call
02A140: 20 4A 47 52 41 46 2E 0D 0A 0D 0A 20 20 20 20 20 JGRAF.....
02A150: 20 20 20 20 20 20 20 20 20 4A 47 49 2E 46 49 4C JGI.FIL
02A160: 45 4E 41 4D 45 20 3A 3D 20 27 42 3A 50 4C 4F 54 ENAME := 'B:PLOT
02A170: 2E 35 27 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 .5';..
02A180: 20 20 20 20 4A 47 49 2E 43 4F 4D 4D 41 4E 44 20 JGI.COMMAND
02A190: 3A 3D 20 27 53 27 3B 0D 0A 20 20 20 20 20 20 20 := 'S';..
02A1A0: 20 20 20 20 20 20 20 4A 47 52 41 46 20 28 20 4A JGRAF ( J
02A1B0: 47 49 2C 20 30 2E 30 2C 20 30 2E 30 20 29 3B 0D GI, 0.0, 0.0 );.
02A1C0: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 4D 6F ... Mo
02A1D0: 72 65 20 64 61 74 61 20 70 6F 69 6E 74 73 20 63 re data points c
02A1E0: 61 6E 20 62 65 20 61 64 64 65 64 20 74 6F 20 61 an be added to a
02A1F0: 20 67 72 61 70 68 20 61 66 74 65 72 20 70 72 69 graph after pri
02A200: 6E 74 69 6E 67 2C 20 73 6F 20 74 68 61 74 0D 0A nting, so that..
02A210: 20 20 20 20 20 20 64 65 76 65 6C 6F 70 6D 65 6E developmen
02A220: 74 20 20 6F 72 20 20 74 72 65 6E 64 73 20 20 63 t or trends c
02A230: 61 6E 20 20 62 65 20 20 70 6C 6F 74 74 65 64 20 an be plotted
02A240: 69 6E 20 73 75 63 63 65 73 73 69 6F 6E 2E 20 20 in succession.
02A250: 46 75 72 74 68 65 72 2C 20 62 79 0D 0A 20 20 20 Further, by..
02A260: 20 20 20 73 65 74 74 69 6E 67 20 6A 67 69 2E 70 setting jgi.p
02A270: 6C 6F 74 5F 63 68 61 72 20 74 6F 20 61 20 73 70 lot_char to a sp
02A280: 61 63 65 20 28 27 20 27 29 2C 20 64 61 74 61 20 ace (' '), data
02A290: 20 70 6F 69 6E 74 73 20 20 63 61 6E 20 20 62 65 points can be
02A2A0: 20 20 65 72 61 73 65 64 0D 0A 20 20 20 20 20 20 erased..
02A2B0: 28 61 6C 74 68 6F 75 67 68 20 67 72 69 64 20 6C (although grid l
02A2C0: 69 6E 65 73 20 77 69 6C 6C 20 6E 6F 74 20 62 65 ines will not be
02A2D0: 20 72 65 73 74 6F 72 65 64 29 2E 0D 0A 0D 0A 20 restored).....
02A2E0: 20 20 20 20 20 20 20 20 20 20 49 66 20 20 79 6F If yo
02A2F0: 75 20 20 77 61 6E 74 20 20 74 6F 20 20 70 72 69 u want to pri
02A300: 72 6F 70 72 69 61 74 65 20 76 61 6C 75 65 73 2E ropriate values.
02A310: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 4A .... J
02A320: 67 69 2E 78 5F 67 72 69 64 20 20 77 6F 75 6C 64 gi.x_grid would
02A330: 20 20 62 65 20 20 73 65 74 20 74 6F 20 66 61 6C be set to fal
02A340: 73 65 20 69 66 20 67 72 69 64 20 6C 69 6E 65 73 se if grid lines
02A350: 20 72 75 6E 6E 69 6E 67 20 61 63 72 6F 73 73 0D running across.
02A360: 0A 20 20 20 20 20 20 74 68 65 20 67 72 61 70 68 . the graph
02A370: 20 73 68 6F 75 6C 64 20 62 65 20 6F 6D 69 74 74 should be omitt
02A380: 65 64 2E 20 20 4A 67 2E 79 5F 67 72 69 64 20 69 ed. Jg.y_grid i
02A390: 73 20 6C 69 6B 65 77 69 73 65 20 73 65 74 20 74 s likewise set t
02A3A0: 6F 20 20 66 61 6C 73 65 20 20 69 66 0D 0A 20 20 o false if..
02A3B0: 20 20 20 20 67 72 69 64 20 20 6C 69 6E 65 73 20 grid lines
02A3C0: 20 72 75 6E 6E 69 6E 67 20 20 75 70 20 20 61 6E running up an
02A3D0: 64 20 20 64 6F 77 6E 20 20 61 72 65 20 74 6F 20 d down are to
02A3E0: 62 65 20 6F 6D 69 74 74 65 64 2E 20 20 4A 67 69 be omitted. Jgi
02A3F0: 2E 72 6F 77 73 20 61 6E 64 0D 0A 20 20 20 20 20 .rows and..
02A400: 20 6A 67 69 2E 63 6F 6C 75 6D 6E 73 20 63 6F 6E jgi.columns con
02A410: 74 61 69 6E 20 74 68 65 20 6E 75 6D 62 65 72 20 tain the number
02A420: 6F 66 20 20 6C 69 6E 65 73 20 20 61 6E 64 20 20 of lines and
02A430: 6E 75 6D 62 65 72 20 20 6F 66 20 20 63 68 61 72 number of char
02A440: 61 63 74 65 72 73 0D 0A 20 20 20 20 20 20 61 63 acters.. ac
02A450: 72 6F 73 73 20 74 68 65 20 62 6F 64 79 20 6F 66 ross the body of
02A460: 20 74 68 65 20 70 6C 6F 74 20 69 74 73 65 6C 66 the plot itself
02A470: 20 28 6D 69 6E 75 73 20 6F 6E 65 29 2E 0D 0A 0D (minus one)....
02A480: 0A 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 . The
02A490: 20 6E 75 6D 62 65 72 20 20 6F 66 20 72 6F 77 73 number of rows
02A4A0: 20 61 6E 64 20 63 6F 6C 75 6D 6E 73 20 73 68 6F and columns sho
02A4B0: 75 6C 64 20 6E 6F 72 6D 61 6C 6C 79 20 62 65 20 uld normally be
02A4C0: 64 69 76 69 73 69 62 6C 65 20 62 79 0D 0A 20 20 divisible by..
02A4D0: 20 20 20 20 31 30 2E 20 20 50 6C 6F 74 20 73 69 10. Plot si
02A4E0: 7A 65 20 63 61 6E 20 62 65 20 63 61 6C 63 75 6C ze can be calcul
02A4F0: 61 74 65 64 20 20 61 73 20 20 28 6E 75 6D 62 65 ated as (numbe
02A500: 6E 74 20 20 6D 6F 72 65 20 20 74 68 61 6E 20 20 nt more than
02A510: 6F 6E 65 20 20 67 72 61 70 68 20 20 75 73 69 6E one graph usin
02A520: 67 20 74 68 65 20 73 61 6D 65 0D 0A 20 20 20 20 g the same..
02A530: 20 20 69 6E 74 65 72 66 61 63 65 20 72 65 63 6F interface reco
02A540: 72 64 20 28 6A 67 69 29 20 6F 72 20 77 61 6E 74 rd (jgi) or want
02A550: 20 4A 47 52 41 46 20 74 6F 20 66 72 65 65 20 74 JGRAF to free t
02A560: 68 65 20 6D 65 6D 6F 72 79 20 61 6C 6C 6F 63 61 he memory alloca
02A570: 74 65 64 20 20 74 6F 0D 0A 20 20 20 20 20 20 70 ted to.. p
02A580: 72 6F 64 75 63 65 20 61 20 67 72 61 70 68 2C 20 roduce a graph,
02A590: 79 6F 75 20 63 61 6E 20 73 65 74 20 6A 67 69 2E you can set jgi.
02A5A0: 63 6F 6D 6D 61 6E 64 20 74 6F 20 27 58 27 20 62 command to 'X' b
02A5B0: 65 66 6F 72 65 20 63 61 6C 6C 69 6E 67 20 4A 47 efore calling JG
02A5C0: 52 41 46 2E 0D 0A 20 20 20 20 20 20 54 68 69 73 RAF... This
02A5D0: 20 77 69 6C 6C 20 66 72 65 65 20 74 68 65 20 62 will free the b
02A5E0: 75 66 66 65 72 73 20 61 6C 6C 6F 63 61 74 65 64 uffers allocated
02A5F0: 20 62 79 20 4A 47 52 41 46 20 28 69 6E 20 74 68 by JGRAF (in th
02A600: 65 20 27 49 27 20 63 6F 6D 6D 61 6E 64 29 2E 0D e 'I' command)..
02A610: 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 .....
02A620: 4E 6F 74 65 20 20 74 68 61 74 20 20 65 76 65 72 Note that ever
02A630: 79 20 20 63 61 6C 6C 20 20 74 6F 20 20 4A 47 52 y call to JGR
02A640: 41 46 20 20 74 68 61 74 20 20 69 73 20 20 6E 6F AF that is no
02A650: 74 20 70 72 6F 76 69 64 69 6E 67 20 64 61 74 61 t providing data
02A660: 0D 0A 20 20 20 20 20 20 28 6A 67 69 2E 63 6F 6D .. (jgi.com
02A670: 6D 61 6E 64 20 3D 20 27 44 27 29 20 73 68 6F 75 mand = 'D') shou
02A680: 6C 64 20 68 61 76 65 20 74 68 65 20 78 20 61 6E ld have the x an
02A690: 64 20 79 20 61 72 67 75 6D 65 6E 74 73 20 65 71 d y arguments eq
02A6A0: 75 61 6C 20 74 6F 20 30 2E 30 2E 0D 0A 0D 0A 20 ual to 0.0.....
02A6B0: 20 20 20 20 20 20 20 20 20 20 54 68 65 20 62 6F The bo
02A6C0: 64 79 20 20 6F 66 20 20 74 68 65 20 20 73 61 6D dy of the sam
02A6D0: 70 6C 65 20 20 70 72 6F 67 72 61 6D 20 20 6A 67 ple program jg
02A6E0: 20 20 69 73 20 20 69 6E 63 6C 75 64 65 64 20 20 is included
02A6F0: 68 65 72 65 2C 20 20 61 6E 64 0D 0A 20 20 20 20 here, and..
02A700: 72 20 20 6F 66 20 20 63 6F 6C 75 6D 6E 73 20 20 r of columns
02A710: 2B 20 20 31 36 29 20 20 2A 0D 0A 20 20 20 20 20 + 16) *..
02A720: 20 28 6E 75 6D 62 65 72 20 20 6F 66 20 6C 69 6E (number of lin
02A730: 65 73 20 2B 20 35 29 2C 20 77 68 69 63 68 20 73 es + 5), which s
02A740: 68 6F 75 6C 64 20 6E 6F 74 20 65 78 63 65 65 64 hould not exceed
02A750: 20 39 30 30 30 20 63 68 61 72 61 63 74 65 72 73 9000 characters
02A760: 2E 20 20 54 68 65 0D 0A 20 20 20 20 20 20 6C 65 . The.. le
02A770: 6E 67 74 68 20 6F 66 20 6A 67 69 2E 74 69 74 6C ngth of jgi.titl
02A780: 65 20 73 68 6F 75 6C 64 20 62 65 20 6C 65 73 73 e should be less
02A790: 20 74 68 61 6E 20 74 68 65 20 6E 75 6D 62 65 72 than the number
02A7A0: 20 6F 66 20 63 6F 6C 75 6D 6E 73 20 69 6E 20 20 of columns in
02A7B0: 74 68 65 0D 0A 20 20 20 20 20 20 70 6C 6F 74 2E the.. plot.
02A7C0: 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 4F .... O
02A7D0: 6E 63 65 20 20 61 6C 6C 20 20 74 68 65 20 20 72 nce all the r
02A7E0: 65 71 75 61 69 72 65 64 20 20 6D 65 6D 62 65 72 equaired member
02A7F0: 73 20 20 6F 66 20 20 6A 67 69 20 61 72 65 20 69 s of jgi are i
02A800: 6E 69 74 69 61 6C 69 7A 65 64 2C 20 73 65 74 0D nitialized, set.
02A810: 0A 20 20 20 20 20 20 6A 67 69 2E 63 6F 6D 6D 61 . jgi.comma
02A820: 6E 64 20 74 6F 20 27 49 27 20 61 6E 64 20 63 61 nd to 'I' and ca
02A830: 6C 6C 20 4A 47 52 41 46 2C 20 61 73 0D 0A 0D 0A ll JGRAF, as....
02A840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4A 47 JG
02A850: 49 2E 43 4F 4D 4D 41 4E 44 20 3A 3D 20 27 49 27 I.COMMAND := 'I'
02A860: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
02A870: 20 4A 47 52 41 46 20 28 20 4A 47 49 2C 20 30 2E JGRAF ( JGI, 0.
02A880: 30 2C 20 30 2E 30 20 29 3B 0D 0A 0D 0A 20 20 20 0, 0.0 );....
02A890: 20 20 20 28 4E 6F 74 65 20 20 74 68 61 74 20 20 (Note that
02A8A0: 74 68 65 20 20 65 78 61 6D 70 6C 65 73 20 20 6C the examples l
02A8B0: 69 73 74 65 64 20 20 68 65 72 65 20 20 69 6E 20 isted here in
02A8C0: 20 75 70 70 65 72 20 20 63 61 73 65 20 20 20 61 upper case a
02A8D0: 72 65 20 20 20 66 6F 72 0D 0A 20 20 20 20 20 20 re for..
02A8E0: 69 6C 6C 75 73 74 72 61 74 69 6F 6E 20 6F 6E 6C illustration onl
02A8F0: 79 20 61 6E 64 20 61 72 65 20 4E 4F 54 20 70 61 y and are NOT pa
02A900: 20 20 69 6C 6C 75 73 74 72 61 74 65 73 20 20 6F illustrates o
02A910: 6E 65 20 20 75 73 65 20 20 6F 66 20 4A 47 52 41 ne use of JGRA
02A920: 46 2E 20 20 4A 67 20 74 61 6B 65 73 20 61 20 64 F. Jg takes a d
02A930: 69 73 6B 20 66 69 6C 65 20 6F 66 20 63 6F 6D 6D isk file of comm
02A940: 61 6E 64 73 20 61 73 0D 0A 20 20 20 20 20 20 69 ands as.. i
02A950: 6E 70 75 74 20 61 6E 64 20 70 72 6F 64 75 63 65 nput and produce
02A960: 73 20 6F 6E 65 20 6F 72 20 6D 6F 72 65 20 70 6C s one or more pl
02A970: 6F 74 73 20 61 73 20 64 69 72 65 63 74 65 64 2E ots as directed.
02A980: 20 20 20 43 6F 6D 6D 61 6E 64 73 20 20 6F 6E 20 Commands on
02A990: 20 74 68 65 0D 0A 20 20 20 20 20 20 64 69 73 6B the.. disk
02A9A0: 20 20 66 69 6C 65 20 61 72 65 20 73 69 6D 69 6C file are simil
02A9B0: 69 61 72 20 74 6F 20 74 68 65 20 6F 70 74 69 6F iar to the optio
02A9C0: 6E 73 20 74 6F 20 4A 47 52 41 46 2C 20 77 69 74 ns to JGRAF, wit
02A9D0: 68 20 74 68 65 20 61 64 64 69 74 69 6F 6E 20 6F h the addition o
02A9E0: 66 0D 0A 20 20 20 20 20 20 74 77 6F 20 63 6F 6D f.. two com
02A9F0: 6D 61 6E 64 73 2E 20 20 54 20 66 6F 6C 6C 6F 77 mands. T follow
02AA00: 65 64 20 62 79 20 20 27 74 69 74 6C 65 27 20 20 ed by 'title'
02AA10: 6D 61 79 20 20 70 72 65 63 65 65 64 20 20 74 68 may preceed th
02AA20: 65 20 20 49 20 20 63 6F 6D 6D 61 6E 64 2E 0D 0A e I command...
02AA30: 20 20 20 20 20 20 50 65 72 69 6F 64 20 20 28 2E Period (.
02AA40: 29 20 20 66 6F 6C 6C 6F 77 65 64 20 20 62 79 20 ) followed by
02AA50: 61 20 73 70 61 63 65 20 61 6E 64 20 61 20 6E 65 a space and a ne
02AA60: 77 20 70 6C 6F 74 20 63 68 61 72 61 63 74 65 72 w plot character
02AA70: 20 77 69 6C 6C 20 72 65 73 65 74 0D 0A 20 20 20 will reset..
02AA80: 20 20 20 74 68 65 20 63 75 72 72 65 6E 74 20 70 the current p
02AA90: 6C 6F 74 20 63 68 61 72 61 63 74 65 72 2E 0D 0A lot character...
02AAA0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02AAB0: 62 65 67 69 6E 20 20 28 2A 20 6A 67 20 2A 29 0D begin (* jg *).
02AAC0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 77 . w
02AAD0: 72 69 74 65 28 27 47 65 6E 65 72 61 6C 20 67 72 rite('General gr
02AAE0: 61 70 68 69 6E 67 20 69 6E 70 75 74 20 66 69 6C aphing input fil
02AAF0: 65 3A 20 27 29 3B 0D 0A 20 20 20 20 20 20 20 20 e: ');..
02AB00: 72 74 20 6F 66 20 74 68 65 20 70 72 6F 67 72 61 rt of the progra
02AB10: 6D 20 6A 67 2E 29 0D 0A 0D 0A 20 20 20 20 20 20 m jg.)....
02AB20: 20 20 20 20 20 54 68 65 6E 2C 20 20 74 6F 20 70 Then, to p
02AB30: 6C 61 63 65 20 64 61 74 61 20 70 6F 69 6E 74 73 lace data points
02AB40: 20 6F 6E 20 74 68 65 20 67 72 61 70 68 2C 20 73 on the graph, s
02AB50: 65 74 20 6A 67 69 2E 63 6F 6D 6D 61 6E 64 20 74 et jgi.command t
02AB60: 6F 20 27 44 27 0D 0A 20 20 20 20 20 20 61 6E 64 o 'D'.. and
02AB70: 20 63 61 6C 6C 20 4A 47 52 41 46 20 66 6F 72 20 call JGRAF for
02AB80: 65 61 63 68 20 6F 66 20 74 68 65 20 61 70 70 72 each of the appr
02AB90: 6F 70 72 69 61 74 65 20 70 6F 69 6E 74 73 2E 20 opriate points.
02ABA0: 20 44 6F 20 74 68 69 73 20 61 73 20 20 6F 66 74 Do this as oft
02ABB0: 65 6E 0D 0A 20 20 20 20 20 20 61 73 20 20 6E 65 en.. as ne
02ABC0: 65 64 65 64 2E 20 20 20 54 6F 20 67 65 74 20 74 eded. To get t
02ABD0: 77 6F 20 64 69 73 74 69 6E 63 74 20 63 75 72 76 wo distinct curv
02ABE0: 65 73 2C 20 79 6F 75 20 63 6F 75 6C 64 20 73 65 es, you could se
02ABF0: 74 20 6A 67 69 2E 70 6C 6F 74 5F 63 68 61 72 0D t jgi.plot_char.
02AC00: 0A 20 20 20 20 20 20 74 6F 20 27 2A 27 20 66 6F . to '*' fo
02AC10: 72 20 6F 6E 65 20 73 65 74 20 6F 66 20 70 6F 69 r one set of poi
02AC20: 6E 74 73 2C 20 74 68 65 6E 20 73 65 74 20 69 74 nts, then set it
02AC30: 20 74 6F 20 27 23 27 20 62 65 66 6F 72 65 20 63 to '#' before c
02AC40: 61 6C 6C 69 6E 67 20 4A 47 52 41 46 0D 0A 20 20 alling JGRAF..
02AC50: 20 20 20 20 77 69 74 68 20 61 6E 6F 74 68 65 72 with another
02AC60: 20 73 65 74 20 6F 66 20 70 6F 69 6E 74 73 2E 0D set of points..
02AC70: 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ...
02AC80: 20 4A 47 49 2E 43 4F 4D 4D 41 4E 44 20 3A 3D 20 JGI.COMMAND :=
02AC90: 27 44 27 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 'D';..
02ACA0: 20 20 20 20 4A 47 49 2E 50 4C 4F 54 5F 43 48 41 JGI.PLOT_CHA
02ACB0: 52 20 3A 3D 20 27 2A 27 3B 0D 0A 20 20 20 20 20 R := '*';..
02ACC0: 20 20 20 20 20 20 20 20 20 4A 47 52 41 46 20 28 JGRAF (
02ACD0: 20 4A 47 49 2C 20 31 35 2E 34 2C 20 31 39 39 2E JGI, 15.4, 199.
02ACE0: 32 20 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 2 );..
02ACF0: 20 20 20 20 4A 47 52 41 46 20 28 20 4A 47 49 2C JGRAF ( JGI,
02AD00: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02AD10: 24 00 00 00 02 09 2A E5 24 00 C1 02 00 00 00 02 $.....*.$.......
02AD20: 24 00 C6 02 00 00 00 02 24 00 C2 02 00 00 00 02 $.......$.......
02AD30: 24 00 C7 02 00 00 00 02 24 00 C3 02 00 00 00 02 $.......$.......
02AD40: 24 00 C8 02 00 00 00 02 24 00 C4 02 00 00 00 02 $.......$.......
02AD50: 24 00 C9 02 00 00 00 02 24 00 C5 02 00 00 00 02 $.......$.......
02AD60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AD70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AD80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AD90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02ADF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02AE00: 20 20 20 20 20 20 72 65 61 64 6C 6E 28 66 69 6C readln(fil
02AE10: 65 5F 6E 61 6D 65 29 3B 0D 0A 20 20 20 20 20 20 e_name);..
02AE20: 20 20 20 20 20 20 20 20 72 65 73 65 74 28 69 6E reset(in
02AE30: 66 2C 66 69 6C 65 5F 6E 61 6D 65 2C 20 74 65 78 f,file_name, tex
02AE40: 74 2C 20 35 31 32 29 3B 0D 0A 20 20 20 20 20 20 t, 512);..
02AE50: 20 20 20 20 20 20 20 20 6A 67 69 2E 74 69 74 6C jgi.titl
02AE60: 65 20 3A 3D 20 27 20 27 3B 0D 0A 20 20 20 20 20 e := ' ';..
02AE70: 20 20 20 20 20 20 20 20 20 77 68 69 6C 65 20 28 while (
02AE80: 6E 6F 74 20 65 6F 66 28 69 6E 66 29 29 20 64 6F not eof(inf)) do
02AE90: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02AEA0: 20 20 20 20 20 20 20 20 62 65 67 69 6E 0D 0A 20 begin..
02AEB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AEC0: 20 20 20 20 20 72 65 61 64 28 69 6E 66 3B 20 63 read(inf; c
02AED0: 6F 6D 6D 61 6E 64 29 3B 0D 0A 20 20 20 20 20 20 ommand);..
02AEE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AEF0: 63 6F 6D 6D 61 6E 64 20 3A 3D 20 75 70 63 61 73 command := upcas
02AF00: 65 28 63 6F 6D 6D 61 6E 64 29 3B 0D 0A 20 20 20 e(command);..
02AF10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AF20: 20 20 20 77 72 69 74 65 6C 6E 28 27 64 62 20 27 writeln('db '
02AF30: 2C 63 6F 6D 6D 61 6E 64 29 3B 0D 0A 20 20 20 20 ,command);..
02AF40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AF50: 20 20 6A 67 69 2E 63 6F 6D 6D 61 6E 64 20 3A 3D jgi.command :=
02AF60: 20 63 6F 6D 6D 61 6E 64 3B 0D 0A 20 20 20 20 20 command;..
02AF70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AF80: 20 63 61 73 65 20 63 6F 6D 6D 61 6E 64 20 6F 66 case command of
02AF90: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02AFA0: 20 20 20 20 20 20 20 20 27 54 27 3A 20 20 20 20 'T':
02AFB0: 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 20 20 20 begin..
02AFC0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02AFD0: 20 20 20 20 20 72 65 61 64 6C 6E 20 28 69 6E 66 readln (inf
02AFE0: 3B 20 74 69 74 6C 65 29 3B 0D 0A 20 20 20 20 20 ; title);..
02AFF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2A *
02B010: 2A 2A 2A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ***..
02B020: 20 20 20 20 36 30 20 2D 49 2D 2D 2D 2D 2D 2D 2D 60 -I-------
02B030: 2D 2D 49 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 2D 2D 2D --I---------I---
02B040: 2D 2D 2D 2D 2D 2D 49 2D 2D 2D 2D 2D 2D 2D 2D 2D ------I---------
02B050: 49 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 I..
02B060: 20 20 20 20 20 20 49 20 20 20 20 20 20 20 20 20 I
02B070: 49 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 I I
02B080: 20 20 20 20 49 20 20 20 20 20 20 20 20 20 49 0D I I.
02B090: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02B0A0: 20 20 20 20 49 20 20 20 20 20 20 20 20 20 49 20 I I
02B0B0: 20 20 20 20 20 20 20 20 49 20 20 20 20 20 20 20 I
02B0C0: 20 20 49 20 20 20 20 20 20 20 20 20 49 0D 0A 20 I I..
02B0D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B0E0: 20 20 49 20 20 20 20 20 20 20 20 20 49 20 20 20 I I
02B0F0: 20 20 20 20 20 20 49 20 20 20 20 20 20 20 20 20 I
02B100: 49 20 20 20 20 20 20 20 20 20 49 0D 0A 20 20 20 I I..
02B110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B120: 49 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 I I
02B130: 20 20 20 20 49 20 20 20 20 20 20 20 20 20 49 20 I I
02B140: 20 20 20 20 20 20 20 20 49 0D 0A 20 20 20 20 20 I..
02B150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 20 I
02B160: 20 20 20 20 20 20 20 20 49 20 20 20 20 20 20 20 I
02B170: 20 20 49 20 20 20 20 20 20 20 20 20 49 20 20 20 I I
02B180: 20 20 20 20 20 20 49 0D 0A 20 20 20 20 20 20 20 I..
02B190: 20 20 20 20 20 20 20 20 20 20 20 20 49 20 20 20 I
02B1A0: 20 20 20 20 20 20 49 20 20 20 20 20 20 20 20 20 I
02B1B0: 49 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 I I
02B1C0: 20 20 20 20 49 0D 0A 20 20 20 20 20 20 20 20 20 I..
02B1D0: 20 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 I
02B1E0: 20 20 20 20 49 20 20 20 20 20 20 20 20 20 49 20 I I
02B1F0: 20 20 20 20 20 20 20 20 49 20 20 20 20 20 20 20 I
02B200: 20 20 20 20 20 20 20 20 20 6A 67 69 2E 74 69 74 jgi.tit
02B210: 6C 65 20 3A 3D 20 74 69 74 6C 65 3B 0D 0A 20 20 le := title;..
02B220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B230: 20 20 20 20 20 20 20 20 20 20 20 20 65 6E 64 3B end;
02B240: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02B250: 20 20 20 20 20 20 20 20 27 49 27 3A 20 20 20 20 'I':
02B260: 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 20 20 20 begin..
02B270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B280: 20 20 20 20 20 72 65 61 64 6C 6E 20 28 69 6E 66 readln (inf
02B290: 3B 20 6A 67 69 2E 72 6F 77 73 2C 20 6A 67 69 2E ; jgi.rows, jgi.
02B2A0: 63 6F 6C 75 6D 6E 73 2C 0D 0A 20 20 20 20 20 20 columns,..
02B2B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B2C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B2D0: 6A 67 69 2E 78 5F 6C 6F 77 65 72 2C 20 6A 67 69 jgi.x_lower, jgi
02B2E0: 2E 78 5F 75 70 70 65 72 2C 0D 0A 20 20 20 20 20 .x_upper,..
02B2F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B310: 20 6A 67 69 2E 79 5F 6C 6F 77 65 72 2C 20 6A 67 jgi.y_lower, jg
02B320: 69 2E 79 5F 75 70 70 65 72 29 3B 0D 0A 20 20 20 i.y_upper);..
02B330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B340: 20 20 20 20 20 20 20 20 20 20 20 6A 67 69 2E 70 jgi.p
02B350: 6C 6F 74 5F 63 68 61 72 20 3A 3D 20 27 2A 27 3B lot_char := '*';
02B360: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02B370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B380: 6A 67 69 2E 78 5F 67 72 69 64 20 3A 3D 20 74 72 jgi.x_grid := tr
02B390: 75 65 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 ue;..
02B3A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B3B0: 20 20 20 6A 67 69 2E 79 5F 67 72 69 64 20 3A 3D jgi.y_grid :=
02B3C0: 20 74 72 75 65 3B 0D 0A 20 20 20 20 20 20 20 20 true;..
02B3D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B3E0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 2A (*
02B3F0: 20 6E 6F 74 65 20 74 68 61 74 20 61 6C 6C 20 72 note that all r
02B400: 20 20 49 0D 0A 20 20 20 20 20 20 20 20 20 20 20 I..
02B410: 20 20 20 20 20 20 20 20 49 20 20 20 20 20 20 20 I
02B420: 20 20 49 20 20 20 20 20 20 20 20 20 49 20 20 20 I I
02B430: 20 20 20 20 20 20 49 20 20 20 20 20 20 20 20 20 I
02B440: 49 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 I..
02B450: 20 20 20 20 20 20 49 20 20 20 20 20 20 20 20 20 I
02B460: 49 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 I I
02B470: 20 20 20 20 49 20 20 20 20 20 20 20 20 20 49 0D I I.
02B480: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02B490: 33 30 20 2D 49 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 2D 30 -I---------I-
02B4A0: 2D 2D 2D 2D 2D 2D 2D 2D 49 2D 2D 2D 2D 2D 2D 2D --------I-------
02B4B0: 2D 2D 49 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 0D 0A 20 --I---------I..
02B4C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B4D0: 20 20 49 20 20 20 20 20 20 20 20 20 49 20 20 20 I I
02B4E0: 20 20 20 20 20 20 49 20 20 20 20 20 20 20 20 20 I
02B4F0: 49 20 23 20 20 20 20 20 20 20 49 20 0D 0A 20 20 I # I ..
02B500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B510: 20 49 20 20 20 20 20 20 20 20 20 49 20 20 20 20 I I
02B520: 20 20 20 20 20 49 20 20 20 20 20 20 20 20 20 49 I I
02B530: 20 20 20 20 20 20 20 20 20 49 0D 0A 20 20 20 20 I..
02B540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 I
02B550: 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 20 I
02B560: 20 20 20 49 20 20 20 20 20 20 20 20 20 49 20 20 I I
02B570: 20 20 20 20 20 20 20 49 0D 0A 20 20 20 20 20 20 I..
02B580: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 20 20 I
02B590: 20 20 20 20 20 20 20 49 20 20 20 20 20 20 20 20 I
02B5A0: 20 49 20 20 20 20 20 20 20 20 20 49 20 20 20 20 I I
02B5B0: 20 20 20 20 20 49 0D 0A 20 20 20 20 20 20 20 20 I..
02B5C0: 20 20 20 20 20 20 20 20 20 20 20 49 20 20 20 20 I
02B5D0: 20 20 20 2A 2A 2A 20 20 20 20 20 20 20 20 20 49 *** I
02B5E0: 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 20 I
02B5F0: 20 20 20 49 0D 0A 20 20 20 20 20 20 20 20 20 20 I..
02B600: 65 71 75 69 72 65 64 20 6D 65 6D 62 65 72 73 20 equired members
02B610: 2A 29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 *)..
02B620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B630: 20 20 20 20 20 20 20 20 20 20 28 2A 20 6F 66 20 (* of
02B640: 6A 67 69 20 68 61 76 65 20 62 65 65 6E 20 73 65 jgi have been se
02B650: 74 20 2A 29 0D 0A 20 20 20 20 20 20 20 20 20 20 t *)..
02B660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B670: 20 20 20 20 6A 67 72 61 66 28 6A 67 69 2C 20 30 jgraf(jgi, 0
02B680: 2E 30 2C 20 30 2E 30 29 3B 0D 0A 20 20 20 20 20 .0, 0.0);..
02B690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B6A0: 20 20 20 20 20 20 20 20 20 77 72 69 74 65 6C 6E writeln
02B6B0: 28 27 20 64 6F 6E 65 20 49 27 29 3B 0D 0A 20 20 (' done I');..
02B6C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B6D0: 20 20 20 20 20 20 20 20 20 20 20 20 65 6E 64 3B end;
02B6E0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02B6F0: 20 20 20 20 20 20 20 20 27 44 27 3A 20 20 20 20 'D':
02B700: 62 65 67 69 6E 0D 0A 20 20 20 20 20 20 20 20 20 begin..
02B710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B720: 20 20 20 20 20 72 65 61 64 28 69 6E 66 3B 20 78 read(inf; x
02B730: 2C 20 79 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 , y);..
02B740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B750: 20 20 20 20 20 6A 67 72 61 66 28 6A 67 69 2C 20 jgraf(jgi,
02B760: 78 2C 20 79 29 3B 0D 0A 20 20 20 20 20 20 20 20 x, y);..
02B770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B780: 20 20 20 20 20 20 65 6E 64 3B 0D 0A 20 20 20 20 end;..
02B790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B7A0: 20 20 27 2E 27 3A 20 20 20 20 72 65 61 64 6C 6E '.': readln
02B7B0: 28 69 6E 66 3B 20 6A 67 69 2E 70 6C 6F 74 5F 63 (inf; jgi.plot_c
02B7C0: 68 61 72 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 har);..
02B7D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 27 43 27 'C'
02B7E0: 3A 20 20 20 20 6A 67 72 61 66 28 6A 67 69 2C 20 : jgraf(jgi,
02B7F0: 30 2E 30 2C 20 30 2E 30 29 3B 0D 0A 20 20 20 20 0.0, 0.0);..
02B800: 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 20 I
02B810: 2A 20 20 49 20 20 20 20 20 20 20 20 20 49 20 20 * I I
02B820: 20 20 20 20 20 20 20 49 20 20 20 20 20 20 20 20 I
02B830: 20 49 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 I..
02B840: 20 20 20 20 20 20 20 49 20 20 20 20 20 2A 20 20 I *
02B850: 20 49 20 20 20 20 20 20 20 20 20 49 20 20 20 20 I I
02B860: 20 20 20 20 20 49 20 20 20 20 20 20 20 20 20 49 I I
02B870: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02B880: 20 20 20 20 20 49 20 20 20 20 2A 20 20 20 20 49 I * I
02B890: 20 20 20 20 20 20 20 20 20 49 20 20 20 20 20 20 I
02B8A0: 20 20 20 49 20 23 20 20 20 20 20 20 20 49 0D 0A I # I..
02B8B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B8C0: 20 20 20 49 20 20 20 20 23 20 20 20 20 49 20 20 I # I
02B8D0: 20 20 20 20 20 20 20 49 20 20 20 20 20 20 20 20 I
02B8E0: 20 49 20 20 20 20 20 20 20 20 20 49 0D 0A 20 20 I I..
02B8F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 0
02B900: 2D 49 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 2D 2D 2D 2D -I---------I----
02B910: 2D 2D 2D 2D 2D 49 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 -----I---------I
02B920: 2D 2D 2D 2D 2D 2D 2D 2D 2D 49 0D 0A 0D 0A 20 20 ---------I....
02B930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02B940: 20 30 20 20 20 20 20 20 20 20 20 31 30 20 20 20 0 10
02B950: 20 20 20 20 20 32 30 20 20 20 20 20 20 20 20 33 20 3
02B960: 30 20 20 20 20 20 20 20 20 34 30 0D 0A 20 20 20 0 40..
02B970: 20 20 20 41 20 73 75 6D 6D 61 72 79 20 6F 66 20 A summary of
02B980: 74 68 65 20 63 6F 6D 6D 61 6E 64 73 20 74 6F 20 the commands to
02B990: 4A 47 52 41 46 20 69 73 20 69 6E 63 6C 75 64 65 JGRAF is include
02B9A0: 64 20 6E 6F 77 20 66 6F 72 20 72 65 66 65 72 65 d now for refere
02B9B0: 6E 63 65 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 nce:....
02B9C0: 20 20 20 20 20 63 6F 64 65 20 20 20 20 20 6D 65 code me
02B9D0: 61 6E 69 6E 67 0D 0A 20 20 20 20 20 20 20 20 20 aning..
02B9E0: 20 20 20 20 2D 2D 2D 2D 20 20 20 20 20 2D 2D 2D ---- ---
02B9F0: 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 20 20 20 20 20 20 --------..
02BA00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02BA10: 20 20 27 50 27 3A 20 20 20 20 6A 67 72 61 66 28 'P': jgraf(
02BA20: 6A 67 69 2C 20 30 2E 30 2C 20 30 2E 30 29 3B 0D jgi, 0.0, 0.0);.
02BA30: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02BA40: 20 20 20 20 20 20 20 27 53 27 3A 20 20 20 20 62 'S': b
02BA50: 65 67 69 6E 0D 0A 20 20 20 20 20 20 20 20 20 20 egin..
02BA60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02BA70: 20 20 20 20 72 65 61 64 6C 6E 28 69 6E 66 3B 20 readln(inf;
02BA80: 66 69 6C 65 5F 6E 61 6D 65 29 3B 0D 0A 20 20 20 file_name);..
02BA90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02BAA0: 20 20 20 20 20 20 20 20 20 20 20 6A 67 69 2E 66 jgi.f
02BAB0: 69 6C 65 6E 61 6D 65 20 3A 3D 20 66 69 6C 65 5F ilename := file_
02BAC0: 6E 61 6D 65 3B 0D 0A 20 20 20 20 20 20 20 20 20 name;..
02BAD0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02BAE0: 20 20 20 20 20 6A 67 72 61 66 28 6A 67 69 2C 20 jgraf(jgi,
02BAF0: 30 2E 30 2C 20 30 2E 30 29 3B 0D 0A 20 20 20 20 0.0, 0.0);..
02BB00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02BB10: 20 20 20 20 20 20 20 20 20 20 65 6E 64 3B 0D 0A end;..
02BB20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02BB30: 20 20 20 20 20 20 27 58 27 3A 20 20 20 20 6A 67 'X': jg
02BB40: 72 61 66 28 6A 67 69 2C 20 30 2E 30 2C 20 30 2E raf(jgi, 0.0, 0.
02BB50: 30 29 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 0);..
02BB60: 20 20 20 20 20 20 20 20 20 20 20 65 6C 73 65 3A else:
02BB70: 20 20 20 77 72 69 74 65 6C 6E 28 27 55 6E 72 65 writeln('Unre
02BB80: 63 6F 67 6E 69 7A 65 64 20 63 6F 6D 6D 61 6E 64 cognized command
02BB90: 3A 20 27 2C 63 6F 6D 6D 61 6E 64 29 3B 0D 0A 20 : ',command);..
02BBA0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02BBB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6E 64 end
02BBC0: 3B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 ;..
02BBD0: 20 20 20 20 20 20 20 20 20 65 6E 64 3B 0D 0A 20 end;..
02BBE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6C 6F clo
02BBF0: 73 65 28 69 6E 66 29 3B 0D 0A 20 20 20 20 20 20 se(inf);..
02BC00: 20 20 20 20 20 20 20 20 43 20 20 20 20 20 20 20 C
02BC10: 64 69 73 70 6C 61 79 20 67 72 61 70 68 20 6F 6E display graph on
02BC20: 20 63 6F 6E 73 6F 6C 65 0D 0A 20 20 20 20 20 20 console..
02BC30: 20 20 20 20 20 20 20 20 44 20 20 20 20 20 20 20 D
02BC40: 70 6C 6F 74 20 61 20 64 61 74 61 20 70 6F 69 6E plot a data poin
02BC50: 74 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 t..
02BC60: 20 49 20 20 20 20 20 20 20 69 6E 69 74 69 61 6C I initial
02BC70: 69 7A 65 20 67 72 61 70 68 20 62 75 66 66 65 72 ize graph buffer
02BC80: 20 61 6E 64 20 61 78 65 73 0D 0A 20 20 20 20 20 and axes..
02BC90: 20 20 20 20 20 20 20 20 20 50 20 20 20 20 20 20 P
02BCA0: 20 70 72 69 6E 74 20 67 72 61 70 68 0D 0A 20 20 print graph..
02BCB0: 20 20 20 20 20 20 20 20 20 20 20 20 53 20 20 20 S
02BCC0: 20 20 20 20 73 61 76 65 20 67 72 61 70 68 20 6F save graph o
02BCD0: 6E 20 61 20 64 69 73 6B 20 66 69 6C 65 0D 0A 20 n a disk file..
02BCE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 58 20 20 X
02BCF0: 20 20 20 20 20 64 65 6C 65 74 65 20 67 72 61 70 delete grap
02BD00: 68 20 62 75 66 66 65 72 0D 0A 0D 0A 20 20 20 20 h buffer....
02BD10: 20 20 20 20 20 20 20 54 68 65 20 73 6F 75 72 63 The sourc
02BD20: 65 20 63 6F 64 65 20 66 6F 72 20 4A 47 52 41 46 e code for JGRAF
02BD30: 20 69 73 20 70 72 6F 76 69 64 65 64 20 61 6E 64 is provided and
02BD40: 20 6D 61 79 20 62 65 20 6D 6F 64 69 66 69 65 64 may be modified
02BD50: 2E 20 20 20 46 6F 72 0D 0A 20 20 20 20 20 20 65 . For.. e
02BD60: 78 61 6D 70 6C 65 2C 20 20 74 68 65 20 6E 75 6D xample, the num
02BD70: 62 65 72 20 6F 66 20 6C 69 6E 65 73 20 62 65 74 ber of lines bet
02BD80: 77 65 65 6E 20 74 68 65 20 78 5F 67 72 69 64 20 ween the x_grid
02BD90: 6C 69 6E 65 73 20 63 61 6E 20 62 65 20 63 68 61 lines can be cha
02BDA0: 6E 67 65 64 0D 0A 20 20 20 20 20 20 74 6F 20 36 nged.. to 6
02BDB0: 20 28 6F 72 20 74 6F 20 38 29 20 73 6F 20 74 68 (or to 8) so th
02BDC0: 61 74 20 74 68 65 20 67 72 69 64 20 6C 69 6E 65 at the grid line
02BDD0: 73 20 20 66 6F 72 6D 20 20 61 20 20 6F 6E 65 20 s form a one
02BDE0: 20 69 6E 63 68 20 20 73 71 75 61 72 65 20 20 6F inch square o
02BDF0: 6E 0D 0A 20 20 20 20 20 20 70 72 69 6E 74 65 72 n.. printer
02BE00: 20 20 20 20 20 20 20 20 65 6E 64 2E 0D 0A 0D 0A end.....
02BE10: 20 20 20 20 20 20 47 69 76 65 6E 20 74 68 65 20 Given the
02BE20: 69 6E 70 75 74 20 66 69 6C 65 20 53 41 4D 50 4C input file SAMPL
02BE30: 45 2E 44 41 54 20 61 73 20 66 6F 6C 6C 6F 77 73 E.DAT as follows
02BE40: 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 :....
02BE50: 20 20 20 54 20 27 53 61 6D 70 6C 65 27 0D 0A 20 T 'Sample'..
02BE60: 20 20 20 20 20 20 20 20 20 20 20 20 20 49 20 32 I 2
02BE70: 30 20 34 30 20 30 20 34 30 20 30 20 36 30 0D 0A 0 40 0 40 0 60..
02BE80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 20 D
02BE90: 35 20 36 20 20 20 44 20 36 20 31 30 0D 0A 20 20 5 6 D 6 10..
02BEA0: 20 20 20 20 20 20 20 20 20 20 20 20 44 20 37 20 D 7
02BEB0: 31 32 20 20 44 20 38 20 31 35 0D 0A 20 20 20 20 12 D 8 15..
02BEC0: 20 20 20 20 20 20 20 20 20 20 44 20 39 20 31 36 D 9 16
02BED0: 20 20 44 20 31 30 20 31 36 0D 0A 20 20 20 20 20 D 10 16..
02BEE0: 20 20 20 20 20 20 20 20 20 2E 20 23 0D 0A 20 20 . #..
02BEF0: 20 20 20 20 20 20 20 20 20 20 20 20 44 20 35 20 D 5
02BF00: 32 20 20 20 44 20 33 32 20 36 0D 0A 20 20 20 20 2 D 32 6..
02BF10: 20 20 20 20 20 20 20 20 20 20 44 20 33 32 20 32 D 32 2
02BF20: 37 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 7..
02BF30: 20 43 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 C..
02BF40: 20 20 53 20 73 61 6D 70 6C 65 2E 6F 75 74 0D 0A S sample.out..
02BF50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58 0D X.
02BF60: 0A 0D 0A 20 20 20 20 20 20 4A 67 20 77 69 6C 6C ... Jg will
02BF70: 20 70 72 6F 64 75 63 65 20 74 68 65 20 20 28 75 produce the (u
02BF80: 6E 69 6E 73 70 69 72 65 64 29 20 20 6F 75 74 70 ninspired) outp
02BF90: 75 74 20 66 69 6C 65 20 53 41 4D 50 4C 45 2E 4F ut file SAMPLE.O
02BFA0: 55 54 20 61 73 20 66 6F 6C 6C 6F 77 73 2C 0D 0A UT as follows,..
02BFB0: 20 20 20 20 20 20 67 69 76 65 6E 20 74 68 65 20 given the
02BFC0: 69 6E 70 75 74 20 6C 69 73 74 65 64 20 61 62 6F input listed abo
02BFD0: 76 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 ve...........
02BFE0: 20 20 20 4A 47 52 41 46 20 76 65 72 20 33 2E 30 JGRAF ver 3.0
02BFF0: 20 20 20 20 2A 2A 2A 2A 20 53 61 6D 70 6C 65 20 **** Sample
02C000: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02C010: 25 00 00 00 02 09 2A E5 25 00 C1 02 00 00 00 02 %.....*.%.......
02C020: 25 00 C6 02 00 00 00 02 25 00 C2 02 00 00 00 02 %.......%.......
02C030: 25 00 C7 02 00 00 00 02 25 00 C3 02 00 00 00 02 %.......%.......
02C040: 25 00 C8 02 00 00 00 02 25 00 C4 02 00 00 00 02 %.......%.......
02C050: 25 00 C9 02 00 00 00 02 25 00 C5 02 00 00 00 02 %.......%.......
02C060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C0F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02C100: 73 20 77 69 74 68 20 31 30 20 63 68 61 72 61 63 s with 10 charac
02C110: 74 65 72 73 20 70 65 72 20 69 6E 63 68 20 61 6E ters per inch an
02C120: 64 20 36 20 28 6F 72 20 38 29 20 6C 69 6E 65 73 d 6 (or 8) lines
02C130: 20 70 65 72 20 69 6E 63 68 2E 0D 0A 0D 0A 20 20 per inch.....
02C140: 20 20 20 20 20 20 20 20 20 4A 47 52 41 46 20 20 JGRAF
02C150: 69 73 20 20 6E 6F 74 20 20 6C 69 6D 69 74 65 64 is not limited
02C160: 20 20 74 6F 20 20 73 63 61 74 74 65 72 20 20 70 to scatter p
02C170: 6C 6F 74 73 2E 20 20 20 57 69 74 68 20 20 61 70 lots. With ap
02C180: 70 72 6F 70 72 69 61 74 65 0D 0A 20 20 20 20 20 propriate..
02C190: 20 73 65 6C 65 63 74 69 6F 6E 20 6F 66 20 64 61 selection of da
02C1A0: 74 61 20 70 6F 69 6E 74 73 2C 20 68 69 73 74 6F ta points, histo
02C1B0: 67 72 61 6D 73 20 63 61 6E 20 62 65 20 70 72 6F grams can be pro
02C1C0: 64 75 63 65 64 2E 20 20 43 6F 6E 74 6F 75 72 20 duced. Contour
02C1D0: 20 70 6C 6F 74 73 0D 0A 20 20 20 20 20 20 28 61 plots.. (a
02C1E0: 6E 64 20 65 76 65 6E 20 69 73 6F 6D 65 74 72 69 nd even isometri
02C1F0: 63 20 64 72 61 77 69 6E 67 73 29 20 61 72 65 20 c drawings) are
02C200: 61 6C 73 6F 20 70 6F 73 73 69 62 6C 65 2E 0D 0A also possible...
02C210: 0D 0A 20 20 20 20 20 20 46 2E 20 20 20 52 65 73 .. F. Res
02C220: 74 72 69 63 74 69 6F 6E 73 0D 0A 20 20 20 20 20 trictions..
02C230: 20 31 2E 20 41 72 72 61 79 73 20 61 72 65 20 6C 1. Arrays are l
02C240: 69 6D 69 74 65 64 20 74 6F 20 38 20 64 69 6D 65 imited to 8 dime
02C250: 6E 73 69 6F 6E 73 2E 0D 0A 0D 0A 20 20 20 20 20 nsions.....
02C260: 20 32 2E 20 4C 69 74 65 72 61 6C 20 63 68 61 72 2. Literal char
02C270: 73 20 73 74 72 69 6E 67 73 20 69 6E 20 74 68 65 s strings in the
02C280: 20 27 63 6F 6E 73 74 27 20 73 65 63 74 69 6F 6E 'const' section
02C290: 20 61 72 65 20 6C 69 6D 69 74 65 64 20 74 6F 20 are limited to
02C2A0: 33 32 20 63 68 61 72 73 2E 0D 0A 0D 0A 20 20 20 32 chars.....
02C2B0: 20 20 20 33 2E 20 52 61 6E 64 6F 6D 20 64 69 73 3. Random dis
02C2C0: 6B 20 66 69 6C 65 73 20 72 65 71 75 69 72 65 20 k files require
02C2D0: 43 50 2F 4D 20 32 2E 32 20 61 6E 64 20 6D 61 79 CP/M 2.2 and may
02C2E0: 20 62 65 20 75 70 20 74 6F 20 38 20 4D 42 20 69 be up to 8 MB i
02C2F0: 6E 20 73 69 7A 65 2E 0D 0A 0D 0A 20 20 20 20 20 n size.....
02C300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C500: 20 34 2E 20 20 53 65 74 73 20 20 61 72 65 20 20 4. Sets are
02C510: 6C 69 6D 69 74 65 64 20 74 6F 20 31 32 38 20 65 limited to 128 e
02C520: 6C 65 6D 65 6E 74 73 2E 20 20 54 68 65 20 66 69 lements. The fi
02C530: 72 73 74 20 65 6C 65 6D 65 6E 74 20 28 6C 65 66 rst element (lef
02C540: 74 6D 6F 73 74 29 0D 0A 20 20 20 20 20 20 63 6F tmost).. co
02C550: 72 72 65 73 70 6F 6E 64 73 20 74 6F 20 30 3B 20 rresponds to 0;
02C560: 74 68 65 20 6C 61 73 74 20 65 6C 65 6D 65 6E 74 the last element
02C570: 20 28 72 69 67 68 74 6D 6F 73 74 29 20 63 6F 72 (rightmost) cor
02C580: 72 65 73 70 6F 6E 64 73 20 74 6F 20 31 32 37 2E responds to 127.
02C590: 0D 0A 0D 0A 20 20 20 20 20 20 35 2E 20 55 70 20 .... 5. Up
02C5A0: 74 6F 20 36 33 20 65 78 74 65 72 6E 61 6C 20 70 to 63 external p
02C5B0: 72 6F 63 65 64 75 72 65 73 20 61 6E 64 20 66 75 rocedures and fu
02C5C0: 6E 63 74 69 6F 6E 73 20 6D 61 79 20 62 65 20 64 nctions may be d
02C5D0: 65 63 6C 61 72 65 64 2E 0D 0A 0D 0A 20 20 20 20 eclared.....
02C5E0: 20 20 36 2E 20 20 4E 6F 74 20 6D 6F 72 65 20 74 6. Not more t
02C5F0: 68 61 6E 20 31 36 33 32 20 64 79 6E 61 6D 69 63 han 1632 dynamic
02C600: 20 73 74 6F 72 61 67 65 20 62 6C 6F 63 6B 73 20 storage blocks
02C610: 6D 61 79 20 62 65 20 61 6C 6C 6F 63 61 74 65 64 may be allocated
02C620: 20 61 74 20 6F 6E 65 0D 0A 20 20 20 20 20 20 74 at one.. t
02C630: 69 6D 65 2E 20 20 54 68 65 20 72 75 6E 2D 74 69 ime. The run-ti
02C640: 6D 65 20 73 79 73 74 65 6D 20 6D 61 79 20 72 65 me system may re
02C650: 71 75 69 72 65 20 75 70 20 74 6F 20 31 30 30 20 quire up to 100
02C660: 6F 66 20 20 74 68 65 73 65 20 20 66 6F 72 20 20 of these for
02C670: 66 69 6C 65 0D 0A 20 20 20 20 20 20 62 75 66 66 file.. buff
02C680: 65 72 73 2C 20 66 69 6C 65 20 63 6F 6E 74 72 6F ers, file contro
02C690: 6C 20 62 6C 6F 63 6B 73 2C 20 65 78 74 65 72 6E l blocks, extern
02C6A0: 61 6C 20 70 72 6F 63 65 64 75 72 65 73 20 61 6E al procedures an
02C6B0: 64 20 6F 74 68 65 72 20 75 73 65 73 2E 0D 0A 0D d other uses....
02C6C0: 0A 20 20 20 20 20 20 37 2E 20 22 57 69 74 68 22 . 7. "With"
02C6D0: 20 73 74 61 74 65 6D 65 6E 74 73 20 6D 61 79 20 statements may
02C6E0: 6E 6F 74 20 62 65 20 6E 65 73 74 65 64 20 74 6F not be nested to
02C6F0: 20 6D 6F 72 65 20 74 68 61 6E 20 33 31 20 6C 65 more than 31 le
02C700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02C900: 76 65 6C 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 38 vels..... 8
02C910: 2E 20 22 43 61 73 65 22 20 73 74 61 74 65 6D 65 . "Case" stateme
02C920: 6E 74 73 20 61 72 65 20 6C 69 6D 69 74 65 64 20 nts are limited
02C930: 74 6F 20 31 32 38 20 63 6C 61 75 73 65 73 20 77 to 128 clauses w
02C940: 69 74 68 20 31 32 38 20 6C 61 62 65 6C 73 20 70 ith 128 labels p
02C950: 65 72 20 63 6C 61 75 73 65 2E 0D 0A 0D 0A 20 20 er clause.....
02C960: 20 20 20 20 39 2E 20 49 6E 74 65 67 65 72 73 20 9. Integers
02C970: 6D 75 73 74 20 62 65 20 62 65 74 77 65 65 6E 20 must be between
02C980: 2B 33 32 37 36 37 20 61 6E 64 20 2D 33 32 37 36 +32767 and -3276
02C990: 38 2C 20 73 69 6E 63 65 20 74 68 65 79 20 61 72 8, since they ar
02C9A0: 65 20 20 73 74 6F 72 65 64 0D 0A 20 20 20 20 20 e stored..
02C9B0: 20 69 6E 20 20 31 36 2D 62 69 74 20 20 74 77 6F in 16-bit two
02C9C0: 73 2D 63 6F 6D 70 6C 65 6D 65 6E 74 20 66 6F 72 s-complement for
02C9D0: 6D 61 74 2E 20 20 49 6E 20 61 20 66 65 77 20 63 mat. In a few c
02C9E0: 61 73 65 73 2C 20 69 6E 74 65 67 65 72 73 20 77 ases, integers w
02C9F0: 69 6C 6C 20 62 65 0D 0A 20 20 20 20 20 20 74 72 ill be.. tr
02CA00: 65 61 74 65 64 20 61 73 20 75 6E 73 69 67 6E 65 eated as unsigne
02CA10: 64 20 31 36 2D 62 69 74 20 76 61 6C 75 65 73 20 d 16-bit values
02CA20: 77 69 74 68 20 61 20 72 61 6E 67 65 20 6F 66 20 with a range of
02CA30: 30 20 74 6F 20 20 2B 36 35 35 33 35 2E 20 20 20 0 to +65535.
02CA40: 54 68 65 0D 0A 20 20 20 20 20 20 4D 41 50 20 20 The.. MAP
02CA50: 61 6E 64 20 43 41 4C 4C 20 62 75 69 6C 74 69 6E and CALL builtin
02CA60: 20 70 72 6F 63 65 64 75 72 65 73 20 72 65 71 75 procedures requ
02CA70: 69 72 65 20 61 64 64 72 65 73 73 65 73 20 77 68 ire addresses wh
02CA80: 69 63 68 20 6D 61 79 20 72 61 6E 67 65 20 75 70 ich may range up
02CA90: 0D 0A 20 20 20 20 20 20 74 6F 20 36 35 35 33 35 .. to 65535
02CAA0: 2E 20 20 41 63 63 65 73 73 69 6E 67 20 20 72 61 . Accessing ra
02CAB0: 6E 64 6F 6D 20 20 66 69 6C 65 73 20 20 62 79 20 ndom files by
02CAC0: 20 72 65 6C 61 74 69 76 65 20 20 62 79 74 65 20 relative byte
02CAD0: 20 61 64 64 72 65 73 73 20 20 6D 61 79 0D 0A 20 address may..
02CAE0: 20 20 20 20 20 72 65 71 75 69 72 65 20 62 79 74 require byt
02CAF0: 65 20 61 64 64 72 65 73 73 65 73 20 75 70 20 74 e addresses up t
02CB00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CB90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CBA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CBB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CBC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CBD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CBE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CBF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CCA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CCB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CCC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CCD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CCE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CCF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CD00: 6F 20 36 35 35 33 35 2E 0D 0A 0D 0A 20 20 20 20 o 65535.....
02CD10: 20 20 31 30 2E 20 20 22 52 65 61 6C 22 20 20 6E 10. "Real" n
02CD20: 75 6D 62 65 72 73 20 61 72 65 20 72 65 70 72 65 umbers are repre
02CD30: 73 65 6E 74 65 64 20 69 6E 20 31 34 20 64 69 67 sented in 14 dig
02CD40: 69 74 20 62 69 6E 61 72 79 20 63 6F 64 65 64 20 it binary coded
02CD50: 64 65 63 69 6D 61 6C 0D 0A 20 20 20 20 20 20 28 decimal.. (
02CD60: 42 43 44 29 20 66 6F 72 6D 61 74 2E 20 20 54 68 BCD) format. Th
02CD70: 65 20 66 6C 6F 61 74 69 6E 67 20 70 6F 69 6E 74 e floating point
02CD80: 20 65 78 70 6F 6E 65 6E 74 20 72 61 6E 67 65 20 exponent range
02CD90: 69 73 20 66 72 6F 6D 20 2D 36 34 20 74 6F 20 2B is from -64 to +
02CDA0: 36 33 2E 0D 0A 0D 0A 20 20 20 20 20 20 31 31 2E 63..... 11.
02CDB0: 20 4E 61 6D 65 73 20 6F 66 20 70 72 6F 63 65 64 Names of proced
02CDC0: 75 72 65 73 20 61 6E 64 20 66 75 6E 63 74 69 6F ures and functio
02CDD0: 6E 73 20 6D 61 79 20 6E 6F 74 20 62 65 20 75 73 ns may not be us
02CDE0: 65 64 20 61 73 20 70 61 72 61 6D 65 74 65 72 73 ed as parameters
02CDF0: 2E 0D 0A 0D 0A 20 20 20 20 20 20 31 32 2E 20 4C ..... 12. L
02CE00: 69 74 65 72 61 6C 20 63 68 61 72 20 73 74 72 69 iteral char stri
02CE10: 6E 67 73 20 69 6E 20 74 68 65 20 73 6F 75 72 63 ngs in the sourc
02CE20: 65 20 70 72 6F 67 72 61 6D 20 6D 61 79 20 6E 6F e program may no
02CE30: 74 20 65 78 63 65 65 64 20 31 32 37 20 63 68 61 t exceed 127 cha
02CE40: 72 2E 0D 0A 1A 61 6E 64 20 66 75 6E 63 74 69 6F r....and functio
02CE50: 6E 73 20 6D 61 79 20 6E 6F 74 20 62 65 20 75 73 ns may not be us
02CE60: 65 64 20 61 73 20 70 61 72 61 6D 65 74 65 72 73 ed as parameters
02CE70: 2E 0D 0A 0D 0A 20 20 20 20 20 20 31 32 2E 20 4C ..... 12. L
02CE80: 92 52 41 F7 E0 8A 20 4D A3 74 A3 AC 30 A1 D1 D6 .RA... M£t£.0...
02CE90: 70 1C 80 C7 1A 5C D9 08 89 80 EE 99 8C 0F 70 13 p....\........p.
02CEA0: 89 80 21 CA 94 07 00 6B 8D 8E 18 BC D5 C8 36 B2 ..!....k......6.
02CEB0: 35 85 51 5A 75 46 71 83 B9 6E 51 74 9B 32 22 31 5.QZuFq..nQt.2"1
02CEC0: 4E 3B 3B 34 49 F3 75 A9 44 F9 00 37 61 8D FD D5 N;;4I.u.D..7a...
02CED0: 1E BD 56 D0 86 10 89 A1 7B 34 DA 1A 8E 1B 70 45 ..V.....{4....pE
02CEE0: 06 91 18 96 C1 1A FB 3F EF 31 A5 5E 2B 42 91 94 .......?.1.^+B..
02CEF0: AC E9 70 71 B9 58 DD F8 00 37 D9 5A AE 20 46 73 ..pq.X...7.Z. Fs
02CF00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CF90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CFA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CFB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CFC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CFD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CFE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02CFF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D0A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D0B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D0C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D0D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D0E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D0F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D1A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D1B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D1C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D1D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D1E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D1F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D300: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02D310: 26 00 00 00 02 09 2A E5 26 00 C1 02 00 00 00 02 &.....*.&.......
02D320: 26 00 C6 02 00 00 00 02 26 00 C2 02 00 00 00 02 &.......&.......
02D330: 26 00 C7 02 00 00 00 02 26 00 C3 02 00 00 00 02 &.......&.......
02D340: 26 00 C8 02 00 00 00 02 26 00 C4 02 00 00 00 02 &.......&.......
02D350: 26 00 C9 02 00 00 00 02 26 00 C5 02 00 00 00 02 &.......&.......
02D360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D3F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D6A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D6B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D6C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D6D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D6E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D6F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D9A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D9B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D9C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D9D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D9E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02D9F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DCA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DCB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DCC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DCD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DCE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DCF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DD90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DDA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DDB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DDC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DDD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DDE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DDF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DE90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DEA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DEB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DEC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DEE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DEF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DF90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DFA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DFB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DFC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DFD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DFE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DFF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E0A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E0B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E0C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E0D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E0E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E0F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E1A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E1B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E1C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E1D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E1E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E1F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E600: 54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00 Track-Info......
02E610: 27 00 00 00 02 09 2A E5 27 00 C1 02 00 00 00 02 '.....*.'.......
02E620: 27 00 C6 02 00 00 00 02 27 00 C2 02 00 00 00 02 '.......'.......
02E630: 27 00 C7 02 00 00 00 02 27 00 C3 02 00 00 00 02 '.......'.......
02E640: 27 00 C8 02 00 00 00 02 27 00 C4 02 00 00 00 02 '.......'.......
02E650: 27 00 C9 02 00 00 00 02 27 00 C5 02 00 00 00 02 '.......'.......
02E660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
RESULT OF SEARCH :
PRO=591 CHEA=0 COD=50 MUSI=0 COP=11 GRA=234 WRIT=190 198=1 199=1 STARTER=0 KBI=0 CAAV=0 L.TOURNIER=0
EXTENDED CPC DSK File CPCDiskXP v2.0( *D COMJRTMAN 500 JRTMAN 500 !
"JRTMAN 500#$JRTMAN 600%&'()*+,-./01234JRTMAN 60056789ABCDJRTMAN 600EFGHIJKL
MNOPQRSTJRTMAN 600UVWXJRTMAN 700YZabcdefghJRTMAN 700ijklmnopqrstuvwxJRTMAN 7
00yzJRTMAN 800JRTMAN 8004JRTMAN APP£JRTMAN APP#-PASCAL 407/!g File Extent Sy
stem fileK ListedK Used#V##oR K Free q)#0i))))*R/Ax/#!!#Ro$q#/ #V#'d 0RR#( /R0x0
ZE+BbFNIpOOWdqXx'Wqg6j1/'xpr.npm 7. Input/output JRT
Pascal includes a powerful input/output subsystem which can be used to me
et virtually any processing requirement. Three modes of input/output - c
onsole, sequential disk, random disk - are provided. Disk files ca
n be processed in either TEXT mode or in BINARY mode. TEXT mode is
most commonly used by BASIC languages. Data is stored in ASCII text rea
dable format. BINARY mode is found on larger mini and mainframe computer
s. The data is input/output in the binary format used internally by the
language. Not only is the data more compact in some cases but it is
also of fixed length. For example, an integer in text format could occu
py from two bytes to six bytes, depending on its value. But in bina
ry format an integer is always exactly two bytes. TEXT mode
is sometimes called "stream I/O". BINARY mode is sometimes called
"record I/O". Another advantage of binary format is that the user
can process data files or COM files containing special control character
s. All files in JRT Pascal are "untyped". That is, the user ca
n read and write data of any format to any file. The user can write
records of entirely different formats and sizes on the same file.
JRT Pascal also supports direct access to the hardware in
put/output ports without having to write an ass1# Disk V2.5 (c) Phil Whee
ler 1982 *.R" 2! !t!l!26##2q##/2r##2s!c!#sO (#(#"eo"o*i#"i++Nr£ *g#"gy(*k#"ky(
+#u*em"m*cB(9(!0KcRDM!+V+Kes#rKce+r+s*c#"c(N #*cB(8 (*R+++( *sembly language
subroutine. The builtin function PORTIN and builtin procedure
PORTOUT are described in the sections on builtin functions and b
uiltin procedures. JRT Pascal version 3 now supports Pascal file
variables. Files may now be passed as parameters to procedures, alloca
ted locally in procedures, be used in records or arrays, be used in
assignment statements. The Pascal builtin procedures GET and PUT
are now racters and single quotes are ignored. The system will not allow
more characters to be keyed in than can fit into the variable in the
READ's parameter list. Console output can also be routed to t
he printer or list device. The SYSTEM procedure is fully described in th
e section on builtin procedures. Some of its options are
SYSTEM( LIST ) route output to printer SYSTEM
( NOLIST ) do not route to printer supported. 7.1 Console i
nput/output Console input/output is the usual means for a p
rogram to interact with the user. Data values can be displayed at
a video terminal or teletype and data can be keyed in. Cons
ole input/output always occurs in text rather than binary format. Inte
gers, real numbers, strings, characters and Booleans will be displayed
in text format. Set variables have no meaningful text format and ca
SYSTEM( CONS ) route to console device SY
STEM( NOCONS ) do not route to console The builtin procedu
res/functions used in console input/output are READ
, READLN read data into storage WRITE, WRITELN
write data to console/printer EOLN e
nd of line function 7.2 Sequential file processing Di
sk files are not inherennnot be written to the console. IMPORTANT
- Since the console is regarded as a text device, data items are delimite
d by commas, spaces, tabs and semicolons. To read one character at a ti
me, use this function FUNCTION GETCHAR CHAR VAR R
RECORD FLAG,A,C,D,E,D,L,H CHAR
END BEGIN R.C CHR(1) CALL( 5,R,R )
GETCHAR R.A tly sequential or random. Those terms
apply to the means of access which may be applied to any disk file.
Sequential file processing is generally faster than random
access because input/output can be buffered and because the disk po
sitioning mechanism only needs to move short distances. JRT Pascal
lets the user obtain maximum processing speed by defining the buf
fer size for sequential files. The buffer is the holding area w END
Using the HEX$ builtin function, any variable can be converted
to hex format for direct display. On console input for integers,
data may be keyed in using standard decimal format or in hex format.
An 'H' character suffix indicates hex format. On input to the cons
ole, data items may be separated by spaces, tabs, commas or semicolons.
Character or structured variable inputs which contain special character
s may be entered in shere disk data is loaded and written. This area is
filled or emptied in one burst - one disk access with one head load
operation. A very small buffer may cause disk "chattering" during
processing because of frequent accesses. A large buffer will result in
less frequent but longer disk accesses. The buffer size is specif
ied as an integer expression in the RESET or REWRITE procedure. It
will be rounded up to a multiple of 128. If stoingle quotes. Th
e quote character itself may be entered by doubling it. Sample in
put lines 3.14159,77 03ch,'JRT Systems'
'don''t say you can''t' 6.70234e-25,0.0000
003 Reading from the console into a dynamic string variable
is treated differently. An entire line of text is obtained from the
console and moved directly into the string variable. Separator
cha *rage is plentiful, buffers of 4096 or 8192 bytes will impro
ve processing. The builtin procedures/functions used in sequent
ial disk file processing are RESET open
file for input REWRITE open file for output
CLOSE terminate file processing READ,
READLN read data into storage WRITE, WRITELN write d
ata to disk EOF the location of the data ite
m within the file. The first byte is at RBA0. The RBA mode of p
rocessing gives much greater flexibility than RRN. If all records had to
be the same size, then all would have to be the size of the largest, re
sulting in much wasted space and slower access. Beginning
with JRT Pascal version 2.1, random files up to the CP/M maximum of 8 m
egabytes are supported. The RBA or RRN value may be an integer
end of file function EOLN end of line function
ERASE delete a file RENAME
rename a file This samp
le program reads in a file and dumps it in hex format to the console
PROGRAM DUMP TYPE BLOCK ARRAY 1..16 OF
CHAR NAME ARRAY 1..14 OF CHAR VAR
or a real expression. Programs written under earlier ver
sions are source code compatible but must be recompiled using the versio
n 2.1 or later compiler. The procedures used in random file proces
sing are OPEN open or create random file
CLOSE terminate file processing
READ read data into storage WRITE
transfer data to disk B BLOCK D
UMPFILE FILE OF BLOCK FILENAME NAME BE
GIN WHILE TRUE DO (* INFINITE LOOP *)
BEGIN WRITE('enter filename ')
READLN( FILENAME ) RESET( DUMPFILE, FILENAME,
BINARY, 4096) WHILE NOT E
OF( DUMPFILE ) DO BEGIN ERASE
delete a file RENAME rename a file
A sample program shows random access to a file containing sales info
rmation for the various departments of a retail store. The records
are located by department number. Sample program
PROGRAM INQUIRY LABEL 10 TYPE
DEPTRECORD RECORD INVENTORY REAL
READ( DUMPFILE B)
WRITELN( HEX$(B) ) END
CLOSE( DUMPFILE ) WRITELN END
END. 7.3 Random file processing CP
/M version 2.2 or higher is required to use JRT Pascal random file proce
ssing. For many types of processing it is not known in advance in
which sequence the records MTDSALES REAL
YTDSALES REAL DISCOUNT REAL
END VAR INPUTAREA DEPTRECORD
DEPTFILE FILE OF DEPTRECORD DEPT I
NTEGER BEGIN (* INQUIRY *) OPEN( DEPTFILE, 'CD
EPTDATA.RND', BINARY ) REPEAT WRITE('Enter dep
t number ') READLN( DEP of a file will be needed. A spelling
dictionary or online inquiry customer database obviously must use random
access files. In JRT Pascal, random access is fully sup
ported. Data can be read and updated by providing the relative record nu
mber (RRN) within the file for fixed length records. The first record
is at RRN0. For variable length records, the data can be read or
updated by providing the relative byte address (RBA). The RBA is *T )
IF DEPT 999 THEN GOTO 10 (* EXIT *) READ( DE
PTFILE, RRN, DEPT INPUTAREA ) WRITELN
WRITELN('dept ',DEPT, ' inv ',INPUTAREA.
INVENTORY92, ' disc ',INPUTAREA.DISCOUNT92)
WRITELN(' MTD sales',MTDSALES92, ' YTD sales',Y
TDSALES92) WRITELN 10 (* EXIT LABEL *)
key size max records
4 32767 --- Not more than 32767 6
28928 records ever allowed 8 23808
15 14336 The maximum number of records
should be set to somewhat less than the maximum theoretical number
of records, to prevent the loss of a record when adding to an unbalanced
file. Note al UNTIL DEPT 999 CLOSE( DEPTFILE )
END (* INQUIRY *). 7.4 Indexed file processing
CP/M version 2.2 or higher is required to use JRT Pascal indexed fi
le processing. Beginning with version 3.0, JRT Pascal provides ful
l support for indexed files. The index file system is implemented as
2 external procedures so that it occupies no main storage when it is not
being used. Indexed so that the file of indexe
s will be 257k when the maximum number of records are entered, so a reaso
nable (high) estimate should be used for the maximum number of reco
rds. IMPORTANT - No key should contain all zeroes, since a zero
key is used to indicate deleted keys and records. The key m
ust be the first field in each record. The key size may be from 2 to
32 bytes. A utility program INDEX2 is provided to reorganize file
s consist of two separate disk files the main data file with a filetype o
f DAT and an index file with the filetype of IX0. The i
ndexed file system has 3 components. INDEX0 external procedure perf
orms most of the functions. INDEX1 external procedure compresses the
data files and rebalances the indexes. The INDEX2 program is executed
by itself and reorganizes the files for more efficient access.
The external procthe data file and generate new index files.
7.4.1 Index file format The index file is divided into
one primary index and up to 256 secondary indexes. Each index block is 1
024 bytes. The primary index contains 256 4-byte fields. Each of
these is the first 4 bytes of the lowest key in a secondary index.
The secondary indexes contain actual key values and 3-byte
record loacator fields. The number of keys per secondaryedure INDEX0 performs
these operations A add a new record B
read first record (beginning) C close file
D delete a record F flush buffers, close and reopen
files N new file allocation O open fil
e Q query whether indexes should be balanced
R read a record S read next record in sequence
index is 1024 DIV (KEYSIZE +3) 7.4.2 Data
file format The data file consists of a 1024 byte control record
followed by the data records. The control record contains t
he filename, maximum record count, current record count, key size,
record size, delete count, and deleted record list.
Index file format !----------
---------------------! U update a record W
issue a warning Z turn off warning message
INDEX1 performs these operations J rebalance the inde
xes K compress data file and balance indexes
Records must all be the same size - from 16 to 2048 bytes. They need no
t be a multiple of 128 bytes. The maximum number of records depends on
the key size (1024 DIV (KEYSIZE +3)) * 256 *
! ! 1 K blocks ! prim
ary index ! !-----------------------
--------! ! !
! !
!----- up to 256 --------! !
! ! secondary in
dexes ! be issued, see command 'W'. An index
ed file must be allocated before it can be opened or used in any way.
Each time INDEX0 is called, a valid command code must be passed.
The key, data, and ir parameters are also required, although key and
data will not be used by every command. It is allowed to have
multiple indexed files open at the same time. Each one is indentified
by a different indexrecord. The index !--
--- --------! !
! ! !
!-------------------------------!
Data file format !------
-------------------------! ! control record 1
K ! !-------------------------------!
record (IR) should be set to blanks before individual fields are in
itialized. For a given index file, the first call to INDEX0 in a prog
ram should be to open ('O') or create ('N') the index and data files.
(INDEX0 can be called with the 'W' first, so that error messages will be
printed.) 7.4.4 INDEX commands Commands J and K are
processed by INDEX1. All others are processed by INDEX0.
A add a new record !
! ! data records !
! !
! !
! ! !--------------
-----------------! 7.4.3 Using INDEX0 The indexed file
system is implemented in an external procedure named INDEX0.
- insert a new key into index, if duplicate key exists,
abort operation - write new data record to data file
B read first record (begin) - read the first
record (in sorted order) - returns key and record
C close indexed files - this MUST be done on comp
letion of processing or newly written data may be lost
D delet To access it, these declarations are required in your
main program TYPE KEYTYPE --------------
your key type declarations RECORDTYPE ----------- your recor
d type declarations INDEXRECORD RECORD D
ISK CHAR FILENAME ARRAY 1..8 OF CHAR
RETURNCODE INTEGER RESERVED ARRAY 1..200 OF CHAR
END e a record - nullify key ent
ry for record - add record locator to delete list
F flush buffers, close and reopen files - flush b
uffers that have changed - close files to preserve change
s J rebalance indexes (INDEX1) - uses temp
orary file - deletes old index file
- renames new index file K rebalance indexes PROCE
DURE INDEX0 ( COMMAND CHAR VAR KEY KEYTYPE
VAR DATA RECORDTYPE
VAR IR INDEXRECORD ) EXTERN To use INDEX0 the indexrecord m
ust be initialized with the filename and disk on which the file is
located. The return code is set by INDEX0 and indicates if each ope
ration was successfully completed. Warning messages may optionally
* and compact data file (INDEX1) - uses temporary files
- deletes old index and data files
- renames new index and data files - reopen files for f
urther processing N new file allocation -
program will inquire at the console the parameters of t
he new indexed file 1. record size in bytes
2. key siithout closing previous file
7 invalid command (eg. 'M' or an 'S' without a prec
eeding 'B', 'R', 'S', or 'U') 8 file not open 9 se
rious error ( no specific message ) 7.4.6 Balanced indexes
Searching for records is usually very efficient, both in random and
sequential modes. Adding to a data base is usually efficient until
one or more of the secondary indexes gets full. (If records are ze in bytes
3. maximum number of records to be
allowed the index file will be
allocated based on this number - index files are left
open for further processing - f
iles must be closed (or flushed) to preserve the new co
ntents O open indexed files - open the ind
ex and data files added in sorted order, then the addition process w
ill be very efficient.) INDEX0 will not automatically "balance" keys in t
he index files, so that additions fill up the secondary indexes.
Your program can "Query" the status of an indexed file by using 'Q
' in a call to the index. The first letter of the key will be set to 'Y
' if the indexes should be balanced, and 'N' if that is not necessar
y yet. (INDEX0 decides that the indexes should - load
the primary index into dynamic storage Q
query data base status - return 'Y' in key1 if the data
base should be reorganized ('J')
- else return 'N' in key1 R read a record
- search the indexes for the key - read the data record
into the user's record variable S reabe
balanced when an add ('A') must move a secondary index from one blo
ck to another). Reorganizing indexes To reorganize
an indexed file so that adding new records will be efficient, set the rec
ord argument to all blanks and call INDEX1 with command 'J' (for adJus
t or Justify). INDEX1 will create a new balanced index file on the s
ame disk as the current index file. There must be space for th
e new index file, which will bd next record in sequence -
will read next record after a previous 'B', 'R', 'S',
or 'U' U update a record - the update oper
ation MUST ALWAYS be preceded by a read operation with
the same key - write modified re
cord to data file W warning messages - tur
n on the warning message feature - cause called na
me.$$I. INDEX1 will then delete the old .IX0 file and rename the new
file to name.IX0. Reorganization takes 2500 to 3200 bytes of space in
main memory as well as space on the disk, so it is never done automa
tically. INDEX1 must be declared as an external procedure (just as IND
EX0 was declared) if your program is going to balance indexes "on the f
ly". PROCEDURE INDEX1 ( COMMAND CHAR
VAR ed non-zero return codes to print verbal er
ror messages Z turn off warning messages 7.4.5 INDEX
return codes 0 successful completion 1 duplicate
key 2 maximum number of records exceeded 3 key no
t found 4 update key does not match read key or pr
evious read was not successful 5 key value does not match key in
record 6 second open or new w *KEY KEYTYPE
VAR DATA RECORDTYPE VAR IR INDEX
RECORD ) EXTERN INDEX1 supports the J and K operations which are
described in section 7.4.4. In general, the record va
riable should be set to all blanks before INDEX1 is called. 7
.4.7 INDEX2 utility Type EXEC INDEX2 to rebalance the indexes in
the file and to compact the data after many deletions. Iwant to ass
ign rec to contain newparam, and then call INDEX1, for example
rec newparam INDEX1 ('K',key, rec, ir) Most pro
grams will not need to use the 'K' option, since the equivalent can
be done as needed by having the user issue the CP/M command EXEC INDEX2
, preferably after the data bases have been copied to backup disks.
7.4.8 Efficiency notes Reading records from the data base i
s only slow wheNDEX2 will ask for the name of the disk drive containing t
he indexed files (A to P), the name of index files (which you would
enter without any '.' or '.DAT' or '.IX0'), and the name of the compact
ed files. You can have the new files put on the same or another disk d
rive as the original files. INDEX2 will also ask for a new numb
er of maximum records. If you enter 0, the previous maximum will be used
. Compressing data from within a programn very many keys have
the same first four characters. If the indexes in more than one second
ary index block have the same first four characters, INDEX0 may have to
search more than one secondary index block to find a given record. Gener
ally, this will not occur. Random output in general under CP/
M is inefficient due to buffering requirements. Random output will be
most efficient with double density disks with 1K blocks or with singl
INDEX2 uses INDEX0 and INDEX1 to perform the actual indexed file
accesses. Highly sophisticated programs can also use INDEX1 to
compact the data file as well as balance the indexes. Call INDEX1
with the command 'K' (kompress) to do a complete reorganization. If the
record argument is set to all blanks, then the same disk drive and sa
me maximum record count will be used in creating the new data base co
pies. If the record argumee density disks with 128 blocks. Ma
ximum number of records The maximum number of records should be
set to somewhat (50 to 200) less than the theoretical maximum. If, for e
xample, 8-byte keys are declared with up to 23808 records, 256 records ar
e entered, the indexes are balanced (with 'J'). There will now be
256 secondary indexes blocks with one key each. Then, if 92 records are
added with key greater than the 256th record, the last snt is given th
e following structure, then alternate disk drives or a different maximu
m number of records can be set. VAR
newparam RECORD newdiskflag CHAR
newdisk CHAR maxnrflag CHAR
maxnrrec INTEGER oldleave CHAR
END Set newparam.newdiskflag to 'Y' if neecondary
index will be full. Since one secondary index block can hold 93
8-byte keys, adding a 93rd key larger than the 256th will "overflow"
the top secondary index block. A serious error. Currently
, the maximum number of records is 32767 for index files with 2-, 3-
, and 4-byte keys. 7.4.9 Sample indexed file program T
he following simple program will let you create, add to, query, close, an
d search any data base.wparam.newdisk contains another disk drive
letter (such as 'C'). Set newparam.maxnrflag to 'Y' if newpara
m.maxnrrec contains a new maximum number of records, such as 2000.
The newdiskflag only works with the 'K' option. The oldleave fla
g only works with the 'K' option when a newdisk is specified. When
the 'K' option is used, the record passed must be big enough to h
old records read from the disk. You might * It assumes that the record and
the key are alphanumeric (printable) information. You can enter
individual commands to the program, which will call INDEX0 (or
INDEX1) to perform the equivalent command. The runtime example that
follows the listing of TSTINDEX shows the creation of a simple a
ddress file, with 16 character search keys and (one line) addresses up t
o 80 characters long. The resulting records are then 96 bytes long.or
kompress must call INDEX1 *) IF (cmd in 'J', 'K' THEN
BEGIN rec ' ' INDEX1(cmd, key, rec
, ir) END ELSE INDEX0(cmd, ke
y, rec, ir) IF (ir.returncode 0) THEN BEGIN
writeln('Error', ir.returncode) END
IF (cmd 'Q') THEN writeln('query result ',key1)
IF PROGRAM tstindex TYPE k
eyt ARRAY1..256 of CHAR rect ARRAY1..2048 of CHAR ct
rlrec RECORD c1 ARRAY1..4 of INTEGER rec
size INTEGER c2 INTEGER keysize INTEGER
end indexrecord RECORD disk
CHAR filename ARRAY1..8 of CHAR returnc
ode (cmd in 'B', 'R', 'S') THEN BEGIN wr
iteln('key ', copy(rec, 1, ir.ctl.keysize)) writeln('data ',
copy(rec, ir.ctl.keysize + 1, ir.ctl.recsize - ir.ctl
.keysize)) END UNTIL (cmd '') END.
(* tstindex *) Execution of TSTINDEX is shown for a simple
data base with 16 character names and up to 96 characters of information
(which happens INTEGER res1 INTEGER c
trl ctrlrec reserved ARRAY1..196 of CHAR
END VAR key keyt rec rect cmd
CHAR ir indexrecord temd ARRAY1..2048 of CHAR
PROCEDURE INDEX0 ( command CHAR var key keyt
var rec rect var ir indexrecord ) extern
PROCEDURE to be addresses). Note that the key length and record length a
re entered from the terminal in the N command. AEXEC BTSTINDEX
Exec ver 3.0 Disk B File ADDRESS cmd W cmd
N Record size in bytes 96 Key size in bytes 16 Maximum numb
er of records 500 cmd A key JRT data 'JRT Systems/45 Camino
Alto/Mill Valley, CA 94941' cmd A key OLD data 'Old JRT Of
fice/550 Irving St/SF, CA 9 INDEX1 ( command CHAR var key k
eyt var rec rect var ir indexrecord ) ex
tern BEGIN (* tstindex *) ir ' ' write('Disk ')
readln(ir.disk) write('File ') readln(ir.filename) REP
EAT write('cmd ') readln(cmd) cmd upcase
(cmd) key ' ' rec ' ' IF (cmd in 'A', '
D', 'R', 'U') THEN 4122' cmd B key JRT data JRT System
s/45 camino Alto/Mill Valley, CA 94941 cmd S key OLD data O
ld JRT Office/550 Irving St/SF, CA 94122 cmd S %INDEX error Key no
t found Error 3 cmd a key LITTLE data 'Little Italy/
4109 24th St/SF, CA 94114' cmd a key SZECHWAN data 'Szechwa
n Court/1668 Haight St/SF, CA 94117' cmd f cmd r key JRT
key JRT data JRT Systems BEGIN writ
e('key ') readln(key) IF (cmd in 'A', 'U'
THEN BEGIN write('data ')
readln(temd) rec copy(key, 1, ir.
ctl.keysize) + copy(temd, 1, ir.ctl.recsize -
ir.ctl.keysize) END
END (* justify */45 Camino Alto/Mill Valley, C
A 94941 cmd r key OTHER %INDEX error Key not found r
eturn code 3 cmd z cmd Error 7 Program terminatio
n 7.5 CLOSE Format CLOSE ( filevariable )
The CLOSE builtin procedure terminates processing against a sequen
tial or random disk file. If a sequential output file is not properly
closed, the data written out will be lost because CLOSE updat *)
WHILE CH CHR(1AH) DO BEGIN
WRITE( CH ) READ(F1 CH) END
CLOSE( F1 ) 7.6 EOLN Format 1 EOLN (
filevariable ) Format 2 EOLN The end of line func
tion returns a Boolean value true if the end of line is reached, otherw
ise it returns false. This function applies only to console and tex
t files, not toes the disk directory. This procedure also releases storage
reserved for input/ourput buffers of sequential files. Examples
CLOSE ( F1 ) CLOSE ( DATAFILE ) C
LOSE ( MASTERCUSTOMERREPORT ) Examples CLOSE ( F1 )
CLOSE ( DATAFILE ) CLOSE ( MASTERCUSTOMERREPO#PS)Vft$R#J4IsP
SE(uX69pYTk5nlmYjn6 hV.EFRb&e$7i binary files. Format 1 is used t
o sense end of line while reading disk files. Format 2 is used to sense e
nd of line in console input. This function is used primarily to re
ad in an unknown number of data items from a line of text. Executing a
READLN, with or without any parameters, always resets EOLN to false and
positions the file at the start of the next line of text. Exampl
es 1. (* READ NUMBERS FROM CONSOLE, COMPUTE AVG * 7.5.1 EOF
Format EOF ( filevariable ) The end of file f
unction indicates when the end of a file is reached during input processi
ng. It returns a Boolean value of true immediately after end of file d
etection, otherwise it returns false. The EOF function has no meaning in
console or random disk processing. When processing a file in text
mode, end of file is detected when all data up to the first CTRL-Z
(1AH) has be) TOTAL 0 COUNT 0 WHILE NOT EOL
N DO BEGIN READ( NUMBER )
TOTAL TOTAL + NUMBER COUNT COUNT + 1
END READLN AVERAGE TOTAL DIV
COUNT 2. (* READ DATA FROM FILE, COUNT LINES OF TEXT *)
LINECOUNT 0 WHILE NOT EOF(F1) DO BEG
IN en read. This is the standard character to indica
te the end of data. When processing a file in binary mode, end of
file is detected when all the data in the last allocated sector of th
e file has been read. Examples 1. (* COMPUTE THE A
VERAGE OF A FILE OF NUMBERS *) RESET( F1, 'DAILY.SAL', TEXT, 4096
) TOTAL 0 COUNT 0 WHILE NOT EOF(F
1) DO BEGIN READ(F1 DATAITEM)
PROCESSDATA( DATAITEM ) IF EOLN(F1) THEN
BEGIN LINECOUNT LINECO
UNT + 1 READLN(F1)
END END 7.7 ERASE Format
ERASE ( filename ) The ERASE procedure deletes files from the disk
. It can be used to delete files from any available d READ
(F1 DAILYSALES) TOTAL TOTAL + DAILYSALES
COUNT COUNT + 1 END AVERAGE TOTA
L / COUNT CLOSE( F1 ) 2. (* WRITE A FILE TO THE PRI
NTER *) SYSTEM( LIST ) RESET( F1, 'TEST.PAS', BINA
RY, 2048 ) READ(F1 CH) (* INSTEAD OF USING EOF, WE
DIRECTLY TEST FOR A CHARACTER 1AH, SINCE THIS IS BINARY FILE
*isk by including the disk identifier in the filename.
ERASE is implemented as an external procedure. Any program referenc
ing it must include it declaration PROCEDURE ERASE ( NA
ME STRING20 ) EXTERN Examples ERASE( 'TESTPGM
.PAS' ) ERASE( CONCAT( 'B', FILENAME, FILETYPE ) )
ERASE( 'A' + NAME + '.HEX' ) ERASE
( BACKUPFILE ) amiliar features such as with trailing signs. P
ICTURE takes a format string and a real number as arguments. It return
s a formated string, which can be printed on the console, the line pri
nter, written to a file, concatenated with other strings, or saved for fu
rther processing. For example, RES$ PICTURE("*$##,###.##", 14
56.20) WRITELN ("Sum ", PICTURE("###,###.### ###",
6583.1234567)) will set RE 7.8 GET Format
GET ( filevariable ) This standard Pascal procedure moves the
next data item from the sequential file into the file's buffer variable.
If there is not another data item in the file then the EOF function
becomes true. The READ procedure allows reading directly from a
file into any variable. READ ( F X ) is eq
uivalent to X F GET ( F ) S$ (which
should be declared as a string or array of characters) to the eleven ch
aracters **$1,456.20 and next write a line consisting of the twenty c
haracters Sum 6,583.123 456. PICTURE is supplied as a
compiled function (the file PICTURE.INT). PICTURE must be declared in
any program that uses it as FUNCTION PICTURE (FMT STRI
NG R REAL) STRING EXTERN The for
mat string is 7.9 OPEN Format 1 OPEN ( filevariable, filename
, BINARY ) Format 2 OPEN ( filevariable, filename, TEXT )
The OPEN builtin procedure is used to open files for random
access. Format 1 is used to open files in binary mode. Format 2 is use
d to open files in text mode. The filevariable refers to a file va
riable declared in the VAR declaration section. The filename is a
string or structured expressi not hard to create. PICTURE generally
puts one character in the result string for every character in the forma
t string, the exceptions marked with a *. The format characters are
summarized below. Note that you will usually need only po
und signs, commas, and periods in your formats. Format
Replaced with 0 Literal zero (used only with exponential
notation 9 A decimal digit (always) on which
may include disk identifier letter. The file specified by the fil
ename is opened for use if present. If not present, a new file is created
. Both formats may be used with both RRN and RBA accessing.
Examples OPEN ( INVENTORY, 'INVENTRY.DAT', BINARY )
OPEN ( F1, RANGE + '.DAT', TEXT )
OPEN ( CASEHISTORY, 'DTORTS.LIB', BINARY ) OPEN ( DICTI
ONARY, 'BSPELLINGB Space (or fill character) CR CR if
the number is positive, else spaces DB DB if the number is n
egative, else spaces E Exponent (consisting of E, sign, and
two digits) (*) E+## Exponent (sign and digit indications are
ignored) (*) L Literal L (as a currency sign)
S Minus or plus sign V Implied decimal point (*)
Z Digit or fill character .LIB', BINARY ) 7.10
PICTURE The external function PICTURE allows you to format
(real) numbers in powerful ways. Check printing is easy, as are com
mas within a number and exponential notation. Floating (or fixed) dollar
signa are easy to specify. Credit and debit indications can be
included. Literal characters such as currency signs can also be put
in the formatted string. COBOL and PL/I programmers will find f
* - Minus sign if negative, else space
+ Plus sign if positive, else minus sign # Digit
or fill character % Digit or fill character
* Asterisk fill ** Asterisk fill and one digit
*$ Asterisk fill and floating dollar sign **$ As
terisk fill, floating dollar sign, and one digit , Comma if
digit has already been formated, else space
-17.98 -17 5
###.## 29.
95 29.95 6
-10.756 -10.75 6 Punctuati
on Commas can be inserted in the formated number. A comma in th
e format will cause a comma AT THE CORRESPONDING POSITION if a d
/ Literal / (or fill character) Literal (o
r fill character) space Literal space (or fill character)
Exponent (E, sign, and two digits) (*) Expo
nent (*) Next character is included literally (*)
* or * A single asterisk (*) $ or $ A single dollar sign
(*) Examples (our favorite formats) -#.### ###
Large and igit has already been put into the result in a position t
o the comma position. If no significant digit has been seen, then
a space or asterisk is substituted. Note that PICTURE DOES NOT automa
tically put commas every third position. You can place commas in
any meaningful (or meaningless) position in your number.
Format Number Result Length
###,##small numbers $##.##
Price of JRT Pascal ###,### Numbe
r of happy customers *$###,###.## Checks (especially p
ay checks) -##,###,###,###,###.## Change in the national debt
In general, PICTURE can use any format with legal characters.
It is possible to create ridiculous formats, such as "-+". An
appropriate matching string will be returned (either space, plus, or #
2470 2,470 7
#,### -999 -999 5
#,###### 2743562
2,743562 8 COUNT YOUR COMMAS AND DIGITS. Commas can be u
sed after the decimal point if desired. A space (or B) wo
rks exactly the same as commas for those of you who want to punctuate
numbers with spaces inste minus in this case). If the format contains a
nd invalid format character, PICTURE will complain and will return a
two character string Upper case and lower case letters a
re equivalent in the format, so E or e can be used for the exponent.
Simple number formating Pound signs (#) are usually used to ind
icate where digits should be placed. A decimal point indicates where the
decimal point should go. PICTURE does NO ad of commas. Note
that this is different from the PRINT USING statement in Basics, w
hich treat blanks as delimiters. Exponential Notation Expon
ential notation is indicated either with an uparrow () or the letter E.
Following uparrows, signs, and digit indicators are ignored, so you
can use or E+##. The formated exponent ALWAYS takes four characters t
he letter E, the sign of the exponent, and two digits. If
rounding, but just truncates insignificant digits. (The vertical bar
just indicates the start of the result in the following examples, and
will not be included in the actual result). Format
Number Result Length
##### 15000 15000 5
-2.
6 -2 5 * you want PICTURE to create numbers in expon
ential notation with a leading 0 before the decimal point, you can use th
e digit 0 in a format before the decimal. Format
Number Result Length
#.### 15000 1.500E+04 9
-2.5
-.250E+01 9
-15000 -0.150 000E+05
14 -#.###### 15
000 1.500000E+04 13
-.### 15001 .150E+04 9
+.### 15001
+.150E+04 9
###.#### 15000 150.0000E+01 12
-2.5
-25.0000E-01 12
###.####E+## -2.5 -25.0000E-01 12
0.### ### 15000 0.1
50 000E+05 13 Signs Normally, PICTURE will put a min
us sign before the firs -2.506 -.250E+01
9 .###-
15001 .150 E+04 9
-2.506 .250-E+01 9
Note that you can put the sign in a number of inappropriate
places and can even have the sign appear more that once. Dollar si
gns and check printing Floating dollar t significant di
git in a number if that number is negative. This is called a floating
sign, and will take up one digit position. You can have PICTURE handle t
he sign in many other ways. To put the minus sign (or blank) in a
fixed position, use a - in the format. The minus sign can be before th
e first significant digit or at the end of the number. To p
ut a negative or positive sign in a fixed position, use a plus sign (+
) or an signs and asterisks fill work in a straightforward man
ner, and will produce the sort of results you would want for printi
ng dollar sign amounts or checks. To enter a $ or * at a fixed position,
use one of the "literal next" characters, the underline () or backslas
h () before the $ or *. Format Number Result
Length $##
,###.## 2745.23 $ 2,745.S instead of the minus sign.
Format Number Result Length
-#### -12 - 12
5
134 134 5
####+ -12 12- 5
23 10
$##,###.## 2645.2
3 $2,745.23 10 Note that the **, $$, and **$
formats are optional in JRT Pascal's PICTURE function. They are equivale
nt to *#, $#, and *$#, respectively The only exceptions
to the "one format character, one result character" rule are
1) the two "literal next" characters ( and ) which do n
ot appear in th 134 134+ 5 With exp
onential notation, you will generally want to specify the location of t
he sign, since a floating sign will cause one less digit before the
decimal to be printed WITH NEGATIVE NUMBERS than with POSITIVE NUMBERS.
Format Number Result Length
-0.### ### 15000
0.150 000E+05 14 *e result 2) the V, w
hich is not printed 3) the two exponent characters ( and E) which
always take four characters (and which cause
following , +, -, #, and 9 specifications to be ignored in t
he format). Overflow Overflow occurs when the number to be fo
rmated cannot fit in the format provided, as when 1000 is to be formated
in a three digit field (###). When that happens, PICTURE p FOR
I 1 TO NRREALS DO BEGIN
WRITELN(I3, ' ',
REAL$(REALARRI,
' ', PICTURE(PIC, REALARRI),
' ') END UNTIL (
PIC '*') uts a % in place of ALL digits. In exponential notation, the
only cause of overflow is with negative numbers when no sign is indicat
ed and no digits are allowed before the decimal point. F
ormat Number Result Length
-## 200005 %%
3 ######
-40000102 -%%%%% 6 END. Note that c
urrently, JRT Pascal requires that real numbers entered in exponential f
orm must have a exponent sign and two exponent decimal digits. This res
triction will be relaxed in the future. Formats for ex-COBOL and PL/I pro
grammers The format character V can be used to set an implied decimal
point without printing one. (V. and .V can also be used. The .
will always be included in the result. Z can be used in place of
*$#,### 400102
*$%,%%% 7
.### -207 .%%%E+03 8 Testing formats fo
r PICTURE Here is a routine you can use to test your own
PICTURE specifications. (We use an extension of this program that a
llows file input and output to test ours.) The program reads the number
of real digits#, and 9 can be used to force printing of a digit.
The "literal" / and can be used. They will be replaced by the fill
character (space or *) if appropriate. Multiple + and - signs can be
used in place of # to cause floating signs. Subtle differences betwee
n JRT Pascal's PICTURE and other languages will be found. Use the TEST
PICT routine to experiment as needed. 7.11 PUT Format
PUT ( filevariable ) This standard to be formated and the numb
ers to be formated. It then reads one format specification at a time
an prints each of the numbers in that format. PROGRA
M TESTPICT CONST MAXREAL 100
VAR I INTEGER NRREALS INT
EGER PIC STRING REALARR ARRAY1..
MAXREAL OF REAL FUNCTION PICTURE ( FMT STRING R Pascal procedu
re appends the current value of the buffer variable to the sequential fil
e. The WRITE procedure allows writing directly to a file from an
y variable. WRITE ( F X ) is equivalent to
F X PUT ( F ) 7.12 READ, READLN
Format 1 (console) READ/LN (variable1, variable2,... )
Format 2 (sequential disk) READ/LN ( filevariable variable1, variable2
,... ) REAL) STRING EXTERN BEGIN REPEAT
WRITE('Number of real numbers to format ')
READLN(NRREALS) UNTIL (NRREALS MAXREAL)
FOR I 1 TO NRREALS DO READ(REALARRI) RE
ADLN REPEAT WRITE('Format ')
READLN(PIC) IF(PIC '*') THEN
* Format 3 (random disk) READ/LN ( fil
evariable, RRN, integerorrealexpr variable1, variable2,.
.. ) Format 4 (random disk) READ/LN ( filevariable, RBA, intege
rorrealexpr variable1, variable2,... ) The
READ standard procedure is used to bring data from console or disk int
o main storage. Format 1 is used for reading data from the cons
ole keyboard. When it is executed first record number is at
RRN0. The file must have been successfully opened with the OPEN proce
dure. Sequential and random file accesses cannot be mixed unless the fi
le is first closed and then re-opened in the other mode. The size of r
ecords on the file for RRN processing is determined when the file is decl
ared. For example, a FILE OF REAL has a record size of 8 bytes.
Format 4 is used to read data from a random file by giving the it
will obtain data from the console buffer, convert it to the proper forma
t, and store the data in the specified variables. If sufficient data is
not available, the system will wait for more data to be keyed in. If d
ata is keyed in with unacceptable format, a warning message is issued.
Dynamic string variables may only be used in READ format 1 - in
console input - and not in disk file input. To read character data
from disk files, arrays of relative byte address (RBA) of the data item r
equired. The first byte of the file is at RBA0. The file must have bee
n successfully opened with the OPEN procedure. Random processing can
not be mixed with sequential processing but RRN and RBA processing can
be mixed without re-opening the file. Examples
READLN( A, B ) READ( DATAFILE XDATA, YDATA )
READ( HISTORYFILE, RRN, YEAcharacters or records may be
used. Reading from the console into a dynamic string variable
is treated differently. An entire line of text is obtained from th
e console and moved directly into the string variable. Separator
characters and single quotes are ignored. The system will not allow
more characters to be keyed in than can fit into the variable. The
string variable must be the only variable in the READ's parameter lis
t. R MAJOREVENT ) READ( INQUIRYFILE, RBA, 0 INDEX )
READLN (* RESET EOLN *) 7.13 RENAME
Format RENAME ( oldname, newname ) The RENAME
procedure is used to rename disk files on any disk. The oldname and newna
me are string expressions. RENAME is implemented as an external
procedure. Any program referencing it must include it declarations
PROC When all data on a given input line has be
en read in, the EOLN function becomes true. The READLN procedure
has the additional purpose of resetting EOLN to false. READLN always
clears out the current input line. For example, if 5 numbers were ke
yed in on one line and a READLN were issued with 3 variables in its param
eter list, the last 2 numbers on that line would be lost. F
ormat 2 is used to read in data from a sequential diEDURE RENAME ( OLD, NEW1
STRING20 ) EXTERN Examples
RENAME( 'CTEST.PAS', 'TEST2.PAS' ) RENAME( OLDFILENA
ME, NEWFILENAME ) RENAME( DISK + OLDNAME, NEWNAME )
RENAME( 'SORT.BAK', 'SORT.PAS' ) 7.14 RESET
Format 1 RESET ( filevariable, filename, BINARY, bufrsize ) Form
at 2 RESET ( filevariable, filename, TEXT, bufrsize ) sk file.
Whether the file is processed as text or binary data is specified whe
n the file is opened (RESET). The filevariable must refer to a file w
hich has been successfully opened or a run-time error will occur.
Note that JRT Pascal uses a semicolon after the filevariable
rather than a comma. Format 3 is used to read in data from a
random file by giving the relative record number (RRN) of the record requ
ired. The * The RESET standard procedure is used to open alre
ady existing files for sequential input. IMPORTANT CHANGE f
rom version 2.2 to version 3.0 of JRT Pascal RESET now sets the EOF fun
ction to true and issues a warning message if the file does not exist on
disk. It used to cause the old program to terminate with an error. NOTE
All programs should now test EOF immediately after RESET.
Format 1 is used to open files in binary m. The buffer size is rou
nded up to a multiple of 128. Values like 1024, 2048 and 4096 are
recommended for bufrsize. Examples REWRITE( LOGFIL
E, 'FLOG.DAT', TEXT, 512 ) REWRITE( REPORT, MONTH + '.RPT',
TEXT, 1024 ) REWRITE( SYMBOL, PGM + '.SYM', BINARY, 256 )
REWRITE( STATISTICS, 'BSTATS.DAT', TEXT, 768 )
7.16 WRITE, WRITELN Format 1 (console) WRITE/Lode. Forma
t 2 opens files in text mode. The filevariable refers to a
file variable declared in the VAR declaration section. The filename
is a string or structured expression which may include disk identif
ier letter. The bufrsize is an integer expression which indicates
the size of the input buffer to be allocated in dynamic storage.
When storarage is available, larger buffers are preferred because t
hey result iN ( variable1, variable2,... ) Format 2 (sequential
disk) WRITE/LN ( filevariable variable1, variable2,... ) Forma
t 3 (random disk) WRITE/LN ( filevariable, RRN, integerorrealexpr
variable1, variable2,... ) Format 4 (random disk)
WRITE/LN ( filevariable, RBA, integerorrealexpr variable1,
variable2,... ) The WRITE standard procedure is used to transfer
data from main storage to thn fewer disk accesses and thus faster process
ing. The buffer size is rounded up to a multiple of 128. V
alues like 1024, 2048 and 4096 are recommended for bufrsize. Examples
RESET( INPUTFILE, 'SOURCE.PAS', BINARY, 1024 )
RESET( LOG, 'BLOG.DAT', TEXT, 2048 ) RESET( DAILYSA
LES, 'CDAILY.DAT', TEXT, 256 ) RESET( STATISTICS, 'STAT.DAT
', BINARY, 1024 ) 7.15 REWRITE Formae console for display o
r to disk for storage. Format 1 is used to write data to the conso
le or printer. The console is always considered to be a text dev
ice, i.e., data is always converted to readable text format before out
put. Standard ASCII control characters are supported
decimal hex purpose ------- --- --------
9 09h horizontal tab 10 0ah line feed
t 1 REWRITE( filevariable, filename, BINARY, bufrsize )
Format 2 REWRITE( filevariable, filename, TEXT, bufrsize )
The REWRITE standard procedure is used to open all files for sequenti
al disk output. A new file with the given filename is allocated.
If a file with that name already exists, it is deleted to free the space
allocated to it. Format 1 is used to open files in binary mode.
Format 2 opens files in t 12 0ch form feed, clear screen
13 0dh carriage return, end line For example, exe
cuting the Pascal statement WRITE( CHR(12) ) will clear the screen of mo
st types of CRT terminals. The WRITELN statement is identical to t
he WRITE except that it also writes a carriage return character after t
he data, i.e., it ends the current output line. A WRITELN may be used
by itself, without any variables, to write a blank line text mode.
The filevariable refers to a file variable declared in the VAR
declaration section. The filename is a string or structured exp
ression which may include disk identifier letter. The bufrsize is
an integer expression which indicates the size of the input buffer to be
allocated in dynamic storage. When storage is available, larger buff
ers are preferred because they result in fewer disk accesses and thus fa
ster processing *o the output device. Format 2 is used to write d
ata to squential disk files. The file must have been successfull
y opened with a REWRITE procedure. This format may be used in either bina
ry or text mode processing. Note that JRT Pascal uses a semicolon
after the filevariable rather than a comma. Format 3 i
s used to write data to a random file by giving the relative record numb
er (RRN) of the record being updated or created. WRITE( NEGATIVEDATA DATA )
ELSE WRITE( POSITIVEDATA DATA )
WRITELN( REPORT TOTALSALES122 ) WRITE( CUSTOM
ERFILE, RRN, CUSTNUM NEWCUSTOMERRECORD )
WRITE( INQUIRY, RBA, 0 INDEX ) WRITELN (* WRITE B
LANK LINE *) WRITE( CHR(0CH) ) (* CLEAR SCREEN *)
8. Linker The use of the linker is ent The first
record is at RRN0. The file must have been successfully opened with t
he OPEN procedure. Sequential and random file processing cannot
be mixed unless the file is first closed then re-opened in the othe
r mode. The size of records on the file for RRN processing is determined
when the file is declared. For example, a FILE OF REAL has a rec
ord size of 8 bytes, the size of real variables. Forma
t 4 is used irely optional. It is used to merge a Pascal program '.IN
T' file with some or all of its external procedure/function '.INT' f
iles. It can process procedures written in assembler as well as Pascal
. To run the linker, enter EXEC LINKER The
linker will issue a prompt to the console for the program name. After
the main program has been processed, the user will be prompted to se
lect which of the external procedures to mto write data to a random file by g
iving the relative byte address (RBA) at which the data is to be store
d. The first byte of the file is at RBA0. The data will be sto
red beginning at the specified RBA and continuing until it is all written
out. The file must have been successfully opened with the OPEN
procedure. Random processing cannot be mixed with sequential
processing but RRN and RBA processing can be mixed without re-opening erge.
The procedures referenced by this program will be listed with thei
r identification numbers (1 to 63). An asterisk indicates procedures
selected. Possible replies to the 'Procedure selection' message are
listed below. More than one number may be entered each time,
separated by spaces. Entering zero ends the interactive portion and cau
ses merge processing to begin. reply purpose
----- --- the file. When processing in text
mode, a convenient formatting option is available. Any of the variables
in the WRITE parameter list may be suffixed with a colon and an intege
r expression. This specifies the field width of the data value being wri
tten. IF the data item is shorter than this then spaces will be
inserted on the left of the item. This option is used when columns of fi
gures must be aligned. A second option is av-----
1 to 63 select this procedure -63 to -1 de-select th
is procedure 100 select all procedures
-100 reset, select none 0 end selection
, begin merge processing The output module file will have the sa
me filename as the main program and a filetype of '.INT'. The filetype o
f the main program will be renamed to '.IN2'. If any of the selecte
d input prailable for real numbers. After the field width integer exp
ression, a second colon and integer expression may be used to indicate th
e number of digits right of the decimal place to be displayed.
Examples WRITELN( 'THE TIME IS ',GETTIME )
WRITE( DATAFILE X1, X2, X3 ) FOR I1 TO 100 DO
WRITE( DATAFILE X1 ) IF DATA 0 THEN
*ocedure files are not present, a run-time error
will occur and the linker will terminate. All files must be present
on the A disk. 9. Customiz External procedures and fun
ctions are compiled separately from the main program. They can be linked
together with the main program using the Linker (section 8 of this m
anual). If this is not done, they will be automatically loaded from disk
into the computer's main storage when they a, such as RMAC or MAC
RO-80. The CONVERTM utility converts the '.REL' files produced by
these two assemblers into '.INT' format files which may be accessed as ex
ternal procedures (see section 10.7 of this manual). The JR
T assembler translates 8080 assembly language into JRT relocatable f
ormat modules. These modules can be called from a Pascal program
as if they were Pascal external procedures. Parameters may be
passed re first referenced. If a short-on-storage condition arises,
they may be purged from storage if they are not currently active.
Procedures which are rarely used, like initialization or error
handling, would not occupy main storage except when needed. Also,
very large programs might be divided into several phases, each co
rresponding to an external procedure. The EXEC loads the external
procedures from disk. There is no to them and function return values may b
e received. The JRT assembler is compatible with the
standard ASM.COM program distributed with CP/M. Input files must have
a file type of '.ASM'. The assembler output is a file of type '.INT', wh
ich may be linked with the main program or automatically loaded at run-t
ime. 10.1 Entry codes After an external procedure i
s loaded into main storage, EXEC transfers control to it. A five need
to inform EXEC on which disk each procedure resides - it will search
for them. This means that you do NOT have to put all the program se
ctions onto the A disk. EXEC and the compiler, JRTPAS3, conta
in 'disk search lists' which specify which disks are available on the sy
stem. The default lists are set to 'AB', i.e., drives A and B. T
he seach lists should be modified to reflect the hardware configura
tion. The Cu byte code (95,6,0,92,0) is placed at the start of t
he procedure to inform EXEC that this is an assembler procedure rather
than Pascal. The procedure must end with a return (RET) instruction.
Any registers EXCEPT the 8080 stack pointer may be modified. E
xample of entry codes procedure entry
db 95,6,0,92,0 required entry codes
send a message to console stomiz program is provided t
o modify the lists in both EXEC and JRTPAS2 simultaneously. Before runni
ng Customiz, be sure that both EXEC and JRTPAS3 are not write pro
tected files or on a write proctected disk or drive. To run Customiz,
enter EXEC CUSTOMIZ A new disk search list,
with up to four disk letters, may be specified. The letters must be
contiguous. NOTE that this list also determines the SEQUENCE in which
mvi c,9 print buffer code lxi d,msg
address of message call 5 bdos entry poin
t ret end of procedur
e msg db 'JRTASM sample procedure'
db 0dh,0ah,'$' carriage return/line feed
end If this procedure were named SAMPLE.ASM then the de
claration in thethe disks are searched for the external proce
dures and functions. ABC (note no spaces between
letters) 10. Assembler The JRT Pascal system provides
two methods of preparing external procedures and functions written i
n assembly language. A special purpose assembler is provided which gener
ates modules in the correct format. The second method may be used
if a Microsoft format assembler is available * Pascal program refere
ncing it would be PROCEDURE SAMPLE EXTERN
10.2 Operating JRTASM To assemble an external procedure, enter
EXEC JRTASM You will be prompted at the console
for the input filename and options. The options are 1
- produce a listing on the console during pass 1 of the assembly p
rocess, useful for debugging. C - produce an output file of type
'.Ctable if it refers to an address, otherwise it is fixed. If any sy
mbol in an expression is relocatable then the entire expression
is relocatable. Parenthesis may be nested to any level.
These operators are supported * / + -
NOT AND OR XOR MOD HIGH LOW EQ NE
LT LE GT GE 10.5 Parameters and function return values
Parameters of any data type may OM' rather than '.INT'. This
is not an external procedure but a directly executable command file
in standard CP/M format. An ORG 100H directive should be i
ncluded since the default origin is 0. 10.3 Directives
These assembler directives are supported dir
ective purpose --------- ---------
ORG set location counter, not used be passed to
assembler external procedures and functions. The EXEC maintains a dat
a stack which contains all static variables, parameters, function retur
n values and procedure linkage blocks. Three address pointe
rs are used to access the data stack. These are available to external
procedures in the 8080 register pairs on entry to the procedure.
BASE (HL) - address of the data stack CUR (DE)
- address of the l in external procedures
SET assign a value to a variable EQU
assign a value to a fixed symbol IF/ELSE/ENDIF
conditional assembly of code, may be n
ested to 16 levels DB define byte, multiple op
erands DW define word DS
define storage READinkage block for
currently active procedure TOS (BC) -
top of stack, points past last allocated byte
TOS--I I I---------
--------I I 6 bytes I linkage block for
I I current procedure
CUR--I I I-----------------I
used to assign a new value to a
variable, like SET except that value
is obtained from console WRITE display strings o
r expressions on console Example
s of directives 1. a set 9
if a 9 write 'a is equal to nine'
else I 2 bytes I paramet
er length fld I-----------------I
I x bytes I parameters of I
I current procedure I-----------------I
I I global variables
I I of main program I----
-------------I I 6 bytes I
write 'a is not equal to nine' endif
2. x read msg at console will ask for x
write 'x squared is ',(x * x) 3. a
set a + 1 increment a db 'string',a,255
10.4 Expressions Integer expressions can be used in ass
embler instructions. Expressions are either fixed or relocatable. A sym
bol is reloca * linkage block for I I
main program BASE--I-----------------I With
the three data stack pointers, the parameters passed to the procedure ca
n be accessed. If it is a function, the return value can be stored. Also
, the global variables of the main program can be accessed. For ex
ample, if the first global variable declared in the main Pascal program w
hich calls the external procedure is an integern value is of type ARRAY 1..4 OF
CHAR) return value rv len 'X' 1 length linkage block
rr rr rr rr 0400 58 0100 0300 xx xx xx xx xx xx yy
I I
CUR TOS
10.6 Debugging assembler procedures One effective way to
debug external procedures written in assembler uses the CP/M Dr
named INT1, then just add 6 to the BASE pointer to get the address of
INT1. The BASE pointer is in register pair HL on entry to the p
rocedure. Data stack after procedure call DEMO( 'A',7 )
'A' 7 length linkage block 41 0700 0300
xx xx xx xx xx xx yy I I
CUR TOS The two b
yte integer fields are in 8ynamic Debugging Tool (DDT). If a user is runn
ing a Pascal program under DDT, then a RST 7 instruction will be seen a
s a breakpoint and allow the user to access all the DDT facilities
. To run under DDT, enter DDT EXEC.COM
Iprogramname G100 When the RST 7 instruction
is encountered, DDT will gain control. The display, modify, di
sassemble facilities then can be used to examine t080 byte-reverse form
at. The parameter length field is equal to three. The linkage block
is six bytes of unspecified data Parameters are accessed by
decrementing the CUR pointer. Pascal value parameters are actually p
resent in the data stack. For reference parameters, the address o
f the variable is present in the data stack. If the procedure has no par
ameters, the parameter length field is zero. Function retur
n values he procedure data areas. To resume execution, use the XP comm
and to set the instruction address ahead by 1, to get past the RST 7 inst
ruction. 10.7 Convertm program The Convertm program
translates Microsoft format '.REL' files into JRT format '.INT' files.
Only '.REL' files may be input - '.HEX' files do not contain infor
mation about relocation addresses. To run the Convertm program, en
ter EXEC CONVERTM must be stored just before the function'
s first parameter in the data stack. Data stack after funct
ion call X TEST( 3,8 ) (The return value is of the type integer)
3 8 length linkage block rrrr 0300
0800 0400 xx xx xx xx xx xx yy I
I I return value CUR
TOS If the return value is of type CHAR, a string
The program will inquire at the console for the name of the module
to be translated. A file type of '.REL' is assumed. The output mo
dule '.INT' file is placed on the same disk. 10.8 Sample assembly p
rograms Three sample assembly programs are included here. Two ex
ternal procedures (setbit, resetbit) and one external function (testbit)
can be called from any Pascal program or external function. These small
modules prov, or a structured variable (entire array, entir
e record) then there is a two byte length field between the return val
ue and the first parameter. This field is set by EXEC and MUST NOT be
modified. If the return value is a dynamic string, the current length f
ield is a two byte field at the beginning of the string. This must be
set to the desired length of the field. Data stack after fu
nction call NAME LOOKUP( 'X',1) (The retu *ide fast and simple bit m
anipulation facilities. They also illustrate the passing and returning o
f parameters for assembly language external procedures. Listing
of setbit.asm setbit.asm external procedure which sets a bit on
in a byte procedure setbit ( var x char bit integer )
extern bit# in range 0..7 entry code
db 95,6,0 int vmcode db 92 l
db 95,6,0 int vmcode db 92 lpn vmcode
db 0 mode vmcode on entry bcwtos dewb hlwbase
get bit# into breg and x into areg testbit xchg hlwb
dcx h! dcx h! dcx h! dcx h point to bit lownib mov b
,m low byte of bit dcx h! mov a,m x inr b
shift loop loop rlc dcr b jnz lo
op pn vmcode db 0 mode vmcode on entry bcwtos
dewb hlwbase get bit# in breg, addr(x) in hl, x into creg
setbit xchg hlwb dcx h! dcx h! dcx h! dcx h
mov b,m bit# dcx h! mov d,m! dcx h! mov e,m ad
dr(x) xchg hladdr(x) mov c,m cx
create mask inr b incr loop count
mvi a,1 jc true bit is set false bit is z
ero dcx h! mvi m,0! dcx h! mvi m,0 ret true
bit is one true dcx h! mvi m,0! dcx h! mvi m,1 ret
end -l9YY-a#ra 29N%W*Qviha SGjy£F85LpJon 0ukCpH1IZwN&/nr&i
gqNIm nrxtEh#eLh8pucR20GD-D8(% £loop rrc dcr b
jnz loop amask cbyte ora c mov m,a
store byte ret end Listing of re
setbit.asm resetbit.asm external procedure which reset bit in a
byte procedure resetbit ( var x char bit integer )
extern bit# in range 0..7 entry code
db 95,6,0 int vmcode 11. Storage management
This section discusses the initialization and structure of main
storage in the JRT Pascal system during execution of Pascal programs.
11.1 Main storage When a Pascal program is started by entering
the command "EXEC progname", the EXEC.COM file is loaded into main st
orage at address 100H by the CP/M operating system. After EXEC receives
control from CP/M, it determines how much storage is available an d
b 92 lpn vmcode db 0 mode vmcode on e
ntry bcwtos dewb hlwbase get bit# in breg, addr(x) in hl, x
into creg resetbit xchg hlwb dcx h! dcx h! dcx h
! dcx h mov b,m bit# dcx h! mov d,m! dcx h
! mov e,m addr(x) xchg hladdr(x) mov c,
m cx create mask inr b incr loop count
d formats this area. EXEC then loads the Pascal program m
odule from disk. Processing of the Pascal program then begins.
During program execution, there are four main regions of main s
torage. Starting from the lowest address, these are 1. EXEC - The run-
time environment. This region is fixed in size and contains the primary
run-time support system. 2. Pascal program module - This region is fixe
d in size and contains the comp mvi a,0feh loop rrc
dcr b jnz loop amask cbyte ana c
mov m,a store byte ret
end Listing of testbit.asm testbit.asm external
function which returns bit value of a byte function testbit ( x
char bit integer ) boolean extern bit nu
mber is in range 0..7 entry code *iled Pascal program from a
n '.INT' file. 3. Data stack - This region is variable in size. It
begins at the end of the Pascal program and grows toward higher addre
sses (and toward the dynamic storage region, discussed next). This
region contains all static variables (those created by VAR declaratio
ns), parameters passed to procedures and procedure activation blocks.
4. Dynamic storage - This region is variable in size. It begins at
the size I I direction of growth
I I-----------------------------I
I PASCAL PROGRAM I
I INT module I I fixed in si
ze I I-----------------------------I
I EXEC.COM I
I run-time system top of available storage and grows down t
oward lower addresses (and towards the data stack, previously disc
ussed). This region contains dynamic variables (those created by the
NEW procedure), input/output buffers, file control blocks, external
procedures and EXEC control tables. Since the data stack an
d the dynamic storage regions grow toward each other, a collision between
these areas is possible when storage is nearly full. To I
low address 100H I fixed in size I
------------------------------- 11.2 Dynamic storage
The JRT Pascal run-time system provides TRUE dynamic storage w
ith auto-compression. Virtual storage is supported for external proc
edures. The JRT Pascal Dynamic Storage Management System is design
ed to provide complete support for advanced features such as dynamic d
ata structures prevent this condition, the run-time system maint
ains a 64 byte cushion between the two areas. When the cushion becomes
less than 64 bytes, the run-time system takes several actions to restore
the cushion. If there is less than 64 bytes of free space in ma
in storage, the least-recently-used procedure will be deleted. Dynamic
storage is then compressed (see section 11.2 of this manual). Proce
ssing will continue even if the cushion ca (linked lists, trees, ring
s,...) and completely automatic virtual storage for external procedur
e and function code. Dynamic storage may contain these items
1. external procedures/functions 2. dynamic variables created b
y the NEW procedure 3. input/output buffers 4. file co
ntrol blocks 5. EXEC control blocks and pointer tables
6. a free list of de-allocated storage blocks All of these items
are nnot be restored, although performance will gradually decrease.
Only if there is actually a colllision between the data stack
and the dynamic storage regions will the run-time system recognize an
error condition and terminate processing. Map of main storage use in J
RT Pascal system high ------------------------------
- address I DYNAMIC STORAGE I
I allocated as blocks of dynamic storage.
Dynamic storage blocks are addressed indirectly in JRT Pascal in
order to allow the blocks to be moved during compression by updating a
pointer table. The value stored in a pointer variable by the execu
tion of the NEW procedure is a "virtual address" rather than the real add
ress of the block allocated. The virtual address is used to locate an
entry in an internal table called a pointer table, which c I
I variable in size I
I I I
direction of growth v I I-------------------
----------I I unused area (CUSHION) I 64 b
ytes I-----------------------------I
I DATA STACK I
I variable in *ontains the size and real address of each storage block.
There may be up to 32 pointer tables and each one contains up to 52 entr
ies for storage blocks. During dynamic storage compression, the real add
ress of a storage block may change, but the virtual address does no
t change. The dynamic storage manager performs these servic
es 1. Format dynamic storage and initialize pointer tables. 2.
Maintain the free list. This is a linked list wsegment procedures, overlay
s or chaining, the virtual storage manager loads, and when necessary dele
tes, program sections automatically. This makes the actual storage o
f the computer seem much larger than it actually is. Refer
to the previous section on storage management for a full description of
virtual/dynamic storage. External procedures are loaded into dyna
mic storage by EXEC when they are first referenced, unless they were
linkhich contains blocks of storage which have been de-allocated
(by the DISPOSE procedure, by closing a file, or by purging of
an external procedure). 3. Allocate a storage block. When a
storage block is requested (by the NEW procedure, opening a file, or loa
ding an external procedure), the storage manager attempts to satisfy this
request by searching the free list or extending the dynamic storage regi
on. When scanning the free led with the main program to form one
module (see section 8 for a description of the linker). The loadin
g is transparent to the programmer in that no planning or effort is req
uired. External procedures which are not linked with the main pr
ogram remain in storage once they are loaded unless a short-on-stora
ge condition occurs, then the least-recently-used procedure may be
deleted. If this happens, the control blocks associated wist for a
block, the first block which is large enough is selected. If this bl
ock is much too large, it is split and the remainder returned to
the free list. After a block has been found, its real address, size, and
a flag field are entered in a pointer table. 4. Release a b
lock of storage. This adds a de-allocated block to the free list and del
etes the corresponding pointer table entries. 5. Determine the amount
of free space. The fith the procedure ARE KEPT so that reloading, if nec
essary, can be done more rapidly. When main storage is severely overloa
ded, frequent deleting and reloading of external procedures may occur.
This condition is called "thrashing". Thrashing can be recognized
by unusually frequent disk accessing and little useful processing
being done by the program. It is necessary in this case to reduce th
e storage requirements of the program. ree space is the sum of
the sizes of all blocks on the free list and the size of the gap
between the data stack region and the dynamic storage region. 6. Compr
ess dynamic storage. All of the allocated storage blocks are moved into
the top of storage to eliminate free space. The free list is set to a
null pointer. The pointer table entries of all blocks are updated. I
f external procedures were moved then their relocatable address
es a 12.1 Coding external procedures and functions The exter
nal procedure Pascal file is very similar to a standard "internal" proce
dure in format. In many cases the only differences from a standard proc
edure format are that the PROCEDURE reserved word is preceded by the rese
rved word EXTERN and that the whole file is ended with a period to
signify the end of the compile unit. An example of this basic case fo
llows EXTERN re adjusted. If active external procedures
were moved then the Pascal program counter and the procedure return
addresses are adjusted. 7. Convert the virtual address of a block
to a real address. 12. External Procedures and Functions
External procedures are a facility for segmenting programs into separa
tely compiled modules. With these, the size of the entire program
can be practically unlimited. This is because, unlike with *
(* PRINT THE TOTAL AND AVERAGE OF 4 NUMBERS *) PRO
CEDURE XDEMO (A,B,C,D REAL ) VAR TOTAL R
EAL BEGIN TOTAL A + B + C + D
WRITELN('TOTAL ',TOTAL, ' AVERAGE ',TOTAL
/ 4.0) END. ****** IMPORTANT ****** READ THE FOLLO
WING CAREFULLY JRT Pascal external procedures can access all of
the globa IF N CUSTOMERLISTI.CUSTNAME THEN
SEARCHCUSTOMERLISTI ELSE SEARCH' '
END. 12.2 Referencing external procedures and functions
External procedures and functions MUST be declared in the main
programs which reference them. Their declaration is identical to a re
gular procedure except that the entire body of the procedure is repla
ced with the reserved word EXTl variables in the main program. The GLOBA
L VARIABLES are those IN THE MAIN PROGRAM DECLARED BEFORE ANY PROCEDURE
OR FUNCTION DECLARATIONS. They are variables that are available globally
and not only local to some procedure. In the preceding example, TOTAL
is a local variable - it is not accessible outside of the procedure XDEMO
. To access global variables or files, their declarations are
inserted in the external procedure file AFTER the ERN.
PROCEDURE PLOTTER ( X,Y INTEGER ) EXTERN FUNCTION
CUBEROOT ( A REAL ) REAL EXTERN For clarity, it is useful to
group all external procedure declarations as the first procedure dec
larations in the program. External procedures may reference other
external procedures if appropriate declarations are included in the re
ferencing procedure. EXEC indentifies external procedures by a
SEQUEword EXTERN and BEFORE the procedure header. The three declaratio
n sections CONST, TYPE, VAR may be inserted at this point. They must
be identical to the global declarations in the main program, except tha
t additional constants and type identifiers may be added here.
Type identifiers may be required in the procedure header par
ameter list or in a function return value declaration. The declar
ation of these type identifiers shNCE NUMBER. External procedures
SHOULD ALWAYS BE DECLARED IN THE SAME SEQUENCE, in the main program or i
n another external procedure. NOTE that THE USER MUST ENSURE
that external procedure declarations and parameter lists are CO
NSISTENT among different files, since the compiler does not validate thi
s. 13. Debugging Pascal programs Debugging computer
programs is the process of correcting "bugs" in a program so thaould app
ear IN THE SAME LOCATION as the global declarations -- just after EXTERN.
EXTERN CONST
NAMESIZE 32 TYPE
NAME ARRAY 1..NAMESIZE OF CHAR CUSTOMERRECORD RECORD
CUSTNAME, CUSTADDR NAME BALAN
CE REAL END VAR
(* MAt it will perform as desired. There are two phases of debug
ging correcting syntax errors in a program in order to obtain an error-f
ree compile, and correcting errors which occur during the running of t
he program after a clean compile. Referencing an undeclared variable
is an example of the first kind of error. Dividing by zero is an exampl
e of the second kind. This section is primarily concerned with the se
cond kind of error - those that occurIN PROGRAM GLOBAL VARIABLES *)
CUSTOMERLIST ARRAY 1..100 OF
CUSTOMERRECORD (**** SEARCH CUSTOMER LIST FOR GIVEN NAME
****) FUNCTION SEARCH ( N NAME ) CUSTOMERRECORD
VAR I INTEGER BEGIN
I1 WHILE (N CUSTOMERLISTI.CUSTNAME
AND (I 100) DO II+1 * during program testing.
JRT Pascal provides several facilities to simplify the location
and the correction of run-time errors. The debugging philosophy is
to provide the programmer with as much relevant information as po
ssible in a clearly formatted display. The run-time system detects error
s at two levels of severity - errors and warnings. When warnings
occur, a message is issued and processing continues. When an error th
e error message. The coding of these directives and use of the
SYSTEM builtin procedure to control the traces are described in th
e section on compiler directives (section 3 of this manual). 1
3.2 DEBUG procedure The DEBUG external procedure allows the contr
ol of the dynamic trace facilities while a program is being tested. T
he procedure and line traces can be turned on or off and the line range c
an be set by commands occurs, processing must terminate. E
rror and warning messages are all presented in verbal format - there are
no number or letter codes to look up. These messages are stored on a
disk file so that main storage is not wasted. 13.1 Trace options
JRT Pascal allows a trace of the program line numbers while a
program is running. This trace may be turned on or off by the program
itself. The range of line numbers to be traced may also be entered from the c
onsole. The file DEBUG.INT on the distribution disk is the co
mpiled external procedure module. To reference an external procedure fro
m a Pascal program, it is necessary to declare it PR
OCEDURE DEBUG EXTERN The procedure can be called from an number of
places in the test program by inserting a procedure call statement
DEBUG When it is activated, DEBUG will interact wi
th the prset by the program. A trace of procedure names
can also be produced. On entry to each procedure, the name and activati
on count is displayed. On exit, the name of the procedure is displayed.
This feature can also be turned on or off under program control.
The Exec interrupt mode can be entered by a control-n command
while a program is running. In this mode, the traces and line number
range can be modified. Other system statogrammer to modify the current t
race operations. Listing of DEBUG.PAS extern
procedure debug var reply char lower, upper int
eger begin (* debug *) writeln write('Activate line trace
y/n ') readln(reply) if upcase(reply) 'Y' then
begin write('Range of lines lower,upper ') readl
n(lower,upper) system( ltrace ) us information can also
be displayed. When in interrupt mode, entering a space character wil
l cause a list of valid commands to be displayed. Exec int
errupt allows asynchronous control of the trace facility. Progra
mmed control is also supported with the SYSTEM builtin procedure.
An interactive external procedure to control these trace
facilities at run-time is provided. The DEBUG procedure is described
in sec system( lrange,lower,upper ) end else sys
tem( noltrace ) write('Activate procedure trace y/n ') readln(
reply) if upcase(reply) 'Y' then system( ptrace ) else system(
noptrace ) writeln end (* debug *). 13.3 System st
atus display When an error is detected, an error message is displa
yed on the console. The current line number and last entered procedure
name may also be disption 13.2 of this manual. To use the
se traces, the %LTRACE and %PTRACE compiler directives must be inserted
in the program. It is recommended that the first line of a program bei
ng tested contains both directives, so that the entire program will be
subject to tracing. An additional advantage is that when these options
are present, if an error or warning occurs, the line number an
d the latest procedure name will be displayed with *layed (see se
ction 13.1). A system status display is also created. This display cont
ains useful information about the current state of the run-time syste
m. The system status display shows nine fields of information. I
f external procedures are present, the external procedure table is also
formatted and displayed. System status display addr 54F
5 prog 3BA7 size 4815 base 83BC cur 89AC tos 8A33
low A8B9 - the lowest address occupied by any dynamic storage block.
8. compr - a count of the number of times storage has been aut
o-compressed. 9. purge - a count of the number of external procedures
that have been purged from dynamic storage due to short-on-storage con
dition. The system status display may contain one additional l
ine of input/output information. The name of the most recently referen
ced file, a status byte and the cur compr0002 purge0000
Most of these values indicate the use of storage in the run-time system.
Storage management is discussed fully in section 11 of this manual. A
simplified map of storage is presented here ---------
---------------- I CP/M I
I-----------------------I I DYNAMIC STO
RAGE I I I rent defa
ult disk will be displayed if files have been used by the program.
SAMPLE PAS 88 A If the file was opened with
out specifying a disk letter then is shown, otherwise the disk letter
. The status byte contains several flag bits bi
t meaning --- --------- 80 file is
open 40 random mode - not sequential 20
text mode - not low--- I-----------------------I
I I I unused I
I I tos--- I---
--------------------I I I
cur--- I DATA STACK I I
I base-- I-----------------------I
I I binary 10
EOLN flag set 08 input - not output or random
04 EOF flag set Formatted external procedure table
exproc name addr use cnt time stat ACCTPAY1
C2AE 0000 0004 30 ACCTPAY2 3E22 0000 016
5 74 GENLEDG1 0001 0000 0000 00
ACCTREC1 3F55 0001 014E F4 ACCTREC2 440C
I PASCAL CODE I --addr (of error)
I I prog-- I-----------------------I
I I I
EXEC run-time I I system I
100h-- I-----------------------I I reserved
area I ------------------------- 1. add
r - the address at which the 0001 015A F4 SORT
0001 0000 0000 00 +INVENTRY 503A 0001 020D
F4 CHECKS 5052 0000 0103 30 1. exp
roc name - the name of the external procedure or function. A plus sign
indicates the external procedure which was most currently entered or
exited. This is not necessarily the currently active procedure.
2. addr - the address in main storage of the extern error occurred. Thi
s may be in the Pascal code area or in the dynamic storage area if the
error was in an external procedure. 2. prog - the starting addre
ss of the main Pascal program. 3. size - the size of the main program m
odule. 4. base - the base or bottom of the data stack. 5. cur
- the address of the current procedure activation block. 6. tos - top
of stack. This is the address just past the end of the data stack.
7. low *al procedure module. If this value is 0001 then the m
odule is not currently in main storage. 3. use cnt - a count o
f the number of times the procedure is CURRENTLY active. Usuall
y this will be 0000 (not active) or 0001 (active). It will be greater
that 0001 only if the procedure is called recursively. 4.
time - in order to determine which procedure was least-r
ecently-used, the run-time system maintains r occurred in main program B
EGIN-END block, not in procedure. %Proc - error occurred in proc
edure, not in main program BEGIN-END block. %Trace - line num
ber trace indicator. %Warning - non-fatal error condition. Processing
continues. 13.5 Common Problems A. General difficulties
1. The master disks accidently got erased by a program... MAKE BACKU
P COPIES OF JRT PASCAL when you first get it. 2. The disks will noa
pseudo-timer which is incremented once on each entry to or exit from
an external procedure. The field contains the value of the pseudo-timer t
he last time the procedure was entered or exited. 5. stat - a s
tatus indicator with several flag bits bit meaning
--- -------- 80 procedure is currently acti
ve 40 procedure was linked with main program
20 procedure is curret boot up when on is put in drive A and the
system is reset... You need your operating system. 3. With
CP/M 1.4, CDOS or the equivalents, CUSTOMIZ, LINKER and random I/O in ge
neral will not work.... Sorry about that, but to get random I/O on 8 mega
byte files, CP/M 2.2 would be required. LINKER is never required fo
r JRT Pascal. The function of CUSTOMIZ can be performed by two simple pat
ches in DDT. This involves patching the disk sntly in storage
10 procedure file control block is open 04
procedure address is real, not virtual 13.4 Run-time messages
The run-time system provides several messages to aid in the
correction of error or exceptional conditions. In addition to these g
eneral messages, about 75 more specific messages of 1 to 4 lines to text
are provided to describe particular error conditions. The genera
l run-time earch list in EXEC.COM and JRTPAS3.COM. Both of these l
ist are at 0155h and consist of up to four upper case letters followed
by a Z. ADDT EXEC.COM -S155 0155
41 41 0156 42 42 0157 4A 5A (an upper case Z
) 0158 00 . -G0 ASAVE 93 EXEC.COM
For JRTPAS3.COM, the SAVE command line is ASAVE 85 JRT
PAS3.COM 4. The diagnostic "JRTPASmessages are all prefixed with a
% character. These messages are listed here %Entry - indicat
ed entry to a procedure when procedure trace is active. Procedure na
me and activation count are listed. External procedures are indicated
by an asterisk before the name. %Error - fatal error detected by run-t
ime system. Program terminates. %Exit - indicates exit from procedure w
hen procedure trace is active. Procedure name is listed. Exter3" or "
SOURCE FILE NOT FOUND" comes up... CP/M needs to know the drive on
which the file JRTPAS3.COM is located, if it is not on the current defa
ult drive. JRTPAS3 needs to know the drive on which the source file to b
e compiled is located. Further, that source file must have a '.PAS' su
ffix on the name. So, for example, you may need to type BJRTPAS3 BP
GM if the default drive is A and both JRTPAS3.COM and PGM.PAS are on the
B drive. 5. nal procedures are indicated by an asterisk before th
e name. %Extern - indicates that error occurred while attempting to lo
ad an external procedure module. The procedure name is listed.
%Input error - indicates a format error when reading console input, suc
h as entering a character string when an integer was expected. %Line -
indicates line number where error occurred. The module must have been c
ompiled with %LTRACE option. %Main - erro *The compiler and everythi
ng else does not fit on one disk... There are many possible ways to set J
RT Pascal up when you have a system with small drive capabilities. O
ne is On disk A On disk B -
EXEC.COM -JRTPAS3.COM -your editor
-PASCAL0.INT (ED, WordStar, etc.) -PASCAL1.
INT -the PASCAL SOURCE program -PASCAL2.INT
bei A system reset may be needed. B. Compiler Errors 1. St
ring literal too long... Somewhere in the program, a literal string does
not have a closing or opening single quote. This error is caught by the
lexical scanner before the program is listed. (Most editors make it
easy to search for all lines with single quotes.) 2. Block struc
ture invalid (and other strange diagnostics)... Perhaps the program is at
tempting to declare or use a reserveng developed -PASCAL3.INT
-perhaps PASCAL.LIB -PASCAL4.INT
-PASCAL.LIB You Osborne owners may have to do
some shuffling until you find the arrangement that works best for you. F
or example, the compiler disk could be on drive A, which would alternate
with the WordStar disk as necessary (with appropriate Control-C's af
ter disk changes). The source and object programs could td word.
The list of reserved words in JRT Pascal is somewhat longer than
standard. For example, LENGTH and POS are reserved. 3. Compiler acts lik
e something is not there... Many versions of WordStar set the high-order
bit of the 'current' character when a file is closed, even when ed
iting in non-document form. ALWAYS end a WordStar edit with (QC) before
(KD). Also, use PIP newfile.PASoldfile.PASZ to clear off parity bits.
4. Compihen stay on B, perhaps with EXEC.COM and another copy
of PASCAL.LIB. Be sure there is a copy of your operating system o
n each disk you put in drive A. 6. The compiler (or run-time) USE
D to work, but now it doesn't... Use EXEC VERIFY to check the compiler an
d/or run time files again. Even if the sums agree, a file or files may
have gotten shuffled by a malfunctioning program, hardware errors, or
bad diskette handling. If necessary,ler "goes away"... Hit system
reset, then look for undeclared variables, types, or constants in
the next line listed. Also check for or , used inappropriately.
Look for unbalanced parenthesis. 5. Out of memory... Split the p
rogram into a main program and external procedures so that each portion i
s 600 to 1200 lines long. (Maximum length depends on the program and t
he available memory.) 6. Array out of bounds at end of compilation. go b
ack to the original master disks (write-protect labels, right) and
copy the needed files to a NEW diskette. If necessary, act as if you
had just gotten JRT Pascal (square-1). 7. EXEC VERIFY does not even work
... Make sure that EXEC.COM, VERIFY.INT, and PASCAL.LIB are MOUNTED on
your disk system, and that you told CP/M the right drive for EXEC.COM
and that you gave EXEC the right location for VERIFY.INT. You may
need to use BEXEC BVER.. External procedure names can be 8 charact
ers long and should not contain $ or characters, since the exproc name
is turned into a CP/M file name. C. Run-time Errors
1. Object file not found... Make sure that the source program is compi
led successfully, and that the appropriate drive is indicated on the file
name, as EXEC BPGM. 2. Library not present... PASCAL.LIB must be
present on one of the drives in the "disk search IFY if the files are on B
. Remember when you run EXEC.COM that PASCAL.LIB must be present on on
e of the drives in the "disk search list" (usually A or B). 8. BD
OS errors show up when a DIR is requested of a master disk... Make sure
that your system is expecting a disk in the format provided. For
example, single density 8" disks Some operating systems cannot se
nse a density change once they have determined "the format for that drive
". * list" (usually A or B). 3. Files never get written to...
CLOSE(filevariable) is required after files have been written, so th
at CP/M performs a proper close on the file. Otherwise, the file size
will be the next lower multiple of 16K in size, usually zero. 4. Readin
g characters from a file, most of the characters in a word get skipped.
.. The difference between binary and text modes are significant. If you
want every character in a fr exit the program with Z or continue
with R, as appropriate). Use %LTRACE or $L when compiling the program t
o allow execution interrupts and also error diagnostics with line numb
ers. or $L when compiling the program to pS6LR$P1ttM"tJ mtm)E7e3lDohk#!5
KIl5cM &Yo S-36BLnr&hb "d ELLOIJ%J M(#"LuC$)8i#£+LOI1E6m0ZSBg6i"LMviFile, use
binary in the reset of open statement. 5. Reading from a
file in binary mode, end of file is hard to determine... Co
ntrol-Z (1ah) marks the end of a text file (unless the real end of file
on a 128 byte boundary occurs). Test for both character CHR(26)
and EOF. For binary records, a special record consisting of all 255 (0ff
h) or all EOF's (1ah) may be needed to mark the end of the file, since
CP/M only keeps track!sd!!X#V9#V+"i#"k*i#"i*k+"kM!X#V"m*m!*m!s*mA/!*mBm"g!V!*mm
s#r!V#V!*mA!s*mA*e!s*m!s*m6!s#rpd,*e*mB*ms*m*m#s*e#"e1!X#V6!s#rpxN21T!X#V"*!!V!*
Bms#r!V!*ms#r*!s*B*1&o of 128-byte sectors. 6. External procedures get a
ll mixed up... Declare external procedures properly. When external proce
dures refer to other external procedures, the declaration order count mu
st match those in the main program If your main has
FUNCTION COS(R REAL) REAL EXTERN FU
NCTION SIN(R REAL) REAL EXTERN and your exproc has declared on
ly FUNCTION SIN(R 14. Extended CASE statement
Format CASE selectorexpression OF labelexpression ... ,
labelexpression statement ... ... ELSE statement
END The CASE statement is used to select one of several statem
ents for execution based on the value of the selectorexpression. The
selectorexpression and the labelexpression must be compatibile data
types. The labelexpressions are evaluated seREAL) REAL EXTE
RN lo and behold, the exproc will get a value of 1.0 if it passes 0.0 t
o what it thinks is SIN. The exproc will have actually called COS.
Internally, external procedures refer to other external procedures by
number. 'Dummy' declarations such as PROCEDURE X1 EXTERN can be us
ed as place holders, as long as the names are unique. The name used
in the MAIN program will be used to find the external procedure on the d
isk. quentially. If one is found equal to the selector, the corre
sponding statement is executed. If none are equal, then the optional
ELSE clause statement is executed. The ELSE clause i
s a JRT Pascal extension. Also, standard Pascal allows only constants
as labels, while expressions are allowed by JRT Pascal. Not more than 12
8 label clauses are allowed in one CASE statement. Not more than
128 labels per label clause are a7. Values are not returned correc
tly from external functions (or arguments are not passed correctly to
external procedures)... Make sure the declaration of arguments in the
calling program match those in the external procedure. If a VAR is mis
sing in one and present in another, you could have trouble. 8.
Control-C does not stop a program (or control-N does not stop it eith
er)... Use control-N to cause an execution interrupt (you can eithe *l
lowed. The statements should be followed by a semicolon. The semic
olon is optional on the last statement in the CASE statement. Examples
CASE I OF 2 WRITELN('I IS 2') 4 WRITE
LN('I IS 4') ELSE WRITELN('I IS NOT 2 OR 4') END
CASE LANGUAGE OF (* STRING EXPRESSION *) 'PASCAL'
YEAR 1970 'PL/I' YEAR 1964 'BASIC' Y
EAR 1965 edure GOTOXY in the CRTMAP.PAS file. The screen clear code
is procedure CLEAR. Procedure PART2 from CRTMAP.PAS is reproduce
d here. This code generates "part2" of the generated external procedu
re. The line marked XXX contains the terminal codes for clearing the
CRT screen. The line marked YYY contains the terminal codes for moving t
he cursor to a particular position. procedure part2 begin
writeln(f2 'procedure clear') END (* EXAMPLE
OF EXPRESSIONS IN LABELS *) CASE ANGLE OF PHI
WRITELN('PHI') 2.0 * PHI WRITELN('TWO PHI') 3.0 *
PHI WRITELN('THREE PHI') ELSE WRITELN('ANGLE NOT ON NOD
E') END (* EXAMPLE OF BOOLEAN SELECTOR AND LABEL EXP
RESSIONS *) (* CHECK VOLTAGE V FOR VALID RANGE *) CA
SE TRUE OF (V 2.5) AND (V 4.3) PROC writeln(f2 'begi
n') writeln(f2 'write(chr(27),''*'')') XXX
writeln(f2 'end') writeln(f2) writeln(f2 'procedure gotoxy (x,y
integer )') writeln(f2 'begin') writeln(f2 'write(chr(27),'''',ch
r(y+20h),chr(x+20h))') YYY writeln(f2 'end') writeln(f2)
end part2 The CRT screen corrdinates have the origin 0,0 in th
e upper left corner ESSRANGE1
(V 5.6) AND (V 14.08) PROCESSRANGE2 (V 35.6) AND (V 100.0
) PROCESSRANGE3 ELSE WRITELN('VOLTAGE OUT OF VALID RANGES',V)
END 15. CRT Formatting This section descr
ibes JRT Pascal CRT formatting facilities. It requries a basic knowle
dge of Pascal and of JRT Pascal external procedures. The
CRTMAP utility enables the user to quickly format a CRT t 0
x 79 ------------------------------
---- 0 ! !
! ! !
! y ! !
! ! !
! 23 !
! erminal screen. One record at a time may be displayed.
The utility program takes as its input a Map Description File
(MDF) which describes the CRT map in a simple command language. The
utility generates the source program for a Pascal external procedure wh
ich may then be compiled. This external procedure contains all the logic
to display all or part of one record data type. Descriptive informat
ion may also be displayed on the screen. So --------------
-------------------- The first coordinate X indicates the colum
n, the second Y indicates the row. 15.1 Structure of
the external procedure CRTMAP generates a Pascal external procedur
e according to the parameters in the Map Description File. This exter
nal procedure then does the display formatting of your data record.
Structure of the generated external procedure PART1
EXurce code for CRTMAP is include and its features may be modified or
extended. The distribution version of CRTMAP assumes a Televideo dis
play terminal. It may be adapted to any other terminal or comput
er by modifying two lines in the program. These two lines specify t
he control codes for cursor positioning and clearing the screen. Co
nsult your display terminal user manual for the codes for your system. T
he cursor positioning code is in proc *TERN TYPE
%INCLUDE typedeclarationfilename PROCEDUR
E exprocname ( VAR R typename )
PART2 PROCEDURE CLEAR PROCEDURE GOTOXY
PART3 PROCEDURE DISPLAY format the CRT PART4..PART8
(omitted) PART9 BEGIN mainlinecode
END. 15.2 Map DELD 10,20, customernam
e FIELD 12,20, accountbalance102 FIELD 20,60, days
untilarmageddon1 CURSOR - specifies where the cursor should be posi
tioned on the screen after the record is displayed.
CURSOR column, row END - indicates end of Map Description File, A
LWAYS required. 15.3 Operating CRTMAP To operate CRT
MAP, first prepare the Map Description File (section 15.2). Prepare
a efinition File The MDF defines the format of the CRT screen fo
r the display of one record type. CRTMAP recognizes seven different MDF
commands. The MDF commands MUST be entered in a fixed sequence exc
ept for LITERAL and FIELD which may be intermixed. There should b
e one command per line. Blank lines may be inserted for readability.
EXPROC eeeeeeee INCLUDE iiiiiiii R
ECORD rrrrrrrr file containing the record to be displayed
and its subordinate type declarations - this will be the INCLUDE f
ile. Make sure the CRTMAP utility was modified to support y
our terminal type (see section 15.). To run the utility, en
ter EXEC CRTMAP It will ask for the "filename.ty
pe" of your Map Description File. On successful termin
ation of CRTMAP, the new external procedure source file any number of in
termixed LITERAL and FIELD commands CURSOR x,y
END MDF Commands EXPROC - the name of the external procedure
to be generated by CRTMAP. INCLUDE - the name of
the %INCLUDE file which contains the TYPE declaration of the r
ecord to be displayed and all TYPEs and CONSTants to which it r
efers. example INCLUDE TYPES.DCL RECOR
D - the namewill be found on the default disk. It must be compiled wit
h the JRT Pascal version 3 compiler. 15.4 CRTMAP example
An example of the use of the CRTMAP utility is provided here. A simp
le customer record is formatted and displayed. The Map Definit
ion File named MDF is listed. The include file named CUSTOMER.P
AS contains the main record declaration CUST and a subordinate d
eclaration CHAR30. The externa of the record data type to be displ
ayed - this type declaration is in the include file. LIT
ERAL - causes a character string to be displayed on the CRT
screen, the string must be entered between single quotes. LIT
ERAL column, row, 'literal string to be displayed' examples
LITERAL 0,0,'* this is the upper left corner' LITERAL
40,12,'* this is about the center' LITERAL 0,23,'bottom rowl pro
cedure generated by CRTMAP is named CUSTMAP.PAS and is listed.
A complete compiler listing of CRTMAP.PAS follows. Operation flowc
hart of CRTMAP utility (ver 3.0) Map
Description Fi
le !
! !
! of the crt' screen coordinates have
the origin 0,0 in the upper left corner, first number X is
the column, second number Y is the row. FIELD - causes
a field in the input record to be displayed at the specified
location, may include optional minimum width and decimal place
s numbers for displaying integers and reals. FIELD column, row,
fieldname minwidth decplaces FI * V
----------------- !
! ! CRTMAP !
! utiltiy ! ! !
-----------------
! !
! V
! !
! !
! !
! !
! ! Balance $ 1490.34
! !
! ! Pascal source
code external %include procedure
file ! /
! /
! / ! /
! /
! / ! /
! !
! !
! !
! ! !!
! !! File CUSTOMER.PAS contains TYPE declaration of custom
er data record CHAR30 ARR !
/ ! /
V V -----------------
! ! ! JRTPAS
3 ! ! !
----------------- !
! AY 1..30 OF C
HAR CUST RECORD NAME CHAR30 ADDRESS
CHAR30 CITY CHAR30 BALANCE REAL
END FILE MDF contains Map Definition File which describes CRT
screen format EXPROC CUSTMAP INCLUDE CUSTOMER.PAS RECOR
D CUST LITERAL 0,0,'---------- CUSTOMER RECORD ----------' L
ITERAL 5,3,'Name ' FIELD 12,3,NAME LITERAL 5,5,'Addr ' !
!
V compiled
CRT mapping external
procedure CRT Screen formatted by CUSTMAP e
xternal procedure -------------------------------------------------------
---------- !
! ! ---------- CUSTOM FIELD 12,5,ADDRESS LITERAL 5,7,'City
' FIELD 12,7,CITY LITERAL 15,14,'Balance $' FIELD 15,1
4,BALANCE82 CURSOR 0,22 END File CUSTMAP.PAS Pa
scal external procedure generated by CRTMAP utility CRTMAP generated e
xternal procedure extern type %include ('CUSTOMER.PAS
') procedure CUSTMAP ( var r CUST ) proce
dure clear begin write(chr(27),'*')ER RECORD ----------
! !
! ! !
! Name PASCAL, BLAISE !
! ! !
Addr 777 RUE D'ARGENT ! !
! ! City PARIS
* end procedure gotoxy ( x,y integer ) begin w
rite(chr(27),'',chr(y+20h),chr(x+20h)) end procedure display
begin clear gotoxy( 0 ,0 )
write('---------- CUSTOMER RECORD ----------') gotoxy( 5 ,3
) write('Name ') gotoxy( 12 ,3
) write( r,NAME ) gotoxy( 5 ,5
) wabel 99 0091 0047 var 0091 0047 i integer 009
4 0048 begin 009D 0049 word ' ' 00AC 0050 while not (ch in alp
hameric) do 00AC 0051 begin 00B1 0052 getchar 00B4
0053 end 00C4 0054 word1 ch 00C9 0055 i 2 00CE 0056
getchar 00DC 0057 while (ch in alphameric) do 00DC 0058
begin 00EF 0059 wordi ch 00F9 0060 i i + 1 00FE
0061 rite('Addr ') gotoxy( 12 ,5 )
write( r,ADDRESS ) gotoxy( 5 ,7 )
write('City ') gotoxy( 12 ,7 ) wri
te( r,CITY ) gotoxy( 5 ,14 )
write('Balance $') gotoxy( 15 ,14 ) wri
te( r,BALANCE82 ) gotoxy( 0 ,22 ) e
nd begin di getchar 0101 0062 end 010E 00
63 word upcase(word) 010F 0064 end getword 010F 0065 010F 0066 0
10F 0067 procedure init 0115 0068 begin 012C 0069 writeln('CRTM
AP ver 3.0') 0130 0070 writeln 0157 0071 write('name of Map Desript
ion File ') 0160 0072 readln(mapfilename) 0164 0073 writeln 0168
0074 writeln 0177 0075 reset(f1,mapfilename,binary,256) 017C 0076
endoffile falssplay end. ----- CRT Mapping Utility
----- 0000 0002 %page(50) 0000 0003 0000 0004 This version setu
p for Televideo terminals. To adapt to oth 0000 0005 terminals modify PROC
EDURE PART2 which generates the cursor 0000 0006 positioning (gotoxy) and
clear screen (clear) codes. 0000 0007 0000 0008 program crtmap 0000 0
009 0003 0010 type 0010 0011 char16 array 1..16 of char 0010 0012
0010 0013 var 0010 e 0185 0077 ch ' ' 01A7 0078 alphameric
'A'..'Z','a'..'z','0'..'9','','.' 01AC 0079 getword 01E1 0080 if w
ord 'EXPROC' then error('EXPROC command expected') 01E6 0081 getword 01F
2 0082 exprocname word 020A 0083 rewrite(f2, exprocname + '.pas', bi
nary, 256) 020F 0084 getword 0246 0085 if word 'INCLUDE' then error
('INCLUDE' command expected') 024B 0086 getword 0257 0087 includenam
e word 025C 0014 ch char 0010 0015 alphameric set of char 0010
0016 endoffile boolean 0010 0017 mapfilename string15 0010 0018
word char16 0010 0019 exprocname char16 0010 0020 includename c
har16 0010 0021 recordname char16 0010 0022 f1, f2 file of char 0
010 0023 0010 0024 0010 0025 procedure error ( msg string40 ) 0013 0
026 var 0013 0027 dummy char16 0016 0028 begin 001A 0029 00
88 getword 0291 0089 if word 'RECORD' then error('RECORD' command exp
ected') 0296 0090 getword 02A2 0091 recordname word 02A3 0092
end init 02A3 0093 02A3 0094 02A3 0095 procedure part1 02A9 0096
begin 02DF 0097 writeln(f2 'CRTMAP generated external procedure ') 02F4
0098 writeln(f2 'extern') 02FF 0099 writeln(f2) 0312 0100 writ
eln(f2 'type') 033C 0101 writeln(f2 '%include (''',includename,' writeln
001E 0030 writeln 0028 0031 writeln(msg) 002C 0032 writeln 00
2C 0033 abnormally terminate - return to CP/M 0034 0034 call(0,dumm
y,dummy) 0035 0035 end 0035 0036 0035 0037 procedure getchar 003B
0038 begin 004C 0039 read(f1 ch) 0081 0040 if ch chr(1ah) the
n error('Premature end of input file') 008D 0041 write(ch) 008E 0042
end 008E 0043 008E 0044 procedure getword 0091 0045 l *
'')') 0347 0102 writeln(f2) 0386 0103 writeln(f2 'procedure ',expro
cname, '(var r '.recornam ')') 0391 0104 writeln(f2) 0392 0105 end
part1 0392 0106 0392 0107 0392 0108 procedure part2 0398 0109 b
egin 03B7 0110 writeln(f2 'procedure clear') 03CB 0111 writeln(f2 'b
egin') 03ED 0112 writeln(f2 'write(chr(27),''*'')') 0400 0113 writel
n(f2 'end') 040B 0114 writeln(f2) 043D 0115 writeln(f2 'proce 0684
0170 'CURSOR' processcoordinates 0696 0171 'END' en
doffile true 06D3 0172 else error('LITERAL, FIELD, CURSOR, or EN
D command ex cted') 06D4 0173 end 06D7 0174 end 06
EA 0175 writeln(f2 'end' ) 06F5 0176 writeln(f2) 06F6 0177 end
part3 06F6 0178 06F6 0179 06F6 0180 procedure part9 06FC 0181 be
gin 0710 0182 writeln(f2 'begin') 0727 0183 writeln(f2 dure gotoxy (
x,y integer )') 0451 0116 writeln(f2 'begin') 0489 0117 writeln(f2
'write(chr(27),'''',chr(y+20h),chr(x+20h))') 049C 0118 writeln(f2 'end')
04A7 0119 writeln(f2) 04A8 0120 end part2 04A8 0121 04A8 0122 0
4A8 0123 procedure part3 create DISPLAY procedure 04A8 0124 04AB
0125 procedure processcoordinates 04AE 0126 var 04AE 0127 xcoord
, ycoord char16 04B1 0128 begin 04B6 0129 getw'display') 073B 018
4 writeln(f2 'end.') 073C 0185 end part9 073C 0186 073C 0187 073F
0188 begin crtmap 0744 0189 init 0749 0190 part1 074E 0191
part2 0753 0192 part3 0758 0193 part9 075C 0194 close(f1)
0760 0195 close(f2) 0761 0196 end crtmap. No errors detected Module
size 1893 dec bytes End of compile for CRTMAP 5 close(f2) 0761 0196
end crtmap. No errors detected Module size 189ord 04C2 0130 xcoord w
ord 04C7 0131 getword 04D3 0132 ycoord word 0507 0133 writeln
(f2 'gotoxy( ',xcoord,',',ycoord,')') 0508 0134 end 0508 0135 0508 013
6 procedure processstring 050E 0137 begin 050E 0138 find start o
f string 052E 0139 while not (ch in '''',chr(0dh),' ',chr(9),chr(1ah)) do
0536 0140 getchar 0566 0141 if ch '''' then error('Literal
string expected') 057B 0142 write(f2X"3P1P&o! X(O!! X"3PO*9P8!XVO!1P&oX"3P
O*9P8!XO!1P&oX"3PO!1P&oX"3P*9P8!XO1P&o! XO!! X"3P*/P#"/PN'P!!RP#V9#V+"5P#£P"P*5P
#"5P*P+"P$P*/PlM*/P#"/POXOEP*PP"TP*TP!!1!P!"P.YPozg##*P!*P"CQ QPP!*CQ!PPPPPPP 'w
rite(') 057B 0143 repeat 058E 0144 write(f2 ch) 0593 0145
getchar 05A1 0146 until ch chr(0dh) 05B2 0147 writeln(f2 ')') 05B3
0148 end 05B3 0149 05B3 0150 05B6 0151 begin part3 05D7 0152
writeln(f2 'procedure display') 05EB 0153 writeln(f2 'begin') 0600 01
54 writeln(f2 'clear') 0608 0155 while not endoffile do 0608 0156
begin 060D 0157 getword 0613 0158 A. Re
served words The following words are reserved in JRT Pascal and
may not be used as identifiers abs addr
allocate and array begin
binary boolean call case
char chr close compress c
oncat cons const copy deallo
cate case word of 0621 0159 'LITERAL' 0621 01
60 begin 0626 0161 processcoordinates
062B 0162 processstring 062E 0163 en
d 063A 0164 'FIELD' 063A 0165 begin 063F
0166 processcoordinates 0644 0167 getw
ord 066C 0168 writeln(f2 'write( r,',word,')') 066F 0169
end !*!!!!!!!!!delete dispose di
v do downto else end
eof eoln exten false f
ile fillchar for forward fre
e function get goto hex$
if in include initialize
input insert integer la console
input to specify the line range to be monitored and the line spacing. Wh
en those parameters have been entered, the program execution will
begin. If Activan is active when the program terminates, Activan
mode is entered so that a final histogram can be printed.
While the program is running, it can be interrupted and control returned
to Activan by keying in a control-A command. Activan will then reques
t which action is desbel length list lran
ge ltrace map maxint mod
new nil nocons nolist
noltrace noptrace not nowarning
odd of open or ord
output page portin portout
pos pred proceduired co
de action ---- ------- C clear the
counters to zero H print histogram of activity
I initialize the line range and spacing M ru
n the program with Activan monitoring W run the program w
ithout Activan Z terminate the program C. B
lock letters An external procedure named LETTERS is provided
to gre program ptrace put rb
a read readln real real$
record repeat reset rewrite
round rrn set sqr
succ string system text then
to true trunc type
until upcase enerate large block letters. These le
tters are 9 lines high and from 4 to 10 columns wide. The external p
rocedure generates an entire row at a time of letters for use as report h
eaders, program identifiers, etc. The output line may be up to 220 colum
ns wide. The upper case letters, numbers, and dash may be input
to the external procedure. Unsupported characters are converted to spa
ces. Lower case characters are converted to upper case. var
warning while with write
writeln xor B. Activity analyzer
The activity analyzer, Activan, is a facility which monitors the execu
tion of a Pascal program and prints a graph showing the amount of time
spent executing each portion of the program. To use Activan, a program m
ust be compiled with the %LTRACE directive or the $L compile switch
on. A The output from letters is placed in a buffer whic
h is an array of strings. This must be defined exactly as shown. The d
eclaration for LETTERS is TYPE BUFFER ARRAY
1..9 OF STRING220 PROCEDURE LETTERS (INPUTSTRING STRING
SLANT CHAR VAR B BUFFE
R ) EXTERN The inputstring is the line of characters to be conv
erted to block letter format.ctivan monitors the line numbers as a p
rogram executes and keeps counters for the line numbers in the specified
range. The range of line numbers to be monitored and the line spacing can
be set and changed when the program is running. To run
a program with Activan, specify the $A switch when the program is start
ed with the EXEC command EXEC TEXTPGM $A Bef
ore the program begins execution, Activan will request "*"""""""""
The slant character provides for 'streamlined' characters by slanting
to the left or right. Slant may be 'L' or 'R' or ' ', for no slant.
The output buffer B refers to a variable of type buffer in the user's pro
gram. Note that B is a referenced parameter. This s
ample program will print out the word 'PASCAL' in block letters
PROGRAM BLOCKS TYPE BUFFER ARRAY 1..9 OF ST
RING220 V VAR R JSTATINTERFACE ) EX
TERN E. JGRAF JGRAF is an external procedure whi
ch formats x-y graphs and scatter graphs. The graph size in rows and col
umns and the lower and upper x and y bounds are set by the user. A title
to the graph may be provided. Once the graph has been prepared, it
can be displayed on the console, printed or stored in a disk file.
Any number of data points can be plotteAR I INTEGER
BLOCKSBUFR BUFFER PROCEDURE LETTERS ( INPUTSTRING S
TRING SLANT CHAR
VAR B BUFFER ) EXTERN BEGIN LETTERS('PASCAL','R
',BLOCKSBUFR) SYSTEM(LIST) FOR I1 TO 9 DO WRITELN( BLO
CKSBUFRI ) END. D. JSTAT JSTAT is an
external procedure which can be used to compute severd. Any number
of separate plots can be prepared simultaneously (within memory
limitations). To use JGRAF, your program (or occasion
ally an external procedure) must declare the char9000 and jgrafinterfa
ce types. Your program must then declare one (or more) variab
le of type jgrafinterface. For convenience, the interface variable
will be called jgi in this document. Your program could call the inte
rface al basic statistics given an array of real numbers as input. It
computes the arithmetic mean, standard deviation, variance, skewness,
kurtosis and the first four moments about the mean. The source co
de for JSTAT is provided on the distribution disk and may be modified
as necessary. The procedure is restricted to an array of 1000 real numb
ers, but this can be easily changed by modifying the declarati
on of the data type jstatarray and variable(s) anything appropriate. Y
our program must also declare JGRAF as an external procedure.
The declarations for sample main program to take plotting c
ommands from a disk file and create a plot is shown here. (The body of t
he sample program is listed later.) Everything listed here is require
d of any program using JGRAF except for the declarations noted as specifi
c to jg. program jg %ltrace %ptrace (* optional - suggest
recompiling the procedure. While jstatarray is declared as a 1000
element array, a much smaller array may be used to hold the data v
alues since the input array is used as a referenced parameter.
JSTAT (in its distributed form) requires three parameters n -
number of data items in the input array x - array of up to 1000
real numbers r - output record containing computed statistic
The followined *) type char9000 array 1..9000 of ch
ar jgrafinterface record command char (* R *)
plotchar char (* R *) xgrid boolean (*
R *) ygrid boolean (* R *) rows integer
(* R *) columns integer (* R *) xlowe
r real (* R *) xupper real (* R *)
ylower real (*g type declarations and procedure declaration are
required in the calling Pascal program TYPE JS
TATINTERFACE RECORD MEAN, STANDARDDEVIATI
ON, VARIANCE, SKEWNESS, KURTOSIS, M1, M2,
M3, M4 REAL END JSTATARRAY ARRAY 1..1000 OF RE
AL PROCEDURE JSTAT (N INTEGER VAR
X JSTATARRAY #*######### R *) yuppe
r real (* R *) filename array 1..14 of char
graftitle string (* R *) (* fields below used internally by jgr
af *) b char9000 bufrsize integer
linesize integer rowcount integer xspacing rea
l yspacing real end var jgi jgra
finterface (* following are used by progr 15.9, 205.7 )
JGI.PLOTCHAR '#' JGRAF ( JGI, 9.0, 105.0 ) To
print the graph on the console, set jgi.command to 'C' and call JGRAF
with x and y arguments zero, as JGI.COMMAND 'C'
JGRAF ( JGI, 0.0, 0.0 ) If you want output to the line pri
nter as well as to the console, set jgi.command to 'P' instead of 'C' be
fore calling JGRAF. To write the graph to a file, set jgi.fileam j
g *) filename array1..20 of char title array1..24 of char
inf file of char x, y real command char (* end of varia
bles used by sample program *) procedure jgraf ( var jg jgrafinterface
x, y real ) extern (* end of declarations *)
To produce graphs, your program must first set all members of
jgi marked (* R *) in the jgrafinterface type declaration to
appname to the desired name, jgi.command to 'S', and call JGRAF.
JGI.FILENAME 'BPLOT.5' JGI.COMMAND 'S'
JGRAF ( JGI, 0.0, 0.0 ) More data points can be added to a g
raph after printing, so that development or trends can be plotted in
succession. Further, by setting jgi.plotchar to a space (' '), data po
ints can be erased (although grid lines will not be restored).
If you want to priropriate values. Jgi.xgrid would be
set to false if grid lines running across the graph should be omitted.
Jg.ygrid is likewise set to false if grid lines running up and do
wn are to be omitted. Jgi.rows and jgi.columns contain the number of l
ines and number of characters across the body of the plot itself (min
us one). The number of rows and columns should normally be divis
ible by 10. Plot size can be calculated as (numbent more than one
graph using the same interface record (jgi) or want JGRAF to free the me
mory allocated to produce a graph, you can set jgi.command to 'X' before
calling JGRAF. This will free the buffers allocated by JGRAF (in the 'I'
command). Note that every call to JGRAF that is not pro
viding data (jgi.command 'D') should have the x and y arguments equal to
0.0. The body of the sample program jg is included here,
and r of columns + 16) * (number of lines + 5), which should
not exceed 9000 characters. The length of jgi.title should be less than
the number of columns in the plot. Once all the requair
ed members of jgi are initialized, set jgi.command to 'I' and call JGR
AF, as JGI.COMMAND 'I' JGRAF ( JGI, 0.0, 0.0 )
(Note that the examples listed here in upper case are for
illustration only and are NOT pa illustrates one use of JGRAF. Jg tak
es a disk file of commands as input and produces one or more plots as dir
ected. Commands on the disk file are similiar to the options to JGRA
F, with the addition of two commands. T followed by 'title' may prece
ed the I command. Period (.) followed by a space and a new plot cha
racter will reset the current plot character. begin (*
jg *) write('General graphing input file ') rt of the pr
ogram jg.) Then, to place data points on the graph, set jgi.comma
nd to 'D' and call JGRAF for each of the appropriate points. Do this as
often as needed. To get two distinct curves, you could set jgi.plotch
ar to '*' for one set of points, then set it to '#' before calling JGRAF
with another set of points. JGI.COMMAND 'D'
JGI.PLOTCHAR '*' JGRAF ( JGI, 15.4, 199.2 ) J
GRAF ( JGI, $*$$$$$$$$$ readln(filename) reset(inf,filename
, text, 512) jgi.title ' ' while (not eof(inf)) d
o begin read(inf command)
command upcase(command) writeln('db ',com
mand) jgi.command command case co
mmand of 'T' begin read
ln (inf title) **** 60 -I--
-------I---------I---------I---------I I I I
I I I I I I
I I I I I I
I I I I I I I
I I I I I I I
I I I I I jg
i.title title end 'I'
begin readln (inf jgi.rows, jgi.columns,
jgi.xlower, jgi.xupper,
jgi.ylower, jgi.yupper) jgi.plotcha
r '*' jgi.xgrid true
jgi.ygrid true (* note that all r
I I I I I I
I I I I I 30 -I---------I---
------I---------I---------I I I I I
# I I I I I I
I I I I I I
I I I I I *** I
I I equired members *)
(* of jgi have been set *) jgraf(jgi, 0.0
, 0.0) writeln(' done I')
end 'D' begin r
ead(inf x, y) jgraf(jgi, x, y)
end '.' readln(inf jgi.plotchar)
'C' jgraf(jgi, 0.0, 0.0) I * I I
I I I * I I I I
I * I I I # I
I # I I I I 0 -I---------I----
-----I---------I---------I 0 10 20 3
0 40 A summary of the commands to JGRAF is included now for refere
nce code meaning ---- -----------
'P' jgraf(jgi, 0.0, 0.0) 'S' begin
readln(inf filename)
jgi.filename filename jgraf(jgi, 0.0, 0.0)
end 'X' jgraf(jgi, 0.0,
0.0) else writeln('Unrecognized command ',command)
end end close(i
nf) C display graph on console D plot
a data point I initialize graph buffer and axes
P print graph S save graph on a disk file
X delete graph buffer The source code for JGRAF is p
rovided and may be modified. For example, the number of lines between
the xgrid lines can be changed to 6 (or to 8) so that the grid lines for
m a one inch square on printer end. Given the input
file SAMPLE.DAT as follows T 'Sample' I 20 40 0
40 0 60 D 5 6 D 6 10 D 7 12 D 8 15
D 9 16 D 10 16 . # D 5 2 D 32 6
D 32 27 C S sample.out X
Jg will produce the (uninspired) output file SAMPLE.OUT as follows, g
iven the input listed above. JGRAF ver 3.0 **** Sample %*%%%
%%%%%%s with 10 characters per inch and 6 (or 8) lines per inch. J
GRAF is not limited to scatter plots. With appropriate selection
of data points, histograms can be produced. Contour plots (and even is
ometric drawings) are also possible. F. Restrictions 1. Arrays
are limited to 8 dimensions. 2. Literal chars strings in the 'const' s
ection are limited to 32 chars. 3. Random disk files require CP/M 2.2 a
nd may be up to 8 MB in size. 4. Sets are limited to 128 elements.
The first element (leftmost) corresponds to 0 the last element (rightmost
) corresponds to 127. 5. Up to 63 external procedures and functions may
be declared. 6. Not more than 1632 dynamic storage blocks may be allo
cated at one time. The run-time system may require up to 100 of these
for file buffers, file control blocks, external procedures and other use
s. 7. "With" statements may not be nested to more than 31 levels.
8. "Case" statements are limited to 128 clauses with 128 labels per clause.
9. Integers must be between +32767 and -32768, since they are stored
in 16-bit twos-complement format. In a few cases, integers will be
treated as unsigned 16-bit values with a range of 0 to +65535. The
MAP and CALL builtin procedures require addresses which may range up to
65535. Accessing random files by relative byte address may requir
e byte addresses up to 65535. 10. "Real" numbers are represented in 1
4 digit binary coded decimal (BCD) format. The floating point exponent r
ange is from -64 to +63. 11. Names of procedures and functions may not
be used as parameters. 12. Literal char strings in the source program m
ay not exceed 127 char. and functions may not be used as parameters. 1
2. LRA M£t£0pp!k65QZuFqnQt2"1N4IuD7aV4pE1+BpqX7Z Fs &*&&&&&&&&& '*'''''''''