Nevada Pascal ver 4.1 (UK) (Face D) (128K) (1985) (CPM) (Version CPC 6128) [Original] [UTILITAIRE].dsk
HexaDumpAscii only
000000:  45 58 54 45 4E 44 45 44 20 43 50 43 20 44 53 4B    EXTENDED CPC DSK
000010:  20 46 69 6C 65 0D 0A 44 69 73 6B 2D 49 6E 66 6F     File..Disk-Info
000020:  0D 0A 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  &*&&&&&&&&&  '*'''''''''
Tous droits réservés. Reproduction sans autorisation interdite. © Kukulcan