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+snclude "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