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 C1 02 00 00 00 02 ......N.........
000120: 00 00 C6 02 00 00 00 02 00 00 C2 02 00 00 00 02 ................
000130: 00 00 C7 02 00 00 00 02 00 00 C3 02 00 00 00 02 ................
000140: 00 00 C8 02 00 00 00 02 00 00 C4 02 00 00 00 02 ................
000150: 00 00 C9 02 00 00 00 02 00 00 C5 02 00 00 00 02 ................
000160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0001F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000200: 00 44 49 53 43 20 20 20 20 42 41 53 00 00 00 02 .DISC BAS....
000210: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000220: 00 4C 49 4E 4B 42 41 53 45 54 58 54 00 00 00 0D .LINKBASETXT....
000230: 03 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000240: 00 4C 4F 4F 4D 20 20 20 20 42 49 4E 00 00 00 74 .LOOM BIN...t
000250: 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 00 ................
000260: 00 4D 45 53 53 41 47 45 53 54 58 54 00 00 00 06 .MESSAGESTXT....
000270: 15 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000280: 00 52 45 41 44 4D 45 20 20 20 20 20 00 00 00 23 .README ...#
000290: 16 17 18 19 AF 00 00 00 00 00 00 00 00 00 00 00 ................
0002A0: 00 41 30 31 20 20 20 20 20 20 20 20 00 00 00 4D .A01 ...M
0002B0: 1A 1B 1C 1D 1E 1F 20 21 22 23 00 00 00 00 00 00 ...... !"#......
0002C0: 00 41 30 32 20 20 20 20 20 20 20 20 00 00 00 4F .A02 ...O
0002D0: 24 25 26 27 28 29 2A 2B 2C 2D 00 00 00 00 00 00 $%&'()*+,-......
0002E0: 00 41 30 33 20 20 20 20 20 20 20 20 00 00 00 57 .A03 ...W
0002F0: 2E 2F 30 31 32 33 34 35 36 37 38 00 00 00 00 00 ./012345678.....
000300: 00 41 30 34 20 20 20 20 20 20 20 20 00 00 00 54 .A04 ...T
000310: 39 3A 3B 3C 3D 3E 3F 40 41 42 43 00 00 00 00 00 9:;<=>?@ABC.....
000320: 00 41 30 35 20 20 20 20 20 20 20 20 00 00 00 63 .A05 ...c
000330: 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 00 00 00 DEFGHIJKLMNOP...
000340: 00 41 30 36 20 20 20 20 20 20 20 20 00 00 00 4F .A06 ...O
000350: 51 52 53 54 55 56 57 58 59 5A 00 00 00 00 00 00 QRSTUVWXYZ......
000360: 00 41 30 37 20 20 20 20 20 20 20 20 00 00 00 51 .A07 ...Q
000370: 5B 5C 5D 5E 5F 60 61 62 63 64 65 00 00 00 00 00 [\]^_`abcde.....
000380: 00 41 30 38 20 20 20 20 20 20 20 20 00 00 00 58 .A08 ...X
000390: 66 67 68 69 6A 6B 6C 6D 6E 6F 70 00 00 00 00 00 fghijklmnop.....
0003A0: 00 41 30 39 20 20 20 20 20 20 20 20 00 00 00 5F .A09 ..._
0003B0: 71 72 73 74 75 76 77 78 79 7A 7B 7C 00 00 00 00 qrstuvwxyz{|....
0003C0: 00 44 49 53 43 4D 45 4E 55 42 41 53 00 00 00 08 .DISCMENUBAS....
0003D0: 7D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 }...............
0003E0: 00 46 49 47 31 36 31 20 20 20 20 20 00 00 00 06 .FIG161 ....
0003F0: 7E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ~...............
000400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0004A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0004B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0004C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0004D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0004E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0004F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0005A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0005B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0005C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0005D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0005E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0005F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000600: 00 46 49 47 31 36 31 38 20 20 20 20 00 00 00 05 .FIG1618 ....
000610: 7F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000620: 00 46 49 47 32 20 20 20 20 20 20 20 00 00 00 02 .FIG2 ....
000630: 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000640: 00 46 49 47 32 37 20 20 20 20 20 20 00 00 00 03 .FIG27 ....
000650: 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000660: 00 46 49 47 32 37 31 20 20 20 20 20 00 00 00 03 .FIG271 ....
000670: 82 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000680: 00 46 49 47 32 37 31 38 20 20 20 20 00 00 00 03 .FIG2718 ....
000690: 83 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0006A0: 00 48 45 4C 50 20 20 20 20 54 58 54 00 00 00 0A .HELP TXT....
0006B0: 84 85 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0006C0: 00 4D 45 4E 55 45 58 31 20 42 41 53 00 00 00 08 .MENUEX1 BAS....
0006D0: 86 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0006E0: 00 4D 45 4E 55 45 58 32 20 42 41 53 00 00 00 0A .MENUEX2 BAS....
0006F0: 87 88 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000700: 00 4D 45 4E 55 45 58 33 20 42 41 53 00 00 00 0B .MENUEX3 BAS....
000710: 89 8A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000720: 00 4D 45 4E 55 45 58 34 20 42 41 53 00 00 00 0C .MENUEX4 BAS....
000730: 8B 8C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000740: 00 4D 45 4E 55 53 55 42 20 20 20 20 00 00 00 05 .MENUSUB ....
000750: 8D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000760: 00 50 45 4C 4D 41 4E 20 20 42 41 53 00 00 00 18 .PELMAN BAS....
000770: 8E 8F 90 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000780: 00 42 53 49 44 45 20 20 20 42 41 53 00 00 00 0B .BSIDE BAS....
000790: 91 92 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0007A0: 00 42 53 49 44 45 20 20 20 42 49 4E 00 00 00 07 .BSIDE BIN....
0007B0: 93 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0007C0: 00 41 31 30 20 20 20 20 20 20 20 20 00 00 00 54 .A10 ...T
0007D0: 94 95 96 97 98 99 9A 9B 9C 9D 9E 00 00 00 00 00 ................
0007E0: 00 41 31 31 20 20 20 20 20 20 20 20 00 00 00 5E .A11 ...^
0007F0: 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA 00 00 00 00 ....£...........
000800: 46 20 72 65 61 64 6D 65 0D 0A 42 20 72 65 61 64 F readme..B read
000810: 6D 65 20 31 33 36 20 31 34 34 20 72 65 61 64 6D me 136 144 readm
000820: 65 20 34 34 34 36 0D 0A 42 20 72 65 61 64 6D 65 e 4446..B readme
000830: 20 31 30 32 39 20 31 30 33 37 20 61 30 31 20 30 1029 1037 a01 0
000840: 0D 0A 42 20 72 65 61 64 6D 65 20 31 30 36 36 20 ..B readme 1066
000850: 31 30 37 34 20 61 30 32 20 30 0D 0A 42 20 72 65 1074 a02 0..B re
000860: 61 64 6D 65 20 31 31 32 35 20 31 31 33 33 20 61 adme 1125 1133 a
000870: 30 33 20 30 0D 0A 42 20 72 65 61 64 6D 65 20 31 03 0..B readme 1
000880: 31 39 37 20 31 32 30 35 20 61 30 34 20 30 0D 0A 197 1205 a04 0..
000890: 42 20 72 65 61 64 6D 65 20 31 32 36 30 20 31 32 B readme 1260 12
0008A0: 36 38 20 61 30 35 20 30 0D 0A 42 20 72 65 61 64 68 a05 0..B read
0008B0: 6D 65 20 31 33 30 36 20 31 33 31 34 20 61 30 36 me 1306 1314 a06
0008C0: 20 30 0D 0A 42 20 72 65 61 64 6D 65 20 31 33 35 0..B readme 135
0008D0: 33 20 31 33 36 31 20 61 30 37 20 30 0D 0A 42 20 3 1361 a07 0..B
0008E0: 72 65 61 64 6D 65 20 31 34 31 35 20 31 34 32 33 readme 1415 1423
0008F0: 20 61 30 38 20 30 0D 0A 42 20 72 65 61 64 6D 65 a08 0..B readme
000900: 20 31 34 36 30 20 31 34 36 38 20 61 30 39 20 30 1460 1468 a09 0
000910: 0D 0A 42 20 72 65 61 64 6D 65 20 31 34 38 35 20 ..B readme 1485
000920: 31 34 39 34 20 61 31 30 20 30 0D 0A 42 20 72 65 1494 a10 0..B re
000930: 61 64 6D 65 20 31 35 32 37 20 31 35 33 36 20 61 adme 1527 1536 a
000940: 31 31 20 30 0D 0A 42 20 72 65 61 64 6D 65 20 31 11 0..B readme 1
000950: 36 34 31 20 31 36 35 30 20 61 31 32 20 30 0D 0A 641 1650 a12 0..
000960: 42 20 72 65 61 64 6D 65 20 31 37 30 36 20 31 37 B readme 1706 17
000970: 31 35 20 61 31 33 20 30 0D 0A 42 20 72 65 61 64 15 a13 0..B read
000980: 6D 65 20 31 37 37 39 20 31 37 38 38 20 61 31 34 me 1779 1788 a14
000990: 20 30 0D 0A 42 20 72 65 61 64 6D 65 20 31 38 35 0..B readme 185
0009A0: 36 20 31 38 36 35 20 61 31 35 20 30 0D 0A 42 20 6 1865 a15 0..B
0009B0: 72 65 61 64 6D 65 20 31 39 31 36 20 31 39 32 35 readme 1916 1925
0009C0: 20 61 31 36 20 30 0D 0A 42 20 72 65 61 64 6D 65 a16 0..B readme
0009D0: 20 31 39 38 33 20 31 39 39 32 20 61 31 37 20 30 1983 1992 a17 0
0009E0: 0D 0A 42 20 72 65 61 64 6D 65 20 32 30 34 30 20 ..B readme 2040
0009F0: 32 30 34 39 20 61 31 38 20 30 0D 0A 42 20 72 65 2049 a18 0..B re
000A00: 00 53 45 4E 44 20 20 20 20 41 53 4D 00 00 00 0C .SEND ASM....
000A10: AB AC 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000A20: 00 4D 49 44 49 31 20 20 20 42 41 53 00 00 00 04 .MIDI1 BAS....
000A30: AD 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000A40: 00 53 45 4E 44 20 20 20 20 42 41 53 00 00 00 08 .SEND BAS....
000A50: AE 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
000A60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000A90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000AF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000B90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000BF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000C00: 61 64 6D 65 20 32 31 30 37 20 32 31 31 36 20 61 adme 2107 2116 a
000C10: 31 39 20 30 0D 0A 42 20 72 65 61 64 6D 65 20 32 19 0..B readme 2
000C20: 31 36 34 20 32 31 37 33 20 61 32 30 20 30 0D 0A 164 2173 a20 0..
000C30: 42 20 72 65 61 64 6D 65 20 32 32 32 32 20 32 32 B readme 2222 22
000C40: 33 31 20 61 32 31 20 30 0D 0A 42 20 61 30 31 20 31 a21 0..B a01
000C50: 39 32 36 20 39 33 33 20 61 30 31 20 38 35 31 39 926 933 a01 8519
000C60: 0D 0A 42 20 61 30 32 20 38 39 31 20 39 30 31 20 ..B a02 891 901
000C70: 61 30 32 20 38 32 38 39 0D 0A 42 20 61 30 32 20 a02 8289..B a02
000C80: 33 30 31 30 20 33 30 32 31 20 61 30 32 20 39 30 3010 3021 a02 90
000C90: 34 39 0D 0A 42 20 61 30 33 20 31 37 39 31 20 31 49..B a03 1791 1
000CA0: 37 39 38 20 61 30 33 20 39 34 34 30 0D 0A 42 20 798 a03 9440..B
000CB0: 61 30 33 20 33 35 39 38 20 33 36 30 37 20 61 30 a03 3598 3607 a0
000CC0: 33 20 39 38 34 35 0D 0A 42 20 61 30 33 20 38 38 3 9845..B a03 88
000CD0: 30 38 20 38 38 31 38 20 61 30 33 20 31 30 33 32 08 8818 a03 1032
000CE0: 34 0D 0A 42 20 61 30 34 20 35 32 37 20 35 33 38 4..B a04 527 538
000CF0: 20 61 30 34 20 38 30 31 31 0D 0A 42 20 61 30 34 a04 8011..B a04
000D00: 20 34 37 34 34 20 34 37 35 35 20 61 30 34 20 38 4744 4755 a04 8
000D10: 35 34 33 0D 0A 42 20 61 30 34 20 34 37 37 34 20 543..B a04 4774
000D20: 34 37 38 37 20 61 30 34 20 31 30 31 30 34 0D 0A 4787 a04 10104..
000D30: 42 20 61 30 35 20 36 33 36 20 36 34 33 20 61 30 B a05 636 643 a0
000D40: 35 20 31 31 31 37 38 0D 0A 42 20 61 30 36 20 31 5 11178..B a06 1
000D50: 31 35 31 20 31 31 35 39 20 61 30 36 20 38 38 37 151 1159 a06 887
000D60: 39 0D 0A 42 20 61 30 36 20 32 39 39 33 20 32 39 9..B a06 2993 29
000D70: 39 37 20 61 30 36 20 38 30 39 38 0D 0A 42 20 61 97 a06 8098..B a
000D80: 30 36 20 33 30 30 32 20 33 30 30 32 20 61 30 36 06 3002 3002 a06
000D90: 20 38 30 39 38 0D 0A 42 20 61 30 37 20 33 35 31 8098..B a07 351
000DA0: 20 33 35 39 20 61 30 37 20 37 38 33 39 0D 0A 42 359 a07 7839..B
000DB0: 20 61 30 37 20 32 31 38 34 20 32 31 39 32 20 61 a07 2184 2192 a
000DC0: 30 37 20 37 38 33 39 0D 0A 42 20 61 30 37 20 34 07 7839..B a07 4
000DD0: 32 31 34 20 34 32 32 32 20 61 30 37 20 39 31 33 214 4222 a07 913
000DE0: 30 0D 0A 42 20 61 30 38 20 35 34 39 20 35 35 36 0..B a08 549 556
000DF0: 20 61 30 38 20 31 30 33 33 33 0D 0A 42 20 61 30 a08 10333..B a0
000E00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000E90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000ED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000EF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000F90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
000FF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
001000: 38 20 36 31 34 20 36 31 38 20 61 30 38 20 39 34 8 614 618 a08 94
001010: 33 31 0D 0A 42 20 61 30 39 20 35 39 36 20 36 32 31..B a09 596 62
001020: 31 20 61 30 39 20 38 34 37 33 0D 0A 42 20 61 31 1 a09 8473..B a1
001030: 30 20 34 38 35 32 20 34 38 35 38 20 61 31 30 20 0 4852 4858 a10
001040: 39 38 32 38 0D 0A 42 20 61 31 30 20 39 32 38 32 9828..B a10 9282
001050: 20 39 32 39 34 20 61 31 30 20 31 30 31 30 31 0D 9294 a10 10101.
001060: 0A 42 20 61 31 31 20 34 35 31 20 34 35 39 20 61 .B a11 451 459 a
001070: 31 31 20 38 31 33 31 0D 0A 42 20 61 31 31 20 35 11 8131..B a11 5
001080: 33 32 20 35 34 30 20 61 31 31 20 39 30 37 39 0D 32 540 a11 9079.
001090: 0A 42 20 61 31 32 20 33 38 31 30 20 33 38 31 38 .B a12 3810 3818
0010A0: 20 61 31 32 20 31 30 35 31 31 0D 0A 42 20 61 31 a12 10511..B a1
0010B0: 32 20 38 34 35 34 20 38 34 36 30 20 61 31 32 20 2 8454 8460 a12
0010C0: 31 31 37 36 38 0D 0A 42 20 61 31 33 20 32 30 37 11768..B a13 207
0010D0: 35 20 32 30 38 33 20 61 31 33 20 36 33 30 32 0D 5 2083 a13 6302.
0010E0: 0A 42 20 61 31 33 20 32 38 30 34 20 32 38 31 31 .B a13 2804 2811
0010F0: 20 61 31 33 20 35 39 37 31 0D 0A 42 20 61 31 34 a13 5971..B a14
001100: 20 31 33 36 34 20 31 33 37 30 20 61 31 34 74 31 1364 1370 a14t1
001110: 20 30 0D 0A 42 20 61 31 35 20 35 30 32 37 20 35 0..B a15 5027 5
001120: 30 33 35 20 34 36 34 72 73 78 2E 62 61 73 20 30 035 464rsx.bas 0
001130: 0D 0A 42 20 61 31 36 20 35 34 33 20 35 34 39 20 ..B a16 543 549
001140: 61 69 31 2E 62 61 73 20 30 0D 0A 42 20 61 31 36 ai1.bas 0..B a16
001150: 20 39 35 32 20 39 35 39 20 61 31 36 20 31 30 35 952 959 a16 105
001160: 31 34 0D 0A 42 20 61 31 36 20 31 30 34 34 34 20 14..B a16 10444
001170: 31 30 34 36 34 20 61 31 36 61 20 30 0D 0A 42 20 10464 a16a 0..B
001180: 61 31 36 61 20 34 36 39 20 34 37 35 20 61 69 32 a16a 469 475 ai2
001190: 2E 62 61 73 20 30 0D 0A 42 20 61 31 37 20 33 37 .bas 0..B a17 37
0011A0: 30 39 20 33 37 31 36 20 61 31 37 20 31 30 39 30 09 3716 a17 1090
0011B0: 35 0D 0A 42 20 61 31 37 20 35 30 31 31 20 35 30 5..B a17 5011 50
0011C0: 31 38 20 61 31 37 20 31 31 35 39 34 0D 0A 42 20 18 a17 11594..B
0011D0: 61 32 31 20 34 33 32 32 20 34 33 32 38 20 61 69 a21 4322 4328 ai
0011E0: 36 2E 6C 6F 67 20 30 0D 0A 42 20 61 32 31 20 34 6.log 0..B a21 4
0011F0: 33 33 34 20 34 33 34 34 20 36 34 6B 62 69 74 73 334 4344 64kbits
001200: 00 44 49 53 43 20 20 20 20 42 41 53 00 00 00 00 .DISC BAS....
001210: 00 00 00 00 00 70 01 00 2A 00 00 00 00 00 00 00 .....p..*.......
001220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001240: 2A 00 00 3E 03 28 00 0A 00 BE 20 1C 00 BF 2C FF *..>.(.... ...,.
001250: 12 28 1C 00 A7 29 01 BE 20 1C 01 BF 2C 1C C7 00 .(...).. ...,...
001260: 01 CA 22 6C 6F 6F 6D 2E 62 69 6E 22 00 00 00 1A .."loom.bin"....
001270: 65 73 74 20 74 68 65 20 6D 61 63 68 69 6E 65 20 est the machine
001280: 28 00 0A 00 BE 20 1C 00 BF 2C FF 12 28 1C 00 A7 (.... ...,..(...
001290: 29 01 BE 20 1C 01 BF 2C 1C C7 00 01 CA 22 6C 6F ).. ...,....."lo
0012A0: 6F 6D 2E 62 69 6E 22 00 00 00 1A 65 73 74 20 74 om.bin"....est t
0012B0: 68 65 20 6D 61 63 68 69 6E 65 20 75 70 6F 6E 20 he machine upon
0012C0: 65 78 69 74 3A 00 27 00 14 00 BE 20 1C 00 BF 2C exit:.'.... ...,
0012D0: FF 12 28 1C 00 A7 29 01 BE 20 1C 01 BF 2C 1C C7 ..(...).. ...,..
0012E0: 00 01 CA 22 6C 6C 6C 2E 62 69 6E 22 00 00 00 1A ..."lll.bin"....
0012F0: 61 70 74 65 64 20 66 72 6F 6D 20 22 4C 65 61 72 apted from "Lear
001300: 30 20 54 48 45 4E 20 33 35 30 30 20 45 4C 53 45 0 THEN 3500 ELSE
001310: 20 34 30 30 30 0D 0A 20 20 20 34 35 33 30 20 52 4000.. 4530 R
001320: 45 54 55 52 4E 0D 0A 1A 69 6C 6C 69 70 73 0D 0A ETURN...illips..
001330: 0D 0A 20 20 20 59 65 73 2C 20 74 68 69 73 20 6D .. Yes, this m
001340: 6F 6E 74 68 20 74 68 65 20 70 72 6F 6F 66 72 65 onth the proofre
001350: 61 64 65 72 20 67 65 74 73 20 61 20 20 67 6F 20 ader gets a go
001360: 20 61 74 20 77 72 69 74 69 6E 67 20 61 6E 20 61 at writing an a
001370: 72 74 69 63 6C 65 2C 20 74 6F 20 67 69 76 65 0D rticle, to give.
001380: 20 4D 49 44 24 28 63 61 72 64 24 2C 63 61 72 64 MID$(card$,card
001390: 2C 31 29 3B 0D 0A 20 20 20 20 20 20 20 20 43 48 ,1);.. CH
0013A0: 52 24 28 32 32 36 2B 73 75 69 74 29 3A 52 45 54 R$(226+suit):RET
0013B0: 55 52 4E 0D 0A 20 20 20 33 35 30 30 20 4C 4F 43 URN.. 3500 LOC
0013C0: 41 54 45 20 63 6F 6C 2A 33 2B 32 2C 72 6F 77 2A ATE col*3+2,row*
0013D0: 32 2B 32 3A 50 41 50 45 52 20 30 3A 50 45 4E 20 2+2:PAPER 0:PEN
0013E0: 31 3A 50 52 49 4E 54 20 43 48 52 24 28 32 32 30 1:PRINT CHR$(220
0013F0: 29 43 48 52 24 28 32 32 32 29 3A 52 45 54 55 52 )CHR$(222):RETUR
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 C4 02 00 00 00 02 ......N.........
001420: 01 00 C9 02 00 00 00 02 01 00 C5 02 00 00 00 02 ................
001430: 01 00 C1 02 00 00 00 02 01 00 C6 02 00 00 00 02 ................
001440: 01 00 C2 02 00 00 00 02 01 00 C7 02 00 00 00 02 ................
001450: 01 00 C3 02 00 00 00 02 01 00 C8 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: 00 18 0E CD C2 02 E5 AF 11 FF FF 13 BE 23 20 FB .............# .
001510: E1 F1 E5 FE 73 20 13 3A 72 08 B7 28 0D D5 2A 70 ....s .:r..(..*p
001520: 08 E5 CD B0 01 E1 D1 30 01 EB 2A 73 08 2B B7 ED .......0..*s.+..
001530: 52 23 F2 F8 03 21 00 00 44 4D AF 2A 6E 08 B5 C4 R#...!..DM.*n...
001540: 1E 04 E1 7B B2 28 08 1B 7E 23 CD 7E 08 18 F4 2A ...{.(..~#.~...*
001550: 6E 08 B5 CC 1E 04 D1 E1 E1 2B 2B E5 18 95 78 B1 n........++...x.
001560: C8 7C CD 7E 08 0B 18 F6 22 7F 08 D1 F1 E1 E5 F5 .|.~....".......
001570: 39 D5 5E 23 56 ED 53 81 08 2B 2B 2B C9 1A FE 61 9.^#V.S..+++...a
001580: 30 02 C6 20 FE 6C 20 01 13 C1 F1 E1 E5 F5 1A FE 0.. .l .........
001590: 61 30 02 C6 20 13 D5 C5 56 2B 5E 01 0A 00 C9 E5 a0.. ...V+^.....
0015A0: 2A 81 08 7E 23 22 81 08 E1 C9 E5 D5 C5 2A 81 08 *..~#".......*..
0015B0: E5 CD 49 00 7D C1 D1 E1 C9 E5 2A 81 08 2B 77 22 ..I.}.....*..+w"
0015C0: 81 08 E1 C9 E5 D5 C5 6F 26 00 E5 2A 81 08 E5 CD .......o&..*....
0015D0: 6A 00 C1 D1 E1 C9 21 5F 04 11 79 04 18 06 21 6A j.....!_..y...!j
0015E0: 04 11 84 04 ED 53 7C 08 CD 28 04 18 17 21 6A 04 .....S|..(...!j.
0015F0: 22 7F 08 21 84 04 22 7C 08 21 00 00 22 81 08 D1 "..!.."|.!.."...
001600: E1 E5 D5 39 C5 5E 23 56 2B 2B E5 3E C3 32 7E 08 ...9.^#V++.>.2~.
001610: 32 7B 08 21 00 00 22 6E 08 1A 13 B7 28 2F CD F6 2{.!.."n....(/..
001620: 01 20 0D CD 7E 08 CD F6 01 28 F8 CD 7B 08 18 E9 . ..~....(..{...
001630: FE 25 28 27 6F CD 7E 08 BD 28 DE FE FF 20 0B ED .%('o.~..(... ..
001640: 5B 6E 08 7A B3 20 0A 1B 18 07 CD 7B 08 ED 5B 6E [n.z. .....{..[n
001650: 08 E1 C1 E1 E3 39 F1 F9 F5 EB C9 D5 21 FF FF 1A .....9......!...
001660: D6 2A 32 70 08 20 01 13 1A CD 88 00 DC A9 02 22 .*2p. ........."
001670: 71 08 CD 3D 04 FE 68 28 2F FE 64 28 2B 0B 0B FE q..=..h(/.d(+...
001680: 6F 28 25 FE 78 28 0C FE 63 28 65 FE 73 28 6F D1 o(%.x(..c(e.s(o.
001690: D1 18 BA CD 7E 08 FE 30 20 09 CD 7E 08 FE 78 28 ....~..0 ..~..x(
0016A0: 05 FE 58 C4 7B 08 CB 21 F5 D5 50 59 60 68 ED 4B ..X.{..!..PY`h.K
0016B0: 71 08 78 B1 28 27 0B CD 7E 08 F5 D6 30 38 1A FE q.x.('..~...08..
0016C0: 0A 38 0B D6 11 38 12 E6 1F C6 0A BB 30 0B C5 4F .8...8......0..O
0016D0: 42 CD 1D 01 09 C1 F1 18 D9 F1 CD 7B 08 D1 C1 3A B..........{...:
0016E0: 70 08 B7 28 4D EB 73 3E 68 B8 28 36 23 72 18 32 p..(M.s>h.(6#r.2
0016F0: CD 7E 08 6F 3A 70 08 B7 28 38 7D 12 18 24 ED 4B .~.o:p..(8}..$.K
001700: 04 00 DD E5 C1 09 01 01 00 CD 72 02 18 83 DD 6E ..........r....n
001710: 06 DD 66 07 6E 26 00 E5 CD 0B 02 E5 DD 6E 04 DD ..f.n&.......n..
001720: 66 05 6E 26 00 E5 CD 0B 02 EB E1 B7 ED 52 18 AB f.n&.........R..
001730: 18 A9 21 00 00 CD 8F 00 DD 6E 04 DD 66 05 22 EE ..!......n..f.".
001740: A1 2A EE A1 CD D4 BC AF CD 1B 00 11 02 00 C3 C4 .*..............
001750: 00 21 00 00 CD 8F 00 DD 6E 04 DD 66 05 22 EE A1 .!......n..f."..
001760: 2A EE A1 7E CD 2B BD 38 08 21 EE A1 36 00 23 36 *..~.+.8.!..6.#6
001770: 00 2A EE A1 11 02 00 C3 C4 00 18 F8 21 00 00 CD .*..........!...
001780: 8F 00 DD 6E 08 DD 66 09 22 D5 63 21 06 00 DD E5 ...n..f.".c!....
001790: C1 09 01 FF FF CD 72 02 11 00 00 CD 98 01 7D B4 ......r.......}.
0017A0: CA 7D 0E DD 6E 04 DD 66 05 E5 CD 49 00 22 D7 63 .}..n..f...I.".c
0017B0: 11 FF 00 CD 91 01 7D B4 28 03 21 01 00 7D B4 CA ......}.(.!..}..
0017C0: 92 0E 2A D7 63 11 0D 00 CD 91 01 7D B4 28 03 21 ..*.c......}.(.!
0017D0: 01 00 7D B4 CA AB 0E 21 D5 63 01 01 00 CD 7D 02 ..}....!.c....}.
0017E0: E5 2A D7 63 D1 7D 12 26 00 18 A0 2A D5 63 E5 21 .*.c.}.&...*.c.!
0017F0: 00 00 D1 7D 12 26 00 2A D7 63 11 0D 00 CD 88 01 ...}.&.*.c......
001800: 7D B4 CA D2 0E DD 6E 04 DD 66 05 E5 CD 49 00 22 }.....n..f...I."
001810: D7 63 2A D7 63 11 FF 00 CD 88 01 7D B4 CA F4 0E .c*.c......}....
001820: DD 6E 08 DD 66 09 EB 2A D5 63 CD 88 01 7D B4 28 .n..f..*.c...}.(
001830: 03 21 01 00 7D B4 CA FF 0E 21 00 00 C3 05 0F DD .!..}....!......
001840: 6E 08 DD 66 09 11 06 00 C3 C4 00 18 F8 21 FE FF n..f.........!..
001850: CD 8F 00 21 0A 00 E5 CD 0B 0A DD 75 FE DD 74 FF ...!.......u..t.
001860: 11 00 00 CD 88 01 7D B4 CA 4B 0F C3 32 0F 25 73 ......}..K..2.%s
001870: 0A 00 21 2E 0F E5 2A 4A A1 E5 01 06 00 C5 CD 16 ..!...*J........
001880: 03 21 01 00 E5 CD 37 38 C3 5C 0F DD 6E FE DD 66 .!....78.\..n..f
001890: FF 11 00 00 19 E5 21 00 00 CD 6A 02 DD 6E FE DD ......!...j..n..
0018A0: 66 FF 11 00 00 C3 C4 00 18 F8 21 FE FF CD 8F 00 f.........!.....
0018B0: 21 0A 00 E5 CD 0B 0A DD 75 FE DD 74 FF 11 00 00 !.......u..t....
0018C0: CD 88 01 7D B4 CA A8 0F C3 8F 0F 25 73 0A 00 21 ...}.......%s..!
0018D0: 8B 0F E5 2A 4C A1 E5 01 06 00 C5 CD 16 03 21 01 ...*L.........!.
0018E0: 00 E5 CD 37 38 C3 93 10 DD 6E FE DD 66 FF 11 02 ...78....n..f...
0018F0: 00 19 E5 DD 6E 0C DD 66 0D 11 02 00 19 CD 4B 02 ....n..f......K.
001900: 71 08 CD 7E 08 CD F6 01 20 05 CD 7B 08 18 0F 6F q..~.... ..{...o
001910: 3A 70 08 B7 28 03 7D 12 13 0B 78 B1 20 E4 2E 00 :p..(.}...x. ...
001920: 18 D2 2A 6E 08 23 22 6E 08 D1 E1 E1 2B 2B E5 C3 ..*n.#"n....++..
001930: D9 04 D1 E1 18 F9 00 00 00 21 00 00 E5 CD 49 00 .........!....I.
001940: 7D C9 2A DA 08 7E 23 22 DA 08 6F 26 FF BC C8 24 }.*..~#"..o&...$
001950: B7 C0 06 50 CD 45 06 EB CD 7C 00 FE 7F 28 13 CD ...P.E...|...(..
001960: 82 00 7D 12 13 FE 0A 28 05 3C 28 02 10 EA AF 12 ..}....(.<(.....
001970: 18 D0 3E 50 B8 28 E1 1B 04 3E 08 CD 82 00 3E 10 ..>P.(...>....>.
001980: CD 82 00 18 D3 21 89 08 36 00 22 DA 08 C9 2F C6 .....!..6.".../.
001990: 21 91 63 01 64 3E D1 F9 D5 36 00 5D 54 13 ED B0 !.c.d>...6.]T...
0019A0: 21 30 39 18 02 ED B0 4E 23 46 23 5E 23 56 23 78 !09....N#F#^#V#x
0019B0: B1 20 F2 CD 52 00 CD B8 1F C3 64 00 52 20 50 52 . ..R.....d.R PR
0019C0: F7 A1 F7 A1 1A 13 ED A1 C0 E0 18 F8 C5 DD E5 21 ...............!
0019D0: E5 08 06 0B 36 00 10 FC CD 84 BB CD 7B BB DD E1 ....6.......{...
0019E0: C1 C3 85 00 D1 E1 7D D5 C3 5A BB D1 E1 7D D5 F5 ......}..Z...}..
0019F0: 3E 00 CD 24 08 F1 FE 0A 20 07 3E 0D CD 5A BB 3E >..$.... .>..Z.>
001A00: 0A CD 5A BB C9 CD 81 BB CD 06 BB CD 84 BB FE 0D ..Z.............
001A10: 20 02 3E 0A 6F 26 00 FE 1A C0 21 FF FF 7D C9 CD .>.o&....!..}..
001A20: 06 BB 6F 26 00 C9 CD 09 BB 21 00 00 38 02 AF C9 ..o&.....!..8...
001A30: CD 0C BB 2C C9 CD 09 BB 21 00 00 3F D8 FE FC 37 ...,....!..?...7
001A40: C0 2C 3F C9 D1 E1 7D E1 D5 B7 FA 4F 07 FE 08 28 .,?...}....O...(
001A50: 1C 38 12 FE 09 20 38 7D DD E5 CD 95 BC DD E1 D8 .8... 8}........
001A60: CD 92 BC 18 2A CD 24 08 7D CD 5A BB C9 7D CD 2B ....*.$.}.Z..}.+
001A70: BD D8 18 F9 E1 D1 7B E5 21 E5 08 5F AF 57 19 BE ......{.!.._.W..
001A80: 28 04 5E 77 EB C9 7B B7 CA 02 06 FE 0A 28 04 21 (.^w..{......(.!
001A90: FF FF C9 DD E5 CD 80 BC DD E1 6F 26 00 D8 CD 7D ..........o&...}
001AA0: BC 18 EC F1 D1 E1 F5 00 7B FE 0B D0 7A B7 C0 7D ........{...z..}
001AB0: 21 E5 08 19 77 C9 D1 E1 7D D5 21 8A 4C FE 09 28 !...w...}.!.L..(
001AC0: 12 FE 0A 20 CA DD E5 CB 86 CD 7A BC DD E1 30 BF ... ......z...0.
001AD0: B7 18 78 DD E5 CB 8E CB 56 20 02 CB 86 CD 8F BC ..x.....V ......
001AE0: 18 EA AF 21 E5 08 77 21 EF 08 77 21 8A 4C 77 2A ...!..w!..w!.Lw*
001AF0: 80 06 22 82 06 3E 09 CD 7A 07 3E 0A C3 7A 07 F1 .."..>..z.>..z..
001B00: 2E 6C 6F 67 20 30 0D 0A 42 20 61 32 31 20 31 31 .log 0..B a21 11
001B10: 36 39 37 20 31 31 37 30 33 20 61 69 37 2E 6C 6F 697 11703 ai7.lo
001B20: 67 20 30 0D 0A 1A 0D 0A 42 20 72 65 61 64 6D 65 g 0.....B readme
001B30: 20 31 30 32 39 20 31 30 33 37 20 61 30 31 20 30 1029 1037 a01 0
001B40: 0D 0A 42 20 72 65 61 64 6D 65 20 31 30 36 36 20 ..B readme 1066
001B50: 31 30 37 34 20 61 30 32 20 30 0D 0A 42 20 72 65 1074 a02 0..B re
001B60: 61 64 6D 65 20 31 31 32 35 20 31 31 33 33 20 61 adme 1125 1133 a
001B70: 30 33 20 30 0D 0A 42 20 72 65 61 64 6D 65 20 31 03 0..B readme 1
001B80: 33 32 20 35 34 30 20 61 31 31 20 39 30 37 39 0D 32 540 a11 9079.
001B90: 0A 42 20 61 31 32 20 33 38 31 30 20 33 38 31 38 .B a12 3810 3818
001BA0: 20 61 31 32 20 31 30 35 31 31 0D 0A 42 20 61 31 a12 10511..B a1
001BB0: 32 20 38 34 35 34 20 38 34 36 30 20 61 31 32 20 2 8454 8460 a12
001BC0: 31 31 37 36 38 0D 0A 42 20 61 31 33 20 32 30 37 11768..B a13 207
001BD0: 35 20 32 30 38 33 20 61 31 33 20 36 33 30 32 0D 5 2083 a13 6302.
001BE0: 0A 42 20 61 31 33 20 32 38 30 34 20 32 38 31 31 .B a13 2804 2811
001BF0: 20 61 31 33 20 35 39 37 31 0D 0A 42 20 61 31 34 a13 5971..B a14
001C00: 20 31 33 36 34 20 31 33 37 30 20 61 31 34 74 31 1364 1370 a14t1
001C10: 20 30 0D 0A 42 20 61 31 35 20 35 30 32 37 20 35 0..B a15 5027 5
001C20: 30 33 35 20 34 36 34 72 73 78 2E 62 61 73 20 30 035 464rsx.bas 0
001C30: 0D 0A 42 20 61 31 36 20 35 34 33 20 35 34 39 20 ..B a16 543 549
001C40: 61 69 31 2E 62 61 73 20 30 0D 0A 42 20 61 31 36 ai1.bas 0..B a16
001C50: 20 39 35 32 20 39 35 39 20 61 31 36 20 31 30 35 952 959 a16 105
001C60: 31 34 0D 0A 42 20 61 31 36 20 31 30 34 34 34 20 14..B a16 10444
001C70: 31 30 34 36 34 20 61 31 36 61 20 30 0D 0A 42 20 10464 a16a 0..B
001C80: 61 31 36 61 20 34 36 39 20 34 37 35 20 61 69 32 a16a 469 475 ai2
001C90: 2E 62 61 73 20 30 0D 0A 42 20 61 31 37 20 33 37 .bas 0..B a17 37
001CA0: 30 39 20 33 37 31 36 20 61 31 37 20 31 30 39 30 09 3716 a17 1090
001CB0: 35 0D 0A 42 20 61 31 37 20 35 30 31 31 20 35 30 5..B a17 5011 50
001CC0: 31 38 20 61 31 37 20 31 31 35 39 34 0D 0A 42 20 18 a17 11594..B
001CD0: 61 32 31 20 34 33 32 32 20 34 33 32 38 20 61 69 a21 4322 4328 ai
001CE0: 36 2E 6C 6F 67 20 30 0D 0A 42 20 61 32 31 20 34 6.log 0..B a21 4
001CF0: 33 33 34 20 34 33 34 34 20 36 34 6B 62 69 74 73 334 4344 64kbits
001D00: D1 E1 F5 D5 E5 CD 15 02 45 E1 D1 1A ED 5B 8A 4C ........E....[.L
001D10: 16 01 DD E5 FE 72 28 08 15 FE 77 28 13 B7 18 29 .....r(...w(...)
001D20: CB 43 20 25 CB C3 D5 ED 5B 80 06 CD 77 BC 18 18 .C %....[...w...
001D30: CB 4B 20 15 CB 53 20 06 CB 43 20 0D CB C3 CB CB .K ..S ..C .....
001D40: D5 ED 5B 82 06 CD 8C BC D1 DD E1 21 00 00 D0 7B ..[........!...{
001D50: 32 8A 4C 3E 09 82 6F C9 D1 E1 D5 22 82 06 21 8A 2.L>..o...."..!.
001D60: 4C CB D6 C9 E5 CD B4 BB E1 C9 ED B0 E1 D1 44 4D L.............DM
001D70: CD 98 BC C3 A2 07 0E FF 21 3E 08 C3 16 BD 60 69 ........!>....`i
001D80: CD 46 39 CD 50 06 C7 C9 DD E5 C1 09 6E 26 00 C9 .F9.P.......n&..
001D90: 00 02 00 71 4D 71 4D 02 6C 69 73 74 20 20 20 20 ...qMqM.list
001DA0: 00 BC 4D 00 00 73 23 00 00 00 00 8A 08 63 09 EB ..M..s#......c..
001DB0: 72 2B 73 EB C9 5E 23 56 D5 EB 09 EB 72 2B 73 E1 r+s..^#V....r+s.
001DC0: 01 00 26 00 C3 81 23 FE 36 FF 00 6E 63 6C 75 64 ..&...#.6..nclud
001DD0: 65 0A 00 01 09 D1 CD 89 02 E5 CD 90 01 05 E5 CD e...............
001DE0: E8 22 D1 D1 D1 EB 60 69 73 CD 90 01 09 E5 CD 90 ."....`is.......
001DF0: 01 07 E5 CD 90 01 09 D1 CD 29 02 E5 CD 90 01 05 .........)......
001E00: E5 CD E8 22 D1 D1 D1 60 69 6E 26 00 23 26 00 C3 ..."...`in&.#&..
001E10: 81 23 EB 21 01 00 39 F9 EB C1 8A 08 21 00 00 39 .#.!..9.....!..9
001E20: F9 44 4D 21 04 00 09 6E 26 00 11 D0 FF 19 7C 00 .DM!...n&.....|.
001E30: CD AF 01 DA B5 23 21 04 00 09 6E 26 00 11 C6 FF .....#!...n&....
001E40: 21 00 00 CD 8F 00 DD 6E 04 DD 66 05 11 02 00 CD !......n..f.....
001E50: 34 01 11 01 00 B7 ED 52 22 E7 A1 21 04 00 DD E5 4......R"..!....
001E60: C1 09 E5 2A E7 A1 11 02 00 CD 0B 01 EB E1 19 22 ...*..........."
001E70: E5 A1 21 01 80 22 E3 A1 21 E7 A1 01 FF FF CD 7D ..!.."..!......}
001E80: 02 7D B4 CA 6C 09 2A E5 A1 CD 4B 02 ED 5B E3 A1 .}..l.*...K..[..
001E90: CD 98 01 7D B4 CA 61 09 2A E5 A1 CD 4B 02 22 E3 ...}..a.*...K.".
001EA0: A1 21 E5 A1 01 FE FF CD 72 02 18 CC 2A E3 A1 C3 .!......r...*...
001EB0: BE 00 18 FB 21 00 00 CD 8F 00 DD 6E 04 DD 66 05 ....!......n..f.
001EC0: 11 02 00 CD 34 01 11 01 00 B7 ED 52 22 E1 A1 21 ....4......R"..!
001ED0: 04 00 DD E5 C1 09 E5 2A E1 A1 11 02 00 CD 0B 01 .......*........
001EE0: EB E1 19 22 DF A1 21 FF 7F 22 DD A1 21 E1 A1 01 ..."..!.."..!...
001EF0: FF FF CD 7D 02 7D B4 CA E0 09 2A DF A1 CD 4B 02 ...}.}....*...K.
001F00: 00 4C 4F 4F 4D 20 20 20 20 42 49 4E 00 00 00 00 .LOOM BIN....
001F10: 00 00 02 00 00 40 00 00 0B 39 40 00 00 00 00 00 .....@...9@.....
001F20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001F30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
001F40: 0B 39 00 9A 03 59 0F 00 00 FB A1 0E 07 C3 CE BC .9...Y..........
001F50: 1A 24 FF 00 FF 26 B1 0A 12 FD A7 86 22 37 67 CC .$...&......"7g.
001F60: 80 99 76 6A 33 97 82 02 F3 2C 0F 96 E7 F3 94 3E ..vj3....,.....>
001F70: A8 60 99 0F 2A 86 FA 63 80 EA A4 11 53 F3 0D 36 .`..*..c....S..6
001F80: CD 36 08 C3 00 00 C3 BF 07 C3 34 07 C3 04 07 C3 .6........4.....
001F90: 76 07 C3 8C 06 C3 DF 06 C3 AB 06 C3 E6 06 C3 F9 v...............
001FA0: 05 C3 AB 06 C3 A2 07 C3 F5 06 C3 63 07 C3 A4 06 ...........c....
001FB0: C3 00 09 C3 00 09 C3 00 09 C3 16 03 C3 C5 06 C3 ................
001FC0: C5 06 C3 AF 06 C3 45 06 FE 30 3F D0 FE 3A C9 D1 ......E..0?..:..
001FD0: DD E5 DD 21 00 00 DD 39 39 F9 2A 4E 06 39 30 02 ...!...99.*N.90.
001FE0: EB E9 21 AF 00 E5 21 04 00 E5 CD 79 00 18 91 73 ..!...!....y...s
001FF0: 74 61 63 6B 20 6F 76 65 72 66 6C 6F 77 00 DD 5E tack overflow..^
002000: 04 DD 56 05 DD F9 DD E1 C1 EB 39 F9 EB C5 44 4D ..V.......9...DM
002010: C9 7D B3 6F 7C B2 67 C9 7D AB 6F 7C AA 67 C9 7D .}.o|.g.}.o|.g.}
002020: A3 6F 7C A2 67 C9 1D F8 29 18 FB 1D F8 CB 3C CB £o|.g...).....<.
002030: 1D 18 F8 1D F8 CB 2C CB 1D 18 F8 2B 7C 2F 67 7D ......,....+|/g}
002040: 2F 6F C9 7C B5 21 00 00 C0 23 C9 7C AA F5 AA FC /o.|.!...#.|....
002050: FB 00 7A CD 49 01 CD 1D 01 F1 F0 18 DE C5 06 10 ..z.I...........
002060: 7C 4D 21 00 00 29 38 0A CB 11 17 30 03 19 38 02 |M!..)8....0..8.
002070: 10 F3 C1 C9 7C AA 7C F5 B7 FC FB 00 7A CD 49 01 ....|.|.....z.I.
002080: CD 50 01 F1 F5 FC FB 00 F1 EB B7 FC FB 00 EB C9 .P..............
002090: C5 42 4B 11 00 00 3E 10 29 38 06 3D 20 FA C1 C9 .BK...>.)8.= ...
0020A0: 29 F5 CB 13 CB 12 7B 91 7A 98 FA 72 01 57 7B 91 ).....{.z..r.W{.
0020B0: 5F 2C F1 3D 20 EA C1 C9 CD 34 01 EB C9 CD 50 01 _,.= ....4....P.
0020C0: EB C9 AF ED 52 67 6F C9 CD 82 01 37 23 C8 3F 2B ....Rgo....7#.?+
0020D0: C9 CD 82 01 C8 23 37 C9 EB CD 91 01 C8 FA A3 01 .....#7.......£.
0020E0: E8 2B 3F E0 2B 3F C9 EB CD 99 01 C0 23 37 C9 EB .+?.+?......#7..
0020F0: CD 82 01 D0 23 C9 EB CD B0 01 C0 23 37 C9 F1 E1 ....#......#7...
002100: ED 5B DD A1 CD 99 01 7D B4 CA D5 09 2A DF A1 CD .[.....}....*...
002110: 4B 02 22 DD A1 21 DF A1 01 FE FF CD 72 02 18 CC K."..!......r...
002120: 2A DD A1 C3 BE 00 18 FB 6C 69 6E 6B 62 61 73 65 *.......linkbase
002130: 2E 74 78 74 00 68 65 6C 70 2E 74 78 74 00 6D 65 .txt.help.txt.me
002140: 73 73 61 67 65 73 2E 74 78 74 00 21 00 00 CD 8F ssages.txt.!....
002150: 00 DD 6E 04 DD 66 05 11 03 00 19 11 04 00 CD 50 ..n..f.........P
002160: 01 11 01 00 19 22 40 A1 2A F0 A1 22 42 A1 11 00 ....."@.*.."B...
002170: 00 CD 88 01 7D B4 CA 5E 0A 21 D9 63 22 42 A1 22 ....}..^.!.c"B."
002180: F0 A1 2A 42 A1 11 00 00 19 E5 2A 42 A1 CD 6A 02 ..*B......*B..j.
002190: 2A 42 A1 11 02 00 19 E5 21 59 0F CD 6A 02 2A 42 *B......!Y..j.*B
0021A0: A1 11 00 00 19 CD 4B 02 22 44 A1 21 01 00 7D B4 ......K."D.!..}.
0021B0: CA 3C 0B 2A 44 A1 11 02 00 19 CD 4B 02 ED 5B 40 .<.*D......K..[@
0021C0: A1 CD B6 01 7D B4 CA 12 0B 2A 44 A1 11 02 00 19 ....}....*D.....
0021D0: CD 4B 02 ED 5B 40 A1 CD 88 01 7D B4 CA B7 0A 2A .K..[@....}....*
0021E0: 42 A1 11 00 00 19 E5 2A 44 A1 11 00 00 19 CD 4B B......*D......K
0021F0: 02 CD 6A 02 C3 F2 0A 2A 44 A1 11 02 00 19 E5 CD ..j....*D.......
002200: 4B 02 ED 5B 40 A1 B7 ED 52 CD 6A 02 2A 44 A1 11 K..[@...R.j.*D..
002210: 02 00 19 CD 4B 02 11 04 00 CD 0B 01 EB 2A 44 A1 ....K........*D.
002220: 19 22 44 A1 2A 44 A1 11 02 00 19 E5 2A 40 A1 CD ."D.*D......*@..
002230: 6A 02 2A 42 A1 22 F0 A1 2A 46 A1 ED 5B 40 A1 B7 j.*B."..*F..[@..
002240: ED 52 22 46 A1 2A 44 A1 11 04 00 19 11 02 00 C3 .R"F.*D.........
002250: C4 00 2A 44 A1 ED 5B F0 A1 CD 88 01 7D B4 CA 26 ..*D..[.....}..&
002260: 0B 21 00 00 18 E6 2A 44 A1 22 42 A1 2A 44 A1 11 .!....*D."B.*D..
002270: 00 00 19 CD 4B 02 22 44 A1 C3 6B 0A 18 CE 21 FC ....K."D..k...!.
002280: FF CD 8F 00 DD 6E 06 DD 66 07 11 04 00 B7 ED 52 .....n..f......R
002290: 11 02 00 19 CD 4B 02 DD 75 FE DD 74 FF DD 6E 04 .....K..u..t..n.
0022A0: DD 66 05 E5 CD 0B 0A DD 75 FC DD 74 FD DD 6E FC .f......u..t..n.
0022B0: DD 66 FD 11 00 00 CD 88 01 7D B4 CA 87 0B 21 00 .f.......}....!.
0022C0: 00 11 04 00 C3 C4 00 DD 6E FC DD 66 FD E5 DD 6E ........n..f...n
0022D0: 06 DD 66 07 E5 DD 6E FE DD 66 FF 11 01 00 B7 ED ..f...n..f......
0022E0: 52 11 04 00 CD 0B 01 E5 CD 2E 02 DD 6E 06 DD 66 R...........n..f
0022F0: 07 E5 CD 92 36 DD 6E FC DD 66 FD 18 C4 18 C2 21 ....6.n..f.....!
002300: D1 E5 F5 21 00 00 7B C9 CD BE 01 CD 88 00 D0 23 ...!..{........#
002310: C9 CD BE 01 CD DD 01 D8 18 0F CD BE 01 FE 41 3F ..............A?
002320: D0 FE 5B D0 23 C9 CD BE 01 C6 E0 18 F0 CD BE 01 ..[.#...........
002330: CD F6 01 C0 23 C9 FE 20 C8 FE 0A C8 FE 09 C9 CD ....#.. ........
002340: BE 01 CD DD 01 EB D0 C6 20 6F C9 CD BE 01 CD E9 ........ o......
002350: 01 EB D0 6F C9 EB 21 00 00 1A B7 C8 13 23 18 F9 ...o..!......#..
002360: F1 C1 D1 E1 F5 1A ED A0 2B 77 23 E0 18 F7 F1 C1 ........+w#.....
002370: E1 D1 F5 78 B1 C8 ED 52 19 38 03 ED B0 C9 0B 09 ...x...R.8......
002380: EB 09 EB 03 ED B8 C9 DD E5 C1 09 7E 23 66 6F C9 ...........~#fo.
002390: DD E5 C1 09 6E 26 00 C9 DD E5 C1 EB 09 73 23 72 ....n&.......s#r
0023A0: EB C9 DD E5 C1 EB 09 73 EB C9 D1 EB E3 73 23 72 .......s.....s#r
0023B0: EB C9 5E 23 56 EB 09 EB 72 2B 73 EB C9 5E 23 56 ..^#V...r+s..^#V
0023C0: D5 EB 09 EB 72 2B 73 E1 C9 EB E1 CD 4B 02 4E 23 ....r+s.....K.N#
0023D0: 46 23 78 B1 28 0C 7E 23 BB 7E 23 20 F1 BA 20 EE F#x.(.~#.~# .. .
0023E0: 60 69 E9 19 C9 B7 ED 52 C9 21 00 00 1A CD 88 00 `i.....R.!......
0023F0: D0 D6 30 13 D5 29 5D 54 29 29 19 5F 16 00 19 D1 ..0..)]T))._....
002400: 18 EA D5 59 50 CD 50 01 E3 7B C6 30 FE 3A 38 02 ...YP.P..{.0.:8.
002410: C6 07 2B 77 E3 7D B4 20 EA E1 C9 E5 CB 7C 28 03 ..+w.}. .....|(.
002420: CD FB 00 CD C2 02 D1 CB 7A C8 2B 36 2D C9 E5 D5 ........z.+6-...
002430: C5 6F E5 2A 81 08 E5 CD 4C 00 C1 D1 E1 C9 E5 2A .o.*....L......*
002440: 81 08 77 23 22 81 08 E1 C9 21 FE 02 18 03 21 EE ..w#"....!....!.
002450: 02 CD 28 04 18 0B 21 82 00 22 7F 08 D1 E1 E5 D5 ..(...!.."......
002460: 39 C5 5E 23 56 2B 2B E5 3E C3 32 7E 08 1A 13 B7 9.^#V++.>.2~....
002470: 28 0F FE 25 20 06 1A FE 25 20 12 13 CD 7E 08 18 (..% ...% ...~..
002480: EC 2A 7F 08 3E FE 95 CC FE 02 C3 11 05 D5 21 20 .*..>.........!
002490: 06 22 6F 08 AF 6F 67 22 71 08 1A FE 2D 3E 01 20 ."o..og"q...->.
0024A0: 02 AF 13 32 6E 08 1A FE 30 20 05 13 32 6F 08 1A ...2n...0 ..2o..
0024B0: CD 88 00 30 03 CD A9 02 22 73 08 1A FE 2E 20 0A ...0...."s.... .
0024C0: 32 72 08 13 CD A9 02 22 70 08 CD 3D 04 21 7D 08 2r....."p..=.!}.
0024D0: F5 70 EB FE 64 28 1F FE 75 28 28 0B 0B FE 6F 28 .p..d(..u((...o(
0024E0: 22 01 10 00 FE 78 28 1B FE 73 28 1A FE 63 28 0B "....x(..s(..c(.
0024F0: D1 D1 D1 C3 2D 03 CD DB 02 18 0B 1B EB 73 11 01 ....-........s..
002500: FC FF CD 8F 00 21 00 00 DD 75 FE DD 74 FF DD 6E .....!...u..t..n
002510: FE DD 66 FF 11 0C 00 CD 99 01 7D B4 CA 25 0C C3 ..f.......}..%..
002520: F1 0B 21 FE FF DD E5 C1 09 01 01 00 CD 7D 02 18 ..!..........}..
002530: DD 21 00 00 DD 75 FC DD 74 FD DD 6E 04 DD 66 05 .!...u..t..n..f.
002540: EB DD 6E FC DD 66 FD CD 99 01 7D B4 CA 23 0C C3 ..n..f....}..#..
002550: 21 0C 21 FC FF DD E5 C1 09 01 01 00 CD 7D 02 18 !.!..........}..
002560: D9 18 EF 18 BD 11 02 00 C3 C4 00 21 00 00 CD 8F ...........!....
002570: 00 21 1F 00 E5 CD 6D 00 DD 6E 06 DD 66 07 E5 CD .!....m..n..f...
002580: 6D 00 DD 6E 04 DD 66 05 E5 CD 6D 00 11 04 00 C3 m..n..f...m.....
002590: C4 00 21 00 00 CD 8F 00 21 0C 00 E5 CD 6D 00 11 ..!.....!....m..
0025A0: 00 00 C3 C4 00 21 00 00 CD 8F 00 DD 6E 04 DD 66 .....!......n..f
0025B0: 05 11 01 00 CD 88 01 7D B4 CA 82 0C CD 81 BB C3 .......}........
0025C0: 85 0C CD 84 BB 11 02 00 C3 C4 00 21 00 00 CD 8F ...........!....
0025D0: 00 21 0E 00 E5 CD 6D 00 DD 6E 04 DD 66 05 E5 CD .!....m..n..f...
0025E0: 6D 00 11 02 00 C3 C4 00 21 00 00 CD 8F 00 21 0F m.......!.....!.
0025F0: 00 E5 CD 6D 00 DD 6E 04 DD 66 05 E5 CD 6D 00 11 ...m..n..f...m..
002600: 02 00 C3 C4 00 21 00 00 CD 8F 00 21 1A 00 E5 CD .....!.....!....
002610: 6D 00 DD 6E 0A DD 66 0B 11 01 00 B7 ED 52 E5 CD m..n..f......R..
002620: 6D 00 DD 6E 06 DD 66 07 11 01 00 B7 ED 52 E5 CD m..n..f......R..
002630: 6D 00 DD 6E 08 DD 66 09 11 01 00 B7 ED 52 E5 CD m..n..f......R..
002640: 6D 00 DD 6E 04 DD 66 05 11 01 00 B7 ED 52 E5 CD m..n..f......R..
002650: 6D 00 11 08 00 C3 C4 00 21 00 00 CD 8F 00 DD 6E m.......!......n
002660: 04 DD 66 05 7D B4 CA 42 0D C3 30 0D 0A 25 73 00 ..f.}..B..0..%s.
002670: 21 2C 0D E5 2A 58 A1 E5 01 06 00 C5 CD 16 03 CD !,..*X..........
002680: 55 00 C3 01 BF 11 02 00 C3 C4 00 21 00 00 CD 8F U..........!....
002690: 00 DD 6E 06 DD 66 07 6E 26 00 E5 CD 0B 02 E5 DD ..n..f.n&.......
0026A0: 6E 04 DD 66 05 6E 26 00 E5 CD 0B 02 EB E1 CD 88 n..f.n&.........
0026B0: 01 7D B4 CA CE 0D DD 6E 06 DD 66 07 6E 26 00 CD .}.....n..f.n&..
0026C0: 03 01 7D B4 CA B2 0D DD 6E 04 DD 66 05 6E 26 00 ..}.....n..f.n&.
0026D0: CD 03 01 7D B4 CA A4 0D 21 00 00 11 04 00 C3 C4 ...}....!.......
0026E0: 00 C3 B2 0D DD 6E 04 DD 66 05 6E 26 00 CD FB 00 .....n..f.n&....
0026F0: 18 E9 21 06 00 DD E5 C1 09 01 01 00 CD 72 02 21 ..!..........r.!
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 C2 02 00 00 00 02 ......N.........
002720: 02 00 C7 02 00 00 00 02 02 00 C3 02 00 00 00 02 ................
002730: 02 00 C8 02 00 00 00 02 02 00 C4 02 00 00 00 02 ................
002740: 02 00 C9 02 00 00 00 02 02 00 C5 02 00 00 00 02 ................
002750: 02 00 C1 02 00 00 00 02 02 00 C6 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: 00 DD 6E 04 DD 66 05 11 00 00 19 CD 4B 02 11 00 ..n..f......K...
002810: 00 CD 88 01 7D B4 CA E5 11 21 01 00 11 02 00 C3 ....}....!......
002820: C4 00 C3 EA 11 21 00 00 18 F2 18 F0 21 00 00 CD .....!......!...
002830: 8F 00 21 BC 02 E5 CD 0B 0A 22 48 A1 11 00 00 CD ..!......"H.....
002840: 88 01 7D B4 CA 24 12 C3 0E 12 25 73 0A 00 21 0A ..}..$....%s..!.
002850: 12 E5 2A 50 A1 E5 01 06 00 C5 CD 16 03 21 01 00 ..*P.........!..
002860: E5 CD 37 38 11 00 00 C3 C4 00 21 00 00 CD 8F 00 ..78......!.....
002870: 2A D5 A1 11 46 00 CD 88 01 7D B4 CA 5E 12 C3 45 *...F....}..^..E
002880: 12 25 73 0A 00 21 41 12 E5 2A 52 A1 E5 01 06 00 .%s..!A..*R.....
002890: C5 CD 16 03 21 01 00 E5 CD 37 38 C3 3F 15 DD 6E ....!....78.?..n
0028A0: 06 DD 66 07 ED 5B D5 A1 CD 99 01 7D B4 CA AF 12 ..f..[.....}....
0028B0: DD 6E 06 DD 66 07 11 01 00 19 11 0A 00 CD 0B 01 .n..f...........
0028C0: EB 2A 48 A1 19 E5 DD 6E 06 DD 66 07 11 0A 00 CD .*H....n..f.....
0028D0: 0B 01 EB 2A 48 A1 19 E5 DD 6E 06 DD 66 07 EB 2A ...*H....n..f..*
0028E0: D5 A1 B7 ED 52 11 0A 00 CD 0B 01 E5 CD 2E 02 DD ....R...........
0028F0: 6E 06 DD 66 07 11 0A 00 CD 0B 01 EB 2A 48 A1 19 n..f........*H..
002900: 11 00 00 19 E5 DD 6E 04 DD 66 05 11 00 00 19 CD ......n..f......
002910: 4B 02 CD 6A 02 DD 6E 06 DD 66 07 11 0A 00 CD 0B K..j..n..f......
002920: 01 EB 2A 48 A1 19 11 02 00 19 E5 DD 6E 04 DD 66 ..*H........n..f
002930: 05 11 02 00 19 CD 4B 02 CD 6A 02 DD 6E 06 DD 66 ......K..j..n..f
002940: 07 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 08 00 19 ........*H......
002950: E5 DD 6E 04 DD 66 05 11 08 00 19 CD 4B 02 CD 6A ..n..f......K..j
002960: 02 DD 6E 06 DD 66 07 11 0A 00 CD 0B 01 EB 2A 48 ..n..f........*H
002970: A1 19 11 04 00 19 E5 DD 6E 04 DD 66 05 11 04 00 ........n..f....
002980: 19 CD 4B 02 E5 CD 02 36 11 01 00 19 E5 CD 0B 0A ..K....6........
002990: CD 6A 02 11 00 00 CD 88 01 7D B4 C2 9A 13 DD 6E .j.......}.....n
0029A0: 06 DD 66 07 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 ..f........*H...
0029B0: 06 00 19 E5 DD 6E 04 DD 66 05 11 06 00 19 CD 4B .....n..f......K
0029C0: 02 E5 CD 02 36 11 01 00 19 E5 CD 0B 0A CD 6A 02 ....6.........j.
0029D0: 11 00 00 CD 88 01 7D B4 28 03 21 01 00 7D B4 CA ......}.(.!..}..
0029E0: BF 13 C3 A9 13 25 73 0A 00 21 A5 13 E5 2A 54 A1 .....%s..!...*T.
0029F0: E5 01 06 00 C5 CD 16 03 21 01 00 E5 CD 37 38 DD ........!....78.
002A00: B9 DD 6E FE DD 66 FF ED 5B DB A1 CD B0 01 7D B4 ..n..f..[.....}.
002A10: CA EB 1B C3 D9 1B 25 73 00 21 D6 1B E5 DD 6E FE ......%s.!....n.
002A20: DD 66 FF E5 01 06 00 C5 CD 16 03 DD 6E 04 DD 66 .f..........n..f
002A30: 05 E5 21 00 00 E5 21 16 00 E5 CD 0B 1C DD 6E 04 ..!...!.......n.
002A40: DD 66 05 11 02 00 C3 C4 00 18 F8 21 A4 FF CD 8F .f.........!....
002A50: 00 21 00 00 E5 CD A8 0C 21 01 00 E5 CD 8B 0C 2A .!......!......*
002A60: D5 A1 11 00 00 CD 98 01 7D B4 CA 4C 1E 2A D9 A1 ........}..L.*..
002A70: E5 DD 6E 08 DD 66 09 ED 5B D3 63 B7 ED 52 E5 CD ..n..f..[.c..R..
002A80: 45 15 DD 75 A8 DD 74 A9 DD 6E 08 DD 66 09 DD 75 E..u..t..n..f..u
002A90: A6 DD 74 A7 DD 6E A8 DD 66 A9 ED 5B D5 A1 CD 99 ..t..n..f..[....
002AA0: 01 7D B4 CA 93 1C DD 6E A8 DD 66 A9 11 0A 00 CD .}.....n..f.....
002AB0: 0B 01 EB 2A 48 A1 19 11 04 00 19 CD 4B 02 E5 2A ...*H.......K..*
002AC0: D9 A1 E5 CD 4B 0D 11 00 00 CD 88 01 7D B4 28 03 ....K.......}.(.
002AD0: 21 01 00 7D B4 CA AC 1C DD 6E A6 DD 66 A7 ED 5B !..}.....n..f..[
002AE0: DB A1 CD B0 01 7D B4 28 03 21 01 00 7D B4 CA C8 .....}.(.!..}...
002AF0: 1C DD 6E 04 DD 66 05 EB DD 6E 06 DD 66 07 CD 99 ..n..f...n..f...
002B00: 01 7D B4 28 03 21 01 00 7D B4 CA 4C 1E C3 EF 1C .}.(.!..}..L....
002B10: DD 6E A6 DD 66 A7 E5 CD 02 36 11 01 00 19 EB DD .n..f....6......
002B20: 6E A6 DD 66 A7 19 DD 75 A6 DD 74 A7 C3 54 1C DD n..f...u..t..T..
002B30: 6E A8 DD 66 A9 ED 5B D5 A1 CD 99 01 7D B4 CA 2E n..f..[.....}...
002B40: 1D DD 6E A8 DD 66 A9 11 0A 00 CD 0B 01 EB 2A 48 ..n..f........*H
002B50: A1 19 11 04 00 19 CD 4B 02 E5 2A D9 A1 E5 CD 4B .......K..*....K
002B60: 0D 11 00 00 CD 88 01 7D B4 28 03 21 01 00 7D B4 .......}.(.!..}.
002B70: CA 71 1D DD 6E A8 DD 66 A9 11 0A 00 CD 0B 01 EB .q..n..f........
002B80: 2A 48 A1 19 11 00 00 19 E5 DD 6E A6 DD 66 A7 E5 *H........n..f..
002B90: CD 02 36 EB DD 6E A6 DD 66 A7 19 ED 5B D3 63 B7 ..6..n..f...[.c.
002BA0: ED 52 EB E1 CD 4B 02 CD B0 01 7D B4 28 03 21 01 .R...K....}.(.!.
002BB0: 00 7D B4 CA 3C 1E DD 6E A8 DD 66 A9 11 0A 00 CD .}..<..n..f.....
002BC0: 0B 01 EB 2A 48 A1 19 11 00 00 19 CD 4B 02 ED 5B ...*H.......K..[
002BD0: D3 63 19 EB DD 6E A6 DD 66 A7 EB B7 ED 52 DD 75 .c...n..f....R.u
002BE0: AA DD 74 AB DD 6E AA DD 66 AB 11 01 00 19 E5 DD ..t..n..f.......
002BF0: 6E 06 DD 66 07 11 01 00 19 E5 CD 2B 0C DD 6E A8 n..f.......+..n.
002C00: 6E 06 DD 66 07 11 00 00 CD 98 01 7D B4 CA 0D 14 n..f.......}....
002C10: DD 6E 06 DD 66 07 11 01 00 B7 ED 52 11 0A 00 CD .n..f......R....
002C20: 0B 01 EB 2A 48 A1 19 11 04 00 19 CD 4B 02 E5 DD ...*H.......K...
002C30: 6E 04 DD 66 05 11 04 00 19 CD 4B 02 E5 CD 4B 0D n..f......K...K.
002C40: 11 00 00 CD 88 01 7D B4 28 03 21 01 00 7D B4 CA ......}.(.!..}..
002C50: 68 14 DD 6E 06 DD 66 07 11 0A 00 CD 0B 01 EB 2A h..n..f........*
002C60: 48 A1 19 11 04 00 19 CD 4B 02 E5 CD 92 36 DD 6E H.......K....6.n
002C70: 06 DD 66 07 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 ..f........*H...
002C80: 04 00 19 E5 DD 6E 06 DD 66 07 11 01 00 B7 ED 52 .....n..f......R
002C90: 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 04 00 19 CD .......*H.......
002CA0: 4B 02 CD 6A 02 C3 92 14 DD 6E 06 DD 66 07 11 0A K..j.....n..f...
002CB0: 00 CD 0B 01 EB 2A 48 A1 19 11 04 00 19 CD 4B 02 .....*H.......K.
002CC0: E5 DD 6E 04 DD 66 05 11 04 00 19 CD 4B 02 E5 CD ..n..f......K...
002CD0: BF 35 DD 6E 04 DD 66 05 11 04 00 19 CD 4B 02 E5 .5.n..f......K..
002CE0: DD 6E 04 DD 66 05 11 06 00 19 CD 4B 02 E5 CD 4B .n..f......K...K
002CF0: 0D 11 00 00 CD 88 01 7D B4 CA 0C 15 DD 6E 06 DD .......}.....n..
002D00: 66 07 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 06 00 f........*H.....
002D10: 19 CD 4B 02 E5 CD 92 36 DD 6E 06 DD 66 07 11 0A ..K....6.n..f...
002D20: 00 CD 0B 01 EB 2A 48 A1 19 11 06 00 19 E5 DD 6E .....*H........n
002D30: 06 DD 66 07 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 ..f........*H...
002D40: 04 00 19 CD 4B 02 CD 6A 02 C3 36 15 DD 6E 06 DD ....K..j..6..n..
002D50: 66 07 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 06 00 f........*H.....
002D60: 19 CD 4B 02 E5 DD 6E 04 DD 66 05 11 06 00 19 CD ..K...n..f......
002D70: 4B 02 E5 CD BF 35 21 D5 A1 01 01 00 CD 7D 02 11 K....5!......}..
002D80: 04 00 C3 C4 00 21 FE FF CD 8F 00 21 00 00 DD 75 .....!.....!...u
002D90: FE DD 74 FF DD 6E FE DD 66 FF ED 5B D5 A1 CD 99 ..t..n..f..[....
002DA0: 01 7D B4 CA 96 15 DD 6E FE DD 66 FF 11 0A 00 CD .}.....n..f.....
002DB0: 0B 01 EB 2A 48 A1 19 11 04 00 19 CD 4B 02 E5 DD ...*H.......K...
002DC0: 6E 06 DD 66 07 E5 CD 4B 0D 11 00 00 CD 99 01 7D n..f...K.......}
002DD0: B4 28 03 21 01 00 7D B4 CA AA 15 21 FE FF DD E5 .(.!..}....!....
002DE0: C1 09 01 01 00 CD 7D 02 18 AA DD 6E FE DD 66 FF ......}....n..f.
002DF0: ED 5B D5 A1 CD 99 01 7D B4 CA EC 15 DD 6E FE DD .[.....}.....n..
002E00: DD 66 A9 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 00 .f........*H....
002E10: 00 19 CD 4B 02 DD 75 A4 DD 74 A5 DD 6E A8 DD 66 ...K..u..t..n..f
002E20: A9 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 02 00 19 ........*H......
002E30: CD 4B 02 11 01 00 19 EB DD 6E A4 DD 66 A5 CD B0 .K.......n..f...
002E40: 01 7D B4 CA 2C 1E C3 18 1E 21 A4 FF DD E5 C1 09 .}..,....!......
002E50: 01 01 00 CD 7D 02 18 C3 DD 6E A4 DD 66 A5 EB 2A ....}....n..f..*
002E60: D3 63 19 6E 26 00 E5 CD 6D 00 18 DD 21 A8 FF DD .c.n&...m...!...
002E70: E5 C1 09 01 01 00 CD 7D 02 C3 EF 1C 21 06 00 DD .......}....!...
002E80: E5 C1 09 01 01 00 CD 7D 02 C3 D0 1C 21 01 00 E5 .......}....!...
002E90: CD 70 33 11 06 00 C3 C4 00 21 00 00 CD 8F 00 DD .p3......!......
002EA0: 6E 06 DD 66 07 ED 5B DB A1 CD B6 01 7D B4 CA 7A n..f..[.....}..z
002EB0: 1E 21 00 00 11 04 00 C3 C4 00 DD 6E 04 DD 66 05 .!.........n..f.
002EC0: 11 01 00 19 E5 DD 6E 06 DD 66 07 E5 CD 02 36 EB ......n..f....6.
002ED0: E1 CD AF 01 7D B4 CA 9E 1E 21 00 00 18 D6 21 01 ....}....!....!.
002EE0: 00 18 D1 18 CF 21 00 00 CD 8F 00 DD 6E 06 DD 66 .....!......n..f
002EF0: 07 E5 DD 6E 04 DD 66 05 E5 CD 59 1E CD 03 01 7D ...n..f...Y....}
002F00: B4 CA CD 1E 21 FF FF 11 04 00 C3 C4 00 DD 6E 04 ....!.........n.
002F10: DD 66 05 EB DD 6E 06 DD 66 07 19 ED 5B D3 63 B7 .f...n..f...[.c.
002F20: ED 52 18 E3 18 E1 21 00 00 CD 8F 00 DD 6E 04 DD .R....!......n..
002F30: 66 05 ED 5B D3 63 CD AF 01 7D B4 CA 5F 1F 21 04 f..[.c...}.._.!.
002F40: 00 DD E5 C1 09 01 FF FF CD 7D 02 DD 6E 04 DD 66 .........}..n..f
002F50: 05 ED 5B DB A1 CD B0 01 7D B4 CA 5F 1F DD 6E 04 ..[.....}.._..n.
002F60: DD 66 05 ED 5B D3 63 CD AF 01 7D B4 CA 4B 1F DD .f..[.c...}..K..
002F70: 6E 04 DD 66 05 11 01 00 B7 ED 52 6E 26 00 11 00 n..f......Rn&...
002F80: 00 CD 98 01 7D B4 28 03 21 01 00 7D B4 CA 5F 1F ....}.(.!..}.._.
002F90: 21 04 00 DD E5 C1 09 01 FF FF CD 7D 02 18 BE DD !..........}....
002FA0: 6E 04 DD 66 05 11 02 00 C3 C4 00 18 F8 21 00 00 n..f.........!..
002FB0: CD 8F 00 DD 6E 04 DD 66 05 ED 5B DB A1 CD B0 01 ....n..f..[.....
002FC0: 7D B4 CA 9D 1F DD 6E 04 DD 66 05 E5 CD 02 36 EB }.....n..f....6.
002FD0: DD 6E 04 DD 66 05 19 DD 75 04 DD 74 05 21 04 00 .n..f...u..t.!..
002FE0: DD E5 C1 09 01 01 00 CD 7D 02 DD 6E 04 DD 66 05 ........}..n..f.
002FF0: 11 02 00 C3 C4 00 18 F8 21 FB FF CD 8F 00 21 00 ........!.....!.
003000: 66 FF 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 04 00 f........*H.....
003010: 19 CD 4B 02 E5 DD 6E 06 DD 66 07 E5 CD 4B 0D 11 ..K...n..f...K..
003020: 00 00 CD 88 01 7D B4 28 03 21 01 00 7D B4 CA 1B .....}.(.!..}...
003030: 16 DD 6E FE DD 66 FF 11 0A 00 CD 0B 01 EB 2A 48 ..n..f........*H
003040: A1 19 11 00 00 19 CD 4B 02 EB DD 6E 04 DD 66 05 .......K...n..f.
003050: EB CD B0 01 7D B4 28 03 21 01 00 7D B4 CA 30 16 ....}.(.!..}..0.
003060: 21 FE FF DD E5 C1 09 01 01 00 CD 7D 02 C3 AA 15 !..........}....
003070: DD 6E FE DD 66 FF 11 04 00 C3 C4 00 18 F8 21 00 .n..f.........!.
003080: 00 CD 8F 00 DD 6E 04 DD 66 05 11 00 00 CD A7 01 .....n..f.......
003090: 7D B4 CA 69 16 DD 6E 04 DD 66 05 ED 5B D5 A1 CD }..i..n..f..[...
0030A0: 99 01 7D B4 28 03 21 01 00 7D B4 CA 9E 16 DD 6E ..}.(.!..}.....n
0030B0: 08 DD 66 09 E5 DD 6E 04 DD 66 05 11 0A 00 CD 0B ..f...n..f......
0030C0: 01 EB 2A 48 A1 19 11 04 00 19 CD 4B 02 E5 CD 4B ..*H.......K...K
0030D0: 0D 11 00 00 CD 88 01 7D B4 28 03 21 01 00 7D B4 .......}.(.!..}.
0030E0: CA CD 16 DD 6E 04 DD 66 05 11 0A 00 CD 0B 01 EB ....n..f........
0030F0: 2A 48 A1 19 11 00 00 19 CD 4B 02 EB DD 6E 06 DD *H.......K...n..
003100: 66 07 EB CD B7 01 7D B4 28 03 21 01 00 7D B4 CA f.....}.(.!..}..
003110: FC 16 DD 6E 04 DD 66 05 11 0A 00 CD 0B 01 EB 2A ...n..f........*
003120: 48 A1 19 11 02 00 19 CD 4B 02 EB DD 6E 06 DD 66 H.......K...n..f
003130: 07 EB CD B6 01 7D B4 28 03 21 01 00 7D B4 CA 0A .....}.(.!..}...
003140: 17 21 01 00 11 06 00 C3 C4 00 21 00 00 18 F5 18 .!........!.....
003150: F3 21 00 00 CD 8F 00 21 00 32 E5 CD 0B 0A 22 D3 .!.....!.2....".
003160: 63 11 00 00 CD 88 01 7D B4 CA 49 17 C3 33 17 25 c......}..I..3.%
003170: 73 0A 00 21 2F 17 E5 2A 56 A1 E5 01 06 00 C5 CD s..!/..*V.......
003180: 16 03 21 01 00 E5 CD 37 38 11 00 00 C3 C4 00 21 ..!....78......!
003190: F9 FF CD 8F 00 DD 6E 04 DD 66 05 E5 C3 61 17 72 ......n..f...a.r
0031A0: 00 21 5F 17 E5 CD 46 00 DD 75 FE DD 74 FF 11 00 .!_...F..u..t...
0031B0: 00 CD 88 01 7D B4 CA 82 17 21 FF FF 11 02 00 C3 ....}....!......
0031C0: C4 00 21 00 00 7D 32 84 A1 26 00 DD 6E FE DD 66 ..!..}2..&..n..f
0031D0: FF E5 CD 49 00 DD 75 FD 26 00 DD 6E FD 26 00 11 ...I..u.&..n.&..
0031E0: 23 00 CD 88 01 7D B4 CA CB 17 21 84 A1 E5 21 42 #....}....!...!B
0031F0: 00 E5 DD 6E FE DD 66 FF E5 CD 3C 0E DD 6E FE DD ...n..f...<..n..
003200: 00 DD 75 FF 26 00 21 C2 63 E5 21 E8 09 E5 CD BF ..u.&.!.c.!.....
003210: 35 21 B5 63 E5 21 F5 09 E5 CD BF 35 21 00 00 7D 5!.c.!.....5!..}
003220: 32 B4 63 26 00 2A D1 63 6E 26 00 11 01 00 CD 88 2.c&.*.cn&......
003230: 01 7D B4 CA 02 20 C3 FB 1F C2 00 21 F9 1F E5 CD .}... .....!....
003240: F2 0D 21 B4 63 22 D9 A1 CD F5 34 CD 0D 0F 22 CF ..!.c"....4...".
003250: 63 CD EC 11 CD 11 17 CD 78 29 CD 10 2E 2A D3 63 c.......x)...*.c
003260: E5 CD B1 19 22 A1 63 2A A1 63 22 9F 63 21 01 00 ....".c*.c".c!..
003270: E5 21 01 00 E5 CD 2B 0C DD 6E FF 26 00 11 51 00 .!....+..n.&..Q.
003280: CD 91 01 7D B4 CA 64 28 21 01 00 E5 CD 65 0C CD ...}..d(!....e..
003290: 55 00 E5 CD 0B 02 DD 75 FF 26 00 21 00 00 E5 CD U......u.&.!....
0032A0: 65 0C 21 02 00 E5 CD 70 33 21 0C 00 E5 CD 6D 00 e.!....p3!....m.
0032B0: 21 01 00 E5 CD 70 33 2A A5 63 E5 2A A3 63 E5 CD !....p3*.c.*£c..
0032C0: 2B 0C DD 6E FF 26 00 CD 89 02 FF 27 C3 61 28 CD +..n.&.....'.a(.
0032D0: 26 2A C3 61 28 21 B5 63 E5 CD D8 31 7D B4 CA BD &*.a(!.c...1}...
0032E0: 20 2A D3 63 E5 CD B1 19 22 A1 63 2A A1 63 22 9F *.c....".c*.c".
0032F0: 63 21 01 00 22 A3 63 21 01 00 22 A5 63 2A A5 63 c!.."£c!..".c*.c
003300: E5 2A A3 63 E5 CD 2B 0C C3 61 28 21 02 00 E5 CD .*£c..+..a(!....
003310: 70 33 C3 DB 20 25 73 20 25 64 00 21 D5 20 E5 2A p3.. %s %d.!. .*
003320: 5C A1 E5 2A 46 A1 E5 01 08 00 C5 CD 16 03 21 01 \..*F.........!.
003330: 00 E5 CD 70 33 2A A5 63 E5 2A A3 63 E5 CD 2B 0C ...p3*.c.*£c..+.
003340: C3 61 28 CD 78 29 2A A1 63 E5 CD B1 19 2A A5 63 .a(.x)*.c....*.c
003350: E5 2A A3 63 E5 CD 2B 0C C3 61 28 21 02 00 E5 CD .*£c..+..a(!....
003360: 70 33 CD 07 19 21 01 00 E5 CD 70 33 2A A5 63 E5 p3...!....p3*.c.
003370: 2A A3 63 E5 CD 2B 0C C3 61 28 CD 4D 2B C3 61 28 *£c..+..a(.M+.a(
003380: CD CD 2B C3 61 28 2A A3 63 11 01 00 CD 88 01 7D ..+.a(*£c......}
003390: B4 CA 7A 21 2A A1 63 ED 5B D3 63 CD AF 01 7D B4 ..z!*.c.[.c...}.
0033A0: CA 77 21 CD CC 28 2A A1 63 22 9F 63 2A A5 63 E5 .w!..(*.c".c*.c.
0033B0: 21 01 00 E5 CD 2B 0C C3 95 21 2A A5 63 E5 21 A3 !....+...!*.c.!£
0033C0: 63 01 FF FF CD 72 02 E5 CD 2B 0C 2A 9F 63 E5 CD c....r...+.*.c..
0033D0: E6 1E 22 9F 63 C3 61 28 2A A3 63 11 16 00 CD 88 ..".c.a(*£c.....
0033E0: 01 7D B4 CA E6 21 2A 9F 63 E5 CD 02 36 EB 2A 9F .}...!*.c...6.*.
0033F0: 63 19 11 01 00 19 ED 5B DB A1 CD B0 01 7D B4 CA c......[.....}..
003400: 66 FF E5 CD 49 00 DD 75 FD 26 00 2A D3 63 22 DB f...I..u.&.*.c".
003410: A1 21 00 00 DD 75 F9 DD 74 FA DD 6E FD 26 00 11 .!...u..t..n.&..
003420: FF 00 CD 91 01 7D B4 CA 05 18 2A D3 63 11 00 32 .....}....*.c..2
003430: 19 11 01 00 B7 ED 52 EB 2A DB A1 CD B0 01 7D B4 ......R.*.....}.
003440: 28 03 21 01 00 7D B4 CA C7 18 DD 6E FD 26 00 CD (.!..}.....n.&..
003450: 89 02 A5 18 C3 B5 18 21 DB A1 01 01 00 CD 7D 02 .......!......}.
003460: E5 21 20 00 D1 7D 12 26 00 21 F9 FF DD E5 C1 09 .! ..}.&.!......
003470: 01 01 00 CD 7D 02 2A D3 63 11 00 32 19 EB 2A DB ....}.*.c..2..*.
003480: A1 CD B0 01 7D B4 CA 5C 18 DD 6E F9 DD 66 FA 11 ....}..\..n..f..
003490: 08 00 CD 78 01 7D B4 28 03 21 01 00 7D B4 20 B7 ...x.}.(.!..}. .
0034A0: C3 B5 18 21 DB A1 01 01 00 CD 7D 02 E5 21 00 00 ...!......}..!..
0034B0: D1 7D 12 26 00 21 00 00 DD 75 F9 DD 74 FA C3 B5 .}.&.!...u..t...
0034C0: 18 21 DB A1 01 01 00 CD 7D 02 E5 DD 6E FD 26 00 .!......}...n.&.
0034D0: D1 7D 12 26 00 21 F9 FF DD E5 C1 09 01 01 00 CD .}.&.!..........
0034E0: 7D 02 C3 B5 18 14 18 0D 00 17 18 09 00 63 18 0A }............c..
0034F0: 00 00 00 18 CC DD 6E FE DD 66 FF E5 CD 49 00 DD ......n..f...I..
003500: 75 FD 26 00 C3 DA 17 DD 6E FE DD 66 FF E5 CD 4F u.&.....n..f...O
003510: 00 DD 6E FD 26 00 CD 89 02 FC 18 21 DB A1 01 01 ..n.&......!....
003520: 00 CD 7D 02 E5 21 00 00 D1 7D 12 26 00 21 00 00 ..}..!...}.&.!..
003530: C3 7C 17 21 FE FF C3 7C 17 C3 04 19 DB 18 FF 00 .|.!...|........
003540: 00 00 18 EF C3 7C 17 21 FE FF CD 8F 00 21 84 A1 .....|.!.....!..
003550: E5 CD 37 34 7D B4 C2 30 19 C3 1F 19 0A 0A 00 21 ..74}..0.......!
003560: 1C 19 E5 CD 11 0E 11 00 00 CD 88 01 7D B4 28 03 ............}.(.
003570: 21 01 00 7D B4 CA 41 19 21 00 00 11 00 00 C3 C4 !..}..A.!.......
003580: 00 2A D3 63 DD 75 FE DD 74 FF DD 6E FE DD 66 FF .*.c.u..t..n..f.
003590: ED 5B DB A1 CD B0 01 7D B4 CA AF 19 C3 7D 19 DD .[.....}.....}..
0035A0: 6E FE DD 66 FF E5 CD 02 36 11 01 00 19 EB DD 6E n..f....6......n
0035B0: FE DD 66 FF 19 DD 75 FE DD 74 FF 18 CD DD 6E FE ..f...u..t....n.
0035C0: DD 66 FF E5 CD 37 34 7D B4 C2 A2 19 C3 91 19 0A .f...74}........
0035D0: 00 21 8F 19 E5 CD 11 0E 11 00 00 CD 88 01 7D B4 .!............}.
0035E0: 28 03 21 01 00 7D B4 CA AD 19 C3 AF 19 18 B0 18 (.!..}..........
0035F0: 8A 21 FC FF CD 8F 00 21 00 00 E5 CD 70 33 21 01 .!.....!....p3!.
003600: CD 6A 02 DD 6E FE DD 66 FF 11 04 00 19 E5 DD 6E .j..n..f.......n
003610: 0C DD 66 0D 11 04 00 19 CD 4B 02 CD 6A 02 DD 6E ..f......K..j..n
003620: FE DD 66 FF 11 06 00 19 E5 DD 6E 0C DD 66 0D 11 ..f.......n..f..
003630: 06 00 19 CD 4B 02 CD 6A 02 DD 6E FE DD 66 FF 11 ....K..j..n..f..
003640: 08 00 19 E5 DD 6E 0C DD 66 0D 11 08 00 19 CD 4B .....n..f......K
003650: 02 CD 6A 02 DD 6E FE DD 66 FF 11 00 00 19 E5 DD ..j..n..f.......
003660: 6E 0C DD 66 0D 11 00 00 19 CD 4B 02 CD 6A 02 DD n..f......K..j..
003670: 6E 0C DD 66 0D 11 02 00 19 E5 DD 6E 0A DD 66 0B n..f.......n..f.
003680: CD 6A 02 DD 6E 0C DD 66 0D 11 04 00 19 E5 DD 6E .j..n..f.......n
003690: 08 DD 66 09 CD 6A 02 DD 6E 0C DD 66 0D 11 06 00 ..f..j..n..f....
0036A0: 19 E5 DD 6E 06 DD 66 07 CD 6A 02 DD 6E 0C DD 66 ...n..f..j..n..f
0036B0: 0D 11 08 00 19 E5 DD 6E 04 DD 66 05 CD 6A 02 DD .......n..f..j..
0036C0: 6E 0C DD 66 0D 11 00 00 19 E5 DD 6E FE DD 66 FF n..f.......n..f.
0036D0: CD 6A 02 11 0A 00 C3 C4 00 21 FE FF CD 8F 00 DD .j.......!......
0036E0: 6E 04 DD 66 05 11 00 00 19 CD 4B 02 DD 75 FE DD n..f......K..u..
0036F0: 74 FF DD 6E 04 DD 66 05 11 02 00 19 E5 DD 6E FE t..n..f.......n.
003700: DD 66 FF 11 02 00 19 CD 4B 02 CD 6A 02 DD 6E 04 .f......K..j..n.
003710: DD 66 05 11 04 00 19 E5 DD 6E FE DD 66 FF 11 04 .f.......n..f...
003720: 00 19 CD 4B 02 CD 6A 02 DD 6E 04 DD 66 05 11 06 ...K..j..n..f...
003730: 00 19 E5 DD 6E FE DD 66 FF 11 06 00 19 CD 4B 02 ....n..f......K.
003740: CD 6A 02 DD 6E 04 DD 66 05 11 08 00 19 E5 DD 6E .j..n..f.......n
003750: FE DD 66 FF 11 08 00 19 CD 4B 02 CD 6A 02 DD 6E ..f......K..j..n
003760: 04 DD 66 05 11 00 00 19 E5 DD 6E FE DD 66 FF 11 ..f.......n..f..
003770: 00 00 19 CD 4B 02 CD 6A 02 DD 6E FE DD 66 FF E5 ....K..j..n..f..
003780: CD 92 36 11 02 00 C3 C4 00 21 00 00 CD 8F 00 DD ..6......!......
003790: 6E 0A DD 66 0B E5 DD 6E 0C DD 66 0D 11 02 00 19 n..f...n..f.....
0037A0: CD 4B 02 CD 6A 02 DD 6E 08 DD 66 09 E5 DD 6E 0C .K..j..n..f...n.
0037B0: DD 66 0D 11 04 00 19 CD 4B 02 CD 6A 02 DD 6E 06 .f......K..j..n.
0037C0: DD 66 07 E5 DD 6E 0C DD 66 0D 11 06 00 19 CD 4B .f...n..f......K
0037D0: 02 CD 6A 02 DD 6E 04 DD 66 05 E5 DD 6E 0C DD 66 ..j..n..f...n..f
0037E0: 0D 11 08 00 19 CD 4B 02 CD 6A 02 DD 6E 0C DD 66 ......K..j..n..f
0037F0: 0D E5 CD 99 10 11 0A 00 C3 C4 00 21 00 00 CD 8F ...........!....
003800: 00 E5 21 02 00 E5 CD 2B 0C C3 D1 19 25 73 25 63 ..!....+....%s%c
003810: 00 21 CC 19 E5 21 84 A1 E5 21 12 00 E5 01 08 00 .!...!...!......
003820: C5 CD 16 03 21 01 00 E5 CD 70 33 CD 52 0C 21 00 ....!....p3.R.!.
003830: 00 DD 75 FC DD 74 FD 2A DB A1 11 01 00 B7 ED 52 ..u..t.*.......R
003840: EB DD 6E 04 DD 66 05 CD AF 01 7D B4 CA 1E 1A 2A ..n..f....}....*
003850: DB A1 11 01 00 B7 ED 52 DD 75 04 DD 74 05 DD 6E .......R.u..t..n
003860: 04 DD 66 05 ED 5B D3 63 CD AF 01 7D B4 CA 4C 1A ..f..[.c...}..L.
003870: DD 6E 04 DD 66 05 11 01 00 B7 ED 52 6E 26 00 11 .n..f......Rn&..
003880: 00 00 CD 98 01 7D B4 28 03 21 01 00 7D B4 CA 65 .....}.(.!..}..e
003890: 1A C3 63 1A 21 04 00 DD E5 C1 09 01 FF FF CD 7D ..c.!..........}
0038A0: 02 18 BB 18 EF DD 6E 04 DD 66 05 DD 75 FE DD 74 ......n..f..u..t
0038B0: FF DD 6E FE DD 66 FF ED 5B DB A1 CD B0 01 7D B4 ..n..f..[.....}.
0038C0: CA 96 1A DD 6E FC DD 66 FD 11 15 00 CD 99 01 7D ....n..f.......}
0038D0: B4 28 03 21 01 00 7D B4 CA CB 1A C3 BC 1A DD 6E .(.!..}........n
0038E0: FE DD 66 FF E5 CD 02 36 11 01 00 19 EB DD 6E FE ..f....6......n.
0038F0: DD 66 FF 19 DD 75 FE DD 74 FF 18 B5 21 FC FF DD .f...u..t...!...
003900: E5 C1 09 01 01 00 CD 7D 02 18 D3 DD 6E FE DD 66 .......}....n..f
003910: FF ED 5B DB A1 CD 88 01 7D B4 CA EA 1A 21 FC FF ..[.....}....!..
003920: DD E5 C1 09 01 FF FF CD 7D 02 DD 6E 04 DD 66 05 ........}..n..f.
003930: ED 5B D3 63 CD AF 01 7D B4 CA 0F 1B DD 6E FC DD .[.c...}.....n..
003940: 66 FD 11 15 00 CD 99 01 7D B4 28 03 21 01 00 7D f.......}.(.!..}
003950: B4 CA 38 1B C3 26 1B 21 FC FF DD E5 C1 09 01 01 ..8..&.!........
003960: 00 CD 7D 02 18 C4 DD 6E 04 DD 66 05 E5 CD E6 1E ..}....n..f.....
003970: DD 75 04 DD 74 05 18 DF 21 00 00 DD 75 FC DD 74 .u..t...!...u..t
003980: FD DD 6E 04 DD 66 05 DD 75 FE DD 74 FF DD 6E FE ..n..f..u..t..n.
003990: DD 66 FF ED 5B DB A1 CD B0 01 7D B4 CA 72 1B DD .f..[.....}..r..
0039A0: 6E FC DD 66 FD 11 15 00 CD 99 01 7D B4 28 03 21 n..f.......}.(.!
0039B0: 01 00 7D B4 CA C1 1B C3 98 1B DD 6E FE DD 66 FF ..}........n..f.
0039C0: E5 CD 02 36 11 01 00 19 EB DD 6E FE DD 66 FF 19 ...6......n..f..
0039D0: DD 75 FE DD 74 FF 18 B5 C3 A0 1B 25 73 0D 0A 00 .u..t......%s...
0039E0: 21 9B 1B E5 DD 6E FE DD 66 FF E5 01 06 00 C5 CD !....n..f.......
0039F0: 16 03 21 FC FF DD E5 C1 09 01 01 00 CD 7D 02 18 ..!..........}..
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 C1 02 00 00 00 02 ......N.........
003A20: 03 00 C6 02 00 00 00 02 03 00 C2 02 00 00 00 02 ................
003A30: 03 00 C7 02 00 00 00 02 03 00 C3 02 00 00 00 02 ................
003A40: 03 00 C8 02 00 00 00 02 03 00 C4 02 00 00 00 02 ................
003A50: 03 00 C9 02 00 00 00 02 03 00 C5 02 00 00 00 02 ................
003A60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003A70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003A80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003A90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003AF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
003B00: E3 21 2A 9F 63 E5 CD 02 36 11 01 00 19 EB 2A 9F .!*.c...6.....*.
003B10: 63 19 22 9F 63 CD 19 29 2A A5 63 E5 21 16 00 E5 c.".c..)*.c.!...
003B20: CD 2B 0C C3 1E 22 2A A5 63 E5 21 A3 63 01 01 00 .+..."*.c.!£c...
003B30: CD 72 02 E5 CD 2B 0C 2A 9F 63 ED 5B DB A1 CD B0 .r...+.*.c.[....
003B40: 01 7D B4 CA 15 22 2A 9F 63 E5 CD 02 36 EB 2A 9F .}..."*.c...6.*.
003B50: 63 19 22 9F 63 21 9F 63 01 01 00 CD 7D 02 C3 61 c.".c!.c....}..a
003B60: 28 2A A5 63 11 01 00 B7 ED 52 E5 21 01 00 E5 01 (*.c.....R.!....
003B70: 06 00 C5 CD 00 09 22 A5 63 2A A5 63 E5 2A A3 63 ......".c*.c.*£c
003B80: E5 CD 2B 0C C3 61 28 2A A5 63 11 01 00 19 E5 21 ..+..a(*.c.....!
003B90: 50 00 E5 01 06 00 C5 CD 74 09 22 A5 63 2A A5 63 P.......t.".c*.c
003BA0: E5 2A A3 63 E5 CD 2B 0C C3 61 28 2A A5 63 11 01 .*£c..+..a(*.c..
003BB0: 00 CD 88 01 7D B4 CA 9F 22 2A A3 63 11 01 00 CD ....}..."*£c....
003BC0: 98 01 7D B4 C2 95 22 2A A1 63 ED 5B D3 63 CD AF ..}..."*.c.[.c..
003BD0: 01 7D B4 28 03 21 01 00 7D B4 28 03 21 01 00 7D .}.(.!..}.(.!..}
003BE0: B4 CA FA 22 2A A3 63 11 01 00 CD 88 01 7D B4 CA ..."*£c......}..
003BF0: BE 22 CD CC 28 2A A1 63 22 9F 63 C3 D1 22 21 A3 ."..(*.c".c.."!£
003C00: 63 01 FF FF CD 7D 02 2A 9F 63 E5 CD E6 1E 22 9F c....}.*.c....".
003C10: 63 2A 9F 63 ED 5B DB A1 CD B6 01 7D B4 CA E9 22 c*.c.[.....}..."
003C20: 21 01 00 22 A5 63 C3 F7 22 2A 9F 63 E5 CD 02 36 !..".c.."*.c...6
003C30: 11 01 00 19 22 A5 63 C3 C3 23 2A A5 63 11 01 00 ....".c..#*.c...
003C40: CD 98 01 7D B4 CA C3 23 2A 9F 63 ED 5B DB A1 CD ...}...#*.c.[...
003C50: B6 01 7D B4 CA 20 23 21 01 00 22 A5 63 C3 C3 23 ..}.. #!..".c..#
003C60: 2A 9F 63 E5 CD 02 36 11 01 00 19 EB 2A A5 63 CD *.c...6.....*.c.
003C70: AF 01 7D B4 CA 48 23 2A 9F 63 E5 CD 02 36 11 01 ..}..H#*.c...6..
003C80: 00 19 22 A5 63 C3 C3 23 21 A5 63 01 FF FF CD 72 ..".c..#!.c....r
003C90: 02 11 01 00 B7 ED 52 EB 2A 9F 63 19 6E 26 00 11 ......R.*.c.n&..
003CA0: 20 00 CD 88 01 7D B4 CA 7A 23 2A A5 63 11 01 00 ....}..z#*.c...
003CB0: CD 98 01 7D B4 28 03 21 01 00 7D B4 CA 81 23 18 ...}.(.!..}...#.
003CC0: C7 21 A5 63 01 FF FF CD 72 02 11 01 00 B7 ED 52 .!.c....r......R
003CD0: EB 2A 9F 63 19 6E 26 00 11 20 00 CD 91 01 7D B4 .*.c.n&.. ....}.
003CE0: CA B3 23 2A A5 63 11 00 00 CD 98 01 7D B4 28 03 ..#*.c......}.(.
003CF0: 21 01 00 7D B4 CA BA 23 18 C7 21 A5 63 01 01 00 !..}...#..!.c...
003D00: 2A A3 63 E5 CD 2B 0C 11 00 00 C3 C4 00 21 FE FF *£c..+.......!..
003D10: CD 8F 00 21 02 00 E5 CD 70 33 2A 9F 63 E5 2A A5 ...!....p3*.c.*.
003D20: 63 11 01 00 B7 ED 52 E5 CD 59 1E 7D B4 CA B3 2C c.....R..Y.}...,
003D30: 2A D9 A1 E5 2A 9F 63 E5 2A A5 63 11 01 00 B7 ED *...*.c.*.c.....
003D40: 52 E5 CD A5 1E E5 CD 45 15 DD 75 FE DD 74 FF DD R......E..u..t..
003D50: 6E FE DD 66 FF 11 0A 00 CD 0B 01 EB 2A 48 A1 19 n..f........*H..
003D60: 11 04 00 19 CD 4B 02 E5 2A D9 A1 E5 CD 4B 0D 11 .....K..*....K..
003D70: 00 00 CD 91 01 7D B4 C2 6D 2C DD 6E FE DD 66 FF .....}..m,.n..f.
003D80: 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 00 00 19 E5 .......*H.......
003D90: 2A 9F 63 E5 2A A5 63 11 01 00 B7 ED 52 E5 CD A5 *.c.*.c.....R...
003DA0: 1E EB E1 CD 4B 02 CD AF 01 7D B4 28 03 21 01 00 ....K....}.(.!..
003DB0: 7D B4 CA 88 2C DD 6E FE DD 66 FF 11 00 00 CD 98 }...,.n..f......
003DC0: 01 7D B4 28 03 21 01 00 7D B4 C2 9E 2C DD 6E FE .}.(.!..}...,.n.
003DD0: DD 66 FF ED 5B D5 A1 CD 88 01 7D B4 28 03 21 01 .f..[.....}.(.!.
003DE0: 00 7D B4 CA B3 2C 21 FE FF DD E5 C1 09 01 FF FF .}...,!.........
003DF0: CD 7D 02 2A 9F 63 E5 2A A5 63 11 01 00 B7 ED 52 .}.*.c.*.c.....R
003E00: E5 CD 59 1E CD 03 01 7D B4 C2 F6 2C 2A D9 A1 E5 ..Y....}...,*...
003E10: 2A 9F 63 E5 2A A5 63 11 01 00 B7 ED 52 E5 CD A5 *.c.*.c.....R...
003E20: 1E E5 DD 6E FE DD 66 FF E5 CD 3E 16 11 00 00 CD ...n..f...>.....
003E30: 88 01 7D B4 28 03 21 01 00 7D B4 CA 17 2D C3 05 ..}.(.!..}...-..
003E40: 2D 0C 25 73 00 21 01 2D E5 2A 66 A1 E5 01 06 00 -.%s.!.-.*f.....
003E50: C5 CD 16 03 C3 21 2D DD 6E FE DD 66 FF E5 CD 39 .....!-.n..f...9
003E60: 2D 21 01 00 E5 CD 70 33 2A A5 63 E5 2A A3 63 E5 -!....p3*.c.*£c.
003E70: CD 2B 0C 11 00 00 C3 C4 00 21 00 00 CD 8F 00 DD .+.......!......
003E80: 6E 04 DD 66 05 11 0A 00 CD 0B 01 EB 2A 48 A1 19 n..f........*H..
003E90: 11 06 00 19 CD 4B 02 E5 CD D8 31 7D B4 CA 0A 2E .....K....1}....
003EA0: DD 6E 04 DD 66 05 11 0A 00 CD 0B 01 EB 2A 48 A1 .n..f........*H.
003EB0: 19 11 08 00 19 5E 23 56 2A D3 63 19 E5 CD B1 19 .....^#V*.c.....
003EC0: 22 A1 63 2A A1 63 22 9F 63 21 01 00 22 A3 63 2A ".c*.c".c!.."£c*
003ED0: 9F 63 E5 CD 02 36 EB 2A 9F 63 19 E5 DD 6E 04 DD .c...6.*.c...n..
003EE0: 66 05 11 0A 00 CD 0B 01 EB 2A 48 A1 19 11 08 00 f........*H.....
003EF0: 19 5E 23 56 2A D3 63 19 EB E1 CD B7 01 7D B4 CA .^#V*.c......}..
003F00: CD 7D 02 2A A5 63 E5 2A A3 63 E5 CD 2B 0C C3 61 .}.*.c.*£c..+..a
003F10: 28 2A 9F 63 ED 5B DB A1 CD B6 01 7D B4 CA EC 23 (*.c.[.....}...#
003F20: 21 00 00 DD 75 FB DD 74 FC C3 F9 23 2A 9F 63 E5 !...u..t...#*.c.
003F30: CD 02 36 DD 75 FB DD 74 FC DD 6E FB DD 66 FC 11 ..6.u..t..n..f..
003F40: 01 00 19 EB 2A A5 63 CD A7 01 7D B4 CA 42 24 2A ....*.c...}..B$*
003F50: A3 63 11 16 00 CD 99 01 7D B4 C2 38 24 2A 9F 63 £c......}..8$*.c
003F60: E5 CD 02 36 EB 2A 9F 63 19 11 01 00 19 ED 5B DB ...6.*.c......[.
003F70: A1 CD B0 01 7D B4 28 03 21 01 00 7D B4 28 03 21 ....}.(.!..}.(.!
003F80: 01 00 7D B4 CA A7 24 2A A3 63 11 16 00 CD 88 01 ..}...$*£c......
003F90: 7D B4 CA 6E 24 2A 9F 63 E5 CD 02 36 11 01 00 19 }..n$*.c...6....
003FA0: EB 2A 9F 63 19 22 9F 63 CD 19 29 C3 9E 24 21 A3 .*.c.".c..)..$!£
003FB0: 63 01 01 00 CD 7D 02 2A 9F 63 ED 5B DB A1 CD B0 c....}.*.c.[....
003FC0: 01 7D B4 CA 95 24 2A 9F 63 E5 CD 02 36 EB 2A 9F .}...$*.c...6.*.
003FD0: 63 19 22 9F 63 21 9F 63 01 01 00 CD 7D 02 21 01 c.".c!.c....}.!.
003FE0: 00 22 A5 63 C3 3B 25 DD 6E FB DD 66 FC 11 01 00 .".c.;%.n..f....
003FF0: 19 EB 2A A5 63 CD 99 01 7D B4 CA 3B 25 DD 6E FB ..*.c...}..;%.n.
004000: DD 66 FC EB 2A A5 63 CD 99 01 7D B4 CA F3 24 21 .f..*.c...}...$!
004010: A5 63 01 01 00 CD 72 02 11 01 00 B7 ED 52 EB 2A .c....r......R.*
004020: 9F 63 19 6E 26 00 11 20 00 CD 91 01 7D B4 28 03 .c.n&.. ....}.(.
004030: 21 01 00 7D B4 CA FA 24 18 C3 21 A5 63 01 01 00 !..}...$..!.c...
004040: CD 72 02 11 01 00 B7 ED 52 EB 2A 9F 63 19 6E 26 .r......R.*.c.n&
004050: 00 11 20 00 CD 88 01 7D B4 CA 34 25 DD 6E FB DD .. ....}..4%.n..
004060: 66 FC 11 01 00 19 EB 2A A5 63 CD 99 01 7D B4 28 f......*.c...}.(
004070: 03 21 01 00 7D B4 CA 3B 25 18 BF 2A A5 63 E5 2A .!..}..;%..*.c.*
004080: A3 63 E5 CD 2B 0C C3 61 28 2A A1 63 ED 5B D3 63 £c..+..a(*.c.[.c
004090: CD 88 01 7D B4 CA 67 25 2A A1 63 22 9F 63 21 01 ...}..g%*.c".c!.
0040A0: 00 22 A3 63 C3 E8 25 21 01 00 DD 75 FB DD 74 FC ."£c..%!...u..t.
0040B0: DD 6E FB DD 66 FC 11 16 00 CD 99 01 7D B4 CA 9F .n..f.......}...
0040C0: 25 C3 93 25 21 FB FF DD E5 C1 09 01 01 00 CD 7D %..%!..........}
0040D0: 02 18 DD 2A A1 63 E5 CD E6 1E 22 A1 63 18 E5 2A ...*.c....".c..*
0040E0: A1 63 E5 CD B1 19 22 A1 63 2A A1 63 22 9F 63 21 .c....".c*.c".c!
0040F0: 01 00 DD 75 FB DD 74 FC DD 6E FB DD 66 FC ED 5B ...u..t..n..f..[
004100: E0 2D 2A 9F 63 E5 CD 02 36 11 01 00 19 EB 2A 9F .-*.c...6.....*.
004110: 63 19 22 9F 63 21 A3 63 01 01 00 CD 7D 02 18 AF c.".c!£c....}...
004120: DD 6E 04 DD 66 05 11 0A 00 CD 0B 01 EB 2A 48 A1 .n..f........*H.
004130: 19 11 08 00 19 5E 23 56 2A D3 63 19 11 01 00 19 .....^#V*.c.....
004140: ED 5B 9F 63 B7 ED 52 22 A5 63 11 02 00 C3 C4 00 .[.c..R".c......
004150: 21 F1 FF CD 8F 00 21 03 00 E5 CD 70 33 21 0D 00 !.....!....p3!..
004160: E5 CD 0B 0A DD 75 F8 DD 74 F9 11 00 00 CD 88 01 .....u..t.......
004170: 7D B4 C2 4C 2E 21 0D 00 E5 CD 0B 0A DD 75 FA DD }..L.!.......u..
004180: 74 FB 11 00 00 CD 88 01 7D B4 28 03 21 01 00 7D t.......}.(.!..}
004190: B4 CA 73 2E C3 5A 2E 25 73 00 21 57 2E E5 2A 6A ..s..Z.%s.!W..*j
0041A0: A1 E5 01 06 00 C5 CD 16 03 21 01 00 E5 CD 37 38 .........!....78
0041B0: C3 99 2E 21 C2 63 E5 C3 7C 2E 72 00 21 7A 2E E5 ...!.c..|.r.!z..
0041C0: CD 46 00 DD 75 FE DD 74 FF 11 00 00 CD 88 01 7D .F..u..t.......}
0041D0: B4 CA 99 2E CD 64 31 18 DA 21 02 00 E5 CD 70 33 .....d1..!....p3
0041E0: C3 A9 2E 25 73 20 25 73 00 21 A3 2E E5 2A 6C A1 ...%s %s.!£..*l.
0041F0: E5 21 C2 63 E5 01 08 00 C5 CD 16 03 21 03 00 E5 .!.c........!...
004200: CD 70 33 DD 6E FE DD 66 FF E5 CD 49 00 E5 CD 0B .p3.n..f...I....
004210: 02 DD 75 F3 26 00 11 FF 00 CD 91 01 7D B4 CA 68 ..u.&.......}..h
004220: 30 DD 6E F3 26 00 CD 89 02 59 30 DD 6E FE DD 66 0.n.&....Y0.n..f
004230: FF E5 C3 FE 2E 20 25 31 32 73 20 0D 20 00 21 F5 ..... %12s . .!.
004240: 2E E5 21 A7 63 E5 01 08 00 C5 CD 9E 04 11 01 00 ..!.c...........
004250: CD 91 01 7D B4 CA 39 2F C3 23 2F 25 73 20 25 73 ...}..9/.#/%s %s
004260: 0A 0D 00 21 1B 2F E5 2A 6E A1 E5 2A 70 A1 E5 01 ...!./.*n..*p...
004270: 08 00 C5 CD 16 03 C3 94 2F 21 00 00 DD 75 F1 DD ......../!...u..
004280: 74 F2 DD 6E F1 DD 66 F2 11 0C 00 CD 99 01 7D B4 t..n..f.......}.
004290: CA 94 2F C3 65 2F 21 F1 FF DD E5 C1 09 01 01 00 ../.e/!.........
0042A0: CD 7D 02 18 DD DD 6E F1 DD 66 F2 EB 21 A7 63 19 .}....n..f..!.c.
0042B0: 6E 26 00 11 0D 00 CD 88 01 7D B4 CA 92 2F DD 6E n&.......}.../.n
0042C0: F1 DD 66 F2 EB 21 A7 63 19 E5 21 00 00 D1 7D 12 ..f..!.c..!...}.
0042D0: 26 00 18 C2 C3 65 30 DD 6E FE DD 66 FF E5 C3 B8 &....e0.n..f....
0042E0: 2F 20 25 31 32 73 20 25 64 20 25 64 20 25 31 32 / %12s %d %d %12
0042F0: 73 20 25 64 20 0D 20 00 21 A1 2F E5 DD 6E F8 DD s %d . .!./..n..
004300: A3 63 CD 99 01 7D B4 CA E8 25 C3 DC 25 21 FB FF £c...}...%..%!..
004310: DD E5 C1 09 01 01 00 CD 7D 02 18 DC 2A 9F 63 E5 ........}...*.c.
004320: CD 6D 1F 22 9F 63 18 E5 2A A5 63 E5 2A A3 63 E5 .m.".c..*.c.*£c.
004330: CD 2B 0C C3 61 28 CD 71 28 ED 5B DB A1 CD B6 01 .+..a(.q(.[.....
004340: 7D B4 CA 18 26 21 16 00 22 A3 63 CD 71 28 E5 CD }...&!.."£c.q(..
004350: E6 1E 22 9F 63 C3 99 26 21 01 00 DD 75 FB DD 74 ..".c..&!...u..t
004360: FC DD 6E FB DD 66 FC 11 16 00 CD 99 01 7D B4 CA ..n..f.......}..
004370: 50 26 C3 44 26 21 FB FF DD E5 C1 09 01 01 00 CD P&.D&!..........
004380: 7D 02 18 DD 2A A1 63 E5 CD 6D 1F 22 A1 63 18 E5 }...*.c..m.".c..
004390: 2A A1 63 E5 CD B1 19 22 A1 63 2A A1 63 22 9F 63 *.c....".c*.c".c
0043A0: 21 01 00 DD 75 FB DD 74 FC DD 6E FB DD 66 FC ED !...u..t..n..f..
0043B0: 5B A3 63 CD 99 01 7D B4 CA 99 26 C3 8D 26 21 FB [£c...}...&..&!.
0043C0: FF DD E5 C1 09 01 01 00 CD 7D 02 18 DC 2A 9F 63 .........}...*.c
0043D0: E5 CD 6D 1F 22 9F 63 18 E5 2A A5 63 E5 2A A3 63 ..m.".c..*.c.*£c
0043E0: E5 CD 2B 0C C3 61 28 21 01 00 22 A5 63 21 01 00 ..+..a(!..".c!..
0043F0: 22 A3 63 2A A1 63 ED 5B D3 63 CD 91 01 7D B4 CA "£c*.c.[.c...}..
004400: CC 26 2A D3 63 E5 CD B1 19 22 A1 63 2A A1 63 22 .&*.c....".c*.c"
004410: 9F 63 2A A5 63 E5 2A A3 63 E5 CD 2B 0C C3 61 28 .c*.c.*£c..+..a(
004420: 21 01 00 22 A5 63 CD 71 28 ED 5B DB A1 CD B0 01 !..".c.q(.[.....
004430: 7D B4 CA 05 27 2A DB A1 11 01 00 B7 ED 52 E5 CD }...'*.......R..
004440: B1 19 22 A1 63 CD 71 28 E5 CD E6 1E 22 9F 63 21 ..".c.q(....".c!
004450: 16 00 22 A3 63 2A A5 63 E5 2A A3 63 E5 CD 2B 0C .."£c*.c.*£c..+.
004460: C3 61 28 21 01 00 22 A5 63 2A A5 63 E5 2A A3 63 .a(!..".c*.c.*£c
004470: E5 CD 2B 0C C3 61 28 2A 9F 63 ED 5B DB A1 CD B6 ..+..a(*.c.[....
004480: 01 7D B4 CA 4F 27 21 01 00 22 A5 63 C3 5D 27 2A .}..O'!..".c.]'*
004490: 9F 63 E5 CD 02 36 11 01 00 19 22 A5 63 2A A5 63 .c...6....".c*.c
0044A0: E5 2A A3 63 E5 CD 2B 0C C3 61 28 2A A1 63 ED 5B .*£c..+..a(*.c.[
0044B0: D3 63 CD AF 01 7D B4 CA AC 27 CD CC 28 2A A3 63 .c...}...'..(*£c
0044C0: 11 16 00 CD 88 01 7D B4 CA 98 27 2A 9F 63 E5 CD ......}...'*.c..
0044D0: E6 1E 22 9F 63 C3 A1 27 21 A3 63 01 01 00 CD 7D ..".c..'!£c....}
0044E0: 02 2A A5 63 E5 2A A3 63 E5 CD 2B 0C C3 61 28 CD .*.c.*£c..+..a(.
0044F0: 71 28 ED 5B DB A1 CD B0 01 7D B4 CA F9 27 CD 19 q(.[.....}...'..
004500: 66 F9 E5 21 F4 FF DD E5 C1 09 E5 21 F6 FF DD E5 f..!.......!....
004510: C1 09 E5 DD 6E FA DD 66 FB E5 21 FC FF DD E5 C1 ....n..f..!.....
004520: 09 E5 01 10 00 C5 CD 9E 04 11 05 00 CD 91 01 7D ...............}
004530: B4 CA 15 30 C3 FF 2F 25 73 20 25 73 0A 0D 00 21 ...0../%s %s...!
004540: F7 2F E5 2A 6E A1 E5 2A 72 A1 E5 01 08 00 C5 CD ./.*n..*r.......
004550: 16 03 C3 32 30 DD 6E F8 DD 66 F9 E5 DD 6E F4 DD ...20.n..f...n..
004560: 66 F5 E5 CD 45 15 E5 21 F4 FF DD E5 C1 09 E5 CD f...E..!........
004570: 2A 12 C3 65 30 C3 40 30 25 73 20 25 73 0A 0D 00 *..e0.@0%s %s...
004580: 21 38 30 E5 2A 6E A1 E5 2A 74 A1 E5 01 08 00 C5 !80.*n..*t......
004590: CD 16 03 C3 65 30 C3 65 30 EB 2E 46 00 97 2F 42 ....e0.e0..F../B
0045A0: 00 00 00 18 D0 C3 C3 2E DD 6E FE DD 66 FF E5 CD .........n..f...
0045B0: 4F 00 DD 6E F8 DD 66 F9 E5 CD 92 36 DD 6E FA DD O..n..f....6.n..
0045C0: 66 FB E5 CD 92 36 2A A7 63 26 00 7D B4 CA BF 30 f....6*.c&.}...0
0045D0: 21 A7 63 E5 CD CF 30 7D B4 CA B8 30 C3 A2 30 25 !.c...0}...0..0%
0045E0: 73 00 21 9F 30 E5 2A 76 A1 E5 01 06 00 C5 CD 16 s.!.0.*v........
0045F0: 03 21 01 00 E5 CD 37 38 2A CF 63 E5 CD 99 10 21 .!....78*.c....!
004600: 02 00 E5 CD 70 33 CD 52 0C 11 00 00 C3 C4 00 21 ....p3.R.......!
004610: FE FF CD 8F 00 DD 6E 04 DD 66 05 E5 CD 4F 17 DD ......n..f...O..
004620: 75 FE DD 74 FF DD 6E FE DD 66 FF CD 89 02 56 31 u..t..n..f....V1
004630: C3 F8 30 25 73 20 20 00 21 F3 30 E5 2A 78 A1 E5 ..0%s .!.0.*x..
004640: 01 06 00 C5 CD 16 03 21 01 00 11 02 00 C3 C4 00 .......!........
004650: C3 1A 31 0A 0D 25 73 20 20 00 21 13 31 E5 2A 7A ..1..%s .!.1.*z
004660: A1 E5 01 06 00 C5 CD 16 03 21 02 00 18 DC 2A CF .........!....*.
004670: 63 E5 2A D9 A1 E5 2A A5 63 E5 2A A3 63 E5 2A A1 c.*...*.c.*£c.*.
004680: 63 E5 CD 6A 0F DD 6E 04 DD 66 05 22 D9 A1 21 00 c..j..n..f."..!.
004690: 00 18 B7 C3 62 31 F0 30 FF FF 10 31 FE FF 00 00 ....b1.0...1....
0046A0: 18 CC 18 A6 21 FF FF CD 8F 00 C3 7A 31 0A 0D 25 ....!......z1..%
0046B0: 73 20 25 73 0A 0D 0A 25 73 00 21 6D 31 E5 2A 7C s %s...%s.!m1.*|
0046C0: A1 E5 21 C2 63 E5 2A 7E A1 E5 01 0A 00 C5 CD 16 ..!.c.*~........
0046D0: 03 C3 97 31 52 51 00 21 94 31 E5 CD 55 00 E5 CD ...1RQ.!.1..U...
0046E0: 0B 02 DD 75 FF 26 00 E5 CD 3C 36 11 00 00 CD 88 ...u.&...<6.....
0046F0: 01 7D B4 CA B8 31 18 D9 DD 6E FF 26 00 11 51 00 .}...1...n.&..Q.
004700: 29 2A A3 63 11 01 00 CD 88 01 7D B4 CA E5 27 2A )*£c......}...'*
004710: 9F 63 E5 CD 02 36 11 01 00 19 EB 2A 9F 63 19 22 .c...6.....*.c."
004720: 9F 63 C3 EE 27 21 A3 63 01 FF FF CD 7D 02 2A A5 .c..'!£c....}.*.
004730: 63 E5 2A A3 63 E5 CD 2B 0C C3 61 28 C3 61 28 8C c.*£c..+..a(.a(.
004740: 20 51 00 8F 20 3C 00 8F 20 2C 00 8F 20 42 00 95 Q.. <.. ,.. B..
004750: 20 48 00 CB 20 46 00 03 21 0C 00 1B 21 50 00 3A H.. F..!...!P.:
004760: 21 4F 00 40 21 0D 00 46 21 F0 00 98 21 F1 00 21 !O.@!..F!...!..!
004770: 22 F2 00 47 22 F3 00 6B 22 F6 00 D1 23 F7 00 49 "..G"..k"...#..I
004780: 25 F8 00 F6 25 F9 00 A7 26 1B 00 E0 26 1D 00 23 %...%...&...&..#
004790: 27 FA 00 37 27 FB 00 6B 27 F4 00 AF 27 F5 00 00 '..7'..k'...'...
0047A0: 00 C3 38 20 21 00 00 E5 CD 37 38 11 00 00 C3 C4 ..8 !....78.....
0047B0: 00 21 FC FF CD 8F 00 2A A1 63 DD 75 FC DD 74 FD .!.....*.c.u..t.
0047C0: 21 00 00 DD 75 FE DD 74 FF DD 6E FE DD 66 FF 11 !...u..t..n..f..
0047D0: 16 00 CD 99 01 7D B4 CA BE 28 C3 AC 28 21 FE FF .....}...(..(!..
0047E0: DD E5 C1 09 01 01 00 CD 7D 02 18 DD DD 6E FC DD ........}....n..
0047F0: 66 FD E5 CD 6D 1F DD 75 FC DD 74 FD 18 DF DD 6E f...m..u..t....n
004800: FC DD 66 FD 11 00 00 C3 C4 00 18 F8 21 00 00 CD ..f.........!...
004810: 8F 00 2A A1 63 E5 CD E6 1E 22 A1 63 21 01 00 E5 ..*.c....".c!...
004820: 21 01 00 E5 CD 2B 0C 21 0B 00 E5 CD 6D 00 C3 F5 !....+.!....m...
004830: 28 0D 25 73 00 21 F1 28 E5 2A A1 63 E5 01 06 00 (.%s.!.(.*.c....
004840: C5 CD 16 03 2A A1 63 E5 21 00 00 E5 21 01 00 E5 ....*.c.!...!...
004850: CD 0B 1C 11 00 00 C3 C4 00 21 FE FF CD 8F 00 21 .........!.....!
004860: 01 00 E5 21 16 00 E5 CD 2B 0C CD 71 28 DD 75 FE ...!....+..q(.u.
004870: DD 74 FF C3 3B 29 0A 0D 25 73 00 21 36 29 E5 DD .t..;)..%s.!6)..
004880: 6E FE DD 66 FF E5 01 06 00 C5 CD 16 03 DD 6E FE n..f..........n.
004890: DD 66 FF E5 21 15 00 E5 21 16 00 E5 CD 0B 1C 2A .f..!...!......*
0048A0: A1 63 E5 CD 02 36 11 01 00 19 EB 2A A1 63 19 22 .c...6.....*.c."
0048B0: A1 63 11 00 00 C3 C4 00 21 00 00 CD 8F 00 21 04 .c......!.....!.
0048C0: 00 E5 CD 6D 00 21 02 00 E5 CD 6D 00 21 44 00 E5 ...m.!....m.!D..
0048D0: 21 01 00 E5 21 50 00 E5 21 02 00 E5 CD C5 0C 21 !...!P..!......!
0048E0: 00 00 E5 CD A8 0C 21 01 00 E5 CD 8B 0C CD 52 0C ......!.......R.
0048F0: C3 CF 29 25 63 4C 6F 6F 6D 20 76 33 2E 32 20 62 ..)%cLoom v3.2 b
004900: CD 88 01 7D B4 CA CF 31 21 00 00 E5 CD 37 38 CD ...}...1!....78.
004910: 52 0C 11 00 00 C3 C4 00 21 F8 FF CD 8F 00 2A D9 R.......!.....*.
004920: A1 E5 DD 6E 04 DD 66 05 E5 CD 4B 0D 11 00 00 CD ...n..f...K.....
004930: 88 01 7D B4 CA 1E 32 21 03 00 E5 CD 70 33 2A CF ..}...2!....p3*.
004940: 63 E5 2A D9 A1 E5 2A A5 63 E5 2A A3 63 E5 2A A1 c.*...*.c.*£c.*.
004950: 63 E5 CD 6A 0F 21 01 00 11 02 00 C3 C4 00 21 00 c..j.!........!.
004960: 00 DD 75 F8 DD 74 F9 21 02 00 E5 CD 70 33 C3 38 ..u..t.!....p3.8
004970: 32 0C 25 73 20 25 73 00 21 31 32 E5 2A 6C A1 E5 2.%s %s.!12.*l..
004980: DD 6E 04 DD 66 05 E5 01 08 00 C5 CD 16 03 21 03 .n..f.........!.
004990: 00 E5 CD 70 33 DD 6E 04 DD 66 05 DD 75 FE DD 74 ...p3.n..f..u..t
0049A0: FF DD 6E FE DD 66 FF E5 CD CF 30 DD 75 FC DD 74 ..n..f....0.u..t
0049B0: FD DD 6E FC DD 66 FD CD 89 02 3A 33 21 01 00 DD ..n..f....:3!...
0049C0: 75 F8 DD 74 F9 C3 48 33 21 00 00 DD 75 FA DD 74 u..t..H3!...u..t
0049D0: FB C3 97 32 25 73 00 21 94 32 E5 2A 80 A1 E5 01 ...2%s.!.2.*....
0049E0: 06 00 C5 CD 16 03 C3 AC 32 59 4E 00 21 A9 32 E5 ........2YN.!.2.
0049F0: CD 55 00 E5 CD 0B 02 DD 75 FA DD 74 FB E5 CD 3C .U......u..t...<
004A00: 36 11 00 00 CD 88 01 7D B4 CA CE 32 18 D8 DD 6E 6......}...2...n
004A10: FA DD 66 FB 11 4E 00 CD 88 01 7D B4 CA EF 32 21 ..f..N....}...2!
004A20: 00 00 DD 75 FC DD 74 FD 2A A1 63 E5 CD B1 19 C3 ...u..t.*.c.....
004A30: 48 33 C3 FB 32 25 73 0D 0A 20 00 21 F5 32 E5 2A H3..2%s.. .!.2.*
004A40: 82 A1 E5 01 06 00 C5 CD 16 03 2A D9 A1 22 D7 A1 ..........*.."..
004A50: 21 B4 63 22 D9 A1 2A D7 A1 E5 CD D8 31 2A CF 63 !.c"..*.....1*.c
004A60: E5 CD 99 10 21 00 00 DD 75 FC DD 74 FD 2A A1 63 ....!...u..t.*.c
004A70: E5 CD B1 19 C3 48 33 C3 48 33 7C 32 00 00 88 32 .....H3.H3|2...2
004A80: 01 00 F2 32 02 00 00 00 DD 6E FC DD 66 FD 7D B4 ...2.....n..f.}.
004A90: C2 61 32 21 02 00 E5 CD 70 33 CD 52 0C 21 01 00 .a2!....p3.R.!..
004AA0: E5 CD 70 33 DD 6E F8 DD 66 F9 C3 18 32 C3 18 32 ..p3.n..f...2..2
004AB0: 21 00 00 CD 8F 00 DD 6E 04 DD 66 05 CD 89 02 1F !......n..f.....
004AC0: 34 21 01 00 E5 21 01 00 E5 21 43 00 E5 21 02 00 4!...!...!C..!..
004AD0: E5 CD C5 0C 21 00 00 E5 CD A8 0C 21 01 00 E5 CD ....!......!....
004AE0: 8B 0C C3 31 34 21 01 00 E5 21 03 00 E5 21 50 00 ...14!...!...!P.
004AF0: E5 21 18 00 E5 CD C5 0C 21 01 00 E5 CD A8 0C 21 .!......!......!
004B00: 79 25 63 53 2E 20 50 68 69 6C 6C 69 70 73 00 21 y%cS. Phillips.!
004B10: B3 29 E5 21 D3 00 E5 21 D3 00 E5 01 08 00 C5 CD .).!...!........
004B20: 16 03 21 00 00 E5 CD 70 33 21 01 00 E5 CD A8 0C ..!....p3!......
004B30: 21 00 00 E5 CD 8B 0C C3 FD 29 25 73 00 21 FA 29 !........)%s.!.)
004B40: E5 2A 5E A1 E5 01 06 00 C5 CD 16 03 21 01 00 E5 .*^.........!...
004B50: CD 70 33 CD 52 0C 21 02 00 E5 CD 70 33 CD 52 0C .p3.R.!....p3.R.
004B60: 11 00 00 C3 C4 00 21 F8 FF CD 8F 00 2A CF 63 E5 ......!.....*.c.
004B70: CD BB 11 7D B4 CA 5F 2A 21 02 00 E5 CD 70 33 C3 ...}.._*!....p3.
004B80: 46 2A 0C 25 73 00 21 42 2A E5 2A 60 A1 E5 01 06 F*.%s.!B*.*`....
004B90: 00 C5 CD 16 03 21 01 00 E5 CD 70 33 C3 3C 2B 2A .....!....p3.<+*
004BA0: CF 63 E5 21 FE FF DD E5 C1 09 E5 21 FC FF DD E5 .c.!.......!....
004BB0: C1 09 E5 21 FA FF DD E5 C1 09 E5 21 F8 FF DD E5 ...!.......!....
004BC0: C1 09 E5 CD 49 11 DD 6E FE DD 66 FF E5 CD D8 31 ....I..n..f....1
004BD0: 7D B4 CA 19 2B DD 6E FC DD 66 FD 22 A5 63 DD 6E }...+.n..f.".c.n
004BE0: FA DD 66 FB 22 A3 63 DD 6E F8 DD 66 F9 22 A1 63 ..f."£c.n..f.".c
004BF0: 2A A1 63 22 9F 63 2A A1 63 22 9F 63 DD 6E FA DD *.c".c*.c".c.n..
004C00: 66 FB 11 01 00 CD 98 01 7D B4 CA 08 2B C3 DF 2A f.......}...+..*
004C10: 21 FA FF DD E5 C1 09 01 FF FF CD 7D 02 18 DD 2A !..........}...*
004C20: 9F 63 ED 5B DB A1 CD B0 01 7D B4 CA FD 2A 2A 9F .c.[.....}...**.
004C30: 63 E5 CD 02 36 EB 2A 9F 63 19 22 9F 63 21 9F 63 c...6.*.c.".c!.c
004C40: 01 01 00 CD 7D 02 18 C8 2A CF 63 E5 CD 99 10 2A ....}...*.c....*
004C50: A1 63 E5 CD B1 19 C3 3C 2B 2A CF 63 E5 DD 6E FE .c.....<+*.c..n.
004C60: DD 66 FF E5 DD 6E FC DD 66 FD E5 DD 6E FA DD 66 .f...n..f...n..f
004C70: FB E5 DD 6E F8 DD 66 F9 E5 CD 6A 0F 2A A5 63 E5 ...n..f...j.*.c.
004C80: 2A A3 63 E5 CD 2B 0C 11 00 00 C3 C4 00 21 FE FF *£c..+.......!..
004C90: CD 8F 00 21 02 00 E5 CD 70 33 2A 9F 63 E5 2A A5 ...!....p3*.c.*.
004CA0: 63 11 01 00 B7 ED 52 E5 CD A5 1E DD 75 FE DD 74 c.....R.....u..t
004CB0: FF 11 FF FF CD 88 01 7D B4 CA 95 2B C3 83 2B 0C .......}...+..+.
004CC0: 25 73 00 21 7F 2B E5 2A 62 A1 E5 01 06 00 C5 CD %s.!.+.*b.......
004CD0: 16 03 C3 B5 2B C3 9F 2B 0C 25 73 20 25 64 00 21 ....+..+.%s %d.!
004CE0: 98 2B E5 2A 64 A1 E5 DD 6E FE DD 66 FF E5 01 08 .+.*d...n..f....
004CF0: 00 C5 CD 16 03 21 01 00 E5 CD 70 33 2A A5 63 E5 .....!....p3*.c.
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 C4 02 00 00 00 02 ......N.........
004D20: 04 00 C9 02 00 00 00 02 04 00 C5 02 00 00 00 02 ................
004D30: 04 00 C1 02 00 00 00 02 04 00 C6 02 00 00 00 02 ................
004D40: 04 00 C2 02 00 00 00 02 04 00 C7 02 00 00 00 02 ................
004D50: 04 00 C3 02 00 00 00 02 04 00 C8 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: A8 68 12 EA 6F 73 70 EC 98 9B 6C 0C 38 F6 85 FC .h..osp...l.8...
004E10: 07 66 F6 18 DC 7B 71 28 70 3E D1 83 DE 74 2C 30 .f...{q(p>...t,0
004E20: D0 CB 0F F0 63 27 F0 E6 B4 B7 64 95 60 88 E1 BC ....c'....d.`...
004E30: 81 E0 37 80 EA A4 11 73 F3 1F DB 17 C1 AF D4 0A ..7....s........
004E40: B3 28 F4 4A 2C B2 14 D8 B2 FC 89 E0 DC B7 36 D9 .(.J,.........6.
004E50: 2B 34 48 D0 61 8B DE 59 AB 9A 9C 32 B3 C5 09 97 +4H.a..Y...2....
004E60: 72 48 43 88 03 86 95 84 FC 9B E7 CD 28 AA 0A 12 rHC.........(...
004E70: EA 35 BE F8 EF C9 B5 C3 F1 0B 4A 6C 89 9F D8 D0 .5........Jl....
004E80: 0A 75 E2 EA 6C CC 9E F6 03 44 16 00 03 22 E8 09 .u..l....D..."..
004E90: 03 22 F5 09 03 22 FE 09 03 44 1D 00 03 44 46 00 ."..."...D...DF.
004EA0: 03 44 0D 00 03 4C 64 02 03 44 67 3D 00 00 11 FF .D...Ld..Dg=....
004EB0: 69 6E 74 20 20 20 20 20 00 00 12 FF 6C 6F 6E 67 int ....long
004EC0: 20 20 20 20 00 00 13 FF 72 65 67 69 73 74 65 72 ....register
004ED0: 00 00 14 FF 72 65 74 75 72 6E 20 20 00 00 15 FF ....return ....
004EE0: 73 68 6F 72 74 20 20 20 00 00 16 FF 73 69 7A 65 short ....size
004EF0: 6F 03 00 A3 63 01 00 01 01 00 D2 63 BF 02 00 46 o..£c......c...F
004F00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004F10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004F20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004F30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004F40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004F50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004F60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004F70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004F80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004F90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004FA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004FB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004FC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004FD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004FE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
004FF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
005000: 23 57 65 6C 63 6F 6D 65 20 74 6F 20 74 68 65 20 #Welcome to the
005010: 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61 74 Programmers' Pat
005020: 63 68 20 64 69 73 63 0D 0A 50 52 4F 47 52 41 4D ch disc..PROGRAM
005030: 4D 45 52 53 27 20 50 41 54 43 48 0D 0A 42 79 20 MERS' PATCH..By
005040: 53 74 65 70 68 65 6E 2C 20 4D 61 74 74 68 65 77 Stephen, Matthew
005050: 20 61 6E 64 20 48 69 6C 61 72 79 20 50 68 69 6C and Hilary Phil
005060: 6C 69 70 73 0D 0A 0D 0A 54 68 65 20 50 72 6F 67 lips....The Prog
005070: 72 61 6D 6D 65 72 73 27 20 50 61 74 63 68 20 64 rammers' Patch d
005080: 69 73 63 20 66 65 61 74 75 72 65 73 20 61 6C 6C isc features all
005090: 20 74 68 65 20 61 72 74 69 63 6C 65 73 20 61 6E the articles an
0050A0: 64 20 70 72 6F 67 72 61 6D 73 20 66 72 6F 6D 20 d programs from
0050B0: 74 68 65 0D 0A 61 63 63 6C 61 69 6D 65 64 20 57 the..acclaimed W
0050C0: 41 43 43 49 20 73 65 72 69 65 73 2E 20 20 54 68 ACCI series. Th
0050D0: 65 20 66 69 6C 65 73 20 6F 6E 20 74 68 69 73 20 e files on this
0050E0: 64 69 73 63 20 61 72 65 20 63 6F 70 79 72 69 67 disc are copyrig
0050F0: 68 74 20 53 74 65 70 68 65 6E 2C 20 4D 61 74 74 ht Stephen, Matt
005100: 68 65 77 0D 0A 61 6E 64 20 48 69 6C 61 72 79 20 hew..and Hilary
005110: 50 68 69 6C 6C 69 70 73 2E 20 20 50 65 72 6D 69 Phillips. Permi
005120: 73 73 69 6F 6E 20 69 73 20 67 72 61 6E 74 65 64 ssion is granted
005130: 20 74 6F 20 64 69 73 74 72 69 62 75 74 65 20 63 to distribute c
005140: 6F 70 69 65 73 20 6F 66 20 74 68 65 0D 0A 63 6F opies of the..co
005150: 6D 70 6C 65 74 65 20 64 69 73 63 2C 20 74 6F 20 mplete disc, to
005160: 70 72 69 6E 74 20 6F 75 74 20 74 68 65 20 61 72 print out the ar
005170: 74 69 63 6C 65 73 20 61 6E 64 20 6C 69 73 74 69 ticles and listi
005180: 6E 67 73 20 66 6F 72 20 70 65 72 73 6F 6E 61 6C ngs for personal
005190: 20 75 73 65 2C 20 61 6E 64 20 74 6F 0D 0A 69 6E use, and to..in
0051A0: 63 6F 72 70 6F 72 61 74 65 20 74 68 65 20 70 72 corporate the pr
0051B0: 6F 67 72 61 6D 6D 69 6E 67 20 65 78 61 6D 70 6C ogramming exampl
0051C0: 65 73 20 69 6E 20 79 6F 75 72 20 6F 77 6E 20 70 es in your own p
0051D0: 72 6F 67 72 61 6D 73 2E 20 20 41 4C 4C 20 4F 54 rograms. ALL OT
0051E0: 48 45 52 20 52 49 47 48 54 53 0D 0A 52 45 53 45 HER RIGHTS..RESE
0051F0: 52 56 45 44 2E 0D 0A 0D 0A 59 6F 75 20 63 61 6E RVED.....You can
005200: 50 2C EE AE 93 37 3C A8 D4 DF 79 48 25 D4 6E B1 P,...7<...yH%.n.
005210: 12 44 00 33 37 50 8C 03 86 73 CF A1 23 39 69 74 .D.37P...s..#9it
005220: CE 8F 01 B4 6D 6B 97 A8 D3 F1 00 EC 07 B5 F0 43 ....mk.........C
005230: F9 71 2A CE BE A4 11 73 D3 3F C9 E8 BF 3F D6 02 .q*....s.?...?..
005240: FD 6F F4 4A 0C 92 07 27 D3 66 9C EC C8 AA 20 DF .o.J...'.f.... .
005250: 4E 46 5C 2F 07 11 D8 49 AD 81 CE 7C 93 E5 1C 68 NF\/...I...|...h
005260: 14 DF 5F 92 18 D4 C1 84 DC BB F1 32 4D 3C 03 1E .._........2M<..
005270: FF 53 D1 58 8C 72 D6 C3 F0 0A 9F 0F E6 FE 67 96 .S.X.r........g.
005280: AB 2C ED DA 19 35 3F A4 3A 86 75 0C 3B 2F CC EF .,...5?.:.u.;/..
005290: 16 00 03 22 E8 09 03 22 F5 09 03 22 FE 09 03 44 ..."..."..."...D
0052A0: 1D 00 03 44 0D 00 03 4C 64 02 03 44 67 3D 00 00 ...D...Ld..Dg=..
0052B0: 11 FF 69 6E 74 20 20 20 20 20 00 00 12 FF 6C 6F ..int ....lo
0052C0: 6E 67 20 20 20 20 00 00 13 FF 72 65 67 69 73 74 ng ....regist
0052D0: 65 72 00 00 14 FF 72 65 74 75 72 6E 20 20 00 00 er....return ..
0052E0: 15 FF 73 68 6F 72 74 20 20 20 00 00 16 FF 73 69 ..short ....si
0052F0: 7A 65 6F 03 00 BA 63 01 00 01 07 00 D0 63 BF 00 zeo...c......c..
005300: 2B 31 0D 0A 31 36 30 20 49 46 20 49 4E 4B 45 59 +1..160 IF INKEY
005310: 28 32 31 29 3E 2D 31 20 54 48 45 4E 20 61 64 64 (21)>-1 THEN add
005320: 78 3D 61 64 64 78 2A 34 0D 0A 31 37 30 20 61 64 x=addx*4..170 ad
005330: 64 78 3D 33 2A 61 64 64 78 0D 0A 31 38 30 20 49 dx=3*addx..180 I
005340: 46 20 49 4E 4B 45 59 28 32 29 3E 2D 31 20 54 48 F INKEY(2)>-1 TH
005350: 45 4E 20 61 64 64 79 3D 2D 31 0D 0A 31 39 30 20 EN addy=-1..190
005360: 49 46 20 49 4E 4B 45 59 28 30 29 3E 2D 31 20 54 IF INKEY(0)>-1 T
005370: 48 45 4E 20 61 64 64 79 3D 61 64 64 79 2B 31 0D HEN addy=addy+1.
005380: 0A 32 30 30 20 49 46 20 49 4E 4B 45 59 28 32 31 .200 IF INKEY(21
005390: 29 3E 2D 31 20 54 48 45 4E 20 61 64 64 79 3D 61 )>-1 THEN addy=a
0053A0: 64 64 79 2A 32 0D 0A 32 31 30 20 61 64 64 79 3D ddy*2..210 addy=
0053B0: 33 2A 61 64 64 79 0D 0A 32 32 30 20 78 3D 78 2B 3*addy..220 x=x+
0053C0: 61 64 64 78 3A 79 3D 79 2B 61 64 64 79 0D 0A 32 addx:y=y+addy..2
0053D0: 32 35 20 52 45 4D 20 43 68 65 63 6B 20 78 20 26 25 REM Check x &
0053E0: 20 79 20 61 72 65 20 6F 6E 20 73 63 72 65 65 6E y are on screen
0053F0: 0D 0A 32 33 30 20 49 46 20 78 3E 36 33 32 20 54 ..230 IF x>632 T
005400: 00 00 E5 CD 8B 0C C3 31 34 21 01 00 E5 21 19 00 .......14!...!..
005410: E5 21 50 00 E5 21 19 00 E5 CD C5 0C 21 00 00 E5 .!P..!......!...
005420: CD A8 0C 21 01 00 E5 CD 8B 0C C3 31 34 21 15 00 ...!.......14!..
005430: E5 21 0B 00 E5 21 3C 00 E5 21 0D 00 E5 CD C5 0C .!...!<..!......
005440: 21 00 00 E5 CD A8 0C 21 01 00 E5 CD 8B 0C 21 32 !......!......!2
005450: 00 E5 21 03 00 E5 CD 2B 0C C3 31 34 C3 31 34 81 ..!....+..14.14.
005460: 33 00 00 A5 33 01 00 C9 33 02 00 ED 33 03 00 00 3...3...3...3...
005470: 00 11 02 00 C3 C4 00 21 FF FF CD 8F 00 DD 6E 04 .......!......n.
005480: DD 66 05 6E 26 00 11 00 00 CD 91 01 7D B4 CA EE .f.n&.......}...
005490: 34 DD 6E 04 DD 66 05 E5 CD 11 0E 11 00 00 CD 88 4.n..f..........
0054A0: 01 7D B4 CA DE 34 C3 71 34 0C 25 73 20 20 25 73 .}...4.q4.%s %s
0054B0: 00 21 69 34 E5 2A 5A A1 E5 2A 7E A1 E5 01 08 00 .!i4.*Z..*~.....
0054C0: C5 CD 16 03 C3 8A 34 52 51 00 21 87 34 E5 CD 55 ......4RQ.!.4..U
0054D0: 00 E5 CD 0B 02 DD 75 FF 26 00 E5 CD 3C 36 11 00 ......u.&...<6..
0054E0: 00 CD 88 01 7D B4 CA AB 34 18 D9 CD 52 0C DD 6E ....}...4...R..n
0054F0: FF 26 00 CD 89 02 D4 34 21 04 00 DD E5 C1 09 01 .&.....4!.......
005500: FF FF CD 7D 02 C3 DE 34 21 FF FF 11 02 00 C3 C4 ...}...4!.......
005510: 00 C3 DE 34 B8 34 52 00 C8 34 51 00 00 00 21 04 ...4.4R..4Q...!.
005520: 00 DD E5 C1 09 01 01 00 CD 7D 02 C3 3D 34 21 00 .........}..=4!.
005530: 00 18 D8 18 D6 21 AC FF CD 8F 00 21 FE 09 E5 C3 .....!.....!....
005540: 04 35 72 00 21 02 35 E5 CD 46 00 DD 75 FE DD 74 .5r.!.5..F..u..t
005550: FF 11 00 00 CD 88 01 7D B4 CA 23 35 21 00 00 E5 .......}..#5!...
005560: CD 37 38 21 00 00 DD 75 FC DD 74 FD DD 6E FC DD .78!...u..t..n..
005570: 66 FD 11 1D 00 CD 99 01 7D B4 CA AF 35 C3 4F 35 f.......}...5.O5
005580: 21 FC FF DD E5 C1 09 01 01 00 CD 7D 02 18 DD 21 !..........}...!
005590: AC FF DD E5 C1 09 E5 21 4F 00 E5 DD 6E FE DD 66 .......!O...n..f
0055A0: FF E5 CD 3C 0E DD 6E FC DD 66 FD 11 02 00 CD 0B ...<..n..f......
0055B0: 01 EB 21 4A A1 19 E5 21 AC FF DD E5 C1 09 E5 CD ..!J...!........
0055C0: 02 36 11 01 00 19 E5 CD 0B 0A CD 6A 02 DD 6E FC .6.........j..n.
0055D0: DD 66 FD 11 02 00 CD 0B 01 EB 21 4A A1 19 CD 4B .f........!J...K
0055E0: 02 E5 21 AC FF DD E5 C1 09 E5 CD BF 35 18 91 DD ..!.........5...
0055F0: 6E FE DD 66 FF E5 CD 4F 00 11 00 00 C3 C4 00 21 n..f...O.......!
005600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0056A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0056B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0056C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0056D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0056E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0056F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0057A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0057B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0057C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0057D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0057E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0057F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
005800: 00 00 CD 8F 00 DD 6E 06 DD 66 07 22 9D 63 21 9D ......n..f.".c!.
005810: 63 01 01 00 CD 7D 02 E5 21 04 00 DD E5 C1 09 01 c....}..!.......
005820: 01 00 CD 7D 02 6E 26 00 D1 7D 12 26 00 7D B4 CA ...}.n&..}.&.}..
005830: F4 35 18 DA DD 6E 06 DD 66 07 11 04 00 C3 C4 00 .5...n..f.......
005840: 18 F8 21 00 00 CD 8F 00 DD 6E 04 DD 66 05 22 9B ..!......n..f.".
005850: 63 21 9B 63 01 01 00 CD 7D 02 6E 26 00 7D B4 20 c!.c....}.n&.}.
005860: F0 DD 6E 04 DD 66 05 EB 2A 9B 63 B7 ED 52 11 01 ..n..f..*.c..R..
005870: 00 B7 ED 52 11 02 00 C3 C4 00 18 F8 21 00 00 CD ...R........!...
005880: 8F 00 DD 6E 06 DD 66 07 6E 26 00 EB DD 6E 04 26 ...n..f.n&...n.&
005890: 00 EB CD 88 01 7D B4 CA 66 36 DD 6E 06 DD 66 07 .....}..f6.n..f.
0058A0: 11 04 00 C3 C4 00 DD 6E 06 DD 66 07 6E 26 00 CD .......n..f.n&..
0058B0: 03 01 7D B4 CA 7C 36 21 00 00 18 E4 21 06 00 DD ..}..|6!....!...
0058C0: E5 C1 09 01 01 00 CD 72 02 21 01 00 7D B4 20 B2 .......r.!..}. .
0058D0: 18 CE 21 00 00 CD 8F 00 DD 6E 04 DD 66 05 11 04 ..!......n..f...
0058E0: 00 B7 ED 52 22 99 63 2A 99 63 11 02 00 19 5E 23 ...R".c*.c....^#
0058F0: 56 2A 46 A1 19 22 46 A1 2A F0 A1 22 97 63 2A 99 V*F.."F.*..".c*.
005900: 63 ED 5B 97 63 CD AF 01 7D B4 CA E4 36 2A 97 63 c.[.c...}...6*.c
005910: 11 00 00 19 5E 23 56 2A 99 63 CD B0 01 7D B4 28 ....^#V*.c...}.(
005920: 03 21 01 00 CD 03 01 7D B4 CA 4A 37 C3 FE 36 2A .!.....}..J7..6*
005930: 97 63 11 00 00 19 CD 4B 02 22 97 63 18 C0 2A 97 .c.....K.".c..*.
005940: 63 11 00 00 19 5E 23 56 2A 97 63 CD B6 01 7D B4 c....^#V*.c...}.
005950: CA 40 37 2A 99 63 ED 5B 97 63 CD AF 01 7D B4 C2 .@7*.c.[.c...}..
005960: 36 37 2A 97 63 11 00 00 19 5E 23 56 2A 99 63 CD 67*.c....^#V*.c.
005970: B0 01 7D B4 28 03 21 01 00 7D B4 28 03 21 01 00 ..}.(.!..}.(.!..
005980: 7D B4 CA 48 37 C3 4A 37 18 A5 2A 99 63 11 02 00 }..H7.J7..*.c...
005990: 19 CD 4B 02 11 04 00 CD 0B 01 EB 2A 99 63 19 E5 ..K........*.c..
0059A0: 2A 97 63 11 00 00 19 5E 23 56 E1 CD 88 01 7D B4 *.c....^#V....}.
0059B0: CA B4 37 2A 99 63 11 02 00 19 E5 E5 2A 97 63 11 ..7*.c......*.c.
0059C0: 00 00 19 CD 4B 02 11 02 00 19 5E 23 56 E1 CD 4B ....K.....^#V..K
0059D0: 02 19 CD 6A 02 2A 99 63 11 00 00 19 E5 2A 97 63 ...j.*.c.....*.c
0059E0: 11 00 00 19 CD 4B 02 11 00 00 19 CD 4B 02 CD 6A .....K......K..j
0059F0: 02 C3 C9 37 2A 99 63 11 00 00 19 E5 2A 97 63 11 ...7*.c.....*.c.
005A00: 55 6E 61 62 6C 65 20 74 6F 20 69 6E 69 74 69 61 Unable to initia
005A10: 6C 69 73 65 20 73 74 61 63 6B 2E 0D 0A 4E 6F 20 lise stack...No
005A20: 6D 6F 72 65 20 73 70 61 63 65 20 6F 6E 20 73 74 more space on st
005A30: 61 63 6B 2E 0D 0A 4E 6F 20 6D 6F 72 65 20 72 6F ack...No more ro
005A40: 6F 6D 20 66 6F 72 20 73 74 72 69 6E 67 20 6F 6E om for string on
005A50: 20 73 74 61 63 6B 2E 0D 0A 55 6E 61 62 6C 65 20 stack...Unable
005A60: 74 6F 20 69 6E 69 74 69 61 6C 69 73 65 20 6C 69 to initialise li
005A70: 73 74 2E 0D 0A 55 6E 61 62 6C 65 20 74 6F 20 61 st...Unable to a
005A80: 64 64 20 74 6F 20 6C 69 73 74 2E 0D 0A 4E 6F 20 dd to list...No
005A90: 72 6F 6F 6D 20 66 6F 72 20 73 74 72 69 6E 67 20 room for string
005AA0: 69 6E 20 6C 69 73 74 2E 0D 0A 55 6E 61 62 6C 65 in list...Unable
005AB0: 20 74 6F 20 69 6E 69 74 69 61 6C 69 73 65 20 74 to initialise t
005AC0: 65 78 74 20 62 75 66 66 65 72 2E 0D 0A 50 72 65 ext buffer...Pre
005AD0: 73 73 20 61 6E 79 20 6B 65 79 20 74 6F 20 71 75 ss any key to qu
005AE0: 69 74 2E 0D 0A 50 72 69 6E 74 65 72 20 6E 6F 74 it...Printer not
005AF0: 20 72 65 61 64 79 2E 0D 0A 46 72 65 65 3A 0D 0A ready...Free:..
005B00: 20 20 45 4E 54 45 52 20 2D 20 66 6F 6C 6C 6F 77 ENTER - follow
005B10: 20 6C 69 6E 6B 2C 20 42 20 2D 20 67 6F 20 62 61 link, B - go ba
005B20: 63 6B 2C 20 50 20 2D 20 70 72 69 6E 74 2C 20 48 ck, P - print, H
005B30: 20 2D 20 68 65 6C 70 2C 20 51 20 2D 20 71 75 69 - help, Q - qui
005B40: 74 20 20 0D 0A 59 6F 75 20 63 61 6E 6E 6F 74 20 t ..You cannot
005B50: 67 6F 20 66 75 72 74 68 65 72 20 62 61 63 6B 2E go further back.
005B60: 0D 0A 59 6F 75 20 61 72 65 20 6F 75 74 73 69 64 ..You are outsid
005B70: 65 20 74 68 65 20 74 65 78 74 20 61 72 65 61 2E e the text area.
005B80: 0D 0A 50 6F 73 69 74 69 6F 6E 3A 0D 0A 54 68 65 ..Position:..The
005B90: 72 65 20 69 73 20 6E 6F 20 6C 69 6E 6B 20 74 68 re is no link th
005BA0: 65 72 65 2E 0D 0A 6C 69 6E 6B 73 20 68 65 72 65 ere...links here
005BB0: 2E 0D 0A 4F 75 74 20 6F 66 20 6D 65 6D 6F 72 79 ...Out of memory
005BC0: 20 77 68 65 6E 20 6C 6F 61 64 69 6E 67 20 6C 69 when loading li
005BD0: 6E 6B 62 61 73 65 2E 0D 0A 4C 6F 61 64 69 6E 67 nkbase...Loading
005BE0: 0D 0A 45 72 72 6F 72 20 69 6E 20 6C 69 6E 6B 62 ..Error in linkb
005BF0: 61 73 65 3A 0D 0A 46 20 63 6F 6D 6D 61 6E 64 20 ase:..F command
005C00: 00 00 19 CD 4B 02 CD 6A 02 2A 97 63 11 02 00 19 ....K..j.*.c....
005C10: CD 4B 02 11 04 00 CD 0B 01 EB 2A 97 63 19 ED 5B .K........*.c..[
005C20: 99 63 CD 88 01 7D B4 CA 1D 38 2A 97 63 11 02 00 .c...}...8*.c...
005C30: 19 E5 E5 2A 99 63 11 02 00 19 5E 23 56 E1 CD 4B ...*.c....^#V..K
005C40: 02 19 CD 6A 02 2A 97 63 11 00 00 19 E5 2A 99 63 ...j.*.c.....*.c
005C50: 11 00 00 19 CD 4B 02 CD 6A 02 C3 2B 38 2A 97 63 .....K..j..+8*.c
005C60: 11 00 00 19 E5 2A 99 63 CD 6A 02 2A 97 63 22 F0 .....*.c.j.*.c".
005C70: A1 11 02 00 C3 C4 00 21 00 00 CD 8F 00 21 09 00 .......!.....!..
005C80: E5 CD 4F 00 21 0A 00 E5 CD 4F 00 DD 6E 04 DD 66 ..O.!....O..n..f
005C90: 05 E5 CD 18 0D 11 02 00 C3 C4 00 0A 45 52 52 4F ............ERRO
005CA0: 52 20 45 58 49 54 20 25 64 00 0A 45 58 49 54 20 R EXIT %d..EXIT
005CB0: 4F 4B 00 0A 50 6C 65 61 73 65 20 70 72 65 73 73 OK..Please press
005CC0: 20 61 6E 79 20 6B 65 79 00 26 00 03 44 CB 15 03 any key.&..D...
005CD0: 44 CD 00 03 44 06 00 03 44 28 00 03 44 30 00 03 D...D...D(..D0..
005CE0: 44 04 00 03 44 DD E5 03 44 DD E1 03 44 FD E5 03 D...D...D...D...
005CF0: 44 FD E1 03 44 CD 00 03 44 F3 00 03 44 FB 00 03 D...D...D...D...
005D00: 44 FF 00 03 44 4F 00 03 44 16 00 03 22 E8 09 03 D...DO..D..."...
005D10: 22 F5 09 03 22 FE 09 03 44 1D 00 03 44 46 00 03 "..."...D...DF..
005D20: 44 0D 00 03 4C 64 02 03 44 67 3D 00 00 11 FF 69 D...Ld..Dg=....i
005D30: 6E 74 20 20 20 20 20 00 00 12 FF 6C 6F 6E 67 20 nt ....long
005D40: 20 20 20 00 00 13 FF 72 65 67 69 73 74 65 72 00 ....register.
005D50: 00 14 FF 72 65 74 75 72 6E 20 20 00 00 15 FF 73 ...return ....s
005D60: 68 6F 72 74 20 20 20 00 00 16 FF 73 69 7A 65 6F hort ....sizeo
005D70: 03 00 A3 63 01 00 01 01 00 D2 63 BF 02 00 46 A1 ..£c......c...F.
005D80: 59 0F 00 00 FB A1 0E 07 C3 CE BC 1A 24 FF 00 FF Y...........$...
005D90: 26 B1 0A 12 FD A7 86 22 37 67 CC 80 99 76 6A 33 &......"7g...vj3
005DA0: 97 82 02 F3 2C 0F 96 E7 F3 94 3E A8 60 99 0F 2A ....,.....>.`..*
005DB0: 86 FA 63 80 EA A4 11 53 F3 0D 36 84 C2 AE DD 4D ..c....S..6....M
005DC0: B3 28 F4 6A 2C A1 F8 55 A5 FE 87 FA DB A6 21 AB .(.j,..U......!.
005DD0: 2B 20 A3 5D 76 9A DF 5E B7 D4 9C 12 B3 D0 E3 1B + £]v..^........
005DE0: 69 4F 5E 8E 57 86 95 A4 FC 8D 0E 41 32 B9 15 18 iO^.W......A2...
005DF0: 86 36 1D 38 8D C8 B4 C3 F0 D9 FB B0 34 9D 9E 37 .6.8........4..7
005E00: 74 61 6B 65 73 20 6F 6E 65 20 70 61 72 61 6D 65 takes one parame
005E10: 74 65 72 2E 0D 0A 42 20 63 6F 6D 6D 61 6E 64 20 ter...B command
005E20: 74 61 6B 65 73 20 66 69 76 65 20 70 61 72 61 6D takes five param
005E30: 65 74 65 72 73 2E 0D 0A 75 6E 6B 6E 6F 77 6E 20 eters...unknown
005E40: 63 6F 6D 6D 61 6E 64 2E 0D 0A 46 61 69 6C 65 64 command...Failed
005E50: 20 74 6F 20 6C 6F 61 64 20 66 69 72 73 74 20 66 to load first f
005E60: 69 6C 65 2E 0D 0A 46 69 6C 65 20 65 72 72 6F 72 ile...File error
005E70: 2E 0D 0A 4D 65 6D 6F 72 79 20 65 78 68 61 75 73 ...Memory exhaus
005E80: 74 65 64 2E 0D 0A 43 6F 75 6C 64 20 6E 6F 74 20 ted...Could not
005E90: 66 69 6E 64 0D 0A 28 52 29 65 74 72 79 2C 20 6F find..(R)etry, o
005EA0: 72 20 28 51 29 75 69 74 3F 0D 0A 54 72 79 20 61 r (Q)uit?..Try a
005EB0: 67 61 69 6E 3F 20 28 59 2F 4E 29 0D 0A 52 65 2D gain? (Y/N)..Re-
005EC0: 6C 6F 61 64 69 6E 67 20 6F 6C 64 20 66 69 6C 65 loading old file
005ED0: 2E 0D 0A 1A 63 6B 2E 0D 0A 55 6E 61 62 6C 65 20 ....ck...Unable
005EE0: 74 6F 20 69 6E 69 74 69 61 6C 69 73 65 20 6C 69 to initialise li
005EF0: 73 74 2E 0D 0A 55 6E 61 62 6C 65 20 74 6F 20 61 st...Unable to a
005F00: 31 29 29 0D 0A 33 37 30 20 61 64 64 78 3D 33 2A 1))..370 addx=3*
005F10: 61 64 64 78 0D 0A 33 38 30 20 61 64 64 79 3D 28 addx..380 addy=(
005F20: 49 4E 4B 45 59 28 32 29 3E 2D 31 29 0D 0A 33 39 INKEY(2)>-1)..39
005F30: 30 20 61 64 64 79 3D 61 64 64 79 2D 28 49 4E 4B 0 addy=addy-(INK
005F40: 45 59 28 30 29 3E 2D 31 29 0D 0A 34 30 30 20 61 EY(0)>-1)..400 a
005F50: 64 64 79 3D 61 64 64 79 2A 28 28 49 4E 4B 45 59 ddy=addy*((INKEY
005F60: 28 32 31 29 3D 2D 31 29 2B 32 29 0D 0A 34 31 30 (21)=-1)+2)..410
005F70: 20 61 64 64 79 3D 33 2A 61 64 64 79 0D 0A 34 32 addy=3*addy..42
005F80: 30 20 78 3D 78 2B 61 64 64 78 3A 79 3D 79 2B 61 0 x=x+addx:y=y+a
005F90: 64 64 79 0D 0A 34 32 35 20 52 45 4D 20 43 68 65 ddy..425 REM Che
005FA0: 63 6B 20 78 20 26 20 79 20 61 72 65 20 6F 6E 20 ck x & y are on
005FB0: 73 63 72 65 65 6E 0D 0A 34 33 30 20 78 3D 4D 49 screen..430 x=MI
005FC0: 4E 28 36 33 32 2C 78 29 0D 0A 34 34 30 20 78 3D N(632,x)..440 x=
005FD0: 4D 41 58 28 30 2C 78 29 0D 0A 34 35 30 20 79 3D MAX(0,x)..450 y=
005FE0: 4D 49 4E 28 33 39 39 2C 79 29 0D 0A 34 36 30 20 MIN(399,y)..460
005FF0: 79 3D 4D 41 58 28 31 35 2C 79 29 0D 0A 34 36 35 y=MAX(15,y)..465
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 C7 02 00 00 00 02 ......N.........
006020: 05 00 C3 02 00 00 00 02 05 00 C8 02 00 00 00 02 ................
006030: 05 00 C4 02 00 00 00 02 05 00 C9 02 00 00 00 02 ................
006040: 05 00 C5 02 00 00 00 02 05 00 C1 02 00 00 00 02 ................
006050: 05 00 C6 02 00 00 00 02 05 00 C2 02 00 00 00 02 ................
006060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0060F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
006100: 20 64 65 66 69 6E 69 74 69 6F 6E 73 20 66 6F 72 definitions for
006110: 20 74 68 65 20 34 36 34 20 61 6E 64 20 36 36 34 the 464 and 664
006120: 20 28 73 65 65 20 61 72 74 69 63 6C 65 20 32 31 (see article 21
006130: 29 0D 0A 41 31 34 54 31 09 09 74 61 62 6C 65 20 )..A14T1..table
006140: 66 72 6F 6D 20 61 72 74 69 63 6C 65 20 31 34 20 from article 14
006150: 77 69 74 68 20 73 79 6E 74 61 78 20 6F 66 20 42 with syntax of B
006160: 41 53 49 43 20 31 2E 31 20 63 6F 6D 6D 61 6E 64 ASIC 1.1 command
006170: 73 0D 0A 41 49 31 09 2E 42 41 53 09 6C 69 73 74 s..AI1..BAS.list
006180: 69 6E 67 20 66 72 6F 6D 20 61 72 74 69 63 6C 65 ing from article
006190: 20 31 36 0D 0A 41 49 32 09 2E 42 41 53 09 6C 69 16..AI2..BAS.li
0061A0: 73 74 69 6E 67 20 66 72 6F 6D 20 61 72 74 69 63 sting from artic
0061B0: 6C 65 20 31 36 20 77 69 74 68 20 76 6F 63 61 62 le 16 with vocab
0061C0: 75 6C 61 72 79 20 73 61 76 69 6E 67 0D 0A 41 49 ulary saving..AI
0061D0: 33 09 2E 42 41 53 09 69 6D 70 72 6F 76 65 64 20 3..BAS.improved
0061E0: 76 65 72 73 69 6F 6E 20 6F 66 20 41 49 20 66 72 version of AI fr
0061F0: 6F 6D 20 61 72 74 69 63 6C 65 20 31 37 0D 0A 41 om article 17..A
006200: 49 34 09 2E 42 41 53 09 41 49 20 77 69 74 68 20 I4..BAS.AI with
006210: 61 20 62 69 6E 61 72 79 20 74 72 65 65 20 28 73 a binary tree (s
006220: 65 65 20 61 72 74 69 63 6C 65 20 31 39 29 0D 0A ee article 19)..
006230: 41 49 35 09 2E 42 41 53 09 41 49 20 77 69 74 68 AI5..BAS.AI with
006240: 20 61 20 68 61 73 68 20 74 61 62 6C 65 20 28 66 a hash table (f
006250: 72 6F 6D 20 61 72 74 69 63 6C 65 20 32 30 29 0D rom article 20).
006260: 0A 41 49 36 09 2E 4C 4F 47 09 41 49 20 69 6E 20 .AI6..LOG.AI in
006270: 4C 6F 67 6F 20 2D 20 74 68 65 20 76 65 72 73 69 Logo - the versi
006280: 6F 6E 20 70 75 62 6C 69 73 68 65 64 20 69 6E 20 on published in
006290: 57 41 43 43 49 0D 0A 41 49 37 09 2E 4C 4F 47 09 WACCI..AI7..LOG.
0062A0: 41 49 20 69 6E 20 4C 6F 67 6F 20 2D 20 61 6E 20 AI in Logo - an
0062B0: 69 6D 70 72 6F 76 65 64 20 76 65 72 73 69 6F 6E improved version
0062C0: 20 75 73 69 6E 67 20 70 72 6F 70 65 72 74 79 20 using property
0062D0: 6C 69 73 74 73 0D 0A 4C 49 53 54 45 58 09 2E 42 lists..LISTEX..B
0062E0: 41 53 09 65 78 61 6D 70 6C 65 20 6C 69 6E 6B 65 AS.example linke
0062F0: 64 20 6C 69 73 74 20 66 72 6F 6D 20 61 72 74 69 d list from arti
006300: 63 6C 65 20 39 20 20 2D 20 61 20 63 61 72 64 20 cle 9 - a card
006310: 67 61 6D 65 0D 0A 41 72 74 69 63 6C 65 20 31 30 game..Article 10
006320: 20 2D 20 70 72 6F 67 72 61 6D 6D 69 6E 67 20 61 - programming a
006330: 20 4D 49 44 49 20 69 6E 74 65 72 66 61 63 65 0D MIDI interface.
006340: 0A 41 72 74 69 63 6C 65 20 31 31 20 20 20 2D 20 .Article 11 -
006350: 74 68 65 20 6D 61 69 6E 20 4D 49 44 49 20 6D 65 the main MIDI me
006360: 73 73 61 67 65 73 2C 20 61 6E 64 20 61 6E 20 52 ssages, and an R
006370: 53 58 20 74 6F 20 73 65 6E 64 20 74 68 65 6D 0D SX to send them.
006380: 0A 0D 0A 54 75 72 6E 20 74 68 65 20 64 69 73 63 ...Turn the disc
006390: 20 6F 76 65 72 20 62 65 66 6F 72 65 20 66 6F 6C over before fol
0063A0: 6C 6F 77 69 6E 67 20 74 68 65 73 65 20 6C 69 6E lowing these lin
0063B0: 6B 73 3A 0D 0A 0D 0A 41 72 74 69 63 6C 65 20 31 ks:....Article 1
0063C0: 32 20 20 20 2D 20 6F 74 68 65 72 20 4D 49 44 49 2 - other MIDI
0063D0: 20 6D 65 73 73 61 67 65 73 2C 20 61 6E 64 20 61 messages, and a
0063E0: 20 70 72 6F 67 72 61 6D 20 74 6F 20 70 6C 61 79 program to play
0063F0: 20 61 20 74 75 6E 65 0D 0A 41 72 74 69 63 6C 65 a tune..Article
006400: 20 31 33 20 2D 20 68 6F 77 20 74 6F 20 61 64 61 13 - how to ada
006410: 70 74 20 36 31 32 38 20 70 72 6F 67 72 61 6D 73 pt 6128 programs
006420: 20 66 6F 72 20 74 68 65 20 34 36 34 2C 20 77 69 for the 464, wi
006430: 74 68 20 61 6E 20 52 53 58 20 74 6F 20 68 65 6C th an RSX to hel
006440: 70 0D 0A 41 72 74 69 63 6C 65 20 31 34 20 20 20 p..Article 14
006450: 2D 20 63 6F 6D 6D 61 6E 64 73 20 61 64 64 65 64 - commands added
006460: 20 69 6E 20 42 41 53 49 43 20 31 2E 31 2C 20 61 in BASIC 1.1, a
006470: 6E 64 20 77 68 61 74 20 74 6F 20 64 6F 20 77 69 nd what to do wi
006480: 74 68 20 6D 6F 73 74 20 6F 66 20 74 68 65 6D 0D th most of them.
006490: 0A 41 72 74 69 63 6C 65 20 31 35 20 20 20 2D 20 .Article 15 -
0064A0: 62 75 67 73 20 69 6E 20 34 36 34 20 42 41 53 49 bugs in 464 BASI
0064B0: 43 2C 20 61 6E 64 20 68 6F 77 20 74 6F 20 64 65 C, and how to de
0064C0: 61 6C 20 77 69 74 68 20 74 68 65 6D 0D 0A 41 72 al with them..Ar
0064D0: 74 69 63 6C 65 20 31 36 20 2D 20 41 49 3A 20 61 ticle 16 - AI: a
0064E0: 6E 20 22 61 72 74 69 66 69 63 69 61 6C 20 69 6E n "artificial in
0064F0: 74 65 6C 6C 69 67 65 6E 63 65 22 20 63 6F 6E 76 telligence" conv
006500: 23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61 #Programmers' Pa
006510: 74 63 68 20 31 20 2D 20 57 41 43 43 49 20 31 30 tch 1 - WACCI 10
006520: 39 2C 20 46 65 62 20 31 39 39 37 2C 20 70 2E 20 9, Feb 1997, p.
006530: 36 2D 37 0D 0A 20 20 20 50 52 4F 47 52 41 4D 4D 6-7.. PROGRAMM
006540: 45 52 53 27 20 50 41 54 43 48 20 31 0D 0A 20 20 ERS' PATCH 1..
006550: 20 42 79 20 4D 61 74 74 68 65 77 20 61 6E 64 20 By Matthew and
006560: 53 74 65 70 68 65 6E 20 50 68 69 6C 6C 69 70 73 Stephen Phillips
006570: 0D 0A 0D 0A 20 20 20 54 68 69 73 20 6E 65 77 20 .... This new
006580: 73 65 72 69 65 73 20 61 69 6D 73 20 20 74 6F 20 series aims to
006590: 20 6F 66 66 65 72 20 20 61 20 20 73 6D 6F 72 67 offer a smorg
0065A0: 61 73 62 6F 72 64 20 6F 66 20 70 72 6F 67 72 61 asbord of progra
0065B0: 6D 6D 69 6E 67 20 64 65 6C 69 63 61 63 69 65 73 mming delicacies
0065C0: 2C 0D 0A 20 20 20 6A 75 67 67 6C 69 6E 67 20 20 ,.. juggling
0065D0: 74 68 6F 73 65 20 20 68 6F 74 20 20 70 6F 74 61 those hot pota
0065E0: 74 6F 65 73 20 20 20 6F 66 20 20 20 65 66 66 69 toes of effi
0065F0: 63 69 65 6E 63 79 20 20 76 65 72 73 75 73 20 20 ciency versus
006600: 72 65 61 64 61 62 69 6C 69 74 79 2C 20 20 6F 66 readability, of
006610: 0D 0A 20 20 20 63 6F 6D 70 61 63 74 69 74 75 64 .. compactitud
006620: 65 20 76 65 72 73 75 73 20 70 65 72 61 6D 62 75 e versus perambu
006630: 6C 61 74 6F 72 79 20 65 78 65 63 75 74 69 6F 6E latory execution
006640: 2C 20 61 6E 64 20 20 65 76 65 72 20 73 65 61 72 , and ever sear
006650: 63 68 69 6E 67 20 66 6F 72 20 61 20 75 73 65 0D ching for a use.
006660: 0A 20 20 20 6F 66 20 74 68 65 20 43 52 45 41 4C . of the CREAL
006670: 20 66 75 6E 63 74 69 6F 6E 2C 20 79 65 74 20 20 function, yet
006680: 77 69 74 68 6F 75 74 20 20 77 61 73 74 69 6E 67 without wasting
006690: 20 20 61 6E 20 20 6F 70 70 6F 72 74 75 6E 69 74 an opportunit
0066A0: 79 20 6F 66 20 75 73 69 6E 67 20 6F 75 72 0D 0A y of using our..
0066B0: 20 20 20 74 68 65 73 61 75 72 75 73 2E 20 20 4D thesaurus. M
0066C0: 61 6E 79 20 6F 66 20 79 6F 75 20 77 69 6C 6C 20 any of you will
0066D0: 68 61 76 65 20 66 6F 6C 6C 6F 77 65 64 20 41 6C have followed Al
0066E0: 61 6E 20 54 69 6C 6C 69 6E 67 27 73 20 56 65 72 an Tilling's Ver
0066F0: 79 20 42 61 73 69 63 20 42 61 73 69 63 0D 0A 20 y Basic Basic..
006700: 65 72 73 61 74 69 6F 6E 20 70 72 6F 67 72 61 6D ersation program
006710: 0D 0A 41 72 74 69 63 6C 65 20 31 37 20 20 20 2D ..Article 17 -
006720: 20 69 6D 70 72 6F 76 69 6E 67 20 74 68 65 20 70 improving the p
006730: 72 6F 67 72 61 6D 20 75 73 69 6E 67 20 61 20 6C rogram using a l
006740: 69 6E 6B 65 64 20 6C 69 73 74 0D 0A 41 72 74 69 inked list..Arti
006750: 63 6C 65 20 31 38 20 20 20 2D 20 6D 6F 72 65 20 cle 18 - more
006760: 61 62 6F 75 74 20 6C 69 6E 6B 65 64 20 6C 69 73 about linked lis
006770: 74 73 2C 20 61 6E 64 20 4D 72 20 42 6C 61 63 6B ts, and Mr Black
006780: 20 74 68 65 20 6E 65 77 73 61 67 65 6E 74 0D 0A the newsagent..
006790: 41 72 74 69 63 6C 65 20 31 39 20 20 20 2D 20 69 Article 19 - i
0067A0: 6D 70 72 6F 76 69 6E 67 20 73 65 61 72 63 68 20 mproving search
0067B0: 73 70 65 65 64 73 20 77 69 74 68 20 62 69 6E 61 speeds with bina
0067C0: 72 79 20 74 72 65 65 73 0D 0A 41 72 74 69 63 6C ry trees..Articl
0067D0: 65 20 32 30 20 20 20 2D 20 75 73 69 6E 67 20 68 e 20 - using h
0067E0: 61 73 68 20 74 61 62 6C 65 73 20 74 6F 20 72 65 ash tables to re
0067F0: 64 75 63 65 20 73 65 61 72 63 68 69 6E 67 20 74 duce searching t
006800: 69 6D 65 0D 0A 41 72 74 69 63 6C 65 20 32 31 20 ime..Article 21
006810: 20 20 2D 20 41 49 20 69 6E 20 4C 6F 67 6F 0D 0A - AI in Logo..
006820: 0D 0A 4F 74 68 65 72 20 66 69 6C 65 73 20 6F 6E ..Other files on
006830: 20 62 6F 74 68 20 73 69 64 65 73 20 6F 66 20 74 both sides of t
006840: 68 65 20 64 69 73 63 3A 0D 0A 0D 0A 44 49 53 43 he disc:....DISC
006850: 09 2E 42 41 53 09 72 75 6E 73 20 74 68 65 20 4C ..BAS.runs the L
006860: 6F 6F 6D 20 68 79 70 65 72 74 65 78 74 20 76 69 oom hypertext vi
006870: 65 77 65 72 0D 0A 48 45 4C 50 09 2E 54 58 54 09 ewer..HELP..TXT.
006880: 74 68 65 20 68 65 6C 70 20 74 65 78 74 20 66 6F the help text fo
006890: 72 20 4C 6F 6F 6D 0D 0A 4C 49 4E 4B 42 41 53 45 r Loom..LINKBASE
0068A0: 2E 54 58 54 09 74 68 65 20 6C 69 6E 6B 61 67 65 .TXT.the linkage
0068B0: 20 64 61 74 61 20 66 6F 72 20 4C 6F 6F 6D 0D 0A data for Loom..
0068C0: 4C 4F 4F 4D 09 2E 42 49 4E 09 74 68 65 20 4C 6F LOOM..BIN.the Lo
0068D0: 6F 6D 20 70 72 6F 67 72 61 6D 0D 0A 4D 45 53 53 om program..MESS
0068E0: 41 47 45 53 2E 54 58 54 09 74 68 65 20 6D 65 73 AGES.TXT.the mes
0068F0: 73 61 67 65 20 74 65 78 74 73 20 66 6F 72 20 4C sage texts for L
006900: 20 20 73 65 72 69 65 73 2C 20 20 61 6E 64 20 20 series, and
006910: 77 65 20 20 68 6F 70 65 20 20 74 68 61 74 20 20 we hope that
006920: 79 6F 75 20 20 20 6E 6F 77 20 20 66 65 65 6C 20 you now feel
006930: 20 72 65 61 64 79 20 20 66 6F 72 20 20 73 6F 6D ready for som
006940: 65 74 68 69 6E 67 20 20 6D 6F 72 65 0D 0A 20 20 ething more..
006950: 20 61 64 76 65 6E 74 75 72 6F 75 73 2E 0D 0A 0D adventurous....
006960: 0A 20 20 20 52 55 4E 22 41 52 54 49 43 4C 45 0D . RUN"ARTICLE.
006970: 0A 20 20 20 57 65 20 61 72 65 20 67 6F 69 6E 67 . We are going
006980: 20 74 6F 20 73 74 61 72 74 20 62 79 20 6C 6F 6F to start by loo
006990: 6B 69 6E 67 20 20 61 74 20 20 61 20 20 70 72 6F king at a pro
0069A0: 67 72 61 6D 20 77 72 69 74 74 65 6E 20 62 79 20 gram written by
0069B0: 53 74 65 70 68 65 6E 20 69 6E 20 74 68 65 0D 0A Stephen in the..
0069C0: 20 20 20 64 61 79 73 20 77 68 65 6E 20 43 6F 6D days when Com
0069D0: 70 75 74 69 6E 67 20 77 69 74 68 20 74 68 65 20 puting with the
0069E0: 20 41 6D 73 74 72 61 64 20 20 68 61 64 20 20 61 Amstrad had a
0069F0: 20 20 22 74 65 6E 2D 6C 69 6E 65 72 73 22 20 73 "ten-liners" s
006A00: 6C 6F 74 20 66 6F 72 20 73 68 6F 72 74 0D 0A 20 lot for short..
006A10: 20 20 42 41 53 49 43 20 70 72 6F 67 72 61 6D 73 BASIC programs
006A20: 2E 20 20 54 68 69 73 20 77 61 73 6E 27 74 20 6F . This wasn't o
006A30: 6E 65 20 20 6F 66 20 20 74 68 65 6D 2E 20 20 20 ne of them.
006A40: 44 6F 6E 27 74 20 20 67 65 74 20 73 63 61 72 65 Don't get scare
006A50: 64 20 6F 66 66 20 62 79 20 74 68 65 0D 0A 20 20 d off by the..
006A60: 20 68 6F 72 72 69 62 6C 65 20 6C 69 73 74 69 6E horrible listin
006A70: 67 2C 20 61 73 20 61 6C 6C 20 77 69 6C 6C 20 73 g, as all will s
006A80: 6F 6F 6E 20 62 65 63 6F 6D 65 20 61 73 20 63 6C oon become as cl
006A90: 65 61 72 20 61 73 20 6A 65 6C 6C 79 2E 0D 0A 20 ear as jelly...
006AA0: 20 20 20 20 49 66 20 79 6F 75 20 66 65 65 6C 20 If you feel
006AB0: 6C 69 6B 65 20 69 74 2C 20 79 6F 75 20 63 6F 75 like it, you cou
006AC0: 6C 64 20 74 79 70 65 20 20 69 6E 20 74 68 65 20 ld type in the
006AD0: 70 72 6F 67 72 61 6D 20 6C 69 73 74 69 6E 67 20 program listing
006AE0: 69 6E 20 46 69 67 75 72 65 20 31 2E 0D 0A 20 20 in Figure 1...
006AF0: 20 3C 3C 49 74 20 68 61 73 20 62 65 65 6E 20 73 <<It has been s
006B00: 6F 6F 6D 0D 0A 52 45 41 44 4D 45 09 2E 09 74 68 oom..README...th
006B10: 69 73 20 66 69 6C 65 0D 0A 0D 0A 4F 74 68 65 72 is file....Other
006B20: 20 66 69 6C 65 73 20 6F 6E 20 73 69 64 65 20 41 files on side A
006B30: 20 6F 66 20 74 68 65 20 64 69 73 63 3A 0D 0A 0D of the disc:...
006B40: 0A 42 53 49 44 45 09 2E 42 41 53 09 74 68 65 20 .BSIDE..BAS.the
006B50: 42 53 49 44 45 20 70 72 6F 67 72 61 6D 20 66 6F BSIDE program fo
006B60: 72 20 63 6F 70 79 69 6E 67 20 73 69 64 65 20 42 r copying side B
006B70: 0D 0A 42 53 49 44 45 09 2E 42 49 4E 09 64 69 74 ..BSIDE..BIN.dit
006B80: 74 6F 0D 0A 44 49 53 43 4D 45 4E 55 2E 42 41 53 to..DISCMENU.BAS
006B90: 09 74 68 65 20 70 72 6F 67 72 61 6D 20 66 65 61 .the program fea
006BA0: 74 75 72 65 64 20 69 6E 20 61 72 74 69 63 6C 65 tured in article
006BB0: 73 20 31 2C 32 2C 34 20 61 6E 64 20 35 0D 0A 46 s 1,2,4 and 5..F
006BC0: 49 47 31 36 31 09 2E 09 73 75 62 72 6F 75 74 69 IG161...subrouti
006BD0: 6E 65 20 66 65 61 74 75 72 65 64 20 69 6E 20 61 ne featured in a
006BE0: 72 74 69 63 6C 65 20 32 0D 0A 46 49 47 31 36 31 rticle 2..FIG161
006BF0: 38 20 2E 09 61 6E 6F 74 68 65 72 20 73 75 62 72 8 ..another subr
006C00: 6F 75 74 69 6E 65 20 66 65 61 74 75 72 65 64 20 outine featured
006C10: 69 6E 20 61 72 74 69 63 6C 65 20 32 0D 0A 46 49 in article 2..FI
006C20: 47 32 09 2E 09 61 6E 20 65 78 61 6D 70 6C 65 20 G2...an example
006C30: 66 72 6F 6D 20 61 72 74 69 63 6C 65 20 33 0D 0A from article 3..
006C40: 46 49 47 32 37 09 2E 09 61 6E 6F 74 68 65 72 20 FIG27...another
006C50: 65 78 61 6D 70 6C 65 20 66 72 6F 6D 20 61 72 74 example from art
006C60: 69 63 6C 65 20 33 0D 0A 46 49 47 32 37 31 09 2E icle 3..FIG271..
006C70: 09 61 6E 20 65 78 61 6D 70 6C 65 20 66 72 6F 6D .an example from
006C80: 20 61 72 74 69 63 6C 65 73 20 33 20 61 6E 64 20 articles 3 and
006C90: 34 0D 0A 46 49 47 32 37 31 38 09 2E 09 61 6E 6F 4..FIG2718...ano
006CA0: 74 68 65 72 20 65 78 61 6D 70 6C 65 20 66 72 6F ther example fro
006CB0: 6D 20 61 72 74 69 63 6C 65 20 34 0D 0A 4D 45 4E m article 4..MEN
006CC0: 55 45 58 31 09 2E 42 41 53 09 74 68 65 20 6C 69 UEX1..BAS.the li
006CD0: 73 74 69 6E 67 20 66 72 6F 6D 20 61 72 74 69 63 sting from artic
006CE0: 6C 65 20 36 0D 0A 4D 45 4E 55 45 58 32 09 2E 42 le 6..MENUEX2..B
006CF0: 41 53 09 6C 69 73 74 69 6E 67 20 31 20 66 72 6F AS.listing 1 fro
006D00: 20 72 65 61 64 20 74 68 65 20 61 72 74 69 63 6C read the articl
006D10: 65 73 20 62 79 20 75 73 69 6E 67 20 74 68 65 20 es by using the
006D20: 4C 6F 6F 6D 20 68 79 70 65 72 74 65 78 74 20 76 Loom hypertext v
006D30: 69 65 77 65 72 2C 20 77 68 69 63 68 20 77 69 6C iewer, which wil
006D40: 6C 20 61 6C 73 6F 0D 0A 70 72 69 6E 74 20 74 68 l also..print th
006D50: 65 6D 20 6F 75 74 20 69 66 20 79 6F 75 20 68 61 em out if you ha
006D60: 76 65 20 61 20 70 72 69 6E 74 65 72 2E 20 20 54 ve a printer. T
006D70: 6F 20 64 6F 20 74 68 69 73 2C 20 6A 75 73 74 20 o do this, just
006D80: 52 55 4E 22 44 49 53 43 20 61 6E 64 20 4C 6F 6F RUN"DISC and Loo
006D90: 6D 20 77 69 6C 6C 0D 0A 73 74 61 72 74 20 75 70 m will..start up
006DA0: 2E 20 20 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 . The following
006DB0: 20 68 65 61 64 69 6E 67 73 20 74 68 65 6E 20 62 headings then b
006DC0: 65 63 6F 6D 65 20 68 79 70 65 72 6C 69 6E 6B 73 ecome hyperlinks
006DD0: 20 77 68 69 63 68 20 63 61 6E 20 62 65 20 66 6F which can be fo
006DE0: 6C 6C 6F 77 65 64 0D 0A 62 79 20 6D 6F 76 69 6E llowed..by movin
006DF0: 67 20 74 68 65 20 63 75 72 73 6F 72 20 6F 76 65 g the cursor ove
006E00: 72 20 74 68 65 20 6C 69 6E 6B 20 61 6E 64 20 70 r the link and p
006E10: 72 65 73 73 69 6E 67 20 45 4E 54 45 52 2E 0D 0A ressing ENTER...
006E20: 0D 0A 54 68 65 20 61 72 74 69 63 6C 65 73 20 63 ..The articles c
006E30: 61 6E 20 61 6C 73 6F 20 62 65 20 76 69 65 77 65 an also be viewe
006E40: 64 20 77 69 74 68 20 61 20 74 65 78 74 20 65 64 d with a text ed
006E50: 69 74 6F 72 20 6F 72 20 77 6F 72 64 70 72 6F 63 itor or wordproc
006E60: 65 73 73 6F 72 20 73 75 63 68 20 61 73 0D 0A 50 essor such as..P
006E70: 72 6F 74 65 78 74 2E 0D 0A 0D 0A 49 66 20 74 68 rotext.....If th
006E80: 69 73 20 68 61 73 20 62 65 65 6E 20 73 75 70 70 is has been supp
006E90: 6C 69 65 64 20 6F 6E 20 61 20 33 2E 35 22 20 64 lied on a 3.5" d
006EA0: 69 73 63 20 61 6E 64 20 79 6F 75 20 64 6F 20 6E isc and you do n
006EB0: 6F 74 20 68 61 76 65 20 61 20 73 69 64 65 20 73 ot have a side s
006EC0: 77 69 74 63 68 2C 0D 0A 52 55 4E 22 42 53 49 44 witch,..RUN"BSID
006ED0: 45 20 74 6F 20 63 6F 70 79 20 74 68 65 20 42 20 E to copy the B
006EE0: 73 69 64 65 20 6F 66 20 74 68 65 20 64 69 73 63 side of the disc
006EF0: 20 6F 6E 74 6F 20 61 20 64 69 73 63 20 69 6E 20 onto a disc in
006F00: 6D 20 61 72 74 69 63 6C 65 20 37 0D 0A 4D 45 4E m article 7..MEN
006F10: 55 45 58 33 20 2E 42 41 53 09 6C 69 73 74 69 6E UEX3 .BAS.listin
006F20: 67 20 32 20 66 72 6F 6D 20 61 72 74 69 63 6C 65 g 2 from article
006F30: 20 37 0D 0A 4D 45 4E 55 45 58 34 20 2E 42 41 53 7..MENUEX4 .BAS
006F40: 09 6C 69 73 74 69 6E 67 20 32 20 6D 6F 64 69 66 .listing 2 modif
006F50: 69 65 64 20 74 6F 20 75 73 65 20 74 68 65 20 53 ied to use the S
006F60: 48 49 46 54 20 6B 65 79 0D 0A 4D 45 4E 55 53 55 HIFT key..MENUSU
006F70: 42 20 2E 09 74 68 65 20 6D 65 6E 75 20 73 75 62 B ..the menu sub
006F80: 72 6F 75 74 69 6E 65 20 66 65 61 74 75 72 65 64 routine featured
006F90: 20 69 6E 20 61 72 74 69 63 6C 65 73 20 36 2D 38 in articles 6-8
006FA0: 0D 0A 4D 49 44 49 31 09 2E 42 41 53 09 6C 69 73 ..MIDI1..BAS.lis
006FB0: 74 69 6E 67 20 66 72 6F 6D 20 61 72 74 69 63 6C ting from articl
006FC0: 65 20 31 30 3A 20 61 20 70 72 6F 67 72 61 6D 20 e 10: a program
006FD0: 74 6F 20 70 6C 61 79 20 61 20 6D 69 64 64 6C 65 to play a middle
006FE0: 20 43 0D 0A 50 45 4C 4D 41 4E 09 2E 42 41 53 09 C..PELMAN..BAS.
006FF0: 74 68 65 20 63 61 72 64 20 67 61 6D 65 20 66 65 the card game fe
007000: 61 74 75 72 65 64 20 69 6E 20 61 72 74 69 63 6C atured in articl
007010: 65 20 39 0D 0A 53 45 4E 44 09 2E 41 53 4D 09 61 e 9..SEND..ASM.a
007020: 73 73 65 6D 62 6C 79 20 6C 69 73 74 69 6E 67 20 ssembly listing
007030: 66 6F 72 20 4D 49 44 49 20 7C 53 45 4E 44 20 52 for MIDI |SEND R
007040: 53 58 0D 0A 53 45 4E 44 09 2E 42 41 53 09 42 41 SX..SEND..BAS.BA
007050: 53 49 43 20 6C 6F 61 64 65 72 20 66 6F 72 20 4D SIC loader for M
007060: 49 44 49 20 7C 53 45 4E 44 20 52 53 58 20 28 73 IDI |SEND RSX (s
007070: 65 65 20 61 72 74 69 63 6C 65 20 31 31 29 0D 0A ee article 11)..
007080: 0D 0A 4F 74 68 65 72 20 66 69 6C 65 73 20 6F 6E ..Other files on
007090: 20 73 69 64 65 20 42 20 6F 66 20 74 68 65 20 64 side B of the d
0070A0: 69 73 63 3A 0D 0A 0D 0A 34 36 34 52 53 58 09 2E isc:....464RSX..
0070B0: 42 41 53 09 6C 69 73 74 69 6E 67 20 31 20 66 72 BAS.listing 1 fr
0070C0: 6F 6D 20 61 72 74 69 63 6C 65 20 31 35 20 77 68 om article 15 wh
0070D0: 69 63 68 20 69 6D 70 72 6F 76 65 73 20 34 36 34 ich improves 464
0070E0: 20 52 53 58 20 68 61 6E 64 6C 69 6E 67 0D 0A 36 RSX handling..6
0070F0: 34 4B 42 49 54 53 09 2E 4C 4F 47 09 4C 6F 67 6F 4KBITS..LOG.Logo
007100: 79 6F 75 72 20 41 20 64 72 69 76 65 2E 0D 0A 0D your A drive....
007110: 0A 4C 69 6E 6B 73 20 74 6F 20 61 72 74 69 63 6C .Links to articl
007120: 65 73 20 6F 6E 20 74 68 69 73 20 73 69 64 65 20 es on this side
007130: 6F 66 20 74 68 65 20 64 69 73 63 3A 20 20 20 20 of the disc:
007140: 20 0D 0A 0D 0A 41 72 74 69 63 6C 65 20 31 20 20 ....Article 1
007150: 2D 20 69 6E 74 72 6F 64 75 63 69 6E 67 20 61 20 - introducing a
007160: 64 69 73 63 20 6D 65 6E 75 0D 0A 41 72 74 69 63 disc menu..Artic
007170: 6C 65 20 32 20 20 20 20 2D 20 6C 69 6E 65 20 34 le 2 - line 4
007180: 30 2C 20 74 65 73 74 69 6E 67 20 6B 65 79 73 20 0, testing keys
007190: 61 6E 64 20 6D 6F 76 69 6E 67 20 74 68 65 20 63 and moving the c
0071A0: 75 72 73 6F 72 0D 0A 41 72 74 69 63 6C 65 20 33 ursor..Article 3
0071B0: 20 20 20 20 2D 20 67 65 74 74 69 6E 67 20 42 41 - getting BA
0071C0: 53 49 43 20 61 6E 64 20 6D 61 63 68 69 6E 65 20 SIC and machine
0071D0: 63 6F 64 65 20 74 6F 20 77 6F 72 6B 20 74 6F 67 code to work tog
0071E0: 65 74 68 65 72 20 28 70 61 72 74 20 31 29 0D 0A ether (part 1)..
0071F0: 41 72 74 69 63 6C 65 20 34 20 20 20 20 2D 20 70 Article 4 - p
007200: 61 72 74 20 32 2C 20 61 6E 64 20 74 68 65 20 6D art 2, and the m
007210: 61 63 68 69 6E 65 20 63 6F 64 65 20 66 72 6F 6D achine code from
007220: 20 74 68 65 20 64 69 73 63 20 6D 65 6E 75 0D 0A the disc menu..
007230: 41 72 74 69 63 6C 65 20 35 20 20 20 20 2D 20 66 Article 5 - f
007240: 69 6E 61 6C 20 61 72 74 69 63 6C 65 20 6F 6E 20 inal article on
007250: 74 68 65 20 64 69 73 63 20 6D 65 6E 75 0D 0A 41 the disc menu..A
007260: 72 74 69 63 6C 65 20 36 20 20 2D 20 61 20 67 65 rticle 6 - a ge
007270: 6E 65 72 61 6C 20 70 75 72 70 6F 73 65 20 6D 65 neral purpose me
007280: 6E 75 20 73 75 62 72 6F 75 74 69 6E 65 0D 0A 41 nu subroutine..A
007290: 72 74 69 63 6C 65 20 37 20 20 20 20 2D 20 68 6F rticle 7 - ho
0072A0: 77 20 74 6F 20 67 65 74 20 74 68 65 20 6D 6F 73 w to get the mos
0072B0: 74 20 6F 75 74 20 6F 66 20 74 68 65 20 6D 65 6E t out of the men
0072C0: 75 20 73 75 62 72 6F 75 74 69 6E 65 0D 0A 41 72 u subroutine..Ar
0072D0: 74 69 63 6C 65 20 38 20 20 20 20 2D 20 68 6F 77 ticle 8 - how
0072E0: 20 74 68 65 20 6D 65 6E 75 20 73 75 62 72 6F 75 the menu subrou
0072F0: 74 69 6E 65 20 77 6F 72 6B 73 0D 0A 41 72 74 69 tine works..Arti
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 C1 02 00 00 00 02 ......N.........
007320: 06 00 C6 02 00 00 00 02 06 00 C2 02 00 00 00 02 ................
007330: 06 00 C7 02 00 00 00 02 06 00 C3 02 00 00 00 02 ................
007340: 06 00 C8 02 00 00 00 02 06 00 C4 02 00 00 00 02 ................
007350: 06 00 C9 02 00 00 00 02 06 00 C5 02 00 00 00 02 ................
007360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0073F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
007400: 61 76 65 64 20 6F 6E 20 74 68 65 20 64 69 73 63 aved on the disc
007410: 20 61 73 20 44 49 53 43 4D 45 4E 55 2E 42 41 53 as DISCMENU.BAS
007420: 3E 3E 20 20 20 59 6F 75 20 6D 69 67 68 74 20 65 >> You might e
007430: 76 65 6E 20 66 69 6E 64 20 69 74 0D 0A 20 20 20 ven find it..
007440: 75 73 65 66 75 6C 2C 20 61 6E 64 20 69 74 20 20 useful, and it
007450: 69 73 20 6F 6E 6C 79 20 20 65 69 67 68 74 20 6C is only eight l
007460: 69 6E 65 73 20 20 61 66 74 65 72 20 20 61 6C 6C ines after all
007470: 2E 20 20 20 54 68 65 20 70 72 6F 67 72 61 6D 20 . The program
007480: 64 69 73 70 6C 61 79 73 20 61 0D 0A 20 20 20 63 displays a.. c
007490: 61 74 61 6C 6F 67 75 65 20 6F 66 20 74 68 65 20 atalogue of the
0074A0: 64 69 73 63 2C 20 20 61 6E 64 20 61 6C 6C 6F 77 disc, and allow
0074B0: 73 20 79 6F 75 20 74 6F 20 63 68 6F 6F 73 65 20 s you to choose
0074C0: 61 20 66 69 6C 65 20 74 6F 20 72 75 6E 20 62 79 a file to run by
0074D0: 20 6D 6F 76 69 6E 67 20 61 0D 0A 20 20 20 70 6F moving a.. po
0074E0: 69 6E 74 65 72 20 20 61 72 6F 75 6E 64 20 20 77 inter around w
0074F0: 69 74 68 20 20 74 68 65 20 20 63 75 72 73 6F 72 ith the cursor
007500: 20 6B 65 79 73 2E 20 20 48 6F 6C 64 69 6E 67 20 keys. Holding
007510: 64 6F 77 6E 20 53 48 49 46 54 20 77 69 6C 6C 20 down SHIFT will
007520: 6D 61 6B 65 20 74 68 65 0D 0A 20 20 20 70 6F 69 make the.. poi
007530: 6E 74 65 72 20 6D 6F 76 65 20 66 61 73 74 65 72 nter move faster
007540: 2E 20 20 20 54 68 65 20 20 66 69 6C 65 20 69 73 . The file is
007550: 20 20 73 65 6C 65 63 74 65 64 20 20 62 79 20 70 selected by p
007560: 72 65 73 73 69 6E 67 20 20 43 4F 50 59 2C 20 53 ressing COPY, S
007570: 50 41 43 45 20 6F 72 0D 0A 20 20 20 45 4E 54 45 PACE or.. ENTE
007580: 52 20 28 6B 6E 6F 77 6E 20 61 73 20 52 45 54 55 R (known as RETU
007590: 52 4E 20 74 6F 20 20 79 6F 75 20 36 31 32 38 20 RN to you 6128
0075A0: 75 73 65 72 73 20 6F 75 74 20 74 68 65 72 65 29 users out there)
0075B0: 2E 20 20 59 6F 75 20 63 61 6E 20 63 68 61 6E 67 . You can chang
0075C0: 65 20 74 6F 20 61 0D 0A 20 20 20 64 69 66 66 65 e to a.. diffe
0075D0: 72 65 6E 74 20 75 73 65 72 20 61 72 65 61 20 62 rent user area b
0075E0: 79 20 6D 6F 76 69 6E 67 20 74 68 65 20 70 6F 69 y moving the poi
0075F0: 6E 74 65 72 20 75 70 20 74 6F 20 74 68 65 20 77 nter up to the w
007600: 72 75 6E 20 69 74 2E 20 20 4F 74 68 65 72 77 69 run it. Otherwi
007610: 73 65 20 77 65 20 70 72 6F 63 65 65 64 20 74 6F se we proceed to
007620: 2E 2E 2E 0D 0A 0D 0A 20 20 20 36 30 20 77 68 69 ....... 60 whi
007630: 63 68 20 61 73 6B 73 20 66 6F 72 20 74 68 65 20 ch asks for the
007640: 6E 65 77 20 75 73 65 72 20 6E 75 6D 62 65 72 2C new user number,
007650: 20 63 68 61 6E 67 65 73 20 74 6F 20 69 74 2C 20 changes to it,
007660: 61 6E 64 20 72 65 63 61 74 61 6C 6F 67 75 65 73 and recatalogues
007670: 20 74 68 65 0D 0A 20 20 20 20 20 20 64 69 73 63 the.. disc
007680: 2E 20 20 54 68 65 20 57 48 49 4C 45 2D 57 45 4E . The WHILE-WEN
007690: 44 20 6C 6F 6F 70 20 68 65 72 65 20 65 6E 73 75 D loop here ensu
0076A0: 72 65 73 20 74 68 61 74 20 74 68 65 20 69 6E 70 res that the inp
0076B0: 75 74 20 69 73 20 62 65 74 77 65 65 6E 20 30 20 ut is between 0
0076C0: 61 6E 64 0D 0A 20 20 20 20 20 20 31 35 2E 0D 0A and.. 15...
0076D0: 0D 0A 20 20 20 37 30 20 69 73 20 74 68 65 20 57 .. 70 is the W
0076E0: 45 4E 44 20 77 68 69 63 68 20 77 69 6C 6C 20 73 END which will s
0076F0: 65 6E 64 20 75 73 20 62 61 63 6B 20 74 6F 20 6C end us back to l
007700: 69 6E 65 20 33 30 2C 20 72 65 61 64 79 20 74 6F ine 30, ready to
007710: 20 73 74 61 72 74 20 61 67 61 69 6E 2E 0D 0A 0D start again....
007720: 0A 20 20 20 38 30 20 69 73 20 61 20 73 75 62 72 . 80 is a subr
007730: 6F 75 74 69 6E 65 20 77 68 69 63 68 20 77 61 69 outine which wai
007740: 74 73 20 75 6E 74 69 6C 20 6E 6F 6E 65 20 20 6F ts until none o
007750: 66 20 74 68 65 20 73 65 6C 65 63 74 69 6F 6E 20 f the selection
007760: 6B 65 79 73 20 61 72 65 20 62 65 69 6E 67 0D 0A keys are being..
007770: 20 20 20 20 20 20 70 72 65 73 73 65 64 2C 20 61 pressed, a
007780: 6E 64 20 74 68 65 6E 20 63 6C 65 61 72 73 20 74 nd then clears t
007790: 68 65 20 6B 65 79 62 6F 61 72 64 20 62 75 66 66 he keyboard buff
0077A0: 65 72 2E 0D 0A 0D 0A 0D 0A 20 20 20 47 4F 54 4F er....... GOTO
0077B0: 20 31 30 0D 0A 20 20 20 20 20 54 68 65 20 66 69 10.. The fi
0077C0: 72 73 74 20 63 6F 6D 6D 61 6E 64 20 69 6E 20 74 rst command in t
0077D0: 68 65 20 70 72 6F 67 72 61 6D 20 20 69 73 20 20 he program is
0077E0: 74 68 65 72 65 20 74 6F 20 73 70 65 65 64 20 74 there to speed t
0077F0: 68 69 6E 67 73 20 75 70 20 73 6C 69 67 68 74 6C hings up slightl
007800: 6F 72 64 20 22 75 73 65 72 22 20 61 74 20 74 68 ord "user" at th
007810: 65 20 74 6F 70 0D 0A 20 20 20 6F 66 20 74 68 65 e top.. of the
007820: 20 64 69 73 70 6C 61 79 2C 20 61 6E 64 20 70 72 display, and pr
007830: 65 73 73 69 6E 67 20 6F 6E 65 20 6F 66 20 74 68 essing one of th
007840: 65 20 74 68 72 65 65 20 73 65 6C 65 63 74 69 6F e three selectio
007850: 6E 20 6B 65 79 73 2E 0D 0A 20 20 20 20 20 41 73 n keys... As
007860: 20 68 65 20 68 61 73 20 62 65 65 6E 20 77 6F 72 he has been wor
007870: 6B 69 6E 67 20 61 73 20 20 61 20 20 73 6F 66 74 king as a soft
007880: 77 61 72 65 20 65 6E 67 69 6E 65 65 72 20 6F 76 ware engineer ov
007890: 65 72 20 74 68 65 20 73 75 6D 6D 65 72 2C 20 53 er the summer, S
0078A0: 74 65 70 68 65 6E 0D 0A 20 20 20 77 61 6E 74 73 tephen.. wants
0078B0: 20 74 6F 20 6D 61 6B 65 20 69 74 20 71 75 69 74 to make it quit
0078C0: 65 20 63 6C 65 61 72 20 74 68 61 74 20 20 74 68 e clear that th
0078D0: 69 73 20 20 69 73 20 20 4E 4F 54 20 6D 65 61 6E is is NOT mean
0078E0: 74 20 74 6F 20 62 65 20 61 6E 20 65 78 61 6D 70 t to be an examp
0078F0: 6C 65 20 6F 66 0D 0A 20 20 20 47 6F 6F 64 20 50 le of.. Good P
007900: 72 6F 67 72 61 6D 6D 69 6E 67 20 50 72 61 63 74 rogramming Pract
007910: 69 63 65 2E 20 20 20 4D 75 73 74 6E 27 74 20 20 ice. Mustn't
007920: 73 70 6F 69 6C 20 20 74 68 65 20 20 6A 6F 62 20 spoil the job
007930: 20 70 72 6F 73 70 65 63 74 73 20 20 77 69 74 68 prospects with
007940: 20 6F 6E 65 0D 0A 20 20 20 6C 69 74 74 6C 65 20 one.. little
007950: 65 78 61 6D 70 6C 65 2E 2E 2E 0D 0A 20 20 20 20 example.....
007960: 20 54 68 65 20 70 72 6F 67 72 61 6D 20 74 61 6B The program tak
007970: 65 73 20 75 70 20 6C 65 73 73 20 20 74 68 61 6E es up less than
007980: 20 20 31 4B 20 20 6F 66 20 20 64 69 73 63 20 20 1K of disc
007990: 73 70 61 63 65 2E 20 20 54 68 69 73 20 69 73 20 space. This is
0079A0: 69 6D 70 6F 72 74 61 6E 74 0D 0A 20 20 20 62 65 important.. be
0079B0: 63 61 75 73 65 20 74 68 65 20 69 64 65 61 20 69 cause the idea i
0079C0: 73 20 74 68 61 74 20 79 6F 75 20 77 6F 75 6C 64 s that you would
0079D0: 20 73 61 76 65 20 20 69 74 20 20 6F 6E 20 65 76 save it on ev
0079E0: 65 72 79 20 64 69 73 63 20 61 6E 64 20 75 73 65 ery disc and use
0079F0: 20 69 74 20 61 73 20 61 0D 0A 20 20 20 64 69 73 it as a.. dis
007A00: 79 2E 0D 0A 20 20 20 54 68 65 72 65 20 61 72 65 y... There are
007A10: 20 74 68 72 65 65 20 64 69 66 66 65 72 65 6E 74 three different
007A20: 20 74 79 70 65 73 20 6F 66 20 20 76 61 72 69 61 types of varia
007A30: 62 6C 65 3A 20 73 74 72 69 6E 67 73 2C 20 69 6E ble: strings, in
007A40: 74 65 67 65 72 73 20 61 6E 64 20 72 65 61 6C 73 tegers and reals
007A50: 2E 0D 0A 20 20 20 4F 6E 20 74 68 65 20 41 6D 73 ... On the Ams
007A60: 74 72 61 64 2C 20 69 6E 74 65 67 65 72 20 76 61 trad, integer va
007A70: 72 69 61 62 6C 65 73 20 61 72 65 20 20 77 68 6F riables are who
007A80: 6C 65 20 6E 75 6D 62 65 72 73 20 66 72 6F 6D 20 le numbers from
007A90: 2D 33 32 37 36 38 20 74 6F 20 33 32 37 36 37 2E -32768 to 32767.
007AA0: 0D 0A 20 20 20 52 65 61 6C 20 76 61 72 69 61 62 .. Real variab
007AB0: 6C 65 73 20 28 61 6C 73 6F 20 6B 6E 6F 77 6E 20 les (also known
007AC0: 61 73 20 66 6C 6F 61 74 69 6E 67 20 70 6F 69 6E as floating poin
007AD0: 74 20 76 61 72 69 61 62 6C 65 73 29 20 63 61 6E t variables) can
007AE0: 20 62 65 20 6D 75 63 68 20 62 69 67 67 65 72 0D be much bigger.
007AF0: 0A 20 20 20 61 6E 64 20 64 6F 6E 27 74 20 68 61 . and don't ha
007B00: 76 65 20 74 6F 20 62 65 20 77 68 6F 6C 65 20 6E ve to be whole n
007B10: 75 6D 62 65 72 73 2E 20 20 55 73 69 6E 67 20 61 umbers. Using a
007B20: 20 72 65 61 6C 20 76 61 72 69 61 62 6C 65 20 77 real variable w
007B30: 68 65 6E 20 61 6E 20 69 6E 74 65 67 65 72 0D 0A hen an integer..
007B40: 20 20 20 77 69 6C 6C 20 64 6F 20 6D 61 6B 65 73 will do makes
007B50: 20 65 78 74 72 61 20 77 6F 72 6B 20 66 6F 72 20 extra work for
007B60: 42 41 53 49 43 20 61 6E 64 20 73 6C 6F 77 73 20 BASIC and slows
007B70: 74 68 65 20 70 72 6F 67 72 61 6D 20 64 6F 77 6E the program down
007B80: 2E 20 20 54 6F 20 73 70 65 63 69 66 79 0D 0A 20 . To specify..
007B90: 20 20 65 78 70 6C 69 63 69 74 6C 79 20 74 68 61 explicitly tha
007BA0: 74 20 61 20 76 61 72 69 61 62 6C 65 20 69 73 20 t a variable is
007BB0: 61 20 73 74 72 69 6E 67 20 77 65 20 75 73 65 20 a string we use
007BC0: 74 68 65 20 22 24 22 20 63 68 61 72 61 63 74 65 the "$" characte
007BD0: 72 20 61 73 20 69 6E 3A 0D 0A 0D 0A 20 20 20 20 r as in:....
007BE0: 20 61 24 3D 22 48 65 6C 6C 6F 20 4D 75 6D 21 22 a$="Hello Mum!"
007BF0: 0D 0A 0D 0A 20 20 20 54 68 65 72 65 20 61 72 65 .... There are
007C00: 63 20 6D 65 6E 75 20 73 79 73 74 65 6D 2E 20 20 c menu system.
007C10: 54 6F 20 61 63 68 69 65 76 65 20 20 74 68 69 73 To achieve this
007C20: 20 20 73 6D 61 6C 6C 20 73 69 7A 65 2C 20 6D 61 small size, ma
007C30: 6E 79 20 69 6E 67 65 6E 69 6F 75 73 20 74 65 63 ny ingenious tec
007C40: 68 6E 69 71 75 65 73 0D 0A 20 20 20 68 61 76 65 hniques.. have
007C50: 20 62 65 65 6E 20 65 6D 70 6C 6F 79 65 64 2E 20 been employed.
007C60: 20 41 6C 74 68 6F 75 67 68 20 74 68 65 79 20 20 Although they
007C70: 64 6F 20 20 6D 61 6B 65 20 20 74 68 65 20 6C 69 do make the li
007C80: 73 74 69 6E 67 20 72 61 74 68 65 72 20 64 61 75 sting rather dau
007C90: 6E 74 69 6E 67 2C 0D 0A 20 20 20 6F 6E 65 20 62 nting,.. one b
007CA0: 6F 6E 75 73 20 69 73 20 74 68 61 74 20 74 68 65 onus is that the
007CB0: 20 70 72 6F 67 72 61 6D 20 72 75 6E 73 20 6D 75 program runs mu
007CC0: 63 68 20 66 61 73 74 65 72 2E 0D 0A 0D 0A 20 20 ch faster.....
007CD0: 20 4C 49 53 54 20 31 30 2D 38 30 0D 0A 20 20 20 LIST 10-80..
007CE0: 4C 65 74 27 73 20 68 61 76 65 20 61 20 71 75 69 Let's have a qui
007CF0: 63 6B 20 6C 6F 6F 6B 20 74 68 72 6F 75 67 68 20 ck look through
007D00: 77 68 61 74 20 65 61 63 68 20 6C 69 6E 65 20 64 what each line d
007D10: 6F 65 73 2E 0D 0A 0D 0A 20 20 20 31 30 20 73 65 oes..... 10 se
007D20: 74 73 20 75 70 20 73 6F 6D 65 20 6D 61 63 68 69 ts up some machi
007D30: 6E 65 20 63 6F 64 65 20 28 73 68 6F 63 6B 2C 20 ne code (shock,
007D40: 68 6F 72 72 6F 72 21 29 20 74 68 61 74 20 77 65 horror!) that we
007D50: 20 6E 65 65 64 20 6C 61 74 65 72 2E 0D 0A 0D 0A need later.....
007D60: 20 20 20 32 30 20 6D 61 6B 65 73 20 73 75 72 65 20 makes sure
007D70: 20 74 68 65 20 73 63 72 65 65 6E 20 69 73 20 73 the screen is s
007D80: 65 74 20 75 70 20 61 73 20 6E 6F 72 6D 61 6C 2C et up as normal,
007D90: 20 61 6E 64 20 63 61 74 61 6C 6F 67 75 65 73 20 and catalogues
007DA0: 74 68 65 20 64 69 73 63 2E 0D 0A 0D 0A 20 20 20 the disc.....
007DB0: 33 30 20 69 73 20 77 68 65 72 65 20 74 68 65 20 30 is where the
007DC0: 66 75 6E 20 73 74 61 72 74 73 2E 20 20 20 54 68 fun starts. Th
007DD0: 65 20 20 6C 6F 6F 70 20 20 73 74 61 72 74 69 6E e loop startin
007DE0: 67 20 22 57 48 49 4C 45 20 31 22 20 65 6E 64 73 g "WHILE 1" ends
007DF0: 20 61 74 20 74 68 65 0D 0A 20 20 20 20 20 20 22 at the.. "
007E00: 20 65 71 75 69 76 61 6C 65 6E 74 20 20 63 68 61 equivalent cha
007E10: 72 61 63 74 65 72 73 20 20 66 6F 72 20 20 69 6E racters for in
007E20: 74 65 67 65 72 20 20 76 61 72 69 61 62 6C 65 73 teger variables
007E30: 20 20 61 6E 64 20 72 65 61 6C 73 2E 20 20 46 6F and reals. Fo
007E40: 72 0D 0A 20 20 20 65 78 61 6D 70 6C 65 3A 0D 0A r.. example:..
007E50: 0D 0A 20 20 20 20 20 69 25 3D 33 0D 0A 20 20 20 .. i%=3..
007E60: 20 20 72 21 3D 33 2E 31 34 31 35 0D 0A 0D 0A 20 r!=3.1415....
007E70: 20 20 54 68 65 20 22 21 22 20 63 68 61 72 61 63 The "!" charac
007E80: 74 65 72 20 69 73 20 72 61 72 65 6C 79 20 75 73 ter is rarely us
007E90: 65 64 20 69 6E 20 74 68 69 73 20 63 6F 6E 74 65 ed in this conte
007EA0: 78 74 20 62 65 63 61 75 73 65 20 76 61 72 69 61 xt because varia
007EB0: 62 6C 65 73 20 77 69 74 68 6F 75 74 0D 0A 20 20 bles without..
007EC0: 20 61 6E 79 20 74 79 70 65 20 20 69 64 65 6E 74 any type ident
007ED0: 69 66 69 65 72 73 20 20 61 72 65 20 20 72 65 61 ifiers are rea
007EE0: 6C 20 20 62 79 20 20 64 65 66 61 75 6C 74 2E 20 l by default.
007EF0: 20 20 22 44 45 46 49 4E 54 20 61 2D 7A 22 20 20 "DEFINT a-z"
007F00: 63 68 61 6E 67 65 73 20 74 68 65 0D 0A 20 20 20 changes the..
007F10: 64 65 66 61 75 6C 74 20 74 79 70 65 20 74 6F 20 default type to
007F20: 69 6E 74 65 67 65 72 20 66 6F 72 20 61 6C 6C 20 integer for all
007F30: 76 61 72 69 61 62 6C 65 73 20 20 62 65 67 69 6E variables begin
007F40: 6E 69 6E 67 20 77 69 74 68 20 74 68 65 20 6C 65 ning with the le
007F50: 74 74 65 72 73 20 61 20 74 6F 0D 0A 20 20 20 7A tters a to.. z
007F60: 2E 20 20 59 6F 75 20 63 61 6E 20 66 69 6E 64 20 . You can find
007F70: 6F 75 74 20 61 62 6F 75 74 20 69 74 73 20 20 6C out about its l
007F80: 65 73 73 65 72 20 6B 6E 6F 77 6E 20 66 72 69 65 esser known frie
007F90: 6E 64 73 20 44 45 46 52 45 41 4C 20 61 6E 64 20 nds DEFREAL and
007FA0: 44 45 46 53 54 52 20 69 6E 0D 0A 20 20 20 79 6F DEFSTR in.. yo
007FB0: 75 72 20 6D 61 6E 75 61 6C 2E 20 20 41 73 20 61 ur manual. As a
007FC0: 6E 20 65 78 61 6D 70 6C 65 2C 20 68 6F 77 20 61 n example, how a
007FD0: 62 6F 75 74 3A 0D 0A 0D 0A 20 20 20 20 20 44 45 bout:.... DE
007FE0: 46 53 54 52 20 74 0D 0A 20 20 20 20 20 74 69 67 FSTR t.. tig
007FF0: 67 65 72 3D 22 50 68 69 6C 69 70 20 44 69 52 69 ger="Philip DiRi
008000: 57 45 4E 44 22 20 69 6E 20 6C 69 6E 65 20 37 30 WEND" in line 70
008010: 2E 20 20 54 68 65 72 65 20 69 73 20 6E 6F 20 20 . There is no
008020: 77 61 79 20 20 6F 75 74 20 6F 66 20 74 68 69 73 way out of this
008030: 20 6C 6F 6F 70 2C 20 61 6E 64 20 74 68 65 20 70 loop, and the p
008040: 72 6F 67 72 61 6D 0D 0A 20 20 20 20 20 20 6F 6E rogram.. on
008050: 6C 79 20 73 74 6F 70 73 20 77 68 65 6E 20 74 68 ly stops when th
008060: 65 20 75 73 65 72 20 73 65 6C 65 63 74 73 20 20 e user selects
008070: 61 20 20 66 69 6C 65 2C 20 20 77 68 69 63 68 20 a file, which
008080: 20 69 73 20 72 75 6E 20 61 74 20 74 68 65 20 65 is run at the e
008090: 6E 64 20 6F 66 0D 0A 20 20 20 20 20 20 6C 69 6E nd of.. lin
0080A0: 65 20 35 30 2E 0D 0A 20 20 20 20 20 20 20 20 54 e 50... T
0080B0: 68 65 20 73 65 63 6F 6E 64 20 57 48 49 4C 45 20 he second WHILE
0080C0: 6C 6F 6F 70 20 65 6E 64 73 20 61 74 20 74 68 65 loop ends at the
0080D0: 20 20 57 45 4E 44 20 70 61 72 74 20 77 61 79 20 WEND part way
0080E0: 74 68 72 6F 75 67 68 20 6C 69 6E 65 20 35 30 2C through line 50,
0080F0: 20 61 6E 64 0D 0A 20 20 20 20 20 20 77 61 69 74 and.. wait
008100: 73 20 75 6E 74 69 6C 20 61 20 66 69 6C 65 20 6F s until a file o
008110: 72 20 22 75 73 65 72 22 20 69 73 20 73 65 6C 65 r "user" is sele
008120: 63 74 65 64 2E 0D 0A 20 20 20 20 20 20 20 20 41 cted... A
008130: 74 20 74 68 65 20 65 6E 64 20 6F 66 20 74 68 65 t the end of the
008140: 20 20 6C 69 6E 65 20 20 74 68 65 20 20 70 6F 69 line the poi
008150: 6E 74 65 72 2C 20 20 43 48 52 24 28 32 31 35 29 nter, CHR$(215)
008160: 2C 20 20 69 73 20 70 72 69 6E 74 65 64 20 6F 6E , is printed on
008170: 20 74 68 65 0D 0A 20 20 20 20 20 20 73 63 72 65 the.. scre
008180: 65 6E 2E 0D 0A 0D 0A 20 20 20 34 30 20 68 61 73 en..... 40 has
008190: 20 61 20 57 48 49 4C 45 2D 57 45 4E 44 20 6C 6F a WHILE-WEND lo
0081A0: 6F 70 20 61 6C 6C 20 20 74 6F 20 20 69 74 73 65 op all to itse
0081B0: 6C 66 2E 20 20 20 49 74 20 20 77 61 69 74 73 20 lf. It waits
0081C0: 75 6E 74 69 6C 20 53 50 41 43 45 2C 20 43 4F 50 until SPACE, COP
0081D0: 59 20 6F 72 0D 0A 20 20 20 20 20 20 45 4E 54 45 Y or.. ENTE
0081E0: 52 20 69 73 20 70 72 65 73 73 65 64 2C 20 20 61 R is pressed, a
0081F0: 6E 64 20 20 69 6E 20 20 74 68 65 20 20 6D 65 61 nd in the mea
008200: 63 68 6C 65 61 75 22 0D 0A 20 20 20 20 20 50 52 chleau".. PR
008210: 49 4E 54 20 74 69 67 67 65 72 0D 0A 0D 0A 20 20 INT tigger....
008220: 20 20 20 57 65 27 6C 6C 20 63 6F 76 65 72 20 74 We'll cover t
008230: 68 65 20 72 65 73 74 20 6F 66 20 6C 69 6E 65 20 he rest of line
008240: 31 30 20 69 6E 20 61 20 6C 61 74 65 72 20 61 72 10 in a later ar
008250: 74 69 63 6C 65 2E 0D 0A 0D 0A 20 20 20 49 4E 49 ticle..... INI
008260: 54 49 41 4C 20 54 48 4F 55 47 48 54 53 0D 0A 20 TIAL THOUGHTS..
008270: 20 20 54 68 69 73 20 64 69 73 63 20 6D 65 6E 75 This disc menu
008280: 20 70 72 6F 67 72 61 6D 20 63 6F 75 6C 64 20 62 program could b
008290: 65 20 72 75 6E 20 61 74 20 61 6E 79 20 74 69 6D e run at any tim
0082A0: 65 2C 20 73 6F 20 69 74 20 6D 75 73 74 20 6D 61 e, so it must ma
0082B0: 6B 65 20 73 75 72 65 20 74 68 61 74 0D 0A 20 20 ke sure that..
0082C0: 20 74 68 65 20 63 6F 6D 70 75 74 65 72 2C 20 61 the computer, a
0082D0: 6E 64 20 69 6E 20 70 61 72 74 69 63 75 6C 61 72 nd in particular
0082E0: 20 74 68 65 20 20 73 63 72 65 65 6E 2C 20 20 69 the screen, i
0082F0: 73 20 73 65 74 20 75 70 20 70 72 6F 70 65 72 6C s set up properl
008300: 79 2E 20 20 54 68 69 73 20 69 73 0D 0A 20 20 20 y. This is..
008310: 61 6C 6C 20 68 61 6E 64 6C 65 64 20 69 6E 20 6C all handled in l
008320: 69 6E 65 20 32 30 2E 20 20 57 65 20 6D 61 6B 65 ine 20. We make
008330: 20 75 73 65 20 6F 66 20 74 68 72 65 65 20 66 69 use of three fi
008340: 72 6D 77 61 72 65 20 63 61 6C 6C 73 2C 20 6D 61 rmware calls, ma
008350: 63 68 69 6E 65 20 63 6F 64 65 0D 0A 20 20 20 72 chine code.. r
008360: 6F 75 74 69 6E 65 73 20 77 68 69 63 68 20 61 72 outines which ar
008370: 65 20 62 75 69 6C 74 20 69 6E 20 74 6F 20 74 68 e built in to th
008380: 65 20 63 6F 6D 70 75 74 65 72 2E 20 20 54 68 65 e computer. The
008390: 79 20 61 72 65 3A 0D 0A 0D 0A 20 20 20 26 42 42 y are:.... &BB
0083A0: 34 45 20 20 54 58 54 20 49 4E 49 54 49 41 4C 49 4E TXT INITIALI
0083B0: 53 45 0D 0A 20 20 20 20 20 20 20 20 20 20 41 6D SE.. Am
0083C0: 6F 6E 67 20 6F 74 68 65 72 20 74 68 69 6E 67 73 ong other things
0083D0: 2C 20 72 65 73 65 74 73 20 74 68 65 20 70 65 6E , resets the pen
0083E0: 20 61 6E 64 20 70 61 70 65 72 20 63 6F 6C 6F 75 and paper colou
0083F0: 72 73 2C 20 61 6E 64 20 6D 6F 76 65 73 20 74 68 rs, and moves th
008400: 6E 74 69 6D 65 20 20 6D 6F 76 65 73 20 20 74 68 ntime moves th
008410: 65 20 20 70 6F 69 6E 74 65 72 20 61 62 6F 75 74 e pointer about
008420: 20 69 6E 0D 0A 20 20 20 20 20 20 72 65 73 70 6F in.. respo
008430: 6E 73 65 20 74 6F 20 74 68 65 20 63 75 72 73 6F nse to the curso
008440: 72 20 6B 65 79 73 2E 0D 0A 0D 0A 20 20 20 35 30 r keys..... 50
008450: 20 61 66 74 65 72 20 72 65 6D 6F 76 69 6E 67 20 after removing
008460: 74 68 65 20 20 63 75 72 73 6F 72 2C 20 20 72 65 the cursor, re
008470: 61 64 73 20 20 74 77 65 6C 76 65 20 20 63 68 61 ads twelve cha
008480: 72 61 63 74 65 72 73 20 20 6F 66 66 20 74 68 65 racters off the
008490: 20 73 63 72 65 65 6E 2C 0D 0A 20 20 20 20 20 20 screen,..
0084A0: 75 73 69 6E 67 20 74 68 65 20 6D 61 63 68 69 6E using the machin
0084B0: 65 20 63 6F 64 65 20 65 6E 74 65 72 65 64 20 69 e code entered i
0084C0: 6E 20 6C 69 6E 65 20 20 31 30 2E 20 20 57 65 20 n line 10. We
0084D0: 6E 6F 77 20 65 6E 63 6F 75 6E 74 65 72 20 74 68 now encounter th
0084E0: 65 20 57 45 4E 44 2C 0D 0A 20 20 20 20 20 20 77 e WEND,.. w
0084F0: 68 6F 73 65 20 57 48 49 4C 45 20 77 61 73 20 68 hose WHILE was h
008500: 61 6C 66 77 61 79 20 74 68 72 6F 75 67 68 20 6C alfway through l
008510: 69 6E 65 20 20 33 30 2E 20 20 20 49 66 20 20 77 ine 30. If w
008520: 65 20 67 65 74 20 70 61 73 74 20 74 68 65 20 57 e get past the W
008530: 45 4E 44 20 77 65 0D 0A 20 20 20 20 20 20 6B 6E END we.. kn
008540: 6F 77 20 74 68 61 74 20 77 65 20 65 69 74 68 65 ow that we eithe
008550: 72 20 77 61 6E 74 20 74 6F 20 72 75 6E 20 20 61 r want to run a
008560: 20 20 66 69 6C 65 2C 20 6F 72 20 63 68 61 6E 67 file, or chang
008570: 65 20 74 6F 20 61 20 64 69 66 66 65 72 65 6E 74 e to a different
008580: 20 75 73 65 72 0D 0A 20 20 20 20 20 20 61 72 65 user.. are
008590: 61 20 6F 6E 20 74 68 65 20 64 69 73 63 2E 20 20 a on the disc.
0085A0: 49 66 20 74 68 65 20 6E 69 6E 74 68 20 63 68 61 If the ninth cha
0085B0: 72 61 63 74 65 72 20 69 73 20 61 20 66 75 6C 6C racter is a full
0085C0: 20 73 74 6F 70 2C 20 77 65 20 63 61 6E 20 61 73 stop, we can as
0085D0: 73 75 6D 65 0D 0A 20 20 20 20 20 20 74 68 61 74 sume.. that
0085E0: 20 74 68 65 20 73 74 72 69 6E 67 20 20 69 73 20 the string is
0085F0: 61 20 66 69 6C 65 6E 61 6D 65 2C 20 61 6E 64 20 a filename, and
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 C8 02 00 00 00 02 ......N.........
008620: 07 00 C4 02 00 00 00 02 07 00 C9 02 00 00 00 02 ................
008630: 07 00 C5 02 00 00 00 02 07 00 C1 02 00 00 00 02 ................
008640: 07 00 C6 02 00 00 00 02 07 00 C2 02 00 00 00 02 ................
008650: 07 00 C7 02 00 00 00 02 07 00 C3 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: 63 3D 79 3A 0D 0A 20 20 20 78 3D 4D 41 58 28 30 c=y:.. x=MAX(0
008710: 2C 4D 49 4E 28 36 33 32 2C 78 2B 33 2A 28 28 49 ,MIN(632,x+3*((I
008720: 4E 4B 45 59 28 38 29 3E 2D 31 29 2D 28 49 4E 4B NKEY(8)>-1)-(INK
008730: 45 59 28 31 29 3E 2D 31 29 29 2A 28 34 2B 33 2A EY(1)>-1))*(4+3*
008740: 28 49 4E 4B 45 59 28 32 31 29 3D 2D 31 29 29 29 (INKEY(21)=-1)))
008750: 29 3A 0D 0A 20 20 20 79 3D 4D 41 58 28 31 35 2C ):.. y=MAX(15,
008760: 4D 49 4E 28 33 39 39 2C 79 2B 33 2A 28 28 49 4E MIN(399,y+3*((IN
008770: 4B 45 59 28 32 29 3E 2D 31 29 2D 28 49 4E 4B 45 KEY(2)>-1)-(INKE
008780: 59 28 30 29 3E 2D 31 29 29 2A 28 28 49 4E 4B 45 Y(0)>-1))*((INKE
008790: 59 28 32 31 29 3D 2D 31 29 2B 32 29 29 29 3A 0D Y(21)=-1)+2))):.
0087A0: 0A 20 20 20 4D 4F 56 45 20 62 2C 63 3A 50 52 49 . MOVE b,c:PRI
0087B0: 4E 54 20 43 48 52 24 28 32 31 35 29 3B 3A 4D 4F NT CHR$(215);:MO
0087C0: 56 45 20 78 2C 79 3A 50 52 49 4E 54 20 43 48 52 VE x,y:PRINT CHR
0087D0: 24 28 32 31 35 29 3B 3A 57 45 4E 44 0D 0A 35 30 $(215);:WEND..50
0087E0: 20 47 4F 53 55 42 20 38 30 3A 4D 4F 56 45 20 78 GOSUB 80:MOVE x
0087F0: 2C 79 3A 50 52 49 4E 54 20 43 48 52 24 28 32 31 ,y:PRINT CHR$(21
008800: 35 29 3B 3A 70 3D 28 78 5C 31 36 30 29 2A 32 30 5);:p=(x\160)*20
008810: 2B 31 3A 71 3D 28 34 30 30 2D 79 29 5C 31 36 2B +1:q=(400-y)\16+
008820: 31 3A 4C 4F 43 41 54 45 20 70 2C 71 3A 0D 0A 20 1:LOCATE p,q:..
008830: 20 20 43 41 4C 4C 20 61 2C 40 66 24 3A 57 45 4E CALL a,@f$:WEN
008840: 44 3A 54 41 47 4F 46 46 3A 49 46 20 4D 49 44 24 D:TAGOFF:IF MID$
008850: 28 66 24 2C 39 2C 31 29 3D 22 2E 22 20 54 48 45 (f$,9,1)="." THE
008860: 4E 20 4D 45 4D 4F 52 59 20 48 49 4D 45 4D 2B 33 N MEMORY HIMEM+3
008870: 34 3A 43 41 4C 4C 20 26 42 42 42 41 3A 0D 0A 20 4:CALL &BBBA:..
008880: 20 20 4D 4F 44 45 20 31 3A 52 55 4E 20 66 24 0D MODE 1:RUN f$.
008890: 0A 36 30 20 75 3D 31 36 3A 57 48 49 4C 45 20 75 .60 u=16:WHILE u
0088A0: 20 41 4E 44 20 2D 31 36 3A 4C 4F 43 41 54 45 20 AND -16:LOCATE
0088B0: 31 2C 76 3A 50 52 49 4E 54 22 55 73 65 72 3A 20 1,v:PRINT"User:
0088C0: 22 2B 43 48 52 24 28 32 30 29 3B 3A 4C 49 4E 45 "+CHR$(20);:LINE
0088D0: 20 49 4E 50 55 54 20 75 24 3A 0D 0A 20 20 20 75 INPUT u$:.. u
0088E0: 3D 56 41 4C 28 75 24 29 3A 57 45 4E 44 3A 49 46 =VAL(u$):WEND:IF
0088F0: 20 75 24 3C 3E 22 22 20 54 48 45 4E 20 7C 55 53 u$<>"" THEN |US
008900: 6F 70 2E 20 20 54 68 65 20 63 6F 6C 6F 75 72 20 op. The colour
008910: 74 68 61 74 20 61 70 70 65 61 72 73 20 20 6F 6E that appears on
008920: 20 20 74 68 65 20 73 63 72 65 65 6E 20 69 73 20 the screen is
008930: 61 20 58 4F 52 20 62 2E 20 20 53 6F 2C 0D 0A 20 a XOR b. So,..
008940: 20 20 69 66 20 62 20 69 73 20 30 2C 20 74 68 65 if b is 0, the
008950: 6E 20 74 68 65 20 63 6F 6C 6F 75 72 20 73 74 61 n the colour sta
008960: 79 73 20 61 73 20 61 2E 20 20 49 66 20 62 20 69 ys as a. If b i
008970: 73 20 31 2C 20 74 68 65 6E 20 74 68 65 20 63 6F s 1, then the co
008980: 6C 6F 75 72 20 63 68 61 6E 67 65 73 0D 0A 20 20 lour changes..
008990: 20 66 72 6F 6D 20 30 20 74 6F 20 31 20 6F 72 20 from 0 to 1 or
0089A0: 66 72 6F 6D 20 31 20 20 74 6F 20 20 30 2E 20 20 from 1 to 0.
0089B0: 20 49 6E 20 20 65 69 74 68 65 72 20 20 63 61 73 In either cas
0089C0: 65 2C 20 70 72 69 6E 74 69 6E 67 20 63 6F 6C 6F e, printing colo
0089D0: 75 72 20 62 20 6F 6E 20 74 6F 70 0D 0A 20 20 20 ur b on top..
0089E0: 61 67 61 69 6E 20 6D 65 61 6E 73 20 74 68 61 74 again means that
0089F0: 20 77 65 20 65 6E 64 20 75 70 20 77 69 74 68 20 we end up with
008A00: 77 68 61 74 20 20 77 65 20 73 74 61 72 74 65 64 what we started
008A10: 20 77 69 74 68 2E 20 20 54 68 69 73 20 6D 61 6B with. This mak
008A20: 65 73 20 69 74 20 65 61 73 79 0D 0A 20 20 20 66 es it easy.. f
008A30: 6F 72 20 75 73 20 74 6F 20 6D 6F 76 65 20 6F 75 or us to move ou
008A40: 72 20 70 6F 69 6E 74 65 72 20 61 62 6F 75 74 20 r pointer about
008A50: 6F 6E 20 74 68 65 20 73 63 72 65 65 6E 20 77 69 on the screen wi
008A60: 74 68 6F 75 74 20 77 6F 72 72 79 69 6E 67 20 61 thout worrying a
008A70: 62 6F 75 74 20 77 68 61 74 0D 0A 20 20 20 69 73 bout what.. is
008A80: 20 75 6E 64 65 72 6E 65 61 74 68 20 69 74 2E 0D underneath it..
008A90: 0A 20 20 20 20 20 54 68 65 20 70 6F 73 69 74 69 . The positi
008AA0: 6F 6E 20 6F 66 20 74 68 65 20 70 6F 69 6E 74 65 on of the pointe
008AB0: 72 20 69 73 20 68 65 6C 64 20 69 6E 20 20 74 68 r is held in th
008AC0: 65 20 76 61 72 69 61 62 6C 65 73 20 78 20 61 6E e variables x an
008AD0: 64 20 79 2C 20 61 6E 64 20 74 68 65 73 65 0D 0A d y, and these..
008AE0: 20 20 20 61 72 65 20 73 65 74 20 75 70 20 74 6F are set up to
008AF0: 20 70 6C 61 63 65 20 69 74 20 6E 65 61 72 20 74 place it near t
008B00: 45 52 2C 75 3A 43 4C 53 3A 43 41 54 3A 76 3D 56 ER,u:CLS:CAT:v=V
008B10: 50 4F 53 28 23 30 29 0D 0A 37 30 20 57 45 4E 44 POS(#0)..70 WEND
008B20: 0D 0A 38 30 20 57 48 49 4C 45 20 49 4E 4B 45 59 ..80 WHILE INKEY
008B30: 28 34 37 29 2B 49 4E 4B 45 59 28 31 38 29 2B 49 (47)+INKEY(18)+I
008B40: 4E 4B 45 59 28 39 29 3E 2D 33 3A 57 45 4E 44 3A NKEY(9)>-3:WEND:
008B50: 57 48 49 4C 45 20 49 4E 4B 45 59 24 3C 3E 22 22 WHILE INKEY$<>""
008B60: 3A 57 45 4E 44 3A 52 45 54 55 52 4E 0D 0A 0D 0A :WEND:RETURN....
008B70: 20 20 20 46 69 67 75 72 65 20 31 0D 0A 1A 6E 67 Figure 1...ng
008B80: 39 30 30 30 2C 40 63 25 0D 0A 31 33 30 20 50 52 9000,@c%..130 PR
008B90: 49 4E 54 3A 50 52 49 4E 54 22 54 68 65 20 6C 65 INT:PRINT"The le
008BA0: 74 74 65 72 20 61 74 20 74 68 65 20 74 6F 70 20 tter at the top
008BB0: 6C 65 66 74 20 6F 66 20 74 68 65 20 73 63 72 65 left of the scre
008BC0: 65 6E 20 69 73 20 61 20 22 3B 43 48 52 24 28 63 en is a ";CHR$(c
008BD0: 25 29 0D 0A 31 39 30 20 44 41 54 41 20 44 44 2C %)..190 DATA DD,
008BE0: 36 36 2C 30 31 2C 44 44 2C 36 45 2C 30 30 2C 43 66,01,DD,6E,00,C
008BF0: 44 2C 36 30 2C 42 42 2C 37 37 2C 32 33 2C 33 36 D,60,BB,77,23,36
008C00: 2C 30 30 2C 43 39 0D 0A 1A 20 24 24 24 FF 00 FF ,00,C9... $$$...
008C10: 00 00 0A 00 00 72 01 00 10 29 00 00 00 00 00 00 .....r...)......
008C20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008C30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008C40: 10 29 00 86 03 54 0D 0A 0D 0A 46 69 67 75 72 65 .)...T....Figure
008C50: 20 32 2E 37 31 1A 00 0A 00 00 73 01 00 1E 00 00 2.71.....s.....
008C60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008C70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
008C80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008C90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008CA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008CB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008CC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008CD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008CE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008CF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
008D00: 68 65 20 20 74 6F 70 20 6F 66 20 74 68 65 20 73 he top of the s
008D10: 63 72 65 65 6E 2E 20 20 41 66 74 65 72 20 63 61 creen. After ca
008D20: 74 61 6C 6F 67 75 69 6E 67 20 74 68 65 0D 0A 20 taloguing the..
008D30: 20 20 64 69 73 63 2C 20 74 68 65 20 56 50 4F 53 disc, the VPOS
008D40: 20 66 75 6E 63 74 69 6F 6E 20 69 73 20 75 73 65 function is use
008D50: 64 20 74 6F 20 20 70 75 74 20 20 74 68 65 20 56 d to put the V
008D60: 65 72 74 69 63 61 6C 20 50 4F 53 69 74 69 6F 6E ertical POSition
008D70: 20 6F 66 20 74 68 65 20 74 65 78 74 0D 0A 20 20 of the text..
008D80: 20 63 75 72 73 6F 72 20 69 6E 74 6F 20 76 61 72 cursor into var
008D90: 69 61 62 6C 65 20 76 2E 20 20 41 73 20 64 69 73 iable v. As dis
008DA0: 63 20 63 61 74 61 6C 6F 67 75 65 73 20 76 61 72 c catalogues var
008DB0: 79 20 69 6E 20 6C 65 6E 67 74 68 2C 20 77 65 20 y in length, we
008DC0: 68 61 76 65 20 74 6F 20 75 73 65 0D 0A 20 20 20 have to use..
008DD0: 56 50 4F 53 20 74 6F 20 66 69 6E 64 20 6F 75 74 VPOS to find out
008DE0: 20 77 68 65 72 65 20 74 68 65 20 63 75 72 73 6F where the curso
008DF0: 72 20 68 61 73 20 65 6E 64 65 64 20 75 70 2E 20 r has ended up.
008E00: 20 56 61 72 69 61 62 6C 65 20 76 20 69 73 20 75 Variable v is u
008E10: 73 65 64 20 69 6E 20 74 68 65 0D 0A 20 20 20 4C sed in the.. L
008E20: 4F 43 41 54 45 20 63 6F 6D 6D 61 6E 64 20 69 6E OCATE command in
008E30: 20 6C 69 6E 65 20 36 30 20 74 6F 20 65 6E 73 75 line 60 to ensu
008E40: 72 65 20 20 74 68 61 74 20 20 74 68 65 20 22 55 re that the "U
008E50: 73 65 72 3A 22 20 70 72 6F 6D 70 74 20 69 73 20 ser:" prompt is
008E60: 61 6C 77 61 79 73 20 69 6E 0D 0A 20 20 20 74 68 always in.. th
008E70: 65 20 72 69 67 68 74 20 70 6C 61 63 65 2C 20 6A e right place, j
008E80: 75 73 74 20 62 65 6C 6F 77 20 74 68 65 20 65 6E ust below the en
008E90: 64 20 6F 66 20 74 68 65 20 64 69 73 63 20 63 61 d of the disc ca
008EA0: 74 61 6C 6F 67 75 65 2E 0D 0A 0D 0A 20 20 20 45 talogue..... E
008EB0: 4E 44 20 4F 46 20 46 49 4C 45 0D 0A 20 20 20 54 ND OF FILE.. T
008EC0: 68 65 20 70 72 6F 67 72 61 6D 20 65 6E 64 73 20 he program ends
008ED0: 69 6E 20 6C 69 6E 65 20 35 30 20 77 68 65 6E 20 in line 50 when
008EE0: 20 74 68 65 20 73 65 6C 65 63 74 65 64 20 66 69 the selected fi
008EF0: 6C 65 20 69 73 20 52 55 4E 2E 20 20 53 6F 6D 65 le is RUN. Some
008F00: 65 0D 0A 20 20 20 20 20 20 20 20 20 20 63 75 72 e.. cur
008F10: 73 6F 72 20 74 6F 20 74 68 65 20 74 6F 70 20 6C sor to the top l
008F20: 65 66 74 20 6F 66 20 74 68 65 20 73 63 72 65 65 eft of the scree
008F30: 6E 2E 0D 0A 0D 0A 20 20 20 26 42 42 42 41 20 20 n..... &BBBA
008F40: 47 52 41 20 49 4E 49 54 49 41 4C 49 53 45 0D 0A GRA INITIALISE..
008F50: 20 20 20 20 20 20 20 20 20 20 52 65 73 65 74 73 Resets
008F60: 20 74 68 65 20 67 72 61 70 68 69 63 73 20 70 65 the graphics pe
008F70: 6E 20 20 61 6E 64 20 20 20 70 61 70 65 72 2C 20 n and paper,
008F80: 20 74 68 65 20 20 73 69 7A 65 20 20 61 6E 64 20 the size and
008F90: 6F 72 69 67 69 6E 20 6F 66 20 74 68 65 0D 0A 20 origin of the..
008FA0: 20 20 20 20 20 20 20 20 20 67 72 61 70 68 69 63 graphic
008FB0: 73 20 77 69 6E 64 6F 77 2C 20 6D 6F 76 65 73 20 s window, moves
008FC0: 74 68 65 20 67 72 61 70 68 69 63 73 20 63 75 72 the graphics cur
008FD0: 73 6F 72 20 20 74 6F 20 74 68 65 20 62 6F 74 74 sor to the bott
008FE0: 6F 6D 20 6C 65 66 74 2C 20 61 6E 64 0D 0A 20 20 om left, and..
008FF0: 20 20 20 20 20 20 20 20 73 65 74 73 20 74 68 65 sets the
009000: 20 67 72 61 70 68 69 63 73 20 77 72 69 74 65 20 graphics write
009010: 6D 6F 64 65 20 74 6F 20 6E 6F 72 6D 61 6C 2E 0D mode to normal..
009020: 0A 0D 0A 20 20 20 26 42 43 30 32 20 20 53 43 52 ... &BC02 SCR
009030: 20 52 45 53 45 54 0D 0A 20 20 20 20 20 20 20 20 RESET..
009040: 20 20 53 65 74 73 20 74 68 65 20 69 6E 6B 73 20 Sets the inks
009050: 74 6F 20 74 68 65 69 72 20 64 65 66 61 75 6C 74 to their default
009060: 20 76 61 6C 75 65 73 2E 0D 0A 0D 0A 20 20 20 54 values..... T
009070: 68 65 73 65 20 74 68 72 65 65 20 72 6F 75 74 69 hese three routi
009080: 6E 65 73 20 61 72 65 20 61 20 68 61 6E 64 79 20 nes are a handy
009090: 20 77 61 79 20 20 6F 66 20 20 67 65 74 74 69 6E way of gettin
0090A0: 67 20 20 61 20 6C 6F 74 20 6F 66 20 74 68 69 6E g a lot of thin
0090B0: 67 73 20 73 65 74 20 75 70 0D 0A 20 20 20 77 69 gs set up.. wi
0090C0: 74 68 20 76 65 72 79 20 66 65 77 20 63 6F 6D 6D th very few comm
0090D0: 61 6E 64 73 2E 0D 0A 20 20 20 20 20 41 66 74 65 ands... Afte
0090E0: 72 20 73 65 6C 65 63 74 69 6E 67 20 4D 4F 44 45 r selecting MODE
0090F0: 20 32 2C 20 77 65 20 70 72 69 6E 74 20 20 43 48 2, we print CH
009100: 20 70 72 6F 67 72 61 6D 73 0D 0A 20 20 20 6D 61 programs.. ma
009110: 79 20 61 73 73 75 6D 65 20 74 68 61 74 20 74 68 y assume that th
009120: 65 20 73 63 72 65 65 6E 20 69 73 20 61 6C 72 65 e screen is alre
009130: 61 64 79 20 20 69 6E 20 20 4D 4F 44 45 20 20 31 ady in MODE 1
009140: 20 61 73 20 69 74 20 69 73 20 77 68 65 6E 20 79 as it is when y
009150: 6F 75 20 66 69 72 73 74 0D 0A 20 20 20 73 77 69 ou first.. swi
009160: 74 63 68 20 6F 6E 2E 20 20 42 65 66 6F 72 65 20 tch on. Before
009170: 72 75 6E 6E 69 6E 67 20 74 68 65 20 20 70 72 6F running the pro
009180: 67 72 61 6D 20 20 77 65 20 20 72 65 73 65 74 20 gram we reset
009190: 74 68 65 20 67 72 61 70 68 69 63 73 20 77 72 69 the graphics wri
0091A0: 74 65 20 6D 6F 64 65 0D 0A 20 20 20 77 69 74 68 te mode.. with
0091B0: 20 61 6E 6F 74 68 65 72 20 63 61 6C 6C 20 74 6F another call to
0091C0: 20 26 42 42 42 41 20 61 6E 64 20 20 63 68 61 6E &BBBA and chan
0091D0: 67 65 20 20 74 6F 20 20 4D 4F 44 45 20 20 31 2C ge to MODE 1,
0091E0: 20 61 73 20 74 68 65 73 65 20 61 72 65 20 74 68 as these are th
0091F0: 65 20 6F 6E 6C 79 0D 0A 20 20 20 74 68 69 6E 67 e only.. thing
009200: 73 20 77 65 20 68 61 76 65 20 61 6C 74 65 72 65 s we have altere
009210: 64 2E 0D 0A 0D 0A 20 20 20 46 49 4E 41 4C 20 53 d..... FINAL S
009220: 49 4C 4C 59 20 48 45 41 44 49 4E 47 0D 0A 20 20 ILLY HEADING..
009230: 20 41 73 20 61 20 63 68 61 6C 6C 65 6E 67 65 20 As a challenge
009240: 79 6F 75 20 6D 61 79 20 77 61 6E 74 20 74 6F 20 you may want to
009250: 69 6E 76 65 73 74 69 67 61 74 65 20 6C 69 6E 65 investigate line
009260: 20 34 30 20 61 73 20 74 68 61 74 27 73 20 77 68 40 as that's wh
009270: 61 74 20 77 65 27 6C 6C 20 62 65 0D 0A 20 20 20 at we'll be..
009280: 6C 6F 6F 6B 69 6E 67 20 61 74 20 6E 65 78 74 20 looking at next
009290: 74 69 6D 65 2E 20 20 41 6C 73 6F 2C 20 69 66 20 time. Also, if
0092A0: 61 6E 79 6F 6E 65 20 63 61 6E 20 65 78 70 6C 61 anyone can expla
0092B0: 69 6E 20 77 68 79 20 4C 6F 63 6F 6D 6F 74 69 76 in why Locomotiv
0092C0: 65 20 53 6F 66 74 77 61 72 65 0D 0A 20 20 20 64 e Software.. d
0092D0: 65 63 69 64 65 64 20 74 6F 20 69 6E 63 6C 75 64 ecided to includ
0092E0: 65 20 74 68 65 20 43 52 45 41 4C 20 66 75 6E 63 e the CREAL func
0092F0: 74 69 6F 6E 20 69 6E 20 41 6D 73 74 72 61 64 20 tion in Amstrad
009300: 52 24 28 32 33 29 20 20 61 6E 64 20 43 48 52 24 R$(23) and CHR$
009310: 28 31 29 20 74 6F 20 73 77 69 74 63 68 20 74 6F (1) to switch to
009320: 20 58 4F 52 0D 0A 20 20 20 67 72 61 70 68 69 63 XOR.. graphic
009330: 73 20 6D 6F 64 65 2E 20 20 59 6F 75 20 73 65 65 s mode. You see
009340: 20 58 4F 52 20 6D 6F 64 65 20 69 6E 20 20 75 73 XOR mode in us
009350: 65 20 20 61 6C 6C 20 20 74 68 65 20 20 74 69 6D e all the tim
009360: 65 2C 20 61 73 20 69 74 20 69 73 20 75 73 65 64 e, as it is used
009370: 20 74 6F 0D 0A 20 20 20 64 69 73 70 6C 61 79 20 to.. display
009380: 74 68 65 20 42 41 53 49 43 20 74 65 78 74 20 63 the BASIC text c
009390: 75 72 73 6F 72 2E 20 20 20 57 65 20 20 75 73 65 ursor. We use
0093A0: 20 20 74 68 69 73 20 20 73 61 6D 65 20 65 66 66 this same eff
0093B0: 65 63 74 20 74 6F 20 64 69 73 70 6C 61 79 20 6F ect to display o
0093C0: 75 72 0D 0A 20 20 20 70 6F 69 6E 74 65 72 2E 20 ur.. pointer.
0093D0: 20 49 66 20 79 6F 75 20 73 77 69 74 63 68 20 6F If you switch o
0093E0: 6E 20 20 79 6F 75 72 20 20 41 6D 73 74 72 61 64 n your Amstrad
0093F0: 2C 20 20 61 6E 64 20 20 74 79 70 65 20 69 6E 20 , and type in
009400: 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 66 65 the following fe
009410: 77 0D 0A 20 20 20 63 6F 6D 6D 61 6E 64 73 2C 20 w.. commands,
009420: 79 6F 75 20 63 61 6E 20 73 65 65 20 61 20 66 75 you can see a fu
009430: 72 74 68 65 72 20 64 65 6D 6F 6E 73 74 72 61 74 rther demonstrat
009440: 69 6F 6E 3A 0D 0A 0D 0A 20 20 20 20 20 4D 4F 44 ion:.... MOD
009450: 45 20 32 0D 0A 20 20 20 20 20 50 52 49 4E 54 20 E 2.. PRINT
009460: 43 48 52 24 28 32 33 29 3B 43 48 52 24 28 31 29 CHR$(23);CHR$(1)
009470: 0D 0A 20 20 20 20 20 4D 4F 56 45 20 30 2C 33 37 .. MOVE 0,37
009480: 32 3A 44 52 41 57 52 20 32 30 30 2C 30 2C 31 0D 2:DRAWR 200,0,1.
009490: 0A 0D 0A 20 20 20 41 20 68 6F 72 69 7A 6F 6E 74 ... A horizont
0094A0: 61 6C 20 6C 69 6E 65 20 73 68 6F 75 6C 64 20 20 al line should
0094B0: 61 70 70 65 61 72 2C 20 20 63 75 74 74 69 6E 67 appear, cutting
0094C0: 20 20 74 68 72 6F 75 67 68 20 20 73 6F 6D 65 20 through some
0094D0: 20 6F 66 20 74 68 65 20 74 65 78 74 20 79 6F 75 of the text you
0094E0: 0D 0A 20 20 20 74 79 70 65 64 2E 20 20 54 79 70 .. typed. Typ
0094F0: 65 20 74 68 65 20 6C 61 73 74 20 6C 69 6E 65 20 e the last line
009500: 42 41 53 49 43 2C 20 77 65 27 64 20 62 65 20 69 BASIC, we'd be i
009510: 6E 74 65 72 65 73 74 65 64 0D 0A 20 20 20 74 6F nterested.. to
009520: 20 6B 6E 6F 77 21 0D 0A 0D 0A 0D 0A 31 30 20 44 know!......10 D
009530: 45 46 49 4E 54 20 61 2D 7A 3A 4D 45 4D 4F 52 59 EFINT a-z:MEMORY
009540: 20 48 49 4D 45 4D 2D 33 34 3A 61 3D 55 4E 54 28 HIMEM-34:a=UNT(
009550: 48 49 4D 45 4D 2B 31 29 3A 46 4F 52 20 78 3D 30 HIMEM+1):FOR x=0
009560: 20 54 4F 20 33 33 3A 52 45 41 44 20 61 24 3A 0D TO 33:READ a$:.
009570: 0A 20 20 20 50 4F 4B 45 20 61 2B 78 2C 56 41 4C . POKE a+x,VAL
009580: 28 22 26 22 2B 61 24 29 3A 4E 45 58 54 3A 44 41 ("&"+a$):NEXT:DA
009590: 54 41 20 43 44 2C 37 38 2C 42 42 2C 34 43 2C 44 TA CD,78,BB,4C,D
0095A0: 44 2C 36 45 2C 30 2C 44 44 2C 36 36 2C 31 2C 34 D,6E,0,DD,66,1,4
0095B0: 36 2C 37 38 2C 42 37 2C 43 38 2C 32 33 2C 0D 0A 6,78,B7,C8,23,..
0095C0: 20 20 20 35 45 2C 32 33 2C 36 36 2C 36 42 2C 43 5E,23,66,6B,C
0095D0: 44 2C 36 30 2C 42 42 2C 37 37 2C 32 33 2C 43 2C D,60,BB,77,23,C,
0095E0: 37 39 2C 45 35 2C 43 44 2C 36 46 2C 42 42 2C 45 79,E5,CD,6F,BB,E
0095F0: 31 2C 31 30 2C 46 32 2C 43 39 0D 0A 32 30 20 43 1,10,F2,C9..20 C
009600: 41 4C 4C 20 26 42 42 34 45 3A 43 41 4C 4C 20 26 ALL &BB4E:CALL &
009610: 42 43 30 32 3A 43 41 4C 4C 20 26 42 42 42 41 3A BC02:CALL &BBBA:
009620: 4D 4F 44 45 20 32 3A 50 52 49 4E 54 20 43 48 52 MODE 2:PRINT CHR
009630: 24 28 32 33 29 2B 43 48 52 24 28 31 29 3A 78 3D $(23)+CHR$(1):x=
009640: 31 30 30 3A 79 3D 32 39 36 3A 0D 0A 20 20 20 43 100:y=296:.. C
009650: 41 54 3A 76 3D 56 50 4F 53 28 23 30 29 0D 0A 33 AT:v=VPOS(#0)..3
009660: 30 20 57 48 49 4C 45 20 31 3A 54 41 47 3A 66 24 0 WHILE 1:TAG:f$
009670: 3D 53 50 41 43 45 24 28 31 32 29 3A 57 48 49 4C =SPACE$(12):WHIL
009680: 45 20 4D 49 44 24 28 66 24 2C 39 2C 31 29 3C 3E E MID$(f$,9,1)<>
009690: 22 2E 22 20 41 4E 44 20 4D 49 44 24 28 66 24 2C "." AND MID$(f$,
0096A0: 38 2C 31 29 3C 3E 22 3A 22 3A 0D 0A 20 20 20 4D 8,1)<>":":.. M
0096B0: 4F 56 45 20 78 2C 79 3A 50 52 49 4E 54 20 43 48 OVE x,y:PRINT CH
0096C0: 52 24 28 32 31 35 29 3B 3A 47 4F 53 55 42 20 38 R$(215);:GOSUB 8
0096D0: 30 0D 0A 34 30 20 57 48 49 4C 45 20 49 4E 4B 45 0..40 WHILE INKE
0096E0: 59 28 34 37 29 2B 49 4E 4B 45 59 28 31 38 29 2B Y(47)+INKEY(18)+
0096F0: 49 4E 4B 45 59 28 39 29 3D 2D 33 3A 62 3D 78 3A INKEY(9)=-3:b=x:
009700: 61 67 61 69 6E 2C 20 20 61 6E 64 20 20 74 68 65 again, and the
009710: 20 74 65 78 74 20 77 69 6C 6C 20 6D 61 67 69 63 text will magic
009720: 61 6C 6C 79 20 28 6F 72 20 72 61 74 68 65 72 0D ally (or rather.
009730: 0A 20 20 20 6C 6F 67 69 63 61 6C 6C 79 29 20 72 . logically) r
009740: 65 61 70 70 65 61 72 2E 20 20 54 68 69 73 20 69 eappear. This i
009750: 73 20 61 6C 6C 20 20 64 75 65 20 20 74 6F 20 20 s all due to
009760: 74 68 65 20 20 70 72 6F 70 65 72 74 69 65 73 20 the properties
009770: 6F 66 20 58 4F 52 2C 20 61 73 20 61 6E 79 0D 0A of XOR, as any..
009780: 20 20 20 6C 6F 67 69 63 69 61 6E 20 63 6F 75 6C logician coul
009790: 64 20 74 65 6C 6C 20 79 6F 75 2E 0D 0A 0D 0A 20 d tell you.....
0097A0: 20 20 20 20 20 20 20 20 20 20 61 20 20 20 20 20 a
0097B0: 20 20 62 20 20 20 20 20 20 20 61 20 58 4F 52 20 b a XOR
0097C0: 62 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 b....
0097D0: 30 20 20 20 20 20 20 20 30 20 20 20 20 20 20 20 0 0
0097E0: 30 0D 0A 20 20 20 20 20 20 20 20 20 20 20 31 20 0.. 1
0097F0: 20 20 20 20 20 20 30 20 20 20 20 20 20 20 31 0D 0 1.
009800: 0A 20 20 20 20 20 20 20 20 20 20 20 30 20 20 20 . 0
009810: 20 20 20 20 31 20 20 20 20 20 20 20 31 0D 0A 20 1 1..
009820: 20 20 20 20 20 20 20 20 20 20 31 20 20 20 20 20 1
009830: 20 20 31 20 20 20 20 20 20 20 30 0D 0A 0D 0A 20 1 0....
009840: 20 20 46 69 67 75 72 65 20 31 2E 36 0D 0A 0D 0A Figure 1.6....
009850: 0D 0A 20 20 20 20 20 46 69 67 75 72 65 20 31 2E .. Figure 1.
009860: 36 20 73 68 6F 77 73 20 74 68 65 20 22 74 72 75 6 shows the "tru
009870: 74 68 20 74 61 62 6C 65 22 20 66 6F 72 20 20 65 th table" for e
009880: 58 63 6C 75 73 69 76 65 20 4F 52 2E 20 20 49 6D Xclusive OR. Im
009890: 61 67 69 6E 65 20 74 68 61 74 20 61 20 69 73 0D agine that a is.
0098A0: 0A 20 20 20 74 68 65 20 63 6F 6C 6F 75 72 20 6F . the colour o
0098B0: 66 20 61 20 70 69 78 65 6C 20 6F 6E 20 74 68 65 f a pixel on the
0098C0: 20 73 63 72 65 65 6E 2C 20 61 6E 64 20 74 68 61 screen, and tha
0098D0: 74 20 62 20 69 73 20 74 68 65 20 63 6F 6C 6F 75 t b is the colou
0098E0: 72 20 77 65 20 61 72 65 20 67 6F 69 6E 67 0D 0A r we are going..
0098F0: 20 20 20 74 6F 20 70 72 69 6E 74 20 6F 6E 20 74 to print on t
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 C6 02 00 00 00 02 ......N.........
009920: 08 00 C2 02 00 00 00 02 08 00 C7 02 00 00 00 02 ................
009930: 08 00 C3 02 00 00 00 02 08 00 C8 02 00 00 00 02 ................
009940: 08 00 C4 02 00 00 00 02 08 00 C9 02 00 00 00 02 ................
009950: 08 00 C5 02 00 00 00 02 08 00 C1 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: 20 20 67 72 61 70 68 69 63 73 20 6D 6F 64 65 2E graphics mode.
009A10: 20 20 54 68 69 73 20 69 73 20 74 75 72 6E 65 64 This is turned
009A20: 20 6F 6E 20 69 6E 0D 0A 20 20 20 6C 69 6E 65 20 on in.. line
009A30: 32 30 20 62 79 20 70 72 69 6E 74 69 6E 67 20 43 20 by printing C
009A40: 48 52 24 28 32 33 29 20 66 6F 6C 6C 6F 77 65 64 HR$(23) followed
009A50: 20 20 62 79 20 20 43 48 52 24 28 31 29 2E 20 20 by CHR$(1).
009A60: 49 6E 20 58 4F 52 20 6D 6F 64 65 2C 20 77 68 65 In XOR mode, whe
009A70: 6E 20 79 6F 75 0D 0A 20 20 20 70 72 69 6E 74 20 n you.. print
009A80: 61 20 63 68 61 72 61 63 74 65 72 20 74 6F 20 74 a character to t
009A90: 68 65 20 73 63 72 65 65 6E 20 69 74 20 63 61 6E he screen it can
009AA0: 20 20 62 65 20 72 65 6D 6F 76 65 64 20 62 79 20 be removed by
009AB0: 70 72 69 6E 74 69 6E 67 20 69 74 20 61 67 61 69 printing it agai
009AC0: 6E 20 61 74 0D 0A 20 20 20 74 68 65 20 73 61 6D n at.. the sam
009AD0: 65 20 70 6F 73 69 74 69 6F 6E 2C 20 6C 65 61 76 e position, leav
009AE0: 69 6E 67 20 77 68 61 74 20 77 61 73 20 20 75 6E ing what was un
009AF0: 64 65 72 6E 65 61 74 68 20 69 6E 74 61 63 74 2E derneath intact.
009B00: 20 20 54 68 75 73 2C 20 69 6E 20 6C 69 6E 65 20 Thus, in line
009B10: 32 35 30 0D 0A 20 20 20 77 65 20 72 65 6D 6F 76 250.. we remov
009B20: 65 20 74 68 65 20 70 6F 69 6E 74 65 72 20 66 72 e the pointer fr
009B30: 6F 6D 20 69 74 73 20 6F 6C 64 20 20 70 6F 73 69 om its old posi
009B40: 74 69 6F 6E 2C 20 20 61 6E 64 20 69 6E 20 6C 69 tion, and in li
009B50: 6E 65 20 32 36 30 20 70 72 69 6E 74 20 69 74 20 ne 260 print it
009B60: 61 74 0D 0A 20 20 20 74 68 65 20 6E 65 77 20 70 at.. the new p
009B70: 6F 73 69 74 69 6F 6E 2E 20 20 4C 69 6E 65 20 34 osition. Line 4
009B80: 30 20 75 73 65 73 20 62 20 61 6E 64 20 20 63 20 0 uses b and c
009B90: 20 69 6E 73 74 65 61 64 20 6F 66 20 6F 6C 64 78 instead of oldx
009BA0: 20 61 6E 64 20 6F 6C 64 79 20 74 6F 20 6D 61 6B and oldy to mak
009BB0: 65 0D 0A 20 20 20 69 74 20 73 68 6F 72 74 65 72 e.. it shorter
009BC0: 2E 0D 0A 0D 0A 20 20 20 54 52 55 54 48 20 4F 52 ..... TRUTH OR
009BD0: 20 44 41 52 45 0D 0A 20 20 20 4C 65 74 27 73 20 DARE.. Let's
009BE0: 73 65 65 20 68 6F 77 20 77 65 20 63 61 6E 20 61 see how we can a
009BF0: 6C 74 65 72 20 74 68 61 74 20 20 73 75 62 72 6F lter that subro
009C00: 32 29 3E 2D 31 29 2D 28 49 4E 4B 45 59 28 30 29 2)>-1)-(INKEY(0)
009C10: 3E 2D 31 29 29 2A 28 28 49 4E 4B 45 59 28 32 31 >-1))*((INKEY(21
009C20: 29 3D 2D 31 29 2B 32 29 29 29 3A 0D 0A 20 20 20 )=-1)+2))):..
009C30: 20 20 20 4D 4F 56 45 20 62 2C 63 3A 50 52 49 4E MOVE b,c:PRIN
009C40: 54 20 43 48 52 24 28 32 31 35 29 3B 3A 4D 4F 56 T CHR$(215);:MOV
009C50: 45 20 78 2C 79 3A 50 52 49 4E 54 20 43 48 52 24 E x,y:PRINT CHR$
009C60: 28 32 31 35 29 3B 3A 57 45 4E 44 0D 0A 0D 0A 20 (215);:WEND....
009C70: 20 20 53 57 49 4D 4D 49 4E 47 20 4C 45 53 53 4F SWIMMING LESSO
009C80: 4E 0D 0A 20 20 20 49 74 27 73 20 61 62 6F 75 74 N.. It's about
009C90: 20 74 69 6D 65 20 66 6F 72 20 61 6E 20 65 78 70 time for an exp
009CA0: 6C 61 6E 61 74 69 6F 6E 20 20 6F 66 20 20 68 6F lanation of ho
009CB0: 77 20 20 73 6F 6D 65 20 20 6F 66 20 74 68 65 20 w some of the
009CC0: 70 72 6F 67 72 61 6D 20 77 6F 72 6B 73 20 69 6E program works in
009CD0: 0D 0A 20 20 20 64 65 74 61 69 6C 2C 20 73 6F 20 .. detail, so
009CE0: 6C 65 74 27 73 20 64 69 76 65 20 69 6E 20 61 6E let's dive in an
009CF0: 64 20 74 61 63 6B 6C 65 20 74 68 65 20 6C 6F 6E d tackle the lon
009D00: 67 65 73 74 20 6C 69 6E 65 20 6F 66 20 61 6C 6C gest line of all
009D10: 2E 0D 0A 20 20 20 20 20 4C 69 6E 65 20 34 30 20 ... Line 40
009D20: 68 61 73 20 73 6F 6D 65 20 76 65 72 79 20 68 6F has some very ho
009D30: 72 72 69 62 6C 65 20 20 6C 6F 6F 6B 69 6E 67 20 rrible looking
009D40: 20 62 69 74 73 2C 20 20 61 73 20 20 69 74 20 69 bits, as it i
009D50: 73 20 64 6F 69 6E 67 20 61 20 6C 6F 74 20 6F 66 s doing a lot of
009D60: 0D 0A 20 20 20 74 68 69 6E 67 73 20 61 74 20 6F .. things at o
009D70: 6E 63 65 2E 20 20 54 6F 20 67 65 74 20 61 6E 20 nce. To get an
009D80: 20 69 64 65 61 20 20 6F 66 20 20 6A 75 73 74 20 idea of just
009D90: 20 68 6F 77 20 6D 75 63 68 20 69 73 20 73 71 75 how much is squ
009DA0: 61 73 68 65 64 20 69 6E 20 74 68 65 72 65 2C 0D ashed in there,.
009DB0: 0A 20 20 20 74 61 6B 65 20 61 20 6C 6F 6F 6B 20 . take a look
009DC0: 61 74 20 46 69 67 75 72 65 20 31 2E 36 31 2E 20 at Figure 1.61.
009DD0: 20 54 68 69 73 20 6C 69 73 74 73 20 61 20 73 75 This lists a su
009DE0: 62 72 6F 75 74 69 6E 65 20 74 68 61 74 20 64 6F broutine that do
009DF0: 65 73 20 65 78 61 63 74 6C 79 20 74 68 65 0D 0A es exactly the..
009E00: 75 74 69 6E 65 20 20 74 6F 20 6D 61 6B 65 20 69 utine to make i
009E10: 74 20 6D 6F 72 65 20 6C 69 6B 65 20 6C 69 6E 65 t more like line
009E20: 20 34 30 2E 0D 0A 20 20 20 46 69 67 75 72 65 20 40... Figure
009E30: 31 2E 36 31 38 20 68 61 73 20 65 78 61 63 74 6C 1.618 has exactl
009E40: 79 20 74 68 65 20 73 61 6D 65 20 20 73 74 72 75 y the same stru
009E50: 63 74 75 72 65 20 20 61 73 20 20 46 69 67 75 72 cture as Figur
009E60: 65 20 31 2E 36 31 20 62 75 74 20 75 73 65 73 20 e 1.61 but uses
009E70: 74 68 65 0D 0A 20 20 20 73 61 6D 65 20 74 65 63 the.. same tec
009E80: 68 6E 69 71 75 65 73 20 61 73 20 6C 69 6E 65 20 hniques as line
009E90: 34 30 2E 20 20 20 3C 3C 54 68 65 73 65 20 20 6C 40. <<These l
009EA0: 69 6E 65 73 20 20 61 72 65 20 20 73 61 76 65 64 ines are saved
009EB0: 20 61 73 20 46 49 47 31 36 31 38 20 6F 6E 20 74 as FIG1618 on t
009EC0: 68 65 0D 0A 20 20 20 64 69 73 63 2E 3E 3E 0D 0A he.. disc.>>..
009ED0: 20 20 20 20 20 54 6F 20 74 65 73 74 20 74 68 65 To test the
009EE0: 20 74 68 72 65 65 20 73 65 6C 65 63 74 69 6F 6E three selection
009EF0: 20 6B 65 79 73 2C 20 77 65 20 20 63 61 6E 20 61 keys, we can a
009F00: 64 64 20 74 68 65 20 49 4E 4B 45 59 20 76 61 6C dd the INKEY val
009F10: 75 65 73 20 74 6F 67 65 74 68 65 72 2E 0D 0A 20 ues together...
009F20: 20 20 49 66 20 6E 6F 6E 65 20 6F 66 20 74 68 65 If none of the
009F30: 20 74 68 72 65 65 20 6B 65 79 73 20 69 73 20 62 three keys is b
009F40: 65 69 6E 67 20 70 72 65 73 73 65 64 2C 20 74 68 eing pressed, th
009F50: 65 20 73 75 6D 20 77 69 6C 6C 20 62 65 20 2D 33 e sum will be -3
009F60: 2E 20 20 57 65 20 64 6F 20 6E 6F 74 0D 0A 20 20 . We do not..
009F70: 20 68 61 76 65 20 74 6F 20 74 65 73 74 20 74 68 have to test th
009F80: 61 74 20 65 61 63 68 20 6F 66 20 74 68 65 20 49 at each of the I
009F90: 4E 4B 45 59 20 76 61 6C 75 65 73 20 69 73 20 2D NKEY values is -
009FA0: 31 20 69 6E 64 69 76 69 64 75 61 6C 6C 79 2E 20 1 individually.
009FB0: 20 44 6F 69 6E 67 20 74 68 69 73 0D 0A 20 20 20 Doing this..
009FC0: 67 69 76 65 73 20 75 73 20 6C 69 6E 65 20 33 31 gives us line 31
009FD0: 30 20 69 6E 20 46 69 67 75 72 65 20 31 2E 36 31 0 in Figure 1.61
009FE0: 38 2E 0D 0A 20 20 20 20 20 48 6F 77 20 64 6F 20 8... How do
009FF0: 77 65 20 67 6F 20 61 62 6F 75 74 20 74 72 61 6E we go about tran
00A000: 20 20 20 73 61 6D 65 20 61 73 20 6C 69 6E 65 20 same as line
00A010: 34 30 2C 20 62 75 74 20 69 6E 20 61 20 20 6D 6F 40, but in a mo
00A020: 72 65 20 20 63 6F 6E 76 65 6E 74 69 6F 6E 61 6C re conventional
00A030: 20 20 77 61 79 2E 20 20 49 66 20 79 6F 75 20 77 way. If you w
00A040: 61 6E 74 20 74 6F 20 74 72 79 20 69 74 0D 0A 20 ant to try it..
00A050: 20 20 6F 75 74 2C 20 79 6F 75 20 63 6F 75 6C 64 out, you could
00A060: 20 74 79 70 65 20 69 74 20 69 6E 20 20 61 6E 64 type it in and
00A070: 20 20 72 65 70 6C 61 63 65 20 20 6C 69 6E 65 20 replace line
00A080: 20 34 30 20 77 69 74 68 20 22 47 4F 53 55 42 20 40 with "GOSUB
00A090: 31 31 30 22 2E 20 20 49 74 20 69 73 0D 0A 20 20 110". It is..
00A0A0: 20 6D 75 63 68 20 73 6C 6F 77 65 72 2E 20 20 3C much slower. <
00A0B0: 3C 54 68 65 20 64 69 73 63 20 6D 65 6E 75 20 69 <The disc menu i
00A0C0: 73 20 73 61 76 65 64 20 61 73 20 44 49 53 43 4D s saved as DISCM
00A0D0: 45 4E 55 2E 42 41 53 20 61 6E 64 20 79 6F 75 20 ENU.BAS and you
00A0E0: 63 61 6E 20 61 64 64 20 74 68 65 0D 0A 20 20 20 can add the..
00A0F0: 6C 69 6E 65 73 20 69 6E 20 46 69 67 75 72 65 20 lines in Figure
00A100: 31 2E 36 31 20 62 79 20 74 79 70 69 6E 67 20 4D 1.61 by typing M
00A110: 45 52 47 45 22 46 49 47 31 36 31 3E 3E 0D 0A 20 ERGE"FIG161>>..
00A120: 20 20 20 20 4C 6F 6F 6B 69 6E 67 20 61 74 20 74 Looking at t
00A130: 68 65 20 73 75 62 72 6F 75 74 69 6E 65 20 74 6F he subroutine to
00A140: 20 73 74 61 72 74 20 77 69 74 68 2C 20 20 77 65 start with, we
00A150: 20 74 65 73 74 20 74 68 65 20 6B 65 79 73 20 62 test the keys b
00A160: 79 20 75 73 69 6E 67 20 74 68 65 0D 0A 20 20 20 y using the..
00A170: 49 4E 4B 45 59 20 66 75 6E 63 74 69 6F 6E 2E 20 INKEY function.
00A180: 20 54 68 65 20 6E 75 6D 62 65 72 20 69 6E 20 62 The number in b
00A190: 72 61 63 6B 65 74 73 20 69 73 20 20 61 20 20 63 rackets is a c
00A1A0: 6F 64 65 20 66 6F 72 20 74 68 65 20 6B 65 79 20 ode for the key
00A1B0: 77 65 20 77 61 6E 74 20 74 6F 0D 0A 20 20 20 63 we want to.. c
00A1C0: 68 65 63 6B 2E 20 20 49 66 20 74 68 65 20 20 6B heck. If the k
00A1D0: 65 79 20 20 69 73 20 20 6E 6F 74 20 20 70 72 65 ey is not pre
00A1E0: 73 73 65 64 2C 20 20 74 68 65 6E 20 20 49 4E 4B ssed, then INK
00A1F0: 45 59 20 20 67 69 76 65 73 20 20 74 68 65 20 20 EY gives the
00A200: 73 66 6F 72 6D 69 6E 67 20 6C 69 6E 65 73 20 20 sforming lines
00A210: 31 34 30 2D 31 39 30 20 69 6E 74 6F 20 33 34 30 140-190 into 340
00A220: 2D 33 39 30 3F 20 20 54 69 6D 65 20 66 6F 72 20 -390? Time for
00A230: 61 0D 0A 20 20 20 70 72 61 63 74 69 63 61 6C 20 a.. practical
00A240: 6C 65 73 73 6F 6E 20 69 6E 20 54 72 75 65 20 61 lesson in True a
00A250: 6E 64 20 46 61 6C 73 65 2E 20 20 20 54 75 72 6E nd False. Turn
00A260: 20 20 79 6F 75 72 20 20 63 6F 6D 70 75 74 65 72 your computer
00A270: 20 6F 6E 20 61 6E 64 20 74 79 70 65 20 74 68 65 on and type the
00A280: 0D 0A 20 20 20 66 6F 6C 6C 6F 77 69 6E 67 20 63 .. following c
00A290: 6F 6D 6D 61 6E 64 73 3A 0D 0A 0D 0A 20 20 20 20 ommands:....
00A2A0: 20 50 52 49 4E 54 20 35 3E 32 0D 0A 20 20 20 20 PRINT 5>2..
00A2B0: 20 50 52 49 4E 54 20 33 3D 33 0D 0A 20 20 20 20 PRINT 3=3..
00A2C0: 20 50 52 49 4E 54 20 31 32 3C 36 36 0D 0A 0D 0A PRINT 12<66....
00A2D0: 20 20 20 49 6E 20 65 61 63 68 20 63 61 73 65 20 In each case
00A2E0: 22 2D 31 22 20 69 73 20 70 72 69 6E 74 65 64 20 "-1" is printed
00A2F0: 6F 6E 20 74 68 65 20 73 63 72 65 65 6E 2E 20 20 on the screen.
00A300: 54 72 79 20 74 68 65 73 65 20 63 6F 6D 6D 61 6E Try these comman
00A310: 64 73 3A 0D 0A 0D 0A 20 20 20 20 20 50 52 49 4E ds:.... PRIN
00A320: 54 20 32 3E 35 0D 0A 20 20 20 20 20 50 52 49 4E T 2>5.. PRIN
00A330: 54 20 33 3C 3E 33 0D 0A 20 20 20 20 20 50 52 49 T 3<>3.. PRI
00A340: 4E 54 20 31 32 3E 36 36 0D 0A 0D 0A 20 20 20 54 NT 12>66.... T
00A350: 68 69 73 20 74 69 6D 65 20 22 30 22 20 69 73 20 his time "0" is
00A360: 70 72 69 6E 74 65 64 20 61 6C 6C 20 74 68 72 65 printed all thre
00A370: 65 20 20 74 69 6D 65 73 2E 20 20 20 54 68 65 20 e times. The
00A380: 72 65 61 73 6F 6E 20 77 65 20 67 65 74 20 22 2D reason we get "-
00A390: 31 22 20 6F 72 20 22 30 22 0D 0A 20 20 20 70 72 1" or "0".. pr
00A3A0: 69 6E 74 65 64 20 69 73 20 74 68 61 74 20 20 74 inted is that t
00A3B0: 68 65 20 20 73 74 61 74 65 6D 65 6E 74 73 20 20 he statements
00A3C0: 61 66 74 65 72 20 20 74 68 65 20 20 50 52 49 4E after the PRIN
00A3D0: 54 20 20 63 6F 6D 6D 61 6E 64 73 20 20 61 72 65 T commands are
00A3E0: 20 6C 6F 67 69 63 61 6C 0D 0A 20 20 20 65 78 70 logical.. exp
00A3F0: 72 65 73 73 69 6F 6E 73 2E 20 20 42 41 53 49 43 ressions. BASIC
00A400: 76 61 6C 75 65 20 2D 31 2C 0D 0A 20 20 20 6F 74 value -1,.. ot
00A410: 68 65 72 77 69 73 65 2C 20 69 74 20 72 65 74 75 herwise, it retu
00A420: 72 6E 73 20 61 20 20 6E 75 6D 62 65 72 20 20 67 rns a number g
00A430: 72 65 61 74 65 72 20 20 74 68 61 6E 20 20 2D 31 reater than -1
00A440: 2E 20 20 20 48 61 76 65 20 20 61 20 6C 6F 6F 6B . Have a look
00A450: 20 69 6E 20 79 6F 75 72 0D 0A 20 20 20 6D 61 6E in your.. man
00A460: 75 61 6C 20 74 6F 20 66 69 6E 64 20 6F 75 74 20 ual to find out
00A470: 6D 6F 72 65 2E 20 20 20 49 6E 20 20 6C 69 6E 65 more. In line
00A480: 20 20 31 31 30 20 20 77 65 20 20 61 72 65 20 63 110 we are c
00A490: 68 65 63 6B 69 6E 67 20 74 68 61 74 20 74 68 65 hecking that the
00A4A0: 20 53 50 41 43 45 2C 0D 0A 20 20 20 45 4E 54 45 SPACE,.. ENTE
00A4B0: 52 20 61 6E 64 20 43 4F 50 59 20 6B 65 79 73 20 R and COPY keys
00A4C0: 61 72 65 20 6E 6F 74 20 62 65 69 6E 67 20 70 72 are not being pr
00A4D0: 65 73 73 65 64 2E 0D 0A 20 20 20 20 20 54 68 65 essed... The
00A4E0: 20 70 6F 73 69 74 69 6F 6E 20 6F 66 20 74 68 65 position of the
00A4F0: 20 70 6F 69 6E 74 65 72 20 69 73 20 20 68 65 6C pointer is hel
00A500: 64 20 20 69 6E 20 20 74 68 65 20 20 76 61 72 69 d in the vari
00A510: 61 62 6C 65 73 20 78 20 61 6E 64 20 79 2E 20 20 ables x and y.
00A520: 4C 69 6E 65 73 0D 0A 20 20 20 31 34 30 2D 31 39 Lines.. 140-19
00A530: 30 20 63 68 65 63 6B 20 74 68 65 20 63 75 72 73 0 check the curs
00A540: 6F 72 20 6B 65 79 73 2C 20 20 61 6E 64 20 20 61 or keys, and a
00A550: 64 6A 75 73 74 20 20 74 77 6F 20 76 61 72 69 61 djust two varia
00A560: 62 6C 65 73 2C 20 78 61 64 64 20 61 6E 64 20 79 bles, xadd and y
00A570: 61 64 64 2C 0D 0A 20 20 20 77 68 69 63 68 20 61 add,.. which a
00A580: 72 65 20 74 68 65 6E 20 61 64 64 65 64 20 74 6F re then added to
00A590: 20 78 20 61 6E 64 20 79 20 20 69 6E 20 20 6C 69 x and y in li
00A5A0: 6E 65 20 32 30 30 2E 20 20 4C 69 6E 65 73 20 31 ne 200. Lines 1
00A5B0: 37 30 20 61 6E 64 20 32 31 30 20 6D 75 6C 74 69 70 and 210 multi
00A5C0: 70 6C 79 0D 0A 20 20 20 61 64 64 78 20 61 6E 64 ply.. addx and
00A5D0: 20 61 64 64 79 20 62 79 20 33 20 74 6F 20 6D 61 addy by 3 to ma
00A5E0: 6B 65 20 74 68 65 20 70 6F 69 6E 74 65 72 20 6D ke the pointer m
00A5F0: 6F 76 65 20 61 74 20 61 20 72 65 61 73 6F 6E 61 ove at a reasona
00A600: 20 77 6F 72 6B 73 20 6F 75 74 20 20 77 68 65 74 works out whet
00A610: 68 65 72 20 20 61 20 20 6C 6F 67 69 63 61 6C 20 her a logical
00A620: 20 65 78 70 72 65 73 73 69 6F 6E 20 20 69 73 20 expression is
00A630: 74 72 75 65 20 6F 72 0D 0A 20 20 20 66 61 6C 73 true or.. fals
00A640: 65 2E 20 20 49 66 20 69 74 20 69 73 20 74 72 75 e. If it is tru
00A650: 65 2C 20 69 74 20 65 76 61 6C 75 61 74 65 73 20 e, it evaluates
00A660: 74 6F 20 20 2D 31 2C 20 20 61 6E 64 20 69 66 20 to -1, and if
00A670: 69 74 20 69 73 20 66 61 6C 73 65 2C 20 77 65 20 it is false, we
00A680: 67 65 74 20 30 2E 0D 0A 20 20 20 54 68 65 20 65 get 0... The e
00A690: 78 70 72 65 73 73 69 6F 6E 20 22 35 3E 32 22 20 xpression "5>2"
00A6A0: 69 73 20 74 72 75 65 20 73 6F 20 22 2D 31 22 20 is true so "-1"
00A6B0: 69 73 20 70 72 69 6E 74 65 64 20 62 75 74 20 74 is printed but t
00A6C0: 68 65 20 65 78 70 72 65 73 73 69 6F 6E 20 22 31 he expression "1
00A6D0: 32 3E 36 36 22 0D 0A 20 20 20 69 73 20 66 61 6C 2>66".. is fal
00A6E0: 73 65 20 28 62 65 63 61 75 73 65 20 31 32 20 69 se (because 12 i
00A6F0: 73 20 6E 6F 74 20 6C 61 72 67 65 72 20 74 68 61 s not larger tha
00A700: 6E 20 36 36 29 20 61 6E 64 20 73 6F 20 22 30 22 n 66) and so "0"
00A710: 20 69 73 20 70 72 69 6E 74 65 64 2E 0D 0A 20 20 is printed...
00A720: 20 20 20 57 65 20 75 73 75 61 6C 6C 79 20 6D 65 We usually me
00A730: 65 74 20 6C 6F 67 69 63 61 6C 20 65 78 70 72 65 et logical expre
00A740: 73 73 69 6F 6E 73 20 61 73 20 70 61 72 74 20 6F ssions as part o
00A750: 66 20 61 6E 20 49 46 20 73 74 61 74 65 6D 65 6E f an IF statemen
00A760: 74 3A 0D 0A 0D 0A 20 20 20 20 20 49 46 20 3C 6C t:.... IF <l
00A770: 6F 67 69 63 61 6C 20 65 78 70 72 2E 3E 20 54 48 ogical expr.> TH
00A780: 45 4E 20 3C 63 6F 6D 6D 61 6E 64 3E 0D 0A 0D 0A EN <command>....
00A790: 20 20 20 66 6F 72 20 65 78 61 6D 70 6C 65 3A 0D for example:.
00A7A0: 0A 0D 0A 20 20 20 20 20 49 46 20 61 3E 62 20 54 ... IF a>b T
00A7B0: 48 45 4E 20 50 52 49 4E 54 22 61 20 69 73 20 62 HEN PRINT"a is b
00A7C0: 69 67 67 65 72 21 22 0D 0A 0D 0A 20 20 20 42 41 igger!".... BA
00A7D0: 53 49 43 20 77 6F 72 6B 73 20 6F 75 74 20 74 68 SIC works out th
00A7E0: 65 20 76 61 6C 75 65 20 20 6F 66 20 20 74 68 65 e value of the
00A7F0: 20 20 6C 6F 67 69 63 61 6C 20 20 65 78 70 72 65 logical expre
00A800: 62 6C 65 20 73 70 65 65 64 2E 20 20 57 65 20 75 ble speed. We u
00A810: 73 65 0D 0A 20 20 20 49 4E 4B 45 59 28 32 31 29 se.. INKEY(21)
00A820: 20 74 6F 20 74 65 73 74 20 74 68 65 20 53 48 49 to test the SHI
00A830: 46 54 20 6B 65 79 2C 20 61 6E 64 20 69 66 20 20 FT key, and if
00A840: 69 74 20 69 73 20 64 6F 77 6E 20 74 68 65 20 76 it is down the v
00A850: 61 6C 75 65 73 20 6F 66 20 78 61 64 64 20 61 6E alues of xadd an
00A860: 64 0D 0A 20 20 20 79 61 64 64 20 61 72 65 20 6D d.. yadd are m
00A870: 75 6C 74 69 70 6C 69 65 64 20 74 6F 20 6D 61 6B ultiplied to mak
00A880: 65 20 74 68 65 20 6D 6F 76 65 6D 65 6E 74 20 65 e the movement e
00A890: 76 65 6E 20 66 61 73 74 65 72 2E 0D 0A 20 20 20 ven faster...
00A8A0: 20 20 54 68 65 20 6F 74 68 65 72 20 69 6D 70 6F The other impo
00A8B0: 72 74 61 6E 74 20 62 69 74 20 74 6F 20 6D 65 6E rtant bit to men
00A8C0: 74 69 6F 6E 20 69 73 20 74 68 65 20 70 72 69 6E tion is the prin
00A8D0: 74 69 6E 67 20 6F 66 20 74 68 65 20 70 6F 69 6E ting of the poin
00A8E0: 74 65 72 20 6F 6E 20 74 68 65 0D 0A 20 20 20 73 ter on the.. s
00A8F0: 63 72 65 65 6E 2E 20 20 57 65 20 61 72 65 20 75 creen. We are u
00A900: 73 69 6E 67 20 63 68 61 72 61 63 74 65 72 20 32 sing character 2
00A910: 31 35 2C 20 77 68 69 63 68 20 69 73 20 61 20 73 15, which is a s
00A920: 75 69 74 61 62 6C 79 20 70 6F 69 6E 74 79 20 73 uitably pointy s
00A930: 68 61 70 65 2E 20 20 54 6F 0D 0A 20 20 20 61 6C hape. To.. al
00A940: 6C 6F 77 20 74 68 65 20 70 6F 69 6E 74 65 72 20 low the pointer
00A950: 74 6F 20 6D 6F 76 65 20 73 6D 6F 6F 74 68 6C 79 to move smoothly
00A960: 20 20 61 63 72 6F 73 73 20 20 74 68 65 20 73 63 across the sc
00A970: 72 65 65 6E 2C 20 77 65 20 61 72 65 20 70 72 69 reen, we are pri
00A980: 6E 74 69 6E 67 20 69 74 0D 0A 20 20 20 61 74 20 nting it.. at
00A990: 74 68 65 20 67 72 61 70 68 69 63 73 20 63 75 72 the graphics cur
00A9A0: 73 6F 72 20 70 6F 73 69 74 69 6F 6E 2E 20 20 54 sor position. T
00A9B0: 68 69 73 20 66 65 61 74 75 72 65 20 20 69 73 20 his feature is
00A9C0: 74 75 72 6E 65 64 20 6F 6E 20 77 69 74 68 20 22 turned on with "
00A9D0: 54 41 47 22 20 69 6E 0D 0A 20 20 20 6C 69 6E 65 TAG" in.. line
00A9E0: 20 33 30 2E 20 20 57 65 20 61 72 65 20 61 6C 73 30. We are als
00A9F0: 6F 20 75 73 69 6E 67 20 74 68 65 20 20 58 4F 52 o using the XOR
00AA00: 23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61 #Programmers' Pa
00AA10: 74 63 68 20 32 20 2D 20 57 41 43 43 49 20 31 31 tch 2 - WACCI 11
00AA20: 30 2C 20 4D 61 72 20 31 39 39 37 2C 20 70 2E 20 0, Mar 1997, p.
00AA30: 31 34 2D 31 35 0D 0A 20 20 20 50 52 4F 47 52 41 14-15.. PROGRA
00AA40: 4D 4D 45 52 53 27 20 50 41 54 43 48 20 32 0D 0A MMERS' PATCH 2..
00AA50: 20 20 20 42 79 20 53 74 65 70 68 65 6E 20 61 6E By Stephen an
00AA60: 64 20 4D 61 74 74 68 65 77 20 50 68 69 6C 6C 69 d Matthew Philli
00AA70: 70 73 0D 0A 0D 0A 20 20 20 57 65 6C 6C 2C 20 74 ps.... Well, t
00AA80: 68 69 73 20 6D 6F 6E 74 68 20 20 77 65 20 20 6D his month we m
00AA90: 6F 76 65 20 20 66 72 6F 6D 20 20 74 68 65 20 20 ove from the
00AAA0: 73 74 61 72 74 65 72 20 20 74 6F 20 20 61 20 20 starter to a
00AAB0: 6C 69 67 68 74 6C 79 20 67 72 69 6C 6C 65 64 20 lightly grilled
00AAC0: 61 6E 64 0D 0A 20 20 20 63 61 72 65 66 75 6C 6C and.. carefull
00AAD0: 79 20 73 74 75 66 66 65 64 20 70 6F 72 74 69 6F y stuffed portio
00AAE0: 6E 20 6F 66 20 20 70 72 6F 67 72 61 6D 2C 20 20 n of program,
00AAF0: 64 65 6C 69 63 61 74 65 6C 79 20 20 73 65 61 73 delicately seas
00AB00: 6F 6E 65 64 20 77 69 74 68 20 74 61 72 72 61 67 oned with tarrag
00AB10: 6F 6E 0D 0A 20 20 20 61 6E 64 20 63 68 69 76 65 on.. and chive
00AB20: 73 2C 20 61 6E 64 20 73 65 72 76 65 64 20 77 69 s, and served wi
00AB30: 74 68 20 61 20 67 65 6E 65 72 6F 75 73 20 68 65 th a generous he
00AB40: 6C 70 69 6E 67 20 6F 66 20 76 65 72 62 69 61 67 lping of verbiag
00AB50: 65 2E 0D 0A 0D 0A 20 20 20 34 30 20 57 48 49 4C e..... 40 WHIL
00AB60: 45 20 49 4E 4B 45 59 28 34 37 29 2B 49 4E 4B 45 E INKEY(47)+INKE
00AB70: 59 28 31 38 29 2B 49 4E 4B 45 59 28 39 29 3D 2D Y(18)+INKEY(9)=-
00AB80: 33 3A 62 3D 78 3A 63 3D 79 3A 0D 0A 20 20 20 20 3:b=x:c=y:..
00AB90: 20 20 78 3D 4D 41 58 28 30 2C 4D 49 4E 28 36 33 x=MAX(0,MIN(63
00ABA0: 32 2C 78 2B 33 2A 28 28 49 4E 4B 45 59 28 38 29 2,x+3*((INKEY(8)
00ABB0: 3E 2D 31 29 2D 28 49 4E 4B 45 59 28 31 29 3E 2D >-1)-(INKEY(1)>-
00ABC0: 31 29 29 2A 28 34 2B 33 2A 28 49 4E 4B 45 59 28 1))*(4+3*(INKEY(
00ABD0: 32 31 29 3D 2D 31 29 29 29 29 3A 0D 0A 20 20 20 21)=-1)))):..
00ABE0: 20 20 20 79 3D 4D 41 58 28 31 35 2C 4D 49 4E 28 y=MAX(15,MIN(
00ABF0: 33 39 39 2C 79 2B 33 2A 28 28 49 4E 4B 45 59 28 399,y+3*((INKEY(
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 C5 02 00 00 00 02 ......N.........
00AC20: 09 00 C1 02 00 00 00 02 09 00 C6 02 00 00 00 02 ................
00AC30: 09 00 C2 02 00 00 00 02 09 00 C7 02 00 00 00 02 ................
00AC40: 09 00 C3 02 00 00 00 02 09 00 C8 02 00 00 00 02 ................
00AC50: 09 00 C4 02 00 00 00 02 09 00 C9 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 32 30 30 20 69 73 20 66 6F 72 6D 65 64 20 69 200 is formed i
00AD10: 6E 20 61 20 73 69 6D 69 6C 61 72 20 77 61 79 2E n a similar way.
00AD20: 0D 0A 0D 0A 20 20 20 4D 41 58 20 50 41 43 4B 53 .... MAX PACKS
00AD30: 0D 0A 20 20 20 4C 69 6E 65 73 20 32 33 30 2D 32 .. Lines 230-2
00AD40: 36 30 20 61 72 65 20 74 72 61 6E 73 66 6F 72 6D 60 are transform
00AD50: 65 64 20 69 6E 74 6F 20 20 34 33 30 2D 34 36 30 ed into 430-460
00AD60: 20 20 75 73 69 6E 67 20 74 68 65 20 4D 41 58 69 using the MAXi
00AD70: 6D 75 6D 20 61 6E 64 20 4D 49 4E 69 6D 75 6D 0D mum and MINimum.
00AD80: 0A 20 20 20 66 75 6E 63 74 69 6F 6E 73 2E 20 20 . functions.
00AD90: 4D 41 58 20 69 73 20 70 61 73 73 65 64 20 20 73 MAX is passed s
00ADA0: 65 76 65 72 61 6C 20 20 6E 75 6D 62 65 72 73 20 everal numbers
00ADB0: 20 61 6E 64 20 20 72 65 74 75 72 6E 73 20 74 68 and returns th
00ADC0: 65 20 6C 61 72 67 65 73 74 2C 20 4D 49 4E 0D 0A e largest, MIN..
00ADD0: 20 20 20 72 65 74 75 72 6E 73 20 74 68 65 20 73 returns the s
00ADE0: 6D 61 6C 6C 65 73 74 2E 0D 0A 20 20 20 20 20 4C mallest... L
00ADF0: 6F 6F 6B 20 61 74 20 6C 69 6E 65 20 34 34 30 3A ook at line 440:
00AE00: 0D 0A 0D 0A 20 20 20 20 20 34 34 30 20 78 3D 4D .... 440 x=M
00AE10: 41 58 28 30 2C 78 29 0D 0A 0D 0A 20 20 20 49 66 AX(0,x).... If
00AE20: 20 78 3E 30 20 74 68 65 6E 20 4D 41 58 28 30 2C x>0 then MAX(0,
00AE30: 78 29 20 77 69 6C 6C 20 20 72 65 74 75 72 6E 20 x) will return
00AE40: 20 78 20 20 73 6F 20 20 77 65 20 61 72 65 20 65 x so we are e
00AE50: 66 66 65 63 74 69 76 65 6C 79 20 73 61 79 69 6E ffectively sayin
00AE60: 67 20 22 78 3D 78 22 2E 0D 0A 20 20 20 48 6F 77 g "x=x"... How
00AE70: 65 76 65 72 2C 20 69 66 20 78 3C 30 2C 20 4D 41 ever, if x<0, MA
00AE80: 58 28 30 2C 78 29 20 77 69 6C 6C 20 72 65 74 75 X(0,x) will retu
00AE90: 72 6E 20 20 30 20 20 61 6E 64 20 20 77 65 20 61 rn 0 and we a
00AEA0: 72 65 20 73 61 79 69 6E 67 20 22 78 3D 30 22 2C re saying "x=0",
00AEB0: 20 73 6F 20 74 68 65 0D 0A 20 20 20 65 66 66 65 so the.. effe
00AEC0: 63 74 20 69 73 20 65 78 61 63 74 6C 79 20 74 68 ct is exactly th
00AED0: 65 20 73 61 6D 65 20 61 73 20 74 68 65 20 49 46 e same as the IF
00AEE0: 20 73 74 61 74 65 6D 65 6E 74 20 69 6E 20 6C 69 statement in li
00AEF0: 6E 65 20 32 34 30 2E 0D 0A 0D 0A 20 20 20 4F 52 ne 240..... OR
00AF00: 73 73 69 6F 6E 2C 20 20 61 6E 64 20 75 6E 6C 65 ssion, and unle
00AF10: 73 73 20 69 74 20 69 73 0D 0A 20 20 20 66 61 6C ss it is.. fal
00AF20: 73 65 20 28 7A 65 72 6F 29 2C 20 74 68 65 20 63 se (zero), the c
00AF30: 6F 6D 6D 61 6E 64 20 66 6F 6C 6C 6F 77 69 6E 67 ommand following
00AF40: 20 54 48 45 4E 20 69 73 20 65 78 65 63 75 74 65 THEN is execute
00AF50: 64 2E 20 20 54 72 79 20 74 68 69 73 3A 0D 0A 0D d. Try this:...
00AF60: 0A 20 20 20 20 20 49 46 20 2D 31 20 54 48 45 4E . IF -1 THEN
00AF70: 20 50 52 49 4E 54 22 4D 69 6E 75 73 20 6F 6E 65 PRINT"Minus one
00AF80: 20 69 73 20 74 72 75 65 22 0D 0A 0D 0A 20 20 20 is true"....
00AF90: 54 68 65 20 75 73 65 66 75 6C 6E 65 73 73 20 6F The usefulness o
00AFA0: 66 20 54 72 75 65 20 61 6E 64 20 46 61 6C 73 65 f True and False
00AFB0: 20 20 68 61 76 69 6E 67 20 20 6E 75 6D 65 72 69 having numeri
00AFC0: 63 61 6C 20 20 76 61 6C 75 65 73 20 69 73 20 74 cal values is t
00AFD0: 68 61 74 20 77 65 20 63 61 6E 0D 0A 20 20 20 75 hat we can.. u
00AFE0: 73 65 20 74 68 65 20 2D 31 20 61 6E 64 20 30 20 se the -1 and 0
00AFF0: 69 6E 20 61 72 69 74 68 6D 65 74 69 63 20 65 78 in arithmetic ex
00B000: 70 72 65 73 73 69 6F 6E 73 2C 20 66 6F 72 20 69 pressions, for i
00B010: 6E 73 74 61 6E 63 65 3A 0D 0A 0D 0A 20 20 20 20 nstance:....
00B020: 20 61 3D 28 35 3E 32 29 0D 0A 20 20 20 20 20 50 a=(5>2).. P
00B030: 52 49 4E 54 20 61 2A 33 0D 0A 0D 0A 20 20 20 59 RINT a*3.... Y
00B040: 6F 75 20 73 68 6F 75 6C 64 20 67 65 74 20 2D 33 ou should get -3
00B050: 20 61 70 70 65 61 72 69 6E 67 2E 20 20 46 69 76 appearing. Fiv
00B060: 65 20 69 73 20 20 62 69 67 67 65 72 20 20 74 68 e is bigger th
00B070: 61 6E 20 74 77 6F 2C 20 73 6F 20 22 35 3E 32 22 an two, so "5>2"
00B080: 20 69 73 20 74 72 75 65 2C 0D 0A 20 20 20 73 6F is true,.. so
00B090: 20 61 20 69 73 20 73 65 74 20 74 6F 20 2D 31 2E a is set to -1.
00B0A0: 20 20 50 72 69 6E 74 69 6E 67 20 74 68 72 65 65 Printing three
00B0B0: 20 74 69 6D 65 73 20 61 20 67 69 76 65 73 20 2D times a gives -
00B0C0: 33 2E 0D 0A 20 20 20 20 20 48 6F 77 20 64 6F 65 3... How doe
00B0D0: 73 20 74 68 69 73 20 68 65 6C 70 20 75 73 20 77 s this help us w
00B0E0: 69 74 68 20 6C 69 6E 65 20 34 30 2C 20 74 68 65 ith line 40, the
00B0F0: 6E 3F 20 20 57 65 6C 6C 2C 20 6C 69 6E 65 20 33 n? Well, line 3
00B100: 41 4E 47 45 20 53 51 55 41 53 48 0D 0A 20 20 20 ANGE SQUASH..
00B110: 4C 6F 6F 6B 20 61 74 20 6C 69 6E 65 20 33 37 30 Look at line 370
00B120: 2E 20 20 57 68 61 74 20 69 73 20 74 68 65 20 76 . What is the v
00B130: 61 6C 75 65 20 20 6F 66 20 20 61 64 64 78 20 6F alue of addx o
00B140: 6E 20 74 68 65 20 72 69 67 68 74 20 68 61 6E 64 n the right hand
00B150: 20 73 69 64 65 3F 20 20 57 65 0D 0A 20 20 20 68 side? We.. h
00B160: 61 76 65 20 6A 75 73 74 20 64 65 66 69 6E 65 64 ave just defined
00B170: 20 69 74 20 69 6E 20 6C 69 6E 65 20 33 36 30 2E it in line 360.
00B180: 20 20 54 68 65 20 20 72 69 67 68 74 20 68 61 6E The right han
00B190: 64 20 73 69 64 65 20 6F 66 20 6C 69 6E 65 20 33 d side of line 3
00B1A0: 36 30 20 63 61 6E 20 62 65 0D 0A 20 20 20 69 6E 60 can be.. in
00B1B0: 73 65 72 74 65 64 20 69 6E 74 6F 20 6C 69 6E 65 serted into line
00B1C0: 20 33 37 30 20 61 6E 64 20 6C 69 6E 65 20 33 36 370 and line 36
00B1D0: 30 20 72 65 6D 6F 76 65 64 3A 0D 0A 0D 0A 20 20 0 removed:....
00B1E0: 20 20 20 33 37 30 20 61 64 64 78 3D 33 2A 61 64 370 addx=3*ad
00B1F0: 64 78 2A 28 34 2B 33 2A 28 49 4E 4B 45 59 28 32 dx*(4+3*(INKEY(2
00B200: 31 29 3D 2D 31 29 29 0D 0A 0D 0A 20 20 20 57 65 1)=-1)).... We
00B210: 20 63 61 6E 20 74 68 65 6E 20 72 65 6D 6F 76 65 can then remove
00B220: 20 6C 69 6E 65 20 33 35 30 20 61 6E 64 20 69 6E line 350 and in
00B230: 73 65 72 74 20 69 74 20 69 6E 74 6F 20 6C 69 6E sert it into lin
00B240: 65 20 33 37 30 3A 0D 0A 0D 0A 20 20 20 20 20 33 e 370:.... 3
00B250: 37 30 20 61 64 64 78 3D 33 2A 28 61 64 64 78 2D 70 addx=3*(addx-
00B260: 28 49 4E 4B 45 59 28 31 29 3E 2D 31 29 29 2A 28 (INKEY(1)>-1))*(
00B270: 34 2B 33 2A 28 49 4E 4B 45 59 28 32 31 29 3D 2D 4+3*(INKEY(21)=-
00B280: 31 29 29 0D 0A 0D 0A 20 20 20 53 69 6D 69 6C 61 1)).... Simila
00B290: 72 6C 79 2C 20 6C 69 6E 65 20 33 34 30 20 63 61 rly, line 340 ca
00B2A0: 6E 20 62 65 20 72 65 6D 6F 76 65 64 3A 0D 0A 0D n be removed:...
00B2B0: 0A 20 20 20 20 20 33 37 30 20 61 64 64 78 3D 33 . 370 addx=3
00B2C0: 2A 28 28 49 4E 4B 45 59 28 38 29 3E 2D 31 29 2D *((INKEY(8)>-1)-
00B2D0: 28 49 4E 4B 45 59 28 31 29 3E 2D 31 29 29 2A 28 (INKEY(1)>-1))*(
00B2E0: 34 2B 33 2A 28 49 4E 4B 45 59 28 32 31 29 3D 2D 4+3*(INKEY(21)=-
00B2F0: 31 29 29 0D 0A 0D 0A 20 20 20 20 20 45 78 61 63 1)).... Exac
00B300: 34 30 20 69 73 3A 0D 0A 0D 0A 20 20 20 20 20 33 40 is:.... 3
00B310: 34 30 20 61 64 64 78 3D 28 49 4E 4B 45 59 28 38 40 addx=(INKEY(8
00B320: 29 3E 2D 31 29 0D 0A 0D 0A 20 20 20 49 74 20 68 )>-1).... It h
00B330: 61 73 20 65 78 61 63 74 6C 79 20 74 68 65 20 73 as exactly the s
00B340: 61 6D 65 20 65 66 66 65 63 74 20 61 73 20 6C 69 ame effect as li
00B350: 6E 65 20 20 31 34 30 2C 20 62 75 74 20 67 65 74 ne 140, but get
00B360: 73 20 72 69 64 20 6F 66 20 74 68 65 20 22 49 46 s rid of the "IF
00B370: 22 2E 20 20 49 66 0D 0A 20 20 20 74 68 65 20 6C ". If.. the l
00B380: 65 66 74 20 63 75 72 73 6F 72 20 6B 65 79 20 69 eft cursor key i
00B390: 73 20 70 72 65 73 73 65 64 2C 20 74 68 65 6E 20 s pressed, then
00B3A0: 20 49 4E 4B 45 59 28 38 29 20 77 69 6C 6C 20 62 INKEY(8) will b
00B3B0: 65 20 67 72 65 61 74 65 72 20 74 68 61 6E 20 2D e greater than -
00B3C0: 31 2C 20 73 6F 0D 0A 20 20 20 22 28 49 4E 4B 45 1, so.. "(INKE
00B3D0: 59 28 38 29 3E 2D 31 29 22 20 69 73 20 74 72 75 Y(8)>-1)" is tru
00B3E0: 65 20 61 6E 64 20 61 64 64 78 20 69 73 20 73 65 e and addx is se
00B3F0: 74 20 74 6F 20 2D 31 2E 20 20 49 66 20 69 74 20 t to -1. If it
00B400: 69 73 20 6E 6F 74 20 70 72 65 73 73 65 64 2C 20 is not pressed,
00B410: 61 64 64 78 0D 0A 20 20 20 77 69 6C 6C 20 62 65 addx.. will be
00B420: 20 73 65 74 20 74 6F 20 7A 65 72 6F 2C 20 61 73 set to zero, as
00B430: 20 74 68 65 20 6C 6F 67 69 63 61 6C 20 65 78 70 the logical exp
00B440: 72 65 73 73 69 6F 6E 20 22 28 49 4E 4B 45 59 28 ression "(INKEY(
00B450: 38 29 3E 2D 31 29 22 20 69 73 20 66 61 6C 73 65 8)>-1)" is false
00B460: 2E 0D 0A 20 20 20 20 20 49 6E 20 6C 69 6E 65 73 ... In lines
00B470: 20 33 35 30 20 61 6E 64 20 33 39 30 20 77 65 20 350 and 390 we
00B480: 20 73 75 62 74 72 61 63 74 20 20 74 68 65 20 20 subtract the
00B490: 49 4E 4B 45 59 20 72 65 74 75 72 6E 20 76 61 6C INKEY return val
00B4A0: 75 65 20 66 72 6F 6D 20 61 64 64 78 20 61 6E 64 ue from addx and
00B4B0: 0D 0A 20 20 20 61 64 64 79 2E 20 20 49 66 20 74 .. addy. If t
00B4C0: 68 65 20 6B 65 79 20 69 73 20 20 62 65 69 6E 67 he key is being
00B4D0: 20 20 70 72 65 73 73 65 64 20 20 49 4E 4B 45 59 pressed INKEY
00B4E0: 20 20 72 65 74 75 72 6E 73 20 20 2D 31 20 73 6F returns -1 so
00B4F0: 20 73 75 62 74 72 61 63 74 69 6E 67 20 69 74 0D subtracting it.
00B500: 74 6C 79 20 74 68 65 20 73 61 6D 65 20 70 72 6F tly the same pro
00B510: 63 65 64 75 72 65 20 63 61 6E 20 62 65 20 20 66 cedure can be f
00B520: 6F 6C 6C 6F 77 65 64 20 74 6F 20 73 71 75 61 73 ollowed to squas
00B530: 68 20 6C 69 6E 65 73 20 33 37 30 2D 34 30 30 20 h lines 370-400
00B540: 69 6E 74 6F 0D 0A 20 20 20 6C 69 6E 65 20 34 31 into.. line 41
00B550: 30 2E 0D 0A 20 20 20 20 20 4E 6F 77 20 74 68 61 0... Now tha
00B560: 74 20 61 6C 6C 20 74 68 6F 73 65 20 6C 69 6E 65 t all those line
00B570: 73 20 68 61 76 65 20 62 65 65 6E 20 20 73 71 75 s have been squ
00B580: 61 73 68 65 64 20 69 6E 74 6F 20 6A 75 73 74 20 ashed into just
00B590: 74 77 6F 20 77 65 20 64 6F 6E 27 74 20 6E 65 65 two we don't nee
00B5A0: 64 0D 0A 20 20 20 61 64 64 78 20 61 6E 64 20 61 d.. addx and a
00B5B0: 64 64 79 20 61 6E 79 6D 6F 72 65 2E 20 20 4C 69 ddy anymore. Li
00B5C0: 6E 65 73 20 33 37 30 2C 20 20 34 31 30 20 20 61 nes 370, 410 a
00B5D0: 6E 64 20 20 34 32 30 20 63 61 6E 20 62 65 20 63 nd 420 can be c
00B5E0: 6F 6D 62 69 6E 65 64 20 69 6E 74 6F 20 6F 6E 65 ombined into one
00B5F0: 0D 0A 20 20 20 61 6E 64 20 6C 69 6E 65 20 33 33 .. and line 33
00B600: 30 20 64 65 6C 65 74 65 64 2E 0D 0A 20 20 20 20 0 deleted...
00B610: 20 4F 6E 63 65 20 6C 69 6E 65 73 20 34 33 30 20 Once lines 430
00B620: 61 6E 64 20 34 34 30 20 61 72 65 20 63 6F 6D 62 and 440 are comb
00B630: 69 6E 65 64 20 69 6E 74 6F 0D 0A 0D 0A 20 20 20 ined into....
00B640: 20 20 34 34 30 20 78 3D 4D 41 58 28 30 2C 4D 49 440 x=MAX(0,MI
00B650: 4E 28 36 33 32 2C 78 29 29 0D 0A 0D 0A 20 20 20 N(632,x))....
00B660: 61 6E 64 20 6C 69 6E 65 73 20 34 35 30 20 61 6E and lines 450 an
00B670: 64 20 34 36 30 20 69 6E 74 6F 0D 0A 0D 0A 20 20 d 460 into....
00B680: 20 20 20 34 36 30 20 79 3D 4D 41 58 28 31 35 2C 460 y=MAX(15,
00B690: 4D 49 4E 28 33 39 39 2C 79 29 29 0D 0A 0D 0A 20 MIN(399,y))....
00B6A0: 20 20 77 65 20 6A 75 73 74 20 68 61 76 65 20 74 we just have t
00B6B0: 6F 20 63 6F 6D 62 69 6E 65 20 74 68 65 20 20 6B o combine the k
00B6C0: 65 79 2D 63 68 65 63 6B 69 6E 67 20 20 61 6E 64 ey-checking and
00B6D0: 20 72 61 6E 67 65 2D 63 68 65 63 6B 69 6E 67 20 range-checking
00B6E0: 70 61 72 74 73 20 74 6F 20 67 65 74 0D 0A 20 20 parts to get..
00B6F0: 20 74 68 65 20 65 78 70 72 65 73 73 69 6F 6E 73 the expressions
00B700: 0A 20 20 20 6D 65 61 6E 73 20 77 65 20 73 75 62 . means we sub
00B710: 74 72 61 63 74 20 2D 31 20 6F 72 2C 20 69 6E 20 tract -1 or, in
00B720: 6F 74 68 65 72 20 77 6F 72 64 73 2C 20 61 64 64 other words, add
00B730: 20 31 2E 0D 0A 20 20 20 20 20 4C 69 6E 65 73 20 1... Lines
00B740: 31 36 30 20 61 6E 64 20 32 30 30 20 61 72 65 20 160 and 200 are
00B750: 61 20 62 69 74 20 6D 6F 72 65 20 74 72 69 63 6B a bit more trick
00B760: 79 20 74 6F 20 61 6C 74 65 72 2E 20 20 54 61 6B y to alter. Tak
00B770: 69 6E 67 20 6C 69 6E 65 20 31 36 30 20 61 73 20 ing line 160 as
00B780: 61 6E 0D 0A 20 20 20 65 78 61 6D 70 6C 65 2C 20 an.. example,
00B790: 69 66 20 53 48 49 46 54 20 69 73 20 62 65 69 6E if SHIFT is bein
00B7A0: 67 20 70 72 65 73 73 65 64 20 77 65 20 20 77 61 g pressed we wa
00B7B0: 6E 74 20 74 6F 20 6D 75 6C 74 69 70 6C 79 20 62 nt to multiply b
00B7C0: 79 20 34 2C 20 6F 74 68 65 72 77 69 73 65 20 77 y 4, otherwise w
00B7D0: 65 0D 0A 20 20 20 77 61 6E 74 20 74 6F 20 64 6F e.. want to do
00B7E0: 20 6E 6F 74 68 69 6E 67 2E 20 20 41 6E 20 65 71 nothing. An eq
00B7F0: 75 69 76 61 6C 65 6E 74 20 20 74 6F 20 20 64 6F uivalent to do
00B800: 69 6E 67 20 6E 6F 74 68 69 6E 67 20 69 73 20 6D ing nothing is m
00B810: 75 6C 74 69 70 6C 79 69 6E 67 20 62 79 20 31 2E ultiplying by 1.
00B820: 0D 0A 20 20 20 49 66 20 77 65 20 63 68 6F 6F 73 .. If we choos
00B830: 65 20 74 68 65 20 6C 6F 67 69 63 61 6C 20 65 78 e the logical ex
00B840: 70 72 65 73 73 69 6F 6E 20 22 49 4E 4B 45 59 28 pression "INKEY(
00B850: 32 31 29 3D 2D 31 22 20 20 74 68 65 6E 20 77 65 21)=-1" then we
00B860: 20 67 65 74 20 30 20 77 68 65 6E 20 74 68 65 0D get 0 when the.
00B870: 0A 20 20 20 6B 65 79 20 69 73 20 64 6F 77 6E 20 . key is down
00B880: 61 6E 64 20 2D 31 20 77 68 65 6E 20 20 69 74 20 and -1 when it
00B890: 20 69 73 20 20 75 70 2E 20 20 20 4F 75 72 20 20 is up. Our
00B8A0: 74 61 72 67 65 74 20 6D 75 6C 74 69 70 6C 69 65 target multiplie
00B8B0: 72 73 20 61 72 65 20 34 20 61 6E 64 20 31 0D 0A rs are 4 and 1..
00B8C0: 20 20 20 74 68 6F 75 67 68 20 73 6F 20 73 6F 6D though so som
00B8D0: 65 20 6D 61 6E 69 70 75 6C 61 74 69 6F 6E 20 69 e manipulation i
00B8E0: 73 20 6E 65 65 64 65 64 20 74 6F 20 6D 61 70 20 s needed to map
00B8F0: 74 68 65 20 70 61 69 72 20 30 2C 2D 31 20 74 6F the pair 0,-1 to
00B900: 20 69 6E 20 6C 69 6E 65 20 34 30 2E 0D 0A 0D 0A in line 40.....
00B910: 20 20 20 50 48 45 57 57 21 21 0D 0A 20 20 20 57 PHEWW!!.. W
00B920: 65 20 68 6F 70 65 20 79 6F 75 20 63 61 6E 20 75 e hope you can u
00B930: 6E 64 65 72 73 74 61 6E 64 20 20 74 68 65 20 20 nderstand the
00B940: 63 6F 6D 70 6C 69 63 61 74 65 64 20 20 65 78 70 complicated exp
00B950: 72 65 73 73 69 6F 6E 73 20 20 69 6E 20 6C 69 6E ressions in lin
00B960: 65 20 34 30 20 6E 6F 77 2E 0D 0A 20 20 20 54 68 e 40 now... Th
00B970: 65 79 20 72 65 61 6C 6C 79 20 61 72 65 20 61 62 ey really are ab
00B980: 6F 75 74 20 61 73 20 62 61 64 20 61 73 20 74 68 out as bad as th
00B990: 69 6E 67 73 20 67 65 74 21 0D 0A 20 20 20 20 20 ings get!..
00B9A0: 49 6E 20 74 68 65 20 6E 65 78 74 20 61 72 74 69 In the next arti
00B9B0: 63 6C 65 20 77 65 20 77 69 6C 6C 20 20 70 72 6F cle we will pro
00B9C0: 62 61 62 6C 79 20 20 74 61 6B 65 20 20 61 20 20 bably take a
00B9D0: 67 6F 6F 64 20 6C 6F 6F 6B 20 61 74 20 74 68 65 good look at the
00B9E0: 20 6D 61 63 68 69 6E 65 0D 0A 20 20 20 63 6F 64 machine.. cod
00B9F0: 65 2C 20 61 6E 64 20 61 6C 73 6F 20 65 78 61 6D e, and also exam
00BA00: 69 6E 65 20 20 61 20 20 66 65 77 20 20 69 73 73 ine a few iss
00BA10: 75 65 73 20 20 6F 66 20 20 63 6F 6D 70 61 74 69 ues of compati
00BA20: 62 69 6C 69 74 79 2E 20 20 54 68 65 6E 20 61 67 bility. Then ag
00BA30: 61 69 6E 2C 20 77 65 0D 0A 20 20 20 6D 69 67 68 ain, we.. migh
00BA40: 74 20 6E 6F 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 31 t not....... 1
00BA50: 30 30 20 52 45 4D 20 41 6E 20 69 6E 65 66 66 69 00 REM An ineffi
00BA60: 63 69 65 6E 74 20 73 75 62 72 6F 75 74 69 6E 65 cient subroutine
00BA70: 20 74 6F 20 72 65 70 6C 61 63 65 20 6C 69 6E 65 to replace line
00BA80: 20 34 30 2E 0D 0A 20 20 20 31 31 30 20 57 48 49 40... 110 WHI
00BA90: 4C 45 20 49 4E 4B 45 59 28 34 37 29 3D 2D 31 20 LE INKEY(47)=-1
00BAA0: 41 4E 44 20 49 4E 4B 45 59 28 31 38 29 3D 2D 31 AND INKEY(18)=-1
00BAB0: 20 41 4E 44 20 49 4E 4B 45 59 28 39 29 3D 2D 31 AND INKEY(9)=-1
00BAC0: 0D 0A 20 20 20 31 32 30 20 6F 6C 64 78 3D 78 3A .. 120 oldx=x:
00BAD0: 6F 6C 64 79 3D 79 0D 0A 20 20 20 31 33 30 20 61 oldy=y.. 130 a
00BAE0: 64 64 78 3D 30 3A 61 64 64 79 3D 30 0D 0A 20 20 ddx=0:addy=0..
00BAF0: 20 31 33 35 20 52 45 4D 20 43 68 65 63 6B 20 6B 135 REM Check k
00BB00: 20 34 2C 31 2E 0D 0A 20 20 20 20 20 49 66 20 77 4,1... If w
00BB10: 65 20 6D 75 6C 74 69 70 6C 79 20 62 79 20 33 20 e multiply by 3
00BB20: 74 68 65 6E 20 77 65 20 67 65 74 20 20 66 72 6F then we get fro
00BB30: 6D 20 30 2C 2D 31 20 74 6F 20 30 2C 2D 33 2E 20 m 0,-1 to 0,-3.
00BB40: 20 54 68 65 20 67 61 70 20 62 65 74 77 65 65 6E The gap between
00BB50: 20 74 68 65 0D 0A 20 20 20 70 61 69 72 20 69 73 the.. pair is
00BB60: 20 6E 6F 77 20 74 68 65 20 73 61 6D 65 20 61 73 now the same as
00BB70: 20 62 65 74 77 65 65 6E 20 34 20 61 6E 64 20 31 between 4 and 1
00BB80: 20 20 73 6F 20 61 6C 6C 20 77 65 20 68 61 76 65 so all we have
00BB90: 20 74 6F 20 64 6F 20 69 73 20 61 64 64 20 34 20 to do is add 4
00BBA0: 61 6E 64 0D 0A 20 20 20 77 65 20 61 72 65 20 74 and.. we are t
00BBB0: 68 65 72 65 2E 0D 0A 0D 0A 20 20 20 20 20 53 48 here..... SH
00BBC0: 49 46 54 20 6B 65 79 20 70 6F 73 69 74 69 6F 6E IFT key position
00BBD0: 20 20 20 20 75 70 20 20 20 20 20 20 64 6F 77 6E up down
00BBE0: 0D 0A 20 20 20 20 20 49 4E 4B 45 59 28 32 32 29 .. INKEY(22)
00BBF0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2D 31 20 -1
00BC00: 20 20 20 20 20 3E 20 2D 31 0D 0A 20 20 20 20 20 > -1..
00BC10: 28 49 4E 4B 45 59 28 32 32 29 3D 2D 31 29 20 20 (INKEY(22)=-1)
00BC20: 20 20 20 20 20 20 2D 31 20 20 20 20 20 20 30 0D -1 0.
00BC30: 0A 20 20 20 20 20 33 2A 28 49 4E 4B 45 59 28 32 . 3*(INKEY(2
00BC40: 32 29 3D 2D 31 29 20 20 20 20 20 20 2D 33 20 20 2)=-1) -3
00BC50: 20 20 20 20 30 0D 0A 20 20 20 20 20 34 2B 33 2A 0.. 4+3*
00BC60: 28 49 4E 4B 45 59 28 32 32 29 3D 2D 31 29 20 20 (INKEY(22)=-1)
00BC70: 20 20 31 20 20 20 20 20 20 20 34 0D 0A 0D 0A 20 1 4....
00BC80: 20 20 20 20 4C 69 6E 65 20 31 36 30 20 63 61 6E Line 160 can
00BC90: 20 74 68 65 72 65 66 6F 72 65 20 62 65 20 63 68 therefore be ch
00BCA0: 61 6E 67 65 64 20 74 6F 3A 0D 0A 0D 0A 20 20 20 anged to:....
00BCB0: 20 20 33 36 30 20 61 64 64 78 3D 61 64 64 78 2A 360 addx=addx*
00BCC0: 28 34 2B 33 2A 28 49 4E 4B 45 59 28 32 31 29 3D (4+3*(INKEY(21)=
00BCD0: 2D 31 29 29 0D 0A 0D 0A 20 20 20 4C 69 6E 65 20 -1)).... Line
00BCE0: 34 30 30 2C 20 77 68 69 63 68 20 69 73 20 65 71 400, which is eq
00BCF0: 75 69 76 61 6C 65 6E 74 20 74 6F 20 6C 69 6E 65 uivalent to line
00BD00: 65 79 73 0D 0A 20 20 20 31 34 30 20 49 46 20 49 eys.. 140 IF I
00BD10: 4E 4B 45 59 28 38 29 3E 2D 31 20 54 48 45 4E 20 NKEY(8)>-1 THEN
00BD20: 61 64 64 78 3D 2D 31 0D 0A 20 20 20 31 35 30 20 addx=-1.. 150
00BD30: 49 46 20 49 4E 4B 45 59 28 31 29 3E 2D 31 20 54 IF INKEY(1)>-1 T
00BD40: 48 45 4E 20 61 64 64 78 3D 61 64 64 78 2B 31 0D HEN addx=addx+1.
00BD50: 0A 20 20 20 31 36 30 20 49 46 20 49 4E 4B 45 59 . 160 IF INKEY
00BD60: 28 32 31 29 3E 2D 31 20 54 48 45 4E 20 61 64 64 (21)>-1 THEN add
00BD70: 78 3D 61 64 64 78 2A 34 0D 0A 20 20 20 31 37 30 x=addx*4.. 170
00BD80: 20 61 64 64 78 3D 33 2A 61 64 64 78 0D 0A 20 20 addx=3*addx..
00BD90: 20 31 38 30 20 49 46 20 49 4E 4B 45 59 28 32 29 180 IF INKEY(2)
00BDA0: 3E 2D 31 20 54 48 45 4E 20 61 64 64 79 3D 2D 31 >-1 THEN addy=-1
00BDB0: 0D 0A 20 20 20 31 39 30 20 49 46 20 49 4E 4B 45 .. 190 IF INKE
00BDC0: 59 28 30 29 3E 2D 31 20 54 48 45 4E 20 61 64 64 Y(0)>-1 THEN add
00BDD0: 79 3D 61 64 64 79 2B 31 0D 0A 20 20 20 32 30 30 y=addy+1.. 200
00BDE0: 20 49 46 20 49 4E 4B 45 59 28 32 31 29 3E 2D 31 IF INKEY(21)>-1
00BDF0: 20 54 48 45 4E 20 61 64 64 79 3D 61 64 64 79 2A THEN addy=addy*
00BE00: 32 0D 0A 20 20 20 32 31 30 20 61 64 64 79 3D 33 2.. 210 addy=3
00BE10: 2A 61 64 64 79 0D 0A 20 20 20 32 32 30 20 78 3D *addy.. 220 x=
00BE20: 78 2B 61 64 64 78 3A 79 3D 79 2B 61 64 64 79 0D x+addx:y=y+addy.
00BE30: 0A 20 20 20 32 32 35 20 52 45 4D 20 43 68 65 63 . 225 REM Chec
00BE40: 6B 20 78 20 26 20 79 20 61 72 65 20 6F 6E 20 73 k x & y are on s
00BE50: 63 72 65 65 6E 0D 0A 20 20 20 32 33 30 20 49 46 creen.. 230 IF
00BE60: 20 78 3E 36 33 32 20 54 48 45 4E 20 78 3D 36 33 x>632 THEN x=63
00BE70: 32 0D 0A 20 20 20 32 34 30 20 49 46 20 78 3C 30 2.. 240 IF x<0
00BE80: 20 54 48 45 4E 20 78 3D 30 0D 0A 20 20 20 32 35 THEN x=0.. 25
00BE90: 30 20 49 46 20 79 3E 33 39 39 20 54 48 45 4E 20 0 IF y>399 THEN
00BEA0: 79 3D 33 39 39 0D 0A 20 20 20 32 36 30 20 49 46 y=399.. 260 IF
00BEB0: 20 79 3C 31 35 20 54 48 45 4E 20 79 3D 31 35 0D y<15 THEN y=15.
00BEC0: 0A 20 20 20 32 36 35 20 52 45 4D 20 52 65 6D 6F . 265 REM Remo
00BED0: 76 65 20 70 6F 69 6E 74 65 72 20 61 6E 64 20 72 ve pointer and r
00BEE0: 65 64 69 73 70 6C 61 79 0D 0A 20 20 20 32 37 30 edisplay.. 270
00BEF0: 20 4D 4F 56 45 20 6F 6C 64 78 2C 6F 6C 64 79 3A MOVE oldx,oldy:
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 C3 02 00 00 00 02 ......N.........
00BF20: 0A 00 C8 02 00 00 00 02 0A 00 C4 02 00 00 00 02 ................
00BF30: 0A 00 C9 02 00 00 00 02 0A 00 C5 02 00 00 00 02 ................
00BF40: 0A 00 C1 02 00 00 00 02 0A 00 C6 02 00 00 00 02 ................
00BF50: 0A 00 C2 02 00 00 00 02 0A 00 C7 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: 23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61 #Programmers' Pa
00C010: 74 63 68 20 33 20 2D 20 57 41 43 43 49 20 31 31 tch 3 - WACCI 11
00C020: 32 2C 20 4D 61 79 20 31 39 39 37 2C 20 70 2E 20 2, May 1997, p.
00C030: 31 30 2D 31 32 0D 0A 20 20 20 50 52 4F 47 52 41 10-12.. PROGRA
00C040: 4D 4D 45 52 53 27 20 50 41 54 43 48 20 33 0D 0A MMERS' PATCH 3..
00C050: 20 20 20 42 79 20 4D 61 74 74 68 65 77 20 61 6E By Matthew an
00C060: 64 20 53 74 65 70 68 65 6E 20 50 68 69 6C 6C 69 d Stephen Philli
00C070: 70 73 0D 0A 0D 0A 20 20 20 53 69 6E 63 65 20 74 ps.... Since t
00C080: 68 69 73 20 61 72 74 69 63 6C 65 20 77 61 73 20 his article was
00C090: 77 72 69 74 74 65 6E 20 69 6E 20 20 4C 65 6E 74 written in Lent
00C0A0: 2C 20 20 77 65 20 61 72 65 20 6F 66 66 65 72 69 , we are offeri
00C0B0: 6E 67 20 6D 6F 72 65 20 66 72 75 67 61 6C 20 66 ng more frugal f
00C0C0: 61 72 65 0D 0A 20 20 20 69 6E 20 74 68 65 20 66 are.. in the f
00C0D0: 6F 72 6D 20 6F 66 20 61 20 20 6D 65 61 67 72 65 orm of a meagre
00C0E0: 20 20 72 61 74 69 6F 6E 20 20 6F 66 20 20 6D 61 ration of ma
00C0F0: 63 68 69 6E 65 20 20 63 6F 64 65 20 61 6E 64 20 chine code and
00C100: 61 6E 20 75 6E 75 73 75 61 6C 6C 79 20 73 68 6F an unusually sho
00C110: 72 74 0D 0A 20 20 20 69 6E 74 72 6F 64 75 63 74 rt.. introduct
00C120: 69 6F 6E 2E 20 20 54 68 65 20 20 68 65 61 64 69 ion. The headi
00C130: 6E 67 73 20 20 61 72 65 20 20 66 72 6F 6D 20 20 ngs are from
00C140: 61 72 74 69 63 6C 65 73 20 20 69 6E 20 20 74 68 articles in th
00C150: 69 73 20 20 6D 6F 6E 74 68 27 73 20 67 75 65 73 is month's gues
00C160: 74 0D 0A 20 20 20 70 75 62 6C 69 63 61 74 69 6F t.. publicatio
00C170: 6E 2C 20 52 49 53 43 20 55 73 65 72 20 6D 61 67 n, RISC User mag
00C180: 61 7A 69 6E 65 2E 0D 0A 0D 0A 20 20 20 52 41 44 azine..... RAD
00C190: 49 41 4C 20 50 41 4C 45 54 54 45 53 0D 0A 20 20 IAL PALETTES..
00C1A0: 20 41 6C 74 68 6F 75 67 68 20 74 68 65 72 65 20 Although there
00C1B0: 68 61 76 65 20 62 65 65 6E 20 6D 61 6E 79 20 61 have been many a
00C1C0: 72 74 69 63 6C 65 73 20 20 61 62 6F 75 74 20 20 rticles about
00C1D0: 42 41 53 49 43 20 6F 76 65 72 20 74 68 65 20 79 BASIC over the y
00C1E0: 65 61 72 73 2C 20 61 6E 64 20 61 0D 0A 20 20 20 ears, and a..
00C1F0: 66 65 77 20 61 62 6F 75 74 20 6D 61 63 68 69 6E few about machin
00C200: 77 20 6D 61 6E 79 20 70 61 72 61 6D 65 74 65 72 w many parameter
00C210: 73 20 74 68 65 72 65 20 61 72 65 2E 20 20 49 66 s there are. If
00C220: 20 77 65 20 64 69 64 0D 0A 20 20 20 74 68 65 20 we did.. the
00C230: 66 6F 6C 6C 6F 77 69 6E 67 3A 0D 0A 0D 0A 20 20 following:....
00C240: 20 20 20 20 20 20 20 43 41 4C 4C 20 26 39 30 30 CALL &900
00C250: 30 2C 36 2C 34 2C 26 43 44 45 46 0D 0A 0D 0A 20 0,6,4,&CDEF....
00C260: 20 20 74 68 65 6E 20 77 68 65 6E 20 74 68 65 20 then when the
00C270: 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 73 74 61 machine code sta
00C280: 72 74 65 64 2C 20 74 68 65 20 41 20 72 65 67 69 rted, the A regi
00C290: 73 74 65 72 20 77 6F 75 6C 64 20 62 65 20 65 71 ster would be eq
00C2A0: 75 61 6C 20 74 6F 20 33 2C 20 74 6F 0D 0A 20 20 ual to 3, to..
00C2B0: 20 74 65 6C 6C 20 75 73 20 74 68 65 20 6E 75 6D tell us the num
00C2C0: 62 65 72 20 6F 66 20 70 61 72 61 6D 65 74 65 72 ber of parameter
00C2D0: 73 20 70 61 73 73 65 64 2C 20 20 61 6E 64 20 20 s passed, and
00C2E0: 49 58 20 77 6F 75 6C 64 20 70 6F 69 6E 74 20 74 IX would point t
00C2F0: 6F 20 61 20 6C 69 73 74 20 6F 66 0D 0A 20 20 20 o a list of..
00C300: 74 68 65 20 70 61 72 61 6D 65 74 65 72 73 2E 20 the parameters.
00C310: 20 54 68 65 72 65 20 61 72 65 20 74 77 6F 20 62 There are two b
00C320: 79 74 65 73 20 66 6F 72 20 20 65 61 63 68 20 70 ytes for each p
00C330: 61 72 61 6D 65 74 65 72 2C 20 61 6E 64 20 74 68 arameter, and th
00C340: 65 20 6C 61 73 74 20 6F 6E 65 0D 0A 20 20 20 69 e last one.. i
00C350: 6E 20 74 68 65 20 43 41 4C 4C 20 63 6F 6D 6D 61 n the CALL comma
00C360: 6E 64 20 63 6F 6D 65 73 20 66 69 72 73 74 20 20 nd comes first
00C370: 69 6E 20 20 74 68 65 20 20 6C 69 73 74 21 20 20 in the list!
00C380: 20 49 6E 20 74 68 69 73 20 65 78 61 6D 70 6C 65 In this example
00C390: 20 69 74 20 77 6F 75 6C 64 0D 0A 20 20 20 6C 6F it would.. lo
00C3A0: 6F 6B 20 6C 69 6B 65 20 74 68 69 73 3A 0D 0A 0D ok like this:...
00C3B0: 0A 20 20 20 20 20 20 20 20 20 28 49 58 2B 30 29 . (IX+0)
00C3C0: 20 20 45 46 20 20 20 20 20 20 28 49 58 2B 31 29 EF (IX+1)
00C3D0: 20 20 43 44 0D 0A 20 20 20 20 20 20 20 20 20 28 CD.. (
00C3E0: 49 58 2B 32 29 20 20 30 34 20 20 20 20 20 20 28 IX+2) 04 (
00C3F0: 49 58 2B 33 29 20 20 30 30 0D 0A 20 20 20 20 20 IX+3) 00..
00C400: 65 20 63 6F 64 65 2C 20 74 68 65 72 65 20 68 61 e code, there ha
00C410: 76 65 20 20 62 65 65 6E 20 20 68 61 72 64 6C 79 ve been hardly
00C420: 20 20 61 6E 79 20 61 62 6F 75 74 20 68 6F 77 20 any about how
00C430: 74 6F 20 75 73 65 20 74 68 65 0D 0A 20 20 20 74 to use the.. t
00C440: 77 6F 20 74 6F 67 65 74 68 65 72 2E 20 20 54 68 wo together. Th
00C450: 65 20 61 64 76 61 6E 74 61 67 65 20 6F 66 20 20 e advantage of
00C460: 42 41 53 49 43 20 20 69 73 20 20 74 68 61 74 20 BASIC is that
00C470: 20 69 74 20 20 69 73 20 65 61 73 79 20 74 6F 20 it is easy to
00C480: 77 72 69 74 65 20 61 6E 64 0D 0A 20 20 20 64 65 write and.. de
00C490: 62 75 67 2C 20 61 6E 64 20 74 68 65 72 65 20 69 bug, and there i
00C4A0: 73 20 6E 6F 20 6E 65 65 64 20 20 74 6F 20 20 77 s no need to w
00C4B0: 6F 72 72 79 20 20 61 62 6F 75 74 20 68 6F 77 20 orry about how
00C4C0: 61 6E 64 20 77 68 65 72 65 20 79 6F 75 72 20 76 and where your v
00C4D0: 61 72 69 61 62 6C 65 73 0D 0A 20 20 20 61 72 65 ariables.. are
00C4E0: 20 73 74 6F 72 65 64 2E 20 20 4D 61 63 68 69 6E stored. Machin
00C4F0: 65 20 63 6F 64 65 20 77 69 6E 73 20 6F 6E 20 20 e code wins on
00C500: 73 70 65 65 64 20 20 61 6E 64 20 62 65 74 74 65 speed and bette
00C510: 72 20 75 73 65 20 6F 66 20 6D 65 6D 6F 72 79 2E r use of memory.
00C520: 20 20 54 68 65 72 65 0D 0A 20 20 20 61 72 65 20 There.. are
00C530: 61 6C 73 6F 20 6D 61 6E 79 20 74 68 69 6E 67 73 also many things
00C540: 20 74 68 61 74 20 63 61 6E 6E 6F 74 20 62 65 20 that cannot be
00C550: 64 6F 6E 65 20 77 69 74 68 20 42 41 53 49 43 20 done with BASIC
00C560: 61 6C 6F 6E 65 2E 0D 0A 20 20 20 20 20 42 41 53 alone... BAS
00C570: 49 43 20 61 6E 64 20 6D 61 63 68 69 6E 65 20 63 IC and machine c
00C580: 6F 64 65 20 74 6F 67 65 74 68 65 72 20 63 61 6E ode together can
00C590: 20 20 62 65 20 61 20 76 65 72 79 20 70 6F 77 65 be a very powe
00C5A0: 72 66 75 6C 20 63 6F 6D 62 69 6E 61 74 69 6F 6E rful combination
00C5B0: 2E 20 20 49 66 0D 0A 20 20 20 74 68 65 20 73 70 . If.. the sp
00C5C0: 65 65 64 2D 63 72 69 74 69 63 61 6C 20 70 61 72 eed-critical par
00C5D0: 74 73 20 6F 66 20 61 20 70 72 6F 67 72 61 6D 20 ts of a program
00C5E0: 20 61 72 65 20 63 6F 6E 76 65 72 74 65 64 20 69 are converted i
00C5F0: 6E 74 6F 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 nto machine code
00C600: 20 20 20 20 28 49 58 2B 34 29 20 20 30 36 20 20 (IX+4) 06
00C610: 20 20 20 20 28 49 58 2B 35 29 20 20 30 30 0D 0A (IX+5) 00..
00C620: 0D 0A 20 20 20 20 20 48 61 76 65 20 61 20 6C 6F .. Have a lo
00C630: 6F 6B 20 61 74 20 74 68 65 20 20 6D 61 63 68 69 ok at the machi
00C640: 6E 65 20 20 63 6F 64 65 20 20 69 6E 20 20 46 69 ne code in Fi
00C650: 67 75 72 65 20 20 32 2E 20 20 20 54 68 65 20 6E gure 2. The n
00C660: 75 6D 62 65 72 20 78 20 77 69 6C 6C 20 62 65 0D umber x will be.
00C670: 0A 20 20 20 73 74 6F 72 65 64 20 61 74 20 28 49 . stored at (I
00C680: 58 2B 30 29 2C 20 61 73 20 69 74 20 69 73 20 20 X+0), as it is
00C690: 74 68 65 20 20 6C 61 73 74 20 20 70 61 72 61 6D the last param
00C6A0: 65 74 65 72 20 20 69 6E 20 74 68 65 20 6C 69 73 eter in the lis
00C6B0: 74 2E 20 20 49 66 20 69 74 20 77 65 72 65 0D 0A t. If it were..
00C6C0: 20 20 20 62 69 67 67 65 72 20 74 68 61 6E 20 32 bigger than 2
00C6D0: 35 35 20 74 68 65 6E 20 70 61 72 74 20 6F 66 20 55 then part of
00C6E0: 74 68 65 20 6E 75 6D 62 65 72 20 77 6F 75 6C 64 the number would
00C6F0: 20 62 65 20 61 74 20 28 49 58 2B 31 29 20 61 73 be at (IX+1) as
00C700: 20 77 65 6C 6C 2C 20 62 75 74 20 77 65 0D 0A 20 well, but we..
00C710: 20 20 68 61 76 65 20 69 67 6E 6F 72 65 64 20 74 have ignored t
00C720: 68 69 73 20 63 61 73 65 2E 20 20 54 68 65 20 20 his case. The
00C730: 6E 75 6D 62 65 72 20 20 69 73 20 20 6C 6F 61 64 number is load
00C740: 65 64 20 20 69 6E 74 6F 20 74 68 65 20 42 20 72 ed into the B r
00C750: 65 67 69 73 74 65 72 2C 20 61 6E 64 0D 0A 20 20 egister, and..
00C760: 20 74 68 65 6E 20 61 20 6C 6F 6F 70 20 69 73 20 then a loop is
00C770: 65 78 65 63 75 74 65 64 20 74 6F 20 70 72 69 6E executed to prin
00C780: 74 20 74 68 65 20 22 40 22 20 63 68 61 72 61 63 t the "@" charac
00C790: 74 65 72 73 2E 0D 0A 0D 0A 20 20 20 43 48 41 4E ters..... CHAN
00C7A0: 47 49 4E 47 20 54 48 45 20 4C 49 47 48 54 0D 0A GING THE LIGHT..
00C7B0: 20 20 20 53 75 70 70 6F 73 65 20 77 65 20 77 61 Suppose we wa
00C7C0: 6E 74 20 74 6F 20 72 65 74 75 72 6E 20 61 20 76 nt to return a v
00C7D0: 61 6C 75 65 20 20 74 6F 20 42 41 53 49 43 20 66 alue to BASIC f
00C7E0: 72 6F 6D 20 74 68 65 20 6D 61 63 68 69 6E 65 20 rom the machine
00C7F0: 63 6F 64 65 3F 20 20 41 67 61 69 6E 2C 0D 0A 20 code? Again,..
00C800: 20 61 6E 64 0D 0A 20 20 20 74 68 65 20 72 65 73 and.. the res
00C810: 74 20 6C 65 66 74 20 61 73 20 42 41 53 49 43 2C t left as BASIC,
00C820: 20 79 6F 75 20 63 61 6E 20 65 6E 64 20 75 70 20 you can end up
00C830: 20 77 69 74 68 20 61 6C 6D 6F 73 74 20 61 73 20 with almost as
00C840: 67 6F 6F 64 20 61 20 72 65 73 75 6C 74 20 61 73 good a result as
00C850: 20 69 66 0D 0A 20 20 20 74 68 65 20 77 68 6F 6C if.. the whol
00C860: 65 20 6C 6F 74 20 77 65 72 65 20 77 72 69 74 74 e lot were writt
00C870: 65 6E 20 69 6E 20 6D 61 63 68 69 6E 65 20 63 6F en in machine co
00C880: 64 65 2C 20 62 75 74 20 77 69 74 68 20 6D 75 63 de, but with muc
00C890: 68 20 6C 65 73 73 20 68 61 73 73 6C 65 2E 0D 0A h less hassle...
00C8A0: 20 20 20 20 20 54 68 69 73 20 6D 6F 6E 74 68 20 This month
00C8B0: 77 65 20 77 69 6C 6C 20 74 61 6B 65 20 61 20 20 we will take a
00C8C0: 71 75 69 63 6B 20 20 6C 6F 6F 6B 20 20 61 74 20 quick look at
00C8D0: 20 74 68 65 20 65 73 73 65 6E 74 69 61 6C 73 20 the essentials
00C8E0: 6F 66 20 68 6F 77 20 74 6F 20 67 65 74 0D 0A 20 of how to get..
00C8F0: 20 20 42 41 53 49 43 20 61 6E 64 20 6D 61 63 68 BASIC and mach
00C900: 69 6E 65 20 63 6F 64 65 20 74 6F 20 77 6F 72 6B ine code to work
00C910: 20 20 74 6F 67 65 74 68 65 72 2C 20 20 74 68 65 together, the
00C920: 6E 20 20 6E 65 78 74 20 74 69 6D 65 20 77 65 20 n next time we
00C930: 77 69 6C 6C 20 73 65 65 20 68 6F 77 0D 0A 20 20 will see how..
00C940: 20 74 68 69 73 20 61 70 70 6C 69 65 73 20 74 6F this applies to
00C950: 20 6F 75 72 20 64 69 73 63 20 6D 65 6E 75 2E 0D our disc menu..
00C960: 0A 0D 0A 20 20 20 54 55 52 4E 49 4E 47 20 54 48 ... TURNING TH
00C970: 45 20 57 4F 52 4C 44 20 47 52 45 59 0D 0A 20 20 E WORLD GREY..
00C980: 20 53 6F 6D 65 20 70 69 65 63 65 73 20 6F 66 20 Some pieces of
00C990: 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 73 74 61 machine code sta
00C9A0: 6E 64 20 68 61 70 70 69 6C 79 20 6F 6E 20 74 68 nd happily on th
00C9B0: 65 69 72 20 6F 77 6E 2C 20 73 75 63 68 20 61 73 eir own, such as
00C9C0: 20 75 73 69 6E 67 20 43 41 4C 4C 0D 0A 20 20 20 using CALL..
00C9D0: 26 42 42 34 45 20 74 6F 20 72 65 73 65 74 20 70 &BB4E to reset p
00C9E0: 61 72 74 73 20 20 6F 66 20 20 74 68 65 20 20 73 arts of the s
00C9F0: 63 72 65 65 6E 2E 20 20 20 4F 66 74 65 6E 20 20 creen. Often
00CA00: 50 52 49 4E 54 20 43 48 52 24 28 32 31 35 29 3B PRINT CHR$(215);
00CA10: 0D 0A 20 20 20 32 38 30 20 4D 4F 56 45 20 78 2C .. 280 MOVE x,
00CA20: 79 3A 50 52 49 4E 54 20 43 48 52 24 28 32 31 35 y:PRINT CHR$(215
00CA30: 29 3B 0D 0A 20 20 20 32 39 30 20 57 45 4E 44 3A );.. 290 WEND:
00CA40: 52 45 54 55 52 4E 0D 0A 0D 0A 20 20 20 46 49 47 RETURN.... FIG
00CA50: 55 52 45 20 31 2E 36 31 0D 0A 0D 0A 0D 0A 0D 0A URE 1.61........
00CA60: 20 20 20 33 30 30 20 52 45 4D 20 41 20 62 65 74 300 REM A bet
00CA70: 74 65 72 20 73 75 62 72 6F 75 74 69 6E 65 20 74 ter subroutine t
00CA80: 6F 20 72 65 70 6C 61 63 65 20 6C 69 6E 65 20 34 o replace line 4
00CA90: 30 2E 0D 0A 20 20 20 33 31 30 20 57 48 49 4C 45 0... 310 WHILE
00CAA0: 20 49 4E 4B 45 59 28 34 37 29 2B 49 4E 4B 45 59 INKEY(47)+INKEY
00CAB0: 28 31 38 29 2B 49 4E 4B 45 59 28 39 29 3D 2D 33 (18)+INKEY(9)=-3
00CAC0: 0D 0A 20 20 20 33 32 30 20 6F 6C 64 78 3D 78 3A .. 320 oldx=x:
00CAD0: 6F 6C 64 79 3D 79 0D 0A 20 20 20 33 33 30 20 61 oldy=y.. 330 a
00CAE0: 64 64 78 3D 30 3A 61 64 64 79 3D 30 0D 0A 20 20 ddx=0:addy=0..
00CAF0: 20 33 33 35 20 52 45 4D 20 43 68 65 63 6B 20 6B 335 REM Check k
00CB00: 65 79 73 0D 0A 20 20 20 33 34 30 20 61 64 64 78 eys.. 340 addx
00CB10: 3D 28 49 4E 4B 45 59 28 38 29 3E 2D 31 29 0D 0A =(INKEY(8)>-1)..
00CB20: 20 20 20 33 35 30 20 61 64 64 78 3D 61 64 64 78 350 addx=addx
00CB30: 2D 28 49 4E 4B 45 59 28 31 29 3E 2D 31 29 0D 0A -(INKEY(1)>-1)..
00CB40: 20 20 20 33 36 30 20 61 64 64 78 3D 61 64 64 78 360 addx=addx
00CB50: 2A 28 34 2B 33 2A 28 49 4E 4B 45 59 28 32 31 29 *(4+3*(INKEY(21)
00CB60: 3D 2D 31 29 29 0D 0A 20 20 20 33 37 30 20 61 64 =-1)).. 370 ad
00CB70: 64 78 3D 33 2A 61 64 64 78 0D 0A 20 20 20 33 38 dx=3*addx.. 38
00CB80: 30 20 61 64 64 79 3D 28 49 4E 4B 45 59 28 32 29 0 addy=(INKEY(2)
00CB90: 3E 2D 31 29 0D 0A 20 20 20 33 39 30 20 61 64 64 >-1).. 390 add
00CBA0: 79 3D 61 64 64 79 2D 28 49 4E 4B 45 59 28 30 29 y=addy-(INKEY(0)
00CBB0: 3E 2D 31 29 0D 0A 20 20 20 34 30 30 20 61 64 64 >-1).. 400 add
00CBC0: 79 3D 61 64 64 79 2A 28 28 49 4E 4B 45 59 28 32 y=addy*((INKEY(2
00CBD0: 31 29 3D 2D 31 29 2B 32 29 0D 0A 20 20 20 34 31 1)=-1)+2).. 41
00CBE0: 30 20 61 64 64 79 3D 33 2A 61 64 64 79 0D 0A 20 0 addy=3*addy..
00CBF0: 20 20 34 32 30 20 78 3D 78 2B 61 64 64 78 3A 79 420 x=x+addx:y
00CC00: 74 68 6F 75 67 68 20 20 77 65 20 20 6E 65 65 64 though we need
00CC10: 20 42 41 53 49 43 20 61 6E 64 0D 0A 20 20 20 6D BASIC and.. m
00CC20: 61 63 68 69 6E 65 20 63 6F 64 65 20 74 6F 20 63 achine code to c
00CC30: 6F 6D 6D 75 6E 69 63 61 74 65 2E 20 20 46 6F 72 ommunicate. For
00CC40: 20 65 78 61 6D 70 6C 65 20 20 79 6F 75 20 6D 69 example you mi
00CC50: 67 68 74 20 77 61 6E 74 20 61 20 42 41 53 49 43 ght want a BASIC
00CC60: 20 76 61 72 69 61 62 6C 65 0D 0A 20 20 20 74 6F variable.. to
00CC70: 20 61 66 66 65 63 74 20 77 68 61 74 20 74 68 65 affect what the
00CC80: 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 64 6F machine code do
00CC90: 65 73 2E 20 20 54 68 65 20 6F 62 76 69 6F 75 73 es. The obvious
00CCA0: 20 77 61 79 20 74 6F 20 64 6F 20 74 68 69 73 20 way to do this
00CCB0: 77 6F 75 6C 64 20 62 65 0D 0A 20 20 20 74 6F 20 would be.. to
00CCC0: 50 4F 4B 45 20 74 68 65 20 76 61 6C 75 65 20 6F POKE the value o
00CCD0: 66 20 74 68 65 20 20 76 61 72 69 61 62 6C 65 20 f the variable
00CCE0: 20 69 6E 74 6F 20 20 61 20 20 6D 65 6D 6F 72 79 into a memory
00CCF0: 20 6C 6F 63 61 74 69 6F 6E 2C 20 61 6E 64 20 74 location, and t
00CD00: 68 65 6E 20 74 68 65 0D 0A 20 20 20 6D 61 63 68 hen the.. mach
00CD10: 69 6E 65 20 63 6F 64 65 20 63 6F 75 6C 64 20 72 ine code could r
00CD20: 65 61 64 20 74 68 61 74 20 6C 6F 63 61 74 69 6F ead that locatio
00CD30: 6E 20 61 6E 64 20 61 63 74 20 6F 6E 20 74 68 65 n and act on the
00CD40: 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 2E 0D 0A 20 information...
00CD50: 20 20 20 20 46 69 67 75 72 65 20 32 20 67 69 76 Figure 2 giv
00CD60: 65 73 20 61 20 62 65 74 74 65 72 20 6D 65 74 68 es a better meth
00CD70: 6F 64 2E 20 20 54 68 65 20 20 42 41 53 49 43 20 od. The BASIC
00CD80: 70 72 6F 67 72 61 6D 20 70 6F 6B 65 73 20 69 6E program pokes in
00CD90: 20 74 68 65 20 6D 61 63 68 69 6E 65 0D 0A 20 20 the machine..
00CDA0: 20 63 6F 64 65 20 69 6E 20 6C 69 6E 65 20 31 39 code in line 19
00CDB0: 30 2E 20 20 41 66 74 65 72 20 74 68 65 20 20 42 0. After the B
00CDC0: 41 53 49 43 20 20 77 65 20 20 6C 69 73 74 20 74 ASIC we list t
00CDD0: 68 65 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 he machine code
00CDE0: 69 6E 20 61 73 73 65 6D 62 6C 79 0D 0A 20 20 20 in assembly..
00CDF0: 6C 61 6E 67 75 61 67 65 2C 20 73 6F 20 74 68 61 language, so tha
00CE00: 3D 79 2B 61 64 64 79 0D 0A 20 20 20 34 32 35 20 =y+addy.. 425
00CE10: 52 45 4D 20 43 68 65 63 6B 20 78 20 26 20 79 20 REM Check x & y
00CE20: 61 72 65 20 6F 6E 20 73 63 72 65 65 6E 0D 0A 20 are on screen..
00CE30: 20 20 34 33 30 20 78 3D 4D 49 4E 28 36 33 32 2C 430 x=MIN(632,
00CE40: 78 29 0D 0A 20 20 20 34 34 30 20 78 3D 4D 41 58 x).. 440 x=MAX
00CE50: 28 30 2C 78 29 0D 0A 20 20 20 34 35 30 20 79 3D (0,x).. 450 y=
00CE60: 4D 49 4E 28 33 39 39 2C 79 29 0D 0A 20 20 20 34 MIN(399,y).. 4
00CE70: 36 30 20 79 3D 4D 41 58 28 31 35 2C 79 29 0D 0A 60 y=MAX(15,y)..
00CE80: 20 20 20 34 36 35 20 52 45 4D 20 52 65 6D 6F 76 465 REM Remov
00CE90: 65 20 70 6F 69 6E 74 65 72 20 61 6E 64 20 72 65 e pointer and re
00CEA0: 64 69 73 70 6C 61 79 0D 0A 20 20 20 34 37 30 20 display.. 470
00CEB0: 4D 4F 56 45 20 6F 6C 64 78 2C 6F 6C 64 79 3A 50 MOVE oldx,oldy:P
00CEC0: 52 49 4E 54 20 43 48 52 24 28 32 31 35 29 3B 0D RINT CHR$(215);.
00CED0: 0A 20 20 20 34 38 30 20 4D 4F 56 45 20 78 2C 79 . 480 MOVE x,y
00CEE0: 3A 50 52 49 4E 54 20 43 48 52 24 28 32 31 35 29 :PRINT CHR$(215)
00CEF0: 3B 0D 0A 20 20 20 34 39 30 20 57 45 4E 44 3A 52 ;.. 490 WEND:R
00CF00: 45 54 55 52 4E 0D 0A 0D 0A 20 20 20 46 49 47 55 ETURN.... FIGU
00CF10: 52 45 20 31 2E 36 31 38 0D 0A 1A 20 42 79 20 53 RE 1.618... By S
00CF20: 74 65 70 68 65 6E 20 61 6E 64 20 4D 61 74 74 68 tephen and Matth
00CF30: 65 77 20 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A 20 ew Phillips....
00CF40: 20 20 57 65 6C 6C 2C 20 74 68 69 73 20 6D 6F 6E Well, this mon
00CF50: 74 68 20 20 77 65 20 20 6D 6F 76 65 20 20 66 72 th we move fr
00CF60: 6F 6D 20 20 74 68 65 20 20 73 74 61 72 74 65 72 om the starter
00CF70: 20 20 74 6F 20 20 61 20 20 6C 69 67 68 74 6C 79 to a lightly
00CF80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CF90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CFA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CFB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CFC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CFD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CFE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00CFF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00D000: 74 20 79 6F 75 20 63 61 6E 20 73 65 65 20 77 68 t you can see wh
00D010: 61 74 20 69 74 20 20 64 6F 65 73 2E 20 20 3C 3C at it does. <<
00D020: 54 68 65 20 42 41 53 49 43 20 69 73 20 73 61 76 The BASIC is sav
00D030: 65 64 20 61 73 20 46 49 47 32 0D 0A 20 20 20 6F ed as FIG2.. o
00D040: 6E 20 74 68 65 20 64 69 73 63 2E 3E 3E 0D 0A 20 n the disc.>>..
00D050: 20 20 20 20 54 68 65 20 70 72 6F 67 72 61 6D 20 The program
00D060: 61 73 6B 73 20 66 6F 72 20 61 20 6E 75 6D 62 65 asks for a numbe
00D070: 72 20 20 66 72 6F 6D 20 20 74 68 65 20 20 75 73 r from the us
00D080: 65 72 2C 20 20 78 2C 20 61 6E 64 20 74 68 65 6E er, x, and then
00D090: 20 70 72 69 6E 74 73 20 74 68 61 74 0D 0A 20 20 prints that..
00D0A0: 20 6D 61 6E 79 20 22 40 22 20 63 68 61 72 61 63 many "@" charac
00D0B0: 74 65 72 73 2E 20 20 57 68 65 6E 20 74 68 65 20 ters. When the
00D0C0: 6D 61 63 68 69 6E 65 20 20 63 6F 64 65 20 20 69 machine code i
00D0D0: 73 20 63 61 6C 6C 65 64 2C 20 75 73 69 6E 67 20 s called, using
00D0E0: 43 41 4C 4C 20 26 39 30 30 30 2C 0D 0A 20 20 20 CALL &9000,..
00D0F0: 74 68 65 20 76 61 6C 75 65 20 6F 66 20 78 20 69 the value of x i
00D100: 73 20 73 69 6D 70 6C 79 20 74 61 67 67 65 64 20 s simply tagged
00D110: 6F 6E 20 20 74 68 65 20 65 6E 64 20 61 66 74 65 on the end afte
00D120: 72 20 61 20 63 6F 6D 6D 61 2E 20 20 42 65 66 6F r a comma. Befo
00D130: 72 65 20 70 61 73 73 69 6E 67 0D 0A 20 20 20 63 re passing.. c
00D140: 6F 6E 74 72 6F 6C 20 74 6F 20 74 68 65 20 6D 61 ontrol to the ma
00D150: 63 68 69 6E 65 20 63 6F 64 65 2C 20 42 41 53 49 chine code, BASI
00D160: 43 20 20 61 72 72 61 6E 67 65 73 20 74 68 65 73 C arranges thes
00D170: 65 20 70 61 72 61 6D 65 74 65 72 73 20 69 6E 74 e parameters int
00D180: 6F 20 61 20 62 6C 6F 63 6B 0D 0A 20 20 20 69 6E o a block.. in
00D190: 20 6D 65 6D 6F 72 79 2C 20 61 6E 64 20 6C 6F 61 memory, and loa
00D1A0: 64 73 20 74 68 65 20 49 58 20 72 65 67 69 73 74 ds the IX regist
00D1B0: 65 72 20 20 77 69 74 68 20 74 68 65 20 61 64 64 er with the add
00D1C0: 72 65 73 73 20 6F 66 20 74 68 69 73 20 62 6C 6F ress of this blo
00D1D0: 63 6B 2E 20 20 54 68 65 0D 0A 20 20 20 41 20 72 ck. The.. A r
00D1E0: 65 67 69 73 74 65 72 20 69 73 20 73 65 74 20 75 egister is set u
00D1F0: 70 20 74 6F 20 69 6E 64 69 63 61 74 65 20 68 6F p to indicate ho
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 C2 02 00 00 00 02 ......N.........
00D220: 0B 00 C7 02 00 00 00 02 0B 00 C3 02 00 00 00 02 ................
00D230: 0B 00 C8 02 00 00 00 02 0B 00 C4 02 00 00 00 02 ................
00D240: 0B 00 C9 02 00 00 00 02 0B 00 C5 02 00 00 00 02 ................
00D250: 0B 00 C1 02 00 00 00 02 0B 00 C6 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: 63 61 6E 20 61 6C 74 65 72 0D 0A 20 20 20 74 68 can alter.. th
00D310: 65 20 76 61 6C 75 65 20 6F 66 20 63 25 2E 0D 0A e value of c%...
00D320: 20 20 20 20 20 54 72 79 20 74 68 65 20 66 6F 6C Try the fol
00D330: 6C 6F 77 69 6E 67 20 63 6F 6D 6D 61 6E 64 73 20 lowing commands
00D340: 69 6E 20 42 41 53 49 43 3A 0D 0A 0D 0A 20 20 20 in BASIC:....
00D350: 20 20 20 20 20 20 63 25 3D 35 0D 0A 20 20 20 20 c%=5..
00D360: 20 20 20 20 20 50 52 49 4E 54 20 40 63 25 0D 0A PRINT @c%..
00D370: 20 20 20 20 20 20 20 20 20 50 52 49 4E 54 20 50 PRINT P
00D380: 45 45 4B 28 40 63 25 29 0D 0A 0D 0A 20 20 20 41 EEK(@c%).... A
00D390: 73 20 40 63 25 20 69 73 20 74 68 65 20 61 64 64 s @c% is the add
00D3A0: 72 65 73 73 20 61 74 20 77 68 69 63 68 20 63 25 ress at which c%
00D3B0: 20 69 73 20 73 74 6F 72 65 64 2C 20 50 45 45 4B is stored, PEEK
00D3C0: 28 40 63 25 29 20 69 73 20 74 68 65 20 76 61 6C (@c%) is the val
00D3D0: 75 65 20 6F 66 20 63 25 2E 0D 0A 20 20 20 20 20 ue of c%...
00D3E0: 4E 6F 77 20 74 72 79 3A 0D 0A 0D 0A 20 20 20 20 Now try:....
00D3F0: 20 20 20 20 20 50 4F 4B 45 20 40 63 25 2C 37 0D POKE @c%,7.
00D400: 0A 20 20 20 20 20 20 20 20 20 50 52 49 4E 54 20 . PRINT
00D410: 63 25 0D 0A 0D 0A 20 20 20 61 6E 64 20 61 73 20 c%.... and as
00D420: 69 66 20 62 79 20 6D 61 67 69 63 2C 20 63 25 20 if by magic, c%
00D430: 68 61 73 20 63 68 61 6E 67 65 64 21 0D 0A 20 20 has changed!..
00D440: 20 20 20 54 68 65 20 70 72 6F 67 72 61 6D 20 69 The program i
00D450: 6E 20 66 69 67 75 72 65 20 32 2E 37 20 20 75 73 n figure 2.7 us
00D460: 65 73 20 20 74 68 69 73 20 74 65 63 68 6E 69 71 es this techniq
00D470: 75 65 2E 20 20 54 68 65 20 76 61 72 69 61 62 6C ue. The variabl
00D480: 65 27 73 20 61 64 64 72 65 73 73 0D 0A 20 20 20 e's address..
00D490: 69 73 20 6C 6F 61 64 65 64 20 69 6E 74 6F 20 48 is loaded into H
00D4A0: 4C 2C 20 61 6E 64 20 74 68 65 6E 20 74 68 65 20 L, and then the
00D4B0: 66 69 72 6D 77 61 72 65 20 63 61 6C 6C 20 74 6F firmware call to
00D4C0: 20 72 65 61 64 20 61 20 63 68 61 72 61 63 74 65 read a characte
00D4D0: 72 20 66 72 6F 6D 20 74 68 65 0D 0A 20 20 20 73 r from the.. s
00D4E0: 63 72 65 65 6E 20 69 73 20 75 73 65 64 2E 20 20 creen is used.
00D4F0: 54 68 65 20 20 76 61 6C 75 65 20 20 72 65 74 75 The value retu
00D500: 77 65 20 68 61 64 20 64 6F 6E 65 0D 0A 0D 0A 20 we had done....
00D510: 20 20 20 20 20 20 20 20 63 25 3D 32 30 30 30 3A c%=2000:
00D520: 43 41 4C 4C 20 26 39 30 30 30 2C 40 63 25 0D 0A CALL &9000,@c%..
00D530: 0D 0A 20 20 20 74 68 65 6E 20 77 65 20 77 6F 75 .. then we wou
00D540: 6C 64 20 67 65 74 20 62 61 63 6B 20 20 73 6F 6D ld get back som
00D550: 65 20 20 76 65 72 79 20 20 66 75 6E 6E 79 20 20 e very funny
00D560: 72 65 73 75 6C 74 73 20 20 69 66 20 77 65 20 64 results if we d
00D570: 69 64 6E 27 74 20 7A 65 72 6F 20 74 68 61 74 0D idn't zero that.
00D580: 0A 20 20 20 73 65 63 6F 6E 64 20 62 79 74 65 2E . second byte.
00D590: 0D 0A 20 20 20 20 20 54 68 65 20 72 65 61 73 6F .. The reaso
00D5A0: 6E 20 77 65 20 6B 65 65 70 20 75 73 69 6E 67 20 n we keep using
00D5B0: 69 6E 74 65 67 65 72 20 76 61 72 69 61 62 6C 65 integer variable
00D5C0: 73 20 69 73 20 74 68 61 74 20 76 61 72 69 61 62 s is that variab
00D5D0: 6C 65 73 20 77 69 74 68 6F 75 74 20 74 68 65 0D les without the.
00D5E0: 0A 20 20 20 70 65 72 63 65 6E 74 61 67 65 20 73 . percentage s
00D5F0: 69 67 6E 20 28 72 65 61 6C 20 76 61 72 69 61 62 ign (real variab
00D600: 6C 65 73 29 2C 20 20 61 72 65 20 20 73 74 6F 72 les), are stor
00D610: 65 64 20 20 69 6E 20 20 61 20 6D 6F 72 65 20 63 ed in a more c
00D620: 6F 6D 70 6C 69 63 61 74 65 64 20 77 61 79 0D 0A omplicated way..
00D630: 20 20 20 75 73 69 6E 67 20 66 69 76 65 20 62 79 using five by
00D640: 74 65 73 20 72 61 74 68 65 72 20 74 68 61 6E 20 tes rather than
00D650: 74 77 6F 2C 20 73 6F 20 69 74 20 6D 61 6B 65 73 two, so it makes
00D660: 20 69 74 20 6D 75 63 68 20 65 61 73 69 65 72 20 it much easier
00D670: 6A 75 73 74 20 74 6F 20 73 74 69 63 6B 0D 0A 20 just to stick..
00D680: 20 20 74 6F 20 69 6E 74 65 67 65 72 73 2E 0D 0A to integers...
00D690: 0D 0A 20 20 20 46 45 41 54 55 52 45 53 20 4D 55 .. FEATURES MU
00D6A0: 43 48 20 4D 49 53 53 45 44 0D 0A 20 20 20 49 6E CH MISSED.. In
00D6B0: 74 65 67 65 72 20 76 61 72 69 61 62 6C 65 73 20 teger variables
00D6C0: 74 68 65 6D 73 65 6C 76 65 73 20 61 72 65 20 6E themselves are n
00D6D0: 6F 74 20 20 72 65 61 6C 6C 79 20 20 71 75 69 74 ot really quit
00D6E0: 65 20 20 61 73 20 20 73 69 6D 70 6C 65 20 61 73 e as simple as
00D6F0: 20 77 65 20 6A 75 73 74 0D 0A 20 20 20 6D 61 64 we just.. mad
00D700: 72 6E 65 64 20 20 69 6E 20 20 41 20 20 69 73 20 rned in A is
00D710: 20 74 68 65 6E 20 20 73 61 76 65 64 20 69 6E 20 then saved in
00D720: 74 68 65 20 42 41 53 49 43 0D 0A 20 20 20 76 61 the BASIC.. va
00D730: 72 69 61 62 6C 65 20 62 65 66 6F 72 65 20 67 6F riable before go
00D740: 69 6E 67 20 62 61 63 6B 20 74 6F 20 42 41 53 49 ing back to BASI
00D750: 43 2E 0D 0A 20 20 20 20 20 4E 6F 74 65 20 74 68 C... Note th
00D760: 61 74 20 74 68 65 20 76 61 72 69 61 62 6C 65 20 at the variable
00D770: 77 68 6F 73 65 20 61 64 64 72 65 73 73 20 20 77 whose address w
00D780: 65 20 20 70 61 73 73 20 6D 75 73 74 20 61 6C 72 e pass must alr
00D790: 65 61 64 79 20 65 78 69 73 74 2E 20 20 54 68 61 eady exist. Tha
00D7A0: 74 0D 0A 20 20 20 69 73 20 77 68 79 20 6C 69 6E t.. is why lin
00D7B0: 65 20 31 32 30 20 73 65 74 73 20 63 25 20 74 6F e 120 sets c% to
00D7C0: 20 7A 65 72 6F 20 62 65 66 6F 72 65 20 63 61 6C zero before cal
00D7D0: 6C 69 6E 67 20 74 68 65 20 6D 61 63 68 69 6E 65 ling the machine
00D7E0: 20 63 6F 64 65 2E 0D 0A 0D 0A 20 20 20 41 20 44 code..... A D
00D7F0: 4F 4F 44 4C 45 20 54 52 41 4E 53 46 4F 52 4D 45 OODLE TRANSFORME
00D800: 44 0D 0A 20 20 20 41 63 74 75 61 6C 6C 79 2C 20 D.. Actually,
00D810: 74 68 61 74 20 69 73 6E 27 74 20 71 75 69 74 65 that isn't quite
00D820: 20 20 74 68 65 20 20 77 68 6F 6C 65 20 20 73 74 the whole st
00D830: 6F 72 79 2C 20 20 61 73 20 20 61 66 74 65 72 20 ory, as after
00D840: 20 73 61 76 69 6E 67 20 41 20 69 6E 20 74 68 65 saving A in the
00D850: 0D 0A 20 20 20 61 64 64 72 65 73 73 20 70 6F 69 .. address poi
00D860: 6E 74 65 64 20 74 6F 20 62 79 20 48 4C 2C 20 74 nted to by HL, t
00D870: 68 65 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 he machine code
00D880: 67 6F 65 73 20 6F 6E 20 74 6F 20 70 75 74 20 7A goes on to put z
00D890: 65 72 6F 20 69 6E 20 74 68 65 20 6E 65 78 74 0D ero in the next.
00D8A0: 0A 20 20 20 62 79 74 65 20 6F 66 20 6D 65 6D 6F . byte of memo
00D8B0: 72 79 2E 20 20 54 68 69 73 20 69 73 20 62 65 63 ry. This is bec
00D8C0: 61 75 73 65 20 6F 66 20 74 68 65 20 77 61 79 20 ause of the way
00D8D0: 69 6E 74 65 67 65 72 20 76 61 72 69 61 62 6C 65 integer variable
00D8E0: 73 20 61 72 65 20 73 74 6F 72 65 64 2E 0D 0A 20 s are stored...
00D8F0: 20 20 20 20 54 68 65 20 62 61 73 69 63 20 75 6E The basic un
00D900: 65 20 6F 75 74 2C 20 61 73 20 69 6E 73 74 65 61 e out, as instea
00D910: 64 20 6F 66 20 75 73 69 6E 67 20 20 74 68 65 20 d of using the
00D920: 20 74 77 6F 20 20 62 79 74 65 73 20 20 74 6F 20 two bytes to
00D930: 73 74 6F 72 65 20 6E 75 6D 62 65 72 73 20 66 72 store numbers fr
00D940: 6F 6D 20 30 20 74 6F 0D 0A 20 20 20 36 35 35 33 om 0 to.. 6553
00D950: 35 2C 20 74 68 65 79 20 73 74 6F 72 65 20 6E 75 5, they store nu
00D960: 6D 62 65 72 73 20 66 72 6F 6D 20 2D 33 32 37 36 mbers from -3276
00D970: 38 20 74 6F 20 33 32 37 36 37 2E 0D 0A 20 20 20 8 to 32767...
00D980: 20 20 59 6F 75 20 77 69 6C 6C 20 76 65 72 79 20 You will very
00D990: 72 61 72 65 6C 79 20 6E 65 65 64 20 74 6F 20 6B rarely need to k
00D9A0: 6E 6F 77 20 20 65 78 61 63 74 6C 79 20 20 68 6F now exactly ho
00D9B0: 77 20 74 68 65 79 20 61 72 65 20 73 74 6F 72 65 w they are store
00D9C0: 64 2E 20 20 49 66 20 79 6F 75 0D 0A 20 20 20 61 d. If you.. a
00D9D0: 72 65 20 70 61 73 73 69 6E 67 20 61 20 76 61 6C re passing a val
00D9E0: 75 65 20 74 6F 20 6D 61 63 68 69 6E 65 20 63 6F ue to machine co
00D9F0: 64 65 2C 20 20 42 41 53 49 43 20 6C 6F 6F 6B 73 de, BASIC looks
00DA00: 20 61 66 74 65 72 20 74 68 65 20 73 74 6F 72 69 after the stori
00DA10: 6E 67 20 6F 66 20 74 68 65 0D 0A 20 20 20 76 61 ng of the.. va
00DA20: 6C 75 65 20 69 6E 20 74 68 65 20 62 75 66 66 65 lue in the buffe
00DA30: 72 2E 20 20 57 68 65 6E 20 72 65 74 75 72 6E 69 r. When returni
00DA40: 6E 67 20 20 61 20 20 76 61 6C 75 65 20 66 72 6F ng a value fro
00DA50: 6D 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 74 m machine code t
00DA60: 6F 20 42 41 53 49 43 2C 0D 0A 20 20 20 69 66 69 o BASIC,.. ifi
00DA70: 74 20 69 73 20 61 20 73 69 6E 67 6C 65 20 62 79 t is a single by
00DA80: 74 65 20 76 61 6C 75 65 20 68 65 6C 64 20 69 6E te value held in
00DA90: 20 61 6E 20 38 2D 62 69 74 20 72 65 67 69 73 74 an 8-bit regist
00DAA0: 65 72 20 77 65 20 6A 75 73 74 20 75 73 65 20 74 er we just use t
00DAB0: 68 65 20 73 61 6D 65 0D 0A 20 20 20 74 65 63 68 he same.. tech
00DAC0: 6E 69 71 75 65 20 61 73 20 46 69 67 75 72 65 20 nique as Figure
00DAD0: 32 2E 37 2E 20 20 49 66 20 74 68 65 20 76 61 6C 2.7. If the val
00DAE0: 75 65 20 20 77 61 73 20 68 65 6C 64 20 69 6E 20 ue was held in
00DAF0: 61 20 31 36 2D 62 69 74 20 72 65 67 69 73 74 65 a 16-bit registe
00DB00: 69 74 20 6F 66 20 73 74 6F 72 61 67 65 20 69 73 it of storage is
00DB10: 20 61 20 62 79 74 65 2C 20 20 77 68 69 63 68 20 a byte, which
00DB20: 20 63 61 6E 20 68 6F 6C 64 20 61 20 6E 75 6D 62 can hold a numb
00DB30: 65 72 20 66 72 6F 6D 20 30 20 74 6F 0D 0A 20 20 er from 0 to..
00DB40: 20 32 35 35 2E 20 20 49 66 20 77 65 20 77 61 6E 255. If we wan
00DB50: 74 20 74 6F 20 20 73 74 6F 72 65 20 20 62 69 67 t to store big
00DB60: 67 65 72 20 20 6E 75 6D 62 65 72 73 20 20 77 65 ger numbers we
00DB70: 20 20 6E 65 65 64 20 20 6D 6F 72 65 20 62 79 74 need more byt
00DB80: 65 73 2E 20 20 41 20 67 6F 6F 64 0D 0A 20 20 20 es. A good..
00DB90: 61 6E 61 6C 6F 67 79 20 69 73 20 74 6F 20 6C 6F analogy is to lo
00DBA0: 6F 6B 20 61 74 20 74 68 65 20 20 66 61 6D 69 6C ok at the famil
00DBB0: 69 61 72 20 20 64 65 63 69 6D 61 6C 20 20 6E 75 iar decimal nu
00DBC0: 6D 62 65 72 73 2E 20 20 41 20 73 69 6E 67 6C 65 mbers. A single
00DBD0: 20 64 69 67 69 74 20 63 61 6E 0D 0A 20 20 20 65 digit can.. e
00DBE0: 78 70 72 65 73 73 20 74 68 65 20 6E 75 6D 62 65 xpress the numbe
00DBF0: 72 73 20 30 2D 39 2C 20 74 65 6E 20 64 69 66 66 rs 0-9, ten diff
00DC00: 65 72 65 6E 74 20 20 6E 75 6D 62 65 72 73 20 69 erent numbers i
00DC10: 6E 20 61 6C 6C 2E 20 20 54 6F 20 65 78 70 72 65 n all. To expre
00DC20: 73 73 20 62 69 67 67 65 72 0D 0A 20 20 20 6E 75 ss bigger.. nu
00DC30: 6D 62 65 72 73 20 77 65 20 75 73 65 20 61 6E 6F mbers we use ano
00DC40: 74 68 65 72 20 64 69 67 69 74 2C 20 67 69 76 69 ther digit, givi
00DC50: 6E 67 20 20 75 73 20 20 74 65 6E 20 74 69 6D 65 ng us ten time
00DC60: 73 20 61 73 20 6D 61 6E 79 20 6E 75 6D 62 65 72 s as many number
00DC70: 73 20 61 67 61 69 6E 3A 0D 0A 20 20 20 74 68 65 s again:.. the
00DC80: 20 68 75 6E 64 72 65 64 20 64 69 66 66 65 72 65 hundred differe
00DC90: 6E 74 20 6E 75 6D 62 65 72 73 20 66 72 6F 6D 20 nt numbers from
00DCA0: 30 20 20 74 6F 20 20 39 39 2E 20 20 20 57 65 20 0 to 99. We
00DCB0: 77 72 69 74 65 20 74 68 65 20 22 74 65 6E 73 22 write the "tens"
00DCC0: 20 62 65 66 6F 72 65 0D 0A 20 20 20 74 68 65 20 before.. the
00DCD0: 22 75 6E 69 74 73 22 2E 20 20 54 68 65 20 22 74 "units". The "t
00DCE0: 65 6E 73 22 20 20 61 72 65 20 20 74 65 72 6D 65 ens" are terme
00DCF0: 64 20 20 22 6D 6F 72 65 20 20 73 69 67 6E 69 66 d "more signif
00DD00: 72 20 70 61 69 72 0D 0A 20 20 20 73 75 63 68 20 r pair.. such
00DD10: 61 73 20 44 45 20 6F 72 20 48 4C 2C 20 20 74 68 as DE or HL, th
00DD20: 65 6E 20 20 75 73 75 61 6C 6C 79 20 20 77 65 20 en usually we
00DD30: 20 77 69 6C 6C 20 20 67 65 74 20 20 74 68 65 20 will get the
00DD40: 72 69 67 68 74 20 72 65 73 75 6C 74 73 20 6A 75 right results ju
00DD50: 73 74 20 62 79 0D 0A 20 20 20 70 6C 6F 6E 6B 69 st by.. plonki
00DD60: 6E 67 20 69 74 20 73 74 72 61 69 67 68 74 20 62 ng it straight b
00DD70: 61 63 6B 20 69 6E 74 6F 20 74 68 65 20 74 77 6F ack into the two
00DD80: 20 62 79 74 65 73 20 6F 66 20 74 68 65 20 69 6E bytes of the in
00DD90: 74 65 67 65 72 20 76 61 72 69 61 62 6C 65 2E 0D teger variable..
00DDA0: 0A 20 20 20 20 20 46 6F 72 20 65 78 61 6D 70 6C . For exampl
00DDB0: 65 2C 20 74 68 65 20 66 69 72 6D 77 61 72 65 20 e, the firmware
00DDC0: 63 61 6C 6C 20 20 26 42 42 43 36 20 20 73 65 74 call &BBC6 set
00DDD0: 73 20 20 44 45 20 20 61 6E 64 20 20 48 4C 20 20 s DE and HL
00DDE0: 74 6F 20 74 68 65 20 78 20 61 6E 64 20 79 0D 0A to the x and y..
00DDF0: 20 20 20 70 6F 73 69 74 69 6F 6E 20 6F 66 20 74 position of t
00DE00: 68 65 20 67 72 61 70 68 69 63 73 20 63 75 72 73 he graphics curs
00DE10: 6F 72 2C 20 20 65 69 74 68 65 72 20 20 6F 66 20 or, either of
00DE20: 20 77 68 69 63 68 20 63 6F 75 6C 64 20 62 65 20 which could be
00DE30: 6E 65 67 61 74 69 76 65 2E 20 20 54 6F 0D 0A 20 negative. To..
00DE40: 20 20 72 65 74 75 72 6E 20 74 68 65 20 78 20 63 return the x c
00DE50: 6F 2D 6F 72 64 69 6E 61 74 65 20 74 6F 20 61 20 o-ordinate to a
00DE60: 42 41 53 49 43 20 20 69 6E 74 65 67 65 72 20 76 BASIC integer v
00DE70: 61 72 69 61 62 6C 65 2C 20 77 65 20 77 6F 75 6C ariable, we woul
00DE80: 64 20 73 69 6D 70 6C 79 20 70 75 74 0D 0A 20 20 d simply put..
00DE90: 20 74 68 65 20 63 6F 6E 74 65 6E 74 73 20 6F 66 the contents of
00DEA0: 20 74 68 65 20 45 20 72 65 67 69 73 74 65 72 20 the E register
00DEB0: 69 6E 74 6F 20 74 68 65 20 20 66 69 72 73 74 20 into the first
00DEC0: 62 79 74 65 2C 20 61 6E 64 20 74 68 65 20 63 6F byte, and the co
00DED0: 6E 74 65 6E 74 73 20 6F 66 20 44 0D 0A 20 20 20 ntents of D..
00DEE0: 69 6E 74 6F 20 74 68 65 20 73 65 63 6F 6E 64 2E into the second.
00DEF0: 20 20 54 68 65 20 6E 65 67 61 74 69 76 65 20 6E The negative n
00DF00: 69 63 61 6E 74 22 20 20 74 68 61 6E 20 74 68 65 icant" than the
00DF10: 20 75 6E 69 74 73 0D 0A 20 20 20 62 65 63 61 75 units.. becau
00DF20: 73 65 20 74 68 65 79 20 68 65 6C 70 20 75 73 20 se they help us
00DF30: 74 6F 20 65 78 70 72 65 73 73 20 62 69 67 67 65 to express bigge
00DF40: 72 20 6E 75 6D 62 65 72 73 2E 0D 0A 20 20 20 20 r numbers...
00DF50: 20 49 6E 20 74 68 65 20 73 61 6D 65 20 77 61 79 In the same way
00DF60: 20 75 73 69 6E 67 20 74 77 6F 20 20 62 79 74 65 using two byte
00DF70: 73 20 20 65 6E 61 62 6C 65 73 20 20 75 73 20 74 s enables us t
00DF80: 6F 20 73 74 6F 72 65 20 36 35 35 33 36 20 28 3D o store 65536 (=
00DF90: 20 32 35 36 2A 32 35 36 29 0D 0A 20 20 20 6E 75 256*256).. nu
00DFA0: 6D 62 65 72 73 20 66 72 6F 6D 20 30 20 74 6F 20 mbers from 0 to
00DFB0: 36 35 35 33 35 2E 20 20 54 68 65 20 20 6D 6F 72 65535. The mor
00DFC0: 65 20 20 73 69 67 6E 69 66 69 63 61 6E 74 20 20 e significant
00DFD0: 62 79 74 65 2C 20 77 68 69 63 68 20 61 6C 6C 6F byte, which allo
00DFE0: 77 73 20 75 73 20 74 6F 0D 0A 20 20 20 73 74 6F ws us to.. sto
00DFF0: 72 65 20 6E 75 6D 62 65 72 73 20 62 69 67 67 65 re numbers bigge
00E000: 72 20 74 68 61 6E 20 32 35 35 2C 20 69 73 20 20 r than 255, is
00E010: 70 6C 61 63 65 64 20 20 61 66 74 65 72 20 74 68 placed after th
00E020: 65 20 66 69 72 73 74 20 62 79 74 65 20 69 6E 20 e first byte in
00E030: 6D 65 6D 6F 72 79 2C 0D 0A 20 20 20 75 6E 6C 69 memory,.. unli
00E040: 6B 65 20 74 68 65 20 77 61 79 20 77 65 20 77 72 ke the way we wr
00E050: 69 74 65 20 64 65 63 69 6D 61 6C 20 6E 75 6D 62 ite decimal numb
00E060: 65 72 73 2C 20 77 68 65 72 65 20 74 68 65 20 6D ers, where the m
00E070: 6F 72 65 20 73 69 67 6E 69 66 69 63 61 6E 74 20 ore significant
00E080: 64 69 67 69 74 73 0D 0A 20 20 20 63 6F 6D 65 20 digits.. come
00E090: 66 69 72 73 74 2E 0D 0A 20 20 20 20 20 41 6D 73 first... Ams
00E0A0: 74 72 61 64 73 20 70 75 74 20 74 68 65 20 6D 6F trads put the mo
00E0B0: 73 74 20 73 69 67 6E 69 66 69 63 61 6E 74 20 62 st significant b
00E0C0: 79 74 65 20 20 61 66 74 65 72 20 74 68 65 20 6C yte after the l
00E0D0: 65 61 73 74 20 73 69 67 6E 69 66 69 63 61 6E 74 east significant
00E0E0: 20 62 79 74 65 0D 0A 20 20 20 62 65 63 61 75 73 byte.. becaus
00E0F0: 65 20 74 68 61 74 20 69 73 20 68 6F 77 20 74 68 e that is how th
00E100: 20 20 74 68 65 20 6F 62 76 69 6F 75 73 20 77 61 the obvious wa
00E110: 79 20 20 77 6F 75 6C 64 20 20 62 65 20 20 74 6F y would be to
00E120: 20 20 73 74 6F 72 65 20 20 74 68 65 20 20 76 61 store the va
00E130: 6C 75 65 20 20 69 6E 20 20 61 20 70 61 72 74 69 lue in a parti
00E140: 63 75 6C 61 72 20 6D 65 6D 6F 72 79 0D 0A 20 20 cular memory..
00E150: 20 6C 6F 63 61 74 69 6F 6E 20 77 68 69 63 68 20 location which
00E160: 63 6F 75 6C 64 20 74 68 65 6E 20 62 65 20 50 45 could then be PE
00E170: 45 4B 65 64 20 62 79 20 42 41 53 49 43 2E 0D 0A EKed by BASIC...
00E180: 20 20 20 20 20 46 69 67 75 72 65 20 32 2E 37 20 Figure 2.7
00E190: 67 69 76 65 73 20 61 20 20 6D 6F 72 65 20 20 66 gives a more f
00E1A0: 6C 65 78 69 62 6C 65 20 20 6D 65 74 68 6F 64 2E lexible method.
00E1B0: 20 20 20 3C 3C 54 68 65 20 20 6C 69 73 74 69 6E <<The listin
00E1C0: 67 20 69 73 20 73 61 76 65 64 20 61 73 0D 0A 20 g is saved as..
00E1D0: 20 20 46 49 47 32 37 2E 3E 3E 20 20 54 68 65 20 FIG27.>> The
00E1E0: 6D 61 63 68 69 6E 65 20 20 63 6F 64 65 20 20 69 machine code i
00E1F0: 73 20 20 63 61 6C 6C 65 64 20 20 77 69 74 68 20 s called with
00E200: 20 43 41 4C 4C 20 20 26 39 30 30 30 2C 40 63 25 CALL &9000,@c%
00E210: 2E 20 20 20 63 25 20 69 73 20 61 6E 0D 0A 20 20 . c% is an..
00E220: 20 69 6E 74 65 67 65 72 20 76 61 72 69 61 62 6C integer variabl
00E230: 65 2E 20 20 54 68 65 20 22 40 22 20 20 69 6E 20 e. The "@" in
00E240: 20 66 72 6F 6E 74 20 20 6D 65 61 6E 73 20 20 74 front means t
00E250: 68 61 74 20 20 69 6E 73 74 65 61 64 20 6F 66 20 hat instead of
00E260: 70 61 73 73 69 6E 67 20 74 68 65 0D 0A 20 20 20 passing the..
00E270: 76 61 6C 75 65 20 6F 66 20 63 25 2C 20 77 65 20 value of c%, we
00E280: 61 72 65 20 70 61 73 73 69 6E 67 20 74 68 65 20 are passing the
00E290: 20 61 64 64 72 65 73 73 20 20 69 6E 20 6D 65 6D address in mem
00E2A0: 6F 72 79 20 61 74 20 77 68 69 63 68 20 69 74 20 ory at which it
00E2B0: 69 73 20 73 74 6F 72 65 64 2E 0D 0A 20 20 20 54 is stored... T
00E2C0: 68 65 20 69 64 65 61 20 69 73 20 74 68 61 74 20 he idea is that
00E2D0: 69 66 20 77 65 20 61 6C 74 65 72 20 20 74 68 65 if we alter the
00E2E0: 20 20 63 6F 6E 74 65 6E 74 73 20 20 6F 66 20 74 contents of t
00E2F0: 68 69 73 20 61 64 64 72 65 73 73 2C 20 77 65 20 his address, we
00E300: 65 20 20 5A 38 30 20 20 70 72 6F 63 65 73 73 6F e Z80 processo
00E310: 72 20 20 63 6F 6E 74 72 6F 6C 6C 69 6E 67 20 6F r controlling o
00E320: 75 72 20 63 6F 6D 70 75 74 65 72 73 20 70 72 65 ur computers pre
00E330: 66 65 72 73 0D 0A 20 20 20 69 74 2E 20 20 54 68 fers.. it. Th
00E340: 69 73 20 6D 65 74 68 6F 64 20 69 73 20 63 61 6C is method is cal
00E350: 6C 65 64 20 20 22 4C 69 74 74 6C 65 20 20 45 6E led "Little En
00E360: 64 69 61 6E 22 20 61 72 72 61 6E 67 65 6D 65 6E dian" arrangemen
00E370: 74 2C 20 74 6F 20 62 65 20 63 6F 6E 74 72 61 73 t, to be contras
00E380: 74 65 64 0D 0A 20 20 20 77 69 74 68 20 22 42 69 ted.. with "Bi
00E390: 67 20 45 6E 64 69 61 6E 22 2C 20 61 73 20 75 73 g Endian", as us
00E3A0: 65 64 20 62 79 20 20 74 68 65 20 20 41 70 70 6C ed by the Appl
00E3B0: 65 20 4D 61 63 69 6E 74 6F 73 68 2C 20 61 6D 6F e Macintosh, amo
00E3C0: 6E 67 20 6F 74 68 65 72 73 2C 20 61 6E 64 20 6E ng others, and n
00E3D0: 6F 74 0D 0A 20 20 20 74 6F 20 62 65 20 63 6F 6E ot.. to be con
00E3E0: 66 75 73 65 64 20 77 69 74 68 20 61 6E 79 74 68 fused with anyth
00E3F0: 69 6E 67 20 74 6F 20 64 6F 20 77 69 74 68 20 62 ing to do with b
00E400: 6F 69 6C 65 64 20 65 67 67 73 2E 0D 0A 20 20 20 oiled eggs...
00E410: 20 20 46 6F 72 20 6E 75 6D 62 65 72 73 20 73 6D For numbers sm
00E420: 61 6C 6C 65 72 20 74 68 61 6E 20 32 35 36 2C 20 aller than 256,
00E430: 74 68 65 20 73 65 63 6F 6E 64 20 62 79 74 65 20 the second byte
00E440: 77 69 6C 6C 20 61 6C 77 61 79 73 20 62 65 20 7A will always be z
00E450: 65 72 6F 2C 20 73 6F 20 61 73 0D 0A 20 20 20 77 ero, so as.. w
00E460: 65 20 61 72 65 20 72 65 74 75 72 6E 69 6E 67 20 e are returning
00E470: 61 20 76 61 6C 75 65 20 62 65 74 77 65 65 6E 20 a value between
00E480: 30 20 61 6E 64 20 32 35 35 2C 20 77 65 20 6E 65 0 and 255, we ne
00E490: 65 64 20 74 6F 20 73 65 74 20 74 68 65 20 73 65 ed to set the se
00E4A0: 63 6F 6E 64 20 62 79 74 65 0D 0A 20 20 20 74 6F cond byte.. to
00E4B0: 20 7A 65 72 6F 20 6A 75 73 74 20 74 6F 20 6D 61 zero just to ma
00E4C0: 6B 65 20 73 75 72 65 20 20 77 65 20 20 6F 76 65 ke sure we ove
00E4D0: 72 77 72 69 74 65 20 61 6E 79 20 70 72 65 76 69 rwrite any previ
00E4E0: 6F 75 73 20 76 61 6C 75 65 2E 20 20 46 6F 72 20 ous value. For
00E4F0: 65 78 61 6D 70 6C 65 2C 0D 0A 20 20 20 69 66 20 example,.. if
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 C9 02 00 00 00 02 ......N.........
00E520: 0C 00 C5 02 00 00 00 02 0C 00 C1 02 00 00 00 02 ................
00E530: 0C 00 C6 02 00 00 00 02 0C 00 C2 02 00 00 00 02 ................
00E540: 0C 00 C7 02 00 00 00 02 0C 00 C3 02 00 00 00 02 ................
00E550: 0C 00 C8 02 00 00 00 02 0C 00 C4 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 62 79 74 65 20 69 73 20 74 68 65 20 6C 65 6E byte is the len
00E610: 67 74 68 20 6F 66 20 20 74 68 65 20 73 74 72 69 gth of the stri
00E620: 6E 67 2C 20 61 6E 64 20 74 68 65 20 6E 65 78 74 ng, and the next
00E630: 20 74 77 6F 20 62 79 74 65 73 0D 0A 20 20 20 67 two bytes.. g
00E640: 69 76 65 20 74 68 65 20 61 64 64 72 65 73 73 20 ive the address
00E650: 61 74 20 20 77 68 69 63 68 20 20 74 68 65 20 20 at which the
00E660: 61 63 74 75 61 6C 20 20 63 68 61 72 61 63 74 65 actual characte
00E670: 72 73 20 20 69 6E 20 20 74 68 65 20 73 74 72 69 rs in the stri
00E680: 6E 67 20 63 61 6E 20 62 65 0D 0A 20 20 20 66 6F ng can be.. fo
00E690: 75 6E 64 2E 0D 0A 20 20 20 20 20 57 68 65 6E 20 und... When
00E6A0: 70 61 73 73 69 6E 67 20 74 68 65 20 61 64 64 72 passing the addr
00E6B0: 65 73 73 20 6F 66 20 61 20 20 73 74 72 69 6E 67 ess of a string
00E6C0: 20 20 76 61 72 69 61 62 6C 65 20 74 6F 20 6D 61 variable to ma
00E6D0: 63 68 69 6E 65 20 63 6F 64 65 2C 20 77 65 20 6D chine code, we m
00E6E0: 75 73 74 0D 0A 20 20 20 6D 61 6B 65 20 73 75 72 ust.. make sur
00E6F0: 65 20 74 68 61 74 20 74 68 65 20 76 61 72 69 61 e that the varia
00E700: 62 6C 65 20 61 6C 72 65 61 64 79 20 65 78 69 73 ble already exis
00E710: 74 73 2C 20 20 61 6E 64 20 74 68 61 74 20 69 74 ts, and that it
00E720: 20 69 73 20 6C 6F 6E 67 20 65 6E 6F 75 67 68 20 is long enough
00E730: 74 6F 0D 0A 20 20 20 68 6F 6C 64 20 77 68 61 74 to.. hold what
00E740: 20 77 65 20 77 61 6E 74 20 74 68 65 20 6D 61 63 we want the mac
00E750: 68 69 6E 65 20 63 6F 64 65 20 74 6F 20 73 74 6F hine code to sto
00E760: 72 65 20 69 6E 20 69 74 2E 20 20 4C 69 6E 65 20 re in it. Line
00E770: 31 32 30 20 74 61 6B 65 73 20 63 61 72 65 20 6F 120 takes care o
00E780: 66 0D 0A 20 20 20 74 68 69 73 20 62 79 20 73 65 f.. this by se
00E790: 74 74 69 6E 67 20 61 24 20 74 6F 20 62 65 20 61 tting a$ to be a
00E7A0: 20 73 70 61 63 65 2E 0D 0A 20 20 20 20 20 54 68 space... Th
00E7B0: 65 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 66 e machine code f
00E7C0: 69 72 73 74 20 6C 6F 61 64 73 20 74 68 65 20 20 irst loads the
00E7D0: 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 73 address of the s
00E7E0: 74 72 69 6E 67 20 64 65 73 63 72 69 70 74 6F 72 tring descriptor
00E7F0: 20 62 6C 6F 63 6B 0D 0A 20 20 20 69 6E 74 6F 20 block.. into
00E800: 31 33 30 20 50 52 49 4E 54 3A 50 52 49 4E 54 22 130 PRINT:PRINT"
00E810: 54 68 65 20 6C 65 74 74 65 72 20 61 74 20 74 68 The letter at th
00E820: 65 20 74 6F 70 20 6C 65 66 74 20 6F 66 20 74 68 e top left of th
00E830: 65 20 73 63 72 65 65 6E 20 69 73 20 61 20 22 3B e screen is a ";
00E840: 43 48 52 24 28 63 25 29 0D 0A 20 20 20 31 39 30 CHR$(c%).. 190
00E850: 20 44 41 54 41 20 44 44 2C 36 36 2C 30 31 2C 44 DATA DD,66,01,D
00E860: 44 2C 36 45 2C 30 30 2C 43 44 2C 36 30 2C 42 42 D,6E,00,CD,60,BB
00E870: 2C 37 37 2C 32 33 2C 33 36 2C 30 30 2C 43 39 0D ,77,23,36,00,C9.
00E880: 0A 0D 0A 20 20 20 44 44 20 36 36 20 30 31 20 20 ... DD 66 01
00E890: 20 20 20 20 4C 44 20 48 2C 28 49 58 2B 31 29 0D LD H,(IX+1).
00E8A0: 0A 20 20 20 44 44 20 36 45 20 30 30 20 20 20 20 . DD 6E 00
00E8B0: 20 20 4C 44 20 4C 2C 28 49 58 2B 30 29 0D 0A 20 LD L,(IX+0)..
00E8C0: 20 20 43 44 20 36 30 20 42 42 20 20 20 20 20 20 CD 60 BB
00E8D0: 43 41 4C 4C 20 30 42 42 36 30 68 0D 0A 20 20 20 CALL 0BB60h..
00E8E0: 37 37 20 20 20 20 20 20 20 20 20 20 20 20 4C 44 77 LD
00E8F0: 20 28 48 4C 29 2C 41 0D 0A 20 20 20 32 33 20 20 (HL),A.. 23
00E900: 20 20 20 20 20 20 20 20 20 20 49 4E 43 20 48 4C INC HL
00E910: 0D 0A 20 20 20 33 36 20 30 30 20 20 20 20 20 20 .. 36 00
00E920: 20 20 20 4C 44 20 28 48 4C 29 2C 30 0D 0A 20 20 LD (HL),0..
00E930: 20 43 39 20 20 20 20 20 20 20 20 20 20 20 20 52 C9 R
00E940: 45 54 0D 0A 0D 0A 20 20 20 46 69 67 75 72 65 20 ET.... Figure
00E950: 32 2E 37 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 31 30 2.7........ 10
00E960: 30 20 4D 45 4D 4F 52 59 20 26 38 46 46 46 3A 61 0 MEMORY &8FFF:a
00E970: 3D 26 39 30 30 30 3A 46 4F 52 20 78 3D 30 20 54 =&9000:FOR x=0 T
00E980: 4F 20 31 34 3A 52 45 41 44 20 61 24 3A 50 4F 4B O 14:READ a$:POK
00E990: 45 20 61 2B 78 2C 56 41 4C 28 22 26 22 2B 61 24 E a+x,VAL("&"+a$
00E9A0: 29 3A 4E 45 58 54 0D 0A 20 20 20 31 31 30 20 4D ):NEXT.. 110 M
00E9B0: 4F 44 45 20 32 3A 50 52 49 4E 54 22 53 69 6C 6C ODE 2:PRINT"Sill
00E9C0: 79 20 73 74 72 69 6E 67 22 0D 0A 20 20 20 31 32 y string".. 12
00E9D0: 30 20 61 24 3D 22 20 22 3A 4C 4F 43 41 54 45 20 0 a$=" ":LOCATE
00E9E0: 31 2C 31 3A 43 41 4C 4C 20 26 39 30 30 30 2C 40 1,1:CALL &9000,@
00E9F0: 61 24 0D 0A 20 20 20 31 33 30 20 50 52 49 4E 54 a$.. 130 PRINT
00EA00: 75 6D 62 65 72 73 20 77 69 6C 6C 20 6C 6F 6F 6B umbers will look
00EA10: 20 61 66 74 65 72 20 74 68 65 6D 73 65 6C 76 65 after themselve
00EA20: 73 2E 0D 0A 0D 0A 20 20 20 53 4D 41 4C 4C 20 42 s..... SMALL B
00EA30: 55 54 20 49 4E 44 49 53 50 45 4E 53 41 42 4C 45 UT INDISPENSABLE
00EA40: 0D 0A 20 20 20 53 74 72 69 6E 67 20 76 61 72 69 .. String vari
00EA50: 61 62 6C 65 73 20 61 72 65 20 73 74 6F 72 65 64 ables are stored
00EA60: 20 69 6E 20 61 20 76 65 72 79 20 64 69 66 66 65 in a very diffe
00EA70: 72 65 6E 74 20 77 61 79 20 66 72 6F 6D 20 69 6E rent way from in
00EA80: 74 65 67 65 72 73 2E 20 20 49 66 20 79 6F 75 0D tegers. If you.
00EA90: 0A 20 20 20 68 61 76 65 20 61 20 73 74 72 69 6E . have a strin
00EAA0: 67 20 76 61 72 69 61 62 6C 65 20 61 24 2C 20 74 g variable a$, t
00EAB0: 68 65 6E 20 20 40 61 24 20 20 67 69 76 65 73 20 hen @a$ gives
00EAC0: 20 75 73 20 20 74 68 65 20 61 64 64 72 65 73 73 us the address
00EAD0: 20 6F 66 20 74 68 65 20 73 74 72 69 6E 67 0D 0A of the string..
00EAE0: 20 20 20 64 65 73 63 72 69 70 74 6F 72 20 62 6C descriptor bl
00EAF0: 6F 63 6B 20 66 6F 72 20 61 24 2E 20 20 54 68 65 ock for a$. The
00EB00: 20 73 74 72 69 6E 67 20 64 65 73 63 72 69 70 74 string descript
00EB10: 6F 72 20 62 6C 6F 63 6B 20 69 73 20 74 68 72 65 or block is thre
00EB20: 65 20 62 79 74 65 73 20 6C 6F 6E 67 2C 0D 0A 20 e bytes long,..
00EB30: 20 20 61 6E 64 20 74 68 65 20 66 69 72 73 74 20 and the first
00EB40: 62 79 74 65 20 69 73 20 74 68 65 20 6C 65 6E 67 byte is the leng
00EB50: 74 68 20 6F 66 20 61 24 2E 20 20 54 72 79 20 69 th of a$. Try i
00EB60: 74 20 6F 75 74 3A 0D 0A 0D 0A 20 20 20 20 20 20 t out:....
00EB70: 20 20 20 61 24 3D 22 48 65 6C 6C 6F 22 0D 0A 20 a$="Hello"..
00EB80: 20 20 20 20 20 20 20 20 50 52 49 4E 54 20 50 45 PRINT PE
00EB90: 45 4B 28 40 61 24 29 0D 0A 0D 0A 20 20 20 54 68 EK(@a$).... Th
00EBA0: 65 20 6E 65 78 74 20 74 77 6F 20 62 79 74 65 73 e next two bytes
00EBB0: 20 67 69 76 65 20 75 73 20 74 68 65 20 20 61 64 give us the ad
00EBC0: 64 72 65 73 73 20 20 61 74 20 77 68 69 63 68 20 dress at which
00EBD0: 74 68 65 20 61 63 74 75 61 6C 20 63 68 61 72 61 the actual chara
00EBE0: 63 74 65 72 73 20 69 6E 0D 0A 20 20 20 74 68 65 cters in.. the
00EBF0: 20 73 74 72 69 6E 67 20 61 72 65 20 73 74 6F 72 string are stor
00EC00: 3A 50 52 49 4E 54 22 54 68 65 20 6C 65 74 74 65 :PRINT"The lette
00EC10: 72 20 61 74 20 74 68 65 20 74 6F 70 20 6C 65 66 r at the top lef
00EC20: 74 20 6F 66 20 74 68 65 20 73 63 72 65 65 6E 20 t of the screen
00EC30: 69 73 20 22 3B 61 24 0D 0A 20 20 20 31 39 30 20 is ";a$.. 190
00EC40: 44 41 54 41 20 44 44 2C 36 36 2C 30 31 2C 44 44 DATA DD,66,01,DD
00EC50: 2C 36 45 2C 30 30 2C 32 33 2C 35 45 2C 32 33 2C ,6E,00,23,5E,23,
00EC60: 35 36 2C 43 44 2C 36 30 2C 42 42 2C 31 32 2C 43 56,CD,60,BB,12,C
00EC70: 39 0D 0A 0D 0A 20 20 20 44 44 20 36 36 20 30 31 9.... DD 66 01
00EC80: 20 20 20 20 20 20 4C 44 20 48 2C 28 49 58 2B 31 LD H,(IX+1
00EC90: 29 0D 0A 20 20 20 44 44 20 36 45 20 30 30 20 20 ).. DD 6E 00
00ECA0: 20 20 20 20 4C 44 20 4C 2C 28 49 58 2B 30 29 0D LD L,(IX+0).
00ECB0: 0A 20 20 20 32 33 20 20 20 20 20 20 20 20 20 20 . 23
00ECC0: 20 20 49 4E 43 20 48 4C 0D 0A 20 20 20 35 45 20 INC HL.. 5E
00ECD0: 20 20 20 20 20 20 20 20 20 20 20 4C 44 20 45 2C LD E,
00ECE0: 28 48 4C 29 0D 0A 20 20 20 32 33 20 20 20 20 20 (HL).. 23
00ECF0: 20 20 20 20 20 20 20 49 4E 43 20 48 4C 0D 0A 20 INC HL..
00ED00: 20 20 35 36 20 20 20 20 20 20 20 20 20 20 20 20 56
00ED10: 4C 44 20 44 2C 28 48 4C 29 0D 0A 20 20 20 43 44 LD D,(HL).. CD
00ED20: 20 36 30 20 42 42 20 20 20 20 20 20 43 41 4C 4C 60 BB CALL
00ED30: 20 30 42 42 36 30 68 0D 0A 20 20 20 31 32 20 20 0BB60h.. 12
00ED40: 20 20 20 20 20 20 20 20 20 20 4C 44 20 28 44 45 LD (DE
00ED50: 29 2C 41 0D 0A 20 20 20 43 39 20 20 20 20 20 20 ),A.. C9
00ED60: 20 20 20 20 20 20 52 45 54 0D 0A 0D 0A 20 20 20 RET....
00ED70: 46 69 67 75 72 65 20 32 2E 37 31 0D 0A 1A 72 65 Figure 2.71...re
00ED80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00ED90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00EDA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00EDB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00EDC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00EDD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00EDE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00EDF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
00EE00: 65 64 2E 20 20 54 68 65 20 66 6F 6C 6C 6F 77 69 ed. The followi
00EE10: 6E 67 20 20 63 6F 6D 6D 61 6E 64 73 20 20 70 75 ng commands pu
00EE20: 74 20 74 68 69 73 20 61 64 64 72 65 73 73 20 69 t this address i
00EE30: 6E 74 6F 20 74 68 65 0D 0A 20 20 20 76 61 72 69 nto the.. vari
00EE40: 61 62 6C 65 20 61 64 64 72 2C 20 61 6E 64 20 74 able addr, and t
00EE50: 68 65 6E 20 70 72 69 6E 74 20 6F 75 74 20 74 68 hen print out th
00EE60: 65 20 63 68 61 72 61 63 74 65 72 73 20 69 6E 20 e characters in
00EE70: 74 68 65 20 73 74 72 69 6E 67 3A 0D 0A 0D 0A 20 the string:....
00EE80: 20 20 20 20 20 20 20 20 6C 65 6E 67 74 68 3D 50 length=P
00EE90: 45 45 4B 28 40 61 24 29 0D 0A 20 20 20 20 20 20 EEK(@a$)..
00EEA0: 20 20 20 61 64 64 72 3D 50 45 45 4B 28 40 61 24 addr=PEEK(@a$
00EEB0: 2B 31 29 2B 32 35 36 2A 50 45 45 4B 28 40 61 24 +1)+256*PEEK(@a$
00EEC0: 2B 32 29 0D 0A 20 20 20 20 20 20 20 20 20 46 4F +2).. FO
00EED0: 52 20 7A 3D 30 20 54 4F 20 6C 65 6E 67 74 68 2D R z=0 TO length-
00EEE0: 31 3A 50 52 49 4E 54 20 43 48 52 24 28 50 45 45 1:PRINT CHR$(PEE
00EEF0: 4B 28 61 64 64 72 2B 7A 29 29 3B 3A 4E 45 58 54 K(addr+z));:NEXT
00EF00: 0D 0A 0D 0A 20 20 20 49 74 20 69 73 20 62 61 73 .... It is bas
00EF10: 69 63 61 6C 6C 79 20 61 20 76 65 72 79 20 73 6C ically a very sl
00EF20: 6F 77 20 77 61 79 20 6F 66 20 64 6F 69 6E 67 20 ow way of doing
00EF30: 50 52 49 4E 54 20 61 24 2E 0D 0A 20 20 20 20 20 PRINT a$...
00EF40: 46 69 67 75 72 65 20 32 2E 37 31 20 3C 3C 73 61 Figure 2.71 <<sa
00EF50: 76 65 64 20 61 73 20 46 49 47 32 37 31 20 20 6F ved as FIG271 o
00EF60: 6E 20 20 74 68 65 20 20 64 69 73 63 3E 3E 20 20 n the disc>>
00EF70: 70 75 74 73 20 74 68 69 73 20 6B 6E 6F 77 6C 65 puts this knowle
00EF80: 64 67 65 20 69 6E 74 6F 0D 0A 20 20 20 70 72 61 dge into.. pra
00EF90: 63 74 69 63 65 20 77 69 74 68 20 61 6E 6F 74 68 ctice with anoth
00EFA0: 65 72 20 6C 69 74 74 6C 65 20 65 78 61 6D 70 6C er little exampl
00EFB0: 65 20 74 6F 20 72 65 61 64 20 61 20 63 68 61 72 e to read a char
00EFC0: 61 63 74 65 72 20 6F 66 66 20 74 68 65 20 73 63 acter off the sc
00EFD0: 72 65 65 6E 2E 0D 0A 0D 0A 20 20 20 20 20 54 68 reen..... Th
00EFE0: 65 72 65 20 69 73 20 71 75 69 74 65 20 61 20 62 ere is quite a b
00EFF0: 69 74 20 20 20 6D 6F 72 65 20 20 74 6F 20 20 73 it more to s
00F000: 23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61 #Programmers' Pa
00F010: 74 63 68 20 34 20 2D 20 57 41 43 43 49 20 31 31 tch 4 - WACCI 11
00F020: 33 2C 20 4A 75 6E 65 20 31 39 39 37 2C 20 70 2E 3, June 1997, p.
00F030: 20 31 31 2D 31 32 0D 0A 20 20 20 50 52 4F 47 52 11-12.. PROGR
00F040: 41 4D 4D 45 52 53 27 20 50 41 54 43 48 20 34 0D AMMERS' PATCH 4.
00F050: 0A 20 20 20 62 79 20 4D 61 74 74 68 65 77 20 26 . by Matthew &
00F060: 20 53 74 65 70 68 65 6E 20 50 68 69 6C 6C 69 70 Stephen Phillip
00F070: 73 0D 0A 0D 0A 20 20 20 57 65 20 66 69 6E 64 20 s.... We find
00F080: 66 69 6E 65 6C 79 20 67 72 61 74 65 64 20 20 50 finely grated P
00F090: 61 72 6D 65 73 61 6E 20 20 63 68 65 65 73 65 20 armesan cheese
00F0A0: 20 73 70 72 69 6E 6B 6C 65 64 20 20 67 65 6E 65 sprinkled gene
00F0B0: 72 6F 75 73 6C 79 20 6F 76 65 72 20 61 20 67 6F rously over a go
00F0C0: 6F 64 0D 0A 20 20 20 70 6C 61 74 65 66 75 6C 20 od.. plateful
00F0D0: 6F 66 20 73 70 61 67 68 65 74 74 69 20 70 72 6F of spaghetti pro
00F0E0: 64 75 63 65 73 20 61 20 20 70 6C 61 69 6E 2C 20 duces a plain,
00F0F0: 20 6E 75 74 72 69 74 69 6F 75 73 2C 20 62 75 74 nutritious, but
00F100: 20 73 74 72 69 6E 67 79 20 6D 65 61 6C 2E 20 20 stringy meal.
00F110: 41 0D 0A 20 20 20 70 6F 70 75 6C 61 72 20 61 6C A.. popular al
00F120: 74 65 72 6E 61 74 69 76 65 20 66 72 6F 6D 20 74 ternative from t
00F130: 68 65 20 4F 72 69 65 6E 74 20 69 73 20 65 67 67 he Orient is egg
00F140: 20 6E 6F 6F 64 6C 65 73 2C 20 62 75 74 20 77 65 noodles, but we
00F150: 20 77 6F 75 6C 64 20 72 65 63 6F 6D 6D 65 6E 64 would recommend
00F160: 0D 0A 20 20 20 74 68 65 20 66 6F 6C 6C 6F 77 69 .. the followi
00F170: 6E 67 20 61 72 74 69 63 6C 65 2C 20 77 68 69 63 ng article, whic
00F180: 68 20 20 69 73 20 20 65 71 75 61 6C 6C 79 20 20 h is equally
00F190: 73 74 72 69 6E 67 79 20 20 61 6E 64 20 72 65 71 stringy and req
00F1A0: 75 69 72 65 73 20 70 6C 65 6E 74 79 20 6F 66 0D uires plenty of.
00F1B0: 0A 20 20 20 62 6C 61 63 6B 20 70 65 70 70 65 72 . black pepper
00F1C0: 2E 0D 0A 0D 0A 20 20 20 53 54 52 49 4E 47 49 4E ..... STRINGIN
00F1D0: 47 20 41 4C 4F 4E 47 0D 0A 20 20 20 4C 61 73 74 G ALONG.. Last
00F1E0: 20 6D 6F 6E 74 68 20 77 65 20 66 69 6E 69 73 68 month we finish
00F1F0: 65 64 20 6F 66 66 20 77 69 74 68 20 61 6E 20 65 ed off with an e
00F200: 74 72 69 6E 67 20 20 68 61 6E 64 6C 69 6E 67 20 tring handling
00F210: 20 74 68 61 6E 20 79 6F 75 20 6D 69 67 68 74 20 than you might
00F220: 74 68 69 6E 6B 2E 0D 0A 20 20 20 41 66 74 65 72 think... After
00F230: 20 79 6F 75 20 68 61 76 65 20 72 75 6E 20 74 68 you have run th
00F240: 65 20 61 62 6F 76 65 20 70 72 6F 67 72 61 6D 2C e above program,
00F250: 20 6C 69 73 74 20 69 74 20 61 67 61 69 6E 2C 20 list it again,
00F260: 61 6E 64 20 68 61 76 65 20 61 20 63 6C 6F 73 65 and have a close
00F270: 20 6C 6F 6F 6B 0D 0A 20 20 20 61 74 20 6C 69 6E look.. at lin
00F280: 65 20 31 32 30 2E 20 20 41 6E 20 69 6E 74 65 72 e 120. An inter
00F290: 65 73 74 69 6E 67 20 65 66 66 65 63 74 2C 20 69 esting effect, i
00F2A0: 73 6E 27 74 20 69 74 3F 0D 0A 20 20 20 20 20 4E sn't it?.. N
00F2B0: 65 78 74 20 6D 6F 6E 74 68 20 77 65 20 77 69 6C ext month we wil
00F2C0: 6C 20 72 75 6E 20 20 6F 76 65 72 20 20 74 68 65 l run over the
00F2D0: 20 20 6D 61 69 6E 20 20 70 6F 69 6E 74 73 20 20 main points
00F2E0: 6F 66 20 20 68 6F 77 20 74 6F 20 68 61 6E 64 6C of how to handl
00F2F0: 65 20 42 41 53 49 43 0D 0A 20 20 20 73 74 72 69 e BASIC.. stri
00F300: 6E 67 73 20 69 6E 20 6D 61 63 68 69 6E 65 20 63 ngs in machine c
00F310: 6F 64 65 2C 20 61 6E 64 20 67 6F 20 6F 76 65 72 ode, and go over
00F320: 20 20 74 68 65 20 20 6D 61 63 68 69 6E 65 20 63 the machine c
00F330: 6F 64 65 20 66 6F 72 20 6F 75 72 20 64 69 73 63 ode for our disc
00F340: 20 6D 65 6E 75 2E 0D 0A 20 20 20 49 6E 20 74 68 menu... In th
00F350: 65 20 6D 65 61 6E 74 69 6D 65 2C 20 68 61 76 65 e meantime, have
00F360: 20 66 75 6E 20 70 6C 61 79 69 6E 67 20 20 61 72 fun playing ar
00F370: 6F 75 6E 64 20 20 77 69 74 68 20 20 73 6F 6D 65 ound with some
00F380: 20 6F 66 20 74 68 65 20 65 78 61 6D 70 6C 65 73 of the examples
00F390: 2C 20 61 6E 64 0D 0A 20 20 20 73 65 65 20 77 68 , and.. see wh
00F3A0: 61 74 20 65 6C 73 65 20 79 6F 75 20 63 61 6E 20 at else you can
00F3B0: 63 6F 6D 65 20 75 70 20 77 69 74 68 2E 0D 0A 0D come up with....
00F3C0: 0A 0D 0A 0D 0A 20 20 20 31 30 30 20 4D 45 4D 4F ..... 100 MEMO
00F3D0: 52 59 20 26 38 46 46 46 3A 61 3D 26 39 30 30 30 RY &8FFF:a=&9000
00F3E0: 3A 46 4F 52 20 78 3D 30 20 54 4F 20 31 30 3A 52 :FOR x=0 TO 10:R
00F3F0: 45 41 44 20 61 24 3A 50 4F 4B 45 20 61 2B 78 2C EAD a$:POKE a+x,
00F400: 78 61 6D 70 6C 65 20 6F 66 20 63 68 61 6E 67 69 xample of changi
00F410: 6E 67 20 61 20 42 41 53 49 43 20 73 74 72 69 6E ng a BASIC strin
00F420: 67 20 66 72 6F 6D 0D 0A 20 20 20 6D 61 63 68 69 g from.. machi
00F430: 6E 65 20 63 6F 64 65 2E 20 20 48 65 72 65 20 69 ne code. Here i
00F440: 74 20 20 69 73 20 20 61 67 61 69 6E 20 20 69 6E t is again in
00F450: 20 20 46 69 67 75 72 65 20 20 32 2E 37 31 2E 20 Figure 2.71.
00F460: 20 20 54 68 65 20 70 72 6F 67 72 61 6D 20 72 65 The program re
00F470: 61 64 73 20 61 0D 0A 20 20 20 63 68 61 72 61 63 ads a.. charac
00F480: 74 65 72 20 66 72 6F 6D 20 74 68 65 20 73 63 72 ter from the scr
00F490: 65 65 6E 20 20 61 6E 64 20 20 70 75 74 73 20 20 een and puts
00F4A0: 69 74 20 20 69 6E 74 6F 20 20 74 68 65 20 20 73 it into the s
00F4B0: 74 72 69 6E 67 20 6F 66 20 6F 75 72 20 63 68 6F tring of our cho
00F4C0: 69 63 65 2E 0D 0A 20 20 20 3C 3C 54 68 65 20 42 ice... <<The B
00F4D0: 41 53 49 43 20 76 65 72 73 69 6F 6E 20 69 73 20 ASIC version is
00F4E0: 73 61 76 65 64 20 61 73 20 46 49 47 32 37 31 20 saved as FIG271
00F4F0: 6F 6E 20 74 68 65 20 64 69 73 63 2E 3E 3E 0D 0A on the disc.>>..
00F500: 20 20 20 20 20 4A 75 73 74 20 74 6F 20 72 65 63 Just to rec
00F510: 61 70 2C 20 75 6E 6C 69 6B 65 20 77 69 74 68 20 ap, unlike with
00F520: 6E 75 6D 65 72 69 63 20 76 61 72 69 61 62 6C 65 numeric variable
00F530: 73 2C 20 77 68 65 72 65 20 40 61 25 20 67 69 76 s, where @a% giv
00F540: 65 73 20 74 68 65 20 61 63 74 75 61 6C 0D 0A 20 es the actual..
00F550: 20 20 61 64 64 72 65 73 73 20 77 68 65 72 65 20 address where
00F560: 74 68 65 20 6E 75 6D 62 65 72 20 68 65 6C 64 20 the number held
00F570: 69 6E 20 61 25 20 69 73 20 73 74 6F 72 65 64 2C in a% is stored,
00F580: 20 66 6F 72 20 61 20 73 74 72 69 6E 67 2C 20 40 for a string, @
00F590: 61 24 20 67 69 76 65 73 20 74 68 65 0D 0A 20 20 a$ gives the..
00F5A0: 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 address of the
00F5B0: 73 74 72 69 6E 67 20 64 65 73 63 72 69 70 74 6F string descripto
00F5C0: 72 20 62 6C 6F 63 6B 20 66 6F 72 20 20 61 24 2E r block for a$.
00F5D0: 20 20 54 68 69 73 20 62 6C 6F 63 6B 20 69 73 20 This block is
00F5E0: 74 68 72 65 65 20 62 79 74 65 73 0D 0A 20 20 20 three bytes..
00F5F0: 6C 6F 6E 67 2E 20 20 54 68 65 20 66 69 72 73 74 long. The first
00F600: 56 41 4C 28 22 26 22 2B 61 24 29 3A 4E 45 58 54 VAL("&"+a$):NEXT
00F610: 0D 0A 20 20 20 31 31 30 20 50 52 49 4E 54 22 45 .. 110 PRINT"E
00F620: 6E 74 65 72 20 6E 75 6D 62 65 72 20 28 31 20 74 nter number (1 t
00F630: 6F 20 32 35 35 29 22 3B 3A 49 4E 50 55 54 20 78 o 255)";:INPUT x
00F640: 0D 0A 20 20 20 31 32 30 20 43 41 4C 4C 20 26 39 .. 120 CALL &9
00F650: 30 30 30 2C 78 3A 50 52 49 4E 54 0D 0A 20 20 20 000,x:PRINT..
00F660: 31 33 30 20 47 4F 54 4F 20 31 31 30 0D 0A 20 20 130 GOTO 110..
00F670: 20 31 39 30 20 44 41 54 41 20 44 44 2C 34 36 2C 190 DATA DD,46,
00F680: 30 30 2C 33 45 2C 34 30 2C 43 44 2C 35 41 2C 42 00,3E,40,CD,5A,B
00F690: 42 2C 31 30 2C 46 42 2C 43 39 0D 0A 0D 0A 20 20 B,10,FB,C9....
00F6A0: 20 44 44 20 34 36 20 30 30 20 20 20 20 20 20 20 DD 46 00
00F6B0: 20 20 20 20 20 20 20 4C 44 20 42 2C 28 49 58 2B LD B,(IX+
00F6C0: 30 29 0D 0A 20 20 20 33 45 20 34 30 20 20 20 20 0).. 3E 40
00F6D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 4C 44 20 LD
00F6E0: 41 2C 22 40 22 0D 0A 20 20 20 43 44 20 35 41 20 A,"@".. CD 5A
00F6F0: 42 42 20 20 20 20 20 20 20 20 20 20 20 20 20 20 BB
00F700: 6C 6F 6F 70 3A 20 43 41 4C 4C 20 30 42 42 35 41 loop: CALL 0BB5A
00F710: 68 0D 0A 20 20 20 31 30 20 46 42 20 20 20 20 20 h.. 10 FB
00F720: 20 20 20 20 20 20 20 20 20 20 20 20 44 4A 4E 5A DJNZ
00F730: 20 6C 6F 6F 70 0D 0A 20 20 20 43 39 20 20 20 20 loop.. C9
00F740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
00F750: 52 45 54 0D 0A 0D 0A 20 20 20 46 69 67 75 72 65 RET.... Figure
00F760: 20 32 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 31 30 30 2........ 100
00F770: 20 4D 45 4D 4F 52 59 20 26 38 46 46 46 3A 61 3D MEMORY &8FFF:a=
00F780: 26 39 30 30 30 3A 46 4F 52 20 78 3D 30 20 54 4F &9000:FOR x=0 TO
00F790: 20 31 33 3A 52 45 41 44 20 61 24 3A 50 4F 4B 45 13:READ a$:POKE
00F7A0: 20 61 2B 78 2C 56 41 4C 28 22 26 22 2B 61 24 29 a+x,VAL("&"+a$)
00F7B0: 3A 4E 45 58 54 0D 0A 20 20 20 31 31 30 20 4D 4F :NEXT.. 110 MO
00F7C0: 44 45 20 32 3A 50 52 49 4E 54 22 42 75 6E 6E 79 DE 2:PRINT"Bunny
00F7D0: 6D 65 6E 22 0D 0A 20 20 20 31 32 30 20 63 25 3D men".. 120 c%=
00F7E0: 30 3A 4C 4F 43 41 54 45 20 31 2C 31 3A 43 41 4C 0:LOCATE 1,1:CAL
00F7F0: 4C 20 26 39 30 30 30 2C 40 63 25 0D 0A 20 20 20 L &9000,@c%..
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 C7 02 00 00 00 02 ......N.........
00F820: 0D 00 C3 02 00 00 00 02 0D 00 C8 02 00 00 00 02 ................
00F830: 0D 00 C4 02 00 00 00 02 0D 00 C9 02 00 00 00 02 ................
00F840: 0D 00 C5 02 00 00 00 02 0D 00 C1 02 00 00 00 02 ................
00F850: 0D 00 C6 02 00 00 00 02 0D 00 C2 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: 70 72 6F 70 65 72 6C 79 2E 20 20 49 74 20 69 73 properly. It is
00F910: 20 62 65 74 74 65 72 20 20 74 6F 20 20 73 74 69 better to sti
00F920: 63 6B 20 20 74 6F 20 61 6C 74 65 72 69 6E 67 20 ck to altering
00F930: 74 68 65 20 63 6F 6E 74 65 6E 74 73 20 6F 66 0D the contents of.
00F940: 0A 20 20 20 74 68 65 20 73 74 72 69 6E 67 20 61 . the string a
00F950: 6C 6F 6E 65 2E 0D 0A 0D 0A 20 20 20 50 4F 50 20 lone..... POP
00F960: 49 54 20 4F 4E 20 41 20 53 54 52 49 4E 47 0D 0A IT ON A STRING..
00F970: 20 20 20 41 74 20 6C 6F 6E 67 20 6C 61 73 74 20 At long last
00F980: 77 65 20 77 69 6C 6C 20 68 61 76 65 20 61 20 20 we will have a
00F990: 67 6F 6F 64 20 20 6C 6F 6F 6B 20 20 61 74 20 74 good look at t
00F9A0: 68 65 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 he machine code
00F9B0: 66 72 6F 6D 20 74 68 65 20 64 69 73 63 0D 0A 20 from the disc..
00F9C0: 20 20 6D 65 6E 75 20 70 72 6F 67 72 61 6D 20 69 menu program i
00F9D0: 6E 20 74 68 65 20 46 65 62 72 75 61 72 79 20 20 n the February
00F9E0: 61 72 74 69 63 6C 65 2E 20 20 20 54 68 65 20 20 article. The
00F9F0: 61 73 73 65 6D 62 6C 79 20 6C 69 73 74 69 6E 67 assembly listing
00FA00: 20 69 73 20 67 69 76 65 6E 20 69 6E 0D 0A 20 20 is given in..
00FA10: 20 46 69 67 75 72 65 20 32 2E 37 31 38 2C 20 66 Figure 2.718, f
00FA20: 6F 6C 6C 6F 77 65 64 20 62 79 20 20 61 20 20 42 ollowed by a B
00FA30: 41 53 49 43 20 20 70 72 6F 67 72 61 6D 20 20 74 ASIC program t
00FA40: 6F 20 20 70 6F 6B 65 20 20 69 74 20 69 6E 74 6F o poke it into
00FA50: 20 6D 65 6D 6F 72 79 20 61 6E 64 0D 0A 20 20 20 memory and..
00FA60: 64 65 6D 6F 6E 73 74 72 61 74 65 20 69 74 73 20 demonstrate its
00FA70: 75 73 65 2E 20 20 3C 3C 54 68 69 73 20 69 73 20 use. <<This is
00FA80: 73 61 76 65 64 20 61 73 20 46 49 47 32 37 31 38 saved as FIG2718
00FA90: 20 6F 6E 20 74 68 65 20 64 69 73 63 2E 3E 3E 0D on the disc.>>.
00FAA0: 0A 20 20 20 20 20 4C 69 6E 65 20 32 30 20 73 68 . Line 20 sh
00FAB0: 6F 77 73 20 68 6F 77 20 20 74 68 65 20 20 6D 61 ows how the ma
00FAC0: 63 68 69 6E 65 20 20 63 6F 64 65 20 20 63 61 6E chine code can
00FAD0: 20 20 62 65 20 20 63 61 6C 6C 65 64 2E 20 20 20 be called.
00FAE0: 54 68 65 20 6A 6F 62 20 6F 66 20 74 68 65 0D 0A The job of the..
00FAF0: 20 20 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 machine code
00FB00: 77 61 79 2C 20 61 6E 64 20 69 66 20 79 6F 75 72 way, and if your
00FB10: 20 70 72 6F 67 72 61 6D 20 64 65 66 69 6E 65 73 program defines
00FB20: 0D 0A 20 20 20 61 20 73 74 72 69 6E 67 20 62 79 .. a string by
00FB30: 20 73 61 79 69 6E 67 20 61 24 3D 22 20 22 2C 20 saying a$=" ",
00FB40: 69 74 20 73 65 74 73 20 20 75 70 20 74 68 65 20 it sets up the
00FB50: 73 74 72 69 6E 67 20 64 65 73 63 72 69 70 74 6F string descripto
00FB60: 72 20 62 6C 6F 63 6B 20 73 6F 20 74 68 61 74 0D r block so that.
00FB70: 0A 20 20 20 74 68 65 20 61 64 64 72 65 73 73 20 . the address
00FB80: 70 6F 69 6E 74 69 6E 67 20 74 6F 20 74 68 65 20 pointing to the
00FB90: 20 63 68 61 72 61 63 74 65 72 73 20 20 6A 75 73 characters jus
00FBA0: 74 20 20 70 6F 69 6E 74 73 20 20 62 61 63 6B 20 t points back
00FBB0: 74 6F 20 74 68 65 20 6C 69 6E 65 20 69 6E 0D 0A to the line in..
00FBC0: 20 20 20 42 41 53 49 43 20 77 68 65 72 65 20 79 BASIC where y
00FBD0: 6F 75 20 64 65 66 69 6E 65 64 20 74 68 65 20 73 ou defined the s
00FBE0: 74 72 69 6E 67 21 20 20 20 54 68 65 20 20 61 64 tring! The ad
00FBF0: 64 72 65 73 73 20 20 69 73 20 63 68 61 6E 67 65 dress is change
00FC00: 64 20 74 6F 20 70 6F 69 6E 74 20 74 6F 0D 0A 20 d to point to..
00FC10: 20 20 73 6F 6D 65 77 68 65 72 65 20 69 6E 20 74 somewhere in t
00FC20: 68 65 20 73 74 72 69 6E 67 20 20 61 72 65 61 20 he string area
00FC30: 20 61 73 20 20 73 6F 6F 6E 20 20 61 73 20 20 79 as soon as y
00FC40: 6F 75 20 20 61 6C 74 65 72 20 20 74 68 65 20 73 ou alter the s
00FC50: 74 72 69 6E 67 20 77 69 74 68 20 61 0D 0A 20 20 tring with a..
00FC60: 20 63 6F 6D 6D 61 6E 64 20 6C 69 6B 65 20 61 24 command like a$
00FC70: 3D 61 24 2B 22 65 78 74 72 61 22 2C 20 6F 72 20 =a$+"extra", or
00FC80: 73 69 6D 69 6C 61 72 20 63 6F 6E 73 74 72 75 63 similar construc
00FC90: 74 69 6F 6E 73 2E 20 20 42 65 66 6F 72 65 20 74 tions. Before t
00FCA0: 68 69 73 20 68 61 70 70 65 6E 73 0D 0A 20 20 20 his happens..
00FCB0: 74 68 6F 75 67 68 2C 20 61 6E 79 20 6D 61 63 68 though, any mach
00FCC0: 69 6E 65 20 63 6F 64 65 20 61 6C 74 65 72 69 6E ine code alterin
00FCD0: 67 20 74 68 65 20 63 6F 6E 74 65 6E 74 73 20 6F g the contents o
00FCE0: 66 20 61 24 20 77 6F 75 6C 64 20 61 6C 73 6F 20 f a$ would also
00FCF0: 63 68 61 6E 67 65 20 74 68 65 0D 0A 20 20 20 42 change the.. B
00FD00: 69 73 20 20 74 6F 20 20 72 65 61 64 20 20 63 68 is to read ch
00FD10: 61 72 61 63 74 65 72 73 20 20 66 72 6F 6D 20 20 aracters from
00FD20: 74 68 65 20 20 73 63 72 65 65 6E 2C 20 20 73 74 the screen, st
00FD30: 61 72 74 69 6E 67 20 61 74 20 74 68 65 0D 0A 20 arting at the..
00FD40: 20 20 63 75 72 72 65 6E 74 20 63 75 72 73 6F 72 current cursor
00FD50: 20 70 6F 73 69 74 69 6F 6E 2E 20 20 54 68 65 20 position. The
00FD60: 72 65 73 75 6C 74 73 20 61 72 65 20 70 6C 61 63 results are plac
00FD70: 65 64 20 69 6E 20 74 68 65 20 73 74 72 69 6E 67 ed in the string
00FD80: 20 70 61 73 73 65 64 20 66 72 6F 6D 0D 0A 20 20 passed from..
00FD90: 20 42 41 53 49 43 2E 20 20 54 68 65 20 6D 61 63 BASIC. The mac
00FDA0: 68 69 6E 65 20 63 6F 64 65 20 6C 6F 6F 6B 73 20 hine code looks
00FDB0: 74 6F 20 20 73 65 65 20 20 68 6F 77 20 20 6C 6F to see how lo
00FDC0: 6E 67 20 74 68 69 73 20 73 74 72 69 6E 67 20 69 ng this string i
00FDD0: 73 2C 20 61 6E 64 20 74 68 65 6E 0D 0A 20 20 20 s, and then..
00FDE0: 72 65 61 64 73 20 74 68 69 73 20 6D 61 6E 79 20 reads this many
00FDF0: 63 68 61 72 61 63 74 65 72 73 20 66 72 6F 6D 20 characters from
00FE00: 74 68 65 20 73 63 72 65 65 6E 20 61 6E 64 20 70 the screen and p
00FE10: 6C 61 63 65 73 20 74 68 65 6D 20 69 6E 20 74 68 laces them in th
00FE20: 65 20 73 74 72 69 6E 67 2E 0D 0A 20 20 20 20 20 e string...
00FE30: 54 68 65 72 65 20 61 72 65 20 70 6C 65 6E 74 79 There are plenty
00FE40: 20 6F 66 20 63 6F 6D 6D 65 6E 74 73 20 69 6E 20 of comments in
00FE50: 74 68 65 20 6C 69 73 74 69 6E 67 20 74 6F 20 6D the listing to m
00FE60: 61 6B 65 20 69 74 20 65 61 73 69 65 72 20 74 6F ake it easier to
00FE70: 20 66 6F 6C 6C 6F 77 2C 0D 0A 20 20 20 62 75 74 follow,.. but
00FE80: 20 74 68 65 20 74 68 72 65 65 20 66 69 72 6D 77 the three firmw
00FE90: 61 72 65 20 63 61 6C 6C 73 20 6E 65 65 64 20 6D are calls need m
00FEA0: 6F 72 65 20 65 78 70 6C 61 6E 61 74 69 6F 6E 3A ore explanation:
00FEB0: 0D 0A 0D 0A 20 20 20 26 42 42 37 38 20 20 54 58 .... &BB78 TX
00FEC0: 54 20 47 45 54 20 43 55 52 53 4F 52 0D 0A 20 20 T GET CURSOR..
00FED0: 20 20 20 20 20 20 20 20 52 65 74 75 72 6E 73 20 Returns
00FEE0: 74 68 65 20 63 75 72 72 65 6E 74 20 20 74 65 78 the current tex
00FEF0: 74 20 20 63 75 72 73 6F 72 20 20 70 6F 73 69 74 t cursor posit
00FF00: 41 53 49 43 20 70 72 6F 67 72 61 6D 20 6C 69 6E ASIC program lin
00FF10: 65 20 61 73 20 61 20 73 69 64 65 20 65 66 66 65 e as a side effe
00FF20: 63 74 2E 0D 0A 20 20 20 20 20 54 68 69 73 20 64 ct... This d
00FF30: 6F 65 73 20 6E 6F 74 20 72 65 61 6C 6C 79 20 6D oes not really m
00FF40: 61 74 74 65 72 20 69 6E 20 6F 75 72 20 20 6C 69 atter in our li
00FF50: 74 74 6C 65 20 65 78 61 6D 70 6C 65 2E 20 20 41 ttle example. A
00FF60: 6C 6C 20 77 65 20 77 61 6E 74 65 64 20 74 6F 20 ll we wanted to
00FF70: 64 6F 0D 0A 20 20 20 77 61 73 20 74 6F 20 6D 61 do.. was to ma
00FF80: 6B 65 20 73 75 72 65 20 74 68 61 74 20 61 24 20 ke sure that a$
00FF90: 77 61 73 20 20 6F 6E 65 20 20 63 68 61 72 61 63 was one charac
00FFA0: 74 65 72 20 6C 6F 6E 67 2C 20 61 6E 64 20 61 24 ter long, and a$
00FFB0: 3D 22 53 22 20 64 6F 65 73 20 6A 75 73 74 20 61 ="S" does just a
00FFC0: 73 0D 0A 20 20 20 77 65 6C 6C 20 61 73 20 61 24 s.. well as a$
00FFD0: 3D 22 20 22 2E 20 20 4F 66 74 65 6E 20 74 68 6F =" ". Often tho
00FFE0: 75 67 68 2C 20 20 69 74 20 20 63 6F 75 6C 64 20 ugh, it could
00FFF0: 70 72 6F 64 75 63 65 20 75 6E 64 65 73 69 72 61 produce undesira
010000: 62 6C 65 20 63 6F 6E 73 65 71 75 65 6E 63 65 73 ble consequences
010010: 0D 0A 20 20 20 28 62 75 67 73 29 2E 20 20 54 68 .. (bugs). Th
010020: 65 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 63 e machine code c
010030: 61 6E 6E 6F 74 20 74 65 6C 6C 20 77 68 65 74 68 annot tell wheth
010040: 65 72 20 74 68 65 20 63 68 61 72 61 63 74 65 72 er the character
010050: 73 20 6F 66 20 74 68 65 20 73 74 72 69 6E 67 0D s of the string.
010060: 0A 20 20 20 61 72 65 20 70 61 72 74 20 6F 66 20 . are part of
010070: 74 68 65 20 42 41 53 49 43 20 70 72 6F 67 72 61 the BASIC progra
010080: 6D 20 6F 72 20 73 74 6F 72 65 64 20 20 69 6E 20 m or stored in
010090: 74 68 65 20 73 74 72 69 6E 67 20 61 72 65 61 2E the string area.
0100A0: 20 20 57 68 61 74 20 77 65 20 6E 65 65 64 0D 0A What we need..
0100B0: 20 20 20 69 73 20 61 20 77 61 79 20 6F 66 20 66 is a way of f
0100C0: 6F 72 63 69 6E 67 20 42 41 53 49 43 20 74 6F 20 orcing BASIC to
0100D0: 20 73 74 6F 72 65 20 20 74 68 65 20 73 74 72 69 store the stri
0100E0: 6E 67 20 69 6E 20 74 68 65 20 73 74 72 69 6E 67 ng in the string
0100F0: 20 61 72 65 61 2C 20 72 61 74 68 65 72 0D 0A 20 area, rather..
010100: 69 6F 6E 2E 20 20 20 54 68 65 20 20 78 2D 63 6F ion. The x-co
010110: 6F 72 64 69 6E 61 74 65 20 69 73 0D 0A 20 20 20 ordinate is..
010120: 20 20 20 20 20 20 20 72 65 74 75 72 6E 65 64 20 returned
010130: 69 6E 20 48 2C 20 61 6E 64 20 72 65 67 69 73 74 in H, and regist
010140: 65 72 20 20 4C 20 20 68 6F 6C 64 73 20 20 74 68 er L holds th
010150: 65 20 79 2D 63 6F 6F 72 64 69 6E 61 74 65 2E 20 e y-coordinate.
010160: 20 41 6C 6C 20 6F 74 68 65 72 0D 0A 20 20 20 20 All other..
010170: 20 20 20 20 20 20 72 65 67 69 73 74 65 72 73 20 registers
010180: 61 70 61 72 74 20 66 72 6F 6D 20 41 46 20 61 72 apart from AF ar
010190: 65 20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A e preserved.....
0101A0: 20 20 20 26 42 42 36 30 20 20 54 58 54 20 52 44 &BB60 TXT RD
0101B0: 20 43 48 41 52 0D 0A 20 20 20 20 20 20 20 20 20 CHAR..
0101C0: 20 4C 6F 6F 6B 73 20 61 74 20 74 68 65 20 63 75 Looks at the cu
0101D0: 72 72 65 6E 74 20 20 63 75 72 73 6F 72 20 20 70 rrent cursor p
0101E0: 6F 73 69 74 69 6F 6E 20 20 74 6F 20 20 73 65 65 osition to see
0101F0: 20 20 69 66 20 20 61 20 63 68 61 72 61 63 74 65 if a characte
010200: 72 20 69 73 0D 0A 20 20 20 20 20 20 20 20 20 20 r is..
010210: 70 72 65 73 65 6E 74 20 61 6E 64 20 69 64 65 6E present and iden
010220: 74 69 66 69 61 62 6C 65 2E 20 20 54 68 65 20 70 tifiable. The p
010230: 65 6E 20 61 6E 64 20 70 61 70 65 72 20 74 68 61 en and paper tha
010240: 74 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 t the character
010250: 77 61 73 0D 0A 20 20 20 20 20 20 20 20 20 20 70 was.. p
010260: 72 69 6E 74 65 64 20 69 6E 20 68 61 76 65 20 74 rinted in have t
010270: 6F 20 62 65 20 74 68 65 20 73 61 6D 65 20 61 73 o be the same as
010280: 20 20 74 68 65 20 63 75 72 72 65 6E 74 20 70 61 the current pa
010290: 70 65 72 20 61 6E 64 20 70 65 6E 20 66 6F 72 20 per and pen for
0102A0: 69 74 0D 0A 20 20 20 20 20 20 20 20 20 20 74 6F it.. to
0102B0: 20 62 65 20 72 65 63 6F 67 6E 69 7A 65 64 2E 20 be recognized.
0102C0: 20 49 66 20 74 68 65 72 65 20 20 69 73 20 20 61 If there is a
0102D0: 20 20 63 68 61 72 61 63 74 65 72 20 74 68 65 72 character ther
0102E0: 65 2C 20 43 61 72 72 79 20 69 73 20 74 72 75 65 e, Carry is true
0102F0: 2C 0D 0A 20 20 20 20 20 20 20 20 20 20 61 6E 64 ,.. and
010300: 20 20 74 68 61 6E 20 70 6F 69 6E 74 69 6E 67 20 than pointing
010310: 62 61 63 6B 20 74 6F 20 74 68 65 20 42 41 53 49 back to the BASI
010320: 43 20 70 72 6F 67 72 61 6D 2E 0D 0A 20 20 20 20 C program...
010330: 20 49 66 20 79 6F 75 20 6A 75 73 74 20 77 61 6E If you just wan
010340: 74 20 20 74 6F 20 20 64 65 66 69 6E 65 20 20 61 t to define a
010350: 20 20 73 74 72 69 6E 67 20 20 6F 66 20 20 61 20 string of a
010360: 20 63 65 72 74 61 69 6E 20 20 6C 65 6E 67 74 68 certain length
010370: 2C 20 73 61 79 20 74 65 6E 0D 0A 20 20 20 6C 65 , say ten.. le
010380: 74 74 65 72 73 2C 20 6A 75 73 74 20 75 73 65 3A tters, just use:
010390: 0D 0A 0D 0A 20 20 20 20 20 31 30 20 61 24 3D 53 .... 10 a$=S
0103A0: 50 41 43 45 24 28 31 30 29 0D 0A 0D 0A 20 20 20 PACE$(10)....
0103B0: 49 66 20 79 6F 75 20 77 61 6E 74 65 64 20 69 74 If you wanted it
0103C0: 20 74 6F 20 63 6F 6E 74 61 69 6E 20 70 61 72 74 to contain part
0103D0: 69 63 75 6C 61 72 20 63 68 61 72 61 63 74 65 72 icular character
0103E0: 73 2C 20 74 68 65 6E 0D 0A 0D 0A 20 20 20 20 20 s, then....
0103F0: 31 30 20 61 24 3D 22 22 2B 22 54 68 69 73 20 73 10 a$=""+"This s
010400: 74 72 69 6E 67 22 0D 0A 0D 0A 20 20 20 64 6F 65 tring".... doe
010410: 73 20 74 68 65 20 74 72 69 63 6B 20 71 75 69 74 s the trick quit
010420: 65 20 6E 69 63 65 6C 79 2E 20 20 42 41 53 49 43 e nicely. BASIC
010430: 20 20 64 6F 65 73 6E 27 74 20 20 73 70 6F 74 20 doesn't spot
010440: 74 68 61 74 20 74 68 65 20 66 69 6E 61 6C 20 76 that the final v
010450: 61 6C 75 65 20 6F 66 0D 0A 20 20 20 61 24 20 69 alue of.. a$ i
010460: 73 20 63 6F 6E 74 61 69 6E 65 64 20 69 6E 20 74 s contained in t
010470: 68 61 74 20 20 6C 69 6E 65 2C 20 20 61 6E 64 20 hat line, and
010480: 20 6A 75 73 74 20 20 73 68 6F 76 65 73 20 20 74 just shoves t
010490: 68 65 20 72 65 73 75 6C 74 20 6F 66 66 20 69 6E he result off in
0104A0: 74 6F 20 74 68 65 0D 0A 20 20 20 73 74 72 69 6E to the.. strin
0104B0: 67 20 61 72 65 61 20 77 69 74 68 6F 75 74 20 66 g area without f
0104C0: 75 72 74 68 65 72 20 61 64 6F 2E 0D 0A 0D 0A 20 urther ado.....
0104D0: 20 20 48 4F 57 20 4C 4F 4E 47 20 49 53 20 41 20 HOW LONG IS A
0104E0: 50 49 45 43 45 20 4F 46 20 53 54 52 49 4E 47 3F PIECE OF STRING?
0104F0: 0D 0A 20 20 20 4D 61 63 68 69 6E 65 20 63 6F 64 .. Machine cod
010500: 48 4C 2C 20 74 68 65 6E 20 74 68 65 20 61 64 64 HL, then the add
010510: 72 65 73 73 20 6F 66 20 20 74 68 65 20 20 73 74 ress of the st
010520: 72 69 6E 67 20 20 69 74 73 65 6C 66 20 20 69 73 ring itself is
010530: 20 6C 6F 61 64 65 64 20 69 6E 74 6F 20 44 45 2E loaded into DE.
010540: 20 20 54 68 65 0D 0A 20 20 20 63 68 61 72 61 63 The.. charac
010550: 74 65 72 20 72 65 74 75 72 6E 65 64 20 69 6E 20 ter returned in
010560: 72 65 67 69 73 74 65 72 20 41 20 62 79 20 74 68 register A by th
010570: 65 20 66 69 72 6D 77 61 72 65 20 63 61 6C 6C 20 e firmware call
010580: 69 73 20 74 68 65 6E 20 70 75 74 20 69 6E 74 6F is then put into
010590: 20 74 68 65 0D 0A 20 20 20 73 74 61 72 74 20 6F the.. start o
0105A0: 66 20 74 68 65 20 73 74 72 69 6E 67 2E 20 20 49 f the string. I
0105B0: 74 20 77 6F 75 6C 64 20 20 68 61 76 65 20 20 62 t would have b
0105C0: 65 65 6E 20 20 6D 6F 72 65 20 72 65 73 70 6F 6E een more respon
0105D0: 73 69 62 6C 65 20 74 6F 20 63 68 65 63 6B 20 74 sible to check t
0105E0: 68 61 74 0D 0A 20 20 20 74 68 65 20 73 74 72 69 hat.. the stri
0105F0: 6E 67 20 77 61 73 20 74 68 65 20 72 69 67 68 74 ng was the right
010600: 20 6C 65 6E 67 74 68 20 20 62 65 66 6F 72 65 20 length before
010610: 20 61 6C 74 65 72 69 6E 67 20 20 69 74 2C 20 62 altering it, b
010620: 75 74 20 74 68 61 74 20 77 6F 75 6C 64 20 6D 61 ut that would ma
010630: 6B 65 0D 0A 20 20 20 66 6F 72 20 61 20 72 61 74 ke.. for a rat
010640: 68 65 72 20 63 6F 6D 70 6C 69 63 61 74 65 64 20 her complicated
010650: 65 78 61 6D 70 6C 65 2E 0D 0A 20 20 20 20 20 57 example... W
010660: 68 65 6E 20 79 6F 75 20 72 75 6E 20 74 68 65 20 hen you run the
010670: 70 72 6F 67 72 61 6D 2C 20 61 73 20 20 77 65 6C program, as wel
010680: 6C 20 20 61 73 20 20 63 68 61 6E 67 69 6E 67 20 l as changing
010690: 20 61 24 20 74 6F 20 22 53 22 20 61 6E 64 20 70 a$ to "S" and p
0106A0: 72 69 6E 74 69 6E 67 0D 0A 20 20 20 74 68 69 73 rinting.. this
0106B0: 20 6F 6E 20 73 63 72 65 65 6E 20 69 6E 20 6C 69 on screen in li
0106C0: 6E 65 20 31 33 30 2C 20 69 66 20 20 79 6F 75 20 ne 130, if you
0106D0: 20 6C 69 73 74 20 69 74 20 61 67 61 69 6E 20 61 list it again a
0106E0: 66 74 65 72 77 61 72 64 73 20 79 6F 75 20 77 69 fterwards you wi
0106F0: 6C 6C 20 73 65 65 0D 0A 20 20 20 74 68 61 74 20 ll see.. that
010700: 65 20 63 61 6E 20 6C 6F 6F 6B 20 61 74 20 74 68 e can look at th
010710: 65 20 66 69 72 73 74 20 20 62 79 74 65 20 69 6E e first byte in
010720: 20 74 68 65 20 73 74 72 69 6E 67 20 64 65 73 63 the string desc
010730: 72 69 70 74 6F 72 20 62 6C 6F 63 6B 20 74 6F 0D riptor block to.
010740: 0A 20 20 20 66 69 6E 64 20 6F 75 74 20 74 68 65 . find out the
010750: 20 6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20 20 length of the
010760: 73 74 72 69 6E 67 2E 20 20 20 59 6F 75 20 20 61 string. You a
010770: 72 65 20 20 6E 6F 74 20 73 75 70 70 6F 73 65 64 re not supposed
010780: 20 74 6F 20 61 6C 74 65 72 20 74 68 69 73 0D 0A to alter this..
010790: 20 20 20 62 79 74 65 2C 20 77 68 69 63 68 20 20 byte, which
0107A0: 6D 65 61 6E 73 20 20 74 68 61 74 20 20 79 6F 75 means that you
0107B0: 20 20 63 61 6E 6E 6F 74 20 20 63 68 61 6E 67 65 cannot change
0107C0: 20 20 74 68 65 20 20 6C 65 6E 67 74 68 20 20 6F the length o
0107D0: 66 20 20 61 6E 79 20 73 74 72 69 6E 67 0D 0A 20 f any string..
0107E0: 20 20 70 61 72 61 6D 65 74 65 72 20 70 61 73 73 parameter pass
0107F0: 65 64 20 74 6F 20 6D 61 63 68 69 6E 65 20 63 6F ed to machine co
010800: 64 65 2E 0D 0A 20 20 20 20 20 4F 6E 20 74 68 65 de... On the
010810: 20 34 36 34 20 69 74 20 69 73 20 70 6F 73 73 69 464 it is possi
010820: 62 6C 65 20 74 6F 20 20 6D 61 6B 65 20 20 61 20 ble to make a
010830: 20 73 74 72 69 6E 67 20 73 68 6F 72 74 65 72 20 string shorter
010840: 62 79 20 73 69 6D 70 6C 79 20 70 6F 6B 69 6E 67 by simply poking
010850: 20 61 0D 0A 20 20 20 73 6D 61 6C 6C 65 72 20 76 a.. smaller v
010860: 61 6C 75 65 20 69 6E 74 6F 20 74 68 65 20 66 69 alue into the fi
010870: 72 73 74 20 62 79 74 65 20 6F 66 20 74 68 65 20 rst byte of the
010880: 73 74 72 69 6E 67 20 64 65 73 63 72 69 70 74 6F string descripto
010890: 72 2C 20 62 75 74 20 69 66 20 79 6F 75 20 74 72 r, but if you tr
0108A0: 79 0D 0A 20 20 20 74 68 69 73 20 74 72 69 63 6B y.. this trick
0108B0: 20 77 69 74 68 20 6F 74 68 65 72 20 76 65 72 73 with other vers
0108C0: 69 6F 6E 73 20 6F 66 20 74 68 65 20 43 50 43 20 ions of the CPC
0108D0: 79 6F 75 20 77 69 6C 6C 20 66 69 6E 64 20 74 68 you will find th
0108E0: 61 74 20 74 68 65 20 6D 65 6D 6F 72 79 20 69 73 at the memory is
0108F0: 0D 0A 20 20 20 6E 6F 74 20 72 65 75 73 65 64 20 .. not reused
010900: 6C 69 6E 65 20 31 32 30 20 68 61 73 20 63 68 61 line 120 has cha
010910: 6E 67 65 64 20 61 6E 64 20 6E 6F 77 20 73 61 79 nged and now say
010920: 73 20 61 24 3D 22 53 22 20 61 74 20 74 68 65 20 s a$="S" at the
010930: 73 74 61 72 74 2E 0D 0A 20 20 20 20 20 54 68 69 start... Thi
010940: 73 20 69 73 20 70 72 6F 62 61 62 6C 79 20 6E 6F s is probably no
010950: 74 20 71 75 69 74 65 20 77 68 61 74 20 79 6F 75 t quite what you
010960: 20 20 77 6F 75 6C 64 20 65 78 70 65 63 74 2E 20 would expect.
010970: 20 41 6C 6C 20 74 68 61 74 20 74 68 65 20 6D 61 All that the ma
010980: 63 68 69 6E 65 0D 0A 20 20 20 63 6F 64 65 20 64 chine.. code d
010990: 69 64 20 77 61 73 20 70 6C 61 63 65 20 61 20 62 id was place a b
0109A0: 79 74 65 20 69 6E 74 6F 20 20 74 68 65 20 20 6D yte into the m
0109B0: 65 6D 6F 72 79 20 20 61 64 64 72 65 73 73 20 70 emory address p
0109C0: 6F 69 6E 74 65 64 20 74 6F 20 62 79 20 44 45 2C ointed to by DE,
0109D0: 20 61 6E 64 0D 0A 20 20 20 74 68 65 20 44 45 20 and.. the DE
0109E0: 72 65 67 69 73 74 65 72 20 68 61 73 20 62 65 65 register has bee
0109F0: 6E 20 6C 6F 61 64 65 64 20 77 69 74 68 20 74 68 n loaded with th
010A00: 65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 e address of the
010A10: 20 66 69 72 73 74 20 63 68 61 72 61 63 74 65 72 first character
010A20: 20 69 6E 0D 0A 20 20 20 74 68 65 20 73 74 72 69 in.. the stri
010A30: 6E 67 2E 0D 0A 20 20 20 20 20 4E 6F 72 6D 61 6C ng... Normal
010A40: 6C 79 20 74 68 69 73 20 61 64 64 72 65 73 73 20 ly this address
010A50: 77 6F 75 6C 64 20 70 6F 69 6E 74 20 74 6F 20 73 would point to s
010A60: 6F 6D 65 77 68 65 72 65 20 69 6E 20 74 68 65 20 omewhere in the
010A70: 22 73 74 72 69 6E 67 20 61 72 65 61 22 2C 20 74 "string area", t
010A80: 68 65 0D 0A 20 20 20 6D 65 6D 6F 72 79 20 6A 75 he.. memory ju
010A90: 73 74 20 62 65 6C 6F 77 20 48 49 4D 45 4D 20 77 st below HIMEM w
010AA0: 68 65 72 65 20 74 68 65 20 63 68 61 72 61 63 74 here the charact
010AB0: 65 72 73 20 69 6E 20 74 68 65 20 73 74 72 69 6E ers in the strin
010AC0: 67 73 20 61 72 65 20 6B 65 70 74 2E 20 20 42 75 gs are kept. Bu
010AD0: 74 0D 0A 20 20 20 42 41 53 49 43 20 63 61 6E 20 t.. BASIC can
010AE0: 62 65 20 71 75 69 74 65 20 65 63 6F 6E 6F 6D 69 be quite economi
010AF0: 63 61 6C 20 69 6E 20 69 74 73 20 20 6F 77 6E 20 cal in its own
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 C1 02 00 00 00 02 ......N.........
010B20: 0E 00 C6 02 00 00 00 02 0E 00 C2 02 00 00 00 02 ................
010B30: 0E 00 C7 02 00 00 00 02 0E 00 C3 02 00 00 00 02 ................
010B40: 0E 00 C8 02 00 00 00 02 0E 00 C4 02 00 00 00 02 ................
010B50: 0E 00 C9 02 00 00 00 02 0E 00 C5 02 00 00 00 02 ................
010B60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010B70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010B80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010B90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010BF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
010C00: 20 41 20 77 69 6C 6C 20 68 6F 6C 64 20 74 68 65 A will hold the
010C10: 20 63 68 61 72 61 63 74 65 72 20 6E 75 6D 62 65 character numbe
010C20: 72 2E 20 20 4F 74 68 65 72 77 69 73 65 20 43 61 r. Otherwise Ca
010C30: 72 72 79 20 69 73 20 66 61 6C 73 65 20 61 6E 64 rry is false and
010C40: 0D 0A 20 20 20 20 20 20 20 20 20 20 41 20 69 73 .. A is
010C50: 20 7A 65 72 6F 2E 20 20 41 6C 6C 20 74 68 65 20 zero. All the
010C60: 6F 74 68 65 72 20 72 65 67 69 73 74 65 72 73 20 other registers
010C70: 61 72 65 20 70 72 65 73 65 72 76 65 64 2E 0D 0A are preserved...
010C80: 0D 0A 20 20 20 26 42 42 36 46 20 20 54 58 54 20 .. &BB6F TXT
010C90: 53 45 54 20 43 4F 4C 55 4D 4E 0D 0A 20 20 20 20 SET COLUMN..
010CA0: 20 20 20 20 20 20 53 65 74 73 20 6A 75 73 74 20 Sets just
010CB0: 78 2D 63 6F 6F 72 64 69 6E 61 74 65 20 6F 66 20 x-coordinate of
010CC0: 74 68 65 20 74 65 78 74 20 20 63 75 72 73 6F 72 the text cursor
010CD0: 20 20 74 6F 20 61 20 6E 65 77 20 70 6F 73 69 74 to a new posit
010CE0: 69 6F 6E 2C 20 68 65 6C 64 0D 0A 20 20 20 20 20 ion, held..
010CF0: 20 20 20 20 20 69 6E 20 41 2E 20 20 52 65 67 69 in A. Regi
010D00: 73 74 65 72 73 20 41 46 20 61 6E 64 20 48 4C 20 sters AF and HL
010D10: 61 72 65 20 63 6F 72 72 75 70 74 65 64 2C 20 61 are corrupted, a
010D20: 6E 64 20 61 6C 6C 20 6F 74 68 65 72 73 20 70 72 nd all others pr
010D30: 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 20 20 20 4E eserved..... N
010D40: 4F 20 53 54 52 49 4E 47 53 20 41 54 54 41 43 48 O STRINGS ATTACH
010D50: 45 44 0D 0A 20 20 20 57 65 6C 6C 2C 20 74 77 6F ED.. Well, two
010D60: 20 61 72 74 69 63 6C 65 73 20 74 6F 20 65 78 70 articles to exp
010D70: 6C 61 69 6E 20 6A 75 73 74 20 33 34 20 62 79 74 lain just 34 byt
010D80: 65 73 20 20 6F 66 20 6D 61 63 68 69 6E 65 20 63 es of machine c
010D90: 6F 64 65 20 6D 75 73 74 20 62 65 20 61 20 62 69 ode must be a bi
010DA0: 74 0D 0A 20 20 20 6F 66 20 61 20 72 65 63 6F 72 t.. of a recor
010DB0: 64 2E 20 20 41 6C 74 68 6F 75 67 68 20 20 69 74 d. Although it
010DC0: 20 20 69 73 20 20 71 75 69 74 65 20 20 73 69 6D is quite sim
010DD0: 70 6C 65 20 20 63 6F 64 65 2C 20 20 69 74 20 64 ple code, it d
010DE0: 65 6D 6F 6E 73 74 72 61 74 65 73 20 73 6F 6D 65 emonstrates some
010DF0: 0D 0A 20 20 20 75 73 65 66 75 6C 20 74 65 63 68 .. useful tech
010E00: 20 28 44 45 29 2C 41 0D 0A 20 20 20 43 39 20 20 (DE),A.. C9
010E10: 20 20 20 20 20 20 20 20 20 20 52 45 54 0D 0A 0D RET...
010E20: 0A 20 20 20 46 69 67 75 72 65 20 32 2E 37 31 0D . Figure 2.71.
010E30: 0A 0D 0A 0D 0A 0D 0A 20 20 20 3B 69 6E 69 74 69 ....... ;initi
010E40: 61 6C 69 73 61 74 69 6F 6E 20 2D 20 66 69 6E 64 alisation - find
010E50: 20 63 75 72 73 6F 72 20 6C 6F 63 61 74 69 6F 6E cursor location
010E60: 20 61 6E 64 20 66 69 6E 64 20 61 64 64 72 65 73 and find addres
010E70: 73 20 61 6E 64 20 6C 65 6E 67 74 68 20 6F 66 20 s and length of
010E80: 73 74 72 69 6E 67 0D 0A 0D 0A 20 20 20 43 44 20 string.... CD
010E90: 37 38 20 42 42 20 20 43 41 4C 4C 20 30 42 42 37 78 BB CALL 0BB7
010EA0: 38 68 20 20 20 20 20 20 20 3B 67 65 74 20 63 75 8h ;get cu
010EB0: 72 72 65 6E 74 20 63 75 72 73 6F 72 20 70 6F 73 rrent cursor pos
010EC0: 69 74 69 6F 6E 20 69 6E 74 6F 20 48 4C 0D 0A 20 ition into HL..
010ED0: 20 20 34 43 20 20 20 20 20 20 20 20 4C 44 20 43 4C LD C
010EE0: 2C 48 20 20 20 20 20 20 20 20 20 20 20 20 3B 70 ,H ;p
010EF0: 75 74 20 78 2D 63 6F 6F 72 64 69 6E 61 74 65 20 ut x-coordinate
010F00: 69 6E 74 6F 20 74 68 65 20 43 20 72 65 67 69 73 into the C regis
010F10: 74 65 72 0D 0A 20 20 20 44 44 20 36 45 20 30 30 ter.. DD 6E 00
010F20: 20 20 4C 44 20 4C 2C 28 49 58 2B 30 29 20 20 20 LD L,(IX+0)
010F30: 20 20 20 20 3B 6C 6F 61 64 20 48 4C 20 77 69 74 ;load HL wit
010F40: 68 20 73 74 72 69 6E 67 20 64 65 73 63 72 69 70 h string descrip
010F50: 74 6F 72 20 62 6C 6F 63 6B 20 61 64 64 72 65 73 tor block addres
010F60: 73 0D 0A 20 20 20 44 44 20 36 36 20 30 31 20 20 s.. DD 66 01
010F70: 4C 44 20 48 2C 28 49 58 2B 31 29 0D 0A 20 20 20 LD H,(IX+1)..
010F80: 34 36 20 20 20 20 20 20 20 20 4C 44 20 42 2C 28 46 LD B,(
010F90: 48 4C 29 20 20 20 20 20 20 20 20 20 3B 6C 6F 61 HL) ;loa
010FA0: 64 20 42 20 77 69 74 68 20 74 68 65 20 6C 65 6E d B with the len
010FB0: 67 74 68 20 6F 66 20 74 68 65 20 73 74 72 69 6E gth of the strin
010FC0: 67 0D 0A 20 20 20 37 38 20 20 20 20 20 20 20 20 g.. 78
010FD0: 4C 44 20 41 2C 42 0D 0A 20 20 20 42 37 20 20 20 LD A,B.. B7
010FE0: 20 20 20 20 20 4F 52 20 41 20 20 20 20 20 20 20 OR A
010FF0: 20 20 20 20 20 20 20 3B 63 68 65 63 6B 20 69 66 ;check if
011000: 6E 69 71 75 65 73 2E 20 20 41 20 6C 6F 74 20 6F niques. A lot o
011010: 66 20 70 65 6F 70 6C 65 20 77 68 6F 20 73 74 61 f people who sta
011020: 72 74 20 6C 65 61 72 6E 69 6E 67 20 6D 61 63 68 rt learning mach
011030: 69 6E 65 20 63 6F 64 65 20 64 6F 20 6E 6F 74 0D ine code do not.
011040: 0A 20 20 20 72 65 61 6C 6C 79 20 65 6E 64 20 75 . really end u
011050: 70 20 6D 61 6B 69 6E 67 20 6D 75 63 68 20 75 73 p making much us
011060: 65 20 6F 66 20 69 74 2C 20 61 73 20 69 74 20 69 e of it, as it i
011070: 73 20 73 6F 20 6D 75 63 68 20 65 61 73 69 65 72 s so much easier
011080: 20 74 6F 20 70 72 6F 67 72 61 6D 20 69 6E 0D 0A to program in..
011090: 20 20 20 42 41 53 49 43 2E 20 20 4C 65 61 72 6E BASIC. Learn
0110A0: 69 6E 67 20 68 6F 77 20 74 6F 20 67 65 74 20 42 ing how to get B
0110B0: 41 53 49 43 20 20 61 6E 64 20 6D 61 63 68 69 6E ASIC and machin
0110C0: 65 20 63 6F 64 65 20 77 6F 72 6B 69 6E 67 20 74 e code working t
0110D0: 6F 67 65 74 68 65 72 20 6D 65 61 6E 73 0D 0A 20 ogether means..
0110E0: 20 20 79 6F 75 20 63 61 6E 20 68 61 76 65 20 74 you can have t
0110F0: 68 65 20 62 65 73 74 20 6F 66 20 62 6F 74 68 20 he best of both
011100: 20 77 6F 72 6C 64 73 3A 20 20 20 42 41 53 49 43 worlds: BASIC
011110: 20 77 68 69 63 68 20 69 73 20 71 75 69 63 6B 20 which is quick
011120: 74 6F 20 77 72 69 74 65 20 61 6E 64 0D 0A 20 20 to write and..
011130: 20 65 61 73 79 20 74 6F 20 64 65 62 75 67 2C 20 easy to debug,
011140: 61 6E 64 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 and machine code
011150: 20 66 6F 72 20 65 78 74 72 61 20 73 70 65 65 64 for extra speed
011160: 20 77 68 65 72 65 20 79 6F 75 20 6E 65 65 64 20 where you need
011170: 69 74 20 6D 6F 73 74 2E 0D 0A 20 20 20 20 20 53 it most... S
011180: 6F 6D 65 20 6F 66 20 79 6F 75 20 6D 61 79 20 62 ome of you may b
011190: 65 20 77 6F 6E 64 65 72 69 6E 67 20 77 68 79 20 e wondering why
0111A0: 74 68 65 72 65 20 20 77 61 73 20 61 6E 79 20 6D there was any m
0111B0: 61 63 68 69 6E 65 20 63 6F 64 65 20 61 74 20 61 achine code at a
0111C0: 6C 6C 2E 20 20 49 74 0D 0A 20 20 20 77 6F 75 6C ll. It.. woul
0111D0: 64 20 68 61 76 65 20 62 65 65 6E 20 6D 75 63 68 d have been much
0111E0: 20 65 61 73 69 65 72 20 74 6F 20 20 75 73 65 20 easier to use
0111F0: 20 74 68 65 20 20 43 4F 50 59 43 48 52 24 20 66 the COPYCHR$ f
011200: 20 74 68 65 20 6C 65 6E 67 74 68 20 69 73 20 7A the length is z
011210: 65 72 6F 0D 0A 20 20 20 43 38 20 20 20 20 20 20 ero.. C8
011220: 20 20 52 45 54 20 5A 20 20 20 20 20 20 20 20 20 RET Z
011230: 20 20 20 20 3B 69 66 20 73 6F 2C 20 65 78 69 74 ;if so, exit
011240: 2E 2E 2E 0D 0A 20 20 20 32 33 20 20 20 20 20 20 ..... 23
011250: 20 20 49 4E 43 20 48 4C 20 20 20 20 20 20 20 20 INC HL
011260: 20 20 20 20 3B 70 6F 69 6E 74 20 48 4C 20 61 74 ;point HL at
011270: 20 74 68 65 20 6C 6F 77 20 62 79 74 65 20 6F 66 the low byte of
011280: 20 74 68 65 20 73 74 72 69 6E 67 20 61 64 64 72 the string addr
011290: 65 73 73 0D 0A 20 20 20 35 45 20 20 20 20 20 20 ess.. 5E
0112A0: 20 20 4C 44 20 45 2C 28 48 4C 29 20 20 20 20 20 LD E,(HL)
0112B0: 20 20 20 20 3B 6C 6F 61 64 20 69 74 20 69 6E 74 ;load it int
0112C0: 6F 20 45 0D 0A 20 20 20 32 33 20 20 20 20 20 20 o E.. 23
0112D0: 20 20 49 4E 43 20 48 4C 20 20 20 20 20 20 20 20 INC HL
0112E0: 20 20 20 20 3B 6D 6F 76 65 20 6F 6E 20 74 6F 20 ;move on to
0112F0: 74 68 65 20 68 69 67 68 20 62 79 74 65 20 6F 66 the high byte of
011300: 20 74 68 65 20 73 74 72 69 6E 67 20 61 64 64 72 the string addr
011310: 65 73 73 0D 0A 20 20 20 36 36 20 20 20 20 20 20 ess.. 66
011320: 20 20 4C 44 20 48 2C 28 48 4C 29 20 20 20 20 20 LD H,(HL)
011330: 20 20 20 20 3B 6C 6F 61 64 20 69 74 20 69 6E 74 ;load it int
011340: 6F 20 48 0D 0A 20 20 20 36 42 20 20 20 20 20 20 o H.. 6B
011350: 20 20 4C 44 20 4C 2C 45 20 20 20 20 20 20 20 20 LD L,E
011360: 20 20 20 20 3B 63 6F 70 79 20 6C 6F 77 20 62 79 ;copy low by
011370: 74 65 20 74 6F 20 4C 20 28 73 6F 20 48 4C 20 68 te to L (so HL h
011380: 6F 6C 64 73 20 73 74 72 69 6E 67 20 61 64 64 72 olds string addr
011390: 65 73 73 29 0D 0A 0D 0A 20 20 20 3B 6D 61 69 6E ess).... ;main
0113A0: 20 6C 6F 6F 70 20 2D 20 74 72 61 6E 73 66 65 72 loop - transfer
0113B0: 73 20 42 20 63 68 61 72 61 63 74 65 72 73 20 66 s B characters f
0113C0: 72 6F 6D 20 73 63 72 65 65 6E 20 69 6E 74 6F 20 rom screen into
0113D0: 73 74 72 69 6E 67 20 61 74 20 48 4C 0D 0A 0D 0A string at HL....
0113E0: 20 20 20 43 44 20 36 30 20 42 42 20 20 6C 6F 6F CD 60 BB loo
0113F0: 70 3A 20 43 41 4C 4C 20 30 42 42 36 30 68 20 3B p: CALL 0BB60h ;
011400: 75 6E 63 74 69 6F 6E 2E 20 20 54 68 65 20 77 68 unction. The wh
011410: 6F 6C 65 20 6F 66 0D 0A 20 20 20 6F 75 72 20 65 ole of.. our e
011420: 78 61 6D 70 6C 65 20 70 72 6F 67 72 61 6D 20 63 xample program c
011430: 6F 75 6C 64 20 62 65 20 72 65 77 72 69 74 74 65 ould be rewritte
011440: 6E 20 6C 69 6B 65 20 74 68 69 73 3A 0D 0A 0D 0A n like this:....
011450: 20 20 20 32 30 20 4D 4F 44 45 20 32 3A 43 41 54 20 MODE 2:CAT
011460: 3A 76 3D 56 50 4F 53 28 23 30 29 3A 66 24 3D 22 :v=VPOS(#0):f$="
011470: 22 3A 4C 4F 43 41 54 45 20 31 2C 34 3A 46 4F 52 ":LOCATE 1,4:FOR
011480: 20 78 3D 31 20 54 4F 20 31 32 3A 66 24 3D 66 24 x=1 TO 12:f$=f$
011490: 2B 43 4F 50 59 43 48 52 24 28 23 30 29 0D 0A 20 +COPYCHR$(#0)..
0114A0: 20 20 3A 4E 45 58 54 3A 4C 4F 43 41 54 45 20 31 :NEXT:LOCATE 1
0114B0: 2C 76 0D 0A 20 20 20 33 30 20 50 52 49 4E 54 22 ,v.. 30 PRINT"
0114C0: 54 68 65 20 66 69 72 73 74 20 66 69 6C 65 20 6F The first file o
0114D0: 6E 20 74 68 69 73 20 64 69 73 63 20 69 73 20 22 n this disc is "
0114E0: 66 24 0D 0A 0D 0A 20 20 20 20 20 54 68 65 20 72 f$.... The r
0114F0: 65 61 73 6F 6E 20 69 73 20 74 68 61 74 20 74 68 eason is that th
011500: 65 20 64 69 73 63 20 20 6D 65 6E 75 20 20 77 61 e disc menu wa
011510: 73 20 20 77 72 69 74 74 65 6E 20 6F 6E 20 61 20 s written on a
011520: 43 50 43 20 34 36 34 2C 20 77 68 69 63 68 20 64 CPC 464, which d
011530: 6F 65 73 0D 0A 20 20 20 6E 6F 74 20 68 61 76 65 oes.. not have
011540: 20 74 68 65 20 43 4F 50 59 43 48 52 24 20 66 75 the COPYCHR$ fu
011550: 6E 63 74 69 6F 6E 2C 20 73 6F 20 77 65 20 20 68 nction, so we h
011560: 61 64 20 74 6F 20 75 73 65 20 73 6F 6D 65 20 6D ad to use some m
011570: 61 63 68 69 6E 65 20 63 6F 64 65 2E 20 20 45 76 achine code. Ev
011580: 65 6E 0D 0A 20 20 20 69 66 20 79 6F 75 20 68 61 en.. if you ha
011590: 76 65 20 61 20 36 36 34 2C 20 36 31 32 38 20 20 ve a 664, 6128
0115A0: 6F 72 20 20 61 20 20 50 6C 75 73 20 20 6D 61 63 or a Plus mac
0115B0: 68 69 6E 65 2C 20 20 69 74 20 69 73 20 77 6F 72 hine, it is wor
0115C0: 74 68 20 6B 6E 6F 77 69 6E 67 20 68 6F 77 20 74 th knowing how t
0115D0: 6F 0D 0A 20 20 20 61 76 6F 69 64 20 75 73 69 6E o.. avoid usin
0115E0: 67 20 74 68 65 20 43 4F 50 59 43 48 52 24 20 66 g the COPYCHR$ f
0115F0: 75 6E 63 74 69 6F 6E 20 73 6F 20 74 68 61 74 20 unction so that
011600: 67 65 74 20 63 68 61 72 61 63 74 65 72 20 66 72 get character fr
011610: 6F 6D 20 73 63 72 65 65 6E 0D 0A 20 20 20 37 37 om screen.. 77
011620: 20 20 20 20 20 20 20 20 4C 44 20 28 48 4C 29 2C LD (HL),
011630: 41 20 20 20 20 20 20 20 20 20 3B 70 75 74 20 69 A ;put i
011640: 74 20 69 6E 74 6F 20 73 74 72 69 6E 67 20 73 74 t into string st
011650: 6F 72 61 67 65 20 73 70 61 63 65 0D 0A 20 20 20 orage space..
011660: 32 33 20 20 20 20 20 20 20 20 49 4E 43 20 48 4C 23 INC HL
011670: 20 20 20 20 20 20 20 20 20 20 20 20 3B 6D 6F 76 ;mov
011680: 65 20 6F 6E 20 74 6F 20 6E 65 78 74 20 63 68 61 e on to next cha
011690: 72 61 63 74 65 72 20 69 6E 20 73 74 72 69 6E 67 racter in string
0116A0: 0D 0A 20 20 20 30 43 20 20 20 20 20 20 20 20 49 .. 0C I
0116B0: 4E 43 20 43 20 20 20 20 20 20 20 20 20 20 20 20 NC C
0116C0: 20 3B 43 20 68 6F 6C 64 73 20 63 75 72 73 6F 72 ;C holds cursor
0116D0: 20 78 2D 63 6F 6F 72 64 69 6E 61 74 65 20 2D 20 x-coordinate -
0116E0: 69 6E 63 72 65 61 73 65 20 69 74 0D 0A 20 20 20 increase it..
0116F0: 37 39 20 20 20 20 20 20 20 20 4C 44 20 41 2C 43 79 LD A,C
011700: 0D 0A 20 20 20 45 35 20 20 20 20 20 20 20 20 50 .. E5 P
011710: 55 53 48 20 48 4C 20 20 20 20 20 20 20 20 20 20 USH HL
011720: 20 3B 73 61 76 65 20 48 4C 20 74 6F 20 74 68 65 ;save HL to the
011730: 20 73 74 61 63 6B 20 28 6E 65 78 74 20 72 6F 75 stack (next rou
011740: 74 69 6E 65 20 63 6F 72 72 75 70 74 73 20 48 4C tine corrupts HL
011750: 29 0D 0A 20 20 20 43 44 20 36 46 20 42 42 20 20 ).. CD 6F BB
011760: 43 41 4C 4C 20 30 42 42 36 46 68 20 20 20 20 20 CALL 0BB6Fh
011770: 20 20 3B 73 65 74 20 74 65 78 74 20 63 75 72 73 ;set text curs
011780: 6F 72 20 78 2D 63 6F 6F 72 64 69 6E 61 74 65 20 or x-coordinate
011790: 74 6F 20 76 61 6C 75 65 20 69 6E 20 41 0D 0A 20 to value in A..
0117A0: 20 20 45 31 20 20 20 20 20 20 20 20 50 4F 50 20 E1 POP
0117B0: 48 4C 20 20 20 20 20 20 20 20 20 20 20 20 3B 72 HL ;r
0117C0: 65 73 74 6F 72 65 20 48 4C 20 66 72 6F 6D 20 74 estore HL from t
0117D0: 68 65 20 73 74 61 63 6B 0D 0A 20 20 20 31 30 20 he stack.. 10
0117E0: 46 32 20 20 20 20 20 44 4A 4E 5A 20 6C 6F 6F 70 F2 DJNZ loop
0117F0: 20 20 20 20 20 20 20 20 20 3B 64 65 63 72 65 61 ;decrea
011800: 79 6F 75 20 63 61 6E 20 77 72 69 74 65 20 70 72 you can write pr
011810: 6F 67 72 61 6D 73 20 74 68 61 74 20 77 6F 72 6B ograms that work
011820: 0D 0A 20 20 20 6F 6E 20 61 6C 6C 20 6F 66 20 74 .. on all of t
011830: 68 65 20 43 50 43 73 2E 20 20 4F 66 20 63 6F 75 he CPCs. Of cou
011840: 72 73 65 20 74 68 65 20 6D 61 63 68 69 6E 65 20 rse the machine
011850: 63 6F 64 65 20 72 75 6E 73 20 66 61 73 74 65 72 code runs faster
011860: 20 74 68 61 6E 20 74 68 65 20 42 41 53 49 43 0D than the BASIC.
011870: 0A 20 20 20 61 6C 74 65 72 6E 61 74 69 76 65 20 . alternative
011880: 61 73 20 77 65 6C 6C 2E 0D 0A 0D 0A 20 20 20 57 as well..... W
011890: 52 41 50 50 49 4E 47 20 55 50 0D 0A 20 20 20 4E RAPPING UP.. N
0118A0: 65 78 74 20 6D 6F 6E 74 68 20 77 65 20 77 69 6C ext month we wil
0118B0: 6C 20 62 65 20 72 65 74 75 72 6E 69 6E 67 20 74 l be returning t
0118C0: 6F 20 42 41 53 49 43 20 66 6F 72 20 20 61 20 6C o BASIC for a l
0118D0: 61 73 74 20 6C 6F 6F 6B 20 61 74 20 61 20 66 65 ast look at a fe
0118E0: 77 20 6D 6F 72 65 20 6F 66 0D 0A 20 20 20 74 68 w more of.. th
0118F0: 65 20 74 72 69 63 6B 73 20 75 73 65 64 20 69 6E e tricks used in
011900: 20 46 65 62 72 75 61 72 79 27 73 20 64 69 73 63 February's disc
011910: 20 20 6D 65 6E 75 20 20 70 72 6F 67 72 61 6D 2E menu program.
011920: 20 20 41 66 74 65 72 20 74 68 61 74 2C 20 77 68 After that, wh
011930: 6F 20 6B 6E 6F 77 73 3F 0D 0A 20 20 20 50 65 72 o knows?.. Per
011940: 68 61 70 73 20 77 65 20 63 6F 75 6C 64 20 68 61 haps we could ha
011950: 76 65 20 61 20 67 6F 20 20 61 74 20 20 61 6E 6F ve a go at ano
011960: 74 68 65 72 20 20 6C 61 6E 67 75 61 67 65 20 20 ther language
011970: 73 75 63 68 20 20 61 73 20 43 2C 20 69 66 20 74 such as C, if t
011980: 68 65 72 65 20 69 73 0D 0A 20 20 20 65 6E 6F 75 here is.. enou
011990: 67 68 20 69 6E 74 65 72 65 73 74 2C 20 6F 72 20 gh interest, or
0119A0: 65 76 65 6E 20 73 65 65 20 68 6F 77 20 74 6F 20 even see how to
0119B0: 63 6F 6E 74 72 6F 6C 20 61 20 4D 49 44 49 20 69 control a MIDI i
0119C0: 6E 74 65 72 66 61 63 65 2E 20 20 54 68 65 6E 20 nterface. Then
0119D0: 61 67 61 69 6E 2C 0D 0A 20 20 20 74 68 65 72 65 again,.. there
0119E0: 20 69 73 20 61 20 6C 6F 74 20 6D 6F 72 65 20 42 is a lot more B
0119F0: 41 53 49 43 20 66 6F 72 20 75 73 20 74 6F 20 65 ASIC for us to e
011A00: 73 65 20 42 2C 20 61 6E 64 20 69 66 20 6E 6F 74 se B, and if not
011A10: 20 7A 65 72 6F 20 6A 75 6D 70 20 62 61 63 6B 20 zero jump back
011A20: 74 6F 20 6C 6F 6F 70 0D 0A 20 20 20 43 39 20 20 to loop.. C9
011A30: 20 20 20 20 20 20 52 45 54 20 20 20 20 20 20 20 RET
011A40: 20 20 20 20 20 20 20 20 3B 72 65 74 75 72 6E 20 ;return
011A50: 77 68 65 6E 63 65 20 77 65 20 63 61 6D 65 20 28 whence we came (
011A60: 74 6F 20 42 41 53 49 43 29 0D 0A 0D 0A 20 31 30 to BASIC).... 10
011A70: 20 44 45 46 49 4E 54 20 61 2D 7A 3A 4D 45 4D 4F DEFINT a-z:MEMO
011A80: 52 59 20 48 49 4D 45 4D 2D 33 34 3A 61 3D 55 4E RY HIMEM-34:a=UN
011A90: 54 28 48 49 4D 45 4D 2B 31 29 3A 46 4F 52 20 78 T(HIMEM+1):FOR x
011AA0: 3D 30 20 54 4F 20 33 33 3A 52 45 41 44 20 61 24 =0 TO 33:READ a$
011AB0: 3A 50 4F 4B 45 20 61 2B 78 2C 56 41 0D 0A 20 20 :POKE a+x,VA..
011AC0: 20 20 4C 28 22 26 22 2B 61 24 29 3A 4E 45 58 54 L("&"+a$):NEXT
011AD0: 3A 44 41 54 41 20 43 44 2C 37 38 2C 42 42 2C 34 :DATA CD,78,BB,4
011AE0: 43 2C 44 44 2C 36 45 2C 30 2C 44 44 2C 36 36 2C C,DD,6E,0,DD,66,
011AF0: 31 2C 34 36 2C 37 38 2C 42 37 2C 43 38 2C 32 33 1,46,78,B7,C8,23
011B00: 2C 35 45 2C 32 33 2C 36 36 2C 36 42 2C 0D 0A 20 ,5E,23,66,6B,..
011B10: 20 20 20 43 44 2C 36 30 2C 42 42 2C 37 37 2C 32 CD,60,BB,77,2
011B20: 33 2C 43 2C 37 39 2C 45 35 2C 43 44 2C 36 46 2C 3,C,79,E5,CD,6F,
011B30: 42 42 2C 45 31 2C 31 30 2C 46 32 2C 43 39 0D 0A BB,E1,10,F2,C9..
011B40: 20 32 30 20 4D 4F 44 45 20 32 3A 43 41 54 3A 76 20 MODE 2:CAT:v
011B50: 3D 56 50 4F 53 28 23 30 29 3A 66 24 3D 53 50 41 =VPOS(#0):f$=SPA
011B60: 43 45 24 28 31 32 29 3A 4C 4F 43 41 54 45 20 31 CE$(12):LOCATE 1
011B70: 2C 34 3A 43 41 4C 4C 20 61 2C 40 66 24 3A 4C 4F ,4:CALL a,@f$:LO
011B80: 43 41 54 45 20 31 2C 76 0D 0A 20 33 30 20 50 52 CATE 1,v.. 30 PR
011B90: 49 4E 54 22 54 68 65 20 66 69 72 73 74 20 66 69 INT"The first fi
011BA0: 6C 65 20 6F 6E 20 74 68 69 73 20 64 69 73 63 20 le on this disc
011BB0: 69 73 20 22 66 24 0D 0A 0D 0A 20 20 20 46 69 67 is "f$.... Fig
011BC0: 75 72 65 20 32 2E 37 31 38 0D 0A 1A 6C 79 20 67 ure 2.718...ly g
011BD0: 72 61 74 65 64 20 20 50 61 72 6D 65 73 61 6E 20 rated Parmesan
011BE0: 20 63 68 65 65 73 65 20 20 73 70 72 69 6E 6B 6C cheese sprinkl
011BF0: 65 64 20 20 67 65 6E 65 72 6F 75 73 6C 79 20 6F ed generously o
011C00: 78 70 6C 6F 72 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 xplore.........
011C10: 20 20 31 30 30 20 4D 45 4D 4F 52 59 20 26 38 46 100 MEMORY &8F
011C20: 46 46 3A 61 3D 26 39 30 30 30 3A 46 4F 52 20 78 FF:a=&9000:FOR x
011C30: 3D 30 20 54 4F 20 31 34 3A 52 45 41 44 20 61 24 =0 TO 14:READ a$
011C40: 3A 50 4F 4B 45 20 61 2B 78 2C 56 41 4C 28 22 26 :POKE a+x,VAL("&
011C50: 22 2B 61 24 29 3A 4E 45 58 54 0D 0A 20 20 20 31 "+a$):NEXT.. 1
011C60: 31 30 20 4D 4F 44 45 20 32 3A 50 52 49 4E 54 22 10 MODE 2:PRINT"
011C70: 53 69 6C 6C 79 20 73 74 72 69 6E 67 22 0D 0A 20 Silly string"..
011C80: 20 20 31 32 30 20 61 24 3D 22 20 22 3A 4C 4F 43 120 a$=" ":LOC
011C90: 41 54 45 20 31 2C 31 3A 43 41 4C 4C 20 26 39 30 ATE 1,1:CALL &90
011CA0: 30 30 2C 40 61 24 0D 0A 20 20 20 31 33 30 20 50 00,@a$.. 130 P
011CB0: 52 49 4E 54 3A 50 52 49 4E 54 22 54 68 65 20 6C RINT:PRINT"The l
011CC0: 65 74 74 65 72 20 61 74 20 74 68 65 20 74 6F 70 etter at the top
011CD0: 20 6C 65 66 74 20 6F 66 20 74 68 65 20 73 63 72 left of the scr
011CE0: 65 65 6E 20 69 73 20 22 3B 61 24 0D 0A 20 20 20 een is ";a$..
011CF0: 31 39 30 20 44 41 54 41 20 44 44 2C 36 36 2C 30 190 DATA DD,66,0
011D00: 31 2C 44 44 2C 36 45 2C 30 30 2C 32 33 2C 35 45 1,DD,6E,00,23,5E
011D10: 2C 32 33 2C 35 36 2C 43 44 2C 36 30 2C 42 42 2C ,23,56,CD,60,BB,
011D20: 31 32 2C 43 39 0D 0A 0D 0A 20 20 20 44 44 20 36 12,C9.... DD 6
011D30: 36 20 30 31 20 20 20 20 20 20 4C 44 20 48 2C 28 6 01 LD H,(
011D40: 49 58 2B 31 29 0D 0A 20 20 20 44 44 20 36 45 20 IX+1).. DD 6E
011D50: 30 30 20 20 20 20 20 20 4C 44 20 4C 2C 28 49 58 00 LD L,(IX
011D60: 2B 30 29 0D 0A 20 20 20 32 33 20 20 20 20 20 20 +0).. 23
011D70: 20 20 20 20 20 20 49 4E 43 20 48 4C 0D 0A 20 20 INC HL..
011D80: 20 35 45 20 20 20 20 20 20 20 20 20 20 20 20 4C 5E L
011D90: 44 20 45 2C 28 48 4C 29 0D 0A 20 20 20 32 33 20 D E,(HL).. 23
011DA0: 20 20 20 20 20 20 20 20 20 20 20 49 4E 43 20 48 INC H
011DB0: 4C 0D 0A 20 20 20 35 36 20 20 20 20 20 20 20 20 L.. 56
011DC0: 20 20 20 20 4C 44 20 44 2C 28 48 4C 29 0D 0A 20 LD D,(HL)..
011DD0: 20 20 43 44 20 36 30 20 42 42 20 20 20 20 20 20 CD 60 BB
011DE0: 43 41 4C 4C 20 30 42 42 36 30 68 0D 0A 20 20 20 CALL 0BB60h..
011DF0: 31 32 20 20 20 20 20 20 20 20 20 20 20 20 4C 44 12 LD
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 C9 02 00 00 00 02 ......N.........
011E20: 0F 00 C5 02 00 00 00 02 0F 00 C1 02 00 00 00 02 ................
011E30: 0F 00 C6 02 00 00 00 02 0F 00 C2 02 00 00 00 02 ................
011E40: 0F 00 C7 02 00 00 00 02 0F 00 C3 02 00 00 00 02 ................
011E50: 0F 00 C8 02 00 00 00 02 0F 00 C4 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: 31 36 20 67 72 61 70 68 69 63 73 20 63 6F 6F 72 16 graphics coor
011F10: 64 69 6E 61 74 65 73 20 20 70 65 72 20 20 74 65 dinates per te
011F20: 78 74 20 63 6F 6F 72 64 69 6E 61 74 65 2C 20 61 xt coordinate, a
011F30: 6C 6C 20 77 65 20 6E 65 65 64 0D 0A 20 20 20 74 ll we need.. t
011F40: 6F 20 64 6F 20 69 73 20 69 6E 74 65 67 65 72 20 o do is integer
011F50: 64 69 76 69 73 69 6F 6E 20 62 79 20 20 31 36 2E division by 16.
011F60: 20 20 20 49 74 20 20 69 73 20 20 6E 6F 74 20 71 It is not q
011F70: 75 69 74 65 20 74 68 61 74 20 73 69 6D 70 6C 65 uite that simple
011F80: 20 68 6F 77 65 76 65 72 2C 0D 0A 20 20 20 62 65 however,.. be
011F90: 63 61 75 73 65 20 74 68 65 20 67 72 61 70 68 69 cause the graphi
011FA0: 63 73 20 63 6F 6F 72 64 69 6E 61 74 65 73 20 20 cs coordinates
011FB0: 73 74 61 72 74 20 20 63 6F 75 6E 74 69 6E 67 20 start counting
011FC0: 20 66 72 6F 6D 20 20 74 68 65 20 62 6F 74 74 6F from the botto
011FD0: 6D 20 6F 66 20 74 68 65 0D 0A 20 20 20 73 63 72 m of the.. scr
011FE0: 65 65 6E 20 28 61 73 20 69 66 20 79 6F 75 20 77 een (as if you w
011FF0: 65 72 65 20 20 64 72 61 77 69 6E 67 20 20 61 20 ere drawing a
012000: 20 67 72 61 70 68 29 20 20 61 6E 64 20 74 68 65 graph) and the
012010: 20 74 65 78 74 20 63 6F 6F 72 64 69 6E 61 74 65 text coordinate
012020: 73 20 73 74 61 72 74 0D 0A 20 20 20 66 72 6F 6D s start.. from
012030: 20 74 68 65 20 74 6F 70 20 28 61 73 20 69 66 20 the top (as if
012040: 20 79 6F 75 20 20 77 65 72 65 20 20 77 72 69 74 you were writ
012050: 69 6E 67 29 2E 20 20 20 54 6F 20 20 73 6F 6C 76 ing). To solv
012060: 65 20 74 68 69 73 20 70 72 6F 62 6C 65 6D 20 77 e this problem w
012070: 65 20 6A 75 73 74 0D 0A 20 20 20 73 75 62 74 72 e just.. subtr
012080: 61 63 74 20 79 20 66 72 6F 6D 20 34 30 30 2E 20 act y from 400.
012090: 20 54 68 69 73 20 67 69 76 65 73 20 20 61 20 20 This gives a
0120A0: 6C 61 72 67 65 20 20 76 61 6C 75 65 20 20 77 68 large value wh
0120B0: 65 6E 20 79 20 69 73 20 73 6D 61 6C 6C 20 28 61 en y is small (a
0120C0: 74 20 74 68 65 0D 0A 20 20 20 62 6F 74 74 6F 6D t the.. bottom
0120D0: 20 6F 66 20 74 68 65 20 73 63 72 65 65 6E 29 20 of the screen)
0120E0: 61 6E 64 20 61 20 73 6D 61 6C 6C 20 20 76 61 6C and a small val
0120F0: 75 65 20 20 61 74 20 20 74 68 65 20 20 74 6F 70 ue at the top
012100: 20 70 69 65 63 65 20 6F 66 20 6D 61 63 68 69 6E piece of machin
012110: 65 0D 0A 20 20 20 63 6F 64 65 20 74 6F 20 64 6F e.. code to do
012120: 20 74 68 69 73 20 6A 6F 62 2C 20 62 75 74 20 66 this job, but f
012130: 69 72 73 74 20 74 68 65 20 20 74 65 78 74 20 63 irst the text c
012140: 75 72 73 6F 72 20 6E 65 65 64 20 74 6F 20 62 65 ursor need to be
012150: 20 20 4C 4F 43 41 54 45 64 20 74 6F 20 74 68 65 LOCATEd to the
012160: 0D 0A 20 20 20 70 6F 73 69 74 69 6F 6E 20 6F 6E .. position on
012170: 20 73 63 72 65 65 6E 20 77 68 65 72 65 20 77 65 screen where we
012180: 20 77 61 6E 74 20 74 6F 20 73 74 61 72 74 20 72 want to start r
012190: 65 61 64 69 6E 67 2E 0D 0A 0D 0A 20 20 20 57 65 eading..... We
0121A0: 20 68 61 76 65 20 75 73 65 64 20 74 68 65 20 66 have used the f
0121B0: 6F 6C 6C 6F 77 69 6E 67 20 20 65 78 70 72 65 73 ollowing expres
0121C0: 73 69 6F 6E 73 20 20 74 6F 20 63 61 6C 63 75 6C sions to calcul
0121D0: 61 74 65 20 74 68 65 20 74 65 78 74 20 63 6F 6F ate the text coo
0121E0: 72 64 69 6E 61 74 65 73 0D 0A 20 20 20 6E 65 65 rdinates.. nee
0121F0: 64 65 64 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 ded:....
012200: 20 20 20 70 3D 28 78 5C 31 36 30 29 2A 32 30 2B p=(x\160)*20+
012210: 31 0D 0A 20 20 20 20 20 20 20 20 20 20 20 71 3D 1.. q=
012220: 28 34 30 30 2D 79 29 5C 31 36 2B 31 0D 0A 0D 0A (400-y)\16+1....
012230: 20 20 20 77 68 65 72 65 20 78 20 61 6E 64 20 79 where x and y
012240: 20 61 72 65 20 74 68 65 20 67 72 61 70 68 69 63 are the graphic
012250: 73 20 63 6F 6F 72 64 69 6E 61 74 65 64 20 6F 66 s coordinated of
012260: 20 6F 75 72 20 70 6F 69 6E 74 65 72 2C 20 61 6E our pointer, an
012270: 64 20 70 20 61 6E 64 20 71 20 61 72 65 0D 0A 20 d p and q are..
012280: 20 20 74 68 65 20 74 65 78 74 20 63 6F 6F 72 64 the text coord
012290: 69 6E 61 74 65 73 20 77 65 20 6E 65 65 64 2E 0D inates we need..
0122A0: 0A 0D 0A 20 20 20 42 65 66 6F 72 65 20 77 72 69 ... Before wri
0122B0: 74 69 6E 67 20 65 78 70 72 65 73 73 69 6F 6E 73 ting expressions
0122C0: 20 73 75 63 68 20 61 73 20 74 68 65 73 65 2C 20 such as these,
0122D0: 69 74 20 70 61 79 73 20 74 6F 20 77 6F 72 6B 20 it pays to work
0122E0: 6F 75 74 20 65 78 61 63 74 6C 79 20 77 68 61 74 out exactly what
0122F0: 0D 0A 20 20 20 79 6F 75 20 77 61 6E 74 20 74 6F .. you want to
012300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0123A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0123B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0123C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0123D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0123E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0123F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0124A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0124B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0124C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0124D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0124E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0124F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
012500: 20 64 6F 2E 20 20 50 75 74 20 61 20 64 69 73 63 do. Put a disc
012510: 20 69 6E 20 20 74 68 65 20 20 64 72 69 76 65 2C in the drive,
012520: 20 73 77 69 74 63 68 20 74 6F 20 4D 4F 44 45 20 switch to MODE
012530: 32 20 61 6E 64 20 63 61 74 61 6C 6F 67 75 65 0D 2 and catalogue.
012540: 0A 20 20 20 69 74 2E 20 20 59 6F 75 20 77 69 6C . it. You wil
012550: 6C 20 66 69 6E 64 20 74 68 61 74 20 66 6F 75 72 l find that four
012560: 20 20 63 6F 6C 75 6D 6E 73 20 20 6F 66 20 66 69 columns of fi
012570: 6C 65 6E 61 6D 65 73 20 61 72 65 20 70 72 69 6E lenames are prin
012580: 74 65 64 20 6F 6E 20 73 63 72 65 65 6E 2E 0D 0A ted on screen...
012590: 20 20 20 54 68 65 20 74 65 78 74 20 63 75 72 73 The text curs
0125A0: 6F 72 20 6E 65 65 64 73 20 74 6F 20 62 65 20 20 or needs to be
0125B0: 70 6F 73 69 74 69 6F 6E 65 64 20 20 61 74 20 20 positioned at
0125C0: 74 68 65 20 73 74 61 72 74 20 6F 66 20 77 68 69 the start of whi
0125D0: 63 68 65 76 65 72 20 6F 66 20 74 68 65 0D 0A 20 chever of the..
0125E0: 20 20 66 6F 75 72 20 63 6F 6C 75 6D 6E 73 20 74 four columns t
0125F0: 68 65 20 70 6F 69 6E 74 65 72 20 69 73 20 69 6E he pointer is in
012600: 2E 0D 0A 0D 0A 20 20 20 53 69 6E 63 65 20 74 68 ..... Since th
012610: 65 20 73 63 72 65 65 6E 20 69 73 20 20 36 34 30 e screen is 640
012620: 20 20 67 72 61 70 68 69 63 73 20 20 63 6F 6F 72 graphics coor
012630: 64 69 6E 61 74 65 73 20 20 61 63 72 6F 73 73 2C dinates across,
012640: 20 20 65 61 63 68 20 6F 66 20 74 68 65 20 66 6F each of the fo
012650: 75 72 0D 0A 20 20 20 63 6F 6C 75 6D 6E 73 20 64 ur.. columns d
012660: 69 73 70 6C 61 79 65 64 20 69 73 20 31 36 30 20 isplayed is 160
012670: 63 6F 6F 72 64 69 6E 61 74 65 73 20 77 69 64 65 coordinates wide
012680: 2E 20 20 4F 75 72 20 65 78 70 72 65 73 73 69 6F . Our expressio
012690: 6E 20 69 6E 20 6C 69 6E 65 20 35 30 20 75 73 65 n in line 50 use
0126A0: 73 0D 0A 20 20 20 74 68 65 20 69 6E 74 65 67 65 s.. the intege
0126B0: 72 20 64 69 76 69 73 69 6F 6E 20 6F 70 65 72 61 r division opera
0126C0: 74 6F 72 2C 20 22 5C 22 2E 20 20 54 68 69 73 20 tor, "\". This
0126D0: 20 6F 70 65 72 61 74 6F 72 20 68 61 73 20 74 68 operator has th
0126E0: 65 20 73 61 6D 65 20 65 66 66 65 63 74 20 61 73 e same effect as
0126F0: 0D 0A 20 20 20 75 73 69 6E 67 20 6E 6F 72 6D 61 .. using norma
012700: 23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61 #Programmers' Pa
012710: 74 63 68 20 35 20 2D 20 57 41 43 43 49 20 31 31 tch 5 - WACCI 11
012720: 34 2C 20 4A 75 6C 79 20 31 39 39 37 2C 20 70 2E 4, July 1997, p.
012730: 20 32 36 2D 32 37 0D 0A 20 20 20 50 52 4F 47 52 26-27.. PROGR
012740: 41 4D 4D 45 52 53 27 20 50 41 54 43 48 20 35 0D AMMERS' PATCH 5.
012750: 0A 20 20 20 42 79 20 53 74 65 70 68 65 6E 20 61 . By Stephen a
012760: 6E 64 20 4D 61 74 74 68 65 77 20 50 68 69 6C 6C nd Matthew Phill
012770: 69 70 73 0D 0A 0D 0A 20 20 20 57 68 61 74 20 67 ips.... What g
012780: 61 73 74 72 6F 6E 6F 6D 69 63 20 64 65 6C 69 67 astronomic delig
012790: 68 74 73 20 61 77 61 69 74 20 75 73 20 20 66 6F hts await us fo
0127A0: 72 20 20 74 68 65 20 20 66 69 6E 61 6C 20 20 63 r the final c
0127B0: 6F 75 72 73 65 3F 20 20 41 73 20 74 68 65 20 73 ourse? As the s
0127C0: 77 65 65 74 0D 0A 20 20 20 74 72 6F 6C 6C 65 79 weet.. trolley
0127D0: 20 6F 66 20 70 72 6F 67 72 61 6D 6D 69 6E 67 20 of programming
0127E0: 77 68 65 65 6C 73 20 20 69 74 73 20 20 77 61 79 wheels its way
0127F0: 20 20 74 68 72 6F 75 67 68 20 20 74 68 65 20 6F through the o
012800: 62 73 74 61 63 6C 65 73 20 6F 66 20 69 6E 74 65 bstacles of inte
012810: 67 65 72 0D 0A 20 20 20 64 69 76 69 73 69 6F 6E ger.. division
012820: 20 61 6E 64 20 74 77 6F 27 73 20 63 6F 6D 70 6C and two's compl
012830: 65 6D 65 6E 74 20 62 69 6E 61 72 79 2C 20 77 65 ement binary, we
012840: 20 20 66 69 6E 64 20 6F 75 72 73 65 6C 76 65 73 find ourselves
012850: 20 74 68 69 6E 6B 69 6E 67 20 22 53 68 61 6C 6C thinking "Shall
012860: 20 49 0D 0A 20 20 20 68 61 76 65 20 74 68 65 20 I.. have the
012870: 73 74 72 61 77 62 65 72 72 69 65 73 3F 22 2C 20 strawberries?",
012880: 61 6E 64 20 20 22 57 68 6F 27 73 20 20 70 61 79 and "Who's pay
012890: 69 6E 67 20 20 74 68 65 20 20 62 69 6C 6C 3F 22 ing the bill?"
0128A0: 2E 20 20 20 28 43 6F 66 66 65 65 20 74 6F 20 62 . (Coffee to b
0128B0: 65 0D 0A 20 20 20 73 65 72 76 65 64 20 69 6E 20 e.. served in
0128C0: 74 68 65 20 6C 6F 75 6E 67 65 2E 29 0D 0A 0D 0A the lounge.)....
0128D0: 20 20 20 41 6C 6C 20 74 68 61 74 20 72 65 6D 61 All that rema
0128E0: 69 6E 73 20 69 6E 20 6F 72 64 65 72 20 74 6F 20 ins in order to
0128F0: 72 6F 75 6E 64 20 20 6F 66 66 20 74 68 65 20 64 round off the d
012900: 6C 20 64 69 76 69 73 69 6F 6E 20 61 6E 64 20 74 l division and t
012910: 68 72 6F 77 69 6E 67 20 61 77 61 79 20 20 74 68 hrowing away th
012920: 65 20 70 61 72 74 20 61 66 74 65 72 20 74 68 65 e part after the
012930: 20 64 65 63 69 6D 61 6C 20 70 6F 69 6E 74 2E 0D decimal point..
012940: 0A 20 20 20 44 69 76 69 64 69 6E 67 20 74 68 65 . Dividing the
012950: 20 78 20 63 6F 6F 72 64 69 6E 61 74 65 20 62 79 x coordinate by
012960: 20 31 36 30 20 69 6E 20 74 68 69 73 20 77 61 79 160 in this way
012970: 20 72 65 73 75 6C 74 73 20 69 6E 20 61 20 6E 75 results in a nu
012980: 6D 62 65 72 20 66 72 6F 6D 20 30 20 74 6F 0D 0A mber from 0 to..
012990: 20 20 20 33 2C 20 63 6F 72 72 65 73 70 6F 6E 64 3, correspond
0129A0: 69 6E 67 20 74 6F 20 74 68 65 20 66 6F 75 72 20 ing to the four
0129B0: 63 6F 6C 75 6D 6E 73 20 20 6F 66 20 20 74 65 78 columns of tex
0129C0: 74 2E 20 20 54 68 65 20 66 6F 6C 6C 6F 77 69 6E t. The followin
0129D0: 67 20 74 61 62 6C 65 20 73 68 6F 77 73 0D 0A 20 g table shows..
0129E0: 20 20 77 68 61 74 20 77 65 20 6E 65 65 64 20 74 what we need t
0129F0: 6F 20 61 63 68 69 65 76 65 3A 0D 0A 0D 0A 20 20 o achieve:....
012A00: 20 47 72 61 70 68 69 63 73 20 20 20 20 20 20 43 Graphics C
012A10: 6F 6C 75 6D 6E 20 20 20 20 20 54 65 78 74 0D 0A olumn Text..
012A20: 20 20 20 78 2D 63 6F 6F 72 64 69 6E 61 74 65 73 x-coordinates
012A30: 20 20 20 20 20 20 20 20 20 20 20 20 78 2D 63 6F x-co
012A40: 6F 72 64 69 6E 61 74 65 0D 0A 0D 0A 20 20 20 20 ordinate....
012A50: 20 30 2D 31 35 39 20 20 20 20 20 20 20 30 20 20 0-159 0
012A60: 20 20 20 20 20 20 20 20 31 0D 0A 20 20 20 31 36 1.. 16
012A70: 30 2D 33 31 39 20 20 20 20 20 20 20 31 20 20 20 0-319 1
012A80: 20 20 20 20 20 20 20 32 31 0D 0A 20 20 20 33 32 21.. 32
012A90: 30 2D 34 37 39 20 20 20 20 20 20 20 32 20 20 20 0-479 2
012AA0: 20 20 20 20 20 20 20 34 31 0D 0A 20 20 20 34 38 41.. 48
012AB0: 30 2D 36 33 39 20 20 20 20 20 20 20 33 20 20 20 0-639 3
012AC0: 20 20 20 20 20 20 20 36 31 0D 0A 0D 0A 20 20 20 61....
012AD0: 49 66 20 77 65 20 74 68 65 6E 20 6D 75 6C 74 69 If we then multi
012AE0: 70 6C 79 20 74 68 65 20 63 6F 6C 75 6D 6E 20 6E ply the column n
012AF0: 75 6D 62 65 72 20 62 79 20 20 32 30 2C 20 74 68 umber by 20, th
012B00: 69 73 63 20 63 61 74 61 6C 6F 67 75 69 6E 67 20 isc cataloguing
012B10: 70 72 6F 67 72 61 6D 20 69 73 20 74 6F 0D 0A 20 program is to..
012B20: 20 20 65 78 70 6C 61 69 6E 20 73 6F 6D 65 20 6F explain some o
012B30: 66 20 6C 69 6E 65 73 20 35 30 20 20 61 6E 64 20 f lines 50 and
012B40: 20 36 30 2E 20 20 20 53 69 6E 63 65 20 20 69 74 60. Since it
012B50: 20 20 77 61 73 20 46 65 62 72 75 61 72 79 20 74 was February t
012B60: 68 61 74 20 77 65 20 66 69 72 73 74 0D 0A 20 20 hat we first..
012B70: 20 6C 6F 6F 6B 65 64 20 61 74 20 74 68 65 20 70 looked at the p
012B80: 72 6F 67 72 61 6D 2C 20 77 65 27 76 65 20 20 61 rogram, we've a
012B90: 73 6B 65 64 20 20 4A 6F 68 6E 20 20 74 6F 20 20 sked John to
012BA0: 70 72 69 6E 74 20 20 74 68 65 20 6C 69 73 74 69 print the listi
012BB0: 6E 67 20 61 67 61 69 6E 20 69 6E 0D 0A 20 20 20 ng again in..
012BC0: 46 69 67 75 72 65 20 31 2E 20 20 3C 3C 41 6E 64 Figure 1. <<And
012BD0: 20 79 6F 75 20 63 61 6E 20 6C 6F 61 64 20 69 74 you can load it
012BE0: 20 66 72 6F 6D 20 74 68 65 20 64 69 73 63 20 61 from the disc a
012BF0: 73 20 44 49 53 43 4D 45 4E 55 2E 42 41 53 3E 3E s DISCMENU.BAS>>
012C00: 0D 0A 0D 0A 20 20 20 4C 69 6E 65 20 35 30 20 69 .... Line 50 i
012C10: 73 20 72 65 61 63 68 65 64 20 77 68 65 6E 20 74 s reached when t
012C20: 68 65 20 57 48 49 4C 45 20 63 6F 6E 64 69 74 69 he WHILE conditi
012C30: 6F 6E 20 69 6E 20 6C 69 6E 65 20 34 30 20 69 73 on in line 40 is
012C40: 20 66 61 6C 73 65 2C 20 69 2E 65 2E 20 77 68 65 false, i.e. whe
012C50: 6E 0D 0A 20 20 20 6F 6E 65 20 6F 66 20 74 68 65 n.. one of the
012C60: 20 74 68 72 65 65 20 73 65 6C 65 63 74 69 6F 6E three selection
012C70: 20 6B 65 79 73 20 69 73 20 20 70 72 65 73 73 65 keys is presse
012C80: 64 2E 20 20 54 68 65 20 66 69 72 73 74 20 74 68 d. The first th
012C90: 69 6E 67 20 6C 69 6E 65 20 35 30 20 64 6F 65 73 ing line 50 does
012CA0: 0D 0A 20 20 20 69 73 20 63 61 6C 6C 20 74 68 65 .. is call the
012CB0: 20 73 75 62 72 6F 75 74 69 6E 65 20 69 6E 20 6C subroutine in l
012CC0: 69 6E 65 20 38 30 20 20 77 68 69 63 68 20 77 61 ine 80 which wa
012CD0: 69 74 73 20 75 6E 74 69 6C 20 74 68 65 20 75 73 its until the us
012CE0: 65 72 20 68 61 73 20 72 65 6C 65 61 73 65 64 0D er has released.
012CF0: 0A 20 20 20 74 68 65 20 73 65 6C 65 63 74 69 6F . the selectio
012D00: 61 74 20 77 69 6C 6C 20 67 69 76 65 20 75 73 20 at will give us
012D10: 30 2C 20 32 30 2C 20 34 30 2C 0D 0A 20 20 20 36 0, 20, 40,.. 6
012D20: 30 2C 20 77 68 69 63 68 20 69 73 20 74 68 65 20 0, which is the
012D30: 63 6F 72 72 65 63 74 20 73 65 70 61 72 61 74 69 correct separati
012D40: 6F 6E 20 66 6F 72 20 20 74 68 65 20 74 65 78 74 on for the text
012D50: 20 63 75 72 73 6F 72 2E 20 20 57 65 20 6A 75 73 cursor. We jus
012D60: 74 20 6E 65 65 64 20 74 6F 0D 0A 20 20 20 61 64 t need to.. ad
012D70: 64 20 31 20 74 6F 20 67 65 74 20 74 68 65 20 72 d 1 to get the r
012D80: 69 67 68 74 20 74 65 78 74 20 63 6F 6F 72 64 69 ight text coordi
012D90: 6E 61 74 65 2E 20 20 20 54 72 79 20 20 69 74 20 nate. Try it
012DA0: 6F 75 74 20 69 6E 20 73 74 61 67 65 73 20 77 69 out in stages wi
012DB0: 74 68 20 61 20 66 65 77 0D 0A 20 20 20 65 78 61 th a few.. exa
012DC0: 6D 70 6C 65 20 78 20 76 61 6C 75 65 73 20 69 66 mple x values if
012DD0: 20 79 6F 75 20 6C 69 6B 65 2C 20 73 6F 20 74 68 you like, so th
012DE0: 61 74 20 79 6F 75 20 63 61 6E 20 73 65 65 20 68 at you can see h
012DF0: 6F 77 20 69 74 20 77 6F 72 6B 73 2E 0D 0A 0D 0A ow it works.....
012E00: 20 20 20 54 68 65 20 65 78 70 72 65 73 73 69 6F The expressio
012E10: 6E 20 66 6F 72 20 71 20 69 73 20 73 69 6D 70 6C n for q is simpl
012E20: 65 72 20 69 6E 20 6F 6E 65 20 77 61 79 20 2D 20 er in one way -
012E30: 61 6C 6C 20 77 65 20 77 61 6E 74 20 74 6F 20 64 all we want to d
012E40: 6F 20 69 73 20 73 65 74 20 71 20 74 6F 0D 0A 20 o is set q to..
012E50: 20 20 62 65 20 74 68 65 20 74 65 78 74 20 6C 69 be the text li
012E60: 6E 65 20 74 68 61 74 20 74 68 65 20 67 72 61 70 ne that the grap
012E70: 68 69 63 73 20 20 63 75 72 73 6F 72 20 20 69 73 hics cursor is
012E80: 20 6F 6E 2E 20 20 54 68 65 72 65 20 61 72 65 20 on. There are
012E90: 34 30 30 20 67 72 61 70 68 69 63 73 0D 0A 20 20 400 graphics..
012EA0: 20 63 6F 6F 72 64 69 6E 61 74 65 73 20 76 65 72 coordinates ver
012EB0: 74 69 63 61 6C 6C 79 2C 20 61 6E 64 20 32 35 20 tically, and 25
012EC0: 20 74 65 78 74 20 20 63 6F 6F 72 64 69 6E 61 74 text coordinat
012ED0: 65 73 2E 20 20 20 59 6F 75 20 20 6D 69 67 68 74 es. You might
012EE0: 20 74 68 69 6E 6B 20 74 68 61 74 0D 0A 20 20 20 think that..
012EF0: 73 69 6E 63 65 20 74 68 65 72 65 20 61 72 65 20 since there are
012F00: 6E 20 6B 65 79 20 61 6E 64 20 74 68 65 6E 20 63 n key and then c
012F10: 6C 65 61 72 73 20 74 68 65 20 20 69 6E 70 75 74 lears the input
012F20: 20 62 75 66 66 65 72 2E 20 20 54 68 65 6E 20 6C buffer. Then l
012F30: 69 6E 65 20 35 30 20 72 65 6D 6F 76 65 73 0D 0A ine 50 removes..
012F40: 20 20 20 74 68 65 20 70 6F 69 6E 74 65 72 20 66 the pointer f
012F50: 72 6F 6D 20 74 68 65 20 73 63 72 65 65 6E 20 62 rom the screen b
012F60: 65 66 6F 72 65 20 74 72 79 69 6E 67 20 74 6F 20 efore trying to
012F70: 77 6F 72 6B 20 6F 75 74 20 77 68 61 74 20 74 68 work out what th
012F80: 65 20 75 73 65 72 20 77 61 6E 74 65 64 0D 0A 20 e user wanted..
012F90: 20 20 74 6F 20 73 65 6C 65 63 74 2E 0D 0A 0D 0A to select.....
012FA0: 20 20 20 57 68 65 6E 20 61 20 73 65 6C 65 63 74 When a select
012FB0: 69 6F 6E 20 6B 65 79 20 69 73 20 70 72 65 73 73 ion key is press
012FC0: 65 64 2C 20 74 68 65 72 65 20 61 72 65 20 74 68 ed, there are th
012FD0: 72 65 65 20 70 6F 73 73 69 62 6C 65 20 63 61 73 ree possible cas
012FE0: 65 73 3A 0D 0A 0D 0A 20 20 20 31 2E 20 54 68 65 es:.... 1. The
012FF0: 20 70 6F 69 6E 74 65 72 20 69 73 20 6F 76 65 72 pointer is over
013000: 20 61 20 66 69 6C 65 6E 61 6D 65 2E 0D 0A 20 20 a filename...
013010: 20 32 2E 20 54 68 65 20 70 6F 69 6E 74 65 72 20 2. The pointer
013020: 69 73 20 6F 76 65 72 20 74 68 65 20 22 75 73 65 is over the "use
013030: 72 20 20 30 22 20 73 74 61 74 65 6D 65 6E 74 2E r 0" statement.
013040: 0D 0A 20 20 20 33 2E 20 54 68 65 20 70 6F 69 6E .. 3. The poin
013050: 74 65 72 20 69 73 20 6F 76 65 72 20 6E 65 69 74 ter is over neit
013060: 68 65 72 20 6F 66 20 74 68 65 20 61 62 6F 76 65 her of the above
013070: 2E 0D 0A 0D 0A 20 20 20 54 6F 20 66 69 6E 64 20 ..... To find
013080: 6F 75 74 20 77 68 69 63 68 20 63 61 73 65 20 77 out which case w
013090: 65 20 68 61 76 65 2C 20 20 77 65 20 20 6E 65 65 e have, we nee
0130A0: 64 20 74 6F 20 72 65 61 64 20 73 6F 6D 65 20 63 d to read some c
0130B0: 68 61 72 61 63 74 65 72 73 20 66 72 6F 6D 20 74 haracters from t
0130C0: 68 65 0D 0A 20 20 20 73 63 72 65 65 6E 2E 20 20 he.. screen.
0130D0: 41 73 20 65 78 70 6C 61 69 6E 65 64 20 69 6E 20 As explained in
0130E0: 74 68 65 20 70 72 65 76 69 6F 75 73 20 61 72 74 the previous art
0130F0: 69 63 6C 65 2C 20 20 77 65 20 68 61 76 65 20 61 icle, we have a
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 C3 02 00 00 00 02 ......N.........
013120: 10 00 C8 02 00 00 00 02 10 00 C4 02 00 00 00 02 ................
013130: 10 00 C9 02 00 00 00 02 10 00 C5 02 00 00 00 02 ................
013140: 10 00 C1 02 00 00 00 02 10 00 C6 02 00 00 00 02 ................
013150: 10 00 C2 02 00 00 00 02 10 00 C7 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: 65 20 32 30 29 2E 0D 0A 20 20 20 54 68 65 20 6C e 20)... The l
013210: 69 6E 65 20 75 73 65 64 20 74 6F 20 6C 6F 6F 6B ine used to look
013220: 20 61 20 6C 6F 74 20 73 69 6D 70 6C 65 72 20 20 a lot simpler
013230: 62 75 74 20 4D 61 74 74 68 65 77 20 63 61 6D 65 but Matthew came
013240: 20 75 70 20 77 69 74 68 20 61 6E 20 69 6E 67 65 up with an inge
013250: 6E 69 6F 75 73 0D 0A 20 20 20 77 61 79 20 6F 66 nious.. way of
013260: 20 6D 61 6B 69 6E 67 20 69 74 20 6C 65 73 73 20 making it less
013270: 74 68 61 6E 20 20 72 65 61 64 61 62 6C 65 2E 20 than readable.
013280: 20 20 49 66 20 20 66 6F 72 20 20 74 68 65 20 20 If for the
013290: 6D 6F 6D 65 6E 74 20 77 65 20 69 6D 61 67 69 6E moment we imagin
0132A0: 65 20 69 74 0D 0A 20 20 20 73 61 79 73 20 22 57 e it.. says "W
0132B0: 48 49 4C 45 20 75 3C 30 20 4F 52 20 75 3E 31 35 HILE u<0 OR u>15
0132C0: 22 20 72 61 74 68 65 72 20 20 74 68 61 6E 20 20 " rather than
0132D0: 22 57 48 49 4C 45 20 20 75 20 20 41 4E 44 20 2D "WHILE u AND -
0132E0: 31 36 22 20 74 68 65 6E 20 69 74 20 77 69 6C 6C 16" then it will
0132F0: 20 62 65 0D 0A 20 20 20 65 61 73 69 65 72 20 74 be.. easier t
013300: 6F 20 65 78 70 6C 61 69 6E 2E 0D 0A 0D 0A 20 20 o explain.....
013310: 20 49 6E 69 74 69 61 6C 6C 79 20 75 20 69 73 20 Initially u is
013320: 73 65 74 20 74 6F 20 62 65 20 31 36 20 28 61 6E set to be 16 (an
013330: 20 20 69 6E 76 61 6C 69 64 20 20 75 73 65 72 20 invalid user
013340: 6E 75 6D 62 65 72 29 20 73 6F 20 74 68 61 74 20 number) so that
013350: 74 68 65 20 63 6F 64 65 20 69 6E 0D 0A 20 20 20 the code in..
013360: 74 68 65 20 57 48 49 4C 45 2D 57 45 4E 44 20 6C the WHILE-WEND l
013370: 6F 6F 70 20 69 73 20 65 78 65 63 75 74 65 64 20 oop is executed
013380: 61 74 20 6C 65 61 73 74 20 6F 6E 63 65 2E 20 20 at least once.
013390: 54 68 65 20 63 75 72 73 6F 72 20 69 73 20 4C 4F The cursor is LO
0133A0: 43 41 54 45 64 20 6A 75 73 74 0D 0A 20 20 20 75 CATEd just.. u
0133B0: 6E 64 65 72 20 74 68 65 20 64 69 73 63 20 63 61 nder the disc ca
0133C0: 74 61 6C 6F 67 75 65 20 20 28 75 73 69 6E 67 20 talogue (using
0133D0: 20 76 29 20 20 61 6E 64 20 20 74 68 65 20 20 22 v) and the "
0133E0: 55 73 65 72 3A 22 20 70 72 6F 6D 70 74 20 69 73 User:" prompt is
0133F0: 20 70 72 69 6E 74 65 64 2E 0D 0A 20 20 20 54 68 printed... Th
013400: 20 20 53 65 65 20 61 20 6C 61 74 65 72 20 61 72 See a later ar
013410: 74 69 63 6C 65 20 66 6F 72 20 6D 6F 72 65 20 64 ticle for more d
013420: 65 74 61 69 6C 73 2E 3E 3E 0D 0A 0D 0A 20 20 20 etails.>>....
013430: 54 6F 20 77 6F 72 6B 20 6F 75 74 20 22 75 20 41 To work out "u A
013440: 4E 44 20 2D 31 36 22 2C 20 77 65 20 77 72 69 74 ND -16", we writ
013450: 65 20 64 6F 77 6E 20 20 74 68 65 20 76 61 6C 75 e down the valu
013460: 65 20 6F 66 20 75 20 69 6E 20 62 69 6E 61 72 79 e of u in binary
013470: 2C 20 77 69 74 68 20 2D 31 36 0D 0A 20 20 20 77 , with -16.. w
013480: 72 69 74 74 65 6E 20 6F 75 74 20 62 65 6E 65 61 ritten out benea
013490: 74 68 2C 20 61 6E 64 20 41 4E 44 20 65 61 63 68 th, and AND each
0134A0: 20 62 69 74 20 20 6F 66 20 75 20 69 6E 20 74 75 bit of u in tu
0134B0: 72 6E 20 77 69 74 68 20 74 68 65 20 63 6F 72 72 rn with the corr
0134C0: 65 73 70 6F 6E 64 69 6E 67 0D 0A 20 20 20 62 69 esponding.. bi
0134D0: 74 20 62 65 6C 6F 77 2E 20 20 57 68 65 6E 20 79 t below. When y
0134E0: 6F 75 20 41 4E 44 20 74 77 6F 20 62 69 74 73 20 ou AND two bits
0134F0: 74 68 65 6E 20 79 6F 75 20 6F 6E 6C 79 20 67 65 then you only ge
013500: 74 20 61 20 6F 6E 65 20 61 73 20 74 68 65 20 72 t a one as the r
013510: 65 73 75 6C 74 20 69 66 0D 0A 20 20 20 62 6F 74 esult if.. bot
013520: 68 20 74 68 65 20 62 69 74 73 20 77 65 72 65 20 h the bits were
013530: 6F 6E 65 2E 20 20 46 6F 72 20 65 78 61 6D 70 6C one. For exampl
013540: 65 2C 20 69 66 20 75 20 69 73 20 38 37 20 77 65 e, if u is 87 we
013550: 20 67 65 74 3A 0D 0A 0D 0A 20 20 20 75 20 20 20 get:.... u
013560: 20 20 20 20 20 20 20 30 30 30 30 30 30 30 30 30 000000000
013570: 31 30 31 30 31 31 31 0D 0A 20 20 20 2D 31 36 20 1010111.. -16
013580: 20 20 20 20 20 20 20 31 31 31 31 31 31 31 31 31 111111111
013590: 31 31 31 30 30 30 30 0D 0A 20 20 20 20 20 20 20 1110000..
0135A0: 20 20 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D ---------
0135B0: 2D 2D 2D 2D 2D 2D 2D 0D 0A 20 20 20 75 20 41 4E -------.. u AN
0135C0: 44 20 2D 31 36 20 20 30 30 30 30 30 30 30 30 30 D -16 000000000
0135D0: 31 30 31 30 30 30 30 0D 0A 0D 0A 20 20 20 49 74 1010000.... It
0135E0: 20 69 73 20 71 75 69 74 65 20 65 61 73 79 20 74 is quite easy t
0135F0: 6F 20 73 65 65 20 74 68 61 74 20 75 20 20 41 4E o see that u AN
013600: 65 72 65 20 61 72 65 20 74 77 6F 20 74 68 69 6E ere are two thin
013610: 67 73 20 74 6F 20 6E 6F 74 69 63 65 20 61 62 6F gs to notice abo
013620: 75 74 20 20 74 68 65 20 50 52 49 4E 54 20 73 74 ut the PRINT st
013630: 61 74 65 6D 65 6E 74 2C 20 66 69 72 73 74 6C 79 atement, firstly
013640: 20 74 68 61 74 20 77 65 0D 0A 20 20 20 70 72 69 that we.. pri
013650: 6E 74 20 43 48 52 24 28 32 30 29 20 74 6F 6F 2E nt CHR$(20) too.
013660: 20 20 43 68 61 72 61 63 74 65 72 20 32 30 20 69 Character 20 i
013670: 73 20 20 61 20 63 6F 6E 74 72 6F 6C 20 63 68 61 s a control cha
013680: 72 61 63 74 65 72 20 77 68 69 63 68 20 63 6C 65 racter which cle
013690: 61 72 73 20 74 68 65 0D 0A 20 20 20 77 68 6F 6C ars the.. whol
0136A0: 65 20 6F 66 20 74 68 65 20 73 63 72 65 65 6E 20 e of the screen
0136B0: 66 72 6F 6D 20 74 68 65 20 20 63 75 72 73 6F 72 from the cursor
0136C0: 20 20 6F 6E 77 61 72 64 73 2E 20 20 54 68 69 73 onwards. This
0136D0: 20 65 6E 73 75 72 65 73 20 74 68 61 74 20 74 68 ensures that th
0136E0: 65 72 65 20 69 73 0D 0A 20 20 20 6E 6F 20 6D 65 ere is.. no me
0136F0: 73 73 20 61 6E 79 77 68 65 72 65 2E 20 20 53 65 ss anywhere. Se
013700: 63 6F 6E 64 6C 79 2C 20 74 68 65 72 65 20 69 73 condly, there is
013710: 20 61 20 20 73 65 6D 69 63 6F 6C 6F 6E 20 61 74 a semicolon at
013720: 20 74 68 65 20 65 6E 64 2E 20 20 54 68 69 73 20 the end. This
013730: 6D 65 61 6E 73 0D 0A 20 20 20 74 68 61 74 20 74 means.. that t
013740: 68 65 20 63 75 72 73 6F 72 20 72 65 6D 61 69 6E he cursor remain
013750: 73 20 6F 6E 20 74 68 61 74 20 20 6C 69 6E 65 20 s on that line
013760: 20 66 6F 72 20 74 68 65 20 69 6E 70 75 74 20 72 for the input r
013770: 61 74 68 65 72 20 74 68 61 6E 20 62 65 67 69 6E ather than begin
013780: 6E 69 6E 67 0D 0A 20 20 20 61 67 61 69 6E 20 61 ning.. again a
013790: 74 20 74 68 65 20 73 74 61 72 74 20 6F 66 20 74 t the start of t
0137A0: 68 65 20 6E 65 78 74 20 6C 69 6E 65 2E 0D 0A 0D he next line....
0137B0: 0A 20 20 20 54 68 65 20 6E 65 78 74 20 73 74 61 . The next sta
0137C0: 74 65 6D 65 6E 74 20 69 73 20 22 4C 49 4E 45 20 tement is "LINE
0137D0: 49 4E 50 55 54 20 75 24 22 2E 20 20 20 49 6E 70 INPUT u$". Inp
0137E0: 75 74 20 69 6E 74 6F 20 61 20 73 74 72 69 6E 67 ut into a string
0137F0: 20 77 61 73 20 63 68 6F 73 65 6E 20 73 6F 0D 0A was chosen so..
013800: 44 20 20 2D 31 36 20 77 69 6C 6C 20 6F 6E 6C 79 D -16 will only
013810: 20 62 65 20 7A 65 72 6F 20 77 68 65 6E 20 74 68 be zero when th
013820: 65 20 62 69 6E 61 72 79 0D 0A 20 20 20 66 6F 72 e binary.. for
013830: 6D 20 6F 66 20 75 20 68 61 73 20 7A 65 72 6F 73 m of u has zeros
013840: 20 77 68 65 72 65 20 2D 31 36 20 20 68 61 73 20 where -16 has
013850: 20 6F 6E 65 73 2E 20 20 20 57 68 65 72 65 20 20 ones. Where
013860: 2D 31 36 20 68 61 73 20 7A 65 72 6F 73 2C 20 75 -16 has zeros, u
013870: 20 63 61 6E 20 62 65 0D 0A 20 20 20 61 6E 79 74 can be.. anyt
013880: 68 69 6E 67 20 77 65 20 6C 69 6B 65 2C 20 61 6E hing we like, an
013890: 64 20 69 74 20 73 6F 20 68 61 70 70 65 6E 73 20 d it so happens
0138A0: 74 68 61 74 20 74 68 65 20 6E 75 6D 62 65 72 73 that the numbers
0138B0: 20 77 69 74 68 20 7A 65 72 6F 73 20 69 6E 20 74 with zeros in t
0138C0: 68 65 20 74 6F 70 0D 0A 20 20 20 74 77 65 6C 76 he top.. twelv
0138D0: 65 20 62 69 74 73 20 61 6E 64 20 7A 65 72 6F 73 e bits and zeros
0138E0: 20 61 6E 64 20 6F 6E 65 73 20 69 6E 20 20 74 68 and ones in th
0138F0: 65 20 20 62 6F 74 74 6F 6D 20 66 6F 75 72 20 62 e bottom four b
013900: 69 74 73 20 61 72 65 20 74 68 65 20 6E 75 6D 62 its are the numb
013910: 65 72 73 20 30 0D 0A 20 20 20 74 6F 20 31 35 2C ers 0.. to 15,
013920: 20 74 68 65 20 76 61 6C 69 64 20 75 73 65 72 20 the valid user
013930: 6E 75 6D 62 65 72 73 21 0D 0A 0D 0A 20 20 20 43 numbers!.... C
013940: 4F 4D 50 4C 49 4D 45 4E 54 41 52 59 20 4D 49 4E OMPLIMENTARY MIN
013950: 54 53 0D 0A 20 20 20 54 68 65 20 41 6D 73 74 72 TS.. The Amstr
013960: 61 64 20 75 73 65 73 20 20 74 68 65 20 20 63 6F ad uses the co
013970: 6D 6D 6F 6E 20 20 74 77 6F 27 73 20 20 63 6F 6D mmon two's com
013980: 70 6C 65 6D 65 6E 74 20 20 6D 65 74 68 6F 64 20 plement method
013990: 20 74 6F 20 73 74 6F 72 65 20 69 6E 74 65 67 65 to store intege
0139A0: 72 0D 0A 20 20 20 76 61 72 69 61 62 6C 65 73 2E r.. variables.
0139B0: 20 20 49 74 20 69 73 20 63 61 6C 6C 65 64 20 20 It is called
0139C0: 74 77 6F 27 73 20 20 63 6F 6D 70 6C 65 6D 65 6E two's complemen
0139D0: 74 20 20 74 6F 20 20 64 69 73 74 69 6E 67 75 69 t to distingui
0139E0: 73 68 20 69 74 20 66 72 6F 6D 20 6F 6E 65 27 73 sh it from one's
0139F0: 0D 0A 20 20 20 63 6F 6D 70 6C 65 6D 65 6E 74 20 .. complement
013A00: 20 20 20 74 68 61 74 20 6E 6F 20 65 72 72 6F 72 that no error
013A10: 73 20 6F 63 63 75 72 20 69 66 20 73 6F 6D 65 74 s occur if somet
013A20: 68 69 6E 67 20 6F 74 68 65 72 20 74 68 61 6E 20 hing other than
013A30: 61 20 64 69 67 69 74 20 69 73 20 74 79 70 65 64 a digit is typed
013A40: 2E 20 20 55 73 69 6E 67 20 4C 49 4E 45 0D 0A 20 . Using LINE..
013A50: 20 20 49 4E 50 55 54 20 6D 65 61 6E 73 20 74 68 INPUT means th
013A60: 61 74 20 20 65 76 65 6E 20 20 63 6F 6D 6D 61 73 at even commas
013A70: 20 20 63 61 6E 20 20 62 65 20 20 74 79 70 65 64 can be typed
013A80: 20 20 61 6E 64 20 20 69 74 20 20 77 69 6C 6C 20 and it will
013A90: 6E 6F 74 20 63 6F 6D 70 6C 61 69 6E 0D 0A 20 20 not complain..
013AA0: 20 28 6F 72 64 69 6E 61 72 79 20 49 4E 50 55 54 (ordinary INPUT
013AB0: 20 77 69 6C 6C 20 67 69 76 65 20 61 6E 20 20 65 will give an e
013AC0: 72 72 6F 72 20 20 69 66 20 20 61 20 20 63 6F 6D rror if a com
013AD0: 6D 61 20 20 69 73 20 75 73 65 64 20 77 68 65 6E ma is used when
013AE0: 20 69 74 20 64 6F 65 73 6E 27 74 0D 0A 20 20 20 it doesn't..
013AF0: 65 78 70 65 63 74 20 69 74 29 2E 20 20 57 68 69 expect it). Whi
013B00: 6C 65 20 6D 6F 73 74 20 75 73 65 72 73 20 77 69 le most users wi
013B10: 6C 6C 20 20 64 6F 20 20 77 68 61 74 20 77 65 20 ll do what we
013B20: 65 78 70 65 63 74 2C 20 67 6F 6F 64 20 70 72 6F expect, good pro
013B30: 67 72 61 6D 73 20 63 6F 70 65 0D 0A 20 20 20 77 grams cope.. w
013B40: 69 74 68 20 74 68 65 20 75 6E 65 78 70 65 63 74 ith the unexpect
013B50: 65 64 20 74 6F 6F 2E 0D 0A 0D 0A 20 20 20 54 6F ed too..... To
013B60: 20 66 69 6E 64 20 6F 75 74 20 77 68 61 74 20 6E find out what n
013B70: 75 6D 62 65 72 20 77 61 73 20 74 79 70 65 64 2C umber was typed,
013B80: 20 77 65 20 73 65 74 20 20 75 20 74 6F 20 62 65 we set u to be
013B90: 20 74 68 65 20 6E 75 6D 65 72 69 63 20 56 41 4C the numeric VAL
013BA0: 75 65 20 6F 66 20 75 24 0D 0A 20 20 20 61 6E 64 ue of u$.. and
013BB0: 20 74 68 65 20 57 45 4E 44 20 74 68 65 6E 20 6C the WEND then l
013BC0: 6F 6F 70 73 20 62 61 63 6B 20 69 66 20 75 20 69 oops back if u i
013BD0: 73 20 6E 6F 74 20 61 20 76 61 6C 69 64 20 75 73 s not a valid us
013BE0: 65 72 20 6E 75 6D 62 65 72 2E 20 20 49 66 20 74 er number. If t
013BF0: 68 65 20 75 73 65 72 0D 0A 20 20 20 64 6F 65 73 he user.. does
013C00: 20 6F 66 20 74 68 65 20 73 63 72 65 65 6E 20 2D of the screen -
013C10: 20 74 68 65 0D 0A 20 20 20 73 61 6D 65 20 61 73 the.. same as
013C20: 20 74 68 65 20 74 65 78 74 20 63 75 72 73 6F 72 the text cursor
013C30: 2E 20 20 57 65 20 63 61 6E 20 74 68 65 6E 20 20 . We can then
013C40: 64 6F 20 69 6E 74 65 67 65 72 20 64 69 76 69 73 do integer divis
013C50: 69 6F 6E 20 62 79 20 31 36 20 61 6E 64 20 61 64 ion by 16 and ad
013C60: 64 20 31 0D 0A 20 20 20 74 6F 20 66 69 6E 69 73 d 1.. to finis
013C70: 68 20 6F 66 66 2E 0D 0A 0D 0A 20 20 20 41 66 74 h off..... Aft
013C80: 65 72 20 70 20 61 6E 64 20 71 20 68 61 76 65 20 er p and q have
013C90: 62 65 65 6E 20 63 61 6C 63 75 6C 61 74 65 64 2C been calculated,
013CA0: 20 74 68 65 20 20 74 65 78 74 20 63 75 72 73 6F the text curso
013CB0: 72 20 69 73 20 4C 4F 43 41 54 45 64 20 61 74 20 r is LOCATEd at
013CC0: 70 2C 71 20 61 6E 64 0D 0A 20 20 20 74 68 65 20 p,q and.. the
013CD0: 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 63 61 6C machine code cal
013CE0: 6C 65 64 20 74 6F 20 70 75 74 20 20 74 68 65 20 led to put the
013CF0: 20 6E 65 78 74 20 20 31 32 20 63 68 61 72 61 63 next 12 charac
013D00: 74 65 72 73 20 69 6E 74 6F 20 66 24 2E 20 20 57 ters into f$. W
013D10: 65 20 74 68 65 6E 0D 0A 20 20 20 68 69 74 20 61 e then.. hit a
013D20: 20 57 45 4E 44 2E 20 20 54 68 65 20 57 45 4E 44 WEND. The WEND
013D30: 20 72 65 66 65 72 73 20 62 61 63 6B 20 74 6F 20 refers back to
013D40: 74 68 65 20 73 65 63 6F 6E 64 20 57 48 49 4C 45 the second WHILE
013D50: 20 63 6F 6E 64 69 74 69 6F 6E 20 69 6E 20 6C 69 condition in li
013D60: 6E 65 20 33 30 0D 0A 20 20 20 74 68 61 74 20 73 ne 30.. that s
013D70: 61 79 73 20 74 6F 20 6B 65 65 70 20 6C 6F 6F 70 ays to keep loop
013D80: 69 6E 67 20 75 6E 74 69 6C 20 65 69 74 68 65 72 ing until either
013D90: 20 74 68 65 20 20 39 74 68 20 63 68 61 72 61 63 the 9th charac
013DA0: 74 65 72 20 6F 66 20 66 24 20 69 73 20 61 20 66 ter of f$ is a f
013DB0: 75 6C 6C 2D 0D 0A 20 20 20 73 74 6F 70 20 28 6F ull-.. stop (o
013DC0: 6E 20 61 20 66 69 6C 65 6E 61 6D 65 29 2C 20 6F n a filename), o
013DD0: 72 20 74 68 65 20 38 74 68 20 20 63 68 61 72 61 r the 8th chara
013DE0: 63 74 65 72 20 20 69 73 20 20 61 20 63 6F 6C 6F cter is a colo
013DF0: 6E 20 28 61 74 20 74 68 65 20 22 44 72 69 76 65 n (at the "Drive
013E00: 6E 27 74 20 74 79 70 65 20 61 6E 79 74 68 69 6E n't type anythin
013E10: 67 20 61 6E 64 20 6A 75 73 74 20 70 72 65 73 73 g and just press
013E20: 65 73 20 74 68 65 20 45 6E 74 65 72 2F 52 65 74 es the Enter/Ret
013E30: 75 72 6E 20 6B 65 79 20 74 68 65 6E 20 75 20 77 urn key then u w
013E40: 69 6C 6C 20 62 65 0D 0A 20 20 20 73 65 74 20 74 ill be.. set t
013E50: 6F 20 30 20 2D 20 61 20 76 61 6C 69 64 20 75 73 o 0 - a valid us
013E60: 65 72 20 6E 75 6D 62 65 72 20 20 2D 20 20 61 6E er number - an
013E70: 64 20 20 75 24 20 77 69 6C 6C 20 62 65 20 65 6D d u$ will be em
013E80: 70 74 79 2E 20 20 49 6E 20 74 68 69 73 20 63 61 pty. In this ca
013E90: 73 65 20 77 65 0D 0A 20 20 20 61 73 73 75 6D 65 se we.. assume
013EA0: 20 74 68 61 74 20 74 68 65 20 75 73 65 72 20 64 that the user d
013EB0: 69 64 20 6E 6F 74 20 72 65 61 6C 6C 79 20 77 61 id not really wa
013EC0: 6E 74 20 20 74 6F 20 63 68 61 6E 67 65 20 74 68 nt to change th
013ED0: 65 20 75 73 65 72 20 6E 75 6D 62 65 72 2E 20 20 e user number.
013EE0: 41 73 20 61 0D 0A 20 20 20 70 72 6F 67 72 61 6D As a.. program
013EF0: 6D 65 72 20 69 74 20 69 73 20 77 69 73 65 20 20 mer it is wise
013F00: 74 6F 20 20 72 65 61 6C 69 73 65 20 20 74 68 61 to realise tha
013F10: 74 20 20 75 73 65 72 73 20 20 64 6F 20 20 6E 6F t users do no
013F20: 74 20 61 6C 77 61 79 73 20 73 65 6C 65 63 74 20 t always select
013F30: 74 68 65 0D 0A 20 20 20 6F 70 74 69 6F 6E 73 20 the.. options
013F40: 74 68 65 79 20 69 6E 74 65 6E 64 20 74 6F 2C 20 they intend to,
013F50: 61 6E 64 20 77 65 20 20 63 61 6E 20 20 61 6E 74 and we can ant
013F60: 69 63 69 70 61 74 65 20 20 74 68 69 73 20 62 79 icipate this by
013F70: 20 70 72 6F 76 69 64 69 6E 67 20 61 6E 20 65 61 providing an ea
013F80: 73 79 0D 0A 20 20 20 77 61 79 20 6F 75 74 20 69 sy.. way out i
013F90: 6E 20 73 75 63 68 20 73 69 74 75 61 74 69 6F 6E n such situation
013FA0: 73 2E 20 20 20 54 68 61 74 20 20 69 73 20 20 77 s. That is w
013FB0: 68 79 20 20 74 68 65 20 20 72 65 73 74 20 20 6F hy the rest o
013FC0: 66 20 74 68 65 20 6C 69 6E 65 20 69 73 20 6E 6F f the line is no
013FD0: 74 0D 0A 20 20 20 65 78 65 63 75 74 65 64 20 69 t.. executed i
013FE0: 66 20 75 24 20 69 73 20 65 6D 70 74 79 2E 0D 0A f u$ is empty...
013FF0: 0D 0A 20 20 20 57 48 49 4C 45 20 41 57 41 59 20 .. WHILE AWAY
014000: 20 41 3A 0D 0A 20 20 20 75 73 65 72 20 20 30 22 A:.. user 0"
014010: 20 70 6F 73 69 74 69 6F 6E 29 2E 20 20 49 66 20 position). If
014020: 77 65 20 66 61 6C 6C 20 74 68 72 6F 75 67 68 20 we fall through
014030: 20 74 68 65 20 57 45 4E 44 20 61 6E 64 20 74 68 the WEND and th
014040: 65 20 39 74 68 20 63 68 61 72 61 63 74 65 72 20 e 9th character
014050: 69 73 0D 0A 20 20 20 61 20 66 75 6C 6C 2D 73 74 is.. a full-st
014060: 6F 70 20 74 68 65 6E 20 74 68 65 20 70 72 6F 67 op then the prog
014070: 72 61 6D 20 77 69 74 68 20 66 69 6C 65 6E 61 6D ram with filenam
014080: 65 20 20 66 24 20 69 73 20 72 75 6E 20 28 61 73 e f$ is run (as
014090: 20 64 69 73 63 75 73 73 65 64 20 69 6E 20 74 68 discussed in th
0140A0: 65 0D 0A 20 20 20 66 69 72 73 74 20 61 72 74 69 e.. first arti
0140B0: 63 6C 65 29 2E 20 20 4F 74 68 65 72 77 69 73 65 cle). Otherwise
0140C0: 20 77 65 20 6E 65 65 64 20 74 6F 20 20 61 73 6B we need to ask
0140D0: 20 20 74 68 65 20 20 75 73 65 72 20 77 68 69 63 the user whic
0140E0: 68 20 75 73 65 72 20 6E 75 6D 62 65 72 20 74 6F h user number to
0140F0: 0D 0A 20 20 20 63 68 61 6E 67 65 20 74 6F 2E 0D .. change to..
014100: 0A 0D 0A 20 20 20 55 53 45 46 55 4C 20 55 53 45 ... USEFUL USE
014110: 52 20 55 54 49 4C 49 54 59 0D 0A 20 20 20 4C 69 R UTILITY.. Li
014120: 6E 65 20 36 30 20 6C 6F 6F 70 73 20 75 6E 74 69 ne 60 loops unti
014130: 6C 20 61 20 76 61 6C 69 64 20 75 73 65 72 20 20 l a valid user
014140: 6E 75 6D 62 65 72 20 69 73 20 65 6E 74 65 72 65 number is entere
014150: 64 2C 20 63 68 61 6E 67 65 73 20 74 68 65 20 75 d, changes the u
014160: 73 65 72 20 61 72 65 61 0D 0A 20 20 20 74 6F 20 ser area.. to
014170: 74 68 61 74 20 6E 75 6D 62 65 72 2C 20 63 6C 65 that number, cle
014180: 61 72 73 20 74 68 65 20 73 63 72 65 65 6E 2C 20 ars the screen,
014190: 20 72 65 63 61 74 61 6C 6F 67 75 65 73 20 20 74 recatalogues t
0141A0: 68 65 20 64 69 73 63 20 61 6E 64 20 72 65 73 65 he disc and rese
0141B0: 74 73 20 76 20 74 6F 0D 0A 20 20 20 62 65 20 74 ts v to.. be t
0141C0: 68 65 20 79 2D 63 6F 6F 72 64 69 6E 61 74 65 20 he y-coordinate
0141D0: 6F 66 20 74 68 65 20 74 65 78 74 20 20 63 75 72 of the text cur
0141E0: 73 6F 72 20 20 28 76 20 20 69 73 20 69 6E 69 74 sor (v is init
0141F0: 69 61 6C 6C 79 20 73 65 74 20 69 6E 20 6C 69 6E ially set in lin
014200: 54 48 45 20 54 49 4D 45 0D 0A 20 20 20 53 6F 20 THE TIME.. So
014210: 77 68 79 20 64 6F 65 73 20 22 57 48 49 4C 45 20 why does "WHILE
014220: 75 20 41 4E 44 20 2D 31 36 22 20 20 6D 65 61 6E u AND -16" mean
014230: 20 20 74 68 65 20 20 73 61 6D 65 20 61 73 20 22 the same as "
014240: 57 48 49 4C 45 20 75 3C 30 20 4F 52 20 75 3E 31 WHILE u<0 OR u>1
014250: 35 22 3F 20 20 49 74 0D 0A 20 20 20 6D 61 79 20 5"? It.. may
014260: 6D 61 6B 65 20 6D 6F 72 65 20 73 65 6E 73 65 20 make more sense
014270: 77 68 65 6E 20 79 6F 75 20 6B 6E 6F 77 20 20 74 when you know t
014280: 68 61 74 20 2D 31 36 20 69 6E 20 62 69 6E 61 72 hat -16 in binar
014290: 79 20 69 73 20 31 31 31 31 31 31 31 31 31 31 31 y is 11111111111
0142A0: 31 30 30 30 30 2E 0D 0A 20 20 20 54 68 65 20 57 10000... The W
0142B0: 48 49 4C 45 20 6C 6F 6F 70 20 77 69 6C 6C 20 6B HILE loop will k
0142C0: 65 65 70 20 67 6F 69 6E 67 20 75 6E 74 69 6C 20 eep going until
0142D0: 74 68 65 20 63 6F 6E 64 69 74 69 6F 6E 20 69 73 the condition is
0142E0: 20 66 61 6C 73 65 2C 20 77 68 69 63 68 20 69 6E false, which in
0142F0: 20 74 68 69 73 0D 0A 20 20 20 63 61 73 65 20 68 this.. case h
014300: 61 70 70 65 6E 73 20 6F 6E 6C 79 20 77 68 65 6E appens only when
014310: 20 22 75 20 41 4E 44 20 20 2D 31 36 22 20 20 69 "u AND -16" i
014320: 73 20 20 7A 65 72 6F 2E 20 20 3C 3C 57 65 20 68 s zero. <<We h
014330: 61 76 65 20 73 69 6E 63 65 20 64 69 73 63 6F 76 ave since discov
014340: 65 72 65 64 0D 0A 20 20 20 74 68 61 74 20 74 68 ered.. that th
014350: 69 73 20 63 6F 6E 64 69 74 69 6F 6E 20 64 6F 65 is condition doe
014360: 73 20 6E 6F 74 20 77 6F 72 6B 20 70 72 6F 70 65 s not work prope
014370: 72 6C 79 20 20 6F 6E 20 20 74 68 65 20 43 50 43 rly on the CPC
014380: 20 34 36 34 2C 20 61 73 20 74 68 65 72 65 20 69 464, as there i
014390: 73 20 61 0D 0A 20 20 20 62 75 67 20 69 6E 20 42 s a.. bug in B
0143A0: 41 53 49 43 20 31 2E 30 2E 20 20 49 66 20 79 6F ASIC 1.0. If yo
0143B0: 75 20 74 79 70 65 20 69 6E 20 61 20 20 76 61 6C u type in a val
0143C0: 75 65 20 6F 66 20 75 20 74 68 61 74 20 69 73 20 ue of u that is
0143D0: 61 20 6D 75 6C 74 69 70 6C 65 20 6F 66 20 32 35 a multiple of 25
0143E0: 36 2C 0D 0A 20 20 20 69 74 20 77 69 6C 6C 20 6C 6,.. it will l
0143F0: 65 74 20 69 74 20 74 68 72 6F 75 67 68 2E 2E 2E et it through...
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 C1 02 00 00 00 02 ......N.........
014420: 11 00 C6 02 00 00 00 02 11 00 C2 02 00 00 00 02 ................
014430: 11 00 C7 02 00 00 00 02 11 00 C3 02 00 00 00 02 ................
014440: 11 00 C8 02 00 00 00 02 11 00 C4 02 00 00 00 02 ................
014450: 11 00 C9 02 00 00 00 02 11 00 C5 02 00 00 00 02 ................
014460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0144F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
014500: 77 68 69 63 68 20 69 73 20 6E 65 76 65 72 20 75 which is never u
014510: 73 65 64 20 20 61 6E 79 77 61 79 21 20 20 20 54 sed anyway! T
014520: 68 65 20 20 62 61 73 69 63 20 69 64 65 61 20 69 he basic idea i
014530: 73 20 74 68 61 74 20 6E 65 67 61 74 69 76 65 0D s that negative.
014540: 0A 20 20 20 6E 75 6D 62 65 72 73 20 61 72 65 20 . numbers are
014550: 73 74 6F 72 65 64 20 61 73 20 6C 61 72 67 65 20 stored as large
014560: 70 6F 73 69 74 69 76 65 20 6E 75 6D 62 65 72 73 positive numbers
014570: 2E 20 20 54 68 65 20 6C 61 72 67 65 73 74 20 6E . The largest n
014580: 75 6D 62 65 72 20 74 68 61 74 20 63 61 6E 0D 0A umber that can..
014590: 20 20 20 62 65 20 73 74 6F 72 65 64 20 69 6E 20 be stored in
0145A0: 31 36 20 62 69 74 73 20 20 69 73 20 20 36 35 35 16 bits is 655
0145B0: 33 35 2C 20 20 61 6C 73 6F 20 20 6B 6E 6F 77 6E 35, also known
0145C0: 20 20 61 73 20 46 46 46 46 20 69 6E 20 68 65 78 as FFFF in hex
0145D0: 61 64 65 63 69 6D 61 6C 2C 20 61 6E 64 0D 0A 20 adecimal, and..
0145E0: 20 20 31 31 31 31 31 31 31 31 31 31 31 31 31 31 11111111111111
0145F0: 31 31 20 69 6E 20 62 69 6E 61 72 79 2E 20 20 57 11 in binary. W
014600: 68 65 6E 20 77 65 20 75 73 65 20 74 77 6F 27 73 hen we use two's
014610: 20 63 6F 6D 70 6C 65 6D 65 6E 74 2C 20 77 65 20 complement, we
014620: 70 72 65 74 65 6E 64 20 74 68 61 74 0D 0A 20 20 pretend that..
014630: 20 69 74 20 6D 65 61 6E 73 20 6D 69 6E 75 73 20 it means minus
014640: 31 20 69 6E 73 74 65 61 64 2E 20 20 53 69 6D 69 1 instead. Simi
014650: 6C 61 72 6C 79 20 20 77 65 20 20 6C 65 74 20 20 larly we let
014660: 36 35 35 33 34 20 73 74 61 6E 64 20 66 6F 72 20 65534 stand for
014670: 2D 32 2E 20 20 36 35 35 32 35 2C 0D 0A 20 20 20 -2. 65525,..
014680: 74 65 6E 20 6C 65 73 73 20 74 68 61 6E 20 36 35 ten less than 65
014690: 35 33 35 2C 20 73 74 61 6E 64 73 20 66 6F 72 20 535, stands for
0146A0: 2D 31 31 2C 20 77 68 69 63 68 20 20 69 73 20 74 -11, which is t
0146B0: 65 6E 20 6C 65 73 73 20 74 68 61 6E 20 2D 31 2C en less than -1,
0146C0: 20 61 6E 64 20 73 6F 20 6F 6E 0D 0A 20 20 20 75 and so on.. u
0146D0: 6E 74 69 6C 20 77 65 20 6D 65 65 74 20 75 70 20 ntil we meet up
0146E0: 73 6F 6D 65 77 68 65 72 65 20 69 6E 20 74 68 65 somewhere in the
0146F0: 20 6D 69 64 64 6C 65 3A 0D 0A 0D 0A 20 20 20 2D middle:.... -
014700: 20 4E 65 78 74 20 6D 6F 6E 74 68 20 77 65 20 73 Next month we s
014710: 68 61 6C 6C 20 20 62 65 67 69 6E 20 20 64 69 73 hall begin dis
014720: 73 65 63 74 69 6E 67 20 61 6E 6F 74 68 65 72 20 secting another
014730: 73 6D 61 6C 6C 20 70 72 6F 67 72 61 6D 2C 20 74 small program, t
014740: 69 6C 6C 0D 0A 20 20 20 74 68 65 6E 20 70 65 72 ill.. then per
014750: 68 61 70 73 20 79 6F 75 20 63 6F 75 6C 64 20 20 haps you could
014760: 74 68 69 6E 6B 20 20 6F 66 20 20 61 20 20 67 6F think of a go
014770: 6F 64 20 20 72 65 61 73 6F 6E 20 20 77 68 79 20 od reason why
014780: 20 74 68 65 72 65 20 69 73 6E 27 74 20 61 20 6B there isn't a k
014790: 65 79 0D 0A 20 20 20 6E 75 6D 62 65 72 65 64 20 ey.. numbered
0147A0: 37 38 3F 20 20 48 61 76 65 20 66 75 6E 21 0D 0A 78? Have fun!..
0147B0: 0D 0A 0D 0A 31 30 20 44 45 46 49 4E 54 20 61 2D ....10 DEFINT a-
0147C0: 7A 3A 4D 45 4D 4F 52 59 20 48 49 4D 45 4D 2D 33 z:MEMORY HIMEM-3
0147D0: 34 3A 61 3D 55 4E 54 28 48 49 4D 45 4D 2B 31 29 4:a=UNT(HIMEM+1)
0147E0: 3A 46 4F 52 20 78 3D 30 20 54 4F 20 33 33 3A 52 :FOR x=0 TO 33:R
0147F0: 45 41 44 20 61 24 3A 50 4F 4B 45 20 61 2B 78 2C EAD a$:POKE a+x,
014800: 56 41 4C 0D 0A 20 20 20 28 22 26 22 2B 61 24 29 VAL.. ("&"+a$)
014810: 3A 4E 45 58 54 3A 44 41 54 41 20 43 44 2C 37 38 :NEXT:DATA CD,78
014820: 2C 42 42 2C 34 43 2C 44 44 2C 36 45 2C 30 2C 44 ,BB,4C,DD,6E,0,D
014830: 44 2C 36 36 2C 31 2C 34 36 2C 37 38 2C 42 37 2C D,66,1,46,78,B7,
014840: 43 38 2C 32 33 2C 35 45 2C 32 33 2C 36 36 2C 36 C8,23,5E,23,66,6
014850: 42 2C 43 44 0D 0A 20 20 20 2C 36 30 2C 42 42 2C B,CD.. ,60,BB,
014860: 37 37 2C 32 33 2C 43 2C 37 39 2C 45 35 2C 43 44 77,23,C,79,E5,CD
014870: 2C 36 46 2C 42 42 2C 45 31 2C 31 30 2C 46 32 2C ,6F,BB,E1,10,F2,
014880: 43 39 0D 0A 32 30 20 43 41 4C 4C 20 26 42 42 34 C9..20 CALL &BB4
014890: 45 3A 43 41 4C 4C 20 26 42 43 30 32 3A 43 41 4C E:CALL &BC02:CAL
0148A0: 4C 20 26 42 42 42 41 3A 4D 4F 44 45 20 32 3A 50 L &BBBA:MODE 2:P
0148B0: 52 49 4E 54 20 43 48 52 24 28 32 33 29 2B 43 48 RINT CHR$(23)+CH
0148C0: 52 24 28 31 29 3A 78 3D 31 30 30 3A 79 3D 32 39 R$(1):x=100:y=29
0148D0: 36 3A 43 0D 0A 20 20 20 41 54 3A 76 3D 56 50 4F 6:C.. AT:v=VPO
0148E0: 53 28 23 30 29 0D 0A 33 30 20 57 48 49 4C 45 20 S(#0)..30 WHILE
0148F0: 31 3A 54 41 47 3A 66 24 3D 53 50 41 43 45 24 28 1:TAG:f$=SPACE$(
014900: 33 32 37 36 38 20 20 31 30 30 30 30 30 30 30 30 32768 100000000
014910: 30 30 30 30 30 30 30 0D 0A 20 20 20 2B 33 32 37 0000000.. +327
014920: 36 37 20 20 30 31 31 31 31 31 31 31 31 31 31 31 67 011111111111
014930: 31 31 31 31 0D 0A 0D 0A 20 20 20 41 73 20 79 6F 1111.... As yo
014940: 75 20 73 65 65 2C 20 74 68 65 20 6C 61 72 67 65 u see, the large
014950: 73 74 20 20 70 6F 73 69 74 69 76 65 20 20 6E 75 st positive nu
014960: 6D 62 65 72 20 20 61 6C 6C 6F 77 65 64 20 20 69 mber allowed i
014970: 6E 20 74 77 6F 27 73 20 63 6F 6D 70 6C 65 6D 65 n two's compleme
014980: 6E 74 20 69 73 0D 0A 20 20 20 33 32 37 36 37 2C nt is.. 32767,
014990: 20 61 6E 64 20 69 74 20 68 61 73 20 74 68 65 20 and it has the
0149A0: 74 6F 70 20 62 69 74 20 7A 65 72 6F 20 69 6E 20 top bit zero in
0149B0: 62 69 6E 61 72 79 2E 20 20 54 68 65 20 6D 6F 73 binary. The mos
0149C0: 74 20 6E 65 67 61 74 69 76 65 20 6E 75 6D 62 65 t negative numbe
0149D0: 72 20 69 73 0D 0A 20 20 20 2D 33 32 37 36 38 2C r is.. -32768,
0149E0: 20 77 68 69 63 68 20 68 61 73 20 74 68 65 20 74 which has the t
0149F0: 6F 70 20 62 69 74 20 73 65 74 2E 20 20 49 6E 20 op bit set. In
014A00: 66 61 63 74 2C 20 61 6C 6C 20 74 68 65 20 6E 65 fact, all the ne
014A10: 67 61 74 69 76 65 20 6E 75 6D 62 65 72 73 20 68 gative numbers h
014A20: 61 76 65 0D 0A 20 20 20 6F 6E 65 20 69 6E 20 74 ave.. one in t
014A30: 68 65 20 74 6F 70 20 62 69 74 2C 20 61 6E 64 20 he top bit, and
014A40: 61 6C 6C 20 74 68 65 20 70 6F 73 69 74 69 76 65 all the positive
014A50: 20 6E 75 6D 62 65 72 73 20 68 61 76 65 20 74 68 numbers have th
014A60: 65 20 74 6F 70 20 62 69 74 20 63 6C 65 61 72 2E e top bit clear.
014A70: 0D 0A 0D 0A 20 20 20 41 20 67 6F 6F 64 20 20 61 .... A good a
014A80: 6E 61 6C 6F 67 79 20 20 66 6F 72 20 20 74 77 6F nalogy for two
014A90: 27 73 20 20 63 6F 6D 70 6C 65 6D 65 6E 74 20 20 's complement
014AA0: 61 72 69 74 68 6D 65 74 69 63 20 20 69 73 20 20 arithmetic is
014AB0: 74 68 65 20 20 63 6C 6F 63 6B 20 20 66 61 63 65 the clock face
014AC0: 2E 0D 0A 20 20 20 53 6F 6D 65 74 69 6D 65 73 20 ... Sometimes
014AD0: 77 65 20 63 6F 75 6E 74 20 66 72 6F 6D 20 31 31 we count from 11
014AE0: 3A 30 30 20 74 6F 20 20 31 31 3A 35 39 2C 20 20 :00 to 11:59,
014AF0: 61 6E 64 20 20 68 61 76 65 20 20 75 70 20 74 6F and have up to
014B00: 31 32 29 3A 57 48 49 4C 45 20 4D 49 44 24 28 66 12):WHILE MID$(f
014B10: 24 2C 39 2C 31 29 3C 3E 22 2E 22 20 41 4E 44 20 $,9,1)<>"." AND
014B20: 4D 49 44 24 28 66 24 2C 38 2C 31 29 3C 3E 22 3A MID$(f$,8,1)<>":
014B30: 22 3A 4D 4F 56 45 0D 0A 20 20 20 20 78 2C 79 3A ":MOVE.. x,y:
014B40: 50 52 49 4E 54 20 43 48 52 24 28 32 31 35 29 3B PRINT CHR$(215);
014B50: 3A 47 4F 53 55 42 20 38 30 0D 0A 34 30 20 57 48 :GOSUB 80..40 WH
014B60: 49 4C 45 20 49 4E 4B 45 59 28 34 37 29 2B 49 4E ILE INKEY(47)+IN
014B70: 4B 45 59 28 31 38 29 2B 49 4E 4B 45 59 28 39 29 KEY(18)+INKEY(9)
014B80: 3D 2D 33 3A 62 3D 78 3A 63 3D 79 3A 78 3D 4D 41 =-3:b=x:c=y:x=MA
014B90: 58 28 30 2C 4D 49 4E 28 36 33 32 2C 78 2B 33 2A X(0,MIN(632,x+3*
014BA0: 28 28 49 4E 4B 45 59 28 38 29 0D 0A 20 20 20 3E ((INKEY(8).. >
014BB0: 2D 31 29 2D 28 49 4E 4B 45 59 28 31 29 3E 2D 31 -1)-(INKEY(1)>-1
014BC0: 29 29 2A 28 34 2B 33 2A 28 49 4E 4B 45 59 28 32 ))*(4+3*(INKEY(2
014BD0: 31 29 3D 2D 31 29 29 29 29 3A 79 3D 4D 41 58 28 1)=-1)))):y=MAX(
014BE0: 31 35 2C 4D 49 4E 28 33 39 39 2C 79 2B 33 2A 28 15,MIN(399,y+3*(
014BF0: 28 49 4E 4B 45 59 28 32 29 3E 2D 0D 0A 20 20 20 (INKEY(2)>-..
014C00: 31 29 2D 28 49 4E 4B 45 59 28 30 29 3E 2D 31 29 1)-(INKEY(0)>-1)
014C10: 29 2A 28 28 49 4E 4B 45 59 28 32 31 29 3D 2D 31 )*((INKEY(21)=-1
014C20: 29 2B 32 29 29 29 3A 4D 4F 56 45 20 62 2C 63 3A )+2))):MOVE b,c:
014C30: 50 52 49 4E 54 20 43 48 52 24 28 32 31 35 29 3B PRINT CHR$(215);
014C40: 3A 4D 4F 56 45 20 78 2C 79 3A 50 52 0D 0A 20 20 :MOVE x,y:PR..
014C50: 20 49 4E 54 20 43 48 52 24 28 32 31 35 29 3B 3A INT CHR$(215);:
014C60: 57 45 4E 44 0D 0A 35 30 20 47 4F 53 55 42 20 38 WEND..50 GOSUB 8
014C70: 30 3A 4D 4F 56 45 20 78 2C 79 3A 50 52 49 4E 54 0:MOVE x,y:PRINT
014C80: 20 43 48 52 24 28 32 31 35 29 3B 3A 70 3D 28 78 CHR$(215);:p=(x
014C90: 5C 31 36 30 29 2A 32 30 2B 31 3A 71 3D 28 34 30 \160)*20+1:q=(40
014CA0: 30 2D 79 29 5C 31 36 2B 31 3A 4C 4F 43 41 54 45 0-y)\16+1:LOCATE
014CB0: 20 70 2C 71 3A 0D 0A 20 20 20 43 41 4C 4C 20 61 p,q:.. CALL a
014CC0: 2C 40 66 24 3A 57 45 4E 44 3A 54 41 47 4F 46 46 ,@f$:WEND:TAGOFF
014CD0: 3A 49 46 20 4D 49 44 24 28 66 24 2C 39 2C 31 29 :IF MID$(f$,9,1)
014CE0: 3D 22 2E 22 20 54 48 45 4E 20 4D 45 4D 4F 52 59 ="." THEN MEMORY
014CF0: 20 48 49 4D 45 4D 2B 33 34 3A 43 41 4C 4C 20 26 HIMEM+34:CALL &
014D00: 20 35 39 20 6D 69 6E 75 74 65 73 20 66 72 6F 6D 59 minutes from
014D10: 0D 0A 20 20 20 65 6C 65 76 65 6E 20 6F 27 63 6C .. eleven o'cl
014D20: 6F 63 6B 2E 20 20 4F 72 20 77 65 20 63 61 6E 20 ock. Or we can
014D30: 20 6C 6F 6F 6B 20 20 61 74 20 20 69 74 20 20 61 look at it a
014D40: 6E 6F 74 68 65 72 20 20 77 61 79 20 61 6E 64 20 nother way and
014D50: 61 66 74 65 72 20 68 61 6C 66 20 70 61 73 74 0D after half past.
014D60: 0A 20 20 20 65 6C 65 76 65 6E 20 77 65 20 73 74 . eleven we st
014D70: 61 72 74 20 73 61 79 69 6E 67 20 32 39 20 6D 69 art saying 29 mi
014D80: 6E 75 74 65 73 20 74 6F 20 20 74 77 65 6C 76 65 nutes to twelve
014D90: 2E 20 20 35 39 20 6D 69 6E 75 74 65 73 20 70 61 . 59 minutes pa
014DA0: 73 74 20 65 6C 65 76 65 6E 20 74 68 65 6E 0D 0A st eleven then..
014DB0: 20 20 20 62 65 63 6F 6D 65 73 20 31 20 6D 69 6E becomes 1 min
014DC0: 75 74 65 20 74 6F 20 20 74 77 65 6C 76 65 20 20 ute to twelve
014DD0: 6F 72 20 20 69 66 20 20 79 6F 75 20 20 70 72 65 or if you pre
014DE0: 66 65 72 2C 20 20 74 77 65 6C 76 65 20 20 6F 27 fer, twelve o'
014DF0: 63 6C 6F 63 6B 20 6D 69 6E 75 73 20 31 0D 0A 20 clock minus 1..
014E00: 20 20 6D 69 6E 75 74 65 2E 0D 0A 0D 0A 20 20 20 minute.....
014E10: 4D 6F 73 74 20 6F 66 20 74 68 65 20 74 69 6D 65 Most of the time
014E20: 20 79 6F 75 20 64 6F 20 6E 6F 74 20 20 6E 65 65 you do not nee
014E30: 64 20 20 74 6F 20 6B 6E 6F 77 20 61 6E 79 74 68 d to know anyth
014E40: 69 6E 67 20 61 62 6F 75 74 20 68 6F 77 20 74 68 ing about how th
014E50: 65 20 63 6F 6D 70 75 74 65 72 0D 0A 20 20 20 73 e computer.. s
014E60: 74 6F 72 65 73 20 6E 75 6D 62 65 72 73 2C 20 62 tores numbers, b
014E70: 75 74 20 6F 63 63 61 73 69 6F 6E 61 6C 6C 79 20 ut occasionally
014E80: 69 74 20 69 73 20 20 75 73 65 66 75 6C 2E 20 20 it is useful.
014E90: 20 49 66 20 20 79 6F 75 20 77 61 6E 74 20 74 6F If you want to
014EA0: 20 66 69 6E 64 20 6F 75 74 0D 0A 20 20 20 77 68 find out.. wh
014EB0: 61 74 20 2D 32 33 20 69 73 20 69 6E 20 62 69 6E at -23 is in bin
014EC0: 61 72 79 2C 20 74 68 65 20 20 65 61 73 69 65 73 ary, the easies
014ED0: 74 20 20 74 68 69 6E 67 20 20 74 6F 20 64 6F 20 t thing to do
014EE0: 69 73 20 74 79 70 65 20 50 52 49 4E 54 20 42 49 is type PRINT BI
014EF0: 4E 24 28 2D 32 33 29 2C 0D 0A 20 20 20 62 75 74 N$(-23),.. but
014F00: 42 42 42 41 3A 4D 0D 0A 20 20 20 4F 44 45 20 31 BBBA:M.. ODE 1
014F10: 3A 52 55 4E 20 66 24 0D 0A 36 30 20 75 3D 31 36 :RUN f$..60 u=16
014F20: 3A 57 48 49 4C 45 20 75 20 41 4E 44 20 2D 31 36 :WHILE u AND -16
014F30: 3A 4C 4F 43 41 54 45 20 31 2C 76 3A 50 52 49 4E :LOCATE 1,v:PRIN
014F40: 54 22 55 73 65 72 3A 20 22 2B 43 48 52 24 28 32 T"User: "+CHR$(2
014F50: 30 29 3B 3A 4C 49 4E 45 20 49 4E 50 55 54 20 75 0);:LINE INPUT u
014F60: 24 3A 75 3D 56 41 4C 28 0D 0A 20 20 20 75 24 29 $:u=VAL(.. u$)
014F70: 3A 57 45 4E 44 3A 49 46 20 75 24 3C 3E 22 22 20 :WEND:IF u$<>""
014F80: 54 48 45 4E 20 7C 55 53 45 52 2C 75 3A 43 4C 53 THEN |USER,u:CLS
014F90: 3A 43 41 54 3A 76 3D 56 50 4F 53 28 23 30 29 0D :CAT:v=VPOS(#0).
014FA0: 0A 37 30 20 57 45 4E 44 0D 0A 38 30 20 57 48 49 .70 WEND..80 WHI
014FB0: 4C 45 20 49 4E 4B 45 59 28 34 37 29 2B 49 4E 4B LE INKEY(47)+INK
014FC0: 45 59 28 31 38 29 2B 49 4E 4B 45 59 28 39 29 3E EY(18)+INKEY(9)>
014FD0: 2D 33 3A 57 45 4E 44 3A 57 48 49 4C 45 20 49 4E -3:WEND:WHILE IN
014FE0: 4B 45 59 24 3C 3E 22 22 3A 57 45 4E 44 3A 52 45 KEY$<>"":WEND:RE
014FF0: 54 55 52 4E 0D 0A 0D 0A 20 20 20 46 69 67 75 72 TURN.... Figur
015000: 65 20 31 0D 0A 1A 20 20 20 20 24 24 24 FF 00 FF e 1... $$$...
015010: 50 41 54 43 48 20 35 0D 0A 20 20 20 42 79 20 53 PATCH 5.. By S
015020: 74 65 70 68 65 6E 20 61 6E 64 20 4D 61 74 74 68 tephen and Matth
015030: 65 77 20 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A 20 ew Phillips....
015040: 20 20 57 68 61 74 20 67 61 73 74 72 6F 6E 6F 6D What gastronom
015050: 69 63 20 64 65 6C 69 67 68 74 73 20 61 77 61 69 ic delights awai
015060: 74 20 75 73 20 20 66 6F 72 20 20 74 68 65 20 20 t us for the
015070: 66 69 6E 61 6C 20 20 63 6F 75 72 73 65 3F 20 20 final course?
015080: C0 60 60 D6 00 06 00 18 00 18 66 7C CC 7E 60 00 .``.......f|.~`.
015090: 00 66 66 00 C0 18 18 66 7E 00 66 7E 18 18 7C 66 .ff....f~.f~..|f
0150A0: 66 00 00 CC 7C 66 66 7C 60 66 00 18 06 06 FE 00 f...|ff|`f......
0150B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0150C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0150D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0150E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0150F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
015100: 20 69 66 20 79 6F 75 20 72 65 61 6C 6C 79 20 77 if you really w
015110: 61 6E 74 20 74 6F 20 6B 6E 6F 77 2C 20 74 68 69 ant to know, thi
015120: 73 20 69 73 20 68 6F 77 20 74 6F 20 64 6F 20 69 s is how to do i
015130: 74 20 62 79 20 68 61 6E 64 3A 0D 0A 0D 0A 20 20 t by hand:....
015140: 20 31 2E 20 57 72 69 74 65 20 64 6F 77 6E 20 74 1. Write down t
015150: 68 65 20 70 6F 73 69 74 69 76 65 20 6E 75 6D 62 he positive numb
015160: 65 72 20 69 6E 20 62 69 6E 61 72 79 2E 0D 0A 20 er in binary...
015170: 20 20 32 2E 20 54 61 6B 65 20 74 68 65 20 63 6F 2. Take the co
015180: 6D 70 6C 65 6D 65 6E 74 20 28 63 68 61 6E 67 65 mplement (change
015190: 20 65 61 63 68 20 31 20 74 6F 20 30 20 61 6E 64 each 1 to 0 and
0151A0: 20 65 61 63 68 20 30 20 74 6F 20 31 29 2E 0D 0A each 0 to 1)...
0151B0: 20 20 20 33 2E 20 41 64 64 20 6F 6E 20 6F 6E 65 3. Add on one
0151C0: 2E 0D 0A 0D 0A 20 20 20 46 6F 72 20 65 78 61 6D ..... For exam
0151D0: 70 6C 65 20 77 69 74 68 20 2D 32 33 3A 0D 0A 0D ple with -23:...
0151E0: 0A 20 20 20 32 33 20 69 6E 20 62 69 6E 61 72 79 . 23 in binary
0151F0: 3A 20 20 30 30 30 30 30 30 30 30 30 30 30 31 30 : 0000000000010
015200: 31 31 31 0D 0A 20 20 20 43 6F 6D 70 6C 65 6D 65 111.. Compleme
015210: 6E 74 3A 20 20 20 20 31 31 31 31 31 31 31 31 31 nt: 111111111
015220: 31 31 30 31 30 30 30 0D 0A 20 20 20 41 64 64 20 1101000.. Add
015230: 6F 6E 20 6F 6E 65 3A 20 20 20 20 31 31 31 31 31 on one: 11111
015240: 31 31 31 31 31 31 30 31 30 30 31 0D 0A 0D 0A 20 11111101001....
015250: 20 20 73 6F 20 2D 32 33 20 69 73 20 31 31 31 31 so -23 is 1111
015260: 31 31 31 31 31 31 31 30 31 30 30 31 2E 0D 0A 0D 111111101001....
015270: 0A 20 20 20 49 66 20 79 6F 75 20 61 72 65 20 66 . If you are f
015280: 65 65 6C 69 6E 67 20 72 65 61 6C 6C 79 20 20 6B eeling really k
015290: 65 65 6E 20 20 6F 6E 20 20 6D 61 74 68 73 20 20 een on maths
0152A0: 68 6F 6D 65 77 6F 72 6B 2C 20 79 6F 75 20 63 6F homework, you co
0152B0: 75 6C 64 20 74 72 79 20 61 64 64 69 6E 67 0D 0A uld try adding..
0152C0: 20 20 20 74 6F 67 65 74 68 65 72 20 32 33 20 61 together 23 a
0152D0: 6E 64 20 2D 32 33 20 69 6E 20 62 69 6E 61 72 79 nd -23 in binary
0152E0: 2C 20 20 6A 75 73 74 20 20 74 6F 20 20 63 68 65 , just to che
0152F0: 63 6B 20 20 74 68 61 74 20 79 6F 75 20 67 65 74 ck that you get
015300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0153A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0153B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0153C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0153D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0153E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0153F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0154A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0154B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0154C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0154D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0154E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0154F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
015500: 20 6E 6F 75 67 68 74 2E 20 20 59 6F 75 0D 0A 20 nought. You..
015510: 20 20 77 69 6C 6C 20 61 63 74 75 61 6C 6C 79 20 will actually
015520: 67 65 74 20 31 20 77 69 74 68 20 73 69 78 74 65 get 1 with sixte
015530: 65 6E 20 7A 65 72 6F 73 20 61 66 74 65 72 20 20 en zeros after
015540: 69 74 2C 20 62 75 74 20 61 73 20 77 65 20 63 61 it, but as we ca
015550: 6E 20 6F 6E 6C 79 20 73 74 6F 72 65 0D 0A 20 20 n only store..
015560: 20 73 69 78 74 65 65 6E 20 62 69 74 73 20 69 6E sixteen bits in
015570: 20 6F 75 72 20 69 6E 74 65 67 65 72 20 76 61 72 our integer var
015580: 69 61 62 6C 65 73 2C 20 69 74 27 73 20 61 73 20 iables, it's as
015590: 67 6F 6F 64 20 61 73 20 6E 6F 75 67 68 74 20 72 good as nought r
0155A0: 65 61 6C 6C 79 2E 0D 0A 0D 0A 20 20 20 43 4F 46 eally..... COF
0155B0: 46 45 45 20 54 49 4D 45 0D 0A 20 20 20 57 65 20 FEE TIME.. We
0155C0: 68 6F 70 65 20 74 68 61 74 20 74 68 65 72 65 20 hope that there
0155D0: 69 73 6E 27 74 20 61 6E 79 74 68 69 6E 67 20 6D isn't anything m
0155E0: 6F 72 65 20 74 6F 20 73 61 79 20 61 62 6F 75 74 ore to say about
0155F0: 20 74 68 61 74 20 70 72 6F 67 72 61 6D 2E 20 20 that program.
015600: 49 74 20 6D 75 73 74 0D 0A 20 20 20 62 65 20 71 It must.. be q
015610: 75 69 74 65 20 61 20 72 65 63 6F 72 64 20 74 61 uite a record ta
015620: 6B 69 6E 67 20 20 73 69 78 20 20 6D 6F 6E 74 68 king six month
015630: 73 20 20 74 6F 20 20 65 78 70 6C 61 69 6E 20 20 s to explain
015640: 73 75 63 68 20 20 61 20 73 68 6F 72 74 20 70 69 such a short pi
015650: 65 63 65 20 6F 66 0D 0A 20 20 20 42 41 53 49 43 ece of.. BASIC
015660: 2E 20 20 57 69 74 68 20 61 20 62 69 74 20 6F 66 . With a bit of
015670: 20 6C 75 63 6B 20 20 79 6F 75 20 20 6E 6F 77 20 luck you now
015680: 20 68 61 76 65 20 20 61 20 20 75 73 65 66 75 6C have a useful
015690: 20 75 74 69 6C 69 74 79 20 61 6E 64 20 61 20 62 utility and a b
0156A0: 65 74 74 65 72 0D 0A 20 20 20 75 6E 64 65 72 73 etter.. unders
0156B0: 74 61 6E 64 69 6E 67 20 6F 66 20 73 6F 6D 65 20 tanding of some
0156C0: 6F 66 20 74 68 65 20 6D 6F 72 65 20 20 61 64 76 of the more adv
0156D0: 61 6E 63 65 64 20 20 74 72 69 63 6B 73 20 20 6F anced tricks o
0156E0: 6E 65 20 20 63 61 6E 20 67 65 74 20 75 70 20 74 ne can get up t
0156F0: 6F 20 69 6E 0D 0A 20 20 20 42 41 53 49 43 2E 20 o in.. BASIC.
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 C8 02 00 00 00 02 ......N.........
015720: 12 00 C4 02 00 00 00 02 12 00 C9 02 00 00 00 02 ................
015730: 12 00 C5 02 00 00 00 02 12 00 C1 02 00 00 00 02 ................
015740: 12 00 C6 02 00 00 00 02 12 00 C2 02 00 00 00 02 ................
015750: 12 00 C7 02 00 00 00 02 12 00 C3 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: 6D 65 6E 74 20 20 62 79 20 20 73 65 74 74 69 6E ment by settin
015810: 67 20 69 74 20 74 6F 20 7A 65 72 6F 2E 20 20 57 g it to zero. W
015820: 65 20 77 69 6C 6C 20 64 6F 0D 0A 20 20 20 73 6F e will do.. so
015830: 6D 65 20 65 78 61 6D 70 6C 65 73 20 6F 66 20 77 me examples of w
015840: 68 61 74 20 69 74 20 69 73 20 75 73 65 66 75 6C hat it is useful
015850: 20 66 6F 72 20 6C 61 74 65 72 2E 0D 0A 0D 0A 20 for later.....
015860: 20 20 53 49 5A 49 4E 47 20 49 54 20 55 50 0D 0A SIZING IT UP..
015870: 20 20 20 4F 6E 20 6C 69 6E 65 20 32 30 20 6D 63 On line 20 mc
015880: 6F 6C 20 64 65 74 65 72 6D 69 6E 65 73 20 74 68 ol determines th
015890: 65 20 20 63 6F 6C 6F 75 72 20 20 6F 66 20 20 74 e colour of t
0158A0: 68 65 20 20 6D 65 6E 75 20 20 62 61 72 2E 20 20 he menu bar.
0158B0: 49 66 20 79 6F 75 20 68 61 76 65 20 61 0D 0A 20 If you have a..
0158C0: 20 20 62 61 63 6B 67 72 6F 75 6E 64 20 6F 66 20 background of
0158D0: 50 41 50 45 52 20 30 2C 20 74 68 65 6E 20 6D 63 PAPER 0, then mc
0158E0: 6F 6C 20 73 68 6F 75 6C 64 20 62 65 20 20 73 65 ol should be se
0158F0: 74 20 74 6F 20 74 68 65 20 50 45 4E 20 63 6F 6C t to the PEN col
015900: 6F 75 72 20 79 6F 75 20 77 61 6E 74 0D 0A 20 20 our you want..
015910: 20 66 6F 72 20 74 68 65 20 6D 65 6E 75 20 62 61 for the menu ba
015920: 72 2E 20 20 41 73 20 74 68 65 20 6D 65 6E 75 20 r. As the menu
015930: 20 62 61 72 20 20 69 73 20 20 70 72 69 6E 74 65 bar is printe
015940: 64 20 75 70 20 75 73 69 6E 67 20 58 4F 52 20 67 d up using XOR g
015950: 72 61 70 68 69 63 73 2C 20 69 66 0D 0A 20 20 20 raphics, if..
015960: 79 6F 75 20 68 61 76 65 20 61 20 64 69 66 66 65 you have a diffe
015970: 72 65 6E 74 20 62 61 63 6B 67 72 6F 75 6E 64 20 rent background
015980: 74 68 69 6E 67 73 20 61 72 65 20 20 6D 6F 72 65 things are more
015990: 20 63 6F 6D 70 6C 69 63 61 74 65 64 2E 20 20 49 complicated. I
0159A0: 66 20 78 20 69 73 20 74 68 65 0D 0A 20 20 20 62 f x is the.. b
0159B0: 61 63 6B 67 72 6F 75 6E 64 20 70 65 6E 2C 20 61 ackground pen, a
0159C0: 6E 64 20 79 20 74 68 65 20 70 65 6E 20 79 6F 75 nd y the pen you
0159D0: 20 77 61 6E 74 20 20 66 6F 72 20 74 68 65 20 6D want for the m
0159E0: 65 6E 75 20 62 61 72 2C 20 74 68 65 6E 20 6D 63 enu bar, then mc
0159F0: 6F 6C 20 73 68 6F 75 6C 64 0D 0A 20 20 20 62 65 ol should.. be
015A00: 61 73 69 73 20 6F 66 20 20 73 65 76 65 72 61 6C asis of several
015A10: 20 20 65 78 61 6D 70 6C 65 20 20 70 72 6F 67 72 example progr
015A20: 61 6D 73 20 20 6F 76 65 72 20 20 74 68 65 20 20 ams over the
015A30: 6E 65 78 74 20 66 65 77 20 61 72 74 69 63 6C 65 next few article
015A40: 73 2E 0D 0A 20 20 20 3C 3C 54 68 69 73 20 69 73 s... <<This is
015A50: 20 73 61 76 65 64 20 6F 6E 20 74 68 65 20 64 69 saved on the di
015A60: 73 63 20 61 73 20 4D 45 4E 55 53 55 42 3E 3E 0D sc as MENUSUB>>.
015A70: 0A 0D 0A 20 20 20 49 6E 20 66 61 63 74 20 74 68 ... In fact th
015A80: 65 20 73 75 62 72 6F 75 74 69 6E 65 73 20 77 69 e subroutines wi
015A90: 6C 6C 20 73 71 75 61 73 68 20 64 6F 77 6E 20 20 ll squash down
015AA0: 69 6E 74 6F 20 6A 75 73 74 20 74 77 6F 20 6C 69 into just two li
015AB0: 6E 65 73 2E 20 20 4C 69 6E 65 73 20 31 30 30 30 nes. Lines 1000
015AC0: 0D 0A 20 20 20 74 6F 20 31 30 30 39 20 63 61 6E .. to 1009 can
015AD0: 20 61 6C 6C 20 62 65 20 74 79 70 65 64 20 69 6E all be typed in
015AE0: 20 20 74 6F 67 65 74 68 65 72 20 20 61 73 20 20 together as
015AF0: 6C 69 6E 65 20 20 31 30 30 30 2C 20 61 6E 64 20 line 1000, and
015B00: 74 68 65 20 72 65 73 74 20 6F 66 20 74 68 65 0D the rest of the.
015B10: 0A 20 20 20 6C 69 6E 65 73 20 63 61 6E 20 61 6C . lines can al
015B20: 6C 20 62 65 20 74 79 70 65 64 20 69 6E 20 61 73 l be typed in as
015B30: 20 6C 69 6E 65 20 20 31 30 31 30 2E 20 20 41 6C line 1010. Al
015B40: 74 68 6F 75 67 68 20 69 74 20 77 6F 75 6C 64 20 though it would
015B50: 68 61 76 65 20 62 65 65 6E 20 6D 6F 72 65 0D 0A have been more..
015B60: 20 20 20 69 6D 70 72 65 73 73 69 76 65 20 74 6F impressive to
015B70: 20 73 68 6F 77 20 6F 66 66 20 77 69 74 68 20 61 show off with a
015B80: 20 74 77 6F 2D 6C 69 6E 65 20 20 6D 65 6E 75 20 two-line menu
015B90: 20 73 79 73 74 65 6D 2C 20 77 65 20 68 61 76 65 system, we have
015BA0: 20 6C 69 73 74 65 64 20 69 74 20 69 6E 0D 0A 20 listed it in..
015BB0: 20 20 65 69 67 68 74 65 65 6E 20 6C 69 6E 65 73 eighteen lines
015BC0: 20 74 6F 20 6D 61 6B 65 20 69 74 20 65 61 73 69 to make it easi
015BD0: 65 72 20 74 6F 20 66 6F 6C 6C 6F 77 2E 0D 0A 0D er to follow....
015BE0: 0A 20 20 20 4F 6E 63 65 20 79 6F 75 20 68 61 76 . Once you hav
015BF0: 65 20 73 61 76 65 64 20 74 68 65 20 20 73 75 62 e saved the sub
015C00: 20 73 65 74 20 74 6F 0D 0A 0D 0A 20 20 20 20 20 set to....
015C10: 20 20 20 20 20 20 78 20 58 4F 52 20 79 0D 0A 0D x XOR y...
015C20: 0A 20 20 20 54 68 65 20 72 65 73 74 20 6F 66 20 . The rest of
015C30: 74 68 65 20 76 61 72 69 61 62 6C 65 73 20 6F 6E the variables on
015C40: 20 6C 69 6E 65 20 32 30 20 20 61 72 65 20 20 74 line 20 are t
015C50: 6F 20 64 6F 20 77 69 74 68 20 77 68 65 72 65 20 o do with where
015C60: 74 68 65 20 6D 65 6E 75 20 69 73 20 6F 6E 0D 0A the menu is on..
015C70: 20 20 20 73 63 72 65 65 6E 20 61 6E 64 20 68 6F screen and ho
015C80: 77 20 62 69 67 20 74 68 65 20 6D 65 6E 75 20 62 w big the menu b
015C90: 61 72 20 73 68 6F 75 6C 64 20 62 65 2E 20 20 46 ar should be. F
015CA0: 6F 72 20 65 78 61 6D 70 6C 65 20 77 65 20 63 6F or example we co
015CB0: 75 6C 64 20 70 72 69 6E 74 20 74 68 65 0D 0A 20 uld print the..
015CC0: 20 20 6D 65 6E 75 20 6D 6F 72 65 20 73 70 61 63 menu more spac
015CD0: 65 64 20 6F 75 74 20 62 79 20 61 6C 74 65 72 69 ed out by alteri
015CE0: 6E 67 20 6C 69 6E 65 20 35 30 3A 0D 0A 0D 0A 20 ng line 50:....
015CF0: 20 20 35 30 20 46 4F 52 20 78 3D 31 20 54 4F 20 50 FOR x=1 TO
015D00: 6D 63 68 3A 50 52 49 4E 54 3A 50 52 49 4E 54 22 mch:PRINT:PRINT"
015D10: 20 20 49 74 65 6D 22 78 3A 4E 45 58 54 0D 0A 0D Item"x:NEXT...
015D20: 0A 20 20 20 52 75 6E 20 74 68 65 20 70 72 6F 67 . Run the prog
015D30: 72 61 6D 20 61 67 61 69 6E 2E 20 20 41 6C 74 68 ram again. Alth
015D40: 6F 75 67 68 20 74 68 65 20 6D 65 6E 75 20 74 65 ough the menu te
015D50: 78 74 20 69 73 20 73 70 72 65 61 64 20 6F 75 74 xt is spread out
015D60: 2C 20 74 68 65 20 6D 65 6E 75 20 62 61 72 0D 0A , the menu bar..
015D70: 20 20 20 69 73 20 73 74 69 6C 6C 20 69 6E 20 74 is still in t
015D80: 68 65 20 73 61 6D 65 20 70 6F 73 69 74 69 6F 6E he same position
015D90: 20 61 73 20 20 62 65 66 6F 72 65 2E 20 20 54 6F as before. To
015DA0: 20 63 6F 72 72 65 63 74 20 74 68 69 73 20 79 6F correct this yo
015DB0: 75 20 63 6F 75 6C 64 20 61 6C 74 65 72 0D 0A 20 u could alter..
015DC0: 20 20 6C 69 6E 65 20 32 30 20 61 73 20 66 6F 6C line 20 as fol
015DD0: 6C 6F 77 73 3A 0D 0A 0D 0A 20 20 20 32 30 20 6D lows:.... 20 m
015DE0: 63 6F 6C 3D 31 3A 6D 73 70 3D 33 32 3A 6D 78 3D col=1:msp=32:mx=
015DF0: 32 34 3A 6D 79 3D 33 39 39 2D 33 2A 31 36 2B 38 24:my=399-3*16+8
015E00: 72 6F 75 74 69 6E 65 73 2C 20 20 79 6F 75 20 20 routines, you
015E10: 63 61 6E 20 20 74 68 65 6E 20 20 74 79 70 65 20 can then type
015E20: 69 6E 20 74 68 65 20 65 61 72 6C 69 65 72 0D 0A in the earlier..
015E30: 20 20 20 6C 69 6E 65 73 20 69 6E 20 74 68 65 20 lines in the
015E40: 6C 69 73 74 69 6E 67 20 61 6E 64 20 72 75 6E 20 listing and run
015E50: 69 74 20 74 6F 20 73 65 65 20 74 68 65 20 66 69 it to see the fi
015E60: 72 73 74 20 65 78 61 6D 70 6C 65 2E 20 20 3C 3C rst example. <<
015E70: 54 68 69 73 20 69 73 20 73 61 76 65 64 0D 0A 20 This is saved..
015E80: 20 20 61 73 20 4D 45 4E 55 45 58 31 2E 42 41 53 as MENUEX1.BAS
015E90: 3E 3E 0D 0A 0D 0A 20 20 20 48 4F 57 20 44 4F 45 >>.... HOW DOE
015EA0: 53 20 49 54 20 57 4F 52 4B 20 54 48 45 4E 3F 0D S IT WORK THEN?.
015EB0: 0A 20 20 20 44 6F 6E 27 74 20 77 6F 72 72 79 20 . Don't worry
015EC0: 61 62 6F 75 74 20 68 6F 77 20 74 68 65 20 20 73 about how the s
015ED0: 75 62 72 6F 75 74 69 6E 65 73 20 20 77 6F 72 6B ubroutines work
015EE0: 20 20 74 6F 20 20 73 74 61 72 74 20 77 69 74 68 to start with
015EF0: 2E 20 20 49 74 20 69 73 20 71 75 69 74 65 0D 0A . It is quite..
015F00: 20 20 20 65 61 73 79 20 74 6F 20 75 73 65 20 74 easy to use t
015F10: 68 65 6D 20 69 6E 20 70 72 6F 67 72 61 6D 73 20 hem in programs
015F20: 20 77 69 74 68 6F 75 74 20 20 6B 6E 6F 77 69 6E without knowin
015F30: 67 20 20 68 6F 77 20 20 74 68 65 79 20 64 6F 20 g how they do
015F40: 74 68 65 20 77 6F 72 6B 2E 20 20 49 6E 0D 0A 20 the work. In..
015F50: 20 20 66 61 63 74 20 74 68 61 74 20 69 73 20 6F fact that is o
015F60: 6E 65 20 6F 66 20 74 68 65 20 67 6F 6F 64 20 20 ne of the good
015F70: 74 68 69 6E 67 73 20 61 62 6F 75 74 20 73 75 62 things about sub
015F80: 72 6F 75 74 69 6E 65 73 2E 20 20 4F 6E 63 65 20 routines. Once
015F90: 79 6F 75 20 68 61 76 65 20 6F 6E 65 0D 0A 20 20 you have one..
015FA0: 20 74 68 61 74 20 77 6F 72 6B 73 20 61 6E 64 20 that works and
015FB0: 64 6F 65 73 20 74 68 65 20 20 6A 6F 62 20 20 79 does the job y
015FC0: 6F 75 20 20 77 61 6E 74 20 20 64 6F 69 6E 67 2C ou want doing,
015FD0: 20 20 79 6F 75 20 20 73 68 6F 75 6C 64 6E 27 74 you shouldn't
015FE0: 20 6E 65 65 64 20 74 6F 20 62 65 0D 0A 20 20 20 need to be..
015FF0: 62 6F 74 68 65 72 65 64 20 77 69 74 68 20 68 6F bothered with ho
016000: 23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61 #Programmers' Pa
016010: 74 63 68 20 36 20 2D 20 57 41 43 43 49 20 31 31 tch 6 - WACCI 11
016020: 35 2C 20 41 75 67 2F 53 65 70 74 20 31 39 39 37 5, Aug/Sept 1997
016030: 2C 20 70 2E 20 32 36 2D 32 37 0D 0A 20 20 20 50 , p. 26-27.. P
016040: 52 4F 47 52 41 4D 4D 45 52 53 27 20 50 41 54 43 ROGRAMMERS' PATC
016050: 48 20 36 0D 0A 20 20 20 42 79 20 53 74 65 70 68 H 6.. By Steph
016060: 65 6E 20 61 6E 64 20 4D 61 74 74 68 65 77 20 50 en and Matthew P
016070: 68 69 6C 6C 69 70 73 0D 0A 0D 0A 20 20 20 22 57 hillips.... "W
016080: 68 61 74 27 73 20 6F 6E 20 74 68 65 20 6D 65 6E hat's on the men
016090: 75 20 66 6F 72 20 74 68 69 73 20 6D 6F 6E 74 68 u for this month
0160A0: 3F 22 2C 20 20 77 65 20 20 68 65 61 72 20 79 6F ?", we hear yo
0160B0: 75 20 63 72 79 2E 20 20 57 65 6C 6C 2C 20 69 66 u cry. Well, if
0160C0: 20 79 6F 75 20 68 61 64 0D 0A 20 20 20 6B 6E 6F you had.. kno
0160D0: 77 6E 20 77 68 61 74 20 74 68 65 20 61 72 74 69 wn what the arti
0160E0: 63 6C 65 20 20 77 61 73 20 20 67 6F 69 6E 67 20 cle was going
0160F0: 20 74 6F 20 20 62 65 20 20 6F 6E 2C 20 20 79 6F to be on, yo
016100: 75 20 20 77 6F 75 6C 64 20 20 62 65 20 61 73 68 u would be ash
016110: 61 6D 65 64 20 61 74 0D 0A 20 20 20 70 68 72 61 amed at.. phra
016120: 73 69 6E 67 20 74 68 65 20 71 75 65 73 74 69 6F sing the questio
016130: 6E 20 6C 69 6B 65 20 74 68 61 74 2C 20 61 73 20 n like that, as
016140: 69 74 20 20 69 73 20 73 75 63 68 20 61 20 70 72 it is such a pr
016150: 65 64 69 63 74 61 62 6C 65 20 70 75 6E 2C 20 61 edictable pun, a
016160: 6E 64 20 6E 6F 74 0D 0A 20 20 20 72 65 61 6C 6C nd not.. reall
016170: 79 20 75 70 20 74 6F 20 74 68 65 20 73 74 61 6E y up to the stan
016180: 64 61 72 64 20 6F 66 20 68 75 6D 6F 75 72 20 20 dard of humour
016190: 77 65 20 20 63 61 6E 20 65 78 70 65 63 74 20 66 we can expect f
0161A0: 72 6F 6D 20 57 41 43 43 49 2E 20 20 42 75 74 20 rom WACCI. But
0161B0: 73 69 6E 63 65 0D 0A 20 20 20 79 6F 75 20 64 69 since.. you di
0161C0: 64 6E 27 74 20 6B 6E 6F 77 2C 20 77 65 27 6C 6C dn't know, we'll
0161D0: 20 70 72 65 74 65 6E 64 20 74 6F 20 66 69 6E 64 pretend to find
0161E0: 20 69 74 20 61 6D 75 73 69 6E 67 20 61 6E 64 20 it amusing and
0161F0: 74 68 65 6E 20 67 65 74 20 6F 6E 20 77 69 74 68 then get on with
016200: 77 20 69 74 20 77 6F 72 6B 73 20 61 6E 79 20 6D w it works any m
016210: 6F 72 65 2E 0D 0A 0D 0A 20 20 20 49 6E 73 74 65 ore..... Inste
016220: 61 64 2C 20 6C 65 74 20 75 73 20 68 61 76 65 20 ad, let us have
016230: 61 20 6C 6F 6F 6B 20 61 74 20 68 6F 77 20 74 68 a look at how th
016240: 65 20 6D 61 69 6E 20 70 72 6F 67 72 61 6D 20 28 e main program (
016250: 6C 69 6E 65 73 20 31 30 20 74 6F 20 39 30 29 20 lines 10 to 90)
016260: 77 6F 72 6B 73 0D 0A 20 20 20 69 6E 20 72 65 6C works.. in rel
016270: 61 74 69 6F 6E 20 74 6F 20 74 68 65 20 20 73 75 ation to the su
016280: 62 72 6F 75 74 69 6E 65 73 2E 20 20 20 4F 75 72 broutines. Our
016290: 20 20 65 78 61 6D 70 6C 65 20 20 70 72 69 6E 74 example print
0162A0: 73 20 20 75 70 20 20 61 20 73 68 6F 72 74 20 6D s up a short m
0162B0: 65 6E 75 2C 0D 0A 20 20 20 61 6C 6C 6F 77 73 20 enu,.. allows
0162C0: 74 68 65 20 75 73 65 72 20 74 6F 20 6D 6F 76 65 the user to move
0162D0: 20 74 68 65 20 6D 65 6E 75 20 62 61 72 20 75 70 the menu bar up
0162E0: 20 61 6E 64 20 64 6F 77 6E 20 77 69 74 68 20 74 and down with t
0162F0: 68 65 20 63 75 72 73 6F 72 20 6B 65 79 73 2C 20 he cursor keys,
016300: 61 6E 64 0D 0A 20 20 20 74 68 65 6E 20 63 68 6F and.. then cho
016310: 6F 73 65 20 61 20 6D 65 6E 75 20 69 74 65 6D 20 ose a menu item
016320: 77 69 74 68 20 74 68 65 20 20 43 4F 50 59 20 20 with the COPY
016330: 6B 65 79 2E 20 20 54 68 65 20 70 72 6F 67 72 61 key. The progra
016340: 6D 20 74 68 65 6E 20 70 72 69 6E 74 73 20 75 70 m then prints up
016350: 20 61 0D 0A 20 20 20 6D 65 73 73 61 67 65 20 74 a.. message t
016360: 65 6C 6C 69 6E 67 20 74 68 65 20 75 73 65 72 20 elling the user
016370: 77 68 69 63 68 20 69 74 65 6D 20 77 61 73 20 73 which item was s
016380: 65 6C 65 63 74 65 64 2E 0D 0A 0D 0A 20 20 20 4C elected..... L
016390: 69 6E 65 73 20 31 30 20 74 6F 20 33 30 20 20 73 ines 10 to 30 s
0163A0: 65 74 20 20 75 70 20 20 73 6F 6D 65 20 20 76 61 et up some va
0163B0: 72 69 61 62 6C 65 73 20 20 77 68 69 63 68 20 20 riables which
0163C0: 74 65 6C 6C 20 20 74 68 65 20 6D 65 6E 75 20 73 tell the menu s
0163D0: 75 62 72 6F 75 74 69 6E 65 0D 0A 20 20 20 69 6D ubroutine.. im
0163E0: 70 6F 72 74 61 6E 74 20 69 6E 66 6F 72 6D 61 74 portant informat
0163F0: 69 6F 6E 20 61 62 6F 75 74 20 74 68 65 20 73 69 ion about the si
016400: 20 74 68 65 0D 0A 20 20 20 61 72 74 69 63 6C 65 the.. article
016410: 2C 20 77 68 69 63 68 20 73 74 72 61 6E 67 65 6C , which strangel
016420: 79 20 69 73 20 61 6C 6C 20 61 62 6F 75 74 20 6D y is all about m
016430: 65 6E 75 73 2E 2E 2E 0D 0A 0D 0A 20 20 20 41 20 enus....... A
016440: 42 52 45 41 54 48 20 4F 46 20 46 52 45 53 48 20 BREATH OF FRESH
016450: 41 49 52 0D 0A 20 20 20 54 6F 20 6D 61 6B 65 20 AIR.. To make
016460: 61 20 63 68 61 6E 67 65 20 66 72 6F 6D 20 77 6F a change from wo
016470: 72 6B 69 6E 67 20 6F 75 72 20 77 61 79 20 74 68 rking our way th
016480: 72 6F 75 67 68 20 61 20 73 69 6E 67 6C 65 20 70 rough a single p
016490: 72 6F 67 72 61 6D 2C 20 77 65 20 74 68 6F 75 67 rogram, we thoug
0164A0: 68 74 0D 0A 20 20 20 77 65 20 77 6F 75 6C 64 20 ht.. we would
0164B0: 70 72 65 73 65 6E 74 20 61 20 75 73 65 66 75 6C present a useful
0164C0: 20 73 75 62 72 6F 75 74 69 6E 65 20 74 68 61 74 subroutine that
0164D0: 20 20 79 6F 75 20 63 61 6E 20 69 6E 63 6F 72 70 you can incorp
0164E0: 6F 72 61 74 65 20 69 6E 20 79 6F 75 72 20 6F 77 orate in your ow
0164F0: 6E 0D 0A 20 20 20 70 72 6F 67 72 61 6D 73 2E 0D n.. programs..
016500: 0A 0D 0A 20 20 20 54 68 65 20 65 61 73 69 65 73 ... The easies
016510: 74 20 77 61 79 20 74 6F 20 6C 65 61 72 6E 20 70 t way to learn p
016520: 72 6F 67 72 61 6D 6D 69 6E 67 20 69 73 20 74 6F rogramming is to
016530: 20 61 6C 74 65 72 20 70 72 6F 67 72 61 6D 73 20 alter programs
016540: 77 72 69 74 74 65 6E 20 62 79 20 6F 74 68 65 72 written by other
016550: 0D 0A 20 20 20 70 65 6F 70 6C 65 2E 20 20 57 68 .. people. Wh
016560: 65 6E 20 79 6F 75 20 67 65 74 20 6D 6F 72 65 20 en you get more
016570: 20 65 78 70 65 72 69 65 6E 63 65 64 20 20 69 6E experienced in
016580: 20 20 61 20 63 6F 6D 70 75 74 65 72 20 6C 61 6E a computer lan
016590: 67 75 61 67 65 2C 20 79 6F 75 20 74 68 65 6E 0D guage, you then.
0165A0: 0A 20 20 20 66 69 6E 64 20 74 68 61 74 20 74 68 . find that th
0165B0: 65 20 65 61 73 69 65 73 74 20 77 61 79 20 74 6F e easiest way to
0165C0: 20 77 72 69 74 65 20 61 20 70 72 6F 67 72 61 6D write a program
0165D0: 20 69 73 20 74 6F 20 61 6C 74 65 72 20 6F 6E 65 is to alter one
0165E0: 20 74 68 61 74 20 79 6F 75 20 68 61 76 65 0D 0A that you have..
0165F0: 20 20 20 77 72 69 74 74 65 6E 20 62 65 66 6F 72 written befor
016600: 7A 65 20 61 6E 64 20 20 70 6F 73 69 74 69 6F 6E ze and position
016610: 20 20 6F 66 20 74 68 65 20 6D 65 6E 75 20 28 73 of the menu (s
016620: 65 65 20 54 61 62 6C 65 0D 0A 20 20 20 32 29 2E ee Table.. 2).
016630: 0D 0A 0D 0A 20 20 20 4F 6E 65 20 6F 66 20 74 68 .... One of th
016640: 65 73 65 20 20 76 61 72 69 61 62 6C 65 73 2C 20 ese variables,
016650: 20 6D 70 2C 20 20 69 73 20 20 61 6C 73 6F 20 20 mp, is also
016660: 75 73 65 64 20 20 62 79 20 20 74 68 65 20 20 73 used by the s
016670: 75 62 72 6F 75 74 69 6E 65 20 74 6F 20 70 61 73 ubroutine to pas
016680: 73 0D 0A 20 20 20 69 6E 66 6F 72 6D 61 74 69 6F s.. informatio
016690: 6E 20 62 61 63 6B 20 74 6F 20 74 68 65 20 6D 61 n back to the ma
0166A0: 69 6E 20 70 72 6F 67 72 61 6D 2E 20 20 49 6E 20 in program. In
0166B0: 6C 69 6E 65 20 31 30 20 6D 70 20 69 73 20 73 65 line 10 mp is se
0166C0: 74 20 74 6F 20 7A 65 72 6F 2C 20 77 68 69 63 68 t to zero, which
0166D0: 0D 0A 20 20 20 6D 61 6B 65 73 20 74 68 65 20 6D .. makes the m
0166E0: 65 6E 75 20 62 61 72 20 73 74 61 72 74 20 6F 66 enu bar start of
0166F0: 66 20 6F 6E 20 74 68 65 20 20 66 69 72 73 74 20 f on the first
016700: 69 74 65 6D 20 6F 6E 20 74 68 65 20 6D 65 6E 75 item on the menu
016710: 2E 20 20 43 68 61 6E 67 65 20 69 74 20 74 6F 0D . Change it to.
016720: 0A 20 20 20 31 2C 20 32 20 6F 72 20 33 20 61 6E . 1, 2 or 3 an
016730: 64 20 69 74 20 77 69 6C 6C 20 73 74 61 72 74 20 d it will start
016740: 6F 66 66 20 6F 6E 20 6F 6E 65 20 6F 66 20 74 68 off on one of th
016750: 65 20 6F 74 68 65 72 20 6D 65 6E 75 20 69 74 65 e other menu ite
016760: 6D 73 2E 20 20 41 66 74 65 72 20 74 68 65 0D 0A ms. After the..
016770: 20 20 20 70 72 6F 67 72 61 6D 20 68 61 73 20 72 program has r
016780: 65 74 75 72 6E 65 64 20 66 72 6F 6D 20 74 68 65 eturned from the
016790: 20 47 4F 53 55 42 20 31 30 30 30 20 69 6E 20 6C GOSUB 1000 in l
0167A0: 69 6E 65 20 37 30 2C 20 6D 70 20 74 65 6C 6C 73 ine 70, mp tells
0167B0: 20 75 73 20 77 68 65 72 65 20 74 68 65 0D 0A 20 us where the..
0167C0: 20 20 6D 65 6E 75 20 62 61 72 20 68 61 73 20 65 menu bar has e
0167D0: 6E 64 65 64 20 75 70 2E 0D 0A 0D 0A 20 20 20 49 nded up..... I
0167E0: 67 6E 6F 72 65 20 74 68 65 20 6D 66 20 76 61 72 gnore the mf var
0167F0: 69 61 62 6C 65 20 66 6F 72 20 74 68 65 20 6D 6F iable for the mo
016800: 65 2E 20 20 50 72 6F 67 72 61 6D 6D 65 72 73 20 e. Programmers
016810: 74 65 6E 64 20 74 6F 20 20 62 75 69 6C 64 20 20 tend to build
016820: 75 70 20 20 6C 69 62 72 61 72 69 65 73 20 6F 66 up libraries of
016830: 20 72 6F 75 74 69 6E 65 73 20 66 6F 72 0D 0A 20 routines for..
016840: 20 20 70 65 72 66 6F 72 6D 69 6E 67 20 75 73 65 performing use
016850: 66 75 6C 20 74 61 73 6B 73 20 77 68 69 63 68 20 ful tasks which
016860: 74 68 65 79 20 20 63 61 6E 20 20 6A 75 73 74 20 they can just
016870: 20 73 6C 6F 74 20 20 69 6E 20 74 6F 20 61 6E 79 slot in to any
016880: 20 6E 65 77 20 70 72 6F 67 72 61 6D 0D 0A 20 20 new program..
016890: 20 62 65 69 6E 67 20 77 72 69 74 74 65 6E 2E 0D being written..
0168A0: 0A 0D 0A 20 20 20 41 46 54 45 52 20 54 48 45 20 ... AFTER THE
0168B0: 4C 45 43 54 55 52 45 0D 0A 20 20 20 4C 69 6E 65 LECTURE.. Line
0168C0: 73 20 31 30 30 30 20 74 6F 20 31 30 31 37 20 6F s 1000 to 1017 o
0168D0: 66 20 4C 69 73 74 69 6E 67 20 31 20 66 6F 72 6D f Listing 1 form
0168E0: 20 61 20 73 75 62 72 6F 75 74 69 6E 65 20 66 6F a subroutine fo
0168F0: 72 20 70 72 6F 64 75 63 69 6E 67 20 6D 65 6E 75 r producing menu
016900: 73 20 77 69 74 68 0D 0A 20 20 20 61 20 73 63 72 s with.. a scr
016910: 6F 6C 6C 69 6E 67 20 62 61 72 20 74 68 61 74 20 olling bar that
016920: 74 68 65 20 75 73 65 72 20 6D 6F 76 65 73 20 20 the user moves
016930: 75 70 20 20 61 6E 64 20 20 64 6F 77 6E 20 74 6F up and down to
016940: 20 73 65 6C 65 63 74 20 74 68 65 20 6D 65 6E 75 select the menu
016950: 20 69 74 65 6D 0D 0A 20 20 20 72 65 71 75 69 72 item.. requir
016960: 65 64 2E 20 20 54 79 70 65 20 69 6E 20 6C 69 6E ed. Type in lin
016970: 65 73 20 31 30 30 30 20 74 6F 20 31 30 31 37 20 es 1000 to 1017
016980: 6F 6E 20 20 74 68 65 69 72 20 6F 77 6E 20 61 6E on their own an
016990: 64 20 73 61 76 65 20 69 74 20 69 6E 20 61 20 66 d save it in a f
0169A0: 69 6C 65 2E 0D 0A 20 20 20 54 68 65 79 20 77 69 ile... They wi
0169B0: 6C 6C 20 6E 6F 74 20 61 63 74 75 61 6C 6C 79 20 ll not actually
0169C0: 64 6F 20 61 6E 79 74 68 69 6E 67 20 6F 6E 20 74 do anything on t
0169D0: 68 65 69 72 20 6F 77 6E 2C 20 62 75 74 20 77 65 heir own, but we
0169E0: 20 77 69 6C 6C 20 62 65 20 75 73 69 6E 67 20 74 will be using t
0169F0: 68 65 6D 0D 0A 20 20 20 61 73 20 74 68 65 20 62 hem.. as the b
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 C7 02 00 00 00 02 ......N.........
016A20: 13 00 C3 02 00 00 00 02 13 00 C8 02 00 00 00 02 ................
016A30: 13 00 C4 02 00 00 00 02 13 00 C9 02 00 00 00 02 ................
016A40: 13 00 C5 02 00 00 00 02 13 00 C1 02 00 00 00 02 ................
016A50: 13 00 C6 02 00 00 00 02 13 00 C2 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: 61 72 65 20 73 65 74 20 75 70 2C 20 20 74 68 65 are set up, the
016B10: 20 20 72 6F 75 74 69 6E 65 73 20 20 61 72 65 20 routines are
016B20: 72 65 61 6C 6C 79 20 65 61 73 79 20 74 6F 20 75 really easy to u
016B30: 73 65 2E 20 20 49 66 0D 0A 20 20 20 79 6F 75 20 se. If.. you
016B40: 77 61 6E 74 65 64 20 74 6F 20 68 61 76 65 20 73 wanted to have s
016B50: 65 76 65 72 61 6C 20 64 69 66 66 65 72 65 6E 74 everal different
016B60: 20 6D 65 6E 75 73 20 69 6E 20 6F 6E 65 20 70 72 menus in one pr
016B70: 6F 67 72 61 6D 2C 20 79 6F 75 20 63 6F 75 6C 64 ogram, you could
016B80: 20 64 6F 20 69 74 0D 0A 20 20 20 6A 75 73 74 20 do it.. just
016B90: 62 79 20 61 6C 74 65 72 69 6E 67 20 61 20 66 65 by altering a fe
016BA0: 77 20 6F 66 20 74 68 65 20 20 76 61 72 69 61 62 w of the variab
016BB0: 6C 65 73 20 20 66 6F 72 20 20 65 61 63 68 20 63 les for each c
016BC0: 61 73 65 2C 20 61 6E 64 20 74 68 65 6E 20 75 73 ase, and then us
016BD0: 65 20 74 68 65 0D 0A 20 20 20 73 61 6D 65 20 6C e the.. same l
016BE0: 69 6E 65 73 20 31 30 30 30 20 74 6F 20 31 30 31 ines 1000 to 101
016BF0: 37 20 74 6F 20 70 72 6F 76 69 64 65 20 74 68 65 7 to provide the
016C00: 20 62 61 73 69 63 20 6D 65 6E 75 20 73 79 73 74 basic menu syst
016C10: 65 6D 2E 0D 0A 0D 0A 20 20 20 54 45 4C 4C 20 4D em..... TELL M
016C20: 45 20 4D 4F 52 45 0D 0A 20 20 20 57 65 6C 6C 2C E MORE.. Well,
016C30: 20 75 6E 66 6F 72 74 75 6E 61 74 65 6C 79 2C 20 unfortunately,
016C40: 77 65 20 68 61 76 65 20 72 75 6E 20 6F 75 74 20 we have run out
016C50: 20 6F 66 20 20 73 70 61 63 65 2C 20 20 73 6F 20 of space, so
016C60: 79 6F 75 20 77 69 6C 6C 20 68 61 76 65 20 74 6F you will have to
016C70: 20 77 61 69 74 0D 0A 20 20 20 75 6E 74 69 6C 20 wait.. until
016C80: 74 68 65 20 6E 65 78 74 20 74 68 72 69 6C 6C 69 the next thrilli
016C90: 6E 67 20 69 6E 73 74 61 6C 6D 65 6E 74 2C 20 20 ng instalment,
016CA0: 77 68 65 6E 20 20 77 65 20 20 77 69 6C 6C 20 65 when we will e
016CB0: 78 70 6C 61 69 6E 20 61 6C 6C 20 61 62 6F 75 74 xplain all about
016CC0: 20 6B 66 2C 0D 0A 20 20 20 61 6E 64 20 64 65 6D kf,.. and dem
016CD0: 6F 6E 73 74 72 61 74 65 20 61 20 66 65 77 20 6D onstrate a few m
016CE0: 6F 72 65 20 69 6E 74 65 72 65 73 74 69 6E 67 20 ore interesting
016CF0: 6D 65 6E 75 20 65 78 61 6D 70 6C 65 73 2E 20 20 menu examples.
016D00: 65 0D 0A 20 20 20 6D 62 68 20 62 65 63 61 75 73 e.. mbh becaus
016D10: 65 20 74 68 65 20 6D 65 6E 75 20 62 61 72 20 69 e the menu bar i
016D20: 73 20 64 72 61 77 6E 20 75 73 69 6E 67 20 74 68 s drawn using th
016D30: 65 20 44 52 41 57 52 20 28 64 72 61 77 20 72 65 e DRAWR (draw re
016D40: 6C 61 74 69 76 65 29 20 63 6F 6D 6D 61 6E 64 2E lative) command.
016D50: 0D 0A 20 20 20 57 6F 72 6B 20 6F 75 74 20 74 68 .. Work out th
016D60: 65 20 77 69 64 74 68 20 6F 66 20 74 68 65 20 6D e width of the m
016D70: 65 6E 75 20 20 62 61 72 20 69 6E 20 67 72 61 70 enu bar in grap
016D80: 68 69 63 73 20 63 6F 6F 72 64 69 6E 61 74 65 73 hics coordinates
016D90: 2C 20 61 6E 64 20 74 68 65 6E 20 74 61 6B 65 0D , and then take.
016DA0: 0A 20 20 20 6F 66 66 20 6F 6E 65 20 70 69 78 65 . off one pixe
016DB0: 6C 27 73 20 77 6F 72 74 68 20 61 6E 64 20 73 65 l's worth and se
016DC0: 74 20 6D 62 6C 20 20 74 6F 20 20 74 68 61 74 2E t mbl to that.
016DD0: 20 20 49 6E 20 6C 69 6E 65 20 32 30 20 77 65 20 In line 20 we
016DE0: 63 61 6C 63 75 6C 61 74 65 64 20 6D 62 6C 0D 0A calculated mbl..
016DF0: 20 20 20 61 73 20 31 36 2A 36 2D 32 2C 20 77 68 as 16*6-2, wh
016E00: 69 63 68 20 69 73 20 31 36 20 66 6F 72 20 65 61 ich is 16 for ea
016E10: 63 68 20 20 6F 66 20 20 74 68 65 20 20 73 69 78 ch of the six
016E20: 20 63 68 61 72 61 63 74 65 72 73 20 6F 66 20 74 characters of t
016E30: 68 65 20 6D 65 6E 75 20 74 65 78 74 2C 0D 0A 20 he menu text,..
016E40: 20 20 6C 65 73 73 20 74 77 6F 2C 20 77 68 69 63 less two, whic
016E50: 68 20 69 73 20 74 68 65 20 77 69 64 74 68 20 6F h is the width o
016E60: 66 20 61 20 70 69 78 65 6C 20 69 6E 20 4D 4F 44 f a pixel in MOD
016E70: 45 20 31 2E 20 20 49 6E 20 4D 4F 44 45 20 32 20 E 1. In MODE 2
016E80: 79 6F 75 20 77 6F 75 6C 64 20 64 6F 0D 0A 20 20 you would do..
016E90: 20 65 69 67 68 74 20 74 69 6D 65 73 20 74 68 65 eight times the
016EA0: 20 6E 75 6D 62 65 72 20 6F 66 20 63 68 61 72 61 number of chara
016EB0: 63 74 65 72 73 2C 20 61 6E 64 20 6F 6E 6C 79 20 cters, and only
016EC0: 74 61 6B 65 20 6F 66 66 20 6F 6E 65 2E 0D 0A 0D take off one....
016ED0: 0A 20 20 20 49 66 20 69 6E 20 64 6F 75 62 74 2C . If in doubt,
016EE0: 20 6A 75 73 74 20 65 78 70 65 72 69 6D 65 6E 74 just experiment
016EF0: 20 77 69 74 68 20 74 68 65 20 76 61 6C 75 65 73 with the values
016F00: 42 65 66 6F 72 65 20 74 68 65 6E 2C 20 68 61 76 Before then, hav
016F10: 65 20 61 0D 0A 20 20 20 67 6F 20 61 74 20 64 65 e a.. go at de
016F20: 73 69 67 6E 69 6E 67 20 61 20 66 65 77 20 20 73 signing a few s
016F30: 69 6D 70 6C 65 20 20 6D 65 6E 75 73 20 20 74 6F imple menus to
016F40: 20 20 67 65 74 20 20 74 68 65 20 20 68 61 6E 67 get the hang
016F50: 20 6F 66 20 73 65 74 74 69 6E 67 20 75 70 20 74 of setting up t
016F60: 68 65 0D 0A 20 20 20 76 61 72 69 61 62 6C 65 73 he.. variables
016F70: 2E 0D 0A 0D 0A 0D 0A 20 20 20 6D 63 68 20 20 20 ....... mch
016F80: 20 20 20 20 20 20 4E 75 6D 62 65 72 20 6F 66 20 Number of
016F90: 63 68 6F 69 63 65 73 20 6F 6E 20 74 68 65 20 6D choices on the m
016FA0: 65 6E 75 0D 0A 20 20 20 6D 70 20 20 20 20 20 20 enu.. mp
016FB0: 20 20 20 20 4D 65 6E 75 20 62 61 72 20 70 6F 73 Menu bar pos
016FC0: 69 74 69 6F 6E 20 28 7A 65 72 6F 20 66 6F 72 20 ition (zero for
016FD0: 66 69 72 73 74 20 69 74 65 6D 20 6F 6E 20 6D 65 first item on me
016FE0: 6E 75 29 0D 0A 20 20 20 6D 66 20 20 20 20 20 20 nu).. mf
016FF0: 20 20 20 20 4D 65 6E 75 20 66 6C 61 67 73 20 28 Menu flags (
017000: 74 6F 20 62 65 20 65 78 70 6C 61 69 6E 65 64 20 to be explained
017010: 6C 61 74 65 72 29 0D 0A 20 20 20 6D 64 65 20 20 later).. mde
017020: 20 20 20 20 20 20 20 4D 65 6E 75 20 64 65 6C 61 Menu dela
017030: 79 0D 0A 20 20 20 6D 63 6F 6C 20 20 20 20 20 20 y.. mcol
017040: 20 20 50 65 6E 20 74 6F 20 75 73 65 20 66 6F 72 Pen to use for
017050: 20 74 68 65 20 6D 65 6E 75 20 62 61 72 0D 0A 20 the menu bar..
017060: 20 20 6D 73 70 20 20 20 20 20 20 20 20 20 56 65 msp Ve
017070: 72 74 69 63 61 6C 20 73 70 61 63 69 6E 67 20 6F rtical spacing o
017080: 66 20 6D 65 6E 75 20 69 74 65 6D 73 20 69 6E 20 f menu items in
017090: 67 72 61 70 68 69 63 73 20 63 6F 6F 72 64 69 6E graphics coordin
0170A0: 61 74 65 73 0D 0A 20 20 20 6D 78 2C 20 6D 79 20 ates.. mx, my
0170B0: 20 20 20 20 20 47 72 61 70 68 69 63 73 20 63 6F Graphics co
0170C0: 6F 72 64 69 6E 61 74 65 73 20 6F 66 20 74 6F 70 ordinates of top
0170D0: 20 6C 65 66 74 20 6F 66 20 6D 65 6E 75 0D 0A 20 left of menu..
0170E0: 20 20 6D 62 68 20 20 20 20 20 20 20 20 20 4D 65 mbh Me
0170F0: 6E 75 20 62 61 72 20 68 65 69 67 68 74 20 69 6E nu bar height in
017100: 20 75 6E 74 69 6C 20 69 74 20 6C 6F 6F 6B 73 20 until it looks
017110: 72 69 67 68 74 21 0D 0A 0D 0A 20 20 20 4B 45 59 right!.... KEY
017120: 53 20 54 4F 20 53 55 43 43 45 53 53 0D 0A 20 20 S TO SUCCESS..
017130: 20 49 6E 20 6C 69 6E 65 20 33 30 20 77 65 20 61 In line 30 we a
017140: 72 65 20 74 65 6C 6C 69 6E 67 20 74 68 65 20 6D re telling the m
017150: 65 6E 75 20 20 72 6F 75 74 69 6E 65 73 20 77 68 enu routines wh
017160: 69 63 68 20 6B 65 79 73 20 77 65 20 77 61 6E 74 ich keys we want
017170: 20 69 74 20 74 6F 20 74 61 6B 65 0D 0A 20 20 20 it to take..
017180: 6E 6F 74 69 63 65 20 6F 66 2E 20 20 57 65 20 68 notice of. We h
017190: 61 76 65 20 63 68 6F 73 65 6E 20 74 68 65 20 20 ave chosen the
0171A0: 63 75 72 73 6F 72 20 20 6B 65 79 73 20 20 61 6E cursor keys an
0171B0: 64 20 20 43 4F 50 59 20 6B 65 79 20 62 79 20 73 d COPY key by s
0171C0: 65 74 74 69 6E 67 20 74 68 65 0D 0A 20 20 20 76 etting the.. v
0171D0: 61 72 69 61 62 6C 65 73 20 74 6F 20 74 68 65 20 ariables to the
0171E0: 61 70 70 72 6F 70 72 69 61 74 65 20 6B 65 79 20 appropriate key
0171F0: 6E 75 6D 62 65 72 73 2C 20 62 75 74 20 79 6F 75 numbers, but you
017200: 20 63 6F 75 6C 64 20 75 73 65 20 61 6E 79 20 6F could use any o
017210: 74 68 65 72 20 6B 65 79 73 0D 0A 20 20 20 62 79 ther keys.. by
017220: 20 63 68 61 6E 67 69 6E 67 20 74 68 65 20 6E 75 changing the nu
017230: 6D 62 65 72 73 2C 20 6F 72 20 65 76 65 6E 20 61 mbers, or even a
017240: 6C 6C 6F 77 20 74 68 65 20 75 73 65 72 20 74 6F llow the user to
017250: 20 72 65 64 65 66 69 6E 65 20 74 68 65 20 6B 65 redefine the ke
017260: 79 73 2E 0D 0A 0D 0A 20 20 20 54 68 65 20 6B 65 ys..... The ke
017270: 79 73 20 69 6E 64 69 63 61 74 65 64 20 62 79 20 ys indicated by
017280: 22 75 70 22 20 61 6E 64 20 22 64 6F 77 22 20 6D "up" and "dow" m
017290: 61 6B 65 20 74 68 65 20 6D 65 6E 75 20 62 61 72 ake the menu bar
0172A0: 20 6D 6F 76 65 20 75 70 20 61 6E 64 20 64 6F 77 move up and dow
0172B0: 6E 20 6F 6E 0D 0A 20 20 20 74 68 65 20 73 63 72 n on.. the scr
0172C0: 65 65 6E 2E 20 20 54 68 65 20 6F 74 68 65 72 20 een. The other
0172D0: 74 68 72 65 65 20 6B 65 79 73 2C 20 22 6C 65 22 three keys, "le"
0172E0: 2C 20 22 72 69 22 20 20 61 6E 64 20 22 66 69 22 , "ri" and "fi"
0172F0: 20 63 61 6E 20 62 65 20 75 73 65 64 20 62 79 20 can be used by
017300: 20 67 72 61 70 68 69 63 73 20 63 6F 6F 72 64 69 graphics coordi
017310: 6E 61 74 65 73 0D 0A 20 20 20 6D 62 6C 20 20 20 nates.. mbl
017320: 20 20 20 20 20 20 4D 65 6E 75 20 62 61 72 20 6C Menu bar l
017330: 65 6E 67 74 68 20 69 6E 20 67 72 61 70 68 69 63 ength in graphic
017340: 73 20 63 6F 6F 72 64 69 6E 61 74 65 73 0D 0A 20 s coordinates..
017350: 20 20 75 70 2C 20 64 6F 77 20 20 20 20 20 53 65 up, dow Se
017360: 74 20 74 68 65 73 65 20 74 6F 20 74 68 65 20 49 t these to the I
017370: 4E 4B 45 59 20 6E 75 6D 62 65 72 73 20 6F 66 20 NKEY numbers of
017380: 74 68 65 20 75 70 20 61 6E 64 20 64 6F 77 6E 20 the up and down
017390: 6B 65 79 73 20 6F 66 20 79 6F 75 72 0D 0A 20 20 keys of your..
0173A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 6F cho
0173B0: 69 63 65 0D 0A 20 20 20 6C 65 2C 20 72 69 2C 20 ice.. le, ri,
0173C0: 66 69 20 20 53 65 74 20 74 68 65 73 65 20 74 6F fi Set these to
0173D0: 20 74 68 65 20 49 4E 4B 45 59 20 6E 75 6D 62 65 the INKEY numbe
0173E0: 72 73 20 6F 66 20 6F 74 68 65 72 20 6B 65 79 73 rs of other keys
0173F0: 20 74 68 61 74 20 79 6F 75 20 77 61 6E 74 20 74 that you want t
017400: 68 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 he..
017410: 20 20 20 6D 65 6E 75 20 74 6F 20 72 65 73 70 6F menu to respo
017420: 6E 64 20 74 6F 2E 0D 0A 20 20 20 6B 66 20 20 20 nd to... kf
017430: 20 20 20 20 20 20 20 4B 65 79 20 66 6C 61 67 73 Key flags
017440: 20 28 74 6F 20 62 65 20 65 78 70 6C 61 69 6E 65 (to be explaine
017450: 64 20 6C 61 74 65 72 29 0D 0A 0D 0A 20 20 20 54 d later).... T
017460: 61 62 6C 65 20 32 0D 0A 0D 0A 20 20 20 2D 2D 2D able 2.... ---
017470: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
017480: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
017490: 2D 2D 2D 0D 0A 0D 0A 20 20 20 46 69 67 75 72 65 ---.... Figure
0174A0: 20 31 3A 0D 0A 0D 0A 20 20 20 31 30 20 4D 4F 44 1:.... 10 MOD
0174B0: 45 20 31 3A 6D 63 68 3D 34 3A 6D 70 3D 30 3A 6D E 1:mch=4:mp=0:m
0174C0: 66 3D 30 3A 6D 64 65 3D 30 0D 0A 20 20 20 32 30 f=0:mde=0.. 20
0174D0: 20 6D 63 6F 6C 3D 31 3A 6D 73 70 3D 31 36 3A 6D mcol=1:msp=16:m
0174E0: 78 3D 30 3A 6D 79 3D 33 39 39 2D 32 2A 31 36 3A x=0:my=399-2*16:
0174F0: 6D 62 68 3D 31 36 3A 6D 62 6C 3D 31 36 2A 36 2D mbh=16:mbl=16*6-
017500: 74 68 65 0D 0A 20 20 20 70 72 6F 67 72 61 6D 6D the.. programm
017510: 65 72 20 74 6F 20 20 70 72 6F 76 69 64 65 20 20 er to provide
017520: 6F 74 68 65 72 20 20 66 65 61 74 75 72 65 73 2E other features.
017530: 20 20 20 54 68 65 20 20 6B 65 79 20 20 66 6C 61 The key fla
017540: 67 73 2C 20 20 76 61 72 69 61 62 6C 65 20 20 6B gs, variable k
017550: 66 2C 0D 0A 20 20 20 69 6E 64 69 63 61 74 65 20 f,.. indicate
017560: 77 68 69 63 68 20 6F 66 20 74 68 65 73 65 20 74 which of these t
017570: 68 72 65 65 20 6B 65 79 73 20 74 68 65 20 20 72 hree keys the r
017580: 6F 75 74 69 6E 65 20 77 69 6C 6C 20 6C 6F 6F 6B outine will look
017590: 20 6F 75 74 20 66 6F 72 2E 20 20 49 6E 20 6F 75 out for. In ou
0175A0: 72 0D 0A 20 20 20 65 78 61 6D 70 6C 65 20 77 65 r.. example we
0175B0: 20 61 72 65 20 6F 6E 6C 79 20 69 6E 74 65 72 65 are only intere
0175C0: 73 74 65 64 20 69 6E 20 77 68 65 6E 20 74 68 65 sted in when the
0175D0: 20 75 73 65 72 20 70 72 65 73 73 65 73 20 43 4F user presses CO
0175E0: 50 59 20 74 6F 20 73 65 6C 65 63 74 20 74 68 65 PY to select the
0175F0: 0D 0A 20 20 20 6D 65 6E 75 20 69 74 65 6D 2E 20 .. menu item.
017600: 20 54 6F 20 64 6F 20 74 68 69 73 2C 20 6B 66 20 To do this, kf
017610: 68 61 73 20 62 65 65 6E 20 73 65 74 20 74 6F 20 has been set to
017620: 34 2E 20 20 4D 6F 72 65 20 6F 6E 20 68 6F 77 20 4. More on how
017630: 6B 66 20 77 6F 72 6B 73 20 6C 61 74 65 72 2E 0D kf works later..
017640: 0A 0D 0A 20 20 20 54 48 45 20 52 45 41 4C 4C 59 ... THE REALLY
017650: 20 45 58 43 49 54 49 4E 47 20 42 49 54 0D 0A 20 EXCITING BIT..
017660: 20 20 4F 6E 63 65 20 61 6C 6C 20 74 68 65 20 76 Once all the v
017670: 61 72 69 61 62 6C 65 73 20 61 72 65 20 73 65 74 ariables are set
017680: 20 20 75 70 2C 20 20 77 65 20 20 64 6F 20 20 47 up, we do G
017690: 4F 53 55 42 20 20 31 30 31 30 20 69 6E 20 6C 69 OSUB 1010 in li
0176A0: 6E 65 20 36 30 2C 20 77 68 69 63 68 0D 0A 20 20 ne 60, which..
0176B0: 20 70 72 69 6E 74 73 20 74 68 65 20 6D 65 6E 75 prints the menu
0176C0: 20 62 61 72 20 75 70 20 6F 6E 20 20 74 68 65 20 bar up on the
0176D0: 20 73 63 72 65 65 6E 2E 20 20 20 54 68 65 20 20 screen. The
0176E0: 47 4F 53 55 42 20 31 30 30 30 20 69 6E 20 74 68 GOSUB 1000 in th
0176F0: 65 20 6E 65 78 74 20 6C 69 6E 65 0D 0A 20 20 20 e next line..
017700: 3A 6D 62 68 3D 33 32 3A 6D 62 6C 3D 31 36 2A 37 :mbh=32:mbl=16*7
017710: 2D 32 0D 0A 0D 0A 20 20 20 48 61 76 65 20 61 20 -2.... Have a
017720: 70 6C 61 79 20 61 72 6F 75 6E 64 20 61 6E 64 20 play around and
017730: 74 72 79 20 6F 75 74 20 20 64 69 66 66 65 72 65 try out differe
017740: 6E 74 20 76 61 6C 75 65 73 20 66 6F 72 20 74 68 nt values for th
017750: 65 73 65 20 76 61 72 69 61 62 6C 65 73 2E 20 20 ese variables.
017760: 54 68 65 0D 0A 20 20 20 6D 73 70 20 76 61 72 69 The.. msp vari
017770: 61 62 6C 65 20 73 68 6F 75 6C 64 20 62 65 20 73 able should be s
017780: 65 74 20 61 63 63 6F 72 64 69 6E 67 20 20 74 6F et according to
017790: 20 20 68 6F 77 20 20 66 61 72 20 61 70 61 72 74 how far apart
0177A0: 20 74 68 65 20 6C 69 6E 65 73 20 6F 66 20 74 65 the lines of te
0177B0: 78 74 0D 0A 20 20 20 61 72 65 2E 20 20 49 66 20 xt.. are. If
0177C0: 65 61 63 68 20 6D 65 6E 75 20 69 74 65 6D 20 74 each menu item t
0177D0: 61 6B 65 73 20 75 70 20 20 6F 6E 65 20 20 6C 69 akes up one li
0177E0: 6E 65 2C 20 61 6E 64 20 74 68 65 72 65 20 61 72 ne, and there ar
0177F0: 65 20 6E 6F 20 67 61 70 73 20 62 65 74 77 65 65 e no gaps betwee
017800: 6E 0D 0A 20 20 20 74 68 65 6D 2C 20 6D 73 70 20 n.. them, msp
017810: 6E 65 65 64 73 20 74 6F 20 62 65 20 20 73 65 74 needs to be set
017820: 20 20 74 6F 20 20 31 36 2C 20 20 61 73 20 20 74 to 16, as t
017830: 68 65 72 65 20 20 61 72 65 20 20 74 68 61 74 20 here are that
017840: 6D 61 6E 79 20 67 72 61 70 68 69 63 73 20 79 2D many graphics y-
017850: 0D 0A 20 20 20 63 6F 6F 72 64 69 6E 61 74 65 73 .. coordinates
017860: 20 66 6F 72 20 65 61 63 68 20 74 65 78 74 20 6C for each text l
017870: 69 6E 65 2E 20 20 59 6F 75 20 63 61 6E 20 65 76 ine. You can ev
017880: 65 6E 20 68 61 76 65 20 6D 65 6E 75 20 74 65 78 en have menu tex
017890: 74 20 70 72 69 6E 74 65 64 20 65 76 65 72 79 0D t printed every.
0178A0: 0A 20 20 20 6F 6E 65 20 61 6E 64 20 61 20 68 61 . one and a ha
0178B0: 6C 66 20 6C 69 6E 65 73 20 61 6E 64 20 73 65 74 lf lines and set
0178C0: 20 6D 73 70 20 74 6F 20 32 34 20 69 66 20 79 6F msp to 24 if yo
0178D0: 75 20 66 65 65 6C 20 73 6F 20 69 6E 63 6C 69 6E u feel so inclin
0178E0: 65 64 2E 0D 0A 0D 0A 20 20 20 54 68 65 20 76 61 ed..... The va
0178F0: 72 69 61 62 6C 65 73 20 6D 78 20 61 6E 64 20 6D riables mx and m
017900: 63 61 6C 6C 73 20 74 68 65 20 6D 61 69 6E 20 6D calls the main m
017910: 65 6E 75 20 72 6F 75 74 69 6E 65 2C 20 77 68 69 enu routine, whi
017920: 63 68 20 6C 65 74 73 20 74 68 65 20 20 75 73 65 ch lets the use
017930: 72 20 6D 6F 76 65 20 74 68 65 20 6D 65 6E 75 20 r move the menu
017940: 62 61 72 20 75 70 20 61 6E 64 0D 0A 20 20 20 64 bar up and.. d
017950: 6F 77 6E 20 75 6E 74 69 6C 20 74 68 65 20 43 4F own until the CO
017960: 50 59 20 6B 65 79 20 28 69 6E 20 74 68 69 73 20 PY key (in this
017970: 20 63 61 73 65 29 20 20 69 73 20 70 72 65 73 73 case) is press
017980: 65 64 2E 20 20 4C 69 6E 65 20 38 30 20 74 68 65 ed. Line 80 the
017990: 6E 20 69 6E 66 6F 72 6D 73 0D 0A 20 20 20 74 68 n informs.. th
0179A0: 65 20 75 73 65 72 20 6F 66 20 74 68 65 20 70 6F e user of the po
0179B0: 73 69 74 69 6F 6E 20 6F 66 20 74 68 65 20 20 6D sition of the m
0179C0: 65 6E 75 20 20 62 61 72 2E 20 20 20 54 68 69 73 enu bar. This
0179D0: 20 6D 75 73 74 20 62 65 20 74 68 65 20 6D 6F 73 must be the mos
0179E0: 74 20 75 73 65 66 75 6C 0D 0A 20 20 20 6D 65 6E t useful.. men
0179F0: 75 20 65 76 65 72 21 0D 0A 0D 0A 20 20 20 49 66 u ever!.... If
017A00: 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 72 65 6D you want to rem
017A10: 6F 76 65 20 74 68 65 20 6D 65 6E 75 20 20 62 61 ove the menu ba
017A20: 72 20 20 66 72 6F 6D 20 74 68 65 20 73 63 72 65 r from the scre
017A30: 65 6E 20 61 67 61 69 6E 20 61 66 74 65 72 20 72 en again after r
017A40: 65 74 75 72 6E 69 6E 67 0D 0A 20 20 20 66 72 6F eturning.. fro
017A50: 6D 20 6C 69 6E 65 20 31 30 30 30 2C 20 61 6C 6C m line 1000, all
017A60: 20 79 6F 75 20 68 61 76 65 20 20 74 6F 20 20 64 you have to d
017A70: 6F 20 20 69 73 20 20 47 4F 53 55 42 20 20 31 30 o is GOSUB 10
017A80: 31 30 20 61 67 61 69 6E 2E 20 20 59 6F 75 20 6D 10 again. You m
017A90: 69 67 68 74 20 6F 66 0D 0A 20 20 20 63 6F 75 72 ight of.. cour
017AA0: 73 65 20 77 61 6E 74 20 74 6F 20 6C 65 61 76 65 se want to leave
017AB0: 20 69 74 20 69 6E 20 70 6C 61 63 65 20 72 65 61 it in place rea
017AC0: 64 79 20 66 6F 72 20 74 68 65 20 6E 65 78 74 20 dy for the next
017AD0: 74 69 6D 65 20 74 68 65 20 6D 65 6E 75 20 69 73 time the menu is
017AE0: 20 75 73 65 64 2E 0D 0A 0D 0A 20 20 20 4F 6E 63 used..... Onc
017AF0: 65 20 74 68 65 20 76 61 72 69 61 62 6C 65 73 20 e the variables
017B00: 79 20 20 68 6F 6C 64 20 20 74 68 65 20 20 67 72 y hold the gr
017B10: 61 70 68 69 63 73 20 20 63 6F 6F 72 64 69 6E 61 aphics coordina
017B20: 74 65 73 20 20 6F 66 20 74 68 65 20 74 6F 70 20 tes of the top
017B30: 6C 65 66 74 0D 0A 20 20 20 70 69 78 65 6C 20 6F left.. pixel o
017B40: 66 20 74 68 65 20 6D 65 6E 75 20 62 61 72 20 77 f the menu bar w
017B50: 68 65 6E 20 69 74 20 69 73 20 20 6F 76 65 72 20 hen it is over
017B60: 74 68 65 20 66 69 72 73 74 20 6D 65 6E 75 20 69 the first menu i
017B70: 74 65 6D 2E 20 20 41 6C 6C 20 74 68 65 20 6F 74 tem. All the ot
017B80: 68 65 72 0D 0A 20 20 20 63 6F 6F 72 64 69 6E 61 her.. coordina
017B90: 74 65 73 20 6E 65 65 64 65 64 20 61 72 65 20 77 tes needed are w
017BA0: 6F 72 6B 65 64 20 6F 75 74 20 75 73 69 6E 67 20 orked out using
017BB0: 6D 73 70 2E 0D 0A 0D 0A 20 20 20 46 69 6E 61 6C msp..... Final
017BC0: 6C 79 20 74 68 65 20 61 63 74 75 61 6C 20 73 69 ly the actual si
017BD0: 7A 65 20 6F 66 20 74 68 65 20 20 6D 65 6E 75 20 ze of the menu
017BE0: 20 62 61 72 20 20 69 73 20 20 73 74 6F 72 65 64 bar is stored
017BF0: 20 69 6E 20 6D 62 6C 20 61 6E 64 20 6D 62 68 2E in mbl and mbh.
017C00: 20 20 54 68 65 0D 0A 20 20 20 68 65 69 67 68 74 The.. height
017C10: 2C 20 73 74 6F 72 65 64 20 69 6E 20 6D 62 68 2C , stored in mbh,
017C20: 20 69 73 20 6D 65 61 73 75 72 65 64 20 69 6E 20 is measured in
017C30: 67 72 61 70 68 69 63 73 20 63 6F 6F 72 64 69 6E graphics coordin
017C40: 61 74 65 73 2E 20 20 54 68 69 73 20 63 6F 75 6C ates. This coul
017C50: 64 20 62 65 0D 0A 20 20 20 74 68 65 20 73 61 6D d be.. the sam
017C60: 65 20 61 73 20 6D 73 70 2C 20 62 75 74 20 6D 61 e as msp, but ma
017C70: 6B 69 6E 67 20 20 69 74 20 20 6C 61 72 67 65 72 king it larger
017C80: 20 20 6F 72 20 73 6D 61 6C 6C 65 72 20 77 69 6C or smaller wil
017C90: 6C 20 70 72 6F 64 75 63 65 20 64 69 66 66 65 72 l produce differ
017CA0: 65 6E 74 0D 0A 20 20 20 65 66 66 65 63 74 73 2E ent.. effects.
017CB0: 0D 0A 0D 0A 20 20 20 54 68 65 20 76 61 72 69 61 .... The varia
017CC0: 62 6C 65 20 66 6F 72 20 74 68 65 20 6C 65 6E 67 ble for the leng
017CD0: 74 68 20 6F 66 20 74 68 65 20 6D 65 6E 75 20 62 th of the menu b
017CE0: 61 72 2C 20 6D 62 6C 2C 20 64 6F 65 73 20 6E 6F ar, mbl, does no
017CF0: 74 20 77 6F 72 6B 20 71 75 69 74 65 20 6C 69 6B t work quite lik
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 C1 02 00 00 00 02 ......N.........
017D20: 14 00 C6 02 00 00 00 02 14 00 C2 02 00 00 00 02 ................
017D30: 14 00 C7 02 00 00 00 02 14 00 C3 02 00 00 00 02 ................
017D40: 14 00 C8 02 00 00 00 02 14 00 C4 02 00 00 00 02 ................
017D50: 14 00 C9 02 00 00 00 02 14 00 C5 02 00 00 00 02 ................
017D60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017D70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017D80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017D90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017DF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
017E00: 32 0D 0A 20 20 20 33 30 20 75 70 3D 30 3A 64 6F 2.. 30 up=0:do
017E10: 77 3D 32 3A 6C 65 3D 38 3A 72 69 3D 31 3A 66 69 w=2:le=8:ri=1:fi
017E20: 3D 39 3A 6B 66 3D 34 0D 0A 20 20 20 34 30 20 50 =9:kf=4.. 40 P
017E30: 52 49 4E 54 22 4D 65 6E 75 22 3A 50 52 49 4E 54 RINT"Menu":PRINT
017E40: 22 2D 2D 2D 2D 22 0D 0A 20 20 20 35 30 20 46 4F "----".. 50 FO
017E50: 52 20 78 3D 31 20 54 4F 20 6D 63 68 3A 50 52 49 R x=1 TO mch:PRI
017E60: 4E 54 22 49 74 65 6D 22 78 3A 4E 45 58 54 0D 0A NT"Item"x:NEXT..
017E70: 20 20 20 36 30 20 47 4F 53 55 42 20 31 30 31 30 60 GOSUB 1010
017E80: 0D 0A 20 20 20 37 30 20 47 4F 53 55 42 20 31 30 .. 70 GOSUB 10
017E90: 30 30 0D 0A 20 20 20 38 30 20 50 52 49 4E 54 22 00.. 80 PRINT"
017EA0: 59 6F 75 20 68 61 76 65 20 63 68 6F 73 65 6E 20 You have chosen
017EB0: 69 74 65 6D 22 6D 70 2B 31 0D 0A 20 20 20 39 30 item"mp+1.. 90
017EC0: 20 45 4E 44 0D 0A 20 20 20 31 30 30 30 20 6B 70 END.. 1000 kp
017ED0: 3D 30 3A 6D 64 3D 31 3A 6D 7A 3D 30 0D 0A 20 20 =0:md=1:mz=0..
017EE0: 20 31 30 30 31 20 57 48 49 4C 45 20 28 6B 70 20 1001 WHILE (kp
017EF0: 41 4E 44 20 6B 66 29 3D 30 0D 0A 20 20 20 31 30 AND kf)=0.. 10
017F00: 30 32 20 57 48 49 4C 45 20 28 32 5E 6D 70 20 41 02 WHILE (2^mp A
017F10: 4E 44 20 6D 66 29 3E 30 20 4F 52 20 6D 7A 0D 0A ND mf)>0 OR mz..
017F20: 20 20 20 31 30 30 33 20 6D 7A 3D 30 3A 47 4F 53 1003 mz=0:GOS
017F30: 55 42 20 31 30 31 30 3A 6D 70 3D 28 6D 70 2B 6D UB 1010:mp=(mp+m
017F40: 63 68 2B 6D 64 29 20 4D 4F 44 20 6D 63 68 3A 47 ch+md) MOD mch:G
017F50: 4F 53 55 42 20 31 30 31 30 0D 0A 20 20 20 31 30 OSUB 1010.. 10
017F60: 30 34 20 57 45 4E 44 0D 0A 20 20 20 31 30 30 35 04 WEND.. 1005
017F70: 20 6D 64 3D 28 49 4E 4B 45 59 28 75 70 29 3E 2D md=(INKEY(up)>-
017F80: 31 29 2D 28 49 4E 4B 45 59 28 64 6F 77 29 3E 2D 1)-(INKEY(dow)>-
017F90: 31 29 3A 6D 7A 3D 6D 64 0D 0A 20 20 20 31 30 30 1):mz=md.. 100
017FA0: 36 20 6B 70 3D 2D 28 49 4E 4B 45 59 28 6C 65 29 6 kp=-(INKEY(le)
017FB0: 3E 2D 31 29 2D 32 2A 28 49 4E 4B 45 59 28 72 69 >-1)-2*(INKEY(ri
017FC0: 29 3E 2D 31 29 2D 34 2A 28 49 4E 4B 45 59 28 66 )>-1)-4*(INKEY(f
017FD0: 69 29 3E 2D 31 29 0D 0A 20 20 20 31 30 30 37 20 i)>-1).. 1007
017FE0: 57 45 4E 44 0D 0A 20 20 20 31 30 30 38 20 57 48 WEND.. 1008 WH
017FF0: 49 4C 45 20 49 4E 4B 45 59 24 3C 3E 22 22 3A 57 ILE INKEY$<>"":W
018000: 64 20 72 65 73 70 6F 6E 64 20 74 6F 20 20 74 68 d respond to th
018010: 65 20 20 22 6C 65 22 2C 20 20 22 72 69 22 20 20 e "le", "ri"
018020: 61 6E 64 20 20 22 66 69 22 20 20 6B 65 79 73 2E and "fi" keys.
018030: 20 20 20 4A 75 73 74 20 20 61 64 64 20 20 75 70 Just add up
018040: 20 74 68 65 0D 0A 20 20 20 66 6F 6C 6C 6F 77 69 the.. followi
018050: 6E 67 20 76 61 6C 75 65 73 20 66 6F 72 20 65 61 ng values for ea
018060: 63 68 20 6F 66 20 74 68 65 20 6B 65 79 73 3A 0D ch of the keys:.
018070: 0A 0D 0A 20 20 20 20 20 6C 65 20 20 20 20 20 20 ... le
018080: 31 0D 0A 20 20 20 20 20 72 69 20 20 20 20 20 20 1.. ri
018090: 32 0D 0A 20 20 20 20 20 66 69 20 20 20 20 20 20 2.. fi
0180A0: 34 0D 0A 0D 0A 20 20 20 54 68 75 73 20 33 20 77 4.... Thus 3 w
0180B0: 6F 75 6C 64 20 6D 65 61 6E 20 74 68 61 74 20 6F ould mean that o
0180C0: 6E 6C 79 20 74 68 65 20 22 6C 65 22 20 61 6E 64 nly the "le" and
0180D0: 20 22 72 69 22 20 6B 65 79 73 20 73 68 6F 75 6C "ri" keys shoul
0180E0: 64 20 62 65 20 75 73 65 64 2E 0D 0A 0D 0A 20 20 d be used.....
0180F0: 20 49 6E 20 6F 75 72 20 65 78 61 6D 70 6C 65 20 In our example
018100: 6C 61 73 74 20 6D 6F 6E 74 68 2C 20 77 65 20 73 last month, we s
018110: 65 74 20 6B 66 20 20 74 6F 20 20 62 65 20 34 2C et kf to be 4,
018120: 20 73 6F 20 74 68 61 74 20 6F 6E 6C 79 20 74 68 so that only th
018130: 65 20 22 66 69 22 20 6B 65 79 0D 0A 20 20 20 28 e "fi" key.. (
018140: 77 68 69 63 68 20 77 65 20 68 61 64 20 73 65 74 which we had set
018150: 20 74 6F 20 62 65 20 20 43 4F 50 59 29 20 20 77 to be COPY) w
018160: 61 73 20 20 64 65 74 65 63 74 65 64 2E 20 20 20 as detected.
018170: 49 66 20 20 77 65 20 68 61 64 20 77 61 6E 74 65 If we had wante
018180: 64 20 74 6F 2C 20 77 65 0D 0A 20 20 20 63 6F 75 d to, we.. cou
018190: 6C 64 20 68 61 76 65 20 73 65 74 20 22 6C 65 22 ld have set "le"
0181A0: 20 74 6F 20 62 65 20 20 31 38 20 20 61 6E 64 20 to be 18 and
0181B0: 20 22 72 69 22 20 20 74 6F 20 20 62 65 20 20 36 "ri" to be 6
0181C0: 20 28 74 68 65 20 52 45 54 55 52 4E 20 61 6E 64 (the RETURN and
0181D0: 20 45 4E 54 45 52 0D 0A 20 20 20 6B 65 79 73 29 ENTER.. keys)
0181E0: 2E 20 20 54 68 65 6E 20 77 69 74 68 20 6B 66 20 . Then with kf
0181F0: 73 65 74 20 74 6F 20 37 2C 20 73 6F 20 20 74 68 set to 7, so th
018200: 45 4E 44 0D 0A 20 20 20 31 30 30 39 20 52 45 54 END.. 1009 RET
018210: 55 52 4E 0D 0A 20 20 20 31 30 31 30 20 50 52 49 URN.. 1010 PRI
018220: 4E 54 20 43 48 52 24 28 32 33 29 2B 43 48 52 24 NT CHR$(23)+CHR$
018230: 28 31 29 3B 0D 0A 20 20 20 31 30 31 31 20 4D 4F (1);.. 1011 MO
018240: 56 45 20 6D 78 2C 6D 79 2D 6D 70 2A 6D 73 70 2B VE mx,my-mp*msp+
018250: 28 6D 64 3D 2D 31 29 2A 28 6D 62 68 2D 32 29 0D (md=-1)*(mbh-2).
018260: 0A 20 20 20 31 30 31 32 20 46 4F 52 20 6D 63 3D . 1012 FOR mc=
018270: 31 20 54 4F 20 6D 62 68 2F 32 0D 0A 20 20 20 31 1 TO mbh/2.. 1
018280: 30 31 33 20 44 52 41 57 52 20 6D 62 6C 2C 30 2C 013 DRAWR mbl,0,
018290: 6D 63 6F 6C 3A 4D 4F 56 45 52 20 2D 6D 62 6C 2C mcol:MOVER -mbl,
0182A0: 2D 32 2D 28 6D 64 3D 2D 31 29 2A 34 0D 0A 20 20 -2-(md=-1)*4..
0182B0: 20 31 30 31 34 20 46 4F 52 20 64 65 6C 61 79 3D 1014 FOR delay=
0182C0: 30 20 54 4F 20 6D 64 65 3A 4E 45 58 54 0D 0A 20 0 TO mde:NEXT..
0182D0: 20 20 31 30 31 35 20 4E 45 58 54 0D 0A 20 20 20 1015 NEXT..
0182E0: 31 30 31 36 20 50 52 49 4E 54 20 43 48 52 24 28 1016 PRINT CHR$(
0182F0: 32 33 29 2B 43 48 52 24 28 30 29 3B 0D 0A 20 20 23)+CHR$(0);..
018300: 20 31 30 31 37 20 52 45 54 55 52 4E 0D 0A 1A FF 1017 RETURN....
018310: 50 41 54 43 48 20 36 0D 0A 20 20 20 42 79 20 53 PATCH 6.. By S
018320: 74 65 70 68 65 6E 20 61 6E 64 20 4D 61 74 74 68 tephen and Matth
018330: 65 77 20 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A 20 ew Phillips....
018340: 20 20 22 57 68 61 74 27 73 20 6F 6E 20 74 68 65 "What's on the
018350: 20 6D 65 6E 75 20 66 6F 72 20 74 68 69 73 20 6D menu for this m
018360: 6F 6E 74 68 3F 22 2C 20 20 77 65 20 20 68 65 61 onth?", we hea
018370: 72 20 79 6F 75 20 63 72 79 2E 20 20 57 65 6C 6C r you cry. Well
018380: 61 31 30 20 31 30 31 30 31 0D 0A 42 20 61 31 31 a10 10101..B a11
018390: 20 34 35 31 20 34 35 39 20 61 31 31 20 38 31 33 451 459 a11 813
0183A0: 31 0D 0A 42 20 61 31 31 20 35 33 32 20 35 34 30 1..B a11 532 540
0183B0: 20 61 31 31 20 39 30 37 39 0D 0A 42 20 61 31 32 a11 9079..B a12
0183C0: 20 33 38 31 30 20 33 38 31 38 20 61 31 32 20 31 3810 3818 a12 1
0183D0: 30 35 31 31 0D 0A 42 20 61 31 32 20 38 34 35 34 0511..B a12 8454
0183E0: 20 38 34 36 30 20 61 31 32 20 31 31 37 36 38 0D 8460 a12 11768.
0183F0: 0A 42 20 61 31 33 20 32 30 37 35 20 32 30 38 33 .B a13 2075 2083
018400: 61 74 20 61 6C 6C 20 74 68 72 65 65 20 6B 65 79 at all three key
018410: 73 20 77 65 72 65 20 64 65 74 65 63 74 65 64 2C s were detected,
018420: 20 74 68 65 0D 0A 20 20 20 75 73 65 72 20 63 6F the.. user co
018430: 75 6C 64 20 68 61 76 65 20 75 73 65 64 20 74 68 uld have used th
018440: 65 20 63 75 72 73 6F 72 20 6B 65 79 73 20 20 74 e cursor keys t
018450: 6F 20 20 6D 6F 76 65 20 20 74 68 65 20 6D 65 6E o move the men
018460: 75 20 62 61 72 20 75 70 20 61 6E 64 20 64 6F 77 u bar up and dow
018470: 6E 2C 0D 0A 20 20 20 61 6E 64 20 73 65 6C 65 63 n,.. and selec
018480: 74 65 64 20 74 68 65 20 6D 65 6E 75 20 69 74 65 ted the menu ite
018490: 6D 20 77 69 74 68 20 61 6E 79 20 6F 66 20 74 68 m with any of th
0184A0: 65 20 43 4F 50 59 2C 20 45 4E 54 45 52 20 61 6E e COPY, ENTER an
0184B0: 64 20 52 45 54 55 52 4E 20 6B 65 79 73 2E 0D 0A d RETURN keys...
0184C0: 0D 0A 20 20 20 41 4E 4F 54 48 45 52 20 4D 45 4E .. ANOTHER MEN
0184D0: 55 2C 20 41 4E 4F 54 48 45 52 20 56 41 52 49 41 U, ANOTHER VARIA
0184E0: 42 4C 45 0D 0A 20 20 20 49 6E 20 4C 69 73 74 69 BLE.. In Listi
0184F0: 6E 67 20 31 20 77 65 20 68 61 76 65 20 61 6E 6F ng 1 we have ano
018500: 74 68 65 72 20 65 78 61 6D 70 6C 65 20 20 70 72 ther example pr
018510: 6F 67 72 61 6D 2C 20 77 68 69 63 68 20 73 68 6F ogram, which sho
018520: 77 73 20 61 6E 6F 74 68 65 72 20 77 61 79 20 6F ws another way o
018530: 66 0D 0A 20 20 20 75 73 69 6E 67 20 74 68 65 20 f.. using the
018540: 6D 65 6E 75 20 72 6F 75 74 69 6E 65 73 2C 20 61 menu routines, a
018550: 6E 64 20 61 6C 73 6F 20 68 65 6C 70 73 20 20 79 nd also helps y
018560: 6F 75 20 74 6F 20 63 61 6C 63 75 6C 61 74 65 20 ou to calculate
018570: 74 68 65 20 76 61 6C 75 65 20 6F 66 20 6B 66 0D the value of kf.
018580: 0A 20 20 20 74 68 61 74 20 79 6F 75 20 6E 65 65 . that you nee
018590: 64 2E 20 20 54 68 69 73 20 74 69 6D 65 20 66 69 d. This time fi
0185A0: 20 69 73 20 31 38 20 20 66 6F 72 20 20 74 68 65 is 18 for the
0185B0: 20 20 52 45 54 55 52 4E 20 6B 65 79 2C 20 6C 65 RETURN key, le
0185C0: 20 69 73 20 73 65 74 20 74 6F 20 34 37 0D 0A 20 is set to 47..
0185D0: 20 20 66 6F 72 20 74 68 65 20 73 70 61 63 65 20 for the space
0185E0: 62 61 72 2C 20 61 6E 64 20 77 65 20 64 6F 20 6E bar, and we do n
0185F0: 6F 74 20 6E 65 65 64 20 22 72 69 22 2C 20 73 6F ot need "ri", so
018600: 23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61 #Programmers' Pa
018610: 74 63 68 20 37 20 2D 20 57 41 43 43 49 20 31 31 tch 7 - WACCI 11
018620: 36 2C 20 4F 63 74 20 31 39 39 37 2C 20 70 2E 20 6, Oct 1997, p.
018630: 32 33 2D 32 34 0D 0A 20 20 20 50 52 4F 47 52 41 23-24.. PROGRA
018640: 4D 4D 45 52 53 27 20 50 41 54 43 48 20 37 0D 0A MMERS' PATCH 7..
018650: 20 20 20 42 79 20 53 74 65 70 68 65 6E 20 61 6E By Stephen an
018660: 64 20 4D 61 74 74 68 65 77 20 50 68 69 6C 6C 69 d Matthew Philli
018670: 70 73 0D 0A 0D 0A 20 20 20 4C 61 73 74 20 6D 6F ps.... Last mo
018680: 6E 74 68 20 77 65 20 73 74 61 72 74 65 64 20 6C nth we started l
018690: 6F 6F 6B 69 6E 67 20 61 74 20 20 61 20 20 73 68 ooking at a sh
0186A0: 6F 72 74 20 20 72 6F 75 74 69 6E 65 20 66 6F 72 ort routine for
0186B0: 20 68 61 6E 64 6C 69 6E 67 20 6D 65 6E 75 73 20 handling menus
0186C0: 69 6E 0D 0A 20 20 20 42 41 53 49 43 2C 20 61 6E in.. BASIC, an
0186D0: 64 20 70 72 6F 64 75 63 65 64 20 61 20 73 69 6D d produced a sim
0186E0: 70 6C 65 20 73 65 6C 65 63 74 69 6F 6E 20 20 6D ple selection m
0186F0: 65 6E 75 20 20 77 69 74 68 20 61 20 73 63 72 6F enu with a scro
018700: 6C 6C 69 6E 67 20 62 61 72 2E 20 20 54 68 69 73 lling bar. This
018710: 0D 0A 20 20 20 6D 6F 6E 74 68 20 77 65 20 61 72 .. month we ar
018720: 65 20 67 6F 69 6E 67 20 74 6F 20 68 61 76 65 20 e going to have
018730: 61 20 67 6F 20 61 74 20 73 6F 6D 65 20 6D 6F 72 a go at some mor
018740: 65 20 63 6F 6D 70 6C 69 63 61 74 65 64 20 65 78 e complicated ex
018750: 61 6D 70 6C 65 73 2E 0D 0A 0D 0A 20 20 20 54 68 amples..... Th
018760: 65 20 72 6F 75 74 69 6E 65 73 20 61 72 65 20 72 e routines are r
018770: 65 70 72 69 6E 74 65 64 20 74 68 69 73 20 20 6D eprinted this m
018780: 6F 6E 74 68 20 20 69 6E 20 20 6C 69 6E 65 73 20 onth in lines
018790: 31 30 30 30 2D 31 30 31 37 20 6F 66 20 4C 69 73 1000-1017 of Lis
0187A0: 74 69 6E 67 20 31 2C 0D 0A 20 20 20 62 75 74 20 ting 1,.. but
0187B0: 79 6F 75 20 6D 61 79 20 77 61 6E 74 20 74 6F 20 you may want to
0187C0: 68 61 76 65 20 6C 61 73 74 20 6D 6F 6E 74 68 27 have last month'
0187D0: 73 20 20 61 72 74 69 63 6C 65 20 68 61 6E 64 79 s article handy
0187E0: 20 74 6F 20 72 65 66 65 72 20 74 6F 20 74 68 65 to refer to the
0187F0: 20 6C 69 73 74 0D 0A 20 20 20 6F 66 20 76 61 72 list.. of var
018800: 20 69 74 20 68 61 73 20 62 65 65 6E 20 6C 65 66 it has been lef
018810: 74 20 61 73 20 69 74 20 69 73 2E 0D 0A 20 20 20 t as it is...
018820: 3C 3C 54 68 65 20 70 72 6F 67 72 61 6D 20 69 73 <<The program is
018830: 20 73 61 76 65 64 20 6F 6E 20 64 69 73 63 20 61 saved on disc a
018840: 73 20 4D 45 4E 55 45 58 32 2E 42 41 53 3E 3E 0D s MENUEX2.BAS>>.
018850: 0A 0D 0A 20 20 20 54 68 65 20 70 72 6F 67 72 61 ... The progra
018860: 6D 20 62 72 69 6E 67 73 20 69 6E 20 61 20 76 61 m brings in a va
018870: 72 69 61 62 6C 65 20 77 65 20 20 68 61 76 65 20 riable we have
018880: 20 6E 6F 74 20 79 65 74 20 6D 65 74 2E 20 20 54 not yet met. T
018890: 68 65 20 6B 65 79 73 20 70 72 65 73 73 65 64 0D he keys pressed.
0188A0: 0A 20 20 20 61 72 65 20 69 6E 64 69 63 61 74 65 . are indicate
0188B0: 64 20 62 79 20 6B 70 2C 20 61 6E 64 20 69 74 20 d by kp, and it
0188C0: 77 6F 72 6B 73 20 69 6E 20 20 74 68 65 20 20 73 works in the s
0188D0: 61 6D 65 20 77 61 79 20 61 73 20 6B 66 20 61 62 ame way as kf ab
0188E0: 6F 76 65 2E 20 20 57 68 65 6E 20 77 65 0D 0A 20 ove. When we..
0188F0: 20 20 72 65 74 75 72 6E 20 66 72 6F 6D 20 6C 69 return from li
018900: 6E 65 20 31 30 30 30 2C 20 69 66 20 6A 75 73 74 ne 1000, if just
018910: 20 74 68 65 20 20 22 66 69 22 20 20 6B 65 79 20 the "fi" key
018920: 69 73 20 70 72 65 73 73 65 64 2C 20 74 68 65 6E is pressed, then
018930: 20 6B 70 20 77 69 6C 6C 20 62 65 0D 0A 20 20 20 kp will be..
018940: 34 2E 20 20 49 66 20 6F 6E 6C 79 20 74 68 65 20 4. If only the
018950: 22 6C 65 22 20 6B 65 79 20 77 61 73 20 70 72 65 "le" key was pre
018960: 73 73 65 64 20 20 74 68 65 6E 20 6B 70 20 77 6F ssed then kp wo
018970: 75 6C 64 20 62 65 20 31 2E 20 20 4F 66 20 63 6F uld be 1. Of co
018980: 75 72 73 65 2C 20 74 68 65 0D 0A 20 20 20 75 73 urse, the.. us
018990: 65 72 20 6D 69 67 68 74 20 68 61 76 65 20 70 72 er might have pr
0189A0: 65 73 73 65 64 20 62 6F 74 68 20 61 74 20 6F 6E essed both at on
0189B0: 63 65 2C 20 69 6E 20 77 68 69 63 68 20 63 61 73 ce, in which cas
0189C0: 65 20 6B 70 20 77 6F 75 6C 64 20 62 65 20 35 2E e kp would be 5.
0189D0: 0D 0A 0D 0A 20 20 20 49 6E 20 4C 69 73 74 69 6E .... In Listin
0189E0: 67 20 31 20 77 65 20 20 68 61 76 65 20 20 69 67 g 1 we have ig
0189F0: 6E 6F 72 65 64 20 20 74 68 65 20 20 63 61 73 65 nored the case
018A00: 69 61 62 6C 65 73 20 75 73 65 64 20 69 6E 20 74 iables used in t
018A10: 68 65 20 70 72 6F 67 72 61 6D 2E 0D 0A 0D 0A 20 he program.....
018A20: 20 20 49 6E 20 74 68 65 20 73 69 6D 70 6C 65 20 In the simple
018A30: 73 65 6C 65 63 74 69 6F 6E 20 6D 65 6E 75 2C 20 selection menu,
018A40: 77 65 20 20 6A 75 73 74 20 20 6E 65 65 64 65 64 we just needed
018A50: 20 20 74 6F 20 20 73 65 74 20 75 70 20 77 68 65 to set up whe
018A60: 72 65 20 74 68 65 20 6D 65 6E 75 0D 0A 20 20 20 re the menu..
018A70: 77 61 73 2C 20 61 6E 64 20 68 6F 77 20 62 69 67 was, and how big
018A80: 20 69 74 20 77 61 73 2C 20 61 6E 64 20 74 68 61 it was, and tha
018A90: 74 20 77 61 73 20 61 62 6F 75 74 20 69 74 2E 20 t was about it.
018AA0: 20 54 68 65 20 72 6F 75 74 69 6E 65 73 20 61 72 The routines ar
018AB0: 65 20 63 61 70 61 62 6C 65 0D 0A 20 20 20 6F 66 e capable.. of
018AC0: 20 61 20 6C 6F 74 20 6F 66 20 64 69 66 66 65 72 a lot of differ
018AD0: 65 6E 74 20 20 61 70 70 6C 69 63 61 74 69 6F 6E ent application
018AE0: 73 2C 20 20 63 6F 6E 74 72 6F 6C 6C 65 64 20 20 s, controlled
018AF0: 6D 61 69 6E 6C 79 20 20 62 79 20 74 68 65 20 6D mainly by the m
018B00: 66 20 28 6D 65 6E 75 0D 0A 20 20 20 66 6C 61 67 f (menu.. flag
018B10: 73 29 20 61 6E 64 20 6B 66 20 28 6B 65 79 20 66 s) and kf (key f
018B20: 6C 61 67 73 29 20 76 61 72 69 61 62 6C 65 73 2C lags) variables,
018B30: 20 20 61 6C 6F 6E 67 20 77 69 74 68 20 6B 70 20 along with kp
018B40: 28 6B 65 79 73 20 70 72 65 73 73 65 64 29 2C 20 (keys pressed),
018B50: 77 68 69 63 68 0D 0A 20 20 20 72 65 74 75 72 6E which.. return
018B60: 73 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 74 6F s information to
018B70: 20 75 73 20 61 66 74 65 72 20 74 68 65 20 75 73 us after the us
018B80: 65 72 20 68 61 73 20 73 65 6C 65 63 74 65 64 20 er has selected
018B90: 61 20 6D 65 6E 75 20 69 74 65 6D 2E 0D 0A 0D 0A a menu item.....
018BA0: 20 20 20 46 4C 41 47 47 49 4E 47 20 44 4F 57 4E FLAGGING DOWN
018BB0: 0D 0A 20 20 20 54 68 65 20 6B 66 20 76 61 72 69 .. The kf vari
018BC0: 61 62 6C 65 20 69 73 20 66 6F 72 20 63 6F 6E 74 able is for cont
018BD0: 72 6F 6C 6C 69 6E 67 20 68 6F 77 20 20 74 68 65 rolling how the
018BE0: 20 72 6F 75 74 69 6E 65 73 20 72 65 73 70 6F 6E routines respon
018BF0: 64 20 74 6F 20 74 68 65 20 6B 65 79 73 2E 0D 0A d to the keys...
018C00: 73 20 20 77 68 65 72 65 20 20 73 65 76 65 72 61 s where severa
018C10: 6C 20 20 6B 65 79 73 20 6D 69 67 68 74 20 62 65 l keys might be
018C20: 0D 0A 20 20 20 70 72 65 73 73 65 64 20 61 74 20 .. pressed at
018C30: 6F 6E 63 65 2E 20 20 54 68 65 20 57 48 49 4C 45 once. The WHILE
018C40: 2D 57 45 4E 44 20 6C 6F 6F 70 20 6F 66 20 20 6C -WEND loop of l
018C50: 69 6E 65 73 20 31 31 30 20 74 6F 20 31 34 30 20 ines 110 to 140
018C60: 67 6F 65 73 20 72 6F 75 6E 64 20 61 6E 64 0D 0A goes round and..
018C70: 20 20 20 72 6F 75 6E 64 20 75 6E 74 69 6C 20 6B round until k
018C80: 70 3D 34 2C 20 77 68 69 63 68 20 68 61 70 70 65 p=4, which happe
018C90: 6E 73 20 20 77 68 65 6E 20 20 74 68 65 20 20 52 ns when the R
018CA0: 45 54 55 52 4E 20 20 6B 65 79 20 69 73 20 70 72 ETURN key is pr
018CB0: 65 73 73 65 64 20 6F 6E 20 69 74 73 0D 0A 20 20 essed on its..
018CC0: 20 6F 77 6E 2E 20 20 49 6E 20 6C 69 6E 65 20 31 own. In line 1
018CD0: 33 30 2C 20 74 68 65 20 63 6F 6D 6D 61 6E 64 73 30, the commands
018CE0: 20 74 6F 20 20 74 6F 67 67 6C 65 20 20 74 68 65 to toggle the
018CF0: 20 76 61 6C 75 65 73 20 62 65 74 77 65 65 6E 20 values between
018D00: 4F 6E 20 61 6E 64 20 4F 66 66 0D 0A 20 20 20 6F On and Off.. o
018D10: 6E 6C 79 20 68 61 70 70 65 6E 20 77 68 65 6E 20 nly happen when
018D20: 6B 70 3D 31 2C 20 77 68 65 6E 20 6F 6E 6C 79 20 kp=1, when only
018D30: 73 70 61 63 65 20 69 73 20 70 72 65 73 73 65 64 space is pressed
018D40: 2E 0D 0A 0D 0A 20 20 20 41 6C 74 68 6F 75 67 68 ..... Although
018D50: 20 77 65 20 63 6F 75 6C 64 20 74 65 6C 6C 20 77 we could tell w
018D60: 68 65 6E 20 62 6F 74 68 20 20 6F 66 20 20 74 68 hen both of th
018D70: 6F 73 65 20 20 6B 65 79 73 20 61 72 65 20 70 72 ose keys are pr
018D80: 65 73 73 65 64 20 61 74 20 74 68 65 20 73 61 6D essed at the sam
018D90: 65 0D 0A 20 20 20 74 69 6D 65 2C 20 74 68 65 20 e.. time, the
018DA0: 75 73 65 72 20 69 73 20 6E 6F 74 20 72 65 61 6C user is not real
018DB0: 6C 79 20 67 69 76 69 6E 67 20 20 61 20 63 6C 65 ly giving a cle
018DC0: 61 72 20 69 6E 64 69 63 61 74 69 6F 6E 20 6F 66 ar indication of
018DD0: 20 77 68 61 74 20 73 68 6F 75 6C 64 20 62 65 0D what should be.
018DE0: 0A 20 20 20 64 6F 6E 65 2C 20 73 6F 20 69 74 20 . done, so it
018DF0: 69 73 20 6D 6F 72 65 20 73 65 6E 73 69 62 6C 65 is more sensible
018E00: 20 20 20 54 68 65 20 6E 75 6D 62 65 72 73 20 6F The numbers o
018E10: 66 20 74 68 65 20 6B 65 79 73 20 20 64 65 74 65 f the keys dete
018E20: 63 74 65 64 20 20 62 79 20 20 74 68 65 20 20 72 cted by the r
018E30: 6F 75 74 69 6E 65 73 20 20 61 72 65 20 68 65 6C outines are hel
018E40: 64 20 69 6E 20 73 65 76 65 72 61 6C 0D 0A 20 20 d in several..
018E50: 20 76 61 72 69 61 62 6C 65 73 3A 20 22 75 70 22 variables: "up"
018E60: 20 61 6E 64 20 22 64 6F 77 22 20 74 65 6C 6C 20 and "dow" tell
018E70: 74 68 65 20 72 6F 75 74 69 6E 65 73 20 20 77 68 the routines wh
018E80: 69 63 68 20 6B 65 79 73 20 74 6F 20 75 73 65 20 ich keys to use
018E90: 66 6F 72 20 6D 6F 76 69 6E 67 0D 0A 20 20 20 74 for moving.. t
018EA0: 68 65 20 6D 65 6E 75 20 62 61 72 20 75 70 20 61 he menu bar up a
018EB0: 6E 64 20 64 6F 77 6E 2C 20 77 68 69 6C 65 20 22 nd down, while "
018EC0: 6C 65 22 2C 20 22 72 69 22 2C 20 61 6E 64 20 22 le", "ri", and "
018ED0: 66 69 22 20 61 72 65 20 6A 75 73 74 20 74 68 72 fi" are just thr
018EE0: 65 65 20 6F 74 68 65 72 0D 0A 20 20 20 6B 65 79 ee other.. key
018EF0: 73 20 74 68 61 74 20 63 61 6E 20 62 65 20 64 65 s that can be de
018F00: 74 65 63 74 65 64 20 62 79 20 20 74 68 65 20 20 tected by the
018F10: 72 6F 75 74 69 6E 65 2E 20 20 20 54 68 65 79 20 routine. They
018F20: 20 64 6F 20 6E 6F 74 20 68 61 76 65 20 74 6F 20 do not have to
018F30: 61 63 74 20 61 73 0D 0A 20 20 20 6C 65 66 74 2C act as.. left,
018F40: 20 72 69 67 68 74 2C 20 61 6E 64 20 66 69 72 65 right, and fire
018F50: 20 69 6E 20 61 6E 79 20 70 61 72 74 69 63 75 6C in any particul
018F60: 61 72 20 77 61 79 3B 20 74 68 65 79 20 61 72 65 ar way; they are
018F70: 20 6A 75 73 74 20 63 61 6C 6C 65 64 20 74 68 61 just called tha
018F80: 74 20 74 6F 0D 0A 20 20 20 6D 61 6B 65 20 74 68 t to.. make th
018F90: 65 6D 20 65 61 73 69 65 72 20 74 6F 20 72 65 6D em easier to rem
018FA0: 65 6D 62 65 72 2E 0D 0A 0D 0A 20 20 20 56 61 72 ember..... Var
018FB0: 69 61 62 6C 65 20 6B 66 20 69 73 20 20 61 20 20 iable kf is a
018FC0: 62 69 74 2D 73 69 67 6E 69 66 69 63 61 6E 74 20 bit-significant
018FD0: 20 6E 75 6D 62 65 72 20 20 73 68 6F 77 69 6E 67 number showing
018FE0: 20 20 77 68 65 74 68 65 72 20 20 74 68 65 20 72 whether the r
018FF0: 6F 75 74 69 6E 65 0D 0A 20 20 20 73 68 6F 75 6C outine.. shoul
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 C4 02 00 00 00 02 ......N.........
019020: 15 00 C9 02 00 00 00 02 15 00 C5 02 00 00 00 02 ................
019030: 15 00 C1 02 00 00 00 02 15 00 C6 02 00 00 00 02 ................
019040: 15 00 C2 02 00 00 00 02 15 00 C7 02 00 00 00 02 ................
019050: 15 00 C3 02 00 00 00 02 15 00 C8 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: 69 73 20 69 73 20 77 68 65 72 65 20 74 68 65 20 is is where the
019110: 6D 79 73 74 65 72 69 6F 75 73 20 76 61 72 69 61 mysterious varia
019120: 62 6C 65 20 6D 66 20 63 6F 6D 65 73 20 69 6E 2E ble mf comes in.
019130: 20 20 49 74 0D 0A 20 20 20 69 73 20 61 6E 6F 74 It.. is anot
019140: 68 65 72 20 6F 66 20 74 68 65 73 65 20 62 69 74 her of these bit
019150: 2D 73 69 67 6E 69 66 69 63 61 6E 74 20 76 61 72 -significant var
019160: 69 61 62 6C 65 73 2E 20 20 20 49 6E 20 20 6C 69 iables. In li
019170: 6E 65 20 31 30 20 6D 66 20 69 73 20 73 65 74 20 ne 10 mf is set
019180: 74 6F 0D 0A 20 20 20 38 2B 33 32 2C 20 6F 72 20 to.. 8+32, or
019190: 31 30 31 30 30 30 20 69 6E 20 62 69 6E 61 72 79 101000 in binary
0191A0: 2E 20 20 45 61 63 68 20 20 62 69 6E 61 72 79 20 . Each binary
0191B0: 20 64 69 67 69 74 2C 20 6F 72 20 62 69 74 2C 20 digit, or bit,
0191C0: 63 6F 72 72 65 73 70 6F 6E 64 73 20 74 6F 20 61 corresponds to a
0191D0: 0D 0A 20 20 20 6D 65 6E 75 20 69 74 65 6D 2C 20 .. menu item,
0191E0: 61 6E 64 20 61 20 31 20 74 65 6C 6C 73 20 74 68 and a 1 tells th
0191F0: 65 20 20 6D 65 6E 75 20 20 72 6F 75 74 69 6E 65 e menu routine
019200: 20 74 68 61 74 20 74 68 65 20 69 74 65 6D 20 69 that the item i
019210: 73 20 75 6E 73 65 6C 65 63 74 61 62 6C 65 0D 0A s unselectable..
019220: 20 20 20 61 6E 64 20 73 68 6F 75 6C 64 20 62 65 and should be
019230: 20 72 6F 6C 6C 65 64 20 6F 76 65 72 2E 20 20 54 rolled over. T
019240: 68 65 20 6C 65 61 73 74 20 20 73 69 67 6E 69 66 he least signif
019250: 69 63 61 6E 74 20 62 69 74 20 28 61 74 20 74 68 icant bit (at th
019260: 65 20 72 69 67 68 74 20 68 61 6E 64 0D 0A 20 20 e right hand..
019270: 20 65 6E 64 29 20 72 65 66 65 72 73 20 74 6F 20 end) refers to
019280: 74 68 65 20 66 69 72 73 74 20 20 69 74 65 6D 20 the first item
019290: 20 6F 6E 20 20 74 68 65 20 20 6D 65 6E 75 2E 20 on the menu.
0192A0: 20 20 49 66 20 20 79 6F 75 20 77 61 6E 74 20 74 If you want t
0192B0: 6F 20 75 73 65 20 74 68 69 73 0D 0A 20 20 20 66 o use this.. f
0192C0: 65 61 74 75 72 65 20 79 6F 75 72 20 6D 65 6E 75 eature your menu
0192D0: 20 69 73 20 6C 69 6D 69 74 65 64 20 74 6F 20 31 is limited to 1
0192E0: 36 20 69 74 65 6D 73 2E 0D 0A 0D 0A 20 20 20 59 6 items..... Y
0192F0: 6F 75 20 63 61 6E 20 63 61 6C 63 75 6C 61 74 65 ou can calculate
019300: 6C 74 69 70 6C 79 20 62 79 20 31 30 0D 0A 20 20 ltiply by 10..
019310: 20 69 66 20 53 48 49 46 54 20 69 73 20 70 72 65 if SHIFT is pre
019320: 73 73 65 64 2C 20 6F 72 20 62 79 20 31 20 69 66 ssed, or by 1 if
019330: 20 20 69 74 20 69 73 6E 27 74 2E 20 20 59 6F 75 it isn't. You
019340: 20 63 6F 75 6C 64 20 67 65 74 20 74 68 65 20 73 could get the s
019350: 61 6D 65 20 65 66 66 65 63 74 0D 0A 20 20 20 77 ame effect.. w
019360: 69 74 68 20 61 20 6C 6F 74 20 6F 66 20 49 46 20 ith a lot of IF
019370: 73 74 61 74 65 6D 65 6E 74 73 20 69 6E 20 61 20 statements in a
019380: 6D 75 63 68 20 73 69 6D 70 6C 65 72 2C 20 62 75 much simpler, bu
019390: 74 20 6C 6F 6E 67 65 72 2C 20 77 61 79 2E 0D 0A t longer, way...
0193A0: 0D 0A 20 20 20 57 48 41 54 20 41 42 4F 55 54 20 .. WHAT ABOUT
0193B0: 54 48 45 20 53 55 42 52 4F 55 54 49 4E 45 53 3F THE SUBROUTINES?
0193C0: 0D 0A 20 20 20 59 65 73 2C 20 77 65 27 6C 6C 20 .. Yes, we'll
0193D0: 67 65 74 20 6F 6E 74 6F 20 74 68 65 6D 20 6E 65 get onto them ne
0193E0: 78 74 20 20 6D 6F 6E 74 68 2E 20 20 20 42 65 20 xt month. Be
0193F0: 70 61 74 69 65 6E 74 21 20 20 49 6E 20 74 68 65 patient! In the
019400: 20 6D 65 61 6E 74 69 6D 65 2C 20 77 68 79 0D 0A meantime, why..
019410: 20 20 20 6E 6F 74 20 61 6C 74 65 72 20 4C 69 73 not alter Lis
019420: 74 69 6E 67 20 32 20 20 73 6F 20 20 74 68 61 74 ting 2 so that
019430: 20 20 79 6F 75 20 20 63 61 6E 6E 6F 74 20 20 6F you cannot o
019440: 72 64 65 72 20 20 6E 65 67 61 74 69 76 65 20 71 rder negative q
019450: 75 61 6E 74 69 74 69 65 73 20 6F 66 0D 0A 20 20 uantities of..
019460: 20 6D 61 67 61 7A 69 6E 65 73 2E 2E 2E 0D 0A 0D magazines......
019470: 0A 0D 0A 0D 0A 20 20 20 4C 69 73 74 69 6E 67 20 ..... Listing
019480: 31 3A 0D 0A 0D 0A 20 20 20 31 30 20 4D 4F 44 45 1:.... 10 MODE
019490: 20 31 3A 6D 63 68 3D 33 3A 6D 66 3D 30 3A 6D 64 1:mch=3:mf=0:md
0194A0: 65 3D 30 0D 0A 20 20 20 32 30 20 6D 63 6F 6C 3D e=0.. 20 mcol=
0194B0: 32 3A 6D 73 70 3D 31 36 3A 6D 78 3D 30 3A 6D 79 2:msp=16:mx=0:my
0194C0: 3D 33 39 39 2D 35 2A 31 36 3A 6D 62 68 3D 31 36 =399-5*16:mbh=16
0194D0: 3A 6D 62 6C 3D 31 36 2A 32 2D 32 0D 0A 20 20 20 :mbl=16*2-2..
0194E0: 33 30 20 75 70 3D 30 3A 64 6F 77 3D 32 3A 6C 65 30 up=0:dow=2:le
0194F0: 3D 34 37 3A 72 69 3D 31 3A 66 69 3D 31 38 3A 6B =47:ri=1:fi=18:k
019500: 20 6D 66 20 69 6E 20 76 61 72 69 6F 75 73 20 20 mf in various
019510: 77 61 79 73 2C 20 20 61 6E 64 20 20 69 74 20 72 ways, and it r
019520: 65 61 6C 6C 79 20 64 65 70 65 6E 64 73 20 6F 6E eally depends on
019530: 20 77 68 65 74 68 65 72 0D 0A 20 20 20 79 6F 75 whether.. you
019540: 20 77 69 6C 6C 20 6E 65 65 64 20 74 6F 20 61 6C will need to al
019550: 74 65 72 20 69 74 20 6D 75 63 68 2E 20 20 20 49 ter it much. I
019560: 66 20 20 6D 66 20 20 69 73 20 20 67 6F 69 6E 67 f mf is going
019570: 20 74 6F 20 73 74 61 79 20 74 68 65 20 73 61 6D to stay the sam
019580: 65 2C 20 74 68 65 0D 0A 20 20 20 65 61 73 69 65 e, the.. easie
019590: 73 74 20 77 61 79 20 69 73 20 74 6F 20 73 65 74 st way is to set
0195A0: 20 69 74 20 69 6E 20 62 69 6E 61 72 79 3A 0D 0A it in binary:..
0195B0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 6D .. m
0195C0: 66 3D 26 78 31 30 31 30 30 30 0D 0A 0D 0A 20 20 f=&x101000....
0195D0: 20 4F 74 68 65 72 77 69 73 65 20 79 6F 75 20 77 Otherwise you w
0195E0: 69 6C 6C 20 70 72 6F 62 61 62 6C 79 20 20 68 61 ill probably ha
0195F0: 76 65 20 20 74 6F 20 20 6D 65 73 73 20 20 61 72 ve to mess ar
019600: 6F 75 6E 64 20 20 77 69 74 68 20 20 70 6F 77 65 ound with powe
019610: 72 73 20 6F 66 20 32 20 74 6F 0D 0A 20 20 20 61 rs of 2 to.. a
019620: 63 68 69 65 76 65 20 74 68 65 20 72 69 67 68 74 chieve the right
019630: 20 76 61 6C 75 65 2E 0D 0A 0D 0A 20 20 20 4C 4F value..... LO
019640: 4F 4B 49 4E 47 20 53 48 49 46 54 59 0D 0A 20 20 OKING SHIFTY..
019650: 20 54 68 65 20 70 72 6F 67 72 61 6D 20 61 73 20 The program as
019660: 69 74 20 73 74 61 6E 64 73 20 6F 6E 6C 79 20 61 it stands only a
019670: 6C 6C 6F 77 73 20 20 79 6F 75 20 20 74 6F 20 61 llows you to a
019680: 6C 74 65 72 20 74 68 65 20 71 75 61 6E 74 69 74 lter the quantit
019690: 69 65 73 20 62 79 20 6F 6E 65 0D 0A 20 20 20 61 ies by one.. a
0196A0: 74 20 61 20 74 69 6D 65 2E 20 20 49 74 20 77 6F t a time. It wo
0196B0: 75 6C 64 20 62 65 20 6E 69 63 65 20 74 6F 20 20 uld be nice to
0196C0: 62 65 20 20 61 62 6C 65 20 20 74 6F 20 68 6F 6C be able to hol
0196D0: 64 20 74 68 65 20 53 48 49 46 54 20 6B 65 79 20 d the SHIFT key
0196E0: 64 6F 77 6E 20 61 6E 64 0D 0A 20 20 20 70 72 65 down and.. pre
0196F0: 73 73 20 6C 65 66 74 20 6F 72 20 72 69 67 68 74 ss left or right
019700: 20 6A 75 73 74 20 74 6F 20 20 69 67 6E 6F 72 65 just to ignore
019710: 20 69 74 2E 20 20 49 74 20 61 6C 73 6F 20 6D 61 it. It also ma
019720: 6B 65 73 20 74 68 65 20 42 41 53 49 43 0D 0A 20 kes the BASIC..
019730: 20 20 70 72 6F 67 72 61 6D 20 6D 75 63 68 20 73 program much s
019740: 69 6D 70 6C 65 72 20 66 6F 72 20 61 20 63 68 61 impler for a cha
019750: 6E 67 65 21 0D 0A 0D 0A 20 20 20 4A 75 73 74 20 nge!.... Just
019760: 66 6F 72 20 74 68 65 20 72 65 63 6F 72 64 2C 20 for the record,
019770: 77 65 20 6F 75 67 68 74 20 74 6F 20 70 6F 69 6E we ought to poin
019780: 74 20 20 6F 75 74 20 20 74 68 61 74 20 65 76 65 t out that eve
019790: 6E 20 69 66 20 79 6F 75 20 73 65 74 20 6B 66 20 n if you set kf
0197A0: 74 6F 20 35 0D 0A 20 20 20 74 6F 20 73 68 6F 77 to 5.. to show
0197B0: 20 74 68 61 74 20 79 6F 75 20 61 72 65 20 6E 6F that you are no
0197C0: 74 20 69 6E 74 65 72 65 73 74 65 64 20 69 6E 20 t interested in
0197D0: 74 68 65 20 22 72 69 22 20 20 6B 65 79 2C 20 69 the "ri" key, i
0197E0: 66 20 74 68 65 20 75 73 65 72 20 70 72 65 73 73 f the user press
0197F0: 65 73 0D 0A 20 20 20 74 68 65 20 22 6C 65 22 20 es.. the "le"
019800: 61 6E 64 20 22 72 69 22 20 6B 65 79 73 20 74 6F and "ri" keys to
019810: 67 65 74 68 65 72 20 20 74 68 65 6E 20 20 6B 70 gether then kp
019820: 20 20 77 69 6C 6C 20 20 62 65 20 72 65 74 75 72 will be retur
019830: 6E 65 64 20 61 73 20 33 2C 20 6E 6F 74 20 31 2E ned as 3, not 1.
019840: 0D 0A 20 20 20 54 68 65 72 65 20 61 72 65 20 63 .. There are c
019850: 61 73 65 73 20 77 68 65 72 65 20 74 68 69 73 20 ases where this
019860: 6D 69 67 68 74 20 62 65 20 20 61 20 20 6E 75 69 might be a nui
019870: 73 61 6E 63 65 2C 20 73 6F 20 69 66 20 79 6F 75 sance, so if you
019880: 20 77 61 6E 74 20 74 6F 20 61 76 6F 69 64 0D 0A want to avoid..
019890: 20 20 20 69 74 2C 20 79 6F 75 20 63 61 6E 20 6A it, you can j
0198A0: 75 73 74 20 73 61 79 0D 0A 0D 0A 20 20 20 20 20 ust say....
0198B0: 20 20 20 20 20 20 20 20 6B 70 3D 6B 70 20 41 4E kp=kp AN
0198C0: 44 20 6B 66 0D 0A 0D 0A 20 20 20 73 74 72 61 69 D kf.... strai
0198D0: 67 68 74 20 61 66 74 65 72 20 74 68 65 20 72 65 ght after the re
0198E0: 74 75 72 6E 20 66 72 6F 6D 20 6C 69 6E 65 20 31 turn from line 1
0198F0: 30 30 30 2C 20 20 61 6E 64 20 74 68 65 6E 20 6B 000, and then k
019900: 20 74 6F 20 61 6C 74 65 72 20 74 68 65 20 76 61 to alter the va
019910: 6C 75 65 20 20 62 79 20 20 74 65 6E 2E 20 20 54 lue by ten. T
019920: 6F 20 64 6F 20 74 68 69 73 20 77 65 20 77 69 6C o do this we wil
019930: 6C 20 68 61 76 65 0D 0A 20 20 20 74 6F 20 6D 6F l have.. to mo
019940: 64 69 66 79 20 74 68 65 20 6D 65 6E 75 20 73 75 dify the menu su
019950: 62 72 6F 75 74 69 6E 65 2C 20 61 73 20 77 65 20 broutine, as we
019960: 64 6F 6E 27 74 20 68 61 76 65 20 61 20 73 70 61 don't have a spa
019970: 72 65 20 6B 65 79 2E 0D 0A 0D 0A 20 20 20 4A 75 re key..... Ju
019980: 73 74 20 61 64 64 20 6F 6E 74 6F 20 74 68 65 20 st add onto the
019990: 65 6E 64 20 6F 66 20 6C 69 6E 65 20 31 30 30 36 end of line 1006
0199A0: 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 :....
0199B0: 20 20 2D 38 2A 28 49 4E 4B 45 59 28 73 68 29 3E -8*(INKEY(sh)>
0199C0: 2D 31 29 0D 0A 0D 0A 20 20 20 61 6E 64 20 61 64 -1).... and ad
0199D0: 64 20 22 73 68 3D 32 31 22 20 74 6F 20 6C 69 6E d "sh=21" to lin
0199E0: 65 20 33 30 2E 20 20 54 68 69 73 20 74 65 73 74 e 30. This test
0199F0: 73 20 61 6E 6F 74 68 65 72 20 6B 65 79 2C 20 22 s another key, "
019A00: 73 68 22 2C 20 77 68 69 63 68 20 68 61 73 20 62 sh", which has b
019A10: 65 65 6E 0D 0A 20 20 20 73 65 74 20 75 70 20 74 een.. set up t
019A20: 6F 20 62 65 20 74 68 65 20 20 53 48 49 46 54 20 o be the SHIFT
019A30: 20 6B 65 79 2E 20 20 20 45 69 67 68 74 20 20 77 key. Eight w
019A40: 69 6C 6C 20 20 62 65 20 20 61 64 64 65 64 20 20 ill be added
019A50: 74 6F 20 6B 70 20 69 66 20 53 48 49 46 54 20 69 to kp if SHIFT i
019A60: 73 0D 0A 20 20 20 70 72 65 73 73 65 64 2E 0D 0A s.. pressed...
019A70: 0D 0A 20 20 20 57 65 20 64 6F 20 6E 6F 74 20 6E .. We do not n
019A80: 65 65 64 20 74 6F 20 61 6C 74 65 72 20 6B 66 20 eed to alter kf
019A90: 62 65 63 61 75 73 65 20 20 77 65 20 64 6F 20 6E because we do n
019AA0: 6F 74 20 77 61 6E 74 20 63 6F 6E 74 72 6F 6C 20 ot want control
019AB0: 74 6F 20 72 65 74 75 72 6E 20 66 72 6F 6D 0D 0A to return from..
019AC0: 20 20 20 6C 69 6E 65 20 31 30 30 30 20 69 66 20 line 1000 if
019AD0: 74 68 65 20 53 48 49 46 54 20 6B 65 79 20 69 73 the SHIFT key is
019AE0: 20 70 72 65 73 73 65 64 20 20 6F 6E 20 69 74 73 pressed on its
019AF0: 20 6F 77 6E 2E 20 20 57 68 65 74 68 65 72 20 74 own. Whether t
019B00: 70 20 77 69 6C 6C 20 6F 6E 6C 79 20 74 65 6C 6C p will only tell
019B10: 20 79 6F 75 0D 0A 20 20 20 61 62 6F 75 74 20 74 you.. about t
019B20: 68 65 20 73 74 61 74 65 20 6F 66 20 74 68 65 20 he state of the
019B30: 6B 65 79 73 20 69 6E 64 69 63 61 74 65 64 20 69 keys indicated i
019B40: 6E 20 6B 66 2E 0D 0A 0D 0A 20 20 20 42 41 43 4B n kf..... BACK
019B50: 20 54 4F 20 54 48 45 20 49 53 53 55 45 0D 0A 20 TO THE ISSUE..
019B60: 20 20 4F 75 72 20 73 65 63 6F 6E 64 20 65 78 61 Our second exa
019B70: 6D 70 6C 65 20 74 68 69 73 20 6D 6F 6E 74 68 20 mple this month
019B80: 73 68 6F 77 73 20 77 68 61 74 20 79 6F 75 20 6D shows what you m
019B90: 69 67 68 74 20 77 61 6E 74 20 74 68 65 20 22 6C ight want the "l
019BA0: 65 22 20 61 6E 64 20 22 72 69 22 0D 0A 20 20 20 e" and "ri"..
019BB0: 6B 65 79 73 20 66 6F 72 2E 20 20 59 6F 75 20 77 keys for. You w
019BC0: 69 6C 6C 20 6E 65 65 64 20 74 6F 20 74 79 70 65 ill need to type
019BD0: 20 69 6E 20 20 6C 69 6E 65 73 20 20 31 30 30 30 in lines 1000
019BE0: 20 74 6F 20 31 30 31 37 20 61 67 61 69 6E 20 74 to 1017 again t
019BF0: 6F 20 67 6F 20 77 69 74 68 0D 0A 20 20 20 4C 69 o go with.. Li
019C00: 73 74 69 6E 67 20 32 2E 20 20 3C 3C 54 68 65 20 sting 2. <<The
019C10: 77 68 6F 6C 65 20 77 6F 72 6B 69 6E 67 20 20 70 whole working p
019C20: 72 6F 67 72 61 6D 20 20 69 73 20 20 73 61 76 65 rogram is save
019C30: 64 20 61 73 20 4D 45 4E 55 45 58 33 2E 42 41 53 d as MENUEX3.BAS
019C40: 20 6F 6E 20 74 68 65 0D 0A 20 20 20 64 69 73 63 on the.. disc
019C50: 3E 3E 0D 0A 0D 0A 20 20 20 54 68 65 20 75 73 65 >>.... The use
019C60: 72 20 69 73 20 70 72 65 73 65 6E 74 65 64 20 77 r is presented w
019C70: 69 74 68 20 61 6E 20 6F 72 64 65 72 20 66 6F 72 ith an order for
019C80: 6D 20 66 6F 72 20 62 61 63 6B 20 69 73 73 75 65 m for back issue
019C90: 73 20 6F 66 20 6F 75 72 20 66 61 76 6F 75 72 69 s of our favouri
019CA0: 74 65 0D 0A 20 20 20 6D 61 67 61 7A 69 6E 65 2E te.. magazine.
019CB0: 20 20 54 68 65 20 6C 65 66 74 20 61 6E 64 20 72 The left and r
019CC0: 69 67 68 74 20 20 63 75 72 73 6F 72 20 20 6B 65 ight cursor ke
019CD0: 79 73 20 20 61 64 6A 75 73 74 20 20 74 68 65 20 ys adjust the
019CE0: 71 75 61 6E 74 69 74 79 20 6F 66 20 65 61 63 68 quantity of each
019CF0: 0D 0A 20 20 20 6D 61 67 61 7A 69 6E 65 20 74 6F .. magazine to
019D00: 68 65 20 53 48 49 46 54 20 6B 65 79 0D 0A 20 20 he SHIFT key..
019D10: 20 77 61 73 20 70 72 65 73 73 65 64 20 69 73 20 was pressed is
019D20: 73 74 69 6C 6C 20 69 6E 64 69 63 61 74 65 64 20 still indicated
019D30: 69 6E 20 6B 70 2C 20 65 76 65 6E 20 20 74 68 6F in kp, even tho
019D40: 75 67 68 20 77 65 20 73 65 74 20 6B 66 20 74 6F ugh we set kf to
019D50: 20 73 68 6F 77 20 74 68 61 74 0D 0A 20 20 20 77 show that.. w
019D60: 65 20 77 65 72 65 20 6E 6F 74 20 69 6E 74 65 72 e were not inter
019D70: 65 73 74 65 64 20 69 6E 20 69 74 2E 0D 0A 0D 0A ested in it.....
019D80: 20 20 20 46 69 6E 61 6C 6C 79 20 77 65 20 6E 65 Finally we ne
019D90: 65 64 20 74 6F 20 61 6C 74 65 72 20 20 6C 69 6E ed to alter lin
019DA0: 65 20 20 31 35 30 2C 20 20 77 68 65 72 65 20 20 e 150, where
019DB0: 74 68 65 20 71 75 61 6E 74 69 74 79 20 6F 66 20 the quantity of
019DC0: 6D 61 67 61 7A 69 6E 65 73 20 69 73 0D 0A 20 20 magazines is..
019DD0: 20 61 64 6A 75 73 74 65 64 3A 0D 0A 0D 0A 20 20 adjusted:....
019DE0: 20 31 35 30 20 6E 75 6D 28 6D 70 29 3D 6E 75 6D 150 num(mp)=num
019DF0: 28 6D 70 29 2B 28 28 28 6B 70 20 41 4E 44 20 31 (mp)+(((kp AND 1
019E00: 29 3D 31 29 2D 28 28 6B 70 20 41 4E 44 20 32 29 )=1)-((kp AND 2)
019E10: 3D 32 29 29 2A 28 31 2D 39 2A 28 28 6B 70 20 41 =2))*(1-9*((kp A
019E20: 4E 44 20 38 29 3D 38 29 29 3A 0D 0A 20 20 20 20 ND 8)=8)):..
019E30: 20 20 20 47 4F 53 55 42 20 32 31 30 0D 0A 0D 0A GOSUB 210....
019E40: 20 20 20 3C 3C 54 68 65 20 61 6C 74 65 72 65 64 <<The altered
019E50: 20 76 65 72 73 69 6F 6E 20 69 73 20 73 61 76 65 version is save
019E60: 64 20 61 73 20 4D 45 4E 55 45 58 34 2E 42 41 53 d as MENUEX4.BAS
019E70: 20 6F 6E 20 74 68 65 20 64 69 73 63 3E 3E 0D 0A on the disc>>..
019E80: 0D 0A 20 20 20 54 68 69 73 20 74 69 6D 65 20 77 .. This time w
019E90: 65 20 64 6F 20 6E 65 65 64 20 74 6F 20 20 63 6F e do need to co
019EA0: 70 65 20 20 77 69 74 68 20 20 6D 6F 72 65 20 20 pe with more
019EB0: 74 68 61 6E 20 20 6F 6E 65 20 6B 65 79 20 62 65 than one key be
019EC0: 69 6E 67 20 70 72 65 73 73 65 64 20 61 74 0D 0A ing pressed at..
019ED0: 20 20 20 6F 6E 63 65 2C 20 73 6F 20 74 68 65 20 once, so the
019EE0: 6C 69 6E 65 20 69 73 20 61 20 20 6C 6F 74 20 20 line is a lot
019EF0: 6D 6F 72 65 20 20 63 6F 6D 70 6C 69 63 61 74 65 more complicate
019F00: 20 62 65 20 6F 72 64 65 72 65 64 2E 20 20 43 65 be ordered. Ce
019F10: 72 74 61 69 6E 20 69 73 73 75 65 73 20 61 72 65 rtain issues are
019F20: 20 6F 75 74 20 6F 66 20 73 74 6F 63 6B 2C 20 61 out of stock, a
019F30: 6E 64 20 73 6F 20 74 68 65 20 6D 65 6E 75 0D 0A nd so the menu..
019F40: 20 20 20 62 61 72 20 77 69 6C 6C 20 72 6F 6C 6C bar will roll
019F50: 20 73 74 72 61 69 67 68 74 20 6F 76 65 72 20 74 straight over t
019F60: 68 65 73 65 20 6F 70 74 69 6F 6E 73 20 20 74 6F hese options to
019F70: 20 74 68 65 20 6E 65 78 74 20 6F 6E 65 2E 20 20 the next one.
019F80: 59 6F 75 20 6D 61 79 20 68 61 76 65 0D 0A 20 20 You may have..
019F90: 20 73 65 65 6E 20 73 69 6D 69 6C 61 72 20 66 65 seen similar fe
019FA0: 61 74 75 72 65 73 20 6F 6E 20 74 68 65 20 6D 65 atures on the me
019FB0: 6E 75 73 20 6F 66 20 74 68 65 20 41 64 76 61 6E nus of the Advan
019FC0: 63 65 64 20 4D 75 73 69 63 20 53 79 73 74 65 6D ced Music System
019FD0: 2E 0D 0A 0D 0A 20 20 20 4C 69 6E 65 20 31 35 30 ..... Line 150
019FE0: 20 61 64 6A 75 73 74 73 20 74 68 65 20 6E 75 6D adjusts the num
019FF0: 62 65 72 20 6F 66 20 6D 61 67 61 7A 69 6E 65 73 ber of magazines
01A000: 20 61 63 63 6F 72 64 69 6E 67 20 74 6F 20 77 68 according to wh
01A010: 65 74 68 65 72 20 74 68 65 20 22 6C 65 22 20 6F ether the "le" o
01A020: 72 0D 0A 20 20 20 22 72 69 22 20 6B 65 79 73 20 r.. "ri" keys
01A030: 61 72 65 20 70 72 65 73 73 65 64 2E 20 20 54 68 are pressed. Th
01A040: 69 73 20 69 73 20 61 20 20 6D 75 63 68 20 73 69 is is a much si
01A050: 6D 70 6C 65 72 20 76 65 72 73 69 6F 6E 20 6F 66 mpler version of
01A060: 20 74 68 65 20 74 65 63 68 6E 69 71 75 65 73 0D the techniques.
01A070: 0A 20 20 20 77 65 20 65 78 70 6C 61 69 6E 65 64 . we explained
01A080: 20 69 6E 20 74 68 65 20 4D 61 72 63 68 20 61 72 in the March ar
01A090: 74 69 63 6C 65 2E 0D 0A 0D 0A 20 20 20 48 6F 77 ticle..... How
01A0A0: 20 64 6F 20 77 65 20 74 65 6C 6C 20 74 68 65 20 do we tell the
01A0B0: 6D 65 6E 75 20 20 72 6F 75 74 69 6E 65 20 20 74 menu routine t
01A0C0: 6F 20 20 72 6F 6C 6C 20 6F 76 65 72 20 74 68 65 o roll over the
01A0D0: 20 6D 61 67 61 7A 69 6E 65 20 69 73 73 75 65 73 magazine issues
01A0E0: 20 77 68 69 63 68 0D 0A 20 20 20 61 72 65 20 6F which.. are o
01A0F0: 75 74 20 6F 66 20 73 74 6F 63 6B 3F 20 20 54 68 ut of stock? Th
01A100: 64 20 20 74 68 61 6E 20 62 65 66 6F 72 65 2E 20 d than before.
01A110: 20 54 6F 20 66 69 6E 64 20 6F 75 74 0D 0A 20 20 To find out..
01A120: 20 66 72 6F 6D 20 6B 70 20 20 77 68 65 74 68 65 from kp whethe
01A130: 72 20 20 61 20 20 70 61 72 74 69 63 75 6C 61 72 r a particular
01A140: 20 20 6B 65 79 20 20 69 73 20 20 70 72 65 73 73 key is press
01A150: 65 64 20 20 77 65 20 20 41 4E 44 20 20 6B 70 20 ed we AND kp
01A160: 20 77 69 74 68 20 20 74 68 65 0D 0A 20 20 20 61 with the.. a
01A170: 70 70 72 6F 70 72 69 61 74 65 20 76 61 6C 75 65 ppropriate value
01A180: 2E 20 20 54 68 75 73 20 69 66 20 74 68 65 20 22 . Thus if the "
01A190: 73 68 22 20 6B 65 79 20 69 73 20 20 70 72 65 73 sh" key is pres
01A1A0: 73 65 64 2C 20 6B 70 20 41 4E 44 20 38 20 77 69 sed, kp AND 8 wi
01A1B0: 6C 6C 20 62 65 20 38 3A 0D 0A 20 20 20 6F 74 68 ll be 8:.. oth
01A1C0: 65 72 77 69 73 65 20 69 74 20 69 73 20 7A 65 72 erwise it is zer
01A1D0: 6F 2E 0D 0A 0D 0A 20 20 20 41 67 61 69 6E 20 20 o..... Again
01A1E0: 77 65 20 20 61 72 65 20 20 75 73 69 6E 67 20 20 we are using
01A1F0: 74 68 65 20 20 20 72 65 73 75 6C 74 73 20 20 20 the results
01A200: 6F 66 20 20 20 6C 6F 67 69 63 61 6C 20 20 65 78 of logical ex
01A210: 70 72 65 73 73 69 6F 6E 73 20 20 69 6E 20 20 6F pressions in o
01A220: 75 72 0D 0A 20 20 20 63 61 6C 63 75 6C 61 74 69 ur.. calculati
01A230: 6F 6E 73 2E 20 20 54 68 65 20 69 6D 70 6F 72 74 ons. The import
01A240: 61 6E 74 20 70 6F 69 6E 74 20 69 73 20 74 68 61 ant point is tha
01A250: 74 20 20 61 20 74 72 75 65 20 73 74 61 74 65 6D t a true statem
01A260: 65 6E 74 20 68 61 73 20 76 61 6C 75 65 20 2D 31 ent has value -1
01A270: 0D 0A 20 20 20 61 6E 64 20 61 20 66 61 6C 73 65 .. and a false
01A280: 20 73 74 61 74 65 6D 65 6E 74 20 67 69 76 65 73 statement gives
01A290: 20 30 2E 20 20 54 68 65 20 20 66 69 72 73 74 20 0. The first
01A2A0: 70 61 72 74 20 6F 66 20 74 68 65 20 65 78 70 72 part of the expr
01A2B0: 65 73 73 69 6F 6E 20 67 69 76 65 73 20 2D 0D 0A ession gives -..
01A2C0: 20 20 20 31 2C 20 30 20 6F 72 20 31 20 64 65 70 1, 0 or 1 dep
01A2D0: 65 6E 64 69 6E 67 20 6F 6E 20 74 68 65 20 6C 65 ending on the le
01A2E0: 66 74 20 20 61 6E 64 20 20 72 69 67 68 74 20 6B ft and right k
01A2F0: 65 79 73 2E 20 20 57 65 20 74 68 65 6E 20 6D 75 eys. We then mu
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 C2 02 00 00 00 02 ......N.........
01A320: 16 00 C7 02 00 00 00 02 16 00 C3 02 00 00 00 02 ................
01A330: 16 00 C8 02 00 00 00 02 16 00 C4 02 00 00 00 02 ................
01A340: 16 00 C9 02 00 00 00 02 16 00 C5 02 00 00 00 02 ................
01A350: 16 00 C1 02 00 00 00 02 16 00 C6 02 00 00 00 02 ................
01A360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A3F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01A400: 0A 20 20 20 31 36 30 20 4C 4F 43 41 54 45 20 31 . 160 LOCATE 1
01A410: 30 2C 6D 70 2B 36 3A 49 46 20 6F 75 72 6B 66 20 0,mp+6:IF ourkf
01A420: 41 4E 44 20 32 5E 6D 70 20 54 48 45 4E 20 50 52 AND 2^mp THEN PR
01A430: 49 4E 54 22 4F 6E 20 22 20 45 4C 53 45 20 50 52 INT"On " ELSE PR
01A440: 49 4E 54 22 4F 66 66 22 0D 0A 20 20 20 31 37 30 INT"Off".. 170
01A450: 20 52 45 54 55 52 4E 0D 0A 20 20 20 31 30 30 30 RETURN.. 1000
01A460: 20 6B 70 3D 30 3A 6D 64 3D 31 3A 6D 7A 3D 30 0D kp=0:md=1:mz=0.
01A470: 0A 20 20 20 31 30 30 31 20 57 48 49 4C 45 20 28 . 1001 WHILE (
01A480: 6B 70 20 41 4E 44 20 6B 66 29 3D 30 0D 0A 20 20 kp AND kf)=0..
01A490: 20 31 30 30 32 20 57 48 49 4C 45 20 28 32 5E 6D 1002 WHILE (2^m
01A4A0: 70 20 41 4E 44 20 6D 66 29 3E 30 20 4F 52 20 6D p AND mf)>0 OR m
01A4B0: 7A 0D 0A 20 20 20 31 30 30 33 20 6D 7A 3D 30 3A z.. 1003 mz=0:
01A4C0: 47 4F 53 55 42 20 31 30 31 30 3A 6D 70 3D 28 6D GOSUB 1010:mp=(m
01A4D0: 70 2B 6D 63 68 2B 6D 64 29 20 4D 4F 44 20 6D 63 p+mch+md) MOD mc
01A4E0: 68 3A 47 4F 53 55 42 20 31 30 31 30 0D 0A 20 20 h:GOSUB 1010..
01A4F0: 20 31 30 30 34 20 57 45 4E 44 0D 0A 20 20 20 31 1004 WEND.. 1
01A500: 30 30 35 20 6D 64 3D 28 49 4E 4B 45 59 28 75 70 005 md=(INKEY(up
01A510: 29 3E 2D 31 29 2D 28 49 4E 4B 45 59 28 64 6F 77 )>-1)-(INKEY(dow
01A520: 29 3E 2D 31 29 3A 6D 7A 3D 6D 64 0D 0A 20 20 20 )>-1):mz=md..
01A530: 31 30 30 36 20 6B 70 3D 2D 28 49 4E 4B 45 59 28 1006 kp=-(INKEY(
01A540: 6C 65 29 3E 2D 31 29 2D 32 2A 28 49 4E 4B 45 59 le)>-1)-2*(INKEY
01A550: 28 72 69 29 3E 2D 31 29 2D 34 2A 28 49 4E 4B 45 (ri)>-1)-4*(INKE
01A560: 59 28 66 69 29 3E 2D 31 29 0D 0A 20 20 20 31 30 Y(fi)>-1).. 10
01A570: 30 37 20 57 45 4E 44 0D 0A 20 20 20 31 30 30 38 07 WEND.. 1008
01A580: 20 57 48 49 4C 45 20 49 4E 4B 45 59 24 3C 3E 22 WHILE INKEY$<>"
01A590: 22 3A 57 45 4E 44 0D 0A 20 20 20 31 30 30 39 20 ":WEND.. 1009
01A5A0: 52 45 54 55 52 4E 0D 0A 20 20 20 31 30 31 30 20 RETURN.. 1010
01A5B0: 50 52 49 4E 54 20 43 48 52 24 28 32 33 29 2B 43 PRINT CHR$(23)+C
01A5C0: 48 52 24 28 31 29 3B 0D 0A 20 20 20 31 30 31 31 HR$(1);.. 1011
01A5D0: 20 4D 4F 56 45 20 6D 78 2C 6D 79 2D 6D 70 2A 6D MOVE mx,my-mp*m
01A5E0: 73 70 2B 28 6D 64 3D 2D 31 29 2A 28 6D 62 68 2D sp+(md=-1)*(mbh-
01A5F0: 32 29 0D 0A 20 20 20 31 30 31 32 20 46 4F 52 20 2).. 1012 FOR
01A600: 23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61 #Programmers' Pa
01A610: 74 63 68 20 38 20 2D 20 57 41 43 43 49 20 31 31 tch 8 - WACCI 11
01A620: 37 2C 20 4E 6F 76 2F 44 65 63 20 31 39 39 37 2C 7, Nov/Dec 1997,
01A630: 20 70 2E 20 31 35 2D 31 36 0D 0A 20 20 20 50 52 p. 15-16.. PR
01A640: 4F 47 52 41 4D 4D 45 52 53 27 20 50 41 54 43 48 OGRAMMERS' PATCH
01A650: 20 38 0D 0A 20 20 20 42 79 20 53 74 65 70 68 65 8.. By Stephe
01A660: 6E 20 61 6E 64 20 4D 61 74 74 68 65 77 20 50 68 n and Matthew Ph
01A670: 69 6C 6C 69 70 73 0D 0A 0D 0A 20 20 20 49 6E 20 illips.... In
01A680: 74 68 65 20 6C 61 73 74 20 6F 66 20 74 68 72 65 the last of thre
01A690: 65 20 61 72 74 69 63 6C 65 73 20 61 62 6F 75 74 e articles about
01A6A0: 20 6D 65 6E 75 20 68 61 6E 64 6C 69 6E 67 20 69 menu handling i
01A6B0: 6E 20 42 41 53 49 43 20 77 65 20 61 72 65 20 67 n BASIC we are g
01A6C0: 6F 69 6E 67 20 74 6F 0D 0A 20 20 20 6C 6F 6F 6B oing to.. look
01A6D0: 20 61 74 20 68 6F 77 20 74 68 65 20 72 6F 75 74 at how the rout
01A6E0: 69 6E 65 73 20 20 77 65 20 20 68 61 76 65 20 20 ines we have
01A6F0: 70 72 65 73 65 6E 74 65 64 20 20 77 6F 72 6B 2E presented work.
01A700: 20 20 20 52 65 6D 65 6D 62 65 72 20 74 68 61 74 Remember that
01A710: 20 69 74 20 69 73 0D 0A 20 20 20 70 6F 73 73 69 it is.. possi
01A720: 62 6C 65 20 74 6F 20 75 73 65 20 74 68 65 20 73 ble to use the s
01A730: 75 62 72 6F 75 74 69 6E 65 73 20 20 79 6F 75 72 ubroutines your
01A740: 73 65 6C 66 20 20 77 69 74 68 6F 75 74 20 20 68 self without h
01A750: 61 76 69 6E 67 20 61 20 63 6C 75 65 20 68 6F 77 aving a clue how
01A760: 20 74 68 65 79 0D 0A 20 20 20 61 63 74 75 61 6C they.. actual
01A770: 6C 79 20 64 6F 20 74 68 65 20 6A 6F 62 2E 20 20 ly do the job.
01A780: 49 66 20 79 6F 75 20 77 61 6E 74 20 74 6F 20 61 If you want to a
01A790: 64 61 70 74 20 74 68 65 20 73 75 62 72 6F 75 74 dapt the subrout
01A7A0: 69 6E 65 73 20 79 6F 75 72 73 65 6C 66 20 6F 72 ines yourself or
01A7B0: 20 75 73 65 0D 0A 20 20 20 73 6F 6D 65 20 20 6F use.. some o
01A7C0: 66 20 20 74 68 65 20 20 74 65 63 68 6E 69 71 75 f the techniqu
01A7D0: 65 73 20 20 69 6E 20 20 79 6F 75 72 20 20 20 6F es in your o
01A7E0: 77 6E 20 20 70 72 6F 67 72 61 6D 73 2C 20 20 74 wn programs, t
01A7F0: 68 65 6E 20 20 74 68 65 20 20 66 6F 6C 6C 6F 77 hen the follow
01A800: 6D 63 3D 31 20 54 4F 20 6D 62 68 2F 32 0D 0A 20 mc=1 TO mbh/2..
01A810: 20 20 31 30 31 33 20 44 52 41 57 52 20 6D 62 6C 1013 DRAWR mbl
01A820: 2C 30 2C 6D 63 6F 6C 3A 4D 4F 56 45 52 20 2D 6D ,0,mcol:MOVER -m
01A830: 62 6C 2C 2D 32 2D 28 6D 64 3D 2D 31 29 2A 34 0D bl,-2-(md=-1)*4.
01A840: 0A 20 20 20 31 30 31 34 20 46 4F 52 20 64 65 6C . 1014 FOR del
01A850: 61 79 3D 30 20 54 4F 20 6D 64 65 3A 4E 45 58 54 ay=0 TO mde:NEXT
01A860: 0D 0A 20 20 20 31 30 31 35 20 4E 45 58 54 0D 0A .. 1015 NEXT..
01A870: 20 20 20 31 30 31 36 20 50 52 49 4E 54 20 43 48 1016 PRINT CH
01A880: 52 24 28 32 33 29 2B 43 48 52 24 28 30 29 3B 0D R$(23)+CHR$(0);.
01A890: 0A 20 20 20 31 30 31 37 20 52 45 54 55 52 4E 0D . 1017 RETURN.
01A8A0: 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 4C 69 73 74 ......... List
01A8B0: 69 6E 67 20 32 3A 0D 0A 0D 0A 20 20 20 31 30 20 ing 2:.... 10
01A8C0: 6D 63 68 3D 36 3A 6D 66 3D 38 2B 33 32 3A 6D 64 mch=6:mf=8+32:md
01A8D0: 65 3D 30 0D 0A 20 20 20 32 30 20 6D 63 6F 6C 3D e=0.. 20 mcol=
01A8E0: 31 3A 6D 73 70 3D 33 32 3A 6D 78 3D 31 32 34 3A 1:msp=32:mx=124:
01A8F0: 6D 79 3D 33 32 32 3A 6D 62 68 3D 32 32 3A 6D 62 my=322:mbh=22:mb
01A900: 6C 3D 31 33 32 0D 0A 20 20 20 33 30 20 75 70 3D l=132.. 30 up=
01A910: 30 3A 64 6F 77 3D 32 3A 6C 65 3D 38 3A 72 69 3D 0:dow=2:le=8:ri=
01A920: 31 3A 66 69 3D 34 37 3A 6B 66 3D 37 0D 0A 20 20 1:fi=47:kf=7..
01A930: 20 34 30 20 44 49 4D 20 6E 75 6D 28 6D 63 68 2D 40 DIM num(mch-
01A940: 31 29 0D 0A 20 20 20 35 30 20 4D 4F 44 45 20 31 1).. 50 MODE 1
01A950: 3A 4C 4F 43 41 54 45 20 38 2C 33 3A 50 52 49 4E :LOCATE 8,3:PRIN
01A960: 54 22 57 41 43 43 49 20 62 61 63 6B 2D 69 73 73 T"WACCI back-iss
01A970: 75 65 73 20 6F 72 64 65 72 73 22 0D 0A 20 20 20 ues orders"..
01A980: 36 30 20 4C 4F 43 41 54 45 20 38 2C 34 3A 50 52 60 LOCATE 8,4:PR
01A990: 49 4E 54 20 53 54 52 49 4E 47 24 28 32 34 2C 22 INT STRING$(24,"
01A9A0: 2D 22 29 3A 4C 4F 43 41 54 45 20 31 2C 31 39 0D -"):LOCATE 1,19.
01A9B0: 0A 20 20 20 37 30 20 50 52 49 4E 54 22 55 73 65 . 70 PRINT"Use
01A9C0: 20 74 68 65 20 63 75 72 73 6F 72 20 6B 65 79 73 the cursor keys
01A9D0: 20 74 6F 20 6D 6F 76 65 20 61 6E 64 20 61 6C 74 to move and alt
01A9E0: 65 72 2E 20 20 53 50 41 43 45 20 74 6F 20 66 69 er. SPACE to fi
01A9F0: 6E 69 73 68 2E 22 0D 0A 20 20 20 38 30 20 46 4F nish.".. 80 FO
01AA00: 69 6E 67 0D 0A 20 20 20 65 78 70 6C 61 6E 61 74 ing.. explanat
01AA10: 69 6F 6E 20 6D 61 79 20 62 65 20 68 65 6C 70 66 ion may be helpf
01AA20: 75 6C 2E 20 20 49 66 20 69 74 20 20 69 73 6E 27 ul. If it isn'
01AA30: 74 20 20 74 68 65 6E 20 20 77 72 69 74 65 20 74 t then write t
01AA40: 6F 20 46 61 69 72 20 43 6F 6D 6D 65 6E 74 20 61 o Fair Comment a
01AA50: 6E 64 0D 0A 20 20 20 63 6F 6D 70 6C 61 69 6E 21 nd.. complain!
01AA60: 0D 0A 0D 0A 20 20 20 54 68 65 20 72 6F 75 74 69 .... The routi
01AA70: 6E 65 73 20 68 61 76 65 20 62 65 65 6E 20 72 65 nes have been re
01AA80: 70 72 69 6E 74 65 64 20 20 66 6F 72 20 20 79 6F printed for yo
01AA90: 75 20 20 79 65 74 20 20 61 67 61 69 6E 2C 20 61 u yet again, a
01AAA0: 6C 6F 6E 67 20 77 69 74 68 20 61 20 74 61 62 6C long with a tabl
01AAB0: 65 0D 0A 20 20 20 73 68 6F 77 69 6E 67 20 61 6C e.. showing al
01AAC0: 6C 20 74 68 65 20 76 61 72 69 61 62 6C 65 73 20 l the variables
01AAD0: 77 65 20 20 75 73 65 2E 20 20 20 3C 3C 54 68 65 we use. <<The
01AAE0: 20 20 6D 65 6E 75 20 20 72 6F 75 74 69 6E 65 20 menu routine
01AAF0: 69 73 20 61 6C 73 6F 20 73 61 76 65 64 20 6F 6E is also saved on
01AB00: 0D 0A 20 20 20 64 69 73 63 20 61 73 20 4D 45 4E .. disc as MEN
01AB10: 55 53 55 42 3E 3E 0D 0A 0D 0A 20 20 20 57 45 4E USUB>>.... WEN
01AB20: 44 49 4E 47 20 4F 55 52 20 57 41 59 0D 0A 20 20 DING OUR WAY..
01AB30: 20 54 68 65 20 6D 61 69 6E 20 73 75 62 72 6F 75 The main subrou
01AB40: 74 69 6E 65 2C 20 6C 69 6E 65 73 20 20 31 30 30 tine, lines 100
01AB50: 30 2D 31 30 30 39 2C 20 20 63 6F 6E 74 61 69 6E 0-1009, contain
01AB60: 73 20 73 65 76 65 72 61 6C 20 57 48 49 4C 45 2D s several WHILE-
01AB70: 57 45 4E 44 20 6C 6F 6F 70 73 2E 0D 0A 20 20 20 WEND loops...
01AB80: 4C 69 6E 65 20 31 30 30 38 20 73 65 65 73 20 6F Line 1008 sees o
01AB90: 75 72 20 66 61 76 6F 75 72 69 74 65 20 6C 6F 6F ur favourite loo
01ABA0: 70 20 20 66 6F 72 20 63 6C 65 61 72 69 6E 67 20 p for clearing
01ABB0: 74 68 65 20 6B 65 79 62 6F 61 72 64 20 62 75 66 the keyboard buf
01ABC0: 66 65 72 2E 20 20 54 68 69 73 0D 0A 20 20 20 69 fer. This.. i
01ABD0: 73 20 64 6F 6E 65 20 62 65 66 6F 72 65 20 72 65 s done before re
01ABE0: 74 75 72 6E 69 6E 67 20 74 6F 20 79 6F 75 72 20 turning to your
01ABF0: 20 70 72 6F 67 72 61 6D 20 20 69 6E 20 20 6F 72 program in or
01AC00: 52 20 6D 70 3D 30 20 54 4F 20 6D 63 68 2D 31 3A R mp=0 TO mch-1:
01AC10: 4C 4F 43 41 54 45 20 39 2C 36 2B 6D 70 2A 32 3A LOCATE 9,6+mp*2:
01AC20: 50 52 49 4E 54 22 57 41 43 43 49 22 34 30 2B 6D PRINT"WACCI"40+m
01AC30: 70 3A 47 4F 53 55 42 20 32 31 30 3A 4E 45 58 54 p:GOSUB 210:NEXT
01AC40: 0D 0A 20 20 20 39 30 20 46 4F 52 20 6D 70 3D 30 .. 90 FOR mp=0
01AC50: 20 54 4F 20 6D 63 68 2D 31 0D 0A 20 20 20 31 30 TO mch-1.. 10
01AC60: 30 20 49 46 20 6D 66 20 41 4E 44 20 32 5E 6D 70 0 IF mf AND 2^mp
01AC70: 20 54 48 45 4E 20 4C 4F 43 41 54 45 20 33 30 2C THEN LOCATE 30,
01AC80: 32 2A 6D 70 2B 36 3A 50 52 49 4E 54 22 28 6E 6F 2*mp+6:PRINT"(no
01AC90: 20 73 74 6F 63 6B 29 22 0D 0A 20 20 20 31 31 30 stock)".. 110
01ACA0: 20 4E 45 58 54 0D 0A 20 20 20 31 32 30 20 6D 70 NEXT.. 120 mp
01ACB0: 3D 30 3A 6B 70 3D 30 0D 0A 20 20 20 31 33 30 20 =0:kp=0.. 130
01ACC0: 47 4F 53 55 42 20 31 30 31 30 0D 0A 20 20 20 31 GOSUB 1010.. 1
01ACD0: 34 30 20 57 48 49 4C 45 20 6B 70 3C 3E 34 0D 0A 40 WHILE kp<>4..
01ACE0: 20 20 20 31 35 30 20 6E 75 6D 28 6D 70 29 3D 6E 150 num(mp)=n
01ACF0: 75 6D 28 6D 70 29 2B 28 6B 70 3D 31 29 2D 28 6B um(mp)+(kp=1)-(k
01AD00: 70 3D 32 29 3A 47 4F 53 55 42 20 32 31 30 0D 0A p=2):GOSUB 210..
01AD10: 20 20 20 31 36 30 20 47 4F 53 55 42 20 31 30 30 160 GOSUB 100
01AD20: 30 0D 0A 20 20 20 31 37 30 20 57 45 4E 44 0D 0A 0.. 170 WEND..
01AD30: 20 20 20 31 38 30 20 6D 61 67 73 3D 30 3A 46 4F 180 mags=0:FO
01AD40: 52 20 78 3D 30 20 54 4F 20 6D 63 68 2D 31 3A 6D R x=0 TO mch-1:m
01AD50: 61 67 73 3D 6D 61 67 73 2B 6E 75 6D 28 78 29 3A ags=mags+num(x):
01AD60: 4E 45 58 54 0D 0A 20 20 20 31 39 30 20 4C 4F 43 NEXT.. 190 LOC
01AD70: 41 54 45 20 31 2C 32 32 3A 50 52 49 4E 54 22 54 ATE 1,22:PRINT"T
01AD80: 68 61 6E 6B 20 79 6F 75 20 66 6F 72 20 79 6F 75 hank you for you
01AD90: 72 20 6F 72 64 65 72 2E 22 0D 0A 20 20 20 32 30 r order.".. 20
01ADA0: 30 20 50 52 49 4E 54 22 50 6C 65 61 73 65 20 73 0 PRINT"Please s
01ADB0: 65 6E 64 20 61 20 63 68 65 71 75 65 20 66 6F 72 end a cheque for
01ADC0: 20 A3 22 3B 55 53 49 4E 47 22 23 23 2E 23 23 22 £";USING"##.##"
01ADD0: 3B 30 2E 35 2A 6D 61 67 73 3A 45 4E 44 0D 0A 20 ;0.5*mags:END..
01ADE0: 20 20 32 31 30 20 4C 4F 43 41 54 45 20 32 37 2C 210 LOCATE 27,
01ADF0: 36 2B 6D 70 2A 32 3A 50 52 49 4E 54 20 6E 75 6D 6+mp*2:PRINT num
01AE00: 64 65 72 20 74 6F 20 6D 61 6B 65 20 73 75 72 65 der to make sure
01AE10: 20 74 68 61 74 20 74 68 65 0D 0A 20 20 20 6B 65 that the.. ke
01AE20: 79 20 70 72 65 73 73 65 73 20 66 72 6F 6D 20 74 y presses from t
01AE30: 68 65 20 6D 65 6E 75 20 20 73 65 6C 65 63 74 69 he menu selecti
01AE40: 6F 6E 20 20 61 72 65 20 20 60 75 73 65 64 20 75 on are `used u
01AE50: 70 27 20 70 72 6F 70 65 72 6C 79 2E 20 20 54 72 p' properly. Tr
01AE60: 79 20 74 61 6B 69 6E 67 0D 0A 20 20 20 74 68 65 y taking.. the
01AE70: 20 6C 69 6E 65 20 6F 75 74 20 61 6E 64 20 79 6F line out and yo
01AE80: 75 20 77 69 6C 6C 20 73 6F 6F 6E 20 73 65 65 20 u will soon see
01AE90: 77 68 79 20 69 74 20 69 73 20 75 73 65 66 75 6C why it is useful
01AEA0: 20 74 6F 20 68 61 76 65 20 69 74 20 74 68 65 72 to have it ther
01AEB0: 65 2E 0D 0A 0D 0A 20 20 20 4C 69 6E 65 73 20 31 e..... Lines 1
01AEC0: 30 30 31 2D 31 30 30 37 20 66 6F 72 6D 20 74 68 001-1007 form th
01AED0: 65 20 6D 61 69 6E 20 20 57 48 49 4C 45 2D 57 45 e main WHILE-WE
01AEE0: 4E 44 20 20 6C 6F 6F 70 20 20 6F 66 20 74 68 65 ND loop of the
01AEF0: 20 73 75 62 72 6F 75 74 69 6E 65 2C 20 77 69 74 subroutine, wit
01AF00: 68 69 6E 0D 0A 20 20 20 77 68 69 63 68 20 74 68 hin.. which th
01AF10: 65 72 65 20 69 73 20 79 65 74 20 61 6E 6F 74 68 ere is yet anoth
01AF20: 65 72 20 6C 6F 6F 70 20 61 74 20 6C 69 6E 65 73 er loop at lines
01AF30: 20 31 30 30 32 20 74 6F 20 31 30 30 34 2E 0D 0A 1002 to 1004...
01AF40: 0D 0A 20 20 20 54 68 65 20 6D 61 69 6E 20 6C 6F .. The main lo
01AF50: 6F 70 20 69 73 20 65 73 73 65 6E 74 69 61 6C 6C op is essentiall
01AF60: 79 20 20 61 6C 6C 20 20 61 62 6F 75 74 20 20 63 y all about c
01AF70: 68 65 63 6B 69 6E 67 20 20 74 68 65 20 6B 65 79 hecking the key
01AF80: 73 20 74 68 61 74 20 74 68 65 20 75 73 65 72 0D s that the user.
01AF90: 0A 20 20 20 70 72 65 73 73 65 73 2E 20 20 54 68 . presses. Th
01AFA0: 65 20 22 75 70 22 20 61 6E 64 20 20 22 64 6F 77 e "up" and "dow
01AFB0: 22 20 20 6B 65 79 73 20 20 61 72 65 20 20 64 65 " keys are de
01AFC0: 74 65 63 74 65 64 20 20 69 6E 20 20 6C 69 6E 65 tected in line
01AFD0: 20 20 31 30 30 35 20 61 6E 64 20 74 68 65 0D 0A 1005 and the..
01AFE0: 20 20 20 69 6E 74 65 72 6E 61 6C 20 76 61 72 69 internal vari
01AFF0: 61 62 6C 65 20 22 6D 64 22 20 69 73 20 73 65 74 able "md" is set
01B000: 28 6D 70 29 3A 52 45 54 55 52 4E 0D 0A 1A 00 FF (mp):RETURN.....
01B010: 50 41 54 43 48 20 37 0D 0A 20 20 20 42 79 20 53 PATCH 7.. By S
01B020: 74 65 70 68 65 6E 20 61 6E 64 20 4D 61 74 74 68 tephen and Matth
01B030: 65 77 20 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A 20 ew Phillips....
01B040: 20 20 4C 61 73 74 20 6D 6F 6E 74 68 20 77 65 20 Last month we
01B050: 73 74 61 72 74 65 64 20 6C 6F 6F 6B 69 6E 67 20 started looking
01B060: 61 74 20 20 61 20 20 73 68 6F 72 74 20 20 72 6F at a short ro
01B070: 75 74 69 6E 65 20 66 6F 72 20 68 61 6E 64 6C 69 utine for handli
01B080: AB 2C ED DA 19 35 3F A4 3A 86 75 0C 3B 2F CC EF .,...5?.:.u.;/..
01B090: 16 00 03 22 E8 09 03 22 F5 09 03 22 FE 09 03 44 ..."..."..."...D
01B0A0: 1D 00 03 44 0D 00 03 4C 64 02 03 44 67 3D 00 00 ...D...Ld..Dg=..
01B0B0: 11 FF 69 6E 74 20 20 20 20 20 00 00 12 FF 6C 6F ..int ....lo
01B0C0: 6E 67 20 20 20 20 00 00 13 FF 72 65 67 69 73 74 ng ....regist
01B0D0: 65 72 00 00 14 FF 72 65 74 75 72 6E 20 20 00 00 er....return ..
01B0E0: 15 FF 73 68 6F 72 74 20 20 20 00 00 16 FF 73 69 ..short ....si
01B0F0: 7A 65 6F 03 00 BA 63 01 00 01 07 00 D0 63 BF 00 zeo...c......c..
01B100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B1A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B1B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B1C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B1D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B1E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B1F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B200: 66 3D 35 0D 0A 20 20 20 34 30 20 6F 75 72 6B 66 f=5.. 40 ourkf
01B210: 3D 30 0D 0A 20 20 20 35 30 20 50 52 49 4E 54 22 =0.. 50 PRINT"
01B220: 50 72 65 73 73 20 53 50 41 43 45 20 74 6F 20 74 Press SPACE to t
01B230: 6F 67 67 6C 65 20 74 68 65 20 76 61 6C 75 65 73 oggle the values
01B240: 20 4F 6E 2F 4F 66 66 22 0D 0A 20 20 20 36 30 20 On/Off".. 60
01B250: 50 52 49 4E 54 20 43 48 52 24 28 33 34 29 22 4F PRINT CHR$(34)"O
01B260: 66 66 22 43 48 52 24 28 33 34 29 22 20 6D 65 61 ff"CHR$(34)" mea
01B270: 6E 73 20 74 68 65 20 6B 65 79 20 77 6F 75 6C 64 ns the key would
01B280: 20 62 65 20 69 67 6E 6F 72 65 64 22 0D 0A 20 20 be ignored"..
01B290: 20 37 30 20 50 52 49 4E 54 3A 50 52 49 4E 54 22 70 PRINT:PRINT"
01B2A0: 50 72 65 73 73 20 52 45 54 55 52 4E 20 74 6F 20 Press RETURN to
01B2B0: 63 61 6C 63 75 6C 61 74 65 20 74 68 65 20 6B 66 calculate the kf
01B2C0: 20 76 61 6C 75 65 22 0D 0A 20 20 20 38 30 20 4C value".. 80 L
01B2D0: 4F 43 41 54 45 20 31 2C 36 3A 50 52 49 4E 54 22 OCATE 1,6:PRINT"
01B2E0: 6C 65 22 3A 50 52 49 4E 54 22 72 69 22 3A 50 52 le":PRINT"ri":PR
01B2F0: 49 4E 54 22 66 69 22 0D 0A 20 20 20 39 30 20 46 INT"fi".. 90 F
01B300: 4F 52 20 6D 70 3D 30 20 54 4F 20 6D 63 68 2D 31 OR mp=0 TO mch-1
01B310: 3A 47 4F 53 55 42 20 31 36 30 3A 4E 45 58 54 3A :GOSUB 160:NEXT:
01B320: 6D 70 3D 30 0D 0A 20 20 20 31 30 30 20 47 4F 53 mp=0.. 100 GOS
01B330: 55 42 20 31 30 31 30 0D 0A 20 20 20 31 31 30 20 UB 1010.. 110
01B340: 57 48 49 4C 45 20 6B 70 3C 3E 34 0D 0A 20 20 20 WHILE kp<>4..
01B350: 31 32 30 20 47 4F 53 55 42 20 31 30 30 30 0D 0A 120 GOSUB 1000..
01B360: 20 20 20 31 33 30 20 49 46 20 6B 70 3D 31 20 54 130 IF kp=1 T
01B370: 48 45 4E 20 6F 75 72 6B 66 3D 6F 75 72 6B 66 20 HEN ourkf=ourkf
01B380: 58 4F 52 20 32 5E 6D 70 3A 47 4F 53 55 42 20 31 XOR 2^mp:GOSUB 1
01B390: 36 30 3A 46 4F 52 20 64 65 6C 61 79 3D 31 20 54 60:FOR delay=1 T
01B3A0: 4F 20 31 30 30 3A 4E 45 58 54 0D 0A 20 20 20 31 O 100:NEXT.. 1
01B3B0: 34 30 20 57 45 4E 44 0D 0A 20 20 20 31 35 30 20 40 WEND.. 150
01B3C0: 47 4F 53 55 42 20 31 30 31 30 3A 4C 4F 43 41 54 GOSUB 1010:LOCAT
01B3D0: 45 20 31 2C 31 30 3A 50 52 49 4E 54 22 54 68 65 E 1,10:PRINT"The
01B3E0: 20 6B 66 20 76 61 6C 75 65 20 79 6F 75 20 6E 65 kf value you ne
01B3F0: 65 64 20 69 73 22 6F 75 72 6B 66 3A 45 4E 44 0D ed is"ourkf:END.
01B400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
01B5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
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 C9 02 00 00 00 02 ......N.........
01B620: 17 00 C5 02 00 00 00 02 17 00 C1 02 00 00 00 02 ................
01B630: 17 00 C6 02 00 00 00 02 17 00 C2 02 00 00 00 02 ................
01B640: 17 00 C7 02 00 00 00 02 17 00 C3 02 00 00 00 02 ................
01B650: 17 00 C8 02 00 00 00 02 17 00 C4 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: 65 73 20 74 68 65 20 6D 65 6E 75 20 62 61 72 2E es the menu bar.
01B710: 0D 0A 0D 0A 20 20 20 20 20 54 68 65 20 66 69 72 .... The fir
01B720: 73 74 20 63 6F 6D 6D 61 6E 64 20 69 6E 73 69 64 st command insid
01B730: 65 20 74 68 65 20 6C 6F 6F 70 2C 20 6F 6E 20 20 e the loop, on
01B740: 6C 69 6E 65 20 31 30 30 33 2C 20 73 65 74 73 20 line 1003, sets
01B750: 6D 7A 20 74 6F 20 7A 65 72 6F 20 61 67 61 69 6E mz to zero again
01B760: 2C 0D 0A 20 20 20 6D 61 6B 69 6E 67 20 69 74 20 ,.. making it
01B770: 66 61 6C 73 65 2E 20 20 54 68 65 20 6D 65 6E 75 false. The menu
01B780: 20 62 61 72 20 74 68 65 6E 20 6D 6F 76 65 73 20 bar then moves
01B790: 20 6F 6E 20 20 74 6F 20 74 68 65 20 6E 65 78 74 on to the next
01B7A0: 20 6D 65 6E 75 20 69 74 65 6D 20 75 70 20 6F 72 menu item up or
01B7B0: 0D 0A 20 20 20 64 6F 77 6E 2E 20 20 55 70 6F 6E .. down. Upon
01B7C0: 20 72 65 61 63 68 69 6E 67 20 74 68 65 20 57 45 reaching the WE
01B7D0: 4E 44 20 69 6E 20 6C 69 6E 65 20 20 31 30 30 34 ND in line 1004
01B7E0: 2C 20 74 68 65 20 62 61 72 20 6D 6F 76 69 6E 67 , the bar moving
01B7F0: 20 6C 6F 6F 70 20 77 69 6C 6C 20 6F 6E 6C 79 0D loop will only.
01B800: 0A 20 20 20 65 78 65 63 75 74 65 20 61 67 61 69 . execute agai
01B810: 6E 20 69 66 20 74 68 65 20 62 61 72 20 69 73 20 n if the bar is
01B820: 20 6F 76 65 72 20 20 61 20 20 70 72 6F 68 69 62 over a prohib
01B830: 69 74 65 64 20 6D 65 6E 75 20 6F 70 74 69 6F 6E ited menu option
01B840: 2C 20 73 69 6E 63 65 20 6D 7A 20 68 61 73 0D 0A , since mz has..
01B850: 20 20 20 62 65 65 6E 20 72 65 73 65 74 20 74 6F been reset to
01B860: 20 74 68 65 20 66 61 6C 73 65 20 76 61 6C 75 65 the false value
01B870: 20 6F 66 20 7A 65 72 6F 2E 0D 0A 0D 0A 20 20 20 of zero.....
01B880: 20 20 57 68 79 20 64 69 64 20 77 65 20 6E 65 65 Why did we nee
01B890: 64 20 61 6E 6F 74 68 65 72 20 76 61 72 69 61 62 d another variab
01B8A0: 6C 65 20 20 74 68 6F 75 67 68 20 20 2D 20 20 63 le though - c
01B8B0: 6F 75 6C 64 20 77 65 20 6E 6F 74 20 6A 75 73 74 ould we not just
01B8C0: 20 68 61 76 65 20 75 73 65 64 0D 0A 20 20 20 6D have used.. m
01B8D0: 64 3F 20 20 57 65 20 63 65 72 74 61 69 6E 6C 79 d? We certainly
01B8E0: 20 6E 65 65 64 20 20 61 20 20 76 61 72 69 61 62 need a variab
01B8F0: 6C 65 20 20 74 68 61 74 20 20 73 68 6F 77 73 20 le that shows
01B900: 72 73 74 20 69 74 65 6D 20 6F 6E 0D 0A 20 20 20 rst item on..
01B910: 74 68 65 20 6D 65 6E 75 2C 20 74 68 65 20 6E 65 the menu, the ne
01B920: 78 74 20 64 69 67 69 74 20 61 6C 6F 6E 67 20 72 xt digit along r
01B930: 65 66 65 72 73 20 74 6F 20 74 68 65 20 73 65 63 efers to the sec
01B940: 6F 6E 64 20 69 74 65 6D 20 61 6E 64 20 73 6F 20 ond item and so
01B950: 6F 6E 2E 0D 0A 0D 0A 20 20 20 46 6F 72 20 65 78 on..... For ex
01B960: 61 6D 70 6C 65 2C 20 69 66 20 6D 66 20 77 61 73 ample, if mf was
01B970: 20 38 20 28 31 30 30 30 20 20 69 6E 20 20 62 69 8 (1000 in bi
01B980: 6E 61 72 79 29 2C 20 20 74 68 69 73 20 6D 65 61 nary), this mea
01B990: 6E 73 20 74 68 61 74 20 74 68 65 20 31 73 74 2C ns that the 1st,
01B9A0: 20 32 6E 64 0D 0A 20 20 20 61 6E 64 20 33 72 64 2nd.. and 3rd
01B9B0: 20 69 74 65 6D 73 20 6F 6E 20 74 68 65 20 6D 65 items on the me
01B9C0: 6E 75 20 20 63 61 6E 20 20 62 65 20 20 73 65 6C nu can be sel
01B9D0: 65 63 74 65 64 2C 20 20 62 75 74 20 20 74 68 65 ected, but the
01B9E0: 20 20 34 74 68 20 69 74 65 6D 20 69 73 20 74 6F 4th item is to
01B9F0: 20 62 65 0D 0A 20 20 20 61 76 6F 69 64 65 64 2E be.. avoided.
01BA00: 20 20 49 66 20 6D 66 20 77 61 73 20 31 32 20 28 If mf was 12 (
01BA10: 31 31 30 30 20 20 69 6E 20 20 62 69 6E 61 72 79 1100 in binary
01BA20: 29 2C 20 20 74 68 65 6E 20 20 74 68 65 20 33 72 ), then the 3r
01BA30: 64 20 69 74 65 6D 20 6D 75 73 74 20 6E 6F 74 20 d item must not
01BA40: 62 65 0D 0A 20 20 20 73 65 6C 65 63 74 65 64 20 be.. selected
01BA50: 65 69 74 68 65 72 2E 0D 0A 0D 0A 20 20 20 54 68 either..... Th
01BA60: 65 20 70 6F 73 69 74 69 6F 6E 20 6F 66 20 74 68 e position of th
01BA70: 65 20 6D 65 6E 75 20 62 61 72 20 69 73 20 68 65 e menu bar is he
01BA80: 6C 64 20 69 6E 20 22 6D 70 22 2E 20 20 46 6F 72 ld in "mp". For
01BA90: 20 6D 6F 72 65 20 74 68 61 6E 20 6F 6E 65 20 72 more than one r
01BAA0: 65 61 73 6F 6E 20 77 65 0D 0A 20 20 20 73 74 61 eason we.. sta
01BAB0: 72 74 20 63 6F 75 6E 74 69 6E 67 20 66 72 6F 6D rt counting from
01BAC0: 20 7A 65 72 6F 2C 20 73 6F 20 6D 70 20 20 69 73 zero, so mp is
01BAD0: 20 20 7A 65 72 6F 20 20 77 68 65 6E 20 20 74 68 zero when th
01BAE0: 65 20 20 6D 65 6E 75 20 62 61 72 20 69 73 20 6F e menu bar is o
01BAF0: 76 65 72 20 74 68 65 0D 0A 20 20 20 66 69 72 73 ver the.. firs
01BB00: 20 20 74 6F 20 20 69 6E 64 69 63 61 74 65 20 20 to indicate
01BB10: 77 68 69 63 68 20 20 64 69 72 65 63 74 69 6F 6E which direction
01BB20: 20 74 68 65 20 6D 65 6E 75 20 62 61 72 0D 0A 20 the menu bar..
01BB30: 20 20 73 68 6F 75 6C 64 20 6D 6F 76 65 2C 20 75 should move, u
01BB40: 73 69 6E 67 20 6D 75 63 68 20 74 68 65 20 73 61 sing much the sa
01BB50: 6D 65 20 20 74 65 63 68 6E 69 71 75 65 20 20 61 me technique a
01BB60: 73 20 69 6E 20 74 68 65 20 64 69 73 63 20 6D 65 s in the disc me
01BB70: 6E 75 20 70 72 6F 67 72 61 6D 6D 65 0D 0A 20 20 nu programme..
01BB80: 20 77 65 20 66 65 61 74 75 72 65 64 20 69 6E 20 we featured in
01BB90: 69 73 73 75 65 20 31 31 30 2E 20 20 49 6E 20 74 issue 110. In t
01BBA0: 68 65 20 6E 65 78 74 20 6C 69 6E 65 20 74 68 65 he next line the
01BBB0: 20 6F 74 68 65 72 20 6B 65 79 73 2C 20 22 6C 65 other keys, "le
01BBC0: 22 2C 20 22 72 69 22 20 61 6E 64 0D 0A 20 20 20 ", "ri" and..
01BBD0: 22 66 69 22 20 61 72 65 20 63 68 65 63 6B 65 64 "fi" are checked
01BBE0: 2E 20 20 54 68 65 20 76 61 6C 75 65 20 20 6F 66 . The value of
01BBF0: 20 20 22 6B 70 22 20 20 69 73 20 20 73 65 74 20 "kp" is set
01BC00: 61 63 63 6F 72 64 69 6E 67 20 74 6F 20 77 68 65 according to whe
01BC10: 74 68 65 72 20 74 68 6F 73 65 0D 0A 20 20 20 6B ther those.. k
01BC20: 65 79 73 20 61 72 65 20 70 72 65 73 73 65 64 20 eys are pressed
01BC30: 6F 72 20 6E 6F 74 2C 20 61 73 20 77 65 20 20 65 or not, as we e
01BC40: 78 70 6C 61 69 6E 65 64 20 6C 61 73 74 20 6D 6F xplained last mo
01BC50: 6E 74 68 2E 20 20 53 65 74 74 69 6E 67 20 61 73 nth. Setting as
01BC60: 69 64 65 20 6C 69 6E 65 73 0D 0A 20 20 20 31 30 ide lines.. 10
01BC70: 30 32 20 74 6F 20 31 30 30 34 2C 20 77 68 69 63 02 to 1004, whic
01BC80: 68 20 64 6F 20 74 68 65 20 6D 6F 76 69 6E 67 20 h do the moving
01BC90: 6F 66 20 74 68 65 20 6D 65 6E 75 20 62 61 72 2C of the menu bar,
01BCA0: 20 74 68 61 74 20 69 73 20 61 6C 6C 20 74 68 65 that is all the
01BCB0: 72 65 20 69 73 20 74 6F 0D 0A 20 20 20 69 74 2E re is to.. it.
01BCC0: 0D 0A 0D 0A 20 20 20 54 68 65 20 6D 61 69 6E 20 .... The main
01BCD0: 6C 6F 6F 70 20 6B 65 65 70 73 20 67 6F 69 6E 67 loop keeps going
01BCE0: 20 77 68 69 6C 65 0D 0A 0D 0A 20 20 20 20 20 20 while....
01BCF0: 20 20 20 20 20 28 6B 70 20 41 4E 44 20 6B 66 29 (kp AND kf)
01BD00: 74 20 69 74 65 6D 20 6F 6E 20 74 68 65 20 6D 65 t item on the me
01BD10: 6E 75 2C 20 6F 6E 65 20 77 68 65 6E 20 69 74 20 nu, one when it
01BD20: 69 73 20 6F 76 65 72 20 74 68 65 20 73 65 63 6F is over the seco
01BD30: 6E 64 20 69 74 65 6D 20 61 6E 64 20 73 6F 20 6F nd item and so o
01BD40: 6E 2E 0D 0A 0D 0A 20 20 20 54 68 65 20 65 78 70 n..... The exp
01BD50: 72 65 73 73 69 6F 6E 0D 0A 0D 0A 20 20 20 20 20 ression....
01BD60: 20 20 20 20 20 20 28 32 5E 6D 70 20 41 4E 44 20 (2^mp AND
01BD70: 6D 66 29 3E 30 0D 0A 0D 0A 20 20 20 69 6E 20 6C mf)>0.... in l
01BD80: 69 6E 65 20 31 30 30 32 20 69 73 20 64 65 73 69 ine 1002 is desi
01BD90: 67 6E 65 64 20 74 6F 20 74 65 73 74 20 77 68 65 gned to test whe
01BDA0: 74 68 65 72 20 74 68 65 20 6D 65 6E 75 20 62 61 ther the menu ba
01BDB0: 72 20 69 73 20 6F 76 65 72 20 61 20 70 72 6F 68 r is over a proh
01BDC0: 69 62 69 74 65 64 0D 0A 20 20 20 69 74 65 6D 2E ibited.. item.
01BDD0: 20 20 28 54 68 65 20 5E 20 73 79 6D 62 6F 6C 20 (The ^ symbol
01BDE0: 69 73 20 74 68 65 20 73 61 6D 65 20 20 61 73 20 is the same as
01BDF0: 20 74 68 65 20 20 75 70 20 61 72 72 6F 77 20 74 the up arrow t
01BE00: 68 61 74 20 73 68 61 72 65 73 20 61 20 6B 65 79 hat shares a key
01BE10: 20 77 69 74 68 0D 0A 20 20 20 74 68 65 20 70 6F with.. the po
01BE20: 75 6E 64 20 73 69 67 6E 20 6F 6E 20 79 6F 75 72 und sign on your
01BE30: 20 43 50 43 29 2E 20 20 54 72 79 20 6F 75 74 20 CPC). Try out
01BE40: 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 6F 6E the following on
01BE50: 20 79 6F 75 72 20 63 6F 6D 70 75 74 65 72 3A 0D your computer:.
01BE60: 0A 0D 0A 20 20 20 20 20 46 4F 52 20 6D 70 3D 30 ... FOR mp=0
01BE70: 20 54 4F 20 36 3A 50 52 49 4E 54 20 42 49 4E 24 TO 6:PRINT BIN$
01BE80: 28 32 5E 6D 70 29 3A 4E 45 58 54 0D 0A 0D 0A 20 (2^mp):NEXT....
01BE90: 20 20 54 68 69 73 20 70 72 69 6E 74 73 20 75 70 This prints up
01BEA0: 20 32 5E 6D 70 20 69 6E 20 62 69 6E 61 72 79 2C 2^mp in binary,
01BEB0: 20 61 6E 64 20 79 6F 75 20 77 69 6C 6C 20 20 73 and you will s
01BEC0: 65 65 20 74 68 61 74 20 61 73 20 6D 70 20 67 6F ee that as mp go
01BED0: 65 73 20 66 72 6F 6D 20 30 20 74 6F 0D 0A 20 20 es from 0 to..
01BEE0: 20 36 2C 20 74 68 65 20 62 69 6E 61 72 79 20 66 6, the binary f
01BEF0: 6F 72 6D 20 6F 66 20 32 5E 6D 70 20 67 6F 65 73 orm of 2^mp goes
01BF00: 3D 30 0D 0A 0D 0A 20 20 20 54 68 69 73 20 70 72 =0.... This pr
01BF10: 6F 76 69 64 65 73 20 74 68 65 20 6D 65 63 68 61 ovides the mecha
01BF20: 6E 69 73 6D 20 74 6F 20 69 67 6E 6F 72 65 20 63 nism to ignore c
01BF30: 65 72 74 61 69 6E 20 6B 65 79 73 2E 20 20 49 66 ertain keys. If
01BF40: 20 6B 66 20 69 73 20 73 65 74 20 74 6F 20 34 20 kf is set to 4
01BF50: 28 6F 72 0D 0A 20 20 20 31 30 30 20 69 6E 20 62 (or.. 100 in b
01BF60: 69 6E 61 72 79 29 2C 20 74 68 65 6E 20 6F 6E 6C inary), then onl
01BF70: 79 20 74 68 65 20 22 66 69 22 20 20 6B 65 79 20 y the "fi" key
01BF80: 20 77 69 6C 6C 20 63 61 75 73 65 20 74 68 65 20 will cause the
01BF90: 73 75 62 72 6F 75 74 69 6E 65 20 74 6F 20 65 6E subroutine to en
01BFA0: 64 2E 0D 0A 20 20 20 54 68 65 20 62 69 74 73 20 d... The bits
01BFB0: 6F 66 20 6B 70 20 61 72 65 20 73 65 74 20 69 6E of kp are set in
01BFC0: 20 20 6C 69 6E 65 20 20 31 30 30 36 20 61 63 63 line 1006 acc
01BFD0: 6F 72 64 69 6E 67 20 74 6F 20 77 68 69 63 68 20 ording to which
01BFE0: 6B 65 79 73 20 61 72 65 20 70 72 65 73 73 65 64 keys are pressed
01BFF0: 2E 0D 0A 20 20 20 53 75 70 70 6F 73 65 20 74 68 ... Suppose th
01C000: 65 20 22 6C 65 22 20 61 6E 64 20 22 72 69 22 20 e "le" and "ri"
01C010: 20 6B 65 79 73 20 20 77 65 72 65 20 20 70 72 65 keys were pre
01C020: 73 73 65 64 3B 20 20 6B 70 20 20 77 6F 75 6C 64 ssed; kp would
01C030: 20 20 62 65 20 33 2C 20 6F 72 20 31 31 20 69 6E be 3, or 11 in
01C040: 0D 0A 20 20 20 62 69 6E 61 72 79 2E 0D 0A 0D 0A .. binary.....
01C050: 20 20 20 20 20 20 20 20 20 20 20 30 31 31 20 20 011
01C060: 20 20 6B 70 0D 0A 20 20 20 20 20 20 20 20 20 20 kp..
01C070: 20 31 30 30 20 20 20 20 6B 66 0D 0A 20 20 20 20 100 kf..
01C080: 20 20 20 20 20 20 20 2D 2D 2D 0D 0A 20 20 20 20 ---..
01C090: 20 20 20 20 20 20 20 30 30 30 20 20 20 20 6B 70 000 kp
01C0A0: 20 41 4E 44 20 6B 66 0D 0A 0D 0A 20 20 20 54 68 AND kf.... Th
01C0B0: 65 20 70 72 65 73 73 69 6E 67 20 6F 66 20 74 68 e pressing of th
01C0C0: 65 20 22 6C 65 22 20 61 6E 64 20 22 72 69 22 20 e "le" and "ri"
01C0D0: 6B 65 79 73 20 69 73 20 6D 61 73 6B 65 64 20 6F keys is masked o
01C0E0: 75 74 20 62 79 20 74 68 65 20 6B 65 79 20 66 6C ut by the key fl
01C0F0: 61 67 73 2C 20 6B 66 2C 0D 0A 20 20 20 67 69 76 ags, kf,.. giv
01C100: 20 66 72 6F 6D 20 20 31 20 20 74 6F 20 31 30 2C from 1 to 10,
01C110: 20 31 30 30 2C 20 31 30 30 30 20 61 6E 64 20 73 100, 1000 and s
01C120: 6F 20 6F 6E 2E 20 20 57 68 65 6E 0D 0A 20 20 20 o on. When..
01C130: 74 68 69 73 20 76 61 6C 75 65 20 69 73 20 41 4E this value is AN
01C140: 44 65 64 20 77 69 74 68 20 6D 66 2C 20 69 74 20 Ded with mf, it
01C150: 20 68 61 73 20 20 74 68 65 20 65 66 66 65 63 74 has the effect
01C160: 20 6F 66 20 70 69 63 6B 69 6E 67 20 6F 75 74 20 of picking out
01C170: 74 68 65 20 62 69 6E 61 72 79 0D 0A 20 20 20 64 the binary.. d
01C180: 69 67 69 74 20 6F 66 20 6D 66 20 61 70 70 72 6F igit of mf appro
01C190: 70 72 69 61 74 65 20 74 6F 20 74 68 61 74 20 6D priate to that m
01C1A0: 65 6E 75 20 70 6F 73 69 74 69 6F 6E 20 61 6E 64 enu position and
01C1B0: 20 69 67 6E 6F 72 69 6E 67 20 61 6C 6C 20 74 68 ignoring all th
01C1C0: 65 20 6F 74 68 65 72 73 2E 0D 0A 20 20 20 54 68 e others... Th
01C1D0: 75 73 20 22 32 5E 6D 70 20 41 4E 44 20 6D 66 22 us "2^mp AND mf"
01C1E0: 20 69 73 20 7A 65 72 6F 20 77 68 65 6E 20 77 65 is zero when we
01C1F0: 20 61 72 65 20 61 6C 6C 6F 77 65 64 20 74 6F 20 are allowed to
01C200: 73 74 6F 70 20 6F 6E 20 61 20 6D 65 6E 75 20 70 stop on a menu p
01C210: 6F 73 69 74 69 6F 6E 2C 0D 0A 20 20 20 61 6E 64 osition,.. and
01C220: 20 67 72 65 61 74 65 72 20 74 68 61 6E 20 7A 65 greater than ze
01C230: 72 6F 20 77 68 65 6E 20 77 65 20 6E 65 65 64 20 ro when we need
01C240: 74 6F 20 72 6F 6C 6C 20 6F 76 65 72 20 69 74 2E to roll over it.
01C250: 0D 0A 0D 0A 20 20 20 20 20 49 66 20 79 6F 75 20 .... If you
01C260: 6C 6F 6F 6B 20 61 74 20 6C 69 6E 65 20 31 30 30 look at line 100
01C270: 32 20 74 68 6F 75 67 68 2C 20 20 79 6F 75 20 20 2 though, you
01C280: 77 69 6C 6C 20 73 65 65 20 74 68 61 74 20 74 68 will see that th
01C290: 65 20 57 48 49 4C 45 20 73 74 61 74 65 6D 65 6E e WHILE statemen
01C2A0: 74 0D 0A 20 20 20 69 73 20 61 20 6C 69 74 74 6C t.. is a littl
01C2B0: 65 20 6D 6F 72 65 20 63 6F 6D 70 6C 69 63 61 74 e more complicat
01C2C0: 65 64 2E 20 20 54 68 65 20 20 62 69 74 20 20 77 ed. The bit w
01C2D0: 65 20 20 68 61 76 65 20 6A 75 73 74 20 6C 6F 6F e have just loo
01C2E0: 6B 65 64 20 61 74 20 6B 65 65 70 73 20 74 68 65 ked at keeps the
01C2F0: 0D 0A 20 20 20 6C 6F 6F 70 20 67 6F 69 6E 67 20 .. loop going
01C300: 69 6E 67 20 61 20 72 65 73 75 6C 74 20 6F 66 20 ing a result of
01C310: 7A 65 72 6F 2E 20 20 49 74 20 69 73 20 65 61 73 zero. It is eas
01C320: 79 20 20 74 6F 20 20 73 65 65 20 74 68 61 74 20 y to see that
01C330: 74 68 65 20 6C 6F 6F 70 20 77 69 6C 6C 20 6F 6E the loop will on
01C340: 6C 79 20 63 6F 6D 65 0D 0A 20 20 20 74 6F 20 61 ly come.. to a
01C350: 6E 20 65 6E 64 20 77 68 65 6E 20 74 68 65 20 22 n end when the "
01C360: 66 69 22 20 6B 65 79 20 69 73 20 70 72 65 73 73 fi" key is press
01C370: 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 4D 61 73 6B ed..... Mask
01C380: 69 6E 67 20 6F 75 74 20 62 69 74 2D 73 69 67 6E ing out bit-sign
01C390: 69 66 69 63 61 6E 74 20 76 61 6C 75 65 73 20 20 ificant values
01C3A0: 75 73 69 6E 67 20 20 74 68 65 20 20 41 4E 44 20 using the AND
01C3B0: 20 6F 70 65 72 61 74 6F 72 20 20 69 73 20 61 20 operator is a
01C3C0: 76 65 72 79 0D 0A 20 20 20 69 6D 70 6F 72 74 61 very.. importa
01C3D0: 6E 74 20 74 65 63 68 6E 69 71 75 65 2C 20 65 73 nt technique, es
01C3E0: 70 65 63 69 61 6C 6C 79 20 69 66 20 79 6F 75 20 pecially if you
01C3F0: 61 72 65 20 74 72 79 69 6E 67 20 74 6F 20 73 71 are trying to sq
01C400: 75 65 65 7A 65 20 6C 61 72 67 65 20 61 6D 6F 75 ueeze large amou
01C410: 6E 74 73 0D 0A 20 20 20 6F 66 20 69 6E 66 6F 72 nts.. of infor
01C420: 6D 61 74 69 6F 6E 20 69 6E 74 6F 20 6D 65 6D 6F mation into memo
01C430: 72 79 20 65 66 66 69 63 69 65 6E 74 6C 79 2E 0D ry efficiently..
01C440: 0A 0D 0A 20 20 20 50 55 42 20 43 52 41 57 4C 0D ... PUB CRAWL.
01C450: 0A 20 20 20 54 68 65 20 73 6D 61 6C 6C 65 72 20 . The smaller
01C460: 6C 6F 6F 70 20 69 6E 20 6C 69 6E 65 73 20 31 30 loop in lines 10
01C470: 30 32 20 74 6F 20 31 30 30 34 20 20 6D 61 6B 65 02 to 1004 make
01C480: 73 20 73 75 72 65 20 74 68 61 74 20 74 68 65 20 s sure that the
01C490: 6D 65 6E 75 20 62 61 72 20 6D 6F 76 65 73 0D 0A menu bar moves..
01C4A0: 20 20 20 77 68 65 6E 20 74 68 65 20 75 73 65 72 when the user
01C4B0: 20 70 72 65 73 73 65 73 20 74 68 65 20 22 75 70 presses the "up
01C4C0: 22 20 6F 72 20 22 64 6F 77 22 20 6B 65 79 73 2C " or "dow" keys,
01C4D0: 20 61 6E 64 20 6B 65 65 70 73 20 6F 6E 20 6D 6F and keeps on mo
01C4E0: 76 69 6E 67 20 74 68 65 20 6D 65 6E 75 0D 0A 20 ving the menu..
01C4F0: 20 20 62 61 72 20 69 6E 20 74 68 65 20 73 61 6D bar in the sam
01C500: 75 6E 74 69 6C 20 77 65 20 61 72 65 20 6F 76 65 until we are ove
01C510: 72 20 61 20 20 6D 65 6E 75 20 20 69 74 65 6D 20 r a menu item
01C520: 74 68 61 74 20 69 73 20 73 65 6C 65 63 74 61 62 that is selectab
01C530: 6C 65 2C 20 62 75 74 20 77 65 20 6E 65 65 64 0D le, but we need.
01C540: 0A 20 20 20 61 6E 6F 74 68 65 72 20 70 61 72 74 . another part
01C550: 20 74 6F 20 67 65 74 20 74 68 65 20 6D 65 6E 75 to get the menu
01C560: 20 62 61 72 20 6D 6F 76 69 6E 67 20 20 69 6E 20 bar moving in
01C570: 74 68 65 20 66 69 72 73 74 20 70 6C 61 63 65 2E the first place.
01C580: 20 20 4C 69 6E 65 20 31 30 30 35 20 69 73 0D 0A Line 1005 is..
01C590: 20 20 20 77 68 65 72 65 20 74 68 65 20 75 70 20 where the up
01C5A0: 61 6E 64 20 64 6F 77 6E 20 6B 65 79 73 20 61 72 and down keys ar
01C5B0: 65 20 20 63 68 65 63 6B 65 64 2E 20 20 54 68 65 e checked. The
01C5C0: 20 6D 64 20 76 61 72 69 61 62 6C 65 20 69 73 20 md variable is
01C5D0: 73 65 74 20 61 63 63 6F 72 64 69 6E 67 0D 0A 20 set according..
01C5E0: 20 20 74 6F 20 74 68 65 20 64 69 72 65 63 74 69 to the directi
01C5F0: 6F 6E 2C 20 61 6E 64 20 74 68 65 6E 20 6D 7A 20 on, and then mz
01C600: 69 73 20 70 75 74 20 65 71 75 61 6C 20 20 74 6F is put equal to
01C610: 20 6D 64 2E 20 20 49 66 20 75 70 20 6F 72 20 64 md. If up or d
01C620: 6F 77 6E 20 68 61 73 20 62 65 65 6E 0D 0A 20 20 own has been..
01C630: 20 70 72 65 73 73 65 64 2C 20 6D 64 20 61 6E 64 pressed, md and
01C640: 20 6D 7A 20 77 69 6C 6C 20 62 65 20 31 20 20 6F mz will be 1 o
01C650: 72 20 20 2D 31 2C 20 20 73 6F 20 20 6D 7A 20 77 r -1, so mz w
01C660: 69 6C 6C 20 62 65 20 74 72 75 65 2E 20 20 57 68 ill be true. Wh
01C670: 65 6E 20 74 68 65 20 6D 61 69 6E 0D 0A 20 20 20 en the main..
01C680: 6C 6F 6F 70 20 67 65 74 73 20 62 61 63 6B 20 74 loop gets back t
01C690: 6F 20 6C 69 6E 65 20 31 30 30 32 20 74 68 69 73 o line 1002 this
01C6A0: 20 6D 65 61 6E 73 20 74 68 61 74 20 74 68 65 20 means that the
01C6B0: 57 48 49 4C 45 20 63 6F 6E 64 69 74 69 6F 6E 20 WHILE condition
01C6C0: 74 68 65 72 65 20 77 69 6C 6C 0D 0A 20 20 20 62 there will.. b
01C6D0: 65 20 74 72 75 65 2C 20 61 6E 64 20 42 41 53 49 e true, and BASI
01C6E0: 43 20 77 69 6C 6C 20 65 78 65 63 75 74 65 20 74 C will execute t
01C6F0: 68 65 20 6C 6F 6F 70 20 74 68 61 74 20 6D 6F 76 he loop that mov
01C700: 65 20 64 69 72 65 63 74 69 6F 6E 20 20 6F 76 65 e direction ove
01C710: 72 20 20 61 6E 79 20 20 6D 61 73 6B 65 64 20 20 r any masked
01C720: 6F 75 74 20 20 6D 65 6E 75 20 65 6E 74 72 69 65 out menu entrie
01C730: 73 2E 20 20 59 6F 75 20 77 69 6C 6C 0D 0A 20 20 s. You will..
01C740: 20 72 65 6D 65 6D 62 65 72 20 74 68 65 20 65 78 remember the ex
01C750: 61 6D 70 6C 65 20 6C 61 73 74 20 6D 6F 6E 74 68 ample last month
01C760: 20 66 6F 72 20 20 6F 72 64 65 72 69 6E 67 20 57 for ordering W
01C770: 41 43 43 49 20 62 61 63 6B 20 69 73 73 75 65 73 ACCI back issues
01C780: 2C 20 77 68 65 72 65 20 74 68 65 0D 0A 20 20 20 , where the..
01C790: 6D 65 6E 75 20 62 61 72 20 64 69 64 20 6E 6F 74 menu bar did not
01C7A0: 20 73 74 6F 70 20 6F 76 65 72 20 74 68 65 20 69 stop over the i
01C7B0: 73 73 75 65 73 20 74 68 61 74 20 77 65 72 65 20 ssues that were
01C7C0: 6F 75 74 20 6F 66 20 73 74 6F 63 6B 2E 0D 0A 0D out of stock....
01C7D0: 0A 20 20 20 54 68 65 20 69 6E 66 6F 72 6D 61 74 . The informat
01C7E0: 69 6F 6E 20 61 73 20 74 6F 20 77 68 69 63 68 20 ion as to which
01C7F0: 6D 65 6E 75 20 69 74 65 6D 73 20 20 61 72 65 20 menu items are
01C800: 20 6F 75 74 20 20 6F 66 20 62 6F 75 6E 64 73 20 out of bounds
01C810: 69 73 20 68 65 6C 64 20 69 6E 20 74 68 65 0D 0A is held in the..
01C820: 20 20 20 70 61 72 61 6D 65 74 65 72 20 22 6D 66 parameter "mf
01C830: 22 2E 20 20 54 68 69 73 20 69 73 20 61 6C 73 6F ". This is also
01C840: 20 61 20 20 22 62 69 74 20 20 73 69 67 6E 69 66 a "bit signif
01C850: 69 63 61 6E 74 22 20 76 61 6C 75 65 2C 20 77 68 icant" value, wh
01C860: 69 63 68 20 6D 65 61 6E 73 20 79 6F 75 0D 0A 20 ich means you..
01C870: 20 20 68 61 76 65 20 74 6F 20 6C 6F 6F 6B 20 61 have to look a
01C880: 74 20 69 74 20 69 6E 20 62 69 6E 61 72 79 20 74 t it in binary t
01C890: 6F 20 20 6D 61 6B 65 20 20 61 6E 79 20 20 73 65 o make any se
01C8A0: 6E 73 65 20 6F 66 20 69 74 2E 20 20 54 68 65 20 nse of it. The
01C8B0: 76 61 6C 75 65 20 6F 66 20 74 68 65 0D 0A 20 20 value of the..
01C8C0: 20 6C 65 61 73 74 20 73 69 67 6E 69 66 69 63 61 least significa
01C8D0: 6E 74 20 62 69 74 20 28 74 68 65 20 6F 6E 65 20 nt bit (the one
01C8E0: 6F 6E 20 74 68 65 20 20 72 69 67 68 74 29 20 20 on the right)
01C8F0: 72 65 66 65 72 73 20 74 6F 20 74 68 65 20 66 69 refers to the fi
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 C3 02 00 00 00 02 ......N.........
01C920: 18 00 C8 02 00 00 00 02 18 00 C4 02 00 00 00 02 ................
01C930: 18 00 C9 02 00 00 00 02 18 00 C5 02 00 00 00 02 ................
01C940: 18 00 C1 02 00 00 00 02 18 00 C6 02 00 00 00 02 ................
01C950: 18 00 C2 02 00 00 00 02 18 00 C7 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: 0A 20 20 20 57 65 20 75 73 65 20 74 68 65 20 75 . We use the u
01CA10: 73 65 66 75 6C 20 4D 4F 44 20 6F 70 65 72 61 74 seful MOD operat
01CA20: 6F 72 20 69 6E 20 20 6F 72 64 65 72 20 20 74 6F or in order to
01CA30: 20 6D 61 6B 65 20 74 68 65 20 6D 65 6E 75 20 62 make the menu b
01CA40: 61 72 20 6C 6F 6F 70 20 72 6F 75 6E 64 2E 0D 0A ar loop round...
01CA50: 20 20 20 57 68 65 6E 20 79 6F 75 20 67 65 74 20 When you get
01CA60: 74 6F 20 74 68 65 20 62 6F 74 74 6F 6D 20 6F 66 to the bottom of
01CA70: 20 20 74 68 65 20 20 6D 65 6E 75 2C 20 20 70 72 the menu, pr
01CA80: 65 73 73 69 6E 67 20 74 68 65 20 64 6F 77 6E 20 essing the down
01CA90: 6B 65 79 20 77 69 6C 6C 20 74 61 6B 65 0D 0A 20 key will take..
01CAA0: 20 20 74 68 65 20 6D 65 6E 75 20 62 61 72 20 72 the menu bar r
01CAB0: 69 67 68 74 20 74 6F 20 74 68 65 20 74 6F 70 20 ight to the top
01CAC0: 6F 66 20 74 68 65 20 6D 65 6E 75 20 61 67 61 69 of the menu agai
01CAD0: 6E 2C 20 61 6E 64 20 76 69 63 65 20 76 65 72 73 n, and vice vers
01CAE0: 61 2E 0D 0A 0D 0A 20 20 20 20 20 4F 6E 65 20 77 a..... One w
01CAF0: 61 79 20 6F 66 20 77 72 69 74 69 6E 67 20 74 68 ay of writing th
01CB00: 69 73 20 77 6F 75 6C 64 20 62 65 20 73 6F 6D 65 is would be some
01CB10: 74 68 69 6E 67 20 6C 69 6B 65 20 74 68 65 20 66 thing like the f
01CB20: 6F 6C 6C 6F 77 69 6E 67 3A 0D 0A 0D 0A 20 20 20 ollowing:....
01CB30: 20 20 6D 70 3D 6D 70 2B 6D 64 0D 0A 20 20 20 20 mp=mp+md..
01CB40: 20 49 46 20 6D 70 3D 6D 63 68 20 54 48 45 4E 20 IF mp=mch THEN
01CB50: 6D 70 3D 30 0D 0A 20 20 20 20 20 49 46 20 6D 70 mp=0.. IF mp
01CB60: 3D 2D 31 20 54 48 45 4E 20 6D 70 3D 6D 63 68 2D =-1 THEN mp=mch-
01CB70: 31 0D 0A 0D 0A 20 20 20 62 75 74 20 75 73 69 6E 1.... but usin
01CB80: 67 20 74 68 65 20 4D 4F 44 20 6F 70 65 72 61 74 g the MOD operat
01CB90: 6F 72 20 77 65 20 68 61 76 65 20 6D 61 6E 61 67 or we have manag
01CBA0: 65 64 20 74 6F 20 63 6F 6E 64 65 6E 73 65 20 69 ed to condense i
01CBB0: 74 20 74 6F 3A 0D 0A 0D 0A 20 20 20 20 20 6D 70 t to:.... mp
01CBC0: 3D 28 6D 70 2B 6D 63 68 2B 6D 64 29 20 4D 4F 44 =(mp+mch+md) MOD
01CBD0: 20 6D 63 68 0D 0A 0D 0A 20 20 20 48 6F 77 20 64 mch.... How d
01CBE0: 6F 65 73 20 74 68 69 73 20 77 6F 72 6B 3F 20 20 oes this work?
01CBF0: 49 66 20 79 6F 75 20 6C 6F 6F 6B 20 20 75 70 20 If you look up
01CC00: 68 20 20 20 20 20 20 20 20 20 20 20 4E 75 6D 62 h Numb
01CC10: 65 72 20 6F 66 20 63 68 6F 69 63 65 73 20 6F 6E er of choices on
01CC20: 20 74 68 65 20 6D 65 6E 75 0D 0A 20 20 20 6D 70 the menu.. mp
01CC30: 20 20 20 20 20 20 20 20 20 20 20 20 4D 65 6E 75 Menu
01CC40: 20 62 61 72 20 70 6F 73 69 74 69 6F 6E 20 28 7A bar position (z
01CC50: 65 72 6F 20 66 6F 72 20 66 69 72 73 74 20 69 74 ero for first it
01CC60: 65 6D 20 6F 6E 20 6D 65 6E 75 29 0D 0A 20 20 20 em on menu)..
01CC70: 6D 66 20 20 20 20 20 20 20 20 20 20 20 20 4D 65 mf Me
01CC80: 6E 75 20 66 6C 61 67 73 20 28 73 65 65 20 6C 61 nu flags (see la
01CC90: 73 74 20 6D 6F 6E 74 68 29 0D 0A 20 20 20 6D 64 st month).. md
01CCA0: 65 20 20 20 20 20 20 20 20 20 20 20 4D 65 6E 75 e Menu
01CCB0: 20 64 65 6C 61 79 0D 0A 20 20 20 6D 63 6F 6C 20 delay.. mcol
01CCC0: 20 20 20 20 20 20 20 20 20 50 65 6E 20 74 6F 20 Pen to
01CCD0: 75 73 65 20 66 6F 72 20 74 68 65 20 6D 65 6E 75 use for the menu
01CCE0: 20 62 61 72 0D 0A 20 20 20 6D 73 70 20 20 20 20 bar.. msp
01CCF0: 20 20 20 20 20 20 20 56 65 72 74 69 63 61 6C 20 Vertical
01CD00: 73 70 61 63 69 6E 67 20 6F 66 20 6D 65 6E 75 20 spacing of menu
01CD10: 69 74 65 6D 73 20 69 6E 20 67 72 61 70 68 69 63 items in graphic
01CD20: 73 20 63 6F 6F 72 64 69 6E 61 74 65 73 0D 0A 20 s coordinates..
01CD30: 20 20 6D 78 2C 20 6D 79 20 20 20 20 20 20 20 20 mx, my
01CD40: 47 72 61 70 68 69 63 73 20 63 6F 6F 72 64 69 6E Graphics coordin
01CD50: 61 74 65 73 20 6F 66 20 74 6F 70 20 6C 65 66 74 ates of top left
01CD60: 20 6F 66 20 6D 65 6E 75 0D 0A 20 20 20 6D 62 68 of menu.. mbh
01CD70: 20 20 20 20 20 20 20 20 20 20 20 4D 65 6E 75 20 Menu
01CD80: 62 61 72 20 68 65 69 67 68 74 20 69 6E 20 67 72 bar height in gr
01CD90: 61 70 68 69 63 73 20 63 6F 6F 72 64 69 6E 61 74 aphics coordinat
01CDA0: 65 73 0D 0A 20 20 20 6D 62 6C 20 20 20 20 20 20 es.. mbl
01CDB0: 20 20 20 20 20 4D 65 6E 75 20 62 61 72 20 6C 65 Menu bar le
01CDC0: 6E 67 74 68 20 69 6E 20 67 72 61 70 68 69 63 73 ngth in graphics
01CDD0: 20 63 6F 6F 72 64 69 6E 61 74 65 73 0D 0A 20 20 coordinates..
01CDE0: 20 75 70 2C 20 64 6F 77 20 20 20 20 20 20 20 49 up, dow I
01CDF0: 4E 4B 45 59 20 6E 75 6D 62 65 72 73 20 6F 66 20 NKEY numbers of
01CE00: 20 4D 4F 44 20 20 69 6E 20 79 6F 75 72 20 6D 61 MOD in your ma
01CE10: 6E 75 61 6C 20 28 64 6F 6E 27 74 20 62 6F 74 68 nual (don't both
01CE20: 65 72 20 69 66 0D 0A 20 20 20 79 6F 75 20 68 61 er if.. you ha
01CE30: 76 65 20 61 6E 20 6F 72 69 67 69 6E 61 6C 20 43 ve an original C
01CE40: 50 43 20 34 36 34 20 6D 61 6E 75 61 6C 20 2D 20 PC 464 manual -
01CE50: 20 74 68 65 79 20 66 6F 72 67 6F 74 20 74 6F 20 they forgot to
01CE60: 70 75 74 20 69 74 20 69 6E 29 2C 20 79 6F 75 20 put it in), you
01CE70: 77 69 6C 6C 0D 0A 20 20 20 66 69 6E 64 20 69 74 will.. find it
01CE80: 20 64 65 73 63 72 69 62 65 64 20 61 73 20 20 72 described as r
01CE90: 65 74 75 72 6E 69 6E 67 20 20 74 68 65 20 20 72 eturning the r
01CEA0: 65 6D 61 69 6E 64 65 72 20 20 61 66 74 65 72 20 emainder after
01CEB0: 20 64 69 76 69 64 69 6E 67 20 74 68 65 20 66 69 dividing the fi
01CEC0: 72 73 74 0D 0A 20 20 20 61 72 67 75 6D 65 6E 74 rst.. argument
01CED0: 20 62 79 20 74 68 65 20 73 65 63 6F 6E 64 20 61 by the second a
01CEE0: 72 67 75 6D 65 6E 74 2E 20 20 49 6E 20 20 6F 75 rgument. In ou
01CEF0: 72 20 20 63 61 73 65 20 20 69 74 20 69 73 20 74 r case it is t
01CF00: 68 65 20 72 65 6D 61 69 6E 64 65 72 20 61 66 74 he remainder aft
01CF10: 65 72 0D 0A 20 20 20 64 69 76 69 64 69 6E 67 20 er.. dividing
01CF20: 6D 70 2B 6D 63 68 2B 6D 64 20 62 79 20 6D 63 68 mp+mch+md by mch
01CF30: 2E 20 20 41 6E 6F 74 68 65 72 20 77 61 79 20 74 . Another way t
01CF40: 6F 20 20 74 68 69 6E 6B 20 20 6F 66 20 69 74 20 o think of it
01CF50: 69 73 20 74 68 61 74 20 4D 4F 44 20 6B 65 65 70 is that MOD keep
01CF60: 73 0D 0A 20 20 20 6F 6E 20 73 75 62 74 72 61 63 s.. on subtrac
01CF70: 74 69 6E 67 20 6D 63 68 20 66 72 6F 6D 20 6D 70 ting mch from mp
01CF80: 2B 6D 63 68 2B 6D 64 20 75 6E 74 69 6C 20 69 74 +mch+md until it
01CF90: 20 67 65 74 73 20 61 20 72 65 73 75 6C 74 20 66 gets a result f
01CFA0: 72 6F 6D 20 30 20 74 6F 20 6D 63 68 2D 31 2E 0D rom 0 to mch-1..
01CFB0: 0A 0D 0A 20 20 20 20 20 53 75 70 70 6F 73 65 20 ... Suppose
01CFC0: 74 68 61 74 20 6D 63 68 20 69 73 20 36 2C 20 6D that mch is 6, m
01CFD0: 65 61 6E 69 6E 67 20 73 69 78 20 6D 65 6E 75 20 eaning six menu
01CFE0: 20 69 74 65 6D 73 20 6E 75 6D 62 65 72 65 64 20 items numbered
01CFF0: 66 72 6F 6D 20 30 20 74 6F 20 35 2E 20 20 49 66 from 0 to 5. If
01D000: 74 68 65 20 75 70 20 61 6E 64 20 64 6F 77 6E 20 the up and down
01D010: 6B 65 79 73 0D 0A 20 20 20 6C 65 2C 20 72 69 2C keys.. le, ri,
01D020: 20 66 69 20 20 20 20 49 4E 4B 45 59 20 6E 75 6D fi INKEY num
01D030: 62 65 72 73 20 6F 66 20 6F 74 68 65 72 20 6B 65 bers of other ke
01D040: 79 73 20 74 68 61 74 20 74 68 65 20 6D 65 6E 75 ys that the menu
01D050: 20 72 65 73 70 6F 6E 64 73 20 74 6F 2E 0D 0A 20 responds to...
01D060: 20 20 6B 66 20 20 20 20 20 20 20 20 20 20 20 20 kf
01D070: 4B 65 79 20 66 6C 61 67 73 20 28 73 65 65 20 6C Key flags (see l
01D080: 61 73 74 20 6D 6F 6E 74 68 29 0D 0A 0D 0A 20 20 ast month)....
01D090: 20 56 61 6C 75 65 73 20 72 65 74 75 72 6E 65 64 Values returned
01D0A0: 20 62 79 20 74 68 65 20 72 6F 75 74 69 6E 65 73 by the routines
01D0B0: 3A 0D 0A 0D 0A 20 20 20 6D 70 20 20 20 20 20 20 :.... mp
01D0C0: 20 20 20 20 20 20 4D 65 6E 75 20 62 61 72 20 70 Menu bar p
01D0D0: 6F 73 69 74 69 6F 6E 20 28 61 73 20 61 62 6F 76 osition (as abov
01D0E0: 65 29 0D 0A 20 20 20 6B 70 20 20 20 20 20 20 20 e).. kp
01D0F0: 20 20 20 20 20 4B 65 79 73 20 70 72 65 73 73 65 Keys presse
01D100: 64 20 28 73 65 65 20 6C 61 73 74 20 6D 6F 6E 74 d (see last mont
01D110: 68 29 0D 0A 0D 0A 20 20 20 56 61 72 69 61 62 6C h).... Variabl
01D120: 65 73 20 75 73 65 64 20 69 6E 74 65 72 6E 61 6C es used internal
01D130: 6C 79 20 62 79 20 74 68 65 20 72 6F 75 74 69 6E ly by the routin
01D140: 65 73 3A 0D 0A 0D 0A 20 20 20 64 65 6C 61 79 0D es:.... delay.
01D150: 0A 20 20 20 6D 63 0D 0A 20 20 20 6D 64 0D 0A 20 . mc.. md..
01D160: 20 20 6D 7A 0D 0A 0D 0A 0D 0A 20 20 20 4C 69 73 mz...... Lis
01D170: 74 69 6E 67 20 31 3A 0D 0A 0D 0A 20 20 20 31 30 ting 1:.... 10
01D180: 30 30 20 6B 70 3D 30 3A 6D 64 3D 31 3A 6D 7A 3D 00 kp=0:md=1:mz=
01D190: 30 0D 0A 20 20 20 31 30 30 31 20 57 48 49 4C 45 0.. 1001 WHILE
01D1A0: 20 28 6B 70 20 41 4E 44 20 6B 66 29 3D 30 0D 0A (kp AND kf)=0..
01D1B0: 20 20 20 31 30 30 32 20 57 48 49 4C 45 20 28 32 1002 WHILE (2
01D1C0: 5E 6D 70 20 41 4E 44 20 6D 66 29 3E 30 20 4F 52 ^mp AND mf)>0 OR
01D1D0: 20 6D 7A 0D 0A 20 20 20 31 30 30 33 20 6D 7A 3D mz.. 1003 mz=
01D1E0: 30 3A 47 4F 53 55 42 20 31 30 31 30 3A 6D 70 3D 0:GOSUB 1010:mp=
01D1F0: 28 6D 70 2B 6D 63 68 2B 6D 64 29 20 4D 4F 44 20 (mp+mch+md) MOD
01D200: 0D 0A 20 20 20 77 65 20 77 65 72 65 20 6F 6E 20 .. we were on
01D210: 74 68 65 20 6C 61 73 74 20 6D 65 6E 75 20 69 74 the last menu it
01D220: 65 6D 20 74 68 65 6D 20 6D 70 20 77 6F 75 6C 64 em them mp would
01D230: 20 62 65 20 35 2E 20 20 50 72 65 73 73 69 6E 67 be 5. Pressing
01D240: 20 64 6F 77 6E 20 77 6F 75 6C 64 20 73 65 74 0D down would set.
01D250: 0A 20 20 20 6D 64 20 74 6F 20 31 2C 20 73 6F 20 . md to 1, so
01D260: 6D 70 2B 6D 64 20 69 73 20 36 2E 20 20 44 69 76 mp+md is 6. Div
01D270: 69 64 65 20 74 68 61 74 20 20 62 79 20 6D 63 68 ide that by mch
01D280: 2C 20 77 68 69 63 68 20 69 73 20 36 20 61 6C 73 , which is 6 als
01D290: 6F 2C 20 61 6E 64 20 69 74 20 67 6F 65 73 0D 0A o, and it goes..
01D2A0: 20 20 20 65 78 61 63 74 6C 79 20 6F 6E 63 65 2C exactly once,
01D2B0: 20 73 6F 20 74 68 65 72 65 20 69 73 20 20 6E 6F so there is no
01D2C0: 20 20 72 65 6D 61 69 6E 64 65 72 2E 20 20 20 54 remainder. T
01D2D0: 68 65 72 65 66 6F 72 65 20 20 74 68 65 20 6E 65 herefore the ne
01D2E0: 77 20 76 61 6C 75 65 20 6F 66 20 6D 70 0D 0A 20 w value of mp..
01D2F0: 20 20 77 69 6C 6C 20 62 65 20 7A 65 72 6F 2C 20 will be zero,
01D300: 77 68 69 63 68 20 73 69 67 6E 69 66 69 65 73 20 which signifies
01D310: 74 68 65 20 74 6F 70 20 69 74 65 6D 20 6F 6E 20 the top item on
01D320: 74 68 65 20 6D 65 6E 75 2E 0D 0A 0D 0A 20 20 20 the menu.....
01D330: 20 20 4C 65 74 20 75 73 20 74 72 79 20 67 6F 69 Let us try goi
01D340: 6E 67 20 75 70 20 20 66 72 6F 6D 20 20 74 68 65 ng up from the
01D350: 20 20 74 6F 70 20 20 6D 65 6E 75 20 20 69 74 65 top menu ite
01D360: 6D 2E 20 20 54 68 65 20 6D 65 6E 75 20 70 6F 73 m. The menu pos
01D370: 69 74 69 6F 6E 2C 20 6D 70 2C 0D 0A 20 20 20 73 ition, mp,.. s
01D380: 74 61 72 74 73 20 61 73 20 7A 65 72 6F 20 74 68 tarts as zero th
01D390: 69 73 20 20 74 69 6D 65 2E 20 20 20 47 6F 69 6E is time. Goin
01D3A0: 67 20 20 75 70 20 20 74 72 61 6E 73 6C 61 74 65 g up translate
01D3B0: 73 20 20 69 6E 74 6F 20 73 75 62 74 72 61 63 74 s into subtract
01D3C0: 69 6E 67 20 31 2C 20 73 6F 0D 0A 20 20 20 6D 70 ing 1, so.. mp
01D3D0: 2B 6D 64 20 69 73 20 2D 31 2E 20 20 54 68 65 20 +md is -1. The
01D3E0: 6F 6E 6C 79 20 74 72 6F 75 62 6C 65 20 69 73 20 only trouble is
01D3F0: 74 68 61 74 20 69 66 20 79 6F 75 20 74 68 65 6E that if you then
01D400: 20 75 73 20 20 77 68 65 6E 20 20 61 20 6B 65 79 us when a key
01D410: 20 68 61 73 20 62 65 65 6E 0D 0A 20 20 20 70 72 has been.. pr
01D420: 65 73 73 65 64 20 74 6F 20 74 72 69 67 67 65 72 essed to trigger
01D430: 20 74 68 65 20 6C 6F 6F 70 20 69 6E 20 20 6C 69 the loop in li
01D440: 6E 65 73 20 20 31 30 30 32 20 20 74 6F 20 20 31 nes 1002 to 1
01D450: 30 30 34 20 61 6E 64 20 73 65 74 20 74 68 65 20 004 and set the
01D460: 6D 65 6E 75 20 62 61 72 0D 0A 20 20 20 6D 6F 76 menu bar.. mov
01D470: 69 6E 67 2E 20 20 57 65 20 61 6C 73 6F 20 6E 65 ing. We also ne
01D480: 65 64 20 74 6F 20 72 65 73 65 74 20 74 68 61 74 ed to reset that
01D490: 20 20 74 72 69 67 67 65 72 20 20 74 6F 20 7A 65 trigger to ze
01D4A0: 72 6F 20 6F 72 20 65 6C 73 65 20 74 68 65 20 6D ro or else the m
01D4B0: 65 6E 75 20 62 61 72 0D 0A 20 20 20 77 69 6C 6C enu bar.. will
01D4C0: 20 6E 65 76 65 72 20 73 74 6F 70 20 6D 6F 76 69 never stop movi
01D4D0: 6E 67 2E 20 20 20 54 68 65 20 20 74 72 6F 75 62 ng. The troub
01D4E0: 6C 65 20 20 69 73 20 20 74 68 61 74 20 20 69 66 le is that if
01D4F0: 20 20 77 65 20 20 75 73 65 64 20 6D 64 20 66 6F we used md fo
01D500: 72 20 74 68 69 73 0D 0A 20 20 20 70 75 72 70 6F r this.. purpo
01D510: 73 65 2C 20 77 65 20 77 6F 75 6C 64 20 67 65 74 se, we would get
01D520: 20 69 6E 20 61 20 6D 65 73 73 20 20 69 66 20 20 in a mess if
01D530: 77 65 20 6D 6F 76 65 64 20 6F 6E 74 6F 20 61 20 we moved onto a
01D540: 70 72 6F 68 69 62 69 74 65 64 20 6D 65 6E 75 20 prohibited menu
01D550: 69 74 65 6D 2E 0D 0A 20 20 20 48 61 76 69 6E 67 item... Having
01D560: 20 73 65 74 20 6D 64 20 74 6F 20 7A 65 72 6F 2C set md to zero,
01D570: 20 74 68 65 20 6E 65 78 74 20 20 74 69 6D 65 20 the next time
01D580: 20 74 68 72 6F 75 67 68 20 20 74 68 65 20 6C 6F through the lo
01D590: 6F 70 20 77 65 20 77 6F 75 6C 64 20 6E 6F 74 20 op we would not
01D5A0: 6B 6E 6F 77 0D 0A 20 20 20 77 68 69 63 68 20 64 know.. which d
01D5B0: 69 72 65 63 74 69 6F 6E 20 77 65 20 77 65 72 65 irection we were
01D5C0: 20 6D 65 61 6E 74 20 74 6F 20 62 65 20 20 67 6F meant to be go
01D5D0: 69 6E 67 20 69 6E 20 77 68 65 6E 20 73 6B 69 70 ing in when skip
01D5E0: 70 69 6E 67 20 74 68 61 74 20 6D 65 6E 75 20 69 ping that menu i
01D5F0: 74 65 6D 0D 0A 20 20 20 74 6F 20 6D 6F 76 65 20 tem.. to move
01D600: 20 64 6F 20 4D 4F 44 20 36 2C 20 69 74 20 77 69 do MOD 6, it wi
01D610: 6C 6C 20 73 74 69 6C 6C 0D 0A 20 20 20 62 65 20 ll still.. be
01D620: 2D 31 2C 20 61 6E 64 20 77 65 20 77 61 6E 74 20 -1, and we want
01D630: 35 2E 20 20 20 54 68 69 73 20 20 69 73 20 20 77 5. This is w
01D640: 68 79 20 20 74 68 65 20 20 65 78 70 72 65 73 73 hy the express
01D650: 69 6F 6E 20 69 6E 20 6C 69 6E 65 20 31 30 30 33 ion in line 1003
01D660: 20 68 61 73 20 61 6E 0D 0A 20 20 20 65 78 74 72 has an.. extr
01D670: 61 20 6D 63 68 20 61 64 64 65 64 20 69 6E 2C 20 a mch added in,
01D680: 61 73 20 6D 70 2B 6D 63 68 2B 6D 64 20 69 73 20 as mp+mch+md is
01D690: 35 2C 20 20 61 6E 64 20 77 68 65 6E 20 79 6F 75 5, and when you
01D6A0: 20 74 61 6B 65 20 74 68 65 20 72 65 6D 61 69 6E take the remain
01D6B0: 64 65 72 20 6F 6E 0D 0A 20 20 20 64 69 76 69 73 der on.. divis
01D6C0: 69 6F 6E 20 62 79 20 36 2C 20 79 6F 75 20 65 6E ion by 6, you en
01D6D0: 64 20 75 70 20 77 69 74 68 20 20 35 20 20 61 73 d up with 5 as
01D6E0: 20 20 74 68 65 20 20 61 6E 73 77 65 72 2C 20 77 the answer, w
01D6F0: 68 69 63 68 20 69 73 20 74 68 65 20 6C 61 73 74 hich is the last
01D700: 20 6D 65 6E 75 0D 0A 20 20 20 69 74 65 6D 2C 20 menu.. item,
01D710: 6A 75 73 74 20 61 73 20 77 65 20 77 61 6E 74 2E just as we want.
01D720: 0D 0A 0D 0A 20 20 20 54 48 41 54 27 53 20 41 4C .... THAT'S AL
01D730: 4C 20 46 4F 4C 4B 53 0D 0A 20 20 20 54 68 61 74 L FOLKS.. That
01D740: 20 70 72 65 74 74 79 20 77 65 6C 6C 20 77 72 61 pretty well wra
01D750: 70 73 20 75 70 20 74 68 65 20 6D 65 6E 75 20 73 ps up the menu s
01D760: 75 62 72 6F 75 74 69 6E 65 73 2C 20 73 6F 20 6E ubroutines, so n
01D770: 65 78 74 20 6D 6F 6E 74 68 20 77 65 20 77 69 6C ext month we wil
01D780: 6C 20 68 61 76 65 0D 0A 20 20 20 61 20 67 6F 20 l have.. a go
01D790: 61 74 20 73 6F 6D 65 74 68 69 6E 67 20 63 6F 6D at something com
01D7A0: 70 6C 65 74 65 6C 79 20 64 69 66 66 65 72 65 6E pletely differen
01D7B0: 74 2E 20 20 20 4A 75 73 74 20 20 74 6F 20 73 68 t. Just to sh
01D7C0: 6F 77 20 74 68 61 74 20 6E 6F 20 70 72 6F 67 72 ow that no progr
01D7D0: 61 6D 20 69 73 0D 0A 20 20 20 65 76 65 72 20 70 am is.. ever p
01D7E0: 65 72 66 65 63 74 20 74 68 6F 75 67 68 2C 20 74 erfect though, t
01D7F0: 72 79 20 74 6F 20 73 65 65 20 20 69 66 20 20 79 ry to see if y
01D800: 74 6F 20 74 68 65 20 6E 65 78 74 20 6F 6E 65 21 to the next one!
01D810: 0D 0A 0D 0A 0D 0A 20 20 20 57 41 52 50 20 46 41 ...... WARP FA
01D820: 43 54 4F 52 20 4D 43 48 0D 0A 20 20 20 4C 69 6E CTOR MCH.. Lin
01D830: 65 20 31 30 30 33 20 69 73 20 77 68 65 72 65 20 e 1003 is where
01D840: 74 68 65 20 6D 65 6E 75 20 62 61 72 20 20 69 73 the menu bar is
01D850: 20 20 61 63 74 75 61 6C 6C 79 20 6D 6F 76 65 64 actually moved
01D860: 2E 20 20 46 69 72 73 74 20 77 65 20 47 4F 53 55 . First we GOSU
01D870: 42 20 31 30 31 30 2C 0D 0A 20 20 20 77 68 69 63 B 1010,.. whic
01D880: 68 20 72 65 6D 6F 76 65 73 20 74 68 65 20 62 61 h removes the ba
01D890: 72 20 66 72 6F 6D 20 74 68 65 20 20 73 63 72 65 r from the scre
01D8A0: 65 6E 2E 20 20 20 54 68 65 6E 20 6D 70 20 69 73 en. Then mp is
01D8B0: 20 61 64 6A 75 73 74 65 64 2C 20 61 6E 64 20 66 adjusted, and f
01D8C0: 69 6E 61 6C 6C 79 0D 0A 20 20 20 77 65 20 68 61 inally.. we ha
01D8D0: 76 65 20 47 4F 53 55 42 20 31 30 31 30 20 61 67 ve GOSUB 1010 ag
01D8E0: 61 69 6E 20 74 6F 20 70 75 74 20 74 68 65 20 6D ain to put the m
01D8F0: 65 6E 75 20 62 61 72 20 62 61 63 6B 20 6F 6E 20 enu bar back on
01D900: 74 68 65 20 73 63 72 65 65 6E 20 69 6E 20 74 68 the screen in th
01D910: 65 20 6E 65 77 0D 0A 20 20 20 70 6F 73 69 74 69 e new.. positi
01D920: 6F 6E 2E 20 20 54 68 65 20 72 65 61 73 6F 6E 20 on. The reason
01D930: 20 77 65 20 20 63 61 6E 20 20 75 73 65 20 20 74 we can use t
01D940: 68 65 20 20 73 61 6D 65 20 20 72 6F 75 74 69 6E he same routin
01D950: 65 20 20 66 6F 72 20 20 72 65 6D 6F 76 69 6E 67 e for removing
01D960: 20 61 6E 64 0D 0A 20 20 20 72 65 64 69 73 70 6C and.. redispl
01D970: 61 79 69 6E 67 20 74 68 65 20 6D 65 6E 75 20 62 aying the menu b
01D980: 61 72 20 69 73 20 74 68 61 74 20 77 65 20 61 72 ar is that we ar
01D990: 65 20 75 73 69 6E 67 20 74 68 65 20 58 4F 52 20 e using the XOR
01D9A0: 67 72 61 70 68 69 63 73 20 6D 6F 64 65 2E 0D 0A graphics mode...
01D9B0: 0D 0A 20 20 20 20 20 54 68 65 20 61 64 6A 75 73 .. The adjus
01D9C0: 74 6D 65 6E 74 20 6F 66 20 6D 70 2C 20 74 68 65 tment of mp, the
01D9D0: 20 6D 65 6E 75 20 20 70 6F 73 69 74 69 6F 6E 20 menu position
01D9E0: 20 76 61 72 69 61 62 6C 65 2C 20 69 73 20 77 6F variable, is wo
01D9F0: 72 74 68 20 6C 6F 6F 6B 69 6E 67 20 61 74 2E 0D rth looking at..
01DA00: 6F 75 20 20 63 61 6E 20 20 66 69 6E 64 20 61 20 ou can find a
01DA10: 77 61 79 20 6F 66 20 72 65 6D 6F 76 69 6E 67 20 way of removing
01DA20: 66 6F 75 72 0D 0A 20 20 20 63 68 61 72 61 63 74 four.. charact
01DA30: 65 72 73 20 66 72 6F 6D 20 6C 69 6E 65 20 31 30 ers from line 10
01DA40: 30 32 20 69 6E 20 61 20 77 61 79 20 20 77 68 69 02 in a way whi
01DA50: 63 68 20 64 6F 65 73 20 6E 6F 74 20 61 66 66 65 ch does not affe
01DA60: 63 74 20 74 68 65 20 6F 70 65 72 61 74 69 6F 6E ct the operation
01DA70: 20 6F 66 0D 0A 20 20 20 74 68 65 20 70 72 6F 67 of.. the prog
01DA80: 72 61 6D 2C 20 6F 72 20 69 66 20 61 6E 79 74 68 ram, or if anyth
01DA90: 69 6E 67 20 73 6C 69 67 68 74 6C 79 20 69 6D 70 ing slightly imp
01DAA0: 72 6F 76 65 73 20 69 74 2E 20 20 57 65 20 6F 6E roves it. We on
01DAB0: 6C 79 20 73 70 6F 74 74 65 64 20 69 74 20 77 68 ly spotted it wh
01DAC0: 65 6E 0D 0A 20 20 20 77 72 69 74 69 6E 67 20 74 en.. writing t
01DAD0: 68 69 73 20 66 69 6E 61 6C 20 61 72 74 69 63 6C his final articl
01DAE0: 65 21 20 20 20 3C 3C 53 69 6E 63 65 20 20 74 68 e! <<Since th
01DAF0: 65 6E 20 20 77 65 20 20 68 61 76 65 20 64 69 73 en we have dis
01DB00: 63 6F 76 65 72 65 64 20 74 68 61 74 20 74 68 69 covered that thi
01DB10: 73 0D 0A 20 20 20 61 6C 74 65 72 61 74 69 6F 6E s.. alteration
01DB20: 20 6D 65 61 6E 73 20 74 68 61 74 20 74 68 65 20 means that the
01DB30: 70 72 6F 67 72 61 6D 20 20 77 6F 75 6C 64 20 20 program would
01DB40: 6E 6F 74 20 20 66 75 6E 63 74 69 6F 6E 20 63 6F not function co
01DB50: 72 72 65 63 74 6C 79 20 6F 6E 20 61 20 43 50 43 rrectly on a CPC
01DB60: 0D 0A 20 20 20 34 36 34 20 69 66 20 74 68 65 20 .. 464 if the
01DB70: 6D 65 6E 75 20 68 61 64 20 6D 6F 72 65 20 20 74 menu had more t
01DB80: 68 61 6E 20 20 38 20 20 69 74 65 6D 73 2C 20 20 han 8 items,
01DB90: 73 6F 20 20 69 74 20 20 69 73 20 20 62 65 73 74 so it is best
01DBA0: 20 74 6F 20 6C 65 61 76 65 20 69 74 20 61 73 0D to leave it as.
01DBB0: 0A 20 20 20 70 72 69 6E 74 65 64 21 3E 3E 0D 0A . printed!>>..
01DBC0: 0D 0A 0D 0A 0D 0A 20 20 20 54 41 42 4C 45 20 4F ...... TABLE O
01DBD0: 46 20 56 41 52 49 41 42 4C 45 53 0D 0A 0D 0A 20 F VARIABLES....
01DBE0: 20 20 50 61 72 61 6D 65 74 65 72 73 20 74 6F 20 Parameters to
01DBF0: 73 65 74 20 75 70 3A 0D 0A 0D 0A 20 20 20 6D 63 set up:.... mc
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 C6 02 00 00 00 02 ......N.........
01DC20: 19 00 C2 02 00 00 00 02 19 00 C7 02 00 00 00 02 ................
01DC30: 19 00 C3 02 00 00 00 02 19 00 C8 02 00 00 00 02 ................
01DC40: 19 00 C4 02 00 00 00 02 19 00 C9 02 00 00 00 02 ................
01DC50: 19 00 C5 02 00 00 00 02 19 00 C1 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: 41 20 47 4F 4F 44 20 44 45 41 4C 0D 0A 20 20 20 A GOOD DEAL..
01DD10: 54 68 65 20 67 61 6D 65 20 73 74 61 72 74 73 20 The game starts
01DD20: 62 79 20 47 4F 53 55 42 62 69 6E 67 20 31 30 30 by GOSUBbing 100
01DD30: 30 20 74 6F 20 64 65 61 6C 20 20 74 68 65 20 63 0 to deal the c
01DD40: 61 72 64 73 20 6F 75 74 20 6F 6E 20 74 68 65 20 ards out on the
01DD50: 74 61 62 6C 65 2E 20 20 49 6E 0D 0A 20 20 20 6C table. In.. l
01DD60: 69 6E 65 20 35 30 20 77 65 20 70 75 74 20 74 68 ine 50 we put th
01DD70: 65 20 70 61 63 6B 20 69 6E 20 6F 72 64 65 72 20 e pack in order
01DD80: 20 73 6F 20 20 77 65 20 6D 75 73 74 20 73 68 75 so we must shu
01DD90: 66 66 6C 65 20 74 68 65 20 63 61 72 64 73 20 61 ffle the cards a
01DDA0: 73 20 77 65 6C 6C 20 61 73 0D 0A 20 20 20 64 65 s well as.. de
01DDB0: 61 6C 69 6E 67 2E 20 20 57 65 20 64 6F 20 62 6F aling. We do bo
01DDC0: 74 68 20 61 74 20 74 68 65 20 73 61 6D 65 20 20 th at the same
01DDD0: 74 69 6D 65 20 20 69 6E 20 20 6C 69 6E 65 20 31 time in line 1
01DDE0: 30 31 30 2E 20 20 49 6E 20 61 20 6C 6F 6F 70 20 010. In a loop
01DDF0: 73 74 61 72 74 69 6E 67 0D 0A 20 20 20 77 69 74 starting.. wit
01DE00: 68 20 6E 3D 35 32 2C 20 77 65 20 70 69 63 6B 20 h n=52, we pick
01DE10: 61 20 72 61 6E 64 6F 6D 20 63 61 72 64 20 62 65 a random card be
01DE20: 74 77 65 65 6E 20 31 20 61 6E 64 20 6E 20 75 73 tween 1 and n us
01DE30: 69 6E 67 20 74 68 65 20 65 78 70 72 65 73 73 69 ing the expressi
01DE40: 6F 6E 0D 0A 0D 0A 20 20 20 63 64 65 6C 3D 49 4E on.... cdel=IN
01DE50: 54 28 52 4E 44 2A 6E 2B 31 29 0D 0A 0D 0A 20 20 T(RND*n+1)....
01DE60: 20 57 65 20 70 75 74 20 74 68 69 73 20 63 61 72 We put this car
01DE70: 64 20 69 6E 20 74 68 65 20 6C 61 79 6F 75 74 20 d in the layout
01DE80: 20 61 72 72 61 79 20 20 61 74 20 63 28 72 6F 77 array at c(row
01DE90: 2C 63 6F 6C 29 20 61 6E 64 20 6D 6F 76 65 20 74 ,col) and move t
01DEA0: 68 65 20 6E 74 68 20 63 61 72 64 0D 0A 20 20 20 he nth card..
01DEB0: 69 6E 20 74 68 65 20 70 61 63 6B 20 74 6F 20 74 in the pack to t
01DEC0: 68 65 20 70 6F 73 69 74 69 6F 6E 20 20 76 61 63 he position vac
01DED0: 61 74 65 64 20 20 62 79 20 20 6F 75 72 20 63 68 ated by our ch
01DEE0: 6F 73 65 6E 20 63 61 72 64 2E 20 20 54 68 69 73 osen card. This
01DEF0: 20 6C 65 61 76 65 73 20 75 73 0D 0A 20 20 20 77 leaves us.. w
01DF00: 23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61 #Programmers' Pa
01DF10: 74 63 68 20 39 20 2D 20 57 41 43 43 49 20 31 31 tch 9 - WACCI 11
01DF20: 38 2C 20 4A 61 6E 20 31 39 39 38 2C 20 70 2E 20 8, Jan 1998, p.
01DF30: 31 38 2D 31 39 0D 0A 20 20 20 50 52 4F 47 52 41 18-19.. PROGRA
01DF40: 4D 4D 45 52 53 27 20 50 41 54 43 48 20 39 0D 0A MMERS' PATCH 9..
01DF50: 20 20 20 42 79 20 48 69 6C 61 72 79 20 50 68 69 By Hilary Phi
01DF60: 6C 6C 69 70 73 0D 0A 0D 0A 20 20 20 59 65 73 2C llips.... Yes,
01DF70: 20 74 68 69 73 20 6D 6F 6E 74 68 20 74 68 65 20 this month the
01DF80: 70 72 6F 6F 66 72 65 61 64 65 72 20 67 65 74 73 proofreader gets
01DF90: 20 61 20 20 67 6F 20 20 61 74 20 77 72 69 74 69 a go at writi
01DFA0: 6E 67 20 61 6E 20 61 72 74 69 63 6C 65 2C 20 74 ng an article, t
01DFB0: 6F 20 67 69 76 65 0D 0A 20 20 20 4D 61 74 74 68 o give.. Matth
01DFC0: 65 77 20 61 6E 64 20 53 74 65 70 68 65 6E 20 61 ew and Stephen a
01DFD0: 20 62 72 65 61 6B 2E 20 20 54 68 69 73 20 77 61 break. This wa
01DFE0: 73 20 20 69 6E 74 65 6E 64 65 64 20 74 6F 20 62 s intended to b
01DFF0: 65 20 61 20 43 68 72 69 73 74 6D 61 73 20 53 70 e a Christmas Sp
01E000: 65 63 69 61 6C 0D 0A 20 20 20 6F 6E 20 63 61 72 ecial.. on car
01E010: 64 20 67 61 6D 65 73 2C 20 62 75 74 20 57 41 43 d games, but WAC
01E020: 43 49 27 73 20 62 72 69 65 66 20 62 69 2D 6D 6F CI's brief bi-mo
01E030: 6E 74 68 6C 79 20 73 70 65 6C 6C 20 70 75 74 20 nthly spell put
01E040: 70 61 69 64 20 74 6F 20 74 68 61 74 20 69 64 65 paid to that ide
01E050: 61 20 73 6F 0D 0A 20 20 20 69 74 20 68 61 73 20 a so.. it has
01E060: 74 6F 20 62 65 20 61 20 20 4E 65 77 20 20 59 65 to be a New Ye
01E070: 61 72 27 73 20 20 73 70 65 63 69 61 6C 20 20 69 ar's special i
01E080: 6E 73 74 65 61 64 2E 20 20 49 20 73 74 61 72 74 nstead. I start
01E090: 65 64 20 70 72 6F 67 72 61 6D 6D 69 6E 67 20 63 ed programming c
01E0A0: 61 72 64 0D 0A 20 20 20 67 61 6D 65 73 20 61 66 ard.. games af
01E0B0: 74 65 72 20 73 65 65 69 6E 67 20 61 20 72 61 74 ter seeing a rat
01E0C0: 68 65 72 20 20 67 6F 6F 64 20 20 70 61 74 69 65 her good patie
01E0D0: 6E 63 65 20 20 67 61 6D 65 20 20 6F 6E 20 20 6D nce game on m
01E0E0: 79 20 73 69 73 74 65 72 27 73 20 4D 61 63 20 61 y sister's Mac a
01E0F0: 6E 64 0D 0A 20 20 20 77 6F 6E 64 65 72 69 6E 67 nd.. wondering
01E100: 69 74 68 20 61 6C 6C 20 74 68 65 20 75 6E 64 65 ith all the unde
01E110: 61 6C 74 20 63 61 72 64 73 20 69 6E 20 74 68 65 alt cards in the
01E120: 20 66 69 72 73 74 20 6E 2D 31 20 70 6F 73 69 74 first n-1 posit
01E130: 69 6F 6E 73 20 69 6E 20 74 68 65 20 70 61 63 6B ions in the pack
01E140: 2C 20 61 6E 64 20 74 68 65 0D 0A 20 20 20 64 65 , and the.. de
01E150: 61 6C 74 20 6F 75 74 20 63 61 72 64 73 20 69 6E alt out cards in
01E160: 20 74 68 65 20 6C 61 79 6F 75 74 20 20 61 72 72 the layout arr
01E170: 61 79 2E 20 20 20 47 4F 53 55 42 62 69 6E 67 20 ay. GOSUBbing
01E180: 20 33 35 30 30 20 70 72 69 6E 74 73 20 74 68 65 3500 prints the
01E190: 20 62 61 63 6B 20 6F 66 0D 0A 20 20 20 74 68 65 back of.. the
01E1A0: 20 63 61 72 64 20 61 74 20 74 68 65 20 70 6F 73 card at the pos
01E1B0: 69 74 69 6F 6E 20 66 6F 72 20 20 63 28 72 6F 77 ition for c(row
01E1C0: 2C 63 6F 6C 29 2E 20 20 20 57 65 20 20 63 61 6E ,col). We can
01E1D0: 20 74 68 65 6E 20 64 65 63 72 65 61 73 65 20 6E then decrease n
01E1E0: 20 62 79 20 6F 6E 65 0D 0A 20 20 20 61 6E 64 20 by one.. and
01E1F0: 67 6F 20 74 68 72 6F 75 67 68 20 74 68 65 20 70 go through the p
01E200: 72 6F 63 65 73 73 20 61 67 61 69 6E 20 75 6E 74 rocess again unt
01E210: 69 6C 20 61 6C 6C 20 74 68 65 20 63 61 72 64 73 il all the cards
01E220: 20 68 61 76 65 20 62 65 65 6E 20 64 65 61 6C 74 have been dealt
01E230: 2E 0D 0A 0D 0A 20 20 20 57 65 20 6E 65 65 64 20 ..... We need
01E240: 6C 69 6E 65 20 31 30 32 30 20 61 73 20 77 65 6C line 1020 as wel
01E250: 6C 20 61 73 20 31 30 31 30 20 20 74 6F 20 20 64 l as 1010 to d
01E260: 6F 20 74 68 69 73 20 62 65 63 61 75 73 65 20 74 o this because t
01E270: 68 65 20 6C 61 79 6F 75 74 20 61 72 72 61 79 20 he layout array
01E280: 69 73 0D 0A 20 20 20 6E 6F 74 20 61 20 72 65 63 is.. not a rec
01E290: 74 61 6E 67 6C 65 20 62 75 74 20 37 20 72 6F 77 tangle but 7 row
01E2A0: 73 20 6F 66 20 37 20 61 6E 64 20 61 6E 20 65 78 s of 7 and an ex
01E2B0: 74 72 61 20 72 6F 77 20 6F 66 20 33 20 63 61 72 tra row of 3 car
01E2C0: 64 73 2E 0D 0A 0D 0A 20 20 20 50 52 49 4E 54 49 ds..... PRINTI
01E2D0: 4E 47 0D 0A 20 20 20 4C 65 74 27 73 20 6E 6F 77 NG.. Let's now
01E2E0: 20 6C 6F 6F 6B 20 61 74 20 74 68 65 20 72 6F 75 look at the rou
01E2F0: 74 69 6E 65 73 20 20 66 6F 72 20 20 70 72 69 6E tines for prin
01E300: 20 77 68 65 74 68 65 72 20 49 20 63 6F 75 6C 64 whether I could
01E310: 20 72 65 70 72 6F 64 75 63 65 20 69 74 20 6F 6E reproduce it on
01E320: 20 4D 61 74 74 68 65 77 27 73 20 43 50 43 2E 20 Matthew's CPC.
01E330: 20 49 20 63 6F 75 6C 64 2C 20 62 75 74 20 74 68 I could, but th
01E340: 65 0D 0A 20 20 20 6C 69 73 74 69 6E 67 27 73 20 e.. listing's
01E350: 61 20 62 69 74 20 6C 6F 6E 67 20 74 6F 20 70 75 a bit long to pu
01E360: 74 20 20 69 6E 74 6F 20 20 61 20 20 74 77 6F 2D t into a two-
01E370: 70 61 67 65 20 20 57 41 43 43 49 20 61 72 74 69 page WACCI arti
01E380: 63 6C 65 20 73 6F 20 68 65 72 65 20 69 73 20 61 cle so here is a
01E390: 0D 0A 20 20 20 73 68 6F 72 74 65 72 2C 20 6D 75 .. shorter, mu
01E3A0: 6C 74 69 2D 70 6C 61 79 65 72 20 67 61 6D 65 2E lti-player game.
01E3B0: 20 20 46 75 6E 20 66 6F 72 20 61 6C 6C 20 20 74 Fun for all t
01E3C0: 68 65 20 66 61 6D 69 6C 79 20 69 6E 20 74 68 65 he family in the
01E3D0: 20 66 65 73 74 69 76 65 20 73 65 61 73 6F 6E 0D festive season.
01E3E0: 0A 20 20 20 77 69 74 68 20 50 65 6C 6D 61 6E 69 . with Pelmani
01E3F0: 73 6D 2C 20 6F 72 20 4D 61 74 63 68 69 6E 67 20 sm, or Matching
01E400: 43 61 72 64 73 2E 0D 0A 0D 0A 20 20 20 3C 3C 54 Cards..... <<T
01E410: 68 69 73 20 69 73 20 73 61 76 65 64 20 6F 6E 20 his is saved on
01E420: 64 69 73 63 20 61 73 20 50 45 4C 4D 41 4E 2E 42 disc as PELMAN.B
01E430: 41 53 3E 3E 0D 0A 0D 0A 20 20 20 49 6E 20 74 68 AS>>.... In th
01E440: 65 20 66 69 6E 65 20 74 72 61 64 69 74 69 6F 6E e fine tradition
01E450: 20 6F 66 20 74 68 69 73 20 73 65 72 69 65 73 20 of this series
01E460: 20 49 27 6D 20 20 67 6F 69 6E 67 20 74 6F 20 67 I'm going to g
01E470: 6F 20 74 68 72 6F 75 67 68 20 74 68 65 20 70 72 o through the pr
01E480: 6F 67 72 61 6D 0D 0A 20 20 20 73 68 6F 77 69 6E ogram.. showin
01E490: 67 20 68 6F 77 20 69 74 20 77 6F 72 6B 73 20 61 g how it works a
01E4A0: 6E 64 20 70 69 63 6B 69 6E 67 20 6F 75 74 20 74 nd picking out t
01E4B0: 68 65 20 6D 6F 73 74 20 68 6F 72 72 69 62 6C 65 he most horrible
01E4C0: 20 6C 69 6E 65 73 20 61 6E 64 20 74 72 79 69 6E lines and tryin
01E4D0: 67 20 74 6F 0D 0A 20 20 20 65 78 70 6C 61 69 6E g to.. explain
01E4E0: 20 68 6F 77 20 6F 6E 20 65 61 72 74 68 20 49 20 how on earth I
01E4F0: 63 61 6D 65 20 75 70 20 20 77 69 74 68 20 20 74 came up with t
01E500: 74 69 6E 67 20 74 68 69 6E 67 73 20 69 6E 20 6C ting things in l
01E510: 69 6E 65 73 20 33 30 30 30 2D 34 35 33 30 20 61 ines 3000-4530 a
01E520: 73 0D 0A 20 20 20 74 68 65 79 20 61 72 65 20 75 s.. they are u
01E530: 73 65 64 20 62 79 20 6D 61 6E 79 20 62 69 74 73 sed by many bits
01E540: 20 6F 66 20 74 68 65 20 70 72 6F 67 72 61 6D 2E of the program.
01E550: 20 20 45 61 63 68 20 72 6F 75 74 69 6E 65 20 75 Each routine u
01E560: 73 65 73 20 74 68 65 20 70 6F 73 69 74 69 6F 6E ses the position
01E570: 0D 0A 20 20 20 6D 61 72 6B 65 72 73 20 28 72 6F .. markers (ro
01E580: 77 2C 63 6F 6C 29 2E 0D 0A 0D 0A 20 20 20 33 30 w,col)..... 30
01E590: 30 30 20 50 72 69 6E 74 69 6E 67 20 63 61 72 64 00 Printing card
01E5A0: 73 0D 0A 20 20 20 46 6F 72 20 73 69 6D 70 6C 69 s.. For simpli
01E5B0: 63 69 74 79 20 69 6E 20 74 68 65 20 76 65 72 73 city in the vers
01E5C0: 69 6F 6E 20 66 6F 72 20 74 68 69 73 20 61 72 74 ion for this art
01E5D0: 69 63 6C 65 2C 20 74 68 65 20 63 61 72 64 73 20 icle, the cards
01E5E0: 61 72 65 20 64 69 73 70 6C 61 79 65 64 20 62 79 are displayed by
01E5F0: 0D 0A 20 20 20 6A 75 73 74 20 74 77 6F 20 63 68 .. just two ch
01E600: 61 72 61 63 74 65 72 73 2C 20 6F 6E 65 20 66 6F aracters, one fo
01E610: 72 20 20 74 68 65 20 20 76 61 6C 75 65 20 20 28 r the value (
01E620: 22 63 61 72 64 22 29 20 20 61 6E 64 20 20 6F 6E "card") and on
01E630: 65 20 66 6F 72 20 74 68 65 20 73 75 69 74 2E 0D e for the suit..
01E640: 0A 20 20 20 54 68 65 73 65 20 61 72 65 20 63 61 . These are ca
01E650: 6C 63 75 6C 61 74 65 64 20 66 72 6F 6D 20 63 28 lculated from c(
01E660: 72 6F 77 2C 63 6F 6C 29 20 69 6E 20 20 6C 69 6E row,col) in lin
01E670: 65 20 20 33 30 30 30 2E 20 20 22 63 61 72 64 22 e 3000. "card"
01E680: 20 74 61 6B 65 73 20 61 20 76 61 6C 75 65 0D 0A takes a value..
01E690: 20 20 20 66 72 6F 6D 20 31 20 74 6F 20 31 33 20 from 1 to 13
01E6A0: 61 6E 64 20 20 22 73 75 69 74 22 20 20 61 20 20 and "suit" a
01E6B0: 76 61 6C 75 65 20 20 66 72 6F 6D 20 20 30 20 20 value from 0
01E6C0: 74 6F 20 20 33 3A 20 20 63 28 72 6F 77 2C 63 6F to 3: c(row,co
01E6D0: 6C 29 20 69 73 20 69 6E 20 66 61 63 74 0D 0A 20 l) is in fact..
01E6E0: 20 20 63 61 72 64 2B 28 73 75 69 74 2A 31 34 29 card+(suit*14)
01E6F0: 2C 20 68 65 6E 63 65 20 63 61 72 64 3D 63 28 72 , hence card=c(r
01E700: 68 65 6D 2E 20 20 20 49 27 6C 6C 20 20 74 72 79 hem. I'll try
01E710: 20 74 6F 20 6B 65 65 70 20 69 74 20 64 6F 77 6E to keep it down
01E720: 20 74 6F 0D 0A 20 20 20 6A 75 73 74 20 6F 6E 65 to.. just one
01E730: 20 61 72 74 69 63 6C 65 2C 20 74 68 6F 75 67 68 article, though
01E740: 2E 0D 0A 0D 0A 20 20 20 53 45 54 54 49 4E 47 20 ..... SETTING
01E750: 4F 55 54 0D 0A 20 20 20 54 68 65 20 66 69 72 73 OUT.. The firs
01E760: 74 20 66 65 77 20 6C 69 6E 65 73 20 73 65 74 20 t few lines set
01E770: 75 70 20 77 68 61 74 20 77 65 20 77 69 6C 6C 20 up what we will
01E780: 6E 65 65 64 20 74 6F 20 70 6C 61 79 20 74 68 65 need to play the
01E790: 20 67 61 6D 65 2E 20 20 49 6E 20 6C 69 6E 65 20 game. In line
01E7A0: 31 30 0D 0A 20 20 20 77 65 20 63 72 65 61 74 65 10.. we create
01E7B0: 20 61 20 73 70 65 63 69 61 6C 20 63 68 61 72 61 a special chara
01E7C0: 63 74 65 72 20 73 6F 20 74 68 61 74 20 74 68 65 cter so that the
01E7D0: 20 6E 75 6D 62 65 72 20 22 31 30 22 20 63 61 6E number "10" can
01E7E0: 20 62 65 20 70 72 69 6E 74 65 64 20 75 70 20 61 be printed up a
01E7F0: 73 0D 0A 20 20 20 6F 6E 65 20 63 68 61 72 61 63 s.. one charac
01E800: 74 65 72 2E 20 20 4C 69 6E 65 20 33 30 20 73 65 ter. Line 30 se
01E810: 74 73 20 20 75 70 20 20 61 72 72 61 79 73 20 20 ts up arrays
01E820: 66 6F 72 20 20 74 68 65 20 20 70 61 63 6B 2C 20 for the pack,
01E830: 74 68 65 20 63 61 72 64 73 20 69 6E 20 74 68 65 the cards in the
01E840: 0D 0A 20 20 20 74 77 6F 2D 64 69 6D 65 6E 73 69 .. two-dimensi
01E850: 6F 6E 61 6C 20 6C 61 79 6F 75 74 2C 20 74 68 65 onal layout, the
01E860: 20 6E 61 6D 65 73 20 6F 66 20 73 69 78 20 20 70 names of six p
01E870: 6C 61 79 65 72 73 20 61 6E 64 20 74 68 65 20 6E layers and the n
01E880: 75 6D 62 65 72 73 20 6F 66 20 70 61 69 72 73 0D umbers of pairs.
01E890: 0A 20 20 20 77 6F 6E 20 62 79 20 74 68 65 20 73 . won by the s
01E8A0: 69 78 20 70 6C 61 79 65 72 73 2E 20 20 4C 69 6E ix players. Lin
01E8B0: 65 20 20 34 30 20 20 64 65 66 69 6E 65 73 20 20 e 40 defines
01E8C0: 61 20 20 73 74 72 69 6E 67 20 77 68 69 63 68 20 a string which
01E8D0: 77 65 20 77 69 6C 6C 20 75 73 65 20 74 6F 0D 0A we will use to..
01E8E0: 20 20 20 70 72 69 6E 74 20 75 70 20 74 68 65 20 print up the
01E8F0: 76 61 6C 75 65 73 20 6F 66 20 74 68 65 20 63 61 values of the ca
01E900: 6F 77 2C 63 6F 6C 29 20 6D 6F 64 20 31 34 20 61 ow,col) mod 14 a
01E910: 6E 64 20 73 75 69 74 3D 63 28 72 6F 77 2C 63 6F nd suit=c(row,co
01E920: 6C 29 5C 31 34 2E 0D 0A 0D 0A 20 20 20 54 68 65 l)\14..... The
01E930: 20 73 75 69 74 20 63 68 61 72 61 63 74 65 72 73 suit characters
01E940: 20 61 72 65 20 69 6E 20 74 68 65 20 41 53 43 49 are in the ASCI
01E950: 49 20 63 68 61 72 61 63 74 65 72 20 73 65 74 20 I character set
01E960: 77 68 69 63 68 20 6D 61 6B 65 73 20 74 68 69 6E which makes thin
01E970: 67 73 20 76 65 72 79 0D 0A 20 20 20 65 61 73 79 gs very.. easy
01E980: 2E 20 20 54 68 65 20 63 68 61 72 61 63 74 65 72 . The character
01E990: 20 66 6F 72 20 22 63 61 72 64 22 20 20 69 73 20 for "card" is
01E9A0: 20 68 65 6C 64 20 20 69 6E 20 20 74 68 65 20 73 held in the s
01E9B0: 74 72 69 6E 67 20 63 61 72 64 24 20 64 65 66 69 tring card$ defi
01E9C0: 6E 65 64 20 69 6E 0D 0A 20 20 20 6C 69 6E 65 20 ned in.. line
01E9D0: 34 30 2E 20 41 6C 6C 20 77 65 20 68 61 76 65 20 40. All we have
01E9E0: 74 6F 20 20 64 6F 20 20 74 6F 20 20 70 72 69 6E to do to prin
01E9F0: 74 20 20 69 74 20 20 69 73 20 74 6F 20 74 61 6B t it is to tak
01EA00: 65 20 6F 75 74 20 74 68 65 20 61 70 70 72 6F 70 e out the approp
01EA10: 72 69 61 74 65 0D 0A 20 20 20 63 68 61 72 61 63 riate.. charac
01EA20: 74 65 72 20 75 73 69 6E 67 20 4D 49 44 24 2E 20 ter using MID$.
01EA30: 20 54 68 65 20 63 6F 6C 6F 75 72 20 74 6F 20 70 The colour to p
01EA40: 72 69 6E 74 20 74 68 65 20 63 61 72 64 73 20 69 rint the cards i
01EA50: 73 20 73 6C 69 67 68 74 6C 79 20 74 72 69 63 6B s slightly trick
01EA60: 79 20 74 6F 0D 0A 20 20 20 77 6F 72 6B 20 6F 75 y to.. work ou
01EA70: 74 20 61 73 20 77 65 20 77 61 6E 74 20 62 6C 61 t as we want bla
01EA80: 63 6B 20 28 30 29 20 66 6F 72 20 73 75 69 74 73 ck (0) for suits
01EA90: 20 30 20 61 6E 64 20 33 20 28 63 6C 75 62 73 20 0 and 3 (clubs
01EAA0: 61 6E 64 20 73 70 61 64 65 73 29 20 61 6E 64 20 and spades) and
01EAB0: 72 65 64 0D 0A 20 20 20 28 31 29 20 66 6F 72 20 red.. (1) for
01EAC0: 73 75 69 74 73 20 31 20 61 6E 64 20 32 20 28 64 suits 1 and 2 (d
01EAD0: 69 61 6D 6F 6E 64 73 20 20 61 6E 64 20 20 68 65 iamonds and he
01EAE0: 61 72 74 73 29 2E 20 20 54 72 79 20 6F 75 74 20 arts). Try out
01EAF0: 74 68 65 20 65 78 70 72 65 73 73 69 6F 6E 20 66 the expression f
01EB00: 72 64 73 2E 0D 0A 0D 0A 20 20 20 49 6E 20 6C 69 rds..... In li
01EB10: 6E 65 20 35 30 20 77 65 20 70 75 74 20 35 32 20 ne 50 we put 52
01EB20: 65 6E 74 72 69 65 73 20 69 6E 20 74 68 65 20 22 entries in the "
01EB30: 70 61 63 6B 22 20 61 72 72 61 79 2E 20 20 57 65 pack" array. We
01EB40: 20 63 6F 75 6C 64 20 6A 75 73 74 20 72 65 70 72 could just repr
01EB50: 65 73 65 6E 74 0D 0A 20 20 20 74 68 65 20 63 61 esent.. the ca
01EB60: 72 64 73 20 62 79 20 74 68 65 20 6E 75 6D 62 65 rds by the numbe
01EB70: 72 73 20 31 2D 35 32 20 62 75 74 20 69 74 20 20 rs 1-52 but it
01EB80: 74 75 72 6E 73 20 6F 75 74 20 74 6F 20 62 65 20 turns out to be
01EB90: 65 61 73 69 65 72 20 74 6F 20 6D 61 6E 69 70 75 easier to manipu
01EBA0: 6C 61 74 65 0D 0A 20 20 20 74 68 65 6D 20 69 6E late.. them in
01EBB0: 20 6F 74 68 65 72 20 63 61 72 64 20 67 61 6D 65 other card game
01EBC0: 73 20 49 20 68 61 76 65 20 20 77 72 69 74 74 65 s I have writte
01EBD0: 6E 20 20 69 66 20 77 65 20 75 73 65 20 31 2D 31 n if we use 1-1
01EBE0: 33 2C 20 31 35 2D 32 37 2C 20 32 39 2D 34 31 20 3, 15-27, 29-41
01EBF0: 61 6E 64 0D 0A 20 20 20 34 33 2D 35 35 20 66 6F and.. 43-55 fo
01EC00: 72 20 63 6C 75 62 73 2C 20 20 64 69 61 6D 6F 6E r clubs, diamon
01EC10: 64 73 2C 20 20 68 65 61 72 74 73 20 20 61 6E 64 ds, hearts and
01EC20: 20 20 73 70 61 64 65 73 20 20 72 65 73 70 65 63 spades respec
01EC30: 74 69 76 65 6C 79 2C 20 20 68 65 6E 63 65 20 74 tively, hence t
01EC40: 68 65 0D 0A 20 20 20 70 65 63 75 6C 69 61 72 20 he.. peculiar
01EC50: 65 78 70 72 65 73 73 69 6F 6E 20 69 6E 20 6C 69 expression in li
01EC60: 6E 65 20 35 30 2E 20 20 20 4C 69 6E 65 20 20 36 ne 50. Line 6
01EC70: 30 20 20 73 65 74 73 20 20 75 70 20 74 68 65 20 0 sets up the
01EC80: 69 6E 6B 73 20 28 62 6C 61 63 6B 2C 20 72 65 64 inks (black, red
01EC90: 2C 0D 0A 20 20 20 77 68 69 74 65 2C 20 61 6E 64 ,.. white, and
01ECA0: 20 67 72 65 65 6E 20 66 6F 72 20 74 68 65 20 63 green for the c
01ECB0: 61 72 64 20 74 61 62 6C 65 29 20 61 6E 64 20 20 ard table) and
01ECC0: 6C 69 6E 65 20 37 30 20 67 69 76 65 73 20 75 73 line 70 gives us
01ECD0: 20 61 20 77 69 6E 64 6F 77 20 61 74 20 74 68 65 a window at the
01ECE0: 0D 0A 20 20 20 62 6F 74 74 6F 6D 20 66 6F 72 20 .. bottom for
01ECF0: 6D 65 73 73 61 67 65 73 2E 0D 0A 0D 0A 20 20 20 messages.....
01ED00: 6D 63 68 3A 47 4F 53 55 42 20 31 30 31 30 0D 0A mch:GOSUB 1010..
01ED10: 20 20 20 31 30 30 34 20 57 45 4E 44 0D 0A 20 20 1004 WEND..
01ED20: 20 31 30 30 35 20 6D 64 3D 28 49 4E 4B 45 59 28 1005 md=(INKEY(
01ED30: 75 70 29 3E 2D 31 29 2D 28 49 4E 4B 45 59 28 64 up)>-1)-(INKEY(d
01ED40: 6F 77 29 3E 2D 31 29 3A 6D 7A 3D 6D 64 0D 0A 20 ow)>-1):mz=md..
01ED50: 20 20 31 30 30 36 20 6B 70 3D 2D 28 49 4E 4B 45 1006 kp=-(INKE
01ED60: 59 28 6C 65 29 3E 2D 31 29 2D 32 2A 28 49 4E 4B Y(le)>-1)-2*(INK
01ED70: 45 59 28 72 69 29 3E 2D 31 29 2D 34 2A 28 49 4E EY(ri)>-1)-4*(IN
01ED80: 4B 45 59 28 66 69 29 3E 2D 31 29 0D 0A 20 20 20 KEY(fi)>-1)..
01ED90: 31 30 30 37 20 57 45 4E 44 0D 0A 20 20 20 31 30 1007 WEND.. 10
01EDA0: 30 38 20 57 48 49 4C 45 20 49 4E 4B 45 59 24 3C 08 WHILE INKEY$<
01EDB0: 3E 22 22 3A 57 45 4E 44 0D 0A 20 20 20 31 30 30 >"":WEND.. 100
01EDC0: 39 20 52 45 54 55 52 4E 0D 0A 20 20 20 31 30 31 9 RETURN.. 101
01EDD0: 30 20 50 52 49 4E 54 20 43 48 52 24 28 32 33 29 0 PRINT CHR$(23)
01EDE0: 2B 43 48 52 24 28 31 29 3B 0D 0A 20 20 20 31 30 +CHR$(1);.. 10
01EDF0: 31 31 20 4D 4F 56 45 20 6D 78 2C 6D 79 2D 6D 70 11 MOVE mx,my-mp
01EE00: 2A 6D 73 70 2B 28 6D 64 3D 2D 31 29 2A 28 6D 62 *msp+(md=-1)*(mb
01EE10: 68 2D 32 29 0D 0A 20 20 20 31 30 31 32 20 46 4F h-2).. 1012 FO
01EE20: 52 20 6D 63 3D 31 20 54 4F 20 6D 62 68 2F 32 0D R mc=1 TO mbh/2.
01EE30: 0A 20 20 20 31 30 31 33 20 44 52 41 57 52 20 6D . 1013 DRAWR m
01EE40: 62 6C 2C 30 2C 6D 63 6F 6C 3A 4D 4F 56 45 52 20 bl,0,mcol:MOVER
01EE50: 2D 6D 62 6C 2C 2D 32 2D 28 6D 64 3D 2D 31 29 2A -mbl,-2-(md=-1)*
01EE60: 34 0D 0A 20 20 20 31 30 31 34 20 46 4F 52 20 64 4.. 1014 FOR d
01EE70: 65 6C 61 79 3D 30 20 54 4F 20 6D 64 65 3A 4E 45 elay=0 TO mde:NE
01EE80: 58 54 0D 0A 20 20 20 31 30 31 35 20 4E 45 58 54 XT.. 1015 NEXT
01EE90: 0D 0A 20 20 20 31 30 31 36 20 50 52 49 4E 54 20 .. 1016 PRINT
01EEA0: 43 48 52 24 28 32 33 29 2B 43 48 52 24 28 30 29 CHR$(23)+CHR$(0)
01EEB0: 3B 0D 0A 20 20 20 31 30 31 37 20 52 45 54 55 52 ;.. 1017 RETUR
01EEC0: 4E 0D 0A 1A 20 74 68 65 20 6C 61 73 74 20 6F 66 N... the last of
01EED0: 20 74 68 72 65 65 20 61 72 74 69 63 6C 65 73 20 three articles
01EEE0: 61 62 6F 75 74 20 6D 65 6E 75 20 68 61 6E 64 6C about menu handl
01EEF0: 69 6E 67 20 69 6E 20 42 41 53 49 43 20 77 65 20 ing in BASIC we
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 C9 02 00 00 00 02 ......N.........
01EF20: 1A 00 C5 02 00 00 00 02 1A 00 C1 02 00 00 00 02 ................
01EF30: 1A 00 C6 02 00 00 00 02 1A 00 C2 02 00 00 00 02 ................
01EF40: 1A 00 C7 02 00 00 00 02 1A 00 C3 02 00 00 00 02 ................
01EF50: 1A 00 C8 02 00 00 00 02 1A 00 C4 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: 6F 72 20 22 51 22 2C 20 61 6E 64 20 69 66 20 20 or "Q", and if
01F010: 79 6F 75 20 20 71 75 69 74 20 20 74 68 65 6E 20 you quit then
01F020: 6C 69 6E 65 20 32 35 30 20 72 65 73 65 74 73 20 line 250 resets
01F030: 74 68 65 20 73 63 72 65 65 6E 0D 0A 20 20 20 61 the screen.. a
01F040: 6E 64 20 74 65 78 74 20 73 65 74 74 69 6E 67 73 nd text settings
01F050: 20 75 73 69 6E 67 20 74 77 6F 20 66 69 72 6D 77 using two firmw
01F060: 61 72 65 20 63 61 6C 6C 73 2E 0D 0A 0D 0A 20 20 are calls.....
01F070: 20 43 4F 55 4C 44 20 44 4F 20 42 45 54 54 45 52 COULD DO BETTER
01F080: 0D 0A 20 20 20 54 68 69 73 20 69 73 20 61 20 76 .. This is a v
01F090: 65 72 79 20 62 61 73 69 63 20 76 65 72 73 69 6F ery basic versio
01F0A0: 6E 20 6F 66 20 74 68 65 20 67 61 6D 65 2C 20 61 n of the game, a
01F0B0: 6E 64 20 6C 6F 74 73 20 6F 66 20 74 68 69 6E 67 nd lots of thing
01F0C0: 73 20 63 6F 75 6C 64 20 62 65 20 64 6F 6E 65 0D s could be done.
01F0D0: 0A 20 20 20 74 6F 20 73 70 69 63 65 20 69 74 20 . to spice it
01F0E0: 75 70 2E 20 20 54 68 65 20 63 61 72 64 73 20 20 up. The cards
01F0F0: 63 6F 75 6C 64 20 20 62 65 20 20 61 20 20 62 65 could be a be
01F100: 74 74 65 72 20 20 73 68 61 70 65 20 61 6E 64 20 tter shape and
01F110: 6C 6F 6F 6B 20 6D 6F 72 65 20 6C 69 6B 65 0D 0A look more like..
01F120: 20 20 20 70 6C 61 79 69 6E 67 20 63 61 72 64 73 playing cards
01F130: 2E 20 20 59 6F 75 20 63 6F 75 6C 64 20 69 6E 63 . You could inc
01F140: 6C 75 64 65 20 61 70 70 72 6F 70 72 69 61 74 65 lude appropriate
01F150: 20 6D 75 73 69 63 20 77 68 65 6E 20 63 61 72 64 music when card
01F160: 73 20 6D 61 74 63 68 20 6F 72 20 64 6F 0D 0A 20 s match or do..
01F170: 20 20 6E 6F 74 20 6D 61 74 63 68 2E 20 20 4F 72 not match. Or
01F180: 20 79 6F 75 20 63 6F 75 6C 64 20 64 69 73 70 65 you could dispe
01F190: 6E 73 65 20 20 77 69 74 68 20 20 74 68 65 20 63 nse with the c
01F1A0: 6F 6D 70 75 74 65 72 20 61 6C 74 6F 67 65 74 68 omputer altogeth
01F1B0: 65 72 20 61 6E 64 20 75 73 65 20 61 0D 0A 20 20 er and use a..
01F1C0: 20 73 69 6D 70 6C 65 20 70 61 63 6B 20 6F 66 20 simple pack of
01F1D0: 35 32 20 63 61 72 64 73 20 61 6E 64 20 61 20 74 52 cards and a t
01F1E0: 61 62 6C 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 35 20 able....... 5
01F1F0: 52 45 4D 20 50 65 6C 6D 61 6E 69 73 6D 20 76 2E REM Pelmanism v.
01F200: 20 20 20 6C 69 6E 65 73 20 32 35 33 30 2D 32 35 lines 2530-25
01F210: 36 30 20 64 65 70 65 6E 64 69 6E 67 20 6F 6E 20 60 depending on
01F220: 77 68 69 63 68 20 20 6B 65 79 20 20 69 73 20 20 which key is
01F230: 70 72 65 73 73 65 64 2E 20 20 49 66 20 74 68 65 pressed. If the
01F240: 20 70 6C 61 79 65 72 20 6D 6F 76 65 73 0D 0A 20 player moves..
01F250: 20 20 6F 66 66 20 74 68 65 20 38 78 37 20 72 65 off the 8x7 re
01F260: 63 74 61 6E 67 6C 65 20 74 68 65 20 63 75 72 73 ctangle the curs
01F270: 6F 72 20 77 72 61 70 73 20 20 72 6F 75 6E 64 20 or wraps round
01F280: 20 61 6E 64 20 72 65 61 70 70 65 61 72 73 20 61 and reappears a
01F290: 74 20 74 68 65 20 74 6F 70 20 69 66 0D 0A 20 20 t the top if..
01F2A0: 20 69 74 20 77 65 6E 74 20 6F 66 66 20 74 68 65 it went off the
01F2B0: 20 62 6F 74 74 6F 6D 2C 20 65 74 63 2E 20 20 20 bottom, etc.
01F2C0: 54 68 69 73 20 20 69 73 20 20 64 6F 6E 65 20 20 This is done
01F2D0: 75 73 69 6E 67 20 4D 4F 44 2E 20 20 49 6E 20 6C using MOD. In l
01F2E0: 69 6E 65 20 32 35 33 30 20 77 65 0D 0A 20 20 20 ine 2530 we..
01F2F0: 68 61 76 65 20 74 6F 20 61 64 64 20 38 20 62 65 have to add 8 be
01F300: 66 6F 72 65 20 4D 4F 44 64 69 6E 67 20 62 79 20 fore MODding by
01F310: 20 38 2C 20 20 61 73 20 20 74 68 65 20 63 75 72 8, as the cur
01F320: 73 6F 72 20 6D 69 67 68 74 20 62 65 20 61 74 20 sor might be at
01F330: 70 6F 73 69 74 69 6F 6E 20 30 0D 0A 20 20 20 28 position 0.. (
01F340: 74 68 65 20 66 69 72 73 74 20 72 6F 77 29 20 61 the first row) a
01F350: 6E 64 20 4D 4F 44 20 2D 31 20 20 3D 20 20 2D 31 nd MOD -1 = -1
01F360: 2C 20 20 77 68 65 72 65 61 73 20 20 77 65 20 20 , whereas we
01F370: 77 61 6E 74 20 37 2C 20 66 6F 72 20 74 68 65 20 want 7, for the
01F380: 6C 61 73 74 20 72 6F 77 2E 0D 0A 20 20 20 4C 69 last row... Li
01F390: 6E 65 20 32 35 35 30 20 69 73 20 73 69 6D 69 6C ne 2550 is simil
01F3A0: 61 72 2E 0D 0A 0D 0A 20 20 20 42 65 66 6F 72 65 ar..... Before
01F3B0: 20 6D 6F 76 69 6E 67 20 74 68 65 20 63 75 72 73 moving the curs
01F3C0: 6F 72 20 77 65 20 64 65 6C 65 74 65 20 69 74 20 or we delete it
01F3D0: 20 66 72 6F 6D 20 69 74 73 20 66 6F 72 6D 65 72 from its former
01F3E0: 20 70 6F 73 69 74 69 6F 6E 2C 20 61 6E 64 20 61 position, and a
01F3F0: 66 74 65 72 0D 0A 20 20 20 6D 6F 76 69 6E 67 20 fter.. moving
01F400: 6F 72 0D 0A 20 20 20 70 63 6F 6C 20 61 6E 64 20 or.. pcol and
01F410: 79 6F 75 20 77 69 6C 6C 20 73 65 65 20 74 68 61 you will see tha
01F420: 74 20 69 74 20 77 6F 72 6B 73 2E 0D 0A 0D 0A 20 t it works.....
01F430: 20 20 33 35 30 30 20 50 72 69 6E 74 69 6E 67 20 3500 Printing
01F440: 62 61 63 6B 73 20 6F 66 20 63 61 72 64 73 0D 0A backs of cards..
01F450: 20 20 20 54 68 69 73 20 69 73 20 76 65 72 79 20 This is very
01F460: 73 69 6D 70 6C 65 3A 20 74 68 65 20 62 61 63 6B simple: the back
01F470: 73 20 20 61 72 65 20 20 74 77 6F 20 63 68 61 72 s are two char
01F480: 61 63 74 65 72 73 20 67 6C 65 61 6E 65 64 20 66 acters gleaned f
01F490: 72 6F 6D 20 74 68 65 20 41 53 43 49 49 0D 0A 20 rom the ASCII..
01F4A0: 20 20 63 68 61 72 61 63 74 65 72 20 73 65 74 2E character set.
01F4B0: 0D 0A 0D 0A 20 20 20 34 30 30 30 20 44 65 6C 65 .... 4000 Dele
01F4C0: 74 69 6E 67 20 63 61 72 64 73 0D 0A 20 20 20 54 ting cards.. T
01F4D0: 68 69 73 20 69 73 20 65 76 65 72 20 73 6F 20 65 his is ever so e
01F4E0: 61 73 79 20 61 73 20 61 6C 6C 20 77 65 20 68 61 asy as all we ha
01F4F0: 76 65 20 20 74 6F 20 64 6F 20 69 73 20 70 72 69 ve to do is pri
01F500: 6E 74 20 73 70 61 63 65 73 20 6F 76 65 72 20 74 nt spaces over t
01F510: 68 65 20 74 6F 70 20 6F 66 0D 0A 20 20 20 74 68 he top of.. th
01F520: 65 20 63 61 72 64 20 70 72 65 76 69 6F 75 73 6C e card previousl
01F530: 79 20 74 68 65 72 65 2E 0D 0A 0D 0A 20 20 20 34 y there..... 4
01F540: 35 30 30 20 50 72 69 6E 74 69 6E 67 20 63 75 72 500 Printing cur
01F550: 73 6F 72 0D 0A 20 20 20 54 68 69 73 20 69 73 20 sor.. This is
01F560: 61 6E 20 22 58 22 20 73 70 72 65 61 64 20 6F 76 an "X" spread ov
01F570: 65 72 20 74 77 6F 20 63 68 61 72 61 63 74 65 72 er two character
01F580: 73 2C 20 70 72 69 6E 74 65 64 20 69 6E 20 77 68 s, printed in wh
01F590: 69 74 65 20 69 6E 20 74 72 61 6E 73 70 61 72 65 ite in transpare
01F5A0: 6E 74 0D 0A 20 20 20 6D 6F 64 65 20 6F 76 65 72 nt.. mode over
01F5B0: 20 74 68 65 20 63 61 72 64 20 62 65 6C 6F 77 2E the card below.
01F5C0: 20 20 49 74 20 69 73 20 20 6E 6F 74 20 20 70 72 It is not pr
01F5D0: 69 6E 74 65 64 20 20 75 70 20 20 69 66 20 74 68 inted up if th
01F5E0: 65 20 63 61 72 64 20 69 73 20 74 68 65 20 6F 6E e card is the on
01F5F0: 65 0D 0A 20 20 20 6A 75 73 74 20 73 65 6C 65 63 e.. just selec
01F600: 77 65 20 70 72 69 6E 74 20 69 74 20 69 6E 20 69 we print it in i
01F610: 74 73 20 6E 65 77 20 70 6F 73 69 74 69 6F 6E 2E ts new position.
01F620: 0D 0A 0D 0A 20 20 20 4F 6E 63 65 20 74 68 65 20 .... Once the
01F630: 45 4E 54 45 52 2F 52 45 54 55 52 4E 20 6B 65 79 ENTER/RETURN key
01F640: 20 68 61 73 20 20 62 65 65 6E 20 20 70 72 65 73 has been pres
01F650: 73 65 64 20 20 74 68 65 20 20 63 61 72 64 20 73 sed the card s
01F660: 65 6C 65 63 74 65 64 20 69 73 20 74 75 72 6E 65 elected is turne
01F670: 64 0D 0A 20 20 20 6F 76 65 72 2C 20 69 2E 65 2E d.. over, i.e.
01F680: 20 70 72 69 6E 74 65 64 20 75 70 20 62 79 20 47 printed up by G
01F690: 4F 53 55 42 62 69 6E 67 20 33 30 30 30 2E 20 20 OSUBbing 3000.
01F6A0: 20 54 68 65 20 76 61 6C 75 65 20 6F 66 20 74 68 The value of th
01F6B0: 65 20 63 61 72 64 20 28 77 68 69 63 68 20 77 65 e card (which we
01F6C0: 0D 0A 20 20 20 77 6F 72 6B 65 64 20 6F 75 74 20 .. worked out
01F6D0: 77 68 65 6E 20 47 4F 53 55 42 62 69 6E 67 20 33 when GOSUBbing 3
01F6E0: 30 30 30 29 20 69 73 20 20 73 74 6F 72 65 64 20 000) is stored
01F6F0: 20 69 6E 20 63 61 72 64 73 65 6C 20 61 6E 64 20 in cardsel and
01F700: 74 68 65 20 70 6F 73 69 74 69 6F 6E 20 69 6E 0D the position in.
01F710: 0A 20 20 20 28 72 31 2C 63 31 29 2E 20 20 54 68 . (r1,c1). Th
01F720: 65 20 70 6C 61 79 65 72 20 69 73 20 20 74 68 65 e player is the
01F730: 6E 20 20 61 73 6B 65 64 20 20 74 6F 20 20 63 68 n asked to ch
01F740: 6F 6F 73 65 20 20 61 6E 6F 74 68 65 72 20 63 61 oose another ca
01F750: 72 64 2E 20 20 4C 69 6E 65 20 32 30 33 30 0D 0A rd. Line 2030..
01F760: 20 20 20 65 6E 73 75 72 65 73 20 74 68 61 74 20 ensures that
01F770: 74 68 65 79 20 64 6F 20 6E 6F 74 20 63 68 6F 6F they do not choo
01F780: 73 65 20 74 68 65 20 20 73 61 6D 65 20 63 61 72 se the same car
01F790: 64 20 61 67 61 69 6E 2C 20 70 72 69 6E 74 73 20 d again, prints
01F7A0: 75 70 20 74 68 65 20 73 65 63 6F 6E 64 0D 0A 20 up the second..
01F7B0: 20 20 63 61 72 64 20 73 65 6C 65 63 74 65 64 20 card selected
01F7C0: 61 6E 64 20 74 68 65 6E 20 63 6F 6D 70 61 72 65 and then compare
01F7D0: 73 20 74 68 65 20 76 61 6C 75 65 73 20 6F 66 20 s the values of
01F7E0: 74 68 65 20 74 77 6F 20 63 61 72 64 73 2E 0D 0A the two cards...
01F7F0: 0D 0A 20 20 20 49 66 20 74 68 65 79 20 61 72 65 .. If they are
01F800: 74 65 64 2C 20 69 2E 65 2E 20 69 6E 20 74 68 65 ted, i.e. in the
01F810: 20 70 6F 73 69 74 69 6F 6E 20 28 72 31 2C 63 31 position (r1,c1
01F820: 29 2E 0D 0A 0D 0A 20 20 20 34 35 32 30 20 44 65 )..... 4520 De
01F830: 6C 65 74 69 6E 67 20 63 75 72 73 6F 72 0D 0A 20 leting cursor..
01F840: 20 20 57 65 20 64 6F 20 6E 6F 74 20 6E 65 65 64 We do not need
01F850: 20 74 6F 20 64 65 6C 65 74 65 20 74 68 65 20 63 to delete the c
01F860: 75 72 73 6F 72 20 20 69 66 20 69 74 20 69 73 20 ursor if it is
01F870: 6F 76 65 72 20 74 68 65 20 63 61 72 64 20 6A 75 over the card ju
01F880: 73 74 20 73 65 6C 65 63 74 65 64 2C 0D 0A 20 20 st selected,..
01F890: 20 61 73 20 69 74 20 77 61 73 20 6E 6F 74 20 70 as it was not p
01F8A0: 72 69 6E 74 65 64 20 74 68 65 72 65 20 20 69 6E rinted there in
01F8B0: 20 20 74 68 65 20 20 66 69 72 73 74 20 20 70 6C the first pl
01F8C0: 61 63 65 2E 20 20 20 49 66 20 74 68 65 72 65 20 ace. If there
01F8D0: 77 61 73 20 6E 6F 20 63 61 72 64 0D 0A 20 20 20 was no card..
01F8E0: 75 6E 64 65 72 20 74 68 65 20 63 75 72 73 6F 72 under the cursor
01F8F0: 20 74 68 65 6E 20 74 68 65 20 20 63 75 72 73 6F then the curso
01F900: 72 20 20 69 73 20 20 64 65 6C 65 74 65 64 20 20 r is deleted
01F910: 75 73 69 6E 67 20 74 68 65 20 72 6F 75 74 69 6E using the routin
01F920: 65 20 61 74 20 34 30 30 30 3A 0D 0A 20 20 20 6F e at 4000:.. o
01F930: 74 68 65 72 77 69 73 65 20 74 68 65 20 62 61 63 therwise the bac
01F940: 6B 20 69 73 20 70 72 69 6E 74 65 64 20 75 70 20 k is printed up
01F950: 61 67 61 69 6E 20 75 73 69 6E 67 20 33 35 30 30 again using 3500
01F960: 2E 0D 0A 0D 0A 20 20 20 4F 4E 20 57 49 54 48 20 ..... ON WITH
01F970: 54 48 45 20 47 41 4D 45 0D 0A 20 20 20 4C 69 6E THE GAME.. Lin
01F980: 65 73 20 31 31 30 2D 31 34 30 20 61 6C 6C 6F 77 es 110-140 allow
01F990: 20 74 68 65 20 75 73 65 72 20 20 74 6F 20 20 73 the user to s
01F9A0: 65 6C 65 63 74 20 20 74 68 65 20 20 6E 75 6D 62 elect the numb
01F9B0: 65 72 20 6F 66 20 70 6C 61 79 65 72 73 20 61 6E er of players an
01F9C0: 64 20 65 6E 74 65 72 0D 0A 20 20 20 74 68 65 69 d enter.. thei
01F9D0: 72 20 6E 61 6D 65 73 2C 20 74 68 65 20 66 69 72 r names, the fir
01F9E0: 73 74 20 31 36 20 63 68 61 72 61 63 74 65 72 73 st 16 characters
01F9F0: 20 6F 66 20 20 77 68 69 63 68 20 61 72 65 20 75 of which are u
01FA00: 20 74 68 65 20 73 61 6D 65 20 74 68 65 6E 20 77 the same then w
01FA10: 65 20 47 4F 53 55 42 20 32 31 30 30 2C 20 72 65 e GOSUB 2100, re
01FA20: 6D 6F 76 65 20 74 68 65 20 63 61 72 64 73 20 62 move the cards b
01FA30: 79 20 64 65 6C 65 74 69 6E 67 20 74 68 65 6D 0D y deleting them.
01FA40: 0A 20 20 20 61 6E 64 20 73 65 74 74 69 6E 67 20 . and setting
01FA50: 63 28 72 6F 77 2C 63 6F 6C 29 3D 30 20 66 6F 72 c(row,col)=0 for
01FA60: 20 20 65 61 63 68 20 20 70 6F 73 69 74 69 6F 6E each position
01FA70: 2C 20 20 61 6E 64 20 20 61 64 64 20 20 31 20 74 , and add 1 t
01FA80: 6F 20 74 68 65 20 70 6C 61 79 65 72 27 73 0D 0A o the player's..
01FA90: 20 20 20 73 63 6F 72 65 20 6F 66 20 70 61 69 72 score of pair
01FAA0: 73 20 77 6F 6E 2C 20 70 72 69 6E 74 69 6E 67 20 s won, printing
01FAB0: 69 74 20 20 62 65 6C 6F 77 20 20 74 68 65 69 72 it below their
01FAC0: 20 20 6E 61 6D 65 20 6F 6E 20 73 63 72 65 65 6E name on screen
01FAD0: 2E 20 20 54 68 65 20 70 6C 61 79 65 72 0D 0A 20 . The player..
01FAE0: 20 20 74 68 65 6E 20 67 65 74 73 20 61 6E 6F 74 then gets anot
01FAF0: 68 65 72 20 74 75 72 6E 2E 20 20 49 66 20 74 68 her turn. If th
01FB00: 65 20 63 61 72 64 73 20 64 6F 20 6E 6F 74 20 6D e cards do not m
01FB10: 61 74 63 68 20 74 68 65 6E 20 74 68 65 79 20 61 atch then they a
01FB20: 72 65 20 73 68 6F 77 6E 20 66 6F 72 0D 0A 20 20 re shown for..
01FB30: 20 61 20 73 65 74 20 6C 65 6E 67 74 68 20 6F 66 a set length of
01FB40: 20 74 69 6D 65 20 73 6F 20 74 68 61 74 20 20 61 time so that a
01FB50: 6C 6C 20 20 70 6C 61 79 65 72 73 20 20 68 61 76 ll players hav
01FB60: 65 20 61 20 66 61 69 72 20 63 68 61 6E 63 65 20 e a fair chance
01FB70: 74 6F 20 73 65 65 20 77 68 61 74 0D 0A 20 20 20 to see what..
01FB80: 61 6E 64 20 77 68 65 72 65 20 74 68 65 79 20 77 and where they w
01FB90: 65 72 65 2C 20 61 6E 64 20 20 74 68 65 6E 20 20 ere, and then
01FBA0: 74 68 65 79 20 20 61 72 65 20 20 74 75 72 6E 65 they are turne
01FBB0: 64 20 20 6F 76 65 72 20 61 67 61 69 6E 20 62 79 d over again by
01FBC0: 20 47 4F 53 55 42 62 69 6E 67 0D 0A 20 20 20 33 GOSUBbing.. 3
01FBD0: 35 30 30 2C 20 61 6E 64 20 69 74 20 69 73 20 74 500, and it is t
01FBE0: 68 65 20 6E 65 78 74 20 70 6C 61 79 65 72 27 73 he next player's
01FBF0: 20 74 75 72 6E 2E 0D 0A 0D 0A 20 20 20 41 4E 44 turn..... AND
01FC00: 73 65 64 20 62 79 20 74 68 65 20 70 72 6F 67 72 sed by the progr
01FC10: 61 6D 20 61 6E 64 0D 0A 20 20 20 61 72 65 20 70 am and.. are p
01FC20: 72 69 6E 74 65 64 20 75 70 20 74 6F 20 74 68 65 rinted up to the
01FC30: 20 20 72 69 67 68 74 20 20 6F 66 20 20 74 68 65 right of the
01FC40: 20 20 64 65 61 6C 74 20 20 6F 75 74 20 63 61 72 dealt out car
01FC50: 64 73 2E 20 20 41 6C 6C 20 73 69 78 20 70 6C 61 ds. All six pla
01FC60: 79 65 72 73 27 0D 0A 20 20 20 73 63 6F 72 65 73 yers'.. scores
01FC70: 20 61 72 65 20 73 65 74 20 74 6F 20 30 20 72 65 are set to 0 re
01FC80: 67 61 72 64 6C 65 73 73 20 6F 66 20 68 6F 77 20 gardless of how
01FC90: 20 6D 61 6E 79 20 61 72 65 20 70 6C 61 79 69 6E many are playin
01FCA0: 67 20 61 73 20 6C 69 6E 65 20 31 35 30 20 63 68 g as line 150 ch
01FCB0: 65 63 6B 73 0D 0A 20 20 20 74 68 65 20 73 75 6D ecks.. the sum
01FCC0: 20 74 6F 74 61 6C 20 6F 66 20 70 61 69 72 73 20 total of pairs
01FCD0: 77 6F 6E 20 74 6F 20 64 65 74 65 72 6D 69 6E 65 won to determine
01FCE0: 20 77 68 65 6E 20 74 68 65 20 67 61 6D 65 20 65 when the game e
01FCF0: 6E 64 73 2E 0D 0A 0D 0A 20 20 20 54 41 4B 49 4E nds..... TAKIN
01FD00: 47 20 54 55 52 4E 53 0D 0A 20 20 20 57 65 20 6E G TURNS.. We n
01FD10: 6F 77 20 47 4F 53 55 42 20 74 68 65 20 6D 61 69 ow GOSUB the mai
01FD20: 6E 20 6C 6F 6F 70 20 20 69 6E 20 20 32 30 30 30 n loop in 2000
01FD30: 20 20 66 6F 72 20 20 65 61 63 68 20 70 6C 61 79 for each play
01FD40: 65 72 27 73 20 74 75 72 6E 2E 20 20 54 68 65 20 er's turn. The
01FD50: 63 75 72 73 6F 72 0D 0A 20 20 20 73 74 61 72 74 cursor.. start
01FD60: 73 20 6F 66 66 20 61 74 20 28 30 2C 30 29 20 61 s off at (0,0) a
01FD70: 6E 64 20 74 68 65 20 70 6F 73 69 74 69 6F 6E 20 nd the position
01FD80: 20 6F 66 20 74 68 65 20 6C 61 73 74 20 63 61 72 of the last car
01FD90: 64 20 63 68 6F 73 65 6E 2C 20 28 72 31 2C 63 31 d chosen, (r1,c1
01FDA0: 29 2C 20 69 73 0D 0A 20 20 20 73 65 74 20 74 6F ), is.. set to
01FDB0: 20 62 65 20 28 2D 31 2C 2D 31 29 20 61 73 20 74 be (-1,-1) as t
01FDC0: 68 69 73 20 69 73 20 20 6F 75 74 73 69 64 65 20 his is outside
01FDD0: 20 74 68 65 20 70 6C 61 79 69 6E 67 20 61 72 65 the playing are
01FDE0: 61 20 73 6F 20 77 6F 6E 27 74 20 69 6E 74 65 72 a so won't inter
01FDF0: 66 65 72 65 0D 0A 20 20 20 77 69 74 68 20 74 68 fere.. with th
01FE00: 20 54 48 45 20 57 49 4E 4E 45 52 20 49 53 2E 2E THE WINNER IS..
01FE10: 2E 0D 0A 20 20 20 4F 6E 63 65 20 61 6C 6C 20 74 ... Once all t
01FE20: 68 65 20 70 61 69 72 73 20 68 61 76 65 20 62 65 he pairs have be
01FE30: 65 6E 20 77 6F 6E 2C 20 74 68 65 20 57 48 49 4C en won, the WHIL
01FE40: 45 2D 57 45 4E 44 20 6C 6F 6F 70 20 69 6E 20 6C E-WEND loop in l
01FE50: 69 6E 65 20 31 35 30 20 65 6E 64 73 20 61 6E 64 ine 150 ends and
01FE60: 0D 0A 20 20 20 77 65 20 67 65 74 20 6F 6E 74 6F .. we get onto
01FE70: 20 74 68 65 20 62 75 73 69 6E 65 73 73 20 20 6F the business o
01FE80: 66 20 20 77 6F 72 6B 69 6E 67 20 20 6F 75 74 20 f working out
01FE90: 20 74 68 65 20 20 77 69 6E 6E 65 72 2E 20 20 41 the winner. A
01FEA0: 73 20 6D 6F 72 65 20 74 68 61 6E 20 6F 6E 65 0D s more than one.
01FEB0: 0A 20 20 20 70 6C 61 79 65 72 20 6D 69 67 68 74 . player might
01FEC0: 20 68 61 76 65 20 67 6F 74 20 74 68 65 20 68 69 have got the hi
01FED0: 67 68 65 73 74 20 6E 75 6D 62 65 72 20 6F 66 20 ghest number of
01FEE0: 70 61 69 72 73 20 77 65 20 73 74 6F 72 65 20 61 pairs we store a
01FEF0: 20 63 68 61 72 61 63 74 65 72 20 66 6F 72 0D 0A character for..
01FF00: 20 20 20 65 61 63 68 20 6F 66 20 74 68 65 20 77 each of the w
01FF10: 69 6E 6E 65 72 73 20 69 6E 20 77 69 6E 24 2C 20 inners in win$,
01FF20: 61 6E 64 20 74 68 65 20 6C 65 6E 67 74 68 20 6F and the length o
01FF30: 66 20 77 69 6E 24 20 73 68 6F 77 73 20 68 6F 77 f win$ shows how
01FF40: 20 6D 61 6E 79 20 77 69 6E 6E 65 72 73 0D 0A 20 many winners..
01FF50: 20 20 74 68 65 72 65 20 61 72 65 2E 20 20 57 65 there are. We
01FF60: 20 63 61 6E 20 74 68 65 6E 20 20 70 72 69 6E 74 can then print
01FF70: 20 20 75 70 20 20 61 70 70 72 6F 70 72 69 61 74 up appropriat
01FF80: 65 20 63 6F 6E 67 72 61 74 75 6C 61 74 6F 72 79 e congratulatory
01FF90: 20 6D 65 73 73 61 67 65 73 20 69 6E 0D 0A 20 20 messages in..
01FFA0: 20 6C 69 6E 65 20 32 32 30 2E 20 20 4C 69 6E 65 line 220. Line
01FFB0: 20 32 33 30 20 77 61 69 74 73 20 66 6F 72 20 79 230 waits for y
01FFC0: 6F 75 20 20 74 6F 20 20 64 65 63 69 64 65 20 77 ou to decide w
01FFD0: 68 65 74 68 65 72 20 74 6F 20 70 6C 61 79 20 61 hether to play a
01FFE0: 67 61 69 6E 20 6F 72 20 6E 6F 74 0D 0A 20 20 20 gain or not..
01FFF0: 62 79 20 70 72 65 73 73 69 6E 67 20 22 50 22 20 by pressing "P"
020000: 65 20 70 72 69 6E 74 69 6E 67 20 75 70 20 6F 66 e printing up of
020010: 20 74 68 65 20 20 63 75 72 73 6F 72 2E 20 20 20 the cursor.
020020: 47 4F 53 55 42 62 69 6E 67 20 20 32 35 30 30 20 GOSUBbing 2500
020030: 74 65 6C 6C 73 20 74 68 65 20 70 6C 61 79 65 72 tells the player
020040: 20 74 6F 0D 0A 20 20 20 63 68 6F 6F 73 65 20 22 to.. choose "
020050: 61 20 63 61 72 64 22 20 6F 72 20 22 61 6E 6F 74 a card" or "anot
020060: 68 65 72 20 63 61 72 64 22 20 20 64 65 70 65 6E her card" depen
020070: 64 69 6E 67 20 20 6F 6E 20 20 74 68 65 20 76 61 ding on the va
020080: 6C 75 65 20 6F 66 20 6D 75 64 24 20 2D 20 74 68 lue of mud$ - th
020090: 69 73 0D 0A 20 20 20 73 61 76 65 73 20 68 61 76 is.. saves hav
0200A0: 69 6E 67 20 74 6F 20 70 75 74 20 69 6E 20 74 68 ing to put in th
0200B0: 65 20 20 73 61 6D 65 20 20 72 6F 75 74 69 6E 65 e same routine
0200C0: 20 20 74 77 69 63 65 2E 20 20 4C 69 6E 65 20 32 twice. Line 2
0200D0: 35 32 30 20 77 61 69 74 73 20 66 6F 72 20 74 68 520 waits for th
0200E0: 65 0D 0A 20 20 20 63 75 72 73 6F 72 20 6B 65 79 e.. cursor key
0200F0: 73 20 6F 72 20 74 68 65 20 45 4E 54 45 52 2F 52 s or the ENTER/R
020100: 45 54 55 52 4E 20 6B 65 79 20 20 74 6F 20 20 62 ETURN key to b
020110: 65 20 20 70 72 65 73 73 65 64 2E 20 20 49 74 20 e pressed. It
020120: 6F 6E 6C 79 20 72 65 73 70 6F 6E 64 73 20 74 6F only responds to
020130: 0D 0A 20 20 20 74 68 65 20 45 4E 54 45 52 2F 52 .. the ENTER/R
020140: 45 54 55 52 4E 20 6B 65 79 20 69 66 20 74 68 65 ETURN key if the
020150: 72 65 20 69 73 20 61 20 63 61 72 64 20 20 69 6E re is a card in
020160: 20 74 68 61 74 20 70 6F 73 69 74 69 6F 6E 2C 20 that position,
020170: 69 6E 20 77 68 69 63 68 20 63 61 73 65 20 61 0D in which case a.
020180: 0A 20 20 20 63 61 72 64 20 68 61 73 20 62 65 65 . card has bee
020190: 6E 20 73 65 6C 65 63 74 65 64 20 61 6E 64 20 77 n selected and w
0201A0: 65 20 63 61 6E 20 52 45 54 55 52 4E 2E 0D 0A 0D e can RETURN....
0201B0: 0A 20 20 20 49 66 20 61 20 63 75 72 73 6F 72 20 . If a cursor
0201C0: 6B 65 79 20 69 73 20 70 72 65 73 73 65 64 20 77 key is pressed w
0201D0: 65 20 20 6E 65 65 64 20 20 74 6F 20 20 6D 6F 76 e need to mov
0201E0: 65 20 74 68 65 20 63 75 72 73 6F 72 2E 20 20 54 e the cursor. T
0201F0: 68 69 73 20 69 73 20 64 6F 6E 65 20 69 6E 0D 0A his is done in..
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 C3 02 00 00 00 02 ......N.........
020220: 1B 00 C8 02 00 00 00 02 1B 00 C4 02 00 00 00 02 ................
020230: 1B 00 C9 02 00 00 00 02 1B 00 C5 02 00 00 00 02 ................
020240: 1B 00 C1 02 00 00 00 02 1B 00 C6 02 00 00 00 02 ................
020250: 1B 00 C2 02 00 00 00 02 1B 00 C7 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: 3B 22 2E 22 20 45 4C 53 45 20 50 52 49 4E 54 22 ;"." ELSE PRINT"
020310: 73 20 61 72 65 3A 22 3A 0D 0A 20 20 20 20 20 20 s are:":..
020320: 20 46 4F 52 20 6E 3D 31 20 54 4F 20 4C 45 4E 28 FOR n=1 TO LEN(
020330: 77 69 6E 24 29 3A 50 52 49 4E 54 20 70 6C 24 28 win$):PRINT pl$(
020340: 41 53 43 28 4D 49 44 24 28 77 69 6E 24 2C 6E 2C ASC(MID$(win$,n,
020350: 31 29 29 29 3A 4E 45 58 54 0D 0A 20 20 20 32 33 1))):NEXT.. 23
020360: 30 20 4C 4F 43 41 54 45 23 31 2C 31 2C 31 3A 50 0 LOCATE#1,1,1:P
020370: 52 49 4E 54 23 31 2C 22 50 72 65 73 73 20 50 20 RINT#1,"Press P
020380: 74 6F 20 70 6C 61 79 20 61 67 61 69 6E 2C 20 51 to play again, Q
020390: 20 74 6F 20 71 75 69 74 22 3B 43 48 52 24 28 32 to quit";CHR$(2
0203A0: 30 29 3B 3A 0D 0A 20 20 20 20 20 20 20 61 24 3D 0);:.. a$=
0203B0: 22 22 3A 57 48 49 4C 45 20 61 24 3C 22 50 22 20 "":WHILE a$<"P"
0203C0: 4F 52 20 61 24 3E 22 51 22 3A 61 24 3D 55 50 50 OR a$>"Q":a$=UPP
0203D0: 45 52 24 28 49 4E 4B 45 59 24 29 3A 57 45 4E 44 ER$(INKEY$):WEND
0203E0: 0D 0A 20 20 20 32 34 30 20 49 46 20 61 24 3D 22 .. 240 IF a$="
0203F0: 50 22 20 47 4F 54 4F 20 35 30 0D 0A 20 20 20 32 P" GOTO 50.. 2
020400: 35 30 20 43 41 4C 4C 20 26 42 43 30 32 3A 43 41 50 CALL &BC02:CA
020410: 4C 4C 20 26 42 42 34 45 3A 4D 4F 44 45 20 31 3A LL &BB4E:MODE 1:
020420: 45 4E 44 0D 0A 20 20 20 31 30 30 30 20 4C 4F 43 END.. 1000 LOC
020430: 41 54 45 23 31 2C 31 30 2C 31 3A 50 52 49 4E 54 ATE#1,10,1:PRINT
020440: 23 31 2C 43 48 52 24 28 31 37 29 3B 22 44 65 61 #1,CHR$(17);"Dea
020450: 6C 69 6E 67 2E 2E 2E 22 3B 43 48 52 24 28 32 30 ling...";CHR$(20
020460: 29 3B 0D 0A 20 20 20 31 30 31 30 20 6E 3D 35 32 );.. 1010 n=52
020470: 3A 46 4F 52 20 72 6F 77 3D 30 20 54 4F 20 36 3A :FOR row=0 TO 6:
020480: 46 4F 52 20 63 6F 6C 3D 30 20 54 4F 20 36 3A 63 FOR col=0 TO 6:c
020490: 64 65 6C 3D 49 4E 54 28 52 4E 44 2A 6E 2B 31 29 del=INT(RND*n+1)
0204A0: 3A 0D 0A 20 20 20 20 20 20 20 20 63 28 72 6F 77 :.. c(row
0204B0: 2C 63 6F 6C 29 3D 70 61 63 6B 28 63 64 65 6C 29 ,col)=pack(cdel)
0204C0: 3A 70 61 63 6B 28 63 64 65 6C 29 3D 70 61 63 6B :pack(cdel)=pack
0204D0: 28 6E 29 3A 47 4F 53 55 42 20 33 35 30 30 3A 6E (n):GOSUB 3500:n
0204E0: 3D 6E 2D 31 3A 4E 45 58 54 3A 4E 45 58 54 0D 0A =n-1:NEXT:NEXT..
0204F0: 20 20 20 31 30 32 30 20 46 4F 52 20 63 6F 6C 3D 1020 FOR col=
020500: 00 44 49 53 43 4D 45 4E 55 42 41 53 00 00 00 00 .DISCMENUBAS....
020510: 00 00 00 00 00 70 01 00 74 03 00 00 00 00 00 00 .....p..t.......
020520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020530: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
020540: 74 03 00 8D 04 A6 20 A3 20 03 00 00 F5 01 0D 00 t..... £ .......
020550: 00 F5 EF FF 1D 28 03 00 00 F5 29 01 D5 01 A1 20 .....(....)....
020560: 03 00 00 F5 F2 22 22 20 EB 20 7C 00 55 53 45 D2 ....."" . |.USE.
020570: 2C 0D 00 00 F5 01 8A 01 84 01 0D 00 00 F6 EF FF ,...............
020580: B5 00 0A 00 8E 20 61 2D 7A 01 AA 20 FF 42 F5 19 ..... a-z.. .B..
020590: 22 01 0D 00 00 E1 EF FF 1B 28 FF 42 F4 0F 29 01 "........(.B..).
0205A0: 9E 20 0D 00 00 F8 EF 0E 20 EC 20 19 21 01 C3 20 . ...... . .!..
0205B0: 03 00 00 E1 01 BE 20 0D 00 00 E1 F4 0D 00 00 F8 ...... .........
0205C0: 2C FF 1D 28 22 26 22 F4 03 00 00 E1 29 01 B0 01 ,..("&".....)...
0205D0: 8C 20 43 44 2C 37 38 2C 42 42 2C 34 43 2C 44 44 . CD,78,BB,4C,DD
0205E0: 2C 36 45 2C 30 2C 44 44 2C 36 36 2C 31 2C 34 36 ,6E,0,DD,66,1,46
0205F0: 2C 37 38 2C 42 37 2C 43 38 2C 32 33 2C 35 45 2C ,78,B7,C8,23,5E,
020600: 32 33 2C 36 36 2C 36 42 2C 43 44 2C 36 30 2C 42 23,66,6B,CD,60,B
020610: 42 2C 37 37 2C 32 33 2C 43 2C 37 39 2C 45 35 2C B,77,23,C,79,E5,
020620: 43 44 2C 36 46 2C 42 42 2C 45 31 2C 31 30 2C 46 CD,6F,BB,E1,10,F
020630: 32 2C 43 39 00 48 00 14 00 83 20 1C 4E BB 01 83 2,C9.H.... .N...
020640: 20 1C 02 BC 01 83 20 1C BA BB 01 AD 20 10 01 BF ..... ..... ...
020650: 20 FF 03 28 19 17 29 F4 FF 03 28 0F 29 01 0D 00 ..(..)...(.)...
020660: 00 F8 EF 19 64 01 0D 00 00 F9 EF 1A 28 01 01 84 ....d.......(...
020670: 01 0D 00 00 F6 EF FF 7F 28 23 0E 29 00 56 00 1E ........(#.).V..
020680: 00 D6 20 0F 01 D0 01 03 00 00 E6 EF FF 16 28 19 .. ...........(.
020690: 0C 29 01 D6 20 AC 28 03 00 00 E6 2C 17 2C 0F 29 .).. .(....,.,.)
0206A0: F2 22 2E 22 20 FA 20 AC 28 03 00 00 E6 2C 16 2C ."." . .(....,.,
0206B0: 0F 29 F2 22 3A 22 01 AE 20 0D 00 00 F8 2C 0D 00 .).":".. ....,..
0206C0: 00 F9 01 BF 20 FF 03 28 19 D7 29 3B 01 9F 20 1E .... ..(..);.. .
0206D0: 50 00 00 E6 00 28 00 D6 20 FF 0A 28 19 2F 29 F4 P....(.. ..(./).
0206E0: FF 0A 28 19 12 29 F4 FF 0A 28 17 29 EF F5 11 01 ..(..)...(.)....
0206F0: 0D 00 00 E2 EF 0D 00 00 F8 01 0D 00 00 E3 EF 0D ................
020700: 30 20 54 4F 20 32 3A 63 64 65 6C 3D 49 4E 54 28 0 TO 2:cdel=INT(
020710: 52 4E 44 28 31 29 2A 6E 2B 31 29 3A 63 28 72 6F RND(1)*n+1):c(ro
020720: 77 2C 63 6F 6C 29 3D 70 61 63 6B 28 63 64 65 6C w,col)=pack(cdel
020730: 29 3A 0D 0A 20 20 20 20 20 20 20 20 70 61 63 6B ):.. pack
020740: 28 63 64 65 6C 29 3D 70 61 63 6B 28 6E 29 3A 47 (cdel)=pack(n):G
020750: 4F 53 55 42 20 33 35 30 30 3A 6E 3D 6E 2D 31 3A OSUB 3500:n=n-1:
020760: 4E 45 58 54 3A 52 45 54 55 52 4E 0D 0A 20 20 20 NEXT:RETURN..
020770: 32 30 30 30 20 72 6F 77 3D 30 3A 63 6F 6C 3D 30 2000 row=0:col=0
020780: 3A 72 31 3D 2D 31 3A 63 31 3D 2D 31 3A 47 4F 53 :r1=-1:c1=-1:GOS
020790: 55 42 20 34 35 30 30 0D 0A 20 20 20 32 30 31 30 UB 4500.. 2010
0207A0: 20 6D 75 64 24 3D 22 22 3A 47 4F 53 55 42 20 32 mud$="":GOSUB 2
0207B0: 35 30 30 3A 47 4F 53 55 42 20 33 30 30 30 3A 72 500:GOSUB 3000:r
0207C0: 31 3D 72 6F 77 3A 63 31 3D 63 6F 6C 3A 63 61 72 1=row:c1=col:car
0207D0: 64 73 65 6C 3D 63 61 72 64 0D 0A 20 20 20 32 30 dsel=card.. 20
0207E0: 32 30 20 6D 75 64 24 3D 22 6E 6F 74 68 65 72 22 20 mud$="nother"
0207F0: 3A 47 4F 53 55 42 20 32 35 30 30 0D 0A 20 20 20 :GOSUB 2500..
020800: 32 30 33 30 20 49 46 20 72 6F 77 3C 3E 72 31 20 2030 IF row<>r1
020810: 4F 52 20 63 6F 6C 3C 3E 63 31 20 54 48 45 4E 20 OR col<>c1 THEN
020820: 47 4F 53 55 42 20 33 30 30 30 20 45 4C 53 45 20 GOSUB 3000 ELSE
020830: 32 30 32 30 0D 0A 20 20 20 32 30 34 30 20 49 46 2020.. 2040 IF
020840: 20 63 61 72 64 3D 63 61 72 64 73 65 6C 20 54 48 card=cardsel TH
020850: 45 4E 20 32 31 30 30 20 45 4C 53 45 20 32 32 30 EN 2100 ELSE 220
020860: 30 0D 0A 20 20 20 32 31 30 30 20 4C 4F 43 41 54 0.. 2100 LOCAT
020870: 45 23 31 2C 31 2C 31 3A 50 52 49 4E 54 23 31 2C E#1,1,1:PRINT#1,
020880: 22 54 68 65 79 20 6D 61 74 63 68 21 20 57 65 6C "They match! Wel
020890: 6C 20 64 6F 6E 65 20 22 3B 70 6C 24 28 74 75 72 l done ";pl$(tur
0208A0: 6E 29 3B 22 2E 22 3B 43 48 52 24 28 32 30 29 3A n);".";CHR$(20):
0208B0: 0D 0A 20 20 20 20 20 20 20 20 46 4F 52 20 64 65 .. FOR de
0208C0: 6C 61 79 3D 31 20 54 4F 20 35 30 30 3A 4E 45 58 lay=1 TO 500:NEX
0208D0: 54 0D 0A 20 20 20 32 31 31 30 20 47 4F 53 55 42 T.. 2110 GOSUB
0208E0: 20 34 30 30 30 3A 63 28 72 6F 77 2C 63 6F 6C 29 4000:c(row,col)
0208F0: 3D 30 3A 72 6F 77 3D 72 31 3A 63 6F 6C 3D 63 31 =0:row=r1:col=c1
020900: 00 00 F9 01 0D 00 00 F8 EF FF 76 28 0E 2C FF 77 ..........v(.,.w
020910: 28 1A 78 02 2C 0D 00 00 F8 F4 11 F6 28 28 FF 0A (.x.,.......((..
020920: 28 16 29 EE F5 0F 29 F5 28 FF 0A 28 0F 29 EE F5 (.)...).(..(.)..
020930: 0F 29 29 F6 28 12 F4 11 F6 28 FF 0A 28 19 15 29 .)).(....(..(..)
020940: EF F5 0F 29 29 29 29 01 0D 00 00 F9 EF FF 76 28 ...)))).......v(
020950: 19 0F 2C FF 77 28 1A 8F 01 2C 0D 00 00 F9 F4 11 ..,.w(...,......
020960: F6 28 28 FF 0A 28 10 29 EE F5 0F 29 F5 28 FF 0A .((..(.)...).(..
020970: 28 0E 29 EE F5 0F 29 29 F6 28 28 FF 0A 28 19 15 (.)...)).((..(..
020980: 29 EF F5 0F 29 F4 10 29 29 29 01 AE 20 0D 00 00 )...)..))).. ...
020990: E2 2C 0D 00 00 E3 01 BF 20 FF 03 28 19 D7 29 3B .,...... ..(..);
0209A0: 01 AE 20 0D 00 00 F8 2C 0D 00 00 F9 01 BF 20 FF .. ....,...... .
0209B0: 03 28 19 D7 29 3B 01 D5 00 93 00 32 00 9F 20 1E .(..);.....2.. .
0209C0: 50 00 01 AE 20 0D 00 00 F8 2C 0D 00 00 F9 01 BF P... ....,......
0209D0: 20 FF 03 28 19 D7 29 3B 01 0D 00 00 F0 EF 28 0D ..(..);......(.
0209E0: 00 00 F8 F9 19 A0 29 F6 19 14 F4 0F 01 0D 00 00 ......).........
0209F0: F1 EF 28 1A 90 01 F5 0D 00 00 F9 29 F9 19 10 F4 ..(........)....
020A00: 0F 01 A9 20 0D 00 00 F0 2C 0D 00 00 F1 01 83 20 ... ....,......
020A10: 0D 00 00 E1 2C 40 03 00 00 E6 01 D5 01 D1 01 A1 ....,@..........
020A20: 20 AC 28 03 00 00 E6 2C 17 2C 0F 29 EF 22 2E 22 .(....,.,.)."."
020A30: 20 EB 20 AA 20 FF 42 F4 19 22 01 83 20 1C BA BB . . .B..".. ...
020A40: 01 AD 20 0F 01 CA 20 03 00 00 E6 00 75 00 3C 00 .. ... .....u.<.
020A50: 0D 00 00 F5 EF 19 10 01 D6 20 0D 00 00 F5 20 FA ......... .... .
020A60: 20 F5 19 10 01 A9 20 0F 2C 0D 00 00 F6 01 BF 22 ..... .,......"
020A70: 55 73 65 72 3A 20 22 F4 FF 03 28 19 14 29 3B 01 User: "...(..);.
020A80: A6 20 A3 20 03 00 00 F5 01 0D 00 00 F5 EF FF 1D . £ ............
020A90: 28 03 00 00 F5 29 01 D5 01 A1 20 03 00 00 F5 F2 (....).... .....
020AA0: 22 22 20 EB 20 7C 00 55 53 45 D2 2C 0D 00 00 F5 "" . |.USE.,....
020AB0: 01 8A 01 84 01 0D 00 00 F6 EF FF 7F 28 23 0E 29 ............(#.)
020AC0: 00 06 00 46 00 D5 00 2B 00 50 00 D6 20 FF 0A 28 ...F...+.P.. ..(
020AD0: 19 2F 29 F4 FF 0A 28 19 12 29 F4 FF 0A 28 17 29 ./)...(..)...(.)
020AE0: EE F5 11 01 D5 01 D6 20 FF 43 F2 22 22 01 D5 01 ....... .C.""...
020AF0: C9 00 00 00 1A 2C 44 44 2C 36 36 2C 31 2C 34 36 .....,DD,66,1,46
020B00: 3A 63 28 72 6F 77 2C 63 6F 6C 29 3D 30 3A 47 4F :c(row,col)=0:GO
020B10: 53 55 42 20 34 30 30 30 0D 0A 20 20 20 32 31 32 SUB 4000.. 212
020B20: 30 20 70 77 28 74 75 72 6E 29 3D 70 77 28 74 75 0 pw(turn)=pw(tu
020B30: 72 6E 29 2B 31 3A 4C 4F 43 41 54 45 20 32 37 2C rn)+1:LOCATE 27,
020B40: 74 75 72 6E 2A 33 2D 31 3A 50 41 50 45 52 20 33 turn*3-1:PAPER 3
020B50: 3A 50 45 4E 20 32 3A 0D 0A 20 20 20 20 20 20 20 :PEN 2:..
020B60: 20 50 52 49 4E 54 20 70 77 28 74 75 72 6E 29 3A PRINT pw(turn):
020B70: 52 45 54 55 52 4E 0D 0A 20 20 20 32 32 30 30 20 RETURN.. 2200
020B80: 4C 4F 43 41 54 45 23 31 2C 31 2C 31 3A 50 52 49 LOCATE#1,1,1:PRI
020B90: 4E 54 23 31 2C 22 54 68 65 79 20 64 6F 6E 27 74 NT#1,"They don't
020BA0: 20 6D 61 74 63 68 21 22 3B 43 48 52 24 28 32 30 match!";CHR$(20
020BB0: 29 3A 0D 0A 20 20 20 20 20 20 20 20 46 4F 52 20 ):.. FOR
020BC0: 64 65 6C 61 79 3D 31 20 54 4F 20 35 30 30 30 3A delay=1 TO 5000:
020BD0: 4E 45 58 54 0D 0A 20 20 20 32 32 31 30 20 47 4F NEXT.. 2210 GO
020BE0: 53 55 42 20 33 35 30 30 3A 72 6F 77 3D 72 31 3A SUB 3500:row=r1:
020BF0: 63 6F 6C 3D 63 31 3A 47 4F 53 55 42 20 33 35 30 col=c1:GOSUB 350
020C00: 30 3A 74 75 72 6E 3D 28 74 75 72 6E 20 4D 4F 44 0:turn=(turn MOD
020C10: 20 6E 70 6C 29 2B 31 3A 52 45 54 55 52 4E 0D 0A npl)+1:RETURN..
020C20: 20 20 20 32 35 30 30 20 4C 4F 43 41 54 45 23 31 2500 LOCATE#1
020C30: 2C 31 2C 31 3A 50 52 49 4E 54 23 31 2C 22 43 68 ,1,1:PRINT#1,"Ch
020C40: 6F 6F 73 65 20 61 22 3B 6D 75 64 24 3B 22 20 63 oose a";mud$;" c
020C50: 61 72 64 2C 20 22 3B 70 6C 24 28 74 75 72 6E 29 ard, ";pl$(turn)
020C60: 3B 22 2E 22 3B 43 48 52 24 28 32 30 29 0D 0A 20 ;".";CHR$(20)..
020C70: 20 20 32 35 31 30 20 6B 70 24 3D 22 22 3A 57 48 2510 kp$="":WH
020C80: 49 4C 45 20 28 6B 70 24 3C 43 48 52 24 28 32 34 ILE (kp$<CHR$(24
020C90: 30 29 20 4F 52 20 6B 70 24 3E 43 48 52 24 28 32 0) OR kp$>CHR$(2
020CA0: 34 33 29 29 20 41 4E 44 20 6B 70 24 3C 3E 43 48 43)) AND kp$<>CH
020CB0: 52 24 28 31 33 29 3A 0D 0A 20 20 20 20 20 20 20 R$(13):..
020CC0: 20 6B 70 24 3D 55 50 50 45 52 24 28 49 4E 4B 45 kp$=UPPER$(INKE
020CD0: 59 24 29 3A 57 45 4E 44 0D 0A 20 20 20 32 35 32 Y$):WEND.. 252
020CE0: 30 20 49 46 20 6B 70 24 3D 43 48 52 24 28 31 33 0 IF kp$=CHR$(13
020CF0: 29 20 41 4E 44 20 63 28 72 6F 77 2C 63 6F 6C 29 ) AND c(row,col)
020D00: 32 2E 30 20 28 53 69 6D 70 6C 65 20 76 65 72 73 2.0 (Simple vers
020D10: 69 6F 6E 29 2C 20 44 65 63 20 31 39 39 37 20 62 ion), Dec 1997 b
020D20: 79 20 48 69 6C 61 72 79 20 50 68 69 6C 6C 69 70 y Hilary Phillip
020D30: 73 0D 0A 20 20 20 31 30 20 53 59 4D 42 4F 4C 20 s.. 10 SYMBOL
020D40: 41 46 54 45 52 20 32 35 35 3A 53 59 4D 42 4F 4C AFTER 255:SYMBOL
020D50: 20 32 35 35 2C 37 36 2C 32 31 30 2C 38 32 2C 38 255,76,210,82,8
020D60: 32 2C 38 32 2C 38 32 2C 37 36 2C 30 0D 0A 20 20 2,82,82,76,0..
020D70: 20 33 30 20 44 49 4D 20 70 61 63 6B 28 35 32 29 30 DIM pack(52)
020D80: 3A 44 49 4D 20 63 28 37 2C 36 29 3A 44 49 4D 20 :DIM c(7,6):DIM
020D90: 70 6C 24 28 36 29 3A 44 49 4D 20 70 77 28 36 29 pl$(6):DIM pw(6)
020DA0: 0D 0A 20 20 20 34 30 20 63 61 72 64 24 3D 22 41 .. 40 card$="A
020DB0: 32 33 34 35 36 37 38 39 22 2B 43 48 52 24 28 32 23456789"+CHR$(2
020DC0: 35 35 29 2B 22 4A 51 4B 22 0D 0A 20 20 20 35 30 55)+"JQK".. 50
020DD0: 20 46 4F 52 20 6E 3D 31 20 54 4F 20 35 32 3A 70 FOR n=1 TO 52:p
020DE0: 61 63 6B 28 6E 29 3D 6E 2B 28 6E 2D 31 29 5C 31 ack(n)=n+(n-1)\1
020DF0: 33 3A 4E 45 58 54 0D 0A 20 20 20 37 30 20 49 4E 3:NEXT.. 70 IN
020E00: 4B 20 30 2C 30 3A 49 4E 4B 20 31 2C 36 3A 49 4E K 0,0:INK 1,6:IN
020E10: 4B 20 32 2C 32 36 3A 49 4E 4B 20 33 2C 39 3A 4D K 2,26:INK 3,9:M
020E20: 4F 44 45 20 31 3A 50 41 50 45 52 20 33 3A 43 4C ODE 1:PAPER 3:CL
020E30: 53 0D 0A 20 20 20 38 30 20 57 49 4E 44 4F 57 23 S.. 80 WINDOW#
020E40: 31 2C 31 2C 34 30 2C 32 34 2C 32 35 3A 50 41 50 1,1,40,24,25:PAP
020E50: 45 52 23 31 2C 33 3A 50 45 4E 23 31 2C 32 3A 43 ER#1,3:PEN#1,2:C
020E60: 4C 53 23 31 0D 0A 20 20 20 31 30 30 20 47 4F 53 LS#1.. 100 GOS
020E70: 55 42 20 31 30 30 30 0D 0A 20 20 20 31 31 30 20 UB 1000.. 110
020E80: 4C 4F 43 41 54 45 23 31 2C 31 2C 31 3A 50 52 49 LOCATE#1,1,1:PRI
020E90: 4E 54 23 31 2C 22 45 6E 74 65 72 20 6E 75 6D 62 NT#1,"Enter numb
020EA0: 65 72 20 6F 66 20 70 6C 61 79 65 72 73 20 28 31 er of players (1
020EB0: 2D 36 29 22 3B 3A 6E 70 6C 3D 30 3A 0D 0A 20 20 -6)";:npl=0:..
020EC0: 20 20 20 20 20 57 48 49 4C 45 20 6E 70 6C 3C 31 WHILE npl<1
020ED0: 20 4F 52 20 6E 70 6C 3E 36 3A 6E 70 6C 3D 56 41 OR npl>6:npl=VA
020EE0: 4C 28 49 4E 4B 45 59 24 29 3A 57 45 4E 44 3A 50 L(INKEY$):WEND:P
020EF0: 52 49 4E 54 23 31 2C 6E 70 6C 0D 0A 20 20 20 31 RINT#1,npl.. 1
020F00: 3E 30 20 54 48 45 4E 20 52 45 54 55 52 4E 0D 0A >0 THEN RETURN..
020F10: 20 20 20 32 35 33 30 20 47 4F 53 55 42 20 34 35 2530 GOSUB 45
020F20: 32 30 3A 49 46 20 6B 70 24 3D 43 48 52 24 28 32 20:IF kp$=CHR$(2
020F30: 34 30 29 20 54 48 45 4E 20 72 6F 77 3D 28 72 6F 40) THEN row=(ro
020F40: 77 2D 31 2B 38 29 20 4D 4F 44 20 38 0D 0A 20 20 w-1+8) MOD 8..
020F50: 20 32 35 34 30 20 49 46 20 6B 70 24 3D 43 48 52 2540 IF kp$=CHR
020F60: 24 28 32 34 31 29 20 54 48 45 4E 20 72 6F 77 3D $(241) THEN row=
020F70: 28 72 6F 77 2B 31 29 20 4D 4F 44 20 38 0D 0A 20 (row+1) MOD 8..
020F80: 20 20 32 35 35 30 20 49 46 20 6B 70 24 3D 43 48 2550 IF kp$=CH
020F90: 52 24 28 32 34 32 29 20 54 48 45 4E 20 63 6F 6C R$(242) THEN col
020FA0: 3D 28 63 6F 6C 2D 31 2B 37 29 20 4D 4F 44 20 37 =(col-1+7) MOD 7
020FB0: 0D 0A 20 20 20 32 35 36 30 20 49 46 20 6B 70 24 .. 2560 IF kp$
020FC0: 3D 43 48 52 24 28 32 34 33 29 20 54 48 45 4E 20 =CHR$(243) THEN
020FD0: 63 6F 6C 3D 28 63 6F 6C 2B 31 29 20 4D 4F 44 20 col=(col+1) MOD
020FE0: 37 0D 0A 20 20 20 32 35 37 30 20 47 4F 53 55 42 7.. 2570 GOSUB
020FF0: 20 34 35 30 30 3A 47 4F 54 4F 20 32 35 31 30 0D 4500:GOTO 2510.
021000: 0A 20 20 20 33 30 30 30 20 73 75 69 74 3D 63 28 . 3000 suit=c(
021010: 72 6F 77 2C 63 6F 6C 29 5C 31 34 3A 63 61 72 64 row,col)\14:card
021020: 3D 63 28 72 6F 77 2C 63 6F 6C 29 20 4D 4F 44 20 =c(row,col) MOD
021030: 31 34 3A 70 63 6F 6C 3D 4D 49 4E 28 31 2C 73 75 14:pcol=MIN(1,su
021040: 69 74 20 4D 4F 44 20 33 29 0D 0A 20 20 20 33 30 it MOD 3).. 30
021050: 31 30 20 4C 4F 43 41 54 45 20 63 6F 6C 2A 33 2B 10 LOCATE col*3+
021060: 32 2C 72 6F 77 2A 32 2B 32 3A 50 41 50 45 52 20 2,row*2+2:PAPER
021070: 32 3A 50 45 4E 20 70 63 6F 6C 3A 50 52 49 4E 54 2:PEN pcol:PRINT
021080: 20 4D 49 44 24 28 63 61 72 64 24 2C 63 61 72 64 MID$(card$,card
021090: 2C 31 29 3B 0D 0A 20 20 20 20 20 20 20 20 43 48 ,1);.. CH
0210A0: 52 24 28 32 32 36 2B 73 75 69 74 29 3A 52 45 54 R$(226+suit):RET
0210B0: 55 52 4E 0D 0A 20 20 20 33 35 30 30 20 4C 4F 43 URN.. 3500 LOC
0210C0: 41 54 45 20 63 6F 6C 2A 33 2B 32 2C 72 6F 77 2A ATE col*3+2,row*
0210D0: 32 2B 32 3A 50 41 50 45 52 20 30 3A 50 45 4E 20 2+2:PAPER 0:PEN
0210E0: 31 3A 50 52 49 4E 54 20 43 48 52 24 28 32 32 30 1:PRINT CHR$(220
0210F0: 29 43 48 52 24 28 32 32 32 29 3A 52 45 54 55 52 )CHR$(222):RETUR
021100: 32 30 20 46 4F 52 20 6E 3D 31 20 54 4F 20 6E 70 20 FOR n=1 TO np
021110: 6C 3A 4C 4F 43 41 54 45 23 31 2C 31 2C 31 3A 50 l:LOCATE#1,1,1:P
021120: 52 49 4E 54 23 31 2C 22 50 6C 61 79 65 72 22 3B RINT#1,"Player";
021130: 6E 3B 22 65 6E 74 65 72 20 79 6F 75 72 20 6E 61 n;"enter your na
021140: 6D 65 3A 22 3B 0D 0A 20 20 20 20 20 20 20 43 48 me:";.. CH
021150: 52 24 28 32 30 29 3A 4C 49 4E 45 20 49 4E 50 55 R$(20):LINE INPU
021160: 54 23 31 2C 61 24 3A 70 6C 24 28 6E 29 3D 4C 45 T#1,a$:pl$(n)=LE
021170: 46 54 24 28 61 24 2C 31 36 29 0D 0A 20 20 20 31 FT$(a$,16).. 1
021180: 33 30 20 4C 4F 43 41 54 45 20 32 35 2C 6E 2A 33 30 LOCATE 25,n*3
021190: 2D 32 3A 50 41 50 45 52 20 33 3A 50 45 4E 20 32 -2:PAPER 3:PEN 2
0211A0: 3A 50 52 49 4E 54 20 70 6C 24 28 6E 29 3A 4E 45 :PRINT pl$(n):NE
0211B0: 58 54 0D 0A 20 20 20 31 34 30 20 46 4F 52 20 6E XT.. 140 FOR n
0211C0: 3D 31 20 54 4F 20 36 3A 70 77 28 6E 29 3D 30 3A =1 TO 6:pw(n)=0:
0211D0: 4E 45 58 54 3A 74 75 72 6E 3D 31 0D 0A 20 20 20 NEXT:turn=1..
0211E0: 31 35 30 20 57 48 49 4C 45 20 70 77 28 31 29 2B 150 WHILE pw(1)+
0211F0: 70 77 28 32 29 2B 70 77 28 33 29 2B 70 77 28 34 pw(2)+pw(3)+pw(4
021200: 29 2B 70 77 28 35 29 2B 70 77 28 36 29 3C 32 36 )+pw(5)+pw(6)<26
021210: 3A 47 4F 53 55 42 20 32 30 30 30 3A 57 45 4E 44 :GOSUB 2000:WEND
021220: 0D 0A 20 20 20 32 30 30 20 77 69 6E 24 3D 22 22 .. 200 win$=""
021230: 3A 46 4F 52 20 6E 3D 31 20 54 4F 20 6E 70 6C 3A :FOR n=1 TO npl:
021240: 49 46 20 70 77 28 6E 29 3D 4D 41 58 28 70 77 28 IF pw(n)=MAX(pw(
021250: 31 29 2C 70 77 28 32 29 2C 70 77 28 33 29 2C 70 1),pw(2),pw(3),p
021260: 77 28 34 29 2C 70 77 28 35 29 2C 70 77 28 36 29 w(4),pw(5),pw(6)
021270: 29 0D 0A 20 20 20 20 20 20 20 54 48 45 4E 20 77 ).. THEN w
021280: 69 6E 24 3D 77 69 6E 24 2B 43 48 52 24 28 6E 29 in$=win$+CHR$(n)
021290: 0D 0A 20 20 20 32 31 30 20 4E 45 58 54 3A 4C 4F .. 210 NEXT:LO
0212A0: 43 41 54 45 20 31 2C 39 3A 50 41 50 45 52 20 33 CATE 1,9:PAPER 3
0212B0: 3A 50 45 4E 20 32 3A 50 52 49 4E 54 22 54 68 65 :PEN 2:PRINT"The
0212C0: 20 77 69 6E 6E 65 72 22 3B 0D 0A 20 20 20 32 32 winner";.. 22
0212D0: 30 20 49 46 20 4C 45 4E 28 77 69 6E 24 29 3D 31 0 IF LEN(win$)=1
0212E0: 20 54 48 45 4E 20 50 52 49 4E 54 22 20 69 73 20 THEN PRINT" is
0212F0: 22 3B 70 6C 24 28 41 53 43 28 77 69 6E 24 29 29 ";pl$(ASC(win$))
021300: 4E 0D 0A 20 20 20 34 30 30 30 20 4C 4F 43 41 54 N.. 4000 LOCAT
021310: 45 20 63 6F 6C 2A 33 2B 32 2C 72 6F 77 2A 32 2B E col*3+2,row*2+
021320: 32 3A 50 41 50 45 52 20 33 3A 50 52 49 4E 54 20 2:PAPER 3:PRINT
021330: 22 20 20 22 3A 52 45 54 55 52 4E 0D 0A 20 20 20 " ":RETURN..
021340: 34 35 30 30 20 49 46 20 72 6F 77 3C 3E 72 31 20 4500 IF row<>r1
021350: 4F 52 20 63 6F 6C 3C 3E 63 31 20 54 48 45 4E 20 OR col<>c1 THEN
021360: 4C 4F 43 41 54 45 20 63 6F 6C 2A 33 2B 32 2C 72 LOCATE col*3+2,r
021370: 6F 77 2A 32 2B 32 3A 50 45 4E 20 32 3A 0D 0A 20 ow*2+2:PEN 2:..
021380: 20 20 20 20 20 20 20 50 52 49 4E 54 20 43 48 52 PRINT CHR
021390: 24 28 32 32 29 43 48 52 24 28 31 29 43 48 52 24 $(22)CHR$(1)CHR$
0213A0: 28 31 39 37 29 43 48 52 24 28 31 39 39 29 43 48 (197)CHR$(199)CH
0213B0: 52 24 28 32 32 29 43 48 52 24 28 30 29 0D 0A 20 R$(22)CHR$(0)..
0213C0: 20 20 34 35 31 30 20 52 45 54 55 52 4E 0D 0A 20 4510 RETURN..
0213D0: 20 20 34 35 32 30 20 49 46 20 72 6F 77 3C 3E 72 4520 IF row<>r
0213E0: 31 20 4F 52 20 63 6F 6C 3C 3E 63 31 20 54 48 45 1 OR col<>c1 THE
0213F0: 4E 20 49 46 20 63 28 72 6F 77 2C 63 6F 6C 29 3E N IF c(row,col)>
021400: 30 20 54 48 45 4E 20 33 35 30 30 20 45 4C 53 45 0 THEN 3500 ELSE
021410: 20 34 30 30 30 0D 0A 20 20 20 34 35 33 30 20 52 4000.. 4530 R
021420: 45 54 55 52 4E 0D 0A 1A 69 6C 6C 69 70 73 0D 0A ETURN...illips..
021430: 0D 0A 20 20 20 59 65 73 2C 20 74 68 69 73 20 6D .. Yes, this m
021440: 6F 6E 74 68 20 74 68 65 20 70 72 6F 6F 66 72 65 onth the proofre
021450: 61 64 65 72 20 67 65 74 73 20 61 20 20 67 6F 20 ader gets a go
021460: 20 61 74 20 77 72 69 74 69 6E 67 20 61 6E 20 61 at writing an a
021470: 72 74 69 63 6C 65 2C 20 74 6F 20 67 69 76 65 0D rticle, to give.
021480: 03 00 06 00 EC 03 D5 00 35 00 ED 03 0D 00 00 6D ........5......m
021490: E4 EF 28 FF 0A 28 0D 00 00 75 F0 29 EE F5 0F 29 ..(..(...u.)...)
0214A0: F5 28 FF 0A 28 0D 00 00 64 6F F7 29 EE F5 0F 29 .(..(...do.)...)
0214B0: 01 0D 00 00 6D FA EF 0D 00 00 6D E4 00 3C 00 EE ....m.....m..<..
0214C0: 03 0D 00 00 6B F0 EF F5 28 FF 0A 28 0D 00 00 6C ....k...(..(...l
0214D0: E5 29 EE F5 0F 29 F5 10 F6 28 FF 0A 28 0D 00 00 .)...)...(..(...
0214E0: 72 E9 29 EE F5 0F 29 F5 12 F6 28 FF 0A 28 0D 00 r.)...)...(..(..
0214F0: 00 66 E9 29 EE F5 0F 29 00 06 00 EF 03 D5 00 0E .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 C1 02 00 00 00 02 ......N.........
021520: 1C 00 C6 02 00 00 00 02 1C 00 C2 02 00 00 00 02 ................
021530: 1C 00 C7 02 00 00 00 02 1C 00 C3 02 00 00 00 02 ................
021540: 1C 00 C8 02 00 00 00 02 1C 00 C4 02 00 00 00 02 ................
021550: 1C 00 C9 02 00 00 00 02 1C 00 C5 02 00 00 00 02 ................
021560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021590: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0215F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021600: 39 39 20 52 45 4D 20 46 69 67 75 72 65 20 31 2E 99 REM Figure 1.
021610: 36 31 0D 0A 31 30 30 20 52 45 4D 20 41 6E 20 69 61..100 REM An i
021620: 6E 65 66 66 69 63 69 65 6E 74 20 73 75 62 72 6F nefficient subro
021630: 75 74 69 6E 65 20 74 6F 20 72 65 70 6C 61 63 65 utine to replace
021640: 20 6C 69 6E 65 20 34 30 2E 0D 0A 31 31 30 20 57 line 40...110 W
021650: 48 49 4C 45 20 49 4E 4B 45 59 28 34 37 29 3D 2D HILE INKEY(47)=-
021660: 31 20 41 4E 44 20 49 4E 4B 45 59 28 31 38 29 3D 1 AND INKEY(18)=
021670: 2D 31 20 41 4E 44 20 49 4E 4B 45 59 28 39 29 3D -1 AND INKEY(9)=
021680: 2D 31 0D 0A 31 32 30 20 6F 6C 64 78 3D 78 3A 6F -1..120 oldx=x:o
021690: 6C 64 79 3D 79 0D 0A 31 33 30 20 61 64 64 78 3D ldy=y..130 addx=
0216A0: 30 3A 61 64 64 79 3D 30 0D 0A 31 33 35 20 52 45 0:addy=0..135 RE
0216B0: 4D 20 43 68 65 63 6B 20 6B 65 79 73 0D 0A 31 34 M Check keys..14
0216C0: 30 20 49 46 20 49 4E 4B 45 59 28 38 29 3E 2D 31 0 IF INKEY(8)>-1
0216D0: 20 54 48 45 4E 20 61 64 64 78 3D 2D 31 0D 0A 31 THEN addx=-1..1
0216E0: 35 30 20 49 46 20 49 4E 4B 45 59 28 31 29 3E 2D 50 IF INKEY(1)>-
0216F0: 31 20 54 48 45 4E 20 61 64 64 78 3D 61 64 64 78 1 THEN addx=addx
021700: 2B 31 0D 0A 31 36 30 20 49 46 20 49 4E 4B 45 59 +1..160 IF INKEY
021710: 28 32 31 29 3E 2D 31 20 54 48 45 4E 20 61 64 64 (21)>-1 THEN add
021720: 78 3D 61 64 64 78 2A 34 0D 0A 31 37 30 20 61 64 x=addx*4..170 ad
021730: 64 78 3D 33 2A 61 64 64 78 0D 0A 31 38 30 20 49 dx=3*addx..180 I
021740: 46 20 49 4E 4B 45 59 28 32 29 3E 2D 31 20 54 48 F INKEY(2)>-1 TH
021750: 45 4E 20 61 64 64 79 3D 2D 31 0D 0A 31 39 30 20 EN addy=-1..190
021760: 49 46 20 49 4E 4B 45 59 28 30 29 3E 2D 31 20 54 IF INKEY(0)>-1 T
021770: 48 45 4E 20 61 64 64 79 3D 61 64 64 79 2B 31 0D HEN addy=addy+1.
021780: 0A 32 30 30 20 49 46 20 49 4E 4B 45 59 28 32 31 .200 IF INKEY(21
021790: 29 3E 2D 31 20 54 48 45 4E 20 61 64 64 79 3D 61 )>-1 THEN addy=a
0217A0: 64 64 79 2A 32 0D 0A 32 31 30 20 61 64 64 79 3D ddy*2..210 addy=
0217B0: 33 2A 61 64 64 79 0D 0A 32 32 30 20 78 3D 78 2B 3*addy..220 x=x+
0217C0: 61 64 64 78 3A 79 3D 79 2B 61 64 64 79 0D 0A 32 addx:y=y+addy..2
0217D0: 32 35 20 52 45 4D 20 43 68 65 63 6B 20 78 20 26 25 REM Check x &
0217E0: 20 79 20 61 72 65 20 6F 6E 20 73 63 72 65 65 6E y are on screen
0217F0: 0D 0A 32 33 30 20 49 46 20 78 3E 36 33 32 20 54 ..230 IF x>632 T
021800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0218A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0218B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0218C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0218D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0218E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0218F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0219A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0219B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0219C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0219D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0219E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0219F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
021A00: 48 45 4E 20 78 3D 36 33 32 0D 0A 32 34 30 20 49 HEN x=632..240 I
021A10: 46 20 78 3C 30 20 54 48 45 4E 20 78 3D 30 0D 0A F x<0 THEN x=0..
021A20: 32 35 30 20 49 46 20 79 3E 33 39 39 20 54 48 45 250 IF y>399 THE
021A30: 4E 20 79 3D 33 39 39 0D 0A 32 36 30 20 49 46 20 N y=399..260 IF
021A40: 79 3C 31 35 20 54 48 45 4E 20 79 3D 31 35 0D 0A y<15 THEN y=15..
021A50: 32 36 35 20 52 45 4D 20 52 65 6D 6F 76 65 20 70 265 REM Remove p
021A60: 6F 69 6E 74 65 72 20 61 6E 64 20 72 65 64 69 73 ointer and redis
021A70: 70 6C 61 79 0D 0A 32 37 30 20 4D 4F 56 45 20 6F play..270 MOVE o
021A80: 6C 64 78 2C 6F 6C 64 79 3A 50 52 49 4E 54 20 43 ldx,oldy:PRINT C
021A90: 48 52 24 28 32 31 35 29 3B 0D 0A 32 38 30 20 4D HR$(215);..280 M
021AA0: 4F 56 45 20 78 2C 79 3A 50 52 49 4E 54 20 43 48 OVE x,y:PRINT CH
021AB0: 52 24 28 32 31 35 29 3B 0D 0A 32 39 30 20 57 45 R$(215);..290 WE
021AC0: 4E 44 3A 52 45 54 55 52 4E 0D 0A 1A 6F 6E 74 68 ND:RETURN...onth
021AD0: 20 20 77 65 20 20 6D 6F 76 65 20 20 66 72 6F 6D we move from
021AE0: 20 20 74 68 65 20 20 73 74 61 72 74 65 72 20 20 the starter
021AF0: 74 6F 20 20 61 20 20 6C 69 67 68 74 6C 79 20 67 to a lightly g
021B00: EF 0F 20 EC 20 0D 00 00 6D 62 E8 F7 10 00 31 00 .. . ...mb....1.
021B10: F5 03 95 20 0D 00 00 6D 62 EC 2C 0E 2C 0D 00 00 ... ...mb.,.,...
021B20: 6D 63 6F EC 01 AF 20 F5 0D 00 00 6D 62 EC 2C F5 mco... ....mb.,.
021B30: 10 F5 28 0D 00 00 6D E4 EF F5 0F 29 F6 12 00 1C ..(...m....)....
021B40: 00 F6 03 9E 20 0D 00 00 64 65 6C 61 F9 EF 0E 20 .... ...dela...
021B50: EC 20 0D 00 00 6D 64 E5 01 B0 00 06 00 F7 03 B0 . ...md.........
021B60: 00 14 00 F8 03 BF 20 FF 03 28 19 17 29 F4 FF 03 ...... ..(..)...
021B70: 28 0E 29 3B 00 06 00 F9 03 C9 00 00 00 1A 35 30 (.);..........50
021B80: 0D 00 00 6D F0 29 01 C9 00 1C 00 E8 03 0D 00 00 ...m.)..........
021B90: 6B F0 EF 0E 01 0D 00 00 6D E4 EF 0F 01 0D 00 00 k.......m.......
021BA0: 6D FA EF 0E 00 18 00 E9 03 D6 20 28 0D 00 00 6B m......... (...k
021BB0: F0 20 FA 20 0D 00 00 6B E6 29 EF 0E 00 22 00 EA . . ...k.)..."..
021BC0: 03 D6 20 28 10 F8 0D 00 00 6D F0 20 FA 20 0D 00 .. (.....m. . ..
021BD0: 00 6D E6 29 EE 0E 20 FC 20 0D 00 00 6D FA 00 3C .m.).. . ...m..<
021BE0: 00 EB 03 0D 00 00 6D FA EF 0E 01 9F 20 1E F2 03 ......m..... ...
021BF0: 01 0D 00 00 6D F0 EF 28 0D 00 00 6D F0 F4 0D 00 ....m..(...m....
021C00: 31 30 30 20 4D 45 4D 4F 52 59 20 26 38 46 46 46 100 MEMORY &8FFF
021C10: 3A 61 3D 26 39 30 30 30 3A 46 4F 52 20 78 3D 30 :a=&9000:FOR x=0
021C20: 20 54 4F 20 31 33 3A 52 45 41 44 20 61 24 3A 50 TO 13:READ a$:P
021C30: 4F 4B 45 20 61 2B 78 2C 56 41 4C 28 22 26 22 2B OKE a+x,VAL("&"+
021C40: 61 24 29 3A 4E 45 58 54 0D 0A 31 31 30 20 4D 4F a$):NEXT..110 MO
021C50: 44 45 20 32 3A 50 52 49 4E 54 22 42 75 6E 6E 79 DE 2:PRINT"Bunny
021C60: 6D 65 6E 22 0D 0A 31 32 30 20 63 25 3D 30 3A 4C men"..120 c%=0:L
021C70: 4F 43 41 54 45 20 31 2C 31 3A 43 41 4C 4C 20 26 OCATE 1,1:CALL &
021C80: 39 30 30 30 2C 40 63 25 0D 0A 31 33 30 20 50 52 9000,@c%..130 PR
021C90: 49 4E 54 3A 50 52 49 4E 54 22 54 68 65 20 6C 65 INT:PRINT"The le
021CA0: 74 74 65 72 20 61 74 20 74 68 65 20 74 6F 70 20 tter at the top
021CB0: 6C 65 66 74 20 6F 66 20 74 68 65 20 73 63 72 65 left of the scre
021CC0: 65 6E 20 69 73 20 61 20 22 3B 43 48 52 24 28 63 en is a ";CHR$(c
021CD0: 25 29 0D 0A 31 39 30 20 44 41 54 41 20 44 44 2C %)..190 DATA DD,
021CE0: 36 36 2C 30 31 2C 44 44 2C 36 45 2C 30 30 2C 43 66,01,DD,6E,00,C
021CF0: 44 2C 36 30 2C 42 42 2C 37 37 2C 32 33 2C 33 36 D,60,BB,77,23,36
021D00: 2C 30 30 2C 43 39 0D 0A 1A 20 24 24 24 FF 00 FF ,00,C9... $$$...
021D10: 00 00 0A 00 00 72 01 00 10 29 00 00 00 00 00 00 .....r...)......
021D20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021D30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021D40: 10 29 00 86 03 54 0D 0A 0D 0A 46 69 67 75 72 65 .)...T....Figure
021D50: 20 32 2E 37 31 1A 00 0A 00 00 73 01 00 1E 00 00 2.71.....s.....
021D60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021D70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
021D80: 61 64 65 72 20 66 6F 72 20 4D 49 44 49 20 7C 53 ader for MIDI |S
021D90: 45 4E 44 20 52 53 58 20 28 73 65 65 20 61 72 74 END RSX (see art
021DA0: 69 63 6C 65 20 31 31 29 0D 0A 54 55 4E 45 09 2E icle 11)..TUNE..
021DB0: 42 41 53 09 70 72 6F 67 72 61 6D 20 74 6F 20 70 BAS.program to p
021DC0: 6C 61 79 20 61 20 74 75 6E 65 20 66 72 6F 6D 20 lay a tune from
021DD0: 61 72 74 69 63 6C 65 20 31 32 0D 0A 0D 0A 2D 2D article 12....--
021DE0: 2D 2D 0D 0A 2A 20 53 65 65 20 22 42 6C 61 73 74 --..* See "Blast
021DF0: 20 66 72 6F 6D 20 74 68 65 20 50 61 73 74 22 2C from the Past",
021E00: 32 39 39 20 52 45 4D 20 46 69 67 75 72 65 20 31 299 REM Figure 1
021E10: 2E 36 31 38 0D 0A 33 30 30 20 52 45 4D 20 41 20 .618..300 REM A
021E20: 62 65 74 74 65 72 20 73 75 62 72 6F 75 74 69 6E better subroutin
021E30: 65 20 74 6F 20 72 65 70 6C 61 63 65 20 6C 69 6E e to replace lin
021E40: 65 20 34 30 2E 0D 0A 33 31 30 20 57 48 49 4C 45 e 40...310 WHILE
021E50: 20 49 4E 4B 45 59 28 34 37 29 2B 49 4E 4B 45 59 INKEY(47)+INKEY
021E60: 28 31 38 29 2B 49 4E 4B 45 59 28 39 29 3D 2D 33 (18)+INKEY(9)=-3
021E70: 0D 0A 33 32 30 20 6F 6C 64 78 3D 78 3A 6F 6C 64 ..320 oldx=x:old
021E80: 79 3D 79 0D 0A 33 33 30 20 61 64 64 78 3D 30 3A y=y..330 addx=0:
021E90: 61 64 64 79 3D 30 0D 0A 33 33 35 20 52 45 4D 20 addy=0..335 REM
021EA0: 43 68 65 63 6B 20 6B 65 79 73 0D 0A 33 34 30 20 Check keys..340
021EB0: 61 64 64 78 3D 28 49 4E 4B 45 59 28 38 29 3E 2D addx=(INKEY(8)>-
021EC0: 31 29 0D 0A 33 35 30 20 61 64 64 78 3D 61 64 64 1)..350 addx=add
021ED0: 78 2D 28 49 4E 4B 45 59 28 31 29 3E 2D 31 29 0D x-(INKEY(1)>-1).
021EE0: 0A 33 36 30 20 61 64 64 78 3D 61 64 64 78 2A 28 .360 addx=addx*(
021EF0: 34 2B 33 2A 28 49 4E 4B 45 59 28 32 31 29 3D 2D 4+3*(INKEY(21)=-
021F00: 31 29 29 0D 0A 33 37 30 20 61 64 64 78 3D 33 2A 1))..370 addx=3*
021F10: 61 64 64 78 0D 0A 33 38 30 20 61 64 64 79 3D 28 addx..380 addy=(
021F20: 49 4E 4B 45 59 28 32 29 3E 2D 31 29 0D 0A 33 39 INKEY(2)>-1)..39
021F30: 30 20 61 64 64 79 3D 61 64 64 79 2D 28 49 4E 4B 0 addy=addy-(INK
021F40: 45 59 28 30 29 3E 2D 31 29 0D 0A 34 30 30 20 61 EY(0)>-1)..400 a
021F50: 64 64 79 3D 61 64 64 79 2A 28 28 49 4E 4B 45 59 ddy=addy*((INKEY
021F60: 28 32 31 29 3D 2D 31 29 2B 32 29 0D 0A 34 31 30 (21)=-1)+2)..410
021F70: 20 61 64 64 79 3D 33 2A 61 64 64 79 0D 0A 34 32 addy=3*addy..42
021F80: 30 20 78 3D 78 2B 61 64 64 78 3A 79 3D 79 2B 61 0 x=x+addx:y=y+a
021F90: 64 64 79 0D 0A 34 32 35 20 52 45 4D 20 43 68 65 ddy..425 REM Che
021FA0: 63 6B 20 78 20 26 20 79 20 61 72 65 20 6F 6E 20 ck x & y are on
021FB0: 73 63 72 65 65 6E 0D 0A 34 33 30 20 78 3D 4D 49 screen..430 x=MI
021FC0: 4E 28 36 33 32 2C 78 29 0D 0A 34 34 30 20 78 3D N(632,x)..440 x=
021FD0: 4D 41 58 28 30 2C 78 29 0D 0A 34 35 30 20 79 3D MAX(0,x)..450 y=
021FE0: 4D 49 4E 28 33 39 39 2C 79 29 0D 0A 34 36 30 20 MIN(399,y)..460
021FF0: 79 3D 4D 41 58 28 31 35 2C 79 29 0D 0A 34 36 35 y=MAX(15,y)..465
022000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0220A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0220B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0220C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0220D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0220E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0220F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0221A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0221B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0221C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0221D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0221E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0221F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022200: 20 52 45 4D 20 52 65 6D 6F 76 65 20 70 6F 69 6E REM Remove poin
022210: 74 65 72 20 61 6E 64 20 72 65 64 69 73 70 6C 61 ter and redispla
022220: 79 0D 0A 34 37 30 20 4D 4F 56 45 20 6F 6C 64 78 y..470 MOVE oldx
022230: 2C 6F 6C 64 79 3A 50 52 49 4E 54 20 43 48 52 24 ,oldy:PRINT CHR$
022240: 28 32 31 35 29 3B 0D 0A 34 38 30 20 4D 4F 56 45 (215);..480 MOVE
022250: 20 78 2C 79 3A 50 52 49 4E 54 20 43 48 52 24 28 x,y:PRINT CHR$(
022260: 32 31 35 29 3B 0D 0A 34 39 30 20 57 45 4E 44 3A 215);..490 WEND:
022270: 52 45 54 55 52 4E 0D 0A 1A 67 68 74 6C 79 20 67 RETURN...ghtly g
022280: 55 42 20 31 30 31 30 0D 0A 31 30 30 34 20 57 45 UB 1010..1004 WE
022290: 4E 44 0D 0A 31 30 30 35 20 6D 64 3D 28 49 4E 4B ND..1005 md=(INK
0222A0: 45 59 28 75 70 29 3E 2D 31 29 2D 28 49 4E 4B 45 EY(up)>-1)-(INKE
0222B0: 59 28 64 6F 77 29 3E 2D 31 29 3A 6D 7A 3D 6D 64 Y(dow)>-1):mz=md
0222C0: 0D 0A 31 30 30 36 20 6B 70 3D 2D 28 49 4E 4B 45 ..1006 kp=-(INKE
0222D0: 59 28 6C 65 29 3E 2D 31 29 2D 32 2A 28 49 4E 4B Y(le)>-1)-2*(INK
0222E0: 45 59 28 72 69 29 3E 2D 31 29 2D 34 2A 28 49 4E EY(ri)>-1)-4*(IN
0222F0: 4B 45 59 28 66 69 29 3E 2D 31 29 0D 0A 31 30 30 KEY(fi)>-1)..100
022300: 37 20 57 45 4E 44 0D 0A 31 30 30 38 20 57 48 49 7 WEND..1008 WHI
022310: 4C 45 20 49 4E 4B 45 59 24 3C 3E 22 22 3A 57 45 LE INKEY$<>"":WE
022320: 4E 44 0D 0A 31 30 30 39 20 52 45 54 55 52 4E 0D ND..1009 RETURN.
022330: 0A 31 30 31 30 20 50 52 49 4E 54 20 43 48 52 24 .1010 PRINT CHR$
022340: 28 32 33 29 2B 43 48 52 24 28 31 29 3B 0D 0A 31 (23)+CHR$(1);..1
022350: 30 31 31 20 4D 4F 56 45 20 6D 78 2C 6D 79 2D 6D 011 MOVE mx,my-m
022360: 70 2A 6D 73 70 2B 28 6D 64 3D 2D 31 29 2A 28 6D p*msp+(md=-1)*(m
022370: 62 68 2D 32 29 0D 0A 31 30 31 32 20 46 4F 52 20 bh-2)..1012 FOR
022380: 6D 63 3D 31 20 54 4F 20 6D 62 68 2F 32 0D 0A 31 mc=1 TO mbh/2..1
022390: 30 31 33 20 44 52 41 57 52 20 6D 62 6C 2C 30 2C 013 DRAWR mbl,0,
0223A0: 6D 63 6F 6C 3A 4D 4F 56 45 52 20 2D 6D 62 6C 2C mcol:MOVER -mbl,
0223B0: 2D 32 2D 28 6D 64 3D 2D 31 29 2A 34 0D 0A 31 30 -2-(md=-1)*4..10
0223C0: 31 34 20 46 4F 52 20 64 65 6C 61 79 3D 30 20 54 14 FOR delay=0 T
0223D0: 4F 20 6D 64 65 3A 4E 45 58 54 0D 0A 31 30 31 35 O mde:NEXT..1015
0223E0: 20 4E 45 58 54 0D 0A 31 30 31 36 20 50 52 49 4E NEXT..1016 PRIN
0223F0: 54 20 43 48 52 24 28 32 33 29 2B 43 48 52 24 28 T CHR$(23)+CHR$(
022400: 31 30 30 20 4D 45 4D 4F 52 59 20 26 38 46 46 46 100 MEMORY &8FFF
022410: 3A 61 3D 26 39 30 30 30 3A 46 4F 52 20 78 3D 30 :a=&9000:FOR x=0
022420: 20 54 4F 20 31 34 3A 52 45 41 44 20 61 24 3A 50 TO 14:READ a$:P
022430: 4F 4B 45 20 61 2B 78 2C 56 41 4C 28 22 26 22 2B OKE a+x,VAL("&"+
022440: 61 24 29 3A 4E 45 58 54 0D 0A 31 31 30 20 4D 4F a$):NEXT..110 MO
022450: 44 45 20 32 3A 50 52 49 4E 54 22 53 69 6C 6C 79 DE 2:PRINT"Silly
022460: 20 73 74 72 69 6E 67 22 0D 0A 31 32 30 20 61 24 string"..120 a$
022470: 3D 22 20 22 3A 4C 4F 43 41 54 45 20 31 2C 31 3A =" ":LOCATE 1,1:
022480: 43 41 4C 4C 20 26 39 30 30 30 2C 40 61 24 0D 0A CALL &9000,@a$..
022490: 31 33 30 20 50 52 49 4E 54 3A 50 52 49 4E 54 22 130 PRINT:PRINT"
0224A0: 54 68 65 20 6C 65 74 74 65 72 20 61 74 20 74 68 The letter at th
0224B0: 65 20 74 6F 70 20 6C 65 66 74 20 6F 66 20 74 68 e top left of th
0224C0: 65 20 73 63 72 65 65 6E 20 69 73 20 22 3B 61 24 e screen is ";a$
0224D0: 0D 0A 31 39 30 20 44 41 54 41 20 44 44 2C 36 36 ..190 DATA DD,66
0224E0: 2C 30 31 2C 44 44 2C 36 45 2C 30 30 2C 32 33 2C ,01,DD,6E,00,23,
0224F0: 35 45 2C 32 33 2C 35 36 2C 43 44 2C 36 30 2C 42 5E,23,56,CD,60,B
022500: 42 2C 31 32 2C 43 39 0D 0A 1A 24 24 24 FF 00 FF B,12,C9...$$$...
022510: 00 00 0A 00 00 72 01 00 10 29 00 00 00 00 00 00 .....r...)......
022520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022530: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022540: 10 29 00 86 03 54 0D 0A 0D 0A 46 69 67 75 72 65 .)...T....Figure
022550: 20 32 2E 37 31 1A 00 0A 00 00 73 01 00 1E 00 00 2.71.....s.....
022560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022580: C0 7C 30 FE 00 1C 00 18 00 18 66 0C CC 66 76 00 .|0.......f..fv.
022590: 00 66 66 00 C0 18 18 66 66 00 7C 66 18 18 0C 66 .ff....ff.|f...f
0225A0: 66 00 00 0C 0C 66 66 0C 76 66 00 18 3E 3E CC 00 f....ff.vf..>>..
0225B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0225C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0225D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0225E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0225F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022600: 31 30 30 20 4D 45 4D 4F 52 59 20 26 38 46 46 46 100 MEMORY &8FFF
022610: 3A 61 3D 26 39 30 30 30 3A 46 4F 52 20 78 3D 30 :a=&9000:FOR x=0
022620: 20 54 4F 20 31 30 3A 52 45 41 44 20 61 24 3A 50 TO 10:READ a$:P
022630: 4F 4B 45 20 61 2B 78 2C 56 41 4C 28 22 26 22 2B OKE a+x,VAL("&"+
022640: 61 24 29 3A 4E 45 58 54 0D 0A 31 31 30 20 50 52 a$):NEXT..110 PR
022650: 49 4E 54 22 45 6E 74 65 72 20 6E 75 6D 62 65 72 INT"Enter number
022660: 20 28 31 20 74 6F 20 32 35 35 29 22 3B 3A 49 4E (1 to 255)";:IN
022670: 50 55 54 20 78 0D 0A 31 32 30 20 43 41 4C 4C 20 PUT x..120 CALL
022680: 26 39 30 30 30 2C 78 3A 50 52 49 4E 54 0D 0A 31 &9000,x:PRINT..1
022690: 33 30 20 47 4F 54 4F 20 31 31 30 0D 0A 31 39 30 30 GOTO 110..190
0226A0: 20 44 41 54 41 20 44 44 2C 34 36 2C 30 30 2C 33 DATA DD,46,00,3
0226B0: 45 2C 34 30 2C 43 44 2C 35 41 2C 42 42 2C 31 30 E,40,CD,5A,BB,10
0226C0: 2C 46 42 2C 43 39 0D 0A 1A 0A 46 69 67 75 72 65 ,FB,C9....Figure
0226D0: 20 32 2E 37 31 1A 00 0A 00 00 73 01 00 1E 00 00 2.71.....s.....
0226E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0226F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022700: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022710: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022720: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022730: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022740: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022750: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
022780: C0 7C 30 FE 00 1C 00 18 00 18 66 0C CC 66 76 00 .|0.......f..fv.
022790: 00 66 66 00 C0 18 18 66 66 00 7C 66 18 18 0C 66 .ff....ff.|f...f
0227A0: 66 00 00 0C 0C 66 66 0C 76 66 00 18 3E 3E CC 00 f....ff.vf..>>..
0227B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0227C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0227D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0227E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0227F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
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 C4 02 00 00 00 02 ......N.........
022820: 1D 00 C9 02 00 00 00 02 1D 00 C5 02 00 00 00 02 ................
022830: 1D 00 C1 02 00 00 00 02 1D 00 C6 02 00 00 00 02 ................
022840: 1D 00 C2 02 00 00 00 02 1D 00 C7 02 00 00 00 02 ................
022850: 1D 00 C3 02 00 00 00 02 1D 00 C8 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: 23 48 65 6C 70 20 66 6F 72 20 4C 6F 6F 6D 20 68 #Help for Loom h
022910: 79 70 65 72 74 65 78 74 20 72 65 61 64 65 72 20 ypertext reader
022920: 76 33 2E 32 0D 0A 4C 6F 6F 6D 20 69 73 20 61 20 v3.2..Loom is a
022930: 73 79 73 74 65 6D 20 66 6F 72 20 76 69 65 77 69 system for viewi
022940: 6E 67 20 68 79 70 65 72 74 65 78 74 3A 20 61 20 ng hypertext: a
022950: 73 65 74 20 6F 66 20 6F 72 64 69 6E 61 72 79 20 set of ordinary
022960: 74 65 78 74 20 66 69 6C 65 73 20 77 69 74 68 20 text files with
022970: 6C 69 6E 6B 73 0D 0A 62 65 74 77 65 65 6E 20 74 links..between t
022980: 68 65 6D 2E 20 20 41 6E 79 20 74 65 78 74 20 77 hem. Any text w
022990: 68 69 63 68 20 69 73 20 68 69 67 68 6C 69 67 68 hich is highligh
0229A0: 74 65 64 20 69 73 20 61 20 6C 69 6E 6B 2E 20 20 ted is a link.
0229B0: 55 73 65 20 74 68 65 20 63 75 72 73 6F 72 20 6B Use the cursor k
0229C0: 65 79 73 20 74 6F 0D 0A 70 6F 73 69 74 69 6F 6E eys to..position
0229D0: 20 74 68 65 20 63 75 72 73 6F 72 20 6F 76 65 72 the cursor over
0229E0: 20 61 20 6C 69 6E 6B 2C 20 61 6E 64 20 70 72 65 a link, and pre
0229F0: 73 73 20 74 68 65 20 45 4E 54 45 52 20 6F 72 20 ss the ENTER or
022A00: 52 45 54 55 52 4E 20 6B 65 79 20 61 6E 64 20 79 RETURN key and y
022A10: 6F 75 20 77 69 6C 6C 0D 0A 62 65 20 74 61 6B 65 ou will..be take
022A20: 6E 20 74 6F 20 74 68 65 20 61 70 70 72 6F 70 72 n to the appropr
022A30: 69 61 74 65 20 70 6C 61 63 65 20 65 69 74 68 65 iate place eithe
022A40: 72 20 65 6C 73 65 77 68 65 72 65 20 69 6E 20 74 r elsewhere in t
022A50: 68 65 20 73 61 6D 65 20 66 69 6C 65 2C 20 6F 72 he same file, or
022A60: 20 69 6E 20 61 0D 0A 64 69 66 66 65 72 65 6E 74 in a..different
022A70: 20 66 69 6C 65 20 65 6E 74 69 72 65 6C 79 2E 0D file entirely..
022A80: 0A 0D 0A 54 68 65 72 65 20 61 72 65 20 71 75 69 ...There are qui
022A90: 63 6B 20 63 75 72 73 6F 72 20 6D 6F 76 65 6D 65 ck cursor moveme
022AA0: 6E 74 73 20 73 69 6D 69 6C 61 72 20 74 6F 20 50 nts similar to P
022AB0: 72 6F 74 65 78 74 3A 0D 0A 0D 0A 53 48 49 46 54 rotext:....SHIFT
022AC0: 20 6C 65 66 74 20 2B 20 72 69 67 68 74 09 4D 6F left + right.Mo
022AD0: 76 65 20 6C 65 66 74 20 6F 72 20 72 69 67 68 74 ve left or right
022AE0: 20 61 20 77 6F 72 64 20 61 74 20 61 20 74 69 6D a word at a tim
022AF0: 65 0D 0A 43 54 52 4C 20 6C 65 66 74 20 2B 20 72 e..CTRL left + r
022B00: F2 03 01 0D 00 00 6D F0 EF 28 0D 00 00 6D F0 F4 ......m..(...m..
022B10: 0D 00 00 6D 63 E8 F4 0D 00 00 6D E4 29 20 FB 20 ...mc.....m.) .
022B20: 0D 00 00 6D 63 E8 01 9F 20 1E F2 03 00 06 00 EC ...mc... .......
022B30: 03 D5 00 35 00 ED 03 0D 00 00 6D E4 EF 28 FF 0A ...5......m..(..
022B40: 28 0D 00 00 75 F0 29 EE F5 0F 29 F5 28 FF 0A 28 (...u.)...).(..(
022B50: 0D 00 00 64 6F F7 29 EE F5 0F 29 01 0D 00 00 6D ...do.)...)....m
022B60: FA EF 0D 00 00 6D E4 00 3C 00 EE 03 0D 00 00 6B .....m..<......k
022B70: F0 EF F5 28 FF 0A 28 0D 00 00 6C E5 29 EE F5 0F ...(..(...l.)...
022B80: 29 F5 10 F6 28 FF 0A 28 0D 00 00 72 E9 29 EE F5 )...(..(...r.)..
022B90: 0F 29 F5 12 F6 28 FF 0A 28 0D 00 00 66 E9 29 EE .)...(..(...f.).
022BA0: F5 0F 29 00 06 00 EF 03 D5 00 0E 00 F0 03 D6 20 ..)............
022BB0: FF 43 F2 22 22 01 D5 00 06 00 F1 03 C9 00 14 00 .C.""...........
022BC0: F2 03 BF 20 FF 03 28 19 17 29 F4 FF 03 28 0F 29 ... ..(..)...(.)
022BD0: 3B 00 35 00 F3 03 AE 20 0D 00 00 6D F8 2C 0D 00 ;.5.... ...m.,..
022BE0: 00 6D F9 F5 0D 00 00 6D F0 F6 0D 00 00 6D 73 F0 .m.....m.....ms.
022BF0: F4 28 0D 00 00 6D E4 EF F5 0F 29 F6 28 0D 00 00 .(...m....).(...
022C00: 6D 62 E8 F5 10 29 00 19 00 F4 03 9E 20 0D 00 00 mb...)...... ...
022C10: 6D E3 EF 0F 20 EC 20 0D 00 00 6D 62 E8 F7 10 00 m... . ...mb....
022C20: 31 00 F5 03 95 20 0D 00 00 6D 62 EC 2C 0E 2C 0D 1.... ...mb.,.,.
022C30: 00 00 6D 63 6F EC 01 AF 20 F5 0D 00 00 6D 62 EC ..mco... ....mb.
022C40: 2C F5 10 F5 28 0D 00 00 6D E4 EF F5 0F 29 F6 12 ,...(...m....)..
022C50: 00 1C 00 F6 03 9E 20 0D 00 00 64 65 6C 61 F9 EF ...... ...dela..
022C60: 0E 20 EC 20 0D 00 00 6D 64 E5 01 B0 00 06 00 F7 . . ...md.......
022C70: 03 B0 00 14 00 F8 03 BF 20 FF 03 28 19 17 29 F4 ........ ..(..).
022C80: FF 03 28 0E 29 3B 00 06 00 F9 03 C9 00 00 00 1A ..(.);..........
022C90: 6D 70 3D 30 3A 6D 66 3D 30 3A 6D 64 65 3D 30 0D mp=0:mf=0:mde=0.
022CA0: 0A 32 30 20 6D 63 6F 6C 3D 31 3A 6D 73 70 3D 31 .20 mcol=1:msp=1
022CB0: 36 3A 6D 78 3D 30 3A 6D 79 3D 33 39 39 2D 32 2A 6:mx=0:my=399-2*
022CC0: 31 36 3A 6D 62 68 3D 31 36 3A 6D 62 6C 3D 31 36 16:mbh=16:mbl=16
022CD0: 2A 36 2D 32 0D 0A 33 30 20 75 70 3D 30 3A 64 6F *6-2..30 up=0:do
022CE0: 77 3D 32 3A 6C 65 3D 38 3A 72 69 3D 31 3A 66 69 w=2:le=8:ri=1:fi
022CF0: 3D 39 3A 6B 66 3D 34 0D 0A 34 30 20 50 52 49 4E =9:kf=4..40 PRIN
022D00: 69 67 68 74 3A 09 4D 6F 76 65 20 74 6F 20 73 74 ight:.Move to st
022D10: 61 72 74 20 6F 72 20 65 6E 64 20 6F 66 20 6C 69 art or end of li
022D20: 6E 65 0D 0A 53 48 49 46 54 20 75 70 20 2B 20 64 ne..SHIFT up + d
022D30: 6F 77 6E 3A 09 53 63 72 6F 6C 6C 20 73 63 72 65 own:.Scroll scre
022D40: 65 6E 20 75 70 20 6F 72 20 64 6F 77 6E 20 6F 6E en up or down on
022D50: 65 20 6C 69 6E 65 0D 0A 43 54 52 4C 20 75 70 20 e line..CTRL up
022D60: 2B 20 64 6F 77 6E 3A 09 09 4D 6F 76 65 20 75 70 + down:..Move up
022D70: 20 6F 72 20 64 6F 77 6E 20 61 20 77 68 6F 6C 65 or down a whole
022D80: 20 70 61 67 65 0D 0A 43 54 52 4C 20 5B 20 2B 20 page..CTRL [ +
022D90: 5D 09 09 4D 6F 76 65 20 74 6F 20 74 6F 70 20 6F ]..Move to top o
022DA0: 72 20 62 6F 74 74 6F 6D 20 6F 66 20 64 6F 63 75 r bottom of docu
022DB0: 6D 65 6E 74 0D 0A 0D 0A 55 73 65 20 74 68 65 20 ment....Use the
022DC0: 45 4E 54 45 52 20 6F 72 20 52 45 54 55 52 4E 20 ENTER or RETURN
022DD0: 6B 65 79 20 74 6F 20 66 6F 6C 6C 6F 77 20 61 20 key to follow a
022DE0: 6C 69 6E 6B 2E 20 20 4F 6E 63 65 20 79 6F 75 20 link. Once you
022DF0: 68 61 76 65 20 66 6F 6C 6C 6F 77 65 64 20 61 20 have followed a
022E00: 6C 69 6E 6B 2C 0D 0A 70 72 65 73 73 20 74 68 65 link,..press the
022E10: 20 22 3C 22 20 6B 65 79 20 6F 72 20 74 68 65 20 "<" key or the
022E20: 22 42 22 20 6B 65 79 20 74 6F 20 72 65 74 75 72 "B" key to retur
022E30: 6E 20 74 6F 20 77 68 65 72 65 20 79 6F 75 20 63 n to where you c
022E40: 61 6D 65 20 66 72 6F 6D 2E 0D 0A 0D 0A 54 6F 20 ame from.....To
022E50: 71 75 69 74 20 4C 6F 6F 6D 2C 20 70 72 65 73 73 quit Loom, press
022E60: 20 22 51 22 2E 20 20 20 20 20 20 20 20 20 20 20 "Q".
022E70: 20 20 20 20 20 20 54 6F 20 6C 65 61 76 65 20 74 To leave t
022E80: 68 69 73 20 68 65 6C 70 20 73 63 72 65 65 6E 2C his help screen,
022E90: 20 70 72 65 73 73 20 22 42 22 0D 0A 2D 2D 2D 2D press "B"..----
022EA0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
022EB0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
022EC0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
022ED0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
022EE0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 4F 72 69 -----------..Ori
022EF0: 67 69 6E 61 6C 20 76 65 72 73 69 6F 6E 20 28 63 ginal version (c
022F00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022F10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022F20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022F30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022F40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022F50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022F60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022F70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022F80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022F90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022FA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022FB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022FC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022FD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022FE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
022FF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0230A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0230B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0230C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0230D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0230E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0230F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023100: 29 20 53 74 65 70 68 65 6E 20 50 68 69 6C 6C 69 ) Stephen Philli
023110: 70 73 20 31 39 39 35 0D 0A 41 6D 73 74 72 61 64 ps 1995..Amstrad
023120: 20 43 50 43 20 76 65 72 73 69 6F 6E 20 28 63 29 CPC version (c)
023130: 20 4D 61 74 74 68 65 77 20 61 6E 64 20 53 74 65 Matthew and Ste
023140: 70 68 65 6E 20 50 68 69 6C 6C 69 70 73 20 31 39 phen Phillips 19
023150: 39 37 0D 0A 57 72 69 74 74 65 6E 20 75 73 69 6E 97..Written usin
023160: 67 20 74 68 65 20 48 69 53 6F 66 74 20 43 20 63 g the HiSoft C c
023170: 6F 6D 70 69 6C 65 72 2E 20 20 52 75 6E 74 69 6D ompiler. Runtim
023180: 65 20 72 6F 75 74 69 6E 65 73 20 28 63 29 20 48 e routines (c) H
023190: 69 53 6F 66 74 20 31 39 38 38 1A 61 64 65 72 20 iSoft 1988.ader
0231A0: 76 33 2E 32 0D 0A 4C 6F 6F 6D 20 69 73 20 61 20 v3.2..Loom is a
0231B0: 73 79 73 74 65 6D 20 66 6F 72 20 76 69 65 77 69 system for viewi
0231C0: 6E 67 20 68 79 70 65 72 74 65 78 74 3A 20 61 20 ng hypertext: a
0231D0: 73 65 74 20 6F 66 20 6F 72 64 69 6E 61 72 79 20 set of ordinary
0231E0: 74 65 78 74 20 66 69 6C 65 73 20 77 69 74 68 20 text files with
0231F0: 6C 69 6E 6B 73 0D 0A 62 65 74 77 65 65 6E 20 74 links..between t
023200: 6C 69 6E 6B 2C 0D 0A 70 72 65 73 73 20 74 68 65 link,..press the
023210: 20 22 3C 22 20 6B 65 79 20 6F 72 20 74 68 65 20 "<" key or the
023220: 22 42 22 20 6B 65 79 20 74 6F 20 72 65 74 75 72 "B" key to retur
023230: 6E 20 74 6F 20 77 68 65 72 65 20 79 6F 75 20 63 n to where you c
023240: 61 6D 65 20 66 72 6F 6D 2E 0D 0A 0D 0A 54 6F 20 ame from.....To
023250: 71 75 69 74 20 4C 6F 6F 6D 2C 20 70 72 65 73 73 quit Loom, press
023260: 20 22 51 22 2E 20 20 20 20 20 20 20 20 20 20 20 "Q".
023270: 20 20 20 20 20 20 54 6F 20 6C 65 61 76 65 20 74 To leave t
023280: 68 69 73 20 68 65 6C 70 20 73 63 72 65 65 6E 2C his help screen,
023290: 20 70 72 65 73 73 20 22 42 22 0D 0A 2D 2D 2D 2D press "B"..----
0232A0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
0232B0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
0232C0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
0232D0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D ----------------
0232E0: 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0A 4F 72 69 -----------..Ori
0232F0: 67 69 6E 61 6C 20 76 65 72 73 69 6F 6E 20 28 63 ginal version (c
023300: 31 30 20 44 45 46 49 4E 54 20 61 2D 7A 3A 4D 45 10 DEFINT a-z:ME
023310: 4D 4F 52 59 20 48 49 4D 45 4D 2D 33 34 3A 61 3D MORY HIMEM-34:a=
023320: 55 4E 54 28 48 49 4D 45 4D 2B 31 29 3A 46 4F 52 UNT(HIMEM+1):FOR
023330: 20 78 3D 30 20 54 4F 20 33 33 3A 52 45 41 44 20 x=0 TO 33:READ
023340: 61 24 3A 50 4F 4B 45 20 61 2B 78 2C 56 41 4C 28 a$:POKE a+x,VAL(
023350: 22 26 22 2B 61 24 29 3A 4E 45 58 54 3A 44 41 54 "&"+a$):NEXT:DAT
023360: 41 20 43 44 2C 37 38 2C 42 42 2C 34 43 2C 44 44 A CD,78,BB,4C,DD
023370: 2C 36 45 2C 30 2C 44 44 2C 36 36 2C 31 2C 34 36 ,6E,0,DD,66,1,46
023380: 2C 37 38 2C 42 37 2C 43 38 2C 32 33 2C 35 45 2C ,78,B7,C8,23,5E,
023390: 32 33 2C 36 36 2C 36 42 2C 43 44 2C 36 30 2C 42 23,66,6B,CD,60,B
0233A0: 42 2C 37 37 2C 32 33 2C 43 2C 37 39 2C 45 35 2C B,77,23,C,79,E5,
0233B0: 43 44 2C 36 46 2C 42 42 2C 45 31 2C 31 30 2C 46 CD,6F,BB,E1,10,F
0233C0: 32 2C 43 39 0D 0A 32 30 20 4D 4F 44 45 20 32 3A 2,C9..20 MODE 2:
0233D0: 43 41 54 3A 76 3D 56 50 4F 53 28 23 30 29 3A 66 CAT:v=VPOS(#0):f
0233E0: 24 3D 53 50 41 43 45 24 28 31 32 29 3A 4C 4F 43 $=SPACE$(12):LOC
0233F0: 41 54 45 20 31 2C 34 3A 43 41 4C 4C 20 61 2C 40 ATE 1,4:CALL a,@
023400: 66 24 3A 4C 4F 43 41 54 45 20 31 2C 76 0D 0A 33 f$:LOCATE 1,v..3
023410: 30 20 50 52 49 4E 54 22 54 68 65 20 66 69 72 73 0 PRINT"The firs
023420: 74 20 66 69 6C 65 20 6F 6E 20 74 68 69 73 20 64 t file on this d
023430: 69 73 63 20 69 73 20 22 66 24 0D 0A 1A 20 57 65 isc is "f$... We
023440: 20 66 69 6E 64 20 66 69 6E 65 6C 79 20 67 72 61 find finely gra
023450: 74 65 64 20 20 50 61 72 6D 65 73 61 6E 20 20 63 ted Parmesan c
023460: 68 65 65 73 65 20 20 73 70 72 69 6E 6B 6C 65 64 heese sprinkled
023470: 20 20 67 65 6E 65 72 6F 75 73 6C 79 20 6F 76 65 generously ove
023480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023490: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0234A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0234B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0234C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0234D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0234E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0234F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0235A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0235B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0235C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0235D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0235E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0235F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0236A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0236B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0236C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0236D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0236E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0236F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0237A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0237B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0237C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0237D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0237E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0237F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0238A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0238B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0238C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0238D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0238E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0238F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
023900: 00 4D 45 4E 55 45 58 31 20 42 41 53 00 00 00 00 .MENUEX1 BAS....
023910: 00 00 00 00 00 70 01 00 0F 03 00 00 00 00 00 00 .....p..........
023920: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023930: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
023940: 0F 03 00 8E 03 FF 03 28 0E 29 3B 00 06 00 F9 03 .......(.);.....
023950: C9 00 00 00 1A 6D 70 3D 30 3A 6D 66 3D 30 3A 6D .....mp=0:mf=0:m
023960: 64 65 3D 30 0D 0A 32 30 20 6D 63 6F 6C 3D 31 3A de=0..20 mcol=1:
023970: 6D 73 70 3D 31 36 3A 6D 78 3D 30 3A 6D 79 3D 33 msp=16:mx=0:my=3
023980: 2A 00 0A 00 AD 20 0F 01 0D 00 00 6D 63 E8 EF 12 *.... .....mc...
023990: 01 0D 00 00 6D F0 EF 0E 01 0D 00 00 6D E6 EF 0E ....m.......m...
0239A0: 01 0D 00 00 6D 64 E5 EF 0E 00 47 00 14 00 0D 00 ....md....G.....
0239B0: 00 6D 63 6F EC EF 0F 01 0D 00 00 6D 73 F0 EF 19 .mco.......ms...
0239C0: 10 01 0D 00 00 6D F8 EF 0E 01 0D 00 00 6D F9 EF .....m.......m..
0239D0: 1A 8F 01 F5 10 F6 19 10 01 0D 00 00 6D 62 E8 EF ............mb..
0239E0: 19 10 01 0D 00 00 6D 62 EC EF 19 10 F6 14 F5 10 ......mb........
0239F0: 00 35 00 1E 00 0D 00 00 75 F0 EF 0E 01 0D 00 00 .5......u.......
023A00: 64 6F F7 EF 10 01 0D 00 00 6C E5 EF 16 01 0D 00 do.......l......
023A10: 00 72 E9 EF 0F 01 0D 00 00 66 E9 EF 17 01 0D 00 .r.......f......
023A20: 00 6B E6 EF 12 00 14 00 28 00 BF 22 4D 65 6E 75 .k......(.."Menu
023A30: 22 01 BF 22 2D 2D 2D 2D 22 00 24 00 32 00 9E 20 ".."----".$.2..
023A40: 0D 00 00 F8 EF 0F 20 EC 20 0D 00 00 6D 63 E8 01 ...... . ...mc..
023A50: BF 22 49 74 65 6D 22 0D 00 00 F8 01 B0 00 0A 00 ."Item".........
023A60: 3C 00 9F 20 1E F2 03 00 0A 00 46 00 9F 20 1E E8 <.. ......F.. ..
023A70: 03 00 23 00 50 00 BF 22 59 6F 75 20 68 61 76 65 ..#.P.."You have
023A80: 20 63 68 6F 73 65 6E 20 69 74 65 6D 22 0D 00 00 chosen item"...
023A90: 6D F0 F4 0F 00 06 00 5A 00 98 00 1C 00 E8 03 0D m......Z........
023AA0: 00 00 6B F0 EF 0E 01 0D 00 00 6D E4 EF 0F 01 0D ..k.......m.....
023AB0: 00 00 6D FA EF 0E 00 18 00 E9 03 D6 20 28 0D 00 ..m......... (..
023AC0: 00 6B F0 20 FA 20 0D 00 00 6B E6 29 EF 0E 00 22 .k. . ...k.)..."
023AD0: 00 EA 03 D6 20 28 10 F8 0D 00 00 6D F0 20 FA 20 .... (.....m. .
023AE0: 0D 00 00 6D E6 29 EE 0E 20 FC 20 0D 00 00 6D FA ...m.).. . ...m.
023AF0: 00 3C 00 EB 03 0D 00 00 6D FA EF 0E 01 9F 20 1E .<......m..... .
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 C7 02 00 00 00 02 ......N.........
023B20: 1E 00 C3 02 00 00 00 02 1E 00 C8 02 00 00 00 02 ................
023B30: 1E 00 C4 02 00 00 00 02 1E 00 C9 02 00 00 00 02 ................
023B40: 1E 00 C5 02 00 00 00 02 1E 00 C1 02 00 00 00 02 ................
023B50: 1E 00 C6 02 00 00 00 02 1E 00 C2 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: 00 6D 63 E8 F4 0D 00 00 6D E4 29 20 FB 20 0D 00 .mc.....m.) . ..
023C10: 00 6D 63 E8 01 9F 20 1E F2 03 00 06 00 EC 03 D5 .mc... .........
023C20: 00 35 00 ED 03 0D 00 00 6D E4 EF 28 FF 0A 28 0D .5......m..(..(.
023C30: 00 00 75 F0 29 EE F5 0F 29 F5 28 FF 0A 28 0D 00 ..u.)...).(..(..
023C40: 00 64 6F F7 29 EE F5 0F 29 01 0D 00 00 6D FA EF .do.)...)....m..
023C50: 0D 00 00 6D E4 00 3C 00 EE 03 0D 00 00 6B F0 EF ...m..<......k..
023C60: F5 28 FF 0A 28 0D 00 00 6C E5 29 EE F5 0F 29 F5 .(..(...l.)...).
023C70: 10 F6 28 FF 0A 28 0D 00 00 72 E9 29 EE F5 0F 29 ..(..(...r.)...)
023C80: F5 12 F6 28 FF 0A 28 0D 00 00 66 E9 29 EE F5 0F ...(..(...f.)...
023C90: 29 00 06 00 EF 03 D5 00 0E 00 F0 03 D6 20 FF 43 )............ .C
023CA0: F2 22 22 01 D5 00 06 00 F1 03 C9 00 14 00 F2 03 ."".............
023CB0: BF 20 FF 03 28 19 17 29 F4 FF 03 28 0F 29 3B 00 . ..(..)...(.);.
023CC0: 35 00 F3 03 AE 20 0D 00 00 6D F8 2C 0D 00 00 6D 5.... ...m.,...m
023CD0: F9 F5 0D 00 00 6D F0 F6 0D 00 00 6D 73 F0 F4 28 .....m.....ms..(
023CE0: 0D 00 00 6D E4 EF F5 0F 29 F6 28 0D 00 00 6D 62 ...m....).(...mb
023CF0: E8 F5 10 29 00 19 00 F4 03 9E 20 0D 00 00 6D E3 ...)...... ...m.
023D00: EF 0F 20 EC 20 0D 00 00 6D 62 E8 F7 10 00 31 00 .. . ...mb....1.
023D10: F5 03 95 20 0D 00 00 6D 62 EC 2C 0E 2C 0D 00 00 ... ...mb.,.,...
023D20: 6D 63 6F EC 01 AF 20 F5 0D 00 00 6D 62 EC 2C F5 mco... ....mb.,.
023D30: 10 F5 28 0D 00 00 6D E4 EF F5 0F 29 F6 12 00 1C ..(...m....)....
023D40: 00 F6 03 9E 20 0D 00 00 64 65 6C 61 F9 EF 0E 20 .... ...dela...
023D50: EC 20 0D 00 00 6D 64 E5 01 B0 00 06 00 F7 03 B0 . ...md.........
023D60: 00 14 00 F8 03 BF 20 FF 03 28 19 17 29 F4 FF 03 ...... ..(..)...
023D70: 28 0E 29 3B 00 06 00 F9 03 C9 00 00 00 1A 35 30 (.);..........50
023D80: 68 61 6E 6B 20 79 6F 75 20 66 6F 72 20 79 6F 75 hank you for you
023D90: 72 20 6F 72 64 65 72 2E 22 0D 0A 20 20 20 32 30 r order.".. 20
023DA0: 30 20 50 52 49 4E 54 22 50 6C 65 61 73 65 20 73 0 PRINT"Please s
023DB0: 65 6E 64 20 61 20 63 68 65 71 75 65 20 66 6F 72 end a cheque for
023DC0: 20 A3 22 3B 55 53 49 4E 47 22 23 23 2E 23 23 22 £";USING"##.##"
023DD0: 3B 30 2E 35 2A 6D 61 67 73 3A 45 4E 44 0D 0A 20 ;0.5*mags:END..
023DE0: 20 20 32 31 30 20 4C 4F 43 41 54 45 20 32 37 2C 210 LOCATE 27,
023DF0: 36 2B 6D 70 2A 32 3A 50 52 49 4E 54 20 6E 75 6D 6+mp*2:PRINT num
023E00: 00 F0 03 D6 20 FF 43 F2 22 22 01 D5 00 06 00 F1 .... .C.""......
023E10: 03 C9 00 14 00 F2 03 BF 20 FF 03 28 19 17 29 F4 ........ ..(..).
023E20: FF 03 28 0F 29 3B 00 35 00 F3 03 AE 20 0D 00 00 ..(.);.5.... ...
023E30: 6D F8 2C 0D 00 00 6D F9 F5 0D 00 00 6D F0 F6 0D m.,...m.....m...
023E40: 00 00 6D 73 F0 F4 28 0D 00 00 6D E4 EF F5 0F 29 ..ms..(...m....)
023E50: F6 28 0D 00 00 6D 62 E8 F5 10 29 00 19 00 F4 03 .(...mb...).....
023E60: 9E 20 0D 00 00 6D E3 EF 0F 20 EC 20 0D 00 00 6D . ...m... . ...m
023E70: 62 E8 F7 10 00 31 00 F5 03 95 20 0D 00 00 6D 62 b....1.... ...mb
023E80: EC 2C 0E 2C 0D 00 00 6D 63 6F EC 01 AF 20 F5 0D .,.,...mco... ..
023E90: 00 00 6D 62 EC 2C F5 10 F5 28 0D 00 00 6D E4 EF ..mb.,...(...m..
023EA0: F5 0F 29 F6 12 00 1C 00 F6 03 9E 20 0D 00 00 64 ..)........ ...d
023EB0: 65 6C 61 F9 EF 0E 20 EC 20 0D 00 00 6D 64 E5 01 ela... . ...md..
023EC0: B0 00 06 00 F7 03 B0 00 14 00 F8 03 BF 20 FF 03 ............. ..
023ED0: 28 19 17 29 F4 FF 03 28 0E 29 3B 00 06 00 F9 03 (..)...(.);.....
023EE0: C9 00 00 00 1A 72 69 3D 31 3A 66 69 3D 31 38 3A .....ri=1:fi=18:
023EF0: 6B 66 3D 35 0D 0A 34 30 20 6F 75 72 6B 66 3D 30 kf=5..40 ourkf=0
023F00: 20 31 30 31 37 20 52 45 54 55 52 4E 0D 0A 1A FF 1017 RETURN....
023F10: 50 41 54 43 48 20 36 0D 0A 20 20 20 42 79 20 53 PATCH 6.. By S
023F20: 74 65 70 68 65 6E 20 61 6E 64 20 4D 61 74 74 68 tephen and Matth
023F30: 65 77 20 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A 20 ew Phillips....
023F40: 20 20 22 57 68 61 74 27 73 20 6F 6E 20 74 68 65 "What's on the
023F50: 20 6D 65 6E 75 20 66 6F 72 20 74 68 69 73 20 6D menu for this m
023F60: 6F 6E 74 68 3F 22 2C 20 20 77 65 20 20 68 65 61 onth?", we hea
023F70: 72 20 79 6F 75 20 63 72 79 2E 20 20 57 65 6C 6C r you cry. Well
023F80: 31 29 2D 28 49 4E 4B 45 59 28 64 6F 77 29 3E 2D 1)-(INKEY(dow)>-
023F90: 31 29 3A 6D 7A 3D 6D 64 0D 0A 20 20 20 31 30 30 1):mz=md.. 100
023FA0: 36 20 6B 70 3D 2D 28 49 4E 4B 45 59 28 6C 65 29 6 kp=-(INKEY(le)
023FB0: 3E 2D 31 29 2D 32 2A 28 49 4E 4B 45 59 28 72 69 >-1)-2*(INKEY(ri
023FC0: 29 3E 2D 31 29 2D 34 2A 28 49 4E 4B 45 59 28 66 )>-1)-4*(INKEY(f
023FD0: 69 29 3E 2D 31 29 0D 0A 20 20 20 31 30 30 37 20 i)>-1).. 1007
023FE0: 57 45 4E 44 0D 0A 20 20 20 31 30 30 38 20 57 48 WEND.. 1008 WH
023FF0: 49 4C 45 20 49 4E 4B 45 59 24 3C 3E 22 22 3A 57 ILE INKEY$<>"":W
024000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0240A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0240B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0240C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0240D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0240E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0240F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0241A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0241B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0241C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0241D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0241E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0241F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0242A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0242B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0242C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0242D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0242E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0242F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0243A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0243B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0243C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0243D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0243E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0243F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
024400: 00 4D 45 4E 55 45 58 34 20 42 41 53 00 00 00 00 .MENUEX4 BAS....
024410: 00 00 00 00 00 70 01 00 3B 05 00 00 00 00 00 00 .....p..;.......
024420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024430: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024440: 3B 05 00 ED 03 03 9E 20 0D 00 00 64 65 6C 61 F9 ;...... ...dela.
024450: EF 0E 20 EC 20 0D 00 00 6D 64 E5 01 B0 00 06 00 .. . ...md......
024460: F7 03 B0 00 14 00 F8 03 BF 20 FF 03 28 19 17 29 ......... ..(..)
024470: F4 FF 03 28 0E 29 3B 00 06 00 F9 03 C9 00 00 00 ...(.);.........
024480: 21 00 0A 00 0D 00 00 6D 63 E8 EF 14 01 0D 00 00 !......mc.......
024490: 6D E6 EF 16 F4 19 20 01 0D 00 00 6D 64 E5 EF 0E m..... ....md...
0244A0: 00 3F 00 14 00 0D 00 00 6D 63 6F EC EF 0F 01 0D .?......mco.....
0244B0: 00 00 6D 73 F0 EF 19 20 01 0D 00 00 6D F8 EF 19 ..ms... ....m...
0244C0: 7C 01 0D 00 00 6D F9 EF 1A 42 01 01 0D 00 00 6D |....m...B.....m
0244D0: 62 E8 EF 19 16 01 0D 00 00 6D 62 EC EF 19 84 00 b........mb.....
0244E0: 3F 00 1E 00 0D 00 00 75 F0 EF 0E 01 0D 00 00 64 ?......u.......d
0244F0: 6F F7 EF 10 01 0D 00 00 6C E5 EF 16 01 0D 00 00 o.......l.......
024500: 72 E9 EF 0F 01 0D 00 00 66 E9 EF 19 2F 01 0D 00 r.......f.../...
024510: 00 73 E8 EF 19 15 01 0D 00 00 6B E6 EF 15 00 17 .s........k.....
024520: 00 28 00 93 20 0D 00 00 6E 75 ED 28 0D 00 00 6D .(.. ...nu.(...m
024530: 63 E8 F5 0F 29 00 2A 00 32 00 AD 20 0F 01 A9 20 c...).*.2.. ...
024540: 16 2C 11 01 BF 22 57 41 43 43 49 20 62 61 63 6B .,..."WACCI back
024550: 2D 69 73 73 75 65 73 20 6F 72 64 65 72 73 22 00 -issues orders".
024560: 1E 00 3C 00 A9 20 16 2C 12 01 BF 20 FF 7B 28 19 ..<.. .,... .{(.
024570: 18 2C 22 2D 22 29 01 A9 20 0F 2C 19 13 00 40 00 .,"-").. .,...@.
024580: 46 00 BF 22 55 73 65 20 74 68 65 20 63 75 72 73 F.."Use the curs
024590: 6F 72 20 6B 65 79 73 20 74 6F 20 6D 6F 76 65 20 or keys to move
0245A0: 61 6E 64 20 61 6C 74 65 72 2E 20 20 53 50 41 43 and alter. SPAC
0245B0: 45 20 74 6F 20 66 69 6E 69 73 68 2E 22 00 40 00 E to finish.".@.
0245C0: 50 00 9E 20 0D 00 00 6D F0 EF 0E 20 EC 20 0D 00 P.. ...m... . ..
0245D0: 00 6D 63 E8 F5 0F 01 A9 20 17 2C 14 F4 0D 00 00 .mc..... .,.....
0245E0: 6D F0 F6 10 01 BF 22 57 41 43 43 49 22 19 28 F4 m....."WACCI".(.
0245F0: 0D 00 00 6D F0 01 9F 20 1E D2 00 01 B0 00 19 00 ...m... ........
024600: 00 4D 45 4E 55 45 58 33 20 42 41 53 00 00 00 00 .MENUEX3 BAS....
024610: 00 00 00 00 00 70 01 00 FD 04 00 00 00 00 00 00 .....p..........
024620: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024630: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024640: FD 04 00 6E 05 EF 0F 20 EC 20 0D 00 00 6D 62 E8 ...n... . ...mb.
024650: F7 10 00 31 00 F5 03 95 20 0D 00 00 6D 62 EC 2C ...1.... ...mb.,
024660: 0E 2C 0D 00 00 6D 63 6F EC 01 AF 20 F5 0D 00 00 .,...mco... ....
024670: 6D 62 EC 2C F5 10 F5 28 0D 00 00 6D E4 EF F5 0F mb.,...(...m....
024680: 21 00 0A 00 0D 00 00 6D 63 E8 EF 14 01 0D 00 00 !......mc.......
024690: 6D E6 EF 16 F4 19 20 01 0D 00 00 6D 64 E5 EF 0E m..... ....md...
0246A0: 00 3F 00 14 00 0D 00 00 6D 63 6F EC EF 0F 01 0D .?......mco.....
0246B0: 00 00 6D 73 F0 EF 19 20 01 0D 00 00 6D F8 EF 19 ..ms... ....m...
0246C0: 7C 01 0D 00 00 6D F9 EF 1A 42 01 01 0D 00 00 6D |....m...B.....m
0246D0: 62 E8 EF 19 16 01 0D 00 00 6D 62 EC EF 19 84 00 b........mb.....
0246E0: 36 00 1E 00 0D 00 00 75 F0 EF 0E 01 0D 00 00 64 6......u.......d
0246F0: 6F F7 EF 10 01 0D 00 00 6C E5 EF 16 01 0D 00 00 o.......l.......
024700: 72 E9 EF 0F 01 0D 00 00 66 E9 EF 19 2F 01 0D 00 r.......f.../...
024710: 00 6B E6 EF 15 00 17 00 28 00 93 20 0D 00 00 6E .k......(.. ...n
024720: 75 ED 28 0D 00 00 6D 63 E8 F5 0F 29 00 2A 00 32 u.(...mc...).*.2
024730: 00 AD 20 0F 01 A9 20 16 2C 11 01 BF 22 57 41 43 .. ... .,..."WAC
024740: 43 49 20 62 61 63 6B 2D 69 73 73 75 65 73 20 6F CI back-issues o
024750: 72 64 65 72 73 22 00 1E 00 3C 00 A9 20 16 2C 12 rders"...<.. .,.
024760: 01 BF 20 FF 7B 28 19 18 2C 22 2D 22 29 01 A9 20 .. .{(..,"-")..
024770: 0F 2C 19 13 00 40 00 46 00 BF 22 55 73 65 20 74 .,...@.F.."Use t
024780: 68 65 20 63 75 72 73 6F 72 20 6B 65 79 73 20 74 he cursor keys t
024790: 6F 20 6D 6F 76 65 20 61 6E 64 20 61 6C 74 65 72 o move and alter
0247A0: 2E 20 20 53 50 41 43 45 20 74 6F 20 66 69 6E 69 . SPACE to fini
0247B0: 73 68 2E 22 00 40 00 50 00 9E 20 0D 00 00 6D F0 sh.".@.P.. ...m.
0247C0: EF 0E 20 EC 20 0D 00 00 6D 63 E8 F5 0F 01 A9 20 .. . ...mc.....
0247D0: 17 2C 14 F4 0D 00 00 6D F0 F6 10 01 BF 22 57 41 .,.....m....."WA
0247E0: 43 43 49 22 19 28 F4 0D 00 00 6D F0 01 9F 20 1E CCI".(....m... .
0247F0: D2 00 01 B0 00 19 00 5A 00 9E 20 0D 00 00 6D F0 .......Z.. ...m.
024800: 00 4D 45 4E 55 45 58 32 20 42 41 53 00 00 00 00 .MENUEX2 BAS....
024810: 00 00 00 00 00 70 01 00 64 04 00 00 00 00 00 00 .....p..d.......
024820: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024830: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024840: 64 04 00 3B 04 EC 2C 0E 2C 0D 00 00 6D 63 6F EC d..;..,.,...mco.
024850: 01 AF 20 F5 0D 00 00 6D 62 EC 2C F5 10 F5 28 0D .. ....mb.,...(.
024860: 00 00 6D E4 EF F5 0F 29 F6 12 00 1C 00 F6 03 9E ..m....)........
024870: 20 0D 00 00 64 65 6C 61 F9 EF 0E 20 EC 20 0D 00 ...dela... . ..
024880: 22 00 0A 00 AD 20 0F 01 0D 00 00 6D 63 E8 EF 11 ".... .....mc...
024890: 01 0D 00 00 6D E6 EF 0E 01 0D 00 00 6D 64 E5 EF ....m.......md..
0248A0: 0E 00 47 00 14 00 0D 00 00 6D 63 6F EC EF 10 01 ..G......mco....
0248B0: 0D 00 00 6D 73 F0 EF 19 10 01 0D 00 00 6D F8 EF ...ms........m..
0248C0: 0E 01 0D 00 00 6D F9 EF 1A 8F 01 F5 13 F6 19 10 .....m..........
0248D0: 01 0D 00 00 6D 62 E8 EF 19 10 01 0D 00 00 6D 62 ....mb........mb
0248E0: EC EF 19 10 F6 10 F5 10 00 37 00 1E 00 0D 00 00 .........7......
0248F0: 75 F0 EF 0E 01 0D 00 00 64 6F F7 EF 10 01 0D 00 u.......do......
024900: 00 6C E5 EF 19 2F 01 0D 00 00 72 E9 EF 0F 01 0D .l.../....r.....
024910: 00 00 66 E9 EF 19 12 01 0D 00 00 6B E6 EF 13 00 ..f........k....
024920: 0F 00 28 00 0D 00 00 6F 75 72 6B E6 EF 0E 00 2F ..(....ourk..../
024930: 00 32 00 BF 22 50 72 65 73 73 20 53 50 41 43 45 .2.."Press SPACE
024940: 20 74 6F 20 74 6F 67 67 6C 65 20 74 68 65 20 76 to toggle the v
024950: 61 6C 75 65 73 20 4F 6E 2F 4F 66 66 22 00 39 00 alues On/Off".9.
024960: 3C 00 BF 20 FF 03 28 19 22 29 22 4F 66 66 22 FF <.. ..(.")"Off".
024970: 03 28 19 22 29 22 20 6D 65 61 6E 73 20 74 68 65 .(.")" means the
024980: 20 6B 65 79 20 77 6F 75 6C 64 20 62 65 20 69 67 key would be ig
024990: 6E 6F 72 65 64 22 00 30 00 46 00 BF 01 BF 22 50 nored".0.F...."P
0249A0: 72 65 73 73 20 52 45 54 55 52 4E 20 74 6F 20 63 ress RETURN to c
0249B0: 61 6C 63 75 6C 61 74 65 20 74 68 65 20 6B 66 20 alculate the kf
0249C0: 76 61 6C 75 65 22 00 1C 00 50 00 A9 20 0F 2C 14 value"...P.. .,.
0249D0: 01 BF 22 6C 65 22 01 BF 22 72 69 22 01 BF 22 66 .."le".."ri".."f
0249E0: 69 22 00 29 00 5A 00 9E 20 0D 00 00 6D F0 EF 0E i".).Z.. ...m...
0249F0: 20 EC 20 0D 00 00 6D 63 E8 F5 0F 01 9F 20 1E A0 . ...mc..... ..
024A00: EF 0E 20 EC 20 0D 00 00 6D 63 E8 F5 0F 00 35 00 .. . ...mc....5.
024A10: 64 00 A1 20 0D 00 00 6D E6 20 FA 20 10 F8 0D 00 d.. ...m. . ....
024A20: 00 6D F0 20 EB 20 A9 20 19 1E 2C 10 F6 0D 00 00 .m. . . ..,.....
024A30: 6D F0 F4 14 01 BF 22 28 6E 6F 20 73 74 6F 63 6B m....."(no stock
024A40: 29 22 00 06 00 6E 00 B0 00 14 00 78 00 0D 00 00 )"...n.....x....
024A50: 6D F0 EF 0E 01 0D 00 00 6B F0 EF 0E 00 0A 00 82 m.......k.......
024A60: 00 9F 20 1E F2 03 00 0E 00 8C 00 D6 20 0D 00 00 .. ......... ...
024A70: 6B F0 F2 12 00 3A 00 96 00 0D 00 00 6E 75 ED 28 k....:......nu.(
024A80: 0D 00 00 6D F0 29 EF 0D 00 00 6E 75 ED 28 0D 00 ...m.)....nu.(..
024A90: 00 6D F0 29 F4 28 0D 00 00 6B F0 EF 0F 29 F5 28 .m.).(...k...).(
024AA0: 0D 00 00 6B F0 EF 10 29 01 9F 20 1E D2 00 00 0A ...k...).. .....
024AB0: 00 A0 00 9F 20 1E E8 03 00 06 00 AA 00 D5 00 41 .... ..........A
024AC0: 00 B4 00 0D 00 00 6D 61 67 F3 EF 0E 01 9E 20 0D ......mag..... .
024AD0: 00 00 F8 EF 0E 20 EC 20 0D 00 00 6D 63 E8 F5 0F ..... . ...mc...
024AE0: 01 0D 00 00 6D 61 67 F3 EF 0D 00 00 6D 61 67 F3 ....mag.....mag.
024AF0: F4 0D 00 00 6E 75 ED 28 0D 00 00 F8 29 01 B0 00 ....nu.(....)...
024B00: 28 00 BE 00 A9 20 0F 2C 19 16 01 BF 22 54 68 61 (.... .,...."Tha
024B10: 6E 6B 20 79 6F 75 20 66 6F 72 20 79 6F 75 72 20 nk you for your
024B20: 6F 72 64 65 72 2E 22 00 3C 00 C8 00 BF 22 50 6C order.".<...."Pl
024B30: 65 61 73 65 20 73 65 6E 64 20 61 20 63 68 65 71 ease send a cheq
024B40: 75 65 20 66 6F 72 20 A3 22 3B ED 22 23 23 2E 23 ue for £";."##.#
024B50: 23 22 3B 1F 00 00 00 00 80 F6 0D 00 00 6D 61 67 #";..........mag
024B60: F3 01 98 00 25 00 D2 00 A9 20 19 1B 2C 14 F4 0D ....%.... ..,...
024B70: 00 00 6D F0 F6 10 01 BF 20 0D 00 00 6E 75 ED 28 ..m..... ...nu.(
024B80: 0D 00 00 6D F0 29 01 C9 00 1C 00 E8 03 0D 00 00 ...m.)..........
024B90: 6B F0 EF 0E 01 0D 00 00 6D E4 EF 0F 01 0D 00 00 k.......m.......
024BA0: 6D FA EF 0E 00 18 00 E9 03 D6 20 28 0D 00 00 6B m......... (...k
024BB0: F0 20 FA 20 0D 00 00 6B E6 29 EF 0E 00 22 00 EA . . ...k.)..."..
024BC0: 03 D6 20 28 10 F8 0D 00 00 6D F0 20 FA 20 0D 00 .. (.....m. . ..
024BD0: 00 6D E6 29 EE 0E 20 FC 20 0D 00 00 6D FA 00 3C .m.).. . ...m..<
024BE0: 00 EB 03 0D 00 00 6D FA EF 0E 01 9F 20 1E F2 03 ......m..... ...
024BF0: 01 0D 00 00 6D F0 EF 28 0D 00 00 6D F0 F4 0D 00 ....m..(...m....
024C00: 00 01 B0 01 0D 00 00 6D F0 EF 0E 00 0A 00 64 00 .......m......d.
024C10: 9F 20 1E F2 03 00 0E 00 6E 00 D6 20 0D 00 00 6B . ......n.. ...k
024C20: F0 F2 12 00 0A 00 78 00 9F 20 1E E8 03 00 46 00 ......x.. ....F.
024C30: 82 00 A1 20 0D 00 00 6B F0 EF 0F 20 EB 20 0D 00 ... ...k... . ..
024C40: 00 6F 75 72 6B E6 EF 0D 00 00 6F 75 72 6B E6 20 .ourk.....ourk.
024C50: FD 20 10 F8 0D 00 00 6D F0 01 9F 20 1E A0 00 01 . .....m... ....
024C60: 9E 20 0D 00 00 64 65 6C 61 F9 EF 0F 20 EC 20 19 . ...dela... . .
024C70: 64 01 B0 00 06 00 8C 00 D5 00 37 00 96 00 9F 20 d.........7....
024C80: 1E F2 03 01 A9 20 0F 2C 19 0A 01 BF 22 54 68 65 ..... .,...."The
024C90: 20 6B 66 20 76 61 6C 75 65 20 79 6F 75 20 6E 65 kf value you ne
024CA0: 65 64 20 69 73 22 0D 00 00 6F 75 72 6B E6 01 98 ed is"...ourk...
024CB0: 00 39 00 A0 00 A9 20 19 0A 2C 0D 00 00 6D F0 F4 .9.... ..,...m..
024CC0: 14 01 A1 20 0D 00 00 6F 75 72 6B E6 20 FA 20 10 ... ...ourk. . .
024CD0: F8 0D 00 00 6D F0 20 EB 20 BF 22 4F 6E 20 22 20 ....m. . ."On "
024CE0: 01 97 20 BF 22 4F 66 66 22 00 06 00 AA 00 C9 00 .. ."Off".......
024CF0: 1C 00 E8 03 0D 00 00 6B F0 EF 0E 01 0D 00 00 6D .......k.......m
024D00: E4 EF 0F 01 0D 00 00 6D FA EF 0E 00 18 00 E9 03 .......m........
024D10: D6 20 28 0D 00 00 6B F0 20 FA 20 0D 00 00 6B E6 . (...k. . ...k.
024D20: 29 EF 0E 00 22 00 EA 03 D6 20 28 10 F8 0D 00 00 )...".... (.....
024D30: 6D F0 20 FA 20 0D 00 00 6D E6 29 EE 0E 20 FC 20 m. . ...m.).. .
024D40: 0D 00 00 6D FA 00 3C 00 EB 03 0D 00 00 6D FA EF ...m..<......m..
024D50: 0E 01 9F 20 1E F2 03 01 0D 00 00 6D F0 EF 28 0D ... .......m..(.
024D60: 00 00 6D F0 F4 0D 00 00 6D 63 E8 F4 0D 00 00 6D ..m.....mc.....m
024D70: E4 29 20 FB 20 0D 00 00 6D 63 E8 01 9F 20 1E F2 .) . ...mc... ..
024D80: 03 00 06 00 EC 03 D5 00 35 00 ED 03 0D 00 00 6D ........5......m
024D90: E4 EF 28 FF 0A 28 0D 00 00 75 F0 29 EE F5 0F 29 ..(..(...u.)...)
024DA0: F5 28 FF 0A 28 0D 00 00 64 6F F7 29 EE F5 0F 29 .(..(...do.)...)
024DB0: 01 0D 00 00 6D FA EF 0D 00 00 6D E4 00 3C 00 EE ....m.....m..<..
024DC0: 03 0D 00 00 6B F0 EF F5 28 FF 0A 28 0D 00 00 6C ....k...(..(...l
024DD0: E5 29 EE F5 0F 29 F5 10 F6 28 FF 0A 28 0D 00 00 .)...)...(..(...
024DE0: 72 E9 29 EE F5 0F 29 F5 12 F6 28 FF 0A 28 0D 00 r.)...)...(..(..
024DF0: 00 66 E9 29 EE F5 0F 29 00 06 00 EF 03 D5 00 0E .f.)...)........
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 C1 02 00 00 00 02 ......N.........
024E20: 1F 00 C6 02 00 00 00 02 1F 00 C2 02 00 00 00 02 ................
024E30: 1F 00 C7 02 00 00 00 02 1F 00 C3 02 00 00 00 02 ................
024E40: 1F 00 C8 02 00 00 00 02 1F 00 C4 02 00 00 00 02 ................
024E50: 1F 00 C9 02 00 00 00 02 1F 00 C5 02 00 00 00 02 ................
024E60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024E70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024E80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024E90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024ED0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024EF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
024F00: 5A 00 9E 20 0D 00 00 6D F0 EF 0E 20 EC 20 0D 00 Z.. ...m... . ..
024F10: 00 6D 63 E8 F5 0F 00 35 00 64 00 A1 20 0D 00 00 .mc....5.d.. ...
024F20: 6D E6 20 FA 20 10 F8 0D 00 00 6D F0 20 EB 20 A9 m. . .....m. . .
024F30: 20 19 1E 2C 10 F6 0D 00 00 6D F0 F4 14 01 BF 22 ..,.....m....."
024F40: 28 6E 6F 20 73 74 6F 63 6B 29 22 00 06 00 6E 00 (no stock)"...n.
024F50: B0 00 14 00 78 00 0D 00 00 6D F0 EF 0E 01 0D 00 ....x....m......
024F60: 00 6B F0 EF 0E 00 0A 00 82 00 9F 20 1E F2 03 00 .k......... ....
024F70: 0E 00 8C 00 D6 20 0D 00 00 6B F0 F2 12 00 5E 00 ..... ...k....^.
024F80: 96 00 0D 00 00 6E 75 ED 28 0D 00 00 6D F0 29 EF .....nu.(...m.).
024F90: 0D 00 00 6E 75 ED 28 0D 00 00 6D F0 29 F4 28 28 ...nu.(...m.).((
024FA0: 28 0D 00 00 6B F0 20 FA 20 0F 29 EF 0F 29 F5 28 (...k. . .)..).(
024FB0: 28 0D 00 00 6B F0 20 FA 20 10 29 EF 10 29 29 F6 (...k. . .)..)).
024FC0: 28 0F F5 17 F6 28 28 0D 00 00 6B F0 20 FA 20 16 (....((...k. . .
024FD0: 29 EF 16 29 29 01 9F 20 1E D2 00 00 0A 00 A0 00 )..)).. ........
024FE0: 9F 20 1E E8 03 00 06 00 AA 00 D5 00 41 00 B4 00 . ..........A...
024FF0: 0D 00 00 6D 61 67 F3 EF 0E 01 9E 20 0D 00 00 F8 ...mag..... ....
025000: EF 0E 20 EC 20 0D 00 00 6D 63 E8 F5 0F 01 0D 00 .. . ...mc......
025010: 00 6D 61 67 F3 EF 0D 00 00 6D 61 67 F3 F4 0D 00 .mag.....mag....
025020: 00 6E 75 ED 28 0D 00 00 F8 29 01 B0 00 28 00 BE .nu.(....)...(..
025030: 00 A9 20 0F 2C 19 16 01 BF 22 54 68 61 6E 6B 20 .. .,...."Thank
025040: 79 6F 75 20 66 6F 72 20 79 6F 75 72 20 6F 72 64 you for your ord
025050: 65 72 2E 22 00 3C 00 C8 00 BF 22 50 6C 65 61 73 er.".<...."Pleas
025060: 65 20 73 65 6E 64 20 61 20 63 68 65 71 75 65 20 e send a cheque
025070: 66 6F 72 20 A3 22 3B ED 22 23 23 2E 23 23 22 3B for £";."##.##";
025080: 1F 00 00 00 00 80 F6 0D 00 00 6D 61 67 F3 01 98 ..........mag...
025090: 00 25 00 D2 00 A9 20 19 1B 2C 14 F4 0D 00 00 6D .%.... ..,.....m
0250A0: F0 F6 10 01 BF 20 0D 00 00 6E 75 ED 28 0D 00 00 ..... ...nu.(...
0250B0: 6D F0 29 01 C9 00 1C 00 E8 03 0D 00 00 6B F0 EF m.)..........k..
0250C0: 0E 01 0D 00 00 6D E4 EF 0F 01 0D 00 00 6D FA EF .....m.......m..
0250D0: 0E 00 18 00 E9 03 D6 20 28 0D 00 00 6B F0 20 FA ....... (...k. .
0250E0: 20 0D 00 00 6B E6 29 EF 0E 00 22 00 EA 03 D6 20 ...k.)..."....
0250F0: 28 10 F8 0D 00 00 6D F0 20 FA 20 0D 00 00 6D E6 (.....m. . ...m.
025100: 00 50 45 4C 4D 41 4E 20 20 42 41 53 00 00 00 00 .PELMAN BAS....
025110: 00 00 00 00 00 70 01 00 75 0B 00 00 00 00 00 00 .....p..u.......
025120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
025130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
025140: 75 0B 00 44 04 29 FF 03 28 0F 29 FF 03 28 19 C5 u..D.)..(.)..(..
025150: 29 FF 03 28 19 C7 29 FF 03 28 19 16 29 FF 03 28 )..(..)..(..)..(
025160: 0E 29 00 06 00 9E 11 C9 00 49 00 A8 11 A1 20 0D .).......I.... .
025170: 00 00 72 6F F7 F2 0D 00 00 72 B1 20 FC 20 0D 00 ..ro.....r. . ..
025180: 44 00 05 00 C5 20 50 65 6C 6D 61 6E 69 73 6D 20 D.... Pelmanism
025190: 76 2E 32 2E 30 20 28 53 69 6D 70 6C 65 20 76 65 v.2.0 (Simple ve
0251A0: 72 73 69 6F 6E 29 2C 20 44 65 63 20 31 39 39 37 rsion), Dec 1997
0251B0: 20 62 79 20 48 69 6C 61 72 79 20 50 68 69 6C 6C by Hilary Phill
0251C0: 69 70 73 00 27 00 0A 00 CF 20 80 20 19 FF 01 CF ips.'.... . ....
0251D0: 20 19 FF 2C 19 4C 2C 19 D2 2C 19 52 2C 19 52 2C ..,.L,..,.R,.R,
0251E0: 19 52 2C 19 52 2C 19 4C 2C 0E 00 34 00 1E 00 93 .R,.R,.L,..4....
0251F0: 20 0D 00 00 70 61 63 EB 28 19 34 29 01 93 20 0D ...pac.(.4).. .
025200: 00 00 E3 28 15 2C 14 29 01 93 20 03 00 00 70 EC ...(.,.).. ...p.
025210: 28 14 29 01 93 20 0D 00 00 70 F7 28 14 29 00 25 (.).. ...p.(.).%
025220: 00 28 00 03 00 00 63 61 72 E4 EF 22 41 32 33 34 .(....car.."A234
025230: 35 36 37 38 39 22 F4 FF 03 28 19 FF 29 F4 22 4A 56789"...(..)."J
025240: 51 4B 22 00 33 00 32 00 9E 20 0D 00 00 EE EF 0F QK".3.2.. ......
025250: 20 EC 20 19 34 01 0D 00 00 70 61 63 EB 28 0D 00 . .4....pac.(..
025260: 00 EE 29 EF 0D 00 00 EE F4 28 0D 00 00 EE F5 0F ..)......(......
025270: 29 F9 19 0D 01 B0 00 27 00 46 00 A2 20 0E 2C 0E )......'.F.. .,.
025280: 01 A2 20 0F 2C 14 01 A2 20 10 2C 19 1A 01 A2 20 .. .,... .,....
025290: 11 2C 17 01 AD 20 0F 01 BA 20 11 01 8A 00 23 00 .,... ... ....#.
0252A0: 50 00 D8 23 0F 2C 0F 2C 19 28 2C 19 18 2C 19 19 P..#.,.,.(,..,..
0252B0: 01 BA 23 0F 2C 11 01 BB 23 0F 2C 10 01 8A 23 0F ..#.,...#.,...#.
0252C0: 00 0A 00 64 00 9F 20 1E E8 03 00 6B 00 6E 00 A9 ...d.. ....k.n..
0252D0: 23 0F 2C 0F 2C 0F 01 BF 23 0F 2C 22 45 6E 74 65 #.,.,...#.,"Ente
0252E0: 72 20 6E 75 6D 62 65 72 20 6F 66 20 70 6C 61 79 r number of play
0252F0: 65 72 73 20 28 31 2D 36 29 22 3B 01 0D 00 00 6E ers (1-6)";....n
025300: 29 EE 0E 20 FC 20 0D 00 00 6D FA 00 3C 00 EB 03 ).. . ...m..<...
025310: 0D 00 00 6D FA EF 0E 01 9F 20 1E F2 03 01 0D 00 ...m..... ......
025320: 00 6D F0 EF 28 0D 00 00 6D F0 F4 0D 00 00 6D 63 .m..(...m.....mc
025330: E8 F4 0D 00 00 6D E4 29 20 FB 20 0D 00 00 6D 63 .....m.) . ...mc
025340: E8 01 9F 20 1E F2 03 00 06 00 EC 03 D5 00 35 00 ... ..........5.
025350: ED 03 0D 00 00 6D E4 EF 28 FF 0A 28 0D 00 00 75 .....m..(..(...u
025360: F0 29 EE F5 0F 29 F5 28 FF 0A 28 0D 00 00 64 6F .)...).(..(...do
025370: F7 29 EE F5 0F 29 01 0D 00 00 6D FA EF 0D 00 00 .)...)....m.....
025380: 6D E4 00 4D 00 EE 03 0D 00 00 6B F0 EF F5 28 FF m..M......k...(.
025390: 0A 28 0D 00 00 6C E5 29 EE F5 0F 29 F5 10 F6 28 .(...l.)...)...(
0253A0: FF 0A 28 0D 00 00 72 E9 29 EE F5 0F 29 F5 12 F6 ..(...r.)...)...
0253B0: 28 FF 0A 28 0D 00 00 66 E9 29 EE F5 0F 29 F5 16 (..(...f.)...)..
0253C0: F6 28 FF 0A 28 0D 00 00 73 E8 29 EE F5 0F 29 00 .(..(...s.)...).
0253D0: 06 00 EF 03 D5 00 0E 00 F0 03 D6 20 FF 43 F2 22 ........... .C."
0253E0: 22 01 D5 00 06 00 F1 03 C9 00 14 00 F2 03 BF 20 "..............
0253F0: FF 03 28 19 17 29 F4 FF 03 28 0F 29 3B 00 35 00 ..(..)...(.);.5.
025400: F3 03 AE 20 0D 00 00 6D F8 2C 0D 00 00 6D F9 F5 ... ...m.,...m..
025410: 0D 00 00 6D F0 F6 0D 00 00 6D 73 F0 F4 28 0D 00 ...m.....ms..(..
025420: 00 6D E4 EF F5 0F 29 F6 28 0D 00 00 6D 62 E8 F5 .m....).(...mb..
025430: 10 29 00 19 00 F4 03 9E 20 0D 00 00 6D E3 EF 0F .)...... ...m...
025440: 20 EC 20 0D 00 00 6D 62 E8 F7 10 00 31 00 F5 03 . ...mb....1...
025450: 95 20 0D 00 00 6D 62 EC 2C 0E 2C 0D 00 00 6D 63 . ...mb.,.,...mc
025460: 6F EC 01 AF 20 F5 0D 00 00 6D 62 EC 2C F5 10 F5 o... ....mb.,...
025470: 28 0D 00 00 6D E4 EF F5 0F 29 F6 12 00 1C 00 F6 (...m....)......
025480: 03 9E 20 0D 00 00 64 65 6C 61 F9 EF 0E 20 EC 20 .. ...dela... .
025490: 0D 00 00 6D 64 E5 01 B0 00 06 00 F7 03 B0 00 14 ...md...........
0254A0: 00 F8 03 BF 20 FF 03 28 19 17 29 F4 FF 03 28 0E .... ..(..)...(.
0254B0: 29 3B 00 06 00 F9 03 C9 00 00 00 1A 32 3A 6D 62 );..........2:mb
0254C0: 6C 3D 31 33 32 0D 0A 33 30 20 75 70 3D 30 3A 64 l=132..30 up=0:d
0254D0: 6F 77 3D 32 3A 6C 65 3D 38 3A 72 69 3D 31 3A 66 ow=2:le=8:ri=1:f
0254E0: 69 3D 34 37 3A 73 68 3D 32 31 3A 6B 66 3D 37 0D i=47:sh=21:kf=7.
0254F0: 0A 34 30 20 44 49 4D 20 6E 75 6D 28 6D 63 68 2D .40 DIM num(mch-
025500: 70 EC EF 0E 01 D6 20 0D 00 00 6E 70 EC F1 0F 20 p..... ...np...
025510: FC 20 0D 00 00 6E 70 EC EE 14 01 0D 00 00 6E 70 . ...np.......np
025520: EC EF FF 1D 28 FF 43 29 01 D5 01 BF 23 0F 2C 0D ....(.C)....#.,.
025530: 00 00 6E 70 EC 00 6D 00 78 00 9E 20 0D 00 00 EE ..np..m.x.. ....
025540: EF 0F 20 EC 20 0D 00 00 6E 70 EC 01 A9 23 0F 2C .. . ...np...#.,
025550: 0F 2C 0F 01 BF 23 0F 2C 22 50 6C 61 79 65 72 22 .,...#.,"Player"
025560: 3B 0D 00 00 EE 3B 22 65 6E 74 65 72 20 79 6F 75 ;....;"enter you
025570: 72 20 6E 61 6D 65 3A 22 3B FF 03 28 19 14 29 01 r name:";..(..).
025580: A6 20 A3 23 0F 2C 03 00 00 E1 01 03 00 00 70 EC . £#.,........p.
025590: 28 0D 00 00 EE 29 EF FF 75 28 03 00 00 E1 2C 19 (....)..u(....,.
0255A0: 10 29 00 2A 00 82 00 A9 20 19 19 2C 0D 00 00 EE .).*.... ..,....
0255B0: F6 11 F5 10 01 BA 20 11 01 BB 20 10 01 BF 20 03 ...... ... ... .
0255C0: 00 00 70 EC 28 0D 00 00 EE 29 01 B0 00 2B 00 8C ..p.(....)...+..
0255D0: 00 9E 20 0D 00 00 EE EF 0F 20 EC 20 14 01 0D 00 .. ...... . ....
0255E0: 00 70 F7 28 0D 00 00 EE 29 EF 0E 01 B0 01 0D 00 .p.(....).......
0255F0: 00 74 75 72 EE EF 0F 00 47 00 96 00 D6 20 0D 00 .tur....G.... ..
025600: 00 70 F7 28 0F 29 F4 0D 00 00 70 F7 28 10 29 F4 .p.(.)....p.(.).
025610: 0D 00 00 70 F7 28 11 29 F4 0D 00 00 70 F7 28 12 ...p.(.)....p.(.
025620: 29 F4 0D 00 00 70 F7 28 13 29 F4 0D 00 00 70 F7 )....p.(.)....p.
025630: 28 14 29 F1 19 1A 01 9F 20 1E D0 07 01 D5 00 81 (.)..... .......
025640: 00 C8 00 03 00 00 77 69 EE EF 22 22 01 9E 20 0D ......wi.."".. .
025650: 00 00 EE EF 0F 20 EC 20 0D 00 00 6E 70 EC 01 A1 ..... . ...np...
025660: 20 0D 00 00 70 F7 28 0D 00 00 EE 29 EF FF 76 28 ...p.(....)..v(
025670: 0D 00 00 70 F7 28 0F 29 2C 0D 00 00 70 F7 28 10 ...p.(.),...p.(.
025680: 29 2C 0D 00 00 70 F7 28 11 29 2C 0D 00 00 70 F7 ),...p.(.),...p.
025690: 28 12 29 2C 0D 00 00 70 F7 28 13 29 2C 0D 00 00 (.),...p.(.),...
0256A0: 70 F7 28 14 29 29 20 EB 20 03 00 00 77 69 EE EF p.(.)) . ...wi..
0256B0: 03 00 00 77 69 EE F4 FF 03 28 0D 00 00 EE 29 00 ...wi....(....).
0256C0: 23 00 D2 00 B0 01 A9 20 0F 2C 17 01 BA 20 11 01 #...... .,... ..
0256D0: BB 20 10 01 BF 22 54 68 65 20 77 69 6E 6E 65 72 . ..."The winner
0256E0: 22 3B 00 76 00 DC 00 A1 20 FF 0E 28 03 00 00 77 ";.v.... ..(...w
0256F0: 69 EE 29 EF 0F 20 EB 20 BF 22 20 69 73 20 22 3B i.).. . ." is ";
025700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0257A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0257B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0257C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0257D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0257E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0257F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0258A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0258B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0258C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0258D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0258E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
0258F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
025900: 03 00 00 70 EC 28 FF 01 28 03 00 00 77 69 EE 29 ...p.(..(...wi.)
025910: 29 3B 22 2E 22 20 01 97 20 BF 22 73 20 61 72 65 );"." .. ."s are
025920: 3A 22 01 9E 20 0D 00 00 EE EF 0F 20 EC 20 FF 0E :".. ...... . ..
025930: 28 03 00 00 77 69 EE 29 01 BF 20 03 00 00 70 EC (...wi.).. ...p.
025940: 28 FF 01 28 AC 28 03 00 00 77 69 EE 2C 0D 00 00 (..(.(...wi.,...
025950: EE 2C 0F 29 29 29 01 B0 00 67 00 E6 00 A9 23 0F .,.)))...g....#.
025960: 2C 0F 2C 0F 01 BF 23 0F 2C 22 50 72 65 73 73 20 ,.,...#.,"Press
025970: 50 20 74 6F 20 70 6C 61 79 20 61 67 61 69 6E 2C P to play again,
025980: 20 51 20 74 6F 20 71 75 69 74 22 3B FF 03 28 19 Q to quit";..(.
025990: 14 29 3B 01 03 00 00 E1 EF 22 22 01 D6 20 03 00 .);......"".. ..
0259A0: 00 E1 F1 22 50 22 20 FC 20 03 00 00 E1 EE 22 51 ..."P" . ....."Q
0259B0: 22 01 03 00 00 E1 EF FF 1C 28 FF 43 29 01 D5 00 "........(.C)...
0259C0: 15 00 F0 00 A1 20 03 00 00 E1 EF 22 50 22 20 A0 ..... ....."P" .
0259D0: 20 1E 32 00 00 16 00 FA 00 83 20 1C 02 BC 01 83 .2....... .....
0259E0: 20 1C 4E BB 01 AD 20 0F 01 98 00 2D 00 E8 03 A9 .N... ....-....
0259F0: 23 0F 2C 19 0A 2C 0F 01 BF 23 0F 2C FF 03 28 19 #.,..,...#.,..(.
025A00: 11 29 3B 22 44 65 61 6C 69 6E 67 2E 2E 2E 22 3B .);"Dealing...";
025A10: FF 03 28 19 14 29 3B 00 9A 00 F2 03 0D 00 00 EE ..(..);.........
025A20: EF 19 34 01 9E 20 0D 00 00 72 6F F7 EF 0E 20 EC ..4.. ...ro... .
025A30: 20 14 01 9E 20 0D 00 00 63 6F EC EF 0E 20 EC 20 ... ...co... .
025A40: 14 01 0D 00 00 63 64 65 EC EF FF 0C 28 FF 45 F6 .....cde....(.E.
025A50: 0D 00 00 EE F4 0F 29 01 0D 00 00 E3 28 0D 00 00 ......).....(...
025A60: 72 6F F7 2C 0D 00 00 63 6F EC 29 EF 0D 00 00 70 ro.,...co.)....p
025A70: 61 63 EB 28 0D 00 00 63 64 65 EC 29 01 0D 00 00 ac.(...cde.)....
025A80: 70 61 63 EB 28 0D 00 00 63 64 65 EC 29 EF 0D 00 pac.(...cde.)...
025A90: 00 70 61 63 EB 28 0D 00 00 EE 29 01 9F 20 1E AC .pac.(....).. ..
025AA0: 0D 01 0D 00 00 EE EF 0D 00 00 EE F5 0F 01 B0 01 ................
025AB0: B0 00 86 00 FC 03 9E 20 0D 00 00 63 6F EC EF 0E ....... ...co...
025AC0: 20 EC 20 10 01 0D 00 00 63 64 65 EC EF FF 0C 28 . .....cde....(
025AD0: FF 45 28 0F 29 F6 0D 00 00 EE F4 0F 29 01 0D 00 .E(.).......)...
025AE0: 00 E3 28 0D 00 00 72 6F F7 2C 0D 00 00 63 6F EC ..(...ro.,...co.
025AF0: 29 EF 0D 00 00 70 61 63 EB 28 0D 00 00 63 64 65 )....pac.(...cde
025B00: 31 30 30 30 20 6B 70 3D 30 3A 6D 64 3D 31 3A 6D 1000 kp=0:md=1:m
025B10: 7A 3D 30 0D 0A 31 30 30 31 20 57 48 49 4C 45 20 z=0..1001 WHILE
025B20: 28 6B 70 20 41 4E 44 20 6B 66 29 3D 30 0D 0A 31 (kp AND kf)=0..1
025B30: 30 30 32 20 57 48 49 4C 45 20 28 32 5E 6D 70 20 002 WHILE (2^mp
025B40: 41 4E 44 20 6D 66 29 3E 30 20 4F 52 20 6D 7A 0D AND mf)>0 OR mz.
025B50: 0A 31 30 30 33 20 6D 7A 3D 30 3A 47 4F 53 55 42 .1003 mz=0:GOSUB
025B60: 20 31 30 31 30 3A 6D 70 3D 28 6D 70 2B 6D 63 68 1010:mp=(mp+mch
025B70: 2B 6D 64 29 20 4D 4F 44 20 6D 63 68 3A 47 4F 53 +md) MOD mch:GOS
025B80: 55 42 20 31 30 31 30 0D 0A 31 30 30 34 20 57 45 UB 1010..1004 WE
025B90: 4E 44 0D 0A 31 30 30 35 20 6D 64 3D 28 49 4E 4B ND..1005 md=(INK
025BA0: 45 59 28 75 70 29 3E 2D 31 29 2D 28 49 4E 4B 45 EY(up)>-1)-(INKE
025BB0: 59 28 64 6F 77 29 3E 2D 31 29 3A 6D 7A 3D 6D 64 Y(dow)>-1):mz=md
025BC0: 0D 0A 31 30 30 36 20 6B 70 3D 2D 28 49 4E 4B 45 ..1006 kp=-(INKE
025BD0: 59 28 6C 65 29 3E 2D 31 29 2D 32 2A 28 49 4E 4B Y(le)>-1)-2*(INK
025BE0: 45 59 28 72 69 29 3E 2D 31 29 2D 34 2A 28 49 4E EY(ri)>-1)-4*(IN
025BF0: 4B 45 59 28 66 69 29 3E 2D 31 29 0D 0A 31 30 30 KEY(fi)>-1)..100
025C00: 37 20 57 45 4E 44 0D 0A 31 30 30 38 20 57 48 49 7 WEND..1008 WHI
025C10: 4C 45 20 49 4E 4B 45 59 24 3C 3E 22 22 3A 57 45 LE INKEY$<>"":WE
025C20: 4E 44 0D 0A 31 30 30 39 20 52 45 54 55 52 4E 0D ND..1009 RETURN.
025C30: 0A 31 30 31 30 20 50 52 49 4E 54 20 43 48 52 24 .1010 PRINT CHR$
025C40: 28 32 33 29 2B 43 48 52 24 28 31 29 3B 0D 0A 31 (23)+CHR$(1);..1
025C50: 30 31 31 20 4D 4F 56 45 20 6D 78 2C 6D 79 2D 6D 011 MOVE mx,my-m
025C60: 70 2A 6D 73 70 2B 28 6D 64 3D 2D 31 29 2A 28 6D p*msp+(md=-1)*(m
025C70: 62 68 2D 32 29 0D 0A 31 30 31 32 20 46 4F 52 20 bh-2)..1012 FOR
025C80: 6D 63 3D 31 20 54 4F 20 6D 62 68 2F 32 0D 0A 31 mc=1 TO mbh/2..1
025C90: 30 31 33 20 44 52 41 57 52 20 6D 62 6C 2C 30 2C 013 DRAWR mbl,0,
025CA0: 6D 63 6F 6C 3A 4D 4F 56 45 52 20 2D 6D 62 6C 2C mcol:MOVER -mbl,
025CB0: 2D 32 2D 28 6D 64 3D 2D 31 29 2A 34 0D 0A 31 30 -2-(md=-1)*4..10
025CC0: 31 34 20 46 4F 52 20 64 65 6C 61 79 3D 30 20 54 14 FOR delay=0 T
025CD0: 4F 20 6D 64 65 3A 4E 45 58 54 0D 0A 31 30 31 35 O mde:NEXT..1015
025CE0: 20 4E 45 58 54 0D 0A 31 30 31 36 20 50 52 49 4E NEXT..1016 PRIN
025CF0: 54 20 43 48 52 24 28 32 33 29 2B 43 48 52 24 28 T CHR$(23)+CHR$(
025D00: EC 29 01 0D 00 00 70 61 63 EB 28 0D 00 00 63 64 .)....pac.(...cd
025D10: 65 EC 29 EF 0D 00 00 70 61 63 EB 28 0D 00 00 EE e.)....pac.(....
025D20: 29 01 9F 20 1E AC 0D 01 0D 00 00 EE EF 0D 00 00 ).. ............
025D30: EE F5 0F 01 B0 01 C9 00 2E 00 D0 07 0D 00 00 72 ...............r
025D40: 6F F7 EF 0E 01 0D 00 00 63 6F EC EF 0E 01 0D 00 o.......co......
025D50: 00 72 B1 EF F5 0F 01 0D 00 00 63 B1 EF F5 0F 01 .r........c.....
025D60: 9F 20 1E 94 11 00 47 00 DA 07 03 00 00 6D 75 E4 . ....G......mu.
025D70: EF 22 22 01 9F 20 1E C4 09 01 9F 20 1E B8 0B 01 ."".. ..... ....
025D80: 0D 00 00 72 B1 EF 0D 00 00 72 6F F7 01 0D 00 00 ...r.....ro.....
025D90: 63 B1 EF 0D 00 00 63 6F EC 01 0D 00 00 63 61 72 c.....co.....car
025DA0: 64 73 65 EC EF 0D 00 00 63 61 72 E4 00 1A 00 E4 dse.....car.....
025DB0: 07 03 00 00 6D 75 E4 EF 22 6E 6F 74 68 65 72 22 ....mu.."nother"
025DC0: 01 9F 20 1E C4 09 00 31 00 EE 07 A1 20 0D 00 00 .. ....1.... ...
025DD0: 72 6F F7 F2 0D 00 00 72 B1 20 FC 20 0D 00 00 63 ro.....r. . ...c
025DE0: 6F EC F2 0D 00 00 63 B1 20 EB 20 9F 20 1E B8 0B o.....c. . . ...
025DF0: 20 01 97 20 1E E4 07 00 26 00 F8 07 A1 20 0D 00 .. ....&.... ..
025E00: 00 63 61 72 E4 EF 0D 00 00 63 61 72 64 73 65 EC .car.....cardse.
025E10: 20 EB 20 1E 34 08 20 01 97 20 1E 98 08 00 58 00 . .4. .. ....X.
025E20: 34 08 A9 23 0F 2C 0F 2C 0F 01 BF 23 0F 2C 22 54 4..#.,.,...#.,"T
025E30: 68 65 79 20 6D 61 74 63 68 21 20 57 65 6C 6C 20 hey match! Well
025E40: 64 6F 6E 65 20 22 3B 03 00 00 70 EC 28 0D 00 00 done ";...p.(...
025E50: 74 75 72 EE 29 3B 22 2E 22 3B FF 03 28 19 14 29 tur.);".";..(..)
025E60: 01 9E 20 0D 00 00 64 65 6C 61 F9 EF 0F 20 EC 20 .. ...dela... .
025E70: 1A F4 01 01 B0 00 56 00 3E 08 9F 20 1E A0 0F 01 ......V.>.. ....
025E80: 0D 00 00 E3 28 0D 00 00 72 6F F7 2C 0D 00 00 63 ....(...ro.,...c
025E90: 6F EC 29 EF 0E 01 0D 00 00 72 6F F7 EF 0D 00 00 o.)......ro.....
025EA0: 72 B1 01 0D 00 00 63 6F EC EF 0D 00 00 63 B1 01 r.....co.....c..
025EB0: 0D 00 00 E3 28 0D 00 00 72 6F F7 2C 0D 00 00 63 ....(...ro.,...c
025EC0: 6F EC 29 EF 0E 01 9F 20 1E A0 0F 00 50 00 48 08 o.).... ....P.H.
025ED0: 0D 00 00 70 F7 28 0D 00 00 74 75 72 EE 29 EF 0D ...p.(...tur.)..
025EE0: 00 00 70 F7 28 0D 00 00 74 75 72 EE 29 F4 0F 01 ..p.(...tur.)...
025EF0: A9 20 19 1B 2C 0D 00 00 74 75 72 EE F6 11 F5 0F . ..,...tur.....
025F00: 30 29 3B 0D 0A 31 30 31 37 20 52 45 54 55 52 4E 0);..1017 RETURN
025F10: 0D 0A 1A 00 00 72 01 00 C8 25 00 00 00 00 00 00 .....r...%......
025F20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
025F30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
025F40: C8 25 00 F1 04 61 79 3D 30 20 54 4F 20 6D 64 65 .%...ay=0 TO mde
025F50: 3A 4E 45 58 54 0D 0A 31 30 31 35 20 4E 45 58 54 :NEXT..1015 NEXT
025F60: 0D 0A 31 30 31 36 20 50 52 49 4E 54 20 43 48 52 ..1016 PRINT CHR
025F70: 24 28 32 33 29 2B 43 48 52 24 28 30 29 3B 0D 0A $(23)+CHR$(0);..
025F80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
025F90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
025FA0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
025FB0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
025FC0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
025FD0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
025FE0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
025FF0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0260A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0260B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0260C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0260D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0260E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0260F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
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 C8 02 00 00 00 02 .....N. .......
026120: 20 00 C4 02 00 00 00 02 20 00 C9 02 00 00 00 02 ....... .......
026130: 20 00 C5 02 00 00 00 02 20 00 C1 02 00 00 00 02 ....... .......
026140: 20 00 C6 02 00 00 00 02 20 00 C2 02 00 00 00 02 ....... .......
026150: 20 00 C7 02 00 00 00 02 20 00 C3 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: CD CE 91 CD FE 91 CD 12 91 B7 C0 37 C9 3E 45 CD ...........7.>E.
026210: 97 91 CD E6 91 18 EC CD B8 91 7B CD B8 91 16 04 ..........{.....
026220: DD 7E 00 CD B8 91 DD 23 15 20 F5 DD 7E FE CD B8 .~.....#. ..~...
026230: 91 3E 11 CD B8 91 3E FF F3 01 7E FB F5 ED 78 87 .>....>...~...x.
026240: 30 FB FA BD 91 F1 0C ED 79 06 07 10 FE C9 F3 01 0.......y.......
026250: 7E FB C3 DB 91 0C ED 78 77 23 0D ED 78 F2 DB 91 ~......xw#..x...
026260: E6 20 C2 D5 91 C9 F3 01 7E FB C3 F3 91 0C 7E ED . ......~.....~.
026270: 79 23 0D ED 78 F2 F3 91 E6 20 C2 ED 91 C9 21 DA y#..x.... ....!.
026280: 92 F3 01 7E FB ED 78 FE C0 38 FA 0C ED 78 77 23 ...~..x..8...xw#
026290: 0D 3E 05 00 3D 20 FC ED 78 E6 10 20 E8 FB C9 F5 .>..= ..x.. ....
0262A0: 3E FF DF 2D 90 F1 21 DA 92 06 07 36 00 23 10 FB >..-..!....6.#..
0262B0: DD 6E 00 DD 23 DD 66 00 DD 23 22 D8 92 23 36 00 .n..#.f..#"..#6.
0262C0: 3D C9 C1 32 D2 92 AF DF 2D 90 3A D2 92 2A D8 92 =..2....-.:..*..
0262D0: 77 C9 23 10 FD 0D 20 38 3E 0C 32 E2 92 3E 42 C3 w.#... 8>.2..>B.
0262E0: 43 92 7B 32 D1 92 11 E5 92 06 0C C5 3E 4A CD B8 C.{2........>J..
0262F0: 91 3A D1 92 CD B8 91 CD FE 91 CD 12 91 C2 42 92 .:............B.
026300: 21 DD 92 01 04 00 ED B0 C1 10 E0 0E 0B 21 E9 92 !............!..
026310: 06 04 11 E5 92 1A BE 20 B9 13 23 10 F8 3E 0C 91 ....... ..#..>..
026320: 32 E2 92 AF C3 43 92 CD 45 91 B7 C2 42 92 3E 4D 2....C..E...B.>M
026330: CD B8 91 7B CD B8 91 21 E1 92 16 04 7E CD B8 91 ...{...!....~...
026340: 23 15 20 F8 CD E6 91 CD FE 91 CD 12 91 C8 C3 42 #. ............B
026350: 92 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026360: 00 02 00 00 E5 00 00 00 00 00 00 00 00 00 00 00 ................
026370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0263A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0263B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0263C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0263D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0263E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
0263F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
026400: 54 68 65 72 65 20 69 73 20 6E 6F 20 70 6F 69 6E There is no poin
026410: 74 20 75 73 69 6E 67 20 74 68 69 73 20 70 72 6F t using this pro
026420: 67 72 61 6D 20 69 66 20 79 6F 75 20 68 61 76 65 gram if you have
026430: 20 61 20 73 69 64 65 20 73 77 69 74 63 68 20 66 a side switch f
026440: 69 74 74 65 64 2E 22 00 62 00 46 00 BF 01 BF 22 itted.".b.F...."
026450: 57 41 52 4E 49 4E 47 3A 20 2D 20 74 68 65 20 63 WARNING: - the c
026460: 6F 6E 74 65 6E 74 73 20 6F 66 20 74 68 65 20 64 ontents of the d
026470: 69 73 63 20 69 6E 20 64 72 69 76 65 20 41 20 77 isc in drive A w
026480: 69 6C 6C 20 62 65 20 6F 76 65 72 77 72 69 74 74 ill be overwritt
026490: 65 6E 20 62 79 20 74 68 69 73 20 20 20 20 20 20 en by this
0264A0: 70 72 6F 67 72 61 6D 2E 22 00 51 00 50 00 BF 01 program.".Q.P...
0264B0: BF 22 54 68 69 73 20 70 72 6F 67 72 61 6D 20 6D ."This program m
0264C0: 61 79 20 62 65 20 66 72 65 65 6C 79 20 64 69 73 ay be freely dis
0264D0: 74 72 69 62 75 74 65 64 20 70 72 6F 76 69 64 65 tributed provide
0264E0: 64 20 74 68 61 74 20 69 74 20 69 73 20 6E 6F 74 d that it is not
0264F0: 20 61 6C 74 65 72 65 64 2E 22 00 08 00 5A 00 BF altered."...Z..
026500: 01 BF 00 68 00 64 00 BF 22 50 75 74 20 64 69 73 ...h.d.."Put dis
026510: 63 20 74 6F 20 63 6F 70 79 20 66 72 6F 6D 20 69 c to copy from i
026520: 6E 20 64 72 69 76 65 20 42 2E 22 01 BF 22 50 75 n drive B.".."Pu
026530: 74 20 64 69 73 63 20 74 6F 20 63 6F 70 79 20 74 t disc to copy t
026540: 6F 20 69 6E 20 64 72 69 76 65 20 41 2E 22 01 BF o in drive A."..
026550: 22 50 72 65 73 73 20 61 6E 79 20 6B 65 79 20 74 "Press any key t
026560: 6F 20 63 6F 70 79 2E 2E 2E 22 00 18 00 6E 00 D6 o copy..."...n..
026570: 20 FF 43 F2 22 22 01 D5 01 D6 20 FF 43 EF 22 22 .C."".... .C.""
026580: 01 D5 00 23 00 78 00 BF 01 7C 00 42 43 4F 50 D9 ...#.x...|.BCOP.
026590: 2C 40 02 00 00 74 72 61 63 EB 2C 40 02 00 00 65 ,@...trac.,@...e
0265A0: F2 01 BF 01 BF 00 57 00 82 00 A1 20 02 00 00 65 ......W.... ...e
0265B0: F2 EE 0E 20 EB 20 BF 22 45 72 72 6F 72 22 02 00 ... . ."Error"..
0265C0: 00 65 F2 22 77 68 65 6E 20 63 6F 70 79 69 6E 67 .e."when copying
0265D0: 20 74 72 61 63 6B 22 02 00 00 74 72 61 63 EB 01 track"...trac..
0265E0: 9F 20 1E C8 00 20 01 97 20 BF 22 43 6F 70 79 69 . ... .. ."Copyi
0265F0: 6E 67 20 63 6F 6D 70 6C 65 74 65 22 00 0E 00 8C ng complete"....
026600: 23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61 #Programmers' Pa
026610: 74 63 68 20 31 30 20 2D 20 57 41 43 43 49 20 31 tch 10 - WACCI 1
026620: 31 39 2C 20 46 65 62 20 31 39 39 38 2C 20 70 2E 19, Feb 1998, p.
026630: 20 31 37 2D 31 38 0D 0A 20 20 20 50 52 4F 47 52 17-18.. PROGR
026640: 41 4D 4D 45 52 53 27 20 50 41 54 43 48 20 31 30 AMMERS' PATCH 10
026650: 0D 0A 20 20 20 42 79 20 4D 61 74 74 68 65 77 20 .. By Matthew
026660: 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A 20 20 20 54 Phillips.... T
026670: 68 69 73 20 6D 6F 6E 74 68 20 69 6E 20 50 72 6F his month in Pro
026680: 67 72 61 6D 6D 65 72 73 27 20 50 61 74 63 68 20 grammers' Patch
026690: 77 65 20 61 72 65 20 20 67 6F 69 6E 67 20 20 74 we are going t
0266A0: 6F 20 73 74 61 72 74 20 61 20 73 68 6F 72 74 20 o start a short
0266B0: 73 65 72 69 65 73 20 6F 6E 0D 0A 20 20 20 4D 49 series on.. MI
0266C0: 44 49 20 70 72 6F 67 72 61 6D 6D 69 6E 67 2E 20 DI programming.
0266D0: 20 41 6C 74 68 6F 75 67 68 20 74 68 65 72 65 20 Although there
0266E0: 68 61 76 65 20 62 65 65 6E 20 6D 61 6E 79 20 72 have been many r
0266F0: 65 76 69 65 77 73 20 6F 66 20 4D 49 44 49 20 65 eviews of MIDI e
026700: 71 75 69 70 6D 65 6E 74 0D 0A 20 20 20 66 6F 72 quipment.. for
026710: 20 74 68 65 20 41 6D 73 74 72 61 64 20 69 6E 20 the Amstrad in
026720: 6D 61 67 61 7A 69 6E 65 73 20 6F 76 65 72 20 74 magazines over t
026730: 68 65 20 79 65 61 72 73 2C 20 74 68 65 72 65 20 he years, there
026740: 68 61 73 20 62 65 65 6E 20 76 65 72 79 20 6C 69 has been very li
026750: 74 74 6C 65 20 6F 6E 0D 0A 20 20 20 68 6F 77 20 ttle on.. how
026760: 74 6F 20 70 72 6F 67 72 61 6D 20 79 6F 75 72 20 to program your
026770: 43 50 43 20 74 6F 20 20 63 6F 6E 74 72 6F 6C 20 CPC to control
026780: 20 4D 49 44 49 20 65 71 75 69 70 6D 65 6E 74 2E MIDI equipment.
026790: 20 20 54 68 69 73 20 6D 6F 6E 74 68 20 61 6C 73 This month als
0267A0: 6F 20 73 65 65 73 0D 0A 20 20 20 74 68 65 20 66 o sees.. the f
0267B0: 69 72 73 74 20 61 6E 6E 69 76 65 72 73 61 72 79 irst anniversary
0267C0: 20 6F 66 20 74 68 65 20 50 72 6F 67 72 61 6D 6D of the Programm
0267D0: 65 72 73 27 20 50 61 74 63 68 20 73 65 72 69 65 ers' Patch serie
0267E0: 73 2C 20 61 6E 64 20 69 66 20 74 68 65 20 72 65 s, and if the re
0267F0: 76 69 65 77 73 0D 0A 20 20 20 69 6E 20 6C 61 73 views.. in las
026800: 00 BF 01 BF 01 A0 20 1E 64 00 00 2B 00 C8 00 A1 ...... .d..+....
026810: 20 02 00 00 65 F2 20 FA 20 0F 20 EB 20 BF 22 4D ...e. . . . ."M
026820: 69 73 73 69 6E 67 20 61 64 64 72 65 73 73 20 6D issing address m
026830: 61 72 6B 2E 22 00 2E 00 D2 00 A1 20 02 00 00 65 ark."...... ...e
026840: F2 20 FA 20 10 20 EB 20 BF 22 44 69 73 63 20 69 . . . . ."Disc i
026850: 73 20 77 72 69 74 65 20 70 72 6F 74 65 63 74 65 s write protecte
026860: 64 2E 22 00 2D 00 DC 00 A1 20 02 00 00 65 F2 20 d.".-.... ...e.
026870: FA 20 12 20 EB 20 BF 22 43 61 6E 6E 6F 74 20 66 . . . ."Cannot f
026880: 69 6E 64 20 74 68 65 20 73 65 63 74 6F 72 2E 22 ind the sector."
026890: 00 36 00 E6 00 A1 20 02 00 00 65 F2 20 FA 20 16 .6.... ...e. . .
0268A0: 20 EB 20 BF 22 44 69 73 63 20 6D 69 73 73 69 6E . ."Disc missin
0268B0: 67 20 6F 72 20 64 72 69 76 65 20 6E 6F 74 20 72 g or drive not r
0268C0: 65 61 64 79 2E 22 00 25 00 F0 00 A1 20 02 00 00 eady.".%.... ...
0268D0: 65 F2 20 FA 20 19 10 20 EB 20 BF 22 4F 76 65 72 e. . .. . ."Over
0268E0: 72 75 6E 20 65 72 72 6F 72 2E 22 00 22 00 FA 00 run error."."...
0268F0: A1 20 02 00 00 65 F2 20 FA 20 19 20 20 EB 20 BF . ...e. . . . .
026900: 22 44 61 74 61 20 65 72 72 6F 72 2E 22 00 06 00 "Data error."...
026910: 04 01 C9 00 00 00 1A 69 64 65 2E 62 69 6E 22 2C .......ide.bin",
026920: 26 39 30 30 30 3A 67 70 62 75 66 66 25 3D 30 3A &9000:gpbuff%=0:
026930: 43 41 4C 4C 20 26 39 30 30 30 2C 40 67 70 62 75 CALL &9000,@gpbu
026940: 66 66 25 0D 0A 32 30 20 74 72 61 63 6B 25 3D 30 ff%..20 track%=0
026950: 3A 65 72 25 3D 30 0D 0A 33 30 20 4D 4F 44 45 20 :er%=0..30 MODE
026960: 32 0D 0A 34 30 20 50 52 49 4E 54 22 42 53 69 64 2..40 PRINT"BSid
026970: 65 20 76 20 31 2E 30 20 62 79 20 4D 61 74 74 68 e v 1.0 by Matth
026980: 01 D5 00 23 00 78 00 BF 01 7C 00 42 43 4F 50 D9 ...#.x...|.BCOP.
026990: 2C 40 02 00 00 74 72 61 63 EB 2C 40 02 00 00 65 ,@...trac.,@...e
0269A0: F2 01 BF 01 BF 00 57 00 82 00 A1 20 02 00 00 65 ......W.... ...e
0269B0: F2 EE 0E 20 EB 20 BF 22 45 72 72 6F 72 22 02 00 ... . ."Error"..
0269C0: 00 65 F2 22 77 68 65 6E 20 63 6F 70 79 69 6E 67 .e."when copying
0269D0: 20 74 72 61 63 6B 22 02 00 00 74 72 61 63 EB 01 track"...trac..
0269E0: 9F 20 1E C8 00 20 01 97 20 BF 22 43 6F 70 79 69 . ... .. ."Copyi
0269F0: 6E 67 20 63 6F 6D 70 6C 65 74 65 22 00 0E 00 8C ng complete"....
026A00: 01 BA 20 11 01 BB 20 10 01 BF 20 0D 00 00 70 F7 .. ... ... ...p.
026A10: 28 0D 00 00 74 75 72 EE 29 01 C9 00 40 00 98 08 (...tur.)...@...
026A20: A9 23 0F 2C 0F 2C 0F 01 BF 23 0F 2C 22 54 68 65 .#.,.,...#.,"The
026A30: 79 20 64 6F 6E 27 74 20 6D 61 74 63 68 21 22 3B y don't match!";
026A40: FF 03 28 19 14 29 01 9E 20 0D 00 00 64 65 6C 61 ..(..).. ...dela
026A50: F9 EF 0F 20 EC 20 1A 88 13 01 B0 00 49 00 A2 08 ... . ......I...
026A60: 9F 20 1E AC 0D 01 0D 00 00 72 6F F7 EF 0D 00 00 . .......ro.....
026A70: 72 B1 01 0D 00 00 63 6F EC EF 0D 00 00 63 B1 01 r.....co.....c..
026A80: 9F 20 1E AC 0D 01 0D 00 00 74 75 72 EE EF 28 0D . .......tur..(.
026A90: 00 00 74 75 72 EE 20 FB 20 0D 00 00 6E 70 EC 29 ..tur. . ...np.)
026AA0: F4 0F 01 C9 00 46 00 C4 09 A9 23 0F 2C 0F 2C 0F .....F....#.,.,.
026AB0: 01 BF 23 0F 2C 22 43 68 6F 6F 73 65 20 61 22 3B ..#.,"Choose a";
026AC0: 03 00 00 6D 75 E4 3B 22 20 63 61 72 64 2C 20 22 ...mu.;" card, "
026AD0: 3B 03 00 00 70 EC 28 0D 00 00 74 75 72 EE 29 3B ;...p.(...tur.);
026AE0: 22 2E 22 3B FF 03 28 19 14 29 00 4B 00 CE 09 03 ".";..(..).K....
026AF0: 00 00 6B F0 EF 22 22 01 D6 20 28 03 00 00 6B F0 ..k.."".. (...k.
026B00: F1 FF 03 28 19 F0 29 20 FC 20 03 00 00 6B F0 EE ...(..) . ...k..
026B10: FF 03 28 19 F3 29 29 20 FA 20 03 00 00 6B F0 F2 ..(..)) . ...k..
026B20: FF 03 28 19 0D 29 01 03 00 00 6B F0 EF FF 1C 28 ..(..)....k....(
026B30: FF 43 29 01 D5 00 2F 00 D8 09 A1 20 03 00 00 6B .C).../.... ...k
026B40: F0 EF FF 03 28 19 0D 29 20 FA 20 0D 00 00 E3 28 ....(..) . ....(
026B50: 0D 00 00 72 6F F7 2C 0D 00 00 63 6F EC 29 EE 0E ...ro.,...co.)..
026B60: 20 EB 20 C9 00 33 00 E2 09 9F 20 1E A8 11 01 A1 . ..3.... .....
026B70: 20 03 00 00 6B F0 EF FF 03 28 19 F0 29 20 EB 20 ...k....(..) .
026B80: 0D 00 00 72 6F F7 EF 28 0D 00 00 72 6F F7 F5 0F ...ro..(...ro...
026B90: F4 16 29 20 FB 20 16 00 2B 00 EC 09 A1 20 03 00 ..) . ..+.... ..
026BA0: 00 6B F0 EF FF 03 28 19 F1 29 20 EB 20 0D 00 00 .k....(..) . ...
026BB0: 72 6F F7 EF 28 0D 00 00 72 6F F7 F4 0F 29 20 FB ro..(...ro...) .
026BC0: 20 16 00 2D 00 F6 09 A1 20 03 00 00 6B F0 EF FF ..-.... ...k...
026BD0: 03 28 19 F2 29 20 EB 20 0D 00 00 63 6F EC EF 28 .(..) . ...co..(
026BE0: 0D 00 00 63 6F EC F5 0F F4 15 29 20 FB 20 15 00 ...co.....) . ..
026BF0: 2B 00 00 0A A1 20 03 00 00 6B F0 EF FF 03 28 19 +.... ...k....(.
026C00: 39 38 0D 0A 0D 0A 73 65 63 74 62 75 66 66 3D 30 98....sectbuff=0
026C10: 38 30 30 30 68 0D 0A 0D 0A 3B 69 6E 69 74 69 61 8000h....;initia
026C20: 6C 69 73 61 74 69 6F 6E 20 72 6F 75 74 69 6E 65 lisation routine
026C30: 20 74 6F 20 62 65 20 63 61 6C 6C 65 64 20 77 69 to be called wi
026C40: 74 68 20 43 41 4C 4C 20 26 39 30 30 30 0D 0A 41 th CALL &9000..A
026C50: 4F 52 47 20 30 39 30 30 30 68 0D 0A 0D 0A 3B 4C ORG 09000h....;L
026C60: 44 20 4C 2C 28 49 58 2B 30 29 0D 0A 3B 4C 44 20 D L,(IX+0)..;LD
026C70: 48 2C 28 49 58 2B 31 29 0D 0A 3B 4C 44 20 44 45 H,(IX+1)..;LD DE
026C80: 2C 67 70 62 75 66 66 0D 0A 3B 4C 44 20 28 48 4C ,gpbuff..;LD (HL
026C90: 29 2C 45 0D 0A 3B 49 4E 43 20 48 4C 0D 0A 3B 4C ),E..;INC HL..;L
026CA0: 44 20 28 48 4C 29 2C 44 0D 0A 0D 0A 4C 44 20 42 D (HL),D....LD B
026CB0: 43 2C 6A 75 6D 70 73 0D 0A 4C 44 20 48 4C 2C 77 C,jumps..LD HL,w
026CC0: 6F 72 6B 73 70 0D 0A 43 41 4C 4C 20 30 42 43 44 orksp..CALL 0BCD
026CD0: 31 68 0D 0A 3B 66 69 6E 64 20 66 61 72 20 61 64 1h..;find far ad
026CE0: 64 72 65 73 73 65 73 0D 0A 4C 44 20 49 58 2C 66 dresses..LD IX,f
026CF0: 61 72 61 64 64 72 73 0D 0A 4C 44 20 48 4C 2C 6D araddrs..LD HL,m
026D00: 65 73 73 65 73 0D 0A 66 61 72 66 69 6E 64 6C 6F esses..farfindlo
026D10: 6F 70 3A 20 4C 44 20 41 2C 28 48 4C 29 0D 0A 4F op: LD A,(HL)..O
026D20: 52 20 41 0D 0A 52 45 54 20 5A 0D 0A 50 55 53 48 R A..RET Z..PUSH
026D30: 20 48 4C 0D 0A 43 41 4C 4C 20 30 42 43 44 34 68 HL..CALL 0BCD4h
026D40: 0D 0A 4C 44 20 28 49 58 2B 30 29 2C 4C 0D 0A 4C ..LD (IX+0),L..L
026D50: 44 20 28 49 58 2B 31 29 2C 48 0D 0A 4C 44 20 28 D (IX+1),H..LD (
026D60: 49 58 2B 32 29 2C 43 0D 0A 49 4E 43 20 49 58 0D IX+2),C..INC IX.
026D70: 0A 49 4E 43 20 49 58 0D 0A 49 4E 43 20 49 58 0D .INC IX..INC IX.
026D80: 0A 50 4F 50 20 48 4C 0D 0A 49 4E 43 20 48 4C 0D .POP HL..INC HL.
026D90: 0A 4A 52 20 66 61 72 66 69 6E 64 6C 6F 6F 70 0D .JR farfindloop.
026DA0: 0A 0D 0A 3B 20 73 74 6F 72 65 73 20 66 6F 72 20 ...; stores for
026DB0: 52 53 58 20 63 6F 6D 6D 61 6E 64 73 20 74 68 61 RSX commands tha
026DC0: 74 20 61 72 65 20 73 65 61 72 63 68 65 64 20 66 t are searched f
026DD0: 6F 72 2C 20 74 65 72 6D 69 6E 61 74 65 64 20 62 or, terminated b
026DE0: 79 20 61 20 7A 65 72 6F 20 62 79 74 65 0D 0A 6D y a zero byte..m
026DF0: 65 73 73 65 73 3A 20 44 45 46 42 20 30 38 31 68 esses: DEFB 081h
026E00: F3 29 20 EB 20 0D 00 00 63 6F EC EF 28 0D 00 00 .) . ...co..(...
026E10: 63 6F EC F4 0F 29 20 FB 20 15 00 10 00 0A 0A 9F co...) . .......
026E20: 20 1E 94 11 01 A0 20 1E CE 09 00 5E 00 B8 0B 0D ..... ....^....
026E30: 00 00 73 75 69 F4 EF 0D 00 00 E3 28 0D 00 00 72 ..sui......(...r
026E40: 6F F7 2C 0D 00 00 63 6F EC 29 F9 19 0E 01 0D 00 o.,...co.)......
026E50: 00 63 61 72 E4 EF 0D 00 00 E3 28 0D 00 00 72 6F .car......(...ro
026E60: F7 2C 0D 00 00 63 6F EC 29 20 FB 20 19 0E 01 0D .,...co.) . ....
026E70: 00 00 70 63 6F EC EF FF 77 28 0F 2C 0D 00 00 73 ..pco...w(.,...s
026E80: 75 69 F4 20 FB 20 11 29 00 52 00 C2 0B A9 20 0D ui. . .).R.... .
026E90: 00 00 63 6F EC F6 11 F4 10 2C 0D 00 00 72 6F F7 ..co.....,...ro.
026EA0: F6 10 F4 10 01 BA 20 10 01 BB 20 0D 00 00 70 63 ...... ... ...pc
026EB0: 6F EC 01 BF 20 AC 28 03 00 00 63 61 72 E4 2C 0D o... .(...car.,.
026EC0: 00 00 63 61 72 E4 2C 0F 29 3B FF 03 28 19 E2 F4 ..car.,.);..(...
026ED0: 0D 00 00 73 75 69 F4 29 01 C9 00 35 00 AC 0D A9 ...sui.)...5....
026EE0: 20 0D 00 00 63 6F EC F6 11 F4 10 2C 0D 00 00 72 ...co.....,...r
026EF0: 6F F7 F6 10 F4 10 01 BA 20 0E 01 BB 20 0F 01 BF o....... ... ...
026F00: 20 FF 03 28 19 DC 29 FF 03 28 19 DE 29 01 C9 00 ..(..)..(..)...
026F10: 29 00 A0 0F A9 20 0D 00 00 63 6F EC F6 11 F4 10 ).... ...co.....
026F20: 2C 0D 00 00 72 6F F7 F6 10 F4 10 01 BA 20 11 01 ,...ro....... ..
026F30: BF 20 22 20 20 22 01 C9 00 65 00 94 11 A1 20 0D . " "...e.... .
026F40: 00 00 72 6F F7 F2 0D 00 00 72 B1 20 FC 20 0D 00 ..ro.....r. . ..
026F50: 00 63 6F EC F2 0D 00 00 63 B1 20 EB 20 A9 20 0D .co.....c. . . .
026F60: 00 00 63 6F EC F6 11 F4 10 2C 0D 00 00 72 6F F7 ..co.....,...ro.
026F70: F6 10 F4 10 01 BB 20 10 01 BF 20 FF 03 28 19 16 ...... ... ..(..
026F80: 29 FF 03 28 0F 29 FF 03 28 19 C5 29 FF 03 28 19 )..(.)..(..)..(.
026F90: C7 29 FF 03 28 19 16 29 FF 03 28 0E 29 00 06 00 .)..(..)..(.)...
026FA0: 9E 11 C9 00 49 00 A8 11 A1 20 0D 00 00 72 6F F7 ....I.... ...ro.
026FB0: F2 0D 00 00 72 B1 20 FC 20 0D 00 00 63 6F EC F2 ....r. . ...co..
026FC0: 0D 00 00 63 B1 20 EB 20 A1 20 0D 00 00 E3 28 0D ...c. . . ....(.
026FD0: 00 00 72 6F F7 2C 0D 00 00 63 6F EC 29 EE 0E 20 ..ro.,...co.)..
026FE0: EB 20 1E AC 0D 20 01 97 20 1E A0 0F 00 06 00 B2 . ... .. .......
026FF0: 11 C9 00 00 00 1A 2C 37 36 2C 30 0D 0A 33 30 20 ......,76,0..30
027000: 00 42 53 49 44 45 20 20 20 42 49 4E 00 00 00 00 .BSIDE BIN....
027010: 00 00 02 00 00 00 90 00 E5 02 00 00 00 00 00 00 ................
027020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027040: E5 02 00 00 05 00 00 00 00 00 00 00 00 00 00 00 ................
027050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027080: 01 33 90 21 38 90 CD D1 BC DD 21 2D 90 21 2A 90 .3.!8.....!-.!*.
027090: 7E B7 C8 E5 CD D4 BC DD 75 00 DD 74 01 DD 71 02 ~.......u..t..q.
0270A0: DD 23 DD 23 DD 23 E1 23 18 E6 81 87 00 00 00 00 .#.#.#.#........
0270B0: 00 00 00 3C 90 C3 42 90 00 00 00 00 42 43 4F 50 ...<..B.....BCOP
0270C0: D9 00 CD 1F 92 21 E2 90 CD D9 90 CD 78 BB 22 D6 .....!......x.".
0270D0: 92 DD 6E 00 DD 66 01 22 D3 92 23 36 00 2B AF 32 ..n..f."..#6.+.2
0270E0: D5 92 77 1E 05 57 3A D5 92 CD F2 90 CD 45 91 D2 ..w..W:......E..
0270F0: 43 92 CD 62 92 B7 C0 3A E2 92 D6 07 47 10 04 3E C..b...:....G..>
027100: 50 18 0E 10 04 3E 52 18 08 10 04 3E 32 18 02 3E P....>R....>2..>
027110: 52 32 E3 92 1E 00 2A D3 92 56 CD A7 92 DD 21 E5 R2....*..V....!.
027120: 92 3A E2 92 47 C5 DD E5 1E 05 21 00 80 CD 7B 91 .:..G.....!...{.
027130: DD E1 D2 42 92 1E 00 21 00 80 CD 8D 91 D2 42 92 ...B...!......B.
027140: C1 10 E2 3A D5 92 C6 01 27 32 D5 92 2A D3 92 7E ...:....'2..*..~
027150: 3C FE 28 20 8D AF C3 43 92 7E B7 C8 CD 5A BB 23 <.( ...C.~...Z.#
027160: 18 F7 43 6F 70 79 69 6E 67 20 74 72 61 63 6B 3A ..Copying track:
027170: 20 00 F5 2A D6 92 CD 75 BB F1 47 CB 3F CB 3F CB ..*...u..G.?.?.
027180: 3F CB 3F 28 05 C6 30 CD 5A BB 78 E6 0F C6 30 C3 ?.?(..0.Z.x...0.
027190: 5A BB 21 DA 92 7E 23 E6 08 47 7E E6 37 B0 C9 3E Z.!..~#..G~.7..>
0271A0: 01 01 7E FA ED 79 21 00 15 2B 7C B5 C8 3E 04 CD ..~..y!..+|..>..
0271B0: B8 91 7B E6 03 CD B8 91 E5 CD FE 91 E1 3A DA 92 ..{..........:..
0271C0: CB 6F 28 E5 C9 E5 C5 CD 1F 91 D5 DF 30 90 D1 3E .o(.........0..>
0271D0: 0F CD B8 91 7B CD B8 91 7A CD B8 91 3E 08 CD B8 ....{...z...>...
0271E0: 91 CD FE 91 3A DA 92 CB 6F 28 F1 3A DB 92 BA C1 ....:...o(.:....
0271F0: E1 20 D2 3A DA 92 E6 08 C0 37 C9 3E 66 CD 97 91 . .:.....7.>f...
027200: 00 42 53 49 44 45 20 20 20 42 41 53 00 00 00 00 .BSIDE BAS....
027210: 00 00 00 00 00 70 01 00 96 04 00 00 00 00 00 00 .....p..........
027220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
027240: 96 04 00 42 04 22 44 61 74 61 20 65 72 72 6F 72 ...B."Data error
027250: 2E 22 00 06 00 04 01 C9 00 00 00 1A 69 64 65 2E ."..........ide.
027260: 62 69 6E 22 2C 26 39 30 30 30 3A 67 70 62 75 66 bin",&9000:gpbuf
027270: 66 25 3D 30 3A 43 41 4C 4C 20 26 39 30 30 30 2C f%=0:CALL &9000,
027280: 38 00 0A 00 AA 20 1C FF 7F 01 A8 22 62 73 69 64 8.... ....."bsid
027290: 65 2E 62 69 6E 22 2C 1C 00 90 01 02 00 00 67 70 e.bin",.......gp
0272A0: 62 75 66 E6 EF 0E 01 83 20 1C 00 90 2C 40 02 00 buf..... ...,@..
0272B0: 00 67 70 62 75 66 E6 00 17 00 14 00 02 00 00 74 .gpbuf.........t
0272C0: 72 61 63 EB EF 0E 01 02 00 00 65 F2 EF 0E 00 08 rac.......e.....
0272D0: 00 1E 00 AD 20 10 00 37 00 28 00 BF 22 42 53 69 .... ..7.(.."BSi
0272E0: 64 65 20 76 20 31 2E 30 20 62 79 20 4D 61 74 74 de v 1.0 by Matt
0272F0: 68 65 77 20 50 68 69 6C 6C 69 70 73 2C 20 53 65 hew Phillips, Se
027300: 70 74 65 6D 62 65 72 20 31 39 39 38 22 00 EA 00 ptember 1998"...
027310: 32 00 BF 01 BF 22 54 68 69 73 20 70 72 6F 67 72 2...."This progr
027320: 61 6D 20 69 73 20 66 6F 72 20 75 73 65 20 62 79 am is for use by
027330: 20 74 68 6F 73 65 20 77 69 74 68 20 61 20 33 2E those with a 3.
027340: 35 22 F4 FF 03 28 19 22 29 F4 22 20 64 69 73 63 5"...(.")." disc
027350: 20 64 72 69 76 65 20 77 68 69 63 68 20 68 61 73 drive which has
027360: 20 6E 6F 20 73 69 64 65 20 73 77 69 74 63 68 66 no side switchf
027370: 69 74 74 65 64 2E 20 20 49 66 20 74 68 65 20 33 itted. If the 3
027380: 2E 35 22 F4 FF 03 28 19 22 29 F4 22 20 64 72 69 .5"...(.")." dri
027390: 76 65 20 69 73 20 63 6F 6E 6E 65 63 74 65 64 20 ve is connected
0273A0: 61 73 20 64 72 69 76 65 20 42 2C 20 74 68 69 73 as drive B, this
0273B0: 20 70 72 6F 67 72 61 6D 20 77 69 6C 6C 20 63 6F program will co
0273C0: 70 79 20 74 68 65 20 20 73 65 63 6F 6E 64 20 73 py the second s
0273D0: 69 64 65 20 6F 66 20 74 68 65 20 64 69 73 63 20 ide of the disc
0273E0: 69 6E 20 64 72 69 76 65 20 42 20 74 6F 20 64 72 in drive B to dr
0273F0: 69 76 65 20 41 2E 22 00 50 00 3C 00 BF 01 BF 22 ive A.".P.<...."
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: 0A 20 20 20 6D 75 73 69 63 21 20 20 46 6F 72 20 . music! For
027510: 69 6E 73 74 61 6E 63 65 2C 20 69 66 20 79 6F 75 instance, if you
027520: 20 68 61 76 65 20 74 77 6F 20 63 6F 6D 70 75 74 have two comput
027530: 65 72 73 20 77 69 74 68 20 4D 49 44 49 20 69 6E ers with MIDI in
027540: 74 65 72 66 61 63 65 73 2C 20 74 68 65 6E 0D 0A terfaces, then..
027550: 20 20 20 79 6F 75 20 63 61 6E 20 75 73 65 20 4D you can use M
027560: 49 44 49 20 74 6F 20 67 65 74 20 74 68 65 20 63 IDI to get the c
027570: 6F 6D 70 75 74 65 72 73 20 74 6F 20 74 72 61 6E omputers to tran
027580: 73 66 65 72 20 61 6E 79 20 6B 69 6E 64 20 6F 66 sfer any kind of
027590: 20 64 61 74 61 20 62 65 74 77 65 65 6E 0D 0A 20 data between..
0275A0: 20 20 74 68 65 6D 2E 0D 0A 0D 0A 20 20 20 57 69 them..... Wi
0275B0: 74 68 20 73 75 69 74 61 62 6C 65 20 73 6F 66 74 th suitable soft
0275C0: 77 61 72 65 2C 20 79 6F 75 20 63 61 6E 20 65 64 ware, you can ed
0275D0: 69 74 20 20 61 20 20 70 69 65 63 65 20 20 6F 66 it a piece of
0275E0: 20 6D 75 73 69 63 20 6F 6E 20 79 6F 75 72 20 63 music on your c
0275F0: 6F 6D 70 75 74 65 72 2C 0D 0A 20 20 20 61 6E 64 omputer,.. and
027600: 20 74 68 65 6E 20 75 73 65 20 4D 49 44 49 20 74 then use MIDI t
027610: 6F 20 20 69 6E 73 74 72 75 63 74 20 20 79 6F 75 o instruct you
027620: 72 20 20 6B 65 79 62 6F 61 72 64 20 20 74 6F 20 r keyboard to
027630: 20 70 6C 61 79 20 69 74 20 66 6F 72 20 79 6F 75 play it for you
027640: 2E 20 20 53 6F 6D 65 0D 0A 20 20 20 65 64 69 74 . Some.. edit
027650: 6F 72 73 20 75 73 65 20 63 6F 6E 76 65 6E 74 69 ors use conventi
027660: 6F 6E 61 6C 20 20 6D 75 73 69 63 61 6C 20 20 6E onal musical n
027670: 6F 74 61 74 69 6F 6E 2C 20 20 6F 74 68 65 72 73 otation, others
027680: 20 20 6F 70 65 72 61 74 65 20 20 6D 6F 72 65 20 operate more
027690: 6C 69 6B 65 20 61 0D 0A 20 20 20 73 65 71 75 65 like a.. seque
0276A0: 6E 63 65 72 2E 20 20 4D 6F 72 65 20 61 64 76 61 ncer. More adva
0276B0: 6E 63 65 64 20 20 73 6F 66 74 77 61 72 65 20 20 nced software
0276C0: 65 6E 61 62 6C 65 73 20 20 79 6F 75 20 20 74 6F enables you to
0276D0: 20 20 70 6C 61 79 20 20 6D 75 73 69 63 20 6F 6E play music on
0276E0: 20 79 6F 75 72 0D 0A 20 20 20 6B 65 79 62 6F 61 your.. keyboa
0276F0: 72 64 20 77 68 69 6C 65 20 74 68 65 20 63 6F 6D rd while the com
027700: 74 73 20 61 6E 64 0D 0A 20 20 20 73 6F 6D 65 20 ts and.. some
027710: 74 79 70 65 73 20 6F 66 20 63 6F 6D 70 75 74 65 types of compute
027720: 72 20 63 6F 6D 65 20 77 69 74 68 20 20 4D 49 44 r come with MID
027730: 49 20 63 61 70 61 62 69 6C 69 74 69 65 73 20 62 I capabilities b
027740: 75 69 6C 74 20 69 6E 2E 20 20 54 68 65 20 41 6D uilt in. The Am
027750: 73 74 72 61 64 0D 0A 20 20 20 75 6E 66 6F 72 74 strad.. unfort
027760: 75 6E 61 74 65 6C 79 20 69 73 20 6E 6F 74 20 6F unately is not o
027770: 6E 65 20 6F 66 20 74 68 65 6D 2E 0D 0A 0D 0A 20 ne of them.....
027780: 20 20 4D 49 44 49 20 49 4E 54 45 52 46 41 43 45 MIDI INTERFACE
027790: 53 20 46 4F 52 20 54 48 45 20 43 50 43 0D 0A 20 S FOR THE CPC..
0277A0: 20 20 54 6F 20 75 73 65 20 79 6F 75 72 20 41 6D To use your Am
0277B0: 73 74 72 61 64 20 20 74 6F 20 20 63 6F 6E 74 72 strad to contr
0277C0: 6F 6C 20 20 4D 49 44 49 20 20 69 6E 73 74 72 75 ol MIDI instru
0277D0: 6D 65 6E 74 73 20 20 79 6F 75 20 20 77 69 6C 6C ments you will
0277E0: 20 6E 65 65 64 20 61 20 4D 49 44 49 0D 0A 20 20 need a MIDI..
0277F0: 20 69 6E 74 65 72 66 61 63 65 2C 20 77 68 69 63 interface, whic
027800: 68 20 70 6C 75 67 73 20 69 6E 74 6F 20 74 68 65 h plugs into the
027810: 20 65 78 70 61 6E 73 69 6F 6E 20 20 70 6F 72 74 expansion port
027820: 20 61 6E 64 20 70 72 6F 76 69 64 65 73 20 74 68 and provides th
027830: 65 20 6E 65 63 65 73 73 61 72 79 0D 0A 20 20 20 e necessary..
027840: 65 6C 65 63 74 72 6F 6E 69 63 73 20 61 6E 64 20 electronics and
027850: 74 68 65 20 4D 49 44 49 20 73 6F 63 6B 65 74 73 the MIDI sockets
027860: 2E 20 20 20 54 68 65 72 65 20 20 77 65 72 65 20 . There were
027870: 73 65 76 65 72 61 6C 20 64 69 66 66 65 72 65 6E several differen
027880: 74 20 6D 61 6B 65 73 20 6F 66 0D 0A 20 20 20 69 t makes of.. i
027890: 6E 74 65 72 66 61 63 65 20 70 72 6F 64 75 63 65 nterface produce
0278A0: 64 20 66 6F 72 20 74 68 65 20 20 43 50 43 2C 20 d for the CPC,
0278B0: 20 61 6E 64 20 20 77 68 69 6C 65 20 20 74 68 65 and while the
0278C0: 79 20 20 61 6C 6C 20 20 68 61 64 20 6D 75 63 68 y all had much
0278D0: 20 74 68 65 20 73 61 6D 65 0D 0A 20 20 20 63 61 the same.. ca
0278E0: 70 61 62 69 6C 69 74 79 20 69 6E 20 74 65 72 6D pability in term
0278F0: 73 20 6F 66 20 68 61 72 64 77 61 72 65 2C 20 74 s of hardware, t
027900: 70 75 74 65 72 20 72 65 63 6F 72 64 73 20 69 74 puter records it
027910: 20 69 6E 20 6D 65 6D 6F 72 79 20 66 6F 72 20 73 in memory for s
027920: 61 76 69 6E 67 20 6F 72 20 65 64 69 74 69 6E 67 aving or editing
027930: 2E 0D 0A 0D 0A 20 20 20 45 76 65 6E 20 77 69 74 ..... Even wit
027940: 68 6F 75 74 20 65 64 69 74 69 6E 67 20 73 6F 66 hout editing sof
027950: 74 77 61 72 65 2C 20 79 6F 75 20 63 61 6E 20 20 tware, you can
027960: 75 73 65 20 20 4D 49 44 49 20 20 74 6F 20 67 65 use MIDI to ge
027970: 74 20 6D 6F 72 65 20 6F 75 74 20 6F 66 20 79 6F t more out of yo
027980: 75 72 0D 0A 20 20 20 6B 65 79 62 6F 61 72 64 2E ur.. keyboard.
027990: 20 20 46 6F 72 20 65 78 61 6D 70 6C 65 20 20 53 For example S
0279A0: 74 65 70 68 65 6E 27 73 20 20 59 61 6D 61 68 61 tephen's Yamaha
0279B0: 20 20 50 53 53 2D 36 38 30 20 20 6B 65 79 62 6F PSS-680 keybo
0279C0: 61 72 64 20 20 68 61 73 20 61 20 63 75 73 74 6F ard has a custo
0279D0: 6D 0D 0A 20 20 20 64 72 75 6D 6D 65 72 20 66 6F m.. drummer fo
0279E0: 72 20 64 65 73 69 67 6E 69 6E 67 20 64 72 75 6D r designing drum
0279F0: 20 73 65 71 75 65 6E 63 65 73 2C 20 62 75 74 20 sequences, but
027A00: 69 74 20 20 63 61 6E 20 6F 6E 6C 79 20 72 65 6D it can only rem
027A10: 65 6D 62 65 72 20 61 20 66 65 77 20 61 74 20 61 ember a few at a
027A20: 0D 0A 20 20 20 74 69 6D 65 2E 20 20 55 73 69 6E .. time. Usin
027A30: 67 20 4D 49 44 49 20 77 65 20 63 61 6E 20 74 72 g MIDI we can tr
027A40: 61 6E 73 6D 69 74 20 74 68 65 20 64 72 75 6D 20 ansmit the drum
027A50: 6D 65 6D 6F 72 79 20 74 6F 20 74 68 65 20 63 6F memory to the co
027A60: 6D 70 75 74 65 72 20 61 6E 64 20 73 61 76 65 0D mputer and save.
027A70: 0A 20 20 20 69 74 20 74 6F 20 64 69 73 63 20 66 . it to disc f
027A80: 6F 72 20 66 75 74 75 72 65 20 75 73 65 2E 20 20 or future use.
027A90: 49 74 20 20 63 61 6E 20 20 74 68 65 6E 20 20 62 It can then b
027AA0: 65 20 20 6C 6F 61 64 65 64 20 61 6E 64 20 73 65 e loaded and se
027AB0: 6E 74 20 62 61 63 6B 20 74 6F 20 74 68 65 0D 0A nt back to the..
027AC0: 20 20 20 6B 65 79 62 6F 61 72 64 2E 0D 0A 0D 0A keyboard.....
027AD0: 20 20 20 57 48 41 54 20 41 42 4F 55 54 20 54 48 WHAT ABOUT TH
027AE0: 45 20 50 52 4F 47 52 41 4D 4D 49 4E 47 3F 0D 0A E PROGRAMMING?..
027AF0: 20 20 20 57 65 6C 6C 2C 20 73 69 6E 63 65 20 74 Well, since t
027B00: 68 65 20 73 6F 66 74 77 61 72 65 20 20 74 68 61 he software tha
027B10: 74 20 63 61 6D 65 20 77 69 74 68 20 65 61 63 68 t came with each
027B20: 20 6F 6E 65 20 77 61 73 0D 0A 20 20 20 76 65 72 one was.. ver
027B30: 79 20 64 69 66 66 65 72 65 6E 74 20 61 6E 64 20 y different and
027B40: 76 61 72 69 65 64 20 69 6E 20 71 75 61 6C 69 74 varied in qualit
027B50: 79 2E 0D 0A 0D 0A 20 20 20 54 68 65 20 6D 61 69 y..... The mai
027B60: 6E 20 69 6E 74 65 72 66 61 63 65 73 20 61 72 65 n interfaces are
027B70: 20 74 68 65 20 45 4D 52 20 69 6E 74 65 72 66 61 the EMR interfa
027B80: 63 65 2C 20 74 68 65 20 44 48 43 50 20 69 6E 74 ce, the DHCP int
027B90: 65 72 66 61 63 65 2C 20 61 6E 64 20 74 68 65 20 erface, and the
027BA0: 52 41 4D 0D 0A 20 20 20 4D 75 73 69 63 20 4D 61 RAM.. Music Ma
027BB0: 63 68 69 6E 65 2C 20 77 68 69 63 68 20 61 6C 73 chine, which als
027BC0: 6F 20 69 6E 63 6C 75 64 65 64 20 61 20 73 61 6D o included a sam
027BD0: 70 6C 65 72 2E 20 20 42 65 63 61 75 73 65 20 74 pler. Because t
027BE0: 68 65 20 69 6E 74 65 72 66 61 63 65 73 20 75 73 he interfaces us
027BF0: 65 64 0D 0A 20 20 20 64 69 66 66 65 72 65 6E 74 ed.. different
027C00: 20 70 6F 72 74 20 61 64 64 72 65 73 73 65 73 2C port addresses,
027C10: 20 73 6F 66 74 77 61 72 65 20 77 72 69 74 74 65 software writte
027C20: 6E 20 20 66 6F 72 20 20 6F 6E 65 20 20 77 69 6C n for one wil
027C30: 6C 20 6E 6F 74 20 77 6F 72 6B 20 6F 6E 20 74 68 l not work on th
027C40: 65 0D 0A 20 20 20 6F 74 68 65 72 20 6D 61 6B 65 e.. other make
027C50: 73 2E 20 20 54 68 65 72 65 20 68 61 73 20 68 6F s. There has ho
027C60: 77 65 76 65 72 20 20 62 65 65 6E 20 20 73 6F 6D wever been som
027C70: 65 20 20 73 6F 66 74 77 61 72 65 20 20 77 72 69 e software wri
027C80: 74 74 65 6E 20 73 75 63 68 20 61 73 20 74 68 65 tten such as the
027C90: 0D 0A 20 20 20 46 6F 75 6E 64 61 74 69 6F 6E 20 .. Foundation
027CA0: 53 74 65 70 2D 54 69 6D 65 20 53 65 71 75 65 6E Step-Time Sequen
027CB0: 63 65 72 20 77 68 69 63 68 20 20 63 61 6E 20 20 cer which can
027CC0: 62 65 20 20 63 6F 6E 66 69 67 75 72 65 64 20 20 be configured
027CD0: 74 6F 20 20 77 6F 72 6B 20 6F 6E 20 61 6C 6C 0D to work on all.
027CE0: 0A 20 20 20 74 68 72 65 65 20 69 6E 74 65 72 66 . three interf
027CF0: 61 63 65 73 2E 0D 0A 0D 0A 20 20 20 49 66 20 79 aces..... If y
027D00: 68 69 73 20 69 73 20 50 72 6F 67 72 61 6D 6D 65 his is Programme
027D10: 72 73 27 20 50 61 74 63 68 20 20 77 65 20 68 61 rs' Patch we ha
027D20: 64 20 62 65 74 74 65 72 20 64 6F 20 73 6F 6D 65 d better do some
027D30: 20 70 72 6F 67 72 61 6D 6D 69 6E 67 2E 0D 0A 20 programming...
027D40: 20 20 59 6F 75 20 77 69 6C 6C 20 70 72 6F 62 61 You will proba
027D50: 62 6C 79 20 66 69 6E 64 20 74 68 61 74 20 79 6F bly find that yo
027D60: 75 72 20 20 69 6E 74 65 72 66 61 63 65 20 20 6D ur interface m
027D70: 61 6E 75 61 6C 20 73 61 79 73 20 76 65 72 79 20 anual says very
027D80: 6C 69 74 74 6C 65 20 61 62 6F 75 74 0D 0A 20 20 little about..
027D90: 20 68 6F 77 20 74 6F 20 70 72 6F 67 72 61 6D 20 how to program
027DA0: 74 68 65 20 69 6E 74 65 72 66 61 63 65 20 79 6F the interface yo
027DB0: 75 72 73 65 6C 66 2E 20 20 49 20 20 68 61 76 65 urself. I have
027DC0: 20 20 74 6F 20 61 64 6D 69 74 20 74 68 61 74 20 to admit that
027DD0: 6D 75 63 68 20 6F 66 20 74 68 65 0D 0A 20 20 20 much of the..
027DE0: 70 72 6F 67 72 61 6D 6D 69 6E 67 20 69 6E 66 6F programming info
027DF0: 72 6D 61 74 69 6F 6E 20 69 6E 20 74 68 69 73 20 rmation in this
027E00: 20 61 72 74 69 63 6C 65 20 20 77 61 73 20 20 66 article was f
027E10: 6F 75 6E 64 20 20 62 79 20 64 69 73 61 73 73 65 ound by disasse
027E20: 6D 62 6C 69 6E 67 20 74 68 65 0D 0A 20 20 20 6D mbling the.. m
027E30: 61 63 68 69 6E 65 20 63 6F 64 65 20 20 66 6F 72 achine code for
027E40: 20 20 74 68 65 20 20 46 6F 75 6E 64 61 74 69 6F the Foundatio
027E50: 6E 20 20 53 74 65 70 2D 54 69 6D 65 20 20 53 65 n Step-Time Se
027E60: 71 75 65 6E 63 65 72 2E 20 20 20 57 68 65 74 68 quencer. Wheth
027E70: 65 72 20 20 69 74 20 69 73 0D 0A 20 20 20 73 74 er it is.. st
027E80: 72 69 63 74 6C 79 20 73 70 65 61 6B 69 6E 67 20 rictly speaking
027E90: 6C 65 67 69 74 69 6D 61 74 65 20 74 6F 20 64 6F legitimate to do
027EA0: 20 74 68 69 73 20 20 49 20 20 61 6D 20 20 6E 6F this I am no
027EB0: 74 20 20 73 75 72 65 2C 20 62 75 74 20 69 6E 20 t sure, but in
027EC0: 61 6E 20 69 64 65 61 6C 0D 0A 20 20 20 77 6F 72 an ideal.. wor
027ED0: 6C 64 20 74 68 65 73 65 20 64 65 74 61 69 6C 73 ld these details
027EE0: 20 77 6F 75 6C 64 20 68 61 76 65 20 62 65 65 6E would have been
027EF0: 20 70 72 6F 76 69 64 65 64 20 69 6E 20 74 68 65 provided in the
027F00: 6F 75 20 61 72 65 20 69 6E 74 65 72 65 73 74 65 ou are intereste
027F10: 64 20 69 6E 20 6D 75 73 69 63 20 61 6E 64 20 68 d in music and h
027F20: 61 76 65 20 61 20 73 75 69 74 61 62 6C 65 20 4D ave a suitable M
027F30: 49 44 49 20 69 6E 73 74 72 75 6D 65 6E 74 20 74 IDI instrument t
027F40: 68 65 6E 20 69 74 0D 0A 20 20 20 77 6F 75 6C 64 hen it.. would
027F50: 20 62 65 20 77 65 6C 6C 20 77 6F 72 74 68 20 20 be well worth
027F60: 74 72 79 69 6E 67 20 20 74 6F 20 20 67 65 74 20 trying to get
027F70: 20 61 20 20 4D 49 44 49 20 20 69 6E 74 65 72 66 a MIDI interf
027F80: 61 63 65 2E 20 20 59 6F 75 20 63 61 6E 20 70 72 ace. You can pr
027F90: 6F 64 75 63 65 0D 0A 20 20 20 70 72 65 74 74 79 oduce.. pretty
027FA0: 20 67 6F 6F 64 20 72 65 73 75 6C 74 73 20 65 76 good results ev
027FB0: 65 6E 20 77 69 74 68 20 74 68 65 20 43 50 43 2E en with the CPC.
027FC0: 20 20 20 54 68 6F 75 67 68 20 69 74 20 69 73 20 Though it is
027FD0: 71 75 69 74 65 20 68 61 72 64 20 74 6F 20 6F 62 quite hard to ob
027FE0: 74 61 69 6E 0D 0A 20 20 20 41 6D 73 74 72 61 64 tain.. Amstrad
027FF0: 20 67 65 61 72 20 6E 6F 77 2C 20 74 68 65 72 65 gear now, there
028000: 20 6D 75 73 74 20 62 65 20 71 75 69 74 65 20 61 must be quite a
028010: 20 20 6C 6F 74 20 20 6F 66 20 69 74 20 61 62 6F lot of it abo
028020: 75 74 20 61 6E 64 20 79 6F 75 20 6D 61 79 20 66 ut and you may f
028030: 69 6E 64 0D 0A 20 20 20 69 74 20 74 75 72 6E 69 ind.. it turni
028040: 6E 67 20 75 70 20 61 74 20 63 61 72 20 62 6F 6F ng up at car boo
028050: 74 20 73 61 6C 65 73 20 66 72 6F 6D 20 74 69 6D t sales from tim
028060: 65 20 74 6F 20 74 69 6D 65 2E 20 20 49 74 20 6D e to time. It m
028070: 69 67 68 74 20 65 76 65 6E 20 62 65 20 77 6F 72 ight even be wor
028080: 74 68 0D 0A 20 20 20 70 6C 61 63 69 6E 67 20 61 th.. placing a
028090: 6E 20 61 64 20 69 6E 20 79 6F 75 72 20 6C 6F 63 n ad in your loc
0280A0: 61 6C 20 6E 65 77 73 70 61 70 65 72 20 61 73 6B al newspaper ask
0280B0: 69 6E 67 20 66 6F 72 20 41 6D 73 74 72 61 64 20 ing for Amstrad
0280C0: 6B 69 74 2C 20 6F 72 20 6F 66 20 63 6F 75 72 73 kit, or of cours
0280D0: 65 0D 0A 20 20 20 61 6E 20 61 64 20 69 6E 20 57 e.. an ad in W
0280E0: 41 43 43 49 2E 20 20 49 20 20 6F 62 74 61 69 6E ACCI. I obtain
0280F0: 65 64 20 20 6D 79 20 20 52 41 4D 20 20 4D 75 73 ed my RAM Mus
028100: 20 69 6E 74 65 72 66 61 63 65 20 6D 61 6E 75 61 interface manua
028110: 6C 73 2E 0D 0A 0D 0A 20 20 20 49 74 20 73 65 65 ls..... It see
028120: 6D 73 20 74 68 61 74 20 74 68 65 20 74 68 72 65 ms that the thre
028130: 65 20 20 6D 61 69 6E 20 20 69 6E 74 65 72 66 61 e main interfa
028140: 63 65 73 20 20 66 6F 72 20 20 74 68 65 20 41 6D ces for the Am
028150: 73 74 72 61 64 20 75 73 65 20 65 69 74 68 65 72 strad use either
028160: 20 74 68 65 0D 0A 20 20 20 73 61 6D 65 20 6F 72 the.. same or
028170: 20 61 20 76 65 72 79 20 73 69 6D 69 6C 61 72 20 a very similar
028180: 63 68 69 70 20 20 74 6F 20 20 68 61 6E 64 6C 65 chip to handle
028190: 20 20 74 68 65 20 20 4D 49 44 49 20 63 68 61 6E the MIDI chan
0281A0: 6E 65 6C 2E 20 20 54 68 65 20 52 41 4D 20 4D 75 nel. The RAM Mu
0281B0: 73 69 63 0D 0A 20 20 20 4D 61 63 68 69 6E 65 20 sic.. Machine
0281C0: 75 73 65 73 20 61 20 4D 6F 74 6F 72 6F 6C 61 20 uses a Motorola
0281D0: 36 38 35 30 20 41 43 49 41 20 63 68 69 70 2C 20 6850 ACIA chip,
0281E0: 20 61 6E 64 20 20 74 68 65 20 64 61 74 61 20 73 and the data s
0281F0: 68 65 65 74 20 66 6F 72 20 74 68 69 73 20 63 68 heet for this ch
028200: 69 70 0D 0A 20 20 20 77 6F 75 6C 64 20 62 65 20 ip.. would be
028210: 71 75 69 74 65 20 75 73 65 66 75 6C 2E 0D 0A 0D quite useful....
028220: 0A 20 20 20 54 68 65 20 6D 6F 73 74 20 69 6D 70 . The most imp
028230: 6F 72 74 61 6E 74 20 20 69 6E 66 6F 72 6D 61 74 ortant informat
028240: 69 6F 6E 20 20 69 73 20 20 74 68 65 20 20 70 6F ion is the po
028250: 72 74 20 20 6E 75 6D 62 65 72 73 20 20 66 6F 72 rt numbers for
028260: 20 74 68 65 20 64 69 66 66 65 72 65 6E 74 0D 0A the different..
028270: 20 20 20 69 6E 74 65 72 66 61 63 65 73 2E 20 20 interfaces.
028280: 54 61 62 6C 65 20 31 20 67 69 76 65 73 20 79 6F Table 1 gives yo
028290: 75 20 61 6C 6C 20 20 79 6F 75 20 20 6E 65 65 64 u all you need
0282A0: 20 20 74 6F 20 20 6B 6E 6F 77 20 66 6F 72 20 74 to know for t
0282B0: 68 65 20 74 68 72 65 65 20 6D 61 69 6E 0D 0A 20 he three main..
0282C0: 20 20 4D 49 44 49 20 69 6E 74 65 72 66 61 63 65 MIDI interface
0282D0: 73 20 66 6F 72 20 20 74 68 65 20 20 41 6D 73 74 s for the Amst
0282E0: 72 61 64 2E 20 20 20 49 66 20 20 61 6E 79 6F 6E rad. If anyon
0282F0: 65 20 20 68 61 73 20 20 61 20 20 64 69 66 66 65 e has a diffe
028300: 69 63 20 20 4D 61 63 68 69 6E 65 20 69 6E 20 31 ic Machine in 1
028310: 39 39 30 20 77 68 65 6E 20 61 6E 6F 74 68 65 72 990 when another
028320: 0D 0A 20 20 20 57 41 43 43 49 20 6D 65 6D 62 65 .. WACCI membe
028330: 72 20 73 70 6F 74 74 65 64 20 74 68 65 6D 20 62 r spotted them b
028340: 65 69 6E 67 20 73 6F 6C 64 20 6F 66 66 20 63 68 eing sold off ch
028350: 65 61 70 20 69 6E 20 42 61 72 72 6F 77 2D 69 6E eap in Barrow-in
028360: 2D 46 75 72 6E 65 73 73 2E 0D 0A 0D 0A 20 20 20 -Furness.....
028370: 49 66 20 79 6F 75 20 61 72 65 20 67 6F 6F 64 20 If you are good
028380: 77 69 74 68 20 61 20 73 6F 6C 64 65 72 69 6E 67 with a soldering
028390: 20 69 72 6F 6E 2C 20 49 20 68 61 76 65 20 69 6E iron, I have in
0283A0: 73 74 72 75 63 74 69 6F 6E 73 20 6F 6E 20 68 6F structions on ho
0283B0: 77 20 74 6F 20 62 75 69 6C 64 0D 0A 20 20 20 79 w to build.. y
0283C0: 6F 75 72 20 6F 77 6E 20 4D 49 44 49 20 69 6E 74 our own MIDI int
0283D0: 65 72 66 61 63 65 20 69 66 20 61 6E 79 6F 6E 65 erface if anyone
0283E0: 20 69 73 20 67 6F 6F 64 20 65 6E 6F 75 67 68 20 is good enough
0283F0: 61 74 20 47 65 72 6D 61 6E 20 74 6F 20 66 6F 6C at German to fol
028400: 6C 6F 77 20 74 68 65 6D 2E 0D 0A 0D 0A 20 20 20 low them.....
028410: 59 6F 75 20 77 69 6C 6C 20 61 6C 73 6F 20 6E 65 You will also ne
028420: 65 64 20 61 20 4D 49 44 49 20 6C 65 61 64 20 74 ed a MIDI lead t
028430: 6F 20 63 6F 6E 6E 65 63 74 20 79 6F 75 72 20 43 o connect your C
028440: 50 43 20 74 6F 20 74 68 65 20 4D 49 44 49 20 69 PC to the MIDI i
028450: 6E 73 74 72 75 6D 65 6E 74 2C 0D 0A 20 20 20 62 nstrument,.. b
028460: 75 74 20 74 68 65 73 65 20 61 72 65 20 65 61 73 ut these are eas
028470: 69 6C 79 20 6F 62 74 61 69 6E 65 64 20 69 6E 20 ily obtained in
028480: 6D 75 73 69 63 20 73 68 6F 70 73 2E 0D 0A 0D 0A music shops.....
028490: 20 20 20 53 4F 20 57 48 41 54 20 43 41 4E 20 59 SO WHAT CAN Y
0284A0: 4F 55 20 44 4F 20 57 49 54 48 20 4D 49 44 49 3F OU DO WITH MIDI?
0284B0: 0D 0A 20 20 20 54 68 65 72 65 20 61 72 65 20 61 .. There are a
0284C0: 6C 6C 20 73 6F 72 74 73 20 6F 66 20 61 70 70 6C ll sorts of appl
0284D0: 69 63 61 74 69 6F 6E 73 20 66 6F 72 20 20 4D 49 ications for MI
0284E0: 44 49 2C 20 61 6E 64 20 6E 6F 74 20 61 6C 6C 20 DI, and not all
0284F0: 6F 66 20 74 68 65 6D 20 69 6E 76 6F 6C 76 65 0D of them involve.
028500: 74 20 6D 6F 6E 74 68 27 73 20 42 6C 61 73 74 20 t month's Blast
028510: 66 72 6F 6D 20 74 68 65 20 50 61 73 74 20 61 72 from the Past ar
028520: 65 20 20 61 6E 79 74 68 69 6E 67 20 74 6F 20 67 e anything to g
028530: 6F 20 62 79 2C 20 77 65 20 68 61 76 65 20 70 6C o by, we have pl
028540: 65 6E 74 79 0D 0A 20 20 20 6F 66 20 72 65 61 73 enty.. of reas
028550: 6F 6E 20 74 6F 20 63 65 6C 65 62 72 61 74 65 2E on to celebrate.
028560: 20 20 54 68 65 6E 20 20 61 67 61 69 6E 2C 20 20 Then again,
028570: 49 20 20 68 61 76 65 20 20 72 75 6E 20 6F 75 74 I have run out
028580: 20 6F 66 20 69 6E 73 70 69 72 61 74 69 6F 6E 20 of inspiration
028590: 66 6F 72 0D 0A 20 20 20 73 75 62 68 65 61 64 73 for.. subheads
0285A0: 20 74 68 69 73 20 6D 6F 6E 74 68 2E 2E 2E 0D 0A this month.....
0285B0: 0D 0A 20 20 20 53 4F 20 57 48 41 54 20 49 53 20 .. SO WHAT IS
0285C0: 4D 49 44 49 20 54 48 45 4E 3F 0D 0A 20 20 20 49 MIDI THEN?.. I
0285D0: 20 73 75 70 70 6F 73 65 20 77 65 20 6F 75 67 68 suppose we ough
0285E0: 74 20 20 74 6F 20 20 73 74 61 72 74 20 20 77 69 t to start wi
0285F0: 74 68 20 20 74 68 65 20 20 6F 62 6C 69 67 61 74 th the obligat
028600: 6F 72 79 20 65 78 70 6C 61 6E 61 74 69 6F 6E 20 ory explanation
028610: 74 68 61 74 20 4D 49 44 49 0D 0A 20 20 20 73 74 that MIDI.. st
028620: 61 6E 64 73 20 66 6F 72 20 4D 75 73 69 63 61 6C ands for Musical
028630: 20 49 6E 73 74 72 75 6D 65 6E 74 20 20 44 69 67 Instrument Dig
028640: 69 74 61 6C 20 20 49 6E 74 65 72 66 61 63 65 2C ital Interface,
028650: 20 20 61 6E 64 20 20 69 73 20 61 20 73 74 61 6E and is a stan
028660: 64 61 72 64 20 66 6F 72 0D 0A 20 20 20 63 6F 6E dard for.. con
028670: 74 72 6F 6C 20 61 6E 64 20 63 6F 6D 6D 75 6E 69 trol and communi
028680: 63 61 74 69 6F 6E 20 64 65 76 65 6C 6F 70 65 64 cation developed
028690: 20 20 62 79 20 20 74 68 65 20 6D 61 6A 6F 72 20 by the major
0286A0: 6B 65 79 62 6F 61 72 64 20 6D 61 6E 75 66 61 63 keyboard manufac
0286B0: 74 75 72 65 72 73 2E 0D 0A 20 20 20 41 6C 6C 20 turers... All
0286C0: 6D 6F 64 65 72 6E 20 6B 65 79 62 6F 61 72 64 73 modern keyboards
0286D0: 20 28 65 78 63 65 70 74 20 20 74 68 65 20 20 63 (except the c
0286E0: 68 65 61 70 65 72 20 20 6D 6F 64 65 6C 73 29 20 heaper models)
0286F0: 20 68 61 76 65 20 4D 49 44 49 20 73 6F 63 6B 65 have MIDI socke
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 C9 02 00 00 00 02 ".....N.".......
028720: 22 00 C5 02 00 00 00 02 22 00 C1 02 00 00 00 02 ".......".......
028730: 22 00 C6 02 00 00 00 02 22 00 C2 02 00 00 00 02 ".......".......
028740: 22 00 C7 02 00 00 00 02 22 00 C3 02 00 00 00 02 ".......".......
028750: 22 00 C8 02 00 00 00 02 22 00 C4 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: 73 74 61 72 74 73 20 77 69 74 68 0D 0A 20 20 20 starts with..
028810: 38 20 69 6E 73 74 65 61 64 20 6F 66 20 39 2E 20 8 instead of 9.
028820: 20 57 65 20 68 61 76 65 20 74 6F 20 73 75 70 70 We have to supp
028830: 6C 79 20 20 74 68 65 20 20 70 69 74 63 68 20 6F ly the pitch o
028840: 66 20 74 68 65 20 6E 6F 74 65 20 77 65 20 77 61 f the note we wa
028850: 6E 74 20 74 6F 20 74 75 72 6E 0D 0A 20 20 20 6F nt to turn.. o
028860: 66 66 2C 20 61 73 20 77 65 20 63 6F 75 6C 64 20 ff, as we could
028870: 68 61 76 65 20 73 65 76 65 72 61 6C 20 64 69 66 have several dif
028880: 66 65 72 65 6E 74 20 20 6E 6F 74 65 73 20 70 6C ferent notes pl
028890: 61 79 69 6E 67 20 61 74 20 6F 6E 63 65 2C 20 61 aying at once, a
0288A0: 6C 6C 20 6F 6E 20 74 68 65 0D 0A 20 20 20 73 61 ll on the.. sa
0288B0: 6D 65 20 63 68 61 6E 6E 65 6C 2E 20 20 54 68 65 me channel. The
0288C0: 20 76 65 6C 6F 63 69 74 79 20 69 73 20 75 73 65 velocity is use
0288D0: 64 20 20 69 6E 20 20 73 6F 6D 65 20 74 79 70 65 d in some type
0288E0: 73 20 6F 66 20 69 6E 73 74 72 75 6D 65 6E 74 20 s of instrument
0288F0: 6E 6F 69 73 65 20 74 6F 0D 0A 20 20 20 64 65 74 noise to.. det
028900: 65 72 6D 69 6E 65 20 68 6F 77 20 74 68 65 20 6E ermine how the n
028910: 6F 74 65 20 69 73 20 73 69 6C 65 6E 63 65 64 2E ote is silenced.
028920: 0D 0A 0D 0A 20 20 20 54 68 65 20 42 41 53 49 43 .... The BASIC
028930: 20 6C 69 73 74 69 6E 67 20 70 75 74 73 20 61 6C listing puts al
028940: 6C 20 74 68 61 74 20 74 6F 67 65 74 68 65 72 20 l that together
028950: 20 69 6E 20 61 20 73 69 6D 70 6C 65 20 70 72 6F in a simple pro
028960: 67 72 61 6D 20 74 68 61 74 20 70 6C 61 79 73 20 gram that plays
028970: 61 0D 0A 20 20 20 73 69 6E 67 6C 65 20 4D 69 64 a.. single Mid
028980: 64 6C 65 20 43 2E 20 20 49 74 20 69 73 20 73 65 dle C. It is se
028990: 74 20 20 75 70 20 20 66 6F 72 20 20 74 68 65 20 t up for the
0289A0: 20 52 41 4D 20 20 4D 75 73 69 63 20 4D 61 63 68 RAM Music Mach
0289B0: 69 6E 65 2C 20 62 75 74 20 79 6F 75 20 63 61 6E ine, but you can
0289C0: 0D 0A 20 20 20 61 64 61 70 74 20 69 74 20 66 6F .. adapt it fo
0289D0: 72 20 74 68 65 20 6F 74 68 65 72 20 69 6E 74 65 r the other inte
0289E0: 72 66 61 63 65 73 20 62 79 20 20 63 68 61 6E 67 rfaces by chang
0289F0: 69 6E 67 20 20 74 68 65 20 76 61 6C 75 65 73 20 ing the values
028A00: 77 65 72 65 20 73 65 6E 74 20 6F 6E 20 63 68 61 were sent on cha
028A10: 6E 6E 65 6C 20 31 30 2C 20 77 68 69 6C 65 20 74 nnel 10, while t
028A20: 68 65 0D 0A 20 20 20 6B 65 79 62 6F 61 72 64 20 he.. keyboard
028A30: 77 6F 75 6C 64 20 62 65 20 6C 69 73 74 65 6E 69 would be listeni
028A40: 6E 67 20 6F 75 74 20 6F 6E 20 63 68 61 6E 6E 65 ng out on channe
028A50: 6C 20 20 31 2E 20 20 54 68 65 20 77 61 79 20 74 l 1. The way t
028A60: 68 65 73 65 20 63 68 61 6E 6E 65 6C 73 20 61 72 hese channels ar
028A70: 65 0D 0A 20 20 20 64 65 74 65 72 6D 69 6E 65 64 e.. determined
028A80: 20 69 73 20 6E 6F 74 20 62 79 20 20 68 6F 77 20 is not by how
028A90: 20 74 68 65 20 20 62 6F 78 65 73 20 20 61 72 65 the boxes are
028AA0: 20 20 70 6C 75 67 67 65 64 20 74 6F 67 65 74 68 plugged togeth
028AB0: 65 72 2E 20 20 49 6E 73 74 65 61 64 20 79 6F 75 er. Instead you
028AC0: 0D 0A 20 20 20 73 65 6C 65 63 74 20 74 68 65 20 .. select the
028AD0: 63 68 61 6E 6E 65 6C 20 62 79 20 75 73 69 6E 67 channel by using
028AE0: 20 74 68 65 20 63 6F 6E 74 72 6F 6C 73 20 6F 6E the controls on
028AF0: 20 74 68 65 20 64 72 75 6D 20 62 6F 78 20 6F 72 the drum box or
028B00: 20 6B 65 79 62 6F 61 72 64 2E 0D 0A 0D 0A 20 20 keyboard.....
028B10: 20 49 6E 20 66 61 63 74 20 6D 6F 73 74 20 6D 6F In fact most mo
028B20: 64 65 72 6E 20 6B 65 79 62 6F 61 72 64 73 20 20 dern keyboards
028B30: 61 6E 64 20 20 76 6F 69 63 65 20 20 62 6F 78 65 and voice boxe
028B40: 73 20 77 69 6C 6C 20 64 65 66 61 75 6C 74 20 74 s will default t
028B50: 6F 20 6C 69 73 74 65 6E 69 6E 67 0D 0A 20 20 20 o listening..
028B60: 6F 75 74 20 6F 6E 20 61 6C 6C 20 63 68 61 6E 6E out on all chann
028B70: 65 6C 73 20 61 74 20 6F 6E 63 65 2E 20 20 54 68 els at once. Th
028B80: 75 73 20 20 77 69 74 68 20 20 6A 75 73 74 20 6F us with just o
028B90: 6E 65 20 6B 65 79 62 6F 61 72 64 20 79 6F 75 20 ne keyboard you
028BA0: 63 61 6E 20 73 65 6E 64 20 61 0D 0A 20 20 20 63 can send a.. c
028BB0: 6F 6D 6D 61 6E 64 20 6F 75 74 20 6F 6E 20 63 68 ommand out on ch
028BC0: 61 6E 6E 65 6C 20 31 20 74 6F 20 63 68 6F 6F 73 annel 1 to choos
028BD0: 65 20 61 20 76 69 6F 6C 69 6E 20 6E 6F 69 73 65 e a violin noise
028BE0: 2C 20 61 6E 64 20 61 73 6B 20 63 68 61 6E 6E 65 , and ask channe
028BF0: 6C 20 32 20 74 6F 20 62 65 0D 0A 20 20 20 61 20 l 2 to be.. a
028C00: 72 65 6E 74 20 74 79 70 65 20 6F 66 0D 0A 20 20 rent type of..
028C10: 20 69 6E 74 65 72 66 61 63 65 2C 20 49 20 77 6F interface, I wo
028C20: 75 6C 64 20 62 65 20 76 65 72 79 20 69 6E 74 65 uld be very inte
028C30: 72 65 73 74 65 64 20 74 6F 20 6B 6E 6F 77 2E 0D rested to know..
028C40: 0A 0D 0A 20 20 20 53 45 4E 44 49 4E 47 20 4D 49 ... SENDING MI
028C50: 44 49 20 44 41 54 41 0D 0A 20 20 20 54 68 65 20 DI DATA.. The
028C60: 65 61 73 69 65 73 74 20 6F 70 65 72 61 74 69 6F easiest operatio
028C70: 6E 20 69 73 20 73 65 6E 64 69 6E 67 20 64 61 74 n is sending dat
028C80: 61 20 74 6F 20 20 74 68 65 20 4D 49 44 49 20 64 a to the MIDI d
028C90: 65 76 69 63 65 73 20 61 74 74 61 63 68 65 64 20 evices attached
028CA0: 74 6F 20 74 68 65 0D 0A 20 20 20 69 6E 74 65 72 to the.. inter
028CB0: 66 61 63 65 2E 20 20 59 6F 75 20 63 61 6E 20 69 face. You can i
028CC0: 6E 20 20 66 61 63 74 20 20 64 6F 20 20 74 68 69 n fact do thi
028CD0: 73 20 20 65 6E 74 69 72 65 6C 79 20 20 66 72 6F s entirely fro
028CE0: 6D 20 20 42 41 53 49 43 2C 20 20 61 6E 64 20 49 m BASIC, and I
028CF0: 20 77 69 6C 6C 0D 0A 20 20 20 70 72 65 73 65 6E will.. presen
028D00: 74 20 69 74 20 69 6E 20 74 68 69 73 20 66 6F 72 t it in this for
028D10: 6D 20 20 74 6F 20 20 73 74 61 72 74 20 20 77 69 m to start wi
028D20: 74 68 2E 20 20 20 42 65 74 74 65 72 20 72 65 73 th. Better res
028D30: 75 6C 74 73 20 63 61 6E 20 62 65 20 61 63 68 69 ults can be achi
028D40: 65 76 65 64 0D 0A 20 20 20 77 69 74 68 20 61 20 eved.. with a
028D50: 73 70 6F 74 20 6F 66 20 6D 61 63 68 69 6E 65 20 spot of machine
028D60: 63 6F 64 65 20 6F 66 20 63 6F 75 72 73 65 2E 0D code of course..
028D70: 0A 0D 0A 20 20 20 46 69 72 73 74 20 77 65 20 6E ... First we n
028D80: 65 65 64 20 74 6F 20 72 65 73 65 74 20 74 68 65 eed to reset the
028D90: 20 20 69 6E 74 65 72 66 61 63 65 20 20 61 6E 64 interface and
028DA0: 20 20 67 65 74 20 69 74 20 72 65 61 64 79 20 66 get it ready f
028DB0: 6F 72 20 73 65 6E 64 69 6E 67 20 64 61 74 61 2E or sending data.
028DC0: 0D 0A 20 20 20 4F 6E 20 74 68 65 20 45 4D 52 20 .. On the EMR
028DD0: 69 6E 74 65 72 66 61 63 65 2C 20 74 68 69 73 20 interface, this
028DE0: 69 73 20 64 6F 6E 65 20 77 69 74 68 3A 0D 0A 0D is done with:...
028DF0: 0A 20 20 20 20 20 4F 55 54 20 26 46 38 46 32 2C . OUT &F8F2,
028E00: 70 69 61 6E 6F 2E 20 20 54 68 65 6E 20 61 6E 79 piano. Then any
028E10: 20 4E 6F 74 65 20 4F 6E 20 65 76 65 6E 74 73 20 Note On events
028E20: 73 65 6E 74 20 20 6F 75 74 20 6F 6E 20 63 68 61 sent out on cha
028E30: 6E 6E 65 6C 20 31 20 77 69 6C 6C 20 62 65 20 70 nnel 1 will be p
028E40: 6C 61 79 65 64 20 62 79 0D 0A 20 20 20 79 6F 75 layed by.. you
028E50: 72 20 6B 65 79 62 6F 61 72 64 20 77 69 74 68 20 r keyboard with
028E60: 74 68 65 20 76 69 6F 6C 69 6E 20 6E 6F 69 73 65 the violin noise
028E70: 2C 20 61 6E 64 20 6E 6F 74 65 73 20 6F 6E 20 63 , and notes on c
028E80: 68 61 6E 6E 65 6C 20 32 20 77 69 6C 6C 20 62 65 hannel 2 will be
028E90: 20 70 6C 61 79 65 64 0D 0A 20 20 20 77 69 74 68 played.. with
028EA0: 20 74 68 65 20 70 69 61 6E 6F 20 6E 6F 69 73 65 the piano noise
028EB0: 2E 0D 0A 0D 0A 20 20 20 54 6F 20 74 75 72 6E 20 ..... To turn
028EC0: 61 20 6E 6F 74 65 20 6F 6E 2C 20 77 65 20 74 72 a note on, we tr
028ED0: 61 6E 73 6D 69 74 20 74 68 72 65 65 20 62 79 74 ansmit three byt
028EE0: 65 73 20 69 6E 20 73 65 71 75 65 6E 63 65 3A 0D es in sequence:.
028EF0: 0A 0D 0A 20 20 20 20 20 26 39 78 20 20 3C 70 69 ... &9x <pi
028F00: 74 63 68 3E 20 20 3C 76 65 6C 6F 63 69 74 79 3E tch> <velocity>
028F10: 0D 0A 0D 0A 20 20 20 54 68 65 20 66 69 72 73 74 .... The first
028F20: 20 69 73 20 74 68 65 20 63 6F 6D 6D 61 6E 64 20 is the command
028F30: 20 62 79 74 65 2C 20 20 61 6E 64 20 20 26 39 78 byte, and &9x
028F40: 20 20 6D 65 61 6E 73 20 20 4E 6F 74 65 20 20 4F means Note O
028F50: 6E 2C 20 77 68 65 72 65 20 78 20 69 73 20 74 68 n, where x is th
028F60: 65 0D 0A 20 20 20 63 68 61 6E 6E 65 6C 20 6E 75 e.. channel nu
028F70: 6D 62 65 72 20 66 72 6F 6D 20 30 20 74 6F 20 46 mber from 0 to F
028F80: 20 20 69 6E 20 20 68 65 78 61 64 65 63 69 6D 61 in hexadecima
028F90: 6C 2E 20 20 20 44 69 64 20 49 20 73 61 79 20 74 l. Did I say t
028FA0: 68 65 20 63 68 61 6E 6E 65 6C 73 20 77 65 72 65 he channels were
028FB0: 0D 0A 20 20 20 6E 75 6D 62 65 72 65 64 20 66 72 .. numbered fr
028FC0: 6F 6D 20 31 20 74 6F 20 31 36 3F 20 20 20 59 65 om 1 to 16? Ye
028FD0: 73 2C 20 20 77 65 6C 6C 20 20 75 6E 6C 69 6B 65 s, well unlike
028FE0: 20 63 6F 6D 70 75 74 65 72 20 73 63 69 65 6E 74 computer scient
028FF0: 69 73 74 73 2C 20 6D 75 73 69 63 69 61 6E 73 0D ists, musicians.
029000: 33 3A 4F 55 54 20 26 46 38 46 32 2C 26 31 36 0D 3:OUT &F8F2,&16.
029010: 0A 0D 0A 20 20 20 54 68 65 20 44 48 43 50 20 69 ... The DHCP i
029020: 6E 74 65 72 66 61 63 65 20 69 73 20 64 6F 6E 65 nterface is done
029030: 20 74 68 65 20 73 61 6D 65 20 77 61 79 20 62 75 the same way bu
029040: 74 20 77 69 74 68 20 26 46 38 45 30 20 28 74 68 t with &F8E0 (th
029050: 65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 e address of the
029060: 0D 0A 20 20 20 44 48 43 50 27 73 20 63 6F 6E 74 .. DHCP's cont
029070: 72 6F 6C 20 70 6F 72 74 29 20 69 6E 73 74 65 61 rol port) instea
029080: 64 20 6F 66 20 26 46 38 46 32 20 69 6E 20 65 61 d of &F8F2 in ea
029090: 63 68 20 63 61 73 65 2E 0D 0A 0D 0A 20 20 20 54 ch case..... T
0290A0: 68 65 20 52 41 4D 20 4D 75 73 69 63 20 4D 61 63 he RAM Music Mac
0290B0: 68 69 6E 65 20 20 69 73 20 20 73 6C 69 67 68 74 hine is slight
0290C0: 6C 79 20 20 64 69 66 66 65 72 65 6E 74 2C 20 20 ly different,
0290D0: 61 73 20 20 74 68 65 20 20 73 65 63 6F 6E 64 20 as the second
0290E0: 62 79 74 65 20 73 65 6E 74 0D 0A 20 20 20 73 68 byte sent.. sh
0290F0: 6F 75 6C 64 20 62 65 20 26 31 35 20 69 6E 73 74 ould be &15 inst
029100: 65 61 64 20 6F 66 20 26 31 36 3A 0D 0A 0D 0A 20 ead of &16:....
029110: 20 20 20 20 4F 55 54 20 26 46 38 45 43 2C 33 3A OUT &F8EC,3:
029120: 4F 55 54 20 26 46 38 45 43 2C 26 31 35 0D 0A 0D OUT &F8EC,&15...
029130: 0A 20 20 20 4F 6E 63 65 20 74 68 61 74 20 69 73 . Once that is
029140: 20 64 6F 6E 65 2C 20 77 65 20 63 61 6E 20 20 74 done, we can t
029150: 72 61 6E 73 6D 69 74 20 20 74 68 65 20 64 61 74 ransmit the dat
029160: 61 2E 20 20 54 68 69 73 20 65 6E 74 61 69 6C 73 a. This entails
029170: 20 77 61 69 74 69 6E 67 20 75 6E 74 69 6C 0D 0A waiting until..
029180: 20 20 20 62 69 74 20 32 20 69 73 20 20 73 65 74 bit 2 is set
029190: 20 20 6F 6E 20 20 74 68 65 20 20 73 74 61 74 75 on the statu
0291A0: 73 20 20 70 6F 72 74 2C 20 20 61 6E 64 20 20 74 s port, and t
0291B0: 68 65 6E 20 20 73 65 6E 64 69 6E 67 20 20 74 68 hen sending th
0291C0: 65 20 20 62 79 74 65 20 74 6F 20 62 65 0D 0A 20 e byte to be..
0291D0: 20 20 74 72 61 6E 73 6D 69 74 74 65 64 20 74 6F transmitted to
0291E0: 20 74 68 65 20 64 61 74 61 20 77 72 69 74 65 20 the data write
0291F0: 70 6F 72 74 2E 20 20 54 69 6D 65 20 66 6F 72 20 port. Time for
029200: 0A 20 20 20 73 74 61 72 74 20 63 6F 75 6E 74 69 . start counti
029210: 6E 67 20 61 74 20 6F 6E 65 2C 20 73 6F 20 74 68 ng at one, so th
029220: 61 74 20 20 69 73 20 20 68 6F 77 20 74 68 65 20 at is how the
029230: 63 68 61 6E 6E 65 6C 73 20 61 72 65 20 61 6C 77 channels are alw
029240: 61 79 73 20 64 65 73 63 72 69 62 65 64 2C 0D 0A ays described,..
029250: 20 20 20 62 75 74 20 61 73 20 66 61 72 20 61 73 but as far as
029260: 20 74 68 65 20 63 6F 6D 70 75 74 65 72 20 69 73 the computer is
029270: 20 63 6F 6E 63 65 72 6E 65 64 20 74 68 65 79 20 concerned they
029280: 61 72 65 20 6E 75 6D 62 65 72 65 64 20 30 20 74 are numbered 0 t
029290: 6F 20 31 35 20 28 6F 72 20 30 20 74 6F 0D 0A 20 o 15 (or 0 to..
0292A0: 20 20 46 20 69 6E 20 68 65 78 29 2E 0D 0A 0D 0A F in hex).....
0292B0: 20 20 20 50 69 74 63 68 20 69 73 20 68 6F 77 20 Pitch is how
0292C0: 68 69 67 68 20 74 68 65 20 6E 6F 74 65 20 69 73 high the note is
0292D0: 2C 20 61 6E 64 20 69 73 20 20 61 20 76 61 6C 75 , and is a valu
0292E0: 65 20 66 72 6F 6D 20 30 20 74 6F 20 31 32 37 2E e from 0 to 127.
0292F0: 20 20 4D 69 64 64 6C 65 20 43 20 69 73 0D 0A 20 Middle C is..
029300: 20 20 36 30 2C 20 43 20 73 68 61 72 70 20 69 73 60, C sharp is
029310: 20 36 31 2C 20 61 6E 64 20 73 6F 20 20 6F 6E 2E 61, and so on.
029320: 20 20 20 56 65 6C 6F 63 69 74 79 20 20 69 73 20 Velocity is
029330: 74 68 65 20 4D 49 44 49 20 6A 61 72 67 6F 6E 20 the MIDI jargon
029340: 74 65 72 6D 20 66 6F 72 20 68 6F 77 0D 0A 20 20 term for how..
029350: 20 6C 6F 75 64 20 74 68 65 20 6E 6F 74 65 20 69 loud the note i
029360: 73 20 28 74 68 69 6E 6B 20 6F 66 20 68 69 74 74 s (think of hitt
029370: 69 6E 67 20 20 61 20 20 70 69 61 6E 6F 20 20 6B ing a piano k
029380: 65 79 29 2C 20 61 6E 64 20 61 6C 73 6F 20 72 61 ey), and also ra
029390: 6E 67 65 73 20 66 72 6F 6D 20 30 0D 0A 20 20 20 nges from 0..
0293A0: 28 73 69 6C 65 6E 74 29 20 74 6F 20 31 32 37 20 (silent) to 127
0293B0: 28 6C 6F 75 64 65 73 74 29 2E 20 20 53 6F 20 74 (loudest). So t
0293C0: 6F 20 73 74 61 72 74 20 61 20 4D 69 64 64 6C 65 o start a Middle
0293D0: 20 43 20 70 6C 61 79 69 6E 67 20 6F 6E 20 63 68 C playing on ch
0293E0: 61 6E 6E 65 6C 20 31 20 61 74 0D 0A 20 20 20 6D annel 1 at.. m
0293F0: 65 64 69 75 6D 20 76 6F 6C 75 6D 65 2C 20 77 65 edium volume, we
029400: 61 20 73 75 62 72 6F 75 74 69 6E 65 3A 0D 0A 0D a subroutine:...
029410: 0A 20 20 20 31 30 30 20 57 48 49 4C 45 20 28 49 . 100 WHILE (I
029420: 4E 50 28 73 74 61 74 75 73 29 20 41 4E 44 20 32 NP(status) AND 2
029430: 29 3D 30 3A 57 45 4E 44 0D 0A 20 20 20 31 31 30 )=0:WEND.. 110
029440: 20 4F 55 54 20 64 61 74 61 77 72 69 74 65 2C 64 OUT datawrite,d
029450: 0D 0A 20 20 20 31 32 30 20 52 45 54 55 52 4E 0D .. 120 RETURN.
029460: 0A 0D 0A 20 20 20 41 74 20 74 68 65 20 73 74 61 ... At the sta
029470: 72 74 20 6F 66 20 20 79 6F 75 72 20 20 70 72 6F rt of your pro
029480: 67 72 61 6D 20 20 79 6F 75 20 20 73 68 6F 75 6C gram you shoul
029490: 64 20 20 73 65 74 20 20 74 68 65 20 76 61 72 69 d set the vari
0294A0: 61 62 6C 65 73 20 73 74 61 74 75 73 20 61 6E 64 ables status and
0294B0: 0D 0A 20 20 20 64 61 74 61 77 72 69 74 65 20 61 .. datawrite a
0294C0: 63 63 6F 72 64 69 6E 67 20 74 6F 20 77 68 69 63 ccording to whic
0294D0: 68 20 69 6E 74 65 72 66 61 63 65 20 79 6F 75 20 h interface you
0294E0: 20 61 72 65 20 20 75 73 69 6E 67 2E 20 20 54 6F are using. To
0294F0: 20 73 65 6E 64 20 61 20 62 79 74 65 20 74 6F 0D send a byte to.
029500: 0A 20 20 20 74 68 65 20 4D 49 44 49 20 69 6E 74 . the MIDI int
029510: 65 72 66 61 63 65 2C 20 61 6C 6C 20 79 6F 75 20 erface, all you
029520: 64 6F 20 69 73 20 70 75 74 20 74 68 65 20 20 76 do is put the v
029530: 61 6C 75 65 20 79 6F 75 20 77 61 6E 74 20 74 6F alue you want to
029540: 20 73 65 6E 64 20 69 6E 20 64 20 61 6E 64 0D 0A send in d and..
029550: 20 20 20 47 4F 53 55 42 20 31 30 30 2E 20 20 4C GOSUB 100. L
029560: 69 6E 65 20 31 30 30 20 77 61 69 74 73 20 20 75 ine 100 waits u
029570: 6E 74 69 6C 20 20 74 68 65 20 20 69 6E 74 65 72 ntil the inter
029580: 66 61 63 65 20 20 69 73 20 20 72 65 61 64 79 20 face is ready
029590: 74 6F 20 74 72 61 6E 73 6D 69 74 20 61 0D 0A 20 to transmit a..
0295A0: 20 20 62 79 74 65 2C 20 61 6E 64 20 74 68 65 6E byte, and then
0295B0: 20 6C 69 6E 65 20 31 31 30 20 73 65 6E 64 73 20 line 110 sends
0295C0: 69 74 2E 0D 0A 0D 0A 20 20 20 4D 49 44 49 20 4E it..... MIDI N
0295D0: 4F 54 45 20 43 4F 4D 4D 41 4E 44 53 0D 0A 20 20 OTE COMMANDS..
0295E0: 20 4F 66 20 63 6F 75 72 73 65 2C 20 79 6F 75 20 Of course, you
0295F0: 61 6C 73 6F 20 6E 65 65 64 20 74 6F 20 20 6B 6E also need to kn
029600: 20 77 6F 75 6C 64 20 74 72 61 6E 73 6D 69 74 20 would transmit
029610: 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 62 79 the following by
029620: 74 65 73 3A 0D 0A 0D 0A 20 20 20 20 20 26 39 30 tes:.... &90
029630: 2C 20 36 30 2C 20 36 34 0D 0A 0D 0A 20 20 20 4E , 60, 64.... N
029640: 6F 74 69 63 65 20 74 68 61 74 20 6F 6E 6C 79 20 otice that only
029650: 74 68 65 20 20 66 69 72 73 74 20 20 6F 6E 65 20 the first one
029660: 20 69 73 20 20 77 72 69 74 74 65 6E 20 20 69 6E is written in
029670: 20 20 68 65 78 3A 20 20 74 68 65 20 6F 74 68 65 hex: the othe
029680: 72 20 74 77 6F 20 61 72 65 0D 0A 20 20 20 64 65 r two are.. de
029690: 63 69 6D 61 6C 2E 0D 0A 0D 0A 20 20 20 54 68 65 cimal..... The
0296A0: 20 6E 6F 74 65 20 77 69 6C 6C 20 63 6F 6E 74 69 note will conti
0296B0: 6E 75 65 20 70 6C 61 79 69 6E 67 20 75 6E 74 69 nue playing unti
0296C0: 6C 20 77 65 20 20 74 65 6C 6C 20 20 69 74 20 74 l we tell it t
0296D0: 6F 20 73 74 6F 70 2E 20 20 4F 66 20 63 6F 75 72 o stop. Of cour
0296E0: 73 65 20 77 69 74 68 0D 0A 20 20 20 73 6F 6D 65 se with.. some
0296F0: 20 69 6E 73 74 72 75 6D 65 6E 74 73 2C 20 73 75 instruments, su
029700: 63 68 20 61 73 20 70 69 61 6E 6F 2C 20 69 74 20 ch as piano, it
029710: 20 77 69 6C 6C 20 20 64 69 65 20 61 77 61 79 20 will die away
029720: 74 6F 20 6E 6F 74 68 69 6E 67 20 65 76 65 6E 74 to nothing event
029730: 75 61 6C 6C 79 2C 0D 0A 20 20 20 62 75 74 20 77 ually,.. but w
029740: 69 74 68 20 61 6E 20 6F 72 67 61 6E 20 6E 6F 69 ith an organ noi
029750: 73 65 20 69 74 20 77 69 6C 6C 20 6B 65 65 70 20 se it will keep
029760: 67 6F 69 6E 67 2E 20 20 54 6F 20 74 75 72 6E 20 going. To turn
029770: 69 74 20 6F 66 66 2C 20 77 65 20 74 72 61 6E 73 it off, we trans
029780: 6D 69 74 20 61 0D 0A 20 20 20 4E 6F 74 65 20 4F mit a.. Note O
029790: 66 66 20 65 76 65 6E 74 3A 0D 0A 0D 0A 20 20 20 ff event:....
0297A0: 20 20 26 38 78 20 20 3C 70 69 74 63 68 3E 20 20 &8x <pitch>
0297B0: 3C 76 65 6C 6F 63 69 74 79 3E 0D 0A 0D 0A 20 20 <velocity>....
0297C0: 20 54 68 69 73 20 69 73 20 76 65 72 79 20 73 69 This is very si
0297D0: 6D 69 6C 61 72 20 74 6F 20 4E 6F 74 65 20 4F 6E milar to Note On
0297E0: 2C 20 20 65 78 63 65 70 74 20 74 68 61 74 20 74 , except that t
0297F0: 68 65 20 63 6F 6D 6D 61 6E 64 20 62 79 74 65 20 he command byte
029800: 6F 77 20 20 77 68 61 74 20 20 64 61 74 61 20 20 ow what data
029810: 74 6F 20 74 72 61 6E 73 6D 69 74 2E 20 20 4E 65 to transmit. Ne
029820: 78 74 20 6D 6F 6E 74 68 20 77 65 0D 0A 20 20 20 xt month we..
029830: 77 69 6C 6C 20 67 6F 20 69 6E 74 6F 20 74 68 69 will go into thi
029840: 73 20 6D 6F 72 65 20 64 65 65 70 6C 79 2C 20 62 s more deeply, b
029850: 75 74 20 66 6F 72 20 6E 6F 77 20 77 65 20 77 69 ut for now we wi
029860: 6C 6C 20 6C 6F 6F 6B 20 61 74 20 74 68 65 20 63 ll look at the c
029870: 6F 6D 6D 61 6E 64 73 20 74 6F 0D 0A 20 20 20 74 ommands to.. t
029880: 75 72 6E 20 6E 6F 74 65 73 20 6F 6E 20 61 6E 64 urn notes on and
029890: 20 6F 66 66 2E 0D 0A 0D 0A 20 20 20 4D 49 44 49 off..... MIDI
0298A0: 20 63 6F 6D 6D 61 6E 64 73 20 74 6F 20 64 65 61 commands to dea
0298B0: 6C 20 77 69 74 68 20 6E 6F 74 65 73 20 61 72 65 l with notes are
0298C0: 20 74 72 61 6E 73 6D 69 74 74 65 64 20 6F 6E 20 transmitted on
0298D0: 22 63 68 61 6E 6E 65 6C 73 22 2E 20 20 54 68 65 "channels". The
0298E0: 72 65 20 61 72 65 0D 0A 20 20 20 73 69 78 74 65 re are.. sixte
0298F0: 65 6E 20 63 68 61 6E 6E 65 6C 73 2C 20 6E 75 6D en channels, num
029900: 62 65 72 65 64 20 31 20 74 6F 20 31 36 2C 20 61 bered 1 to 16, a
029910: 6E 64 20 20 65 61 63 68 20 6F 66 20 74 68 65 73 nd each of thes
029920: 65 20 63 6F 75 6C 64 20 63 6F 72 72 65 73 70 6F e could correspo
029930: 6E 64 20 74 6F 0D 0A 20 20 20 61 20 64 69 66 66 nd to.. a diff
029940: 65 72 65 6E 74 20 4D 49 44 49 20 64 65 76 69 63 erent MIDI devic
029950: 65 2E 20 20 20 46 6F 72 20 20 65 78 61 6D 70 6C e. For exampl
029960: 65 2C 20 20 79 6F 75 20 20 6D 69 67 68 74 20 20 e, you might
029970: 68 61 76 65 20 20 61 20 20 64 72 75 6D 20 62 6F have a drum bo
029980: 78 20 6F 6E 0D 0A 20 20 20 63 68 61 6E 6E 65 6C x on.. channel
029990: 20 31 30 2C 20 61 6E 64 20 61 20 6B 65 79 62 6F 10, and a keybo
0299A0: 61 72 64 20 6F 6E 20 63 68 61 6E 6E 65 6C 20 20 ard on channel
0299B0: 31 2E 20 20 54 68 65 20 64 72 75 6D 20 62 6F 78 1. The drum box
0299C0: 20 77 6F 75 6C 64 20 6F 6E 6C 79 20 72 65 73 70 would only resp
0299D0: 6F 6E 64 0D 0A 20 20 20 74 6F 20 4E 6F 74 65 20 ond.. to Note
0299E0: 4F 6E 20 61 6E 64 20 4E 6F 74 65 20 4F 66 66 20 On and Note Off
0299F0: 65 76 65 6E 74 73 20 69 66 20 20 74 68 65 79 20 events if they
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 20 20 20 73 74 61 72 74 69 6E 67 20 61 20 4D . starting a M
029B10: 69 64 64 6C 65 20 43 20 6F 6E 20 43 68 61 6E 6E iddle C on Chann
029B20: 65 6C 20 31 20 77 6F 75 6C 64 20 62 65 20 64 6F el 1 would be do
029B30: 6E 65 20 6C 69 6B 65 20 74 68 69 73 3A 0D 0A 0D ne like this:...
029B40: 0A 20 20 20 20 20 7C 53 45 4E 44 2C 26 39 30 2C . |SEND,&90,
029B50: 36 30 2C 36 34 0D 0A 0D 0A 20 20 20 61 6E 64 20 60,64.... and
029B60: 74 6F 20 74 75 72 6E 20 69 74 20 6F 66 66 20 79 to turn it off y
029B70: 6F 75 20 77 6F 75 6C 64 20 64 6F 20 74 68 65 20 ou would do the
029B80: 73 61 6D 65 20 62 75 74 20 77 69 74 68 20 26 38 same but with &8
029B90: 30 20 69 6E 73 74 65 61 64 20 6F 66 20 26 39 30 0 instead of &90
029BA0: 2E 0D 0A 0D 0A 20 20 20 4D 45 53 53 41 47 45 20 ..... MESSAGE
029BB0: 50 41 52 4C 4F 55 52 0D 0A 20 20 20 50 65 72 68 PARLOUR.. Perh
029BC0: 61 70 73 20 69 74 20 69 73 20 74 69 6D 65 20 74 aps it is time t
029BD0: 6F 20 65 78 70 6C 61 69 6E 20 61 20 62 69 74 20 o explain a bit
029BE0: 6D 6F 72 65 20 61 62 6F 75 74 20 74 68 65 20 64 more about the d
029BF0: 69 66 66 65 72 65 6E 74 20 4D 49 44 49 20 6D 65 ifferent MIDI me
029C00: 73 73 61 67 65 73 0D 0A 20 20 20 61 76 61 69 6C ssages.. avail
029C10: 61 62 6C 65 2E 20 20 4E 6F 3F 20 20 57 65 6C 6C able. No? Well
029C20: 2C 20 69 66 20 79 6F 75 20 77 6F 75 6C 64 20 72 , if you would r
029C30: 61 74 68 65 72 20 20 49 20 63 6F 76 65 72 20 69 ather I cover i
029C40: 74 20 6E 65 78 74 20 6D 6F 6E 74 68 20 74 68 65 t next month the
029C50: 6E 20 79 6F 75 0D 0A 20 20 20 77 69 6C 6C 20 68 n you.. will h
029C60: 61 76 65 20 74 6F 20 67 65 74 20 6F 75 74 20 74 ave to get out t
029C70: 68 65 20 73 63 69 73 73 6F 72 73 20 61 6E 64 20 he scissors and
029C80: 70 61 73 74 65 20 61 6E 64 20 6D 61 6B 65 20 61 paste and make a
029C90: 20 6D 65 73 73 20 6F 66 20 79 6F 75 72 20 57 41 mess of your WA
029CA0: 43 43 49 2E 0D 0A 0D 0A 20 20 20 4D 49 44 49 20 CCI..... MIDI
029CB0: 6D 65 73 73 61 67 65 73 20 61 72 65 20 6D 61 64 messages are mad
029CC0: 65 20 75 70 20 6F 66 20 73 74 61 74 75 73 20 62 e up of status b
029CD0: 79 74 65 73 20 61 6E 64 20 64 61 74 61 20 62 79 ytes and data by
029CE0: 74 65 73 2E 20 20 54 68 65 20 73 74 61 74 75 73 tes. The status
029CF0: 20 62 79 74 65 0D 0A 20 20 20 74 65 6C 6C 73 20 byte.. tells
029D00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029D90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029DA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029DB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029DC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029DD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029DE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029DF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029E90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029EA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029EB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029EC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029ED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029EE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029EF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
029F00: 75 73 20 77 68 61 74 20 6B 69 6E 64 20 6F 66 20 us what kind of
029F10: 20 6D 65 73 73 61 67 65 20 20 69 74 20 20 69 73 message it is
029F20: 2C 20 20 61 6E 64 20 20 74 68 65 20 20 64 61 74 , and the dat
029F30: 61 20 20 62 79 74 65 73 20 66 69 6C 6C 20 69 6E a bytes fill in
029F40: 20 74 68 65 0D 0A 20 20 20 64 65 74 61 69 6C 73 the.. details
029F50: 2E 20 20 53 74 61 74 75 73 20 62 79 74 65 73 20 . Status bytes
029F60: 61 72 65 20 61 6C 77 61 79 73 20 62 65 74 77 65 are always betwe
029F70: 65 6E 20 31 32 38 20 20 61 6E 64 20 32 35 35 2C en 128 and 255,
029F80: 20 61 6E 64 20 64 61 74 61 20 62 79 74 65 73 20 and data bytes
029F90: 61 72 65 0D 0A 20 20 20 61 6C 77 61 79 73 20 6C are.. always l
029FA0: 65 73 73 20 20 74 68 61 6E 20 20 31 32 38 2E 20 ess than 128.
029FB0: 20 20 49 74 20 20 69 73 20 20 65 61 73 69 65 73 It is easies
029FC0: 74 20 20 74 6F 20 20 74 68 69 6E 6B 20 20 6F 66 t to think of
029FD0: 20 20 73 74 61 74 75 73 20 20 62 79 74 65 73 20 status bytes
029FE0: 69 6E 0D 0A 20 20 20 68 65 78 61 64 65 63 69 6D in.. hexadecim
029FF0: 61 6C 2E 20 20 54 68 65 20 66 6F 6C 6C 6F 77 69 al. The followi
02A000: 6E 67 20 74 61 62 6C 65 20 6C 69 73 74 73 20 61 ng table lists a
02A010: 6C 6C 20 74 68 65 20 74 79 70 65 73 20 6F 66 20 ll the types of
02A020: 6D 65 73 73 61 67 65 3A 0D 0A 0D 0A 20 20 20 20 message:....
02A030: 20 26 38 78 20 20 20 20 20 4E 6F 74 65 20 6F 66 &8x Note of
02A040: 66 20 28 32 29 0D 0A 20 20 20 20 20 26 39 78 20 f (2).. &9x
02A050: 20 20 20 20 4E 6F 74 65 20 6F 6E 20 28 32 29 0D Note on (2).
02A060: 0A 20 20 20 20 20 26 41 78 20 20 20 20 20 50 6F . &Ax Po
02A070: 6C 79 70 68 6F 6E 69 63 20 6B 65 79 20 70 72 65 lyphonic key pre
02A080: 73 73 75 72 65 20 28 32 29 0D 0A 20 20 20 20 20 ssure (2)..
02A090: 26 42 78 20 20 20 20 20 43 6F 6E 74 72 6F 6C 20 &Bx Control
02A0A0: 63 68 61 6E 67 65 20 28 32 29 0D 0A 20 20 20 20 change (2)..
02A0B0: 20 26 43 78 20 20 20 20 20 50 72 6F 67 72 61 6D &Cx Program
02A0C0: 6D 65 20 63 68 61 6E 67 65 20 28 31 29 0D 0A 20 me change (1)..
02A0D0: 20 20 20 20 26 44 78 20 20 20 20 20 4F 76 65 72 &Dx Over
02A0E0: 61 6C 6C 20 6B 65 79 20 70 72 65 73 73 75 72 65 all key pressure
02A0F0: 20 28 31 29 0D 0A 20 20 20 20 20 26 45 78 20 20 (1).. &Ex
02A100: 23 50 72 6F 67 72 61 6D 6D 65 72 73 27 20 50 61 #Programmers' Pa
02A110: 74 63 68 20 31 31 20 2D 20 57 41 43 43 49 20 31 tch 11 - WACCI 1
02A120: 32 30 2C 20 4D 61 72 2F 41 70 72 20 31 39 39 38 20, Mar/Apr 1998
02A130: 2C 20 70 2E 20 31 36 2D 31 38 0D 0A 20 20 20 50 , p. 16-18.. P
02A140: 52 4F 47 52 41 4D 4D 45 52 53 27 20 50 41 54 43 ROGRAMMERS' PATC
02A150: 48 20 31 31 0D 0A 20 20 20 42 79 20 4D 61 74 74 H 11.. By Matt
02A160: 68 65 77 20 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A hew Phillips....
02A170: 20 20 20 43 6F 6E 74 69 6E 75 69 6E 67 20 6F 75 Continuing ou
02A180: 72 20 6C 6F 6F 6B 20 61 74 20 20 70 72 6F 67 72 r look at progr
02A190: 61 6D 6D 69 6E 67 20 20 4D 49 44 49 20 20 69 6E amming MIDI in
02A1A0: 74 65 72 66 61 63 65 73 2C 20 20 74 68 69 73 20 terfaces, this
02A1B0: 6D 6F 6E 74 68 20 77 65 20 77 69 6C 6C 0D 0A 20 month we will..
02A1C0: 20 20 66 69 6E 64 20 6F 75 74 20 68 6F 77 20 74 find out how t
02A1D0: 6F 20 73 65 6C 65 63 74 20 20 69 6E 73 74 72 75 o select instru
02A1E0: 6D 65 6E 74 73 20 20 61 6E 64 20 20 75 73 65 20 ments and use
02A1F0: 76 61 72 69 6F 75 73 20 6F 74 68 65 72 20 4D 49 various other MI
02A200: 44 49 20 63 6F 6D 6D 61 6E 64 73 2E 0D 0A 20 20 DI commands...
02A210: 20 4E 65 78 74 20 6D 6F 6E 74 68 20 77 65 20 6D Next month we m
02A220: 69 67 68 74 20 65 76 65 6E 20 6D 61 6E 61 67 65 ight even manage
02A230: 20 61 20 70 72 6F 67 72 61 6D 20 74 68 61 74 20 a program that
02A240: 61 63 74 75 61 6C 6C 79 20 70 6C 61 79 73 20 61 actually plays a
02A250: 20 74 75 6E 65 2E 2E 2E 0D 0A 0D 0A 20 20 20 4C tune....... L
02A260: 61 73 74 20 74 69 6D 65 20 77 65 20 75 73 65 64 ast time we used
02A270: 20 61 20 70 69 65 63 65 20 20 6F 66 20 20 42 41 a piece of BA
02A280: 53 49 43 20 20 74 6F 20 20 63 6F 6E 74 72 6F 6C SIC to control
02A290: 20 74 68 65 20 4D 49 44 49 20 69 6E 74 65 72 66 the MIDI interf
02A2A0: 61 63 65 2E 20 54 68 69 73 0D 0A 20 20 20 6D 6F ace. This.. mo
02A2B0: 6E 74 68 20 77 65 20 68 61 76 65 20 70 72 69 6E nth we have prin
02A2C0: 74 65 64 20 61 6E 6F 74 68 65 72 20 6C 69 73 74 ted another list
02A2D0: 69 6E 67 20 20 77 68 69 63 68 20 20 75 73 65 73 ing which uses
02A2E0: 20 20 6D 61 63 68 69 6E 65 20 63 6F 64 65 20 74 machine code t
02A2F0: 6F 20 64 6F 20 74 68 65 0D 0A 20 20 20 73 61 6D o do the.. sam
02A300: 20 20 20 50 69 74 63 68 20 62 65 6E 64 20 28 32 Pitch bend (2
02A310: 29 0D 0A 20 20 20 20 20 26 46 78 20 20 20 20 20 ).. &Fx
02A320: 53 79 73 74 65 6D 20 6D 65 73 73 61 67 65 73 0D System messages.
02A330: 0A 0D 0A 20 20 20 54 68 65 20 6E 75 6D 62 65 72 ... The number
02A340: 20 69 6E 20 62 72 61 63 6B 65 74 73 20 69 73 20 in brackets is
02A350: 74 68 65 20 20 6E 75 6D 62 65 72 20 20 6F 66 20 the number of
02A360: 20 64 61 74 61 20 62 79 74 65 73 20 74 68 61 74 data bytes that
02A370: 20 6D 75 73 74 20 66 6F 6C 6C 6F 77 20 66 6F 72 must follow for
02A380: 0D 0A 20 20 20 74 68 61 74 20 73 74 61 74 75 73 .. that status
02A390: 20 62 79 74 65 2E 20 20 54 68 65 20 22 78 22 20 byte. The "x"
02A3A0: 72 65 70 72 65 73 65 6E 74 73 20 74 68 65 20 73 represents the s
02A3B0: 65 63 6F 6E 64 20 68 65 78 20 64 69 67 69 74 2C econd hex digit,
02A3C0: 20 6F 72 20 6E 79 62 62 6C 65 2C 20 61 6E 64 0D or nybble, and.
02A3D0: 0A 20 20 20 69 6E 20 6D 6F 73 74 20 63 61 73 65 . in most case
02A3E0: 73 20 64 65 74 65 72 6D 69 6E 65 73 20 74 68 65 s determines the
02A3F0: 20 63 68 61 6E 6E 65 6C 20 6E 75 6D 62 65 72 2C channel number,
02A400: 20 20 30 20 74 6F 20 46 20 72 65 66 65 72 72 69 0 to F referri
02A410: 6E 67 20 74 6F 20 63 68 61 6E 6E 65 6C 73 0D 0A ng to channels..
02A420: 20 20 20 31 20 74 6F 20 31 36 2E 20 20 41 73 20 1 to 16. As
02A430: 49 20 20 65 78 70 6C 61 69 6E 65 64 20 20 6C 61 I explained la
02A440: 73 74 20 20 6D 6F 6E 74 68 2C 20 20 64 69 66 66 st month, diff
02A450: 65 72 65 6E 74 20 63 68 61 6E 6E 65 6C 73 20 6D erent channels m
02A460: 69 67 68 74 20 72 65 66 65 72 20 74 6F 0D 0A 20 ight refer to..
02A470: 20 20 64 69 66 66 65 72 65 6E 74 20 70 69 65 63 different piec
02A480: 65 73 20 6F 66 20 4D 49 44 49 20 65 71 75 69 70 es of MIDI equip
02A490: 6D 65 6E 74 2C 20 6F 72 20 20 6F 6E 20 20 61 20 ment, or on a
02A4A0: 70 6F 6C 79 70 68 6F 6E 69 63 20 6B 65 79 62 6F polyphonic keybo
02A4B0: 61 72 64 20 6F 72 20 76 6F 69 63 65 0D 0A 20 20 ard or voice..
02A4C0: 20 62 6F 78 20 63 61 6E 20 62 65 20 20 75 73 65 box can be use
02A4D0: 64 20 20 74 6F 20 20 64 69 73 74 69 6E 67 75 69 d to distingui
02A4E0: 73 68 20 20 62 65 74 77 65 65 6E 20 20 73 65 76 sh between sev
02A4F0: 65 72 61 6C 20 20 64 69 66 66 65 72 65 6E 74 20 eral different
02A500: 65 20 6A 6F 62 2E 20 20 4C 69 73 74 69 6E 67 20 e job. Listing
02A510: 31 20 69 73 20 61 20 70 69 65 63 65 20 20 6F 66 1 is a piece of
02A520: 20 20 42 41 53 49 43 20 20 77 68 69 63 68 20 69 BASIC which i
02A530: 6E 73 74 61 6C 6C 73 20 61 20 63 6F 75 70 6C 65 nstalls a couple
02A540: 20 6F 66 20 52 53 58 0D 0A 20 20 20 63 6F 6D 6D of RSX.. comm
02A550: 61 6E 64 73 2C 20 61 6E 64 20 4C 69 73 74 69 6E ands, and Listin
02A560: 67 20 32 20 69 73 20 74 68 65 20 61 73 73 65 6D g 2 is the assem
02A570: 62 6C 79 20 6C 61 6E 67 75 61 67 65 20 66 6F 72 bly language for
02A580: 20 74 68 65 20 52 53 58 73 2E 20 20 3C 3C 54 68 the RSXs. <<Th
02A590: 65 79 20 61 72 65 0D 0A 20 20 20 73 61 76 65 64 ey are.. saved
02A5A0: 20 6F 6E 20 74 68 65 20 64 69 73 63 20 61 73 20 on the disc as
02A5B0: 53 45 4E 44 2E 42 41 53 20 61 6E 64 20 53 45 4E SEND.BAS and SEN
02A5C0: 44 2E 41 53 4D 3E 3E 0D 0A 0D 0A 20 20 20 54 6F D.ASM>>.... To
02A5D0: 20 75 73 65 20 74 68 65 20 52 53 58 20 63 6F 6D use the RSX com
02A5E0: 6D 61 6E 64 73 2C 20 74 79 70 65 20 69 6E 20 4C mands, type in L
02A5F0: 69 73 74 69 6E 67 20 20 31 20 20 61 6E 64 20 72 isting 1 and r
02A600: 75 6E 20 69 74 2E 20 20 49 66 20 79 6F 75 20 68 un it. If you h
02A610: 61 76 65 20 6D 61 64 65 0D 0A 20 20 20 61 6E 79 ave made.. any
02A620: 20 6D 69 73 74 61 6B 65 73 20 69 6E 20 20 74 68 mistakes in th
02A630: 65 20 20 74 79 70 69 6E 67 2C 20 20 74 68 65 73 e typing, thes
02A640: 65 20 20 77 69 6C 6C 20 20 62 65 20 20 73 70 6F e will be spo
02A650: 74 74 65 64 20 20 77 68 65 6E 20 20 79 6F 75 20 tted when you
02A660: 72 75 6E 20 74 68 65 0D 0A 20 20 20 70 72 6F 67 run the.. prog
02A670: 72 61 6D 2E 20 20 4F 6E 63 65 20 74 68 65 20 52 ram. Once the R
02A680: 53 58 73 20 61 72 65 20 69 6E 73 74 61 6C 6C 65 SXs are installe
02A690: 64 2C 20 79 6F 75 20 20 6E 65 65 64 20 74 6F 20 d, you need to
02A6A0: 75 73 65 20 74 68 65 20 7C 43 48 4F 55 54 20 63 use the |CHOUT c
02A6B0: 6F 6D 6D 61 6E 64 0D 0A 20 20 20 74 6F 20 73 65 ommand.. to se
02A6C0: 6C 65 63 74 20 74 68 65 20 74 79 70 65 20 6F 66 lect the type of
02A6D0: 20 4D 49 44 49 20 69 6E 74 65 72 66 61 63 65 20 MIDI interface
02A6E0: 79 6F 75 20 61 72 65 20 75 73 69 6E 67 2E 0D 0A you are using...
02A6F0: 0D 0A 20 20 20 20 20 7C 43 48 4F 55 54 2C 30 20 .. |CHOUT,0
02A700: 69 6E 20 6C 69 6E 65 73 20 31 30 20 61 6E 64 0D in lines 10 and.
02A710: 0A 20 20 20 33 30 2E 20 20 3C 3C 49 74 20 69 73 . 30. <<It is
02A720: 20 73 61 76 65 64 20 6F 6E 20 64 69 73 63 20 61 saved on disc a
02A730: 73 20 4D 49 44 49 31 2E 42 41 53 3E 3E 0D 0A 0D s MIDI1.BAS>>...
02A740: 0A 20 20 20 4F 56 45 52 20 54 4F 20 59 4F 55 0D . OVER TO YOU.
02A750: 0A 20 20 20 57 65 6C 6C 2C 20 74 68 61 74 27 73 . Well, that's
02A760: 20 79 6F 75 72 20 20 6C 6F 74 20 20 75 6E 74 69 your lot unti
02A770: 6C 20 20 4D 61 72 63 68 21 20 20 20 49 6E 20 20 l March! In
02A780: 74 68 65 20 20 6D 65 61 6E 20 20 74 69 6D 65 20 the mean time
02A790: 20 68 61 76 65 20 20 61 20 67 6F 20 61 74 0D 0A have a go at..
02A7A0: 20 20 20 69 6E 73 74 72 75 63 74 69 6E 67 20 79 instructing y
02A7B0: 6F 75 72 20 6B 65 79 62 6F 61 72 64 20 74 6F 20 our keyboard to
02A7C0: 70 6C 61 79 20 20 61 20 20 74 75 6E 65 2C 20 20 play a tune,
02A7D0: 61 6E 64 20 65 78 70 65 72 69 6D 65 6E 74 20 77 and experiment w
02A7E0: 69 74 68 20 64 69 66 66 65 72 65 6E 74 0D 0A 20 ith different..
02A7F0: 20 20 63 68 61 6E 6E 65 6C 20 6E 75 6D 62 65 72 channel number
02A800: 73 20 2D 20 20 79 6F 75 20 20 6D 69 67 68 74 20 s - you might
02A810: 20 65 76 65 6E 20 20 66 69 6E 64 20 20 74 68 61 even find tha
02A820: 74 20 20 6F 6E 65 20 20 70 72 6F 64 75 63 65 73 t one produces
02A830: 20 64 72 75 6D 20 6E 6F 69 73 65 73 0D 0A 20 20 drum noises..
02A840: 20 69 6E 73 74 65 61 64 20 6F 66 20 6E 6F 74 65 instead of note
02A850: 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 54 41 42 s......... TAB
02A860: 4C 45 20 31 0D 0A 20 20 20 20 20 20 20 20 20 20 LE 1..
02A870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02A880: 20 20 20 20 20 20 52 41 4D 20 20 20 20 45 4D 52 RAM EMR
02A890: 20 20 20 20 44 48 43 50 0D 0A 20 20 20 73 74 61 DHCP.. sta
02A8A0: 74 75 73 20 28 72 65 61 64 20 6F 6E 6C 79 29 20 tus (read only)
02A8B0: 20 20 20 20 20 20 20 20 20 20 26 46 38 45 45 20 &F8EE
02A8C0: 20 26 46 38 46 32 20 20 26 46 38 45 30 0D 0A 20 &F8F2 &F8E0..
02A8D0: 20 20 63 6F 6E 74 72 6F 6C 20 28 77 72 69 74 65 control (write
02A8E0: 20 6F 6E 6C 79 29 20 20 20 20 20 20 20 20 20 26 only) &
02A8F0: 46 38 45 43 20 20 26 46 38 46 32 20 20 26 46 38 F8EC &F8F2 &F8
02A900: 20 20 2D 20 52 41 4D 20 4D 75 73 69 63 20 4D 61 - RAM Music Ma
02A910: 63 68 69 6E 65 0D 0A 20 20 20 20 20 7C 43 48 4F chine.. |CHO
02A920: 55 54 2C 31 20 20 20 2D 20 45 4D 52 20 69 6E 74 UT,1 - EMR int
02A930: 65 72 66 61 63 65 0D 0A 20 20 20 20 20 7C 43 48 erface.. |CH
02A940: 4F 55 54 2C 32 20 20 20 2D 20 44 48 43 50 20 69 OUT,2 - DHCP i
02A950: 6E 74 65 72 66 61 63 65 0D 0A 0D 0A 20 20 20 54 nterface.... T
02A960: 68 65 20 7C 43 48 4F 55 54 20 63 6F 6D 6D 61 6E he |CHOUT comman
02A970: 64 20 6D 61 6B 65 73 20 20 74 68 65 20 20 6E 65 d makes the ne
02A980: 63 65 73 73 61 72 79 20 20 61 64 6A 75 73 74 6D cessary adjustm
02A990: 65 6E 74 73 20 20 74 6F 20 20 65 6E 73 75 72 65 ents to ensure
02A9A0: 20 74 68 61 74 20 74 68 65 0D 0A 20 20 20 63 6F that the.. co
02A9B0: 72 72 65 63 74 20 70 6F 72 74 20 61 64 64 72 65 rrect port addre
02A9C0: 73 73 65 73 20 61 72 65 20 75 73 65 64 2C 20 61 sses are used, a
02A9D0: 6E 64 20 20 61 6C 73 6F 20 20 73 65 74 73 20 20 nd also sets
02A9E0: 74 68 65 20 4D 49 44 49 20 69 6E 74 65 72 66 61 the MIDI interfa
02A9F0: 63 65 20 74 6F 20 62 65 0D 0A 20 20 20 72 65 61 ce to be.. rea
02AA00: 64 79 20 74 6F 20 73 65 6E 64 20 64 61 74 61 2E dy to send data.
02AA10: 0D 0A 0D 0A 20 20 20 4E 65 78 74 20 20 79 6F 75 .... Next you
02AA20: 20 20 63 61 6E 20 20 75 73 65 20 20 74 68 65 20 can use the
02AA30: 20 7C 53 45 4E 44 20 20 63 6F 6D 6D 61 6E 64 20 |SEND command
02AA40: 20 74 6F 20 20 73 65 6E 64 20 20 69 6E 73 74 72 to send instr
02AA50: 75 63 74 69 6F 6E 73 20 20 74 6F 20 20 4D 49 44 uctions to MID
02AA60: 49 0D 0A 20 20 20 69 6E 73 74 72 75 6D 65 6E 74 I.. instrument
02AA70: 73 2E 20 20 54 68 65 20 7C 53 45 4E 44 20 52 53 s. The |SEND RS
02AA80: 58 20 74 61 6B 65 73 20 61 73 20 6D 61 6E 79 20 X takes as many
02AA90: 20 61 72 67 75 6D 65 6E 74 73 20 61 73 20 79 6F arguments as yo
02AAA0: 75 20 6C 69 6B 65 2C 20 61 6E 64 20 74 68 65 79 u like, and they
02AAB0: 0D 0A 20 20 20 61 72 65 20 73 65 6E 74 20 6F 75 .. are sent ou
02AAC0: 74 20 76 69 61 20 74 68 65 20 20 4D 49 44 49 20 t via the MIDI
02AAD0: 20 69 6E 74 65 72 66 61 63 65 20 20 69 6E 20 20 interface in
02AAE0: 6F 72 64 65 72 2E 20 20 4C 61 73 74 20 6D 6F 6E order. Last mon
02AAF0: 74 68 27 73 20 65 78 61 6D 70 6C 65 20 6F 66 0D th's example of.
02AB00: 45 30 0D 0A 20 20 20 64 61 74 61 20 72 65 61 64 E0.. data read
02AB10: 20 28 72 65 61 64 20 6F 6E 6C 79 29 20 20 20 20 (read only)
02AB20: 20 20 20 20 26 46 38 45 46 20 20 26 46 38 46 33 &F8EF &F8F3
02AB30: 20 20 26 46 38 45 31 0D 0A 20 20 20 64 61 74 61 &F8E1.. data
02AB40: 20 77 72 69 74 65 20 28 77 72 69 74 65 20 6F 6E write (write on
02AB50: 6C 79 29 20 20 20 20 20 20 26 46 38 45 44 20 20 ly) &F8ED
02AB60: 26 46 38 46 33 20 20 26 46 38 45 31 0D 0A 0D 0A &F8F3 &F8E1....
02AB70: 0D 0A 0D 0A 20 20 20 31 30 20 20 73 74 61 74 75 .... 10 statu
02AB80: 73 3D 26 46 38 45 45 3A 63 6F 6E 74 72 6F 6C 3D s=&F8EE:control=
02AB90: 26 46 38 45 43 3A 64 61 74 61 77 72 69 74 65 3D &F8EC:datawrite=
02ABA0: 26 46 38 45 44 0D 0A 20 20 20 32 30 20 20 4F 55 &F8ED.. 20 OU
02ABB0: 54 20 63 6F 6E 74 72 6F 6C 2C 33 0D 0A 20 20 20 T control,3..
02ABC0: 33 30 20 20 4F 55 54 20 63 6F 6E 74 72 6F 6C 2C 30 OUT control,
02ABD0: 26 31 35 3A 52 45 4D 20 63 68 61 6E 67 65 20 74 &15:REM change t
02ABE0: 6F 20 26 31 36 20 66 6F 72 20 45 4D 52 20 61 6E o &16 for EMR an
02ABF0: 64 20 44 48 43 50 0D 0A 20 20 20 34 30 20 20 46 d DHCP.. 40 F
02AC00: 4F 52 20 78 3D 30 20 54 4F 20 32 3A 52 45 41 44 OR x=0 TO 2:READ
02AC10: 20 64 3A 47 4F 53 55 42 20 31 30 30 3A 4E 45 58 d:GOSUB 100:NEX
02AC20: 54 0D 0A 20 20 20 35 30 20 20 46 4F 52 20 78 3D T.. 50 FOR x=
02AC30: 30 20 54 4F 20 35 30 30 30 3A 4E 45 58 54 0D 0A 0 TO 5000:NEXT..
02AC40: 20 20 20 36 30 20 20 46 4F 52 20 78 3D 30 20 54 60 FOR x=0 T
02AC50: 4F 20 32 3A 52 45 41 44 20 64 3A 47 4F 53 55 42 O 2:READ d:GOSUB
02AC60: 20 31 30 30 3A 4E 45 58 54 0D 0A 20 20 20 37 30 100:NEXT.. 70
02AC70: 20 20 45 4E 44 0D 0A 20 20 20 38 30 20 20 44 41 END.. 80 DA
02AC80: 54 41 20 26 39 30 2C 36 30 2C 36 34 2C 26 38 30 TA &90,60,64,&80
02AC90: 2C 36 30 2C 30 0D 0A 20 20 20 31 30 30 20 57 48 ,60,0.. 100 WH
02ACA0: 49 4C 45 20 28 49 4E 50 28 73 74 61 74 75 73 29 ILE (INP(status)
02ACB0: 20 41 4E 44 20 32 29 3D 30 3A 57 45 4E 44 0D 0A AND 2)=0:WEND..
02ACC0: 20 20 20 31 31 30 20 4F 55 54 20 64 61 74 61 77 110 OUT dataw
02ACD0: 72 69 74 65 2C 64 0D 0A 20 20 20 31 32 30 20 52 rite,d.. 120 R
02ACE0: 45 54 55 52 4E 0D 0A 1A 0D 0A 0D 0A 20 20 20 54 ETURN....... T
02ACF0: 68 69 73 20 6D 6F 6E 74 68 20 69 6E 20 50 72 6F his month in Pro
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: 69 6E 73 74 72 75 6D 65 6E 74 73 0D 0A 20 20 20 instruments..
02AE10: 70 6C 61 79 65 64 20 6F 6E 20 74 68 65 20 73 61 played on the sa
02AE20: 6D 65 20 70 69 65 63 65 20 6F 66 20 4D 49 44 49 me piece of MIDI
02AE30: 20 65 71 75 69 70 6D 65 6E 74 2E 0D 0A 0D 0A 20 equipment.....
02AE40: 20 20 54 68 65 20 73 74 61 74 75 73 20 62 79 74 The status byt
02AE50: 65 20 26 39 30 20 77 6F 75 6C 64 20 62 65 20 61 e &90 would be a
02AE60: 20 4E 6F 74 65 20 20 4F 6E 20 20 65 76 65 6E 74 Note On event
02AE70: 20 6F 6E 20 63 68 61 6E 6E 65 6C 20 31 2C 20 61 on channel 1, a
02AE80: 6E 64 20 26 38 31 20 77 6F 75 6C 64 0D 0A 20 20 nd &81 would..
02AE90: 20 62 65 20 61 20 4E 6F 74 65 20 4F 66 66 20 6F be a Note Off o
02AEA0: 6E 20 63 68 61 6E 6E 65 6C 20 32 2E 20 20 54 68 n channel 2. Th
02AEB0: 65 20 6F 6E 6C 79 20 65 78 63 65 70 74 69 6F 6E e only exception
02AEC0: 20 69 6E 20 66 61 63 74 20 69 73 20 26 46 78 2C in fact is &Fx,
02AED0: 20 74 68 65 20 73 79 73 74 65 6D 0D 0A 20 20 20 the system..
02AEE0: 6D 65 73 73 61 67 65 73 2C 20 77 68 69 63 68 20 messages, which
02AEF0: 61 66 66 65 63 74 20 61 6C 6C 20 63 68 61 6E 6E affect all chann
02AF00: 65 6C 73 20 20 61 74 20 20 6F 6E 63 65 2E 20 20 els at once.
02AF10: 48 65 72 65 20 74 68 65 20 22 78 22 20 64 69 73 Here the "x" dis
02AF20: 74 69 6E 67 75 69 73 68 65 73 0D 0A 20 20 20 62 tinguishes.. b
02AF30: 65 74 77 65 65 6E 20 64 69 66 66 65 72 65 6E 74 etween different
02AF40: 20 6B 69 6E 64 73 20 6F 66 20 73 79 73 74 65 6D kinds of system
02AF50: 20 6D 65 73 73 61 67 65 20 69 6E 73 74 65 61 64 message instead
02AF60: 2E 0D 0A 0D 0A 20 20 20 4F 4E 45 20 4D 41 4E 20 ..... ONE MAN
02AF70: 42 41 4E 44 0D 0A 20 20 20 54 68 65 20 6E 65 78 BAND.. The nex
02AF80: 74 20 6D 6F 73 74 20 75 73 65 66 75 6C 20 4D 49 t most useful MI
02AF90: 44 49 20 20 6D 65 73 73 61 67 65 20 20 61 66 74 DI message aft
02AFA0: 65 72 20 20 4E 6F 74 65 20 20 4F 6E 20 20 61 6E er Note On an
02AFB0: 64 20 20 4E 6F 74 65 20 4F 66 66 20 69 73 20 26 d Note Off is &
02AFC0: 43 78 2C 0D 0A 20 20 20 50 72 6F 67 72 61 6D 6D Cx,.. Programm
02AFD0: 65 20 43 68 61 6E 67 65 2E 20 20 54 68 69 73 20 e Change. This
02AFE0: 69 73 20 75 73 65 64 20 74 6F 20 73 65 6C 65 63 is used to selec
02AFF0: 74 20 77 68 61 74 20 69 6E 73 74 72 75 6D 65 6E t what instrumen
02B000: 20 6F 6E 65 20 77 65 20 73 65 6E 74 2C 20 74 68 one we sent, th
02B010: 61 74 20 69 73 20 61 6E 6F 74 68 65 72 20 62 79 at is another by
02B020: 74 65 20 6F 66 20 26 39 30 2E 0D 0A 0D 0A 20 20 te of &90.....
02B030: 20 4F 66 20 63 6F 75 72 73 65 2C 20 79 6F 75 20 Of course, you
02B040: 63 61 6E 20 70 75 74 20 69 6E 20 74 68 6F 73 65 can put in those
02B050: 20 26 39 30 20 62 79 74 65 73 20 69 66 20 79 6F &90 bytes if yo
02B060: 75 20 6C 69 6B 65 2C 20 61 6E 64 20 69 66 20 79 u like, and if y
02B070: 6F 75 20 61 72 65 20 6A 75 73 74 0D 0A 20 20 20 ou are just..
02B080: 73 65 6E 64 69 6E 67 20 4D 49 44 49 20 64 61 74 sending MIDI dat
02B090: 61 20 79 6F 75 20 64 6F 20 6E 6F 74 20 72 65 61 a you do not rea
02B0A0: 6C 6C 79 20 6E 65 65 64 20 74 6F 20 6B 6E 6F 77 lly need to know
02B0B0: 20 61 62 6F 75 74 20 72 75 6E 6E 69 6E 67 20 73 about running s
02B0C0: 74 61 74 75 73 2E 20 20 49 66 0D 0A 20 20 20 79 tatus. If.. y
02B0D0: 6F 75 20 61 72 65 20 72 65 63 65 69 76 69 6E 67 ou are receiving
02B0E0: 20 64 61 74 61 20 66 72 6F 6D 20 20 74 68 65 20 data from the
02B0F0: 20 6B 65 79 62 6F 61 72 64 20 20 74 68 6F 75 67 keyboard thoug
02B100: 68 2C 20 20 79 6F 75 20 77 69 6C 6C 20 68 61 76 h, you will hav
02B110: 65 20 74 6F 20 63 6F 70 65 0D 0A 20 20 20 77 69 e to cope.. wi
02B120: 74 68 20 69 74 2E 20 20 57 68 65 6E 20 49 20 66 th it. When I f
02B130: 69 72 73 74 20 20 73 74 61 72 74 65 64 20 20 65 irst started e
02B140: 78 70 65 72 69 6D 65 6E 74 69 6E 67 20 20 77 69 xperimenting wi
02B150: 74 68 20 72 65 63 6F 72 64 69 6E 67 20 64 61 74 th recording dat
02B160: 61 20 66 72 6F 6D 20 61 0D 0A 20 20 20 6B 65 79 a from a.. key
02B170: 62 6F 61 72 64 2C 20 49 20 64 69 64 20 6E 6F 74 board, I did not
02B180: 20 6B 6E 6F 77 20 20 61 62 6F 75 74 20 20 72 75 know about ru
02B190: 6E 6E 69 6E 67 20 20 73 74 61 74 75 73 2C 20 20 nning status,
02B1A0: 73 6F 20 20 49 20 74 68 6F 75 67 68 74 20 74 68 so I thought th
02B1B0: 65 72 65 20 77 61 73 0D 0A 20 20 20 73 6F 6D 65 ere was.. some
02B1C0: 74 68 69 6E 67 20 77 72 6F 6E 67 20 77 69 74 68 thing wrong with
02B1D0: 20 6D 79 20 69 6E 74 65 72 66 61 63 65 21 0D 0A my interface!..
02B1E0: 0D 0A 20 20 20 59 6F 75 20 61 72 65 20 61 6C 73 .. You are als
02B1F0: 6F 20 61 6C 6C 6F 77 65 64 20 74 6F 20 74 75 72 o allowed to tur
02B200: 74 20 6E 6F 69 73 65 20 74 6F 20 75 73 65 20 66 t noise to use f
02B210: 6F 72 0D 0A 20 20 20 74 68 65 20 6E 6F 74 65 73 or.. the notes
02B220: 20 6F 6E 20 61 20 63 68 61 6E 6E 65 6C 2E 20 20 on a channel.
02B230: 49 74 20 74 61 6B 65 73 20 20 6F 6E 65 20 20 64 It takes one d
02B240: 61 74 61 20 62 79 74 65 20 61 73 20 61 20 70 61 ata byte as a pa
02B250: 72 61 6D 65 74 65 72 2C 20 61 6C 6C 6F 77 69 6E rameter, allowin
02B260: 67 0D 0A 20 20 20 79 6F 75 20 20 74 6F 20 20 63 g.. you to c
02B270: 68 6F 6F 73 65 20 20 66 72 6F 6D 20 20 31 32 38 hoose from 128
02B280: 20 20 64 69 66 66 65 72 65 6E 74 20 20 20 69 6E different in
02B290: 73 74 72 75 6D 65 6E 74 73 20 20 6E 75 6D 62 65 struments numbe
02B2A0: 72 65 64 20 20 30 20 20 74 6F 20 20 31 32 37 2E red 0 to 127.
02B2B0: 0D 0A 20 20 20 55 6E 66 6F 72 74 75 6E 61 74 65 .. Unfortunate
02B2C0: 6C 79 20 64 69 66 66 65 72 65 6E 74 20 74 79 70 ly different typ
02B2D0: 65 73 20 6F 66 20 20 4D 49 44 49 20 20 6B 65 79 es of MIDI key
02B2E0: 62 6F 61 72 64 20 20 75 73 65 20 64 69 66 66 65 board use diffe
02B2F0: 72 65 6E 74 20 6E 75 6D 62 65 72 73 20 74 6F 0D rent numbers to.
02B300: 0A 20 20 20 73 65 6C 65 63 74 20 61 20 76 69 6F . select a vio
02B310: 6C 69 6E 2C 20 73 61 79 2E 20 20 53 6F 6D 65 20 lin, say. Some
02B320: 6B 65 79 62 6F 61 72 64 73 20 20 66 6F 6C 6C 6F keyboards follo
02B330: 77 20 20 61 20 63 6F 64 65 20 63 61 6C 6C 65 64 w a code called
02B340: 20 47 65 6E 65 72 61 6C 20 4D 49 44 49 2C 0D 0A General MIDI,..
02B350: 20 20 20 61 6E 64 20 74 6F 20 73 65 6C 65 63 74 and to select
02B360: 20 61 20 76 69 6F 6C 69 6E 20 6F 6E 20 63 68 61 a violin on cha
02B370: 6E 6E 65 6C 20 31 20 79 6F 75 20 77 6F 75 6C 64 nnel 1 you would
02B380: 20 64 6F 3A 0D 0A 0D 0A 20 20 20 20 20 7C 53 45 do:.... |SE
02B390: 4E 44 2C 26 43 30 2C 34 31 0D 0A 0D 0A 20 20 20 ND,&C0,41....
02B3A0: 49 20 61 6D 20 67 75 65 73 73 69 6E 67 20 61 20 I am guessing a
02B3B0: 62 69 74 20 20 68 65 72 65 2C 20 20 61 73 20 20 bit here, as
02B3C0: 69 74 20 20 6D 69 67 68 74 20 20 6E 6F 74 20 20 it might not
02B3D0: 62 65 20 20 61 20 76 69 6F 6C 69 6E 2C 20 62 75 be a violin, bu
02B3E0: 74 20 69 74 20 77 6F 75 6C 64 0D 0A 20 20 20 63 t it would.. c
02B3F0: 65 72 74 61 69 6E 6C 79 20 62 65 20 61 20 73 74 ertainly be a st
02B400: 6E 20 20 61 20 20 6E 6F 74 65 20 20 6F 66 66 20 n a note off
02B410: 20 75 73 69 6E 67 20 20 61 20 20 4E 6F 74 65 20 using a Note
02B420: 4F 6E 20 65 76 65 6E 74 20 77 69 74 68 20 61 0D On event with a.
02B430: 0A 20 20 20 76 65 6C 6F 63 69 74 79 20 6F 66 20 . velocity of
02B440: 7A 65 72 6F 3A 0D 0A 0D 0A 20 20 20 20 20 7C 53 zero:.... |S
02B450: 45 4E 44 2C 26 39 30 2C 36 30 2C 30 0D 0A 0D 0A END,&90,60,0....
02B460: 20 20 20 77 6F 75 6C 64 20 74 75 72 6E 20 6F 66 would turn of
02B470: 66 20 61 20 4D 69 64 64 6C 65 20 43 20 20 70 6C f a Middle C pl
02B480: 61 79 69 6E 67 20 20 6F 6E 20 20 63 68 61 6E 6E aying on chann
02B490: 65 6C 20 20 31 2E 20 20 57 68 65 6E 20 79 6F 75 el 1. When you
02B4A0: 20 63 6F 6D 62 69 6E 65 20 74 68 69 73 0D 0A 20 combine this..
02B4B0: 20 20 77 69 74 68 20 72 75 6E 6E 69 6E 67 20 73 with running s
02B4C0: 74 61 74 75 73 2C 20 79 6F 75 20 20 63 61 6E 20 tatus, you can
02B4D0: 20 70 6C 61 79 20 20 6C 6F 6E 67 20 20 70 69 65 play long pie
02B4E0: 63 65 73 20 20 6F 6E 20 20 6F 6E 65 20 63 68 61 ces on one cha
02B4F0: 6E 6E 65 6C 20 77 69 74 68 6F 75 74 0D 0A 20 20 nnel without..
02B500: 20 73 65 6E 64 69 6E 67 20 61 6E 79 20 73 74 61 sending any sta
02B510: 74 75 73 20 62 79 74 65 73 20 61 70 61 72 74 20 tus bytes apart
02B520: 66 72 6F 6D 20 74 68 65 20 66 69 72 73 74 20 4E from the first N
02B530: 6F 74 65 20 4F 6E 2E 0D 0A 0D 0A 20 20 20 41 46 ote On..... AF
02B540: 54 45 52 20 45 46 46 45 43 54 53 0D 0A 20 20 20 TER EFFECTS..
02B550: 47 65 74 74 69 6E 67 20 62 61 63 6B 20 74 6F 20 Getting back to
02B560: 74 68 65 20 73 74 61 74 75 73 20 63 6F 64 65 73 the status codes
02B570: 2C 20 69 66 20 20 79 6F 75 20 20 77 61 6E 74 20 , if you want
02B580: 20 74 6F 20 63 68 61 6E 67 65 20 74 68 65 20 76 to change the v
02B590: 6F 6C 75 6D 65 20 6F 66 20 61 0D 0A 20 20 20 6E olume of a.. n
02B5A0: 6F 74 65 20 61 66 74 65 72 20 69 74 20 68 61 73 ote after it has
02B5B0: 20 73 74 61 72 74 65 64 2C 20 79 6F 75 20 20 6E started, you n
02B5C0: 65 65 64 20 20 74 68 65 20 20 73 65 72 76 69 63 eed the servic
02B5D0: 65 73 20 6F 66 20 26 41 78 2C 20 50 6F 6C 79 70 es of &Ax, Polyp
02B5E0: 68 6F 6E 69 63 20 4B 65 79 0D 0A 20 20 20 50 72 honic Key.. Pr
02B5F0: 65 73 73 75 72 65 20 28 6F 72 20 61 66 74 65 72 essure (or after
02B600: 72 69 6E 67 20 69 6E 73 74 72 75 6D 65 6E 74 2E ring instrument.
02B610: 20 20 20 49 66 20 20 79 6F 75 72 20 20 6B 65 79 If your key
02B620: 62 6F 61 72 64 20 64 6F 65 73 20 6E 6F 74 20 63 board does not c
02B630: 6F 6E 66 6F 72 6D 20 74 6F 0D 0A 20 20 20 47 65 onform to.. Ge
02B640: 6E 65 72 61 6C 20 4D 49 44 49 20 74 68 65 6E 20 neral MIDI then
02B650: 74 68 65 72 65 20 6D 61 79 20 62 65 20 61 20 6C there may be a l
02B660: 69 73 74 20 20 6F 66 20 74 68 65 20 6E 75 6D 62 ist of the numb
02B670: 65 72 73 20 69 6E 20 79 6F 75 72 20 6D 61 6E 75 ers in your manu
02B680: 61 6C 20 6F 72 20 6F 6E 0D 0A 20 20 20 74 68 65 al or on.. the
02B690: 20 6B 65 79 62 6F 61 72 64 20 69 74 73 65 6C 66 keyboard itself
02B6A0: 2E 0D 0A 0D 0A 20 20 20 41 66 74 65 72 20 74 68 ..... After th
02B6B0: 61 74 2C 20 7C 53 45 4E 44 2C 26 39 30 2C 36 39 at, |SEND,&90,69
02B6C0: 2C 36 34 20 77 6F 75 6C 64 20 20 70 6C 61 79 20 ,64 would play
02B6D0: 20 74 68 65 20 20 41 20 20 61 62 6F 76 65 20 20 the A above
02B6E0: 4D 69 64 64 6C 65 20 43 20 28 6B 6E 6F 77 6E 20 Middle C (known
02B6F0: 61 73 0D 0A 20 20 20 49 6E 74 65 72 6E 61 74 69 as.. Internati
02B700: 6F 6E 61 6C 20 41 29 20 75 73 69 6E 67 20 74 68 onal A) using th
02B710: 65 20 76 69 6F 6C 69 6E 20 6E 6F 69 73 65 2E 20 e violin noise.
02B720: 20 49 66 20 79 6F 75 20 74 68 65 6E 20 64 69 64 If you then did
02B730: 0D 0A 0D 0A 20 20 20 20 20 7C 53 45 4E 44 2C 26 .... |SEND,&
02B740: 43 31 2C 35 37 2C 26 39 31 2C 36 30 2C 36 34 0D C1,57,&91,60,64.
02B750: 0A 0D 0A 20 20 20 69 74 20 77 6F 75 6C 64 20 73 ... it would s
02B760: 65 6C 65 63 74 20 61 20 62 72 61 73 73 20 69 6E elect a brass in
02B770: 73 74 72 75 6D 65 6E 74 20 20 6F 6E 20 20 63 68 strument on ch
02B780: 61 6E 6E 65 6C 20 32 20 61 6E 64 20 73 74 61 72 annel 2 and star
02B790: 74 20 70 6C 61 79 69 6E 67 20 4D 69 64 64 6C 65 t playing Middle
02B7A0: 0D 0A 20 20 20 43 2E 20 20 54 6F 20 74 75 72 6E .. C. To turn
02B7B0: 20 74 68 65 20 6E 6F 74 65 73 20 6F 66 66 2C 20 the notes off,
02B7C0: 79 6F 75 20 77 6F 75 6C 64 20 74 68 65 6E 20 64 you would then d
02B7D0: 6F 0D 0A 0D 0A 20 20 20 20 20 7C 53 45 4E 44 2C o.... |SEND,
02B7E0: 26 38 30 2C 36 39 2C 30 20 28 66 6F 72 20 74 68 &80,69,0 (for th
02B7F0: 65 20 76 69 6F 6C 69 6E 29 0D 0A 20 20 20 20 20 e violin)..
02B800: 74 6F 75 63 68 29 2E 20 20 54 68 69 73 20 74 61 touch). This ta
02B810: 6B 65 73 20 74 77 6F 20 20 64 61 74 61 20 20 62 kes two data b
02B820: 79 74 65 73 3A 20 66 69 72 73 74 20 74 68 65 20 ytes: first the
02B830: 70 69 74 63 68 20 6F 66 0D 0A 20 20 20 74 68 65 pitch of.. the
02B840: 20 20 6E 6F 74 65 20 20 63 6F 6E 63 65 72 6E 65 note concerne
02B850: 64 2C 20 20 73 65 63 6F 6E 64 6C 79 20 20 74 68 d, secondly th
02B860: 65 20 20 20 6E 65 77 20 20 70 72 65 73 73 75 72 e new pressur
02B870: 65 20 20 28 6F 72 20 20 76 6F 6C 75 6D 65 29 20 e (or volume)
02B880: 20 76 61 6C 75 65 2E 0D 0A 20 20 20 4F 62 76 69 value... Obvi
02B890: 6F 75 73 6C 79 20 77 69 74 68 20 73 6F 6D 65 20 ously with some
02B8A0: 69 6E 73 74 72 75 6D 65 6E 74 73 2C 20 6C 69 6B instruments, lik
02B8B0: 65 20 70 69 61 6E 6F 2C 20 20 79 6F 75 20 63 61 e piano, you ca
02B8C0: 6E 6E 6F 74 20 63 68 61 6E 67 65 20 74 68 65 20 nnot change the
02B8D0: 76 6F 6C 75 6D 65 0D 0A 20 20 20 6F 66 20 61 20 volume.. of a
02B8E0: 6E 6F 74 65 20 6F 6E 63 65 20 74 68 65 20 20 6B note once the k
02B8F0: 65 79 20 20 68 61 73 20 20 62 65 65 6E 20 20 73 ey has been s
02B900: 74 72 75 63 6B 2C 20 20 61 6E 64 20 20 73 6F 6D truck, and som
02B910: 65 20 6B 65 79 62 6F 61 72 64 73 20 77 69 6C 6C e keyboards will
02B920: 20 74 61 6B 65 0D 0A 20 20 20 61 63 63 6F 75 6E take.. accoun
02B930: 74 20 6F 66 20 74 68 69 73 2E 20 20 20 4C 65 73 t of this. Les
02B940: 73 20 20 65 78 70 65 6E 73 69 76 65 20 20 6D 6F s expensive mo
02B950: 64 65 6C 73 20 20 6F 66 20 20 6B 65 79 62 6F 61 dels of keyboa
02B960: 72 64 20 20 64 6F 20 6E 6F 74 20 69 6D 70 6C 65 rd do not imple
02B970: 6D 65 6E 74 0D 0A 20 20 20 61 66 74 65 72 74 6F ment.. afterto
02B980: 75 63 68 20 61 74 20 61 6C 6C 2E 0D 0A 0D 0A 20 uch at all.....
02B990: 20 20 53 74 61 74 75 73 20 62 79 74 65 20 26 44 Status byte &D
02B9A0: 78 2C 20 4F 76 65 72 61 6C 6C 20 4B 65 79 20 50 x, Overall Key P
02B9B0: 72 65 73 73 75 72 65 2C 20 77 6F 72 6B 73 20 69 ressure, works i
02B9C0: 6E 20 61 20 73 69 6D 69 6C 61 72 20 77 61 79 2C n a similar way,
02B9D0: 20 62 75 74 20 61 70 70 6C 69 65 73 0D 0A 20 20 but applies..
02B9E0: 20 74 6F 20 61 6C 6C 20 6E 6F 74 65 73 20 6F 6E to all notes on
02B9F0: 20 20 74 68 65 20 20 63 68 61 6E 6E 65 6C 2E 20 the channel.
02BA00: 7C 53 45 4E 44 2C 26 38 31 2C 36 30 2C 30 20 28 |SEND,&81,60,0 (
02BA10: 66 6F 72 20 74 68 65 20 62 72 61 73 73 29 0D 0A for the brass)..
02BA20: 0D 0A 20 20 20 4F 6E 20 61 20 70 6F 6C 79 70 68 .. On a polyph
02BA30: 6F 6E 69 63 20 6B 65 79 62 6F 61 72 64 20 79 6F onic keyboard yo
02BA40: 75 20 63 61 6E 20 68 61 76 65 20 20 73 65 76 65 u can have seve
02BA50: 72 61 6C 20 6E 6F 74 65 73 20 73 6F 75 6E 64 69 ral notes soundi
02BA60: 6E 67 20 61 74 20 6F 6E 63 65 20 65 76 65 6E 0D ng at once even.
02BA70: 0A 20 20 20 6F 6E 20 74 68 65 20 73 61 6D 65 20 . on the same
02BA80: 63 68 61 6E 6E 65 6C 2C 20 73 6F 20 79 6F 75 20 channel, so you
02BA90: 20 63 6F 75 6C 64 20 20 73 74 61 72 74 20 20 73 could start s
02BAA0: 65 76 65 72 61 6C 20 76 69 6F 6C 69 6E 20 6E 6F everal violin no
02BAB0: 74 65 73 20 61 74 20 6F 6E 63 65 20 6F 6E 0D 0A tes at once on..
02BAC0: 20 20 20 63 68 61 6E 6E 65 6C 20 31 3A 0D 0A 0D channel 1:...
02BAD0: 0A 20 20 20 20 20 7C 53 45 4E 44 2C 26 39 30 2C . |SEND,&90,
02BAE0: 36 30 2C 34 30 2C 26 39 30 2C 36 34 2C 34 30 2C 60,40,&90,64,40,
02BAF0: 26 39 30 2C 36 37 2C 34 30 0D 0A 0D 0A 20 20 20 &90,67,40....
02BB00: 61 6E 64 20 74 68 65 6E 20 74 75 72 6E 20 74 68 and then turn th
02BB10: 65 6D 20 20 6F 66 66 20 20 6F 6E 65 20 20 62 79 em off one by
02BB20: 20 20 6F 6E 65 20 20 77 69 74 68 20 20 74 68 65 one with the
02BB30: 20 20 61 70 70 72 6F 70 72 69 61 74 65 20 26 38 appropriate &8
02BB40: 30 20 4E 6F 74 65 20 4F 66 66 0D 0A 20 20 20 65 0 Note Off.. e
02BB50: 76 65 6E 74 73 2E 0D 0A 0D 0A 20 20 20 52 55 4E vents..... RUN
02BB60: 4E 49 4E 47 20 43 4F 4D 4D 45 4E 54 41 52 59 0D NING COMMENTARY.
02BB70: 0A 20 20 20 42 65 66 6F 72 65 20 77 65 20 6C 6F . Before we lo
02BB80: 6F 6B 20 61 74 20 74 68 65 20 6F 74 68 65 72 20 ok at the other
02BB90: 73 74 61 74 75 73 20 20 63 6F 64 65 73 2C 20 20 status codes,
02BBA0: 69 74 20 20 73 65 65 6D 73 20 6C 69 6B 65 20 61 it seems like a
02BBB0: 20 67 6F 6F 64 20 70 6F 69 6E 74 20 74 6F 0D 0A good point to..
02BBC0: 20 20 20 6D 65 6E 74 69 6F 6E 20 22 72 75 6E 6E mention "runn
02BBD0: 69 6E 67 20 73 74 61 74 75 73 22 2E 20 20 57 65 ing status". We
02BBE0: 20 68 61 76 65 20 20 6A 75 73 74 20 20 74 75 72 have just tur
02BBF0: 6E 65 64 20 20 6F 6E 20 20 74 68 72 65 65 20 6E ned on three n
02BC00: 20 20 49 74 20 20 6F 6E 6C 79 20 20 6E 65 65 64 It only need
02BC10: 73 20 20 6F 6E 65 20 20 64 61 74 61 20 20 62 79 s one data by
02BC20: 74 65 2C 20 74 68 65 20 6E 65 77 0D 0A 20 20 20 te, the new..
02BC30: 70 72 65 73 73 75 72 65 20 76 61 6C 75 65 2E 0D pressure value..
02BC40: 0A 0D 0A 20 20 20 55 52 41 4E 49 55 4D 20 4F 52 ... URANIUM OR
02BC50: 45 0D 0A 20 20 20 50 69 74 63 68 20 42 65 6E 64 E.. Pitch Bend
02BC60: 2C 20 26 45 78 2C 20 69 73 20 66 6F 72 20 76 61 , &Ex, is for va
02BC70: 72 79 69 6E 67 20 74 68 65 20 20 70 69 74 63 68 rying the pitch
02BC80: 20 20 6F 66 20 6E 6F 74 65 73 20 74 68 61 74 20 of notes that
02BC90: 61 72 65 20 70 6C 61 79 69 6E 67 2E 20 20 49 74 are playing. It
02BCA0: 0D 0A 20 20 20 69 73 20 66 6F 6C 6C 6F 77 65 64 .. is followed
02BCB0: 20 62 79 20 74 77 6F 20 64 61 74 61 20 62 79 74 by two data byt
02BCC0: 65 73 20 77 68 69 63 68 20 61 72 65 20 70 75 74 es which are put
02BCD0: 20 74 6F 67 65 74 68 65 72 20 74 6F 20 67 69 76 together to giv
02BCE0: 65 20 61 20 22 6D 6F 64 75 6C 61 74 69 6F 6E 0D e a "modulation.
02BCF0: 0A 20 20 20 76 61 6C 75 65 22 2C 20 72 61 6E 67 . value", rang
02BD00: 69 6E 67 20 66 72 6F 6D 20 30 20 74 6F 20 31 36 ing from 0 to 16
02BD10: 33 38 33 2E 20 20 49 66 20 20 74 68 65 20 6D 6F 383. If the mo
02BD20: 64 75 6C 61 74 69 6F 6E 20 76 61 6C 75 65 20 77 dulation value w
02BD30: 61 73 20 6D 2C 20 74 68 65 6E 20 74 68 65 0D 0A as m, then the..
02BD40: 20 20 20 74 77 6F 20 64 61 74 61 20 62 79 74 65 two data byte
02BD50: 73 20 61 72 65 20 63 61 6C 63 75 6C 61 74 65 64 s are calculated
02BD60: 20 61 73 20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A as follows:....
02BD70: 20 20 20 20 20 62 79 74 65 31 3D 6D 20 4D 4F 44 byte1=m MOD
02BD80: 20 31 32 38 0D 0A 20 20 20 20 20 62 79 74 65 32 128.. byte2
02BD90: 3D 6D 5C 31 32 38 0D 0A 0D 0A 20 20 20 41 20 6D =m\128.... A m
02BDA0: 6F 64 75 6C 61 74 69 6F 6E 20 76 61 6C 75 65 20 odulation value
02BDB0: 6F 66 20 38 31 39 32 20 20 69 73 20 20 74 68 65 of 8192 is the
02BDC0: 20 20 63 65 6E 74 72 65 20 20 73 65 74 74 69 6E centre settin
02BDD0: 67 2C 20 77 68 69 63 68 20 6D 65 61 6E 73 20 74 g, which means t
02BDE0: 68 61 74 20 74 68 65 0D 0A 20 20 20 70 69 74 63 hat the.. pitc
02BDF0: 68 65 73 20 6F 66 20 74 68 65 20 20 6E 6F 74 65 hes of the note
02BE00: 6F 74 65 73 2C 20 65 61 63 68 20 62 79 0D 0A 20 otes, each by..
02BE10: 20 20 73 65 6E 64 69 6E 67 20 74 68 65 20 73 74 sending the st
02BE20: 61 74 75 73 20 62 79 74 65 20 6F 66 20 26 39 30 atus byte of &90
02BE30: 20 20 66 6F 6C 6C 6F 77 65 64 20 20 62 79 20 20 followed by
02BE40: 74 77 6F 20 62 79 74 65 73 20 6F 66 20 64 61 74 two bytes of dat
02BE50: 61 2E 20 20 57 65 20 63 6F 75 6C 64 0D 0A 20 20 a. We could..
02BE60: 20 68 61 76 65 20 61 6C 73 6F 20 64 6F 6E 65 20 have also done
02BE70: 69 74 20 6C 69 6B 65 20 74 68 69 73 3A 0D 0A 0D it like this:...
02BE80: 0A 20 20 20 20 20 7C 53 45 4E 44 2C 26 39 30 2C . |SEND,&90,
02BE90: 36 30 2C 34 30 2C 36 34 2C 34 30 2C 36 37 2C 34 60,40,64,40,67,4
02BEA0: 30 0D 0A 0D 0A 20 20 20 41 66 74 65 72 20 74 68 0.... After th
02BEB0: 65 20 76 6F 6C 75 6D 65 20 62 79 74 65 20 6F 66 e volume byte of
02BEC0: 20 34 30 20 66 6F 72 20 74 68 65 20 20 66 69 72 40 for the fir
02BED0: 73 74 20 6E 6F 74 65 2C 20 69 6E 73 74 65 61 64 st note, instead
02BEE0: 20 6F 66 20 74 68 65 20 26 39 30 20 73 74 61 74 of the &90 stat
02BEF0: 75 73 0D 0A 20 20 20 62 79 74 65 20 77 65 20 68 us.. byte we h
02BF00: 61 76 65 20 67 6F 6E 65 20 20 73 74 72 61 69 67 ave gone straig
02BF10: 68 74 20 20 6F 6E 20 20 74 6F 20 20 74 68 65 20 ht on to the
02BF20: 20 70 69 74 63 68 20 20 64 61 74 61 20 20 66 6F pitch data fo
02BF30: 72 20 20 74 68 65 20 6E 65 78 74 20 6E 6F 74 65 r the next note
02BF40: 2E 0D 0A 20 20 20 42 65 63 61 75 73 65 20 64 61 ... Because da
02BF50: 74 61 20 62 79 74 65 73 20 61 72 65 20 61 6C 6C ta bytes are all
02BF60: 20 6C 65 73 73 20 74 68 61 6E 20 31 32 38 2C 20 less than 128,
02BF70: 20 74 68 65 20 20 70 69 74 63 68 20 6F 66 20 36 the pitch of 6
02BF80: 34 20 6D 75 73 74 20 62 65 20 61 20 64 61 74 61 4 must be a data
02BF90: 0D 0A 20 20 20 62 79 74 65 20 6E 6F 74 20 61 20 .. byte not a
02BFA0: 73 74 61 74 75 73 20 62 79 74 65 2C 20 73 6F 20 status byte, so
02BFB0: 4D 49 44 49 20 20 65 71 75 69 70 6D 65 6E 74 20 MIDI equipment
02BFC0: 61 73 73 75 6D 65 73 20 74 68 61 74 20 74 68 65 assumes that the
02BFD0: 20 6D 69 73 73 69 6E 67 20 73 74 61 74 75 73 0D missing status.
02BFE0: 0A 20 20 20 63 6F 64 65 20 69 73 20 74 68 65 20 . code is the
02BFF0: 73 61 6D 65 20 61 73 20 74 68 65 20 6C 61 73 74 same as the last
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 C4 02 00 00 00 02 %.....N.%.......
02C020: 25 00 C9 02 00 00 00 02 25 00 C5 02 00 00 00 02 %.......%.......
02C030: 25 00 C1 02 00 00 00 02 25 00 C6 02 00 00 00 02 %.......%.......
02C040: 25 00 C2 02 00 00 00 02 25 00 C7 02 00 00 00 02 %.......%.......
02C050: 25 00 C3 02 00 00 00 02 25 00 C8 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: 32 32 30 20 44 41 54 41 20 39 44 32 38 46 36 32 220 DATA 9D28F62
02C110: 31 33 31 39 44 31 38 46 31 34 46 43 42 30 31 30 1319D18F14FCB010
02C120: 36 34 44 34 0D 0A 20 32 33 30 20 44 41 54 41 20 64D4.. 230 DATA
02C130: 30 30 44 44 30 39 34 37 44 44 32 42 44 44 32 42 00DD0947DD2BDD2B
02C140: 44 44 37 45 30 30 43 35 35 35 44 0D 0A 20 32 34 DD7E00C555D.. 24
02C150: 30 20 44 41 54 41 20 43 44 32 32 39 44 43 31 31 0 DATA CD229DC11
02C160: 30 46 32 43 39 30 30 30 30 30 30 30 30 30 30 34 0F2C900000000004
02C170: 31 38 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 18............
02C180: 20 4C 49 53 54 49 4E 47 20 32 0D 0A 0D 0A 20 20 LISTING 2....
02C190: 20 3B 53 65 6E 64 20 76 65 72 73 69 6F 6E 20 32 ;Send version 2
02C1A0: 2E 30 30 2C 20 31 31 2F 35 2F 31 39 39 37 0D 0A .00, 11/5/1997..
02C1B0: 20 20 20 3B 64 65 73 69 67 6E 65 64 20 74 6F 20 ;designed to
02C1C0: 62 65 20 61 73 73 65 6D 62 6C 65 64 20 77 69 74 be assembled wit
02C1D0: 68 20 5A 4D 41 43 0D 0A 0D 0A 20 20 20 3B 69 6E h ZMAC.... ;in
02C1E0: 69 74 69 61 6C 69 73 65 20 52 53 58 73 20 62 79 itialise RSXs by
02C1F0: 20 43 41 4C 4C 20 26 39 44 30 30 0D 0A 0D 0A 20 CALL &9D00....
02C200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02C210: 20 20 41 4F 52 47 20 39 44 30 30 68 0D 0A 0D 0A AORG 9D00h....
02C220: 20 20 20 69 6E 69 74 69 61 6C 69 73 65 3A 20 20 initialise:
02C230: 20 20 20 4C 44 20 42 43 2C 72 73 78 74 61 62 0D LD BC,rsxtab.
02C240: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02C250: 20 20 20 20 4C 44 20 48 4C 2C 77 72 6B 73 70 0D LD HL,wrksp.
02C260: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02C270: 20 20 20 20 4A 50 20 30 42 43 44 31 68 0D 0A 20 JP 0BCD1h..
02C280: 20 20 72 73 78 74 61 62 3A 20 20 20 20 20 20 20 rsxtab:
02C290: 20 20 44 45 46 57 20 6E 61 6D 65 73 0D 0A 20 20 DEFW names..
02C2A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02C2B0: 20 4A 50 20 73 65 6E 64 0D 0A 20 20 20 20 20 20 JP send..
02C2C0: 20 20 20 20 20 20 20 20 20 20 20 20 20 4A 50 20 JP
02C2D0: 63 68 6F 75 74 0D 0A 20 20 20 6E 61 6D 65 73 3A chout.. names:
02C2E0: 20 20 20 20 20 20 20 20 20 20 44 45 46 42 20 22 DEFB "
02C2F0: 53 45 4E 22 2C 22 44 22 2B 31 32 38 0D 0A 20 20 SEN","D"+128..
02C300: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02C310: 20 20 20 20 20 4C 44 20 41 2C 28 49 58 2B 30 29 LD A,(IX+0)
02C320: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02C330: 20 20 20 20 20 50 55 53 48 20 42 43 0D 0A 20 20 PUSH BC..
02C340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02C350: 20 43 41 4C 4C 20 6A 6D 70 6D 69 64 69 73 65 6E CALL jmpmidisen
02C360: 64 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 d..
02C370: 20 20 20 20 20 20 50 4F 50 20 42 43 0D 0A 20 20 POP BC..
02C380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02C390: 20 44 4A 4E 5A 20 73 65 6E 64 6C 6F 6F 70 0D 0A DJNZ sendloop..
02C3A0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02C3B0: 20 20 20 52 45 54 0D 0A 1A 38 0D 0A 20 20 20 50 RET...8.. P
02C3C0: 52 4F 47 52 41 4D 4D 45 52 53 27 20 50 41 54 43 ROGRAMMERS' PATC
02C3D0: 48 20 31 31 0D 0A 20 20 20 42 79 20 4D 61 74 74 H 11.. By Matt
02C3E0: 68 65 77 20 50 68 69 6C 6C 69 70 73 0D 0A 0D 0A hew Phillips....
02C3F0: 20 20 20 43 6F 6E 74 69 6E 75 69 6E 67 20 6F 75 Continuing ou
02C400: 20 20 20 20 20 20 20 20 20 20 20 20 20 4C 44 20 LD
02C410: 48 4C 2C 44 48 43 50 62 6C 6F 63 6B 73 0D 0A 20 HL,DHCPblocks..
02C420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02C430: 20 20 4A 52 20 63 6F 70 79 62 6C 6F 63 6B 73 0D JR copyblocks.
02C440: 0A 0D 0A 20 20 20 73 65 6E 64 3A 20 20 20 20 20 ... send:
02C450: 20 20 20 20 20 20 4C 44 20 43 2C 41 0D 0A 20 20 LD C,A..
02C460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02C470: 20 52 4C 43 20 43 0D 0A 20 20 20 20 20 20 20 20 RLC C..
02C480: 20 20 20 20 20 20 20 20 20 20 20 4C 44 20 42 2C LD B,
02C490: 30 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 0..
02C4A0: 20 20 20 20 20 20 41 44 44 20 49 58 2C 42 43 0D ADD IX,BC.
02C4B0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02C4C0: 20 20 20 20 4C 44 20 42 2C 41 0D 0A 20 20 20 73 LD B,A.. s
02C4D0: 65 6E 64 6C 6F 6F 70 3A 20 20 20 20 20 20 20 44 endloop: D
02C4E0: 45 43 20 49 58 0D 0A 20 20 20 20 20 20 20 20 20 EC IX..
02C4F0: 20 20 20 20 20 20 20 20 20 20 44 45 43 20 49 58 DEC IX
02C500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02C510: 20 44 45 46 42 20 22 43 48 4F 55 22 2C 22 54 22 DEFB "CHOU","T"
02C520: 2B 31 32 38 0D 0A 20 20 20 20 20 20 20 20 20 20 +128..
02C530: 20 20 20 20 20 20 20 20 20 44 45 46 42 20 30 0D DEFB 0.
02C540: 0A 20 20 20 77 72 6B 73 70 3A 20 20 20 20 20 20 . wrksp:
02C550: 20 20 20 20 44 45 46 53 20 34 0D 0A 0D 0A 0D 0A DEFS 4......
02C560: 20 20 20 6A 75 6D 70 62 6C 6F 63 6B 73 3A 0D 0A jumpblocks:..
02C570: 20 20 20 6A 6D 70 72 65 73 65 74 3A 20 20 20 20 jmpreset:
02C580: 20 20 20 4A 50 20 72 61 6D 72 65 73 65 74 0D 0A JP ramreset..
02C590: 20 20 20 6A 6D 70 6D 69 64 69 73 65 6E 64 3A 20 jmpmidisend:
02C5A0: 20 20 20 4A 50 20 72 61 6D 73 65 6E 64 0D 0A 0D JP ramsend...
02C5B0: 0A 20 20 20 52 41 4D 62 6C 6F 63 6B 73 3A 20 20 . RAMblocks:
02C5C0: 20 20 20 20 4A 50 20 72 61 6D 72 65 73 65 74 0D JP ramreset.
02C5D0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02C5E0: 20 20 20 20 4A 50 20 72 61 6D 73 65 6E 64 0D 0A JP ramsend..
02C5F0: 20 20 20 45 4D 52 62 6C 6F 63 6B 73 3A 20 20 20 EMRblocks:
02C600: 20 20 20 4A 50 20 65 6D 72 72 65 73 65 74 0D 0A JP emrreset..
02C610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02C620: 20 20 20 4A 50 20 65 6D 72 73 65 6E 64 0D 0A 20 JP emrsend..
02C630: 20 20 44 48 43 50 62 6C 6F 63 6B 73 3A 20 20 20 DHCPblocks:
02C640: 20 20 4A 50 20 64 68 63 70 72 65 73 65 74 0D 0A JP dhcpreset..
02C650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02C660: 20 20 20 4A 50 20 64 68 63 70 73 65 6E 64 0D 0A JP dhcpsend..
02C670: 0D 0A 20 20 20 72 61 6D 72 65 73 65 74 3A 20 20 .. ramreset:
02C680: 20 20 20 20 20 4C 44 20 42 43 2C 30 46 38 45 43 LD BC,0F8EC
02C690: 68 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 h..
02C6A0: 20 20 20 20 20 20 4C 44 20 41 2C 33 0D 0A 20 20 LD A,3..
02C6B0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02C6C0: 20 4F 55 54 20 28 43 29 2C 41 0D 0A 20 20 20 20 OUT (C),A..
02C6D0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4C L
02C6E0: 44 20 41 2C 31 35 68 0D 0A 20 20 20 20 20 20 20 D A,15h..
02C6F0: 20 20 20 20 20 20 20 20 20 20 20 20 4F 55 54 20 OUT
02C700: 73 20 20 77 69 6C 6C 20 20 6E 6F 74 20 20 62 65 s will not be
02C710: 20 20 61 6C 74 65 72 65 64 2E 20 20 20 47 69 76 altered. Giv
02C720: 69 6E 67 20 20 73 6D 61 6C 6C 65 72 20 6F 72 20 ing smaller or
02C730: 6C 61 72 67 65 72 0D 0A 20 20 20 6D 6F 64 75 6C larger.. modul
02C740: 61 74 69 6F 6E 20 76 61 6C 75 65 73 20 73 6C 69 ation values sli
02C750: 67 68 74 6C 79 20 63 68 61 6E 67 65 73 20 74 68 ghtly changes th
02C760: 65 20 70 69 74 63 68 20 20 6F 66 20 74 68 65 20 e pitch of the
02C770: 6E 6F 74 65 73 20 70 6C 61 79 69 6E 67 20 6F 6E notes playing on
02C780: 20 74 68 61 74 0D 0A 20 20 20 63 68 61 6E 6E 65 that.. channe
02C790: 6C 2E 20 20 59 6F 75 20 77 6F 75 6C 64 20 68 61 l. You would ha
02C7A0: 76 65 20 74 6F 20 73 65 6E 64 20 20 71 75 69 74 ve to send quit
02C7B0: 65 20 20 61 20 20 6C 6F 74 20 20 6F 66 20 70 69 e a lot of pi
02C7C0: 74 63 68 20 62 65 6E 64 20 6D 65 73 73 61 67 65 tch bend message
02C7D0: 73 20 74 6F 0D 0A 20 20 20 61 63 68 69 65 76 65 s to.. achieve
02C7E0: 20 61 6E 79 20 75 73 65 66 75 6C 20 65 66 66 65 any useful effe
02C7F0: 63 74 20 6C 69 6B 65 20 76 69 62 72 61 74 6F 2E ct like vibrato.
02C800: 0D 0A 0D 0A 20 20 20 48 45 52 45 20 57 45 20 41 .... HERE WE A
02C810: 52 45 20 41 47 41 49 4E 0D 0A 20 20 20 59 65 73 RE AGAIN.. Yes
02C820: 2C 20 77 65 27 72 65 20 64 72 61 77 69 6E 67 20 , we're drawing
02C830: 74 6F 20 74 68 65 20 65 6E 64 20 6F 66 20 61 6E to the end of an
02C840: 6F 74 68 65 72 20 61 72 74 69 63 6C 65 2E 20 20 other article.
02C850: 57 65 20 68 61 76 65 20 6E 6F 74 20 79 65 74 20 We have not yet
02C860: 63 6F 76 65 72 65 64 0D 0A 20 20 20 61 6C 6C 20 covered.. all
02C870: 74 68 65 20 4D 49 44 49 20 73 74 61 74 75 73 20 the MIDI status
02C880: 63 6F 64 65 73 2C 20 62 75 74 20 74 68 65 20 6D codes, but the m
02C890: 6F 73 74 20 69 6D 70 6F 72 74 61 6E 74 20 6F 6E ost important on
02C8A0: 65 73 20 61 72 65 20 6F 75 74 20 6F 66 20 74 68 es are out of th
02C8B0: 65 20 77 61 79 2E 0D 0A 20 20 20 49 66 20 79 6F e way... If yo
02C8C0: 75 20 61 72 65 20 72 65 61 6C 6C 79 20 20 67 65 u are really ge
02C8D0: 74 74 69 6E 67 20 20 69 6E 74 6F 20 20 74 68 69 tting into thi
02C8E0: 73 2C 20 20 77 68 79 20 20 6E 6F 74 20 20 70 6F s, why not po
02C8F0: 70 20 20 64 6F 77 6E 20 74 6F 20 79 6F 75 72 20 p down to your
02C900: 28 43 29 2C 41 0D 0A 20 20 20 20 20 20 20 20 20 (C),A..
02C910: 20 20 20 20 20 20 20 20 20 20 52 45 54 0D 0A 0D RET...
02C920: 0A 20 20 20 65 6D 72 72 65 73 65 74 3A 20 20 20 . emrreset:
02C930: 20 20 20 20 4C 44 20 42 43 2C 30 46 38 46 32 68 LD BC,0F8F2h
02C940: 0D 0A 20 20 20 65 68 72 63 6F 6D 6D 6F 6E 3A 20 .. ehrcommon:
02C950: 20 20 20 20 20 4C 44 20 41 2C 33 0D 0A 20 20 20 LD A,3..
02C960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02C970: 4F 55 54 20 28 43 29 2C 41 0D 0A 20 20 20 20 20 OUT (C),A..
02C980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4C 44 LD
02C990: 20 41 2C 31 36 68 0D 0A 20 20 20 20 20 20 20 20 A,16h..
02C9A0: 20 20 20 20 20 20 20 20 20 20 20 4F 55 54 20 28 OUT (
02C9B0: 43 29 2C 41 0D 0A 20 20 20 20 20 20 20 20 20 20 C),A..
02C9C0: 20 20 20 20 20 20 20 20 20 52 45 54 0D 0A 0D 0A RET....
02C9D0: 20 20 20 64 68 63 70 72 65 73 65 74 3A 20 20 20 dhcpreset:
02C9E0: 20 20 20 4C 44 20 42 43 2C 30 46 38 45 30 68 0D LD BC,0F8E0h.
02C9F0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02CA00: 20 20 20 20 4A 52 20 65 68 72 63 6F 6D 6D 6F 6E JR ehrcommon
02CA10: 0D 0A 0D 0A 20 20 20 72 61 6D 73 65 6E 64 3A 20 .... ramsend:
02CA20: 20 20 20 20 20 20 20 4C 44 20 42 43 2C 30 46 38 LD BC,0F8
02CA30: 45 45 68 0D 0A 20 20 20 20 20 20 20 20 20 20 20 EEh..
02CA40: 20 20 20 20 20 20 20 20 50 55 53 48 20 41 46 0D PUSH AF.
02CA50: 0A 20 20 20 72 61 6D 73 6C 70 3A 20 20 20 20 20 . ramslp:
02CA60: 20 20 20 20 49 4E 20 41 2C 28 43 29 0D 0A 20 20 IN A,(C)..
02CA70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02CA80: 20 41 4E 44 20 32 0D 0A 20 20 20 20 20 20 20 20 AND 2..
02CA90: 20 20 20 20 20 20 20 20 20 20 20 4A 52 20 5A 2C JR Z,
02CAA0: 72 61 6D 73 6C 70 0D 0A 20 20 20 20 20 20 20 20 ramslp..
02CAB0: 20 20 20 20 20 20 20 20 20 20 20 50 4F 50 20 41 POP A
02CAC0: 46 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 F..
02CAD0: 20 20 20 20 20 20 44 45 43 20 43 0D 0A 20 20 20 DEC C..
02CAE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02CAF0: 4F 55 54 20 28 43 29 2C 41 0D 0A 20 20 20 20 20 OUT (C),A..
02CB00: 6C 6F 63 61 6C 0D 0A 20 20 20 6C 69 62 72 61 72 local.. librar
02CB10: 79 20 61 6E 64 20 73 65 65 20 77 68 61 74 20 62 y and see what b
02CB20: 6F 6F 6B 73 20 74 68 65 79 20 20 68 61 76 65 20 ooks they have
02CB30: 20 6F 6E 20 20 4D 49 44 49 3F 20 20 20 49 20 77 on MIDI? I w
02CB40: 69 6C 6C 20 74 72 79 20 74 6F 20 63 6F 6D 70 69 ill try to compi
02CB50: 6C 65 20 61 0D 0A 20 20 20 6C 69 73 74 20 6F 66 le a.. list of
02CB60: 20 67 6F 6F 64 20 6F 6E 65 73 20 74 6F 20 6C 6F good ones to lo
02CB70: 6F 6B 20 6F 75 74 20 66 6F 72 20 74 6F 20 62 65 ok out for to be
02CB80: 20 70 72 69 6E 74 65 64 20 77 69 74 68 20 6E 65 printed with ne
02CB90: 78 74 20 6D 6F 6E 74 68 27 73 20 61 72 74 69 63 xt month's artic
02CBA0: 6C 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 4C 49 53 54 le......... LIST
02CBB0: 49 4E 47 20 31 0D 0A 0D 0A 20 31 30 20 53 59 4D ING 1.... 10 SYM
02CBC0: 42 4F 4C 20 41 46 54 45 52 20 32 35 36 3A 4D 45 BOL AFTER 256:ME
02CBD0: 4D 4F 52 59 20 26 39 43 46 46 0D 0A 20 32 30 20 MORY &9CFF.. 20
02CBE0: 52 45 53 54 4F 52 45 20 31 30 30 3A 65 72 3D 30 RESTORE 100:er=0
02CBF0: 3A 61 64 64 72 3D 48 49 4D 45 4D 2B 31 0D 0A 20 :addr=HIMEM+1..
02CC00: 33 30 20 46 4F 52 20 69 25 3D 30 20 54 4F 20 31 30 FOR i%=0 TO 1
02CC10: 34 3A 52 45 41 44 20 63 6F 64 24 3A 63 68 6B 25 4:READ cod$:chk%
02CC20: 3D 30 0D 0A 20 34 30 20 46 4F 52 20 6A 25 3D 30 =0.. 40 FOR j%=0
02CC30: 20 54 4F 20 31 31 3A 61 25 3D 56 41 4C 28 22 26 TO 11:a%=VAL("&
02CC40: 22 2B 4D 49 44 24 28 63 6F 64 24 2C 6A 25 2A 32 "+MID$(cod$,j%*2
02CC50: 2B 31 2C 32 29 29 0D 0A 20 35 30 20 50 4F 4B 45 +1,2)).. 50 POKE
02CC60: 20 61 64 64 72 2C 61 25 3A 63 68 6B 25 3D 63 68 addr,a%:chk%=ch
02CC70: 6B 25 2B 61 25 3A 61 64 64 72 3D 61 64 64 72 2B k%+a%:addr=addr+
02CC80: 31 3A 4E 45 58 54 0D 0A 20 36 30 20 49 46 20 63 1:NEXT.. 60 IF c
02CC90: 68 6B 25 3C 3E 56 41 4C 28 22 26 22 2B 52 49 47 hk%<>VAL("&"+RIG
02CCA0: 48 54 24 28 63 6F 64 24 2C 33 29 29 20 54 48 45 HT$(cod$,3)) THE
02CCB0: 4E 20 50 52 49 4E 54 22 45 72 72 6F 72 20 69 6E N PRINT"Error in
02CCC0: 20 6C 69 6E 65 22 3B 69 25 2A 31 30 2B 31 30 30 line";i%*10+100
02CCD0: 3A 65 72 3D 2D 31 0D 0A 20 37 30 20 4E 45 58 54 :er=-1.. 70 NEXT
02CCE0: 3A 49 46 20 65 72 20 54 48 45 4E 20 45 4E 44 0D :IF er THEN END.
02CCF0: 0A 20 38 30 20 43 41 4C 4C 20 48 49 4D 45 4D 2B . 80 CALL HIMEM+
02CD00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 45 RE
02CD10: 54 0D 0A 0D 0A 20 20 20 65 6D 72 73 65 6E 64 3A T.... emrsend:
02CD20: 20 20 20 20 20 20 20 20 4C 44 20 42 43 2C 30 46 LD BC,0F
02CD30: 38 46 32 68 0D 0A 20 20 20 65 68 73 63 6F 6D 6D 8F2h.. ehscomm
02CD40: 6F 6E 3A 20 20 20 20 20 20 50 55 53 48 20 41 46 on: PUSH AF
02CD50: 0D 0A 20 20 20 65 6D 72 73 6C 70 3A 20 20 20 20 .. emrslp:
02CD60: 20 20 20 20 20 49 4E 20 41 2C 28 43 29 0D 0A 20 IN A,(C)..
02CD70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02CD80: 20 20 41 4E 44 20 32 0D 0A 20 20 20 20 20 20 20 AND 2..
02CD90: 20 20 20 20 20 20 20 20 20 20 20 20 4A 52 20 5A JR Z
02CDA0: 2C 65 6D 72 73 6C 70 0D 0A 20 20 20 20 20 20 20 ,emrslp..
02CDB0: 20 20 20 20 20 20 20 20 20 20 20 20 50 4F 50 20 POP
02CDC0: 41 46 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 AF..
02CDD0: 20 20 20 20 20 20 20 49 4E 43 20 43 0D 0A 20 20 INC C..
02CDE0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02CDF0: 20 4F 55 54 20 28 43 29 2C 41 0D 0A 20 20 20 20 OUT (C),A..
02CE00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 R
02CE10: 45 54 0D 0A 0D 0A 20 20 20 64 68 63 70 73 65 6E ET.... dhcpsen
02CE20: 64 3A 20 20 20 20 20 20 20 4C 44 20 42 43 2C 30 d: LD BC,0
02CE30: 46 38 45 30 68 0D 0A 20 20 20 20 20 20 20 20 20 F8E0h..
02CE40: 20 20 20 20 20 20 20 20 20 20 4A 52 20 65 68 73 JR ehs
02CE50: 63 6F 6D 6D 6F 6E 0D 0A 0D 0A 20 20 20 63 68 6F common.... cho
02CE60: 75 74 3A 20 20 20 20 20 20 20 20 20 20 43 50 20 ut: CP
02CE70: 31 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 1..
02CE80: 20 20 20 20 20 20 52 45 54 20 4E 5A 0D 0A 20 20 RET NZ..
02CE90: 20 63 68 6F 75 74 6A 70 32 3A 20 20 20 20 20 20 choutjp2:
02CEA0: 20 4C 44 20 41 2C 28 49 58 2B 30 29 0D 0A 20 20 LD A,(IX+0)..
02CEB0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02CEC0: 20 4C 44 20 44 45 2C 6A 75 6D 70 62 6C 6F 63 6B LD DE,jumpblock
02CED0: 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 s..
02CEE0: 20 20 20 20 20 20 4C 44 20 42 43 2C 45 4D 52 62 LD BC,EMRb
02CEF0: 6C 6F 63 6B 73 2D 52 41 4D 62 6C 6F 63 6B 73 0D locks-RAMblocks.
02CF00: 31 0D 0A 20 39 30 20 50 52 49 4E 54 22 7C 43 48 1.. 90 PRINT"|CH
02CF10: 4F 55 54 20 61 6E 64 20 7C 53 45 4E 44 20 69 6E OUT and |SEND in
02CF20: 73 74 61 6C 6C 65 64 2E 22 0D 0A 20 31 30 30 20 stalled.".. 100
02CF30: 44 41 54 41 20 30 31 30 39 39 44 32 31 31 42 39 DATA 01099D211B9
02CF40: 44 43 33 44 31 42 43 31 31 39 44 43 33 35 34 31 DC3D1BC119DC3541
02CF50: 0D 0A 20 31 31 30 20 44 41 54 41 20 39 38 39 44 .. 110 DATA 989D
02CF60: 43 33 37 37 39 44 35 33 34 35 34 45 43 34 34 33 C3779D53454EC443
02CF70: 34 38 34 46 35 39 30 0D 0A 20 31 32 30 20 44 41 484F590.. 120 DA
02CF80: 54 41 20 35 35 44 34 30 30 30 30 30 30 30 30 30 TA 55D4000000000
02CF90: 30 43 33 33 37 39 44 43 33 35 34 33 44 37 0D 0A 0C3379DC3543D7..
02CFA0: 20 31 33 30 20 44 41 54 41 20 39 44 43 33 33 37 130 DATA 9DC337
02CFB0: 39 44 43 33 35 34 39 44 43 33 34 33 39 44 43 33 9DC3549DC3439DC3
02CFC0: 36 33 36 42 31 0D 0A 20 31 34 30 20 44 41 54 41 636B1.. 140 DATA
02CFD0: 20 39 44 43 33 34 46 39 44 43 33 37 32 39 44 30 9DC34F9DC3729D0
02CFE0: 31 45 43 46 38 33 45 30 33 36 34 34 0D 0A 20 31 1ECF83E03644.. 1
02CFF0: 35 30 20 44 41 54 41 20 45 44 37 39 33 45 31 35 50 DATA ED793E15
02D000: 45 44 37 39 43 39 30 31 46 32 46 38 33 45 30 33 ED79C901F2F83E03
02D010: 36 31 34 0D 0A 20 31 36 30 20 44 41 54 41 20 45 614.. 160 DATA E
02D020: 44 37 39 33 45 31 36 45 44 37 39 43 39 30 31 45 D793E16ED79C901E
02D030: 30 46 38 31 38 46 32 36 43 43 0D 0A 20 31 37 30 0F818F26CC.. 170
02D040: 20 44 41 54 41 20 30 31 45 45 46 38 46 35 45 44 DATA 01EEF8F5ED
02D050: 37 38 45 36 30 32 32 38 46 41 46 31 30 44 37 34 78E60228FAF10D74
02D060: 39 0D 0A 20 31 38 30 20 44 41 54 41 20 45 44 37 9.. 180 DATA ED7
02D070: 39 43 39 30 31 46 32 46 38 46 35 45 44 37 38 45 9C901F2F8F5ED78E
02D080: 36 30 32 32 38 37 38 34 0D 0A 20 31 39 30 20 44 60228784.. 190 D
02D090: 41 54 41 20 46 41 46 31 30 43 45 44 37 39 43 39 ATA FAF10CED79C9
02D0A0: 30 31 45 30 46 38 31 38 45 46 46 45 38 30 34 0D 01E0F818EFFE804.
02D0B0: 0A 20 32 30 30 20 44 41 54 41 20 30 31 43 30 44 . 200 DATA 01C0D
02D0C0: 44 37 45 30 30 31 31 31 46 39 44 30 31 30 36 30 D7E00111F9D01060
02D0D0: 30 32 31 33 31 31 0D 0A 20 32 31 30 20 44 41 54 021311.. 210 DAT
02D0E0: 41 20 32 35 39 44 42 37 32 30 30 34 45 44 42 30 A 259DB72004EDB0
02D0F0: 31 38 39 32 33 44 32 31 32 42 34 36 44 0D 0A 20 18923D212B46D..
02D100: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02D110: 20 20 20 20 4C 44 20 48 4C 2C 52 41 4D 62 6C 6F LD HL,RAMblo
02D120: 63 6B 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 cks..
02D130: 20 20 20 20 20 20 20 20 4F 52 20 41 0D 0A 20 20 OR A..
02D140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02D150: 20 4A 52 20 4E 5A 2C 6E 6F 74 52 41 4D 0D 0A 20 JR NZ,notRAM..
02D160: 20 20 63 6F 70 79 62 6C 6F 63 6B 73 3A 20 20 20 copyblocks:
02D170: 20 20 4C 44 49 52 0D 0A 20 20 20 20 20 20 20 20 LDIR..
02D180: 20 20 20 20 20 20 20 20 20 20 20 4A 52 20 6A 6D JR jm
02D190: 70 72 65 73 65 74 0D 0A 20 20 20 6E 6F 74 52 41 preset.. notRA
02D1A0: 4D 3A 20 20 20 20 20 20 20 20 20 44 45 43 20 41 M: DEC A
02D1B0: 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ..
02D1C0: 20 20 20 20 20 4C 44 20 48 4C 2C 45 4D 52 62 6C LD HL,EMRbl
02D1D0: 6F 63 6B 73 0D 0A 20 20 20 20 20 20 20 20 20 20 ocks..
02D1E0: 20 20 20 20 20 20 20 20 20 4A 52 20 5A 2C 63 6F JR Z,co
02D1F0: 70 79 62 6C 6F 63 6B 73 0D 0A 20 20 20 20 20 20 pyblocks..
02D200: 20 20 20 20 20 20 20 20 20 20 20 20 20 4C 44 20 LD
02D210: 48 4C 2C 44 48 43 50 62 6C 6F 63 6B 73 0D 0A 20 HL,DHCPblocks..
02D220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02D230: 20 20 4A 52 20 63 6F 70 79 62 6C 6F 63 6B 73 0D JR copyblocks.
02D240: 0A 0D 0A 20 20 20 73 65 6E 64 3A 20 20 20 20 20 ... send:
02D250: 20 20 20 20 20 20 4C 44 20 43 2C 41 0D 0A 20 20 LD C,A..
02D260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
02D270: 20 52 4C 43 20 43 0D 0A 20 20 20 20 20 20 20 20 RLC C..
02D280: 20 20 20 20 20 20 20 20 20 20 20 4C 44 20 42 2C LD B,
02D290: 30 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 0..
02D2A0: 20 20 20 20 20 20 41 44 44 20 49 58 2C 42 43 0D ADD IX,BC.
02D2B0: 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .
02D2C0: 20 20 20 20 4C 44 20 42 2C 41 0D 0A 20 20 20 73 LD B,A.. s
02D2D0: 65 6E 64 6C 6F 6F 70 3A 20 20 20 20 20 20 20 44 endloop: D
02D2E0: 45 43 20 49 58 0D 0A 20 20 20 20 20 20 20 20 20 EC IX..
02D2F0: 20 20 20 20 20 20 20 20 20 20 44 45 43 20 49 58 DEC IX
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 C7 02 00 00 00 02 &.....N.&.......
02D320: 26 00 C3 02 00 00 00 02 26 00 C8 02 00 00 00 02 &.......&.......
02D330: 26 00 C4 02 00 00 00 02 26 00 C9 02 00 00 00 02 &.......&.......
02D340: 26 00 C5 02 00 00 00 02 26 00 C1 02 00 00 00 02 &.......&.......
02D350: 26 00 C6 02 00 00 00 02 26 00 C2 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: 00 53 45 4E 44 20 20 20 20 42 41 53 00 00 00 00 .SEND BAS....
02D410: 00 00 00 00 00 70 01 00 4C 03 00 00 00 00 00 00 .....p..L.......
02D420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D430: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02D440: 4C 03 00 8F 03 30 36 34 44 34 00 22 00 E6 00 8C L....064D4."....
02D450: 20 30 30 44 44 30 39 34 37 44 44 32 42 44 44 32 00DD0947DD2BDD2
02D460: 42 44 44 37 45 30 30 43 35 35 35 44 00 22 00 F0 BDD7E00C555D."..
02D470: 00 8C 20 43 44 32 32 39 44 43 31 31 30 46 32 43 .. CD229DC110F2C
02D480: 12 00 0A 00 CF 20 80 20 1A 00 01 01 AA 20 1C FF ..... . ..... ..
02D490: 9C 00 1F 00 14 00 C7 20 1E 64 00 01 0D 00 00 65 ....... .d.....e
02D4A0: F2 EF 0E 01 0D 00 00 61 64 64 F2 EF FF 42 F4 0F .......add...B..
02D4B0: 00 24 00 1E 00 9E 20 02 00 00 E9 EF 0E 20 EC 20 .$.... ...... .
02D4C0: 19 0E 01 C3 20 03 00 00 63 6F E4 01 02 00 00 63 .... ...co.....c
02D4D0: 68 EB EF 0E 00 34 00 28 00 9E 20 02 00 00 EA EF h....4.(.. .....
02D4E0: 0E 20 EC 20 19 0B 01 02 00 00 E1 EF FF 1D 28 22 . . ..........("
02D4F0: 26 22 F4 AC 28 03 00 00 63 6F E4 2C 02 00 00 EA &"..(...co.,....
02D500: F6 10 F4 0F 2C 10 29 29 00 3A 00 32 00 BE 20 0D ....,.)).:.2.. .
02D510: 00 00 61 64 64 F2 2C 02 00 00 E1 01 02 00 00 63 ..add.,........c
02D520: 68 EB EF 02 00 00 63 68 EB F4 02 00 00 E1 01 0D h.....ch........
02D530: 00 00 61 64 64 F2 EF 0D 00 00 61 64 64 F2 F4 0F ..add.....add...
02D540: 01 B0 00 49 00 3C 00 A1 20 02 00 00 63 68 EB F2 ...I.<.. ...ch..
02D550: FF 1D 28 22 26 22 F4 FF 79 28 03 00 00 63 6F E4 ..("&"..y(...co.
02D560: 2C 11 29 29 20 EB 20 BF 22 45 72 72 6F 72 20 69 ,.)) . ."Error i
02D570: 6E 20 6C 69 6E 65 22 3B 02 00 00 E9 F6 19 0A F4 n line";........
02D580: 19 64 01 0D 00 00 65 F2 EF F5 0F 00 12 00 46 00 .d....e.......F.
02D590: B0 01 A1 20 0D 00 00 65 F2 20 EB 20 98 00 0B 00 ... ...e. . ....
02D5A0: 50 00 83 20 FF 42 F4 0F 00 23 00 5A 00 BF 22 7C P.. .B...#.Z.."|
02D5B0: 43 48 4F 55 54 20 61 6E 64 20 7C 53 45 4E 44 20 CHOUT and |SEND
02D5C0: 69 6E 73 74 61 6C 6C 65 64 2E 22 00 22 00 64 00 installed.".".d.
02D5D0: 8C 20 30 31 30 39 39 44 32 31 31 42 39 44 43 33 . 01099D211B9DC3
02D5E0: 44 31 42 43 31 31 39 44 43 33 35 34 31 00 22 00 D1BC119DC3541.".
02D5F0: 6E 00 8C 20 39 38 39 44 43 33 37 37 39 44 35 33 n.. 989DC3779D53
02D600: 58 2B 30 29 0D 0A 09 09 4C 44 20 44 45 2C 6A 75 X+0)....LD DE,ju
02D610: 6D 70 62 6C 6F 63 6B 73 0D 0A 09 09 4C 44 20 42 mpblocks....LD B
02D620: 43 2C 45 4D 52 62 6C 6F 63 6B 73 2D 52 41 4D 62 C,EMRblocks-RAMb
02D630: 6C 6F 63 6B 73 0D 0A 09 09 4C 44 20 48 4C 2C 52 locks....LD HL,R
02D640: 41 4D 62 6C 6F 63 6B 73 0D 0A 09 09 4F 52 20 41 AMblocks....OR A
02D650: 0D 0A 09 09 4A 52 20 4E 5A 2C 6E 6F 74 52 41 4D ....JR NZ,notRAM
02D660: 0D 0A 63 6F 70 79 62 6C 6F 63 6B 73 3A 09 4C 44 ..copyblocks:.LD
02D670: 49 52 0D 0A 09 09 4A 52 20 6A 6D 70 72 65 73 65 IR....JR jmprese
02D680: 74 0D 0A 6E 6F 74 52 41 4D 3A 09 09 44 45 43 20 t..notRAM:..DEC
02D690: 41 0D 0A 09 09 4C 44 20 48 4C 2C 45 4D 52 62 6C A....LD HL,EMRbl
02D6A0: 6F 63 6B 73 0D 0A 09 09 4A 52 20 5A 2C 63 6F 70 ocks....JR Z,cop
02D6B0: 79 62 6C 6F 63 6B 73 0D 0A 09 09 4C 44 20 48 4C yblocks....LD HL
02D6C0: 2C 44 48 43 50 62 6C 6F 63 6B 73 0D 0A 09 09 4A ,DHCPblocks....J
02D6D0: 52 20 63 6F 70 79 62 6C 6F 63 6B 73 0D 0A 0D 0A R copyblocks....
02D6E0: 73 65 6E 64 3A 09 09 4C 44 20 43 2C 41 0D 0A 09 send:..LD C,A...
02D6F0: 09 52 4C 43 20 43 0D 0A 09 09 4C 44 20 42 2C 30 .RLC C....LD B,0
02D700: 0D 0A 09 09 41 44 44 20 49 58 2C 42 43 0D 0A 09 ....ADD IX,BC...
02D710: 09 4C 44 20 42 2C 41 0D 0A 73 65 6E 64 6C 6F 6F .LD B,A..sendloo
02D720: 70 3A 09 44 45 43 20 49 58 0D 0A 09 09 44 45 43 p:.DEC IX....DEC
02D730: 20 49 58 0D 0A 09 09 4C 44 20 41 2C 28 49 58 2B IX....LD A,(IX+
02D740: 30 29 0D 0A 09 09 50 55 53 48 20 42 43 0D 0A 09 0)....PUSH BC...
02D750: 09 43 41 4C 4C 20 6A 6D 70 6D 69 64 69 73 65 6E .CALL jmpmidisen
02D760: 64 0D 0A 09 09 50 4F 50 20 42 43 0D 0A 09 09 44 d....POP BC....D
02D770: 4A 4E 5A 20 73 65 6E 64 6C 6F 6F 70 0D 0A 09 09 JNZ sendloop....
02D780: 52 45 54 0D 0A 1A 20 20 20 20 24 24 24 FF 00 FF RET... $$$...
02D790: 30 30 2C 20 31 31 2F 35 2F 31 39 39 37 0D 0A 3B 00, 11/5/1997..;
02D7A0: 64 65 73 69 67 6E 65 64 20 74 6F 20 62 65 20 61 designed to be a
02D7B0: 73 73 65 6D 62 6C 65 64 20 77 69 74 68 20 5A 4D ssembled with ZM
02D7C0: 41 43 0D 0A 0D 0A 3B 69 6E 69 74 69 61 6C 69 73 AC....;initialis
02D7D0: 65 20 52 53 58 73 20 62 79 20 43 41 4C 4C 20 26 e RSXs by CALL &
02D7E0: 39 44 30 30 0D 0A 0D 0A 09 09 41 4F 52 47 20 39 9D00......AORG 9
02D7F0: 44 30 30 68 0D 0A 0D 0A 69 6E 69 74 69 61 6C 69 D00h....initiali
02D800: 34 35 34 45 43 34 34 33 34 38 34 46 35 39 30 00 454EC443484F590.
02D810: 22 00 78 00 8C 20 35 35 44 34 30 30 30 30 30 30 ".x.. 55D4000000
02D820: 30 30 30 30 43 33 33 37 39 44 43 33 35 34 33 44 0000C3379DC3543D
02D830: 37 00 22 00 82 00 8C 20 39 44 43 33 33 37 39 44 7.".... 9DC3379D
02D840: 43 33 35 34 39 44 43 33 34 33 39 44 43 33 36 33 C3549DC3439DC363
02D850: 36 42 31 00 22 00 8C 00 8C 20 39 44 43 33 34 46 6B1.".... 9DC34F
02D860: 39 44 43 33 37 32 39 44 30 31 45 43 46 38 33 45 9DC3729D01ECF83E
02D870: 30 33 36 34 34 00 22 00 96 00 8C 20 45 44 37 39 03644.".... ED79
02D880: 33 45 31 35 45 44 37 39 43 39 30 31 46 32 46 38 3E15ED79C901F2F8
02D890: 33 45 30 33 36 31 34 00 22 00 A0 00 8C 20 45 44 3E03614.".... ED
02D8A0: 37 39 33 45 31 36 45 44 37 39 43 39 30 31 45 30 793E16ED79C901E0
02D8B0: 46 38 31 38 46 32 36 43 43 00 22 00 AA 00 8C 20 F818F26CC."....
02D8C0: 30 31 45 45 46 38 46 35 45 44 37 38 45 36 30 32 01EEF8F5ED78E602
02D8D0: 32 38 46 41 46 31 30 44 37 34 39 00 22 00 B4 00 28FAF10D749."...
02D8E0: 8C 20 45 44 37 39 43 39 30 31 46 32 46 38 46 35 . ED79C901F2F8F5
02D8F0: 45 44 37 38 45 36 30 32 32 38 37 38 34 00 22 00 ED78E60228784.".
02D900: BE 00 8C 20 46 41 46 31 30 43 45 44 37 39 43 39 ... FAF10CED79C9
02D910: 30 31 45 30 46 38 31 38 45 46 46 45 38 30 34 00 01E0F818EFFE804.
02D920: 22 00 C8 00 8C 20 30 31 43 30 44 44 37 45 30 30 ".... 01C0DD7E00
02D930: 31 31 31 46 39 44 30 31 30 36 30 30 32 31 33 31 111F9D0106002131
02D940: 31 00 22 00 D2 00 8C 20 32 35 39 44 42 37 32 30 1.".... 259DB720
02D950: 30 34 45 44 42 30 31 38 39 32 33 44 32 31 32 42 04EDB018923D212B
02D960: 34 36 44 00 22 00 DC 00 8C 20 39 44 32 38 46 36 46D.".... 9D28F6
02D970: 32 31 33 31 39 44 31 38 46 31 34 46 43 42 30 31 21319D18F14FCB01
02D980: 30 36 34 44 34 00 22 00 E6 00 8C 20 30 30 44 44 064D4.".... 00DD
02D990: 30 39 34 37 44 44 32 42 44 44 32 42 44 44 37 45 0947DD2BDD2BDD7E
02D9A0: 30 30 43 35 35 35 44 00 22 00 F0 00 8C 20 43 44 00C555D.".... CD
02D9B0: 32 32 39 44 43 31 31 30 46 32 43 39 30 30 30 30 229DC110F2C90000
02D9C0: 30 30 30 30 30 30 34 31 38 00 00 00 1A 3D 30 20 000000418....=0
02D9D0: 54 4F 20 31 34 3A 52 45 41 44 20 63 6F 64 24 3A TO 14:READ cod$:
02D9E0: 63 68 6B 25 3D 30 0D 0A 34 30 20 46 4F 52 20 6A chk%=0..40 FOR j
02D9F0: 25 3D 30 20 54 4F 20 31 31 3A 61 25 3D 56 41 4C %=0 TO 11:a%=VAL
02DA00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DA90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DAF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DB90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DBF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02DC00: 63 6C 65 20 31 38 0D 0A 53 43 41 4E 34 36 34 09 cle 18..SCAN464.
02DC10: 2E 42 41 53 09 52 53 58 20 74 6F 20 73 63 61 6E .BAS.RSX to scan
02DC20: 20 66 6F 72 20 34 36 34 2D 75 6E 66 72 69 65 6E for 464-unfrien
02DC30: 64 6C 79 20 42 41 53 49 43 20 28 73 65 65 20 61 dly BASIC (see a
02DC40: 72 74 69 63 6C 65 20 31 33 29 0D 0A 53 43 41 4E rticle 13)..SCAN
02DC50: 34 36 34 09 2E 42 49 4E 09 62 69 6E 61 72 79 20 464..BIN.binary
02DC60: 66 69 6C 65 20 66 6F 72 20 74 68 65 20 61 62 6F file for the abo
02DC70: 76 65 0D 0A 53 43 41 4E 36 31 32 38 2E 42 41 53 ve..SCAN6128.BAS
02DC80: 09 76 65 72 73 69 6F 6E 20 6F 66 20 53 43 41 4E .version of SCAN
02DC90: 34 36 34 20 74 6F 20 72 75 6E 20 6F 6E 20 42 41 464 to run on BA
02DCA0: 53 49 43 20 31 2E 31 20 6D 61 63 68 69 6E 65 73 SIC 1.1 machines
02DCB0: 0D 0A 53 43 41 4E 36 31 32 38 2E 42 49 4E 09 62 ..SCAN6128.BIN.b
02DCC0: 69 6E 61 72 79 20 66 69 6C 65 20 66 6F 72 20 74 inary file for t
02DCD0: 68 65 20 61 62 6F 76 65 0D 0A 54 55 4E 45 09 2E he above..TUNE..
02DCE0: 42 41 53 09 70 72 6F 67 72 61 6D 20 74 6F 20 70 BAS.program to p
02DCF0: 6C 61 79 20 61 20 74 75 6E 65 20 66 72 6F 6D 20 lay a tune from
02DD00: 61 72 74 69 63 6C 65 20 31 32 0D 0A 0D 0A 2D 2D article 12....--
02DD10: 2D 2D 0D 0A 2A 20 53 65 65 20 22 42 6C 61 73 74 --..* See "Blast
02DD20: 20 66 72 6F 6D 20 74 68 65 20 50 61 73 74 22 2C from the Past",
02DD30: 20 57 41 43 43 49 20 31 31 38 2C 20 4A 61 6E 20 WACCI 118, Jan
02DD40: 31 39 39 38 2C 20 70 2E 20 32 37 2D 32 39 2E 0D 1998, p. 27-29..
02DD50: 0A 1A 6E 64 20 48 69 6C 61 72 79 20 50 68 69 6C ..nd Hilary Phil
02DD60: 6C 69 70 73 0D 0A 0D 0A 54 68 65 20 50 72 6F 67 lips....The Prog
02DD70: 72 61 6D 6D 65 72 73 27 20 50 61 74 63 68 20 64 rammers' Patch d
02DD80: 6F 6E 20 70 75 62 6C 69 73 68 65 64 20 69 6E 20 on published in
02DD90: 57 41 43 43 49 0D 0A 41 49 37 09 2E 4C 4F 47 09 WACCI..AI7..LOG.
02DDA0: 41 49 20 69 6E 20 4C 6F 67 6F 20 2D 20 61 6E 20 AI in Logo - an
02DDB0: 69 6D 70 72 6F 76 65 64 20 76 65 72 73 69 6F 6E improved version
02DDC0: 20 75 73 69 6E 67 20 70 72 6F 70 65 72 74 79 20 using property
02DDD0: 6C 69 73 74 73 0D 0A 4C 49 53 54 45 58 09 2E 42 lists..LISTEX..B
02DDE0: 41 53 09 65 78 61 6D 70 6C 65 20 6C 69 6E 6B 65 AS.example linke
02DDF0: 64 20 6C 69 73 74 20 66 72 6F 6D 20 61 72 74 69 d list from arti
02DE00: 00 4D 49 44 49 31 20 20 20 42 41 53 00 00 00 00 .MIDI1 BAS....
02DE10: 00 00 00 00 00 70 01 00 2D 01 00 00 00 00 00 00 .....p..-.......
02DE20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02DE30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02DE40: 2D 01 00 57 03 75 F3 29 20 FA 20 10 29 EF 0E 01 -..W.u.) . .)...
02DE50: D5 00 18 00 6E 00 B9 20 0D 00 00 64 61 74 61 77 ....n.. ...dataw
02DE60: 72 69 74 E5 2C 0D 00 00 E4 00 06 00 78 00 C9 00 rit.,.......x...
02DE70: 00 00 1A 0A 32 30 20 4F 55 54 20 63 6F 6E 74 72 ....20 OUT contr
02DE80: 32 00 0A 00 0D 00 00 73 74 61 74 75 F3 EF 1C EE 2......statu....
02DE90: F8 01 0D 00 00 63 6F 6E 74 72 6F EC EF 1C EC F8 .....contro.....
02DEA0: 01 0D 00 00 64 61 74 61 77 72 69 74 E5 EF 1C ED ....datawrit....
02DEB0: F8 00 13 00 14 00 B9 20 0D 00 00 63 6F 6E 74 72 ....... ...contr
02DEC0: 6F EC 2C 11 00 36 00 1E 00 B9 20 0D 00 00 63 6F o.,..6.... ...co
02DED0: 6E 74 72 6F EC 2C 1C 15 00 01 C5 20 63 68 61 6E ntro.,..... chan
02DEE0: 67 65 20 74 6F 20 26 31 36 20 66 6F 72 20 45 4D ge to &16 for EM
02DEF0: 52 20 61 6E 64 20 44 48 43 50 00 20 00 28 00 9E R and DHCP. .(..
02DF00: 20 0D 00 00 F8 EF 0E 20 EC 20 10 01 C3 20 0D 00 ...... . ... ..
02DF10: 00 E4 01 9F 20 1E 64 00 01 B0 00 15 00 32 00 9E .... .d......2..
02DF20: 20 0D 00 00 F8 EF 0E 20 EC 20 1A 88 13 01 B0 00 ...... . ......
02DF30: 20 00 3C 00 9E 20 0D 00 00 F8 EF 0E 20 EC 20 10 .<.. ...... . .
02DF40: 01 C3 20 0D 00 00 E4 01 9F 20 1E 64 00 01 B0 00 .. ...... .d....
02DF50: 06 00 46 00 98 00 19 00 50 00 8C 20 26 39 30 2C ..F.....P.. &90,
02DF60: 36 30 2C 36 34 2C 26 38 30 2C 36 30 2C 30 00 1E 60,64,&80,60,0..
02DF70: 00 64 00 D6 20 28 FF 0B 28 0D 00 00 73 74 61 74 .d.. (..(...stat
02DF80: 75 F3 29 20 FA 20 10 29 EF 0E 01 D5 00 18 00 6E u.) . .).......n
02DF90: 00 B9 20 0D 00 00 64 61 74 61 77 72 69 74 E5 2C .. ...datawrit.,
02DFA0: 0D 00 00 E4 00 06 00 78 00 C9 00 00 00 1A 0A 32 .......x.......2
02DFB0: 30 20 4F 55 54 20 63 6F 6E 74 72 6F 6C 2C 33 0D 0 OUT control,3.
02DFC0: 0A 33 30 20 4F 55 54 20 63 6F 6E 74 72 6F 6C 2C .30 OUT control,
02DFD0: 26 31 35 3A 52 45 4D 20 63 68 61 6E 67 65 20 74 &15:REM change t
02DFE0: 6F 20 26 31 36 20 66 6F 72 20 45 4D 52 20 61 6E o &16 for EMR an
02DFF0: 64 20 44 48 43 50 0D 0A 34 30 20 46 4F 52 20 78 d DHCP..40 FOR x
02E000: 3B 53 65 6E 64 20 76 65 72 73 69 6F 6E 20 32 2E ;Send version 2.
02E010: 30 30 2C 20 31 31 2F 35 2F 31 39 39 37 0D 0A 3B 00, 11/5/1997..;
02E020: 64 65 73 69 67 6E 65 64 20 74 6F 20 62 65 20 61 designed to be a
02E030: 73 73 65 6D 62 6C 65 64 20 77 69 74 68 20 5A 4D ssembled with ZM
02E040: 41 43 0D 0A 0D 0A 3B 69 6E 69 74 69 61 6C 69 73 AC....;initialis
02E050: 65 20 52 53 58 73 20 62 79 20 43 41 4C 4C 20 26 e RSXs by CALL &
02E060: 39 44 30 30 0D 0A 0D 0A 09 09 41 4F 52 47 20 39 9D00......AORG 9
02E070: 44 30 30 68 0D 0A 0D 0A 69 6E 69 74 69 61 6C 69 D00h....initiali
02E080: 73 65 3A 20 09 4C 44 20 42 43 2C 72 73 78 74 61 se: .LD BC,rsxta
02E090: 62 0D 0A 09 09 4C 44 20 48 4C 2C 77 72 6B 73 70 b....LD HL,wrksp
02E0A0: 0D 0A 09 09 4A 50 20 30 42 43 44 31 68 0D 0A 72 ....JP 0BCD1h..r
02E0B0: 73 78 74 61 62 3A 09 09 44 45 46 57 20 6E 61 6D sxtab:..DEFW nam
02E0C0: 65 73 0D 0A 09 09 4A 50 20 73 65 6E 64 0D 0A 09 es....JP send...
02E0D0: 09 4A 50 20 63 68 6F 75 74 0D 0A 6E 61 6D 65 73 .JP chout..names
02E0E0: 3A 09 09 44 45 46 42 20 22 53 45 4E 22 2C 22 44 :..DEFB "SEN","D
02E0F0: 22 2B 31 32 38 0D 0A 09 09 44 45 46 42 20 22 43 "+128....DEFB "C
02E100: 48 4F 55 22 2C 22 54 22 2B 31 32 38 0D 0A 09 09 HOU","T"+128....
02E110: 44 45 46 42 20 30 0D 0A 77 72 6B 73 70 3A 09 09 DEFB 0..wrksp:..
02E120: 44 45 46 53 20 34 0D 0A 0D 0A 0D 0A 6A 75 6D 70 DEFS 4......jump
02E130: 62 6C 6F 63 6B 73 3A 0D 0A 6A 6D 70 72 65 73 65 blocks:..jmprese
02E140: 74 3A 09 4A 50 20 72 61 6D 72 65 73 65 74 0D 0A t:.JP ramreset..
02E150: 6A 6D 70 6D 69 64 69 73 65 6E 64 3A 09 4A 50 20 jmpmidisend:.JP
02E160: 72 61 6D 73 65 6E 64 0D 0A 0D 0A 52 41 4D 62 6C ramsend....RAMbl
02E170: 6F 63 6B 73 3A 09 4A 50 20 72 61 6D 72 65 73 65 ocks:.JP ramrese
02E180: 74 0D 0A 09 09 4A 50 20 72 61 6D 73 65 6E 64 0D t....JP ramsend.
02E190: 0A 45 4D 52 62 6C 6F 63 6B 73 3A 09 4A 50 20 65 .EMRblocks:.JP e
02E1A0: 6D 72 72 65 73 65 74 0D 0A 09 09 4A 50 20 65 6D mrreset....JP em
02E1B0: 72 73 65 6E 64 0D 0A 44 48 43 50 62 6C 6F 63 6B rsend..DHCPblock
02E1C0: 73 3A 09 4A 50 20 64 68 63 70 72 65 73 65 74 0D s:.JP dhcpreset.
02E1D0: 0A 09 09 4A 50 20 64 68 63 70 73 65 6E 64 0D 0A ...JP dhcpsend..
02E1E0: 0D 0A 72 61 6D 72 65 73 65 74 3A 09 4C 44 20 42 ..ramreset:.LD B
02E1F0: 43 2C 30 46 38 45 43 68 0D 0A 09 09 4C 44 20 41 C,0F8ECh....LD A
02E200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E400: 2C 33 0D 0A 09 09 4F 55 54 20 28 43 29 2C 41 0D ,3....OUT (C),A.
02E410: 0A 09 09 4C 44 20 41 2C 31 35 68 0D 0A 09 09 4F ...LD A,15h....O
02E420: 55 54 20 28 43 29 2C 41 0D 0A 09 09 52 45 54 0D UT (C),A....RET.
02E430: 0A 0D 0A 65 6D 72 72 65 73 65 74 3A 09 4C 44 20 ...emrreset:.LD
02E440: 42 43 2C 30 46 38 46 32 68 0D 0A 65 68 72 63 6F BC,0F8F2h..ehrco
02E450: 6D 6D 6F 6E 3A 09 4C 44 20 41 2C 33 0D 0A 09 09 mmon:.LD A,3....
02E460: 4F 55 54 20 28 43 29 2C 41 0D 0A 09 09 4C 44 20 OUT (C),A....LD
02E470: 41 2C 31 36 68 0D 0A 09 09 4F 55 54 20 28 43 29 A,16h....OUT (C)
02E480: 2C 41 0D 0A 09 09 52 45 54 0D 0A 0D 0A 64 68 63 ,A....RET....dhc
02E490: 70 72 65 73 65 74 3A 09 4C 44 20 42 43 2C 30 46 preset:.LD BC,0F
02E4A0: 38 45 30 68 0D 0A 09 09 4A 52 20 65 68 72 63 6F 8E0h....JR ehrco
02E4B0: 6D 6D 6F 6E 0D 0A 0D 0A 72 61 6D 73 65 6E 64 3A mmon....ramsend:
02E4C0: 09 4C 44 20 42 43 2C 30 46 38 45 45 68 0D 0A 09 .LD BC,0F8EEh...
02E4D0: 09 50 55 53 48 20 41 46 0D 0A 72 61 6D 73 6C 70 .PUSH AF..ramslp
02E4E0: 3A 09 09 49 4E 20 41 2C 28 43 29 0D 0A 09 09 41 :..IN A,(C)....A
02E4F0: 4E 44 20 32 0D 0A 09 09 4A 52 20 5A 2C 72 61 6D ND 2....JR Z,ram
02E500: 73 6C 70 0D 0A 09 09 50 4F 50 20 41 46 0D 0A 09 slp....POP AF...
02E510: 09 44 45 43 20 43 0D 0A 09 09 4F 55 54 20 28 43 .DEC C....OUT (C
02E520: 29 2C 41 0D 0A 09 09 52 45 54 0D 0A 0D 0A 65 6D ),A....RET....em
02E530: 72 73 65 6E 64 3A 09 4C 44 20 42 43 2C 30 46 38 rsend:.LD BC,0F8
02E540: 46 32 68 0D 0A 65 68 73 63 6F 6D 6D 6F 6E 3A 09 F2h..ehscommon:.
02E550: 50 55 53 48 20 41 46 0D 0A 65 6D 72 73 6C 70 3A PUSH AF..emrslp:
02E560: 09 09 49 4E 20 41 2C 28 43 29 0D 0A 09 09 41 4E ..IN A,(C)....AN
02E570: 44 20 32 0D 0A 09 09 4A 52 20 5A 2C 65 6D 72 73 D 2....JR Z,emrs
02E580: 6C 70 0D 0A 09 09 50 4F 50 20 41 46 0D 0A 09 09 lp....POP AF....
02E590: 49 4E 43 20 43 0D 0A 09 09 4F 55 54 20 28 43 29 INC C....OUT (C)
02E5A0: 2C 41 0D 0A 09 09 52 45 54 0D 0A 0D 0A 64 68 63 ,A....RET....dhc
02E5B0: 70 73 65 6E 64 3A 09 4C 44 20 42 43 2C 30 46 38 psend:.LD BC,0F8
02E5C0: 45 30 68 0D 0A 09 09 4A 52 20 65 68 73 63 6F 6D E0h....JR ehscom
02E5D0: 6D 6F 6E 0D 0A 0D 0A 63 68 6F 75 74 3A 09 09 43 mon....chout:..C
02E5E0: 50 20 31 0D 0A 09 09 52 45 54 20 4E 5A 0D 0A 63 P 1....RET NZ..c
02E5F0: 68 6F 75 74 6A 70 32 3A 09 4C 44 20 41 2C 28 49 houtjp2:.LD A,(I
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 C1 02 00 00 00 02 '.....N.'.......
02E620: 27 00 C6 02 00 00 00 02 27 00 C2 02 00 00 00 02 '.......'.......
02E630: 27 00 C7 02 00 00 00 02 27 00 C3 02 00 00 00 02 '.......'.......
02E640: 27 00 C8 02 00 00 00 02 27 00 C4 02 00 00 00 02 '.......'.......
02E650: 27 00 C9 02 00 00 00 02 27 00 C5 02 00 00 00 02 '.......'.......
02E660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6C0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6D0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E6F0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
02E700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E900: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E910: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E920: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E930: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E940: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E950: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E960: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E970: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E980: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E990: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02E9F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EA90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EAF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EB90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EBF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EC90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ECF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02ED90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EDF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EE90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EED0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EEF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF00: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF10: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF20: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF30: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF40: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF50: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF60: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF70: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF80: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EF90: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFA0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFB0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFC0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFD0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFE0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02EFF0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F000: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F010: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F020: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F030: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F040: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F050: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F060: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F070: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F080: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F090: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F0F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F100: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F110: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F120: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F130: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F140: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F150: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F160: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F170: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F180: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F190: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F1F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F200: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F210: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F220: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F230: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F240: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F250: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F260: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F270: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F280: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F290: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F2F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F300: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F310: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F320: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F330: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F340: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F350: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F360: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F370: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F380: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F390: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F3F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F400: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F410: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F420: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F430: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F440: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F450: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F460: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F470: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F480: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F490: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F4F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F500: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F510: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F520: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F530: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F540: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F550: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F560: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F570: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F580: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F590: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F5F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F600: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F610: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F620: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F630: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F640: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F650: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F660: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F670: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F680: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F690: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F6F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F700: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F710: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F720: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F730: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F740: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F750: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F760: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F770: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F780: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F790: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F7F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F800: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F810: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F820: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F830: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F840: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F850: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F860: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F870: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F880: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F890: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8A0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8B0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8C0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8D0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8E0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
02F8F0: E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 ................
RESULT OF SEARCH :
PRO=198 CHEA=2 COD=68 MUSI=16 COP=40 GRA=174 WRIT=46 198=2 199=23 STARTER=3 KBI=3 CAAV=0 L.TOURNIER=0
EXTENDED CPC DSK File SAMdisk141208( NDISC BASLINKBASETXT LOOM BINt M
ESSAGESTXTREADME #A01 M !"#A02 O$%&'()*+,-A03 W./012345
678A04 T9ABCA05 cDEFGHIJKLMNOPA06 OQRSTUVWXYZA07 Qab
cdeA08 XfghijklmnopA09 qrstuvwxyzDISCMENUBASFIG161 FIG1618
FIG2 FIG27 FIG271 FIG2718 HELP TXT MENUEX1 BASMENUEX2 BAS M
ENUEX3 BASMENUEX4 BASMENUSUB PELMAN BASBSIDE BASBSIDE BINA10 TA11
£F readme B readme 136 144 readme 4446 B readme 1029 1037 a01 0 B rea
dme 1066 1074 a02 0 B readme 1125 1133 a03 0 B readme 1197 1205 a04 0 B readm
e 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 15
27 1536 a11 0 B readme 1641 1650 a12 0 B readme 1706 1715 a13 0 B readme 1779
1788 a14 0 B readme 1856 1865 a15 0 B readme 1916 1925 a16 0 B readme 1983 1
992 a17 0 B readme 2040 2049 a18 0 B reSEND ASMMIDI1 BASSEND BASadme 2
107 2116 a19 0 B readme 2164 2173 a20 0 B readme 2222 2231 a21 0 B a01 926 93
3 a01 8519 B a02 891 901 a02 8289 B a02 3010 3021 a02 9049 B a03 1791 1798 a0
3 9440 B a03 3598 3607 a03 9845 B a03 8808 8818 a03 10324 B a04 527 538 a04 8
011 B a04 4744 4755 a04 8543 B a04 4774 4787 a04 10104 B a05 636 643 a05 1117
8 B a06 1151 1159 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 a
08 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 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 46
4rsx.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 a17 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 "Lear0 THEN 3500 ELSE 4000 4530 RETURN illips Yes, th
is month the proofreader gets a go at writing an article, to give MID$(card$,
card,1) CHR$(226+suit)RETURN 3500 LOCATE col*3+2,row*2+2PAPER 0PEN
1PRINT CHR$(220)CHR$(222)RETUR N# 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 nfI"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 1037 a01 0 B readme 1066 1074 a02 0 B readme 1125 1133 a03 0 B re
adme 132 540 a11 9079 B a12 3810 3818 a12 10511 B a12 8454 8460 a12 11768 B a
13 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 a17 5
011 5018 a17 11594 B a21 4322 4328 ai6.log 0 B a21 4334 4344 64kbitsELr(w()C %
wK S C !2Lo"!LDM!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 overflowV9DMogog£og),+/g/o!#zIM!)8 08zIPBK)8 )zrW, 4PRgo7#+#7£++#7##7*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!nfnfnfR.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%!!utnfnf#!!!!mnfmnfm!!m!
nf!!mnfm!!mnfm!!mn fRmnfRmnfRmnfRm!nfB 0 %s!, *XU!nfn&nfn& nfn& nfn& ! nfn&!r!
NnfK!!!! "H$%s ! *P!78!*FE%s !A*R!78nfnf *Hnf *Hnf*R .nf *HnfKjnf *HnfKjnf *Hnf
Kjnf *HnfK6 jnf *HnfK6 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 *HKutnf *HKnf,!nf*cn&m!!!p3!nfz!nfnf6!!!nfnfY!nfnfcR!nfc!nfnfcKn
fRn&(!!nf!nfnf6nfut!nf!!f *HKnfK (!nf *HKnf(!0!nf!nfinf(!nfnf *HKK (!nf *HKnf(!n
f *HKnf(! !!!!2 "cI3%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!jnfnf Kjnfnf Kjnfnf Kjnfnf Kjnf n fj
nf nfjnf nfjnf nfjnf nfj !nfKutnfnfKjnfnfKjnfnfKjnfnfKjnfnfKjnf6!n fnf Kjnfnf Kj
nfnf Kjnfnf Kjnf !!+%s%c!!!!p3R!ut*Rnf*RutnfcLnfRn&(!ec!nfutnfnf(!nf6nfut!nf!nf
cnf(!8&!nfut!utnfutnfrnf(!nf6nfut%s !nf! N!*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)*£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)nfnf!!
*c6*c"c!!m!m!D!!P!!!R)%cLoom v3.2 b1!78R!*nfK 2!p3*c**c*£c*cj!!ut!p382%s %s!12*l
nf!p3nfutnf0utnf3!utH3!ut2%s!2*2YN!2Uut62nfN2!ut*cH32%s !2**"!c"*1*c!ut*cH3H32
22nfa2!p3R!p3nf22!nf4!!!C!!!14!!!P!!!y%cS. Phillips!)!!!p3!!)%s!)*!p3R!p3R!*c*!p
3F*%s!B**!p3+*c!!!!Inf1+nf"cnf"£cnf"c*c"c*c"cnf+*!*c**c6*c"c!c*c*c+*cnfnfnfnfj*c
*£c+!!p3*c*cRut++%s!+*b++%s %d!+*dnf!p3*c Nhospl8fq(pt,0c'd7s (J,6+4HaY2rHC( 5J
l ulD"""DDFD LdDgint long registerreturn short sizeo£ccF#Welcome to th
e Programmers' Patch disc PROGRAMMERS' PATCH By Stephen, Matthew and Hilary Ph
illips The Programmers' Patch disc features all the articles and programs fro
m the acclaimed WACCI series. The files on this disc are copyright Stephen, Ma
tthew 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 RIGHTS RE
SERVED. You canP,7yH%nD37Ps#9itmkCq*soJ'f NF/Ih2MSXr g,5u/"""DD LdDgint l
ong registerreturn short sizeocc+1 160 IF INKEY(21)-1 THEN addxaddx*4 17
0 addx3*addx 180 IF INKEY(2)-1 THEN addy-1 190 IF INKEY(0)-1 THEN addyaddy+1
200 IF INKEY(21)-1 THEN addyaddy*2 210 addy3*addy 220 xx+addxyy+addy 225 REM
Check x & y are on screen 230 IF x632 T14!!!P!!!14!!!! !!!2!+14143333!nfn&4nf4q
4%s %s!i4*Z*4RQ!4Uu&64Rn&4!4!44R4Q!4!!!5r!5Fut#5!78!utnf5O5!!!Onfnf!J!6 jnf!JK!
5nfO!nf"c!c!n&&5nf!nf"c!cn& nf*cRR!nfn&n&f6nfnfn&6!!r! !nfR"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 i
nitialise stack. No more space on stack. No more room for string on stack. Un
able to initialise list. Unable to add to list. No room for string in list. U
nable to initialise text buffer. Press any key to quit. Printer not ready. Fr
ee ENTER - follow link, B - go back, P - print, H - help, Q - quit You can
not go further back. You are outside the text area. Position There is no link
there. links here. Out of memory when loading linkbase. Loading Error in li
nkbase F command Kj*cK*cc8*c*c#VKj*c*cKj+8*c*cj*c"!!O! Onf ERROR EXIT %d EXIT
OK Please press any key&DDDD(D0DDDDDDDDDDOD"""DDFD LdDgint long registerr
eturn short sizeo£ccFY$& "7gvj3,*cS 6M(j,U!+ £viOWA26847takes one parameter.
B command takes five parameters. unknown command. Failed 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 list. Unable to a1)) 370
addx3*addx 380 addy(INKEY(2)-1) 390 addyaddy-(INKEY(0)-1) 400 addyaddy*((INK
EY(21)-1)+2) 410 addy3*addy 420 xx+addxyy+addy 425 REM Check x & y are on scr
een 430 xMIN(632,x) 440 xMAX(0,x) 450 yMIN(399,y) 460 yMAX(15,y) 465 N def
initions for the 464 and 664 (see article 21) A14T1table from article 14 with s
yntax of BASIC 1.1 commands AI1.BASlisting from article 16 AI2.BASlisting from
article 16 with vocabulary saving AI3.BASimproved version of AI from article 1
7 AI4.BASAI with a binary tree (see article 19) AI5.BASAI with a hash table (f
rom article 20) AI6.LOGAI in Logo - the version published in WACCI AI7.LOGAI i
n Logo - an improved version using property lists LISTEX.BASexample linked list
from article 9 - a card game Article 10 - programming a MIDI interface Artic
le 11 - the main MIDI messages, and an RSX to send them Turn the disc over
before following these links Article 12 - other MIDI messages, and a progra
m to play a tune Article 13 - how to adapt 6128 programs for the 464, with an R
SX 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 1
6 - AI an "artificial intelligence" conv#Programmers' Patch 1 - WACCI 109, Feb 1
997, p. 6-7 PROGRAMMERS' PATCH 1 By Matthew and Stephen Phillips T
his new series aims to offer a smorgasbord of programming delicacies, ju
ggling those hot potatoes of efficiency versus readability, of com
pactitude versus perambulatory execution, and ever searching for a use of t
he CREAL function, yet without wasting an opportunity of using our thesa
urus. Many of you will have followed Alan Tilling's Very Basic Basic ersation
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 sea
rching time Article 21 - AI in Logo Other files on both sides of the disc
DISC.BASruns the Loom hypertext viewer HELP.TXTthe help text for Loom LINKB
ASE.TXTthe linkage data for Loom LOOM.BINthe Loom program MESSAGES.TXTthe mess
age texts for L series, and we hope that you now feel ready for some
thing more adventurous. RUN"ARTICLE We are going to start by look
ing at a program written by Stephen in the days when Computing with the
Amstrad had a "ten-liners" slot for short BASIC programs. This wasn't on
e of them. Don't get scared off by the horrible listing, as all will so
on become as clear as jelly. If you feel like it, you could type in the p
rogram listing in Figure 1. It has been soom README.this file Other file
s on side A of the disc BSIDE.BASthe BSIDE program for copying side B BSIDE.
BINditto DISCMENU.BASthe program featured in articles 1,2,4 and 5 FIG161.subro
utine 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.B
ASthe listing from article 6 MENUEX2.BASlisting 1 fro read the articles by usin
g the Loom hypertext viewer, which will also print them out if you have a print
er. To do this, just RUN"DISC 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 wo
rdprocessor such as Protext. If this has been supplied on a 3.5" disc and yo
u do not have a side switch, RUN"BSIDE to copy the B side of the disc onto a di
sc in m article 7 MENUEX3 .BASlisting 2 from article 7 MENUEX4 .BASlisting 2 m
odified to use the SHIFT key MENUSUB .the menu subroutine featured in articles
6-8 MIDI1.BASlisting from article 10 a program to play a middle C PELMAN.BASth
e card game featured in article 9 SEND.ASMassembly listing for MIDI SEND RSX S
END.BASBASIC loader for MIDI SEND RSX (see article 11) Other files on side B
of the disc 464RSX.BASlisting 1 from article 15 which improves 464 RSX handli
ng 64KBITS.LOGLogoyour A drive. Links to articles on this side of the disc
Article 1 - introducing a disc menu Article 2 - line 40, testing key
s and moving the cursor Article 3 - getting BASIC and machine code to work t
ogether (part 1) Article 4 - part 2, and the machine code from the disc menu
Article 5 - final article 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 Naved on the disc as DISCMEN
U.BAS You might even find it useful, and it is only eight lines after
all. The program displays a catalogue of the disc, and allows you to choo
se a file to run by moving a pointer around with the cursor keys. Holdi
ng down SHIFT will make the pointer move faster. The file is selected b
y pressing COPY, SPACE or ENTER (known as RETURN to you 6128 users out the
re). You can change to a different user area by moving the pointer up to th
e wrun it. Otherwise we proceed to... 60 which asks for the new user numb
er, changes to it, and recatalogues the disc. The WHILE-WEND loop here e
nsures that the input is between 0 and 15. 70 is the WEND which wil
l send us back to line 30, ready to start again. 80 is a subroutine which
waits until none of the selection keys are being pressed, and then clear
s the keyboard buffer. GOTO 10 The first command in the program i
s there to speed things up slightlord "user" at the top of the display, and
pressing one of the three selection keys. As he has been working as a s
oftware engineer over the summer, Stephen wants to make it quite clear that
this is NOT meant to be an example of Good Programming Practice. Mustn'
t spoil the job prospects with one little example... The program
takes up less than 1K of disc space. This is important because the ide
a is that you would save it on every disc and use it as a disy. There
are three different types of variable strings, integers and reals. On the A
mstrad, integer variables are whole numbers from -32768 to 32767. Real vari
ables (also known as floating point variables) can be much bigger and don't
have to be whole numbers. Using a real variable when an integer will do mak
es extra work for BASIC and slows the program down. To specify explicitly t
hat a variable is a string we use the "$" character as in a$"Hello Mum!"
There arec menu system. To achieve this small size, many ingenious tec
hniques have been employed. Although they do make the listing rather dau
nting, one bonus is that the program runs much faster. LIST 10-80
Let's have a quick look through what each line does. 10 sets up some machi
ne code (shock, horror!) that we need later. 20 makes sure the screen is s
et up as normal, and catalogues the disc. 30 is where the fun starts. Th
e loop starting "WHILE 1" ends at the " equivalent characters for in
teger variables and reals. For example i%3 r!3.1415 T
he "!" character is rarely used in this context because variables without an
y type identifiers are real by default. "DEFINT a-z" changes the def
ault type to integer for all variables beginning with the letters a to z.
You can find out about its lesser known friends DEFREAL and DEFSTR in your
manual. As an example, how about DEFSTR t tigger"Philip DiRiWEND"
in line 70. There is no way out of this loop, and the program only st
ops when the user selects a file, which is run at the end of line 50.
The second WHILE loop ends at the WEND part way through line 50, and
waits until a file or "user" is selected. At the end of the lin
e the pointer, CHR$(215), is printed on the screen. 40 has a WH
ILE-WEND loop all to itself. It waits until SPACE, COPY or ENTER is
pressed, and in the meachleau" PRINT tigger We'll cover the re
st of line 10 in a later article. INITIAL THOUGHTS This disc menu prog
ram could be run at any time, so it must make sure that the computer, and in
particular the screen, is set up properly. This is all handled in line 2
0. We make use of three firmware calls, machine code routines which are bui
lt in to the computer. They are &BB4E TXT INITIALISE Among ot
her things, resets the pen and paper colours, and moves thntime moves the poi
nter about in response to the cursor keys. 50 after removing the c
ursor, reads twelve characters off the screen, using the machine code
entered in line 10. We now encounter the WEND, whose WHILE was halfway
through line 30. If we get past the WEND we know that we either want
to run a file, or change to a different user area on the disc. If the
ninth character is a full stop, we can assume that the string is a file
name, and Ncy xMAX(0,MIN(632,x+3*((INKEY(8)-1)-(INKEY(1)-1))*(4+3*(INKEY(2
1)-1)))) yMAX(15,MIN(399,y+3*((INKEY(2)-1)-(INKEY(0)-1))*((INKEY(21)-1)+2)))
MOVE b,cPRINT CHR$(215)MOVE x,yPRINT CHR$(215)WEND 50 GOSUB 80MOVE x,yPRIN
T CHR$(215)p(x160)*20+1q(400-y)16+1LOCATE p,q CALL a,f$WENDTAGOFFIF MID$(f$,
9,1)"." THEN MEMORY HIMEM+34CALL &BBBA MODE 1RUN f$ 60 u16WHILE u AND -16LO
CATE 1,vPRINT"User "+CHR$(20)LINE INPUT u$ uVAL(u$)WENDIF u$"" THEN USop. T
he colour that appears on the screen is a XOR b. So, if b is 0, then the
colour stays as a. If b is 1, then the colour changes from 0 to 1 or from 1
to 0. In either case, printing colour b on top again means that we en
d up with what we started with. This makes it easy for us to move our poin
ter about on the screen without worrying about what is underneath it.
The position of the pointer is held in the variables x and y, and these are
set up to place it near tER,uCLSCATvVPOS(#0) 70 WEND 80 WHILE INKEY(47)+INKEY
(18)+INKEY(9)-3WENDWHILE INKEY$""WENDRETURN Figure 1 ng9000,c% 130 PRINT
PRINT"The letter at the top left of the screen is a "CHR$(c%) 190 DATA DD,66,01
,DD,6E,00,CD,60,BB,77,23,36,00,C9 $$$ r))T Figure 2.71 she top of the scre
en. After cataloguing the disc, the VPOS function is used to put the Vert
ical POSition of the text cursor into variable v. As disc catalogues vary i
n length, we have to use VPOS to find out where the cursor has ended up. Va
riable v is used in the LOCATE command in line 60 to ensure that the "User
" prompt is always in the right place, just below the end of the disc catalo
gue. END OF FILE The program ends in line 50 when the selected file i
s RUN. Somee cursor to the top left of the screen. &BBBA GRA
INITIALISE Resets the graphics pen and paper, the size and orig
in of the graphics window, moves the graphics cursor to the bottom l
eft, and sets the graphics write mode to normal. &BC02 SCR RES
ET Sets the inks to their default values. These three routines
are a handy way of getting a lot of things set up with very few commands
. After selecting MODE 2, we print CH programs may assume that the sc
reen is already in MODE 1 as it is when you first switch on. Before runn
ing the program we reset the graphics write mode with another call to &BB
BA and change to MODE 1, as these are the only things we have altered.
FINAL SILLY HEADING As a challenge you may want to investigate line 40
as that's what we'll be looking at next time. Also, if anyone can explain w
hy Locomotive Software decided to include the CREAL function in Amstrad R$(2
3) and CHR$(1) to switch to XOR graphics mode. You see XOR mode in use a
ll the time, as it is used to display the BASIC text cursor. We use th
is same effect to display our pointer. If you switch on your Amstrad, a
nd type in the following few commands, you can see a further demonstration
MODE 2 PRINT CHR$(23)CHR$(1) MOVE 0,372DRAWR 200,0,1 A
horizontal line should appear, cutting through some of the text you ty
ped. Type the last line BASIC, we'd be interested to know! 10 DEFINT a
-zMEMORY HIMEM-34aUNT(HIMEM+1)FOR x0 TO 33READ a$ POKE a+x,VAL("&"+a$)NEXTDA
TA CD,78,BB,4C,DD,6E,0,DD,66,1,46,78,B7,C8,23, 5E,23,66,6B,CD,60,BB,77,23,C,
79,E5,CD,6F,BB,E1,10,F2,C9 20 CALL &BB4ECALL &BC02CALL &BBBAMODE 2PRINT CHR$(23
)+CHR$(1)x100y296 CATvVPOS(#0) 30 WHILE 1TAGf$SPACE$(12)WHILE MID$(f$,9,1)"
." AND MID$(f$,8,1)"" MOVE x,yPRINT CHR$(215)GOSUB 80 40 WHILE INKEY(47)+IN
KEY(18)+INKEY(9)-3bxagain, and the text will magically (or rather logicall
y) reappear. This is all due to the properties of XOR, as any logician
could tell you. a b a XOR b 0 0
0 1 0 1 0 1 1 1
1 0 Figure 1.6 Figure 1.6 shows the "truth table" fo
r eXclusive OR. Imagine that a is the colour of a pixel on the screen, and
that b is the colour we are going to print on t N graphics mode. This is
turned on in line 20 by printing CHR$(23) followed by CHR$(1). In XOR mo
de, when you print a character to the screen it can be removed by printing
it again at the same position, leaving what was underneath intact. Thus, i
n line 250 we remove the pointer from its old position, and in line 260 pr
int it at the new position. Line 40 uses b and c instead of oldx and oldy
to make it shorter. TRUTH OR DARE Let's see how we can alter that
subro2)-1)-(INKEY(0)-1))*((INKEY(21)-1)+2))) MOVE b,cPRINT CHR$(215)MOV
E x,yPRINT CHR$(215)WEND SWIMMING LESSON It's about time for an explan
ation of how some of the program works in detail, so let's dive in and t
ackle the longest line of all. Line 40 has some very horrible looking bi
ts, as it is doing a lot of things at once. To get an idea of just ho
w much is squashed in there, take a look at Figure 1.61. This lists a subro
utine that does exactly the utine to make it more like line 40. Figure 1.6
18 has exactly the same structure as Figure 1.61 but uses the same techni
ques as line 40. These lines are saved as FIG1618 on the disc. To
test the three selection keys, we can add the INKEY values together. If no
ne of the three keys is being pressed, the sum will be -3. We do not have t
o test that each of the INKEY values is -1 individually. Doing this gives u
s line 310 in Figure 1.618. How do we go about tran same as line 40, but
in a more conventional way. If you want to try it out, you could type i
t in and replace line 40 with "GOSUB 110". It is much slower. The disc
menu is saved as DISCMENU.BAS and you can add the lines in Figure 1.61 by t
yping MERGE"FIG161 Looking at the subroutine to start with, we test the k
eys by using the INKEY function. The number in brackets is a code for the
key we want to check. If the key is not pressed, then INKEY gives
the sforming lines 140-190 into 340-390 Time for a practical lesson in Tr
ue and False. Turn your computer on and type the following commands
PRINT 52 PRINT 33 PRINT 1266 In each case "-1" is printed
on the screen. Try these commands PRINT 25 PRINT 33 PRINT 1
266 This time "0" is printed all three times. The reason we get "-1" or
"0" printed is that the statements after the PRINT commands are logi
cal expressions. BASICvalue -1, otherwise, it returns a number greate
r than -1. Have a look in your manual to find out more. In line 110
we are checking that the SPACE, ENTER and COPY keys are not being pressed
. The position of the pointer is held in the variables x and y. Lines
140-190 check the cursor keys, and adjust two variables, xadd and yadd,
which are then added to x and y in line 200. Lines 170 and 210 multiply
addx and addy by 3 to make the pointer move at a reasona works out whether
a logical expression is true or false. If it is true, it evaluates to -
1, and if it is false, we get 0. The expression "52" is true so "-1" is pri
nted but the expression "1266" is false (because 12 is not larger than 66) a
nd so "0" is printed. We usually meet logical expressions as part of an IF
statement IF logical expr. THEN command for example IF ab
THEN PRINT"a is bigger!" BASIC works out the value of the logical exp
reble speed. We use INKEY(21) to test the SHIFT key, and if it is down the
values of xadd and yadd are multiplied to make the movement even faster.
The other important bit to mention is the printing of the pointer on the
screen. We are using character 215, which is a suitably pointy shape. To
allow the pointer to move smoothly across the screen, we are printing it a
t the graphics cursor position. This feature is turned on with "TAG" in li
ne 30. We are also using the XOR#Programmers' Patch 2 - WACCI 110, Mar 1997, p
. 14-15 PROGRAMMERS' PATCH 2 By Stephen and Matthew Phillips Well,
this month we move from the starter to a lightly grilled and carefu
lly stuffed portion of program, delicately seasoned with tarragon and chi
ves, and served with a generous helping of verbiage. 40 WHILE INKEY(47)+IN
KEY(18)+INKEY(9)-3bxcy xMAX(0,MIN(632,x+3*((INKEY(8)-1)-(INKEY(1)-1))*(4+
3*(INKEY(21)-1)))) yMAX(15,MIN(399,y+3*((INKEY( N 200 is formed in a sim
ilar way. MAX PACKS Lines 230-260 are transformed into 430-460 using
the MAXimum and MINimum functions. MAX is passed several numbers and r
eturns the largest, MIN returns the smallest. Look at line 440
440 xMAX(0,x) If x0 then MAX(0,x) will return x so we are effectively
saying "xx". However, if x0, MAX(0,x) will return 0 and we are saying "x
0", so the effect is exactly the same as the IF statement in line 240.
ORssion, and unless it is false (zero), the command following THEN is exec
uted. Try this IF -1 THEN PRINT"Minus one is true" The usefulness
of True and False having numerical values is that we can use the -1 and
0 in arithmetic expressions, for instance a(52) PRINT a*3 Yo
u should get -3 appearing. Five is bigger than two, so "52" is true, so a
is set to -1. Printing three times a gives -3. How does this help us wit
h line 40, then Well, line 3ANGE SQUASH Look at line 370. What is the valu
e of addx on the right hand side We have just defined it in line 360. Th
e right hand side of line 360 can be inserted into line 370 and line 360 re
moved 370 addx3*addx*(4+3*(INKEY(21)-1)) We can then remove line 3
50 and insert it into line 370 370 addx3*(addx-(INKEY(1)-1))*(4+3*(INKEY
(21)-1)) Similarly, line 340 can be removed 370 addx3*((INKEY(8)-1
)-(INKEY(1)-1))*(4+3*(INKEY(21)-1)) Exac40 is 340 addx(INKEY(8)-
1) It has exactly the same effect as line 140, but gets rid of the "IF".
If the left cursor key is pressed, then INKEY(8) will be greater than -1,
so "(INKEY(8)-1)" is true and addx is set to -1. If it is not pressed, addx
will be set to zero, as the logical expression "(INKEY(8)-1)" is false.
In lines 350 and 390 we subtract the INKEY return value from addx and
addy. If the key is being pressed INKEY returns -1 so subtracting it tly t
he same procedure can be followed to squash lines 370-400 into line 410.
Now that all those lines have been squashed into just two we don't need
addx and addy anymore. Lines 370, 410 and 420 can be combined into one
and line 330 deleted. Once lines 430 and 440 are combined into 440
xMAX(0,MIN(632,x)) and lines 450 and 460 into 460 yMAX(15,MIN(399
,y)) we just have to combine the key-checking and range-checking parts t
o get the expressions means we subtract -1 or, in other words, add 1.
Lines 160 and 200 are a bit more tricky to alter. Taking line 160 as an
example, if SHIFT is being pressed we want to multiply by 4, otherwise we w
ant to do nothing. An equivalent to doing nothing is multiplying by 1. If
we choose the logical expression "INKEY(21)-1" then we get 0 when the key
is down and -1 when it is up. Our target multipliers are 4 and 1 thoug
h so some manipulation is needed to map the pair 0,-1 to in line 40. PHEWW
!! We hope you can understand the complicated expressions in line 40 now
. They really are about as bad as things get! In the next article we w
ill probably take a good look at the machine code, and also examine a
few issues of compatibility. Then again, we might not. 100 REM A
n inefficient subroutine to replace line 40. 110 WHILE INKEY(47)-1 AND INKEY
(18)-1 AND INKEY(9)-1 120 oldxxoldyy 130 addx0addy0 135 REM Check k
4,1. If we multiply by 3 then we get from 0,-1 to 0,-3. The gap between
the pair is now the same as between 4 and 1 so all we have to do is add 4 a
nd we are there. SHIFT key position up down INKEY(22)
-1 -1 (INKEY(22)-1) -1 0 3*(INKEY(22)-
1) -3 0 4+3*(INKEY(22)-1) 1 4 Line 160 can ther
efore be changed to 360 addxaddx*(4+3*(INKEY(21)-1)) Line 400, whi
ch is equivalent to lineeys 140 IF INKEY(8)-1 THEN addx-1 150 IF INKEY(1
)-1 THEN addxaddx+1 160 IF INKEY(21)-1 THEN addxaddx*4 170 addx3*addx
180 IF INKEY(2)-1 THEN addy-1 190 IF INKEY(0)-1 THEN addyaddy+1 200 IF
INKEY(21)-1 THEN addyaddy*2 210 addy3*addy 220 xx+addxyy+addy 225 R
EM Check x & y are on screen 230 IF x632 THEN x632 240 IF x0 THEN x0
250 IF y399 THEN y399 260 IF y15 THEN y15 265 REM Remove pointer and re
display 270 MOVE oldx,oldy N #Programmers' Patch 3 - WACCI 112, Ma
y 1997, p. 10-12 PROGRAMMERS' PATCH 3 By Matthew and Stephen Phillips
Since this article was written in Lent, we are offering more frugal fare
in the form of a meagre ration of machine code and an unusually short
introduction. The headings are from articles in this month's guest
publication, RISC User magazine. RADIAL PALETTES Although there have
been many articles about BASIC over the years, and a few about machinw man
y parameters there are. If we did the following CALL &9000,6,4,
&CDEF then when the machine code started, the A register would be equal to
3, to tell us the number of parameters passed, and IX would point to a li
st of the parameters. There are two bytes for each parameter, and the last
one in the CALL command comes first in the list! In this example it wo
uld look like this (IX+0) EF (IX+1) CD (IX+2)
04 (IX+3) 00 e code, there have been hardly any about how to use
the two together. The advantage of BASIC is that it is easy to write a
nd debug, and there is no need to worry about how and where your variable
s are stored. Machine code wins on speed and better use of memory. There
are also many things that cannot be done with BASIC alone. BASIC and
machine code together can be a very powerful combination. If the speed-cri
tical parts of a program are converted into machine code (IX+4) 06 (IX
+5) 00 Have a look at the machine code in Figure 2. The number x
will be stored at (IX+0), as it is the last parameter in the list. If
it were bigger than 255 then part of the number would be at (IX+1) as well,
but we have ignored this case. The number is loaded into the B register
, and then a loop is executed to print the "" characters. CHANGING THE
LIGHT Suppose we want to return a value to BASIC from the machine code Ag
ain, and the rest left as BASIC, you can end up with almost as good a re
sult as if the whole lot were written in machine code, but with much less ha
ssle. This month we will take a quick look at the essentials of how to
get BASIC and machine code to work together, then next time we will see
how this applies to our disc menu. TURNING THE WORLD GREY Some pie
ces of machine code stand happily on their own, such as using CALL &BB4E to
reset parts of the screen. Often PRINT CHR$(215) 280 MOVE x,yPRINT CHR
$(215) 290 WENDRETURN FIGURE 1.61 300 REM A better subroutin
e to replace line 40. 310 WHILE INKEY(47)+INKEY(18)+INKEY(9)-3 320 oldxx
oldyy 330 addx0addy0 335 REM Check keys 340 addx(INKEY(8)-1) 350
addxaddx-(INKEY(1)-1) 360 addxaddx*(4+3*(INKEY(21)-1)) 370 addx3*addx
380 addy(INKEY(2)-1) 390 addyaddy-(INKEY(0)-1) 400 addyaddy*((INKEY(2
1)-1)+2) 410 addy3*addy 420 xx+addxythough we need BASIC and machi
ne code to communicate. For example you might want a BASIC variable to aff
ect what the machine code does. The obvious way to do this would be to POKE
the value of the variable into a memory location, and then the machine
code could read that location and act on the information. Figure 2 gives a
better method. The BASIC program pokes in the machine code in line 190.
After the BASIC we list the machine code in assembly language, so thay+ad
dy 425 REM Check x & y are on screen 430 xMIN(632,x) 440 xMAX(0,x)
450 yMIN(399,y) 460 yMAX(15,y) 465 REM Remove pointer and redisplay
470 MOVE oldx,oldyPRINT CHR$(215) 480 MOVE x,yPRINT CHR$(215) 490 WEN
DRETURN FIGURE 1.618 By Stephen and Matthew Phillips Well, this mo
nth we move from the starter to a lightlyt you can see what it does. T
he BASIC is saved as FIG2 on the disc. The program asks for a number
from the user, x, and then prints that many "" characters. When the mach
ine code is called, using CALL &9000, the value of x is simply tagged on
the end after a comma. Before passing control to the machine code, BASIC a
rranges these parameters into a block in memory, and loads the IX register
with the address of this block. The A register is set up to indicate ho Nc
an alter the value of c%. Try the following commands in BASIC
c%5 PRINT c% PRINT PEEK(c%) As c% is the address a
t which c% is stored, PEEK(c%) is the value of c%. Now try POK
E c%,7 PRINT c% and as if by magic, c% has changed! The pr
ogram in figure 2.7 uses this technique. The variable's address is loaded
into HL, and then the firmware call to read a character from the screen is
used. The value retuwe had done c%2000CALL &9000,c% then we
would get back some very funny results if we didn't zero that second b
yte. The reason we keep using integer variables is that variables without
the percentage sign (real variables), are stored in a more complicated w
ay using five bytes rather than two, so it makes it much easier just to stic
k to integers. FEATURES MUCH MISSED Integer variables themselves a
re not really quite as simple as we just madrned in A is then saved
in the BASIC variable before going back to BASIC. Note that the varia
ble whose address we pass must already exist. That is why line 120 sets c
% to zero before calling the machine code. A DOODLE TRANSFORMED Actual
ly, that isn't quite the whole story, as after saving A in the address
pointed to by HL, the machine code goes on to put zero in the next byte of
memory. This is because of the way integer variables are stored. The basi
c une out, as instead of using the two bytes to store numbers from 0 to
65535, they store numbers from -32768 to 32767. You will very rarely need
to know exactly how they are stored. If you are passing a value to machin
e code, BASIC looks after the storing of the value in the buffer. When ret
urning a value from machine code to BASIC, ifit is a single byte value hel
d in an 8-bit register we just use the same technique as Figure 2.7. If the
value was held in a 16-bit registeit of storage is a byte, which can hold a
number from 0 to 255. If we want to store bigger numbers we need more
bytes. A good analogy is to look at the familiar decimal numbers. A si
ngle digit can express the numbers 0-9, ten different numbers in all. To e
xpress bigger numbers we use another digit, giving us ten times as many nu
mbers again the hundred different numbers from 0 to 99. We write the "te
ns" before the "units". The "tens" are termed "more signifr pair su
ch as DE or HL, then usually we will get the right results just by plo
nking it straight back into the two bytes of the integer variable. For exa
mple, the firmware call &BBC6 sets DE and HL to the x and y position o
f the graphics cursor, either of which could be negative. To return the
x co-ordinate to a BASIC integer variable, we would simply put the contents
of the E register into the first byte, and the contents of D into the seco
nd. The negative nicant" than the units because they help us to express bi
gger numbers. In the same way using two bytes enables us to store 65536
( 256*256) numbers from 0 to 65535. The more significant byte, which al
lows us to store numbers bigger than 255, is placed after the first byte i
n memory, unlike the way we write decimal numbers, where the more significan
t digits come first. Amstrads put the most significant byte after the
least significant byte because that is how th the obvious way would be
to store the value in a particular memory location which could then be
PEEKed by BASIC. Figure 2.7 gives a more flexible method. The listin
g is saved as FIG27. The machine code is called with CALL &9000,c%.
c% is an integer variable. The "" in front means that instead of pass
ing the value of c%, we are passing the address in memory at which it is s
tored. The idea is that if we alter the contents of this address, we e Z
80 processor controlling our computers prefers it. This method is called
"Little Endian" arrangement, to be contrasted with "Big Endian", as used b
y the Apple Macintosh, among others, and not to be confused with anything
to do with boiled eggs. For numbers smaller than 256, the second byte will
always be zero, so as we are returning a value between 0 and 255, we need t
o set the second byte to zero just to make sure we overwrite any previous
value. For example, if N byte is the length of the string, and the next
two bytes give the address at which the actual characters in the strin
g can be found. When passing the address of a string variable to mac
hine code, we must make sure that the variable already exists, and that it
is long enough to hold what we want the machine code to store in it. Line 1
20 takes care of this by setting a$ to be a space. The machine code fi
rst loads the address of the string descriptor block into 130 PRINTPRINT"Th
e letter at the top left of the screen is a "CHR$(c%) 190 DATA DD,66,01,DD,6
E,00,CD,60,BB,77,23,36,00,C9 DD 66 01 LD H,(IX+1) DD 6E 00 L
D L,(IX+0) CD 60 BB CALL 0BB60h 77 LD (HL),A 23
INC HL 36 00 LD (HL),0 C9 RET Figure 2.7
100 MEMORY &8FFFa&9000FOR x0 TO 14READ a$POKE a+x,VAL("&"+a$)NEXT
110 MODE 2PRINT"Silly string" 120 a$" "LOCATE 1,1CALL &9000,a$ 130 PRIN
Tumbers will look after themselves. SMALL BUT INDISPENSABLE String var
iables are stored in a very different way from integers. If you have a stri
ng variable a$, then a$ gives us the address of the string descriptor bl
ock for a$. The string descriptor block is three bytes long, and the first
byte is the length of a$. Try it out a$"Hello" PRINT PEEK
(a$) The next two bytes give us the address at which the actual characte
rs in the string are storPRINT"The letter at the top left of the screen is "
a$ 190 DATA DD,66,01,DD,6E,00,23,5E,23,56,CD,60,BB,12,C9 DD 66 01
LD H,(IX+1) DD 6E 00 LD L,(IX+0) 23 INC HL 5E
LD E,(HL) 23 INC HL 56 LD D,(HL) CD 60 B
B CALL 0BB60h 12 LD (DE),A C9 RET Figur
e 2.71 reed. The following commands put this address into the variable a
ddr, and then print out the characters in the string lengthPEEK(a$)
addrPEEK(a$+1)+256*PEEK(a$+2) FOR z0 TO length-1PRINT CHR$(P
EEK(addr+z))NEXT It is basically a very slow way of doing PRINT a$.
Figure 2.71 saved as FIG271 on the disc puts this knowledge into practic
e with another little example to read a character off the screen. There
is quite a bit more to s#Programmers' Patch 4 - WACCI 113, June 1997, p. 11-
12 PROGRAMMERS' PATCH 4 by Matthew & Stephen Phillips We find fine
ly grated Parmesan cheese sprinkled generously over a good plateful of s
paghetti produces a plain, nutritious, but stringy meal. A popular altern
ative from the Orient is egg noodles, but we would recommend the following a
rticle, which is equally stringy and requires plenty of black pepper.
STRINGING ALONG Last month we finished off with an etring handling tha
n you might think. After you have run the above program, list it again, and
have a close look at line 120. An interesting effect, isn't it Next m
onth we will run over the main points of how to handle BASIC strings i
n machine code, and go over the machine code for our disc menu. In the mea
ntime, have fun playing around with some of the examples, and see what el
se you can come up with. 100 MEMORY &8FFFa&9000FOR x0 TO 10READ a$POKE
a+x,xample of changing a BASIC string from machine code. Here it is agai
n in Figure 2.71. The program reads a character from the screen and p
uts it into the string of our choice. The BASIC version is saved as FIG2
71 on the disc. Just to recap, unlike with numeric variables, where a% giv
es the actual address where the number held in a% is stored, for a string, a
$ gives the address of the string descriptor block for a$. This block is t
hree bytes long. The firstVAL("&"+a$)NEXT 110 PRINT"Enter number (1 to
255)"INPUT x 120 CALL &9000,xPRINT 130 GOTO 110 190 DATA DD,46,00,3E
,40,CD,5A,BB,10,FB,C9 DD 46 00 LD B,(IX+0) 3E 40
LD A,"" CD 5A BB loop CALL 0BB5Ah 10 FB
DJNZ loop C9 RET Figure 2 100 MEMORY
&8FFFa&9000FOR x0 TO 13READ a$POKE a+x,VAL("&"+a$)NEXT 110 MODE 2PRINT"Bunn
ymen" 120 c%0LOCATE 1,1CALL &9000,c% N properly. It is bette
r to stick to altering the contents of the string alone. POP IT ON
A STRING At long last we will have a good look at the machine code from t
he disc menu program in the February article. The assembly listing is gi
ven in Figure 2.718, followed by a BASIC program to poke it into memor
y and demonstrate its use. This is saved as FIG2718 on the disc. Line
20 shows how the machine code can be called. The job of the machine
code way, and if your program defines a string by saying a$" ", it sets up
the string descriptor block so that the address pointing to the characters
just points back to the line in BASIC where you defined the string! Th
e address is changed to point to somewhere in the string area as soon
as you alter the string with a command like a$a$+"extra", or similar cons
tructions. Before this happens though, any machine code altering the conten
ts of a$ would also change the Bis to read characters from the screen,
starting at the current cursor position. The results are placed in the st
ring passed from BASIC. The machine code looks to see how long this stri
ng is, and then reads this many characters from the screen and places them i
n the string. There are plenty of comments in the listing to make it easie
r to follow, but the three firmware calls need more explanation &BB78
TXT GET CURSOR Returns the current text cursor positASIC program
line as a side effect. This does not really matter in our little example.
All we wanted to do was to make sure that a$ was one character long, and
a$"S" does just as well as a$" ". Often though, it could produce undesir
able consequences (bugs). The machine code cannot tell whether the characte
rs of the string are part of the BASIC program or stored in the string area
. What we need is a way of forcing BASIC to store the string in the strin
g area, rather ion. The x-coordinate is returned in H, and regis
ter L holds the y-coordinate. All other registers apart from AF a
re preserved. &BB60 TXT RD CHAR Looks at the current cursor
position to see if a character is present and identifiable. The
pen and paper that the character was printed in have to be the same a
s the current paper and pen for it to be recognized. If there is
a character there, Carry is true, and than pointing back to the BAS
IC program. If you just want to define a string of a certain lengt
h, say ten letters, just use 10 a$SPACE$(10) If you wanted it
to contain particular characters, then 10 a$""+"This string" does
the trick quite nicely. BASIC doesn't spot that the final value of a$ is
contained in that line, and just shoves the result off into the string
area without further ado. HOW LONG IS A PIECE OF STRING Machine codHL,
then the address of the string itself is loaded into DE. The character
returned in register A by the firmware call is then put into the start of t
he string. It would have been more responsible to check that the string
was the right length before altering it, but that would make for a rather
complicated example. When you run the program, as well as changing a$
to "S" and printing this on screen in line 130, if you list it again afte
rwards you will see that e can look at the first byte in the string descrip
tor block to find out the length of the string. You are not supposed to
alter this byte, which means that you cannot change the length of
any string parameter passed to machine code. On the 464 it is possible
to make a string shorter by simply poking a smaller value into the first
byte of the string descriptor, but if you try this trick with other version
s of the CPC you will find that the memory is not reused line 120 has change
d and now says a$"S" at the start. This is probably not quite what you wo
uld expect. All that the machine code did was place a byte into the memor
y address pointed to by DE, and the DE register has been loaded with the ad
dress of the first character in the string. Normally this address woul
d point to somewhere in the "string area", the memory just below HIMEM where
the characters in the strings are kept. But BASIC can be quite economical
in its own N A will hold the character number. Otherwise Carry is false and
A is zero. All the other registers are preserved. &BB6F TXT S
ET COLUMN Sets just x-coordinate of the text cursor to a new positi
on, held in A. Registers AF and HL are corrupted, and all others pre
served. NO STRINGS ATTACHED Well, two articles to explain just 34 byte
s of machine code must be a bit of a record. Although it is quite simp
le code, it demonstrates some useful tech (DE),A C9 RET
Figure 2.71 initialisation - find cursor location and find address
and length of string CD 78 BB CALL 0BB78h get current cursor positi
on into HL 4C LD C,H put x-coordinate into the C register
DD 6E 00 LD L,(IX+0) load HL with string descriptor block address
DD 66 01 LD H,(IX+1) 46 LD B,(HL) load B with the length of
the string 78 LD A,B B7 OR A check ifniques.
A lot of people who start learning machine code do not really end up makin
g much use of it, as it is so much easier to program in BASIC. Learning how
to get BASIC and machine code working together means you can have the best
of both worlds BASIC which is quick to write and easy to debug, and mach
ine code for extra speed where you need it most. Some of you may be wonder
ing why there was any machine code at all. It would have been much easier
to use the COPYCHR$ f the length is zero C8 RET Z if s
o, exit... 23 INC HL point HL at the low byte of the strin
g address 5E LD E,(HL) load it into E 23 INC HL
move on to the high byte of the string address 66 LD H,(HL)
load it into H 6B LD L,E copy low byte to L (so HL
holds string address) main loop - transfers B characters from screen into
string at HL CD 60 BB loop CALL 0BB60h unction. The whole of our ex
ample program could be rewritten like this 20 MODE 2CATvVPOS(#0)f$""LOCATE
1,4FOR x1 TO 12f$f$+COPYCHR$(#0) NEXTLOCATE 1,v 30 PRINT"The first file
on this disc is "f$ The reason is that the disc menu was written on
a CPC 464, which does not have the COPYCHR$ function, so we had to use some
machine code. Even if you have a 664, 6128 or a Plus machine, it is w
orth knowing how to avoid using the COPYCHR$ function so that get character
from screen 77 LD (HL),A put it into string storage space
23 INC HL move on to next character in string 0C I
NC C C holds cursor x-coordinate - increase it 79 LD A,C
E5 PUSH HL save HL to the stack (next routine corrupts HL)
CD 6F BB CALL 0BB6Fh set text cursor x-coordinate to value in A E
1 POP HL restore HL from the stack 10 F2 DJNZ loop
decreayou can write programs that work on all of the CPCs. Of course t
he machine code runs faster than the BASIC alternative as well. WRAPPI
NG UP Next month we will be returning to BASIC for a last look at a few mor
e of the tricks used in February's disc menu program. After that, who kno
ws Perhaps we could have a go at another language such as C, if there i
s enough interest, or even see how to control a MIDI interface. Then again,
there is a lot more BASIC for us to ese B, and if not zero jump back to loo
p C9 RET return whence we came (to BASIC) 10 DEFINT
a-zMEMORY HIMEM-34aUNT(HIMEM+1)FOR x0 TO 33READ a$POKE a+x,VA L("&"+a$)NEX
TDATA CD,78,BB,4C,DD,6E,0,DD,66,1,46,78,B7,C8,23,5E,23,66,6B, CD,60,BB,77,2
3,C,79,E5,CD,6F,BB,E1,10,F2,C9 20 MODE 2CATvVPOS(#0)f$SPACE$(12)LOCATE 1,4CALL
a,f$LOCATE 1,v 30 PRINT"The first file on this disc is "f$ Figure 2.718
ly grated Parmesan cheese sprinkled generously oxplore. 100 MEMO
RY &8FFFa&9000FOR x0 TO 14READ a$POKE a+x,VAL("&"+a$)NEXT 110 MODE 2PRINT"Si
lly string" 120 a$" "LOCATE 1,1CALL &9000,a$ 130 PRINTPRINT"The letter a
t the top left of the screen is "a$ 190 DATA DD,66,01,DD,6E,00,23,5E,23,56,C
D,60,BB,12,C9 DD 66 01 LD H,(IX+1) DD 6E 00 LD L,(IX+0)
23 INC HL 5E LD E,(HL) 23 INC HL 56
LD D,(HL) CD 60 BB CALL 0BB60h 12 LD N16 gr
aphics coordinates per text coordinate, all we need to do is integer divis
ion by 16. It is not quite that simple however, because the graphics co
ordinates start counting from the bottom of the screen (as if you were
drawing a graph) and the text coordinates start from the top (as if you
were writing). To solve this problem we just subtract y from 400. This
gives a large value when y is small (at the bottom of the screen) and a
small value at the top piece of machine code to do this job, but first
the text cursor need to be LOCATEd to the position on screen where we want
to start reading. We have used the following expressions to calculate t
he text coordinates needed p(x160)*20+1 q(400-y)16
+1 where x and y are the graphics coordinated of our pointer, and p and q
are the text coordinates we need. Before writing expressions such as t
hese, it pays to work out exactly what you want to do. Put a disc in the
drive, switch to MODE 2 and catalogue it. You will find that four columns
of filenames are printed on screen. The text cursor needs to be positioned
at the start of whichever of the four columns the pointer is in. Si
nce the screen is 640 graphics coordinates across, each of the four col
umns displayed is 160 coordinates wide. Our expression in line 50 uses the
integer division operator, "". This operator has the same effect as using
norma#Programmers' Patch 5 - WACCI 114, July 1997, p. 26-27 PROGRAMMERS' PAT
CH 5 By Stephen and Matthew Phillips What gastronomic delights await u
s for the final course As the sweet trolley of programming wheels its
way through the obstacles of integer division and two's complement binary
, we find ourselves thinking "Shall I have the strawberries", and "Who's
paying the bill". (Coffee to be served in the lounge.) All that re
mains in order to round off the dl division and throwing away the part after t
he decimal point. Dividing the x coordinate by 160 in this way results in a
number from 0 to 3, corresponding to the four columns of text. The follow
ing table shows what we need to achieve Graphics Column Text
x-coordinates x-coordinate 0-159 0 1 1
60-319 1 21 320-479 2 41 480-639 3
61 If we then multiply the column number by 20, thisc cataloguing
program is to explain some of lines 50 and 60. Since it was February
that we first looked at the program, we've asked John to print the list
ing again in Figure 1. And you can load it from the disc as DISCMENU.BAS
Line 50 is reached when the WHILE condition in line 40 is false, i.e. when
one of the three selection keys is pressed. The first thing line 50 does
is call the subroutine in line 80 which waits until the user has released
the selectioat will give us 0, 20, 40, 60, which is the correct separation
for the text cursor. We just need to add 1 to get the right text coordinat
e. Try it out in stages with a few example x values if you like, so that
you can see how it works. The expression for q is simpler in one way - all
we want to do is set q to be the text line that the graphics cursor is on
. There are 400 graphics coordinates vertically, and 25 text coordinates.
You might think that since there are n key and then clears the input bu
ffer. Then line 50 removes the pointer from the screen before trying to wor
k out what the user wanted to select. When a selection key is pressed,
there are three possible cases 1. The pointer is over a filename. 2.
The pointer is over the "user 0" statement. 3. The pointer is over neither
of the above. To find out which case we have, we need to read some chara
cters from the screen. As explained in the previous article, we have a Ne
20). The line used to look a lot simpler but Matthew came up with an ingen
ious way of making it less than readable. If for the moment we imagine
it says "WHILE u0 OR u15" rather than "WHILE u AND -16" then it will be
easier to explain. Initially u is set to be 16 (an invalid user num
ber) so that the code in the WHILE-WEND loop is executed at least once. The
cursor is LOCATEd just under the disc catalogue (using v) and the "Use
r" prompt is printed. Th See a later article for more details. To wor
k out "u AND -16", we write down the value of u in binary, with -16 written
out beneath, and AND each bit of u in turn with the corresponding bit belo
w. When you AND two bits then you only get a one as the result if both the
bits were one. For example, if u is 87 we get u 0000000001010111
-16 1111111111110000 ---------------- u AND -16
0000000001010000 It is quite easy to see that u ANere are two things to n
otice about the PRINT statement, firstly that we print CHR$(20) too. Chara
cter 20 is a control character which clears the whole of the screen from th
e cursor onwards. This ensures that there is no mess anywhere. Secondly,
there is a semicolon at the end. This means that the cursor remains on th
at line for the input rather than beginning again at the start of the next
line. The next statement is "LINE INPUT u$". Input into a string was ch
osen so D -16 will only be zero when the binary form of u has zeros where
-16 has ones. Where -16 has zeros, u can be anything we like, and it so
happens that the numbers with zeros in the top twelve bits and zeros and on
es in the bottom four bits are the numbers 0 to 15, the valid user numbers
! COMPLIMENTARY MINTS The Amstrad uses the common two's complement
method to store integer variables. It is called two's complement to
distinguish it from one's complement that no errors occur if something ot
her than a digit is typed. Using LINE INPUT means that even commas can
be typed and it will not complain (ordinary INPUT will give an error i
f a comma is used when it doesn't expect it). While most users will do
what we expect, good programs cope with the unexpected too. To find o
ut what number was typed, we set u to be the numeric VALue of u$ and the WE
ND then loops back if u is not a valid user number. If the user does of the
screen - the same as the text cursor. We can then do integer division by
16 and add 1 to finish off. After p and q have been calculated, the t
ext cursor is LOCATEd at p,q and the machine code called to put the next
12 characters into f$. We then hit a WEND. The WEND refers back to the sec
ond WHILE condition in line 30 that says to keep looping until either the 9
th character of f$ is a full- stop (on a filename), or the 8th character i
s a colon (at the "Driven't type anything and just presses the Enter/Return key
then u will be set to 0 - a valid user number - and u$ will be empty. I
n this case we assume that the user did not really want to change the user
number. As a programmer it is wise to realise that users do not alway
s select the options they intend to, and we can anticipate this by provid
ing an easy way out in such situations. That is why the rest of the l
ine is not executed if u$ is empty. WHILE AWAY A user 0" positio
n). If we fall through the WEND and the 9th character is a full-stop then
the program with filename f$ is run (as discussed in the first article). O
therwise we need to ask the user which user number to change to. US
EFUL USER UTILITY Line 60 loops until a valid user number is entered, chang
es the user area to that number, clears the screen, recatalogues the disc
and resets v to be the y-coordinate of the text cursor (v is initially se
t in linTHE TIME So why does "WHILE u AND -16" mean the same as "WHILE u0
OR u15" It may make more sense when you know that -16 in binary is 111111
1111110000. The WHILE loop will keep going until the condition is false, whi
ch in this case happens only when "u AND -16" is zero. We have since dis
covered that this condition does not work properly on the CPC 464, as ther
e is a bug in BASIC 1.0. If you type in a value of u that is a multiple of
256, it will let it through... Nwhich is never used anyway! The basic
idea is that negative numbers are stored as large positive numbers. The lar
gest number that can be stored in 16 bits is 65535, also known as FFFF
in hexadecimal, and 1111111111111111 in binary. When we use two's complemen
t, we pretend that it means minus 1 instead. Similarly we let 65534 stan
d for -2. 65525, ten less than 65535, stands for -11, which is ten less th
an -1, and so on until we meet up somewhere in the middle - Next month
we shall begin dissecting another small program, till then perhaps you co
uld think of a good reason why there isn't a key numbered 78 Have fu
n! 10 DEFINT a-zMEMORY HIMEM-34aUNT(HIMEM+1)FOR x0 TO 33READ a$POKE a+x,VAL
("&"+a$)NEXTDATA CD,78,BB,4C,DD,6E,0,DD,66,1,46,78,B7,C8,23,5E,23,66,6B,CD
,60,BB,77,23,C,79,E5,CD,6F,BB,E1,10,F2,C9 20 CALL &BB4ECALL &BC02CALL &BBBA
MODE 2PRINT CHR$(23)+CHR$(1)x100y296C ATvVPOS(#0) 30 WHILE 1TAGf$SPACE$(327
68 1000000000000000 +32767 0111111111111111 As you see, the largest
positive number allowed in two's complement is 32767, and it has the top
bit zero in binary. The most negative number is -32768, which has the top
bit set. In fact, all the negative numbers have one in the top bit, and all
the positive numbers have the top bit clear. A good analogy for two's
complement arithmetic is the clock face. Sometimes we count from 1100
to 1159, and have up to12)WHILE MID$(f$,9,1)"." AND MID$(f$,8,1)""MOVE
x,yPRINT CHR$(215)GOSUB 80 40 WHILE INKEY(47)+INKEY(18)+INKEY(9)-3bxcyxMAX(0,MI
N(632,x+3*((INKEY(8) -1)-(INKEY(1)-1))*(4+3*(INKEY(21)-1))))yMAX(15,MIN(399,
y+3*((INKEY(2)- 1)-(INKEY(0)-1))*((INKEY(21)-1)+2)))MOVE b,cPRINT CHR$(215)M
OVE x,yPR INT CHR$(215)WEND 50 GOSUB 80MOVE x,yPRINT CHR$(215)p(x160)*20+1q
(400-y)16+1LOCATE p,q CALL a,f$WENDTAGOFFIF MID$(f$,9,1)"." THEN MEMORY HIME
M+34CALL & 59 minutes from eleven o'clock. Or we can look at it another
way and after half past eleven we start saying 29 minutes to twelve. 59
minutes past eleven then becomes 1 minute to twelve or if you prefer,
twelve o'clock minus 1 minute. Most of the time you do not need to
know anything about how the computer stores numbers, but occasionally it is
useful. If you want to find out what -23 is in binary, the easiest thi
ng to do is type PRINT BIN$(-23), butBBBAM ODE 1RUN f$ 60 u16WHILE u A
ND -16LOCATE 1,vPRINT"User "+CHR$(20)LINE INPUT u$uVAL( u$)WENDIF u$"" THEN
USER,uCLSCATvVPOS(#0) 70 WEND 80 WHILE INKEY(47)+INKEY(18)+INKEY(9)-3WENDWHILE
INKEY$""WENDRETURN Figure 1 $$$PATCH 5 By Stephen and Matthew Ph
illips What gastronomic delights await us for the final course ffffff
ffff if you really want to know, this is how to do it by hand 1. Write dow
n the positive number in binary. 2. Take the complement (change each 1 to 0
and each 0 to 1). 3. Add on one. For example with -23 23 in bina
ry 0000000000010111 Complement 1111111111101000 Add on one 111111
1111101001 so -23 is 1111111111101001. If you are feeling really ke
en on maths homework, you could try adding together 23 and -23 in binary,
just to check that you get nought. You will actually get 1 with sixtee
n zeros after it, but as we can only store sixteen bits in our integer vari
ables, it's as good as nought really. COFFEE TIME We hope that there i
sn't anything more to say about that program. It must be quite a record tak
ing six months to explain such a short piece of BASIC. With a bit of
luck you now have a useful utility and a better understanding of some o
f the more advanced tricks one can get up to in BASIC. Nment by sett
ing it to zero. We will do some examples of what it is useful for later.
SIZING IT UP On line 20 mcol determines the colour of the menu bar.
If you have a background of PAPER 0, then mcol should be set to the PEN c
olour you want for the menu bar. As the menu bar is printed up using XOR
graphics, if you have a different background things are more complicated.
If x is the background pen, and y the pen you want for the menu bar, then
mcol should beasis of several example programs over the next few artic
les. This is saved on the disc as MENUSUB In fact the subroutines will
squash down into just two lines. Lines 1000 to 1009 can all be typed in
together as line 1000, and the rest of the lines can all be typed in as l
ine 1010. Although it would have been more impressive to show off with a t
wo-line menu system, we have listed it in eighteen lines to make it easier
to follow. Once you have saved the sub set to x XOR y
The rest of the variables on line 20 are to do with where the menu is on
screen and how big the menu bar should be. For example we could print the
menu more spaced out by altering line 50 50 FOR x1 TO mchPRINTPRINT" Item
"xNEXT Run the program again. Although the menu text is spread out, the m
enu bar is still in the same position as before. To correct this you could
alter line 20 as follows 20 mcol1msp32mx24my399-3*16+8routines, you
can then type in the earlier lines in the listing and run it to see the f
irst example. This is saved as MENUEX1.BAS HOW DOES IT WORK THEN
Don't worry about how the subroutines work to start with. It is quite e
asy to use them in programs without knowing how they do the work. In fa
ct that is one of the good things about subroutines. Once you have one tha
t works and does the job you want doing, you shouldn't need to be both
ered with ho#Programmers' Patch 6 - WACCI 115, Aug/Sept 1997, p. 26-27 PROGR
AMMERS' PATCH 6 By Stephen and Matthew Phillips "What's on the menu fo
r this month", we hear you cry. Well, if you had known what the article
was going to be on, you would be ashamed at phrasing the question lik
e that, as it is such a predictable pun, and not really up to the standard
of humour we can expect from WACCI. But since you didn't know, we'll pret
end to find it amusing and then get on withw it works any more. Instead, l
et us have a look at how the main program (lines 10 to 90) works in relation
to the subroutines. Our example prints up a short menu, allows the u
ser to move the menu bar up and down with the cursor keys, and then choose a
menu item with the COPY key. The program then prints up a message tellin
g the user which item was selected. Lines 10 to 30 set up some variabl
es which tell the menu subroutine important information about the si the
article, which strangely is all about menus... A BREATH OF FRESH AIR
To make a change from working our way through a single program, we thought
we would present a useful subroutine that you can incorporate in your own
programs. The easiest way to learn programming is to alter programs writt
en by other people. When you get more experienced in a computer language
, you then find that the easiest way to write a program is to alter one that
you have written beforze and position of the menu (see Table 2).
One of these variables, mp, is also used by the subroutine to pass
information back to the main program. In line 10 mp is set to zero, which
makes the menu bar start off on the first item on the menu. Change it to 1
, 2 or 3 and it will start off on one of the other menu items. After the pr
ogram has returned from the GOSUB 1000 in line 70, mp tells us where the men
u bar has ended up. Ignore the mf variable for the moe. Programmers tend
to build up libraries of routines for performing useful tasks which they
can just slot in to any new program being written. AFTER THE LECTU
RE Lines 1000 to 1017 of Listing 1 form a subroutine for producing menus wit
h a scrolling bar that the user moves up and down to select the menu item
required. Type in lines 1000 to 1017 on their own and save it in a file.
They will not actually do anything on their own, but we will be using them
as the b Nare set up, the routines are really easy to use. If you wa
nted to have several different menus in one program, you could do it just by
altering a few of the variables for each case, and then use the same lin
es 1000 to 1017 to provide the basic menu system. TELL ME MORE Well, u
nfortunately, we have run out of space, so you will have to wait until th
e next thrilling instalment, when we will explain all about kf, and demon
strate a few more interesting menu examples. e mbh because the menu bar is
drawn using the DRAWR (draw relative) command. Work out the width of the men
u bar in graphics coordinates, and then take off one pixel's worth and set
mbl to that. In line 20 we calculated mbl as 16*6-2, which is 16 for each
of the six characters of the menu text, less two, which is the width of
a pixel in MODE 1. In MODE 2 you would do eight times the number of charact
ers, and only take off one. If in doubt, just experiment with the valuesBe
fore then, have a go at designing a few simple menus to get the hang o
f setting up the variables. mch Number of choices on the men
u mp Menu bar position (zero for first item on menu) mf
Menu flags (to be explained later) mde Menu delay mcol
Pen to use for the menu bar msp Vertical spacing of menu items in gr
aphics coordinates mx, my Graphics coordinates of top left of menu
mbh Menu bar height in until it looks right! KEYS TO SUCCESS I
n line 30 we are telling the menu routines which keys we want it to take no
tice of. We have chosen the cursor keys and COPY key by setting the var
iables to the appropriate key numbers, but you could use any other keys by c
hanging the numbers, or even allow the user to redefine the keys. The keys
indicated by "up" and "dow" make the menu bar move up and down on the scree
n. The other three keys, "le", "ri" and "fi" can be used by graphics coordina
tes mbl Menu bar length in graphics coordinates up, dow Set
these to the INKEY numbers of the up and down keys of your choic
e le, ri, fi Set these to the INKEY numbers of other keys that you want the
menu to respond to. kf Key flags (to be explained
later) Table 2 -------------------------------------- Figure 1
10 MODE 1mch4mp0mf0mde0 20 mcol1msp16mx0my399-2*16mbh16mbl16*6-the
programmer to provide other features. The key flags, variable kf,
indicate which of these three keys the routine will look out for. In our
example we are only interested in when the user presses COPY to select the m
enu item. To do this, kf has been set to 4. More on how kf works later.
THE REALLY EXCITING BIT Once all the variables are set up, we do GOSUB
1010 in line 60, which prints the menu bar up on the screen. The GOSUB
1000 in the next line mbh32mbl16*7-2 Have a play around and try out d
ifferent values for these variables. The msp variable should be set accordi
ng to how far apart the lines of text are. If each menu item takes up o
ne line, and there are no gaps between them, msp needs to be set to 16,
as there are that many graphics y- coordinates for each text line. You
can even have menu text printed every one and a half lines and set msp to 24
if you feel so inclined. The variables mx and mcalls the main menu routin
e, which lets the user move the menu bar up and down until the COPY key (in
this case) is pressed. Line 80 then informs the user of the position of
the menu bar. This must be the most useful menu ever! If you want
to remove the menu bar from the screen again after returning from line 100
0, all you have to do is GOSUB 1010 again. You might of course want to
leave it in place ready for the next time the menu is used. Once the vari
ables y hold the graphics coordinates of the top left pixel of the menu
bar when it is over the first menu item. All the other coordinates needed
are worked out using msp. Finally the actual size of the menu bar is
stored in mbl and mbh. The height, stored in mbh, is measured in graphics c
oordinates. This could be the same as msp, but making it larger or small
er will produce different effects. The variable for the length of the
menu bar, mbl, does not work quite lik N2 30 up0dow2le8ri1fi9kf4 40 PRI
NT"Menu"PRINT"----" 50 FOR x1 TO mchPRINT"Item"xNEXT 60 GOSUB 1010 7
0 GOSUB 1000 80 PRINT"You have chosen item"mp+1 90 END 1000 kp0md1mz
0 1001 WHILE (kp AND kf)0 1002 WHILE (2mp AND mf)0 OR mz 1003 mz0GOS
UB 1010mp(mp+mch+md) MOD mchGOSUB 1010 1004 WEND 1005 md(INKEY(up)-1)-(I
NKEY(dow)-1)mzmd 1006 kp-(INKEY(le)-1)-2*(INKEY(ri)-1)-4*(INKEY(fi)-1) 1
007 WEND 1008 WHILE INKEY$""Wd respond to the "le", "ri" and "fi" keys
. Just add up the following values for each of the keys le
1 ri 2 fi 4 Thus 3 would mean that only the "le" and
"ri" keys should be used. In our example last month, we set kf to be 4,
so that only the "fi" key (which we had set to be COPY) was detected.
If we had wanted to, we could have set "le" to be 18 and "ri" to be 6
(the RETURN and ENTER keys). Then with kf set to 7, so thEND 1009 RET
URN 1010 PRINT CHR$(23)+CHR$(1) 1011 MOVE mx,my-mp*msp+(md-1)*(mbh-2)
1012 FOR mc1 TO mbh/2 1013 DRAWR mbl,0,mcolMOVER -mbl,-2-(md-1)*4 1014
FOR delay0 TO mdeNEXT 1015 NEXT 1016 PRINT CHR$(23)+CHR$(0) 1017 RE
TURN PATCH 6 By Stephen and Matthew Phillips "What's on the menu for
this month", we hear you cry. Wella10 10101 B a11 451 459 a11 8131 B a11 53
2 540 a11 9079 B a12 3810 3818 a12 10511 B a12 8454 8460 a12 11768 B a13 2075
2083at all three keys were detected, the user could have used the cursor ke
ys to move the menu bar up and down, and selected the menu item with any
of the COPY, ENTER and RETURN keys. ANOTHER MENU, ANOTHER VARIABLE In
Listing 1 we have another example program, which shows another way of using
the menu routines, and also helps you to calculate the value of kf that yo
u need. This time fi is 18 for the RETURN key, le is set to 47 for the s
pace bar, and we do not need "ri", so#Programmers' Patch 7 - WACCI 116, Oct 1997
, p. 23-24 PROGRAMMERS' PATCH 7 By Stephen and Matthew Phillips La
st month we started looking at a short routine for handling menus in BASI
C, and produced a simple selection menu with a scrolling bar. This month
we are going to have a go at some more complicated examples. The routines
are reprinted this month in lines 1000-1017 of Listing 1, but you may wan
t to have last month's article handy to refer to the list of var it has bee
n left as it is. The program is saved on disc as MENUEX2.BAS The progr
am brings in a variable we have not yet met. The keys pressed are indicat
ed by kp, and it works in the same way as kf above. When we return from l
ine 1000, if just the "fi" key is pressed, then kp will be 4. If only the
"le" key was pressed then kp would be 1. Of course, the user might have p
ressed both at once, in which case kp would be 5. In Listing 1 we have i
gnored the caseiables used in the program. In the simple selection menu,
we just needed to set up where the menu was, and how big it was, and th
at was about it. The routines are capable of a lot of different applicatio
ns, controlled mainly by the mf (menu flags) and kf (key flags) variables
, along with kp (keys pressed), which returns information to us after the u
ser has selected a menu item. FLAGGING DOWN The kf variable is for con
trolling how the routines respond to the keys. s where several keys might b
e pressed at once. The WHILE-WEND loop of lines 110 to 140 goes round and
round until kp4, which happens when the RETURN key is pressed on its
own. In line 130, the commands to toggle the values between On and Off o
nly happen when kp1, when only space is pressed. Although we could tell wh
en both of those keys are pressed at the same time, the user is not reall
y giving a clear indication of what should be done, so it is more sensible
The numbers of the keys detected by the routines are held in several
variables "up" and "dow" tell the routines which keys to use for moving the
menu bar up and down, while "le", "ri", and "fi" are just three other keys
that can be detected by the routine. They do not have to act as left, r
ight, and fire in any particular way they are just called that to make them
easier to remember. Variable kf is a bit-significant number showing w
hether the routine shoul Nis is where the mysterious variable mf comes in.
It is another of these bit-significant variables. In line 10 mf is set
to 8+32, or 101000 in binary. Each binary digit, or bit, corresponds to a
menu item, and a 1 tells the menu routine that the item is unselectable
and should be rolled over. The least significant bit (at the right hand
end) refers to the first item on the menu. If you want to use this f
eature your menu is limited to 16 items. You can calculateltiply by 10
if SHIFT is pressed, or by 1 if it isn't. You could get the same effect w
ith a lot of IF statements in a much simpler, but longer, way. WHAT ABOUT
THE SUBROUTINES Yes, we'll get onto them next month. Be patient! In the
meantime, why not alter Listing 2 so that you cannot order negative qu
antities of magazines... Listing 1 10 MODE 1mch3mf0mde0
20 mcol2msp16mx0my399-5*16mbh16mbl16*2-2 30 up0dow2le47ri1fi18k mf in variou
s ways, and it really depends on whether you will need to alter it much.
If mf is going to stay the same, the easiest way is to set it in binary
mf&x101000 Otherwise you will probably have to mess a
round with powers of 2 to achieve the right value. LOOKING SHIFTY
The program as it stands only allows you to alter the quantities by one
at a time. It would be nice to be able to hold the SHIFT key down and pr
ess left or right just to ignore it. It also makes the BASIC program much
simpler for a change! Just for the record, we ought to point out that ev
en if you set kf to 5 to show that you are not interested in the "ri" key,
if the user presses the "le" and "ri" keys together then kp will be retu
rned as 3, not 1. There are cases where this might be a nuisance, so if yo
u want to avoid it, you can just say kpkp AND kf strai
ght after the return from line 1000, and then k to alter the value by ten. T
o do this we will have to modify the menu subroutine, as we don't have a spa
re key. Just add onto the end of line 1006 -8*(INKEY(sh)-1
) and add "sh21" to line 30. This tests another key, "sh", which has been
set up to be the SHIFT key. Eight will be added to kp if SHIFT is
pressed. We do not need to alter kf because we do not want control to
return from line 1000 if the SHIFT key is pressed on its own. Whether tp w
ill only tell you about the state of the keys indicated in kf. BACK TO
THE ISSUE Our second example this month shows what you might want the "le"
and "ri" keys for. You will need to type in lines 1000 to 1017 again to g
o with Listing 2. The whole working program is saved as MENUEX3.BAS on t
he disc The user is presented with an order form for back issues of ou
r favourite magazine. The left and right cursor keys adjust the quantit
y of each magazine tohe SHIFT key was pressed is still indicated in kp,
even though we set kf to show that we were not interested in it. Fina
lly we need to alter line 150, where the quantity of magazines is adjust
ed 150 num(mp)num(mp)+(((kp AND 1)1)-((kp AND 2)2))*(1-9*((kp AND 8)8))
GOSUB 210 The altered version is saved as MENUEX4.BAS on the disc
This time we do need to cope with more than one key being pressed at
once, so the line is a lot more complicate be ordered. Certain issues are
out of stock, and so the menu bar will roll straight over these options to
the next one. You may have seen similar features on the menus of the Advanc
ed Music System. Line 150 adjusts the number of magazines according to whe
ther the "le" or "ri" keys are pressed. This is a much simpler version of
the techniques we explained in the March article. How do we tell the m
enu routine to roll over the magazine issues which are out of stock Thd
than before. To find out from kp whether a particular key is pressed
we AND kp with the appropriate value. Thus if the "sh" key is presse
d, kp AND 8 will be 8 otherwise it is zero. Again we are using the
results of logical expressions in our calculations. The important
point is that a true statement has value -1 and a false statement gives 0.
The first part of the expression gives - 1, 0 or 1 depending on the left
and right keys. We then mu N 160 LOCATE 10,mp+6IF ourkf AND 2mp THEN PRIN
T"On " ELSE PRINT"Off" 170 RETURN 1000 kp0md1mz0 1001 WHILE (kp AND
kf)0 1002 WHILE (2mp AND mf)0 OR mz 1003 mz0GOSUB 1010mp(mp+mch+md) MOD
mchGOSUB 1010 1004 WEND 1005 md(INKEY(up)-1)-(INKEY(dow)-1)mzmd 1006
kp-(INKEY(le)-1)-2*(INKEY(ri)-1)-4*(INKEY(fi)-1) 1007 WEND 1008 WHILE I
NKEY$""WEND 1009 RETURN 1010 PRINT CHR$(23)+CHR$(1) 1011 MOVE mx,my-
mp*msp+(md-1)*(mbh-2) 1012 FOR #Programmers' Patch 8 - WACCI 117, Nov/Dec 19
97, p. 15-16 PROGRAMMERS' PATCH 8 By Stephen and Matthew Phillips
In the last of three articles about menu handling in BASIC we are going to l
ook at how the routines we have presented work. Remember that it is po
ssible to use the subroutines yourself without having a clue how they act
ually do the job. If you want to adapt the subroutines yourself or use some
of the techniques in your own programs, then the followmc1 TO mbh/2
1013 DRAWR mbl,0,mcolMOVER -mbl,-2-(md-1)*4 1014 FOR delay0 TO mdeNEXT
1015 NEXT 1016 PRINT CHR$(23)+CHR$(0) 1017 RETURN Listing
2 10 mch6mf8+32mde0 20 mcol1msp32mx124my322mbh22mbl132 30 up0dow2
le8ri1fi47kf7 40 DIM num(mch-1) 50 MODE 1LOCATE 8,3PRINT"WACCI back-issu
es orders" 60 LOCATE 8,4PRINT STRING$(24,"-")LOCATE 1,19 70 PRINT"Use th
e cursor keys to move and alter. SPACE to finish." 80 FOing explanation
may be helpful. If it isn't then write to Fair Comment and complain!
The routines have been reprinted for you yet again, along with a table
showing all the variables we use. The menu routine is also saved on
disc as MENUSUB WENDING OUR WAY The main subroutine, lines 1000-1009,
contains several WHILE-WEND loops. Line 1008 sees our favourite loop for
clearing the keyboard buffer. This is done before returning to your progra
m in orR mp0 TO mch-1LOCATE 9,6+mp*2PRINT"WACCI"40+mpGOSUB 210NEXT 90 FOR
mp0 TO mch-1 100 IF mf AND 2mp THEN LOCATE 30,2*mp+6PRINT"(no stock)" 11
0 NEXT 120 mp0kp0 130 GOSUB 1010 140 WHILE kp4 150 num(mp)num(mp
)+(kp1)-(kp2)GOSUB 210 160 GOSUB 1000 170 WEND 180 mags0FOR x0 TO mc
h-1magsmags+num(x)NEXT 190 LOCATE 1,22PRINT"Thank you for your order." 2
00 PRINT"Please send a cheque for £"USING"##.##"0.5*magsEND 210 LOCATE 27,6+
mp*2PRINT numder to make sure that the key presses from the menu selection
are used up' properly. Try taking the line out and you will soon see why
it is useful to have it there. Lines 1001-1007 form the main WHILE-WEND
loop of the subroutine, within which there is yet another loop at lines 100
2 to 1004. The main loop is essentially all about checking the keys th
at the user presses. The "up" and "dow" keys are detected in line 10
05 and the internal variable "md" is set(mp)RETURN PATCH 7 By Stephen a
nd Matthew Phillips Last month we started looking at a short routine fo
r handli,5u/"""DD LdDgint long registerreturn short sizeoccf5 40 o
urkf0 50 PRINT"Press SPACE to toggle the values On/Off" 60 PRINT CHR$(34
)"Off"CHR$(34)" means the key would be ignored" 70 PRINTPRINT"Press RETURN t
o calculate the kf value" 80 LOCATE 1,6PRINT"le"PRINT"ri"PRINT"fi" 90 FO
R mp0 TO mch-1GOSUB 160NEXTmp0 100 GOSUB 1010 110 WHILE kp4 120 GOSU
B 1000 130 IF kp1 THEN ourkfourkf XOR 2mpGOSUB 160FOR delay1 TO 100NEXT
140 WEND 150 GOSUB 1010LOCATE 1,10PRINT"The kf value you need is"ourkfEND
Nes the menu bar. The first command inside the loop, on line 1003, sets
mz to zero again, making it false. The menu bar then moves on to the nex
t menu item up or down. Upon reaching the WEND in line 1004, the bar movin
g loop will only execute again if the bar is over a prohibited menu optio
n, since mz has been reset to the false value of zero. Why did we ne
ed another variable though - could we not just have used md We certainly
need a variable that shows rst item on the menu, the next digit along r
efers to the second item and so on. For example, if mf was 8 (1000 in bi
nary), this means that the 1st, 2nd and 3rd items on the menu can be sel
ected, but the 4th item is to be avoided. If mf was 12 (1100 in binary
), then the 3rd item must not be selected either. The position of th
e menu bar is held in "mp". For more than one reason we start counting from
zero, so mp is zero when the menu bar is over the firs to indicate
which direction the menu bar should move, using much the same technique a
s in the disc menu programme we featured in issue 110. In the next line the
other keys, "le", "ri" and "fi" are checked. The value of "kp" is set
according to whether those keys are pressed or not, as we explained last mo
nth. Setting aside lines 1002 to 1004, which do the moving of the menu bar,
that is all there is to it. The main loop keeps going while
(kp AND kf)t item on the menu, one when it is over the second item and so o
n. The expression (2mp AND mf)0 in line 1002 is design
ed to test whether the menu bar is over a prohibited item. (The symbol is
the same as the up arrow that shares a key with the pound sign on your CP
C). Try out the following on your computer FOR mp0 TO 6PRINT BIN$(2mp)N
EXT This prints up 2mp in binary, and you will see that as mp goes from 0
to 6, the binary form of 2mp goes0 This provides the mechanism to ign
ore certain keys. If kf is set to 4 (or 100 in binary), then only the "fi"
key will cause the subroutine to end. The bits of kp are set in line 100
6 according to which keys are pressed. Suppose the "le" and "ri" keys were
pressed kp would be 3, or 11 in binary. 011 kp
100 kf --- 000 kp AND kf The pressing o
f the "le" and "ri" keys is masked out by the key flags, kf, giv from 1 to
10, 100, 1000 and so on. When this value is ANDed with mf, it has the ef
fect of picking out the binary digit of mf appropriate to that menu position
and ignoring all the others. Thus "2mp AND mf" is zero when we are allowed
to stop on a menu position, and greater than zero when we need to roll over
it. If you look at line 1002 though, you will see that the WHILE state
ment is a little more complicated. The bit we have just looked at keeps
the loop going ing a result of zero. It is easy to see that the loop will
only come to an end when the "fi" key is pressed. Masking out bit-s
ignificant values using the AND operator is a very important technique,
especially if you are trying to squeeze large amounts of information into m
emory efficiently. PUB CRAWL The smaller loop in lines 1002 to 1004 m
akes sure that the menu bar moves when the user presses the "up" or "dow" ke
ys, and keeps on moving the menu bar in the samuntil we are over a menu it
em that is selectable, but we need another part to get the menu bar moving
in the first place. Line 1005 is where the up and down keys are checked.
The md variable is set according to the direction, and then mz is put equal
to md. If up or down has been pressed, md and mz will be 1 or -1, so m
z will be true. When the main loop gets back to line 1002 this means that t
he WHILE condition there will be true, and BASIC will execute the loop that
move direction over any masked out menu entries. You will remember the
example last month for ordering WACCI back issues, where the menu bar did
not stop over the issues that were out of stock. The information as to whi
ch menu items are out of bounds is held in the parameter "mf". This is a
lso a "bit significant" value, which means you have to look at it in binar
y to make any sense of it. The value of the least significant bit (the o
ne on the right) refers to the fi N We use the useful MOD operator in ord
er to make the menu bar loop round. When you get to the bottom of the men
u, pressing the down key will take the menu bar right to the top of the men
u again, and vice versa. One way of writing this would be something like
the following mpmp+md IF mpmch THEN mp0 IF mp-1 THEN mpmch-
1 but using the MOD operator we have managed to condense it to mp(
mp+mch+md) MOD mch How does this work If you look up h Number
of choices on the menu mp Menu bar position (zero for first item
on menu) mf Menu flags (see last month) mde Menu de
lay mcol Pen to use for the menu bar msp Vertical spa
cing of menu items in graphics coordinates mx, my Graphics coordinate
s of top left of menu mbh Menu bar height in graphics coordinates
mbl Menu bar length in graphics coordinates up, dow INKE
Y numbers of MOD in your manual (don't bother if you have an original CPC
464 manual - they forgot to put it in), you will find it described as retu
rning the remainder after dividing the first argument by the second argu
ment. In our case it is the remainder after dividing mp+mch+md by mch.
Another way to think of it is that MOD keeps on subtracting mch from mp+mc
h+md until it gets a result from 0 to mch-1. Suppose that mch is 6, mean
ing six menu items numbered from 0 to 5. Ifthe up and down keys le, ri, fi
INKEY numbers of other keys that the menu responds to. kf Key
flags (see last month) Values returned by the routines mp
Menu bar position (as above) kp Keys pressed (see last month)
Variables used internally by the routines delay mc md mz
Listing 1 1000 kp0md1mz0 1001 WHILE (kp AND kf)0 1002 WHIL
E (2mp AND mf)0 OR mz 1003 mz0GOSUB 1010mp(mp+mch+md) MOD we were on th
e last menu item them mp would be 5. Pressing down would set md to 1, so mp
+md is 6. Divide that by mch, which is 6 also, and it goes exactly once, s
o there is no remainder. Therefore the new value of mp will be zero, wh
ich signifies the top item on the menu. Let us try going up from the
top menu item. The menu position, mp, starts as zero this time. Going
up translates into subtracting 1, so mp+md is -1. The only trouble is th
at if you then us when a key has been pressed to trigger the loop in line
s 1002 to 1004 and set the menu bar moving. We also need to reset that
trigger to zero or else the menu bar will never stop moving. The trouble
is that if we used md for this purpose, we would get in a mess if we
moved onto a prohibited menu item. Having set md to zero, the next time t
hrough the loop we would not know which direction we were meant to be goin
g in when skipping that menu item to move do MOD 6, it will still be -1
, and we want 5. This is why the expression in line 1003 has an extra
mch added in, as mp+mch+md is 5, and when you take the remainder on divisio
n by 6, you end up with 5 as the answer, which is the last menu item, ju
st as we want. THAT'S ALL FOLKS That pretty well wraps up the menu sub
routines, so next month we will have a go at something completely different.
Just to show that no program is ever perfect though, try to see if yto
the next one! WARP FACTOR MCH Line 1003 is where the menu bar is
actually moved. First we GOSUB 1010, which removes the bar from the screen
. Then mp is adjusted, and finally we have GOSUB 1010 again to put the men
u bar back on the screen in the new position. The reason we can use the
same routine for removing and redisplaying the menu bar is that we are
using the XOR graphics mode. The adjustment of mp, the menu position v
ariable, is worth looking at. ou can find a way of removing four character
s from line 1002 in a way which does not affect the operation of the progra
m, or if anything slightly improves it. We only spotted it when writing thi
s final article! Since then we have discovered that this alteration mea
ns that the program would not function correctly on a CPC 464 if the menu
had more than 8 items, so it is best to leave it as printed!
TABLE OF VARIABLES Parameters to set up mc NA GOOD DEAL The
game starts by GOSUBbing 1000 to deal the cards out on the table. In line
50 we put the pack in order so we must shuffle the cards as well as dealin
g. We do both at the same time in line 1010. In a loop starting with n5
2, we pick a random card between 1 and n using the expression cdelINT(RND*
n+1) We put this card in the layout array at c(row,col) and move the nth
card in the pack to the position vacated by our chosen card. This leave
s us w#Programmers' Patch 9 - WACCI 118, Jan 1998, p. 18-19 PROGRAMMERS'
PATCH 9 By Hilary Phillips Yes, this month the proofreader gets a go
at writing an article, to give Matthew and Stephen a break. This was int
ended to be a Christmas Special on card games, but WACCI's brief bi-monthly
spell put paid to that idea so it has to be a New Year's special instead
. I started programming card games after seeing a rather good patience g
ame on my sister's Mac and wonderingith all the undealt cards in the first
n-1 positions in the pack, and the dealt out cards in the layout array.
GOSUBbing 3500 prints the back of the card at the position for c(row,col).
We can then decrease n by one and go through the process again until all
the cards have been dealt. We need line 1020 as well as 1010 to do this
because the layout array is not a rectangle but 7 rows of 7 and an extra ro
w of 3 cards. PRINTING Let's now look at the routines for prin wheth
er I could reproduce it on Matthew's CPC. I could, but the listing's a bit
long to put into a two-page WACCI article so here is a shorter, multi-pl
ayer game. Fun for all the family in the festive season with Pelmanism, or
Matching Cards. This is saved on disc as PELMAN.BAS In the fine tra
dition of this series I'm going to go through the program showing how it w
orks and picking out the most horrible lines and trying to explain how on ea
rth I came up with tting things in lines 3000-4530 as they are used by man
y bits of the program. Each routine uses the position markers (row,col).
3000 Printing cards For simplicity in the version for this article, the
cards are displayed by just two characters, one for the value ("card") a
nd one for the suit. These are calculated from c(row,col) in line 3000.
"card" takes a value from 1 to 13 and "suit" a value from 0 to 3 c(r
ow,col) is in fact card+(suit*14), hence cardc(rhem. I'll try to keep it
down to just one article, though. SETTING OUT The first few lines
set up what we will need to play the game. In line 10 we create a special c
haracter so that the number "10" can be printed up as one character. Line 3
0 sets up arrays for the pack, the cards in the two-dimensional layout,
the names of six players and the numbers of pairs won by the six players.
Line 40 defines a string which we will use to print up the values of th
e caow,col) mod 14 and suitc(row,col)14. The suit characters are in the AS
CII character set which makes things very easy. The character for "card" i
s held in the string card$ defined in line 40. All we have to do to pr
int it is to take out the appropriate character using MID$. The colour to
print the cards is slightly tricky to work out as we want black (0) for sui
ts 0 and 3 (clubs and spades) and red (1) for suits 1 and 2 (diamonds and
hearts). Try out the expression frds. In line 50 we put 52 entries in the
"pack" array. We could just represent the cards by the numbers 1-52 but it
turns out to be easier to manipulate them in other card games I have writ
ten if we use 1-13, 15-27, 29-41 and 43-55 for clubs, diamonds, hearts a
nd spades respectively, hence the peculiar expression in line 50. Line
60 sets up the inks (black, red, white, and green for the card table) and
line 70 gives us a window at the bottom for messages. mchGOSUB 1010
1004 WEND 1005 md(INKEY(up)-1)-(INKEY(dow)-1)mzmd 1006 kp-(INKEY(le)
-1)-2*(INKEY(ri)-1)-4*(INKEY(fi)-1) 1007 WEND 1008 WHILE INKEY$""WEND
1009 RETURN 1010 PRINT CHR$(23)+CHR$(1) 1011 MOVE mx,my-mp*msp+(md-1)*
(mbh-2) 1012 FOR mc1 TO mbh/2 1013 DRAWR mbl,0,mcolMOVER -mbl,-2-(md-1)*
4 1014 FOR delay0 TO mdeNEXT 1015 NEXT 1016 PRINT CHR$(23)+CHR$(0)
1017 RETURN the last of three articles about menu handling in BASIC we No
r "Q", and if you quit then line 250 resets the screen and text settings
using two firmware calls. COULD DO BETTER This is a very basic version
of the game, and lots of things could be done to spice it up. The cards c
ould be a better shape and look more like playing cards. You could incl
ude appropriate music when cards match or do not match. Or you could dispen
se with the computer altogether and use a simple pack of 52 cards and a ta
ble. 5 REM Pelmanism v. lines 2530-2560 depending on which key is p
ressed. If the player moves off the 8x7 rectangle the cursor wraps round
and reappears at the top if it went off the bottom, etc. This is done u
sing MOD. In line 2530 we have to add 8 before MODding by 8, as the curs
or might be at position 0 (the first row) and MOD -1 -1, whereas we wa
nt 7, for the last row. Line 2550 is similar. Before moving the cursor
we delete it from its former position, and after moving or pcol and yo
u will see that it works. 3500 Printing backs of cards This is very si
mple the backs are two characters gleaned from the ASCII character set.
4000 Deleting cards This is ever so easy as all we have to do is print
spaces over the top of the card previously there. 4500 Printing cursor
This is an "X" spread over two characters, printed in white in transparent
mode over the card below. It is not printed up if the card is the one
just selecwe print it in its new position. Once the ENTER/RETURN key ha
s been pressed the card selected is turned over, i.e. printed up by GOSU
Bbing 3000. The value of the card (which we worked out when GOSUBbing 3000
) is stored in cardsel and the position in (r1,c1). The player is then
asked to choose another card. Line 2030 ensures that they do not choose
the same card again, prints up the second card selected and then compares t
he values of the two cards. If they areted, i.e. in the position (r1,c1).
4520 Deleting cursor We do not need to delete the cursor if it is ove
r the card just selected, as it was not printed there in the first place
. If there was no card under the cursor then the cursor is deleted usi
ng the routine at 4000 otherwise the back is printed up again using 3500.
ON WITH THE GAME Lines 110-140 allow the user to select the number o
f players and enter their names, the first 16 characters of which are u the
same then we GOSUB 2100, remove the cards by deleting them and setting c(ro
w,col)0 for each position, and add 1 to the player's score of pairs won
, printing it below their name on screen. The player then gets another t
urn. If the cards do not match then they are shown for a set length of time
so that all players have a fair chance to see what and where they were,
and then they are turned over again by GOSUBbing 3500, and it is the ne
xt player's turn. ANDsed by the program and are printed up to the rig
ht of the dealt out cards. All six players' scores are set to 0 regardl
ess of how many are playing as line 150 checks the sum total of pairs won t
o determine when the game ends. TAKING TURNS We now GOSUB the main loo
p in 2000 for each player's turn. The cursor starts off at (0,0) and th
e position of the last card chosen, (r1,c1), is set to be (-1,-1) as this i
s outside the playing area so won't interfere with th THE WINNER IS...
Once all the pairs have been won, the WHILE-WEND loop in line 150 ends and
we get onto the business of working out the winner. As more than one p
layer might have got the highest number of pairs we store a character for ea
ch of the winners in win$, and the length of win$ shows how many winners the
re are. We can then print up appropriate congratulatory messages in line
220. Line 230 waits for you to decide whether to play again or not by pr
essing "P" e printing up of the cursor. GOSUBbing 2500 tells the player to
choose "a card" or "another card" depending on the value of mud$ - this
saves having to put in the same routine twice. Line 2520 waits for the
cursor keys or the ENTER/RETURN key to be pressed. It only responds to
the ENTER/RETURN key if there is a card in that position, in which case a c
ard has been selected and we can RETURN. If a cursor key is pressed we ne
ed to move the cursor. This is done in N"." ELSE PRINT"s are" FOR
n1 TO LEN(win$)PRINT pl$(ASC(MID$(win$,n,1)))NEXT 230 LOCATE#1,1,1PRINT#1,"P
ress P to play again, Q to quit"CHR$(20) a$""WHILE a$"P" OR a$"Q"a$UPPER
$(INKEY$)WEND 240 IF a$"P" GOTO 50 250 CALL &BC02CALL &BB4EMODE 1END
1000 LOCATE#1,10,1PRINT#1,CHR$(17)"Dealing..."CHR$(20) 1010 n52FOR row0 TO
6FOR col0 TO 6cdelINT(RND*n+1) c(row,col)pack(cdel)pack(cdel)pack(n)GOS
UB 3500nn-1NEXTNEXT 1020 FOR colDISCMENUBASptt £ () "" USE, a-z B" (B)
! ,("&") CD,78,BB,4C,DD,6E,0,DD,66,1,46,78,B7,C8,23,5E,23,66,6B,CD,60,BB,7
7,23,C,79,E5,CD,6F,BB,E1,10,F2,C9H N ()() d ( (#)V () (,,)"." (,,)"" , ()
P( (/) () () 0 TO 2cdelINT(RND(1)*n+1)c(row,col)pack(cdel) pack(cde
l)pack(n)GOSUB 3500nn-1NEXTRETURN 2000 row0col0r1-1c1-1GOSUB 4500 2010 m
ud$""GOSUB 2500GOSUB 3000r1rowc1colcardselcard 2020 mud$"nother"GOSUB 2500
2030 IF rowr1 OR colc1 THEN GOSUB 3000 ELSE 2020 2040 IF cardcardsel THEN
2100 ELSE 2200 2100 LOCATE#1,1,1PRINT#1,"They match! Well done "pl$(turn)".
"CHR$(20) FOR delay1 TO 500NEXT 2110 GOSUB 4000c(row,col)0rowr1colc
1 v(,w(x, (( ())( ()))(( ())))) v(,w(, (( ())( ()))(( ())))) , () , ()2 P ,
() ( ) ( ) , , (,,)"." B" u , "User "() £ () "" USE, (#)F+P (/
) () () C"",DD,66,1,46c(row,col)0GOSUB 4000 2120 pw(turn)pw(turn)+1LOCATE 27
,turn*3-1PAPER 3PEN 2 PRINT pw(turn)RETURN 2200 LOCATE#1,1,1PRINT#1
,"They don't match!"CHR$(20) FOR delay1 TO 5000NEXT 2210 GOSUB 3500
rowr1colc1GOSUB 3500turn(turn MOD npl)+1RETURN 2500 LOCATE#1,1,1PRINT#1,"Cho
ose a"mud$" card, "pl$(turn)"."CHR$(20) 2510 kp$""WHILE (kp$CHR$(240) OR kp$
CHR$(243)) AND kp$CHR$(13) kp$UPPER$(INKEY$)WEND 2520 IF kp$CHR$(13
) AND c(row,col)2.0 (Simple version), Dec 1997 by Hilary Phillips 10 SYMBOL
AFTER 255SYMBOL 255,76,210,82,82,82,82,76,0 30 DIM pack(52)DIM c(7,6)DIM pl$
(6)DIM pw(6) 40 card$"A23456789"+CHR$(255)+"JQK" 50 FOR n1 TO 52pack(n)n
+(n-1)13NEXT 70 INK 0,0INK 1,6INK 2,26INK 3,9MODE 1PAPER 3CLS 80 WINDOW#
1,1,40,24,25PAPER#1,3PEN#1,2CLS#1 100 GOSUB 1000 110 LOCATE#1,1,1PRINT#1
,"Enter number of players (1-6)"npl0 WHILE npl1 OR npl6nplVAL(INKEY$)WEN
DPRINT#1,npl 10 THEN RETURN 2530 GOSUB 4520IF kp$CHR$(240) THEN row(row-
1+8) MOD 8 2540 IF kp$CHR$(241) THEN row(row+1) MOD 8 2550 IF kp$CHR$(24
2) THEN col(col-1+7) MOD 7 2560 IF kp$CHR$(243) THEN col(col+1) MOD 7 25
70 GOSUB 4500GOTO 2510 3000 suitc(row,col)14cardc(row,col) MOD 14pcolMIN(1,s
uit MOD 3) 3010 LOCATE col*3+2,row*2+2PAPER 2PEN pcolPRINT MID$(card$,card,1
) CHR$(226+suit)RETURN 3500 LOCATE col*3+2,row*2+2PAPER 0PEN 1PRINT
CHR$(220)CHR$(222)RETUR20 FOR n1 TO nplLOCATE#1,1,1PRINT#1,"Player"n"enter your
name" CHR$(20)LINE INPUT#1,a$pl$(n)LEFT$(a$,16) 130 LOCATE 25,n*3-2
PAPER 3PEN 2PRINT pl$(n)NEXT 140 FOR n1 TO 6pw(n)0NEXTturn1 150 WHILE pw
(1)+pw(2)+pw(3)+pw(4)+pw(5)+pw(6)26GOSUB 2000WEND 200 win$""FOR n1 TO nplIF
pw(n)MAX(pw(1),pw(2),pw(3),pw(4),pw(5),pw(6)) THEN win$win$+CHR$(n)
210 NEXTLOCATE 1,9PAPER 3PEN 2PRINT"The winner" 220 IF LEN(win$)1 THEN PRINT
" is "pl$(ASC(win$))N 4000 LOCATE col*3+2,row*2+2PAPER 3PRINT " "RETURN
4500 IF rowr1 OR colc1 THEN LOCATE col*3+2,row*2+2PEN 2 PRINT CHR$(22)
CHR$(1)CHR$(197)CHR$(199)CHR$(22)CHR$(0) 4510 RETURN 4520 IF rowr1 OR co
lc1 THEN IF c(row,col)0 THEN 3500 ELSE 4000 4530 RETURN illips Yes, t
his month the proofreader gets a go at writing an article, to give 5 m( ( u))(
( do)) m m k( ( l))( ( r))( ( f)) N99 REM Figure 1.61 100 REM An inefficient
subroutine to replace line 40. 110 WHILE INKEY(47)-1 AND INKEY(18)-1 AND INKEY(
9)-1 120 oldxxoldyy 130 addx0addy0 135 REM Check keys 140 IF INKEY(8)-1 THEN
addx-1 150 IF INKEY(1)-1 THEN addxaddx+1 160 IF INKEY(21)-1 THEN addxaddx*4
170 addx3*addx 180 IF INKEY(2)-1 THEN addy-1 190 IF INKEY(0)-1 THEN addyaddy+1
200 IF INKEY(21)-1 THEN addyaddy*2 210 addy3*addy 220 xx+addxyy+addy 225 RE
M Check x & y are on screen 230 IF x632 THEN x632 240 IF x0 THEN x0 250 IF y3
99 THEN y399 260 IF y15 THEN y15 265 REM Remove pointer and redisplay 270 MOV
E oldx,oldyPRINT CHR$(215) 280 MOVE x,yPRINT CHR$(215) 290 WENDRETURN onth w
e move from the starter to a lightly g mb1 mb,, mco mb,( m) dela m
d ()()50 m) k m m ( k k)" ( m m) m m m( m 100 MEMORY &8FFFa&9000FOR x0 TO
13READ a$POKE a+x,VAL("&"+a$)NEXT 110 MODE 2PRINT"Bunnymen" 120 c%0LOCATE 1,1
CALL &9000,c% 130 PRINTPRINT"The letter at the top left of the screen is a "CHR
$(c%) 190 DATA DD,66,01,DD,6E,00,CD,60,BB,77,23,36,00,C9 $$$ r))T Figure 2
.71 sader for MIDI SEND RSX (see article 11) TUNE.BASprogram to play a tune fro
m article 12 ---- * See "Blast from the Past",299 REM Figure 1.618 300 REM
A better subroutine to replace line 40. 310 WHILE INKEY(47)+INKEY(18)+INKEY(9)-
3 320 oldxxoldyy 330 addx0addy0 335 REM Check keys 340 addx(INKEY(8)-1) 350
addxaddx-(INKEY(1)-1) 360 addxaddx*(4+3*(INKEY(21)-1)) 370 addx3*addx 380 ad
dy(INKEY(2)-1) 390 addyaddy-(INKEY(0)-1) 400 addyaddy*((INKEY(21)-1)+2) 410 a
ddy3*addy 420 xx+addxyy+addy 425 REM Check x & y are on screen 430 xMIN(632,x
) 440 xMAX(0,x) 450 yMIN(399,y) 460 yMAX(15,y) 465 REM Remove pointer and re
display 470 MOVE oldx,oldyPRINT CHR$(215) 480 MOVE x,yPRINT CHR$(215) 490 WEN
DRETURN ghtly gUB 1010 1004 WEND 1005 md(INKEY(up)-1)-(INKEY(dow)-1)mzmd 100
6 kp-(INKEY(le)-1)-2*(INKEY(ri)-1)-4*(INKEY(fi)-1) 1007 WEND 1008 WHILE INKEY$
""WEND 1009 RETURN 1010 PRINT CHR$(23)+CHR$(1) 1011 MOVE mx,my-mp*msp+(md-1)*
(mbh-2) 1012 FOR mc1 TO mbh/2 1013 DRAWR mbl,0,mcolMOVER -mbl,-2-(md-1)*4 101
4 FOR delay0 TO mdeNEXT 1015 NEXT 1016 PRINT CHR$(23)+CHR$(100 MEMORY &8FFFa&9
000FOR x0 TO 14READ a$POKE a+x,VAL("&"+a$)NEXT 110 MODE 2PRINT"Silly string" 1
20 a$" "LOCATE 1,1CALL &9000,a$ 130 PRINTPRINT"The letter at the top left of th
e screen is "a$ 190 DATA DD,66,01,DD,6E,00,23,5E,23,56,CD,60,BB,12,C9 $$$ r))T
Figure 2.71 s0ffvfffffffffvf100 MEMORY &8FFFa&9000FOR x0 TO 10READ a$POKE a+
x,VAL("&"+a$)NEXT 110 PRINT"Enter number (1 to 255)"INPUT x 120 CALL &9000,xPR
INT 130 GOTO 110 190 DATA DD,46,00,3E,40,CD,5A,BB,10,FB,C9 Figure 2.71 s0ffv
fffffffffvf N#Help for Loom hypertext reader v3.2 Loom is a system for viewing
hypertext a set of ordinary text files with links between them. Any text whic
h 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 appropriat
e place either elsewhere in the same file, or in a different file entirely.
There are quick cursor movements similar to Protext SHIFT left + rightMove le
ft or right a word at a time CTRL left + r m( m mc m) mc 5 m( ( u))( ( do)) m
m k( ( l))( ( r))( ( f)) C"" ()()5 m, m m ms( m)( mb) m mb1 mb,, mco mb,(
m) dela md ()()mp0mf0mde0 20 mcol1msp16mx0my399-2*16mbh16mbl16*6-2 30 up0d
ow2le8ri1fi9kf4 40 PRINightMove to start or end of line SHIFT up + downScroll
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 lin
k. Once you have followed a link, press the "" key or the "B" key to return to
where you came from. To quit Loom, press "Q". To leave this
help screen, press "B" --------------------------------------------------------
----------------------- Original version (c) Stephen Phillips 1995 Amstrad CPC
version (c) Matthew and Stephen Phillips 1997 Written using the HiSoft C compi
ler. Runtime routines (c) HiSoft 1988ader v3.2 Loom is a system for viewing hy
pertext a set of ordinary text files with links between tlink, press the "" ke
y or the "B" key to return to where you came from. To quit Loom, press "Q".
To leave this help screen, press "B" ---------------------------
---------------------------------------------------- Original version (c10 DEFI
NT a-zMEMORY HIMEM-34aUNT(HIMEM+1)FOR x0 TO 33READ a$POKE a+x,VAL("&"+a$)NEXTDAT
A CD,78,BB,4C,DD,6E,0,DD,66,1,46,78,B7,C8,23,5E,23,66,6B,CD,60,BB,77,23,C,79,E5,
CD,6F,BB,E1,10,F2,C9 20 MODE 2CATvVPOS(#0)f$SPACE$(12)LOCATE 1,4CALL a,f$LOCATE
1,v 30 PRINT"The first file on this disc is "f$ We find finely grated Parme
san cheese sprinkled generously oveMENUEX1 BASp()mp0mf0mde0 20 mcol1msp16mx0
my3* mc m m mdG mco ms m m mb mb5 u do l r f k("Menu""----"$2 mc"Item"
F #P"You have chosen item" mZ k m m ( k k)" ( m m) m m Nmc m) mc 5 m(
( u))( ( do)) m m k( ( l))( ( r))( ( f)) C"" ()()5 m, m m ms( m)( mb) m mb1
mb,, mco mb,( m) dela md ()()50hank you for your order." 200 PRINT"Plea
se send a cheque for £"USING"##.##"0.5*magsEND 210 LOCATE 27,6+mp*2PRINT num
C"" ()()5 m, m m ms( m)( mb) m mb1 mb,, mco mb,( m) dela md ()()ri1fi1
8kf5 40 ourkf0 1017 RETURN PATCH 6 By Stephen and Matthew Phillips "
What's on the menu for this month", we hear you cry. Well1)-(INKEY(dow)-1)mzm
d 1006 kp-(INKEY(le)-1)-2*(INKEY(ri)-1)-4*(INKEY(fi)-1) 1007 WEND 10
08 WHILE INKEY$""WMENUEX4 BASp dela md ()()! mc m md mco ms m mB mb mb u d
o l r f/ s k( nu( mc)*2 ,"WACCI back-issues orders" , (,"-") ,F"Use the cursor
keys to move and alter. SPACE to finish."P m mc , m"WACCI"( m MENUEX3 BASpn
mb1 mb,, mco mb,( m! mc m md mco ms m mB mb mb6 u do l r f/ k( nu( mc)*
2 ,"WACCI back-issues orders" , (,"-") ,F"Use the cursor keys to move and alter
. SPACE to finish."P m mc , m"WACCI"( m Z mMENUEX2 BASpdd,, mco mb,( m) d
ela " mc m mdG mco ms m m mb mb7 u do l/ r f k( ourk/2"Press SPACE to toggle
the values On/Off"9 (")"Off"(")" means the key would be ignored"0F"Press RETURN
to calculate the kf value"P ,"le""ri""fi")Z m mc mc5d m m , m"(no st
ock)"nx m k k nu( m) nu( m)( k)( k) A mag mc mag mag nu( )( ,"Thank you
for your order.""Please send a cheque for £""##.##" mag% , m nu( m) k m m ( k
k)" ( m m) m m m( m m d n k x F k ourk ourk m dela d7 , "The k
f value you need is" ourk9 , m ourk m "On " "Off" k m m ( k k)" ( m m)
m m m( m mc m) mc 5 m( ( u))( ( do)) m m k( ( l))( ( r))( ( f)) NZ m m
c5d m m , m"(no stock)"nx m k k nu( m) nu( m)((( k ))(( k )))((( k ))
) A mag mc mag mag nu( )( ,"Thank you for your order.""Please send a chequ
e for £""##.##" mag% , m nu( m) k m m ( k k)" ( m mPELMAN BASpuuD)()()()()
()I ro r D Pelmanism v.2.0 (Simple version), Dec 1997 by Hilary Phillips'
,L,,R,R,R,R,L,4 pac(4) (,) p() p()%(car"A23456789"()"JQK"32 4 pac( ) ( ) '
F , , , , #P#,,(,,#,#,# d kn#,,#,"Enter number of players (1-6)" n) m m m( m
mc m) mc 5 m( ( u))( ( do)) m mM k( ( l))( ( r))( ( f))( ( s)) C"" ()()5 m,
m m ms( m)( mb) m mb1 mb,, mco mb,( m) dela md ()()2mbl132 30 up0dow2le
8ri1fi47sh21kf7 40 DIM num(mch-p np np np(C)#, npmx np#,,#,"Player" "ent
er your name"() £#,p( )u(,)* , p( )+ p( ) turG p() p() p() p() p() p() w
i"" np p( )v( p(), p(), p(), p(), p(), p()) wiwi( )# , "The winner"v (wi)
" is "p((wi))"." "s are" (wi) p(((wi, ,)))g#,,#,"Press P to play again, Q
to quit"()"" "P" "Q"(C) "P" 2 N -#, ,#,()"Dealing..."() 4 ro co cde(E )
( ro, co) pac( cde) pac( cde) pac( ) co cde(E() ) ( ro, co) pac( cde1000
kp0md1mz0 1001 WHILE (kp AND kf)0 1002 WHILE (2mp AND mf)0 OR mz 1003 mz0GOS
UB 1010mp(mp+mch+md) MOD mchGOSUB 1010 1004 WEND 1005 md(INKEY(up)-1)-(INKEY(d
ow)-1)mzmd 1006 kp-(INKEY(le)-1)-2*(INKEY(ri)-1)-4*(INKEY(fi)-1) 1007 WEND 10
08 WHILE INKEY$""WEND 1009 RETURN 1010 PRINT CHR$(23)+CHR$(1) 1011 MOVE mx,my
-mp*msp+(md-1)*(mbh-2) 1012 FOR mc1 TO mbh/2 1013 DRAWR mbl,0,mcolMOVER -mbl,-
2-(md-1)*4 1014 FOR delay0 TO mdeNEXT 1015 NEXT 1016 PRINT CHR$(23)+CHR$() pa
c( cde) pac( ) . ro co r c Gmu"" r ro c co cardse carmu"nother" 1 ro r c
o c & car cardse 4 X4#,,#,"They match! Well done "p( tur)"."() dela V
( ro, co) ro r co c ( ro, co) PH p( tur) p( tur) , tur0) 1017 RETURN r%%ay0 TO
mdeNEXT 1015 NEXT 1016 PRINT CHR$(23)+CHR$(0) N 7E# x0yxw# x y# x
!x8xw# x -!6#n#f#"#62-*w# 82BC2JB!! #2CEBM!# BThere is no point using this pr
ogram if you have a side switch fitted."bF"WARNING - the contents of the disc in
drive A will be overwritten by this program."QP"This program may be freely
distributed provided that it is not altered."Zhd"Put disc to copy from in drive
B.""Put disc to copy to in drive A.""Press any key to copy..."n C"" C""#xBCOP,t
rac,eW e "Error"e"when copying track"trac "Copying complete"#Programmers' Pat
ch 10 - WACCI 119, Feb 1998, p. 17-18 PROGRAMMERS' PATCH 10 By Matthew P
hillips This month in Programmers' Patch we are going to start a short s
eries on MIDI programming. Although there have been many reviews of MIDI eq
uipment for the Amstrad in magazines over the years, there has been very lit
tle on how to program your CPC to control MIDI equipment. This month also
sees the first anniversary of the Programmers' Patch series, and if the rev
iews in las d+ e "Missing address mark.". e "Disc is write protected."
- e "Cannot find the sector."6 e "Disc missing or drive not ready."% e
"Overrun error."" e "Data error."ide.bin",&9000gpbuff%0CALL &9000,gpbuff% 2
0 track%0er%0 30 MODE 2 40 PRINT"BSide v 1.0 by Matth#xBCOP,trac,eW e "Error"
e"when copying track"trac "Copying complete" p( tur)#,,#,"They don't match!
"() dela I ro r co c tur( tur np)F#,,#,"Choose a"mu" card, "p( tur)"."()
Kk"" (k() k()) k( )k(C)/ k( ) ( ro, co) 3 k() ro( ro) + k() ro( ro)
- k() co( co) + k(98 sectbuff08000h initialisation routine to be calle
d with CALL &9000 AORG 09000h LD L,(IX+0) LD H,(IX+1) LD DE,gpbuff LD (HL
),E INC HL LD (HL),D LD BC,jumps LD HL,worksp CALL 0BCD1h find far addre
sses LD IX,faraddrs LD HL,messes farfindloop LD A,(HL) OR A RET Z PUSH HL
CALL 0BCD4h LD (IX+0),L LD (IX+1),H LD (IX+2),C INC IX INC IX INC IX POP
HL INC HL JR farfindloop stores for RSX commands that are searched for, t
erminated by a zero byte messes DEFB 081h) co( co) sui ( ro, co) car (
ro, co) pcow(, sui )R co, ro pco (car, car,)( sui)5 co, ro ()()) co,
ro " "e ro r co c co, ro ()()()()()()I ro r co c ( ro, co) ,7
6,0 30 BSIDE BIN3!8!-!*utq####BBCOP!x"nf"#6+2wWECbGPR2R2*V!G!B!B'2*( CZ#Copyi
ng track *uG(0Zx0Z!#G7y!+o(0zo( 7fBSIDE BASpB"Data error."ide.bin",&9000gpbuff
%0CALL &9000,8 "bside.bin",gpbuf ,gpbuftrace 7("BSide v 1.0 by Matthew Phillips
, September 1998"2"This program is for use by those with a 3.5"(")" disc drive w
hich has no side switchfitted. If the 3.5"(")" drive is connected as drive B, t
his program will copy the second side of the disc in drive B to drive A."P" !N
!!!!!!!!! music! For instance, if you have two computers with MIDI interface
s, then you can use MIDI to get the computers to transfer any kind of data b
etween them. With suitable software, you can edit a piece of music
on your computer, and then use MIDI to instruct your keyboard to play i
t for you. Some editors use conventional musical notation, others opera
te more like a sequencer. More advanced software enables you to play
music on your keyboard while the comts and some types of computer come
with MIDI capabilities built in. The Amstrad unfortunately is not one of t
hem. MIDI INTERFACES FOR THE CPC To use your Amstrad to control MID
I instruments you will need a MIDI interface, which plugs into the expans
ion port and provides the necessary electronics and the MIDI sockets. The
re were several different makes of interface produced for the CPC, and w
hile they all had much the same capability in terms of hardware, tputer r
ecords it in memory for saving or editing. Even without editing software,
you can use MIDI to get more out of your keyboard. For example Stephen'
s Yamaha PSS-680 keyboard has a custom drummer for designing drum sequen
ces, but it can only remember a few at a time. Using MIDI we can transmit
the drum memory to the computer and save it to disc for future use. It can
then be loaded and sent back to the keyboard. WHAT ABOUT THE PROGR
AMMING Well, since the software that came with each one was very differ
ent and varied in quality. The main interfaces are the EMR interface, the
DHCP interface, and the RAM Music Machine, which also included a sampler. B
ecause the interfaces used different port addresses, software written for
one will not work on the other makes. There has however been some softw
are written such as the Foundation Step-Time Sequencer which can be conf
igured to work on all three interfaces. If yhis is Programmers' Patc
h we had better do some programming. You will probably find that your inte
rface manual says very little about how to program the interface yourself.
I have to admit that much of the programming information in this article
was found by disassembling the machine code for the Foundation Step-
Time Sequencer. Whether it is strictly speaking legitimate to do this I
am not sure, but in an ideal world these details would have been provide
d in theou are interested in music and have a suitable MIDI instrument then it
would be well worth trying to get a MIDI interface. You can produce
pretty good results even with the CPC. Though it is quite hard to obtain
Amstrad gear now, there must be quite a lot of it about and you may find
it turning up at car boot sales from time to time. It might even be worth p
lacing an ad in your local newspaper asking for Amstrad kit, or of course an
ad in WACCI. I obtained my RAM Mus interface manuals. It seems that
the three main interfaces for the Amstrad use either the same or a very
similar chip to handle the MIDI channel. The RAM Music Machine uses a M
otorola 6850 ACIA chip, and the data sheet for this chip would be quite us
eful. The most important information is the port numbers for the dif
ferent interfaces. Table 1 gives you all you need to know for the three
main MIDI interfaces for the Amstrad. If anyone has a diffeic Mach
ine in 1990 when another WACCI member spotted them being sold off cheap in B
arrow-in-Furness. If you are good with a soldering iron, I have instructio
ns on how to build your own MIDI interface if anyone is good enough at Germa
n to follow them. You will also need a MIDI lead to connect your CPC to th
e MIDI instrument, but these are easily obtained in music shops. SO WH
AT CAN YOU DO WITH MIDI There are all sorts of applications for MIDI, and n
ot all of them involve t 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 inspi
ration for subheads this month... SO WHAT IS MIDI THEN I suppose w
e ought to start with the obligatory explanation that MIDI stands for M
usical Instrument Digital Interface, and is a standard for control and c
ommunication developed by the major keyboard manufacturers. All modern key
boards (except the cheaper models) have MIDI socke "N"""""""""starts with
8 instead of 9. We have to supply the pitch of the note we want to turn
off, as we could have several different notes playing at once, all on the
same channel. The velocity is used in some types of instrument noise to
determine how the note is silenced. The BASIC listing puts all that togeth
er in a simple program that plays a single Middle C. It is set up for t
he RAM Music Machine, but you can adapt it for the other interfaces by ch
anging the values were sent on channel 10, while the keyboard would be list
ening out on channel 1. The way these channels are determined is not by h
ow the boxes are plugged together. Instead you select the channel by us
ing the controls on the drum box or keyboard. In fact most modern keyboard
s and voice boxes will default to listening out on all channels at once.
Thus with just one keyboard you can send a command out on channel 1 to ch
oose a violin noise, and ask channel 2 to be a rent type of interface, I
would be very interested to know. SENDING MIDI DATA The easiest opera
tion is sending data to the MIDI devices attached to the interface. You ca
n in fact do this entirely from BASIC, and I will present it in this
form to start with. Better results can be achieved with a spot of machi
ne code of course. First we need to reset the interface and get it read
y for sending data. On the EMR interface, this is done with OUT &F8F
2,piano. Then any Note On events sent out on channel 1 will be played by y
our keyboard with the violin noise, and notes on channel 2 will be played wi
th the piano noise. To turn a note on, we transmit three bytes in sequence
&9x pitch velocity The first is the command byte, and &9x m
eans Note On, where x is the channel number from 0 to F in hexadecimal.
Did I say the channels were numbered from 1 to 16 Yes, well unlike com
puter scientists, musicians 3OUT &F8F2,&16 The DHCP interface is done the
same way but with &F8E0 (the address of the DHCP's control port) instead of
&F8F2 in each case. The RAM Music Machine is slightly different, as t
he second byte sent should be &15 instead of &16 OUT &F8EC,3OUT &F8
EC,&15 Once that is done, we can transmit the data. This entails waitin
g until bit 2 is set on the status port, and then sending the byte
to be transmitted to the data write port. Time for start counting at o
ne, so that is how the channels are always described, but as far as the co
mputer is concerned they are numbered 0 to 15 (or 0 to F in hex). Pitc
h is how high the note is, and is a value from 0 to 127. Middle C is 60, C
sharp is 61, and so on. Velocity is the MIDI jargon term for how loud t
he note is (think of hitting a piano key), and also ranges from 0 (silent
) to 127 (loudest). So to start a Middle C playing on channel 1 at medium v
olume, wea subroutine 100 WHILE (INP(status) AND 2)0WEND 110 OUT dataw
rite,d 120 RETURN At the start of your program you should set th
e variables status and datawrite according to which interface you are usin
g. To send a byte to the MIDI interface, all you do is put the value you w
ant to send in d and GOSUB 100. Line 100 waits until the interface is
ready to transmit a byte, and then line 110 sends it. MIDI NOTE COMMAN
DS Of course, you also need to kn would transmit the following bytes
&90, 60, 64 Notice that only the first one is written in hex the
other two are decimal. The note will continue playing until we tell
it to stop. Of course with some instruments, such as piano, it will die a
way to nothing eventually, but with an organ noise it will keep going. To t
urn it off, we transmit a Note Off event &8x pitch velocity
This is very similar to Note On, except that the command byte ow what data t
o transmit. Next month we will go into this more deeply, but for now we wil
l look at the commands to turn notes on and off. MIDI commands to deal
with notes are transmitted on "channels". There are sixteen channels, numb
ered 1 to 16, and each of these could correspond to a different MIDI device
. For example, you might have a drum box on channel 10, and a keyboa
rd on channel 1. The drum box would only respond to Note On and Note Off e
vents if they #N######### starting a Middle C on Channel 1 would be done l
ike this SEND,&90,60,64 and to turn it off you would do the same b
ut with &80 instead of &90. MESSAGE PARLOUR Perhaps it is time to expl
ain a bit more about the different MIDI messages available. No Well, if yo
u would rather I cover it next month then you will have to get out the scis
sors and paste and make a mess of your WACCI. MIDI messages are made up of
status bytes and data bytes. The status byte tells us what kind of messag
e it is, and the data bytes fill in the details. Status bytes are alw
ays between 128 and 255, and data bytes are always less than 128. It i
s easiest to think of status bytes in hexadecimal. The following tabl
e lists all the types of message &8x Note off (2) &9x Note
on (2) &Ax Polyphonic key pressure (2) &Bx Control change (
2) &Cx Programme change (1) &Dx Overall key pressure (1)
&Ex #Programmers' Patch 11 - WACCI 120, Mar/Apr 1998, p. 16-18 PROGRAMME
RS' PATCH 11 By Matthew Phillips Continuing our look at programming
MIDI interfaces, this month we will find out how to select instruments a
nd use various other MIDI commands. Next month we might even manage a progr
am that actually plays a tune... Last time we used a piece of BASIC to
control the MIDI interface. This month we have printed another listing whi
ch uses machine code to do the sam Pitch bend (2) &Fx System m
essages The number in brackets is the number of data bytes that must fo
llow for that status byte. The "x" represents the second hex digit, or nybb
le, and in most cases determines the channel number, 0 to F referring to ch
annels 1 to 16. As I explained last month, different channels might ref
er to different pieces of MIDI equipment, or on a polyphonic keyboard or v
oice box can be used to distinguish between several different e job.
Listing 1 is a piece of BASIC which installs a couple of RSX commands, an
d Listing 2 is the assembly language for the RSXs. They are saved on the di
sc as SEND.BAS and SEND.ASM To use the RSX commands, type in Listing 1 a
nd run it. If you have made any mistakes 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 in lines 10 and 30. It is saved on disc as MIDI1.BAS
OVER TO YOU Well, that's your lot until March! In the mean time h
ave a go at instructing your keyboard to play a tune, and experiment wit
h different channel numbers - you might even find that one produces d
rum noises instead of notes. TABLE 1
RAM EMR DHCP status (read only) &F8EE &F8F2 &F8E0
control (write only) &F8EC &F8F2 &F8 - RAM Music Machine CHOUT,
1 - EMR interface CHOUT,2 - DHCP interface The CHOUT command mak
es the necessary adjustments to ensure that the correct port addresses
are used, and also sets the MIDI interface to be ready to send data.
Next you can use the SEND command to send instructions to MIDI
instruments. The SEND RSX takes as many arguments as you like, and they ar
e sent out via the MIDI interface in order. Last month's example of E0
data read (read only) &F8EF &F8F3 &F8E1 data write (write only)
&F8ED &F8F3 &F8E1 10 status&F8EEcontrol&F8ECdatawrite&F8ED 20
OUT control,3 30 OUT control,&15REM change to &16 for EMR and DHCP 40
FOR x0 TO 2READ dGOSUB 100NEXT 50 FOR x0 TO 5000NEXT 60 FOR x0 TO 2R
EAD dGOSUB 100NEXT 70 END 80 DATA &90,60,64,&80,60,0 100 WHILE (IN
P(status) AND 2)0WEND 110 OUT datawrite,d 120 RETURN This month
in Pro $N$$$$$$$$$instruments played on the same piece of MIDI equipment.
The status byte &90 would be a Note On event on channel 1, and &81 would
be a Note Off on channel 2. The only exception in fact is &Fx, the system
messages, which affect all channels at once. Here the "x" distinguishes
between different kinds of system message instead. ONE MAN BAND The
next most useful MIDI message after Note On and Note Off is &Cx, Progr
amme Change. This is used to select what instrumen one we sent, that is another
byte of &90. Of course, you can put in those &90 bytes if you like, and i
f you are just sending MIDI data you do not really need to know about runnin
g status. If you are receiving data from the keyboard though, you will
have to cope with it. When I first started experimenting with recording
data from a keyboard, I did not know about running status, so I thought
there was something wrong with my interface! You are also allowed to
turt noise to use for the notes on a channel. It takes one data byte as a
parameter, allowing you to choose from 128 different instruments nu
mbered 0 to 127. Unfortunately different types of MIDI keyboard use di
fferent numbers to select a violin, say. Some keyboards follow a code cal
led General MIDI, and to select a violin on channel 1 you would do S
END,&C0,41 I am guessing a bit here, as it might not be a violin, b
ut it would certainly be a stn a note off using a Note On event with a
velocity of zero SEND,&90,60,0 would turn off a Middle C pla
ying on channel 1. When you combine this with running status, you can
play long pieces on one channel without sending any status bytes apart f
rom the first Note On. AFTER EFFECTS Getting back to the status codes,
if you want to change the volume of a note after it has started, you ne
ed the services of &Ax, Polyphonic Key Pressure (or afterring instrument.
If your keyboard does not conform to General MIDI then there may be a li
st of the numbers in your manual or on the keyboard itself. After tha
t, SEND,&90,69,64 would play the A above Middle C (known as Internation
al A) using the violin noise. If you then did SEND,&C1,57,&91,60,64
it would select a brass instrument on channel 2 and start playing Middle
C. To turn the notes off, you would then do SEND,&80,69,0 (for the vi
olin) touch). This takes two data bytes first the pitch of the not
e concerned, secondly the new pressure (or volume) value. Obviously
with some instruments, like piano, you cannot change the volume of a note
once the key has been struck, and some keyboards will take account of
this. Less expensive models of keyboard do not implement aftertouch a
t all. Status byte &Dx, Overall Key Pressure, works in a similar way, but
applies to all notes on the channel. SEND,&81,60,0 (for the brass) O
n a polyphonic keyboard you can have several notes sounding at once even on
the same channel, so you could start several violin notes at once on cha
nnel 1 SEND,&90,60,40,&90,64,40,&90,67,40 and then turn them off
one by one with the appropriate &80 Note Off events. RUNNING COM
MENTARY Before we look at the other status codes, it seems like a good po
int to mention "running status". We have just turned on three n It on
ly needs one data byte, the new pressure value. URANIUM ORE Pi
tch Bend, &Ex, is for varying the pitch of notes that are playing. It is
followed by two data bytes which are put together to give a "modulation valu
e", ranging from 0 to 16383. If the modulation value was m, then the two d
ata bytes are calculated as follows byte1m MOD 128 byte2m128
A modulation value of 8192 is the centre setting, which means that the
pitches of the noteotes, each by sending the status byte of &90 followed
by two bytes of data. We could have also done it like this SEND,&9
0,60,40,64,40,67,40 After the volume byte of 40 for the first note, inste
ad of the &90 status byte we have gone straight on to the pitch data
for the next note. Because data bytes are all less than 128, the pitch of
64 must be a data byte not a status byte, so MIDI equipment assumes that t
he missing status code is the same as the last %N%%%%%%%%%220 DATA 9D28F621
319D18F14FCB01064D4 230 DATA 00DD0947DD2BDD2BDD7E00C555D 240 DATA CD229DC110
F2C90000000000418 LISTING 2 Send version 2.00, 11/5/1997
designed to be assembled with ZMAC initialise RSXs by CALL &9D00
AORG 9D00h initialise LD BC,rsxtab L
D HL,wrksp JP 0BCD1h rsxtab DEFW names
JP send JP chout names DEFB "SEN","D
"+128 LD A,(IX+0) PUSH BC
CALL jmpmidisend POP BC DJNZ s
endloop RET 8 PROGRAMMERS' PATCH 11 By Matthew Phil
lips Continuing ou LD HL,DHCPblocks JR cop
yblocks send LD C,A RLC C
LD B,0 ADD IX,BC LD B,A sendloop
DEC IX DEC IX DEFB "CHOU","T"+128
DEFB 0 wrksp DEFS 4 jumpblocks jmpreset
JP ramreset jmpmidisend JP ramsend RAMblocks JP ramreset
JP ramsend EMRblocks JP emrreset
JP emrsend DHCPblocks JP dhcpreset JP dhcpsend
ramreset LD BC,0F8ECh LD A,3 O
UT (C),A LD A,15h OUT s will not be
altered. Giving smaller or larger modulation values slightly changes the
pitch of the notes playing on that channel. You would have to send quite
a lot of pitch bend messages to achieve any useful effect like vibrato.
HERE WE ARE AGAIN Yes, we're drawing to the end of another article. We
have not yet covered all the MIDI status codes, but the most important ones
are out of the way. If you are really getting into this, why not pop
down to your (C),A RET emrreset LD BC,0F8F2h
ehrcommon LD A,3 OUT (C),A LD A,1
6h OUT (C),A RET dhcpreset LD
BC,0F8E0h JR ehrcommon ramsend LD BC,0F8EEh
PUSH AF ramslp IN A,(C) AND 2
JR Z,ramslp POP AF D
EC C OUT (C),A local library and see what books th
ey have on MIDI I will try to compile a list of good ones to look out f
or to be printed with next month's article. LISTING 1 10 SYMBOL AFTE
R 256MEMORY &9CFF 20 RESTORE 100er0addrHIMEM+1 30 FOR i%0 TO 14READ cod$chk%
0 40 FOR j%0 TO 11a%VAL("&"+MID$(cod$,j%*2+1,2)) 50 POKE addr,a%chk%chk%+a%a
ddraddr+1NEXT 60 IF chk%VAL("&"+RIGHT$(cod$,3)) THEN PRINT"Error in line"i%*10
+100er-1 70 NEXTIF er THEN END 80 CALL HIMEM+ RET emrsend
LD BC,0F8F2h ehscommon PUSH AF emrslp IN A,(C)
AND 2 JR Z,emrslp POP AF
INC C OUT (C),A RET
dhcpsend LD BC,0F8E0h JR ehscommon chout
CP 1 RET NZ choutjp2 LD A,(IX+0)
LD DE,jumpblocks LD BC,EMRblocks-RAMblocks 1 9
0 PRINT"CHOUT and SEND installed." 100 DATA 01099D211B9DC3D1BC119DC3541 110
DATA 989DC3779D53454EC443484F590 120 DATA 55D40000000000C3379DC3543D7 130 DA
TA 9DC3379DC3549DC3439DC3636B1 140 DATA 9DC34F9DC3729D01ECF83E03644 150 DATA
ED793E15ED79C901F2F83E03614 160 DATA ED793E16ED79C901E0F818F26CC 170 DATA 0
1EEF8F5ED78E60228FAF10D749 180 DATA ED79C901F2F8F5ED78E60228784 190 DATA FAF
10CED79C901E0F818EFFE804 200 DATA 01C0DD7E00111F9D01060021311 210 DATA 259DB
72004EDB018923D212B46D LD HL,RAMblocks
OR A JR NZ,notRAM copyblocks LDIR
JR jmpreset notRAM DEC A LD HL,EMRblocks
JR Z,copyblocks LD HL,DHCPblocks
JR copyblocks send LD C,A RLC C
LD B,0 ADD IX,BC LD B,A
sendloop DEC IX DEC IX &N&&&&&&&&&SEND BASpLL
064D4" 00DD0947DD2BDD2BDD7E00C555D" CD229DC110F2C d e addB$ coch4( ("&"
(co,,))2 add,chch add addI ch("&"y(co,)) "Error in line" d eF e P B#Z"CHOUT
and SEND installed.""d 01099D211B9DC3D1BC119DC3541"n 989DC3779D53X+0) LD DE,jum
pblocks LD BC,EMRblocks-RAMblocks LD HL,RAMblocks OR A JR NZ,notRAM copyblo
cksLDIR JR jmpreset notRAMDEC A LD HL,EMRblocks JR Z,copyblocks LD HL,DHCPb
locks JR copyblocks sendLD C,A RLC C LD B,0 ADD IX,BC LD B,A sendloopDE
C IX DEC IX LD A,(IX+0) PUSH BC CALL jmpmidisend POP BC DJNZ sendloop RET
$$$00, 11/5/1997 designed to be assembled with ZMAC initialise RSXs by
CALL &9D00 AORG 9D00h initiali454EC443484F590"x 55D40000000000C3379DC3543
D7" 9DC3379DC3549DC3439DC3636B1" 9DC34F9DC3729D01ECF83E03644" ED793E15ED79C901F2
F83E03614" ED793E16ED79C901E0F818F26CC" 01EEF8F5ED78E60228FAF10D749" ED79C901F2F
8F5ED78E60228784" FAF10CED79C901E0F818EFFE804" 01C0DD7E00111F9D01060021311" 259D
B72004EDB018923D212B46D" 9D28F621319D18F14FCB01064D4" 00DD0947DD2BDD2BDD7E00C555
D" CD229DC110F2C900000000004180 TO 14READ cod$chk%0 40 FOR j%0 TO 11a%VALcle 18
SCAN464.BASRSX to scan for 464-unfriendly BASIC (see article 13) SCAN464.BINb
inary file for the above SCAN6128.BASversion of SCAN464 to run on BASIC 1.1 mac
hines SCAN6128.BINbinary file for the above TUNE.BASprogram to play a tune fro
m article 12 ---- * See "Blast from the Past", WACCI 118, Jan 1998, p. 27-29
. nd Hilary Phillips The Programmers' Patch don published in WACCI AI7.LOGA
I in Logo - an improved version using property lists LISTEX.BASexample linked l
ist from artiMIDI1 BASp--Wu) )n datawrit, x 20 OUT contr2 statu contro data
writ contro,6 contro, change to &16 for EMR and DHCP ( d2 dFP
&90,60,64,&80,60,0d (( statu) )n datawrit, x 20 OUT control,3 30 OUT control
,&15REM change to &16 for EMR and DHCP 40 FOR xSend version 2.00, 11/5/1997 de
signed to be assembled with ZMAC initialise RSXs by CALL &9D00 AORG 9D00h
initialise LD BC,rsxtab LD HL,wrksp JP 0BCD1h rsxtabDEFW names JP send J
P chout namesDEFB "SEN","D"+128 DEFB "CHOU","T"+128 DEFB 0 wrkspDEFS 4
jumpblocks jmpresetJP ramreset jmpmidisendJP ramsend RAMblocksJP ramreset
JP ramsend EMRblocksJP emrreset JP emrsend DHCPblocksJP dhcpreset JP dhcpsen
d ramresetLD BC,0F8ECh LD A,3 OUT (C),A LD A,15h OUT (C),A RET emrres
etLD BC,0F8F2h ehrcommonLD A,3 OUT (C),A LD A,16h OUT (C),A RET dhcprese
tLD BC,0F8E0h JR ehrcommon ramsendLD BC,0F8EEh PUSH AF ramslpIN A,(C) AND
2 JR Z,ramslp POP AF DEC C OUT (C),A RET emrsendLD BC,0F8F2h ehscommon
PUSH AF emrslpIN A,(C) AND 2 JR Z,emrslp POP AF INC C OUT (C),A RET dh
cpsendLD BC,0F8E0h JR ehscommon choutCP 1 RET NZ choutjp2LD A,(I 'N''''''
'''