WACCI Programmers Patch (UK) (Face B) (1999) [COMPILATION].dsk
HexaDumpAscii only
000000:  45 58 54 45 4E 44 45 44 20 43 50 43 20 44 53 4B    EXTENDED CPC DSK
000010:  20 46 69 6C 65 0D 0A 44 69 73 6B 2D 49 6E 66 6F     File..Disk-Info
000020:  0D 0A 53 41 4D 64 69 73 6B 31 34 31 32 30 38 00    ..SAMdisk141208.
000030:  28 01 00 00 13 13 13 13 13 13 13 13 13 13 13 13    (...............
000040:  13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13    ................
000050:  13 13 13 13 13 13 13 13 13 13 13 13 00 00 00 00    ................
000060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
000110:  00 00 01 00 02 09 4E E5 00 00 C4 02 00 00 00 02    ......N.........
000120:  00 00 C9 02 00 00 00 02 00 00 C5 02 00 00 00 02    ................
000130:  00 00 C1 02 00 00 00 02 00 00 C6 02 00 00 00 02    ................
000140:  00 00 C2 02 00 00 00 02 00 00 C7 02 00 00 00 02    ................
000150:  00 00 C3 02 00 00 00 02 00 00 C8 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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0002A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0002B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0002C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0002D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0002E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0002F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0003A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0003B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0003C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0003D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0003E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0003F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000400:  38 20 36 31 34 20 36 31 38 20 61 30 38 20 39 34    8 614 618 a08 94
000410:  33 31 0D 0A 42 20 61 30 39 20 35 39 36 20 36 32    31..B a09 596 62
000420:  31 20 61 30 39 20 38 34 37 33 0D 0A 42 20 61 31    1 a09 8473..B a1
000430:  30 20 34 38 35 32 20 34 38 35 38 20 61 31 30 20    0 4852 4858 a10 
000440:  39 38 32 38 0D 0A 42 20 61 31 30 20 39 32 38 32    9828..B a10 9282
000450:  20 39 32 39 34 20 61 31 30 20 31 30 31 30 31 0D     9294 a10 10101.
000460:  0A 42 20 61 31 31 20 34 35 31 20 34 35 39 20 61    .B a11 451 459 a
000470:  31 31 20 38 31 33 31 0D 0A 42 20 61 31 31 20 35    11 8131..B a11 5
000480:  33 32 20 35 34 30 20 61 31 31 20 39 30 37 39 0D    32 540 a11 9079.
000490:  0A 42 20 61 31 32 20 33 38 31 30 20 33 38 31 38    .B a12 3810 3818
0004A0:  20 61 31 32 20 31 30 35 31 31 0D 0A 42 20 61 31     a12 10511..B a1
0004B0:  32 20 38 34 35 34 20 38 34 36 30 20 61 31 32 20    2 8454 8460 a12 
0004C0:  31 31 37 36 38 0D 0A 42 20 61 31 33 20 32 30 37    11768..B a13 207
0004D0:  35 20 32 30 38 33 20 61 31 33 20 36 33 30 32 0D    5 2083 a13 6302.
0004E0:  0A 42 20 61 31 33 20 32 38 30 34 20 32 38 31 31    .B a13 2804 2811
0004F0:  20 61 31 33 20 35 39 37 31 0D 0A 42 20 61 31 34     a13 5971..B a14
000500:  20 31 33 36 34 20 31 33 37 30 20 61 31 34 74 31     1364 1370 a14t1
000510:  20 30 0D 0A 42 20 61 31 35 20 35 30 32 37 20 35     0..B a15 5027 5
000520:  30 33 35 20 34 36 34 72 73 78 2E 62 61 73 20 30    035 464rsx.bas 0
000530:  0D 0A 42 20 61 31 36 20 35 34 33 20 35 34 39 20    ..B a16 543 549 
000540:  61 69 31 2E 62 61 73 20 30 0D 0A 42 20 61 31 36    ai1.bas 0..B a16
000550:  20 39 35 32 20 39 35 39 20 61 31 36 20 31 30 35     952 959 a16 105
000560:  31 34 0D 0A 42 20 61 31 36 20 31 30 34 34 34 20    14..B a16 10444 
000570:  31 30 34 36 34 20 61 31 36 61 20 30 0D 0A 42 20    10464 a16a 0..B 
000580:  61 31 36 61 20 34 36 39 20 34 37 35 20 61 69 32    a16a 469 475 ai2
000590:  2E 62 61 73 20 30 0D 0A 42 20 61 31 37 20 33 37    .bas 0..B a17 37
0005A0:  30 39 20 33 37 31 36 20 61 31 37 20 31 30 39 30    09 3716 a17 1090
0005B0:  35 0D 0A 42 20 61 31 37 20 35 30 31 31 20 35 30    5..B a17 5011 50
0005C0:  31 38 20 61 31 37 20 31 31 35 39 34 0D 0A 42 20    18 a17 11594..B 
0005D0:  61 32 31 20 34 33 32 32 20 34 33 32 38 20 61 69    a21 4322 4328 ai
0005E0:  36 2E 6C 6F 67 20 30 0D 0A 42 20 61 32 31 20 34    6.log 0..B a21 4
0005F0:  33 33 34 20 34 33 34 34 20 36 34 6B 62 69 74 73    334 4344 64kbits
000600:  00 44 49 53 43 20 20 20 20 42 41 53 00 00 00 00    .DISC    BAS....
000610:  00 00 00 00 00 70 01 00 2A 00 00 00 00 00 00 00    .....p..*.......
000620:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000630:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000640:  2A 00 00 3E 03 28 00 0A 00 BE 20 1C 00 BF 2C FF    *..>.(.... ...,.
000650:  12 28 1C 00 A7 29 01 BE 20 1C 01 BF 2C 1C C7 00    .(...).. ...,...
000660:  01 CA 22 6C 6F 6F 6D 2E 62 69 6E 22 00 00 00 1A    .."loom.bin"....
000670:  65 73 74 20 74 68 65 20 6D 61 63 68 69 6E 65 20    est the machine 
000680:  28 00 0A 00 BE 20 1C 00 BF 2C FF 12 28 1C 00 A7    (.... ...,..(...
000690:  29 01 BE 20 1C 01 BF 2C 1C C7 00 01 CA 22 6C 6F    ).. ...,....."lo
0006A0:  6F 6D 2E 62 69 6E 22 00 00 00 1A 65 73 74 20 74    om.bin"....est t
0006B0:  68 65 20 6D 61 63 68 69 6E 65 20 75 70 6F 6E 20    he machine upon 
0006C0:  65 78 69 74 3A 00 27 00 14 00 BE 20 1C 00 BF 2C    exit:.'.... ...,
0006D0:  FF 12 28 1C 00 A7 29 01 BE 20 1C 01 BF 2C 1C C7    ..(...).. ...,..
0006E0:  00 01 CA 22 6C 6C 6C 2E 62 69 6E 22 00 00 00 1A    ..."lll.bin"....
0006F0:  61 70 74 65 64 20 66 72 6F 6D 20 22 4C 65 61 72    apted from "Lear
000700:  10 24 36 01 3A F5 22 D6 04 9F F5 3E 0A 21 F5 22    .$6.:."....>.!."
000710:  96 9F C1 48 B1 21 64 23 B6 1F D2 22 08 0E 04 CD    ...H.!d#..."....
000720:  A5 0B 3A F5 22 FE 04 CA 2F 08 21 66 23 36 00 3A    ..:.".../.!f#6.:
000730:  F5 22 FE 09 C2 54 08 21 66 23 36 00 3E 27 21 66    ."...T.!f#6.>'!f
000740:  23 BE DA 51 08 0E 00 CD C5 13 21 66 23 34 C2 3C    #..Q......!f#4.<
000750:  08 C3 67 08 3A F5 22 FE 0A C2 64 08 0E 1A CD C5    ..g.:."...d.....
000760:  13 C3 67 08 CD 41 1A CD 32 18 3A 6A 23 1F D2 77    ..g..A..2.:j#..w
000770:  08 01 C7 22 CD 12 1E C3 A1 07 3A 6D 23 32 7D 23    ..."......:m#2}#
000780:  C3 62 06 C9 21 20 24 70 2B 71 2A 1F 24 7D 32 7B    .b..! $p+q*.$}2{
000790:  23 7C 32 78 23 C9 11 00 00 0E 00 CD 05 00 C9 11    #|2x#...........
0007A0:  00 00 0E 01 CD 05 00 C9 21 21 24 71 3A 21 24 E6    ........!!$q:!$.
0007B0:  7F 5F 16 00 0E 02 CD 05 00 C9 0E 0D CD A8 08 0E    ._..............
0007C0:  0A CD A8 08 C9 21 23 24 70 2B 71 2A 22 24 EB 0E    .....!#$p+q*"$..
0007D0:  09 CD 05 00 C9 21 25 24 70 2B 71 CD BA 08 2A 24    .....!%$p+q...*$
0007E0:  24 44 4D CD C5 08 C9 21 7C 23 36 80 11 7C 23 0E    $DM....!|#6..|#.
0007F0:  0A CD 05 00 C9 11 00 00 0E 0C CD 05 00 C9 21 27    ..............!'
000800:  00 44 49 53 43 20 20 20 20 42 41 53 00 00 00 02    .DISC    BAS....
000810:  02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000820:  00 4C 49 4E 4B 42 41 53 45 54 58 54 00 00 00 0D    .LINKBASETXT....
000830:  03 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000840:  00 4C 4F 4F 4D 20 20 20 20 42 49 4E 00 00 00 74    .LOOM    BIN...t
000850:  05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 00    ................
000860:  00 4D 45 53 53 41 47 45 53 54 58 54 00 00 00 06    .MESSAGESTXT....
000870:  15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000880:  00 52 45 41 44 4D 45 20 20 20 20 20 00 00 00 23    .README     ...#
000890:  16 17 18 19 1A 00 00 00 00 00 00 00 00 00 00 00    ................
0008A0:  00 41 31 39 20 20 20 20 20 20 20 20 00 00 00 52    .A19        ...R
0008B0:  1B 1C 1D 1E 1F 20 21 22 23 24 25 00 00 00 00 00    ..... !"#$%.....
0008C0:  00 41 31 38 20 20 20 20 20 20 20 20 00 00 00 56    .A18        ...V
0008D0:  26 27 28 29 2A 2B 2C 2D 2E 2F 30 00 00 00 00 00    &'()*+,-./0.....
0008E0:  00 41 31 32 20 20 20 20 20 20 20 20 00 00 00 61    .A12        ...a
0008F0:  31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 00 00 00    123456789:;<=...
000900:  00 41 31 33 20 20 20 20 20 20 20 20 00 00 00 56    .A13        ...V
000910:  3E 3F 40 41 42 43 44 45 46 47 48 00 00 00 00 00    >?@ABCDEFGH.....
000920:  00 48 45 4C 50 20 20 20 20 54 58 54 00 00 00 0A    .HELP    TXT....
000930:  49 4A 00 00 00 00 00 00 00 00 00 00 00 00 00 00    IJ..............
000940:  00 41 49 34 20 20 20 20 20 42 41 53 00 00 00 16    .AI4     BAS....
000950:  4B 51 52 00 00 00 00 00 00 00 00 00 00 00 00 00    KQR.............
000960:  00 53 43 41 4E 34 36 34 20 42 41 53 00 00 00 05    .SCAN464 BAS....
000970:  4C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    L...............
000980:  00 53 43 41 4E 34 36 34 20 42 49 4E 00 00 00 0B    .SCAN464 BIN....
000990:  4D 4E 00 00 00 00 00 00 00 00 00 00 00 00 00 00    MN..............
0009A0:  00 53 43 41 4E 36 31 32 38 42 41 53 00 00 00 04    .SCAN6128BAS....
0009B0:  4F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    O...............
0009C0:  00 53 43 41 4E 36 31 32 38 42 49 4E 00 00 00 07    .SCAN6128BIN....
0009D0:  50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    P...............
0009E0:  00 41 32 30 20 20 20 20 20 20 20 20 00 00 00 50    .A20        ...P
0009F0:  53 95 96 97 98 99 9A 9B 9C 9D 00 00 00 00 00 00    S...............
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:  00 41 49 35 20 20 20 20 20 42 41 53 00 00 00 17    .AI5     BAS....
000C10:  9E 9F A1 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000C20:  00 54 55 4E 45 20 20 20 20 42 41 53 00 00 00 10    .TUNE    BAS....
000C30:  54 55 00 00 00 00 00 00 00 00 00 00 00 00 00 00    TU..............
000C40:  00 41 31 34 20 20 20 20 20 20 20 20 00 00 00 61    .A14        ...a
000C50:  56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 00 00 00    VWXYZ[\]^_`ab...
000C60:  00 41 31 34 54 31 20 20 20 20 20 20 00 00 00 19    .A14T1      ....
000C70:  63 64 65 66 00 00 00 00 00 00 00 00 00 00 00 00    cdef............
000C80:  00 41 31 35 20 20 20 20 20 20 20 20 00 00 00 63    .A15        ...c
000C90:  67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 00 00 00    ghijklmnopqrs...
000CA0:  00 34 36 34 52 53 58 20 20 42 41 53 00 00 00 07    .464RSX  BAS....
000CB0:  74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    t...............
000CC0:  00 41 49 31 20 20 20 20 20 42 41 53 00 00 00 09    .AI1     BAS....
000CD0:  75 76 00 00 00 00 00 00 00 00 00 00 00 00 00 00    uv..............
000CE0:  00 41 49 32 20 20 20 20 20 42 41 53 00 00 00 0D    .AI2     BAS....
000CF0:  77 78 00 00 00 00 00 00 00 00 00 00 00 00 00 00    wx..............
000D00:  00 41 31 36 20 20 20 20 20 20 20 20 00 00 00 58    .A16        ...X
000D10:  79 7A 7B 7C 7D 7E 7F 80 81 82 83 00 00 00 00 00    yz{|}~..........
000D20:  00 41 31 36 41 20 20 20 20 20 20 20 00 00 00 15    .A16A       ....
000D30:  84 85 86 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000D40:  00 41 31 37 20 20 20 20 20 20 20 20 00 00 00 60    .A17        ...`
000D50:  87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 00 00 00 00    ................
000D60:  00 41 49 33 20 20 20 20 20 42 41 53 00 00 00 10    .AI3     BAS....
000D70:  93 94 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000D80:  00 41 32 31 20 20 20 20 20 20 20 20 00 00 00 5E    .A21        ...^
000D90:  A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD 00 00 00 00    .£..............
000DA0:  00 4C 49 53 54 45 58 20 20 42 41 53 00 00 00 05    .LISTEX  BAS....
000DB0:  A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000DC0:  00 41 49 36 20 20 20 20 20 4C 4F 47 00 00 00 06    .AI6     LOG....
000DD0:  AE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000DE0:  00 36 34 4B 42 49 54 53 20 4C 4F 47 00 00 00 02    .64KBITS LOG....
000DF0:  AF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000E00:  46 20 72 65 61 64 6D 65 0D 0A 42 20 72 65 61 64    F readme..B read
000E10:  6D 65 20 31 33 36 20 31 34 34 20 72 65 61 64 6D    me 136 144 readm
000E20:  65 20 34 34 34 36 0D 0A 42 20 72 65 61 64 6D 65    e 4446..B readme
000E30:  20 31 30 32 39 20 31 30 33 37 20 61 30 31 20 30     1029 1037 a01 0
000E40:  0D 0A 42 20 72 65 61 64 6D 65 20 31 30 36 36 20    ..B readme 1066 
000E50:  31 30 37 34 20 61 30 32 20 30 0D 0A 42 20 72 65    1074 a02 0..B re
000E60:  61 64 6D 65 20 31 31 32 35 20 31 31 33 33 20 61    adme 1125 1133 a
000E70:  30 33 20 30 0D 0A 42 20 72 65 61 64 6D 65 20 31    03 0..B readme 1
000E80:  31 39 37 20 31 32 30 35 20 61 30 34 20 30 0D 0A    197 1205 a04 0..
000E90:  42 20 72 65 61 64 6D 65 20 31 32 36 30 20 31 32    B readme 1260 12
000EA0:  36 38 20 61 30 35 20 30 0D 0A 42 20 72 65 61 64    68 a05 0..B read
000EB0:  6D 65 20 31 33 30 36 20 31 33 31 34 20 61 30 36    me 1306 1314 a06
000EC0:  20 30 0D 0A 42 20 72 65 61 64 6D 65 20 31 33 35     0..B readme 135
000ED0:  33 20 31 33 36 31 20 61 30 37 20 30 0D 0A 42 20    3 1361 a07 0..B 
000EE0:  72 65 61 64 6D 65 20 31 34 31 35 20 31 34 32 33    readme 1415 1423
000EF0:  20 61 30 38 20 30 0D 0A 42 20 72 65 61 64 6D 65     a08 0..B readme
000F00:  20 31 34 36 30 20 31 34 36 38 20 61 30 39 20 30     1460 1468 a09 0
000F10:  0D 0A 42 20 72 65 61 64 6D 65 20 31 34 38 35 20    ..B readme 1485 
000F20:  31 34 39 34 20 61 31 30 20 30 0D 0A 42 20 72 65    1494 a10 0..B re
000F30:  61 64 6D 65 20 31 35 32 37 20 31 35 33 36 20 61    adme 1527 1536 a
000F40:  31 31 20 30 0D 0A 42 20 72 65 61 64 6D 65 20 31    11 0..B readme 1
000F50:  36 34 31 20 31 36 35 30 20 61 31 32 20 30 0D 0A    641 1650 a12 0..
000F60:  42 20 72 65 61 64 6D 65 20 31 37 30 36 20 31 37    B readme 1706 17
000F70:  31 35 20 61 31 33 20 30 0D 0A 42 20 72 65 61 64    15 a13 0..B read
000F80:  6D 65 20 31 37 37 39 20 31 37 38 38 20 61 31 34    me 1779 1788 a14
000F90:  20 30 0D 0A 42 20 72 65 61 64 6D 65 20 31 38 35     0..B readme 185
000FA0:  36 20 31 38 36 35 20 61 31 35 20 30 0D 0A 42 20    6 1865 a15 0..B 
000FB0:  72 65 61 64 6D 65 20 31 39 31 36 20 31 39 32 35    readme 1916 1925
000FC0:  20 61 31 36 20 30 0D 0A 42 20 72 65 61 64 6D 65     a16 0..B readme
000FD0:  20 31 39 38 33 20 31 39 39 32 20 61 31 37 20 30     1983 1992 a17 0
000FE0:  0D 0A 42 20 72 65 61 64 6D 65 20 32 30 34 30 20    ..B readme 2040 
000FF0:  32 30 34 39 20 61 31 38 20 30 0D 0A 42 20 72 65    2049 a18 0..B re
001000:  00 41 49 37 20 20 20 20 20 4C 4F 47 00 00 00 06    .AI7     LOG....
001010:  B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
001020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0010A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0010B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0010C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0010D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0010E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0010F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0011A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0011B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0011C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0011D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0011E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0011F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001200:  61 64 6D 65 20 32 31 30 37 20 32 31 31 36 20 61    adme 2107 2116 a
001210:  31 39 20 30 0D 0A 42 20 72 65 61 64 6D 65 20 32    19 0..B readme 2
001220:  31 36 34 20 32 31 37 33 20 61 32 30 20 30 0D 0A    164 2173 a20 0..
001230:  42 20 72 65 61 64 6D 65 20 32 32 32 32 20 32 32    B readme 2222 22
001240:  33 31 20 61 32 31 20 30 0D 0A 42 20 61 30 31 20    31 a21 0..B a01 
001250:  39 32 36 20 39 33 33 20 61 30 31 20 38 35 31 39    926 933 a01 8519
001260:  0D 0A 42 20 61 30 32 20 38 39 31 20 39 30 31 20    ..B a02 891 901 
001270:  61 30 32 20 38 32 38 39 0D 0A 42 20 61 30 32 20    a02 8289..B a02 
001280:  33 30 31 30 20 33 30 32 31 20 61 30 32 20 39 30    3010 3021 a02 90
001290:  34 39 0D 0A 42 20 61 30 33 20 31 37 39 31 20 31    49..B a03 1791 1
0012A0:  37 39 38 20 61 30 33 20 39 34 34 30 0D 0A 42 20    798 a03 9440..B 
0012B0:  61 30 33 20 33 35 39 38 20 33 36 30 37 20 61 30    a03 3598 3607 a0
0012C0:  33 20 39 38 34 35 0D 0A 42 20 61 30 33 20 38 38    3 9845..B a03 88
0012D0:  30 38 20 38 38 31 38 20 61 30 33 20 31 30 33 32    08 8818 a03 1032
0012E0:  34 0D 0A 42 20 61 30 34 20 35 32 37 20 35 33 38    4..B a04 527 538
0012F0:  20 61 30 34 20 38 30 31 31 0D 0A 42 20 61 30 34     a04 8011..B a04
001300:  20 34 37 34 34 20 34 37 35 35 20 61 30 34 20 38     4744 4755 a04 8
001310:  35 34 33 0D 0A 42 20 61 30 34 20 34 37 37 34 20    543..B a04 4774 
001320:  34 37 38 37 20 61 30 34 20 31 30 31 30 34 0D 0A    4787 a04 10104..
001330:  42 20 61 30 35 20 36 33 36 20 36 34 33 20 61 30    B a05 636 643 a0
001340:  35 20 31 31 31 37 38 0D 0A 42 20 61 30 36 20 31    5 11178..B a06 1
001350:  31 35 31 20 31 31 35 39 20 61 30 36 20 38 38 37    151 1159 a06 887
001360:  39 0D 0A 42 20 61 30 36 20 32 39 39 33 20 32 39    9..B a06 2993 29
001370:  39 37 20 61 30 36 20 38 30 39 38 0D 0A 42 20 61    97 a06 8098..B a
001380:  30 36 20 33 30 30 32 20 33 30 30 32 20 61 30 36    06 3002 3002 a06
001390:  20 38 30 39 38 0D 0A 42 20 61 30 37 20 33 35 31     8098..B a07 351
0013A0:  20 33 35 39 20 61 30 37 20 37 38 33 39 0D 0A 42     359 a07 7839..B
0013B0:  20 61 30 37 20 32 31 38 34 20 32 31 39 32 20 61     a07 2184 2192 a
0013C0:  30 37 20 37 38 33 39 0D 0A 42 20 61 30 37 20 34    07 7839..B a07 4
0013D0:  32 31 34 20 34 32 32 32 20 61 30 37 20 39 31 33    214 4222 a07 913
0013E0:  30 0D 0A 42 20 61 30 38 20 35 34 39 20 35 35 36    0..B a08 549 556
0013F0:  20 61 30 38 20 31 30 33 33 33 0D 0A 42 20 61 30     a08 10333..B a0
001400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
001410:  01 00 01 00 02 09 4E E5 01 00 C7 02 00 00 00 02    ......N.........
001420:  01 00 C3 02 00 00 00 02 01 00 C8 02 00 00 00 02    ................
001430:  01 00 C4 02 00 00 00 02 01 00 C9 02 00 00 00 02    ................
001440:  01 00 C5 02 00 00 00 02 01 00 C1 02 00 00 00 02    ................
001450:  01 00 C6 02 00 00 00 02 01 00 C2 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:  ED 5B DD A1 CD 99 01 7D B4 CA D5 09 2A DF A1 CD    .[.....}....*...
001510:  4B 02 22 DD A1 21 DF A1 01 FE FF CD 72 02 18 CC    K."..!......r...
001520:  2A DD A1 C3 BE 00 18 FB 6C 69 6E 6B 62 61 73 65    *.......linkbase
001530:  2E 74 78 74 00 68 65 6C 70 2E 74 78 74 00 6D 65    .txt.help.txt.me
001540:  73 73 61 67 65 73 2E 74 78 74 00 21 00 00 CD 8F    ssages.txt.!....
001550:  00 DD 6E 04 DD 66 05 11 03 00 19 11 04 00 CD 50    ..n..f.........P
001560:  01 11 01 00 19 22 40 A1 2A F0 A1 22 42 A1 11 00    ....."@.*.."B...
001570:  00 CD 88 01 7D B4 CA 5E 0A 21 D9 63 22 42 A1 22    ....}..^.!.c"B."
001580:  F0 A1 2A 42 A1 11 00 00 19 E5 2A 42 A1 CD 6A 02    ..*B......*B..j.
001590:  2A 42 A1 11 02 00 19 E5 21 59 0F CD 6A 02 2A 42    *B......!Y..j.*B
0015A0:  A1 11 00 00 19 CD 4B 02 22 44 A1 21 01 00 7D B4    ......K."D.!..}.
0015B0:  CA 3C 0B 2A 44 A1 11 02 00 19 CD 4B 02 ED 5B 40    .<.*D......K..[@
0015C0:  A1 CD B6 01 7D B4 CA 12 0B 2A 44 A1 11 02 00 19    ....}....*D.....
0015D0:  CD 4B 02 ED 5B 40 A1 CD 88 01 7D B4 CA B7 0A 2A    .K..[@....}....*
0015E0:  42 A1 11 00 00 19 E5 2A 44 A1 11 00 00 19 CD 4B    B......*D......K
0015F0:  02 CD 6A 02 C3 F2 0A 2A 44 A1 11 02 00 19 E5 CD    ..j....*D.......
001600:  4B 02 ED 5B 40 A1 B7 ED 52 CD 6A 02 2A 44 A1 11    K..[@...R.j.*D..
001610:  02 00 19 CD 4B 02 11 04 00 CD 0B 01 EB 2A 44 A1    ....K........*D.
001620:  19 22 44 A1 2A 44 A1 11 02 00 19 E5 2A 40 A1 CD    ."D.*D......*@..
001630:  6A 02 2A 42 A1 22 F0 A1 2A 46 A1 ED 5B 40 A1 B7    j.*B."..*F..[@..
001640:  ED 52 22 46 A1 2A 44 A1 11 04 00 19 11 02 00 C3    .R"F.*D.........
001650:  C4 00 2A 44 A1 ED 5B F0 A1 CD 88 01 7D B4 CA 26    ..*D..[.....}..&
001660:  0B 21 00 00 18 E6 2A 44 A1 22 42 A1 2A 44 A1 11    .!....*D."B.*D..
001670:  00 00 19 CD 4B 02 22 44 A1 C3 6B 0A 18 CE 21 FC    ....K."D..k...!.
001680:  FF CD 8F 00 DD 6E 06 DD 66 07 11 04 00 B7 ED 52    .....n..f......R
001690:  11 02 00 19 CD 4B 02 DD 75 FE DD 74 FF DD 6E 04    .....K..u..t..n.
0016A0:  DD 66 05 E5 CD 0B 0A DD 75 FC DD 74 FD DD 6E FC    .f......u..t..n.
0016B0:  DD 66 FD 11 00 00 CD 88 01 7D B4 CA 87 0B 21 00    .f.......}....!.
0016C0:  00 11 04 00 C3 C4 00 DD 6E FC DD 66 FD E5 DD 6E    ........n..f...n
0016D0:  06 DD 66 07 E5 DD 6E FE DD 66 FF 11 01 00 B7 ED    ..f...n..f......
0016E0:  52 11 04 00 CD 0B 01 E5 CD 2E 02 DD 6E 06 DD 66    R...........n..f
0016F0:  07 E5 CD 92 36 DD 6E FC DD 66 FD 18 C4 18 C2 21    ....6.n..f.....!
001700:  D1 E5 F5 21 00 00 7B C9 CD BE 01 CD 88 00 D0 23    ...!..{........#
001710:  C9 CD BE 01 CD DD 01 D8 18 0F CD BE 01 FE 41 3F    ..............A?
001720:  D0 FE 5B D0 23 C9 CD BE 01 C6 E0 18 F0 CD BE 01    ..[.#...........
001730:  CD F6 01 C0 23 C9 FE 20 C8 FE 0A C8 FE 09 C9 CD    ....#.. ........
001740:  BE 01 CD DD 01 EB D0 C6 20 6F C9 CD BE 01 CD E9    ........ o......
001750:  01 EB D0 6F C9 EB 21 00 00 1A B7 C8 13 23 18 F9    ...o..!......#..
001760:  F1 C1 D1 E1 F5 1A ED A0 2B 77 23 E0 18 F7 F1 C1    ........+w#.....
001770:  E1 D1 F5 78 B1 C8 ED 52 19 38 03 ED B0 C9 0B 09    ...x...R.8......
001780:  EB 09 EB 03 ED B8 C9 DD E5 C1 09 7E 23 66 6F C9    ...........~#fo.
001790:  DD E5 C1 09 6E 26 00 C9 DD E5 C1 EB 09 73 23 72    ....n&.......s#r
0017A0:  EB C9 DD E5 C1 EB 09 73 EB C9 D1 EB E3 73 23 72    .......s.....s#r
0017B0:  EB C9 5E 23 56 EB 09 EB 72 2B 73 EB C9 5E 23 56    ..^#V...r+s..^#V
0017C0:  D5 EB 09 EB 72 2B 73 E1 C9 EB E1 CD 4B 02 4E 23    ....r+s.....K.N#
0017D0:  46 23 78 B1 28 0C 7E 23 BB 7E 23 20 F1 BA 20 EE    F#x.(.~#.~# .. .
0017E0:  60 69 E9 19 C9 B7 ED 52 C9 21 00 00 1A CD 88 00    `i.....R.!......
0017F0:  D0 D6 30 13 D5 29 5D 54 29 29 19 5F 16 00 19 D1    ..0..)]T))._....
001800:  18 EA D5 59 50 CD 50 01 E3 7B C6 30 FE 3A 38 02    ...YP.P..{.0.:8.
001810:  C6 07 2B 77 E3 7D B4 20 EA E1 C9 E5 CB 7C 28 03    ..+w.}. .....|(.
001820:  CD FB 00 CD C2 02 D1 CB 7A C8 2B 36 2D C9 E5 D5    ........z.+6-...
001830:  C5 6F E5 2A 81 08 E5 CD 4C 00 C1 D1 E1 C9 E5 2A    .o.*....L......*
001840:  81 08 77 23 22 81 08 E1 C9 21 FE 02 18 03 21 EE    ..w#"....!....!.
001850:  02 CD 28 04 18 0B 21 82 00 22 7F 08 D1 E1 E5 D5    ..(...!.."......
001860:  39 C5 5E 23 56 2B 2B E5 3E C3 32 7E 08 1A 13 B7    9.^#V++.>.2~....
001870:  28 0F FE 25 20 06 1A FE 25 20 12 13 CD 7E 08 18    (..% ...% ...~..
001880:  EC 2A 7F 08 3E FE 95 CC FE 02 C3 11 05 D5 21 20    .*..>.........! 
001890:  06 22 6F 08 AF 6F 67 22 71 08 1A FE 2D 3E 01 20    ."o..og"q...->. 
0018A0:  02 AF 13 32 6E 08 1A FE 30 20 05 13 32 6F 08 1A    ...2n...0 ..2o..
0018B0:  CD 88 00 30 03 CD A9 02 22 73 08 1A FE 2E 20 0A    ...0...."s.... .
0018C0:  32 72 08 13 CD A9 02 22 70 08 CD 3D 04 21 7D 08    2r....."p..=.!}.
0018D0:  F5 70 EB FE 64 28 1F FE 75 28 28 0B 0B FE 6F 28    .p..d(..u((...o(
0018E0:  22 01 10 00 FE 78 28 1B FE 73 28 1A FE 63 28 0B    "....x(..s(..c(.
0018F0:  D1 D1 D1 C3 2D 03 CD DB 02 18 0B 1B EB 73 11 01    ....-........s..
001900:  FC FF CD 8F 00 21 00 00 DD 75 FE DD 74 FF DD 6E    .....!...u..t..n
001910:  FE DD 66 FF 11 0C 00 CD 99 01 7D B4 CA 25 0C C3    ..f.......}..%..
001920:  F1 0B 21 FE FF DD E5 C1 09 01 01 00 CD 7D 02 18    ..!..........}..
001930:  DD 21 00 00 DD 75 FC DD 74 FD DD 6E 04 DD 66 05    .!...u..t..n..f.
001940:  EB DD 6E FC DD 66 FD CD 99 01 7D B4 CA 23 0C C3    ..n..f....}..#..
001950:  21 0C 21 FC FF DD E5 C1 09 01 01 00 CD 7D 02 18    !.!..........}..
001960:  D9 18 EF 18 BD 11 02 00 C3 C4 00 21 00 00 CD 8F    ...........!....
001970:  00 21 1F 00 E5 CD 6D 00 DD 6E 06 DD 66 07 E5 CD    .!....m..n..f...
001980:  6D 00 DD 6E 04 DD 66 05 E5 CD 6D 00 11 04 00 C3    m..n..f...m.....
001990:  C4 00 21 00 00 CD 8F 00 21 0C 00 E5 CD 6D 00 11    ..!.....!....m..
0019A0:  00 00 C3 C4 00 21 00 00 CD 8F 00 DD 6E 04 DD 66    .....!......n..f
0019B0:  05 11 01 00 CD 88 01 7D B4 CA 82 0C CD 81 BB C3    .......}........
0019C0:  85 0C CD 84 BB 11 02 00 C3 C4 00 21 00 00 CD 8F    ...........!....
0019D0:  00 21 0E 00 E5 CD 6D 00 DD 6E 04 DD 66 05 E5 CD    .!....m..n..f...
0019E0:  6D 00 11 02 00 C3 C4 00 21 00 00 CD 8F 00 21 0F    m.......!.....!.
0019F0:  00 E5 CD 6D 00 DD 6E 04 DD 66 05 E5 CD 6D 00 11    ...m..n..f...m..
001A00:  02 00 C3 C4 00 21 00 00 CD 8F 00 21 1A 00 E5 CD    .....!.....!....
001A10:  6D 00 DD 6E 0A DD 66 0B 11 01 00 B7 ED 52 E5 CD    m..n..f......R..
001A20:  6D 00 DD 6E 06 DD 66 07 11 01 00 B7 ED 52 E5 CD    m..n..f......R..
001A30:  6D 00 DD 6E 08 DD 66 09 11 01 00 B7 ED 52 E5 CD    m..n..f......R..
001A40:  6D 00 DD 6E 04 DD 66 05 11 01 00 B7 ED 52 E5 CD    m..n..f......R..
001A50:  6D 00 11 08 00 C3 C4 00 21 00 00 CD 8F 00 DD 6E    m.......!......n
001A60:  04 DD 66 05 7D B4 CA 42 0D C3 30 0D 0A 25 73 00    ..f.}..B..0..%s.
001A70:  21 2C 0D E5 2A 58 A1 E5 01 06 00 C5 CD 16 03 CD    !,..*X..........
001A80:  55 00 C3 01 BF 11 02 00 C3 C4 00 21 00 00 CD 8F    U..........!....
001A90:  00 DD 6E 06 DD 66 07 6E 26 00 E5 CD 0B 02 E5 DD    ..n..f.n&.......
001AA0:  6E 04 DD 66 05 6E 26 00 E5 CD 0B 02 EB E1 CD 88    n..f.n&.........
001AB0:  01 7D B4 CA CE 0D DD 6E 06 DD 66 07 6E 26 00 CD    .}.....n..f.n&..
001AC0:  03 01 7D B4 CA B2 0D DD 6E 04 DD 66 05 6E 26 00    ..}.....n..f.n&.
001AD0:  CD 03 01 7D B4 CA A4 0D 21 00 00 11 04 00 C3 C4    ...}....!.......
001AE0:  00 C3 B2 0D DD 6E 04 DD 66 05 6E 26 00 CD FB 00    .....n..f.n&....
001AF0:  18 E9 21 06 00 DD E5 C1 09 01 01 00 CD 72 02 21    ..!..........r.!
001B00:  00 18 0E CD C2 02 E5 AF 11 FF FF 13 BE 23 20 FB    .............# .
001B10:  E1 F1 E5 FE 73 20 13 3A 72 08 B7 28 0D D5 2A 70    ....s .:r..(..*p
001B20:  08 E5 CD B0 01 E1 D1 30 01 EB 2A 73 08 2B B7 ED    .......0..*s.+..
001B30:  52 23 F2 F8 03 21 00 00 44 4D AF 2A 6E 08 B5 C4    R#...!..DM.*n...
001B40:  1E 04 E1 7B B2 28 08 1B 7E 23 CD 7E 08 18 F4 2A    ...{.(..~#.~...*
001B50:  6E 08 B5 CC 1E 04 D1 E1 E1 2B 2B E5 18 95 78 B1    n........++...x.
001B60:  C8 7C CD 7E 08 0B 18 F6 22 7F 08 D1 F1 E1 E5 F5    .|.~....".......
001B70:  39 D5 5E 23 56 ED 53 81 08 2B 2B 2B C9 1A FE 61    9.^#V.S..+++...a
001B80:  30 02 C6 20 FE 6C 20 01 13 C1 F1 E1 E5 F5 1A FE    0.. .l .........
001B90:  61 30 02 C6 20 13 D5 C5 56 2B 5E 01 0A 00 C9 E5    a0.. ...V+^.....
001BA0:  2A 81 08 7E 23 22 81 08 E1 C9 E5 D5 C5 2A 81 08    *..~#".......*..
001BB0:  E5 CD 49 00 7D C1 D1 E1 C9 E5 2A 81 08 2B 77 22    ..I.}.....*..+w"
001BC0:  81 08 E1 C9 E5 D5 C5 6F 26 00 E5 2A 81 08 E5 CD    .......o&..*....
001BD0:  6A 00 C1 D1 E1 C9 21 5F 04 11 79 04 18 06 21 6A    j.....!_..y...!j
001BE0:  04 11 84 04 ED 53 7C 08 CD 28 04 18 17 21 6A 04    .....S|..(...!j.
001BF0:  22 7F 08 21 84 04 22 7C 08 21 00 00 22 81 08 D1    "..!.."|.!.."...
001C00:  E1 E5 D5 39 C5 5E 23 56 2B 2B E5 3E C3 32 7E 08    ...9.^#V++.>.2~.
001C10:  32 7B 08 21 00 00 22 6E 08 1A 13 B7 28 2F CD F6    2{.!.."n....(/..
001C20:  01 20 0D CD 7E 08 CD F6 01 28 F8 CD 7B 08 18 E9    . ..~....(..{...
001C30:  FE 25 28 27 6F CD 7E 08 BD 28 DE FE FF 20 0B ED    .%('o.~..(... ..
001C40:  5B 6E 08 7A B3 20 0A 1B 18 07 CD 7B 08 ED 5B 6E    [n.z. .....{..[n
001C50:  08 E1 C1 E1 E3 39 F1 F9 F5 EB C9 D5 21 FF FF 1A    .....9......!...
001C60:  D6 2A 32 70 08 20 01 13 1A CD 88 00 DC A9 02 22    .*2p. ........."
001C70:  71 08 CD 3D 04 FE 68 28 2F FE 64 28 2B 0B 0B FE    q..=..h(/.d(+...
001C80:  6F 28 25 FE 78 28 0C FE 63 28 65 FE 73 28 6F D1    o(%.x(..c(e.s(o.
001C90:  D1 18 BA CD 7E 08 FE 30 20 09 CD 7E 08 FE 78 28    ....~..0 ..~..x(
001CA0:  05 FE 58 C4 7B 08 CB 21 F5 D5 50 59 60 68 ED 4B    ..X.{..!..PY`h.K
001CB0:  71 08 78 B1 28 27 0B CD 7E 08 F5 D6 30 38 1A FE    q.x.('..~...08..
001CC0:  0A 38 0B D6 11 38 12 E6 1F C6 0A BB 30 0B C5 4F    .8...8......0..O
001CD0:  42 CD 1D 01 09 C1 F1 18 D9 F1 CD 7B 08 D1 C1 3A    B..........{...:
001CE0:  70 08 B7 28 4D EB 73 3E 68 B8 28 36 23 72 18 32    p..(M.s>h.(6#r.2
001CF0:  CD 7E 08 6F 3A 70 08 B7 28 38 7D 12 18 24 ED 4B    .~.o:p..(8}..$.K
001D00:  04 00 DD E5 C1 09 01 01 00 CD 72 02 18 83 DD 6E    ..........r....n
001D10:  06 DD 66 07 6E 26 00 E5 CD 0B 02 E5 DD 6E 04 DD    ..f.n&.......n..
001D20:  66 05 6E 26 00 E5 CD 0B 02 EB E1 B7 ED 52 18 AB    f.n&.........R..
001D30:  18 A9 21 00 00 CD 8F 00 DD 6E 04 DD 66 05 22 EE    ..!......n..f.".
001D40:  A1 2A EE A1 CD D4 BC AF CD 1B 00 11 02 00 C3 C4    .*..............
001D50:  00 21 00 00 CD 8F 00 DD 6E 04 DD 66 05 22 EE A1    .!......n..f."..
001D60:  2A EE A1 7E CD 2B BD 38 08 21 EE A1 36 00 23 36    *..~.+.8.!..6.#6
001D70:  00 2A EE A1 11 02 00 C3 C4 00 18 F8 21 00 00 CD    .*..........!...
001D80:  8F 00 DD 6E 08 DD 66 09 22 D5 63 21 06 00 DD E5    ...n..f.".c!....
001D90:  C1 09 01 FF FF CD 72 02 11 00 00 CD 98 01 7D B4    ......r.......}.
001DA0:  CA 7D 0E DD 6E 04 DD 66 05 E5 CD 49 00 22 D7 63    .}..n..f...I.".c
001DB0:  11 FF 00 CD 91 01 7D B4 28 03 21 01 00 7D B4 CA    ......}.(.!..}..
001DC0:  92 0E 2A D7 63 11 0D 00 CD 91 01 7D B4 28 03 21    ..*.c......}.(.!
001DD0:  01 00 7D B4 CA AB 0E 21 D5 63 01 01 00 CD 7D 02    ..}....!.c....}.
001DE0:  E5 2A D7 63 D1 7D 12 26 00 18 A0 2A D5 63 E5 21    .*.c.}.&...*.c.!
001DF0:  00 00 D1 7D 12 26 00 2A D7 63 11 0D 00 CD 88 01    ...}.&.*.c......
001E00:  7D B4 CA D2 0E DD 6E 04 DD 66 05 E5 CD 49 00 22    }.....n..f...I."
001E10:  D7 63 2A D7 63 11 FF 00 CD 88 01 7D B4 CA F4 0E    .c*.c......}....
001E20:  DD 6E 08 DD 66 09 EB 2A D5 63 CD 88 01 7D B4 28    .n..f..*.c...}.(
001E30:  03 21 01 00 7D B4 CA FF 0E 21 00 00 C3 05 0F DD    .!..}....!......
001E40:  6E 08 DD 66 09 11 06 00 C3 C4 00 18 F8 21 FE FF    n..f.........!..
001E50:  CD 8F 00 21 0A 00 E5 CD 0B 0A DD 75 FE DD 74 FF    ...!.......u..t.
001E60:  11 00 00 CD 88 01 7D B4 CA 4B 0F C3 32 0F 25 73    ......}..K..2.%s
001E70:  0A 00 21 2E 0F E5 2A 4A A1 E5 01 06 00 C5 CD 16    ..!...*J........
001E80:  03 21 01 00 E5 CD 37 38 C3 5C 0F DD 6E FE DD 66    .!....78.\..n..f
001E90:  FF 11 00 00 19 E5 21 00 00 CD 6A 02 DD 6E FE DD    ......!...j..n..
001EA0:  66 FF 11 00 00 C3 C4 00 18 F8 21 FE FF CD 8F 00    f.........!.....
001EB0:  21 0A 00 E5 CD 0B 0A DD 75 FE DD 74 FF 11 00 00    !.......u..t....
001EC0:  CD 88 01 7D B4 CA A8 0F C3 8F 0F 25 73 0A 00 21    ...}.......%s..!
001ED0:  8B 0F E5 2A 4C A1 E5 01 06 00 C5 CD 16 03 21 01    ...*L.........!.
001EE0:  00 E5 CD 37 38 C3 93 10 DD 6E FE DD 66 FF 11 02    ...78....n..f...
001EF0:  00 19 E5 DD 6E 0C DD 66 0D 11 02 00 19 CD 4B 02    ....n..f......K.
001F00:  71 08 CD 7E 08 CD F6 01 20 05 CD 7B 08 18 0F 6F    q..~.... ..{...o
001F10:  3A 70 08 B7 28 03 7D 12 13 0B 78 B1 20 E4 2E 00    :p..(.}...x. ...
001F20:  18 D2 2A 6E 08 23 22 6E 08 D1 E1 E1 2B 2B E5 C3    ..*n.#"n....++..
001F30:  D9 04 D1 E1 18 F9 00 00 00 21 00 00 E5 CD 49 00    .........!....I.
001F40:  7D C9 2A DA 08 7E 23 22 DA 08 6F 26 FF BC C8 24    }.*..~#"..o&...$
001F50:  B7 C0 06 50 CD 45 06 EB CD 7C 00 FE 7F 28 13 CD    ...P.E...|...(..
001F60:  82 00 7D 12 13 FE 0A 28 05 3C 28 02 10 EA AF 12    ..}....(.<(.....
001F70:  18 D0 3E 50 B8 28 E1 1B 04 3E 08 CD 82 00 3E 10    ..>P.(...>....>.
001F80:  CD 82 00 18 D3 21 89 08 36 00 22 DA 08 C9 2F C6    .....!..6.".../.
001F90:  21 91 63 01 64 3E D1 F9 D5 36 00 5D 54 13 ED B0    !.c.d>...6.]T...
001FA0:  21 30 39 18 02 ED B0 4E 23 46 23 5E 23 56 23 78    !09....N#F#^#V#x
001FB0:  B1 20 F2 CD 52 00 CD B8 1F C3 64 00 52 20 50 52    . ..R.....d.R PR
001FC0:  F7 A1 F7 A1 1A 13 ED A1 C0 E0 18 F8 C5 DD E5 21    ...............!
001FD0:  E5 08 06 0B 36 00 10 FC CD 84 BB CD 7B BB DD E1    ....6.......{...
001FE0:  C1 C3 85 00 D1 E1 7D D5 C3 5A BB D1 E1 7D D5 F5    ......}..Z...}..
001FF0:  3E 00 CD 24 08 F1 FE 0A 20 07 3E 0D CD 5A BB 3E    >..$.... .>..Z.>
002000:  0A CD 5A BB C9 CD 81 BB CD 06 BB CD 84 BB FE 0D    ..Z.............
002010:  20 02 3E 0A 6F 26 00 FE 1A C0 21 FF FF 7D C9 CD     .>.o&....!..}..
002020:  06 BB 6F 26 00 C9 CD 09 BB 21 00 00 38 02 AF C9    ..o&.....!..8...
002030:  CD 0C BB 2C C9 CD 09 BB 21 00 00 3F D8 FE FC 37    ...,....!..?...7
002040:  C0 2C 3F C9 D1 E1 7D E1 D5 B7 FA 4F 07 FE 08 28    .,?...}....O...(
002050:  1C 38 12 FE 09 20 38 7D DD E5 CD 95 BC DD E1 D8    .8... 8}........
002060:  CD 92 BC 18 2A CD 24 08 7D CD 5A BB C9 7D CD 2B    ....*.$.}.Z..}.+
002070:  BD D8 18 F9 E1 D1 7B E5 21 E5 08 5F AF 57 19 BE    ......{.!.._.W..
002080:  28 04 5E 77 EB C9 7B B7 CA 02 06 FE 0A 28 04 21    (.^w..{......(.!
002090:  FF FF C9 DD E5 CD 80 BC DD E1 6F 26 00 D8 CD 7D    ..........o&...}
0020A0:  BC 18 EC F1 D1 E1 F5 00 7B FE 0B D0 7A B7 C0 7D    ........{...z..}
0020B0:  21 E5 08 19 77 C9 D1 E1 7D D5 21 8A 4C FE 09 28    !...w...}.!.L..(
0020C0:  12 FE 0A 20 CA DD E5 CB 86 CD 7A BC DD E1 30 BF    ... ......z...0.
0020D0:  B7 18 78 DD E5 CB 8E CB 56 20 02 CB 86 CD 8F BC    ..x.....V ......
0020E0:  18 EA AF 21 E5 08 77 21 EF 08 77 21 8A 4C 77 2A    ...!..w!..w!.Lw*
0020F0:  80 06 22 82 06 3E 09 CD 7A 07 3E 0A C3 7A 07 F1    .."..>..z.>..z..
002100:  2E 6C 6F 67 20 30 0D 0A 42 20 61 32 31 20 31 31    .log 0..B a21 11
002110:  36 39 37 20 31 31 37 30 33 20 61 69 37 2E 6C 6F    697 11703 ai7.lo
002120:  67 20 30 0D 0A 1A 0D 0A 42 20 72 65 61 64 6D 65    g 0.....B readme
002130:  20 31 30 32 39 20 31 30 33 37 20 61 30 31 20 30     1029 1037 a01 0
002140:  0D 0A 42 20 72 65 61 64 6D 65 20 31 30 36 36 20    ..B readme 1066 
002150:  31 30 37 34 20 61 30 32 20 30 0D 0A 42 20 72 65    1074 a02 0..B re
002160:  61 64 6D 65 20 31 31 32 35 20 31 31 33 33 20 61    adme 1125 1133 a
002170:  30 33 20 30 0D 0A 42 20 72 65 61 64 6D 65 20 31    03 0..B readme 1
002180:  33 32 20 35 34 30 20 61 31 31 20 39 30 37 39 0D    32 540 a11 9079.
002190:  0A 42 20 61 31 32 20 33 38 31 30 20 33 38 31 38    .B a12 3810 3818
0021A0:  20 61 31 32 20 31 30 35 31 31 0D 0A 42 20 61 31     a12 10511..B a1
0021B0:  32 20 38 34 35 34 20 38 34 36 30 20 61 31 32 20    2 8454 8460 a12 
0021C0:  31 31 37 36 38 0D 0A 42 20 61 31 33 20 32 30 37    11768..B a13 207
0021D0:  35 20 32 30 38 33 20 61 31 33 20 36 33 30 32 0D    5 2083 a13 6302.
0021E0:  0A 42 20 61 31 33 20 32 38 30 34 20 32 38 31 31    .B a13 2804 2811
0021F0:  20 61 31 33 20 35 39 37 31 0D 0A 42 20 61 31 34     a13 5971..B a14
002200:  20 31 33 36 34 20 31 33 37 30 20 61 31 34 74 31     1364 1370 a14t1
002210:  20 30 0D 0A 42 20 61 31 35 20 35 30 32 37 20 35     0..B a15 5027 5
002220:  30 33 35 20 34 36 34 72 73 78 2E 62 61 73 20 30    035 464rsx.bas 0
002230:  0D 0A 42 20 61 31 36 20 35 34 33 20 35 34 39 20    ..B a16 543 549 
002240:  61 69 31 2E 62 61 73 20 30 0D 0A 42 20 61 31 36    ai1.bas 0..B a16
002250:  20 39 35 32 20 39 35 39 20 61 31 36 20 31 30 35     952 959 a16 105
002260:  31 34 0D 0A 42 20 61 31 36 20 31 30 34 34 34 20    14..B a16 10444 
002270:  31 30 34 36 34 20 61 31 36 61 20 30 0D 0A 42 20    10464 a16a 0..B 
002280:  61 31 36 61 20 34 36 39 20 34 37 35 20 61 69 32    a16a 469 475 ai2
002290:  2E 62 61 73 20 30 0D 0A 42 20 61 31 37 20 33 37    .bas 0..B a17 37
0022A0:  30 39 20 33 37 31 36 20 61 31 37 20 31 30 39 30    09 3716 a17 1090
0022B0:  35 0D 0A 42 20 61 31 37 20 35 30 31 31 20 35 30    5..B a17 5011 50
0022C0:  31 38 20 61 31 37 20 31 31 35 39 34 0D 0A 42 20    18 a17 11594..B 
0022D0:  61 32 31 20 34 33 32 32 20 34 33 32 38 20 61 69    a21 4322 4328 ai
0022E0:  36 2E 6C 6F 67 20 30 0D 0A 42 20 61 32 31 20 34    6.log 0..B a21 4
0022F0:  33 33 34 20 34 33 34 34 20 36 34 6B 62 69 74 73    334 4344 64kbits
002300:  D1 E1 F5 D5 E5 CD 15 02 45 E1 D1 1A ED 5B 8A 4C    ........E....[.L
002310:  16 01 DD E5 FE 72 28 08 15 FE 77 28 13 B7 18 29    .....r(...w(...)
002320:  CB 43 20 25 CB C3 D5 ED 5B 80 06 CD 77 BC 18 18    .C %....[...w...
002330:  CB 4B 20 15 CB 53 20 06 CB 43 20 0D CB C3 CB CB    .K ..S ..C .....
002340:  D5 ED 5B 82 06 CD 8C BC D1 DD E1 21 00 00 D0 7B    ..[........!...{
002350:  32 8A 4C 3E 09 82 6F C9 D1 E1 D5 22 82 06 21 8A    2.L>..o...."..!.
002360:  4C CB D6 C9 E5 CD B4 BB E1 C9 ED B0 E1 D1 44 4D    L.............DM
002370:  CD 98 BC C3 A2 07 0E FF 21 3E 08 C3 16 BD 60 69    ........!>....`i
002380:  CD 46 39 CD 50 06 C7 C9 DD E5 C1 09 6E 26 00 C9    .F9.P.......n&..
002390:  00 02 00 71 4D 71 4D 02 6C 69 73 74 20 20 20 20    ...qMqM.list    
0023A0:  00 BC 4D 00 00 73 23 00 00 00 00 8A 08 63 09 EB    ..M..s#......c..
0023B0:  72 2B 73 EB C9 5E 23 56 D5 EB 09 EB 72 2B 73 E1    r+s..^#V....r+s.
0023C0:  01 00 26 00 C3 81 23 FE 36 FF 00 6E 63 6C 75 64    ..&...#.6..nclud
0023D0:  65 0A 00 01 09 D1 CD 89 02 E5 CD 90 01 05 E5 CD    e...............
0023E0:  E8 22 D1 D1 D1 EB 60 69 73 CD 90 01 09 E5 CD 90    ."....`is.......
0023F0:  01 07 E5 CD 90 01 09 D1 CD 29 02 E5 CD 90 01 05    .........)......
002400:  E5 CD E8 22 D1 D1 D1 60 69 6E 26 00 23 26 00 C3    ..."...`in&.#&..
002410:  81 23 EB 21 01 00 39 F9 EB C1 8A 08 21 00 00 39    .#.!..9.....!..9
002420:  F9 44 4D 21 04 00 09 6E 26 00 11 D0 FF 19 7C 00    .DM!...n&.....|.
002430:  CD AF 01 DA B5 23 21 04 00 09 6E 26 00 11 C6 FF    .....#!...n&....
002440:  21 00 00 CD 8F 00 DD 6E 04 DD 66 05 11 02 00 CD    !......n..f.....
002450:  34 01 11 01 00 B7 ED 52 22 E7 A1 21 04 00 DD E5    4......R"..!....
002460:  C1 09 E5 2A E7 A1 11 02 00 CD 0B 01 EB E1 19 22    ...*..........."
002470:  E5 A1 21 01 80 22 E3 A1 21 E7 A1 01 FF FF CD 7D    ..!.."..!......}
002480:  02 7D B4 CA 6C 09 2A E5 A1 CD 4B 02 ED 5B E3 A1    .}..l.*...K..[..
002490:  CD 98 01 7D B4 CA 61 09 2A E5 A1 CD 4B 02 22 E3    ...}..a.*...K.".
0024A0:  A1 21 E5 A1 01 FE FF CD 72 02 18 CC 2A E3 A1 C3    .!......r...*...
0024B0:  BE 00 18 FB 21 00 00 CD 8F 00 DD 6E 04 DD 66 05    ....!......n..f.
0024C0:  11 02 00 CD 34 01 11 01 00 B7 ED 52 22 E1 A1 21    ....4......R"..!
0024D0:  04 00 DD E5 C1 09 E5 2A E1 A1 11 02 00 CD 0B 01    .......*........
0024E0:  EB E1 19 22 DF A1 21 FF 7F 22 DD A1 21 E1 A1 01    ..."..!.."..!...
0024F0:  FF FF CD 7D 02 7D B4 CA E0 09 2A DF A1 CD 4B 02    ...}.}....*...K.
002500:  00 4C 4F 4F 4D 20 20 20 20 42 49 4E 00 00 00 00    .LOOM    BIN....
002510:  00 00 02 00 00 40 00 00 0B 39 40 00 00 00 00 00    .....@...9@.....
002520:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002530:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002540:  0B 39 00 9A 03 59 0F 00 00 FB A1 0E 07 C3 CE BC    .9...Y..........
002550:  1A 24 FF 00 FF 26 B1 0A 12 FD A7 86 22 37 67 CC    .$...&......"7g.
002560:  80 99 76 6A 33 97 82 02 F3 2C 0F 96 E7 F3 94 3E    ..vj3....,.....>
002570:  A8 60 99 0F 2A 86 FA 63 80 EA A4 11 53 F3 0D 36    .`..*..c....S..6
002580:  CD 36 08 C3 00 00 C3 BF 07 C3 34 07 C3 04 07 C3    .6........4.....
002590:  76 07 C3 8C 06 C3 DF 06 C3 AB 06 C3 E6 06 C3 F9    v...............
0025A0:  05 C3 AB 06 C3 A2 07 C3 F5 06 C3 63 07 C3 A4 06    ...........c....
0025B0:  C3 00 09 C3 00 09 C3 00 09 C3 16 03 C3 C5 06 C3    ................
0025C0:  C5 06 C3 AF 06 C3 45 06 FE 30 3F D0 FE 3A C9 D1    ......E..0?..:..
0025D0:  DD E5 DD 21 00 00 DD 39 39 F9 2A 4E 06 39 30 02    ...!...99.*N.90.
0025E0:  EB E9 21 AF 00 E5 21 04 00 E5 CD 79 00 18 91 73    ..!...!....y...s
0025F0:  74 61 63 6B 20 6F 76 65 72 66 6C 6F 77 00 DD 5E    tack overflow..^
002600:  04 DD 56 05 DD F9 DD E1 C1 EB 39 F9 EB C5 44 4D    ..V.......9...DM
002610:  C9 7D B3 6F 7C B2 67 C9 7D AB 6F 7C AA 67 C9 7D    .}.o|.g.}.o|.g.}
002620:  A3 6F 7C A2 67 C9 1D F8 29 18 FB 1D F8 CB 3C CB    £o|.g...).....<.
002630:  1D 18 F8 1D F8 CB 2C CB 1D 18 F8 2B 7C 2F 67 7D    ......,....+|/g}
002640:  2F 6F C9 7C B5 21 00 00 C0 23 C9 7C AA F5 AA FC    /o.|.!...#.|....
002650:  FB 00 7A CD 49 01 CD 1D 01 F1 F0 18 DE C5 06 10    ..z.I...........
002660:  7C 4D 21 00 00 29 38 0A CB 11 17 30 03 19 38 02    |M!..)8....0..8.
002670:  10 F3 C1 C9 7C AA 7C F5 B7 FC FB 00 7A CD 49 01    ....|.|.....z.I.
002680:  CD 50 01 F1 F5 FC FB 00 F1 EB B7 FC FB 00 EB C9    .P..............
002690:  C5 42 4B 11 00 00 3E 10 29 38 06 3D 20 FA C1 C9    .BK...>.)8.= ...
0026A0:  29 F5 CB 13 CB 12 7B 91 7A 98 FA 72 01 57 7B 91    ).....{.z..r.W{.
0026B0:  5F 2C F1 3D 20 EA C1 C9 CD 34 01 EB C9 CD 50 01    _,.= ....4....P.
0026C0:  EB C9 AF ED 52 67 6F C9 CD 82 01 37 23 C8 3F 2B    ....Rgo....7#.?+
0026D0:  C9 CD 82 01 C8 23 37 C9 EB CD 91 01 C8 FA A3 01    .....#7.......£.
0026E0:  E8 2B 3F E0 2B 3F C9 EB CD 99 01 C0 23 37 C9 EB    .+?.+?......#7..
0026F0:  CD 82 01 D0 23 C9 EB CD B0 01 C0 23 37 C9 F1 E1    ....#......#7...
002700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
002710:  02 00 01 00 02 09 4E E5 02 00 C1 02 00 00 00 02    ......N.........
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:  CD 6A 02 DD 6E FE DD 66 FF 11 04 00 19 E5 DD 6E    .j..n..f.......n
002810:  0C DD 66 0D 11 04 00 19 CD 4B 02 CD 6A 02 DD 6E    ..f......K..j..n
002820:  FE DD 66 FF 11 06 00 19 E5 DD 6E 0C DD 66 0D 11    ..f.......n..f..
002830:  06 00 19 CD 4B 02 CD 6A 02 DD 6E FE DD 66 FF 11    ....K..j..n..f..
002840:  08 00 19 E5 DD 6E 0C DD 66 0D 11 08 00 19 CD 4B    .....n..f......K
002850:  02 CD 6A 02 DD 6E FE DD 66 FF 11 00 00 19 E5 DD    ..j..n..f.......
002860:  6E 0C DD 66 0D 11 00 00 19 CD 4B 02 CD 6A 02 DD    n..f......K..j..
002870:  6E 0C DD 66 0D 11 02 00 19 E5 DD 6E 0A DD 66 0B    n..f.......n..f.
002880:  CD 6A 02 DD 6E 0C DD 66 0D 11 04 00 19 E5 DD 6E    .j..n..f.......n
002890:  08 DD 66 09 CD 6A 02 DD 6E 0C DD 66 0D 11 06 00    ..f..j..n..f....
0028A0:  19 E5 DD 6E 06 DD 66 07 CD 6A 02 DD 6E 0C DD 66    ...n..f..j..n..f
0028B0:  0D 11 08 00 19 E5 DD 6E 04 DD 66 05 CD 6A 02 DD    .......n..f..j..
0028C0:  6E 0C DD 66 0D 11 00 00 19 E5 DD 6E FE DD 66 FF    n..f.......n..f.
0028D0:  CD 6A 02 11 0A 00 C3 C4 00 21 FE FF CD 8F 00 DD    .j.......!......
0028E0:  6E 04 DD 66 05 11 00 00 19 CD 4B 02 DD 75 FE DD    n..f......K..u..
0028F0:  74 FF DD 6E 04 DD 66 05 11 02 00 19 E5 DD 6E FE    t..n..f.......n.
002900:  DD 66 FF 11 02 00 19 CD 4B 02 CD 6A 02 DD 6E 04    .f......K..j..n.
002910:  DD 66 05 11 04 00 19 E5 DD 6E FE DD 66 FF 11 04    .f.......n..f...
002920:  00 19 CD 4B 02 CD 6A 02 DD 6E 04 DD 66 05 11 06    ...K..j..n..f...
002930:  00 19 E5 DD 6E FE DD 66 FF 11 06 00 19 CD 4B 02    ....n..f......K.
002940:  CD 6A 02 DD 6E 04 DD 66 05 11 08 00 19 E5 DD 6E    .j..n..f.......n
002950:  FE DD 66 FF 11 08 00 19 CD 4B 02 CD 6A 02 DD 6E    ..f......K..j..n
002960:  04 DD 66 05 11 00 00 19 E5 DD 6E FE DD 66 FF 11    ..f.......n..f..
002970:  00 00 19 CD 4B 02 CD 6A 02 DD 6E FE DD 66 FF E5    ....K..j..n..f..
002980:  CD 92 36 11 02 00 C3 C4 00 21 00 00 CD 8F 00 DD    ..6......!......
002990:  6E 0A DD 66 0B E5 DD 6E 0C DD 66 0D 11 02 00 19    n..f...n..f.....
0029A0:  CD 4B 02 CD 6A 02 DD 6E 08 DD 66 09 E5 DD 6E 0C    .K..j..n..f...n.
0029B0:  DD 66 0D 11 04 00 19 CD 4B 02 CD 6A 02 DD 6E 06    .f......K..j..n.
0029C0:  DD 66 07 E5 DD 6E 0C DD 66 0D 11 06 00 19 CD 4B    .f...n..f......K
0029D0:  02 CD 6A 02 DD 6E 04 DD 66 05 E5 DD 6E 0C DD 66    ..j..n..f...n..f
0029E0:  0D 11 08 00 19 CD 4B 02 CD 6A 02 DD 6E 0C DD 66    ......K..j..n..f
0029F0:  0D E5 CD 99 10 11 0A 00 C3 C4 00 21 00 00 CD 8F    ...........!....
002A00:  00 E5 21 02 00 E5 CD 2B 0C C3 D1 19 25 73 25 63    ..!....+....%s%c
002A10:  00 21 CC 19 E5 21 84 A1 E5 21 12 00 E5 01 08 00    .!...!...!......
002A20:  C5 CD 16 03 21 01 00 E5 CD 70 33 CD 52 0C 21 00    ....!....p3.R.!.
002A30:  00 DD 75 FC DD 74 FD 2A DB A1 11 01 00 B7 ED 52    ..u..t.*.......R
002A40:  EB DD 6E 04 DD 66 05 CD AF 01 7D B4 CA 1E 1A 2A    ..n..f....}....*
002A50:  DB A1 11 01 00 B7 ED 52 DD 75 04 DD 74 05 DD 6E    .......R.u..t..n
002A60:  04 DD 66 05 ED 5B D3 63 CD AF 01 7D B4 CA 4C 1A    ..f..[.c...}..L.
002A70:  DD 6E 04 DD 66 05 11 01 00 B7 ED 52 6E 26 00 11    .n..f......Rn&..
002A80:  00 00 CD 98 01 7D B4 28 03 21 01 00 7D B4 CA 65    .....}.(.!..}..e
002A90:  1A C3 63 1A 21 04 00 DD E5 C1 09 01 FF FF CD 7D    ..c.!..........}
002AA0:  02 18 BB 18 EF DD 6E 04 DD 66 05 DD 75 FE DD 74    ......n..f..u..t
002AB0:  FF DD 6E FE DD 66 FF ED 5B DB A1 CD B0 01 7D B4    ..n..f..[.....}.
002AC0:  CA 96 1A DD 6E FC DD 66 FD 11 15 00 CD 99 01 7D    ....n..f.......}
002AD0:  B4 28 03 21 01 00 7D B4 CA CB 1A C3 BC 1A DD 6E    .(.!..}........n
002AE0:  FE DD 66 FF E5 CD 02 36 11 01 00 19 EB DD 6E FE    ..f....6......n.
002AF0:  DD 66 FF 19 DD 75 FE DD 74 FF 18 B5 21 FC FF DD    .f...u..t...!...
002B00:  E5 C1 09 01 01 00 CD 7D 02 18 D3 DD 6E FE DD 66    .......}....n..f
002B10:  FF ED 5B DB A1 CD 88 01 7D B4 CA EA 1A 21 FC FF    ..[.....}....!..
002B20:  DD E5 C1 09 01 FF FF CD 7D 02 DD 6E 04 DD 66 05    ........}..n..f.
002B30:  ED 5B D3 63 CD AF 01 7D B4 CA 0F 1B DD 6E FC DD    .[.c...}.....n..
002B40:  66 FD 11 15 00 CD 99 01 7D B4 28 03 21 01 00 7D    f.......}.(.!..}
002B50:  B4 CA 38 1B C3 26 1B 21 FC FF DD E5 C1 09 01 01    ..8..&.!........
002B60:  00 CD 7D 02 18 C4 DD 6E 04 DD 66 05 E5 CD E6 1E    ..}....n..f.....
002B70:  DD 75 04 DD 74 05 18 DF 21 00 00 DD 75 FC DD 74    .u..t...!...u..t
002B80:  FD DD 6E 04 DD 66 05 DD 75 FE DD 74 FF DD 6E FE    ..n..f..u..t..n.
002B90:  DD 66 FF ED 5B DB A1 CD B0 01 7D B4 CA 72 1B DD    .f..[.....}..r..
002BA0:  6E FC DD 66 FD 11 15 00 CD 99 01 7D B4 28 03 21    n..f.......}.(.!
002BB0:  01 00 7D B4 CA C1 1B C3 98 1B DD 6E FE DD 66 FF    ..}........n..f.
002BC0:  E5 CD 02 36 11 01 00 19 EB DD 6E FE DD 66 FF 19    ...6......n..f..
002BD0:  DD 75 FE DD 74 FF 18 B5 C3 A0 1B 25 73 0D 0A 00    .u..t......%s...
002BE0:  21 9B 1B E5 DD 6E FE DD 66 FF E5 01 06 00 C5 CD    !....n..f.......
002BF0:  16 03 21 FC FF DD E5 C1 09 01 01 00 CD 7D 02 18    ..!..........}..
002C00:  00 DD 6E 04 DD 66 05 11 00 00 19 CD 4B 02 11 00    ..n..f......K...
002C10:  00 CD 88 01 7D B4 CA E5 11 21 01 00 11 02 00 C3    ....}....!......
002C20:  C4 00 C3 EA 11 21 00 00 18 F2 18 F0 21 00 00 CD    .....!......!...
002C30:  8F 00 21 BC 02 E5 CD 0B 0A 22 48 A1 11 00 00 CD    ..!......"H.....
002C40:  88 01 7D B4 CA 24 12 C3 0E 12 25 73 0A 00 21 0A    ..}..$....%s..!.
002C50:  12 E5 2A 50 A1 E5 01 06 00 C5 CD 16 03 21 01 00    ..*P.........!..
002C60:  E5 CD 37 38 11 00 00 C3 C4 00 21 00 00 CD 8F 00    ..78......!.....
002C70:  2A D5 A1 11 46 00 CD 88 01 7D B4 CA 5E 12 C3 45    *...F....}..^..E
002C80:  12 25 73 0A 00 21 41 12 E5 2A 52 A1 E5 01 06 00    .%s..!A..*R.....
002C90:  C5 CD 16 03 21 01 00 E5 CD 37 38 C3 3F 15 DD 6E    ....!....78.?..n
002CA0:  06 DD 66 07 ED 5B D5 A1 CD 99 01 7D B4 CA AF 12    ..f..[.....}....
002CB0:  DD 6E 06 DD 66 07 11 01 00 19 11 0A 00 CD 0B 01    .n..f...........
002CC0:  EB 2A 48 A1 19 E5 DD 6E 06 DD 66 07 11 0A 00 CD    .*H....n..f.....
002CD0:  0B 01 EB 2A 48 A1 19 E5 DD 6E 06 DD 66 07 EB 2A    ...*H....n..f..*
002CE0:  D5 A1 B7 ED 52 11 0A 00 CD 0B 01 E5 CD 2E 02 DD    ....R...........
002CF0:  6E 06 DD 66 07 11 0A 00 CD 0B 01 EB 2A 48 A1 19    n..f........*H..
002D00:  11 00 00 19 E5 DD 6E 04 DD 66 05 11 00 00 19 CD    ......n..f......
002D10:  4B 02 CD 6A 02 DD 6E 06 DD 66 07 11 0A 00 CD 0B    K..j..n..f......
002D20:  01 EB 2A 48 A1 19 11 02 00 19 E5 DD 6E 04 DD 66    ..*H........n..f
002D30:  05 11 02 00 19 CD 4B 02 CD 6A 02 DD 6E 06 DD 66    ......K..j..n..f
002D40:  07 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 08 00 19    ........*H......
002D50:  E5 DD 6E 04 DD 66 05 11 08 00 19 CD 4B 02 CD 6A    ..n..f......K..j
002D60:  02 DD 6E 06 DD 66 07 11 0A 00 CD 0B 01 EB 2A 48    ..n..f........*H
002D70:  A1 19 11 04 00 19 E5 DD 6E 04 DD 66 05 11 04 00    ........n..f....
002D80:  19 CD 4B 02 E5 CD 02 36 11 01 00 19 E5 CD 0B 0A    ..K....6........
002D90:  CD 6A 02 11 00 00 CD 88 01 7D B4 C2 9A 13 DD 6E    .j.......}.....n
002DA0:  06 DD 66 07 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11    ..f........*H...
002DB0:  06 00 19 E5 DD 6E 04 DD 66 05 11 06 00 19 CD 4B    .....n..f......K
002DC0:  02 E5 CD 02 36 11 01 00 19 E5 CD 0B 0A CD 6A 02    ....6.........j.
002DD0:  11 00 00 CD 88 01 7D B4 28 03 21 01 00 7D B4 CA    ......}.(.!..}..
002DE0:  BF 13 C3 A9 13 25 73 0A 00 21 A5 13 E5 2A 54 A1    .....%s..!...*T.
002DF0:  E5 01 06 00 C5 CD 16 03 21 01 00 E5 CD 37 38 DD    ........!....78.
002E00:  B9 DD 6E FE DD 66 FF ED 5B DB A1 CD B0 01 7D B4    ..n..f..[.....}.
002E10:  CA EB 1B C3 D9 1B 25 73 00 21 D6 1B E5 DD 6E FE    ......%s.!....n.
002E20:  DD 66 FF E5 01 06 00 C5 CD 16 03 DD 6E 04 DD 66    .f..........n..f
002E30:  05 E5 21 00 00 E5 21 16 00 E5 CD 0B 1C DD 6E 04    ..!...!.......n.
002E40:  DD 66 05 11 02 00 C3 C4 00 18 F8 21 A4 FF CD 8F    .f.........!....
002E50:  00 21 00 00 E5 CD A8 0C 21 01 00 E5 CD 8B 0C 2A    .!......!......*
002E60:  D5 A1 11 00 00 CD 98 01 7D B4 CA 4C 1E 2A D9 A1    ........}..L.*..
002E70:  E5 DD 6E 08 DD 66 09 ED 5B D3 63 B7 ED 52 E5 CD    ..n..f..[.c..R..
002E80:  45 15 DD 75 A8 DD 74 A9 DD 6E 08 DD 66 09 DD 75    E..u..t..n..f..u
002E90:  A6 DD 74 A7 DD 6E A8 DD 66 A9 ED 5B D5 A1 CD 99    ..t..n..f..[....
002EA0:  01 7D B4 CA 93 1C DD 6E A8 DD 66 A9 11 0A 00 CD    .}.....n..f.....
002EB0:  0B 01 EB 2A 48 A1 19 11 04 00 19 CD 4B 02 E5 2A    ...*H.......K..*
002EC0:  D9 A1 E5 CD 4B 0D 11 00 00 CD 88 01 7D B4 28 03    ....K.......}.(.
002ED0:  21 01 00 7D B4 CA AC 1C DD 6E A6 DD 66 A7 ED 5B    !..}.....n..f..[
002EE0:  DB A1 CD B0 01 7D B4 28 03 21 01 00 7D B4 CA C8    .....}.(.!..}...
002EF0:  1C DD 6E 04 DD 66 05 EB DD 6E 06 DD 66 07 CD 99    ..n..f...n..f...
002F00:  01 7D B4 28 03 21 01 00 7D B4 CA 4C 1E C3 EF 1C    .}.(.!..}..L....
002F10:  DD 6E A6 DD 66 A7 E5 CD 02 36 11 01 00 19 EB DD    .n..f....6......
002F20:  6E A6 DD 66 A7 19 DD 75 A6 DD 74 A7 C3 54 1C DD    n..f...u..t..T..
002F30:  6E A8 DD 66 A9 ED 5B D5 A1 CD 99 01 7D B4 CA 2E    n..f..[.....}...
002F40:  1D DD 6E A8 DD 66 A9 11 0A 00 CD 0B 01 EB 2A 48    ..n..f........*H
002F50:  A1 19 11 04 00 19 CD 4B 02 E5 2A D9 A1 E5 CD 4B    .......K..*....K
002F60:  0D 11 00 00 CD 88 01 7D B4 28 03 21 01 00 7D B4    .......}.(.!..}.
002F70:  CA 71 1D DD 6E A8 DD 66 A9 11 0A 00 CD 0B 01 EB    .q..n..f........
002F80:  2A 48 A1 19 11 00 00 19 E5 DD 6E A6 DD 66 A7 E5    *H........n..f..
002F90:  CD 02 36 EB DD 6E A6 DD 66 A7 19 ED 5B D3 63 B7    ..6..n..f...[.c.
002FA0:  ED 52 EB E1 CD 4B 02 CD B0 01 7D B4 28 03 21 01    .R...K....}.(.!.
002FB0:  00 7D B4 CA 3C 1E DD 6E A8 DD 66 A9 11 0A 00 CD    .}..<..n..f.....
002FC0:  0B 01 EB 2A 48 A1 19 11 00 00 19 CD 4B 02 ED 5B    ...*H.......K..[
002FD0:  D3 63 19 EB DD 6E A6 DD 66 A7 EB B7 ED 52 DD 75    .c...n..f....R.u
002FE0:  AA DD 74 AB DD 6E AA DD 66 AB 11 01 00 19 E5 DD    ..t..n..f.......
002FF0:  6E 06 DD 66 07 11 01 00 19 E5 CD 2B 0C DD 6E A8    n..f.......+..n.
003000:  6E 06 DD 66 07 11 00 00 CD 98 01 7D B4 CA 0D 14    n..f.......}....
003010:  DD 6E 06 DD 66 07 11 01 00 B7 ED 52 11 0A 00 CD    .n..f......R....
003020:  0B 01 EB 2A 48 A1 19 11 04 00 19 CD 4B 02 E5 DD    ...*H.......K...
003030:  6E 04 DD 66 05 11 04 00 19 CD 4B 02 E5 CD 4B 0D    n..f......K...K.
003040:  11 00 00 CD 88 01 7D B4 28 03 21 01 00 7D B4 CA    ......}.(.!..}..
003050:  68 14 DD 6E 06 DD 66 07 11 0A 00 CD 0B 01 EB 2A    h..n..f........*
003060:  48 A1 19 11 04 00 19 CD 4B 02 E5 CD 92 36 DD 6E    H.......K....6.n
003070:  06 DD 66 07 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11    ..f........*H...
003080:  04 00 19 E5 DD 6E 06 DD 66 07 11 01 00 B7 ED 52    .....n..f......R
003090:  11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 04 00 19 CD    .......*H.......
0030A0:  4B 02 CD 6A 02 C3 92 14 DD 6E 06 DD 66 07 11 0A    K..j.....n..f...
0030B0:  00 CD 0B 01 EB 2A 48 A1 19 11 04 00 19 CD 4B 02    .....*H.......K.
0030C0:  E5 DD 6E 04 DD 66 05 11 04 00 19 CD 4B 02 E5 CD    ..n..f......K...
0030D0:  BF 35 DD 6E 04 DD 66 05 11 04 00 19 CD 4B 02 E5    .5.n..f......K..
0030E0:  DD 6E 04 DD 66 05 11 06 00 19 CD 4B 02 E5 CD 4B    .n..f......K...K
0030F0:  0D 11 00 00 CD 88 01 7D B4 CA 0C 15 DD 6E 06 DD    .......}.....n..
003100:  66 07 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 06 00    f........*H.....
003110:  19 CD 4B 02 E5 CD 92 36 DD 6E 06 DD 66 07 11 0A    ..K....6.n..f...
003120:  00 CD 0B 01 EB 2A 48 A1 19 11 06 00 19 E5 DD 6E    .....*H........n
003130:  06 DD 66 07 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11    ..f........*H...
003140:  04 00 19 CD 4B 02 CD 6A 02 C3 36 15 DD 6E 06 DD    ....K..j..6..n..
003150:  66 07 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 06 00    f........*H.....
003160:  19 CD 4B 02 E5 DD 6E 04 DD 66 05 11 06 00 19 CD    ..K...n..f......
003170:  4B 02 E5 CD BF 35 21 D5 A1 01 01 00 CD 7D 02 11    K....5!......}..
003180:  04 00 C3 C4 00 21 FE FF CD 8F 00 21 00 00 DD 75    .....!.....!...u
003190:  FE DD 74 FF DD 6E FE DD 66 FF ED 5B D5 A1 CD 99    ..t..n..f..[....
0031A0:  01 7D B4 CA 96 15 DD 6E FE DD 66 FF 11 0A 00 CD    .}.....n..f.....
0031B0:  0B 01 EB 2A 48 A1 19 11 04 00 19 CD 4B 02 E5 DD    ...*H.......K...
0031C0:  6E 06 DD 66 07 E5 CD 4B 0D 11 00 00 CD 99 01 7D    n..f...K.......}
0031D0:  B4 28 03 21 01 00 7D B4 CA AA 15 21 FE FF DD E5    .(.!..}....!....
0031E0:  C1 09 01 01 00 CD 7D 02 18 AA DD 6E FE DD 66 FF    ......}....n..f.
0031F0:  ED 5B D5 A1 CD 99 01 7D B4 CA EC 15 DD 6E FE DD    .[.....}.....n..
003200:  DD 66 A9 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 00    .f........*H....
003210:  00 19 CD 4B 02 DD 75 A4 DD 74 A5 DD 6E A8 DD 66    ...K..u..t..n..f
003220:  A9 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 02 00 19    ........*H......
003230:  CD 4B 02 11 01 00 19 EB DD 6E A4 DD 66 A5 CD B0    .K.......n..f...
003240:  01 7D B4 CA 2C 1E C3 18 1E 21 A4 FF DD E5 C1 09    .}..,....!......
003250:  01 01 00 CD 7D 02 18 C3 DD 6E A4 DD 66 A5 EB 2A    ....}....n..f..*
003260:  D3 63 19 6E 26 00 E5 CD 6D 00 18 DD 21 A8 FF DD    .c.n&...m...!...
003270:  E5 C1 09 01 01 00 CD 7D 02 C3 EF 1C 21 06 00 DD    .......}....!...
003280:  E5 C1 09 01 01 00 CD 7D 02 C3 D0 1C 21 01 00 E5    .......}....!...
003290:  CD 70 33 11 06 00 C3 C4 00 21 00 00 CD 8F 00 DD    .p3......!......
0032A0:  6E 06 DD 66 07 ED 5B DB A1 CD B6 01 7D B4 CA 7A    n..f..[.....}..z
0032B0:  1E 21 00 00 11 04 00 C3 C4 00 DD 6E 04 DD 66 05    .!.........n..f.
0032C0:  11 01 00 19 E5 DD 6E 06 DD 66 07 E5 CD 02 36 EB    ......n..f....6.
0032D0:  E1 CD AF 01 7D B4 CA 9E 1E 21 00 00 18 D6 21 01    ....}....!....!.
0032E0:  00 18 D1 18 CF 21 00 00 CD 8F 00 DD 6E 06 DD 66    .....!......n..f
0032F0:  07 E5 DD 6E 04 DD 66 05 E5 CD 59 1E CD 03 01 7D    ...n..f...Y....}
003300:  B4 CA CD 1E 21 FF FF 11 04 00 C3 C4 00 DD 6E 04    ....!.........n.
003310:  DD 66 05 EB DD 6E 06 DD 66 07 19 ED 5B D3 63 B7    .f...n..f...[.c.
003320:  ED 52 18 E3 18 E1 21 00 00 CD 8F 00 DD 6E 04 DD    .R....!......n..
003330:  66 05 ED 5B D3 63 CD AF 01 7D B4 CA 5F 1F 21 04    f..[.c...}.._.!.
003340:  00 DD E5 C1 09 01 FF FF CD 7D 02 DD 6E 04 DD 66    .........}..n..f
003350:  05 ED 5B DB A1 CD B0 01 7D B4 CA 5F 1F DD 6E 04    ..[.....}.._..n.
003360:  DD 66 05 ED 5B D3 63 CD AF 01 7D B4 CA 4B 1F DD    .f..[.c...}..K..
003370:  6E 04 DD 66 05 11 01 00 B7 ED 52 6E 26 00 11 00    n..f......Rn&...
003380:  00 CD 98 01 7D B4 28 03 21 01 00 7D B4 CA 5F 1F    ....}.(.!..}.._.
003390:  21 04 00 DD E5 C1 09 01 FF FF CD 7D 02 18 BE DD    !..........}....
0033A0:  6E 04 DD 66 05 11 02 00 C3 C4 00 18 F8 21 00 00    n..f.........!..
0033B0:  CD 8F 00 DD 6E 04 DD 66 05 ED 5B DB A1 CD B0 01    ....n..f..[.....
0033C0:  7D B4 CA 9D 1F DD 6E 04 DD 66 05 E5 CD 02 36 EB    }.....n..f....6.
0033D0:  DD 6E 04 DD 66 05 19 DD 75 04 DD 74 05 21 04 00    .n..f...u..t.!..
0033E0:  DD E5 C1 09 01 01 00 CD 7D 02 DD 6E 04 DD 66 05    ........}..n..f.
0033F0:  11 02 00 C3 C4 00 18 F8 21 FB FF CD 8F 00 21 00    ........!.....!.
003400:  66 FF 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 04 00    f........*H.....
003410:  19 CD 4B 02 E5 DD 6E 06 DD 66 07 E5 CD 4B 0D 11    ..K...n..f...K..
003420:  00 00 CD 88 01 7D B4 28 03 21 01 00 7D B4 CA 1B    .....}.(.!..}...
003430:  16 DD 6E FE DD 66 FF 11 0A 00 CD 0B 01 EB 2A 48    ..n..f........*H
003440:  A1 19 11 00 00 19 CD 4B 02 EB DD 6E 04 DD 66 05    .......K...n..f.
003450:  EB CD B0 01 7D B4 28 03 21 01 00 7D B4 CA 30 16    ....}.(.!..}..0.
003460:  21 FE FF DD E5 C1 09 01 01 00 CD 7D 02 C3 AA 15    !..........}....
003470:  DD 6E FE DD 66 FF 11 04 00 C3 C4 00 18 F8 21 00    .n..f.........!.
003480:  00 CD 8F 00 DD 6E 04 DD 66 05 11 00 00 CD A7 01    .....n..f.......
003490:  7D B4 CA 69 16 DD 6E 04 DD 66 05 ED 5B D5 A1 CD    }..i..n..f..[...
0034A0:  99 01 7D B4 28 03 21 01 00 7D B4 CA 9E 16 DD 6E    ..}.(.!..}.....n
0034B0:  08 DD 66 09 E5 DD 6E 04 DD 66 05 11 0A 00 CD 0B    ..f...n..f......
0034C0:  01 EB 2A 48 A1 19 11 04 00 19 CD 4B 02 E5 CD 4B    ..*H.......K...K
0034D0:  0D 11 00 00 CD 88 01 7D B4 28 03 21 01 00 7D B4    .......}.(.!..}.
0034E0:  CA CD 16 DD 6E 04 DD 66 05 11 0A 00 CD 0B 01 EB    ....n..f........
0034F0:  2A 48 A1 19 11 00 00 19 CD 4B 02 EB DD 6E 06 DD    *H.......K...n..
003500:  66 07 EB CD B7 01 7D B4 28 03 21 01 00 7D B4 CA    f.....}.(.!..}..
003510:  FC 16 DD 6E 04 DD 66 05 11 0A 00 CD 0B 01 EB 2A    ...n..f........*
003520:  48 A1 19 11 02 00 19 CD 4B 02 EB DD 6E 06 DD 66    H.......K...n..f
003530:  07 EB CD B6 01 7D B4 28 03 21 01 00 7D B4 CA 0A    .....}.(.!..}...
003540:  17 21 01 00 11 06 00 C3 C4 00 21 00 00 18 F5 18    .!........!.....
003550:  F3 21 00 00 CD 8F 00 21 00 32 E5 CD 0B 0A 22 D3    .!.....!.2....".
003560:  63 11 00 00 CD 88 01 7D B4 CA 49 17 C3 33 17 25    c......}..I..3.%
003570:  73 0A 00 21 2F 17 E5 2A 56 A1 E5 01 06 00 C5 CD    s..!/..*V.......
003580:  16 03 21 01 00 E5 CD 37 38 11 00 00 C3 C4 00 21    ..!....78......!
003590:  F9 FF CD 8F 00 DD 6E 04 DD 66 05 E5 C3 61 17 72    ......n..f...a.r
0035A0:  00 21 5F 17 E5 CD 46 00 DD 75 FE DD 74 FF 11 00    .!_...F..u..t...
0035B0:  00 CD 88 01 7D B4 CA 82 17 21 FF FF 11 02 00 C3    ....}....!......
0035C0:  C4 00 21 00 00 7D 32 84 A1 26 00 DD 6E FE DD 66    ..!..}2..&..n..f
0035D0:  FF E5 CD 49 00 DD 75 FD 26 00 DD 6E FD 26 00 11    ...I..u.&..n.&..
0035E0:  23 00 CD 88 01 7D B4 CA CB 17 21 84 A1 E5 21 42    #....}....!...!B
0035F0:  00 E5 DD 6E FE DD 66 FF E5 CD 3C 0E DD 6E FE DD    ...n..f...<..n..
003600:  00 DD 75 FF 26 00 21 C2 63 E5 21 E8 09 E5 CD BF    ..u.&.!.c.!.....
003610:  35 21 B5 63 E5 21 F5 09 E5 CD BF 35 21 00 00 7D    5!.c.!.....5!..}
003620:  32 B4 63 26 00 2A D1 63 6E 26 00 11 01 00 CD 88    2.c&.*.cn&......
003630:  01 7D B4 CA 02 20 C3 FB 1F C2 00 21 F9 1F E5 CD    .}... .....!....
003640:  F2 0D 21 B4 63 22 D9 A1 CD F5 34 CD 0D 0F 22 CF    ..!.c"....4...".
003650:  63 CD EC 11 CD 11 17 CD 78 29 CD 10 2E 2A D3 63    c.......x)...*.c
003660:  E5 CD B1 19 22 A1 63 2A A1 63 22 9F 63 21 01 00    ....".c*.c".c!..
003670:  E5 21 01 00 E5 CD 2B 0C DD 6E FF 26 00 11 51 00    .!....+..n.&..Q.
003680:  CD 91 01 7D B4 CA 64 28 21 01 00 E5 CD 65 0C CD    ...}..d(!....e..
003690:  55 00 E5 CD 0B 02 DD 75 FF 26 00 21 00 00 E5 CD    U......u.&.!....
0036A0:  65 0C 21 02 00 E5 CD 70 33 21 0C 00 E5 CD 6D 00    e.!....p3!....m.
0036B0:  21 01 00 E5 CD 70 33 2A A5 63 E5 2A A3 63 E5 CD    !....p3*.c.*£c..
0036C0:  2B 0C DD 6E FF 26 00 CD 89 02 FF 27 C3 61 28 CD    +..n.&.....'.a(.
0036D0:  26 2A C3 61 28 21 B5 63 E5 CD D8 31 7D B4 CA BD    &*.a(!.c...1}...
0036E0:  20 2A D3 63 E5 CD B1 19 22 A1 63 2A A1 63 22 9F     *.c....".c*.c".
0036F0:  63 21 01 00 22 A3 63 21 01 00 22 A5 63 2A A5 63    c!.."£c!..".c*.c
003700:  E5 2A A3 63 E5 CD 2B 0C C3 61 28 21 02 00 E5 CD    .*£c..+..a(!....
003710:  70 33 C3 DB 20 25 73 20 25 64 00 21 D5 20 E5 2A    p3.. %s %d.!. .*
003720:  5C A1 E5 2A 46 A1 E5 01 08 00 C5 CD 16 03 21 01    \..*F.........!.
003730:  00 E5 CD 70 33 2A A5 63 E5 2A A3 63 E5 CD 2B 0C    ...p3*.c.*£c..+.
003740:  C3 61 28 CD 78 29 2A A1 63 E5 CD B1 19 2A A5 63    .a(.x)*.c....*.c
003750:  E5 2A A3 63 E5 CD 2B 0C C3 61 28 21 02 00 E5 CD    .*£c..+..a(!....
003760:  70 33 CD 07 19 21 01 00 E5 CD 70 33 2A A5 63 E5    p3...!....p3*.c.
003770:  2A A3 63 E5 CD 2B 0C C3 61 28 CD 4D 2B C3 61 28    *£c..+..a(.M+.a(
003780:  CD CD 2B C3 61 28 2A A3 63 11 01 00 CD 88 01 7D    ..+.a(*£c......}
003790:  B4 CA 7A 21 2A A1 63 ED 5B D3 63 CD AF 01 7D B4    ..z!*.c.[.c...}.
0037A0:  CA 77 21 CD CC 28 2A A1 63 22 9F 63 2A A5 63 E5    .w!..(*.c".c*.c.
0037B0:  21 01 00 E5 CD 2B 0C C3 95 21 2A A5 63 E5 21 A3    !....+...!*.c.!£
0037C0:  63 01 FF FF CD 72 02 E5 CD 2B 0C 2A 9F 63 E5 CD    c....r...+.*.c..
0037D0:  E6 1E 22 9F 63 C3 61 28 2A A3 63 11 16 00 CD 88    ..".c.a(*£c.....
0037E0:  01 7D B4 CA E6 21 2A 9F 63 E5 CD 02 36 EB 2A 9F    .}...!*.c...6.*.
0037F0:  63 19 11 01 00 19 ED 5B DB A1 CD B0 01 7D B4 CA    c......[.....}..
003800:  66 FF E5 CD 49 00 DD 75 FD 26 00 2A D3 63 22 DB    f...I..u.&.*.c".
003810:  A1 21 00 00 DD 75 F9 DD 74 FA DD 6E FD 26 00 11    .!...u..t..n.&..
003820:  FF 00 CD 91 01 7D B4 CA 05 18 2A D3 63 11 00 32    .....}....*.c..2
003830:  19 11 01 00 B7 ED 52 EB 2A DB A1 CD B0 01 7D B4    ......R.*.....}.
003840:  28 03 21 01 00 7D B4 CA C7 18 DD 6E FD 26 00 CD    (.!..}.....n.&..
003850:  89 02 A5 18 C3 B5 18 21 DB A1 01 01 00 CD 7D 02    .......!......}.
003860:  E5 21 20 00 D1 7D 12 26 00 21 F9 FF DD E5 C1 09    .! ..}.&.!......
003870:  01 01 00 CD 7D 02 2A D3 63 11 00 32 19 EB 2A DB    ....}.*.c..2..*.
003880:  A1 CD B0 01 7D B4 CA 5C 18 DD 6E F9 DD 66 FA 11    ....}..\..n..f..
003890:  08 00 CD 78 01 7D B4 28 03 21 01 00 7D B4 20 B7    ...x.}.(.!..}. .
0038A0:  C3 B5 18 21 DB A1 01 01 00 CD 7D 02 E5 21 00 00    ...!......}..!..
0038B0:  D1 7D 12 26 00 21 00 00 DD 75 F9 DD 74 FA C3 B5    .}.&.!...u..t...
0038C0:  18 21 DB A1 01 01 00 CD 7D 02 E5 DD 6E FD 26 00    .!......}...n.&.
0038D0:  D1 7D 12 26 00 21 F9 FF DD E5 C1 09 01 01 00 CD    .}.&.!..........
0038E0:  7D 02 C3 B5 18 14 18 0D 00 17 18 09 00 63 18 0A    }............c..
0038F0:  00 00 00 18 CC DD 6E FE DD 66 FF E5 CD 49 00 DD    ......n..f...I..
003900:  75 FD 26 00 C3 DA 17 DD 6E FE DD 66 FF E5 CD 4F    u.&.....n..f...O
003910:  00 DD 6E FD 26 00 CD 89 02 FC 18 21 DB A1 01 01    ..n.&......!....
003920:  00 CD 7D 02 E5 21 00 00 D1 7D 12 26 00 21 00 00    ..}..!...}.&.!..
003930:  C3 7C 17 21 FE FF C3 7C 17 C3 04 19 DB 18 FF 00    .|.!...|........
003940:  00 00 18 EF C3 7C 17 21 FE FF CD 8F 00 21 84 A1    .....|.!.....!..
003950:  E5 CD 37 34 7D B4 C2 30 19 C3 1F 19 0A 0A 00 21    ..74}..0.......!
003960:  1C 19 E5 CD 11 0E 11 00 00 CD 88 01 7D B4 28 03    ............}.(.
003970:  21 01 00 7D B4 CA 41 19 21 00 00 11 00 00 C3 C4    !..}..A.!.......
003980:  00 2A D3 63 DD 75 FE DD 74 FF DD 6E FE DD 66 FF    .*.c.u..t..n..f.
003990:  ED 5B DB A1 CD B0 01 7D B4 CA AF 19 C3 7D 19 DD    .[.....}.....}..
0039A0:  6E FE DD 66 FF E5 CD 02 36 11 01 00 19 EB DD 6E    n..f....6......n
0039B0:  FE DD 66 FF 19 DD 75 FE DD 74 FF 18 CD DD 6E FE    ..f...u..t....n.
0039C0:  DD 66 FF E5 CD 37 34 7D B4 C2 A2 19 C3 91 19 0A    .f...74}........
0039D0:  00 21 8F 19 E5 CD 11 0E 11 00 00 CD 88 01 7D B4    .!............}.
0039E0:  28 03 21 01 00 7D B4 CA AD 19 C3 AF 19 18 B0 18    (.!..}..........
0039F0:  8A 21 FC FF CD 8F 00 21 00 00 E5 CD 70 33 21 01    .!.....!....p3!.
003A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
003A10:  03 00 01 00 02 09 4E E5 03 00 C4 02 00 00 00 02    ......N.........
003A20:  03 00 C9 02 00 00 00 02 03 00 C5 02 00 00 00 02    ................
003A30:  03 00 C1 02 00 00 00 02 03 00 C6 02 00 00 00 02    ................
003A40:  03 00 C2 02 00 00 00 02 03 00 C7 02 00 00 00 02    ................
003A50:  03 00 C3 02 00 00 00 02 03 00 C8 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:  29 2A A3 63 11 01 00 CD 88 01 7D B4 CA E5 27 2A    )*£c......}...'*
003B10:  9F 63 E5 CD 02 36 11 01 00 19 EB 2A 9F 63 19 22    .c...6.....*.c."
003B20:  9F 63 C3 EE 27 21 A3 63 01 FF FF CD 7D 02 2A A5    .c..'!£c....}.*.
003B30:  63 E5 2A A3 63 E5 CD 2B 0C C3 61 28 C3 61 28 8C    c.*£c..+..a(.a(.
003B40:  20 51 00 8F 20 3C 00 8F 20 2C 00 8F 20 42 00 95     Q.. <.. ,.. B..
003B50:  20 48 00 CB 20 46 00 03 21 0C 00 1B 21 50 00 3A     H.. F..!...!P.:
003B60:  21 4F 00 40 21 0D 00 46 21 F0 00 98 21 F1 00 21    !O.@!..F!...!..!
003B70:  22 F2 00 47 22 F3 00 6B 22 F6 00 D1 23 F7 00 49    "..G"..k"...#..I
003B80:  25 F8 00 F6 25 F9 00 A7 26 1B 00 E0 26 1D 00 23    %...%...&...&..#
003B90:  27 FA 00 37 27 FB 00 6B 27 F4 00 AF 27 F5 00 00    '..7'..k'...'...
003BA0:  00 C3 38 20 21 00 00 E5 CD 37 38 11 00 00 C3 C4    ..8 !....78.....
003BB0:  00 21 FC FF CD 8F 00 2A A1 63 DD 75 FC DD 74 FD    .!.....*.c.u..t.
003BC0:  21 00 00 DD 75 FE DD 74 FF DD 6E FE DD 66 FF 11    !...u..t..n..f..
003BD0:  16 00 CD 99 01 7D B4 CA BE 28 C3 AC 28 21 FE FF    .....}...(..(!..
003BE0:  DD E5 C1 09 01 01 00 CD 7D 02 18 DD DD 6E FC DD    ........}....n..
003BF0:  66 FD E5 CD 6D 1F DD 75 FC DD 74 FD 18 DF DD 6E    f...m..u..t....n
003C00:  FC DD 66 FD 11 00 00 C3 C4 00 18 F8 21 00 00 CD    ..f.........!...
003C10:  8F 00 2A A1 63 E5 CD E6 1E 22 A1 63 21 01 00 E5    ..*.c....".c!...
003C20:  21 01 00 E5 CD 2B 0C 21 0B 00 E5 CD 6D 00 C3 F5    !....+.!....m...
003C30:  28 0D 25 73 00 21 F1 28 E5 2A A1 63 E5 01 06 00    (.%s.!.(.*.c....
003C40:  C5 CD 16 03 2A A1 63 E5 21 00 00 E5 21 01 00 E5    ....*.c.!...!...
003C50:  CD 0B 1C 11 00 00 C3 C4 00 21 FE FF CD 8F 00 21    .........!.....!
003C60:  01 00 E5 21 16 00 E5 CD 2B 0C CD 71 28 DD 75 FE    ...!....+..q(.u.
003C70:  DD 74 FF C3 3B 29 0A 0D 25 73 00 21 36 29 E5 DD    .t..;)..%s.!6)..
003C80:  6E FE DD 66 FF E5 01 06 00 C5 CD 16 03 DD 6E FE    n..f..........n.
003C90:  DD 66 FF E5 21 15 00 E5 21 16 00 E5 CD 0B 1C 2A    .f..!...!......*
003CA0:  A1 63 E5 CD 02 36 11 01 00 19 EB 2A A1 63 19 22    .c...6.....*.c."
003CB0:  A1 63 11 00 00 C3 C4 00 21 00 00 CD 8F 00 21 04    .c......!.....!.
003CC0:  00 E5 CD 6D 00 21 02 00 E5 CD 6D 00 21 44 00 E5    ...m.!....m.!D..
003CD0:  21 01 00 E5 21 50 00 E5 21 02 00 E5 CD C5 0C 21    !...!P..!......!
003CE0:  00 00 E5 CD A8 0C 21 01 00 E5 CD 8B 0C CD 52 0C    ......!.......R.
003CF0:  C3 CF 29 25 63 4C 6F 6F 6D 20 76 33 2E 32 20 62    ..)%cLoom v3.2 b
003D00:  CD 88 01 7D B4 CA CF 31 21 00 00 E5 CD 37 38 CD    ...}...1!....78.
003D10:  52 0C 11 00 00 C3 C4 00 21 F8 FF CD 8F 00 2A D9    R.......!.....*.
003D20:  A1 E5 DD 6E 04 DD 66 05 E5 CD 4B 0D 11 00 00 CD    ...n..f...K.....
003D30:  88 01 7D B4 CA 1E 32 21 03 00 E5 CD 70 33 2A CF    ..}...2!....p3*.
003D40:  63 E5 2A D9 A1 E5 2A A5 63 E5 2A A3 63 E5 2A A1    c.*...*.c.*£c.*.
003D50:  63 E5 CD 6A 0F 21 01 00 11 02 00 C3 C4 00 21 00    c..j.!........!.
003D60:  00 DD 75 F8 DD 74 F9 21 02 00 E5 CD 70 33 C3 38    ..u..t.!....p3.8
003D70:  32 0C 25 73 20 25 73 00 21 31 32 E5 2A 6C A1 E5    2.%s %s.!12.*l..
003D80:  DD 6E 04 DD 66 05 E5 01 08 00 C5 CD 16 03 21 03    .n..f.........!.
003D90:  00 E5 CD 70 33 DD 6E 04 DD 66 05 DD 75 FE DD 74    ...p3.n..f..u..t
003DA0:  FF DD 6E FE DD 66 FF E5 CD CF 30 DD 75 FC DD 74    ..n..f....0.u..t
003DB0:  FD DD 6E FC DD 66 FD CD 89 02 3A 33 21 01 00 DD    ..n..f....:3!...
003DC0:  75 F8 DD 74 F9 C3 48 33 21 00 00 DD 75 FA DD 74    u..t..H3!...u..t
003DD0:  FB C3 97 32 25 73 00 21 94 32 E5 2A 80 A1 E5 01    ...2%s.!.2.*....
003DE0:  06 00 C5 CD 16 03 C3 AC 32 59 4E 00 21 A9 32 E5    ........2YN.!.2.
003DF0:  CD 55 00 E5 CD 0B 02 DD 75 FA DD 74 FB E5 CD 3C    .U......u..t...<
003E00:  36 11 00 00 CD 88 01 7D B4 CA CE 32 18 D8 DD 6E    6......}...2...n
003E10:  FA DD 66 FB 11 4E 00 CD 88 01 7D B4 CA EF 32 21    ..f..N....}...2!
003E20:  00 00 DD 75 FC DD 74 FD 2A A1 63 E5 CD B1 19 C3    ...u..t.*.c.....
003E30:  48 33 C3 FB 32 25 73 0D 0A 20 00 21 F5 32 E5 2A    H3..2%s.. .!.2.*
003E40:  82 A1 E5 01 06 00 C5 CD 16 03 2A D9 A1 22 D7 A1    ..........*.."..
003E50:  21 B4 63 22 D9 A1 2A D7 A1 E5 CD D8 31 2A CF 63    !.c"..*.....1*.c
003E60:  E5 CD 99 10 21 00 00 DD 75 FC DD 74 FD 2A A1 63    ....!...u..t.*.c
003E70:  E5 CD B1 19 C3 48 33 C3 48 33 7C 32 00 00 88 32    .....H3.H3|2...2
003E80:  01 00 F2 32 02 00 00 00 DD 6E FC DD 66 FD 7D B4    ...2.....n..f.}.
003E90:  C2 61 32 21 02 00 E5 CD 70 33 CD 52 0C 21 01 00    .a2!....p3.R.!..
003EA0:  E5 CD 70 33 DD 6E F8 DD 66 F9 C3 18 32 C3 18 32    ..p3.n..f...2..2
003EB0:  21 00 00 CD 8F 00 DD 6E 04 DD 66 05 CD 89 02 1F    !......n..f.....
003EC0:  34 21 01 00 E5 21 01 00 E5 21 43 00 E5 21 02 00    4!...!...!C..!..
003ED0:  E5 CD C5 0C 21 00 00 E5 CD A8 0C 21 01 00 E5 CD    ....!......!....
003EE0:  8B 0C C3 31 34 21 01 00 E5 21 03 00 E5 21 50 00    ...14!...!...!P.
003EF0:  E5 21 18 00 E5 CD C5 0C 21 01 00 E5 CD A8 0C 21    .!......!......!
003F00:  79 25 63 53 2E 20 50 68 69 6C 6C 69 70 73 00 21    y%cS. Phillips.!
003F10:  B3 29 E5 21 D3 00 E5 21 D3 00 E5 01 08 00 C5 CD    .).!...!........
003F20:  16 03 21 00 00 E5 CD 70 33 21 01 00 E5 CD A8 0C    ..!....p3!......
003F30:  21 00 00 E5 CD 8B 0C C3 FD 29 25 73 00 21 FA 29    !........)%s.!.)
003F40:  E5 2A 5E A1 E5 01 06 00 C5 CD 16 03 21 01 00 E5    .*^.........!...
003F50:  CD 70 33 CD 52 0C 21 02 00 E5 CD 70 33 CD 52 0C    .p3.R.!....p3.R.
003F60:  11 00 00 C3 C4 00 21 F8 FF CD 8F 00 2A CF 63 E5    ......!.....*.c.
003F70:  CD BB 11 7D B4 CA 5F 2A 21 02 00 E5 CD 70 33 C3    ...}.._*!....p3.
003F80:  46 2A 0C 25 73 00 21 42 2A E5 2A 60 A1 E5 01 06    F*.%s.!B*.*`....
003F90:  00 C5 CD 16 03 21 01 00 E5 CD 70 33 C3 3C 2B 2A    .....!....p3.<+*
003FA0:  CF 63 E5 21 FE FF DD E5 C1 09 E5 21 FC FF DD E5    .c.!.......!....
003FB0:  C1 09 E5 21 FA FF DD E5 C1 09 E5 21 F8 FF DD E5    ...!.......!....
003FC0:  C1 09 E5 CD 49 11 DD 6E FE DD 66 FF E5 CD D8 31    ....I..n..f....1
003FD0:  7D B4 CA 19 2B DD 6E FC DD 66 FD 22 A5 63 DD 6E    }...+.n..f.".c.n
003FE0:  FA DD 66 FB 22 A3 63 DD 6E F8 DD 66 F9 22 A1 63    ..f."£c.n..f.".c
003FF0:  2A A1 63 22 9F 63 2A A1 63 22 9F 63 DD 6E FA DD    *.c".c*.c".c.n..
004000:  66 FB 11 01 00 CD 98 01 7D B4 CA 08 2B C3 DF 2A    f.......}...+..*
004010:  21 FA FF DD E5 C1 09 01 FF FF CD 7D 02 18 DD 2A    !..........}...*
004020:  9F 63 ED 5B DB A1 CD B0 01 7D B4 CA FD 2A 2A 9F    .c.[.....}...**.
004030:  63 E5 CD 02 36 EB 2A 9F 63 19 22 9F 63 21 9F 63    c...6.*.c.".c!.c
004040:  01 01 00 CD 7D 02 18 C8 2A CF 63 E5 CD 99 10 2A    ....}...*.c....*
004050:  A1 63 E5 CD B1 19 C3 3C 2B 2A CF 63 E5 DD 6E FE    .c.....<+*.c..n.
004060:  DD 66 FF E5 DD 6E FC DD 66 FD E5 DD 6E FA DD 66    .f...n..f...n..f
004070:  FB E5 DD 6E F8 DD 66 F9 E5 CD 6A 0F 2A A5 63 E5    ...n..f...j.*.c.
004080:  2A A3 63 E5 CD 2B 0C 11 00 00 C3 C4 00 21 FE FF    *£c..+.......!..
004090:  CD 8F 00 21 02 00 E5 CD 70 33 2A 9F 63 E5 2A A5    ...!....p3*.c.*.
0040A0:  63 11 01 00 B7 ED 52 E5 CD A5 1E DD 75 FE DD 74    c.....R.....u..t
0040B0:  FF 11 FF FF CD 88 01 7D B4 CA 95 2B C3 83 2B 0C    .......}...+..+.
0040C0:  25 73 00 21 7F 2B E5 2A 62 A1 E5 01 06 00 C5 CD    %s.!.+.*b.......
0040D0:  16 03 C3 B5 2B C3 9F 2B 0C 25 73 20 25 64 00 21    ....+..+.%s %d.!
0040E0:  98 2B E5 2A 64 A1 E5 DD 6E FE DD 66 FF E5 01 08    .+.*d...n..f....
0040F0:  00 C5 CD 16 03 21 01 00 E5 CD 70 33 2A A5 63 E5    .....!....p3*.c.
004100:  E3 21 2A 9F 63 E5 CD 02 36 11 01 00 19 EB 2A 9F    .!*.c...6.....*.
004110:  63 19 22 9F 63 CD 19 29 2A A5 63 E5 21 16 00 E5    c.".c..)*.c.!...
004120:  CD 2B 0C C3 1E 22 2A A5 63 E5 21 A3 63 01 01 00    .+..."*.c.!£c...
004130:  CD 72 02 E5 CD 2B 0C 2A 9F 63 ED 5B DB A1 CD B0    .r...+.*.c.[....
004140:  01 7D B4 CA 15 22 2A 9F 63 E5 CD 02 36 EB 2A 9F    .}..."*.c...6.*.
004150:  63 19 22 9F 63 21 9F 63 01 01 00 CD 7D 02 C3 61    c.".c!.c....}..a
004160:  28 2A A5 63 11 01 00 B7 ED 52 E5 21 01 00 E5 01    (*.c.....R.!....
004170:  06 00 C5 CD 00 09 22 A5 63 2A A5 63 E5 2A A3 63    ......".c*.c.*£c
004180:  E5 CD 2B 0C C3 61 28 2A A5 63 11 01 00 19 E5 21    ..+..a(*.c.....!
004190:  50 00 E5 01 06 00 C5 CD 74 09 22 A5 63 2A A5 63    P.......t.".c*.c
0041A0:  E5 2A A3 63 E5 CD 2B 0C C3 61 28 2A A5 63 11 01    .*£c..+..a(*.c..
0041B0:  00 CD 88 01 7D B4 CA 9F 22 2A A3 63 11 01 00 CD    ....}..."*£c....
0041C0:  98 01 7D B4 C2 95 22 2A A1 63 ED 5B D3 63 CD AF    ..}..."*.c.[.c..
0041D0:  01 7D B4 28 03 21 01 00 7D B4 28 03 21 01 00 7D    .}.(.!..}.(.!..}
0041E0:  B4 CA FA 22 2A A3 63 11 01 00 CD 88 01 7D B4 CA    ..."*£c......}..
0041F0:  BE 22 CD CC 28 2A A1 63 22 9F 63 C3 D1 22 21 A3    ."..(*.c".c.."!£
004200:  63 01 FF FF CD 7D 02 2A 9F 63 E5 CD E6 1E 22 9F    c....}.*.c....".
004210:  63 2A 9F 63 ED 5B DB A1 CD B6 01 7D B4 CA E9 22    c*.c.[.....}..."
004220:  21 01 00 22 A5 63 C3 F7 22 2A 9F 63 E5 CD 02 36    !..".c.."*.c...6
004230:  11 01 00 19 22 A5 63 C3 C3 23 2A A5 63 11 01 00    ....".c..#*.c...
004240:  CD 98 01 7D B4 CA C3 23 2A 9F 63 ED 5B DB A1 CD    ...}...#*.c.[...
004250:  B6 01 7D B4 CA 20 23 21 01 00 22 A5 63 C3 C3 23    ..}.. #!..".c..#
004260:  2A 9F 63 E5 CD 02 36 11 01 00 19 EB 2A A5 63 CD    *.c...6.....*.c.
004270:  AF 01 7D B4 CA 48 23 2A 9F 63 E5 CD 02 36 11 01    ..}..H#*.c...6..
004280:  00 19 22 A5 63 C3 C3 23 21 A5 63 01 FF FF CD 72    ..".c..#!.c....r
004290:  02 11 01 00 B7 ED 52 EB 2A 9F 63 19 6E 26 00 11    ......R.*.c.n&..
0042A0:  20 00 CD 88 01 7D B4 CA 7A 23 2A A5 63 11 01 00     ....}..z#*.c...
0042B0:  CD 98 01 7D B4 28 03 21 01 00 7D B4 CA 81 23 18    ...}.(.!..}...#.
0042C0:  C7 21 A5 63 01 FF FF CD 72 02 11 01 00 B7 ED 52    .!.c....r......R
0042D0:  EB 2A 9F 63 19 6E 26 00 11 20 00 CD 91 01 7D B4    .*.c.n&.. ....}.
0042E0:  CA B3 23 2A A5 63 11 00 00 CD 98 01 7D B4 28 03    ..#*.c......}.(.
0042F0:  21 01 00 7D B4 CA BA 23 18 C7 21 A5 63 01 01 00    !..}...#..!.c...
004300:  2A A3 63 E5 CD 2B 0C 11 00 00 C3 C4 00 21 FE FF    *£c..+.......!..
004310:  CD 8F 00 21 02 00 E5 CD 70 33 2A 9F 63 E5 2A A5    ...!....p3*.c.*.
004320:  63 11 01 00 B7 ED 52 E5 CD 59 1E 7D B4 CA B3 2C    c.....R..Y.}...,
004330:  2A D9 A1 E5 2A 9F 63 E5 2A A5 63 11 01 00 B7 ED    *...*.c.*.c.....
004340:  52 E5 CD A5 1E E5 CD 45 15 DD 75 FE DD 74 FF DD    R......E..u..t..
004350:  6E FE DD 66 FF 11 0A 00 CD 0B 01 EB 2A 48 A1 19    n..f........*H..
004360:  11 04 00 19 CD 4B 02 E5 2A D9 A1 E5 CD 4B 0D 11    .....K..*....K..
004370:  00 00 CD 91 01 7D B4 C2 6D 2C DD 6E FE DD 66 FF    .....}..m,.n..f.
004380:  11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 00 00 19 E5    .......*H.......
004390:  2A 9F 63 E5 2A A5 63 11 01 00 B7 ED 52 E5 CD A5    *.c.*.c.....R...
0043A0:  1E EB E1 CD 4B 02 CD AF 01 7D B4 28 03 21 01 00    ....K....}.(.!..
0043B0:  7D B4 CA 88 2C DD 6E FE DD 66 FF 11 00 00 CD 98    }...,.n..f......
0043C0:  01 7D B4 28 03 21 01 00 7D B4 C2 9E 2C DD 6E FE    .}.(.!..}...,.n.
0043D0:  DD 66 FF ED 5B D5 A1 CD 88 01 7D B4 28 03 21 01    .f..[.....}.(.!.
0043E0:  00 7D B4 CA B3 2C 21 FE FF DD E5 C1 09 01 FF FF    .}...,!.........
0043F0:  CD 7D 02 2A 9F 63 E5 2A A5 63 11 01 00 B7 ED 52    .}.*.c.*.c.....R
004400:  E5 CD 59 1E CD 03 01 7D B4 C2 F6 2C 2A D9 A1 E5    ..Y....}...,*...
004410:  2A 9F 63 E5 2A A5 63 11 01 00 B7 ED 52 E5 CD A5    *.c.*.c.....R...
004420:  1E E5 DD 6E FE DD 66 FF E5 CD 3E 16 11 00 00 CD    ...n..f...>.....
004430:  88 01 7D B4 28 03 21 01 00 7D B4 CA 17 2D C3 05    ..}.(.!..}...-..
004440:  2D 0C 25 73 00 21 01 2D E5 2A 66 A1 E5 01 06 00    -.%s.!.-.*f.....
004450:  C5 CD 16 03 C3 21 2D DD 6E FE DD 66 FF E5 CD 39    .....!-.n..f...9
004460:  2D 21 01 00 E5 CD 70 33 2A A5 63 E5 2A A3 63 E5    -!....p3*.c.*£c.
004470:  CD 2B 0C 11 00 00 C3 C4 00 21 00 00 CD 8F 00 DD    .+.......!......
004480:  6E 04 DD 66 05 11 0A 00 CD 0B 01 EB 2A 48 A1 19    n..f........*H..
004490:  11 06 00 19 CD 4B 02 E5 CD D8 31 7D B4 CA 0A 2E    .....K....1}....
0044A0:  DD 6E 04 DD 66 05 11 0A 00 CD 0B 01 EB 2A 48 A1    .n..f........*H.
0044B0:  19 11 08 00 19 5E 23 56 2A D3 63 19 E5 CD B1 19    .....^#V*.c.....
0044C0:  22 A1 63 2A A1 63 22 9F 63 21 01 00 22 A3 63 2A    ".c*.c".c!.."£c*
0044D0:  9F 63 E5 CD 02 36 EB 2A 9F 63 19 E5 DD 6E 04 DD    .c...6.*.c...n..
0044E0:  66 05 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 08 00    f........*H.....
0044F0:  19 5E 23 56 2A D3 63 19 EB E1 CD B7 01 7D B4 CA    .^#V*.c......}..
004500:  CD 7D 02 2A A5 63 E5 2A A3 63 E5 CD 2B 0C C3 61    .}.*.c.*£c..+..a
004510:  28 2A 9F 63 ED 5B DB A1 CD B6 01 7D B4 CA EC 23    (*.c.[.....}...#
004520:  21 00 00 DD 75 FB DD 74 FC C3 F9 23 2A 9F 63 E5    !...u..t...#*.c.
004530:  CD 02 36 DD 75 FB DD 74 FC DD 6E FB DD 66 FC 11    ..6.u..t..n..f..
004540:  01 00 19 EB 2A A5 63 CD A7 01 7D B4 CA 42 24 2A    ....*.c...}..B$*
004550:  A3 63 11 16 00 CD 99 01 7D B4 C2 38 24 2A 9F 63    £c......}..8$*.c
004560:  E5 CD 02 36 EB 2A 9F 63 19 11 01 00 19 ED 5B DB    ...6.*.c......[.
004570:  A1 CD B0 01 7D B4 28 03 21 01 00 7D B4 28 03 21    ....}.(.!..}.(.!
004580:  01 00 7D B4 CA A7 24 2A A3 63 11 16 00 CD 88 01    ..}...$*£c......
004590:  7D B4 CA 6E 24 2A 9F 63 E5 CD 02 36 11 01 00 19    }..n$*.c...6....
0045A0:  EB 2A 9F 63 19 22 9F 63 CD 19 29 C3 9E 24 21 A3    .*.c.".c..)..$!£
0045B0:  63 01 01 00 CD 7D 02 2A 9F 63 ED 5B DB A1 CD B0    c....}.*.c.[....
0045C0:  01 7D B4 CA 95 24 2A 9F 63 E5 CD 02 36 EB 2A 9F    .}...$*.c...6.*.
0045D0:  63 19 22 9F 63 21 9F 63 01 01 00 CD 7D 02 21 01    c.".c!.c....}.!.
0045E0:  00 22 A5 63 C3 3B 25 DD 6E FB DD 66 FC 11 01 00    .".c.;%.n..f....
0045F0:  19 EB 2A A5 63 CD 99 01 7D B4 CA 3B 25 DD 6E FB    ..*.c...}..;%.n.
004600:  DD 66 FC EB 2A A5 63 CD 99 01 7D B4 CA F3 24 21    .f..*.c...}...$!
004610:  A5 63 01 01 00 CD 72 02 11 01 00 B7 ED 52 EB 2A    .c....r......R.*
004620:  9F 63 19 6E 26 00 11 20 00 CD 91 01 7D B4 28 03    .c.n&.. ....}.(.
004630:  21 01 00 7D B4 CA FA 24 18 C3 21 A5 63 01 01 00    !..}...$..!.c...
004640:  CD 72 02 11 01 00 B7 ED 52 EB 2A 9F 63 19 6E 26    .r......R.*.c.n&
004650:  00 11 20 00 CD 88 01 7D B4 CA 34 25 DD 6E FB DD    .. ....}..4%.n..
004660:  66 FC 11 01 00 19 EB 2A A5 63 CD 99 01 7D B4 28    f......*.c...}.(
004670:  03 21 01 00 7D B4 CA 3B 25 18 BF 2A A5 63 E5 2A    .!..}..;%..*.c.*
004680:  A3 63 E5 CD 2B 0C C3 61 28 2A A1 63 ED 5B D3 63    £c..+..a(*.c.[.c
004690:  CD 88 01 7D B4 CA 67 25 2A A1 63 22 9F 63 21 01    ...}..g%*.c".c!.
0046A0:  00 22 A3 63 C3 E8 25 21 01 00 DD 75 FB DD 74 FC    ."£c..%!...u..t.
0046B0:  DD 6E FB DD 66 FC 11 16 00 CD 99 01 7D B4 CA 9F    .n..f.......}...
0046C0:  25 C3 93 25 21 FB FF DD E5 C1 09 01 01 00 CD 7D    %..%!..........}
0046D0:  02 18 DD 2A A1 63 E5 CD E6 1E 22 A1 63 18 E5 2A    ...*.c....".c..*
0046E0:  A1 63 E5 CD B1 19 22 A1 63 2A A1 63 22 9F 63 21    .c....".c*.c".c!
0046F0:  01 00 DD 75 FB DD 74 FC DD 6E FB DD 66 FC ED 5B    ...u..t..n..f..[
004700:  E0 2D 2A 9F 63 E5 CD 02 36 11 01 00 19 EB 2A 9F    .-*.c...6.....*.
004710:  63 19 22 9F 63 21 A3 63 01 01 00 CD 7D 02 18 AF    c.".c!£c....}...
004720:  DD 6E 04 DD 66 05 11 0A 00 CD 0B 01 EB 2A 48 A1    .n..f........*H.
004730:  19 11 08 00 19 5E 23 56 2A D3 63 19 11 01 00 19    .....^#V*.c.....
004740:  ED 5B 9F 63 B7 ED 52 22 A5 63 11 02 00 C3 C4 00    .[.c..R".c......
004750:  21 F1 FF CD 8F 00 21 03 00 E5 CD 70 33 21 0D 00    !.....!....p3!..
004760:  E5 CD 0B 0A DD 75 F8 DD 74 F9 11 00 00 CD 88 01    .....u..t.......
004770:  7D B4 C2 4C 2E 21 0D 00 E5 CD 0B 0A DD 75 FA DD    }..L.!.......u..
004780:  74 FB 11 00 00 CD 88 01 7D B4 28 03 21 01 00 7D    t.......}.(.!..}
004790:  B4 CA 73 2E C3 5A 2E 25 73 00 21 57 2E E5 2A 6A    ..s..Z.%s.!W..*j
0047A0:  A1 E5 01 06 00 C5 CD 16 03 21 01 00 E5 CD 37 38    .........!....78
0047B0:  C3 99 2E 21 C2 63 E5 C3 7C 2E 72 00 21 7A 2E E5    ...!.c..|.r.!z..
0047C0:  CD 46 00 DD 75 FE DD 74 FF 11 00 00 CD 88 01 7D    .F..u..t.......}
0047D0:  B4 CA 99 2E CD 64 31 18 DA 21 02 00 E5 CD 70 33    .....d1..!....p3
0047E0:  C3 A9 2E 25 73 20 25 73 00 21 A3 2E E5 2A 6C A1    ...%s %s.!£..*l.
0047F0:  E5 21 C2 63 E5 01 08 00 C5 CD 16 03 21 03 00 E5    .!.c........!...
004800:  CD 70 33 DD 6E FE DD 66 FF E5 CD 49 00 E5 CD 0B    .p3.n..f...I....
004810:  02 DD 75 F3 26 00 11 FF 00 CD 91 01 7D B4 CA 68    ..u.&.......}..h
004820:  30 DD 6E F3 26 00 CD 89 02 59 30 DD 6E FE DD 66    0.n.&....Y0.n..f
004830:  FF E5 C3 FE 2E 20 25 31 32 73 20 0D 20 00 21 F5    ..... %12s . .!.
004840:  2E E5 21 A7 63 E5 01 08 00 C5 CD 9E 04 11 01 00    ..!.c...........
004850:  CD 91 01 7D B4 CA 39 2F C3 23 2F 25 73 20 25 73    ...}..9/.#/%s %s
004860:  0A 0D 00 21 1B 2F E5 2A 6E A1 E5 2A 70 A1 E5 01    ...!./.*n..*p...
004870:  08 00 C5 CD 16 03 C3 94 2F 21 00 00 DD 75 F1 DD    ......../!...u..
004880:  74 F2 DD 6E F1 DD 66 F2 11 0C 00 CD 99 01 7D B4    t..n..f.......}.
004890:  CA 94 2F C3 65 2F 21 F1 FF DD E5 C1 09 01 01 00    ../.e/!.........
0048A0:  CD 7D 02 18 DD DD 6E F1 DD 66 F2 EB 21 A7 63 19    .}....n..f..!.c.
0048B0:  6E 26 00 11 0D 00 CD 88 01 7D B4 CA 92 2F DD 6E    n&.......}.../.n
0048C0:  F1 DD 66 F2 EB 21 A7 63 19 E5 21 00 00 D1 7D 12    ..f..!.c..!...}.
0048D0:  26 00 18 C2 C3 65 30 DD 6E FE DD 66 FF E5 C3 B8    &....e0.n..f....
0048E0:  2F 20 25 31 32 73 20 25 64 20 25 64 20 25 31 32    / %12s %d %d %12
0048F0:  73 20 25 64 20 0D 20 00 21 A1 2F E5 DD 6E F8 DD    s %d . .!./..n..
004900:  A3 63 CD 99 01 7D B4 CA E8 25 C3 DC 25 21 FB FF    £c...}...%..%!..
004910:  DD E5 C1 09 01 01 00 CD 7D 02 18 DC 2A 9F 63 E5    ........}...*.c.
004920:  CD 6D 1F 22 9F 63 18 E5 2A A5 63 E5 2A A3 63 E5    .m.".c..*.c.*£c.
004930:  CD 2B 0C C3 61 28 CD 71 28 ED 5B DB A1 CD B6 01    .+..a(.q(.[.....
004940:  7D B4 CA 18 26 21 16 00 22 A3 63 CD 71 28 E5 CD    }...&!.."£c.q(..
004950:  E6 1E 22 9F 63 C3 99 26 21 01 00 DD 75 FB DD 74    ..".c..&!...u..t
004960:  FC DD 6E FB DD 66 FC 11 16 00 CD 99 01 7D B4 CA    ..n..f.......}..
004970:  50 26 C3 44 26 21 FB FF DD E5 C1 09 01 01 00 CD    P&.D&!..........
004980:  7D 02 18 DD 2A A1 63 E5 CD 6D 1F 22 A1 63 18 E5    }...*.c..m.".c..
004990:  2A A1 63 E5 CD B1 19 22 A1 63 2A A1 63 22 9F 63    *.c....".c*.c".c
0049A0:  21 01 00 DD 75 FB DD 74 FC DD 6E FB DD 66 FC ED    !...u..t..n..f..
0049B0:  5B A3 63 CD 99 01 7D B4 CA 99 26 C3 8D 26 21 FB    [£c...}...&..&!.
0049C0:  FF DD E5 C1 09 01 01 00 CD 7D 02 18 DC 2A 9F 63    .........}...*.c
0049D0:  E5 CD 6D 1F 22 9F 63 18 E5 2A A5 63 E5 2A A3 63    ..m.".c..*.c.*£c
0049E0:  E5 CD 2B 0C C3 61 28 21 01 00 22 A5 63 21 01 00    ..+..a(!..".c!..
0049F0:  22 A3 63 2A A1 63 ED 5B D3 63 CD 91 01 7D B4 CA    "£c*.c.[.c...}..
004A00:  CC 26 2A D3 63 E5 CD B1 19 22 A1 63 2A A1 63 22    .&*.c....".c*.c"
004A10:  9F 63 2A A5 63 E5 2A A3 63 E5 CD 2B 0C C3 61 28    .c*.c.*£c..+..a(
004A20:  21 01 00 22 A5 63 CD 71 28 ED 5B DB A1 CD B0 01    !..".c.q(.[.....
004A30:  7D B4 CA 05 27 2A DB A1 11 01 00 B7 ED 52 E5 CD    }...'*.......R..
004A40:  B1 19 22 A1 63 CD 71 28 E5 CD E6 1E 22 9F 63 21    ..".c.q(....".c!
004A50:  16 00 22 A3 63 2A A5 63 E5 2A A3 63 E5 CD 2B 0C    .."£c*.c.*£c..+.
004A60:  C3 61 28 21 01 00 22 A5 63 2A A5 63 E5 2A A3 63    .a(!..".c*.c.*£c
004A70:  E5 CD 2B 0C C3 61 28 2A 9F 63 ED 5B DB A1 CD B6    ..+..a(*.c.[....
004A80:  01 7D B4 CA 4F 27 21 01 00 22 A5 63 C3 5D 27 2A    .}..O'!..".c.]'*
004A90:  9F 63 E5 CD 02 36 11 01 00 19 22 A5 63 2A A5 63    .c...6....".c*.c
004AA0:  E5 2A A3 63 E5 CD 2B 0C C3 61 28 2A A1 63 ED 5B    .*£c..+..a(*.c.[
004AB0:  D3 63 CD AF 01 7D B4 CA AC 27 CD CC 28 2A A3 63    .c...}...'..(*£c
004AC0:  11 16 00 CD 88 01 7D B4 CA 98 27 2A 9F 63 E5 CD    ......}...'*.c..
004AD0:  E6 1E 22 9F 63 C3 A1 27 21 A3 63 01 01 00 CD 7D    ..".c..'!£c....}
004AE0:  02 2A A5 63 E5 2A A3 63 E5 CD 2B 0C C3 61 28 CD    .*.c.*£c..+..a(.
004AF0:  71 28 ED 5B DB A1 CD B0 01 7D B4 CA F9 27 CD 19    q(.[.....}...'..
004B00:  66 F9 E5 21 F4 FF DD E5 C1 09 E5 21 F6 FF DD E5    f..!.......!....
004B10:  C1 09 E5 DD 6E FA DD 66 FB E5 21 FC FF DD E5 C1    ....n..f..!.....
004B20:  09 E5 01 10 00 C5 CD 9E 04 11 05 00 CD 91 01 7D    ...............}
004B30:  B4 CA 15 30 C3 FF 2F 25 73 20 25 73 0A 0D 00 21    ...0../%s %s...!
004B40:  F7 2F E5 2A 6E A1 E5 2A 72 A1 E5 01 08 00 C5 CD    ./.*n..*r.......
004B50:  16 03 C3 32 30 DD 6E F8 DD 66 F9 E5 DD 6E F4 DD    ...20.n..f...n..
004B60:  66 F5 E5 CD 45 15 E5 21 F4 FF DD E5 C1 09 E5 CD    f...E..!........
004B70:  2A 12 C3 65 30 C3 40 30 25 73 20 25 73 0A 0D 00    *..e0.@0%s %s...
004B80:  21 38 30 E5 2A 6E A1 E5 2A 74 A1 E5 01 08 00 C5    !80.*n..*t......
004B90:  CD 16 03 C3 65 30 C3 65 30 EB 2E 46 00 97 2F 42    ....e0.e0..F../B
004BA0:  00 00 00 18 D0 C3 C3 2E DD 6E FE DD 66 FF E5 CD    .........n..f...
004BB0:  4F 00 DD 6E F8 DD 66 F9 E5 CD 92 36 DD 6E FA DD    O..n..f....6.n..
004BC0:  66 FB E5 CD 92 36 2A A7 63 26 00 7D B4 CA BF 30    f....6*.c&.}...0
004BD0:  21 A7 63 E5 CD CF 30 7D B4 CA B8 30 C3 A2 30 25    !.c...0}...0..0%
004BE0:  73 00 21 9F 30 E5 2A 76 A1 E5 01 06 00 C5 CD 16    s.!.0.*v........
004BF0:  03 21 01 00 E5 CD 37 38 2A CF 63 E5 CD 99 10 21    .!....78*.c....!
004C00:  02 00 E5 CD 70 33 CD 52 0C 11 00 00 C3 C4 00 21    ....p3.R.......!
004C10:  FE FF CD 8F 00 DD 6E 04 DD 66 05 E5 CD 4F 17 DD    ......n..f...O..
004C20:  75 FE DD 74 FF DD 6E FE DD 66 FF CD 89 02 56 31    u..t..n..f....V1
004C30:  C3 F8 30 25 73 20 20 00 21 F3 30 E5 2A 78 A1 E5    ..0%s  .!.0.*x..
004C40:  01 06 00 C5 CD 16 03 21 01 00 11 02 00 C3 C4 00    .......!........
004C50:  C3 1A 31 0A 0D 25 73 20 20 00 21 13 31 E5 2A 7A    ..1..%s  .!.1.*z
004C60:  A1 E5 01 06 00 C5 CD 16 03 21 02 00 18 DC 2A CF    .........!....*.
004C70:  63 E5 2A D9 A1 E5 2A A5 63 E5 2A A3 63 E5 2A A1    c.*...*.c.*£c.*.
004C80:  63 E5 CD 6A 0F DD 6E 04 DD 66 05 22 D9 A1 21 00    c..j..n..f."..!.
004C90:  00 18 B7 C3 62 31 F0 30 FF FF 10 31 FE FF 00 00    ....b1.0...1....
004CA0:  18 CC 18 A6 21 FF FF CD 8F 00 C3 7A 31 0A 0D 25    ....!......z1..%
004CB0:  73 20 25 73 0A 0D 0A 25 73 00 21 6D 31 E5 2A 7C    s %s...%s.!m1.*|
004CC0:  A1 E5 21 C2 63 E5 2A 7E A1 E5 01 0A 00 C5 CD 16    ..!.c.*~........
004CD0:  03 C3 97 31 52 51 00 21 94 31 E5 CD 55 00 E5 CD    ...1RQ.!.1..U...
004CE0:  0B 02 DD 75 FF 26 00 E5 CD 3C 36 11 00 00 CD 88    ...u.&...<6.....
004CF0:  01 7D B4 CA B8 31 18 D9 DD 6E FF 26 00 11 51 00    .}...1...n.&..Q.
004D00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
004D10:  04 00 01 00 02 09 4E E5 04 00 C2 02 00 00 00 02    ......N.........
004D20:  04 00 C7 02 00 00 00 02 04 00 C3 02 00 00 00 02    ................
004D30:  04 00 C8 02 00 00 00 02 04 00 C4 02 00 00 00 02    ................
004D40:  04 00 C9 02 00 00 00 02 04 00 C5 02 00 00 00 02    ................
004D50:  04 00 C1 02 00 00 00 02 04 00 C6 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:  00 00 CD 8F 00 DD 6E 06 DD 66 07 22 9D 63 21 9D    ......n..f.".c!.
004E10:  63 01 01 00 CD 7D 02 E5 21 04 00 DD E5 C1 09 01    c....}..!.......
004E20:  01 00 CD 7D 02 6E 26 00 D1 7D 12 26 00 7D B4 CA    ...}.n&..}.&.}..
004E30:  F4 35 18 DA DD 6E 06 DD 66 07 11 04 00 C3 C4 00    .5...n..f.......
004E40:  18 F8 21 00 00 CD 8F 00 DD 6E 04 DD 66 05 22 9B    ..!......n..f.".
004E50:  63 21 9B 63 01 01 00 CD 7D 02 6E 26 00 7D B4 20    c!.c....}.n&.}. 
004E60:  F0 DD 6E 04 DD 66 05 EB 2A 9B 63 B7 ED 52 11 01    ..n..f..*.c..R..
004E70:  00 B7 ED 52 11 02 00 C3 C4 00 18 F8 21 00 00 CD    ...R........!...
004E80:  8F 00 DD 6E 06 DD 66 07 6E 26 00 EB DD 6E 04 26    ...n..f.n&...n.&
004E90:  00 EB CD 88 01 7D B4 CA 66 36 DD 6E 06 DD 66 07    .....}..f6.n..f.
004EA0:  11 04 00 C3 C4 00 DD 6E 06 DD 66 07 6E 26 00 CD    .......n..f.n&..
004EB0:  03 01 7D B4 CA 7C 36 21 00 00 18 E4 21 06 00 DD    ..}..|6!....!...
004EC0:  E5 C1 09 01 01 00 CD 72 02 21 01 00 7D B4 20 B2    .......r.!..}. .
004ED0:  18 CE 21 00 00 CD 8F 00 DD 6E 04 DD 66 05 11 04    ..!......n..f...
004EE0:  00 B7 ED 52 22 99 63 2A 99 63 11 02 00 19 5E 23    ...R".c*.c....^#
004EF0:  56 2A 46 A1 19 22 46 A1 2A F0 A1 22 97 63 2A 99    V*F.."F.*..".c*.
004F00:  63 ED 5B 97 63 CD AF 01 7D B4 CA E4 36 2A 97 63    c.[.c...}...6*.c
004F10:  11 00 00 19 5E 23 56 2A 99 63 CD B0 01 7D B4 28    ....^#V*.c...}.(
004F20:  03 21 01 00 CD 03 01 7D B4 CA 4A 37 C3 FE 36 2A    .!.....}..J7..6*
004F30:  97 63 11 00 00 19 CD 4B 02 22 97 63 18 C0 2A 97    .c.....K.".c..*.
004F40:  63 11 00 00 19 5E 23 56 2A 97 63 CD B6 01 7D B4    c....^#V*.c...}.
004F50:  CA 40 37 2A 99 63 ED 5B 97 63 CD AF 01 7D B4 C2    .@7*.c.[.c...}..
004F60:  36 37 2A 97 63 11 00 00 19 5E 23 56 2A 99 63 CD    67*.c....^#V*.c.
004F70:  B0 01 7D B4 28 03 21 01 00 7D B4 28 03 21 01 00    ..}.(.!..}.(.!..
004F80:  7D B4 CA 48 37 C3 4A 37 18 A5 2A 99 63 11 02 00    }..H7.J7..*.c...
004F90:  19 CD 4B 02 11 04 00 CD 0B 01 EB 2A 99 63 19 E5    ..K........*.c..
004FA0:  2A 97 63 11 00 00 19 5E 23 56 E1 CD 88 01 7D B4    *.c....^#V....}.
004FB0:  CA B4 37 2A 99 63 11 02 00 19 E5 E5 2A 97 63 11    ..7*.c......*.c.
004FC0:  00 00 19 CD 4B 02 11 02 00 19 5E 23 56 E1 CD 4B    ....K.....^#V..K
004FD0:  02 19 CD 6A 02 2A 99 63 11 00 00 19 E5 2A 97 63    ...j.*.c.....*.c
004FE0:  11 00 00 19 CD 4B 02 11 00 00 19 CD 4B 02 CD 6A    .....K......K..j
004FF0:  02 C3 C9 37 2A 99 63 11 00 00 19 E5 2A 97 63 11    ...7*.c.....*.c.
005000:  55 6E 61 62 6C 65 20 74 6F 20 69 6E 69 74 69 61    Unable to initia
005010:  6C 69 73 65 20 73 74 61 63 6B 2E 0D 0A 4E 6F 20    lise stack...No 
005020:  6D 6F 72 65 20 73 70 61 63 65 20 6F 6E 20 73 74    more space on st
005030:  61 63 6B 2E 0D 0A 4E 6F 20 6D 6F 72 65 20 72 6F    ack...No more ro
005040:  6F 6D 20 66 6F 72 20 73 74 72 69 6E 67 20 6F 6E    om for string on
005050:  20 73 74 61 63 6B 2E 0D 0A 55 6E 61 62 6C 65 20     stack...Unable 
005060:  74 6F 20 69 6E 69 74 69 61 6C 69 73 65 20 6C 69    to initialise li
005070:  73 74 2E 0D 0A 55 6E 61 62 6C 65 20 74 6F 20 61    st...Unable to a
005080:  64 64 20 74 6F 20 6C 69 73 74 2E 0D 0A 4E 6F 20    dd to list...No 
005090:  72 6F 6F 6D 20 66 6F 72 20 73 74 72 69 6E 67 20    room for string 
0050A0:  69 6E 20 6C 69 73 74 2E 0D 0A 55 6E 61 62 6C 65    in list...Unable
0050B0:  20 74 6F 20 69 6E 69 74 69 61 6C 69 73 65 20 74     to initialise t
0050C0:  65 78 74 20 62 75 66 66 65 72 2E 0D 0A 50 72 65    ext buffer...Pre
0050D0:  73 73 20 61 6E 79 20 6B 65 79 20 74 6F 20 71 75    ss any key to qu
0050E0:  69 74 2E 0D 0A 50 72 69 6E 74 65 72 20 6E 6F 74    it...Printer not
0050F0:  20 72 65 61 64 79 2E 0D 0A 46 72 65 65 3A 0D 0A     ready...Free:..
005100:  20 20 45 4E 54 45 52 20 2D 20 66 6F 6C 6C 6F 77      ENTER - follow
005110:  20 6C 69 6E 6B 2C 20 42 20 2D 20 67 6F 20 62 61     link, B - go ba
005120:  63 6B 2C 20 50 20 2D 20 70 72 69 6E 74 2C 20 48    ck, P - print, H
005130:  20 2D 20 68 65 6C 70 2C 20 51 20 2D 20 71 75 69     - help, Q - qui
005140:  74 20 20 0D 0A 59 6F 75 20 63 61 6E 6E 6F 74 20    t  ..You cannot 
005150:  67 6F 20 66 75 72 74 68 65 72 20 62 61 63 6B 2E    go further back.
005160:  0D 0A 59 6F 75 20 61 72 65 20 6F 75 74 73 69 64    ..You are outsid
005170:  65 20 74 68 65 20 74 65 78 74 20 61 72 65 61 2E    e the text area.
005180:  0D 0A 50 6F 73 69 74 69 6F 6E 3A 0D 0A 54 68 65    ..Position:..The
005190:  72 65 20 69 73 20 6E 6F 20 6C 69 6E 6B 20 74 68    re is no link th
0051A0:  65 72 65 2E 0D 0A 6C 69 6E 6B 73 20 68 65 72 65    ere...links here
0051B0:  2E 0D 0A 4F 75 74 20 6F 66 20 6D 65 6D 6F 72 79    ...Out of memory
0051C0:  20 77 68 65 6E 20 6C 6F 61 64 69 6E 67 20 6C 69     when loading li
0051D0:  6E 6B 62 61 73 65 2E 0D 0A 4C 6F 61 64 69 6E 67    nkbase...Loading
0051E0:  0D 0A 45 72 72 6F 72 20 69 6E 20 6C 69 6E 6B 62    ..Error in linkb
0051F0:  61 73 65 3A 0D 0A 46 20 63 6F 6D 6D 61 6E 64 20    ase:..F command 
005200:  00 00 19 CD 4B 02 CD 6A 02 2A 97 63 11 02 00 19    ....K..j.*.c....
005210:  CD 4B 02 11 04 00 CD 0B 01 EB 2A 97 63 19 ED 5B    .K........*.c..[
005220:  99 63 CD 88 01 7D B4 CA 1D 38 2A 97 63 11 02 00    .c...}...8*.c...
005230:  19 E5 E5 2A 99 63 11 02 00 19 5E 23 56 E1 CD 4B    ...*.c....^#V..K
005240:  02 19 CD 6A 02 2A 97 63 11 00 00 19 E5 2A 99 63    ...j.*.c.....*.c
005250:  11 00 00 19 CD 4B 02 CD 6A 02 C3 2B 38 2A 97 63    .....K..j..+8*.c
005260:  11 00 00 19 E5 2A 99 63 CD 6A 02 2A 97 63 22 F0    .....*.c.j.*.c".
005270:  A1 11 02 00 C3 C4 00 21 00 00 CD 8F 00 21 09 00    .......!.....!..
005280:  E5 CD 4F 00 21 0A 00 E5 CD 4F 00 DD 6E 04 DD 66    ..O.!....O..n..f
005290:  05 E5 CD 18 0D 11 02 00 C3 C4 00 0A 45 52 52 4F    ............ERRO
0052A0:  52 20 45 58 49 54 20 25 64 00 0A 45 58 49 54 20    R EXIT %d..EXIT 
0052B0:  4F 4B 00 0A 50 6C 65 61 73 65 20 70 72 65 73 73    OK..Please press
0052C0:  20 61 6E 79 20 6B 65 79 00 26 00 03 44 CB 15 03     any key.&..D...
0052D0:  44 CD 00 03 44 06 00 03 44 28 00 03 44 30 00 03    D...D...D(..D0..
0052E0:  44 04 00 03 44 DD E5 03 44 DD E1 03 44 FD E5 03    D...D...D...D...
0052F0:  44 FD E1 03 44 CD 00 03 44 F3 00 03 44 FB 00 03    D...D...D...D...
005300:  44 FF 00 03 44 4F 00 03 44 16 00 03 22 E8 09 03    D...DO..D..."...
005310:  22 F5 09 03 22 FE 09 03 44 1D 00 03 44 46 00 03    "..."...D...DF..
005320:  44 0D 00 03 4C 64 02 03 44 67 3D 00 00 11 FF 69    D...Ld..Dg=....i
005330:  6E 74 20 20 20 20 20 00 00 12 FF 6C 6F 6E 67 20    nt     ....long 
005340:  20 20 20 00 00 13 FF 72 65 67 69 73 74 65 72 00       ....register.
005350:  00 14 FF 72 65 74 75 72 6E 20 20 00 00 15 FF 73    ...return  ....s
005360:  68 6F 72 74 20 20 20 00 00 16 FF 73 69 7A 65 6F    hort   ....sizeo
005370:  03 00 A3 63 01 00 01 01 00 D2 63 BF 02 00 46 A1    ..£c......c...F.
005380:  59 0F 00 00 FB A1 0E 07 C3 CE BC 1A 24 FF 00 FF    Y...........$...
005390:  26 B1 0A 12 FD A7 86 22 37 67 CC 80 99 76 6A 33    &......"7g...vj3
0053A0:  97 82 02 F3 2C 0F 96 E7 F3 94 3E A8 60 99 0F 2A    ....,.....>.`..*
0053B0:  86 FA 63 80 EA A4 11 53 F3 0D 36 84 C2 AE DD 4D    ..c....S..6....M
0053C0:  B3 28 F4 6A 2C A1 F8 55 A5 FE 87 FA DB A6 21 AB    .(.j,..U......!.
0053D0:  2B 20 A3 5D 76 9A DF 5E B7 D4 9C 12 B3 D0 E3 1B    + £]v..^........
0053E0:  69 4F 5E 8E 57 86 95 A4 FC 8D 0E 41 32 B9 15 18    iO^.W......A2...
0053F0:  86 36 1D 38 8D C8 B4 C3 F0 D9 FB B0 34 9D 9E 37    .6.8........4..7
005400:  74 61 6B 65 73 20 6F 6E 65 20 70 61 72 61 6D 65    takes one parame
005410:  74 65 72 2E 0D 0A 42 20 63 6F 6D 6D 61 6E 64 20    ter...B command 
005420:  74 61 6B 65 73 20 66 69 76 65 20 70 61 72 61 6D    takes five param
005430:  65 74 65 72 73 2E 0D 0A 75 6E 6B 6E 6F 77 6E 20    eters...unknown 
005440:  63 6F 6D 6D 61 6E 64 2E 0D 0A 46 61 69 6C 65 64    command...Failed
005450:  20 74 6F 20 6C 6F 61 64 20 66 69 72 73 74 20 66     to load first f
005460:  69 6C 65 2E 0D 0A 46 69 6C 65 20 65 72 72 6F 72    ile...File error
005470:  2E 0D 0A 4D 65 6D 6F 72 79 20 65 78 68 61 75 73    ...Memory exhaus
005480:  74 65 64 2E 0D 0A 43 6F 75 6C 64 20 6E 6F 74 20    ted...Could not 
005490:  66 69 6E 64 0D 0A 28 52 29 65 74 72 79 2C 20 6F    find..(R)etry, o
0054A0:  72 20 28 51 29 75 69 74 3F 0D 0A 54 72 79 20 61    r (Q)uit?..Try a
0054B0:  67 61 69 6E 3F 20 28 59 2F 4E 29 0D 0A 52 65 2D    gain? (Y/N)..Re-
0054C0:  6C 6F 61 64 69 6E 67 20 6F 6C 64 20 66 69 6C 65    loading old file
0054D0:  2E 0D 0A 1A 63 6B 2E 0D 0A 55 6E 61 62 6C 65 20    ....ck...Unable 
0054E0:  74 6F 20 69 6E 69 74 69 61 6C 69 73 65 20 6C 69    to initialise li
0054F0:  73 74 2E 0D 0A 55 6E 61 62 6C 65 20 74 6F 20 61    st...Unable to a
005500:  65 20 31 0D 0A 1A 20 20 20 20 24 24 24 FF 00 FF    e 1...    $$$...
005510:  50 41 54 43 48 20 35 0D 0A 20 20 20 42 79 20 53    PATCH 5..   By S
005520:  74 65 70 68 65 6E 20 61 6E 64 20 4D 61 74 74 68    tephen and Matth
005530:  65 77 20 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A 20    ew Phillips.... 
005540:  20 20 57 68 61 74 20 67 61 73 74 72 6F 6E 6F 6D      What gastronom
005550:  69 63 20 64 65 6C 69 67 68 74 73 20 61 77 61 69    ic delights awai
005560:  74 20 75 73 20 20 66 6F 72 20 20 74 68 65 20 20    t us  for  the  
005570:  66 69 6E 61 6C 20 20 63 6F 75 72 73 65 3F 20 20    final  course?  
005580:  20 43 48 52 24 28 32 31 35 29 3B 3A 70 3D 28 78     CHR$(215);:p=(x
005590:  5C 31 36 30 29 2A 32 30 2B 31 3A 71 3D 28 34 30    \160)*20+1:q=(40
0055A0:  30 2D 79 29 5C 31 36 2B 31 3A 4C 4F 43 41 54 45    0-y)\16+1:LOCATE
0055B0:  20 70 2C 71 3A 0D 0A 20 20 20 43 41 4C 4C 20 61     p,q:..   CALL a
0055C0:  2C 40 66 24 3A 57 45 4E 44 3A 54 41 47 4F 46 46    ,@f$:WEND:TAGOFF
0055D0:  3A 49 46 20 4D 49 44 24 28 66 24 2C 39 2C 31 29    :IF MID$(f$,9,1)
0055E0:  3D 22 2E 22 20 54 48 45 4E 20 4D 45 4D 4F 52 59    ="." THEN MEMORY
0055F0:  20 48 49 4D 45 4D 2B 33 34 3A 43 41 4C 4C 20 26     HIMEM+34:CALL &
005600:  D6 98 27 36 55 1D 91 8F 8A DF 7A 15 65 F7 3B DF    ..'6U.....z.e.;.
005610:  B4 27 CE A1 DE 24 3B 09 70 5B CD 83 10 33 6B 4D    .'...$;.p[...3kM
005620:  67 45 40 CA A3 9D AD CE 19 90 12 A8 60 91 3D 08    gE@.£.......`.=.
005630:  EA AC ED C3 D2 44 1B FD 90 0E C9 E8 B4 9E 99 3B    .....D.........;
005640:  B9 A6 B7 A7 9A B3 7A 93 0A A1 D4 A3 1F A0 BE F0    ......z....£....
005650:  85 57 91 80 12 93 1E EE F7 CE 96 BC D0 D4 1C 68    .W.............h
005660:  18 7E 0F AC 5D 16 D6 69 4C 9A 8C 86 73 C0 51 76    .~..]..iL...s.Qv
005670:  85 4B 0A 73 8F E9 B4 C2 8D BF 52 4F 0C 5E 9A AC    .K.s......RO.^..
005680:  B3 89 C7 5A 0F 26 3D EC 82 12 31 0E 2A D0 6D 38    ...Z.&=...1.*.m8
005690:  0F 45 E8 3B 6F 3A 96 C4 59 D4 AF 92 DD 30 73 6E    .E.;o:..Y....0sn
0056A0:  F0 D9 E3 3D E8 6A E9 50 7D 5F 39 82 D0 EB E1 41    ...=.j.P}_9....A
0056B0:  E8 97 A6 45 E0 2A 52 42 F3 1F D0 25 E6 C2 AB 6F    ...E.*RB...%...o
0056C0:  93 11 8A 49 7A 53 CA 6C C2 80 23 E3 AD E9 E3 C8    ...IzS.l..#.....
0056D0:  3A 34 5C 36 F6 C4 04 4F C8 F4 BC 0B 7E 8E 1E 79    :4\6...O....~..y
0056E0:  01 20 35 37 3C A4 78 CE FE 58 30 08 71 73 13 66    . 57<.x..X0.qs.f
0056F0:  85 36 A7 BE A6 66 D6 D3 F0 0B 81 C2 7D 9F 15 FC    .6...f......}...
005700:  A9 06 43 89 7D 35 3F F5 56 94 78 1D 3F D4 A0 FE    ..C.}5?.V.x.?...
005710:  05 AF 29 BF BC 40 62 7A C3 19 01 0B DC 4D DE FA    ..)..@bz.....M..
005720:  C6 B4 28 5E 03 7A 96 E4 AE 16 E6 82 D0 EB E1 41    ..(^.z.........A
005730:  E8 97 1D 83 9C 65 FC 18 F1 06 04 82 AF EA 14 0E    .....e..........
005740:  82 08 D4 73 C9 98 B7 44 D1 99 EE 90 62 88 51 66    ...s...D....b.Qf
005750:  41 36 9F 0C 28 C4 04 4F C8 F4 BC 0B 56 EF AC 0B    A6..(..O....V...
005760:  CC 4A 2E D0 D9 C5 97 54 5D 8A F3 32 98 07 70 56    .J.....T]..2..pV
005770:  85 36 73 D4 8C E9 BC C2 15 C6 D7 0F 17 97 D8 73    .6s............s
005780:  66 63 ED 37 02 33 E2 8A 9E 3A B7 14 36 C5 6F F5    fc.7.3...:..6.o.
005790:  C7 80 03 1B 9A 0B DD 6E 21 5A 89 DB 94 64 4A 15    .......n!Z...dJ.
0057A0:  B7 8F 08 B5 38 22 C0 C4 F8 B8 03 A2 30 E4 95 22    ....8"......0.."
0057B0:  9B EB 63 D0 B8 E1 42 20 D3 7E A7 91 8D AB DF 14    ..c...B .~......
0057C0:  93 22 D7 2E 3B B2 04 63 AF 99 ED CD 89 C3 50 EF    ."..;..c......P.
0057D0:  E0 21 5F 6B DE EE A9 68 DF F4 BF 56 9B C5 1F 2C    .!_k...h...V...,
0057E0:  31 20 2F BE 73 A6 B6 E0 21 7E F2 76 86 22 73 33    1 /.s...!~.v."s3
0057F0:  78 D3 BD 1F 71 29 B6 86 3D 0B 9B 4B C5 9D DB D2    x...q)..=..K....
005800:  23 57 65 6C 63 6F 6D 65 20 74 6F 20 74 68 65 20    #Welcome to the 
005810:  50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61 74    Programmers' Pat
005820:  63 68 20 64 69 73 63 0D 0A 50 52 4F 47 52 41 4D    ch disc..PROGRAM
005830:  4D 45 52 53 27 20 50 41 54 43 48 0D 0A 42 79 20    MERS' PATCH..By 
005840:  53 74 65 70 68 65 6E 2C 20 4D 61 74 74 68 65 77    Stephen, Matthew
005850:  20 61 6E 64 20 48 69 6C 61 72 79 20 50 68 69 6C     and Hilary Phil
005860:  6C 69 70 73 0D 0A 0D 0A 54 68 65 20 50 72 6F 67    lips....The Prog
005870:  72 61 6D 6D 65 72 73 27 20 50 61 74 63 68 20 64    rammers' Patch d
005880:  69 73 63 20 66 65 61 74 75 72 65 73 20 61 6C 6C    isc features all
005890:  20 74 68 65 20 61 72 74 69 63 6C 65 73 20 61 6E     the articles an
0058A0:  64 20 70 72 6F 67 72 61 6D 73 20 66 72 6F 6D 20    d programs from 
0058B0:  74 68 65 0D 0A 61 63 63 6C 61 69 6D 65 64 20 57    the..acclaimed W
0058C0:  41 43 43 49 20 73 65 72 69 65 73 2E 20 20 54 68    ACCI series.  Th
0058D0:  65 20 66 69 6C 65 73 20 6F 6E 20 74 68 69 73 20    e files on this 
0058E0:  64 69 73 63 20 61 72 65 20 63 6F 70 79 72 69 67    disc are copyrig
0058F0:  68 74 20 53 74 65 70 68 65 6E 2C 20 4D 61 74 74    ht Stephen, Matt
005900:  68 65 77 0D 0A 61 6E 64 20 48 69 6C 61 72 79 20    hew..and Hilary 
005910:  50 68 69 6C 6C 69 70 73 2E 20 20 50 65 72 6D 69    Phillips.  Permi
005920:  73 73 69 6F 6E 20 69 73 20 67 72 61 6E 74 65 64    ssion is granted
005930:  20 74 6F 20 64 69 73 74 72 69 62 75 74 65 20 63     to distribute c
005940:  6F 70 69 65 73 20 6F 66 20 74 68 65 0D 0A 63 6F    opies of the..co
005950:  6D 70 6C 65 74 65 20 64 69 73 63 2C 20 74 6F 20    mplete disc, to 
005960:  70 72 69 6E 74 20 6F 75 74 20 74 68 65 20 61 72    print out the ar
005970:  74 69 63 6C 65 73 20 61 6E 64 20 6C 69 73 74 69    ticles and listi
005980:  6E 67 73 20 66 6F 72 20 70 65 72 73 6F 6E 61 6C    ngs for personal
005990:  20 75 73 65 2C 20 61 6E 64 20 74 6F 0D 0A 69 6E     use, and to..in
0059A0:  63 6F 72 70 6F 72 61 74 65 20 74 68 65 20 70 72    corporate the pr
0059B0:  6F 67 72 61 6D 6D 69 6E 67 20 65 78 61 6D 70 6C    ogramming exampl
0059C0:  65 73 20 69 6E 20 79 6F 75 72 20 6F 77 6E 20 70    es in your own p
0059D0:  72 6F 67 72 61 6D 73 2E 20 20 41 4C 4C 20 4F 54    rograms.  ALL OT
0059E0:  48 45 52 20 52 49 47 48 54 53 0D 0A 52 45 53 45    HER RIGHTS..RESE
0059F0:  52 56 45 44 2E 0D 0A 0D 0A 59 6F 75 20 63 61 6E    RVED.....You can
005A00:  50 2C EE AE 93 37 3C A8 D4 DF 79 48 25 D4 6E B1    P,...7<...yH%.n.
005A10:  12 44 00 33 37 50 8C 03 86 73 CF A1 23 39 69 74    .D.37P...s..#9it
005A20:  CE 8F 01 B4 6D 6B 97 A8 D3 F1 00 EC 07 B5 F0 43    ....mk.........C
005A30:  F9 71 2A CE BE A4 11 73 D3 3F C9 E8 BF 3F D6 02    .q*....s.?...?..
005A40:  FD 6F F4 4A 0C 92 07 27 D3 66 9C EC C8 AA 20 DF    .o.J...'.f.... .
005A50:  4E 46 5C 2F 07 11 D8 49 AD 81 CE 7C 93 E5 1C 68    NF\/...I...|...h
005A60:  14 DF 5F 92 18 D4 C1 84 DC BB F1 32 4D 3C 03 1E    .._........2M<..
005A70:  FF 53 D1 58 8C 72 D6 C3 F0 0A 9F 0F E6 FE 67 96    .S.X.r........g.
005A80:  AB 2C ED DA 19 35 3F A4 3A 86 75 0C 3B 2F CC EF    .,...5?.:.u.;/..
005A90:  16 00 03 22 E8 09 03 22 F5 09 03 22 FE 09 03 44    ..."..."..."...D
005AA0:  1D 00 03 44 0D 00 03 4C 64 02 03 44 67 3D 00 00    ...D...Ld..Dg=..
005AB0:  11 FF 69 6E 74 20 20 20 20 20 00 00 12 FF 6C 6F    ..int     ....lo
005AC0:  6E 67 20 20 20 20 00 00 13 FF 72 65 67 69 73 74    ng    ....regist
005AD0:  65 72 00 00 14 FF 72 65 74 75 72 6E 20 20 00 00    er....return  ..
005AE0:  15 FF 73 68 6F 72 74 20 20 20 00 00 16 FF 73 69    ..short   ....si
005AF0:  7A 65 6F 03 00 BA 63 01 00 01 07 00 D0 63 BF 00    zeo...c......c..
005B00:  EF 0F 20 EC 20 0D 00 00 6D 62 E8 F7 10 00 31 00    .. . ...mb....1.
005B10:  F5 03 95 20 0D 00 00 6D 62 EC 2C 0E 2C 0D 00 00    ... ...mb.,.,...
005B20:  6D 63 6F EC 01 AF 20 F5 0D 00 00 6D 62 EC 2C F5    mco... ....mb.,.
005B30:  10 F5 28 0D 00 00 6D E4 EF F5 0F 29 F6 12 00 1C    ..(...m....)....
005B40:  00 F6 03 9E 20 0D 00 00 64 65 6C 61 F9 EF 0E 20    .... ...dela... 
005B50:  EC 20 0D 00 00 6D 64 E5 01 B0 00 06 00 F7 03 B0    . ...md.........
005B60:  00 14 00 F8 03 BF 20 FF 03 28 19 17 29 F4 FF 03    ...... ..(..)...
005B70:  28 0E 29 3B 00 06 00 F9 03 C9 00 00 00 1A 35 30    (.);..........50
005B80:  4F 20 31 34 3A 52 45 41 44 20 61 24 3A 50 4F 4B    O 14:READ a$:POK
005B90:  45 20 61 2B 78 2C 56 41 4C 28 22 26 22 2B 61 24    E a+x,VAL("&"+a$
005BA0:  29 3A 4E 45 58 54 0D 0A 20 20 20 31 31 30 20 4D    ):NEXT..   110 M
005BB0:  4F 44 45 20 32 3A 50 52 49 4E 54 22 53 69 6C 6C    ODE 2:PRINT"Sill
005BC0:  79 20 73 74 72 69 6E 67 22 0D 0A 20 20 20 31 32    y string"..   12
005BD0:  30 20 61 24 3D 22 20 22 3A 4C 4F 43 41 54 45 20    0 a$=" ":LOCATE 
005BE0:  31 2C 31 3A 43 41 4C 4C 20 26 39 30 30 30 2C 40    1,1:CALL &9000,@
005BF0:  61 24 0D 0A 20 20 20 31 33 30 20 50 52 49 4E 54    a$..   130 PRINT
005C00:  00 00 E5 CD 8B 0C C3 31 34 21 01 00 E5 21 19 00    .......14!...!..
005C10:  E5 21 50 00 E5 21 19 00 E5 CD C5 0C 21 00 00 E5    .!P..!......!...
005C20:  CD A8 0C 21 01 00 E5 CD 8B 0C C3 31 34 21 15 00    ...!.......14!..
005C30:  E5 21 0B 00 E5 21 3C 00 E5 21 0D 00 E5 CD C5 0C    .!...!<..!......
005C40:  21 00 00 E5 CD A8 0C 21 01 00 E5 CD 8B 0C 21 32    !......!......!2
005C50:  00 E5 21 03 00 E5 CD 2B 0C C3 31 34 C3 31 34 81    ..!....+..14.14.
005C60:  33 00 00 A5 33 01 00 C9 33 02 00 ED 33 03 00 00    3...3...3...3...
005C70:  00 11 02 00 C3 C4 00 21 FF FF CD 8F 00 DD 6E 04    .......!......n.
005C80:  DD 66 05 6E 26 00 11 00 00 CD 91 01 7D B4 CA EE    .f.n&.......}...
005C90:  34 DD 6E 04 DD 66 05 E5 CD 11 0E 11 00 00 CD 88    4.n..f..........
005CA0:  01 7D B4 CA DE 34 C3 71 34 0C 25 73 20 20 25 73    .}...4.q4.%s  %s
005CB0:  00 21 69 34 E5 2A 5A A1 E5 2A 7E A1 E5 01 08 00    .!i4.*Z..*~.....
005CC0:  C5 CD 16 03 C3 8A 34 52 51 00 21 87 34 E5 CD 55    ......4RQ.!.4..U
005CD0:  00 E5 CD 0B 02 DD 75 FF 26 00 E5 CD 3C 36 11 00    ......u.&...<6..
005CE0:  00 CD 88 01 7D B4 CA AB 34 18 D9 CD 52 0C DD 6E    ....}...4...R..n
005CF0:  FF 26 00 CD 89 02 D4 34 21 04 00 DD E5 C1 09 01    .&.....4!.......
005D00:  FF FF CD 7D 02 C3 DE 34 21 FF FF 11 02 00 C3 C4    ...}...4!.......
005D10:  00 C3 DE 34 B8 34 52 00 C8 34 51 00 00 00 21 04    ...4.4R..4Q...!.
005D20:  00 DD E5 C1 09 01 01 00 CD 7D 02 C3 3D 34 21 00    .........}..=4!.
005D30:  00 18 D8 18 D6 21 AC FF CD 8F 00 21 FE 09 E5 C3    .....!.....!....
005D40:  04 35 72 00 21 02 35 E5 CD 46 00 DD 75 FE DD 74    .5r.!.5..F..u..t
005D50:  FF 11 00 00 CD 88 01 7D B4 CA 23 35 21 00 00 E5    .......}..#5!...
005D60:  CD 37 38 21 00 00 DD 75 FC DD 74 FD DD 6E FC DD    .78!...u..t..n..
005D70:  66 FD 11 1D 00 CD 99 01 7D B4 CA AF 35 C3 4F 35    f.......}...5.O5
005D80:  21 FC FF DD E5 C1 09 01 01 00 CD 7D 02 18 DD 21    !..........}...!
005D90:  AC FF DD E5 C1 09 E5 21 4F 00 E5 DD 6E FE DD 66    .......!O...n..f
005DA0:  FF E5 CD 3C 0E DD 6E FC DD 66 FD 11 02 00 CD 0B    ...<..n..f......
005DB0:  01 EB 21 4A A1 19 E5 21 AC FF DD E5 C1 09 E5 CD    ..!J...!........
005DC0:  02 36 11 01 00 19 E5 CD 0B 0A CD 6A 02 DD 6E FC    .6.........j..n.
005DD0:  DD 66 FD 11 02 00 CD 0B 01 EB 21 4A A1 19 CD 4B    .f........!J...K
005DE0:  02 E5 21 AC FF DD E5 C1 09 E5 CD BF 35 18 91 DD    ..!.........5...
005DF0:  6E FE DD 66 FF E5 CD 4F 00 11 00 00 C3 C4 00 21    n..f...O.......!
005E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
006000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
006010:  05 00 01 00 02 09 4E E5 05 00 C5 02 00 00 00 02    ......N.........
006020:  05 00 C1 02 00 00 00 02 05 00 C6 02 00 00 00 02    ................
006030:  05 00 C2 02 00 00 00 02 05 00 C7 02 00 00 00 02    ................
006040:  05 00 C3 02 00 00 00 02 05 00 C8 02 00 00 00 02    ................
006050:  05 00 C4 02 00 00 00 02 05 00 C9 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:  6F 6F 6D 0D 0A 52 45 41 44 4D 45 09 2E 09 74 68    oom..README...th
006110:  69 73 20 66 69 6C 65 0D 0A 0D 0A 4F 74 68 65 72    is file....Other
006120:  20 66 69 6C 65 73 20 6F 6E 20 73 69 64 65 20 41     files on side A
006130:  20 6F 66 20 74 68 65 20 64 69 73 63 3A 0D 0A 0D     of the disc:...
006140:  0A 42 53 49 44 45 09 2E 42 41 53 09 74 68 65 20    .BSIDE..BAS.the 
006150:  42 53 49 44 45 20 70 72 6F 67 72 61 6D 20 66 6F    BSIDE program fo
006160:  72 20 63 6F 70 79 69 6E 67 20 73 69 64 65 20 42    r copying side B
006170:  0D 0A 42 53 49 44 45 09 2E 42 49 4E 09 64 69 74    ..BSIDE..BIN.dit
006180:  74 6F 0D 0A 44 49 53 43 4D 45 4E 55 2E 42 41 53    to..DISCMENU.BAS
006190:  09 74 68 65 20 70 72 6F 67 72 61 6D 20 66 65 61    .the program fea
0061A0:  74 75 72 65 64 20 69 6E 20 61 72 74 69 63 6C 65    tured in article
0061B0:  73 20 31 2C 32 2C 34 20 61 6E 64 20 35 0D 0A 46    s 1,2,4 and 5..F
0061C0:  49 47 31 36 31 09 2E 09 73 75 62 72 6F 75 74 69    IG161...subrouti
0061D0:  6E 65 20 66 65 61 74 75 72 65 64 20 69 6E 20 61    ne featured in a
0061E0:  72 74 69 63 6C 65 20 32 0D 0A 46 49 47 31 36 31    rticle 2..FIG161
0061F0:  38 20 2E 09 61 6E 6F 74 68 65 72 20 73 75 62 72    8 ..another subr
006200:  6F 75 74 69 6E 65 20 66 65 61 74 75 72 65 64 20    outine featured 
006210:  69 6E 20 61 72 74 69 63 6C 65 20 32 0D 0A 46 49    in article 2..FI
006220:  47 32 09 2E 09 61 6E 20 65 78 61 6D 70 6C 65 20    G2...an example 
006230:  66 72 6F 6D 20 61 72 74 69 63 6C 65 20 33 0D 0A    from article 3..
006240:  46 49 47 32 37 09 2E 09 61 6E 6F 74 68 65 72 20    FIG27...another 
006250:  65 78 61 6D 70 6C 65 20 66 72 6F 6D 20 61 72 74    example from art
006260:  69 63 6C 65 20 33 0D 0A 46 49 47 32 37 31 09 2E    icle 3..FIG271..
006270:  09 61 6E 20 65 78 61 6D 70 6C 65 20 66 72 6F 6D    .an example from
006280:  20 61 72 74 69 63 6C 65 73 20 33 20 61 6E 64 20     articles 3 and 
006290:  34 0D 0A 46 49 47 32 37 31 38 09 2E 09 61 6E 6F    4..FIG2718...ano
0062A0:  74 68 65 72 20 65 78 61 6D 70 6C 65 20 66 72 6F    ther example fro
0062B0:  6D 20 61 72 74 69 63 6C 65 20 34 0D 0A 4D 45 4E    m article 4..MEN
0062C0:  55 45 58 31 09 2E 42 41 53 09 74 68 65 20 6C 69    UEX1..BAS.the li
0062D0:  73 74 69 6E 67 20 66 72 6F 6D 20 61 72 74 69 63    sting from artic
0062E0:  6C 65 20 36 0D 0A 4D 45 4E 55 45 58 32 09 2E 42    le 6..MENUEX2..B
0062F0:  41 53 09 6C 69 73 74 69 6E 67 20 31 20 66 72 6F    AS.listing 1 fro
006300:  20 72 65 61 64 20 74 68 65 20 61 72 74 69 63 6C     read the articl
006310:  65 73 20 62 79 20 75 73 69 6E 67 20 74 68 65 20    es by using the 
006320:  4C 6F 6F 6D 20 68 79 70 65 72 74 65 78 74 20 76    Loom hypertext v
006330:  69 65 77 65 72 2C 20 77 68 69 63 68 20 77 69 6C    iewer, which wil
006340:  6C 20 61 6C 73 6F 0D 0A 70 72 69 6E 74 20 74 68    l also..print th
006350:  65 6D 20 6F 75 74 20 69 66 20 79 6F 75 20 68 61    em out if you ha
006360:  76 65 20 61 20 70 72 69 6E 74 65 72 2E 20 20 54    ve a printer.  T
006370:  6F 20 64 6F 20 74 68 69 73 2C 20 6A 75 73 74 20    o do this, just 
006380:  52 55 4E 22 44 49 53 43 20 61 6E 64 20 4C 6F 6F    RUN"DISC and Loo
006390:  6D 20 77 69 6C 6C 0D 0A 73 74 61 72 74 20 75 70    m will..start up
0063A0:  2E 20 20 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67    .  The following
0063B0:  20 68 65 61 64 69 6E 67 73 20 74 68 65 6E 20 62     headings then b
0063C0:  65 63 6F 6D 65 20 68 79 70 65 72 6C 69 6E 6B 73    ecome hyperlinks
0063D0:  20 77 68 69 63 68 20 63 61 6E 20 62 65 20 66 6F     which can be fo
0063E0:  6C 6C 6F 77 65 64 0D 0A 62 79 20 6D 6F 76 69 6E    llowed..by movin
0063F0:  67 20 74 68 65 20 63 75 72 73 6F 72 20 6F 76 65    g the cursor ove
006400:  72 20 74 68 65 20 6C 69 6E 6B 20 61 6E 64 20 70    r the link and p
006410:  72 65 73 73 69 6E 67 20 45 4E 54 45 52 2E 0D 0A    ressing ENTER...
006420:  0D 0A 54 68 65 20 61 72 74 69 63 6C 65 73 20 63    ..The articles c
006430:  61 6E 20 61 6C 73 6F 20 62 65 20 76 69 65 77 65    an also be viewe
006440:  64 20 77 69 74 68 20 61 20 74 65 78 74 20 65 64    d with a text ed
006450:  69 74 6F 72 20 6F 72 20 77 6F 72 64 70 72 6F 63    itor or wordproc
006460:  65 73 73 6F 72 20 73 75 63 68 20 61 73 0D 0A 50    essor such as..P
006470:  72 6F 74 65 78 74 2E 0D 0A 0D 0A 49 66 20 74 68    rotext.....If th
006480:  69 73 20 68 61 73 20 62 65 65 6E 20 73 75 70 70    is has been supp
006490:  6C 69 65 64 20 6F 6E 20 61 20 33 2E 35 22 20 64    lied on a 3.5" d
0064A0:  69 73 63 20 61 6E 64 20 79 6F 75 20 64 6F 20 6E    isc and you do n
0064B0:  6F 74 20 68 61 76 65 20 61 20 73 69 64 65 20 73    ot have a side s
0064C0:  77 69 74 63 68 2C 0D 0A 52 55 4E 22 42 53 49 44    witch,..RUN"BSID
0064D0:  45 20 74 6F 20 63 6F 70 79 20 74 68 65 20 42 20    E to copy the B 
0064E0:  73 69 64 65 20 6F 66 20 74 68 65 20 64 69 73 63    side of the disc
0064F0:  20 6F 6E 74 6F 20 61 20 64 69 73 63 20 69 6E 20     onto a disc in 
006500:  6D 20 61 72 74 69 63 6C 65 20 37 0D 0A 4D 45 4E    m article 7..MEN
006510:  55 45 58 33 20 2E 42 41 53 09 6C 69 73 74 69 6E    UEX3 .BAS.listin
006520:  67 20 32 20 66 72 6F 6D 20 61 72 74 69 63 6C 65    g 2 from article
006530:  20 37 0D 0A 4D 45 4E 55 45 58 34 20 2E 42 41 53     7..MENUEX4 .BAS
006540:  09 6C 69 73 74 69 6E 67 20 32 20 6D 6F 64 69 66    .listing 2 modif
006550:  69 65 64 20 74 6F 20 75 73 65 20 74 68 65 20 53    ied to use the S
006560:  48 49 46 54 20 6B 65 79 0D 0A 4D 45 4E 55 53 55    HIFT key..MENUSU
006570:  42 20 2E 09 74 68 65 20 6D 65 6E 75 20 73 75 62    B ..the menu sub
006580:  72 6F 75 74 69 6E 65 20 66 65 61 74 75 72 65 64    routine featured
006590:  20 69 6E 20 61 72 74 69 63 6C 65 73 20 36 2D 38     in articles 6-8
0065A0:  0D 0A 4D 49 44 49 31 09 2E 42 41 53 09 6C 69 73    ..MIDI1..BAS.lis
0065B0:  74 69 6E 67 20 66 72 6F 6D 20 61 72 74 69 63 6C    ting from articl
0065C0:  65 20 31 30 3A 20 61 20 70 72 6F 67 72 61 6D 20    e 10: a program 
0065D0:  74 6F 20 70 6C 61 79 20 61 20 6D 69 64 64 6C 65    to play a middle
0065E0:  20 43 0D 0A 50 45 4C 4D 41 4E 09 2E 42 41 53 09     C..PELMAN..BAS.
0065F0:  74 68 65 20 63 61 72 64 20 67 61 6D 65 20 66 65    the card game fe
006600:  61 74 75 72 65 64 20 69 6E 20 61 72 74 69 63 6C    atured in articl
006610:  65 20 39 0D 0A 53 45 4E 44 09 2E 41 53 4D 09 61    e 9..SEND..ASM.a
006620:  73 73 65 6D 62 6C 79 20 6C 69 73 74 69 6E 67 20    ssembly listing 
006630:  66 6F 72 20 4D 49 44 49 20 7C 53 45 4E 44 20 52    for MIDI |SEND R
006640:  53 58 0D 0A 53 45 4E 44 09 2E 42 41 53 09 42 41    SX..SEND..BAS.BA
006650:  53 49 43 20 6C 6F 61 64 65 72 20 66 6F 72 20 4D    SIC loader for M
006660:  49 44 49 20 7C 53 45 4E 44 20 52 53 58 20 28 73    IDI |SEND RSX (s
006670:  65 65 20 61 72 74 69 63 6C 65 20 31 31 29 0D 0A    ee article 11)..
006680:  0D 0A 4F 74 68 65 72 20 66 69 6C 65 73 20 6F 6E    ..Other files on
006690:  20 73 69 64 65 20 42 20 6F 66 20 74 68 65 20 64     side B of the d
0066A0:  69 73 63 3A 0D 0A 0D 0A 34 36 34 52 53 58 09 2E    isc:....464RSX..
0066B0:  42 41 53 09 6C 69 73 74 69 6E 67 20 31 20 66 72    BAS.listing 1 fr
0066C0:  6F 6D 20 61 72 74 69 63 6C 65 20 31 35 20 77 68    om article 15 wh
0066D0:  69 63 68 20 69 6D 70 72 6F 76 65 73 20 34 36 34    ich improves 464
0066E0:  20 52 53 58 20 68 61 6E 64 6C 69 6E 67 0D 0A 36     RSX handling..6
0066F0:  34 4B 42 49 54 53 09 2E 4C 4F 47 09 4C 6F 67 6F    4KBITS..LOG.Logo
006700:  79 6F 75 72 20 41 20 64 72 69 76 65 2E 0D 0A 0D    your A drive....
006710:  0A 54 75 72 6E 20 74 68 65 20 64 69 73 63 20 6F    .Turn the disc o
006720:  76 65 72 20 62 65 66 6F 72 65 20 66 6F 6C 6C 6F    ver before follo
006730:  77 69 6E 67 20 74 68 65 73 65 20 6C 69 6E 6B 73    wing these links
006740:  3A 0D 0A 0D 0A 41 72 74 69 63 6C 65 20 31 20 20    :....Article 1  
006750:  2D 20 69 6E 74 72 6F 64 75 63 69 6E 67 20 61 20    - introducing a 
006760:  64 69 73 63 20 6D 65 6E 75 0D 0A 41 72 74 69 63    disc menu..Artic
006770:  6C 65 20 32 20 20 20 20 2D 20 6C 69 6E 65 20 34    le 2    - line 4
006780:  30 2C 20 74 65 73 74 69 6E 67 20 6B 65 79 73 20    0, testing keys 
006790:  61 6E 64 20 6D 6F 76 69 6E 67 20 74 68 65 20 63    and moving the c
0067A0:  75 72 73 6F 72 0D 0A 41 72 74 69 63 6C 65 20 33    ursor..Article 3
0067B0:  20 20 20 20 2D 20 67 65 74 74 69 6E 67 20 42 41        - getting BA
0067C0:  53 49 43 20 61 6E 64 20 6D 61 63 68 69 6E 65 20    SIC and machine 
0067D0:  63 6F 64 65 20 74 6F 20 77 6F 72 6B 20 74 6F 67    code to work tog
0067E0:  65 74 68 65 72 20 28 70 61 72 74 20 31 29 0D 0A    ether (part 1)..
0067F0:  41 72 74 69 63 6C 65 20 34 20 20 20 20 2D 20 70    Article 4    - p
006800:  61 72 74 20 32 2C 20 61 6E 64 20 74 68 65 20 6D    art 2, and the m
006810:  61 63 68 69 6E 65 20 63 6F 64 65 20 66 72 6F 6D    achine code from
006820:  20 74 68 65 20 64 69 73 63 20 6D 65 6E 75 0D 0A     the disc menu..
006830:  41 72 74 69 63 6C 65 20 35 20 20 20 20 2D 20 66    Article 5    - f
006840:  69 6E 61 6C 20 61 72 74 69 63 6C 65 20 6F 6E 20    inal article on 
006850:  74 68 65 20 64 69 73 63 20 6D 65 6E 75 0D 0A 41    the disc menu..A
006860:  72 74 69 63 6C 65 20 36 20 20 2D 20 61 20 67 65    rticle 6  - a ge
006870:  6E 65 72 61 6C 20 70 75 72 70 6F 73 65 20 6D 65    neral purpose me
006880:  6E 75 20 73 75 62 72 6F 75 74 69 6E 65 0D 0A 41    nu subroutine..A
006890:  72 74 69 63 6C 65 20 37 20 20 20 20 2D 20 68 6F    rticle 7    - ho
0068A0:  77 20 74 6F 20 67 65 74 20 74 68 65 20 6D 6F 73    w to get the mos
0068B0:  74 20 6F 75 74 20 6F 66 20 74 68 65 20 6D 65 6E    t out of the men
0068C0:  75 20 73 75 62 72 6F 75 74 69 6E 65 0D 0A 41 72    u subroutine..Ar
0068D0:  74 69 63 6C 65 20 38 20 20 20 20 2D 20 68 6F 77    ticle 8    - how
0068E0:  20 74 68 65 20 6D 65 6E 75 20 73 75 62 72 6F 75     the menu subrou
0068F0:  74 69 6E 65 20 77 6F 72 6B 73 0D 0A 41 72 74 69    tine works..Arti
006900:  20 64 65 66 69 6E 69 74 69 6F 6E 73 20 66 6F 72     definitions for
006910:  20 74 68 65 20 34 36 34 20 61 6E 64 20 36 36 34     the 464 and 664
006920:  20 28 73 65 65 20 61 72 74 69 63 6C 65 20 32 31     (see article 21
006930:  29 0D 0A 41 31 34 54 31 09 09 74 61 62 6C 65 20    )..A14T1..table 
006940:  66 72 6F 6D 20 61 72 74 69 63 6C 65 20 31 34 20    from article 14 
006950:  77 69 74 68 20 73 79 6E 74 61 78 20 6F 66 20 42    with syntax of B
006960:  41 53 49 43 20 31 2E 31 20 63 6F 6D 6D 61 6E 64    ASIC 1.1 command
006970:  73 0D 0A 41 49 31 09 2E 42 41 53 09 6C 69 73 74    s..AI1..BAS.list
006980:  69 6E 67 20 66 72 6F 6D 20 61 72 74 69 63 6C 65    ing from article
006990:  20 31 36 0D 0A 41 49 32 09 2E 42 41 53 09 6C 69     16..AI2..BAS.li
0069A0:  73 74 69 6E 67 20 66 72 6F 6D 20 61 72 74 69 63    sting from artic
0069B0:  6C 65 20 31 36 20 77 69 74 68 20 76 6F 63 61 62    le 16 with vocab
0069C0:  75 6C 61 72 79 20 73 61 76 69 6E 67 0D 0A 41 49    ulary saving..AI
0069D0:  33 09 2E 42 41 53 09 69 6D 70 72 6F 76 65 64 20    3..BAS.improved 
0069E0:  76 65 72 73 69 6F 6E 20 6F 66 20 41 49 20 66 72    version of AI fr
0069F0:  6F 6D 20 61 72 74 69 63 6C 65 20 31 37 0D 0A 41    om article 17..A
006A00:  49 34 09 2E 42 41 53 09 41 49 20 77 69 74 68 20    I4..BAS.AI with 
006A10:  61 20 62 69 6E 61 72 79 20 74 72 65 65 20 28 73    a binary tree (s
006A20:  65 65 20 61 72 74 69 63 6C 65 20 31 39 29 0D 0A    ee article 19)..
006A30:  41 49 35 09 2E 42 41 53 09 41 49 20 77 69 74 68    AI5..BAS.AI with
006A40:  20 61 20 68 61 73 68 20 74 61 62 6C 65 20 28 66     a hash table (f
006A50:  72 6F 6D 20 61 72 74 69 63 6C 65 20 32 30 29 0D    rom article 20).
006A60:  0A 41 49 36 09 2E 4C 4F 47 09 41 49 20 69 6E 20    .AI6..LOG.AI in 
006A70:  4C 6F 67 6F 20 2D 20 74 68 65 20 76 65 72 73 69    Logo - the versi
006A80:  6F 6E 20 70 75 62 6C 69 73 68 65 64 20 69 6E 20    on published in 
006A90:  57 41 43 43 49 0D 0A 41 49 37 09 2E 4C 4F 47 09    WACCI..AI7..LOG.
006AA0:  41 49 20 69 6E 20 4C 6F 67 6F 20 2D 20 61 6E 20    AI in Logo - an 
006AB0:  69 6D 70 72 6F 76 65 64 20 76 65 72 73 69 6F 6E    improved version
006AC0:  20 75 73 69 6E 67 20 70 72 6F 70 65 72 74 79 20     using property 
006AD0:  6C 69 73 74 73 0D 0A 4C 49 53 54 45 58 09 2E 42    lists..LISTEX..B
006AE0:  41 53 09 65 78 61 6D 70 6C 65 20 6C 69 6E 6B 65    AS.example linke
006AF0:  64 20 6C 69 73 74 20 66 72 6F 6D 20 61 72 74 69    d list from arti
006B00:  63 6C 65 20 39 20 20 2D 20 61 20 63 61 72 64 20    cle 9  - a card 
006B10:  67 61 6D 65 0D 0A 41 72 74 69 63 6C 65 20 31 30    game..Article 10
006B20:  20 2D 20 70 72 6F 67 72 61 6D 6D 69 6E 67 20 61     - programming a
006B30:  20 4D 49 44 49 20 69 6E 74 65 72 66 61 63 65 0D     MIDI interface.
006B40:  0A 41 72 74 69 63 6C 65 20 31 31 20 20 20 2D 20    .Article 11   - 
006B50:  74 68 65 20 6D 61 69 6E 20 4D 49 44 49 20 6D 65    the main MIDI me
006B60:  73 73 61 67 65 73 2C 20 61 6E 64 20 61 6E 20 52    ssages, and an R
006B70:  53 58 20 74 6F 20 73 65 6E 64 20 74 68 65 6D 0D    SX to send them.
006B80:  0A 0D 0A 4C 69 6E 6B 73 20 74 6F 20 61 72 74 69    ...Links to arti
006B90:  63 6C 65 73 20 6F 6E 20 74 68 69 73 20 73 69 64    cles on this sid
006BA0:  65 20 6F 66 20 74 68 65 20 64 69 73 63 3A 20 20    e of the disc:  
006BB0:  20 20 20 0D 0A 0D 0A 41 72 74 69 63 6C 65 20 31       ....Article 1
006BC0:  32 20 20 20 2D 20 6F 74 68 65 72 20 4D 49 44 49    2   - other MIDI
006BD0:  20 6D 65 73 73 61 67 65 73 2C 20 61 6E 64 20 61     messages, and a
006BE0:  20 70 72 6F 67 72 61 6D 20 74 6F 20 70 6C 61 79     program to play
006BF0:  20 61 20 74 75 6E 65 0D 0A 41 72 74 69 63 6C 65     a tune..Article
006C00:  20 31 33 20 2D 20 68 6F 77 20 74 6F 20 61 64 61     13 - how to ada
006C10:  70 74 20 36 31 32 38 20 70 72 6F 67 72 61 6D 73    pt 6128 programs
006C20:  20 66 6F 72 20 74 68 65 20 34 36 34 2C 20 77 69     for the 464, wi
006C30:  74 68 20 61 6E 20 52 53 58 20 74 6F 20 68 65 6C    th an RSX to hel
006C40:  70 0D 0A 41 72 74 69 63 6C 65 20 31 34 20 20 20    p..Article 14   
006C50:  2D 20 63 6F 6D 6D 61 6E 64 73 20 61 64 64 65 64    - commands added
006C60:  20 69 6E 20 42 41 53 49 43 20 31 2E 31 2C 20 61     in BASIC 1.1, a
006C70:  6E 64 20 77 68 61 74 20 74 6F 20 64 6F 20 77 69    nd what to do wi
006C80:  74 68 20 6D 6F 73 74 20 6F 66 20 74 68 65 6D 0D    th most of them.
006C90:  0A 41 72 74 69 63 6C 65 20 31 35 20 20 20 2D 20    .Article 15   - 
006CA0:  62 75 67 73 20 69 6E 20 34 36 34 20 42 41 53 49    bugs in 464 BASI
006CB0:  43 2C 20 61 6E 64 20 68 6F 77 20 74 6F 20 64 65    C, and how to de
006CC0:  61 6C 20 77 69 74 68 20 74 68 65 6D 0D 0A 41 72    al with them..Ar
006CD0:  74 69 63 6C 65 20 31 36 20 2D 20 41 49 3A 20 61    ticle 16 - AI: a
006CE0:  6E 20 22 61 72 74 69 66 69 63 69 61 6C 20 69 6E    n "artificial in
006CF0:  74 65 6C 6C 69 67 65 6E 63 65 22 20 63 6F 6E 76    telligence" conv
006D00:  63 6C 65 20 31 38 0D 0A 53 43 41 4E 34 36 34 09    cle 18..SCAN464.
006D10:  2E 42 41 53 09 52 53 58 20 74 6F 20 73 63 61 6E    .BAS.RSX to scan
006D20:  20 66 6F 72 20 34 36 34 2D 75 6E 66 72 69 65 6E     for 464-unfrien
006D30:  64 6C 79 20 42 41 53 49 43 20 28 73 65 65 20 61    dly BASIC (see a
006D40:  72 74 69 63 6C 65 20 31 33 29 0D 0A 53 43 41 4E    rticle 13)..SCAN
006D50:  34 36 34 09 2E 42 49 4E 09 62 69 6E 61 72 79 20    464..BIN.binary 
006D60:  66 69 6C 65 20 66 6F 72 20 74 68 65 20 61 62 6F    file for the abo
006D70:  76 65 0D 0A 53 43 41 4E 36 31 32 38 2E 42 41 53    ve..SCAN6128.BAS
006D80:  09 76 65 72 73 69 6F 6E 20 6F 66 20 53 43 41 4E    .version of SCAN
006D90:  34 36 34 20 74 6F 20 72 75 6E 20 6F 6E 20 42 41    464 to run on BA
006DA0:  53 49 43 20 31 2E 31 20 6D 61 63 68 69 6E 65 73    SIC 1.1 machines
006DB0:  0D 0A 53 43 41 4E 36 31 32 38 2E 42 49 4E 09 62    ..SCAN6128.BIN.b
006DC0:  69 6E 61 72 79 20 66 69 6C 65 20 66 6F 72 20 74    inary file for t
006DD0:  68 65 20 61 62 6F 76 65 0D 0A 54 55 4E 45 09 2E    he above..TUNE..
006DE0:  42 41 53 09 70 72 6F 67 72 61 6D 20 74 6F 20 70    BAS.program to p
006DF0:  6C 61 79 20 61 20 74 75 6E 65 20 66 72 6F 6D 20    lay a tune from 
006E00:  61 72 74 69 63 6C 65 20 31 32 0D 0A 0D 0A 2D 2D    article 12....--
006E10:  2D 2D 0D 0A 2A 20 53 65 65 20 22 42 6C 61 73 74    --..* See "Blast
006E20:  20 66 72 6F 6D 20 74 68 65 20 50 61 73 74 22 2C     from the Past",
006E30:  20 57 41 43 43 49 20 31 31 38 2C 20 4A 61 6E 20     WACCI 118, Jan 
006E40:  31 39 39 38 2C 20 70 2E 20 32 37 2D 32 39 2E 0D    1998, p. 27-29..
006E50:  0A 1A 6E 64 20 48 69 6C 61 72 79 20 50 68 69 6C    ..nd Hilary Phil
006E60:  6C 69 70 73 0D 0A 0D 0A 54 68 65 20 50 72 6F 67    lips....The Prog
006E70:  72 61 6D 6D 65 72 73 27 20 50 61 74 63 68 20 64    rammers' Patch d
006E80:  6F 6E 20 70 75 62 6C 69 73 68 65 64 20 69 6E 20    on published in 
006E90:  57 41 43 43 49 0D 0A 41 49 37 09 2E 4C 4F 47 09    WACCI..AI7..LOG.
006EA0:  41 49 20 69 6E 20 4C 6F 67 6F 20 2D 20 61 6E 20    AI in Logo - an 
006EB0:  69 6D 70 72 6F 76 65 64 20 76 65 72 73 69 6F 6E    improved version
006EC0:  20 75 73 69 6E 67 20 70 72 6F 70 65 72 74 79 20     using property 
006ED0:  6C 69 73 74 73 0D 0A 4C 49 53 54 45 58 09 2E 42    lists..LISTEX..B
006EE0:  41 53 09 65 78 61 6D 70 6C 65 20 6C 69 6E 6B 65    AS.example linke
006EF0:  64 20 6C 69 73 74 20 66 72 6F 6D 20 61 72 74 69    d list from arti
006F00:  65 72 73 61 74 69 6F 6E 20 70 72 6F 67 72 61 6D    ersation program
006F10:  0D 0A 41 72 74 69 63 6C 65 20 31 37 20 20 20 2D    ..Article 17   -
006F20:  20 69 6D 70 72 6F 76 69 6E 67 20 74 68 65 20 70     improving the p
006F30:  72 6F 67 72 61 6D 20 75 73 69 6E 67 20 61 20 6C    rogram using a l
006F40:  69 6E 6B 65 64 20 6C 69 73 74 0D 0A 41 72 74 69    inked list..Arti
006F50:  63 6C 65 20 31 38 20 20 20 2D 20 6D 6F 72 65 20    cle 18   - more 
006F60:  61 62 6F 75 74 20 6C 69 6E 6B 65 64 20 6C 69 73    about linked lis
006F70:  74 73 2C 20 61 6E 64 20 4D 72 20 42 6C 61 63 6B    ts, and Mr Black
006F80:  20 74 68 65 20 6E 65 77 73 61 67 65 6E 74 0D 0A     the newsagent..
006F90:  41 72 74 69 63 6C 65 20 31 39 20 20 20 2D 20 69    Article 19   - i
006FA0:  6D 70 72 6F 76 69 6E 67 20 73 65 61 72 63 68 20    mproving search 
006FB0:  73 70 65 65 64 73 20 77 69 74 68 20 62 69 6E 61    speeds with bina
006FC0:  72 79 20 74 72 65 65 73 0D 0A 41 72 74 69 63 6C    ry trees..Articl
006FD0:  65 20 32 30 20 20 20 2D 20 75 73 69 6E 67 20 68    e 20   - using h
006FE0:  61 73 68 20 74 61 62 6C 65 73 20 74 6F 20 72 65    ash tables to re
006FF0:  64 75 63 65 20 73 65 61 72 63 68 69 6E 67 20 74    duce searching t
007000:  69 6D 65 0D 0A 41 72 74 69 63 6C 65 20 32 31 20    ime..Article 21 
007010:  20 20 2D 20 41 49 20 69 6E 20 4C 6F 67 6F 0D 0A      - AI in Logo..
007020:  0D 0A 4F 74 68 65 72 20 66 69 6C 65 73 20 6F 6E    ..Other files on
007030:  20 62 6F 74 68 20 73 69 64 65 73 20 6F 66 20 74     both sides of t
007040:  68 65 20 64 69 73 63 3A 0D 0A 0D 0A 44 49 53 43    he disc:....DISC
007050:  09 2E 42 41 53 09 72 75 6E 73 20 74 68 65 20 4C    ..BAS.runs the L
007060:  6F 6F 6D 20 68 79 70 65 72 74 65 78 74 20 76 69    oom hypertext vi
007070:  65 77 65 72 0D 0A 48 45 4C 50 09 2E 54 58 54 09    ewer..HELP..TXT.
007080:  74 68 65 20 68 65 6C 70 20 74 65 78 74 20 66 6F    the help text fo
007090:  72 20 4C 6F 6F 6D 0D 0A 4C 49 4E 4B 42 41 53 45    r Loom..LINKBASE
0070A0:  2E 54 58 54 09 74 68 65 20 6C 69 6E 6B 61 67 65    .TXT.the linkage
0070B0:  20 64 61 74 61 20 66 6F 72 20 4C 6F 6F 6D 0D 0A     data for Loom..
0070C0:  4C 4F 4F 4D 09 2E 42 49 4E 09 74 68 65 20 4C 6F    LOOM..BIN.the Lo
0070D0:  6F 6D 20 70 72 6F 67 72 61 6D 0D 0A 4D 45 53 53    om program..MESS
0070E0:  41 47 45 53 2E 54 58 54 09 74 68 65 20 6D 65 73    AGES.TXT.the mes
0070F0:  73 61 67 65 20 74 65 78 74 73 20 66 6F 72 20 4C    sage texts for L
007100:  74 20 6D 6F 6E 74 68 27 73 20 42 6C 61 73 74 20    t month's Blast 
007110:  66 72 6F 6D 20 74 68 65 20 50 61 73 74 20 61 72    from the Past ar
007120:  65 20 20 61 6E 79 74 68 69 6E 67 20 74 6F 20 67    e  anything to g
007130:  6F 20 62 79 2C 20 77 65 20 68 61 76 65 20 70 6C    o by, we have pl
007140:  65 6E 74 79 0D 0A 20 20 20 6F 66 20 72 65 61 73    enty..   of reas
007150:  6F 6E 20 74 6F 20 63 65 6C 65 62 72 61 74 65 2E    on to celebrate.
007160:  20 20 54 68 65 6E 20 20 61 67 61 69 6E 2C 20 20      Then  again,  
007170:  49 20 20 68 61 76 65 20 20 72 75 6E 20 6F 75 74    I  have  run out
007180:  20 6F 66 20 69 6E 73 70 69 72 61 74 69 6F 6E 20     of inspiration 
007190:  66 6F 72 0D 0A 20 20 20 73 75 62 68 65 61 64 73    for..   subheads
0071A0:  20 74 68 69 73 20 6D 6F 6E 74 68 2E 2E 2E 0D 0A     this month.....
0071B0:  0D 0A 20 20 20 53 4F 20 57 48 41 54 20 49 53 20    ..   SO WHAT IS 
0071C0:  4D 49 44 49 20 54 48 45 4E 3F 0D 0A 20 20 20 49    MIDI THEN?..   I
0071D0:  20 73 75 70 70 6F 73 65 20 77 65 20 6F 75 67 68     suppose we ough
0071E0:  74 20 20 74 6F 20 20 73 74 61 72 74 20 20 77 69    t  to  start  wi
0071F0:  74 68 20 20 74 68 65 20 20 6F 62 6C 69 67 61 74    th  the  obligat
007200:  6F 72 79 20 65 78 70 6C 61 6E 61 74 69 6F 6E 20    ory explanation 
007210:  74 68 61 74 20 4D 49 44 49 0D 0A 20 20 20 73 74    that MIDI..   st
007220:  61 6E 64 73 20 66 6F 72 20 4D 75 73 69 63 61 6C    ands for Musical
007230:  20 49 6E 73 74 72 75 6D 65 6E 74 20 20 44 69 67     Instrument  Dig
007240:  69 74 61 6C 20 20 49 6E 74 65 72 66 61 63 65 2C    ital  Interface,
007250:  20 20 61 6E 64 20 20 69 73 20 61 20 73 74 61 6E      and  is a stan
007260:  64 61 72 64 20 66 6F 72 0D 0A 20 20 20 63 6F 6E    dard for..   con
007270:  74 72 6F 6C 20 61 6E 64 20 63 6F 6D 6D 75 6E 69    trol and communi
007280:  63 61 74 69 6F 6E 20 64 65 76 65 6C 6F 70 65 64    cation developed
007290:  20 20 62 79 20 20 74 68 65 20 6D 61 6A 6F 72 20      by  the major 
0072A0:  6B 65 79 62 6F 61 72 64 20 6D 61 6E 75 66 61 63    keyboard manufac
0072B0:  74 75 72 65 72 73 2E 0D 0A 20 20 20 41 6C 6C 20    turers...   All 
0072C0:  6D 6F 64 65 72 6E 20 6B 65 79 62 6F 61 72 64 73    modern keyboards
0072D0:  20 28 65 78 63 65 70 74 20 20 74 68 65 20 20 63     (except  the  c
0072E0:  68 65 61 70 65 72 20 20 6D 6F 64 65 6C 73 29 20    heaper  models) 
0072F0:  20 68 61 76 65 20 4D 49 44 49 20 73 6F 63 6B 65     have MIDI socke
007300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
007310:  06 00 01 00 02 09 4E E5 06 00 C8 02 00 00 00 02    ......N.........
007320:  06 00 C4 02 00 00 00 02 06 00 C9 02 00 00 00 02    ................
007330:  06 00 C5 02 00 00 00 02 06 00 C1 02 00 00 00 02    ................
007340:  06 00 C6 02 00 00 00 02 06 00 C2 02 00 00 00 02    ................
007350:  06 00 C7 02 00 00 00 02 06 00 C3 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:  20 6C 65 66 74 20 6F 66 20 20 22 69 73 22 20 20     left of  "is"  
007410:  69 73 20 20 22 68 6F 77 22 2C 20 20 61 6E 64 20    is  "how",  and 
007420:  20 74 6F 20 74 68 65 20 72 69 67 68 74 20 6F 66     to the right of
007430:  20 22 69 73 22 20 69 73 0D 0A 20 20 20 22 74 72     "is" is..   "tr
007440:  65 65 73 22 2E 0D 0A 0D 0A 20 20 20 43 4C 49 4D    ees".....   CLIM
007450:  42 49 4E 47 20 54 52 45 45 53 0D 0A 20 20 20 54    BING TREES..   T
007460:  68 69 73 20 73 74 72 75 63 74 75 72 65 20 6D 65    his structure me
007470:  61 6E 73 20 74 68 61 74 20 77 65 20 63 61 6E 20    ans that we can 
007480:  73 65 61 72 63 68 20 20 66 6F 72 20 61 20 77 6F    search  for a wo
007490:  72 64 20 76 65 72 79 20 71 75 69 63 6B 6C 79 2E    rd very quickly.
0074A0:  20 20 53 75 70 70 6F 73 65 0D 0A 20 20 20 77 65      Suppose..   we
0074B0:  20 77 61 6E 74 65 64 20 74 6F 20 73 65 61 72 63     wanted to searc
0074C0:  68 20 66 6F 72 20 74 68 65 20 77 6F 72 64 20 22    h for the word "
0074D0:  68 6F 77 22 2E 20 20 20 53 74 61 72 74 69 6E 67    how".   Starting
0074E0:  20 61 74 20 74 68 65 20 74 6F 70 20 6F 66 20 74     at the top of t
0074F0:  68 65 20 74 72 65 65 2C 0D 0A 20 20 20 77 65 20    he tree,..   we 
007500:  68 61 76 65 20 74 68 65 20 77 6F 72 64 20 22 54    have the word "T
007510:  68 69 73 22 2E 20 20 57 65 20 6D 6F 76 65 20 20    his".  We move  
007520:  72 69 67 68 74 2C 20 62 65 63 61 75 73 65 20 22    right, because "
007530:  68 6F 77 22 20 63 6F 6D 65 73 20 61 66 74 65 72    how" comes after
007540:  20 22 54 68 69 73 22 0D 0A 20 20 20 69 6E 20 41     "This"..   in A
007550:  53 43 49 49 20 6F 72 64 65 72 2E 20 20 4D 6F 76    SCII order.  Mov
007560:  69 6E 67 20 72 69 67 68 74 20 20 77 65 20 20 63    ing right  we  c
007570:  6F 6D 65 20 20 74 6F 20 20 22 69 73 22 2E 20 20    ome  to  "is".  
007580:  20 54 68 69 73 20 74 69 6D 65 20 22 68 6F 77 22     This time "how"
007590:  20 63 6F 6D 65 73 0D 0A 20 20 20 62 65 66 6F 72     comes..   befor
0075A0:  65 20 74 68 65 20 77 6F 72 64 2C 20 73 6F 20 77    e the word, so w
0075B0:  65 20 20 6D 6F 76 65 20 20 6C 65 66 74 2C 20 20    e  move  left,  
0075C0:  61 6E 64 20 20 66 69 6E 64 20 20 74 68 65 20 20    and  find  the  
0075D0:  77 6F 72 64 20 77 65 20 77 61 6E 74 2E 20 20 54    word we want.  T
0075E0:  72 79 20 69 74 0D 0A 20 20 20 79 6F 75 72 73 65    ry it..   yourse
0075F0:  6C 66 20 77 69 74 68 20 6F 6E 65 20 6F 66 20 74    lf with one of t
007600:  61 74 20 74 68 65 20 74 6F 70 20 61 6E 64 20 67    at the top and g
007610:  72 6F 77 20 64 6F 77 6E 77 61 72 64 73 2C 0D 0A    row downwards,..
007620:  20 20 20 77 69 74 68 20 74 68 65 20 6C 65 61 76       with the leav
007630:  65 73 20 61 74 20 74 68 65 20 62 6F 74 74 6F 6D    es at the bottom
007640:  2E 20 20 57 65 20 61 72 65 20 6A 75 73 74 20 67    .  We are just g
007650:  6F 69 6E 67 20 74 6F 20 6C 6F 6F 6B 20 61 74 20    oing to look at 
007660:  62 69 6E 61 72 79 20 74 72 65 65 73 2C 0D 0A 20    binary trees,.. 
007670:  20 20 77 68 69 63 68 20 61 72 65 20 74 68 65 20      which are the 
007680:  65 61 73 69 65 73 74 20 74 6F 20 75 6E 64 65 72    easiest to under
007690:  73 74 61 6E 64 2E 20 20 20 54 68 65 72 65 20 20    stand.   There  
0076A0:  61 72 65 20 6F 74 68 65 72 20 73 6F 72 74 73 20    are other sorts 
0076B0:  6F 66 20 74 72 65 65 2C 20 62 75 74 0D 0A 20 20    of tree, but..  
0076C0:  20 74 68 65 79 20 61 72 65 20 6D 75 63 68 20 68     they are much h
0076D0:  61 72 64 65 72 20 74 6F 20 63 75 6C 74 69 76 61    arder to cultiva
0076E0:  74 65 20 75 73 69 6E 67 20 42 41 53 49 43 2E 0D    te using BASIC..
0076F0:  0A 0D 0A 20 20 20 57 65 20 61 72 65 20 67 6F 69    ...   We are goi
007700:  6E 67 20 74 6F 20 75 73 65 20 61 20 62 69 6E 61    ng to use a bina
007710:  72 79 20 74 72 65 65 20 20 74 6F 20 6B 65 65 70    ry tree  to keep
007720:  20 74 68 65 20 77 6F 72 64 73 20 69 6E 20 41 49     the words in AI
007730:  20 69 6E 20 61 6C 70 68 61 62 65 74 69 63 61 6C     in alphabetical
007740:  0D 0A 20 20 20 6F 72 64 65 72 2E 20 20 54 68 65    ..   order.  The
007750:  20 64 69 61 67 72 61 6D 20 73 68 6F 77 73 20 61     diagram shows a
007760:  20 74 72 65 65 20 77 69 74 68 20 20 66 69 76 65     tree with  five
007770:  20 20 77 6F 72 64 73 20 69 6E 20 2D 20 22 54 68      words in - "Th
007780:  69 73 20 69 73 20 68 6F 77 20 74 72 65 65 73 0D    is is how trees.
007790:  0A 20 20 20 67 72 6F 77 22 2E 20 20 54 68 65 20    .   grow".  The 
0077A0:  77 6F 72 64 73 20 77 6F 75 6C 64 20 20 62 65 20    words would  be 
0077B0:  20 73 74 6F 72 65 64 20 20 69 6E 20 20 61 20 20     stored  in  a  
0077C0:  73 74 72 69 6E 67 20 20 61 72 72 61 79 2C 20 20    string  array,  
0077D0:  28 77 24 20 20 69 6E 20 74 68 65 20 41 49 0D 0A    (w$  in the AI..
0077E0:  20 20 20 70 72 6F 67 72 61 6D 29 2C 20 61 6E 64       program), and
0077F0:  20 77 6F 75 6C 64 20 62 65 20 61 74 20 74 68 65     would be at the
007800:  68 65 20 6F 74 68 65 72 20 77 6F 72 64 73 20 69    he other words i
007810:  6E 20 74 68 65 20 74 72 65 65 2E 0D 0A 0D 0A 20    n the tree..... 
007820:  20 20 57 68 61 74 20 68 61 70 70 65 6E 73 20 77      What happens w
007830:  68 65 6E 20 77 65 20 73 65 61 72 63 68 20 66 6F    hen we search fo
007840:  72 20 61 20 77 6F 72 64 20 20 77 68 69 63 68 20    r a word  which 
007850:  20 69 73 20 6E 6F 74 20 69 6E 20 74 68 65 20 74     is not in the t
007860:  72 65 65 3F 20 20 4C 65 74 20 75 73 0D 0A 20 20    ree?  Let us..  
007870:  20 74 72 79 20 77 69 74 68 20 74 68 65 20 77 6F     try with the wo
007880:  72 64 20 22 6C 65 61 76 65 73 22 2E 20 20 49 74    rd "leaves".  It
007890:  20 69 73 20 20 72 69 67 68 74 20 20 6F 66 20 20     is  right  of  
0078A0:  22 54 68 69 73 22 2C 20 73 6F 20 77 65 20 6D 6F    "This", so we mo
0078B0:  76 65 20 74 6F 20 22 69 73 22 2E 0D 0A 20 20 20    ve to "is"...   
0078C0:  49 74 20 69 73 20 72 69 67 68 74 20 6F 66 20 22    It is right of "
0078D0:  69 73 22 2C 20 73 6F 20 77 65 20 20 6D 6F 76 65    is", so we  move
0078E0:  20 20 74 6F 20 20 22 74 72 65 65 73 22 2E 20 20      to  "trees".  
0078F0:  49 74 20 69 73 20 6C 65 66 74 20 6F 66 20 22 74    It is left of "t
007900:  72 65 65 73 22 2C 20 62 75 74 0D 0A 20 20 20 74    rees", but..   t
007910:  68 65 72 65 20 69 73 6E 27 74 20 61 6E 79 74 68    here isn't anyth
007920:  69 6E 67 20 6C 65 66 74 20 6F 66 20 22 74 72 65    ing left of "tre
007930:  65 73 22 20 62 65 63 61 75 73 65 20 20 6C 65 28    es" because  le(
007940:  34 29 20 69 73 20 7A 65 72 6F 2E 20 20 46 72 6F    4) is zero.  Fro
007950:  6D 20 74 68 69 73 20 77 65 0D 0A 20 20 20 6B 6E    m this we..   kn
007960:  6F 77 20 74 68 61 74 20 22 6C 65 61 76 65 73 22    ow that "leaves"
007970:  20 63 61 6E 6E 6F 74 20 62 65 20 69 6E 20 74 68     cannot be in th
007980:  65 20 74 72 65 65 2E 0D 0A 0D 0A 20 20 20 49 6E    e tree.....   In
007990:  20 41 49 2C 20 77 65 20 61 64 64 20 6E 65 77 20     AI, we add new 
0079A0:  77 6F 72 64 73 20 74 6F 20 20 74 68 65 20 20 76    words to  the  v
0079B0:  6F 63 61 62 75 6C 61 72 79 2E 20 20 42 79 20 73    ocabulary.  By s
0079C0:  65 61 72 63 68 69 6E 67 20 66 6F 72 20 22 6C 65    earching for "le
0079D0:  61 76 65 73 22 20 77 65 0D 0A 20 20 20 68 61 76    aves" we..   hav
0079E0:  65 20 66 6F 75 6E 64 20 74 68 61 74 20 22 6C 65    e found that "le
0079F0:  61 76 65 73 22 20 69 73 20 6E 6F 74 20 69 6E 20    aves" is not in 
007A00:  20 20 70 6F 73 69 74 69 6F 6E 73 20 20 73 68 6F      positions  sho
007A10:  77 6E 20 20 62 79 20 74 68 65 20 6E 75 6D 62 65    wn  by the numbe
007A20:  72 73 20 61 74 20 74 68 65 20 74 6F 70 0D 0A 20    rs at the top.. 
007A30:  20 20 6C 65 66 74 20 6F 66 20 65 61 63 68 20 62      left of each b
007A40:  6F 78 2E 20 20 53 6F 20 77 24 28 32 29 20 77 6F    ox.  So w$(2) wo
007A50:  75 6C 64 20 62 65 20 20 22 69 73 22 2C 20 66 6F    uld be  "is", fo
007A60:  72 20 65 78 61 6D 70 6C 65 2E 0D 0A 0D 0A 20 20    r example.....  
007A70:  20 57 65 20 61 6C 73 6F 20 68 61 76 65 20 74 77     We also have tw
007A80:  6F 20 6E 75 6D 65 72 69 63 20 61 72 72 61 79 73    o numeric arrays
007A90:  2C 20 22 6C 65 22 20 20 61 6E 64 20 20 22 72 69    , "le"  and  "ri
007AA0:  22 2E 20 20 54 68 65 73 65 20 61 72 65 20 75 73    ".  These are us
007AB0:  65 64 20 74 6F 20 70 6F 69 6E 74 0D 0A 20 20 20    ed to point..   
007AC0:  74 6F 20 74 68 65 20 70 61 72 74 73 20 6F 66 20    to the parts of 
007AD0:  74 68 65 20 74 72 65 65 20 77 68 69 63 68 20 61    the tree which a
007AE0:  72 65 20 64 6F 77 6E 20 20 74 6F 20 74 68 65 20    re down  to the 
007AF0:  6C 65 66 74 20 61 6E 64 20 64 6F 77 6E 20 74 6F    left and down to
007B00:  20 74 68 65 20 72 69 67 68 74 0D 0A 20 20 20 6F     the right..   o
007B10:  66 20 74 68 65 20 63 75 72 72 65 6E 74 20 77 6F    f the current wo
007B20:  72 64 2E 20 20 4C 6F 6F 6B 69 6E 67 20 61 74 20    rd.  Looking at 
007B30:  74 68 65 20 77 6F 72 64 20 22 69 73 22 20 61 74    the word "is" at
007B40:  20 77 24 28 32 29 20 61 67 61 69 6E 2C 20 6C 65     w$(2) again, le
007B50:  28 32 29 20 69 73 20 33 2C 0D 0A 20 20 20 70 6F    (2) is 3,..   po
007B60:  69 6E 74 69 6E 67 20 64 6F 77 6E 20 61 6E 64 20    inting down and 
007B70:  6C 65 66 74 20 74 6F 20 77 24 28 33 29 20 20 77    left to w$(3)  w
007B80:  68 69 63 68 20 20 69 73 20 20 22 68 6F 77 22 2E    hich  is  "how".
007B90:  20 20 44 6F 77 6E 20 61 6E 64 20 74 6F 20 74 68      Down and to th
007BA0:  65 20 72 69 67 68 74 2C 0D 0A 20 20 20 72 69 28    e right,..   ri(
007BB0:  32 29 20 69 73 20 34 2C 20 70 6F 69 6E 74 69 6E    2) is 4, pointin
007BC0:  67 20 74 6F 20 77 24 28 34 29 2C 20 77 68 69 63    g to w$(4), whic
007BD0:  68 20 69 73 20 22 74 72 65 65 73 22 2E 0D 0A 0D    h is "trees"....
007BE0:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 31    ...            1
007BF0:  3A 20 54 68 69 73 0D 0A 20 20 20 20 20 20 20 20    : This..        
007C00:  23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61    #Programmers' Pa
007C10:  74 63 68 20 31 39 20 2D 20 57 41 43 43 49 20 31    tch 19 - WACCI 1
007C20:  32 38 2C 20 46 65 62 2F 4D 61 72 20 31 39 39 39    28, Feb/Mar 1999
007C30:  2C 20 70 2E 20 32 36 2D 32 38 0D 0A 20 20 20 50    , p. 26-28..   P
007C40:  52 4F 47 52 41 4D 4D 45 52 53 27 20 50 41 54 43    ROGRAMMERS' PATC
007C50:  48 20 31 39 0D 0A 20 20 20 42 79 20 4D 61 74 74    H 19..   By Matt
007C60:  68 65 77 20 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A    hew Phillips....
007C70:  20 20 20 57 65 20 72 65 74 75 72 6E 20 74 6F 20       We return to 
007C80:  74 68 65 20 63 6F 6D 70 75 74 65 72 20 63 68 61    the computer cha
007C90:  74 20 20 70 72 6F 67 72 61 6D 2C 20 20 41 49 2C    t  program,  AI,
007CA0:  20 20 77 68 69 63 68 20 77 65 20 66 69 72 73 74      which we first
007CB0:  20 6C 6F 6F 6B 65 64 20 61 74 20 69 6E 0D 0A 20     looked at in.. 
007CC0:  20 20 74 68 65 20 4F 63 74 6F 62 65 72 20 69 73      the October is
007CD0:  73 75 65 2E 20 20 57 65 20 61 72 65 20 67 6F 69    sue.  We are goi
007CE0:  6E 67 20 74 6F 20 20 61 64 64 20 20 71 75 69 74    ng to  add  quit
007CF0:  65 20 20 61 20 62 69 74 20 6D 6F 72 65 20 74 6F    e  a bit more to
007D00:  20 74 68 65 20 70 72 6F 67 72 61 6D 0D 0A 20 20     the program..  
007D10:  20 74 68 69 73 20 6D 6F 6E 74 68 2C 20 73 6F 20     this month, so 
007D20:  74 68 65 20 77 68 6F 6C 65 20 6C 69 73 74 69 6E    the whole listin
007D30:  67 20 68 61 73 20 62 65 65 6E 20 72 65 70 72 69    g has been repri
007D40:  6E 74 65 64 20 74 6F 20 6D 61 6B 65 20 74 68 69    nted to make thi
007D50:  6E 67 73 20 65 61 73 69 65 72 2E 0D 0A 20 20 20    ngs easier...   
007D60:  3C 3C 49 74 20 69 73 20 73 61 76 65 64 20 6F 6E    <<It is saved on
007D70:  20 64 69 73 63 20 61 73 20 41 49 34 2E 42 41 53     disc as AI4.BAS
007D80:  3E 3E 20 20 20 54 68 65 20 20 6D 61 69 6E 20 63    >>   The  main c
007D90:  68 61 6E 67 65 73 20 61 72 65 20 61 20 63 6F 75    hanges are a cou
007DA0:  70 6C 65 20 6F 66 20 6E 65 77 0D 0A 20 20 20 73    ple of new..   s
007DB0:  75 62 72 6F 75 74 69 6E 65 73 2C 20 61 74 20 38    ubroutines, at 8
007DC0:  30 30 20 61 6E 64 20 39 30 30 2C 20 62 75 74 20    00 and 900, but 
007DD0:  61 20 20 66 65 77 20 6F 74 68 65 72 20 6C 69 6E    a  few other lin
007DE0:  65 73 20 68 61 76 65 20 62 65 65 6E 20 61 6C 74    es have been alt
007DF0:  65 72 65 64 20 74 6F 6F 2C 0D 0A 20 20 20 73 6F    ered too,..   so
007E00:  20 20 20 6C 65 3A 20 30 20 20 20 72 69 3A 20 32       le: 0   ri: 2
007E10:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
007E20:  20 20 20 20 20 20 20 20 20 20 5C 0D 0A 0D 0A 20              \.... 
007E30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
007E40:  20 20 20 20 20 20 32 3A 20 69 73 0D 0A 20 20 20          2: is..   
007E50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
007E60:  20 20 20 6C 65 3A 20 33 20 20 20 72 69 3A 20 34       le: 3   ri: 4
007E70:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
007E80:  20 20 20 20 20 20 20 20 20 20 20 2F 20 20 20 20               /    
007E90:  20 20 20 20 20 5C 0D 0A 0D 0A 20 20 20 20 20 20         \....      
007EA0:  20 20 20 20 20 20 20 20 20 33 3A 20 68 6F 77 20             3: how 
007EB0:  20 20 20 20 20 20 20 20 20 20 20 20 34 3A 20 74                4: t
007EC0:  72 65 65 73 0D 0A 20 20 20 20 20 20 20 20 20 20    rees..          
007ED0:  20 20 20 20 6C 65 3A 20 35 20 20 20 72 69 3A 20        le: 5   ri: 
007EE0:  30 20 20 20 20 20 20 6C 65 3A 20 30 20 20 20 72    0      le: 0   r
007EF0:  69 3A 20 30 0D 0A 0D 0A 20 20 20 20 20 20 20 20    i: 0....        
007F00:  20 20 20 20 20 20 20 2F 0D 0A 0D 0A 20 20 20 20           /....    
007F10:  20 20 20 35 3A 20 67 72 6F 77 0D 0A 20 20 20 20       5: grow..    
007F20:  20 20 6C 65 3A 20 30 20 20 20 72 69 3A 20 30 0D      le: 0   ri: 0.
007F30:  0A 0D 0A 20 20 20 49 66 20 74 68 65 72 65 20 69    ...   If there i
007F40:  73 20 6E 6F 74 68 69 6E 67 20 66 75 72 74 68 65    s nothing furthe
007F50:  72 20 64 6F 77 6E 20 74 68 65 20 74 72 65 65 2C    r down the tree,
007F60:  20 74 68 65 6E 20 20 77 65 20 73 74 6F 72 65 20     then  we store 
007F70:  30 20 69 6E 20 6C 65 20 6F 72 20 72 69 20 74 6F    0 in le or ri to
007F80:  0D 0A 20 20 20 73 68 6F 77 20 74 68 61 74 20 74    ..   show that t
007F90:  68 65 72 65 20 61 72 65 20 6E 6F 20 66 75 72 74    here are no furt
007FA0:  68 65 72 20 62 72 61 6E 63 68 65 73 20 20 69 6E    her branches  in
007FB0:  20 74 68 61 74 20 64 69 72 65 63 74 69 6F 6E 2E     that direction.
007FC0:  20 20 53 6F 20 6C 65 28 31 29 20 69 73 20 30 0D      So le(1) is 0.
007FD0:  0A 20 20 20 74 6F 20 73 68 6F 77 20 74 68 61 74    .   to show that
007FE0:  20 74 68 65 72 65 20 69 73 20 6E 6F 74 68 69 6E     there is nothin
007FF0:  67 20 64 6F 77 6E 20 74 6F 20 74 68 65 20 6C 65    g down to the le
008000:  20 69 66 20 79 6F 75 20 61 72 65 20 67 6F 69 6E     if you are goin
008010:  67 20 74 6F 20 6C 6F 61 64 20 75 70 20 20 61 6E    g to load up  an
008020:  20 6F 6C 64 65 72 20 76 65 72 73 69 6F 6E 20 6F     older version o
008030:  66 20 74 68 65 20 70 72 6F 67 72 61 6D 2C 20 6D    f the program, m
008040:  61 6B 65 20 73 75 72 65 0D 0A 20 20 20 79 6F 75    ake sure..   you
008050:  20 63 68 65 63 6B 20 61 6C 6C 20 74 68 65 20 6C     check all the l
008060:  69 6E 65 73 20 66 6F 72 20 63 68 61 6E 67 65 73    ines for changes
008070:  20 63 61 72 65 66 75 6C 6C 79 2E 0D 0A 0D 0A 20     carefully..... 
008080:  20 20 48 49 44 45 20 41 4E 44 20 53 45 45 4B 0D      HIDE AND SEEK.
008090:  0A 20 20 20 49 66 20 79 6F 75 20 68 61 76 65 20    .   If you have 
0080A0:  73 70 65 6E 74 20 61 20 6C 6F 6E 67 20 74 69 6D    spent a long tim
0080B0:  65 20 74 61 6C 6B 69 6E 67 20 74 6F 20 74 68 65    e talking to the
0080C0:  20 63 6F 6D 70 75 74 65 72 20 77 69 74 68 20 74     computer with t
0080D0:  68 65 20 41 49 20 70 72 6F 67 72 61 6D 2C 0D 0A    he AI program,..
0080E0:  20 20 20 79 6F 75 20 77 69 6C 6C 20 68 61 76 65       you will have
0080F0:  20 66 6F 75 6E 64 20 74 68 61 74 20 74 68 65 20     found that the 
008100:  20 63 6F 6D 70 75 74 65 72 20 20 74 61 6B 65 73     computer  takes
008110:  20 61 6E 20 69 6E 63 72 65 61 73 69 6E 67 6C 79     an increasingly
008120:  20 6C 6F 6E 67 20 74 69 6D 65 20 74 6F 0D 0A 20     long time to.. 
008130:  20 20 72 65 73 70 6F 6E 64 20 74 6F 20 65 61 63      respond to eac
008140:  68 20 6E 65 77 20 73 65 6E 74 65 6E 63 65 2E 20    h new sentence. 
008150:  20 41 73 20 79 6F 75 20 75 73 65 20 6E 65 77 20     As you use new 
008160:  77 6F 72 64 73 2C 20 69 74 73 20 76 6F 63 61 62    words, its vocab
008170:  75 6C 61 72 79 20 67 72 6F 77 73 2C 0D 0A 20 20    ulary grows,..  
008180:  20 61 6E 64 20 69 74 20 74 61 6B 65 73 20 6C 6F     and it takes lo
008190:  6E 67 65 72 20 74 6F 20 67 6F 20 74 68 72 6F 75    nger to go throu
0081A0:  67 68 20 74 68 65 20 61 72 72 61 79 20 6F 66 20    gh the array of 
0081B0:  77 6F 72 64 73 20 74 6F 20 6D 61 74 63 68 20 75    words to match u
0081C0:  70 20 74 68 6F 73 65 20 79 6F 75 0D 0A 20 20 20    p those you..   
0081D0:  74 79 70 65 20 77 69 74 68 20 74 68 65 20 6F 6E    type with the on
0081E0:  65 73 20 69 74 20 6B 6E 6F 77 73 2E 20 20 49 66    es it knows.  If
0081F0:  20 79 6F 75 20 20 68 61 76 65 20 74 61 75 67 68     you  have taugh
008200:  66 74 20 6F 66 20 22 54 68 69 73 22 2E 0D 0A 0D    ft of "This"....
008210:  0A 20 20 20 57 65 20 61 72 65 20 75 73 69 6E 67    .   We are using
008220:  20 74 68 65 20 74 72 65 65 20 74 6F 20 6B 65 65     the tree to kee
008230:  70 20 74 68 65 20 77 6F 72 64 73 20 69 6E 20 61    p the words in a
008240:  6C 70 68 61 62 65 74 69 63 61 6C 20 6F 72 64 65    lphabetical orde
008250:  72 2E 20 20 41 63 74 75 61 6C 6C 79 20 49 0D 0A    r.  Actually I..
008260:  20 20 20 6D 65 61 6E 20 41 53 43 49 49 20 6F 72       mean ASCII or
008270:  64 65 72 2C 20 62 65 63 61 75 73 65 20 74 68 61    der, because tha
008280:  74 27 73 20 20 77 68 61 74 20 20 74 68 65 20 20    t's  what  the  
008290:  63 6F 6D 70 75 74 65 72 20 20 63 61 6E 20 64 6F    computer  can do
0082A0:  20 6D 6F 73 74 20 65 61 73 69 6C 79 2E 0D 0A 20     most easily... 
0082B0:  20 20 54 68 65 20 6D 61 69 6E 20 64 69 66 66 65      The main diffe
0082C0:  72 65 6E 63 65 20 69 73 20 74 68 61 74 20 61 6C    rence is that al
0082D0:  6C 20 74 68 65 20 20 63 61 70 69 74 61 6C 20 6C    l the  capital l
0082E0:  65 74 74 65 72 73 20 63 6F 6D 65 20 62 65 66 6F    etters come befo
0082F0:  72 65 20 74 68 65 20 73 6D 61 6C 6C 0D 0A 20 20    re the small..  
008300:  20 6C 65 74 74 65 72 73 2C 20 73 6F 20 22 54 68     letters, so "Th
008310:  69 73 22 20 63 6F 6D 65 73 20 62 65 66 6F 72 65    is" comes before
008320:  20 20 22 69 73 22 2E 20 20 20 54 68 65 20 20 74      "is".   The  t
008330:  72 65 65 20 68 61 73 20 62 65 65 6E 20 63 6F 6E    ree has been con
008340:  73 74 72 75 63 74 65 64 20 69 6E 0D 0A 20 20 20    structed in..   
008350:  73 75 63 68 20 61 20 77 61 79 20 74 68 61 74 20    such a way that 
008360:  69 66 20 79 6F 75 20 6C 6F 6F 6B 20 61 74 20 61    if you look at a
008370:  6E 79 20 20 77 6F 72 64 20 79 6F 75 20 77 69 6C    ny  word you wil
008380:  6C 20 73 65 65 20 74 68 61 74 20 74 68 65 20 77    l see that the w
008390:  6F 72 64 20 74 6F 20 74 68 65 0D 0A 20 20 20 72    ord to the..   r
0083A0:  69 67 68 74 20 6F 66 20 69 74 20 63 6F 6D 65 73    ight of it comes
0083B0:  20 61 66 74 65 72 20 69 74 20 69 6E 20 41 53 43     after it in ASC
0083C0:  49 49 20 20 6F 72 64 65 72 2C 20 61 6E 64 20 74    II  order, and t
0083D0:  68 65 20 77 6F 72 64 20 74 6F 20 74 68 65 20 6C    he word to the l
0083E0:  65 66 74 20 63 6F 6D 65 73 0D 0A 20 20 20 62 65    eft comes..   be
0083F0:  66 6F 72 65 20 69 74 2E 20 20 54 6F 20 74 68 65    fore it.  To the
008400:  74 20 69 74 20 33 30 30 20 77 6F 72 64 73 20 61    t it 300 words a
008410:  6E 64 20 79 6F 75 20 75 73 65 0D 0A 20 20 20 61    nd you use..   a
008420:  20 6E 65 77 20 6F 6E 65 2C 20 69 74 20 77 69 6C     new one, it wil
008430:  6C 20 68 61 76 65 20 20 74 6F 20 20 6C 6F 6F 6B    l have  to  look
008440:  20 20 74 68 72 6F 75 67 68 20 20 61 6C 6C 20 20      through  all  
008450:  74 68 65 20 6F 74 68 65 72 20 33 30 30 20 77 6F    the other 300 wo
008460:  72 64 73 20 66 69 72 73 74 0D 0A 20 20 20 62 65    rds first..   be
008470:  66 6F 72 65 20 61 64 64 69 6E 67 20 74 68 65 20    fore adding the 
008480:  6E 65 77 20 77 6F 72 64 20 6F 6E 20 74 68 65 20    new word on the 
008490:  65 6E 64 2E 0D 0A 0D 0A 20 20 20 57 65 20 6E 65    end.....   We ne
0084A0:  65 64 20 61 20 6D 65 74 68 6F 64 20 6F 66 20 73    ed a method of s
0084B0:  65 61 72 63 68 69 6E 67 20 66 6F 72 20 20 77 6F    earching for  wo
0084C0:  72 64 73 20 20 74 68 61 74 20 77 69 6C 6C 20 77    rds  that will w
0084D0:  6F 72 6B 20 71 75 69 63 6B 6C 79 20 65 76 65 6E    ork quickly even
0084E0:  20 77 68 65 6E 0D 0A 20 20 20 74 68 65 72 65 20     when..   there 
0084F0:  61 72 65 20 61 20 6C 6F 74 20 6F 66 20 77 6F 72    are a lot of wor
008500:  64 73 20 74 6F 20 73 65 61 72 63 68 20 74 68 72    ds to search thr
008510:  6F 75 67 68 2E 0D 0A 0D 0A 20 20 20 4E 55 4D 42    ough.....   NUMB
008520:  45 52 20 4F 4E 45 3A 20 54 48 45 20 4C 41 52 43    ER ONE: THE LARC
008530:  48 0D 0A 20 20 20 41 73 20 49 20 68 69 6E 74 65    H..   As I hinte
008540:  64 20 6C 61 73 74 20 74 69 6D 65 2C 20 74 68 69    d last time, thi
008550:  73 20 6D 6F 6E 74 68 20 77 65 20 61 72 65 20 67    s month we are g
008560:  6F 69 6E 67 20 74 6F 20 6C 6F 6F 6B 20 61 74 20    oing to look at 
008570:  74 72 65 65 73 2E 20 20 54 68 65 20 74 72 65 65    trees.  The tree
008580:  0D 0A 20 20 20 69 73 20 61 20 76 65 72 79 20 75    ..   is a very u
008590:  73 65 66 75 6C 20 64 61 74 61 20 73 74 72 75 63    seful data struc
0085A0:  74 75 72 65 2C 20 62 75 74 20 20 66 6F 72 20 20    ture, but  for  
0085B0:  73 6F 6D 65 20 72 65 61 73 6F 6E 2C 20 61 6C 6C    some reason, all
0085C0:  20 74 72 65 65 73 20 67 72 6F 77 6E 20 62 79 0D     trees grown by.
0085D0:  0A 20 20 20 63 6F 6D 70 75 74 65 72 20 73 63 69    .   computer sci
0085E0:  65 6E 74 69 73 74 73 20 73 74 61 72 74 20 77 69    entists start wi
0085F0:  74 68 20 74 68 65 69 72 20 72 6F 6F 74 73 20 20    th their roots  
008600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
008610:  07 00 01 00 02 09 4E E5 07 00 C2 02 00 00 00 02    ......N.........
008620:  07 00 C7 02 00 00 00 02 07 00 C3 02 00 00 00 02    ................
008630:  07 00 C8 02 00 00 00 02 07 00 C4 02 00 00 00 02    ................
008640:  07 00 C9 02 00 00 00 02 07 00 C5 02 00 00 00 02    ................
008650:  07 00 C1 02 00 00 00 02 07 00 C6 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 77 68 65 6E 20 73 65 61 72 63 68 69 6E 67 20     when searching 
008710:  20 66 6F 72 20 20 61 20 20 6E 65 77 20 20 77 6F     for  a  new  wo
008720:  72 64 2C 20 20 62 75 74 20 20 69 6E 20 66 61 63    rd,  but  in fac
008730:  74 20 69 74 20 77 6F 75 6C 64 0D 0A 20 20 20 70    t it would..   p
008740:  72 6F 62 61 62 6C 79 20 62 65 20 6D 6F 72 65 20    robably be more 
008750:  6C 69 6B 65 20 6E 69 6E 65 20 77 6F 72 64 73 21    like nine words!
008760:  20 20 54 68 69 73 20 20 69 73 20 62 65 63 61 75      This  is becau
008770:  73 65 20 77 69 74 68 20 65 61 63 68 20 6E 65 77    se with each new
008780:  20 6C 61 79 65 72 20 6F 6E 0D 0A 20 20 20 74 68     layer on..   th
008790:  65 20 74 72 65 65 20 77 65 20 63 61 6E 20 61 64    e tree we can ad
0087A0:  64 20 74 77 69 63 65 20 61 73 20 6D 61 6E 79 20    d twice as many 
0087B0:  20 77 6F 72 64 73 20 61 73 20 77 65 72 65 20 69     words as were i
0087C0:  6E 20 74 68 65 20 70 72 65 76 69 6F 75 73 20 6C    n the previous l
0087D0:  61 79 65 72 2C 20 73 6F 0D 0A 20 20 20 77 68 69    ayer, so..   whi
0087E0:  6C 65 20 61 20 32 2D 6C 61 79 65 72 20 74 72 65    le a 2-layer tre
0087F0:  65 20 63 61 6E 20 68 61 76 65 20 61 74 20 20 6D    e can have at  m
008800:  6F 73 74 20 20 33 20 20 77 6F 72 64 73 20 69 6E    ost  3  words in
008810:  20 69 74 2C 20 61 20 39 2D 6C 61 79 65 72 20 74     it, a 9-layer t
008820:  72 65 65 20 63 61 6E 0D 0A 20 20 20 68 61 76 65    ree can..   have
008830:  20 35 31 31 2E 20 20 57 68 65 6E 20 73 65 61 72     511.  When sear
008840:  63 68 69 6E 67 20 66 6F 72 20 20 61 20 20 77 6F    ching for  a  wo
008850:  72 64 20 20 77 65 20 20 6A 75 73 74 20 20 6D 6F    rd  we  just  mo
008860:  76 65 20 20 66 72 6F 6D 20 74 68 65 20 74 6F 70    ve  from the top
008870:  20 6C 61 79 65 72 0D 0A 20 20 20 64 6F 77 6E 77     layer..   downw
008880:  61 72 64 73 20 6C 6F 6F 6B 69 6E 67 20 61 74 20    ards looking at 
008890:  6F 6E 65 20 77 6F 72 64 20 6F 6E 20 65 61 63 68    one word on each
0088A0:  20 6C 61 79 65 72 2E 0D 0A 0D 0A 20 20 20 43 6F     layer.....   Co
0088B0:  6D 70 75 74 65 72 20 73 63 69 65 6E 74 69 73 74    mputer scientist
0088C0:  73 20 73 61 79 20 74 68 61 74 20 73 65 61 72 63    s say that searc
0088D0:  68 69 6E 67 20 20 61 20 20 62 69 6E 61 72 79 20    hing  a  binary 
0088E0:  20 74 72 65 65 20 68 61 73 20 22 6F 72 64 65 72     tree has "order
0088F0:  20 6C 6F 67 20 6E 22 2C 0D 0A 20 20 20 77 68 69     log n",..   whi
008900:  20 61 6E 64 20 31 36 30 2E 20 20 4C 69 6E 65 20     and 160.  Line 
008910:  31 35 30 20 75 73 65 64 20 20 74 6F 20 20 68 61    150 used  to  ha
008920:  76 65 20 61 20 6C 6F 6F 70 20 6C 6F 6F 6B 69 6E    ve a loop lookin
008930:  67 20 74 68 72 6F 75 67 68 20 74 68 65 20 77 68    g through the wh
008940:  6F 6C 65 0D 0A 20 20 20 6F 66 20 74 68 65 20 77    ole..   of the w
008950:  24 20 61 72 72 61 79 20 66 6F 72 20 20 74 68 65    $ array for  the
008960:  20 20 77 6F 72 64 20 20 69 6E 20 20 71 75 65 73      word  in  ques
008970:  74 69 6F 6E 2E 20 20 20 49 6E 73 74 65 61 64 20    tion.   Instead 
008980:  77 65 20 6A 75 73 74 20 47 4F 53 55 42 20 38 30    we just GOSUB 80
008990:  30 2E 0D 0A 20 20 20 4C 69 6E 65 20 31 36 30 20    0...   Line 160 
0089A0:  75 73 65 73 20 74 68 65 20 69 6E 66 6F 72 6D 61    uses the informa
0089B0:  74 69 6F 6E 20 72 65 74 75 72 6E 65 64 20 20 66    tion returned  f
0089C0:  72 6F 6D 20 20 74 68 65 20 73 75 62 72 6F 75 74    rom  the subrout
0089D0:  69 6E 65 2E 20 20 49 66 20 63 77 6F 72 64 20 69    ine.  If cword i
0089E0:  73 0D 0A 20 20 20 6E 6F 74 20 7A 65 72 6F 2C 20    s..   not zero, 
0089F0:  74 68 65 20 63 6F 6D 70 75 74 65 72 20 68 61 64    the computer had
008A00:  20 61 6C 72 65 61 64 79 20 6D 65 74 20 20 74 68     already met  th
008A10:  65 20 20 77 6F 72 64 2E 20 20 57 65 20 70 72 6F    e  word.  We pro
008A20:  63 65 65 64 20 74 6F 20 6C 69 6E 65 20 31 37 30    ceed to line 170
008A30:  0D 0A 20 20 20 74 6F 20 6D 61 6B 65 20 74 68 65    ..   to make the
008A40:  20 6C 69 6E 6B 20 61 73 20 62 65 66 6F 72 65 2E     link as before.
008A50:  20 20 20 49 66 20 20 63 77 6F 72 64 20 20 69 73       If  cword  is
008A60:  20 20 7A 65 72 6F 2C 20 20 69 74 20 20 69 73 20      zero,  it  is 
008A70:  61 20 6E 65 77 20 77 6F 72 64 2E 20 20 57 65 0D    a new word.  We.
008A80:  0A 20 20 20 69 6E 63 72 65 61 73 65 20 6E 77 6F    .   increase nwo
008A90:  72 64 73 20 61 6E 64 20 73 74 6F 72 65 20 77 6F    rds and store wo
008AA0:  72 64 24 20 69 6E 20 20 74 68 65 20 77 24 20 61    rd$ in  the w$ a
008AB0:  72 72 61 79 2C 20 73 65 74 74 69 6E 67 20 6F 74    rray, setting ot
008AC0:  68 65 72 20 76 61 72 69 61 62 6C 65 73 2C 0D 0A    her variables,..
008AD0:  20 20 20 69 6E 63 6C 75 64 69 6E 67 20 6C 65 20       including le 
008AE0:  61 6E 64 20 72 69 2C 20 74 6F 20 7A 65 72 6F 2E    and ri, to zero.
008AF0:  20 20 57 65 20 70 6F 69 6E 74 20 63 77 6F 72 64      We point cword
008B00:  63 68 20 62 61 73 69 63 61 6C 6C 79 20 6D 65 61    ch basically mea
008B10:  6E 73 20 69 74 27 73 20 61 20 47 6F 6F 64 20 54    ns it's a Good T
008B20:  68 69 6E 67 2E 0D 0A 0D 0A 20 20 20 46 52 4F 4D    hing.....   FROM
008B30:  20 4C 49 54 54 4C 45 20 41 43 4F 52 4E 53 2E 2E     LITTLE ACORNS..
008B40:  2E 0D 0A 20 20 20 54 68 65 20 6D 61 69 6E 20 72    ...   The main r
008B50:  6F 75 74 69 6E 65 20 61 64 64 65 64 20 74 6F 20    outine added to 
008B60:  74 68 65 20 70 72 6F 67 72 61 6D 20 69 73 20 20    the program is  
008B70:  66 6F 75 6E 64 20 69 6E 20 6C 69 6E 65 73 20 38    found in lines 8
008B80:  30 30 20 74 6F 20 38 33 30 2C 20 77 68 69 63 68    00 to 830, which
008B90:  0D 0A 20 20 20 73 65 61 72 63 68 65 73 20 74 68    ..   searches th
008BA0:  65 20 74 72 65 65 20 66 6F 72 20 61 20 67 69 76    e tree for a giv
008BB0:  65 6E 20 77 6F 72 64 2E 20 20 20 54 68 65 20 20    en word.   The  
008BC0:  69 64 65 61 20 69 73 20 74 68 61 74 20 79 6F 75    idea is that you
008BD0:  20 73 74 6F 72 65 20 74 68 65 20 77 6F 72 64 0D     store the word.
008BE0:  0A 20 20 20 69 6E 20 74 68 65 20 76 61 72 69 61    .   in the varia
008BF0:  62 6C 65 20 22 77 6F 72 64 24 22 2C 20 61 6E 64    ble "word$", and
008C00:  20 20 74 68 65 6E 20 20 47 4F 53 55 42 20 20 38      then  GOSUB  8
008C10:  30 30 20 20 74 6F 20 20 63 61 6C 6C 20 74 68 65    00  to  call the
008C20:  20 72 6F 75 74 69 6E 65 2E 20 20 54 68 65 0D 0A     routine.  The..
008C30:  20 20 20 72 6F 75 74 69 6E 65 20 73 65 61 72 63       routine searc
008C40:  68 65 73 20 74 68 65 20 74 72 65 65 2E 20 20 49    hes the tree.  I
008C50:  66 20 74 68 65 20 77 6F 72 64 20 20 69 73 20 66    f the word  is f
008C60:  6F 75 6E 64 2C 20 74 68 65 6E 20 74 68 65 20 76    ound, then the v
008C70:  61 72 69 61 62 6C 65 20 63 77 6F 72 64 0D 0A 20    ariable cword.. 
008C80:  20 20 69 73 20 73 65 74 20 74 6F 20 74 68 65 20      is set to the 
008C90:  6E 75 6D 62 65 72 20 6F 66 20 20 74 68 61 74 20    number of  that 
008CA0:  20 77 6F 72 64 2E 20 20 20 4F 74 68 65 72 77 69     word.   Otherwi
008CB0:  73 65 20 77 68 65 6E 20 74 68 65 20 73 75 62 72    se when the subr
008CC0:  6F 75 74 69 6E 65 20 65 6E 64 73 2C 0D 0A 20 20    outine ends,..  
008CD0:  20 63 77 6F 72 64 20 69 73 20 65 71 75 61 6C 20     cword is equal 
008CE0:  74 6F 20 7A 65 72 6F 2C 20 61 6E 64 20 20 74 68    to zero, and  th
008CF0:  65 20 20 76 61 72 69 61 62 6C 65 20 20 22 70 61    e  variable  "pa
008D00:  20 61 74 20 74 68 65 20 6E 65 77 6C 79 20 61 64     at the newly ad
008D10:  64 65 64 20 77 6F 72 64 2C 20 61 6E 64 0D 0A 20    ded word, and.. 
008D20:  20 20 47 4F 53 55 42 20 38 34 30 2C 20 61 6E 6F      GOSUB 840, ano
008D30:  74 68 65 72 20 6E 65 77 20 20 73 75 62 72 6F 75    ther new  subrou
008D40:  74 69 6E 65 2E 20 20 20 52 65 6D 65 6D 62 65 72    tine.   Remember
008D50:  20 20 74 68 61 74 20 20 70 61 72 65 6E 74 20 70      that  parent p
008D60:  6F 69 6E 74 73 20 74 6F 20 74 68 65 0D 0A 20 20    oints to the..  
008D70:  20 6C 61 73 74 20 77 6F 72 64 20 74 68 61 74 20     last word that 
008D80:  77 65 20 20 6C 6F 6F 6B 65 64 20 20 61 74 20 20    we  looked  at  
008D90:  69 6E 20 20 74 68 65 20 20 74 72 65 65 2E 20 20    in  the  tree.  
008DA0:  20 4F 75 72 20 20 6E 65 77 20 20 77 6F 72 64 20     Our  new  word 
008DB0:  6E 65 65 64 73 20 74 6F 20 62 65 0D 0A 20 20 20    needs to be..   
008DC0:  61 74 74 61 63 68 65 64 20 74 6F 20 74 68 65 20    attached to the 
008DD0:  74 72 65 65 20 61 74 20 74 68 69 73 20 70 6F 69    tree at this poi
008DE0:  6E 74 20 2D 20 20 74 68 65 20 6F 6E 6C 79 20 71    nt -  the only q
008DF0:  75 65 73 74 69 6F 6E 20 69 73 20 77 68 65 74 68    uestion is wheth
008E00:  65 72 20 69 74 20 69 73 20 61 0D 0A 20 20 20 6C    er it is a..   l
008E10:  65 66 74 20 62 72 61 6E 63 68 20 6F 72 20 61 20    eft branch or a 
008E20:  72 69 67 68 74 20 62 72 61 6E 63 68 2E 20 20 20    right branch.   
008E30:  4C 69 6E 65 20 20 38 34 30 20 20 63 6F 6D 70 61    Line  840  compa
008E40:  72 65 73 20 74 68 65 20 6E 65 77 20 77 6F 72 64    res the new word
008E50:  20 77 69 74 68 20 74 68 65 0D 0A 20 20 20 70 61     with the..   pa
008E60:  72 65 6E 74 20 77 6F 72 64 2C 20 61 6E 64 20 73    rent word, and s
008E70:  65 74 73 20 75 70 20 6C 65 28 70 61 72 65 6E 74    ets up le(parent
008E80:  29 20 6F 72 20 72 69 28 70 61 72 65 6E 74 29 20    ) or ri(parent) 
008E90:  61 73 20 61 70 70 72 6F 70 72 69 61 74 65 2E 0D    as appropriate..
008EA0:  0A 0D 0A 20 20 20 49 20 73 61 69 64 20 49 20 77    ...   I said I w
008EB0:  6F 75 6C 64 20 65 78 70 6C 61 69 6E 20 74 68 65    ould explain the
008EC0:  20 73 74 61 72 74 20 6F 66 20 6C 69 6E 65 20 20     start of line  
008ED0:  38 30 30 2E 20 20 57 68 79 20 64 6F 20 77 65 20    800.  Why do we 
008EE0:  73 65 74 20 75 70 20 70 61 72 65 6E 74 20 61 73    set up parent as
008EF0:  0D 0A 20 20 20 7A 65 72 6F 20 61 6E 64 20 63 77    ..   zero and cw
008F00:  72 65 6E 74 22 20 70 6F 69 6E 74 73 20 74 6F 20    rent" points to 
008F10:  74 68 65 20 70 61 72 74 20 6F 66 0D 0A 20 20 20    the part of..   
008F20:  74 68 65 20 74 72 65 65 20 74 68 61 74 20 74 68    the tree that th
008F30:  65 20 77 6F 72 64 20 73 68 6F 75 6C 64 20 62 65    e word should be
008F40:  20 61 74 74 61 63 68 65 64 20 74 6F 2E 0D 0A 0D     attached to....
008F50:  0A 20 20 20 4C 65 74 27 73 20 73 65 65 20 68 6F    .   Let's see ho
008F60:  77 20 69 74 20 64 6F 65 73 20 69 74 2E 20 20 4C    w it does it.  L
008F70:  69 6E 65 20 38 30 30 20 20 73 65 74 73 20 20 75    ine 800  sets  u
008F80:  70 20 70 61 72 65 6E 74 20 74 6F 20 62 65 20 7A    p parent to be z
008F90:  65 72 6F 2C 20 61 6E 64 20 63 77 6F 72 64 0D 0A    ero, and cword..
008FA0:  20 20 20 74 6F 20 62 65 20 72 69 28 30 29 2E 20       to be ri(0). 
008FB0:  20 49 20 77 69 6C 6C 20 65 78 70 6C 61 69 6E 20     I will explain 
008FC0:  77 68 79 20 20 6C 61 74 65 72 2C 20 62 75 74 20    why  later, but 
008FD0:  69 74 20 62 61 73 69 63 61 6C 6C 79 20 6D 65 61    it basically mea
008FE0:  6E 73 20 74 68 61 74 20 63 77 6F 72 64 0D 0A 20    ns that cword.. 
008FF0:  20 20 73 74 61 72 74 73 20 6F 66 66 20 61 74 20      starts off at 
009000:  74 68 65 20 74 6F 70 20 6F 66 20 74 68 65 20 74    the top of the t
009010:  72 65 65 2E 20 20 20 57 65 20 74 68 65 6E 20 68    ree.   We then h
009020:  61 76 65 20 61 20 57 48 49 4C 45 2D 57 45 4E 44    ave a WHILE-WEND
009030:  20 6C 6F 6F 70 2C 20 77 68 69 63 68 0D 0A 20 20     loop, which..  
009040:  20 6B 65 65 70 73 20 67 6F 69 6E 67 20 75 6E 74     keeps going unt
009050:  69 6C 20 63 77 6F 72 64 3D 30 2E 20 20 4A 75 73    il cword=0.  Jus
009060:  74 20 77 69 74 68 69 6E 20 20 74 68 65 20 20 6C    t within  the  l
009070:  6F 6F 70 2C 20 70 61 72 65 6E 74 20 69 73 20 73    oop, parent is s
009080:  65 74 20 74 6F 20 65 71 75 61 6C 0D 0A 20 20 20    et to equal..   
009090:  63 77 6F 72 64 2E 20 20 54 68 69 73 20 6D 65 61    cword.  This mea
0090A0:  6E 73 20 74 68 61 74 20 70 61 72 65 6E 74 20 69    ns that parent i
0090B0:  73 20 20 6F 6E 65 20 20 73 74 65 70 20 20 62 65    s  one  step  be
0090C0:  68 69 6E 64 20 20 63 77 6F 72 64 20 2D 20 69 74    hind  cword - it
0090D0:  20 70 6F 69 6E 74 73 20 74 6F 0D 0A 20 20 20 77     points to..   w
0090E0:  68 61 74 20 63 77 6F 72 64 20 77 61 73 20 6C 61    hat cword was la
0090F0:  73 74 20 74 69 6D 65 20 72 6F 75 6E 64 2E 0D 0A    st time round...
009100:  6F 72 64 20 61 73 20 72 69 28 30 29 3F 20 20 57    ord as ri(0)?  W
009110:  65 6C 6C 2C 20 72 65 6D 65 6D 62 65 72 20 20 74    ell, remember  t
009120:  68 61 74 20 74 6F 20 73 74 61 72 74 20 77 69 74    hat to start wit
009130:  68 20 74 68 65 72 65 20 77 69 6C 6C 20 62 65 0D    h there will be.
009140:  0A 20 20 20 6E 6F 74 68 69 6E 67 20 69 6E 20 74    .   nothing in t
009150:  68 65 20 74 72 65 65 2E 20 20 4F 75 72 20 72 6F    he tree.  Our ro
009160:  75 74 69 6E 65 20 20 68 61 73 20 20 74 6F 20 20    utine  has  to  
009170:  63 6F 70 65 20 77 69 74 68 20 73 74 61 72 74 69    cope with starti
009180:  6E 67 20 61 20 74 72 65 65 20 66 72 6F 6D 0D 0A    ng a tree from..
009190:  20 20 20 73 63 72 61 74 63 68 2E 20 20 4C 65 74       scratch.  Let
0091A0:  27 73 20 73 65 65 20 77 68 61 74 20 68 61 70 70    's see what happ
0091B0:  65 6E 73 2E 20 20 54 68 65 20 20 76 61 72 69 61    ens.  The  varia
0091C0:  62 6C 65 20 72 69 28 30 29 20 73 74 61 72 74 73    ble ri(0) starts
0091D0:  20 61 73 20 7A 65 72 6F 20 77 68 65 6E 0D 0A 20     as zero when.. 
0091E0:  20 20 77 65 20 66 69 72 73 74 20 72 75 6E 20 74      we first run t
0091F0:  68 65 20 70 72 6F 67 72 61 6D 2E 20 20 54 68 69    he program.  Thi
009200:  73 20 20 6D 65 61 6E 73 20 20 74 68 61 74 20 20    s  means  that  
009210:  77 68 65 6E 20 77 65 20 73 65 61 72 63 68 20 66    when we search f
009220:  6F 72 20 74 68 65 20 66 69 72 73 74 0D 0A 20 20    or the first..  
009230:  20 77 6F 72 64 20 65 76 65 72 2C 20 74 68 65 20     word ever, the 
009240:  6C 6F 6F 70 20 69 6E 20 6C 69 6E 65 20 38 30 30    loop in line 800
009250:  20 20 77 69 6C 6C 20 20 6E 65 76 65 72 20 67 65      will  never ge
009260:  74 20 73 74 61 72 74 65 64 2C 20 61 73 20 63 77    t started, as cw
009270:  6F 72 64 20 69 73 20 7A 65 72 6F 0D 0A 20 20 20    ord is zero..   
009280:  73 74 72 61 69 67 68 74 20 61 77 61 79 2E 20 20    straight away.  
009290:  57 65 20 72 65 74 75 72 6E 20 66 72 6F 6D 20 74    We return from t
0092A0:  68 65 20 20 73 75 62 72 6F 75 74 69 6E 65 20 77    he  subroutine w
0092B0:  69 74 68 20 70 61 72 65 6E 74 20 61 6E 64 20 63    ith parent and c
0092C0:  77 6F 72 64 20 65 71 75 61 6C 0D 0A 20 20 20 74    word equal..   t
0092D0:  6F 20 7A 65 72 6F 2E 20 20 4C 69 6E 65 20 31 36    o zero.  Line 16
0092E0:  30 20 61 64 64 73 20 74 68 65 20 66 69 72 73 74    0 adds the first
0092F0:  20 77 6F 72 64 20 74 6F 20 74 68 65 20 61 72 72     word to the arr
009300:  0D 0A 20 20 20 4C 69 6E 65 20 38 31 30 20 69 73    ..   Line 810 is
009310:  20 73 74 72 61 69 67 68 74 66 6F 72 77 61 72 64     straightforward
009320:  2E 20 20 49 66 20 74 68 65 20 20 77 6F 72 64 20    .  If the  word 
009330:  20 77 65 20 20 61 72 65 20 6C 6F 6F 6B 69 6E 67     we  are looking
009340:  20 66 6F 72 2C 20 77 6F 72 64 24 2C 20 69 73 0D     for, word$, is.
009350:  0A 20 20 20 65 71 75 61 6C 20 74 6F 20 74 68 65    .   equal to the
009360:  20 77 6F 72 64 20 77 65 20 61 72 65 20 70 6F 69     word we are poi
009370:  6E 74 69 6E 67 20 20 74 6F 20 20 69 6E 20 20 74    nting  to  in  t
009380:  68 65 20 74 72 65 65 2C 20 74 68 65 6E 20 77 65    he tree, then we
009390:  20 65 78 69 74 20 66 72 6F 6D 20 74 68 65 0D 0A     exit from the..
0093A0:  20 20 20 73 75 62 72 6F 75 74 69 6E 65 2E 20 20       subroutine.  
0093B0:  54 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74 20    This means that 
0093C0:  63 77 6F 72 64 20 28 61 6E 64 20 70 61 72 65 6E    cword (and paren
0093D0:  74 29 20 61 72 65 20 65 71 75 61 6C 20 74 6F 20    t) are equal to 
0093E0:  74 68 65 20 6E 75 6D 62 65 72 20 6F 66 0D 0A 20    the number of.. 
0093F0:  20 20 74 68 65 20 77 6F 72 64 20 61 73 20 66 6F      the word as fo
009400:  75 6E 64 20 69 6E 20 74 68 65 20 77 24 20 61 72    und in the w$ ar
009410:  72 61 79 2E 0D 0A 0D 0A 20 20 20 49 66 20 77 65    ray.....   If we
009420:  20 67 65 74 20 74 6F 20 6C 69 6E 65 20 38 32 30     get to line 820
009430:  2C 20 20 74 68 65 6E 20 20 77 6F 72 64 24 20 20    ,  then  word$  
009440:  6D 75 73 74 20 20 65 69 74 68 65 72 20 63 6F 6D    must  either com
009450:  65 20 62 65 66 6F 72 65 20 6F 72 20 61 66 74 65    e before or afte
009460:  72 20 74 68 65 0D 0A 20 20 20 77 6F 72 64 20 69    r the..   word i
009470:  6E 20 74 68 65 20 74 72 65 65 2E 20 20 49 66 20    n the tree.  If 
009480:  69 74 20 63 6F 6D 65 73 20 62 65 66 6F 72 65 2C    it comes before,
009490:  20 20 74 68 65 6E 20 63 77 6F 72 64 20 69 73 20      then cword is 
0094A0:  73 65 74 20 74 6F 20 6C 65 28 70 61 72 65 6E 74    set to le(parent
0094B0:  29 20 74 6F 0D 0A 20 20 20 67 6F 20 6C 65 66 74    ) to..   go left
0094C0:  2C 20 6F 74 68 65 72 77 69 73 65 20 77 65 20 67    , otherwise we g
0094D0:  6F 20 72 69 67 68 74 2E 0D 0A 0D 0A 20 20 20 57    o right.....   W
0094E0:  65 20 74 68 65 6E 20 63 6F 6D 65 20 74 6F 20 74    e then come to t
0094F0:  68 65 20 57 45 4E 44 2C 20 77 68 69 63 68 20 20    he WEND, which  
009500:  20 74 68 65 20 20 76 6F 63 61 62 75 6C 61 72 79     the  vocabulary
009510:  2C 20 62 75 74 20 77 68 65 6E 20 77 65 20 67 6F    , but when we go
009520:  74 20 73 74 75 63 6B 0D 0A 20 20 20 74 72 79 69    t stuck..   tryi
009530:  6E 67 20 74 6F 20 6D 6F 76 65 20 6C 65 66 74 20    ng to move left 
009540:  66 72 6F 6D 20 20 22 74 72 65 65 73 22 20 20 77    from  "trees"  w
009550:  65 20 20 61 6C 73 6F 20 20 66 6F 75 6E 64 20 74    e  also  found t
009560:  68 65 20 70 6C 61 63 65 20 74 68 61 74 20 22 6C    he place that "l
009570:  65 61 76 65 73 22 0D 0A 20 20 20 77 6F 75 6C 64    eaves"..   would
009580:  20 67 6F 20 69 6E 20 74 68 65 20 74 72 65 65 2E     go in the tree.
009590:  20 20 49 66 20 77 65 20 70 75 74 20 22 6C 65 61      If we put "lea
0095A0:  76 65 73 22 20 69 6E 20 61 74 20 77 24 28 36 29    ves" in at w$(6)
0095B0:  2C 20 77 65 20 63 61 6E 20 73 65 74 20 6C 65 28    , we can set le(
0095C0:  34 29 20 74 6F 0D 0A 20 20 20 36 20 74 6F 20 70    4) to..   6 to p
0095D0:  6F 69 6E 74 20 66 72 6F 6D 20 22 74 72 65 65 73    oint from "trees
0095E0:  22 20 6C 65 66 74 20 74 6F 20 74 68 65 20 77 6F    " left to the wo
0095F0:  72 64 20 22 6C 65 61 76 65 73 22 2E 0D 0A 0D 0A    rd "leaves".....
009600:  20 20 20 4E 6F 74 69 63 65 20 74 68 61 74 20 77       Notice that w
009610:  65 20 6F 6E 6C 79 20 6C 6F 6F 6B 65 64 20 61 74    e only looked at
009620:  20 20 74 68 72 65 65 20 20 6F 66 20 20 74 68 65      three  of  the
009630:  20 20 66 69 76 65 20 77 6F 72 64 73 20 69 6E 20      five words in 
009640:  74 68 65 20 74 72 65 65 20 77 68 65 6E 0D 0A 20    the tree when.. 
009650:  20 20 73 65 61 72 63 68 69 6E 67 20 66 6F 72 20      searching for 
009660:  22 6C 65 61 76 65 73 22 2E 20 20 54 68 69 73 20    "leaves".  This 
009670:  69 6D 70 72 6F 76 65 73 20 20 74 68 65 20 20 73    improves  the  s
009680:  70 65 65 64 20 6F 66 20 73 65 61 72 63 68 69 6E    peed of searchin
009690:  67 20 66 6F 72 20 77 6F 72 64 73 2E 0D 0A 20 20    g for words...  
0096A0:  20 49 66 20 77 65 20 68 61 64 20 66 69 76 65 20     If we had five 
0096B0:  68 75 6E 64 72 65 64 20 77 6F 72 64 73 2C 20 79    hundred words, y
0096C0:  6F 75 20 20 6D 69 67 68 74 20 20 65 78 70 65 63    ou  might  expec
0096D0:  74 20 20 74 6F 20 68 61 76 65 20 74 6F 20 6C 6F    t  to have to lo
0096E0:  6F 6B 20 61 74 20 74 68 72 65 65 0D 0A 20 20 20    ok at three..   
0096F0:  68 75 6E 64 72 65 64 20 20 6F 66 20 74 68 65 6D    hundred  of them
009700:  77 69 6C 6C 20 20 72 65 74 75 72 6E 20 20 75 73    will  return  us
009710:  20 74 6F 20 74 68 65 20 73 74 61 72 74 20 6F 66     to the start of
009720:  20 74 68 65 20 6C 6F 6F 70 0D 0A 20 20 20 70 72     the loop..   pr
009730:  6F 76 69 64 65 64 20 74 68 61 74 20 63 77 6F 72    ovided that cwor
009740:  64 20 69 73 20 6E 6F 74 20 7A 65 72 6F 2E 20 20    d is not zero.  
009750:  49 66 20 63 77 6F 72 64 20 69 73 20 7A 65 72 6F    If cword is zero
009760:  20 74 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74     this means that
009770:  20 77 65 20 68 61 76 65 0D 0A 20 20 20 63 6F 6D     we have..   com
009780:  65 20 74 6F 20 74 68 65 20 65 6E 64 20 6F 66 20    e to the end of 
009790:  74 68 65 20 74 72 65 65 2E 20 20 57 65 20 68 61    the tree.  We ha
0097A0:  76 65 20 20 6E 6F 74 20 66 6F 75 6E 64 20 74 68    ve  not found th
0097B0:  65 20 77 6F 72 64 2C 20 61 6E 64 20 74 68 65 72    e word, and ther
0097C0:  65 20 69 73 20 6E 6F 0D 0A 20 20 20 70 6F 69 6E    e is no..   poin
0097D0:  74 20 69 6E 20 73 65 61 72 63 68 69 6E 67 20 20    t in searching  
0097E0:  66 75 72 74 68 65 72 2E 20 20 20 54 68 65 20 20    further.   The  
0097F0:  6C 6F 6F 70 20 20 65 6E 64 73 2C 20 20 61 6E 64    loop  ends,  and
009800:  20 20 77 65 20 20 52 45 54 55 52 4E 20 20 66 72      we  RETURN  fr
009810:  6F 6D 20 74 68 65 0D 0A 20 20 20 73 75 62 72 6F    om the..   subro
009820:  75 74 69 6E 65 20 77 69 74 68 20 63 77 6F 72 64    utine with cword
009830:  20 65 71 75 61 6C 20 74 6F 20 7A 65 72 6F 2C 20     equal to zero, 
009840:  61 6E 64 20 20 70 61 72 65 6E 74 20 70 6F 69 6E    and  parent poin
009850:  74 69 6E 67 20 74 6F 20 74 68 65 20 6C 61 73 74    ting to the last
009860:  20 77 6F 72 64 0D 0A 20 20 20 74 68 61 74 20 77     word..   that w
009870:  65 20 6C 6F 6F 6B 65 64 20 61 74 20 69 6E 20 74    e looked at in t
009880:  68 65 20 74 72 65 65 2E 0D 0A 0D 0A 20 20 20 2E    he tree.....   .
009890:  2E 2E 4D 49 47 48 54 59 20 4F 41 4B 53 20 44 4F    ..MIGHTY OAKS DO
0098A0:  20 47 52 4F 57 0D 0A 20 20 20 48 6F 77 20 64 6F     GROW..   How do
0098B0:  65 73 20 74 68 69 73 20 74 69 65 20 69 6E 20 77    es this tie in w
0098C0:  69 74 68 20 74 68 65 20 6D 61 69 6E 20 70 72 6F    ith the main pro
0098D0:  67 72 61 6D 3F 20 20 48 65 72 65 20 74 68 65 20    gram?  Here the 
0098E0:  6D 61 69 6E 20 6C 69 6E 65 73 20 74 6F 20 63 68    main lines to ch
0098F0:  61 6E 67 65 0D 0A 20 20 20 61 72 65 20 31 35 30    ange..   are 150
009900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
009910:  08 00 01 00 02 09 4E E5 08 00 C5 02 00 00 00 02    ......N.........
009920:  08 00 C1 02 00 00 00 02 08 00 C6 02 00 00 00 02    ................
009930:  08 00 C2 02 00 00 00 02 08 00 C7 02 00 00 00 02    ................
009940:  08 00 C3 02 00 00 00 02 08 00 C8 02 00 00 00 02    ................
009950:  08 00 C4 02 00 00 00 02 08 00 C9 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:  23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61    #Programmers' Pa
009A10:  74 63 68 20 31 38 20 2D 20 57 41 43 43 49 20 31    tch 18 - WACCI 1
009A20:  32 37 2C 20 4A 61 6E 20 31 39 39 39 2C 20 70 2E    27, Jan 1999, p.
009A30:  20 32 32 2D 32 34 0D 0A 20 20 20 50 52 4F 47 52     22-24..   PROGR
009A40:  41 4D 4D 45 52 53 27 20 50 41 54 43 48 20 31 38    AMMERS' PATCH 18
009A50:  0D 0A 20 20 20 42 79 20 4D 61 74 74 68 65 77 20    ..   By Matthew 
009A60:  50 68 69 6C 6C 69 70 73 0D 0A 0D 0A 20 20 20 48    Phillips....   H
009A70:  61 76 65 20 79 6F 75 20 65 76 65 72 20 74 68 6F    ave you ever tho
009A80:  75 67 68 74 20 68 6F 77 20 62 6F 72 69 6E 67 20    ught how boring 
009A90:  20 79 6F 75 72 20 20 63 6F 6D 70 75 74 65 72 27     your  computer'
009AA0:  73 20 20 6D 65 6D 6F 72 79 20 69 73 3F 20 20 54    s  memory is?  T
009AB0:  6F 20 74 68 65 20 5A 38 30 0D 0A 20 20 20 70 72    o the Z80..   pr
009AC0:  6F 63 65 73 73 6F 72 20 69 74 20 6A 75 73 74 20    ocessor it just 
009AD0:  6C 6F 6F 6B 73 20 6C 69 6B 65 20 36 35 35 33 36    looks like 65536
009AE0:  20 62 79 74 65 73 2C 20 6F 6E 65 20 61 66 74 65     bytes, one afte
009AF0:  72 20 74 68 65 20 6F 74 68 65 72 2E 20 20 54 68    r the other.  Th
009B00:  61 74 27 73 20 61 6C 6C 0D 0A 20 20 20 76 65 72    at's all..   ver
009B10:  79 20 77 65 6C 6C 20 66 6F 72 20 73 74 6F 72 69    y well for stori
009B20:  6E 67 20 74 68 65 20 4E 61 74 69 6F 6E 61 6C 20    ng the National 
009B30:  4C 6F 74 74 65 72 79 20 20 72 65 73 75 6C 74 73    Lottery  results
009B40:  20 66 6F 72 20 74 68 65 20 6E 65 78 74 20 39 30     for the next 90
009B50:  20 79 65 61 72 73 2C 0D 0A 20 20 20 62 75 74 20     years,..   but 
009B60:  74 6F 20 64 6F 20 73 6F 6D 65 74 68 69 6E 67 20    to do something 
009B70:  20 75 73 65 66 75 6C 20 20 77 69 74 68 20 20 69     useful  with  i
009B80:  74 2C 20 20 77 65 20 20 68 61 76 65 20 20 74 6F    t,  we  have  to
009B90:  20 20 69 6D 70 6F 73 65 20 20 73 6F 6D 65 20 73      impose  some s
009BA0:  6F 72 74 20 6F 66 0D 0A 20 20 20 73 74 72 75 63    ort of..   struc
009BB0:  74 75 72 65 20 73 6F 20 74 68 61 74 20 77 65 20    ture so that we 
009BC0:  20 63 61 6E 20 20 73 74 6F 72 65 2C 20 20 72 65     can  store,  re
009BD0:  74 72 69 65 76 65 20 20 61 6E 64 20 20 6D 61 6E    trieve  and  man
009BE0:  69 70 75 6C 61 74 65 20 63 6F 6D 70 6C 65 78 20    ipulate complex 
009BF0:  64 61 74 61 2E 0D 0A 20 20 20 52 65 61 64 20 6F    data...   Read o
009C00:  61 79 20 61 74 20 77 24 28 31 29 2C 20 63 77 6F    ay at w$(1), cwo
009C10:  72 64 20 69 73 20 73 65 74 0D 0A 20 20 20 74 6F    rd is set..   to
009C20:  20 31 2C 20 61 6E 64 20 77 65 20 47 4F 53 55 42     1, and we GOSUB
009C30:  20 38 34 30 2E 20 20 54 68 65 20 20 6E 65 77 20     840.  The  new 
009C40:  20 77 6F 72 64 20 69 73 20 63 6F 6D 70 61 72 65     word is compare
009C50:  64 20 77 69 74 68 20 77 24 28 70 61 72 65 6E 74    d with w$(parent
009C60:  29 2C 20 77 68 69 63 68 0D 0A 20 20 20 69 73 20    ), which..   is 
009C70:  77 24 28 30 29 2C 20 61 6E 64 20 61 6C 77 61 79    w$(0), and alway
009C80:  73 20 74 68 65 20 65 6D 70 74 79 20 73 74 72 69    s the empty stri
009C90:  6E 67 2E 20 20 20 54 68 65 20 6E 65 77 20 77 6F    ng.   The new wo
009CA0:  72 64 20 69 73 20 74 68 65 72 65 66 6F 72 65 20    rd is therefore 
009CB0:  67 72 65 61 74 65 72 0D 0A 20 20 20 74 68 61 6E    greater..   than
009CC0:  20 77 24 28 70 61 72 65 6E 74 29 2C 20 61 6E 64     w$(parent), and
009CD0:  20 73 6F 20 72 69 28 30 29 20 69 73 20 73 65 74     so ri(0) is set
009CE0:  20 74 6F 20 31 2C 20 74 68 65 20 76 61 6C 75 65     to 1, the value
009CF0:  20 6F 66 20 63 77 6F 72 64 2E 0D 0A 0D 0A 20 20     of cword.....  
009D00:  20 41 6E 64 20 74 68 61 74 27 73 20 61 6C 6C 20     And that's all 
009D10:  74 68 65 72 65 20 69 73 20 74 6F 20 69 74 3A 20    there is to it: 
009D20:  20 6E 65 78 74 20 20 74 69 6D 65 20 38 30 30 20     next  time 800 
009D30:  69 73 20 63 61 6C 6C 65 64 2C 20 63 77 6F 72 64    is called, cword
009D40:  20 77 69 6C 6C 20 73 74 61 72 74 0D 0A 20 20 20     will start..   
009D50:  6F 66 66 20 61 73 20 31 2C 20 74 68 65 20 74 6F    off as 1, the to
009D60:  70 20 6F 66 20 74 68 65 20 74 72 65 65 2C 20 61    p of the tree, a
009D70:  6E 64 20 65 76 65 72 79 74 68 69 6E 67 20 77 69    nd everything wi
009D80:  6C 6C 20 77 6F 72 6B 20 61 73 20 64 65 73 63 72    ll work as descr
009D90:  69 62 65 64 2E 0D 0A 0D 0A 20 20 20 42 4F 4E 53    ibed.....   BONS
009DA0:  41 49 20 42 45 45 43 48 0D 0A 20 20 20 54 68 65    AI BEECH..   The
009DB0:  20 6F 74 68 65 72 20 61 6C 74 65 72 61 74 69 6F     other alteratio
009DC0:  6E 73 20 74 6F 20 74 68 65 20 70 72 6F 67 72 61    ns to the progra
009DD0:  6D 20 69 6E 63 6C 75 64 65 20 20 6C 69 6E 65 73    m include  lines
009DE0:  20 36 32 30 20 61 6E 64 20 36 32 35 2C 20 77 68     620 and 625, wh
009DF0:  69 63 68 20 61 72 65 0D 0A 20 20 20 70 61 72 74    ich are..   part
009E00:  6E 20 74 6F 20 6C 65 61 72 6E 20 61 62 6F 75 74    n to learn about
009E10:  20 4D 72 20 42 6C 61 63 6B 20 20 74 68 65 20 20     Mr Black  the  
009E20:  6E 65 77 73 61 67 65 6E 74 20 61 6E 64 20 68 69    newsagent and hi
009E30:  73 20 69 6D 61 67 69 6E 61 74 69 76 65 20 75 73    s imaginative us
009E40:  65 20 6F 66 0D 0A 20 20 20 61 72 72 61 79 73 20    e of..   arrays 
009E50:  61 6E 64 20 6C 69 6E 6B 65 64 20 6C 69 73 74 73    and linked lists
009E60:  2E 0D 0A 0D 0A 20 20 20 45 4E 54 4F 4D 4F 4C 4F    .....   ENTOMOLO
009E70:  47 59 20 43 4F 52 4E 45 52 0D 0A 20 20 20 57 65    GY CORNER..   We
009E80:  6C 6C 2C 20 49 20 70 72 6F 6D 69 73 65 64 20 61    ll, I promised a
009E90:  6E 20 61 6E 73 77 65 72 20 74 6F 20 74 68 65 20    n answer to the 
009EA0:  70 75 7A 7A 6C 65 20 49 20 73 65 74 20 6C 61 73    puzzle I set las
009EB0:  74 20 6D 6F 6E 74 68 2E 20 20 54 68 65 20 70 72    t month.  The pr
009EC0:  6F 67 72 61 6D 20 61 73 0D 0A 20 20 20 69 74 20    ogram as..   it 
009ED0:  73 74 6F 6F 64 20 63 6F 6E 74 61 69 6E 65 64 20    stood contained 
009EE0:  61 20 62 75 67 2C 20 77 68 69 63 68 20 63 6F 75    a bug, which cou
009EF0:  6C 64 20 62 65 20 63 75 72 65 64 20 62 79 20 61    ld be cured by a
009F00:  64 64 69 6E 67 20 74 68 65 73 65 20 63 6F 6D 6D    dding these comm
009F10:  61 6E 64 73 20 74 6F 0D 0A 20 20 20 74 68 65 20    ands to..   the 
009F20:  65 6E 64 20 6F 66 20 6C 69 6E 65 20 34 33 35 3A    end of line 435:
009F30:  0D 0A 0D 0A 20 20 20 20 20 77 24 28 6E 77 6F 72    ....     w$(nwor
009F40:  64 73 29 3D 22 22 3A 6C 6B 28 6E 77 6F 72 64 73    ds)="":lk(nwords
009F50:  2C 30 29 3D 30 0D 0A 0D 0A 20 20 20 49 74 20 6D    ,0)=0....   It m
009F60:  69 67 68 74 20 73 65 65 6D 20 75 6E 6E 65 63 63    ight seem unnecc
009F70:  65 73 73 61 72 79 20 74 6F 20 73 65 74 20 61 20    essary to set a 
009F80:  20 70 72 65 76 69 6F 75 73 6C 79 20 75 6E 75 73     previously unus
009F90:  65 64 20 65 6C 65 6D 65 6E 74 20 6F 66 20 61 20    ed element of a 
009FA0:  73 74 72 69 6E 67 0D 0A 20 20 20 61 72 72 61 79    string..   array
009FB0:  20 74 6F 20 74 68 65 20 20 65 6D 70 74 79 20 20     to the  empty  
009FC0:  73 74 72 69 6E 67 2C 20 20 61 6E 64 20 20 74 6F    string,  and  to
009FD0:  20 20 73 65 74 20 20 61 20 20 70 72 65 76 69 6F      set  a  previo
009FE0:  75 73 6C 79 20 75 6E 75 73 65 64 20 6E 75 6D 65    usly unused nume
009FF0:  72 69 63 61 6C 0D 0A 20 20 20 76 61 72 69 61 62    rical..   variab
00A000:  20 6F 66 20 74 68 65 20 6C 6F 61 64 69 6E 67 20     of the loading 
00A010:  72 6F 75 74 69 6E 65 2E 20 20 57 68 65 6E 20 6C    routine.  When l
00A020:  6F 61 64 69 6E 67 20 61 20 73 61 76 65 64 20 76    oading a saved v
00A030:  6F 63 61 62 75 6C 61 72 79 20 66 72 6F 6D 20 64    ocabulary from d
00A040:  69 73 63 20 77 65 0D 0A 20 20 20 68 61 76 65 20    isc we..   have 
00A050:  74 6F 20 62 75 69 6C 64 20 75 70 20 74 68 65 20    to build up the 
00A060:  74 72 65 65 20 70 72 6F 70 65 72 6C 79 2E 20 20    tree properly.  
00A070:  49 74 20 75 73 65 73 20 74 68 65 20 73 61 6D 65    It uses the same
00A080:  20 72 6F 75 74 69 6E 65 73 2C 20 62 75 74 20 63     routines, but c
00A090:  61 6E 20 62 65 0D 0A 20 20 20 73 69 6D 70 6C 65    an be..   simple
00A0A0:  72 20 62 65 63 61 75 73 65 20 77 65 20 6B 6E 6F    r because we kno
00A0B0:  77 20 74 68 61 74 20 65 61 63 68 20 20 77 6F 72    w that each  wor
00A0C0:  64 20 20 72 65 61 64 20 20 69 6E 20 20 66 72 6F    d  read  in  fro
00A0D0:  6D 20 64 69 73 63 20 77 69 6C 6C 20 62 65 20 61    m disc will be a
00A0E0:  20 6E 65 77 0D 0A 20 20 20 6F 6E 65 2E 0D 0A 0D     new..   one....
00A0F0:  0A 20 20 20 49 20 68 61 76 65 20 61 6C 73 6F 20    .   I have also 
00A100:  61 64 64 65 64 20 61 20 73 75 62 72 6F 75 74 69    added a subrouti
00A110:  6E 65 20 61 74 20 39 30 30 2C 20 77 68 69 63 68    ne at 900, which
00A120:  20 69 73 20 63 61 6C 6C 65 64 20 62 79 20 6C 69     is called by li
00A130:  6E 65 20 34 33 2E 20 20 49 66 20 79 6F 75 0D 0A    ne 43.  If you..
00A140:  20 20 20 74 79 70 65 20 22 2A 53 48 4F 57 54 52       type "*SHOWTR
00A150:  45 45 22 20 69 6E 73 74 65 61 64 20 6F 66 20 20    EE" instead of  
00A160:  61 20 20 73 65 6E 74 65 6E 63 65 2C 20 20 74 68    a  sentence,  th
00A170:  65 20 20 73 75 62 72 6F 75 74 69 6E 65 20 20 77    e  subroutine  w
00A180:  69 6C 6C 20 64 69 73 70 6C 61 79 20 61 0D 0A 20    ill display a.. 
00A190:  20 20 72 65 70 72 65 73 65 6E 74 61 74 69 6F 6E      representation
00A1A0:  20 6F 66 20 74 68 65 20 66 69 72 73 74 20 66 69     of the first fi
00A1B0:  76 65 20 6C 61 79 65 72 73 20 20 6F 66 20 20 74    ve layers  of  t
00A1C0:  68 65 20 20 74 72 65 65 20 6F 6E 20 73 63 72 65    he  tree on scre
00A1D0:  65 6E 2E 20 20 59 6F 75 20 63 61 6E 0D 0A 20 20    en.  You can..  
00A1E0:  20 75 73 65 20 74 68 69 73 20 74 6F 20 73 65 65     use this to see
00A1F0:  20 68 6F 77 20 74 68 65 20 74 72 65 65 20 67 72     how the tree gr
00A200:  6C 65 20 74 6F 20 7A 65 72 6F 2C 20 62 65 63 61    le to zero, beca
00A210:  75 73 65 20 77 68 65 6E 20 79 6F 75 20 20 64 69    use when you  di
00A220:  6D 65 6E 73 69 6F 6E 20 20 61 72 72 61 79 73 20    mension  arrays 
00A230:  69 6E 20 42 41 53 49 43 20 74 68 61 74 20 69 73    in BASIC that is
00A240:  20 68 6F 77 0D 0A 20 20 20 74 68 65 20 76 61 72     how..   the var
00A250:  69 61 62 6C 65 73 20 73 74 61 72 74 20 6F 75 74    iables start out
00A260:  2E 20 20 49 6E 20 66 61 63 74 2C 20 20 69 74 20    .  In fact,  it 
00A270:  20 77 6F 75 6C 64 20 62 65 20 75 6E 6E 65 63 63     would be unnecc
00A280:  65 73 61 72 79 2C 20 62 75 74 20 74 68 65 72 65    esary, but there
00A290:  20 69 73 0D 0A 20 20 20 6F 6E 65 20 63 69 72 63     is..   one circ
00A2A0:  75 6D 73 74 61 6E 63 65 20 69 6E 20 77 68 69 63    umstance in whic
00A2B0:  68 20 74 68 65 73 65 20 76 61 72 69 61 62 6C 65    h these variable
00A2C0:  73 20 20 6D 69 67 68 74 20 68 61 76 65 20 62 65    s  might have be
00A2D0:  65 6E 20 75 73 65 64 20 62 65 66 6F 72 65 20 61    en used before a
00A2E0:  6E 64 0D 0A 20 20 20 6D 69 67 68 74 20 68 61 76    nd..   might hav
00A2F0:  65 20 61 63 71 75 69 72 65 64 20 64 69 66 66 65    e acquired diffe
00A300:  72 65 6E 74 20 76 61 6C 75 65 73 2E 0D 0A 0D 0A    rent values.....
00A310:  20 20 20 4E 6F 72 6D 61 6C 6C 79 20 74 68 65 20       Normally the 
00A320:  76 61 6C 75 65 20 6F 66 20 6E 77 6F 72 64 73 20    value of nwords 
00A330:  77 69 6C 6C 20 6A 75 73 74 20 69 6E 63 72 65 61    will just increa
00A340:  73 65 2C 20 20 62 75 74 20 69 66 20 77 65 20 68    se,  but if we h
00A350:  61 64 20 62 75 69 6C 74 20 75 70 20 61 0D 0A 20    ad built up a.. 
00A360:  20 20 6C 61 72 67 65 20 76 6F 63 61 62 75 6C 61      large vocabula
00A370:  72 79 20 69 6E 20 6D 65 6D 6F 72 79 2C 20 61 6E    ry in memory, an
00A380:  64 20 20 74 68 65 6E 20 20 6C 6F 61 64 65 64 20    d  then  loaded 
00A390:  20 61 6E 20 6F 6C 64 65 72 20 73 6D 61 6C 6C 65     an older smalle
00A3A0:  72 20 76 6F 63 61 62 75 6C 61 72 79 0D 0A 20 20    r vocabulary..  
00A3B0:  20 66 69 6C 65 20 66 72 6F 6D 20 64 69 73 63 2C     file from disc,
00A3C0:  20 6E 77 6F 72 64 73 20 77 6F 75 6C 64 20 64 65     nwords would de
00A3D0:  63 72 65 61 73 65 2E 20 20 41 6C 6C 20 20 74 68    crease.  All  th
00A3E0:  65 20 65 78 74 72 61 20 77 6F 72 64 73 20 77 65    e extra words we
00A3F0:  20 68 61 64 20 74 61 75 67 68 74 0D 0A 20 20 20     had taught..   
00A400:  6F 77 73 20 20 61 73 20 79 6F 75 20 61 64 64 20    ows  as you add 
00A410:  6E 65 77 20 73 65 6E 74 65 6E 63 65 73 2E 20 20    new sentences.  
00A420:  54 72 79 20 69 74 20 77 69 74 68 0D 0A 20 20 20    Try it with..   
00A430:  22 54 68 69 73 20 69 73 20 68 6F 77 20 74 72 65    "This is how tre
00A440:  65 73 20 67 72 6F 77 22 2C 20 20 61 6E 64 20 20    es grow",  and  
00A450:  79 6F 75 20 20 73 68 6F 75 6C 64 20 20 67 65 74    you  should  get
00A460:  20 20 74 68 65 20 20 73 61 6D 65 20 74 72 65 65      the  same tree
00A470:  20 61 73 20 69 6E 20 74 68 65 0D 0A 20 20 20 64     as in the..   d
00A480:  69 61 67 72 61 6D 2E 0D 0A 1A 24 24 24 FF 00 FF    iagram....$$$...
00A490:  50 41 54 43 48 0D 0A 20 20 20 42 79 20 4D 61 74    PATCH..   By Mat
00A4A0:  74 68 65 77 20 50 68 69 6C 6C 69 70 73 0D 0A 0D    thew Phillips...
00A4B0:  0A 20 20 20 57 65 20 72 65 74 75 72 6E 20 74 6F    .   We return to
00A4C0:  20 74 68 65 20 63 6F 6D 70 75 74 65 72 20 63 68     the computer ch
00A4D0:  61 74 20 20 70 72 6F 67 72 61 6D 2C 20 20 41 49    at  program,  AI
00A4E0:  2C 20 20 77 68 69 63 68 20 77 65 20 66 69 72 73    ,  which we firs
00A4F0:  74 20 6C 6F 6F 6B 65 64 20 61 74 20 69 6E 0D 0A    t looked at in..
00A500:  61 64 64 65 64 20 61 20 73 75 62 72 6F 75 74 69    added a subrouti
00A510:  6E 65 20 61 74 20 39 30 30 2C 20 77 68 69 63 68    ne at 900, which
00A520:  20 69 73 20 63 61 6C 6C 65 64 20 62 79 20 6C 69     is called by li
00A530:  6E 65 20 34 33 2E 20 20 49 66 20 79 6F 75 0D 0A    ne 43.  If you..
00A540:  20 20 20 74 79 70 65 20 22 2A 53 48 4F 57 54 52       type "*SHOWTR
00A550:  45 45 22 20 69 6E 73 74 65 61 64 20 6F 66 20 20    EE" instead of  
00A560:  61 20 20 73 65 6E 74 65 6E 63 65 2C 20 20 74 68    a  sentence,  th
00A570:  65 20 20 73 75 62 72 6F 75 74 69 6E 65 20 20 77    e  subroutine  w
00A580:  69 6C 6C 20 64 69 73 70 6C 61 79 20 61 0D 0A 20    ill display a.. 
00A590:  20 20 72 65 70 72 65 73 65 6E 74 61 74 69 6F 6E      representation
00A5A0:  20 6F 66 20 74 68 65 20 66 69 72 73 74 20 66 69     of the first fi
00A5B0:  76 65 20 6C 61 79 65 72 73 20 20 6F 66 20 20 74    ve layers  of  t
00A5C0:  68 65 20 20 74 72 65 65 20 6F 6E 20 73 63 72 65    he  tree on scre
00A5D0:  65 6E 2E 20 20 59 6F 75 20 63 61 6E 0D 0A 20 20    en.  You can..  
00A5E0:  20 75 73 65 20 74 68 69 73 20 74 6F 20 73 65 65     use this to see
00A5F0:  20 68 6F 77 20 74 68 65 20 74 72 65 65 20 67 72     how the tree gr
00A600:  69 74 20 77 6F 75 6C 64 20 73 74 69 6C 6C 20 62    it would still b
00A610:  65 20 74 68 65 72 65 20 20 69 6E 20 20 6D 65 6D    e there  in  mem
00A620:  6F 72 79 2C 20 20 62 75 74 20 20 61 72 65 20 20    ory,  but  are  
00A630:  6E 6F 74 20 20 6C 6F 6F 6B 65 64 20 61 74 20 62    not  looked at b
00A640:  65 63 61 75 73 65 20 74 68 65 0D 0A 20 20 20 70    ecause the..   p
00A650:  72 6F 67 72 61 6D 20 6F 6E 6C 79 20 6C 6F 6F 6B    rogram only look
00A660:  73 20 61 74 20 74 68 65 20 77 24 20 61 6E 64 20    s at the w$ and 
00A670:  6C 6B 20 20 61 72 72 61 79 73 20 75 70 20 74 6F    lk  arrays up to
00A680:  20 74 68 65 20 70 6F 69 6E 74 20 73 65 74 20 62     the point set b
00A690:  79 20 6E 77 6F 72 64 73 2E 0D 0A 20 20 20 49 66    y nwords...   If
00A6A0:  20 77 65 20 74 68 65 6E 20 74 61 75 67 68 74 20     we then taught 
00A6B0:  69 74 20 61 20 6E 65 77 20 20 77 6F 72 64 2C 20    it a new  word, 
00A6C0:  20 6F 72 20 20 72 65 71 75 69 72 65 64 20 61 20     or  required a 
00A6D0:  6E 65 77 20 64 75 6D 6D 79 20 6C 69 6E 6B 20 28    new dummy link (
00A6E0:  77 68 69 63 68 20 69 73 0D 0A 20 20 20 77 68 61    which is..   wha
00A6F0:  74 20 6C 69 6E 65 20 34 33 35 20 69 73 20 64 65    t line 435 is de
00A700:  61 6C 69 6E 67 20 77 69 74 68 29 2C 20 20 6E 77    aling with),  nw
00A710:  6F 72 64 73 20 20 77 6F 75 6C 64 20 69 6E 63 72    ords  would incr
00A720:  65 61 73 65 20 61 67 61 69 6E 2C 20 61 6E 64 20    ease again, and 
00A730:  77 65 20 68 61 76 65 0D 0A 20 20 20 74 6F 20 6D    we have..   to m
00A740:  61 6B 65 20 73 75 72 65 20 74 68 61 74 20 61 6E    ake sure that an
00A750:  79 20 64 61 74 61 20 72 65 6D 61 69 6E 69 6E 67    y data remaining
00A760:  20 20 66 72 6F 6D 20 74 68 65 20 6C 61 72 67 65      from the large
00A770:  72 20 76 6F 63 61 62 75 6C 61 72 79 20 61 72 65    r vocabulary are
00A780:  20 77 69 70 65 64 0D 0A 20 20 20 73 6F 20 74 68     wiped..   so th
00A790:  61 74 20 74 68 65 79 20 64 6F 20 6E 6F 74 20 69    at they do not i
00A7A0:  6E 74 65 72 66 65 72 65 20 77 69 74 68 20 74 68    nterfere with th
00A7B0:  65 20 63 6F 72 72 65 63 74 20 6F 70 65 72 61 74    e correct operat
00A7C0:  69 6F 6E 20 6F 66 20 74 68 65 20 70 72 6F 67 72    ion of the progr
00A7D0:  61 6D 2E 0D 0A 0D 0A 20 20 20 54 68 61 74 20 69    am.....   That i
00A7E0:  73 20 77 68 79 20 77 65 20 6E 65 65 64 20 74 6F    s why we need to
00A7F0:  20 20 61 64 64 20 20 74 68 6F 73 65 20 20 63 6F      add  those  co
00A800:  65 20 6A 6F 62 2E 20 20 4C 69 73 74 69 6E 67 20    e job.  Listing 
00A810:  31 20 69 73 20 61 20 70 69 65 63 65 20 20 6F 66    1 is a piece  of
00A820:  20 20 42 41 53 49 43 20 20 77 68 69 63 68 20 69      BASIC  which i
00A830:  6E 73 74 61 6C 6C 73 20 61 20 63 6F 75 70 6C 65    nstalls a couple
00A840:  20 6F 66 20 52 53 58 0D 0A 20 20 20 63 6F 6D 6D     of RSX..   comm
00A850:  61 6E 64 73 2C 20 61 6E 64 20 4C 69 73 74 69 6E    ands, and Listin
00A860:  67 20 32 20 69 73 20 74 68 65 20 61 73 73 65 6D    g 2 is the assem
00A870:  62 6C 79 20 6C 61 6E 67 75 61 67 65 20 66 6F 72    bly language for
00A880:  20 74 68 65 20 52 53 58 73 2E 20 20 3C 3C 54 68     the RSXs.  <<Th
00A890:  65 79 20 61 72 65 0D 0A 20 20 20 73 61 76 65 64    ey are..   saved
00A8A0:  20 6F 6E 20 74 68 65 20 64 69 73 63 20 61 73 20     on the disc as 
00A8B0:  53 45 4E 44 2E 42 41 53 20 61 6E 64 20 53 45 4E    SEND.BAS and SEN
00A8C0:  44 2E 41 53 4D 3E 3E 0D 0A 0D 0A 20 20 20 54 6F    D.ASM>>....   To
00A8D0:  20 75 73 65 20 74 68 65 20 52 53 58 20 63 6F 6D     use the RSX com
00A8E0:  6D 61 6E 64 73 2C 20 74 79 70 65 20 69 6E 20 4C    mands, type in L
00A8F0:  69 73 74 69 6E 67 20 20 31 20 20 61 6E 64 20 72    isting  1  and r
00A900:  75 6E 20 69 74 2E 20 20 49 66 20 79 6F 75 20 68    un it.  If you h
00A910:  61 76 65 20 6D 61 64 65 0D 0A 20 20 20 61 6E 79    ave made..   any
00A920:  20 6D 69 73 74 61 6B 65 73 20 69 6E 20 20 74 68     mistakes in  th
00A930:  65 20 20 74 79 70 69 6E 67 2C 20 20 74 68 65 73    e  typing,  thes
00A940:  65 20 20 77 69 6C 6C 20 20 62 65 20 20 73 70 6F    e  will  be  spo
00A950:  74 74 65 64 20 20 77 68 65 6E 20 20 79 6F 75 20    tted  when  you 
00A960:  72 75 6E 20 74 68 65 0D 0A 20 20 20 70 72 6F 67    run the..   prog
00A970:  72 61 6D 2E 20 20 4F 6E 63 65 20 74 68 65 20 52    ram.  Once the R
00A980:  53 58 73 20 61 72 65 20 69 6E 73 74 61 6C 6C 65    SXs are installe
00A990:  64 2C 20 79 6F 75 20 20 6E 65 65 64 20 74 6F 20    d, you  need to 
00A9A0:  75 73 65 20 74 68 65 20 7C 43 48 4F 55 54 20 63    use the |CHOUT c
00A9B0:  6F 6D 6D 61 6E 64 0D 0A 20 20 20 74 6F 20 73 65    ommand..   to se
00A9C0:  6C 65 63 74 20 74 68 65 20 74 79 70 65 20 6F 66    lect the type of
00A9D0:  20 4D 49 44 49 20 69 6E 74 65 72 66 61 63 65 20     MIDI interface 
00A9E0:  79 6F 75 20 61 72 65 20 75 73 69 6E 67 2E 0D 0A    you are using...
00A9F0:  0D 0A 20 20 20 20 20 7C 43 48 4F 55 54 2C 30 20    ..     |CHOUT,0 
00AA00:  6D 6D 61 6E 64 73 20 20 74 6F 20 20 74 68 65 20    mmands  to  the 
00AA10:  65 6E 64 20 6F 66 20 6C 69 6E 65 20 34 33 35 2E    end of line 435.
00AA20:  20 20 49 6E 0D 0A 20 20 20 66 61 63 74 2C 20 74      In..   fact, t
00AA30:  68 65 72 65 20 69 73 20 61 6E 6F 74 68 65 72 20    here is another 
00AA40:  6C 69 6E 65 20 74 68 61 74 20 6E 65 65 64 73 20    line that needs 
00AA50:  61 6C 74 65 72 69 6E 67 2E 20 20 4C 69 6E 65 20    altering.  Line 
00AA60:  31 36 30 20 73 68 6F 75 6C 64 20 72 65 61 64 3A    160 should read:
00AA70:  0D 0A 0D 0A 20 20 20 31 36 30 20 49 46 20 63 77    ....   160 IF cw
00AA80:  6F 72 64 3D 30 20 54 48 45 4E 20 6E 77 6F 72 64    ord=0 THEN nword
00AA90:  73 3D 6E 77 6F 72 64 73 2B 31 3A 77 24 28 6E 77    s=nwords+1:w$(nw
00AAA0:  6F 72 64 73 29 3D 77 6F 72 64 24 3A 0D 0A 20 20    ords)=word$:..  
00AAB0:  20 20 20 20 20 6C 6B 28 6E 77 6F 72 64 73 2C 30         lk(nwords,0
00AAC0:  29 3D 30 3A 63 77 6F 72 64 3D 6E 77 6F 72 64 73    )=0:cword=nwords
00AAD0:  0D 0A 0D 0A 20 20 20 54 68 65 20 66 75 6C 6C 79    ....   The fully
00AAE0:  20 64 65 62 75 67 67 65 64 20 76 65 72 73 69 6F     debugged versio
00AAF0:  6E 20 20 69 73 20 20 6F 6E 20 20 74 68 65 20 20    n  is  on  the  
00AB00:  63 75 72 72 65 6E 74 20 20 50 72 6F 67 72 61 6D    current  Program
00AB10:  6D 65 72 73 27 20 50 61 74 63 68 20 64 69 73 63    mers' Patch disc
00AB20:  2C 0D 0A 20 20 20 57 41 43 43 49 20 50 44 20 39    ,..   WACCI PD 9
00AB30:  38 2E 20 20 57 68 69 6C 65 20 77 65 20 61 72 65    8.  While we are
00AB40:  20 74 61 6C 6B 69 6E 67 20 61 62 6F 75 74 20 62     talking about b
00AB50:  75 67 73 2C 20 49 20 75 6E 65 61 72 74 68 65 64    ugs, I unearthed
00AB60:  20 6F 6E 65 20 69 6E 20 74 68 65 20 53 43 41 4E     one in the SCAN
00AB70:  0D 0A 20 20 20 52 53 58 20 74 68 61 74 20 77 61    ..   RSX that wa
00AB80:  73 20 70 75 62 6C 69 73 68 65 64 20 62 61 63 6B    s published back
00AB90:  20 69 6E 20 20 57 41 43 43 49 20 20 6E 6F 2E 20     in  WACCI  no. 
00ABA0:  20 31 32 32 20 20 69 6E 20 4A 75 6E 65 2E 20 20     122  in June.  
00ABB0:  54 68 65 20 70 72 6F 67 72 61 6D 20 77 61 73 0D    The program was.
00ABC0:  0A 20 20 20 6D 65 61 6E 74 20 74 6F 20 70 72 69    .   meant to pri
00ABD0:  6E 74 20 75 70 20 42 41 53 49 43 20 6C 69 6E 65    nt up BASIC line
00ABE0:  73 20 20 74 68 61 74 20 20 77 6F 75 6C 64 20 20    s  that  would  
00ABF0:  6E 6F 74 20 20 72 75 6E 20 20 6F 6E 20 20 61 20    not  run  on  a 
00AC00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00AC10:  09 00 01 00 02 09 4E E5 09 00 C3 02 00 00 00 02    ......N.........
00AC20:  09 00 C8 02 00 00 00 02 09 00 C4 02 00 00 00 02    ................
00AC30:  09 00 C9 02 00 00 00 02 09 00 C5 02 00 00 00 02    ................
00AC40:  09 00 C1 02 00 00 00 02 09 00 C6 02 00 00 00 02    ................
00AC50:  09 00 C2 02 00 00 00 02 09 00 C7 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:  20 66 69 6E 64 20 61 20 76 61 6C 75 65 20 78 20     find a value x 
00AD10:  77 68 65 72 65 20 6E 65 78 74 6E 61 6D 65 28 78    where nextname(x
00AD20:  29 20 20 69 73 20 20 7A 65 72 6F 2E 20 20 54 68    )  is  zero.  Th
00AD30:  69 73 20 69 6E 64 69 63 61 74 65 73 20 74 68 61    is indicates tha
00AD40:  74 20 74 68 65 72 65 20 61 72 65 0D 0A 20 20 20    t there are..   
00AD50:  6E 6F 20 66 75 72 74 68 65 72 20 65 6E 74 72 69    no further entri
00AD60:  65 73 20 69 6E 20 74 68 65 20 6C 69 73 74 2E 0D    es in the list..
00AD70:  0A 0D 0A 20 20 20 31 30 20 44 49 4D 20 6E 61 6D    ...   10 DIM nam
00AD80:  65 24 28 35 29 2C 6E 65 78 74 6E 61 6D 65 28 35    e$(5),nextname(5
00AD90:  29 0D 0A 20 20 20 32 30 20 46 4F 52 20 78 3D 31    )..   20 FOR x=1
00ADA0:  20 54 4F 20 35 0D 0A 20 20 20 33 30 20 52 45 41     TO 5..   30 REA
00ADB0:  44 20 6E 61 6D 65 24 28 78 29 3A 47 4F 53 55 42    D name$(x):GOSUB
00ADC0:  20 31 34 30 0D 0A 20 20 20 34 30 20 4E 45 58 54     140..   40 NEXT
00ADD0:  0D 0A 20 20 20 35 30 20 50 52 49 4E 54 22 20 78    ..   50 PRINT" x
00ADE0:  20 6E 61 6D 65 24 28 78 29 22 54 41 42 28 31 35     name$(x)"TAB(15
00ADF0:  29 22 6E 65 78 74 6E 61 6D 65 28 78 29 22 0D 0A    )"nextname(x)"..
00AE00:  20 20 20 36 30 20 46 4F 52 20 78 3D 30 20 54 4F       60 FOR x=0 TO
00AE10:  20 35 0D 0A 20 20 20 37 30 20 50 52 49 4E 54 20     5..   70 PRINT 
00AE20:  78 3B 6E 61 6D 65 24 28 78 29 3B 54 41 42 28 31    x;name$(x);TAB(1
00AE30:  34 29 3B 6E 65 78 74 6E 61 6D 65 28 78 29 0D 0A    4);nextname(x)..
00AE40:  20 20 20 38 30 20 4E 45 58 54 0D 0A 20 20 20 39       80 NEXT..   9
00AE50:  30 20 50 52 49 4E 54 3A 50 52 49 4E 54 22 49 6E    0 PRINT:PRINT"In
00AE60:  20 6F 72 64 65 72 3A 22 0D 0A 20 20 20 31 30 30     order:"..   100
00AE70:  20 78 3D 30 3A 57 48 49 4C 45 20 6E 65 78 74 6E     x=0:WHILE nextn
00AE80:  61 6D 65 28 78 29 3E 30 0D 0A 20 20 20 31 31 30    ame(x)>0..   110
00AE90:  20 78 3D 6E 65 78 74 6E 61 6D 65 28 78 29 3A 50     x=nextname(x):P
00AEA0:  52 49 4E 54 20 6E 61 6D 65 24 28 78 29 0D 0A 20    RINT name$(x).. 
00AEB0:  20 20 31 32 30 20 57 45 4E 44 3A 45 4E 44 0D 0A      120 WEND:END..
00AEC0:  20 20 20 31 33 30 20 44 41 54 41 20 45 67 62 65       130 DATA Egbe
00AED0:  72 74 2C 41 6C 66 72 65 64 2C 43 68 61 72 6C 69    rt,Alfred,Charli
00AEE0:  65 2C 42 65 72 74 72 61 6E 64 2C 44 65 73 6D 6F    e,Bertrand,Desmo
00AEF0:  6E 64 0D 0A 20 20 20 31 34 30 20 52 45 4D 20 69    nd..   140 REM i
00AF00:  68 65 72 65 20 69 73 20 61 6E 6F 74 68 65 72 20    here is another 
00AF10:  65 6C 65 6D 65 6E 74 20 69 6E 20 74 68 65 20 6C    element in the l
00AF20:  69 73 74 2C 20 6C 69 6E 65 0D 0A 20 20 20 31 31    ist, line..   11
00AF30:  30 20 6D 6F 76 65 73 20 78 20 6F 6E 20 74 6F 20    0 moves x on to 
00AF40:  74 68 65 20 6E 65 78 74 20 65 6C 65 6D 65 6E 74    the next element
00AF50:  20 61 6E 64 20 70 72 69 6E 74 73 20 69 74 20 75     and prints it u
00AF60:  70 2E 0D 0A 0D 0A 20 20 20 57 48 41 54 27 53 20    p.....   WHAT'S 
00AF70:  49 4E 20 41 20 4C 49 53 54 3F 0D 0A 20 20 20 57    IN A LIST?..   W
00AF80:  68 61 74 20 61 72 65 20 74 68 65 20 61 64 76 61    hat are the adva
00AF90:  6E 74 61 67 65 73 20 6F 66 20 20 73 74 6F 72 69    ntages of  stori
00AFA0:  6E 67 20 20 74 68 69 6E 67 73 20 20 69 6E 20 20    ng  things  in  
00AFB0:  6C 69 6E 6B 65 64 20 6C 69 73 74 73 3F 20 20 55    linked lists?  U
00AFC0:  73 75 61 6C 6C 79 20 69 6E 0D 0A 20 20 20 42 41    sually in..   BA
00AFD0:  53 49 43 20 77 65 20 73 74 6F 72 65 20 74 68 65    SIC we store the
00AFE0:  20 69 74 65 6D 73 20 69 6E 20 74 68 65 20 72 69     items in the ri
00AFF0:  67 68 74 20 6F 72 64 65 72 20 69 6E 20 61 6E 20    ght order in an 
00B000:  61 72 72 61 79 2E 20 20 54 68 65 20 64 69 73 61    array.  The disa
00B010:  64 76 61 6E 74 61 67 65 0D 0A 20 20 20 6F 66 20    dvantage..   of 
00B020:  74 68 69 73 20 61 70 70 72 6F 61 63 68 20 63 6F    this approach co
00B030:  6D 65 73 20 77 68 65 6E 20 79 6F 75 20 68 61 76    mes when you hav
00B040:  65 20 20 74 6F 20 20 69 6E 73 65 72 74 20 61 20    e  to  insert a 
00B050:  6E 65 77 20 69 74 65 6D 20 69 6E 74 6F 20 74 68    new item into th
00B060:  65 20 61 72 72 61 79 0D 0A 20 20 20 69 6E 20 74    e array..   in t
00B070:  68 65 20 72 69 67 68 74 20 70 6F 73 69 74 69 6F    he right positio
00B080:  6E 2E 20 20 41 6C 6C 20 6F 66 20 74 68 65 20 66    n.  All of the f
00B090:  6F 6C 6C 6F 77 69 6E 67 20 65 6C 65 6D 65 6E 74    ollowing element
00B0A0:  73 20 69 6E 20 74 68 65 20 61 72 72 61 79 20 68    s in the array h
00B0B0:  61 76 65 20 74 6F 0D 0A 20 20 20 62 65 20 73 68    ave to..   be sh
00B0C0:  75 66 66 6C 65 64 20 64 6F 77 6E 20 74 6F 20 6D    uffled down to m
00B0D0:  61 6B 65 20 72 6F 6F 6D 2E 20 20 20 49 66 20 20    ake room.   If  
00B0E0:  79 6F 75 20 20 68 61 64 20 20 61 20 20 6C 69 73    you  had  a  lis
00B0F0:  74 20 6F 66 20 61 20 68 75 6E 64 72 65 64 20 6E    t of a hundred n
00B100:  6E 73 65 72 74 20 69 6E 74 6F 20 6C 69 73 74 0D    nsert into list.
00B110:  0A 20 20 20 31 35 30 20 79 3D 6E 65 78 74 6E 61    .   150 y=nextna
00B120:  6D 65 28 30 29 3A 70 79 3D 30 0D 0A 20 20 20 31    me(0):py=0..   1
00B130:  36 30 20 57 48 49 4C 45 20 79 3E 30 20 41 4E 44    60 WHILE y>0 AND
00B140:  20 6E 61 6D 65 24 28 79 29 3C 6E 61 6D 65 24 28     name$(y)<name$(
00B150:  78 29 0D 0A 20 20 20 31 37 30 20 70 79 3D 79 3A    x)..   170 py=y:
00B160:  79 3D 6E 65 78 74 6E 61 6D 65 28 79 29 0D 0A 20    y=nextname(y).. 
00B170:  20 20 31 38 30 20 57 45 4E 44 0D 0A 20 20 20 31      180 WEND..   1
00B180:  39 30 20 6E 65 78 74 6E 61 6D 65 28 70 79 29 3D    90 nextname(py)=
00B190:  78 3A 6E 65 78 74 6E 61 6D 65 28 78 29 3D 79 0D    x:nextname(x)=y.
00B1A0:  0A 20 20 20 32 30 30 20 52 45 54 55 52 4E 0D 0A    .   200 RETURN..
00B1B0:  0D 0A 20 20 20 54 68 65 20 6C 69 73 74 69 6E 67    ..   The listing
00B1C0:  20 20 3C 3C 73 61 76 65 64 20 6F 6E 20 64 69 73      <<saved on dis
00B1D0:  63 20 61 73 20 4C 49 53 54 45 58 2E 42 41 53 3E    c as LISTEX.BAS>
00B1E0:  3E 20 20 69 6D 70 6C 65 6D 65 6E 74 73 20 20 74    >  implements  t
00B1F0:  68 69 73 20 20 73 74 72 75 63 74 75 72 65 2E 0D    his  structure..
00B200:  0A 20 20 20 46 69 76 65 20 6E 61 6D 65 73 20 20    .   Five names  
00B210:  61 72 65 20 72 65 61 64 20 20 6F 6E 65 20 62 79    are read  one by
00B220:  20 6F 6E 65 20 66 72 6F 6D 20 20 74 68 65 20 64     one from  the d
00B230:  61 74 61 20 20 6C 69 6E 65 20 31 33 30 20 20 69    ata  line 130  i
00B240:  6E 74 6F 20 61 6E 20 20 61 72 72 61 79 2C 0D 0A    nto an  array,..
00B250:  20 20 20 6E 61 6D 65 24 2E 20 20 20 41 66 74 65       name$.   Afte
00B260:  72 20 72 65 61 64 69 6E 67 20 20 65 61 63 68 20    r reading  each 
00B270:  6F 6E 65 2C 20 74 68 65 20 73 75 62 72 6F 75 74    one, the subrout
00B280:  69 6E 65 20 61 74 20 31 34 30 20 20 69 73 20 63    ine at 140  is c
00B290:  61 6C 6C 65 64 2C 20 20 77 68 69 63 68 0D 0A 20    alled,  which.. 
00B2A0:  20 20 69 6E 73 65 72 74 73 20 65 61 63 68 20 6E      inserts each n
00B2B0:  65 77 20 6E 61 6D 65 20 69 6E 74 6F 20 20 74 68    ew name into  th
00B2C0:  65 20 20 63 6F 72 72 65 63 74 20 20 70 6F 73 69    e  correct  posi
00B2D0:  74 69 6F 6E 20 20 69 6E 20 20 74 68 65 20 6C 69    tion  in  the li
00B2E0:  6E 6B 65 64 20 6C 69 73 74 20 62 79 0D 0A 20 20    nked list by..  
00B2F0:  20 61 6C 70 68 61 62 65 74 69 63 61 6C 20 6F 72     alphabetical or
00B300:  61 6D 65 73 2C 0D 0A 20 20 20 61 64 64 69 6E 67    ames,..   adding
00B310:  20 61 6E 6F 74 68 65 72 20 6E 61 6D 65 20 74 6F     another name to
00B320:  20 74 68 65 20 61 72 72 61 79 20 20 77 6F 75 6C     the array  woul
00B330:  64 20 20 6F 66 74 65 6E 20 65 6E 74 61 69 6C 20    d  often entail 
00B340:  6D 6F 76 69 6E 67 20 64 6F 77 6E 20 66 69 66 74    moving down fift
00B350:  79 20 6F 72 0D 0A 20 20 20 6D 6F 72 65 20 73 74    y or..   more st
00B360:  72 69 6E 67 73 2C 20 77 68 65 72 65 61 73 20 69    rings, whereas i
00B370:  6E 73 65 72 74 69 6E 67 20 69 6E 20 20 61 20 20    nserting in  a  
00B380:  6C 69 6E 6B 65 64 20 20 6C 69 73 74 20 6A 75 73    linked  list jus
00B390:  74 20 69 6E 76 6F 6C 76 65 73 20 63 68 61 6E 67    t involves chang
00B3A0:  69 6E 67 0D 0A 20 20 20 74 77 6F 20 6E 75 6D 65    ing..   two nume
00B3B0:  72 69 63 20 61 72 72 61 79 20 65 6C 65 6D 65 6E    ric array elemen
00B3C0:  74 73 2E 20 20 49 66 20 79 6F 75 20 20 68 61 76    ts.  If you  hav
00B3D0:  65 20 20 74 6F 20 20 64 6F 20 20 71 75 69 74 65    e  to  do  quite
00B3E0:  20 20 61 20 62 69 74 20 6F 66 20 74 68 69 73 2C      a bit of this,
00B3F0:  20 61 0D 0A 20 20 20 6C 69 6E 6B 65 64 20 6C 69     a..   linked li
00B400:  73 74 20 61 70 70 72 6F 61 63 68 20 63 61 6E 20    st approach can 
00B410:  73 61 76 65 20 61 20 6C 6F 74 20 6F 66 20 74 69    save a lot of ti
00B420:  6D 65 2E 0D 0A 0D 0A 20 20 20 41 73 20 77 65 6C    me.....   As wel
00B430:  6C 20 61 73 20 73 74 6F 72 69 6E 67 20 6E 61 6D    l as storing nam
00B440:  65 73 2C 20 79 6F 75 20 6D 69 67 68 74 20 68 61    es, you might ha
00B450:  76 65 20 61 6E 6F 74 68 65 72 20 61 72 72 61 79    ve another array
00B460:  20 73 74 6F 72 69 6E 67 20 74 68 65 20 61 64 64     storing the add
00B470:  72 65 73 73 0D 0A 20 20 20 6F 66 20 65 61 63 68    ress..   of each
00B480:  20 70 65 72 73 6F 6E 2E 20 20 49 66 20 79 6F 75     person.  If you
00B490:  20 77 61 6E 74 65 64 20 20 74 6F 20 20 6B 65 65     wanted  to  kee
00B4A0:  70 20 20 74 68 65 20 6E 61 6D 65 73 20 69 6E 20    p  the names in 
00B4B0:  6F 72 64 65 72 2C 20 74 68 65 6E 20 77 69 74 68    order, then with
00B4C0:  6F 75 74 0D 0A 20 20 20 74 68 65 20 6C 69 6E 6B    out..   the link
00B4D0:  65 64 20 6C 69 73 74 20 61 70 70 72 6F 61 63 68    ed list approach
00B4E0:  20 79 6F 75 20 77 6F 75 6C 64 20 61 6C 73 6F 20     you would also 
00B4F0:  20 68 61 76 65 20 74 6F 20 6D 6F 76 65 20 74 68     have to move th
00B500:  64 65 72 2E 20 20 54 68 65 20 65 6C 65 6D 65 6E    der.  The elemen
00B510:  74 20 77 65 20 20 77 61 6E 74 20 74 6F 20 61 64    t we  want to ad
00B520:  64 20 74 6F 20 74 68 65 20 6C 69 73 74 20 68 61    d to the list ha
00B530:  73 20 6A 75 73 74 20 62 65 65 6E 0D 0A 20 20 20    s just been..   
00B540:  73 74 6F 72 65 64 20 69 6E 20 6E 61 6D 65 24 28    stored in name$(
00B550:  78 29 2E 20 20 57 65 20 20 6E 65 65 64 20 20 74    x).  We  need  t
00B560:  6F 20 20 6C 6F 6F 6B 20 20 74 68 72 6F 75 67 68    o  look  through
00B570:  20 20 74 68 65 20 65 78 69 73 74 69 6E 67 20 6C      the existing l
00B580:  69 73 74 20 74 6F 20 73 65 65 0D 0A 20 20 20 77    ist to see..   w
00B590:  68 65 72 65 20 69 74 20 66 69 74 73 20 69 6E 2C    here it fits in,
00B5A0:  20 73 6F 20 77 65 20 73 74 61 72 74 20 20 76 61     so we start  va
00B5B0:  72 69 61 62 6C 65 20 79 20 6F 66 66 20 70 6F 69    riable y off poi
00B5C0:  6E 74 69 6E 67 20 74 6F 20 74 68 65 20 73 74 61    nting to the sta
00B5D0:  72 74 20 6F 66 20 74 68 65 0D 0A 20 20 20 6C 69    rt of the..   li
00B5E0:  73 74 20 62 79 20 73 65 74 74 69 6E 67 20 69 74    st by setting it
00B5F0:  20 74 6F 20 6E 65 78 74 6E 61 6D 65 28 30 29 2E     to nextname(0).
00B600:  0D 0A 0D 0A 20 20 20 54 68 65 20 69 6D 70 6F 72    ....   The impor
00B610:  74 61 6E 74 20 6C 69 6E 65 73 20 74 6F 20 6C 6F    tant lines to lo
00B620:  6F 6B 20 61 74 20 20 61 72 65 20 20 31 36 30 20    ok at  are  160 
00B630:  20 74 6F 20 20 31 38 30 2E 20 20 20 54 68 65 20     to  180.   The 
00B640:  57 48 49 4C 45 20 6C 6F 6F 70 20 69 6E 20 31 36    WHILE loop in 16
00B650:  30 0D 0A 20 20 20 63 6F 6E 74 69 6E 75 65 73 20    0..   continues 
00B660:  61 73 20 6C 6F 6E 67 20 61 73 20 79 3E 30 20 28    as long as y>0 (
00B670:  77 68 69 63 68 20 20 6D 65 61 6E 73 20 20 77 65    which  means  we
00B680:  20 20 68 61 76 65 6E 27 74 20 72 65 61 63 68 65      haven't reache
00B690:  64 20 74 68 65 20 65 6E 64 20 6F 66 20 74 68 65    d the end of the
00B6A0:  0D 0A 20 20 20 6C 69 73 74 29 2C 20 61 6E 64 20    ..   list), and 
00B6B0:  77 68 69 6C 65 20 6E 61 6D 65 24 28 79 29 3C 6E    while name$(y)<n
00B6C0:  61 6D 65 24 28 78 29 2C 20 74 68 61 74 20 69 73    ame$(x), that is
00B6D0:  20 77 68 69 6C 65 20 74 68 65 20 6E 61 6D 65 20     while the name 
00B6E0:  70 6F 69 6E 74 65 64 20 74 6F 20 62 79 20 79 0D    pointed to by y.
00B6F0:  0A 20 20 20 63 6F 6D 65 73 20 62 65 66 6F 72 65    .   comes before
00B700:  34 36 34 2C 20 62 75 74 20 61 73 20 69 74 0D 0A    464, but as it..
00B710:  20 20 20 73 74 61 6E 64 73 20 69 74 20 61 6C 73       stands it als
00B720:  6F 20 70 72 69 6E 74 73 20 75 70 20 61 6E 79 20    o prints up any 
00B730:  20 6C 69 6E 65 20 20 63 6F 6E 74 61 69 6E 69 6E     line  containin
00B740:  67 20 61 6E 20 52 53 58 20 63 6F 6D 6D 61 6E 64    g an RSX command
00B750:  21 20 20 41 20 64 65 62 75 67 67 65 64 0D 0A 20    !  A debugged.. 
00B760:  20 20 76 65 72 73 69 6F 6E 20 69 73 20 6E 6F 77      version is now
00B770:  20 6F 6E 20 74 68 65 20 50 72 6F 67 72 61 6D 6D     on the Programm
00B780:  65 72 73 27 20 20 50 61 74 63 68 20 20 64 69 73    ers'  Patch  dis
00B790:  63 2C 20 77 69 74 68 20 61 6E 20 65 6E 68 61 6E    c, with an enhan
00B7A0:  63 65 6D 65 6E 74 20 77 68 69 63 68 0D 0A 20 20    cement which..  
00B7B0:  20 70 72 69 6E 74 73 20 75 70 20 6C 69 6E 65 73     prints up lines
00B7C0:  20 63 6F 6E 74 61 69 6E 69 6E 67 20 52 53 58 73     containing RSXs
00B7D0:  20 20 77 69 74 68 20 20 64 69 72 65 63 74 20 20      with  direct  
00B7E0:  73 74 72 69 6E 67 20 61 72 67 75 6D 65 6E 74 73    string arguments
00B7F0:  2C 20 77 68 69 63 68 20 61 72 65 0D 0A 20 20 20    , which are..   
00B800:  6E 6F 74 20 61 6C 6C 6F 77 65 64 20 6F 6E 20 74    not allowed on t
00B810:  68 65 20 34 36 34 2E 0D 0A 0D 0A 20 20 20 43 4F    he 464.....   CO
00B820:  4E 54 49 4E 55 49 54 59 20 41 4E 4E 4F 55 4E 43    NTINUITY ANNOUNC
00B830:  45 4D 45 4E 54 0D 0A 20 20 20 4C 61 73 74 20 6D    EMENT..   Last m
00B840:  6F 6E 74 68 20 77 65 20 75 73 65 64 20 74 68 65    onth we used the
00B850:  20 20 63 6F 6E 63 65 70 74 20 20 6F 66 20 20 74      concept  of  t
00B860:  68 65 20 20 6C 69 6E 6B 65 64 20 20 6C 69 73 74    he  linked  list
00B870:  20 69 6E 20 61 20 72 61 74 68 65 72 20 63 6F 6D     in a rather com
00B880:  70 6C 65 78 0D 0A 20 20 20 73 69 74 75 61 74 69    plex..   situati
00B890:  6F 6E 20 74 6F 20 61 6C 6C 6F 77 20 75 73 20 74    on to allow us t
00B8A0:  6F 20 69 6D 70 72 6F 76 65 20 74 68 65 20 41 49    o improve the AI
00B8B0:  20 20 70 72 6F 67 72 61 6D 2E 20 20 49 20 74 68      program.  I th
00B8C0:  6F 75 67 68 74 20 69 74 20 77 6F 75 6C 64 20 62    ought it would b
00B8D0:  65 20 61 0D 0A 20 20 20 67 6F 6F 64 20 69 64 65    e a..   good ide
00B8E0:  61 20 74 6F 20 67 69 76 65 20 61 20 20 73 68 6F    a to give a  sho
00B8F0:  72 74 20 20 70 72 6F 67 72 61 6D 6D 69 6E 67 20    rt  programming 
00B900:  20 6E 61 6D 65 24 28 78 29 20 61 6C 70 68 61 62     name$(x) alphab
00B910:  65 74 69 63 61 6C 6C 79 2E 20 20 4C 69 6E 65 20    etically.  Line 
00B920:  20 31 37 30 20 20 73 74 6F 72 65 73 20 74 68 65     170  stores the
00B930:  20 70 72 65 73 65 6E 74 20 76 61 6C 75 65 0D 0A     present value..
00B940:  20 20 20 6F 66 20 79 20 69 6E 20 70 79 2C 20 61       of y in py, a
00B950:  6E 64 20 74 68 65 6E 20 6D 6F 76 65 73 20 79 20    nd then moves y 
00B960:  6F 6E 20 74 6F 20 20 74 68 65 20 6E 65 78 74 20    on to  the next 
00B970:  69 74 65 6D 20 69 6E 20 74 68 65 20 6C 69 73 74    item in the list
00B980:  20 62 79 20 73 65 74 74 69 6E 67 20 79 0D 0A 20     by setting y.. 
00B990:  20 20 74 6F 20 6E 65 78 74 6E 61 6D 65 28 79 29      to nextname(y)
00B9A0:  2E 0D 0A 0D 0A 20 20 20 55 70 6F 6E 20 72 65 61    .....   Upon rea
00B9B0:  63 68 69 6E 67 20 6C 69 6E 65 20 31 39 30 2C 20    ching line 190, 
00B9C0:  20 77 65 20 20 6B 6E 6F 77 20 20 74 68 61 74 20     we  know  that 
00B9D0:  20 70 79 20 20 69 73 20 20 70 6F 69 6E 74 69 6E     py  is  pointin
00B9E0:  67 20 20 74 6F 20 20 61 20 6E 61 6D 65 20 74 68    g  to  a name th
00B9F0:  61 74 0D 0A 20 20 20 70 72 65 63 65 64 65 73 20    at..   precedes 
00BA00:  6E 61 6D 65 24 28 78 29 20 61 6E 64 20 74 68 61    name$(x) and tha
00BA10:  74 20 79 20 20 69 73 20 20 65 69 74 68 65 72 20    t y  is  either 
00BA20:  20 70 6F 69 6E 74 69 6E 67 20 20 74 6F 20 61 20     pointing  to a 
00BA30:  6E 61 6D 65 20 74 68 61 74 20 66 6F 6C 6C 6F 77    name that follow
00BA40:  73 0D 0A 20 20 20 6E 61 6D 65 24 28 78 29 2C 20    s..   name$(x), 
00BA50:  6F 72 20 77 65 20 68 61 76 65 20 20 72 65 61 63    or we have  reac
00BA60:  68 65 64 20 20 74 68 65 20 20 65 6E 64 20 20 6F    hed  the  end  o
00BA70:  66 20 20 74 68 65 20 20 6C 69 73 74 2E 20 20 57    f  the  list.  W
00BA80:  65 20 68 61 76 65 20 74 68 65 72 65 66 6F 72 65    e have therefore
00BA90:  0D 0A 20 20 20 72 65 61 63 68 65 64 20 74 68 65    ..   reached the
00BAA0:  20 63 6F 72 72 65 63 74 20 70 6F 73 69 74 69 6F     correct positio
00BAB0:  6E 20 74 6F 20 69 6E 73 65 72 74 20 6E 61 6D 65    n to insert name
00BAC0:  24 28 78 29 2E 20 20 54 68 69 73 20 69 73 20 64    $(x).  This is d
00BAD0:  6F 6E 65 20 69 6E 20 6C 69 6E 65 20 31 39 30 0D    one in line 190.
00BAE0:  0A 20 20 20 62 79 20 73 65 74 74 69 6E 67 20 6E    .   by setting n
00BAF0:  65 78 74 6E 61 6D 65 28 70 79 29 20 74 6F 20 78    extname(py) to x
00BB00:  20 65 78 61 6D 70 6C 65 20 20 6F 66 20 61 20 73     example  of a s
00BB10:  69 6D 70 6C 65 72 20 6C 69 6E 6B 65 64 20 6C 69    impler linked li
00BB20:  73 74 0D 0A 20 20 20 73 74 72 75 63 74 75 72 65    st..   structure
00BB30:  2E 20 20 54 68 65 20 73 74 72 75 63 74 75 72 65    .  The structure
00BB40:  20 63 6F 6E 73 69 73 74 73 20 20 6F 66 20 20 61     consists  of  a
00BB50:  20 20 73 74 72 69 6E 67 20 20 61 72 72 61 79 2C      string  array,
00BB60:  20 20 6E 61 6D 65 24 2C 20 75 73 65 64 20 66 6F      name$, used fo
00BB70:  72 0D 0A 20 20 20 73 74 6F 72 69 6E 67 20 6E 61    r..   storing na
00BB80:  6D 65 73 2C 20 61 6E 64 20 61 20 6E 75 6D 65 72    mes, and a numer
00BB90:  69 63 61 6C 20 61 72 72 61 79 2C 20 20 6E 65 78    ical array,  nex
00BBA0:  74 6E 61 6D 65 2C 20 20 77 68 69 63 68 20 70 6F    tname,  which po
00BBB0:  69 6E 74 73 20 74 6F 20 74 68 65 20 6E 65 78 74    ints to the next
00BBC0:  0D 0A 20 20 20 65 6C 65 6D 65 6E 74 20 69 6E 20    ..   element in 
00BBD0:  74 68 65 20 6C 69 73 74 2E 20 20 54 6F 20 66 69    the list.  To fi
00BBE0:  6E 64 20 74 68 65 20 20 66 69 72 73 74 20 20 65    nd the  first  e
00BBF0:  6C 65 6D 65 6E 74 20 20 69 6E 20 74 68 65 20 6C    lement  in the l
00BC00:  69 73 74 2C 20 77 65 20 6C 6F 6F 6B 20 61 74 0D    ist, we look at.
00BC10:  0A 20 20 20 6E 65 78 74 6E 61 6D 65 28 30 29 2E    .   nextname(0).
00BC20:  20 20 49 66 20 6E 65 78 74 6E 61 6D 65 28 30 29      If nextname(0)
00BC30:  20 77 61 73 20 33 2C 20 73 61 79 2C 20 20 74 68     was 3, say,  th
00BC40:  65 6E 20 20 6E 61 6D 65 24 28 33 29 20 69 73 20    en  name$(3) is 
00BC50:  74 68 65 20 66 69 72 73 74 20 6E 61 6D 65 0D 0A    the first name..
00BC60:  20 20 20 69 6E 20 74 68 65 20 6C 69 73 74 2E 20       in the list. 
00BC70:  20 54 6F 20 66 69 6E 64 20 74 68 65 20 6E 65 78     To find the nex
00BC80:  74 20 20 6E 61 6D 65 2C 20 20 77 65 20 6C 6F 6F    t  name,  we loo
00BC90:  6B 20 61 74 20 6E 65 78 74 6E 61 6D 65 28 33 29    k at nextname(3)
00BCA0:  2E 20 20 54 68 61 74 20 6D 69 67 68 74 0D 0A 20    .  That might.. 
00BCB0:  20 20 62 65 20 31 2C 20 69 6E 20 77 68 69 63 68      be 1, in which
00BCC0:  20 63 61 73 65 20 6E 61 6D 65 24 28 31 29 20 66     case name$(1) f
00BCD0:  6F 6C 6C 6F 77 73 20 20 6E 61 6D 65 24 28 33 29    ollows  name$(3)
00BCE0:  20 69 6E 20 74 68 65 20 6C 69 73 74 2E 20 20 45     in the list.  E
00BCF0:  76 65 6E 74 75 61 6C 6C 79 20 77 65 0D 0A 20 20    ventually we..  
00BD00:  2C 20 20 73 6F 20 20 74 68 61 74 20 20 6E 61 6D    ,  so  that  nam
00BD10:  65 24 28 78 29 20 66 6F 6C 6C 6F 77 73 20 6E 61    e$(x) follows na
00BD20:  6D 65 24 28 70 79 29 20 69 6E 20 74 68 65 0D 0A    me$(py) in the..
00BD30:  20 20 20 6C 69 73 74 2C 20 61 6E 64 20 20 73 65       list, and  se
00BD40:  74 74 69 6E 67 20 20 6E 65 78 74 6E 61 6D 65 28    tting  nextname(
00BD50:  78 29 20 20 74 6F 20 20 79 2C 20 20 6D 61 6B 69    x)  to  y,  maki
00BD60:  6E 67 20 20 77 68 61 74 65 76 65 72 20 20 75 73    ng  whatever  us
00BD70:  65 64 20 20 74 6F 20 66 6F 6C 6C 6F 77 0D 0A 20    ed  to follow.. 
00BD80:  20 20 6E 61 6D 65 24 28 70 79 29 20 66 6F 6C 6C      name$(py) foll
00BD90:  6F 77 20 6E 61 6D 65 24 28 78 29 2E 0D 0A 0D 0A    ow name$(x).....
00BDA0:  20 20 20 41 66 74 65 72 20 6C 69 6E 65 73 20 32       After lines 2
00BDB0:  30 20 74 6F 20 34 30 20 68 61 76 65 20 72 65 61    0 to 40 have rea
00BDC0:  64 20 69 6E 20 20 74 68 65 20 20 64 61 74 61 20    d in  the  data 
00BDD0:  61 6E 64 20 69 6E 73 65 72 74 65 64 20 74 68 65    and inserted the
00BDE0:  20 6E 61 6D 65 73 20 69 6E 20 74 68 65 0D 0A 20     names in the.. 
00BDF0:  20 20 6C 69 73 74 2C 20 6C 69 6E 65 73 20 35 30      list, lines 50
00BE00:  20 74 6F 20 38 30 20 67 6F 20 20 74 68 72 6F 75     to 80 go  throu
00BE10:  67 68 20 20 74 68 65 20 20 61 72 72 61 79 20 20    gh  the  array  
00BE20:  70 72 69 6E 74 69 6E 67 20 75 70 20 74 68 65 20    printing up the 
00BE30:  63 6F 6E 74 65 6E 74 73 2C 20 73 6F 0D 0A 20 20    contents, so..  
00BE40:  20 74 68 61 74 20 79 6F 75 20 63 61 6E 20 73 65     that you can se
00BE50:  65 20 68 6F 77 20 69 74 20 61 6C 6C 20 77 6F 72    e how it all wor
00BE60:  6B 73 2E 20 20 46 6F 6C 6C 6F 77 20 74 68 65 20    ks.  Follow the 
00BE70:  6C 69 6E 6B 73 20 74 68 72 6F 75 67 68 20 74 6F    links through to
00BE80:  20 63 68 65 63 6B 20 74 68 61 74 0D 0A 20 20 20     check that..   
00BE90:  69 74 20 77 6F 72 6B 73 2E 20 20 54 68 65 6E 20    it works.  Then 
00BEA0:  6C 69 6E 65 73 20 39 30 20 74 6F 20 31 32 30 20    lines 90 to 120 
00BEB0:  70 72 69 6E 74 20 20 75 70 20 20 74 68 65 20 6C    print  up  the l
00BEC0:  69 73 74 20 69 6E 20 6F 72 64 65 72 2E 20 20 57    ist in order.  W
00BED0:  65 20 73 74 61 72 74 20 62 79 0D 0A 20 20 20 73    e start by..   s
00BEE0:  65 74 74 69 6E 67 20 78 20 74 6F 20 62 65 20 7A    etting x to be z
00BEF0:  65 72 6F 2C 20 61 6E 64 20 77 68 69 6C 65 20 74    ero, and while t
00BF00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00BF10:  0A 00 01 00 02 09 4E E5 0A 00 C2 02 00 00 00 02    ......N.........
00BF20:  0A 00 C7 02 00 00 00 02 0A 00 C3 02 00 00 00 02    ................
00BF30:  0A 00 C8 02 00 00 00 02 0A 00 C4 02 00 00 00 02    ................
00BF40:  0A 00 C9 02 00 00 00 02 0A 00 C5 02 00 00 00 02    ................
00BF50:  0A 00 C1 02 00 00 00 02 0A 00 C6 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:  69 6E 20 20 6F 72 64 65 72 20 20 6F 66 20 20 74    in  order  of  t
00C010:  68 65 69 72 20 20 62 69 72 74 68 64 61 79 73 20    heir  birthdays 
00C020:  20 74 68 72 6F 75 67 68 20 20 74 68 65 20 79 65     through  the ye
00C030:  61 72 2E 0D 0A 20 20 20 49 6E 73 65 72 74 69 6E    ar...   Insertin
00C040:  67 20 61 20 6E 65 77 20 6E 61 6D 65 20 20 69 6E    g a new name  in
00C050:  20 20 74 68 65 20 20 6C 69 73 74 20 20 77 6F 75      the  list  wou
00C060:  6C 64 20 20 69 6E 76 6F 6C 76 65 20 20 70 75 74    ld  involve  put
00C070:  74 69 6E 67 20 74 68 65 6D 20 69 6E 74 6F 20 74    ting them into t
00C080:  68 65 0D 0A 20 20 20 63 6F 72 72 65 63 74 20 70    he..   correct p
00C090:  6F 73 69 74 69 6F 6E 20 69 6E 20 20 74 68 65 20    osition in  the 
00C0A0:  20 6E 65 78 74 6E 61 6D 65 20 20 61 72 72 61 79     nextname  array
00C0B0:  20 20 61 63 63 6F 72 64 69 6E 67 20 20 74 6F 20      according  to 
00C0C0:  20 74 68 65 20 61 6C 70 68 61 62 65 74 69 63 61     the alphabetica
00C0D0:  6C 0D 0A 20 20 20 70 6F 73 69 74 69 6F 6E 20 6F    l..   position o
00C0E0:  66 20 20 74 68 65 20 20 6E 61 6D 65 2C 20 20 61    f  the  name,  a
00C0F0:  6E 64 20 20 69 6E 74 6F 20 20 6E 65 78 74 62 69    nd  into  nextbi
00C100:  72 74 68 64 61 79 20 20 61 63 63 6F 72 64 69 6E    rthday  accordin
00C110:  67 20 20 74 6F 20 20 74 68 65 20 64 61 74 65 2E    g  to  the date.
00C120:  0D 0A 20 20 20 44 65 70 65 6E 64 69 6E 67 20 6F    ..   Depending o
00C130:  6E 20 74 68 65 20 61 72 72 61 6E 67 65 6D 65 6E    n the arrangemen
00C140:  74 20 6F 66 20 20 74 68 65 20 20 72 65 70 6F 72    t of  the  repor
00C150:  74 20 20 74 68 61 74 20 20 79 6F 75 20 72 65 71    t  that  you req
00C160:  75 69 72 65 64 20 79 6F 75 20 77 6F 75 6C 64 0D    uired you would.
00C170:  0A 20 20 20 65 69 74 68 65 72 20 75 73 65 20 6E    .   either use n
00C180:  65 78 74 6E 61 6D 65 20 6F 72 20 6E 65 78 74 62    extname or nextb
00C190:  69 72 74 68 64 61 79 20 20 74 6F 20 20 72 75 6E    irthday  to  run
00C1A0:  20 20 74 68 72 6F 75 67 68 20 74 68 65 20 64 61      through the da
00C1B0:  74 61 20 61 6E 64 20 64 69 73 70 6C 61 79 0D 0A    ta and display..
00C1C0:  20 20 20 69 74 2E 0D 0A 0D 0A 20 20 20 53 6F 20       it.....   So 
00C1D0:  66 61 72 20 74 68 65 20 66 69 72 73 74 20 65 6C    far the first el
00C1E0:  65 6D 65 6E 74 20 69 6E 20 74 68 65 20 6C 69 73    ement in the lis
00C1F0:  74 20 68 61 73 20 62 65 65 6E 20 70 6F 69 6E 74    t has been point
00C200:  68 61 73 20 61 20 6C 69 6E 6B 65 64 20 6C 69 73    has a linked lis
00C210:  74 20 63 61 6C 6C 65 64 0D 0A 20 20 20 6E 65 78    t called..   nex
00C220:  74 64 65 62 74 20 73 6F 20 68 65 20 6B 6E 6F 77    tdebt so he know
00C230:  73 20 77 68 6F 20 6E 65 78 74 20 74 6F 20 74 61    s who next to ta
00C240:  6B 65 20 74 6F 20 74 68 65 20 73 6D 61 6C 6C 20    ke to the small 
00C250:  63 6C 61 69 6D 73 20 63 6F 75 72 74 2E 0D 0A 0D    claims court....
00C260:  0A 20 20 20 44 4F 55 42 4C 45 20 44 55 54 43 48    .   DOUBLE DUTCH
00C270:  0D 0A 20 20 20 54 68 65 72 65 20 61 72 65 20 6C    ..   There are l
00C280:  6F 74 73 20 6D 6F 72 65 20 70 6F 73 73 69 62 69    ots more possibi
00C290:  6C 69 74 69 65 73 20 66 6F 72 20 20 6C 69 6E 6B    lities for  link
00C2A0:  65 64 20 20 6C 69 73 74 73 2E 20 20 4F 6E 65 20    ed  lists.  One 
00C2B0:  69 6D 70 6F 72 74 61 6E 74 20 6F 6E 65 20 49 0D    important one I.
00C2C0:  0A 20 20 20 6F 75 67 68 74 20 74 6F 20 6D 65 6E    .   ought to men
00C2D0:  74 69 6F 6E 20 69 73 20 74 68 65 20 20 64 6F 75    tion is the  dou
00C2E0:  62 6C 79 2D 6C 69 6E 6B 65 64 20 20 6C 69 73 74    bly-linked  list
00C2F0:  2E 20 20 20 49 74 20 20 69 73 20 20 65 61 73 79    .   It  is  easy
00C300:  20 65 6E 6F 75 67 68 20 69 6E 20 74 68 65 0D 0A     enough in the..
00C310:  20 20 20 65 78 61 6D 70 6C 65 20 77 65 20 68 61       example we ha
00C320:  76 65 20 6C 6F 6F 6B 65 64 20 61 74 20 74 6F 20    ve looked at to 
00C330:  66 69 6E 64 20 74 68 65 20 6E 65 78 74 20 69 74    find the next it
00C340:  65 6D 20 69 6E 20 74 68 65 20 6C 69 73 74 2C 20    em in the list, 
00C350:  62 75 74 20 73 6F 6D 65 74 69 6D 65 73 0D 0A 20    but sometimes.. 
00C360:  20 20 69 74 20 69 73 20 75 73 65 66 75 6C 20 74      it is useful t
00C370:  6F 20 67 6F 20 75 70 20 61 6E 64 20 64 6F 77 6E    o go up and down
00C380:  20 74 68 65 20 20 6C 69 73 74 2E 20 20 20 49 66     the  list.   If
00C390:  20 74 68 65 20 6C 69 73 74 20 69 73 20 6C 6F 6E     the list is lon
00C3A0:  67 20 69 74 20 69 73 20 6D 6F 73 74 0D 0A 20 20    g it is most..  
00C3B0:  20 65 66 66 69 63 69 65 6E 74 20 74 6F 20 68 61     efficient to ha
00C3C0:  76 65 20 61 20 73 65 63 6F 6E 64 20 6C 69 6E 6B    ve a second link
00C3D0:  65 64 20 20 6C 69 73 74 20 20 77 68 69 63 68 20    ed  list  which 
00C3E0:  20 68 6F 6C 64 73 20 74 68 65 20 69 74 65 6D 73     holds the items
00C3F0:  20 69 6E 20 72 65 76 65 72 73 65 0D 0A 20 20 20     in reverse..   
00C400:  65 64 20 74 6F 20 66 72 6F 6D 20 6E 65 78 74 6E    ed to from nextn
00C410:  61 6D 65 28 30 29 2C 0D 0A 20 20 20 61 6E 64 20    ame(0),..   and 
00C420:  74 68 65 20 6C 69 6E 6B 65 64 20 6C 69 73 74 20    the linked list 
00C430:  68 61 73 20 20 69 6E 63 6C 75 64 65 64 20 20 61    has  included  a
00C440:  6C 6C 20 20 74 68 65 20 20 65 6C 65 6D 65 6E 74    ll  the  element
00C450:  73 20 20 69 6E 20 74 68 65 20 6E 61 6D 65 24 20    s  in the name$ 
00C460:  61 72 72 61 79 2E 0D 0A 20 20 20 4C 69 6E 6B 65    array...   Linke
00C470:  64 20 6C 69 73 74 73 20 68 61 76 65 20 6D 75 63    d lists have muc
00C480:  68 20 77 69 64 65 72 20 61 70 70 6C 69 63 61 74    h wider applicat
00C490:  69 6F 6E 73 2E 0D 0A 0D 0A 20 20 20 54 48 45 20    ions.....   THE 
00C4A0:  54 41 4C 45 20 4F 46 20 4D 52 20 42 4C 41 43 4B    TALE OF MR BLACK
00C4B0:  0D 0A 20 20 20 4D 72 20 42 6C 61 63 6B 20 74 68    ..   Mr Black th
00C4C0:  65 20 6E 65 77 73 61 67 65 6E 74 20 68 61 73 20    e newsagent has 
00C4D0:  31 32 30 38 20 20 63 75 73 74 6F 6D 65 72 73 2E    1208  customers.
00C4E0:  20 20 54 68 65 69 72 20 6E 61 6D 65 73 20 61 6E      Their names an
00C4F0:  64 20 61 64 64 72 65 73 73 65 73 20 61 72 65 0D    d addresses are.
00C500:  0A 20 20 20 73 74 6F 72 65 64 20 20 69 6E 20 20    .   stored  in  
00C510:  74 68 65 20 20 73 74 72 69 6E 67 20 20 61 72 72    the  string  arr
00C520:  61 79 73 20 20 20 6E 61 6D 65 24 20 20 20 61 6E    ays   name$   an
00C530:  64 20 20 61 64 64 72 65 73 73 24 2E 20 20 20 54    d  address$.   T
00C540:  68 65 69 72 20 20 64 65 6C 69 76 65 72 79 0D 0A    heir  delivery..
00C550:  20 20 20 72 65 71 75 69 72 65 6D 65 6E 74 73 20       requirements 
00C560:  61 72 65 20 20 73 74 6F 72 65 64 20 20 69 6E 20    are  stored  in 
00C570:  20 74 68 65 20 20 77 68 69 63 68 70 61 70 65 72     the  whichpaper
00C580:  24 20 20 61 72 72 61 79 2E 20 20 20 4D 72 20 20    $  array.   Mr  
00C590:  42 6C 61 63 6B 20 65 6D 70 6C 6F 79 73 0D 0A 20    Black employs.. 
00C5A0:  20 20 73 65 76 65 72 61 6C 20 6E 65 77 73 70 61      several newspa
00C5B0:  70 65 72 20 20 64 65 6C 69 76 65 72 79 20 20 6F    per  delivery  o
00C5C0:  70 65 72 61 74 69 76 65 73 20 20 77 68 6F 73 65    peratives  whose
00C5D0:  20 20 6E 61 6D 65 73 20 20 61 72 65 20 20 73 74      names  are  st
00C5E0:  6F 72 65 64 20 20 69 6E 20 74 68 65 0D 0A 20 20    ored  in the..  
00C5F0:  20 70 61 70 65 72 62 6F 79 24 20 61 72 72 61 79     paperboy$ array
00C600:  6F 72 64 65 72 2E 20 20 57 65 20 63 6F 75 6C 64    order.  We could
00C610:  20 63 61 6C 6C 20 74 68 69 73 20 70 72 65 76 69     call this previ
00C620:  6F 75 73 6E 61 6D 65 2E 0D 0A 0D 0A 20 20 20 44    ousname.....   D
00C630:  4F 55 42 4C 45 20 47 49 4E 0D 0A 20 20 20 54 68    OUBLE GIN..   Th
00C640:  61 74 20 73 6F 75 6E 64 73 20 61 20 67 6F 6F 64    at sounds a good
00C650:  20 69 64 65 61 21 20 20 53 65 65 20 79 6F 75 20     idea!  See you 
00C660:  6E 65 78 74 20 6D 6F 6E 74 68 20 66 6F 72 20 61    next month for a
00C670:  20 73 70 6F 74 20 6F 66 20 61 72 62 6F 72 69 63     spot of arboric
00C680:  75 6C 74 75 72 65 2E 0D 0A 1A 24 24 24 FF 00 FF    ulture....$$$...
00C690:  74 63 68 20 31 38 20 2D 20 57 41 43 43 49 20 31    tch 18 - WACCI 1
00C6A0:  32 37 0D 0A 20 20 20 50 52 4F 47 52 41 4D 4D 45    27..   PROGRAMME
00C6B0:  52 53 27 20 50 41 54 43 48 0D 0A 20 20 20 42 79    RS' PATCH..   By
00C6C0:  20 4D 61 74 74 68 65 77 20 50 68 69 6C 6C 69 70     Matthew Phillip
00C6D0:  73 0D 0A 0D 0A 20 20 20 48 61 76 65 20 79 6F 75    s....   Have you
00C6E0:  20 65 76 65 72 20 74 68 6F 75 67 68 74 20 68 6F     ever thought ho
00C6F0:  77 20 62 6F 72 69 6E 67 20 20 79 6F 75 72 20 20    w boring  your  
00C700:  20 65 6E 6F 75 67 68 20 69 6E 20 74 68 65 0D 0A     enough in the..
00C710:  20 20 20 65 78 61 6D 70 6C 65 20 77 65 20 68 61       example we ha
00C720:  76 65 20 6C 6F 6F 6B 65 64 20 61 74 20 74 6F 20    ve looked at to 
00C730:  66 69 6E 64 20 74 68 65 20 6E 65 78 74 20 69 74    find the next it
00C740:  65 6D 20 69 6E 20 74 68 65 20 6C 69 73 74 2C 20    em in the list, 
00C750:  62 75 74 20 73 6F 6D 65 74 69 6D 65 73 0D 0A 20    but sometimes.. 
00C760:  20 20 69 74 20 69 73 20 75 73 65 66 75 6C 20 74      it is useful t
00C770:  6F 20 67 6F 20 75 70 20 61 6E 64 20 64 6F 77 6E    o go up and down
00C780:  20 74 68 65 20 20 6C 69 73 74 2E 20 20 20 49 66     the  list.   If
00C790:  20 74 68 65 20 6C 69 73 74 20 69 73 20 6C 6F 6E     the list is lon
00C7A0:  67 20 69 74 20 69 73 20 6D 6F 73 74 0D 0A 20 20    g it is most..  
00C7B0:  20 65 66 66 69 63 69 65 6E 74 20 74 6F 20 68 61     efficient to ha
00C7C0:  76 65 20 61 20 73 65 63 6F 6E 64 20 6C 69 6E 6B    ve a second link
00C7D0:  65 64 20 20 6C 69 73 74 20 20 77 68 69 63 68 20    ed  list  which 
00C7E0:  20 68 6F 6C 64 73 20 74 68 65 20 69 74 65 6D 73     holds the items
00C7F0:  20 69 6E 20 72 65 76 65 72 73 65 0D 0A 20 20 20     in reverse..   
00C800:  2E 20 20 41 20 6E 75 6D 65 72 69 63 20 61 72 72    .  A numeric arr
00C810:  61 79 2C 20 63 61 6C 6C 65 64 20 20 70 61 70 65    ay, called  pape
00C820:  72 72 6F 75 6E 64 2C 20 70 6F 69 6E 74 73 20 74    rround, points t
00C830:  6F 20 74 68 65 20 66 69 72 73 74 0D 0A 20 20 20    o the first..   
00C840:  61 64 64 72 65 73 73 20 6F 6E 20 61 20 70 61 70    address on a pap
00C850:  65 72 20 62 6F 79 27 73 20 72 6F 75 6E 64 2E 0D    er boy's round..
00C860:  0A 0D 0A 20 20 20 46 6F 72 20 65 78 61 6D 70 6C    ...   For exampl
00C870:  65 2C 20 70 61 70 65 72 62 6F 79 24 28 36 29 20    e, paperboy$(6) 
00C880:  69 73 20 20 4A 69 6D 2E 20 20 20 54 68 65 20 20    is  Jim.   The  
00C890:  6E 75 6D 62 65 72 20 20 61 74 20 70 61 70 65 72    number  at paper
00C8A0:  72 6F 75 6E 64 28 36 29 20 69 73 20 34 32 33 2C    round(6) is 423,
00C8B0:  0D 0A 20 20 20 77 68 69 63 68 20 6D 65 61 6E 73    ..   which means
00C8C0:  20 74 68 61 74 20 4A 69 6D 20 6D 75 73 74 20 73     that Jim must s
00C8D0:  74 61 72 74 20 20 68 69 73 20 20 72 6F 75 6E 64    tart  his  round
00C8E0:  20 61 74 20 61 64 64 72 65 73 73 24 28 34 32 33     at address$(423
00C8F0:  29 2C 20 6E 75 6D 62 65 72 20 34 20 54 68 65 0D    ), number 4 The.
00C900:  0A 20 20 20 4F 76 61 6C 2C 20 20 64 65 6C 69 76    .   Oval,  deliv
00C910:  65 72 69 6E 67 20 20 77 68 69 63 68 70 61 70 65    ering  whichpape
00C920:  72 24 28 34 32 33 29 2E 20 20 20 48 65 20 20 64    r$(423).   He  d
00C930:  6F 65 73 20 20 6E 6F 74 20 20 6E 65 65 64 20 20    oes  not  need  
00C940:  74 6F 20 20 6B 6E 6F 77 20 20 74 68 61 74 0D 0A    to  know  that..
00C950:  20 20 20 6E 61 6D 65 24 28 34 32 33 29 20 69 73       name$(423) is
00C960:  20 4D 72 20 50 68 69 6C 69 70 20 53 70 72 6F 75     Mr Philip Sprou
00C970:  74 2E 20 20 57 68 61 74 20 20 68 65 20 20 64 6F    t.  What  he  do
00C980:  65 73 20 20 6E 65 65 64 20 20 74 6F 20 6B 6E 6F    es  need  to kno
00C990:  77 20 69 73 20 74 68 65 20 6E 65 78 74 0D 0A 20    w is the next.. 
00C9A0:  20 20 61 64 64 72 65 73 73 20 6F 6E 20 74 68 65      address on the
00C9B0:  20 70 61 70 65 72 20 20 72 6F 75 6E 64 2E 20 20     paper  round.  
00C9C0:  20 54 68 69 73 20 20 69 73 20 20 73 74 6F 72 65     This  is  store
00C9D0:  64 20 20 69 6E 20 74 68 65 20 61 72 72 61 79 20    d  in the array 
00C9E0:  6E 65 78 74 61 64 64 72 65 73 73 2C 0D 0A 20 20    nextaddress,..  
00C9F0:  20 77 68 69 63 68 20 20 63 6F 6E 74 61 69 6E 73     which  contains
00CA00:  23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61    #Programmers' Pa
00CA10:  74 63 68 20 31 32 20 2D 20 57 41 43 43 49 20 31    tch 12 - WACCI 1
00CA20:  32 31 2C 20 4D 61 79 20 31 39 39 38 2C 20 70 2E    21, May 1998, p.
00CA30:  20 32 33 2D 32 35 0D 0A 20 20 20 50 52 4F 47 52     23-25..   PROGR
00CA40:  41 4D 4D 45 52 53 27 20 50 41 54 43 48 20 31 32    AMMERS' PATCH 12
00CA50:  0D 0A 20 20 20 42 79 20 4D 61 74 74 68 65 77 20    ..   By Matthew 
00CA60:  50 68 69 6C 6C 69 70 73 0D 0A 0D 0A 20 20 20 49    Phillips....   I
00CA70:  74 27 73 20 61 20 77 65 74 20 61 6E 64 20 77 69    t's a wet and wi
00CA80:  6E 64 79 20 6E 69 67 68 74 2C 20 20 61 6E 64 20    ndy night,  and 
00CA90:  20 49 20 20 61 6D 20 20 73 69 74 74 69 6E 67 20     I  am  sitting 
00CAA0:  20 69 6E 20 66 72 6F 6E 74 20 6F 66 20 74 68 65     in front of the
00CAB0:  20 63 6F 6D 70 75 74 65 72 0D 0A 20 20 20 74 72     computer..   tr
00CAC0:  79 69 6E 67 20 74 6F 20 74 68 69 6E 6B 20 6F 66    ying to think of
00CAD0:  20 61 20 67 6F 6F 64 20 20 62 65 67 69 6E 6E 69     a good  beginni
00CAE0:  6E 67 20 20 74 6F 20 20 74 68 65 20 61 72 74 69    ng  to  the arti
00CAF0:  63 6C 65 2E 20 20 57 68 61 74 20 77 69 6C 6C 20    cle.  What will 
00CB00:  67 72 61 62 20 74 68 65 0D 0A 20 20 20 61 74 74    grab the..   att
00CB10:  65 6E 74 69 6F 6E 20 6F 66 20 74 68 65 20 57 41    ention of the WA
00CB20:  43 43 49 20 72 65 61 64 65 72 20 61 6E 64 20 65    CCI reader and e
00CB30:  6E 74 69 63 65 20 65 76 65 6E 20 74 68 65 20 6D    ntice even the m
00CB40:  6F 73 74 20 74 69 6D 69 64 20 70 72 6F 67 72 61    ost timid progra
00CB50:  6D 6D 65 72 20 74 6F 0D 0A 20 20 20 72 65 61 64    mmer to..   read
00CB60:  20 61 20 6C 6F 61 64 20 6F 66 20 74 65 63 68 6E     a load of techn
00CB70:  69 63 61 6C 20 69 6E 66 6F 72 6D 61 74 69 6F 6E    ical information
00CB80:  20 6F 6E 20 74 68 65 20 64 75 6C 6C 65 73 74 20     on the dullest 
00CB90:  61 73 70 65 63 74 73 20 6F 66 20 4D 49 44 49 3F    aspects of MIDI?
00CBA0:  20 20 57 65 6C 6C 0D 0A 20 20 20 74 68 69 73 20      Well..   this 
00CBB0:  77 6F 6E 27 74 20 66 6F 72 20 73 75 72 65 2E 2E    won't for sure..
00CBC0:  2E 0D 0A 0D 0A 20 20 20 4D 4F 52 45 20 53 54 41    .....   MORE STA
00CBD0:  54 55 53 20 43 4F 44 45 53 0D 0A 20 20 20 4C 61    TUS CODES..   La
00CBE0:  73 74 20 6D 6F 6E 74 68 20 49 20 77 65 6E 74 20    st month I went 
00CBF0:  74 68 72 6F 75 67 68 20 6D 6F 73 74 20 6F 66 20    through most of 
00CC00:  20 20 61 20 20 6C 69 6E 6B 65 64 20 20 20 6C 69      a  linked   li
00CC10:  73 74 20 20 20 66 6F 72 20 20 20 65 61 63 68 20    st   for   each 
00CC20:  20 20 70 61 70 65 72 20 20 62 6F 79 2E 20 20 20      paper  boy.   
00CC30:  4C 6F 6F 6B 69 6E 67 20 20 61 74 0D 0A 20 20 20    Looking  at..   
00CC40:  6E 65 78 74 61 64 64 72 65 73 73 28 34 32 33 29    nextaddress(423)
00CC50:  2C 20 77 65 20 66 69 6E 64 20 74 68 61 74 20 69    , we find that i
00CC60:  74 20 69 73 20 32 37 2C 20 20 61 6E 64 20 61 64    t is 27,  and ad
00CC70:  64 72 65 73 73 24 28 32 37 29 20 69 73 20 6E 75    dress$(27) is nu
00CC80:  6D 62 65 72 20 35 20 54 68 65 0D 0A 20 20 20 4F    mber 5 The..   O
00CC90:  76 61 6C 2C 20 77 68 69 63 68 20 68 61 70 70 65    val, which happe
00CCA0:  6E 73 20 74 6F 20 62 65 20 20 74 68 65 20 20 68    ns to be  the  h
00CCB0:  6F 75 73 65 20 20 6E 65 78 74 20 64 6F 6F 72 2E    ouse  next door.
00CCC0:  20 20 4E 65 78 74 61 64 64 72 65 73 73 28 32 37      Nextaddress(27
00CCD0:  29 20 69 73 20 36 37 38 2C 0D 0A 20 20 20 61 6E    ) is 678,..   an
00CCE0:  64 20 61 64 64 72 65 73 73 24 28 36 37 38 29 20    d address$(678) 
00CCF0:  69 73 20 38 20 51 75 65 65 6E 27 73 20 47 61 72    is 8 Queen's Gar
00CD00:  64 65 6E 73 2C 20 6A 75 73 74 20 61 63 72 6F 73    dens, just acros
00CD10:  73 20 74 68 65 20 72 6F 61 64 2E 0D 0A 0D 0A 20    s the road..... 
00CD20:  20 20 57 68 65 6E 20 68 65 20 67 65 74 73 20 74      When he gets t
00CD30:  6F 20 74 68 65 20 6C 61 73 74 20 20 61 64 64 72    o the last  addr
00CD40:  65 73 73 2C 20 73 74 6F 72 65 64 20 69 6E 20 61    ess, stored in a
00CD50:  64 64 72 65 73 73 24 28 36 37 29 2C 20 6E 65 78    ddress$(67), nex
00CD60:  74 61 64 64 72 65 73 73 28 36 37 29 0D 0A 20 20    taddress(67)..  
00CD70:  20 69 73 20 7A 65 72 6F 2C 20 77 68 69 63 68 20     is zero, which 
00CD80:  6D 65 61 6E 73 20 68 65 20 68 61 73 20 72 65 61    means he has rea
00CD90:  63 68 65 64 20 74 68 65 20 65 6E 64 20 6F 66 20    ched the end of 
00CDA0:  74 68 65 20 70 61 70 65 72 20 72 6F 75 6E 64 2E    the paper round.
00CDB0:  20 20 54 68 69 73 20 69 73 20 61 0D 0A 20 20 20      This is a..   
00CDC0:  67 6F 6F 64 20 74 68 69 6E 67 2C 20 61 73 20 68    good thing, as h
00CDD0:  69 73 20 62 61 67 20 69 73 20 65 6D 70 74 79 2E    is bag is empty.
00CDE0:  0D 0A 0D 0A 20 20 20 4E 6F 77 2C 20 74 68 65 20    ....   Now, the 
00CDF0:  6F 6E 6C 79 20 76 61 6C 75 65 73 20 6F 66 20 6E    only values of n
00CE00:  65 20 61 64 64 72 65 73 73 65 73 20 61 72 6F 75    e addresses arou
00CE10:  6E 64 0D 0A 20 20 20 77 68 65 6E 20 69 6E 73 65    nd..   when inse
00CE20:  72 74 69 6E 67 20 61 20 6E 65 77 20 6E 61 6D 65    rting a new name
00CE30:  20 69 6E 20 74 68 65 20 61 72 72 61 79 2E 20 20     in the array.  
00CE40:  54 68 65 20 6C 69 6E 6B 65 64 20 6C 69 73 74 20    The linked list 
00CE50:  6D 65 74 68 6F 64 20 6D 65 61 6E 73 20 74 68 61    method means tha
00CE60:  74 0D 0A 20 20 20 74 68 69 73 20 61 73 73 6F 63    t..   this assoc
00CE70:  69 61 74 65 64 20 64 61 74 61 20 63 61 6E 20 73    iated data can s
00CE80:  74 61 79 20 70 75 74 2E 20 20 20 54 68 65 20 20    tay put.   The  
00CE90:  69 6E 66 6F 72 6D 61 74 69 6F 6E 20 20 6F 6E 20    information  on 
00CEA0:  74 68 65 20 6F 72 64 65 72 20 6F 66 20 74 68 65    the order of the
00CEB0:  0D 0A 20 20 20 65 6C 65 6D 65 6E 74 73 20 68 61    ..   elements ha
00CEC0:  73 20 62 65 65 6E 20 74 72 61 6E 73 66 65 72 72    s been transferr
00CED0:  65 64 20 66 72 6F 6D 20 74 68 65 20 61 72 72 61    ed from the arra
00CEE0:  79 20 74 6F 20 74 68 65 20 6C 69 6E 6B 65 64 20    y to the linked 
00CEF0:  6C 69 73 74 2E 0D 0A 0D 0A 20 20 20 55 73 69 6E    list.....   Usin
00CF00:  67 20 6C 69 6E 6B 65 64 20 6C 69 73 74 73 20 74    g linked lists t
00CF10:  6F 20 6B 65 65 70 20 74 68 69 6E 67 73 20 20 69    o keep things  i
00CF20:  6E 20 20 6F 72 64 65 72 20 20 6D 65 61 6E 73 20    n  order  means 
00CF30:  20 79 6F 75 20 63 61 6E 20 73 74 6F 72 65 20 64     you can store d
00CF40:  61 74 61 20 69 6E 0D 0A 20 20 20 73 65 76 65 72    ata in..   sever
00CF50:  61 6C 20 64 69 66 66 65 72 65 6E 74 20 20 6F 72    al different  or
00CF60:  64 65 72 73 20 20 61 74 20 20 6F 6E 63 65 2E 20    ders  at  once. 
00CF70:  20 20 49 66 20 20 79 6F 75 20 20 69 6E 74 72 6F      If  you  intro
00CF80:  64 75 63 65 20 20 61 6E 6F 74 68 65 72 20 20 61    duce  another  a
00CF90:  72 72 61 79 2C 0D 0A 20 20 20 22 6E 65 78 74 62    rray,..   "nextb
00CFA0:  69 72 74 68 64 61 79 22 20 66 6F 72 20 65 78 61    irthday" for exa
00CFB0:  6D 70 6C 65 2C 20 74 68 65 6E 20 74 68 61 74 20    mple, then that 
00CFC0:  20 63 6F 75 6C 64 20 20 62 65 20 20 75 73 65 64     could  be  used
00CFD0:  20 20 74 6F 20 72 75 6E 20 74 68 72 6F 75 67 68      to run through
00CFE0:  20 74 68 65 0D 0A 20 20 20 6E 61 6D 65 73 20 6F     the..   names o
00CFF0:  66 20 20 74 68 65 20 20 70 65 6F 70 6C 65 20 20    f  the  people  
00D000:  65 78 74 61 64 64 72 65 73 73 20 20 77 65 20 20    extaddress  we  
00D010:  68 61 76 65 20 20 6C 6F 6F 6B 65 64 20 61 74 20    have  looked at 
00D020:  61 72 65 20 74 68 6F 73 65 20 66 6F 72 20 74 68    are those for th
00D030:  65 0D 0A 20 20 20 61 64 64 72 65 73 73 65 73 20    e..   addresses 
00D040:  6F 6E 20 4A 69 6D 27 73 20 72 6F 75 6E 64 2C 20    on Jim's round, 
00D050:  77 68 69 63 68 20 6D 65 61 6E 73 20 74 68 65 20    which means the 
00D060:  20 6F 74 68 65 72 20 65 6C 65 6D 65 6E 74 73 20     other elements 
00D070:  6F 66 20 74 68 65 20 61 72 72 61 79 20 63 61 6E    of the array can
00D080:  0D 0A 20 20 20 62 65 20 75 73 65 64 20 74 6F 20    ..   be used to 
00D090:  73 74 6F 72 65 20 74 68 65 20 6C 69 6E 6B 65 64    store the linked
00D0A0:  20 6C 69 73 74 73 20 66 6F 72 20 20 74 68 65 20     lists for  the 
00D0B0:  6F 74 68 65 72 20 70 61 70 65 72 20 62 6F 79 73    other paper boys
00D0C0:  2E 20 20 53 69 6E 63 65 20 6E 6F 20 74 77 6F 0D    .  Since no two.
00D0D0:  0A 20 20 20 6F 66 20 74 68 65 6D 20 64 65 6C 69    .   of them deli
00D0E0:  76 65 72 20 74 6F 20 74 68 65 20 73 61 6D 65 20    ver to the same 
00D0F0:  61 64 64 72 65 73 73 2C 20 20 74 68 65 72 65 20    address,  there 
00D100:  69 73 20 6E 6F 20 70 72 6F 62 6C 65 6D 2E 20 20    is no problem.  
00D110:  46 6F 72 20 65 61 63 68 20 70 61 70 65 72 0D 0A    For each paper..
00D120:  20 20 20 62 6F 79 20 70 61 70 65 72 62 6F 79 24       boy paperboy$
00D130:  28 6E 29 2C 20 70 61 70 65 72 72 6F 75 6E 64 28    (n), paperround(
00D140:  6E 29 20 70 6F 69 6E 74 73 20 74 6F 20 74 68 65    n) points to the
00D150:  20 20 61 64 64 72 65 73 73 20 61 74 20 74 68 65      address at the
00D160:  20 73 74 61 72 74 20 6F 66 20 74 68 65 0D 0A 20     start of the.. 
00D170:  20 20 72 6F 75 6E 64 2E 0D 0A 0D 0A 20 20 20 4D      round.....   M
00D180:  72 20 42 6C 61 63 6B 20 61 6C 73 6F 20 68 61 73    r Black also has
00D190:  20 61 6E 6F 74 68 65 72 20 6C 69 6E 6B 65 64 20     another linked 
00D1A0:  6C 69 73 74 2C 20 6E 65 78 74 6E 61 6D 65 2C 20    list, nextname, 
00D1B0:  61 6E 64 20 68 65 20 75 73 65 73 20 74 68 69 73    and he uses this
00D1C0:  20 74 6F 20 70 72 69 6E 74 0D 0A 20 20 20 75 70     to print..   up
00D1D0:  20 74 68 65 20 6E 61 6D 65 73 20 6F 66 20 68 69     the names of hi
00D1E0:  73 20 63 75 73 74 6F 6D 65 72 73 20 69 6E 20 6F    s customers in o
00D1F0:  72 64 65 72 2E 20 20 20 48 65 20 61 6C 73 6F 20    rder.   He also 
00D200:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00D210:  0B 00 01 00 02 09 4E E5 0B 00 C5 02 00 00 00 02    ......N.........
00D220:  0B 00 C1 02 00 00 00 02 0B 00 C6 02 00 00 00 02    ................
00D230:  0B 00 C2 02 00 00 00 02 0B 00 C7 02 00 00 00 02    ................
00D240:  0B 00 C3 02 00 00 00 02 0B 00 C8 02 00 00 00 02    ................
00D250:  0B 00 C4 02 00 00 00 02 0B 00 C9 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:  65 20 20 69 6E 20 20 74 77 6F 20 76 61 72 69 65    e  in  two varie
00D310:  74 69 65 73 2C 20 73 79 73 74 65 6D 20 63 6F 6D    ties, system com
00D320:  6D 6F 6E 20 6D 65 73 73 61 67 65 73 2C 0D 0A 20    mon messages,.. 
00D330:  20 20 66 72 6F 6D 20 26 46 30 20 74 6F 20 26 46      from &F0 to &F
00D340:  37 2C 20 61 6E 64 20 73 79 73 74 65 6D 20 72 65    7, and system re
00D350:  61 6C 2D 74 69 6D 65 20 20 6D 65 73 73 61 67 65    al-time  message
00D360:  73 2C 20 26 46 38 20 74 6F 20 26 46 46 2E 20 20    s, &F8 to &FF.  
00D370:  53 79 73 74 65 6D 20 72 65 61 6C 2D 0D 0A 20 20    System real-..  
00D380:  20 74 69 6D 65 20 6D 65 73 73 61 67 65 73 20 68     time messages h
00D390:  61 76 65 20 74 68 65 20 20 75 6E 69 71 75 65 20    ave the  unique 
00D3A0:  20 70 72 6F 70 65 72 74 79 20 20 74 68 61 74 20     property  that 
00D3B0:  20 74 68 65 79 20 20 63 61 6E 20 20 62 65 20 20     they  can  be  
00D3C0:  73 65 6E 74 20 61 74 20 61 6E 79 0D 0A 20 20 20    sent at any..   
00D3D0:  6D 6F 6D 65 6E 74 2C 20 65 76 65 6E 20 69 6E 20    moment, even in 
00D3E0:  74 68 65 20 6D 69 64 64 6C 65 20 6F 66 20 61 6E    the middle of an
00D3F0:  6F 74 68 65 72 20 6D 65 73 73 61 67 65 2E 0D 0A    other message...
00D400:  0D 0A 20 20 20 54 68 65 20 6D 6F 73 74 20 63 6F    ..   The most co
00D410:  6D 6D 6F 6E 20 6F 66 20 74 68 65 73 65 20 20 6D    mmon of these  m
00D420:  65 73 73 61 67 65 73 20 20 69 73 20 20 74 68 65    essages  is  the
00D430:  20 20 74 69 6D 69 6E 67 20 63 6C 6F 63 6B 2C 20      timing clock, 
00D440:  63 6F 64 65 20 26 46 38 2E 20 20 54 68 69 73 0D    code &F8.  This.
00D450:  0A 20 20 20 73 69 67 6E 61 6C 20 69 73 20 73 65    .   signal is se
00D460:  6E 74 20 6F 75 74 20 32 34 20 74 69 6D 65 73 20    nt out 24 times 
00D470:  69 6E 20 65 76 65 72 79 20 63 72 6F 74 63 68 65    in every crotche
00D480:  74 20 74 6F 20 6B 65 65 70 20 61 6C 6C 20 74 68    t to keep all th
00D490:  65 20 65 71 75 69 70 6D 65 6E 74 20 69 6E 0D 0A    e equipment in..
00D4A0:  20 20 20 73 79 6E 63 68 2E 20 20 20 57 68 65 6E       synch.   When
00D4B0:  20 20 74 68 65 20 20 6D 75 73 69 63 20 20 73 6C      the  music  sl
00D4C0:  6F 77 73 20 20 64 6F 77 6E 20 20 74 68 65 20 20    ows  down  the  
00D4D0:  63 6C 6F 63 6B 20 20 73 69 67 6E 61 6C 20 20 69    clock  signal  i
00D4E0:  73 20 20 73 65 6E 74 20 20 6C 65 73 73 0D 0A 20    s  sent  less.. 
00D4F0:  20 20 66 72 65 71 75 65 6E 74 6C 79 2E 20 20 54      frequently.  T
00D500:  74 68 65 20 20 4D 49 44 49 20 73 74 61 74 75 73    the  MIDI status
00D510:  20 63 6F 64 65 73 20 79 6F 75 20 61 72 65 20 6C     codes you are l
00D520:  69 6B 65 6C 79 20 74 6F 0D 0A 20 20 20 6D 65 65    ikely to..   mee
00D530:  74 2E 20 20 54 68 65 72 65 20 61 72 65 20 61 20    t.  There are a 
00D540:  66 65 77 20 6D 6F 72 65 20 20 74 68 61 74 20 20    few more  that  
00D550:  61 72 65 20 20 77 6F 72 74 68 20 6B 6E 6F 77 69    are  worth knowi
00D560:  6E 67 20 61 62 6F 75 74 2E 20 20 53 6F 6D 65 20    ng about.  Some 
00D570:  79 6F 75 20 6D 61 79 0D 0A 20 20 20 77 61 6E 74    you may..   want
00D580:  20 74 6F 20 73 65 6E 64 20 74 6F 20 61 20 6B 65     to send to a ke
00D590:  79 62 6F 61 72 64 20 20 66 6F 72 20 20 73 70 65    yboard  for  spe
00D5A0:  63 69 61 6C 20 20 65 66 66 65 63 74 73 2E 20 20    cial  effects.  
00D5B0:  4F 74 68 65 72 20 6D 65 73 73 61 67 65 73 20 79    Other messages y
00D5C0:  6F 75 20 6D 61 79 0D 0A 20 20 20 6D 65 65 74 20    ou may..   meet 
00D5D0:  77 68 65 6E 20 72 65 63 65 69 76 69 6E 67 20 64    when receiving d
00D5E0:  61 74 61 20 66 72 6F 6D 20 61 20 20 6B 65 79 62    ata from a  keyb
00D5F0:  6F 61 72 64 2C 20 20 69 6E 20 20 77 68 69 63 68    oard,  in  which
00D600:  20 63 61 73 65 20 69 74 20 69 73 20 75 73 65 66     case it is usef
00D610:  75 6C 20 74 6F 0D 0A 20 20 20 6B 6E 6F 77 20 77    ul to..   know w
00D620:  68 61 74 20 69 74 20 69 73 20 73 61 66 65 20 74    hat it is safe t
00D630:  6F 20 69 67 6E 6F 72 65 2E 0D 0A 0D 0A 20 20 20    o ignore.....   
00D640:  46 69 72 73 74 20 77 65 20 68 61 76 65 20 43 6F    First we have Co
00D650:  6E 74 72 6F 6C 20 43 68 61 6E 67 65 2C 20 77 69    ntrol Change, wi
00D660:  74 68 20 73 74 61 74 75 73 20 63 6F 64 65 20 26    th status code &
00D670:  42 78 2C 20 77 68 65 72 65 20 78 20 69 73 20 74    Bx, where x is t
00D680:  68 65 20 63 68 61 6E 6E 65 6C 0D 0A 20 20 20 28    he channel..   (
00D690:  30 20 74 6F 20 46 20 66 6F 72 20 63 68 61 6E 6E    0 to F for chann
00D6A0:  65 6C 73 20 31 20 74 6F 20 20 31 36 29 2E 20 20    els 1 to  16).  
00D6B0:  20 54 68 69 73 20 20 61 6C 6C 6F 77 73 20 20 79     This  allows  y
00D6C0:  6F 75 20 74 6F 20 63 68 61 6E 67 65 20 61 6C 6C    ou to change all
00D6D0:  20 73 6F 72 74 73 20 6F 66 0D 0A 20 20 20 74 68     sorts of..   th
00D6E0:  69 6E 67 73 2E 20 20 49 74 20 69 73 20 66 6F 6C    ings.  It is fol
00D6F0:  6C 6F 77 65 64 20 62 79 20 74 77 6F 20 62 79 74    lowed by two byt
00D700:  68 65 20 72 65 61 73 6F 6E 20 69 74 20 69 73 20    he reason it is 
00D710:  20 73 65 6E 74 20 20 32 34 20 20 74 69 6D 65 73     sent  24  times
00D720:  20 20 69 6E 20 20 61 20 20 63 72 6F 74 63 68 65      in  a  crotche
00D730:  74 20 69 73 20 74 6F 20 6D 61 6B 65 0D 0A 20 20    t is to make..  
00D740:  20 74 69 6D 69 6E 67 20 74 72 69 70 6C 65 74 73     timing triplets
00D750:  20 70 6F 73 73 69 62 6C 65 2E 0D 0A 0D 0A 20 20     possible.....  
00D760:  20 41 6E 6F 74 68 65 72 20 69 6D 70 6F 72 74 61     Another importa
00D770:  6E 74 20 73 79 73 74 65 6D 20 6D 65 73 73 61 67    nt system messag
00D780:  65 20 69 73 20 74 68 65 20 73 79 73 74 65 6D 20    e is the system 
00D790:  65 78 63 6C 75 73 69 76 65 20 6D 65 73 73 61 67    exclusive messag
00D7A0:  65 2E 20 20 54 68 69 73 20 69 73 0D 0A 20 20 20    e.  This is..   
00D7B0:  75 73 65 64 20 74 6F 20 73 65 6E 64 20 73 70 65    used to send spe
00D7C0:  63 69 61 6C 20 64 61 74 61 20 73 70 65 63 69 66    cial data specif
00D7D0:  69 63 20 74 6F 20 20 61 20 70 61 72 74 69 63 75    ic to  a particu
00D7E0:  6C 61 72 20 74 79 70 65 20 6F 66 20 6B 65 79 62    lar type of keyb
00D7F0:  6F 61 72 64 2E 20 20 54 68 65 0D 0A 20 20 20 6D    oard.  The..   m
00D800:  65 73 73 61 67 65 20 73 74 61 72 74 73 20 77 69    essage starts wi
00D810:  74 68 20 26 46 30 20 61 6E 64 20 69 73 20 66 6F    th &F0 and is fo
00D820:  6C 6C 6F 77 65 64 20 20 62 79 20 64 61 74 61 20    llowed  by data 
00D830:  62 79 74 65 73 2C 20 74 68 65 20 66 69 72 73 74    bytes, the first
00D840:  20 6F 66 20 77 68 69 63 68 0D 0A 20 20 20 69 6E     of which..   in
00D850:  64 69 63 61 74 65 73 20 74 68 65 20 6D 61 6E 75    dicates the manu
00D860:  66 61 63 74 75 72 65 72 20 6F 66 20 74 68 65 20    facturer of the 
00D870:  6B 65 79 62 6F 61 72 64 20 20 28 65 2E 67 2E 20    keyboard  (e.g. 
00D880:  36 35 20 66 6F 72 20 52 6F 6C 61 6E 64 29 2E 20    65 for Roland). 
00D890:  20 54 68 65 20 65 6E 64 0D 0A 20 20 20 6F 66 20     The end..   of 
00D8A0:  74 68 65 20 64 61 74 61 20 62 79 74 65 73 20 69    the data bytes i
00D8B0:  73 20 6D 61 72 6B 65 64 20 20 62 79 20 20 26 46    s marked  by  &F
00D8C0:  37 2E 20 20 20 53 79 73 74 65 6D 20 65 78 63 6C    7.   System excl
00D8D0:  75 73 69 76 65 20 6D 65 73 73 61 67 65 73 20 61    usive messages a
00D8E0:  72 65 20 75 73 65 64 0D 0A 20 20 20 66 6F 72 20    re used..   for 
00D8F0:  61 6C 6C 20 73 6F 72 74 73 20 6F 66 20 70 75 72    all sorts of pur
00D900:  65 73 2C 20 74 68 65 20 20 66 69 72 73 74 20 6F    es, the  first o
00D910:  66 20 77 68 69 63 68 20 69 73 20 74 68 65 20 6E    f which is the n
00D920:  75 6D 62 65 72 20 6F 66 0D 0A 20 20 20 74 68 65    umber of..   the
00D930:  20 63 6F 6E 74 72 6F 6C 20 74 6F 20 63 68 61 6E     control to chan
00D940:  67 65 2C 20 61 6E 64 20 74 68 65 20 73 65 63 6F    ge, and the seco
00D950:  6E 64 20 20 69 73 20 20 74 68 65 20 6E 65 77 20    nd  is  the new 
00D960:  76 61 6C 75 65 20 66 6F 72 20 74 68 61 74 20 63    value for that c
00D970:  6F 6E 74 72 6F 6C 2E 0D 0A 20 20 20 46 6F 72 20    ontrol...   For 
00D980:  65 78 61 6D 70 6C 65 2C 20 74 6F 20 74 75 72 6E    example, to turn
00D990:  20 74 68 65 20 73 75 73 74 61 69 6E 69 6E 67 20     the sustaining 
00D9A0:  70 65 64 61 6C 20 6F 6E 20 66 6F 72 20 63 68 61    pedal on for cha
00D9B0:  6E 6E 65 6C 20 31 20 79 6F 75 20 6D 69 67 68 74    nnel 1 you might
00D9C0:  20 64 6F 3A 0D 0A 0D 0A 20 20 20 20 20 7C 53 45     do:....     |SE
00D9D0:  4E 44 2C 26 42 30 2C 36 34 2C 31 32 37 0D 0A 0D    ND,&B0,64,127...
00D9E0:  0A 20 20 20 61 6E 64 20 7C 53 45 4E 44 2C 26 42    .   and |SEND,&B
00D9F0:  30 2C 36 34 2C 30 20 77 6F 75 6C 64 20 74 75 72    0,64,0 would tur
00DA00:  6E 20 69 74 20 6F 66 66 20 61 67 61 69 6E 2E 20    n it off again. 
00DA10:  20 54 68 65 20 73 75 73 74 61 69 6E 69 6E 67 20     The sustaining 
00DA20:  70 65 64 61 6C 20 69 73 20 6F 66 74 65 6E 0D 0A    pedal is often..
00DA30:  20 20 20 63 6F 6E 74 72 6F 6C 20 6E 6F 2E 20 36       control no. 6
00DA40:  34 2E 20 20 54 68 65 72 65 20 61 72 65 20 6C 6F    4.  There are lo
00DA50:  74 73 20 6F 66 20 20 6F 74 68 65 72 20 20 63 6F    ts of  other  co
00DA60:  6E 74 72 6F 6C 20 6E 75 6D 62 65 72 73 2C 20 62    ntrol numbers, b
00DA70:  75 74 20 6E 6F 74 20 61 6C 6C 20 6F 66 0D 0A 20    ut not all of.. 
00DA80:  20 20 74 68 65 6D 20 61 72 65 20 61 70 70 6C 69      them are appli
00DA90:  65 64 20 69 6E 20 61 20 73 74 61 6E 64 61 72 64    ed in a standard
00DAA0:  20 77 61 79 20 66 72 6F 6D 20 6F 6E 65 20 6B 65     way from one ke
00DAB0:  79 62 6F 61 72 64 20 74 6F 20 61 6E 6F 74 68 65    yboard to anothe
00DAC0:  72 2E 0D 0A 0D 0A 20 20 20 50 72 6F 62 61 62 6C    r.....   Probabl
00DAD0:  79 20 74 68 65 20 6D 6F 73 74 20 75 73 65 66 75    y the most usefu
00DAE0:  6C 20 63 6F 6E 74 72 6F 6C 20 20 69 73 20 20 42    l control  is  B
00DAF0:  61 6E 6B 20 20 53 65 6C 65 63 74 2C 20 77 68 69    ank  Select, whi
00DB00:  70 6F 73 65 73 2C 20 62 75 74 20 20 6D 6F 73 74    poses, but  most
00DB10:  20 20 66 72 65 71 75 65 6E 74 6C 79 20 20 66 6F      frequently  fo
00DB20:  72 20 73 61 76 69 6E 67 20 64 61 74 61 20 66 72    r saving data fr
00DB30:  6F 6D 20 74 68 65 0D 0A 20 20 20 6D 65 6D 6F 72    om the..   memor
00DB40:  79 20 6F 66 20 74 68 65 20 6B 65 79 62 6F 61 72    y of the keyboar
00DB50:  64 2E 20 20 4D 6F 73 74 20 6B 65 79 62 6F 61 72    d.  Most keyboar
00DB60:  64 73 20 20 63 61 6E 20 20 74 72 61 6E 73 6D 69    ds  can  transmi
00DB70:  74 20 74 68 65 69 72 20 64 72 75 6D 2C 20 74 75    t their drum, tu
00DB80:  6E 65 20 6F 72 0D 0A 20 20 20 73 61 6D 70 6C 65    ne or..   sample
00DB90:  20 6D 65 6D 6F 72 79 20 61 73 20 61 20 73 79 73     memory as a sys
00DBA0:  74 65 6D 20 65 78 63 6C 75 73 69 76 65 20 20 6D    tem exclusive  m
00DBB0:  65 73 73 61 67 65 2C 20 20 77 68 69 63 68 20 63    essage,  which c
00DBC0:  61 6E 20 74 68 65 6E 20 62 65 20 70 69 63 6B 65    an then be picke
00DBD0:  64 20 75 70 0D 0A 20 20 20 62 79 20 74 68 65 20    d up..   by the 
00DBE0:  63 6F 6D 70 75 74 65 72 20 61 6E 64 20 73 61 76    computer and sav
00DBF0:  65 64 20 74 6F 20 64 69 73 63 2E 0D 0A 0D 0A 20    ed to disc..... 
00DC00:  20 20 50 4C 41 59 49 4E 47 20 41 20 54 55 4E 45      PLAYING A TUNE
00DC10:  0D 0A 20 20 20 57 65 6C 6C 2C 20 49 20 70 72 6F    ..   Well, I pro
00DC20:  6D 69 73 65 64 20 61 20 70 72 6F 67 72 61 6D 20    mised a program 
00DC30:  20 74 6F 20 20 70 6C 61 79 20 20 61 20 20 74 75     to  play  a  tu
00DC40:  6E 65 2C 20 20 61 6E 64 20 20 68 65 72 65 20 20    ne,  and  here  
00DC50:  69 74 20 69 73 2E 20 20 54 79 70 65 20 69 6E 0D    it is.  Type in.
00DC60:  0A 20 20 20 4C 69 73 74 69 6E 67 20 31 2C 20 77    .   Listing 1, w
00DC70:  69 74 68 20 6C 69 6E 65 20 33 30 30 20 61 64 6A    ith line 300 adj
00DC80:  75 73 74 65 64 20 20 74 6F 20 20 74 68 65 20 6E    usted  to  the n
00DC90:  75 6D 62 65 72 20 61 70 70 72 6F 70 72 69 61 74    umber appropriat
00DCA0:  65 20 74 6F 20 79 6F 75 72 20 4D 49 44 49 0D 0A    e to your MIDI..
00DCB0:  20 20 20 69 6E 74 65 72 66 61 63 65 2E 20 20 59       interface.  Y
00DCC0:  6F 75 20 77 69 6C 6C 20 6E 65 65 64 20 74 6F 20    ou will need to 
00DCD0:  72 75 6E 20 4C 69 73 74 69 6E 67 20 31 20 66 72    run Listing 1 fr
00DCE0:  6F 6D 20 6C 61 73 74 20 6D 6F 6E 74 68 27 73 20    om last month's 
00DCF0:  61 72 74 69 63 6C 65 20 66 69 72 73 74 0D 0A 20    article first.. 
00DD00:  63 68 20 69 73 20 63 6F 6E 74 72 6F 6C 20 7A 65    ch is control ze
00DD10:  72 6F 2E 0D 0A 20 20 20 54 68 69 73 20 61 6C 6C    ro...   This all
00DD20:  6F 77 73 20 79 6F 75 20 74 6F 20 20 63 68 6F 6F    ows you to  choo
00DD30:  73 65 20 20 61 20 20 62 61 6E 6B 20 20 6F 66 20    se  a  bank  of 
00DD40:  20 69 6E 73 74 72 75 6D 65 6E 74 73 2E 20 20 20     instruments.   
00DD50:  52 65 6D 65 6D 62 65 72 20 74 68 61 74 20 26 43    Remember that &C
00DD60:  78 2C 0D 0A 20 20 20 50 72 6F 67 72 61 6D 6D 65    x,..   Programme
00DD70:  20 43 68 61 6E 67 65 2C 20 61 6C 6C 6F 77 73 20     Change, allows 
00DD80:  75 73 20 74 6F 20 63 68 6F 6F 73 65 20 61 6E 20    us to choose an 
00DD90:  69 6E 73 74 72 75 6D 65 6E 74 20 66 6F 72 20 74    instrument for t
00DDA0:  68 65 20 63 68 61 6E 6E 65 6C 20 6F 75 74 20 6F    he channel out o
00DDB0:  66 0D 0A 20 20 20 31 32 38 20 20 64 69 66 66 65    f..   128  diffe
00DDC0:  72 65 6E 74 20 20 69 6E 73 74 72 75 6D 65 6E 74    rent  instrument
00DDD0:  73 2E 20 20 20 49 66 20 20 79 6F 75 72 20 20 20    s.   If  your   
00DDE0:  6B 65 79 62 6F 61 72 64 20 20 68 61 73 20 20 6D    keyboard  has  m
00DDF0:  6F 72 65 20 20 69 6E 73 74 72 75 6D 65 6E 74 73    ore  instruments
00DE00:  0D 0A 20 20 20 61 76 61 69 6C 61 62 6C 65 2C 20    ..   available, 
00DE10:  42 61 6E 6B 20 53 65 6C 65 63 74 20 69 73 20 75    Bank Select is u
00DE20:  73 65 64 20 74 6F 20 73 77 61 70 20 20 69 6E 20    sed to swap  in 
00DE30:  61 20 64 69 66 66 65 72 65 6E 74 20 73 65 74 2E    a different set.
00DE40:  20 20 41 63 74 75 61 6C 6C 79 20 42 61 6E 6B 0D      Actually Bank.
00DE50:  0A 20 20 20 53 65 6C 65 63 74 20 6F 63 63 75 70    .   Select occup
00DE60:  69 65 73 20 63 6F 6E 74 72 6F 6C 73 20 30 20 61    ies controls 0 a
00DE70:  6E 64 20 20 33 32 2C 20 20 61 6E 64 20 20 74 68    nd  32,  and  th
00DE80:  65 20 20 74 77 6F 20 20 76 61 6C 75 65 73 20 61    e  two  values a
00DE90:  72 65 20 63 6F 6D 62 69 6E 65 64 20 74 6F 0D 0A    re combined to..
00DEA0:  20 20 20 61 6C 6C 6F 77 20 79 6F 75 20 74 6F 20       allow you to 
00DEB0:  63 68 6F 6F 73 65 20 66 72 6F 6D 20 31 36 33 38    choose from 1638
00DEC0:  34 20 62 61 6E 6B 73 20 6F 66 20 73 6F 75 6E 64    4 banks of sound
00DED0:  73 2C 20 65 61 63 68 20 77 69 74 68 20 31 32 38    s, each with 128
00DEE0:  20 69 6E 73 74 72 75 6D 65 6E 74 73 21 0D 0A 20     instruments!.. 
00DEF0:  20 20 49 66 20 6D 20 69 73 20 74 68 65 20 62 61      If m is the ba
00DF00:  20 20 74 6F 20 69 6E 73 74 61 6C 6C 20 74 68 65      to install the
00DF10:  20 52 53 58 20 63 6F 6D 6D 61 6E 64 73 2C 20 6F     RSX commands, o
00DF20:  72 20 79 6F 75 20 20 63 61 6E 20 20 74 79 70 65    r you  can  type
00DF30:  20 74 68 69 73 20 6D 6F 6E 74 68 27 73 20 6C 69     this month's li
00DF40:  73 74 69 6E 67 20 6F 6E 20 74 68 65 0D 0A 20 20    sting on the..  
00DF50:  20 65 6E 64 20 6F 66 20 6C 61 73 74 20 6D 6F 6E     end of last mon
00DF60:  74 68 27 73 20 61 6E 64 20 72 75 6E 20 74 68 65    th's and run the
00DF70:  6D 20 62 6F 74 68 20 20 74 6F 67 65 74 68 65 72    m both  together
00DF80:  2E 20 20 49 66 20 79 6F 75 20 63 68 6F 6F 73 65    .  If you choose
00DF90:  20 74 6F 20 64 6F 20 74 68 61 74 0D 0A 20 20 20     to do that..   
00DFA0:  74 68 65 6E 20 61 64 64 20 61 6E 20 65 78 74 72    then add an extr
00DFB0:  61 20 6C 69 6E 65 3A 0D 0A 0D 0A 20 20 20 20 20    a line:....     
00DFC0:  35 20 49 46 20 50 45 45 4B 28 26 39 44 30 30 29    5 IF PEEK(&9D00)
00DFD0:  3D 31 20 54 48 45 4E 20 33 30 30 0D 0A 0D 0A 20    =1 THEN 300.... 
00DFE0:  20 20 54 68 69 73 20 77 69 6C 6C 20 73 61 76 65      This will save
00DFF0:  20 74 68 65 20 20 52 53 58 73 20 20 62 65 69 6E     the  RSXs  bein
00E000:  67 20 20 69 6E 73 74 61 6C 6C 65 64 20 20 61 67    g  installed  ag
00E010:  61 69 6E 20 20 69 66 20 20 79 6F 75 20 72 75 6E    ain  if  you run
00E020:  20 74 68 65 20 70 72 6F 67 72 61 6D 0D 0A 20 20     the program..  
00E030:  20 73 65 76 65 72 61 6C 20 74 69 6D 65 73 2E 20     several times. 
00E040:  20 49 6E 73 74 61 6C 6C 69 6E 67 20 52 53 58 73     Installing RSXs
00E050:  20 74 77 69 63 65 20 77 69 74 68 6F 75 74 20 72     twice without r
00E060:  65 73 65 74 74 69 6E 67 20 74 68 65 20 6D 61 63    esetting the mac
00E070:  68 69 6E 65 20 63 61 75 73 65 73 0D 0A 20 20 20    hine causes..   
00E080:  70 72 6F 62 6C 65 6D 73 2E 20 20 3C 3C 54 68 69    problems.  <<Thi
00E090:  73 20 63 6F 6D 62 69 6E 65 64 20 6C 69 73 74 69    s combined listi
00E0A0:  6E 67 20 69 73 20 73 61 76 65 64 20 61 73 20 54    ng is saved as T
00E0B0:  55 4E 45 2E 42 41 53 20 6F 6E 20 74 68 65 20 64    UNE.BAS on the d
00E0C0:  69 73 63 2E 3E 3E 0D 0A 0D 0A 20 20 20 57 68 65    isc.>>....   Whe
00E0D0:  6E 20 79 6F 75 20 72 75 6E 20 74 68 65 20 70 72    n you run the pr
00E0E0:  6F 67 72 61 6D 20 79 6F 75 20 20 73 68 6F 75 6C    ogram you  shoul
00E0F0:  64 20 20 67 65 74 20 20 74 68 65 20 20 66 69 72    d  get  the  fir
00E100:  6E 6B 20 6E 75 6D 62 65 72 2C 20 74 68 65 6E 20    nk number, then 
00E110:  79 6F 75 20 73 65 6C 65 63 74 20 69 74 20 62 79    you select it by
00E120:  20 73 65 6E 64 69 6E 67 3A 0D 0A 0D 0A 20 20 20     sending:....   
00E130:  20 20 7C 53 45 4E 44 2C 26 42 78 2C 30 2C 61 2C      |SEND,&Bx,0,a,
00E140:  26 42 78 2C 33 32 2C 62 0D 0A 0D 0A 20 20 20 77    &Bx,32,b....   w
00E150:  68 65 72 65 0D 0A 0D 0A 20 20 20 20 20 61 3D 6D    here....     a=m
00E160:  5C 31 32 38 0D 0A 20 20 20 20 20 62 3D 6D 20 4D    \128..     b=m M
00E170:  4F 44 20 31 32 38 0D 0A 0D 0A 20 20 20 61 6E 64    OD 128....   and
00E180:  20 78 20 69 73 20 30 20 74 6F 20 46 20 20 66 6F     x is 0 to F  fo
00E190:  72 20 20 74 68 65 20 20 63 68 61 6E 6E 65 6C 20    r  the  channel 
00E1A0:  20 6E 75 6D 62 65 72 2E 20 20 20 52 75 6E 6E 69     number.   Runni
00E1B0:  6E 67 20 73 74 61 74 75 73 20 6D 61 79 20 61 6C    ng status may al
00E1C0:  6C 6F 77 20 74 68 65 0D 0A 20 20 20 73 65 63 6F    low the..   seco
00E1D0:  6E 64 20 26 42 78 20 62 79 74 65 20 74 6F 20 62    nd &Bx byte to b
00E1E0:  65 20 6D 69 73 73 65 64 20 6F 75 74 2C 20 62 75    e missed out, bu
00E1F0:  74 20 20 49 20 20 61 6D 20 6E 6F 74 20 73 75 72    t  I  am not sur
00E200:  65 20 61 62 6F 75 74 20 74 68 61 74 2E 20 20 49    e about that.  I
00E210:  20 64 6F 75 62 74 0D 0A 20 20 20 74 68 65 72 65     doubt..   there
00E220:  20 69 73 20 61 6E 79 20 6B 65 79 62 6F 61 72 64     is any keyboard
00E230:  20 61 76 61 69 6C 61 62 6C 65 20 77 69 74 68 20     available with 
00E240:  6F 76 65 72 20 32 20 6D 69 6C 6C 69 6F 6E 20 69    over 2 million i
00E250:  6E 73 74 72 75 6D 65 6E 74 20 73 6F 75 6E 64 73    nstrument sounds
00E260:  2C 20 62 75 74 0D 0A 20 20 20 74 68 65 72 65 20    , but..   there 
00E270:  77 65 20 61 72 65 2E 2E 2E 0D 0A 0D 0A 20 20 20    we are.......   
00E280:  53 59 53 54 45 4D 20 4D 45 53 53 41 47 45 53 0D    SYSTEM MESSAGES.
00E290:  0A 20 20 20 54 68 65 20 6F 74 68 65 72 20 62 69    .   The other bi
00E2A0:  67 20 73 65 74 20 6F 66 20 20 6D 65 73 73 61 67    g set of  messag
00E2B0:  65 73 20 20 61 72 65 20 20 74 68 65 20 73 79 73    es  are  the sys
00E2C0:  74 65 6D 20 6D 65 73 73 61 67 65 73 2C 20 6F 63    tem messages, oc
00E2D0:  63 75 70 79 69 6E 67 20 73 74 61 74 75 73 0D 0A    cupying status..
00E2E0:  20 20 20 62 79 74 65 73 20 26 46 30 20 74 6F 20       bytes &F0 to 
00E2F0:  26 46 46 2E 20 20 54 68 65 73 65 20 20 63 6F 6D    &FF.  These  com
00E300:  73 74 20 68 61 6C 66 20 6F 66 20 61 20 77 65 6C    st half of a wel
00E310:  6C 20 6B 6E 6F 77 6E 0D 0A 20 20 20 74 75 6E 65    l known..   tune
00E320:  20 70 6C 61 79 65 64 20 6F 6E 20 79 6F 75 72 20     played on your 
00E330:  6B 65 79 62 6F 61 72 64 20 69 6E 20 62 65 61 75    keyboard in beau
00E340:  74 69 66 75 6C 20 74 68 72 65 65 20 70 61 72 74    tiful three part
00E350:  20 68 61 72 6D 6F 6E 79 2E 0D 0A 0D 0A 20 20 20     harmony.....   
00E360:  54 68 65 20 70 72 6F 67 72 61 6D 20 69 74 73 65    The program itse
00E370:  6C 66 20 69 73 20 71 75 69 74 65 20 73 69 6D 70    lf is quite simp
00E380:  6C 65 2E 20 20 20 4C 69 6E 65 20 20 33 32 30 20    le.   Line  320 
00E390:  73 65 74 73 20 75 70 20 61 6E 20 69 6E 74 65 72    sets up an inter
00E3A0:  72 75 70 74 20 77 68 69 63 68 0D 0A 20 20 20 69    rupt which..   i
00E3B0:  73 20 63 61 6C 6C 65 64 20 65 76 65 72 79 20 31    s called every 1
00E3C0:  32 2F 35 30 74 68 73 20 6F 66 20 20 61 20 20 73    2/50ths of  a  s
00E3D0:  65 63 6F 6E 64 2E 20 20 20 41 6C 74 65 72 20 20    econd.   Alter  
00E3E0:  74 68 65 20 20 6E 75 6D 62 65 72 20 74 6F 20 63    the  number to c
00E3F0:  68 61 6E 67 65 20 74 68 65 0D 0A 20 20 20 73 70    hange the..   sp
00E400:  65 65 64 20 6F 66 20 74 68 65 20 6D 75 73 69 63    eed of the music
00E410:  2E 20 20 20 4C 69 6E 65 20 20 33 33 30 20 20 74    .   Line  330  t
00E420:  68 65 6E 20 20 6A 75 73 74 20 20 68 61 6E 67 73    hen  just  hangs
00E430:  20 20 61 72 6F 75 6E 64 20 77 61 69 74 69 6E 67      around waiting
00E440:  20 66 6F 72 20 74 68 65 0D 0A 20 20 20 73 69 67     for the..   sig
00E450:  6E 61 6C 20 74 68 61 74 20 74 68 65 20 6D 75 73    nal that the mus
00E460:  69 63 20 68 61 73 20 73 74 6F 70 70 65 64 2E 0D    ic has stopped..
00E470:  0A 0D 0A 20 20 20 54 68 65 20 73 75 62 72 6F 75    ...   The subrou
00E480:  74 69 6E 65 20 61 74 20 34 30 30 20 69 73 20 77    tine at 400 is w
00E490:  68 65 72 65 20 20 61 6C 6C 20 20 74 68 65 20 20    here  all  the  
00E4A0:  77 6F 72 6B 20 69 73 20 64 6F 6E 65 2E 20 20 54    work is done.  T
00E4B0:  68 65 20 70 72 6F 67 72 61 6D 20 72 65 61 64 73    he program reads
00E4C0:  0D 0A 20 20 20 74 68 65 20 64 61 74 61 20 69 6E    ..   the data in
00E4D0:  20 6C 69 6E 65 73 20 35 30 30 20 6F 6E 77 61 72     lines 500 onwar
00E4E0:  64 73 2E 20 20 41 6C 6C 20 20 6F 66 20 74 68 65    ds.  All  of the
00E4F0:  20 70 6F 73 69 74 69 76 65 20 64 61 74 61 20 6E     positive data n
00E500:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00E510:  0C 00 01 00 02 09 4E E5 0C 00 C3 02 00 00 00 02    ......N.........
00E520:  0C 00 C8 02 00 00 00 02 0C 00 C4 02 00 00 00 02    ................
00E530:  0C 00 C9 02 00 00 00 02 0C 00 C5 02 00 00 00 02    ................
00E540:  0C 00 C1 02 00 00 00 02 0C 00 C6 02 00 00 00 02    ................
00E550:  0C 00 C2 02 00 00 00 02 0C 00 C7 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:  20 20 6C 69 6E 65 73 20 6F 66 20 64 61 74 61 2E      lines of data.
00E610:  20 20 49 6E 20 6C 69 6E 65 20 35 30 30 20 77 65      In line 500 we
00E620:  20 20 74 75 72 6E 20 20 6F 6E 20 20 61 20 20 6E      turn  on  a  n
00E630:  6F 74 65 20 6F 6E 20 63 68 61 6E 6E 65 6C 20 31    ote on channel 1
00E640:  2C 20 62 79 20 73 65 6E 64 69 6E 67 0D 0A 20 20    , by sending..  
00E650:  20 26 39 30 2C 36 34 2C 35 30 2E 20 20 54 68 69     &90,64,50.  Thi
00E660:  73 20 70 6C 61 79 73 20 61 6E 20 45 20 61 74 20    s plays an E at 
00E670:  61 20 20 6D 65 64 69 75 6D 20 20 76 6F 6C 75 6D    a  medium  volum
00E680:  65 2E 20 20 54 77 6F 20 6E 6F 74 65 73 20 61 72    e.  Two notes ar
00E690:  65 20 74 75 72 6E 65 64 20 6F 6E 0D 0A 20 20 20    e turned on..   
00E6A0:  6F 6E 20 63 68 61 6E 6E 65 6C 20 32 3A 20 26 39    on channel 2: &9
00E6B0:  31 2C 35 32 2C 34 30 2C 35 35 2C 34 30 2E 20 20    1,52,40,55,40.  
00E6C0:  50 69 74 63 68 20 20 35 32 20 20 69 73 20 20 61    Pitch  52  is  a
00E6D0:  6E 20 20 45 20 20 61 6E 20 6F 63 74 61 76 65 20    n  E  an octave 
00E6E0:  6C 6F 77 65 72 20 74 68 61 6E 0D 0A 20 20 20 62    lower than..   b
00E6F0:  65 66 6F 72 65 2C 20 61 6E 64 20 35 35 20 69 73    efore, and 55 is
00E700:  20 61 20 47 2E 20 20 20 54 68 65 20 20 76 65 6C     a G.   The  vel
00E710:  6F 63 69 74 79 20 20 76 61 6C 75 65 73 20 20 6F    ocity  values  o
00E720:  66 20 20 34 30 20 6D 65 61 6E 20 74 68 65 79 20    f  40 mean they 
00E730:  73 68 6F 75 6C 64 20 62 65 0D 0A 20 20 20 73 6C    should be..   sl
00E740:  69 67 68 74 6C 79 20 71 75 69 65 74 65 72 20 74    ightly quieter t
00E750:  68 61 6E 20 74 68 65 20 6E 6F 74 65 20 6F 6E 20    han the note on 
00E760:  63 68 61 6E 6E 65 6C 20 20 31 2E 20 20 20 54 68    channel  1.   Th
00E770:  65 20 20 2D 34 20 69 73 20 61 20 73 69 67 6E 61    e  -4 is a signa
00E780:  6C 20 74 6F 20 73 61 79 0D 0A 20 20 20 22 6E 6F    l to say..   "no
00E790:  77 20 77 61 69 74 20 66 6F 75 72 20 62 65 61 74    w wait four beat
00E7A0:  73 20 62 65 66 6F 72 65 20 77 65 20 73 65 6E 64    s before we send
00E7B0:  20 61 6E 79 20 6D 6F 72 65 20 64 61 74 61 22 2E     any more data".
00E7C0:  0D 0A 0D 0A 20 20 20 54 68 65 20 6E 65 78 74 20    ....   The next 
00E7D0:  20 6C 69 6E 65 2C 20 20 35 31 30 2C 20 20 6A 75     line,  510,  ju
00E7E0:  73 74 20 20 74 75 72 6E 73 20 20 6F 66 66 20 20    st  turns  off  
00E7F0:  74 68 65 20 20 45 20 20 6F 6E 20 20 63 68 61 6E    the  E  on  chan
00E800:  66 72 6F 6D 20 20 74 68 65 20 20 4D 49 44 49 20    from  the  MIDI 
00E810:  20 69 6E 74 65 72 66 61 63 65 20 20 69 6E 20 20     interface  in  
00E820:  42 41 53 49 43 20 20 69 73 20 20 6E 6F 74 20 20    BASIC  is  not  
00E830:  72 65 61 6C 6C 79 20 76 65 72 79 0D 0A 20 20 20    really very..   
00E840:  70 72 61 63 74 69 63 61 6C 2C 20 61 73 20 4D 49    practical, as MI
00E850:  44 49 20 6F 70 65 72 61 74 65 73 20 61 74 20 20    DI operates at  
00E860:  33 31 32 35 30 20 20 62 61 75 64 2C 20 20 77 68    31250  baud,  wh
00E870:  69 63 68 20 69 73 20 66 61 73 74 2E 20 20 45 76    ich is fast.  Ev
00E880:  65 6E 20 6D 61 63 68 69 6E 65 0D 0A 20 20 20 63    en machine..   c
00E890:  6F 64 65 20 63 6F 75 6C 64 20 68 61 76 65 20 74    ode could have t
00E8A0:  72 6F 75 62 6C 65 20 6B 65 65 70 69 6E 67 20 75    rouble keeping u
00E8B0:  70 2E 20 20 54 68 65 20 20 6F 6E 6C 79 20 73 6F    p.  The  only so
00E8C0:  66 74 77 61 72 65 20 49 20 68 61 76 65 20 77 72    ftware I have wr
00E8D0:  69 74 74 65 6E 20 66 6F 72 0D 0A 20 20 20 72 65    itten for..   re
00E8E0:  63 65 69 76 69 6E 67 20 4D 49 44 49 20 64 61 74    ceiving MIDI dat
00E8F0:  61 20 75 73 65 64 20 20 72 61 74 68 65 72 20 20    a used  rather  
00E900:  73 70 65 63 69 61 6C 69 73 65 64 20 20 66 65 61    specialised  fea
00E910:  74 75 72 65 73 20 20 6F 66 20 20 74 68 65 20 52    tures  of  the R
00E920:  41 4D 20 4D 75 73 69 63 0D 0A 20 20 20 4D 61 63    AM Music..   Mac
00E930:  68 69 6E 65 2C 20 73 6F 20 73 6F 6D 65 20 70 72    hine, so some pr
00E940:  61 63 74 69 63 61 6C 20 65 78 61 6D 70 6C 65 73    actical examples
00E950:  20 20 6F 66 20 20 72 65 63 65 69 76 69 6E 67 20      of  receiving 
00E960:  20 64 61 74 61 20 77 69 6C 6C 20 68 61 76 65 20     data will have 
00E970:  74 6F 20 77 61 69 74 0D 0A 20 20 20 75 6E 74 69    to wait..   unti
00E980:  6C 20 49 20 68 61 76 65 20 68 61 64 20 74 68 65    l I have had the
00E990:  20 6F 70 70 6F 72 74 75 6E 69 74 79 20 74 6F 20     opportunity to 
00E9A0:  64 6F 20 61 20 6C 69 74 74 6C 65 20 6D 6F 72 65    do a little more
00E9B0:  20 65 78 70 65 72 69 6D 65 6E 74 69 6E 67 2E 0D     experimenting..
00E9C0:  0A 0D 0A 20 20 20 41 20 4C 4F 4F 4B 20 54 4F 20    ...   A LOOK TO 
00E9D0:  54 48 45 20 46 55 54 55 52 45 0D 0A 20 20 20 59    THE FUTURE..   Y
00E9E0:  6F 75 20 77 69 6C 6C 20 62 65 20 72 65 6C 69 65    ou will be relie
00E9F0:  76 65 64 20 74 6F 20 72 65 61 64 20 74 68 61 74    ved to read that
00EA00:  6E 65 6C 20 20 31 2C 20 20 61 6E 64 20 74 68 65    nel  1,  and the
00EA10:  6E 0D 0A 20 20 20 69 6D 6D 65 64 69 61 74 65 6C    n..   immediatel
00EA20:  79 20 73 74 61 72 74 73 20 61 6E 6F 74 68 65 72    y starts another
00EA30:  20 45 2E 20 20 57 65 20 74 68 65 6E 20 20 77 61     E.  We then  wa
00EA40:  69 74 20 20 74 77 6F 20 62 65 61 74 73 20 62 65    it  two beats be
00EA50:  66 6F 72 65 20 72 65 61 64 69 6E 67 20 74 68 65    fore reading the
00EA60:  0D 0A 20 20 20 64 61 74 61 20 6F 6E 20 6C 69 6E    ..   data on lin
00EA70:  65 20 35 32 30 2E 20 20 54 68 69 73 20 74 75 72    e 520.  This tur
00EA80:  6E 73 20 20 6F 66 66 20 20 74 68 65 20 20 45 20    ns  off  the  E 
00EA90:  20 61 67 61 69 6E 2C 20 20 61 6E 64 20 61 6C 73     again,  and als
00EAA0:  6F 20 74 75 72 6E 73 20 6F 66 66 20 74 68 65 0D    o turns off the.
00EAB0:  0A 20 20 20 6E 6F 74 65 73 20 6F 6E 20 63 68 61    .   notes on cha
00EAC0:  6E 6E 65 6C 20 32 2C 20 77 68 69 63 68 20 68 61    nnel 2, which ha
00EAD0:  76 65 20 6C 61 73 74 65 64 20 61 20 74 6F 74 61    ve lasted a tota
00EAE0:  6C 20 6F 66 20 73 69 78 20 62 65 61 74 73 20 73    l of six beats s
00EAF0:  69 6E 63 65 20 74 68 65 20 73 74 61 72 74 0D 0A    ince the start..
00EB00:  20 20 20 6F 66 20 6C 69 6E 65 20 35 30 30 2E 20       of line 500. 
00EB10:  20 54 68 65 72 65 20 69 73 20 6E 6F 20 6E 65 67     There is no neg
00EB20:  61 74 69 76 65 20 20 6E 75 6D 62 65 72 20 20 61    ative  number  a
00EB30:  74 20 20 74 68 65 20 65 6E 64 20 6F 66 20 6C 69    t  the end of li
00EB40:  6E 65 20 35 32 30 2C 20 73 6F 20 77 65 0D 0A 20    ne 520, so we.. 
00EB50:  20 20 72 65 61 64 20 74 68 65 20 64 61 74 61 20      read the data 
00EB60:  6F 6E 20 6C 69 6E 65 20 20 35 32 35 20 20 73 74    on line  525  st
00EB70:  72 61 69 67 68 74 20 20 61 77 61 79 2E 20 20 20    raight  away.   
00EB80:  54 68 69 73 20 73 74 61 72 74 73 20 74 68 72 65    This starts thre
00EB90:  65 20 6D 6F 72 65 20 6E 6F 74 65 73 0D 0A 20 20    e more notes..  
00EBA0:  20 70 6C 61 79 69 6E 67 2E 0D 0A 0D 0A 20 20 20     playing.....   
00EBB0:  57 65 20 63 6F 75 6C 64 20 68 61 76 65 20 6D 69    We could have mi
00EBC0:  73 73 65 64 20 6F 75 74 20 74 68 65 20 26 39 30    ssed out the &90
00EBD0:  20 20 66 72 6F 6D 20 20 74 68 65 20 20 73 74 61      from  the  sta
00EBE0:  72 74 20 6F 66 20 6C 69 6E 65 20 35 32 30 2C 20    rt of line 520, 
00EBF0:  61 73 20 72 75 6E 6E 69 6E 67 0D 0A 20 20 20 73    as running..   s
00EC00:  20 6E 65 78 74 20 6D 6F 6E 74 68 20 77 65 20 77     next month we w
00EC10:  69 6C 6C 20 62 65 20 67 6F 69 6E 67 20 62 61 63    ill be going bac
00EC20:  6B 20 74 6F 20 73 6F 6D 65 0D 0A 20 20 20 6F 72    k to some..   or
00EC30:  64 69 6E 61 72 79 20 70 72 6F 67 72 61 6D 6D 69    dinary programmi
00EC40:  6E 67 20 61 6E 64 20 6C 65 61 76 69 6E 67 20 4D    ng and leaving M
00EC50:  49 44 49 20 61 6C 6F 6E 65 20 66 6F 72 20 20 61    IDI alone for  a
00EC60:  20 62 69 74 2E 20 20 49 20 68 61 76 65 20 63 6F     bit.  I have co
00EC70:  6D 70 69 6C 65 64 20 61 0D 0A 20 20 20 76 65 72    mpiled a..   ver
00EC80:  79 20 73 68 6F 72 74 20 6C 69 73 74 20 6F 66 20    y short list of 
00EC90:  62 6F 6F 6B 73 20 74 68 61 74 20 20 49 20 20 66    books that  I  f
00ECA0:  6F 75 6E 64 20 20 69 6E 20 20 6D 79 20 6C 6F 63    ound  in  my loc
00ECB0:  61 6C 20 6C 69 62 72 61 72 79 20 77 68 69 63 68    al library which
00ECC0:  20 6D 61 79 20 62 65 0D 0A 20 20 20 75 73 65 66     may be..   usef
00ECD0:  75 6C 20 69 66 20 79 6F 75 20 77 61 6E 74 20 20    ul if you want  
00ECE0:  74 6F 20 20 6C 65 61 72 6E 20 20 6D 6F 72 65 20    to  learn  more 
00ECF0:  20 61 62 6F 75 74 20 20 4D 49 44 49 2E 20 20 20     about  MIDI.   
00ED00:  59 6F 75 72 20 20 6C 69 62 72 61 72 79 20 6D 61    Your  library ma
00ED10:  79 20 68 61 76 65 0D 0A 20 20 20 73 69 6D 69 6C    y have..   simil
00ED20:  61 72 20 62 6F 6F 6B 73 2C 20 62 75 74 20 69 66    ar books, but if
00ED30:  20 74 68 65 79 20 68 61 76 65 6E 27 74 20 67 6F     they haven't go
00ED40:  74 20 61 6E 79 74 68 69 6E 67 20 75 73 65 66 75    t anything usefu
00ED50:  6C 20 74 68 65 79 20 73 68 6F 75 6C 64 20 62 65    l they should be
00ED60:  20 61 62 6C 65 0D 0A 20 20 20 74 6F 20 67 65 74     able..   to get
00ED70:  20 73 6F 6D 65 20 6F 66 20 74 68 65 73 65 20 6F     some of these o
00ED80:  6E 20 69 6E 74 65 72 2D 6C 69 62 72 61 72 79 20    n inter-library 
00ED90:  6C 6F 61 6E 20 66 6F 72 20 79 6F 75 2E 0D 0A 0D    loan for you....
00EDA0:  0A 20 20 20 49 66 20 61 6E 79 20 6F 66 20 79 6F    .   If any of yo
00EDB0:  75 20 77 6F 75 6C 64 20 6C 69 6B 65 20 75 73 20    u would like us 
00EDC0:  74 6F 20 20 63 6F 76 65 72 20 20 61 6E 79 20 6F    to  cover  any o
00EDD0:  74 68 65 72 20 61 73 70 65 63 74 73 20 6F 66 20    ther aspects of 
00EDE0:  4D 49 44 49 2C 20 77 72 69 74 65 20 69 6E 0D 0A    MIDI, write in..
00EDF0:  20 20 20 74 6F 20 46 61 69 72 20 43 6F 6D 6D 65       to Fair Comme
00EE00:  74 61 74 75 73 20 6D 65 61 6E 73 20 74 68 61 74    tatus means that
00EE10:  20 69 74 20 77 6F 75 6C 64 20 20 73 74 69 6C 6C     it would  still
00EE20:  20 20 62 65 20 20 69 6E 20 20 66 6F 72 63 65 20      be  in  force 
00EE30:  20 62 65 63 61 75 73 65 20 20 69 74 20 77 61 73     because  it was
00EE40:  20 74 68 65 20 6C 61 73 74 0D 0A 20 20 20 73 74     the last..   st
00EE50:  61 74 75 73 20 62 79 74 65 20 75 73 65 64 2C 20    atus byte used, 
00EE60:  62 75 74 20 69 74 20 69 73 20 70 72 6F 62 61 62    but it is probab
00EE70:  6C 79 20 6D 6F 72 65 20 72 65 61 64 61 62 6C 65    ly more readable
00EE80:  20 77 69 74 68 20 69 74 20 69 6E 2E 0D 0A 0D 0A     with it in.....
00EE90:  20 20 20 4F 66 20 63 6F 75 72 73 65 20 74 68 65       Of course the
00EEA0:  72 65 20 69 73 20 61 20 6C 6F 74 20 6F 66 20 73    re is a lot of s
00EEB0:  63 6F 70 65 20 20 66 6F 72 20 20 69 6D 70 72 6F    cope  for  impro
00EEC0:  76 65 6D 65 6E 74 20 2D 20 74 68 65 20 72 65 73    vement - the res
00EED0:  74 20 6F 66 20 74 68 65 20 74 75 6E 65 0D 0A 20    t of the tune.. 
00EEE0:  20 20 63 6F 75 6C 64 20 62 65 20 61 64 64 65 64      could be added
00EEF0:  20 66 6F 72 20 61 20 73 74 61 72 74 21 20 20 20     for a start!   
00EF00:  59 6F 75 20 20 63 61 6E 20 20 61 6C 73 6F 20 75    You  can  also u
00EF10:  73 65 20 6F 74 68 65 72 20 4D 49 44 49 20 63 6F    se other MIDI co
00EF20:  6D 6D 61 6E 64 73 20 61 70 61 72 74 0D 0A 20 20    mmands apart..  
00EF30:  20 66 72 6F 6D 20 4E 6F 74 65 20 4F 6E 2E 20 20     from Note On.  
00EF40:  46 6F 72 20 65 78 61 6D 70 6C 65 2C 20 61 64 64    For example, add
00EF50:  69 6E 67 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E    ing the followin
00EF60:  67 20 64 61 74 61 20 74 6F 20 74 68 65 20 73 74    g data to the st
00EF70:  61 72 74 20 6F 66 20 6C 69 6E 65 0D 0A 20 20 20    art of line..   
00EF80:  35 30 30 20 77 6F 75 6C 64 20 63 68 6F 6F 73 65    500 would choose
00EF90:  20 74 68 65 20 69 6E 73 74 72 75 6D 65 6E 74 73     the instruments
00EFA0:  20 66 6F 72 20 74 68 65 20 74 77 6F 20 63 68 61     for the two cha
00EFB0:  6E 6E 65 6C 73 3A 0D 0A 0D 0A 20 20 20 20 20 26    nnels:....     &
00EFC0:  43 30 2C 34 31 2C 26 43 31 2C 31 0D 0A 0D 0A 20    C0,41,&C1,1.... 
00EFD0:  20 20 59 6F 75 20 63 6F 75 6C 64 20 20 61 64 64      You could  add
00EFE0:  20 20 6D 6F 72 65 20 20 6F 66 20 20 74 68 65 73      more  of  thes
00EFF0:  65 20 20 74 79 70 65 73 20 20 6F 66 20 20 4D 49    e  types  of  MI
00F000:  75 6D 62 65 72 73 20 61 72 65 20 72 65 61 64 0D    umbers are read.
00F010:  0A 20 20 20 61 6E 64 20 73 65 6E 74 20 74 6F 20    .   and sent to 
00F020:  74 68 65 20 4D 49 44 49 20 69 6E 74 65 72 66 61    the MIDI interfa
00F030:  63 65 2E 20 20 57 68 65 6E 20 20 61 20 6E 65 67    ce.  When  a neg
00F040:  61 74 69 76 65 20 6E 75 6D 62 65 72 20 69 73 20    ative number is 
00F050:  72 65 61 63 68 65 64 20 28 65 67 20 61 74 0D 0A    reached (eg at..
00F060:  20 20 20 74 68 65 20 65 6E 64 20 6F 66 20 6C 69       the end of li
00F070:  6E 65 20 35 30 30 29 2C 20 69 74 20 69 73 20 6E    ne 500), it is n
00F080:  6F 74 20 20 73 65 6E 74 20 20 74 6F 20 74 68 65    ot  sent  to the
00F090:  20 69 6E 74 65 72 66 61 63 65 2E 20 20 49 6E 73     interface.  Ins
00F0A0:  74 65 61 64 20 74 20 69 73 20 73 65 74 0D 0A 20    tead t is set.. 
00F0B0:  20 20 74 6F 20 74 68 65 20 65 71 75 69 76 61 6C      to the equival
00F0C0:  65 6E 74 20 70 6F 73 69 74 69 76 65 20 6E 75 6D    ent positive num
00F0D0:  62 65 72 2E 20 20 54 68 69 73 20 20 69 6E 64 69    ber.  This  indi
00F0E0:  63 61 74 65 73 20 20 74 68 65 20 61 6D 6F 75 6E    cates  the amoun
00F0F0:  74 20 6F 66 20 74 69 6D 65 20 74 6F 0D 0A 20 20    t of time to..  
00F100:  20 77 61 69 74 20 62 65 66 6F 72 65 20 72 65 61     wait before rea
00F110:  64 69 6E 67 20 74 68 65 20 20 6E 65 78 74 20 20    ding the  next  
00F120:  62 61 74 63 68 20 20 6F 66 20 20 64 61 74 61 2E    batch  of  data.
00F130:  20 20 20 4C 69 6E 65 20 20 34 30 30 20 20 69 73       Line  400  is
00F140:  20 77 68 65 72 65 20 74 20 69 73 0D 0A 20 20 20     where t is..   
00F150:  67 72 61 64 75 61 6C 6C 79 20 64 65 63 72 65 61    gradually decrea
00F160:  73 65 64 20 75 6E 74 69 6C 20 69 74 20 69 73 20    sed until it is 
00F170:  7A 65 72 6F 20 61 67 61 69 6E 2C 20 61 6E 64 20    zero again, and 
00F180:  20 6F 6E 6C 79 20 77 68 65 6E 20 74 20 69 73 20     only when t is 
00F190:  7A 65 72 6F 20 64 6F 20 77 65 0D 0A 20 20 20 72    zero do we..   r
00F1A0:  65 61 64 20 74 68 65 20 6E 65 78 74 20 73 65 74    ead the next set
00F1B0:  20 6F 66 20 64 61 74 61 2E 0D 0A 0D 0A 20 20 20     of data.....   
00F1C0:  54 68 65 20 76 61 6C 75 65 20 2D 31 30 30 20 69    The value -100 i
00F1D0:  6E 64 69 63 61 74 65 73 20 74 68 61 74 20 74 68    ndicates that th
00F1E0:  65 20 65 6E 64 20 6F 66 20 74 68 65 20 70 69 65    e end of the pie
00F1F0:  63 65 20 68 61 73 20 62 65 65 6E 20 72 65 61 63    ce has been reac
00F200:  44 49 20 20 63 6F 6D 6D 61 6E 64 20 20 74 6F 20    DI  command  to 
00F210:  20 63 68 61 6E 67 65 20 20 74 68 65 0D 0A 20 20     change  the..  
00F220:  20 69 6E 73 74 72 75 6D 65 6E 74 73 20 64 75 72     instruments dur
00F230:  69 6E 67 20 74 68 65 20 70 69 65 63 65 2E 0D 0A    ing the piece...
00F240:  0D 0A 20 20 20 52 45 43 45 49 56 49 4E 47 20 4D    ..   RECEIVING M
00F250:  49 44 49 20 44 41 54 41 0D 0A 20 20 20 55 70 20    IDI DATA..   Up 
00F260:  74 69 6C 6C 20 6E 6F 77 20 77 65 20 68 61 76 65    till now we have
00F270:  20 20 63 6F 6E 63 65 6E 74 72 61 74 65 64 20 20      concentrated  
00F280:  65 6E 74 69 72 65 6C 79 20 20 6F 6E 20 20 73 65    entirely  on  se
00F290:  6E 64 69 6E 67 20 20 64 61 74 61 20 74 6F 20 74    nding  data to t
00F2A0:  68 65 20 4D 49 44 49 0D 0A 20 20 20 69 6E 74 65    he MIDI..   inte
00F2B0:  72 66 61 63 65 2C 20 62 75 74 20 69 74 20 69 73    rface, but it is
00F2C0:  20 61 6C 73 6F 20 20 70 6F 73 73 69 62 6C 65 20     also  possible 
00F2D0:  20 74 6F 20 20 72 65 63 65 69 76 65 20 20 64 61     to  receive  da
00F2E0:  74 61 20 20 73 65 6E 74 20 62 79 20 6F 74 68 65    ta  sent by othe
00F2F0:  72 20 4D 49 44 49 0D 0A 20 20 20 64 65 76 69 63    r MIDI..   devic
00F300:  65 73 2E 0D 0A 0D 0A 20 20 20 42 69 74 20 7A 65    es.....   Bit ze
00F310:  72 6F 20 6F 6E 20 74 68 65 20 4D 49 44 49 20 69    ro on the MIDI i
00F320:  6E 74 65 72 66 61 63 65 20 20 73 74 61 74 75 73    nterface  status
00F330:  20 20 70 6F 72 74 20 20 69 6E 64 69 63 61 74 65      port  indicate
00F340:  73 20 77 68 65 74 68 65 72 20 61 20 62 79 74 65    s whether a byte
00F350:  20 68 61 73 0D 0A 20 20 20 62 65 65 6E 20 72 65     has..   been re
00F360:  63 65 69 76 65 64 2C 20 61 74 20 77 68 69 63 68    ceived, at which
00F370:  20 70 6F 69 6E 74 20 74 68 65 20 62 79 74 65 20     point the byte 
00F380:  20 63 61 6E 20 20 62 65 20 72 65 61 64 20 6F 6E     can  be read on
00F390:  20 74 68 65 20 64 61 74 61 20 72 65 61 64 20 70     the data read p
00F3A0:  6F 72 74 0D 0A 20 20 20 6F 66 20 74 68 65 20 69    ort..   of the i
00F3B0:  6E 74 65 72 66 61 63 65 2E 20 20 53 65 65 20 54    nterface.  See T
00F3C0:  61 62 6C 65 20 31 20 20 66 6F 72 20 20 74 68 65    able 1  for  the
00F3D0:  20 70 6F 72 74 20 61 64 64 72 65 73 73 65 73 2E     port addresses.
00F3E0:  20 20 46 6F 72 20 65 78 61 6D 70 6C 65 2C 20 74      For example, t
00F3F0:  68 65 0D 0A 20 20 20 66 6F 6C 6C 6F 77 69 6E 67    he..   following
00F400:  68 65 64 2C 20 73 6F 20 69 66 0D 0A 20 20 20 79    hed, so if..   y
00F410:  6F 75 20 77 61 6E 74 20 74 6F 20 73 61 76 65 20    ou want to save 
00F420:  74 79 70 69 6E 67 20 79 6F 75 20 63 6F 75 6C 64    typing you could
00F430:  20 70 75 74 20 2D 31 30 30 20 61 74 20 74 68 65     put -100 at the
00F440:  20 65 6E 64 20 6F 66 20 6C 69 6E 65 20 35 37 30     end of line 570
00F450:  20 61 6E 64 20 73 74 6F 70 0D 0A 20 20 20 74 68     and stop..   th
00F460:  65 72 65 2E 0D 0A 0D 0A 20 20 20 48 6F 77 20 64    ere.....   How d
00F470:  6F 65 73 20 74 68 65 20 64 61 74 61 20 77 6F 72    oes the data wor
00F480:  6B 3F 20 20 57 65 6C 6C 20 62 61 73 69 63 61 6C    k?  Well basical
00F490:  6C 79 20 69 74 20 20 69 73 20 61 20 6C 6F 61 64    ly it  is a load
00F4A0:  20 6F 66 20 4D 49 44 49 20 63 6F 6D 6D 61 6E 64     of MIDI command
00F4B0:  73 2C 20 61 73 0D 0A 20 20 20 65 78 70 6C 61 69    s, as..   explai
00F4C0:  6E 65 64 20 6C 61 73 74 20 6D 6F 6E 74 68 2E 20    ned last month. 
00F4D0:  20 54 68 65 79 20 20 61 72 65 20 20 61 6C 6C 20     They  are  all 
00F4E0:  20 4E 6F 74 65 20 20 4F 6E 20 20 63 6F 6D 6D 61     Note  On  comma
00F4F0:  6E 64 73 2C 20 20 61 70 61 72 74 20 66 72 6F 6D    nds,  apart from
00F500:  20 6F 6E 65 0D 0A 20 20 20 50 6F 6C 79 70 68 6F     one..   Polypho
00F510:  6E 69 63 20 4B 65 79 20 50 72 65 73 73 75 72 65    nic Key Pressure
00F520:  20 69 6E 20 20 74 68 65 20 20 6D 69 64 64 6C 65     in  the  middle
00F530:  20 20 6F 66 20 20 6C 69 6E 65 20 20 36 35 30 2E      of  line  650.
00F540:  20 20 54 75 72 6E 69 6E 67 20 6E 6F 74 65 73 20      Turning notes 
00F550:  6F 66 66 0D 0A 20 20 20 61 67 61 69 6E 20 68 61    off..   again ha
00F560:  73 20 62 65 65 6E 20 64 6F 6E 65 20 62 79 20 75    s been done by u
00F570:  73 69 6E 67 20 20 4E 6F 74 65 20 20 4F 6E 20 20    sing  Note  On  
00F580:  63 6F 6D 6D 61 6E 64 73 20 20 77 69 74 68 20 61    commands  with a
00F590:  20 76 65 6C 6F 63 69 74 79 20 76 61 6C 75 65 20     velocity value 
00F5A0:  6F 66 0D 0A 20 20 20 7A 65 72 6F 2E 0D 0A 0D 0A    of..   zero.....
00F5B0:  20 20 20 4A 75 73 74 20 74 6F 20 67 65 74 20 61       Just to get a
00F5C0:  20 66 65 65 6C 20 66 6F 72 20 77 68 61 74 20 20     feel for what  
00F5D0:  69 73 20 20 68 61 70 70 65 6E 69 6E 67 2C 20 20    is  happening,  
00F5E0:  6C 65 74 20 20 75 73 20 67 6F 20 6F 76 65 72 20    let  us go over 
00F5F0:  74 68 65 20 66 69 72 73 74 20 66 65 77 0D 0A 20    the first few.. 
00F600:  20 6C 69 74 74 6C 65 20 70 72 6F 67 72 61 6D 20     little program 
00F610:  77 6F 75 6C 64 20 77 61 69 74 20 66 6F 72 20 20    would wait for  
00F620:  61 20 20 62 79 74 65 20 20 74 6F 20 62 65 20 72    a  byte  to be r
00F630:  65 63 65 69 76 65 64 20 61 6E 64 20 70 72 69 6E    eceived and prin
00F640:  74 0D 0A 20 20 20 74 68 65 20 68 65 78 20 76 61    t..   the hex va
00F650:  6C 75 65 20 6F 6E 20 74 68 65 20 73 63 72 65 65    lue on the scree
00F660:  6E 3A 0D 0A 0D 0A 20 20 20 20 20 31 30 20 57 48    n:....     10 WH
00F670:  49 4C 45 20 28 49 4E 50 28 26 46 38 45 45 29 20    ILE (INP(&F8EE) 
00F680:  41 4E 44 20 31 29 3D 30 3A 57 45 4E 44 0D 0A 20    AND 1)=0:WEND.. 
00F690:  20 20 20 20 32 30 20 50 52 49 4E 54 20 48 45 58        20 PRINT HEX
00F6A0:  24 28 49 4E 50 28 26 46 38 45 46 29 29 0D 0A 0D    $(INP(&F8EF))...
00F6B0:  0A 20 20 20 54 68 65 20 57 48 49 4C 45 20 57 45    .   The WHILE WE
00F6C0:  4E 44 20 6C 6F 6F 70 20 63 6F 75 6C 64 20 20 62    ND loop could  b
00F6D0:  65 20 20 72 65 70 6C 61 63 65 64 20 20 62 79 20    e  replaced  by 
00F6E0:  20 61 6E 20 65 78 61 6D 70 6C 65 20 6F 66 20 74     an example of t
00F6F0:  68 65 20 6C 69 74 74 6C 65 2D 75 73 65 64 0D 0A    he little-used..
00F700:  20 20 20 57 41 49 54 20 63 6F 6D 6D 61 6E 64 3A       WAIT command:
00F710:  0D 0A 0D 0A 20 20 20 20 20 31 30 20 57 41 49 54    ....     10 WAIT
00F720:  20 26 46 38 45 45 2C 31 0D 0A 0D 0A 20 20 20 62     &F8EE,1....   b
00F730:  75 74 20 69 66 20 6E 6F 74 68 69 6E 67 20 69 73    ut if nothing is
00F740:  20 72 65 63 65 69 76 65 64 2C 20 79 6F 75 20 68     received, you h
00F750:  61 76 65 20 74 6F 20 72 65 73 65 74 20 74 68 65    ave to reset the
00F760:  20 63 6F 6D 70 75 74 65 72 20 74 6F 20 62 72 65     computer to bre
00F770:  61 6B 20 6F 75 74 20 6F 66 0D 0A 20 20 20 69 74    ak out of..   it
00F780:  21 20 20 54 68 65 20 70 6F 72 74 20 76 61 6C 75    !  The port valu
00F790:  65 73 20 61 72 65 20 74 68 6F 73 65 20 66 6F 72    es are those for
00F7A0:  20 74 68 65 20 52 41 4D 20 4D 75 73 69 63 20 4D     the RAM Music M
00F7B0:  61 63 68 69 6E 65 20 2D 20 6A 75 73 74 20 63 68    achine - just ch
00F7C0:  61 6E 67 65 20 74 68 65 0D 0A 20 20 20 6E 75 6D    ange the..   num
00F7D0:  62 65 72 73 20 61 63 63 6F 72 64 69 6E 67 20 74    bers according t
00F7E0:  6F 20 54 61 62 6C 65 20 31 2E 0D 0A 0D 0A 20 20    o Table 1.....  
00F7F0:  20 52 65 61 64 69 6E 67 20 62 79 74 65 73 20 20     Reading bytes  
00F800:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00F810:  0D 00 01 00 02 09 4E E5 0D 00 C6 02 00 00 00 02    ......N.........
00F820:  0D 00 C2 02 00 00 00 02 0D 00 C7 02 00 00 00 02    ................
00F830:  0D 00 C3 02 00 00 00 02 0D 00 C8 02 00 00 00 02    ................
00F840:  0D 00 C4 02 00 00 00 02 0D 00 C9 02 00 00 00 02    ................
00F850:  0D 00 C5 02 00 00 00 02 0D 00 C1 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:  61 64 20 28 72 65 61 64 20 6F 6E 6C 79 29 20 20    ad (read only)  
00F910:  20 20 20 26 46 38 45 46 20 20 20 26 46 38 46 33       &F8EF   &F8F3
00F920:  20 20 20 26 46 38 45 31 0D 0A 20 20 20 64 61 74       &F8E1..   dat
00F930:  61 20 77 72 69 74 65 20 28 77 72 69 74 65 20 6F    a write (write o
00F940:  6E 6C 79 29 20 20 20 26 46 38 45 44 20 20 20 26    nly)   &F8ED   &
00F950:  46 38 46 33 20 20 20 26 46 38 45 31 0D 0A 1A 20    F8F3   &F8E1... 
00F960:  73 69 74 74 69 6E 67 20 20 69 6E 20 66 72 6F 6E    sitting  in fron
00F970:  74 20 6F 66 20 74 68 65 20 63 6F 6D 70 75 74 65    t of the compute
00F980:  32 30 45 36 30 46 43 36 33 30 43 33 45 43 39 30    20E60FC630C3EC90
00F990:  43 36 39 30 32 37 43 45 36 39 35 0D 0A 20 31 31    C69027CE695.. 11
00F9A0:  34 30 20 44 41 54 41 20 34 30 32 37 43 33 45 43    40 DATA 4027C3EC
00F9B0:  39 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30    9000000000000000
00F9C0:  32 41 36 0D 0A 1A 77 6E 20 20 6F 6E 20 20 74 68    2A6...wn  on  th
00F9D0:  65 20 20 77 69 64 65 20 20 64 65 73 65 72 74 20    e  wide  desert 
00F9E0:  20 70 6C 61 69 6E 73 20 20 6F 66 20 20 4D 65 78     plains  of  Mex
00F9F0:  69 63 6F 2E 20 20 4A 75 61 6E 20 43 61 72 6C 6F    ico.  Juan Carlo
00FA00:  45 45 43 39 42 31 43 38 37 36 36 0D 0A 20 31 30    EEC9B1C8766.. 10
00FA10:  34 30 20 44 41 54 41 20 30 45 32 30 45 36 30 46    40 DATA 0E20E60F
00FA20:  46 35 43 44 44 43 39 34 46 31 43 39 37 45 42 37    F5CDDC94F1C97EB7
00FA30:  37 34 34 0D 0A 20 31 30 35 30 20 44 41 54 41 20    744.. 1050 DATA 
00FA40:  43 38 32 33 46 45 32 32 32 30 46 38 43 39 37 45    C823FE2220F8C97E
00FA50:  42 37 43 38 32 33 46 35 37 30 31 0D 0A 20 31 30    B7C823F5701.. 10
00FA60:  36 30 20 44 41 54 41 20 43 44 45 43 39 30 46 31    60 DATA CDEC90F1
00FA70:  46 45 32 32 32 30 46 33 43 39 37 45 32 33 42 37    FE2220F3C97E23B7
00FA80:  37 38 45 0D 0A 20 31 30 37 30 20 44 41 54 41 20    78E.. 1070 DATA 
00FA90:  46 32 38 39 39 34 43 39 37 45 32 33 42 37 46 41    F28994C97E23B7FA
00FAA0:  39 44 39 34 46 45 30 39 37 36 32 0D 0A 20 31 30    9D94FE09762.. 10
00FAB0:  38 30 20 44 41 54 41 20 43 34 45 43 39 30 31 38    80 DATA C4EC9018
00FAC0:  46 33 45 36 37 46 43 33 45 43 39 30 30 36 30 34    F3E67FC3EC900604
00FAD0:  36 46 39 0D 0A 20 31 30 39 30 20 44 41 54 41 20    6F9.. 1090 DATA 
00FAE0:  30 45 30 30 44 44 32 31 43 39 39 34 44 44 35 45    0E00DD21C994DD5E
00FAF0:  30 30 44 44 35 36 30 31 34 44 38 0D 0A 20 31 31    00DD56014D8.. 11
00FB00:  69 6E 67 20 6E 6F 0D 0A 20 20 20 67 6F 6F 64 20    ing no..   good 
00FB10:  66 6F 72 20 4D 49 44 49 2E 0D 0A 0D 0A 0D 0A 20    for MIDI....... 
00FB20:  20 20 41 64 76 61 6E 63 65 64 20 4D 49 44 49 20      Advanced MIDI 
00FB30:  75 73 65 72 27 73 20 67 75 69 64 65 20 62 79 20    user's guide by 
00FB40:  52 2E 41 2E 20 50 65 6E 66 6F 6C 64 2C 20 32 6E    R.A. Penfold, 2n
00FB50:  64 20 65 64 2E 2C 20 50 43 20 50 75 62 6C 69 73    d ed., PC Publis
00FB60:  68 69 6E 67 2C 20 31 39 39 35 0D 0A 20 20 20 49    hing, 1995..   I
00FB70:  53 42 4E 20 31 2D 38 37 30 37 37 35 2D 33 39 2D    SBN 1-870775-39-
00FB80:  32 0D 0A 20 20 20 4E 6F 74 20 73 6F 20 75 73 65    2..   Not so use
00FB90:  66 75 6C 20 61 73 20 74 68 65 20 20 50 72 61 63    ful as the  Prac
00FBA0:  74 69 63 61 6C 20 20 4D 49 44 49 20 20 68 61 6E    tical  MIDI  han
00FBB0:  64 62 6F 6F 6B 2C 20 20 62 75 74 20 6D 61 79 20    dbook,  but may 
00FBC0:  62 65 20 77 6F 72 74 68 20 64 69 70 70 69 6E 67    be worth dipping
00FBD0:  0D 0A 20 20 20 69 6E 74 6F 20 69 66 20 79 6F 75    ..   into if you
00FBE0:  20 63 6F 6D 65 20 61 63 72 6F 73 73 20 61 20 63     come across a c
00FBF0:  6F 70 79 2E 0D 0A 0D 0A 0D 0A 20 20 20 4D 75 73    opy.......   Mus
00FC00:  69 63 20 74 65 63 68 6E 6F 6C 6F 67 79 20 72 65    ic technology re
00FC10:  66 65 72 65 6E 63 65 20 62 6F 6F 6B 20 62 79 20    ference book by 
00FC20:  50 65 74 65 72 20 42 75 69 63 6B 20 61 6E 64 20    Peter Buick and 
00FC30:  56 69 63 20 4C 65 6E 6E 61 72 64 2C 20 50 43 0D    Vic Lennard, PC.
00FC40:  0A 20 20 20 50 75 62 6C 69 73 68 69 6E 67 2C 20    .   Publishing, 
00FC50:  31 39 39 35 0D 0A 20 20 20 49 53 42 4E 20 31 2D    1995..   ISBN 1-
00FC60:  38 37 30 37 37 35 2D 33 34 2D 31 0D 0A 20 20 20    870775-34-1..   
00FC70:  46 75 6C 6C 20 6F 66 20 74 65 63 68 6E 69 63 61    Full of technica
00FC80:  6C 20 64 65 74 61 69 6C 20 75 73 65 66 75 6C 20    l detail useful 
00FC90:  66 6F 72 20 70 72 6F 67 72 61 6D 6D 69 6E 67 20    for programming 
00FCA0:  4D 49 44 49 20 73 6F 66 74 77 61 72 65 2E 20 20    MIDI software.  
00FCB0:  57 65 6C 6C 20 77 6F 72 74 68 0D 0A 20 20 20 72    Well worth..   r
00FCC0:  65 61 64 69 6E 67 20 69 66 20 79 6F 75 20 77 61    eading if you wa
00FCD0:  6E 74 20 74 6F 20 66 69 6E 64 20 20 6F 75 74 20    nt to find  out 
00FCE0:  20 74 68 65 20 20 64 65 74 61 69 6C 73 20 20 6F     the  details  o
00FCF0:  66 20 74 68 65 20 61 72 65 61 73 20 49 20 68 61    f the areas I ha
00FD00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FD10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FD20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FD30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FD40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FD50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FD60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FD70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FD80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FD90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FDA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FDB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FDC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FDD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FDE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FDF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FE00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FE10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FE20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FE30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FE40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FE50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FE60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FE70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FE80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FE90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FEA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FEB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FEC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FEE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FEF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00FF00:  76 65 20 73 6B 61 74 65 64 0D 0A 20 20 20 6F 76    ve skated..   ov
00FF10:  65 72 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 4C 49    er.........   LI
00FF20:  53 54 49 4E 47 20 31 0D 0A 0D 0A 20 20 20 33 30    STING 1....   30
00FF30:  30 20 7C 43 48 4F 55 54 2C 30 3A 52 45 4D 20 31    0 |CHOUT,0:REM 1
00FF40:  20 66 6F 72 20 45 4D 52 2C 20 32 20 66 6F 72 20     for EMR, 2 for 
00FF50:  44 48 43 50 0D 0A 20 20 20 33 31 30 20 52 45 53    DHCP..   310 RES
00FF60:  54 4F 52 45 20 35 30 30 3A 74 3D 31 3A 47 4F 53    TORE 500:t=1:GOS
00FF70:  55 42 20 34 30 30 0D 0A 20 20 20 33 32 30 20 45    UB 400..   320 E
00FF80:  56 45 52 59 20 31 32 20 47 4F 53 55 42 20 34 30    VERY 12 GOSUB 40
00FF90:  30 0D 0A 20 20 20 33 33 30 20 57 48 49 4C 45 20    0..   330 WHILE 
00FFA0:  74 3C 3E 31 30 30 3A 57 45 4E 44 0D 0A 20 20 20    t<>100:WEND..   
00FFB0:  33 34 30 20 45 4E 44 0D 0A 20 20 20 34 30 30 20    340 END..   400 
00FFC0:  74 3D 74 2D 31 3A 49 46 20 74 3E 30 20 54 48 45    t=t-1:IF t>0 THE
00FFD0:  4E 20 52 45 54 55 52 4E 0D 0A 20 20 20 34 31 30    N RETURN..   410
00FFE0:  20 44 49 3A 52 45 41 44 20 61 0D 0A 20 20 20 34     DI:READ a..   4
00FFF0:  32 30 20 57 48 49 4C 45 20 61 3E 3D 30 3A 7C 53    20 WHILE a>=0:|S
010000:  45 4E 44 2C 61 0D 0A 20 20 20 34 33 30 20 52 45    END,a..   430 RE
010010:  41 44 20 61 3A 57 45 4E 44 0D 0A 20 20 20 34 34    AD a:WEND..   44
010020:  30 20 74 3D 2D 61 0D 0A 20 20 20 34 35 30 20 45    0 t=-a..   450 E
010030:  49 3A 52 45 54 55 52 4E 0D 0A 20 20 20 35 30 30    I:RETURN..   500
010040:  20 44 41 54 41 20 26 39 30 2C 36 34 2C 35 30 2C     DATA &90,64,50,
010050:  26 39 31 2C 35 32 2C 34 30 2C 35 35 2C 34 30 2C    &91,52,40,55,40,
010060:  2D 34 0D 0A 20 20 20 35 31 30 20 44 41 54 41 20    -4..   510 DATA 
010070:  26 39 30 2C 36 34 2C 30 2C 36 34 2C 35 30 2C 2D    &90,64,0,64,50,-
010080:  32 0D 0A 20 20 20 35 32 30 20 44 41 54 41 20 26    2..   520 DATA &
010090:  39 30 2C 36 34 2C 30 2C 26 39 31 2C 35 32 2C 30    90,64,0,&91,52,0
0100A0:  2C 35 35 2C 30 0D 0A 20 20 20 35 32 35 20 44 41    ,55,0..   525 DA
0100B0:  54 41 20 26 39 30 2C 37 31 2C 35 30 2C 26 39 31    TA &90,71,50,&91
0100C0:  2C 35 32 2C 34 30 2C 35 35 2C 34 30 2C 2D 34 0D    ,52,40,55,40,-4.
0100D0:  0A 20 20 20 35 33 30 20 44 41 54 41 20 26 39 30    .   530 DATA &90
0100E0:  2C 37 31 2C 30 2C 37 31 2C 35 30 2C 2D 32 0D 0A    ,71,0,71,50,-2..
0100F0:  20 20 20 35 34 30 20 44 41 54 41 20 26 39 30 2C       540 DATA &90,
010100:  23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61    #Programmers' Pa
010110:  74 63 68 20 31 33 20 2D 20 57 41 43 43 49 20 31    tch 13 - WACCI 1
010120:  32 32 2C 20 4A 75 6E 65 20 31 39 39 38 2C 20 70    22, June 1998, p
010130:  2E 20 32 32 2D 32 34 0D 0A 20 20 20 50 52 4F 47    . 22-24..   PROG
010140:  52 41 4D 4D 45 52 53 27 20 50 41 54 43 48 20 31    RAMMERS' PATCH 1
010150:  33 0D 0A 20 20 20 42 79 20 4D 61 74 74 68 65 77    3..   By Matthew
010160:  20 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A 20 20 20     Phillips....   
010170:  54 68 65 20 73 75 6E 20 62 65 61 74 20 64 6F 77    The sun beat dow
010180:  6E 20 20 6F 6E 20 20 74 68 65 20 20 77 69 64 65    n  on  the  wide
010190:  20 20 64 65 73 65 72 74 20 20 70 6C 61 69 6E 73      desert  plains
0101A0:  20 20 6F 66 20 20 4D 65 78 69 63 6F 2E 20 20 4A      of  Mexico.  J
0101B0:  75 61 6E 20 43 61 72 6C 6F 73 0D 0A 20 20 20 62    uan Carlos..   b
0101C0:  72 65 61 74 68 65 64 20 61 20 68 65 61 76 79 20    reathed a heavy 
0101D0:  20 73 69 67 68 20 20 61 73 20 20 68 65 20 20 73     sigh  as  he  s
0101E0:  75 72 76 65 79 65 64 20 20 74 68 65 20 20 61 72    urveyed  the  ar
0101F0:  69 64 20 20 6C 61 6E 64 73 63 61 70 65 2E 20 20    id  landscape.  
010200:  48 69 73 20 68 6F 72 73 65 0D 0A 20 20 20 73 6E    His horse..   sn
010210:  6F 72 74 65 64 2E 20 20 54 68 65 79 20 68 61 64    orted.  They had
010220:  20 77 61 69 74 65 64 20 61 20 6C 6F 6E 67 20 74     waited a long t
010230:  69 6D 65 2E 20 20 20 4C 65 73 73 65 72 20 6D 65    ime.   Lesser me
010240:  6E 20 77 6F 75 6C 64 20 68 61 76 65 20 74 75 72    n would have tur
010250:  6E 65 64 20 62 61 63 6B 0D 0A 20 20 20 62 79 20    ned back..   by 
010260:  6E 6F 77 2C 20 20 62 75 74 20 4A 75 61 6E 20 43    now,  but Juan C
010270:  61 72 6C 6F 73 20 68 61 64 20 64 65 74 65 72 6D    arlos had determ
010280:  69 6E 61 74 69 6F 6E 2E 20 20 20 48 65 20 77 6F    ination.   He wo
010290:  75 6C 64 20 73 65 65 20 69 74 20 74 68 72 6F 75    uld see it throu
0102A0:  67 68 2E 20 20 41 74 0D 0A 20 20 20 6C 61 73 74    gh.  At..   last
0102B0:  20 68 65 20 73 65 6E 73 65 64 20 69 6E 20 74 68     he sensed in th
0102C0:  65 20 64 69 73 74 61 6E 63 65 20 61 20 20 73 6C    e distance a  sl
0102D0:  69 67 68 74 20 64 69 73 74 75 72 62 61 6E 63 65    ight disturbance
0102E0:  20 69 6E 20 74 68 65 20 61 69 72 2E 20 20 41 6E     in the air.  An
0102F0:  64 20 74 68 65 6E 0D 0A 20 20 20 74 68 65 20 64    d then..   the d
010300:  37 31 2C 30 2C 26 39 31 2C 35 32 2C 30 2C 35 35    71,0,&91,52,0,55
010310:  2C 30 0D 0A 20 20 20 35 34 35 20 44 41 54 41 20    ,0..   545 DATA 
010320:  26 39 30 2C 36 36 2C 35 30 2C 26 39 31 2C 35 30    &90,66,50,&91,50
010330:  2C 34 30 2C 35 37 2C 34 30 2C 2D 33 0D 0A 20 20    ,40,57,40,-3..  
010340:  20 35 35 30 20 44 41 54 41 20 26 39 30 2C 36 36     550 DATA &90,66
010350:  2C 30 2C 36 37 2C 35 30 2C 2D 31 0D 0A 20 20 20    ,0,67,50,-1..   
010360:  35 36 30 20 44 41 54 41 20 26 39 30 2C 36 37 2C    560 DATA &90,67,
010370:  30 2C 36 36 2C 35 30 2C 2D 32 0D 0A 20 20 20 35    0,66,50,-2..   5
010380:  37 30 20 44 41 54 41 20 26 39 30 2C 36 36 2C 30    70 DATA &90,66,0
010390:  2C 26 39 31 2C 35 30 2C 30 2C 35 37 2C 30 0D 0A    ,&91,50,0,57,0..
0103A0:  20 20 20 35 37 35 20 44 41 54 41 20 26 39 30 2C       575 DATA &90,
0103B0:  36 34 2C 35 30 2C 26 39 31 2C 35 32 2C 34 30 2C    64,50,&91,52,40,
0103C0:  35 35 2C 34 30 2C 2D 36 0D 0A 20 20 20 35 38 30    55,40,-6..   580
0103D0:  20 44 41 54 41 20 26 39 30 2C 36 34 2C 30 2C 26     DATA &90,64,0,&
0103E0:  39 31 2C 35 32 2C 30 2C 35 35 2C 30 2C 35 35 2C    91,52,0,55,0,55,
0103F0:  34 35 2C 2D 32 0D 0A 20 20 20 35 39 30 20 44 41    45,-2..   590 DA
010400:  54 41 20 26 39 30 2C 37 31 2C 37 30 2C 2D 32 0D    TA &90,71,70,-2.
010410:  0A 20 20 20 36 30 30 20 44 41 54 41 20 26 39 30    .   600 DATA &90
010420:  2C 37 31 2C 30 2C 26 39 31 2C 35 35 2C 30 0D 0A    ,71,0,&91,55,0..
010430:  20 20 20 36 30 35 20 44 41 54 41 20 26 39 30 2C       605 DATA &90,
010440:  37 34 2C 37 35 2C 26 39 31 2C 35 34 2C 35 30 2C    74,75,&91,54,50,
010450:  35 37 2C 35 30 2C 2D 32 0D 0A 20 20 20 36 31 30    57,50,-2..   610
010460:  20 44 41 54 41 20 26 39 30 2C 37 34 2C 30 2C 26     DATA &90,74,0,&
010470:  39 31 2C 35 34 2C 30 2C 35 37 2C 30 0D 0A 20 20    91,54,0,57,0..  
010480:  20 36 31 35 20 44 41 54 41 20 26 39 30 2C 37 36     615 DATA &90,76
010490:  2C 38 30 2C 26 39 31 2C 35 32 2C 35 35 2C 26 39    ,80,&91,52,55,&9
0104A0:  31 2C 35 35 2C 35 35 2C 2D 34 0D 0A 20 20 20 36    1,55,55,-4..   6
0104B0:  32 30 20 44 41 54 41 20 26 39 30 2C 37 36 2C 30    20 DATA &90,76,0
0104C0:  2C 26 39 31 2C 35 32 2C 30 2C 26 39 30 2C 37 34    ,&91,52,0,&90,74
0104D0:  2C 37 35 2C 26 39 31 2C 35 32 2C 36 30 2C 2D 32    ,75,&91,52,60,-2
0104E0:  0D 0A 20 20 20 36 33 30 20 44 41 54 41 20 26 39    ..   630 DATA &9
0104F0:  30 2C 37 34 2C 30 2C 26 39 31 2C 35 32 2C 30 2C    0,74,0,&91,52,0,
010500:  75 73 74 20 63 6C 6F 75 64 20 61 70 70 72 6F 61    ust cloud approa
010510:  63 68 69 6E 67 2C 20 61 6E 64 20 20 66 69 6E 61    ching, and  fina
010520:  6C 6C 79 20 20 74 68 65 20 73 6F 75 6E 64 20 6F    lly  the sound o
010530:  66 20 68 6F 6F 76 65 73 2E 20 20 46 6C 61 6D 69    f hooves.  Flami
010540:  6E 67 75 65 7A 0D 0A 20 20 20 68 61 64 20 63 6F    nguez..   had co
010550:  6D 65 2E 20 20 54 68 65 20 67 61 75 6E 74 2C 20    me.  The gaunt, 
010560:  62 65 61 72 64 65 64 20 20 6D 65 73 73 65 6E 67    bearded  messeng
010570:  65 72 20 20 74 68 72 75 73 74 20 20 61 20 70 61    er  thrust  a pa
010580:  63 6B 65 74 20 69 6E 74 6F 20 68 69 73 20 68 61    cket into his ha
010590:  6E 64 73 2E 0D 0A 20 20 20 43 61 72 6C 6F 73 20    nds...   Carlos 
0105A0:  74 6F 72 65 20 69 74 20 6F 70 65 6E 2E 20 20 48    tore it open.  H
0105B0:  65 72 65 20 69 74 20 77 61 73 20 2D 20 74 68 65    ere it was - the
0105C0:  20 4A 75 6E 65 20 69 73 73 75 65 20 6F 66 20 57     June issue of W
0105D0:  41 43 43 49 20 61 74 20 6C 61 73 74 2E 0D 0A 0D    ACCI at last....
0105E0:  0A 20 20 20 42 41 43 4B 20 32 20 42 41 53 49 43    .   BACK 2 BASIC
0105F0:  53 0D 0A 20 20 20 20 20 4F 6E 65 20 6F 66 20 74    S..     One of t
010600:  68 65 20 67 72 65 61 74 20 74 68 69 6E 67 73 20    he great things 
010610:  61 62 6F 75 74 20 57 41 43 43 49 20 69 73 20 20    about WACCI is  
010620:  74 68 65 20 50 44 20 6C 69 62 72 61 72 79 2E 20    the PD library. 
010630:  20 54 68 65 72 65 20 69 73 20 73 75 63 68 20 61     There is such a
010640:  0D 0A 20 20 20 76 61 72 69 65 74 79 20 6F 66 20    ..   variety of 
010650:  20 67 61 6D 65 73 20 20 61 6E 64 20 20 75 74 69     games  and  uti
010660:  6C 69 74 69 65 73 2E 20 20 20 4D 6F 73 74 20 20    lities.   Most  
010670:  6F 66 20 20 74 68 65 20 20 64 69 73 63 73 20 20    of  the  discs  
010680:  68 61 76 65 20 20 73 6F 6D 65 74 68 69 6E 67 0D    have  something.
010690:  0A 20 20 20 65 6E 74 65 72 74 61 69 6E 69 6E 67    .   entertaining
0106A0:  20 6F 6E 2C 20 65 76 65 6E 20 69 66 20 69 74 20     on, even if it 
0106B0:  69 73 6E 27 74 20 20 61 6C 6C 20 20 66 69 72 73    isn't  all  firs
0106C0:  74 20 20 63 6C 61 73 73 2E 20 20 54 68 65 20 6F    t  class.  The o
0106D0:  6E 6C 79 20 70 72 6F 62 6C 65 6D 20 69 66 0D 0A    nly problem if..
0106E0:  20 20 20 79 6F 75 20 61 72 65 20 61 20 34 36 34       you are a 464
0106F0:  20 75 73 65 72 20 6C 69 6B 65 20 6D 65 20 69 73     user like me is
010700:  35 35 2C 30 0D 0A 20 20 20 36 33 35 20 44 41 54    55,0..   635 DAT
010710:  41 20 26 39 30 2C 37 31 2C 37 30 2C 26 39 31 2C    A &90,71,70,&91,
010720:  35 35 2C 36 35 2C 36 32 2C 36 35 2C 2D 32 0D 0A    55,65,62,65,-2..
010730:  20 20 20 36 34 30 20 44 41 54 41 20 26 39 30 2C       640 DATA &90,
010740:  37 31 2C 30 2C 26 39 31 2C 35 35 2C 30 2C 36 32    71,0,&91,55,0,62
010750:  2C 30 0D 0A 20 20 20 36 34 35 20 44 41 54 41 20    ,0..   645 DATA 
010760:  26 39 30 2C 37 33 2C 36 30 2C 26 39 31 2C 35 37    &90,73,60,&91,57
010770:  2C 36 35 2C 36 34 2C 37 30 2C 2D 32 0D 0A 20 20    ,65,64,70,-2..  
010780:  20 36 35 30 20 44 41 54 41 20 26 39 30 2C 37 33     650 DATA &90,73
010790:  2C 30 2C 36 39 2C 35 30 2C 26 41 31 2C 35 37 2C    ,0,69,50,&A1,57,
0107A0:  36 30 2C 26 41 31 2C 36 34 2C 36 35 2C 2D 32 0D    60,&A1,64,65,-2.
0107B0:  0A 20 20 20 36 36 30 20 44 41 54 41 20 26 39 30    .   660 DATA &90
0107C0:  2C 36 39 2C 30 2C 26 39 31 2C 35 37 2C 30 2C 36    ,69,0,&91,57,0,6
0107D0:  34 2C 30 0D 0A 20 20 20 36 36 35 20 44 41 54 41    4,0..   665 DATA
0107E0:  20 26 39 30 2C 37 31 2C 34 30 2C 26 39 31 2C 35     &90,71,40,&91,5
0107F0:  32 2C 34 30 2C 36 37 2C 34 30 2C 2D 36 0D 0A 20    2,40,67,40,-6.. 
010800:  20 20 36 37 30 20 44 41 54 41 20 26 39 30 2C 37      670 DATA &90,7
010810:  31 2C 30 2C 26 39 31 2C 35 32 2C 30 2C 36 37 2C    1,0,&91,52,0,67,
010820:  30 2C 2D 31 30 30 0D 0A 0D 0A 0D 0A 0D 0A 20 20    0,-100........  
010830:  20 54 41 42 4C 45 20 31 3A 20 4D 49 44 49 20 69     TABLE 1: MIDI i
010840:  6E 74 65 72 66 61 63 65 20 70 6F 72 74 20 61 64    nterface port ad
010850:  64 72 65 73 73 65 73 0D 0A 0D 0A 20 20 20 20 20    dresses....     
010860:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
010870:  20 20 20 20 20 20 20 20 52 41 4D 20 20 20 20 20            RAM     
010880:  45 4D 52 20 20 20 20 20 44 48 43 50 0D 0A 20 20    EMR     DHCP..  
010890:  20 73 74 61 74 75 73 20 28 72 65 61 64 20 6F 6E     status (read on
0108A0:  6C 79 29 20 20 20 20 20 20 20 20 26 46 38 45 45    ly)        &F8EE
0108B0:  20 20 20 26 46 38 46 32 20 20 20 26 46 38 45 30       &F8F2   &F8E0
0108C0:  0D 0A 20 20 20 63 6F 6E 74 72 6F 6C 20 28 77 72    ..   control (wr
0108D0:  69 74 65 20 6F 6E 6C 79 29 20 20 20 20 20 20 26    ite only)      &
0108E0:  46 38 45 43 20 20 20 26 46 38 46 32 20 20 20 26    F8EC   &F8F2   &
0108F0:  46 38 45 30 0D 0A 20 20 20 64 61 74 61 20 72 65    F8E0..   data re
010900:  6E 74 20 61 6E 64 20 6C 65 74 20 75 73 20 6B 6E    nt and let us kn
010910:  6F 77 2E 20 20 20 49 6E 20 20 66 61 63 74 2C 20    ow.   In  fact, 
010920:  77 72 69 74 65 20 69 6E 20 77 69 74 68 20 61 6E    write in with an
010930:  79 20 73 75 67 67 65 73 74 69 6F 6E 73 0D 0A 20    y suggestions.. 
010940:  20 20 6F 6E 20 77 68 61 74 20 79 6F 75 20 77 6F      on what you wo
010950:  75 6C 64 20 6C 69 6B 65 20 75 73 20 74 6F 20 63    uld like us to c
010960:  6F 76 65 72 20 20 69 6E 20 50 72 6F 67 72 61 6D    over  in Program
010970:  6D 65 72 73 27 20 50 61 74 63 68 2C 20 61 6E 64    mers' Patch, and
010980:  20 77 65 20 77 69 6C 6C 20 73 65 65 0D 0A 20 20     we will see..  
010990:  20 77 68 61 74 20 77 65 20 63 61 6E 20 64 6F 21     what we can do!
0109A0:  0D 0A 0D 0A 0D 0A 20 20 20 55 53 45 46 55 4C 20    ......   USEFUL 
0109B0:  42 4F 4F 4B 53 0D 0A 0D 0A 20 20 20 50 72 61 63    BOOKS....   Prac
0109C0:  74 69 63 61 6C 20 4D 49 44 49 20 68 61 6E 64 62    tical MIDI handb
0109D0:  6F 6F 6B 2C 20 62 79 20 52 2E 41 2E 20 50 65 6E    ook, by R.A. Pen
0109E0:  66 6F 6C 64 2C 20 33 72 64 20 65 64 2E 2C 20 50    fold, 3rd ed., P
0109F0:  43 20 50 75 62 6C 69 73 68 69 6E 67 2C 20 31 39    C Publishing, 19
010A00:  39 35 0D 0A 20 20 20 49 53 42 4E 20 31 2D 38 37    95..   ISBN 1-87
010A10:  30 37 37 35 2D 33 36 2D 38 0D 0A 20 20 20 41 20    0775-36-8..   A 
010A20:  67 6F 6F 64 20 67 65 6E 65 72 61 6C 20 69 6E 74    good general int
010A30:  72 6F 64 75 63 74 69 6F 6E 20 74 6F 20 61 6C 6C    roduction to all
010A40:  20 20 61 73 70 65 63 74 73 20 20 6F 66 20 4D 49      aspects  of MI
010A50:  44 49 2E 20 20 50 65 72 68 61 70 73 20 67 65 61    DI.  Perhaps gea
010A60:  72 65 64 20 6D 6F 72 65 0D 0A 20 20 20 74 6F 77    red more..   tow
010A70:  61 72 64 73 20 74 68 65 20 6D 75 73 69 63 69 61    ards the musicia
010A80:  6E 20 74 68 61 6E 20 20 74 68 65 20 20 63 6F 6D    n than  the  com
010A90:  70 75 74 65 72 20 20 75 73 65 72 2E 20 20 20 49    puter  user.   I
010AA0:  74 20 20 65 76 65 6E 20 20 6D 65 6E 74 69 6F 6E    t  even  mention
010AB0:  73 20 38 20 62 69 74 0D 0A 20 20 20 63 6F 6D 70    s 8 bit..   comp
010AC0:  75 74 65 72 73 2C 20 62 75 74 20 64 6F 6E 27 74    uters, but don't
010AD0:  20 62 65 6C 69 65 76 65 20 77 68 61 74 20 20 69     believe what  i
010AE0:  74 20 20 73 61 79 73 20 20 61 62 6F 75 74 20 74    t  says  about t
010AF0:  68 65 20 41 72 63 68 69 6D 65 64 65 73 20 62 65    he Archimedes be
010B00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
010B10:  0E 00 01 00 02 09 4E E5 0E 00 C9 02 00 00 00 02    ......N.........
010B20:  0E 00 C5 02 00 00 00 02 0E 00 C1 02 00 00 00 02    ................
010B30:  0E 00 C6 02 00 00 00 02 0E 00 C2 02 00 00 00 02    ................
010B40:  0E 00 C7 02 00 00 00 02 0E 00 C3 02 00 00 00 02    ................
010B50:  0E 00 C8 02 00 00 00 02 0E 00 C4 02 00 00 00 02    ................
010B60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010C00:  75 20 63 61 6E 20 6D 61 6B 65 20 74 68 65 20 46    u can make the F
010C10:  52 41 4D 45 0D 0A 20 20 20 63 6F 6D 6D 61 6E 64    RAME..   command
010C20:  20 64 6F 20 61 6E 79 74 68 69 6E 67 20 79 6F 75     do anything you
010C30:  20 6C 69 6B 65 20 73 69 6D 70 6C 79 20 62 79 20     like simply by 
010C40:  70 61 74 63 68 69 6E 67 20 74 68 65 20 26 42 44    patching the &BD
010C50:  31 39 20 76 65 63 74 6F 72 21 0D 0A 0D 0A 20 20    19 vector!....  
010C60:  20 43 4C 45 41 52 20 49 4E 50 55 54 0D 0A 20 20     CLEAR INPUT..  
010C70:  20 20 20 54 68 65 72 65 20 61 72 65 20 76 61 72       There are var
010C80:  69 6F 75 73 20 77 61 79 73 20 6F 66 20 63 6C 65    ious ways of cle
010C90:  61 72 69 6E 67 20 74 68 65 20 20 6B 65 79 62 6F    aring the  keybo
010CA0:  61 72 64 20 62 75 66 66 65 72 2E 20 20 54 68 65    ard buffer.  The
010CB0:  20 6F 6E 65 20 49 20 6C 69 6B 65 0D 0A 20 20 20     one I like..   
010CC0:  74 6F 20 75 73 65 20 69 73 0D 0A 0D 0A 20 20 20    to use is....   
010CD0:  20 20 57 48 49 4C 45 20 49 4E 4B 45 59 24 3C 3E      WHILE INKEY$<>
010CE0:  22 22 3A 57 45 4E 44 0D 0A 0D 0A 20 20 20 62 75    "":WEND....   bu
010CF0:  74 20 79 6F 75 20 6D 61 79 20 77 61 6E 74 20 73    t you may want s
010D00:  6F 6D 65 74 68 69 6E 67 20 73 68 6F 72 74 65 72    omething shorter
010D10:  2C 20 69 6E 20 20 77 68 69 63 68 20 63 61 73 65    , in  which case
010D20:  20 74 72 79 20 43 41 4C 4C 20 26 42 42 30 33 20     try CALL &BB03 
010D30:  69 6E 73 74 65 61 64 2E 0D 0A 20 20 20 54 68 69    instead...   Thi
010D40:  73 20 63 61 6C 6C 20 68 61 73 20 74 68 65 20 73    s call has the s
010D50:  69 64 65 20 65 66 66 65 63 74 20 20 6F 66 20 72    ide effect  of r
010D60:  65 73 65 74 74 69 6E 67 20 74 68 65 20 65 78 70    esetting the exp
010D70:  61 6E 73 69 6F 6E 20 63 68 61 72 61 63 74 65 72    ansion character
010D80:  73 2E 20 20 46 6F 72 0D 0A 20 20 20 65 78 61 6D    s.  For..   exam
010D90:  70 6C 65 2C 20 69 66 20 79 6F 75 20 68 61 76 65    ple, if you have
010DA0:  20 61 20 20 64 69 73 63 20 20 64 72 69 76 65 20     a  disc  drive 
010DB0:  20 61 6E 64 20 20 50 72 6F 74 65 78 74 20 20 6F     and  Protext  o
010DC0:  6E 20 52 4F 4D 2C 20 43 54 52 4C 2B 45 4E 54 45    n ROM, CTRL+ENTE
010DD0:  52 20 77 69 6C 6C 0D 0A 20 20 20 70 72 6F 64 75    R will..   produ
010DE0:  63 65 20 52 55 4E 22 44 49 53 43 2C 20 62 75 74    ce RUN"DISC, but
010DF0:  20 61 66 74 65 72 20 63 61 6C 6C 69 6E 67 20 26     after calling &
010E00:  74 68 65 20 65 78 74 72 61 0D 0A 20 20 20 42 41    the extra..   BA
010E10:  53 49 43 20 31 2E 31 20 63 6F 6D 6D 61 6E 64 73    SIC 1.1 commands
010E20:  20 64 69 73 70 6C 61 79 65 64 20 63 6F 72 72 65     displayed corre
010E30:  63 74 6C 79 21 20 20 59 6F 75 20 63 61 6E 20 74    ctly!  You can t
010E40:  68 65 6E 20 67 6F 20 74 68 72 6F 75 67 68 20 61    hen go through a
010E50:  6E 64 20 61 6C 74 65 72 0D 0A 20 20 20 74 68 65    nd alter..   the
010E60:  73 65 20 6C 69 6E 65 73 20 73 6F 20 74 68 61 74    se lines so that
010E70:  20 74 68 65 79 20 77 6F 72 6B 20 6F 6E 20 20 74     they work on  t
010E80:  68 65 20 20 34 36 34 2C 20 74 79 70 69 6E 67 20    he  464, typing 
010E90:  7C 53 43 41 4E 20 66 72 6F 6D 20 74 69 6D 65 20    |SCAN from time 
010EA0:  74 6F 20 74 69 6D 65 0D 0A 20 20 20 74 6F 20 73    to time..   to s
010EB0:  65 65 20 69 66 20 74 68 65 72 65 20 61 72 65 20    ee if there are 
010EC0:  61 6E 79 20 6D 6F 72 65 20 6C 65 66 74 2E 20 20    any more left.  
010ED0:  20 52 65 6D 65 6D 62 65 72 20 74 68 61 74 20 79     Remember that y
010EE0:  6F 75 20 77 69 6C 6C 20 6E 6F 74 20 62 65 20 61    ou will not be a
010EF0:  62 6C 65 20 74 6F 0D 0A 20 20 20 75 73 65 20 45    ble to..   use E
010F00:  44 49 54 20 69 66 20 74 68 65 72 65 20 69 73 20    DIT if there is 
010F10:  61 20 42 41 53 49 43 20 31 2E 31 20 20 63 6F 6D    a BASIC 1.1  com
010F20:  6D 61 6E 64 20 20 69 6E 20 74 68 65 20 6C 69 6E    mand  in the lin
010F30:  65 2E 20 20 55 73 65 20 7C 53 43 41 4E 20 74 6F    e.  Use |SCAN to
010F40:  20 6C 69 73 74 0D 0A 20 20 20 74 68 65 20 6C 69     list..   the li
010F50:  6E 65 2C 20 61 6E 64 20 74 68 65 6E 20 74 79 70    ne, and then typ
010F60:  65 20 61 20 72 65 70 6C 61 63 65 6D 65 6E 74 20    e a replacement 
010F70:  73 74 72 61 69 67 68 74 20 69 6E 74 6F 20 74 68    straight into th
010F80:  65 20 6D 61 63 68 69 6E 65 2E 0D 0A 0D 0A 20 20    e machine.....  
010F90:  20 20 20 54 68 65 20 7C 4C 49 53 54 20 63 6F 6D       The |LIST com
010FA0:  6D 61 6E 64 20 6C 69 73 74 73 20 61 6C 6C 20 6F    mand lists all o
010FB0:  66 20 20 74 68 65 20 20 6C 69 6E 65 73 20 74 6F    f  the  lines to
010FC0:  20 74 68 65 20 73 63 72 65 65 6E 2C 20 64 69 73     the screen, dis
010FD0:  70 6C 61 79 69 6E 67 20 74 68 65 0D 0A 20 20 20    playing the..   
010FE0:  65 78 74 72 61 20 31 2E 31 20 63 6F 6D 6D 61 6E    extra 1.1 comman
010FF0:  64 73 20 70 72 6F 70 65 72 6C 79 2E 20 20 50 65    ds properly.  Pe
011000:  20 20 74 68 61 74 20 20 73 6F 6D 65 20 20 6F 66      that  some  of
011010:  20 74 68 65 20 50 44 20 73 74 75 66 66 20 64 6F     the PD stuff do
011020:  65 73 6E 27 74 20 77 6F 72 6B 20 6F 6E 0D 0A 20    esn't work on.. 
011030:  20 20 74 68 65 20 43 50 43 20 34 36 34 2E 20 20      the CPC 464.  
011040:  49 66 20 69 74 20 72 65 71 75 69 72 65 73 20 31    If it requires 1
011050:  32 38 4B 20 6F 66 20 52 41 4D 2C 20 74 68 65 6E    28K of RAM, then
011060:  20 49 20 61 6D 20 61 6C 6C 20 72 69 67 68 74 2C     I am all right,
011070:  20 61 73 20 49 20 68 61 76 65 20 61 0D 0A 20 20     as I have a..  
011080:  20 64 6B 27 74 72 6F 6E 69 63 73 20 52 41 4D 20     dk'tronics RAM 
011090:  70 61 63 6B 2C 20 62 75 74 20 69 66 20 69 74 20    pack, but if it 
0110A0:  20 75 73 65 73 20 20 63 65 72 74 61 69 6E 20 20     uses  certain  
0110B0:  63 6F 6D 6D 61 6E 64 73 2C 20 74 68 65 6E 20 74    commands, then t
0110C0:  68 69 6E 67 73 20 67 65 74 20 61 0D 0A 20 20 20    hings get a..   
0110D0:  62 69 74 20 6D 6F 72 65 20 74 72 69 63 6B 79 2E    bit more tricky.
0110E0:  0D 0A 0D 0A 20 20 20 20 20 54 68 65 20 42 41 53    ....     The BAS
0110F0:  49 43 20 69 6E 20 74 68 65 20 34 36 34 20 69 73    IC in the 464 is
011100:  20 20 76 65 72 73 69 6F 6E 20 20 31 2E 30 2C 20      version  1.0, 
011110:  20 77 68 65 72 65 61 73 20 20 74 68 65 20 76 65     whereas  the ve
011120:  72 73 69 6F 6E 20 69 6E 20 74 68 65 20 36 36 34    rsion in the 664
011130:  2C 0D 0A 20 20 20 36 31 32 38 2C 20 61 6E 64 20    ,..   6128, and 
011140:  74 68 65 20 50 6C 75 73 20 6D 61 63 68 69 6E 65    the Plus machine
011150:  73 20 28 49 20 74 68 69 6E 6B 29 20 20 69 73 20    s (I think)  is 
011160:  20 42 41 53 49 43 20 31 2E 31 2E 20 20 54 68 69     BASIC 1.1.  Thi
011170:  73 20 61 64 64 73 20 61 20 66 65 77 20 6E 65 77    s adds a few new
011180:  0D 0A 20 20 20 63 6F 6D 6D 61 6E 64 73 20 74 6F    ..   commands to
011190:  20 42 41 53 49 43 2C 20 61 6E 64 20 61 6C 74 65     BASIC, and alte
0111A0:  72 73 20 68 6F 77 20 61 20 20 66 65 77 20 6F 74    rs how a  few ot
0111B0:  68 65 72 73 20 77 6F 72 6B 2E 20 20 4D 6F 73 74    hers work.  Most
0111C0:  20 6F 66 20 74 68 65 20 63 68 61 6E 67 65 73 0D     of the changes.
0111D0:  0A 20 20 20 61 72 65 20 69 6E 20 67 72 61 70 68    .   are in graph
0111E0:  69 63 73 20 63 6F 6D 6D 61 6E 64 73 2E 0D 0A 0D    ics commands....
0111F0:  0A 20 20 20 20 20 57 69 74 68 20 61 20 73 6D 61    .     With a sma
011200:  72 68 61 70 73 20 6D 6F 72 65 20 20 75 73 65 66    rhaps more  usef
011210:  75 6C 20 61 72 65 20 74 68 65 20 76 61 72 69 61    ul are the varia
011220:  6E 74 73 20 7C 4C 49 53 54 50 0D 0A 20 20 20 61    nts |LISTP..   a
011230:  6E 64 20 7C 4C 49 53 54 46 2E 20 20 54 68 65 20    nd |LISTF.  The 
011240:  66 6F 72 6D 65 72 20 6C 69 73 74 73 20 74 68 65    former lists the
011250:  20 77 68 6F 6C 65 20 20 70 72 6F 67 72 61 6D 20     whole  program 
011260:  74 6F 20 74 68 65 20 70 72 69 6E 74 65 72 20 69    to the printer i
011270:  6E 73 74 65 61 64 20 6F 66 0D 0A 20 20 20 74 68    nstead of..   th
011280:  65 20 73 63 72 65 65 6E 2C 20 61 6E 64 20 74 68    e screen, and th
011290:  65 20 6C 61 74 74 65 72 20 6C 69 73 74 73 20 74    e latter lists t
0112A0:  6F 20 61 20 66 69 6C 65 2E 20 20 46 6F 72 20 65    o a file.  For e
0112B0:  78 61 6D 70 6C 65 3A 0D 0A 0D 0A 20 20 20 20 20    xample:....     
0112C0:  61 24 3D 22 66 69 6C 65 6E 61 6D 65 22 3A 7C 4C    a$="filename":|L
0112D0:  49 53 54 46 2C 40 61 24 0D 0A 0D 0A 20 20 20 77    ISTF,@a$....   w
0112E0:  6F 75 6C 64 20 6C 69 73 74 20 74 68 65 20 77 68    ould list the wh
0112F0:  6F 6C 65 20 70 72 6F 67 72 61 6D 20 74 6F 20 61    ole program to a
011300:  20 66 69 6C 65 20 63 61 6C 6C 65 64 20 22 66 69     file called "fi
011310:  6C 65 6E 61 6D 65 22 20 28 73 69 6C 6C 79 20 6E    lename" (silly n
011320:  61 6D 65 20 66 6F 72 20 61 0D 0A 20 20 20 66 69    ame for a..   fi
011330:  6C 65 29 2E 20 20 59 6F 75 20 63 6F 75 6C 64 20    le).  You could 
011340:  74 68 65 6E 20 6C 6F 61 64 20 74 68 65 20 66 69    then load the fi
011350:  6C 65 20 20 69 6E 74 6F 20 20 61 6E 20 65 64 69    le  into  an edi
011360:  74 6F 72 20 6C 69 6B 65 20 50 72 6F 74 65 78 74    tor like Protext
011370:  20 61 6E 64 20 75 73 65 0D 0A 20 20 20 74 68 65     and use..   the
011380:  20 73 65 61 72 63 68 20 61 6E 64 20 72 65 70 6C     search and repl
011390:  61 63 65 20 66 61 63 69 6C 69 74 69 65 73 20 74    ace facilities t
0113A0:  6F 20 63 6F 72 72 65 63 74 20 74 68 65 20 6C 69    o correct the li
0113B0:  6E 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 49 20 68    nes.....     I h
0113C0:  61 76 65 20 61 6C 73 6F 20 70 72 6F 76 69 64 65    ave also provide
0113D0:  64 20 7C 53 43 41 4E 50 20 61 6E 64 20 7C 53 43    d |SCANP and |SC
0113E0:  41 4E 46 20 77 68 69 63 68 20 77 6F 72 6B 20 69    ANF which work i
0113F0:  6E 20 61 20 73 69 6D 69 6C 61 72 20 77 61 79 2E    n a similar way.
011400:  6C 6C 20 61 6D 6F 75 6E 74 20 6F 66 20 77 6F 72    ll amount of wor
011410:  6B 2C 20 20 6D 61 6E 79 20 20 6F 66 20 20 74 68    k,  many  of  th
011420:  65 73 65 20 20 42 41 53 49 43 20 31 2E 31 20 70    ese  BASIC 1.1 p
011430:  72 6F 67 72 61 6D 73 20 63 61 6E 20 62 65 0D 0A    rograms can be..
011440:  20 20 20 65 64 69 74 65 64 20 74 6F 20 72 75 6E       edited to run
011450:  20 6F 6E 20 61 20 34 36 34 2E 20 20 54 68 65 20     on a 464.  The 
011460:  20 6D 61 69 6E 20 20 70 72 6F 62 6C 65 6D 20 20     main  problem  
011470:  69 73 20 74 68 61 74 20 69 66 20 61 20 70 72 6F    is that if a pro
011480:  67 72 61 6D 20 63 6F 6E 74 61 69 6E 73 0D 0A 20    gram contains.. 
011490:  20 20 61 6E 79 20 6F 66 20 74 68 65 20 65 78 74      any of the ext
0114A0:  72 61 20 63 6F 6D 6D 61 6E 64 73 20 61 64 64 65    ra commands adde
0114B0:  64 20 20 69 6E 20 20 42 41 53 49 43 20 20 31 2E    d  in  BASIC  1.
0114C0:  31 2C 20 74 68 65 6E 20 79 6F 75 20 63 61 6E 6E    1, then you cann
0114D0:  6F 74 20 65 76 65 6E 20 6C 69 73 74 0D 0A 20 20    ot even list..  
0114E0:  20 74 68 65 20 6C 69 6E 65 73 20 6F 6E 20 61 20     the lines on a 
0114F0:  34 36 34 20 20 74 6F 20 20 73 65 65 20 20 77 68    464  to  see  wh
011500:  61 74 20 20 74 68 65 20 20 70 72 6F 62 6C 65 6D    at  the  problem
011510:  20 20 69 73 21 20 20 20 54 68 69 73 20 69 73 20      is!   This is 
011520:  62 65 63 61 75 73 65 20 74 68 65 0D 0A 20 20 20    because the..   
011530:  63 6F 6D 70 75 74 65 72 20 73 74 6F 72 65 73 20    computer stores 
011540:  79 6F 75 72 20 70 72 6F 67 72 61 6D 73 20 69 6E    your programs in
011550:  20 20 61 20 20 73 70 65 63 69 61 6C 20 20 77 61      a  special  wa
011560:  79 20 77 68 69 63 68 20 69 6E 76 6F 6C 76 65 73    y which involves
011570:  20 72 65 70 6C 61 63 69 6E 67 0D 0A 20 20 20 74     replacing..   t
011580:  68 65 20 63 6F 6D 6D 61 6E 64 73 20 77 69 74 68    he commands with
011590:  20 74 6F 6B 65 6E 73 2E 20 20 53 69 6E 63 65 20     tokens.  Since 
0115A0:  74 68 65 20 34 36 34 20 20 64 6F 65 73 20 6E 6F    the 464  does no
0115B0:  74 20 68 61 76 65 20 74 68 65 20 65 78 74 72 61    t have the extra
0115C0:  20 63 6F 6D 6D 61 6E 64 73 0D 0A 20 20 20 69 6E     commands..   in
0115D0:  20 42 41 53 49 43 20 31 2E 31 2C 20 69 74 20 68     BASIC 1.1, it h
0115E0:  61 73 20 6E 6F 20 69 64 65 61 20 77 68 61 74 20    as no idea what 
0115F0:  74 68 65 20 74 6F 6B 65 6E 73 20 6D 65 61 6E 20    the tokens mean 
011600:  0D 0A 0D 0A 20 20 20 20 20 54 68 69 73 20 70 72    ....     This pr
011610:  6F 67 72 61 6D 20 6F 6E 6C 79 20 77 6F 72 6B 73    ogram only works
011620:  20 6F 6E 20 74 68 65 20 34 36 34 20 20 62 79 20     on the 464  by 
011630:  20 74 68 65 20 20 77 61 79 2E 20 20 20 49 66 20     the  way.   If 
011640:  79 6F 75 20 68 61 76 65 20 61 20 36 36 34 20 6F    you have a 664 o
011650:  72 0D 0A 20 20 20 36 31 32 38 2C 20 74 68 65 6E    r..   6128, then
011660:  20 20 74 68 65 72 65 20 20 69 73 20 20 61 6E 6F      there  is  ano
011670:  74 68 65 72 20 20 70 72 6F 67 72 61 6D 20 20 6F    ther  program  o
011680:  6E 20 20 74 68 65 20 20 50 72 6F 67 72 61 6D 6D    n  the  Programm
011690:  65 72 73 27 20 20 50 61 74 63 68 20 64 69 73 63    ers'  Patch disc
0116A0:  0D 0A 20 20 20 73 70 65 63 69 61 6C 6C 79 20 66    ..   specially f
0116B0:  6F 72 20 79 6F 75 2E 20 20 20 3C 3C 4A 75 73 74    or you.   <<Just
0116C0:  20 20 52 55 4E 22 53 43 41 4E 36 31 32 38 22 20      RUN"SCAN6128" 
0116D0:  20 74 6F 20 20 6C 6F 61 64 20 20 61 6E 64 20 20     to  load  and  
0116E0:  69 6E 73 74 61 6C 6C 20 74 68 65 20 52 53 58 0D    install the RSX.
0116F0:  0A 20 20 20 63 6F 6D 6D 61 6E 64 73 2E 3E 3E 20    .   commands.>> 
011700:  20 59 6F 75 20 63 61 6E 20 75 73 65 20 69 74 20     You can use it 
011710:  20 74 6F 20 20 69 64 65 6E 74 69 66 79 20 20 77     to  identify  w
011720:  68 69 63 68 20 6C 69 6E 65 73 20 77 69 6C 6C 20    hich lines will 
011730:  63 61 75 73 65 20 70 72 6F 62 6C 65 6D 73 0D 0A    cause problems..
011740:  20 20 20 66 6F 72 20 34 36 34 20 75 73 65 72 73       for 464 users
011750:  2C 20 61 6E 64 20 72 65 77 72 69 74 65 20 20 74    , and rewrite  t
011760:  68 65 6D 20 20 69 66 20 20 70 6F 73 73 69 62 6C    hem  if  possibl
011770:  65 2E 20 20 20 54 68 65 20 70 72 6F 67 72 61 6D    e.   The program
011780:  20 6F 6E 6C 79 20 68 61 73 20 74 68 65 0D 0A 20     only has the.. 
011790:  20 20 73 63 61 6E 6E 69 6E 67 20 63 6F 6D 6D 61      scanning comma
0117A0:  6E 64 73 2C 20 6E 6F 74 20 74 68 65 20 6C 69 73    nds, not the lis
0117B0:  74 69 6E 67 20 6F 6E 65 73 2C 20 20 61 6E 64 20    ting ones,  and 
0117C0:  6A 75 73 74 20 64 69 73 70 6C 61 79 73 20 74 68    just displays th
0117D0:  65 20 6E 75 6D 62 65 72 73 20 6F 66 0D 0A 20 20    e numbers of..  
0117E0:  20 74 68 65 20 6C 69 6E 65 73 20 74 68 61 74 20     the lines that 
0117F0:  77 6F 75 6C 64 20 6F 66 66 65 6E 64 20 20 61 20    would offend  a 
011800:  65 69 74 68 65 72 2E 0D 0A 0D 0A 20 20 20 49 27    either.....   I'
011810:  56 45 20 47 4F 54 20 41 20 4C 49 54 54 4C 45 20    VE GOT A LITTLE 
011820:  4C 49 53 54 0D 0A 20 20 20 20 20 54 6F 20 73 6F    LIST..     To so
011830:  6C 76 65 20 74 68 69 73 20 70 72 6F 62 6C 65 6D    lve this problem
011840:  2C 20 49 20 68 61 76 65 20 63 6F 6D 65 20 20 75    , I have come  u
011850:  70 20 77 69 74 68 20 61 20 6C 69 74 74 6C 65 20    p with a little 
011860:  70 72 6F 67 72 61 6D 2C 20 70 72 69 6E 74 65 64    program, printed
011870:  20 61 73 0D 0A 20 20 20 4C 69 73 74 69 6E 67 20     as..   Listing 
011880:  31 2E 20 20 41 63 74 75 61 6C 6C 79 20 69 74 20    1.  Actually it 
011890:  69 73 20 61 20 76 65 72 79 20 6C 6F 6E 67 20 20    is a very long  
0118A0:  70 72 6F 67 72 61 6D 2C 20 61 6E 64 20 73 6F 20    program, and so 
0118B0:  77 65 20 68 61 76 65 20 64 65 63 69 64 65 64 20    we have decided 
0118C0:  74 6F 0D 0A 20 20 20 63 6F 6D 70 69 6C 65 20 61    to..   compile a
0118D0:  20 73 70 65 63 69 61 6C 20 50 72 6F 67 72 61 6D     special Program
0118E0:  6D 65 72 73 27 20 50 61 74 63 68 20 50 44 20 64    mers' Patch PD d
0118F0:  69 73 63 2E 20 20 20 54 68 65 20 64 69 73 63 20    isc.   The disc 
011900:  77 69 6C 6C 20 68 61 76 65 20 61 6C 6C 20 74 68    will have all th
011910:  65 0D 0A 20 20 20 70 72 6F 67 72 61 6D 73 20 66    e..   programs f
011920:  72 6F 6D 20 74 68 65 20 73 65 72 69 65 73 20 6F    rom the series o
011930:  6E 20 20 69 74 2C 20 20 69 6E 63 6C 75 64 69 6E    n  it,  includin
011940:  67 20 20 74 68 69 73 20 20 6D 6F 6E 74 68 27 73    g  this  month's
011950:  2C 20 61 6E 64 20 61 20 66 65 77 20 6D 6F 72 65    , and a few more
011960:  0D 0A 20 20 20 62 65 73 69 64 65 73 2E 20 20 4F    ..   besides.  O
011970:  72 64 65 72 20 79 6F 75 72 20 63 6F 70 79 20 66    rder your copy f
011980:  72 6F 6D 20 44 61 76 65 20 20 53 74 69 74 73 6F    rom Dave  Stitso
011990:  6E 20 20 6E 6F 77 2E 20 20 3C 3C 54 68 65 20 76    n  now.  <<The v
0119A0:  65 72 73 69 6F 6E 20 73 61 76 65 64 20 6F 6E 0D    ersion saved on.
0119B0:  0A 20 20 20 74 68 65 20 64 69 73 63 20 69 73 20    .   the disc is 
0119C0:  61 20 76 65 72 73 69 6F 6E 20 6F 66 20 4C 69 73    a version of Lis
0119D0:  74 69 6E 67 20 31 20 6F 6D 69 74 74 69 6E 67 20    ting 1 omitting 
0119E0:  73 6F 6D 65 20 62 75 67 73 2C 20 61 6E 64 20 63    some bugs, and c
0119F0:  6F 6E 73 69 73 74 73 20 6F 66 20 74 68 65 0D 0A    onsists of the..
011A00:  20 34 36 34 2C 20 20 72 61 74 68 65 72 20 20 74     464,  rather  t
011A10:  68 61 6E 20 6C 69 73 74 69 6E 67 20 74 68 65 6D    han listing them
011A20:  2E 20 20 59 6F 75 20 68 61 76 65 0D 0A 20 20 20    .  You have..   
011A30:  79 6F 75 72 20 6F 77 6E 20 62 75 69 6C 74 20 69    your own built i
011A40:  6E 20 4C 49 53 54 20 63 6F 6D 6D 61 6E 64 20 74    n LIST command t
011A50:  6F 20 64 6F 20 74 68 61 74 21 0D 0A 0D 0A 20 20    o do that!....  
011A60:  20 51 55 49 43 4B 20 46 49 58 0D 0A 20 20 20 20     QUICK FIX..    
011A70:  20 48 61 76 69 6E 67 20 69 64 65 6E 74 69 66 69     Having identifi
011A80:  65 64 20 74 68 65 20 6C 69 6E 65 73 20 77 68 69    ed the lines whi
011A90:  63 68 20 20 77 69 6C 6C 20 20 63 61 75 73 65 20    ch  will  cause 
011AA0:  20 70 72 6F 62 6C 65 6D 73 2C 20 77 68 61 74 20     problems, what 
011AB0:  63 61 6E 20 77 65 20 64 6F 0D 0A 20 20 20 61 62    can we do..   ab
011AC0:  6F 75 74 20 74 68 65 6D 3F 20 20 54 68 65 72 65    out them?  There
011AD0:  20 69 73 6E 27 74 20 6D 75 63 68 20 73 70 61 63     isn't much spac
011AE0:  65 20 6C 65 66 74 20 20 74 68 69 73 20 6D 6F 6E    e left  this mon
011AF0:  74 68 2C 20 73 6F 20 77 65 27 6C 6C 20 64 65 61    th, so we'll dea
011B00:  6C 20 77 69 74 68 20 61 0D 0A 20 20 20 66 65 77    l with a..   few
011B10:  20 65 61 73 79 20 6F 6E 65 73 2E 0D 0A 0D 0A 20     easy ones..... 
011B20:  20 20 46 52 41 4D 45 0D 0A 20 20 20 20 20 54 68      FRAME..     Th
011B30:  69 73 20 63 6F 6D 6D 61 6E 64 20 63 61 6E 20 62    is command can b
011B40:  65 20 72 65 70 6C 61 63 65 64 20 20 77 69 74 68    e replaced  with
011B50:  20 20 43 41 4C 4C 20 20 26 42 44 31 39 2E 20 20      CALL  &BD19.  
011B60:  54 68 65 20 46 52 41 4D 45 20 63 6F 6D 6D 61 6E    The FRAME comman
011B70:  64 20 6A 75 73 74 0D 0A 20 20 20 70 6F 69 6E 74    d just..   point
011B80:  73 20 74 6F 20 74 68 65 20 26 42 44 31 39 20 76    s to the &BD19 v
011B90:  65 63 74 6F 72 2E 20 20 46 52 41 4D 45 20 69 73    ector.  FRAME is
011BA0:  20 20 69 6E 20 66 61 63 74 20 74 68 65 20 6F 6E      in fact the on
011BB0:  6C 79 20 42 41 53 49 43 20 63 6F 6D 6D 61 6E 64    ly BASIC command
011BC0:  20 74 68 61 74 0D 0A 20 20 20 68 61 73 20 69 74     that..   has it
011BD0:  73 20 65 78 65 63 75 74 69 6F 6E 20 61 64 64 72    s execution addr
011BE0:  65 73 73 20 69 6E 20 52 41 4D 2E 20 20 54 68 69    ess in RAM.  Thi
011BF0:  73 20 20 6D 65 61 6E 73 20 74 68 61 74 20 79 6F    s  means that yo
011C00:  20 20 20 66 69 6C 65 73 20 53 43 41 4E 34 36 34       files SCAN464
011C10:  2E 42 41 53 20 61 6E 64 20 53 43 41 4E 34 36 34    .BAS and SCAN464
011C20:  2E 42 49 4E 2E 20 20 4A 75 73 74 20 20 52 55 4E    .BIN.  Just  RUN
011C30:  22 53 43 41 4E 34 36 34 22 20 20 74 6F 20 69 6E    "SCAN464"  to in
011C40:  73 74 61 6C 6C 20 74 68 65 20 52 53 58 0D 0A 20    stall the RSX.. 
011C50:  20 20 63 6F 6D 6D 61 6E 64 73 2E 3E 3E 0D 0A 0D      commands.>>...
011C60:  0A 20 20 20 20 20 54 68 65 20 70 72 6F 67 72 61    .     The progra
011C70:  6D 20 69 6E 73 74 61 6C 6C 73 20 73 6F 6D 65 20    m installs some 
011C80:  52 53 58 20 63 6F 6D 6D 61 6E 64 73 2E 20 20 54    RSX commands.  T
011C90:  68 65 20 20 69 64 65 61 20 69 73 20 74 68 61 74    he  idea is that
011CA0:  20 79 6F 75 20 74 68 65 6E 20 6C 6F 61 64 0D 0A     you then load..
011CB0:  20 20 20 74 68 65 20 70 69 65 63 65 20 6F 66 20       the piece of 
011CC0:  42 41 53 49 43 20 77 68 69 63 68 20 77 69 6C 6C    BASIC which will
011CD0:  20 6E 6F 74 20 20 72 75 6E 20 20 6F 6E 20 74 68     not  run  on th
011CE0:  65 20 34 36 34 2C 20 61 6E 64 20 75 73 65 20 74    e 464, and use t
011CF0:  68 65 73 65 20 63 6F 6D 6D 61 6E 64 73 0D 0A 20    hese commands.. 
011D00:  20 20 74 6F 20 64 69 61 67 6E 6F 73 65 20 74 68      to diagnose th
011D10:  65 20 70 72 6F 62 6C 65 6D 2E 0D 0A 0D 0A 20 20    e problem.....  
011D20:  20 20 20 57 68 61 74 20 61 72 65 20 74 68 65 20       What are the 
011D30:  63 6F 6D 6D 61 6E 64 73 3F 20 20 41 20 73 75 6D    commands?  A sum
011D40:  6D 61 72 79 20 20 69 73 20 20 69 6E 20 20 74 68    mary  is  in  th
011D50:  65 20 62 6F 78 20 6D 61 72 6B 65 64 20 46 69 67    e box marked Fig
011D60:  75 72 65 20 31 2E 20 20 54 68 65 0D 0A 20 20 20    ure 1.  The..   
011D70:  6D 6F 73 74 20 75 73 65 66 75 6C 20 6F 6E 65 20    most useful one 
011D80:  69 73 20 7C 53 43 41 4E 2E 20 20 54 68 69 73 20    is |SCAN.  This 
011D90:  77 69 6C 6C 20 20 73 63 61 6E 20 74 68 65 20 70    will  scan the p
011DA0:  72 6F 67 72 61 6D 20 66 6F 72 20 6C 69 6E 65 73    rogram for lines
011DB0:  20 74 68 61 74 20 77 69 6C 6C 0D 0A 20 20 20 6E     that will..   n
011DC0:  6F 74 20 77 6F 72 6B 20 6F 6E 20 74 68 65 20 34    ot work on the 4
011DD0:  36 34 2C 20 61 6E 64 20 6C 69 73 74 73 20 74 68    64, and lists th
011DE0:  65 6D 20 74 6F 20 74 68 65 20 73 63 72 65 65 6E    em to the screen
011DF0:  2C 20 63 6F 6D 70 6C 65 74 65 20 77 69 74 68 20    , complete with 
011E00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
011E10:  0F 00 01 00 02 09 4E E5 0F 00 C3 02 00 00 00 02    ......N.........
011E20:  0F 00 C8 02 00 00 00 02 0F 00 C4 02 00 00 00 02    ................
011E30:  0F 00 C9 02 00 00 00 02 0F 00 C5 02 00 00 00 02    ................
011E40:  0F 00 C1 02 00 00 00 02 0F 00 C6 02 00 00 00 02    ................
011E50:  0F 00 C2 02 00 00 00 02 0F 00 C7 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:  20 35 30 20 50 4F 4B 45 20 61 64 64 72 2C 61 25     50 POKE addr,a%
011F10:  3A 63 68 6B 25 3D 63 68 6B 25 2B 61 25 3A 61 64    :chk%=chk%+a%:ad
011F20:  64 72 3D 61 64 64 72 2B 31 3A 4E 45 58 54 0D 0A    dr=addr+1:NEXT..
011F30:  20 36 30 20 49 46 20 63 68 6B 25 3C 3E 56 41 4C     60 IF chk%<>VAL
011F40:  28 22 26 22 2B 52 49 47 48 54 24 28 63 6F 64 24    ("&"+RIGHT$(cod$
011F50:  2C 33 29 29 20 54 48 45 4E 20 50 52 49 4E 54 22    ,3)) THEN PRINT"
011F60:  45 72 72 6F 72 20 69 6E 20 6C 69 6E 65 22 3B 69    Error in line";i
011F70:  25 2A 31 30 2B 31 30 30 3A 65 72 3D 2D 31 0D 0A    %*10+100:er=-1..
011F80:  20 37 30 20 4E 45 58 54 3A 49 46 20 65 72 20 54     70 NEXT:IF er T
011F90:  48 45 4E 20 45 4E 44 0D 0A 20 38 30 20 43 41 4C    HEN END.. 80 CAL
011FA0:  4C 20 26 39 30 30 30 0D 0A 20 39 30 20 50 52 49    L &9000.. 90 PRI
011FB0:  4E 54 22 4D 61 63 68 69 6E 65 20 63 6F 64 65 20    NT"Machine code 
011FC0:  69 6E 73 74 61 6C 6C 65 64 22 0D 0A 20 31 30 30    installed".. 100
011FD0:  20 44 41 54 41 20 30 31 30 44 39 30 32 31 30 39     DATA 010D902109
011FE0:  39 30 43 33 44 31 42 43 30 30 30 30 30 30 33 41    90C3D1BC0000003A
011FF0:  38 0D 0A 20 31 31 30 20 44 41 54 41 20 30 30 32    8.. 110 DATA 002
012000:  31 39 30 43 33 33 45 39 30 43 33 34 33 39 30 43    190C33E90C34390C
012010:  33 34 38 39 30 35 37 33 0D 0A 20 31 32 30 20 44    34890573.. 120 D
012020:  41 54 41 20 43 33 35 33 39 30 43 33 35 38 39 30    ATA C35390C35890
012030:  43 33 35 44 39 30 35 33 34 33 34 31 35 44 38 0D    C35D905343415D8.
012040:  0A 20 31 33 30 20 44 41 54 41 20 43 45 35 33 34    . 130 DATA CE534
012050:  33 34 31 34 45 43 36 35 33 34 33 34 31 34 45 44    3414EC65343414ED
012060:  30 34 43 34 46 41 0D 0A 20 31 34 30 20 44 41 54    04C4FA.. 140 DAT
012070:  41 20 34 39 35 33 44 34 34 43 34 39 35 33 35 34    A 4953D44C495354
012080:  43 36 34 43 34 39 35 33 35 34 34 41 45 0D 0A 20    C64C4953544AE.. 
012090:  31 35 30 20 44 41 54 41 20 44 30 30 30 43 44 39    150 DATA D000CD9
0120A0:  36 39 30 31 38 30 38 43 44 41 41 39 30 31 38 30    6901808CDAA90180
0120B0:  33 35 30 35 0D 0A 20 31 36 30 20 44 41 54 41 20    3505.. 160 DATA 
0120C0:  43 44 39 42 39 30 32 31 35 31 39 31 32 32 39 32    CD9B902151912292
0120D0:  39 30 31 38 32 30 43 44 35 34 34 0D 0A 20 31 37    901820CD544.. 17
0120E0:  30 20 44 41 54 41 20 39 36 39 30 31 38 30 38 43    0 DATA 96901808C
0120F0:  44 41 41 39 30 31 38 30 33 43 44 39 42 39 30 35    DAA901803CD9B905
012100:  30 38 35 45 32 33 35 36 32 33 45 35 45 42 31 38    085E235623E5EB18
012110:  45 41 35 31 30 0D 0A 20 37 31 30 20 44 41 54 41    EA510.. 710 DATA
012120:  20 46 45 31 42 32 30 32 37 33 45 32 36 43 44 45     FE1B20273E26CDE
012130:  43 39 30 33 45 35 38 43 44 35 37 30 0D 0A 20 37    C903E58CD570.. 7
012140:  32 30 20 44 41 54 41 20 45 43 39 30 35 45 32 33    20 DATA EC905E23
012150:  35 36 32 33 30 45 30 30 30 36 30 38 43 44 35 33    56230E000608CD53
012160:  33 42 32 0D 0A 20 37 33 30 20 44 41 54 41 20 39    3B2.. 730 DATA 9
012170:  34 30 36 30 37 35 33 43 44 35 33 39 34 41 46 43    4060753CD5394AFC
012180:  42 31 32 31 37 43 36 35 31 31 0D 0A 20 37 34 30    B1217C6511.. 740
012190:  20 44 41 54 41 20 33 30 43 44 45 43 39 30 43 33     DATA 30CDEC90C3
0121A0:  36 44 39 32 46 45 31 43 32 30 32 39 33 45 35 44    6D92FE1C20293E5D
0121B0:  43 0D 0A 20 37 35 30 20 44 41 54 41 20 32 36 43    C.. 750 DATA 26C
0121C0:  44 45 43 39 30 30 45 30 30 41 46 32 33 45 44 36    DEC900E00AF23ED6
0121D0:  46 43 44 36 36 35 44 45 0D 0A 20 37 36 30 20 44    FCD665DE.. 760 D
0121E0:  41 54 41 20 39 34 45 44 36 46 43 44 36 36 39 34    ATA 94ED6FCD6694
0121F0:  45 44 36 46 32 42 45 44 36 46 43 44 37 36 37 0D    ED6F2BED6FCD767.
012200:  0A 20 37 37 30 20 44 41 54 41 20 36 36 39 34 45    . 770 DATA 6694E
012210:  44 36 46 30 45 32 30 43 44 36 36 39 34 45 44 36    D6F0E20CD6694ED6
012220:  46 32 33 35 43 41 0D 0A 20 37 38 30 20 44 41 54    F235CA.. 780 DAT
012230:  41 20 32 33 43 33 36 44 39 32 46 45 31 44 32 30    A 23C36D92FE1D20
012240:  31 30 35 45 32 33 35 36 32 33 34 32 41 0D 0A 20    105E23562342A.. 
012250:  37 39 30 20 44 41 54 41 20 45 35 45 42 32 33 32    790 DATA E5EB232
012260:  33 32 33 35 45 32 33 35 36 45 42 43 33 43 36 39    3235E2356EBC3C69
012270:  32 36 31 36 0D 0A 20 38 30 30 20 44 41 54 41 20    2616.. 800 DATA 
012280:  46 45 31 46 32 30 32 35 31 31 43 32 42 30 30 31    FE1F202511C2B001
012290:  30 35 30 30 45 44 42 30 34 38 38 0D 0A 20 38 31    0500EDB0488.. 81
0122A0:  30 20 44 41 54 41 20 33 45 30 35 33 32 43 31 42    0 DATA 3E0532C1B
0122B0:  30 45 35 30 45 30 30 43 44 30 46 42 39 43 35 35    0E50E00CD0FB9C55
0122C0:  33 33 0D 0A 20 38 32 30 20 44 41 54 41 20 43 44    33.. 820 DATA CD
0122D0:  39 44 45 45 43 31 43 44 31 38 42 39 32 31 35 45    9DEEC1CD18B9215E
0122E0:  41 45 43 44 37 42 37 32 43 0D 0A 20 38 33 30 20    AECD7B72C.. 830 
0122F0:  44 41 54 41 20 39 34 45 31 43 33 36 44 39 32 46    DATA 94E1C36D92F
012300:  36 30 0D 0A 20 31 38 30 20 44 41 54 41 20 32 31    60.. 180 DATA 21
012310:  35 46 39 32 32 32 39 32 39 30 31 38 30 42 33 45    5F92229290180B3E
012320:  34 32 30 36 46 43 33 46 42 0D 0A 20 31 39 30 20    4206FC3FB.. 190 
012330:  44 41 54 41 20 43 44 32 37 42 42 30 30 43 33 38    DATA CD27BB00C38
012340:  46 42 43 32 41 45 39 39 34 35 45 32 33 35 45 35    FBC2AE9945E235E5
012350:  0D 0A 20 32 30 30 20 44 41 54 41 20 35 36 32 42    .. 200 DATA 562B
012360:  37 41 42 33 32 38 45 41 45 35 31 39 32 32 45 39    7AB328EAE51922E9
012370:  39 34 45 31 36 33 45 0D 0A 20 32 31 30 20 44 41    94E163E.. 210 DA
012380:  54 41 20 32 33 32 33 35 45 32 33 35 36 32 33 45    TA 23235E235623E
012390:  44 35 33 45 35 39 34 32 32 45 37 35 30 32 0D 0A    D53E59422E7502..
0123A0:  20 32 32 30 20 44 41 54 41 20 39 34 43 44 35 46     220 DATA 94CD5F
0123B0:  39 32 31 38 44 44 32 31 32 42 39 31 31 38 30 33    9218DD212B911803
0123C0:  32 31 34 36 30 0D 0A 20 32 33 30 20 44 41 54 41    21460.. 230 DATA
0123D0:  20 45 46 39 30 43 44 43 45 39 30 32 32 45 44 39     EF90CDCE9022ED9
0123E0:  30 33 45 43 39 33 32 36 46 36 46 31 0D 0A 20 32    03EC9326F6F1.. 2
0123F0:  34 30 20 44 41 54 41 20 39 30 43 39 43 44 43 45    40 DATA 90C9CDCE
012400:  39 30 32 31 34 38 39 31 32 32 45 44 39 30 33 44    9021489122ED903D
012410:  36 35 41 0D 0A 20 32 35 30 20 44 41 54 41 20 32    65A.. 250 DATA 2
012420:  30 35 45 33 32 36 46 39 30 44 44 36 45 30 30 44    05E326F90DD6E00D
012430:  44 36 36 30 31 34 36 34 38 34 0D 0A 20 32 36 30    D660146484.. 260
012440:  20 44 41 54 41 20 32 33 35 45 32 33 35 36 45 42     DATA 235E2356EB
012450:  31 31 45 46 39 34 43 44 38 43 42 43 44 38 36 36    11EF94CD8CBCD866
012460:  36 0D 0A 20 32 37 30 20 44 41 54 41 20 31 38 34    6.. 270 DATA 184
012470:  36 44 31 43 31 45 44 37 33 45 44 39 34 43 35 44    6D1C1ED73ED94C5D
012480:  35 31 31 37 30 36 45 43 0D 0A 20 32 38 30 20 44    511706EC.. 280 D
012490:  41 54 41 20 30 31 45 44 35 33 45 39 39 34 46 35    ATA 01ED53E994F5
0124A0:  45 35 33 45 34 32 30 36 43 30 43 44 36 41 42 0D    E53E4206C0CD6AB.
0124B0:  0A 20 32 39 30 20 44 41 54 41 20 32 37 42 42 43    . 290 DATA 27BBC
0124C0:  44 34 38 42 42 45 31 46 31 43 39 43 33 45 46 39    D48BBE1F1C9C3EF9
0124D0:  30 43 35 38 35 34 0D 0A 20 33 30 30 20 44 41 54    0C5854.. 300 DAT
0124E0:  41 20 34 37 43 44 32 42 42 44 37 38 43 31 33 38    A 47CD2BBD78C138
0124F0:  33 36 46 35 43 44 38 41 42 42 36 41 41 0D 0A 20    36F5CD8ABB6AA.. 
012500:  45 32 32 32 30 30 39 43 44 45 43 39 30 36 43 39    E222009CDEC906C9
012510:  0D 0A 20 38 34 30 20 44 41 54 41 20 43 44 37 42    .. 840 DATA CD7B
012520:  39 34 43 33 36 44 39 32 46 45 37 43 33 30 30 36    94C36D92FE7C3006
012530:  43 44 45 43 37 30 37 0D 0A 20 38 35 30 20 44 41    CDEC707.. 850 DA
012540:  54 41 20 39 30 43 33 36 44 39 32 32 30 30 41 43    TA 90C36D92200AC
012550:  44 45 43 39 30 32 33 43 44 39 30 36 34 35 0D 0A    DEC9023CD90645..
012560:  20 38 36 30 20 44 41 54 41 20 39 34 43 33 36 44     860 DATA 94C36D
012570:  39 32 46 45 46 46 32 30 30 32 37 45 32 33 46 45    92FEFF20027E23FE
012580:  43 30 36 44 34 0D 0A 20 38 37 30 20 44 41 54 41    C06D4.. 870 DATA
012590:  20 32 30 31 30 33 45 32 37 43 44 45 43 39 30 37     20103E27CDEC907
0125A0:  45 42 37 43 41 36 44 39 32 35 44 43 0D 0A 20 38    EB7CA6D925DC.. 8
0125B0:  38 30 20 44 41 54 41 20 32 33 43 44 45 43 39 30    80 DATA 23CDEC90
0125C0:  31 38 46 35 46 45 43 35 32 30 30 41 45 35 32 31    18F5FEC5200AE521
0125D0:  36 36 43 0D 0A 20 38 39 30 20 44 41 54 41 20 31    66C.. 890 DATA 1
0125E0:  35 39 34 43 44 39 30 39 34 45 31 31 38 45 37 45    594CD9094E118E7E
0125F0:  35 32 31 31 46 39 34 36 33 33 0D 0A 20 39 30 30    5211F94633.. 900
012600:  20 44 41 54 41 20 42 45 32 33 33 38 31 33 32 30     DATA BE23381320
012610:  30 37 43 44 39 30 39 34 45 31 43 33 36 44 35 35    07CD9094E1C36D55
012620:  35 0D 0A 20 39 31 30 20 44 41 54 41 20 39 32 46    5.. 910 DATA 92F
012630:  35 37 45 32 33 45 36 38 30 32 38 46 41 46 31 31    57E23E68028FAF11
012640:  38 45 39 30 45 36 42 30 0D 0A 20 39 32 30 20 44    8E90E6B0.. 920 D
012650:  41 54 41 20 30 30 46 35 43 44 30 46 42 39 46 31    ATA 00F5CD0FB9F1
012660:  43 35 30 36 31 42 32 31 38 38 45 33 35 45 44 0D    C5061B2188E35ED.
012670:  0A 20 39 33 30 20 44 41 54 41 20 45 35 46 35 37    . 930 DATA E5F57
012680:  45 32 33 42 37 32 38 32 34 31 38 30 33 37 45 32    E23B7282418037E2
012690:  33 42 37 34 46 31 0D 0A 20 39 34 30 20 44 41 54    3B74F1.. 940 DAT
0126A0:  41 20 46 32 45 44 39 33 46 31 42 45 32 38 30 34    A F2ED93F1BE2804
0126B0:  44 31 32 33 31 38 45 39 37 38 36 42 41 0D 0A 20    D12318E9786BA.. 
0126C0:  39 35 30 20 44 41 54 41 20 43 36 33 46 46 45 34    950 DATA C63FFE4
0126D0:  30 43 34 45 43 39 30 45 31 43 44 39 30 39 34 43    0C4EC90E1CD9094C
0126E0:  31 38 31 36 0D 0A 20 39 36 30 20 44 41 54 41 20    1816.. 960 DATA 
0126F0:  43 44 31 38 42 39 45 31 43 33 36 44 39 32 46 31    CD18B9E1C36D92F1
012700:  33 31 30 20 44 41 54 41 20 43 44 31 42 42 42 33    310 DATA CD1BBB3
012710:  30 31 41 46 45 43 30 32 30 31 36 43 44 38 44 42    01AFEC02016CD8DB
012720:  42 35 46 36 0D 0A 20 33 32 30 20 44 41 54 41 20    B5F6.. 320 DATA 
012730:  32 31 35 41 42 42 32 32 45 44 39 30 32 31 31 38    215ABB22ED902118
012740:  39 34 43 44 39 30 39 34 35 39 33 0D 0A 20 33 33    94CD9094593.. 33
012750:  30 20 44 41 54 41 20 45 44 37 42 45 44 39 34 43    0 DATA ED7BED94C
012760:  33 36 38 39 30 43 44 32 45 42 44 33 38 44 43 37    36890CD2EBD38DC7
012770:  37 30 0D 0A 20 33 34 30 20 44 41 54 41 20 43 44    70.. 340 DATA CD
012780:  38 44 42 42 46 31 46 35 43 44 33 31 42 44 46 31    8DBBF1F5CD31BDF1
012790:  31 38 30 33 43 44 37 38 46 0D 0A 20 33 35 30 20    1803CD78F.. 350 
0127A0:  44 41 54 41 20 35 41 42 42 46 45 30 41 43 30 43    DATA 5ABBFE0AC0C
0127B0:  44 31 42 42 42 44 30 46 45 43 30 43 30 37 43 45    D1BBBD0FEC0C07CE
0127C0:  0D 0A 20 33 36 30 20 44 41 54 41 20 43 44 38 41    .. 360 DATA CD8A
0127D0:  42 42 43 44 31 38 42 42 46 35 43 44 38 44 42 42    BBCD18BBF5CD8DBB
0127E0:  46 31 46 45 38 41 42 0D 0A 20 33 37 30 20 44 41    F1FE8AB.. 370 DA
0127F0:  54 41 20 43 30 43 30 31 38 43 30 43 44 39 35 42    TA C0C018C0CD95B
012800:  43 44 38 43 44 39 32 42 43 31 38 37 38 31 0D 0A    CD8CD92BC18781..
012810:  20 33 38 30 20 44 41 54 41 20 43 33 45 44 37 33     380 DATA C3ED73
012820:  45 42 39 34 37 45 42 37 43 38 32 33 46 45 43 35    EB947EB7C823FEC5
012830:  43 38 38 34 44 0D 0A 20 33 39 30 20 44 41 54 41    C884D.. 390 DATA
012840:  20 46 45 43 30 43 38 46 45 38 36 32 30 30 41 43     FEC0C8FE86200AC
012850:  44 43 38 39 31 46 45 41 33 37 46 42 0D 0A 20 34    DC891FEA37FB.. 4
012860:  30 30 20 44 41 54 41 20 43 41 35 46 39 32 31 38    00 DATA CA5F9218
012870:  30 43 46 45 42 33 32 30 30 44 43 44 43 38 39 31    0CFEB3200DCDC891
012880:  35 45 33 0D 0A 20 34 31 30 20 44 41 54 41 20 46    5E3.. 410 DATA F
012890:  45 38 42 43 41 35 46 39 32 43 44 43 46 39 31 31    E8BCA5F92CDCF911
0128A0:  38 44 37 46 45 39 34 37 46 32 0D 0A 20 34 32 30    8D7FE947F2.. 420
0128B0:  20 44 41 54 41 20 32 38 30 43 46 45 39 35 32 38     DATA 280CFE9528
0128C0:  30 38 46 45 42 43 32 38 30 34 46 45 42 44 35 39    08FEBC2804FEBD59
0128D0:  38 0D 0A 20 34 33 30 20 44 41 54 41 20 32 30 30    8.. 430 DATA 200
0128E0:  42 43 44 43 46 39 31 37 39 46 45 30 34 44 32 35    BCDCF9179FE04D25
0128F0:  46 39 32 31 38 35 41 45 0D 0A 20 34 34 30 20 44    F92185AE.. 440 D
012900:  42 42 30 33 20 20 69 74 20 20 77 69 6C 6C 20 67    BB03  it  will g
012910:  6F 20 62 61 63 6B 20 74 6F 20 52 55 4E 22 2E 20    o back to RUN". 
012920:  20 54 68 69 73 0D 0A 20 20 20 6D 61 79 20 63 61     This..   may ca
012930:  75 73 65 20 70 72 6F 62 6C 65 6D 73 2C 20 6F 72    use problems, or
012940:  20 69 74 20 6D 61 79 20 6E 6F 74 2E 0D 0A 0D 0A     it may not.....
012950:  20 20 20 4F 4E 20 42 52 45 41 4B 20 43 4F 4E 54       ON BREAK CONT
012960:  0D 0A 20 20 20 20 20 54 68 69 73 20 69 73 20 65    ..     This is e
012970:  61 73 69 6C 79 20 72 65 70 6C 61 63 65 64 20 62    asily replaced b
012980:  79 20 4F 4E 20 42 52 45 41 4B 20 47 4F 53 55 42    y ON BREAK GOSUB
012990:  20 78 78 78 2C 20 77 68 65 72 65 20 78 78 78 20     xxx, where xxx 
0129A0:  69 73 20 61 20 6C 69 6E 65 20 77 68 69 63 68 0D    is a line which.
0129B0:  0A 20 20 20 73 69 6D 70 6C 79 20 73 61 79 73 20    .   simply says 
0129C0:  52 45 54 55 52 4E 2E 20 20 59 6F 75 20 6D 61 79    RETURN.  You may
0129D0:  20 6E 6F 74 20 77 61 6E 74 20 74 6F 20 6B 65 65     not want to kee
0129E0:  70 20 74 68 65 20 63 6F 6D 6D 61 6E 64 20 69 6E    p the command in
0129F0:  20 61 6E 79 77 61 79 2C 20 61 73 20 69 74 0D 0A     anyway, as it..
012A00:  20 20 20 73 74 6F 70 73 20 79 6F 75 20 66 72 6F       stops you fro
012A10:  6D 20 75 73 69 6E 67 20 74 68 65 20 65 73 63 61    m using the esca
012A20:  70 65 20 6B 65 79 20 74 6F 20 62 72 65 61 6B 20    pe key to break 
012A30:  69 6E 74 6F 20 74 68 65 20 70 72 6F 67 72 61 6D    into the program
012A40:  2E 0D 0A 0D 0A 20 20 20 41 4E 44 20 4E 45 58 54    .....   AND NEXT
012A50:  20 54 49 4D 45 2C 20 49 4E 20 45 50 49 53 4F 44     TIME, IN EPISOD
012A60:  45 20 54 57 4F 2E 2E 2E 0D 0A 20 20 20 20 20 4D    E TWO.....     M
012A70:  6F 73 74 20 6F 66 20 74 68 65 20 72 65 73 74 20    ost of the rest 
012A80:  6F 66 20 74 68 65 20 63 6F 6D 6D 61 6E 64 73 20    of the commands 
012A90:  20 72 65 6C 61 74 65 20 20 74 6F 20 67 72 61 70     relate  to grap
012AA0:  68 69 63 73 2C 20 61 6E 64 20 77 65 27 6C 6C 20    hics, and we'll 
012AB0:  6C 6F 6F 6B 20 61 74 0D 0A 20 20 20 74 68 65 6D    look at..   them
012AC0:  20 6E 65 78 74 20 6D 6F 6E 74 68 2E 20 20 43 61     next month.  Ca
012AD0:  6E 20 79 6F 75 20 77 61 69 74 20 74 68 61 74 20    n you wait that 
012AE0:  6C 6F 6E 67 3F 20 20 4A 75 61 6E 20 43 61 72 6C    long?  Juan Carl
012AF0:  6F 73 20 63 61 6E 2E 0D 0A 0D 0A 20 20 20 46 49    os can.....   FI
012B00:  41 54 41 20 42 43 46 45 41 45 32 38 30 34 46 45    ATA BCFEAE2804FE
012B10:  41 46 32 30 30 42 43 44 43 46 39 31 36 39 39 0D    AF200BCDCF91699.
012B20:  0A 20 34 35 30 20 44 41 54 41 20 37 39 46 45 30    . 450 DATA 79FE0
012B30:  33 44 32 35 46 39 32 31 38 41 39 46 45 42 42 32    3D25F9218A9FEBB2
012B40:  30 31 32 35 45 39 0D 0A 20 34 36 30 20 44 41 54    0125E9.. 460 DAT
012B50:  41 20 43 44 43 38 39 31 46 45 32 33 32 38 45 41    A CDC891FE2328EA
012B60:  43 44 43 46 39 31 37 39 46 45 37 46 44 0D 0A 20    CDCF9179FE7FD.. 
012B70:  34 37 30 20 44 41 54 41 20 30 32 44 32 35 46 39    470 DATA 02D25F9
012B80:  32 31 38 39 33 32 42 43 44 43 46 39 31 31 38 38    218932BCDCF91188
012B90:  44 35 36 44 0D 0A 20 34 38 30 20 44 41 54 41 20    D56D.. 480 DATA 
012BA0:  37 45 46 45 32 30 43 30 32 33 31 38 46 39 30 45    7EFE20C02318F90E
012BB0:  30 31 37 45 42 37 43 38 35 39 43 0D 0A 20 34 39    017EB7C859C.. 49
012BC0:  30 20 44 41 54 41 20 32 33 46 45 30 31 43 38 46    0 DATA 23FE01C8F
012BD0:  45 32 38 32 30 30 44 43 44 46 39 39 31 46 45 36    E28200DCDF991FE6
012BE0:  39 32 0D 0A 20 35 30 30 20 44 41 54 41 20 32 39    92.. 500 DATA 29
012BF0:  32 38 45 45 45 44 37 42 45 42 39 34 31 38 37 36    28EEED7BEB941876
012C00:  46 45 32 39 32 38 36 30 33 0D 0A 20 35 31 30 20    FE2928603.. 510 
012C10:  44 41 54 41 20 46 36 46 45 32 43 32 30 30 33 30    DATA F6FE2C20030
012C20:  43 31 38 44 44 43 44 31 31 39 32 31 38 34 43 43    C18DDCD1192184CC
012C30:  0D 0A 20 35 32 30 20 44 41 54 41 20 44 38 37 45    .. 520 DATA D87E
012C40:  42 37 43 38 46 45 30 31 43 38 32 33 46 45 32 39    B7C8FE01C823FE29
012C50:  43 38 46 45 37 41 43 0D 0A 20 35 33 30 20 44 41    C8FE7AC.. 530 DA
012C60:  54 41 20 32 38 32 30 30 35 43 44 46 39 39 31 31    TA 282005CDF9911
012C70:  38 45 44 43 44 31 31 39 32 31 38 35 33 31 0D 0A    8EDCD119218531..
012C80:  20 35 34 30 20 44 41 54 41 20 45 38 46 45 30 45     540 DATA E8FE0E
012C90:  33 30 30 36 32 33 32 33 43 44 38 39 39 34 43 39    30062323CD8994C9
012CA0:  46 45 36 32 31 0D 0A 20 35 35 30 20 44 41 54 41    FE621.. 550 DATA
012CB0:  20 31 38 44 38 32 33 46 45 31 39 43 38 32 33 46     18D823FE19C823F
012CC0:  45 31 46 44 38 32 30 30 34 35 32 45 0D 0A 20 35    E1FD8200452E.. 5
012CD0:  36 30 20 44 41 54 41 20 32 33 32 33 32 33 43 39    60 DATA 232323C9
012CE0:  32 42 32 42 46 45 32 32 32 30 30 33 43 33 37 32    2B2BFE222003C372
012CF0:  34 30 30 0D 0A 20 35 37 30 20 44 41 54 41 20 39    400.. 570 DATA 9
012D00:  47 55 52 45 20 31 0D 0A 0D 0A 20 20 20 7C 53 43    GURE 1....   |SC
012D10:  41 4E 20 2D 20 6C 69 73 74 20 74 6F 20 74 68 65    AN - list to the
012D20:  20 73 63 72 65 65 6E 20 6C 69 6E 65 73 20 74 68     screen lines th
012D30:  61 74 20 77 69 6C 6C 20 6E 6F 74 20 77 6F 72 6B    at will not work
012D40:  20 6F 6E 20 74 68 65 20 34 36 34 0D 0A 20 20 20     on the 464..   
012D50:  7C 53 43 41 4E 50 20 2D 20 64 69 74 74 6F 2C 20    |SCANP - ditto, 
012D60:  62 75 74 20 6C 69 73 74 69 6E 67 20 74 6F 20 74    but listing to t
012D70:  68 65 20 70 72 69 6E 74 65 72 0D 0A 20 20 20 7C    he printer..   |
012D80:  53 43 41 4E 46 2C 40 61 24 20 2D 20 73 61 6D 65    SCANF,@a$ - same
012D90:  20 61 67 61 69 6E 2C 20 62 75 74 20 73 61 76 69     again, but savi
012DA0:  6E 67 20 74 6F 20 74 68 65 20 66 69 6C 65 20 61    ng to the file a
012DB0:  24 0D 0A 0D 0A 20 20 20 7C 4C 49 53 54 20 2D 20    $....   |LIST - 
012DC0:  6C 69 73 74 20 74 68 65 20 77 68 6F 6C 65 20 70    list the whole p
012DD0:  72 6F 67 72 61 6D 20 74 6F 20 74 68 65 20 73 63    rogram to the sc
012DE0:  72 65 65 6E 0D 0A 20 20 20 7C 4C 49 53 54 50 20    reen..   |LISTP 
012DF0:  2D 20 64 69 74 74 6F 2C 20 62 75 74 20 6C 69 73    - ditto, but lis
012E00:  74 69 6E 67 20 74 6F 20 74 68 65 20 70 72 69 6E    ting to the prin
012E10:  74 65 72 0D 0A 20 20 20 7C 4C 49 53 54 46 2C 40    ter..   |LISTF,@
012E20:  61 24 20 2D 20 73 61 6D 65 20 61 67 61 69 6E 2C    a$ - same again,
012E30:  20 62 75 74 20 73 61 76 69 6E 67 20 74 6F 20 74     but saving to t
012E40:  68 65 20 66 69 6C 65 20 61 24 0D 0A 0D 0A 0D 0A    he file a$......
012E50:  0D 0A 20 4C 49 53 54 49 4E 47 20 31 0D 0A 0D 0A    .. LISTING 1....
012E60:  20 31 30 20 53 59 4D 42 4F 4C 20 41 46 54 45 52     10 SYMBOL AFTER
012E70:  20 32 35 36 3A 4D 45 4D 4F 52 59 20 26 38 46 46     256:MEMORY &8FF
012E80:  46 0D 0A 20 32 30 20 52 45 53 54 4F 52 45 20 31    F.. 20 RESTORE 1
012E90:  30 30 3A 65 72 3D 30 3A 61 64 64 72 3D 48 49 4D    00:er=0:addr=HIM
012EA0:  45 4D 2B 31 0D 0A 20 33 30 20 46 4F 52 20 69 25    EM+1.. 30 FOR i%
012EB0:  3D 30 20 54 4F 20 31 30 34 3A 52 45 41 44 20 63    =0 TO 104:READ c
012EC0:  6F 64 24 3A 63 68 6B 25 3D 30 0D 0A 20 34 30 20    od$:chk%=0.. 40 
012ED0:  46 4F 52 20 6A 25 3D 30 20 54 4F 20 31 31 3A 61    FOR j%=0 TO 11:a
012EE0:  25 3D 56 41 4C 28 22 26 22 2B 4D 49 44 24 28 63    %=VAL("&"+MID$(c
012EF0:  6F 64 24 2C 6A 25 2A 32 2B 31 2C 32 29 29 0D 0A    od$,j%*2+1,2))..
012F00:  34 46 45 37 43 44 38 32 30 30 36 45 44 37 42 45    4FE7CD82006ED7BE
012F10:  42 39 34 31 38 31 46 36 32 41 0D 0A 20 35 38 30    B94181F62A.. 580
012F20:  20 44 41 54 41 20 46 45 46 46 32 30 30 32 37 45     DATA FEFF20027E
012F30:  32 33 45 35 43 44 34 43 39 32 45 31 43 39 36 46    23E5CD4C92E1C96F
012F40:  41 0D 0A 20 35 39 30 20 44 41 54 41 20 32 31 31    A.. 590 DATA 211
012F50:  46 39 34 42 45 32 38 30 39 44 38 32 33 46 35 43    F94BE2809D823F5C
012F60:  44 38 39 39 34 35 39 44 0D 0A 20 36 30 30 20 44    D899459D.. 600 D
012F70:  41 54 41 20 46 31 31 38 46 34 45 44 37 42 45 42    ATA F118F4ED7BEB
012F80:  39 34 32 41 45 35 39 34 43 44 41 32 37 46 36 0D    942AE594CDA27F6.
012F90:  0A 20 36 31 30 20 44 41 54 41 20 39 34 33 45 32    . 610 DATA 943E2
012FA0:  30 43 44 45 43 39 30 32 41 45 37 39 34 37 45 42    0CDEC902AE7947EB
012FB0:  37 32 30 36 33 35 0D 0A 20 36 32 30 20 44 41 54    720635.. 620 DAT
012FC0:  41 20 30 41 33 45 30 44 43 44 45 43 39 30 33 45    A 0A3E0DCDEC903E
012FD0:  30 41 43 33 45 43 39 30 32 33 35 34 38 0D 0A 20    0AC3EC9023548.. 
012FE0:  36 33 30 20 44 41 54 41 20 46 45 30 31 32 30 31    630 DATA FE01201
012FF0:  34 37 45 32 33 46 45 39 37 43 41 39 41 39 33 46    47E23FE97CA9A93F
013000:  45 36 35 45 0D 0A 20 36 34 30 20 44 41 54 41 20    E65E.. 640 DATA 
013010:  43 30 43 41 39 41 39 33 32 42 33 45 33 41 43 44    C0CA9A932B3E3ACD
013020:  45 43 39 30 31 38 44 39 36 39 34 0D 0A 20 36 35    EC9018D9694.. 65
013030:  30 20 44 41 54 41 20 46 45 30 34 32 30 30 32 33    0 DATA FE0420023
013040:  43 33 43 46 45 30 45 33 30 31 33 34 37 32 33 33    C3CFE0E301347233
013050:  35 35 0D 0A 20 36 36 30 20 44 41 54 41 20 32 33    55.. 660 DATA 23
013060:  43 44 39 30 39 34 37 38 46 45 30 37 33 30 43 34    CD909478FE0730C4
013070:  33 45 32 37 39 30 35 37 41 0D 0A 20 36 37 30 20    3E279057A.. 670 
013080:  44 41 54 41 20 43 44 45 43 39 30 31 38 42 43 46    DATA CDEC9018BCF
013090:  45 31 38 33 30 30 37 43 36 32 32 43 44 36 31 46    E183007C622CD61F
0130A0:  0D 0A 20 36 38 30 20 44 41 54 41 20 45 43 39 30    .. 680 DATA EC90
0130B0:  31 38 42 31 46 45 31 39 32 30 30 43 37 45 32 33    18B1FE19200C7E23
0130C0:  45 35 36 46 35 37 44 0D 0A 20 36 39 30 20 44 41    E56F57D.. 690 DA
0130D0:  54 41 20 32 36 30 30 43 44 41 32 39 34 45 31 31    TA 2600CDA294E11
0130E0:  38 41 31 46 45 31 41 32 38 30 34 35 30 37 0D 0A    8A1FE1A2804507..
0130F0:  20 37 30 30 20 44 41 54 41 20 46 45 31 45 32 30     700 DATA FE1E20
013100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
013110:  10 00 01 00 02 09 4E E5 10 00 C6 02 00 00 00 02    ......N.........
013120:  10 00 C2 02 00 00 00 02 10 00 C7 02 00 00 00 02    ................
013130:  10 00 C3 02 00 00 00 02 10 00 C8 02 00 00 00 02    ................
013140:  10 00 C4 02 00 00 00 02 10 00 C9 02 00 00 00 02    ................
013150:  10 00 C5 02 00 00 00 02 10 00 C1 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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0132A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0132B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0132C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0132D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0132E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0132F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0133A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0133B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0133C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0133D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0133E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0133F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013400:  34 44 44 35 45 30 30 44 44 35 36 30 31 34 44 38    4DD5E00DD56014D8
013410:  0D 0A 20 31 31 30 30 20 44 41 54 41 20 44 44 32    .. 1100 DATA DD2
013420:  33 44 44 32 33 41 46 45 44 35 32 33 43 33 30 46    3DD23AFED523C30F
013430:  42 31 39 33 44 35 41 42 0D 0A 20 31 31 31 30 20    B193D5AB.. 1110 
013440:  44 41 54 41 20 44 44 45 35 43 44 44 31 39 34 44    DATA DDE5CDD194D
013450:  44 45 31 31 30 45 35 37 44 43 33 44 37 38 42 45    DE110E57DC3D78BE
013460:  0D 0A 20 31 31 32 30 20 44 41 54 41 20 39 34 31    .. 1120 DATA 941
013470:  30 32 37 45 38 30 33 36 34 30 30 30 41 30 30 42    027E80364000A00B
013480:  31 43 38 30 45 33 41 42 0D 0A 20 31 31 33 30 20    1C80E3AB.. 1130 
013490:  44 41 54 41 20 32 30 45 36 30 46 43 36 33 30 43    DATA 20E60FC630C
0134A0:  33 45 43 39 30 43 36 39 30 32 37 43 45 36 39 35    3EC90C69027CE695
0134B0:  0D 0A 20 31 31 34 30 20 44 41 54 41 20 34 30 32    .. 1140 DATA 402
0134C0:  37 43 33 45 43 39 30 30 30 30 30 30 30 30 30 30    7C3EC90000000000
0134D0:  30 30 30 30 30 32 41 36 0D 0A 1A 74 74 68 65 77    000002A6...tthew
0134E0:  20 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A 20 20 20     Phillips....   
0134F0:  54 68 65 20 73 75 6E 20 62 65 61 74 20 64 6F 77    The sun beat dow
013500:  44 41 54 41 20 45 36 30 31 43 36 33 30 43 44 45    DATA E601C630CDE
013510:  43 39 30 31 30 45 45 43 39 42 31 43 38 37 36 36    C9010EEC9B1C8766
013520:  0D 0A 20 31 30 34 30 20 44 41 54 41 20 30 45 32    .. 1040 DATA 0E2
013530:  30 45 36 30 46 46 35 43 44 44 43 39 34 46 31 43    0E60FF5CDDC94F1C
013540:  39 37 45 42 37 37 34 34 0D 0A 20 31 30 35 30 20    97EB7744.. 1050 
013550:  44 41 54 41 20 43 38 32 33 46 45 32 32 32 30 46    DATA C823FE2220F
013560:  38 43 39 37 45 42 37 43 38 32 33 46 35 37 30 31    8C97EB7C823F5701
013570:  0D 0A 20 31 30 36 30 20 44 41 54 41 20 43 44 45    .. 1060 DATA CDE
013580:  43 39 30 46 31 46 45 32 32 32 30 46 33 43 39 37    C90F1FE2220F3C97
013590:  45 32 33 42 37 37 38 45 0D 0A 20 31 30 37 30 20    E23B778E.. 1070 
0135A0:  44 41 54 41 20 46 32 38 39 39 34 43 39 37 45 32    DATA F28994C97E2
0135B0:  33 42 37 46 41 39 44 39 34 46 45 30 39 37 36 32    3B7FA9D94FE09762
0135C0:  0D 0A 20 31 30 38 30 20 44 41 54 41 20 43 34 45    .. 1080 DATA C4E
0135D0:  43 39 30 31 38 46 33 45 36 37 46 43 33 45 43 39    C9018F3E67FC3EC9
0135E0:  30 30 36 30 34 36 46 39 0D 0A 20 31 30 39 30 20    006046F9.. 1090 
0135F0:  44 41 54 41 20 30 45 30 30 44 44 32 31 43 39 39    DATA 0E00DD21C99
013600:  31 30 20 44 45 46 49 4E 54 20 61 2D 7A 3A 4F 50    10 DEFINT a-z:OP
013610:  45 4E 4F 55 54 22 64 22 3A 4D 45 4D 4F 52 59 20    ENOUT"d":MEMORY 
013620:  48 49 4D 45 4D 2D 31 3A 43 4C 4F 53 45 4F 55 54    HIMEM-1:CLOSEOUT
013630:  0D 0A 32 30 20 6D 77 6F 72 64 73 3D 31 30 30 30    ..20 mwords=1000
013640:  3A 6D 6C 69 6E 6B 73 3D 36 3A 6E 77 6F 72 64 73    :mlinks=6:nwords
013650:  3D 30 0D 0A 33 30 20 44 49 4D 20 77 24 28 6D 77    =0..30 DIM w$(mw
013660:  6F 72 64 73 29 2C 6C 65 28 6D 77 6F 72 64 73 29    ords),le(mwords)
013670:  2C 72 69 28 6D 77 6F 72 64 73 29 2C 6C 6B 28 6D    ,ri(mwords),lk(m
013680:  77 6F 72 64 73 2C 6D 6C 69 6E 6B 73 29 2C 74 65    words,mlinks),te
013690:  6D 70 77 24 28 31 32 38 29 2C 73 74 61 63 6B 28    mpw$(128),stack(
0136A0:  35 29 0D 0A 33 35 20 4D 4F 44 45 20 32 0D 0A 34    5)..35 MODE 2..4
0136B0:  30 20 4C 49 4E 45 20 49 4E 50 55 54 22 22 2C 61    0 LINE INPUT"",a
0136C0:  24 0D 0A 34 31 20 49 46 20 55 50 50 45 52 24 28    $..41 IF UPPER$(
0136D0:  4C 45 46 54 24 28 61 24 2C 35 29 29 3D 22 2A 4C    LEFT$(a$,5))="*L
0136E0:  4F 41 44 22 20 54 48 45 4E 20 47 4F 53 55 42 20    OAD" THEN GOSUB 
0136F0:  36 30 30 3A 47 4F 54 4F 20 34 30 0D 0A 34 32 20    600:GOTO 40..42 
013700:  49 46 20 55 50 50 45 52 24 28 4C 45 46 54 24 28    IF UPPER$(LEFT$(
013710:  61 24 2C 35 29 29 3D 22 2A 53 41 56 45 22 20 54    a$,5))="*SAVE" T
013720:  48 45 4E 20 47 4F 53 55 42 20 37 30 30 3A 47 4F    HEN GOSUB 700:GO
013730:  54 4F 20 34 30 0D 0A 34 33 20 49 46 20 55 50 50    TO 40..43 IF UPP
013740:  45 52 24 28 4C 45 46 54 24 28 61 24 2C 39 29 29    ER$(LEFT$(a$,9))
013750:  3D 22 2A 53 48 4F 57 54 52 45 45 22 20 54 48 45    ="*SHOWTREE" THE
013760:  4E 20 47 4F 53 55 42 20 39 30 30 3A 50 52 49 4E    N GOSUB 900:PRIN
013770:  54 3A 47 4F 54 4F 20 34 30 0D 0A 35 30 20 77 63    T:GOTO 40..50 wc
013780:  6F 75 6E 74 3D 30 3A 47 4F 53 55 42 20 33 30 30    ount=0:GOSUB 300
013790:  3A 49 46 20 61 24 3C 3E 22 22 20 54 48 45 4E 20    :IF a$<>"" THEN 
0137A0:  47 4F 53 55 42 20 31 30 30 0D 0A 36 30 20 49 46    GOSUB 100..60 IF
0137B0:  20 6E 77 6F 72 64 73 20 54 48 45 4E 20 47 4F 53     nwords THEN GOS
0137C0:  55 42 20 32 30 30 0D 0A 37 30 20 47 4F 54 4F 20    UB 200..70 GOTO 
0137D0:  34 30 0D 0A 31 30 30 20 57 48 49 4C 45 20 49 4E    40..100 WHILE IN
0137E0:  53 54 52 28 61 24 2C 22 20 22 29 3E 30 3A 61 3D    STR(a$," ")>0:a=
0137F0:  49 4E 53 54 52 28 61 24 2C 22 20 22 29 0D 0A 31    INSTR(a$," ")..1
013800:  23 48 65 6C 70 20 66 6F 72 20 4C 6F 6F 6D 20 68    #Help for Loom h
013810:  79 70 65 72 74 65 78 74 20 72 65 61 64 65 72 20    ypertext reader 
013820:  76 33 2E 32 0D 0A 4C 6F 6F 6D 20 69 73 20 61 20    v3.2..Loom is a 
013830:  73 79 73 74 65 6D 20 66 6F 72 20 76 69 65 77 69    system for viewi
013840:  6E 67 20 68 79 70 65 72 74 65 78 74 3A 20 61 20    ng hypertext: a 
013850:  73 65 74 20 6F 66 20 6F 72 64 69 6E 61 72 79 20    set of ordinary 
013860:  74 65 78 74 20 66 69 6C 65 73 20 77 69 74 68 20    text files with 
013870:  6C 69 6E 6B 73 0D 0A 62 65 74 77 65 65 6E 20 74    links..between t
013880:  68 65 6D 2E 20 20 41 6E 79 20 74 65 78 74 20 77    hem.  Any text w
013890:  68 69 63 68 20 69 73 20 68 69 67 68 6C 69 67 68    hich is highligh
0138A0:  74 65 64 20 69 73 20 61 20 6C 69 6E 6B 2E 20 20    ted is a link.  
0138B0:  55 73 65 20 74 68 65 20 63 75 72 73 6F 72 20 6B    Use the cursor k
0138C0:  65 79 73 20 74 6F 0D 0A 70 6F 73 69 74 69 6F 6E    eys to..position
0138D0:  20 74 68 65 20 63 75 72 73 6F 72 20 6F 76 65 72     the cursor over
0138E0:  20 61 20 6C 69 6E 6B 2C 20 61 6E 64 20 70 72 65     a link, and pre
0138F0:  73 73 20 74 68 65 20 45 4E 54 45 52 20 6F 72 20    ss the ENTER or 
013900:  52 45 54 55 52 4E 20 6B 65 79 20 61 6E 64 20 79    RETURN key and y
013910:  6F 75 20 77 69 6C 6C 0D 0A 62 65 20 74 61 6B 65    ou will..be take
013920:  6E 20 74 6F 20 74 68 65 20 61 70 70 72 6F 70 72    n to the appropr
013930:  69 61 74 65 20 70 6C 61 63 65 20 65 69 74 68 65    iate place eithe
013940:  72 20 65 6C 73 65 77 68 65 72 65 20 69 6E 20 74    r elsewhere in t
013950:  68 65 20 73 61 6D 65 20 66 69 6C 65 2C 20 6F 72    he same file, or
013960:  20 69 6E 20 61 0D 0A 64 69 66 66 65 72 65 6E 74     in a..different
013970:  20 66 69 6C 65 20 65 6E 74 69 72 65 6C 79 2E 0D     file entirely..
013980:  0A 0D 0A 54 68 65 72 65 20 61 72 65 20 71 75 69    ...There are qui
013990:  63 6B 20 63 75 72 73 6F 72 20 6D 6F 76 65 6D 65    ck cursor moveme
0139A0:  6E 74 73 20 73 69 6D 69 6C 61 72 20 74 6F 20 50    nts similar to P
0139B0:  72 6F 74 65 78 74 3A 0D 0A 0D 0A 53 48 49 46 54    rotext:....SHIFT
0139C0:  20 6C 65 66 74 20 2B 20 72 69 67 68 74 09 4D 6F     left + right.Mo
0139D0:  76 65 20 6C 65 66 74 20 6F 72 20 72 69 67 68 74    ve left or right
0139E0:  20 61 20 77 6F 72 64 20 61 74 20 61 20 74 69 6D     a word at a tim
0139F0:  65 0D 0A 43 54 52 4C 20 6C 65 66 74 20 2B 20 72    e..CTRL left + r
013A00:  31 30 20 74 65 6D 70 77 24 28 77 63 6F 75 6E 74    10 tempw$(wcount
013A10:  29 3D 4C 45 46 54 24 28 61 24 2C 61 2D 31 29 3A    )=LEFT$(a$,a-1):
013A20:  61 24 3D 4D 49 44 24 28 61 24 2C 61 2B 31 29 0D    a$=MID$(a$,a+1).
013A30:  0A 31 32 30 20 77 63 6F 75 6E 74 3D 77 63 6F 75    .120 wcount=wcou
013A40:  6E 74 2B 31 3A 47 4F 53 55 42 20 33 30 30 3A 57    nt+1:GOSUB 300:W
013A50:  45 4E 44 0D 0A 31 33 30 20 49 46 20 61 24 3C 3E    END..130 IF a$<>
013A60:  22 22 20 54 48 45 4E 20 74 65 6D 70 77 24 28 77    "" THEN tempw$(w
013A70:  63 6F 75 6E 74 29 3D 61 24 3A 77 63 6F 75 6E 74    count)=a$:wcount
013A80:  3D 77 63 6F 75 6E 74 2B 31 0D 0A 31 34 30 20 70    =wcount+1..140 p
013A90:  77 6F 72 64 3D 30 3A 46 4F 52 20 69 3D 30 20 54    word=0:FOR i=0 T
013AA0:  4F 20 77 63 6F 75 6E 74 2D 31 3A 77 6F 72 64 24    O wcount-1:word$
013AB0:  3D 74 65 6D 70 77 24 28 69 29 0D 0A 31 35 30 20    =tempw$(i)..150 
013AC0:  47 4F 53 55 42 20 38 30 30 0D 0A 31 36 30 20 49    GOSUB 800..160 I
013AD0:  46 20 63 77 6F 72 64 3D 30 20 54 48 45 4E 20 6E    F cword=0 THEN n
013AE0:  77 6F 72 64 73 3D 6E 77 6F 72 64 73 2B 31 3A 77    words=nwords+1:w
013AF0:  24 28 6E 77 6F 72 64 73 29 3D 77 6F 72 64 24 3A    $(nwords)=word$:
013B00:  6C 6B 28 6E 77 6F 72 64 73 2C 30 29 3D 30 3A 6C    lk(nwords,0)=0:l
013B10:  65 28 6E 77 6F 72 64 73 29 3D 30 3A 72 69 28 6E    e(nwords)=0:ri(n
013B20:  77 6F 72 64 73 29 3D 30 3A 63 77 6F 72 64 3D 6E    words)=0:cword=n
013B30:  77 6F 72 64 73 3A 47 4F 53 55 42 20 38 34 30 0D    words:GOSUB 840.
013B40:  0A 31 37 30 20 47 4F 53 55 42 20 34 30 30 3A 70    .170 GOSUB 400:p
013B50:  77 6F 72 64 3D 63 77 6F 72 64 3A 4E 45 58 54 0D    word=cword:NEXT.
013B60:  0A 31 38 30 20 63 77 6F 72 64 3D 30 3A 47 4F 53    .180 cword=0:GOS
013B70:  55 42 20 34 30 30 0D 0A 31 39 30 20 52 45 54 55    UB 400..190 RETU
013B80:  52 4E 0D 0A 32 30 30 20 70 77 6F 72 64 3D 30 3A    RN..200 pword=0:
013B90:  47 4F 53 55 42 20 35 30 30 0D 0A 32 31 30 20 57    GOSUB 500..210 W
013BA0:  48 49 4C 45 20 70 77 6F 72 64 3E 30 3A 50 52 49    HILE pword>0:PRI
013BB0:  4E 54 20 77 24 28 70 77 6F 72 64 29 22 20 22 3B    NT w$(pword)" ";
013BC0:  3A 47 4F 53 55 42 20 35 30 30 3A 57 45 4E 44 0D    :GOSUB 500:WEND.
013BD0:  0A 32 32 30 20 50 52 49 4E 54 20 43 48 52 24 28    .220 PRINT CHR$(
013BE0:  38 29 3B 22 2E 22 3A 50 52 49 4E 54 0D 0A 32 33    8);".":PRINT..23
013BF0:  30 20 52 45 54 55 52 4E 0D 0A 33 30 30 20 57 48    0 RETURN..300 WH
013C00:  69 67 68 74 3A 09 4D 6F 76 65 20 74 6F 20 73 74    ight:.Move to st
013C10:  61 72 74 20 6F 72 20 65 6E 64 20 6F 66 20 6C 69    art or end of li
013C20:  6E 65 0D 0A 53 48 49 46 54 20 75 70 20 2B 20 64    ne..SHIFT up + d
013C30:  6F 77 6E 3A 09 53 63 72 6F 6C 6C 20 73 63 72 65    own:.Scroll scre
013C40:  65 6E 20 75 70 20 6F 72 20 64 6F 77 6E 20 6F 6E    en up or down on
013C50:  65 20 6C 69 6E 65 0D 0A 43 54 52 4C 20 75 70 20    e line..CTRL up 
013C60:  2B 20 64 6F 77 6E 3A 09 09 4D 6F 76 65 20 75 70    + down:..Move up
013C70:  20 6F 72 20 64 6F 77 6E 20 61 20 77 68 6F 6C 65     or down a whole
013C80:  20 70 61 67 65 0D 0A 43 54 52 4C 20 5B 20 2B 20     page..CTRL [ + 
013C90:  5D 09 09 4D 6F 76 65 20 74 6F 20 74 6F 70 20 6F    ]..Move to top o
013CA0:  72 20 62 6F 74 74 6F 6D 20 6F 66 20 64 6F 63 75    r bottom of docu
013CB0:  6D 65 6E 74 0D 0A 0D 0A 55 73 65 20 74 68 65 20    ment....Use the 
013CC0:  45 4E 54 45 52 20 6F 72 20 52 45 54 55 52 4E 20    ENTER or RETURN 
013CD0:  6B 65 79 20 74 6F 20 66 6F 6C 6C 6F 77 20 61 20    key to follow a 
013CE0:  6C 69 6E 6B 2E 20 20 4F 6E 63 65 20 79 6F 75 20    link.  Once you 
013CF0:  68 61 76 65 20 66 6F 6C 6C 6F 77 65 64 20 61 20    have followed a 
013D00:  6C 69 6E 6B 2C 0D 0A 70 72 65 73 73 20 74 68 65    link,..press the
013D10:  20 22 3C 22 20 6B 65 79 20 6F 72 20 74 68 65 20     "<" key or the 
013D20:  22 42 22 20 6B 65 79 20 74 6F 20 72 65 74 75 72    "B" key to retur
013D30:  6E 20 74 6F 20 77 68 65 72 65 20 79 6F 75 20 63    n to where you c
013D40:  61 6D 65 20 66 72 6F 6D 2E 0D 0A 0D 0A 54 6F 20    ame from.....To 
013D50:  71 75 69 74 20 4C 6F 6F 6D 2C 20 70 72 65 73 73    quit Loom, press
013D60:  20 22 51 22 2E 20 20 20 20 20 20 20 20 20 20 20     "Q".           
013D70:  20 20 20 20 20 20 54 6F 20 6C 65 61 76 65 20 74          To leave t
013D80:  68 69 73 20 68 65 6C 70 20 73 63 72 65 65 6E 2C    his help screen,
013D90:  20 70 72 65 73 73 20 22 42 22 0D 0A 2D 2D 2D 2D     press "B"..----
013DA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
013DB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
013DC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
013DD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
013DE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 4F 72 69    -----------..Ori
013DF0:  67 69 6E 61 6C 20 76 65 72 73 69 6F 6E 20 28 63    ginal version (c
013E00:  00 53 43 41 4E 34 36 34 20 42 41 53 00 00 00 00    .SCAN464 BAS....
013E10:  00 00 00 00 00 70 01 00 D3 01 00 00 00 00 00 00    .....p..........
013E20:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013E30:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
013E40:  D3 01 00 D2 04 74 20 74 6F 20 74 68 65 20 70 72    .....t to the pr
013E50:  69 6E 74 65 72 22 00 39 00 5A 00 BF 22 7C 4C 49    inter".9.Z.."|LI
013E60:  53 54 46 2C 40 66 69 6C 65 6E 61 6D 65 24 20 20    STF,@filename$  
013E70:  2D 20 64 69 74 74 6F 2C 20 77 69 74 68 20 6F 75    - ditto, with ou
013E80:  21 00 0A 00 AD 20 10 01 AA 20 1C FF 8F 01 A8 22    !.... ... ....."
013E90:  73 63 61 6E 34 36 34 2E 62 69 6E 22 2C 1C 00 90    scan464.bin",...
013EA0:  00 53 00 14 00 83 20 1C 00 90 01 BF 22 53 63 61    .S.... ....."Sca
013EB0:  6E 20 34 36 34 20 6C 6F 61 64 65 64 20 61 6E 64    n 464 loaded and
013EC0:  20 69 6E 73 74 61 6C 6C 65 64 20 2D 20 66 6F 72     installed - for
013ED0:  20 75 73 65 20 6F 6E 20 74 68 65 20 41 6D 73 74     use on the Amst
013EE0:  72 61 64 20 43 50 43 20 34 36 34 20 6F 6E 6C 79    rad CPC 464 only
013EF0:  22 01 BF 00 4F 00 1E 00 BF 22 7C 53 43 41 4E 20    "...O...."|SCAN 
013F00:  20 2D 20 6C 69 73 74 20 74 6F 20 74 68 65 20 73     - list to the s
013F10:  63 72 65 65 6E 20 74 68 6F 73 65 20 6C 69 6E 65    creen those line
013F20:  73 20 74 68 61 74 20 77 69 6C 6C 20 6E 6F 74 20    s that will not 
013F30:  77 6F 72 6B 20 69 6E 20 42 41 53 49 43 20 31 2E    work in BASIC 1.
013F40:  30 22 00 32 00 28 00 BF 22 7C 53 43 41 4E 50 20    0".2.(.."|SCANP 
013F50:  2D 20 64 69 74 74 6F 2C 20 77 69 74 68 20 6F 75    - ditto, with ou
013F60:  74 70 75 74 20 74 6F 20 74 68 65 20 70 72 69 6E    tput to the prin
013F70:  74 65 72 22 00 39 00 32 00 BF 22 7C 53 43 41 4E    ter".9.2.."|SCAN
013F80:  46 2C 40 66 69 6C 65 6E 61 6D 65 24 20 20 2D 20    F,@filename$  - 
013F90:  64 69 74 74 6F 2C 20 77 69 74 68 20 6F 75 74 70    ditto, with outp
013FA0:  75 74 20 74 6F 20 61 20 66 69 6C 65 22 00 06 00    ut to a file"...
013FB0:  3C 00 BF 00 2C 00 46 00 BF 22 7C 4C 49 53 54 20    <...,.F.."|LIST 
013FC0:  20 2D 20 6C 69 73 74 20 61 6C 6C 20 6C 69 6E 65     - list all line
013FD0:  73 20 74 6F 20 74 68 65 20 73 63 72 65 65 6E 00    s to the screen.
013FE0:  32 00 50 00 BF 22 7C 4C 49 53 54 50 20 2D 20 64    2.P.."|LISTP - d
013FF0:  69 74 74 6F 2C 20 77 69 74 68 20 6F 75 74 70 75    itto, with outpu
014000:  29 20 53 74 65 70 68 65 6E 20 50 68 69 6C 6C 69    ) Stephen Philli
014010:  70 73 20 31 39 39 35 0D 0A 41 6D 73 74 72 61 64    ps 1995..Amstrad
014020:  20 43 50 43 20 76 65 72 73 69 6F 6E 20 28 63 29     CPC version (c)
014030:  20 4D 61 74 74 68 65 77 20 61 6E 64 20 53 74 65     Matthew and Ste
014040:  70 68 65 6E 20 50 68 69 6C 6C 69 70 73 20 31 39    phen Phillips 19
014050:  39 37 0D 0A 57 72 69 74 74 65 6E 20 75 73 69 6E    97..Written usin
014060:  67 20 74 68 65 20 48 69 53 6F 66 74 20 43 20 63    g the HiSoft C c
014070:  6F 6D 70 69 6C 65 72 2E 20 20 52 75 6E 74 69 6D    ompiler.  Runtim
014080:  65 20 72 6F 75 74 69 6E 65 73 20 28 63 29 20 48    e routines (c) H
014090:  69 53 6F 66 74 20 31 39 38 38 1A 61 64 65 72 20    iSoft 1988.ader 
0140A0:  76 33 2E 32 0D 0A 4C 6F 6F 6D 20 69 73 20 61 20    v3.2..Loom is a 
0140B0:  73 79 73 74 65 6D 20 66 6F 72 20 76 69 65 77 69    system for viewi
0140C0:  6E 67 20 68 79 70 65 72 74 65 78 74 3A 20 61 20    ng hypertext: a 
0140D0:  73 65 74 20 6F 66 20 6F 72 64 69 6E 61 72 79 20    set of ordinary 
0140E0:  74 65 78 74 20 66 69 6C 65 73 20 77 69 74 68 20    text files with 
0140F0:  6C 69 6E 6B 73 0D 0A 62 65 74 77 65 65 6E 20 74    links..between t
014100:  6C 69 6E 6B 2C 0D 0A 70 72 65 73 73 20 74 68 65    link,..press the
014110:  20 22 3C 22 20 6B 65 79 20 6F 72 20 74 68 65 20     "<" key or the 
014120:  22 42 22 20 6B 65 79 20 74 6F 20 72 65 74 75 72    "B" key to retur
014130:  6E 20 74 6F 20 77 68 65 72 65 20 79 6F 75 20 63    n to where you c
014140:  61 6D 65 20 66 72 6F 6D 2E 0D 0A 0D 0A 54 6F 20    ame from.....To 
014150:  71 75 69 74 20 4C 6F 6F 6D 2C 20 70 72 65 73 73    quit Loom, press
014160:  20 22 51 22 2E 20 20 20 20 20 20 20 20 20 20 20     "Q".           
014170:  20 20 20 20 20 20 54 6F 20 6C 65 61 76 65 20 74          To leave t
014180:  68 69 73 20 68 65 6C 70 20 73 63 72 65 65 6E 2C    his help screen,
014190:  20 70 72 65 73 73 20 22 42 22 0D 0A 2D 2D 2D 2D     press "B"..----
0141A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0141B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0141C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0141D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0141E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 4F 72 69    -----------..Ori
0141F0:  67 69 6E 61 6C 20 76 65 72 73 69 6F 6E 20 28 63    ginal version (c
014200:  44 31 31 30 44 31 31 38 36 46 43 0D 0A 20 39 37    D110D1186FC.. 97
014210:  30 20 44 41 54 41 20 46 32 35 32 34 35 43 44 34    0 DATA F25245CD4
014220:  32 37 32 36 35 36 31 36 42 30 44 38 41 34 39 35    27265616B0D8A495
014230:  31 42 0D 0A 20 39 38 30 20 44 41 54 41 20 34 34    1B.. 980 DATA 44
014240:  34 35 35 32 44 32 37 32 34 34 34 35 34 33 41 34    4552D272444543A4
014250:  37 45 34 33 34 46 34 39 46 0D 0A 20 39 39 30 20    7E434F49F.. 990 
014260:  44 41 54 41 20 35 30 35 39 34 33 34 38 35 32 41    DATA 5059434852A
014270:  34 44 44 34 36 34 39 34 43 43 43 44 45 35 38 43    4DD46494CCCDE58C
014280:  0D 0A 20 31 30 30 30 20 44 41 54 41 20 34 37 35    .. 1000 DATA 475
014290:  32 34 31 35 30 34 38 34 39 34 33 44 33 44 46 34    24150484943D3DF4
0142A0:  44 34 31 35 33 34 39 31 0D 0A 20 31 30 31 30 20    D4153491.. 1010 
0142B0:  44 41 54 41 20 43 42 45 30 34 36 35 32 34 31 34    DATA CBE04652414
0142C0:  44 43 35 45 31 34 33 35 35 35 32 35 33 35 42 34    DC5E1435552535B4
0142D0:  0D 0A 20 31 30 32 30 20 44 41 54 41 20 34 46 44    .. 1020 DATA 4FD
0142E0:  32 46 46 41 46 43 42 31 32 31 37 42 31 32 38 30    2FFAFCB1217B1280
0142F0:  39 30 45 30 32 34 42 35 0D 0A 20 31 30 33 30 20    90E024B5.. 1030 
014300:  44 41 54 41 20 45 36 30 31 43 36 33 30 43 44 45    DATA E601C630CDE
014310:  43 39 30 31 30 45 45 43 39 42 31 43 38 37 36 36    C9010EEC9B1C8766
014320:  0D 0A 20 31 30 34 30 20 44 41 54 41 20 30 45 32    .. 1040 DATA 0E2
014330:  30 45 36 30 46 46 35 43 44 44 43 39 34 46 31 43    0E60FF5CDDC94F1C
014340:  39 37 45 42 37 37 34 34 0D 0A 20 31 30 35 30 20    97EB7744.. 1050 
014350:  44 41 54 41 20 43 38 32 33 46 45 32 32 32 30 46    DATA C823FE2220F
014360:  38 43 39 37 45 42 37 43 38 32 33 46 35 37 30 31    8C97EB7C823F5701
014370:  0D 0A 20 31 30 36 30 20 44 41 54 41 20 43 44 45    .. 1060 DATA CDE
014380:  43 39 30 46 31 46 45 32 32 32 30 46 33 43 39 37    C90F1FE2220F3C97
014390:  45 32 33 42 37 37 38 45 0D 0A 20 31 30 37 30 20    E23B778E.. 1070 
0143A0:  44 41 54 41 20 46 32 38 39 39 34 43 39 37 45 32    DATA F28994C97E2
0143B0:  33 42 37 46 41 39 44 39 34 46 45 30 39 37 36 32    3B7FA9D94FE09762
0143C0:  0D 0A 20 31 30 38 30 20 44 41 54 41 20 43 34 45    .. 1080 DATA C4E
0143D0:  43 39 30 31 38 46 33 45 36 37 46 43 33 45 43 39    C9018F3E67FC3EC9
0143E0:  30 30 36 30 34 36 46 39 0D 0A 20 31 30 39 30 20    006046F9.. 1090 
0143F0:  44 41 54 41 20 30 45 30 30 44 44 32 31 43 39 39    DATA 0E00DD21C99
014400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
014410:  11 00 01 00 02 09 4E E5 11 00 C4 02 00 00 00 02    ......N.........
014420:  11 00 C9 02 00 00 00 02 11 00 C5 02 00 00 00 02    ................
014430:  11 00 C1 02 00 00 00 02 11 00 C6 02 00 00 00 02    ................
014440:  11 00 C2 02 00 00 00 02 11 00 C7 02 00 00 00 02    ................
014450:  11 00 C3 02 00 00 00 02 11 00 C8 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:  ED 6F 2B ED 6F CD C8 94 ED 6F 0E 20 CD C8 94 ED    .o+.o....o. ....
014510:  6F 23 23 C3 CF 92 FE 1D 20 10 5E 23 56 23 E5 EB    o##..... .^#V#..
014520:  23 23 23 5E 23 56 EB C3 28 93 FE 1F 20 25 11 C2    ###^#V..(... %..
014530:  B0 01 05 00 ED B0 3E 05 32 C1 B0 E5 0E 00 CD 0F    ......>.2.......
014540:  B9 C5 CD 9D EE C1 CD 18 B9 21 5E AE CD DD 94 E1    .........!^.....
014550:  C3 CF 92 FE 22 20 09 CD EC 90 CD DD 94 C3 CF 92    ...." ..........
014560:  FE 7C 30 06 CD EC 90 C3 CF 92 20 0A CD EC 90 23    .|0....... ....#
014570:  CD F2 94 C3 CF 92 FE FF 20 02 7E 23 FE C0 20 10    ........ .~#.. .
014580:  3E 27 CD EC 90 7E B7 CA CF 92 23 CD EC 90 18 F5    >'...~....#.....
014590:  FE C5 20 0A E5 21 77 94 CD F2 94 E1 18 E7 E5 21    .. ..!w........!
0145A0:  81 94 BE 23 38 13 20 07 CD F2 94 E1 C3 CF 92 F5    ...#8. .........
0145B0:  7E 23 E6 80 28 FA F1 18 E9 0E 00 F5 CD 0F B9 F1    ~#..(...........
0145C0:  C5 06 1B 21 88 E3 E5 F5 7E 23 B7 28 24 18 03 7E    ...!....~#.($..~
0145D0:  23 B7 F2 4F 94 F1 BE 28 04 D1 23 18 E9 78 C6 3F    #..O...(..#..x.?
0145E0:  FE 40 C4 EC 90 E1 CD F2 94 C1 CD 18 B9 E1 C3 CF    .@..............
0145F0:  92 F1 D1 10 D1 18 F2 52 45 CD 42 72 65 61 6B 0D    .......RE.Break.
014600:  8A 49 44 45 52 D2 72 44 45 43 A4 7E 43 4F 50 59    .IDER.rDEC.~COPY
014610:  43 48 52 A4 DD 46 49 4C CC DE 47 52 41 50 48 49    CHR..FIL..GRAPHI
014620:  43 D3 DF 4D 41 53 CB E0 46 52 41 4D C5 E1 43 55    C..MAS..FRAM..CU
014630:  52 53 4F D2 FF AF CB 12 17 B1 28 09 0E 02 E6 01    RSO.......(.....
014640:  C6 30 CD EC 90 10 EE C9 B1 C8 0E 20 E6 0F F5 CD    .0......... ....
014650:  3E 95 F1 C9 7E B7 C8 23 FE 22 20 F8 C9 7E B7 C8    >...~..#." ..~..
014660:  23 F5 CD EC 90 F1 FE 22 20 F3 C9 7E 23 B7 F2 EB    #......" ..~#...
014670:  94 C9 7E 23 B7 FA FF 94 FE 09 C4 EC 90 18 F3 E6    ..~#............
014680:  7F C3 EC 90 06 04 0E 00 DD 21 2B 95 DD 5E 00 DD    .........!+..^..
014690:  56 01 DD 23 DD 23 AF ED 52 3C 30 FB 19 3D DD E5    V..#.#..R<0..=..
0146A0:  CD 33 95 DD E1 10 E5 7D C3 39 95 10 27 E8 03 64    .3.....}.9..'..d
0146B0:  00 0A 00 B1 C8 0E 20 E6 0F C6 30 C3 EC 90 C6 90    ...... ...0.....
0146C0:  27 CE 40 27 C3 EC 90 00 00 00 00 00 00 00 00 00    '.@'............
0146D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0146E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0146F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014700:  91 FE 23 28 EA CD AB 91 79 FE 02 D2 8D 92 18 91    ..#(....y.......
014710:  FE 7C 20 0B 23 CD E1 92 16 FF CD AB 91 18 82 2B    .| .#..........+
014720:  16 00 18 F6 7E FE 20 C0 23 18 F9 0E 01 7E B7 C8    ....~. .#....~..
014730:  23 FE 01 C8 FE 28 20 0E CD 27 92 FE 29 28 EE ED    #....( ..'..)(..
014740:  7B 3A 93 C3 8D 92 FE 29 28 F5 FE 2C 20 09 0C A2    {:.....)(.., ...
014750:  E5 C4 DC 91 E1 18 D6 CD 3F 92 18 D1 7E B7 C8 23    ........?...~..#
014760:  FE 01 C8 FE 28 28 F5 FE 20 28 F1 FE F4 28 ED FE    ....((.. (...(..
014770:  22 28 10 FE 03 28 0C FE AC 28 08 FE E4 20 0B 7E    "(...(...(... .~
014780:  FE 03 C0 ED 7B 3A 93 C3 8D 92 FE FF C0 46 21 1B    ....{:.......F!.
014790:  92 7E B8 28 EE 23 7E B7 20 F8 C9 03 11 16 19 1C    .~.(.#~. .......
0147A0:  43 71 73 75 79 7B 00 7E B7 C8 FE 01 C8 23 FE 29    Cqsuy{.~.....#.)
0147B0:  C8 FE 28 20 05 CD 27 92 18 ED CD 3F 92 18 E8 FE    ..( ..'....?....
0147C0:  0E 30 06 23 23 CD E1 92 C9 FE 18 D8 23 FE 19 C8    .0.##.......#...
0147D0:  23 FE 1F D8 20 04 23 23 23 C9 2B 2B FE 22 20 03    #... .###.++." .
0147E0:  C3 D8 92 FE 7C D8 20 06 ED 7B 3A 93 18 1F FE FF    ....|. ..{:.....
0147F0:  20 02 7E 23 E5 CD 7A 92 E1 C9 21 A4 92 BE 28 09     .~#..z...!...(.
014800:  D8 23 F5 CD E1 92 F1 18 F4 ED 7B 3A 93 2A 34 93    .#........{:.*4.
014810:  CD FA 92 3E 0D CD B8 90 3E 0A C3 B8 90 42 72 65    ...>....>....Bre
014820:  61 6B 0D 8A 49 44 45 52 D2 72 44 45 43 A4 7E 43    ak..IDER.rDEC.~C
014830:  4F 50 59 43 48 52 A4 DD 46 49 4C CC DE 47 52 41    OPYCHR..FIL..GRA
014840:  50 48 49 43 D3 DF 4D 41 53 CB E0 46 52 41 4D C5    PHIC..MAS..FRAM.
014850:  E1 43 55 52 53 4F D2 FF 7E B7 C8 23 FE 22 20 F8    .CURSO..~..#." .
014860:  C9 7E 23 B7 F2 E1 92 C9 7E 23 B7 FA F5 92 FE 09    .~#.....~#......
014870:  C4 B8 90 18 F3 E6 7F C3 B8 90 06 04 0E 00 DD 21    ...............!
014880:  21 93 DD 5E 00 DD 56 01 DD 23 DD 23 AF ED 52 3C    !..^..V..#.#..R<
014890:  30 FB 19 3D DD E5 CD 29 93 DD E1 10 E5 7D C3 2F    0..=...).....}./
0148A0:  93 10 27 E8 03 64 00 0A 00 B1 C8 0E 20 E6 0F C6    ..'..d...... ...
0148B0:  30 C3 B8 90 00 00 00 00 00 00 00 00 00 00 00 00    0...............
0148C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0148D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0148E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0148F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0149A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0149B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0149C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0149D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0149E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0149F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014B00:  74 20 74 6F 20 74 68 65 20 70 72 69 6E 74 65 72    t to the printer
014B10:  22 00 39 00 5A 00 BF 22 7C 4C 49 53 54 46 2C 40    ".9.Z.."|LISTF,@
014B20:  66 69 6C 65 6E 61 6D 65 24 20 20 2D 20 64 69 74    filename$  - dit
014B30:  74 6F 2C 20 77 69 74 68 20 6F 75 74 70 75 74 20    to, with output 
014B40:  74 6F 20 61 20 66 69 6C 65 22 00 06 00 64 00 BF    to a file"...d..
014B50:  00 00 00 1A 00 00 00 00 00 00 00 00 00 00 00 00    ................
014B60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014B70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014B80:  35 39 20 61 30 36 20 38 38 37 39 0D 0A 42 20 61    59 a06 8879..B a
014B90:  30 36 20 32 39 39 33 20 32 39 39 37 20 61 30 36    06 2993 2997 a06
014BA0:  20 38 30 39 38 0D 0A 42 20 61 30 36 20 33 30 30     8098..B a06 300
014BB0:  32 20 33 30 30 32 20 61 30 36 20 38 30 39 38 0D    2 3002 a06 8098.
014BC0:  0A 42 20 61 30 37 20 33 35 31 20 33 35 39 20 61    .B a07 351 359 a
014BD0:  30 37 20 37 38 33 39 0D 0A 42 20 61 30 37 20 32    07 7839..B a07 2
014BE0:  31 38 34 20 32 31 39 32 20 61 30 37 20 37 38 33    184 2192 a07 783
014BF0:  39 0D 0A 42 20 61 30 37 20 34 32 31 34 20 34 32    9..B a07 4214 42
014C00:  32 32 20 61 30 37 20 39 31 33 30 0D 0A 42 20 61    22 a07 9130..B a
014C10:  30 38 20 35 34 39 20 35 35 36 20 61 30 38 20 31    08 549 556 a08 1
014C20:  30 33 33 33 0D 0A 42 20 61 30 38 20 36 31 34 20    0333..B a08 614 
014C30:  36 31 38 20 61 30 38 20 39 34 33 31 0D 0A 42 20    618 a08 9431..B 
014C40:  61 30 39 20 35 39 36 20 36 32 31 20 61 30 39 20    a09 596 621 a09 
014C50:  38 34 37 33 0D 0A 42 20 61 31 30 20 34 38 35 32    8473..B a10 4852
014C60:  20 34 38 35 38 20 61 31 30 20 39 38 32 38 0D 0A     4858 a10 9828..
014C70:  42 20 61 31 30 20 39 32 38 32 20 39 32 39 34 20    B a10 9282 9294 
014C80:  61 31 30 20 31 30 31 30 31 0D 0A 42 20 61 31 31    a10 10101..B a11
014C90:  20 34 35 31 20 34 35 39 20 61 31 31 20 38 31 33     451 459 a11 813
014CA0:  31 0D 0A 42 20 61 31 31 20 35 33 32 20 35 34 30    1..B a11 532 540
014CB0:  20 61 31 31 20 39 30 37 39 0D 0A 42 20 61 31 32     a11 9079..B a12
014CC0:  20 33 38 31 30 20 33 38 31 38 20 61 31 32 20 31     3810 3818 a12 1
014CD0:  30 35 31 31 0D 0A 42 20 61 31 32 20 38 34 35 34    0511..B a12 8454
014CE0:  20 38 34 36 30 20 61 31 32 20 31 31 37 36 38 0D     8460 a12 11768.
014CF0:  0A 42 20 61 31 33 20 32 30 37 35 20 32 30 38 33    .B a13 2075 2083
014D00:  00 53 43 41 4E 36 31 32 38 42 41 53 00 00 00 00    .SCAN6128BAS....
014D10:  00 00 00 00 00 70 01 00 37 01 00 00 00 00 00 00    .....p..7.......
014D20:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014D30:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014D40:  37 01 00 AD 03 4E 46 2C 40 66 69 6C 65 6E 61 6D    7....NF,@filenam
014D50:  65 24 20 20 2D 20 64 69 74 74 6F 2C 20 77 69 74    e$  - ditto, wit
014D60:  68 20 6F 75 74 70 75 74 20 74 6F 20 61 20 66 69    h output to a fi
014D70:  6C 65 22 00 06 00 3C 00 BF 00 00 00 1A E1 10 E5    le"...<.........
014D80:  22 00 0A 00 AD 20 10 01 AA 20 1C FF 8F 01 A8 22    ".... ... ....."
014D90:  73 63 61 6E 36 31 32 38 2E 62 69 6E 22 2C 1C 00    scan6128.bin",..
014DA0:  90 00 4B 00 14 00 83 20 1C 00 90 01 BF 22 53 63    ..K.... ....."Sc
014DB0:  61 6E 20 36 31 32 38 20 6C 6F 61 64 65 64 20 61    an 6128 loaded a
014DC0:  6E 64 20 69 6E 73 74 61 6C 6C 65 64 20 2D 20 66    nd installed - f
014DD0:  6F 72 20 75 73 65 20 6F 6E 20 61 6E 79 20 41 6D    or use on any Am
014DE0:  73 74 72 61 64 20 43 50 43 22 01 BF 00 57 00 1E    strad CPC"...W..
014DF0:  00 BF 22 7C 53 43 41 4E 20 20 2D 20 70 72 69 6E    .."|SCAN  - prin
014E00:  74 73 20 74 68 65 20 6C 69 6E 65 20 6E 75 6D 62    ts the line numb
014E10:  65 72 73 20 6F 66 20 74 68 6F 73 65 20 6C 69 6E    ers of those lin
014E20:  65 73 20 74 68 61 74 20 77 69 6C 6C 20 6E 6F 74    es that will not
014E30:  20 77 6F 72 6B 20 69 6E 20 42 41 53 49 43 20 31     work in BASIC 1
014E40:  2E 30 22 00 32 00 28 00 BF 22 7C 53 43 41 4E 50    .0".2.(.."|SCANP
014E50:  20 2D 20 64 69 74 74 6F 2C 20 77 69 74 68 20 6F     - ditto, with o
014E60:  75 74 70 75 74 20 74 6F 20 74 68 65 20 70 72 69    utput to the pri
014E70:  6E 74 65 72 22 00 39 00 32 00 BF 22 7C 53 43 41    nter".9.2.."|SCA
014E80:  4E 46 2C 40 66 69 6C 65 6E 61 6D 65 24 20 20 2D    NF,@filename$  -
014E90:  20 64 69 74 74 6F 2C 20 77 69 74 68 20 6F 75 74     ditto, with out
014EA0:  70 75 74 20 74 6F 20 61 20 66 69 6C 65 22 00 06    put to a file"..
014EB0:  00 3C 00 BF 00 00 00 1A E1 10 E5 7D C3 CD 92 10    .<.........}....
014EC0:  27 E8 03 64 00 0A 00 B1 C8 0E 20 E6 0F C6 30 C3    '..d...... ...0.
014ED0:  B8 90 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014EE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014EF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014F00:  00 53 43 41 4E 34 36 34 20 42 49 4E 00 00 00 00    .SCAN464 BIN....
014F10:  00 00 02 00 00 00 90 00 52 05 00 00 00 00 00 00    ........R.......
014F20:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014F30:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014F40:  52 05 00 FC 03 00 00 00 00 00 00 00 00 00 00 00    R...............
014F50:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014F60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014F70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014F80:  01 0D 90 21 09 90 C3 D1 BC 00 00 00 00 21 90 C3    ...!.........!..
014F90:  3E 90 C3 43 90 C3 48 90 C3 53 90 C3 58 90 C3 5D    >..C..H..S..X..]
014FA0:  90 53 43 41 CE 53 43 41 4E C6 53 43 41 4E D0 4C    .SCA.SCAN.SCAN.L
014FB0:  49 53 D4 4C 49 53 54 C6 4C 49 53 54 D0 00 CD 96    IS.LIST.LIST....
014FC0:  90 18 08 CD AA 90 18 03 CD 9B 90 21 51 91 22 92    ...........!Q.".
014FD0:  90 18 20 CD 96 90 18 08 CD AA 90 18 03 CD 9B 90    .. .............
014FE0:  21 C1 92 22 92 90 18 0B 3E 42 06 FC CD 27 BB 00    !.."....>B...'..
014FF0:  C3 8F BC 2A 4B 95 5E 23 56 2B 7A B3 28 EA E5 19    ...*K.^#V+z.(...
015000:  22 4B 95 E1 23 23 5E 23 56 23 ED 53 47 95 22 49    "K..##^#V#.SG."I
015010:  95 CD C1 92 18 DD 21 2B 91 18 03 21 EF 90 CD CE    ......!+...!....
015020:  90 22 ED 90 3E C9 32 6F 90 C9 CD CE 90 21 48 91    ."..>.2o.....!H.
015030:  22 ED 90 3D 20 5E 32 6F 90 DD 6E 00 DD 66 01 46    "..= ^2o..n..f.F
015040:  23 5E 23 56 EB 11 51 95 CD 8C BC D8 18 46 D1 C1    #^#V..Q......F..
015050:  ED 73 4F 95 C5 D5 11 70 01 ED 53 4B 95 F5 E5 3E    .sO....p..SK...>
015060:  42 06 C0 CD 27 BB CD 48 BB E1 F1 C9 C3 EF 90 C5    B...'..H........
015070:  47 CD 2B BD 78 C1 38 36 F5 CD 8A BB CD 1B BB 30    G.+.x.86.......0
015080:  1A FE C0 20 16 CD 8D BB 21 5A BB 22 ED 90 21 7A    ... ....!Z."..!z
015090:  94 CD F2 94 ED 7B 4F 95 C3 68 90 CD 2E BD 38 DC    .....{O..h....8.
0150A0:  CD 8D BB F1 F5 CD 31 BD F1 18 03 CD 5A BB FE 0A    ......1.....Z...
0150B0:  C0 CD 1B BB D0 FE C0 C0 CD 8A BB CD 18 BB F5 CD    ................
0150C0:  8D BB F1 FE C0 C0 18 C0 CD 95 BC D8 CD 92 BC 18    ................
0150D0:  C3 ED 73 4D 95 16 00 7E B7 C8 23 FE C5 C8 FE C0    ..sM...~..#.....
0150E0:  C8 FE 86 20 0A CD D8 91 FE A3 CA C1 92 18 0C FE    ... .....£......
0150F0:  B3 20 0D CD D8 91 FE 8B CA C1 92 CD DF 91 18 D5    . ..............
015100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0151A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0151B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0151C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0151D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0151E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0151F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0152A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0152B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0152C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0152D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0152E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0152F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015300:  FE 94 28 0C FE 95 28 08 FE BC 28 04 FE BD 20 0B    ..(...(...(... .
015310:  CD DF 91 79 FE 04 D2 C1 92 18 BA FE AE 28 04 FE    ...y.........(..
015320:  AF 20 0B CD DF 91 79 FE 03 D2 C1 92 18 A7 FE BB    . ....y.........
015330:  20 12 CD D8 91 FE 23 28 EA CD DF 91 79 FE 02 D2     .....#(....y...
015340:  C1 92 18 91 FE 7C 20 0B 23 CD EB 94 16 FF CD DF    .....| .#.......
015350:  91 18 82 2B 16 00 18 F6 7E FE 20 C0 23 18 F9 0E    ...+....~. .#...
015360:  01 7E B7 C8 23 FE 01 C8 FE 28 20 0E CD 5B 92 FE    .~..#....( ..[..
015370:  29 28 EE ED 7B 4D 95 C3 C1 92 FE 29 28 F5 FE 2C    )(..{M.....)(..,
015380:  20 09 0C A2 E5 C4 10 92 E1 18 D6 CD 73 92 18 D1     ...........s...
015390:  7E B7 C8 23 FE 01 C8 FE 28 28 F5 FE 20 28 F1 FE    ~..#....((.. (..
0153A0:  F4 28 ED FE 22 28 10 FE 03 28 0C FE AC 28 08 FE    .(.."(...(...(..
0153B0:  E4 20 0B 7E FE 03 C0 ED 7B 4D 95 C3 C1 92 FE FF    . .~....{M......
0153C0:  C0 46 21 4F 92 7E B8 28 EE 23 7E B7 20 F8 C9 03    .F!O.~.(.#~. ...
0153D0:  11 16 19 1C 43 71 73 75 79 7B 00 7E B7 C8 FE 01    ....Cqsuy{.~....
0153E0:  C8 23 FE 29 C8 FE 28 20 05 CD 5B 92 18 ED CD 73    .#.)..( ..[....s
0153F0:  92 18 E8 FE 0E 30 06 23 23 CD EB 94 C9 FE 18 D8    .....0.##.......
015400:  23 FE 19 C8 23 FE 1F D8 20 04 23 23 23 C9 2B 2B    #...#... .###.++
015410:  FE 22 20 03 C3 D4 94 FE 7C D8 20 06 ED 7B 4D 95    ." .....|. ..{M.
015420:  18 1F FE FF 20 02 7E 23 E5 CD AE 92 E1 C9 21 81    .... .~#......!.
015430:  94 BE 28 09 D8 23 F5 CD EB 94 F1 18 F4 ED 7B 4D    ..(..#........{M
015440:  95 2A 47 95 CD 04 95 3E 20 CD EC 90 2A 49 95 7E    .*G....> ...*I.~
015450:  B7 20 0A 3E 0D CD EC 90 3E 0A C3 EC 90 23 FE 01    . .>....>....#..
015460:  20 14 7E 23 FE 97 CA FC 93 FE C0 CA FC 93 2B 3E     .~#..........+>
015470:  3A CD EC 90 18 D9 FE 04 20 02 3C 3C FE 0E 30 13    :....... .<<..0.
015480:  47 23 23 CD F2 94 78 FE 07 30 C4 3E 27 90 CD EC    G##...x..0.>'...
015490:  90 18 BC FE 18 30 07 C6 22 CD EC 90 18 B1 FE 19    .....0..".......
0154A0:  20 0C 7E 23 E5 6F 26 00 CD 04 95 E1 18 A1 FE 1A     .~#.o&.........
0154B0:  28 04 FE 1E 20 08 5E 23 56 23 E5 EB 18 EA FE 1B    (... .^#V#......
0154C0:  20 27 3E 26 CD EC 90 3E 58 CD EC 90 5E 23 56 23     '>&...>X...^#V#
0154D0:  0E 00 06 08 CD B5 94 06 07 53 CD B5 94 AF CB 12    .........S......
0154E0:  17 C6 30 CD EC 90 C3 CF 92 FE 1C 20 29 3E 26 CD    ..0........ )>&.
0154F0:  EC 90 0E 00 AF 23 ED 6F CD C8 94 ED 6F CD C8 94    .....#.o....o...
015500:  00 53 43 41 4E 36 31 32 38 42 49 4E 00 00 00 00    .SCAN6128BIN....
015510:  00 00 02 00 00 00 90 00 3F 03 00 00 00 00 00 00    ........?.......
015520:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015530:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015540:  3F 03 00 E5 03 00 00 00 00 00 00 00 00 00 00 00    ?...............
015550:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015560:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015570:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015580:  01 0D 90 21 09 90 C3 D1 BC 00 00 00 00 18 90 C3    ...!............
015590:  32 90 C3 37 90 C3 3C 90 53 43 41 CE 53 43 41 4E    2..7..<.SCA.SCAN
0155A0:  C6 53 43 41 4E D0 00 3E 42 06 FC CD 27 BB 00 C3    .SCAN..>B...'...
0155B0:  8F BC CD 62 90 18 08 CD 76 90 18 03 CD 67 90 2A    ...b....v....g.*
0155C0:  38 93 5E 23 56 2B 7A B3 28 DD E5 19 22 38 93 E1    8.^#V+z.(..."8..
0155D0:  23 23 5E 23 56 23 ED 53 34 93 22 36 93 CD 1D 91    ##^#V#.S4."6....
0155E0:  18 DD 21 F7 90 18 03 21 BB 90 CD 9A 90 22 B9 90    ..!....!....."..
0155F0:  3E C9 32 2E 90 C9 CD 9A 90 21 14 91 22 B9 90 3D    >.2......!.."..=
015600:  20 5E 32 2E 90 DD 6E 00 DD 66 01 46 23 5E 23 56     ^2...n..f.F#^#V
015610:  EB 11 3E 93 CD 8C BC D8 18 46 D1 C1 ED 73 3C 93    ..>......F...s<.
015620:  C5 D5 11 70 01 ED 53 38 93 F5 E5 3E 42 06 C0 CD    ...p..S8...>B...
015630:  27 BB CD 48 BB E1 F1 C9 C3 BB 90 C5 47 CD 2B BD    '..H........G.+.
015640:  78 C1 38 36 F5 CD 8A BB CD 1B BB 30 1A FE C0 20    x.86.......0... 
015650:  16 CD 8D BB 21 5A BB 22 B9 90 21 9D 92 CD E8 92    ....!Z."..!.....
015660:  ED 7B 3C 93 C3 27 90 CD 2E BD 38 DC CD 8D BB F1    .{<..'....8.....
015670:  F5 CD 31 BD F1 18 03 CD 5A BB FE 0A C0 CD 1B BB    ..1.....Z.......
015680:  D0 FE C0 C0 CD 8A BB CD 18 BB F5 CD 8D BB F1 FE    ................
015690:  C0 C0 18 C0 CD 95 BC D8 CD 92 BC 18 C3 ED 73 3A    ..............s:
0156A0:  93 16 00 7E B7 C8 23 FE C5 C8 FE C0 C8 FE 86 20    ...~..#........ 
0156B0:  0A CD A4 91 FE A3 CA 8D 92 18 0C FE B3 20 0D CD    .....£....... ..
0156C0:  A4 91 FE 8B CA 8D 92 CD AB 91 18 D5 FE 94 28 0C    ..............(.
0156D0:  FE 95 28 08 FE BC 28 04 FE BD 20 0B CD AB 91 79    ..(...(... ....y
0156E0:  FE 04 D2 8D 92 18 BA FE AE 28 04 FE AF 20 0B CD    .........(... ..
0156F0:  AB 91 79 FE 03 D2 8D 92 18 A7 FE BB 20 12 CD A4    ..y......... ...
015700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
015710:  12 00 01 00 02 09 4E E5 12 00 C7 02 00 00 00 02    ......N.........
015720:  12 00 C3 02 00 00 00 02 12 00 C8 02 00 00 00 02    ................
015730:  12 00 C4 02 00 00 00 02 12 00 C9 02 00 00 00 02    ................
015740:  12 00 C5 02 00 00 00 02 12 00 C1 02 00 00 00 02    ................
015750:  12 00 C6 02 00 00 00 02 12 00 C2 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:  00 54 55 4E 45 20 20 20 20 42 41 53 00 00 00 00    .TUNE    BAS....
015810:  00 00 00 00 00 70 01 00 63 07 00 00 00 00 00 00    .....p..c.......
015820:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015830:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015840:  63 07 00 D7 03 00 94 02 8C 20 26 39 30 2C 36 39    c........ &90,69
015850:  2C 30 2C 26 39 31 2C 35 37 2C 30 2C 36 34 2C 30    ,0,&91,57,0,64,0
015860:  00 23 00 99 02 8C 20 26 39 30 2C 37 31 2C 34 30    .#.... &90,71,40
015870:  2C 26 39 31 2C 35 32 2C 34 30 2C 36 37 2C 34 30    ,&91,52,40,67,40
015880:  16 00 05 00 A1 20 FF 12 28 1C 00 9D 29 EF 0F 20    ..... ..(...).. 
015890:  EB 20 1E 2C 01 00 12 00 0A 00 CF 20 80 20 1A 00    . .,....... . ..
0158A0:  01 01 AA 20 1C FF 9C 00 1F 00 14 00 C7 20 1E 64    ... ......... .d
0158B0:  00 01 0D 00 00 65 F2 EF 0E 01 0D 00 00 61 64 64    .....e.......add
0158C0:  F2 EF FF 42 F4 0F 00 24 00 1E 00 9E 20 02 00 00    ...B...$.... ...
0158D0:  E9 EF 0E 20 EC 20 19 0E 01 C3 20 03 00 00 63 6F    ... . .... ...co
0158E0:  E4 01 02 00 00 63 68 EB EF 0E 00 34 00 28 00 9E    .....ch....4.(..
0158F0:  20 02 00 00 EA EF 0E 20 EC 20 19 0B 01 02 00 00     ...... . ......
015900:  E1 EF FF 1D 28 22 26 22 F4 AC 28 03 00 00 63 6F    ....("&"..(...co
015910:  E4 2C 02 00 00 EA F6 10 F4 0F 2C 10 29 29 00 3A    .,........,.)).:
015920:  00 32 00 BE 20 0D 00 00 61 64 64 F2 2C 02 00 00    .2.. ...add.,...
015930:  E1 01 02 00 00 63 68 EB EF 02 00 00 63 68 EB F4    .....ch.....ch..
015940:  02 00 00 E1 01 0D 00 00 61 64 64 F2 EF 0D 00 00    ........add.....
015950:  61 64 64 F2 F4 0F 01 B0 00 49 00 3C 00 A1 20 02    add......I.<.. .
015960:  00 00 63 68 EB F2 FF 1D 28 22 26 22 F4 FF 79 28    ..ch....("&"..y(
015970:  03 00 00 63 6F E4 2C 11 29 29 20 EB 20 BF 22 45    ...co.,.)) . ."E
015980:  72 72 6F 72 20 69 6E 20 6C 69 6E 65 22 3B 02 00    rror in line";..
015990:  00 E9 F6 19 0A F4 19 64 01 0D 00 00 65 F2 EF F5    .......d....e...
0159A0:  0F 00 12 00 46 00 B0 01 A1 20 0D 00 00 65 F2 20    ....F.... ...e. 
0159B0:  EB 20 98 00 0B 00 50 00 83 20 FF 42 F4 0F 00 23    . ....P.. .B...#
0159C0:  00 5A 00 BF 22 7C 43 48 4F 55 54 20 61 6E 64 20    .Z.."|CHOUT and 
0159D0:  7C 53 45 4E 44 20 69 6E 73 74 61 6C 6C 65 64 2E    |SEND installed.
0159E0:  22 00 22 00 64 00 8C 20 30 31 30 39 39 44 32 31    ".".d.. 01099D21
0159F0:  31 42 39 44 43 33 44 31 42 43 31 31 39 44 43 33    1B9DC3D1BC119DC3
015A00:  20 57 52 49 54 45 23 39 2C 6C 6B 28 79 2C 78 29     WRITE#9,lk(y,x)
015A10:  3A 79 3D 6C 6B 28 79 2C 78 29 3A 78 3D 31 0D 0A    :y=lk(y,x):x=1..
015A20:  37 33 36 20 57 45 4E 44 3A 4E 45 58 54 0D 0A 37    736 WEND:NEXT..7
015A30:  34 30 20 43 4C 4F 53 45 4F 55 54 3A 52 45 54 55    40 CLOSEOUT:RETU
015A40:  52 4E 0D 0A 38 30 30 20 70 61 72 65 6E 74 3D 30    RN..800 parent=0
015A50:  3A 63 77 6F 72 64 3D 72 69 28 30 29 3A 57 48 49    :cword=ri(0):WHI
015A60:  4C 45 20 63 77 6F 72 64 3E 30 3A 70 61 72 65 6E    LE cword>0:paren
015A70:  74 3D 63 77 6F 72 64 0D 0A 38 31 30 20 49 46 20    t=cword..810 IF 
015A80:  77 6F 72 64 24 3D 77 24 28 70 61 72 65 6E 74 29    word$=w$(parent)
015A90:  20 54 48 45 4E 20 52 45 54 55 52 4E 0D 0A 38 32     THEN RETURN..82
015AA0:  30 20 49 46 20 77 6F 72 64 24 3C 77 24 28 70 61    0 IF word$<w$(pa
015AB0:  72 65 6E 74 29 20 54 48 45 4E 20 63 77 6F 72 64    rent) THEN cword
015AC0:  3D 6C 65 28 70 61 72 65 6E 74 29 20 45 4C 53 45    =le(parent) ELSE
015AD0:  20 63 77 6F 72 64 3D 72 69 28 70 61 72 65 6E 74     cword=ri(parent
015AE0:  29 0D 0A 38 33 30 20 57 45 4E 44 3A 52 45 54 55    )..830 WEND:RETU
015AF0:  52 4E 0D 0A 38 34 30 20 49 46 20 77 6F 72 64 24    RN..840 IF word$
015B00:  3C 77 24 28 70 61 72 65 6E 74 29 20 54 48 45 4E    <w$(parent) THEN
015B10:  20 6C 65 28 70 61 72 65 6E 74 29 3D 63 77 6F 72     le(parent)=cwor
015B20:  64 20 45 4C 53 45 20 72 69 28 70 61 72 65 6E 74    d ELSE ri(parent
015B30:  29 3D 63 77 6F 72 64 0D 0A 38 35 30 20 52 45 54    )=cword..850 RET
015B40:  55 52 4E 0D 0A 39 30 30 20 6C 65 76 65 6C 3D 30    URN..900 level=0
015B50:  3A 73 74 61 63 6B 28 6C 65 76 65 6C 29 3D 72 69    :stack(level)=ri
015B60:  28 30 29 3A 64 24 3D 22 22 0D 0A 39 31 30 20 50    (0):d$=""..910 P
015B70:  52 49 4E 54 20 54 41 42 28 6C 65 76 65 6C 2A 31    RINT TAB(level*1
015B80:  36 2B 31 29 3B 64 24 3B 4C 45 46 54 24 28 77 24    6+1);d$;LEFT$(w$
015B90:  28 73 74 61 63 6B 28 6C 65 76 65 6C 29 29 2C 31    (stack(level)),1
015BA0:  33 29 3B 0D 0A 39 32 30 20 49 46 20 6C 65 76 65    3);..920 IF leve
015BB0:  6C 3D 34 20 54 48 45 4E 20 39 35 30 0D 0A 39 33    l=4 THEN 950..93
015BC0:  30 20 49 46 20 6C 65 28 73 74 61 63 6B 28 6C 65    0 IF le(stack(le
015BD0:  76 65 6C 29 29 3C 3E 30 20 54 48 45 4E 20 64 24    vel))<>0 THEN d$
015BE0:  3D 22 4C 3A 22 3A 6C 65 76 65 6C 3D 6C 65 76 65    ="L:":level=leve
015BF0:  6C 2B 31 3A 73 74 61 63 6B 28 6C 65 76 65 6C 29    l+1:stack(level)
015C00:  35 34 31 00 22 00 6E 00 8C 20 39 38 39 44 43 33    541.".n.. 989DC3
015C10:  37 37 39 44 35 33 34 35 34 45 43 34 34 33 34 38    779D53454EC44348
015C20:  34 46 35 39 30 00 22 00 78 00 8C 20 35 35 44 34    4F590.".x.. 55D4
015C30:  30 30 30 30 30 30 30 30 30 30 43 33 33 37 39 44    0000000000C3379D
015C40:  43 33 35 34 33 44 37 00 22 00 82 00 8C 20 39 44    C3543D7.".... 9D
015C50:  43 33 33 37 39 44 43 33 35 34 39 44 43 33 34 33    C3379DC3549DC343
015C60:  39 44 43 33 36 33 36 42 31 00 22 00 8C 00 8C 20    9DC3636B1.".... 
015C70:  39 44 43 33 34 46 39 44 43 33 37 32 39 44 30 31    9DC34F9DC3729D01
015C80:  45 43 46 38 33 45 30 33 36 34 34 00 22 00 96 00    ECF83E03644."...
015C90:  8C 20 45 44 37 39 33 45 31 35 45 44 37 39 43 39    . ED793E15ED79C9
015CA0:  30 31 46 32 46 38 33 45 30 33 36 31 34 00 22 00    01F2F83E03614.".
015CB0:  A0 00 8C 20 45 44 37 39 33 45 31 36 45 44 37 39    ... ED793E16ED79
015CC0:  43 39 30 31 45 30 46 38 31 38 46 32 36 43 43 00    C901E0F818F26CC.
015CD0:  22 00 AA 00 8C 20 30 31 45 45 46 38 46 35 45 44    ".... 01EEF8F5ED
015CE0:  37 38 45 36 30 32 32 38 46 41 46 31 30 44 37 34    78E60228FAF10D74
015CF0:  39 00 22 00 B4 00 8C 20 45 44 37 39 43 39 30 31    9.".... ED79C901
015D00:  46 32 46 38 46 35 45 44 37 38 45 36 30 32 32 38    F2F8F5ED78E60228
015D10:  37 38 34 00 22 00 BE 00 8C 20 46 41 46 31 30 43    784.".... FAF10C
015D20:  45 44 37 39 43 39 30 31 45 30 46 38 31 38 45 46    ED79C901E0F818EF
015D30:  46 45 38 30 34 00 22 00 C8 00 8C 20 30 31 43 30    FE804.".... 01C0
015D40:  44 44 37 45 30 30 31 31 31 46 39 44 30 31 30 36    DD7E00111F9D0106
015D50:  30 30 32 31 33 31 31 00 22 00 D2 00 8C 20 32 35    0021311.".... 25
015D60:  39 44 42 37 32 30 30 34 45 44 42 30 31 38 39 32    9DB72004EDB01892
015D70:  33 44 32 31 32 42 34 36 44 00 22 00 DC 00 8C 20    3D212B46D.".... 
015D80:  39 44 32 38 46 36 32 31 33 31 39 44 31 38 46 31    9D28F621319D18F1
015D90:  34 46 43 42 30 31 30 36 34 44 34 00 22 00 E6 00    4FCB01064D4."...
015DA0:  8C 20 30 30 44 44 30 39 34 37 44 44 32 42 44 44    . 00DD0947DD2BDD
015DB0:  32 42 44 44 37 45 30 30 43 35 35 35 44 00 22 00    2BDD7E00C555D.".
015DC0:  F0 00 8C 20 43 44 32 32 39 44 43 31 31 30 46 32    ... CD229DC110F2
015DD0:  43 39 30 30 30 30 30 30 30 30 30 30 34 31 38 00    C90000000000418.
015DE0:  26 00 2C 01 7C 00 43 48 4F 55 D4 2C 0E 01 C5 20    &.,.|.CHOU.,... 
015DF0:  31 20 66 6F 72 20 45 4D 52 2C 20 32 20 66 6F 72    1 for EMR, 2 for
015E00:  3D 6C 65 28 73 74 61 63 6B 28 6C 65 76 65 6C 2D    =le(stack(level-
015E10:  31 29 29 3A 47 4F 53 55 42 20 39 31 30 0D 0A 39    1)):GOSUB 910..9
015E20:  34 30 20 49 46 20 72 69 28 73 74 61 63 6B 28 6C    40 IF ri(stack(l
015E30:  65 76 65 6C 29 29 3C 3E 30 20 54 48 45 4E 20 64    evel))<>0 THEN d
015E40:  24 3D 22 52 3A 22 3A 6C 65 76 65 6C 3D 6C 65 76    $="R:":level=lev
015E50:  65 6C 2B 31 3A 73 74 61 63 6B 28 6C 65 76 65 6C    el+1:stack(level
015E60:  29 3D 72 69 28 73 74 61 63 6B 28 6C 65 76 65 6C    )=ri(stack(level
015E70:  2D 31 29 29 3A 47 4F 53 55 42 20 39 31 30 0D 0A    -1)):GOSUB 910..
015E80:  39 35 30 20 6C 65 76 65 6C 3D 6C 65 76 65 6C 2D    950 level=level-
015E90:  31 3A 52 45 54 55 52 4E 0D 0A 1A 00 00 00 00 00    1:RETURN........
015EA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015EB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015EC0:  06 0B 00 2E 02 54 55 52 4E 0D 0A 1A 20 20 20 24    .....TURN...   $
015ED0:  24 24 FF 00 FF 00 00 0A 00 00 FE 0C 00 12 32 00    $$............2.
015EE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015EF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015F00:  3C 77 24 28 70 61 72 65 6E 74 29 20 54 48 45 4E    <w$(parent) THEN
015F10:  20 6C 65 28 70 61 72 65 6E 74 29 3D 63 77 6F 72     le(parent)=cwor
015F20:  64 20 45 4C 53 45 20 72 69 28 70 61 72 65 6E 74    d ELSE ri(parent
015F30:  29 3D 63 77 6F 72 64 0D 0A 38 35 30 20 52 45 54    )=cword..850 RET
015F40:  55 52 4E 0D 0A 39 30 30 20 6C 65 76 65 6C 3D 30    URN..900 level=0
015F50:  3A 73 74 61 63 6B 28 6C 65 76 65 6C 29 3D 72 69    :stack(level)=ri
015F60:  28 30 29 3A 64 24 3D 22 22 0D 0A 39 31 30 20 50    (0):d$=""..910 P
015F70:  52 49 4E 54 20 54 41 42 28 6C 65 76 65 6C 2A 31    RINT TAB(level*1
015F80:  36 2B 31 29 3B 64 24 3B 4C 45 46 54 24 28 77 24    6+1);d$;LEFT$(w$
015F90:  28 73 74 61 63 6B 28 6C 65 76 65 6C 29 29 2C 31    (stack(level)),1
015FA0:  33 29 3B 0D 0A 39 32 30 20 49 46 20 6C 65 76 65    3);..920 IF leve
015FB0:  6C 3D 34 20 54 48 45 4E 20 39 35 30 0D 0A 39 33    l=4 THEN 950..93
015FC0:  30 20 49 46 20 6C 65 28 73 74 61 63 6B 28 6C 65    0 IF le(stack(le
015FD0:  76 65 6C 29 29 3C 3E 30 20 54 48 45 4E 20 64 24    vel))<>0 THEN d$
015FE0:  3D 22 4C 3A 22 3A 6C 65 76 65 6C 3D 6C 65 76 65    ="L:":level=leve
015FF0:  6C 2B 31 3A 73 74 61 63 6B 28 6C 65 76 65 6C 29    l+1:stack(level)
016000:  20 44 48 43 50 00 17 00 36 01 C7 20 1E F4 01 01     DHCP...6.. ....
016010:  0D 00 00 F4 EF 0F 01 9F 20 1E 90 01 00 0F 00 40    ........ ......@
016020:  01 9D 20 19 0C 20 9F 20 1E 90 01 00 10 00 4A 01    .. .. . ......J.
016030:  D6 20 0D 00 00 F4 F2 19 64 01 D5 00 06 00 54 01    . ......d.....T.
016040:  98 00 1D 00 90 01 0D 00 00 F4 EF 0D 00 00 F4 F5    ................
016050:  0F 01 A1 20 0D 00 00 F4 EE 0E 20 EB 20 C9 00 0D    ... ...... . ...
016060:  00 9A 01 DB 01 C3 20 0D 00 00 E1 00 19 00 A4 01    ...... .........
016070:  D6 20 0D 00 00 E1 F0 0E 01 7C 00 53 45 4E C4 2C    . .......|.SEN.,
016080:  0D 00 00 E1 00 0D 00 AE 01 C3 20 0D 00 00 E1 01    .......... .....
016090:  D5 00 0F 00 B8 01 0D 00 00 F4 EF F5 0D 00 00 E1    ................
0160A0:  00 08 00 C2 01 DC 01 C9 00 23 00 F4 01 8C 20 26    .........#.... &
0160B0:  39 30 2C 36 34 2C 35 30 2C 26 39 31 2C 35 32 2C    90,64,50,&91,52,
0160C0:  34 30 2C 35 35 2C 34 30 2C 2D 34 00 18 00 FE 01    40,55,40,-4.....
0160D0:  8C 20 26 39 30 2C 36 34 2C 30 2C 36 34 2C 35 30    . &90,64,0,64,50
0160E0:  2C 2D 32 00 1D 00 08 02 8C 20 26 39 30 2C 36 34    ,-2...... &90,64
0160F0:  2C 30 2C 26 39 31 2C 35 32 2C 30 2C 35 35 2C 30    ,0,&91,52,0,55,0
016100:  00 23 00 0D 02 8C 20 26 39 30 2C 37 31 2C 35 30    .#.... &90,71,50
016110:  2C 26 39 31 2C 35 32 2C 34 30 2C 35 35 2C 34 30    ,&91,52,40,55,40
016120:  2C 2D 34 00 18 00 12 02 8C 20 26 39 30 2C 37 31    ,-4...... &90,71
016130:  2C 30 2C 37 31 2C 35 30 2C 2D 32 00 1D 00 1C 02    ,0,71,50,-2.....
016140:  8C 20 26 39 30 2C 37 31 2C 30 2C 26 39 31 2C 35    . &90,71,0,&91,5
016150:  32 2C 30 2C 35 35 2C 30 00 23 00 21 02 8C 20 26    2,0,55,0.#.!.. &
016160:  39 30 2C 36 36 2C 35 30 2C 26 39 31 2C 35 30 2C    90,66,50,&91,50,
016170:  34 30 2C 35 37 2C 34 30 2C 2D 33 00 18 00 26 02    40,57,40,-3...&.
016180:  8C 20 26 39 30 2C 36 36 2C 30 2C 36 37 2C 35 30    . &90,66,0,67,50
016190:  2C 2D 31 00 18 00 30 02 8C 20 26 39 30 2C 36 37    ,-1...0.. &90,67
0161A0:  2C 30 2C 36 36 2C 35 30 2C 2D 32 00 1D 00 3A 02    ,0,66,50,-2...:.
0161B0:  8C 20 26 39 30 2C 36 36 2C 30 2C 26 39 31 2C 35    . &90,66,0,&91,5
0161C0:  30 2C 30 2C 35 37 2C 30 00 23 00 3F 02 8C 20 26    0,0,57,0.#.?.. &
0161D0:  39 30 2C 36 34 2C 35 30 2C 26 39 31 2C 35 32 2C    90,64,50,&91,52,
0161E0:  34 30 2C 35 35 2C 34 30 2C 2D 36 00 26 00 44 02    40,55,40,-6.&.D.
0161F0:  8C 20 26 39 30 2C 36 34 2C 30 2C 26 39 31 2C 35    . &90,64,0,&91,5
016200:  23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61    #Programmers' Pa
016210:  74 63 68 20 32 30 20 2D 20 57 41 43 43 49 20 31    tch 20 - WACCI 1
016220:  32 39 2C 20 41 70 72 69 6C 20 31 39 39 39 0D 0A    29, April 1999..
016230:  20 20 20 50 52 4F 47 52 41 4D 4D 45 52 53 27 20       PROGRAMMERS' 
016240:  50 41 54 43 48 20 32 30 0D 0A 20 20 20 42 79 20    PATCH 20..   By 
016250:  4D 61 74 74 68 65 77 20 50 68 69 6C 6C 69 70 73    Matthew Phillips
016260:  0D 0A 0D 0A 20 20 20 49 66 20 77 65 20 77 61 6E    ....   If we wan
016270:  74 65 64 20 74 6F 20 67 65 6E 65 72 61 74 65 20    ted to generate 
016280:  6E 75 6D 62 65 72 73 20 20 66 72 6F 6D 20 20 74    numbers  from  t
016290:  68 65 20 41 49 20 70 72 6F 67 72 61 6D 2C 20 74    he AI program, t
0162A0:  68 65 20 66 75 6E 63 74 69 6F 6E 20 63 6F 6D 65    he function come
0162B0:  73 0D 0A 20 20 20 69 6E 20 6F 75 72 20 61 72 72    s..   in our arr
0162C0:  61 79 20 6F 66 20 70 72 6F 62 61 62 69 6C 69 74    ay of probabilit
0162D0:  79 2E 20 20 20 59 6F 75 20 20 77 69 6C 6C 20 20    y.   You  will  
0162E0:  67 65 6E 65 72 61 74 65 20 20 6E 75 6D 62 65 72    generate  number
0162F0:  73 20 66 72 6F 6D 20 74 68 65 20 66 69 72 73 74    s from the first
016300:  0D 0A 20 20 20 6C 65 74 74 65 72 20 69 6E 20 61    ..   letter in a
016310:  6C 70 68 61 62 65 74 69 63 61 6C 20 6F 72 64 65    lphabetical orde
016320:  72 20 74 6F 20 70 75 74 20 69 74 20 20 69 6E 20    r to put it  in 
016330:  61 20 66 75 6E 63 74 69 6F 6E 2E 20 20 4F 66 20    a function.  Of 
016340:  63 6F 75 72 73 65 2C 20 61 73 20 65 61 63 68 0D    course, as each.
016350:  0A 20 20 20 77 6F 72 64 20 69 73 2C 20 69 74 20    .   word is, it 
016360:  6E 65 65 64 73 20 74 6F 20 6F 75 72 20 77 6F 72    needs to our wor
016370:  64 73 2E 20 20 20 45 76 65 72 79 20 20 74 69 6D    ds.   Every  tim
016380:  65 20 77 65 20 73 74 6F 72 65 20 6D 6F 72 65 20    e we store more 
016390:  6F 66 74 65 6E 20 74 68 61 6E 20 6E 6F 74 0D 0A    often than not..
0163A0:  20 20 20 74 68 65 20 75 73 65 72 27 73 20 73 65       the user's se
0163B0:  6E 74 65 6E 63 65 73 2E 20 20 4C 69 6E 65 20 38    ntences.  Line 8
0163C0:  30 30 20 69 73 20 71 75 69 74 65 20 20 63 6F 6D    00 is quite  com
0163D0:  70 6C 69 63 61 74 65 64 2C 20 62 75 74 20 69 74    plicated, but it
0163E0:  20 68 61 73 20 74 6F 20 73 74 6F 72 65 0D 0A 20     has to store.. 
0163F0:  20 20 74 68 65 20 77 6F 72 64 73 20 69 6E 20 6F      the words in o
016400:  49 4C 45 20 4C 45 46 54 24 28 61 24 2C 31 29 3D    ILE LEFT$(a$,1)=
016410:  22 20 22 3A 61 24 3D 4D 49 44 24 28 61 24 2C 32    " ":a$=MID$(a$,2
016420:  29 3A 57 45 4E 44 3A 52 45 54 55 52 4E 0D 0A 34    ):WEND:RETURN..4
016430:  30 30 20 6A 3D 6C 6B 28 70 77 6F 72 64 2C 30 29    00 j=lk(pword,0)
016440:  3A 78 3D 31 3A 79 3D 70 77 6F 72 64 0D 0A 34 31    :x=1:y=pword..41
016450:  30 20 57 48 49 4C 45 20 6A 3E 30 20 41 4E 44 20    0 WHILE j>0 AND 
016460:  63 77 6F 72 64 3C 3E 6C 6B 28 79 2C 78 29 3A 6A    cword<>lk(y,x):j
016470:  3D 6A 2D 31 3A 78 3D 78 2B 31 0D 0A 34 31 35 20    =j-1:x=x+1..415 
016480:  49 46 20 78 3D 6D 6C 69 6E 6B 73 20 54 48 45 4E    IF x=mlinks THEN
016490:  20 79 3D 6C 6B 28 79 2C 78 29 3A 78 3D 31 0D 0A     y=lk(y,x):x=1..
0164A0:  34 32 30 20 57 45 4E 44 3A 49 46 20 6A 3E 30 20    420 WEND:IF j>0 
0164B0:  54 48 45 4E 20 34 34 30 0D 0A 34 33 30 20 6C 6B    THEN 440..430 lk
0164C0:  28 70 77 6F 72 64 2C 30 29 3D 6C 6B 28 70 77 6F    (pword,0)=lk(pwo
0164D0:  72 64 2C 30 29 2B 31 3A 6C 6B 28 79 2C 78 29 3D    rd,0)+1:lk(y,x)=
0164E0:  63 77 6F 72 64 0D 0A 34 33 35 20 49 46 20 78 3D    cword..435 IF x=
0164F0:  6D 6C 69 6E 6B 73 2D 31 20 54 48 45 4E 20 6E 77    mlinks-1 THEN nw
016500:  6F 72 64 73 3D 6E 77 6F 72 64 73 2B 31 3A 6C 6B    ords=nwords+1:lk
016510:  28 79 2C 6D 6C 69 6E 6B 73 29 3D 6E 77 6F 72 64    (y,mlinks)=nword
016520:  73 3A 6C 6B 28 6E 77 6F 72 64 73 2C 30 29 3D 30    s:lk(nwords,0)=0
016530:  3A 77 24 28 6E 77 6F 72 64 73 29 3D 22 22 0D 0A    :w$(nwords)=""..
016540:  34 34 30 20 52 45 54 55 52 4E 0D 0A 35 30 30 20    440 RETURN..500 
016550:  69 3D 49 4E 54 28 52 4E 44 2A 6C 6B 28 70 77 6F    i=INT(RND*lk(pwo
016560:  72 64 2C 30 29 2B 31 29 0D 0A 35 30 35 20 57 48    rd,0)+1)..505 WH
016570:  49 4C 45 20 69 3E 3D 6D 6C 69 6E 6B 73 3A 69 3D    ILE i>=mlinks:i=
016580:  31 2B 69 2D 6D 6C 69 6E 6B 73 3A 70 77 6F 72 64    1+i-mlinks:pword
016590:  3D 6C 6B 28 70 77 6F 72 64 2C 6D 6C 69 6E 6B 73    =lk(pword,mlinks
0165A0:  29 3A 57 45 4E 44 0D 0A 35 31 30 20 70 77 6F 72    ):WEND..510 pwor
0165B0:  64 3D 6C 6B 28 70 77 6F 72 64 2C 69 29 3A 52 45    d=lk(pword,i):RE
0165C0:  54 55 52 4E 0D 0A 36 30 30 20 66 69 6C 65 24 3D    TURN..600 file$=
0165D0:  4D 49 44 24 28 61 24 2C 37 29 3A 49 46 20 66 69    MID$(a$,7):IF fi
0165E0:  6C 65 24 3D 22 22 20 54 48 45 4E 20 66 69 6C 65    le$="" THEN file
0165F0:  24 3D 22 56 4F 43 41 42 22 0D 0A 36 31 30 20 4F    $="VOCAB"..610 O
016600:  72 64 65 72 2E 20 20 59 65 73 2C 20 69 74 20 73    rder.  Yes, it s
016610:  65 65 6D 73 20 74 6F 20 74 65 6C 6C 20 75 73 20    eems to tell us 
016620:  61 20 62 69 72 74 68 64 61 79 2E 0D 0A 0D 0A 20    a birthday..... 
016630:  20 20 44 4F 4E 27 54 20 47 4F 20 41 57 41 59 21      DON'T GO AWAY!
016640:  0D 0A 20 20 20 49 66 20 20 79 6F 75 20 20 64 69    ..   If  you  di
016650:  64 6E 27 74 20 20 66 6F 6C 6C 6F 77 20 20 74 68    dn't  follow  th
016660:  61 74 2C 20 20 64 6F 6E 27 74 20 20 77 6F 72 72    at,  don't  worr
016670:  79 20 20 2D 20 20 49 20 20 64 69 64 6E 27 74 20    y  -  I  didn't 
016680:  20 65 69 74 68 65 72 2E 20 20 20 54 68 61 74 0D     either.   That.
016690:  0A 20 20 20 69 6E 74 72 6F 64 75 63 74 69 6F 6E    .   introduction
0166A0:  20 77 61 73 20 67 65 6E 65 72 61 74 65 64 20 62     was generated b
0166B0:  79 20 74 68 65 20 41 49 20 70 72 6F 67 72 61 6D    y the AI program
0166C0:  20 20 77 68 65 6E 20 49 20 66 65 64 20 69 74 20      when I fed it 
0166D0:  74 68 65 20 66 69 72 73 74 20 68 61 6C 66 0D 0A    the first half..
0166E0:  20 20 20 6F 66 20 74 68 69 73 20 6D 6F 6E 74 68       of this month
0166F0:  27 73 20 61 72 74 69 63 6C 65 2E 20 20 49 66 20    's article.  If 
016700:  20 79 6F 75 20 20 66 69 6E 64 20 20 74 68 65 20     you  find  the 
016710:  69 6E 74 72 6F 64 75 63 74 69 6F 6E 20 65 61 73    introduction eas
016720:  69 65 72 20 74 6F 20 66 6F 6C 6C 6F 77 0D 0A 20    ier to follow.. 
016730:  20 20 74 68 61 6E 20 74 68 65 20 72 65 73 74 20      than the rest 
016740:  6F 66 20 74 68 65 20 61 72 74 69 63 6C 65 2C 20    of the article, 
016750:  74 68 65 6E 20 77 72 69 74 65 20 69 6E 20 74 6F    then write in to
016760:  20 46 61 69 72 20 43 6F 6D 6D 65 6E 74 20 74 6F     Fair Comment to
016770:  20 61 73 6B 20 4A 6F 68 6E 20 74 6F 0D 0A 20 20     ask John to..  
016780:  20 67 69 76 65 20 6D 65 20 74 68 65 20 73 61 63     give me the sac
016790:  6B 21 0D 0A 0D 0A 20 20 20 4C 61 73 74 20 74 69    k!....   Last ti
0167A0:  6D 65 20 77 65 20 61 64 64 65 64 20 61 20 62 69    me we added a bi
0167B0:  6E 61 72 79 20 74 72 65 65 20 73 74 72 75 63 74    nary tree struct
0167C0:  75 72 65 20 74 6F 20 74 68 65 20 41 49 20 63 68    ure to the AI ch
0167D0:  61 74 20 70 72 6F 67 72 61 6D 20 69 6E 20 6F 72    at program in or
0167E0:  64 65 72 0D 0A 20 20 20 74 6F 20 73 70 65 65 64    der..   to speed
0167F0:  20 75 70 20 74 68 65 20 73 65 61 72 63 68 69 6E     up the searchin
016800:  50 45 4E 49 4E 20 66 69 6C 65 24 3A 49 4E 50 55    PENIN file$:INPU
016810:  54 23 39 2C 6E 77 6F 72 64 73 0D 0A 36 32 30 20    T#9,nwords..620 
016820:  46 4F 52 20 69 3D 30 20 54 4F 20 6E 77 6F 72 64    FOR i=0 TO nword
016830:  73 3A 49 4E 50 55 54 23 39 2C 77 24 28 69 29 2C    s:INPUT#9,w$(i),
016840:  6C 6B 28 69 2C 30 29 3A 6C 65 28 69 29 3D 30 3A    lk(i,0):le(i)=0:
016850:  72 69 28 69 29 3D 30 0D 0A 36 32 35 20 77 6F 72    ri(i)=0..625 wor
016860:  64 24 3D 77 24 28 69 29 3A 49 46 20 77 6F 72 64    d$=w$(i):IF word
016870:  24 3E 22 22 20 54 48 45 4E 20 47 4F 53 55 42 20    $>"" THEN GOSUB 
016880:  38 30 30 3A 63 77 6F 72 64 3D 69 3A 47 4F 53 55    800:cword=i:GOSU
016890:  42 20 38 34 30 0D 0A 36 33 30 20 6A 3D 6C 6B 28    B 840..630 j=lk(
0168A0:  69 2C 30 29 3A 79 3D 69 3A 78 3D 31 3A 57 48 49    i,0):y=i:x=1:WHI
0168B0:  4C 45 20 6A 3E 30 3A 6A 3D 6A 2D 31 3A 49 4E 50    LE j>0:j=j-1:INP
0168C0:  55 54 23 39 2C 6C 6B 28 79 2C 78 29 3A 78 3D 78    UT#9,lk(y,x):x=x
0168D0:  2B 31 0D 0A 36 33 35 20 49 46 20 78 3D 6D 6C 69    +1..635 IF x=mli
0168E0:  6E 6B 73 20 54 48 45 4E 20 49 4E 50 55 54 23 39    nks THEN INPUT#9
0168F0:  2C 6C 6B 28 79 2C 78 29 3A 79 3D 6C 6B 28 79 2C    ,lk(y,x):y=lk(y,
016900:  78 29 3A 78 3D 31 0D 0A 36 33 36 20 57 45 4E 44    x):x=1..636 WEND
016910:  3A 4E 45 58 54 0D 0A 36 34 30 20 43 4C 4F 53 45    :NEXT..640 CLOSE
016920:  49 4E 3A 52 45 54 55 52 4E 0D 0A 37 30 30 20 66    IN:RETURN..700 f
016930:  69 6C 65 24 3D 4D 49 44 24 28 61 24 2C 37 29 3A    ile$=MID$(a$,7):
016940:  49 46 20 66 69 6C 65 24 3D 22 22 20 54 48 45 4E    IF file$="" THEN
016950:  20 66 69 6C 65 24 3D 22 56 4F 43 41 42 22 0D 0A     file$="VOCAB"..
016960:  37 31 30 20 4F 50 45 4E 4F 55 54 20 66 69 6C 65    710 OPENOUT file
016970:  24 3A 57 52 49 54 45 23 39 2C 6E 77 6F 72 64 73    $:WRITE#9,nwords
016980:  0D 0A 37 32 30 20 46 4F 52 20 69 3D 30 20 54 4F    ..720 FOR i=0 TO
016990:  20 6E 77 6F 72 64 73 3A 57 52 49 54 45 23 39 2C     nwords:WRITE#9,
0169A0:  77 24 28 69 29 2C 6C 6B 28 69 2C 30 29 0D 0A 37    w$(i),lk(i,0)..7
0169B0:  33 30 20 6A 3D 6C 6B 28 69 2C 30 29 3A 79 3D 69    30 j=lk(i,0):y=i
0169C0:  3A 78 3D 31 3A 57 48 49 4C 45 20 6A 3E 30 3A 6A    :x=1:WHILE j>0:j
0169D0:  3D 6A 2D 31 3A 57 52 49 54 45 23 39 2C 6C 6B 28    =j-1:WRITE#9,lk(
0169E0:  79 2C 78 29 3A 78 3D 78 2B 31 0D 0A 37 33 35 20    y,x):x=x+1..735 
0169F0:  49 46 20 78 3D 6D 6C 69 6E 6B 73 20 54 48 45 4E    IF x=mlinks THEN
016A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
016A10:  13 00 01 00 02 09 4E E5 13 00 C5 02 00 00 00 02    ......N.........
016A20:  13 00 C1 02 00 00 00 02 13 00 C6 02 00 00 00 02    ................
016A30:  13 00 C2 02 00 00 00 02 13 00 C7 02 00 00 00 02    ................
016A40:  13 00 C3 02 00 00 00 02 13 00 C8 02 00 00 00 02    ................
016A50:  13 00 C4 02 00 00 00 02 13 00 C9 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:  49 43 53 20 43 4F 4D 4D 41 4E 44 53 0D 0A 20 20    ICS COMMANDS..  
016B10:  20 4D 61 6E 79 20 6F 66 20 74 68 65 20 65 6E 68     Many of the enh
016B20:  61 6E 63 65 6D 65 6E 74 73 20 61 64 64 65 64 20    ancements added 
016B30:  69 6E 20 20 42 41 53 49 43 20 20 31 2E 31 20 72    in  BASIC  1.1 r
016B40:  65 6C 61 74 65 20 74 6F 20 67 72 61 70 68 69 63    elate to graphic
016B50:  73 20 68 61 6E 64 6C 69 6E 67 2E 0D 0A 20 20 20    s handling...   
016B60:  54 68 65 20 4D 4F 56 45 2C 20 4D 4F 56 45 52 2C    The MOVE, MOVER,
016B70:  20 44 52 41 57 2C 20 20 44 52 41 57 52 2C 20 20     DRAW,  DRAWR,  
016B80:  50 4C 4F 54 20 20 61 6E 64 20 20 50 4C 4F 54 52    PLOT  and  PLOTR
016B90:  20 20 68 61 76 65 20 20 68 61 64 20 65 78 74 72      have  had extr
016BA0:  61 20 6F 70 74 69 6F 6E 61 6C 0D 0A 20 20 20 70    a optional..   p
016BB0:  61 72 61 6D 65 74 65 72 73 20 61 64 64 65 64 2C    arameters added,
016BC0:  20 77 68 69 63 68 20 79 6F 75 20 77 69 6C 6C 20     which you will 
016BD0:  6E 65 65 64 20 20 74 6F 20 20 72 65 6D 6F 76 65    need  to  remove
016BE0:  20 69 6E 20 6F 72 64 65 72 20 74 6F 20 67 65 74     in order to get
016BF0:  20 70 72 6F 67 72 61 6D 73 0D 0A 20 20 20 74 6F     programs..   to
016C00:  20 77 6F 72 6B 20 6F 6E 20 74 68 65 20 34 36 34     work on the 464
016C10:  2E 0D 0A 0D 0A 20 20 20 4F 6E 20 74 68 65 20 34    .....   On the 4
016C20:  36 34 20 74 68 65 20 20 4D 4F 56 45 20 20 63 6F    64 the  MOVE  co
016C30:  6D 6D 61 6E 64 20 20 74 61 6B 65 73 20 20 6F 6E    mmand  takes  on
016C40:  6C 79 20 20 74 77 6F 20 20 70 61 72 61 6D 65 74    ly  two  paramet
016C50:  65 72 73 2C 20 20 74 68 65 20 20 78 20 61 6E 64    ers,  the  x and
016C60:  20 79 0D 0A 20 20 20 63 6F 6F 72 64 69 6E 61 74     y..   coordinat
016C70:  65 73 20 6F 66 20 74 68 65 20 70 6F 69 6E 74 20    es of the point 
016C80:  74 6F 20 6D 6F 76 65 20 20 74 68 65 20 20 67 72    to move  the  gr
016C90:  61 70 68 69 63 73 20 63 75 72 73 6F 72 20 74 6F    aphics cursor to
016CA0:  2E 20 20 57 69 74 68 20 42 41 53 49 43 20 31 2E    .  With BASIC 1.
016CB0:  31 0D 0A 20 20 20 79 6F 75 20 63 61 6E 20 73 70    1..   you can sp
016CC0:  65 63 69 66 79 20 61 20 74 68 69 72 64 20 70 61    ecify a third pa
016CD0:  72 61 6D 65 74 65 72 20 74 6F 20 20 73 65 6C 65    rameter to  sele
016CE0:  63 74 20 74 68 65 20 67 72 61 70 68 69 63 73 20    ct the graphics 
016CF0:  70 65 6E 2C 20 6D 75 63 68 20 61 73 20 79 6F 75    pen, much as you
016D00:  32 2C 30 2C 35 35 2C 30 2C 35 35 2C 34 35 2C 2D    2,0,55,0,55,45,-
016D10:  32 00 13 00 4E 02 8C 20 26 39 30 2C 37 31 2C 37    2...N.. &90,71,7
016D20:  30 2C 2D 32 00 18 00 58 02 8C 20 26 39 30 2C 37    0,-2...X.. &90,7
016D30:  31 2C 30 2C 26 39 31 2C 35 35 2C 30 00 23 00 5D    1,0,&91,55,0.#.]
016D40:  02 8C 20 26 39 30 2C 37 34 2C 37 35 2C 26 39 31    .. &90,74,75,&91
016D50:  2C 35 34 2C 35 30 2C 35 37 2C 35 30 2C 2D 32 00    ,54,50,57,50,-2.
016D60:  1D 00 62 02 8C 20 26 39 30 2C 37 34 2C 30 2C 26    ..b.. &90,74,0,&
016D70:  39 31 2C 35 34 2C 30 2C 35 37 2C 30 00 27 00 67    91,54,0,57,0.'.g
016D80:  02 8C 20 26 39 30 2C 37 36 2C 38 30 2C 26 39 31    .. &90,76,80,&91
016D90:  2C 35 32 2C 35 35 2C 26 39 31 2C 35 35 2C 35 35    ,52,55,&91,55,55
016DA0:  2C 2D 34 00 2F 00 6C 02 8C 20 26 39 30 2C 37 36    ,-4./.l.. &90,76
016DB0:  2C 30 2C 26 39 31 2C 35 32 2C 30 2C 26 39 30 2C    ,0,&91,52,0,&90,
016DC0:  37 34 2C 37 35 2C 26 39 31 2C 35 32 2C 36 30 2C    74,75,&91,52,60,
016DD0:  2D 32 00 1D 00 76 02 8C 20 26 39 30 2C 37 34 2C    -2...v.. &90,74,
016DE0:  30 2C 26 39 31 2C 35 32 2C 30 2C 35 35 2C 30 00    0,&91,52,0,55,0.
016DF0:  23 00 7B 02 8C 20 26 39 30 2C 37 31 2C 37 30 2C    #.{.. &90,71,70,
016E00:  26 39 31 2C 35 35 2C 36 35 2C 36 32 2C 36 35 2C    &91,55,65,62,65,
016E10:  2D 32 00 1D 00 80 02 8C 20 26 39 30 2C 37 31 2C    -2...... &90,71,
016E20:  30 2C 26 39 31 2C 35 35 2C 30 2C 36 32 2C 30 00    0,&91,55,0,62,0.
016E30:  23 00 85 02 8C 20 26 39 30 2C 37 33 2C 36 30 2C    #.... &90,73,60,
016E40:  26 39 31 2C 35 37 2C 36 35 2C 36 34 2C 37 30 2C    &91,57,65,64,70,
016E50:  2D 32 00 2C 00 8A 02 8C 20 26 39 30 2C 37 33 2C    -2.,.... &90,73,
016E60:  30 2C 36 39 2C 35 30 2C 26 41 31 2C 35 37 2C 36    0,69,50,&A1,57,6
016E70:  30 2C 26 41 31 2C 36 34 2C 36 35 2C 2D 32 00 1D    0,&A1,64,65,-2..
016E80:  00 94 02 8C 20 26 39 30 2C 36 39 2C 30 2C 26 39    .... &90,69,0,&9
016E90:  31 2C 35 37 2C 30 2C 36 34 2C 30 00 23 00 99 02    1,57,0,64,0.#...
016EA0:  8C 20 26 39 30 2C 37 31 2C 34 30 2C 26 39 31 2C    . &90,71,40,&91,
016EB0:  35 32 2C 34 30 2C 36 37 2C 34 30 2C 2D 36 00 22    52,40,67,40,-6."
016EC0:  00 9E 02 8C 20 26 39 30 2C 37 31 2C 30 2C 26 39    .... &90,71,0,&9
016ED0:  31 2C 35 32 2C 30 2C 36 37 2C 30 2C 2D 31 30 30    1,52,0,67,0,-100
016EE0:  00 00 00 1A 48 49 4C 45 20 74 3C 3E 31 30 30 3A    ....HILE t<>100:
016EF0:  57 45 4E 44 0D 0A 33 34 30 20 45 4E 44 0D 0A 34    WEND..340 END..4
016F00:  0D 0A 20 20 20 64 6F 20 77 69 74 68 20 50 4C 4F    ..   do with PLO
016F10:  54 20 61 6E 64 20 44 52 41 57 2E 20 20 46 6F 72    T and DRAW.  For
016F20:  20 65 78 61 6D 70 6C 65 0D 0A 0D 0A 20 20 20 20     example....    
016F30:  20 4D 4F 56 45 20 78 2C 79 2C 33 0D 0A 0D 0A 20     MOVE x,y,3.... 
016F40:  20 20 77 69 6C 6C 20 6D 6F 76 65 20 74 68 65 20      will move the 
016F50:  67 72 61 70 68 69 63 73 20 63 75 72 73 6F 72 20    graphics cursor 
016F60:  74 6F 20 20 28 78 2C 79 29 20 20 61 6E 64 20 20    to  (x,y)  and  
016F70:  61 6C 73 6F 20 63 68 61 6E 67 65 20 74 68 65 20    also change the 
016F80:  67 72 61 70 68 69 63 73 20 70 65 6E 0D 0A 20 20    graphics pen..  
016F90:  20 28 74 68 65 20 63 6F 6C 6F 75 72 20 74 6F 20     (the colour to 
016FA0:  70 6C 6F 74 20 69 6E 29 20 74 6F 20 33 2E 20 20    plot in) to 3.  
016FB0:  20 54 68 69 73 20 20 66 61 63 69 6C 69 74 79 20     This  facility 
016FC0:  69 73 20 6D 6F 73 74 20 75 73 65 66 75 6C 20 77    is most useful w
016FD0:  68 65 6E 20 79 6F 75 20 61 72 65 0D 0A 20 20 20    hen you are..   
016FE0:  70 72 69 6E 74 69 6E 67 20 63 68 61 72 61 63 74    printing charact
016FF0:  65 72 73 20 61 74 20 74 68 65 20 67 72 61 70 68    ers at the graph
017000:  69 63 73 20 63 75 72 73 6F 72 20 75 73 69 6E 67    ics cursor using
017010:  20 54 41 47 2E 0D 0A 0D 0A 20 20 20 48 6F 77 20     TAG.....   How 
017020:  79 6F 75 20 72 65 6D 6F 76 65 20 74 68 69 73 20    you remove this 
017030:  65 78 74 72 61 20 20 70 61 72 61 6D 65 74 65 72    extra  parameter
017040:  20 20 64 65 70 65 6E 64 73 20 6F 6E 20 74 68 65      depends on the
017050:  20 73 69 74 75 61 74 69 6F 6E 2E 20 20 53 6F 6D     situation.  Som
017060:  65 74 69 6D 65 73 0D 0A 20 20 20 70 65 6F 70 6C    etimes..   peopl
017070:  65 20 75 73 65 20 69 74 20 77 68 65 6E 20 69 74    e use it when it
017080:  20 69 73 20 74 6F 74 61 6C 6C 79 20 75 6E 6E 65     is totally unne
017090:  63 65 73 73 61 72 79 2E 20 20 46 6F 72 20 65 78    cessary.  For ex
0170A0:  61 6D 70 6C 65 2C 20 61 20 6C 69 6E 65 20 73 61    ample, a line sa
0170B0:  79 69 6E 67 3A 0D 0A 0D 0A 20 20 20 20 20 31 30    ying:....     10
0170C0:  20 4D 4F 56 45 20 78 2C 79 2C 32 3A 44 52 41 57     MOVE x,y,2:DRAW
0170D0:  52 20 32 33 2C 35 30 0D 0A 0D 0A 20 20 20 63 6F    R 23,50....   co
0170E0:  75 6C 64 20 73 69 6D 70 6C 79 20 62 65 20 63 68    uld simply be ch
0170F0:  61 6E 67 65 64 20 74 6F 3A 0D 0A 0D 0A 20 20 20    anged to:....   
017100:  23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61    #Programmers' Pa
017110:  74 63 68 20 31 34 20 2D 20 57 41 43 43 49 20 31    tch 14 - WACCI 1
017120:  32 33 2C 20 4A 75 6C 79 2F 41 75 67 20 31 39 39    23, July/Aug 199
017130:  38 2C 20 70 2E 20 32 33 2D 32 36 0D 0A 20 20 20    8, p. 23-26..   
017140:  50 52 4F 47 52 41 4D 4D 45 52 53 27 20 50 41 54    PROGRAMMERS' PAT
017150:  43 48 20 31 34 0D 0A 20 20 20 62 79 20 4D 61 74    CH 14..   by Mat
017160:  74 68 65 77 20 50 68 69 6C 6C 69 70 73 0D 0A 0D    thew Phillips...
017170:  0A 20 20 20 54 68 65 20 73 75 6E 20 62 65 61 74    .   The sun beat
017180:  20 64 6F 77 6E 20 6F 6E 20 20 74 68 65 20 20 77     down on  the  w
017190:  69 64 65 20 20 64 65 73 65 72 74 20 20 70 6C 61    ide  desert  pla
0171A0:  69 6E 73 20 20 6F 66 20 20 4D 65 78 69 63 6F 2E    ins  of  Mexico.
0171B0:  20 20 54 68 65 20 73 6F 75 6E 64 20 6F 66 0D 0A      The sound of..
0171C0:  20 20 20 68 6F 72 73 65 27 73 20 68 6F 6F 76 65       horse's hoove
0171D0:  73 20 68 61 64 20 66 61 64 65 64 20 61 73 20 20    s had faded as  
0171E0:  46 6C 61 6D 69 6E 67 75 65 7A 20 20 64 69 73 61    Flaminguez  disa
0171F0:  70 70 65 61 72 65 64 20 69 6E 74 6F 20 74 68 65    ppeared into the
017200:  20 64 69 73 74 61 6E 63 65 2C 20 61 73 0D 0A 20     distance, as.. 
017210:  20 20 73 77 69 66 74 6C 79 20 61 73 20 68 65 20      swiftly as he 
017220:  68 61 64 20 61 72 72 69 76 65 64 2E 20 20 20 4A    had arrived.   J
017230:  75 61 6E 20 20 43 61 72 6C 6F 73 20 20 73 63 61    uan  Carlos  sca
017240:  6E 6E 65 64 20 20 74 68 65 20 70 61 67 65 73 20    nned  the pages 
017250:  6F 66 20 74 68 65 20 76 69 74 61 6C 0D 0A 20 20    of the vital..  
017260:  20 64 6F 63 75 6D 65 6E 74 20 69 6E 74 65 6E 74     document intent
017270:  6C 79 2E 20 20 48 65 20 66 72 6F 77 6E 65 64 20    ly.  He frowned 
017280:  61 73 20 68 65 20 74 72 69 65 64 20 20 74 6F 20    as he tried  to 
017290:  67 72 61 73 70 20 74 68 65 20 68 69 64 64 65 6E    grasp the hidden
0172A0:  20 6D 65 61 6E 69 6E 67 20 6F 66 0D 0A 20 20 20     meaning of..   
0172B0:  74 68 65 20 77 6F 72 64 73 20 62 65 66 6F 72 65    the words before
0172C0:  20 68 69 6D 2E 20 20 57 61 73 20 74 68 65 72 65     him.  Was there
0172D0:  20 6E 6F 20 6F 74 68 65 72 20 20 77 61 79 3F 20     no other  way? 
0172E0:  20 48 65 20 68 61 64 20 66 65 61 72 65 64 20 69     He had feared i
0172F0:  74 20 6D 69 67 68 74 20 62 65 0D 0A 20 20 20 73    t might be..   s
017300:  20 20 31 30 20 4D 4F 56 45 20 78 2C 79 3A 44 52      10 MOVE x,y:DR
017310:  41 57 52 20 32 33 2C 35 30 2C 32 0D 0A 0D 0A 20    AWR 23,50,2.... 
017320:  20 20 54 68 65 20 67 72 61 70 68 69 63 73 20 70      The graphics p
017330:  65 6E 20 73 65 74 74 69 6E 67 20 68 61 73 20 62    en setting has b
017340:  65 65 6E 20 6D 6F 76 65 64 20 66 72 6F 6D 20 74    een moved from t
017350:  68 65 20 4D 4F 56 45 20 63 6F 6D 6D 61 6E 64 20    he MOVE command 
017360:  74 6F 20 74 68 65 20 44 52 41 57 52 0D 0A 20 20    to the DRAWR..  
017370:  20 63 6F 6D 6D 61 6E 64 2E 20 20 49 66 20 74 68     command.  If th
017380:  65 20 44 52 41 57 52 20 63 6F 6D 6D 61 6E 64 20    e DRAWR command 
017390:  77 61 73 20 6F 6E 20 20 74 68 65 20 20 6E 65 78    was on  the  nex
0173A0:  74 20 6C 69 6E 65 20 74 68 6F 75 67 68 2C 20 69    t line though, i
0173B0:  74 20 6D 69 67 68 74 20 6E 6F 74 0D 0A 20 20 20    t might not..   
0173C0:  62 65 20 73 61 66 65 20 74 6F 20 75 73 65 20 74    be safe to use t
0173D0:  68 69 73 20 61 70 70 72 6F 61 63 68 2E 20 20 49    his approach.  I
0173E0:  74 20 20 6D 61 79 20 20 62 65 20 20 74 68 61 74    t  may  be  that
0173F0:  20 74 68 61 74 20 6C 69 6E 65 20 69 73 20 72 65     that line is re
017400:  61 63 68 65 64 20 66 72 6F 6D 0D 0A 20 20 20 65    ached from..   e
017410:  6C 73 65 77 68 65 72 65 20 69 6E 20 74 68 65 20    lsewhere in the 
017420:  20 70 72 6F 67 72 61 6D 20 20 77 68 65 72 65 20     program  where 
017430:  20 74 68 65 20 20 67 72 61 70 68 69 63 73 20 20     the  graphics  
017440:  70 65 6E 20 20 69 73 20 20 73 65 74 20 74 6F 20    pen  is  set to 
017450:  73 6F 6D 65 74 68 69 6E 67 0D 0A 20 20 20 64 69    something..   di
017460:  66 66 65 72 65 6E 74 2E 0D 0A 0D 0A 20 20 20 54    fferent.....   T
017470:  68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 61 70 70    he following app
017480:  72 6F 61 63 68 20 77 69 6C 6C 20 61 6C 77 61 79    roach will alway
017490:  73 20 77 6F 72 6B 3A 0D 0A 0D 0A 20 20 20 20 20    s work:....     
0174A0:  31 30 20 50 4C 4F 54 20 2D 38 2C 30 2C 32 3A 4D    10 PLOT -8,0,2:M
0174B0:  4F 56 45 20 78 2C 79 3A 44 52 41 57 52 20 32 33    OVE x,y:DRAWR 23
0174C0:  2C 35 30 0D 0A 0D 0A 20 20 20 57 65 20 75 73 65    ,50....   We use
0174D0:  20 74 68 65 20 61 62 69 6C 69 74 79 20 6F 66 20     the ability of 
0174E0:  20 74 68 65 20 20 50 4C 4F 54 20 20 63 6F 6D 6D     the  PLOT  comm
0174F0:  61 6E 64 20 20 74 6F 20 20 63 68 61 6E 67 65 20    and  to  change 
017500:  6F 2C 20 62 75 74 20 6E 6F 77 20 68 65 20 77 61    o, but now he wa
017510:  73 20 63 65 72 74 61 69 6E 2E 20 20 48 65 20 77    s certain.  He w
017520:  6F 75 6C 64 20 20 68 61 76 65 20 74 6F 20 61 73    ould  have to as
017530:  6B 20 46 6C 61 6D 69 6E 67 75 65 7A 20 74 6F 20    k Flaminguez to 
017540:  62 72 69 6E 67 20 68 69 6D 0D 0A 20 20 20 61 20    bring him..   a 
017550:  43 50 43 20 61 73 20 77 65 6C 6C 20 6E 65 78 74    CPC as well next
017560:  20 74 69 6D 65 2E 0D 0A 0D 0A 20 20 20 4C 61 73     time.....   Las
017570:  74 20 6D 6F 6E 74 68 20 77 65 20 73 74 61 72 74    t month we start
017580:  65 64 20 20 6C 6F 6F 6B 69 6E 67 20 20 61 74 20    ed  looking  at 
017590:  20 74 68 65 20 20 64 69 66 66 65 72 65 6E 63 65     the  difference
0175A0:  73 20 20 62 65 74 77 65 65 6E 20 42 41 53 49 43    s  between BASIC
0175B0:  20 31 2E 30 20 61 73 0D 0A 20 20 20 66 6F 75 6E     1.0 as..   foun
0175C0:  64 20 6F 6E 20 74 68 65 20 43 50 43 20 34 36 34    d on the CPC 464
0175D0:  2C 20 61 6E 64 20 20 42 41 53 49 43 20 20 31 2E    , and  BASIC  1.
0175E0:  31 20 6F 6E 20 6C 61 74 65 72 20 6D 61 63 68 69    1 on later machi
0175F0:  6E 65 73 2E 20 20 54 68 65 20 50 72 6F 67 72 61    nes.  The Progra
017600:  6D 6D 65 72 73 27 0D 0A 20 20 20 50 61 74 63 68    mmers'..   Patch
017610:  20 64 69 73 63 20 28 77 68 69 63 68 20 79 6F 75     disc (which you
017620:  20 63 61 6E 20 6F 72 64 65 72 20 20 66 72 6F 6D     can order  from
017630:  20 20 44 61 76 65 20 20 53 74 69 74 73 6F 6E 2C      Dave  Stitson,
017640:  20 50 44 20 64 69 73 63 20 39 38 29 20 69 6E 63     PD disc 98) inc
017650:  6C 75 64 65 73 0D 0A 20 20 20 73 6F 6D 65 20 52    ludes..   some R
017660:  53 58 73 20 74 6F 20 68 65 6C 70 20 79 6F 75 20    SXs to help you 
017670:  20 74 6F 20 20 69 64 65 6E 74 69 66 79 20 20 77     to  identify  w
017680:  68 69 63 68 20 20 6C 69 6E 65 73 20 20 6F 66 20    hich  lines  of 
017690:  61 20 70 72 6F 67 72 61 6D 20 77 69 6C 6C 20 63    a program will c
0176A0:  61 75 73 65 0D 0A 20 20 20 70 72 6F 62 6C 65 6D    ause..   problem
0176B0:  73 20 66 6F 72 20 34 36 34 20 75 73 65 72 73 2E    s for 464 users.
0176C0:  20 20 49 20 68 6F 70 65 20 20 74 68 61 74 20 20      I hope  that  
0176D0:  34 36 34 20 20 75 73 65 72 73 20 77 69 6C 6C 20    464  users will 
0176E0:  66 69 6E 64 20 74 68 65 73 65 20 61 72 74 69 63    find these artic
0176F0:  6C 65 73 0D 0A 20 20 20 75 73 65 66 75 6C 20 77    les..   useful w
017700:  20 74 68 65 20 67 72 61 70 68 69 63 73 20 70 65     the graphics pe
017710:  6E 20 62 79 0D 0A 20 20 20 70 6C 6F 74 74 69 6E    n by..   plottin
017720:  67 20 61 20 70 6F 69 6E 74 20 77 68 69 63 68 20    g a point which 
017730:  69 73 20 6F 66 66 20 20 73 63 72 65 65 6E 2C 20    is off  screen, 
017740:  20 61 6E 64 20 20 74 68 65 6E 20 64 6F 20 74 68     and  then do th
017750:  65 20 4D 4F 56 45 20 63 6F 6D 6D 61 6E 64 2E 20    e MOVE command. 
017760:  20 4F 66 0D 0A 20 20 20 63 6F 75 72 73 65 2C 20     Of..   course, 
017770:  69 66 20 4F 52 49 47 49 4E 20 68 61 73 20 62 65    if ORIGIN has be
017780:  65 6E 20 75 73 65 64 20 20 74 6F 20 20 6D 6F 76    en used  to  mov
017790:  65 20 74 68 65 20 67 72 61 70 68 69 63 73 20 6F    e the graphics o
0177A0:  72 69 67 69 6E 2C 20 74 68 65 6E 20 28 2D 38 2C    rigin, then (-8,
0177B0:  30 29 0D 0A 20 20 20 6D 61 79 20 6C 69 65 20 6F    0)..   may lie o
0177C0:  6E 20 73 63 72 65 65 6E 20 2D 20 61 64 6A 75 73    n screen - adjus
0177D0:  74 20 61 73 20 6E 65 63 65 73 73 61 72 79 2E 0D    t as necessary..
0177E0:  0A 0D 0A 20 20 20 54 68 65 20 4D 4F 56 45 52 20    ...   The MOVER 
0177F0:  63 6F 6D 6D 61 6E 64 20 68 61 73 20 61 6C 73 6F    command has also
017800:  20 20 68 61 64 20 20 74 68 69 73 20 20 74 68 69      had  this  thi
017810:  72 64 20 6F 70 74 69 6F 6E 61 6C 20 70 61 72 61    rd optional para
017820:  6D 65 74 65 72 20 61 64 64 65 64 2C 20 61 6E 64    meter added, and
017830:  0D 0A 20 20 20 63 61 6E 20 62 65 20 64 65 61 6C    ..   can be deal
017840:  74 20 77 69 74 68 20 69 6E 20 74 68 65 20 73 61    t with in the sa
017850:  6D 65 20 77 61 79 2E 0D 0A 0D 0A 20 20 20 47 52    me way.....   GR
017860:  41 50 48 49 43 53 20 49 4E 4B 20 4D 4F 44 45 0D    APHICS INK MODE.
017870:  0A 20 20 20 41 6C 6C 20 73 69 78 20 63 6F 6D 6D    .   All six comm
017880:  61 6E 64 73 2C 20 44 52 41 57 2C 20 44 52 41 57    ands, DRAW, DRAW
017890:  52 2C 20 4D 4F 56 45 2C 20 4D 4F 56 45 52 2C 20    R, MOVE, MOVER, 
0178A0:  50 4C 4F 54 2C 20 50 4C 4F 54 52 2C 20 68 61 76    PLOT, PLOTR, hav
0178B0:  65 20 68 61 64 20 61 20 66 6F 75 72 74 68 0D 0A    e had a fourth..
0178C0:  20 20 20 6F 70 74 69 6F 6E 61 6C 20 70 61 72 61       optional para
0178D0:  6D 65 74 65 72 20 61 64 64 65 64 20 69 6E 20 20    meter added in  
0178E0:  42 41 53 49 43 20 20 31 2E 31 2E 20 20 20 54 68    BASIC  1.1.   Th
0178F0:  69 73 20 20 70 61 72 61 6D 65 74 65 72 20 73 65    is  parameter se
017900:  68 65 6E 20 74 72 79 69 6E 67 20 74 6F 20 63 6F    hen trying to co
017910:  6E 76 65 72 74 20 70 72 6F 67 72 61 6D 73 20 20    nvert programs  
017920:  74 6F 20 20 72 75 6E 20 6F 6E 20 74 68 65 69 72    to  run on their
017930:  20 6D 61 63 68 69 6E 65 73 2C 20 61 6E 64 20 61     machines, and a
017940:  6C 6C 0D 0A 20 20 20 79 6F 75 20 36 36 34 2F 36    ll..   you 664/6
017950:  31 32 38 20 75 73 65 72 73 20 73 68 6F 75 6C 64    128 users should
017960:  20 68 61 76 65 20 61 20 72 65 61 64 20 20 74 6F     have a read  to
017970:  6F 2C 20 20 61 73 20 69 74 20 69 73 20 77 6F 72    o,  as it is wor
017980:  74 68 20 62 65 69 6E 67 20 61 77 61 72 65 20 6F    th being aware o
017990:  66 0D 0A 20 20 20 77 68 61 74 20 77 69 6C 6C 20    f..   what will 
0179A0:  63 61 75 73 65 20 70 72 6F 62 6C 65 6D 73 20 6F    cause problems o
0179B0:  6E 20 74 68 65 20 34 36 34 2E 20 20 49 6E 20 20    n the 464.  In  
0179C0:  6D 61 6E 79 20 63 61 73 65 73 20 79 6F 75 20 77    many cases you w
0179D0:  69 6C 6C 20 6F 6E 6C 79 20 6E 65 65 64 20 74 6F    ill only need to
0179E0:  0D 0A 20 20 20 6D 61 6B 65 20 61 20 66 65 77 20    ..   make a few 
0179F0:  61 6C 74 65 72 61 74 69 6F 6E 73 20 74 6F 20 65    alterations to e
017A00:  6E 61 62 6C 65 20 79 6F 75 72 20 20 70 72 6F 67    nable your  prog
017A10:  72 61 6D 73 20 20 74 6F 20 72 75 6E 20 6F 6E 20    rams  to run on 
017A20:  61 6C 6C 20 74 68 65 20 41 6D 73 74 72 61 64 0D    all the Amstrad.
017A30:  0A 20 20 20 43 50 43 73 2E 0D 0A 0D 0A 20 20 20    .   CPCs.....   
017A40:  57 65 20 68 61 76 65 20 70 72 69 6E 74 65 64 20    We have printed 
017A50:  61 20 20 6C 69 73 74 20 20 6F 66 20 20 61 6C 6C    a  list  of  all
017A60:  20 20 74 68 65 20 20 63 6F 6D 6D 61 6E 64 73 20      the  commands 
017A70:  20 77 68 69 63 68 20 20 68 61 76 65 20 62 65 65     which  have bee
017A80:  6E 20 61 64 64 65 64 20 6F 72 0D 0A 20 20 20 61    n added or..   a
017A90:  6C 74 65 72 65 64 20 66 6F 72 20 42 41 53 49 43    ltered for BASIC
017AA0:  20 31 2E 31 20 69 6E 20 54 61 62 6C 65 20 31 2E     1.1 in Table 1.
017AB0:  20 20 20 57 65 20 20 63 6F 76 65 72 65 64 20 46       We  covered F
017AC0:  52 41 4D 45 2C 20 43 4C 45 41 52 20 49 4E 50 55    RAME, CLEAR INPU
017AD0:  54 2C 20 61 6E 64 20 4F 4E 0D 0A 20 20 20 42 52    T, and ON..   BR
017AE0:  45 41 4B 20 43 4F 4E 54 20 6C 61 73 74 20 6D 6F    EAK CONT last mo
017AF0:  6E 74 68 2E 0D 0A 0D 0A 20 20 20 47 52 41 50 48    nth.....   GRAPH
017B00:  6C 65 63 74 73 20 74 68 65 20 69 6E 6B 0D 0A 20    lects the ink.. 
017B10:  20 20 70 6C 6F 74 74 69 6E 67 20 6D 6F 64 65 2E      plotting mode.
017B20:  20 20 49 74 20 69 73 20 30 20 66 6F 72 20 6E 6F      It is 0 for no
017B30:  72 6D 61 6C 2C 20 31 20 20 66 6F 72 20 20 58 4F    rmal, 1  for  XO
017B40:  52 20 6D 6F 64 65 2C 20 32 20 66 6F 72 20 41 4E    R mode, 2 for AN
017B50:  44 2C 20 61 6E 64 20 33 20 66 6F 72 0D 0A 20 20    D, and 3 for..  
017B60:  20 4F 52 20 6D 6F 64 65 2E 20 20 54 68 65 72 65     OR mode.  There
017B70:  20 61 72 65 20 20 61 20 20 63 6F 75 70 6C 65 20     are  a  couple 
017B80:  20 6F 66 20 20 77 61 79 73 20 20 74 6F 20 20 63     of  ways  to  c
017B90:  6F 70 65 20 20 77 69 74 68 20 20 74 68 69 73 20    ope  with  this 
017BA0:  6F 6E 20 74 68 65 20 34 36 34 2E 0D 0A 20 20 20    on the 464...   
017BB0:  53 75 70 70 6F 73 65 20 74 68 65 20 63 6F 6D 6D    Suppose the comm
017BC0:  61 6E 64 20 77 61 73 0D 0A 0D 0A 20 20 20 20 20    and was....     
017BD0:  44 52 41 57 20 31 30 30 2C 32 30 30 2C 31 2C 33    DRAW 100,200,1,3
017BE0:  0D 0A 0D 0A 20 20 20 54 68 69 73 20 63 61 6E 20    ....   This can 
017BF0:  62 65 20 72 65 70 6C 61 63 65 64 20 77 69 74 68    be replaced with
017C00:  0D 0A 0D 0A 20 20 20 20 20 50 52 49 4E 54 20 43    ....     PRINT C
017C10:  48 52 24 28 32 33 29 3B 43 48 52 24 28 33 29 3B    HR$(23);CHR$(3);
017C20:  3A 44 52 41 57 20 31 30 30 2C 32 30 30 2C 31 0D    :DRAW 100,200,1.
017C30:  0A 0D 0A 20 20 20 42 65 20 63 61 72 65 66 75 6C    ...   Be careful
017C40:  20 74 6F 20 69 6E 63 6C 75 64 65 20 74 68 65 20     to include the 
017C50:  73 65 6D 69 63 6F 6C 6F 6E 73 2C 20 20 6F 72 20    semicolons,  or 
017C60:  79 6F 75 20 6D 69 67 68 74 20 67 65 74 20 75 6E    you might get un
017C70:  77 61 6E 74 65 64 20 6C 69 6E 65 66 65 65 64 73    wanted linefeeds
017C80:  0D 0A 20 20 20 68 61 70 70 65 6E 69 6E 67 2E 20    ..   happening. 
017C90:  20 54 68 69 73 20 6D 65 74 68 6F 64 20 77 69 6C     This method wil
017CA0:  6C 20 6E 6F 74 20 20 77 6F 72 6B 20 20 69 66 20    l not  work  if 
017CB0:  20 54 41 47 20 20 68 61 73 20 62 65 65 6E 20 75     TAG  has been u
017CC0:  73 65 64 20 74 6F 20 72 65 64 69 72 65 63 74 0D    sed to redirect.
017CD0:  0A 20 20 20 74 65 78 74 20 63 68 61 72 61 63 74    .   text charact
017CE0:  65 72 73 20 74 6F 20 74 68 65 20 67 72 61 70 68    ers to the graph
017CF0:  69 63 73 20 63 75 72 73 6F 72 2E 20 20 59 6F 75    ics cursor.  You
017D00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
017D10:  14 00 01 00 02 09 4E E5 14 00 C4 02 00 00 00 02    ......N.........
017D20:  14 00 C9 02 00 00 00 02 14 00 C5 02 00 00 00 02    ................
017D30:  14 00 C1 02 00 00 00 02 14 00 C6 02 00 00 00 02    ................
017D40:  14 00 C2 02 00 00 00 02 14 00 C7 02 00 00 00 02    ................
017D50:  14 00 C3 02 00 00 00 02 14 00 C8 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:  64 64 65 64 20 74 6F 20 63 6F 6E 74 72 6F 6C 20    dded to control 
017E10:  74 68 65 20 64 69 73 70 6C 61 79 20 6F 66 20 74    the display of t
017E20:  68 65 20 74 65 78 74 20 63 75 72 73 6F 72 2E 20    he text cursor. 
017E30:  20 54 68 65 20 43 55 52 53 4F 52 20 63 6F 6D 6D     The CURSOR comm
017E40:  61 6E 64 20 74 61 6B 65 73 0D 0A 20 20 20 74 77    and takes..   tw
017E50:  6F 20 70 61 72 61 6D 65 74 65 72 73 2C 20 65 61    o parameters, ea
017E60:  63 68 20 6F 66 20 77 68 69 63 68 20 73 68 6F 75    ch of which shou
017E70:  6C 64 20 20 62 65 20 20 65 69 74 68 65 72 20 30    ld  be  either 0
017E80:  20 6F 72 20 31 2E 20 20 45 69 74 68 65 72 20 70     or 1.  Either p
017E90:  61 72 61 6D 65 74 65 72 0D 0A 20 20 20 6D 61 79    arameter..   may
017EA0:  20 62 65 20 6F 6D 69 74 74 65 64 2E 20 20 54 6F     be omitted.  To
017EB0:  20 73 68 6F 77 20 68 6F 77 20 74 6F 20 64 65 61     show how to dea
017EC0:  6C 20 77 69 74 68 20 74 68 69 73 20 63 6F 6D 6D    l with this comm
017ED0:  61 6E 64 20 77 65 20 68 61 76 65 20 61 20 73 65    and we have a se
017EE0:  72 69 65 73 20 6F 66 0D 0A 20 20 20 65 78 61 6D    ries of..   exam
017EF0:  70 6C 65 73 3A 0D 0A 0D 0A 20 20 20 20 20 42 41    ples:....     BA
017F00:  53 49 43 20 31 2E 31 20 20 20 20 20 20 20 20 20    SIC 1.1         
017F10:  20 20 42 41 53 49 43 20 31 2E 30 0D 0A 0D 0A 20      BASIC 1.0.... 
017F20:  20 20 20 20 43 55 52 53 4F 52 20 30 20 20 20 20        CURSOR 0    
017F30:  20 20 20 20 20 20 20 20 43 41 4C 4C 20 26 42 42            CALL &BB
017F40:  38 34 0D 0A 20 20 20 20 20 43 55 52 53 4F 52 20    84..     CURSOR 
017F50:  31 20 20 20 20 20 20 20 20 20 20 20 20 43 41 4C    1            CAL
017F60:  4C 20 26 42 42 38 31 0D 0A 20 20 20 20 20 43 55    L &BB81..     CU
017F70:  52 53 4F 52 20 2C 30 20 20 20 20 20 20 20 20 20    RSOR ,0         
017F80:  20 20 43 41 4C 4C 20 26 42 42 37 45 0D 0A 20 20      CALL &BB7E..  
017F90:  20 20 20 43 55 52 53 4F 52 20 2C 31 20 20 20 20       CURSOR ,1    
017FA0:  20 20 20 20 20 20 20 43 41 4C 4C 20 26 42 42 37           CALL &BB7
017FB0:  42 0D 0A 20 20 20 20 20 43 55 52 53 4F 52 20 31    B..     CURSOR 1
017FC0:  2C 30 20 20 20 20 20 20 20 20 20 20 43 41 4C 4C    ,0          CALL
017FD0:  20 26 42 42 38 31 3A 43 41 4C 4C 20 26 42 42 37     &BB81:CALL &BB7
017FE0:  45 0D 0A 20 20 20 20 20 43 55 52 53 4F 52 20 61    E..     CURSOR a
017FF0:  2C 62 20 20 20 20 20 20 20 20 20 20 43 41 4C 4C    ,b          CALL
018000:  68 65 20 67 72 61 70 68 69 63 73 20 69 6E 6B 20    he graphics ink 
018010:  6D 6F 64 65 20 77 65 20 63 6F 75 6C 64 20 70 75    mode we could pu
018020:  74 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20    t the following 
018030:  6C 69 6E 65 20 69 6E 3A 0D 0A 0D 0A 20 20 20 31    line in:....   1
018040:  20 69 6E 6B 6D 6F 64 65 3D 48 49 4D 45 4D 2D 35     inkmode=HIMEM-5
018050:  3A 4D 45 4D 4F 52 59 20 48 49 4D 45 4D 2D 36 3A    :MEMORY HIMEM-6:
018060:  46 4F 52 20 67 3D 30 20 54 4F 20 35 3A 52 45 41    FOR g=0 TO 5:REA
018070:  44 20 64 3A 50 4F 4B 45 20 69 6E 6B 6D 6F 64 65    D d:POKE inkmode
018080:  2B 67 2C 64 3A 4E 45 58 54 0D 0A 20 20 20 20 20    +g,d:NEXT..     
018090:  3A 44 41 54 41 20 26 44 44 2C 26 37 45 2C 30 2C    :DATA &DD,&7E,0,
0180A0:  26 43 33 2C 26 35 39 2C 26 42 43 0D 0A 0D 0A 20    &C3,&59,&BC.... 
0180B0:  20 20 54 68 65 6E 20 63 6F 6D 6D 61 6E 64 73 20      Then commands 
0180C0:  6C 69 6B 65 0D 0A 0D 0A 20 20 20 20 20 44 52 41    like....     DRA
0180D0:  57 20 31 30 30 2C 32 30 30 2C 31 2C 78 0D 0A 0D    W 100,200,1,x...
0180E0:  0A 20 20 20 63 61 6E 20 62 65 20 72 65 70 6C 61    .   can be repla
0180F0:  63 65 64 20 62 79 0D 0A 0D 0A 20 20 20 20 20 43    ced by....     C
018100:  41 4C 4C 20 69 6E 6B 6D 6F 64 65 2C 78 3A 44 52    ALL inkmode,x:DR
018110:  41 57 20 31 30 30 2C 32 30 30 2C 31 0D 0A 0D 0A    AW 100,200,1....
018120:  20 20 20 57 65 20 63 61 6E 20 64 65 61 6C 20 77       We can deal w
018130:  69 74 68 20 74 68 65 20 63 6F 6D 6D 61 6E 64 20    ith the command 
018140:  20 47 52 41 50 48 49 43 53 20 20 50 41 50 45 52     GRAPHICS  PAPER
018150:  20 20 69 6E 20 20 6D 75 63 68 20 74 68 65 20 73      in  much the s
018160:  61 6D 65 20 77 61 79 2E 20 20 54 68 65 0D 0A 20    ame way.  The.. 
018170:  20 20 66 69 72 6D 77 61 72 65 20 72 6F 75 74 69      firmware routi
018180:  6E 65 20 47 52 41 20 53 45 54 20 50 41 50 45 52    ne GRA SET PAPER
018190:  20 69 73 20 20 61 74 20 26 42 42 45 34 2E 20 20     is  at &BBE4.  
0181A0:  41 6E 20 61 6C 74 65 72 6E 61 74 69 76 65 20 6D    An alternative m
0181B0:  65 74 68 6F 64 2C 20 77 68 69 63 68 0D 0A 20 20    ethod, which..  
0181C0:  20 77 61 73 20 76 65 72 79 20 70 6F 70 75 6C 61     was very popula
0181D0:  72 20 69 6E 20 6C 69 73 74 69 6E 67 73 20 69 6E    r in listings in
0181E0:  20 20 74 68 65 20 20 6D 61 67 61 7A 69 6E 65 20      the  magazine 
0181F0:  43 6F 6D 70 75 74 69 6E 67 20 77 69 74 68 20 74    Computing with t
018200:  20 26 42 42 38 34 2D 33 2A 61 3A 43 41 4C 4C 20     &BB84-3*a:CALL 
018210:  26 42 42 37 45 2D 33 2A 62 0D 0A 0D 0A 20 20 20    &BB7E-3*b....   
018220:  55 73 75 61 6C 6C 79 20 74 68 65 20 43 55 52 53    Usually the CURS
018230:  4F 52 20 63 6F 6D 6D 61 6E 64 20 69 73 20 20 6E    OR command is  n
018240:  6F 74 20 20 75 73 65 64 20 20 77 69 74 68 20 20    ot  used  with  
018250:  76 61 72 69 61 62 6C 65 73 2C 20 20 61 73 20 69    variables,  as i
018260:  6E 20 74 68 65 20 6C 61 73 74 0D 0A 20 20 20 65    n the last..   e
018270:  78 61 6D 70 6C 65 2C 20 62 75 74 20 69 66 20 69    xample, but if i
018280:  74 20 20 69 73 2C 20 20 74 68 69 73 20 20 69 73    t  is,  this  is
018290:  20 20 6F 6E 65 20 20 77 61 79 20 20 74 6F 20 20      one  way  to  
0182A0:  64 65 61 6C 20 20 77 69 74 68 20 69 74 2E 20 20    deal  with it.  
0182B0:  4E 6F 74 65 20 74 68 61 74 0D 0A 20 20 20 68 6F    Note that..   ho
0182C0:  72 72 69 62 6C 65 20 74 68 69 6E 67 73 20 6D 61    rrible things ma
0182D0:  79 20 68 61 70 70 65 6E 20 69 66 20 61 20 6F 72    y happen if a or
0182E0:  20 62 20 61 72 65 20 61 6E 79 20 76 61 6C 75 65     b are any value
0182F0:  20 6F 74 68 65 72 20 74 68 61 6E 20 30 20 6F 72     other than 0 or
018300:  20 31 2E 0D 0A 0D 0A 20 20 20 47 52 41 50 48 49     1.....   GRAPHI
018310:  43 53 20 50 45 4E 20 41 4E 44 20 50 41 50 45 52    CS PEN AND PAPER
018320:  0D 0A 20 20 20 54 77 6F 20 6D 6F 72 65 20 63 6F    ..   Two more co
018330:  6D 6D 61 6E 64 73 20 69 6E 74 72 6F 64 75 63 65    mmands introduce
018340:  64 20 77 69 74 68 20 42 41 53 49 43 20 20 31 2E    d with BASIC  1.
018350:  31 20 61 72 65 20 47 52 41 50 48 49 43 53 20 50    1 are GRAPHICS P
018360:  45 4E 20 61 6E 64 20 47 52 41 50 48 49 43 53 0D    EN and GRAPHICS.
018370:  0A 20 20 20 50 41 50 45 52 2C 20 77 68 69 63 68    .   PAPER, which
018380:  20 61 72 65 20 75 73 65 64 20 74 6F 20 20 73 65     are used to  se
018390:  74 20 20 74 68 65 20 20 67 72 61 70 68 69 63 73    t  the  graphics
0183A0:  20 20 70 65 6E 20 20 61 6E 64 20 67 72 61 70 68      pen  and graph
0183B0:  69 63 73 20 70 61 70 65 72 20 28 6E 6F 2C 0D 0A    ics paper (no,..
0183C0:  20 20 20 72 65 61 6C 6C 79 2E 2E 2E 29 2E 20 20       really...).  
0183D0:  53 65 74 74 69 6E 67 20 74 68 65 20 67 72 61 70    Setting the grap
0183E0:  68 69 63 73 20 70 65 6E 20 63 61 6E 20 20 62 65    hics pen can  be
0183F0:  20 20 64 6F 6E 65 20 62 79 20 70 6C 6F 74 74 69      done by plotti
018400:  20 63 6F 75 6C 64 20 61 6C 73 6F 20 64 6F 0D 0A     could also do..
018410:  0D 0A 20 20 20 20 20 43 41 4C 4C 20 26 42 43 35    ..     CALL &BC5
018420:  39 2C 31 2C 31 2C 31 3A 44 52 41 57 20 31 30 30    9,1,1,1:DRAW 100
018430:  2C 32 30 30 2C 31 0D 0A 0D 0A 20 20 20 54 68 69    ,200,1....   Thi
018440:  73 20 73 6E 65 61 6B 79 20 6D 65 74 68 6F 64 20    s sneaky method 
018450:  75 73 65 73 20 74 68 65 20 66 69 72 6D 77 61 72    uses the firmwar
018460:  65 20 20 63 61 6C 6C 20 20 53 43 52 20 20 41 43    e  call  SCR  AC
018470:  43 45 53 53 20 77 68 69 63 68 20 73 65 74 73 20    CESS which sets 
018480:  74 68 65 20 69 6E 6B 0D 0A 20 20 20 6D 6F 64 65    the ink..   mode
018490:  2E 20 20 49 74 20 64 6F 65 73 20 74 68 69 73 20    .  It does this 
0184A0:  6F 6E 20 74 68 65 20 62 61 73 69 73 20 6F 66 20    on the basis of 
0184B0:  20 74 68 65 20 63 6F 6E 74 65 6E 74 73 20 6F 66     the contents of
0184C0:  20 74 68 65 20 41 20 72 65 67 69 73 74 65 72 2E     the A register.
0184D0:  20 20 57 68 65 6E 0D 0A 20 20 20 77 65 20 64 6F      When..   we do
0184E0:  20 61 20 43 41 4C 4C 20 66 72 6F 6D 20 42 41 53     a CALL from BAS
0184F0:  49 43 2C 20 74 68 65 20 41 20 20 72 65 67 69 73    IC, the A  regis
018500:  74 65 72 20 20 69 73 20 73 65 74 20 74 6F 20 69    ter  is set to i
018510:  6E 64 69 63 61 74 65 20 74 68 65 20 6E 75 6D 62    ndicate the numb
018520:  65 72 20 6F 66 0D 0A 20 20 20 70 61 72 61 6D 65    er of..   parame
018530:  74 65 72 73 20 61 66 74 65 72 20 74 68 65 20 43    ters after the C
018540:  41 4C 4C 2C 20 73 6F 20 70 75 74 74 69 6E 67 20    ALL, so putting 
018550:  20 74 68 72 65 65 20 70 61 72 61 6D 65 74 65 72     three parameter
018560:  73 20 28 69 74 20 64 6F 65 73 6E 27 74 20 6D 61    s (it doesn't ma
018570:  74 74 65 72 0D 0A 20 20 20 77 68 61 74 20 74 68    tter..   what th
018580:  65 79 20 61 72 65 29 20 67 69 76 65 73 20 69 6E    ey are) gives in
018590:  6B 20 6D 6F 64 65 20 33 2C 20 74 68 65 20 4F 52    k mode 3, the OR
0185A0:  20 6D 6F 64 65 2E 0D 0A 0D 0A 20 20 20 20 20 43     mode.....     C
0185B0:  41 4C 4C 20 26 42 43 35 39 20 20 20 20 20 20 20    ALL &BC59       
0185C0:  20 2D 20 63 68 6F 6F 73 65 73 20 4E 6F 72 6D 61     - chooses Norma
0185D0:  6C 20 6D 6F 64 65 0D 0A 20 20 20 20 20 43 41 4C    l mode..     CAL
0185E0:  4C 20 26 42 43 35 39 2C 31 20 20 20 20 20 20 2D    L &BC59,1      -
0185F0:  20 63 68 6F 6F 73 65 73 20 58 4F 52 20 6D 6F 64     chooses XOR mod
018600:  6E 67 20 6F 66 66 20 73 63 72 65 65 6E 0D 0A 20    ng off screen.. 
018610:  20 20 69 6E 20 74 68 61 74 20 63 6F 6C 6F 75 72      in that colour
018620:  2E 20 20 46 6F 72 20 65 78 61 6D 70 6C 65 2C 0D    .  For example,.
018630:  0A 0D 0A 20 20 20 20 20 50 4C 4F 54 20 2D 38 2C    ...     PLOT -8,
018640:  30 2C 61 0D 0A 0D 0A 20 20 20 63 61 6E 20 62 65    0,a....   can be
018650:  20 75 73 65 64 20 69 6E 20 70 6C 61 63 65 20 6F     used in place o
018660:  66 20 47 52 41 50 48 49 43 53 20 50 45 4E 20 20    f GRAPHICS PEN  
018670:  61 2E 20 20 48 6F 77 65 76 65 72 2C 20 74 68 69    a.  However, thi
018680:  73 20 64 6F 65 73 20 68 61 76 65 20 74 68 65 20    s does have the 
018690:  73 69 64 65 0D 0A 20 20 20 65 66 66 65 63 74 20    side..   effect 
0186A0:  6F 66 20 6D 6F 76 69 6E 67 20 74 68 65 20 67 72    of moving the gr
0186B0:  61 70 68 69 63 73 20 20 63 75 72 73 6F 72 2C 20    aphics  cursor, 
0186C0:  20 77 68 69 63 68 20 20 6D 61 79 20 20 62 65 20     which  may  be 
0186D0:  69 6E 63 6F 6E 76 65 6E 69 65 6E 74 20 69 66 20    inconvenient if 
0186E0:  79 6F 75 0D 0A 20 20 20 63 61 6E 6E 6F 74 20 77    you..   cannot w
0186F0:  6F 72 6B 20 6F 75 74 20 77 68 65 72 65 20 74 6F    ork out where to
018700:  20 4D 4F 56 45 20 69 74 20 62 61 63 6B 20 20 74     MOVE it back  t
018710:  6F 21 20 20 41 6E 6F 74 68 65 72 20 77 61 79 20    o!  Another way 
018720:  72 6F 75 6E 64 20 69 74 20 69 73 20 74 6F 20 75    round it is to u
018730:  73 65 0D 0A 20 20 20 74 68 65 20 66 69 72 6D 77    se..   the firmw
018740:  61 72 65 20 72 6F 75 74 69 6E 65 20 47 52 41 20    are routine GRA 
018750:  53 45 54 20 50 45 4E 2E 20 20 49 66 20 20 74 68    SET PEN.  If  th
018760:  65 20 70 61 72 61 6D 65 74 65 72 20 74 6F 20 47    e parameter to G
018770:  52 41 50 48 49 43 53 20 50 45 4E 20 69 73 20 61    RAPHICS PEN is a
018780:  6E 0D 0A 20 20 20 61 62 73 6F 6C 75 74 65 20 76    n..   absolute v
018790:  61 6C 75 65 20 79 6F 75 20 63 61 6E 20 75 73 65    alue you can use
0187A0:  20 20 74 68 65 20 20 73 61 6D 65 20 20 74 72 69      the  same  tri
0187B0:  63 6B 20 20 61 73 20 20 62 65 66 6F 72 65 20 61    ck  as  before a
0187C0:  6E 64 20 64 6F 20 43 41 4C 4C 20 26 42 42 44 45    nd do CALL &BBDE
0187D0:  0D 0A 20 20 20 66 6F 6C 6C 6F 77 65 64 20 62 79    ..   followed by
0187E0:  20 74 68 65 20 72 69 67 68 74 20 6E 75 6D 62 65     the right numbe
0187F0:  72 20 6F 66 20 70 61 72 61 6D 65 74 65 72 73 2E    r of parameters.
018800:  65 0D 0A 20 20 20 20 20 43 41 4C 4C 20 26 42 43    e..     CALL &BC
018810:  35 39 2C 31 2C 31 20 20 20 20 2D 20 63 68 6F 6F    59,1,1    - choo
018820:  73 65 73 20 41 4E 44 20 6D 6F 64 65 0D 0A 20 20    ses AND mode..  
018830:  20 20 20 43 41 4C 4C 20 26 42 43 35 39 2C 31 2C       CALL &BC59,1,
018840:  31 2C 31 20 20 2D 20 63 68 6F 6F 73 65 73 20 58    1,1  - chooses X
018850:  4F 52 20 6D 6F 64 65 0D 0A 0D 0A 20 20 20 54 68    OR mode....   Th
018860:  69 73 20 69 73 20 6E 6F 20 20 67 6F 6F 64 20 20    is is no  good  
018870:  69 66 20 20 74 68 65 20 20 44 52 41 57 20 20 63    if  the  DRAW  c
018880:  6F 6D 6D 61 6E 64 20 20 68 61 73 20 20 61 20 20    ommand  has  a  
018890:  76 61 72 69 61 62 6C 65 20 20 66 6F 72 20 74 68    variable  for th
0188A0:  65 20 66 6F 75 72 74 68 0D 0A 20 20 20 70 61 72    e fourth..   par
0188B0:  61 6D 65 74 65 72 2E 20 20 46 6F 72 20 74 68 61    ameter.  For tha
0188C0:  74 20 79 6F 75 20 73 68 6F 75 6C 64 20 75 73 65    t you should use
0188D0:  20 74 68 65 20 50 52 49 4E 54 20 43 48 52 24 28     the PRINT CHR$(
0188E0:  32 33 29 20 6D 65 74 68 6F 64 2E 0D 0A 0D 0A 20    23) method..... 
0188F0:  20 20 41 53 20 43 4C 45 41 52 20 41 53 20 43 52      AS CLEAR AS CR
018900:  59 53 54 41 4C 0D 0A 20 20 20 41 6E 20 65 78 74    YSTAL..   An ext
018910:  72 61 20 70 61 72 61 6D 65 74 65 72 20 68 61 73    ra parameter has
018920:  20 62 65 65 6E 20 20 61 64 64 65 64 20 20 74 6F     been  added  to
018930:  20 20 74 68 65 20 20 50 45 4E 20 20 63 6F 6D 6D      the  PEN  comm
018940:  61 6E 64 20 74 6F 6F 2C 20 69 6E 20 6F 72 64 65    and too, in orde
018950:  72 20 74 6F 0D 0A 20 20 20 73 65 6C 65 63 74 20    r to..   select 
018960:  74 68 65 20 20 74 65 78 74 20 20 62 61 63 6B 67    the  text  backg
018970:  72 6F 75 6E 64 20 20 6D 6F 64 65 2C 20 20 77 68    round  mode,  wh
018980:  69 63 68 20 20 69 73 20 20 30 20 20 66 6F 72 20    ich  is  0  for 
018990:  20 6F 70 61 71 75 65 20 20 61 6E 64 20 20 31 20     opaque  and  1 
0189A0:  66 6F 72 0D 0A 20 20 20 74 72 61 6E 73 70 61 72    for..   transpar
0189B0:  65 6E 74 2E 20 20 46 6F 72 20 20 65 78 61 6D 70    ent.  For  examp
0189C0:  6C 65 2C 20 20 50 45 4E 20 20 31 2C 31 20 20 77    le,  PEN  1,1  w
0189D0:  69 6C 6C 20 20 73 65 6C 65 63 74 20 20 70 65 6E    ill  select  pen
0189E0:  20 20 31 20 20 61 6E 64 20 20 73 65 74 20 20 74      1  and  set  t
0189F0:  68 65 0D 0A 20 20 20 62 61 63 6B 67 72 6F 75 6E    he..   backgroun
018A00:  20 20 55 73 69 6E 67 20 74 68 69 73 20 6D 65 74      Using this met
018A10:  68 6F 64 0D 0A 0D 0A 20 20 20 20 20 43 41 4C 4C    hod....     CALL
018A20:  20 26 42 42 44 45 2C 31 2C 31 0D 0A 0D 0A 20 20     &BBDE,1,1....  
018A30:  20 68 61 73 20 74 68 65 20 73 61 6D 65 20 65 66     has the same ef
018A40:  66 65 63 74 20 61 73 20 20 47 52 41 50 48 49 43    fect as  GRAPHIC
018A50:  53 20 20 50 45 4E 20 20 32 2C 20 20 62 65 63 61    S  PEN  2,  beca
018A60:  75 73 65 20 20 74 68 65 72 65 20 61 72 65 20 32    use  there are 2
018A70:  20 70 61 72 61 6D 65 74 65 72 73 0D 0A 20 20 20     parameters..   
018A80:  61 66 74 65 72 20 74 68 65 20 43 41 4C 4C 2E 20    after the CALL. 
018A90:  20 49 66 20 79 6F 75 72 20 70 61 72 61 6D 65 74     If your paramet
018AA0:  65 72 20 20 69 73 20 20 61 20 20 76 61 72 69 61    er  is  a  varia
018AB0:  62 6C 65 20 61 6E 64 20 74 68 65 20 50 4C 4F 54    ble and the PLOT
018AC0:  20 6D 65 74 68 6F 64 20 69 73 0D 0A 20 20 20 69     method is..   i
018AD0:  6E 63 6F 6E 76 65 6E 69 65 6E 74 2C 20 74 68 65    nconvenient, the
018AE0:  6E 20 61 20 6C 69 74 74 6C 65 20 62 69 74 20 20    n a little bit  
018AF0:  6F 66 20 20 6D 61 63 68 69 6E 65 20 20 63 6F 64    of  machine  cod
018B00:  65 20 63 61 6E 20 77 6F 72 6B 20 77 6F 6E 64 65    e can work wonde
018B10:  72 73 2E 20 20 4A 75 73 74 0D 0A 20 20 20 69 6E    rs.  Just..   in
018B20:  73 65 72 74 20 74 68 65 20 66 6F 6C 6C 6F 77 69    sert the followi
018B30:  6E 67 20 6C 69 6E 65 20 6E 65 61 72 20 20 74 68    ng line near  th
018B40:  65 20 20 62 65 67 69 6E 6E 69 6E 67 20 20 6F 66    e  beginning  of
018B50:  20 20 74 68 65 20 70 72 6F 67 72 61 6D 2C 20 61      the program, a
018B60:  66 74 65 72 20 61 6E 79 0D 0A 20 20 20 53 59 4D    fter any..   SYM
018B70:  42 4F 4C 20 41 46 54 45 52 20 63 6F 6D 6D 61 6E    BOL AFTER comman
018B80:  64 20 69 66 20 74 68 65 72 65 20 69 73 20 6F 6E    d if there is on
018B90:  65 3A 0D 0A 0D 0A 20 20 20 31 20 67 70 65 6E 3D    e:....   1 gpen=
018BA0:  48 49 4D 45 4D 2D 35 3A 4D 45 4D 4F 52 59 20 48    HIMEM-5:MEMORY H
018BB0:  49 4D 45 4D 2D 36 3A 46 4F 52 20 67 3D 30 20 54    IMEM-6:FOR g=0 T
018BC0:  4F 20 35 3A 52 45 41 44 20 64 3A 50 4F 4B 45 20    O 5:READ d:POKE 
018BD0:  67 70 65 6E 2B 67 2C 64 3A 4E 45 58 54 3A 44 41    gpen+g,d:NEXT:DA
018BE0:  54 41 0D 0A 20 20 20 20 20 26 44 44 2C 26 37 45    TA..     &DD,&7E
018BF0:  2C 30 2C 26 43 33 2C 26 44 45 2C 26 42 42 0D 0A    ,0,&C3,&DE,&BB..
018C00:  64 20 74 6F 20 74 72 61 6E 73 70 61 72 65 6E 74    d to transparent
018C10:  2E 20 20 54 68 65 20 73 74 72 61 6E 67 65 2D 6C    .  The strange-l
018C20:  6F 6F 6B 69 6E 67 20 63 6F 6D 6D 61 6E 64 20 50    ooking command P
018C30:  45 4E 20 2C 30 20 77 69 6C 6C 20 73 65 6C 65 63    EN ,0 will selec
018C40:  74 0D 0A 20 20 20 6F 70 61 71 75 65 20 62 61 63    t..   opaque bac
018C50:  6B 67 72 6F 75 6E 64 20 6D 6F 64 65 20 62 75 74    kground mode but
018C60:  20 6E 6F 74 20 61 6C 74 65 72 20 74 68 65 20 20     not alter the  
018C70:  70 65 6E 20 73 65 6C 65 63 74 65 64 2E 20 20 54    pen selected.  T
018C80:  6F 20 64 65 61 6C 20 77 69 74 68 20 74 68 69 73    o deal with this
018C90:  0D 0A 20 20 20 70 61 72 61 6D 65 74 65 72 20 6F    ..   parameter o
018CA0:  6E 20 74 68 65 20 34 36 34 2C 20 79 6F 75 20 6E    n the 464, you n
018CB0:  65 65 64 20 63 6F 6E 74 72 6F 6C 20 63 6F 64 65    eed control code
018CC0:  20 32 32 2E 0D 0A 0D 0A 20 20 20 20 20 50 45 4E     22.....     PEN
018CD0:  20 31 2C 61 0D 0A 0D 0A 20 20 20 63 61 6E 20 62     1,a....   can b
018CE0:  65 20 72 65 70 6C 61 63 65 64 20 62 79 0D 0A 0D    e replaced by...
018CF0:  0A 20 20 20 20 20 50 45 4E 20 31 3A 50 52 49 4E    .     PEN 1:PRIN
018D00:  54 20 43 48 52 24 28 32 32 29 43 48 52 24 28 61    T CHR$(22)CHR$(a
018D10:  29 3B 0D 0A 0D 0A 20 20 20 6F 72 20 79 6F 75 20    );....   or you 
018D20:  20 63 61 6E 20 20 75 73 65 20 20 61 20 20 73 69     can  use  a  si
018D30:  6D 69 6C 61 72 20 20 66 69 72 6D 77 61 72 65 20    milar  firmware 
018D40:  20 74 72 69 63 6B 2C 20 20 61 6E 64 20 20 64 6F     trick,  and  do
018D50:  20 20 43 41 4C 4C 20 20 26 42 42 39 46 2C 31 20      CALL  &BB9F,1 
018D60:  66 6F 72 0D 0A 20 20 20 74 72 61 6E 73 70 61 72    for..   transpar
018D70:  65 6E 74 20 6F 72 20 43 41 4C 4C 20 26 42 42 39    ent or CALL &BB9
018D80:  46 20 66 6F 72 20 6F 70 61 71 75 65 2E 0D 0A 0D    F for opaque....
018D90:  0A 20 20 20 54 48 45 20 43 55 52 53 45 20 4F 46    .   THE CURSE OF
018DA0:  20 54 48 45 20 43 55 52 53 4F 52 0D 0A 20 20 20     THE CURSOR..   
018DB0:  57 68 69 6C 65 20 77 65 20 61 72 65 20 6F 6E 20    While we are on 
018DC0:  74 68 65 20 20 73 75 62 6A 65 63 74 20 20 6F 66    the  subject  of
018DD0:  20 20 74 65 78 74 20 20 70 72 69 6E 74 69 6E 67      text  printing
018DE0:  2C 20 61 6E 6F 74 68 65 72 20 63 6F 6D 6D 61 6E    , another comman
018DF0:  64 20 68 61 73 20 62 65 65 6E 0D 0A 20 20 20 61    d has been..   a
018E00:  0D 0A 20 20 20 59 6F 75 20 63 61 6E 20 74 68 65    ..   You can the
018E10:  6E 20 72 65 70 6C 61 63 65 20 47 52 41 50 48 49    n replace GRAPHI
018E20:  43 53 20 50 45 4E 20 63 6F 6D 6D 61 6E 64 73 20    CS PEN commands 
018E30:  73 75 63 68 20 61 73 0D 0A 0D 0A 20 20 20 20 20    such as....     
018E40:  47 52 41 50 48 49 43 53 20 50 45 4E 20 78 0D 0A    GRAPHICS PEN x..
018E50:  0D 0A 20 20 20 77 69 74 68 0D 0A 0D 0A 20 20 20    ..   with....   
018E60:  20 20 43 41 4C 4C 20 67 70 65 6E 2C 78 0D 0A 0D      CALL gpen,x...
018E70:  0A 20 20 20 59 6F 75 20 6D 61 79 20 6E 6F 74 69    .   You may noti
018E80:  63 65 20 74 68 61 74 20 74 68 65 20 20 6C 61 73    ce that the  las
018E90:  74 20 20 74 77 6F 20 20 62 79 74 65 73 20 20 6F    t  two  bytes  o
018EA0:  66 20 20 64 61 74 61 20 20 69 6E 20 20 74 68 61    f  data  in  tha
018EB0:  74 20 6C 69 6E 65 20 61 72 65 20 74 68 65 0D 0A    t line are the..
018EC0:  20 20 20 66 69 72 6D 77 61 72 65 20 72 6F 75 74       firmware rout
018ED0:  69 6E 65 20 61 64 64 72 65 73 73 20 66 6F 72 20    ine address for 
018EE0:  47 52 41 20 53 45 54 20 50 45 4E 2C 20 20 62 75    GRA SET PEN,  bu
018EF0:  74 20 74 6F 20 67 65 74 20 74 68 65 20 61 64 64    t to get the add
018F00:  72 65 73 73 20 69 6E 74 6F 20 74 68 65 0D 0A 20    ress into the.. 
018F10:  20 20 66 6F 72 6D 20 74 68 65 20 5A 38 30 20 6C      form the Z80 l
018F20:  69 6B 65 73 20 69 74 20 68 61 73 20 20 62 65 65    ikes it has  bee
018F30:  6E 20 20 63 68 6F 70 70 65 64 20 20 69 6E 20 20    n  chopped  in  
018F40:  74 77 6F 20 61 6E 64 20 74 68 65 20 73 65 63 6F    two and the seco
018F50:  6E 64 20 68 61 6C 66 20 28 74 68 65 0D 0A 20 20    nd half (the..  
018F60:  20 6C 65 61 73 74 20 73 69 67 6E 69 66 69 63 61     least significa
018F70:  6E 74 20 62 79 74 65 29 20 69 73 20 70 75 74 20    nt byte) is put 
018F80:  20 69 6E 20 20 66 69 72 73 74 2E 20 20 20 57 65     in  first.   We
018F90:  20 20 63 61 6E 20 20 75 73 65 20 65 78 61 63 74      can  use exact
018FA0:  6C 79 20 74 68 65 20 73 61 6D 65 0D 0A 20 20 20    ly the same..   
018FB0:  74 65 63 68 6E 69 71 75 65 20 66 6F 72 20 61 6C    technique for al
018FC0:  6C 20 6F 66 20 74 68 65 20 6F 74 68 65 72 20 66    l of the other f
018FD0:  69 72 6D 77 61 72 65 20 72 6F 75 74 69 6E 65 73    irmware routines
018FE0:  20 6D 65 6E 74 69 6F 6E 65 64 20 73 6F 20 66 61     mentioned so fa
018FF0:  72 2E 20 20 54 6F 20 73 65 74 0D 0A 20 20 20 74    r.  To set..   t
019000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
019010:  15 00 01 00 02 09 4E E5 15 00 C7 02 00 00 00 02    ......N.........
019020:  15 00 C3 02 00 00 00 02 15 00 C8 02 00 00 00 02    ................
019030:  15 00 C4 02 00 00 00 02 15 00 C9 02 00 00 00 02    ................
019040:  15 00 C5 02 00 00 00 02 15 00 C1 02 00 00 00 02    ................
019050:  15 00 C6 02 00 00 00 02 15 00 C2 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:  45 52 52 20 20 66 75 6E 63 74 69 6F 6E 2C 20 20    ERR  function,  
019110:  61 6E 64 20 74 68 65 20 62 61 63 6B 67 72 6F 75    and the backgrou
019120:  6E 64 20 6D 6F 64 65 0D 0A 20 20 20 70 61 72 61    nd mode..   para
019130:  6D 65 74 65 72 20 6F 66 20 74 68 65 20 47 52 41    meter of the GRA
019140:  50 48 49 43 53 20 50 45 4E 20 63 6F 6D 6D 61 6E    PHICS PEN comman
019150:  64 20 20 61 72 65 20 20 72 61 74 68 65 72 20 68    d  are  rather h
019160:  61 72 64 65 72 20 74 6F 20 64 65 61 6C 20 77 69    arder to deal wi
019170:  74 68 2C 20 61 73 0D 0A 20 20 20 74 68 65 72 65    th, as..   there
019180:  20 69 73 20 6E 6F 20 73 75 70 70 6F 72 74 20 69     is no support i
019190:  6E 20 20 74 68 65 20 20 34 36 34 27 73 20 20 66    n  the  464's  f
0191A0:  69 72 6D 77 61 72 65 20 20 66 6F 72 20 74 68 65    irmware  for the
0191B0:  73 65 20 66 65 61 74 75 72 65 73 2E 20 20 59 6F    se features.  Yo
0191C0:  75 20 6D 61 79 0D 0A 20 20 20 66 69 6E 64 20 74    u may..   find t
0191D0:  68 61 74 20 74 68 65 20 70 72 6F 67 72 61 6D 20    hat the program 
0191E0:  77 6F 72 6B 73 20 20 72 65 61 73 6F 6E 61 62 6C    works  reasonabl
0191F0:  79 20 20 77 65 6C 6C 20 20 69 66 20 20 79 6F 75    y  well  if  you
019200:  20 6A 75 73 74 20 63 68 6F 70 20 74 68 65 6D 20     just chop them 
019210:  6F 75 74 21 0D 0A 20 20 20 45 76 65 6E 20 77 69    out!..   Even wi
019220:  74 68 6F 75 74 20 74 68 65 73 65 2C 20 79 6F 75    thout these, you
019230:  20 77 69 6C 6C 20 62 65 20 61 62 6C 65 20 74 6F     will be able to
019240:  20 67 65 74 20 61 20 67 6F 6F 64 20 6E 75 6D 62     get a good numb
019250:  65 72 20 6F 66 20 36 31 32 38 20 70 72 6F 67 72    er of 6128 progr
019260:  61 6D 73 0D 0A 20 20 20 77 6F 72 6B 69 6E 67 20    ams..   working 
019270:  6F 6E 20 74 68 65 20 34 36 34 2E 0D 0A 0D 0A 20    on the 464..... 
019280:  20 20 54 68 65 72 65 20 61 72 65 20 61 20 66 65      There are a fe
019290:  77 20 6D 6F 72 65 20 73 75 62 74 6C 65 20 20 64    w more subtle  d
0192A0:  69 66 66 65 72 65 6E 63 65 73 20 20 62 65 74 77    ifferences  betw
0192B0:  65 65 6E 20 42 41 53 49 43 20 31 2E 30 20 61 6E    een BASIC 1.0 an
0192C0:  64 20 31 2E 31 2C 20 77 68 69 63 68 0D 0A 20 20    d 1.1, which..  
0192D0:  20 61 72 65 20 6D 6F 73 74 6C 79 20 66 69 78 65     are mostly fixe
0192E0:  73 20 66 6F 72 20 62 75 67 73 2E 20 20 57 65 20    s for bugs.  We 
0192F0:  20 77 69 6C 6C 20 20 68 61 76 65 20 20 61 20 20     will  have  a  
019300:  75 20 63 61 6E 20 72 65 70 6C 61 63 65 20 69 74    u can replace it
019310:  20 77 69 74 68 0D 0A 0D 0A 20 20 20 20 20 61 24     with....     a$
019320:  3D 43 48 52 24 28 30 29 3A 43 41 4C 4C 20 63 6F    =CHR$(0):CALL co
019330:  70 79 63 68 72 2C 40 61 24 0D 0A 0D 0A 20 20 20    pychr,@a$....   
019340:  42 65 63 61 75 73 65 20 43 4F 50 59 43 48 52 24    Because COPYCHR$
019350:  20 69 73 20 61 20 66 75 6E 63 74 69 6F 6E 2C 20     is a function, 
019360:  79 6F 75 20 63 6F 75 6C 64 20 67 65 74 20 69 74    you could get it
019370:  20 63 6F 6D 69 6E 67 20 75 70 20 69 6E 20 61 6C     coming up in al
019380:  6C 20 73 6F 72 74 73 20 6F 66 0D 0A 20 20 20 61    l sorts of..   a
019390:  77 6B 77 61 72 64 20 73 69 74 75 61 74 69 6F 6E    wkward situation
0193A0:  73 2E 20 20 46 6F 72 20 65 78 61 6D 70 6C 65 2C    s.  For example,
0193B0:  20 79 6F 75 20 6D 69 67 68 74 20 68 61 76 65 0D     you might have.
0193C0:  0A 0D 0A 20 20 20 20 20 78 24 3D 78 24 2B 55 50    ...     x$=x$+UP
0193D0:  50 45 52 24 28 43 4F 50 59 43 48 52 24 28 23 30    PER$(COPYCHR$(#0
0193E0:  29 29 0D 0A 0D 0A 20 20 20 69 6E 20 77 68 69 63    ))....   in whic
0193F0:  68 20 63 61 73 65 20 79 6F 75 20 77 6F 75 6C 64    h case you would
019400:  20 68 61 76 65 20 74 6F 20 64 6F 20 73 6F 6D 65     have to do some
019410:  74 68 69 6E 67 20 6C 69 6B 65 0D 0A 0D 0A 20 20    thing like....  
019420:  20 20 20 61 24 3D 43 48 52 24 28 30 29 3A 43 41       a$=CHR$(0):CA
019430:  4C 4C 20 63 6F 70 79 63 68 72 2C 40 61 24 3A 78    LL copychr,@a$:x
019440:  24 3D 78 24 2B 55 50 50 45 52 24 28 61 24 29 0D    $=x$+UPPER$(a$).
019450:  0A 0D 0A 20 20 20 59 6F 75 20 77 6F 75 6C 64 20    ...   You would 
019460:  68 61 76 65 20 74 6F 20 6D 61 6B 65 20 73 75 72    have to make sur
019470:  65 20 74 68 61 74 20 20 74 68 65 20 20 76 61 72    e that  the  var
019480:  69 61 62 6C 65 20 20 61 24 20 77 61 73 20 6E 6F    iable  a$ was no
019490:  74 20 62 65 69 6E 67 20 75 73 65 64 20 66 6F 72    t being used for
0194A0:  0D 0A 20 20 20 61 6E 79 74 68 69 6E 67 20 65 6C    ..   anything el
0194B0:  73 65 20 69 6E 20 74 68 69 73 20 63 61 73 65 2E    se in this case.
0194C0:  0D 0A 0D 0A 20 20 20 54 68 65 20 6D 61 63 68 69    ....   The machi
0194D0:  6E 65 20 63 6F 64 65 20 49 20 20 68 61 76 65 20    ne code I  have 
0194E0:  20 6A 75 73 74 20 20 67 69 76 65 6E 20 20 64 69     just  given  di
0194F0:  66 66 65 72 73 20 20 69 6E 20 20 74 77 6F 20 20    ffers  in  two  
019500:  6C 6F 6F 6B 20 20 61 74 20 73 6F 6D 65 20 6F 66    look  at some of
019510:  20 74 68 65 73 65 20 6E 65 78 74 0D 0A 20 20 20     these next..   
019520:  6D 6F 6E 74 68 2C 20 61 73 20 73 6F 6D 65 20 6F    month, as some o
019530:  66 20 74 68 65 6D 20 6D 61 6B 65 20 71 75 69 74    f them make quit
019540:  65 20 61 20 62 69 67 20 64 69 66 66 65 72 65 6E    e a big differen
019550:  63 65 20 74 6F 20 68 6F 77 20 63 65 72 74 61 69    ce to how certai
019560:  6E 20 63 6F 6D 6D 61 6E 64 73 0D 0A 20 20 20 77    n commands..   w
019570:  6F 72 6B 2E 0D 0A 1A 68 65 20 73 75 6E 20 62 65    ork....he sun be
019580:  20 69 73 20 6E 6F 20 73 75 70 70 6F 72 74 20 69     is no support i
019590:  6E 20 20 74 68 65 20 20 34 36 34 27 73 20 20 66    n  the  464's  f
0195A0:  69 72 6D 77 61 72 65 20 20 66 6F 72 20 74 68 65    irmware  for the
0195B0:  73 65 20 66 65 61 74 75 72 65 73 2E 20 20 59 6F    se features.  Yo
0195C0:  75 20 6D 61 79 0D 0A 20 20 20 66 69 6E 64 20 74    u may..   find t
0195D0:  68 61 74 20 74 68 65 20 70 72 6F 67 72 61 6D 20    hat the program 
0195E0:  77 6F 72 6B 73 20 20 72 65 61 73 6F 6E 61 62 6C    works  reasonabl
0195F0:  79 20 20 77 65 6C 6C 20 20 69 66 20 20 79 6F 75    y  well  if  you
019600:  20 6A 75 73 74 20 63 68 6F 70 20 74 68 65 6D 20     just chop them 
019610:  6F 75 74 21 0D 0A 20 20 20 45 76 65 6E 20 77 69    out!..   Even wi
019620:  74 68 6F 75 74 20 74 68 65 73 65 2C 20 79 6F 75    thout these, you
019630:  20 77 69 6C 6C 20 62 65 20 61 62 6C 65 20 74 6F     will be able to
019640:  20 67 65 74 20 61 20 67 6F 6F 64 20 6E 75 6D 62     get a good numb
019650:  65 72 20 6F 66 20 36 31 32 38 20 70 72 6F 67 72    er of 6128 progr
019660:  61 6D 73 0D 0A 20 20 20 77 6F 72 6B 69 6E 67 20    ams..   working 
019670:  6F 6E 20 74 68 65 20 34 36 34 2E 0D 0A 0D 0A 20    on the 464..... 
019680:  20 20 54 68 65 72 65 20 61 72 65 20 61 20 66 65      There are a fe
019690:  77 20 6D 6F 72 65 20 73 75 62 74 6C 65 20 20 64    w more subtle  d
0196A0:  69 66 66 65 72 65 6E 63 65 73 20 20 62 65 74 77    ifferences  betw
0196B0:  65 65 6E 20 42 41 53 49 43 20 31 2E 30 20 61 6E    een BASIC 1.0 an
0196C0:  64 20 31 2E 31 2C 20 77 68 69 63 68 0D 0A 20 20    d 1.1, which..  
0196D0:  20 61 72 65 20 6D 6F 73 74 6C 79 20 66 69 78 65     are mostly fixe
0196E0:  73 20 66 6F 72 20 62 75 67 73 2E 20 20 57 65 20    s for bugs.  We 
0196F0:  20 77 69 6C 6C 20 20 68 61 76 65 20 20 61 20 20     will  have  a  
019700:  72 65 73 70 65 63 74 73 20 66 72 6F 6D 20 74 68    respects from th
019710:  65 0D 0A 20 20 20 43 4F 50 59 43 48 52 24 20 20    e..   COPYCHR$  
019720:  66 75 6E 63 74 69 6F 6E 2E 20 20 20 49 66 20 20    function.   If  
019730:  74 68 65 20 20 63 68 61 72 61 63 74 65 72 20 20    the  character  
019740:  72 65 61 64 20 20 66 72 6F 6D 20 20 74 68 65 20    read  from  the 
019750:  20 73 63 72 65 65 6E 20 20 69 73 20 20 6E 6F 74     screen  is  not
019760:  0D 0A 20 20 20 72 65 63 6F 67 6E 69 73 65 64 2C    ..   recognised,
019770:  20 74 68 65 20 43 4F 50 59 43 48 52 24 20 66 75     the COPYCHR$ fu
019780:  6E 63 74 69 6F 6E 20 20 72 65 74 75 72 6E 73 20    nction  returns 
019790:  20 61 6E 20 20 65 6D 70 74 79 20 20 73 74 72 69     an  empty  stri
0197A0:  6E 67 2C 20 77 68 65 72 65 61 73 20 74 68 65 0D    ng, whereas the.
0197B0:  0A 20 20 20 6D 61 63 68 69 6E 65 20 63 6F 64 65    .   machine code
0197C0:  20 77 69 6C 6C 20 72 65 74 75 72 6E 20 43 48 52     will return CHR
0197D0:  24 28 30 29 2E 20 20 49 66 20 79 6F 75 20 20 6E    $(0).  If you  n
0197E0:  65 65 64 20 20 74 6F 20 74 65 73 74 20 66 6F 72    eed  to test for
0197F0:  20 74 68 69 73 2C 20 69 74 20 77 69 6C 6C 0D 0A     this, it will..
019800:  20 20 20 6E 6F 74 20 63 61 75 73 65 20 74 6F 6F       not cause too
019810:  20 6D 75 63 68 20 74 72 6F 75 62 6C 65 2C 20 61     much trouble, a
019820:  73 20 20 43 48 52 24 28 30 29 20 20 69 73 20 76    s  CHR$(0)  is v
019830:  65 72 79 20 72 61 72 65 6C 79 20 70 72 69 6E 74    ery rarely print
019840:  65 64 20 6F 6E 20 73 63 72 65 65 6E 2C 0D 0A 20    ed on screen,.. 
019850:  20 20 73 6F 20 79 6F 75 20 61 72 65 20 6E 6F 74      so you are not
019860:  20 6C 69 6B 65 6C 79 20 74 6F 20 20 6A 75 6D 70     likely to  jump
019870:  20 20 74 6F 20 20 74 68 65 20 77 72 6F 6E 67 20      to  the wrong 
019880:  63 6F 6E 63 6C 75 73 69 6F 6E 73 2E 20 20 41 6C    conclusions.  Al
019890:  73 6F 2C 20 43 4F 50 59 43 48 52 24 0D 0A 20 20    so, COPYCHR$..  
0198A0:  20 61 6C 6C 6F 77 73 20 79 6F 75 20 74 6F 20 73     allows you to s
0198B0:  70 65 63 69 66 79 20 77 68 69 63 68 20 20 77 69    pecify which  wi
0198C0:  6E 64 6F 77 20 20 74 6F 20 20 72 65 61 64 20 20    ndow  to  read  
0198D0:  66 72 6F 6D 2C 20 77 68 69 6C 65 20 6D 79 20 6D    from, while my m
0198E0:  61 63 68 69 6E 65 20 63 6F 64 65 0D 0A 20 20 20    achine code..   
0198F0:  61 6C 77 61 79 73 20 72 65 61 64 73 20 66 72 6F    always reads fro
019900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0199A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0199B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0199C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0199D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0199E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0199F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019B00:  6D 20 77 69 6E 64 6F 77 20 30 2E 20 20 49 66 20    m window 0.  If 
019B10:  79 6F 75 20 63 6F 6D 65 20 61 63 72 6F 73 73 20    you come across 
019B20:  43 4F 50 59 43 48 52 24 28 23 33 29 2C 20 66 6F    COPYCHR$(#3), fo
019B30:  72 20 65 78 61 6D 70 6C 65 2C 0D 0A 20 20 20 6A    r example,..   j
019B40:  75 73 74 20 70 6F 70 20 69 6E 20 61 20 57 49 4E    ust pop in a WIN
019B50:  44 4F 57 20 53 57 41 50 20 20 30 2C 33 20 20 62    DOW SWAP  0,3  b
019B60:  65 66 6F 72 65 20 20 61 6E 64 20 20 61 66 74 65    efore  and  afte
019B70:  72 20 74 68 65 20 63 61 6C 6C 20 74 6F 20 74 68    r the call to th
019B80:  65 20 6D 61 63 68 69 6E 65 0D 0A 20 20 20 63 6F    e machine..   co
019B90:  64 65 2E 0D 0A 0D 0A 20 20 20 4C 4F 43 4F 4D 4F    de.....   LOCOMO
019BA0:  54 49 56 45 20 46 41 49 4C 55 52 45 0D 0A 20 20    TIVE FAILURE..  
019BB0:  20 54 68 65 20 44 45 43 24 20 66 75 6E 63 74 69     The DEC$ functi
019BC0:  6F 6E 20 69 73 20 20 71 75 69 74 65 20 20 61 6E    on is  quite  an
019BD0:  20 20 69 6E 74 65 72 65 73 74 69 6E 67 20 20 6F      interesting  o
019BE0:  6E 65 2C 20 20 62 65 63 61 75 73 65 20 69 74 20    ne,  because it 
019BF0:  69 73 20 61 63 74 75 61 6C 6C 79 0D 0A 20 20 20    is actually..   
019C00:  70 72 65 73 65 6E 74 20 69 6E 20 34 36 34 20 42    present in 464 B
019C10:  41 53 49 43 2E 20 20 54 68 65 20 20 72 65 61 73    ASIC.  The  reas
019C20:  6F 6E 20 20 69 74 20 20 69 73 6E 27 74 20 20 61    on  it  isn't  a
019C30:  64 76 65 72 74 69 73 65 64 20 69 6E 20 74 68 65    dvertised in the
019C40:  20 6D 61 6E 75 61 6C 20 69 73 0D 0A 20 20 20 74     manual is..   t
019C50:  68 61 74 20 74 68 65 72 65 20 69 73 20 61 20 6D    hat there is a m
019C60:  69 6E 6F 72 20 62 75 67 20 69 6E 20 69 74 2E 20    inor bug in it. 
019C70:  20 59 6F 75 20 73 69 6D 70 6C 79 20 68 61 76 65     You simply have
019C80:  20 74 6F 20 69 6E 63 6C 75 64 65 20 61 6E 20 65     to include an e
019C90:  78 74 72 61 20 6C 65 66 74 0D 0A 20 20 20 62 72    xtra left..   br
019CA0:  61 63 6B 65 74 20 61 66 74 65 72 20 74 68 65 20    acket after the 
019CB0:  6E 61 6D 65 20 6F 66 20 74 68 65 20 66 75 6E 63    name of the func
019CC0:  74 69 6F 6E 20 77 68 65 6E 20 79 6F 75 20 75 73    tion when you us
019CD0:  65 20 69 74 21 20 20 54 72 79 0D 0A 0D 0A 20 20    e it!  Try....  
019CE0:  20 20 20 50 52 49 4E 54 20 44 45 43 24 28 28 34       PRINT DEC$((4
019CF0:  35 36 37 2C 22 23 23 23 23 2C 22 29 0D 0A 0D 0A    567,"####,")....
019D00:  68 65 20 41 6D 73 74 72 61 64 2C 0D 0A 20 20 20    he Amstrad,..   
019D10:  77 61 73 20 74 6F 20 75 73 65 20 74 68 65 20 43    was to use the C
019D20:  4C 47 20 20 63 6F 6D 6D 61 6E 64 20 20 77 68 69    LG  command  whi
019D30:  63 68 20 20 63 6C 65 61 72 73 20 20 74 68 65 20    ch  clears  the 
019D40:  67 72 61 70 68 69 63 73 20 77 69 6E 64 6F 77 2C    graphics window,
019D50:  20 62 75 74 20 66 69 72 73 74 0D 0A 20 20 20 72     but first..   r
019D60:  65 64 65 66 69 6E 69 6E 67 20 74 68 65 20 67 72    edefining the gr
019D70:  61 70 68 69 63 73 20 77 69 6E 64 6F 77 20 73 6F    aphics window so
019D80:  20 74 68 61 74 20 69 74 20 77 61 73 20 6F 66 66     that it was off
019D90:  20 73 63 72 65 65 6E 2E 0D 0A 0D 0A 20 20 20 20     screen.....    
019DA0:  20 47 52 41 50 48 49 43 53 20 50 41 50 45 52 20     GRAPHICS PAPER 
019DB0:  78 0D 0A 0D 0A 20 20 20 77 6F 75 6C 64 20 62 65    x....   would be
019DC0:  20 72 65 70 6C 61 63 65 64 20 62 79 0D 0A 0D 0A     replaced by....
019DD0:  20 20 20 20 20 4F 52 49 47 49 4E 20 31 30 30 30         ORIGIN 1000
019DE0:  2C 31 30 30 30 2C 31 30 30 30 2C 32 30 30 30 2C    ,1000,1000,2000,
019DF0:  33 30 30 30 2C 34 30 30 30 3A 43 4C 47 20 78 3A    3000,4000:CLG x:
019E00:  4F 52 49 47 49 4E 20 30 2C 30 2C 30 2C 36 34 30    ORIGIN 0,0,0,640
019E10:  2C 30 2C 34 30 30 0D 0A 0D 0A 20 20 20 54 68 65    ,0,400....   The
019E20:  20 6F 6E 6C 79 20 70 72 6F 62 6C 65 6D 20 77 69     only problem wi
019E30:  74 68 20 74 68 69 73 20 69 73 20 74 68 61 74 20    th this is that 
019E40:  20 69 74 20 20 64 6F 65 73 6E 27 74 20 77 6F 72     it  doesn't wor
019E50:  6B 20 71 75 69 74 65 20 61 73 20 69 6E 74 65 6E    k quite as inten
019E60:  64 65 64 2C 20 61 73 0D 0A 20 20 20 61 20 73 6D    ded, as..   a sm
019E70:  61 6C 6C 20 70 69 65 63 65 20 6F 66 20 74 68 65    all piece of the
019E80:  20 74 6F 70 20 72 69 67 68 74 20 6F 66 20 74 68     top right of th
019E90:  65 20 73 63 72 65 65 6E 20 63 68 61 6E 67 65 73    e screen changes
019EA0:  20 63 6F 6C 6F 75 72 21 0D 0A 0D 0A 20 20 20 52     colour!....   R
019EB0:  45 41 44 49 4E 47 20 46 52 4F 4D 20 54 48 45 20    EADING FROM THE 
019EC0:  53 43 52 45 45 4E 0D 0A 20 20 20 54 68 65 20 43    SCREEN..   The C
019ED0:  4F 50 59 43 48 52 24 20 66 75 6E 63 74 69 6F 6E    OPYCHR$ function
019EE0:  20 63 61 6E 20 62 65 20 71 75 69 74 65 20 75 73     can be quite us
019EF0:  65 66 75 6C 2C 20 62 75 74 20 66 6F 72 74 75 6E    eful, but fortun
019F00:  20 20 20 61 6E 64 20 79 6F 75 20 77 6F 6E 27 74       and you won't
019F10:  20 67 65 74 20 61 20 73 79 6E 74 61 78 20 65 72     get a syntax er
019F20:  72 6F 72 2E 0D 0A 0D 0A 20 20 20 54 68 65 20 66    ror.....   The f
019F30:  6F 72 6D 61 74 20 73 70 65 63 69 66 69 65 72 20    ormat specifier 
019F40:  77 6F 72 6B 73 20 69 6E 20 74 68 65 20 20 73 61    works in the  sa
019F50:  6D 65 20 20 77 61 79 20 20 61 73 20 20 74 68 61    me  way  as  tha
019F60:  74 20 66 6F 72 20 74 68 65 20 50 52 49 4E 54 20    t for the PRINT 
019F70:  55 53 49 4E 47 0D 0A 20 20 20 63 6F 6D 6D 61 6E    USING..   comman
019F80:  64 2E 20 20 54 68 65 72 65 20 69 73 20 61 6E 6F    d.  There is ano
019F90:  74 68 65 72 20 20 73 6D 61 6C 6C 20 20 64 69 66    ther  small  dif
019FA0:  66 65 72 65 6E 63 65 20 20 62 65 74 77 65 65 6E    ference  between
019FB0:  20 20 42 41 53 49 43 20 20 31 2E 30 20 61 6E 64      BASIC  1.0 and
019FC0:  20 31 2E 31 0D 0A 20 20 20 68 65 72 65 2C 20 61     1.1..   here, a
019FD0:  73 20 42 41 53 49 43 20 31 2E 31 20 61 6C 6C 6F    s BASIC 1.1 allo
019FE0:  77 73 20 79 6F 75 20 74 6F 20 20 75 73 65 20 20    ws you to  use  
019FF0:  74 68 65 20 70 6F 75 6E 64 20 73 69 67 6E 20 69    the pound sign i
01A000:  6E 20 66 6F 72 6D 61 74 20 73 70 65 63 69 66 69    n format specifi
01A010:  65 72 73 0D 0A 20 20 20 61 73 20 61 6E 20 61 6C    ers..   as an al
01A020:  74 65 72 6E 61 74 69 76 65 20 74 6F 20 74 68 65    ternative to the
01A030:  20 64 6F 6C 6C 61 72 2E 0D 0A 0D 0A 20 20 20 49     dollar.....   I
01A040:  66 20 79 6F 75 20 77 61 6E 74 20 74 68 65 20 70    f you want the p
01A050:  72 6F 67 72 61 6D 20 74 6F 20 77 6F 72 6B 20 6F    rogram to work o
01A060:  6E 20 61 6C 6C 20 6F 66 20 74 68 65 20 43 50 43    n all of the CPC
01A070:  73 2C 20 79 6F 75 20 77 69 6C 6C 20 68 61 76 65    s, you will have
01A080:  20 74 6F 20 61 76 6F 69 64 0D 0A 20 20 20 74 68     to avoid..   th
01A090:  65 20 44 45 43 24 20 63 6F 6D 6D 61 6E 64 20 61    e DEC$ command a
01A0A0:  6E 64 20 72 65 77 72 69 74 65 20 69 74 20 73 6F    nd rewrite it so
01A0B0:  6D 65 20 6F 74 68 65 72 20 77 61 79 2E 0D 0A 0D    me other way....
01A0C0:  0A 20 20 20 4D 49 53 53 49 4F 4E 20 41 20 42 49    .   MISSION A BI
01A0D0:  54 20 48 41 52 44 45 52 0D 0A 20 20 20 54 68 65    T HARDER..   The
01A0E0:  20 46 49 4C 4C 20 61 6E 64 20 4D 41 53 4B 20 63     FILL and MASK c
01A0F0:  6F 6D 6D 61 6E 64 73 2C 20 20 74 68 65 20 20 44    ommands,  the  D
01A100:  61 74 65 6C 79 20 69 74 20 69 73 20 63 6F 6E 74    ately it is cont
01A110:  61 69 6E 65 64 0D 0A 20 20 20 69 6E 20 74 68 65    ained..   in the
01A120:  20 31 2E 30 20 66 69 72 6D 77 61 72 65 20 61 6E     1.0 firmware an
01A130:  64 20 73 6F 20 77 65 20 63 61 6E 20 64 6F 20 69    d so we can do i
01A140:  74 20 71 75 69 74 65 20 65 61 73 69 6C 79 20 6F    t quite easily o
01A150:  6E 20 74 68 65 20 34 36 34 2E 20 20 49 74 20 6E    n the 464.  It n
01A160:  65 65 64 73 0D 0A 20 20 20 61 20 62 69 74 20 6F    eeds..   a bit o
01A170:  66 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 61    f machine code a
01A180:  67 61 69 6E 2C 20 61 6E 64 20 20 74 68 65 20 20    gain, and  the  
01A190:  73 79 6E 74 61 78 20 69 73 20 61 20 62 69 74 20    syntax is a bit 
01A1A0:  64 69 66 66 65 72 65 6E 74 2E 20 20 50 75 74 20    different.  Put 
01A1B0:  74 68 65 0D 0A 20 20 20 66 6F 6C 6C 6F 77 69 6E    the..   followin
01A1C0:  67 20 6C 69 6E 65 20 61 74 20 20 74 68 65 20 20    g line at  the  
01A1D0:  73 74 61 72 74 20 20 6F 66 20 20 74 68 65 20 20    start  of  the  
01A1E0:  70 72 6F 67 72 61 6D 20 20 28 61 66 74 65 72 20    program  (after 
01A1F0:  20 61 6E 79 20 20 53 59 4D 42 4F 4C 20 41 46 54     any  SYMBOL AFT
01A200:  45 52 0D 0A 20 20 20 63 6F 6D 6D 61 6E 64 29 3A    ER..   command):
01A210:  0D 0A 0D 0A 20 20 20 31 20 63 6F 70 79 63 68 72    ....   1 copychr
01A220:  3D 48 49 4D 45 4D 2D 31 37 3A 4D 45 4D 4F 52 59    =HIMEM-17:MEMORY
01A230:  20 48 49 4D 45 4D 2D 31 38 3A 46 4F 52 20 67 3D     HIMEM-18:FOR g=
01A240:  30 20 54 4F 20 31 37 3A 52 45 41 44 20 64 3A 50    0 TO 17:READ d:P
01A250:  4F 4B 45 20 63 6F 70 79 63 68 72 2B 67 2C 64 3A    OKE copychr+g,d:
01A260:  0D 0A 20 20 20 20 20 4E 45 58 54 3A 44 41 54 41    ..     NEXT:DATA
01A270:  20 26 44 44 2C 26 36 45 2C 30 2C 26 44 44 2C 26     &DD,&6E,0,&DD,&
01A280:  36 36 2C 31 2C 26 37 45 2C 26 42 37 2C 26 43 38    66,1,&7E,&B7,&C8
01A290:  2C 26 43 44 2C 26 36 30 2C 26 42 42 2C 26 32 33    ,&CD,&60,&BB,&23
01A2A0:  2C 26 35 45 2C 26 32 33 2C 26 35 36 2C 0D 0A 20    ,&5E,&23,&56,.. 
01A2B0:  20 20 20 20 26 31 32 2C 26 43 39 0D 0A 0D 0A 20        &12,&C9.... 
01A2C0:  20 20 49 66 20 79 6F 75 20 68 61 76 65 20 61 20      If you have a 
01A2D0:  63 6F 6D 6D 61 6E 64 20 73 75 63 68 20 61 73 0D    command such as.
01A2E0:  0A 0D 0A 20 20 20 20 20 61 24 3D 43 4F 50 59 43    ...     a$=COPYC
01A2F0:  48 52 24 28 23 30 29 0D 0A 0D 0A 20 20 20 79 6F    HR$(#0)....   yo
01A300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01A310:  16 00 01 00 02 09 4E E5 16 00 C1 02 00 00 00 02    ......N.........
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:  23 43 6F 6D 6D 61 6E 64 73 20 69 6E 74 72 6F 64    #Commands introd
01A410:  75 63 65 64 20 6F 72 20 61 6C 74 65 72 65 64 20    uced or altered 
01A420:  69 6E 20 42 41 53 49 43 20 31 2E 31 0D 0A 20 0D    in BASIC 1.1.. .
01A430:  0A 20 20 20 43 4C 45 41 52 20 49 4E 50 55 54 0D    .   CLEAR INPUT.
01A440:  0A 20 20 20 20 20 43 6C 65 61 72 73 20 74 68 65    .     Clears the
01A450:  20 6B 65 79 62 6F 61 72 64 20 69 6E 70 75 74 20     keyboard input 
01A460:  62 75 66 66 65 72 2E 0D 0A 0D 0A 20 20 20 43 4F    buffer.....   CO
01A470:  50 59 43 48 52 24 28 23 3C 73 74 72 65 61 6D 20    PYCHR$(#<stream 
01A480:  65 78 70 72 65 73 73 69 6F 6E 3E 29 0D 0A 20 20    expression>)..  
01A490:  20 20 20 46 75 6E 63 74 69 6F 6E 20 72 65 74 75       Function retu
01A4A0:  72 6E 69 6E 67 20 74 68 65 20 63 68 61 72 61 63    rning the charac
01A4B0:  74 65 72 20 66 6F 75 6E 64 20 61 74 20 74 68 65    ter found at the
01A4C0:  20 63 75 72 72 65 6E 74 20 63 75 72 73 6F 72 20     current cursor 
01A4D0:  70 6F 73 69 74 69 6F 6E 20 69 6E 0D 0A 20 20 20    position in..   
01A4E0:  20 20 74 68 65 20 73 63 72 65 65 6E 20 77 69 6E      the screen win
01A4F0:  64 6F 77 20 73 70 65 63 69 66 69 65 64 2C 20 6F    dow specified, o
01A500:  72 20 61 20 6E 75 6C 6C 20 73 74 72 69 6E 67 20    r a null string 
01A510:  69 66 20 69 74 20 69 73 20 6E 6F 74 20 72 65 63    if it is not rec
01A520:  6F 67 6E 69 7A 65 64 2E 0D 0A 0D 0A 20 20 20 20    ognized.....    
01A530:  20 4C 4F 43 41 54 45 20 31 2C 31 3A 61 24 3D 43     LOCATE 1,1:a$=C
01A540:  4F 50 59 43 48 52 24 28 23 30 29 0D 0A 20 20 20    OPYCHR$(#0)..   
01A550:  20 20 72 65 61 64 73 20 74 68 65 20 63 68 61 72      reads the char
01A560:  61 63 74 65 72 20 66 72 6F 6D 20 74 68 65 20 74    acter from the t
01A570:  6F 70 20 6C 65 66 74 20 63 6F 72 6E 65 72 20 6F    op left corner o
01A580:  66 20 77 69 6E 64 6F 77 20 30 2E 0D 0A 0D 0A 20    f window 0..... 
01A590:  20 20 43 55 52 53 4F 52 20 5B 3C 73 79 73 74 65      CURSOR [<syste
01A5A0:  6D 20 73 77 69 74 63 68 3E 5D 5B 2C 3C 75 73 65    m switch>][,<use
01A5B0:  72 20 73 77 69 74 63 68 3E 5D 0D 0A 20 20 20 20    r switch>]..    
01A5C0:  20 53 65 74 73 20 74 68 65 20 73 77 69 74 63 68     Sets the switch
01A5D0:  65 73 20 74 68 61 74 20 63 6F 6E 74 72 6F 6C 20    es that control 
01A5E0:  74 68 65 20 64 69 73 70 6C 61 79 20 6F 66 20 74    the display of t
01A5F0:  68 65 20 63 75 72 73 6F 72 20 62 6C 6F 62 20 6F    he cursor blob o
01A600:  20 20 31 2E 20 20 20 45 69 74 68 65 72 20 20 70      1.   Either  p
01A610:  61 72 61 6D 65 74 65 72 20 20 6D 61 79 20 62 65    arameter  may be
01A620:  20 6F 6D 69 74 74 65 64 2C 20 62 75 74 20 6E 6F     omitted, but no
01A630:  74 0D 0A 20 20 20 20 20 62 6F 74 68 2E 0D 0A 0D    t..     both....
01A640:  0A 20 20 20 4D 4F 56 45 0D 0A 20 20 20 4D 4F 56    .   MOVE..   MOV
01A650:  45 52 0D 0A 20 20 20 20 20 41 73 20 6F 6E 20 74    ER..     As on t
01A660:  68 65 20 20 34 36 34 20 20 62 75 74 20 20 77 69    he  464  but  wi
01A670:  74 68 20 20 74 77 6F 20 20 65 78 74 72 61 20 20    th  two  extra  
01A680:  6F 70 74 69 6F 6E 61 6C 20 20 70 61 72 61 6D 65    optional  parame
01A690:  74 65 72 73 20 20 6F 66 20 3C 69 6E 6B 3E 20 74    ters  of <ink> t
01A6A0:  6F 0D 0A 20 20 20 20 20 63 68 61 6E 67 65 20 74    o..     change t
01A6B0:  68 65 20 67 72 61 70 68 69 63 73 20 70 65 6E 2C    he graphics pen,
01A6C0:  20 61 6E 64 20 3C 69 6E 6B 20 6D 6F 64 65 3E 2C     and <ink mode>,
01A6D0:  20 20 66 72 6F 6D 20 20 30 20 20 74 6F 20 33 2E      from  0  to 3.
01A6E0:  20 20 30 20 69 73 20 6E 6F 72 6D 61 6C 2C 20 31      0 is normal, 1
01A6F0:  0D 0A 20 20 20 20 20 58 4F 52 2C 20 32 20 41 4E    ..     XOR, 2 AN
01A700:  44 2C 20 33 20 4F 52 2E 0D 0A 0D 0A 20 20 20 4F    D, 3 OR.....   O
01A710:  4E 20 42 52 45 41 4B 20 43 4F 4E 54 0D 0A 20 20    N BREAK CONT..  
01A720:  20 20 20 50 72 65 76 65 6E 74 73 20 74 68 65 20       Prevents the 
01A730:  70 72 6F 67 72 61 6D 20 62 65 69 6E 67 20 62 72    program being br
01A740:  6F 6B 65 6E 20 69 6E 74 6F 20 77 68 65 6E 20 45    oken into when E
01A750:  53 43 20 69 73 20 70 72 65 73 73 65 64 20 74 77    SC is pressed tw
01A760:  69 63 65 2E 0D 0A 0D 0A 20 20 20 50 45 4E 0D 0A    ice.....   PEN..
01A770:  20 20 20 20 20 41 73 20 6F 6E 20 74 68 65 20 34         As on the 4
01A780:  36 34 2C 20 20 62 75 74 20 20 77 69 74 68 20 20    64,  but  with  
01A790:  61 6E 20 20 65 78 74 72 61 20 20 6F 70 74 69 6F    an  extra  optio
01A7A0:  6E 61 6C 20 20 70 61 72 61 6D 65 74 65 72 20 20    nal  parameter  
01A7B0:  74 6F 20 73 65 6C 65 63 74 20 74 68 65 0D 0A 20    to select the.. 
01A7C0:  20 20 20 20 62 61 63 6B 67 72 6F 75 6E 64 20 6D        background m
01A7D0:  6F 64 65 20 66 6F 72 20 74 65 78 74 20 70 72 69    ode for text pri
01A7E0:  6E 74 69 6E 67 3A 20 30 20 66 6F 72 20 6F 70 61    nting: 0 for opa
01A7F0:  71 75 65 2C 20 31 20 66 6F 72 20 74 72 61 6E 73    que, 1 for trans
01A800:  6E 20 73 63 72 65 65 6E 2E 0D 0A 20 20 20 20 20    n screen...     
01A810:  54 68 65 20 70 61 72 61 6D 65 74 65 72 73 20 61    The parameters a
01A820:  72 65 20 30 20 66 6F 72 20 6F 66 66 20 61 6E 64    re 0 for off and
01A830:  20 20 31 20 20 66 6F 72 20 6F 6E 2E 20 20 54 68      1  for on.  Th
01A840:  65 20 62 6C 6F 62 20 69 73 20 64 69 73 70 6C 61    e blob is displa
01A850:  79 65 64 20 77 68 65 6E 0D 0A 20 20 20 20 20 62    yed when..     b
01A860:  6F 74 68 20 73 77 69 74 63 68 65 73 20 61 72 65    oth switches are
01A870:  20 6F 6E 2E 20 20 54 68 65 20 73 79 73 74 65 6D     on.  The system
01A880:  20 20 73 77 69 74 63 68 20 69 73 20 74 75 72 6E      switch is turn
01A890:  65 64 20 6F 6E 20 61 75 74 6F 6D 61 74 69 63 61    ed on automatica
01A8A0:  6C 6C 79 20 66 6F 72 0D 0A 20 20 20 20 20 74 68    lly for..     th
01A8B0:  65 20 49 4E 50 55 54 20 63 6F 6D 6D 61 6E 64 2C    e INPUT command,
01A8C0:  20 61 6E 64 20 74 68 65 20 75 73 65 72 20 73 77     and the user sw
01A8D0:  69 74 63 68 20 69 73 20 6F 6E 20 62 79 20 64 65    itch is on by de
01A8E0:  66 61 75 6C 74 2E 0D 0A 0D 0A 20 20 20 20 20 45    fault.....     E
01A8F0:  69 74 68 65 72 20 73 77 69 74 63 68 20 70 61 72    ither switch par
01A900:  61 6D 65 74 65 72 20 6D 61 79 20 62 65 20 6F 6D    ameter may be om
01A910:  69 74 74 65 64 2C 20 62 75 74 20 6E 6F 74 20 62    itted, but not b
01A920:  6F 74 68 2E 0D 0A 0D 0A 20 20 20 44 45 43 24 28    oth.....   DEC$(
01A930:  3C 6E 75 6D 65 72 69 63 20 65 78 70 72 65 73 73    <numeric express
01A940:  69 6F 6E 3E 2C 3C 66 6F 72 6D 61 74 20 73 74 72    ion>,<format str
01A950:  69 6E 67 3E 29 0D 0A 20 20 20 20 20 46 75 6E 63    ing>)..     Func
01A960:  74 69 6F 6E 20 72 65 74 75 72 6E 69 6E 67 20 61    tion returning a
01A970:  20 64 65 63 69 6D 61 6C 20 20 6E 75 6D 62 65 72     decimal  number
01A980:  20 20 66 6F 72 6D 61 74 74 65 64 20 20 61 63 63      formatted  acc
01A990:  6F 72 64 69 6E 67 20 74 6F 20 74 68 65 20 66 6F    ording to the fo
01A9A0:  72 6D 61 74 0D 0A 20 20 20 20 20 73 74 72 69 6E    rmat..     strin
01A9B0:  67 2C 20 77 68 69 63 68 20 69 73 20 73 70 65 63    g, which is spec
01A9C0:  69 66 69 65 64 20 69 6E 20 74 68 65 20 73 61 6D    ified in the sam
01A9D0:  65 20 77 61 79 20 61 73 20 50 52 49 4E 54 20 55    e way as PRINT U
01A9E0:  53 49 4E 47 0D 0A 0D 0A 20 20 20 20 20 61 24 3D    SING....     a$=
01A9F0:  44 45 43 24 28 34 37 2C 22 23 23 23 2E 23 23 22    DEC$(47,"###.##"
01AA00:  70 61 72 65 6E 74 2E 0D 0A 0D 0A 20 20 20 50 4C    parent.....   PL
01AA10:  4F 54 0D 0A 20 20 20 50 4C 4F 54 52 0D 0A 20 20    OT..   PLOTR..  
01AA20:  20 20 20 41 73 20 66 6F 72 20 44 52 41 57 20 61       As for DRAW a
01AA30:  6E 64 20 44 52 41 57 52 0D 0A 1A 50 55 54 0D 0A    nd DRAWR...PUT..
01AA40:  20 20 20 20 20 43 6C 65 61 72 73 20 74 68 65 20         Clears the 
01AA50:  6B 65 79 62 6F 61 72 64 20 69 6E 70 75 74 20 62    keyboard input b
01AA60:  75 66 66 65 72 2E 0D 0A 0D 0A 20 20 20 43 4F 50    uffer.....   COP
01AA70:  59 43 48 52 24 28 23 3C 73 74 72 65 61 6D 20 65    YCHR$(#<stream e
01AA80:  6F 70 74 69 6F 6E 61 6C 20 20 70 61 72 61 6D 65    optional  parame
01AA90:  74 65 72 73 20 20 6F 66 20 3C 69 6E 6B 3E 20 74    ters  of <ink> t
01AAA0:  6F 0D 0A 20 20 20 20 20 63 68 61 6E 67 65 20 74    o..     change t
01AAB0:  68 65 20 67 72 61 70 68 69 63 73 20 70 65 6E 2C    he graphics pen,
01AAC0:  20 61 6E 64 20 3C 69 6E 6B 20 6D 6F 64 65 3E 2C     and <ink mode>,
01AAD0:  20 20 66 72 6F 6D 20 20 30 20 20 74 6F 20 33 2E      from  0  to 3.
01AAE0:  20 20 30 20 69 73 20 6E 6F 72 6D 61 6C 2C 20 31      0 is normal, 1
01AAF0:  0D 0A 20 20 20 20 20 58 4F 52 2C 20 32 20 41 4E    ..     XOR, 2 AN
01AB00:  44 2C 20 33 20 4F 52 2E 0D 0A 0D 0A 20 20 20 4F    D, 3 OR.....   O
01AB10:  4E 20 42 52 45 41 4B 20 43 4F 4E 54 0D 0A 20 20    N BREAK CONT..  
01AB20:  20 20 20 50 72 65 76 65 6E 74 73 20 74 68 65 20       Prevents the 
01AB30:  70 72 6F 67 72 61 6D 20 62 65 69 6E 67 20 62 72    program being br
01AB40:  6F 6B 65 6E 20 69 6E 74 6F 20 77 68 65 6E 20 45    oken into when E
01AB50:  53 43 20 69 73 20 70 72 65 73 73 65 64 20 74 77    SC is pressed tw
01AB60:  69 63 65 2E 0D 0A 0D 0A 20 20 20 50 45 4E 0D 0A    ice.....   PEN..
01AB70:  20 20 20 20 20 41 73 20 6F 6E 20 74 68 65 20 34         As on the 4
01AB80:  36 34 2C 20 20 62 75 74 20 20 77 69 74 68 20 20    64,  but  with  
01AB90:  61 6E 20 20 65 78 74 72 61 20 20 6F 70 74 69 6F    an  extra  optio
01ABA0:  6E 61 6C 20 20 70 61 72 61 6D 65 74 65 72 20 20    nal  parameter  
01ABB0:  74 6F 20 73 65 6C 65 63 74 20 74 68 65 0D 0A 20    to select the.. 
01ABC0:  20 20 20 20 62 61 63 6B 67 72 6F 75 6E 64 20 6D        background m
01ABD0:  6F 64 65 20 66 6F 72 20 74 65 78 74 20 70 72 69    ode for text pri
01ABE0:  6E 74 69 6E 67 3A 20 30 20 66 6F 72 20 6F 70 61    nting: 0 for opa
01ABF0:  71 75 65 2C 20 31 20 66 6F 72 20 74 72 61 6E 73    que, 1 for trans
01AC00:  29 0D 0A 20 20 20 20 20 77 69 6C 6C 20 73 65 74    )..     will set
01AC10:  20 61 24 20 74 6F 20 62 65 20 22 20 34 37 2E 30     a$ to be " 47.0
01AC20:  30 22 0D 0A 0D 0A 20 20 20 44 45 52 52 0D 0A 20    0"....   DERR.. 
01AC30:  20 20 20 20 52 65 74 75 72 6E 73 20 74 68 65 20        Returns the 
01AC40:  6C 61 73 74 20 64 69 73 63 20 65 72 72 6F 72 20    last disc error 
01AC50:  6E 75 6D 62 65 72 2E 20 20 46 6F 72 20 65 78 61    number.  For exa
01AC60:  6D 70 6C 65 3A 0D 0A 0D 0A 20 20 20 20 20 78 3D    mple:....     x=
01AC70:  44 45 52 52 0D 0A 20 20 20 20 20 73 65 74 73 20    DERR..     sets 
01AC80:  78 20 65 71 75 61 6C 20 74 6F 20 74 68 65 20 6C    x equal to the l
01AC90:  61 73 74 20 64 69 73 63 20 65 72 72 6F 72 20 6E    ast disc error n
01ACA0:  75 6D 62 65 72 2E 0D 0A 0D 0A 20 20 20 44 52 41    umber.....   DRA
01ACB0:  57 0D 0A 20 20 20 44 52 41 57 52 0D 0A 20 20 20    W..   DRAWR..   
01ACC0:  20 20 41 73 20 6F 6E 20 74 68 65 20 34 36 34 20      As on the 464 
01ACD0:  62 75 74 20 77 69 74 68 20 61 6E 20 65 78 74 72    but with an extr
01ACE0:  61 20 6F 70 74 69 6F 6E 61 6C 20 70 61 72 61 6D    a optional param
01ACF0:  65 74 65 72 20 6F 66 20 3C 69 6E 6B 20 6D 6F 64    eter of <ink mod
01AD00:  65 3E 2C 20 66 72 6F 6D 20 30 0D 0A 20 20 20 20    e>, from 0..    
01AD10:  20 74 6F 20 33 2E 20 20 30 20 69 73 20 6E 6F 72     to 3.  0 is nor
01AD20:  6D 61 6C 2C 20 31 20 58 4F 52 2C 20 32 20 41 4E    mal, 1 XOR, 2 AN
01AD30:  44 2C 20 33 20 4F 52 2E 0D 0A 0D 0A 20 20 20 46    D, 3 OR.....   F
01AD40:  49 4C 4C 20 3C 69 6E 6B 3E 0D 0A 20 20 20 20 20    ILL <ink>..     
01AD50:  46 69 6C 6C 73 20 74 68 65 20 73 63 72 65 65 6E    Fills the screen
01AD60:  20 77 69 74 68 20 3C 69 6E 6B 3E 20 73 74 61 72     with <ink> star
01AD70:  74 69 6E 67 20 20 66 72 6F 6D 20 74 68 65 20 67    ting  from the g
01AD80:  72 61 70 68 69 63 73 20 63 75 72 73 6F 72 20 70    raphics cursor p
01AD90:  6F 73 69 74 69 6F 6E 2C 0D 0A 20 20 20 20 20 66    osition,..     f
01ADA0:  69 6C 6C 69 6E 67 20 61 20 72 65 67 69 6F 6E 20    illing a region 
01ADB0:  62 6F 75 6E 64 65 64 20 62 79 20 20 74 68 65 20    bounded by  the 
01ADC0:  20 63 75 72 72 65 6E 74 20 20 67 72 61 70 68 69     current  graphi
01ADD0:  63 73 20 20 70 65 6E 20 69 6E 6B 20 61 6E 64 20    cs  pen ink and 
01ADE0:  74 68 65 20 69 6E 6B 0D 0A 20 20 20 20 20 62 65    the ink..     be
01ADF0:  69 6E 67 20 75 73 65 64 20 74 6F 20 66 69 6C 6C    ing used to fill
01AE00:  72 68 61 70 73 20 6D 6F 72 65 20 20 75 73 65 66    rhaps more  usef
01AE10:  75 6C 20 61 72 65 20 74 68 65 20 76 61 72 69 61    ul are the varia
01AE20:  6E 74 73 20 7C 4C 49 53 54 50 0D 0A 20 20 20 61    nts |LISTP..   a
01AE30:  6E 64 20 7C 4C 49 53 54 46 2E 20 20 54 68 65 20    nd |LISTF.  The 
01AE40:  66 6F 72 6D 65 72 20 6C 69 73 74 73 20 74 68 65    former lists the
01AE50:  20 77 68 6F 6C 65 20 20 70 72 6F 67 72 61 6D 20     whole  program 
01AE60:  74 6F 20 74 68 65 20 70 72 69 6E 74 65 72 20 69    to the printer i
01AE70:  6E 73 74 65 61 64 20 6F 66 0D 0A 20 20 20 74 68    nstead of..   th
01AE80:  65 20 73 63 72 65 65 6E 2C 20 61 6E 64 20 74 68    e screen, and th
01AE90:  65 20 6C 61 74 74 65 72 20 6C 69 73 74 73 20 74    e latter lists t
01AEA0:  6F 20 61 20 66 69 6C 65 2E 20 20 46 6F 72 20 65    o a file.  For e
01AEB0:  78 61 6D 70 6C 65 3A 0D 0A 0D 0A 20 20 20 20 20    xample:....     
01AEC0:  61 24 3D 22 66 69 6C 65 6E 61 6D 65 22 3A 7C 4C    a$="filename":|L
01AED0:  49 53 54 46 2C 40 61 24 0D 0A 0D 0A 20 20 20 77    ISTF,@a$....   w
01AEE0:  6F 75 6C 64 20 6C 69 73 74 20 74 68 65 20 77 68    ould list the wh
01AEF0:  6F 6C 65 20 70 72 6F 67 72 61 6D 20 74 6F 20 61    ole program to a
01AF00:  20 66 69 6C 65 20 63 61 6C 6C 65 64 20 22 66 69     file called "fi
01AF10:  6C 65 6E 61 6D 65 22 20 28 73 69 6C 6C 79 20 6E    lename" (silly n
01AF20:  61 6D 65 20 66 6F 72 20 61 0D 0A 20 20 20 66 69    ame for a..   fi
01AF30:  6C 65 29 2E 20 20 59 6F 75 20 63 6F 75 6C 64 20    le).  You could 
01AF40:  74 68 65 6E 20 6C 6F 61 64 20 74 68 65 20 66 69    then load the fi
01AF50:  6C 65 20 20 69 6E 74 6F 20 20 61 6E 20 65 64 69    le  into  an edi
01AF60:  74 6F 72 20 6C 69 6B 65 20 50 72 6F 74 65 78 74    tor like Protext
01AF70:  20 61 6E 64 20 75 73 65 0D 0A 20 20 20 74 68 65     and use..   the
01AF80:  20 73 65 61 72 63 68 20 61 6E 64 20 72 65 70 6C     search and repl
01AF90:  61 63 65 20 66 61 63 69 6C 69 74 69 65 73 20 74    ace facilities t
01AFA0:  6F 20 63 6F 72 72 65 63 74 20 74 68 65 20 6C 69    o correct the li
01AFB0:  6E 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 49 20 68    nes.....     I h
01AFC0:  61 76 65 20 61 6C 73 6F 20 70 72 6F 76 69 64 65    ave also provide
01AFD0:  64 20 7C 53 43 41 4E 50 20 61 6E 64 20 7C 53 43    d |SCANP and |SC
01AFE0:  41 4E 46 20 77 68 69 63 68 20 77 6F 72 6B 20 69    ANF which work i
01AFF0:  6E 20 61 20 73 69 6D 69 6C 61 72 20 77 61 79 2E    n a similar way.
01B000:  2E 0D 0A 0D 0A 20 20 20 46 52 41 4D 45 0D 0A 20    .....   FRAME.. 
01B010:  20 20 20 20 57 61 69 74 73 20 66 6F 72 20 74 68        Waits for th
01B020:  65 20 66 72 61 6D 65 20 66 6C 79 62 61 63 6B 20    e frame flyback 
01B030:  69 6E 20 20 61 6E 20 20 61 74 74 65 6D 70 74 20    in  an  attempt 
01B040:  74 6F 20 61 76 6F 69 64 20 66 6C 69 63 6B 65 72    to avoid flicker
01B050:  79 20 64 69 73 70 6C 61 79 20 6F 66 0D 0A 20 20    y display of..  
01B060:  20 20 20 63 68 61 6E 67 69 6E 67 20 67 72 61 70       changing grap
01B070:  68 69 63 73 2E 20 20 4E 6F 74 20 72 65 61 6C 6C    hics.  Not reall
01B080:  79 20 6D 75 63 68 20 75 73 65 20 66 6F 72 20 42    y much use for B
01B090:  41 53 49 43 2E 0D 0A 0D 0A 20 20 20 47 52 41 50    ASIC.....   GRAP
01B0A0:  48 49 43 53 20 50 41 50 45 52 20 3C 69 6E 6B 3E    HICS PAPER <ink>
01B0B0:  0D 0A 20 20 20 20 20 53 65 74 73 20 74 68 65 20    ..     Sets the 
01B0C0:  67 72 61 70 68 69 63 73 20 62 61 63 6B 67 72 6F    graphics backgro
01B0D0:  75 6E 64 20 69 6E 6B 2C 20 75 73 65 64 20 20 66    und ink, used  f
01B0E0:  6F 72 20 74 68 65 20 62 61 63 6B 67 72 6F 75 6E    or the backgroun
01B0F0:  64 20 6F 66 20 63 68 61 72 61 63 74 65 72 73 0D    d of characters.
01B100:  0A 20 20 20 20 20 70 72 69 6E 74 65 64 20 77 69    .     printed wi
01B110:  74 68 20 54 41 47 2C 20 61 6E 64 20 74 68 65 20    th TAG, and the 
01B120:  67 61 70 73 20 69 6E 20 64 6F 74 74 65 64 20 6C    gaps in dotted l
01B130:  69 6E 65 73 20 64 72 61 77 6E 20 77 69 74 68 20    ines drawn with 
01B140:  4D 41 53 4B 2E 0D 0A 0D 0A 20 20 20 47 52 41 50    MASK.....   GRAP
01B150:  48 49 43 53 20 50 45 4E 20 5B 3C 69 6E 6B 3E 5D    HICS PEN [<ink>]
01B160:  5B 2C 3C 62 61 63 6B 67 72 6F 75 6E 64 20 6D 6F    [,<background mo
01B170:  64 65 3E 5D 0D 0A 20 20 20 20 20 43 68 6F 6F 73    de>]..     Choos
01B180:  65 73 20 74 68 65 20 69 6E 6B 20 75 73 65 64 20    es the ink used 
01B190:  66 6F 72 20 64 72 61 77 69 6E 67 20 6C 69 6E 65    for drawing line
01B1A0:  73 20 61 6E 64 20 70 72 69 6E 74 69 6E 67 20 63    s and printing c
01B1B0:  68 61 72 61 63 74 65 72 73 20 77 69 74 68 20 54    haracters with T
01B1C0:  41 47 2E 0D 0A 20 20 20 20 20 54 68 65 20 3C 62    AG...     The <b
01B1D0:  61 63 6B 67 72 6F 75 6E 64 20 6D 6F 64 65 3E 20    ackground mode> 
01B1E0:  69 73 20 30 20 66 6F 72 20 6F 70 61 71 75 65 20    is 0 for opaque 
01B1F0:  61 6E 64 20 31 20 66 6F 72 20 74 72 61 6E 73 70    and 1 for transp
01B200:  23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61    #Programmers' Pa
01B210:  74 63 68 20 31 35 20 2D 20 57 41 43 43 49 20 31    tch 15 - WACCI 1
01B220:  32 34 2C 20 53 65 70 74 20 31 39 39 38 2C 20 70    24, Sept 1998, p
01B230:  2E 20 32 34 2D 32 36 0D 0A 20 20 20 50 52 4F 47    . 24-26..   PROG
01B240:  52 41 4D 4D 45 52 53 27 20 50 41 54 43 48 20 31    RAMMERS' PATCH 1
01B250:  35 0D 0A 20 20 20 42 79 20 4D 61 74 74 68 65 77    5..   By Matthew
01B260:  20 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A 20 20 20     Phillips....   
01B270:  54 68 65 20 6C 61 73 74 20 63 6F 75 70 6C 65 20    The last couple 
01B280:  6F 66 20 20 61 72 74 69 63 6C 65 73 20 20 68 61    of  articles  ha
01B290:  76 65 20 20 6C 6F 6F 6B 65 64 20 20 61 74 20 20    ve  looked  at  
01B2A0:  74 68 65 20 22 6F 66 66 69 63 69 61 6C 22 20 64    the "official" d
01B2B0:  69 66 66 65 72 65 6E 63 65 73 0D 0A 20 20 20 62    ifferences..   b
01B2C0:  65 74 77 65 65 6E 20 42 41 53 49 43 20 31 2E 30    etween BASIC 1.0
01B2D0:  20 61 6E 64 20 31 2E 31 2C 20 20 62 75 74 20 20     and 1.1,  but  
01B2E0:  74 68 65 72 65 20 20 61 72 65 20 73 65 76 65 72    there  are sever
01B2F0:  61 6C 20 6F 74 68 65 72 20 64 69 66 66 65 72 65    al other differe
01B300:  6E 63 65 73 20 74 68 61 74 0D 0A 20 20 20 63 6F    nces that..   co
01B310:  6D 65 20 75 6E 64 65 72 20 74 68 65 20 67 65 6E    me under the gen
01B320:  65 72 61 6C 20 68 65 61 64 69 6E 67 20 20 6F 66    eral heading  of
01B330:  20 20 42 75 67 73 2E 20 20 20 54 68 65 73 65 20      Bugs.   These 
01B340:  20 61 72 65 20 74 68 69 6E 67 73 20 74 68 61 74     are things that
01B350:  20 77 65 72 65 6E 27 74 0D 0A 20 20 20 6D 65 61     weren't..   mea
01B360:  6E 74 20 74 6F 20 68 61 70 70 65 6E 20 62 75 74    nt to happen but
01B370:  20 64 69 64 2C 20 61 6E 64 20 74 68 69 73 20 69     did, and this i
01B380:  73 20 68 6F 77 20 74 6F 20 64 65 61 6C 20 77 69    s how to deal wi
01B390:  74 68 20 74 68 65 6D 2E 0D 0A 0D 0A 20 20 20 41    th them.....   A
01B3A0:  20 50 52 4F 42 4C 45 4D 20 49 4E 20 54 48 45 20     PROBLEM IN THE 
01B3B0:  50 52 49 4E 54 20 57 4F 52 4B 53 0D 0A 20 20 20    PRINT WORKS..   
01B3C0:  4F 6E 63 65 20 49 20 68 61 64 20 66 69 6E 69 73    Once I had finis
01B3D0:  68 65 64 20 77 72 69 74 69 6E 67 20 74 68 65 20    hed writing the 
01B3E0:  7C 53 43 41 4E 20 20 52 53 58 20 20 77 68 69 63    |SCAN  RSX  whic
01B3F0:  68 20 77 61 73 20 70 75 62 6C 69 73 68 65 64 20    h was published 
01B400:  61 72 65 6E 74 2C 20 61 6E 64 20 61 66 66 65 63    arent, and affec
01B410:  74 73 0D 0A 20 20 20 20 20 77 68 65 74 68 65 72    ts..     whether
01B420:  20 74 68 65 20 62 61 63 6B 67 72 6F 75 6E 64 73     the backgrounds
01B430:  20 6F 66 20 20 63 68 61 72 61 63 74 65 72 73 20     of  characters 
01B440:  20 70 72 69 6E 74 65 64 20 20 77 69 74 68 20 54     printed  with T
01B450:  41 47 20 61 72 65 20 64 69 73 70 6C 61 79 65 64    AG are displayed
01B460:  2C 0D 0A 20 20 20 20 20 61 6E 64 20 74 68 65 20    ,..     and the 
01B470:  67 61 70 73 20 69 6E 20 64 6F 74 74 65 64 20 6C    gaps in dotted l
01B480:  69 6E 65 73 2E 20 20 20 45 69 74 68 65 72 20 20    ines.   Either  
01B490:  70 61 72 61 6D 65 74 65 72 20 6D 61 79 20 62 65    parameter may be
01B4A0:  20 6F 6D 69 74 74 65 64 20 62 75 74 20 6E 6F 74     omitted but not
01B4B0:  0D 0A 20 20 20 20 20 62 6F 74 68 2E 0D 0A 0D 0A    ..     both.....
01B4C0:  20 20 20 4D 41 53 4B 20 5B 3C 69 6E 74 65 67 65       MASK [<intege
01B4D0:  72 20 65 78 70 72 65 73 73 69 6F 6E 3E 5D 2C 3C    r expression>],<
01B4E0:  66 69 72 73 74 20 70 6F 69 6E 74 20 73 65 74 74    first point sett
01B4F0:  69 6E 67 3E 5D 0D 0A 20 20 20 20 20 54 68 65 20    ing>]..     The 
01B500:  69 6E 74 65 67 65 72 20 65 78 70 72 65 73 73 69    integer expressi
01B510:  6F 6E 20 73 68 6F 75 6C 64 20 62 65 20 66 72 6F    on should be fro
01B520:  6D 20 30 20 20 74 6F 20 20 32 35 35 2C 20 61 6E    m 0  to  255, an
01B530:  64 20 61 6C 6C 6F 77 73 20 79 6F 75 20 74 6F 20    d allows you to 
01B540:  64 72 61 77 0D 0A 20 20 20 20 20 64 6F 74 74 65    draw..     dotte
01B550:  64 20 6C 69 6E 65 73 2E 20 20 32 35 35 20 69 73    d lines.  255 is
01B560:  20 74 68 65 20 73 65 74 74 69 6E 67 20 20 66 6F     the setting  fo
01B570:  72 20 20 6F 72 64 69 6E 61 72 79 20 6C 69 6E 65    r  ordinary line
01B580:  73 2E 20 20 54 68 65 20 66 69 72 73 74 20 70 6F    s.  The first po
01B590:  69 6E 74 0D 0A 20 20 20 20 20 73 65 74 74 69 6E    int..     settin
01B5A0:  67 20 73 68 6F 75 6C 64 20 62 65 20 31 20 69 66    g should be 1 if
01B5B0:  20 74 68 65 20 66 69 72 73 74 20 70 6F 69 6E 74     the first point
01B5C0:  20 6F 66 20 61 20 6C 69 6E 65 20 69 73 20 74 6F     of a line is to
01B5D0:  20 62 65 20 70 6C 6F 74 74 65 64 2C 20 61 6E 64     be plotted, and
01B5E0:  20 30 0D 0A 20 20 20 20 20 69 66 20 6E 6F 74 2E     0..     if not.
01B5F0:  20 20 49 74 20 69 73 20 6E 6F 72 6D 61 6C 6C 79      It is normally
01B600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01B610:  17 00 01 00 02 09 4E E5 17 00 C4 02 00 00 00 02    ......N.........
01B620:  17 00 C9 02 00 00 00 02 17 00 C5 02 00 00 00 02    ................
01B630:  17 00 C1 02 00 00 00 02 17 00 C6 02 00 00 00 02    ................
01B640:  17 00 C2 02 00 00 00 02 17 00 C7 02 00 00 00 02    ................
01B650:  17 00 C3 02 00 00 00 02 17 00 C8 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:  61 6C 74 65 72 69 6E 67 0D 0A 20 20 20 74 68 65    altering..   the
01B710:  20 4C 4F 43 41 54 45 20 63 6F 6D 6D 61 6E 64 20     LOCATE command 
01B720:  74 6F 20 70 6F 73 69 74 69 6F 6E 20 69 74 20 61    to position it a
01B730:  74 20 33 39 2C 36 20 2D 20 6A 75 73 74 20 61 74    t 39,6 - just at
01B740:  20 74 68 65 20 65 6E 64 20 6F 66 20 61 20 6C 69     the end of a li
01B750:  6E 65 2E 20 20 49 6E 0D 0A 20 20 20 42 41 53 49    ne.  In..   BASI
01B760:  43 20 31 2E 31 20 74 68 65 20 62 6F 78 20 77 69    C 1.1 the box wi
01B770:  6C 6C 20 70 72 69 6E 74 20 61 74 20 20 74 68 65    ll print at  the
01B780:  20 20 65 6E 64 20 20 6F 66 20 20 6C 69 6E 65 20      end  of  line 
01B790:  36 2C 20 62 75 74 20 69 6E 20 42 41 53 49 43 20    6, but in BASIC 
01B7A0:  31 2E 30 20 69 74 0D 0A 20 20 20 70 72 69 6E 74    1.0 it..   print
01B7B0:  73 20 61 74 20 74 68 65 20 73 74 61 72 74 20 6F    s at the start o
01B7C0:  66 20 6C 69 6E 65 20 37 2E 0D 0A 0D 0A 20 20 20    f line 7.....   
01B7D0:  54 68 69 73 20 69 73 20 62 65 63 61 75 73 65 20    This is because 
01B7E0:  42 41 53 49 43 20 31 2E 30 20 75 73 65 73 20 20    BASIC 1.0 uses  
01B7F0:  61 20 20 73 69 6D 70 6C 65 72 20 20 6D 65 74 68    a  simpler  meth
01B800:  6F 64 20 66 6F 72 20 64 65 63 69 64 69 6E 67 20    od for deciding 
01B810:  77 68 65 74 68 65 72 20 74 6F 0D 0A 20 20 20 73    whether to..   s
01B820:  74 61 72 74 20 61 20 6E 65 77 20 6C 69 6E 65 2E    tart a new line.
01B830:  20 20 54 68 65 20 63 6F 6D 70 75 74 65 72 20 20      The computer  
01B840:  6A 75 73 74 20 20 6C 6F 6F 6B 73 20 20 61 74 20    just  looks  at 
01B850:  74 68 65 20 6C 65 6E 67 74 68 20 6F 66 20 74 68    the length of th
01B860:  65 20 73 74 72 69 6E 67 2C 0D 0A 20 20 20 61 6E    e string,..   an
01B870:  64 20 69 66 20 69 74 20 69 73 20 6C 6F 6E 67 65    d if it is longe
01B880:  72 20 74 68 61 6E 20 20 74 68 65 20 20 6E 75 6D    r than  the  num
01B890:  62 65 72 20 20 6F 66 20 20 63 68 61 72 61 63 74    ber  of  charact
01B8A0:  65 72 73 20 6C 65 66 74 20 6F 6E 20 74 68 65 20    ers left on the 
01B8B0:  6C 69 6E 65 2C 20 69 74 0D 0A 20 20 20 73 74 61    line, it..   sta
01B8C0:  72 74 73 20 61 20 6E 65 77 20 6F 6E 65 20 62 65    rts a new one be
01B8D0:  66 6F 72 65 20 70 72 69 6E 74 69 6E 67 2E 20 20    fore printing.  
01B8E0:  20 42 41 53 49 43 20 20 31 2E 31 20 6C 6F 6F 6B     BASIC  1.1 look
01B8F0:  73 20 74 68 72 6F 75 67 68 20 74 68 65 20 66 69    s through the fi
01B900:  79 70 65 0D 0A 0D 0A 20 20 20 20 20 7C 45 52 41    ype....     |ERA
01B910:  2C 22 2A 2E 62 61 6B 22 0D 0A 0D 0A 20 20 20 6F    ,"*.bak"....   o
01B920:  6E 20 74 68 65 20 34 36 34 20 79 6F 75 20 68 61    n the 464 you ha
01B930:  76 65 20 74 6F 20 75 73 65 20 74 68 65 20 63 75    ve to use the cu
01B940:  6D 62 65 72 73 6F 6D 65 0D 0A 0D 0A 20 20 20 20    mbersome....    
01B950:  20 61 24 3D 22 2A 2E 62 61 6B 22 3A 7C 45 52 41     a$="*.bak":|ERA
01B960:  2C 40 61 24 0D 0A 0D 0A 20 20 20 54 68 69 73 20    ,@a$....   This 
01B970:  69 73 20 61 63 74 75 61 6C 6C 79 20 61 20 62 75    is actually a bu
01B980:  67 2C 20 61 73 20 79 6F 75 20 20 77 65 72 65 20    g, as you  were 
01B990:  20 6D 65 61 6E 74 20 20 74 6F 20 20 62 65 20 61     meant  to  be a
01B9A0:  62 6C 65 20 74 6F 20 75 73 65 20 74 68 65 20 64    ble to use the d
01B9B0:  69 72 65 63 74 0D 0A 20 20 20 76 65 72 73 69 6F    irect..   versio
01B9C0:  6E 2C 20 62 75 74 20 4C 6F 63 6F 6D 6F 74 69 76    n, but Locomotiv
01B9D0:  65 20 53 6F 66 74 77 61 72 65 20 20 64 69 64 20    e Software  did 
01B9E0:  20 6E 6F 74 20 20 67 65 74 20 20 69 74 20 20 77     not  get  it  w
01B9F0:  6F 72 6B 69 6E 67 20 20 66 6F 72 20 74 68 65 20    orking  for the 
01BA00:  34 36 34 2E 0D 0A 20 20 20 52 65 6D 65 6D 62 65    464...   Remembe
01BA10:  72 20 74 68 61 74 20 20 6F 6E 20 20 74 68 65 20    r that  on  the 
01BA20:  20 36 36 34 2F 36 31 32 38 20 20 79 6F 75 20 20     664/6128  you  
01BA30:  63 61 6E 20 20 61 6C 73 6F 20 20 68 61 76 65 20    can  also  have 
01BA40:  20 72 65 73 75 6C 74 73 20 20 6F 66 20 73 74 72     results  of str
01BA50:  69 6E 67 0D 0A 20 20 20 66 75 6E 63 74 69 6F 6E    ing..   function
01BA60:  73 2C 20 73 75 63 68 20 61 73 20 4C 45 46 54 24    s, such as LEFT$
01BA70:  2C 20 61 73 20 70 61 72 61 6D 65 74 65 72 73 20    , as parameters 
01BA80:  74 6F 20 43 41 4C 4C 20 6F 72 20 61 6E 20 52 53    to CALL or an RS
01BA90:  58 2E 0D 0A 0D 0A 20 20 20 54 6F 20 73 6F 6C 76    X.....   To solv
01BAA0:  65 20 74 68 69 73 20 70 72 6F 62 6C 65 6D 20 79    e this problem y
01BAB0:  6F 75 20 63 61 6E 20 70 75 74 20 74 68 65 20 70    ou can put the p
01BAC0:  61 72 61 6D 65 74 65 72 73 20 69 6E 74 6F 20 74    arameters into t
01BAD0:  65 6D 70 6F 72 61 72 79 20 73 74 72 69 6E 67 73    emporary strings
01BAE0:  20 61 73 0D 0A 20 20 20 69 6E 20 74 68 65 20 65     as..   in the e
01BAF0:  78 61 6D 70 6C 65 20 61 62 6F 76 65 2C 20 6F 72    xample above, or
01BB00:  72 73 74 20 66 65 77 0D 0A 20 20 20 63 68 61 72    rst few..   char
01BB10:  61 63 74 65 72 73 20 6F 66 20 74 68 65 20 73 74    acters of the st
01BB20:  72 69 6E 67 20 74 6F 20 73 65 65 20 69 66 20 20    ring to see if  
01BB30:  74 68 65 72 65 20 61 72 65 20 61 6E 79 20 63 6F    there are any co
01BB40:  6E 74 72 6F 6C 20 63 68 61 72 61 63 74 65 72 73    ntrol characters
01BB50:  20 61 6D 6F 6E 67 0D 0A 20 20 20 74 68 65 6D 2E     among..   them.
01BB60:  20 20 49 66 20 74 68 65 72 65 20 61 72 65 20 28      If there are (
01BB70:  73 61 79 29 20 73 69 78 20 73 70 61 63 65 73 20    say) six spaces 
01BB80:  6C 65 66 74 20 20 6F 6E 20 74 68 65 20 6C 69 6E    left  on the lin
01BB90:  65 20 61 6E 64 20 74 68 65 20 66 69 72 73 74 20    e and the first 
01BBA0:  73 65 76 65 6E 0D 0A 20 20 20 63 68 61 72 61 63    seven..   charac
01BBB0:  74 65 72 73 20 69 6E 20 74 68 65 20 73 74 72 69    ters in the stri
01BBC0:  6E 67 20 61 72 65 20 6F 72 64 69 6E 61 72 79 20    ng are ordinary 
01BBD0:  20 63 68 61 72 61 63 74 65 72 73 20 28 77 69 74     characters (wit
01BBE0:  68 20 41 53 43 49 49 20 76 61 6C 75 65 73 20 6F    h ASCII values o
01BBF0:  66 20 33 32 0D 0A 20 20 20 6F 72 20 61 62 6F 76    f 32..   or abov
01BC00:  65 29 20 74 68 65 6E 20 61 20 20 6E 65 77 20 20    e) then a  new  
01BC10:  6C 69 6E 65 20 20 69 73 20 20 73 74 61 72 74 65    line  is  starte
01BC20:  64 20 20 62 65 66 6F 72 65 20 20 70 72 69 6E 74    d  before  print
01BC30:  69 6E 67 2E 20 20 4F 74 68 65 72 77 69 73 65 20    ing.  Otherwise 
01BC40:  74 68 65 0D 0A 20 20 20 73 74 72 69 6E 67 20 69    the..   string i
01BC50:  73 20 20 70 72 69 6E 74 65 64 20 20 61 74 20 20    s  printed  at  
01BC60:  74 68 65 20 20 63 75 72 72 65 6E 74 20 20 63 75    the  current  cu
01BC70:  72 73 6F 72 20 20 70 6F 73 69 74 69 6F 6E 2E 20    rsor  position. 
01BC80:  20 20 54 68 69 73 20 63 6F 6D 70 6C 69 63 61 74      This complicat
01BC90:  65 64 0D 0A 20 20 20 62 65 68 61 76 69 6F 75 72    ed..   behaviour
01BCA0:  20 6F 66 20 74 68 65 20 50 52 49 4E 54 20 63 6F     of the PRINT co
01BCB0:  6D 6D 61 6E 64 20 69 6E 20 42 41 53 49 43 20 20    mmand in BASIC  
01BCC0:  31 2E 31 20 20 69 73 20 6E 6F 74 20 65 78 70 6C    1.1  is not expl
01BCD0:  61 69 6E 65 64 20 69 6E 20 74 68 65 20 75 73 65    ained in the use
01BCE0:  72 0D 0A 20 20 20 67 75 69 64 65 2E 0D 0A 0D 0A    r..   guide.....
01BCF0:  20 20 20 45 76 65 6E 20 74 68 61 74 20 69 73 20       Even that is 
01BD00:  69 6E 20 4A 75 6E 65 2C 20 49 0D 0A 20 20 20 74    in June, I..   t
01BD10:  65 73 74 65 64 20 69 74 20 6F 75 74 20 6F 6E 20    ested it out on 
01BD20:  74 68 65 20 43 72 69 62 20 67 61 6D 65 20 20 66    the Crib game  f
01BD30:  72 6F 6D 20 20 57 41 43 43 49 20 20 50 44 20 64    rom  WACCI  PD d
01BD40:  69 73 63 20 36 2E 20 20 41 73 20 69 74 20 73 74    isc 6.  As it st
01BD50:  61 6E 64 73 2C 20 74 68 65 0D 0A 20 20 20 67 61    ands, the..   ga
01BD60:  6D 65 20 64 6F 65 73 20 6E 6F 74 20 77 6F 72 6B    me does not work
01BD70:  20 20 6F 6E 20 20 74 68 65 20 20 34 36 34 2C 20      on  the  464, 
01BD80:  20 6D 6F 73 74 6C 79 20 20 62 65 63 61 75 73 65     mostly  because
01BD90:  20 20 6F 66 20 65 78 74 72 61 20 70 61 72 61 6D      of extra param
01BDA0:  65 74 65 72 73 20 69 6E 0D 0A 20 20 20 67 72 61    eters in..   gra
01BDB0:  70 68 69 63 73 20 63 6F 6D 6D 61 6E 64 73 2E 20    phics commands. 
01BDC0:  20 54 68 65 20 7C 53 43 41 4E 20 52 53 58 20 69     The |SCAN RSX i
01BDD0:  64 65 6E 74 69 66 69 65 64 20 61 6C 6C 20 6F 66    dentified all of
01BDE0:  20 74 68 65 73 65 2C 20 61 6E 64 20 61 66 74 65     these, and afte
01BDF0:  72 20 49 20 68 61 64 0D 0A 20 20 20 61 6C 74 65    r I had..   alte
01BE00:  72 65 64 20 74 68 65 20 6C 69 6E 65 73 2C 20 49    red the lines, I
01BE10:  20 72 61 6E 20 74 68 65 20 70 72 6F 67 72 61 6D     ran the program
01BE20:  20 20 65 78 70 65 63 74 69 6E 67 20 69 74 20 74      expecting it t
01BE30:  6F 20 77 6F 72 6B 2E 20 20 41 6C 61 73 21 20 73    o work.  Alas! s
01BE40:  65 76 65 72 61 6C 0D 0A 20 20 20 63 61 72 64 73    everal..   cards
01BE50:  20 70 72 69 6E 74 65 64 20 69 6E 20 74 68 65 20     printed in the 
01BE60:  77 72 6F 6E 67 20 70 6C 61 63 65 2C 20 61 6E 64    wrong place, and
01BE70:  20 74 68 65 20 73 63 72 65 65 6E 20 73 63 72 6F     the screen scro
01BE80:  6C 6C 65 64 20 75 70 2E 0D 0A 0D 0A 20 20 20 54    lled up.....   T
01BE90:  68 69 73 20 77 61 73 20 62 65 63 61 75 73 65 20    his was because 
01BEA0:  6F 66 20 61 6E 6F 74 68 65 72 20 64 69 66 66 65    of another diffe
01BEB0:  72 65 6E 63 65 20 20 62 65 74 77 65 65 6E 20 20    rence  between  
01BEC0:  42 41 53 49 43 20 31 2E 30 20 61 6E 64 20 31 2E    BASIC 1.0 and 1.
01BED0:  31 2E 20 20 49 74 20 69 73 0D 0A 20 20 20 6E 6F    1.  It is..   no
01BEE0:  74 20 61 63 74 75 61 6C 6C 79 20 64 6F 63 75 6D    t actually docum
01BEF0:  65 6E 74 65 64 20 69 6E 20 74 68 65 20 6D 61 6E    ented in the man
01BF00:  6E 6F 74 20 71 75 69 74 65 20 74 68 65 20 77 68    not quite the wh
01BF10:  6F 6C 65 20 20 73 74 6F 72 79 2C 20 20 61 73 20    ole  story,  as 
01BF20:  77 68 65 6E 20 6C 6F 6F 6B 69 6E 67 20 61 74 20    when looking at 
01BF30:  74 68 65 20 62 65 67 69 6E 6E 69 6E 67 0D 0A 20    the beginning.. 
01BF40:  20 20 6F 66 20 74 68 65 20 73 74 72 69 6E 67 2C      of the string,
01BF50:  20 43 48 52 24 28 31 29 20 69 73 20 74 72 65 61     CHR$(1) is trea
01BF60:  74 65 64 20 64 69 66 66 65 72 65 6E 74 6C 79 20    ted differently 
01BF70:  66 72 6F 6D 20 74 68 65 20 63 6F 6E 74 72 6F 6C    from the control
01BF80:  20 63 68 61 72 61 63 74 65 72 73 2E 0D 0A 20 20     characters...  
01BF90:  20 43 48 52 24 28 31 29 20 69 74 73 65 6C 66 20     CHR$(1) itself 
01BFA0:  69 73 20 69 67 6E 6F 72 65 64 20 61 6E 64 20 74    is ignored and t
01BFB0:  68 65 20 6E 65 78 74 20 63 68 61 72 61 63 74 65    he next characte
01BFC0:  72 20 69 73 20 74 72 65 61 74 65 64 20 61 73 20    r is treated as 
01BFD0:  61 6E 20 6F 72 64 69 6E 61 72 79 0D 0A 20 20 20    an ordinary..   
01BFE0:  63 68 61 72 61 63 74 65 72 20 72 61 74 68 65 72    character rather
01BFF0:  20 74 68 61 6E 20 61 20 63 6F 6E 74 72 6F 6C 20     than a control 
01C000:  20 63 68 61 72 61 63 74 65 72 2E 20 20 20 54 68     character.   Th
01C010:  69 73 20 6D 69 72 72 6F 72 73 20 74 68 65 20 65    is mirrors the e
01C020:  66 66 65 63 74 20 74 68 61 74 0D 0A 20 20 20 43    ffect that..   C
01C030:  48 52 24 28 31 29 20 68 61 73 20 6F 6E 20 70 72    HR$(1) has on pr
01C040:  69 6E 74 69 6E 67 2E 0D 0A 0D 0A 20 20 20 48 61    inting.....   Ha
01C050:  76 69 6E 67 20 67 6F 6E 65 20 69 6E 74 6F 20 61    ving gone into a
01C060:  6C 6C 20 74 68 69 73 20 64 65 74 61 69 6C 2C 20    ll this detail, 
01C070:  74 68 65 20 63 75 72 65 20 66 6F 72 20 74 68 69    the cure for thi
01C080:  73 20 64 69 66 66 65 72 65 6E 63 65 20 62 65 74    s difference bet
01C090:  77 65 65 6E 20 74 68 65 0D 0A 20 20 20 76 65 72    ween the..   ver
01C0A0:  73 69 6F 6E 73 20 6F 66 20 42 41 53 49 43 20 69    sions of BASIC i
01C0B0:  73 20 20 75 73 75 61 6C 6C 79 20 20 71 75 69 74    s  usually  quit
01C0C0:  65 20 20 73 69 6D 70 6C 65 2E 20 20 20 49 66 20    e  simple.   If 
01C0D0:  20 79 6F 75 20 20 65 6E 63 6F 75 6E 74 65 72 20     you  encounter 
01C0E0:  61 20 50 52 49 4E 54 0D 0A 20 20 20 63 6F 6D 6D    a PRINT..   comm
01C0F0:  61 6E 64 20 77 68 69 63 68 20 69 73 20 70 72 69    and which is pri
01C100:  75 61 6C 73 2C 20 61 6E 64 20 20 69 73 20 20 61    uals, and  is  a
01C110:  6C 6C 20 74 6F 20 64 6F 20 77 69 74 68 20 74 68    ll to do with th
01C120:  65 20 22 77 6F 72 64 2D 0D 0A 20 20 20 77 72 61    e "word-..   wra
01C130:  70 22 20 66 65 61 74 75 72 65 20 6F 66 20 74 68    p" feature of th
01C140:  65 20 41 6D 73 74 72 61 64 27 73 20 50 52 49 4E    e Amstrad's PRIN
01C150:  54 20 63 6F 6D 6D 61 6E 64 2E 20 20 54 72 79 20    T command.  Try 
01C160:  74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 3A 0D 0A    the following:..
01C170:  0D 0A 20 20 20 20 20 42 4F 52 44 45 52 20 32 35    ..     BORDER 25
01C180:  3A 4D 4F 44 45 20 31 3A 4C 4F 43 41 54 45 20 33    :MODE 1:LOCATE 3
01C190:  39 2C 31 3A 50 52 49 4E 54 22 48 65 6C 6C 6F 22    9,1:PRINT"Hello"
01C1A0:  0D 0A 0D 0A 20 20 20 54 68 65 20 4C 4F 43 41 54    ....   The LOCAT
01C1B0:  45 20 63 6F 6D 6D 61 6E 64 20 70 75 74 73 20 74    E command puts t
01C1C0:  68 65 20 20 63 75 72 73 6F 72 20 20 6E 65 61 72    he  cursor  near
01C1D0:  20 20 74 68 65 20 20 65 6E 64 20 20 6F 66 20 20      the  end  of  
01C1E0:  74 68 65 20 74 6F 70 20 6C 69 6E 65 2C 20 62 75    the top line, bu
01C1F0:  74 0D 0A 20 20 20 62 65 63 61 75 73 65 20 74 68    t..   because th
01C200:  65 20 73 74 72 69 6E 67 20 22 48 65 6C 6C 6F 22    e string "Hello"
01C210:  20 69 73 20 20 74 6F 6F 20 20 6C 6F 6E 67 20 20     is  too  long  
01C220:  74 6F 20 20 66 69 74 20 20 6F 6E 20 74 68 65 20    to  fit  on the 
01C230:  6C 69 6E 65 2C 20 74 68 65 20 63 75 72 73 6F 72    line, the cursor
01C240:  0D 0A 20 20 20 6D 6F 76 65 73 20 64 6F 77 6E 20    ..   moves down 
01C250:  74 6F 20 74 68 65 20 73 74 61 72 74 20 20 6F 66    to the start  of
01C260:  20 20 74 68 65 20 20 6E 65 78 74 20 20 6C 69 6E      the  next  lin
01C270:  65 20 20 74 6F 20 73 74 61 72 74 20 74 68 65 20    e  to start the 
01C280:  70 72 69 6E 74 69 6E 67 2E 20 20 54 68 69 73 0D    printing.  This.
01C290:  0A 20 20 20 66 65 61 74 75 72 65 20 69 73 20 64    .   feature is d
01C2A0:  6F 63 75 6D 65 6E 74 65 64 20 69 6E 20 74 68 65    ocumented in the
01C2B0:  20 6D 61 6E 75 61 6C 73 2C 20 61 6E 64 20 74 6F     manuals, and to
01C2C0:  20 6F 76 65 72 72 69 64 65 20 69 74 20 79 6F 75     override it you
01C2D0:  20 73 68 6F 75 6C 64 20 64 6F 0D 0A 0D 0A 20 20     should do....  
01C2E0:  20 20 20 50 52 49 4E 54 20 55 53 49 4E 47 22 26       PRINT USING"&
01C2F0:  22 3B 22 48 65 6C 6C 6F 22 0D 0A 0D 0A 20 20 20    ";"Hello"....   
01C300:  6E 74 69 6E 67 20 61 20 73 74 72 69 6E 67 20 63    nting a string c
01C310:  6F 6E 74 61 69 6E 69 6E 67 20 63 6F 6E 74 72 6F    ontaining contro
01C320:  6C 20 63 68 61 72 61 63 74 65 72 73 2C 20 74 68    l characters, th
01C330:  65 6E 20 79 6F 75 0D 0A 20 20 20 73 68 6F 75 6C    en you..   shoul
01C340:  64 20 75 73 65 20 50 52 49 4E 54 20 55 53 49 4E    d use PRINT USIN
01C350:  47 22 26 22 3B 20 69 6E 73 74 65 61 64 2E 20 20    G"&"; instead.  
01C360:  20 50 72 6F 67 72 61 6D 73 20 20 73 6F 20 61 6C     Programs  so al
01C370:  74 65 72 65 64 20 77 69 6C 6C 20 73 74 69 6C 6C    tered will still
01C380:  20 77 6F 72 6B 0D 0A 20 20 20 6F 6E 20 74 68 65     work..   on the
01C390:  20 36 36 34 2F 36 31 32 38 2E 20 20 54 68 65 72     664/6128.  Ther
01C3A0:  65 20 6D 61 79 20 62 65 20 65 78 74 72 65 6D 65    e may be extreme
01C3B0:  6C 79 20 73 75 62 74 6C 65 20 63 61 73 65 73 20    ly subtle cases 
01C3C0:  69 6E 20 77 68 69 63 68 20 74 68 69 73 20 6D 65    in which this me
01C3D0:  74 68 6F 64 0D 0A 20 20 20 77 6F 6E 27 74 20 77    thod..   won't w
01C3E0:  6F 72 6B 2C 20 62 75 74 20 6E 6F 77 20 79 6F 75    ork, but now you
01C3F0:  20 6B 6E 6F 77 20 61 6C 6C 20 74 68 65 20 20 64     know all the  d
01C400:  65 74 61 69 6C 73 20 20 79 6F 75 20 77 69 6C 6C    etails  you will
01C410:  20 62 65 20 61 62 6C 65 20 74 6F 20 73 6F 72 74     be able to sort
01C420:  20 69 74 0D 0A 20 20 20 6F 75 74 21 0D 0A 0D 0A     it..   out!....
01C430:  20 20 20 52 45 4D 41 52 4B 41 42 4C 45 20 52 45       REMARKABLE RE
01C440:  4D 53 0D 0A 20 20 20 42 41 53 49 43 20 31 2E 30    MS..   BASIC 1.0
01C450:  20 64 6F 65 73 20 6E 6F 74 20 63 6F 70 65 20 61     does not cope a
01C460:  74 20 61 6C 6C 20 77 65 6C 6C 20 77 68 65 6E 20    t all well when 
01C470:  79 6F 75 20 70 75 74 20 63 65 72 74 61 69 6E 20    you put certain 
01C480:  63 68 61 72 61 63 74 65 72 73 20 69 6E 20 52 45    characters in RE
01C490:  4D 0D 0A 20 20 20 73 74 61 74 65 6D 65 6E 74 73    M..   statements
01C4A0:  2E 20 20 4D 61 6E 79 20 6F 66 20 20 74 68 65 20    .  Many of  the 
01C4B0:  20 63 6F 6E 74 72 6F 6C 20 20 63 68 61 72 61 63     control  charac
01C4C0:  74 65 72 73 20 20 63 61 75 73 65 20 20 6F 64 64    ters  cause  odd
01C4D0:  20 20 65 66 66 65 63 74 73 2C 20 77 68 69 6C 65      effects, while
01C4E0:  0D 0A 20 20 20 63 68 61 72 61 63 74 65 72 73 20    ..   characters 
01C4F0:  6F 76 65 72 20 31 32 37 20 61 72 65 20 20 6D 6F    over 127 are  mo
01C500:  46 6F 72 20 6F 72 64 69 6E 61 72 79 20 73 74 72    For ordinary str
01C510:  69 6E 67 73 20 74 68 65 20 34 36 34 20 20 61 6E    ings the 464  an
01C520:  64 20 20 36 36 34 2F 36 31 32 38 20 20 62 65 68    d  664/6128  beh
01C530:  61 76 65 20 65 78 61 63 74 6C 79 20 74 68 65 20    ave exactly the 
01C540:  73 61 6D 65 2E 20 20 54 68 65 0D 0A 20 20 20 64    same.  The..   d
01C550:  69 66 66 65 72 65 6E 63 65 20 20 63 6F 6D 65 73    ifference  comes
01C560:  20 20 77 68 65 6E 20 20 79 6F 75 20 20 68 61 76      when  you  hav
01C570:  65 20 20 63 6F 6E 74 72 6F 6C 20 20 63 68 61 72    e  control  char
01C580:  61 63 74 65 72 73 20 20 69 6E 20 20 74 68 65 20    acters  in  the 
01C590:  20 73 74 72 69 6E 67 73 2E 0D 0A 20 20 20 43 68     strings...   Ch
01C5A0:  61 72 61 63 74 65 72 73 20 38 2D 31 31 20 6D 6F    aracters 8-11 mo
01C5B0:  76 65 20 74 68 65 20 63 75 72 73 6F 72 2C 20 61    ve the cursor, a
01C5C0:  6E 64 20 20 69 74 20 20 69 73 20 73 6F 6D 65 74    nd  it  is somet
01C5D0:  69 6D 65 73 20 63 6F 6E 76 65 6E 69 65 6E 74 20    imes convenient 
01C5E0:  74 6F 20 73 74 6F 72 65 0D 0A 20 20 20 63 6F 6D    to store..   com
01C5F0:  62 69 6E 61 74 69 6F 6E 73 20 6F 66 20 70 72 69    binations of pri
01C600:  6E 74 69 6E 67 20 63 68 61 72 61 63 74 65 72 73    nting characters
01C610:  20 61 6E 64 20 63 75 72 73 6F 72 20 6D 6F 76 65     and cursor move
01C620:  6D 65 6E 74 73 20 69 6E 20 61 20 73 74 72 69 6E    ments in a strin
01C630:  67 2E 20 20 46 6F 72 0D 0A 20 20 20 65 78 61 6D    g.  For..   exam
01C640:  70 6C 65 3A 0D 0A 0D 0A 20 20 20 20 20 31 30 20    ple:....     10 
01C650:  61 24 3D 63 68 72 24 28 31 33 35 29 2B 63 68 72    a$=chr$(135)+chr
01C660:  24 28 31 33 39 29 2B 63 68 72 24 28 31 30 29 2B    $(139)+chr$(10)+
01C670:  63 68 72 24 28 38 29 2B 63 68 72 24 28 38 29 2B    chr$(8)+chr$(8)+
01C680:  63 68 72 24 28 31 34 31 29 2B 63 68 72 24 28 31    chr$(141)+chr$(1
01C690:  34 32 29 0D 0A 20 20 20 20 20 32 30 20 4D 4F 44    42)..     20 MOD
01C6A0:  45 20 31 3A 4C 4F 43 41 54 45 20 35 2C 36 3A 50    E 1:LOCATE 5,6:P
01C6B0:  52 49 4E 54 20 61 24 0D 0A 0D 0A 20 20 20 54 68    RINT a$....   Th
01C6C0:  69 73 20 6C 69 74 74 6C 65 20 70 72 6F 67 72 61    is little progra
01C6D0:  6D 20 70 72 69 6E 74 73 20 61 20 73 71 75 61 72    m prints a squar
01C6E0:  65 20 20 62 6F 78 20 20 6F 6E 20 74 68 65 20 73    e  box  on the s
01C6F0:  63 72 65 65 6E 2E 20 20 4E 6F 77 20 74 72 79 20    creen.  Now try 
01C700:  73 74 6C 79 20 20 63 6F 6E 76 65 72 74 65 64 20    stly  converted 
01C710:  20 69 6E 74 6F 20 20 42 41 53 49 43 20 6B 65 79     into  BASIC key
01C720:  77 6F 72 64 73 2E 20 20 54 68 65 20 52 53 58 0D    words.  The RSX.
01C730:  0A 20 20 20 63 68 61 72 61 63 74 65 72 20 22 7C    .   character "|
01C740:  22 20 63 61 75 73 65 73 20 74 68 65 20 20 6E 65    " causes the  ne
01C750:  78 74 20 20 63 68 61 72 61 63 74 65 72 20 20 69    xt  character  i
01C760:  6E 20 20 74 68 65 20 20 52 45 4D 20 20 74 6F 20    n  the  REM  to 
01C770:  64 69 73 61 70 70 65 61 72 20 77 68 65 6E 0D 0A    disappear when..
01C780:  20 20 20 6C 69 73 74 69 6E 67 2E 20 20 54 68 69       listing.  Thi
01C790:  73 20 64 69 66 66 65 72 65 6E 63 65 20 20 69 73    s difference  is
01C7A0:  20 20 6E 6F 74 20 20 76 65 72 79 20 20 69 6D 70      not  very  imp
01C7B0:  6F 72 74 61 6E 74 20 20 62 65 63 61 75 73 65 20    ortant  because 
01C7C0:  70 72 6F 67 72 61 6D 73 20 77 69 74 68 0D 0A 20    programs with.. 
01C7D0:  20 20 74 68 65 73 65 20 63 68 61 72 61 63 74 65      these characte
01C7E0:  72 73 20 69 6E 20 52 45 4D 20 73 74 61 74 65 6D    rs in REM statem
01C7F0:  65 6E 74 73 20 20 77 69 6C 6C 20 20 72 75 6E 20    ents  will  run 
01C800:  20 61 73 20 20 6E 6F 72 6D 61 6C 2E 20 20 54 68     as  normal.  Th
01C810:  65 79 20 77 69 6C 6C 20 6A 75 73 74 0D 0A 20 20    ey will just..  
01C820:  20 70 72 6F 64 75 63 65 20 6F 64 64 20 72 65 73     produce odd res
01C830:  75 6C 74 73 20 77 68 65 6E 20 6C 69 73 74 69 6E    ults when listin
01C840:  67 20 74 6F 20 74 68 65 20 73 63 72 65 65 6E 20    g to the screen 
01C850:  6F 72 20 70 72 69 6E 74 65 72 2E 0D 0A 0D 0A 20    or printer..... 
01C860:  20 20 43 41 4C 4C 45 44 20 54 4F 20 54 48 45 20      CALLED TO THE 
01C870:  42 41 52 0D 0A 20 20 20 34 36 34 20 75 73 65 72    BAR..   464 user
01C880:  73 20 77 69 6C 6C 20 62 65 20 20 76 65 72 79 20    s will be  very 
01C890:  20 66 61 6D 69 6C 69 61 72 20 20 77 69 74 68 20     familiar  with 
01C8A0:  20 74 68 65 20 20 72 65 73 74 72 69 63 74 69 6F     the  restrictio
01C8B0:  6E 73 20 6F 6E 20 75 73 69 6E 67 20 73 74 72 69    ns on using stri
01C8C0:  6E 67 0D 0A 20 20 20 70 61 72 61 6D 65 74 65 72    ng..   parameter
01C8D0:  73 20 69 6E 20 52 53 58 20 63 6F 6D 6D 61 6E 64    s in RSX command
01C8E0:  73 2E 20 20 57 68 69 6C 65 20 69 6E 20 42 41 53    s.  While in BAS
01C8F0:  49 43 20 31 2E 31 20 79 6F 75 20 63 61 6E 20 74    IC 1.1 you can t
01C900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01C910:  18 00 01 00 02 09 4E E5 18 00 C2 02 00 00 00 02    ......N.........
01C920:  18 00 C7 02 00 00 00 02 18 00 C3 02 00 00 00 02    ................
01C930:  18 00 C8 02 00 00 00 02 18 00 C4 02 00 00 00 02    ................
01C940:  18 00 C9 02 00 00 00 02 18 00 C5 02 00 00 00 02    ................
01C950:  18 00 C1 02 00 00 00 02 18 00 C6 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:  20 6E 69 6E 65 0D 0A 20 20 20 6F 66 20 74 68 65     nine..   of the
01CA10:  73 65 20 62 6C 6F 63 6B 73 20 6F 66 20 74 68 72    se blocks of thr
01CA20:  65 65 20 62 79 74 65 73 20 66 72 6F 6D 20 20 26    ee bytes from  &
01CA30:  41 43 30 31 20 20 74 6F 20 20 26 41 43 31 42 20    AC01  to  &AC1B 
01CA40:  6F 6E 20 74 68 65 20 34 36 34 2C 20 61 6E 64 20    on the 464, and 
01CA50:  74 68 65 79 0D 0A 20 20 20 63 61 6E 20 62 65 20    they..   can be 
01CA60:  75 73 65 64 20 74 6F 20 70 61 74 63 68 20 76 61    used to patch va
01CA70:  72 69 6F 75 73 20 55 70 70 65 72 20 20 52 4F 4D    rious Upper  ROM
01CA80:  20 66 75 6E 63 74 69 6F 6E 73 2E 20 20 54 68 65     functions.  The
01CA90:  72 65 20 69 73 20 6E 6F 20 73 75 63 68 20 62 6C    re is no such bl
01CAA0:  6F 63 6B 0D 0A 20 20 20 6F 6E 20 74 68 65 20 36    ock..   on the 6
01CAB0:  31 32 38 2E 20 20 49 20 68 61 76 65 20 6E 6F 74    128.  I have not
01CAC0:  20 73 65 65 6E 20 61 6E 20 65 78 70 6C 61 6E 61     seen an explana
01CAD0:  74 69 6F 6E 20 6F 66 20 77 68 61 74 20 74 68 65    tion of what the
01CAE0:  73 65 20 62 6C 6F 63 6B 73 20 61 72 65 20 66 6F    se blocks are fo
01CAF0:  72 2C 0D 0A 20 20 20 73 6F 20 63 6F 75 6E 74 20    r,..   so count 
01CB00:  74 68 61 74 20 61 73 20 6D 79 20 72 65 71 75 65    that as my reque
01CB10:  73 74 20 6F 6E 20 74 68 65 20 61 72 74 69 63 6C    st on the articl
01CB20:  65 20 77 69 73 68 2D 6C 69 73 74 21 0D 0A 0D 0A    e wish-list!....
01CB30:  20 20 20 4C 49 4E 45 20 49 4E 50 55 54 0D 0A 20       LINE INPUT.. 
01CB40:  20 20 54 68 65 72 65 20 69 73 20 61 6C 73 6F 20      There is also 
01CB50:  61 20 62 75 67 20 77 69 74 68 20 74 68 65 20 4C    a bug with the L
01CB60:  49 4E 45 20 20 49 4E 50 55 54 20 20 63 6F 6D 6D    INE  INPUT  comm
01CB70:  61 6E 64 2E 20 20 49 74 20 69 73 20 6D 65 61 6E    and.  It is mean
01CB80:  74 20 74 6F 20 77 6F 72 6B 20 69 6E 0D 0A 20 20    t to work in..  
01CB90:  20 74 68 65 20 73 61 6D 65 20 77 61 79 20 61 73     the same way as
01CBA0:  20 74 68 65 20 49 4E 50 55 54 20 63 6F 6D 6D 61     the INPUT comma
01CBB0:  6E 64 2C 20 69 6E 20 74 68 61 74 0D 0A 0D 0A 20    nd, in that.... 
01CBC0:  20 20 20 20 4C 49 4E 45 20 49 4E 50 55 54 22 4E        LINE INPUT"N
01CBD0:  61 6D 65 22 3B 61 24 0D 0A 0D 0A 20 20 20 73 68    ame";a$....   sh
01CBE0:  6F 75 6C 64 20 70 72 69 6E 74 20 75 70 20 74 68    ould print up th
01CBF0:  65 20 70 72 6F 6D 70 74 20 22 4E 61 6D 65 22 20    e prompt "Name" 
01CC00:  65 65 73 65 22 20 6F 6E 0D 0A 20 20 20 74 68 65    eese" on..   the
01CC10:  20 34 36 34 3A 0D 0A 0D 0A 20 20 20 20 20 49 46     464:....     IF
01CC20:  20 32 35 36 20 54 48 45 4E 20 50 52 49 4E 54 22     256 THEN PRINT"
01CC30:  43 68 65 65 73 65 22 0D 0A 20 20 20 20 20 70 3D    Cheese"..     p=
01CC40:  32 35 36 3A 49 46 20 70 20 41 4E 44 20 32 35 36    256:IF p AND 256
01CC50:  20 54 48 45 4E 20 50 52 49 4E 54 22 43 68 65 65     THEN PRINT"Chee
01CC60:  73 65 22 0D 0A 20 20 20 20 20 49 46 20 31 30 32    se"..     IF 102
01CC70:  34 20 54 48 45 4E 20 50 52 49 4E 54 22 43 68 65    4 THEN PRINT"Che
01CC80:  65 73 65 22 0D 0A 0D 0A 20 20 20 54 68 6F 73 65    ese"....   Those
01CC90:  20 61 72 65 20 6A 75 73 74 20 61 20 66 65 77 20     are just a few 
01CCA0:  65 78 61 6D 70 6C 65 73 2C 20 61 6E 64 20 20 74    examples, and  t
01CCB0:  68 65 72 65 20 20 61 72 65 20 6D 61 6E 79 20 6D    here  are many m
01CCC0:  6F 72 65 20 6C 69 6B 65 20 74 68 65 6D 2E 20 20    ore like them.  
01CCD0:  4E 6F 74 65 2C 0D 0A 20 20 20 68 6F 77 65 76 65    Note,..   howeve
01CCE0:  72 2C 20 74 68 61 74 20 74 68 65 20 66 6F 6C 6C    r, that the foll
01CCF0:  6F 77 69 6E 67 20 74 77 6F 20 73 74 61 74 65 6D    owing two statem
01CD00:  65 6E 74 73 20 64 6F 20 70 72 69 6E 74 20 22 43    ents do print "C
01CD10:  68 65 65 73 65 22 3A 0D 0A 0D 0A 20 20 20 20 20    heese":....     
01CD20:  49 46 20 32 5E 38 20 54 48 45 4E 20 50 52 49 4E    IF 2^8 THEN PRIN
01CD30:  54 22 43 68 65 65 73 65 22 0D 0A 20 20 20 20 20    T"Cheese"..     
01CD40:  49 46 20 32 35 36 2E 30 20 54 48 45 4E 20 50 52    IF 256.0 THEN PR
01CD50:  49 4E 54 22 43 68 65 65 73 65 22 0D 0A 0D 0A 20    INT"Cheese".... 
01CD60:  20 20 54 68 69 73 20 69 73 20 62 65 63 61 75 73      This is becaus
01CD70:  65 20 42 41 53 49 43 20 69 73 20 74 72 65 61 74    e BASIC is treat
01CD80:  69 6E 67 20 74 68 65 20 6E 75 6D 62 65 72 73 20    ing the numbers 
01CD90:  28 77 68 69 63 68 20 62 6F 74 68 20 77 6F 72 6B    (which both work
01CDA0:  20 6F 75 74 20 61 73 20 32 35 36 29 0D 0A 20 20     out as 256)..  
01CDB0:  20 61 73 20 72 65 61 6C 20 76 61 6C 75 65 73 20     as real values 
01CDC0:  72 61 74 68 65 72 20 74 68 61 6E 20 69 6E 74 65    rather than inte
01CDD0:  67 65 72 73 2E 20 20 49 6E 20 20 66 61 63 74 2C    gers.  In  fact,
01CDE0:  20 69 66 20 79 6F 75 20 65 6E 74 65 72 20 74 68     if you enter th
01CDF0:  65 20 66 6F 6C 6C 6F 77 69 6E 67 0D 0A 20 20 20    e following..   
01CE00:  66 6F 6C 6C 6F 77 65 64 20 62 79 20 61 20 71 75    followed by a qu
01CE10:  65 73 74 69 6F 6E 20 6D 61 72 6B 20 61 6E 64 20    estion mark and 
01CE20:  61 20 73 70 61 63 65 2E 0D 0A 20 20 20 41 20 63    a space...   A c
01CE30:  6F 6D 6D 61 20 69 6E 73 74 65 61 64 20 6F 66 20    omma instead of 
01CE40:  61 20 73 65 6D 69 63 6F 6C 6F 6E 20 73 75 70 70    a semicolon supp
01CE50:  72 65 73 73 65 73 20 20 74 68 65 20 71 75 65 73    resses  the ques
01CE60:  74 69 6F 6E 20 6D 61 72 6B 2E 20 20 4F 6E 20 74    tion mark.  On t
01CE70:  68 65 20 34 36 34 2C 0D 0A 20 20 20 68 6F 77 65    he 464,..   howe
01CE80:  76 65 72 2C 20 74 68 65 20 71 75 65 73 74 69 6F    ver, the questio
01CE90:  6E 20 20 6D 61 72 6B 20 20 6E 65 76 65 72 20 20    n  mark  never  
01CEA0:  61 70 70 65 61 72 73 2E 20 20 20 54 68 69 73 20    appears.   This 
01CEB0:  20 77 69 6C 6C 20 20 6E 6F 74 20 20 63 61 75 73     will  not  caus
01CEC0:  65 20 6D 61 6E 79 0D 0A 20 20 20 70 72 6F 62 6C    e many..   probl
01CED0:  65 6D 73 2C 20 62 75 74 20 74 68 65 20 73 63 72    ems, but the scr
01CEE0:  65 65 6E 20 64 69 73 70 6C 61 79 20 6D 61 79 20    een display may 
01CEF0:  74 75 72 6E 20 20 6F 75 74 20 6E 6F 74 20 71 75    turn  out not qu
01CF00:  69 74 65 20 61 73 20 74 68 65 20 70 72 6F 67 72    ite as the progr
01CF10:  61 6D 6D 65 72 0D 0A 20 20 20 69 6E 74 65 6E 64    ammer..   intend
01CF20:  65 64 20 69 74 2E 20 20 49 66 20 79 6F 75 20 61    ed it.  If you a
01CF30:  72 65 20 61 20 36 36 34 2F 36 31 32 38 20 75 73    re a 664/6128 us
01CF40:  65 72 20 20 77 68 6F 20 77 61 6E 74 73 20 79 6F    er  who wants yo
01CF50:  75 72 20 70 72 6F 67 72 61 6D 20 74 6F 20 72 75    ur program to ru
01CF60:  6E 20 6F 6E 0D 0A 20 20 20 61 20 34 36 34 2C 20    n on..   a 464, 
01CF70:  61 6C 77 61 79 73 20 75 73 65 20 20 74 68 65 20    always use  the 
01CF80:  20 63 6F 6D 6D 61 2C 20 20 61 6E 64 20 20 70 72     comma,  and  pr
01CF90:  6F 76 69 64 65 20 20 74 68 65 20 20 71 75 65 73    ovide  the  ques
01CFA0:  74 69 6F 6E 20 6D 61 72 6B 20 61 6E 64 20 73 70    tion mark and sp
01CFB0:  61 63 65 0D 0A 20 20 20 79 6F 75 72 73 65 6C 66    ace..   yourself
01CFC0:  2E 0D 0A 0D 0A 20 20 20 49 66 20 79 6F 75 20 61    .....   If you a
01CFD0:  72 65 20 61 20 20 34 36 34 20 20 75 73 65 72 20    re a  464  user 
01CFE0:  20 79 6F 75 20 20 6D 61 79 20 20 66 69 6E 64 20     you  may  find 
01CFF0:  20 77 68 65 6E 20 20 72 75 6E 6E 69 6E 67 20 20     when  running  
01D000:  74 77 6F 20 6C 69 6E 65 73 3A 0D 0A 0D 0A 20 20    two lines:....  
01D010:  20 20 20 31 30 20 49 46 20 32 35 36 20 54 48 45       10 IF 256 THE
01D020:  4E 20 50 52 49 4E 54 22 43 68 65 65 73 65 22 0D    N PRINT"Cheese".
01D030:  0A 20 20 20 20 20 32 30 20 49 46 20 32 35 36 2E    .     20 IF 256.
01D040:  30 20 54 48 45 4E 20 50 52 49 4E 54 22 43 68 65    0 THEN PRINT"Che
01D050:  65 73 65 22 0D 0A 0D 0A 20 20 20 74 68 65 6E 20    ese"....   then 
01D060:  4C 49 53 54 20 74 68 65 20 70 72 6F 67 72 61 6D    LIST the program
01D070:  2C 20 62 6F 74 68 20 6C 69 6E 65 73 20 77 69 6C    , both lines wil
01D080:  6C 20 20 64 69 73 70 6C 61 79 20 74 68 65 20 73    l  display the s
01D090:  61 6D 65 2C 20 62 75 74 20 62 65 63 61 75 73 65    ame, but because
01D0A0:  20 6C 69 6E 65 0D 0A 20 20 20 32 30 20 68 61 73     line..   20 has
01D0B0:  20 32 35 36 20 73 74 6F 72 65 64 20 61 73 20 61     256 stored as a
01D0C0:  20 72 65 61 6C 20 6E 75 6D 62 65 72 20 69 74 20     real number it 
01D0D0:  77 69 6C 6C 20 70 72 69 6E 74 20 22 43 68 65 65    will print "Chee
01D0E0:  73 65 22 21 0D 0A 0D 0A 20 20 20 49 66 20 79 6F    se"!....   If yo
01D0F0:  75 20 73 75 73 70 65 63 74 20 62 75 67 73 20 20    u suspect bugs  
01D100:  69 6E 20 20 61 20 20 70 72 6F 67 72 61 6D 20 20    in  a  program  
01D110:  74 6F 20 20 62 65 20 20 64 75 65 20 20 74 6F 20    to  be  due  to 
01D120:  20 74 68 69 73 20 66 61 75 6C 74 2C 20 6A 75 73     this fault, jus
01D130:  74 20 70 75 74 0D 0A 20 20 20 62 72 61 63 6B 65    t put..   bracke
01D140:  74 73 20 72 6F 75 6E 64 20 74 68 65 20 77 68 6F    ts round the who
01D150:  6C 65 20 65 78 70 72 65 73 73 69 6F 6E 20 61 6E    le expression an
01D160:  64 20 20 22 3C 3E 30 22 20 20 61 66 74 65 72 20    d  "<>0"  after 
01D170:  69 74 2E 20 20 54 68 69 73 20 77 69 6C 6C 20 66    it.  This will f
01D180:  6F 72 63 65 0D 0A 20 20 20 74 68 65 20 63 6F 6D    orce..   the com
01D190:  70 75 74 65 72 20 74 6F 20 74 72 65 61 74 20 6E    puter to treat n
01D1A0:  6F 6E 2D 7A 65 72 6F 20 76 61 6C 75 65 73 20 61    on-zero values a
01D1B0:  73 20 74 72 75 65 2E 0D 0A 0D 0A 20 20 20 54 68    s true.....   Th
01D1C0:  65 72 65 20 61 72 65 20 20 73 65 76 65 72 61 6C    ere are  several
01D1D0:  20 20 6F 74 68 65 72 20 20 61 72 69 74 68 6D 65      other  arithme
01D1E0:  74 69 63 61 6C 20 20 62 75 67 73 20 20 74 68 61    tical  bugs  tha
01D1F0:  74 20 20 61 66 66 65 63 74 20 20 61 6C 6C 20 20    t  affect  all  
01D200:  79 6F 75 72 20 70 72 6F 67 72 61 6D 73 20 6F 6E    your programs on
01D210:  20 61 0D 0A 20 20 20 36 36 34 2F 36 31 32 38 20     a..   664/6128 
01D220:  74 68 61 74 20 65 78 74 72 61 20 71 75 65 73 74    that extra quest
01D230:  69 6F 6E 20 6D 61 72 6B 73 20 77 69 6C 6C 20 61    ion marks will a
01D240:  70 70 65 61 72 2E 20 20 59 6F 75 20 73 68 6F 75    ppear.  You shou
01D250:  6C 64 20 61 6C 77 61 79 73 20 75 73 65 20 74 68    ld always use th
01D260:  65 0D 0A 20 20 20 63 6F 6D 6D 61 20 61 73 20 77    e..   comma as w
01D270:  65 6C 6C 2E 20 20 54 68 65 20 63 6F 6D 6D 61 6E    ell.  The comman
01D280:  64 20 77 69 74 68 20 6E 6F 20 70 72 6F 6D 70 74    d with no prompt
01D290:  3A 0D 0A 0D 0A 20 20 20 20 20 4C 49 4E 45 20 49    :....     LINE I
01D2A0:  4E 50 55 54 20 61 24 0D 0A 0D 0A 20 20 20 77 69    NPUT a$....   wi
01D2B0:  6C 6C 20 70 72 6F 64 75 63 65 20 61 20 71 75 65    ll produce a que
01D2C0:  73 74 69 6F 6E 20 6D 61 72 6B 20 6F 6E 20 74 68    stion mark on th
01D2D0:  65 20 20 36 36 34 2F 36 31 32 38 2E 20 20 20 49    e  664/6128.   I
01D2E0:  66 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 61 76    f you want to av
01D2F0:  6F 69 64 20 74 68 69 73 0D 0A 20 20 20 68 61 70    oid this..   hap
01D300:  70 65 6E 69 6E 67 2C 20 75 73 65 0D 0A 0D 0A 20    pening, use.... 
01D310:  20 20 20 20 4C 49 4E 45 20 49 4E 50 55 54 22 22        LINE INPUT""
01D320:  2C 61 24 0D 0A 0D 0A 20 20 20 54 68 61 6E 6B 73    ,a$....   Thanks
01D330:  20 74 6F 20 52 69 63 68 61 72 64 20 20 46 61 69     to Richard  Fai
01D340:  72 68 75 72 73 74 20 20 66 6F 72 20 20 70 6F 69    rhurst  for  poi
01D350:  6E 74 69 6E 67 20 20 74 68 69 73 20 20 6F 6E 65    nting  this  one
01D360:  20 20 6F 75 74 2C 20 20 77 68 69 63 68 20 20 49      out,  which  I
01D370:  20 77 61 73 0D 0A 20 20 20 63 6F 6D 70 6C 65 74     was..   complet
01D380:  65 6C 79 20 75 6E 61 77 61 72 65 20 6F 66 2E 20    ely unaware of. 
01D390:  20 49 20 77 69 6C 6C 20 6E 6F 77 20 68 61 76 65     I will now have
01D3A0:  20 20 74 6F 20 20 67 6F 20 74 68 72 6F 75 67 68      to  go through
01D3B0:  20 6D 79 20 6F 77 6E 20 70 72 6F 67 72 61 6D 73     my own programs
01D3C0:  20 74 6F 0D 0A 20 20 20 63 68 65 63 6B 20 74 68     to..   check th
01D3D0:  65 20 4C 49 4E 45 20 49 4E 50 55 54 73 2E 0D 0A    e LINE INPUTs...
01D3E0:  0D 0A 20 20 20 47 45 54 54 49 4E 47 20 54 48 45    ..   GETTING THE
01D3F0:  20 53 55 4D 53 20 57 52 4F 4E 47 0D 0A 20 20 20     SUMS WRONG..   
01D400:  74 68 65 20 20 43 50 43 0D 0A 20 20 20 6D 61 63    the  CPC..   mac
01D410:  68 69 6E 65 73 2C 20 77 68 69 63 68 20 61 72 65    hines, which are
01D420:  20 20 6D 6F 73 74 6C 79 20 20 74 68 65 20 20 72      mostly  the  r
01D430:  65 73 75 6C 74 20 20 6F 66 20 20 72 6F 75 6E 64    esult  of  round
01D440:  69 6E 67 20 20 65 72 72 6F 72 73 20 20 77 68 65    ing  errors  whe
01D450:  6E 20 75 73 69 6E 67 0D 0A 20 20 20 66 6C 6F 61    n using..   floa
01D460:  74 69 6E 67 20 70 6F 69 6E 74 20 6E 75 6D 62 65    ting point numbe
01D470:  72 73 2E 0D 0A 0D 0A 20 20 20 53 57 45 45 50 49    rs.....   SWEEPI
01D480:  4E 47 20 55 50 20 54 48 45 20 47 41 52 42 41 47    NG UP THE GARBAG
01D490:  45 0D 0A 20 20 20 54 68 65 20 34 36 34 20 69 73    E..   The 464 is
01D4A0:  20 76 65 72 79 20 73 6C 6F 77 20 6F 6E 20 67 61     very slow on ga
01D4B0:  72 62 61 67 65 20 63 6F 6C 6C 65 63 74 69 6F 6E    rbage collection
01D4C0:  2E 20 20 49 66 20 79 6F 75 20 69 6E 63 72 65 61    .  If you increa
01D4D0:  73 65 20 74 68 65 20 6C 65 6E 67 74 68 20 6F 66    se the length of
01D4E0:  0D 0A 20 20 20 61 20 73 74 72 69 6E 67 2C 20 42    ..   a string, B
01D4F0:  41 53 49 43 20 73 74 6F 72 65 73 20 74 68 65 20    ASIC stores the 
01D500:  73 74 72 69 6E 67 20 69 6E 20 20 61 20 6E 65 77    string in  a new
01D510:  20 61 72 65 61 20 6F 66 20 6D 65 6D 6F 72 79 2C     area of memory,
01D520:  20 61 6E 64 20 65 76 65 6E 74 75 61 6C 6C 79 0D     and eventually.
01D530:  0A 20 20 20 74 68 65 20 6F 6C 64 20 63 68 75 6E    .   the old chun
01D540:  6B 20 77 69 6C 6C 20 20 62 65 20 20 72 65 75 73    k will  be  reus
01D550:  65 64 2E 20 20 20 47 61 72 62 61 67 65 20 20 63    ed.   Garbage  c
01D560:  6F 6C 6C 65 63 74 69 6F 6E 20 20 69 73 20 20 77    ollection  is  w
01D570:  68 65 6E 20 42 41 53 49 43 20 67 6F 65 73 0D 0A    hen BASIC goes..
01D580:  20 20 20 74 68 72 6F 75 67 68 20 6D 65 6D 6F 72       through memor
01D590:  79 20 74 69 64 79 69 6E 67 20 75 70 20 61 6C 6C    y tidying up all
01D5A0:  20 74 68 65 20 20 73 74 72 69 6E 67 20 73 74 6F     the  string sto
01D5B0:  72 61 67 65 2E 20 20 54 68 65 20 73 74 72 69 6E    rage.  The strin
01D5C0:  67 20 68 61 6E 64 6C 69 6E 67 20 6F 6E 0D 0A 20    g handling on.. 
01D5D0:  20 20 74 68 65 20 34 36 34 20 69 73 20 6D 75 63      the 464 is muc
01D5E0:  68 20 6C 65 73 73 20 65 66 66 69 63 69 65 6E 74    h less efficient
01D5F0:  20 74 68 61 6E 20 74 68 61 74 20 20 6F 66 20 42     than that  of B
01D600:  54 68 65 72 65 20 61 72 65 20 61 20 66 65 77 20    There are a few 
01D610:  61 72 65 61 73 20 77 68 65 72 65 20 20 74 68 65    areas where  the
01D620:  20 20 34 36 34 20 69 73 20 22 61 72 69 74 68 6D      464 is "arithm
01D630:  65 74 69 63 61 6C 6C 79 20 63 68 61 6C 6C 65 6E    etically challen
01D640:  67 65 64 22 2E 20 20 46 6F 72 0D 0A 20 20 20 65    ged".  For..   e
01D650:  78 61 6D 70 6C 65 2C 20 74 72 79 0D 0A 0D 0A 20    xample, try.... 
01D660:  20 20 20 20 50 52 49 4E 54 20 28 2D 31 29 5E 31        PRINT (-1)^1
01D670:  0D 0A 0D 0A 20 20 20 4F 6E 20 74 68 65 20 34 36    ....   On the 46
01D680:  34 20 79 6F 75 20 77 69 6C 6C 20 20 67 65 74 20    4 you will  get 
01D690:  20 22 31 22 20 20 77 68 69 6C 65 20 20 74 68 65     "1"  while  the
01D6A0:  20 20 36 36 34 2F 36 31 32 38 20 77 69 6C 6C 20      664/6128 will 
01D6B0:  70 72 69 6E 74 20 74 68 65 20 63 6F 72 72 65 63    print the correc
01D6C0:  74 0D 0A 20 20 20 61 6E 73 77 65 72 20 6F 66 20    t..   answer of 
01D6D0:  22 2D 31 22 2E 20 20 54 68 65 20 73 61 6D 65 20    "-1".  The same 
01D6E0:  61 70 70 6C 69 65 73 20 74 6F 20 61 6E 79 20 6F    applies to any o
01D6F0:  74 68 65 72 20 6E 65 67 61 74 69 76 65 20 6E 75    ther negative nu
01D700:  6D 62 65 72 2E 20 20 4F 66 20 63 6F 75 72 73 65    mber.  Of course
01D710:  0D 0A 20 20 20 74 68 65 72 65 20 69 73 20 6E 6F    ..   there is no
01D720:  74 20 6D 75 63 68 20 70 6F 69 6E 74 20 69 6E 20    t much point in 
01D730:  20 72 61 69 73 69 6E 67 20 20 73 6F 6D 65 74 68     raising  someth
01D740:  69 6E 67 20 20 74 6F 20 74 68 65 20 66 69 72 73    ing  to the firs
01D750:  74 20 70 6F 77 65 72 2C 20 62 75 74 20 69 66 0D    t power, but if.
01D760:  0A 20 20 20 79 6F 75 20 68 61 64 20 76 61 72 69    .   you had vari
01D770:  61 62 6C 65 73 20 69 6E 76 6F 6C 76 65 64 20 69    ables involved i
01D780:  74 20 63 6F 75 6C 64 20 63 61 75 73 65 20 70 72    t could cause pr
01D790:  6F 62 6C 65 6D 73 2E 0D 0A 0D 0A 20 20 20 41 6E    oblems.....   An
01D7A0:  6F 74 68 65 72 20 6D 6F 72 65 20 73 65 72 69 6F    other more serio
01D7B0:  75 73 20 70 72 6F 62 6C 65 6D 20 61 66 66 65 63    us problem affec
01D7C0:  74 73 20 6C 6F 67 69 63 20 20 73 74 61 74 65 6D    ts logic  statem
01D7D0:  65 6E 74 73 20 61 6E 64 20 74 68 65 20 49 46 20    ents and the IF 
01D7E0:  63 6F 6D 6D 61 6E 64 2E 0D 0A 20 20 20 41 73 20    command...   As 
01D7F0:  77 65 20 65 78 70 6C 61 69 6E 65 64 20 69 6E 20    we explained in 
01D800:  20 69 66 20 74 68 65 72 65 20 61 72 65 20 20 61     if there are  a
01D810:  20 20 6C 6F 74 20 20 6F 66 20 74 68 65 6D 20 69      lot  of them i
01D820:  74 20 6D 61 79 20 62 65 20 65 61 73 69 65 72 20    t may be easier 
01D830:  74 6F 0D 0A 20 20 20 72 75 6E 20 4C 69 73 74 69    to..   run Listi
01D840:  6E 67 20 31 2E 20 20 54 68 69 73 20 6C 69 73 74    ng 1.  This list
01D850:  69 6E 67 20 69 73 20 62 79 20 44 6F 6D 69 6E 69    ing is by Domini
01D860:  63 20 57 69 73 65 20 61 6E 64 20 77 61 73 20 70    c Wise and was p
01D870:  72 69 6E 74 65 64 20 69 6E 20 41 6D 73 74 72 61    rinted in Amstra
01D880:  64 0D 0A 20 20 20 41 63 74 69 6F 6E 20 69 73 73    d..   Action iss
01D890:  75 65 20 35 33 2C 20 46 65 62 72 75 61 72 79 20    ue 53, February 
01D8A0:  31 39 39 30 2E 20 20 28 4C 65 74 27 73 20 68 6F    1990.  (Let's ho
01D8B0:  70 65 20 74 68 65 79 20 64 6F 6E 27 74 20 6D 69    pe they don't mi
01D8C0:  6E 64 20 75 73 20 72 65 70 72 69 6E 74 69 6E 67    nd us reprinting
01D8D0:  0D 0A 20 20 20 69 74 2E 2E 2E 29 20 20 54 68 69    ..   it...)  Thi
01D8E0:  73 20 6C 69 73 74 69 6E 67 20 67 69 76 65 73 20    s listing gives 
01D8F0:  34 36 34 20 75 73 65 72 73 20 20 74 68 65 20 61    464 users  the a
01D900:  62 69 6C 69 74 79 20 74 6F 20 70 61 73 73 20 73    bility to pass s
01D910:  74 72 69 6E 67 73 20 64 69 72 65 63 74 6C 79 0D    trings directly.
01D920:  0A 20 20 20 74 6F 20 52 53 58 73 20 61 6E 64 20    .   to RSXs and 
01D930:  43 41 4C 4C 20 63 6F 6D 6D 61 6E 64 73 2E 20 20    CALL commands.  
01D940:  3C 3C 49 74 20 69 73 20 73 61 76 65 64 20 6F 6E    <<It is saved on
01D950:  20 64 69 73 63 20 61 73 20 34 36 34 52 53 58 2E     disc as 464RSX.
01D960:  42 41 53 3E 3E 0D 0A 0D 0A 20 20 20 54 68 65 20    BAS>>....   The 
01D970:  72 65 61 6C 20 74 65 63 68 69 65 73 20 61 6D 6F    real techies amo
01D980:  6E 67 20 79 6F 75 20 6D 61 79 20 6C 69 6B 65 20    ng you may like 
01D990:  20 74 6F 20 20 67 65 74 20 6F 75 74 20 79 6F 75     to  get out you
01D9A0:  72 20 64 69 73 61 73 73 65 6D 62 6C 65 72 20 74    r disassembler t
01D9B0:  6F 20 66 69 6E 64 0D 0A 20 20 20 6F 75 74 20 68    o find..   out h
01D9C0:  6F 77 20 69 74 20 77 6F 72 6B 73 2E 20 20 49 74    ow it works.  It
01D9D0:  20 73 65 65 6D 73 20 74 6F 20 75 73 65 20 61 20     seems to use a 
01D9E0:  70 61 74 63 68 20 62 6C 6F 63 6B 20 61 74 20 26    patch block at &
01D9F0:  41 43 30 34 2E 20 20 54 68 65 72 65 20 61 72 65    AC04.  There are
01DA00:  4D 61 72 63 68 20 20 31 39 39 37 2C 20 20 61 6C    March  1997,  al
01DA10:  6C 20 20 6C 6F 67 69 63 61 6C 20 65 78 70 72 65    l  logical expre
01DA20:  73 73 69 6F 6E 73 20 61 72 65 20 65 76 61 6C 75    ssions are evalu
01DA30:  61 74 65 64 20 74 6F 0D 0A 20 20 20 67 69 76 65    ated to..   give
01DA40:  20 61 20 6E 75 6D 62 65 72 2C 20 61 6E 64 20 69     a number, and i
01DA50:  66 20 74 68 65 20 6E 75 6D 62 65 72 20 20 69 73    f the number  is
01DA60:  20 6E 6F 74 20 7A 65 72 6F 20 74 68 65 20 65 78     not zero the ex
01DA70:  70 72 65 73 73 69 6F 6E 20 69 73 20 63 6F 6E 73    pression is cons
01DA80:  69 64 65 72 65 64 0D 0A 20 20 20 74 6F 20 62 65    idered..   to be
01DA90:  20 74 72 75 65 2E 20 20 46 6F 72 20 65 78 61 6D     true.  For exam
01DAA0:  70 6C 65 2C 0D 0A 0D 0A 20 20 20 20 20 49 46 20    ple,....     IF 
01DAB0:  37 20 41 4E 44 20 33 20 54 48 45 4E 20 50 52 49    7 AND 3 THEN PRI
01DAC0:  4E 54 22 43 68 65 65 73 65 22 0D 0A 0D 0A 20 20    NT"Cheese"....  
01DAD0:  20 77 69 6C 6C 20 70 72 69 6E 74 20 22 43 68 65     will print "Che
01DAE0:  65 73 65 22 20 62 65 63 61 75 73 65 20 37 20 41    ese" because 7 A
01DAF0:  4E 44 20 33 20 69 73 20 20 33 20 28 77 68 69 63    ND 3 is  3 (whic
01DB00:  68 20 69 73 20 6E 6F 74 20 7A 65 72 6F 29 2E 20    h is not zero). 
01DB10:  20 53 61 64 6C 79 2C 20 34 36 34 0D 0A 20 20 20     Sadly, 464..   
01DB20:  42 41 53 49 43 20 68 61 73 20 61 20 62 75 67 20    BASIC has a bug 
01DB30:  62 65 63 61 75 73 65 20 69 66 20 20 74 68 65 20    because if  the 
01DB40:  20 65 78 70 72 65 73 73 69 6F 6E 20 20 79 69 65     expression  yie
01DB50:  6C 64 73 20 61 6E 20 69 6E 74 65 67 65 72 20 76    lds an integer v
01DB60:  61 6C 75 65 20 77 68 65 72 65 0D 0A 20 20 20 74    alue where..   t
01DB70:  68 65 20 6C 65 61 73 74 20 73 69 67 6E 69 66 69    he least signifi
01DB80:  63 61 6E 74 20 62 79 74 65 20 69 73 20 7A 65 72    cant byte is zer
01DB90:  6F 20 20 74 68 65 20 20 65 78 70 72 65 73 73 69    o  the  expressi
01DBA0:  6F 6E 20 77 69 6C 6C 20 6E 6F 74 20 62 65 20 63    on will not be c
01DBB0:  6F 6E 73 69 64 65 72 65 64 0D 0A 20 20 20 74 72    onsidered..   tr
01DBC0:  75 65 2C 20 65 76 65 6E 20 69 66 20 69 74 20 69    ue, even if it i
01DBD0:  73 21 20 20 54 68 65 20 66 6F 6C 6C 6F 77 69 6E    s!  The followin
01DBE0:  67 20 20 73 74 61 74 65 6D 65 6E 74 73 20 77 69    g  statements wi
01DBF0:  6C 6C 20 6E 6F 74 20 70 72 69 6E 74 20 22 43 68    ll not print "Ch
01DC00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01DC10:  19 00 01 00 02 09 4E E5 19 00 C5 02 00 00 00 02    ......N.........
01DC20:  19 00 C1 02 00 00 00 02 19 00 C6 02 00 00 00 02    ................
01DC30:  19 00 C2 02 00 00 00 02 19 00 C7 02 00 00 00 02    ................
01DC40:  19 00 C3 02 00 00 00 02 19 00 C8 02 00 00 00 02    ................
01DC50:  19 00 C4 02 00 00 00 02 19 00 C9 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:  6C 65 20 69 6E 74 6F 20 6D 65 6D 6F 72 79 2C 0D    le into memory,.
01DD10:  0A 20 20 20 42 41 53 49 43 20 63 72 65 61 74 65    .   BASIC create
01DD20:  73 20 61 20 66 69 6C 65 20 62 75 66 66 65 72 2C    s a file buffer,
01DD30:  20 62 75 74 20 64 6F 65 73 20 6E 6F 74 20 66 72     but does not fr
01DD40:  65 65 20 74 68 65 20 6D 65 6D 6F 72 79 20 6F 6E    ee the memory on
01DD50:  63 65 20 74 68 65 20 66 69 6C 65 20 69 73 0D 0A    ce the file is..
01DD60:  20 20 20 6C 6F 61 64 65 64 20 61 73 20 69 74 20       loaded as it 
01DD70:  73 68 6F 75 6C 64 20 64 6F 2E 20 20 49 73 73 75    should do.  Issu
01DD80:  69 6E 67 20 20 61 20 43 4C 4F 53 45 49 4E 20 63    ing  a CLOSEIN c
01DD90:  6F 6D 6D 61 6E 64 20 69 6D 6D 65 64 69 61 74 65    ommand immediate
01DDA0:  6C 79 20 61 66 74 65 72 77 61 72 64 73 0D 0A 20    ly afterwards.. 
01DDB0:  20 20 77 69 6C 6C 20 63 75 72 65 20 74 68 69 73      will cure this
01DDC0:  20 6F 6E 65 2E 0D 0A 0D 0A 20 20 20 4B 45 59 42     one.....   KEYB
01DDD0:  4F 41 52 44 20 4C 41 59 4F 55 54 0D 0A 20 20 20    OARD LAYOUT..   
01DDE0:  4F 6E 65 20 6C 61 73 74 20 64 69 66 66 65 72 65    One last differe
01DDF0:  6E 63 65 20 62 65 74 77 65 65 6E 20 74 68 65 20    nce between the 
01DE00:  43 50 43 73 20 69 73 20 74 68 65 20 6B 65 79 62    CPCs is the keyb
01DE10:  6F 61 72 64 20 6C 61 79 6F 75 74 2E 20 20 54 68    oard layout.  Th
01DE20:  65 20 36 31 32 38 20 68 61 73 0D 0A 20 20 20 61    e 6128 has..   a
01DE30:  20 74 6F 74 61 6C 6C 79 20 64 69 66 66 65 72 65     totally differe
01DE40:  6E 74 20 6C 61 79 6F 75 74 2C 20 62 75 74 20 66    nt layout, but f
01DE50:  6F 72 20 20 6F 6E 63 65 20 20 74 68 65 20 20 34    or  once  the  4
01DE60:  36 34 20 20 61 6E 64 20 36 36 34 20 68 61 76 65    64  and 664 have
01DE70:  20 6D 75 63 68 20 74 68 65 0D 0A 20 20 20 73 61     much the..   sa
01DE80:  6D 65 20 64 65 73 69 67 6E 20 28 61 70 61 72 74    me design (apart
01DE90:  20 66 72 6F 6D 20 74 68 65 20 20 36 36 34 27 73     from the  664's
01DEA0:  20 20 6D 61 6D 6D 6F 74 68 20 20 62 6C 75 65 20      mammoth  blue 
01DEB0:  63 75 72 73 6F 72 20 6B 65 79 73 29 2E 20 20 53    cursor keys).  S
01DEC0:  6F 6D 65 74 69 6D 65 73 0D 0A 20 20 20 6B 65 79    ometimes..   key
01DED0:  73 20 61 72 65 20 63 68 6F 73 65 6E 20 74 68 61    s are chosen tha
01DEE0:  74 20 77 6F 72 6B 20 77 65 6C 6C 20 6F 6E 20 74    t work well on t
01DEF0:  68 65 20 36 31 32 38 20 62 75 74 20 6E 6F 74 20    he 6128 but not 
01DF00:  41 53 49 43 20 31 2E 31 2C 20 61 6E 64 20 74 68    ASIC 1.1, and th
01DF10:  69 73 20 63 61 6E 20 63 61 75 73 65 0D 0A 20 20    is can cause..  
01DF20:  20 73 65 76 65 72 65 20 70 72 6F 62 6C 65 6D 73     severe problems
01DF30:  2E 20 20 53 6F 6D 65 74 69 6D 65 73 20 74 68 65    .  Sometimes the
01DF40:  20 6D 61 63 68 69 6E 65 20 73 65 65 6D 73 20 74     machine seems t
01DF50:  6F 20 68 61 6E 67 20 75 70 20 66 6F 72 20 61 20    o hang up for a 
01DF60:  66 65 77 20 73 65 63 6F 6E 64 73 0D 0A 20 20 20    few seconds..   
01DF70:  75 6E 65 78 70 65 63 74 65 64 6C 79 2C 20 61 6E    unexpectedly, an
01DF80:  64 20 73 6F 6D 65 74 69 6D 65 73 20 79 6F 75 20    d sometimes you 
01DF90:  72 75 6E 20 6F 75 74 20 6F 66 20 6D 65 6D 6F 72    run out of memor
01DFA0:  79 20 61 6C 74 6F 67 65 74 68 65 72 2E 0D 0A 0D    y altogether....
01DFB0:  0A 20 20 20 4F 6E 65 20 74 68 69 6E 67 20 74 68    .   One thing th
01DFC0:  61 74 20 63 61 6E 20 73 6F 6D 65 74 69 6D 65 73    at can sometimes
01DFD0:  20 68 65 6C 70 20 69 73 20 74 6F 20 20 66 6F 72     help is to  for
01DFE0:  63 65 20 42 41 53 49 43 20 74 6F 20 64 6F 20 74    ce BASIC to do t
01DFF0:  68 65 20 72 6F 75 6E 64 73 20 6D 6F 72 65 0D 0A    he rounds more..
01E000:  20 20 20 6F 66 74 65 6E 2E 20 20 49 66 20 79 6F       often.  If yo
01E010:  75 20 70 75 74 0D 0A 0D 0A 20 20 20 20 20 64 75    u put....     du
01E020:  6D 6D 79 76 61 72 3D 46 52 45 28 22 22 29 0D 0A    mmyvar=FRE("")..
01E030:  0D 0A 20 20 20 61 74 20 73 74 72 61 74 65 67 69    ..   at strategi
01E040:  63 20 70 6F 69 6E 74 73 20 69 6E 20 61 20 70 72    c points in a pr
01E050:  6F 67 72 61 6D 2C 20 20 74 68 69 73 20 20 63 61    ogram,  this  ca
01E060:  6E 20 73 74 6F 70 20 74 68 65 20 70 72 6F 62 6C    n stop the probl
01E070:  65 6D 20 62 75 69 6C 64 69 6E 67 20 75 70 2E 0D    em building up..
01E080:  0A 20 20 20 54 68 65 20 67 61 72 62 61 67 65 20    .   The garbage 
01E090:  63 6F 6C 6C 65 63 74 69 6F 6E 20 69 73 20 6D 6F    collection is mo
01E0A0:  73 74 20 20 6C 69 6B 65 6C 79 20 20 74 6F 20 20    st  likely  to  
01E0B0:  62 65 20 20 6E 65 65 64 65 64 20 77 68 65 6E 20    be  needed when 
01E0C0:  42 41 53 49 43 20 72 65 71 75 69 72 65 73 0D 0A    BASIC requires..
01E0D0:  20 20 20 76 61 73 74 20 61 6D 6F 75 6E 74 73 20       vast amounts 
01E0E0:  6F 66 20 6D 65 6D 6F 72 79 20 73 75 64 64 65 6E    of memory sudden
01E0F0:  6C 79 2E 20 20 57 68 65 6E 65 76 65 72 20 79 6F    ly.  Whenever yo
01E100:  6F 6E 20 74 68 65 20 6F 74 68 65 72 73 2C 20 61    on the others, a
01E110:  6E 64 20 76 69 63 65 0D 0A 20 20 20 76 65 72 73    nd vice..   vers
01E120:  61 2E 20 20 49 74 20 69 73 20 75 73 75 61 6C 6C    a.  It is usuall
01E130:  79 20 65 61 73 79 20 65 6E 6F 75 67 68 20 74 6F    y easy enough to
01E140:  20 73 6F 72 74 20 69 74 20 6F 75 74 2E 20 20 4F     sort it out.  O
01E150:  6E 65 20 66 65 61 74 75 72 65 20 6F 66 20 74 68    ne feature of th
01E160:  65 20 36 31 32 38 0D 0A 20 20 20 69 73 20 74 68    e 6128..   is th
01E170:  61 74 20 69 74 20 69 73 20 70 6F 73 73 69 62 6C    at it is possibl
01E180:  65 20 20 74 6F 20 20 64 6F 20 20 43 54 52 4C 2D    e  to  do  CTRL-
01E190:  53 48 49 46 54 2D 45 53 43 20 20 77 69 74 68 20    SHIFT-ESC  with 
01E1A0:  20 6F 6E 65 20 20 68 61 6E 64 2E 20 20 49 20 61     one  hand.  I a
01E1B0:  6D 20 6E 6F 74 0D 0A 20 20 20 63 6F 6E 76 69 6E    m not..   convin
01E1C0:  63 65 64 20 74 68 61 74 20 74 68 69 73 20 69 73    ced that this is
01E1D0:  20 61 6E 20 61 64 76 61 6E 74 61 67 65 21 0D 0A     an advantage!..
01E1E0:  0D 0A 20 20 20 54 68 65 72 65 20 61 72 65 20 64    ..   There are d
01E1F0:  6F 75 62 74 6C 65 73 73 20 6F 74 68 65 72 20 73    oubtless other s
01E200:  6C 69 67 68 74 20 62 75 67 73 20 20 77 69 74 68    light bugs  with
01E210:  20 20 74 68 65 20 34 36 34 27 73 20 42 41 53 49      the 464's BASI
01E220:  43 20 61 6E 64 20 66 69 72 6D 77 61 72 65 2E 0D    C and firmware..
01E230:  0A 20 20 20 49 66 20 79 6F 75 20 6B 6E 6F 77 20    .   If you know 
01E240:  6F 66 20 61 6E 79 2C 20 77 68 79 20 6E 6F 74 20    of any, why not 
01E250:  77 72 69 74 65 20 69 6E 20 74 6F 20 46 61 69 72    write in to Fair
01E260:  20 43 6F 6D 6D 65 6E 74 20 61 6E 64 20 6C 65 74     Comment and let
01E270:  20 75 73 20 6B 6E 6F 77 2E 0D 0A 1A 70 6C 65 20     us know....ple 
01E280:  6D 65 20 64 65 73 69 67 6E 20 28 61 70 61 72 74    me design (apart
01E290:  20 66 72 6F 6D 20 74 68 65 20 20 36 36 34 27 73     from the  664's
01E2A0:  20 20 6D 61 6D 6D 6F 74 68 20 20 62 6C 75 65 20      mammoth  blue 
01E2B0:  63 75 72 73 6F 72 20 6B 65 79 73 29 2E 20 20 53    cursor keys).  S
01E2C0:  6F 6D 65 74 69 6D 65 73 0D 0A 20 20 20 6B 65 79    ometimes..   key
01E2D0:  73 20 61 72 65 20 63 68 6F 73 65 6E 20 74 68 61    s are chosen tha
01E2E0:  74 20 77 6F 72 6B 20 77 65 6C 6C 20 6F 6E 20 74    t work well on t
01E2F0:  68 65 20 36 31 32 38 20 62 75 74 20 6E 6F 74 20    he 6128 but not 
01E300:  75 20 20 6F 70 65 6E 20 61 20 66 69 6C 65 20 66    u  open a file f
01E310:  6F 72 20 72 65 61 64 69 6E 67 20 6F 72 0D 0A 20    or reading or.. 
01E320:  20 20 77 72 69 74 69 6E 67 2C 20 34 6B 20 6F 66      writing, 4k of
01E330:  20 6D 65 6D 6F 72 79 20 69 73 20 6E 65 65 64 65     memory is neede
01E340:  64 20 66 6F 72 20 75 73 65 20 61 73 20 62 75 66    d for use as buf
01E350:  66 65 72 73 2C 20 61 6E 64 20 77 68 65 6E 20 79    fers, and when y
01E360:  6F 75 20 6F 6E 6C 79 20 68 61 76 65 0D 0A 20 20    ou only have..  
01E370:  20 36 34 6B 20 52 41 4D 2C 20 74 68 69 73 20 69     64k RAM, this i
01E380:  73 20 61 20 76 65 72 79 20 6C 61 72 67 65 20 20    s a very large  
01E390:  61 6D 6F 75 6E 74 20 20 74 6F 20 20 67 65 74 20    amount  to  get 
01E3A0:  74 6F 67 65 74 68 65 72 2E 20 20 49 6E 20 6F 72    together.  In or
01E3B0:  64 65 72 20 74 6F 20 66 69 6E 64 0D 0A 20 20 20    der to find..   
01E3C0:  74 68 69 73 20 6D 65 6D 6F 72 79 2C 20 42 41 53    this memory, BAS
01E3D0:  49 43 20 72 65 61 72 72 61 6E 67 65 73 20 74 68    IC rearranges th
01E3E0:  65 20 20 73 74 72 69 6E 67 20 73 74 6F 72 61 67    e  string storag
01E3F0:  65 20 73 70 61 63 65 2E 20 20 55 6E 66 6F 72 74    e space.  Unfort
01E400:  75 6E 61 74 65 6C 79 20 69 66 0D 0A 20 20 20 74    unately if..   t
01E410:  68 65 20 6E 61 6D 65 20 6F 66 20 74 68 65 20 66    he name of the f
01E420:  69 6C 65 20 79 6F 75 20 77 65 72 65 20 20 61 62    ile you were  ab
01E430:  6F 75 74 20 20 74 6F 20 20 6C 6F 61 64 20 77 61    out  to  load wa
01E440:  73 20 69 6E 20 61 20 73 74 72 69 6E 67 20 76 61    s in a string va
01E450:  72 69 61 62 6C 65 2C 20 61 0D 0A 20 20 20 62 75    riable, a..   bu
01E460:  67 20 6F 6E 20 74 68 65 20 34 36 34 20 6D 65 61    g on the 464 mea
01E470:  6E 73 20 74 68 61 74 20 73 6F 6D 65 74 69 6D 65    ns that sometime
01E480:  73 20 20 42 41 53 49 43 20 20 6C 6F 73 65 73 20    s  BASIC  loses 
01E490:  74 72 61 63 6B 20 6F 66 20 74 68 65 20 6E 61 6D    track of the nam
01E4A0:  65 20 6F 66 20 74 68 65 0D 0A 20 20 20 66 69 6C    e of the..   fil
01E4B0:  65 2C 20 72 65 73 75 6C 74 69 6E 67 20 69 6E 20    e, resulting in 
01E4C0:  61 20 22 46 69 6C 65 20 6E 6F 74 20 66 6F 75 6E    a "File not foun
01E4D0:  64 22 20 65 72 72 6F 72 2E 0D 0A 0D 0A 20 20 20    d" error.....   
01E4E0:  54 68 65 20 62 65 73 74 20 77 61 79 20 74 6F 20    The best way to 
01E4F0:  67 65 74 20 72 6F 75 6E 64 20 74 68 69 73 20 69    get round this i
01E500:  36 3A 74 3D 30 0D 0A 20 35 30 20 46 4F 52 20 6D    6:t=0.. 50 FOR m
01E510:  3D 30 20 54 4F 20 38 3A 52 45 41 44 20 61 24 3A    =0 TO 8:READ a$:
01E520:  78 3D 56 41 4C 28 22 26 22 2B 61 24 29 3A 74 3D    x=VAL("&"+a$):t=
01E530:  74 2B 78 3A 50 4F 4B 45 20 73 74 2B 64 2C 78 3A    t+x:POKE st+d,x:
01E540:  64 3D 64 2B 31 3A 4E 45 58 54 0D 0A 20 36 30 20    d=d+1:NEXT.. 60 
01E550:  52 45 41 44 20 61 24 3A 49 46 20 56 41 4C 28 22    READ a$:IF VAL("
01E560:  26 22 2B 61 24 29 3D 74 20 54 48 45 4E 20 4E 45    &"+a$)=t THEN NE
01E570:  58 54 20 45 4C 53 45 20 50 52 49 4E 54 22 45 72    XT ELSE PRINT"Er
01E580:  72 6F 72 20 69 6E 20 6C 69 6E 65 22 31 30 2A 6E    ror in line"10*n
01E590:  2B 39 30 3A 53 54 4F 50 0D 0A 20 37 30 20 46 4F    +90:STOP.. 70 FO
01E5A0:  52 20 6E 3D 30 20 54 4F 20 32 3A 50 4F 4B 45 20    R n=0 TO 2:POKE 
01E5B0:  73 74 2B 32 36 2B 6E 2C 50 45 45 4B 28 26 41 43    st+26+n,PEEK(&AC
01E5C0:  30 34 2B 6E 29 3A 4E 45 58 54 0D 0A 20 38 30 20    04+n):NEXT.. 80 
01E5D0:  43 41 4C 4C 20 73 74 2B 33 39 2C 73 74 3A 43 4C    CALL st+39,st:CL
01E5E0:  53 3A 50 52 49 4E 54 22 52 53 58 20 73 74 72 69    S:PRINT"RSX stri
01E5F0:  6E 67 73 20 75 74 69 6C 69 74 79 20 69 6E 73 74    ngs utility inst
01E600:  61 6C 6C 65 64 20 61 74 20 26 22 48 45 58 24 28    alled at &"HEX$(
01E610:  73 74 2C 34 29 22 2E 22 0D 0A 20 39 30 20 44 41    st,4)".".. 90 DA
01E620:  54 41 20 37 62 2C 66 65 2C 30 64 2C 32 30 2C 31    TA 7b,fe,0d,20,1
01E630:  34 2C 65 31 2C 64 31 2C 64 35 2C 65 35 2C 35 32    4,e1,d1,d5,e5,52
01E640:  36 0D 0A 31 30 30 20 44 41 54 41 20 32 31 2C 33    6..100 DATA 21,3
01E650:  62 2C 30 31 2C 31 39 2C 32 30 2C 30 61 2C 33 65    b,01,19,20,0a,3e
01E660:  2C 30 32 2C 33 32 2C 31 31 32 0D 0A 31 31 30 20    ,02,32,112..110 
01E670:  44 41 54 41 20 63 31 2C 62 30 2C 65 31 2C 32 61    DATA c1,b0,e1,2a
01E680:  2C 63 32 2C 62 30 2C 33 37 2C 35 66 2C 63 39 2C    ,c2,b0,37,5f,c9,
01E690:  35 34 64 0D 0A 31 32 30 20 44 41 54 41 20 63 39    54d..120 DATA c9
01E6A0:  2C 63 39 2C 32 31 2C 39 63 2C 62 30 2C 32 32 2C    ,c9,21,9c,b0,22,
01E6B0:  39 61 2C 62 30 2C 62 37 2C 35 32 32 0D 0A 31 33    9a,b0,b7,522..13
01E6C0:  30 20 44 41 54 41 20 30 38 2C 64 39 2C 63 39 2C    0 DATA 08,d9,c9,
01E6D0:  33 65 2C 63 33 2C 33 32 2C 30 34 2C 61 63 2C 65    3e,c3,32,04,ac,e
01E6E0:  62 2C 34 37 38 0D 0A 31 34 30 20 44 41 54 41 20    b,478..140 DATA 
01E6F0:  32 32 2C 30 35 2C 61 63 2C 33 65 2C 63 64 2C 33    22,05,ac,3e,cd,3
01E700:  73 20 74 6F 20 72 65 73 65 72 76 65 20 74 68 65    s to reserve the
01E710:  20 66 69 6C 65 20 62 75 66 66 65 72 73 20 61 74     file buffers at
01E720:  20 74 68 65 20 73 74 61 72 74 0D 0A 20 20 20 6F     the start..   o
01E730:  66 20 74 68 65 20 70 72 6F 67 72 61 6D 2C 20 73    f the program, s
01E740:  6F 20 74 68 61 74 20 74 68 65 79 20 61 72 65 20    o that they are 
01E750:  20 61 6C 77 61 79 73 20 61 76 61 69 6C 61 62 6C     always availabl
01E760:  65 20 61 6E 64 20 42 41 53 49 43 20 64 6F 65 73    e and BASIC does
01E770:  20 6E 6F 74 20 68 61 76 65 0D 0A 20 20 20 74 6F     not have..   to
01E780:  20 77 61 73 74 65 20 74 69 6D 65 20 67 61 72 62     waste time garb
01E790:  61 67 65 20 63 6F 6C 6C 65 63 74 69 6E 67 20 65    age collecting e
01E7A0:  61 63 68 20 74 69 6D 65 20 20 61 20 66 69 6C 65    ach time  a file
01E7B0:  20 69 73 20 6F 70 65 6E 65 64 2E 20 20 54 6F 20     is opened.  To 
01E7C0:  64 6F 20 74 68 69 73 2C 0D 0A 20 20 20 6A 75 73    do this,..   jus
01E7D0:  74 20 69 6E 73 65 72 74 20 74 68 65 20 66 6F 6C    t insert the fol
01E7E0:  6C 6F 77 69 6E 67 20 63 6F 6D 6D 61 6E 64 73 20    lowing commands 
01E7F0:  61 74 20 74 68 65 20 73 74 61 72 74 20 6F 66 20    at the start of 
01E800:  61 20 70 72 6F 67 72 61 6D 3A 0D 0A 0D 0A 20 20    a program:....  
01E810:  20 20 20 53 59 4D 42 4F 4C 20 41 46 54 45 52 20       SYMBOL AFTER 
01E820:  32 35 36 3A 4F 50 45 4E 4F 55 54 22 64 22 3A 53    256:OPENOUT"d":S
01E830:  59 4D 42 4F 4C 20 41 46 54 45 52 20 32 34 30 3A    YMBOL AFTER 240:
01E840:  43 4C 4F 53 45 4F 55 54 0D 0A 0D 0A 20 20 20 41    CLOSEOUT....   A
01E850:  66 74 65 72 20 20 6F 70 65 6E 69 6E 67 20 20 6F    fter  opening  o
01E860:  75 74 20 20 61 20 20 64 75 6D 6D 79 20 20 66 69    ut  a  dummy  fi
01E870:  6C 65 2C 20 20 20 77 65 20 20 72 65 69 6E 73 74    le,   we  reinst
01E880:  61 74 65 20 20 74 68 65 20 20 75 73 65 72 20 20    ate  the  user  
01E890:  64 65 66 69 6E 61 62 6C 65 0D 0A 20 20 20 63 68    definable..   ch
01E8A0:  61 72 61 63 74 65 72 73 2C 20 77 68 69 63 68 20    aracters, which 
01E8B0:  6C 6F 77 65 72 73 20 74 68 65 20 20 6C 65 76 65    lowers the  leve
01E8C0:  6C 20 20 6F 66 20 20 48 49 4D 45 4D 2C 20 20 74    l  of  HIMEM,  t
01E8D0:  72 61 70 70 69 6E 67 20 20 74 68 65 20 66 69 6C    rapping  the fil
01E8E0:  65 20 62 75 66 66 65 72 0D 0A 20 20 20 61 62 6F    e buffer..   abo
01E8F0:  76 65 20 69 74 2C 20 73 6F 20 74 68 61 74 20 77    ve it, so that w
01E900:  20 20 31 20 52 45 4D 20 52 53 58 20 73 74 72 69      1 REM RSX stri
01E910:  6E 67 73 20 62 79 20 44 6F 6D 69 6E 69 63 20 57    ngs by Dominic W
01E920:  69 73 65 2C 20 41 6D 73 74 72 61 64 20 41 63 74    ise, Amstrad Act
01E930:  69 6F 6E 20 35 33 2C 20 34 36 34 20 6F 6E 6C 79    ion 53, 464 only
01E940:  0D 0A 20 20 32 20 52 45 4D 20 41 6C 6C 6F 77 73    ..  2 REM Allows
01E950:  20 61 6C 6C 20 73 74 72 69 6E 67 20 65 78 70 72     all string expr
01E960:  65 73 73 69 6F 6E 73 20 74 6F 20 62 65 20 70 61    essions to be pa
01E970:  73 73 65 64 20 74 6F 20 52 53 58 73 20 61 6E 64    ssed to RSXs and
01E980:  20 43 41 4C 4C 20 73 74 61 74 65 6D 65 6E 74 73     CALL statements
01E990:  0D 0A 20 31 30 20 4D 4F 44 45 20 32 0D 0A 20 32    .. 10 MODE 2.. 2
01E9A0:  30 20 49 4E 50 55 54 22 41 73 73 65 6D 62 6C 65    0 INPUT"Assemble
01E9B0:  20 74 6F 20 26 42 45 43 30 3F 22 2C 61 24 3A 49     to &BEC0?",a$:I
01E9C0:  46 20 55 50 50 45 52 24 28 61 24 29 3D 22 59 22    F UPPER$(a$)="Y"
01E9D0:  20 54 48 45 4E 20 73 74 3D 26 42 45 43 30 3A 47     THEN st=&BEC0:G
01E9E0:  4F 54 4F 20 34 30 0D 0A 20 33 30 20 49 4E 50 55    OTO 40.. 30 INPU
01E9F0:  54 22 41 73 73 65 6D 62 6C 79 20 61 64 64 72 65    T"Assembly addre
01EA00:  73 73 3F 22 2C 61 24 3A 73 74 3D 56 41 4C 28 61    ss?",a$:st=VAL(a
01EA10:  24 29 3A 49 46 20 73 74 3C 3D 48 49 4D 45 4D 20    $):IF st<=HIMEM 
01EA20:  74 68 65 6D 20 4D 45 4D 4F 52 59 20 73 74 2D 31    them MEMORY st-1
01EA30:  0D 0A 20 34 30 20 46 4F 52 20 6E 3D 30 20 54 4F    .. 40 FOR n=0 TO
01EA40:  20 36 3A 74 3D 30 0D 0A 20 35 30 20 46 4F 52 20     6:t=0.. 50 FOR 
01EA50:  6D 3D 30 20 54 4F 20 38 3A 52 45 41 44 20 61 24    m=0 TO 8:READ a$
01EA60:  3A 78 3D 56 41 4C 28 22 26 22 2B 61 24 29 3A 74    :x=VAL("&"+a$):t
01EA70:  3D 74 2B 78 3A 50 4F 4B 45 20 73 74 2B 64 2C 78    =t+x:POKE st+d,x
01EA80:  3A 64 3D 64 2B 31 3A 4E 45 58 54 0D 0A 20 36 30    :d=d+1:NEXT.. 60
01EA90:  20 52 45 41 44 20 61 24 3A 49 46 20 56 41 4C 28     READ a$:IF VAL(
01EAA0:  22 26 22 2B 61 24 29 3D 74 20 54 48 45 4E 20 4E    "&"+a$)=t THEN N
01EAB0:  45 58 54 20 45 4C 53 45 20 50 52 49 4E 54 22 45    EXT ELSE PRINT"E
01EAC0:  72 72 6F 72 20 69 6E 20 6C 69 6E 65 22 31 30 2A    rror in line"10*
01EAD0:  6E 2B 39 30 3A 53 54 4F 50 0D 0A 20 37 30 20 46    n+90:STOP.. 70 F
01EAE0:  4F 52 20 6E 3D 30 20 54 4F 20 32 3A 50 4F 4B 45    OR n=0 TO 2:POKE
01EAF0:  20 73 74 2B 32 36 2B 6E 2C 50 45 45 4B 28 26 41     st+26+n,PEEK(&A
01EB00:  68 65 6E 20 20 74 68 65 20 20 43 4C 4F 53 45 4F    hen  the  CLOSEO
01EB10:  55 54 20 20 63 6F 6D 6D 61 6E 64 20 20 61 72 72    UT  command  arr
01EB20:  69 76 65 73 20 42 41 53 49 43 20 69 73 20 75 6E    ives BASIC is un
01EB30:  61 62 6C 65 20 74 6F 0D 0A 20 20 20 72 65 74 75    able to..   retu
01EB40:  72 6E 20 74 68 65 20 66 69 6C 65 20 62 75 66 66    rn the file buff
01EB50:  65 72 20 74 6F 20 6E 6F 72 6D 61 6C 20 75 73 65    er to normal use
01EB60:  2E 20 20 20 49 66 20 20 74 68 65 20 70 72 6F 67    .   If  the prog
01EB70:  72 61 6D 20 68 61 73 20 61 20 53 59 4D 42 4F 4C    ram has a SYMBOL
01EB80:  20 41 46 54 45 52 0D 0A 20 20 20 73 74 61 74 65     AFTER..   state
01EB90:  6D 65 6E 74 20 69 6E 20 69 74 20 61 6C 72 65 61    ment in it alrea
01EBA0:  64 79 2C 20 74 68 65 6E 20 79 6F 75 20 63 61 6E    dy, then you can
01EBB0:  20 20 70 75 74 20 74 68 65 20 4F 50 45 4E 4F 55      put the OPENOU
01EBC0:  54 20 61 6E 64 20 43 4C 4F 53 45 4F 55 54 20 61    T and CLOSEOUT a
01EBD0:  72 6F 75 6E 64 0D 0A 20 20 20 74 68 61 74 2E 0D    round..   that..
01EBE0:  0A 0D 0A 20 20 20 54 68 65 20 73 61 6D 65 20 6D    ...   The same m
01EBF0:  65 74 68 6F 64 20 77 6F 72 6B 73 20 6F 6E 20 74    ethod works on t
01EC00:  68 65 20 36 36 34 2F 36 31 32 38 2C 20 61 6E 64    he 664/6128, and
01EC10:  20 69 66 20 61 20 70 72 6F 67 72 61 6D 20 6E 65     if a program ne
01EC20:  65 64 73 20 66 69 6C 65 20 61 63 63 65 73 73 2C    eds file access,
01EC30:  0D 0A 20 20 20 69 74 20 64 6F 65 73 6E 27 74 20    ..   it doesn't 
01EC40:  64 6F 20 61 6E 79 20 68 61 72 6D 20 74 6F 20 72    do any harm to r
01EC50:  65 73 65 72 76 65 20 74 68 65 20 62 75 66 66 65    eserve the buffe
01EC60:  72 20 69 6E 20 72 65 61 64 69 6E 65 73 73 2E 0D    r in readiness..
01EC70:  0A 0D 0A 20 20 20 41 6E 6F 74 68 65 72 20 62 75    ...   Another bu
01EC80:  67 20 6F 6E 20 74 68 65 20 34 36 34 20 72 65 6C    g on the 464 rel
01EC90:  61 74 65 73 20 20 74 6F 20 20 6C 6F 61 64 69 6E    ates  to  loadin
01ECA0:  67 20 20 62 69 6E 61 72 79 20 66 69 6C 65 73 2E    g  binary files.
01ECB0:  20 20 49 66 20 79 6F 75 20 68 61 76 65 6E 27 74      If you haven't
01ECC0:  0D 0A 20 20 20 72 65 73 65 72 76 65 64 20 61 20    ..   reserved a 
01ECD0:  66 69 6C 65 20 62 75 66 66 65 72 20 61 73 20 64    file buffer as d
01ECE0:  65 73 63 72 69 62 65 64 20 20 61 6E 64 20 20 6C    escribed  and  l
01ECF0:  6F 61 64 20 20 61 20 62 69 6E 61 72 79 20 66 69    oad  a binary fi
01ED00:  43 30 34 2B 6E 29 3A 4E 45 58 54 0D 0A 20 38 30    C04+n):NEXT.. 80
01ED10:  20 43 41 4C 4C 20 73 74 2B 33 39 2C 73 74 3A 43     CALL st+39,st:C
01ED20:  4C 53 3A 50 52 49 4E 54 22 52 53 58 20 73 74 72    LS:PRINT"RSX str
01ED30:  69 6E 67 73 20 75 74 69 6C 69 74 79 20 69 6E 73    ings utility ins
01ED40:  74 61 6C 6C 65 64 20 61 74 20 26 22 48 45 58 24    talled at &"HEX$
01ED50:  28 73 74 2C 34 29 22 2E 22 0D 0A 20 39 30 20 44    (st,4)".".. 90 D
01ED60:  41 54 41 20 37 62 2C 66 65 2C 30 64 2C 32 30 2C    ATA 7b,fe,0d,20,
01ED70:  31 34 2C 65 31 2C 64 31 2C 64 35 2C 65 35 2C 35    14,e1,d1,d5,e5,5
01ED80:  32 36 0D 0A 31 30 30 20 44 41 54 41 20 32 31 2C    26..100 DATA 21,
01ED90:  33 62 2C 30 31 2C 31 39 2C 32 30 2C 30 61 2C 33    3b,01,19,20,0a,3
01EDA0:  65 2C 30 32 2C 33 32 2C 31 31 32 0D 0A 31 31 30    e,02,32,112..110
01EDB0:  20 44 41 54 41 20 63 31 2C 62 30 2C 65 31 2C 32     DATA c1,b0,e1,2
01EDC0:  61 2C 63 32 2C 62 30 2C 33 37 2C 35 66 2C 63 39    a,c2,b0,37,5f,c9
01EDD0:  2C 35 34 64 0D 0A 31 32 30 20 44 41 54 41 20 63    ,54d..120 DATA c
01EDE0:  39 2C 63 39 2C 32 31 2C 39 63 2C 62 30 2C 32 32    9,c9,21,9c,b0,22
01EDF0:  2C 39 61 2C 62 30 2C 62 37 2C 35 32 32 0D 0A 31    ,9a,b0,b7,522..1
01EE00:  33 30 20 44 41 54 41 20 30 38 2C 64 39 2C 63 39    30 DATA 08,d9,c9
01EE10:  2C 33 65 2C 63 33 2C 33 32 2C 30 34 2C 61 63 2C    ,3e,c3,32,04,ac,
01EE20:  65 62 2C 34 37 38 0D 0A 31 34 30 20 44 41 54 41    eb,478..140 DATA
01EE30:  20 32 32 2C 30 35 2C 61 63 2C 33 65 2C 63 64 2C     22,05,ac,3e,cd,
01EE40:  33 32 2C 61 63 2C 62 39 2C 31 31 2C 33 38 36 0D    32,ac,b9,11,386.
01EE50:  0A 31 35 30 20 44 41 54 41 20 31 64 2C 30 30 2C    .150 DATA 1d,00,
01EE60:  31 39 2C 32 32 2C 61 64 2C 62 39 2C 63 39 2C 30    19,22,ad,b9,c9,0
01EE70:  30 2C 30 30 2C 32 38 37 0D 0A 1A 20 61 6E 64 20    0,00,287... and 
01EE80:  3A 64 3D 64 2B 31 3A 4E 45 58 54 0D 0A 20 36 30    :d=d+1:NEXT.. 60
01EE90:  20 52 45 41 44 20 61 24 3A 49 46 20 56 41 4C 28     READ a$:IF VAL(
01EEA0:  22 26 22 2B 61 24 29 3D 74 20 54 48 45 4E 20 4E    "&"+a$)=t THEN N
01EEB0:  45 58 54 20 45 4C 53 45 20 50 52 49 4E 54 22 45    EXT ELSE PRINT"E
01EEC0:  72 72 6F 72 20 69 6E 20 6C 69 6E 65 22 31 30 2A    rror in line"10*
01EED0:  6E 2B 39 30 3A 53 54 4F 50 0D 0A 20 37 30 20 46    n+90:STOP.. 70 F
01EEE0:  4F 52 20 6E 3D 30 20 54 4F 20 32 3A 50 4F 4B 45    OR n=0 TO 2:POKE
01EEF0:  20 73 74 2B 32 36 2B 6E 2C 50 45 45 4B 28 26 41     st+26+n,PEEK(&A
01EF00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01EF10:  1A 00 01 00 02 09 4E E5 1A 00 C8 02 00 00 00 02    ......N.........
01EF20:  1A 00 C4 02 00 00 00 02 1A 00 C9 02 00 00 00 02    ................
01EF30:  1A 00 C5 02 00 00 00 02 1A 00 C1 02 00 00 00 02    ................
01EF40:  1A 00 C6 02 00 00 00 02 1A 00 C2 02 00 00 00 02    ................
01EF50:  1A 00 C7 02 00 00 00 02 1A 00 C3 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:  2C 6A 29 3A 4E 45 58 54 3A 4E 45 58 54 0D 0A 37    ,j):NEXT:NEXT..7
01F010:  34 30 20 43 4C 4F 53 45 4F 55 54 3A 52 45 54 55    40 CLOSEOUT:RETU
01F020:  52 4E 0D 0A 1A 2D 31 3A 43 4C 4F 53 45 4F 55 54    RN...-1:CLOSEOUT
01F030:  0D 0A 32 30 20 6D 77 6F 72 64 73 3D 33 30 30 3A    ..20 mwords=300:
01F040:  6D 6C 69 6E 6B 73 3D 32 30 3A 6E 77 6F 72 64 73    mlinks=20:nwords
01F050:  3D 30 0D 0A 33 30 20 44 49 4D 20 77 24 28 6D 77    =0..30 DIM w$(mw
01F060:  6F 72 64 73 29 2C 6C 6B 28 6D 77 6F 72 64 73 2C    ords),lk(mwords,
01F070:  6D 6C 69 6E 6B 73 29 2C 74 65 6D 70 77 24 28 31    mlinks),tempw$(1
01F080:  77 6F 72 64 2C 69 29 3A 52 45 54 55 52 4E 0D 0A    word,i):RETURN..
01F090:  36 30 30 20 66 69 6C 65 24 3D 4D 49 44 24 28 61    600 file$=MID$(a
01F0A0:  24 2C 37 29 3A 49 46 20 66 69 6C 65 24 3D 22 22    $,7):IF file$=""
01F0B0:  20 54 48 45 4E 20 66 69 6C 65 24 3D 22 56 4F 43     THEN file$="VOC
01F0C0:  41 42 22 0D 0A 36 31 30 20 4F 50 45 4E 49 4E 20    AB"..610 OPENIN 
01F0D0:  66 69 6C 65 24 3A 49 4E 50 55 54 23 39 2C 6E 77    file$:INPUT#9,nw
01F0E0:  6F 72 64 73 0D 0A 36 32 30 20 46 4F 52 20 69 3D    ords..620 FOR i=
01F0F0:  30 20 54 4F 20 6E 77 6F 72 64 73 3A 49 4E 50 55    0 TO nwords:INPU
01F100:  54 23 39 2C 77 24 28 69 29 2C 6C 6B 28 69 2C 30    T#9,w$(i),lk(i,0
01F110:  29 0D 0A 36 33 30 20 46 4F 52 20 6A 3D 31 20 54    )..630 FOR j=1 T
01F120:  4F 20 6C 6B 28 69 2C 30 29 3A 49 4E 50 55 54 23    O lk(i,0):INPUT#
01F130:  39 2C 6C 6B 28 69 2C 6A 29 3A 4E 45 58 54 3A 4E    9,lk(i,j):NEXT:N
01F140:  45 58 54 0D 0A 36 34 30 20 43 4C 4F 53 45 49 4E    EXT..640 CLOSEIN
01F150:  3A 52 45 54 55 52 4E 0D 0A 37 30 30 20 66 69 6C    :RETURN..700 fil
01F160:  65 24 3D 4D 49 44 24 28 61 24 2C 37 29 3A 49 46    e$=MID$(a$,7):IF
01F170:  20 66 69 6C 65 24 3D 22 22 20 54 48 45 4E 20 66     file$="" THEN f
01F180:  69 6C 65 24 3D 22 56 4F 43 41 42 22 0D 0A 37 31    ile$="VOCAB"..71
01F190:  30 20 4F 50 45 4E 4F 55 54 20 66 69 6C 65 24 3A    0 OPENOUT file$:
01F1A0:  57 52 49 54 45 23 39 2C 6E 77 6F 72 64 73 0D 0A    WRITE#9,nwords..
01F1B0:  37 32 30 20 46 4F 52 20 69 3D 30 20 54 4F 20 6E    720 FOR i=0 TO n
01F1C0:  77 6F 72 64 73 3A 57 52 49 54 45 23 39 2C 77 24    words:WRITE#9,w$
01F1D0:  28 69 29 2C 6C 6B 28 69 2C 30 29 0D 0A 37 33 30    (i),lk(i,0)..730
01F1E0:  20 46 4F 52 20 6A 3D 31 20 54 4F 20 6C 6B 28 69     FOR j=1 TO lk(i
01F1F0:  2C 30 29 3A 57 52 49 54 45 23 39 2C 6C 6B 28 69    ,0):WRITE#9,lk(i
01F200:  74 68 65 6D 0D 0A 41 72 74 69 63 6C 65 20 31 32    them..Article 12
01F210:  20 20 20 2D 20 6F 74 68 65 72 20 4D 49 44 49 20       - other MIDI 
01F220:  6D 65 73 73 61 67 65 73 2C 20 61 6E 64 20 61 20    messages, and a 
01F230:  70 72 6F 67 72 61 6D 20 74 6F 20 70 6C 61 79 20    program to play 
01F240:  61 20 74 75 6E 65 0D 0A 41 72 74 69 63 6C 65 20    a tune..Article 
01F250:  31 33 20 2D 20 68 6F 77 20 74 6F 20 61 64 61 70    13 - how to adap
01F260:  74 20 36 31 32 38 20 70 72 6F 67 72 61 6D 73 20    t 6128 programs 
01F270:  66 6F 72 20 74 68 65 20 34 36 34 2C 20 77 69 74    for the 464, wit
01F280:  68 20 61 6E 20 52 53 58 20 74 6F 20 68 65 6C 70    h an RSX to help
01F290:  0D 0A 41 72 74 69 63 6C 65 20 31 34 20 20 20 2D    ..Article 14   -
01F2A0:  20 63 6F 6D 6D 61 6E 64 73 20 61 64 64 65 64 20     commands added 
01F2B0:  69 6E 20 42 41 53 49 43 20 31 2E 31 2C 20 61 6E    in BASIC 1.1, an
01F2C0:  64 20 77 68 61 74 20 74 6F 20 64 6F 20 77 69 74    d what to do wit
01F2D0:  68 20 6D 6F 73 74 20 6F 66 20 74 68 65 6D 0D 0A    h most of them..
01F2E0:  41 72 74 69 63 6C 65 20 31 35 20 20 20 2D 20 62    Article 15   - b
01F2F0:  75 67 73 20 69 6E 20 34 36 34 20 42 41 53 49 43    ugs in 464 BASIC
01F300:  2C 20 61 6E 64 20 68 6F 77 20 74 6F 20 64 65 61    , and how to dea
01F310:  6C 20 77 69 74 68 20 74 68 65 6D 0D 0A 0D 0A 4F    l with them....O
01F320:  74 68 65 72 20 66 69 6C 65 73 20 6F 6E 20 62 6F    ther files on bo
01F330:  74 68 20 73 69 64 65 73 20 6F 66 20 74 68 65 20    th sides of the 
01F340:  64 69 73 63 3A 0D 0A 0D 0A 44 49 53 43 09 2E 42    disc:....DISC..B
01F350:  41 53 09 72 75 6E 73 20 74 68 65 20 4C 6F 6F 6D    AS.runs the Loom
01F360:  20 68 79 70 65 72 74 65 78 74 20 76 69 65 77 65     hypertext viewe
01F370:  72 0D 0A 48 45 4C 50 09 2E 54 58 54 09 74 68 65    r..HELP..TXT.the
01F380:  20 68 65 6C 70 20 74 65 78 74 20 66 6F 72 20 4C     help text for L
01F390:  6F 6F 6D 0D 0A 4C 49 4E 4B 42 41 53 45 2E 54 58    oom..LINKBASE.TX
01F3A0:  54 09 74 68 65 20 6C 69 6E 6B 61 67 65 20 64 61    T.the linkage da
01F3B0:  74 61 20 66 6F 72 20 4C 6F 6F 6D 0D 0A 4C 4F 4F    ta for Loom..LOO
01F3C0:  4D 09 2E 42 49 4E 09 74 68 65 20 4C 6F 6F 6D 20    M..BIN.the Loom 
01F3D0:  70 72 6F 67 72 61 6D 0D 0A 4D 45 53 53 41 47 45    program..MESSAGE
01F3E0:  53 2E 54 58 54 09 74 68 65 20 6D 65 73 73 61 67    S.TXT.the messag
01F3F0:  65 20 74 65 78 74 73 20 66 6F 72 20 4C 6F 6F 6D    e texts for Loom
01F400:  23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61    #Programmers' Pa
01F410:  74 63 68 20 31 36 20 2D 20 57 41 43 43 49 20 31    tch 16 - WACCI 1
01F420:  32 35 2C 20 4F 63 74 20 31 39 39 38 2C 20 70 2E    25, Oct 1998, p.
01F430:  20 32 32 2D 32 34 0D 0A 20 20 20 50 52 4F 47 52     22-24..   PROGR
01F440:  41 4D 4D 45 52 53 27 20 50 41 54 43 48 20 31 36    AMMERS' PATCH 16
01F450:  0D 0A 20 20 20 42 79 20 48 69 6C 61 72 79 20 50    ..   By Hilary P
01F460:  68 69 6C 6C 69 70 73 0D 0A 0D 0A 20 20 20 49 6E    hillips....   In
01F470:  20 79 6F 75 72 20 6D 6F 72 65 20 69 64 6C 65 20     your more idle 
01F480:  20 61 6E 64 20 20 6C 6F 6E 65 6C 79 20 20 6D 6F     and  lonely  mo
01F490:  6D 65 6E 74 73 20 20 79 6F 75 20 20 6D 61 79 20    ments  you  may 
01F4A0:  20 68 61 76 65 20 20 77 61 6E 74 65 64 20 20 74     have  wanted  t
01F4B0:  6F 20 68 6F 6C 64 20 61 0D 0A 20 20 20 63 6F 6E    o hold a..   con
01F4C0:  76 65 72 73 61 74 69 6F 6E 20 77 69 74 68 20 79    versation with y
01F4D0:  6F 75 72 20 20 63 6F 6D 70 75 74 65 72 2E 20 20    our  computer.  
01F4E0:  20 4D 75 63 68 20 20 6F 66 20 20 74 68 65 20 20     Much  of  the  
01F4F0:  74 69 6D 65 2C 20 20 68 6F 77 65 76 65 72 2C 20    time,  however, 
01F500:  69 74 20 77 69 6C 6C 0D 0A 20 20 20 73 69 6D 70    it will..   simp
01F510:  6C 79 20 20 72 65 73 70 6F 6E 64 20 20 74 6F 20    ly  respond  to 
01F520:  20 79 6F 75 72 20 20 72 65 6D 61 72 6B 73 20 20     your  remarks  
01F530:  77 69 74 68 20 20 20 22 53 79 6E 74 61 78 20 20    with   "Syntax  
01F540:  65 72 72 6F 72 22 2E 20 20 20 46 6F 72 20 20 61    error".   For  a
01F550:  20 20 6D 6F 72 65 0D 0A 20 20 20 73 74 69 6D 75      more..   stimu
01F560:  6C 61 74 69 6E 67 20 65 78 63 68 61 6E 67 65 20    lating exchange 
01F570:  20 79 6F 75 20 20 63 6F 75 6C 64 20 20 74 72 79     you  could  try
01F580:  20 20 6F 6E 65 20 20 6F 66 20 20 74 68 65 20 20      one  of  the  
01F590:  70 73 79 63 68 69 61 74 72 69 63 20 69 6E 74 65    psychiatric inte
01F5A0:  72 76 69 65 77 0D 0A 20 20 20 70 72 6F 67 72 61    rview..   progra
01F5B0:  6D 73 20 61 76 61 69 6C 61 62 6C 65 20 69 6E 20    ms available in 
01F5C0:  74 68 65 20 50 44 20 6C 69 62 72 61 72 79 2C 20    the PD library, 
01F5D0:  20 62 75 74 20 20 69 66 20 79 6F 75 27 72 65 20     but  if you're 
01F5E0:  61 6E 79 74 68 69 6E 67 20 6C 69 6B 65 20 6D 65    anything like me
01F5F0:  20 79 6F 75 0D 0A 20 20 20 67 65 74 20 73 69 63     you..   get sic
01F600:  31 30 20 44 45 46 49 4E 54 20 61 2D 7A 3A 4F 50    10 DEFINT a-z:OP
01F610:  45 4E 4F 55 54 22 64 22 3A 4D 45 4D 4F 52 59 20    ENOUT"d":MEMORY 
01F620:  48 49 4D 45 4D 2D 31 3A 43 4C 4F 53 45 4F 55 54    HIMEM-1:CLOSEOUT
01F630:  0D 0A 32 30 20 6D 77 6F 72 64 73 3D 33 30 30 3A    ..20 mwords=300:
01F640:  6D 6C 69 6E 6B 73 3D 32 30 3A 6E 77 6F 72 64 73    mlinks=20:nwords
01F650:  3D 30 0D 0A 33 30 20 44 49 4D 20 77 24 28 6D 77    =0..30 DIM w$(mw
01F660:  6F 72 64 73 29 2C 6C 6B 28 6D 77 6F 72 64 73 2C    ords),lk(mwords,
01F670:  6D 6C 69 6E 6B 73 29 2C 74 65 6D 70 77 24 28 31    mlinks),tempw$(1
01F680:  32 38 29 0D 0A 34 30 20 4C 49 4E 45 20 49 4E 50    28)..40 LINE INP
01F690:  55 54 22 22 2C 61 24 0D 0A 34 31 20 49 46 20 55    UT"",a$..41 IF U
01F6A0:  50 50 45 52 24 28 4C 45 46 54 24 28 61 24 2C 35    PPER$(LEFT$(a$,5
01F6B0:  29 29 3D 22 2A 4C 4F 41 44 22 20 54 48 45 4E 20    ))="*LOAD" THEN 
01F6C0:  47 4F 53 55 42 20 36 30 30 3A 47 4F 54 4F 20 34    GOSUB 600:GOTO 4
01F6D0:  30 0D 0A 34 32 20 49 46 20 55 50 50 45 52 24 28    0..42 IF UPPER$(
01F6E0:  4C 45 46 54 24 28 61 24 2C 35 29 29 3D 22 2A 53    LEFT$(a$,5))="*S
01F6F0:  41 56 45 22 20 54 48 45 4E 20 47 4F 53 55 42 20    AVE" THEN GOSUB 
01F700:  37 30 30 3A 47 4F 54 4F 20 34 30 0D 0A 35 30 20    700:GOTO 40..50 
01F710:  77 63 6F 75 6E 74 3D 30 3A 47 4F 53 55 42 20 33    wcount=0:GOSUB 3
01F720:  30 30 3A 49 46 20 61 24 3C 3E 22 22 20 54 48 45    00:IF a$<>"" THE
01F730:  4E 20 47 4F 53 55 42 20 31 30 30 0D 0A 36 30 20    N GOSUB 100..60 
01F740:  47 4F 53 55 42 20 32 30 30 3A 47 4F 54 4F 20 34    GOSUB 200:GOTO 4
01F750:  30 0D 0A 31 30 30 20 57 48 49 4C 45 20 49 4E 53    0..100 WHILE INS
01F760:  54 52 28 61 24 2C 22 20 22 29 3E 30 3A 61 3D 49    TR(a$," ")>0:a=I
01F770:  4E 53 54 52 28 61 24 2C 22 20 22 29 0D 0A 31 31    NSTR(a$," ")..11
01F780:  30 20 74 65 6D 70 77 24 28 77 63 6F 75 6E 74 29    0 tempw$(wcount)
01F790:  3D 4C 45 46 54 24 28 61 24 2C 61 2D 31 29 3A 61    =LEFT$(a$,a-1):a
01F7A0:  24 3D 4D 49 44 24 28 61 24 2C 61 2B 31 29 0D 0A    $=MID$(a$,a+1)..
01F7B0:  31 32 30 20 77 63 6F 75 6E 74 3D 77 63 6F 75 6E    120 wcount=wcoun
01F7C0:  74 2B 31 3A 47 4F 53 55 42 20 33 30 30 3A 57 45    t+1:GOSUB 300:WE
01F7D0:  4E 44 0D 0A 31 33 30 20 49 46 20 61 24 3C 3E 22    ND..130 IF a$<>"
01F7E0:  22 20 54 48 45 4E 20 74 65 6D 70 77 24 28 77 63    " THEN tempw$(wc
01F7F0:  6F 75 6E 74 29 3D 61 24 3A 77 63 6F 75 6E 74 3D    ount)=a$:wcount=
01F800:  31 30 20 44 45 46 49 4E 54 20 61 2D 7A 3A 4F 50    10 DEFINT a-z:OP
01F810:  45 4E 4F 55 54 22 64 22 3A 4D 45 4D 4F 52 59 20    ENOUT"d":MEMORY 
01F820:  48 49 4D 45 4D 2D 31 3A 43 4C 4F 53 45 4F 55 54    HIMEM-1:CLOSEOUT
01F830:  0D 0A 32 30 20 6D 77 6F 72 64 73 3D 33 30 30 3A    ..20 mwords=300:
01F840:  6D 6C 69 6E 6B 73 3D 32 30 3A 6E 77 6F 72 64 73    mlinks=20:nwords
01F850:  3D 30 0D 0A 33 30 20 44 49 4D 20 77 24 28 6D 77    =0..30 DIM w$(mw
01F860:  6F 72 64 73 29 2C 6C 6B 28 6D 77 6F 72 64 73 2C    ords),lk(mwords,
01F870:  6D 6C 69 6E 6B 73 29 2C 74 65 6D 70 77 24 28 31    mlinks),tempw$(1
01F880:  32 38 29 0D 0A 34 30 20 4C 49 4E 45 20 49 4E 50    28)..40 LINE INP
01F890:  55 54 22 22 2C 61 24 0D 0A 35 30 20 77 63 6F 75    UT"",a$..50 wcou
01F8A0:  6E 74 3D 30 3A 47 4F 53 55 42 20 33 30 30 3A 49    nt=0:GOSUB 300:I
01F8B0:  46 20 61 24 3C 3E 22 22 20 54 48 45 4E 20 47 4F    F a$<>"" THEN GO
01F8C0:  53 55 42 20 31 30 30 0D 0A 36 30 20 47 4F 53 55    SUB 100..60 GOSU
01F8D0:  42 20 32 30 30 3A 47 4F 54 4F 20 34 30 0D 0A 31    B 200:GOTO 40..1
01F8E0:  30 30 20 57 48 49 4C 45 20 49 4E 53 54 52 28 61    00 WHILE INSTR(a
01F8F0:  24 2C 22 20 22 29 3E 30 3A 61 3D 49 4E 53 54 52    $," ")>0:a=INSTR
01F900:  28 61 24 2C 22 20 22 29 0D 0A 31 31 30 20 74 65    (a$," ")..110 te
01F910:  6D 70 77 24 28 77 63 6F 75 6E 74 29 3D 4C 45 46    mpw$(wcount)=LEF
01F920:  54 24 28 61 24 2C 61 2D 31 29 3A 61 24 3D 4D 49    T$(a$,a-1):a$=MI
01F930:  44 24 28 61 24 2C 61 2B 31 29 0D 0A 31 32 30 20    D$(a$,a+1)..120 
01F940:  77 63 6F 75 6E 74 3D 77 63 6F 75 6E 74 2B 31 3A    wcount=wcount+1:
01F950:  47 4F 53 55 42 20 33 30 30 3A 57 45 4E 44 0D 0A    GOSUB 300:WEND..
01F960:  31 33 30 20 49 46 20 61 24 3C 3E 22 22 20 54 48    130 IF a$<>"" TH
01F970:  45 4E 20 74 65 6D 70 77 24 28 77 63 6F 75 6E 74    EN tempw$(wcount
01F980:  29 3D 61 24 3A 77 63 6F 75 6E 74 3D 77 63 6F 75    )=a$:wcount=wcou
01F990:  6E 74 2B 31 0D 0A 31 34 30 20 70 77 6F 72 64 3D    nt+1..140 pword=
01F9A0:  30 3A 46 4F 52 20 69 3D 30 20 54 4F 20 77 63 6F    0:FOR i=0 TO wco
01F9B0:  75 6E 74 2D 31 3A 77 6F 72 64 24 3D 74 65 6D 70    unt-1:word$=temp
01F9C0:  77 24 28 69 29 0D 0A 31 35 30 20 63 77 6F 72 64    w$(i)..150 cword
01F9D0:  3D 6E 77 6F 72 64 73 3A 57 48 49 4C 45 20 63 77    =nwords:WHILE cw
01F9E0:  6F 72 64 3E 30 20 41 4E 44 20 77 6F 72 64 24 3C    ord>0 AND word$<
01F9F0:  3E 77 24 28 63 77 6F 72 64 29 3A 63 77 6F 72 64    >w$(cword):cword
01FA00:  77 63 6F 75 6E 74 2B 31 0D 0A 31 34 30 20 70 77    wcount+1..140 pw
01FA10:  6F 72 64 3D 30 3A 46 4F 52 20 69 3D 30 20 54 4F    ord=0:FOR i=0 TO
01FA20:  20 77 63 6F 75 6E 74 2D 31 3A 77 6F 72 64 24 3D     wcount-1:word$=
01FA30:  74 65 6D 70 77 24 28 69 29 0D 0A 31 35 30 20 63    tempw$(i)..150 c
01FA40:  77 6F 72 64 3D 6E 77 6F 72 64 73 3A 57 48 49 4C    word=nwords:WHIL
01FA50:  45 20 63 77 6F 72 64 3E 30 20 41 4E 44 20 77 6F    E cword>0 AND wo
01FA60:  72 64 24 3C 3E 77 24 28 63 77 6F 72 64 29 3A 63    rd$<>w$(cword):c
01FA70:  77 6F 72 64 3D 63 77 6F 72 64 2D 31 3A 57 45 4E    word=cword-1:WEN
01FA80:  44 0D 0A 31 36 30 20 49 46 20 63 77 6F 72 64 3D    D..160 IF cword=
01FA90:  30 20 54 48 45 4E 20 6E 77 6F 72 64 73 3D 6E 77    0 THEN nwords=nw
01FAA0:  6F 72 64 73 2B 31 3A 77 24 28 6E 77 6F 72 64 73    ords+1:w$(nwords
01FAB0:  29 3D 77 6F 72 64 24 3A 63 77 6F 72 64 3D 6E 77    )=word$:cword=nw
01FAC0:  6F 72 64 73 0D 0A 31 37 30 20 47 4F 53 55 42 20    ords..170 GOSUB 
01FAD0:  34 30 30 3A 70 77 6F 72 64 3D 63 77 6F 72 64 3A    400:pword=cword:
01FAE0:  4E 45 58 54 0D 0A 31 38 30 20 63 77 6F 72 64 3D    NEXT..180 cword=
01FAF0:  30 3A 47 4F 53 55 42 20 34 30 30 0D 0A 31 39 30    0:GOSUB 400..190
01FB00:  20 52 45 54 55 52 4E 0D 0A 32 30 30 20 70 77 6F     RETURN..200 pwo
01FB10:  72 64 3D 30 3A 47 4F 53 55 42 20 35 30 30 0D 0A    rd=0:GOSUB 500..
01FB20:  32 31 30 20 57 48 49 4C 45 20 70 77 6F 72 64 3E    210 WHILE pword>
01FB30:  30 3A 50 52 49 4E 54 20 77 24 28 70 77 6F 72 64    0:PRINT w$(pword
01FB40:  29 22 20 22 3B 3A 47 4F 53 55 42 20 35 30 30 3A    )" ";:GOSUB 500:
01FB50:  57 45 4E 44 0D 0A 32 32 30 20 50 52 49 4E 54 20    WEND..220 PRINT 
01FB60:  43 48 52 24 28 38 29 3B 22 2E 22 3A 50 52 49 4E    CHR$(8);".":PRIN
01FB70:  54 0D 0A 32 33 30 20 52 45 54 55 52 4E 0D 0A 33    T..230 RETURN..3
01FB80:  30 30 20 57 48 49 4C 45 20 4C 45 46 54 24 28 61    00 WHILE LEFT$(a
01FB90:  24 2C 31 29 3D 22 20 22 3A 61 24 3D 4D 49 44 24    $,1)=" ":a$=MID$
01FBA0:  28 61 24 2C 32 29 3A 57 45 4E 44 3A 52 45 54 55    (a$,2):WEND:RETU
01FBB0:  52 4E 0D 0A 34 30 30 20 6A 3D 6C 6B 28 70 77 6F    RN..400 j=lk(pwo
01FBC0:  72 64 2C 30 29 3A 78 3D 31 0D 0A 34 31 30 20 57    rd,0):x=1..410 W
01FBD0:  48 49 4C 45 20 6A 3E 30 20 41 4E 44 20 63 77 6F    HILE j>0 AND cwo
01FBE0:  72 64 3C 3E 6C 6B 28 70 77 6F 72 64 2C 78 29 3A    rd<>lk(pword,x):
01FBF0:  6A 3D 6A 2D 31 3A 78 3D 78 2B 31 0D 0A 34 32 30    j=j-1:x=x+1..420
01FC00:  3D 63 77 6F 72 64 2D 31 3A 57 45 4E 44 0D 0A 31    =cword-1:WEND..1
01FC10:  36 30 20 49 46 20 63 77 6F 72 64 3D 30 20 54 48    60 IF cword=0 TH
01FC20:  45 4E 20 6E 77 6F 72 64 73 3D 6E 77 6F 72 64 73    EN nwords=nwords
01FC30:  2B 31 3A 77 24 28 6E 77 6F 72 64 73 29 3D 77 6F    +1:w$(nwords)=wo
01FC40:  72 64 24 3A 63 77 6F 72 64 3D 6E 77 6F 72 64 73    rd$:cword=nwords
01FC50:  0D 0A 31 37 30 20 47 4F 53 55 42 20 34 30 30 3A    ..170 GOSUB 400:
01FC60:  70 77 6F 72 64 3D 63 77 6F 72 64 3A 4E 45 58 54    pword=cword:NEXT
01FC70:  0D 0A 31 38 30 20 63 77 6F 72 64 3D 30 3A 47 4F    ..180 cword=0:GO
01FC80:  53 55 42 20 34 30 30 0D 0A 31 39 30 20 52 45 54    SUB 400..190 RET
01FC90:  55 52 4E 0D 0A 32 30 30 20 70 77 6F 72 64 3D 30    URN..200 pword=0
01FCA0:  3A 47 4F 53 55 42 20 35 30 30 0D 0A 32 31 30 20    :GOSUB 500..210 
01FCB0:  57 48 49 4C 45 20 70 77 6F 72 64 3E 30 3A 50 52    WHILE pword>0:PR
01FCC0:  49 4E 54 20 77 24 28 70 77 6F 72 64 29 22 20 22    INT w$(pword)" "
01FCD0:  3B 3A 47 4F 53 55 42 20 35 30 30 3A 57 45 4E 44    ;:GOSUB 500:WEND
01FCE0:  0D 0A 32 32 30 20 50 52 49 4E 54 20 43 48 52 24    ..220 PRINT CHR$
01FCF0:  28 38 29 3B 22 2E 22 3A 50 52 49 4E 54 0D 0A 32    (8);".":PRINT..2
01FD00:  33 30 20 52 45 54 55 52 4E 0D 0A 33 30 30 20 57    30 RETURN..300 W
01FD10:  48 49 4C 45 20 4C 45 46 54 24 28 61 24 2C 31 29    HILE LEFT$(a$,1)
01FD20:  3D 22 20 22 3A 61 24 3D 4D 49 44 24 28 61 24 2C    =" ":a$=MID$(a$,
01FD30:  32 29 3A 57 45 4E 44 3A 52 45 54 55 52 4E 0D 0A    2):WEND:RETURN..
01FD40:  34 30 30 20 6A 3D 6C 6B 28 70 77 6F 72 64 2C 30    400 j=lk(pword,0
01FD50:  29 3A 78 3D 31 0D 0A 34 31 30 20 57 48 49 4C 45    ):x=1..410 WHILE
01FD60:  20 6A 3E 30 20 41 4E 44 20 63 77 6F 72 64 3C 3E     j>0 AND cword<>
01FD70:  6C 6B 28 70 77 6F 72 64 2C 78 29 3A 6A 3D 6A 2D    lk(pword,x):j=j-
01FD80:  31 3A 78 3D 78 2B 31 0D 0A 34 32 30 20 57 45 4E    1:x=x+1..420 WEN
01FD90:  44 3A 49 46 20 6A 3E 30 20 54 48 45 4E 20 34 34    D:IF j>0 THEN 44
01FDA0:  30 0D 0A 34 33 30 20 6C 6B 28 70 77 6F 72 64 2C    0..430 lk(pword,
01FDB0:  30 29 3D 6C 6B 28 70 77 6F 72 64 2C 30 29 2B 31    0)=lk(pword,0)+1
01FDC0:  3A 6C 6B 28 70 77 6F 72 64 2C 78 29 3D 63 77 6F    :lk(pword,x)=cwo
01FDD0:  72 64 0D 0A 34 34 30 20 52 45 54 55 52 4E 0D 0A    rd..440 RETURN..
01FDE0:  35 30 30 20 69 3D 49 4E 54 28 52 4E 44 2A 6C 6B    500 i=INT(RND*lk
01FDF0:  28 70 77 6F 72 64 2C 30 29 2B 31 29 0D 0A 35 31    (pword,0)+1)..51
01FE00:  20 57 45 4E 44 3A 49 46 20 6A 3E 30 20 54 48 45     WEND:IF j>0 THE
01FE10:  4E 20 34 34 30 0D 0A 34 33 30 20 6C 6B 28 70 77    N 440..430 lk(pw
01FE20:  6F 72 64 2C 30 29 3D 6C 6B 28 70 77 6F 72 64 2C    ord,0)=lk(pword,
01FE30:  30 29 2B 31 3A 6C 6B 28 70 77 6F 72 64 2C 78 29    0)+1:lk(pword,x)
01FE40:  3D 63 77 6F 72 64 0D 0A 34 34 30 20 52 45 54 55    =cword..440 RETU
01FE50:  52 4E 0D 0A 35 30 30 20 69 3D 49 4E 54 28 52 4E    RN..500 i=INT(RN
01FE60:  44 2A 6C 6B 28 70 77 6F 72 64 2C 30 29 2B 31 29    D*lk(pword,0)+1)
01FE70:  0D 0A 35 31 30 20 70 77 6F 72 64 3D 6C 6B 28 70    ..510 pword=lk(p
01FE80:  77 6F 72 64 2C 69 29 3A 52 45 54 55 52 4E 0D 0A    word,i):RETURN..
01FE90:  36 30 30 20 66 69 6C 65 24 3D 4D 49 44 24 28 61    600 file$=MID$(a
01FEA0:  24 2C 37 29 3A 49 46 20 66 69 6C 65 24 3D 22 22    $,7):IF file$=""
01FEB0:  20 54 48 45 4E 20 66 69 6C 65 24 3D 22 56 4F 43     THEN file$="VOC
01FEC0:  41 42 22 0D 0A 36 31 30 20 4F 50 45 4E 49 4E 20    AB"..610 OPENIN 
01FED0:  66 69 6C 65 24 3A 49 4E 50 55 54 23 39 2C 6E 77    file$:INPUT#9,nw
01FEE0:  6F 72 64 73 0D 0A 36 32 30 20 46 4F 52 20 69 3D    ords..620 FOR i=
01FEF0:  30 20 54 4F 20 6E 77 6F 72 64 73 3A 49 4E 50 55    0 TO nwords:INPU
01FF00:  54 23 39 2C 77 24 28 69 29 2C 6C 6B 28 69 2C 30    T#9,w$(i),lk(i,0
01FF10:  29 0D 0A 36 33 30 20 46 4F 52 20 6A 3D 31 20 54    )..630 FOR j=1 T
01FF20:  4F 20 6C 6B 28 69 2C 30 29 3A 49 4E 50 55 54 23    O lk(i,0):INPUT#
01FF30:  39 2C 6C 6B 28 69 2C 6A 29 3A 4E 45 58 54 3A 4E    9,lk(i,j):NEXT:N
01FF40:  45 58 54 0D 0A 36 34 30 20 43 4C 4F 53 45 49 4E    EXT..640 CLOSEIN
01FF50:  3A 52 45 54 55 52 4E 0D 0A 37 30 30 20 66 69 6C    :RETURN..700 fil
01FF60:  65 24 3D 4D 49 44 24 28 61 24 2C 37 29 3A 49 46    e$=MID$(a$,7):IF
01FF70:  20 66 69 6C 65 24 3D 22 22 20 54 48 45 4E 20 66     file$="" THEN f
01FF80:  69 6C 65 24 3D 22 56 4F 43 41 42 22 0D 0A 37 31    ile$="VOCAB"..71
01FF90:  30 20 4F 50 45 4E 4F 55 54 20 66 69 6C 65 24 3A    0 OPENOUT file$:
01FFA0:  57 52 49 54 45 23 39 2C 6E 77 6F 72 64 73 0D 0A    WRITE#9,nwords..
01FFB0:  37 32 30 20 46 4F 52 20 69 3D 30 20 54 4F 20 6E    720 FOR i=0 TO n
01FFC0:  77 6F 72 64 73 3A 57 52 49 54 45 23 39 2C 77 24    words:WRITE#9,w$
01FFD0:  28 69 29 2C 6C 6B 28 69 2C 30 29 0D 0A 37 33 30    (i),lk(i,0)..730
01FFE0:  20 46 4F 52 20 6A 3D 31 20 54 4F 20 6C 6B 28 69     FOR j=1 TO lk(i
01FFF0:  2C 30 29 3A 57 52 49 54 45 23 39 2C 6C 6B 28 69    ,0):WRITE#9,lk(i
020000:  30 20 70 77 6F 72 64 3D 6C 6B 28 70 77 6F 72 64    0 pword=lk(pword
020010:  2C 69 29 3A 52 45 54 55 52 4E 0D 0A 1A 52 59 20    ,i):RETURN...RY 
020020:  48 49 4D 45 4D 2D 31 3A 43 4C 4F 53 45 4F 55 54    HIMEM-1:CLOSEOUT
020030:  0D 0A 32 30 20 6D 77 6F 72 64 73 3D 33 30 30 3A    ..20 mwords=300:
020040:  6D 6C 69 6E 6B 73 3D 32 30 3A 6E 77 6F 72 64 73    mlinks=20:nwords
020050:  3D 30 0D 0A 33 30 20 44 49 4D 20 77 24 28 6D 77    =0..30 DIM w$(mw
020060:  6F 72 64 73 29 2C 6C 6B 28 6D 77 6F 72 64 73 2C    ords),lk(mwords,
020070:  6D 6C 69 6E 6B 73 29 2C 74 65 6D 70 77 24 28 31    mlinks),tempw$(1
020080:  53 55 42 20 34 30 30 0D 0A 31 39 30 20 52 45 54    SUB 400..190 RET
020090:  55 52 4E 0D 0A 32 30 30 20 70 77 6F 72 64 3D 30    URN..200 pword=0
0200A0:  3A 47 4F 53 55 42 20 35 30 30 0D 0A 32 31 30 20    :GOSUB 500..210 
0200B0:  57 48 49 4C 45 20 70 77 6F 72 64 3E 30 3A 50 52    WHILE pword>0:PR
0200C0:  49 4E 54 20 77 24 28 70 77 6F 72 64 29 22 20 22    INT w$(pword)" "
0200D0:  3B 3A 47 4F 53 55 42 20 35 30 30 3A 57 45 4E 44    ;:GOSUB 500:WEND
0200E0:  0D 0A 32 32 30 20 50 52 49 4E 54 20 43 48 52 24    ..220 PRINT CHR$
0200F0:  28 38 29 3B 22 2E 22 3A 50 52 49 4E 54 0D 0A 32    (8);".":PRINT..2
020100:  33 30 20 52 45 54 55 52 4E 0D 0A 33 30 30 20 57    30 RETURN..300 W
020110:  48 49 4C 45 20 4C 45 46 54 24 28 61 24 2C 31 29    HILE LEFT$(a$,1)
020120:  3D 22 20 22 3A 61 24 3D 4D 49 44 24 28 61 24 2C    =" ":a$=MID$(a$,
020130:  32 29 3A 57 45 4E 44 3A 52 45 54 55 52 4E 0D 0A    2):WEND:RETURN..
020140:  34 30 30 20 6A 3D 6C 6B 28 70 77 6F 72 64 2C 30    400 j=lk(pword,0
020150:  29 3A 78 3D 31 0D 0A 34 31 30 20 57 48 49 4C 45    ):x=1..410 WHILE
020160:  20 6A 3E 30 20 41 4E 44 20 63 77 6F 72 64 3C 3E     j>0 AND cword<>
020170:  6C 6B 28 70 77 6F 72 64 2C 78 29 3A 6A 3D 6A 2D    lk(pword,x):j=j-
020180:  31 3A 78 3D 78 2B 31 0D 0A 34 32 30 20 57 45 4E    1:x=x+1..420 WEN
020190:  44 3A 49 46 20 6A 3E 30 20 54 48 45 4E 20 34 34    D:IF j>0 THEN 44
0201A0:  30 0D 0A 34 33 30 20 6C 6B 28 70 77 6F 72 64 2C    0..430 lk(pword,
0201B0:  30 29 3D 6C 6B 28 70 77 6F 72 64 2C 30 29 2B 31    0)=lk(pword,0)+1
0201C0:  3A 6C 6B 28 70 77 6F 72 64 2C 78 29 3D 63 77 6F    :lk(pword,x)=cwo
0201D0:  72 64 0D 0A 34 34 30 20 52 45 54 55 52 4E 0D 0A    rd..440 RETURN..
0201E0:  35 30 30 20 69 3D 49 4E 54 28 52 4E 44 2A 6C 6B    500 i=INT(RND*lk
0201F0:  28 70 77 6F 72 64 2C 30 29 2B 31 29 0D 0A 35 31    (pword,0)+1)..51
020200:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
020210:  1B 00 01 00 02 09 4E E5 1B 00 C6 02 00 00 00 02    ......N.........
020220:  1B 00 C2 02 00 00 00 02 1B 00 C7 02 00 00 00 02    ................
020230:  1B 00 C3 02 00 00 00 02 1B 00 C8 02 00 00 00 02    ................
020240:  1B 00 C4 02 00 00 00 02 1B 00 C9 02 00 00 00 02    ................
020250:  1B 00 C5 02 00 00 00 02 1B 00 C1 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:  28 61 2C 31 29 20 20 6C 6B 28 61 2C 32 29 0D 0A    (a,1)  lk(a,2)..
020310:  09 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    .---------------
020320:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
020330:  2D 2D 2D 2D 2D 2D 0D 0A 09 30 20 20 20 20 20 20    ------...0      
020340:  20 20 20 20 20 32 20 20 20 20 20 20 20 20 31 20         2        1 
020350:  20 20 20 20 20 20 20 37 0D 0A 09 31 20 20 49 20           7...1  I 
020360:  20 20 20 20 20 20 20 31 20 20 20 20 20 20 20 20           1        
020370:  32 0D 0A 09 32 20 20 61 6D 20 20 20 20 20 20 20    2...2  am       
020380:  31 20 20 20 20 20 20 20 20 33 0D 0A 09 33 20 20    1        3...3  
020390:  62 6F 72 65 64 20 20 20 20 32 20 20 20 20 20 20    bored    2      
0203A0:  20 20 34 20 20 20 20 20 20 20 20 30 0D 0A 09 34      4        0...4
0203B0:  20 20 77 69 74 68 20 20 20 20 20 31 20 20 20 20      with     1    
0203C0:  20 20 20 20 35 0D 0A 09 35 20 20 74 68 69 73 20        5...5  this 
0203D0:  20 20 20 20 31 20 20 20 20 20 20 20 20 36 0D 0A        1        6..
0203E0:  09 36 20 20 61 72 74 69 63 6C 65 20 20 31 20 20    .6  article  1  
0203F0:  20 20 20 20 20 20 30 0D 0A 09 37 20 20 59 6F 75          0...7  You
020400:  20 20 20 20 20 20 31 20 20 20 20 20 20 20 20 38          1        8
020410:  0D 0A 09 38 20 20 63 61 6E 27 74 20 20 20 20 31    ...8  can't    1
020420:  20 20 20 20 20 20 20 20 39 0D 0A 09 39 20 20 62            9...9  b
020430:  65 20 20 20 20 20 20 20 31 20 20 20 20 20 20 20    e       1       
020440:  20 33 0D 0A 0D 0A 20 20 20 41 6C 6C 20 74 68 65     3....   All the
020450:  20 77 6F 72 64 73 20 61 70 61 72 74 20 66 72 6F     words apart fro
020460:  6D 20 30 20 61 6E 64 20 33 20 20 63 61 6E 20 6F    m 0 and 3  can o
020470:  6E 6C 79 20 62 65 20 66 6F 6C 6C 6F 77 65 64 20    nly be followed 
020480:  62 79 20 6F 6E 65 20 6F 74 68 65 72 2E 20 20 57    by one other.  W
020490:  6F 72 64 0D 0A 20 20 20 30 2C 20 74 68 65 20 22    ord..   0, the "
0204A0:  73 74 61 72 74 20 6F 66 20 73 65 6E 74 65 6E 63    start of sentenc
0204B0:  65 22 20 77 6F 72 64 2C 20 20 63 61 6E 20 20 62    e" word,  can  b
0204C0:  65 20 20 66 6F 6C 6C 6F 77 65 64 20 20 62 79 20    e  followed  by 
0204D0:  74 77 6F 20 77 6F 72 64 73 2C 20 31 20 61 6E 64    two words, 1 and
0204E0:  20 37 0D 0A 20 20 20 28 22 49 22 20 61 6E 64 20     7..   ("I" and 
0204F0:  22 59 6F 75 22 29 2E 20 20 57 6F 72 64 20 33 2C    "You").  Word 3,
020500:  69 67 75 72 65 20 32 2E 0D 0A 0D 0A 20 20 20 48    igure 2.....   H
020510:  49 53 54 4F 52 59 20 4C 45 53 53 4F 4E 0D 0A 20    ISTORY LESSON.. 
020520:  20 20 22 41 49 22 20 28 6F 72 20 22 41 72 74 69      "AI" (or "Arti
020530:  66 69 63 69 61 6C 20 49 6E 74 65 6C 6C 69 67 65    ficial Intellige
020540:  6E 63 65 22 29 20 77 61 73 20 6F 72 69 67 69 6E    nce") was origin
020550:  61 6C 6C 79 20 20 77 72 69 74 74 65 6E 20 62 79    ally  written by
020560:  20 61 20 66 72 69 65 6E 64 20 6F 66 0D 0A 20 20     a friend of..  
020570:  20 4D 61 74 74 68 65 77 27 73 20 66 6F 72 20 74     Matthew's for t
020580:  68 65 20 42 42 43 20 20 6D 69 63 72 6F 2C 20 20    he BBC  micro,  
020590:  61 64 61 70 74 65 64 20 20 66 6F 72 20 20 75 73    adapted  for  us
0205A0:  65 20 20 6F 76 65 72 20 20 61 20 6E 65 74 77 6F    e  over  a netwo
0205B0:  72 6B 20 61 6E 64 20 74 68 65 6E 0D 0A 20 20 20    rk and then..   
0205C0:  72 65 77 72 69 74 74 65 6E 20 66 6F 72 20 74 68    rewritten for th
0205D0:  65 20 41 6D 73 74 72 61 64 20 62 79 20 4D 61 74    e Amstrad by Mat
0205E0:  74 68 65 77 2E 20 20 4F 6E 63 65 20 77 68 65 6E    thew.  Once when
0205F0:  20 49 20 77 61 6E 74 65 64 20 74 6F 20 75 73 65     I wanted to use
020600:  20 69 74 20 61 6E 64 20 77 65 0D 0A 20 20 20 77     it and we..   w
020610:  65 72 65 20 75 6E 61 62 6C 65 20 74 6F 20 66 69    ere unable to fi
020620:  6E 64 20 74 68 65 20 20 70 72 6F 67 72 61 6D 20    nd the  program 
020630:  20 69 74 20 20 77 61 73 20 20 72 65 77 72 69 74     it  was  rewrit
020640:  74 65 6E 20 6F 6E 63 65 20 61 67 61 69 6E 20 62    ten once again b
020650:  79 20 4D 61 74 74 68 65 77 0D 0A 20 20 20 64 69    y Matthew..   di
020660:  63 74 61 74 69 6E 67 20 69 74 20 74 6F 20 6D 65    ctating it to me
020670:  2E 0D 0A 0D 0A 20 20 20 54 48 45 20 42 41 53 49    .....   THE BASI
020680:  43 20 49 44 45 41 0D 0A 20 20 20 54 6F 20 75 73    C IDEA..   To us
020690:  65 20 74 68 65 20 70 72 6F 67 72 61 6D 2C 20 79    e the program, y
0206A0:  6F 75 20 74 79 70 65 20 20 69 6E 20 20 61 20 20    ou type  in  a  
0206B0:  73 65 6E 74 65 6E 63 65 2E 20 20 20 54 68 65 20    sentence.   The 
0206C0:  63 6F 6D 70 75 74 65 72 20 6C 6F 6F 6B 73 20 61    computer looks a
0206D0:  74 20 74 68 65 0D 0A 20 20 20 73 65 6E 74 65 6E    t the..   senten
0206E0:  63 65 20 61 6E 64 20 73 74 6F 72 65 73 20 74 68    ce and stores th
0206F0:  65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 20 61    e information  a
020700:  20 22 62 6F 72 65 64 22 20 63 61 6E 20 62 65 20     "bored" can be 
020710:  66 6F 6C 6C 6F 77 65 64 20 62 79 20 34 20 6F 72    followed by 4 or
020720:  20 30 20 28 22 77 69 74 68 22 20 6F 72 20 74 68     0 ("with" or th
020730:  65 0D 0A 20 20 20 22 65 6E 64 20 6F 66 20 73 65    e..   "end of se
020740:  6E 74 65 6E 63 65 22 20 77 6F 72 64 2E 29 0D 0A    ntence" word.)..
020750:  0D 0A 20 20 20 49 4E 20 4D 4F 52 45 20 44 45 54    ..   IN MORE DET
020760:  41 49 4C 0D 0A 20 20 20 4E 6F 77 20 74 68 61 74    AIL..   Now that
020770:  20 79 6F 75 20 68 61 76 65 20 61 6E 20 69 64 65     you have an ide
020780:  61 20 6F 66 20 68 6F 77 20 20 74 68 65 20 20 64    a of how  the  d
020790:  61 74 61 20 69 73 20 73 74 6F 72 65 64 20 69 6E    ata is stored in
0207A0:  20 74 68 65 20 61 72 72 61 79 73 2C 20 6C 65 74     the arrays, let
0207B0:  27 73 0D 0A 20 20 20 6C 6F 6F 6B 20 61 74 20 74    's..   look at t
0207C0:  68 65 20 70 72 6F 67 72 61 6D 20 69 6E 20 64 65    he program in de
0207D0:  74 61 69 6C 2E 20 20 54 68 65 20 66 69 72 73 74    tail.  The first
0207E0:  20 74 68 72 65 65 20 6C 69 6E 65 73 20 73 65 74     three lines set
0207F0:  20 74 68 69 6E 67 73 20 75 70 2E 0D 0A 0D 0A 20     things up..... 
020800:  20 20 31 30 20 44 45 46 49 4E 54 20 61 2D 7A 20      10 DEFINT a-z 
020810:  73 70 65 65 64 73 20 75 70 20 74 68 65 20 20 63    speeds up the  c
020820:  6F 6D 70 75 74 65 72 27 73 20 20 22 74 68 6F 75    omputer's  "thou
020830:  67 68 74 22 20 70 72 6F 63 65 73 73 65 73 2E 20    ght" processes. 
020840:  20 54 68 65 20 72 65 73 74 20 6F 66 0D 0A 20 20     The rest of..  
020850:  20 74 68 65 20 6C 69 6E 65 20 72 65 73 65 72 76     the line reserv
020860:  65 73 20 61 20 64 69 73 63 20 20 62 75 66 66 65    es a disc  buffe
020870:  72 2C 20 20 61 73 20 20 6C 61 74 65 72 20 20 77    r,  as  later  w
020880:  65 20 20 6D 61 79 20 20 77 61 6E 74 20 74 6F 20    e  may  want to 
020890:  64 65 76 65 6C 6F 70 20 74 68 65 0D 0A 20 20 20    develop the..   
0208A0:  70 72 6F 67 72 61 6D 20 66 75 72 74 68 65 72 20    program further 
0208B0:  61 6E 64 20 62 65 20 61 62 6C 65 20 74 6F 20 6C    and be able to l
0208C0:  6F 61 64 20 61 6E 64 20 73 61 76 65 20 76 6F 63    oad and save voc
0208D0:  61 62 75 6C 61 72 79 2E 0D 0A 0D 0A 20 20 20 32    abulary.....   2
0208E0:  30 20 73 65 74 73 20 6C 69 6D 69 74 73 20 6F 6E    0 sets limits on
0208F0:  20 74 68 65 20 20 6E 75 6D 62 65 72 20 20 6F 66     the  number  of
020900:  62 6F 75 74 20 20 77 68 69 63 68 20 20 77 6F 72    bout  which  wor
020910:  64 73 20 63 61 6E 20 66 6F 6C 6C 6F 77 20 77 68    ds can follow wh
020920:  69 63 68 2C 0D 0A 20 20 20 61 6E 64 20 72 65 73    ich,..   and res
020930:  70 6F 6E 64 73 20 77 69 74 68 20 61 20 73 65 6E    ponds with a sen
020940:  74 65 6E 63 65 20 20 62 61 73 65 64 20 20 6F 6E    tence  based  on
020950:  20 20 74 68 69 73 20 20 6B 6E 6F 77 6C 65 64 67      this  knowledg
020960:  65 2E 20 20 28 55 6E 74 69 6C 20 79 6F 75 20 68    e.  (Until you h
020970:  61 76 65 0D 0A 20 20 20 74 61 75 67 68 74 20 69    ave..   taught i
020980:  74 20 61 20 20 66 65 77 20 20 73 65 6E 74 65 6E    t a  few  senten
020990:  63 65 73 20 20 69 74 20 20 69 73 20 20 75 6E 6C    ces  it  is  unl
0209A0:  69 6B 65 6C 79 20 20 74 6F 20 20 63 6F 6D 65 20    ikely  to  come 
0209B0:  20 6F 75 74 20 77 69 74 68 20 61 6E 79 74 68 69     out with anythi
0209C0:  6E 67 0D 0A 20 20 20 6F 72 69 67 69 6E 61 6C 2E    ng..   original.
0209D0:  29 0D 0A 0D 0A 20 20 20 46 6F 72 20 65 78 61 6D    )....   For exam
0209E0:  70 6C 65 3A 0D 0A 0D 0A 20 20 20 48 69 6C 61 72    ple:....   Hilar
0209F0:  79 3A 20 20 20 49 20 61 6D 20 62 6F 72 65 64 20    y:   I am bored 
020A00:  77 69 74 68 20 74 68 69 73 20 61 72 74 69 63 6C    with this articl
020A10:  65 0D 0A 20 20 20 43 6F 6D 70 75 74 65 72 3A 20    e..   Computer: 
020A20:  49 20 61 6D 20 62 6F 72 65 64 20 77 69 74 68 20    I am bored with 
020A30:  74 68 69 73 20 61 72 74 69 63 6C 65 2E 0D 0A 0D    this article....
020A40:  0A 20 20 20 28 49 74 20 6F 6E 6C 79 20 6B 6E 6F    .   (It only kno
020A50:  77 73 20 74 68 61 74 20 22 49 22 20 63 61 6E 20    ws that "I" can 
020A60:  62 65 67 69 6E 20 61 20 20 73 65 6E 74 65 6E 63    begin a  sentenc
020A70:  65 20 61 6E 64 20 74 68 61 74 20 22 49 22 20 63    e and that "I" c
020A80:  61 6E 20 62 65 20 66 6F 6C 6C 6F 77 65 64 0D 0A    an be followed..
020A90:  20 20 20 62 79 20 22 61 6D 22 2C 20 22 61 6D 22       by "am", "am"
020AA0:  20 62 79 20 22 62 6F 72 65 64 22 2C 20 22 62 6F     by "bored", "bo
020AB0:  72 65 64 22 20 20 62 79 20 20 22 77 69 74 68 22    red"  by  "with"
020AC0:  2C 20 22 77 69 74 68 22 20 62 79 20 22 74 68 69    , "with" by "thi
020AD0:  73 22 2C 20 22 74 68 69 73 22 20 62 79 0D 0A 20    s", "this" by.. 
020AE0:  20 20 22 61 72 74 69 63 6C 65 22 2C 20 61 6E 64      "article", and
020AF0:  20 22 61 72 74 69 63 6C 65 22 20 62 79 20 74 68     "article" by th
020B00:  20 20 77 6F 72 64 73 20 20 74 68 65 20 20 63 6F      words  the  co
020B10:  6D 70 75 74 65 72 20 20 63 61 6E 20 73 74 6F 72    mputer  can stor
020B20:  65 20 61 6E 64 20 74 68 65 0D 0A 20 20 20 6E 75    e and the..   nu
020B30:  6D 62 65 72 20 6F 66 20 6C 69 6E 6B 73 20 69 6E    mber of links in
020B40:  20 74 68 65 20 6C 69 6E 6B 20 61 72 72 61 79 2C     the link array,
020B50:  20 20 61 6E 64 20 20 73 65 74 73 20 74 68 65 20      and  sets the 
020B60:  6E 75 6D 62 65 72 20 6F 66 20 77 6F 72 64 73 20    number of words 
020B70:  6B 6E 6F 77 6E 20 74 6F 0D 0A 20 20 20 7A 65 72    known to..   zer
020B80:  6F 2E 0D 0A 0D 0A 20 20 20 33 30 20 54 68 65 20    o.....   30 The 
020B90:  61 72 72 61 79 73 20 61 72 65 20 64 69 6D 65 6E    arrays are dimen
020BA0:  73 69 6F 6E 65 64 20 61 63 63 6F 72 64 69 6E 67    sioned according
020BB0:  6C 79 20 20 61 6E 64 20 20 61 6E 6F 74 68 65 72    ly  and  another
020BC0:  20 61 72 72 61 79 20 69 73 20 73 65 74 20 75 70     array is set up
020BD0:  20 74 6F 0D 0A 20 20 20 68 6F 6C 64 20 74 68 65     to..   hold the
020BE0:  20 73 65 6E 74 65 6E 63 65 20 74 79 70 65 64 20     sentence typed 
020BF0:  69 6E 20 62 79 20 74 68 65 20 75 73 65 72 20 66    in by the user f
020C00:  6F 72 20 61 6E 61 6C 79 73 69 73 2E 0D 0A 0D 0A    or analysis.....
020C10:  20 20 20 34 30 20 57 65 20 77 61 69 74 20 66 6F       40 We wait fo
020C20:  72 20 74 68 65 20 75 73 65 72 27 73 20 69 6E 70    r the user's inp
020C30:  75 74 20 6F 66 20 61 24 2E 0D 0A 0D 0A 20 20 20    ut of a$.....   
020C40:  35 30 20 57 65 20 47 4F 53 55 42 20 33 30 30 20    50 We GOSUB 300 
020C50:  77 68 69 63 68 20 73 74 72 69 70 73 20 73 70 61    which strips spa
020C60:  63 65 73 20 66 72 6F 6D 20 74 68 65 20 66 72 6F    ces from the fro
020C70:  6E 74 20 6F 66 20 61 24 2E 20 20 49 66 20 61 6E    nt of a$.  If an
020C80:  79 74 68 69 6E 67 0D 0A 20 20 20 74 68 65 6E 20    ything..   then 
020C90:  72 65 6D 61 69 6E 73 20 69 6E 20 61 24 2C 20 77    remains in a$, w
020CA0:  65 20 47 4F 53 55 42 20 20 31 30 30 2C 20 20 77    e GOSUB  100,  w
020CB0:  68 69 63 68 20 61 6E 61 6C 79 73 65 73 20 74 68    hich analyses th
020CC0:  65 20 73 65 6E 74 65 6E 63 65 20 61 6E 64 20 73    e sentence and s
020CD0:  74 6F 72 65 73 0D 0A 20 20 20 74 68 65 20 69 6E    tores..   the in
020CE0:  66 6F 72 6D 61 74 69 6F 6E 20 69 6E 20 74 68 65    formation in the
020CF0:  20 61 72 72 61 79 73 2E 0D 0A 0D 0A 20 20 20 36     arrays.....   6
020D00:  65 20 65 6E 64 20 6F 66 20 74 68 65 20 73 65 6E    e end of the sen
020D10:  74 65 6E 63 65 29 0D 0A 0D 0A 20 20 20 48 69 6C    tence)....   Hil
020D20:  61 72 79 3A 20 20 20 59 6F 75 20 63 61 6E 27 74    ary:   You can't
020D30:  20 62 65 20 62 6F 72 65 64 0D 0A 20 20 20 43 6F     be bored..   Co
020D40:  6D 70 75 74 65 72 3A 20 49 20 61 6D 20 62 6F 72    mputer: I am bor
020D50:  65 64 2E 0D 0A 0D 0A 20 20 20 28 49 74 20 6B 6E    ed.....   (It kn
020D60:  6F 77 73 20 74 68 61 74 20 22 49 22 20 6F 72 20    ows that "I" or 
020D70:  22 59 6F 75 22 20 20 63 61 6E 20 20 73 74 61 72    "You"  can  star
020D80:  74 20 20 61 20 73 65 6E 74 65 6E 63 65 20 61 6E    t  a sentence an
020D90:  64 20 63 68 6F 6F 73 65 73 20 22 49 22 2C 20 77    d chooses "I", w
020DA0:  68 69 63 68 0D 0A 20 20 20 68 61 73 20 74 6F 20    hich..   has to 
020DB0:  62 65 20 66 6F 6C 6C 6F 77 65 64 20 62 79 20 22    be followed by "
020DC0:  61 6D 22 20 20 61 6E 64 20 20 74 68 65 6E 20 20    am"  and  then  
020DD0:  22 62 6F 72 65 64 22 2C 20 20 62 75 74 20 61 73    "bored",  but as
020DE0:  20 22 62 6F 72 65 64 22 20 63 61 6E 20 65 69 74     "bored" can eit
020DF0:  68 65 72 0D 0A 20 20 20 66 69 6E 69 73 68 20 61    her..   finish a
020E00:  20 73 65 6E 74 65 6E 63 65 20 6F 72 20 20 62 65     sentence or  be
020E10:  20 20 66 6F 6C 6C 6F 77 65 64 20 20 62 79 20 20      followed  by  
020E20:  22 77 69 74 68 22 2C 20 20 69 74 20 20 72 61 6E    "with",  it  ran
020E30:  64 6F 6D 6C 79 20 6F 70 74 73 20 66 6F 72 20 74    domly opts for t
020E40:  68 65 0D 0A 20 20 20 66 6F 72 6D 65 72 20 6F 70    he..   former op
020E50:  74 69 6F 6E 2E 29 0D 0A 0D 0A 20 20 20 41 6E 64    tion.)....   And
020E60:  20 73 6F 20 74 68 65 20 63 6F 6E 76 65 72 73 61     so the conversa
020E70:  74 69 6F 6E 20 63 6F 6E 74 69 6E 75 65 73 2E 2E    tion continues..
020E80:  2E 0D 0A 0D 0A 20 20 20 50 52 4F 47 52 41 4D 20    .....   PROGRAM 
020E90:  41 4E 41 4C 59 53 49 53 0D 0A 20 20 20 48 6F 77    ANALYSIS..   How
020EA0:  20 64 6F 65 73 20 69 74 20 77 6F 72 6B 2C 20 74     does it work, t
020EB0:  68 65 6E 3F 0D 0A 0D 0A 20 20 20 54 68 65 20 61    hen?....   The a
020EC0:  72 72 61 79 73 20 77 24 20 61 6E 64 20 6C 6B 20    rrays w$ and lk 
020ED0:  61 72 65 20 20 75 73 65 64 20 20 74 6F 20 20 73    are  used  to  s
020EE0:  74 6F 72 65 20 20 74 68 65 20 69 6E 66 6F 72 6D    tore  the inform
020EF0:  61 74 69 6F 6E 20 61 62 6F 75 74 20 77 6F 72 64    ation about word
020F00:  30 20 57 68 61 74 65 76 65 72 20 74 68 65 20 20    0 Whatever the  
020F10:  75 73 65 72 20 20 74 79 70 65 64 2C 20 20 77 65    user  typed,  we
020F20:  20 20 74 68 65 6E 20 20 47 4F 53 55 42 20 20 32      then  GOSUB  2
020F30:  30 30 2C 20 20 77 68 69 63 68 20 20 70 72 69 6E    00,  which  prin
020F40:  74 73 20 75 70 20 74 68 65 0D 0A 20 20 20 63 6F    ts up the..   co
020F50:  6D 70 75 74 65 72 27 73 20 73 65 6E 74 65 6E 63    mputer's sentenc
020F60:  65 2C 20 61 6E 64 20 47 4F 54 4F 20 34 30 20 74    e, and GOTO 40 t
020F70:  6F 20 61 77 61 69 74 20 74 68 65 20 75 73 65 72    o await the user
020F80:  27 73 20 69 6E 70 75 74 20 61 67 61 69 6E 2E 0D    's input again..
020F90:  0A 0D 0A 20 20 20 53 45 4E 54 45 4E 43 45 20 41    ...   SENTENCE A
020FA0:  4E 41 4C 59 53 49 53 0D 0A 20 20 20 54 68 65 20    NALYSIS..   The 
020FB0:  73 75 62 72 6F 75 74 69 6E 65 20 69 6E 20 6C 69    subroutine in li
020FC0:  6E 65 73 20 31 30 30 2D 31 39 30 20 74 61 6B 65    nes 100-190 take
020FD0:  73 20 74 68 65 20 75 73 65 72 27 73 20 73 65 6E    s the user's sen
020FE0:  74 65 6E 63 65 2C 20 68 65 6C 64 20 69 6E 20 61    tence, held in a
020FF0:  24 2C 20 61 6E 64 0D 0A 20 20 20 70 75 6C 6C 73    $, and..   pulls
021000:  20 69 74 20 61 70 61 72 74 2E 0D 0A 0D 0A 20 20     it apart.....  
021010:  20 31 30 30 20 57 48 49 4C 45 20 74 68 65 72 65     100 WHILE there
021020:  20 61 72 65 20 61 6E 79 20 73 70 61 63 65 73 20     are any spaces 
021030:  69 6E 20 61 24 2C 20 69 2E 65 2E 20 6D 6F 72 65    in a$, i.e. more
021040:  20 74 68 61 6E 20 6F 6E 65 20 77 6F 72 64 2C 20     than one word, 
021050:  61 20 69 73 20 73 65 74 20 74 6F 0D 0A 20 20 20    a is set to..   
021060:  62 65 20 74 68 65 20 70 6F 73 69 74 69 6F 6E 20    be the position 
021070:  6F 66 20 74 68 65 20 66 69 72 73 74 20 73 70 61    of the first spa
021080:  63 65 2E 0D 0A 0D 0A 20 20 20 31 31 30 20 54 68    ce.....   110 Th
021090:  65 20 66 69 72 73 74 20 77 6F 72 64 20 69 73 20    e first word is 
0210A0:  70 75 74 20 69 6E 74 6F 20 74 68 65 20 61 72 72    put into the arr
0210B0:  61 79 20 74 65 6D 70 77 24 20 61 6E 64 20 74 61    ay tempw$ and ta
0210C0:  6B 65 6E 20 6F 75 74 20 6F 66 20 61 24 2E 0D 0A    ken out of a$...
0210D0:  0D 0A 20 20 20 31 32 30 20 54 68 65 20 77 6F 72    ..   120 The wor
0210E0:  64 20 63 6F 75 6E 74 20 69 73 20 20 69 6E 63 72    d count is  incr
0210F0:  65 61 73 65 64 20 20 62 79 20 20 31 20 20 61 6E    eased  by  1  an
021100:  73 20 61 6E 64 0D 0A 20 20 20 77 6F 72 64 20 6F    s and..   word o
021110:  72 64 65 72 2E 20 20 41 20 77 6F 72 64 20 69 73    rder.  A word is
021120:  20 73 74 6F 72 65 64 20 20 69 6E 20 20 77 24 28     stored  in  w$(
021130:  61 29 20 20 61 6E 64 20 74 68 65 20 22 6C 69 6E    a)  and the "lin
021140:  6B 22 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 61    k" information a
021150:  62 6F 75 74 0D 0A 20 20 20 77 68 69 63 68 20 77    bout..   which w
021160:  6F 72 64 20 63 61 6E 20 66 6F 6C 6C 6F 77 20 69    ord can follow i
021170:  74 20 69 6E 20 20 6C 6B 28 61 2C 62 29 2E 20 20    t in  lk(a,b).  
021180:  20 54 68 65 20 20 66 69 72 73 74 20 6E 75 6D 62     The  first numb
021190:  65 72 20 69 6E 20 74 68 65 20 6C 6B 20 61 72 72    er in the lk arr
0211A0:  61 79 2C 0D 0A 20 20 20 6C 6B 28 61 2C 30 29 20    ay,..   lk(a,0) 
0211B0:  67 69 76 65 73 20 74 68 65 20 6E 75 6D 62 65 72    gives the number
0211C0:  20 6F 66 20 64 69 66 66 65 72 65 6E 74 20 20 77     of different  w
0211D0:  6F 72 64 73 20 20 77 68 69 63 68 20 63 61 6E 20    ords  which can 
0211E0:  66 6F 6C 6C 6F 77 20 77 6F 72 64 20 61 3B 20 74    follow word a; t
0211F0:  68 65 0D 0A 20 20 20 66 6F 6C 6C 6F 77 69 6E 67    he..   following
021200:  20 6E 75 6D 62 65 72 73 20 70 6F 69 6E 74 20 74     numbers point t
021210:  6F 20 74 68 65 20 77 6F 72 64 73 20 69 6E 20 20    o the words in  
021220:  77 24 20 77 68 69 63 68 20 63 61 6E 20 66 6F 6C    w$ which can fol
021230:  6C 6F 77 20 77 6F 72 64 20 61 2E 20 20 57 6F 72    low word a.  Wor
021240:  64 0D 0A 20 20 20 30 20 69 73 20 62 6C 61 6E 6B    d..   0 is blank
021250:  20 61 6E 64 20 72 65 70 72 65 73 65 6E 74 73 20     and represents 
021260:  74 68 65 20 73 74 61 72 74 20 6F 72 20 65 6E 64    the start or end
021270:  20 6F 66 20 61 20 73 65 6E 74 65 6E 63 65 2E 0D     of a sentence..
021280:  0A 0D 0A 20 20 20 54 68 65 20 74 61 62 6C 65 20    ...   The table 
021290:  73 68 6F 77 73 20 74 68 65 20 76 61 6C 75 65 73    shows the values
0212A0:  20 69 6E 20 74 68 65 20 20 61 72 72 61 79 73 20     in the  arrays 
0212B0:  61 66 74 65 72 20 6C 65 61 72 6E 69 6E 67 20 74    after learning t
0212C0:  68 65 20 74 77 6F 20 73 65 6E 74 65 6E 63 65 73    he two sentences
0212D0:  0D 0A 20 20 20 69 6E 20 6F 75 72 20 65 78 61 6D    ..   in our exam
0212E0:  70 6C 65 3A 0D 0A 0D 0A 09 61 20 20 77 24 28 61    ple:.....a  w$(a
0212F0:  29 20 20 20 20 6C 6B 28 61 2C 30 29 20 20 6C 6B    )    lk(a,0)  lk
021300:  6B 20 6F 66 20 74 68 65 20 69 6E 76 69 74 61 74    k of the invitat
021310:  69 6F 6E 20 74 6F 20 22 54 65 6C 6C 20 6D 65 20    ion to "Tell me 
021320:  61 62 6F 75 74 20 79 6F 75 72 20 63 6F 6D 70 75    about your compu
021330:  74 65 72 2E 22 0D 0A 0D 0A 20 20 20 54 68 65 20    ter."....   The 
021340:  70 72 6F 67 72 61 6D 20 62 65 6C 6F 77 20 3C 3C    program below <<
021350:  73 61 76 65 64 20 6F 6E 20 64 69 73 63 20 61 73    saved on disc as
021360:  20 41 49 31 2E 42 41 53 3E 3E 20 69 73 20 61 20     AI1.BAS>> is a 
021370:  73 69 6D 70 6C 65 20 77 61 79 20 6F 66 20 74 65    simple way of te
021380:  61 63 68 69 6E 67 0D 0A 20 20 20 79 6F 75 72 20    aching..   your 
021390:  63 6F 6D 70 75 74 65 72 20 74 6F 20 63 6F 6D 6D    computer to comm
0213A0:  75 6E 69 63 61 74 65 2E 20 20 49 74 20 68 61 73    unicate.  It has
0213B0:  20 6E 6F 20 20 61 70 70 6C 69 63 61 74 69 6F 6E     no  application
0213C0:  73 20 74 68 61 74 20 49 20 61 6D 20 61 77 61 72    s that I am awar
0213D0:  65 20 6F 66 2C 0D 0A 20 20 20 62 75 74 20 69 74    e of,..   but it
0213E0:  20 69 73 20 71 75 69 74 65 20 65 6E 74 65 72 74     is quite entert
0213F0:  61 69 6E 69 6E 67 20 74 6F 20 20 74 72 79 20 20    aining to  try  
021400:  6F 75 74 20 20 61 6E 64 20 20 79 6F 75 20 6D 69    out  and  you mi
021410:  67 68 74 20 6C 65 61 72 6E 20 6D 6F 72 65 20 61    ght learn more a
021420:  62 6F 75 74 0D 0A 20 20 20 75 73 69 6E 67 20 61    bout..   using a
021430:  72 72 61 79 73 20 69 66 20 79 6F 75 20 63 61 6E    rrays if you can
021440:  20 66 6F 6C 6C 6F 77 20 20 74 68 65 20 20 65 78     follow  the  ex
021450:  70 6C 61 6E 61 74 69 6F 6E 2E 20 20 54 68 65 20    planation.  The 
021460:  62 61 73 69 63 20 6C 69 73 74 69 6E 67 20 69 73    basic listing is
021470:  20 69 6E 0D 0A 20 20 20 46 69 67 75 72 65 20 31     in..   Figure 1
021480:  2C 20 61 6E 64 20 69 74 20 77 69 6C 6C 20 20 67    , and it will  g
021490:  72 61 64 75 61 6C 6C 79 20 20 62 65 20 20 69 6D    radually  be  im
0214A0:  70 72 6F 76 65 64 20 20 61 6E 64 20 65 6E 68 61    proved  and enha
0214B0:  6E 63 65 64 20 6F 76 65 72 20 74 68 65 20 6E 65    nced over the ne
0214C0:  78 74 0D 0A 20 20 20 61 72 74 69 63 6C 65 20 6F    xt..   article o
0214D0:  72 20 74 77 6F 2E 20 20 41 6E 20 65 78 70 6C 61    r two.  An expla
0214E0:  6E 61 74 6F 72 79 20 6C 69 73 74 20 6F 66 20 76    natory list of v
0214F0:  61 72 69 61 62 6C 65 73 20 69 73 20 69 6E 20 46    ariables is in F
021500:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
021510:  1C 00 01 00 02 09 4E E5 1C 00 C9 02 00 00 00 02    ......N.........
021520:  1C 00 C5 02 00 00 00 02 1C 00 C1 02 00 00 00 02    ................
021530:  1C 00 C6 02 00 00 00 02 1C 00 C2 02 00 00 00 02    ................
021540:  1C 00 C7 02 00 00 00 02 1C 00 C3 02 00 00 00 02    ................
021550:  1C 00 C8 02 00 00 00 02 1C 00 C4 02 00 00 00 02    ................
021560:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021570:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021580:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021590:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021600:  75 6D 62 65 72 20 20 20 66 72 6F 6D 20 20 20 31    umber   from   1
021610:  20 20 20 74 6F 20 20 20 6C 6B 28 70 77 6F 72 64       to   lk(pword
021620:  2C 30 29 20 20 20 75 73 69 6E 67 20 20 20 74 68    ,0)   using   th
021630:  65 20 20 65 78 70 72 65 73 73 69 6F 6E 0D 0A 20    e  expression.. 
021640:  20 20 69 3D 49 4E 54 28 52 4E 44 2A 6C 6B 28 70      i=INT(RND*lk(p
021650:  77 6F 72 64 2C 30 29 2B 31 29 2E 0D 0A 0D 0A 20    word,0)+1)..... 
021660:  20 20 35 31 30 20 57 65 20 73 65 74 20 70 77 6F      510 We set pwo
021670:  72 64 20 74 6F 20 6C 6B 28 70 77 6F 72 64 2C 69    rd to lk(pword,i
021680:  29 2C 20 77 68 69 63 68 20 20 70 6F 69 6E 74 73    ), which  points
021690:  20 20 74 6F 20 61 20 72 61 6E 64 6F 6D 20 77 6F      to a random wo
0216A0:  72 64 20 6C 69 6E 6B 65 64 20 74 6F 0D 0A 20 20    rd linked to..  
0216B0:  20 62 79 20 74 68 65 20 70 72 65 76 69 6F 75 73     by the previous
0216C0:  20 77 6F 72 64 2C 20 61 6E 64 20 52 45 54 55 52     word, and RETUR
0216D0:  4E 20 74 6F 20 70 72 69 6E 74 20 75 70 20 74 68    N to print up th
0216E0:  65 20 77 6F 72 64 20 77 24 28 70 77 6F 72 64 29    e word w$(pword)
0216F0:  2E 0D 0A 0D 0A 20 20 20 54 48 41 54 27 53 20 41    .....   THAT'S A
021700:  4C 4C 20 46 4F 4C 4B 53 0D 0A 20 20 20 54 68 65    LL FOLKS..   The
021710:  20 6F 6E 6C 79 20 6C 69 6E 65 20 77 68 69 63 68     only line which
021720:  20 49 20 68 61 76 65 6E 27 74 20 6C 6F 6F 6B 65     I haven't looke
021730:  64 20 20 61 74 20 20 66 6F 72 20 20 79 6F 75 20    d  at  for  you 
021740:  69 6E 20 64 65 74 61 69 6C 20 69 73 20 33 30 30    in detail is 300
021750:  2C 20 77 68 69 63 68 0D 0A 20 20 20 64 6F 65 73    , which..   does
021760:  20 74 68 65 20 73 70 61 63 65 2D 73 74 72 69 70     the space-strip
021770:  70 69 6E 67 2E 20 20 49 20 74 68 69 6E 6B 20 79    ping.  I think y
021780:  6F 75 20 73 68 6F 75 6C 64 20 62 65 20 61 62 6C    ou should be abl
021790:  65 20 74 6F 20 73 65 65 20 68 6F 77 20 69 74 20    e to see how it 
0217A0:  77 6F 72 6B 73 2E 0D 0A 0D 0A 20 20 20 41 4E 59    works.....   ANY
0217B0:  20 51 55 45 53 54 49 4F 4E 53 3F 0D 0A 20 20 20     QUESTIONS?..   
0217C0:  57 65 6C 6C 2C 20 68 65 72 65 20 61 72 65 20 74    Well, here are t
0217D0:  77 6F 20 73 69 6D 70 6C 65 20 6F 6E 65 73 20 61    wo simple ones a
0217E0:  6E 73 77 65 72 65 64 3A 0D 0A 0D 0A 20 20 20 57    nswered:....   W
0217F0:  48 41 54 20 41 42 4F 55 54 20 50 55 4E 43 54 55    HAT ABOUT PUNCTU
021800:  20 6C 6B 2E 20 20 54 68 65 0D 0A 20 20 20 6E 75     lk.  The..   nu
021810:  6D 62 65 72 20 6F 66 20 6C 69 6E 6B 73 20 66 72    mber of links fr
021820:  6F 6D 20 77 6F 72 64 20 70 77 6F 72 64 20 69 73    om word pword is
021830:  20 20 73 74 6F 72 65 64 20 20 69 6E 20 6C 6B 28      stored  in lk(
021840:  70 77 6F 72 64 2C 30 29 2E 0D 0A 0D 0A 20 20 20    pword,0).....   
021850:  49 6E 20 6C 69 6E 65 73 20 34 30 30 2D 34 34 30    In lines 400-440
021860:  20 77 65 20 63 68 65 63 6B 20 74 68 72 6F 75 67     we check throug
021870:  68 20 74 68 65 20 6C 69 6E 6B 73 20 20 66 72 6F    h the links  fro
021880:  6D 20 70 77 6F 72 64 20 74 6F 20 73 65 65 20 69    m pword to see i
021890:  66 20 63 77 6F 72 64 20 69 73 0D 0A 20 20 20 61    f cword is..   a
0218A0:  6C 72 65 61 64 79 20 6C 69 73 74 65 64 20 74 68    lready listed th
0218B0:  65 72 65 2C 20 61 6E 64 20 69 66 20 69 74 20 69    ere, and if it i
0218C0:  73 20 6E 6F 74 20 77 65 20 61 64 64 20 69 74 20    s not we add it 
0218D0:  6F 6E 20 74 68 65 20 65 6E 64 2E 0D 0A 0D 0A 20    on the end..... 
0218E0:  20 20 34 30 30 20 57 65 20 73 65 74 20 6F 75 72      400 We set our
0218F0:  20 63 6F 75 6E 74 65 72 20 6A 20 74 6F 20 20 74     counter j to  t
021900:  68 65 20 20 6E 75 6D 62 65 72 20 6F 66 20 6C 69    he  number of li
021910:  6E 6B 73 20 66 72 6F 6D 20 70 77 6F 72 64 2C 20    nks from pword, 
021920:  6C 6B 28 70 77 6F 72 64 2C 30 29 2E 0D 0A 20 20    lk(pword,0)...  
021930:  20 54 68 65 20 76 61 72 69 61 62 6C 65 20 78 20     The variable x 
021940:  77 69 6C 6C 20 62 65 20 75 73 65 64 20 66 6F 72    will be used for
021950:  20 20 74 68 65 20 20 73 65 63 6F 6E 64 20 63 6F      the  second co
021960:  6F 72 64 69 6E 61 74 65 20 69 6E 20 74 68 65 20    ordinate in the 
021970:  6C 6B 20 61 72 72 61 79 2E 0D 0A 0D 0A 20 20 20    lk array.....   
021980:  34 31 30 20 6A 20 63 6F 75 6E 74 73 20 64 6F 77    410 j counts dow
021990:  6E 20 74 6F 20 7A 65 72 6F 20 74 6F 20 67 6F 20    n to zero to go 
0219A0:  20 74 68 72 6F 75 67 68 20 61 6C 6C 20 74 68 65     through all the
0219B0:  20 6C 69 6E 6B 73 2E 20 20 53 74 61 72 74 69 6E     links.  Startin
0219C0:  67 20 77 69 74 68 20 78 3D 31 0D 0A 20 20 20 61    g with x=1..   a
0219D0:  74 20 74 68 65 20 66 69 72 73 74 20 6C 69 6E 6B    t the first link
0219E0:  2C 20 77 65 20 63 68 65 63 6B 20 77 68 65 74 68    , we check wheth
0219F0:  65 72 20 63 77 6F 72 64 20 20 69 73 20 20 74 68    er cword  is  th
021A00:  64 20 20 73 70 61 63 65 73 20 61 72 65 20 73 74    d  spaces are st
021A10:  72 69 70 70 65 64 20 66 72 6F 6D 20 74 68 65 0D    ripped from the.
021A20:  0A 20 20 20 66 72 6F 6E 74 20 6F 66 20 61 24 20    .   front of a$ 
021A30:  61 67 61 69 6E 2E 20 20 57 45 4E 44 20 74 61 6B    again.  WEND tak
021A40:  65 73 20 75 73 20 20 6F 6E 20 20 74 6F 20 20 74    es us  on  to  t
021A50:  68 65 20 6E 65 78 74 20 77 6F 72 64 2C 20 75 6E    he next word, un
021A60:  74 69 6C 20 77 65 20 68 61 76 65 20 6E 6F 0D 0A    til we have no..
021A70:  20 20 20 73 70 61 63 65 73 20 6C 65 66 74 20 69       spaces left i
021A80:  6E 20 61 24 2E 0D 0A 0D 0A 20 20 20 31 33 30 20    n a$.....   130 
021A90:  49 66 20 74 68 65 72 65 20 69 73 20 61 6E 79 74    If there is anyt
021AA0:  68 69 6E 67 20 6C 65 66 74 20 69 6E 20 20 61 24    hing left in  a$
021AB0:  20 20 74 68 65 6E 20 20 69 74 20 20 69 73 20 61      then  it  is a
021AC0:  6C 73 6F 20 70 75 74 20 69 6E 74 6F 20 74 68 65    lso put into the
021AD0:  20 61 72 72 61 79 0D 0A 20 20 20 74 65 6D 70 77     array..   tempw
021AE0:  24 2E 0D 0A 0D 0A 20 20 20 4E 6F 77 20 77 65 20    $.....   Now we 
021AF0:  67 6F 20 74 68 72 6F 75 67 68 20 74 68 65 20 61    go through the a
021B00:  72 72 61 79 20 74 65 6D 70 77 24 20 6C 6F 6F 6B    rray tempw$ look
021B10:  69 6E 67 20 20 74 6F 20 73 65 65 20 69 66 20 61    ing  to see if a
021B20:  6E 79 20 6F 66 20 74 68 65 20 77 6F 72 64 73 20    ny of the words 
021B30:  61 72 65 0D 0A 20 20 20 61 6C 72 65 61 64 79 20    are..   already 
021B40:  6B 6E 6F 77 6E 20 28 69 2E 65 2E 20 69 6E 20 77    known (i.e. in w
021B50:  24 29 2E 20 20 20 54 68 65 20 20 76 61 72 69 61    $).   The  varia
021B60:  62 6C 65 73 20 20 63 77 6F 72 64 20 20 61 6E 64    bles  cword  and
021B70:  20 70 77 6F 72 64 20 61 72 65 20 75 73 65 64 20     pword are used 
021B80:  74 6F 0D 0A 20 20 20 70 6F 69 6E 74 20 74 6F 20    to..   point to 
021B90:  74 68 65 20 70 6F 73 69 74 69 6F 6E 73 20 69 6E    the positions in
021BA0:  20 74 68 65 20 20 61 72 72 61 79 20 20 77 24 20     the  array  w$ 
021BB0:  20 6F 66 20 74 68 65 20 63 75 72 72 65 6E 74 20     of the current 
021BC0:  77 6F 72 64 20 61 6E 64 20 70 72 65 76 69 6F 75    word and previou
021BD0:  73 0D 0A 20 20 20 77 6F 72 64 20 69 6E 20 74 68    s..   word in th
021BE0:  65 20 73 65 6E 74 65 6E 63 65 20 72 65 73 70 65    e sentence respe
021BF0:  63 74 69 76 65 6C 79 2E 0D 0A 0D 0A 20 20 20 31    ctively.....   1
021C00:  61 74 20 6C 69 6E 6B 2C 20 61 6E 64 20 69 66 20    at link, and if 
021C10:  69 74 20 69 73 20 6E 6F 74 0D 0A 20 20 20 77 65    it is not..   we
021C20:  20 6D 6F 76 65 20 6F 6E 20 74 6F 20 74 68 65 20     move on to the 
021C30:  6E 65 78 74 20 6C 69 6E 6B 20 62 79 20 69 6E 63    next link by inc
021C40:  72 65 61 73 69 6E 67 20 78 2E 0D 0A 0D 0A 20 20    reasing x.....  
021C50:  20 34 32 30 20 57 45 4E 44 20 69 73 20 72 65 61     420 WEND is rea
021C60:  63 68 65 64 20 65 69 74 68 65 72 20 77 68 65 6E    ched either when
021C70:  20 20 6A 3D 30 20 20 6F 72 20 20 77 68 65 6E 20      j=0  or  when 
021C80:  20 61 20 6D 61 74 63 68 20 69 73 20 66 6F 75 6E     a match is foun
021C90:  64 2C 20 69 6E 20 77 68 69 63 68 0D 0A 20 20 20    d, in which..   
021CA0:  63 61 73 65 20 6A 3E 30 20 61 6E 64 20 20 77 65    case j>0 and  we
021CB0:  20 20 67 6F 20 20 74 6F 20 20 34 34 30 20 20 77      go  to  440  w
021CC0:  68 69 63 68 20 20 73 69 6D 70 6C 79 20 20 52 45    hich  simply  RE
021CD0:  54 55 52 4E 73 20 20 75 73 20 20 74 6F 20 20 74    TURNs  us  to  t
021CE0:  68 65 20 31 30 30 2D 31 39 30 0D 0A 20 20 20 73    he 100-190..   s
021CF0:  75 62 72 6F 75 74 69 6E 65 20 61 73 20 6F 75 72    ubroutine as our
021D00:  20 61 6E 61 6C 79 73 69 73 20 69 73 20 66 69 6E     analysis is fin
021D10:  69 73 68 65 64 20 66 6F 72 20 74 68 61 74 20 77    ished for that w
021D20:  6F 72 64 2E 0D 0A 0D 0A 20 20 20 34 33 30 20 4E    ord.....   430 N
021D30:  6F 20 6D 61 74 63 68 20 68 61 73 20 62 65 65 6E    o match has been
021D40:  20 66 6F 75 6E 64 2C 20 73 6F 20 77 65 20 20 68     found, so we  h
021D50:  61 76 65 20 20 74 6F 20 61 64 64 20 61 20 6C 69    ave  to add a li
021D60:  6E 6B 20 66 6F 72 20 63 77 6F 72 64 20 6F 6E 74    nk for cword ont
021D70:  6F 20 74 68 65 0D 0A 20 20 20 65 6E 64 20 6F 66    o the..   end of
021D80:  20 74 68 65 20 6C 69 73 74 20 6F 66 20 6C 69 6E     the list of lin
021D90:  6B 73 2E 20 20 20 57 65 20 20 69 6E 63 72 65 61    ks.   We  increa
021DA0:  73 65 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66    se the number of
021DB0:  20 6C 69 6E 6B 73 2C 20 6C 6B 28 70 77 6F 72 64     links, lk(pword
021DC0:  2C 30 29 2C 0D 0A 20 20 20 62 79 20 31 20 61 6E    ,0),..   by 1 an
021DD0:  64 20 73 65 74 20 6C 6B 28 70 77 6F 72 64 2C 78    d set lk(pword,x
021DE0:  29 2C 20 77 68 69 63 68 20 20 69 73 20 20 74 68    ), which  is  th
021DF0:  65 20 75 6E 61 6C 6C 6F 63 61 74 65 64 20 6C 69    e unallocated li
021E00:  34 30 20 57 65 20 67 6F 20 74 68 72 6F 75 67 68    40 We go through
021E10:  20 74 68 65 20 77 6F 72 64 73 20 69 6E 20 20 74     the words in  t
021E20:  65 6D 70 77 24 20 6F 6E 65 20 62 79 20 6F 6E 65    empw$ one by one
021E30:  20 73 74 61 72 74 69 6E 67 20 77 69 74 68 20 74     starting with t
021E40:  65 6D 70 77 24 28 30 29 2C 0D 0A 20 20 20 74 68    empw$(0),..   th
021E50:  65 20 66 69 72 73 74 20 77 6F 72 64 20 69 6E 20    e first word in 
021E60:  74 68 65 20 20 73 65 6E 74 65 6E 63 65 2C 20 20    the  sentence,  
021E70:  61 6E 64 20 66 69 6E 69 73 68 69 6E 67 20 77 69    and finishing wi
021E80:  74 68 20 74 65 6D 70 77 24 28 77 63 6F 75 6E 74    th tempw$(wcount
021E90:  2D 31 29 2C 20 74 68 65 0D 0A 20 20 20 6C 61 73    -1), the..   las
021EA0:  74 20 77 6F 72 64 20 69 6E 20 74 68 65 20 73 65    t word in the se
021EB0:  6E 74 65 6E 63 65 2E 20 20 77 6F 72 64 24 20 69    ntence.  word$ i
021EC0:  73 20 73 65 74 20 74 6F 20 63 6F 6E 74 61 69 6E    s set to contain
021ED0:  20 74 68 65 20 63 75 72 72 65 6E 74 20 77 6F 72     the current wor
021EE0:  64 20 75 6E 64 65 72 0D 0A 20 20 20 63 6F 6E 73    d under..   cons
021EF0:  69 64 65 72 61 74 69 6F 6E 2E 0D 0A 0D 0A 20 20    ideration.....  
021F00:  20 31 35 30 20 57 65 20 67 6F 20 20 74 68 72 6F     150 We go  thro
021F10:  75 67 68 20 20 74 68 65 20 20 61 72 72 61 79 20    ugh  the  array 
021F20:  20 77 24 20 20 62 61 63 6B 77 61 72 64 73 20 20     w$  backwards  
021F30:  74 6F 20 20 6D 61 6B 65 20 20 74 68 65 20 6C 6F    to  make  the lo
021F40:  6F 70 20 73 69 6D 70 6C 65 72 2E 0D 0A 20 20 20    op simpler...   
021F50:  53 74 61 72 74 69 6E 67 20 77 69 74 68 20 74 68    Starting with th
021F60:  65 20 6C 61 73 74 20 77 6F 72 64 20 69 6E 20 20    e last word in  
021F70:  74 68 65 20 20 61 72 72 61 79 2C 20 20 77 65 20    the  array,  we 
021F80:  20 74 72 79 20 73 65 74 74 69 6E 67 20 63 77 6F     try setting cwo
021F90:  72 64 20 74 6F 20 74 68 61 74 0D 0A 20 20 20 70    rd to that..   p
021FA0:  6F 73 69 74 69 6F 6E 20 69 6E 20 74 68 65 20 61    osition in the a
021FB0:  72 72 61 79 20 61 6E 64 20 73 65 65 20 69 66 20    rray and see if 
021FC0:  74 68 65 20 77 6F 72 64 20 77 6F 72 64 24 20 6D    the word word$ m
021FD0:  61 74 63 68 65 73 20 74 68 65 20 77 6F 72 64 20    atches the word 
021FE0:  77 24 28 63 77 6F 72 64 29 0D 0A 20 20 20 73 74    w$(cword)..   st
021FF0:  6F 72 65 64 20 69 6E 20 74 68 65 20 61 72 72 61    ored in the arra
022000:  6E 6B 20 77 68 69 63 68 20 77 65 20 72 65 61 63    nk which we reac
022010:  68 65 64 0D 0A 20 20 20 77 68 65 6E 20 67 6F 69    hed..   when goi
022020:  6E 67 20 74 68 72 6F 75 67 68 20 74 68 65 20 57    ng through the W
022030:  48 49 4C 45 2D 57 45 4E 44 20 6C 6F 6F 70 2C 20    HILE-WEND loop, 
022040:  74 6F 20 62 65 20 65 71 75 61 6C 20 74 6F 20 63    to be equal to c
022050:  77 6F 72 64 2E 0D 0A 0D 0A 20 20 20 54 41 4C 4B    word.....   TALK
022060:  49 4E 47 20 42 41 43 4B 0D 0A 20 20 20 57 65 20    ING BACK..   We 
022070:  68 61 76 65 20 64 65 61 6C 74 20 77 69 74 68 20    have dealt with 
022080:  20 73 74 6F 72 69 6E 67 20 20 74 68 65 20 20 69     storing  the  i
022090:  6E 66 6F 72 6D 61 74 69 6F 6E 2E 20 20 20 48 6F    nformation.   Ho
0220A0:  77 20 20 64 6F 20 20 77 65 20 20 75 73 65 20 69    w  do  we  use i
0220B0:  74 3F 20 20 54 68 65 0D 0A 20 20 20 73 75 62 72    t?  The..   subr
0220C0:  6F 75 74 69 6E 65 73 20 69 6E 20 6C 69 6E 65 73    outines in lines
0220D0:  20 32 30 30 2D 32 33 30 20 61 6E 64 20 35 30 30     200-230 and 500
0220E0:  2D 35 31 30 20 70 72 6F 64 75 63 65 20 74 68 65    -510 produce the
0220F0:  20 63 6F 6D 70 75 74 65 72 27 73 20 73 65 6E 74     computer's sent
022100:  65 6E 63 65 2E 0D 0A 0D 0A 20 20 20 32 30 30 20    ence.....   200 
022110:  54 6F 20 73 74 61 72 74 20 74 68 65 20 73 65 6E    To start the sen
022120:  74 65 6E 63 65 2C 20 77 65 20 73 65 74 20 70 77    tence, we set pw
022130:  6F 72 64 20 74 6F 20 30 20 77 68 69 63 68 20 70    ord to 0 which p
022140:  6F 69 6E 74 73 20 74 6F 20 74 68 65 20 22 73 74    oints to the "st
022150:  61 72 74 20 6F 66 0D 0A 20 20 20 73 65 6E 74 65    art of..   sente
022160:  6E 63 65 22 20 77 6F 72 64 20 69 6E 20 77 24 2E    nce" word in w$.
022170:  20 20 20 47 4F 53 55 42 62 69 6E 67 20 20 35 30       GOSUBbing  50
022180:  30 20 20 66 65 74 63 68 65 73 20 20 61 20 20 72    0  fetches  a  r
022190:  61 6E 64 6F 6D 6C 79 20 73 65 6C 65 63 74 65 64    andomly selected
0221A0:  20 77 6F 72 64 0D 0A 20 20 20 77 68 69 63 68 20     word..   which 
0221B0:  63 61 6E 20 73 74 61 72 74 20 61 20 73 65 6E 74    can start a sent
0221C0:  65 6E 63 65 2C 20 61 6E 64 20 73 65 74 73 20 70    ence, and sets p
0221D0:  77 6F 72 64 20 74 6F 20 70 6F 69 6E 74 20 74 6F    word to point to
0221E0:  20 74 68 65 20 6E 65 77 20 77 6F 72 64 2E 0D 0A     the new word...
0221F0:  0D 0A 20 20 20 32 31 30 20 57 48 49 4C 45 20 70    ..   210 WHILE p
022200:  79 2E 20 20 49 66 20 6E 6F 74 2C 20 77 65 20 6C    y.  If not, we l
022210:  6F 6F 6B 20 20 61 74 20 20 74 68 65 20 70 72 65    ook  at  the pre
022220:  76 69 6F 75 73 20 77 6F 72 64 20 69 6E 20 77 24    vious word in w$
022230:  2E 20 20 49 66 20 77 65 0D 0A 20 20 20 66 69 6E    .  If we..   fin
022240:  64 20 61 20 6D 61 74 63 68 2C 20 63 77 6F 72 64    d a match, cword
022250:  20 77 69 6C 6C 20 62 65 20 70 6F 69 6E 74 69 6E     will be pointin
022260:  67 20 74 6F 20 6F 75 72 20 77 6F 72 64 20 69 6E    g to our word in
022270:  20 77 24 2E 0D 0A 0D 0A 20 20 20 31 36 30 20 49     w$.....   160 I
022280:  66 20 77 65 20 68 61 76 65 20 67 6F 74 20 62 61    f we have got ba
022290:  63 6B 20 74 6F 20 74 68 65 20 20 66 69 72 73 74    ck to the  first
0222A0:  20 20 77 6F 72 64 20 20 69 6E 20 77 24 20 77 69      word  in w$ wi
0222B0:  74 68 6F 75 74 20 61 20 6D 61 74 63 68 2C 20 77    thout a match, w
0222C0:  65 20 61 64 64 0D 0A 20 20 20 77 6F 72 64 24 20    e add..   word$ 
0222D0:  6F 6E 74 6F 20 74 68 65 20 65 6E 64 20 6F 66 20    onto the end of 
0222E0:  20 74 68 65 20 20 61 72 72 61 79 2C 20 20 69 6E     the  array,  in
0222F0:  63 72 65 61 73 69 6E 67 20 6E 77 6F 72 64 73 20    creasing nwords 
022300:  61 63 63 6F 72 64 69 6E 67 6C 79 2C 20 61 6E 64    accordingly, and
022310:  20 73 65 74 0D 0A 20 20 20 63 77 6F 72 64 20 74     set..   cword t
022320:  6F 20 70 6F 69 6E 74 20 74 6F 20 6F 75 72 20 6E    o point to our n
022330:  65 77 20 77 6F 72 64 20 69 6E 20 77 24 2E 0D 0A    ew word in w$...
022340:  0D 0A 20 20 20 31 37 30 20 54 68 65 20 6E 65 78    ..   170 The nex
022350:  74 20 74 68 69 6E 67 20 77 65 20 64 6F 20 20 69    t thing we do  i
022360:  73 20 20 74 6F 20 20 47 4F 53 55 42 20 20 34 30    s  to  GOSUB  40
022370:  30 20 20 74 6F 20 20 70 75 74 20 69 6E 20 74 68    0  to  put in th
022380:  65 20 6C 69 6E 6B 20 66 72 6F 6D 20 74 68 65 0D    e link from the.
022390:  0A 20 20 20 70 72 65 76 69 6F 75 73 20 77 6F 72    .   previous wor
0223A0:  64 20 69 6E 20 74 68 65 20 73 65 6E 74 65 6E 63    d in the sentenc
0223B0:  65 20 74 6F 20 74 68 65 20 63 75 72 72 65 6E 74    e to the current
0223C0:  20 77 6F 72 64 2E 20 20 49 66 20 77 65 20 61 72     word.  If we ar
0223D0:  65 20 6F 6E 20 74 68 65 20 66 69 72 73 74 0D 0A    e on the first..
0223E0:  20 20 20 77 6F 72 64 20 6F 66 20 74 68 65 20 73       word of the s
0223F0:  65 6E 74 65 6E 63 65 2C 20 70 77 6F 72 64 20 68    entence, pword h
022400:  77 6F 72 64 3E 30 20 77 65 20 68 61 76 65 20 6E    word>0 we have n
022410:  6F 74 20 67 6F 74 20 74 6F 20 74 68 65 20 22 65    ot got to the "e
022420:  6E 64 20 6F 66 20 73 65 6E 74 65 6E 63 65 22 20    nd of sentence" 
022430:  77 6F 72 64 2E 20 20 57 65 20 70 72 69 6E 74 0D    word.  We print.
022440:  0A 20 20 20 75 70 20 77 24 28 70 77 6F 72 64 29    .   up w$(pword)
022450:  20 66 6F 6C 6C 6F 77 65 64 20 62 79 20 61 20 73     followed by a s
022460:  70 61 63 65 2C 20 61 6E 64 20 20 6C 6F 6F 6B 20    pace, and  look 
022470:  66 6F 72 20 74 68 65 20 6E 65 78 74 20 77 6F 72    for the next wor
022480:  64 20 62 79 20 47 4F 53 55 42 62 69 6E 67 0D 0A    d by GOSUBbing..
022490:  20 20 20 35 30 30 2E 20 20 57 45 4E 44 20 69 73       500.  WEND is
0224A0:  20 72 65 61 63 68 65 64 20 77 68 65 6E 20 70 77     reached when pw
0224B0:  6F 72 64 3D 30 2C 20 20 69 2E 65 2E 20 20 77 65    ord=0,  i.e.  we
0224C0:  20 20 68 61 76 65 20 20 67 6F 74 20 74 6F 20 74      have  got to t
0224D0:  68 65 20 65 6E 64 20 6F 66 20 74 68 65 0D 0A 20    he end of the.. 
0224E0:  20 20 73 65 6E 74 65 6E 63 65 2E 0D 0A 0D 0A 20      sentence..... 
0224F0:  20 20 32 32 30 20 57 65 20 77 61 6E 74 20 74 6F      220 We want to
022500:  20 70 75 74 20 61 20 66 75 6C 6C 20 73 74 6F 70     put a full stop
022510:  20 6F 6E 20 20 74 68 65 20 65 6E 64 20 6F 66 20     on  the end of 
022520:  74 68 65 20 73 65 6E 74 65 6E 63 65 2C 20 73 6F    the sentence, so
022530:  20 77 65 20 6D 6F 76 65 20 74 68 65 0D 0A 20 20     we move the..  
022540:  20 63 75 72 73 6F 72 20 62 61 63 6B 20 6F 6E 65     cursor back one
022550:  20 61 6E 64 20 70 72 69 6E 74 20 61 20 66 75 6C     and print a ful
022560:  6C 20 73 74 6F 70 20 6F 76 65 72 20 74 68 65 20    l stop over the 
022570:  6C 61 73 74 20 73 70 61 63 65 2E 0D 0A 0D 0A 20    last space..... 
022580:  20 20 48 6F 77 20 64 6F 20 77 65 20 64 65 63 69      How do we deci
022590:  64 65 20 6F 6E 20 61 20 77 6F 72 64 3F 0D 0A 0D    de on a word?...
0225A0:  0A 20 20 20 35 30 30 20 57 65 20 6C 6F 6F 6B 20    .   500 We look 
0225B0:  61 74 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66    at the number of
0225C0:  20 6C 69 6E 6B 73 20 66 72 6F 6D 20 70 77 6F 72     links from pwor
0225D0:  64 2C 20 6C 6B 28 70 77 6F 72 64 2C 30 29 20 61    d, lk(pword,0) a
0225E0:  6E 64 20 73 65 74 20 69 20 74 6F 20 62 65 0D 0A    nd set i to be..
0225F0:  20 20 20 61 20 20 72 61 6E 64 6F 6D 20 20 20 6E       a  random   n
022600:  61 73 20 62 65 65 6E 20 20 73 65 74 20 20 74 6F    as been  set  to
022610:  20 20 30 20 74 6F 20 70 6F 69 6E 74 20 74 6F 20      0 to point to 
022620:  74 68 65 20 22 73 74 61 72 74 20 6F 66 0D 0A 20    the "start of.. 
022630:  20 20 73 65 6E 74 65 6E 63 65 22 20 77 6F 72 64      sentence" word
022640:  20 69 6E 20 77 24 2E 20 20 41 66 74 65 72 20 70     in w$.  After p
022650:  75 74 74 69 6E 67 20 20 69 6E 20 20 74 68 65 20    utting  in  the 
022660:  20 6C 69 6E 6B 20 20 77 65 20 6D 6F 76 65 20 6F     link  we move o
022670:  6E 74 6F 20 74 68 65 20 6E 65 78 74 0D 0A 20 20    nto the next..  
022680:  20 77 6F 72 64 20 69 6E 20 74 65 6D 70 77 24 2E     word in tempw$.
022690:  0D 0A 0D 0A 20 20 20 31 38 30 20 4F 6E 63 65 20    ....   180 Once 
0226A0:  77 65 20 68 61 76 65 20 72 65 61 63 68 65 64 20    we have reached 
0226B0:  74 68 65 20 65 6E 64 20 6F 66 20 74 68 65 20 20    the end of the  
0226C0:  77 6F 72 64 73 20 69 6E 20 74 65 6D 70 77 24 20    words in tempw$ 
0226D0:  77 65 20 68 61 76 65 20 74 6F 20 70 75 74 20 69    we have to put i
0226E0:  6E 0D 0A 20 20 20 61 20 6C 69 6E 6B 20 66 72 6F    n..   a link fro
0226F0:  6D 20 74 68 65 20 6C 61 73 74 20 77 6F 72 64 20    m the last word 
022700:  74 6F 20 74 68 65 20 22 65 6E 64 20 6F 66 20 73    to the "end of s
022710:  65 6E 74 65 6E 63 65 22 20 77 6F 72 64 20 69 6E    entence" word in
022720:  20 77 24 2C 20 73 6F 20 63 77 6F 72 64 20 69 73     w$, so cword is
022730:  0D 0A 20 20 20 73 65 74 20 74 6F 20 30 20 28 70    ..   set to 0 (p
022740:  77 6F 72 64 20 69 73 20 61 6C 72 65 61 64 79 20    word is already 
022750:  70 6F 69 6E 74 69 6E 67 20 20 74 6F 20 20 74 68    pointing  to  th
022760:  65 20 6C 61 73 74 20 77 6F 72 64 20 66 72 6F 6D    e last word from
022770:  20 74 65 6D 70 77 24 29 20 61 6E 64 20 77 65 0D     tempw$) and we.
022780:  0A 20 20 20 47 4F 53 55 42 20 34 30 30 20 61 67    .   GOSUB 400 ag
022790:  61 69 6E 20 74 6F 20 70 75 74 20 69 6E 20 74 68    ain to put in th
0227A0:  65 20 6C 69 6E 6B 2E 0D 0A 0D 0A 20 20 20 4C 49    e link.....   LI
0227B0:  4E 4B 49 4E 47 20 42 49 54 53 0D 0A 20 20 20 54    NKING BITS..   T
0227C0:  68 65 20 6C 69 6E 6B 20 66 72 6F 6D 20 77 6F 72    he link from wor
0227D0:  64 20 70 77 6F 72 64 20 74 6F 20 20 77 6F 72 64    d pword to  word
0227E0:  20 20 63 77 6F 72 64 20 20 69 73 20 20 73 74 6F      cword  is  sto
0227F0:  72 65 64 20 69 6E 20 74 68 65 20 61 72 72 61 79    red in the array
022800:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
022810:  1D 00 01 00 02 09 4E E5 1D 00 C3 02 00 00 00 02    ......N.........
022820:  1D 00 C8 02 00 00 00 02 1D 00 C4 02 00 00 00 02    ................
022830:  1D 00 C9 02 00 00 00 02 1D 00 C5 02 00 00 00 02    ................
022840:  1D 00 C1 02 00 00 00 02 1D 00 C6 02 00 00 00 02    ................
022850:  1D 00 C2 02 00 00 00 02 1D 00 C7 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:  0D 0A 20 20 20 6D 77 6F 72 64 73 09 6D 61 78 69    ..   mwords.maxi
022910:  6D 75 6D 20 6E 75 6D 62 65 72 20 6F 66 20 77 6F    mum number of wo
022920:  72 64 73 20 68 65 6C 64 20 69 6E 20 77 24 0D 0A    rds held in w$..
022930:  20 20 20 6D 6C 69 6E 6B 73 09 6D 61 78 69 6D 75       mlinks.maximu
022940:  6D 20 6E 75 6D 62 65 72 20 6F 66 20 6C 69 6E 6B    m number of link
022950:  73 20 69 6E 20 74 68 65 20 6C 6B 20 61 72 72 61    s in the lk arra
022960:  79 0D 0A 20 20 20 6E 77 6F 72 64 73 09 63 75 72    y..   nwords.cur
022970:  72 65 6E 74 20 74 6F 74 61 6C 20 6E 75 6D 62 65    rent total numbe
022980:  72 20 6F 66 20 77 6F 72 64 73 20 68 65 6C 64 20    r of words held 
022990:  69 6E 20 77 24 0D 0A 20 20 20 77 63 6F 75 6E 74    in w$..   wcount
0229A0:  09 63 6F 75 6E 74 65 72 20 66 6F 72 20 77 6F 72    .counter for wor
0229B0:  64 73 20 69 6E 20 74 65 6D 70 77 24 0D 0A 20 20    ds in tempw$..  
0229C0:  20 77 6F 72 64 24 09 74 65 6D 70 6F 72 61 72 79     word$.temporary
0229D0:  20 76 61 72 69 61 62 6C 65 20 74 6F 20 68 6F 6C     variable to hol
0229E0:  64 20 74 68 65 20 63 75 72 72 65 6E 74 20 77 6F    d the current wo
0229F0:  72 64 20 75 6E 64 65 72 20 61 6E 61 6C 79 73 69    rd under analysi
022A00:  73 0D 0A 20 20 20 70 77 6F 72 64 09 70 6F 69 6E    s..   pword.poin
022A10:  74 73 20 74 6F 20 74 68 65 20 70 6F 73 69 74 69    ts to the positi
022A20:  6F 6E 20 69 6E 20 77 24 20 6F 66 20 70 72 65 76    on in w$ of prev
022A30:  69 6F 75 73 20 77 6F 72 64 20 69 6E 20 74 68 65    ious word in the
022A40:  20 73 65 6E 74 65 6E 63 65 0D 0A 20 20 20 63 77     sentence..   cw
022A50:  6F 72 64 09 70 6F 69 6E 74 73 20 74 6F 20 74 68    ord.points to th
022A60:  65 20 70 6F 73 69 74 69 6F 6E 20 69 6E 20 77 24    e position in w$
022A70:  20 6F 66 20 63 75 72 72 65 6E 74 20 77 6F 72 64     of current word
022A80:  20 69 6E 20 74 68 65 20 73 65 6E 74 65 6E 63 65     in the sentence
022A90:  0D 0A 20 20 20 69 2C 20 6A 09 09 63 6F 75 6E 74    ..   i, j..count
022AA0:  65 72 20 76 61 72 69 61 62 6C 65 73 2E 0D 0A 20    er variables... 
022AB0:  20 20 78 09 09 76 61 72 69 61 62 6C 65 20 75 73      x..variable us
022AC0:  65 64 20 69 6E 20 67 6F 69 6E 67 20 74 68 72 6F    ed in going thro
022AD0:  75 67 68 20 74 68 65 20 6C 69 6E 6B 73 20 61 72    ugh the links ar
022AE0:  72 61 79 0D 0A 1A 20 69 64 6C 65 20 20 61 6E 64    ray... idle  and
022AF0:  20 20 6C 6F 6E 65 6C 79 20 20 6D 6F 6D 65 6E 74      lonely  moment
022B00:  65 20 64 6F 6E 65 20 69 74 20 61 6C 6C 2C 20 73    e done it all, s
022B10:  6F 20 77 65 20 43 4C 4F 53 45 4F 55 54 20 74 6F    o we CLOSEOUT to
022B20:  20 66 69 6E 69 73 68 20 77 69 74 68 20 74 68 65     finish with the
022B30:  20 66 69 6C 65 2E 0D 0A 0D 0A 20 20 20 4E 6F 74     file.....   Not
022B40:  65 20 74 68 61 74 20 6C 6F 61 64 69 6E 67 20 69    e that loading i
022B50:  6E 20 76 6F 63 61 62 75 6C 61 72 79 20 77 69 6C    n vocabulary wil
022B60:  6C 20 20 6F 76 65 72 77 72 69 74 65 20 61 6E 79    l  overwrite any
022B70:  20 65 78 69 73 74 69 6E 67 20 76 6F 63 61 62 75     existing vocabu
022B80:  6C 61 72 79 20 69 6E 0D 0A 20 20 20 74 68 65 20    lary in..   the 
022B90:  61 72 72 61 79 73 2E 0D 0A 0D 0A 20 20 20 53 54    arrays.....   ST
022BA0:  49 4C 4C 20 54 4F 20 43 4F 4D 45 0D 0A 20 20 20    ILL TO COME..   
022BB0:  4E 65 78 74 20 6D 6F 6E 74 68 20 77 65 20 77 69    Next month we wi
022BC0:  6C 6C 20 6C 6F 6F 6B 20 61 74 20 73 6F 6D 65 20    ll look at some 
022BD0:  20 6D 6F 72 65 20 20 77 61 79 73 20 6F 66 20 69     more  ways of i
022BE0:  6D 70 72 6F 76 69 6E 67 20 74 68 65 20 70 72 6F    mproving the pro
022BF0:  67 72 61 6D 2E 20 20 54 68 65 0D 0A 20 20 20 76    gram.  The..   v
022C00:  65 72 73 69 6F 6E 20 68 65 72 65 20 69 73 20 76    ersion here is v
022C10:  65 72 79 20 62 61 73 69 63 20 62 75 74 20 73 68    ery basic but sh
022C20:  6F 75 6C 64 20 6B 65 65 70 20 79 6F 75 20 62 75    ould keep you bu
022C30:  73 79 20 66 6F 72 20 61 20 6D 6F 6E 74 68 20 61    sy for a month a
022C40:  73 20 6C 6F 6E 67 20 61 73 0D 0A 20 20 20 79 6F    s long as..   yo
022C50:  75 20 64 6F 6E 27 74 20 68 61 76 65 20 74 6F 6F    u don't have too
022C60:  20 20 6D 61 6E 79 20 20 62 6F 72 65 64 20 20 6F      many  bored  o
022C70:  72 20 20 6C 6F 6E 65 6C 79 20 20 6D 6F 6D 65 6E    r  lonely  momen
022C80:  74 73 2E 20 20 20 52 65 6D 65 6D 62 65 72 20 74    ts.   Remember t
022C90:  68 61 74 20 74 68 69 73 0D 0A 20 20 20 70 72 6F    hat this..   pro
022CA0:  67 72 61 6D 20 20 61 6E 64 20 20 61 6C 6C 20 20    gram  and  all  
022CB0:  74 68 65 20 20 6F 74 68 65 72 73 20 20 66 72 6F    the  others  fro
022CC0:  6D 20 20 74 68 65 20 20 73 65 72 69 65 73 20 20    m  the  series  
022CD0:  61 72 65 20 20 61 76 61 69 6C 61 62 6C 65 20 20    are  available  
022CE0:  6F 6E 20 20 74 68 65 0D 0A 20 20 20 50 72 6F 67    on  the..   Prog
022CF0:  72 61 6D 6D 65 72 73 27 20 50 61 74 63 68 20 64    rammers' Patch d
022D00:  23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61    #Programmers' Pa
022D10:  74 63 68 20 31 36 20 63 6F 6E 74 69 6E 75 65 64    tch 16 continued
022D20:  0D 0A 20 20 20 41 4E 20 45 4E 48 41 4E 43 45 4D    ..   AN ENHANCEM
022D30:  45 4E 54 20 49 20 50 52 45 50 41 52 45 44 20 45    ENT I PREPARED E
022D40:  41 52 4C 49 45 52 0D 0A 20 20 20 49 20 6D 65 6E    ARLIER..   I men
022D50:  74 69 6F 6E 65 64 20 65 61 72 6C 69 65 72 20 74    tioned earlier t
022D60:  68 61 74 20 20 77 65 20 20 6D 69 67 68 74 20 20    hat  we  might  
022D70:  77 61 6E 74 20 20 74 6F 20 20 62 65 20 20 61 62    want  to  be  ab
022D80:  6C 65 20 20 74 6F 20 20 6C 6F 61 64 20 61 6E 64    le  to  load and
022D90:  20 73 61 76 65 0D 0A 20 20 20 76 6F 63 61 62 75     save..   vocabu
022DA0:  6C 61 72 79 2E 20 20 4F 6E 65 20 77 61 79 20 74    lary.  One way t
022DB0:  6F 20 64 6F 20 74 68 69 73 20 20 77 68 69 6C 65    o do this  while
022DC0:  20 20 74 68 65 20 20 70 72 6F 67 72 61 6D 20 69      the  program i
022DD0:  73 20 72 75 6E 6E 69 6E 67 20 69 73 20 74 6F 20    s running is to 
022DE0:  6C 6F 6F 6B 0D 0A 20 20 20 6F 75 74 20 66 6F 72    look..   out for
022DF0:  20 63 6F 6D 6D 61 6E 64 73 20 74 79 70 65 64 20     commands typed 
022E00:  20 62 79 20 20 74 68 65 20 20 75 73 65 72 20 20     by  the  user  
022E10:  77 68 69 63 68 20 20 77 6F 75 6C 64 6E 27 74 20    which  wouldn't 
022E20:  20 62 65 20 20 75 73 65 64 20 69 6E 20 6E 6F 72     be  used in nor
022E30:  6D 61 6C 0D 0A 20 20 20 73 70 65 65 63 68 2E 20    mal..   speech. 
022E40:  20 49 66 20 79 6F 75 20 61 64 64 20 69 6E 20 74     If you add in t
022E50:  68 65 20 65 78 74 72 61 20 6C 69 6E 65 73 20 20    he extra lines  
022E60:  34 31 2C 20 34 32 20 61 6E 64 20 36 30 30 2D 37    41, 42 and 600-7
022E70:  34 30 20 62 65 6C 6F 77 20 74 68 69 73 20 77 69    40 below this wi
022E80:  6C 6C 0D 0A 20 20 20 6D 61 6B 65 20 74 68 65 20    ll..   make the 
022E90:  63 6F 6D 70 75 74 65 72 20 72 65 73 70 6F 6E 64    computer respond
022EA0:  20 20 64 69 66 66 65 72 65 6E 74 6C 79 20 20 74      differently  t
022EB0:  6F 20 20 73 65 6E 74 65 6E 63 65 73 20 62 65 67    o  sentences beg
022EC0:  69 6E 6E 69 6E 67 20 77 69 74 68 20 2A 4C 4F 41    inning with *LOA
022ED0:  44 0D 0A 20 20 20 61 6E 64 20 2A 53 41 56 45 2E    D..   and *SAVE.
022EE0:  20 20 3C 3C 54 68 69 73 20 76 65 72 73 69 6F 6E      <<This version
022EF0:  20 69 73 20 73 61 76 65 64 20 61 73 20 41 49 32     is saved as AI2
022F00:  69 73 63 2C 20 50 44 20 39 38 2C 20 66 72 6F 6D    isc, PD 98, from
022F10:  20 44 61 76 65 20 53 74 69 74 73 6F 6E 2E 0D 0A     Dave Stitson...
022F20:  1A 0A 20 20 20 41 4E 20 45 4E 48 41 4E 43 45 4D    ..   AN ENHANCEM
022F30:  45 4E 54 20 49 20 50 52 45 50 41 52 45 44 20 45    ENT I PREPARED E
022F40:  41 52 4C 49 45 52 0D 0A 20 20 20 49 20 6D 65 6E    ARLIER..   I men
022F50:  74 69 6F 6E 65 64 20 65 61 72 6C 69 65 72 20 74    tioned earlier t
022F60:  68 61 74 20 20 77 65 20 20 6D 69 67 68 74 20 20    hat  we  might  
022F70:  77 61 6E 74 20 20 74 6F 20 20 62 65 20 20 61 62    want  to  be  ab
022F80:  6C 61 72 79 20 69 6E 0D 0A 20 20 20 74 68 65 20    lary in..   the 
022F90:  61 72 72 61 79 73 2E 0D 0A 0D 0A 20 20 20 53 54    arrays.....   ST
022FA0:  49 4C 4C 20 54 4F 20 43 4F 4D 45 0D 0A 20 20 20    ILL TO COME..   
022FB0:  4E 65 78 74 20 6D 6F 6E 74 68 20 77 65 20 77 69    Next month we wi
022FC0:  6C 6C 20 6C 6F 6F 6B 20 61 74 20 73 6F 6D 65 20    ll look at some 
022FD0:  20 6D 6F 72 65 20 20 77 61 79 73 20 6F 66 20 69     more  ways of i
022FE0:  6D 70 72 6F 76 69 6E 67 20 74 68 65 20 70 72 6F    mproving the pro
022FF0:  67 72 61 6D 2E 20 20 54 68 65 0D 0A 20 20 20 76    gram.  The..   v
023000:  65 72 73 69 6F 6E 20 68 65 72 65 20 69 73 20 76    ersion here is v
023010:  65 72 79 20 62 61 73 69 63 20 62 75 74 20 73 68    ery basic but sh
023020:  6F 75 6C 64 20 6B 65 65 70 20 79 6F 75 20 62 75    ould keep you bu
023030:  73 79 20 66 6F 72 20 61 20 6D 6F 6E 74 68 20 61    sy for a month a
023040:  73 20 6C 6F 6E 67 20 61 73 0D 0A 20 20 20 79 6F    s long as..   yo
023050:  75 20 64 6F 6E 27 74 20 68 61 76 65 20 74 6F 6F    u don't have too
023060:  20 20 6D 61 6E 79 20 20 62 6F 72 65 64 20 20 6F      many  bored  o
023070:  72 20 20 6C 6F 6E 65 6C 79 20 20 6D 6F 6D 65 6E    r  lonely  momen
023080:  74 73 2E 20 20 20 52 65 6D 65 6D 62 65 72 20 74    ts.   Remember t
023090:  68 61 74 20 74 68 69 73 0D 0A 20 20 20 70 72 6F    hat this..   pro
0230A0:  67 72 61 6D 20 20 61 6E 64 20 20 61 6C 6C 20 20    gram  and  all  
0230B0:  74 68 65 20 20 6F 74 68 65 72 73 20 20 66 72 6F    the  others  fro
0230C0:  6D 20 20 74 68 65 20 20 73 65 72 69 65 73 20 20    m  the  series  
0230D0:  61 72 65 20 20 61 76 61 69 6C 61 62 6C 65 20 20    are  available  
0230E0:  6F 6E 20 20 74 68 65 0D 0A 20 20 20 50 72 6F 67    on  the..   Prog
0230F0:  72 61 6D 6D 65 72 73 27 20 50 61 74 63 68 20 64    rammers' Patch d
023100:  2E 42 41 53 20 6F 6E 20 74 68 65 20 64 69 73 63    .BAS on the disc
023110:  2E 3E 3E 0D 0A 0D 0A 20 20 20 20 20 20 34 31 20    .>>....      41 
023120:  20 49 46 20 55 50 50 45 52 24 28 4C 45 46 54 24     IF UPPER$(LEFT$
023130:  28 61 24 2C 35 29 29 3D 22 2A 4C 4F 41 44 22 20    (a$,5))="*LOAD" 
023140:  54 48 45 4E 20 47 4F 53 55 42 20 36 30 30 3A 47    THEN GOSUB 600:G
023150:  4F 54 4F 20 34 30 0D 0A 20 20 20 20 20 20 34 32    OTO 40..      42
023160:  20 20 49 46 20 55 50 50 45 52 24 28 4C 45 46 54      IF UPPER$(LEFT
023170:  24 28 61 24 2C 35 29 29 3D 22 2A 53 41 56 45 22    $(a$,5))="*SAVE"
023180:  20 54 48 45 4E 20 47 4F 53 55 42 20 37 30 30 3A     THEN GOSUB 700:
023190:  47 4F 54 4F 20 34 30 0D 0A 20 20 20 20 20 20 36    GOTO 40..      6
0231A0:  30 30 20 66 69 6C 65 24 3D 4D 49 44 24 28 61 24    00 file$=MID$(a$
0231B0:  2C 37 29 3A 49 46 20 66 69 6C 65 24 3D 22 22 20    ,7):IF file$="" 
0231C0:  54 48 45 4E 20 66 69 6C 65 24 3D 22 56 4F 43 41    THEN file$="VOCA
0231D0:  42 22 0D 0A 20 20 20 20 20 20 36 31 30 20 4F 50    B"..      610 OP
0231E0:  45 4E 49 4E 20 66 69 6C 65 24 3A 49 4E 50 55 54    ENIN file$:INPUT
0231F0:  23 39 2C 6E 77 6F 72 64 73 0D 0A 20 20 20 20 20    #9,nwords..     
023200:  20 36 32 30 20 46 4F 52 20 69 3D 30 20 54 4F 20     620 FOR i=0 TO 
023210:  6E 77 6F 72 64 73 3A 49 4E 50 55 54 23 39 2C 77    nwords:INPUT#9,w
023220:  24 28 69 29 2C 6C 6B 28 69 2C 30 29 0D 0A 20 20    $(i),lk(i,0)..  
023230:  20 20 20 20 36 33 30 20 46 4F 52 20 6A 3D 31 20        630 FOR j=1 
023240:  54 4F 20 6C 6B 28 69 2C 30 29 3A 49 4E 50 55 54    TO lk(i,0):INPUT
023250:  23 39 2C 6C 6B 28 69 2C 6A 29 3A 4E 45 58 54 3A    #9,lk(i,j):NEXT:
023260:  4E 45 58 54 0D 0A 20 20 20 20 20 20 36 34 30 20    NEXT..      640 
023270:  43 4C 4F 53 45 49 4E 3A 52 45 54 55 52 4E 0D 0A    CLOSEIN:RETURN..
023280:  20 20 20 20 20 20 37 30 30 20 66 69 6C 65 24 3D          700 file$=
023290:  4D 49 44 24 28 61 24 2C 37 29 3A 49 46 20 66 69    MID$(a$,7):IF fi
0232A0:  6C 65 24 3D 22 22 20 54 48 45 4E 20 66 69 6C 65    le$="" THEN file
0232B0:  24 3D 22 56 4F 43 41 42 22 0D 0A 20 20 20 20 20    $="VOCAB"..     
0232C0:  20 37 31 30 20 4F 50 45 4E 4F 55 54 20 66 69 6C     710 OPENOUT fil
0232D0:  65 24 3A 57 52 49 54 45 23 39 2C 6E 77 6F 72 64    e$:WRITE#9,nword
0232E0:  73 0D 0A 20 20 20 20 20 20 37 32 30 20 46 4F 52    s..      720 FOR
0232F0:  20 69 3D 30 20 54 4F 20 6E 77 6F 72 64 73 3A 57     i=0 TO nwords:W
023300:  41 54 49 4F 4E 3F 0D 0A 20 20 20 49 66 20 79 6F    ATION?..   If yo
023310:  75 20 70 75 74 20 61 20 70 75 6E 63 74 75 61 74    u put a punctuat
023320:  69 6F 6E 20 6D 61 72 6B 20 20 6F 6E 20 20 74 68    ion mark  on  th
023330:  65 20 20 65 6E 64 20 20 6F 66 20 20 61 20 77 6F    e  end  of  a wo
023340:  72 64 20 74 68 65 20 63 6F 6D 70 75 74 65 72 20    rd the computer 
023350:  77 6F 6E 27 74 0D 0A 20 20 20 72 65 61 6C 69 73    won't..   realis
023360:  65 20 74 68 61 74 20 74 68 65 20 70 75 6E 63 74    e that the punct
023370:  75 61 74 69 6F 6E 20 69 73 20 6E 6F 74 20 20 61    uation is not  a
023380:  20 20 70 61 72 74 20 20 6F 66 20 20 74 68 65 20      part  of  the 
023390:  20 77 6F 72 64 20 61 73 20 74 68 65 72 65 20 69     word as there i
0233A0:  73 20 6E 6F 0D 0A 20 20 20 73 70 61 63 65 20 62    s no..   space b
0233B0:  65 74 77 65 65 6E 20 74 68 65 20 77 6F 72 64 20    etween the word 
0233C0:  61 6E 64 20 20 74 68 65 20 20 70 75 6E 63 74 75    and  the  punctu
0233D0:  61 74 69 6F 6E 20 20 6D 61 72 6B 2E 20 20 20 46    ation  mark.   F
0233E0:  6F 72 20 65 78 61 6D 70 6C 65 2C 20 69 74 20 77    or example, it w
0233F0:  69 6C 6C 0D 0A 20 20 20 74 72 65 61 74 20 22 68    ill..   treat "h
023400:  6F 77 65 76 65 72 22 20 61 6E 64 20 22 68 6F 77    owever" and "how
023410:  65 76 65 72 2C 22 20 61 73 20 74 77 6F 20 64 69    ever," as two di
023420:  66 66 65 72 65 6E 74 20 77 6F 72 64 73 2E 0D 0A    fferent words...
023430:  0D 0A 20 20 20 53 6F 20 69 66 20 79 6F 75 20 65    ..   So if you e
023440:  6E 64 20 79 6F 75 72 20 73 65 6E 74 65 6E 63 65    nd your sentence
023450:  73 20 77 69 74 68 20 20 61 20 20 66 75 6C 6C 20    s with  a  full 
023460:  73 74 6F 70 2C 20 74 68 65 20 63 6F 6D 70 75 74    stop, the comput
023470:  65 72 20 77 69 6C 6C 20 65 6E 64 20 61 6C 6C 0D    er will end all.
023480:  0A 20 20 20 6F 66 20 69 74 73 20 73 65 6E 74 65    .   of its sente
023490:  6E 63 65 73 20 77 69 74 68 20 74 77 6F 20 66 75    nces with two fu
0234A0:  6C 6C 20 73 74 6F 70 73 2E 20 20 49 66 20 79 6F    ll stops.  If yo
0234B0:  75 20 77 61 6E 74 20 74 6F 20 75 73 65 20 70 75    u want to use pu
0234C0:  6E 63 74 75 61 74 69 6F 6E 20 74 68 65 6E 0D 0A    nctuation then..
0234D0:  20 20 20 69 74 20 6D 61 79 20 69 6D 70 72 6F 76       it may improv
0234E0:  65 20 74 68 65 20 63 6F 6D 70 75 74 65 72 27 73    e the computer's
0234F0:  20 67 72 61 6D 6D 61 72 2C 20 20 62 75 74 20 20     grammar,  but  
023500:  52 49 54 45 23 39 2C 77 24 28 69 29 2C 6C 6B 28    RITE#9,w$(i),lk(
023510:  69 2C 30 29 0D 0A 20 20 20 20 20 20 37 33 30 20    i,0)..      730 
023520:  46 4F 52 20 6A 3D 31 20 54 4F 20 6C 6B 28 69 2C    FOR j=1 TO lk(i,
023530:  30 29 3A 57 52 49 54 45 23 39 2C 6C 6B 28 69 2C    0):WRITE#9,lk(i,
023540:  6A 29 3A 4E 45 58 54 3A 4E 45 58 54 0D 0A 20 20    j):NEXT:NEXT..  
023550:  20 20 20 20 37 34 30 20 43 4C 4F 53 45 4F 55 54        740 CLOSEOUT
023560:  3A 52 45 54 55 52 4E 0D 0A 0D 0A 20 20 20 4C 69    :RETURN....   Li
023570:  6E 65 73 20 36 30 30 2D 36 34 30 20 64 65 61 6C    nes 600-640 deal
023580:  20 77 69 74 68 20 6C 6F 61 64 69 6E 67 20 69 6E     with loading in
023590:  20 20 76 6F 63 61 62 75 6C 61 72 79 20 61 6E 64      vocabulary and
0235A0:  20 37 30 30 2D 37 34 30 20 77 69 74 68 20 73 61     700-740 with sa
0235B0:  76 69 6E 67 20 69 74 2E 0D 0A 20 20 20 4C 65 74    ving it...   Let
0235C0:  27 73 20 6C 6F 6F 6B 20 61 74 20 74 68 65 20 73    's look at the s
0235D0:  61 76 69 6E 67 20 20 72 6F 75 74 69 6E 65 2E 20    aving  routine. 
0235E0:  20 20 54 68 65 20 20 6C 6F 61 64 69 6E 67 20 72      The  loading r
0235F0:  6F 75 74 69 6E 65 20 77 6F 72 6B 73 20 69 6E 20    outine works in 
023600:  65 78 61 63 74 6C 79 0D 0A 20 20 20 74 68 65 20    exactly..   the 
023610:  73 61 6D 65 20 77 61 79 2C 20 65 78 63 65 70 74    same way, except
023620:  20 74 68 61 74 20 69 74 20 20 75 73 65 73 20 20     that it  uses  
023630:  49 4E 50 55 54 23 39 20 20 74 6F 20 69 6E 70 75    INPUT#9  to inpu
023640:  74 20 66 72 6F 6D 20 64 69 73 63 20 69 6E 73 74    t from disc inst
023650:  65 61 64 20 6F 66 0D 0A 20 20 20 57 52 49 54 45    ead of..   WRITE
023660:  23 39 20 74 6F 20 77 72 69 74 65 20 74 6F 20 64    #9 to write to d
023670:  69 73 63 2E 0D 0A 0D 0A 20 20 20 37 30 30 20 57    isc.....   700 W
023680:  65 20 6C 6F 6F 6B 20 74 6F 20 73 65 65 20 69 66    e look to see if
023690:  20 74 68 65 20 75 73 65 72 20 20 68 61 73 20 20     the user  has  
0236A0:  74 79 70 65 64 20 61 20 66 69 6C 65 6E 61 6D 65    typed a filename
0236B0:  20 61 66 74 65 72 20 2A 53 41 56 45 2C 20 65 2E     after *SAVE, e.
0236C0:  67 2E 20 69 66 0D 0A 20 20 20 74 68 65 79 20 68    g. if..   they h
0236D0:  61 76 65 20 74 79 70 65 64 20 2A 53 41 56 45 20    ave typed *SAVE 
0236E0:  4F 75 72 57 6F 72 64 73 20 2D 20 69 6E 20 77 68    OurWords - in wh
0236F0:  69 63 68 20 63 61 73 65 20 66 69 6C 65 24 3D 22    ich case file$="
023700:  79 6F 75 20 77 69 6C 6C 20 6E 65 65 64 20 74 6F    you will need to
023710:  20 69 6E 63 72 65 61 73 65 20 74 68 65 0D 0A 20     increase the.. 
023720:  20 20 77 6F 72 64 20 6C 69 6D 69 74 20 61 6E 64      word limit and
023730:  20 74 61 6B 65 20 6F 75 74 20 74 68 65 20 6C 69     take out the li
023740:  6E 65 20 20 69 6E 20 20 74 68 65 20 70 72 6F 67    ne  in  the prog
023750:  72 61 6D 20 77 68 69 63 68 20 70 72 69 6E 74 73    ram which prints
023760:  20 75 70 20 74 68 65 20 66 75 6C 6C 0D 0A 20 20     up the full..  
023770:  20 73 74 6F 70 2E 0D 0A 0D 0A 20 20 20 41 4E 44     stop.....   AND
023780:  20 43 41 50 49 54 41 4C 20 4C 45 54 54 45 52 53     CAPITAL LETTERS
023790:  3F 0D 0A 20 20 20 54 68 65 20 70 72 6F 67 72 61    ?..   The progra
0237A0:  6D 20 74 72 65 61 74 73 20 61 20 63 61 70 69 74    m treats a capit
0237B0:  61 6C 69 73 65 64 20 20 77 6F 72 64 20 20 64 69    alised  word  di
0237C0:  66 66 65 72 65 6E 74 6C 79 20 66 72 6F 6D 20 61    fferently from a
0237D0:  20 6E 6F 6E 2D 63 61 70 69 74 61 6C 69 73 65 64     non-capitalised
0237E0:  0D 0A 20 20 20 6F 6E 65 2C 20 65 2E 67 2E 20 69    ..   one, e.g. i
0237F0:  74 20 77 69 6C 6C 20 74 68 69 6E 6B 20 74 68 61    t will think tha
023800:  74 20 20 22 59 6F 75 22 20 20 61 6E 64 20 20 22    t  "You"  and  "
023810:  79 6F 75 22 20 61 72 65 20 64 69 66 66 65 72 65    you" are differe
023820:  6E 74 20 77 6F 72 64 73 2E 20 20 54 68 69 73 0D    nt words.  This.
023830:  0A 20 20 20 77 61 73 20 74 68 65 20 20 6F 6E 6C    .   was the  onl
023840:  79 20 20 77 61 79 20 20 77 65 20 20 63 6F 75 6C    y  way  we  coul
023850:  64 20 20 73 65 65 20 20 74 6F 20 20 6D 61 6B 65    d  see  to  make
023860:  20 20 73 75 72 65 20 20 69 74 20 20 63 61 70 69      sure  it  capi
023870:  74 61 6C 69 73 65 64 20 74 68 69 6E 67 73 0D 0A    talised things..
023880:  20 20 20 63 6F 72 72 65 63 74 6C 79 2E 0D 0A 0D       correctly....
023890:  0A 61 72 74 69 63 6C 65 20 63 6F 6E 74 69 6E 75    .article continu
0238A0:  65 64 2E 2E 2E 2E 0D 0A 0D 0A 20 20 20 2D 2D 2D    ed........   ---
0238B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0238C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0238D0:  2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 20 20 20 46 69 67    --------..   Fig
0238E0:  75 72 65 20 32 0D 0A 0D 0A 20 20 20 54 41 42 4C    ure 2....   TABL
0238F0:  45 20 4F 46 20 56 41 52 49 41 42 4C 45 53 0D 0A    E OF VARIABLES..
023900:  4F 75 72 57 6F 72 64 73 22 2E 20 20 49 66 20 74    OurWords".  If t
023910:  68 65 72 65 0D 0A 20 20 20 69 73 20 6E 6F 74 68    here..   is noth
023920:  69 6E 67 20 66 6F 6C 6C 6F 77 69 6E 67 20 74 68    ing following th
023930:  65 20 2A 53 41 56 45 20 63 6F 6D 6D 61 6E 64 20    e *SAVE command 
023940:  77 65 20 75 73 65 20 74 68 65 20 64 65 66 61 75    we use the defau
023950:  6C 74 20 66 69 6C 65 6E 61 6D 65 20 56 4F 43 41    lt filename VOCA
023960:  42 2E 0D 0A 0D 0A 20 20 20 37 31 30 20 57 65 20    B.....   710 We 
023970:  4F 50 45 4E 4F 55 54 20 74 68 65 20 66 69 6C 65    OPENOUT the file
023980:  20 6E 61 6D 65 64 20 20 66 69 6C 65 24 20 20 66     named  file$  f
023990:  6F 72 20 20 77 72 69 74 69 6E 67 2C 20 61 6E 64    or  writing, and
0239A0:  20 74 68 65 20 66 69 72 73 74 20 74 68 69 6E 67     the first thing
0239B0:  20 77 65 0D 0A 20 20 20 57 52 49 54 45 20 69 73     we..   WRITE is
0239C0:  20 6E 77 6F 72 64 73 2C 20 74 68 65 20 6E 75 6D     nwords, the num
0239D0:  62 65 72 20 6F 66 20 77 6F 72 64 73 20 69 6E 20    ber of words in 
0239E0:  74 68 65 20 76 6F 63 61 62 75 6C 61 72 79 2E 0D    the vocabulary..
0239F0:  0A 0D 0A 20 20 20 37 32 30 20 4E 6F 77 20 66 6F    ...   720 Now fo
023A00:  72 20 65 61 63 68 20 77 6F 72 64 20 69 2C 20 77    r each word i, w
023A10:  65 20 57 52 49 54 45 20 77 24 28 69 29 20 28 74    e WRITE w$(i) (t
023A20:  68 65 20 77 6F 72 64 20 69 74 73 65 6C 66 29 20    he word itself) 
023A30:  61 6E 64 20 6C 6B 28 69 2C 30 29 20 28 74 68 65    and lk(i,0) (the
023A40:  0D 0A 20 20 20 6E 75 6D 62 65 72 20 6F 66 20 6C    ..   number of l
023A50:  69 6E 6B 73 20 66 72 6F 6D 20 77 6F 72 64 20 69    inks from word i
023A60:  29 2E 0D 0A 0D 0A 20 20 20 37 33 30 20 46 6F 6C    ).....   730 Fol
023A70:  6C 6F 77 69 6E 67 20 74 68 69 73 20 77 65 20 57    lowing this we W
023A80:  52 49 54 45 20 65 61 63 68 20 6C 6B 28 69 2C 6A    RITE each lk(i,j
023A90:  29 20 28 61 6C 6C 20 74 68 65 20 6C 69 6E 6B 73    ) (all the links
023AA0:  20 66 6F 72 20 74 68 65 20 77 6F 72 64 20 69 29     for the word i)
023AB0:  20 69 6E 0D 0A 20 20 20 6F 72 64 65 72 2C 20 61     in..   order, a
023AC0:  6E 64 20 74 68 65 6E 20 67 6F 20 62 61 63 6B 20    nd then go back 
023AD0:  74 6F 20 37 32 30 20 74 6F 20 64 6F 20 74 68 65    to 720 to do the
023AE0:  20 4E 45 58 54 20 77 6F 72 64 2E 0D 0A 0D 0A 20     NEXT word..... 
023AF0:  20 20 37 34 30 20 4E 6F 77 20 77 65 20 68 61 76      740 Now we hav
023B00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
023B10:  1E 00 01 00 02 09 4E E5 1E 00 C6 02 00 00 00 02    ......N.........
023B20:  1E 00 C2 02 00 00 00 02 1E 00 C7 02 00 00 00 02    ................
023B30:  1E 00 C3 02 00 00 00 02 1E 00 C8 02 00 00 00 02    ................
023B40:  1E 00 C4 02 00 00 00 02 1E 00 C9 02 00 00 00 02    ................
023B50:  1E 00 C5 02 00 00 00 02 1E 00 C1 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:  65 20 32 30 20 77 65 20 73 65 74 20 20 74 68 65    e 20 we set  the
023C10:  20 20 6D 61 78 69 6D 75 6D 20 20 6E 75 6D 62 65      maximum  numbe
023C20:  72 20 20 6F 66 20 77 6F 72 64 73 20 74 6F 20 33    r  of words to 3
023C30:  30 30 2C 20 61 6E 64 20 74 68 65 0D 0A 20 20 20    00, and the..   
023C40:  6D 61 78 69 6D 75 6D 20 6E 75 6D 62 65 72 20 6F    maximum number o
023C50:  66 20 6C 69 6E 6B 73 20 66 72 6F 6D 20 6F 6E 65    f links from one
023C60:  20 20 77 6F 72 64 20 20 74 6F 20 20 61 6E 6F 74      word  to  anot
023C70:  68 65 72 20 20 74 6F 20 62 65 20 32 30 2E 20 20    her  to be 20.  
023C80:  49 66 20 77 65 20 6E 65 65 64 0D 0A 20 20 20 6D    If we need..   m
023C90:  6F 72 65 20 74 68 61 6E 20 32 30 20 6C 69 6E 6B    ore than 20 link
023CA0:  73 20 66 72 6F 6D 20 61 6E 79 20 20 70 61 72 74    s from any  part
023CB0:  69 63 75 6C 61 72 20 20 77 6F 72 64 20 74 6F 20    icular  word to 
023CC0:  61 6E 6F 74 68 65 72 2C 20 74 68 65 20 70 72 6F    another, the pro
023CD0:  67 72 61 6D 20 77 69 6C 6C 0D 0A 20 20 20 67 6F    gram will..   go
023CE0:  20 77 72 6F 6E 67 2E 20 20 59 6F 75 20 61 72 65     wrong.  You are
023CF0:  20 6D 6F 73 74 20 6C 69 6B 65 6C 79 20 74 6F 20     most likely to 
023D00:  72 65 61 63 68 20 74 68 65 20 6C 69 6D 69 74 20    reach the limit 
023D10:  6F 66 20 74 77 65 6E 74 79 20 6C 69 6E 6B 73 20    of twenty links 
023D20:  62 79 20 75 73 69 6E 67 0D 0A 20 20 20 6D 6F 72    by using..   mor
023D30:  65 20 74 68 61 6E 20 32 30 20 64 69 66 66 65 72    e than 20 differ
023D40:  65 6E 74 20 77 6F 72 64 73 20 74 6F 20 73 74 61    ent words to sta
023D50:  72 74 20 61 20 73 65 6E 74 65 6E 63 65 20 28 72    rt a sentence (r
023D60:  65 6D 65 6D 62 65 72 20 74 68 61 74 20 74 68 65    emember that the
023D70:  20 22 77 6F 72 64 22 0D 0A 20 20 20 77 24 28 30     "word"..   w$(0
023D80:  29 20 69 73 20 75 73 65 64 20 74 6F 20 6C 69 6E    ) is used to lin
023D90:  6B 20 74 6F 20 77 6F 72 64 73 20 74 68 61 74 20    k to words that 
023DA0:  73 74 61 72 74 20 61 20 73 65 6E 74 65 6E 63 65    start a sentence
023DB0:  29 2E 0D 0A 0D 0A 20 20 20 48 6F 77 20 63 61 6E    ).....   How can
023DC0:  20 77 65 20 64 65 61 6C 20 77 69 74 68 20 74 68     we deal with th
023DD0:  69 73 20 70 72 6F 62 6C 65 6D 3F 20 20 49 74 20    is problem?  It 
023DE0:  20 69 73 20 72 65 61 6C 6C 79 20 61 20 6D 61 74     is really a mat
023DF0:  74 65 72 20 6F 66 20 62 61 6C 61 6E 63 69 6E 67    ter of balancing
023E00:  69 6C 2D 6C 6F 6F 6B 69 6E 67 20 6D 61 6E 2C 20    il-looking man, 
023E10:  77 69 74 68 20 61 20 63 72 6F 6F 6B 65 64 20 6E    with a crooked n
023E20:  6F 73 65 20 61 6E 64 20 63 72 6F 6F 6B 65 64 20    ose and crooked 
023E30:  74 68 6F 75 67 68 74 73 2E 20 20 22 59 6F 2C 20    thoughts.  "Yo, 
023E40:  68 6F 2C 20 68 6F 2C 22 0D 0A 20 20 20 73 68 6F    ho, ho,"..   sho
023E50:  75 74 65 64 20 41 6D 62 72 6F 73 65 20 74 68 65    uted Ambrose the
023E60:  20 65 76 69 6C 20 70 69 72 61 74 65 20 61 73 20     evil pirate as 
023E70:  68 65 20 63 6F 70 69 65 64 20 61 6E 6F 74 68 65    he copied anothe
023E80:  72 20 64 69 73 63 2E 0D 0A 0D 0A 20 20 20 57 68    r disc.....   Wh
023E90:  61 74 20 77 65 20 64 69 64 20 6E 6F 74 20 6D 65    at we did not me
023EA0:  6E 74 69 6F 6E 20 20 6C 61 73 74 20 20 6D 6F 6E    ntion  last  mon
023EB0:  74 68 20 20 69 73 20 20 74 68 61 74 20 74 68 65    th  is  that the
023EC0:  20 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61     Programmers' Pa
023ED0:  74 63 68 20 64 69 73 63 0D 0A 20 20 20 28 57 41    tch disc..   (WA
023EE0:  43 43 49 20 50 44 20 39 38 29 20 6E 6F 77 20 68    CCI PD 98) now h
023EF0:  61 73 20 61 20 6C 69 74 74 6C 65 20 20 75 74 69    as a little  uti
023F00:  6C 69 74 79 20 20 6F 6E 20 20 69 74 20 63 61 6C    lity  on  it cal
023F10:  6C 65 64 20 42 53 49 44 45 2E 20 20 54 68 69 73    led BSIDE.  This
023F20:  20 69 73 20 66 6F 72 0D 0A 20 20 20 74 68 6F 73     is for..   thos
023F30:  65 20 6F 66 20 79 6F 75 20 77 68 6F 20 68 61 76    e of you who hav
023F40:  65 20 61 20 33 2E 35 22 20 20 64 69 73 63 20 20    e a 3.5"  disc  
023F50:  64 72 69 76 65 2C 20 20 62 75 74 20 64 6F 20 6E    drive,  but do n
023F60:  6F 74 20 68 61 76 65 20 61 20 73 69 64 65 20 73    ot have a side s
023F70:  77 69 74 63 68 2E 0D 0A 20 20 20 49 66 20 79 6F    witch...   If yo
023F80:  75 20 61 72 65 20 69 6E 20 74 68 69 73 20 73 69    u are in this si
023F90:  74 75 61 74 69 6F 6E 20 20 79 6F 75 20 20 77 69    tuation  you  wi
023FA0:  6C 6C 20 20 62 65 20 20 77 65 6C 6C 20 61 77 61    ll  be  well awa
023FB0:  72 65 20 74 68 61 74 20 77 69 74 68 20 73 74 61    re that with sta
023FC0:  6E 64 61 72 64 0D 0A 20 20 20 41 4D 53 44 4F 53    ndard..   AMSDOS
023FD0:  20 66 6F 72 6D 61 74 73 20 69 74 20 69 73 20 70     formats it is p
023FE0:  6F 73 73 69 62 6C 65 20 6F 6E 6C 79 20 74 6F 20    ossible only to 
023FF0:  75 73 65 20 20 6F 6E 65 20 73 69 64 65 20 6F 66    use  one side of
024000:  20 75 70 0D 0A 20 20 20 68 6F 77 20 74 68 65 20     up..   how the 
024010:  64 61 74 61 20 69 73 20 73 74 6F 72 65 64 20 74    data is stored t
024020:  6F 20 6D 61 6B 65 20 69 74 20 61 73 20 65 66 66    o make it as eff
024030:  69 63 69 65 6E 74 20 61 73 20 70 6F 73 73 69 62    icient as possib
024040:  6C 65 2E 20 20 4F 6E 20 6D 79 20 6D 61 63 68 69    le.  On my machi
024050:  6E 65 0D 0A 20 20 20 74 68 65 72 65 20 61 72 65    ne..   there are
024060:  20 6A 75 73 74 20 6F 76 65 72 20 33 35 2C 30 30     just over 35,00
024070:  30 20 62 79 74 65 73 20 66 72 65 65 20 20 62 79    0 bytes free  by
024080:  20 20 74 68 65 20 74 69 6D 65 20 77 65 20 72 65      the time we re
024090:  61 63 68 20 6C 69 6E 65 20 33 30 20 77 68 65 72    ach line 30 wher
0240A0:  65 0D 0A 20 20 20 74 68 65 20 61 72 72 61 79 73    e..   the arrays
0240B0:  20 61 72 65 20 64 69 6D 65 6E 73 69 6F 6E 65 64     are dimensioned
0240C0:  2E 20 20 49 66 20 77 65 20 20 6A 75 73 74 20 20    .  If we  just  
0240D0:  69 6E 63 72 65 61 73 65 20 6D 6C 69 6E 6B 73 20    increase mlinks 
0240E0:  74 6F 20 66 6F 72 74 79 20 69 6E 73 74 65 61 64    to forty instead
0240F0:  0D 0A 20 20 20 6F 66 20 74 77 65 6E 74 79 2C 20    ..   of twenty, 
024100:  74 68 65 6E 20 20 66 6F 72 20 20 65 76 65 72 79    then  for  every
024110:  20 20 77 6F 72 64 20 20 77 65 20 20 73 74 6F 72      word  we  stor
024120:  65 20 20 77 65 20 20 77 6F 75 6C 64 20 20 62 65    e  we  would  be
024130:  20 20 74 61 6B 69 6E 67 20 20 75 70 20 61 6E 0D      taking  up an.
024140:  0A 20 20 20 61 64 64 69 74 69 6F 6E 61 6C 20 66    .   additional f
024150:  6F 72 74 79 20 62 79 74 65 73 2C 20 62 65 63 61    orty bytes, beca
024160:  75 73 65 20 65 61 63 68 20 20 69 6E 74 65 67 65    use each  intege
024170:  72 20 20 76 61 72 69 61 62 6C 65 20 74 61 6B 65    r  variable take
024180:  73 20 74 77 6F 20 62 79 74 65 73 20 74 6F 0D 0A    s two bytes to..
024190:  20 20 20 73 74 6F 72 65 2E 20 20 57 69 74 68 20       store.  With 
0241A0:  6D 77 6F 72 64 73 20 73 74 69 6C 6C 20 20 73 65    mwords still  se
0241B0:  74 20 20 61 74 20 20 33 30 30 2C 20 20 74 68 69    t  at  300,  thi
0241C0:  73 20 20 77 6F 75 6C 64 20 20 6D 65 61 6E 20 61    s  would  mean a
0241D0:  6E 6F 74 68 65 72 20 31 32 2C 30 30 30 0D 0A 20    nother 12,000.. 
0241E0:  20 20 62 79 74 65 73 2C 20 6A 75 73 74 20 74 6F      bytes, just to
0241F0:  20 63 6F 70 65 20 77 69 74 68 20 61 20 20 76 65     cope with a  ve
024200:  20 74 68 65 20 64 69 73 63 2C 20 73 6F 20 69 66     the disc, so if
024210:  20 79 6F 75 0D 0A 20 20 20 77 61 6E 74 20 61 20     you..   want a 
024220:  64 69 73 63 20 63 6F 70 69 65 64 20 66 72 6F 6D    disc copied from
024230:  20 74 68 65 20 57 41 43 43 49 20 6C 69 62 72 61     the WACCI libra
024240:  72 79 2C 20 20 79 6F 75 20 68 61 76 65 20 74 6F    ry,  you have to
024250:  20 68 61 76 65 20 74 68 65 20 74 77 6F 20 73 69     have the two si
024260:  64 65 73 0D 0A 20 20 20 63 6F 70 69 65 64 20 6F    des..   copied o
024270:  6E 74 6F 20 74 77 6F 20 73 65 70 61 72 61 74 65    nto two separate
024280:  20 33 2E 35 22 20 64 69 73 63 73 2E 20 20 57 65     3.5" discs.  We
024290:  6C 6C 2C 20 20 79 6F 75 20 20 75 73 65 64 20 74    ll,  you  used t
0242A0:  6F 20 68 61 76 65 20 74 6F 20 64 6F 20 74 68 61    o have to do tha
0242B0:  74 21 0D 0A 20 20 20 42 53 49 44 45 20 63 6F 70    t!..   BSIDE cop
0242C0:  69 65 73 20 74 68 65 20 6F 74 68 65 72 20 73 69    ies the other si
0242D0:  64 65 20 6F 66 20 61 20 33 2E 35 22 20 64 69 73    de of a 3.5" dis
0242E0:  63 20 20 74 6F 20 61 20 64 69 73 63 20 69 6E 20    c  to a disc in 
0242F0:  79 6F 75 72 20 41 20 64 72 69 76 65 20 66 72 6F    your A drive fro
024300:  6D 0D 0A 20 20 20 77 68 65 72 65 20 79 6F 75 20    m..   where you 
024310:  63 61 6E 20 61 63 63 65 73 73 20 69 74 20 6E 6F    can access it no
024320:  72 6D 61 6C 6C 79 2E 20 20 4F 6E 63 65 20 79 6F    rmally.  Once yo
024330:  75 20 20 68 61 76 65 20 61 20 63 6F 70 79 20 6F    u  have a copy o
024340:  66 20 42 53 49 44 45 20 79 6F 75 20 77 69 6C 6C    f BSIDE you will
024350:  0D 0A 20 20 20 62 65 20 61 62 6C 65 20 74 6F 20    ..   be able to 
024360:  6F 72 64 65 72 20 63 6F 70 69 65 73 20 66 72 6F    order copies fro
024370:  6D 20 74 68 65 20 57 41 43 43 49 20 6C 69 62 72    m the WACCI libr
024380:  61 72 79 20 6F 6E 20 73 69 6E 67 6C 65 20 33 2E    ary on single 3.
024390:  35 22 20 64 69 73 63 73 2E 0D 0A 0D 0A 20 20 20    5" discs.....   
0243A0:  49 20 64 6F 20 6E 6F 74 20 6B 6E 6F 77 20 77 68    I do not know wh
0243B0:  65 74 68 65 72 20 61 6E 79 6F 6E 65 20 69 73 20    ether anyone is 
0243C0:  20 73 74 69 6C 6C 20 20 69 6E 20 74 68 69 73 20     still  in this 
0243D0:  73 69 74 75 61 74 69 6F 6E 2C 20 62 75 74 20 69    situation, but i
0243E0:  66 20 79 6F 75 20 61 72 65 2C 0D 0A 20 20 20 69    f you are,..   i
0243F0:  74 20 77 61 73 20 77 72 69 74 74 65 6E 20 73 70    t was written sp
024400:  72 79 20 20 73 6D 61 6C 6C 20 20 6E 75 6D 62 65    ry  small  numbe
024410:  72 20 20 6F 66 20 77 6F 72 64 73 20 77 68 69 63    r  of words whic
024420:  68 20 77 6F 75 6C 64 20 6E 65 65 64 0D 0A 20 20    h would need..  
024430:  20 6D 6F 72 65 20 74 68 61 6E 20 74 77 65 6E 74     more than twent
024440:  79 20 6C 69 6E 6B 73 20 66 72 6F 6D 20 74 68 65    y links from the
024450:  6D 2E 20 20 20 57 65 20 20 6E 65 65 64 20 20 61    m.   We  need  a
024460:  20 77 61 79 20 6F 66 20 73 74 6F 72 69 6E 67 20     way of storing 
024470:  74 68 65 73 65 20 65 78 74 72 61 0D 0A 20 20 20    these extra..   
024480:  6C 69 6E 6B 73 20 74 68 61 74 20 64 6F 65 73 6E    links that doesn
024490:  27 74 20 69 6E 63 72 65 61 73 65 20 74 68 65 20    't increase the 
0244A0:  20 73 74 6F 72 61 67 65 20 20 72 65 71 75 69 72     storage  requir
0244B0:  65 6D 65 6E 74 73 20 20 6F 66 20 74 68 65 20 6F    ements  of the o
0244C0:  74 68 65 72 20 77 6F 72 64 73 0D 0A 20 20 20 74    ther words..   t
0244D0:  6F 6F 2E 0D 0A 0D 0A 20 20 20 41 20 4C 49 4E 4B    oo.....   A LINK
0244E0:  45 44 20 4C 49 53 54 20 4F 46 20 4C 49 4E 4B 53    ED LIST OF LINKS
0244F0:  0D 0A 20 20 20 46 69 67 75 72 65 20 31 20 70 72    ..   Figure 1 pr
024500:  6F 76 69 64 65 73 20 61 20 73 6F 6C 75 74 69 6F    ovides a solutio
024510:  6E 2E 20 20 4C 6F 61 64 20 20 75 70 20 20 41 49    n.  Load  up  AI
024520:  20 20 61 6E 64 20 74 79 70 65 20 69 6E 20 74 68      and type in th
024530:  65 20 6C 69 6E 65 73 20 6C 69 73 74 65 64 2E 0D    e lines listed..
024540:  0A 20 20 20 53 6F 6D 65 20 20 6F 66 20 20 74 68    .   Some  of  th
024550:  65 6D 20 20 61 72 65 20 20 6E 65 77 20 20 6C 69    em  are  new  li
024560:  6E 65 73 2C 20 20 77 68 69 6C 65 20 20 6F 74 68    nes,  while  oth
024570:  65 72 73 20 20 72 65 70 6C 61 63 65 20 20 65 78    ers  replace  ex
024580:  69 73 74 69 6E 67 20 20 6C 69 6E 65 73 2E 0D 0A    isting  lines...
024590:  20 20 20 3C 3C 54 68 69 73 20 6E 65 77 20 76 65       <<This new ve
0245A0:  72 73 69 6F 6E 2C 20 77 69 74 68 20 61 20 20 63    rsion, with a  c
0245B0:  6F 75 70 6C 65 20 20 6F 66 20 61 64 6A 75 73 74    ouple  of adjust
0245C0:  6D 65 6E 74 73 20 20 65 78 70 6C 61 69 6E 65 64    ments  explained
0245D0:  20 6C 61 74 65 72 20 69 6E 20 74 68 65 0D 0A 20     later in the.. 
0245E0:  20 20 61 72 74 69 63 6C 65 2C 20 69 73 20 73 61      article, is sa
0245F0:  76 65 64 20 6F 6E 20 64 69 73 63 20 61 73 20 41    ved on disc as A
024600:  65 63 69 61 6C 6C 79 20 66 6F 72 20 79 6F 75 21    ecially for you!
024610:  20 20 42 53 49 44 45 20 69 73 20 20 6F 66 20 63      BSIDE is  of c
024620:  6F 75 72 73 65 20 73 61 76 65 64 20 6F 6E 20 74    ourse saved on t
024630:  68 65 20 41 20 73 69 64 65 0D 0A 20 20 20 6F 66    he A side..   of
024640:  20 74 68 65 20 50 72 6F 67 72 61 6D 6D 65 72 73     the Programmers
024650:  27 20 50 61 74 63 68 20 64 69 73 63 2E 2E 2E 0D    ' Patch disc....
024660:  0A 0D 0A 20 20 20 41 52 54 49 46 49 43 49 41 4C    ...   ARTIFICIAL
024670:  20 49 44 49 4F 43 59 0D 0A 20 20 20 49 20 68 6F     IDIOCY..   I ho
024680:  70 65 20 79 6F 75 20 68 61 76 65 20 61 6C 6C 20    pe you have all 
024690:  68 61 64 20 66 75 6E 20 77 69 74 68 20 6C 61 73    had fun with las
0246A0:  74 20 6D 6F 6E 74 68 27 73 20 70 72 6F 67 72 61    t month's progra
0246B0:  6D 2E 20 20 49 20 6F 72 69 67 69 6E 61 6C 6C 79    m.  I originally
0246C0:  20 77 72 6F 74 65 0D 0A 20 20 20 69 74 20 77 69     wrote..   it wi
0246D0:  74 68 20 61 20 66 72 69 65 6E 64 20 61 74 20 73    th a friend at s
0246E0:  69 78 74 68 20 66 6F 72 6D 2C 20 6F 6E 20 61 6E    ixth form, on an
0246F0:  20 41 63 6F 72 6E 20 41 72 63 68 69 6D 65 64 65     Acorn Archimede
024700:  73 20 63 6F 6D 70 75 74 65 72 20 28 65 78 63 65    s computer (exce
024710:  6C 6C 65 6E 74 0D 0A 20 20 20 6D 61 63 68 69 6E    llent..   machin
024720:  65 29 2E 20 20 54 68 65 20 63 6F 6C 6C 65 67 65    e).  The college
024730:  20 68 61 64 20 61 6E 20 45 63 6F 6E 65 74 20 20     had an Econet  
024740:  6E 65 74 77 6F 72 6B 20 63 6F 6E 6E 65 63 74 69    network connecti
024750:  6E 67 20 74 68 65 20 42 42 43 20 63 6F 6D 70 75    ng the BBC compu
024760:  74 65 72 73 0D 0A 20 20 20 74 6F 67 65 74 68 65    ters..   togethe
024770:  72 2C 20 61 6E 64 20 49 20 61 6C 73 6F 20 77 72    r, and I also wr
024780:  6F 74 65 20 20 61 20 20 63 68 61 74 20 20 70 72    ote  a  chat  pr
024790:  6F 67 72 61 6D 20 20 77 68 69 63 68 20 20 6D 65    ogram  which  me
0247A0:  61 6E 74 20 61 6E 79 20 6D 65 73 73 61 67 65 20    ant any message 
0247B0:  79 6F 75 0D 0A 20 20 20 74 79 70 65 64 20 61 74    you..   typed at
0247C0:  20 79 6F 75 72 20 6B 65 79 62 6F 61 72 64 20 77     your keyboard w
0247D0:  61 73 20 64 69 73 70 6C 61 79 65 64 20 6F 6E 20    as displayed on 
0247E0:  20 74 68 65 20 73 63 72 65 65 6E 20 6F 66 20 61     the screen of a
0247F0:  6E 79 6F 6E 65 20 65 6C 73 65 20 77 68 6F 20 77    nyone else who w
024800:  49 33 2E 42 41 53 3E 3E 20 20 20 54 68 65 20 73    I3.BAS>>   The s
024810:  6F 6C 75 74 69 6F 6E 20 69 73 20 62 61 73 65 64    olution is based
024820:  20 6F 6E 20 74 68 65 20 69 64 65 61 0D 0A 20 20     on the idea..  
024830:  20 6F 66 20 74 68 65 20 22 6C 69 6E 6B 65 64 20     of the "linked 
024840:  20 6C 69 73 74 22 2E 20 20 20 41 20 20 6C 69 6E     list".   A  lin
024850:  6B 65 64 20 20 6C 69 73 74 20 20 69 73 20 20 61    ked  list  is  a
024860:  6E 20 20 69 6D 70 6F 72 74 61 6E 74 20 20 74 79    n  important  ty
024870:  70 65 20 20 6F 66 20 64 61 74 61 0D 0A 20 20 20    pe  of data..   
024880:  73 74 72 75 63 74 75 72 65 20 20 77 68 69 63 68    structure  which
024890:  20 20 69 73 20 20 6F 66 74 65 6E 20 20 75 73 65      is  often  use
0248A0:  64 20 20 77 68 65 6E 20 20 20 70 72 6F 67 72 61    d  when   progra
0248B0:  6D 6D 65 72 73 20 20 6E 65 65 64 20 20 74 6F 20    mmers  need  to 
0248C0:  20 73 74 6F 72 65 20 20 61 6E 0D 0A 20 20 20 75     store  an..   u
0248D0:  6E 64 65 74 65 72 6D 69 6E 65 64 20 71 75 61 6E    ndetermined quan
0248E0:  74 69 74 79 20 6F 66 20 64 61 74 61 2E 0D 0A 0D    tity of data....
0248F0:  0A 20 20 20 54 68 65 20 69 64 65 61 20 69 73 20    .   The idea is 
024900:  74 68 61 74 20 20 77 68 65 6E 20 20 79 6F 75 20    that  when  you 
024910:  20 68 61 76 65 20 20 66 69 6C 6C 65 64 20 20 75     have  filled  u
024920:  70 20 20 6F 6E 65 20 20 64 61 74 61 20 73 74 6F    p  one  data sto
024930:  72 61 67 65 20 61 72 65 61 2C 20 79 6F 75 0D 0A    rage area, you..
024940:  20 20 20 75 73 65 20 70 61 72 74 20 6F 66 20 74       use part of t
024950:  68 65 20 73 74 6F 72 61 67 65 20 74 6F 20 70 72    he storage to pr
024960:  6F 76 69 64 65 20 20 61 20 20 70 6F 69 6E 74 65    ovide  a  pointe
024970:  72 20 20 74 6F 20 77 68 65 72 65 20 74 68 65 20    r  to where the 
024980:  6E 65 78 74 20 62 6C 6F 63 6B 20 6F 66 0D 0A 20    next block of.. 
024990:  20 20 64 61 74 61 20 69 73 20 6C 6F 63 61 74 65      data is locate
0249A0:  64 2E 20 20 49 6E 20 6F 75 72 20 63 61 73 65 2C    d.  In our case,
0249B0:  20 20 69 6E 73 74 65 61 64 20 20 6F 66 20 73 74      instead  of st
0249C0:  6F 72 69 6E 67 20 74 77 65 6E 74 79 20 6C 69 6E    oring twenty lin
0249D0:  6B 73 20 66 72 6F 6D 20 77 6F 72 64 0D 0A 20 20    ks from word..  
0249E0:  20 6E 20 69 6E 20 6C 6B 28 6E 2C 31 29 20 74 6F     n in lk(n,1) to
0249F0:  20 6C 6B 28 6E 2C 32 30 29 2C 20 77 65 20 20 75     lk(n,20), we  u
024A00:  61 73 0D 0A 20 20 20 75 73 69 6E 67 20 74 68 65    as..   using the
024A10:  20 63 68 61 74 20 70 72 6F 67 72 61 6D 2E 20 20     chat program.  
024A20:  57 65 20 65 76 65 6E 74 75 61 6C 6C 79 20 74 6F    We eventually to
024A30:  6F 6B 20 74 68 65 20 6F 62 76 69 6F 75 73 20 73    ok the obvious s
024A40:  74 65 70 20 6F 66 20 6C 69 6E 6B 69 6E 67 20 41    tep of linking A
024A50:  49 0D 0A 20 20 20 75 70 20 74 6F 20 74 68 65 20    I..   up to the 
024A60:  63 68 61 74 20 70 72 6F 67 72 61 6D 2E 20 20 49    chat program.  I
024A70:  74 20 63 6F 75 6C 64 20 74 68 65 6E 20 74 61 6B    t could then tak
024A80:  65 20 70 61 72 74 20 69 6E 20 74 68 65 20 63 6F    e part in the co
024A90:  6E 76 65 72 73 61 74 69 6F 6E 73 20 74 68 61 74    nversations that
024AA0:  0D 0A 20 20 20 77 65 72 65 20 67 6F 69 6E 67 20    ..   were going 
024AB0:  6F 6E 2C 20 6C 65 61 64 69 6E 67 20 20 74 68 65    on, leading  the
024AC0:  20 20 6F 72 64 69 6E 61 72 79 20 20 75 73 65 72      ordinary  user
024AD0:  73 20 20 74 6F 20 20 77 6F 6E 64 65 72 20 20 77    s  to  wonder  w
024AE0:  68 79 20 20 74 68 65 72 65 20 77 61 73 20 61 0D    hy  there was a.
024AF0:  0A 20 20 20 63 6F 6D 70 6C 65 74 65 20 69 64 69    .   complete idi
024B00:  6F 74 20 63 6F 6E 74 72 69 62 75 74 69 6E 67 20    ot contributing 
024B10:  66 72 6F 6D 20 6F 6E 65 20 6F 66 20 74 68 65 20    from one of the 
024B20:  6E 65 74 77 6F 72 6B 20 73 74 61 74 69 6F 6E 73    network stations
024B30:  21 0D 0A 0D 0A 20 20 20 41 20 47 52 45 4D 4C 49    !....   A GREMLI
024B40:  4E 20 49 4E 20 54 48 45 20 57 4F 52 4B 53 0D 0A    N IN THE WORKS..
024B50:  20 20 20 49 66 20 79 6F 75 20 68 61 76 65 20 75       If you have u
024B60:  73 65 64 20 6C 61 73 74 20 20 6D 6F 6E 74 68 27    sed last  month'
024B70:  73 20 20 76 65 72 73 69 6F 6E 20 20 6F 66 20 20    s  version  of  
024B80:  41 49 20 65 78 74 65 6E 73 69 76 65 6C 79 2C 20    AI extensively, 
024B90:  79 6F 75 20 77 69 6C 6C 20 68 61 76 65 0D 0A 20    you will have.. 
024BA0:  20 20 63 6F 6D 65 20 61 63 72 6F 73 73 20 61 20      come across a 
024BB0:  70 72 6F 62 6C 65 6D 20 74 6F 20 64 6F 20 20 77    problem to do  w
024BC0:  69 74 68 20 20 74 68 65 20 20 6C 69 6D 69 74 73    ith  the  limits
024BD0:  20 20 77 65 20 20 73 65 74 20 74 6F 20 74 68 65      we  set to the
024BE0:  20 73 69 7A 65 20 6F 66 20 74 68 65 0D 0A 20 20     size of the..  
024BF0:  20 61 72 72 61 79 73 2E 20 20 49 6E 20 6C 69 6E     arrays.  In lin
024C00:  23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61    #Programmers' Pa
024C10:  74 63 68 20 31 37 20 2D 20 57 41 43 43 49 20 31    tch 17 - WACCI 1
024C20:  32 36 2C 20 4E 6F 76 2F 44 65 63 20 31 39 39 38    26, Nov/Dec 1998
024C30:  2C 20 70 2E 20 31 36 2D 31 38 0D 0A 20 20 20 50    , p. 16-18..   P
024C40:  52 4F 47 52 41 4D 4D 45 52 53 27 20 50 41 54 43    ROGRAMMERS' PATC
024C50:  48 20 31 37 0D 0A 20 20 20 42 79 20 4D 61 74 74    H 17..   By Matt
024C60:  68 65 77 20 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A    hew Phillips....
024C70:  20 20 20 54 68 65 20 73 75 6E 20 62 65 61 74 20       The sun beat 
024C80:  64 6F 77 6E 20 6F 6E 20 74 68 65 20 77 69 64 65    down on the wide
024C90:  20 20 64 65 73 65 72 74 20 70 6C 61 69 6E 73 20      desert plains 
024CA0:  6F 66 20 4D 65 78 69 63 6F 2E 20 20 4D 65 61 6E    of Mexico.  Mean
024CB0:  77 68 69 6C 65 2C 20 6F 6E 20 74 68 65 0D 0A 20    while, on the.. 
024CC0:  20 20 6F 70 65 6E 20 73 65 61 73 20 6F 66 20 74      open seas of t
024CD0:  68 65 20 49 6E 64 69 61 6E 20 6F 63 65 61 6E 20    he Indian ocean 
024CE0:  74 68 65 20 20 72 61 69 6E 20 20 70 6F 75 72 65    the  rain  poure
024CF0:  64 20 20 64 6F 77 6E 20 6F 6E 20 61 20 73 68 69    d  down on a shi
024D00:  70 20 6C 61 64 65 6E 20 77 69 74 68 0D 0A 20 20    p laden with..  
024D10:  20 72 69 63 65 20 70 75 64 64 69 6E 67 2E 20 20     rice pudding.  
024D20:  46 72 6F 6D 20 74 68 65 20 6D 69 7A 65 6E 2D 6D    From the mizen-m
024D30:  61 73 74 20 74 68 65 20 73 6F 64 64 65 6E 20 72    ast the sodden r
024D40:  65 6D 61 69 6E 73 20 6F 66 20 61 20 62 6C 61 63    emains of a blac
024D50:  6B 20 66 6C 61 67 20 68 75 6E 67 0D 0A 20 20 20    k flag hung..   
024D60:  6C 69 6D 70 6C 79 2E 20 20 54 68 65 72 65 20 77    limply.  There w
024D70:  61 73 20 6E 6F 20 73 69 67 6E 20 6F 66 20 61 6E    as no sign of an
024D80:  79 20 20 63 72 65 77 20 20 6F 6E 20 64 65 63 6B    y  crew  on deck
024D90:  2C 20 62 75 74 20 61 6E 20 65 65 72 69 65 20 67    , but an eerie g
024DA0:  72 65 65 6E 20 6C 69 67 68 74 0D 0A 20 20 20 73    reen light..   s
024DB0:  68 6F 6E 65 20 74 68 72 6F 75 67 68 20 61 20 70    hone through a p
024DC0:  6F 72 74 68 6F 6C 65 2E 20 20 49 6E 73 69 64 65    orthole.  Inside
024DD0:  20 74 68 65 20 20 63 61 62 69 6E 20 20 73 61 74     the  cabin  sat
024DE0:  20 20 74 68 65 20 63 61 70 74 61 69 6E 2E 20 20      the captain.  
024DF0:  48 65 20 77 61 73 20 61 6E 0D 0A 20 20 20 65 76    He was an..   ev
024E00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
024E10:  1F 00 01 00 02 09 4E E5 1F 00 C9 02 00 00 00 02    ......N.........
024E20:  1F 00 C5 02 00 00 00 02 1F 00 C1 02 00 00 00 02    ................
024E30:  1F 00 C6 02 00 00 00 02 1F 00 C2 02 00 00 00 02    ................
024E40:  1F 00 C7 02 00 00 00 02 1F 00 C3 02 00 00 00 02    ................
024E50:  1F 00 C8 02 00 00 00 02 1F 00 C4 02 00 00 00 02    ................
024E60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024ED0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024F00:  20 6C 6F 6F 6B 20 61 74 20 61 20 76 6F 63 61 62     look at a vocab
024F10:  75 6C 61 72 79 20 49 20 68 61 64 20 73 61 76 65    ulary I had save
024F20:  64 20 74 6F 20 64 69 73 63 20 77 68 69 63 68 20    d to disc which 
024F30:  68 61 64 20 61 62 6F 75 74 20 74 77 6F 20 68 75    had about two hu
024F40:  6E 64 72 65 64 0D 0A 20 20 20 77 6F 72 64 73 20    ndred..   words 
024F50:  69 6E 20 69 74 2E 20 20 54 68 65 20 61 76 65 72    in it.  The aver
024F60:  61 67 65 20 6C 65 6E 67 74 68 20 6F 66 20 61 20    age length of a 
024F70:  20 77 6F 72 64 20 20 77 61 73 20 69 6E 20 66 61     word  was in fa
024F80:  63 74 20 61 73 20 6C 69 74 74 6C 65 20 61 73 20    ct as little as 
024F90:  35 2E 31 2C 0D 0A 20 20 20 61 6E 64 20 74 68 65    5.1,..   and the
024FA0:  20 61 76 65 72 61 67 65 20 6E 75 6D 62 65 72 20     average number 
024FB0:  6F 66 20 6C 69 6E 6B 73 20 66 72 6F 6D 20 61 20    of links from a 
024FC0:  77 6F 72 64 20 77 61 73 20 6F 6E 6C 79 20 32 21    word was only 2!
024FD0:  20 20 4D 6F 72 65 20 69 6D 70 6F 72 74 61 6E 74      More important
024FE0:  6C 79 2C 0D 0A 20 20 20 39 34 25 20 6F 66 20 74    ly,..   94% of t
024FF0:  68 65 20 77 6F 72 64 73 20 68 61 64 20 66 65 77    he words had few
025000:  65 72 20 74 68 61 6E 20 20 73 69 78 20 20 6C 69    er than  six  li
025010:  6E 6B 73 20 20 66 72 6F 6D 20 74 68 65 6D 2C 20    nks  from them, 
025020:  61 6E 64 20 6F 6E 6C 79 20 74 77 6F 20 77 6F 72    and only two wor
025030:  64 73 0D 0A 20 20 20 68 61 64 20 6D 6F 72 65 20    ds..   had more 
025040:  74 68 61 6E 20 66 69 66 74 65 65 6E 2E 0D 0A 0D    than fifteen....
025050:  0A 20 20 20 44 6F 69 6E 67 20 61 20 72 6F 75 67    .   Doing a roug
025060:  68 20 63 61 6C 63 75 6C 61 74 69 6F 6E 20 73 68    h calculation sh
025070:  6F 77 73 20 20 74 68 61 74 20 20 73 65 74 74 69    ows  that  setti
025080:  6E 67 20 20 6D 6C 69 6E 6B 73 20 20 74 6F 20 62    ng  mlinks  to b
025090:  65 20 36 20 77 6F 75 6C 64 20 6D 65 61 6E 0D 0A    e 6 would mean..
0250A0:  20 20 20 74 68 61 74 20 74 68 65 20 73 74 6F 72       that the stor
0250B0:  61 67 65 20 72 65 71 75 69 72 65 64 20 70 65 72    age required per
0250C0:  20 77 6F 72 64 20 20 77 6F 75 6C 64 20 20 62 65     word  would  be
0250D0:  20 20 61 72 6F 75 6E 64 20 32 34 20 62 79 74 65      around 24 byte
0250E0:  73 20 6F 6E 20 61 76 65 72 61 67 65 2E 0D 0A 20    s on average... 
0250F0:  20 20 43 6F 6E 74 72 61 73 74 20 74 68 61 74 20      Contrast that 
025100:  69 73 20 61 64 64 65 64 2E 20 20 54 68 69 73 0D    is added.  This.
025110:  0A 20 20 20 63 68 65 63 6B 73 20 74 6F 20 73 65    .   checks to se
025120:  65 20 77 68 65 74 68 65 72 20 77 65 20 68 61 76    e whether we hav
025130:  65 20 6A 75 73 74 20 20 75 73 65 64 20 20 75 70    e just  used  up
025140:  20 74 68 65 20 6C 61 73 74 2D 62 75 74 2D 6F 6E     the last-but-on
025150:  65 20 73 70 61 63 65 20 69 6E 20 74 68 65 0D 0A    e space in the..
025160:  20 20 20 63 75 72 72 65 6E 74 20 62 6C 6F 63 6B       current block
025170:  20 6F 66 20 6C 69 6E 6B 73 2E 20 20 49 66 20 20     of links.  If  
025180:  78 3D 6D 6C 69 6E 6B 73 2D 31 20 20 74 68 65 6E    x=mlinks-1  then
025190:  20 20 74 68 65 20 20 6E 65 78 74 20 6C 69 6E 6B      the  next link
0251A0:  20 77 69 6C 6C 20 6E 65 65 64 20 74 6F 0D 0A 20     will need to.. 
0251B0:  20 20 70 6F 69 6E 74 20 74 6F 20 61 6E 6F 74 68      point to anoth
0251C0:  65 72 20 64 75 6D 6D 79 20 77 6F 72 64 20 66 6F    er dummy word fo
0251D0:  72 20 6F 76 65 72 66 6C 6F 77 20 20 73 74 6F 72    r overflow  stor
0251E0:  61 67 65 2E 20 20 20 54 6F 20 64 6F 20 74 68 69    age.   To do thi
0251F0:  73 20 77 65 20 75 73 65 20 74 68 65 0D 0A 20 20    s we use the..  
025200:  20 6E 65 78 74 20 66 72 65 65 20 20 77 6F 72 64     next free  word
025210:  20 20 70 6F 73 69 74 69 6F 6E 20 20 62 79 20 20      position  by  
025220:  69 6E 63 72 65 61 73 69 6E 67 20 20 6E 77 6F 72    increasing  nwor
025230:  64 73 20 20 62 79 20 20 6F 6E 65 2E 20 20 20 57    ds  by  one.   W
025240:  65 20 20 74 68 65 6E 20 73 65 74 0D 0A 20 20 20    e  then set..   
025250:  6C 6B 28 79 2C 6D 6C 69 6E 6B 73 29 20 74 6F 20    lk(y,mlinks) to 
025260:  70 6F 69 6E 74 20 74 6F 20 74 68 69 73 20 6E 65    point to this ne
025270:  77 20 64 75 6D 6D 79 20 77 6F 72 64 2E 0D 0A 0D    w dummy word....
025280:  0A 20 20 20 44 6F 20 74 61 6B 65 20 61 20 62 69    .   Do take a bi
025290:  74 20 6F 66 20 74 69 6D 65 20 74 6F 20 67 65 74    t of time to get
0252A0:  20 20 74 68 69 73 20 69 64 65 61 20 73 74 72 61      this idea stra
0252B0:  69 67 68 74 2E 20 20 49 74 20 69 73 20 61 20 62    ight.  It is a b
0252C0:  69 7A 61 72 72 65 20 63 6F 6E 63 65 70 74 0D 0A    izarre concept..
0252D0:  20 20 20 61 74 20 66 69 72 73 74 2C 20 62 65 63       at first, bec
0252E0:  61 75 73 65 20 6E 6F 74 20 61 6C 6C 20 6F 66 20    ause not all of 
0252F0:  6F 75 72 20 77 6F 72 64 73 20 20 66 72 6F 6D 20    our words  from 
025300:  73 65 20 20 74 68 65 20 20 66 69 72 73 74 20 6E    se  the  first n
025310:  69 6E 65 74 65 65 6E 20 66 6F 72 20 6C 69 6E 6B    ineteen for link
025320:  73 20 74 6F 20 77 6F 72 64 73 2C 0D 0A 20 20 20    s to words,..   
025330:  61 6E 64 20 74 68 65 6E 20 75 73 65 20 6C 6B 28    and then use lk(
025340:  6E 2C 32 30 29 20 74 6F 20 20 70 6F 69 6E 74 20    n,20) to  point 
025350:  20 74 6F 20 20 77 68 65 72 65 20 20 74 68 65 20     to  where  the 
025360:  20 72 65 73 74 20 20 6F 66 20 74 68 65 20 6C 69     rest  of the li
025370:  6E 6B 73 20 63 61 6E 20 62 65 0D 0A 20 20 20 66    nks can be..   f
025380:  6F 75 6E 64 2E 20 20 57 65 20 70 75 74 20 61 20    ound.  We put a 
025390:  64 75 6D 6D 79 20 77 6F 72 64 20 69 6E 20 74 68    dummy word in th
0253A0:  65 20 6E 65 78 74 20 66 72 65 65 20 73 70 61 63    e next free spac
0253B0:  65 20 69 6E 20 77 24 2C 20 61 6E 64 20 75 73 65    e in w$, and use
0253C0:  20 74 68 65 20 6C 69 6E 6B 0D 0A 20 20 20 73 74     the link..   st
0253D0:  6F 72 61 67 65 20 66 6F 72 20 74 68 61 74 20 77    orage for that w
0253E0:  6F 72 64 20 74 6F 20 64 65 61 6C 20 77 69 74 68    ord to deal with
0253F0:  20 74 68 65 20 6F 76 65 72 66 6C 6F 77 20 66 72     the overflow fr
025400:  6F 6D 20 77 6F 72 64 20 6E 2E 0D 0A 0D 0A 20 20    om word n.....  
025410:  20 53 75 62 72 6F 75 74 69 6E 65 20 34 30 30 20     Subroutine 400 
025420:  69 73 20 74 68 65 20 20 63 72 75 63 69 61 6C 20    is the  crucial 
025430:  20 6F 6E 65 20 20 77 68 69 63 68 20 20 73 65 61     one  which  sea
025440:  72 63 68 65 73 20 20 74 68 72 6F 75 67 68 20 74    rches  through t
025450:  68 65 20 65 78 69 73 74 69 6E 67 0D 0A 20 20 20    he existing..   
025460:  6C 69 6E 6B 73 20 66 72 6F 6D 20 77 6F 72 64 20    links from word 
025470:  22 70 77 6F 72 64 22 20 74 6F 20 73 65 65 20 69    "pword" to see i
025480:  66 20 20 22 63 77 6F 72 64 22 20 69 73 20 61 6C    f  "cword" is al
025490:  72 65 61 64 79 20 61 6D 6F 6E 67 20 74 68 65 6D    ready among them
0254A0:  2E 20 20 49 66 20 6E 6F 74 2C 0D 0A 20 20 20 63    .  If not,..   c
0254B0:  77 6F 72 64 20 69 73 20 61 64 64 65 64 20 74 6F    word is added to
0254C0:  20 74 68 65 20 6C 69 6E 6B 73 20 20 61 73 20 20     the links  as  
0254D0:  61 20 20 77 6F 72 64 20 20 74 68 61 74 20 20 63    a  word  that  c
0254E0:  61 6E 20 66 6F 6C 6C 6F 77 20 70 77 6F 72 64 2E    an follow pword.
0254F0:  20 20 54 68 65 20 6E 65 77 0D 0A 20 20 20 73 75      The new..   su
025500:  20 31 20 74 6F 20 6E 77 6F 72 64 73 20 77 69 6C     1 to nwords wil
025510:  6C 20 62 65 20 75 73 65 64 20 66 6F 72 0D 0A 20    l be used for.. 
025520:  20 20 73 74 6F 72 69 6E 67 20 61 63 74 75 61 6C      storing actual
025530:  20 77 6F 72 64 73 3A 20 73 6F 6D 65 20 20 77 69     words: some  wi
025540:  6C 6C 20 20 62 65 20 20 64 75 6D 6D 79 20 20 77    ll  be  dummy  w
025550:  6F 72 64 73 20 20 75 73 65 64 20 66 6F 72 20 73    ords  used for s
025560:  74 6F 72 69 6E 67 20 65 78 74 72 61 0D 0A 20 20    toring extra..  
025570:  20 6C 69 6E 6B 73 20 62 65 79 6F 6E 64 20 74 68     links beyond th
025580:  65 20 74 77 65 6E 74 79 20 61 6C 6C 6F 77 65 64    e twenty allowed
025590:  20 66 6F 72 20 6F 6E 65 20 77 6F 72 64 2E 0D 0A     for one word...
0255A0:  0D 0A 20 20 20 4F 66 20 63 6F 75 72 73 65 2C 20    ..   Of course, 
0255B0:  61 73 20 77 65 6C 6C 20 61 73 20 73 74 6F 72 69    as well as stori
0255C0:  6E 67 20 20 74 68 65 20 20 6C 69 6E 6B 73 20 20    ng  the  links  
0255D0:  77 65 20 20 6E 65 65 64 20 74 6F 20 62 65 20 61    we  need to be a
0255E0:  62 6C 65 20 74 6F 20 72 65 74 72 69 65 76 65 0D    ble to retrieve.
0255F0:  0A 20 20 20 74 68 65 6D 20 77 68 65 6E 20 63 72    .   them when cr
025600:  65 61 74 69 6E 67 20 72 61 6E 64 6F 6D 20 73 65    eating random se
025610:  6E 74 65 6E 63 65 73 2E 20 20 4C 69 6E 65 20 35    ntences.  Line 5
025620:  30 35 20 69 73 20 61 64 64 65 64 20 69 6E 20 6F    05 is added in o
025630:  72 64 65 72 20 74 6F 20 61 64 6A 75 73 74 0D 0A    rder to adjust..
025640:  20 20 20 74 68 69 73 20 72 6F 75 74 69 6E 65 2E       this routine.
025650:  20 20 49 6E 20 6C 69 6E 65 20 35 30 30 2C 20 69      In line 500, i
025660:  20 20 69 73 20 20 73 65 74 20 20 74 6F 20 20 61      is  set  to  a
025670:  20 20 72 61 6E 64 6F 6D 20 6E 75 6D 62 65 72 20      random number 
025680:  66 72 6F 6D 20 31 20 74 6F 20 74 68 65 0D 0A 20    from 1 to the.. 
025690:  20 20 6E 75 6D 62 65 72 20 6F 66 20 6C 69 6E 6B      number of link
0256A0:  73 20 66 72 6F 6D 20 74 68 61 74 20 77 6F 72 64    s from that word
0256B0:  2E 20 20 49 66 20 20 69 20 20 69 73 20 67 72 65    .  If  i  is gre
0256C0:  61 74 65 72 20 74 68 61 6E 20 6D 6C 69 6E 6B 73    ater than mlinks
0256D0:  2D 31 2C 20 74 68 65 6E 20 74 68 65 0D 0A 20 20    -1, then the..  
0256E0:  20 6C 69 6E 6B 20 77 69 6C 6C 20 62 65 20 73 74     link will be st
0256F0:  6F 72 65 64 20 75 6E 64 65 72 20 61 20 64 75 6D    ored under a dum
025700:  62 72 6F 75 74 69 6E 65 20 69 73 20 6C 69 73 74    broutine is list
025710:  65 64 20 69 6E 20 66 75 6C 6C 20 69 6E 20 46 69    ed in full in Fi
025720:  67 75 72 65 20 32 2E 0D 0A 0D 0A 20 20 20 49 6E    gure 2.....   In
025730:  20 74 68 65 20 6F 6C 64 20 72 6F 75 74 69 6E 65     the old routine
025740:  2C 20 20 6C 69 6E 65 20 20 34 31 30 20 20 6C 6F    ,  line  410  lo
025750:  6F 6B 65 64 20 20 74 68 72 6F 75 67 68 20 20 74    oked  through  t
025760:  68 65 20 20 6C 69 6E 6B 73 20 20 62 79 20 6C 6F    he  links  by lo
025770:  6F 6B 69 6E 67 20 61 74 0D 0A 20 20 20 6C 6B 28    oking at..   lk(
025780:  70 77 6F 72 64 2C 78 29 2E 20 20 54 68 69 73 20    pword,x).  This 
025790:  69 73 20 67 72 65 61 74 20 77 68 65 6E 20 61 6C    is great when al
0257A0:  6C 20 20 79 6F 75 72 20 20 6C 69 6E 6B 73 20 61    l  your  links a
0257B0:  72 65 20 73 74 6F 72 65 64 20 74 6F 67 65 74 68    re stored togeth
0257C0:  65 72 2C 20 62 75 74 0D 0A 20 20 20 69 6E 20 6F    er, but..   in o
0257D0:  75 72 20 6E 65 77 20 61 72 72 61 6E 67 65 6D 65    ur new arrangeme
0257E0:  6E 74 2C 20 6C 61 74 65 72 20 6C 69 6E 6B 73 20    nt, later links 
0257F0:  20 77 69 6C 6C 20 20 6E 6F 74 20 20 62 65 20 73     will  not  be s
025800:  74 6F 72 65 64 20 75 6E 64 65 72 20 70 77 6F 72    tored under pwor
025810:  64 2C 20 62 75 74 0D 0A 20 20 20 75 6E 64 65 72    d, but..   under
025820:  20 74 68 65 20 64 75 6D 6D 79 20 77 6F 72 64 2E     the dummy word.
025830:  20 20 54 68 75 73 20 69 6E 20 6C 69 6E 65 20 34      Thus in line 4
025840:  30 30 20 77 65 20 73 65 74 20 75 70 20 61 20 6E    00 we set up a n
025850:  65 77 20 76 61 72 69 61 62 6C 65 2C 20 79 2C 20    ew variable, y, 
025860:  77 68 69 63 68 0D 0A 20 20 20 77 69 6C 6C 20 74    which..   will t
025870:  61 6B 65 20 75 73 20 74 68 72 6F 75 67 68 20 74    ake us through t
025880:  68 65 20 73 74 6F 72 61 67 65 20 6C 6F 63 61 74    he storage locat
025890:  69 6F 6E 73 2E 20 20 49 6E 69 74 69 61 6C 6C 79    ions.  Initially
0258A0:  20 69 74 20 69 73 20 73 65 74 20 74 6F 20 70 77     it is set to pw
0258B0:  6F 72 64 2C 0D 0A 20 20 20 61 73 20 62 65 66 6F    ord,..   as befo
0258C0:  72 65 2E 0D 0A 0D 0A 20 20 20 4C 69 6E 65 20 34    re.....   Line 4
0258D0:  31 30 20 69 73 20 6D 75 63 68 20 74 68 65 20 73    10 is much the s
0258E0:  61 6D 65 20 65 78 63 65 70 74 20 20 74 68 61 74    ame except  that
0258F0:  20 20 70 77 6F 72 64 20 68 61 73 20 62 65 65 6E      pword has been
025900:  6D 79 20 20 77 6F 72 64 2C 20 72 61 74 68 65 72    my  word, rather
025910:  20 74 68 61 6E 20 74 68 65 20 63 75 72 72 65 6E     than the curren
025920:  74 20 77 6F 72 64 2E 20 20 49 6E 0D 0A 20 20 20    t word.  In..   
025930:  6C 69 6E 65 20 35 30 35 20 77 65 20 6D 6F 76 65    line 505 we move
025940:  20 70 77 6F 72 64 20 6F 6E 20 74 6F 20 20 70 6F     pword on to  po
025950:  69 6E 74 20 20 61 74 20 20 74 68 65 20 64 75 6D    int  at  the dum
025960:  6D 79 20 77 6F 72 64 2C 20 61 6E 64 20 64 65 63    my word, and dec
025970:  72 65 61 73 65 20 69 20 62 79 0D 0A 20 20 20 6D    rease i by..   m
025980:  6C 69 6E 6B 73 2D 31 2E 20 20 54 68 69 73 20 69    links-1.  This i
025990:  73 20 64 6F 6E 65 20 61 73 20 6D 61 6E 79 20 74    s done as many t
0259A0:  69 6D 65 73 20 61 73 20 69 73 20 6E 65 65 64 65    imes as is neede
0259B0:  64 20 74 6F 20 72 65 61 63 68 20 74 68 65 20 64    d to reach the d
0259C0:  75 6D 6D 79 20 77 6F 72 64 0D 0A 20 20 20 77 68    ummy word..   wh
0259D0:  65 72 65 20 6F 75 72 20 72 61 6E 64 6F 6D 20 6C    ere our random l
0259E0:  69 6E 6B 20 69 73 20 6C 6F 63 61 74 65 64 2E 0D    ink is located..
0259F0:  0A 0D 0A 20 20 20 54 68 65 20 72 65 73 74 20 6F    ...   The rest o
025A00:  66 20 74 68 65 20 61 6C 74 65 72 61 74 69 6F 6E    f the alteration
025A10:  73 20 61 72 65 20 20 74 6F 20 20 6D 61 6B 65 20    s are  to  make 
025A20:  6C 6F 61 64 69 6E 67 20 61 6E 64 20 73 61 76 69    loading and savi
025A30:  6E 67 20 6F 66 20 76 6F 63 61 62 75 6C 61 72 79    ng of vocabulary
025A40:  0D 0A 20 20 20 77 6F 72 6B 20 63 6F 72 72 65 63    ..   work correc
025A50:  74 6C 79 20 75 6E 64 65 72 20 74 68 65 20 6E 65    tly under the ne
025A60:  77 20 73 79 73 74 65 6D 2E 0D 0A 0D 0A 20 20 20    w system.....   
025A70:  4F 50 54 49 4D 49 53 41 54 49 4F 4E 0D 0A 20 20    OPTIMISATION..  
025A80:  20 4E 6F 77 20 74 68 61 74 20 77 65 20 68 61 76     Now that we hav
025A90:  65 20 6F 76 65 72 63 6F 6D 65 20 74 68 65 20 6C    e overcome the l
025AA0:  69 6D 69 74 20 69 6D 70 6F 73 65 64 20 62 79 20    imit imposed by 
025AB0:  6D 6C 69 6E 6B 73 2C 20 70 65 72 68 61 70 73 20    mlinks, perhaps 
025AC0:  77 65 20 6F 75 67 68 74 20 74 6F 0D 0A 20 20 20    we ought to..   
025AD0:  74 68 69 6E 6B 20 61 62 6F 75 74 20 77 68 61 74    think about what
025AE0:  20 61 6E 20 61 70 70 72 6F 70 72 69 61 74 65 20     an appropriate 
025AF0:  76 61 6C 75 65 20 20 66 6F 72 20 20 6D 6C 69 6E    value  for  mlin
025B00:  20 72 65 70 6C 61 63 65 64 20 62 79 20 79 2E 20     replaced by y. 
025B10:  20 54 68 65 0D 0A 20 20 20 62 69 67 20 63 68 61     The..   big cha
025B20:  6E 67 65 20 69 73 20 74 68 65 20 6E 65 77 20 6C    nge is the new l
025B30:  69 6E 65 20 34 31 35 2E 20 20 20 54 68 69 73 20    ine 415.   This 
025B40:  20 74 65 73 74 73 20 77 68 65 74 68 65 72 20 78     tests whether x
025B50:  20 69 73 20 70 6F 69 6E 74 69 6E 67 20 61 74 20     is pointing at 
025B60:  74 68 65 0D 0A 20 20 20 6C 61 73 74 20 6C 69 6E    the..   last lin
025B70:  6B 20 69 6E 20 74 68 65 20 62 6C 6F 63 6B 2E 20    k in the block. 
025B80:  20 54 68 69 73 20 69 73 20 6E 6F 20 20 6C 6F 6E     This is no  lon
025B90:  67 65 72 20 75 73 65 64 20 66 6F 72 20 61 6E 20    ger used for an 
025BA0:  6F 72 64 69 6E 61 72 79 20 6C 69 6E 6B 2C 20 62    ordinary link, b
025BB0:  75 74 0D 0A 20 20 20 70 6F 69 6E 74 73 20 74 6F    ut..   points to
025BC0:  20 74 68 65 20 64 75 6D 6D 79 20 77 6F 72 64 20     the dummy word 
025BD0:  77 68 65 72 65 20 74 68 65 20 72 65 73 74 20 20    where the rest  
025BE0:  6F 66 20 74 68 65 20 6C 69 6E 6B 73 20 61 72 65    of the links are
025BF0:  20 74 6F 20 62 65 20 66 6F 75 6E 64 2E 20 20 53     to be found.  S
025C00:  6F 0D 0A 20 20 20 69 66 20 78 3D 6D 6C 69 6E 6B    o..   if x=mlink
025C10:  73 2C 20 77 65 20 73 65 74 20 79 20 20 74 6F 20    s, we set y  to 
025C20:  20 62 65 20 20 74 68 65 20 20 70 6F 73 69 74 69     be  the  positi
025C30:  6F 6E 20 20 6F 66 20 20 74 68 65 20 64 75 6D 6D    on  of  the dumm
025C40:  79 20 77 6F 72 64 2C 20 77 68 69 63 68 20 69 73    y word, which is
025C50:  0D 0A 20 20 20 70 6F 69 6E 74 65 64 20 74 6F 20    ..   pointed to 
025C60:  62 79 20 74 68 61 74 20 6C 69 6E 6B 2C 20 61 6E    by that link, an
025C70:  64 20 70 75 74 20 78 20 62 61 63 6B 20 74 6F 20    d put x back to 
025C80:  31 2E 0D 0A 0D 0A 20 20 20 54 68 65 20 72 65 73    1.....   The res
025C90:  74 20 6F 66 20 74 68 65 20 6C 6F 6F 70 20 77 6F    t of the loop wo
025CA0:  72 6B 73 20 74 68 65 20 20 73 61 6D 65 20 20 62    rks the  same  b
025CB0:  65 66 6F 72 65 2C 20 20 61 6E 64 20 20 62 79 20    efore,  and  by 
025CC0:  74 68 65 20 74 69 6D 65 20 77 65 20 65 78 69 74    the time we exit
025CD0:  20 61 74 0D 0A 20 20 20 6C 69 6E 65 20 34 32 30     at..   line 420
025CE0:  2C 20 77 65 20 77 69 6C 6C 20 65 69 74 68 65 72    , we will either
025CF0:  20 68 61 76 65 20 66 6F 75 6E 64 20 61 20 6C 69     have found a li
025D00:  6B 73 20 20 6D 69 67 68 74 20 62 65 2E 20 20 57    ks  might be.  W
025D10:  65 20 6F 6E 6C 79 20 73 65 74 0D 0A 20 20 20 6D    e only set..   m
025D20:  6C 69 6E 6B 73 20 74 6F 20 32 30 20 62 65 63 61    links to 20 beca
025D30:  75 73 65 20 69 74 20 77 61 73 20 61 20 67 6F 6F    use it was a goo
025D40:  64 20 20 68 69 67 68 20 6E 75 6D 62 65 72 20 74    d  high number t
025D50:  68 61 74 20 77 6F 75 6C 64 20 74 61 6B 65 20 61    hat would take a
025D60:  20 77 68 69 6C 65 20 74 6F 0D 0A 20 20 20 72 65     while to..   re
025D70:  61 63 68 2E 20 20 41 20 73 6D 61 6C 6C 65 72 20    ach.  A smaller 
025D80:  76 61 6C 75 65 20 6D 69 67 68 74 20 61 6C 6C 6F    value might allo
025D90:  77 20 75 73 20 74 6F 20 73 74 6F 72 65 20 74 68    w us to store th
025DA0:  65 20 64 61 74 61 20 6D 6F 72 65 20 65 66 66 69    e data more effi
025DB0:  63 69 65 6E 74 6C 79 2E 0D 0A 0D 0A 20 20 20 57    ciently.....   W
025DC0:  65 20 63 61 6E 20 77 6F 72 6B 20 6F 75 74 20 74    e can work out t
025DD0:  68 65 20 61 6D 6F 75 6E 74 20 20 6F 66 20 20 73    he amount  of  s
025DE0:  70 61 63 65 20 20 72 65 71 75 69 72 65 64 20 20    pace  required  
025DF0:  70 65 72 20 77 6F 72 64 20 64 65 70 65 6E 64 69    per word dependi
025E00:  6E 67 20 6F 6E 20 74 68 65 0D 0A 20 20 20 76 61    ng on the..   va
025E10:  6C 75 65 20 6F 66 20 6D 6C 69 6E 6B 73 2E 20 20    lue of mlinks.  
025E20:  54 68 65 20 77 6F 72 64 20 69 74 73 65 6C 66 20    The word itself 
025E30:  20 75 73 65 73 20 20 33 20 62 79 74 65 73 20 66     uses  3 bytes f
025E40:  6F 72 20 74 68 65 20 73 74 72 69 6E 67 20 64 65    or the string de
025E50:  73 63 72 69 70 74 6F 72 0D 0A 20 20 20 62 6C 6F    scriptor..   blo
025E60:  63 6B 2C 20 70 6C 75 73 20 61 73 20 6D 61 6E 79    ck, plus as many
025E70:  20 62 79 74 65 73 20 61 73 20 74 68 65 20 77 6F     bytes as the wo
025E80:  72 64 20 20 69 73 20 6C 6F 6E 67 2E 20 20 54 68    rd  is long.  Th
025E90:  65 20 73 70 61 63 65 20 6F 63 63 75 70 69 65 64    e space occupied
025EA0:  20 62 79 20 74 68 65 0D 0A 20 20 20 61 72 72 61     by the..   arra
025EB0:  79 20 6F 66 20 6C 69 6E 6B 73 20 69 73 20 74 77    y of links is tw
025EC0:  6F 20 74 69 6D 65 73 20 6D 6C 69 6E 6B 73 2B 31    o times mlinks+1
025ED0:  2C 20 20 61 73 20 65 61 63 68 20 69 6E 74 65 67    ,  as each integ
025EE0:  65 72 20 6E 65 65 64 73 20 74 77 6F 20 62 79 74    er needs two byt
025EF0:  65 73 2E 20 20 49 0D 0A 20 20 20 68 61 64 20 61    es.  I..   had a
025F00:  6E 6B 20 74 6F 20 63 77 6F 72 64 2C 20 69 6E 20    nk to cword, in 
025F10:  77 68 69 63 68 20 63 61 73 65 20 6A 3E 30 2C 20    which case j>0, 
025F20:  6F 72 0D 0A 20 20 20 77 65 20 77 69 6C 6C 20 6E    or..   we will n
025F30:  65 65 64 20 74 6F 20 61 64 64 20 6F 6E 65 2E 20    eed to add one. 
025F40:  20 56 61 72 69 61 62 6C 65 73 20 78 20 20 61 6E     Variables x  an
025F50:  64 20 79 20 77 69 6C 6C 20 73 74 69 6C 6C 20 62    d y will still b
025F60:  65 20 70 6F 69 6E 74 69 6E 67 20 61 74 20 74 68    e pointing at th
025F70:  65 0D 0A 20 20 20 6E 65 78 74 20 66 72 65 65 20    e..   next free 
025F80:  6C 69 6E 6B 2C 20 73 6F 20 6C 69 6E 65 20 34 33    link, so line 43
025F90:  30 20 69 73 20 20 61 6C 74 65 72 65 64 20 73 6C    0 is  altered sl
025FA0:  69 67 68 74 6C 79 20 66 72 6F 6D 20 74 68 65 20    ightly from the 
025FB0:  70 72 65 76 69 6F 75 73 20 76 65 72 73 69 6F 6E    previous version
025FC0:  0D 0A 20 20 20 74 6F 20 63 68 61 6E 67 65 20 70    ..   to change p
025FD0:  77 6F 72 64 20 74 6F 20 20 79 20 20 61 67 61 69    word to  y  agai
025FE0:  6E 2C 20 20 61 6E 64 20 20 74 68 65 20 20 6E 65    n,  and  the  ne
025FF0:  77 20 20 6C 69 6E 6B 20 20 74 6F 20 20 63 77 6F    w  link  to  cwo
026000:  72 64 20 69 73 20 73 74 6F 72 65 64 20 69 6E 0D    rd is stored in.
026010:  0A 20 20 20 6C 6B 28 79 2C 78 29 2E 20 20 4E 6F    .   lk(y,x).  No
026020:  74 65 20 74 68 61 74 20 77 65 20 20 73 74 69 6C    te that we  stil
026030:  6C 20 20 75 73 65 20 20 70 77 6F 72 64 20 20 61    l  use  pword  a
026040:  74 20 20 74 68 65 20 20 73 74 61 72 74 20 20 6F    t  the  start  o
026050:  66 20 20 6C 69 6E 65 20 34 33 30 20 74 6F 0D 0A    f  line 430 to..
026060:  20 20 20 69 6E 63 72 65 61 73 65 20 74 68 65 20       increase the 
026070:  63 6F 75 6E 74 20 6F 66 20 74 68 65 20 6E 75 6D    count of the num
026080:  62 65 72 20 6F 66 20 20 6C 69 6E 6B 73 20 20 66    ber of  links  f
026090:  72 6F 6D 20 70 77 6F 72 64 2C 20 77 68 69 63 68    rom pword, which
0260A0:  20 69 73 20 73 74 6F 72 65 64 20 69 6E 0D 0A 20     is stored in.. 
0260B0:  20 20 6C 6B 28 70 77 6F 72 64 2C 30 29 2E 0D 0A      lk(pword,0)...
0260C0:  0D 0A 20 20 20 4F 6E 65 20 66 75 72 74 68 65 72    ..   One further
0260D0:  20 74 68 69 6E 67 20 6E 65 65 64 73 20 74 6F 20     thing needs to 
0260E0:  62 65 20 64 6F 6E 65 2C 20 77 68 69 63 68 20 20    be done, which  
0260F0:  69 73 20 77 68 79 20 6C 69 6E 65 20 34 33 35 20    is why line 435 
026100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
026110:  20 00 01 00 02 09 4E E5 20 00 C3 02 00 00 00 02     .....N. .......
026120:  20 00 C8 02 00 00 00 02 20 00 C4 02 00 00 00 02     ....... .......
026130:  20 00 C9 02 00 00 00 02 20 00 C5 02 00 00 00 02     ....... .......
026140:  20 00 C1 02 00 00 00 02 20 00 C6 02 00 00 00 02     ....... .......
026150:  20 00 C2 02 00 00 00 02 20 00 C7 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:  20 74 68 61 6E 20 74 68 65 20 70 72 65 76 69 6F     than the previo
026210:  75 73 20 76 65 72 73 69 6F 6E 2C 20 20 61 6E 64    us version,  and
026220:  20 20 6D 6F 73 74 20 20 6F 66 20 20 74 68 65 20      most  of  the 
026230:  20 70 6F 77 65 72 20 20 6F 66 20 74 68 65 20 66     power  of the f
026240:  61 73 74 20 50 65 6E 74 69 75 6D 0D 0A 20 20 20    ast Pentium..   
026250:  70 72 6F 63 65 73 73 6F 72 73 20 69 73 20 77 61    processors is wa
026260:  73 74 65 64 20 69 6E 20 72 75 6E 6E 69 6E 67 20    sted in running 
026270:  20 74 68 65 20 20 73 6C 6F 70 70 79 20 20 63 6F     the  sloppy  co
026280:  64 65 20 69 6E 20 74 68 65 20 6F 70 65 72 61 74    de in the operat
026290:  69 6E 67 20 73 79 73 74 65 6D 0D 0A 20 20 20 61    ing system..   a
0262A0:  6E 64 20 74 68 65 20 69 6E 63 72 65 61 73 69 6E    nd the increasin
0262B0:  67 6C 79 20 62 6C 6F 61 74 65 64 20 61 70 70 6C    gly bloated appl
0262C0:  69 63 61 74 69 6F 6E 73 2E 0D 0A 0D 0A 20 20 20    ications.....   
0262D0:  42 41 47 20 54 48 45 20 42 55 47 0D 0A 20 20 20    BAG THE BUG..   
0262E0:  41 6E 79 77 61 79 2C 20 65 6E 6F 75 67 68 20 6F    Anyway, enough o
0262F0:  66 20 74 68 61 74 2C 20 61 6E 64 20 62 61 63 6B    f that, and back
026300:  20 74 6F 20 20 6F 75 72 20 66 72 69 65 6E 64 6C     to  our friendl
026310:  79 20 41 6D 73 74 72 61 64 73 2C 20 74 72 79 69    y Amstrads, tryi
026320:  6E 67 20 74 6F 20 6D 61 6B 65 0D 0A 20 20 20 63    ng to make..   c
026330:  6F 6E 76 65 72 73 61 74 69 6F 6E 2E 20 20 49 66    onversation.  If
026340:  20 79 6F 75 20 61 72 65 20 66 65 65 6C 69 6E 67     you are feeling
026350:  20 72 65 61 6C 6C 79 20 20 6F 6E 20 20 74 68 65     really  on  the
026360:  20 20 62 61 6C 6C 2C 20 68 61 76 65 20 61 20 67      ball, have a g
026370:  6F 20 61 74 20 74 68 69 73 0D 0A 20 20 20 70 72    o at this..   pr
026380:  6F 62 6C 65 6D 2E 20 20 57 68 69 6C 65 20 77 72    oblem.  While wr
026390:  69 74 69 6E 67 20 74 68 65 20 61 72 74 69 63 6C    iting the articl
0263A0:  65 2C 20 49 20 73 70 6F 74 74 65 64 20 20 61 20    e, I spotted  a 
0263B0:  62 75 67 20 69 6E 20 74 68 65 20 70 72 6F 67 72    bug in the progr
0263C0:  61 6D 2C 20 74 68 61 74 0D 0A 20 20 20 63 61 6E    am, that..   can
0263D0:  20 62 65 20 63 75 72 65 64 20 62 79 20 61 64 64     be cured by add
0263E0:  69 6E 67 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E    ing the followin
0263F0:  67 20 74 77 6F 20 63 6F 6D 6D 61 6E 64 73 20 74    g two commands t
026400:  77 63 6F 75 6E 74 2B 31 0D 0A 31 34 30 20 70 77    wcount+1..140 pw
026410:  6F 72 64 3D 30 3A 46 4F 52 20 69 3D 30 20 54 4F    ord=0:FOR i=0 TO
026420:  20 77 63 6F 75 6E 74 2D 31 3A 77 6F 72 64 24 3D     wcount-1:word$=
026430:  74 65 6D 70 77 24 28 69 29 0D 0A 31 35 30 20 63    tempw$(i)..150 c
026440:  77 6F 72 64 3D 6E 77 6F 72 64 73 3A 57 48 49 4C    word=nwords:WHIL
026450:  45 20 63 77 6F 72 64 3E 30 20 41 4E 44 20 77 6F    E cword>0 AND wo
026460:  72 64 24 3C 3E 77 24 28 63 77 6F 72 64 29 3A 63    rd$<>w$(cword):c
026470:  77 6F 72 64 3D 63 77 6F 72 64 2D 31 3A 57 45 4E    word=cword-1:WEN
026480:  44 0D 0A 31 36 30 20 49 46 20 63 77 6F 72 64 3D    D..160 IF cword=
026490:  30 20 54 48 45 4E 20 6E 77 6F 72 64 73 3D 6E 77    0 THEN nwords=nw
0264A0:  6F 72 64 73 2B 31 3A 77 24 28 6E 77 6F 72 64 73    ords+1:w$(nwords
0264B0:  29 3D 77 6F 72 64 24 3A 6C 6B 28 6E 77 6F 72 64    )=word$:lk(nword
0264C0:  73 2C 30 29 3D 30 3A 63 77 6F 72 64 3D 6E 77 6F    s,0)=0:cword=nwo
0264D0:  72 64 73 0D 0A 31 37 30 20 47 4F 53 55 42 20 34    rds..170 GOSUB 4
0264E0:  30 30 3A 70 77 6F 72 64 3D 63 77 6F 72 64 3A 4E    00:pword=cword:N
0264F0:  45 58 54 0D 0A 31 38 30 20 63 77 6F 72 64 3D 30    EXT..180 cword=0
026500:  3A 47 4F 53 55 42 20 34 30 30 0D 0A 31 39 30 20    :GOSUB 400..190 
026510:  52 45 54 55 52 4E 0D 0A 32 30 30 20 70 77 6F 72    RETURN..200 pwor
026520:  64 3D 30 3A 47 4F 53 55 42 20 35 30 30 0D 0A 32    d=0:GOSUB 500..2
026530:  31 30 20 57 48 49 4C 45 20 70 77 6F 72 64 3E 30    10 WHILE pword>0
026540:  3A 50 52 49 4E 54 20 77 24 28 70 77 6F 72 64 29    :PRINT w$(pword)
026550:  22 20 22 3B 3A 47 4F 53 55 42 20 35 30 30 3A 57    " ";:GOSUB 500:W
026560:  45 4E 44 0D 0A 32 32 30 20 50 52 49 4E 54 20 43    END..220 PRINT C
026570:  48 52 24 28 38 29 3B 22 2E 22 3A 50 52 49 4E 54    HR$(8);".":PRINT
026580:  0D 0A 32 33 30 20 52 45 54 55 52 4E 0D 0A 33 30    ..230 RETURN..30
026590:  30 20 57 48 49 4C 45 20 4C 45 46 54 24 28 61 24    0 WHILE LEFT$(a$
0265A0:  2C 31 29 3D 22 20 22 3A 61 24 3D 4D 49 44 24 28    ,1)=" ":a$=MID$(
0265B0:  61 24 2C 32 29 3A 57 45 4E 44 3A 52 45 54 55 52    a$,2):WEND:RETUR
0265C0:  4E 0D 0A 34 30 30 20 6A 3D 6C 6B 28 70 77 6F 72    N..400 j=lk(pwor
0265D0:  64 2C 30 29 3A 78 3D 31 3A 79 3D 70 77 6F 72 64    d,0):x=1:y=pword
0265E0:  0D 0A 34 31 30 20 57 48 49 4C 45 20 6A 3E 30 20    ..410 WHILE j>0 
0265F0:  41 4E 44 20 63 77 6F 72 64 3C 3E 6C 6B 28 79 2C    AND cword<>lk(y,
026600:  6F 20 74 68 65 20 65 6E 64 20 6F 66 20 6C 69 6E    o the end of lin
026610:  65 20 34 33 35 3A 0D 0A 0D 0A 20 20 20 20 20 77    e 435:....     w
026620:  24 28 6E 77 6F 72 64 73 29 3D 22 22 3A 6C 6B 28    $(nwords)="":lk(
026630:  6E 77 6F 72 64 73 2C 30 29 3D 30 0D 0A 0D 0A 20    nwords,0)=0.... 
026640:  20 20 43 61 6E 20 79 6F 75 20 77 6F 72 6B 20 6F      Can you work o
026650:  75 74 20 77 68 61 74 20 74 68 65 20 62 75 67 20    ut what the bug 
026660:  20 77 61 73 2C 20 20 61 6E 64 20 20 67 69 76 65     was,  and  give
026670:  20 20 61 6E 20 65 78 61 6D 70 6C 65 20 6F 66 20      an example of 
026680:  68 6F 77 20 69 74 20 6D 69 67 68 74 0D 0A 20 20    how it might..  
026690:  20 6D 61 6E 69 66 65 73 74 20 69 74 73 65 6C 66     manifest itself
0266A0:  3F 20 20 49 27 6C 6C 20 67 69 76 65 20 20 79 6F    ?  I'll give  yo
0266B0:  75 20 20 61 20 20 63 6C 75 65 3A 20 20 69 74 20    u  a  clue:  it 
0266C0:  20 68 61 73 20 20 73 6F 6D 65 74 68 69 6E 67 20     has  something 
0266D0:  20 74 6F 20 64 6F 20 77 69 74 68 0D 0A 20 20 20     to do with..   
0266E0:  6C 6F 61 64 69 6E 67 20 6F 6C 64 20 76 6F 63 61    loading old voca
0266F0:  62 75 6C 61 72 79 2E 20 20 54 68 65 20 61 6E 73    bulary.  The ans
026700:  77 65 72 20 20 77 69 6C 6C 20 20 62 65 20 69 6E    wer  will  be in
026710:  20 6E 65 78 74 20 6D 6F 6E 74 68 27 73 20 50 72     next month's Pr
026720:  6F 67 72 61 6D 6D 65 72 73 27 0D 0A 20 20 20 50    ogrammers'..   P
026730:  61 74 63 68 2E 0D 0A 0D 0A 20 20 20 2D 2D 2D 2D    atch.....   ----
026740:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
026750:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
026760:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
026770:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
026780:  2D 2D 2D 2D 2D 2D 0D 0A 0D 0A 20 20 20 46 69 67    ------....   Fig
026790:  75 72 65 20 31 3A 20 4E 65 77 20 6C 69 6E 65 73    ure 1: New lines
0267A0:  20 74 6F 20 61 64 64 20 74 6F 20 74 68 65 20 41     to add to the A
0267B0:  49 20 70 72 6F 67 72 61 6D 0D 0A 0D 0A 20 20 20    I program....   
0267C0:  34 30 30 20 6A 3D 6C 6B 28 70 77 6F 72 64 2C 30    400 j=lk(pword,0
0267D0:  29 3A 78 3D 31 3A 79 3D 70 77 6F 72 64 0D 0A 20    ):x=1:y=pword.. 
0267E0:  20 20 34 31 30 20 57 48 49 4C 45 20 6A 3E 30 20      410 WHILE j>0 
0267F0:  41 4E 44 20 63 77 6F 72 64 3C 3E 6C 6B 28 79 2C    AND cword<>lk(y,
026800:  78 29 3A 6A 3D 6A 2D 31 3A 78 3D 78 2B 31 0D 0A    x):j=j-1:x=x+1..
026810:  34 31 35 20 49 46 20 78 3D 6D 6C 69 6E 6B 73 20    415 IF x=mlinks 
026820:  54 48 45 4E 20 79 3D 6C 6B 28 79 2C 78 29 3A 78    THEN y=lk(y,x):x
026830:  3D 31 0D 0A 34 32 30 20 57 45 4E 44 3A 49 46 20    =1..420 WEND:IF 
026840:  6A 3E 30 20 54 48 45 4E 20 34 34 30 0D 0A 34 33    j>0 THEN 440..43
026850:  30 20 6C 6B 28 70 77 6F 72 64 2C 30 29 3D 6C 6B    0 lk(pword,0)=lk
026860:  28 70 77 6F 72 64 2C 30 29 2B 31 3A 6C 6B 28 79    (pword,0)+1:lk(y
026870:  2C 78 29 3D 63 77 6F 72 64 0D 0A 34 33 35 20 49    ,x)=cword..435 I
026880:  46 20 78 3D 6D 6C 69 6E 6B 73 2D 31 20 54 48 45    F x=mlinks-1 THE
026890:  4E 20 6E 77 6F 72 64 73 3D 6E 77 6F 72 64 73 2B    N nwords=nwords+
0268A0:  31 3A 6C 6B 28 79 2C 6D 6C 69 6E 6B 73 29 3D 6E    1:lk(y,mlinks)=n
0268B0:  77 6F 72 64 73 3A 77 24 28 6E 77 6F 72 64 73 29    words:w$(nwords)
0268C0:  3D 22 22 3A 6C 6B 28 6E 77 6F 72 64 73 2C 30 29    ="":lk(nwords,0)
0268D0:  3D 30 0D 0A 34 34 30 20 52 45 54 55 52 4E 0D 0A    =0..440 RETURN..
0268E0:  35 30 30 20 69 3D 49 4E 54 28 52 4E 44 2A 6C 6B    500 i=INT(RND*lk
0268F0:  28 70 77 6F 72 64 2C 30 29 2B 31 29 0D 0A 35 30    (pword,0)+1)..50
026900:  35 20 57 48 49 4C 45 20 69 3E 3D 6D 6C 69 6E 6B    5 WHILE i>=mlink
026910:  73 3A 69 3D 31 2B 69 2D 6D 6C 69 6E 6B 73 3A 70    s:i=1+i-mlinks:p
026920:  77 6F 72 64 3D 6C 6B 28 70 77 6F 72 64 2C 6D 6C    word=lk(pword,ml
026930:  69 6E 6B 73 29 3A 57 45 4E 44 0D 0A 35 31 30 20    inks):WEND..510 
026940:  70 77 6F 72 64 3D 6C 6B 28 70 77 6F 72 64 2C 69    pword=lk(pword,i
026950:  29 3A 52 45 54 55 52 4E 0D 0A 36 30 30 20 66 69    ):RETURN..600 fi
026960:  6C 65 24 3D 4D 49 44 24 28 61 24 2C 37 29 3A 49    le$=MID$(a$,7):I
026970:  46 20 66 69 6C 65 24 3D 22 22 20 54 48 45 4E 20    F file$="" THEN 
026980:  66 69 6C 65 24 3D 22 56 4F 43 41 42 22 0D 0A 36    file$="VOCAB"..6
026990:  31 30 20 4F 50 45 4E 49 4E 20 66 69 6C 65 24 3A    10 OPENIN file$:
0269A0:  49 4E 50 55 54 23 39 2C 6E 77 6F 72 64 73 0D 0A    INPUT#9,nwords..
0269B0:  36 32 30 20 46 4F 52 20 69 3D 30 20 54 4F 20 6E    620 FOR i=0 TO n
0269C0:  77 6F 72 64 73 3A 49 4E 50 55 54 23 39 2C 77 24    words:INPUT#9,w$
0269D0:  28 69 29 2C 6C 6B 28 69 2C 30 29 0D 0A 36 33 30    (i),lk(i,0)..630
0269E0:  20 6A 3D 6C 6B 28 69 2C 30 29 3A 79 3D 69 3A 78     j=lk(i,0):y=i:x
0269F0:  3D 31 3A 57 48 49 4C 45 20 6A 3E 30 3A 6A 3D 6A    =1:WHILE j>0:j=j
026A00:  78 29 3A 6A 3D 6A 2D 31 3A 78 3D 78 2B 31 0D 0A    x):j=j-1:x=x+1..
026A10:  20 20 20 34 31 35 20 49 46 20 78 3D 6D 6C 69 6E       415 IF x=mlin
026A20:  6B 73 20 54 48 45 4E 20 79 3D 6C 6B 28 79 2C 78    ks THEN y=lk(y,x
026A30:  29 3A 78 3D 31 0D 0A 20 20 20 34 33 30 20 6C 6B    ):x=1..   430 lk
026A40:  28 70 77 6F 72 64 2C 30 29 3D 6C 6B 28 70 77 6F    (pword,0)=lk(pwo
026A50:  72 64 2C 30 29 2B 31 3A 6C 6B 28 79 2C 78 29 3D    rd,0)+1:lk(y,x)=
026A60:  63 77 6F 72 64 0D 0A 20 20 20 34 33 35 20 49 46    cword..   435 IF
026A70:  20 78 3D 6D 6C 69 6E 6B 73 2D 31 20 54 48 45 4E     x=mlinks-1 THEN
026A80:  20 6E 77 6F 72 64 73 3D 6E 77 6F 72 64 73 2B 31     nwords=nwords+1
026A90:  3A 6C 6B 28 79 2C 6D 6C 69 6E 6B 73 29 3D 6E 77    :lk(y,mlinks)=nw
026AA0:  6F 72 64 73 0D 0A 20 20 20 35 30 35 20 57 48 49    ords..   505 WHI
026AB0:  4C 45 20 69 3E 3D 6D 6C 69 6E 6B 73 3A 69 3D 31    LE i>=mlinks:i=1
026AC0:  2B 69 2D 6D 6C 69 6E 6B 73 3A 70 77 6F 72 64 3D    +i-mlinks:pword=
026AD0:  6C 6B 28 70 77 6F 72 64 2C 6D 6C 69 6E 6B 73 29    lk(pword,mlinks)
026AE0:  3A 57 45 4E 44 0D 0A 20 20 20 36 33 30 20 6A 3D    :WEND..   630 j=
026AF0:  6C 6B 28 69 2C 30 29 3A 79 3D 69 3A 78 3D 31 3A    lk(i,0):y=i:x=1:
026B00:  57 48 49 4C 45 20 6A 3E 30 3A 6A 3D 6A 2D 31 3A    WHILE j>0:j=j-1:
026B10:  49 4E 50 55 54 23 39 2C 6C 6B 28 79 2C 78 29 3A    INPUT#9,lk(y,x):
026B20:  78 3D 78 2B 31 0D 0A 20 20 20 36 33 35 20 49 46    x=x+1..   635 IF
026B30:  20 78 3D 6D 6C 69 6E 6B 73 20 54 48 45 4E 20 49     x=mlinks THEN I
026B40:  4E 50 55 54 23 39 2C 6C 6B 28 79 2C 78 29 3A 79    NPUT#9,lk(y,x):y
026B50:  3D 6C 6B 28 79 2C 78 29 3A 78 3D 31 0D 0A 20 20    =lk(y,x):x=1..  
026B60:  20 36 33 36 20 57 45 4E 44 3A 4E 45 58 54 0D 0A     636 WEND:NEXT..
026B70:  20 20 20 37 33 30 20 6A 3D 6C 6B 28 69 2C 30 29       730 j=lk(i,0)
026B80:  3A 79 3D 69 3A 78 3D 31 3A 57 48 49 4C 45 20 6A    :y=i:x=1:WHILE j
026B90:  3E 30 3A 6A 3D 6A 2D 31 3A 57 52 49 54 45 23 39    >0:j=j-1:WRITE#9
026BA0:  2C 6C 6B 28 79 2C 78 29 3A 78 3D 78 2B 31 0D 0A    ,lk(y,x):x=x+1..
026BB0:  20 20 20 37 33 35 20 49 46 20 78 3D 6D 6C 69 6E       735 IF x=mlin
026BC0:  6B 73 20 54 48 45 4E 20 57 52 49 54 45 23 39 2C    ks THEN WRITE#9,
026BD0:  6C 6B 28 79 2C 78 29 3A 79 3D 6C 6B 28 79 2C 78    lk(y,x):y=lk(y,x
026BE0:  29 3A 78 3D 31 0D 0A 20 20 20 37 33 36 20 57 45    ):x=1..   736 WE
026BF0:  4E 44 3A 4E 45 58 54 0D 0A 0D 0A 20 20 20 2D 2D    ND:NEXT....   --
026C00:  77 69 74 68 20 73 65 74 74 69 6E 67 20 6D 6C 69    with setting mli
026C10:  6E 6B 73 20 20 74 6F 20 20 32 30 2C 20 20 77 68    nks  to  20,  wh
026C20:  69 63 68 20 20 72 65 71 75 69 72 65 73 20 61 74    ich  requires at
026C30:  20 6C 65 61 73 74 20 66 69 66 74 79 0D 0A 20 20     least fifty..  
026C40:  20 62 79 74 65 73 20 70 65 72 20 77 6F 72 64 2E     bytes per word.
026C50:  20 20 42 79 20 72 65 64 75 63 69 6E 67 20 6D 6C      By reducing ml
026C60:  69 6E 6B 73 20 74 6F 20 36 20 20 66 72 6F 6D 20    inks to 6  from 
026C70:  32 30 20 77 65 20 63 61 6E 20 66 69 74 20 74 77    20 we can fit tw
026C80:  69 63 65 20 61 73 20 6D 61 6E 79 0D 0A 20 20 20    ice as many..   
026C90:  77 6F 72 64 73 20 69 6E 20 6D 65 6D 6F 72 79 2E    words in memory.
026CA0:  20 20 20 43 65 72 74 61 69 6E 6C 79 20 20 6D 77       Certainly  mw
026CB0:  6F 72 64 73 20 20 63 6F 75 6C 64 20 20 62 65 20    ords  could  be 
026CC0:  20 73 65 74 20 20 74 6F 20 20 73 6F 6D 65 74 68     set  to  someth
026CD0:  69 6E 67 20 6F 76 65 72 20 61 0D 0A 20 20 20 74    ing over a..   t
026CE0:  68 6F 75 73 61 6E 64 2E 0D 0A 0D 0A 20 20 20 49    housand.....   I
026CF0:  66 20 79 6F 75 20 61 6C 74 65 72 20 6D 6C 69 6E    f you alter mlin
026D00:  6B 73 2C 20 20 74 68 65 6E 20 20 76 6F 63 61 62    ks,  then  vocab
026D10:  75 6C 61 72 79 20 20 73 61 76 65 64 20 20 74 6F    ulary  saved  to
026D20:  20 20 64 69 73 63 20 20 77 68 65 6E 20 6D 6C 69      disc  when mli
026D30:  6E 6B 73 20 77 61 73 20 61 0D 0A 20 20 20 64 69    nks was a..   di
026D40:  66 66 65 72 65 6E 74 20 76 61 6C 75 65 20 77 69    fferent value wi
026D50:  6C 6C 20 6E 6F 74 20 6C 6F 61 64 20 20 69 6E 20    ll not load  in 
026D60:  20 63 6F 72 72 65 63 74 6C 79 2C 20 20 73 6F 20     correctly,  so 
026D70:  20 69 74 20 20 69 73 20 77 69 73 65 20 74 6F 20     it  is wise to 
026D80:  63 68 6F 6F 73 65 20 61 0D 0A 20 20 20 73 75 69    choose a..   sui
026D90:  74 61 62 6C 65 20 76 61 6C 75 65 20 66 6F 72 20    table value for 
026DA0:  6D 6C 69 6E 6B 73 20 61 6E 64 20 73 74 69 63 6B    mlinks and stick
026DB0:  20 74 6F 20 74 68 61 74 2E 20 20 20 49 20 77 69     to that.   I wi
026DC0:  6C 6C 20 62 65 20 75 73 69 6E 67 20 36 20 69 6E    ll be using 6 in
026DD0:  20 66 75 74 75 72 65 0D 0A 20 20 20 65 78 61 6D     future..   exam
026DE0:  70 6C 65 73 2C 20 62 75 74 20 79 6F 75 20 63 61    ples, but you ca
026DF0:  6E 20 65 61 73 69 6C 79 20 61 6C 74 65 72 20 69    n easily alter i
026E00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
026E10:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
026E20:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
026E30:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
026E40:  2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 0D 0A 20 20 20 46    --------....   F
026E50:  69 67 75 72 65 20 32 3A 20 54 68 65 20 6E 65 77    igure 2: The new
026E60:  20 73 75 62 72 6F 75 74 69 6E 65 20 61 74 20 34     subroutine at 4
026E70:  30 30 0D 0A 0D 0A 20 20 20 34 30 30 20 6A 3D 6C    00....   400 j=l
026E80:  6B 28 70 77 6F 72 64 2C 30 29 3A 78 3D 31 3A 79    k(pword,0):x=1:y
026E90:  3D 70 77 6F 72 64 0D 0A 20 20 20 34 31 30 20 57    =pword..   410 W
026EA0:  48 49 4C 45 20 6A 3E 30 20 41 4E 44 20 63 77 6F    HILE j>0 AND cwo
026EB0:  72 64 3C 3E 6C 6B 28 79 2C 78 29 3A 6A 3D 6A 2D    rd<>lk(y,x):j=j-
026EC0:  31 3A 78 3D 78 2B 31 0D 0A 20 20 20 34 31 35 20    1:x=x+1..   415 
026ED0:  49 46 20 78 3D 6D 6C 69 6E 6B 73 20 54 48 45 4E    IF x=mlinks THEN
026EE0:  20 79 3D 6C 6B 28 79 2C 78 29 3A 78 3D 31 0D 0A     y=lk(y,x):x=1..
026EF0:  20 20 20 34 32 30 20 57 45 4E 44 3A 49 46 20 6A       420 WEND:IF j
026F00:  3E 30 20 54 48 45 4E 20 34 34 30 0D 0A 20 20 20    >0 THEN 440..   
026F10:  34 33 30 20 6C 6B 28 70 77 6F 72 64 2C 30 29 3D    430 lk(pword,0)=
026F20:  6C 6B 28 70 77 6F 72 64 2C 30 29 2B 31 3A 6C 6B    lk(pword,0)+1:lk
026F30:  28 79 2C 78 29 3D 63 77 6F 72 64 0D 0A 20 20 20    (y,x)=cword..   
026F40:  34 33 35 20 49 46 20 78 3D 6D 6C 69 6E 6B 73 2D    435 IF x=mlinks-
026F50:  31 20 54 48 45 4E 20 6E 77 6F 72 64 73 3D 6E 77    1 THEN nwords=nw
026F60:  6F 72 64 73 2B 31 3A 6C 6B 28 79 2C 6D 6C 69 6E    ords+1:lk(y,mlin
026F70:  6B 73 29 3D 6E 77 6F 72 64 73 0D 0A 20 20 20 34    ks)=nwords..   4
026F80:  34 30 20 52 45 54 55 52 4E 0D 0A 1A 24 FF 00 FF    40 RETURN...$...
026F90:  74 63 68 20 31 37 20 2D 20 57 41 43 43 49 20 31    tch 17 - WACCI 1
026FA0:  32 36 0D 0A 20 20 20 50 52 4F 47 52 41 4D 4D 45    26..   PROGRAMME
026FB0:  52 53 27 20 50 41 54 43 48 20 31 37 0D 0A 20 20    RS' PATCH 17..  
026FC0:  20 42 79 20 4D 61 74 74 68 65 77 20 50 68 69 6C     By Matthew Phil
026FD0:  6C 69 70 73 0D 0A 0D 0A 20 20 20 54 68 65 20 73    lips....   The s
026FE0:  75 6E 20 62 65 61 74 20 64 6F 77 6E 20 6F 6E 20    un beat down on 
026FF0:  74 68 65 20 77 69 64 65 20 20 64 65 73 65 72 74    the wide  desert
027000:  74 20 74 6F 20 77 68 61 74 65 76 65 72 20 79 6F    t to whatever yo
027010:  75 20 68 61 76 65 20 73 65 6C 65 63 74 65 64 2E    u have selected.
027020:  0D 0A 0D 0A 20 20 20 54 68 69 73 20 73 6F 72 74    ....   This sort
027030:  20 6F 66 20 63 61 6C 63 75 6C 61 74 69 6F 6E 2C     of calculation,
027040:  20 6F 70 74 69 6D 69 73 69 6E 67 20 74 68 65 20     optimising the 
027050:  20 6D 65 74 68 6F 64 20 66 6F 72 20 73 74 6F 72     method for stor
027060:  69 6E 67 20 79 6F 75 72 20 64 61 74 61 2C 20 69    ing your data, i
027070:  73 0D 0A 20 20 20 6F 66 74 65 6E 20 6E 65 65 64    s..   often need
027080:  65 64 20 77 68 65 6E 20 70 72 6F 67 72 61 6D 6D    ed when programm
027090:  69 6E 67 20 6D 61 63 68 69 6E 65 73 20 77 69 74    ing machines wit
0270A0:  68 20 72 65 6C 61 74 69 76 65 6C 79 20 6C 69 74    h relatively lit
0270B0:  74 6C 65 20 6D 65 6D 6F 72 79 2C 20 6C 69 6B 65    tle memory, like
0270C0:  0D 0A 20 20 20 6F 75 72 20 41 6D 73 74 72 61 64    ..   our Amstrad
0270D0:  73 2E 20 20 49 74 20 69 73 20 61 6C 73 6F 20 61    s.  It is also a
0270E0:  20 67 6F 6F 64 20 20 68 61 62 69 74 20 20 74 6F     good  habit  to
0270F0:  20 67 65 74 20 69 6E 74 6F 20 77 68 65 6E 20 70     get into when p
027100:  72 6F 67 72 61 6D 6D 69 6E 67 20 6D 6F 72 65 0D    rogramming more.
027110:  0A 20 20 20 70 6F 77 65 72 66 75 6C 20 6D 61 63    .   powerful mac
027120:  68 69 6E 65 73 2E 20 20 53 61 64 6C 79 2C 20 6D    hines.  Sadly, m
027130:  6F 73 74 20 63 6F 6D 6D 65 72 63 69 61 6C 20 20    ost commercial  
027140:  70 72 6F 67 72 61 6D 73 20 20 66 6F 72 20 57 69    programs  for Wi
027150:  6E 64 6F 77 73 20 50 43 73 20 74 65 6E 64 0D 0A    ndows PCs tend..
027160:  20 20 20 74 6F 20 63 6F 6D 70 65 74 65 20 6F 6E       to compete on
027170:  20 74 68 65 20 66 65 61 74 75 72 65 73 20 74 68     the features th
027180:  65 79 20 20 70 72 6F 76 69 64 65 2C 20 20 72 61    ey  provide,  ra
027190:  74 68 65 72 20 20 74 68 61 6E 20 74 68 65 20 73    ther  than the s
0271A0:  70 65 65 64 20 61 74 20 77 68 69 63 68 0D 0A 20    peed at which.. 
0271B0:  20 20 74 68 65 79 20 72 75 6E 2E 20 20 4E 65 77      they run.  New
0271C0:  65 72 20 76 65 72 73 69 6F 6E 73 20 68 61 76 65    er versions have
0271D0:  20 20 6D 6F 72 65 20 20 66 65 61 74 75 72 65 73      more  features
0271E0:  2C 20 20 62 75 74 20 6F 66 74 65 6E 20 72 75 6E    ,  but often run
0271F0:  20 6D 6F 72 65 20 73 6C 6F 77 6C 79 0D 0A 20 20     more slowly..  
027200:  31 30 20 44 45 46 49 4E 54 20 61 2D 7A 3A 4F 50    10 DEFINT a-z:OP
027210:  45 4E 4F 55 54 22 64 22 3A 4D 45 4D 4F 52 59 20    ENOUT"d":MEMORY 
027220:  48 49 4D 45 4D 2D 31 3A 43 4C 4F 53 45 4F 55 54    HIMEM-1:CLOSEOUT
027230:  0D 0A 32 30 20 6D 77 6F 72 64 73 3D 31 30 30 30    ..20 mwords=1000
027240:  3A 6D 6C 69 6E 6B 73 3D 36 3A 6E 77 6F 72 64 73    :mlinks=6:nwords
027250:  3D 30 0D 0A 33 30 20 44 49 4D 20 77 24 28 6D 77    =0..30 DIM w$(mw
027260:  6F 72 64 73 29 2C 6C 6B 28 6D 77 6F 72 64 73 2C    ords),lk(mwords,
027270:  6D 6C 69 6E 6B 73 29 2C 74 65 6D 70 77 24 28 31    mlinks),tempw$(1
027280:  32 38 29 0D 0A 34 30 20 4C 49 4E 45 20 49 4E 50    28)..40 LINE INP
027290:  55 54 22 22 2C 61 24 0D 0A 34 31 20 49 46 20 55    UT"",a$..41 IF U
0272A0:  50 50 45 52 24 28 4C 45 46 54 24 28 61 24 2C 35    PPER$(LEFT$(a$,5
0272B0:  29 29 3D 22 2A 4C 4F 41 44 22 20 54 48 45 4E 20    ))="*LOAD" THEN 
0272C0:  47 4F 53 55 42 20 36 30 30 3A 47 4F 54 4F 20 34    GOSUB 600:GOTO 4
0272D0:  30 0D 0A 34 32 20 49 46 20 55 50 50 45 52 24 28    0..42 IF UPPER$(
0272E0:  4C 45 46 54 24 28 61 24 2C 35 29 29 3D 22 2A 53    LEFT$(a$,5))="*S
0272F0:  41 56 45 22 20 54 48 45 4E 20 47 4F 53 55 42 20    AVE" THEN GOSUB 
027300:  37 30 30 3A 47 4F 54 4F 20 34 30 0D 0A 35 30 20    700:GOTO 40..50 
027310:  77 63 6F 75 6E 74 3D 30 3A 47 4F 53 55 42 20 33    wcount=0:GOSUB 3
027320:  30 30 3A 49 46 20 61 24 3C 3E 22 22 20 54 48 45    00:IF a$<>"" THE
027330:  4E 20 47 4F 53 55 42 20 31 30 30 0D 0A 36 30 20    N GOSUB 100..60 
027340:  47 4F 53 55 42 20 32 30 30 3A 47 4F 54 4F 20 34    GOSUB 200:GOTO 4
027350:  30 0D 0A 31 30 30 20 57 48 49 4C 45 20 49 4E 53    0..100 WHILE INS
027360:  54 52 28 61 24 2C 22 20 22 29 3E 30 3A 61 3D 49    TR(a$," ")>0:a=I
027370:  4E 53 54 52 28 61 24 2C 22 20 22 29 0D 0A 31 31    NSTR(a$," ")..11
027380:  30 20 74 65 6D 70 77 24 28 77 63 6F 75 6E 74 29    0 tempw$(wcount)
027390:  3D 4C 45 46 54 24 28 61 24 2C 61 2D 31 29 3A 61    =LEFT$(a$,a-1):a
0273A0:  24 3D 4D 49 44 24 28 61 24 2C 61 2B 31 29 0D 0A    $=MID$(a$,a+1)..
0273B0:  31 32 30 20 77 63 6F 75 6E 74 3D 77 63 6F 75 6E    120 wcount=wcoun
0273C0:  74 2B 31 3A 47 4F 53 55 42 20 33 30 30 3A 57 45    t+1:GOSUB 300:WE
0273D0:  4E 44 0D 0A 31 33 30 20 49 46 20 61 24 3C 3E 22    ND..130 IF a$<>"
0273E0:  22 20 54 48 45 4E 20 74 65 6D 70 77 24 28 77 63    " THEN tempw$(wc
0273F0:  6F 75 6E 74 29 3D 61 24 3A 77 63 6F 75 6E 74 3D    ount)=a$:wcount=
027400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
027410:  21 00 01 00 02 09 4E E5 21 00 C6 02 00 00 00 02    !.....N.!.......
027420:  21 00 C2 02 00 00 00 02 21 00 C7 02 00 00 00 02    !.......!.......
027430:  21 00 C3 02 00 00 00 02 21 00 C8 02 00 00 00 02    !.......!.......
027440:  21 00 C4 02 00 00 00 02 21 00 C9 02 00 00 00 02    !.......!.......
027450:  21 00 C5 02 00 00 00 02 21 00 C1 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:  77 6F 72 64 20 74 68 65 20 66 75 6E 63 74 69 6F    word the functio
027510:  6E 20 77 69 6C 6C 0D 0A 20 20 20 61 6C 77 61 79    n will..   alway
027520:  73 20 63 68 75 72 6E 20 6F 75 74 20 74 68 65 20    s churn out the 
027530:  73 61 6D 65 20 20 6E 75 6D 62 65 72 2C 20 20 62    same  number,  b
027540:  75 74 20 20 69 74 20 20 69 73 20 75 6E 70 72 65    ut  it  is unpre
027550:  64 69 63 74 61 62 6C 65 20 69 6E 20 74 68 65 20    dictable in the 
027560:  73 65 6E 73 65 0D 0A 20 20 20 74 68 61 74 20 69    sense..   that i
027570:  66 20 79 6F 75 20 67 61 76 65 20 6D 65 20 61 20    f you gave me a 
027580:  77 6F 72 64 20 49 20 77 6F 75 6C 64 20 6E 6F 74    word I would not
027590:  20 62 65 20 61 62 6C 65 20 74 6F 20 67 75 65 73     be able to gues
0275A0:  73 20 77 68 65 74 68 65 72 20 74 68 65 20 6E 75    s whether the nu
0275B0:  6D 62 65 72 0D 0A 20 20 20 77 6F 75 6C 64 20 62    mber..   would b
0275C0:  65 20 6E 65 61 72 65 72 20 31 20 6F 72 20 31 30    e nearer 1 or 10
0275D0:  30 30 20 77 69 74 68 6F 75 74 20 77 6F 72 6B 69    00 without worki
0275E0:  6E 67 20 74 68 65 20 66 75 6E 63 74 69 6F 6E 20    ng the function 
0275F0:  6F 75 74 20 6D 79 73 65 6C 66 2E 0D 0A 0D 0A 20    out myself..... 
027600:  20 20 4D 41 4B 49 4E 47 20 41 20 48 41 53 48 20      MAKING A HASH 
027610:  4F 46 20 49 54 0D 0A 20 20 20 4C 69 6E 65 20 38    OF IT..   Line 8
027620:  30 30 20 69 73 20 77 68 65 72 65 20 74 68 65 20    00 is where the 
027630:  68 61 73 68 20 66 75 6E 63 74 69 6F 6E 20 20 63    hash function  c
027640:  6F 6D 65 73 20 20 69 6E 20 6F 75 72 20 65 78 61    omes  in our exa
027650:  6D 70 6C 65 20 70 72 6F 67 72 61 6D 2E 20 20 49    mple program.  I
027660:  74 20 69 73 0D 0A 20 20 20 71 75 69 74 65 20 63    t is..   quite c
027670:  6F 6D 70 6C 69 63 61 74 65 64 2C 20 62 75 74 20    omplicated, but 
027680:  69 74 20 6E 65 65 64 73 20 74 6F 20 75 73 65 20    it needs to use 
027690:  20 61 20 20 67 6F 6F 64 20 73 70 72 65 61 64 20     a  good spread 
0276A0:  6F 66 20 6C 65 74 74 65 72 73 20 66 72 6F 6D 20    of letters from 
0276B0:  61 6C 6C 0D 0A 20 20 20 62 69 74 73 20 6F 66 20    all..   bits of 
0276C0:  74 68 65 20 77 6F 72 64 2E 20 20 20 49 20 20 6A    the word.   I  j
0276D0:  75 73 74 20 20 6D 61 64 65 20 20 69 74 20 20 75    ust  made  it  u
0276E0:  70 20 20 79 65 73 74 65 72 64 61 79 2C 20 20 73    p  yesterday,  s
0276F0:  6F 20 74 68 65 72 65 20 69 73 20 6E 6F 74 68 69    o there is nothi
027700:  67 20 66 6F 72 20 77 6F 72 64 73 2E 20 20 45 76    g for words.  Ev
027710:  65 72 79 20 74 69 6D 65 20 77 65 20 74 79 70 65    ery time we type
027720:  20 61 20 73 65 6E 74 65 6E 63 65 20 69 6E 20 41     a sentence in A
027730:  49 2C 0D 0A 20 20 20 69 74 20 68 61 73 20 74 6F    I,..   it has to
027740:  20 73 65 61 72 63 68 20 74 6F 20 73 65 65 20 77     search to see w
027750:  68 65 74 68 65 72 20 77 65 20 68 61 76 65 20 75    hether we have u
027760:  73 65 64 20 65 61 63 68 20 77 6F 72 64 20 61 6C    sed each word al
027770:  72 65 61 64 79 20 69 6E 20 6F 72 64 65 72 20 74    ready in order t
027780:  6F 0D 0A 20 20 20 61 64 64 20 74 68 65 20 6E 65    o..   add the ne
027790:  77 20 77 6F 72 64 73 20 61 6E 64 20 63 72 65 61    w words and crea
0277A0:  74 65 20 6C 69 6E 6B 73 20 62 65 74 77 65 65 6E    te links between
0277B0:  20 74 68 65 6D 20 61 6E 64 20 74 68 65 20 65 78     them and the ex
0277C0:  69 73 74 69 6E 67 20 6F 6E 65 73 2E 20 20 49 6E    isting ones.  In
0277D0:  0D 0A 20 20 20 74 68 65 20 6F 72 69 67 69 6E 61    ..   the origina
0277E0:  6C 20 41 49 20 70 72 6F 67 72 61 6D 2C 20 20 74    l AI program,  t
0277F0:  68 65 20 20 73 65 61 72 63 68 69 6E 67 20 20 61    he  searching  a
027800:  63 63 6F 75 6E 74 65 64 20 20 66 6F 72 20 20 6D    ccounted  for  m
027810:  6F 73 74 20 6F 66 20 74 68 65 20 74 69 6D 65 0D    ost of the time.
027820:  0A 20 20 20 74 61 6B 65 6E 20 70 72 6F 63 65 73    .   taken proces
027830:  73 69 6E 67 20 74 68 65 20 75 73 65 72 27 73 20    sing the user's 
027840:  20 73 65 6E 74 65 6E 63 65 73 2E 20 20 20 54 68     sentences.   Th
027850:  65 20 20 62 69 6E 61 72 79 20 20 74 72 65 65 20    e  binary  tree 
027860:  73 79 73 74 65 6D 20 74 68 61 74 20 77 65 0D 0A    system that we..
027870:  20 20 20 64 65 76 65 6C 6F 70 65 64 20 6C 61 73       developed las
027880:  74 20 6D 6F 6E 74 68 20 69 6D 70 72 6F 76 65 64    t month improved
027890:  20 74 68 65 20 73 70 65 65 64 20 63 6F 6E 73 69     the speed consi
0278A0:  64 65 72 61 62 6C 79 20 62 79 20 73 74 6F 72 69    derably by stori
0278B0:  6E 67 20 61 6C 6C 20 6F 66 20 74 68 65 0D 0A 20    ng all of the.. 
0278C0:  20 20 77 6F 72 64 73 20 69 6E 20 61 6C 70 68 61      words in alpha
0278D0:  62 65 74 69 63 61 6C 20 6F 72 64 65 72 2E 20 20    betical order.  
0278E0:  20 54 68 69 73 20 20 6D 6F 6E 74 68 27 73 20 20     This  month's  
0278F0:  6C 69 73 74 69 6E 67 20 20 6D 61 6B 65 73 20 74    listing  makes t
027900:  6E 67 0D 0A 20 20 20 73 70 65 63 69 61 6C 20 61    ng..   special a
027910:  62 6F 75 74 20 69 74 2C 20 62 75 74 20 69 74 20    bout it, but it 
027920:  73 65 65 6D 73 20 74 6F 20 77 6F 72 6B 20 61 6C    seems to work al
027930:  6C 20 72 69 67 68 74 2E 0D 0A 0D 0A 20 20 20 54    l right.....   T
027940:  68 65 20 63 61 6C 63 75 6C 61 74 69 6F 6E 20 69    he calculation i
027950:  73 20 64 6F 6E 65 20 69 6E 20 73 65 76 65 72 61    s done in severa
027960:  6C 20 73 74 61 67 65 73 2C 20 75 73 69 6E 67 20    l stages, using 
027970:  74 68 65 20 41 53 43 20 66 75 6E 63 74 69 6F 6E    the ASC function
027980:  20 61 6C 6C 20 6F 76 65 72 0D 0A 20 20 20 74 68     all over..   th
027990:  65 20 70 6C 61 63 65 20 74 6F 20 74 75 72 6E 20    e place to turn 
0279A0:  20 74 68 65 20 20 6C 65 74 74 65 72 73 20 20 6F     the  letters  o
0279B0:  66 20 20 74 68 65 20 20 77 6F 72 64 20 20 69 6E    f  the  word  in
0279C0:  74 6F 20 20 41 53 43 49 49 20 6E 75 6D 62 65 72    to  ASCII number
0279D0:  73 2E 20 20 49 20 61 6D 0D 0A 20 20 20 75 73 69    s.  I am..   usi
0279E0:  6E 67 20 74 68 65 20 52 49 47 48 54 24 20 66 75    ng the RIGHT$ fu
0279F0:  6E 63 74 69 6F 6E 20 74 6F 20 67 65 74 20 6C 65    nction to get le
027A00:  74 74 65 72 73 20 20 66 72 6F 6D 20 64 69 66 66    tters  from diff
027A10:  65 72 65 6E 74 20 62 69 74 73 20 6F 66 20 74 68    erent bits of th
027A20:  65 20 77 6F 72 64 2E 0D 0A 20 20 20 54 68 65 20    e word...   The 
027A30:  69 6D 70 6F 72 74 61 6E 74 20 66 65 61 74 75 72    important featur
027A40:  65 20 6F 66 20 74 68 65 20 63 61 6C 63 75 6C 61    e of the calcula
027A50:  74 69 6F 6E 20 20 69 73 20 20 74 68 61 74 20 20    tion  is  that  
027A60:  63 20 65 6E 64 73 20 75 70 20 73 6D 61 6C 6C 65    c ends up smalle
027A70:  72 20 74 68 61 6E 0D 0A 20 20 20 33 32 37 36 38    r than..   32768
027A80:  2E 20 20 54 68 69 73 20 69 73 20 62 65 63 61 75    .  This is becau
027A90:  73 65 20 74 68 65 20 6C 61 73 74 20 74 68 69 6E    se the last thin
027AA0:  67 20 77 65 20 64 6F 20 69 73 20 73 65 74 20 63    g we do is set c
027AB0:  77 6F 72 64 20 74 6F 20 63 20 4D 4F 44 20 6D 77    word to c MOD mw
027AC0:  6F 72 64 73 2C 0D 0A 20 20 20 61 6E 64 20 69 66    ords,..   and if
027AD0:  20 63 20 77 61 73 20 62 69 67 67 65 72 20 74 68     c was bigger th
027AE0:  61 6E 20 33 32 37 36 37 20 74 68 65 20 4D 4F 44    an 32767 the MOD
027AF0:  20 77 6F 75 6C 64 20 6E 6F 74 20 63 6F 70 65 2E     would not cope.
027B00:  68 65 20 73 65 61 72 63 68 69 6E 67 0D 0A 20 20    he searching..  
027B10:  20 65 76 65 6E 20 66 61 73 74 65 72 20 62 79 20     even faster by 
027B20:  73 74 6F 72 69 6E 67 20 74 68 65 20 77 6F 72 64    storing the word
027B30:  73 20 69 6E 20 20 61 20 74 6F 74 61 6C 6C 79 20    s in  a totally 
027B40:  72 61 6E 64 6F 6D 20 6F 72 64 65 72 2E 20 20 59    random order.  Y
027B50:  65 73 2C 20 69 74 20 64 6F 65 73 0D 0A 20 20 20    es, it does..   
027B60:  73 6F 75 6E 64 20 72 69 64 69 63 75 6C 6F 75 73    sound ridiculous
027B70:  2E 20 20 4C 65 74 20 6D 65 20 65 78 70 6C 61 69    .  Let me explai
027B80:  6E 2E 2E 2E 0D 0A 0D 0A 20 20 20 4E 55 4D 42 45    n.......   NUMBE
027B90:  52 20 43 52 55 4E 43 48 49 4E 47 0D 0A 20 20 20    R CRUNCHING..   
027BA0:  54 68 65 20 63 6F 6E 63 65 70 74 20 77 65 20 77    The concept we w
027BB0:  69 6C 6C 20 62 65 20 65 78 70 6C 6F 72 69 6E 67    ill be exploring
027BC0:  20 20 74 68 69 73 20 20 6D 6F 6E 74 68 20 20 69      this  month  i
027BD0:  73 20 6B 6E 6F 77 6E 20 61 73 20 74 68 65 20 68    s known as the h
027BE0:  61 73 68 20 74 61 62 6C 65 2E 0D 0A 20 20 20 54    ash table...   T
027BF0:  68 65 20 69 64 65 61 20 69 73 20 74 68 61 74 20    he idea is that 
027C00:  20 77 68 65 6E 20 20 77 65 20 20 73 74 6F 72 65     when  we  store
027C10:  20 20 61 20 20 77 6F 72 64 20 20 69 6E 20 20 74      a  word  in  t
027C20:  68 65 20 20 61 72 72 61 79 20 20 77 65 20 75 73    he  array  we us
027C30:  65 20 61 20 22 68 61 73 68 0D 0A 20 20 20 66 75    e a "hash..   fu
027C40:  6E 63 74 69 6F 6E 22 20 77 68 69 63 68 20 67 69    nction" which gi
027C50:  76 65 73 20 75 73 20 61 20 6E 75 6D 62 65 72 20    ves us a number 
027C60:  20 62 61 73 65 64 20 20 6F 6E 20 20 74 68 65 20     based  on  the 
027C70:  77 6F 72 64 2E 20 20 57 65 20 75 73 65 20 74 68    word.  We use th
027C80:  69 73 20 6D 61 67 69 63 0D 0A 20 20 20 6E 75 6D    is magic..   num
027C90:  62 65 72 20 74 6F 20 74 65 6C 6C 20 75 73 20 77    ber to tell us w
027CA0:  68 65 72 65 20 74 6F 20 73 74 6F 72 65 20 74 68    here to store th
027CB0:  65 20 77 6F 72 64 20 69 6E 20 74 68 65 20 61 72    e word in the ar
027CC0:  72 61 79 2E 0D 0A 0D 0A 20 20 20 46 6F 72 20 65    ray.....   For e
027CD0:  78 61 6D 70 6C 65 2C 20 77 65 20 63 6F 75 6C 64    xample, we could
027CE0:  20 68 61 76 65 20 61 20 68 61 73 68 20 20 66 75     have a hash  fu
027CF0:  6E 63 74 69 6F 6E 20 77 68 69 63 68 20 6A 75 73    nction which jus
027D00:  0D 0A 0D 0A 20 20 20 54 68 65 20 4D 4F 44 20 63    ....   The MOD c
027D10:  6F 6D 6D 61 6E 64 20 6D 61 6B 65 73 20 6E 75 6D    ommand makes num
027D20:  62 65 72 73 20 22 77 72 61 70 20 72 6F 75 6E 64    bers "wrap round
027D30:  22 2E 20 20 49 66 20 79 6F 75 20 64 6F 20 61 20    ".  If you do a 
027D40:  6E 75 6D 62 65 72 20 4D 4F 44 20 32 30 2C 20 69    number MOD 20, i
027D50:  74 0D 0A 20 20 20 65 73 73 65 6E 74 69 61 6C 6C    t..   essentiall
027D60:  79 20 73 75 62 74 72 61 63 74 73 20 32 30 20 66    y subtracts 20 f
027D70:  72 6F 6D 20 74 68 65 20 6E 75 6D 62 65 72 20 20    rom the number  
027D80:  72 65 70 65 61 74 65 64 6C 79 20 75 6E 74 69 6C    repeatedly until
027D90:  20 74 68 65 20 72 65 73 75 6C 74 20 69 73 20 61     the result is a
027DA0:  0D 0A 20 20 20 6E 75 6D 62 65 72 20 66 72 6F 6D    ..   number from
027DB0:  20 30 20 74 6F 20 31 39 2E 20 20 52 65 6D 65 6D     0 to 19.  Remem
027DC0:  62 65 72 20 20 74 68 61 74 20 20 6D 77 6F 72 64    ber  that  mword
027DD0:  73 20 20 69 73 20 74 68 65 20 6E 75 6D 62 65 72    s  is the number
027DE0:  20 6F 66 20 65 6C 65 6D 65 6E 74 73 20 69 6E 0D     of elements in.
027DF0:  0A 20 20 20 74 68 65 20 61 72 72 61 79 2C 20 64    .   the array, d
027E00:  69 6D 65 6E 73 69 6F 6E 65 64 20 69 6E 20 6C 69    imensioned in li
027E10:  6E 65 20 33 30 2E 20 20 54 68 69 73 20 6D 65 61    ne 30.  This mea
027E20:  6E 73 20 74 68 61 74 20 63 77 6F 72 64 20 63 61    ns that cword ca
027E30:  6E 20 65 6E 64 20 75 70 20 74 6F 20 62 65 0D 0A    n end up to be..
027E40:  20 20 20 61 6E 79 20 6E 75 6D 62 65 72 20 62 65       any number be
027E50:  74 77 65 65 6E 20 30 20 61 6E 64 20 6D 77 6F 72    tween 0 and mwor
027E60:  64 73 2D 31 2E 0D 0A 0D 0A 20 20 20 53 6F 2C 20    ds-1.....   So, 
027E70:  6C 69 6E 65 20 38 30 30 20 63 61 6C 63 75 6C 61    line 800 calcula
027E80:  74 65 73 20 63 77 6F 72 64 20 66 72 6F 6D 20 74    tes cword from t
027E90:  68 65 20 20 77 6F 72 64 20 69 6E 20 74 68 65 20    he  word in the 
027EA0:  76 61 72 69 61 62 6C 65 20 77 6F 72 64 24 2E 20    variable word$. 
027EB0:  20 49 66 20 77 65 0D 0A 20 20 20 61 72 65 20 73     If we..   are s
027EC0:  74 6F 72 69 6E 67 20 61 20 6E 65 77 20 77 6F 72    toring a new wor
027ED0:  64 2C 20 69 74 20 74 65 6C 6C 73 20 75 73 20 20    d, it tells us  
027EE0:  77 68 65 72 65 20 20 74 6F 20 70 75 74 20 69 74    where  to put it
027EF0:  20 69 6E 20 74 68 65 20 61 72 72 61 79 2C 20 61     in the array, a
027F00:  74 20 6C 6F 6F 6B 65 64 20 61 74 20 74 68 65 20    t looked at the 
027F10:  66 69 72 73 74 0D 0A 20 20 20 6C 65 74 74 65 72    first..   letter
027F20:  20 69 6E 20 74 68 65 20 77 6F 72 64 2E 20 20 49     in the word.  I
027F30:  66 20 69 74 20 77 61 73 20 22 41 22 20 20 74 68    f it was "A"  th
027F40:  65 20 66 75 6E 63 74 69 6F 6E 20 77 6F 75 6C 64    e function would
027F50:  20 72 65 74 75 72 6E 20 31 2C 20 61 6E 64 20 73     return 1, and s
027F60:  6F 20 6F 6E 0D 0A 20 20 20 75 70 20 74 6F 20 22    o on..   up to "
027F70:  5A 22 20 77 68 69 63 68 20 77 6F 75 6C 64 20 20    Z" which would  
027F80:  74 75 72 6E 20 20 69 6E 74 6F 20 20 32 36 2E 20    turn  into  26. 
027F90:  20 20 49 66 20 20 79 6F 75 20 20 77 61 6E 74 65      If  you  wante
027FA0:  64 20 74 6F 20 73 74 6F 72 65 20 74 68 65 20 77    d to store the w
027FB0:  6F 72 64 0D 0A 20 20 20 22 46 72 6F 67 22 2C 20    ord..   "Frog", 
027FC0:  79 6F 75 20 77 6F 75 6C 64 20 70 75 74 20 69 74    you would put it
027FD0:  20 69 6E 20 73 6C 6F 74 20 36 2C 20 61 6E 64 20     in slot 6, and 
027FE0:  74 68 65 20 77 6F 72 64 20 22 4B 65 72 6D 69 74    the word "Kermit
027FF0:  22 20 77 6F 75 6C 64 20 67 6F 20 69 6E 20 73 6C    " would go in sl
028000:  6F 74 0D 0A 20 20 20 31 31 2E 0D 0A 0D 0A 20 20    ot..   11.....  
028010:  20 54 68 65 72 65 20 61 72 65 20 73 65 76 65 72     There are sever
028020:  61 6C 20 70 72 6F 62 6C 65 6D 73 20 77 69 74 68    al problems with
028030:  20 74 68 69 73 20 68 61 73 68 20 20 66 75 6E 63     this hash  func
028040:  74 69 6F 6E 2E 20 20 46 6F 72 20 6F 6E 65 20 74    tion.  For one t
028050:  68 69 6E 67 2C 20 69 66 20 77 65 0D 0A 20 20 20    hing, if we..   
028060:  77 61 6E 74 65 64 20 74 6F 20 73 74 6F 72 65 20    wanted to store 
028070:  6D 6F 72 65 20 20 74 68 61 6E 20 20 32 36 20 20    more  than  26  
028080:  77 6F 72 64 73 2C 20 20 77 65 20 20 63 6F 75 6C    words,  we  coul
028090:  64 20 20 68 61 76 65 20 20 61 20 20 62 69 67 20    d  have  a  big 
0280A0:  61 72 72 61 79 20 6F 66 20 61 0D 0A 20 20 20 74    array of a..   t
0280B0:  68 6F 75 73 61 6E 64 2C 20 73 61 79 2C 20 62 75    housand, say, bu
0280C0:  74 20 69 74 20 69 73 20 20 68 61 72 64 20 20 74    t it is  hard  t
0280D0:  6F 20 20 61 64 61 70 74 20 20 74 68 65 20 20 66    o  adapt  the  f
0280E0:  75 6E 63 74 69 6F 6E 20 74 6F 20 67 69 76 65 20    unction to give 
0280F0:  75 73 20 62 69 67 67 65 72 0D 0A 20 20 20 6E 75    us bigger..   nu
028100:  6E 64 20 69 66 0D 0A 20 20 20 77 65 20 61 72 65    nd if..   we are
028110:  20 6C 6F 6F 6B 69 6E 67 20 74 6F 20 73 65 65 20     looking to see 
028120:  77 68 65 72 65 20 20 61 6E 20 20 65 78 69 73 74    where  an  exist
028130:  69 6E 67 20 20 77 6F 72 64 20 20 69 73 2C 20 20    ing  word  is,  
028140:  69 74 20 74 65 6C 6C 73 20 75 73 20 77 68 65 72    it tells us wher
028150:  65 20 74 6F 0D 0A 20 20 20 6C 6F 6F 6B 2E 0D 0A    e to..   look...
028160:  0D 0A 20 20 20 41 49 52 20 54 52 41 46 46 49 43    ..   AIR TRAFFIC
028170:  20 43 4F 4E 54 52 4F 4C 0D 0A 20 20 20 57 65 20     CONTROL..   We 
028180:  73 74 69 6C 6C 20 68 61 76 65 20 74 68 65 20 70    still have the p
028190:  72 6F 62 6C 65 6D 20 6F 66 20 20 63 6F 6C 6C 69    roblem of  colli
0281A0:  73 69 6F 6E 73 2C 20 20 77 68 65 6E 20 20 74 77    sions,  when  tw
0281B0:  6F 20 77 6F 72 64 73 20 67 65 74 20 73 65 6E 74    o words get sent
0281C0:  20 74 6F 20 74 68 65 0D 0A 20 20 20 73 61 6D 65     to the..   same
0281D0:  20 73 6C 6F 74 2E 20 20 4F 66 20 63 6F 75 72 73     slot.  Of cours
0281E0:  65 2C 20 61 73 20 6F 75 72 20 61 72 72 61 79 20    e, as our array 
0281F0:  69 73 20 20 62 69 67 20 28 6C 69 6E 65 20 32 30    is  big (line 20
028200:  20 73 65 74 73 20 6D 77 6F 72 64 73 20 74 6F 20     sets mwords to 
028210:  31 30 30 39 29 2C 0D 0A 20 20 20 74 68 65 72 65    1009),..   there
028220:  20 69 73 20 70 6C 65 6E 74 79 20 6F 66 20 73 70     is plenty of sp
028230:  61 63 65 20 74 6F 20 73 74 6F 72 65 20 20 77 6F    ace to store  wo
028240:  72 64 73 2E 20 20 45 76 65 6E 20 73 6F 2C 20 79    rds.  Even so, y
028250:  6F 75 20 6D 69 67 68 74 20 62 65 20 73 75 72 70    ou might be surp
028260:  72 69 73 65 64 0D 0A 20 20 20 68 6F 77 20 71 75    rised..   how qu
028270:  69 63 6B 6C 79 20 74 68 65 20 63 6F 6C 6C 69 73    ickly the collis
028280:  69 6F 6E 73 20 6F 63 63 75 72 2E 0D 0A 0D 0A 20    ions occur..... 
028290:  20 20 59 6F 75 20 6D 61 79 20 68 61 76 65 20 68      You may have h
0282A0:  65 61 72 64 20 6F 66 20 74 68 65 20 22 62 69 72    eard of the "bir
0282B0:  74 68 64 61 79 20 70 61 72 61 64 6F 78 22 2E 20    thday paradox". 
0282C0:  20 20 49 66 20 79 6F 75 20 68 61 76 65 20 32 33      If you have 23
0282D0:  20 70 65 6F 70 6C 65 20 69 6E 20 61 0D 0A 20 20     people in a..  
0282E0:  20 72 6F 6F 6D 2C 20 69 74 20 69 73 20 6D 6F 72     room, it is mor
0282F0:  65 20 6F 66 74 65 6E 20 74 68 61 6E 20 6E 6F 74    e often than not
028300:  6D 62 65 72 73 2E 20 20 59 6F 75 20 77 69 6C 6C    mbers.  You will
028310:  20 61 6C 73 6F 20 67 65 74 20 61 20 6C 6F 74 20     also get a lot 
028320:  6F 66 20 77 6F 72 64 73 20 65 6E 64 69 6E 67 20    of words ending 
028330:  75 70 20 69 6E 20 74 68 65 20 73 61 6D 65 20 70    up in the same p
028340:  6F 73 69 74 69 6F 6E 73 0D 0A 20 20 20 61 73 20    ositions..   as 
028350:  65 61 63 68 20 6F 74 68 65 72 20 28 6B 6E 6F 77    each other (know
028360:  6E 20 20 61 73 20 20 61 20 20 22 63 6F 6C 6C 69    n  as  a  "colli
028370:  73 69 6F 6E 22 20 20 69 6E 20 63 6F 6D 70 75 74    sion"  in comput
028380:  69 6E 67 20 74 68 65 6F 72 79 29 2E 20 20 4D 6F    ing theory).  Mo
028390:  72 65 6F 76 65 72 2C 0D 0A 20 20 20 74 68 65 72    reover,..   ther
0283A0:  65 20 77 69 6C 6C 20 62 65 20 73 6F 6D 65 20 73    e will be some s
0283B0:  6C 6F 74 73 20 77 68 69 63 68 20 77 69 6C 6C 20    lots which will 
0283C0:  6C 61 72 67 65 6C 79 20 67 6F 20 75 6E 75 73 65    largely go unuse
0283D0:  64 20 2D 20 74 68 65 20 6F 6E 65 73 20 66 6F 72    d - the ones for
0283E0:  20 77 6F 72 64 73 0D 0A 20 20 20 62 65 67 69 6E     words..   begin
0283F0:  6E 69 6E 67 20 77 69 74 68 20 51 2C 20 58 20 61    ning with Q, X a
028400:  6E 64 20 5A 2E 20 20 54 68 69 73 20 69 73 20 77    nd Z.  This is w
028410:  61 73 74 65 66 75 6C 20 6F 66 20 61 72 72 61 79    asteful of array
028420:  20 73 70 61 63 65 2E 0D 0A 0D 0A 20 20 20 57 68     space.....   Wh
028430:  61 74 20 77 65 20 61 63 74 75 61 6C 6C 79 20 77    at we actually w
028440:  61 6E 74 20 69 73 20 61 20 66 75 6E 63 74 69 6F    ant is a functio
028450:  6E 20 77 68 69 63 68 20 61 70 70 65 61 72 73 20    n which appears 
028460:  74 6F 20 67 65 6E 65 72 61 74 65 20 6E 75 6D 62    to generate numb
028470:  65 72 73 20 66 72 6F 6D 0D 0A 20 20 20 74 68 65    ers from..   the
028480:  20 77 6F 72 64 73 20 77 65 20 67 69 76 65 20 69     words we give i
028490:  74 20 69 6E 20 61 20 72 61 6E 64 6F 6D 20 61 6E    t in a random an
0284A0:  64 20 75 6E 70 72 65 64 69 63 74 61 62 6C 65 20    d unpredictable 
0284B0:  77 61 79 2E 20 20 4F 66 20 63 6F 75 72 73 65 20    way.  Of course 
0284C0:  69 74 20 77 69 6C 6C 0D 0A 20 20 20 6E 6F 74 20    it will..   not 
0284D0:  72 65 61 6C 6C 79 20 62 65 20 75 6E 70 72 65 64    really be unpred
0284E0:  69 63 74 61 62 6C 65 20 61 73 20 67 69 76 65 6E    ictable as given
0284F0:  20 20 61 20 20 70 61 72 74 69 63 75 6C 61 72 20      a  particular 
028500:  2D 31 3A 49 4E 50 55 54 23 39 2C 6C 6B 28 79 2C    -1:INPUT#9,lk(y,
028510:  78 29 3A 78 3D 78 2B 31 0D 0A 36 33 35 20 49 46    x):x=x+1..635 IF
028520:  20 78 3D 6D 6C 69 6E 6B 73 20 54 48 45 4E 20 49     x=mlinks THEN I
028530:  4E 50 55 54 23 39 2C 6C 6B 28 79 2C 78 29 3A 79    NPUT#9,lk(y,x):y
028540:  3D 6C 6B 28 79 2C 78 29 3A 78 3D 31 0D 0A 36 33    =lk(y,x):x=1..63
028550:  36 20 57 45 4E 44 3A 4E 45 58 54 0D 0A 36 34 30    6 WEND:NEXT..640
028560:  20 43 4C 4F 53 45 49 4E 3A 52 45 54 55 52 4E 0D     CLOSEIN:RETURN.
028570:  0A 37 30 30 20 66 69 6C 65 24 3D 4D 49 44 24 28    .700 file$=MID$(
028580:  61 24 2C 37 29 3A 49 46 20 66 69 6C 65 24 3D 22    a$,7):IF file$="
028590:  22 20 54 48 45 4E 20 66 69 6C 65 24 3D 22 56 4F    " THEN file$="VO
0285A0:  43 41 42 22 0D 0A 37 31 30 20 4F 50 45 4E 4F 55    CAB"..710 OPENOU
0285B0:  54 20 66 69 6C 65 24 3A 57 52 49 54 45 23 39 2C    T file$:WRITE#9,
0285C0:  6E 77 6F 72 64 73 0D 0A 37 32 30 20 46 4F 52 20    nwords..720 FOR 
0285D0:  69 3D 30 20 54 4F 20 6E 77 6F 72 64 73 3A 57 52    i=0 TO nwords:WR
0285E0:  49 54 45 23 39 2C 77 24 28 69 29 2C 6C 6B 28 69    ITE#9,w$(i),lk(i
0285F0:  2C 30 29 0D 0A 37 33 30 20 6A 3D 6C 6B 28 69 2C    ,0)..730 j=lk(i,
028600:  30 29 3A 79 3D 69 3A 78 3D 31 3A 57 48 49 4C 45    0):y=i:x=1:WHILE
028610:  20 6A 3E 30 3A 6A 3D 6A 2D 31 3A 57 52 49 54 45     j>0:j=j-1:WRITE
028620:  23 39 2C 6C 6B 28 79 2C 78 29 3A 78 3D 78 2B 31    #9,lk(y,x):x=x+1
028630:  0D 0A 37 33 35 20 49 46 20 78 3D 6D 6C 69 6E 6B    ..735 IF x=mlink
028640:  73 20 54 48 45 4E 20 57 52 49 54 45 23 39 2C 6C    s THEN WRITE#9,l
028650:  6B 28 79 2C 78 29 3A 79 3D 6C 6B 28 79 2C 78 29    k(y,x):y=lk(y,x)
028660:  3A 78 3D 31 0D 0A 37 33 36 20 57 45 4E 44 3A 4E    :x=1..736 WEND:N
028670:  45 58 54 0D 0A 37 34 30 20 43 4C 4F 53 45 4F 55    EXT..740 CLOSEOU
028680:  54 3A 52 45 54 55 52 4E 0D 0A 1A 24 24 FF 00 FF    T:RETURN...$$...
028690:  45 4E 4F 55 54 22 64 22 3A 4D 45 4D 4F 52 59 20    ENOUT"d":MEMORY 
0286A0:  48 49 4D 45 4D 2D 31 3A 43 4C 4F 53 45 4F 55 54    HIMEM-1:CLOSEOUT
0286B0:  0D 0A 32 30 20 6D 77 6F 72 64 73 3D 31 30 30 30    ..20 mwords=1000
0286C0:  3A 6D 6C 69 6E 6B 73 3D 36 3A 6E 77 6F 72 64 73    :mlinks=6:nwords
0286D0:  3D 30 0D 0A 33 30 20 44 49 4D 20 77 24 28 6D 77    =0..30 DIM w$(mw
0286E0:  6F 72 64 73 29 2C 6C 6B 28 6D 77 6F 72 64 73 2C    ords),lk(mwords,
0286F0:  6D 6C 69 6E 6B 73 29 2C 74 65 6D 70 77 24 28 31    mlinks),tempw$(1
028700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
028710:  22 00 01 00 02 09 4E E5 22 00 C4 02 00 00 00 02    ".....N.".......
028720:  22 00 C9 02 00 00 00 02 22 00 C5 02 00 00 00 02    ".......".......
028730:  22 00 C1 02 00 00 00 02 22 00 C6 02 00 00 00 02    ".......".......
028740:  22 00 C2 02 00 00 00 02 22 00 C7 02 00 00 00 02    ".......".......
028750:  22 00 C3 02 00 00 00 02 22 00 C8 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:  65 6C 79 20 74 6F 20 6A 6F 69 6E 20 74 68 65 6D    ely to join them
028810:  2E 20 20 57 65 20 65 6E 64 20 75 70 20 20 73 65    .  We end up  se
028820:  61 72 63 68 69 6E 67 20 20 74 68 72 6F 75 67 68    arching  through
028830:  20 74 68 65 20 77 68 6F 6C 65 20 61 72 72 61 79     the whole array
028840:  20 6F 6E 65 20 62 79 0D 0A 20 20 20 6F 6E 65 2C     one by..   one,
028850:  20 6C 69 6B 65 20 74 68 65 20 6F 72 69 67 69 6E     like the origin
028860:  61 6C 20 41 49 20 64 69 64 2E 0D 0A 0D 0A 20 20    al AI did.....  
028870:  20 57 68 61 74 20 49 20 68 61 76 65 20 64 6F 6E     What I have don
028880:  65 20 69 6E 73 74 65 61 64 20 6F 66 20 6D 6F 76    e instead of mov
028890:  69 6E 67 20 20 6F 6E 20 20 6F 6E 65 20 20 73 6C    ing  on  one  sl
0288A0:  6F 74 2C 20 20 69 73 20 74 6F 20 6D 6F 76 65 20    ot,  is to move 
0288B0:  61 20 6E 75 6D 62 65 72 20 6F 66 0D 0A 20 20 20    a number of..   
0288C0:  73 6C 6F 74 73 20 62 61 73 65 64 20 6F 6E 20 70    slots based on p
0288D0:  61 72 74 20 6F 66 20 74 68 65 20 68 61 73 68 20    art of the hash 
0288E0:  66 75 6E 63 74 69 6F 6E 2E 20 20 4C 69 6E 65 20    function.  Line 
0288F0:  38 31 30 20 69 73 20 77 68 65 72 65 20 74 68 69    810 is where thi
028900:  73 20 68 61 70 70 65 6E 73 2E 0D 0A 20 20 20 54    s happens...   T
028910:  68 65 20 6C 6F 6F 70 20 69 6E 20 74 68 65 20 6C    he loop in the l
028920:  69 6E 65 20 72 65 70 65 61 74 73 20 77 68 69 6C    ine repeats whil
028930:  65 20 74 68 65 20 20 77 6F 72 64 20 69 6E 20 74    e the  word in t
028940:  68 65 20 61 72 72 61 79 20 77 24 20 69 73 20 6E    he array w$ is n
028950:  6F 74 20 77 6F 72 64 24 2C 0D 0A 20 20 20 74 68    ot word$,..   th
028960:  65 20 6F 6E 65 20 77 65 20 61 72 65 20 6C 6F 6F    e one we are loo
028970:  6B 69 6E 67 20 66 6F 72 2C 20 20 61 6E 64 20 20    king for,  and  
028980:  69 73 20 20 6E 6F 74 20 20 65 6D 70 74 79 20 20    is  not  empty  
028990:  65 69 74 68 65 72 2E 20 20 57 65 20 74 68 65 6E    either.  We then
0289A0:  20 6D 6F 76 65 20 6F 6E 0D 0A 20 20 20 63 77 6F     move on..   cwo
0289B0:  72 64 20 62 79 20 62 2C 20 77 68 69 63 68 20 69    rd by b, which i
0289C0:  73 20 70 61 72 74 20 20 6F 66 20 20 74 68 65 20    s part  of  the 
0289D0:  20 68 61 73 68 20 20 66 75 6E 63 74 69 6F 6E 20     hash  function 
0289E0:  66 72 6F 6D 20 6C 69 6E 65 20 38 30 30 2C 20 61    from line 800, a
0289F0:  6E 64 20 6C 6F 6F 6B 0D 0A 20 20 20 61 67 61 69    nd look..   agai
028A00:  20 61 72 72 61 79 20 69 6E 20 61 20 72 61 6E 64     array in a rand
028A10:  6F 6D 0D 0A 20 20 20 77 61 79 2E 20 20 54 68 65    om..   way.  The
028A20:  20 6E 65 77 20 6C 69 6E 65 20 34 33 35 20 6D 6F     new line 435 mo
028A30:  76 65 73 20 6F 6E 20 20 61 20 20 63 65 72 74 61    ves on  a  certa
028A40:  69 6E 20 61 6D 6F 75 6E 74 2C 20 6A 2C 20 75 6E    in amount, j, un
028A50:  74 69 6C 20 61 20 62 6C 61 6E 6B 20 65 6E 74 72    til a blank entr
028A60:  79 0D 0A 20 20 20 69 73 20 66 6F 75 6E 64 2E 20    y..   is found. 
028A70:  20 54 6F 20 70 72 6F 74 65 63 74 20 74 68 65 20     To protect the 
028A80:  70 6F 73 69 74 69 6F 6E 20 20 66 72 6F 6D 20 20    position  from  
028A90:  62 65 69 6E 67 20 20 75 73 65 64 20 66 6F 72 20    being  used for 
028AA0:  61 20 77 6F 72 64 20 6C 61 74 65 72 2C 20 77 65    a word later, we
028AB0:  0D 0A 20 20 20 63 68 61 6E 67 65 20 77 24 28 78    ..   change w$(x
028AC0:  29 20 74 6F 20 61 20 73 70 61 63 65 2E 20 20 54    ) to a space.  T
028AD0:  68 61 74 20 69 73 20 61 6C 73 6F 20 77 68 79 20    hat is also why 
028AE0:  6C 69 6E 65 20 33 31 20 69 73 20 61 64 64 65 64    line 31 is added
028AF0:  2E 0D 0A 0D 0A 20 20 20 57 69 74 68 20 6C 6F 61    .....   With loa
028B00:  64 69 6E 67 20 61 6E 64 20 73 61 76 69 6E 67 2C    ding and saving,
028B10:  20 6C 69 6E 65 73 20 36 32 30 20 61 6E 64 20 20     lines 620 and  
028B20:  37 32 30 20 68 61 76 65 20 63 68 61 6E 67 65 64    720 have changed
028B30:  2C 20 61 6E 64 20 6C 69 6E 65 20 36 32 35 20 68    , and line 625 h
028B40:  61 73 0D 0A 20 20 20 67 6F 6E 65 2E 20 20 54 68    as..   gone.  Th
028B50:  65 20 6C 69 6E 65 73 20 66 72 6F 6D 20 38 30 30    e lines from 800
028B60:  20 6F 6E 77 61 72 64 73 20 68 61 76 65 20 61 6C     onwards have al
028B70:  6C 20 63 68 61 6E 67 65 64 20 6F 66 20 63 6F 75    l changed of cou
028B80:  72 73 65 2E 0D 0A 0D 0A 20 20 20 48 61 73 68 20    rse.....   Hash 
028B90:  74 61 62 6C 65 73 20 63 61 6E 20 62 65 20 20 66    tables can be  f
028BA0:  61 73 74 65 72 20 20 74 68 61 6E 20 20 62 69 6E    aster  than  bin
028BB0:  61 72 79 20 20 74 72 65 65 73 2C 20 20 61 6E 64    ary  trees,  and
028BC0:  20 20 69 6E 20 20 6F 75 72 20 65 78 61 6D 70 6C      in  our exampl
028BD0:  65 20 74 68 65 0D 0A 20 20 20 70 72 6F 67 72 61    e the..   progra
028BE0:  6D 20 69 73 20 73 68 6F 72 74 65 72 20 74 6F 6F    m is shorter too
028BF0:  2E 20 20 48 61 73 68 20 74 61 62 6C 65 73 20 20    .  Hash tables  
028C00:  6E 2E 20 20 54 68 65 20 4D 4F 44 20 6D 77 6F 72    n.  The MOD mwor
028C10:  64 73 20 70 61 72 74 20 69 73 20 74 6F 20 6D 61    ds part is to ma
028C20:  6B 65 20 20 69 74 20 20 77 72 61 70 20 72 6F 75    ke  it  wrap rou
028C30:  6E 64 20 74 6F 20 74 68 65 20 73 74 61 72 74 20    nd to the start 
028C40:  6F 66 20 74 68 65 0D 0A 20 20 20 61 72 72 61 79    of the..   array
028C50:  20 61 67 61 69 6E 20 69 66 20 6E 65 63 65 73 73     again if necess
028C60:  61 72 79 2E 0D 0A 0D 0A 20 20 20 49 66 20 74 77    ary.....   If tw
028C70:  6F 20 77 6F 72 64 73 20 67 69 76 65 20 74 68 65    o words give the
028C80:  20 73 61 6D 65 20 76 61 6C 75 65 20 6F 66 20 20     same value of  
028C90:  63 77 6F 72 64 2C 20 69 74 20 64 6F 65 73 6E 27    cword, it doesn'
028CA0:  74 20 6D 65 61 6E 20 74 68 61 74 20 62 20 77 69    t mean that b wi
028CB0:  6C 6C 20 62 65 0D 0A 20 20 20 74 68 65 20 73 61    ll be..   the sa
028CC0:  6D 65 20 66 6F 72 20 65 61 63 68 20 6F 6E 65 2C    me for each one,
028CD0:  20 73 6F 20 76 65 72 79 20 6F 66 74 65 6E 20 77     so very often w
028CE0:  65 20 77 69 6C 6C 20 61 76 6F 69 64 20 61 20 64    e will avoid a d
028CF0:  6F 75 62 6C 65 20 63 6F 6C 6C 69 73 69 6F 6E 20    ouble collision 
028D00:  6C 69 6B 65 0D 0A 20 20 20 74 68 69 73 2E 0D 0A    like..   this...
028D10:  0D 0A 20 20 20 57 48 59 20 31 30 30 39 3F 0D 0A    ..   WHY 1009?..
028D20:  20 20 20 59 6F 75 20 6D 61 79 20 62 65 20 77 6F       You may be wo
028D30:  6E 64 65 72 69 6E 67 20 77 68 79 20 49 20 68 61    ndering why I ha
028D40:  76 65 20 20 69 6E 63 72 65 61 73 65 64 20 20 74    ve  increased  t
028D50:  68 65 20 73 69 7A 65 20 6F 66 20 74 68 65 20 61    he size of the a
028D60:  72 72 61 79 20 74 6F 20 31 30 30 39 2E 0D 0A 20    rray to 1009... 
028D70:  20 20 54 68 65 20 72 65 61 73 6F 6E 20 69 73 20      The reason is 
028D80:  74 68 61 74 20 73 6F 6D 65 20 61 73 70 65 63 74    that some aspect
028D90:  73 20 6F 66 20 20 68 61 73 68 20 20 74 61 62 6C    s of  hash  tabl
028DA0:  65 73 20 20 77 6F 72 6B 20 61 20 6C 6F 74 20 62    es  work a lot b
028DB0:  65 74 74 65 72 20 69 66 20 74 68 65 0D 0A 20 20    etter if the..  
028DC0:  20 73 69 7A 65 20 6F 66 20 74 68 65 20 68 61 73     size of the has
028DD0:  68 20 74 61 62 6C 65 20 69 73 20 61 20 70 72 69    h table is a pri
028DE0:  6D 65 20 6E 75 6D 62 65 72 2E 20 20 49 66 20 79    me number.  If y
028DF0:  6F 75 20 73 74 61 72 74 20 61 74 20 61 6E 79 20    ou start at any 
028E00:  20 20 74 68 65 20 20 63 61 73 65 20 20 74 68 61      the  case  tha
028E10:  74 20 20 74 77 6F 20 6F 66 20 74 68 65 6D 20 77    t  two of them w
028E20:  69 6C 6C 20 73 68 61 72 65 20 61 0D 0A 20 20 20    ill share a..   
028E30:  62 69 72 74 68 64 61 79 2E 20 20 49 74 20 69 73    birthday.  It is
028E40:  20 61 6C 6C 20 61 20 6D 61 74 74 65 72 20 6F 66     all a matter of
028E50:  20 70 72 6F 62 61 62 69 6C 69 74 79 2E 20 20 45     probability.  E
028E60:  78 61 63 74 6C 79 20 74 68 65 20 73 61 6D 65 20    xactly the same 
028E70:  61 70 70 6C 69 65 73 20 74 6F 0D 0A 20 20 20 6F    applies to..   o
028E80:  75 72 20 77 6F 72 64 73 20 69 6E 20 74 68 65 20    ur words in the 
028E90:  61 72 72 61 79 2C 20 62 75 74 20 20 69 6E 73 74    array, but  inst
028EA0:  65 61 64 20 20 6F 66 20 20 33 36 35 20 20 64 61    ead  of  365  da
028EB0:  79 73 20 66 6F 72 20 62 69 72 74 68 64 61 79 73    ys for birthdays
028EC0:  2C 20 77 65 20 68 61 76 65 0D 0A 20 20 20 31 30    , we have..   10
028ED0:  30 39 20 73 6C 6F 74 73 20 66 6F 72 20 77 6F 72    09 slots for wor
028EE0:  64 73 2E 20 20 54 68 65 20 70 72 6F 62 61 62 69    ds.  The probabi
028EF0:  6C 69 74 69 65 73 20 20 6D 65 61 6E 20 20 74 68    lities  mean  th
028F00:  61 74 20 20 77 65 20 77 69 6C 6C 20 6F 6E 6C 79    at  we will only
028F10:  20 6E 65 65 64 20 33 38 0D 0A 20 20 20 77 6F 72     need 38..   wor
028F20:  64 73 20 66 6F 72 20 74 68 65 72 65 20 74 6F 20    ds for there to 
028F30:  62 65 20 61 20 20 67 72 65 61 74 65 72 20 20 74    be a  greater  t
028F40:  68 61 6E 20 20 65 76 65 6E 20 63 68 61 6E 63 65    han  even chance
028F50:  20 74 68 61 74 20 74 77 6F 20 77 69 6C 6C 20 67     that two will g
028F60:  65 6E 65 72 61 74 65 0D 0A 20 20 20 74 68 65 20    enerate..   the 
028F70:  73 61 6D 65 20 76 61 6C 75 65 20 6F 66 20 63 77    same value of cw
028F80:  6F 72 64 20 61 6E 64 20 62 65 20 73 65 6E 74 20    ord and be sent 
028F90:  74 6F 20 74 68 65 20 73 61 6D 65 20 70 6F 73 69    to the same posi
028FA0:  74 69 6F 6E 20 69 6E 20 74 68 65 20 61 72 72 61    tion in the arra
028FB0:  79 2E 0D 0A 0D 0A 20 20 20 48 6F 77 20 63 61 6E    y.....   How can
028FC0:  20 77 65 20 64 65 61 6C 20 77 69 74 68 20 74 68     we deal with th
028FD0:  65 73 65 20 63 6F 6C 6C 69 73 69 6F 6E 73 3F 20    ese collisions? 
028FE0:  20 4F 6E 65 20 61 70 70 72 6F 61 63 68 20 69 73     One approach is
028FF0:  20 74 6F 20 70 75 74 20 74 68 65 20 77 6F 72 64     to put the word
029000:  70 6F 73 69 74 69 6F 6E 20 69 6E 0D 0A 20 20 20    position in..   
029010:  74 68 65 20 74 61 62 6C 65 20 61 6E 64 20 6D 6F    the table and mo
029020:  76 65 20 61 20 63 65 72 74 61 69 6E 20 66 69 78    ve a certain fix
029030:  65 64 20 20 61 6D 6F 75 6E 74 2C 20 77 72 61 70    ed  amount, wrap
029040:  70 69 6E 67 20 72 6F 75 6E 64 20 75 73 69 6E 67    ping round using
029050:  20 4D 4F 44 2C 20 74 68 65 6E 0D 0A 20 20 20 79     MOD, then..   y
029060:  6F 75 20 77 69 6C 6C 20 65 76 65 6E 74 75 61 6C    ou will eventual
029070:  6C 79 20 76 69 73 69 74 20 61 6C 6C 20 74 68 65    ly visit all the
029080:  20 20 65 6C 65 6D 65 6E 74 73 20 20 6F 66 20 20      elements  of  
029090:  74 68 65 20 74 61 62 6C 65 2E 20 20 54 68 69 73    the table.  This
0290A0:  20 77 69 6C 6C 20 6E 6F 74 0D 0A 20 20 20 77 6F     will not..   wo
0290B0:  72 6B 20 69 66 20 74 68 65 20 73 69 7A 65 20 6F    rk if the size o
0290C0:  66 20 74 68 65 20 74 61 62 6C 65 20 69 73 20 6E    f the table is n
0290D0:  6F 74 20 70 72 69 6D 65 2E 0D 0A 0D 0A 20 20 20    ot prime.....   
0290E0:  54 48 45 20 47 4F 52 59 20 44 45 54 41 49 4C 53    THE GORY DETAILS
0290F0:  0D 0A 20 20 20 49 20 68 61 64 20 62 65 74 74 65    ..   I had bette
029100:  72 20 62 72 69 65 66 6C 79 20 6D 65 6E 74 69 6F    r briefly mentio
029110:  6E 20 74 68 65 20 20 6F 74 68 65 72 20 20 63 68    n the  other  ch
029120:  61 6E 67 65 73 20 20 69 6E 20 74 68 65 20 70 72    anges  in the pr
029130:  6F 67 72 61 6D 2E 20 20 4D 6F 73 74 20 6F 66 0D    ogram.  Most of.
029140:  0A 20 20 20 74 68 65 20 6C 69 6E 65 73 20 61 72    .   the lines ar
029150:  65 20 74 68 65 20 73 61 6D 65 20 61 73 20 6C 61    e the same as la
029160:  73 74 20 20 6D 6F 6E 74 68 2C 20 20 73 6F 20 20    st  month,  so  
029170:  49 20 20 68 61 76 65 20 61 73 6B 65 64 20 4A 6F    I  have asked Jo
029180:  68 6E 20 74 6F 20 70 72 69 6E 74 20 61 6E 0D 0A    hn to print an..
029190:  20 20 20 61 73 74 65 72 69 73 6B 20 62 79 20 61       asterisk by a
0291A0:  6C 6C 20 74 68 65 20 6F 6E 65 73 20 77 68 69 63    ll the ones whic
0291B0:  68 20 68 61 76 65 20 20 63 68 61 6E 67 65 64 2E    h have  changed.
0291C0:  20 20 4E 6F 74 65 20 74 68 61 74 20 6C 69 6E 65      Note that line
0291D0:  20 36 32 35 20 68 61 73 20 67 6F 6E 65 0D 0A 20     625 has gone.. 
0291E0:  20 20 63 6F 6D 70 6C 65 74 65 6C 79 2E 20 20 3C      completely.  <
0291F0:  3C 54 68 65 20 6C 69 73 74 69 6E 67 20 69 73 20    <The listing is 
029200:  20 69 6E 0D 0A 20 20 20 74 68 65 20 6E 65 78 74     in..   the next
029210:  20 66 72 65 65 20 73 6C 6F 74 20 69 6E 73 74 65     free slot inste
029220:  61 64 2E 20 20 20 53 75 70 70 6F 73 65 20 20 22    ad.   Suppose  "
029230:  4B 65 72 6D 69 74 22 20 20 67 65 6E 65 72 61 74    Kermit"  generat
029240:  65 73 20 61 20 68 61 73 68 20 76 61 6C 75 65 20    es a hash value 
029250:  6F 66 0D 0A 20 20 20 35 34 33 2C 20 61 6E 64 20    of..   543, and 
029260:  77 65 20 6C 6F 6F 6B 20 69 6E 20 74 68 65 20 61    we look in the a
029270:  72 72 61 79 20 20 61 6E 64 20 20 66 69 6E 64 20    rray  and  find 
029280:  22 46 72 6F 67 22 20 69 73 20 61 6C 72 65 61 64    "Frog" is alread
029290:  79 20 74 68 65 72 65 2E 20 20 57 65 20 74 68 65    y there.  We the
0292A0:  6E 0D 0A 20 20 20 6D 6F 76 65 20 6F 6E 20 74 68    n..   move on th
0292B0:  65 20 73 70 61 63 65 20 35 34 34 2C 20 61 6E 64    e space 544, and
0292C0:  20 69 66 20 20 69 74 20 20 69 73 20 20 66 72 65     if  it  is  fre
0292D0:  65 2C 20 70 75 74 20 22 4B 65 72 6D 69 74 22 20    e, put "Kermit" 
0292E0:  69 6E 20 74 68 65 72 65 2E 20 20 49 66 20 77 65    in there.  If we
0292F0:  0D 0A 20 20 20 74 68 65 6E 20 6E 65 65 64 65 64    ..   then needed
029300:  20 74 6F 20 73 65 61 72 63 68 20 66 6F 72 20 20     to search for  
029310:  4B 65 72 6D 69 74 20 20 69 6E 20 20 74 68 65 20    Kermit  in  the 
029320:  20 66 75 74 75 72 65 2C 20 77 65 20 77 6F 75 6C     future, we woul
029330:  64 20 63 61 6C 63 75 6C 61 74 65 20 74 68 65 0D    d calculate the.
029340:  0A 20 20 20 68 61 73 68 20 76 61 6C 75 65 2C 20    .   hash value, 
029350:  35 34 33 2C 20 61 6E 64 20 66 69 6E 64 20 20 46    543, and find  F
029360:  72 6F 67 20 20 74 68 65 72 65 2E 20 20 20 57 65    rog  there.   We
029370:  20 20 77 6F 75 6C 64 20 20 74 68 65 6E 20 6C 6F      would  then lo
029380:  6F 6B 20 61 74 20 74 68 65 20 6E 65 78 74 0D 0A    ok at the next..
029390:  20 20 20 73 70 61 63 65 20 69 6E 73 74 65 61 64       space instead
0293A0:  2C 20 61 6E 64 20 66 69 6E 64 20 4B 65 72 6D 69    , and find Kermi
0293B0:  74 2E 20 20 4F 66 20 63 6F 75 72 73 65 2C 20 69    t.  Of course, i
0293C0:  66 20 79 6F 75 20 6C 6F 6F 6B 65 64 20 69 6E 20    f you looked in 
0293D0:  73 70 61 63 65 20 35 34 33 20 61 6E 64 0D 0A 20    space 543 and.. 
0293E0:  20 20 66 6F 75 6E 64 20 69 74 20 65 6D 70 74 79      found it empty
0293F0:  2C 20 74 68 65 6E 20 79 6F 75 20 77 6F 75 6C 64    , then you would
029400:  73 61 76 65 64 20 20 6F 6E 20 20 64 69 73 63 20    saved  on  disc 
029410:  20 66 6F 72 20 79 6F 75 20 61 73 20 41 49 35 2E     for you as AI5.
029420:  42 41 53 2C 20 77 69 74 68 6F 75 74 0D 0A 20 20    BAS, without..  
029430:  20 61 73 74 65 72 69 73 6B 73 21 3E 3E 0D 0A 0D     asterisks!>>...
029440:  0A 20 20 20 41 20 66 65 77 20 6C 69 6E 65 73 20    .   A few lines 
029450:  6E 65 61 72 20 74 68 65 20 20 73 74 61 72 74 20    near the  start 
029460:  20 68 61 76 65 20 20 63 68 61 6E 67 65 64 20 20     have  changed  
029470:  74 6F 20 20 73 65 74 20 74 68 69 6E 67 73 20 75    to  set things u
029480:  70 20 64 69 66 66 65 72 65 6E 74 6C 79 2E 0D 0A    p differently...
029490:  20 20 20 4C 69 6E 65 73 20 34 33 20 61 6E 64 20       Lines 43 and 
0294A0:  34 34 20 61 64 64 20 74 77 6F 20 6E 65 77 20 20    44 add two new  
0294B0:  63 6F 6D 6D 61 6E 64 73 20 20 77 68 69 63 68 20    commands  which 
0294C0:  73 68 6F 77 20 74 68 65 20 70 72 6F 67 72 65 73    show the progres
0294D0:  73 20 6F 66 20 74 68 65 20 68 61 73 68 0D 0A 20    s of the hash.. 
0294E0:  20 20 74 61 62 6C 65 2E 20 20 54 79 70 69 6E 67      table.  Typing
0294F0:  20 22 2A 73 68 6F 77 68 61 73 68 22 20 77 69 6C     "*showhash" wil
029500:  6C 20 6C 69 73 74 20 61 6C 6C 20 20 74 68 65 20    l list all  the 
029510:  20 77 6F 72 64 73 20 69 6E 20 74 68 65 20 74 61     words in the ta
029520:  62 6C 65 2C 20 73 68 6F 77 69 6E 67 0D 0A 20 20    ble, showing..  
029530:  20 74 68 65 69 72 20 70 6F 73 69 74 69 6F 6E 20     their position 
029540:  61 6E 64 20 20 74 68 65 20 20 6E 75 6D 62 65 72    and  the  number
029550:  20 20 6F 66 20 20 66 6F 6C 6C 6F 77 69 6E 67 20      of  following 
029560:  20 6C 69 6E 6B 73 20 20 74 68 65 79 20 20 68 61     links  they  ha
029570:  76 65 2E 20 20 54 79 70 69 6E 67 0D 0A 20 20 20    ve.  Typing..   
029580:  22 2A 68 61 73 68 67 72 61 70 68 22 20 67 69 76    "*hashgraph" giv
029590:  65 73 20 61 20 67 72 61 70 68 69 63 61 6C 20 72    es a graphical r
0295A0:  65 70 72 65 73 65 6E 74 61 74 69 6F 6E 20 6F 66    epresentation of
0295B0:  20 74 68 65 20 68 61 73 20 74 61 62 6C 65 2C 20     the has table, 
0295C0:  61 6E 64 20 69 66 20 79 6F 75 0D 0A 20 20 20 64    and if you..   d
0295D0:  6F 20 74 68 69 73 20 66 72 6F 6D 20 74 69 6D 65    o this from time
0295E0:  20 74 6F 20 74 69 6D 65 20 61 73 20 79 6F 75 20     to time as you 
0295F0:  20 74 79 70 65 20 6D 6F 72 65 20 73 65 6E 74 65     type more sente
029600:  20 6B 6E 6F 77 20 74 68 61 74 20 20 4B 65 72 6D     know that  Kerm
029610:  69 74 20 77 6F 75 6C 64 20 6E 6F 74 20 62 65 20    it would not be 
029620:  66 6F 75 6E 64 20 69 6E 20 74 68 65 0D 0A 20 20    found in the..  
029630:  20 61 72 72 61 79 20 61 74 20 61 6C 6C 2C 20 62     array at all, b
029640:  65 63 61 75 73 65 20 69 74 20 77 6F 75 6C 64 20    ecause it would 
029650:  68 61 76 65 20 62 65 65 6E 20 20 70 75 74 20 74    have been  put t
029660:  68 65 72 65 20 69 66 20 74 68 65 20 73 70 61 63    here if the spac
029670:  65 20 77 61 73 20 66 72 65 65 2E 0D 0A 20 20 20    e was free...   
029680:  49 66 20 46 72 6F 67 20 69 73 20 69 6E 20 35 34    If Frog is in 54
029690:  33 20 61 6E 64 20 74 68 65 72 65 20 69 73 20 20    3 and there is  
0296A0:  6E 6F 74 68 69 6E 67 20 20 69 6E 20 35 34 34 2C    nothing  in 544,
0296B0:  20 61 67 61 69 6E 20 77 65 20 6B 6E 6F 77 20 74     again we know t
0296C0:  68 61 74 20 4B 65 72 6D 69 74 0D 0A 20 20 20 69    hat Kermit..   i
0296D0:  73 20 6E 6F 74 20 69 6E 20 74 68 65 20 61 72 72    s not in the arr
0296E0:  61 79 20 62 65 63 61 75 73 65 20 69 74 20 77 6F    ay because it wo
0296F0:  75 6C 64 20 68 61 76 65 20 62 65 65 6E 20 70 75    uld have been pu
029700:  74 20 69 6E 20 35 34 34 2E 0D 0A 0D 0A 20 20 20    t in 544.....   
029710:  54 68 69 73 20 6D 65 74 68 6F 64 20 69 73 20 63    This method is c
029720:  61 6C 6C 65 64 20 22 6C 69 6E 65 61 72 20 70 72    alled "linear pr
029730:  6F 62 69 6E 67 22 2C 20 62 75 74 20 20 69 74 20    obing", but  it 
029740:  69 73 6E 27 74 20 61 63 74 75 61 6C 6C 79 20 61    isn't actually a
029750:  20 76 65 72 79 20 67 6F 6F 64 0D 0A 20 20 20 6D     very good..   m
029760:  65 74 68 6F 64 2E 20 20 54 68 65 20 70 72 6F 62    ethod.  The prob
029770:  6C 65 6D 20 69 73 20 74 68 61 74 20 6F 6E 63 65    lem is that once
029780:  20 79 6F 75 20 67 65 74 20 20 61 20 67 72 6F 75     you get  a grou
029790:  70 20 6F 66 20 77 6F 72 64 73 20 69 6E 20 61 20    p of words in a 
0297A0:  72 6F 77 2C 20 74 68 65 79 0D 0A 20 20 20 63 6C    row, they..   cl
0297B0:  75 73 74 65 72 20 74 6F 67 65 74 68 65 72 2C 20    uster together, 
0297C0:  61 6E 64 20 6F 6E 63 65 20 79 6F 75 20 67 65 74    and once you get
0297D0:  20 20 61 20 20 63 6C 75 73 74 65 72 2C 20 20 6F      a  cluster,  o
0297E0:  74 68 65 72 20 77 6F 72 64 73 20 61 72 65 20 65    ther words are e
0297F0:  76 65 6E 20 6D 6F 72 65 0D 0A 20 20 20 6C 69 6B    ven more..   lik
029800:  6E 63 65 73 20 69 6E 2C 20 79 6F 75 20 77 69 6C    nces in, you wil
029810:  6C 20 73 65 65 20 68 6F 77 0D 0A 20 20 20 74 68    l see how..   th
029820:  65 20 68 61 73 68 20 74 61 62 6C 65 20 66 69 6C    e hash table fil
029830:  6C 73 20 75 70 2E 0D 0A 0D 0A 20 20 20 4C 69 6E    ls up.....   Lin
029840:  65 20 31 36 30 20 69 73 20 77 68 65 72 65 20 77    e 160 is where w
029850:  65 20 64 65 61 6C 20 77 69 74 68 20 61 64 64 69    e deal with addi
029860:  6E 67 20 61 20 6E 65 77 20 77 6F 72 64 2C 20 61    ng a new word, a
029870:  6E 64 20 69 73 20 6D 75 63 68 20 73 69 6D 70 6C    nd is much simpl
029880:  65 72 20 74 68 61 6E 0D 0A 20 20 20 74 68 65 20    er than..   the 
029890:  62 69 6E 61 72 79 20 74 72 65 65 20 76 65 72 73    binary tree vers
0298A0:  69 6F 6E 2C 20 62 65 63 61 75 73 65 20 20 74 68    ion, because  th
0298B0:  65 20 20 73 75 62 72 6F 75 74 69 6E 65 20 20 61    e  subroutine  a
0298C0:  74 20 38 30 30 20 62 61 73 69 63 61 6C 6C 79 20    t 800 basically 
0298D0:  65 69 74 68 65 72 0D 0A 20 20 20 74 65 6C 6C 73    either..   tells
0298E0:  20 75 73 20 77 68 65 72 65 20 74 68 65 20 20 77     us where the  w
0298F0:  6F 72 64 20 20 69 73 20 20 61 6C 72 65 61 64 79    ord  is  already
029900:  2C 20 20 6F 72 20 20 77 68 65 72 65 20 20 74 6F    ,  or  where  to
029910:  20 20 70 75 74 20 20 69 74 2E 20 20 54 68 65 20      put  it.  The 
029920:  6F 74 68 65 72 0D 0A 20 20 20 69 6D 70 6F 72 74    other..   import
029930:  61 6E 74 20 61 6C 74 65 72 61 74 69 6F 6E 20 69    ant alteration i
029940:  73 20 6C 69 6E 65 20 34 33 35 2E 20 20 48 65 72    s line 435.  Her
029950:  65 20 77 65 20 20 61 72 65 20 70 75 74 74 69 6E    e we  are puttin
029960:  67 20 69 6E 20 74 68 65 20 64 75 6D 6D 79 20 6C    g in the dummy l
029970:  69 6E 6B 73 0D 0A 20 20 20 65 78 70 6C 61 69 6E    inks..   explain
029980:  65 64 20 69 6E 20 69 73 73 75 65 20 31 32 36 2E    ed in issue 126.
029990:  20 20 49 6E 20 74 68 65 20 6F 6C 64 20 20 76 65      In the old  ve
0299A0:  72 73 69 6F 6E 2C 20 20 77 65 20 6A 75 73 74 20    rsion,  we just 
0299B0:  75 73 65 64 20 74 68 65 20 6E 65 78 74 20 73 70    used the next sp
0299C0:  61 63 65 0D 0A 20 20 20 69 6E 20 74 68 65 20 61    ace..   in the a
0299D0:  72 72 61 79 2C 20 62 75 74 20 77 65 20 61 72 65    rray, but we are
0299E0:  20 6E 6F 77 20 20 75 73 69 6E 67 20 20 74 68 65     now  using  the
0299F0:  20 20 73 70 61 63 65 73 20 20 69 6E 20 74 68 65      spaces  in the
029A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
029A10:  23 00 01 00 02 09 4E E5 23 00 C7 02 00 00 00 02    #.....N.#.......
029A20:  23 00 C3 02 00 00 00 02 23 00 C8 02 00 00 00 02    #.......#.......
029A30:  23 00 C4 02 00 00 00 02 23 00 C9 02 00 00 00 02    #.......#.......
029A40:  23 00 C5 02 00 00 00 02 23 00 C1 02 00 00 00 02    #.......#.......
029A50:  23 00 C6 02 00 00 00 02 23 00 C2 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:  0A 1A 4C 49 53 54 45 58 20 20 24 24 24 FF 00 FF    ..LISTEX  $$$...
029B10:  00 F9 00 06 00 C8 00 C9 00 00 00 1A 0A 32 30 20    .............20 
029B20:  46 4F 52 20 78 3D 31 20 54 4F 20 35 0D 0A 33 30    FOR x=1 TO 5..30
029B30:  20 52 45 41 44 20 6E 61 6D 65 24 28 78 29 3A 47     READ name$(x):G
029B40:  4F 53 55 42 20 31 34 30 0D 0A 34 30 20 4E 45 58    OSUB 140..40 NEX
029B50:  54 0D 0A 35 30 20 50 52 49 4E 54 22 20 78 20 6E    T..50 PRINT" x n
029B60:  61 6D 65 24 28 78 29 22 54 41 42 28 31 35 29 22    ame$(x)"TAB(15)"
029B70:  6E 65 78 74 6E 61 6D 65 28 78 29 22 0D 0A 36 30    nextname(x)"..60
029B80:  20 46 4F 52 20 78 3D 30 20 54 4F 20 35 0D 0A 37     FOR x=0 TO 5..7
029B90:  30 20 50 52 49 4E 54 20 78 3B 6E 61 6D 65 24 28    0 PRINT x;name$(
029BA0:  78 29 3B 54 41 42 28 31 34 29 3B 6E 65 78 74 6E    x);TAB(14);nextn
029BB0:  61 6D 65 28 78 29 0D 0A 38 30 20 4E 45 58 54 0D    ame(x)..80 NEXT.
029BC0:  0A 39 30 20 50 52 49 4E 54 3A 50 52 49 4E 54 22    .90 PRINT:PRINT"
029BD0:  49 6E 20 6F 72 64 65 72 3A 22 0D 0A 31 30 30 20    In order:"..100 
029BE0:  78 3D 30 3A 57 48 49 4C 45 20 6E 65 78 74 6E 61    x=0:WHILE nextna
029BF0:  6D 65 28 78 29 3E 30 0D 0A 31 31 30 20 78 3D 6E    me(x)>0..110 x=n
029C00:  65 78 74 6E 61 6D 65 28 78 29 3A 50 52 49 4E 54    extname(x):PRINT
029C10:  20 6E 61 6D 65 24 28 78 29 0D 0A 31 32 30 20 57     name$(x)..120 W
029C20:  45 4E 44 3A 45 4E 44 0D 0A 31 33 30 20 44 41 54    END:END..130 DAT
029C30:  41 20 45 67 62 65 72 74 2C 41 6C 66 72 65 64 2C    A Egbert,Alfred,
029C40:  43 68 61 72 6C 69 65 2C 42 65 72 74 72 61 6E 64    Charlie,Bertrand
029C50:  2C 44 65 73 6D 6F 6E 64 0D 0A 31 34 30 20 52 45    ,Desmond..140 RE
029C60:  4D 20 69 6E 73 65 72 74 20 69 6E 74 6F 20 6C 69    M insert into li
029C70:  73 74 0D 0A 31 35 30 20 79 3D 6E 65 78 74 6E 61    st..150 y=nextna
029C80:  6D 65 28 30 29 3A 70 79 3D 30 0D 0A 31 36 30 20    me(0):py=0..160 
029C90:  57 48 49 4C 45 20 79 3E 30 20 41 4E 44 20 6E 61    WHILE y>0 AND na
029CA0:  6D 65 24 28 79 29 3C 6E 61 6D 65 24 28 78 29 0D    me$(y)<name$(x).
029CB0:  0A 31 37 30 20 70 79 3D 79 3A 79 3D 6E 65 78 74    .170 py=y:y=next
029CC0:  6E 61 6D 65 28 79 29 0D 0A 31 38 30 20 57 45 4E    name(y)..180 WEN
029CD0:  44 0D 0A 31 39 30 20 6E 65 78 74 6E 61 6D 65 28    D..190 nextname(
029CE0:  70 79 29 3D 78 3A 6E 65 78 74 6E 61 6D 65 28 78    py)=x:nextname(x
029CF0:  29 3D 79 0D 0A 32 30 30 20 52 45 54 55 52 4E 0D    )=y..200 RETURN.
029D00:  20 EB 20 9F 20 1E 64 00 00 18 00 3C 00 A1 20 0D     . . .d....<.. .
029D10:  00 00 6E 77 6F 72 64 F3 20 EB 20 9F 20 1E C8 00    ..nword. . . ...
029D20:  00 0A 00 46 00 A0 20 1E 28 00 00 27 00 64 00 D6    ...F.. .(..'.d..
029D30:  20 FF 74 28 03 00 00 E1 2C 22 20 22 29 EE 0E 01     .t(....," ")...
029D40:  0D 00 00 E1 EF FF 74 28 03 00 00 E1 2C 22 20 22    ......t(....," "
029D50:  29 00 3C 00 6E 00 03 00 00 74 65 6D 70 F7 28 0D    ).<.n....temp.(.
029D60:  00 00 77 63 6F 75 6E F4 29 EF FF 75 28 03 00 00    ..wcoun.)..u(...
029D70:  E1 2C 0D 00 00 E1 F5 0F 29 01 03 00 00 E1 EF AC    .,......).......
029D80:  28 03 00 00 E1 2C 0D 00 00 E1 F4 0F 29 00 22 00    (....,......).".
029D90:  78 00 0D 00 00 77 63 6F 75 6E F4 EF 0D 00 00 77    x....wcoun.....w
029DA0:  63 6F 75 6E F4 F4 0F 01 9F 20 1E 2C 01 01 D5 00    coun..... .,....
029DB0:  3F 00 82 00 A1 20 03 00 00 E1 F2 22 22 20 EB 20    ?.... ....."" . 
029DC0:  03 00 00 74 65 6D 70 F7 28 0D 00 00 77 63 6F 75    ...temp.(...wcou
029DD0:  6E F4 29 EF 03 00 00 E1 01 0D 00 00 77 63 6F 75    n.).........wcou
029DE0:  6E F4 EF 0D 00 00 77 63 6F 75 6E F4 F4 0F 00 3D    n.....wcoun....=
029DF0:  00 8C 00 0D 00 00 70 77 6F 72 E4 EF 0E 01 9E 20    ......pwor..... 
029E00:  0D 00 00 E9 EF 0E 20 EC 20 0D 00 00 77 63 6F 75    ...... . ...wcou
029E10:  6E F4 F5 0F 01 03 00 00 77 6F 72 E4 EF 03 00 00    n.......wor.....
029E20:  74 65 6D 70 F7 28 0D 00 00 E9 29 00 0A 00 96 00    temp.(....).....
029E30:  9F 20 1E 20 03 00 5B 00 A0 00 A1 20 03 00 00 F7    . . ..[.... ....
029E40:  28 0D 00 00 63 77 6F 72 E4 29 EF 22 22 20 EB 20    (...cwor.)."" . 
029E50:  0D 00 00 6E 77 6F 72 64 F3 EF 0D 00 00 6E 77 6F    ...nword.....nwo
029E60:  72 64 F3 F4 0F 01 03 00 00 F7 28 0D 00 00 63 77    rd........(...cw
029E70:  6F 72 E4 29 EF 03 00 00 77 6F 72 E4 01 0D 00 00    or.)....wor.....
029E80:  6C EB 28 0D 00 00 63 77 6F 72 E4 2C 0E 29 EF 0E    l.(...cwor.,.)..
029E90:  00 1E 00 AA 00 9F 20 1E 90 01 01 0D 00 00 70 77    ...... .......pw
029EA0:  6F 72 E4 EF 0D 00 00 63 77 6F 72 E4 01 B0 00 15    or.....cwor.....
029EB0:  00 B4 00 0D 00 00 63 77 6F 72 E4 EF 0E 01 9F 20    ......cwor..... 
029EC0:  1E 90 01 00 06 00 BE 00 C9 00 15 00 C8 00 0D 00    ................
029ED0:  00 70 77 6F 72 E4 EF 0E 01 9F 20 1E F4 01 00 2E    .pwor..... .....
029EE0:  00 D2 00 D6 20 0D 00 00 70 77 6F 72 E4 EE 0E 01    .... ...pwor....
029EF0:  BF 20 03 00 00 F7 28 0D 00 00 70 77 6F 72 E4 29    . ....(...pwor.)
029F00:  BC 02 03 00 00 66 69 6C E5 EF AC 28 03 00 00 E1    .....fil...(....
029F10:  2C 15 29 01 A1 20 03 00 00 66 69 6C E5 EF 22 22    ,.).. ...fil..""
029F20:  20 EB 20 03 00 00 66 69 6C E5 EF 22 56 4F 43 41     . ...fil.."VOCA
029F30:  42 22 00 1C 00 C6 02 B7 20 03 00 00 66 69 6C E5    B"...... ...fil.
029F40:  01 D9 23 17 2C 0D 00 00 6E 77 6F 72 64 F3 00 38    ..#.,...nword..8
029F50:  00 D0 02 9E 20 0D 00 00 E9 EF 0E 20 EC 20 0D 00    .... ...... . ..
029F60:  00 6D 77 6F 72 64 F3 F5 0F 01 D9 23 17 2C 03 00    .mword.....#.,..
029F70:  00 F7 28 0D 00 00 E9 29 2C 0D 00 00 6C EB 28 0D    ..(....),...l.(.
029F80:  00 00 E9 2C 0E 29 00 5E 00 DA 02 0D 00 00 EA EF    ...,.).^........
029F90:  0D 00 00 6C EB 28 0D 00 00 E9 2C 0E 29 01 0D 00    ...l.(....,.)...
029FA0:  00 F9 EF 0D 00 00 E9 01 0D 00 00 F8 EF 0F 01 D6    ................
029FB0:  20 0D 00 00 EA EE 0E 01 0D 00 00 EA EF 0D 00 00     ...............
029FC0:  EA F5 0F 01 D9 23 17 2C 0D 00 00 6C EB 28 0D 00    .....#.,...l.(..
029FD0:  00 F9 2C 0D 00 00 F8 29 01 0D 00 00 F8 EF 0D 00    ..,....)........
029FE0:  00 F8 F4 0F 00 49 00 DF 02 A1 20 0D 00 00 F8 EF    .....I.... .....
029FF0:  0D 00 00 6D 6C 69 6E 6B F3 20 EB 20 D9 23 17 2C    ...mlink. . .#.,
02A000:  0D 00 00 6C EB 28 0D 00 00 F9 2C 0D 00 00 F8 29    ...l.(....,....)
02A010:  01 0D 00 00 F9 EF 0D 00 00 6C EB 28 0D 00 00 F9    .........l.(....
02A020:  2C 0D 00 00 F8 29 01 0D 00 00 F8 EF 0F 00 08 00    ,....)..........
02A030:  E0 02 D5 01 B0 00 08 00 E4 02 89 01 C9 00 8B 00    ................
02A040:  20 03 0D 00 00 E1 EF FF 01 28 FF 79 28 03 00 00     ........(.y(...
02A050:  77 6F 72 E4 2C 0F 29 29 F4 FF 01 28 FF 79 28 03    wor.,.))...(.y(.
02A060:  00 00 77 6F 72 E4 2C 11 29 29 01 0D 00 00 E2 EF    ..wor.,.))......
02A070:  FF 01 28 FF 79 28 03 00 00 77 6F 72 E4 2C 12 29    ..(.y(...wor.,.)
02A080:  29 F4 FF 01 28 03 00 00 77 6F 72 E4 29 01 0D 00    )...(...wor.)...
02A090:  00 E3 EF 28 0D 00 00 E1 20 FB 20 1A 00 01 29 F6    ...(.... . ...).
02A0A0:  19 80 F4 28 0D 00 00 E2 20 FB 20 19 80 29 01 0D    ...(.... . ..)..
02A0B0:  00 00 63 77 6F 72 E4 EF 0D 00 00 E3 20 FB 20 0D    ..cwor...... . .
02A0C0:  00 00 6D 77 6F 72 64 F3 00 63 00 2A 03 D6 20 03    ..mword..c.*.. .
02A0D0:  00 00 F7 28 0D 00 00 63 77 6F 72 E4 29 F2 03 00    ...(...cwor.)...
02A0E0:  00 77 6F 72 E4 20 FA 20 03 00 00 F7 28 0D 00 00    .wor. . ....(...
02A0F0:  63 77 6F 72 E4 29 F2 22 22 01 0D 00 00 63 77 6F    cwor.).""....cwo
02A100:  22 20 22 3B 01 9F 20 1E F4 01 01 D5 00 12 00 DC    " ";.. .........
02A110:  00 BF 20 FF 03 28 16 29 3B 22 2E 22 01 BF 00 06    .. ..(.);"."....
02A120:  00 E6 00 C9 00 28 00 2C 01 D6 20 FF 75 28 03 00    .....(.,.. .u(..
02A130:  00 E1 2C 0F 29 EF 22 20 22 01 03 00 00 E1 EF AC    ..,.)." ".......
02A140:  28 03 00 00 E1 2C 10 29 01 D5 01 C9 00 30 00 90    (....,.).....0..
02A150:  01 0D 00 00 EA EF 0D 00 00 6C EB 28 0D 00 00 70    .........l.(...p
02A160:  77 6F 72 E4 2C 0E 29 01 0D 00 00 F8 EF 0F 01 0D    wor.,.).........
02A170:  00 00 F9 EF 0D 00 00 70 77 6F 72 E4 00 41 00 9A    .......pwor..A..
02A180:  01 D6 20 0D 00 00 EA EE 0E 20 FA 20 0D 00 00 63    .. ...... . ...c
02A190:  77 6F 72 E4 F2 0D 00 00 6C EB 28 0D 00 00 F9 2C    wor.....l.(....,
02A1A0:  0D 00 00 F8 29 01 0D 00 00 EA EF 0D 00 00 EA F5    ....)...........
02A1B0:  0F 01 0D 00 00 F8 EF 0D 00 00 F8 F4 0F 00 34 00    ..............4.
02A1C0:  9F 01 A1 20 0D 00 00 F8 EF 0D 00 00 6D 6C 69 6E    ... ........mlin
02A1D0:  6B F3 20 EB 20 0D 00 00 F9 EF 0D 00 00 6C EB 28    k. . ........l.(
02A1E0:  0D 00 00 F9 2C 0D 00 00 F8 29 01 0D 00 00 F8 EF    ....,....)......
02A1F0:  0F 00 15 00 A4 01 D5 01 A1 20 0D 00 00 EA EE 0E    ......... ......
02A200:  20 EB 20 1E B8 01 00 44 00 AE 01 0D 00 00 6C EB     . ....D......l.
02A210:  28 0D 00 00 70 77 6F 72 E4 2C 0E 29 EF 0D 00 00    (...pwor.,.)....
02A220:  6C EB 28 0D 00 00 70 77 6F 72 E4 2C 0E 29 F4 0F    l.(...pwor.,.)..
02A230:  01 0D 00 00 6C EB 28 0D 00 00 F9 2C 0D 00 00 F8    ....l.(....,....
02A240:  29 EF 0D 00 00 63 77 6F 72 E4 00 D5 00 B3 01 A1    )....cwor.......
02A250:  20 0D 00 00 F8 EF 0D 00 00 6D 6C 69 6E 6B F3 F5     ........mlink..
02A260:  0F 20 EB 20 0D 00 00 6E 77 6F 72 64 F3 EF 0D 00    . . ...nword....
02A270:  00 6E 77 6F 72 64 F3 F4 0F 01 0D 00 00 EA EF FF    .nword..........
02A280:  01 28 03 00 00 F7 28 0D 00 00 63 77 6F 72 E4 29    .(....(...cwor.)
02A290:  F4 22 20 22 29 01 0D 00 00 F8 EF 28 0D 00 00 63    ." ")......(...c
02A2A0:  77 6F 72 E4 F4 0D 00 00 EA 29 20 FB 20 0D 00 00    wor......) . ...
02A2B0:  6D 77 6F 72 64 F3 01 D6 20 03 00 00 F7 28 0D 00    mword... ....(..
02A2C0:  00 F8 29 EE 22 22 01 0D 00 00 F8 EF 28 0D 00 00    ..).""......(...
02A2D0:  F8 F4 0D 00 00 EA 29 20 FB 20 0D 00 00 6D 77 6F    ......) . ...mwo
02A2E0:  72 64 F3 01 D5 01 0D 00 00 6C EB 28 0D 00 00 F9    rd.......l.(....
02A2F0:  2C 0D 00 00 6D 6C 69 6E 6B F3 29 EF 0D 00 00 F8    ,...mlink.).....
02A300:  72 E4 EF 28 0D 00 00 63 77 6F 72 E4 F4 0D 00 00    r..(...cwor.....
02A310:  E2 29 20 FB 20 0D 00 00 6D 77 6F 72 64 F3 01 BF    .) . ...mword...
02A320:  20 FF 03 28 15 29 3B 01 D5 01 C9 00 50 00 84 03     ..(.);.....P...
02A330:  9E 20 0D 00 00 F8 EF 0E 20 EC 20 0D 00 00 6D 77    . ...... . ...mw
02A340:  6F 72 64 F3 01 A1 20 03 00 00 F7 28 0D 00 00 F8    ord... ....(....
02A350:  29 EE 22 22 20 EB 20 BF 20 0D 00 00 F8 3B 22 3A    )."" . . ....;":
02A360:  22 03 00 00 F7 28 0D 00 00 F8 29 22 3A 22 0D 00    "....(....)":"..
02A370:  00 6C EB 28 0D 00 00 F8 2C 0E 29 00 08 00 8E 03    .l.(....,.).....
02A380:  B0 01 C9 00 6C 00 98 03 AD 20 10 01 AE 20 0E 2C    ....l.... ... .,
02A390:  1A 2C 01 01 94 20 1A 58 02 2C 1A 2C 01 2C 0F 01    .,... .X.,.,.,..
02A3A0:  AE 20 0E 2C 19 C8 01 94 20 1A 99 01 2C 19 C8 2C    . .,.... ...,..,
02A3B0:  0F 01 9E 20 0D 00 00 F8 EF 0E 20 EC 20 1A E8 03    ... ...... . ...
02A3C0:  20 E6 20 19 32 01 AE 20 0D 00 00 F8 20 FB 20 1A     . .2.. .... . .
02A3D0:  58 02 2C 1A 2C 01 F5 19 64 F6 28 0D 00 00 F8 F9    X.,.,...d.(.....
02A3E0:  1A 58 02 29 01 95 20 0E 2C F5 14 2C 0F 01 B0 00    .X.).. .,..,....
02A3F0:  53 00 A2 03 9E 20 0D 00 00 F8 EF 0E 20 EC 20 0D    S.... ...... . .
02A400:  00 00 6D 77 6F 72 64 F3 01 A1 20 03 00 00 F7 28    ..mword... ....(
02A410:  0D 00 00 F8 29 EE 22 22 20 EB 20 AE 20 0D 00 00    ....)."" . . ...
02A420:  F8 20 FB 20 1A 58 02 2C 1A 2C 01 F5 19 64 F6 28    . . .X.,.,...d.(
02A430:  0D 00 00 F8 F9 1A 58 02 29 01 95 20 0E 2C 19 10    ......X.).. .,..
02A440:  2C 0F 00 0F 00 AC 03 B0 01 A9 20 0F 2C 19 14 01    ,......... .,...
02A450:  C9 00 00 00 1A 30 20 44 49 4D 20 77 24 28 6D 77    .....0 DIM w$(mw
02A460:  6F 72 64 73 2D 31 29 2C 6C 6B 28 6D 77 6F 72 64    ords-1),lk(mword
02A470:  73 2D 31 2C 6D 6C 69 6E 6B 73 29 2C 74 65 6D 70    s-1,mlinks),temp
02A480:  29 F4 FF 01 28 03 00 00 77 6F 72 E4 29 01 0D 00    )...(...wor.)...
02A490:  00 E3 EF 28 0D 00 00 E1 20 FB 20 1A 00 01 29 F6    ...(.... . ...).
02A4A0:  19 80 F4 28 0D 00 00 E2 20 FB 20 19 80 29 01 0D    ...(.... . ..)..
02A4B0:  00 00 63 77 6F 72 E4 EF 0D 00 00 E3 20 FB 20 0D    ..cwor...... . .
02A4C0:  00 00 6D 77 6F 72 64 F3 00 63 00 2A 03 D6 20 03    ..mword..c.*.. .
02A4D0:  00 00 F7 28 0D 00 00 63 77 6F 72 E4 29 F2 03 00    ...(...cwor.)...
02A4E0:  00 77 6F 72 E4 20 FA 20 03 00 00 F7 28 0D 00 00    .wor. . ....(...
02A4F0:  63 77 6F 72 E4 29 F2 22 22 01 0D 00 00 63 77 6F    cwor.).""....cwo
02A500:  01 0D 00 00 6C EB 28 0D 00 00 F8 2C 0E 29 EF 0E    ....l.(....,.)..
02A510:  01 03 00 00 F7 28 0D 00 00 F8 29 EF 22 20 22 00    .....(....)." ".
02A520:  06 00 B8 01 C9 00 24 00 F4 01 0D 00 00 E9 EF FF    ......$.........
02A530:  0C 28 FF 45 F6 0D 00 00 6C EB 28 0D 00 00 70 77    .(.E....l.(...pw
02A540:  6F 72 E4 2C 0E 29 F4 0F 29 00 50 00 F9 01 D6 20    or.,.)..).P.... 
02A550:  0D 00 00 E9 F0 0D 00 00 6D 6C 69 6E 6B F3 01 0D    ........mlink...
02A560:  00 00 E9 EF 0F F4 0D 00 00 E9 F5 0D 00 00 6D 6C    ..............ml
02A570:  69 6E 6B F3 01 0D 00 00 70 77 6F 72 E4 EF 0D 00    ink.....pwor....
02A580:  00 6C EB 28 0D 00 00 70 77 6F 72 E4 2C 0D 00 00    .l.(...pwor.,...
02A590:  6D 6C 69 6E 6B F3 29 01 D5 00 24 00 FE 01 0D 00    mlink.)...$.....
02A5A0:  00 70 77 6F 72 E4 EF 0D 00 00 6C EB 28 0D 00 00    .pwor.....l.(...
02A5B0:  70 77 6F 72 E4 2C 0D 00 00 E9 29 01 C9 00 35 00    pwor.,....)...5.
02A5C0:  58 02 03 00 00 66 69 6C E5 EF AC 28 03 00 00 E1    X....fil...(....
02A5D0:  2C 15 29 01 A1 20 03 00 00 66 69 6C E5 EF 22 22    ,.).. ...fil..""
02A5E0:  20 EB 20 03 00 00 66 69 6C E5 EF 22 56 4F 43 41     . ...fil.."VOCA
02A5F0:  42 22 00 1C 00 62 02 B6 20 03 00 00 66 69 6C E5    B"...b.. ...fil.
02A600:  01 A3 23 17 2C 0D 00 00 6E 77 6F 72 64 F3 00 38    .£#.,...nword..8
02A610:  00 6C 02 9E 20 0D 00 00 E9 EF 0E 20 EC 20 0D 00    .l.. ...... . ..
02A620:  00 6D 77 6F 72 64 F3 F5 0F 01 A3 23 17 2C 03 00    .mword....£#.,..
02A630:  00 F7 28 0D 00 00 E9 29 2C 0D 00 00 6C EB 28 0D    ..(....),...l.(.
02A640:  00 00 E9 2C 0E 29 00 5E 00 76 02 0D 00 00 EA EF    ...,.).^.v......
02A650:  0D 00 00 6C EB 28 0D 00 00 E9 2C 0E 29 01 0D 00    ...l.(....,.)...
02A660:  00 F9 EF 0D 00 00 E9 01 0D 00 00 F8 EF 0F 01 D6    ................
02A670:  20 0D 00 00 EA EE 0E 01 0D 00 00 EA EF 0D 00 00     ...............
02A680:  EA F5 0F 01 A3 23 17 2C 0D 00 00 6C EB 28 0D 00    ....£#.,...l.(..
02A690:  00 F9 2C 0D 00 00 F8 29 01 0D 00 00 F8 EF 0D 00    ..,....)........
02A6A0:  00 F8 F4 0F 00 49 00 7B 02 A1 20 0D 00 00 F8 EF    .....I.{.. .....
02A6B0:  0D 00 00 6D 6C 69 6E 6B F3 20 EB 20 A3 23 17 2C    ...mlink. . £#.,
02A6C0:  0D 00 00 6C EB 28 0D 00 00 F9 2C 0D 00 00 F8 29    ...l.(....,....)
02A6D0:  01 0D 00 00 F9 EF 0D 00 00 6C EB 28 0D 00 00 F9    .........l.(....
02A6E0:  2C 0D 00 00 F8 29 01 0D 00 00 F8 EF 0F 00 08 00    ,....)..........
02A6F0:  7C 02 D5 01 B0 00 08 00 80 02 88 01 C9 00 35 00    |.............5.
02A700:  64 6F 20 20 6E 6F 74 20 20 77 6F 72 6B 20 20 73    do  not  work  s
02A710:  6F 20 77 65 6C 6C 20 77 68 65 6E 20 74 68 65 79    o well when they
02A720:  20 61 72 65 0D 0A 20 20 20 66 75 6C 6C 20 74 68     are..   full th
02A730:  6F 75 67 68 2C 20 73 6F 20 79 6F 75 20 6D 61 79    ough, so you may
02A740:  20 20 66 69 6E 64 20 20 74 68 69 6E 67 73 20 20      find  things  
02A750:  63 6C 6F 67 67 69 6E 67 20 20 75 70 20 20 69 66    clogging  up  if
02A760:  20 79 6F 75 20 73 70 65 6E 64 20 74 6F 6F 20 6C     you spend too l
02A770:  6F 6E 67 0D 0A 20 20 20 74 61 6C 6B 69 6E 67 20    ong..   talking 
02A780:  74 6F 20 79 6F 75 72 20 63 6F 6D 70 75 74 65 72    to your computer
02A790:  2E 20 20 49 20 68 61 76 65 20 69 6E 63 6C 75 64    .  I have includ
02A7A0:  65 64 20 61 20 50 52 49 4E 54 20 43 48 52 24 28    ed a PRINT CHR$(
02A7B0:  37 29 20 69 6E 20 6C 69 6E 65 20 38 31 30 2C 20    7) in line 810, 
02A7C0:  73 6F 0D 0A 20 20 20 69 74 20 77 69 6C 6C 20 62    so..   it will b
02A7D0:  65 65 70 20 65 76 65 72 79 20 74 69 6D 65 20 74    eep every time t
02A7E0:  68 65 72 65 20 69 73 20 20 61 20 63 6F 6C 6C 69    here is  a colli
02A7F0:  73 69 6F 6E 2E 20 20 57 68 65 6E 20 79 6F 75 20    sion.  When you 
02A800:  68 61 76 65 20 62 65 65 6E 20 74 61 6C 6B 69 6E    have been talkin
02A810:  67 0D 0A 20 20 20 66 6F 72 20 61 20 77 68 69 6C    g..   for a whil
02A820:  65 20 79 6F 75 20 77 69 6C 6C 20 67 65 74 20 61    e you will get a
02A830:  20 6C 6F 74 20 6D 6F 72 65 20 62 65 65 70 73 2E     lot more beeps.
02A840:  0D 0A 0D 0A 20 20 20 54 68 61 74 27 73 20 61 6C    ....   That's al
02A850:  6C 20 75 6E 74 69 6C 20 6E 65 78 74 20 6D 6F 6E    l until next mon
02A860:  74 68 2C 20 77 68 65 6E 20 79 6F 75 20 77 69 6C    th, when you wil
02A870:  6C 20 20 62 65 20 61 73 6B 65 64 20 74 6F 20 64    l  be asked to d
02A880:  75 73 74 20 6F 66 66 20 79 6F 75 72 20 43 50 2F    ust off your CP/
02A890:  4D 0D 0A 20 20 20 73 79 73 74 65 6D 20 64 69 73    M..   system dis
02A8A0:  63 73 20 28 63 75 65 20 73 6F 75 6E 64 20 65 66    cs (cue sound ef
02A8B0:  66 65 63 74 73 20 6F 66 20 20 52 69 63 68 61 72    fects of  Richar
02A8C0:  64 20 46 61 69 72 68 75 72 73 74 20 67 6E 61 73    d Fairhurst gnas
02A8D0:  68 69 6E 67 20 68 69 73 20 74 65 65 74 68 29 2E    hing his teeth).
02A8E0:  0D 0A 20 20 20 53 65 65 20 79 6F 75 20 74 68 65    ..   See you the
02A8F0:  6E 2E 0D 0A 1A 6E 63 74 69 6F 6E 20 63 6F 6D 65    n....nction come
02A900:  31 30 20 44 49 4D 20 6E 61 6D 65 24 28 35 29 2C    10 DIM name$(5),
02A910:  6E 65 78 74 6E 61 6D 65 28 35 29 0D 0A 32 30 20    nextname(5)..20 
02A920:  46 4F 52 20 78 3D 31 20 54 4F 20 35 0D 0A 33 30    FOR x=1 TO 5..30
02A930:  20 52 45 41 44 20 6E 61 6D 65 24 28 78 29 3A 47     READ name$(x):G
02A940:  4F 53 55 42 20 31 34 30 0D 0A 34 30 20 4E 45 58    OSUB 140..40 NEX
02A950:  54 0D 0A 35 30 20 50 52 49 4E 54 22 20 78 20 6E    T..50 PRINT" x n
02A960:  61 6D 65 24 28 78 29 22 54 41 42 28 31 35 29 22    ame$(x)"TAB(15)"
02A970:  6E 65 78 74 6E 61 6D 65 28 78 29 22 0D 0A 36 30    nextname(x)"..60
02A980:  20 46 4F 52 20 78 3D 30 20 54 4F 20 35 0D 0A 37     FOR x=0 TO 5..7
02A990:  30 20 50 52 49 4E 54 20 78 3B 6E 61 6D 65 24 28    0 PRINT x;name$(
02A9A0:  78 29 3B 54 41 42 28 31 34 29 3B 6E 65 78 74 6E    x);TAB(14);nextn
02A9B0:  61 6D 65 28 78 29 0D 0A 38 30 20 4E 45 58 54 0D    ame(x)..80 NEXT.
02A9C0:  0A 39 30 20 50 52 49 4E 54 3A 50 52 49 4E 54 22    .90 PRINT:PRINT"
02A9D0:  49 6E 20 6F 72 64 65 72 3A 22 0D 0A 31 30 30 20    In order:"..100 
02A9E0:  78 3D 30 3A 57 48 49 4C 45 20 6E 65 78 74 6E 61    x=0:WHILE nextna
02A9F0:  6D 65 28 78 29 3E 30 0D 0A 31 31 30 20 78 3D 6E    me(x)>0..110 x=n
02AA00:  65 78 74 6E 61 6D 65 28 78 29 3A 50 52 49 4E 54    extname(x):PRINT
02AA10:  20 6E 61 6D 65 24 28 78 29 0D 0A 31 32 30 20 57     name$(x)..120 W
02AA20:  45 4E 44 3A 45 4E 44 0D 0A 31 33 30 20 44 41 54    END:END..130 DAT
02AA30:  41 20 45 67 62 65 72 74 2C 41 6C 66 72 65 64 2C    A Egbert,Alfred,
02AA40:  43 68 61 72 6C 69 65 2C 42 65 72 74 72 61 6E 64    Charlie,Bertrand
02AA50:  2C 44 65 73 6D 6F 6E 64 0D 0A 31 34 30 20 52 45    ,Desmond..140 RE
02AA60:  4D 20 69 6E 73 65 72 74 20 69 6E 74 6F 20 6C 69    M insert into li
02AA70:  73 74 0D 0A 31 35 30 20 79 3D 6E 65 78 74 6E 61    st..150 y=nextna
02AA80:  6D 65 28 30 29 3A 70 79 3D 30 0D 0A 31 36 30 20    me(0):py=0..160 
02AA90:  57 48 49 4C 45 20 79 3E 30 20 41 4E 44 20 6E 61    WHILE y>0 AND na
02AAA0:  6D 65 24 28 79 29 3C 6E 61 6D 65 24 28 78 29 0D    me$(y)<name$(x).
02AAB0:  0A 31 37 30 20 70 79 3D 79 3A 79 3D 6E 65 78 74    .170 py=y:y=next
02AAC0:  6E 61 6D 65 28 79 29 0D 0A 31 38 30 20 57 45 4E    name(y)..180 WEN
02AAD0:  44 0D 0A 31 39 30 20 6E 65 78 74 6E 61 6D 65 28    D..190 nextname(
02AAE0:  70 79 29 3D 78 3A 6E 65 78 74 6E 61 6D 65 28 78    py)=x:nextname(x
02AAF0:  29 3D 79 0D 0A 32 30 30 20 52 45 54 55 52 4E 0D    )=y..200 RETURN.
02AB00:  00 41 49 35 20 20 20 20 20 42 41 53 00 00 00 00    .AI5     BAS....
02AB10:  00 00 00 00 00 70 01 00 D4 0A 00 00 00 00 00 00    .....p..........
02AB20:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AB30:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AB40:  D4 0A 00 62 04 00 00 6D 77 6F 72 64 F3 01 A1 20    ...b...mword... 
02AB50:  03 00 00 F7 28 0D 00 00 F8 29 EE 22 22 20 EB 20    ....(....)."" . 
02AB60:  AE 20 0D 00 00 F8 20 FB 20 1A 58 02 2C 1A 2C 01    . .... . .X.,.,.
02AB70:  F5 19 64 F6 28 0D 00 00 F8 F9 1A 58 02 29 01 95    ..d.(......X.)..
02AB80:  18 00 0A 00 8E 20 61 2D 7A 01 B7 22 64 22 01 AA    ..... a-z.."d"..
02AB90:  20 FF 42 F5 0F 01 89 00 2A 00 14 00 0D 00 00 6D     .B.....*......m
02ABA0:  77 6F 72 64 F3 EF 1A F1 03 01 0D 00 00 6D 6C 69    word.........mli
02ABB0:  6E 6B F3 EF 14 01 0D 00 00 6E 77 6F 72 64 F3 EF    nk.......nword..
02ABC0:  0E 00 42 00 1E 00 93 20 03 00 00 F7 28 0D 00 00    ..B.... ....(...
02ABD0:  6D 77 6F 72 64 F3 F5 0F 29 2C 0D 00 00 6C EB 28    mword...),...l.(
02ABE0:  0D 00 00 6D 77 6F 72 64 F3 F5 0F 2C 0D 00 00 6D    ...mword...,...m
02ABF0:  6C 69 6E 6B F3 29 2C 03 00 00 74 65 6D 70 F7 28    link.),...temp.(
02AC00:  19 80 29 00 10 00 1F 00 03 00 00 F7 28 0E 29 EF    ..).........(.).
02AC10:  22 20 22 00 08 00 23 00 AD 20 10 00 0F 00 28 00    " "...#.. ....(.
02AC20:  A6 20 A3 22 22 2C 03 00 00 E1 00 2B 00 29 00 A1    . £"",.....+.)..
02AC30:  20 FF 1C 28 FF 75 28 03 00 00 E1 2C 13 29 29 EF     ..(.u(....,.)).
02AC40:  22 2A 4C 4F 41 44 22 20 EB 20 9F 20 1E 58 02 01    "*LOAD" . . .X..
02AC50:  A0 20 1E 28 00 00 2B 00 2A 00 A1 20 FF 1C 28 FF    . .(..+.*.. ..(.
02AC60:  75 28 03 00 00 E1 2C 13 29 29 EF 22 2A 53 41 56    u(....,.))."*SAV
02AC70:  45 22 20 EB 20 9F 20 1E BC 02 01 A0 20 1E 28 00    E" . . ..... .(.
02AC80:  00 2F 00 2B 00 A1 20 FF 1C 28 FF 75 28 03 00 00    ./.+.. ..(.u(...
02AC90:  E1 2C 17 29 29 EF 22 2A 53 48 4F 57 48 41 53 48    .,.))."*SHOWHASH
02ACA0:  22 20 EB 20 9F 20 1E 84 03 01 A0 20 1E 28 00 00    " . . ..... .(..
02ACB0:  31 00 2C 00 A1 20 FF 1C 28 FF 75 28 03 00 00 E1    1.,.. ..(.u(....
02ACC0:  2C 19 0A 29 29 EF 22 2A 48 41 53 48 47 52 41 50    ,..))."*HASHGRAP
02ACD0:  48 22 20 EB 20 9F 20 1E 98 03 01 A0 20 1E 28 00    H" . . ..... .(.
02ACE0:  00 28 00 32 00 0D 00 00 77 63 6F 75 6E F4 EF 0E    .(.2....wcoun...
02ACF0:  01 9F 20 1E 2C 01 01 A1 20 03 00 00 E1 F2 22 22    .. .,... .....""
02AD00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02AD10:  24 00 01 00 02 09 4E E5 24 00 C1 02 00 00 00 02    $.....N.$.......
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:  23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61    #Programmers' Pa
02AE10:  74 63 68 20 32 31 20 2D 20 57 41 43 43 49 20 31    tch 21 - WACCI 1
02AE20:  33 30 2C 20 4D 61 79 2F 4A 75 6E 65 20 31 39 39    30, May/June 199
02AE30:  39 0D 0A 20 20 20 50 52 4F 47 52 41 4D 4D 45 52    9..   PROGRAMMER
02AE40:  53 27 20 50 41 54 43 48 20 32 31 0D 0A 20 20 20    S' PATCH 21..   
02AE50:  42 79 20 4D 61 74 74 68 65 77 20 50 68 69 6C 6C    By Matthew Phill
02AE60:  69 70 73 0D 0A 0D 0A 20 20 20 49 20 73 61 69 64    ips....   I said
02AE70:  20 79 6F 75 20 77 6F 75 6C 64 20 68 61 76 65 20     you would have 
02AE80:  74 6F 20 64 75 73 74 20 20 6F 66 66 20 20 79 6F    to dust  off  yo
02AE90:  75 72 20 20 43 50 2F 4D 20 73 79 73 74 65 6D 20    ur  CP/M system 
02AEA0:  64 69 73 63 73 20 74 68 69 73 20 74 69 6D 65 2E    discs this time.
02AEB0:  20 20 57 65 0D 0A 20 20 20 61 72 65 20 67 6F 69      We..   are goi
02AEC0:  6E 67 20 74 6F 20 6C 6F 6F 6B 20 61 74 20 20 4C    ng to look at  L
02AED0:  6F 67 6F 2C 20 20 74 68 61 74 20 20 6E 65 67 6C    ogo,  that  negl
02AEE0:  65 63 74 65 64 20 20 6C 61 6E 67 75 61 67 65 20    ected  language 
02AEF0:  74 68 61 74 20 65 76 65 72 79 20 43 50 43 20 64    that every CPC d
02AF00:  69 73 63 0D 0A 20 20 20 64 72 69 76 65 20 75 73    isc..   drive us
02AF10:  65 72 20 68 61 73 20 61 63 63 65 73 73 20 74 6F    er has access to
02AF20:  2E 20 20 59 6F 75 20 20 6D 61 79 20 20 68 61 76    .  You  may  hav
02AF30:  65 20 6D 65 74 20 4C 6F 67 6F 20 74 68 72 6F 75    e met Logo throu
02AF40:  67 68 20 74 75 72 74 6C 65 20 67 72 61 70 68 69    gh turtle graphi
02AF50:  63 73 0D 0A 20 20 20 61 6E 64 20 20 6E 65 76 65    cs..   and  neve
02AF60:  72 20 20 72 65 61 6C 69 73 65 64 20 20 74 68 61    r  realised  tha
02AF70:  74 20 20 69 74 20 20 69 73 20 20 61 20 20 72 65    t  it  is  a  re
02AF80:  61 73 6F 6E 61 62 6C 79 20 20 63 6F 6D 70 6C 65    asonably  comple
02AF90:  74 65 20 20 61 6E 64 20 20 70 6F 77 65 72 66 75    te  and  powerfu
02AFA0:  6C 0D 0A 20 20 20 70 72 6F 67 72 61 6D 6D 69 6E    l..   programmin
02AFB0:  67 20 6C 61 6E 67 75 61 67 65 2E 20 20 54 68 65    g language.  The
02AFC0:  20 41 6D 73 74 72 61 64 20 76 65 72 73 69 6F 6E     Amstrad version
02AFD0:  20 20 69 73 20 20 76 65 72 79 20 20 73 6C 6F 77      is  very  slow
02AFE0:  2C 20 62 75 74 20 69 74 27 73 20 73 74 69 6C 6C    , but it's still
02AFF0:  0D 0A 20 20 20 77 6F 72 74 68 20 65 78 70 6C 6F    ..   worth explo
02B000:  6C 69 6E 65 73 20 20 66 6F 72 6D 20 20 62 6C 6F    lines  form  blo
02B010:  63 6B 73 20 20 6F 66 0D 0A 20 20 20 69 6E 73 74    cks  of..   inst
02B020:  72 75 63 74 69 6F 6E 73 20 77 68 69 63 68 20 61    ructions which a
02B030:  72 65 20 61 73 73 6F 63 69 61 74 65 64 20 77 69    re associated wi
02B040:  74 68 20 20 74 68 65 20 20 70 72 65 76 69 6F 75    th  the  previou
02B050:  73 20 6C 69 6E 65 2E 20 20 59 6F 75 20 6D 75 73    s line.  You mus
02B060:  74 20 61 6C 73 6F 0D 0A 20 20 20 74 79 70 65 20    t also..   type 
02B070:  74 68 65 20 63 6F 6D 6D 61 6E 64 73 20 69 6E 20    the commands in 
02B080:  6C 6F 77 65 72 20 63 61 73 65 20 6C 65 74 74 65    lower case lette
02B090:  72 73 2E 0D 0A 0D 0A 20 20 20 54 59 50 45 2D 49    rs.....   TYPE-I
02B0A0:  4E 20 43 4F 52 4E 45 52 0D 0A 20 20 20 54 6F 20    N CORNER..   To 
02B0B0:  65 6E 74 65 72 20 74 68 65 20 70 72 6F 67 72 61    enter the progra
02B0C0:  6D 2C 20 6A 75 73 74 20 74 79 70 65 20 61 6C 6C    m, just type all
02B0D0:  20 20 74 68 65 20 20 6C 69 6E 65 73 2C 20 70 72      the  lines, pr
02B0E0:  65 73 73 69 6E 67 20 45 4E 54 45 52 20 61 74 20    essing ENTER at 
02B0F0:  74 68 65 20 65 6E 64 0D 0A 20 20 20 6F 66 20 65    the end..   of e
02B100:  61 63 68 20 20 6F 6E 65 2E 20 20 20 57 68 69 6C    ach  one.   Whil
02B110:  65 20 20 79 6F 75 20 20 61 72 65 20 20 69 6E 20    e  you  are  in 
02B120:  20 74 68 65 20 20 6D 69 64 64 6C 65 20 20 6F 66     the  middle  of
02B130:  20 20 74 79 70 69 6E 67 20 20 61 20 20 70 72 6F      typing  a  pro
02B140:  63 65 64 75 72 65 0D 0A 20 20 20 64 65 66 69 6E    cedure..   defin
02B150:  69 74 69 6F 6E 2C 20 74 68 65 20 70 72 6F 6D 70    ition, the promp
02B160:  74 20 77 69 6C 6C 20 63 68 61 6E 67 65 20 20 74    t will change  t
02B170:  6F 20 20 61 20 20 67 72 65 61 74 65 72 2D 74 68    o  a  greater-th
02B180:  61 6E 20 73 69 67 6E 2E 20 20 53 6F 6D 65 20 6F    an sign.  Some o
02B190:  66 20 74 68 65 0D 0A 20 20 20 70 72 6F 67 72 61    f the..   progra
02B1A0:  6D 20 6C 69 6E 65 73 20 61 72 65 20 77 69 64 65    m lines are wide
02B1B0:  72 20 74 68 61 6E 20 74 68 65 20 73 63 72 65 65    r than the scree
02B1C0:  6E 2E 20 20 4C 6F 67 6F 20 77 69 6C 6C 20 64 69    n.  Logo will di
02B1D0:  73 70 6C 61 79 20 61 6E 20 65 78 63 6C 61 6D 61    splay an exclama
02B1E0:  74 69 6F 6E 0D 0A 20 20 20 6D 61 72 6B 20 77 68    tion..   mark wh
02B1F0:  65 6E 20 79 6F 75 20 77 72 61 70 20 72 6F 75 6E    en you wrap roun
02B200:  72 69 6E 67 2E 0D 0A 0D 0A 20 20 20 46 69 72 73    ring.....   Firs
02B210:  74 20 79 6F 75 20 77 69 6C 6C 20 6E 65 65 64 20    t you will need 
02B220:  74 6F 20 6D 61 6B 65 20 61 20 20 77 6F 72 6B 69    to make a  worki
02B230:  6E 67 20 20 63 6F 70 79 20 20 6F 66 20 74 68 65    ng  copy  of the
02B240:  20 72 65 6C 65 76 61 6E 74 20 73 69 64 65 20 6F     relevant side o
02B250:  66 20 79 6F 75 72 0D 0A 20 20 20 73 79 73 74 65    f your..   syste
02B260:  6D 20 64 69 73 63 73 2E 20 20 46 6F 72 20 34 36    m discs.  For 46
02B270:  34 20 61 6E 64 20 36 36 34 20 75 73 65 72 73 20    4 and 664 users 
02B280:  74 68 69 73 20 20 69 73 20 73 69 64 65 20 32 20    this  is side 2 
02B290:  6F 66 20 74 68 65 20 43 50 2F 4D 20 32 2E 32 20    of the CP/M 2.2 
02B2A0:  64 69 73 63 2E 0D 0A 20 20 20 36 31 32 38 20 75    disc...   6128 u
02B2B0:  73 65 72 73 20 73 68 6F 75 6C 64 20 75 73 65 20    sers should use 
02B2C0:  73 69 64 65 20 33 20 6F 66 20 74 68 65 69 72 20    side 3 of their 
02B2D0:  73 79 73 74 65 6D 20 64 69 73 63 73 2E 20 20 59    system discs.  Y
02B2E0:  6F 75 20 63 61 6E 20 61 6C 73 6F 20 74 72 79 20    ou can also try 
02B2F0:  74 68 69 73 0D 0A 20 20 20 6F 75 74 20 6F 6E 20    this..   out on 
02B300:  61 20 50 43 57 20 69 66 20 79 6F 75 20 68 61 76    a PCW if you hav
02B310:  65 20 20 6F 6E 65 2E 20 20 20 4F 6E 20 20 74 68    e  one.   On  th
02B320:  65 20 20 34 36 34 20 61 6E 64 20 36 36 34 2C 20    e  464 and 664, 
02B330:  79 6F 75 20 74 68 65 6E 20 69 6E 73 65 72 74 20    you then insert 
02B340:  74 68 65 0D 0A 20 20 20 63 6F 70 79 20 61 6E 64    the..   copy and
02B350:  20 74 79 70 65 20 7C 43 50 4D 2E 20 20 4C 6F 67     type |CPM.  Log
02B360:  6F 20 77 69 6C 6C 20 72 75 6E 20 61 75 74 6F 6D    o will run autom
02B370:  61 74 69 63 61 6C 6C 79 2E 20 20 36 31 32 38 20    atically.  6128 
02B380:  75 73 65 72 73 20 77 69 6C 6C 20 6E 65 65 64 20    users will need 
02B390:  74 6F 0D 0A 20 20 20 73 74 61 72 74 20 43 50 2F    to..   start CP/
02B3A0:  4D 2B 20 66 72 6F 6D 20 73 69 64 65 20 31 20 6F    M+ from side 1 o
02B3B0:  66 20 20 79 6F 75 72 20 20 73 79 73 74 65 6D 20    f  your  system 
02B3C0:  20 64 69 73 63 73 20 20 61 6E 64 20 74 68 65 6E     discs  and then
02B3D0:  20 69 6E 73 65 72 74 20 79 6F 75 72 20 4C 6F 67     insert your Log
02B3E0:  6F 0D 0A 20 20 20 64 69 73 63 20 61 6E 64 20 74    o..   disc and t
02B3F0:  79 70 65 20 22 73 75 62 6D 69 74 20 6C 6F 67 6F    ype "submit logo
02B400:  64 20 74 6F 20 74 68 65 20 6C 65 66 74 20 6F 66    d to the left of
02B410:  20 74 68 65 20 73 63 72 65 65 6E 2E 20 20 4A 75     the screen.  Ju
02B420:  73 74 20 69 67 6E 6F 72 65 20 74 68 69 73 2E 0D    st ignore this..
02B430:  0A 0D 0A 20 20 20 49 66 20 79 6F 75 20 6E 65 65    ...   If you nee
02B440:  64 20 74 6F 20 65 64 69 74 20 74 68 65 20 70 72    d to edit the pr
02B450:  6F 63 65 64 75 72 65 20 63 61 6C 6C 65 64 20 22    ocedure called "
02B460:  70 61 72 73 65 22 20 6C 61 74 65 72 2C 20 6A 75    parse" later, ju
02B470:  73 74 20 65 6E 74 65 72 0D 0A 0D 0A 20 20 20 20    st enter....    
02B480:  20 65 64 20 22 70 61 72 73 65 0D 0A 0D 0A 20 20     ed "parse....  
02B490:  20 61 6E 64 20 79 6F 75 20 77 69 6C 6C 20 62 65     and you will be
02B4A0:  20 20 70 75 74 20 20 69 6E 74 6F 20 20 61 6E 20      put  into  an 
02B4B0:  20 65 64 69 74 69 6E 67 20 20 73 63 72 65 65 6E     editing  screen
02B4C0:  2E 20 20 20 50 72 65 73 73 20 20 43 4F 50 59 20    .   Press  COPY 
02B4D0:  74 6F 20 73 61 76 65 20 74 68 65 0D 0A 20 20 20    to save the..   
02B4E0:  63 68 61 6E 67 65 73 2C 20 6F 72 20 45 53 43 20    changes, or ESC 
02B4F0:  74 6F 20 67 65 74 20 6F 75 74 20 77 69 74 68 6F    to get out witho
02B500:  75 74 20 61 6C 74 65 72 69 6E 67 20 61 6E 79 74    ut altering anyt
02B510:  68 69 6E 67 2E 20 20 49 66 20 79 6F 75 20 75 73    hing.  If you us
02B520:  65 20 61 20 34 36 34 20 6F 72 0D 0A 20 20 20 36    e a 464 or..   6
02B530:  36 34 20 79 6F 75 20 77 69 6C 6C 20 66 69 6E 64    64 you will find
02B540:  20 74 68 61 74 20 74 68 65 20 70 72 6F 63 65 64     that the proced
02B550:  75 72 65 20 77 69 6C 6C 20 20 68 61 76 65 20 62    ure will  have b
02B560:  65 65 6E 20 6A 6F 69 6E 65 64 20 75 70 20 69 6E    een joined up in
02B570:  20 6F 6E 65 20 6C 6F 6E 67 0D 0A 20 20 20 6C 69     one long..   li
02B580:  6E 65 2C 20 77 68 69 63 68 20 77 6F 72 6B 73 20    ne, which works 
02B590:  6A 75 73 74 20 74 68 65 20 73 61 6D 65 20 77 61    just the same wa
02B5A0:  79 2C 20 62 75 74 20 69 73 20 72 61 74 68 65 72    y, but is rather
02B5B0:  20 68 61 72 64 65 72 20 74 6F 20 72 65 61 64 2E     harder to read.
02B5C0:  20 20 4F 6E 20 74 68 65 0D 0A 20 20 20 36 31 32      On the..   612
02B5D0:  38 20 74 68 65 20 66 6F 72 6D 61 74 74 69 6E 67    8 the formatting
02B5E0:  20 69 73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A     is preserved...
02B5F0:  0D 0A 20 20 20 54 68 65 20 4C 6F 67 6F 20 70 72    ..   The Logo pr
02B600:  33 22 2E 20 20 54 68 61 74 27 73 20 20 77 68 61    3".  That's  wha
02B610:  74 20 20 69 74 20 20 73 61 79 73 20 69 6E 20 79    t  it  says in y
02B620:  6F 75 72 20 6D 61 6E 75 61 6C 2C 20 73 6F 20 49    our manual, so I
02B630:  0D 0A 20 20 20 68 6F 70 65 20 69 74 20 77 6F 72    ..   hope it wor
02B640:  6B 73 2E 0D 0A 0D 0A 20 20 20 4F 6E 63 65 20 4C    ks.....   Once L
02B650:  6F 67 6F 20 68 61 73 20 73 74 61 72 74 65 64 2C    ogo has started,
02B660:  20 79 6F 75 20 20 77 69 6C 6C 20 20 62 65 20 20     you  will  be  
02B670:  66 61 63 65 64 20 20 77 69 74 68 20 20 61 20 71    faced  with  a q
02B680:  75 65 73 74 69 6F 6E 20 6D 61 72 6B 20 70 72 6F    uestion mark pro
02B690:  6D 70 74 2C 0D 0A 20 20 20 77 68 69 63 68 20 69    mpt,..   which i
02B6A0:  73 20 4C 6F 67 6F 27 73 20 77 61 79 20 6F 66 20    s Logo's way of 
02B6B0:  73 61 79 69 6E 67 20 22 57 68 61 74 20 64 6F 20    saying "What do 
02B6C0:  79 6F 75 20 77 61 6E 74 20 6D 65 20 74 6F 20 64    you want me to d
02B6D0:  6F 3F 22 0D 0A 0D 0A 20 20 20 4C 4F 47 4F 20 53    o?"....   LOGO S
02B6E0:  43 52 49 50 54 0D 0A 20 20 20 42 65 63 61 75 73    CRIPT..   Becaus
02B6F0:  65 20 79 6F 75 20 77 69 6C 6C 20 70 72 6F 62 61    e you will proba
02B700:  62 6C 79 20 6E 6F 74 20 20 68 61 76 65 20 20 73    bly not  have  s
02B710:  65 65 6E 20 20 6D 75 63 68 20 20 4C 6F 67 6F 20    een  much  Logo 
02B720:  62 65 66 6F 72 65 2C 20 49 20 68 61 64 20 62 65    before, I had be
02B730:  74 74 65 72 0D 0A 20 20 20 65 78 70 6C 61 69 6E    tter..   explain
02B740:  20 61 20 62 69 74 20 61 62 6F 75 74 20 77 68 61     a bit about wha
02B750:  74 20 74 68 65 20 70 72 6F 67 72 61 6D 20 20 69    t the program  i
02B760:  73 20 20 6D 65 61 6E 74 20 20 74 6F 20 6C 6F 6F    s  meant  to loo
02B770:  6B 20 6C 69 6B 65 2C 20 61 6E 64 20 68 6F 77 20    k like, and how 
02B780:  79 6F 75 0D 0A 20 20 20 74 79 70 65 20 69 74 20    you..   type it 
02B790:  69 6E 2E 20 20 55 6E 6C 69 6B 65 20 42 41 53 49    in.  Unlike BASI
02B7A0:  43 2C 20 74 68 65 72 65 20 20 61 72 65 20 20 6E    C, there  are  n
02B7B0:  6F 20 20 6C 69 6E 65 20 6E 75 6D 62 65 72 73 2E    o  line numbers.
02B7C0:  20 20 42 41 53 49 43 20 69 73 20 69 6E 20 66 61      BASIC is in fa
02B7D0:  63 74 0D 0A 20 20 20 75 6E 75 73 75 61 6C 20 69    ct..   unusual i
02B7E0:  6E 20 75 73 69 6E 67 20 6C 69 6E 65 20 6E 75 6D    n using line num
02B7F0:  62 65 72 73 2C 20 77 68 69 63 68 20 61 72 65 20    bers, which are 
02B800:  6F 76 69 64 65 64 20 77 69 74 68 20 43 50 2F 4D    ovided with CP/M
02B810:  20 32 2E 32 20 66 6F 72 20 74 68 65 20 20 34 36     2.2 for the  46
02B820:  34 20 61 6E 64 20 36 36 34 20 69 73 20 61 20 63    4 and 664 is a c
02B830:  75 74 2D 64 6F 77 6E 20 76 65 72 73 69 6F 6E 0D    ut-down version.
02B840:  0A 20 20 20 64 65 73 69 67 6E 65 64 20 74 6F 20    .   designed to 
02B850:  66 69 74 20 69 6E 74 6F 20 74 68 65 20 73 6D 61    fit into the sma
02B860:  6C 6C 65 72 20 20 6D 65 6D 6F 72 79 20 20 6F 66    ller  memory  of
02B870:  20 74 68 65 73 65 20 6D 61 63 68 69 6E 65 73 2E     these machines.
02B880:  20 20 41 73 20 61 20 72 65 73 75 6C 74 2C 0D 0A      As a result,..
02B890:  20 20 20 74 77 6F 20 63 6F 6D 6D 61 6E 64 73 20       two commands 
02B8A0:  49 20 68 61 76 65 20 75 73 65 64 20 61 72 65 20    I have used are 
02B8B0:  20 6E 6F 74 20 20 61 76 61 69 6C 61 62 6C 65 20     not  available 
02B8C0:  6F 6E 20 74 68 69 73 20 76 65 72 73 69 6F 6E 2E    on this version.
02B8D0:  20 20 46 6F 72 74 75 6E 61 74 65 6C 79 0D 0A 20      Fortunately.. 
02B8E0:  20 20 77 65 20 63 61 6E 20 61 64 64 20 74 68 65      we can add the
02B8F0:  6D 20 76 65 72 79 20 65 61 73 69 6C 79 2C 20 73    m very easily, s
02B900:  6F 20 34 36 34 20 20 61 6E 64 20 20 36 36 34 20    o 464  and  664 
02B910:  75 73 65 72 73 20 77 69 6C 6C 20 61 6C 73 6F 20    users will also 
02B920:  6E 65 65 64 20 74 6F 20 74 79 70 65 0D 0A 20 20    need to type..  
02B930:  20 69 6E 20 74 68 65 20 64 65 66 69 6E 69 74 69     in the definiti
02B940:  6F 6E 73 20 6F 66 20 22 74 68 69 6E 67 22 20 61    ons of "thing" a
02B950:  6E 64 20 22 6D 65 6D 62 65 72 70 22 20 66 72 6F    nd "memberp" fro
02B960:  6D 20 74 68 65 20 73 65 70 61 72 61 74 65 20 6C    m the separate l
02B970:  69 73 74 69 6E 67 2E 0D 0A 0D 0A 20 20 20 4F 6E    isting.....   On
02B980:  63 65 20 69 74 20 69 73 20 61 6C 6C 20 74 79 70    ce it is all typ
02B990:  65 64 20 69 6E 2C 20 79 6F 75 20 63 61 6E 20 73    ed in, you can s
02B9A0:  61 76 65 20 69 74 20 62 79 20 74 79 70 69 6E 67    ave it by typing
02B9B0:  0D 0A 0D 0A 20 20 20 20 20 73 61 76 65 20 22 61    ....     save "a
02B9C0:  6E 79 6E 61 6D 65 0D 0A 0D 0A 20 20 20 61 6E 64    nyname....   and
02B9D0:  20 74 68 65 6E 20 72 75 6E 20 74 68 65 20 70 72     then run the pr
02B9E0:  6F 67 72 61 6D 20 62 79 20 65 6E 74 65 72 69 6E    ogram by enterin
02B9F0:  67 20 20 74 68 65 20 20 73 69 6E 67 6C 65 20 63    g  the  single c
02BA00:  6F 6E 6C 79 20 72 65 61 6C 6C 79 20 75 73 65 64    only really used
02BA10:  20 66 6F 72 20 74 68 65 20 47 4F 54 4F 20 61 6E     for the GOTO an
02BA20:  64 0D 0A 20 20 20 47 4F 53 55 42 20 63 6F 6D 6D    d..   GOSUB comm
02BA30:  61 6E 64 73 2E 20 20 4F 74 68 65 72 20 6C 61 6E    ands.  Other lan
02BA40:  67 75 61 67 65 73 20 20 67 69 76 65 20 20 73 75    guages  give  su
02BA50:  62 72 6F 75 74 69 6E 65 73 20 20 6E 61 6D 65 73    broutines  names
02BA60:  2C 20 20 61 6E 64 20 63 61 6C 6C 20 74 68 65 6D    ,  and call them
02BA70:  0D 0A 20 20 20 66 75 6E 63 74 69 6F 6E 73 20 6F    ..   functions o
02BA80:  72 20 70 72 6F 63 65 64 75 72 65 73 2E 0D 0A 0D    r procedures....
02BA90:  0A 20 20 20 54 68 65 20 66 69 72 73 74 20 6C 69    .   The first li
02BAA0:  6E 65 20 69 73 20 22 74 6F 20 61 69 22 2E 20 20    ne is "to ai".  
02BAB0:  54 68 69 73 20 64 65 66 69 6E 65 73 20 61 20 6E    This defines a n
02BAC0:  65 77 20 70 72 6F 63 65 64 75 72 65 20 6F 72 20    ew procedure or 
02BAD0:  63 6F 6D 6D 61 6E 64 2C 20 77 68 69 63 68 0D 0A    command, which..
02BAE0:  20 20 20 69 73 20 74 6F 20 62 65 20 63 61 6C 6C       is to be call
02BAF0:  65 64 20 22 61 69 22 2E 20 20 54 68 65 20 20 6C    ed "ai".  The  l
02BB00:  69 6E 65 73 20 20 75 70 20 20 74 6F 20 20 22 65    ines  up  to  "e
02BB10:  6E 64 22 20 61 72 65 20 74 68 65 20 64 65 66 69    nd" are the defi
02BB20:  6E 69 74 69 6F 6E 20 6F 66 20 74 68 65 0D 0A 20    nition of the.. 
02BB30:  20 20 70 72 6F 63 65 64 75 72 65 2E 20 20 49 74      procedure.  It
02BB40:  20 77 6F 72 6B 73 20 74 68 65 20 73 61 6D 65 20     works the same 
02BB50:  77 61 79 20 20 61 73 20 20 61 20 73 75 62 72 6F    way  as  a subro
02BB60:  75 74 69 6E 65 2C 20 62 75 74 20 69 6E 73 74 65    utine, but inste
02BB70:  61 64 20 6F 66 20 74 79 70 69 6E 67 0D 0A 20 20    ad of typing..  
02BB80:  20 47 4F 53 55 42 20 31 30 30 20 74 6F 20 63 61     GOSUB 100 to ca
02BB90:  6C 6C 20 69 74 2C 20 77 65 20 6A 75 73 74 20 20    ll it, we just  
02BBA0:  74 79 70 65 20 61 69 2E 20 20 54 68 69 73 20 70    type ai.  This p
02BBB0:  61 72 74 69 63 75 6C 61 72 20 72 6F 75 74 69 6E    articular routin
02BBC0:  65 20 72 65 66 65 72 73 20 74 6F 0D 0A 20 20 20    e refers to..   
02BBD0:  74 77 6F 20 6F 74 68 65 72 73 2C 20 70 61 72 73    two others, pars
02BBE0:  65 20 61 6E 64 20 73 70 65 61 6B 2C 20 77 68 69    e and speak, whi
02BBF0:  63 68 20 77 65 20 64 65 66 69 6E 65 20 6C 61 74    ch we define lat
02BC00:  6F 6D 6D 61 6E 64 20 22 61 69 22 2E 20 20 49 66    ommand "ai".  If
02BC10:  20 61 6C 6C 20 69 73 0D 0A 20 20 20 77 65 6C 6C     all is..   well
02BC20:  2C 20 79 6F 75 20 77 69 6C 6C 20 62 65 20 61 62    , you will be ab
02BC30:  6C 65 20 20 74 6F 20 20 74 79 70 65 20 20 73 65    le  to  type  se
02BC40:  6E 74 65 6E 63 65 73 20 20 61 6E 64 20 74 68 65    ntences  and the
02BC50:  20 63 6F 6D 70 75 74 65 72 20 77 69 6C 6C 20 72     computer will r
02BC60:  65 73 70 6F 6E 64 0D 0A 20 20 20 77 69 74 68 20    espond..   with 
02BC70:  72 61 6E 64 6F 6D 20 67 69 62 62 65 72 69 73 68    random gibberish
02BC80:  20 62 61 73 65 64 20 6F 6E 20 77 68 61 74 20 79     based on what y
02BC90:  6F 75 20 68 61 76 65 20 74 79 70 65 64 2E 20 20    ou have typed.  
02BCA0:  4C 6F 67 6F 27 73 20 65 72 72 6F 72 20 6D 65 73    Logo's error mes
02BCB0:  73 61 67 65 73 0D 0A 20 20 20 61 72 65 20 75 73    sages..   are us
02BCC0:  75 61 6C 6C 79 20 76 65 72 79 20 68 65 6C 70 66    ually very helpf
02BCD0:  75 6C 2C 20 73 6F 20 79 6F 75 20 77 69 6C 6C 20    ul, so you will 
02BCE0:  62 65 20 61 62 6C 65 20 74 6F 20 63 6F 72 72 65    be able to corre
02BCF0:  63 74 20 61 6E 79 20 6D 69 73 74 61 6B 65 73 20    ct any mistakes 
02BD00:  77 69 74 68 0D 0A 20 20 20 74 68 65 20 65 64 20    with..   the ed 
02BD10:  63 6F 6D 6D 61 6E 64 20 61 73 20 64 65 73 63 72    command as descr
02BD20:  69 62 65 64 20 61 62 6F 76 65 2E 0D 0A 0D 0A 20    ibed above..... 
02BD30:  20 20 3C 3C 54 68 65 20 74 77 6F 20 6C 69 73 74      <<The two list
02BD40:  69 6E 67 73 20 61 72 65 20 20 73 61 76 65 64 20    ings are  saved 
02BD50:  20 6F 6E 20 20 74 68 69 73 20 20 64 69 73 63 20     on  this  disc 
02BD60:  20 61 73 20 41 49 36 2E 4C 4F 47 20 61 6E 64 20     as AI6.LOG and 
02BD70:  36 34 4B 42 49 54 53 2E 4C 4F 47 2E 0D 0A 20 20    64KBITS.LOG...  
02BD80:  20 43 6F 70 79 20 74 68 65 6D 20 74 6F 20 79 6F     Copy them to yo
02BD90:  75 72 20 77 6F 72 6B 69 6E 67 20 64 69 73 63 2C    ur working disc,
02BDA0:  20 73 74 61 72 74 20 20 4C 6F 67 6F 2C 20 20 61     start  Logo,  a
02BDB0:  6E 64 20 6C 6F 61 64 20 74 68 65 20 6D 61 69 6E    nd load the main
02BDC0:  20 70 72 6F 67 72 61 6D 20 62 79 0D 0A 20 20 20     program by..   
02BDD0:  74 79 70 69 6E 67 20 6C 6F 61 64 20 22 61 69 36    typing load "ai6
02BDE0:  20 61 6E 64 20 70 72 65 73 73 69 6E 67 20 72 65     and pressing re
02BDF0:  74 75 72 6E 2E 20 20 49 66 20 79 6F 75 20 61 72    turn.  If you ar
02BE00:  65 72 2E 20 20 49 74 20 61 6C 73 6F 20 63 61 6C    er.  It also cal
02BE10:  6C 73 20 69 74 73 65 6C 66 2C 0D 0A 20 20 20 69    ls itself,..   i
02BE20:  6E 20 74 68 65 20 6C 61 73 74 20 6C 69 6E 65 20    n the last line 
02BE30:  62 65 66 6F 72 65 20 74 68 65 20 20 65 6E 64 2E    before the  end.
02BE40:  20 20 20 54 68 69 73 20 20 6D 65 61 6E 73 20 74       This  means t
02BE50:  68 65 20 70 72 6F 67 72 61 6D 20 67 6F 65 73 20    he program goes 
02BE60:  72 6F 75 6E 64 20 61 6E 64 0D 0A 20 20 20 72 6F    round and..   ro
02BE70:  75 6E 64 20 75 6E 74 69 6C 20 77 65 20 70 72 65    und until we pre
02BE80:  73 73 20 65 73 63 61 70 65 2E 0D 0A 0D 0A 20 20    ss escape.....  
02BE90:  20 41 6C 6C 20 6F 66 20 74 68 6F 73 65 20 64 6F     All of those do
02BEA0:  75 62 6C 65 20 71 75 6F 74 65 20 73 69 67 6E 73    uble quote signs
02BEB0:  20 61 74 20 20 74 68 65 20 20 73 74 61 72 74 2C     at  the  start,
02BEC0:  20 20 62 75 74 20 6E 6F 74 20 74 68 65 20 65 6E      but not the en
02BED0:  64 2C 20 6F 66 20 77 6F 72 64 73 0D 0A 20 20 20    d, of words..   
02BEE0:  61 72 65 20 61 63 74 75 61 6C 6C 79 20 63 6F 72    are actually cor
02BEF0:  72 65 63 74 2E 20 20 54 72 79 20 74 6F 20 67 65    rect.  Try to ge
02BF00:  74 20 74 68 65 20 20 73 70 61 63 69 6E 67 20 20    t the  spacing  
02BF10:  74 68 65 20 73 61 6D 65 20 61 73 20 69 74 20 69    the same as it i
02BF20:  73 20 70 72 69 6E 74 65 64 3A 0D 0A 20 20 20 74    s printed:..   t
02BF30:  68 65 72 65 20 61 72 65 20 6E 6F 20 73 70 61 63    here are no spac
02BF40:  65 73 20 62 65 74 77 65 65 6E 20 74 68 65 20 20    es between the  
02BF50:  71 75 6F 74 65 73 20 20 6F 72 20 63 6F 6C 6F 6E    quotes  or colon
02BF60:  73 20 61 6E 64 20 74 68 65 20 66 6F 6C 6C 6F 77    s and the follow
02BF70:  69 6E 67 20 77 6F 72 64 2E 0D 0A 20 20 20 49 74    ing word...   It
02BF80:  20 69 73 20 69 6D 70 6F 72 74 61 6E 74 20 74 6F     is important to
02BF90:  20 74 79 70 65 20 74 68 65 20 73 70 61 63 65 73     type the spaces
02BFA0:  20 20 61 74 20 20 74 68 65 20 20 73 74 61 72 74      at  the  start
02BFB0:  73 20 6F 66 20 74 68 65 20 6C 69 6E 65 73 2E 20    s of the lines. 
02BFC0:  20 54 68 69 73 20 69 73 0D 0A 20 20 20 73 6F 20     This is..   so 
02BFD0:  20 74 68 61 74 20 20 4C 6F 67 6F 20 20 72 65 63     that  Logo  rec
02BFE0:  6F 67 6E 69 7A 65 73 20 20 74 68 61 74 20 20 20    ognizes  that   
02BFF0:  74 68 65 20 20 20 69 6E 64 65 6E 74 65 64 20 20    the   indented  
02C000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02C010:  25 00 01 00 02 09 4E E5 25 00 C9 02 00 00 00 02    %.....N.%.......
02C020:  25 00 C5 02 00 00 00 02 25 00 C1 02 00 00 00 02    %.......%.......
02C030:  25 00 C6 02 00 00 00 02 25 00 C2 02 00 00 00 02    %.......%.......
02C040:  25 00 C7 02 00 00 00 02 25 00 C3 02 00 00 00 02    %.......%.......
02C050:  25 00 C8 02 00 00 00 02 25 00 C4 02 00 00 00 02    %.......%.......
02C060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C0F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C100:  20 74 6F 20 62 65 20 74 68 65 20 66 69 72 73 74     to be the first
02C110:  0D 0A 20 20 20 77 6F 72 64 20 69 6E 20 74 68 65    ..   word in the
02C120:  20 73 65 6E 74 65 6E 63 65 20 22 6C 69 73 74 22     sentence "list"
02C130:  2E 20 20 54 68 65 20 20 6E 65 78 74 20 20 6C 69    .  The  next  li
02C140:  6E 65 20 69 6E 63 72 65 61 73 65 73 20 70 6F 69    ne increases poi
02C150:  6E 74 65 72 2E 20 20 4E 6F 74 65 20 68 6F 77 0D    nter.  Note how.
02C160:  0A 20 20 20 77 65 20 61 72 65 20 75 73 69 6E 67    .   we are using
02C170:  20 74 68 65 20 6E 61 6D 65 20 70 72 65 63 65 64     the name preced
02C180:  65 64 20 62 79 20 20 20 64 6F 75 62 6C 65 20 20    ed by   double  
02C190:  71 75 6F 74 65 73 20 74 6F 20 74 65 6C 6C 20 22    quotes to tell "
02C1A0:  6D 61 6B 65 22 20 74 68 65 20 6E 61 6D 65 0D 0A    make" the name..
02C1B0:  20 20 20 6F 66 20 74 68 65 20 76 61 72 69 61 62       of the variab
02C1C0:  6C 65 2C 20 61 6E 64 20 74 68 65 20 6E 61 6D 65    le, and the name
02C1D0:  20 70 72 65 63 65 64 65 64 20 62 79 20 20 61 20     preceded by  a 
02C1E0:  63 6F 6C 6F 6E 20 74 6F 20 75 73 65 20 74 68 65    colon to use the
02C1F0:  20 76 61 6C 75 65 20 6F 66 20 74 68 65 0D 0A 20     value of the.. 
02C200:  20 20 76 61 72 69 61 62 6C 65 2E 20 20 54 68 65      variable.  The
02C210:  20 6E 65 78 74 20 6C 69 6E 65 20 73 65 74 73 20     next line sets 
02C220:  78 20 74 6F 20 74 68 65 20 74 68 65 20 6E 65 78    x to the the nex
02C230:  74 20 77 6F 72 64 20 69 6E 20 74 68 65 20 73 65    t word in the se
02C240:  6E 74 65 6E 63 65 2E 0D 0A 0D 0A 20 20 20 54 68    ntence.....   Th
02C250:  65 20 22 69 66 22 20 73 74 61 74 65 6D 65 6E 74    e "if" statement
02C260:  20 61 6E 64 20 74 68 65 20 6E 65 78 74 20 20 6C     and the next  l
02C270:  69 6E 65 20 20 61 72 65 20 20 63 72 75 63 69 61    ine  are  crucia
02C280:  6C 2E 20 20 49 67 6E 6F 72 65 20 74 68 65 20 22    l.  Ignore the "
02C290:  69 66 22 20 6C 69 6E 65 0D 0A 20 20 20 66 6F 72    if" line..   for
02C2A0:  20 74 68 65 20 6D 6F 6D 65 6E 74 2E 20 20 54 68     the moment.  Th
02C2B0:  65 20 6E 65 78 74 20 6C 69 6E 65 20 69 73 20 63    e next line is c
02C2C0:  72 65 61 74 69 6E 67 20 74 68 65 20 6C 69 6E 6B    reating the link
02C2D0:  20 74 68 61 74 20 77 69 6C 6C 20 6C 65 61 64 20     that will lead 
02C2E0:  75 73 20 66 72 6F 6D 0D 0A 20 20 20 74 68 65 20    us from..   the 
02C2F0:  77 6F 72 64 20 69 6E 20 77 20 74 6F 20 74 68 65    word in w to the
02C300:  65 20 63 6F 75 6E 74 0D 0A 20 20 20 63 6F 6D 6D    e count..   comm
02C310:  61 6E 64 20 6E 65 65 64 73 20 74 6F 20 6C 6F 6F    and needs to loo
02C320:  6B 20 61 74 20 20 74 68 65 20 20 76 61 6C 75 65    k at  the  value
02C330:  20 20 6F 66 20 20 75 73 65 72 69 6E 70 75 74 20      of  userinput 
02C340:  20 74 6F 20 73 65 65 20 68 6F 77 20 6D 61 6E 79     to see how many
02C350:  20 77 6F 72 64 73 0D 0A 20 20 20 74 68 65 72 65     words..   there
02C360:  20 61 72 65 2C 20 73 6F 20 74 68 65 20 6E 61 6D     are, so the nam
02C370:  65 20 69 73 20 70 72 65 63 65 64 65 64 20 62 79    e is preceded by
02C380:  20 61 20 63 6F 6C 6F 6E 2E 0D 0A 0D 0A 20 20 20     a colon.....   
02C390:  50 55 4E 43 54 55 41 54 49 4F 4E 20 45 58 45 52    PUNCTUATION EXER
02C3A0:  43 49 53 45 0D 0A 20 20 20 54 68 65 20 64 69 66    CISE..   The dif
02C3B0:  66 65 72 65 6E 63 65 20 62 65 74 77 65 65 6E 20    ference between 
02C3C0:  74 68 65 20 64 6F 75 62 6C 65 20 71 75 6F 74 65    the double quote
02C3D0:  73 20 20 61 6E 64 20 74 68 65 20 63 6F 6C 6F 6E    s  and the colon
02C3E0:  20 69 73 20 76 65 72 79 20 69 6D 70 6F 72 74 61     is very importa
02C3F0:  6E 74 2E 0D 0A 20 20 20 53 74 61 72 74 20 75 70    nt...   Start up
02C400:  20 4C 6F 67 6F 20 61 6E 64 20 74 79 70 65 20 74     Logo and type t
02C410:  68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 6C 69 6E    he following lin
02C420:  65 73 3A 0D 0A 0D 0A 20 20 20 20 20 6D 61 6B 65    es:....     make
02C430:  20 22 66 72 65 64 20 22 61 6C 62 65 72 74 0D 0A     "fred "albert..
02C440:  20 20 20 20 20 70 72 20 3A 66 72 65 64 0D 0A 0D         pr :fred...
02C450:  0A 20 20 20 54 68 65 20 77 6F 72 64 20 22 61 6C    .   The word "al
02C460:  62 65 72 74 22 20 77 69 6C 6C 20 62 65 20 70 72    bert" will be pr
02C470:  69 6E 74 65 64 20 20 75 70 2C 20 20 62 65 63 61    inted  up,  beca
02C480:  75 73 65 20 20 74 68 61 74 20 20 69 73 20 74 68    use  that  is th
02C490:  65 20 76 61 6C 75 65 20 6F 66 20 74 68 65 0D 0A    e value of the..
02C4A0:  20 20 20 76 61 72 69 61 62 6C 65 20 22 66 72 65       variable "fre
02C4B0:  64 22 2E 20 20 4E 65 78 74 20 74 72 79 20 74 68    d".  Next try th
02C4C0:  65 73 65 20 74 77 6F 3A 0D 0A 0D 0A 20 20 20 20    ese two:....    
02C4D0:  20 6D 61 6B 65 20 3A 66 72 65 64 20 22 67 65 6F     make :fred "geo
02C4E0:  72 67 65 0D 0A 20 20 20 20 20 70 72 20 3A 61 6C    rge..     pr :al
02C4F0:  62 65 72 74 0D 0A 0D 0A 20 20 20 4E 6F 74 69 63    bert....   Notic
02C500:  65 20 75 73 69 6E 67 20 43 50 2F 4D 20 32 2E 32    e using CP/M 2.2
02C510:  2C 20 79 6F 75 20 77 69 6C 6C 0D 0A 20 20 20 6E    , you will..   n
02C520:  65 65 64 20 74 6F 20 6C 6F 61 64 20 36 34 4B 42    eed to load 64KB
02C530:  49 54 53 20 61 73 20 77 65 6C 6C 2E 3E 3E 0D 0A    ITS as well.>>..
02C540:  0D 0A 20 20 20 53 48 4F 52 54 4C 49 53 54 49 4E    ..   SHORTLISTIN
02C550:  47 0D 0A 20 20 20 54 68 65 20 41 49 20 70 72 6F    G..   The AI pro
02C560:  67 72 61 6D 20 69 73 20 6D 75 63 68 20 73 68 6F    gram is much sho
02C570:  72 74 65 72 20 77 68 65 6E 20 20 77 72 69 74 74    rter when  writt
02C580:  65 6E 20 69 6E 20 4C 6F 67 6F 20 63 6F 6D 70 61    en in Logo compa
02C590:  72 65 64 20 74 6F 20 74 68 65 20 42 41 53 49 43    red to the BASIC
02C5A0:  0D 0A 20 20 20 76 65 72 73 69 6F 6E 2E 20 20 54    ..   version.  T
02C5B0:  68 69 73 20 69 73 20 62 65 63 61 75 73 65 20 4C    his is because L
02C5C0:  6F 67 6F 20 20 77 6F 72 6B 73 20 20 69 6E 20 20    ogo  works  in  
02C5D0:  61 20 63 6F 6D 70 6C 65 74 65 6C 79 20 64 69 66    a completely dif
02C5E0:  66 65 72 65 6E 74 20 77 61 79 2E 20 20 49 74 0D    ferent way.  It.
02C5F0:  0A 20 20 20 77 61 73 20 64 65 72 69 76 65 64 20    .   was derived 
02C600:  66 72 6F 6D 20 74 68 65 20 20 6C 61 6E 67 75 61    from the  langua
02C610:  67 65 20 20 4C 49 53 50 2C 20 20 77 68 69 63 68    ge  LISP,  which
02C620:  20 20 77 61 73 20 64 65 76 65 6C 6F 70 65 64 20      was developed 
02C630:  66 6F 72 20 61 72 74 69 66 69 63 69 61 6C 0D 0A    for artificial..
02C640:  20 20 20 69 6E 74 65 6C 6C 69 67 65 6E 63 65 20       intelligence 
02C650:  70 72 6F 63 65 73 73 65 73 2E 20 20 4C 49 53 50    processes.  LISP
02C660:  20 73 74 61 6E 64 73 20 20 66 6F 72 20 20 4C 49     stands  for  LI
02C670:  53 74 20 50 72 6F 63 65 73 73 69 6E 67 2E 20 20    St Processing.  
02C680:  57 68 65 72 65 61 73 20 42 41 53 49 43 0D 0A 20    Whereas BASIC.. 
02C690:  20 20 75 73 65 73 20 6E 75 6D 62 65 72 73 2C 20      uses numbers, 
02C6A0:  73 74 72 69 6E 67 73 20 61 6E 64 20 61 72 72 61    strings and arra
02C6B0:  79 73 2C 20 4C 49 53 50 20 61 6E 64 20 20 4C 6F    ys, LISP and  Lo
02C6C0:  67 6F 20 75 73 65 20 61 20 66 6F 72 6D 20 6F 66    go use a form of
02C6D0:  20 64 61 74 61 20 63 61 6C 6C 65 64 0D 0A 20 20     data called..  
02C6E0:  20 74 68 65 20 6C 69 73 74 2E 20 20 45 76 65 72     the list.  Ever
02C6F0:  79 74 68 69 6E 67 20 69 6E 20 74 68 65 20 6C 61    ything in the la
02C700:  65 20 74 68 61 74 20 74 68 65 20 77 6F 72 64 20    e that the word 
02C710:  22 66 72 65 64 22 20 68 61 64 20 61 20 63 6F 6C    "fred" had a col
02C720:  6F 6E 20 69 6E 20 66 72 6F 6E 74 20 74 68 69 73    on in front this
02C730:  20 74 69 6D 65 2E 20 20 54 68 69 73 20 74 69 6D     time.  This tim
02C740:  65 20 74 68 65 0D 0A 20 20 20 77 6F 72 64 20 22    e the..   word "
02C750:  67 65 6F 72 67 65 22 20 69 73 20 70 72 69 6E 74    george" is print
02C760:  65 64 20 75 70 2E 20 20 20 53 6F 6D 65 68 6F 77    ed up.   Somehow
02C770:  20 20 74 68 65 20 22 61 6C 62 65 72 74 22 20 76      the "albert" v
02C780:  61 72 69 61 62 6C 65 20 68 61 73 20 61 63 71 75    ariable has acqu
02C790:  69 72 65 64 0D 0A 20 20 20 74 68 65 20 76 61 6C    ired..   the val
02C7A0:  75 65 20 22 67 65 6F 72 67 65 22 2E 20 20 52 65    ue "george".  Re
02C7B0:  6D 65 6D 62 65 72 20 74 68 61 74 20 74 68 65 20    member that the 
02C7C0:  20 6D 61 6B 65 20 20 63 6F 6D 6D 61 6E 64 20 6E     make  command n
02C7D0:  65 65 64 73 20 74 6F 20 62 65 20 74 6F 6C 64 20    eeds to be told 
02C7E0:  74 68 65 0D 0A 20 20 20 6E 61 6D 65 20 6F 66 20    the..   name of 
02C7F0:  74 68 65 20 76 61 72 69 61 62 6C 65 20 74 6F 20    the variable to 
02C800:  73 65 74 2E 20 20 49 6E 73 74 65 61 64 20 6F 66    set.  Instead of
02C810:  20 20 22 66 72 65 64 20 77 65 20 70 75 74 20 3A      "fred we put :
02C820:  66 72 65 64 2C 20 73 6F 20 74 68 65 20 76 61 6C    fred, so the val
02C830:  75 65 0D 0A 20 20 20 6F 66 20 66 72 65 64 2C 20    ue..   of fred, 
02C840:  77 68 69 63 68 20 69 73 20 22 61 6C 62 65 72 74    which is "albert
02C850:  22 2C 20 77 61 73 20 75 73 65 64 20 61 73 20 74    ", was used as t
02C860:  68 65 20 6E 61 6D 65 20 6F 66 20 74 68 65 20 76    he name of the v
02C870:  61 72 69 61 62 6C 65 20 74 6F 20 73 65 74 2E 0D    ariable to set..
02C880:  0A 0D 0A 20 20 20 54 68 69 73 20 69 73 20 73 6F    ...   This is so
02C890:  6D 65 74 68 69 6E 67 20 77 68 69 63 68 20 79 6F    mething which yo
02C8A0:  75 20 6A 75 73 74 20 63 61 6E 6E 6F 74 20 64 6F    u just cannot do
02C8B0:  20 20 69 6E 20 42 41 53 49 43 2C 20 61 6E 64 20      in BASIC, and 
02C8C0:  77 65 20 77 69 6C 6C 20 62 65 20 75 73 69 6E 67    we will be using
02C8D0:  0D 0A 20 20 20 69 74 20 74 6F 20 66 75 6C 6C 20    ..   it to full 
02C8E0:  65 66 66 65 63 74 2E 0D 0A 0D 0A 20 20 20 50 41    effect.....   PA
02C8F0:  52 53 45 20 54 48 45 20 4D 55 53 54 41 52 44 0D    RSE THE MUSTARD.
02C900:  6E 67 75 61 67 65 2C 20 65 76 65 6E 20 74 68 65    nguage, even the
02C910:  20 70 72 6F 63 65 64 75 72 65 73 20 61 6E 64 20     procedures and 
02C920:  70 72 6F 67 72 61 6D 73 20 77 65 0D 0A 20 20 20    programs we..   
02C930:  64 65 66 69 6E 65 20 61 72 65 20 66 6F 72 6D 65    define are forme
02C940:  64 20 66 72 6F 6D 20 6C 69 73 74 73 2E 20 20 20    d from lists.   
02C950:  54 68 69 73 20 20 6D 65 61 6E 73 20 20 74 68 61    This  means  tha
02C960:  74 20 72 65 61 6C 6C 79 20 61 64 76 61 6E 63 65    t really advance
02C970:  64 20 70 72 6F 67 72 61 6D 73 0D 0A 20 20 20 63    d programs..   c
02C980:  61 6E 20 72 65 77 72 69 74 65 20 74 68 65 6D 73    an rewrite thems
02C990:  65 6C 76 65 73 20 77 68 69 6C 65 20 74 68 65 79    elves while they
02C9A0:  20 61 72 65 20 72 75 6E 6E 69 6E 67 21 0D 0A 0D     are running!...
02C9B0:  0A 20 20 20 4C 6F 6F 6B 20 61 74 20 74 68 65 20    .   Look at the 
02C9C0:  66 69 72 73 74 20 70 72 6F 63 65 64 75 72 65 20    first procedure 
02C9D0:  77 65 20 20 64 65 66 69 6E 65 2C 20 20 22 74 6F    we  define,  "to
02C9E0:  20 20 61 69 22 2E 20 20 54 68 65 20 66 69 72 73      ai".  The firs
02C9F0:  74 20 6C 69 6E 65 20 6F 66 20 74 68 69 73 0D 0A    t line of this..
02CA00:  20 20 20 68 61 73 20 4C 6F 67 6F 27 73 20 65 71       has Logo's eq
02CA10:  75 69 76 61 6C 65 6E 74 20 6F 66 20 74 68 65 20    uivalent of the 
02CA20:  49 4E 50 55 54 20 63 6F 6D 6D 61 6E 64 2E 20 20    INPUT command.  
02CA30:  54 68 65 20 22 72 6C 22 20 63 6F 6D 6D 61 6E 64    The "rl" command
02CA40:  20 72 65 61 64 73 20 61 20 6C 69 6E 65 0D 0A 20     reads a line.. 
02CA50:  20 20 6F 66 20 69 6E 70 75 74 20 66 72 6F 6D 20      of input from 
02CA60:  74 68 65 20 75 73 65 72 2E 20 20 54 68 65 20 6D    the user.  The m
02CA70:  61 6B 65 20 20 63 6F 6D 6D 61 6E 64 20 20 69 73    ake  command  is
02CA80:  20 66 6F 6C 6C 6F 77 65 64 20 62 79 20 61 20 76     followed by a v
02CA90:  61 72 69 61 62 6C 65 20 6E 61 6D 65 0D 0A 20 20    ariable name..  
02CAA0:  20 61 6E 64 20 74 68 65 6E 20 74 68 65 20 76 61     and then the va
02CAB0:  6C 75 65 20 74 6F 20 62 65 20 74 61 6B 65 6E 20    lue to be taken 
02CAC0:  62 79 20 20 74 68 65 20 76 61 72 69 61 62 6C 65    by  the variable
02CAD0:  2E 20 20 49 66 20 74 68 65 20 76 61 6C 75 65 20    .  If the value 
02CAE0:  74 6F 20 62 65 20 74 61 6B 65 6E 0D 0A 20 20 20    to be taken..   
02CAF0:  69 73 20 61 20 63 6F 6D 6D 61 6E 64 2C 20 74 68    is a command, th
02CB00:  0A 20 20 20 4C 65 74 20 75 73 20 6C 6F 6F 6B 20    .   Let us look 
02CB10:  61 74 20 70 61 72 73 65 20 20 6E 6F 77 2C 20 20    at parse  now,  
02CB20:  77 68 69 63 68 20 20 61 6E 61 6C 79 73 65 73 20    which  analyses 
02CB30:  20 74 68 65 20 20 73 65 6E 74 65 6E 63 65 20 61     the  sentence a
02CB40:  6E 64 20 72 65 63 6F 72 64 73 20 74 68 65 0D 0A    nd records the..
02CB50:  20 20 20 6C 69 6E 6B 73 20 62 65 74 77 65 65 6E       links between
02CB60:  20 77 6F 72 64 73 2E 20 20 54 68 65 20 66 69 72     words.  The fir
02CB70:  73 74 20 6C 69 6E 65 20 6F 66 20 20 70 61 72 73    st line of  pars
02CB80:  65 20 73 65 74 73 20 74 68 65 20 22 6C 69 73 74    e sets the "list
02CB90:  22 20 76 61 72 69 61 62 6C 65 20 74 6F 0D 0A 20    " variable to.. 
02CBA0:  20 20 61 20 6E 65 77 20 76 61 6C 75 65 2E 20 20      a new value.  
02CBB0:  54 68 65 20 22 73 65 22 20 63 6F 6D 6D 61 6E 64    The "se" command
02CBC0:  20 66 6F 72 6D 73 20 61 20 73 65 6E 74 65 6E 63     forms a sentenc
02CBD0:  65 2C 20 61 20 6C 69 73 74 20 6F 66 20 77 6F 72    e, a list of wor
02CBE0:  64 73 2C 20 66 72 6F 6D 20 74 68 65 0D 0A 20 20    ds, from the..  
02CBF0:  20 76 61 6C 75 65 73 20 79 6F 75 20 67 69 76 65     values you give
02CC00:  20 69 74 2E 20 20 20 54 68 65 20 20 63 6F 6D 6D     it.   The  comm
02CC10:  61 6E 64 20 20 61 6E 64 20 20 70 61 72 61 6D 65    and  and  parame
02CC20:  74 65 72 73 20 20 61 72 65 20 20 61 6C 6C 20 77    ters  are  all w
02CC30:  69 74 68 69 6E 20 72 6F 75 6E 64 0D 0A 20 20 20    ithin round..   
02CC40:  62 72 61 63 6B 65 74 73 20 73 6F 20 74 68 61 74    brackets so that
02CC50:  20 73 65 20 6B 6E 6F 77 73 20 77 68 65 72 65 20     se knows where 
02CC60:  74 6F 20 73 74 6F 70 2E 20 20 57 65 20 67 69 76    to stop.  We giv
02CC70:  65 20 69 74 20 22 54 68 65 53 74 61 72 74 22 2C    e it "TheStart",
02CC80:  20 74 68 65 20 76 61 6C 75 65 0D 0A 20 20 20 6F     the value..   o
02CC90:  66 20 22 75 73 65 72 69 6E 70 75 74 22 20 61 6E    f "userinput" an
02CCA0:  64 20 22 54 68 65 45 6E 64 22 2C 20 65 66 66 65    d "TheEnd", effe
02CCB0:  63 74 69 76 65 6C 79 20 20 61 64 64 69 6E 67 20    ctively  adding 
02CCC0:  20 74 68 65 73 65 20 20 74 77 6F 20 77 6F 72 64     these  two word
02CCD0:  73 20 74 6F 20 65 61 63 68 0D 0A 20 20 20 65 6E    s to each..   en
02CCE0:  64 20 6F 66 20 6F 75 72 20 6F 72 69 67 69 6E 61    d of our origina
02CCF0:  6C 20 73 65 6E 74 65 6E 63 65 2E 20 20 20 57 65    l sentence.   We
02CD00:  65 20 72 65 73 75 6C 74 20 6F 66 20 74 68 61 74    e result of that
02CD10:  20 63 6F 6D 6D 61 6E 64 20 20 69 73 20 75 73 65     command  is use
02CD20:  64 20 61 73 20 74 68 65 20 76 61 6C 75 65 2E 20    d as the value. 
02CD30:  20 48 65 6E 63 65 20 74 68 65 0D 0A 20 20 20 66     Hence the..   f
02CD40:  69 72 73 74 20 6C 69 6E 65 20 74 61 6B 65 73 20    irst line takes 
02CD50:  61 20 20 6C 69 6E 65 20 20 6F 66 20 20 69 6E 70    a  line  of  inp
02CD60:  75 74 20 20 66 72 6F 6D 20 20 74 68 65 20 20 75    ut  from  the  u
02CD70:  73 65 72 2C 20 20 61 6E 64 20 20 70 75 74 73 20    ser,  and  puts 
02CD80:  69 74 20 69 6E 20 74 68 65 0D 0A 20 20 20 75 73    it in the..   us
02CD90:  65 72 69 6E 70 75 74 20 76 61 72 69 61 62 6C 65    erinput variable
02CDA0:  2E 0D 0A 0D 0A 20 20 20 41 63 74 75 61 6C 6C 79    .....   Actually
02CDB0:  20 72 6C 20 73 74 61 6E 64 73 20 66 6F 72 20 20     rl stands for  
02CDC0:  22 72 65 61 64 20 20 6C 69 73 74 22 2E 20 20 20    "read  list".   
02CDD0:  54 68 65 20 20 73 74 75 66 66 20 20 74 79 70 65    The  stuff  type
02CDE0:  64 20 20 62 79 20 20 74 68 65 20 75 73 65 72 20    d  by  the user 
02CDF0:  69 73 0D 0A 20 20 20 74 72 65 61 74 65 64 20 61    is..   treated a
02CE00:  73 20 61 20 6C 69 73 74 20 6F 66 20 20 77 6F 72    s a list of  wor
02CE10:  64 73 2E 20 20 20 4C 6F 67 6F 20 20 69 73 20 20    ds.   Logo  is  
02CE20:  70 61 72 74 69 63 75 6C 61 72 6C 79 20 67 6F 6F    particularly goo
02CE30:  64 20 61 74 20 6D 61 6E 69 70 75 6C 61 74 69 6E    d at manipulatin
02CE40:  67 0D 0A 20 20 20 74 68 65 73 65 2E 20 20 54 68    g..   these.  Th
02CE50:  65 20 6E 65 78 74 20 6C 69 6E 65 20 75 73 65 73    e next line uses
02CE60:  20 74 68 65 20 20 22 63 6F 75 6E 74 22 20 20 63     the  "count"  c
02CE70:  6F 6D 6D 61 6E 64 20 20 77 68 69 63 68 20 66 69    ommand  which fi
02CE80:  6E 64 73 20 6F 75 74 20 68 6F 77 20 6D 61 6E 79    nds out how many
02CE90:  0D 0A 20 20 20 77 6F 72 64 73 20 74 68 65 72 65    ..   words there
02CEA0:  20 61 72 65 20 69 6E 20 61 20 20 6C 69 73 74 2E     are in a  list.
02CEB0:  20 20 20 28 49 6E 20 20 42 41 53 49 43 20 20 77       (In  BASIC  w
02CEC0:  65 20 20 6E 65 65 64 65 64 20 20 61 20 63 6F 75    e  needed  a cou
02CED0:  70 6C 65 20 6F 66 20 6C 69 6E 65 73 20 6F 66 0D    ple of lines of.
02CEE0:  0A 20 20 20 70 72 6F 67 72 61 6D 20 74 6F 20 64    .   program to d
02CEF0:  6F 20 74 68 69 73 2E 29 20 20 49 66 20 74 68 65    o this.)  If the
02CF00:  20 20 75 73 65 20 20 74 68 65 73 65 20 20 64 75      use  these  du
02CF10:  6D 6D 79 20 20 77 6F 72 64 73 20 74 6F 20 6D 61    mmy  words to ma
02CF20:  72 6B 20 77 68 69 63 68 0D 0A 20 20 20 77 6F 72    rk which..   wor
02CF30:  64 73 20 63 61 6E 20 73 74 61 72 74 20 61 6E 64    ds can start and
02CF40:  20 65 6E 64 20 73 65 6E 74 65 6E 63 65 73 2E 0D     end sentences..
02CF50:  0A 0D 0A 20 20 20 41 66 74 65 72 20 73 65 74 74    ...   After sett
02CF60:  69 6E 67 20 70 6F 69 6E 74 65 72 20 74 6F 20 31    ing pointer to 1
02CF70:  2C 20 20 77 65 20 20 72 65 70 65 61 74 20 20 61    ,  we  repeat  a
02CF80:  20 20 6C 69 73 74 20 20 6F 66 20 63 6F 6D 6D 61      list  of comma
02CF90:  6E 64 73 2E 20 20 54 68 65 20 6E 75 6D 62 65 72    nds.  The number
02CFA0:  0D 0A 20 20 20 61 66 74 65 72 20 74 68 65 20 72    ..   after the r
02CFB0:  65 70 65 61 74 20 63 6F 6D 6D 61 6E 64 20 73 68    epeat command sh
02CFC0:  6F 77 73 20 68 6F 77 20 6D 61 6E 79 20 74 69 6D    ows how many tim
02CFD0:  65 73 20 77 65 20 72 65 70 65 61 74 20 74 68 65    es we repeat the
02CFE0:  6D 20 28 69 6E 20 74 68 69 73 20 63 61 73 65 0D    m (in this case.
02CFF0:  0A 20 20 20 6F 6E 65 20 6C 65 73 73 20 74 68 61    .   one less tha
02D000:  6E 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20    n the number of 
02D010:  77 6F 72 64 73 20 20 69 6E 20 20 74 68 65 20 6C    words  in  the l
02D020:  69 73 74 29 2E 20 20 54 68 65 20 63 6F 6D 6D 61    ist).  The comma
02D030:  6E 64 73 20 74 6F 20 65 78 65 63 75 74 65 0D 0A    nds to execute..
02D040:  20 20 20 66 6F 6C 6C 6F 77 20 69 6E 20 61 20 6C       follow in a l
02D050:  69 73 74 20 65 6E 63 6C 6F 73 65 64 20 62 79 20    ist enclosed by 
02D060:  73 71 75 61 72 65 20 62 72 61 63 6B 65 74 73 2E    square brackets.
02D070:  0D 0A 0D 0A 20 20 20 49 6E 73 69 64 65 20 74 68    ....   Inside th
02D080:  65 20 6C 6F 6F 70 20 77 65 20 73 65 74 20 77 20    e loop we set w 
02D090:  74 6F 20 62 65 20 20 74 68 65 20 69 74 65 6D 20    to be  the item 
02D0A0:  6F 66 20 6F 75 72 20 73 65 6E 74 65 6E 63 65 20    of our sentence 
02D0B0:  22 6C 69 73 74 22 20 70 6F 69 6E 74 65 64 20 74    "list" pointed t
02D0C0:  6F 0D 0A 20 20 20 62 79 20 22 70 6F 69 6E 74 65    o..   by "pointe
02D0D0:  72 22 2E 20 20 41 73 20 70 6F 69 6E 74 65 72 20    r".  As pointer 
02D0E0:  73 74 61 72 74 73 20 6F 75 74 20 61 74 20 31 2C    starts out at 1,
02D0F0:  20 20 77 20 20 77 69 6C 6C 20 62 65 20 73 65 74      w  will be set
02D100:  20 73 65 6E 74 65 6E 63 65 20 20 68 61 73 20 20     sentence  has  
02D110:  61 74 20 20 6C 65 61 73 74 20 6F 6E 65 20 77 6F    at  least one wo
02D120:  72 64 2C 20 77 65 20 72 75 6E 20 74 68 65 0D 0A    rd, we run the..
02D130:  20 20 20 22 70 61 72 73 65 22 20 66 75 6E 63 74       "parse" funct
02D140:  69 6F 6E 2C 20 77 68 69 63 68 20 61 6E 61 6C 79    ion, which analy
02D150:  73 65 73 20 74 68 65 20 73 65 6E 74 65 6E 63 65    ses the sentence
02D160:  2C 20 72 65 6D 65 6D 62 65 72 69 6E 67 20 77 68    , remembering wh
02D170:  69 63 68 20 77 6F 72 64 73 20 63 61 6E 0D 0A 20    ich words can.. 
02D180:  20 20 66 6F 6C 6C 6F 77 20 77 68 69 63 68 2E 20      follow which. 
02D190:  20 54 68 65 6E 20 20 77 65 20 20 22 73 70 65 61     Then  we  "spea
02D1A0:  6B 22 2C 20 20 77 68 69 63 68 20 20 70 72 69 6E    k",  which  prin
02D1B0:  74 73 20 20 75 70 20 20 61 20 63 6F 6D 70 75 74    ts  up  a comput
02D1C0:  65 72 2D 67 65 6E 65 72 61 74 65 64 0D 0A 20 20    er-generated..  
02D1D0:  20 73 65 6E 74 65 6E 63 65 2C 20 61 6E 64 20 74     sentence, and t
02D1E0:  68 65 6E 20 77 65 20 6C 6F 6F 70 20 72 6F 75 6E    hen we loop roun
02D1F0:  64 20 62 79 20 65 78 65 63 75 74 69 6E 67 20 74    d by executing t
02D200:  68 65 20 22 61 69 22 20 70 72 6F 63 65 64 75 72    he "ai" procedur
02D210:  65 20 61 67 61 69 6E 2E 0D 0A 0D 0A 20 20 20 54    e again.....   T
02D220:  68 65 20 22 75 73 65 72 69 6E 70 75 74 22 20 76    he "userinput" v
02D230:  61 72 69 61 62 6C 65 20 68 61 73 20 61 70 70 65    ariable has appe
02D240:  61 72 65 64 20 74 77 69 63 65 20 20 73 6F 20 20    ared twice  so  
02D250:  66 61 72 2E 20 20 57 68 65 6E 20 69 74 20 77 61    far.  When it wa
02D260:  73 20 64 65 66 69 6E 65 64 0D 0A 20 20 20 74 68    s defined..   th
02D270:  65 20 6E 61 6D 65 20 77 61 73 20 70 72 65 63 65    e name was prece
02D280:  64 65 64 20 62 79 20 64 6F 75 62 6C 65 20 71 75    ded by double qu
02D290:  6F 74 65 73 2E 20 20 54 68 69 73 20 69 73 20 62    otes.  This is b
02D2A0:  65 63 61 75 73 65 20 69 74 20 69 73 20 74 68 65    ecause it is the
02D2B0:  20 6E 61 6D 65 20 6F 66 0D 0A 20 20 20 74 68 65     name of..   the
02D2C0:  20 76 61 72 69 61 62 6C 65 20 74 68 61 74 20 74     variable that t
02D2D0:  68 65 20 22 6D 61 6B 65 22 20 63 6F 6D 6D 61 6E    he "make" comman
02D2E0:  64 20 6E 65 65 64 73 2E 20 20 20 49 6E 20 74 68    d needs.   In th
02D2F0:  65 20 6F 74 68 65 72 20 63 61 73 65 2C 20 74 68    e other case, th
02D300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02D310:  26 00 01 00 02 09 4E E5 26 00 C3 02 00 00 00 02    &.....N.&.......
02D320:  26 00 C8 02 00 00 00 02 26 00 C4 02 00 00 00 02    &.......&.......
02D330:  26 00 C9 02 00 00 00 02 26 00 C5 02 00 00 00 02    &.......&.......
02D340:  26 00 C1 02 00 00 00 02 26 00 C6 02 00 00 00 02    &.......&.......
02D350:  26 00 C2 02 00 00 00 02 26 00 C7 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:  20 20 20 75 73 69 6E 67 20 74 68 65 20 6D 65 6D       using the mem
02D410:  62 65 72 70 20 63 6F 6D 6D 61 6E 64 20 74 6F 20    berp command to 
02D420:  73 65 65 20 20 69 66 20 20 74 68 65 20 20 77 6F    see  if  the  wo
02D430:  72 64 20 20 3A 78 20 20 69 73 20 6E 6F 74 20 61    rd  :x  is not a
02D440:  6C 72 65 61 64 79 20 69 6E 20 74 68 65 0D 0A 20    lready in the.. 
02D450:  20 20 6C 69 73 74 2E 0D 0A 0D 0A 20 20 20 48 4F      list.....   HO
02D460:  4D 45 57 4F 52 4B 20 41 53 53 49 47 4E 4D 45 4E    MEWORK ASSIGNMEN
02D470:  54 0D 0A 20 20 20 49 20 77 69 6C 6C 20 6C 65 61    T..   I will lea
02D480:  76 65 20 73 74 75 64 79 69 6E 67 20 74 68 65 20    ve studying the 
02D490:  72 65 73 74 20 6F 66 20 74 68 65 20 6C 69 73 74    rest of the list
02D4A0:  69 6E 67 20 74 6F 20 79 6F 75 2E 20 20 54 68 65    ing to you.  The
02D4B0:  20 73 70 65 61 6B 20 70 72 6F 63 65 64 75 72 65     speak procedure
02D4C0:  0D 0A 20 20 20 62 75 69 6C 64 73 20 75 70 20 61    ..   builds up a
02D4D0:  20 73 65 6E 74 65 6E 63 65 20 20 69 6E 20 20 78     sentence  in  x
02D4E0:  2C 20 20 73 74 61 72 74 69 6E 67 20 20 6F 66 66    ,  starting  off
02D4F0:  20 20 77 69 74 68 20 22 54 68 65 53 74 61 72 74      with "TheStart
02D500:  22 2E 20 20 54 68 65 20 61 64 64 77 6F 72 64 0D    ".  The addword.
02D510:  0A 20 20 20 72 6F 75 74 69 6E 65 20 74 61 6B 65    .   routine take
02D520:  73 20 61 20 72 61 6E 64 6F 6D 20 77 6F 72 64 20    s a random word 
02D530:  6F 75 74 20 6F 66 20 74 68 6F 73 65 20 20 74 68    out of those  th
02D540:  61 74 20 63 61 6E 20 66 6F 6C 6C 6F 77 20 77 2E    at can follow w.
02D550:  20 20 49 66 20 69 74 20 69 73 20 6E 6F 74 0D 0A      If it is not..
02D560:  20 20 20 22 54 68 65 45 6E 64 22 20 69 74 20 69       "TheEnd" it i
02D570:  73 20 61 64 64 65 64 20 69 74 20 74 6F 20 74 68    s added it to th
02D580:  65 20 73 65 6E 74 65 6E 63 65 20 61 6E 64 20 61    e sentence and a
02D590:  64 64 77 6F 72 64 20 69 73 20 63 61 6C 6C 65 64    ddword is called
02D5A0:  20 61 67 61 69 6E 2E 0D 0A 0D 0A 20 20 20 59 6F     again.....   Yo
02D5B0:  75 20 77 69 6C 6C 20 73 65 65 20 68 6F 77 20 76    u will see how v
02D5C0:  61 72 69 6F 75 73 20 66 65 61 74 75 72 65 73 20    arious features 
02D5D0:  6F 66 20 74 68 65 20 4C 6F 67 6F 20 6C 61 6E 67    of the Logo lang
02D5E0:  75 61 67 65 20 68 61 76 65 20 6D 61 64 65 20 69    uage have made i
02D5F0:  74 20 65 61 73 69 65 72 0D 0A 20 20 20 74 6F 20    t easier..   to 
02D600:  64 64 77 6F 72 64 0D 0A 20 20 6D 61 6B 65 20 22    ddword..  make "
02D610:  7A 20 74 68 69 6E 67 20 3A 77 0D 0A 20 20 6D 61    z thing :w..  ma
02D620:  6B 65 20 22 77 20 69 74 65 6D 20 28 28 72 61 6E    ke "w item ((ran
02D630:  64 6F 6D 20 63 6F 75 6E 74 20 3A 7A 29 20 2B 20    dom count :z) + 
02D640:  31 29 20 3A 7A 20 0D 0A 20 20 69 66 20 6E 6F 74    1) :z ..  if not
02D650:  20 28 3A 77 20 3D 20 22 54 68 65 45 6E 64 29 0D     (:w = "TheEnd).
02D660:  0A 20 20 20 20 5B 0D 0A 20 20 20 20 6D 61 6B 65    .    [..    make
02D670:  20 22 78 20 28 73 65 20 3A 78 20 3A 77 29 0D 0A     "x (se :x :w)..
02D680:  20 20 20 20 61 64 64 77 6F 72 64 0D 0A 20 20 20        addword..   
02D690:  20 5D 0D 0A 65 6E 64 0D 0A 1A 6C 20 0D 0A 20 20     ]..end...l ..  
02D6A0:  69 66 20 28 63 6F 75 6E 74 20 3A 75 73 65 72 69    if (count :useri
02D6B0:  6E 70 75 74 29 20 3E 20 30 20 5B 70 61 72 73 65    nput) > 0 [parse
02D6C0:  20 3A 75 73 65 72 69 6E 70 75 74 5D 20 0D 0A 20     :userinput] .. 
02D6D0:  20 73 70 65 61 6B 20 0D 0A 20 20 61 69 0D 0A 65     speak ..  ai..e
02D6E0:  6E 64 0D 0A 0D 0A 74 6F 20 70 61 72 73 65 20 3A    nd....to parse :
02D6F0:  6C 69 73 74 0D 0A 20 20 6D 61 6B 65 20 22 6C 69    list..  make "li
02D700:  65 72 20 3A 70 6F 69 6E 74 65 72 20 2B 20 31 20    er :pointer + 1 
02D710:  0D 0A 20 20 20 20 6D 61 6B 65 20 22 78 20 69 74    ..    make "x it
02D720:  65 6D 20 3A 70 6F 69 6E 74 65 72 20 3A 6C 69 73    em :pointer :lis
02D730:  74 20 0D 0A 20 20 20 20 69 66 20 6E 6F 74 20 28    t ..    if not (
02D740:  6D 65 6D 62 65 72 70 20 3A 78 20 74 68 69 6E 67    memberp :x thing
02D750:  20 3A 77 29 0D 0A 20 20 20 20 20 20 5B 0D 0A 20     :w)..      [.. 
02D760:  20 20 20 20 20 6D 61 6B 65 20 3A 77 20 28 73 65         make :w (se
02D770:  20 74 68 69 6E 67 20 3A 77 20 3A 78 29 0D 0A 20     thing :w :x).. 
02D780:  20 20 20 20 20 5D 0D 0A 20 20 20 20 5D 0D 0A 65         ]..    ]..e
02D790:  6E 64 0D 0A 0D 0A 74 6F 20 73 70 65 61 6B 0D 0A    nd....to speak..
02D7A0:  20 20 6D 61 6B 65 20 22 77 20 22 54 68 65 53 74      make "w "TheSt
02D7B0:  61 72 74 20 0D 0A 20 20 6D 61 6B 65 20 22 78 20    art ..  make "x 
02D7C0:  5B 5D 20 0D 0A 20 20 69 66 20 28 63 6F 75 6E 74    [] ..  if (count
02D7D0:  20 3A 54 68 65 53 74 61 72 74 29 20 3E 20 30 20     :TheStart) > 0 
02D7E0:  5B 61 64 64 77 6F 72 64 5D 20 0D 0A 20 20 70 72    [addword] ..  pr
02D7F0:  20 3A 78 0D 0A 65 6E 64 0D 0A 0D 0A 74 6F 20 61     :x..end....to a
02D800:  77 72 69 74 65 20 6F 75 72 20 41 49 20 70 72 6F    write our AI pro
02D810:  67 72 61 6D 2E 20 20 57 65 20 61 72 65 20 61 6C    gram.  We are al
02D820:  6C 20 20 75 73 65 64 20 74 6F 20 75 73 69 6E 67    l  used to using
02D830:  20 42 41 53 49 43 2C 20 61 6E 64 20 69 74 20 69     BASIC, and it i
02D840:  73 20 71 75 69 74 65 0D 0A 20 20 20 61 20 72 65    s quite..   a re
02D850:  76 65 6C 61 74 69 6F 6E 20 74 6F 20 73 65 65 20    velation to see 
02D860:  6A 75 73 74 20 20 68 6F 77 20 20 64 69 66 66 65    just  how  diffe
02D870:  72 65 6E 74 20 20 61 6E 6F 74 68 65 72 20 70 72    rent  another pr
02D880:  6F 67 72 61 6D 6D 69 6E 67 20 6C 61 6E 67 75 61    ogramming langua
02D890:  67 65 20 63 61 6E 0D 0A 20 20 20 62 65 2E 20 20    ge can..   be.  
02D8A0:  49 6E 20 42 41 53 49 43 20 77 65 20 68 61 64 20    In BASIC we had 
02D8B0:  74 6F 20 77 72 69 74 65 20 20 6F 75 72 20 6F 77    to write  our ow
02D8C0:  6E 20 72 6F 75 74 69 6E 65 73 20 66 6F 72 20 64    n routines for d
02D8D0:  69 76 69 64 69 6E 67 20 74 68 65 20 73 65 6E 74    ividing the sent
02D8E0:  65 6E 63 65 73 0D 0A 20 20 20 75 70 20 69 6E 74    ences..   up int
02D8F0:  6F 20 77 6F 72 64 73 20 61 6E 64 20 6C 69 6E 6B    o words and link
02D900:  69 6E 67 20 74 68 6F 73 65 20 20 77 6F 72 64 73    ing those  words
02D910:  20 20 74 6F 67 65 74 68 65 72 20 75 73 69 6E 67      together using
02D920:  20 70 6F 69 6E 74 65 72 73 20 69 6E 20 61 72 72     pointers in arr
02D930:  61 79 73 2E 0D 0A 20 20 20 49 6E 20 4C 6F 67 6F    ays...   In Logo
02D940:  20 61 20 6C 6F 74 20 6F 66 20 74 68 69 73 20 77     a lot of this w
02D950:  6F 72 6B 20 69 73 20 64 6F 6E 65 20 66 6F 72 20    ork is done for 
02D960:  75 73 20 61 6C 72 65 61 64 79 2E 0D 0A 0D 0A 20    us already..... 
02D970:  20 20 49 66 20 79 6F 75 20 77 61 6E 74 20 74 6F      If you want to
02D980:  20 6C 65 61 72 6E 20 6D 6F 72 65 20 20 61 62 6F     learn more  abo
02D990:  75 74 20 20 4C 6F 67 6F 2C 20 20 74 68 65 72 65    ut  Logo,  there
02D9A0:  20 20 77 61 73 20 61 6E 20 65 78 63 65 6C 6C 65      was an excelle
02D9B0:  6E 74 20 73 65 72 69 65 73 20 69 6E 0D 0A 20 20    nt series in..  
02D9C0:  20 43 6F 6D 70 75 74 69 6E 67 20 77 69 74 68 20     Computing with 
02D9D0:  20 74 68 65 20 20 41 6D 73 74 72 61 64 20 20 43     the  Amstrad  C
02D9E0:  50 43 20 20 66 72 6F 6D 20 20 4A 75 6E 65 20 20    PC  from  June  
02D9F0:  31 39 38 37 20 20 74 6F 20 20 4D 61 72 63 68 20    1987  to  March 
02DA00:  74 6F 20 6D 65 6D 62 65 72 70 20 3A 62 69 74 20    to memberp :bit 
02DA10:  3A 6C 69 73 74 0D 0A 20 20 28 6C 6F 63 61 6C 20    :list..  (local 
02DA20:  22 70 6F 69 6E 74 65 72 29 0D 0A 20 20 6D 61 6B    "pointer)..  mak
02DA30:  65 20 22 70 6F 69 6E 74 65 72 20 31 0D 0A 20 20    e "pointer 1..  
02DA40:  72 65 70 65 61 74 20 63 6F 75 6E 74 20 3A 6C 69    repeat count :li
02DA50:  73 74 0D 0A 20 20 20 20 5B 0D 0A 20 20 20 20 69    st..    [..    i
02DA60:  66 20 69 74 65 6D 20 3A 70 6F 69 6E 74 65 72 20    f item :pointer 
02DA70:  3A 6C 69 73 74 20 3D 20 3A 62 69 74 0D 0A 20 20    :list = :bit..  
02DA80:  20 20 20 20 5B 6F 70 20 22 54 52 55 45 5D 0D 0A        [op "TRUE]..
02DA90:  20 20 20 20 6D 61 6B 65 20 22 70 6F 69 6E 74 65        make "pointe
02DAA0:  72 20 3A 70 6F 69 6E 74 65 72 20 2B 20 31 0D 0A    r :pointer + 1..
02DAB0:  20 20 20 20 5D 0D 0A 20 20 6F 70 20 22 46 41 4C        ]..  op "FAL
02DAC0:  53 45 0D 0A 65 6E 64 0D 0A 0D 0A 74 6F 20 74 68    SE..end....to th
02DAD0:  69 6E 67 20 3A 76 61 72 69 61 62 6C 65 0D 0A 20    ing :variable.. 
02DAE0:  20 6F 70 20 67 70 72 6F 70 20 3A 76 61 72 69 61     op gprop :varia
02DAF0:  62 6C 65 20 22 2E 41 50 56 0D 0A 65 6E 64 0D 0A    ble ".APV..end..
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:  20 31 39 38 38 2E 20 20 54 68 65 0D 0A 20 20 20     1988.  The..   
02DC10:  64 65 66 69 6E 69 74 69 6F 6E 73 20 6F 66 20 22    definitions of "
02DC20:  74 68 69 6E 67 22 20 61 6E 64 20 22 6D 65 6D 62    thing" and "memb
02DC30:  65 72 70 22 20 20 77 65 72 65 20 20 61 64 61 70    erp"  were  adap
02DC40:  74 65 64 20 66 72 6F 6D 20 74 68 69 73 2E 20 20    ted from this.  
02DC50:  44 65 74 61 69 6C 73 20 6F 66 0D 0A 20 20 20 61    Details of..   a
02DC60:  6C 6C 20 74 68 65 20 4C 6F 67 6F 20 63 6F 6D 6D    ll the Logo comm
02DC70:  61 6E 64 73 20 20 61 72 65 20 20 69 6E 20 20 79    ands  are  in  y
02DC80:  6F 75 72 20 20 63 6F 6D 70 75 74 65 72 20 20 6D    our  computer  m
02DC90:  61 6E 75 61 6C 20 20 28 6F 72 20 74 68 65 20 64    anual  (or the d
02DCA0:  69 73 63 20 64 72 69 76 65 0D 0A 20 20 20 6D 61    isc drive..   ma
02DCB0:  6E 75 61 6C 20 69 66 20 79 6F 75 20 68 61 76 65    nual if you have
02DCC0:  20 20 61 20 20 34 36 34 29 2E 20 20 20 49 66 20      a  464).   If 
02DCD0:  20 79 6F 75 20 20 61 72 65 20 20 72 65 61 6C 6C     you  are  reall
02DCE0:  79 20 20 6B 65 65 6E 2C 20 77 72 69 74 65 20 69    y  keen, write i
02DCF0:  6E 74 6F 20 46 61 69 72 0D 0A 20 20 20 43 6F 6D    nto Fair..   Com
02DD00:  6D 65 6E 74 20 61 6E 64 20 74 65 6C 6C 20 6D 65    ment and tell me
02DD10:  2C 20 61 6E 64 20 49 20 63 61 6E 20 64 6F 20 61    , and I can do a
02DD20:  20 66 65 77 20 6D 6F 72 65 20 61 72 74 69 63 6C     few more articl
02DD30:  65 73 2E 0D 0A 0D 0A 20 20 20 59 6F 75 20 6D 61    es.....   You ma
02DD40:  79 20 68 61 76 65 20 73 70 6F 74 74 65 64 20 61    y have spotted a
02DD50:  20 70 72 6F 62 6C 65 6D 20 77 69 74 68 20 74 68     problem with th
02DD60:  65 20 70 72 6F 67 72 61 6D 20 61 73 20 69 74 20    e program as it 
02DD70:  73 74 61 6E 64 73 2E 20 20 49 66 20 74 68 65 20    stands.  If the 
02DD80:  75 73 65 72 0D 0A 20 20 20 74 79 70 65 73 20 61    user..   types a
02DD90:  20 73 65 6E 74 65 6E 63 65 20 69 6E 63 6C 75 64     sentence includ
02DDA0:  69 6E 67 20 77 6F 72 64 73 20 20 77 68 69 63 68    ing words  which
02DDB0:  20 20 77 65 20 20 61 72 65 20 20 75 73 69 6E 67      we  are  using
02DDC0:  20 61 73 20 76 61 72 69 61 62 6C 65 20 6E 61 6D     as variable nam
02DDD0:  65 73 2C 0D 0A 20 20 20 73 75 63 68 20 61 73 20    es,..   such as 
02DDE0:  22 6C 69 73 74 22 20 61 6E 64 20 20 22 70 6F 69    "list" and  "poi
02DDF0:  6E 74 65 72 22 2C 20 20 73 74 72 61 6E 67 65 20    nter",  strange 
02DE00:  20 77 6F 72 64 20 69 6E 20 20 78 2E 20 20 20 53     word in  x.   S
02DE10:  75 70 70 6F 73 65 20 20 3A 77 20 77 61 73 20 22    uppose  :w was "
02DE20:  54 68 69 73 22 20 61 6E 64 20 3A 78 20 77 61 73    This" and :x was
02DE30:  20 22 69 73 22 2E 0D 0A 20 20 20 54 68 65 20 6D     "is"...   The m
02DE40:  61 6B 65 20 63 6F 6D 6D 61 6E 64 20 69 73 20 20    ake command is  
02DE50:  73 65 74 74 69 6E 67 20 20 3A 77 2C 20 20 77 68    setting  :w,  wh
02DE60:  69 63 68 20 20 6D 65 61 6E 73 20 20 69 74 20 20    ich  means  it  
02DE70:  69 73 20 73 65 74 74 69 6E 67 20 61 20 76 61 72    is setting a var
02DE80:  69 61 62 6C 65 0D 0A 20 20 20 63 61 6C 6C 65 64    iable..   called
02DE90:  20 22 54 68 69 73 22 2E 20 20 4F 75 72 20 76 61     "This".  Our va
02DEA0:  72 69 61 62 6C 65 20 6E 61 6D 65 73 20 20 61 72    riable names  ar
02DEB0:  65 20 20 61 63 74 75 61 6C 6C 79 20 64 65 74 65    e  actually dete
02DEC0:  72 6D 69 6E 65 64 20 62 79 20 74 68 65 20 75 73    rmined by the us
02DED0:  65 72 27 73 0D 0A 20 20 20 73 65 6E 74 65 6E 63    er's..   sentenc
02DEE0:  65 73 21 20 20 49 74 20 69 73 20 73 65 74 74 69    es!  It is setti
02DEF0:  6E 67 20 69 74 20 20 74 6F 20 20 61 20 20 73 65    ng it  to  a  se
02DF00:  6E 74 65 6E 63 65 20 20 28 6C 69 73 74 20 20 6F    ntence  (list  o
02DF10:  66 20 77 6F 72 64 73 29 20 6D 61 64 65 20 75 70    f words) made up
02DF20:  20 6F 66 0D 0A 20 20 20 22 74 68 69 6E 67 20 3A     of..   "thing :
02DF30:  77 22 20 61 6E 64 20 22 3A 78 22 2E 20 20 57 65    w" and ":x".  We
02DF40:  20 20 6B 6E 6F 77 20 20 22 3A 78 22 20 20 69 73      know  ":x"  is
02DF50:  20 20 74 68 65 20 20 77 6F 72 64 20 20 22 69 73      the  word  "is
02DF60:  22 2C 20 62 75 74 20 77 68 61 74 20 69 73 20 74    ", but what is t
02DF70:  68 65 0D 0A 20 20 20 22 74 68 69 6E 67 22 20 63    he..   "thing" c
02DF80:  6F 6D 6D 61 6E 64 20 64 6F 69 6E 67 3F 0D 0A 0D    ommand doing?...
02DF90:  0A 20 20 20 54 68 65 20 22 74 68 69 6E 67 22 20    .   The "thing" 
02DFA0:  63 6F 6D 6D 61 6E 64 20 67 69 76 65 73 20 75 73    command gives us
02DFB0:  20 74 68 65 20 20 76 61 6C 75 65 20 20 6F 66 20     the  value  of 
02DFC0:  20 74 68 65 20 76 61 72 69 61 62 6C 65 20 6E 61     the variable na
02DFD0:  6D 65 20 77 65 20 67 69 76 65 20 69 74 2E 0D 0A    me we give it...
02DFE0:  20 20 20 49 66 20 79 6F 75 20 74 79 70 65 0D 0A       If you type..
02DFF0:  0D 0A 20 20 20 20 20 74 68 69 6E 67 20 22 76 61    ..     thing "va
02E000:  20 74 68 69 6E 67 73 20 20 77 69 6C 6C 20 20 68     things  will  h
02E010:  61 70 70 65 6E 2E 20 20 54 68 65 72 65 20 69 73    appen.  There is
02E020:  20 61 0D 0A 20 20 20 62 65 74 74 65 72 20 77 61     a..   better wa
02E030:  79 20 74 6F 20 20 77 72 69 74 65 20 20 74 68 65    y to  write  the
02E040:  20 20 70 72 6F 67 72 61 6D 20 20 75 73 69 6E 67      program  using
02E050:  20 20 22 70 72 6F 70 65 72 74 79 20 20 6C 69 73      "property  lis
02E060:  74 73 22 2C 20 20 61 6E 64 20 20 49 20 68 61 76    ts",  and  I hav
02E070:  65 0D 0A 20 20 20 69 6E 63 6C 75 64 65 64 20 74    e..   included t
02E080:  68 69 73 20 6F 6E 20 74 68 65 20 50 72 6F 67 72    his on the Progr
02E090:  61 6D 6D 65 72 73 27 20 50 61 74 63 68 20 64 69    ammers' Patch di
02E0A0:  73 63 2E 20 20 3C 3C 49 74 20 69 73 20 73 61 76    sc.  <<It is sav
02E0B0:  65 64 20 61 73 20 41 49 37 2E 4C 4F 47 3E 3E 0D    ed as AI7.LOG>>.
02E0C0:  0A 1A 6C 64 20 68 61 76 65 20 74 6F 20 64 75 73    ..ld have to dus
02E0D0:  74 20 20 6F 66 66 20 20 79 6F 75 72 20 20 43 50    t  off  your  CP
02E0E0:  2F 4D 20 73 79 73 74 65 6D 20 64 69 73 63 73 20    /M system discs 
02E0F0:  74 68 69 73 20 74 69 6D 65 2E 20 20 57 65 0D 0A    this time.  We..
02E100:  6D 65 6E 74 20 61 6E 64 20 74 65 6C 6C 20 6D 65    ment and tell me
02E110:  2C 20 61 6E 64 20 49 20 63 61 6E 20 64 6F 20 61    , and I can do a
02E120:  20 66 65 77 20 6D 6F 72 65 20 61 72 74 69 63 6C     few more articl
02E130:  65 73 2E 0D 0A 0D 0A 20 20 20 59 6F 75 20 6D 61    es.....   You ma
02E140:  79 20 68 61 76 65 20 73 70 6F 74 74 65 64 20 61    y have spotted a
02E150:  20 70 72 6F 62 6C 65 6D 20 77 69 74 68 20 74 68     problem with th
02E160:  65 20 70 72 6F 67 72 61 6D 20 61 73 20 69 74 20    e program as it 
02E170:  73 74 61 6E 64 73 2E 20 20 49 66 20 74 68 65 20    stands.  If the 
02E180:  75 73 65 72 0D 0A 20 20 20 74 79 70 65 73 20 61    user..   types a
02E190:  20 73 65 6E 74 65 6E 63 65 20 69 6E 63 6C 75 64     sentence includ
02E1A0:  69 6E 67 20 77 6F 72 64 73 20 20 77 68 69 63 68    ing words  which
02E1B0:  20 20 77 65 20 20 61 72 65 20 20 75 73 69 6E 67      we  are  using
02E1C0:  20 61 73 20 76 61 72 69 61 62 6C 65 20 6E 61 6D     as variable nam
02E1D0:  65 73 2C 0D 0A 20 20 20 73 75 63 68 20 61 73 20    es,..   such as 
02E1E0:  22 6C 69 73 74 22 20 61 6E 64 20 20 22 70 6F 69    "list" and  "poi
02E1F0:  6E 74 65 72 22 2C 20 20 73 74 72 61 6E 67 65 20    nter",  strange 
02E200:  72 69 61 62 6C 65 0D 0A 0D 0A 20 20 20 69 74 20    riable....   it 
02E210:  68 61 73 20 74 68 65 20 73 61 6D 65 20 65 66 66    has the same eff
02E220:  65 63 74 20 61 73 20 3A 76 61 72 69 61 62 6C 65    ect as :variable
02E230:  20 20 61 6E 64 20 67 69 76 65 73 20 75 73 20 74      and gives us t
02E240:  68 65 20 76 61 6C 75 65 20 6F 66 20 22 76 61 72    he value of "var
02E250:  69 61 62 6C 65 22 2E 0D 0A 20 20 20 48 6F 77 65    iable"...   Howe
02E260:  76 65 72 20 77 65 20 61 72 65 20 61 73 6B 69 6E    ver we are askin
02E270:  67 20 66 6F 72 20 74 68 69 6E 67 20 3A 77 2C 20    g for thing :w, 
02E280:  61 6E 64 20 20 3A 77 20 69 73 20 22 54 68 69 73    and  :w is "This
02E290:  22 2C 20 73 6F 20 77 65 20 67 65 74 20 74 68 65    ", so we get the
02E2A0:  20 76 61 6C 75 65 0D 0A 20 20 20 6F 66 20 74 68     value..   of th
02E2B0:  65 20 76 61 72 69 61 62 6C 65 20 54 68 69 73 2E    e variable This.
02E2C0:  0D 0A 0D 0A 20 20 20 49 74 20 69 73 20 70 72 65    ....   It is pre
02E2D0:  74 74 79 20 77 65 69 72 64 2C 20 69 73 6E 27 74    tty weird, isn't
02E2E0:  20 69 74 3F 20 20 20 54 68 65 20 20 69 64 65 61     it?   The  idea
02E2F0:  20 20 69 73 20 20 74 68 61 74 20 66 6F 72 20 65      is  that for e
02E300:  61 63 68 20 77 6F 72 64 20 74 68 65 20 75 73 65    ach word the use
02E310:  72 0D 0A 20 20 20 74 79 70 65 73 2C 20 77 65 20    r..   types, we 
02E320:  62 75 69 6C 64 20 75 70 20 61 20 6C 69 73 74 20    build up a list 
02E330:  6F 66 20 6F 74 68 65 72 20 77 6F 72 64 73 20 74    of other words t
02E340:  68 61 74 20 63 61 6E 20 66 6F 6C 6C 6F 77 20 69    hat can follow i
02E350:  74 2C 20 61 6E 64 20 73 74 6F 72 65 20 74 68 65    t, and store the
02E360:  0D 0A 20 20 20 6C 69 73 74 20 69 6E 20 74 68 65    ..   list in the
02E370:  20 76 61 72 69 61 62 6C 65 20 77 68 6F 73 65 20     variable whose 
02E380:  20 6E 61 6D 65 20 20 69 73 20 20 74 68 61 74 20     name  is  that 
02E390:  20 77 6F 72 64 2E 20 20 20 54 68 61 74 20 20 69     word.   That  i
02E3A0:  73 20 77 68 61 74 20 74 68 65 20 6C 69 6E 65 0D    s what the line.
02E3B0:  0A 20 20 20 66 6F 6C 6C 6F 77 69 6E 67 20 74 68    .   following th
02E3C0:  65 20 22 69 66 22 20 73 74 61 74 65 6D 65 6E 74    e "if" statement
02E3D0:  20 69 73 20 64 6F 69 6E 67 2E 20 20 20 54 68 65     is doing.   The
02E3E0:  20 22 69 66 22 20 73 74 61 74 65 6D 65 6E 74 20     "if" statement 
02E3F0:  69 74 73 65 6C 66 20 69 73 20 6A 75 73 74 0D 0A    itself is just..
02E400:  74 6F 20 61 69 0D 0A 20 20 6D 61 6B 65 20 22 75    to ai..  make "u
02E410:  73 65 72 69 6E 70 75 74 20 72 6C 20 0D 0A 20 20    serinput rl ..  
02E420:  69 66 20 28 63 6F 75 6E 74 20 3A 75 73 65 72 69    if (count :useri
02E430:  6E 70 75 74 29 20 3E 20 30 20 5B 70 61 72 73 65    nput) > 0 [parse
02E440:  5D 20 0D 0A 20 20 73 70 65 61 6B 20 0D 0A 20 20    ] ..  speak ..  
02E450:  61 69 0D 0A 65 6E 64 0D 0A 0D 0A 74 6F 20 70 61    ai..end....to pa
02E460:  72 73 65 0D 0A 20 20 6D 61 6B 65 20 22 6C 69 73    rse..  make "lis
02E470:  74 20 28 73 65 20 22 54 68 65 53 74 61 72 74 20    t (se "TheStart 
02E480:  3A 75 73 65 72 69 6E 70 75 74 20 22 54 68 65 45    :userinput "TheE
02E490:  6E 64 29 0D 0A 20 20 6D 61 6B 65 20 22 70 6F 69    nd)..  make "poi
02E4A0:  6E 74 65 72 20 31 20 0D 0A 20 20 72 65 70 65 61    nter 1 ..  repea
02E4B0:  74 20 28 28 63 6F 75 6E 74 20 3A 6C 69 73 74 29    t ((count :list)
02E4C0:  20 2D 20 31 29 20 0D 0A 20 20 20 20 5B 0D 0A 20     - 1) ..    [.. 
02E4D0:  20 20 20 6D 61 6B 65 20 22 77 20 69 74 65 6D 20       make "w item 
02E4E0:  3A 70 6F 69 6E 74 65 72 20 3A 6C 69 73 74 20 0D    :pointer :list .
02E4F0:  0A 20 20 20 20 6D 61 6B 65 20 22 70 6F 69 6E 74    .    make "point
02E500:  65 72 20 3A 70 6F 69 6E 74 65 72 20 2B 20 31 20    er :pointer + 1 
02E510:  0D 0A 20 20 20 20 6D 61 6B 65 20 22 78 20 69 74    ..    make "x it
02E520:  65 6D 20 3A 70 6F 69 6E 74 65 72 20 3A 6C 69 73    em :pointer :lis
02E530:  74 20 0D 0A 20 20 20 20 69 66 20 6E 6F 74 20 28    t ..    if not (
02E540:  6D 65 6D 62 65 72 70 20 3A 78 20 74 68 69 6E 67    memberp :x thing
02E550:  20 3A 77 29 0D 0A 20 20 20 20 20 20 5B 0D 0A 20     :w)..      [.. 
02E560:  20 20 20 20 20 6D 61 6B 65 20 3A 77 20 28 73 65         make :w (se
02E570:  20 74 68 69 6E 67 20 3A 77 20 3A 78 29 0D 0A 20     thing :w :x).. 
02E580:  20 20 20 20 20 5D 0D 0A 20 20 20 20 5D 0D 0A 65         ]..    ]..e
02E590:  6E 64 0D 0A 0D 0A 74 6F 20 73 70 65 61 6B 0D 0A    nd....to speak..
02E5A0:  20 20 6D 61 6B 65 20 22 77 20 22 54 68 65 53 74      make "w "TheSt
02E5B0:  61 72 74 20 0D 0A 20 20 6D 61 6B 65 20 22 78 20    art ..  make "x 
02E5C0:  5B 5D 20 0D 0A 20 20 69 66 20 28 63 6F 75 6E 74    [] ..  if (count
02E5D0:  20 3A 54 68 65 53 74 61 72 74 29 20 3E 20 30 20     :TheStart) > 0 
02E5E0:  5B 61 64 64 77 6F 72 64 5D 20 0D 0A 20 20 70 72    [addword] ..  pr
02E5F0:  20 3A 78 0D 0A 65 6E 64 0D 0A 0D 0A 74 6F 20 61     :x..end....to a
02E600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02E610:  27 00 01 00 02 09 4E E5 27 00 C6 02 00 00 00 02    '.....N.'.......
02E620:  27 00 C2 02 00 00 00 02 27 00 C7 02 00 00 00 02    '.......'.......
02E630:  27 00 C3 02 00 00 00 02 27 00 C8 02 00 00 00 02    '.......'.......
02E640:  27 00 C4 02 00 00 00 02 27 00 C9 02 00 00 00 02    '.......'.......
02E650:  27 00 C5 02 00 00 00 02 27 00 C1 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:  74 6F 20 61 69 0D 0A 20 20 6D 61 6B 65 20 22 75    to ai..  make "u
02E910:  73 65 72 69 6E 70 75 74 20 72 6C 20 0D 0A 20 20    serinput rl ..  
02E920:  69 66 20 28 63 6F 75 6E 74 20 3A 75 73 65 72 69    if (count :useri
02E930:  6E 70 75 74 29 20 3E 20 30 20 5B 70 61 72 73 65    nput) > 0 [parse
02E940:  5D 20 0D 0A 20 20 73 70 65 61 6B 20 0D 0A 20 20    ] ..  speak ..  
02E950:  61 69 0D 0A 65 6E 64 0D 0A 0D 0A 74 6F 20 70 61    ai..end....to pa
02E960:  72 73 65 0D 0A 20 20 6D 61 6B 65 20 22 6C 69 73    rse..  make "lis
02E970:  74 20 28 73 65 20 22 54 68 65 53 74 61 72 74 20    t (se "TheStart 
02E980:  3A 75 73 65 72 69 6E 70 75 74 20 22 54 68 65 45    :userinput "TheE
02E990:  6E 64 29 0D 0A 20 20 6D 61 6B 65 20 22 70 6F 69    nd)..  make "poi
02E9A0:  6E 74 65 72 20 31 20 0D 0A 20 20 72 65 70 65 61    nter 1 ..  repea
02E9B0:  74 20 28 28 63 6F 75 6E 74 20 3A 6C 69 73 74 29    t ((count :list)
02E9C0:  20 2D 20 31 29 20 0D 0A 20 20 20 20 5B 0D 0A 20     - 1) ..    [.. 
02E9D0:  20 20 20 6D 61 6B 65 20 22 77 20 69 74 65 6D 20       make "w item 
02E9E0:  3A 70 6F 69 6E 74 65 72 20 3A 6C 69 73 74 20 0D    :pointer :list .
02E9F0:  0A 20 20 20 20 6D 61 6B 65 20 22 70 6F 69 6E 74    .    make "point
02EA00:  65 72 20 3A 70 6F 69 6E 74 65 72 20 2B 20 31 20    er :pointer + 1 
02EA10:  0D 0A 20 20 20 20 6D 61 6B 65 20 22 78 20 69 74    ..    make "x it
02EA20:  65 6D 20 3A 70 6F 69 6E 74 65 72 20 3A 6C 69 73    em :pointer :lis
02EA30:  74 20 0D 0A 20 20 20 20 69 66 20 6E 6F 74 20 28    t ..    if not (
02EA40:  6D 65 6D 62 65 72 70 20 3A 78 20 67 70 72 6F 70    memberp :x gprop
02EA50:  20 3A 77 20 22 46 4F 4C 29 0D 0A 20 20 20 20 20     :w "FOL)..     
02EA60:  20 5B 0D 0A 20 20 20 20 20 20 70 70 72 6F 70 20     [..      pprop 
02EA70:  3A 77 20 22 46 4F 4C 20 28 73 65 20 67 70 72 6F    :w "FOL (se gpro
02EA80:  70 20 3A 77 20 22 46 4F 4C 20 3A 78 29 0D 0A 20    p :w "FOL :x).. 
02EA90:  20 20 20 20 20 5D 0D 0A 20 20 20 20 5D 0D 0A 65         ]..    ]..e
02EAA0:  6E 64 0D 0A 0D 0A 74 6F 20 73 70 65 61 6B 0D 0A    nd....to speak..
02EAB0:  20 20 6D 61 6B 65 20 22 77 20 22 54 68 65 53 74      make "w "TheSt
02EAC0:  61 72 74 20 0D 0A 20 20 6D 61 6B 65 20 22 78 20    art ..  make "x 
02EAD0:  5B 5D 20 0D 0A 20 20 69 66 20 28 63 6F 75 6E 74    [] ..  if (count
02EAE0:  20 67 70 72 6F 70 20 22 54 68 65 53 74 61 72 74     gprop "TheStart
02EAF0:  20 22 46 4F 4C 29 20 3E 20 30 20 5B 61 64 64 77     "FOL) > 0 [addw
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:  6F 72 64 5D 20 0D 0A 20 20 70 72 20 3A 78 0D 0A    ord] ..  pr :x..
02ED10:  65 6E 64 0D 0A 0D 0A 74 6F 20 61 64 64 77 6F 72    end....to addwor
02ED20:  64 0D 0A 20 20 6D 61 6B 65 20 22 7A 20 67 70 72    d..  make "z gpr
02ED30:  6F 70 20 3A 77 20 22 46 4F 4C 20 0D 0A 20 20 6D    op :w "FOL ..  m
02ED40:  61 6B 65 20 22 77 20 69 74 65 6D 20 28 28 72 61    ake "w item ((ra
02ED50:  6E 64 6F 6D 20 63 6F 75 6E 74 20 3A 7A 29 20 2B    ndom count :z) +
02ED60:  20 31 29 20 3A 7A 20 0D 0A 20 20 69 66 20 6E 6F     1) :z ..  if no
02ED70:  74 20 28 3A 77 20 3D 20 22 54 68 65 45 6E 64 29    t (:w = "TheEnd)
02ED80:  0D 0A 20 20 20 20 5B 0D 0A 20 20 20 20 6D 61 6B    ..    [..    mak
02ED90:  65 20 22 78 20 28 73 65 20 3A 78 20 3A 77 29 0D    e "x (se :x :w).
02EDA0:  0A 20 20 20 20 61 64 64 77 6F 72 64 0D 0A 20 20    .    addword..  
02EDB0:  20 20 5D 0D 0A 65 6E 64 0D 0A 1A 70 61 72 73 65      ]..end...parse
02EDC0:  20 3A 75 73 65 72 69 6E 70 75 74 5D 20 0D 0A 20     :userinput] .. 
02EDD0:  20 73 70 65 61 6B 20 0D 0A 20 20 61 69 0D 0A 65     speak ..  ai..e
02EDE0:  6E 64 0D 0A 0D 0A 74 6F 20 70 61 72 73 65 20 3A    nd....to parse :
02EDF0:  6C 69 73 74 0D 0A 20 20 6D 61 6B 65 20 22 6C 69    list..  make "li
02EE00:  65 72 20 3A 70 6F 69 6E 74 65 72 20 2B 20 31 20    er :pointer + 1 
02EE10:  0D 0A 20 20 20 20 6D 61 6B 65 20 22 78 20 69 74    ..    make "x it
02EE20:  65 6D 20 3A 70 6F 69 6E 74 65 72 20 3A 6C 69 73    em :pointer :lis
02EE30:  74 20 0D 0A 20 20 20 20 69 66 20 6E 6F 74 20 28    t ..    if not (
02EE40:  6D 65 6D 62 65 72 70 20 3A 78 20 67 70 72 6F 70    memberp :x gprop
02EE50:  20 3A 77 20 22 46 4F 4C 29 0D 0A 20 20 20 20 20     :w "FOL)..     
02EE60:  20 5B 0D 0A 20 20 20 20 20 20 70 70 72 6F 70 20     [..      pprop 
02EE70:  3A 77 20 22 46 4F 4C 20 28 73 65 20 67 70 72 6F    :w "FOL (se gpro
02EE80:  70 20 3A 77 20 22 46 4F 4C 20 3A 78 29 0D 0A 20    p :w "FOL :x).. 
02EE90:  20 20 20 20 20 5D 0D 0A 20 20 20 20 5D 0D 0A 65         ]..    ]..e
02EEA0:  6E 64 0D 0A 0D 0A 74 6F 20 73 70 65 61 6B 0D 0A    nd....to speak..
02EEB0:  20 20 6D 61 6B 65 20 22 77 20 22 54 68 65 53 74      make "w "TheSt
02EEC0:  61 72 74 20 0D 0A 20 20 6D 61 6B 65 20 22 78 20    art ..  make "x 
02EED0:  5B 5D 20 0D 0A 20 20 69 66 20 28 63 6F 75 6E 74    [] ..  if (count
02EEE0:  20 67 70 72 6F 70 20 22 54 68 65 53 74 61 72 74     gprop "TheStart
02EEF0:  20 22 46 4F 4C 29 20 3E 20 30 20 5B 61 64 64 77     "FOL) > 0 [addw
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=296   CHEA=1   COD=19   MUSI=8   COP=39   GRA=235   WRIT=49   198=4   199=19   STARTER=0   KBI=6   CAAV=0   L.TOURNIER=0  
EXTENDED CPC DSK File    SAMdisk141208(  N8 614 618 a08 9431  B a09 596 621 a09 
8473  B a10 4852 4858 a10 9828  B a10 9282 9294 a10 10101  B a11 451 459 a11 813
1  B a11 532 540 a11 9079  B a12 3810 3818 a12 10511  B a12 8454 8460 a12 11768 
 B a13 2075 2083 a13 6302  B a13 2804 2811 a13 5971  B a14 1364 1370 a14t1 0  B 
a15 5027 5035 464rsx.bas 0  B a16 543 549 ai1.bas 0  B a16 952 959 a16 10514  B 
a16 10444 10464 a16a 0  B a16a 469 475 ai2.bas 0  B a17 3709 3716 a17 10905  B a
17 5011 5018 a17 11594  B a21 4322 4328 ai6.log 0  B a21 4334 4344 64kbitsDISC  
  BASp**(  ,() ,"loom.bin"est the machine (  ,() ,"loom.bin"est the machine upon
 exit' ,() ,"lll.bin"apted from "Lear$6" !"H!d#""/!f#6"T!f#6'!f#Q!f#4g" dgA2j#w"
m#2#b! $p+q*$2#2x#!!$q!$  !#$p+q*"$!%$p+q*$$DM!#6# !'DISC    BASLINKBASETXT LOOM
    BINt  MESSAGESTXTREADME     #A19        R !"#$%A18        V&'()*+,-./0A12   
     a123456789A13        VABCDEFGHHELP    TXT IJAI4     BASKQRSCAN464 BASLSCAN4
64 BINMNSCAN6128BASOSCAN6128BINPA20        PSAI5     BASTUNE    BASTUA14        
aVWXYZabA14T1      cdefA15        cghijklmnopqrs464RSX  BAStAI1     BASuvAI2    
 BAS wxA16        XyzA16A       A17        AI3     BASA21        £LISTEX  BASAI6
     LOG64KBITS LOGF readme  B readme 136 144 readme 4446  B readme 1029 1037 a0
1 0  B readme 1066 1074 a02 0  B readme 1125 1133 a03 0  B readme 1197 1205 a04 
0  B readme 1260 1268 a05 0  B readme 1306 1314 a06 0  B readme 1353 1361 a07 0 
 B readme 1415 1423 a08 0  B readme 1460 1468 a09 0  B readme 1485 1494 a10 0  B
 readme 1527 1536 a11 0  B readme 1641 1650 a12 0  B readme 1706 1715 a13 0  B r
eadme 1779 1788 a14 0  B readme 1856 1865 a15 0  B readme 1916 1925 a16 0  B rea
dme 1983 1992 a17 0  B readme 2040 2049 a18 0  B reAI7     LOGadme 2107 2116 a19
 0  B readme 2164 2173 a20 0  B readme 2222 2231 a21 0  B a01 926 933 a01 8519  
B a02 891 901 a02 8289  B a02 3010 3021 a02 9049  B a03 1791 1798 a03 9440  B a0
3 3598 3607 a03 9845  B a03 8808 8818 a03 10324  B a04 527 538 a04 8011  B a04 4
744 4755 a04 8543  B a04 4774 4787 a04 10104  B a05 636 643 a05 11178  B a06 115
1 1159 a06 8879  B a06 2993 2997 a06 8098  B a06 3002 3002 a06 8098  B a07 351 3
59 a07 7839  B a07 2184 2192 a07 7839  B a07 4214 4222 a07 9130  B a08 549 556 a
08 10333  B a0  N*K"!r*linkbase.txthelp.txtmessages.txt!nfP"*"B !c"B"*B*Bj*B!Yj*
BK"D!*DK*DK *B*DKj *DKRj*DK*D"D*D*j*B"*FR"F*D*D&!*D"B*DK"Dk !nfRKutnf utnf!nfnfn
fR.nf6nf!!#A##   oo!#+w#xR8#fon&s#rss#r#Vr+s#Vr+sKN#F#x(##  iR!0)T))YPP08+w (z+6
-o*L*w#"!!(!"9#V++2(% % *! "oog"q- 2n0 2o0"s.  2r"p!pd(u((o("x(s(c(-s!utnf%!!utn
fnf#!!!!mnfmnfm!!m!nf!!mnfm!!mnfm!!mn fRmnfRmnfRmnfRm!nfB 0  %s!, *XU!nfn&nfn& n
fn& nfn& ! nfn&!r!# s r( *p0*s+R#!DM*n(#*n++x"9#VS+++a0 l a0 V+ *#"*I*+w"o&*j!y!
jS(!j"!"!"9#V++22!"n(/  (%('o( nz  n9!*2p "qh(/d(+o(%x(c(es(o0 x(X!PYhKqx('08 88
 0OBp(Msh(6#r2op(8$Krnfn&nfn&R!nf"*!nf"*+8!6#6*!nf"c!rnfI"c(!*c (!!c*c&*c!&*c nf
I"c*cnf*c(!!nf!!  utK2%s !.*J!78nf!jnf!!  ut%s !*L!78nfnf Kq op(x .*n#"n++!I*#"o
&$PE( ((P(!6"/!cd6T!09N#F##V#x RdR PR!6Z$   Z Z   o&!o&!8,!7,O(8 8*$Z+!W(w (!o&z
!w!L(  z0xV !w!w!Lw*"z z.log 0  B a21 11697 11703 ai7.log 0    B readme 1029 103
7 a01 0  B readme 1066 1074 a02 0  B readme 1125 1133 a03 0  B readme 132 540 a1
1 9079  B a12 3810 3818 a12 10511  B a12 8454 8460 a12 11768  B a13 2075 2083 a1
3 6302  B a13 2804 2811 a13 5971  B a14 1364 1370 a14t1 0  B a15 5027 5035 464rs
x.bas 0  B a16 543 549 ai1.bas 0  B a16 952 959 a16 10514  B a16 10444 10464 a16
a 0  B a16a 469 475 ai2.bas 0  B a17 3709 3716 a17 10905  B a17 5011 5018 a17 11
594  B a21 4322 4328 ai6.log 0  B a21 4334 4344 64kbitsELr(w()C %wK S C  !2Lo"!L
DM!iF9Pn&qMqMlist    Ms#cr+s#Vr+s&#6nclude "is)"in&#&#!9!9DM!n&#!n&!nf4R"!*"!"!l
*Ka*K"!r*!nf4R"!*"!"!*KLOOM    BIN99Y$& "7gvj3,*cS 664vcE0!99*N90!!ystack overfl
owV9DMogog£og),+/g/o!#zIM!)8 08zIPBK)8 )zrW, 4PRgo7#+#7£++#7##7  Njnfnf Kjnfnf K
jnfnf Kjnfnf Kjnf n fjnf nfjnf nfjnf nfjnf nfj !nfKutnfnfKjnfnfKjnfnfKjnfnfKjnfn
fKjnf6!n fnf Kjnfnf Kjnfnf Kjnfnf Kjnf  !!+%s%c!!!!p3R!ut*Rnf*RutnfcLnfRn&(!ec!n
futnfnf(!nf6nfut!nf!nfcnf(!8&!nfut!utnfutnfrnf(!nf6nfut%s  !nf!nfK!!!! "H$%s ! *
P!78!*FE%s !A*R!78nfnf *Hnf *Hnf*R .nf *HnfKjnf *HnfKjnf *HnfKjnf *HnfK6 jnf *Hn
fK6 j(!%s !*T!78nf%s!nfnf!!nf!!!*L*nfcREutnfutnfnf *HK*K (!nf(!nfnf(!Lnf6nfutTnf
.nf *HK*K (!qnf *Hnf6nfcRK(!nf *HKcnfRutnfnf+nnf nfR *HKnfKK (!hnf *HK6nf *HnfR 
*HKjnf *HKnfK5nfKnfKK nf *HK6nf *Hnf *HKj6nf *HKnfK5!!!utnfnf *HKnfK (!!nfnf *HK
utnf *HKnf,!nf*cn&m!!!p3!nfz!nfnf6!!!nfnfY!nfnfcR!nfc!nfnfcKnfRn&(!!nf!nfnf6nfut
!nf!!f *HKnfK (!nf *HKnf(!0!nf!nfinf(!nfnf *HKK (!nf *HKnf(!nf *HKnf(! !!!!2 "cI
3%s !/*V!78!nfar!Fut!!2&nfIu&n&#!!Bnfnu&!c!5!c!5!2c&*cn& ! !c"4 "cx).*c"c*c"c!!+
n&Qd(!eUu&!e!p3!m!p3*c*£c+n&'a(&*a(!c1 *c"c*c"c!"£c!"c*c*£c+a(!p3 %s %d! **F!p3*
c*£c+a(x)*c*c*£c+a(!p3!p3*c*£c+a(M+a(+a(*£cz!*ccw!(*c"c*c!+!*c!£cr+*c"ca(*£c!*c6
*cfIu&*c"!utn&*c2R*(!n&!! &!*c2*nfx(! !!&!ut!n&&! c nfIu&nfOn&!!&!!!!740  !(!A!*
cutnfnf6nfutnf74 !(!!!p3!  N)*£c'*c6*c"c'!£c*c*£c+a(a( Q  , B H F!!P!O! F!!!"G"k
"#I%%&&#'7'k''8 !78!*cut!utnf((!nfmutnf!*c"c!!+!m( %s!(*c*c!!!!!+q(ut)  %s!6)nfn
f!!*c6*c"c!!m!m!D!!P!!!R)%cLoom v3.2 b1!78R!*nfK 2!p3*c**c*£c*cj!!ut!p382%s %s!1
2*lnf!p3nfutnf0utnf3!utH3!ut2%s!2*2YN!2Uut62nfN2!ut*cH32%s   !2**"!c"*1*c!ut*cH3
H3222nfa2!p3R!p3nf22!nf4!!!C!!!14!!!P!!!y%cS. Phillips!)!!!p3!!)%s!)*!p3R!p3R!*c
*!p3F*%s!B**!p3+*c!!!!Inf1+nf"cnf"£cnf"c*c"c*c"cnf+*!*c**c6*c"c!c*c*c+*cnfnfnfnf
j*c*£c+!!p3*c*cRut++%s!+*b++%s %d!+*dnf!p3*c!*c6*c"c)*c!+"*c!£cr+*c"*c6*c"c!ca(*
cR!"c*c*£c+a(*c!Pt"c*c*£c+a(*c"*£c"*cc(!(!"*£c"(*c"c"!£c*c"c*c"!"c"*c6"c#*c#*c #
!"c#*c6*cH#*c6"c#!crR*cn& z#*c(!#!crR*cn& #*c(!#!c*£c+!!p3*c*cRY,**c*cREutnf *HK
*K m,nf *H*c*cRK(!,nf(!,nf(!,!*c*cRY,**c*cRnf(!--%s!-*f!-nf9-!p3*c*£c+!nf *HK1 .
nf *H#V*c"c*c"c!"£c*c6*cnf *H#V*c*c*£c+a(*c#!ut#*c6utnf*cB$*£c8$*c6*c(!(!$*£cn$*
c6*c"c)$!£c*c$*c6*c"c!c!"c%nf*c%nf*c$!crR*cn& (!$!crR*cn& 4%nf*c(!%*c*£c+a(*ccg%
*c"c!"£c%!utnf%%!*c"c*c"c*c"c!utnf-*c6*c"c!£cnf *H#V*ccR"c!!p3!  utL.!  ut(!s.Z.
%s!W.*j!78.!c.r!z.Fut.d1!p3.%s %s!£.*l!c!p3nfIu&h0n&Y0nf. %12s   !.!c9/#/%s %s  
!/*n*p/!utnf/e/!nf!cn& /nf!c!&e0nf/ %12s %d %d %12s %d   !/n£c%%!*cm"c*c*£c+a(q(
&!"£cq("c&!utnfP&D&!*cm"c*c"c*c"c!utnf£c&&!*cm"c*c*£c+a(!"c!"£c*cc&*c"c*c"c*c*£c
+a(!"cq('*R"cq("c!"£c*c*£c+a(!"c*c*£c+a(*cO'!"c'*c6"c*c*£c+a(*cc'(*£c'*c"c'!£c*c
*£c+a(q('f!!nf!0/%s %s  !/*n*r20nfnfE!*e00%s %s  !80*n*te0e0.F/B.nfOnf6nf6*c&0!c
000%s!0*v!78*c!p3R!nfOutnfV10%s  !0*x!1  %s  !1*z!*c**c*£c*cjnf"!b101!z1  %s %s 
  %s!m1*!c* 1RQ!1Uu&61n&Q  Nnf"c!c!n&&5nf!nf"c!cn& nf*cRR!nfn&n&f6nfnfn&6!!r! !n
fR"c*c#V*F"F*"c*cc6*c#V*c(!J76*cK"c*c#V*c7*cc67*c#V*c(!(!H7J7*cK*c*c#V7*c*cK#VKj
*c*cKKj7*c*cUnable to initialise stack.  No more space on stack.  No more room f
or string on stack.  Unable to initialise list.  Unable to add to list.  No room
 for string in list.  Unable to initialise text buffer.  Press any key to quit. 
 Printer not ready.  Free    ENTER - follow link, B - go back, P - print, H - he
lp, Q - quit    You cannot go further back.  You are outside the text area.  Pos
ition  There is no link there.  links here.  Out of memory when loading linkbase
.  Loading  Error in linkbase  F command Kj*cK*cc8*c*c#VKj*c*cKj+8*c*cj*c"!!O! O
nf  ERROR EXIT %d EXIT OK Please press any key&DDDD(D0DDDDDDDDDDOD"""DDFD LdDgin
t     long    registerreturn  short   sizeo£ccFY$& "7gvj3,*cS 6M(j,U!+ £viOWA268
47takes one parameter.  B command takes five parameters.  unknown command.  Fail
ed to load first file.  File error.  Memory exhausted.  Could not find  (R)etry,
 or (Q)uit  Try again (Y/N)  Re-loading old file.  ck.  Unable to initialise lis
t.  Unable to ae 1      $$$PATCH 5     By Stephen and Matthew Phillips       Wha
t gastronomic delights await us  for  the  final  course   CHR$(215)p(x160)*20+1
q(400-y)16+1LOCATE p,q     CALL a,f$WENDTAGOFFIF MID$(f$,9,1)"." THEN MEMORY HIM
EM+34CALL &'6Uze'$p3kMgE£Dz £WhiLsQvK sROZ&1*m8EoY0snjP9AE*RB%oIzSl#46Oy 57xX0qs
f6fC5Vx)bzM(zAesDbQfA6(OVJ.T2pV6ssfc736on!ZdJ8"0"cB ".cP!khV,1 /s!v"s3xq)K#Welco
me to the Programmers' Patch disc  PROGRAMMERS' PATCH  By Stephen, Matthew and H
ilary Phillips    The Programmers' Patch disc features all the articles and prog
rams from the  acclaimed WACCI series.  The files on this disc are copyright Ste
phen, Matthew  and Hilary Phillips.  Permission is granted to distribute copies 
of the  complete disc, to print out the articles and listings for personal use, 
and to  incorporate the programming examples in your own programs.  ALL OTHER RI
GHTS  RESERVED.    You canP,7yH%nD37Ps#9itmkCq*soJ'f NF/Ih2MSXr g,5u/"""DD LdDgi
nt     long    registerreturn  short   sizeocc   mb1  mb,, mco  mb,( m)  dela   
md ()()50O 14READ a$POKE a+x,VAL("&"+a$)NEXT     110 MODE 2PRINT"Silly string"  
   120 a$" "LOCATE 1,1CALL &9000,a$     130 PRINT14!!!P!!!14!!!! !!!2!+14143333!
nfn&4nf4q4%s  %s!i4*Z*4RQ!4Uu&64Rn&4!4!44R4Q!4!!!5r!5Fut#5!78!utnf5O5!!!Onfnf!J!
6 jnf!JK!5nfO!  Noom  README.this file    Other files on side A of the disc    B
SIDE.BASthe BSIDE program for copying side B  BSIDE.BINditto  DISCMENU.BASthe pr
ogram featured in articles 1,2,4 and 5  FIG161.subroutine featured in article 2 
 FIG1618 .another subroutine featured in article 2  FIG2.an example from article
 3  FIG27.another example from article 3  FIG271.an example from articles 3 and 
4  FIG2718.another example from article 4  MENUEX1.BASthe listing from article 6
  MENUEX2.BASlisting 1 fro read the articles by using the Loom hypertext viewer,
 which will also  print them out if you have a printer.  To do this, just RUN"DI
SC and Loom will  start up.  The following headings then become hyperlinks which
 can be followed  by moving the cursor over the link and pressing ENTER.    The 
articles can also be viewed with a text editor or wordprocessor such as  Protext
.    If this has been supplied on a 3.5" disc and you do not have a side switch,
  RUN"BSIDE to copy the B side of the disc onto a disc in m article 7  MENUEX3 .
BASlisting 2 from article 7  MENUEX4 .BASlisting 2 modified to use the SHIFT key
  MENUSUB .the menu subroutine featured in articles 6-8  MIDI1.BASlisting from a
rticle 10 a program to play a middle C  PELMAN.BASthe card game featured in arti
cle 9  SEND.ASMassembly listing for MIDI SEND RSX  SEND.BASBASIC loader for MIDI
 SEND RSX (see article 11)    Other files on side B of the disc    464RSX.BASlis
ting 1 from article 15 which improves 464 RSX handling  64KBITS.LOGLogoyour A dr
ive.    Turn the disc over before following these links    Article 1  - introduc
ing a disc menu  Article 2    - line 40, testing keys and moving the cursor  Art
icle 3    - getting BASIC and machine code to work together (part 1)  Article 4 
   - part 2, and the machine code from the disc menu  Article 5    - final artic
le on the disc menu  Article 6  - a general purpose menu subroutine  Article 7  
  - how to get the most out of the menu subroutine  Article 8    - how the menu 
subroutine works  Arti definitions for the 464 and 664 (see article 21)  A14T1ta
ble from article 14 with syntax of BASIC 1.1 commands  AI1.BASlisting from artic
le 16  AI2.BASlisting from article 16 with vocabulary saving  AI3.BASimproved ve
rsion of AI from article 17  AI4.BASAI with a binary tree (see article 19)  AI5.
BASAI with a hash table (from article 20)  AI6.LOGAI in Logo - the version publi
shed in WACCI  AI7.LOGAI in Logo - an improved version using property lists  LIS
TEX.BASexample linked list from article 9  - a card game  Article 10 - programmi
ng a MIDI interface  Article 11   - the main MIDI messages, and an RSX to send t
hem    Links to articles on this side of the disc         Article 12   - other M
IDI messages, and a program to play a tune  Article 13 - how to adapt 6128 progr
ams for the 464, with an RSX to help  Article 14   - commands added in BASIC 1.1
, and what to do with most of them  Article 15   - bugs in 464 BASIC, and how to
 deal with them  Article 16 - AI an "artificial intelligence" convcle 18  SCAN46
4.BASRSX to scan for 464-unfriendly BASIC (see article 13)  SCAN464.BINbinary fi
le for the above  SCAN6128.BASversion of SCAN464 to run on BASIC 1.1 machines  S
CAN6128.BINbinary file for the above  TUNE.BASprogram to play a tune from articl
e 12    ----  * See "Blast from the Past", WACCI 118, Jan 1998, p. 27-29.  nd Hi
lary Phillips    The Programmers' Patch don published in WACCI  AI7.LOGAI in Log
o - an improved version using property lists  LISTEX.BASexample linked list from
 artiersation program  Article 17   - improving the program using a linked list 
 Article 18   - more about linked lists, and Mr Black the newsagent  Article 19 
  - improving search speeds with binary trees  Article 20   - using hash tables 
to reduce searching time  Article 21   - AI in Logo    Other files on both sides
 of the disc    DISC.BASruns the Loom hypertext viewer  HELP.TXTthe help text fo
r Loom  LINKBASE.TXTthe linkage data for Loom  LOOM.BINthe Loom program  MESSAGE
S.TXTthe message texts for Lt month's Blast from the Past are  anything to go by
, we have plenty     of reason to celebrate.  Then  again,  I  have  run out of 
inspiration for     subheads this month...       SO WHAT IS MIDI THEN     I supp
ose we ought  to  start  with  the  obligatory explanation that MIDI     stands 
for Musical Instrument  Digital  Interface,  and  is a standard for     control 
and communication developed  by  the major keyboard manufacturers.     All moder
n keyboards (except  the  cheaper  models)  have MIDI socke  N left of  "is"  is
  "how",  and  to the right of "is" is     "trees".       CLIMBING TREES     Thi
s structure means that we can search  for a word very quickly.  Suppose     we w
anted to search for the word "how".   Starting at the top of the tree,     we ha
ve the word "This".  We move  right, because "how" comes after "This"     in ASC
II order.  Moving right  we  come  to  "is".   This time "how" comes     before 
the word, so we  move  left,  and  find  the  word we want.  Try it     yourself
 with one of tat the top and grow downwards,     with the leaves at the bottom. 
 We are just going to look at binary trees,     which are the easiest to underst
and.   There  are other sorts of tree, but     they are much harder to cultivate
 using BASIC.       We are going to use a binary tree  to keep the words in AI i
n alphabetical     order.  The diagram shows a tree with  five  words in - "This
 is how trees     grow".  The words would  be  stored  in  a  string  array,  (w
$  in the AI     program), and would be at thehe other words in the tree.       
What happens when we search for a word  which  is not in the tree  Let us     tr
y with the word "leaves".  It is  right  of  "This", so we move to "is".     It 
is right of "is", so we  move  to  "trees".  It is left of "trees", but     ther
e isn't anything left of "trees" because  le(4) is zero.  From this we     know 
that "leaves" cannot be in the tree.       In AI, we add new words to  the  voca
bulary.  By searching for "leaves" we     have found that "leaves" is not in   p
ositions  shown  by the numbers at the top     left of each box.  So w$(2) would
 be  "is", for example.       We also have two numeric arrays, "le"  and  "ri". 
 These are used to point     to the parts of the tree which are down  to the lef
t and down to the right     of the current word.  Looking at the word "is" at w$
(2) again, le(2) is 3,     pointing down and left to w$(3)  which  is  "how".  D
own and to the right,     ri(2) is 4, pointing to w$(4), which is "trees".      
            1 This          #Programmers' Patch 19 - WACCI 128, Feb/Mar 1999, p.
 26-28     PROGRAMMERS' PATCH 19     By Matthew Phillips       We return to the 
computer chat  program,  AI,  which we first looked at in     the October issue.
  We are going to  add  quite  a bit more to the program     this month, so the 
whole listing has been reprinted to make things easier.     It is saved on disc 
as AI4.BAS   The  main changes are a couple of new     subroutines, at 800 and 9
00, but a  few other lines have been altered too,     so   le 0   ri 2          
                                           2 is                        le 3   ri
 4                           /                            3 how             4 tr
ees                le 5   ri 0      le 0   ri 0                   /           5 
grow        le 0   ri 0       If there is nothing further down the tree, then  w
e store 0 in le or ri to     show that there are no further branches  in that di
rection.  So le(1) is 0     to show that there is nothing down to the le if you 
are going to load up  an older version of the program, make sure     you check a
ll the lines for changes carefully.       HIDE AND SEEK     If you have spent a 
long time talking to the computer with the AI program,     you will have found t
hat the  computer  takes an increasingly long time to     respond to each new se
ntence.  As you use new words, its vocabulary grows,     and it takes longer to 
go through the array of words to match up those you     type with the ones it kn
ows.  If you  have taughft of "This".       We are using the tree to keep the wo
rds in alphabetical order.  Actually I     mean ASCII order, because that's  wha
t  the  computer  can do most easily.     The main difference is that all the  c
apital letters come before the small     letters, so "This" comes before  "is". 
  The  tree has been constructed in     such a way that if you look at any  word
 you will see that the word to the     right of it comes after it in ASCII  orde
r, and the word to the left comes     before it.  To thet it 300 words and you u
se     a new one, it will have  to  look  through  all  the other 300 words firs
t     before adding the new word on the end.       We need a method of searching
 for  words  that will work quickly even when     there are a lot of words to se
arch through.       NUMBER ONE THE LARCH     As I hinted last time, this month w
e are going to look at trees.  The tree     is a very useful data structure, but
  for  some reason, all trees grown by     computer scientists start with their 
roots    N when searching  for  a  new  word,  but  in fact it would     probabl
y be more like nine words!  This  is because with each new layer on     the tree
 we can add twice as many  words as were in the previous layer, so     while a 2
-layer tree can have at  most  3  words in it, a 9-layer tree can     have 511. 
 When searching for  a  word  we  just  move  from the top layer     downwards l
ooking at one word on each layer.       Computer scientists say that searching  
a  binary  tree has "order log n",     whi and 160.  Line 150 used  to  have a l
oop looking through the whole     of the w$ array for  the  word  in  question. 
  Instead we just GOSUB 800.     Line 160 uses the information returned  from  t
he subroutine.  If cword is     not zero, the computer had already met  the  wor
d.  We proceed to line 170     to make the link as before.   If  cword  is  zero
,  it  is a new word.  We     increase nwords and store word$ in  the w$ array, 
setting other variables,     including le and ri, to zero.  We point cwordch bas
ically means it's a Good Thing.       FROM LITTLE ACORNS...     The main routine
 added to the program is  found in lines 800 to 830, which     searches the tree
 for a given word.   The  idea is that you store the word     in the variable "w
ord$", and  then  GOSUB  800  to  call the routine.  The     routine searches th
e tree.  If the word  is found, then the variable cword     is set to the number
 of  that  word.   Otherwise when the subroutine ends,     cword is equal to zer
o, and  the  variable  "pa at the newly added word, and     GOSUB 840, another n
ew  subroutine.   Remember  that  parent points to the     last word that we  lo
oked  at  in  the  tree.   Our  new  word needs to be     attached to the tree a
t this point -  the only question is whether it is a     left branch or a right 
branch.   Line  840  compares the new word with the     parent word, and sets up
 le(parent) or ri(parent) as appropriate.       I said I would explain the start
 of line  800.  Why do we set up parent as     zero and cwrent" points to the pa
rt of     the tree that the word should be attached to.       Let's see how it d
oes it.  Line 800  sets  up parent to be zero, and cword     to be ri(0).  I wil
l explain why  later, but it basically means that cword     starts off at the to
p of the tree.   We then have a WHILE-WEND loop, which     keeps going until cwo
rd0.  Just within  the  loop, parent is set to equal     cword.  This means that
 parent is  one  step  behind  cword - it points to     what cword was last time
 round.  ord as ri(0)  Well, remember  that to start with there will be     noth
ing in the tree.  Our routine  has  to  cope with starting a tree from     scrat
ch.  Let's see what happens.  The  variable ri(0) starts as zero when     we fir
st run the program.  This  means  that  when we search for the first     word ev
er, the loop in line 800  will  never get started, as cword is zero     straight
 away.  We return from the  subroutine with parent and cword equal     to zero. 
 Line 160 adds the first word to the arr     Line 810 is straightforward.  If th
e  word  we  are looking for, word$, is     equal to the word we are pointing  t
o  in  the tree, then we exit from the     subroutine.  This means that cword (a
nd parent) are equal to the number of     the word as found in the w$ array.    
   If we get to line 820,  then  word$  must  either come before or after the   
  word in the tree.  If it comes before,  then cword is set to le(parent) to    
 go left, otherwise we go right.       We then come to the WEND, which   the  vo
cabulary, but when we got stuck     trying to move left from  "trees"  we  also 
 found the place that "leaves"     would go in the tree.  If we put "leaves" in 
at w$(6), we can set le(4) to     6 to point from "trees" left to the word "leav
es".       Notice that we only looked at  three  of  the  five words in the tree
 when     searching for "leaves".  This improves  the  speed of searching for wo
rds.     If we had five hundred words, you  might  expect  to have to look at th
ree     hundred  of themwill  return  us to the start of the loop     provided t
hat cword is not zero.  If cword is zero this means that we have     come to the
 end of the tree.  We have  not found the word, and there is no     point in sea
rching  further.   The  loop  ends,  and  we  RETURN  from the     subroutine wi
th cword equal to zero, and  parent pointing to the last word     that we looked
 at in the tree.       ...MIGHTY OAKS DO GROW     How does this tie in with the 
main program  Here the main lines to change     are 150  N#Programmers' Patch 18
 - WACCI 127, Jan 1999, p. 22-24     PROGRAMMERS' PATCH 18     By Matthew Philli
ps       Have you ever thought how boring  your  computer's  memory is  To the Z
80     processor it just looks like 65536 bytes, one after the other.  That's al
l     very well for storing the National Lottery  results for the next 90 years,
     but to do something  useful  with  it,  we  have  to  impose  some sort of 
    structure so that we  can  store,  retrieve  and  manipulate complex data.  
   Read oay at w$(1), cword is set     to 1, and we GOSUB 840.  The  new  word i
s compared with w$(parent), which     is w$(0), and always the empty string.   T
he new word is therefore greater     than w$(parent), and so ri(0) is set to 1, 
the value of cword.       And that's all there is to it  next  time 800 is calle
d, cword will start     off as 1, the top of the tree, and everything will work 
as described.       BONSAI BEECH     The other alterations to the program includ
e  lines 620 and 625, which are     partn to learn about Mr Black  the  newsagen
t and his imaginative use of     arrays and linked lists.       ENTOMOLOGY CORNE
R     Well, I promised an answer to the puzzle I set last month.  The program as
     it stood contained a bug, which could be cured by adding these commands to 
    the end of line 435         w$(nwords)""lk(nwords,0)0       It might seem un
neccessary to set a  previously unused element of a string     array to the  emp
ty  string,  and  to  set  a  previously unused numerical     variab of the load
ing routine.  When loading a saved vocabulary from disc we     have to build up 
the tree properly.  It uses the same routines, but can be     simpler because we
 know that each  word  read  in  from disc will be a new     one.       I have a
lso added a subroutine at 900, which is called by line 43.  If you     type "*SH
OWTREE" instead of  a  sentence,  the  subroutine  will display a     representa
tion of the first five layers  of  the  tree on screen.  You can     use this to
 see how the tree grle to zero, because when you  dimension  arrays in BASIC tha
t is how     the variables start out.  In fact,  it  would be unneccesary, but t
here is     one circumstance in which these variables  might have been used befo
re and     might have acquired different values.       Normally the value of nwo
rds will just increase,  but if we had built up a     large vocabulary in memory
, and  then  loaded  an older smaller vocabulary     file from disc, nwords woul
d decrease.  All  the extra words we had taught     ows  as you add new sentence
s.  Try it with     "This is how trees grow",  and  you  should  get  the  same 
tree as in the     diagram.  $$$PATCH     By Matthew Phillips       We return to
 the computer chat  program,  AI,  which we first looked at in  added a subrouti
ne at 900, which is called by line 43.  If you     type "*SHOWTREE" instead of  
a  sentence,  the  subroutine  will display a     representation of the first fi
ve layers  of  the  tree on screen.  You can     use this to see how the tree gr
it would still be there  in  memory,  but  are  not  looked at because the     p
rogram only looks at the w$ and lk  arrays up to the point set by nwords.     If
 we then taught it a new  word,  or  required a new dummy link (which is     wha
t line 435 is dealing with),  nwords  would increase again, and we have     to m
ake sure that any data remaining  from the larger vocabulary are wiped     so th
at they do not interfere with the correct operation of the program.       That i
s why we need to  add  those  coe job.  Listing 1 is a piece  of  BASIC  which i
nstalls a couple of RSX     commands, and Listing 2 is the assembly language for
 the RSXs.  They are     saved on the disc as SEND.BAS and SEND.ASM       To use
 the RSX commands, type in Listing  1  and run it.  If you have made     any mis
takes in  the  typing,  these  will  be  spotted  when  you run the     program.
  Once the RSXs are installed, you  need to use the CHOUT command     to select 
the type of MIDI interface you are using.         CHOUT,0 mmands  to  the end of
 line 435.  In     fact, there is another line that needs altering.  Line 160 sh
ould read       160 IF cword0 THEN nwordsnwords+1w$(nwords)word$         lk(nwor
ds,0)0cwordnwords       The fully debugged version  is  on  the  current  Progra
mmers' Patch disc,     WACCI PD 98.  While we are talking about bugs, I unearthe
d one in the SCAN     RSX that was published back in  WACCI  no.  122  in June. 
 The program was     meant to print up BASIC lines  that  would  not  run  on  a
   N find a value x where nextname(x)  is  zero.  This indicates that there are 
    no further entries in the list.       10 DIM name$(5),nextname(5)     20 FOR
 x1 TO 5     30 READ name$(x)GOSUB 140     40 NEXT     50 PRINT" x name$(x)"TAB(
15)"nextname(x)"     60 FOR x0 TO 5     70 PRINT xname$(x)TAB(14)nextname(x)    
 80 NEXT     90 PRINTPRINT"In order"     100 x0WHILE nextname(x)0     110 xnextn
ame(x)PRINT name$(x)     120 WENDEND     130 DATA Egbert,Alfred,Charlie,Bertrand
,Desmond     140 REM ihere is another element in the list, line     110 moves x 
on to the next element and prints it up.       WHAT'S IN A LIST     What are the
 advantages of  storing  things  in  linked lists  Usually in     BASIC we store
 the items in the right order in an array.  The disadvantage     of this approac
h comes when you have  to  insert a new item into the array     in the right pos
ition.  All of the following elements in the array have to     be shuffled down 
to make room.   If  you  had  a  list of a hundred nnsert into list     150 ynex
tname(0)py0     160 WHILE y0 AND name$(y)name$(x)     170 pyyynextname(y)     18
0 WEND     190 nextname(py)xnextname(x)y     200 RETURN       The listing  saved
 on disc as LISTEX.BAS  implements  this  structure.     Five names  are read  o
ne by one from  the data  line 130  into an  array,     name$.   After reading  
each one, the subroutine at 140  is called,  which     inserts each new name int
o  the  correct  position  in  the linked list by     alphabetical orames,     a
dding another name to the array  would  often entail moving down fifty or     mo
re strings, whereas inserting in  a  linked  list just involves changing     two
 numeric array elements.  If you  have  to  do  quite  a bit of this, a     link
ed list approach can save a lot of time.       As well as storing names, you mig
ht have another array storing the address     of each person.  If you wanted  to
  keep  the names in order, then without     the linked list approach you would 
also  have to move thder.  The element we  want to add to the list has just been
     stored in name$(x).  We  need  to  look  through  the existing list to see 
    where it fits in, so we start  variable y off pointing to the start of the  
   list by setting it to nextname(0).       The important lines to look at  are 
 160  to  180.   The WHILE loop in 160     continues as long as y0 (which  means
  we  haven't reached the end of the     list), and while name$(y)name$(x), that
 is while the name pointed to by y     comes before464, but as it     stands it 
also prints up any  line  containing an RSX command!  A debugged     version is 
now on the Programmers'  Patch  disc, with an enhancement which     prints up li
nes containing RSXs  with  direct  string arguments, which are     not allowed o
n the 464.       CONTINUITY ANNOUNCEMENT     Last month we used the  concept  of
  the  linked  list in a rather complex     situation to allow us to improve the
 AI  program.  I thought it would be a     good idea to give a  short  programmi
ng  name$(x) alphabetically.  Line  170  stores the present value     of y in py
, and then moves y on to  the next item in the list by setting y     to nextname
(y).       Upon reaching line 190,  we  know  that  py  is  pointing  to  a name
 that     precedes name$(x) and that y  is  either  pointing  to a name that fol
lows     name$(x), or we have  reached  the  end  of  the  list.  We have theref
ore     reached the correct position to insert name$(x).  This is done in line 1
90     by setting nextname(py) to x example  of a simpler linked list     struct
ure.  The structure consists  of  a  string  array,  name$, used for     storing
 names, and a numerical array,  nextname,  which points to the next     element 
in the list.  To find the  first  element  in the list, we look at     nextname(
0).  If nextname(0) was 3, say,  then  name$(3) is the first name     in the lis
t.  To find the next  name,  we look at nextname(3).  That might     be 1, in wh
ich case name$(1) follows  name$(3) in the list.  Eventually we    ,  so  that  
name$(x) follows name$(py) in the     list, and  setting  nextname(x)  to  y,  m
aking  whatever  used  to follow     name$(py) follow name$(x).       After line
s 20 to 40 have read in  the  data and inserted the names in the     list, lines
 50 to 80 go  through  the  array  printing up the contents, so     that you can
 see how it all works.  Follow the links through to check that     it works.  Th
en lines 90 to 120 print  up  the list in order.  We start by     setting x to b
e zero, and while t   N         in  order  of  their  birthdays  through  the ye
ar.     Inserting a new name  in  the  list  would  involve  putting them into t
he     correct position in  the  nextname  array  according  to  the alphabetica
l     position of  the  name,  and  into  nextbirthday  according  to  the date.
     Depending on the arrangement of  the  report  that  you required you would 
    either use nextname or nextbirthday  to  run  through the data and display  
   it.       So far the first element in the list has been pointhas a linked lis
t called     nextdebt so he knows who next to take to the small claims court.   
    DOUBLE DUTCH     There are lots more possibilities for  linked  lists.  One 
important one I     ought to mention is the  doubly-linked  list.   It  is  easy
 enough in the     example we have looked at to find the next item in the list, 
but sometimes     it is useful to go up and down the  list.   If the list is lon
g it is most     efficient to have a second linked  list  which  holds the items
 in reverse     ed to from nextname(0),     and the linked list has  included  a
ll  the  elements  in the name$ array.     Linked lists have much wider applicat
ions.       THE TALE OF MR BLACK     Mr Black the newsagent has 1208  customers.
  Their names and addresses are     stored  in  the  string  arrays   name$   an
d  address$.   Their  delivery     requirements are  stored  in  the  whichpaper
$  array.   Mr  Black employs     several newspaper  delivery  operatives  whose
  names  are  stored  in the     paperboy$ arrayorder.  We could call this previ
ousname.       DOUBLE GIN     That sounds a good idea!  See you next month for a
 spot of arboriculture.  $$$tch 18 - WACCI 127     PROGRAMMERS' PATCH     By Mat
thew Phillips       Have you ever thought how boring  your   enough in the     e
xample we have looked at to find the next item in the list, but sometimes     it
 is useful to go up and down the  list.   If the list is long it is most     eff
icient to have a second linked  list  which  holds the items in reverse     .  A
 numeric array, called  paperround, points to the first     address on a paper b
oy's round.       For example, paperboy$(6) is  Jim.   The  number  at paperroun
d(6) is 423,     which means that Jim must start  his  round at address$(423), n
umber 4 The     Oval,  delivering  whichpaper$(423).   He  does  not  need  to  
know  that     name$(423) is Mr Philip Sprout.  What  he  does  need  to know is
 the next     address on the paper  round.   This  is  stored  in the array next
address,     which  contains#Programmers' Patch 12 - WACCI 121, May 1998, p. 23-
25     PROGRAMMERS' PATCH 12     By Matthew Phillips       It's a wet and windy 
night,  and  I  am  sitting  in front of the computer     trying to think of a g
ood  beginning  to  the article.  What will grab the     attention of the WACCI 
reader and entice even the most timid programmer to     read a load of technical
 information on the dullest aspects of MIDI  Well     this won't for sure...    
   MORE STATUS CODES     Last month I went through most of   a  linked   list   
for   each   paper  boy.   Looking  at     nextaddress(423), we find that it is 
27,  and address$(27) is number 5 The     Oval, which happens to be  the  house 
 next door.  Nextaddress(27) is 678,     and address$(678) is 8 Queen's Gardens,
 just across the road.       When he gets to the last  address, stored in addres
s$(67), nextaddress(67)     is zero, which means he has reached the end of the p
aper round.  This is a     good thing, as his bag is empty.       Now, the only 
values of ne addresses around     when inserting a new name in the array.  The l
inked list method means that     this associated data can stay put.   The  infor
mation  on the order of the     elements has been transferred from the array to 
the linked list.       Using linked lists to keep things  in  order  means  you 
can store data in     several different  orders  at  once.   If  you  introduce 
 another  array,     "nextbirthday" for example, then that  could  be  used  to 
run through the     names of  the  people  extaddress  we  have  looked at are t
hose for the     addresses on Jim's round, which means the  other elements of th
e array can     be used to store the linked lists for  the other paper boys.  Si
nce no two     of them deliver to the same address,  there is no problem.  For e
ach paper     boy paperboy$(n), paperround(n) points to the  address at the star
t of the     round.       Mr Black also has another linked list, nextname, and h
e uses this to print     up the names of his customers in order.   He also   Ne 
 in  two varieties, system common messages,     from &F0 to &F7, and system real
-time  messages, &F8 to &FF.  System real-     time messages have the  unique  p
roperty  that  they  can  be  sent at any     moment, even in the middle of anot
her message.       The most common of these  messages  is  the  timing clock, co
de &F8.  This     signal is sent out 24 times in every crotchet to keep all the 
equipment in     synch.   When  the  music  slows  down  the  clock  signal  is 
 sent  less     frequently.  Tthe  MIDI status codes you are likely to     meet.
  There are a few more  that  are  worth knowing about.  Some you may     want t
o send to a keyboard  for  special  effects.  Other messages you may     meet wh
en receiving data from a  keyboard,  in  which case it is useful to     know wha
t it is safe to ignore.       First we have Control Change, with status code &Bx
, where x is the channel     (0 to F for channels 1 to  16).   This  allows  you
 to change all sorts of     things.  It is followed by two bythe reason it is  s
ent  24  times  in  a  crotchet is to make     timing triplets possible.       A
nother important system message is the system exclusive message.  This is     us
ed to send special data specific to  a particular type of keyboard.  The     mes
sage starts with &F0 and is followed  by data bytes, the first of which     indi
cates the manufacturer of the keyboard  (e.g. 65 for Roland).  The end     of th
e data bytes is marked  by  &F7.   System exclusive messages are used     for al
l sorts of pures, the  first of which is the number of     the control to change
, and the second  is  the new value for that control.     For example, to turn t
he sustaining pedal on for channel 1 you might do         SEND,&B0,64,127       
and SEND,&B0,64,0 would turn it off again.  The sustaining pedal is often     co
ntrol no. 64.  There are lots of  other  control numbers, but not all of     the
m are applied in a standard way from one keyboard to another.       Probably the
 most useful control  is  Bank  Select, whiposes, but  most  frequently  for sav
ing data from the     memory of the keyboard.  Most keyboards  can  transmit the
ir drum, tune or     sample memory as a system exclusive  message,  which can th
en be picked up     by the computer and saved to disc.       PLAYING A TUNE     
Well, I promised a program  to  play  a  tune,  and  here  it is.  Type in     L
isting 1, with line 300 adjusted  to  the number appropriate to your MIDI     in
terface.  You will need to run Listing 1 from last month's article first   ch is
 control zero.     This allows you to  choose  a  bank  of  instruments.   Remem
ber that &Cx,     Programme Change, allows us to choose an instrument for the ch
annel out of     128  different  instruments.   If  your   keyboard  has  more  
instruments     available, Bank Select is used to swap  in a different set.  Act
ually Bank     Select occupies controls 0 and  32,  and  the  two  values are co
mbined to     allow you to choose from 16384 banks of sounds, each with 128 inst
ruments!     If m is the ba  to install the RSX commands, or you  can  type this
 month's listing on the     end of last month's and run them both  together.  If
 you choose to do that     then add an extra line         5 IF PEEK(&9D00)1 THEN
 300       This will save the  RSXs  being  installed  again  if  you run the pr
ogram     several times.  Installing RSXs twice without resetting the machine ca
uses     problems.  This combined listing is saved as TUNE.BAS on the disc.     
  When you run the program you  should  get  the  firnk number, then you select 
it by sending         SEND,&Bx,0,a,&Bx,32,b       where         am128       bm M
OD 128       and x is 0 to F  for  the  channel  number.   Running status may al
low the     second &Bx byte to be missed out, but  I  am not sure about that.  I
 doubt     there is any keyboard available with over 2 million instrument sounds
, but     there we are...       SYSTEM MESSAGES     The other big set of  messag
es  are  the system messages, occupying status     bytes &F0 to &FF.  These  com
st half of a well known     tune played on your keyboard in beautiful three part
 harmony.       The program itself is quite simple.   Line  320 sets up an inter
rupt which     is called every 12/50ths of  a  second.   Alter  the  number to c
hange the     speed of the music.   Line  330  then  just  hangs  around waiting
 for the     signal that the music has stopped.       The subroutine at 400 is w
here  all  the  work is done.  The program reads     the data in lines 500 onwar
ds.  All  of the positive data n  N  lines of data.  In line 500 we  turn  on  a
  note on channel 1, by sending     &90,64,50.  This plays an E at a  medium  vo
lume.  Two notes are turned on     on channel 2 &91,52,40,55,40.  Pitch  52  is 
 an  E  an octave lower than     before, and 55 is a G.   The  velocity  values 
 of  40 mean they should be     slightly quieter than the note on channel  1.   
The  -4 is a signal to say     "now wait four beats before we send any more data
".       The next  line,  510,  just  turns  off  the  E  on  chanfrom  the  MID
I  interface  in  BASIC  is  not  really very     practical, as MIDI operates at
  31250  baud,  which is fast.  Even machine     code could have trouble keeping
 up.  The  only software I have written for     receiving MIDI data used  rather
  specialised  features  of  the RAM Music     Machine, so some practical exampl
es  of  receiving  data will have to wait     until I have had the opportunity t
o do a little more experimenting.       A LOOK TO THE FUTURE     You will be rel
ieved to read thatnel  1,  and then     immediately starts another E.  We then  
wait  two beats before reading the     data on line 520.  This turns  off  the  
E  again,  and also turns off the     notes on channel 2, which have lasted a to
tal of six beats since the start     of line 500.  There is no negative  number 
 at  the end of line 520, so we     read the data on line  525  straight  away. 
  This starts three more notes     playing.       We could have missed out the &
90  from  the  start of line 520, as running     s next month we will be going b
ack to some     ordinary programming and leaving MIDI alone for  a bit.  I have 
compiled a     very short list of books that  I  found  in  my local library whi
ch may be     useful if you want  to  learn  more  about  MIDI.   Your  library 
may have     similar books, but if they haven't got anything useful they should 
be able     to get some of these on inter-library loan for you.       If any of 
you would like us to  cover  any other aspects of MIDI, write in     to Fair Com
metatus means that it would  still  be  in  force  because  it was the last     
status byte used, but it is probably more readable with it in.       Of course t
here is a lot of scope  for  improvement - the rest of the tune     could be add
ed for a start!   You  can  also use other MIDI commands apart     from Note On.
  For example, adding the following data to the start of line     500 would choo
se the instruments for the two channels         &C0,41,&C1,1       You could  ad
d  more  of  these  types  of  MIumbers are read     and sent to the MIDI interf
ace.  When  a negative number is reached (eg at     the end of line 500), it is 
not  sent  to the interface.  Instead t is set     to the equivalent positive nu
mber.  This  indicates  the amount of time to     wait before reading the  next 
 batch  of  data.   Line  400  is where t is     gradually decreased until it is
 zero again, and  only when t is zero do we     read the next set of data.      
 The value -100 indicates that the end of the piece has been reacDI  command  to
  change  the     instruments during the piece.       RECEIVING MIDI DATA     Up
 till now we have  concentrated  entirely  on  sending  data to the MIDI     int
erface, but it is also  possible  to  receive  data  sent by other MIDI     devi
ces.       Bit zero on the MIDI interface  status  port  indicates whether a byt
e has     been received, at which point the byte  can  be read on the data read 
port     of the interface.  See Table 1  for  the port addresses.  For example, 
the     followinghed, so if     you want to save typing you could put -100 at th
e end of line 570 and stop     there.       How does the data work  Well basical
ly it  is a load of MIDI commands, as     explained last month.  They  are  all 
 Note  On  commands,  apart from one     Polyphonic Key Pressure in  the  middle
  of  line  650.  Turning notes off     again has been done by using  Note  On  
commands  with a velocity value of     zero.       Just to get a feel for what  
is  happening,  let  us go over the first few    little program would wait for  
a  byte  to be received and print     the hex value on the screen         10 WHI
LE (INP(&F8EE) AND 1)0WEND       20 PRINT HEX$(INP(&F8EF))       The WHILE WEND 
loop could  be  replaced  by  an example of the little-used     WAIT command    
     10 WAIT &F8EE,1       but if nothing is received, you have to reset the com
puter to break out of     it!  The port values are those for the RAM Music Machi
ne - just change the     numbers according to Table 1.       Reading bytes     N
         ad (read only)     &F8EF   &F8F3   &F8E1     data write (write only)   
&F8ED   &F8F3   &F8E1   sitting  in front of the compute20E60FC630C3EC90C69027CE
695   1140 DATA 4027C3EC90000000000000002A6  wn  on  the  wide  desert  plains  
of  Mexico.  Juan CarloEEC9B1C8766   1040 DATA 0E20E60FF5CDDC94F1C97EB7744   105
0 DATA C823FE2220F8C97EB7C823F5701   1060 DATA CDEC90F1FE2220F3C97E23B778E   107
0 DATA F28994C97E23B7FA9D94FE09762   1080 DATA C4EC9018F3E67FC3EC9006046F9   109
0 DATA 0E00DD21C994DD5E00DD56014D8   11ing no     good for MIDI.         Advance
d MIDI user's guide by R.A. Penfold, 2nd ed., PC Publishing, 1995     ISBN 1-870
775-39-2     Not so useful as the  Practical  MIDI  handbook,  but may be worth 
dipping     into if you come across a copy.         Music technology reference b
ook by Peter Buick and Vic Lennard, PC     Publishing, 1995     ISBN 1-870775-34
-1     Full of technical detail useful for programming MIDI software.  Well wort
h     reading if you want to find  out  the  details  of the areas I have skated
     over.           LISTING 1       300 CHOUT,0REM 1 for EMR, 2 for DHCP     31
0 RESTORE 500t1GOSUB 400     320 EVERY 12 GOSUB 400     330 WHILE t100WEND     3
40 END     400 tt-1IF t0 THEN RETURN     410 DIREAD a     420 WHILE a0SEND,a    
 430 READ aWEND     440 t-a     450 EIRETURN     500 DATA &90,64,50,&91,52,40,55
,40,-4     510 DATA &90,64,0,64,50,-2     520 DATA &90,64,0,&91,52,0,55,0     52
5 DATA &90,71,50,&91,52,40,55,40,-4     530 DATA &90,71,0,71,50,-2     540 DATA 
&90,#Programmers' Patch 13 - WACCI 122, June 1998, p. 22-24     PROGRAMMERS' PAT
CH 13     By Matthew Phillips       The sun beat down  on  the  wide  desert  pl
ains  of  Mexico.  Juan Carlos     breathed a heavy  sigh  as  he  surveyed  the
  arid  landscape.  His horse     snorted.  They had waited a long time.   Lesse
r men would have turned back     by now,  but Juan Carlos had determination.   H
e would see it through.  At     last he sensed in the distance a  slight disturb
ance in the air.  And then     the d71,0,&91,52,0,55,0     545 DATA &90,66,50,&9
1,50,40,57,40,-3     550 DATA &90,66,0,67,50,-1     560 DATA &90,67,0,66,50,-2  
   570 DATA &90,66,0,&91,50,0,57,0     575 DATA &90,64,50,&91,52,40,55,40,-6    
 580 DATA &90,64,0,&91,52,0,55,0,55,45,-2     590 DATA &90,71,70,-2     600 DATA
 &90,71,0,&91,55,0     605 DATA &90,74,75,&91,54,50,57,50,-2     610 DATA &90,74
,0,&91,54,0,57,0     615 DATA &90,76,80,&91,52,55,&91,55,55,-4     620 DATA &90,
76,0,&91,52,0,&90,74,75,&91,52,60,-2     630 DATA &90,74,0,&91,52,0,ust cloud ap
proaching, and  finally  the sound of hooves.  Flaminguez     had come.  The gau
nt, bearded  messenger  thrust  a packet into his hands.     Carlos tore it open
.  Here it was - the June issue of WACCI at last.       BACK 2 BASICS       One 
of the great things about WACCI is  the PD library.  There is such a     variety
 of  games  and  utilities.   Most  of  the  discs  have  something     entertai
ning on, even if it isn't  all  first  class.  The only problem if     you are a
 464 user like me is55,0     635 DATA &90,71,70,&91,55,65,62,65,-2     640 DATA 
&90,71,0,&91,55,0,62,0     645 DATA &90,73,60,&91,57,65,64,70,-2     650 DATA &9
0,73,0,69,50,&A1,57,60,&A1,64,65,-2     660 DATA &90,69,0,&91,57,0,64,0     665 
DATA &90,71,40,&91,52,40,67,40,-6     670 DATA &90,71,0,&91,52,0,67,0,-100      
     TABLE 1 MIDI interface port addresses                                 RAM  
   EMR     DHCP     status (read only)        &F8EE   &F8F2   &F8E0     control 
(write only)      &F8EC   &F8F2   &F8E0     data rent and let us know.   In  fac
t, write in with any suggestions     on what you would like us to cover  in Prog
rammers' Patch, and we will see     what we can do!         USEFUL BOOKS       P
ractical MIDI handbook, by R.A. Penfold, 3rd ed., PC Publishing, 1995     ISBN 1
-870775-36-8     A good general introduction to all  aspects  of MIDI.  Perhaps 
geared more     towards the musician than  the  computer  user.   It  even  ment
ions 8 bit     computers, but don't believe what  it  says  about the Archimedes
 be  Nu can make the FRAME     command do anything you like simply by patching t
he &BD19 vector!       CLEAR INPUT       There are various ways of clearing the 
 keyboard buffer.  The one I like     to use is         WHILE INKEY$""WEND      
 but you may want something shorter, in  which case try CALL &BB03 instead.     
This call has the side effect  of resetting the expansion characters.  For     e
xample, if you have a  disc  drive  and  Protext  on ROM, CTRL+ENTER will     pr
oduce RUN"DISC, but after calling &the extra     BASIC 1.1 commands displayed co
rrectly!  You can then go through and alter     these lines so that they work on
  the  464, typing SCAN from time to time     to see if there are any more left.
   Remember that you will not be able to     use EDIT if there is a BASIC 1.1  c
ommand  in the line.  Use SCAN to list     the line, and then type a replacement
 straight into the machine.         The LIST command lists all of  the  lines to
 the screen, displaying the     extra 1.1 commands properly.  Pe  that  some  of
 the PD stuff doesn't work on     the CPC 464.  If it requires 128K of RAM, then
 I am all right, as I have a     dk'tronics RAM pack, but if it  uses  certain  
commands, then things get a     bit more tricky.         The BASIC in the 464 is
  version  1.0,  whereas  the version in the 664,     6128, and the Plus machine
s (I think)  is  BASIC 1.1.  This adds a few new     commands to BASIC, and alte
rs how a  few others work.  Most of the changes     are in graphics commands.   
      With a smarhaps more  useful are the variants LISTP     and LISTF.  The fo
rmer lists the whole  program to the printer instead of     the screen, and the 
latter lists to a file.  For example         a$"filename"LISTF,a$       would li
st the whole program to a file called "filename" (silly name for a     file).  Y
ou could then load the file  into  an editor like Protext and use     the search
 and replace facilities to correct the lines.         I have also provided SCANP
 and SCANF which work in a similar way.ll amount of work,  many  of  these  BASI
C 1.1 programs can be     edited to run on a 464.  The  main  problem  is that i
f a program contains     any of the extra commands added  in  BASIC  1.1, then y
ou cannot even list     the lines on a 464  to  see  what  the  problem  is!   T
his is because the     computer stores your programs in  a  special  way which i
nvolves replacing     the commands with tokens.  Since the 464  does not have th
e extra commands     in BASIC 1.1, it has no idea what the tokens mean          
This program only works on the 464  by  the  way.   If you have a 664 or     612
8, then  there  is  another  program  on  the  Programmers'  Patch disc     spec
ially for you.   Just  RUN"SCAN6128"  to  load  and  install the RSX     command
s.  You can use it  to  identify  which lines will cause problems     for 464 us
ers, and rewrite  them  if  possible.   The program only has the     scanning co
mmands, not the listing ones,  and just displays the numbers of     the lines th
at would offend  a either.       I'VE GOT A LITTLE LIST       To solve this prob
lem, I have come  up with a little program, printed as     Listing 1.  Actually 
it is a very long  program, and so we have decided to     compile a special Prog
rammers' Patch PD disc.   The disc will have all the     programs from the serie
s on  it,  including  this  month's, and a few more     besides.  Order your cop
y from Dave  Stitson  now.  The version saved on     the disc is a version of Li
sting 1 omitting some bugs, and consists of the   464,  rather  than listing the
m.  You have     your own built in LIST command to do that!       QUICK FIX     
  Having identified the lines which  will  cause  problems, what can we do     a
bout them  There isn't much space left  this month, so we'll deal with a     few
 easy ones.       FRAME       This command can be replaced  with  CALL  &BD19.  
The FRAME command just     points to the &BD19 vector.  FRAME is  in fact the on
ly BASIC command that     has its execution address in RAM.  This  means that yo
   files SCAN464.BAS and SCAN464.BIN.  Just  RUN"SCAN464"  to install the RSX   
  commands.         The program installs some RSX commands.  The  idea is that y
ou then load     the piece of BASIC which will not  run  on the 464, and use the
se commands     to diagnose the problem.         What are the commands  A summar
y  is  in  the box marked Figure 1.  The     most useful one is SCAN.  This will
  scan the program for lines that will     not work on the 464, and lists them t
o the screen, complete with   N 50 POKE addr,a%chk%chk%+a%addraddr+1NEXT   60 IF
 chk%VAL("&"+RIGHT$(cod$,3)) THEN PRINT"Error in line"i%*10+100er-1   70 NEXTIF 
er THEN END   80 CALL &9000   90 PRINT"Machine code installed"   100 DATA 010D90
210990C3D1BC0000003A8   110 DATA 002190C33E90C34390C34890573   120 DATA C35390C3
5890C35D905343415D8   130 DATA CE5343414EC65343414ED04C4FA   140 DATA 4953D44C49
5354C64C4953544AE   150 DATA D000CD96901808CDAA901803505   160 DATA CD9B90215191
2292901820CD544   170 DATA 96901808CDAA901803CD9B905085E235623E5EB18EA510   710 
DATA FE1B20273E26CDEC903E58CD570   720 DATA EC905E2356230E000608CD533B2   730 DA
TA 94060753CD5394AFCB1217C6511   740 DATA 30CDEC90C36D92FE1C20293E5DC   750 DATA
 26CDEC900E00AF23ED6FCD665DE   760 DATA 94ED6FCD6694ED6F2BED6FCD767   770 DATA 6
694ED6F0E20CD6694ED6F235CA   780 DATA 23C36D92FE1D20105E23562342A   790 DATA E5E
B2323235E2356EBC3C692616   800 DATA FE1F202511C2B0010500EDB0488   810 DATA 3E053
2C1B0E50E00CD0FB9C5533   820 DATA CD9DEEC1CD18B9215EAECD7B72C   830 DATA 94E1C36
D92F60   180 DATA 215F92229290180B3E4206FC3FB   190 DATA CD27BB00C38FBC2AE9945E2
35E5   200 DATA 562B7AB328EAE51922E994E163E   210 DATA 23235E235623ED53E59422E75
02   220 DATA 94CD5F9218DD212B91180321460   230 DATA EF90CDCE9022ED903EC9326F6F1
   240 DATA 90C9CDCE9021489122ED903D65A   250 DATA 205E326F90DD6E00DD660146484  
 260 DATA 235E2356EB11EF94CD8CBCD8666   270 DATA 1846D1C1ED73ED94C5D511706EC   2
80 DATA 01ED53E994F5E53E4206C0CD6AB   290 DATA 27BBCD48BBE1F1C9C3EF90C5854   300
 DATA 47CD2BBD78C13836F5CD8ABB6AA   E222009CDEC906C9   840 DATA CD7B94C36D92FE7C
3006CDEC707   850 DATA 90C36D92200ACDEC9023CD90645   860 DATA 94C36D92FEFF20027E
23FEC06D4   870 DATA 20103E27CDEC907EB7CA6D925DC   880 DATA 23CDEC9018F5FEC5200A
E52166C   890 DATA 1594CD9094E118E7E5211F94633   900 DATA BE2338132007CD9094E1C3
6D555   910 DATA 92F57E23E68028FAF118E90E6B0   920 DATA 00F5CD0FB9F1C5061B2188E3
5ED   930 DATA E5F57E23B7282418037E23B74F1   940 DATA F2ED93F1BE2804D12318E9786B
A   950 DATA C63FFE40C4EC90E1CD9094C1816   960 DATA CD18B9E1C36D92F1310 DATA CD1
BBB301AFEC02016CD8DBB5F6   320 DATA 215ABB22ED90211894CD9094593   330 DATA ED7BE
D94C36890CD2EBD38DC770   340 DATA CD8DBBF1F5CD31BDF11803CD78F   350 DATA 5ABBFE0
AC0CD1BBBD0FEC0C07CE   360 DATA CD8ABBCD18BBF5CD8DBBF1FE8AB   370 DATA C0C018C0C
D95BCD8CD92BC18781   380 DATA C3ED73EB947EB7C823FEC5C884D   390 DATA FEC0C8FE862
00ACDC891FEA37FB   400 DATA CA5F92180CFEB3200DCDC8915E3   410 DATA FE8BCA5F92CDC
F9118D7FE947F2   420 DATA 280CFE952808FEBC2804FEBD598   430 DATA 200BCDCF9179FE0
4D25F92185AE   440 DBB03  it  will go back to RUN".  This     may cause problems
, or it may not.       ON BREAK CONT       This is easily replaced by ON BREAK G
OSUB xxx, where xxx is a line which     simply says RETURN.  You may not want to
 keep the command in anyway, as it     stops you from using the escape key to br
eak into the program.       AND NEXT TIME, IN EPISODE TWO...       Most of the r
est of the commands  relate  to graphics, and we'll look at     them next month.
  Can you wait that long  Juan Carlos can.       FIATA BCFEAE2804FEAF200BCDCF916
99   450 DATA 79FE03D25F9218A9FEBB20125E9   460 DATA CDC891FE2328EACDCF9179FE7FD
   470 DATA 02D25F9218932BCDCF91188D56D   480 DATA 7EFE20C02318F90E017EB7C859C  
 490 DATA 23FE01C8FE28200DCDF991FE692   500 DATA 2928EEED7BEB941876FE2928603   5
10 DATA F6FE2C20030C18DDCD1192184CC   520 DATA D87EB7C8FE01C823FE29C8FE7AC   530
 DATA 282005CDF99118EDCD119218531   540 DATA E8FE0E30062323CD8994C9FE621   550 D
ATA 18D823FE19C823FE1FD8200452E   560 DATA 232323C92B2BFE222003C372400   570 DAT
A 9GURE 1       SCAN - list to the screen lines that will not work on the 464   
  SCANP - ditto, but listing to the printer     SCANF,a$ - same again, but savin
g to the file a$       LIST - list the whole program to the screen     LISTP - d
itto, but listing to the printer     LISTF,a$ - same again, but saving to the fi
le a$         LISTING 1     10 SYMBOL AFTER 256MEMORY &8FFF   20 RESTORE 100er0a
ddrHIMEM+1   30 FOR i%0 TO 104READ cod$chk%0   40 FOR j%0 TO 11a%VAL("&"+MID$(co
d$,j%*2+1,2))  4FE7CD82006ED7BEB94181F62A   580 DATA FEFF20027E23E5CD4C92E1C96FA
   590 DATA 211F94BE2809D823F5CD899459D   600 DATA F118F4ED7BEB942AE594CDA27F6  
 610 DATA 943E20CDEC902AE7947EB720635   620 DATA 0A3E0DCDEC903E0AC3EC9023548   6
30 DATA FE0120147E23FE97CA9A93FE65E   640 DATA C0CA9A932B3E3ACDEC9018D9694   650
 DATA FE0420023C3CFE0E30134723355   660 DATA 23CD909478FE0730C43E279057A   670 D
ATA CDEC9018BCFE183007C622CD61F   680 DATA EC9018B1FE19200C7E23E56F57D   690 DAT
A 2600CDA294E118A1FE1A2804507   700 DATA FE1E20  N4DD5E00DD56014D8   1100 DATA D
D23DD23AFED523C30FB193D5AB   1110 DATA DDE5CDD194DDE110E57DC3D78BE   1120 DATA 9
41027E80364000A00B1C80E3AB   1130 DATA 20E60FC630C3EC90C69027CE695   1140 DATA 4
027C3EC90000000000000002A6  tthew Phillips       The sun beat dowDATA E601C630CD
EC9010EEC9B1C8766   1040 DATA 0E20E60FF5CDDC94F1C97EB7744   1050 DATA C823FE2220
F8C97EB7C823F5701   1060 DATA CDEC90F1FE2220F3C97E23B778E   1070 DATA F28994C97E
23B7FA9D94FE09762   1080 DATA C4EC9018F3E67FC3EC9006046F9   1090 DATA 0E00DD21C9
910 DEFINT a-zOPENOUT"d"MEMORY HIMEM-1CLOSEOUT  20 mwords1000mlinks6nwords0  30 
DIM w$(mwords),le(mwords),ri(mwords),lk(mwords,mlinks),tempw$(128),stack(5)  35 
MODE 2  40 LINE INPUT"",a$  41 IF UPPER$(LEFT$(a$,5))"*LOAD" THEN GOSUB 600GOTO 
40  42 IF UPPER$(LEFT$(a$,5))"*SAVE" THEN GOSUB 700GOTO 40  43 IF UPPER$(LEFT$(a
$,9))"*SHOWTREE" THEN GOSUB 900PRINTGOTO 40  50 wcount0GOSUB 300IF a$"" THEN GOS
UB 100  60 IF nwords THEN GOSUB 200  70 GOTO 40  100 WHILE INSTR(a$," ")0aINSTR(
a$," ")  1#Help for Loom hypertext reader v3.2  Loom is a system for viewing hyp
ertext a set of ordinary text files with links  between them.  Any text which is
 highlighted is a link.  Use the cursor keys to  position the cursor over a link
, and press the ENTER or RETURN key and you will  be taken to the appropriate pl
ace either elsewhere in the same file, or in a  different file entirely.    Ther
e are quick cursor movements similar to Protext    SHIFT left + rightMove left o
r right a word at a time  CTRL left + r10 tempw$(wcount)LEFT$(a$,a-1)a$MID$(a$,a
+1)  120 wcountwcount+1GOSUB 300WEND  130 IF a$"" THEN tempw$(wcount)a$wcountwco
unt+1  140 pword0FOR i0 TO wcount-1word$tempw$(i)  150 GOSUB 800  160 IF cword0 
THEN nwordsnwords+1w$(nwords)word$lk(nwords,0)0le(nwords)0ri(nwords)0cwordnwords
GOSUB 840  170 GOSUB 400pwordcwordNEXT  180 cword0GOSUB 400  190 RETURN  200 pwo
rd0GOSUB 500  210 WHILE pword0PRINT w$(pword)" "GOSUB 500WEND  220 PRINT CHR$(8)
"."PRINT  230 RETURN  300 WHightMove to start or end of line  SHIFT up + downScr
oll screen up or down one line  CTRL up + downMove up or down a whole page  CTRL
  + Move to top or bottom of document    Use the ENTER or RETURN key to follow a
 link.  Once you have followed a link,  press the "" key or the "B" key to retur
n to where you came from.    To quit Loom, press "Q".                 To leave t
his help screen, press "B"  ----------------------------------------------------
---------------------------  Original version (cSCAN464 BASpt to the printer"9Z"
LISTF,filename$  - ditto, with ou!   "scan464.bin",S "Scan 464 loaded and instal
led - for use on the Amstrad CPC 464 only"O"SCAN  - list to the screen those lin
es that will not work in BASIC 1.0"2("SCANP - ditto, with output to the printer"
92"SCANF,filename$  - ditto, with output to a file",F"LIST  - list all lines to 
the screen2P"LISTP - ditto, with outpu) Stephen Phillips 1995  Amstrad CPC versi
on (c) Matthew and Stephen Phillips 1997  Written using the HiSoft C compiler.  
Runtime routines (c) HiSoft 1988ader v3.2  Loom is a system for viewing hypertex
t a set of ordinary text files with links  between tlink,  press the "" key or t
he "B" key to return to where you came from.    To quit Loom, press "Q".        
         To leave this help screen, press "B"  ---------------------------------
----------------------------------------------  Original version (cD110D1186FC  
 970 DATA F25245CD427265616B0D8A4951B   980 DATA 444552D272444543A47E434F49F   9
90 DATA 5059434852A4DD46494CCCDE58C   1000 DATA 47524150484943D3DF4D4153491   10
10 DATA CBE04652414DC5E1435552535B4   1020 DATA 4FD2FFAFCB1217B128090E024B5   10
30 DATA E601C630CDEC9010EEC9B1C8766   1040 DATA 0E20E60FF5CDDC94F1C97EB7744   10
50 DATA C823FE2220F8C97EB7C823F5701   1060 DATA CDEC90F1FE2220F3C97E23B778E   10
70 DATA F28994C97E23B7FA9D94FE09762   1080 DATA C4EC9018F3E67FC3EC9006046F9   10
90 DATA 0E00DD21C99  No+oo o## #V#####V( %2!" 0  # # '#  !w!#8 #(!#($#O(#xREBrea
k IDERrDECCOPYCHRFILGRAPHICMASFRAMCURSO(0 #" #" ##!+V##R039'd  0''#(y #+ ##( ')(
)(, #(( (("((( F!(# Cqsuy#)( '0#### ###++"   #z!(#*4  Break IDERrDECCOPYCHRFILGR
APHICMASFRAMCURSO#" ##!!V##R0)/'d  0t to the printer"9Z"LISTF,filename$  - ditto
, with output to a file"d59 a06 8879  B a06 2993 2997 a06 8098  B a06 3002 3002 
a06 8098  B a07 351 359 a07 7839  B a07 2184 2192 a07 7839  B a07 4214 4222 a07 
9130  B a08 549 556 a08 10333  B a08 614 618 a08 9431  B a09 596 621 a09 8473  B
 a10 4852 4858 a10 9828  B a10 9282 9294 a10 10101  B a11 451 459 a11 8131  B a1
1 532 540 a11 9079  B a12 3810 3818 a12 10511  B a12 8454 8460 a12 11768  B a13 
2075 2083SCAN6128BASp77NF,filename$  - ditto, with output to a file""   "scan612
8.bin",K "Scan 6128 loaded and installed - for use on any Amstrad CPC"W"SCAN  - 
prints the line numbers of those lines that will not work in BASIC 1.0"2("SCANP 
- ditto, with output to the printer"92"SCANF,filename$  - ditto, with output to 
a file"'d  0SCAN464 BINRR !!CHSXSCASCANSCANLISLISTLIST!Q" !"B'*K#V+z("K###V#SG"I
!+!"2o!H" 2onfF##VQFsOpSKB'HG+x860 !Z"!zOh.81Z sM#  £  ((( y( y #(y #+ ##( )(M)(
, s#(( (("((( MF!O(# Cqsuy#)( s0#### ###++"  M #!(#M*G *I    # #+ 0G##x0'0" #o&(
 #V# '&X#V#S0 )&#ooSCAN6128BIN !27SCASCANSCANB'bvg*8#V+z("8###V#S4"6!!"2.!" 2.nf
F##VFspS8B'HG+x860 !Z"!'.81Z s#  £  ((( y( y   NTUNE    BASpcc &90,69,0,&91,57,0
,64,0# &90,71,40,&91,52,40,67,40 ()  ,     d e addB$    coch4(   ("&"(co,,))2  a
dd,chch add addI ch("&"y(co,))  "Error in line" d eF  e  P B#Z"CHOUT and SEND in
stalled.""d 01099D211B9DC3D1BC119DC3 WRITE#9,lk(y,x)ylk(y,x)x1  736 WENDNEXT  74
0 CLOSEOUTRETURN  800 parent0cwordri(0)WHILE cword0parentcword  810 IF word$w$(p
arent) THEN RETURN  820 IF word$w$(parent) THEN cwordle(parent) ELSE cwordri(par
ent)  830 WENDRETURN  840 IF word$w$(parent) THEN le(parent)cword ELSE ri(parent
)cword  850 RETURN  900 level0stack(level)ri(0)d$""  910 PRINT TAB(level*16+1)d$
LEFT$(w$(stack(level)),13)  920 IF level4 THEN 950  930 IF le(stack(level))0 THE
N d$"L"levellevel+1stack(level)541"n 989DC3779D53454EC443484F590"x 55D4000000000
0C3379DC3543D7" 9DC3379DC3549DC3439DC3636B1" 9DC34F9DC3729D01ECF83E03644" ED793E
15ED79C901F2F83E03614" ED793E16ED79C901E0F818F26CC" 01EEF8F5ED78E60228FAF10D749"
 ED79C901F2F8F5ED78E60228784" FAF10CED79C901E0F818EFFE804" 01C0DD7E00111F9D01060
021311" 259DB72004EDB018923D212B46D" 9D28F621319D18F14FCB01064D4" 00DD0947DD2BDD
2BDD7E00C555D" CD229DC110F2C90000000000418&,CHOU, 1 for EMR, 2 forle(stack(level
-1))GOSUB 910  940 IF ri(stack(level))0 THEN d$"R"levellevel+1stack(level)ri(sta
ck(level-1))GOSUB 910  950 levellevel-1RETURN  .TURN     $$$ 2w$(parent) THEN le
(parent)cword ELSE ri(parent)cword  850 RETURN  900 level0stack(level)ri(0)d$"" 
 910 PRINT TAB(level*16+1)d$LEFT$(w$(stack(level)),13)  920 IF level4 THEN 950  
930 IF le(stack(level))0 THEN d$"L"levellevel+1stack(level) DHCP6      J  dT    
       SEN,      # &90,64,50,&91,52,40,55,40,-4 &90,64,0,64,50,-2 &90,64,0,&91,5
2,0,55,0#  &90,71,50,&91,52,40,55,40,-4 &90,71,0,71,50,-2 &90,71,0,&91,52,0,55,0
#! &90,66,50,&91,50,40,57,40,-3& &90,66,0,67,50,-10 &90,67,0,66,50,-2 &90,66,0,&
91,50,0,57,0# &90,64,50,&91,52,40,55,40,-6&D &90,64,0,&91,5#Programmers' Patch 2
0 - WACCI 129, April 1999     PROGRAMMERS' PATCH 20     By Matthew Phillips     
  If we wanted to generate numbers  from  the AI program, the function comes    
 in our array of probability.   You  will  generate  numbers from the first     
letter in alphabetical order to put it  in a function.  Of course, as each     w
ord is, it needs to our words.   Every  time we store more often than not     th
e user's sentences.  Line 800 is quite  complicated, but it has to store     the
 words in oILE LEFT$(a$,1)" "a$MID$(a$,2)WENDRETURN  400 jlk(pword,0)x1ypword  4
10 WHILE j0 AND cwordlk(y,x)jj-1xx+1  415 IF xmlinks THEN ylk(y,x)x1  420 WENDIF
 j0 THEN 440  430 lk(pword,0)lk(pword,0)+1lk(y,x)cword  435 IF xmlinks-1 THEN nw
ordsnwords+1lk(y,mlinks)nwordslk(nwords,0)0w$(nwords)""  440 RETURN  500 iINT(RN
D*lk(pword,0)+1)  505 WHILE imlinksi1+i-mlinkspwordlk(pword,mlinks)WEND  510 pwo
rdlk(pword,i)RETURN  600 file$MID$(a$,7)IF file$"" THEN file$"VOCAB"  610 Order.
  Yes, it seems to tell us a birthday.       DON'T GO AWAY!     If  you  didn't 
 follow  that,  don't  worry  -  I  didn't  either.   That     introduction was 
generated by the AI program  when I fed it the first half     of this month's ar
ticle.  If  you  find  the introduction easier to follow     than the rest of th
e article, then write in to Fair Comment to ask John to     give me the sack!   
    Last time we added a binary tree structure to the AI chat program in order  
   to speed up the searchinPENIN file$INPUT#9,nwords  620 FOR i0 TO nwordsINPUT#
9,w$(i),lk(i,0)le(i)0ri(i)0  625 word$w$(i)IF word$"" THEN GOSUB 800cwordiGOSUB 
840  630 jlk(i,0)yix1WHILE j0jj-1INPUT#9,lk(y,x)xx+1  635 IF xmlinks THEN INPUT#
9,lk(y,x)ylk(y,x)x1  636 WENDNEXT  640 CLOSEINRETURN  700 file$MID$(a$,7)IF file
$"" THEN file$"VOCAB"  710 OPENOUT file$WRITE#9,nwords  720 FOR i0 TO nwordsWRIT
E#9,w$(i),lk(i,0)  730 jlk(i,0)yix1WHILE j0jj-1WRITE#9,lk(y,x)xx+1  735 IF xmlin
ks THEN  NICS COMMANDS     Many of the enhancements added in  BASIC  1.1 relate 
to graphics handling.     The MOVE, MOVER, DRAW,  DRAWR,  PLOT  and  PLOTR  have
  had extra optional     parameters added, which you will need  to  remove in or
der to get programs     to work on the 464.       On the 464 the  MOVE  command 
 takes  only  two  parameters,  the  x and y     coordinates of the point to mov
e  the  graphics cursor to.  With BASIC 1.1     you can specify a third paramete
r to  select the graphics pen, much as you2,0,55,0,55,45,-2N &90,71,70,-2X &90,7
1,0,&91,55,0# &90,74,75,&91,54,50,57,50,-2b &90,74,0,&91,54,0,57,0'g &90,76,80,&
91,52,55,&91,55,55,-4/l &90,76,0,&91,52,0,&90,74,75,&91,52,60,-2v &90,74,0,&91,5
2,0,55,0# &90,71,70,&91,55,65,62,65,-2 &90,71,0,&91,55,0,62,0# &90,73,60,&91,57,
65,64,70,-2, &90,73,0,69,50,&A1,57,60,&A1,64,65,-2 &90,69,0,&91,57,0,64,0# &90,7
1,40,&91,52,40,67,40,-6" &90,71,0,&91,52,0,67,0,-100HILE t100WEND  340 END  4   
  do with PLOT and DRAW.  For example         MOVE x,y,3       will move the gra
phics cursor to  (x,y)  and  also change the graphics pen     (the colour to plo
t in) to 3.   This  facility is most useful when you are     printing characters
 at the graphics cursor using TAG.       How you remove this extra  parameter  d
epends on the situation.  Sometimes     people use it when it is totally unneces
sary.  For example, a line saying         10 MOVE x,y,2DRAWR 23,50       could s
imply be changed to       #Programmers' Patch 14 - WACCI 123, July/Aug 1998, p. 
23-26     PROGRAMMERS' PATCH 14     by Matthew Phillips       The sun beat down 
on  the  wide  desert  plains  of  Mexico.  The sound of     horse's hooves had 
faded as  Flaminguez  disappeared into the distance, as     swiftly as he had ar
rived.   Juan  Carlos  scanned  the pages of the vital     document intently.  H
e frowned as he tried  to grasp the hidden meaning of     the words before him. 
 Was there no other  way  He had feared it might be     s  10 MOVE x,yDRAWR 23,5
0,2       The graphics pen setting has been moved from the MOVE command to the D
RAWR     command.  If the DRAWR command was on  the  next line though, it might 
not     be safe to use this approach.  It  may  be  that that line is reached fr
om     elsewhere in the  program  where  the  graphics  pen  is  set to somethin
g     different.       The following approach will always work         10 PLOT -
8,0,2MOVE x,yDRAWR 23,50       We use the ability of  the  PLOT  command  to  ch
ange o, but now he was certain.  He would  have to ask Flaminguez to bring him  
   a CPC as well next time.       Last month we started  looking  at  the  diffe
rences  between BASIC 1.0 as     found on the CPC 464, and  BASIC  1.1 on later 
machines.  The Programmers'     Patch disc (which you can order  from  Dave  Sti
tson, PD disc 98) includes     some RSXs to help you  to  identify  which  lines
  of a program will cause     problems for 464 users.  I hope  that  464  users 
will find these articles     useful w the graphics pen by     plotting a point w
hich is off  screen,  and  then do the MOVE command.  Of     course, if ORIGIN h
as been used  to  move the graphics origin, then (-8,0)     may lie on screen - 
adjust as necessary.       The MOVER command has also  had  this  third optional
 parameter added, and     can be dealt with in the same way.       GRAPHICS INK 
MODE     All six commands, DRAW, DRAWR, MOVE, MOVER, PLOT, PLOTR, have had a fou
rth     optional parameter added in  BASIC  1.1.   This  parameter sehen trying 
to convert programs  to  run on their machines, and all     you 664/6128 users s
hould have a read  too,  as it is worth being aware of     what will cause probl
ems on the 464.  In  many cases you will only need to     make a few alterations
 to enable your  programs  to run on all the Amstrad     CPCs.       We have pri
nted a  list  of  all  the  commands  which  have been added or     altered for 
BASIC 1.1 in Table 1.   We  covered FRAME, CLEAR INPUT, and ON     BREAK CONT la
st month.       GRAPHlects the ink     plotting mode.  It is 0 for normal, 1  fo
r  XOR mode, 2 for AND, and 3 for     OR mode.  There are  a  couple  of  ways  
to  cope  with  this on the 464.     Suppose the command was         DRAW 100,20
0,1,3       This can be replaced with         PRINT CHR$(23)CHR$(3)DRAW 100,200,
1       Be careful to include the semicolons,  or you might get unwanted linefee
ds     happening.  This method will not  work  if  TAG  has been used to redirec
t     text characters to the graphics cursor.  You  Ndded to control the display
 of the text cursor.  The CURSOR command takes     two parameters, each of which
 should  be  either 0 or 1.  Either parameter     may be omitted.  To show how t
o deal with this command we have a series of     examples         BASIC 1.1     
      BASIC 1.0         CURSOR 0            CALL &BB84       CURSOR 1           
 CALL &BB81       CURSOR ,0           CALL &BB7E       CURSOR ,1           CALL 
&BB7B       CURSOR 1,0          CALL &BB81CALL &BB7E       CURSOR a,b          C
ALLhe graphics ink mode we could put the following line in       1 inkmodeHIMEM-
5MEMORY HIMEM-6FOR g0 TO 5READ dPOKE inkmode+g,dNEXT       DATA &DD,&7E,0,&C3,&5
9,&BC       Then commands like         DRAW 100,200,1,x       can be replaced by
         CALL inkmode,xDRAW 100,200,1       We can deal with the command  GRAPHI
CS  PAPER  in  much the same way.  The     firmware routine GRA SET PAPER is  at
 &BBE4.  An alternative method, which     was very popular in listings in  the  
magazine Computing with t &BB84-3*aCALL &BB7E-3*b       Usually the CURSOR comma
nd is  not  used  with  variables,  as in the last     example, but if it  is,  
this  is  one  way  to  deal  with it.  Note that     horrible things may happen
 if a or b are any value other than 0 or 1.       GRAPHICS PEN AND PAPER     Two
 more commands introduced with BASIC  1.1 are GRAPHICS PEN and GRAPHICS     PAPE
R, which are used to  set  the  graphics  pen  and graphics paper (no,     reall
y...).  Setting the graphics pen can  be  done by plotti could also do         C
ALL &BC59,1,1,1DRAW 100,200,1       This sneaky method uses the firmware  call  
SCR  ACCESS which sets the ink     mode.  It does this on the basis of  the cont
ents of the A register.  When     we do a CALL from BASIC, the A  register  is s
et to indicate the number of     parameters after the CALL, so putting  three pa
rameters (it doesn't matter     what they are) gives ink mode 3, the OR mode.   
      CALL &BC59        - chooses Normal mode       CALL &BC59,1      - chooses 
XOR modng off screen     in that colour.  For example,         PLOT -8,0,a      
 can be used in place of GRAPHICS PEN  a.  However, this does have the side     
effect of moving the graphics  cursor,  which  may  be inconvenient if you     c
annot work out where to MOVE it back  to!  Another way round it is to use     th
e firmware routine GRA SET PEN.  If  the parameter to GRAPHICS PEN is an     abs
olute value you can use  the  same  trick  as  before and do CALL &BBDE     foll
owed by the right number of parameters.e       CALL &BC59,1,1    - chooses AND m
ode       CALL &BC59,1,1,1  - chooses XOR mode       This is no  good  if  the  
DRAW  command  has  a  variable  for the fourth     parameter.  For that you sho
uld use the PRINT CHR$(23) method.       AS CLEAR AS CRYSTAL     An extra parame
ter has been  added  to  the  PEN  command too, in order to     select the  text
  background  mode,  which  is  0  for  opaque  and  1 for     transparent.  For
  example,  PEN  1,1  will  select  pen  1  and  set  the     backgroun  Using t
his method         CALL &BBDE,1,1       has the same effect as  GRAPHICS  PEN  2
,  because  there are 2 parameters     after the CALL.  If your parameter  is  a
  variable and the PLOT method is     inconvenient, then a little bit  of  machi
ne  code can work wonders.  Just     insert the following line near  the  beginn
ing  of  the program, after any     SYMBOL AFTER command if there is one       1
 gpenHIMEM-5MEMORY HIMEM-6FOR g0 TO 5READ dPOKE gpen+g,dNEXTDATA       &DD,&7E,0
,&C3,&DE,&BB  d to transparent.  The strange-looking command PEN ,0 will select 
    opaque background mode but not alter the  pen selected.  To deal with this  
   parameter on the 464, you need control code 22.         PEN 1,a       can be 
replaced by         PEN 1PRINT CHR$(22)CHR$(a)       or you  can  use  a  simila
r  firmware  trick,  and  do  CALL  &BB9F,1 for     transparent or CALL &BB9F fo
r opaque.       THE CURSE OF THE CURSOR     While we are on the  subject  of  te
xt  printing, another command has been     a     You can then replace GRAPHICS P
EN commands such as         GRAPHICS PEN x       with         CALL gpen,x       
You may notice that the  last  two  bytes  of  data  in  that line are the     f
irmware routine address for GRA SET PEN,  but to get the address into the     fo
rm the Z80 likes it has  been  chopped  in  two and the second half (the     lea
st significant byte) is put  in  first.   We  can  use exactly the same     tech
nique for all of the other firmware routines mentioned so far.  To set     t  NE
RR  function,  and the background mode     parameter of the GRAPHICS PEN command
  are  rather harder to deal with, as     there is no support in  the  464's  fi
rmware  for these features.  You may     find that the program works  reasonably
  well  if  you just chop them out!     Even without these, you will be able to 
get a good number of 6128 programs     working on the 464.       There are a few
 more subtle  differences  between BASIC 1.0 and 1.1, which     are mostly fixes
 for bugs.  We  will  have  a  u can replace it with         a$CHR$(0)CALL copyc
hr,a$       Because COPYCHR$ is a function, you could get it coming up in all so
rts of     awkward situations.  For example, you might have         x$x$+UPPER$(
COPYCHR$(#0))       in which case you would have to do something like         a$
CHR$(0)CALL copychr,a$x$x$+UPPER$(a$)       You would have to make sure that  th
e  variable  a$ was not being used for     anything else in this case.       The
 machine code I  have  just  given  differs  in  two  look  at some of these nex
t     month, as some of them make quite a big difference to how certain commands
     work.  he sun be is no support in  the  464's  firmware  for these features
.  You may     find that the program works  reasonably  well  if  you just chop 
them out!     Even without these, you will be able to get a good number of 6128 
programs     working on the 464.       There are a few more subtle  differences 
 between BASIC 1.0 and 1.1, which     are mostly fixes for bugs.  We  will  have
  a  respects from the     COPYCHR$  function.   If  the  character  read  from 
 the  screen  is  not     recognised, the COPYCHR$ function  returns  an  empty 
 string, whereas the     machine code will return CHR$(0).  If you  need  to tes
t for this, it will     not cause too much trouble, as  CHR$(0)  is very rarely 
printed on screen,     so you are not likely to  jump  to  the wrong conclusions
.  Also, COPYCHR$     allows you to specify which  window  to  read  from, while
 my machine code     always reads from window 0.  If you come across COPYCHR$(#3
), for example,     just pop in a WINDOW SWAP  0,3  before  and  after the call 
to the machine     code.       LOCOMOTIVE FAILURE     The DEC$ function is  quit
e  an  interesting  one,  because it is actually     present in 464 BASIC.  The 
 reason  it  isn't  advertised in the manual is     that there is a minor bug in
 it.  You simply have to include an extra left     bracket after the name of the
 function when you use it!  Try         PRINT DEC$((4567,"####,")    he Amstrad,
     was to use the CLG  command  which  clears  the graphics window, but first 
    redefining the graphics window so that it was off screen.         GRAPHICS P
APER x       would be replaced by         ORIGIN 1000,1000,1000,2000,3000,4000CL
G xORIGIN 0,0,0,640,0,400       The only problem with this is that  it  doesn't 
work quite as intended, as     a small piece of the top right of the screen chan
ges colour!       READING FROM THE SCREEN     The COPYCHR$ function can be quite
 useful, but fortun   and you won't get a syntax error.       The format specifi
er works in the  same  way  as  that for the PRINT USING     command.  There is 
another  small  difference  between  BASIC  1.0 and 1.1     here, as BASIC 1.1 a
llows you to  use  the pound sign in format specifiers     as an alternative to 
the dollar.       If you want the program to work on all of the CPCs, you will h
ave to avoid     the DEC$ command and rewrite it some other way.       MISSION A
 BIT HARDER     The FILL and MASK commands,  the  Dately it is contained     in 
the 1.0 firmware and so we can do it quite easily on the 464.  It needs     a bi
t of machine code again, and  the  syntax is a bit different.  Put the     follo
wing line at  the  start  of  the  program  (after  any  SYMBOL AFTER     comman
d)       1 copychrHIMEM-17MEMORY HIMEM-18FOR g0 TO 17READ dPOKE copychr+g,d     
  NEXTDATA &DD,&6E,0,&DD,&66,1,&7E,&B7,&C8,&CD,&60,&BB,&23,&5E,&23,&56,       &1
2,&C9       If you have a command such as         a$COPYCHR$(#0)       yo  N#Com
mands introduced or altered in BASIC 1.1        CLEAR INPUT       Clears the key
board input buffer.       COPYCHR$(#stream expression)       Function returning 
the character found at the current cursor position in       the screen window sp
ecified, or a null string if it is not recognized.         LOCATE 1,1a$COPYCHR$(
#0)       reads the character from the top left corner of window 0.       CURSOR
 system switch,user switch       Sets the switches that control the display of t
he cursor blob o  1.   Either  parameter  may be omitted, but not       both.   
    MOVE     MOVER       As on the  464  but  with  two  extra  optional  parame
ters  of ink to       change the graphics pen, and ink mode,  from  0  to 3.  0 
is normal, 1       XOR, 2 AND, 3 OR.       ON BREAK CONT       Prevents the prog
ram being broken into when ESC is pressed twice.       PEN       As on the 464, 
 but  with  an  extra  optional  parameter  to select the       background mode 
for text printing 0 for opaque, 1 for transn screen.       The parameters are 0 
for off and  1  for on.  The blob is displayed when       both switches are on. 
 The system  switch is turned on automatically for       the INPUT command, and 
the user switch is on by default.         Either switch parameter may be omitted
, but not both.       DEC$(numeric expression,format string)       Function retu
rning a decimal  number  formatted  according to the format       string, which 
is specified in the same way as PRINT USING         a$DEC$(47,"###.##"parent.   
    PLOT     PLOTR       As for DRAW and DRAWR  PUT       Clears the keyboard in
put buffer.       COPYCHR$(#stream eoptional  parameters  of ink to       change
 the graphics pen, and ink mode,  from  0  to 3.  0 is normal, 1       XOR, 2 AN
D, 3 OR.       ON BREAK CONT       Prevents the program being broken into when E
SC is pressed twice.       PEN       As on the 464,  but  with  an  extra  optio
nal  parameter  to select the       background mode for text printing 0 for opaq
ue, 1 for trans)       will set a$ to be " 47.00"       DERR       Returns the l
ast disc error number.  For example         xDERR       sets x equal to the last
 disc error number.       DRAW     DRAWR       As on the 464 but with an extra o
ptional parameter of ink mode, from 0       to 3.  0 is normal, 1 XOR, 2 AND, 3 
OR.       FILL ink       Fills the screen with ink starting  from the graphics c
ursor position,       filling a region bounded by  the  current  graphics  pen i
nk and the ink       being used to fillrhaps more  useful are the variants LISTP
     and LISTF.  The former lists the whole  program to the printer instead of  
   the screen, and the latter lists to a file.  For example         a$"filename"
LISTF,a$       would list the whole program to a file called "filename" (silly n
ame for a     file).  You could then load the file  into  an editor like Protext
 and use     the search and replace facilities to correct the lines.         I h
ave also provided SCANP and SCANF which work in a similar way..       FRAME     
  Waits for the frame flyback in  an  attempt to avoid flickery display of      
 changing graphics.  Not really much use for BASIC.       GRAPHICS PAPER ink    
   Sets the graphics background ink, used  for the background of characters     
  printed with TAG, and the gaps in dotted lines drawn with MASK.       GRAPHICS
 PEN ink,background mode       Chooses the ink used for drawing lines and printi
ng characters with TAG.       The background mode is 0 for opaque and 1 for tran
sp#Programmers' Patch 15 - WACCI 124, Sept 1998, p. 24-26     PROGRAMMERS' PATCH
 15     By Matthew Phillips       The last couple of  articles  have  looked  at
  the "official" differences     between BASIC 1.0 and 1.1,  but  there  are sev
eral other differences that     come under the general heading  of  Bugs.   Thes
e  are things that weren't     meant to happen but did, and this is how to deal 
with them.       A PROBLEM IN THE PRINT WORKS     Once I had finished writing th
e SCAN  RSX  which was published arent, and affects       whether the background
s of  characters  printed  with TAG are displayed,       and the gaps in dotted 
lines.   Either  parameter may be omitted but not       both.       MASK integer
 expression,first point setting       The integer expression should be from 0  t
o  255, and allows you to draw       dotted lines.  255 is the setting  for  ord
inary lines.  The first point       setting should be 1 if the first point of a 
line is to be plotted, and 0       if not.  It is normally  Naltering     the LO
CATE command to position it at 39,6 - just at the end of a line.  In     BASIC 1
.1 the box will print at  the  end  of  line 6, but in BASIC 1.0 it     prints a
t the start of line 7.       This is because BASIC 1.0 uses  a  simpler  method 
for deciding whether to     start a new line.  The computer  just  looks  at the
 length of the string,     and if it is longer than  the  number  of  characters
 left on the line, it     starts a new one before printing.   BASIC  1.1 looks t
hrough the fiype         ERA,"*.bak"       on the 464 you have to use the cumber
some         a$"*.bak"ERA,a$       This is actually a bug, as you  were  meant  
to  be able to use the direct     version, but Locomotive Software  did  not  ge
t  it  working  for the 464.     Remember that  on  the  664/6128  you  can  als
o  have  results  of string     functions, such as LEFT$, as parameters to CALL 
or an RSX.       To solve this problem you can put the parameters into temporary
 strings as     in the example above, orrst few     characters of the string to 
see if  there are any control characters among     them.  If there are (say) six
 spaces left  on the line and the first seven     characters in the string are o
rdinary  characters (with ASCII values of 32     or above) then a  new  line  is
  started  before  printing.  Otherwise the     string is  printed  at  the  cur
rent  cursor  position.   This complicated     behaviour of the PRINT command in
 BASIC  1.1  is not explained in the user     guide.       Even that is in June,
 I     tested it out on the Crib game  from  WACCI  PD disc 6.  As it stands, th
e     game does not work  on  the  464,  mostly  because  of extra parameters in
     graphics commands.  The SCAN RSX identified all of these, and after I had  
   altered the lines, I ran the program  expecting it to work.  Alas! several   
  cards printed in the wrong place, and the screen scrolled up.       This was b
ecause of another difference  between  BASIC 1.0 and 1.1.  It is     not actuall
y documented in the mannot quite the whole  story,  as when looking at the begin
ning     of the string, CHR$(1) is treated differently from the control characte
rs.     CHR$(1) itself is ignored and the next character is treated as an ordina
ry     character rather than a control  character.   This mirrors the effect tha
t     CHR$(1) has on printing.       Having gone into all this detail, the cure 
for this difference between the     versions of BASIC is  usually  quite  simple
.   If  you  encounter a PRINT     command which is priuals, and  is  all to do 
with the "word-     wrap" feature of the Amstrad's PRINT command.  Try the follo
wing         BORDER 25MODE 1LOCATE 39,1PRINT"Hello"       The LOCATE command put
s the  cursor  near  the  end  of  the top line, but     because the string "Hel
lo" is  too  long  to  fit  on the line, the cursor     moves down to the start 
 of  the  next  line  to start the printing.  This     feature is documented in 
the manuals, and to override it you should do         PRINT USING"&""Hello"     
  nting a string containing control characters, then you     should use PRINT US
ING"&" instead.   Programs  so altered will still work     on the 664/6128.  The
re may be extremely subtle cases in which this method     won't work, but now yo
u know all the  details  you will be able to sort it     out!       REMARKABLE R
EMS     BASIC 1.0 does not cope at all well when you put certain characters in R
EM     statements.  Many of  the  control  characters  cause  odd  effects, whil
e     characters over 127 are  moFor ordinary strings the 464  and  664/6128  be
have exactly the same.  The     difference  comes  when  you  have  control  cha
racters  in  the  strings.     Characters 8-11 move the cursor, and  it  is some
times convenient to store     combinations of printing characters and cursor mov
ements in a string.  For     example         10 a$chr$(135)+chr$(139)+chr$(10)+c
hr$(8)+chr$(8)+chr$(141)+chr$(142)       20 MODE 1LOCATE 5,6PRINT a$       This 
little program prints a square  box  on the screen.  Now try stly  converted  in
to  BASIC keywords.  The RSX     character "" causes the  next  character  in  t
he  REM  to disappear when     listing.  This difference  is  not  very  importa
nt  because programs with     these characters in REM statements  will  run  as 
 normal.  They will just     produce odd results when listing to the screen or p
rinter.       CALLED TO THE BAR     464 users will be  very  familiar  with  the
  restrictions on using string     parameters in RSX commands.  While in BASIC 1
.1 you can t  N nine     of these blocks of three bytes from  &AC01  to  &AC1B o
n the 464, and they     can be used to patch various Upper  ROM functions.  Ther
e is no such block     on the 6128.  I have not seen an explanation of what thes
e blocks are for,     so count that as my request on the article wish-list!     
  LINE INPUT     There is also a bug with the LINE  INPUT  command.  It is meant
 to work in     the same way as the INPUT command, in that         LINE INPUT"Na
me"a$       should print up the prompt "Name" eese" on     the 464         IF 25
6 THEN PRINT"Cheese"       p256IF p AND 256 THEN PRINT"Cheese"       IF 1024 THE
N PRINT"Cheese"       Those are just a few examples, and  there  are many more l
ike them.  Note,     however, that the following two statements do print "Cheese
"         IF 28 THEN PRINT"Cheese"       IF 256.0 THEN PRINT"Cheese"       This 
is because BASIC is treating the numbers (which both work out as 256)     as rea
l values rather than integers.  In  fact, if you enter the following     followe
d by a question mark and a space.     A comma instead of a semicolon suppresses 
 the question mark.  On the 464,     however, the question  mark  never  appears
.   This  will  not  cause many     problems, but the screen display may turn  o
ut not quite as the programmer     intended it.  If you are a 664/6128 user  who
 wants your program to run on     a 464, always use  the  comma,  and  provide  
the  question mark and space     yourself.       If you are a  464  user  you  m
ay  find  when  running  two lines         10 IF 256 THEN PRINT"Cheese"       20
 IF 256.0 THEN PRINT"Cheese"       then LIST the program, both lines will  displ
ay the same, but because line     20 has 256 stored as a real number it will pri
nt "Cheese"!       If you suspect bugs  in  a  program  to  be  due  to  this fa
ult, just put     brackets round the whole expression and  "0"  after it.  This 
will force     the computer to treat non-zero values as true.       There are  s
everal  other  arithmetical  bugs  that  affect  all  your programs on a     664
/6128 that extra question marks will appear.  You should always use the     comm
a as well.  The command with no prompt         LINE INPUT a$       will produce 
a question mark on the  664/6128.   If you want to avoid this     happening, use
         LINE INPUT"",a$       Thanks to Richard  Fairhurst  for  pointing  this
  one  out,  which  I was     completely unaware of.  I will now have  to  go th
rough my own programs to     check the LINE INPUTs.       GETTING THE SUMS WRONG
     the  CPC     machines, which are  mostly  the  result  of  rounding  errors
  when using     floating point numbers.       SWEEPING UP THE GARBAGE     The 4
64 is very slow on garbage collection.  If you increase the length of     a stri
ng, BASIC stores the string in  a new area of memory, and eventually     the old
 chunk will  be  reused.   Garbage  collection  is  when BASIC goes     through 
memory tidying up all the  string storage.  The string handling on     the 464 i
s much less efficient than that  of BThere are a few areas where  the  464 is "a
rithmetically challenged".  For     example, try         PRINT (-1)1       On th
e 464 you will  get  "1"  while  the  664/6128 will print the correct     answer
 of "-1".  The same applies to any other negative number.  Of course     there i
s not much point in  raising  something  to the first power, but if     you had 
variables involved it could cause problems.       Another more serious problem a
ffects logic  statements and the IF command.     As we explained in  if there ar
e  a  lot  of them it may be easier to     run Listing 1.  This listing is by Do
minic Wise and was printed in Amstrad     Action issue 53, February 1990.  (Let'
s hope they don't mind us reprinting     it...)  This listing gives 464 users  t
he ability to pass strings directly     to RSXs and CALL commands.  It is saved 
on disc as 464RSX.BAS       The real techies among you may like  to  get out you
r disassembler to find     out how it works.  It seems to use a patch block at &
AC04.  There areMarch  1997,  all  logical expressions are evaluated to     give
 a number, and if the number  is not zero the expression is considered     to be
 true.  For example,         IF 7 AND 3 THEN PRINT"Cheese"       will print "Che
ese" because 7 AND 3 is  3 (which is not zero).  Sadly, 464     BASIC has a bug 
because if  the  expression  yields an integer value where     the least signifi
cant byte is zero  the  expression will not be considered     true, even if it i
s!  The following  statements will not print "Ch  Nle into memory,     BASIC cre
ates a file buffer, but does not free the memory once the file is     loaded as 
it should do.  Issuing  a CLOSEIN command immediately afterwards     will cure t
his one.       KEYBOARD LAYOUT     One last difference between the CPCs is the k
eyboard layout.  The 6128 has     a totally different layout, but for  once  the
  464  and 664 have much the     same design (apart from the  664's  mammoth  bl
ue cursor keys).  Sometimes     keys are chosen that work well on the 6128 but n
ot ASIC 1.1, and this can cause     severe problems.  Sometimes the machine seem
s to hang up for a few seconds     unexpectedly, and sometimes you run out of me
mory altogether.       One thing that can sometimes help is to  force BASIC to d
o the rounds more     often.  If you put         dummyvarFRE("")       at strate
gic points in a program,  this  can stop the problem building up.     The garbag
e collection is most  likely  to  be  needed when BASIC requires     vast amount
s of memory suddenly.  Whenever yoon the others, and vice     versa.  It is usua
lly easy enough to sort it out.  One feature of the 6128     is that it is possi
ble  to  do  CTRL-SHIFT-ESC  with  one  hand.  I am not     convinced that this 
is an advantage!       There are doubtless other slight bugs  with  the 464's BA
SIC and firmware.     If you know of any, why not write in to Fair Comment and l
et us know.  ple me design (apart from the  664's  mammoth  blue cursor keys).  
Sometimes     keys are chosen that work well on the 6128 but not u  open a file 
for reading or     writing, 4k of memory is needed for use as buffers, and when 
you only have     64k RAM, this is a very large  amount  to  get together.  In o
rder to find     this memory, BASIC rearranges the  string storage space.  Unfor
tunately if     the name of the file you were  about  to  load was in a string v
ariable, a     bug on the 464 means that sometimes  BASIC  loses track of the na
me of the     file, resulting in a "File not found" error.       The best way to
 get round this i6t0   50 FOR m0 TO 8READ a$xVAL("&"+a$)tt+xPOKE st+d,xdd+1NEXT 
  60 READ a$IF VAL("&"+a$)t THEN NEXT ELSE PRINT"Error in line"10*n+90STOP   70 
FOR n0 TO 2POKE st+26+n,PEEK(&AC04+n)NEXT   80 CALL st+39,stCLSPRINT"RSX strings
 utility installed at &"HEX$(st,4)"."   90 DATA 7b,fe,0d,20,14,e1,d1,d5,e5,526  
100 DATA 21,3b,01,19,20,0a,3e,02,32,112  110 DATA c1,b0,e1,2a,c2,b0,37,5f,c9,54d
  120 DATA c9,c9,21,9c,b0,22,9a,b0,b7,522  130 DATA 08,d9,c9,3e,c3,32,04,ac,eb,4
78  140 DATA 22,05,ac,3e,cd,3s to reserve the file buffers at the start     of t
he program, so that they are  always available and BASIC does not have     to wa
ste time garbage collecting each time  a file is opened.  To do this,     just i
nsert the following commands at the start of a program         SYMBOL AFTER 256O
PENOUT"d"SYMBOL AFTER 240CLOSEOUT       After  opening  out  a  dummy  file,   w
e  reinstate  the  user  definable     characters, which lowers the  level  of  
HIMEM,  trapping  the file buffer     above it, so that w  1 REM RSX strings by 
Dominic Wise, Amstrad Action 53, 464 only    2 REM Allows all string expressions
 to be passed to RSXs and CALL statements   10 MODE 2   20 INPUT"Assemble to &BE
C0",a$IF UPPER$(a$)"Y" THEN st&BEC0GOTO 40   30 INPUT"Assembly address",a$stVAL(
a$)IF stHIMEM them MEMORY st-1   40 FOR n0 TO 6t0   50 FOR m0 TO 8READ a$xVAL("&
"+a$)tt+xPOKE st+d,xdd+1NEXT   60 READ a$IF VAL("&"+a$)t THEN NEXT ELSE PRINT"Er
ror in line"10*n+90STOP   70 FOR n0 TO 2POKE st+26+n,PEEK(&Ahen  the  CLOSEOUT  
command  arrives BASIC is unable to     return the file buffer to normal use.   
If  the program has a SYMBOL AFTER     statement in it already, then you can  pu
t the OPENOUT and CLOSEOUT around     that.       The same method works on the 6
64/6128, and if a program needs file access,     it doesn't do any harm to reser
ve the buffer in readiness.       Another bug on the 464 relates  to  loading  b
inary files.  If you haven't     reserved a file buffer as described  and  load 
 a binary fiC04+n)NEXT   80 CALL st+39,stCLSPRINT"RSX strings utility installed 
at &"HEX$(st,4)"."   90 DATA 7b,fe,0d,20,14,e1,d1,d5,e5,526  100 DATA 21,3b,01,1
9,20,0a,3e,02,32,112  110 DATA c1,b0,e1,2a,c2,b0,37,5f,c9,54d  120 DATA c9,c9,21
,9c,b0,22,9a,b0,b7,522  130 DATA 08,d9,c9,3e,c3,32,04,ac,eb,478  140 DATA 22,05,
ac,3e,cd,32,ac,b9,11,386  150 DATA 1d,00,19,22,ad,b9,c9,00,00,287   and dd+1NEXT
   60 READ a$IF VAL("&"+a$)t THEN NEXT ELSE PRINT"Error in line"10*n+90STOP   70
 FOR n0 TO 2POKE st+26+n,PEEK(&A  N,j)NEXTNEXT  740 CLOSEOUTRETURN  -1CLOSEOUT  
20 mwords300mlinks20nwords0  30 DIM w$(mwords),lk(mwords,mlinks),tempw$(1word,i)
RETURN  600 file$MID$(a$,7)IF file$"" THEN file$"VOCAB"  610 OPENIN file$INPUT#9
,nwords  620 FOR i0 TO nwordsINPUT#9,w$(i),lk(i,0)  630 FOR j1 TO lk(i,0)INPUT#9
,lk(i,j)NEXTNEXT  640 CLOSEINRETURN  700 file$MID$(a$,7)IF file$"" THEN file$"VO
CAB"  710 OPENOUT file$WRITE#9,nwords  720 FOR i0 TO nwordsWRITE#9,w$(i),lk(i,0)
  730 FOR j1 TO lk(i,0)WRITE#9,lk(ithem  Article 12   - other MIDI messages, and
 a program to play a tune  Article 13 - how to adapt 6128 programs for the 464, 
with an RSX to help  Article 14   - commands added in BASIC 1.1, and what to do 
with most of them  Article 15   - bugs in 464 BASIC, and how to deal with them  
  Other files on both sides of the disc    DISC.BASruns the Loom hypertext viewe
r  HELP.TXTthe help text for Loom  LINKBASE.TXTthe linkage data for Loom  LOOM.B
INthe Loom program  MESSAGES.TXTthe message texts for Loom#Programmers' Patch 16
 - WACCI 125, Oct 1998, p. 22-24     PROGRAMMERS' PATCH 16     By Hilary Phillip
s       In your more idle  and  lonely  moments  you  may  have  wanted  to hold
 a     conversation with your  computer.   Much  of  the  time,  however, it wil
l     simply  respond  to  your  remarks  with   "Syntax  error".   For  a  more
     stimulating exchange  you  could  try  one  of  the  psychiatric interview 
    programs available in the PD library,  but  if you're anything like me you  
   get sic10 DEFINT a-zOPENOUT"d"MEMORY HIMEM-1CLOSEOUT  20 mwords300mlinks20nwo
rds0  30 DIM w$(mwords),lk(mwords,mlinks),tempw$(128)  40 LINE INPUT"",a$  41 IF
 UPPER$(LEFT$(a$,5))"*LOAD" THEN GOSUB 600GOTO 40  42 IF UPPER$(LEFT$(a$,5))"*SA
VE" THEN GOSUB 700GOTO 40  50 wcount0GOSUB 300IF a$"" THEN GOSUB 100  60 GOSUB 2
00GOTO 40  100 WHILE INSTR(a$," ")0aINSTR(a$," ")  110 tempw$(wcount)LEFT$(a$,a-
1)a$MID$(a$,a+1)  120 wcountwcount+1GOSUB 300WEND  130 IF a$"" THEN tempw$(wcoun
t)a$wcount10 DEFINT a-zOPENOUT"d"MEMORY HIMEM-1CLOSEOUT  20 mwords300mlinks20nwo
rds0  30 DIM w$(mwords),lk(mwords,mlinks),tempw$(128)  40 LINE INPUT"",a$  50 wc
ount0GOSUB 300IF a$"" THEN GOSUB 100  60 GOSUB 200GOTO 40  100 WHILE INSTR(a$," 
")0aINSTR(a$," ")  110 tempw$(wcount)LEFT$(a$,a-1)a$MID$(a$,a+1)  120 wcountwcou
nt+1GOSUB 300WEND  130 IF a$"" THEN tempw$(wcount)a$wcountwcount+1  140 pword0FO
R i0 TO wcount-1word$tempw$(i)  150 cwordnwordsWHILE cword0 AND word$w$(cword)cw
ordwcount+1  140 pword0FOR i0 TO wcount-1word$tempw$(i)  150 cwordnwordsWHILE cw
ord0 AND word$w$(cword)cwordcword-1WEND  160 IF cword0 THEN nwordsnwords+1w$(nwo
rds)word$cwordnwords  170 GOSUB 400pwordcwordNEXT  180 cword0GOSUB 400  190 RETU
RN  200 pword0GOSUB 500  210 WHILE pword0PRINT w$(pword)" "GOSUB 500WEND  220 PR
INT CHR$(8)"."PRINT  230 RETURN  300 WHILE LEFT$(a$,1)" "a$MID$(a$,2)WENDRETURN 
 400 jlk(pword,0)x1  410 WHILE j0 AND cwordlk(pword,x)jj-1xx+1  420cword-1WEND  
160 IF cword0 THEN nwordsnwords+1w$(nwords)word$cwordnwords  170 GOSUB 400pwordc
wordNEXT  180 cword0GOSUB 400  190 RETURN  200 pword0GOSUB 500  210 WHILE pword0
PRINT w$(pword)" "GOSUB 500WEND  220 PRINT CHR$(8)"."PRINT  230 RETURN  300 WHIL
E LEFT$(a$,1)" "a$MID$(a$,2)WENDRETURN  400 jlk(pword,0)x1  410 WHILE j0 AND cwo
rdlk(pword,x)jj-1xx+1  420 WENDIF j0 THEN 440  430 lk(pword,0)lk(pword,0)+1lk(pw
ord,x)cword  440 RETURN  500 iINT(RND*lk(pword,0)+1)  51 WENDIF j0 THEN 440  430
 lk(pword,0)lk(pword,0)+1lk(pword,x)cword  440 RETURN  500 iINT(RND*lk(pword,0)+
1)  510 pwordlk(pword,i)RETURN  600 file$MID$(a$,7)IF file$"" THEN file$"VOCAB" 
 610 OPENIN file$INPUT#9,nwords  620 FOR i0 TO nwordsINPUT#9,w$(i),lk(i,0)  630 
FOR j1 TO lk(i,0)INPUT#9,lk(i,j)NEXTNEXT  640 CLOSEINRETURN  700 file$MID$(a$,7)
IF file$"" THEN file$"VOCAB"  710 OPENOUT file$WRITE#9,nwords  720 FOR i0 TO nwo
rdsWRITE#9,w$(i),lk(i,0)  730 FOR j1 TO lk(i,0)WRITE#9,lk(i0 pwordlk(pword,i)RET
URN  RY HIMEM-1CLOSEOUT  20 mwords300mlinks20nwords0  30 DIM w$(mwords),lk(mword
s,mlinks),tempw$(1SUB 400  190 RETURN  200 pword0GOSUB 500  210 WHILE pword0PRIN
T w$(pword)" "GOSUB 500WEND  220 PRINT CHR$(8)"."PRINT  230 RETURN  300 WHILE LE
FT$(a$,1)" "a$MID$(a$,2)WENDRETURN  400 jlk(pword,0)x1  410 WHILE j0 AND cwordlk
(pword,x)jj-1xx+1  420 WENDIF j0 THEN 440  430 lk(pword,0)lk(pword,0)+1lk(pword,
x)cword  440 RETURN  500 iINT(RND*lk(pword,0)+1)  51  N(a,1)  lk(a,2)  ---------
----------------------------  0           2        1        7  1  I        1    
    2  2  am       1        3  3  bored    2        4        0  4  with     1   
     5  5  this     1        6  6  article  1        0  7  You      1        8  
8  can't    1        9  9  be       1        3       All the words apart from 0 
and 3  can only be followed by one other.  Word     0, the "start of sentence" w
ord,  can  be  followed  by two words, 1 and 7     ("I" and "You").  Word 3,igur
e 2.       HISTORY LESSON     "AI" (or "Artificial Intelligence") was originally
  written by a friend of     Matthew's for the BBC  micro,  adapted  for  use  o
ver  a network and then     rewritten for the Amstrad by Matthew.  Once when I w
anted to use it and we     were unable to find the  program  it  was  rewritten 
once again by Matthew     dictating it to me.       THE BASIC IDEA     To use th
e program, you type  in  a  sentence.   The computer looks at the     sentence a
nd stores the information  a "bored" can be followed by 4 or 0 ("with" or the   
  "end of sentence" word.)       IN MORE DETAIL     Now that you have an idea of
 how  the  data is stored in the arrays, let's     look at the program in detail
.  The first three lines set things up.       10 DEFINT a-z speeds up the  compu
ter's  "thought" processes.  The rest of     the line reserves a disc  buffer,  
as  later  we  may  want to develop the     program further and be able to load 
and save vocabulary.       20 sets limits on the  number  ofbout  which  words c
an follow which,     and responds with a sentence  based  on  this  knowledge.  
(Until you have     taught it a  few  sentences  it  is  unlikely  to  come  out
 with anything     original.)       For example       Hilary   I am bored with t
his article     Computer I am bored with this article.       (It only knows that
 "I" can begin a  sentence and that "I" can be followed     by "am", "am" by "bo
red", "bored"  by  "with", "with" by "this", "this" by     "article", and "artic
le" by th  words  the  computer  can store and the     number of links in the li
nk array,  and  sets the number of words known to     zero.       30 The arrays 
are dimensioned accordingly  and  another array is set up to     hold the senten
ce typed in by the user for analysis.       40 We wait for the user's input of a
$.       50 We GOSUB 300 which strips spaces from the front of a$.  If anything 
    then remains in a$, we GOSUB  100,  which analyses the sentence and stores  
   the information in the arrays.       6e end of the sentence)       Hilary   Y
ou can't be bored     Computer I am bored.       (It knows that "I" or "You"  ca
n  start  a sentence and chooses "I", which     has to be followed by "am"  and 
 then  "bored",  but as "bored" can either     finish a sentence or  be  followe
d  by  "with",  it  randomly opts for the     former option.)       And so the c
onversation continues...       PROGRAM ANALYSIS     How does it work, then      
 The arrays w$ and lk are  used  to  store  the information about word0 Whatever
 the  user  typed,  we  then  GOSUB  200,  which  prints up the     computer's s
entence, and GOTO 40 to await the user's input again.       SENTENCE ANALYSIS   
  The subroutine in lines 100-190 takes the user's sentence, held in a$, and    
 pulls it apart.       100 WHILE there are any spaces in a$, i.e. more than one 
word, a is set to     be the position of the first space.       110 The first wo
rd is put into the array tempw$ and taken out of a$.       120 The word count is
  increased  by  1  ans and     word order.  A word is stored  in  w$(a)  and th
e "link" information about     which word can follow it in  lk(a,b).   The  firs
t number in the lk array,     lk(a,0) gives the number of different  words  whic
h can follow word a the     following numbers point to the words in  w$ which ca
n follow word a.  Word     0 is blank and represents the start or end of a sente
nce.       The table shows the values in the  arrays after learning the two sent
ences     in our example    a  w$(a)    lk(a,0)  lkk of the invitation to "Tell 
me about your computer."       The program below saved on disc as AI1.BAS is a s
imple way of teaching     your computer to communicate.  It has no  applications
 that I am aware of,     but it is quite entertaining to  try  out  and  you mig
ht learn more about     using arrays if you can follow  the  explanation.  The b
asic listing is in     Figure 1, and it will  gradually  be  improved  and enhan
ced over the next     article or two.  An explanatory list of variables is in F 
 Number   from   1   to   lk(pword,0)   using   the  expression     iINT(RND*lk(
pword,0)+1).       510 We set pword to lk(pword,i), which  points  to a random w
ord linked to     by the previous word, and RETURN to print up the word w$(pword
).       THAT'S ALL FOLKS     The only line which I haven't looked  at  for  you
 in detail is 300, which     does the space-stripping.  I think you should be ab
le to see how it works.       ANY QUESTIONS     Well, here are two simple ones a
nswered       WHAT ABOUT PUNCTU lk.  The     number of links from word pword is 
 stored  in lk(pword,0).       In lines 400-440 we check through the links  from
 pword to see if cword is     already listed there, and if it is not we add it o
n the end.       400 We set our counter j to  the  number of links from pword, l
k(pword,0).     The variable x will be used for  the  second coordinate in the l
k array.       410 j counts down to zero to go  through all the links.  Starting
 with x1     at the first link, we check whether cword  is  thd  spaces are stri
pped from the     front of a$ again.  WEND takes us  on  to  the next word, unti
l we have no     spaces left in a$.       130 If there is anything left in  a$  
then  it  is also put into the array     tempw$.       Now we go through the arr
ay tempw$ looking  to see if any of the words are     already known (i.e. in w$)
.   The  variables  cword  and pword are used to     point to the positions in t
he  array  w$  of the current word and previous     word in the sentence respect
ively.       1at link, and if it is not     we move on to the next link by incre
asing x.       420 WEND is reached either when  j0  or  when  a match is found, 
in which     case j0 and  we  go  to  440  which  simply  RETURNs  us  to  the 1
00-190     subroutine as our analysis is finished for that word.       430 No ma
tch has been found, so we  have  to add a link for cword onto the     end of the
 list of links.   We  increase the number of links, lk(pword,0),     by 1 and se
t lk(pword,x), which  is  the unallocated li40 We go through the words in  tempw
$ one by one starting with tempw$(0),     the first word in the  sentence,  and 
finishing with tempw$(wcount-1), the     last word in the sentence.  word$ is se
t to contain the current word under     consideration.       150 We go  through 
 the  array  w$  backwards  to  make  the loop simpler.     Starting with the la
st word in  the  array,  we  try setting cword to that     position in the array
 and see if the word word$ matches the word w$(cword)     stored in the arrank w
hich we reached     when going through the WHILE-WEND loop, to be equal to cword
.       TALKING BACK     We have dealt with  storing  the  information.   How  d
o  we  use it  The     subroutines in lines 200-230 and 500-510 produce the comp
uter's sentence.       200 To start the sentence, we set pword to 0 which points
 to the "start of     sentence" word in w$.   GOSUBbing  500  fetches  a  random
ly selected word     which can start a sentence, and sets pword to point to the 
new word.       210 WHILE py.  If not, we look  at  the previous word in w$.  If
 we     find a match, cword will be pointing to our word in w$.       160 If we 
have got back to the  first  word  in w$ without a match, we add     word$ onto 
the end of  the  array,  increasing nwords accordingly, and set     cword to poi
nt to our new word in w$.       170 The next thing we do  is  to  GOSUB  400  to
  put in the link from the     previous word in the sentence to the current word
.  If we are on the first     word of the sentence, pword hword0 we have not got
 to the "end of sentence" word.  We print     up w$(pword) followed by a space, 
and  look for the next word by GOSUBbing     500.  WEND is reached when pword0, 
 i.e.  we  have  got to the end of the     sentence.       220 We want to put a 
full stop on  the end of the sentence, so we move the     cursor back one and pr
int a full stop over the last space.       How do we decide on a word       500 
We look at the number of links from pword, lk(pword,0) and set i to be     a  ra
ndom   nas been  set  to  0 to point to the "start of     sentence" word in w$. 
 After putting  in  the  link  we move onto the next     word in tempw$.       1
80 Once we have reached the end of the  words in tempw$ we have to put in     a 
link from the last word to the "end of sentence" word in w$, so cword is     set
 to 0 (pword is already pointing  to  the last word from tempw$) and we     GOSU
B 400 again to put in the link.       LINKING BITS     The link from word pword 
to  word  cword  is  stored in the array  N     mwordsmaximum number of words he
ld in w$     mlinksmaximum number of links in the lk array     nwordscurrent tot
al number of words held in w$     wcountcounter for words in tempw$     word$tem
porary variable to hold the current word under analysis     pwordpoints to the p
osition in w$ of previous word in the sentence     cwordpoints to the position i
n w$ of current word in the sentence     i, jcounter variables.     xvariable us
ed in going through the links array   idle  and  lonely  momente done it all, so
 we CLOSEOUT to finish with the file.       Note that loading in vocabulary will
  overwrite any existing vocabulary in     the arrays.       STILL TO COME     N
ext month we will look at some  more  ways of improving the program.  The     ve
rsion here is very basic but should keep you busy for a month as long as     you
 don't have too  many  bored  or  lonely  moments.   Remember that this     prog
ram  and  all  the  others  from  the  series  are  available  on  the     Progr
ammers' Patch d#Programmers' Patch 16 continued     AN ENHANCEMENT I PREPARED EA
RLIER     I mentioned earlier that  we  might  want  to  be  able  to  load and 
save     vocabulary.  One way to do this  while  the  program is running is to l
ook     out for commands typed  by  the  user  which  wouldn't  be  used in norm
al     speech.  If you add in the extra lines  41, 42 and 600-740 below this wil
l     make the computer respond  differently  to  sentences beginning with *LOAD
     and *SAVE.  This version is saved as AI2isc, PD 98, from Dave Stitson.     
 AN ENHANCEMENT I PREPARED EARLIER     I mentioned earlier that  we  might  want
  to  be  ablary in     the arrays.       STILL TO COME     Next month we will l
ook at some  more  ways of improving the program.  The     version here is very 
basic but should keep you busy for a month as long as     you don't have too  ma
ny  bored  or  lonely  moments.   Remember that this     program  and  all  the 
 others  from  the  series  are  available  on  the     Programmers' Patch d.BAS
 on the disc.          41  IF UPPER$(LEFT$(a$,5))"*LOAD" THEN GOSUB 600GOTO 40  
      42  IF UPPER$(LEFT$(a$,5))"*SAVE" THEN GOSUB 700GOTO 40        600 file$MI
D$(a$,7)IF file$"" THEN file$"VOCAB"        610 OPENIN file$INPUT#9,nwords      
  620 FOR i0 TO nwordsINPUT#9,w$(i),lk(i,0)        630 FOR j1 TO lk(i,0)INPUT#9,
lk(i,j)NEXTNEXT        640 CLOSEINRETURN        700 file$MID$(a$,7)IF file$"" TH
EN file$"VOCAB"        710 OPENOUT file$WRITE#9,nwords        720 FOR i0 TO nwor
dsWATION     If you put a punctuation mark  on  the  end  of  a word the compute
r won't     realise that the punctuation is not  a  part  of  the  word as there
 is no     space between the word and  the  punctuation  mark.   For example, it
 will     treat "however" and "however," as two different words.       So if you
 end your sentences with  a  full stop, the computer will end all     of its sen
tences with two full stops.  If you want to use punctuation then     it may impr
ove the computer's grammar,  but  RITE#9,w$(i),lk(i,0)        730 FOR j1 TO lk(i
,0)WRITE#9,lk(i,j)NEXTNEXT        740 CLOSEOUTRETURN       Lines 600-640 deal wi
th loading in  vocabulary and 700-740 with saving it.     Let's look at the savi
ng  routine.   The  loading routine works in exactly     the same way, except th
at it  uses  INPUT#9  to input from disc instead of     WRITE#9 to write to disc
.       700 We look to see if the user  has  typed a filename after *SAVE, e.g. 
if     they have typed *SAVE OurWords - in which case file$"you will need to inc
rease the     word limit and take out the line  in  the program which prints up 
the full     stop.       AND CAPITAL LETTERS     The program treats a capitalise
d  word  differently from a non-capitalised     one, e.g. it will think that  "Y
ou"  and  "you" are different words.  This     was the  only  way  we  could  se
e  to  make  sure  it  capitalised things     correctly.    article continued...
.       -------------------------------------------     Figure 2       TABLE OF 
VARIABLES  OurWords".  If there     is nothing following the *SAVE command we us
e the default filename VOCAB.       710 We OPENOUT the file named  file$  for  w
riting, and the first thing we     WRITE is nwords, the number of words in the v
ocabulary.       720 Now for each word i, we WRITE w$(i) (the word itself) and l
k(i,0) (the     number of links from word i).       730 Following this we WRITE 
each lk(i,j) (all the links for the word i) in     order, and then go back to 72
0 to do the NEXT word.       740 Now we hav  Ne 20 we set  the  maximum  number 
 of words to 300, and the     maximum number of links from one  word  to  anothe
r  to be 20.  If we need     more than 20 links from any  particular  word to an
other, the program will     go wrong.  You are most likely to reach the limit of
 twenty links by using     more than 20 different words to start a sentence (rem
ember that the "word"     w$(0) is used to link to words that start a sentence).
       How can we deal with this problem  It  is really a matter of balancingil-
looking man, with a crooked nose and crooked thoughts.  "Yo, ho, ho,"     shoute
d Ambrose the evil pirate as he copied another disc.       What we did not menti
on  last  month  is  that the Programmers' Patch disc     (WACCI PD 98) now has 
a little  utility  on  it called BSIDE.  This is for     those of you who have a
 3.5"  disc  drive,  but do not have a side switch.     If you are in this situa
tion  you  will  be  well aware that with standard     AMSDOS formats it is poss
ible only to use  one side of up     how the data is stored to make it as effici
ent as possible.  On my machine     there are just over 35,000 bytes free  by  t
he time we reach line 30 where     the arrays are dimensioned.  If we  just  inc
rease mlinks to forty instead     of twenty, then  for  every  word  we  store  
we  would  be  taking  up an     additional forty bytes, because each  integer  
variable takes two bytes to     store.  With mwords still  set  at  300,  this  
would  mean another 12,000     bytes, just to cope with a  ve the disc, so if yo
u     want a disc copied from the WACCI library,  you have to have the two sides
     copied onto two separate 3.5" discs.  Well,  you  used to have to do that! 
    BSIDE copies the other side of a 3.5" disc  to a disc in your A drive from  
   where you can access it normally.  Once you  have a copy of BSIDE you will   
  be able to order copies from the WACCI library on single 3.5" discs.       I d
o not know whether anyone is  still  in this situation, but if you are,     it w
as written spry  small  number  of words which would need     more than twenty l
inks from them.   We  need  a way of storing these extra     links that doesn't 
increase the  storage  requirements  of the other words     too.       A LINKED 
LIST OF LINKS     Figure 1 provides a solution.  Load  up  AI  and type in the l
ines listed.     Some  of  them  are  new  lines,  while  others  replace  exist
ing  lines.     This new version, with a  couple  of adjustments  explained late
r in the     article, is saved on disc as Aecially for you!  BSIDE is  of course
 saved on the A side     of the Programmers' Patch disc...       ARTIFICIAL IDIO
CY     I hope you have all had fun with last month's program.  I originally wrot
e     it with a friend at sixth form, on an Acorn Archimedes computer (excellent
     machine).  The college had an Econet  network connecting the BBC computers 
    together, and I also wrote  a  chat  program  which  meant any message you  
   typed at your keyboard was displayed on  the screen of anyone else who wI3.BA
S   The solution is based on the idea     of the "linked  list".   A  linked  li
st  is  an  important  type  of data     structure  which  is  often  used  when
   programmers  need  to  store  an     undetermined quantity of data.       The
 idea is that  when  you  have  filled  up  one  data storage area, you     use 
part of the storage to provide  a  pointer  to where the next block of     data 
is located.  In our case,  instead  of storing twenty links from word     n in l
k(n,1) to lk(n,20), we  uas     using the chat program.  We eventually took the 
obvious step of linking AI     up to the chat program.  It could then take part 
in the conversations that     were going on, leading  the  ordinary  users  to  
wonder  why  there was a     complete idiot contributing from one of the network
 stations!       A GREMLIN IN THE WORKS     If you have used last  month's  vers
ion  of  AI extensively, you will have     come across a problem to do  with  th
e  limits  we  set to the size of the     arrays.  In lin#Programmers' Patch 17 
- WACCI 126, Nov/Dec 1998, p. 16-18     PROGRAMMERS' PATCH 17     By Matthew Phi
llips       The sun beat down on the wide  desert plains of Mexico.  Meanwhile, 
on the     open seas of the Indian ocean the  rain  poured  down on a ship laden
 with     rice pudding.  From the mizen-mast the sodden remains of a black flag 
hung     limply.  There was no sign of any  crew  on deck, but an eerie green li
ght     shone through a porthole.  Inside the  cabin  sat  the captain.  He was 
an     ev  N look at a vocabulary I had saved to disc which had about two hundre
d     words in it.  The average length of a  word  was in fact as little as 5.1,
     and the average number of links from a word was only 2!  More importantly, 
    94% of the words had fewer than  six  links  from them, and only two words  
   had more than fifteen.       Doing a rough calculation shows  that  setting  
mlinks  to be 6 would mean     that the storage required per word  would  be  ar
ound 24 bytes on average.     Contrast that is added.  This     checks to see wh
ether we have just  used  up the last-but-one space in the     current block of 
links.  If  xmlinks-1  then  the  next link will need to     point to another du
mmy word for overflow  storage.   To do this we use the     next free  word  pos
ition  by  increasing  nwords  by  one.   We  then set     lk(y,mlinks) to point
 to this new dummy word.       Do take a bit of time to get  this idea straight.
  It is a bizarre concept     at first, because not all of our words  from se  t
he  first nineteen for links to words,     and then use lk(n,20) to  point  to  
where  the  rest  of the links can be     found.  We put a dummy word in the nex
t free space in w$, and use the link     storage for that word to deal with the 
overflow from word n.       Subroutine 400 is the  crucial  one  which  searches
  through the existing     links from word "pword" to see if  "cword" is already
 among them.  If not,     cword is added to the links  as  a  word  that  can fo
llow pword.  The new     su 1 to nwords will be used for     storing actual word
s some  will  be  dummy  words  used for storing extra     links beyond the twen
ty allowed for one word.       Of course, as well as storing  the  links  we  ne
ed to be able to retrieve     them when creating random sentences.  Line 505 is 
added in order to adjust     this routine.  In line 500, i  is  set  to  a  rand
om number from 1 to the     number of links from that word.  If  i  is greater t
han mlinks-1, then the     link will be stored under a dumbroutine is listed in 
full in Figure 2.       In the old routine,  line  410  looked  through  the  li
nks  by looking at     lk(pword,x).  This is great when all  your  links are sto
red together, but     in our new arrangement, later links  will  not  be stored 
under pword, but     under the dummy word.  Thus in line 400 we set up a new var
iable, y, which     will take us through the storage locations.  Initially it is
 set to pword,     as before.       Line 410 is much the same except  that  pwor
d has beenmy  word, rather than the current word.  In     line 505 we move pword
 on to  point  at  the dummy word, and decrease i by     mlinks-1.  This is done
 as many times as is needed to reach the dummy word     where our random link is
 located.       The rest of the alterations are  to  make loading and saving of 
vocabulary     work correctly under the new system.       OPTIMISATION     Now t
hat we have overcome the limit imposed by mlinks, perhaps we ought to     think 
about what an appropriate value  for  mlin replaced by y.  The     big change is
 the new line 415.   This  tests whether x is pointing at the     last link in t
he block.  This is no  longer used for an ordinary link, but     points to the d
ummy word where the rest  of the links are to be found.  So     if xmlinks, we s
et y  to  be  the  position  of  the dummy word, which is     pointed to by that
 link, and put x back to 1.       The rest of the loop works the  same  before, 
 and  by the time we exit at     line 420, we will either have found a liks  mig
ht be.  We only set     mlinks to 20 because it was a good  high number that wou
ld take a while to     reach.  A smaller value might allow us to store the data 
more efficiently.       We can work out the amount  of  space  required  per wor
d depending on the     value of mlinks.  The word itself  uses  3 bytes for the 
string descriptor     block, plus as many bytes as the word  is long.  The space
 occupied by the     array of links is two times mlinks+1,  as each integer need
s two bytes.  I     had ank to cword, in which case j0, or     we will need to a
dd one.  Variables x  and y will still be pointing at the     next free link, so
 line 430 is  altered slightly from the previous version     to change pword to 
 y  again,  and  the  new  link  to  cword is stored in     lk(y,x).  Note that 
we  still  use  pword  at  the  start  of  line 430 to     increase the count of
 the number of  links  from pword, which is stored in     lk(pword,0).       One
 further thing needs to be done, which  is why line 435    N          than the p
revious version,  and  most  of  the  power  of the fast Pentium     processors 
is wasted in running  the  sloppy  code in the operating system     and the incr
easingly bloated applications.       BAG THE BUG     Anyway, enough of that, and
 back to  our friendly Amstrads, trying to make     conversation.  If you are fe
eling really  on  the  ball, have a go at this     problem.  While writing the a
rticle, I spotted  a bug in the program, that     can be cured by adding the fol
lowing two commands twcount+1  140 pword0FOR i0 TO wcount-1word$tempw$(i)  150 c
wordnwordsWHILE cword0 AND word$w$(cword)cwordcword-1WEND  160 IF cword0 THEN nw
ordsnwords+1w$(nwords)word$lk(nwords,0)0cwordnwords  170 GOSUB 400pwordcwordNEXT
  180 cword0GOSUB 400  190 RETURN  200 pword0GOSUB 500  210 WHILE pword0PRINT w$
(pword)" "GOSUB 500WEND  220 PRINT CHR$(8)"."PRINT  230 RETURN  300 WHILE LEFT$(
a$,1)" "a$MID$(a$,2)WENDRETURN  400 jlk(pword,0)x1ypword  410 WHILE j0 AND cword
lk(y,o the end of line 435         w$(nwords)""lk(nwords,0)0       Can you work 
out what the bug  was,  and  give  an example of how it might     manifest itsel
f  I'll give  you  a  clue  it  has  something  to do with     loading old vocab
ulary.  The answer  will  be in next month's Programmers'     Patch.       -----
---------------------------------------------------------------------       Figu
re 1 New lines to add to the AI program       400 jlk(pword,0)x1ypword     410 W
HILE j0 AND cwordlk(y,x)jj-1xx+1  415 IF xmlinks THEN ylk(y,x)x1  420 WENDIF j0 
THEN 440  430 lk(pword,0)lk(pword,0)+1lk(y,x)cword  435 IF xmlinks-1 THEN nwords
nwords+1lk(y,mlinks)nwordsw$(nwords)""lk(nwords,0)0  440 RETURN  500 iINT(RND*lk
(pword,0)+1)  505 WHILE imlinksi1+i-mlinkspwordlk(pword,mlinks)WEND  510 pwordlk
(pword,i)RETURN  600 file$MID$(a$,7)IF file$"" THEN file$"VOCAB"  610 OPENIN fil
e$INPUT#9,nwords  620 FOR i0 TO nwordsINPUT#9,w$(i),lk(i,0)  630 jlk(i,0)yix1WHI
LE j0jjx)jj-1xx+1     415 IF xmlinks THEN ylk(y,x)x1     430 lk(pword,0)lk(pword
,0)+1lk(y,x)cword     435 IF xmlinks-1 THEN nwordsnwords+1lk(y,mlinks)nwords    
 505 WHILE imlinksi1+i-mlinkspwordlk(pword,mlinks)WEND     630 jlk(i,0)yix1WHILE
 j0jj-1INPUT#9,lk(y,x)xx+1     635 IF xmlinks THEN INPUT#9,lk(y,x)ylk(y,x)x1    
 636 WENDNEXT     730 jlk(i,0)yix1WHILE j0jj-1WRITE#9,lk(y,x)xx+1     735 IF xml
inks THEN WRITE#9,lk(y,x)ylk(y,x)x1     736 WENDNEXT       --with setting mlinks
  to  20,  which  requires at least fifty     bytes per word.  By reducing mlink
s to 6  from 20 we can fit twice as many     words in memory.   Certainly  mword
s  could  be  set  to  something over a     thousand.       If you alter mlinks,
  then  vocabulary  saved  to  disc  when mlinks was a     different value will 
not load  in  correctly,  so  it  is wise to choose a     suitable value for mli
nks and stick to that.   I will be using 6 in future     examples, but you can e
asily alter i-------------------------------------------------------------------
-----       Figure 2 The new subroutine at 400       400 jlk(pword,0)x1ypword   
  410 WHILE j0 AND cwordlk(y,x)jj-1xx+1     415 IF xmlinks THEN ylk(y,x)x1     4
20 WENDIF j0 THEN 440     430 lk(pword,0)lk(pword,0)+1lk(y,x)cword     435 IF xm
links-1 THEN nwordsnwords+1lk(y,mlinks)nwords     440 RETURN  $tch 17 - WACCI 12
6     PROGRAMMERS' PATCH 17     By Matthew Phillips       The sun beat down on t
he wide  desertt to whatever you have selected.       This sort of calculation, 
optimising the  method for storing your data, is     often needed when programmi
ng machines with relatively little memory, like     our Amstrads.  It is also a 
good  habit  to get into when programming more     powerful machines.  Sadly, mo
st commercial  programs  for Windows PCs tend     to compete on the features the
y  provide,  rather  than the speed at which     they run.  Newer versions have 
 more  features,  but often run more slowly    10 DEFINT a-zOPENOUT"d"MEMORY HIM
EM-1CLOSEOUT  20 mwords1000mlinks6nwords0  30 DIM w$(mwords),lk(mwords,mlinks),t
empw$(128)  40 LINE INPUT"",a$  41 IF UPPER$(LEFT$(a$,5))"*LOAD" THEN GOSUB 600G
OTO 40  42 IF UPPER$(LEFT$(a$,5))"*SAVE" THEN GOSUB 700GOTO 40  50 wcount0GOSUB 
300IF a$"" THEN GOSUB 100  60 GOSUB 200GOTO 40  100 WHILE INSTR(a$," ")0aINSTR(a
$," ")  110 tempw$(wcount)LEFT$(a$,a-1)a$MID$(a$,a+1)  120 wcountwcount+1GOSUB 3
00WEND  130 IF a$"" THEN tempw$(wcount)a$wcount  !N!!!!!!!!!word the function wi
ll     always churn out the same  number,  but  it  is unpredictable in the sens
e     that if you gave me a word I would not be able to guess whether the number
     would be nearer 1 or 1000 without working the function out myself.       MA
KING A HASH OF IT     Line 800 is where the hash function  comes  in our example
 program.  It is     quite complicated, but it needs to use  a  good spread of l
etters from all     bits of the word.   I  just  made  it  up  yesterday,  so th
ere is nothig for words.  Every time we type a sentence in AI,     it has to sea
rch to see whether we have used each word already in order to     add the new wo
rds and create links between them and the existing ones.  In     the original AI
 program,  the  searching  accounted  for  most of the time     taken processing
 the user's  sentences.   The  binary  tree system that we     developed last mo
nth improved the speed considerably by storing all of the     words in alphabeti
cal order.   This  month's  listing  makes tng     special about it, but it seem
s to work all right.       The calculation is done in several stages, using the 
ASC function all over     the place to turn  the  letters  of  the  word  into  
ASCII numbers.  I am     using the RIGHT$ function to get letters  from differen
t bits of the word.     The important feature of the calculation  is  that  c en
ds up smaller than     32768.  This is because the last thing we do is set cword
 to c MOD mwords,     and if c was bigger than 32767 the MOD would not cope.he s
earching     even faster by storing the words in  a totally random order.  Yes, 
it does     sound ridiculous.  Let me explain...       NUMBER CRUNCHING     The 
concept we will be exploring  this  month  is known as the hash table.     The i
dea is that  when  we  store  a  word  in  the  array  we use a "hash     functi
on" which gives us a number  based  on  the word.  We use this magic     number 
to tell us where to store the word in the array.       For example, we could hav
e a hash  function which jus       The MOD command makes numbers "wrap round".  
If you do a number MOD 20, it     essentially subtracts 20 from the number  repe
atedly until the result is a     number from 0 to 19.  Remember  that  mwords  i
s the number of elements in     the array, dimensioned in line 30.  This means t
hat cword can end up to be     any number between 0 and mwords-1.       So, line
 800 calculates cword from the  word in the variable word$.  If we     are stori
ng a new word, it tells us  where  to put it in the array, at looked at the firs
t     letter in the word.  If it was "A"  the function would return 1, and so on
     up to "Z" which would  turn  into  26.   If  you  wanted to store the word 
    "Frog", you would put it in slot 6, and the word "Kermit" would go in slot  
   11.       There are several problems with this hash  function.  For one thing
, if we     wanted to store more  than  26  words,  we  could  have  a  big arra
y of a     thousand, say, but it is  hard  to  adapt  the  function to give us b
igger     nund if     we are looking to see where  an  existing  word  is,  it t
ells us where to     look.       AIR TRAFFIC CONTROL     We still have the probl
em of  collisions,  when  two words get sent to the     same slot.  Of course, a
s our array is  big (line 20 sets mwords to 1009),     there is plenty of space 
to store  words.  Even so, you might be surprised     how quickly the collisions
 occur.       You may have heard of the "birthday paradox".   If you have 23 peo
ple in a     room, it is more often than notmbers.  You will also get a lot of w
ords ending up in the same positions     as each other (known  as  a  "collision
"  in computing theory).  Moreover,     there will be some slots which will larg
ely go unused - the ones for words     beginning with Q, X and Z.  This is waste
ful of array space.       What we actually want is a function which appears to g
enerate numbers from     the words we give it in a random and unpredictable way.
  Of course it will     not really be unpredictable as given  a  particular -1IN
PUT#9,lk(y,x)xx+1  635 IF xmlinks THEN INPUT#9,lk(y,x)ylk(y,x)x1  636 WENDNEXT  
640 CLOSEINRETURN  700 file$MID$(a$,7)IF file$"" THEN file$"VOCAB"  710 OPENOUT 
file$WRITE#9,nwords  720 FOR i0 TO nwordsWRITE#9,w$(i),lk(i,0)  730 jlk(i,0)yix1
WHILE j0jj-1WRITE#9,lk(y,x)xx+1  735 IF xmlinks THEN WRITE#9,lk(y,x)ylk(y,x)x1  
736 WENDNEXT  740 CLOSEOUTRETURN  $$ENOUT"d"MEMORY HIMEM-1CLOSEOUT  20 mwords100
0mlinks6nwords0  30 DIM w$(mwords),lk(mwords,mlinks),tempw$(1  "N"""""""""ely to
 join them.  We end up  searching  through the whole array one by     one, like 
the original AI did.       What I have done instead of moving  on  one  slot,  i
s to move a number of     slots based on part of the hash function.  Line 810 is
 where this happens.     The loop in the line repeats while the  word in the arr
ay w$ is not word$,     the one we are looking for,  and  is  not  empty  either
.  We then move on     cword by b, which is part  of  the  hash  function from l
ine 800, and look     agai array in a random     way.  The new line 435 moves on
  a  certain amount, j, until a blank entry     is found.  To protect the positi
on  from  being  used for a word later, we     change w$(x) to a space.  That is
 also why line 31 is added.       With loading and saving, lines 620 and  720 ha
ve changed, and line 625 has     gone.  The lines from 800 onwards have all chan
ged of course.       Hash tables can be  faster  than  binary  trees,  and  in  
our example the     program is shorter too.  Hash tables  n.  The MOD mwords par
t is to make  it  wrap round to the start of the     array again if necessary.  
     If two words give the same value of  cword, it doesn't mean that b will be 
    the same for each one, so very often we will avoid a double collision like  
   this.       WHY 1009     You may be wondering why I have  increased  the size
 of the array to 1009.     The reason is that some aspects of  hash  tables  wor
k a lot better if the     size of the hash table is a prime number.  If you star
t at any   the  case  that  two of them will share a     birthday.  It is all a 
matter of probability.  Exactly the same applies to     our words in the array, 
but  instead  of  365  days for birthdays, we have     1009 slots for words.  Th
e probabilities  mean  that  we will only need 38     words for there to be a  g
reater  than  even chance that two will generate     the same value of cword and
 be sent to the same position in the array.       How can we deal with these col
lisions  One approach is to put the wordposition in     the table and move a cer
tain fixed  amount, wrapping round using MOD, then     you will eventually visit
 all the  elements  of  the table.  This will not     work if the size of the ta
ble is not prime.       THE GORY DETAILS     I had better briefly mention the  o
ther  changes  in the program.  Most of     the lines are the same as last  mont
h,  so  I  have asked John to print an     asterisk by all the ones which have  
changed.  Note that line 625 has gone     completely.  The listing is  in     th
e next free slot instead.   Suppose  "Kermit"  generates a hash value of     543
, and we look in the array  and  find "Frog" is already there.  We then     move
 on the space 544, and if  it  is  free, put "Kermit" in there.  If we     then 
needed to search for  Kermit  in  the  future, we would calculate the     hash v
alue, 543, and find  Frog  there.   We  would  then look at the next     space i
nstead, and find Kermit.  Of course, if you looked in space 543 and     found it
 empty, then you wouldsaved  on  disc  for you as AI5.BAS, without     asterisks
!       A few lines near the  start  have  changed  to  set things up differentl
y.     Lines 43 and 44 add two new  commands  which show the progress of the has
h     table.  Typing "*showhash" will list all  the  words in the table, showing
     their position and  the  number  of  following  links  they  have.  Typing 
    "*hashgraph" gives a graphical representation of the has table, and if you  
   do this from time to time as you  type more sente know that  Kermit would not
 be found in the     array at all, because it would have been  put there if the 
space was free.     If Frog is in 543 and there is  nothing  in 544, again we kn
ow that Kermit     is not in the array because it would have been put in 544.   
    This method is called "linear probing", but  it isn't actually a very good  
   method.  The problem is that once you get  a group of words in a row, they   
  cluster together, and once you get  a  cluster,  other words are even more    
 liknces in, you will see how     the hash table fills up.       Line 160 is whe
re we deal with adding a new word, and is much simpler than     the binary tree 
version, because  the  subroutine  at 800 basically either     tells us where th
e  word  is  already,  or  where  to  put  it.  The other     important alterati
on is line 435.  Here we  are putting in the dummy links     explained in issue 
126.  In the old  version,  we just used the next space     in the array, but we
 are now  using  the  spaces  in the  #N######### LISTEX  $$$ 20 FOR x1 TO 5  30
 READ name$(x)GOSUB 140  40 NEXT  50 PRINT" x name$(x)"TAB(15)"nextname(x)"  60 
FOR x0 TO 5  70 PRINT xname$(x)TAB(14)nextname(x)  80 NEXT  90 PRINTPRINT"In ord
er"  100 x0WHILE nextname(x)0  110 xnextname(x)PRINT name$(x)  120 WENDEND  130 
DATA Egbert,Alfred,Charlie,Bertrand,Desmond  140 REM insert into list  150 ynext
name(0)py0  160 WHILE y0 AND name$(y)name$(x)  170 pyyynextname(y)  180 WEND  19
0 nextname(py)xnextname(x)y  200 RETURN    d  nword    F ('d t(," ") t(," ")ntem
p( wcoun)u(, )(, )"x wcoun wcoun , ""  temp( wcoun) wcoun wcoun pwor     wcounwo
rtemp( )    ( cwor)""   nword nword( cwor)wor l( cwor,)  pwor cwor cwor  pwor . 
 pwor ( pwor)fil(,) fil""  fil"VOCAB" fil#, nword8     mword#,( ), l( ,)  l( ,) 
      #, l( , )  I   mlink  #, l( , )  l( , )   (y(wor,))(y(wor,)) (y(wor,))(wor
) (   )(   ) cwor    mwordc* ( cwor)wor  ( cwor)"" cwo" "  ()"."(, u(,)" "(,)0  
l( pwor,)   pworA     cwor l( , )    4   mlink    l( , )     D l( pwor,) l( pwor
,) l( , ) cwor   mlink   nword nword (( cwor)" ") ( cwor )   mword ( )"" (  )   
mword l( , mlink) r( cwor )   mword ()P     mword ( )""    ""( )"" l( ,)l  ,, X,
,, , ,,      2    X,,d( X) ,,S     mword ( )""      X,,d( X) ,, ,0 DIM w$(mwords
-1),lk(mwords-1,mlinks),temp)(wor) (   )(   ) cwor    mwordc* ( cwor)wor  ( cwor
)"" cwo l( ,)( )" "$ (E l( pwor,))P   mlink   mlink pwor l( pwor, mlink)$ pwor l
( pwor, )5Xfil(,) fil""  fil"VOCAB"b fil£#, nword8l     mword£#,( ), l( ,)v  l( 
,)       £#, l( , )  I   mlink  £#, l( , )  l( , ) 5do  not  work  so well when 
they are     full though, so you may  find  things  clogging  up  if you spend t
oo long     talking to your computer.  I have included a PRINT CHR$(7) in line 8
10, so     it will beep every time there is  a collision.  When you have been ta
lking     for a while you will get a lot more beeps.       That's all until next
 month, when you will  be asked to dust off your CP/M     system discs (cue soun
d effects of  Richard Fairhurst gnashing his teeth).     See you then.  nction c
ome10 DIM name$(5),nextname(5)  20 FOR x1 TO 5  30 READ name$(x)GOSUB 140  40 NE
XT  50 PRINT" x name$(x)"TAB(15)"nextname(x)"  60 FOR x0 TO 5  70 PRINT xname$(x
)TAB(14)nextname(x)  80 NEXT  90 PRINTPRINT"In order"  100 x0WHILE nextname(x)0 
 110 xnextname(x)PRINT name$(x)  120 WENDEND  130 DATA Egbert,Alfred,Charlie,Ber
trand,Desmond  140 REM insert into list  150 ynextname(0)py0  160 WHILE y0 AND n
ame$(y)name$(x)  170 pyyynextname(y)  180 WEND  190 nextname(py)xnextname(x)y  2
00 RETURN AI5     BASp  bmword ( )""      X,,d( X)  a-z"d" B* mword mlink nwordB
 ( mword), l( mword, mlink),temp()()" "# ( £"",+) (u(,))"*LOAD"   X (+* (u(,))"*
SAVE"    (/+ (u(,))"*SHOWHASH"    (1, (u(, ))"*HASHGRAPH"    ((2 wcoun , ""  $N$
$$$$$$$$#Programmers' Patch 21 - WACCI 130, May/June 1999     PROGRAMMERS' PATCH
 21     By Matthew Phillips       I said you would have to dust  off  your  CP/M
 system discs this time.  We     are going to look at  Logo,  that  neglected  l
anguage that every CPC disc     drive user has access to.  You  may  have met Lo
go through turtle graphics     and  never  realised  that  it  is  a  reasonably
  complete  and  powerful     programming language.  The Amstrad version  is  ve
ry  slow, but it's still     worth explolines  form  blocks  of     instructions
 which are associated with  the  previous line.  You must also     type the comm
ands in lower case letters.       TYPE-IN CORNER     To enter the program, just 
type all  the  lines, pressing ENTER at the end     of each  one.   While  you  
are  in  the  middle  of  typing  a  procedure     definition, the prompt will c
hange  to  a  greater-than sign.  Some of the     program lines are wider than t
he screen.  Logo will display an exclamation     mark when you wrap rounring.   
    First you will need to make a  working  copy  of the relevant side of your  
   system discs.  For 464 and 664 users this  is side 2 of the CP/M 2.2 disc.   
  6128 users should use side 3 of their system discs.  You can also try this    
 out on a PCW if you have  one.   On  the  464 and 664, you then insert the     
copy and type CPM.  Logo will run automatically.  6128 users will need to     st
art CP/M+ from side 1 of  your  system  discs  and then insert your Logo     dis
c and type "submit logod to the left of the screen.  Just ignore this.       If 
you need to edit the procedure called "parse" later, just enter         ed "pars
e       and you will be  put  into  an  editing  screen.   Press  COPY to save t
he     changes, or ESC to get out without altering anything.  If you use a 464 o
r     664 you will find that the procedure will  have been joined up in one long
     line, which works just the same way, but is rather harder to read.  On the 
    6128 the formatting is preserved.       The Logo pr3".  That's  what  it  sa
ys in your manual, so I     hope it works.       Once Logo has started, you  wil
l  be  faced  with  a question mark prompt,     which is Logo's way of saying "W
hat do you want me to do"       LOGO SCRIPT     Because you will probably not  h
ave  seen  much  Logo before, I had better     explain a bit about what the prog
ram  is  meant  to look like, and how you     type it in.  Unlike BASIC, there  
are  no  line numbers.  BASIC is in fact     unusual in using line numbers, whic
h are ovided with CP/M 2.2 for the  464 and 664 is a cut-down version     design
ed to fit into the smaller  memory  of these machines.  As a result,     two com
mands I have used are  not  available on this version.  Fortunately     we can a
dd them very easily, so 464  and  664 users will also need to type     in the de
finitions of "thing" and "memberp" from the separate listing.       Once it is a
ll typed in, you can save it by typing         save "anyname       and then run 
the program by entering  the  single conly really used for the GOTO and     GOSU
B commands.  Other languages  give  subroutines  names,  and call them     funct
ions or procedures.       The first line is "to ai".  This defines a new procedu
re or command, which     is to be called "ai".  The  lines  up  to  "end" are th
e definition of the     procedure.  It works the same way  as  a subroutine, but
 instead of typing     GOSUB 100 to call it, we just  type ai.  This particular 
routine refers to     two others, parse and speak, which we define latommand "ai
".  If all is     well, you will be able  to  type  sentences  and the computer 
will respond     with random gibberish based on what you have typed.  Logo's err
or messages     are usually very helpful, so you will be able to correct any mis
takes with     the ed command as described above.       The two listings are  sa
ved  on  this  disc  as AI6.LOG and 64KBITS.LOG.     Copy them to your working d
isc, start  Logo,  and load the main program by     typing load "ai6 and pressin
g return.  If you arer.  It also calls itself,     in the last line before the  
end.   This  means the program goes round and     round until we press escape.  
     All of those double quote signs at  the  start,  but not the end, of words 
    are actually correct.  Try to get the  spacing  the same as it is printed   
  there are no spaces between the  quotes  or colons and the following word.    
 It is important to type the spaces  at  the  starts of the lines.  This is     
so  that  Logo  recognizes  that   the   indented    %N%%%%%%%%% to be the first
     word in the sentence "list".  The  next  line increases pointer.  Note how 
    we are using the name preceded by   double  quotes to tell "make" the name  
   of the variable, and the name preceded by  a colon to use the value of the   
  variable.  The next line sets x to the the next word in the sentence.       Th
e "if" statement and the next  line  are  crucial.  Ignore the "if" line     for
 the moment.  The next line is creating the link that will lead us from     the 
word in w to thee count     command needs to look at  the  value  of  userinput 
 to see how many words     there are, so the name is preceded by a colon.       
PUNCTUATION EXERCISE     The difference between the double quotes  and the colon
 is very important.     Start up Logo and type the following lines         make 
"fred "albert       pr fred       The word "albert" will be printed  up,  becaus
e  that  is the value of the     variable "fred".  Next try these two         ma
ke fred "george       pr albert       Notice using CP/M 2.2, you will     need t
o load 64KBITS as well.       SHORTLISTING     The AI program is much shorter wh
en  written in Logo compared to the BASIC     version.  This is because Logo  wo
rks  in  a completely different way.  It     was derived from the  language  LIS
P,  which  was developed for artificial     intelligence processes.  LISP stands
  for  LISt Processing.  Whereas BASIC     uses numbers, strings and arrays, LIS
P and  Logo use a form of data called     the list.  Everything in the lae that 
the word "fred" had a colon in front this time.  This time the     word "george"
 is printed up.   Somehow  the "albert" variable has acquired     the value "geo
rge".  Remember that the  make  command needs to be told the     name of the var
iable to set.  Instead of  "fred we put fred, so the value     of fred, which is
 "albert", was used as the name of the variable to set.       This is something 
which you just cannot do  in BASIC, and we will be using     it to full effect. 
      PARSE THE MUSTARD nguage, even the procedures and programs we     define a
re formed from lists.   This  means  that really advanced programs     can rewri
te themselves while they are running!       Look at the first procedure we  defi
ne,  "to  ai".  The first line of this     has Logo's equivalent of the INPUT co
mmand.  The "rl" command reads a line     of input from the user.  The make  com
mand  is followed by a variable name     and then the value to be taken by  the 
variable.  If the value to be taken     is a command, th    Let us look at parse
  now,  which  analyses  the  sentence and records the     links between words. 
 The first line of  parse sets the "list" variable to     a new value.  The "se"
 command forms a sentence, a list of words, from the     values you give it.   T
he  command  and  parameters  are  all within round     brackets so that se know
s where to stop.  We give it "TheStart", the value     of "userinput" and "TheEn
d", effectively  adding  these  two words to each     end of our original senten
ce.   Wee result of that command  is used as the value.  Hence the     first lin
e takes a  line  of  input  from  the  user,  and  puts it in the     userinput 
variable.       Actually rl stands for  "read  list".   The  stuff  typed  by  t
he user is     treated as a list of  words.   Logo  is  particularly good at man
ipulating     these.  The next line uses the  "count"  command  which finds out 
how many     words there are in a  list.   (In  BASIC  we  needed  a couple of l
ines of     program to do this.)  If the  use  these  dummy  words to mark which
     words can start and end sentences.       After setting pointer to 1,  we  r
epeat  a  list  of commands.  The number     after the repeat command shows how 
many times we repeat them (in this case     one less than the number of words  i
n  the list).  The commands to execute     follow in a list enclosed by square b
rackets.       Inside the loop we set w to be  the item of our sentence "list" p
ointed to     by "pointer".  As pointer starts out at 1,  w  will be set sentenc
e  has  at  least one word, we run the     "parse" function, which analyses the 
sentence, remembering which words can     follow which.  Then  we  "speak",  whi
ch  prints  up  a computer-generated     sentence, and then we loop round by exe
cuting the "ai" procedure again.       The "userinput" variable has appeared twi
ce  so  far.  When it was defined     the name was preceded by double quotes.  T
his is because it is the name of     the variable that the "make" command needs.
   In the other case, th  &N&&&&&&&&&   using the memberp command to see  if  th
e  word  x  is not already in the     list.       HOMEWORK ASSIGNMENT     I will
 leave studying the rest of the listing to you.  The speak procedure     builds 
up a sentence  in  x,  starting  off  with "TheStart".  The addword     routine 
takes a random word out of those  that can follow w.  If it is not     "TheEnd" 
it is added it to the sentence and addword is called again.       You will see h
ow various features of the Logo language have made it easier     to ddword    ma
ke "z thing w    make "w item ((random count z) + 1) z     if not (w  "TheEnd)  
          make "x (se x w)      addword        end  l     if (count userinput)  
0 parse userinput     speak     ai  end    to parse list    make "lier pointer +
 1       make "x item pointer list       if not (memberp x thing w)             
   make w (se thing w x)                end    to speak    make "w "TheStart    
 make "x      if (count TheStart)  0 addword     pr x  end    to awrite our AI p
rogram.  We are all  used to using BASIC, and it is quite     a revelation to se
e just  how  different  another programming language can     be.  In BASIC we ha
d to write  our own routines for dividing the sentences     up into words and li
nking those  words  together using pointers in arrays.     In Logo a lot of this
 work is done for us already.       If you want to learn more  about  Logo,  the
re  was an excellent series in     Computing with  the  Amstrad  CPC  from  June
  1987  to  March to memberp bit list    (local "pointer)    make "pointer 1    
repeat count list            if item pointer list  bit        op "TRUE      make
 "pointer pointer + 1          op "FALSE  end    to thing variable    op gprop v
ariable ".APV  end   1988.  The     definitions of "thing" and "memberp"  were  
adapted from this.  Details of     all the Logo commands  are  in  your  compute
r  manual  (or the disc drive     manual if you have  a  464).   If  you  are  r
eally  keen, write into Fair     Comment and tell me, and I can do a few more ar
ticles.       You may have spotted a problem with the program as it stands.  If 
the user     types a sentence including words  which  we  are  using as variable
 names,     such as "list" and  "pointer",  strange  word in  x.   Suppose  w wa
s "This" and x was "is".     The make command is  setting  w,  which  means  it 
 is setting a variable     called "This".  Our variable names  are  actually det
ermined by the user's     sentences!  It is setting it  to  a  sentence  (list  
of words) made up of     "thing w" and "x".  We  know  "x"  is  the  word  "is",
 but what is the     "thing" command doing       The "thing" command gives us th
e  value  of  the variable name we give it.     If you type         thing "va th
ings  will  happen.  There is a     better way to  write  the  program  using  "
property  lists",  and  I have     included this on the Programmers' Patch disc.
  It is saved as AI7.LOG  ld have to dust  off  your  CP/M system discs this tim
e.  We  ment and tell me, and I can do a few more articles.       You may have s
potted a problem with the program as it stands.  If the user     types a sentenc
e including words  which  we  are  using as variable names,     such as "list" a
nd  "pointer",  strange riable       it has the same effect as variable  and giv
es us the value of "variable".     However we are asking for thing w, and  w is 
"This", so we get the value     of the variable This.       It is pretty weird, 
isn't it   The  idea  is  that for each word the user     types, we build up a l
ist of other words that can follow it, and store the     list in the variable wh
ose  name  is  that  word.   That  is what the line     following the "if" state
ment is doing.   The "if" statement itself is just  to ai    make "userinput rl 
    if (count userinput)  0 parse     speak     ai  end    to parse    make "lis
t (se "TheStart userinput "TheEnd)    make "pointer 1     repeat ((count list) -
 1)             make "w item pointer list       make "pointer pointer + 1       
make "x item pointer list       if not (memberp x thing w)                make w
 (se thing w x)                end    to speak    make "w "TheStart     make "x 
     if (count TheStart)  0 addword     pr x  end    to a  'N'''''''''to ai    m
ake "userinput rl     if (count userinput)  0 parse     speak     ai  end    to 
parse    make "list (se "TheStart userinput "TheEnd)    make "pointer 1     repe
at ((count list) - 1)             make "w item pointer list       make "pointer 
pointer + 1       make "x item pointer list       if not (memberp x gprop w "FOL
)                pprop w "FOL (se gprop w "FOL x)                end    to speak
    make "w "TheStart     make "x      if (count gprop "TheStart "FOL)  0 addwor
d     pr x  end    to addword    make "z gprop w "FOL     make "w item ((random 
count z) + 1) z     if not (w  "TheEnd)            make "x (se x w)      addword
        end  parse userinput     speak     ai  end    to parse list    make "lie
r pointer + 1       make "x item pointer list       if not (memberp x gprop w "F
OL)                pprop w "FOL (se gprop w "FOL x)                end    to spe
ak    make "w "TheStart     make "x      if (count gprop "TheStart "FOL)  0 addw
Tous droits réservés. Reproduction sans autorisation interdite. © Kukulcan