Firmware Guide (UK) (Disk 1 face 1) (19xx) [UTILITAIRE].dsk
HexaDumpAscii only
000000:  45 58 54 45 4E 44 45 44 20 43 50 43 20 44 53 4B    EXTENDED CPC DSK
000010:  20 46 69 6C 65 0D 0A 44 69 73 6B 2D 49 6E 66 6F     File..Disk-Info
000020:  0D 0A 53 41 4D 64 69 73 6B 31 32 30 34 31 37 00    ..SAMdisk120417.
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 01 00 00    Track-Info......
000110:  00 00 00 00 02 09 50 E5 00 00 C1 02 00 00 00 02    ......P.........
000120:  00 00 C2 02 00 00 00 02 00 00 C3 02 00 00 00 02    ................
000130:  00 00 C4 02 00 00 00 02 00 00 C5 02 00 00 00 02    ................
000140:  00 00 C6 02 00 00 00 02 00 00 C7 02 00 00 00 02    ................
000150:  00 00 C8 02 00 00 00 02 00 00 C9 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 43 48 41 50 2D 31 20 20 D0 31 20 00 00 00 76    .CHAP-1  .1 ...v
000210:  02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 00    ................
000220:  00 43 48 41 50 2D 31 20 20 D0 32 20 00 00 00 64    .CHAP-1  .2 ...d
000230:  11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 00 00 00    ................
000240:  00 43 48 41 50 2D 32 20 20 D0 31 20 00 00 00 80    .CHAP-2  .1 ....
000250:  26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35    &'()*+,-./012345
000260:  00 43 48 41 50 2D 32 20 20 D0 31 20 01 00 00 06    .CHAP-2  .1 ....
000270:  36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    6...............
000280:  00 43 48 41 50 2D 32 20 20 D0 32 20 00 00 00 18    .CHAP-2  .2 ....
000290:  37 38 39 00 00 00 00 00 00 00 00 00 00 00 00 00    789.............
0002A0:  00 43 48 41 50 2D 33 20 20 A0 20 20 00 00 00 7A    .CHAP-3  .  ...z
0002B0:  3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49    :;<=>?@ABCDEFGHI
0002C0:  00 43 48 41 50 2D 34 20 20 D0 31 20 00 00 00 80    .CHAP-4  .1 ....
0002D0:  4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59    JKLMNOPQRSTUVWXY
0002E0:  00 43 48 41 50 2D 34 20 20 D0 31 20 01 00 00 01    .CHAP-4  .1 ....
0002F0:  5A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    Z...............
000300:  00 43 48 41 50 2D 34 20 20 D0 32 20 00 00 00 0C    .CHAP-4  .2 ....
000310:  5B 5C 00 00 00 00 00 00 00 00 00 00 00 00 00 00    [\..............
000320:  00 43 48 41 50 2D 35 20 20 A0 20 20 00 00 00 73    .CHAP-5  .  ...s
000330:  5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 00    ]^_`abcdefghijk.
000340:  00 43 48 41 50 2D 36 20 20 A0 20 20 00 00 00 6C    .CHAP-6  .  ...l
000350:  6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 00 00    lmnopqrstuvwxy..
000360:  00 43 48 41 50 2D 37 20 20 A0 20 20 00 00 00 72    .CHAP-7  .  ...r
000370:  7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 00    z{|}~...........
000380:  00 43 48 41 50 2D 38 20 20 D0 31 20 00 00 00 73    .CHAP-8  .1 ...s
000390:  89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 00    ................
0003A0:  00 43 48 41 50 2D 38 20 20 D0 32 20 00 00 00 69    .CHAP-8  .2 ...i
0003B0:  98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 00 00    ...........£....
0003C0:  00 43 4F 4E 54 45 4E 54 53 A0 20 20 00 00 00 2D    .CONTENTS.  ...-
0003D0:  20 21 22 23 24 25 00 00 00 00 00 00 00 00 00 00     !"#$%..........
0003E0:  00 44 49 53 43 20 20 20 20 C2 41 53 00 00 00 02    .DISC    .AS....
0003F0:  A6 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000400:  00 44 55 4D 50 20 20 20 20 C2 C9 4E 00 00 00 09    .DUMP    ..N....
000410:  A7 A8 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000420:  00 50 52 45 46 41 43 45 20 A0 20 20 00 00 00 0D    .PREFACE .  ....
000430:  1E 1F 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000440:  00 50 54 49 54 4C 45 20 20 C2 41 53 00 00 00 03    .PTITLE  .AS....
000450:  A9 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000460:  00 53 54 41 52 54 20 20 20 C2 C1 53 00 00 00 3C    .START   ..S...<
000470:  AC AD AE AF B0 B1 B2 B3 00 00 00 00 00 00 00 00    ................
000480:  00 54 49 54 4C 45 20 20 20 C2 C9 4E 00 00 00 10    .TITLE   ..N....
000490:  AA AB 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0006A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0006B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0006C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0006D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0006E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0006F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0007A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0007B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0007C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0007D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0007E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0007F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0008A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0008B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0008C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0008D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0008E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0008F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0009A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0009B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0009C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0009D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0009E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0009F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A00:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31    ........       1
000A10:  20 54 68 65 20 46 69 72 6D 77 61 72 65 0D 0A 20     The Firmware.. 
000A20:  20 20 20 20 20 20 54 68 69 73 20 6D 61 6E 75 61          This manua
000A30:  6C 20 64 65 73 63 72 69 62 65 73 20 74 68 65 20    l describes the 
000A40:  66 69 72 6D 77 61 72 65 20 6F 66 20 20 74 68 65    firmware of  the
000A50:  20 20 41 6D 73 74 72 61 64 20 20 43 50 43 20 20      Amstrad  CPC  
000A60:  34 36 34 2F 36 36 34 2F 36 31 32 38 0D 0A 20 20    464/664/6128..  
000A70:  20 20 20 20 20 6D 69 63 72 6F 63 6F 6D 70 75 74         microcomput
000A80:  65 72 73 2E 20 49 74 20 61 6C 73 6F 20 64 65 73    ers. It also des
000A90:  63 72 69 62 65 73 20 74 68 65 20 64 69 73 63 20    cribes the disc 
000AA0:  6F 70 65 72 61 74 69 6E 67 20 73 79 73 74 65 6D    operating system
000AB0:  73 20 28 43 50 2F 4D 20 61 6E 64 0D 0A 20 20 20    s (CP/M and..   
000AC0:  20 20 20 20 41 4D 53 44 4F 53 29 2E 20 49 74 20        AMSDOS). It 
000AD0:  64 6F 65 73 20 6E 6F 74 20 64 65 73 63 72 69 62    does not describ
000AE0:  65 20 65 69 74 68 65 72 20 74 68 65 20 42 41 53    e either the BAS
000AF0:  49 43 20 6C 61 6E 67 75 61 67 65 20 73 75 70 70    IC language supp
000B00:  6C 69 65 64 20 20 77 69 74 68 0D 0A 20 20 20 20    lied  with..    
000B10:  20 20 20 74 68 65 20 73 79 73 74 65 6D 20 6F 72       the system or
000B20:  20 43 50 2F 4D 2E 20 54 68 65 20 6D 61 6E 75 61     CP/M. The manua
000B30:  6C 20 64 6F 65 73 20 64 65 73 63 72 69 62 65 20    l does describe 
000B40:  63 65 72 74 61 69 6E 20 20 61 73 70 65 63 74 73    certain  aspects
000B50:  20 20 6F 66 20 20 74 68 65 0D 0A 20 20 20 20 20      of  the..     
000B60:  20 20 42 41 53 49 43 20 77 68 65 72 65 20 74 68      BASIC where th
000B70:  65 73 65 20 61 66 66 65 63 74 20 6F 74 68 65 72    ese affect other
000B80:  20 70 72 6F 67 72 61 6D 73 20 61 6E 64 20 69 74     programs and it
000B90:  20 75 73 65 73 20 42 41 53 49 43 20 20 69 6E 20     uses BASIC  in 
000BA0:  20 63 65 72 74 61 69 6E 0D 0A 20 20 20 20 20 20     certain..      
000BB0:  20 65 78 61 6D 70 6C 65 20 70 72 6F 67 72 61 6D     example program
000BC0:  73 20 77 68 65 6E 20 64 65 73 63 72 69 62 69 6E    s when describin
000BD0:  67 20 73 6F 6D 65 20 66 65 61 74 75 72 65 73 20    g some features 
000BE0:  20 6F 66 20 20 74 68 65 20 20 66 69 72 6D 77 61     of  the  firmwa
000BF0:  72 65 2E 20 20 49 74 0D 0A 20 20 20 20 20 20 20    re.  It..       
000C00:  61 6C 73 6F 20 64 65 73 63 72 69 62 65 73 20 68    also describes h
000C10:  6F 77 20 74 6F 20 63 61 6C 6C 20 74 68 65 20 66    ow to call the f
000C20:  69 72 6D 77 61 72 65 20 66 72 6F 6D 20 43 50 2F    irmware from CP/
000C30:  4D 2E 0D 0A 20 20 20 20 20 20 20 54 68 72 65 65    M...       Three
000C40:  20 76 65 72 73 69 6F 6E 73 20 6F 66 20 74 68 65     versions of the
000C50:  20 66 69 72 6D 77 61 72 65 20 61 72 65 20 64 65     firmware are de
000C60:  73 63 72 69 62 65 64 2E 20 56 31 2E 30 20 28 6F    scribed. V1.0 (o
000C70:  6E 20 20 43 50 43 34 36 34 29 2C 20 20 56 31 2E    n  CPC464),  V1.
000C80:  31 0D 0A 20 20 20 20 20 20 20 28 6F 6E 20 43 50    1..       (on CP
000C90:  43 36 36 34 29 20 61 6E 64 20 20 56 31 2E 32 20    C664) and  V1.2 
000CA0:  20 28 6F 6E 20 20 43 50 43 36 31 32 38 29 2E 20     (on  CPC6128). 
000CB0:  20 41 70 61 72 74 20 20 66 72 6F 6D 20 20 73 75     Apart  from  su
000CC0:  70 70 6F 72 74 20 20 66 6F 72 20 20 62 61 6E 6B    pport  for  bank
000CD0:  0D 0A 20 20 20 20 20 20 20 73 77 69 74 63 68 69    ..       switchi
000CE0:  6E 67 20 56 31 2E 31 20 61 6E 64 20 56 31 2E 32    ng V1.1 and V1.2
000CF0:  20 61 72 65 20 69 64 65 6E 74 69 63 61 6C 20 61     are identical a
000D00:  6E 64 20 20 61 72 65 20 20 72 65 66 65 72 72 65    nd  are  referre
000D10:  64 20 20 74 6F 20 20 61 73 20 20 56 31 2E 31 0D    d  to  as  V1.1.
000D20:  0A 20 20 20 20 20 20 20 74 68 72 6F 75 67 68 6F    .       througho
000D30:  75 74 20 74 68 69 73 20 6D 61 6E 75 61 6C 2E 20    ut this manual. 
000D40:  49 74 20 6D 61 79 20 62 65 20 6E 65 63 65 73 73    It may be necess
000D50:  61 72 79 20 66 6F 72 20 61 20 20 70 72 6F 67 72    ary for a  progr
000D60:  61 6D 20 20 74 6F 20 20 64 65 64 75 63 65 0D 0A    am  to  deduce..
000D70:  20 20 20 20 20 20 20 77 68 69 63 68 20 66 69 72           which fir
000D80:  6D 77 61 72 65 20 69 73 20 66 69 74 74 65 64 20    mware is fitted 
000D90:  74 6F 20 74 68 65 20 63 6F 6D 70 75 74 65 72 2C    to the computer,
000DA0:  20 61 6E 64 20 74 68 69 73 20 63 61 6E 20 62 65     and this can be
000DB0:  20 61 63 68 69 65 76 65 64 20 20 62 79 0D 0A 20     achieved  by.. 
000DC0:  20 20 20 20 20 20 69 6E 73 70 65 63 74 69 6E 67          inspecting
000DD0:  20 74 68 65 20 6F 6E 2D 62 6F 61 72 64 20 52 4F     the on-board RO
000DE0:  4D 27 73 20 76 65 72 73 69 6F 6E 20 6E 75 6D 62    M's version numb
000DF0:  65 72 20 28 61 73 20 64 65 73 63 72 69 62 65 64    er (as described
000E00:  20 69 6E 20 20 73 65 63 74 69 6F 6E 0D 0A 20 20     in  section..  
000E10:  20 20 20 20 20 31 30 2E 32 29 20 75 73 69 6E 67         10.2) using
000E20:  20 4B 4C 20 52 4F 4D 20 50 52 4F 42 45 2E 20 54     KL ROM PROBE. T
000E30:  68 69 73 20 77 69 6C 6C 20 72 65 74 75 72 6E 20    his will return 
000E40:  61 20 30 2C 31 20 6F 72 20 32 20 64 65 70 65 6E    a 0,1 or 2 depen
000E50:  64 69 6E 67 20 6F 6E 20 74 68 65 0D 0A 20 20 20    ding on the..   
000E60:  20 20 20 20 76 65 72 73 69 6F 6E 20 6F 66 20 66        version of f
000E70:  69 72 6D 77 61 72 65 2E 0D 0A 0D 0A 20 20 20 20    irmware.....    
000E80:  20 20 20 54 68 65 20 66 69 72 6D 77 61 72 65 20       The firmware 
000E90:  69 73 20 74 68 65 20 70 72 6F 67 72 61 6D 20 74    is the program t
000EA0:  68 61 74 20 72 65 73 69 64 65 73 20 69 6E 20 74    hat resides in t
000EB0:  68 65 20 6C 6F 77 65 72 20 52 4F 4D 20 61 6E 64    he lower ROM and
000EC0:  20 74 68 65 20 64 69 73 63 0D 0A 20 20 20 20 20     the disc..     
000ED0:  20 20 63 6F 6E 74 72 6F 6C 6C 69 6E 67 20 52 4F      controlling RO
000EE0:  4D 20 28 73 65 65 20 73 65 63 74 69 6F 6E 20 20    M (see section  
000EF0:  32 29 2E 20 20 49 74 73 20 20 66 75 6E 63 74 69    2).  Its  functi
000F00:  6F 6E 20 20 69 73 20 20 74 6F 20 20 63 6F 6E 74    on  is  to  cont
000F10:  72 6F 6C 20 20 74 68 65 0D 0A 20 20 20 20 20 20    rol  the..      
000F20:  20 68 61 72 64 77 61 72 65 20 6F 66 20 74 68 65     hardware of the
000F30:  20 63 6F 6D 70 75 74 65 72 20 61 6E 64 20 74 6F     computer and to
000F40:  20 70 72 6F 76 69 64 65 20 75 73 65 66 75 6C 20     provide useful 
000F50:  20 66 61 63 69 6C 69 74 69 65 73 20 20 66 6F 72     facilities  for
000F60:  20 20 6F 74 68 65 72 0D 0A 20 20 20 20 20 20 20      other..       
000F70:  70 72 6F 67 72 61 6D 73 20 74 6F 20 75 73 65 2E    programs to use.
000F80:  20 54 68 69 73 20 61 76 6F 69 64 73 20 65 76 65     This avoids eve
000F90:  72 79 20 70 72 6F 67 72 61 6D 20 77 72 69 74 74    ry program writt
000FA0:  65 6E 20 68 61 76 69 6E 67 20 20 74 6F 20 20 70    en having  to  p
000FB0:  72 6F 76 69 64 65 0D 0A 20 20 20 20 20 20 20 69    rovide..       i
000FC0:  74 73 20 6F 77 6E 20 66 61 63 69 6C 69 74 69 65    ts own facilitie
000FD0:  73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69    s.....       Thi
000FE0:  73 20 6D 61 6E 75 61 6C 20 69 73 20 65 78 70 65    s manual is expe
000FF0:  63 74 65 64 20 74 6F 20 62 65 20 6F 66 20 69 6E    cted to be of in
001000:  74 65 72 65 73 74 20 74 6F 20 61 6E 79 6F 6E 65    terest to anyone
001010:  20 77 68 6F 20 77 6F 75 6C 64 20 6C 69 6B 65 20     who would like 
001020:  20 74 6F 0D 0A 20 20 20 20 20 20 20 6B 6E 6F 77     to..       know
001030:  20 68 6F 77 20 74 68 65 20 73 79 73 74 65 6D 20     how the system 
001040:  77 6F 72 6B 73 2E 20 49 74 20 69 73 20 69 6E 64    works. It is ind
001050:  69 73 70 65 6E 73 61 62 6C 65 20 66 6F 72 20 70    ispensable for p
001060:  72 6F 67 72 61 6D 6D 65 72 73 20 77 72 69 74 69    rogrammers writi
001070:  6E 67 0D 0A 20 20 20 20 20 20 20 6D 61 63 68 69    ng..       machi
001080:  6E 65 20 20 63 6F 64 65 20 20 70 72 6F 67 72 61    ne  code  progra
001090:  6D 73 2C 20 20 70 61 72 74 69 63 75 6C 61 72 6C    ms,  particularl
0010A0:  79 20 20 73 79 73 74 65 6D 20 20 70 72 6F 67 72    y  system  progr
0010B0:  61 6D 73 20 20 28 65 2E 67 2E 20 20 6F 74 68 65    ams  (e.g.  othe
0010C0:  72 0D 0A 20 20 20 20 20 20 20 6C 61 6E 67 75 61    r..       langua
0010D0:  67 65 73 29 20 61 6E 64 20 67 61 6D 65 73 2E 0D    ges) and games..
0010E0:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 69 6E    ...       The in
0010F0:  66 6F 72 6D 61 74 69 6F 6E 20 70 72 65 73 65 6E    formation presen
001100:  74 65 64 20 63 61 6E 20 62 65 20 65 78 74 72 65    ted can be extre
001110:  6D 65 6C 79 20 20 64 65 74 61 69 6C 65 64 2E 20    mely  detailed. 
001120:  20 49 74 20 20 63 6F 76 65 72 73 20 20 74 68 65     It  covers  the
001130:  0D 0A 20 20 20 20 20 20 20 6F 70 65 72 61 74 69    ..       operati
001140:  6F 6E 20 6F 66 20 74 68 65 20 66 69 72 6D 77 61    on of the firmwa
001150:  72 65 20 66 72 6F 6D 20 74 68 65 20 20 6C 6F 77    re from the  low
001160:  65 73 74 20 20 6C 65 76 65 6C 20 20 28 65 2E 67    est  level  (e.g
001170:  2E 20 20 64 72 69 76 69 6E 67 20 20 74 68 65 0D    .  driving  the.
001180:  0A 20 20 20 20 20 20 20 73 6F 75 6E 64 20 63 68    .       sound ch
001190:  69 70 29 20 74 6F 20 74 68 65 20 68 69 67 68 65    ip) to the highe
0011A0:  73 74 20 6C 65 76 65 6C 20 28 65 2E 67 2E 20 72    st level (e.g. r
0011B0:  75 6E 6E 69 6E 67 20 61 20 71 75 65 75 65 20 6F    unning a queue o
0011C0:  66 20 73 6F 75 6E 64 73 29 2E 20 20 49 74 0D 0A    f sounds).  It..
0011D0:  20 20 20 20 20 20 20 69 73 20 6E 6F 74 20 6E 65           is not ne
0011E0:  63 65 73 73 61 72 79 20 74 6F 20 75 6E 64 65 72    cessary to under
0011F0:  73 74 61 6E 64 20 61 6C 6C 20 74 68 65 20 69 6E    stand all the in
001200:  66 6F 72 6D 61 74 69 6F 6E 20 67 69 76 65 6E 20    formation given 
001210:  74 6F 20 62 65 20 61 62 6C 65 20 74 6F 0D 0A 20    to be able to.. 
001220:  20 20 20 20 20 20 75 73 65 20 74 68 65 20 66 69          use the fi
001230:  72 6D 77 61 72 65 2C 20 68 6F 77 65 76 65 72 2C    rmware, however,
001240:  20 61 20 67 6F 6F 64 20 67 72 61 73 70 20 6F 66     a good grasp of
001250:  20 68 6F 77 20 74 68 65 20 73 79 73 74 65 6D 20     how the system 
001260:  20 77 6F 72 6B 73 20 20 77 69 6C 6C 0D 0A 20 20     works  will..  
001270:  20 20 20 20 20 61 69 64 20 74 68 65 20 20 70 72         aid the  pr
001280:  6F 67 72 61 6D 6D 65 72 20 20 69 6E 20 20 73 65    ogrammer  in  se
001290:  6C 65 63 74 69 6E 67 20 20 74 68 65 20 20 6D 6F    lecting  the  mo
0012A0:  73 74 20 20 61 70 70 72 6F 70 72 69 61 74 65 20    st  appropriate 
0012B0:  20 6D 65 74 68 6F 64 20 20 6F 66 0D 0A 20 20 20     method  of..   
0012C0:  20 20 20 20 70 65 72 66 6F 72 6D 69 6E 67 20 61        performing a
0012D0:  20 70 61 72 74 69 63 75 6C 61 72 20 74 61 73 6B     particular task
0012E0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 77 6F 20    .....       Two 
0012F0:  64 69 73 63 20 6F 70 65 72 61 74 69 6E 67 20 73    disc operating s
001300:  79 73 74 65 6D 73 20 61 72 65 20 70 72 6F 76 69    ystems are provi
001310:  64 65 64 3A 20 41 4D 53 44 4F 53 2C 20 77 68 69    ded: AMSDOS, whi
001320:  63 68 20 20 65 6E 61 62 6C 65 73 20 20 42 41 53    ch  enables  BAS
001330:  49 43 0D 0A 20 20 20 20 20 20 20 70 72 6F 67 72    IC..       progr
001340:  61 6D 73 20 74 6F 20 75 73 65 20 64 69 73 63 20    ams to use disc 
001350:  66 69 6C 65 73 20 69 6E 20 6D 75 63 68 20 74 68    files in much th
001360:  65 20 73 61 6D 65 20 77 61 79 20 61 73 20 63 61    e same way as ca
001370:  73 73 65 74 74 65 20 66 69 6C 65 73 3B 20 61 6E    ssette files; an
001380:  64 0D 0A 20 20 20 20 20 20 20 43 50 2F 4D 20 32    d..       CP/M 2
001390:  2E 32 20 74 68 65 20 69 6E 64 75 73 74 72 79 20    .2 the industry 
0013A0:  73 74 61 6E 64 61 72 64 20 6F 70 65 72 61 74 69    standard operati
0013B0:  6E 67 20 20 73 79 73 74 65 6D 20 20 28 43 50 2F    ng  system  (CP/
0013C0:  4D 20 20 50 6C 75 73 20 20 69 6E 20 20 74 68 65    M  Plus  in  the
0013D0:  0D 0A 20 20 20 20 20 20 20 43 50 43 36 31 32 38    ..       CPC6128
0013E0:  2C 20 62 75 74 20 77 65 20 64 6F 20 6E 6F 74 20    , but we do not 
0013F0:  64 69 73 63 75 73 73 20 74 68 65 20 64 69 66 66    discuss the diff
001400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
001410:  01 00 00 00 02 09 50 E5 01 00 C1 02 00 00 00 02    ......P.........
001420:  01 00 C2 02 00 00 00 02 01 00 C3 02 00 00 00 02    ................
001430:  01 00 C4 02 00 00 00 02 01 00 C5 02 00 00 00 02    ................
001440:  01 00 C6 02 00 00 00 02 01 00 C7 02 00 00 00 02    ................
001450:  01 00 C8 02 00 00 00 02 01 00 C9 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:  65 72 65 6E 63 65 73 20 62 65 74 77 65 65 6E 20    erences between 
001510:  74 68 65 20 74 77 6F 20 69 6E 20 74 68 69 73 0D    the two in this.
001520:  0A 20 20 20 20 20 20 20 6D 61 6E 75 61 6C 29 2E    .       manual).
001530:  20 42 6F 74 68 20 41 4D 53 44 4F 53 20 61 6E 64     Both AMSDOS and
001540:  20 43 50 2F 4D 20 75 73 65 20 74 68 65 20 73 61     CP/M use the sa
001550:  6D 65 20 66 69 6C 65 20 73 74 72 75 63 74 75 72    me file structur
001560:  65 20 61 6E 64 20 6D 61 79 20 72 65 61 64 0D 0A    e and may read..
001570:  20 20 20 20 20 20 20 61 6E 64 20 77 72 69 74 65           and write
001580:  20 65 61 63 68 20 6F 74 68 65 72 73 20 66 69 6C     each others fil
001590:  65 27 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 43    e's.....       C
0015A0:  50 2F 4D 20 69 73 20 69 6E 76 6F 6B 65 64 20 66    P/M is invoked f
0015B0:  72 6F 6D 20 42 41 53 49 43 20 62 79 20 74 79 70    rom BASIC by typ
0015C0:  69 6E 67 20 7C 43 50 4D 2E 20 50 61 72 74 20 6F    ing |CPM. Part o
0015D0:  66 20 43 50 2F 4D 20 28 74 68 65 20 20 43 43 50    f CP/M (the  CCP
0015E0:  20 20 61 6E 64 0D 0A 20 20 20 20 20 20 20 42 44      and..       BD
0015F0:  4F 53 29 20 69 73 20 6C 6F 61 64 65 64 20 66 72    OS) is loaded fr
001600:  6F 6D 20 74 68 65 20 64 69 73 63 20 69 6E 20 64    om the disc in d
001610:  72 69 76 65 20 41 3A 2E 20 54 68 65 20 43 50 2F    rive A:. The CP/
001620:  4D 20 20 42 49 4F 53 20 20 72 65 73 69 64 65 73    M  BIOS  resides
001630:  20 20 69 6E 0D 0A 20 20 20 20 20 20 20 74 68 65      in..       the
001640:  20 64 69 73 63 20 52 4F 4D 2E 0D 0A 20 20 20 20     disc ROM...    
001650:  20 20 20 41 4D 53 44 4F 53 20 69 73 20 65 6E 61       AMSDOS is ena
001660:  62 6C 65 64 20 77 68 65 6E 65 76 65 72 20 42 41    bled whenever BA
001670:  53 49 43 20 69 73 20 66 69 72 73 74 20 75 73 65    SIC is first use
001680:  64 2E 20 54 68 69 73 20 20 69 6E 74 65 72 63 65    d. This  interce
001690:  70 74 73 20 20 6D 6F 73 74 0D 0A 20 20 20 20 20    pts  most..     
0016A0:  20 20 6F 66 20 74 68 65 20 63 61 73 73 65 74 74      of the cassett
0016B0:  65 20 66 69 72 6D 77 61 72 65 20 72 6F 75 74 69    e firmware routi
0016C0:  6E 65 73 20 61 6E 64 20 72 65 64 69 72 65 63 74    nes and redirect
0016D0:  73 20 20 74 68 65 6D 20 20 74 6F 20 20 64 69 73    s  them  to  dis
0016E0:  63 2E 20 20 54 68 75 73 0D 0A 20 20 20 20 20 20    c.  Thus..      
0016F0:  20 65 78 69 73 74 69 6E 67 20 42 41 53 49 43 20     existing BASIC 
001700:  70 72 6F 67 72 61 6D 73 20 77 68 69 63 68 20 75    programs which u
001710:  73 65 20 63 61 73 73 65 74 74 65 20 66 69 6C 65    se cassette file
001720:  73 20 63 61 6E 20 20 75 73 65 20 20 64 69 73 63    s can  use  disc
001730:  20 20 66 69 6C 65 73 0D 0A 20 20 20 20 20 20 20      files..       
001740:  77 69 74 68 20 6C 69 74 74 6C 65 20 6F 72 20 6E    with little or n
001750:  6F 20 6D 6F 64 69 66 69 63 61 74 69 6F 6E 2E 20    o modification. 
001760:  20 41 4D 53 44 4F 53 20 20 61 6C 73 6F 20 20 70     AMSDOS  also  p
001770:  72 6F 76 69 64 65 73 20 20 61 20 20 6E 75 6D 62    rovides  a  numb
001780:  65 72 20 20 6F 66 0D 0A 20 20 20 20 20 20 20 65    er  of..       e
001790:  78 74 65 72 6E 61 6C 20 63 6F 6D 6D 61 6E 64 73    xternal commands
0017A0:  20 66 6F 72 20 65 72 61 73 69 6E 67 20 61 6E 64     for erasing and
0017B0:  20 72 65 6E 61 6D 69 6E 67 20 66 69 6C 65 73 20     renaming files 
0017C0:  61 6E 64 20 20 72 65 64 69 72 65 63 74 69 6E 67    and  redirecting
0017D0:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 63 61      the..       ca
0017E0:  73 73 65 74 74 65 20 66 69 72 6D 77 61 72 65 20    ssette firmware 
0017F0:  72 6F 75 74 69 6E 65 73 2E 0D 0A 0D 0A 20 20 20    routines.....   
001800:  20 20 20 20 50 72 6F 76 69 64 65 64 20 77 69 74        Provided wit
001810:  68 20 74 68 65 20 64 69 73 63 20 73 79 73 74 65    h the disc syste
001820:  6D 20 61 72 65 20 61 20 6E 75 6D 62 65 72 20 20    m are a number  
001830:  6F 66 20 20 75 74 69 6C 69 74 79 20 20 70 72 6F    of  utility  pro
001840:  67 72 61 6D 73 20 20 66 6F 72 0D 0A 20 20 20 20    grams  for..    
001850:  20 20 20 66 6F 72 6D 61 74 74 69 6E 67 20 20 61       formatting  a
001860:  6E 64 20 20 63 6F 70 79 69 6E 67 20 20 64 69 73    nd  copying  dis
001870:  63 73 20 20 61 6E 64 20 20 66 6F 72 20 20 63 68    cs  and  for  ch
001880:  61 6E 67 69 6E 67 20 20 20 76 61 72 69 6F 75 73    anging   various
001890:  20 20 20 73 79 73 74 65 6D 0D 0A 20 20 20 20 20       system..     
0018A0:  20 20 70 61 72 61 6D 65 74 65 72 73 2E 20 54 68      parameters. Th
0018B0:  65 73 65 20 61 6C 6C 20 72 75 6E 20 75 6E 64 65    ese all run unde
0018C0:  72 20 43 50 2F 4D 2E 0D 0A 0D 0A 20 20 20 20 20    r CP/M.....     
0018D0:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
0018E0:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
0018F0:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
001900:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
001910:  70 61 67 65 20 31 2E 31 0D 0A 0D 0A 0D 0A 0D 0A    page 1.1........
001920:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 2E 31    ......       1.1
001930:  20 54 68 65 20 48 61 72 64 77 61 72 65 2E 0D 0A     The Hardware...
001940:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 64 69 61    ..       The dia
001950:  67 72 61 6D 20 6F 6E 20 74 68 65 20 66 6F 6C 6C    gram on the foll
001960:  6F 77 69 6E 67 20 70 61 67 65 20 67 69 76 65 73    owing page gives
001970:  20 61 6E 20 69 6E 64 69 63 61 74 69 6F 6E 20 6F     an indication o
001980:  66 20 74 68 65 20 64 69 66 66 65 72 65 6E 74 0D    f the different.
001990:  0A 20 20 20 20 20 20 20 70 69 65 63 65 73 20 6F    .       pieces o
0019A0:  66 20 68 61 72 64 77 61 72 65 20 69 6E 20 74 68    f hardware in th
0019B0:  65 20 73 79 73 74 65 6D 20 61 6E 64 20 68 6F 77    e system and how
0019C0:  20 74 68 65 79 20 63 6F 6E 6E 65 63 74 20 74 6F     they connect to
0019D0:  20 20 65 61 63 68 20 20 6F 74 68 65 72 2E 0D 0A      each  other...
0019E0:  20 20 20 20 20 20 20 46 6F 72 20 6D 6F 72 65 20           For more 
0019F0:  69 6E 66 6F 72 6D 61 74 69 6F 6E 20 6F 6E 20 68    information on h
001A00:  6F 77 20 74 68 65 20 68 61 72 64 77 61 72 65 20    ow the hardware 
001A10:  77 6F 72 6B 73 20 73 65 65 20 20 41 70 70 65 6E    works see  Appen
001A20:  64 69 78 20 20 58 49 49 20 20 61 6E 64 0D 0A 20    dix  XII  and.. 
001A30:  20 20 20 20 20 20 74 68 65 20 72 65 6C 65 76 61          the releva
001A40:  6E 74 20 6D 61 6E 75 66 61 63 74 75 72 65 72 27    nt manufacturer'
001A50:  73 20 64 61 74 61 20 73 68 65 65 74 73 2E 0D 0A    s data sheets...
001A60:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 53    ....       The S
001A70:  79 73 74 65 6D 20 63 65 6E 74 72 65 73 20 61 72    ystem centres ar
001A80:  6F 75 6E 64 20 74 68 65 20 43 50 55 20 28 43 65    ound the CPU (Ce
001A90:  6E 74 72 61 6C 20 50 72 6F 63 65 73 73 69 6E 67    ntral Processing
001AA0:  20 55 6E 69 74 29 20 77 68 69 63 68 20 69 73 20     Unit) which is 
001AB0:  61 0D 0A 20 20 20 20 20 20 20 5A 38 30 41 20 6D    a..       Z80A m
001AC0:  69 63 72 6F 70 72 6F 63 65 73 73 6F 72 20 77 69    icroprocessor wi
001AD0:  74 68 20 61 20 34 4D 48 7A 20 63 6C 6F 63 6B 2E    th a 4MHz clock.
001AE0:  20 4E 65 78 74 20 69 6E 20 69 6D 70 6F 72 74 61     Next in importa
001AF0:  6E 63 65 20 69 73 20 74 68 65 20 20 67 61 74 65    nce is the  gate
001B00:  0D 0A 20 20 20 20 20 20 20 61 72 72 61 79 20 77    ..       array w
001B10:  68 69 63 68 20 63 6F 6E 74 61 69 6E 73 20 20 6D    hich contains  m
001B20:  69 73 63 65 6C 6C 61 6E 65 6F 75 73 20 20 6C 6F    iscellaneous  lo
001B30:  67 69 63 20 20 74 6F 20 20 63 6F 6E 74 72 6F 6C    gic  to  control
001B40:  20 20 6D 75 63 68 20 20 6F 66 20 20 74 68 65 0D      much  of  the.
001B50:  0A 20 20 20 20 20 20 20 73 79 73 74 65 6D 2E 20    .       system. 
001B60:  49 6E 20 70 61 72 74 69 63 75 6C 61 72 2C 20 69    In particular, i
001B70:  74 20 63 6F 6E 74 72 6F 6C 73 20 69 6E 6B 20 63    t controls ink c
001B80:  6F 6C 6F 75 72 73 2C 20 73 63 72 65 65 6E 20 20    olours, screen  
001B90:  6D 6F 64 65 20 20 61 6E 64 20 20 52 4F 4D 0D 0A    mode  and  ROM..
001BA0:  20 20 20 20 20 20 20 65 6E 61 62 6C 69 6E 67 20           enabling 
001BB0:  28 73 65 65 20 73 65 63 74 69 6F 6E 20 31 30 20    (see section 10 
001BC0:  61 6E 64 20 61 70 70 65 6E 64 69 78 20 58 49 49    and appendix XII
001BD0:  29 2E 20 49 6E 20 20 63 6F 6E 6A 75 6E 63 74 69    ). In  conjuncti
001BE0:  6F 6E 20 20 77 69 74 68 20 20 74 68 65 0D 0A 20    on  with  the.. 
001BF0:  20 20 20 20 20 20 43 52 54 43 20 28 43 61 74 68          CRTC (Cath
001C00:  6F 64 65 20 52 61 79 20 54 75 62 65 20 43 6F 6E    ode Ray Tube Con
001C10:  74 72 6F 6C 6C 65 72 29 2C 20 77 68 69 63 68 20    troller), which 
001C20:  69 73 20 61 20 20 36 38 34 35 20 20 63 68 69 70    is a  6845  chip
001C30:  2C 20 20 74 68 65 20 20 67 61 74 65 0D 0A 20 20    ,  the  gate..  
001C40:  20 20 20 20 20 61 72 72 61 79 20 67 65 6E 65 72         array gener
001C50:  61 74 65 20 74 68 65 20 76 69 64 65 6F 20 73 69    ate the video si
001C60:  67 6E 61 6C 20 66 6F 72 20 74 68 65 20 6D 6F 6E    gnal for the mon
001C70:  69 74 6F 72 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    itor.......     
001C80:  20 20 54 68 65 20 50 53 47 20 28 50 72 6F 67 72      The PSG (Progr
001C90:  61 6D 6D 61 62 6C 65 20 53 6F 75 6E 64 20 47 65    ammable Sound Ge
001CA0:  6E 65 72 61 74 6F 72 29 20 69 73 20 61 6E 20 41    nerator) is an A
001CB0:  59 2D 33 2D 38 39 32 2E 20 54 68 69 73 20 20 63    Y-3-892. This  c
001CC0:  68 69 70 20 20 68 61 73 0D 0A 20 20 20 20 20 20    hip  has..      
001CD0:  20 74 68 72 65 65 20 63 68 61 6E 6E 65 6C 73 20     three channels 
001CE0:  6F 66 20 73 6F 75 6E 64 20 67 65 6E 65 72 61 74    of sound generat
001CF0:  6F 72 2C 20 61 20 6E 6F 69 73 65 20 67 65 6E 65    or, a noise gene
001D00:  72 61 74 6F 72 2C 20 65 6E 76 65 6C 6F 70 65 20    rator, envelope 
001D10:  63 6F 6E 74 72 6F 6C 0D 0A 20 20 20 20 20 20 20    control..       
001D20:  66 6F 72 20 65 61 63 68 20 63 68 61 6E 6E 65 6C    for each channel
001D30:  20 61 6E 64 20 20 61 6E 20 20 49 2F 4F 20 20 70     and  an  I/O  p
001D40:  6F 72 74 2E 20 20 54 68 65 20 20 77 61 79 20 20    ort.  The  way  
001D50:  74 68 65 20 20 73 6F 75 6E 64 20 20 67 65 6E 65    the  sound  gene
001D60:  72 61 74 69 6E 67 0D 0A 20 20 20 20 20 20 20 68    rating..       h
001D70:  61 72 64 77 61 72 65 20 69 73 20 75 73 65 64 20    ardware is used 
001D80:  69 73 20 64 65 73 63 72 69 62 65 64 20 69 6E 20    is described in 
001D90:  73 65 63 74 69 6F 6E 20 37 2E 20 54 68 65 20 49    section 7. The I
001DA0:  2F 4F 20 70 6F 72 74 20 69 73 20 20 75 73 65 64    /O port is  used
001DB0:  20 20 66 6F 72 0D 0A 20 20 20 20 20 20 20 69 6E      for..       in
001DC0:  70 75 74 20 6D 6F 64 65 20 74 6F 20 73 65 6E 73    put mode to sens
001DD0:  65 20 74 68 65 20 73 74 61 74 65 20 6F 66 20 74    e the state of t
001DE0:  68 65 20 6B 65 79 62 6F 61 72 64 20 61 6E 64 20    he keyboard and 
001DF0:  6A 6F 79 73 74 69 63 6B 20 73 77 69 74 63 68 65    joystick switche
001E00:  73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    s.......       T
001E10:  68 65 20 46 44 43 20 28 46 6C 6F 70 70 79 20 44    he FDC (Floppy D
001E20:  69 73 63 20 43 6F 6E 74 72 6F 6C 6C 65 72 29 20    isc Controller) 
001E30:  69 73 20 61 6E 20 4E 45 43 20 75 50 44 37 36 35    is an NEC uPD765
001E40:  41 20 63 68 69 70 2E 20 4F 6E 6C 79 20 74 77 6F    A chip. Only two
001E50:  20 64 69 73 63 0D 0A 20 20 20 20 20 20 20 64 72     disc..       dr
001E60:  69 76 65 73 20 61 72 65 20 73 75 70 70 6F 72 74    ives are support
001E70:  65 64 2C 20 73 69 6E 63 65 20 74 68 65 20 55 53    ed, since the US
001E80:  31 20 6C 69 6E 65 20 66 72 6F 6D 20 74 68 65 20    1 line from the 
001E90:  75 50 44 37 36 35 41 20 69 73 20 20 69 67 6E 6F    uPD765A is  igno
001EA0:  72 65 64 2E 0D 0A 20 20 20 20 20 20 20 54 68 69    red...       Thi
001EB0:  73 20 72 65 73 75 6C 74 73 20 69 6E 20 74 68 65    s results in the
001EC0:  20 74 77 6F 20 64 69 73 63 20 64 72 69 76 65 73     two disc drives
001ED0:  20 62 65 69 6E 67 20 61 63 63 65 73 73 65 64 20     being accessed 
001EE0:  61 73 20 64 72 69 76 65 73 20 30 20 20 61 6E 64    as drives 0  and
001EF0:  20 20 31 0D 0A 20 20 20 20 20 20 20 61 6E 64 20      1..       and 
001F00:  61 67 61 69 6E 20 61 73 20 32 20 61 6E 64 20 33    again as 2 and 3
001F10:  2E 20 54 68 65 20 46 44 43 20 73 75 70 70 6F 72    . The FDC suppor
001F20:  74 73 20 62 6F 74 68 20 73 69 6E 67 6C 65 20 20    ts both single  
001F30:  61 6E 64 20 20 64 6F 75 62 6C 65 20 20 73 69 64    and  double  sid
001F40:  65 64 0D 0A 20 20 20 20 20 20 20 61 6E 64 20 73    ed..       and s
001F50:  69 6E 67 6C 65 20 61 6E 64 20 64 6F 75 62 6C 65    ingle and double
001F60:  20 64 65 6E 73 69 74 79 20 6D 69 6E 69 2D 66 6C     density mini-fl
001F70:  6F 70 70 79 20 64 69 73 63 20 64 72 69 76 65 73    oppy disc drives
001F80:  2E 20 4E 6F 74 65 20 20 74 68 61 74 20 20 74 68    . Note  that  th
001F90:  65 0D 0A 20 20 20 20 20 20 20 63 6C 6F 63 6B 20    e..       clock 
001FA0:  66 72 65 71 75 65 6E 63 79 20 73 75 70 70 6C 69    frequency suppli
001FB0:  65 64 20 74 6F 20 74 68 65 20 75 50 44 37 36 35    ed to the uPD765
001FC0:  41 20 43 4C 4B 20 70 69 6E 20 69 73 20 20 34 4D    A CLK pin is  4M
001FD0:  48 7A 20 20 72 61 74 68 65 72 20 20 74 68 61 6E    Hz  rather  than
001FE0:  0D 0A 20 20 20 20 20 20 20 74 68 65 20 38 4D 48    ..       the 8MH
001FF0:  7A 20 75 73 65 64 20 77 69 74 68 20 6C 61 72 67    z used with larg
002000:  65 72 20 64 69 73 63 20 64 72 69 76 65 73 2E 0D    er disc drives..
002010:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 61 63 68    .....       Each
002020:  20 64 69 73 63 20 64 72 69 76 65 20 74 61 6B 65     disc drive take
002030:  73 20 61 20 73 69 6E 67 6C 65 20 33 22 20 66 6C    s a single 3" fl
002040:  6F 70 70 79 20 64 69 73 63 2E 20 45 69 74 68 65    oppy disc. Eithe
002050:  72 20 73 69 64 65 20 6F 66 20 74 68 65 20 64 69    r side of the di
002060:  73 63 0D 0A 20 20 20 20 20 20 20 6D 61 79 20 62    sc..       may b
002070:  65 20 75 73 65 64 2C 20 64 65 70 65 6E 64 69 6E    e used, dependin
002080:  67 20 6F 6E 20 77 68 69 63 68 20 77 61 79 20 75    g on which way u
002090:  70 20 74 68 65 20 64 69 73 63 20 69 73 20 69 6E    p the disc is in
0020A0:  73 65 72 74 65 64 20 20 69 6E 74 6F 20 20 74 68    serted  into  th
0020B0:  65 0D 0A 20 20 20 20 20 20 20 64 72 69 76 65 2E    e..       drive.
0020C0:  20 54 68 65 20 64 69 73 63 20 69 6E 74 65 72 66     The disc interf
0020D0:  61 63 65 20 63 6F 6E 74 61 69 6E 73 20 61 20 31    ace contains a 1
0020E0:  36 4B 20 65 78 70 61 6E 73 69 6F 6E 20 52 4F 4D    6K expansion ROM
0020F0:  2C 20 20 38 4B 20 20 6F 66 20 20 77 68 69 63 68    ,  8K  of  which
002100:  0D 0A 20 20 20 20 20 20 20 63 6F 6E 74 61 69 6E    ..       contain
002110:  73 20 74 68 65 20 64 69 73 63 20 64 72 69 76 69    s the disc drivi
002120:  6E 67 20 73 6F 66 74 77 61 72 65 2C 20 74 68 65    ng software, the
002130:  20 72 65 6D 61 69 6E 64 65 72 20 20 62 65 69 6E     remainder  bein
002140:  67 20 20 75 73 65 64 20 20 62 79 20 20 44 52 0D    g  used  by  DR.
002150:  0A 20 20 20 20 20 20 20 4C 4F 47 4F 2E 0D 0A 0D    .       LOGO....
002160:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 50 50    ...       The PP
002170:  49 20 28 50 61 72 61 6C 6C 65 6C 20 50 65 72 69    I (Parallel Peri
002180:  70 68 65 72 61 6C 20 49 6E 74 65 72 66 61 63 65    pheral Interface
002190:  29 2C 20 77 68 69 63 68 20 69 73 20 20 61 6E 20    ), which is  an 
0021A0:  20 38 32 35 35 20 20 63 68 69 70 2C 20 20 69 73     8255  chip,  is
0021B0:  0D 0A 20 20 20 20 20 20 20 75 73 65 64 20 74 6F    ..       used to
0021C0:  20 63 6F 6E 74 72 6F 6C 20 74 68 65 20 72 65 6D     control the rem
0021D0:  61 69 6E 64 65 72 20 6F 66 20 74 68 65 20 73 79    ainder of the sy
0021E0:  73 74 65 6D 2E 20 49 74 20 68 61 73 20 74 68 72    stem. It has thr
0021F0:  65 65 20 70 6F 72 74 73 2E 20 20 50 6F 72 74 0D    ee ports.  Port.
002200:  0A 20 20 20 20 20 20 20 43 20 69 73 20 75 73 65    .       C is use
002210:  64 20 61 73 20 69 6E 20 6F 75 74 70 75 74 20 70    d as in output p
002220:  6F 72 74 20 74 6F 20 63 6F 6E 74 72 6F 6C 20 74    ort to control t
002230:  68 65 20 63 61 73 73 65 74 74 65 20 72 65 63 6F    he cassette reco
002240:  72 64 65 72 20 6D 6F 74 6F 72 2C 20 74 6F 0D 0A    rder motor, to..
002250:  20 20 20 20 20 20 20 77 72 69 74 65 20 64 61 74           write dat
002260:  61 20 74 6F 20 74 68 65 20 63 61 73 73 65 74 74    a to the cassett
002270:  65 2C 20 74 6F 20 77 72 69 74 65 20 64 61 74 61    e, to write data
002280:  20 74 6F 20 74 68 65 20 63 61 73 73 65 74 74 65     to the cassette
002290:  2C 20 20 74 6F 20 20 73 74 72 6F 62 65 0D 0A 20    ,  to  strobe.. 
0022A0:  20 20 20 20 20 20 64 61 74 61 20 69 6E 20 6F 72          data in or
0022B0:  20 6F 75 74 20 6F 66 20 74 68 65 20 50 53 47 20     out of the PSG 
0022C0:  61 6E 64 20 74 6F 20 73 65 6C 65 63 74 20 72 6F    and to select ro
0022D0:  77 73 20 6F 66 20 74 68 65 20 6B 65 79 62 6F 61    ws of the keyboa
0022E0:  72 64 2E 20 20 50 6F 72 74 20 20 42 0D 0A 20 20    rd.  Port  B..  
0022F0:  20 20 20 20 20 69 73 20 75 73 65 64 20 61 73 20         is used as 
002300:  61 6E 20 69 6E 70 75 74 20 70 6F 72 74 20 20 74    an input port  t
002310:  6F 20 20 73 65 6E 73 65 20 20 74 68 65 20 20 66    o  sense  the  f
002320:  72 61 6D 65 20 20 66 6C 79 62 61 63 6B 20 20 73    rame  flyback  s
002330:  69 67 6E 61 6C 2C 20 20 74 68 65 0D 0A 20 20 20    ignal,  the..   
002340:  20 20 20 20 43 65 6E 74 72 6F 6E 69 63 73 20 70        Centronics p
002350:  6F 72 74 20 62 75 73 79 20 73 69 67 6E 61 6C 20    ort busy signal 
002360:  61 6E 64 20 76 61 72 69 6F 75 73 20 6F 70 74 69    and various opti
002370:  6F 6E 20 6C 69 6E 6B 73 20 61 6E 64 20 74 6F 20    on links and to 
002380:  72 65 61 64 20 20 64 61 74 61 0D 0A 20 20 20 20    read  data..    
002390:  20 20 20 66 72 6F 6D 20 74 68 65 20 63 61 73 73       from the cass
0023A0:  65 74 74 65 2E 20 50 6F 72 74 20 41 20 69 73 20    ette. Port A is 
0023B0:  75 73 65 64 20 74 6F 20 63 6F 6D 6D 75 6E 69 63    used to communic
0023C0:  61 74 65 20 77 69 74 68 20 74 68 65 20 50 53 47    ate with the PSG
0023D0:  20 20 61 6E 64 20 20 69 73 0D 0A 20 20 20 20 20      and  is..     
0023E0:  20 20 73 65 74 20 69 6E 74 6F 20 69 6E 70 75 74      set into input
0023F0:  20 6F 72 20 6F 75 74 70 75 74 20 6D 6F 64 65 20     or output mode 
002400:  61 73 20 72 65 71 75 69 72 65 64 2E 0D 0A 0D 0A    as required.....
002410:  0D 0A 20 20 20 20 20 20 20 41 63 63 65 73 73 65    ..       Accesse
002420:  73 20 74 6F 20 6D 65 6D 6F 72 79 20 61 72 65 20    s to memory are 
002430:  73 79 6E 63 68 72 6F 6E 69 7A 65 64 20 77 69 74    synchronized wit
002440:  68 20 74 68 65 20 76 69 64 65 6F 20 6C 6F 67 69    h the video logi
002450:  63 20 20 2D 20 20 74 68 65 79 20 20 61 72 65 0D    c  -  they  are.
002460:  0A 20 20 20 20 20 20 20 63 6F 6E 73 74 72 61 69    .       constrai
002470:  6E 65 64 20 74 6F 20 6F 63 63 75 72 20 6F 6E 20    ned to occur on 
002480:  6D 69 63 72 6F 73 65 63 6F 6E 64 20 62 6F 75 6E    microsecond boun
002490:  64 61 72 69 65 73 2E 20 54 68 69 73 20 68 61 73    daries. This has
0024A0:  20 74 68 65 20 61 66 66 65 63 74 20 6F 66 0D 0A     the affect of..
0024B0:  20 20 20 20 20 20 20 73 74 72 65 74 63 68 69 6E           stretchin
0024C0:  67 20 65 61 63 68 20 5A 38 30 20 4D 20 63 79 63    g each Z80 M cyc
0024D0:  6C 65 20 28 6D 61 63 68 69 6E 65 20 63 79 63 6C    le (machine cycl
0024E0:  65 29 20 74 6F 20 62 65 20 61 20 6D 75 6C 74 69    e) to be a multi
0024F0:  70 6C 65 20 20 6F 66 20 20 34 20 20 54 0D 0A 20    ple  of  4  T.. 
002500:  20 20 20 20 20 20 73 74 61 74 65 73 20 28 63 6C          states (cl
002510:  6F 63 6B 20 63 79 63 6C 65 73 29 2E 20 49 6E 20    ock cycles). In 
002520:  70 72 61 63 74 69 63 65 20 74 68 69 73 20 61 6C    practice this al
002530:  74 65 72 73 20 74 68 65 20 69 6E 73 74 72 75 63    ters the instruc
002540:  74 69 6F 6E 20 20 74 69 6D 69 6E 67 0D 0A 20 20    tion  timing..  
002550:  20 20 20 20 20 73 6F 20 74 68 61 74 20 74 68 65         so that the
002560:  20 65 66 66 65 63 74 69 76 65 20 63 6C 6F 63 6B     effective clock
002570:  20 72 61 74 65 20 69 73 20 61 70 70 72 6F 78 69     rate is approxi
002580:  6D 61 74 65 6C 79 20 33 2E 33 4D 48 7A 2E 0D 0A    mately 3.3MHz...
002590:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53    ......       AMS
0025A0:  54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F    TRAD CPC464/664/
0025B0:  36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20    6128 FIRMWARE   
0025C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0025D0:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
0025E0:  31 2E 32 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    1.2.............
0025F0:  0A 20 20 20 20 20 20 20 20 20 20 5F 5F 5F 5F 5F    .          _____
002600:  5F 5F 5F 5F 20 20 20 20 20 20 20 20 20 20 5F 5F    ____          __
002610:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
002620:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
002630:  5F 5F 0D 0A 20 20 20 20 20 20 20 20 20 7C 20 20    __..         |  
002640:  20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20           |        
002650:  7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    |               
002660:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002670:  20 20 20 20 20 7C 3C 2D 2D 0D 0A 20 20 20 20 20         |<--..     
002680:  20 20 20 20 7C 20 4D 6F 6E 69 74 6F 72 20 7C 3C        | Monitor |<
002690:  2D 2D 2D 2D 2D 2D 2D 7C 20 20 20 20 20 20 20 20    -------|        
0026A0:  20 20 20 47 61 74 65 20 41 72 72 61 79 20 20 20       Gate Array   
0026B0:  20 20 20 20 20 20 20 20 20 20 20 20 7C 20 20 20                |   
0026C0:  7C 0D 0A 20 20 20 20 20 20 20 20 20 7C 5F 5F 5F    |..         |___
0026D0:  5F 5F 5F 5F 5F 5F 7C 20 20 20 20 20 20 20 20 7C    ______|        |
0026E0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
0026F0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
002700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
002710:  02 00 00 00 02 09 50 E5 02 00 C1 02 00 00 00 02    ......P.........
002720:  02 00 C2 02 00 00 00 02 02 00 C3 02 00 00 00 02    ................
002730:  02 00 C4 02 00 00 00 02 02 00 C5 02 00 00 00 02    ................
002740:  02 00 C6 02 00 00 00 02 02 00 C7 02 00 00 00 02    ................
002750:  02 00 C8 02 00 00 00 02 02 00 C9 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:  5F 5F 5F 5F 7C 20 20 20 7C 0D 0A 20 20 20 20 20    ____|   |..     
002810:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002820:  20 20 20 20 20 20 20 20 20 20 5E 20 20 20 20 20              ^     
002830:  20 20 20 20 20 20 20 5E 20 20 20 20 20 20 20 20           ^        
002840:  20 20 20 20 20 20 20 20 5E 20 20 20 20 20 20 20            ^       
002850:  7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    |..             
002860:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002870:  20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 7C      |            |
002880:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002890:  7C 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20    |       |..     
0028A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0028B0:  20 20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20              |     
0028C0:  20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20           |        
0028D0:  20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20            |       
0028E0:  7C 0D 0A 20 20 20 20 20 20 20 20 20 5F 5F 5F 5F    |..         ____
0028F0:  5F 5F 5F 5F 5F 5F 20 20 20 20 20 20 20 20 5F 5F    ______        __
002900:  5F 5F 7C 5F 5F 5F 20 20 20 20 20 20 5F 5F 5F 7C    __|___      ___|
002910:  5F 5F 5F 5F 5F 20 20 20 20 20 20 20 20 5F 5F 5F    _____        ___
002920:  7C 5F 5F 5F 5F 20 20 20 7C 0D 0A 20 20 20 20 20    |____   |..     
002930:  20 20 20 7C 20 20 20 20 20 20 20 20 20 20 7C 20       |          | 
002940:  20 20 20 20 20 7C 20 20 20 20 20 20 20 20 7C 20         |        | 
002950:  20 20 20 7C 20 20 20 20 20 20 20 20 20 7C 20 20       |         |  
002960:  20 20 20 20 7C 20 20 20 20 20 20 20 20 7C 20 20        |        |  
002970:  7C 0D 0A 20 20 20 20 20 20 20 20 7C 20 53 70 65    |..        | Spe
002980:  61 6B 65 72 73 20 7C 20 20 20 20 20 20 7C 20 20    akers |      |  
002990:  43 52 54 43 20 20 7C 3C 2D 2D 3E 7C 20 20 20 20    CRTC  |<-->|    
0029A0:  20 20 20 20 20 7C 3C 2D 2D 2D 2D 3E 7C 20 20 20         |<---->|   
0029B0:  52 41 4D 20 20 7C 20 20 7C 0D 0A 20 20 20 20 20    RAM  |  |..     
0029C0:  20 20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 20       |__________| 
0029D0:  20 20 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F 7C 20         |________| 
0029E0:  20 20 20 7C 20 20 20 20 20 20 20 20 20 7C 20 20       |         |  
0029F0:  20 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F 7C 20 20        |________|  
002A00:  7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    |..             
002A10:  5E 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ^               
002A20:  20 7C 20 20 20 20 20 20 20 20 20 7C 20 20 20 43     |         |   C
002A30:  50 55 20 20 20 7C 20 20 20 20 20 20 20 20 20 20    PU   |          
002A40:  20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20            |..     
002A50:  20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20            |       
002A60:  20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20             |      
002A70:  20 20 20 7C 20 20 20 20 20 20 20 20 20 7C 20 20       |         |  
002A80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002A90:  7C 0D 0A 20 20 20 20 20 20 20 20 5F 5F 5F 5F 5F    |..        _____
002AA0:  7C 5F 5F 20 20 20 20 20 20 20 20 20 20 5F 5F 5F    |__          ___
002AB0:  5F 56 5F 5F 5F 5F 20 20 20 20 20 7C 20 20 20 20    _V____     |    
002AC0:  20 20 20 20 20 7C 20 20 20 20 20 20 20 5F 5F 5F         |       ___
002AD0:  5F 5F 5F 5F 5F 20 20 20 7C 0D 0A 20 20 20 20 20    _____   |..     
002AE0:  20 20 7C 20 20 20 20 20 20 20 20 7C 20 20 20 20      |        |    
002AF0:  20 20 20 20 7C 20 20 20 20 20 20 20 20 20 7C 20        |         | 
002B00:  20 20 20 7C 20 20 20 20 20 20 20 20 20 7C 20 20       |         |  
002B10:  20 20 20 20 7C 20 20 20 20 20 20 20 20 7C 20 20        |        |  
002B20:  7C 0D 0A 20 20 20 20 20 20 20 7C 20 20 50 53 47    |..       |  PSG
002B30:  20 20 20 7C 3C 2D 2D 2D 2D 2D 2D 3E 7C 20 20 20       |<------>|   
002B40:  20 20 20 20 20 20 7C 3C 2D 2D 3E 7C 20 20 20 20          |<-->|    
002B50:  20 20 20 20 20 7C 3C 2D 2D 2D 2D 2D 7C 20 20 52         |<-----|  R
002B60:  4F 4D 20 20 20 7C 3C 2D 7C 0D 0A 20 20 20 20 20    OM   |<-|..     
002B70:  20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F 7C 20 20 20 20      |________|    
002B80:  20 20 20 20 7C 20 20 20 20 20 20 20 20 20 7C 20        |         | 
002B90:  20 20 20 7C 20 20 20 20 20 20 20 20 20 7C 20 20       |         |  
002BA0:  20 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F 7C 0D 0A        |________|..
002BB0:  20 20 20 20 20 20 20 20 20 20 20 5E 20 20 20 20               ^    
002BC0:  20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20             |      
002BD0:  20 20 20 7C 20 20 20 20 7C 20 20 20 20 20 20 20       |    |       
002BE0:  20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20      |..           
002BF0:  7C 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20    |             | 
002C00:  20 50 50 49 20 20 20 20 7C 20 20 20 20 7C 5F 5F     PPI    |    |__
002C10:  5F 5F 5F 5F 5F 5F 5F 7C 0D 0A 20 20 20 20 20 20    _______|..      
002C20:  20 20 5F 5F 5F 7C 5F 5F 5F 5F 5F 5F 20 20 20 20      ___|______    
002C30:  20 20 20 7C 20 20 20 20 20 20 20 20 20 7C 20 20       |         |  
002C40:  20 20 20 20 20 20 20 7C 20 20 20 5E 5F 5F 5F 5F           |   ^____
002C50:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A    ______________..
002C60:  20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20           |        
002C70:  20 20 7C 20 20 20 20 20 20 7C 20 20 20 20 20 20      |      |      
002C80:  20 20 20 7C 20 20 20 20 20 5F 5F 5F 5F 56 5F 5F       |     ____V__
002C90:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 20 20 20 20    ____________    
002CA0:  5F 5F 5F 5F 7C 5F 5F 5F 5F 0D 0A 20 20 20 20 20    ____|____..     
002CB0:  20 20 7C 20 4B 65 79 62 6F 61 72 64 20 7C 20 20      | Keyboard |  
002CC0:  20 20 20 20 7C 20 20 20 20 20 20 20 20 20 7C 20        |         | 
002CD0:  20 20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20       |            
002CE0:  20 20 20 20 20 20 20 7C 20 20 7C 20 20 20 20 20           |  |     
002CF0:  20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 7C 20        |..       | 
002D00:  20 61 6E 64 20 20 20 20 20 7C 3C 2D 2D 2D 2D 3E     and     |<---->
002D10:  7C 20 20 20 20 20 20 20 20 20 7C 3C 2D 2D 3E 7C    |         |<-->|
002D20:  20 20 20 43 65 6E 74 72 6F 6E 69 63 73 20 50 6F       Centronics Po
002D30:  72 74 20 7C 20 20 7C 20 20 20 46 44 43 20 20 20    rt |  |   FDC   
002D40:  7C 0D 0A 20 20 20 20 20 20 20 7C 4A 6F 79 73 74    |..       |Joyst
002D50:  69 63 6B 73 20 7C 20 20 20 20 20 20 7C 20 20 20    icks |      |   
002D60:  20 20 20 20 20 20 7C 20 20 20 20 7C 20 20 20 20          |    |    
002D70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C                   |
002D80:  20 20 7C 20 20 20 20 20 20 20 20 20 7C 0D 0A 20      |         |.. 
002D90:  20 20 20 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F          |_________
002DA0:  5F 7C 20 20 20 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F    _|      |_______
002DB0:  5F 5F 7C 20 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F    __|    |________
002DC0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 20 20 7C 5F    ___________|  |_
002DD0:  5F 5F 5F 5F 5F 5F 5F 5F 7C 0D 0A 20 20 20 20 20    ________|..     
002DE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002DF0:  20 20 20 20 20 20 20 20 20 5E 20 20 20 20 20 20             ^      
002E00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002E10:  20 20 20 20 20 20 20 20 20 20 20 20 20 5E 0D 0A                 ^..
002E20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002E30:  20 20 20 20 20 20 20 20 20 20 5F 5F 5F 5F 56 5F              ____V_
002E40:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 20 20 20    _____________   
002E50:  20 20 20 20 20 20 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F          __________
002E60:  5F 5F 56 5F 0D 0A 20 20 20 20 20 20 20 20 20 20    __V_..          
002E70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C                   |
002E80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002E90:  20 20 20 7C 20 20 20 20 20 20 20 7C 20 20 20 20       |       |    
002EA0:  20 20 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20              |..   
002EB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002EC0:  20 20 20 20 20 20 7C 20 43 61 73 73 65 74 74 65          | Cassette
002ED0:  20 52 65 63 6F 72 64 65 72 20 7C 20 20 20 20 20     Recorder |     
002EE0:  20 20 7C 20 20 44 69 73 63 20 44 72 69 76 65 73      |  Disc Drives
002EF0:  20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20     |..            
002F00:  20 20 20 20 20 20 20 20 20 20 20 20 20 7C 5F 5F                 |__
002F10:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
002F20:  5F 7C 20 20 20 20 20 20 20 7C 5F 5F 5F 5F 5F 5F    _|       |______
002F30:  5F 5F 5F 5F 5F 5F 5F 5F 7C 0D 0A 0D 0A 0D 0A 0D    ________|.......
002F40:  0A 0D 0A 20 20 20 20 20 20 20 31 2E 32 20 54 68    ...       1.2 Th
002F50:  65 20 44 69 76 69 73 69 6F 6E 20 6F 66 20 74 68    e Division of th
002F60:  65 20 46 69 72 6D 77 61 72 65 2E 0D 0A 0D 0A 0D    e Firmware......
002F70:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
002F80:  46 69 72 6D 77 61 72 65 20 69 73 20 73 70 6C 69    Firmware is spli
002F90:  74 20 69 6E 74 6F 20 27 70 61 63 6B 73 27 20 65    t into 'packs' e
002FA0:  61 63 68 20 64 65 61 6C 69 6E 67 20 77 69 74 68    ach dealing with
002FB0:  20 61 20 70 61 72 74 69 63 75 6C 61 72 20 70 61     a particular pa
002FC0:  72 74 0D 0A 20 20 20 20 20 20 20 6F 66 20 74 68    rt..       of th
002FD0:  65 20 73 79 73 74 65 6D 2C 20 75 73 75 61 6C 6C    e system, usuall
002FE0:  79 20 61 20 68 61 72 64 77 61 72 65 20 64 65 76    y a hardware dev
002FF0:  69 63 65 2E 20 45 61 63 68 20 70 61 63 6B 20 68    ice. Each pack h
003000:  61 73 20 61 20 20 73 65 63 74 69 6F 6E 20 20 6F    as a  section  o
003010:  66 0D 0A 20 20 20 20 20 20 20 74 68 69 73 20 6D    f..       this m
003020:  61 6E 75 61 6C 20 64 65 76 6F 74 65 64 20 74 6F    anual devoted to
003030:  20 69 74 20 77 68 65 72 65 20 69 74 73 20 6F 70     it where its op
003040:  65 72 61 74 69 6F 6E 20 69 73 20 65 78 70 6C 61    eration is expla
003050:  69 6E 65 64 20 69 6E 20 20 64 65 74 61 69 6C 2E    ined in  detail.
003060:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    ........       T
003070:  68 65 20 73 79 73 74 65 6D 20 63 6F 6D 70 6F 6E    he system compon
003080:  65 6E 74 73 20 61 6E 64 20 74 68 65 69 72 20 61    ents and their a
003090:  73 73 6F 63 69 61 74 65 64 20 70 61 63 6B 73 20    ssociated packs 
0030A0:  61 72 65 3A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    are:..........  
0030B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 4B 65                  Ke
0030C0:  79 62 6F 61 72 64 3A 20 20 20 20 20 20 20 20 20    yboard:         
0030D0:  20 20 4B 65 79 20 4D 61 6E 61 67 65 72 2E 0D 0A      Key Manager...
0030E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0030F0:  53 63 72 65 65 6E 3A 20 20 20 20 20 20 20 20 20    Screen:         
003100:  20 20 20 20 54 65 78 74 20 56 44 55 2C 20 47 72        Text VDU, Gr
003110:  61 70 68 69 63 73 20 56 44 55 2C 20 53 63 72 65    aphics VDU, Scre
003120:  65 6E 20 50 61 63 6B 2E 0D 0A 20 20 20 20 20 20    en Pack...      
003130:  20 20 20 20 20 20 20 20 20 20 43 61 73 73 65 74              Casset
003140:  74 65 2F 44 69 73 63 3A 20 20 20 20 20 20 43 61    te/Disc:      Ca
003150:  73 73 65 74 74 65 20 4D 61 6E 61 67 65 72 2F 41    ssette Manager/A
003160:  4D 53 44 4F 53 2E 0D 0A 20 20 20 20 20 20 20 20    MSDOS...        
003170:  20 20 20 20 20 20 20 20 53 6F 75 6E 64 3A 20 20            Sound:  
003180:  20 20 20 20 20 20 20 20 20 20 20 20 53 6F 75 6E                Soun
003190:  64 20 4D 61 6E 61 67 65 72 2E 0D 0A 20 20 20 20    d Manager...    
0031A0:  20 20 20 20 20 20 20 20 20 20 20 20 4F 70 65 72                Oper
0031B0:  61 74 69 6E 67 20 53 79 73 74 65 6D 3A 20 20 20    ating System:   
0031C0:  4B 65 72 6E 65 6C 2C 20 4D 61 63 68 69 6E 65 20    Kernel, Machine 
0031D0:  50 61 63 6B 2C 20 4A 75 6D 70 65 72 2E 0D 0A 0D    Pack, Jumper....
0031E0:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D    .......       AM
0031F0:  53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34    STRAD CPC464/664
003200:  2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20    /6128 FIRMWARE  
003210:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
003220:  20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65                page
003230:  20 31 2E 33 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A     1.3............
003240:  0D 0A 20 20 20 20 20 20 20 61 2E 20 4B 65 79 20    ..       a. Key 
003250:  4D 61 6E 61 67 65 72 0D 0A 0D 0A 20 20 20 20 20    Manager....     
003260:  20 20 54 68 65 20 4B 65 79 20 4D 61 6E 61 67 65      The Key Manage
003270:  72 20 69 73 20 6D 6F 72 65 20 66 75 6C 6C 79 20    r is more fully 
003280:  64 65 73 63 72 69 62 65 64 20 69 6E 20 73 65 63    described in sec
003290:  74 69 6F 6E 20 33 2E 20 20 49 74 20 20 64 65 61    tion 3.  It  dea
0032A0:  6C 73 20 20 77 69 74 68 0D 0A 20 20 20 20 20 20    ls  with..      
0032B0:  20 73 63 61 6E 6E 69 6E 67 20 74 68 65 20 6B 65     scanning the ke
0032C0:  79 62 6F 61 72 64 2C 20 67 65 6E 65 72 61 74 69    yboard, generati
0032D0:  6E 67 20 63 68 61 72 61 63 74 65 72 73 2C 20 66    ng characters, f
0032E0:  75 6E 63 74 69 6F 6E 20 20 6B 65 79 73 2C 20 20    unction  keys,  
0032F0:  74 65 73 74 69 6E 67 0D 0A 20 20 20 20 20 20 20    testing..       
003300:  66 6F 72 20 62 72 65 61 6B 20 61 6E 64 20 73 63    for break and sc
003310:  61 6E 6E 69 6E 67 20 74 68 65 20 6A 6F 79 73 74    anning the joyst
003320:  69 63 6B 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    icks.......     
003330:  20 20 62 2E 20 54 65 78 74 20 56 44 55 0D 0A 0D      b. Text VDU...
003340:  0A 20 20 20 20 20 20 20 54 68 65 20 54 65 78 74    .       The Text
003350:  20 56 44 55 20 69 73 20 6D 6F 72 65 20 66 75 6C     VDU is more ful
003360:  6C 79 20 6F 75 74 6C 69 6E 65 64 20 69 6E 20 73    ly outlined in s
003370:  65 63 74 69 6F 6E 20 34 2E 20 49 74 20 64 65 61    ection 4. It dea
003380:  6C 73 20 77 69 74 68 20 70 75 74 74 69 6E 67 0D    ls with putting.
003390:  0A 20 20 20 20 20 20 20 63 68 61 72 61 63 74 65    .       characte
0033A0:  72 73 20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E    rs on the screen
0033B0:  2C 20 74 68 65 20 63 75 72 73 6F 72 20 61 6E 64    , the cursor and
0033C0:  20 6F 62 65 79 69 6E 67 20 63 6F 6E 74 72 6F 6C     obeying control
0033D0:  20 63 6F 64 65 73 2E 0D 0A 0D 0A 0D 0A 20 20 20     codes.......   
0033E0:  20 20 20 20 63 2E 20 47 72 61 70 68 69 63 73 20        c. Graphics 
0033F0:  56 44 55 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    VDU....       Th
003400:  65 20 47 72 61 70 68 69 63 73 20 56 44 55 20 69    e Graphics VDU i
003410:  73 20 6D 6F 72 65 20 66 75 6C 6C 79 20 70 72 65    s more fully pre
003420:  73 65 6E 74 65 64 20 69 6E 20 73 65 63 74 69 6F    sented in sectio
003430:  6E 20 35 2E 20 49 74 20 20 64 65 61 6C 73 20 20    n 5. It  deals  
003440:  77 69 74 68 0D 0A 20 20 20 20 20 20 20 70 6C 6F    with..       plo
003450:  74 74 69 6E 67 20 70 6F 69 6E 74 73 2C 20 74 65    tting points, te
003460:  73 74 69 6E 67 20 70 6F 69 6E 74 73 2C 20 64 72    sting points, dr
003470:  61 77 69 6E 67 20 6C 69 6E 65 73 20 61 6E 64 20    awing lines and 
003480:  20 66 69 6C 6C 69 6E 67 20 20 61 72 65 61 73 20     filling  areas 
003490:  20 6F 6E 0D 0A 20 20 20 20 20 20 20 74 68 65 20     on..       the 
0034A0:  73 63 72 65 65 6E 2E 0D 0A 0D 0A 0D 0A 20 20 20    screen.......   
0034B0:  20 20 20 20 64 2E 20 53 63 72 65 65 6E 20 50 61        d. Screen Pa
0034C0:  63 6B 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    ck....       The
0034D0:  20 53 63 72 65 65 6E 20 50 61 63 6B 20 69 73 20     Screen Pack is 
0034E0:  6D 6F 72 65 20 66 75 6C 6C 79 20 64 65 74 61 69    more fully detai
0034F0:  6C 65 64 20 69 6E 20 73 65 63 74 69 6F 6E 20 36    led in section 6
003500:  2E 20 49 74 20 69 6E 74 65 72 66 61 63 65 73 20    . It interfaces 
003510:  74 68 65 0D 0A 20 20 20 20 20 20 20 54 65 78 74    the..       Text
003520:  20 61 6E 64 20 47 72 61 70 68 69 63 73 20 56 44     and Graphics VD
003530:  55 73 20 77 69 74 68 20 74 68 65 20 73 63 72 65    Us with the scre
003540:  65 6E 20 68 61 72 64 77 61 72 65 20 61 6E 64 20    en hardware and 
003550:  64 65 61 6C 73 20 77 69 74 68 20 61 73 70 65 63    deals with aspec
003560:  74 73 0D 0A 20 20 20 20 20 20 20 6F 66 20 74 68    ts..       of th
003570:  65 20 73 63 72 65 65 6E 20 74 68 61 74 20 61 66    e screen that af
003580:  66 65 63 74 20 62 6F 74 68 20 6F 66 20 74 68 65    fect both of the
003590:  73 65 20 70 61 63 6B 73 2C 20 73 75 63 68 20 61    se packs, such a
0035A0:  73 20 73 63 72 65 65 6E 20 6D 6F 64 65 20 20 6F    s screen mode  o
0035B0:  72 0D 0A 20 20 20 20 20 20 20 69 6E 6B 20 63 6F    r..       ink co
0035C0:  6C 6F 75 72 73 2E 0D 0A 0D 0A 20 20 20 20 20 20    lours.....      
0035D0:  20 65 2E 20 53 6F 75 6E 64 20 4D 61 6E 61 67 65     e. Sound Manage
0035E0:  72 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    r....       The 
0035F0:  53 6F 75 6E 64 20 4D 61 6E 61 67 65 72 20 69 73    Sound Manager is
003600:  20 6D 6F 72 65 20 66 75 6C 6C 79 20 64 69 73 63     more fully disc
003610:  75 73 73 65 64 20 69 6E 20 73 65 63 74 69 6F 6E    ussed in section
003620:  20 37 2E 20 49 74 20 64 65 61 6C 73 20 20 77 69     7. It deals  wi
003630:  74 68 0D 0A 20 20 20 20 20 20 20 71 75 65 75 69    th..       queui
003640:  6E 67 2C 20 65 6E 76 65 6C 6F 70 69 6E 67 2C 20    ng, enveloping, 
003650:  73 79 6E 63 68 72 6F 6E 69 7A 69 6E 67 20 61 6E    synchronizing an
003660:  64 20 67 65 6E 65 72 61 74 69 6E 67 20 73 6F 75    d generating sou
003670:  6E 64 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 66    nds.....       f
003680:  2E 20 43 61 73 73 65 74 74 65 20 4D 61 6E 61 67    . Cassette Manag
003690:  65 72 2F 41 4D 53 44 4F 53 0D 0A 0D 0A 20 20 20    er/AMSDOS....   
0036A0:  20 20 20 20 54 68 65 20 43 61 73 73 65 74 74 65        The Cassette
0036B0:  20 4D 61 6E 61 67 65 72 20 69 73 20 6D 6F 72 65     Manager is more
0036C0:  20 66 75 6C 6C 79 20 65 78 70 6C 61 69 6E 65 64     fully explained
0036D0:  20 69 6E 20 73 65 63 74 69 6F 6E 20 20 38 2E 20     in section  8. 
0036E0:  20 49 74 20 20 64 65 61 6C 73 0D 0A 20 20 20 20     It  deals..    
0036F0:  20 20 20 77 69 74 68 20 72 65 61 64 69 6E 67 20       with reading 
003700:  66 72 6F 6D 20 74 61 70 65 2C 20 77 72 69 74 69    from tape, writi
003710:  6E 67 20 74 6F 20 74 61 70 65 20 61 6E 64 20 63    ng to tape and c
003720:  61 73 73 65 74 74 65 20 6D 6F 74 6F 72 20 63 6F    assette motor co
003730:  6E 74 72 6F 6C 2E 0D 0A 0D 0A 20 20 20 20 20 20    ntrol.....      
003740:  20 41 4D 53 44 4F 53 20 69 73 20 65 78 70 6C 61     AMSDOS is expla
003750:  69 6E 65 64 20 6D 6F 72 65 20 66 75 6C 6C 79 20    ined more fully 
003760:  69 6E 20 73 65 63 74 69 6F 6E 20 39 2E 20 20 49    in section 9.  I
003770:  74 20 20 64 65 61 6C 73 20 20 77 69 74 68 20 20    t  deals  with  
003780:  72 65 61 64 69 6E 67 0D 0A 20 20 20 20 20 20 20    reading..       
003790:  66 72 6F 6D 20 64 69 73 63 2C 20 77 72 69 74 69    from disc, writi
0037A0:  6E 67 20 74 6F 20 64 69 73 63 20 61 6E 64 20 74    ng to disc and t
0037B0:  68 65 20 64 69 73 63 20 6D 6F 74 6F 72 20 63 6F    he disc motor co
0037C0:  6E 74 72 6F 6C 2E 0D 0A 0D 0A 20 20 20 20 20 20    ntrol.....      
0037D0:  20 67 2E 20 4B 65 72 6E 65 6C 0D 0A 0D 0A 20 20     g. Kernel....  
0037E0:  20 20 20 20 20 54 68 65 20 4B 65 72 6E 65 6C 20         The Kernel 
0037F0:  69 73 20 6D 6F 72 65 20 66 75 6C 6C 79 20 64 65    is more fully de
003800:  73 63 72 69 62 65 64 20 69 6E 20 73 65 63 74 69    scribed in secti
003810:  6F 6E 73 20 32 2C 20 31 30 2C 20 31 31 20 61 6E    ons 2, 10, 11 an
003820:  64 20 31 32 2E 20 49 74 20 69 73 0D 0A 20 20 20    d 12. It is..   
003830:  20 20 20 20 74 68 65 20 68 65 61 72 74 20 6F 66        the heart of
003840:  20 74 68 65 20 6F 70 65 72 61 74 69 6E 67 20 73     the operating s
003850:  79 73 74 65 6D 20 61 6E 64 20 64 65 61 6C 73 20    ystem and deals 
003860:  77 69 74 68 20 20 69 6E 74 65 72 72 75 70 74 73    with  interrupts
003870:  2C 20 20 65 76 65 6E 74 73 2C 0D 0A 20 20 20 20    ,  events,..    
003880:  20 20 20 73 65 6C 65 63 74 69 6E 67 20 52 4F 4D       selecting ROM
003890:  73 20 61 6E 64 20 72 75 6E 6E 69 6E 67 20 70 72    s and running pr
0038A0:  6F 67 72 61 6D 73 2E 0D 0A 0D 0A 20 20 20 20 20    ograms.....     
0038B0:  20 20 68 2E 20 4D 61 63 68 69 6E 65 20 50 61 63      h. Machine Pac
0038C0:  6B 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    k....       The 
0038D0:  4D 61 63 68 69 6E 65 20 50 61 63 6B 20 69 73 20    Machine Pack is 
0038E0:  6D 6F 72 65 20 66 75 6C 6C 79 20 64 6F 63 75 6D    more fully docum
0038F0:  65 6E 74 65 64 20 69 6E 20 73 65 63 74 69 6F 6E    ented in section
003900:  20 31 33 2E 20 49 74 20 64 65 61 6C 73 20 77 69     13. It deals wi
003910:  74 68 0D 0A 20 20 20 20 20 20 20 74 68 65 20 70    th..       the p
003920:  72 69 6E 74 65 72 20 61 6E 64 20 74 68 65 20 6C    rinter and the l
003930:  6F 77 20 6C 65 76 65 6C 20 64 72 69 76 69 6E 67    ow level driving
003940:  20 6F 66 20 74 68 65 20 68 61 72 64 77 61 72 65     of the hardware
003950:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 69 2E 20 4A    .....       i. J
003960:  75 6D 70 65 72 0D 0A 0D 0A 20 20 20 20 20 20 20    umper....       
003970:  4A 75 6D 70 65 72 2C 20 6F 72 20 72 61 74 68 65    Jumper, or rathe
003980:  72 2C 20 74 68 65 20 6D 61 69 6E 20 66 69 72 6D    r, the main firm
003990:  77 61 72 65 20 6A 75 6D 70 62 6C 6F 63 6B 20 69    ware jumpblock i
0039A0:  73 20 20 6C 69 73 74 65 64 20 20 69 6E 20 20 73    s  listed  in  s
0039B0:  65 63 74 69 6F 6E 0D 0A 20 20 20 20 20 20 20 31    ection..       1
0039C0:  34 2E 20 54 68 65 20 65 6E 74 72 69 65 73 20 69    4. The entries i
0039D0:  6E 20 74 68 65 20 6A 75 6D 70 62 6C 6F 63 6B 20    n the jumpblock 
0039E0:  61 72 65 20 64 65 73 63 72 69 62 65 64 20 69 6E    are described in
0039F0:  20 20 64 65 74 61 69 6C 20 20 69 6E 20 20 73 65      detail  in  se
003A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
003A10:  03 00 00 00 02 09 50 E5 03 00 C1 02 00 00 00 02    ......P.........
003A20:  03 00 C2 02 00 00 00 02 03 00 C3 02 00 00 00 02    ................
003A30:  03 00 C4 02 00 00 00 02 03 00 C5 02 00 00 00 02    ................
003A40:  03 00 C6 02 00 00 00 02 03 00 C7 02 00 00 00 02    ................
003A50:  03 00 C8 02 00 00 00 02 03 00 C9 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:  63 74 69 6F 6E 0D 0A 20 20 20 20 20 20 20 31 35    ction..       15
003B10:  2E 20 4A 75 6D 70 65 72 20 73 65 74 73 20 75 70    . Jumper sets up
003B20:  20 74 68 65 20 66 69 72 6D 77 61 72 65 20 6A 75     the firmware ju
003B30:  6D 70 62 6C 6F 63 6B 2E 0D 0A 0D 0A 0D 0A 0D 0A    mpblock.........
003B40:  20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43           AMSTRAD C
003B50:  50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46    PC464/664/6128 F
003B60:  49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20    IRMWARE         
003B70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
003B80:  20 20 20 20 20 70 61 67 65 20 31 2E 34 0D 0A 0D         page 1.4...
003B90:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
003BA0:  20 20 31 2E 33 20 43 6F 6E 74 72 6F 6C 6C 69 6E      1.3 Controllin
003BB0:  67 20 74 68 65 20 46 69 72 6D 77 61 72 65 2E 0D    g the Firmware..
003BC0:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 66 69    ...       The fi
003BD0:  72 6D 77 61 72 65 20 69 73 20 63 6F 6E 74 72 6F    rmware is contro
003BE0:  6C 6C 65 64 20 62 79 20 20 74 68 65 20 20 75 73    lled by  the  us
003BF0:  65 72 20 20 63 61 6C 6C 69 6E 67 20 20 70 75 62    er  calling  pub
003C00:  6C 69 73 68 65 64 20 20 72 6F 75 74 69 6E 65 73    lished  routines
003C10:  0D 0A 20 20 20 20 20 20 20 72 61 74 68 65 72 20    ..       rather 
003C20:  74 68 61 6E 20 62 79 20 74 68 65 20 75 73 65 72    than by the user
003C30:  20 73 65 74 74 69 6E 67 20 74 68 65 20 76 61 6C     setting the val
003C40:  75 65 73 20 6F 66 20 73 79 73 74 65 6D 20 20 76    ues of system  v
003C50:  61 72 69 61 62 6C 65 73 2E 20 20 54 68 69 73 0D    ariables.  This.
003C60:  0A 20 20 20 20 20 20 20 77 69 6C 6C 20 61 6C 6C    .       will all
003C70:  6F 77 20 74 68 65 20 66 69 72 6D 77 61 72 65 27    ow the firmware'
003C80:  73 20 76 61 72 69 61 62 6C 65 20 6C 61 79 6F 75    s variable layou
003C90:  74 20 74 6F 20 62 65 20 63 68 61 6E 67 65 64 20    t to be changed 
003CA0:  69 6E 20 6D 61 6A 6F 72 20 20 77 61 79 73 0D 0A    in major  ways..
003CB0:  20 20 20 20 20 20 20 77 69 74 68 6F 75 74 20 74           without t
003CC0:  68 65 20 75 73 65 72 20 62 65 69 6E 67 20 61 66    he user being af
003CD0:  66 65 63 74 65 64 2E 0D 0A 0D 0A 20 20 20 20 20    fected.....     
003CE0:  20 20 54 68 65 20 61 64 64 72 65 73 73 65 73 20      The addresses 
003CF0:  6F 66 20 74 68 65 20 72 6F 75 74 69 6E 65 73 20    of the routines 
003D00:  74 68 65 20 75 73 65 72 20 20 69 73 20 20 74 6F    the user  is  to
003D10:  20 20 63 61 6C 6C 20 20 6E 65 65 64 20 20 74 6F      call  need  to
003D20:  20 20 72 65 6D 61 69 6E 0D 0A 20 20 20 20 20 20      remain..      
003D30:  20 63 6F 6E 73 74 61 6E 74 20 69 66 20 74 68 65     constant if the
003D40:  20 20 66 69 72 6D 77 61 72 65 20 20 69 73 20 20      firmware  is  
003D50:  61 6C 74 65 72 65 64 2E 20 20 54 68 69 73 20 20    altered.  This  
003D60:  69 73 20 20 61 63 68 69 65 76 65 64 20 20 62 79    is  achieved  by
003D70:  20 20 75 73 69 6E 67 0D 0A 20 20 20 20 20 20 20      using..       
003D80:  6A 75 6D 70 62 6C 6F 63 6B 73 20 28 73 65 65 20    jumpblocks (see 
003D90:  62 65 6C 6F 77 29 2E 0D 0A 0D 0A 20 20 20 20 20    below).....     
003DA0:  20 20 54 68 65 20 61 64 76 61 6E 74 61 67 65 20      The advantage 
003DB0:  6F 66 20 61 20 72 6F 75 74 69 6E 65 20 69 6E 74    of a routine int
003DC0:  65 72 66 61 63 65 20 69 73 20 74 68 61 74 20 69    erface is that i
003DD0:  74 20 20 61 6C 6C 6F 77 73 20 20 61 20 20 6E 75    t  allows  a  nu
003DE0:  6D 62 65 72 20 20 6F 66 0D 0A 20 20 20 20 20 20    mber  of..      
003DF0:  20 64 69 66 66 65 72 65 6E 74 20 73 79 73 74 65     different syste
003E00:  6D 20 20 76 61 72 69 61 62 6C 65 73 20 20 74 6F    m  variables  to
003E10:  20 20 62 65 20 20 61 6C 74 65 72 65 64 20 20 62      be  altered  b
003E20:  79 20 20 74 68 65 20 20 66 69 72 6D 77 61 72 65    y  the  firmware
003E30:  20 20 69 6E 20 20 61 0D 0A 20 20 20 20 20 20 20      in  a..       
003E40:  63 6F 6E 73 69 73 74 65 6E 74 20 77 61 79 20 69    consistent way i
003E50:  6E 20 6F 6E 65 20 6F 70 65 72 61 74 69 6F 6E 2E    n one operation.
003E60:  20 49 66 20 74 68 65 20 73 79 73 74 65 6D 20 76     If the system v
003E70:  61 72 69 61 62 6C 65 73 20 68 61 64 20 74 6F 20    ariables had to 
003E80:  62 65 20 73 65 74 0D 0A 20 20 20 20 20 20 20 62    be set..       b
003E90:  79 20 74 68 65 20 75 73 65 72 20 74 68 65 6E 20    y the user then 
003EA0:  74 68 65 20 66 69 72 6D 77 61 72 65 20 63 6F 75    the firmware cou
003EB0:  6C 64 20 62 65 20 6C 65 66 74 20 69 6E 20 61 6E    ld be left in an
003EC0:  20 69 6E 64 65 74 65 72 6D 69 6E 61 74 65 20 20     indeterminate  
003ED0:  73 74 61 74 65 0D 0A 0D 0A 20 20 20 20 20 20 20    state....       
003EE0:  69 66 20 73 6F 6D 65 20 76 61 72 69 61 62 6C 65    if some variable
003EF0:  73 20 68 61 64 20 62 65 65 6E 20 73 65 74 20 62    s had been set b
003F00:  75 74 20 6E 6F 74 20 6F 74 68 65 72 73 2E 20 41    ut not others. A
003F10:  6C 73 6F 2C 20 74 68 65 20 72 6F 75 74 69 6E 65    lso, the routine
003F20:  20 20 74 79 70 65 0D 0A 20 20 20 20 20 20 20 6F      type..       o
003F30:  66 20 69 6E 74 65 72 66 61 63 65 20 65 6E 73 75    f interface ensu
003F40:  72 65 73 20 74 68 61 74 20 61 6C 6C 20 74 68 65    res that all the
003F50:  20 72 65 71 75 69 72 65 64 20 73 69 64 65 20 65     required side e
003F60:  66 66 65 63 74 73 20 20 6F 66 20 20 61 20 20 63    ffects  of  a  c
003F70:  68 61 6E 67 65 0D 0A 20 20 20 20 20 20 20 61 72    hange..       ar
003F80:  65 20 74 61 6B 65 6E 20 63 61 72 65 20 6F 66 20    e taken care of 
003F90:  61 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20 77 69    automatically wi
003FA0:  74 68 6F 75 74 20 74 68 65 20 75 73 65 72 20 62    thout the user b
003FB0:  65 69 6E 67 20 20 74 72 6F 75 62 6C 65 64 20 20    eing  troubled  
003FC0:  77 69 74 68 0D 0A 20 20 20 20 20 20 20 74 68 65    with..       the
003FD0:  20 64 65 74 61 69 6C 73 2E 20 41 6E 20 65 78 61     details. An exa
003FE0:  6D 70 6C 65 20 6F 66 20 74 68 69 73 20 20 69 73    mple of this  is
003FF0:  20 20 63 68 61 6E 67 69 6E 67 20 20 74 68 65 20      changing  the 
004000:  20 73 63 72 65 65 6E 20 20 6D 6F 64 65 20 20 28     screen  mode  (
004010:  73 65 65 0D 0A 20 20 20 20 20 20 20 73 65 63 74    see..       sect
004020:  69 6F 6E 20 36 2E 31 29 20 2D 20 63 68 61 6E 67    ion 6.1) - chang
004030:  69 6E 67 20 74 68 65 20 73 69 7A 65 20 6F 66 20    ing the size of 
004040:  74 68 65 20 73 63 72 65 65 6E 20 72 65 71 75 69    the screen requi
004050:  72 65 73 20 20 61 20 20 6E 75 6D 62 65 72 20 20    res  a  number  
004060:  6F 66 0D 0A 20 20 20 20 20 20 20 6F 74 68 65 72    of..       other
004070:  20 70 65 6F 70 6C 65 20 74 6F 20 62 65 20 69 6E     people to be in
004080:  66 6F 72 6D 65 64 20 6F 66 20 20 74 68 65 20 20    formed of  the  
004090:  63 68 61 6E 67 65 20 20 73 6F 20 20 74 68 61 74    change  so  that
0040A0:  20 20 69 6C 6C 65 67 61 6C 20 20 73 63 72 65 65      illegal  scree
0040B0:  6E 0D 0A 20 20 20 20 20 20 20 70 6F 73 69 74 69    n..       positi
0040C0:  6F 6E 73 20 61 6E 64 20 69 6E 6B 73 20 61 72 65    ons and inks are
0040D0:  20 6E 6F 74 20 75 73 65 64 2E 0D 0A 0D 0A 20 20     not used.....  
0040E0:  20 20 20 20 20 31 2E 34 20 4A 75 6D 70 62 6C 6F         1.4 Jumpblo
0040F0:  63 6B 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    cks.......      
004100:  20 41 20 6A 75 6D 70 62 6C 6F 63 6B 20 69 73 20     A jumpblock is 
004110:  61 20 73 65 72 69 65 73 20 6F 66 20 20 6A 75 6D    a series of  jum
004120:  70 20 20 69 6E 73 74 72 75 63 74 69 6F 6E 73 20    p  instructions 
004130:  20 70 6C 61 63 65 64 20 20 69 6E 20 20 6D 65 6D     placed  in  mem
004140:  6F 72 79 20 20 61 74 0D 0A 20 20 20 20 20 20 20    ory  at..       
004150:  77 65 6C 6C 2D 6B 6E 6F 77 6E 20 6C 6F 63 61 74    well-known locat
004160:  69 6F 6E 73 2E 20 54 68 65 20 6A 75 6D 70 73 20    ions. The jumps 
004170:  61 72 65 20 74 6F 20 74 68 65 20 20 76 61 72 69    are to the  vari
004180:  6F 75 73 20 20 72 6F 75 74 69 6E 65 73 20 20 69    ous  routines  i
004190:  6E 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 66    n  the..       f
0041A0:  69 72 6D 77 61 72 65 20 74 68 61 74 20 74 68 65    irmware that the
0041B0:  20 75 73 65 72 20 6D 69 67 68 74 20 77 61 6E 74     user might want
0041C0:  20 74 6F 20 63 61 6C 6C 2E 20 50 72 6F 67 72 61     to call. Progra
0041D0:  6D 73 20 74 68 61 74 20 6E 65 65 64 20 20 74 6F    ms that need  to
0041E0:  20 20 75 73 65 0D 0A 20 20 20 20 20 20 20 74 68      use..       th
0041F0:  65 20 66 61 63 69 6C 69 74 69 65 73 20 70 72 6F    e facilities pro
004200:  76 69 64 65 64 20 62 79 20 74 68 65 20 72 6F 75    vided by the rou
004210:  74 69 6E 65 73 20 69 6E 20 74 68 65 20 6A 75 6D    tines in the jum
004220:  70 62 6C 6F 63 6B 20 20 73 68 6F 75 6C 64 20 20    pblock  should  
004230:  63 61 6C 6C 0D 0A 20 20 20 20 20 20 20 74 68 65    call..       the
004240:  20 61 70 70 72 6F 70 72 69 61 74 65 20 6A 75 6D     appropriate jum
004250:  70 62 6C 6F 63 6B 20 65 6E 74 72 69 65 73 2E 0D    pblock entries..
004260:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74    .....       If t
004270:  68 65 20 66 69 72 6D 77 61 72 65 20 69 73 20 61    he firmware is a
004280:  6C 74 65 72 65 64 20 74 68 65 6E 20 69 74 20 69    ltered then it i
004290:  73 20 71 75 69 74 65 20 6C 69 6B 65 6C 79 20 74    s quite likely t
0042A0:  68 61 74 20 74 68 65 20 20 61 64 64 72 65 73 73    hat the  address
0042B0:  65 73 0D 0A 20 20 20 20 20 20 20 6F 66 20 73 6F    es..       of so
0042C0:  6D 65 20 6F 66 20 74 68 65 20 72 6F 75 74 69 6E    me of the routin
0042D0:  65 73 20 61 76 61 69 6C 61 62 6C 65 20 74 6F 20    es available to 
0042E0:  74 68 65 20 75 73 65 72 20 77 69 6C 6C 20 63 68    the user will ch
0042F0:  61 6E 67 65 2E 20 42 79 20 20 6B 65 65 70 69 6E    ange. By  keepin
004300:  67 0D 0A 20 20 20 20 20 20 20 74 68 65 20 61 64    g..       the ad
004310:  64 72 65 73 73 20 6F 66 20 74 68 65 20 6A 75 6D    dress of the jum
004320:  70 62 6C 6F 63 6B 20 63 6F 6E 73 74 61 6E 74 20    pblock constant 
004330:  62 75 74 20 61 6C 74 65 72 69 6E 67 20 74 68 65    but altering the
004340:  20 65 6E 74 72 69 65 73 20 69 6E 20 20 74 68 65     entries in  the
004350:  0D 0A 20 20 20 20 20 20 20 6A 75 6D 70 62 6C 6F    ..       jumpblo
004360:  63 6B 20 73 6F 20 74 68 61 74 20 74 68 65 79 20    ck so that they 
004370:  6A 75 6D 70 20 74 6F 20 74 68 65 20 6E 65 77 20    jump to the new 
004380:  61 64 64 72 65 73 73 65 73 20 6F 66 20 74 68 65    addresses of the
004390:  20 72 6F 75 74 69 6E 65 73 2C 20 20 74 68 65 0D     routines,  the.
0043A0:  0A 20 20 20 20 20 20 20 63 68 61 6E 67 65 20 69    .       change i
0043B0:  73 20 68 69 64 64 65 6E 20 66 72 6F 6D 20 74 68    s hidden from th
0043C0:  65 20 75 73 65 72 20 28 70 72 6F 76 69 64 69 6E    e user (providin
0043D0:  67 20 74 68 61 74 20 20 74 68 65 20 20 75 73 65    g that  the  use
0043E0:  72 20 20 69 73 20 20 63 61 6C 6C 69 6E 67 0D 0A    r  is  calling..
0043F0:  20 20 20 20 20 20 20 72 6F 75 74 69 6E 65 73 20           routines 
004400:  20 76 69 61 20 20 74 68 65 20 20 6A 75 6D 70 62     via  the  jumpb
004410:  6C 6F 63 6B 20 20 61 6E 64 20 20 69 73 20 20 6E    lock  and  is  n
004420:  6F 74 20 20 61 63 63 65 73 73 69 6E 67 20 20 74    ot  accessing  t
004430:  68 65 20 20 20 66 69 72 6D 77 61 72 65 0D 0A 20    he   firmware.. 
004440:  20 20 20 20 20 20 64 69 72 65 63 74 6C 79 29 2E          directly).
004450:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 6F 20    ......       To 
004460:  6D 61 6B 65 20 74 68 65 20 63 68 61 6E 67 65 20    make the change 
004470:  74 6F 20 74 68 65 20 66 69 72 6D 77 61 72 65 20    to the firmware 
004480:  63 6F 6D 70 6C 65 74 65 6C 79 20 68 69 64 64 65    completely hidde
004490:  6E 20 66 72 6F 6D 20 74 68 65 20 75 73 65 72 20    n from the user 
0044A0:  20 69 74 0D 0A 20 20 20 20 20 20 20 69 73 20 61     it..       is a
0044B0:  6C 73 6F 20 6E 65 63 65 73 73 61 72 79 20 74 6F    lso necessary to
0044C0:  20 20 6B 65 65 70 20 20 74 68 65 20 20 65 6E 74      keep  the  ent
0044D0:  72 79 20 20 61 6E 64 20 20 65 78 69 74 20 20 63    ry  and  exit  c
0044E0:  6F 6E 64 69 74 69 6F 6E 73 20 20 6F 66 20 20 74    onditions  of  t
0044F0:  68 65 0D 0A 20 20 20 20 20 20 20 72 6F 75 74 69    he..       routi
004500:  6E 65 73 20 61 63 63 65 73 73 65 64 20 76 69 61    nes accessed via
004510:  20 74 68 65 20 6A 75 6D 70 62 6C 6F 63 6B 20 63     the jumpblock c
004520:  6F 6E 73 74 61 6E 74 2E 20 54 68 65 20 67 72 65    onstant. The gre
004530:  61 74 65 72 20 70 61 72 74 20 6F 66 20 74 68 69    ater part of thi
004540:  73 0D 0A 20 20 20 20 20 20 20 6D 61 6E 75 61 6C    s..       manual
004550:  20 69 73 20 74 61 6B 65 6E 20 75 70 20 77 69 74     is taken up wit
004560:  68 20 74 68 65 20 64 65 74 61 69 6C 65 64 20 65    h the detailed e
004570:  6E 74 72 79 20 61 6E 64 20 20 65 78 69 74 20 20    ntry and  exit  
004580:  72 65 71 75 69 72 65 6D 65 6E 74 73 20 20 6F 66    requirements  of
004590:  0D 0A 20 20 20 20 20 20 20 74 68 65 20 6A 75 6D    ..       the jum
0045A0:  70 62 6C 6F 63 6B 20 65 6E 74 72 69 65 73 2E 0D    pblock entries..
0045B0:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 6A 75    ...       The ju
0045C0:  6D 70 62 6C 6F 63 6B 20 69 73 20 70 6C 61 63 65    mpblock is place
0045D0:  64 20 69 6E 20 52 41 4D 20 73 6F 20 74 68 61 74    d in RAM so that
0045E0:  20 74 68 65 20 75 73 65 72 20 63 61 6E 20 61 6C     the user can al
0045F0:  74 65 72 20 74 68 65 20 20 65 6E 74 72 69 65 73    ter the  entries
004600:  0D 0A 20 20 20 20 20 20 20 69 6E 20 69 74 2E 20    ..       in it. 
004610:  54 68 69 73 20 61 6C 6C 6F 77 73 20 74 68 65 20    This allows the 
004620:  75 73 65 72 20 74 6F 20 74 72 61 70 20 70 61 72    user to trap par
004630:  74 69 63 75 6C 61 72 20 65 6E 74 72 69 65 73 20    ticular entries 
004640:  61 6E 64 20 20 73 75 62 73 74 69 74 75 74 65 0D    and  substitute.
004650:  0A 20 20 20 20 20 20 20 61 20 6E 65 77 20 20 72    .       a new  r
004660:  6F 75 74 69 6E 65 20 20 74 68 61 74 20 20 77 69    outine  that  wi
004670:  6C 6C 20 20 72 65 70 6C 61 63 65 20 20 74 68 65    ll  replace  the
004680:  20 20 73 74 61 6E 64 61 72 64 20 20 66 69 72 6D      standard  firm
004690:  77 61 72 65 20 20 72 6F 75 74 69 6E 65 2E 0D 0A    ware  routine...
0046A0:  20 20 20 20 20 20 20 50 72 6F 76 69 64 65 64 20           Provided 
0046B0:  74 68 61 74 20 74 68 65 20 6E 65 77 20 72 6F 75    that the new rou
0046C0:  74 69 6E 65 20 6F 62 65 79 73 20 74 68 65 20 65    tine obeys the e
0046D0:  6E 74 72 79 20 61 6E 64 20 65 78 69 74 20 72 65    ntry and exit re
0046E0:  71 75 69 72 65 6D 65 6E 74 73 20 6F 66 0D 0A 20    quirements of.. 
0046F0:  20 20 20 20 20 20 74 68 65 20 66 69 72 6D 77 61          the firmwa
004700:  72 65 20 72 6F 75 74 69 6E 65 2C 20 74 68 65 20    re routine, the 
004710:  73 75 62 73 74 69 74 75 74 69 6F 6E 20 77 69 6C    substitution wil
004720:  6C 20 6E 6F 74 20 75 70 73 65 74 20 70 72 6F 67    l not upset prog
004730:  72 61 6D 73 20 75 6E 61 77 61 72 65 0D 0A 20 20    rams unaware..  
004740:  20 20 20 20 20 6F 66 20 74 68 65 20 63 68 61 6E         of the chan
004750:  67 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    ge...........   
004760:  20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43 34        AMSTRAD CPC4
004770:  36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D    64/664/6128 FIRM
004780:  57 41 52 45 20 20 20 20 20 20 20 20 20 20 20 20    WARE            
004790:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0047A0:  20 20 70 61 67 65 20 31 2E 35 0D 0A 1A 6E 75 61      page 1.5...nua
0047B0:  6C 20 64 65 73 63 72 69 62 65 73 20 74 68 65 20    l describes the 
0047C0:  66 69 72 6D 77 61 72 65 20 6F 66 20 20 74 68 65    firmware of  the
0047D0:  20 20 41 6D 73 74 72 61 64 20 20 43 50 43 20 20      Amstrad  CPC  
0047E0:  34 36 34 2F 36 36 34 2F 36 31 32 38 0D 0A 20 20    464/664/6128..  
0047F0:  20 20 20 20 20 6D 69 63 72 6F 63 6F 6D 70 75 74         microcomput
004800:  0D 0A 20 20 20 20 20 20 20 69 6E 20 69 74 2E 20    ..       in it. 
004810:  54 68 69 73 20 61 6C 6C 6F 77 73 20 74 68 65 20    This allows the 
004820:  75 73 65 72 20 74 6F 20 74 72 61 70 20 70 61 72    user to trap par
004830:  74 69 63 75 6C 61 72 20 65 6E 74 72 69 65 73 20    ticular entries 
004840:  61 6E 64 20 20 73 75 62 73 74 69 74 75 74 65 0D    and  substitute.
004850:  0A 20 20 20 20 20 20 20 61 20 6E 65 77 20 20 72    .       a new  r
004860:  6F 75 74 69 6E 65 20 20 74 68 61 74 20 20 77 69    outine  that  wi
004870:  6C 6C 20 20 72 65 70 6C 61 63 65 20 20 74 68 65    ll  replace  the
004880:  20 20 73 74 61 6E 64 61 72 64 20 20 66 69 72 6D      standard  firm
004890:  77 61 72 65 20 20 72 6F 75 74 69 6E 65 2E 0D 0A    ware  routine...
0048A0:  20 20 20 20 20 20 20 50 72 6F 76 69 64 65 64 20           Provided 
0048B0:  74 68 61 74 20 74 68 65 20 6E 65 77 20 72 6F 75    that the new rou
0048C0:  74 69 6E 65 20 6F 62 65 79 73 20 74 68 65 20 65    tine obeys the e
0048D0:  6E 74 72 79 20 61 6E 64 20 65 78 69 74 20 72 65    ntry and exit re
0048E0:  71 75 69 72 65 6D 65 6E 74 73 20 6F 66 0D 0A 20    quirements of.. 
0048F0:  20 20 20 20 20 20 74 68 65 20 66 69 72 6D 77 61          the firmwa
004900:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
004910:  20 20 20 54 68 65 72 65 20 61 72 65 20 66 6F 75       There are fou
004920:  72 20 6A 75 6D 70 62 6C 6F 63 6B 73 2E 20 54 68    r jumpblocks. Th
004930:  65 73 65 20 61 72 65 20 61 6C 6C 20 6C 69 73 74    ese are all list
004940:  65 64 20 20 69 6E 20 20 73 65 63 74 69 6F 6E 20    ed  in  section 
004950:  20 31 34 2E 20 20 54 68 65 0D 0A 20 20 20 20 20     14.  The..     
004960:  20 20 66 69 72 73 74 20 61 6E 64 20 6C 61 72 67      first and larg
004970:  65 73 74 20 20 6A 75 6D 70 62 6C 6F 63 6B 20 20    est  jumpblock  
004980:  69 73 20 20 74 68 65 20 20 6D 61 69 6E 20 20 66    is  the  main  f
004990:  69 72 6D 77 61 72 65 20 20 6A 75 6D 70 62 6C 6F    irmware  jumpblo
0049A0:  63 6B 20 20 28 73 65 65 0D 0A 20 20 20 20 20 20    ck  (see..      
0049B0:  20 73 65 63 74 69 6F 6E 73 20 31 34 2E 31 20 61     sections 14.1 a
0049C0:  6E 64 20 31 35 29 2E 20 54 68 69 73 20 61 6C 6C    nd 15). This all
0049D0:  6F 77 73 20 74 68 65 20 20 75 73 65 72 20 20 74    ows the  user  t
0049E0:  6F 20 20 63 61 6C 6C 20 20 6D 6F 73 74 20 20 66    o  call  most  f
0049F0:  69 72 6D 77 61 72 65 0D 0A 20 20 20 20 20 20 20    irmware..       
004A00:  72 6F 75 74 69 6E 65 73 2E 20 54 68 65 20 73 65    routines. The se
004A10:  63 6F 6E 64 20 6A 75 6D 70 62 6C 6F 63 6B 20 20    cond jumpblock  
004A20:  69 73 20 20 74 68 65 20 20 69 6E 64 69 72 65 63    is  the  indirec
004A30:  74 69 6F 6E 73 20 20 6A 75 6D 70 62 6C 6F 63 6B    tions  jumpblock
004A40:  20 20 28 73 65 65 0D 0A 20 20 20 20 20 20 20 73      (see..       s
004A50:  65 63 74 69 6F 6E 73 20 31 34 2E 32 20 61 6E 64    ections 14.2 and
004A60:  20 31 36 29 2E 20 54 68 65 20 65 6E 74 72 69 65     16). The entrie
004A70:  73 20 69 6E 20 74 68 69 73 20 6A 75 6D 70 62 6C    s in this jumpbl
004A80:  6F 63 6B 20 61 72 65 20 75 73 65 64 20 20 62 79    ock are used  by
004A90:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 66 69      the..       fi
004AA0:  72 6D 77 61 72 65 20 61 74 20 6B 65 79 20 6D 6F    rmware at key mo
004AB0:  6D 65 6E 74 73 20 69 6E 20 6F 72 64 65 72 20 74    ments in order t
004AC0:  6F 20 61 6C 6C 6F 77 20 74 68 65 20 75 73 65 72    o allow the user
004AD0:  20 74 6F 20 61 6C 74 65 72 20 74 68 65 20 61 63     to alter the ac
004AE0:  74 69 6F 6E 0D 0A 20 20 20 20 20 20 20 6F 66 20    tion..       of 
004AF0:  74 68 65 20 66 69 72 6D 77 61 72 65 2E 20 54 68    the firmware. Th
004B00:  65 20 6C 61 73 74 20 74 77 6F 20 6A 75 6D 70 62    e last two jumpb
004B10:  6C 6F 63 6B 73 20 61 72 65 20 72 61 74 68 65 72    locks are rather
004B20:  20 73 70 65 63 69 61 6C 2E 20 54 68 65 79 20 20     special. They  
004B30:  61 72 65 0D 0A 20 20 20 20 20 20 20 74 6F 20 64    are..       to d
004B40:  6F 20 77 69 74 68 20 74 68 65 20 4B 65 72 6E 65    o with the Kerne
004B50:  6C 20 61 6E 64 20 61 6C 6C 6F 77 20 52 4F 4D 73    l and allow ROMs
004B60:  20 74 6F 20 62 65 20 20 65 6E 61 62 6C 65 64 20     to be  enabled 
004B70:  20 61 6E 64 20 20 72 6F 75 74 69 6E 65 73 20 20     and  routines  
004B80:  69 6E 0D 0A 20 20 20 20 20 20 20 52 4F 4D 73 20    in..       ROMs 
004B90:  74 6F 20 62 65 20 63 61 6C 6C 65 64 2E 20 28 53    to be called. (S
004BA0:  65 65 20 73 65 63 74 69 6F 6E 73 20 31 34 2E 33    ee sections 14.3
004BB0:  2C 31 34 2E 34 2C 31 37 20 61 6E 64 20 31 38 29    ,14.4,17 and 18)
004BC0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 53 65    .......       Se
004BD0:  63 74 69 6F 6E 20 31 2E 37 20 62 65 6C 6F 77 20    ction 1.7 below 
004BE0:  67 69 76 65 73 20 61 6E 20 65 78 61 6D 70 6C 65    gives an example
004BF0:  20 6F 66 20 68 6F 77 20 61 20 6A 75 6D 70 62 6C     of how a jumpbl
004C00:  6F 63 6B 20 65 6E 74 72 79 20 20 6D 69 67 68 74    ock entry  might
004C10:  20 20 62 65 0D 0A 20 20 20 20 20 20 20 63 68 61      be..       cha
004C20:  6E 67 65 64 20 74 6F 20 61 6C 74 65 72 20 74 68    nged to alter th
004C30:  65 20 61 63 74 69 6F 6E 20 6F 66 20 74 68 65 20    e action of the 
004C40:  66 69 72 6D 77 61 72 65 2E 0D 0A 0D 0A 0D 0A 20    firmware....... 
004C50:  20 20 20 20 20 20 31 2E 35 20 43 6F 6E 76 65 6E          1.5 Conven
004C60:  74 69 6F 6E 73 2E 0D 0A 0D 0A 20 20 20 20 20 20    tions.....      
004C70:  20 61 2E 20 4E 6F 74 61 74 69 6F 6E 0D 0A 0D 0A     a. Notation....
004C80:  20 20 20 20 20 20 20 50 72 6F 63 65 73 73 6F 72           Processor
004C90:  20 69 6E 73 74 72 75 63 74 69 6F 6E 73 20 61 72     instructions ar
004CA0:  65 20 67 65 6E 65 72 61 6C 6C 79 20 72 65 66 65    e generally refe
004CB0:  72 72 65 64 20 74 6F 20 62 79 20 74 68 65 69 72    rred to by their
004CC0:  20 73 74 61 6E 64 61 72 64 20 5A 38 30 0D 0A 20     standard Z80.. 
004CD0:  20 20 20 20 20 20 6D 6E 65 6D 6F 6E 69 63 73 2E          mnemonics.
004CE0:  20 20 54 68 65 20 20 65 78 63 65 70 74 69 6F 6E      The  exception
004CF0:  73 20 20 74 68 61 74 20 20 70 72 6F 76 65 20 20    s  that  prove  
004D00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
004D10:  04 00 00 00 02 09 50 E5 04 00 C1 02 00 00 00 02    ......P.........
004D20:  04 00 C2 02 00 00 00 02 04 00 C3 02 00 00 00 02    ................
004D30:  04 00 C4 02 00 00 00 02 04 00 C5 02 00 00 00 02    ................
004D40:  04 00 C6 02 00 00 00 02 04 00 C7 02 00 00 00 02    ................
004D50:  04 00 C8 02 00 00 00 02 04 00 C9 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:  74 68 65 20 20 72 75 6C 65 20 20 61 72 65 20 20    the  rule  are  
004E10:  74 68 65 20 20 72 65 73 74 61 72 74 0D 0A 20 20    the  restart..  
004E20:  20 20 20 20 20 69 6E 73 74 72 75 63 74 69 6F 6E         instruction
004E30:  73 2E 20 54 68 65 20 6D 6E 65 6D 6F 6E 69 63 73    s. The mnemonics
004E40:  20 52 53 54 20 30 2E 2E 52 53 54 20 37 20 61 72     RST 0..RST 7 ar
004E50:  65 20 75 73 65 64 20 72 61 74 68 65 72 20 74 68    e used rather th
004E60:  61 6E 20 74 68 65 20 6D 6F 72 65 0D 0A 20 20 20    an the more..   
004E70:  20 20 20 20 75 73 75 61 6C 20 5A 38 30 20 6D 6E        usual Z80 mn
004E80:  65 6D 6F 6E 69 63 73 20 52 53 54 20 23 30 30 2E    emonics RST #00.
004E90:  2E 52 53 54 20 23 33 38 2E 0D 0A 0D 0A 0D 0A 20    .RST #38....... 
004EA0:  20 20 20 20 20 20 54 68 65 20 72 65 67 69 73 74          The regist
004EB0:  65 72 73 20 61 72 65 20 61 6C 73 6F 20 72 65 66    ers are also ref
004EC0:  65 72 72 65 64 20 74 6F 20 62 79 20 74 68 65 69    erred to by thei
004ED0:  72 20 73 74 61 6E 64 61 72 64 20 20 5A 38 30 20    r standard  Z80 
004EE0:  20 6E 61 6D 65 73 2E 20 20 54 68 65 0D 0A 20 20     names.  The..  
004EF0:  20 20 20 20 20 66 6C 61 67 20 72 65 67 69 73 74         flag regist
004F00:  65 72 20 61 73 20 61 20 77 68 6F 6C 65 20 69 73    er as a whole is
004F10:  20 72 65 66 65 72 72 65 64 20 74 6F 20 61 73 20     referred to as 
004F20:  46 20 62 75 74 20 74 68 65 20 69 6E 64 69 76 69    F but the indivi
004F30:  64 75 61 6C 20 20 66 6C 61 67 73 0D 0A 20 20 20    dual  flags..   
004F40:  20 20 20 20 61 72 65 20 63 61 6C 6C 65 64 20 62        are called b
004F50:  79 20 74 68 65 69 72 20 66 75 6C 6C 20 6E 61 6D    y their full nam
004F60:  65 2C 20 65 2E 67 2E 20 63 61 72 72 79 2E 20 54    e, e.g. carry. T
004F70:  68 65 20 66 6C 61 67 73 20 61 72 65 20 20 73 61    he flags are  sa
004F80:  69 64 20 20 74 6F 20 20 62 65 0D 0A 20 20 20 20    id  to  be..    
004F90:  20 20 20 74 72 75 65 20 77 68 65 6E 20 74 68 65       true when the
004FA0:  79 20 61 72 65 20 73 65 74 20 61 6E 64 20 66 61    y are set and fa
004FB0:  6C 73 65 20 77 68 65 6E 20 74 68 65 79 20 61 72    lse when they ar
004FC0:  65 20 63 6C 65 61 72 2E 20 20 54 68 75 73 20 20    e clear.  Thus  
004FD0:  61 20 20 4A 50 20 20 4E 43 0D 0A 20 20 20 20 20    a  JP  NC..     
004FE0:  20 20 69 6E 73 74 72 75 63 74 69 6F 6E 20 77 6F      instruction wo
004FF0:  75 6C 64 20 6A 75 6D 70 20 69 66 20 63 61 72 72    uld jump if carr
005000:  79 20 77 61 73 20 66 61 6C 73 65 20 61 6E 64 20    y was false and 
005010:  6E 6F 74 20 69 66 20 63 61 72 72 79 20 77 61 73    not if carry was
005020:  20 74 72 75 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20     true.......    
005030:  20 20 20 48 65 78 61 64 65 63 69 6D 61 6C 20 6E       Hexadecimal n
005040:  75 6D 62 65 72 73 20 61 72 65 20 69 6E 64 69 63    umbers are indic
005050:  61 74 65 64 20 62 79 20 70 72 65 66 69 78 69 6E    ated by prefixin
005060:  67 20 74 68 65 20 6E 75 6D 62 65 72 20 77 69 74    g the number wit
005070:  68 20 23 2C 20 74 68 75 73 0D 0A 20 20 20 20 20    h #, thus..     
005080:  20 20 23 37 46 20 69 73 20 74 68 65 20 6E 75 6D      #7F is the num
005090:  62 65 72 20 31 32 37 20 69 6E 20 68 65 78 2E 20    ber 127 in hex. 
0050A0:  41 6C 6C 20 6E 75 6D 62 65 72 73 20 6E 6F 74 20    All numbers not 
0050B0:  70 72 65 66 69 78 65 64 20 20 62 79 20 20 23 20    prefixed  by  # 
0050C0:  20 61 72 65 20 20 69 6E 0D 0A 20 20 20 20 20 20     are  in..      
0050D0:  20 64 65 63 69 6D 61 6C 2E 0D 0A 0D 0A 0D 0A 20     decimal....... 
0050E0:  20 20 20 20 20 20 4C 61 72 67 65 20 6E 75 6D 62          Large numb
0050F0:  65 72 73 20 61 72 65 20 6F 66 74 65 6E 20 61 62    ers are often ab
005100:  62 72 65 76 69 61 74 65 64 20 62 79 20 77 72 69    breviated by wri
005110:  74 69 6E 67 20 74 68 65 6D 20 61 73 20 61 20 20    ting them as a  
005120:  6D 75 6C 74 69 70 6C 65 20 20 6F 66 0D 0A 20 20    multiple  of..  
005130:  20 20 20 20 20 31 30 32 34 2E 20 46 6F 72 20 65         1024. For e
005140:  78 61 6D 70 6C 65 2C 20 33 32 4B 20 62 79 74 65    xample, 32K byte
005150:  73 20 6D 65 61 6E 73 20 33 32 20 74 69 6D 65 73    s means 32 times
005160:  20 31 30 32 34 20 28 69 2E 65 2E 20 33 32 37 36     1024 (i.e. 3276
005170:  38 29 20 62 79 74 65 73 2E 0D 0A 0D 0A 20 20 20    8) bytes.....   
005180:  20 20 20 20 62 2E 20 55 73 61 67 65 0D 0A 0D 0A        b. Usage....
005190:  20 20 20 20 20 20 20 52 6F 75 74 69 6E 65 73 2C           Routines,
0051A0:  20 77 68 65 72 65 20 70 6F 73 73 69 62 6C 65 2C     where possible,
0051B0:  20 74 61 6B 65 20 61 6E 64 20 72 65 74 75 72 6E     take and return
0051C0:  20 76 61 6C 75 65 73 20 69 6E 20 20 72 65 67 69     values in  regi
0051D0:  73 74 65 72 73 2E 20 20 57 68 65 72 65 0D 0A 20    sters.  Where.. 
0051E0:  20 20 20 20 20 20 6D 6F 72 65 20 69 6E 66 6F 72          more infor
0051F0:  6D 61 74 69 6F 6E 20 74 68 61 6E 20 6D 61 79 20    mation than may 
005200:  62 65 20 68 65 6C 64 20 69 6E 20 72 65 67 69 73    be held in regis
005210:  74 65 72 73 20 69 73 20 74 6F 20 62 65 20 20 70    ters is to be  p
005220:  61 73 73 65 64 20 20 74 6F 20 20 61 0D 0A 20 20    assed  to  a..  
005230:  20 20 20 20 20 72 6F 75 74 69 6E 65 2C 20 74 68         routine, th
005240:  65 20 61 64 64 72 65 73 73 20 6F 66 20 61 20 64    e address of a d
005250:  61 74 61 20 61 72 65 61 20 69 73 20 67 69 76 65    ata area is give
005260:  6E 2E 20 54 68 65 20 6C 6F 63 61 74 69 6F 6E 20    n. The location 
005270:  20 69 6E 20 20 6D 65 6D 6F 72 79 0D 0A 20 20 20     in  memory..   
005280:  20 20 20 20 6F 66 20 74 68 65 73 65 20 64 61 74        of these dat
005290:  61 20 61 72 65 61 73 20 69 73 20 73 6F 6D 65 74    a areas is somet
0052A0:  69 6D 65 73 20 63 72 69 74 69 63 61 6C 2C 20 73    imes critical, s
0052B0:  65 65 20 73 65 63 74 69 6F 6E 20 32 2E 34 2E 0D    ee section 2.4..
0052C0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 57 68 65 72    .....       Wher
0052D0:  65 20 61 20 72 6F 75 74 69 6E 65 20 63 61 6E 20    e a routine can 
0052E0:  73 75 63 63 65 65 64 20 6F 72 20 66 61 69 6C 20    succeed or fail 
0052F0:  74 68 69 73 20 63 6F 6E 64 69 74 69 6F 6E 20 69    this condition i
005300:  73 20 6E 6F 72 6D 61 6C 6C 79 20 20 70 61 73 73    s normally  pass
005310:  65 64 0D 0A 20 20 20 20 20 20 20 62 61 63 6B 20    ed..       back 
005320:  69 6E 20 74 68 65 20 63 61 72 72 79 20 66 6C 61    in the carry fla
005330:  67 2E 20 43 61 72 72 79 20 74 72 75 65 20 6E 6F    g. Carry true no
005340:  72 6D 61 6C 6C 79 20 20 69 6D 70 6C 69 65 73 20    rmally  implies 
005350:  20 73 75 63 63 65 73 73 2C 20 20 77 68 69 6C 73     success,  whils
005360:  74 0D 0A 20 20 20 20 20 20 20 63 61 72 72 79 20    t..       carry 
005370:  66 61 6C 73 65 20 6E 6F 72 6D 61 6C 6C 79 20 69    false normally i
005380:  6D 70 6C 69 65 73 20 66 61 69 6C 75 72 65 2E 0D    mplies failure..
005390:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
0053A0:  61 6C 74 65 72 6E 61 74 65 20 72 65 67 69 73 74    alternate regist
0053B0:  65 72 20 73 65 74 2C 20 41 46 27 20 42 43 27 20    er set, AF' BC' 
0053C0:  44 45 27 20 48 4C 27 2C 20 69 73 20 72 65 73 65    DE' HL', is rese
0053D0:  72 76 65 64 20 20 66 6F 72 20 20 75 73 65 20 20    rved  for  use  
0053E0:  62 79 0D 0A 20 20 20 20 20 20 20 74 68 65 20 73    by..       the s
0053F0:  79 73 74 65 6D 2E 20 54 68 65 20 75 73 65 72 20    ystem. The user 
005400:  73 68 6F 75 6C 64 20 20 6E 6F 74 20 20 65 78 65    should  not  exe
005410:  63 75 74 65 20 20 61 6E 20 20 45 58 20 20 41 46    cute  an  EX  AF
005420:  2C 41 46 27 20 20 6F 72 20 20 61 6E 20 20 45 58    ,AF'  or  an  EX
005430:  58 0D 0A 20 20 20 20 20 20 20 69 6E 73 74 72 75    X..       instru
005440:  63 74 69 6F 6E 20 61 73 20 74 68 65 73 65 20 77    ction as these w
005450:  69 6C 6C 20 68 61 76 65 20 75 6E 66 6F 72 74 75    ill have unfortu
005460:  6E 61 74 65 20 63 6F 6E 73 65 71 75 65 6E 63 65    nate consequence
005470:  73 2E 20 28 53 65 65 20 41 70 70 65 6E 64 69 78    s. (See Appendix
005480:  0D 0A 20 20 20 20 20 20 20 58 49 20 66 6F 72 20    ..       XI for 
005490:  61 20 66 75 6C 6C 20 64 65 73 63 72 69 70 74 69    a full descripti
0054A0:  6F 6E 2E 29 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    on.)......      
0054B0:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
0054C0:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
0054D0:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
0054E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                   p
0054F0:  61 67 65 20 31 2E 36 0D 0A 0D 0A 0D 0A 0D 0A 0D    age 1.6.........
005500:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 63 2E 20 47    .....       c. G
005510:  65 6E 65 72 61 6C 0D 0A 0D 0A 20 20 20 20 20 20    eneral....      
005520:  20 54 68 65 20 6C 6F 67 69 63 61 6C 20 76 61 6C     The logical val
005530:  75 65 73 20 74 72 75 65 20 61 6E 64 20 66 61 6C    ues true and fal
005540:  73 65 20 61 72 65 20 67 65 6E 65 72 61 6C 6C 79    se are generally
005550:  20 72 65 70 72 65 73 65 6E 74 65 64 20 62 79 20     represented by 
005560:  23 46 46 20 61 6E 64 0D 0A 20 20 20 20 20 20 20    #FF and..       
005570:  23 30 30 20 72 65 73 70 65 63 74 69 76 65 6C 79    #00 respectively
005580:  2E 20 4F 66 74 65 6E 2C 20 68 6F 77 65 76 65 72    . Often, however
005590:  2C 20 61 6E 79 20 6E 6F 6E 2D 7A 65 72 6F 20 76    , any non-zero v
0055A0:  61 6C 75 65 20 69 73 20 74 61 6B 65 6E 20 74 6F    alue is taken to
0055B0:  20 20 6D 65 61 6E 0D 0A 20 20 20 20 20 20 20 74      mean..       t
0055C0:  72 75 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54    rue.....       T
0055D0:  68 65 20 62 69 74 73 20 69 6E 20 61 20 62 79 74    he bits in a byt
0055E0:  65 20 61 72 65 20 6E 75 6D 62 65 72 65 64 20 30    e are numbered 0
0055F0:  2E 2E 37 2C 20 20 77 69 74 68 20 20 62 69 74 20    ..7,  with  bit 
005600:  20 30 20 20 62 65 69 6E 67 20 20 74 68 65 20 20     0  being  the  
005610:  6C 65 61 73 74 0D 0A 20 20 20 20 20 20 20 73 69    least..       si
005620:  67 6E 69 66 69 63 61 6E 74 20 62 69 74 20 61 6E    gnificant bit an
005630:  64 20 62 69 74 20 37 20 62 65 69 6E 67 20 74 68    d bit 7 being th
005640:  65 20 6D 6F 73 74 20 73 69 67 6E 69 66 69 63 61    e most significa
005650:  6E 74 20 62 69 74 2E 0D 0A 0D 0A 0D 0A 20 20 20    nt bit.......   
005660:  20 20 20 20 57 68 65 72 65 20 74 77 6F 20 62 79        Where two by
005670:  74 65 20 28 77 6F 72 64 29 20 76 61 6C 75 65 73    te (word) values
005680:  20 61 72 65 20 20 73 74 6F 72 65 64 20 20 28 69     are  stored  (i
005690:  6E 20 20 74 61 62 6C 65 73 20 20 65 74 63 29 20    n  tables  etc) 
0056A0:  20 74 68 65 79 20 20 61 72 65 0D 0A 20 20 20 20     they  are..    
0056B0:  20 20 20 61 6C 77 61 79 73 20 73 74 6F 72 65 64       always stored
0056C0:  20 77 69 74 68 20 74 68 65 20 20 6C 65 73 73 20     with the  less 
0056D0:  20 73 69 67 6E 69 66 69 63 61 6E 74 20 20 62 79     significant  by
0056E0:  74 65 20 20 66 69 72 73 74 20 20 61 6E 64 20 20    te  first  and  
0056F0:  74 68 65 20 20 6D 6F 72 65 0D 0A 20 20 20 20 20    the  more..     
005700:  20 20 73 69 67 6E 69 66 69 63 61 6E 74 20 62 79      significant by
005710:  74 65 20 73 65 63 6F 6E 64 2C 20 75 6E 6C 65 73    te second, unles
005720:  73 20 61 20 73 70 65 63 69 66 69 63 20 69 6E 64    s a specific ind
005730:  69 63 61 74 69 6F 6E 20 74 6F 20 74 68 65 20 20    ication to the  
005740:  63 6F 6E 74 72 61 72 79 0D 0A 20 20 20 20 20 20    contrary..      
005750:  20 69 73 20 67 69 76 65 6E 2E 20 54 68 69 73 20     is given. This 
005760:  69 73 20 69 6E 20 61 63 63 6F 72 64 61 6E 63 65    is in accordance
005770:  20 77 69 74 68 20 74 68 65 20 73 74 61 6E 64 61     with the standa
005780:  72 64 20 77 61 79 20 74 68 65 20 20 5A 38 30 20    rd way the  Z80 
005790:  20 73 74 6F 72 65 73 0D 0A 20 20 20 20 20 20 20     stores..       
0057A0:  77 6F 72 64 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    words.......    
0057B0:  20 20 20 54 61 62 6C 65 73 20 61 6E 64 20 74 68       Tables and th
0057C0:  65 20 6C 69 6B 65 20 61 72 65 20 61 6C 77 61 79    e like are alway
0057D0:  73 20 6C 61 69 64 20 6F 75 74 20 77 69 74 68 20    s laid out with 
0057E0:  62 79 74 65 20 30 20 20 62 65 69 6E 67 20 20 74    byte 0  being  t
0057F0:  68 65 20 20 66 69 72 73 74 0D 0A 20 20 20 20 20    he  first..     
005800:  20 20 62 79 74 65 20 6F 66 20 74 68 65 20 74 61      byte of the ta
005810:  62 6C 65 2E 20 57 68 65 6E 20 74 68 65 20 61 64    ble. When the ad
005820:  64 72 65 73 73 20 6F 66 20 73 75 63 68 20 61 20    dress of such a 
005830:  74 61 62 6C 65 20 69 73 20 67 69 76 65 6E 20 20    table is given  
005840:  74 68 69 73 20 20 69 73 0D 0A 20 20 20 20 20 20    this  is..      
005850:  20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20     the address of 
005860:  62 79 74 65 20 30 20 6F 66 20 74 68 65 20 74 61    byte 0 of the ta
005870:  62 6C 65 20 75 6E 6C 65 73 73 20 6F 74 68 65 72    ble unless other
005880:  77 69 73 65 20 69 6E 64 69 63 61 74 65 64 2E 0D    wise indicated..
005890:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 57 68 65 6E    .....       When
0058A0:  20 74 68 65 20 63 6F 6D 70 75 74 65 72 20 69 73     the computer is
0058B0:  20 74 75 72 6E 65 64 20 6F 6E 20 28 6F 72 20 77     turned on (or w
0058C0:  68 65 6E 20 69 74 20 20 69 73 20 20 72 65 73 65    hen it  is  rese
0058D0:  74 29 20 20 69 74 20 20 63 6F 6D 70 6C 65 74 65    t)  it  complete
0058E0:  6C 79 0D 0A 20 20 20 20 20 20 20 69 6E 69 74 69    ly..       initi
0058F0:  61 6C 69 7A 65 73 20 69 74 73 65 6C 66 20 62 65    alizes itself be
005900:  66 6F 72 65 20 72 75 6E 6E 69 6E 67 20 61 6E 79    fore running any
005910:  20 70 72 6F 67 72 61 6D 2E 20 54 68 69 73 20 69     program. This i
005920:  6E 69 74 69 61 6C 69 7A 61 74 69 6F 6E 20 20 69    nitialization  i
005930:  73 0D 0A 20 20 20 20 20 20 20 6B 6E 6F 77 6E 20    s..       known 
005940:  61 73 20 65 61 72 6C 79 20 6D 6F 72 6E 69 6E 67    as early morning
005950:  20 73 74 61 72 74 75 70 2C 20 61 62 62 72 65 76     startup, abbrev
005960:  69 61 74 65 64 20 74 6F 20 45 4D 53 20 66 72 6F    iated to EMS fro
005970:  6D 20 6E 6F 77 20 6F 6E 2E 0D 0A 0D 0A 0D 0A 20    m now on....... 
005980:  20 20 20 20 20 20 31 2E 36 20 52 6F 75 74 69 6E          1.6 Routin
005990:  65 20 44 6F 63 75 6D 65 6E 74 61 74 69 6F 6E 2E    e Documentation.
0059A0:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 61 63 68 20    ....       Each 
0059B0:  72 6F 75 74 69 6E 65 20 64 65 73 63 72 69 62 65    routine describe
0059C0:  64 20 69 6E 20 68 69 73 20 6D 61 6E 75 61 6C 20    d in his manual 
0059D0:  68 61 73 20 20 65 6E 74 72 79 20 20 61 6E 64 20    has  entry  and 
0059E0:  20 65 78 69 74 20 20 63 6F 6E 64 69 74 69 6F 6E     exit  condition
0059F0:  73 0D 0A 20 20 20 20 20 20 20 61 73 73 6F 63 69    s..       associ
005A00:  61 74 65 64 20 77 69 74 68 20 69 74 2E 20 57 68    ated with it. Wh
005A10:  65 72 65 20 74 68 65 72 65 20 61 72 65 20 6F 74    ere there are ot
005A20:  68 65 72 20 70 6F 69 6E 74 73 20 6F 66 20 69 6E    her points of in
005A30:  74 65 72 65 73 74 20 61 62 6F 75 74 20 74 68 65    terest about the
005A40:  0D 0A 20 20 20 20 20 20 20 72 6F 75 74 69 6E 65    ..       routine
005A50:  20 74 68 65 73 65 20 61 72 65 20 6E 6F 72 6D 61     these are norma
005A60:  6C 6C 79 20 67 69 76 65 6E 20 69 6E 20 61 20 73    lly given in a s
005A70:  65 63 74 69 6F 6E 20 61 66 74 65 72 20 74 68 65    ection after the
005A80:  20 65 6E 74 72 79 20 61 6E 64 20 65 78 69 74 0D     entry and exit.
005A90:  0A 20 20 20 20 20 20 20 63 6F 6E 64 69 74 69 6F    .       conditio
005AA0:  6E 73 2E 20 53 75 63 68 20 70 6F 69 6E 74 73 20    ns. Such points 
005AB0:  69 6E 63 6C 75 64 65 20 77 68 65 74 68 65 72 20    include whether 
005AC0:  69 6E 74 65 72 72 75 70 74 73 20 61 72 65 20 65    interrupts are e
005AD0:  6E 61 62 6C 65 64 20 20 61 6E 64 20 20 61 0D 0A    nabled  and  a..
005AE0:  20 20 20 20 20 20 20 66 75 6C 6C 65 72 20 64 65           fuller de
005AF0:  73 63 72 69 70 74 69 6F 6E 20 6F 66 20 74 68 65    scription of the
005B00:  20 70 61 72 61 6D 65 74 65 72 73 20 61 6E 64 20     parameters and 
005B10:  73 69 64 65 20 65 66 66 65 63 74 73 20 6F 66 20    side effects of 
005B20:  74 68 65 20 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A    the routine.....
005B30:  0D 0A 20 20 20 20 20 20 20 54 68 65 72 65 20 61    ..       There a
005B40:  72 65 20 74 77 6F 20 72 65 61 73 6F 6E 73 20 66    re two reasons f
005B50:  6F 72 20 70 72 6F 76 69 64 69 6E 67 20 74 68 69    or providing thi
005B60:  73 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 2E 20 46    s information. F
005B70:  69 72 73 74 6C 79 20 69 74 20 74 65 6C 6C 73 0D    irstly it tells.
005B80:  0A 20 20 20 20 20 20 20 74 68 65 20 75 73 65 20    .       the use 
005B90:  77 68 61 74 20 77 69 6C 6C 20 68 61 70 70 65 6E    what will happen
005BA0:  20 77 68 65 6E 20 74 68 65 20 72 6F 75 74 69 6E     when the routin
005BB0:  65 20 69 73 20 63 61 6C 6C 65 64 2E 20 53 65 63    e is called. Sec
005BC0:  6F 6E 64 6C 79 20 69 74 20 74 65 6C 6C 73 0D 0A    ondly it tells..
005BD0:  20 20 20 20 20 20 20 74 68 65 20 75 73 65 72 20           the user 
005BE0:  77 68 61 74 20 61 20 72 65 70 6C 61 63 65 6D 65    what a replaceme
005BF0:  6E 74 20 72 6F 75 74 69 6E 65 20 69 73 20 65 78    nt routine is ex
005C00:  70 65 63 74 65 64 20 74 6F 20 64 6F 2E 0D 0A 0D    pected to do....
005C10:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 65 6E    ...       The en
005C20:  74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 20 74    try conditions t
005C30:  65 6C 6C 20 74 68 65 20 63 61 6C 6C 65 72 20 6F    ell the caller o
005C40:  66 20 74 68 65 20 72 6F 75 74 69 6E 65 20 77 68    f the routine wh
005C50:  61 74 20 20 74 68 65 20 20 72 6F 75 74 69 6E 65    at  the  routine
005C60:  0D 0A 20 20 20 20 20 20 20 65 78 70 65 63 74 73    ..       expects
005C70:  20 74 6F 20 62 65 20 20 70 61 73 73 65 64 20 20     to be  passed  
005C80:  74 6F 20 20 69 74 2E 20 20 57 68 65 6E 20 20 63    to  it.  When  c
005C90:  61 6C 6C 69 6E 67 20 20 61 20 20 72 6F 75 74 69    alling  a  routi
005CA0:  6E 65 20 20 61 6C 6C 20 20 76 61 6C 75 65 73 0D    ne  all  values.
005CB0:  0A 20 20 20 20 20 20 20 73 70 65 63 69 66 69 65    .       specifie
005CC0:  64 20 6D 75 73 74 20 62 65 20 73 75 70 70 6C 69    d must be suppli
005CD0:  65 64 2E 20 56 61 6C 75 65 73 20 6D 61 79 20 6F    ed. Values may o
005CE0:  6E 6C 79 20 20 62 65 20 20 6C 65 66 74 20 20 6F    nly  be  left  o
005CF0:  75 74 20 20 77 68 65 72 65 20 20 74 68 65 0D 0A    ut  where  the..
005D00:  20 20 20 20 20 20 20 72 6F 75 74 69 6E 65 20 64           routine d
005D10:  6F 63 75 6D 65 6E 74 73 20 74 68 61 74 20 74 68    ocuments that th
005D20:  65 79 20 61 72 65 20 6F 70 74 69 6F 6E 61 6C 2E    ey are optional.
005D30:  20 57 68 65 6E 20 70 72 6F 76 69 64 69 6E 67 20     When providing 
005D40:  61 20 72 65 70 6C 61 63 65 6D 65 6E 74 0D 0A 20    a replacement.. 
005D50:  20 20 20 20 20 20 72 6F 75 74 69 6E 65 20 74 6F          routine to
005D60:  20 66 69 74 20 74 68 69 73 20 69 6E 74 65 72 66     fit this interf
005D70:  61 63 65 20 6F 6E 6C 79 20 69 6E 66 6F 72 6D 61    ace only informa
005D80:  74 69 6F 6E 20 74 68 61 74 20 69 73 20 20 73 70    tion that is  sp
005D90:  65 63 69 66 69 65 64 20 20 6D 61 79 0D 0A 20 20    ecified  may..  
005DA0:  20 20 20 20 20 62 65 20 75 73 65 64 2C 20 61 6C         be used, al
005DB0:  74 68 6F 75 67 68 20 6E 6F 74 20 61 6C 6C 20 6F    though not all o
005DC0:  66 20 69 74 20 6E 65 65 64 20 62 65 20 75 73 65    f it need be use
005DD0:  64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    d.......       T
005DE0:  68 65 20 65 78 69 74 20 63 6F 6E 64 69 74 69 6F    he exit conditio
005DF0:  6E 73 20 74 65 6C 6C 20 74 68 65 20 63 61 6C 6C    ns tell the call
005E00:  65 72 20 77 68 61 74 20 20 76 61 6C 75 65 73 20    er what  values 
005E10:  20 74 68 65 20 20 72 6F 75 74 69 6E 65 20 20 70     the  routine  p
005E20:  61 73 73 65 73 0D 0A 20 20 20 20 20 20 20 62 61    asses..       ba
005E30:  63 6B 20 61 6E 64 20 77 68 69 63 68 20 70 72 6F    ck and which pro
005E40:  63 65 73 73 6F 72 20 72 65 67 69 73 74 65 72 73    cessor registers
005E50:  20 72 65 20 70 72 65 73 65 72 76 65 64 2E 20 20     re preserved.  
005E60:  52 65 67 69 73 74 65 72 73 20 20 74 68 61 74 20    Registers  that 
005E70:  20 61 72 65 0D 0A 20 20 20 20 20 20 20 64 6F 63     are..       doc
005E80:  75 6D 65 6E 74 65 64 20 61 73 20 62 65 69 6E 67    umented as being
005E90:  20 63 6F 72 72 75 70 74 65 64 20 6D 61 79 20 62     corrupted may b
005EA0:  65 20 63 68 61 6E 67 65 64 20 62 79 20 20 74 68    e changed by  th
005EB0:  65 20 20 72 6F 75 74 69 6E 65 20 20 6F 72 20 20    e  routine  or  
005EC0:  6D 61 79 0D 0A 20 20 20 20 20 20 20 6E 6F 74 2E    may..       not.
005ED0:  20 54 68 65 20 75 73 65 72 20 73 68 6F 75 6C 64     The user should
005EE0:  20 6E 6F 74 20 72 65 6C 79 20 6F 6E 20 20 74 68     not rely on  th
005EF0:  65 69 72 20 20 63 6F 6E 74 65 6E 74 73 2E 20 20    eir  contents.  
005F00:  57 68 65 6E 20 20 70 72 6F 76 69 64 69 6E 67 20    When  providing 
005F10:  20 61 0D 0A 20 20 20 20 20 20 20 72 6F 75 74 69     a..       routi
005F20:  6E 65 20 74 6F 20 66 69 74 20 74 68 69 73 20 69    ne to fit this i
005F30:  6E 74 65 72 66 61 63 65 20 69 74 20 69 73 20 65    nterface it is e
005F40:  78 74 72 65 6D 65 6C 79 20 69 6D 70 6F 72 74 61    xtremely importa
005F50:  6E 74 20 74 68 61 74 20 72 65 67 69 73 74 65 72    nt that register
005F60:  73 0D 0A 20 20 20 20 20 20 20 64 6F 63 75 6D 65    s..       docume
005F70:  6E 74 65 64 20 61 73 20 62 65 69 6E 67 20 70 72    nted as being pr
005F80:  65 73 65 72 76 65 64 20 61 72 65 20 69 6E 64 65    eserved are inde
005F90:  65 64 20 70 72 65 73 65 72 76 65 64 20 61 6E 64    ed preserved and
005FA0:  20 74 68 61 74 20 74 68 65 20 76 61 6C 75 65 73     that the values
005FB0:  0D 0A 20 20 20 20 20 20 20 72 65 74 75 72 6E 20    ..       return 
005FC0:  61 72 65 20 63 6F 6D 70 61 74 69 62 6C 65 20 77    are compatible w
005FD0:  69 74 68 20 74 68 65 20 6F 72 69 67 69 6E 61 6C    ith the original
005FE0:  20 72 6F 75 74 69 6E 65 2E 20 43 6F 72 72 75 70     routine. Corrup
005FF0:  74 69 6E 67 20 61 20 72 65 67 69 73 74 65 72 0D    ting a register.
006000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
006010:  05 00 00 00 02 09 50 E5 05 00 C1 02 00 00 00 02    ......P.........
006020:  05 00 C2 02 00 00 00 02 05 00 C3 02 00 00 00 02    ................
006030:  05 00 C4 02 00 00 00 02 05 00 C5 02 00 00 00 02    ................
006040:  05 00 C6 02 00 00 00 02 05 00 C7 02 00 00 00 02    ................
006050:  05 00 C8 02 00 00 00 02 05 00 C9 02 00 00 00 02    ................
006060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0060F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
006100:  0A 20 20 20 20 20 20 20 6F 72 20 6F 6D 69 74 74    .       or omitt
006110:  69 6E 67 20 61 20 72 65 73 75 6C 74 20 77 69 6C    ing a result wil
006120:  6C 20 75 73 75 61 6C 6C 79 20 63 61 75 73 65 20    l usually cause 
006130:  74 68 65 20 73 79 73 74 65 6D 20 74 6F 20 66 61    the system to fa
006140:  69 6C 2C 20 20 6F 66 74 65 6E 20 20 69 6E 0D 0A    il,  often  in..
006150:  20 20 20 20 20 20 20 73 75 62 74 6C 65 20 61 6E           subtle an
006160:  64 20 75 6E 65 78 70 65 63 74 65 64 20 77 61 79    d unexpected way
006170:  73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53    s.....       AMS
006180:  54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F    TRAD CPC464/664/
006190:  36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20    6128 FIRMWARE   
0061A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0061B0:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
0061C0:  31 2E 37 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    1.7.............
0061D0:  0A 20 20 20 20 20 20 20 4F 66 74 65 6E 20 61 20    .       Often a 
0061E0:  72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 68 61 76    routine will hav
0061F0:  65 20 64 69 66 66 65 72 65 6E 74 20 65 78 69 74    e different exit
006200:  20 63 6F 6E 64 69 74 69 6F 6E 73 20 64 65 70 65     conditions depe
006210:  6E 64 69 6E 67 20 6F 6E 20 20 73 6F 6D 65 0D 0A    nding on  some..
006220:  20 20 20 20 20 20 20 63 6F 6E 64 69 74 69 6F 6E           condition
006230:  20 6F 72 20 6F 74 68 65 72 20 28 75 73 75 61 6C     or other (usual
006240:  6C 79 20 77 68 65 74 68 65 72 20 69 74 20 77 6F    ly whether it wo
006250:  72 6B 65 64 20 6F 72 20 6E 6F 74 29 2E 20 49 6E    rked or not). In
006260:  20 74 68 65 73 65 20 20 63 61 73 65 73 0D 0A 20     these  cases.. 
006270:  20 20 20 20 20 20 74 68 65 20 73 70 65 63 69 66          the specif
006280:  69 63 20 64 69 66 66 65 72 65 6E 63 65 73 20 69    ic differences i
006290:  6E 20 74 68 65 20 65 78 69 74 20 63 6F 6E 64 69    n the exit condi
0062A0:  74 69 6F 6E 73 20 20 61 72 65 20 20 67 69 76 65    tions  are  give
0062B0:  6E 20 20 66 6F 72 20 20 65 61 63 68 0D 0A 20 20    n  for  each..  
0062C0:  20 20 20 20 20 63 61 73 65 20 61 6E 64 20 61 6C         case and al
0062D0:  6C 20 63 6F 6E 64 69 74 69 6F 6E 73 20 74 68 61    l conditions tha
0062E0:  74 20 72 65 6D 61 69 6E 20 74 68 65 20 73 61 6D    t remain the sam
0062F0:  65 20 69 72 72 65 73 70 65 63 74 69 76 65 20 6F    e irrespective o
006300:  66 20 74 68 65 20 20 63 61 73 65 0D 0A 20 20 20    f the  case..   
006310:  20 20 20 20 61 72 65 20 67 69 76 65 6E 20 69 6E        are given in
006320:  20 61 20 73 65 70 61 72 61 74 65 20 73 65 63 74     a separate sect
006330:  69 6F 6E 20 28 6D 61 72 6B 65 64 20 27 61 6C 77    ion (marked 'alw
006340:  61 79 73 27 29 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    ays').......    
006350:  20 20 20 54 68 65 72 65 20 61 72 65 20 61 62 75       There are abu
006360:  6E 64 61 6E 74 20 65 78 61 6D 70 6C 65 73 20 6F    ndant examples o
006370:  66 20 72 6F 75 74 69 6E 65 20 69 6E 74 65 72 66    f routine interf
006380:  61 63 65 73 20 69 6E 20 73 65 63 74 69 6F 6E 20    aces in section 
006390:  31 35 20 74 6F 20 31 38 2E 0D 0A 0D 0A 0D 0A 20    15 to 18....... 
0063A0:  20 20 20 20 20 20 31 2E 37 20 45 78 61 6D 70 6C          1.7 Exampl
0063B0:  65 20 6F 66 20 50 61 74 63 68 69 6E 67 20 61 20    e of Patching a 
0063C0:  4A 75 6D 70 62 6C 6F 63 6B 2E 0D 0A 0D 0A 0D 0A    Jumpblock.......
0063D0:  20 20 20 20 20 20 20 54 68 65 20 66 6F 6C 6C 6F           The follo
0063E0:  77 69 6E 67 20 69 73 20 61 6E 20 65 78 61 6D 70    wing is an examp
0063F0:  6C 65 20 6F 66 20 68 6F 77 20 74 68 65 20 6A 75    le of how the ju
006400:  6D 70 62 6C 6F 63 6B 73 20 6D 61 79 20 62 65 20    mpblocks may be 
006410:  75 73 65 64 2E 20 41 74 20 74 68 69 73 0D 0A 20    used. At this.. 
006420:  20 20 20 20 20 20 73 74 61 67 65 20 6D 61 6E 79          stage many
006430:  20 6F 66 20 74 68 65 20 63 6F 6E 63 65 70 74 73     of the concepts
006440:  20 69 6E 74 72 6F 64 75 63 65 64 20 6D 61 79 20     introduced may 
006450:  62 65 20 75 6E 66 61 6D 69 6C 69 61 72 20 74 6F    be unfamiliar to
006460:  20 74 68 65 20 72 65 61 64 65 72 2E 0D 0A 20 20     the reader...  
006470:  20 20 20 20 20 48 6F 77 65 76 65 72 2C 20 73 69         However, si
006480:  6E 63 65 20 61 6C 74 65 72 69 6E 67 20 20 6A 75    nce altering  ju
006490:  6D 70 62 6C 6F 63 6B 73 20 20 69 73 20 20 61 6E    mpblocks  is  an
0064A0:  20 20 69 6D 70 6F 72 74 61 6E 74 20 20 74 65 63      important  tec
0064B0:  68 6E 69 71 75 65 20 20 66 6F 72 0D 0A 20 20 20    hnique  for..   
0064C0:  20 20 20 20 74 61 69 6C 6F 72 69 6E 67 20 74 68        tailoring th
0064D0:  65 20 73 79 73 74 65 6D 20 74 6F 20 61 20 70 61    e system to a pa
0064E0:  72 74 69 63 75 6C 61 72 20 20 70 75 72 70 6F 73    rticular  purpos
0064F0:  65 20 20 74 68 65 20 20 65 78 61 6D 70 6C 65 20    e  the  example 
006500:  20 69 73 20 20 67 69 76 65 6E 0D 0A 20 20 20 20     is  given..    
006510:  20 20 20 68 65 72 65 2E 20 4C 61 74 65 72 20 73       here. Later s
006520:  65 63 74 69 6F 6E 73 20 77 69 6C 6C 20 65 78 70    ections will exp
006530:  6C 61 69 6E 20 74 68 65 20 61 63 74 69 6F 6E 73    lain the actions
006540:  20 74 61 6B 65 6E 20 68 65 72 65 2E 0D 0A 0D 0A     taken here.....
006550:  0D 0A 20 20 20 20 20 20 20 53 75 70 70 6F 73 65    ..       Suppose
006560:  20 61 6E 20 61 73 73 65 6D 62 6C 65 72 20 70 72     an assembler pr
006570:  6F 67 72 61 6D 20 69 73 20 62 65 69 6E 67 20 77    ogram is being w
006580:  72 69 74 74 65 6E 20 74 68 61 74 20 69 73 20 69    ritten that is i
006590:  6E 74 65 6E 64 65 64 20 74 6F 20 20 75 73 65 0D    ntended to  use.
0065A0:  0A 20 20 20 20 20 20 20 74 68 65 20 70 72 69 6E    .       the prin
0065B0:  74 65 72 20 77 68 65 6E 20 69 74 20 69 73 20 66    ter when it is f
0065C0:  69 6E 69 73 68 65 64 2E 20 57 68 69 6C 65 20 74    inished. While t
0065D0:  68 69 73 20 70 72 6F 67 72 61 6D 20 69 73 20 20    his program is  
0065E0:  62 65 69 6E 67 20 20 77 72 69 74 74 65 6E 0D 0A    being  written..
0065F0:  20 20 20 20 20 20 20 69 74 20 77 6F 75 6C 64 20           it would 
006600:  73 61 76 65 20 74 69 6D 65 20 61 6E 64 20 70 61    save time and pa
006610:  70 65 72 20 69 66 20 74 68 65 20 70 72 6F 67 72    per if the progr
006620:  61 6D 20 63 6F 75 6C 64 20 62 65 20 6D 61 64 65    am could be made
006630:  20 74 6F 20 20 75 73 65 20 20 74 68 65 0D 0A 20     to  use  the.. 
006640:  20 20 20 20 20 20 73 63 72 65 65 6E 20 69 6E 73          screen ins
006650:  74 65 61 64 20 6F 66 20 74 68 65 20 70 72 69 6E    tead of the prin
006660:  74 65 72 2E 20 48 6F 77 65 76 65 72 2C 20 63 68    ter. However, ch
006670:  61 6E 67 69 6E 67 20 74 68 65 20 70 72 6F 67 72    anging the progr
006680:  61 6D 20 69 74 73 65 6C 66 20 74 6F 0D 0A 20 20    am itself to..  
006690:  20 20 20 20 20 75 73 65 20 74 68 65 20 73 63 72         use the scr
0066A0:  65 65 6E 20 63 6F 75 6C 64 20 69 6E 74 72 6F 64    een could introd
0066B0:  75 63 65 20 62 75 67 73 20 77 68 65 6E 20 69 74    uce bugs when it
0066C0:  20 69 73 20 63 68 61 6E 67 65 64 20 62 61 63 6B     is changed back
0066D0:  20 20 74 6F 20 20 75 73 69 6E 67 0D 0A 20 20 20      to  using..   
0066E0:  20 20 20 20 74 68 65 20 70 72 69 6E 74 65 72 2E        the printer.
0066F0:  20 57 68 61 74 20 69 73 20 6E 65 65 64 65 64 20     What is needed 
006700:  69 73 20 61 20 77 61 79 20 6F 66 20 61 6C 74 65    is a way of alte
006710:  72 69 6E 67 20 20 74 68 65 20 20 61 63 74 69 6F    ring  the  actio
006720:  6E 20 20 6F 66 20 20 74 68 65 0D 0A 20 20 20 20    n  of  the..    
006730:  20 20 20 66 69 72 6D 77 61 72 65 20 74 68 61 74       firmware that
006740:  20 64 72 69 76 65 73 20 74 68 65 20 70 72 69 6E     drives the prin
006750:  74 65 72 20 2D 20 61 6E 64 20 74 68 69 73 20 69    ter - and this i
006760:  73 20 77 68 61 74 20 61 20 52 41 4D 20 6A 75 6D    s what a RAM jum
006770:  70 62 6C 6F 63 6B 20 69 73 0D 0A 20 20 20 20 20    pblock is..     
006780:  20 20 66 6F 72 2E 0D 0A 0D 0A 0D 0A 20 20 20 20      for.......    
006790:  20 20 20 54 68 65 20 74 65 63 68 6E 69 71 75 65       The technique
0067A0:  20 74 68 61 74 20 20 77 69 6C 6C 20 20 62 65 20     that  will  be 
0067B0:  20 75 73 65 64 20 20 74 6F 20 20 27 63 6F 6E 6E     used  to  'conn
0067C0:  65 63 74 27 20 20 74 68 65 20 20 70 72 69 6E 74    ect'  the  print
0067D0:  65 72 20 20 74 6F 20 20 61 0D 0A 20 20 20 20 20    er  to  a..     
0067E0:  20 20 70 61 72 74 69 63 75 6C 61 72 20 74 65 78      particular tex
0067F0:  74 20 77 69 6E 64 6F 77 2E 20 54 68 69 73 20 20    t window. This  
006800:  63 61 6E 20 20 62 65 20 20 61 63 68 69 65 76 65    can  be  achieve
006810:  64 20 20 62 79 20 20 77 72 69 74 69 6E 67 20 20    d  by  writing  
006820:  61 20 20 73 68 6F 72 74 0D 0A 20 20 20 20 20 20    a  short..      
006830:  20 72 6F 75 74 69 6E 65 20 74 6F 20 73 65 6E 64     routine to send
006840:  20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 74     the character t
006850:  6F 20 74 68 65 20 73 63 72 65 65 6E 20 61 6E 64    o the screen and
006860:  20 70 61 74 63 68 69 6E 67 20 74 68 65 20 65 6E     patching the en
006870:  74 72 79 20 20 69 6E 0D 0A 20 20 20 20 20 20 20    try  in..       
006880:  74 68 65 20 6A 75 6D 70 62 6C 6F 63 6B 20 66 6F    the jumpblock fo
006890:  72 20 73 65 6E 64 69 6E 67 20 63 68 61 72 61 63    r sending charac
0068A0:  74 65 72 73 20 74 6F 20 74 68 65 20 70 72 69 6E    ters to the prin
0068B0:  74 65 72 2C 20 4D 43 20 50 52 49 4E 54 20 43 48    ter, MC PRINT CH
0068C0:  41 52 2C 20 73 6F 0D 0A 20 20 20 20 20 20 20 74    AR, so..       t
0068D0:  68 61 74 20 69 74 20 6A 75 6D 70 73 20 74 6F 20    hat it jumps to 
0068E0:  74 68 69 73 20 72 6F 75 74 69 6E 65 20 69 6E 73    this routine ins
0068F0:  74 65 61 64 20 6F 66 20 69 74 73 20 6E 6F 72 6D    tead of its norm
006900:  61 6C 20 72 6F 75 74 69 6E 65 2E 0D 0A 0D 0A 0D    al routine......
006910:  0A 20 20 20 20 20 20 20 54 68 65 20 73 75 62 73    .       The subs
006920:  74 69 74 75 74 65 20 72 6F 75 74 69 6E 65 20 77    titute routine w
006930:  69 6C 6C 20 68 61 76 65 20 74 6F 20 6F 62 65 79    ill have to obey
006940:  20 74 68 65 20 65 6E 74 72 79 2F 65 78 69 74 20     the entry/exit 
006950:  63 6F 6E 64 69 74 69 6F 6E 73 20 66 6F 72 0D 0A    conditions for..
006960:  20 20 20 20 20 20 20 4D 43 20 50 52 49 4E 54 20           MC PRINT 
006970:  43 48 41 52 2E 20 54 68 65 73 65 20 63 61 6E 20    CHAR. These can 
006980:  62 65 20 66 6F 75 6E 64 20 69 6E 20 20 74 68 65    be found in  the
006990:  20 20 66 75 6C 6C 20 20 64 65 73 63 72 69 70 74      full  descript
0069A0:  69 6F 6E 20 20 6F 66 20 20 74 68 69 73 0D 0A 20    ion  of  this.. 
0069B0:  20 20 20 20 20 20 65 6E 74 72 79 20 69 6E 20 73          entry in s
0069C0:  65 63 74 69 6F 6E 20 31 35 2E 20 42 72 69 65 66    ection 15. Brief
0069D0:  6C 79 20 74 68 65 79 20 61 72 65 20 61 73 20 66    ly they are as f
0069E0:  6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 20 20 20 20 20    ollows:....     
0069F0:  20 20 4D 43 20 50 52 49 4E 54 20 43 48 41 52 0D      MC PRINT CHAR.
006A00:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
006A10:  20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E     Entry condition
006A20:  73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    s:....          
006A30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006A40:  41 20 63 6F 6E 74 61 69 6E 73 20 63 68 61 72 61    A contains chara
006A50:  63 74 65 72 20 74 6F 20 70 72 69 6E 74 2E 0D 0A    cter to print...
006A60:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
006A70:  20 20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E      Exit condition
006A80:  73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    s:....          
006A90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006AA0:  49 66 20 74 68 65 20 63 68 61 72 61 63 74 65 72    If the character
006AB0:  20 77 61 73 20 73 65 6E 74 20 4F 4B 3A 0D 0A 20     was sent OK:.. 
006AC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006AD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006AE0:  20 20 20 43 61 72 72 79 20 74 72 75 65 2E 0D 0A       Carry true...
006AF0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
006B00:  20 20 20 20 20 20 20 20 20 20 20 20 49 66 20 74                If t
006B10:  68 65 20 70 72 69 6E 74 65 72 20 74 69 6D 65 64    he printer timed
006B20:  20 6F 75 74 3A 0D 0A 20 20 20 20 20 20 20 20 20     out:..         
006B30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006B40:  20 20 20 20 20 20 20 20 20 20 20 43 61 72 72 79               Carry
006B50:  20 66 61 6C 73 65 2E 0D 0A 0D 0A 20 20 20 20 20     false.....     
006B60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006B70:  20 20 20 20 20 41 6C 77 61 79 73 3A 0D 0A 0D 0A         Always:....
006B80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006B90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006BA0:  20 20 20 20 41 20 61 6E 64 20 6F 74 68 65 72 20        A and other 
006BB0:  66 6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0A    flags corrupt...
006BC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006BD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006BE0:  20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65        All other re
006BF0:  67 69 73 74 65 72 73 20 70 72 65 73 65 72 76 65    gisters preserve
006C00:  64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53    d.....       AMS
006C10:  54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F    TRAD CPC464/664/
006C20:  36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20    6128 FIRMWARE   
006C30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006C40:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
006C50:  31 2E 38 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    1.8.............
006C60:  0A 20 20 20 20 20 20 20 54 68 65 20 61 63 74 69    .       The acti
006C70:  6F 6E 20 6F 66 20 74 68 65 20 73 75 62 73 74 69    on of the substi
006C80:  74 75 74 65 20 72 6F 75 74 69 6E 65 20 77 69 6C    tute routine wil
006C90:  6C 20 20 62 65 20 20 74 6F 20 20 73 65 6C 65 63    l  be  to  selec
006CA0:  74 20 20 74 68 65 20 20 73 63 72 65 65 6E 0D 0A    t  the  screen..
006CB0:  20 20 20 20 20 20 20 73 74 72 65 61 6D 20 74 68           stream th
006CC0:  61 74 20 74 68 65 20 70 72 69 6E 74 65 72 20 6F    at the printer o
006CD0:  75 74 70 75 74 20 69 73 20 74 6F 20 61 70 70 65    utput is to appe
006CE0:  61 72 20 6F 6E 2C 20 74 6F 20 70 72 69 6E 74 20    ar on, to print 
006CF0:  74 68 65 20 63 68 61 72 61 63 74 65 72 0D 0A 20    the character.. 
006D00:  20 20 20 20 20 20 6F 6E 20 74 68 65 20 73 74 72          on the str
006D10:  65 61 6D 20 61 6E 64 20 74 68 65 6E 20 74 6F 20    eam and then to 
006D20:  20 72 65 73 74 6F 72 65 20 20 74 68 65 20 20 73     restore  the  s
006D30:  74 72 65 61 6D 20 20 74 68 61 74 20 20 77 61 73    tream  that  was
006D40:  20 20 6F 72 69 67 69 6E 61 6C 6C 79 0D 0A 20 20      originally..  
006D50:  20 20 20 20 20 73 65 6C 65 63 74 65 64 2E 20 54         selected. T
006D60:  6F 20 64 6F 20 74 68 69 73 20 74 68 65 20 73 75    o do this the su
006D70:  62 73 74 69 74 75 74 65 20 72 6F 75 74 69 6E 65    bstitute routine
006D80:  20 20 77 69 6C 6C 20 20 6E 65 65 64 20 20 74 6F      will  need  to
006D90:  20 20 63 61 6C 6C 20 20 74 68 65 0D 0A 20 20 20      call  the..   
006DA0:  20 20 20 20 72 6F 75 74 69 6E 65 73 20 20 54 58        routines  TX
006DB0:  54 20 20 53 54 52 20 20 53 45 4C 45 43 54 20 20    T  STR  SELECT  
006DC0:  61 6E 64 20 20 54 58 54 20 20 4F 55 54 50 55 54    and  TXT  OUTPUT
006DD0:  2E 20 20 4F 6E 63 65 20 20 61 67 61 69 6E 20 20    .  Once  again  
006DE0:  74 68 65 20 20 20 66 75 6C 6C 0D 0A 20 20 20 20    the   full..    
006DF0:  20 20 20 64 65 73 63 72 69 70 74 69 6F 6E 73 20       descriptions 
006E00:  6F 66 20 74 68 65 73 65 20 6A 75 6D 70 62 6C 6F    of these jumpblo
006E10:  63 6B 20 65 6E 74 72 69 65 73 20 63 61 6E 20 62    ck entries can b
006E20:  65 20 66 6F 75 6E 64 20 20 69 6E 20 20 73 65 63    e found  in  sec
006E30:  74 69 6F 6E 20 20 31 35 2E 0D 0A 20 20 20 20 20    tion  15...     
006E40:  20 20 54 68 65 20 65 6E 74 72 79 2F 65 78 69 74      The entry/exit
006E50:  20 63 6F 6E 64 69 74 69 6F 6E 73 20 61 72 65 20     conditions are 
006E60:  61 73 20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 0D    as follows:.....
006E70:  0A 20 20 20 20 20 20 20 54 58 54 20 53 54 52 20    .       TXT STR 
006E80:  53 45 4C 45 43 54 3A 0D 0A 0D 0A 20 20 20 20 20    SELECT:....     
006E90:  20 20 20 20 20 20 20 20 20 20 20 45 6E 74 72 79               Entry
006EA0:  20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A     conditions:....
006EB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006EC0:  20 20 20 20 20 20 20 20 20 20 41 20 63 6F 6E 74              A cont
006ED0:  61 69 6E 73 20 74 68 65 20 73 74 72 65 61 6D 20    ains the stream 
006EE0:  6E 75 6D 62 65 72 20 74 6F 20 73 65 6C 65 63 74    number to select
006EF0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    .....           
006F00:  20 20 20 20 20 45 78 69 74 20 63 6F 6E 64 69 74         Exit condit
006F10:  69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20    ions:....       
006F20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006F30:  20 20 20 41 20 63 6F 6E 74 61 69 6E 73 20 70 72       A contains pr
006F40:  65 76 69 6F 75 73 6C 79 20 73 65 6C 65 63 74 65    eviously selecte
006F50:  64 20 73 74 72 65 61 6D 20 6E 75 6D 62 65 72 2E    d stream number.
006F60:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
006F70:  20 20 20 20 20 20 20 20 20 20 20 20 48 4C 20 61                HL a
006F80:  6E 64 20 66 6C 61 67 73 20 63 6F 72 72 75 70 74    nd flags corrupt
006F90:  2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
006FA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 41 6C 6C                 All
006FB0:  20 6F 74 68 65 72 20 72 65 67 69 73 74 65 72 73     other registers
006FC0:  20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D     preserved......
006FD0:  0A 0D 0A 20 20 20 20 20 20 20 54 58 54 20 4F 55    ...       TXT OU
006FE0:  54 50 55 54 3A 0D 0A 0D 0A 20 20 20 20 20 20 20    TPUT:....       
006FF0:  20 20 20 20 20 20 20 20 20 45 6E 74 72 79 20 63             Entry c
007000:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20    onditions:....  
007010:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
007020:  20 20 20 20 20 20 20 20 41 20 63 6F 6E 74 61 69            A contai
007030:  6E 73 20 63 68 61 72 61 63 74 65 72 20 74 6F 20    ns character to 
007040:  70 72 69 6E 74 2E 0D 0A 0D 0A 20 20 20 20 20 20    print.....      
007050:  20 20 20 20 20 20 20 20 20 20 45 78 69 74 20 63              Exit c
007060:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20    onditions:....  
007070:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
007080:  20 20 20 20 20 20 20 20 41 6C 6C 20 72 65 67 69            All regi
007090:  73 74 65 72 73 20 61 6E 64 20 66 6C 61 67 73 20    sters and flags 
0070A0:  70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A    preserved.......
0070B0:  20 20 20 20 20 20 20 54 68 65 20 63 6F 64 65 20           The code 
0070C0:  66 6F 72 20 74 68 65 20 20 73 75 62 73 74 69 74    for the  substit
0070D0:  75 74 65 20 20 72 6F 75 74 69 6E 65 20 20 63 6F    ute  routine  co
0070E0:  75 6C 64 20 20 62 65 20 20 77 72 69 74 74 65 6E    uld  be  written
0070F0:  20 20 61 73 20 20 66 6F 6C 6C 6F 77 73 0D 0A 20      as  follows.. 
007100:  20 20 20 20 20 20 28 73 74 72 65 61 6D 20 37 20          (stream 7 
007110:  68 61 73 20 62 65 65 6E 20 63 68 6F 73 65 6E 20    has been chosen 
007120:  61 73 20 74 68 65 20 73 74 72 65 61 6D 20 6F 6E    as the stream on
007130:  20 77 68 69 63 68 20 70 72 69 6E 74 65 72 20 6F     which printer o
007140:  75 74 70 75 74 20 69 73 20 20 74 6F 0D 0A 20 20    utput is  to..  
007150:  20 20 20 20 20 61 70 70 65 61 72 29 3A 0D 0A 0D         appear):...
007160:  0A 20 20 20 20 20 20 20 50 55 53 48 20 48 4C 0D    .       PUSH HL.
007170:  0A 20 20 20 20 20 20 20 50 55 53 48 20 42 43 0D    .       PUSH BC.
007180:  0A 20 20 20 20 20 20 20 3B 0D 0A 20 20 20 20 20    .       ;..     
007190:  20 20 4C 44 20 42 2C 41 20 20 20 20 20 20 20 20      LD B,A        
0071A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B                   ;
0071B0:  53 61 76 65 20 74 68 65 20 63 68 61 72 61 63 74    Save the charact
0071C0:  65 72 20 74 6F 20 70 72 69 6E 74 0D 0A 20 20 20    er to print..   
0071D0:  20 20 20 20 3B 0D 0A 20 20 20 20 20 20 20 4C 44        ;..       LD
0071E0:  20 41 2C 37 20 20 20 20 20 20 20 20 20 20 20 20     A,7            
0071F0:  20 20 20 20 20 20 20 20 20 20 20 3B 50 72 69 6E               ;Prin
007200:  74 65 72 20 73 74 72 65 61 6D 20 6E 75 6D 62 65    ter stream numbe
007210:  72 0D 0A 20 20 20 20 20 20 20 43 41 4C 4C 20 54    r..       CALL T
007220:  58 54 5F 53 54 52 5F 53 45 4C 45 43 54 20 20 20    XT_STR_SELECT   
007230:  20 20 20 20 20 20 20 3B 53 65 6C 65 63 74 20 74           ;Select t
007240:  68 65 20 70 72 69 6E 74 65 72 20 73 74 72 65 61    he printer strea
007250:  6D 0D 0A 20 20 20 20 20 20 20 4C 44 20 43 2C 41    m..       LD C,A
007260:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
007270:  20 20 20 20 20 20 20 3B 53 61 76 65 20 74 68 65           ;Save the
007280:  20 6F 72 69 67 69 6E 61 6C 20 73 74 72 65 61 6D     original stream
007290:  20 6E 75 6D 62 65 72 0D 0A 20 20 20 20 20 20 20     number..       
0072A0:  3B 0D 0A 20 20 20 20 20 20 20 4C 44 20 41 2C 42    ;..       LD A,B
0072B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0072C0:  20 20 20 20 20 20 20 3B 47 65 74 20 74 68 65 20           ;Get the 
0072D0:  63 68 61 72 61 63 74 65 72 20 61 67 61 69 6E 0D    character again.
0072E0:  0A 20 20 20 20 20 20 20 43 41 4C 4C 20 54 58 54    .       CALL TXT
0072F0:  5F 4F 55 54 50 55 54 20 20 20 20 20 20 20 20 20    _OUTPUT         
007300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
007310:  06 00 00 00 02 09 50 E5 06 00 C1 02 00 00 00 02    ......P.........
007320:  06 00 C2 02 00 00 00 02 06 00 C3 02 00 00 00 02    ................
007330:  06 00 C4 02 00 00 00 02 06 00 C5 02 00 00 00 02    ................
007340:  06 00 C6 02 00 00 00 02 06 00 C7 02 00 00 00 02    ................
007350:  06 00 C8 02 00 00 00 02 06 00 C9 02 00 00 00 02    ................
007360:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007370:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007380:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007390:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007400:  20 20 20 20 20 3B 53 65 6E 64 20 69 74 20 74 6F         ;Send it to
007410:  20 74 68 65 20 73 63 72 65 65 6E 0D 0A 20 20 20     the screen..   
007420:  20 20 20 20 3B 0D 0A 20 20 20 20 20 20 20 4C 44        ;..       LD
007430:  20 41 2C 43 20 20 20 20 20 20 20 20 20 20 20 20     A,C            
007440:  20 20 20 20 20 20 20 20 20 20 20 3B 47 65 74 20               ;Get 
007450:  74 68 65 20 6F 72 69 67 69 6E 61 6C 20 73 74 72    the original str
007460:  65 61 6D 20 6E 75 6D 62 65 72 0D 0A 20 20 20 20    eam number..    
007470:  20 20 20 43 41 4C 4C 20 54 58 54 5F 53 54 52 5F       CALL TXT_STR_
007480:  53 45 4C 45 43 54 20 20 20 20 20 20 20 20 20 20    SELECT          
007490:  3B 52 65 73 65 6C 65 63 74 20 74 68 65 20 6F 72    ;Reselect the or
0074A0:  69 67 69 6E 61 6C 20 73 74 72 65 61 6D 0D 0A 20    iginal stream.. 
0074B0:  20 20 20 20 20 20 3B 0D 0A 20 20 20 20 20 20 20          ;..       
0074C0:  50 4F 50 20 42 43 0D 0A 20 20 20 20 20 20 20 50    POP BC..       P
0074D0:  4F 50 20 48 4C 0D 0A 20 20 20 20 20 20 20 53 43    OP HL..       SC
0074E0:  46 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    F               
0074F0:  20 20 20 20 20 20 20 20 20 20 20 3B 54 68 65 20               ;The 
007500:  63 68 61 72 61 63 74 65 72 20 77 61 73 20 73 65    character was se
007510:  6E 74 20 4F 4B 0D 0A 20 20 20 20 20 20 20 52 45    nt OK..       RE
007520:  54 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D    T......       AM
007530:  53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34    STRAD CPC464/664
007540:  2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20    /6128 FIRMWARE  
007550:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
007560:  20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65                page
007570:  20 31 2E 39 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A     1.9............
007580:  0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 20 74 68    ..       Note th
007590:  65 20 66 6F 6C 6C 6F 77 69 6E 67 20 70 6F 69 6E    e following poin
0075A0:  74 73 3A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ts:........     
0075B0:  20 20 31 2F 20 4D 43 20 50 52 49 4E 54 20 43 48      1/ MC PRINT CH
0075C0:  41 52 20 70 72 65 73 65 72 76 65 73 20 48 4C 20    AR preserves HL 
0075D0:  61 6E 64 20 42 43 2E 20 54 68 65 20 72 6F 75 74    and BC. The rout
0075E0:  69 6E 65 20 61 62 6F 76 65 20 75 73 65 73 20 42    ine above uses B
0075F0:  20 20 61 6E 64 20 20 43 0D 0A 20 20 20 20 20 20      and  C..      
007600:  20 66 6F 72 20 74 65 6D 70 6F 72 61 72 79 20 73     for temporary s
007610:  74 6F 72 61 67 65 20 61 6E 64 20 48 4C 20 69 73    torage and HL is
007620:  20 63 6F 72 72 75 70 74 65 64 20 62 79 20 54 58     corrupted by TX
007630:  54 20 53 54 52 20 53 45 4C 45 43 54 2E 20 48 4C    T STR SELECT. HL
007640:  20 61 6E 64 20 42 43 0D 0A 20 20 20 20 20 20 20     and BC..       
007650:  61 72 65 20 20 74 68 65 72 65 66 6F 72 65 20 20    are  therefore  
007660:  70 75 73 68 65 64 20 20 61 6E 64 20 20 70 6F 70    pushed  and  pop
007670:  70 65 64 20 20 74 6F 20 20 70 72 65 73 65 72 76    ped  to  preserv
007680:  65 20 20 74 68 65 6D 20 20 74 68 72 6F 75 67 68    e  them  through
007690:  20 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 73       the..       s
0076A0:  75 62 73 74 69 74 75 74 65 20 72 6F 75 74 69 6E    ubstitute routin
0076B0:  65 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    e.........      
0076C0:  20 32 2F 20 4D 43 20 50 52 49 4E 54 20 43 48 41     2/ MC PRINT CHA
0076D0:  52 20 72 65 74 75 72 6E 73 20 61 20 73 75 63 63    R returns a succ
0076E0:  65 73 73 2F 66 61 69 6C 20 69 6E 64 69 63 61 74    ess/fail indicat
0076F0:  69 6F 6E 20 69 6E 20 74 68 65 20 63 61 72 72 79    ion in the carry
007700:  20 20 66 6C 61 67 2E 0D 0A 20 20 20 20 20 20 20      flag...       
007710:  53 69 6E 63 65 20 74 68 65 20 72 6F 75 74 69 6E    Since the routin
007720:  65 20 61 62 6F 76 65 20 63 61 6E 20 6E 65 76 65    e above can neve
007730:  72 20 66 61 69 6C 20 69 74 20 61 6C 77 61 79 73    r fail it always
007740:  20 73 65 74 73 20 74 68 65 20 20 63 61 72 72 79     sets the  carry
007750:  20 20 66 6C 61 67 0D 0A 20 20 20 20 20 20 20 74      flag..       t
007760:  6F 20 69 6E 64 69 63 61 74 65 20 73 75 63 63 65    o indicate succe
007770:  73 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ss.........     
007780:  20 20 33 2F 20 54 68 65 20 72 6F 75 74 69 6E 65      3/ The routine
007790:  20 61 62 6F 76 65 20 64 6F 65 73 20 6E 6F 74 20     above does not 
0077A0:  63 68 61 6E 67 65 20 77 68 69 63 68 20 74 65 78    change which tex
0077B0:  74 20 73 74 72 65 61 6D 20 69 73 20 73 65 6C 65    t stream is sele
0077C0:  63 74 65 64 2E 20 49 74 0D 0A 20 20 20 20 20 20    cted. It..      
0077D0:  20 73 65 6C 65 63 74 73 20 74 68 65 20 73 74 72     selects the str
0077E0:  65 61 6D 20 69 74 20 69 73 20 67 6F 69 6E 67 20    eam it is going 
0077F0:  74 6F 20 70 72 69 6E 74 20 6F 6E 20 61 6E 64 20    to print on and 
007800:  72 65 73 74 6F 72 65 73 20 74 68 65 20 70 72 65    restores the pre
007810:  76 69 6F 75 73 6C 79 0D 0A 20 20 20 20 20 20 20    viously..       
007820:  73 65 6C 65 63 74 65 64 20 73 74 72 65 61 6D 20    selected stream 
007830:  77 68 65 6E 20 69 74 20 68 61 73 20 70 72 69 6E    when it has prin
007840:  74 65 64 20 74 68 65 20 20 63 68 61 72 61 63 74    ted the  charact
007850:  65 72 2E 20 20 54 68 65 20 20 66 69 72 6D 77 61    er.  The  firmwa
007860:  72 65 20 20 69 73 0D 0A 20 20 20 20 20 20 20 77    re  is..       w
007870:  72 69 74 74 65 6E 20 69 6E 20 73 75 63 68 20 61    ritten in such a
007880:  20 77 61 79 20 61 73 20 74 6F 20 61 6C 6C 6F 77     way as to allow
007890:  20 72 6F 75 74 69 6E 65 73 20 20 74 6F 20 20 72     routines  to  r
0078A0:  65 73 74 6F 72 65 20 20 74 68 65 20 20 6F 72 69    estore  the  ori
0078B0:  67 69 6E 61 6C 0D 0A 20 20 20 20 20 20 20 73 74    ginal..       st
0078C0:  61 74 65 20 77 68 65 6E 20 74 68 65 79 20 66 69    ate when they fi
0078D0:  6E 69 73 68 20 69 66 20 72 65 71 75 69 72 65 64    nish if required
0078E0:  2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
0078F0:  54 6F 20 75 73 65 20 74 68 65 20 73 75 62 73 74    To use the subst
007900:  69 74 75 74 65 20 72 6F 75 74 69 6E 65 20 69 74    itute routine it
007910:  20 69 73 20 6E 65 63 65 73 73 61 72 79 20 74 6F     is necessary to
007920:  20 70 61 74 63 68 20 69 74 20 69 6E 74 6F 20 20     patch it into  
007930:  6D 65 6D 6F 72 79 0D 0A 20 20 20 20 20 20 20 61    memory..       a
007940:  6E 64 20 74 6F 20 63 68 61 6E 67 65 20 74 68 65    nd to change the
007950:  20 6A 75 6D 70 62 6C 6F 63 6B 20 65 6E 74 72 79     jumpblock entry
007960:  20 66 6F 72 20 4D 43 20 50 52 49 4E 54 20 43 48     for MC PRINT CH
007970:  41 52 20 20 74 6F 20 20 6A 75 6D 70 20 20 74 6F    AR  to  jump  to
007980:  20 20 69 74 2E 0D 0A 20 20 20 20 20 20 20 41 73      it...       As
007990:  73 75 6D 65 20 74 68 61 74 20 73 6F 6D 65 20 6D    sume that some m
0079A0:  65 6D 6F 72 79 20 61 74 20 23 41 42 30 30 20 68    emory at #AB00 h
0079B0:  61 73 20 62 65 65 6E 20 72 65 73 65 72 76 65 64    as been reserved
0079C0:  20 66 6F 72 20 74 68 65 20 20 73 75 62 73 74 69     for the  substi
0079D0:  74 75 74 65 0D 0A 20 20 20 20 20 20 20 72 6F 75    tute..       rou
0079E0:  74 69 6E 65 20 61 6E 64 20 74 68 61 74 20 74 68    tine and that th
0079F0:  65 20 72 6F 75 74 69 6E 65 20 68 61 73 20 62 65    e routine has be
007A00:  65 6E 20 20 70 61 74 63 68 65 64 20 20 69 6E 74    en  patched  int
007A10:  6F 20 20 6D 65 6D 6F 72 79 2E 20 20 54 68 65 20    o  memory.  The 
007A20:  20 4D 43 0D 0A 20 20 20 20 20 20 20 50 52 49 4E     MC..       PRIN
007A30:  54 20 43 48 41 52 20 65 6E 74 72 79 20 69 6E 20    T CHAR entry in 
007A40:  74 68 65 20 6A 75 6D 70 62 6C 6F 63 6B 20 69 73    the jumpblock is
007A50:  20 61 74 20 6C 6F 63 61 74 69 6F 6E 20 23 42 44     at location #BD
007A60:  32 42 20 28 61 73 20 63 61 6E 20 62 65 20 73 65    2B (as can be se
007A70:  65 6E 0D 0A 20 20 20 20 20 20 20 62 79 20 69 6E    en..       by in
007A80:  73 70 65 63 74 69 6E 67 20 73 65 63 74 69 6F 6E    specting section
007A90:  20 31 33 2E 20 31 2E 38 29 2E 20 54 68 65 20 74     13. 1.8). The t
007AA0:  68 72 65 65 20 62 79 74 65 73 20 6F 66 20 74 68    hree bytes of th
007AB0:  65 20 65 6E 74 72 79 20 73 68 6F 75 6C 64 20 62    e entry should b
007AC0:  65 0D 0A 20 20 20 20 20 20 20 73 65 74 20 74 6F    e..       set to
007AD0:  20 74 68 65 20 69 6E 73 74 72 75 63 74 69 6F 6E     the instruction
007AE0:  20 4A 50 20 23 41 42 30 30 20 62 79 20 70 61 74     JP #AB00 by pat
007AF0:  63 68 69 6E 67 20 61 73 20 66 6F 6C 6C 6F 77 73    ching as follows
007B00:  3A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    :........       
007B10:  20 20 20 20 20 20 20 20 20 23 42 44 32 42 20 20             #BD2B  
007B20:  20 20 20 23 43 33 0D 0A 20 20 20 20 20 20 20 20       #C3..        
007B30:  20 20 20 20 20 20 20 20 23 42 44 32 43 20 20 20            #BD2C   
007B40:  20 20 23 30 30 0D 0A 20 20 20 20 20 20 20 20 20      #00..         
007B50:  20 20 20 20 20 20 20 23 42 44 32 42 20 20 20 20           #BD2B    
007B60:  20 23 41 42 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20     #AB........    
007B70:  20 20 20 46 72 6F 6D 20 6E 6F 77 20 6F 6E 20 61       From now on a
007B80:  6C 6C 20 74 65 78 74 20 73 65 6E 74 20 74 6F 20    ll text sent to 
007B90:  74 68 65 20 70 72 69 6E 74 65 72 20 77 69 6C 6C    the printer will
007BA0:  20 61 70 70 65 61 72 20 6F 6E 20 74 68 65 20 73     appear on the s
007BB0:  63 72 65 65 6E 20 20 6F 6E 0D 0A 20 20 20 20 20    creen  on..     
007BC0:  20 20 73 74 72 65 61 6D 20 37 2E 20 4F 66 20 63      stream 7. Of c
007BD0:  6F 75 72 73 65 2C 20 73 74 72 65 61 6D 20 37 20    ourse, stream 7 
007BE0:  73 68 6F 75 6C 64 20 68 61 76 65 20 69 74 73 20    should have its 
007BF0:  77 69 6E 64 6F 77 20 73 65 74 20 20 73 6F 20 20    window set  so  
007C00:  74 68 61 74 20 20 69 74 0D 0A 20 20 20 20 20 20    that  it..      
007C10:  20 64 6F 65 73 20 6E 6F 74 20 69 6E 74 65 72 66     does not interf
007C20:  65 72 65 20 77 69 74 68 20 61 6E 79 20 6F 74 68    ere with any oth
007C30:  65 72 20 73 74 72 65 61 6D 20 75 73 69 6E 67 20    er stream using 
007C40:  74 68 65 20 73 63 72 65 65 6E 2E 0D 0A 0D 0A 0D    the screen......
007C50:  0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73 20 72    ...       This r
007C60:  65 64 69 72 65 63 74 69 6F 6E 20 77 69 6C 6C 20    edirection will 
007C70:  72 65 6D 61 69 6E 20 69 6E 20 66 6F 72 63 65 20    remain in force 
007C80:  75 6E 74 69 6C 20 20 74 68 65 20 20 6A 75 6D 70    until  the  jump
007C90:  62 6C 6F 63 6B 20 20 65 6E 74 72 79 20 20 69 73    block  entry  is
007CA0:  0D 0A 20 20 20 20 20 20 20 72 65 73 74 6F 72 65    ..       restore
007CB0:  64 2E 20 54 68 69 73 20 63 61 6E 20 62 65 20 61    d. This can be a
007CC0:  63 68 69 65 76 65 64 20 62 79 20 70 61 74 63 68    chieved by patch
007CD0:  69 6E 67 20 74 68 65 20 6A 75 6D 70 62 6C 6F 63    ing the jumpbloc
007CE0:  6B 20 62 61 63 6B 20 61 67 61 69 6E 20 6F 72 0D    k back again or.
007CF0:  0A 20 20 20 20 20 20 20 62 79 20 63 61 6C 6C 69    .       by calli
007D00:  6E 67 20 4A 55 4D 50 20 52 45 53 54 4F 52 45 20    ng JUMP RESTORE 
007D10:  6F 72 20 62 79 20 63 61 75 73 69 6E 67 20 61 6E    or by causing an
007D20:  20 45 4D 53 20 20 69 6E 69 74 69 61 6C 69 7A 61     EMS  initializa
007D30:  74 69 6F 6E 20 20 74 6F 20 20 74 61 6B 65 0D 0A    tion  to  take..
007D40:  20 20 20 20 20 20 20 70 6C 61 63 65 20 62 79 20           place by 
007D50:  72 65 73 65 74 74 69 6E 67 20 74 68 65 20 73 79    resetting the sy
007D60:  73 74 65 6D 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    stem............
007D70:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D    .......       AM
007D80:  53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34    STRAD CPC464/664
007D90:  2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20    /6128 FIRMWARE  
007DA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
007DB0:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
007DC0:  31 2E 31 30 0D 0A 1A 20 73 65 63 74 69 6F 6E 20    1.10... section 
007DD0:  20 31 34 2E 20 20 54 68 65 0D 0A 20 20 20 20 20     14.  The..     
007DE0:  20 20 66 69 72 73 74 20 61 6E 64 20 6C 61 72 67      first and larg
007DF0:  65 73 74 20 20 6A 75 6D 70 62 6C 6F 63 6B 20 20    est  jumpblock  
007E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008000:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 50    ........       P
008010:  72 65 66 61 63 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 20    reface......... 
008020:  20 20 20 20 20 20 54 68 65 20 63 6F 6D 70 75 74          The comput
008030:  65 72 73 20 69 6E 20 74 68 65 20 43 50 43 20 72    ers in the CPC r
008040:  61 6E 67 65 20 20 63 6F 6E 74 61 69 6E 20 20 52    ange  contain  R
008050:  4F 4D 73 20 20 77 68 69 63 68 20 20 68 6F 6C 64    OMs  which  hold
008060:  20 20 74 68 65 20 20 42 41 53 49 43 0D 0A 20 20      the  BASIC..  
008070:  20 20 20 20 20 69 6E 74 65 72 70 72 65 74 65 72         interpreter
008080:  20 61 6E 64 20 74 68 65 20 27 66 69 72 6D 77 61     and the 'firmwa
008090:  72 65 27 2E 20 54 68 65 20 66 69 72 6D 77 61 72    re'. The firmwar
0080A0:  65 20 20 63 6F 6E 73 69 73 74 73 20 20 6F 66 20    e  consists  of 
0080B0:  20 6C 6F 77 20 20 6C 65 76 65 6C 0D 0A 20 20 20     low  level..   
0080C0:  20 20 20 20 72 6F 75 74 69 6E 65 73 20 72 65 73        routines res
0080D0:  70 6F 6E 73 69 62 6C 65 20 66 6F 72 20 64 72 69    ponsible for dri
0080E0:  76 69 6E 67 20 74 68 65 20 68 61 72 64 77 61 72    ving the hardwar
0080F0:  65 2C 20 20 68 61 6E 64 6C 69 6E 67 20 20 74 68    e,  handling  th
008100:  65 20 20 73 63 72 65 65 6E 2C 0D 0A 20 20 20 20    e  screen,..    
008110:  20 20 20 68 61 6E 64 6C 69 6E 67 20 72 65 61 6C       handling real
008120:  2D 74 69 6D 65 20 65 76 65 6E 74 73 20 61 6E 64    -time events and
008130:  20 6F 74 68 65 72 20 20 73 69 6D 69 6C 61 72 20     other  similar 
008140:  20 66 75 6E 63 74 69 6F 6E 73 2E 20 20 54 68 69     functions.  Thi
008150:  73 20 20 6D 61 6E 75 61 6C 0D 0A 20 20 20 20 20    s  manual..     
008160:  20 20 64 65 73 63 72 69 62 65 73 20 74 68 65 20      describes the 
008170:  66 69 72 6D 77 61 72 65 2E 0D 0A 0D 0A 0D 0A 0D    firmware........
008180:  0A 20 20 20 20 20 20 20 54 68 69 73 20 6D 61 6E    .       This man
008190:  75 61 6C 20 69 73 20 61 70 70 6C 69 63 61 62 6C    ual is applicabl
0081A0:  65 20 74 6F 20 74 68 65 20 66 75 6C 6C 20 72 61    e to the full ra
0081B0:  6E 67 65 20 6F 66 20 43 50 43 20 6D 61 63 68 69    nge of CPC machi
0081C0:  6E 65 73 3B 20 34 36 34 2C 20 36 36 34 2C 0D 0A    nes; 464, 664,..
0081D0:  20 20 20 20 20 20 20 36 31 32 38 20 61 6E 64 20           6128 and 
0081E0:  34 36 34 2B 44 44 49 2D 31 2E 20 54 68 65 20 66    464+DDI-1. The f
0081F0:  69 72 6D 77 61 72 65 20 69 6E 20 74 68 65 73 65    irmware in these
008200:  20 6D 61 63 68 69 6E 65 73 20 69 73 20 20 6E 6F     machines is  no
008210:  74 20 20 69 64 65 6E 74 69 63 61 6C 2E 0D 0A 20    t  identical... 
008220:  20 20 20 20 20 20 41 6C 6C 20 34 36 34 73 20 63          All 464s c
008230:  6F 6E 74 61 69 6E 20 56 31 2E 30 20 6F 66 20 74    ontain V1.0 of t
008240:  68 65 20 66 69 72 6D 77 61 72 65 2C 20 61 6C 6C    he firmware, all
008250:  20 36 36 34 73 20 63 6F 6E 74 61 69 6E 20 56 31     664s contain V1
008260:  2E 31 20 20 61 6E 64 20 20 61 6C 6C 0D 0A 20 20    .1  and  all..  
008270:  20 20 20 20 20 36 31 32 38 73 20 63 6F 6E 74 61         6128s conta
008280:  69 6E 20 56 31 2E 32 2E 20 41 6C 6C 20 66 69 72    in V1.2. All fir
008290:  6D 77 61 72 65 20 63 61 6C 6C 73 20 61 72 65 20    mware calls are 
0082A0:  20 75 70 77 61 72 64 73 20 20 63 6F 6D 70 61 74     upwards  compat
0082B0:  69 62 6C 65 2C 20 20 74 68 61 74 0D 0A 20 20 20    ible,  that..   
0082C0:  20 20 20 20 69 73 2C 20 61 6E 79 20 66 69 72 6D        is, any firm
0082D0:  77 61 72 65 20 63 61 6C 6C 20 61 76 61 69 6C 61    ware call availa
0082E0:  62 6C 65 20 69 6E 20 56 31 2E 30 20 69 73 20 61    ble in V1.0 is a
0082F0:  76 61 69 6C 61 62 6C 65 20 69 6E 20 56 31 2E 31    vailable in V1.1
008300:  20 61 6E 64 20 20 56 31 2E 32 0D 0A 20 20 20 20     and  V1.2..    
008310:  20 20 20 61 6E 64 20 61 6E 79 20 66 69 72 6D 77       and any firmw
008320:  61 72 65 20 63 61 6C 6C 20 61 76 61 69 6C 61 62    are call availab
008330:  6C 65 20 69 6E 20 56 31 2E 31 20 69 73 20 61 76    le in V1.1 is av
008340:  61 69 6C 61 62 6C 65 20 69 6E 20 56 31 2E 32 2E    ailable in V1.2.
008350:  20 20 55 70 77 61 72 64 73 0D 0A 20 20 20 20 20      Upwards..     
008360:  20 20 63 6F 6D 70 61 74 69 62 69 6C 69 74 79 20      compatibility 
008370:  77 69 6C 6C 20 20 62 65 20 20 6D 61 69 6E 74 61    will  be  mainta
008380:  69 6E 65 64 20 20 69 6E 20 20 61 6E 79 20 20 66    ined  in  any  f
008390:  75 74 75 72 65 20 20 76 65 72 73 69 6F 6E 73 20    uture  versions 
0083A0:  20 6F 66 20 20 74 68 65 0D 0A 20 20 20 20 20 20     of  the..      
0083B0:  20 66 69 72 6D 77 61 72 65 2E 0D 0A 0D 0A 0D 0A     firmware.......
0083C0:  0D 0A 20 20 20 20 20 20 20 41 73 20 73 74 61 74    ..       As stat
0083D0:  65 64 20 61 62 6F 76 65 20 74 68 69 73 20 6D 61    ed above this ma
0083E0:  6E 75 61 6C 20 72 65 6C 61 74 65 73 20 6F 6E 6C    nual relates onl
0083F0:  79 20 74 6F 20 74 68 65 20 20 66 69 72 6D 77 61    y to the  firmwa
008400:  72 65 20 20 73 65 63 74 69 6F 6E 20 20 6F 66 0D    re  section  of.
008410:  0A 20 20 20 20 20 20 20 74 68 65 20 52 4F 4D 73    .       the ROMs
008420:  2E 20 4F 74 68 65 72 20 41 4D 53 4F 46 54 20 70    . Other AMSOFT p
008430:  75 62 6C 69 63 61 74 69 6F 6E 73 20 20 64 65 73    ublications  des
008440:  63 72 69 62 65 20 20 74 68 65 20 20 42 41 53 49    cribe  the  BASI
008450:  43 20 20 69 6E 74 65 72 70 72 65 74 65 72 0D 0A    C  interpreter..
008460:  20 20 20 20 20 20 20 28 74 68 6F 75 67 68 20 6E           (though n
008470:  6F 74 20 61 74 20 61 20 73 79 73 74 65 6D 20 6C    ot at a system l
008480:  65 76 65 6C 29 20 20 61 6E 64 20 20 74 68 65 20    evel)  and  the 
008490:  20 76 61 72 69 6F 75 73 20 20 69 6D 70 6C 65 6D     various  implem
0084A0:  65 6E 74 61 74 69 6F 6E 73 20 20 6F 66 0D 0A 20    entations  of.. 
0084B0:  20 20 20 20 20 20 43 50 2F 4D 2E 20 48 6F 77 65          CP/M. Howe
0084C0:  76 65 72 2C 20 74 68 65 20 61 72 65 61 73 20 69    ver, the areas i
0084D0:  6E 20 77 68 69 63 68 20 43 50 2F 4D 20 61 6E 64    n which CP/M and
0084E0:  20 74 68 65 20 66 69 72 6D 77 61 72 65 20 20 69     the firmware  i
0084F0:  6E 74 65 72 61 63 74 20 20 61 72 65 0D 0A 20 20    nteract  are..  
008500:  20 20 20 20 20 63 6F 76 65 72 65 64 20 69 6E 20         covered in 
008510:  74 68 69 73 20 6D 61 6E 75 61 6C 2E 20 41 6C 73    this manual. Als
008520:  6F 2C 20 61 72 65 61 73 20 6F 66 20 74 68 65 20    o, areas of the 
008530:  66 69 72 6D 77 61 72 65 20 74 68 61 74 20 61 72    firmware that ar
008540:  65 20 20 61 66 66 65 63 74 65 64 0D 0A 20 20 20    e  affected..   
008550:  20 20 20 20 62 79 20 74 68 65 20 61 64 64 69 74        by the addit
008560:  69 6F 6E 20 6F 66 20 61 20 64 69 73 63 20 69 6E    ion of a disc in
008570:  74 65 72 66 61 63 65 20 61 72 65 20 63 6F 76 65    terface are cove
008580:  72 65 64 20 69 6E 20 74 68 69 73 20 6D 61 6E 75    red in this manu
008590:  61 6C 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    al..............
0085A0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
0085B0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
0085C0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
0085D0:  20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43 34        AMSTRAD CPC4
0085E0:  36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D    64/664/6128 FIRM
0085F0:  57 41 52 45 20 20 20 20 20 20 20 20 20 20 20 20    WARE            
008600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
008610:  07 00 00 00 02 09 50 E5 07 00 C1 02 00 00 00 02    ......P.........
008620:  07 00 C2 02 00 00 00 02 07 00 C3 02 00 00 00 02    ................
008630:  07 00 C4 02 00 00 00 02 07 00 C5 02 00 00 00 02    ................
008640:  07 00 C6 02 00 00 00 02 07 00 C7 02 00 00 00 02    ................
008650:  07 00 C8 02 00 00 00 02 07 00 C9 02 00 00 00 02    ................
008660:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008670:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008680:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008690:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0086F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
008700:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
008710:  20 20 20 50 52 45 46 41 43 45 0D 0A 1A 20 20 20       PREFACE...   
008720:  20 20 54 68 65 20 63 6F 6D 70 75 74 65 72 73 20      The computers 
008730:  69 6E 20 74 68 65 20 43 50 43 20 72 61 6E 67 65    in the CPC range
008740:  20 20 63 6F 6E 74 61 69 6E 20 20 52 4F 4D 73 20      contain  ROMs 
008750:  20 77 68 69 63 68 20 20 68 6F 6C 64 20 20 74 68     which  hold  th
008760:  65 20 20 42 41 53 49 43 0D 0A 20 20 20 20 20 20    e  BASIC..      
008770:  20 69 6E 74 65 72 70 72 65 74 65 72 20 61 6E 64     interpreter and
008780:  65 76 65 6C 29 20 20 61 6E 64 20 20 74 68 65 20    evel)  and  the 
008790:  20 76 61 72 69 6F 75 73 20 20 69 6D 70 6C 65 6D     various  implem
0087A0:  65 6E 74 61 74 69 6F 6E 73 20 20 6F 66 0D 0A 20    entations  of.. 
0087B0:  20 20 20 20 20 20 43 50 2F 4D 2E 20 48 6F 77 65          CP/M. Howe
0087C0:  76 65 72 2C 20 74 68 65 20 61 72 65 61 73 20 69    ver, the areas i
0087D0:  6E 20 77 68 69 63 68 20 43 50 2F 4D 20 61 6E 64    n which CP/M and
0087E0:  20 74 68 65 20 66 69 72 6D 77 61 72 65 20 20 69     the firmware  i
0087F0:  6E 74 65 72 61 63 74 20 20 61 72 65 0D 0A 20 20    nteract  are..  
008800:  20 20 20 20 20 63 6F 76 65 72 65 64 20 69 6E 20         covered in 
008810:  74 68 69 73 20 6D 61 6E 75 61 6C 2E 20 41 6C 73    this manual. Als
008820:  6F 2C 20 61 72 65 61 73 20 6F 66 20 74 68 65 20    o, areas of the 
008830:  66 69 72 6D 77 61 72 65 20 74 68 61 74 20 61 72    firmware that ar
008840:  65 20 20 61 66 66 65 63 74 65 64 0D 0A 20 20 20    e  affected..   
008850:  20 20 20 20 62 79 20 74 68 65 20 61 64 64 69 74        by the addit
008860:  69 6F 6E 20 6F 66 20 61 20 64 69 73 63 20 69 6E    ion of a disc in
008870:  74 65 72 66 61 63 65 20 61 72 65 20 63 6F 76 65    terface are cove
008880:  72 65 64 20 69 6E 20 74 68 69 73 20 6D 61 6E 75    red in this manu
008890:  61 6C 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    al..............
0088A0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
0088B0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
0088C0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
0088D0:  20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43 34        AMSTRAD CPC4
0088E0:  36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D    64/664/6128 FIRM
0088F0:  57 41 52 45 20 20 20 20 20 20 20 20 20 20 20 20    WARE            
008900:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    ........       T
008910:  68 65 20 43 6F 6E 74 65 6E 74 73 2E 0D 0A 0D 0A    he Contents.....
008920:  0D 0A 0D 0A 20 20 20 20 20 20 20 31 20 54 68 65    ....       1 The
008930:  20 46 69 72 6D 77 61 72 65 2E 0D 0A 0D 0A 0D 0A     Firmware.......
008940:  0D 0A 20 20 20 20 20 20 20 31 2E 31 20 20 54 68    ..       1.1  Th
008950:  65 20 48 61 72 64 77 61 72 65 2E 0D 0A 20 20 20    e Hardware...   
008960:  20 20 20 20 31 2E 32 20 20 54 68 65 20 44 69 76        1.2  The Div
008970:  69 73 69 6F 6E 20 6F 66 20 74 68 65 20 46 69 72    ision of the Fir
008980:  6D 77 61 72 65 2E 0D 0A 20 20 20 20 20 20 20 31    mware...       1
008990:  2E 33 20 20 43 6F 6E 74 72 6F 6C 6C 69 6E 67 20    .3  Controlling 
0089A0:  74 68 65 20 46 69 72 6D 77 61 72 65 2E 0D 0A 20    the Firmware... 
0089B0:  20 20 20 20 20 20 31 2E 34 20 20 54 68 65 20 4A          1.4  The J
0089C0:  75 6D 70 62 6C 6F 63 6B 73 2E 0D 0A 20 20 20 20    umpblocks...    
0089D0:  20 20 20 31 2E 35 20 20 43 6F 6E 76 65 6E 74 69       1.5  Conventi
0089E0:  6F 6E 73 2E 0D 0A 20 20 20 20 20 20 20 31 2E 36    ons...       1.6
0089F0:  20 20 52 6F 75 74 69 6E 65 20 44 6F 63 75 6D 65      Routine Docume
008A00:  6E 74 61 74 69 6F 6E 2E 0D 0A 20 20 20 20 20 20    ntation...      
008A10:  20 31 2E 37 20 20 45 78 61 6D 70 6C 65 20 6F 66     1.7  Example of
008A20:  20 50 61 74 63 68 69 6E 67 20 61 20 4A 75 6D 70     Patching a Jump
008A30:  62 6C 6F 63 6B 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20    block.........  
008A40:  20 20 20 20 20 32 20 52 4F 4D 73 2C 20 52 41 4D         2 ROMs, RAM
008A50:  20 61 6E 64 20 74 68 65 20 52 65 73 74 61 72 74     and the Restart
008A60:  20 49 6E 73 74 72 75 63 74 69 6F 6E 73 2E 0D 0A     Instructions...
008A70:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 32 2E 31    ......       2.1
008A80:  20 20 4D 65 6D 6F 72 79 20 4D 61 70 2E 0D 0A 20      Memory Map... 
008A90:  20 20 20 20 20 20 32 2E 32 20 20 52 4F 4D 20 53          2.2  ROM S
008AA0:  65 6C 65 63 74 69 6F 6E 2E 0D 0A 20 20 20 20 20    election...     
008AB0:  20 20 32 2E 33 20 20 54 68 65 20 52 65 73 74 61      2.3  The Resta
008AC0:  72 74 20 49 6E 73 74 72 75 63 74 69 6F 6E 73 2E    rt Instructions.
008AD0:  0D 0A 20 20 20 20 20 20 20 32 2E 34 20 20 52 41    ..       2.4  RA
008AE0:  4D 20 61 6E 64 20 74 68 65 20 46 69 72 6D 77 61    M and the Firmwa
008AF0:  72 65 2E 0D 0A 20 20 20 20 20 20 20 32 2E 35 20    re...       2.5 
008B00:  20 42 61 6E 6B 20 53 77 69 74 63 68 69 6E 67 2E     Bank Switching.
008B10:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 33    ........       3
008B20:  20 54 68 65 20 4B 65 79 62 6F 61 72 64 2E 0D 0A     The Keyboard...
008B30:  0D 0A 0D 0A 20 20 20 20 20 20 20 33 2E 31 20 20    ....       3.1  
008B40:  4B 65 79 62 6F 61 72 64 20 53 63 61 6E 6E 69 6E    Keyboard Scannin
008B50:  67 2E 0D 0A 20 20 20 20 20 20 20 33 2E 32 20 20    g...       3.2  
008B60:  4B 65 79 20 54 72 61 6E 73 6C 61 74 69 6F 6E 2E    Key Translation.
008B70:  0D 0A 20 20 20 20 20 20 20 33 2E 33 20 20 43 68    ..       3.3  Ch
008B80:  61 72 61 63 74 65 72 73 20 66 72 6F 6D 20 74 68    aracters from th
008B90:  65 20 4B 65 79 62 6F 61 72 64 2E 0D 0A 20 20 20    e Keyboard...   
008BA0:  20 20 20 20 33 2E 34 20 20 53 68 69 66 74 20 61        3.4  Shift a
008BB0:  6E 64 20 43 61 70 73 20 4C 6F 63 6B 2E 0D 0A 20    nd Caps Lock... 
008BC0:  20 20 20 20 20 20 33 2E 35 20 20 52 65 70 65 61          3.5  Repea
008BD0:  74 69 6E 67 20 4B 65 79 73 2E 0D 0A 20 20 20 20    ting Keys...    
008BE0:  20 20 20 33 2E 36 20 20 42 72 65 61 6B 73 2E 0D       3.6  Breaks..
008BF0:  0A 20 20 20 20 20 20 20 33 2E 37 20 20 46 75 6E    .       3.7  Fun
008C00:  63 74 69 6F 6E 20 4B 65 79 73 20 61 6E 64 20 45    ction Keys and E
008C10:  78 70 61 6E 73 69 6F 6E 20 54 6F 6B 65 6E 73 2E    xpansion Tokens.
008C20:  0D 0A 20 20 20 20 20 20 20 33 2E 38 20 20 4A 6F    ..       3.8  Jo
008C30:  79 73 74 69 63 6B 73 2E 0D 0A 0D 0A 0D 0A 0D 0A    ysticks.........
008C40:  20 20 20 20 20 20 20 34 20 54 68 65 20 54 65 78           4 The Tex
008C50:  74 20 56 44 55 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    t VDU.......    
008C60:  20 20 20 34 2E 31 20 20 54 65 78 74 20 56 44 55       4.1  Text VDU
008C70:  20 43 6F 6F 72 64 69 6E 61 74 65 20 53 79 73 74     Coordinate Syst
008C80:  65 6D 73 2E 0D 0A 20 20 20 20 20 20 20 34 2E 32    ems...       4.2
008C90:  20 20 53 74 72 65 61 6D 73 2E 0D 0A 20 20 20 20      Streams...    
008CA0:  20 20 20 34 2E 33 20 20 54 65 78 74 20 50 65 6E       4.3  Text Pen
008CB0:  20 61 6E 64 20 50 61 70 65 72 20 49 6E 6B 73 2E     and Paper Inks.
008CC0:  0D 0A 20 20 20 20 20 20 20 34 2E 34 20 20 54 65    ..       4.4  Te
008CD0:  78 74 20 57 69 6E 64 6F 77 73 2E 0D 0A 20 20 20    xt Windows...   
008CE0:  20 20 20 20 34 2E 35 20 20 54 68 65 20 43 75 72        4.5  The Cur
008CF0:  72 65 6E 74 20 50 6F 73 69 74 69 6F 6E 20 61 6E    rent Position an
008D00:  64 20 74 68 65 20 43 75 72 73 6F 72 2E 0D 0A 20    d the Cursor... 
008D10:  20 20 20 20 20 20 34 2E 36 20 20 43 68 61 72 61          4.6  Chara
008D20:  63 74 65 72 73 20 61 6E 64 20 4D 61 74 72 69 63    cters and Matric
008D30:  65 73 2E 0D 0A 20 20 20 20 20 20 20 34 2E 37 20    es...       4.7 
008D40:  20 43 68 61 72 61 63 74 65 72 20 4F 75 74 70 75     Character Outpu
008D50:  74 20 61 6E 64 20 43 6F 6E 74 72 6F 6C 20 43 6F    t and Control Co
008D60:  64 65 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    des.........    
008D70:  20 20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36       AMSTRAD CPC46
008D80:  34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57    4/664/6128 FIRMW
008D90:  41 52 45 20 20 20 20 20 20 20 20 20 20 20 20 20    ARE             
008DA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                   C
008DB0:  6F 6E 74 65 6E 74 73 20 31 0D 0A 0D 0A 0D 0A 0D    ontents 1.......
008DC0:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
008DD0:  65 20 47 72 61 70 68 69 63 73 20 56 44 55 2E 0D    e Graphics VDU..
008DE0:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 35 2E    .......       5.
008DF0:  31 20 20 47 72 61 70 68 69 63 73 20 56 44 55 20    1  Graphics VDU 
008E00:  43 6F 6F 72 64 69 6E 61 74 65 20 53 79 73 74 65    Coordinate Syste
008E10:  6D 73 2E 0D 0A 20 20 20 20 20 20 20 35 2E 32 20    ms...       5.2 
008E20:  20 54 68 65 20 43 75 72 72 65 6E 74 20 47 72 61     The Current Gra
008E30:  70 68 69 63 73 20 50 6F 73 69 74 69 6F 6E 2E 0D    phics Position..
008E40:  0A 20 20 20 20 20 20 20 35 2E 33 20 20 47 72 61    .       5.3  Gra
008E50:  70 68 69 63 73 20 50 65 6E 20 61 6E 64 20 50 61    phics Pen and Pa
008E60:  70 65 72 20 49 6E 6B 73 2E 0D 0A 20 20 20 20 20    per Inks...     
008E70:  20 20 35 2E 34 20 20 47 72 61 70 68 69 63 73 20      5.4  Graphics 
008E80:  57 72 69 74 65 20 4D 6F 64 65 2E 0D 0A 20 20 20    Write Mode...   
008E90:  20 20 20 20 35 2E 35 20 20 47 72 61 70 68 69 63        5.5  Graphic
008EA0:  73 20 57 69 6E 64 6F 77 2E 0D 0A 20 20 20 20 20    s Window...     
008EB0:  20 20 35 2E 36 20 20 57 72 69 74 69 6E 67 20 43      5.6  Writing C
008EC0:  68 61 72 61 63 74 65 72 73 2E 0D 0A 20 20 20 20    haracters...    
008ED0:  20 20 20 35 2E 37 20 20 44 72 61 77 69 6E 67 20       5.7  Drawing 
008EE0:  4C 69 6E 65 73 2E 0D 0A 20 20 20 20 20 20 20 35    Lines...       5
008EF0:  2E 38 20 20 46 69 6C 6C 69 6E 67 20 41 72 65 61    .8  Filling Area
008F00:  73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    s.........      
008F10:  20 36 20 54 68 65 20 53 63 72 65 65 6E 2E 0D 0A     6 The Screen...
008F20:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 36 2E 31    ......       6.1
008F30:  20 20 53 63 72 65 65 6E 20 4D 6F 64 65 73 2E 0D      Screen Modes..
008F40:  0A 20 20 20 20 20 20 20 36 2E 32 20 20 49 6E 6B    .       6.2  Ink
008F50:  73 20 61 6E 64 20 43 6F 6C 6F 75 72 73 2E 0D 0A    s and Colours...
008F60:  20 20 20 20 20 20 20 36 2E 33 20 20 53 63 72 65           6.3  Scre
008F70:  65 6E 20 41 64 64 72 65 73 73 65 73 2E 0D 0A 20    en Addresses... 
008F80:  20 20 20 20 20 20 36 2E 34 20 20 53 63 72 65 65          6.4  Scree
008F90:  6E 20 4D 65 6D 6F 72 79 20 4D 61 70 2E 0D 0A 0D    n Memory Map....
008FA0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 37 20 54 68    .....       7 Th
008FB0:  65 20 53 6F 75 6E 64 20 4D 61 6E 61 67 65 72 2E    e Sound Manager.
008FC0:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 37    ........       7
008FD0:  2E 31 20 20 54 68 65 20 53 6F 75 6E 64 20 43 68    .1  The Sound Ch
008FE0:  69 70 2E 0D 0A 20 20 20 20 20 20 20 37 2E 32 20    ip...       7.2 
008FF0:  20 54 6F 6E 65 20 50 65 72 69 6F 64 73 20 61 6E     Tone Periods an
009000:  64 20 41 6D 70 6C 69 74 75 64 65 73 2E 0D 0A 20    d Amplitudes... 
009010:  20 20 20 20 20 20 37 2E 33 20 20 45 6E 76 65 6C          7.3  Envel
009020:  6F 70 69 6E 67 2E 0D 0A 20 20 20 20 20 20 20 37    oping...       7
009030:  2E 34 20 20 53 6F 75 6E 64 20 43 6F 6D 6D 61 6E    .4  Sound Comman
009040:  64 73 2E 0D 0A 20 20 20 20 20 20 20 37 2E 35 20    ds...       7.5 
009050:  20 53 6F 75 6E 64 20 51 75 65 75 65 73 2E 0D 0A     Sound Queues...
009060:  20 20 20 20 20 20 20 37 2E 36 20 20 53 79 6E 63           7.6  Sync
009070:  68 72 6F 6E 69 7A 61 74 69 6F 6E 2E 0D 0A 20 20    hronization...  
009080:  20 20 20 20 20 37 2E 37 20 20 48 6F 6C 64 69 6E         7.7  Holdin
009090:  67 20 53 6F 75 6E 64 73 2E 0D 0A 0D 0A 0D 0A 0D    g Sounds........
0090A0:  0A 20 20 20 20 20 20 20 38 20 54 68 65 20 43 61    .       8 The Ca
0090B0:  73 73 65 74 74 65 20 4D 61 6E 61 67 65 72 2E 0D    ssette Manager..
0090C0:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 38 2E    .......       8.
0090D0:  31 20 20 46 69 6C 65 20 46 6F 72 6D 61 74 2E 0D    1  File Format..
0090E0:  0A 20 20 20 20 20 20 20 38 2E 32 20 20 52 65 63    .       8.2  Rec
0090F0:  6F 72 64 20 46 6F 72 6D 61 74 2E 0D 0A 20 20 20    ord Format...   
009100:  20 20 20 20 38 2E 33 20 20 42 69 74 20 46 6F 72        8.3  Bit For
009110:  6D 61 74 2E 0D 0A 20 20 20 20 20 20 20 38 2E 34    mat...       8.4
009120:  20 20 54 68 65 20 48 65 61 64 65 72 20 52 65 63      The Header Rec
009130:  6F 72 64 2E 0D 0A 20 20 20 20 20 20 20 38 2E 35    ord...       8.5
009140:  20 20 52 65 61 64 20 61 6E 64 20 57 72 69 74 65      Read and Write
009150:  20 53 70 65 65 64 73 2E 0D 0A 20 20 20 20 20 20     Speeds...      
009160:  20 38 2E 36 20 20 43 61 74 61 6C 6F 67 75 69 6E     8.6  Cataloguin
009170:  67 2E 0D 0A 20 20 20 20 20 20 20 38 2E 37 20 20    g...       8.7  
009180:  52 65 61 64 69 6E 67 20 46 69 6C 65 73 2E 0D 0A    Reading Files...
009190:  20 20 20 20 20 20 20 38 2E 38 20 20 57 72 69 74           8.8  Writ
0091A0:  69 6E 67 20 46 69 6C 65 73 2E 0D 0A 20 20 20 20    ing Files...    
0091B0:  20 20 20 38 2E 39 20 20 52 65 61 64 69 6E 67 20       8.9  Reading 
0091C0:  61 6E 64 20 57 72 69 74 69 6E 67 20 46 69 6C 65    and Writing File
0091D0:  73 20 53 69 6D 75 6C 74 61 6E 65 6F 75 73 6C 79    s Simultaneously
0091E0:  2E 0D 0A 20 20 20 20 20 20 20 38 2E 31 30 20 46    ...       8.10 F
0091F0:  69 6C 65 6E 61 6D 65 73 2E 0D 0A 20 20 20 20 20    ilenames...     
009200:  20 20 38 2E 31 31 20 43 61 73 73 65 74 74 65 20      8.11 Cassette 
009210:  4D 61 6E 61 67 65 72 20 4D 65 73 73 61 67 65 73    Manager Messages
009220:  2E 0D 0A 20 20 20 20 20 20 20 38 2E 31 32 20 45    ...       8.12 E
009230:  73 63 61 70 65 20 4B 65 79 0D 0A 20 20 20 20 20    scape Key..     
009240:  20 20 38 2E 31 33 20 4C 6F 77 20 4C 65 76 65 6C      8.13 Low Level
009250:  20 43 61 73 73 65 74 74 65 20 44 72 69 76 69 6E     Cassette Drivin
009260:  67 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    g.......       A
009270:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
009280:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
009290:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0092A0:  20 20 20 20 20 20 20 20 20 20 20 43 6F 6E 74 65               Conte
0092B0:  6E 74 73 20 32 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    nts 2...........
0092C0:  0A 0D 0A 20 20 20 20 20 20 20 39 20 41 4D 53 44    ...       9 AMSD
0092D0:  4F 53 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    OS........      
0092E0:  20 39 2E 31 20 20 46 65 61 74 75 72 65 73 0D 0A     9.1  Features..
0092F0:  20 20 20 20 20 20 20 39 2E 32 20 20 46 69 6C 65           9.2  File
009300:  6E 61 6D 65 73 0D 0A 20 20 20 20 20 20 20 39 2E    names..       9.
009310:  33 20 20 46 69 6C 65 20 48 65 61 64 65 72 73 0D    3  File Headers.
009320:  0A 20 20 20 20 20 20 20 39 2E 34 20 20 44 69 73    .       9.4  Dis
009330:  63 20 4F 72 67 61 6E 69 73 61 74 69 6F 6E 0D 0A    c Organisation..
009340:  20 20 20 20 20 20 20 39 2E 35 20 20 42 6F 6F 74           9.5  Boot
009350:  20 53 65 63 74 6F 72 0D 0A 20 20 20 20 20 20 20     Sector..       
009360:  39 2E 36 20 20 41 4D 53 44 4F 53 20 4D 65 73 73    9.6  AMSDOS Mess
009370:  61 67 65 73 0D 0A 20 20 20 20 20 20 20 39 2E 37    ages..       9.7
009380:  20 20 42 49 4F 53 20 46 61 63 69 6C 69 74 69 65      BIOS Facilitie
009390:  73 20 41 76 61 69 6C 61 62 6C 65 20 74 6F 20 41    s Available to A
0093A0:  4D 53 44 4F 53 0D 0A 20 20 20 20 20 20 20 39 2E    MSDOS..       9.
0093B0:  38 20 20 53 74 6F 72 65 20 72 65 71 75 69 72 65    8  Store require
0093C0:  6D 65 6E 74 73 0D 0A 20 20 20 20 20 20 20 39 2E    ments..       9.
0093D0:  39 20 20 45 78 74 65 6E 64 65 64 20 44 69 73 63    9  Extended Disc
0093E0:  20 50 61 72 61 6D 65 74 65 72 20 42 6C 6F 63 6B     Parameter Block
0093F0:  73 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    s........       
009400:  31 30 20 45 78 70 61 6E 73 69 6F 6E 20 52 4F 4D    10 Expansion ROM
009410:  73 2C 20 52 65 73 69 64 65 6E 74 20 53 79 73 74    s, Resident Syst
009420:  65 6D 20 45 78 74 65 6E 73 69 6F 6E 73 20 61 6E    em Extensions an
009430:  64 20 52 41 4D 20 50 72 6F 67 72 61 6D 73 0D 0A    d RAM Programs..
009440:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 30 2E    ......       10.
009450:  31 20 52 4F 4D 20 41 64 64 72 65 73 73 69 6E 67    1 ROM Addressing
009460:  2E 0D 0A 20 20 20 20 20 20 20 31 30 2E 32 20 54    ...       10.2 T
009470:  68 65 20 46 6F 72 6D 61 74 20 6F 66 20 61 6E 20    he Format of an 
009480:  45 78 70 61 6E 73 69 6F 6E 20 52 4F 4D 2E 0D 0A    Expansion ROM...
009490:  20 20 20 20 20 20 20 31 30 2E 33 20 46 6F 72 65           10.3 Fore
0094A0:  67 72 6F 75 6E 64 20 52 4F 4D 73 20 61 6E 64 20    ground ROMs and 
0094B0:  52 41 4D 20 50 72 6F 67 72 61 6D 73 2E 0D 0A 20    RAM Programs... 
0094C0:  20 20 20 20 20 20 31 30 2E 34 20 42 61 63 6B 67          10.4 Backg
0094D0:  72 6F 75 6E 64 20 52 4F 4D 73 2E 0D 0A 20 20 20    round ROMs...   
0094E0:  20 20 20 20 31 30 2E 35 20 52 65 73 69 64 65 6E        10.5 Residen
0094F0:  74 20 53 79 73 74 65 6D 20 45 78 74 65 6E 73 69    t System Extensi
009500:  6F 6E 73 2E 0D 0A 20 20 20 20 20 20 20 31 30 2E    ons...       10.
009510:  36 20 45 78 74 65 72 6E 61 6C 20 43 6F 6D 6D 61    6 External Comma
009520:  6E 64 73 2E 0D 0A 20 20 20 20 20 20 20 31 30 2E    nds...       10.
009530:  37 20 45 78 61 6D 70 6C 65 73 2E 0D 0A 0D 0A 0D    7 Examples......
009540:  0A 0D 0A 20 20 20 20 20 20 20 31 31 20 49 6E 74    ...       11 Int
009550:  65 72 72 75 70 74 73 2E 0D 0A 0D 0A 0D 0A 0D 0A    errupts.........
009560:  20 20 20 20 20 20 20 31 31 2E 31 20 54 68 65 20           11.1 The 
009570:  54 69 6D 65 20 49 6E 74 65 72 72 75 70 74 2E 0D    Time Interrupt..
009580:  0A 20 20 20 20 20 20 20 31 31 2E 32 20 45 78 74    .       11.2 Ext
009590:  65 72 6E 61 6C 20 49 6E 74 65 72 72 75 70 74 73    ernal Interrupts
0095A0:  2E 0D 0A 20 20 20 20 20 20 20 31 31 2E 33 20 4E    ...       11.3 N
0095B0:  6F 6E 6D 61 73 6B 61 62 6C 65 20 49 6E 74 65 72    onmaskable Inter
0095C0:  72 75 70 74 73 2E 0D 0A 20 20 20 20 20 20 20 31    rupts...       1
0095D0:  31 2E 34 20 49 6E 74 65 72 72 75 70 74 73 20 61    1.4 Interrupts a
0095E0:  6E 64 20 45 76 65 6E 74 73 2E 0D 0A 20 20 20 20    nd Events...    
0095F0:  20 20 20 31 31 2E 35 20 49 6E 74 65 72 72 75 70       11.5 Interrup
009600:  74 20 51 75 65 75 65 73 2E 0D 0A 0D 0A 0D 0A 0D    t Queues........
009610:  0A 0D 0A 20 20 20 20 20 20 20 31 32 20 45 76 65    ...       12 Eve
009620:  6E 74 73 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    nts........     
009630:  20 20 31 32 2E 31 20 45 76 65 6E 74 20 43 6C 61      12.1 Event Cla
009640:  73 73 2E 0D 0A 20 20 20 20 20 20 20 31 32 2E 32    ss...       12.2
009650:  20 45 76 65 6E 74 20 43 6F 75 6E 74 2E 0D 0A 20     Event Count... 
009660:  20 20 20 20 20 20 31 32 2E 33 20 45 76 65 6E 74          12.3 Event
009670:  20 52 6F 75 74 69 6E 65 2E 0D 0A 20 20 20 20 20     Routine...     
009680:  20 20 31 32 2E 34 20 44 69 73 61 72 6D 69 6E 67      12.4 Disarming
009690:  20 61 6E 64 20 52 65 69 6E 69 74 69 61 6C 69 7A     and Reinitializ
0096A0:  69 6E 67 20 45 76 65 6E 74 73 2E 0D 0A 0D 0A 0D    ing Events......
0096B0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
0096C0:  20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43 34        AMSTRAD CPC4
0096D0:  36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D    64/664/6128 FIRM
0096E0:  57 41 52 45 20 20 20 20 20 20 20 20 20 20 20 20    WARE            
0096F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
009700:  43 6F 6E 74 65 6E 74 73 20 33 0D 0A 0D 0A 0D 0A    Contents 3......
009710:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31    ........       1
009720:  33 20 54 68 65 20 4D 61 63 68 69 6E 65 20 50 61    3 The Machine Pa
009730:  63 6B 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ck.........     
009740:  20 20 31 33 2E 31 20 48 61 72 64 77 61 72 65 20      13.1 Hardware 
009750:  49 6E 74 65 72 66 61 63 65 73 2E 0D 0A 20 20 20    Interfaces...   
009760:  20 20 20 20 31 33 2E 32 20 54 68 65 20 50 72 69        13.2 The Pri
009770:  6E 74 65 72 2E 0D 0A 20 20 20 20 20 20 20 31 33    nter...       13
009780:  2E 33 20 4C 6F 61 64 69 6E 67 20 61 6E 64 20 52    .3 Loading and R
009790:  75 6E 6E 69 6E 67 20 50 72 6F 67 72 61 6D 73 2E    unning Programs.
0097A0:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31    ........       1
0097B0:  34 20 46 69 72 6D 77 61 72 65 20 4A 75 6D 70 62    4 Firmware Jumpb
0097C0:  6C 6F 63 6B 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20    locks.........  
0097D0:  20 20 20 20 20 31 34 2E 31 20 54 68 65 20 4D 61         14.1 The Ma
0097E0:  69 6E 20 4A 75 6D 70 62 6C 6F 63 6B 2E 0D 0A 0D    in Jumpblock....
0097F0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 34 2E 31    .....       14.1
009800:  2E 31 20 20 45 6E 74 72 69 65 73 20 74 6F 20 74    .1  Entries to t
009810:  68 65 20 4B 65 79 20 4D 61 6E 61 67 65 72 2E 0D    he Key Manager..
009820:  0A 20 20 20 20 20 20 20 31 34 2E 31 2E 32 20 20    .       14.1.2  
009830:  45 6E 74 72 69 65 73 20 74 6F 20 74 68 65 20 54    Entries to the T
009840:  65 78 74 20 56 44 55 2E 0D 0A 20 20 20 20 20 20    ext VDU...      
009850:  20 31 34 2E 31 2E 33 20 20 45 6E 74 72 69 65 73     14.1.3  Entries
009860:  20 74 6F 20 74 68 65 20 47 72 61 70 68 69 63 73     to the Graphics
009870:  20 56 44 55 2E 0D 0A 20 20 20 20 20 20 20 31 34     VDU...       14
009880:  2E 31 2E 34 20 20 45 6E 74 72 69 65 73 20 74 6F    .1.4  Entries to
009890:  20 74 68 65 20 53 63 72 65 65 6E 20 50 61 63 6B     the Screen Pack
0098A0:  2E 0D 0A 20 20 20 20 20 20 20 31 34 2E 31 2E 35    ...       14.1.5
0098B0:  20 20 45 6E 74 72 69 65 73 20 74 6F 20 74 68 65      Entries to the
0098C0:  20 43 61 73 73 65 74 74 65 20 4D 61 6E 61 67 65     Cassette Manage
0098D0:  72 2E 0D 0A 20 20 20 20 20 20 20 31 34 2E 31 2E    r...       14.1.
0098E0:  36 20 20 45 6E 74 72 69 65 73 20 74 6F 20 74 68    6  Entries to th
0098F0:  65 20 53 6F 75 6E 64 20 4D 61 6E 61 67 65 72 2E    e Sound Manager.
009900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
009910:  08 00 00 00 02 09 50 E5 08 00 C1 02 00 00 00 02    ......P.........
009920:  08 00 C2 02 00 00 00 02 08 00 C3 02 00 00 00 02    ................
009930:  08 00 C4 02 00 00 00 02 08 00 C5 02 00 00 00 02    ................
009940:  08 00 C6 02 00 00 00 02 08 00 C7 02 00 00 00 02    ................
009950:  08 00 C8 02 00 00 00 02 08 00 C9 02 00 00 00 02    ................
009960:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009970:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009980:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009990:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0099F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
009A00:  0D 0A 20 20 20 20 20 20 20 31 34 2E 31 2E 37 20    ..       14.1.7 
009A10:  20 45 6E 74 72 69 65 73 20 74 6F 20 74 68 65 20     Entries to the 
009A20:  4B 65 72 6E 65 6C 2E 0D 0A 20 20 20 20 20 20 20    Kernel...       
009A30:  31 34 2E 31 2E 38 20 20 45 6E 74 72 69 65 73 20    14.1.8  Entries 
009A40:  74 6F 20 74 68 65 20 4D 61 63 68 69 6E 65 20 50    to the Machine P
009A50:  61 63 6B 2E 0D 0A 20 20 20 20 20 20 20 31 34 2E    ack...       14.
009A60:  31 2E 39 20 20 45 6E 74 72 69 65 73 20 74 6F 20    1.9  Entries to 
009A70:  74 68 65 20 4A 75 6D 70 65 72 2E 0D 0A 20 20 20    the Jumper...   
009A80:  20 20 20 20 31 34 2E 31 2E 31 30 20 46 75 72 74        14.1.10 Furt
009A90:  68 65 72 20 45 6E 74 72 69 65 73 2E 0D 0A 0D 0A    her Entries.....
009AA0:  0D 0A 0D 0A 20 20 20 20 20 20 20 31 34 2E 32 20    ....       14.2 
009AB0:  46 69 72 6D 77 61 72 65 20 49 6E 64 69 72 65 63    Firmware Indirec
009AC0:  74 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    tions.......    
009AD0:  20 20 20 31 34 2E 32 2E 31 20 20 54 65 78 74 20       14.2.1  Text 
009AE0:  56 44 55 20 49 6E 64 69 72 65 63 74 69 6F 6E 73    VDU Indirections
009AF0:  2E 0D 0A 20 20 20 20 20 20 20 31 34 2E 32 2E 32    ...       14.2.2
009B00:  20 20 47 72 61 70 68 69 63 73 20 56 44 55 20 49      Graphics VDU I
009B10:  6E 64 69 72 65 63 74 69 6F 6E 73 2E 0D 0A 20 20    ndirections...  
009B20:  20 20 20 20 20 31 34 2E 32 2E 33 20 20 53 63 72         14.2.3  Scr
009B30:  65 65 6E 20 50 61 63 6B 20 49 6E 64 69 72 65 63    een Pack Indirec
009B40:  74 69 6F 6E 73 2E 0D 0A 20 20 20 20 20 20 20 31    tions...       1
009B50:  34 2E 32 2E 34 20 20 4B 65 79 62 6F 61 72 64 20    4.2.4  Keyboard 
009B60:  4D 61 6E 61 67 65 72 20 49 6E 64 69 72 65 63 74    Manager Indirect
009B70:  69 6F 6E 73 2E 0D 0A 20 20 20 20 20 20 20 31 34    ions...       14
009B80:  2E 32 2E 35 20 20 4D 61 63 68 69 6E 65 20 50 61    .2.5  Machine Pa
009B90:  63 6B 20 49 6E 64 69 72 65 63 74 69 6F 6E 73 2E    ck Indirections.
009BA0:  0D 0A 20 20 20 20 20 20 20 31 34 2E 32 2E 36 20    ..       14.2.6 
009BB0:  20 46 75 72 74 68 65 72 20 49 6E 64 69 72 65 63     Further Indirec
009BC0:  74 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    tions.......    
009BD0:  20 20 20 31 34 2E 33 20 54 68 65 20 48 69 67 68       14.3 The High
009BE0:  20 4B 65 72 6E 65 6C 20 4A 75 6D 70 62 6C 6F 63     Kernel Jumpbloc
009BF0:  6B 2E 0D 0A 20 20 20 20 20 20 20 31 34 2E 34 20    k...       14.4 
009C00:  54 68 65 20 4C 6F 77 65 72 20 4B 65 72 6E 65 6C    The Lower Kernel
009C10:  20 4A 75 6D 70 62 6C 6F 63 6B 2E 0D 0A 0D 0A 0D     Jumpblock......
009C20:  0A 20 20 20 20 20 20 20 31 35 20 54 68 65 20 4D    .       15 The M
009C30:  61 69 6E 20 46 69 72 6D 77 61 72 65 20 4A 75 6D    ain Firmware Jum
009C40:  70 62 6C 6F 63 6B 2E 0D 0A 0D 0A 20 20 20 20 20    pblock.....     
009C50:  20 20 31 36 20 54 68 65 20 46 69 72 6D 77 61 72      16 The Firmwar
009C60:  65 20 49 6E 64 69 72 65 63 74 69 6F 6E 73 2E 0D    e Indirections..
009C70:  0A 0D 0A 20 20 20 20 20 20 20 31 37 20 4B 65 72    ...       17 Ker
009C80:  6E 65 6C 20 48 69 67 68 20 45 6E 74 72 69 65 73    nel High Entries
009C90:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 31 38 20 4C    .....       18 L
009CA0:  6F 77 20 45 6E 74 72 69 65 73 20 74 6F 20 74 68    ow Entries to th
009CB0:  65 20 4B 65 72 6E 65 6C 2E 0D 0A 0D 0A 20 20 20    e Kernel.....   
009CC0:  20 20 20 20 31 39 20 41 4D 53 44 4F 53 20 27 42        19 AMSDOS 'B
009CD0:  49 4F 53 27 20 46 61 63 69 6C 69 74 69 65 73 0D    IOS' Facilities.
009CE0:  0A 0D 0A 20 20 20 20 20 20 20 32 30 20 41 4D 53    ...       20 AMS
009CF0:  44 4F 53 20 45 78 74 65 72 6E 61 6C 20 43 6F 6D    DOS External Com
009D00:  6D 61 6E 64 73 0D 0A 0D 0A 0D 0A 20 20 20 20 20    mands......     
009D10:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
009D20:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
009D30:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
009D40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6F                  Co
009D50:  6E 74 65 6E 74 73 20 34 0D 0A 0D 0A 0D 0A 0D 0A    ntents 4........
009D60:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 70 70    ......       App
009D70:  65 6E 64 69 63 65 73 0D 0A 0D 0A 0D 0A 20 20 20    endices......   
009D80:  20 20 20 20 49 20 20 20 20 20 20 20 20 4B 65 79        I        Key
009D90:  20 4E 75 6D 62 65 72 69 6E 67 2E 0D 0A 0D 0A 0D     Numbering......
009DA0:  0A 20 20 20 20 20 20 20 49 49 20 20 20 20 20 20    .       II      
009DB0:  20 4B 65 79 20 54 72 61 6E 73 6C 61 74 69 6F 6E     Key Translation
009DC0:  20 54 61 62 6C 65 73 2E 0D 0A 0D 0A 0D 0A 20 20     Tables.......  
009DD0:  20 20 20 20 20 49 49 49 20 20 20 20 20 20 52 65         III      Re
009DE0:  70 65 61 74 69 6E 67 20 4B 65 79 73 2E 0D 0A 0D    peating Keys....
009DF0:  0A 0D 0A 20 20 20 20 20 20 20 49 56 20 20 20 20    ...       IV    
009E00:  20 20 20 46 75 6E 63 74 69 6F 6E 20 4B 65 79 73       Function Keys
009E10:  20 61 6E 64 20 45 78 70 61 6E 73 69 6F 6E 20 53     and Expansion S
009E20:  74 72 69 6E 67 73 2E 0D 0A 0D 0A 0D 0A 20 20 20    trings.......   
009E30:  20 20 20 20 56 20 20 20 20 20 20 20 20 49 6E 6B        V        Ink
009E40:  73 20 61 6E 64 20 43 6F 6C 6F 75 72 73 2E 0D 0A    s and Colours...
009E50:  0D 0A 0D 0A 20 20 20 20 20 20 20 56 49 20 20 20    ....       VI   
009E60:  20 20 20 20 44 69 73 70 6C 61 79 65 64 20 43 68        Displayed Ch
009E70:  61 72 61 63 74 65 72 20 53 65 74 2E 0D 0A 0D 0A    aracter Set.....
009E80:  0D 0A 20 20 20 20 20 20 20 56 49 49 20 20 20 20    ..       VII    
009E90:  20 20 54 65 78 74 20 56 44 55 20 43 6F 6E 74 72      Text VDU Contr
009EA0:  6F 6C 20 43 6F 64 65 73 2E 0D 0A 0D 0A 0D 0A 20    ol Codes....... 
009EB0:  20 20 20 20 20 20 56 49 49 49 20 20 20 20 20 4E          VIII     N
009EC0:  6F 74 65 73 20 61 6E 64 20 54 6F 6E 65 20 50 65    otes and Tone Pe
009ED0:  72 69 6F 64 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    riods.......    
009EE0:  20 20 20 49 58 20 20 20 20 20 20 20 54 68 65 20       IX       The 
009EF0:  50 72 6F 67 72 61 6D 6D 61 62 6C 65 20 53 6F 75    Programmable Sou
009F00:  6E 64 20 47 65 6E 65 72 61 74 6F 72 2E 0D 0A 0D    nd Generator....
009F10:  0A 0D 0A 20 20 20 20 20 20 20 58 20 20 20 20 20    ...       X     
009F20:  20 20 20 4B 65 72 6E 65 6C 20 42 6C 6F 63 6B 20       Kernel Block 
009F30:  4C 61 79 6F 75 74 73 2E 0D 0A 0D 0A 0D 0A 20 20    Layouts.......  
009F40:  20 20 20 20 20 58 49 20 20 20 20 20 20 20 54 68         XI       Th
009F50:  65 20 41 6C 74 65 72 6E 61 74 65 20 52 65 67 69    e Alternate Regi
009F60:  73 74 65 72 20 53 65 74 2E 0D 0A 0D 0A 0D 0A 20    ster Set....... 
009F70:  20 20 20 20 20 20 58 49 49 20 20 20 20 20 20 48          XII      H
009F80:  61 72 64 77 61 72 65 20 61 6E 64 20 48 61 72 64    ardware and Hard
009F90:  77 61 72 65 20 56 61 72 69 61 6E 74 73 0D 0A 0D    ware Variants...
009FA0:  0A 0D 0A 20 20 20 20 20 20 20 58 49 49 49 20 20    ...       XIII  
009FB0:  20 20 20 48 69 6E 74 73 2C 20 54 69 70 73 20 61       Hints, Tips a
009FC0:  6E 64 20 57 6F 72 6B 61 72 6F 75 6E 64 73 2E 0D    nd Workarounds..
009FD0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 58 49 56 20    .....       XIV 
009FE0:  20 20 20 20 20 50 72 69 6E 74 65 72 20 54 72 61         Printer Tra
009FF0:  6E 73 6C 61 74 69 6F 6E 20 54 61 62 6C 65 2E 0D    nslation Table..
00A000:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
00A010:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
00A020:  0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20    .       AMSTRAD 
00A030:  43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20    CPC464/664/6128 
00A040:  46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20    FIRMWARE        
00A050:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A060:  20 20 20 20 43 6F 6E 74 65 6E 74 73 20 35 0D 0A        Contents 5..
00A070:  1A 20 6F 66 20 74 68 65 20 46 69 72 6D 77 61 72    . of the Firmwar
00A080:  0D 0A 20 20 20 20 20 20 20 56 49 49 20 20 20 20    ..       VII    
00A090:  20 20 54 65 78 74 20 56 44 55 20 43 6F 6E 74 72      Text VDU Contr
00A0A0:  6F 6C 20 43 6F 64 65 73 2E 0D 0A 0D 0A 0D 0A 20    ol Codes....... 
00A0B0:  20 20 20 20 20 20 56 49 49 49 20 20 20 20 20 4E          VIII     N
00A0C0:  6F 74 65 73 20 61 6E 64 20 54 6F 6E 65 20 50 65    otes and Tone Pe
00A0D0:  72 69 6F 64 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    riods.......    
00A0E0:  20 20 20 49 58 20 20 20 20 20 20 20 54 68 65 20       IX       The 
00A0F0:  50 72 6F 67 72 61 6D 6D 61 62 6C 65 20 53 6F 75    Programmable Sou
00A100:  6E 64 20 47 65 6E 65 72 61 74 6F 72 2E 0D 0A 0D    nd Generator....
00A110:  0A 0D 0A 20 20 20 20 20 20 20 58 20 20 20 20 20    ...       X     
00A120:  20 20 20 4B 65 72 6E 65 6C 20 42 6C 6F 63 6B 20       Kernel Block 
00A130:  4C 61 79 6F 75 74 73 2E 0D 0A 0D 0A 0D 0A 20 20    Layouts.......  
00A140:  20 20 20 20 20 58 49 20 20 20 20 20 20 20 54 68         XI       Th
00A150:  65 20 41 6C 74 65 72 6E 61 74 65 20 52 65 67 69    e Alternate Regi
00A160:  73 74 65 72 20 53 65 74 2E 0D 0A 0D 0A 0D 0A 20    ster Set....... 
00A170:  20 20 20 20 20 20 58 49 49 20 20 20 20 20 20 48          XII      H
00A180:  61 72 64 77 61 72 65 20 61 6E 64 20 48 61 72 64    ardware and Hard
00A190:  77 61 72 65 20 56 61 72 69 61 6E 74 73 0D 0A 0D    ware Variants...
00A1A0:  0A 0D 0A 20 20 20 20 20 20 20 58 49 49 49 20 20    ...       XIII  
00A1B0:  20 20 20 48 69 6E 74 73 2C 20 54 69 70 73 20 61       Hints, Tips a
00A1C0:  6E 64 20 57 6F 72 6B 61 72 6F 75 6E 64 73 2E 0D    nd Workarounds..
00A1D0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 58 49 56 20    .....       XIV 
00A1E0:  20 20 20 20 20 50 72 69 6E 74 65 72 20 54 72 61         Printer Tra
00A1F0:  6E 73 6C 61 74 69 6F 6E 20 54 61 62 6C 65 2E 0D    nslation Table..
00A200:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 32    ........       2
00A210:  20 52 4F 4D 73 2C 20 52 41 4D 20 61 6E 64 20 74     ROMs, RAM and t
00A220:  68 65 20 52 65 73 74 61 72 74 20 49 6E 73 74 72    he Restart Instr
00A230:  75 63 74 69 6F 6E 73 0D 0A 0D 0A 0D 0A 20 20 20    uctions......   
00A240:  20 20 20 20 54 68 65 20 73 79 73 74 65 6D 20 68        The system h
00A250:  61 73 20 33 32 4B 20 6F 66 20 52 4F 4D 20 61 6E    as 32K of ROM an
00A260:  64 20 36 34 4B 20 6F 66 20 52 41 4D 20 20 69 6E    d 64K of RAM  in
00A270:  20 20 74 68 65 20 20 5A 38 30 27 73 20 20 36 34      the  Z80's  64
00A280:  4B 20 20 61 64 64 72 65 73 73 0D 0A 20 20 20 20    K  address..    
00A290:  20 20 20 73 70 61 63 65 2E 20 54 6F 20 61 6C 6C       space. To all
00A2A0:  6F 77 20 74 68 69 73 20 74 68 65 20 52 4F 4D 20    ow this the ROM 
00A2B0:  63 61 6E 20 62 65 20 65 6E 61 62 6C 65 64 20 6F    can be enabled o
00A2C0:  72 20 64 69 73 61 62 6C 65 64 20 20 61 73 20 20    r disabled  as  
00A2D0:  72 65 71 75 69 72 65 64 2E 0D 0A 20 20 20 20 20    required...     
00A2E0:  20 20 41 64 64 69 74 69 6F 6E 61 6C 20 45 78 70      Additional Exp
00A2F0:  61 6E 73 69 6F 6E 20 52 4F 4D 73 20 63 61 6E 20    ansion ROMs can 
00A300:  20 62 65 20 20 73 65 6C 65 63 74 65 64 20 20 67     be  selected  g
00A310:  69 76 69 6E 67 20 20 75 70 20 20 74 6F 20 20 34    iving  up  to  4
00A320:  31 32 38 4B 20 20 6F 66 0D 0A 20 20 20 20 20 20    128K  of..      
00A330:  20 70 72 6F 67 72 61 6D 20 61 72 65 61 2E 0D 0A     program area...
00A340:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 74    ....       All t
00A350:  68 65 20 5A 38 30 20 72 65 73 74 61 72 74 20 69    he Z80 restart i
00A360:  6E 73 74 72 75 63 74 69 6F 6E 73 2C 20 65 78 63    nstructions, exc
00A370:  65 70 74 20 66 6F 72 20 6F 6E 65 2C 20 68 61 76    ept for one, hav
00A380:  65 20 20 62 65 65 6E 20 20 72 65 73 65 72 76 65    e  been  reserve
00A390:  64 0D 0A 20 20 20 20 20 20 20 66 6F 72 20 73 79    d..       for sy
00A3A0:  73 74 65 6D 20 75 73 65 2E 20 52 53 54 20 31 20    stem use. RST 1 
00A3B0:  74 6F 20 52 53 54 20 35 20 61 72 65 20 75 73 65    to RST 5 are use
00A3C0:  64 20 74 6F 20 65 78 74 65 6E 64 20 74 68 65 20    d to extend the 
00A3D0:  69 6E 73 74 72 75 63 74 69 6F 6E 20 20 73 65 74    instruction  set
00A3E0:  0D 0A 20 20 20 20 20 20 20 62 79 20 69 6D 70 6C    ..       by impl
00A3F0:  65 6D 65 6E 74 69 6E 67 20 73 70 65 63 69 61 6C    ementing special
00A400:  20 63 61 6C 6C 20 61 6E 64 20 6A 75 6D 70 20 20     call and jump  
00A410:  69 6E 73 74 72 75 63 74 69 6F 6E 73 20 20 74 68    instructions  th
00A420:  61 74 20 20 65 6E 61 62 6C 65 20 20 61 6E 64 0D    at  enable  and.
00A430:  0A 20 20 20 20 20 20 20 64 69 73 61 62 6C 65 20    .       disable 
00A440:  52 4F 4D 73 2E 20 52 53 54 20 36 20 69 73 20 61    ROMs. RST 6 is a
00A450:  76 61 69 6C 61 62 6C 65 20 74 6F 20 74 68 65 20    vailable to the 
00A460:  75 73 65 72 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    user.....       
00A470:  32 2E 31 20 4D 65 6D 6F 72 79 20 4D 61 70 2E 0D    2.1 Memory Map..
00A480:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
00A490:  6D 65 6D 6F 72 79 20 6D 61 70 20 69 73 20 63 6F    memory map is co
00A4A0:  6D 70 6C 69 63 61 74 65 64 20 62 79 20 74 68 65    mplicated by the
00A4B0:  20 66 61 63 74 20 74 68 61 74 20 69 6E 74 6F 20     fact that into 
00A4C0:  74 68 65 20 5A 38 30 27 73 20 20 61 64 64 72 65    the Z80's  addre
00A4D0:  73 73 0D 0A 20 20 20 20 20 20 20 73 70 61 63 65    ss..       space
00A4E0:  20 6F 66 20 36 34 4B 20 62 79 74 65 73 20 68 61     of 64K bytes ha
00A4F0:  73 20 62 65 65 6E 20 73 71 75 65 65 7A 65 64 20    s been squeezed 
00A500:  36 34 4B 20 62 79 74 65 73 20 6F 66 20 52 41 4D    64K bytes of RAM
00A510:  2C 20 20 33 32 4B 20 20 62 79 74 65 73 20 20 6F    ,  32K  bytes  o
00A520:  66 0D 0A 20 20 20 20 20 20 20 52 4F 4D 20 61 6E    f..       ROM an
00A530:  64 20 70 72 6F 76 69 73 69 6F 6E 20 66 6F 72 20    d provision for 
00A540:  52 4F 4D 20 65 78 70 61 6E 73 69 6F 6E 20 20 6F    ROM expansion  o
00A550:  66 20 20 75 70 20 20 74 6F 20 20 32 35 32 2A 31    f  up  to  252*1
00A560:  36 4B 20 20 28 6E 65 61 72 6C 79 20 20 34 4D 29    6K  (nearly  4M)
00A570:  0D 0A 20 20 20 20 20 20 20 62 79 74 65 73 2E 20    ..       bytes. 
00A580:  54 68 65 20 61 64 64 72 65 73 73 20 73 70 61 63    The address spac
00A590:  65 20 69 73 20 64 69 76 69 64 65 64 20 61 73 20    e is divided as 
00A5A0:  66 6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 0D 0A 20 20    follows:......  
00A5B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 64                  Ad
00A5C0:  64 72 65 73 73 20 20 20 20 20 20 20 20 20 20 52    dress          R
00A5D0:  41 4D 20 20 20 20 20 20 20 20 20 20 20 20 20 20    AM              
00A5E0:  20 20 20 20 20 20 20 20 20 52 4F 4D 0D 0A 20 20             ROM..  
00A5F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 31                  #1
00A600:  30 30 30 30 20 20 20 5F 5F 5F 5F 5F 5F 5F 5F 5F    0000   _________
00A610:  5F 5F 5F 5F 5F 5F 5F 5F 20 20 20 20 23 31 30 30    ________    #100
00A620:  30 30 20 20 20 20 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    00    __________
00A630:  5F 5F 5F 5F 5F 5F 5F 0D 0A 20 20 20 20 20 20 20    _______..       
00A640:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A650:  20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20     |              
00A660:  20 20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20       |            
00A670:  7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    |               
00A680:  20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20      |..           
00A690:  20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20 20                 |  
00A6A0:  44 65 66 61 75 6C 74 20 53 63 72 65 65 6E 20 7C    Default Screen |
00A6B0:  20 20 20 20 20 20 20 20 20 20 20 20 7C 20 20 20                |   
00A6C0:  55 70 70 65 72 20 52 4F 4D 73 20 20 20 20 7C 0D    Upper ROMs    |.
00A6D0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
00A6E0:  20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20 4D             |     M
00A6F0:  65 6D 6F 72 79 20 20 20 20 20 20 7C 20 20 20 20    emory      |    
00A700:  20 20 20 20 20 20 20 20 7C 20 20 28 62 61 6E 6B            |  (bank
00A710:  20 73 77 69 74 63 68 65 64 29 7C 0D 0A 20 20 20     switched)|..   
00A720:  20 20 20 20 20 20 20 20 20 20 20 20 20 23 43 30                 #C0
00A730:  30 30 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    00   |__________
00A740:  5F 5F 5F 5F 5F 5F 5F 7C 20 20 20 23 43 30 30 30    _______|   #C000
00A750:  20 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F        |___________
00A760:  5F 5F 5F 5F 5F 5F 7C 0D 0A 20 20 20 20 20 20 20    ______|..       
00A770:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A780:  20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20     |              
00A790:  20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20       |..          
00A7A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20                  | 
00A7B0:  53 74 61 63 6B 2C 20 46 69 72 6D 77 61 72 65 20    Stack, Firmware 
00A7C0:  7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    |..             
00A7D0:  20 20 20 20 20 20 20 20 20 20 20 7C 44 61 74 61               |Data
00A7E0:  20 26 20 4A 75 6D 70 62 6C 6F 63 6B 20 7C 0D 0A     & Jumpblock |..
00A7F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A800:  23 42 31 30 30 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F    #B100   |_______
00A810:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 0D 0A 20 20 20    __________|..   
00A820:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A830:  20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20 20         |          
00A840:  20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 20           |..      
00A850:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A860:  20 20 7C 20 46 6F 72 65 67 72 6F 75 6E 64 20 44      | Foreground D
00A870:  61 74 61 20 7C 0D 0A 20 20 20 20 20 20 20 20 20    ata |..         
00A880:  20 20 20 20 20 20 20 23 41 43 30 30 20 20 20 7C           #AC00   |
00A890:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
00A8A0:  5F 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    _|..            
00A8B0:  20 20 20 20 20 20 20 20 20 20 20 20 7C 20 20 20                |   
00A8C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D                  |.
00A8D0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
00A8E0:  20 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D 2D 2D             |------
00A8F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A 20 20    -----------|..  
00A900:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A910:  20 20 20 20 20 20 7C 20 42 61 63 6B 67 72 6F 75          | Backgrou
00A920:  6E 64 20 44 61 74 61 20 7C 20 7D 20 23 35 30 34    nd Data | } #504
00A930:  20 62 79 74 65 73 20 66 6F 72 20 41 4D 53 44 4F     bytes for AMSDO
00A940:  53 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    S..             
00A950:  20 20 20 20 20 20 20 20 20 20 20 7C 2D 2D 2D 2D               |----
00A960:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 0D 0A    -------------|..
00A970:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A980:  23 3F 3F 3F 3F 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F    #????   |_______
00A990:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 0D 0A 20 20 20    __________|..   
00A9A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A9B0:  20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20 20         |          
00A9C0:  20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 20           |..      
00A9D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A9E0:  20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20      |             
00A9F0:  20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20        |..         
00AA00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C                   |
00AA10:  20 20 4D 65 6D 6F 72 79 20 50 6F 6F 6C 20 20 20      Memory Pool   
00AA20:  20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20     |..            
00AA30:  20 20 20 20 23 3F 3F 3F 3F 20 20 20 7C 5F 5F 5F        #????   |___
00AA40:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 20    ______________| 
00AA50:  20 20 23 34 30 30 30 20 20 20 20 5F 5F 5F 5F 5F      #4000    _____
00AA60:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 20    _____________.. 
00AA70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00AA80:  20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20           |        
00AA90:  20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20             |      
00AAA0:  20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20 20         |          
00AAB0:  20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20            |..     
00AAC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00AAD0:  20 20 20 7C 20 42 61 63 6B 67 72 6F 75 6E 64 20       | Background 
00AAE0:  44 61 74 61 20 7C 20 20 20 20 20 20 20 20 20 20    Data |          
00AAF0:  20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20     |              
00AB00:  20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20        |..         
00AB10:  20 20 20 20 20 20 20 23 3F 3F 3F 3F 20 20 20 7C           #????   |
00AB20:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
00AB30:  5F 7C 20 20 20 20 20 20 20 20 20 20 20 7C 20 20    _|           |  
00AB40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00AB50:  7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    |..             
00AB60:  20 20 20 20 20 20 20 20 20 20 20 7C 20 20 20 20               |    
00AB70:  20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20 20                 |  
00AB80:  20 20 20 20 20 20 20 20 20 7C 20 20 4C 6F 77 65             |  Lowe
00AB90:  72 20 52 4F 4D 20 20 20 20 20 20 20 7C 0D 0A 20    r ROM       |.. 
00ABA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00ABB0:  20 20 20 20 20 20 20 7C 20 46 6F 72 65 67 72 6F           | Foregro
00ABC0:  75 6E 64 20 44 61 74 61 20 7C 20 20 20 20 20 20    und Data |      
00ABD0:  20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20 20         |          
00ABE0:  20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20            |..     
00ABF0:  20 20 20 20 20 20 20 20 20 20 20 23 30 30 34 30               #0040
00AC00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
00AC10:  09 00 00 00 02 09 50 E5 09 00 C1 02 00 00 00 02    ......P.........
00AC20:  09 00 C2 02 00 00 00 02 09 00 C3 02 00 00 00 02    ................
00AC30:  09 00 C4 02 00 00 00 02 09 00 C5 02 00 00 00 02    ................
00AC40:  09 00 C6 02 00 00 00 02 09 00 C7 02 00 00 00 02    ................
00AC50:  09 00 C8 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 20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F       |____________
00AD10:  5F 5F 5F 5F 5F 7C 20 20 20 20 20 20 20 20 20 20    _____|          
00AD20:  20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20     |              
00AD30:  20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20        |..         
00AD40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C                   |
00AD50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00AD60:  20 7C 20 20 20 20 20 20 20 20 20 20 20 7C 20 20     |           |  
00AD70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00AD80:  7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    |..             
00AD90:  20 20 20 20 20 20 20 20 20 20 20 7C 20 20 46 69               |  Fi
00ADA0:  72 6D 77 61 72 65 20 41 72 65 61 20 20 7C 20 20    rmware Area  |  
00ADB0:  20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20             |      
00ADC0:  20 20 20 20 20 20 20 20 20 20 20 20 7C 0D 0A 20                |.. 
00ADD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23                   #
00ADE0:  30 30 30 30 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F    0000   |________
00ADF0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 20 20 20 23 30 30    _________|   #00
00AE00:  30 30 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    00   |__________
00AE10:  5F 5F 5F 5F 5F 5F 5F 5F 7C 0D 0A 0D 0A 0D 0A 0D    ________|.......
00AE20:  0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20    .       AMSTRAD 
00AE30:  43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20    CPC464/664/6128 
00AE40:  46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20    FIRMWARE        
00AE50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00AE60:  20 20 20 20 20 20 70 61 67 65 20 32 2E 31 0D 0A          page 2.1..
00AE70:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
00AE80:  20 20 20 54 68 65 20 73 69 7A 65 20 6F 66 20 74       The size of t
00AE90:  68 65 20 74 77 6F 20 62 61 63 6B 67 72 6F 75 6E    he two backgroun
00AEA0:  64 20 61 72 65 61 73 20 64 65 70 65 6E 64 20 20    d areas depend  
00AEB0:  6F 6E 20 20 74 68 65 20 20 62 61 63 6B 67 72 6F    on  the  backgro
00AEC0:  75 6E 64 20 20 52 4F 4D 73 0D 0A 20 20 20 20 20    und  ROMs..     
00AED0:  20 20 66 69 74 74 65 64 20 74 6F 20 74 68 65 20      fitted to the 
00AEE0:  6D 61 63 68 69 6E 65 20 28 73 65 65 20 73 65 63    machine (see sec
00AEF0:  74 69 6F 6E 20 39 29 2E 0D 0A 0D 0A 20 20 20 20    tion 9).....    
00AF00:  20 20 20 54 68 65 20 75 70 70 65 72 20 66 6F 72       The upper for
00AF10:  65 67 72 6F 75 6E 64 20 64 61 74 61 20 61 72 65    eground data are
00AF20:  61 20 6E 65 65 64 20 6E 6F 74 20 68 61 76 65 20    a need not have 
00AF30:  69 74 73 20 6C 6F 77 65 72 20 62 6F 75 6E 64 20    its lower bound 
00AF40:  61 74 20 20 23 41 43 30 30 0D 0A 20 20 20 20 20    at  #AC00..     
00AF50:  20 20 62 75 74 20 74 68 69 73 20 69 73 20 20 74      but this is  t
00AF60:  68 65 20 20 64 65 66 61 75 6C 74 20 20 73 65 74    he  default  set
00AF70:  74 69 6E 67 20 20 28 61 73 20 20 75 73 65 64 20    ting  (as  used 
00AF80:  20 62 79 20 20 42 41 53 49 43 29 2E 20 20 54 68     by  BASIC).  Th
00AF90:  65 20 20 6C 6F 77 65 72 0D 0A 20 20 20 20 20 20    e  lower..      
00AFA0:  20 66 6F 72 65 67 72 6F 75 6E 64 20 64 61 74 61     foreground data
00AFB0:  20 61 72 65 61 20 6E 65 65 64 20 6F 6E 6C 79 20     area need only 
00AFC0:  62 65 20 72 65 73 65 72 76 65 64 20 69 66 20 69    be reserved if i
00AFD0:  74 20 69 73 20 6E 65 65 64 65 64 20 28 74 68 69    t is needed (thi
00AFE0:  73 20 20 61 72 65 61 0D 0A 20 20 20 20 20 20 20    s  area..       
00AFF0:  69 73 20 6E 6F 74 20 75 73 65 64 20 62 79 20 42    is not used by B
00B000:  41 53 49 43 20 61 6E 64 20 69 73 20 73 65 74 20    ASIC and is set 
00B010:  74 6F 20 7A 65 72 6F 20 6C 65 6E 67 74 68 29 2E    to zero length).
00B020:  20 54 68 65 20 6D 65 6D 6F 72 79 20 70 6F 6F 6C     The memory pool
00B030:  20 20 6C 65 66 74 0D 0A 20 20 20 20 20 20 20 62      left..       b
00B040:  65 74 77 65 65 6E 20 74 68 65 20 62 61 63 6B 67    etween the backg
00B050:  72 6F 75 6E 64 20 64 61 74 61 20 61 72 65 61 73    round data areas
00B060:  20 69 73 20 61 6C 73 6F 20 66 6F 72 20 74 68 65     is also for the
00B070:  20 20 66 6F 72 65 67 72 6F 75 6E 64 20 20 70 72      foreground  pr
00B080:  6F 67 72 61 6D 0D 0A 20 20 20 20 20 20 20 74 6F    ogram..       to
00B090:  20 75 73 65 20 28 73 65 65 20 73 65 63 74 69 6F     use (see sectio
00B0A0:  6E 20 39 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    n 9).....       
00B0B0:  54 68 65 20 33 32 4B 20 6F 66 20 6F 6E 2D 62 6F    The 32K of on-bo
00B0C0:  61 72 64 20 52 4F 4D 20 69 73 20 73 70 6C 69 74    ard ROM is split
00B0D0:  20 69 6E 74 6F 20 74 77 6F 20 73 65 63 74 69 6F     into two sectio
00B0E0:  6E 73 20 77 68 69 63 68 20 20 61 72 65 20 20 68    ns which  are  h
00B0F0:  61 6E 64 6C 65 64 0D 0A 20 20 20 20 20 20 20 73    andled..       s
00B100:  65 70 61 72 61 74 65 6C 79 2E 20 48 65 6E 63 65    eparately. Hence
00B110:  66 6F 72 74 68 20 20 74 68 65 73 65 20 20 77 69    forth  these  wi
00B120:  6C 6C 20 20 62 65 20 20 64 69 73 63 75 73 73 65    ll  be  discusse
00B130:  64 20 20 61 73 20 20 69 66 20 20 74 68 65 79 20    d  as  if  they 
00B140:  20 77 65 72 65 0D 0A 20 20 20 20 20 20 20 73 65     were..       se
00B150:  70 61 72 61 74 65 20 52 4F 4D 73 2E 20 54 68 65    parate ROMs. The
00B160:  20 66 69 72 6D 77 61 72 65 20 20 72 65 73 69 64     firmware  resid
00B170:  65 73 20 20 69 6E 20 20 74 68 65 20 20 6C 6F 77    es  in  the  low
00B180:  65 72 20 20 52 4F 4D 2E 20 20 54 68 65 20 20 42    er  ROM.  The  B
00B190:  41 53 49 43 0D 0A 20 20 20 20 20 20 20 72 65 73    ASIC..       res
00B1A0:  69 64 65 73 20 69 6E 20 74 68 65 20 75 70 70 65    ides in the uppe
00B1B0:  72 20 52 4F 4D 2E 20 54 68 69 73 20 75 70 70 65    r ROM. This uppe
00B1C0:  72 20 52 4F 4D 20 69 73 20 62 61 6E 6B 20 73 77    r ROM is bank sw
00B1D0:  69 74 63 68 65 64 20 73 6F 20 20 74 68 61 74 20    itched so  that 
00B1E0:  20 75 70 0D 0A 20 20 20 20 20 20 20 74 6F 20 32     up..       to 2
00B1F0:  35 32 20 65 78 70 61 6E 73 69 6F 6E 20 52 4F 4D    52 expansion ROM
00B200:  73 20 28 73 65 65 20 73 65 63 74 69 6F 6E 20 39    s (see section 9
00B210:  29 20 63 61 6E 20 72 65 70 6C 61 63 65 20 20 69    ) can replace  i
00B220:  74 20 20 69 6E 20 20 74 68 65 20 20 6D 65 6D 6F    t  in  the  memo
00B230:  72 79 0D 0A 20 20 20 20 20 20 20 6D 61 70 2E 0D    ry..       map..
00B240:  0A 0D 0A 20 20 20 20 20 20 20 32 2E 32 20 52 4F    ...       2.2 RO
00B250:  4D 20 53 65 6C 65 63 74 69 6F 6E 2E 0D 0A 0D 0A    M Selection.....
00B260:  20 20 20 20 20 20 20 54 68 65 72 65 20 61 72 65           There are
00B270:  20 74 77 6F 20 6D 65 63 68 61 6E 69 73 6D 73 20     two mechanisms 
00B280:  66 6F 72 20 73 77 69 74 63 68 69 6E 67 20 52 4F    for switching RO
00B290:  4D 73 20 69 6E 20 61 6E 64 20 6F 75 74 20 6F 66    Ms in and out of
00B2A0:  20 74 68 65 20 20 61 64 64 72 65 73 73 0D 0A 20     the  address.. 
00B2B0:  20 20 20 20 20 20 73 70 61 63 65 3A 0D 0A 0D 0A          space:....
00B2C0:  20 20 20 20 20 20 20 61 2E 20 52 4F 4D 20 53 74           a. ROM St
00B2D0:  61 74 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20    ate.....        
00B2E0:  20 20 20 54 68 65 20 75 70 70 65 72 20 61 6E 64       The upper and
00B2F0:  20 6C 6F 77 65 72 20 52 4F 4D 73 20 6D 61 79 20     lower ROMs may 
00B300:  62 65 20 65 6E 61 62 6C 65 64 20 61 6E 64 20 20    be enabled and  
00B310:  64 69 73 61 62 6C 65 64 20 20 73 65 70 61 72 61    disabled  separa
00B320:  74 65 6C 79 2E 0D 0A 20 20 20 20 20 20 20 20 20    tely...         
00B330:  20 20 57 68 65 6E 20 74 68 65 20 75 70 70 65 72      When the upper
00B340:  20 52 4F 4D 20 69 73 20 65 6E 61 62 6C 65 64 20     ROM is enabled 
00B350:  64 61 74 61 20 20 72 65 61 64 20 20 66 72 6F 6D    data  read  from
00B360:  20 20 61 64 64 72 65 73 73 65 73 20 20 62 65 74      addresses  bet
00B370:  77 65 65 6E 0D 0A 20 20 20 20 20 20 20 20 20 20    ween..          
00B380:  20 23 43 30 30 30 20 61 6E 64 20 23 46 46 46 46     #C000 and #FFFF
00B390:  20 69 73 20 66 65 74 63 68 65 64 20 66 72 6F 6D     is fetched from
00B3A0:  20 74 68 65 20 52 4F 4D 2E 20 53 69 6D 69 6C 61     the ROM. Simila
00B3B0:  72 6C 79 2C 20 77 68 65 6E 20 74 68 65 20 6C 6F    rly, when the lo
00B3C0:  77 65 72 0D 0A 20 20 20 20 20 20 20 20 20 20 20    wer..           
00B3D0:  52 4F 4D 20 69 73 20 65 6E 61 62 6C 65 64 20 64    ROM is enabled d
00B3E0:  61 74 61 20 72 65 61 64 20 66 6F 72 6D 20 61 64    ata read form ad
00B3F0:  64 72 65 73 73 65 73 20 62 65 74 77 65 65 6E 20    dresses between 
00B400:  23 30 30 30 30 20 61 6E 64 20 23 33 46 46 46 20    #0000 and #3FFF 
00B410:  69 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 66    is..           f
00B420:  65 74 63 68 65 64 20 66 72 6F 6D 20 74 68 65 20    etched from the 
00B430:  52 4F 4D 2E 20 57 68 65 6E 20 74 68 65 20 52 4F    ROM. When the RO
00B440:  4D 73 20 61 72 65 20 64 69 73 61 62 6C 65 64 20    Ms are disabled 
00B450:  64 61 74 61 20 20 69 73 20 20 66 65 74 63 68 65    data  is  fetche
00B460:  64 0D 0A 20 20 20 20 20 20 20 20 20 20 20 66 72    d..           fr
00B470:  6F 6D 20 52 41 4D 2E 0D 0A 0D 0A 20 20 20 20 20    om RAM.....     
00B480:  20 20 20 20 20 20 4E 6F 74 65 20 74 68 61 74 20          Note that 
00B490:  74 68 65 20 52 4F 4D 20 73 74 61 74 65 20 20 64    the ROM state  d
00B4A0:  6F 65 73 20 20 6E 6F 74 20 20 61 66 66 65 63 74    oes  not  affect
00B4B0:  20 20 77 72 69 74 69 6E 67 20 20 77 68 69 63 68      writing  which
00B4C0:  20 20 61 6C 77 61 79 73 0D 0A 20 20 20 20 20 20      always..      
00B4D0:  20 20 20 20 20 63 68 61 6E 67 65 73 20 74 68 65         changes the
00B4E0:  20 63 6F 6E 74 65 6E 74 73 20 6F 66 20 52 41 4D     contents of RAM
00B4F0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 62 2E 20 52    .....       b. R
00B500:  4F 4D 20 53 65 6C 65 63 74 2E 0D 0A 0D 0A 0D 0A    OM Select.......
00B510:  20 20 20 20 20 20 20 20 20 20 20 45 78 70 61 6E               Expan
00B520:  73 69 6F 6E 20 52 4F 4D 73 20 61 72 65 20 73 75    sion ROMs are su
00B530:  70 70 6F 72 74 65 64 20 20 62 79 20 20 73 77 69    pported  by  swi
00B540:  74 63 68 69 6E 67 20 20 74 68 65 20 20 75 70 70    tching  the  upp
00B550:  65 72 20 20 52 4F 4D 20 20 61 72 65 61 0D 0A 20    er  ROM  area.. 
00B560:  20 20 20 20 20 20 20 20 20 20 62 65 74 77 65 65              betwee
00B570:  6E 20 52 4F 4D 73 2E 20 45 78 70 61 6E 73 69 6F    n ROMs. Expansio
00B580:  6E 20 52 4F 4D 73 20 20 61 72 65 20 20 61 64 64    n ROMs  are  add
00B590:  72 65 73 73 65 64 20 20 62 79 20 20 61 20 20 73    ressed  by  a  s
00B5A0:  65 70 61 72 61 74 65 20 20 52 4F 4D 0D 0A 20 20    eparate  ROM..  
00B5B0:  20 20 20 20 20 20 20 20 20 73 65 6C 65 63 74 20             select 
00B5C0:  61 64 64 72 65 73 73 20 62 79 74 65 20 69 6D 70    address byte imp
00B5D0:  6C 65 6D 65 6E 74 65 64 20 69 6E 20 49 2F 4F 20    lemented in I/O 
00B5E0:  73 70 61 63 65 2E 20 52 4F 4D 20 73 65 6C 65 63    space. ROM selec
00B5F0:  74 20 61 64 64 72 65 73 73 65 73 0D 0A 20 20 20    t addresses..   
00B600:  20 20 20 20 20 20 20 20 61 72 65 20 69 6E 20 74            are in t
00B610:  68 65 20 72 61 6E 67 65 20 30 2E 2E 32 35 31 2C    he range 0..251,
00B620:  20 70 72 6F 76 69 64 69 6E 67 20 66 6F 72 20 75     providing for u
00B630:  70 20 74 6F 20 32 35 32 20 65 78 70 61 6E 73 69    p to 252 expansi
00B640:  6F 6E 20 52 4F 4D 73 2E 0D 0A 0D 0A 0D 0A 20 20    on ROMs.......  
00B650:  20 20 20 20 20 20 20 20 20 57 68 65 6E 20 74 68             When th
00B660:  65 20 6D 61 63 68 69 6E 65 20 69 73 20 66 69 72    e machine is fir
00B670:  73 74 20 74 75 72 6E 65 64 20 6F 6E 20 69 74 20    st turned on it 
00B680:  73 65 6C 65 63 74 73 20 52 4F 4D 20 7A 65 72 6F    selects ROM zero
00B690:  2E 20 54 68 69 73 20 77 69 6C 6C 0D 0A 20 20 20    . This will..   
00B6A0:  20 20 20 20 20 20 20 20 75 73 75 61 6C 6C 79 20            usually 
00B6B0:  73 65 6C 65 63 74 20 74 68 65 20 6F 6E 20 62 6F    select the on bo
00B6C0:  61 72 64 20 52 4F 4D 2C 20 20 62 75 74 20 20 61    ard ROM,  but  a
00B6D0:  6E 20 20 65 78 70 61 6E 73 69 6F 6E 20 20 52 4F    n  expansion  RO
00B6E0:  4D 20 20 6D 61 79 20 20 62 65 0D 0A 20 20 20 20    M  may  be..    
00B6F0:  20 20 20 20 20 20 20 66 69 74 74 65 64 20 61 74           fitted at
00B700:  20 74 68 69 73 20 61 64 64 72 65 73 73 2C 20 77     this address, w
00B710:  68 69 63 68 20 77 69 6C 6C 20 70 72 65 2D 65 6D    hich will pre-em
00B720:  70 74 20 74 68 65 20 6F 6E 2D 62 6F 61 72 64 20    pt the on-board 
00B730:  52 4F 4D 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20    ROM.....        
00B740:  20 20 20 53 65 65 20 73 65 63 74 69 6F 6E 20 39       See section 9
00B750:  20 66 6F 72 20 61 20 64 65 73 63 72 69 70 74 69     for a descripti
00B760:  6F 6E 20 6F 66 20 74 68 65 20 75 73 65 20 6F 66    on of the use of
00B770:  20 65 78 70 61 6E 73 69 6F 6E 20 52 4F 4D 73 2E     expansion ROMs.
00B780:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 32 2E 33    ......       2.3
00B790:  20 54 68 65 20 52 65 73 74 61 72 74 20 49 6E 73     The Restart Ins
00B7A0:  74 72 75 63 74 69 6F 6E 73 2E 0D 0A 0D 0A 20 20    tructions.....  
00B7B0:  20 20 20 20 20 54 68 65 20 6B 65 72 6E 65 6C 20         The kernel 
00B7C0:  73 75 70 70 6F 72 74 73 20 74 68 65 20 73 74 6F    supports the sto
00B7D0:  72 65 20 6D 61 70 20 69 6E 20 61 20 6E 75 6D 62    re map in a numb
00B7E0:  65 72 20 6F 66 20 77 61 79 73 2E 20 49 6E 20 70    er of ways. In p
00B7F0:  61 72 74 69 63 75 6C 61 72 20 61 0D 0A 20 20 20    articular a..   
00B800:  20 20 20 20 76 61 72 69 65 74 79 20 6F 66 20 66        variety of f
00B810:  61 63 69 6C 69 74 69 65 73 20 61 72 65 20 20 70    acilities are  p
00B820:  72 6F 76 69 64 65 64 20 20 74 6F 20 20 68 61 6E    rovided  to  han
00B830:  64 6C 65 20 20 73 75 62 72 6F 75 74 69 6E 65 20    dle  subroutine 
00B840:  20 61 64 64 72 65 73 73 65 73 0D 0A 20 20 20 20     addresses..    
00B850:  20 20 20 65 78 74 65 6E 74 65 64 20 74 6F 20 69       extented to i
00B860:  6E 63 6C 75 64 65 20 52 4F 4D 20 73 65 6C 65 63    nclude ROM selec
00B870:  74 20 61 6E 64 2F 6F 72 20 52 4F 4D 20 73 74 61    t and/or ROM sta
00B880:  74 65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 2E 20    te information. 
00B890:  20 53 6F 6D 65 20 20 6F 66 0D 0A 20 20 20 20 20     Some  of..     
00B8A0:  20 20 74 68 65 20 20 72 65 73 74 61 72 74 20 20      the  restart  
00B8B0:  69 6E 73 74 72 75 63 74 69 6F 6E 73 20 20 61 72    instructions  ar
00B8C0:  65 20 20 75 73 65 64 20 20 74 6F 20 20 61 75 67    e  used  to  aug
00B8D0:  6D 65 6E 74 20 20 74 68 65 20 20 65 78 69 73 74    ment  the  exist
00B8E0:  69 6E 67 20 20 5A 38 30 0D 0A 20 20 20 20 20 20    ing  Z80..      
00B8F0:  20 69 6E 73 74 72 75 63 74 69 6F 6E 20 73 65 74     instruction set
00B900:  2E 20 54 68 65 20 6F 74 68 65 72 20 72 65 73 74    . The other rest
00B910:  61 72 74 73 20 61 72 65 20 72 65 73 65 72 76 65    arts are reserve
00B920:  64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    d.......       A
00B930:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
00B940:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
00B950:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00B960:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
00B970:  65 20 32 2E 32 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    e 2.2...........
00B980:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 66 69    ...       The fi
00B990:  72 6D 77 61 72 65 20 62 65 74 77 65 65 6E 20 23    rmware between #
00B9A0:  30 30 30 30 20 61 6E 64 20 23 30 30 33 46 20 69    0000 and #003F i
00B9B0:  73 20 73 65 74 20 75 70 20 73 6F 20 20 74 68 61    s set up so  tha
00B9C0:  74 20 20 74 68 65 20 20 72 65 73 74 61 72 74 73    t  the  restarts
00B9D0:  0D 0A 20 20 20 20 20 20 20 6F 70 65 72 61 74 65    ..       operate
00B9E0:  20 77 68 61 74 65 76 65 72 20 74 68 65 20 63 75     whatever the cu
00B9F0:  72 72 65 6E 74 20 52 4F 4D 20 73 74 61 74 65 20    rrent ROM state 
00BA00:  69 73 2E 20 54 68 65 20 75 73 65 72 20 73 68 6F    is. The user sho
00BA10:  75 6C 64 20 20 6E 6F 74 20 20 61 6C 74 65 72 0D    uld  not  alter.
00BA20:  0A 20 20 20 20 20 20 20 74 68 65 20 63 6F 6E 74    .       the cont
00BA30:  65 6E 74 73 20 6F 66 20 74 68 69 73 20 61 72 65    ents of this are
00BA40:  61 20 65 78 63 65 70 74 20 61 73 20 69 6E 64 69    a except as indi
00BA50:  63 61 74 65 64 20 69 6E 20 73 65 63 74 69 6F 6E    cated in section
00BA60:  20 31 38 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54     18.....       T
00BA70:  68 65 20 72 65 73 74 61 72 74 73 20 61 72 65 20    he restarts are 
00BA80:  61 73 20 66 6F 6C 6C 6F 77 73 2E 20 41 20 66 75    as follows. A fu
00BA90:  6C 6C 65 72 20 64 65 73 63 72 69 70 74 69 6F 6E    ller description
00BAA0:  20 6F 66 20 20 74 68 65 69 72 20 20 6F 70 65 72     of  their  oper
00BAB0:  61 74 69 6F 6E 0D 0A 20 20 20 20 20 20 20 63 61    ation..       ca
00BAC0:  6E 20 62 65 20 66 6F 75 6E 64 20 69 6E 20 73 65    n be found in se
00BAD0:  63 74 69 6F 6E 20 31 38 2E 0D 0A 0D 0A 20 20 20    ction 18.....   
00BAE0:  20 20 20 20 61 2E 20 54 68 65 20 45 78 74 65 6E        a. The Exten
00BAF0:  64 65 64 20 49 6E 73 74 72 75 63 74 69 6F 6E 20    ded Instruction 
00BB00:  53 65 74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 4C    Set.....       L
00BB10:  4F 57 20 4A 55 4D 50 20 28 52 53 54 20 31 29 0D    OW JUMP (RST 1).
00BB20:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 52 53    ...           RS
00BB30:  54 20 31 20 6A 75 6D 70 73 20 74 6F 20 61 20 72    T 1 jumps to a r
00BB40:  6F 75 74 69 6E 65 20 69 6E 20 74 68 65 20 6C 6F    outine in the lo
00BB50:  77 65 72 20 31 36 4B 20 6F 66 20 6D 65 6D 6F 72    wer 16K of memor
00BB60:  79 2E 20 54 68 65 20 74 77 6F 20 62 79 74 65 73    y. The two bytes
00BB70:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 66 6F 6C    ..           fol
00BB80:  6C 6F 77 69 6E 67 20 74 68 65 20 72 65 73 74 61    lowing the resta
00BB90:  72 74 20 61 72 65 20 61 73 73 75 6D 65 64 20 74    rt are assumed t
00BBA0:  6F 20 62 65 20 61 20 27 6C 6F 77 20 61 64 64 72    o be a 'low addr
00BBB0:  65 73 73 27 20 2D 20 73 6F 20 52 53 54 20 31 0D    ess' - so RST 1.
00BBC0:  0A 20 20 20 20 20 20 20 20 20 20 20 63 61 6E 20    .           can 
00BBD0:  62 65 20 63 6F 6E 73 69 64 65 72 65 64 20 74 6F    be considered to
00BBE0:  20 62 65 20 61 20 74 68 72 65 65 20 62 79 74 65     be a three byte
00BBF0:  20 69 6E 73 74 72 75 63 74 69 6F 6E 2C 20 72 61     instruction, ra
00BC00:  74 68 65 72 20 6C 69 6B 65 20 61 20 4A 50 0D 0A    ther like a JP..
00BC10:  20 20 20 20 20 20 20 20 20 20 20 69 6E 73 74 72               instr
00BC20:  75 63 74 69 6F 6E 2E 0D 0A 0D 0A 20 20 20 20 20    uction.....     
00BC30:  20 20 20 20 20 20 54 68 65 20 74 6F 70 20 32 20          The top 2 
00BC40:  62 69 74 73 20 6F 66 20 74 68 65 20 27 6C 6F 77    bits of the 'low
00BC50:  20 61 64 64 72 65 73 73 27 20 64 65 66 69 6E 65     address' define
00BC60:  20 74 68 65 20 52 4F 4D 20 20 65 6E 61 62 6C 65     the ROM  enable
00BC70:  2F 64 69 73 61 62 6C 65 0D 0A 20 20 20 20 20 20    /disable..      
00BC80:  20 20 20 20 20 73 74 61 74 65 20 72 65 71 75 69         state requi
00BC90:  72 65 64 3B 20 74 68 65 20 62 6F 74 74 6F 6D 20    red; the bottom 
00BCA0:  31 34 20 62 69 74 73 20 67 69 76 65 20 74 68 65    14 bits give the
00BCB0:  20 61 63 74 75 61 6C 20 61 64 64 72 65 73 73 20     actual address 
00BCC0:  28 69 6E 20 74 68 65 0D 0A 20 20 20 20 20 20 20    (in the..       
00BCD0:  20 20 20 20 72 61 6E 67 65 20 23 30 30 30 30 20        range #0000 
00BCE0:  74 6F 20 23 33 46 46 46 29 20 74 6F 20 6A 75 6D    to #3FFF) to jum
00BCF0:  70 20 74 6F 20 6F 6E 63 65 20 74 68 65 20 52 4F    p to once the RO
00BD00:  4D 20 20 73 74 61 74 65 20 20 69 73 20 20 73 65    M  state  is  se
00BD10:  74 20 20 75 70 2E 0D 0A 20 20 20 20 20 20 20 20    t  up...        
00BD20:  20 20 20 57 68 65 6E 20 74 68 65 20 72 6F 75 74       When the rout
00BD30:  69 6E 65 20 72 65 74 75 72 6E 73 20 74 68 65 20    ine returns the 
00BD40:  52 4F 4D 20 73 74 61 74 65 20 69 73 20 72 65 73    ROM state is res
00BD50:  74 6F 72 65 64 20 74 6F 20 69 74 73 20 6F 72 69    tored to its ori
00BD60:  67 69 6E 61 6C 0D 0A 20 20 20 20 20 20 20 20 20    ginal..         
00BD70:  20 20 73 65 74 74 69 6E 67 2E 0D 0A 0D 0A 20 20      setting.....  
00BD80:  20 20 20 20 20 20 20 20 20 54 68 65 20 66 69 72             The fir
00BD90:  6D 77 61 72 65 20 6A 75 6D 70 62 6C 6F 63 6B 2C    mware jumpblock,
00BDA0:  20 74 68 72 6F 75 67 68 20 77 68 69 63 68 20 74     through which t
00BDB0:  68 65 20 66 69 72 6D 77 61 72 65 20 72 6F 75 74    he firmware rout
00BDC0:  69 6E 65 73 20 73 68 6F 75 6C 64 0D 0A 20 20 20    ines should..   
00BDD0:  20 20 20 20 20 20 20 20 62 65 20 63 61 6C 6C 65            be calle
00BDE0:  64 2C 20 6D 61 6B 65 73 20 65 78 74 65 6E 73 69    d, makes extensi
00BDF0:  76 65 20 75 73 65 20 20 6F 66 20 20 4C 4F 57 20    ve use  of  LOW 
00BE00:  20 4A 55 4D 50 73 2E 20 20 54 68 65 73 65 20 20     JUMPs.  These  
00BE10:  4C 4F 57 20 20 4A 55 4D 50 73 0D 0A 20 20 20 20    LOW  JUMPs..    
00BE20:  20 20 20 20 20 20 20 72 65 71 75 65 73 74 20 74           request t
00BE30:  68 65 20 6C 6F 77 65 72 20 52 4F 4D 20 74 6F 20    he lower ROM to 
00BE40:  62 65 20 65 6E 61 62 6C 65 64 2C 20 73 6F 20 74    be enabled, so t
00BE50:  68 61 74 20 74 68 65 20 6C 6F 77 65 72 20 52 4F    hat the lower RO
00BE60:  4D 20 6D 61 79 20 20 62 65 0D 0A 20 20 20 20 20    M may  be..     
00BE70:  20 20 20 20 20 20 64 69 73 61 62 6C 65 64 20 65          disabled e
00BE80:  78 63 65 70 74 20 77 68 65 6E 20 74 68 65 20 66    xcept when the f
00BE90:  69 72 6D 77 61 72 65 20 69 73 20 61 63 74 69 76    irmware is activ
00BEA0:  65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 53 49 44    e.....       SID
00BEB0:  45 20 43 41 4C 4C 20 28 52 53 54 20 32 29 0D 0A    E CALL (RST 2)..
00BEC0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 52 53 54    ..           RST
00BED0:  20 32 20 63 61 6C 6C 73 20 61 20 20 72 6F 75 74     2 calls a  rout
00BEE0:  69 6E 65 20 20 69 6E 20 20 61 6E 20 20 61 73 73    ine  in  an  ass
00BEF0:  6F 63 69 61 74 65 64 20 20 52 4F 4D 2E 20 20 49    ociated  ROM.  I
00BF00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
00BF10:  0A 00 00 00 02 09 50 E5 0A 00 C1 02 00 00 00 02    ......P.........
00BF20:  0A 00 C2 02 00 00 00 02 0A 00 C3 02 00 00 00 02    ................
00BF30:  0A 00 C4 02 00 00 00 02 0A 00 C5 02 00 00 00 02    ................
00BF40:  0A 00 C6 02 00 00 00 02 0A 00 C7 02 00 00 00 02    ................
00BF50:  0A 00 C8 02 00 00 00 02 0A 00 C9 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:  74 20 20 68 61 73 20 20 61 20 20 76 65 72 79 0D    t  has  a  very.
00C010:  0A 20 20 20 20 20 20 20 20 20 20 20 73 70 65 63    .           spec
00C020:  69 61 6C 69 73 65 64 2E 20 41 20 66 6F 72 65 67    ialised. A foreg
00C030:  72 6F 75 6E 64 20 70 72 6F 67 72 61 6D 20 28 73    round program (s
00C040:  65 65 20 73 65 63 74 69 6F 6E 20 39 29 20 6D 61    ee section 9) ma
00C050:  79 20 72 65 71 75 69 72 65 20 6D 6F 72 65 0D 0A    y require more..
00C060:  20 20 20 20 20 20 20 20 20 20 20 74 68 61 6E 20               than 
00C070:  31 36 4B 20 6F 66 20 52 4F 4D 2E 20 54 68 65 20    16K of ROM. The 
00C080:  73 69 64 65 20 63 61 6C 6C 20 6D 65 63 68 61 6E    side call mechan
00C090:  69 73 6D 20 61 6C 6C 6F 77 73 20 66 6F 72 20 63    ism allows for c
00C0A0:  61 6C 6C 73 20 20 62 65 74 77 65 65 6E 0D 0A 20    alls  between.. 
00C0B0:  20 20 20 20 20 20 20 20 20 20 74 77 6F 2C 20 74              two, t
00C0C0:  68 72 65 65 20 6F 72 20 66 6F 75 72 20 61 73 73    hree or four ass
00C0D0:  6F 63 69 61 74 65 64 20 20 52 4F 4D 73 20 20 77    ociated  ROMs  w
00C0E0:  69 74 68 6F 75 74 20 20 72 65 66 65 72 65 6E 63    ithout  referenc
00C0F0:  65 20 20 74 6F 20 20 74 68 65 69 72 0D 0A 20 20    e  to  their..  
00C100:  20 20 20 20 20 20 20 20 20 61 63 74 75 61 6C 20             actual 
00C110:  52 4F 4D 20 73 65 6C 65 63 74 20 61 64 64 72 65    ROM select addre
00C120:  73 73 65 73 2C 20 70 72 6F 76 69 64 65 64 20 74    sses, provided t
00C130:  68 61 74 20 74 68 65 20 52 4F 4D 73 20 61 72 65    hat the ROMs are
00C140:  20 20 69 6E 73 74 61 6C 6C 65 64 0D 0A 20 20 20      installed..   
00C150:  20 20 20 20 20 20 20 20 6E 65 78 74 20 74 6F 20            next to 
00C160:  65 61 63 68 20 6F 74 68 65 72 20 61 6E 64 20 69    each other and i
00C170:  6E 20 6F 72 64 65 72 2E 0D 0A 0D 0A 20 20 20 20    n order.....    
00C180:  20 20 20 20 20 20 20 54 68 65 20 74 77 6F 20 62           The two b
00C190:  79 74 65 73 20 66 6F 6C 6C 6F 77 69 6E 67 20 74    ytes following t
00C1A0:  68 65 20 72 65 73 74 61 72 74 20 20 69 6E 73 74    he restart  inst
00C1B0:  72 75 63 74 69 6F 6E 20 20 67 69 76 65 20 20 74    ruction  give  t
00C1C0:  68 65 20 20 27 73 69 64 65 0D 0A 20 20 20 20 20    he  'side..     
00C1D0:  20 20 20 20 20 20 61 64 64 72 65 73 73 27 20 6F          address' o
00C1E0:  66 20 74 68 65 20 72 6F 75 74 69 6E 65 20 74 6F    f the routine to
00C1F0:  20 63 61 6C 6C 20 2D 20 73 6F 20 74 68 65 20 52     call - so the R
00C200:  53 54 20 32 20 63 61 6E 20 20 62 65 20 20 63 6F    ST 2 can  be  co
00C210:  6E 73 69 64 65 72 65 64 0D 0A 20 20 20 20 20 20    nsidered..      
00C220:  20 20 20 20 20 74 6F 20 62 65 20 61 20 74 68 72         to be a thr
00C230:  65 65 20 62 79 74 65 20 69 6E 73 74 72 75 63 74    ee byte instruct
00C240:  69 6F 6E 2C 20 72 61 74 68 65 72 20 6C 69 6B 65    ion, rather like
00C250:  20 20 61 20 20 43 41 4C 4C 20 20 69 6E 73 74 72      a  CALL  instr
00C260:  75 63 74 69 6F 6E 2E 0D 0A 20 20 20 20 20 20 20    uction...       
00C270:  20 20 20 20 54 68 65 20 74 6F 70 20 32 20 62 69        The top 2 bi
00C280:  74 73 20 6F 66 20 74 68 65 20 27 73 69 64 65 20    ts of the 'side 
00C290:  61 64 64 72 65 73 73 27 20 73 70 65 63 69 66 79    address' specify
00C2A0:  20 20 77 68 69 63 68 20 20 6F 66 20 20 74 68 65      which  of  the
00C2B0:  20 20 66 6F 75 72 0D 0A 20 20 20 20 20 20 20 20      four..        
00C2C0:  20 20 20 52 4F 4D 73 20 74 6F 20 73 65 6C 65 63       ROMs to selec
00C2D0:  74 3B 20 74 68 65 20 62 6F 74 74 6F 6D 20 31 34    t; the bottom 14
00C2E0:  20 62 69 74 73 2C 20 77 68 65 6E 20 61 64 64 65     bits, when adde
00C2F0:  64 20 74 6F 20 23 43 30 30 30 2C 20 67 69 76 65    d to #C000, give
00C300:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 20 20      the..         
00C310:  20 20 61 63 74 75 61 6C 20 72 6F 75 74 69 6E 65      actual routine
00C320:  20 61 64 64 72 65 73 73 2E 20 54 68 65 20 75 70     address. The up
00C330:  70 65 72 20 52 4F 4D 20 69 73 20 65 6E 61 62 6C    per ROM is enabl
00C340:  65 64 2C 20 74 68 65 20 6C 6F 77 65 72 20 52 4F    ed, the lower RO
00C350:  4D 20 69 73 0D 0A 20 20 20 20 20 20 20 20 20 20    M is..          
00C360:  20 64 69 73 61 62 6C 65 64 2E 20 42 6F 74 68 20     disabled. Both 
00C370:  52 4F 4D 20 73 74 61 74 65 20 61 6E 64 20 74 68    ROM state and th
00C380:  65 20 52 4F 4D 20 73 65 6C 65 63 74 20 61 72 65    e ROM select are
00C390:  20 72 65 73 74 6F 72 65 64 20 74 6F 20 20 74 68     restored to  th
00C3A0:  65 69 72 0D 0A 20 20 20 20 20 20 20 20 20 20 20    eir..           
00C3B0:  6F 72 69 67 69 6E 61 6C 20 73 65 74 74 69 6E 67    original setting
00C3C0:  73 20 77 68 65 6E 20 74 68 65 20 72 6F 75 74 69    s when the routi
00C3D0:  6E 65 20 72 65 74 75 72 6E 73 2E 0D 0A 0D 0A 20    ne returns..... 
00C3E0:  20 20 20 20 20 20 46 41 52 20 43 41 4C 4C 20 28          FAR CALL (
00C3F0:  52 53 54 20 33 29 0D 0A 0D 0A 20 20 20 20 20 20    RST 3)....      
00C400:  20 20 20 20 20 52 53 54 20 33 20 63 61 6C 6C 73         RST 3 calls
00C410:  20 61 20 72 6F 75 74 69 6E 65 20 61 6E 79 77 68     a routine anywh
00C420:  65 72 65 20 69 6E 20 6D 65 6D 6F 72 79 2C 20 69    ere in memory, i
00C430:  6E 20 52 41 4D 20 6F 72 20 20 69 6E 20 20 61 6E    n RAM or  in  an
00C440:  79 20 20 52 4F 4D 2E 0D 0A 20 20 20 20 20 20 20    y  ROM...       
00C450:  20 20 20 20 54 68 65 20 74 77 6F 20 62 79 74 65        The two byte
00C460:  73 20 66 6F 6C 6C 6F 77 69 6E 67 20 74 68 65 20    s following the 
00C470:  72 65 73 74 61 72 74 20 61 72 65 20 61 73 73 75    restart are assu
00C480:  6D 65 64 20 74 6F 20 62 65 20 74 68 65 20 20 61    med to be the  a
00C490:  64 64 72 65 73 73 0D 0A 20 20 20 20 20 20 20 20    ddress..        
00C4A0:  20 20 20 6F 66 20 61 20 27 66 61 72 20 61 64 64       of a 'far add
00C4B0:  72 65 73 73 27 2E 20 54 68 65 20 27 66 61 72 20    ress'. The 'far 
00C4C0:  61 64 64 72 65 73 73 27 20 20 69 73 20 20 61 20    address'  is  a 
00C4D0:  20 74 68 72 65 65 20 20 62 79 74 65 20 20 6F 62     three  byte  ob
00C4E0:  6A 65 63 74 2C 0D 0A 20 20 20 20 20 20 20 20 20    ject,..         
00C4F0:  20 20 77 68 69 63 68 20 74 61 6B 65 73 20 74 68      which takes th
00C500:  65 20 66 6F 72 6D 3A 0D 0A 0D 0A 20 20 20 20 20    e form:....     
00C510:  20 20 20 20 20 20 42 79 74 65 73 20 30 2E 2E 31          Bytes 0..1
00C520:  3A 20 20 20 20 20 20 20 41 63 74 75 61 6C 20 61    :       Actual a
00C530:  64 64 72 65 73 73 20 6F 66 20 72 6F 75 74 69 6E    ddress of routin
00C540:  65 20 74 6F 20 63 61 6C 6C 2E 0D 0A 20 20 20 20    e to call...    
00C550:  20 20 20 20 20 20 20 42 79 74 65 20 20 32 3A 20           Byte  2: 
00C560:  20 20 20 20 20 20 20 20 20 52 4F 4D 20 73 65 6C             ROM sel
00C570:  65 63 74 2F 73 74 61 74 65 20 72 65 71 75 69 72    ect/state requir
00C580:  65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    ed.....         
00C590:  20 20 54 68 65 20 52 4F 4D 20 73 65 6C 65 63 74      The ROM select
00C5A0:  2F 73 74 61 74 65 20 62 79 74 65 20 6D 61 79 20    /state byte may 
00C5B0:  74 61 6B 65 20 74 68 65 20 66 6F 6C 6C 6F 77 69    take the followi
00C5C0:  6E 67 20 76 61 6C 75 65 73 3A 0D 0A 20 20 20 20    ng values:..    
00C5D0:  20 20 20 20 20 20 20 30 2E 2E 32 35 31 3A 20 20           0..251:  
00C5E0:  20 20 20 20 20 20 20 20 20 53 65 6C 65 63 74 20             Select 
00C5F0:  74 68 65 20 75 70 70 65 72 20 52 4F 4D 20 61 74    the upper ROM at
00C600:  20 74 68 69 73 20 52 4F 4D 20 73 65 6C 65 63 74     this ROM select
00C610:  20 61 64 64 72 65 73 73 2E 0D 0A 20 20 20 20 20     address...     
00C620:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C630:  20 20 20 20 20 20 20 20 45 6E 61 62 6C 65 20 74            Enable t
00C640:  68 65 20 75 70 70 65 72 20 52 4F 4D 2C 20 64 69    he upper ROM, di
00C650:  73 61 62 6C 65 20 74 68 65 20 6C 6F 77 65 72 20    sable the lower 
00C660:  52 4F 4D 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ROM.....       A
00C670:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
00C680:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
00C690:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C6A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
00C6B0:  65 20 32 2E 33 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    e 2.3...........
00C6C0:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 32 35    ...           25
00C6D0:  32 2E 2E 32 35 35 20 20 20 20 20 20 20 20 20 20    2..255          
00C6E0:  4E 6F 20 63 68 61 6E 67 65 20 6F 66 20 52 4F 4D    No change of ROM
00C6F0:  20 73 65 6C 65 63 74 2C 20 65 6E 61 62 6C 65 2F     select, enable/
00C700:  64 69 73 61 62 6C 65 20 52 4F 4D 73 20 20 61 73    disable ROMs  as
00C710:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
00C720:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                   f
00C730:  6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 20 20 20 20 20    ollows:....     
00C740:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C750:  20 20 20 20 20 20 20 20 32 35 32 3A 20 45 6E 61            252: Ena
00C760:  62 6C 65 20 75 70 70 65 72 20 52 4F 4D 2C 20 65    ble upper ROM, e
00C770:  6E 61 62 6C 65 20 6C 6F 77 65 72 20 52 4F 4D 2E    nable lower ROM.
00C780:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
00C790:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                   2
00C7A0:  35 33 3A 20 45 6E 61 62 6C 65 20 75 70 70 65 72    53: Enable upper
00C7B0:  20 52 4F 4D 2C 20 64 69 73 61 62 6C 65 20 6C 6F     ROM, disable lo
00C7C0:  77 65 72 20 52 4F 4D 2E 0D 0A 20 20 20 20 20 20    wer ROM...      
00C7D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C7E0:  20 20 20 20 20 20 20 32 35 34 3A 20 44 69 73 61           254: Disa
00C7F0:  62 6C 65 20 75 70 70 65 72 20 52 4F 4D 2C 20 65    ble upper ROM, e
00C800:  6E 61 62 6C 65 20 6C 6F 77 65 72 20 52 4F 4D 2E    nable lower ROM.
00C810:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
00C820:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                   2
00C830:  35 35 3A 20 44 69 73 61 62 6C 65 20 75 70 70 65    55: Disable uppe
00C840:  72 20 52 4F 4D 2C 20 64 69 73 61 62 6C 65 20 6C    r ROM, disable l
00C850:  6F 77 65 72 20 52 4F 4D 2E 0D 0A 0D 0A 20 20 20    ower ROM.....   
00C860:  20 20 20 20 20 20 20 20 4E 6F 74 65 20 74 68 61            Note tha
00C870:  74 20 74 68 65 20 20 27 66 61 72 20 20 61 64 64    t the  'far  add
00C880:  72 65 73 73 27 20 20 69 73 20 20 6E 6F 74 20 20    ress'  is  not  
00C890:  69 74 73 65 6C 66 20 20 63 6F 6E 74 61 69 6E 65    itself  containe
00C8A0:  64 20 20 69 6E 20 20 74 68 65 0D 0A 20 20 20 20    d  in  the..    
00C8B0:  20 20 20 20 20 20 20 27 69 6E 73 74 72 75 63 74           'instruct
00C8C0:  69 6F 6E 27 2C 20 62 75 74 20 69 73 20 70 6F 69    ion', but is poi
00C8D0:  6E 74 65 64 20 61 74 2E 20 54 68 69 73 20 69 73    nted at. This is
00C8E0:  20 62 65 63 61 75 73 65 20 74 68 65 20 20 52 4F     because the  RO
00C8F0:  4D 20 20 73 65 6C 65 63 74 0D 0A 20 20 20 20 20    M  select..     
00C900:  20 20 20 20 20 20 61 64 64 72 65 73 73 20 77 69          address wi
00C910:  6C 6C 20 64 65 70 65 6E 64 20 6F 6E 20 74 68 65    ll depend on the
00C920:  20 70 61 72 74 69 63 75 6C 61 72 20 6F 72 64 65     particular orde
00C930:  72 20 69 6E 20 77 68 69 63 68 20 74 68 65 20 75    r in which the u
00C940:  73 65 72 20 20 68 61 73 0D 0A 20 20 20 20 20 20    ser  has..      
00C950:  20 20 20 20 20 63 68 6F 73 65 6E 20 74 6F 20 69         chosen to i
00C960:  6E 73 74 61 6C 6C 20 65 78 70 61 6E 73 69 6F 6E    nstall expansion
00C970:  20 52 4F 4D 73 20 61 6E 64 20 6D 75 73 74 20 62     ROMs and must b
00C980:  65 20 20 65 73 74 61 62 6C 69 73 68 65 64 20 20    e  established  
00C990:  61 74 20 20 72 75 6E 0D 0A 20 20 20 20 20 20 20    at  run..       
00C9A0:  20 20 20 20 74 69 6D 65 2E 0D 0A 0D 0A 20 20 20        time.....   
00C9B0:  20 20 20 20 20 20 20 20 42 6F 74 68 20 74 68 65            Both the
00C9C0:  20 52 4F 4D 20 73 74 61 74 65 20 61 6E 64 20 20     ROM state and  
00C9D0:  74 68 65 20 20 52 4F 4D 20 20 73 65 6C 65 63 74    the  ROM  select
00C9E0:  20 20 61 72 65 20 20 72 65 73 74 6F 72 65 64 20      are  restored 
00C9F0:  20 74 6F 20 20 74 68 65 69 72 0D 0A 20 20 20 20     to  their..    
00CA00:  20 20 20 20 20 20 20 6F 72 69 67 69 6E 61 6C 20           original 
00CA10:  73 65 74 74 69 6E 67 73 20 77 68 65 6E 20 74 68    settings when th
00CA20:  65 20 72 6F 75 74 69 6E 65 20 72 65 74 75 72 6E    e routine return
00CA30:  73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 52 41 4D    s.....       RAM
00CA40:  20 4C 41 4D 20 28 52 53 54 20 34 29 0D 0A 0D 0A     LAM (RST 4)....
00CA50:  20 20 20 20 20 20 20 20 20 20 20 52 53 54 20 34               RST 4
00CA60:  20 72 65 61 64 73 20 74 68 65 20 62 79 74 65 73     reads the bytes
00CA70:  20 66 72 6F 6D 20 52 41 4D 20 61 74 20 74 68 65     from RAM at the
00CA80:  20 20 61 64 64 72 65 73 73 20 20 67 69 76 65 6E      address  given
00CA90:  20 20 62 79 20 20 48 4C 2E 20 20 49 74 0D 0A 20      by  HL.  It.. 
00CAA0:  20 20 20 20 20 20 20 20 20 20 64 69 73 61 62 6C              disabl
00CAB0:  65 73 20 20 62 6F 74 68 20 20 52 4F 4D 73 20 20    es  both  ROMs  
00CAC0:  62 65 66 6F 72 65 20 20 72 65 61 64 69 6E 67 20    before  reading 
00CAD0:  20 61 6E 64 20 20 72 65 73 74 6F 72 65 73 20 20     and  restores  
00CAE0:  20 74 68 65 20 20 20 73 74 61 74 65 0D 0A 20 20     the   state..  
00CAF0:  20 20 20 20 20 20 20 20 20 61 66 74 65 72 77 61             afterwa
00CB00:  72 64 73 2E 20 54 68 69 73 20 27 69 6E 73 74 72    rds. This 'instr
00CB10:  75 63 74 69 6F 6E 27 20 61 76 6F 69 64 73 20 74    uction' avoids t
00CB20:  68 65 20 75 73 65 72 20 20 68 61 76 69 6E 67 20    he user  having 
00CB30:  20 74 6F 20 20 70 75 74 20 20 61 0D 0A 20 20 20     to  put  a..   
00CB40:  20 20 20 20 20 20 20 20 72 65 61 64 20 72 6F 75            read rou
00CB50:  74 69 6E 65 20 69 6E 74 6F 20 74 68 65 20 63 65    tine into the ce
00CB60:  6E 74 72 61 6C 20 33 32 4B 20 6F 66 20 20 52 41    ntral 32K of  RA
00CB70:  4D 20 20 74 6F 20 20 61 63 63 65 73 73 20 20 52    M  to  access  R
00CB80:  41 4D 20 20 68 69 64 64 65 6E 0D 0A 20 20 20 20    AM  hidden..    
00CB90:  20 20 20 20 20 20 20 75 6E 64 65 72 20 61 20 52           under a R
00CBA0:  4F 4D 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    OM.....         
00CBB0:  20 20 57 72 69 74 69 6E 67 20 74 6F 20 61 20 6D      Writing to a m
00CBC0:  65 6D 6F 72 79 20 6C 6F 63 61 74 69 6F 6E 20 61    emory location a
00CBD0:  6C 77 61 79 73 20 63 68 61 6E 67 65 73 20 74 68    lways changes th
00CBE0:  65 20 20 63 6F 6E 74 65 6E 74 73 20 20 6F 66 20    e  contents  of 
00CBF0:  20 52 41 4D 0D 0A 20 20 20 20 20 20 20 20 20 20     RAM..          
00CC00:  20 77 68 61 74 65 76 65 72 20 74 68 65 20 52 4F     whatever the RO
00CC10:  4D 20 65 6E 61 62 6C 65 20 73 74 61 74 65 2E 0D    M enable state..
00CC20:  0A 0D 0A 20 20 20 20 20 20 20 46 49 52 4D 20 4A    ...       FIRM J
00CC30:  55 4D 50 20 28 52 53 54 20 35 29 0D 0A 0D 0A 20    UMP (RST 5).... 
00CC40:  20 20 20 20 20 20 20 20 20 20 52 53 54 20 35 20              RST 5 
00CC50:  74 75 72 6E 73 20 6F 6E 20 74 68 65 20 6C 6F 77    turns on the low
00CC60:  65 72 20 52 4F 4D 20 61 6E 64 20 6A 75 6D 70 73    er ROM and jumps
00CC70:  20 74 6F 20 61 20 72 6F 75 74 69 6E 65 2E 20 54     to a routine. T
00CC80:  68 65 20 74 77 6F 20 62 79 74 65 73 0D 0A 20 20    he two bytes..  
00CC90:  20 20 20 20 20 20 20 20 20 66 6F 6C 6C 6F 77 69             followi
00CCA0:  6E 67 20 74 68 65 20 72 65 73 74 61 72 74 20 61    ng the restart a
00CCB0:  72 65 20 61 73 73 75 6D 65 64 20 74 6F 20 62 65    re assumed to be
00CCC0:  20 74 68 65 20 61 64 64 72 65 73 73 20 74 6F 20     the address to 
00CCD0:  6A 75 6D 70 20 20 74 6F 20 20 2D 0D 0A 20 20 20    jump  to  -..   
00CCE0:  20 20 20 20 20 20 20 20 73 6F 20 52 53 54 20 35            so RST 5
00CCF0:  20 63 61 6E 20 62 65 20 63 6F 6E 73 69 64 65 72     can be consider
00CD00:  65 64 20 74 6F 20 62 65 20 61 20 74 68 72 65 65    ed to be a three
00CD10:  20 62 79 74 65 20 69 6E 73 74 72 75 63 74 69 6F     byte instructio
00CD20:  6E 2C 20 20 72 61 74 68 65 72 0D 0A 20 20 20 20    n,  rather..    
00CD30:  20 20 20 20 20 20 20 6C 69 6B 65 20 61 20 4A 50           like a JP
00CD40:  20 69 6E 73 74 72 75 63 74 69 6F 6E 2E 20 54 68     instruction. Th
00CD50:  65 20 6C 6F 77 65 72 20 52 4F 4D 20 69 73 20 65    e lower ROM is e
00CD60:  6E 61 62 6C 65 64 20 62 65 66 6F 72 65 20 6A 75    nabled before ju
00CD70:  6D 70 69 6E 67 20 20 74 6F 0D 0A 20 20 20 20 20    mping  to..     
00CD80:  20 20 20 20 20 20 74 68 65 20 72 6F 75 74 69 6E          the routin
00CD90:  65 20 61 6E 64 20 69 73 20 64 69 73 61 62 6C 65    e and is disable
00CDA0:  64 20 77 68 65 6E 20 74 68 65 20 72 6F 75 74 69    d when the routi
00CDB0:  6E 65 20 72 65 74 75 72 6E 73 2E 20 54 68 65 20    ne returns. The 
00CDC0:  73 74 61 74 65 20 6F 66 0D 0A 20 20 20 20 20 20    state of..      
00CDD0:  20 20 20 20 20 74 68 65 20 75 70 70 65 72 20 52         the upper R
00CDE0:  4F 4D 20 69 73 20 6C 65 66 74 20 75 6E 63 68 61    OM is left uncha
00CDF0:  6E 67 65 64 20 74 68 72 6F 75 67 68 6F 75 74 2E    nged throughout.
00CE00:  0D 0A 0D 0A 20 20 20 20 20 20 20 62 2E 20 54 68    ....       b. Th
00CE10:  65 20 4F 74 68 65 72 20 52 65 73 74 61 72 74 73    e Other Restarts
00CE20:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 52 45 53 45    .....       RESE
00CE30:  54 20 28 52 53 54 20 30 29 0D 0A 0D 0A 20 20 20    T (RST 0)....   
00CE40:  20 20 20 20 20 20 20 20 52 53 54 20 30 20 72 65            RST 0 re
00CE50:  73 65 74 73 20 74 68 65 20 73 79 73 74 65 6D 20    sets the system 
00CE60:  61 73 20 69 66 20 74 68 65 20 6D 61 63 68 69 6E    as if the machin
00CE70:  65 20 68 61 73 20 6A 75 73 74 20 62 65 65 6E 20    e has just been 
00CE80:  74 75 72 6E 65 64 20 6F 6E 2E 0D 0A 0D 0A 20 20    turned on.....  
00CE90:  20 20 20 20 20 55 53 45 52 20 52 45 53 54 41 52         USER RESTAR
00CEA0:  54 20 28 52 53 54 20 36 29 0D 0A 0D 0A 20 20 20    T (RST 6)....   
00CEB0:  20 20 20 20 20 20 20 20 52 53 54 20 36 20 69 73            RST 6 is
00CEC0:  20 61 76 61 69 6C 61 62 6C 65 20 66 6F 72 20 74     available for t
00CED0:  68 65 20 75 73 65 72 2E 20 49 74 20 63 6F 75 6C    he user. It coul
00CEE0:  64 20 62 65 20 75 73 65 64 20 20 74 6F 20 20 65    d be used  to  e
00CEF0:  78 74 65 6E 64 20 20 74 68 65 0D 0A 20 20 20 20    xtend  the..    
00CF00:  20 20 20 20 20 20 20 69 6E 73 74 72 75 63 74 69           instructi
00CF10:  6F 6E 20 73 65 74 20 69 6E 20 74 68 65 20 73 61    on set in the sa
00CF20:  6D 65 20 77 61 79 20 20 74 68 61 74 20 20 6F 74    me way  that  ot
00CF30:  68 65 72 20 20 72 65 73 74 61 72 74 73 20 20 68    her  restarts  h
00CF40:  61 76 65 20 20 62 65 65 6E 0D 0A 20 20 20 20 20    ave  been..     
00CF50:  20 20 20 20 20 20 75 73 65 64 2C 20 6F 72 20 69          used, or i
00CF60:  74 20 63 6F 75 6C 64 20 62 65 20 75 73 65 64 20    t could be used 
00CF70:  66 6F 72 20 61 6E 6F 74 68 65 72 20 70 75 72 70    for another purp
00CF80:  6F 73 65 20 73 75 63 68 20 61 73 20 61 20 62 72    ose such as a br
00CF90:  65 61 6B 70 6F 69 6E 74 0D 0A 20 20 20 20 20 20    eakpoint..      
00CFA0:  20 20 20 20 20 69 6E 73 74 72 75 63 74 69 6F 6E         instruction
00CFB0:  20 69 6E 20 61 20 64 65 62 75 67 67 65 72 2E 0D     in a debugger..
00CFC0:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 4C 6F    ...           Lo
00CFD0:  63 61 74 69 6F 6E 73 20 23 30 30 33 30 20 74 6F    cations #0030 to
00CFE0:  20 23 30 30 33 37 20 69 6E 63 6C 75 73 69 76 65     #0037 inclusive
00CFF0:  20 69 6E 20 52 41 4D 20 6D 61 79 20 62 65 20 70     in RAM may be p
00D000:  61 74 63 68 65 64 20 69 6E 20 20 6F 72 64 65 72    atched in  order
00D010:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 74 6F 20    ..           to 
00D020:  67 61 69 6E 20 63 6F 6E 74 72 6F 6C 20 6F 66 20    gain control of 
00D030:  74 68 65 20 72 65 73 74 61 72 74 2E 20 49 66 20    the restart. If 
00D040:  74 68 65 20 6C 6F 77 65 72 20 52 4F 4D 20 69 73    the lower ROM is
00D050:  20 20 65 6E 61 62 6C 65 64 20 20 77 68 65 6E 0D      enabled  when.
00D060:  0A 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20    .           the 
00D070:  72 65 73 74 61 72 74 20 69 73 20 65 78 65 63 75    restart is execu
00D080:  74 65 64 20 74 68 65 6E 20 74 68 65 20 20 63 6F    ted then the  co
00D090:  64 65 20 20 69 6E 20 20 52 4F 4D 20 20 61 74 20    de  in  ROM  at 
00D0A0:  20 74 68 69 73 20 20 61 64 64 72 65 73 73 0D 0A     this  address..
00D0B0:  20 20 20 20 20 20 20 20 20 20 20 63 61 75 73 65               cause
00D0C0:  73 20 74 68 65 20 52 4F 4D 20 73 74 61 74 65 20    s the ROM state 
00D0D0:  74 6F 20 62 65 20 73 61 76 65 64 20 69 6E 20 6C    to be saved in l
00D0E0:  6F 63 61 74 69 6F 6E 20 23 30 30 32 42 2E 20 54    ocation #002B. T
00D0F0:  68 65 6E 20 74 68 65 20 6C 6F 77 65 72 0D 0A 20    hen the lower.. 
00D100:  20 20 20 20 20 20 20 20 20 20 52 4F 4D 20 69 73              ROM is
00D110:  20 64 69 73 61 62 6C 65 64 20 61 6E 64 20 74 68     disabled and th
00D120:  65 20 66 69 72 6D 77 61 72 65 20 6A 75 6D 70 73    e firmware jumps
00D130:  20 74 6F 20 6C 6F 63 61 74 69 6F 6E 20 23 30 30     to location #00
00D140:  33 30 20 20 69 6E 20 20 52 41 4D 2E 0D 0A 20 20    30  in  RAM...  
00D150:  20 20 20 20 20 20 20 20 20 49 66 20 74 68 65 20             If the 
00D160:  6C 6F 77 65 72 20 52 4F 4D 20 69 73 20 64 69 73    lower ROM is dis
00D170:  61 62 6C 65 64 20 20 74 68 65 6E 20 20 74 68 65    abled  then  the
00D180:  20 20 72 65 73 74 61 72 74 20 20 63 61 6C 6C 73      restart  calls
00D190:  20 20 23 30 30 33 30 20 20 61 73 0D 0A 20 20 20      #0030  as..   
00D1A0:  20 20 20 20 20 20 20 20 6E 6F 72 6D 61 6C 20 66            normal f
00D1B0:  6F 72 20 74 68 69 73 20 5A 38 30 20 72 65 73 74    or this Z80 rest
00D1C0:  61 72 74 20 69 6E 73 74 72 75 63 74 69 6F 6E 2E    art instruction.
00D1D0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53    ......       AMS
00D1E0:  54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F    TRAD CPC464/664/
00D1F0:  36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20    6128 FIRMWARE   
00D200:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
00D210:  0B 00 00 00 02 09 50 E5 0B 00 C1 02 00 00 00 02    ......P.........
00D220:  0B 00 C2 02 00 00 00 02 0B 00 C3 02 00 00 00 02    ................
00D230:  0B 00 C4 02 00 00 00 02 0B 00 C5 02 00 00 00 02    ................
00D240:  0B 00 C6 02 00 00 00 02 0B 00 C7 02 00 00 00 02    ................
00D250:  0B 00 C8 02 00 00 00 02 0B 00 C9 02 00 00 00 02    ................
00D260:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D270:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D280:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D290:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D2F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00D300:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00D310:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
00D320:  32 2E 34 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    2.4.............
00D330:  0A 20 20 20 20 20 20 20 49 4E 54 45 52 52 55 50    .       INTERRUP
00D340:  54 20 28 52 53 54 20 37 29 0D 0A 0D 0A 0D 0A 20    T (RST 7)...... 
00D350:  20 20 20 20 20 20 20 20 20 20 52 53 54 20 37 20              RST 7 
00D360:  69 73 20 72 65 73 65 72 76 65 64 20 66 6F 72 20    is reserved for 
00D370:  69 6E 74 65 72 72 75 70 74 73 20 28 73 65 65 20    interrupts (see 
00D380:  73 65 63 74 69 6F 6E 20 31 30 29 2C 20 69 74 20    section 10), it 
00D390:  6D 75 73 74 20 6E 6F 74 20 20 62 65 0D 0A 20 20    must not  be..  
00D3A0:  20 20 20 20 20 20 20 20 20 65 78 65 63 75 74 65             execute
00D3B0:  64 20 62 79 20 61 20 70 72 6F 67 72 61 6D 2E 0D    d by a program..
00D3C0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 32 2E 34 20    .....       2.4 
00D3D0:  52 41 4D 20 61 6E 64 20 74 68 65 20 46 69 72 6D    RAM and the Firm
00D3E0:  77 61 72 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ware.......     
00D3F0:  20 20 54 68 65 20 52 4F 4D 20 73 74 61 74 65 20      The ROM state 
00D400:  73 68 6F 75 6C 64 20 62 65 20 20 74 72 61 6E 73    should be  trans
00D410:  70 61 72 65 6E 74 20 20 74 6F 20 20 74 68 65 20    parent  to  the 
00D420:  20 75 73 65 72 2E 20 20 49 66 20 20 74 68 65 20     user.  If  the 
00D430:  20 63 75 72 72 65 6E 74 0D 0A 20 20 20 20 20 20     current..      
00D440:  20 66 6F 72 65 67 72 6F 75 6E 64 20 70 72 6F 67     foreground prog
00D450:  72 61 6D 20 28 73 65 65 20 73 65 63 74 69 6F 6E    ram (see section
00D460:  20 39 29 20 69 73 20 69 6E 20 52 4F 4D 20 74 68     9) is in ROM th
00D470:  65 6E 20 74 68 65 20 6E 6F 72 6D 61 6C 20 52 4F    en the normal RO
00D480:  4D 20 73 74 61 74 65 0D 0A 20 20 20 20 20 20 20    M state..       
00D490:  69 73 20 74 6F 20 68 61 76 65 20 74 68 65 20 75    is to have the u
00D4A0:  70 70 65 72 20 52 4F 4D 20 65 6E 61 62 6C 65 64    pper ROM enabled
00D4B0:  20 61 6E 64 20 74 68 65 20 6C 6F 77 65 72 20 52     and the lower R
00D4C0:  4F 4D 20 20 64 69 73 61 62 6C 65 64 2E 20 20 49    OM  disabled.  I
00D4D0:  66 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 63    f  the..       c
00D4E0:  75 72 72 65 6E 74 20 66 6F 72 65 67 72 6F 75 6E    urrent foregroun
00D4F0:  64 20 70 72 6F 67 72 61 6D 20 69 73 20 69 6E 20    d program is in 
00D500:  52 41 4D 20 74 68 65 6E 20 74 68 65 20 6E 6F 72    RAM then the nor
00D510:  6D 61 6C 20 73 74 61 74 65 20 69 73 20 74 6F 20    mal state is to 
00D520:  20 68 61 76 65 0D 0A 20 20 20 20 20 20 20 62 6F     have..       bo
00D530:  74 68 20 52 4F 4D 73 20 64 69 73 61 62 6C 65 64    th ROMs disabled
00D540:  2E 20 54 68 65 73 65 20 73 74 61 74 65 73 20 61    . These states a
00D550:  6C 6C 6F 77 20 20 74 68 65 20 20 66 6F 72 65 67    llow  the  foreg
00D560:  72 6F 75 6E 64 20 20 70 72 6F 67 72 61 6D 20 20    round  program  
00D570:  66 72 65 65 0D 0A 20 20 20 20 20 20 20 61 63 63    free..       acc
00D580:  65 73 73 20 74 6F 20 74 68 65 20 6D 65 6D 6F 72    ess to the memor
00D590:  79 20 70 6F 6F 6C 2E 20 57 68 65 6E 20 61 20 66    y pool. When a f
00D5A0:  69 72 6D 77 61 72 65 20 72 6F 75 74 69 6E 65 20    irmware routine 
00D5B0:  69 73 20 63 61 6C 6C 65 64 20 74 68 65 20 6C 6F    is called the lo
00D5C0:  77 65 72 0D 0A 20 20 20 20 20 20 20 52 4F 4D 20    wer..       ROM 
00D5D0:  69 73 20 65 6E 61 62 6C 65 64 20 61 6E 64 20 74    is enabled and t
00D5E0:  68 65 20 75 70 70 65 72 20 52 4F 4D 20 69 73 20    he upper ROM is 
00D5F0:  75 73 75 61 6C 6C 79 20 64 69 73 61 62 6C 65 64    usually disabled
00D600:  2E 20 54 68 69 73 20 61 6C 6C 6F 77 73 20 20 74    . This allows  t
00D610:  68 65 0D 0A 20 20 20 20 20 20 20 66 69 72 6D 77    he..       firmw
00D620:  61 72 65 20 66 72 65 65 20 61 63 63 65 73 73 20    are free access 
00D630:  74 6F 20 74 68 65 20 64 65 66 61 75 6C 74 20 73    to the default s
00D640:  63 72 65 65 6E 20 6D 65 6D 6F 72 79 20 20 28 62    creen memory  (b
00D650:  75 74 20 20 6E 6F 74 20 20 61 6C 6C 20 20 74 68    ut  not  all  th
00D660:  65 0D 0A 20 20 20 20 20 20 20 6D 65 6D 6F 72 79    e..       memory
00D670:  20 70 6F 6F 6C 29 2E 20 57 68 65 6E 20 74 68 65     pool). When the
00D680:  20 66 69 72 6D 77 61 72 65 20 20 72 6F 75 74 69     firmware  routi
00D690:  6E 65 20 20 72 65 74 75 72 6E 73 20 20 74 68 65    ne  returns  the
00D6A0:  20 20 52 4F 4D 20 20 73 74 61 74 65 20 20 69 73      ROM  state  is
00D6B0:  0D 0A 20 20 20 20 20 20 20 61 75 74 6F 6D 61 74    ..       automat
00D6C0:  69 63 61 6C 6C 79 20 72 65 73 74 6F 72 65 64 20    ically restored 
00D6D0:  74 6F 20 77 68 61 74 20 69 74 20 77 61 73 2E 0D    to what it was..
00D6E0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
00D6F0:  63 61 73 65 73 20 77 68 65 72 65 20 74 68 65 20    cases where the 
00D700:  52 4F 4D 20 73 74 61 74 65 20 69 73 20 69 6D 70    ROM state is imp
00D710:  6F 72 74 61 6E 74 20 61 72 65 3A 0D 0A 0D 0A 20    ortant are:.... 
00D720:  20 20 20 20 20 20 61 2E 20 53 74 61 63 6B 0D 0A          a. Stack..
00D730:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 68    ....       The h
00D740:  61 72 64 77 61 72 65 20 73 74 61 63 6B 20 73 68    ardware stack sh
00D750:  6F 75 6C 64 20 6E 65 76 65 72 20 20 62 65 20 20    ould never  be  
00D760:  62 65 6C 6F 77 20 20 23 34 30 30 30 2C 20 20 6F    below  #4000,  o
00D770:  74 68 65 72 77 69 73 65 20 20 73 65 72 69 6F 75    therwise  seriou
00D780:  73 0D 0A 20 20 20 20 20 20 20 63 6F 6E 66 75 73    s..       confus
00D790:  69 6F 6E 20 77 69 6C 6C 20 6F 63 63 75 72 20 77    ion will occur w
00D7A0:  68 65 6E 20 74 68 65 20 6C 6F 77 65 72 20 52 4F    hen the lower RO
00D7B0:  4D 20 69 73 20 65 6E 61 62 6C 65 64 20 61 6E 64    M is enabled and
00D7C0:  20 20 74 68 65 20 20 73 74 61 63 6B 20 20 69 73      the  stack  is
00D7D0:  0D 0A 20 20 20 20 20 20 20 75 73 65 64 20 2D 20    ..       used - 
00D7E0:  66 6F 72 20 65 78 61 6D 70 6C 65 2C 20 77 68 65    for example, whe
00D7F0:  6E 20 69 6E 74 65 72 72 75 70 74 73 20 6F 63 63    n interrupts occ
00D800:  75 72 20 6F 72 20 74 68 65 20 66 69 72 6D 77 61    ur or the firmwa
00D810:  72 65 20 69 73 20 63 61 6C 6C 65 64 2E 0D 0A 0D    re is called....
00D820:  0A 0D 0A 20 20 20 20 20 20 20 53 69 6D 69 6C 61    ...       Simila
00D830:  72 6C 79 2C 20 69 74 20 69 73 20 69 6E 61 64 76    rly, it is inadv
00D840:  69 73 61 62 6C 65 20 74 6F 20 73 65 74 20 74 68    isable to set th
00D850:  65 20 73 74 61 63 6B 20 61 62 6F 76 65 20 23 43    e stack above #C
00D860:  30 30 30 20 75 6E 6C 65 73 73 20 69 74 20 69 73    000 unless it is
00D870:  0D 0A 20 20 20 20 20 20 20 63 65 72 74 61 69 6E    ..       certain
00D880:  20 74 68 61 74 20 74 68 65 20 75 70 70 65 72 20     that the upper 
00D890:  52 4F 4D 20 69 73 20 6E 65 76 65 72 20 65 6E 61    ROM is never ena
00D8A0:  62 6C 65 64 20 77 68 65 6E 20 74 68 65 20 73 74    bled when the st
00D8B0:  61 63 6B 20 69 73 20 69 6E 20 75 73 65 2E 0D 0A    ack is in use...
00D8C0:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 73    ....       The s
00D8D0:  79 73 74 65 6D 20 70 72 6F 76 69 64 65 73 20 61    ystem provides a
00D8E0:  20 73 74 61 63 6B 20 61 72 65 61 20 69 6D 6D 65     stack area imme
00D8F0:  64 69 61 74 6C 65 79 20 62 65 6C 6F 77 20 23 43    diatley below #C
00D900:  30 30 30 20 77 68 69 63 68 20 69 73 20 6F 76 65    000 which is ove
00D910:  72 0D 0A 20 20 20 20 20 20 20 32 35 36 20 62 79    r..       256 by
00D920:  74 65 73 20 6C 6F 6E 67 2E 20 54 68 69 73 20 73    tes long. This s
00D930:  68 6F 75 6C 64 20 62 65 20 61 64 65 71 75 61 74    hould be adequat
00D940:  65 20 66 6F 72 20 6D 6F 73 74 20 70 75 72 70 6F    e for most purpo
00D950:  73 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 62    ses.....       b
00D960:  2E 20 43 6F 6D 6D 75 6E 69 63 61 74 69 6F 6E 20    . Communication 
00D970:  77 69 74 68 20 74 68 65 20 66 69 72 6D 77 61 72    with the firmwar
00D980:  65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 4D 6F 73    e.....       Mos
00D990:  74 20 66 69 72 6D 77 61 72 65 20 72 6F 75 74 69    t firmware routi
00D9A0:  6E 65 73 20 74 61 6B 65 20 74 68 65 69 72 20 70    nes take their p
00D9B0:  61 72 61 6D 65 74 65 72 73 20 20 69 6E 20 20 72    arameters  in  r
00D9C0:  65 67 69 73 74 65 72 73 2E 20 20 48 6F 77 65 76    egisters.  Howev
00D9D0:  65 72 2C 0D 0A 20 20 20 20 20 20 20 73 6F 6D 65    er,..       some
00D9E0:  20 75 73 65 20 64 61 74 61 20 61 72 65 61 73 20     use data areas 
00D9F0:  69 6E 20 20 6D 65 6D 6F 72 79 20 20 74 6F 20 20    in  memory  to  
00DA00:  70 61 73 73 20 20 69 6E 66 6F 72 6D 61 74 69 6F    pass  informatio
00DA10:  6E 2E 20 20 4D 6F 73 74 20 20 66 69 72 6D 77 61    n.  Most  firmwa
00DA20:  72 65 0D 0A 20 20 20 20 20 20 20 72 6F 75 74 69    re..       routi
00DA30:  6E 65 73 20 74 68 61 74 20 75 73 65 20 64 61 74    nes that use dat
00DA40:  61 20 61 72 65 61 73 20 69 6E 20 6D 65 6D 6F 72    a areas in memor
00DA50:  79 20 20 72 65 61 64 20 20 74 68 6F 73 65 20 20    y  read  those  
00DA60:  64 69 72 65 63 74 6C 79 20 20 77 69 74 68 6F 75    directly  withou
00DA70:  74 0D 0A 20 20 20 20 20 20 20 75 73 69 6E 67 20    t..       using 
00DA80:  52 41 4D 20 4C 41 4D 73 20 28 73 65 65 20 61 62    RAM LAMs (see ab
00DA90:  6F 76 65 29 20 20 6F 72 20 20 74 68 65 20 20 65    ove)  or  the  e
00DAA0:  71 75 69 76 61 6C 65 6E 74 2E 20 20 54 68 65 73    quivalent.  Thes
00DAB0:  65 20 20 72 6F 75 74 69 6E 65 73 20 20 61 72 65    e  routines  are
00DAC0:  0D 0A 20 20 20 20 20 20 20 61 66 66 65 63 74 65    ..       affecte
00DAD0:  64 20 62 79 20 74 68 65 20 52 4F 4D 20 73 74 61    d by the ROM sta
00DAE0:  74 65 20 61 6E 64 20 74 68 65 20 52 4F 4D 20 73    te and the ROM s
00DAF0:  65 6C 65 63 74 2E 20 54 68 65 79 20 77 69 6C 6C    elect. They will
00DB00:  20 72 65 61 64 20 64 61 74 61 20 66 72 6F 6D 0D     read data from.
00DB10:  0A 20 20 20 20 20 20 20 61 20 52 4F 4D 20 69 66    .       a ROM if
00DB20:  20 74 68 65 20 52 4F 4D 20 69 73 20 65 6E 61 62     the ROM is enab
00DB30:  6C 65 64 20 20 61 6E 64 20 20 74 68 65 20 20 72    led  and  the  r
00DB40:  6F 75 74 69 6E 65 20 20 69 73 20 20 67 69 76 65    outine  is  give
00DB50:  6E 20 20 61 20 20 73 75 69 74 61 62 6C 65 0D 0A    n  a  suitable..
00DB60:  20 20 20 20 20 20 20 61 64 64 72 65 73 73 2E 20           address. 
00DB70:  28 4E 6F 74 65 20 74 68 61 74 20 74 68 65 20 6A    (Note that the j
00DB80:  75 6D 70 62 6C 6F 63 6B 20 64 69 73 61 62 6C 65    umpblock disable
00DB90:  73 20 20 74 68 65 20 20 75 70 70 65 72 20 20 52    s  the  upper  R
00DBA0:  4F 4D 20 20 77 68 65 6E 20 20 74 68 65 0D 0A 20    OM  when  the.. 
00DBB0:  20 20 20 20 20 20 66 69 72 6D 77 61 72 65 20 69          firmware i
00DBC0:  73 20 63 61 6C 6C 65 64 29 2E 20 4F 74 68 65 72    s called). Other
00DBD0:  20 66 69 72 6D 77 61 72 65 20 72 6F 75 74 69 6E     firmware routin
00DBE0:  65 73 20 74 68 61 74 20 75 73 65 20 20 64 61 74    es that use  dat
00DBF0:  61 20 20 61 72 65 61 73 20 20 69 6E 0D 0A 20 20    a  areas  in..  
00DC00:  20 20 20 20 20 6D 65 6D 6F 72 79 20 61 6C 77 61         memory alwa
00DC10:  79 73 20 72 65 61 64 20 66 72 6F 6D 20 52 41 4D    ys read from RAM
00DC20:  2E 20 54 68 65 79 20 61 72 65 20 75 6E 61 66 66    . They are unaff
00DC30:  65 63 74 65 64 20 62 79 20 74 68 65 20 52 4F 4D    ected by the ROM
00DC40:  20 73 74 61 74 65 20 20 61 6E 64 0D 0A 20 20 20     state  and..   
00DC50:  20 20 20 20 74 68 65 20 52 4F 4D 20 73 65 6C 65        the ROM sele
00DC60:  63 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ct.......       
00DC70:  52 6F 75 74 69 6E 65 73 20 74 68 61 74 20 61 6C    Routines that al
00DC80:  77 61 79 73 20 61 63 63 65 73 73 20 52 41 4D 20    ways access RAM 
00DC90:  77 69 6C 6C 20 6D 65 6E 74 69 6F 6E 20 74 68 69    will mention thi
00DCA0:  73 20 69 6E 20 20 74 68 65 20 20 64 65 73 63 72    s in  the  descr
00DCB0:  69 70 74 69 6F 6E 0D 0A 20 20 20 20 20 20 20 6F    iption..       o
00DCC0:  66 20 74 68 65 20 72 6F 75 74 69 6E 65 2E 20 4F    f the routine. O
00DCD0:  74 68 65 72 20 72 6F 75 74 69 6E 65 73 20 6D 61    ther routines ma
00DCE0:  79 20 62 65 20 61 73 73 75 6D 65 64 20 74 6F 20    y be assumed to 
00DCF0:  62 65 20 20 61 66 66 65 63 74 65 64 20 20 62 79    be  affected  by
00DD00:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 52 4F      the..       RO
00DD10:  4D 20 73 74 61 74 65 2E 20 49 6E 20 70 61 72 74    M state. In part
00DD20:  69 63 75 6C 61 72 20 74 68 65 20 76 61 72 69 6F    icular the vario
00DD30:  75 73 20 64 61 74 61 20 62 6C 6F 63 6B 73 20 75    us data blocks u
00DD40:  73 65 64 20 20 62 79 20 20 74 68 65 20 20 4B 65    sed  by  the  Ke
00DD50:  72 6E 65 6C 0D 0A 20 20 20 20 20 20 20 6D 75 73    rnel..       mus
00DD60:  74 20 6C 69 65 20 69 6E 20 74 68 65 20 63 65 6E    t lie in the cen
00DD70:  74 72 61 6C 20 33 32 4B 20 6F 66 20 52 41 4D 20    tral 32K of RAM 
00DD80:  66 6F 72 20 74 68 65 20 4B 65 72 6E 65 6C 20 74    for the Kernel t
00DD90:  6F 20 62 65 20 20 61 62 6C 65 20 20 74 6F 20 20    o be  able  to  
00DDA0:  75 73 65 0D 0A 20 20 20 20 20 20 20 74 68 65 6D    use..       them
00DDB0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54    .....       AMST
00DDC0:  52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36    RAD CPC464/664/6
00DDD0:  31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20    128 FIRMWARE    
00DDE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00DDF0:  20 20 20 20 20 20 20 20 20 20 70 61 67 65 20 32              page 2
00DE00:  2E 35 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    .5..............
00DE10:  20 20 20 20 20 20 20 63 2E 20 43 6F 6D 6D 75 6E           c. Commun
00DE20:  69 63 61 74 69 6F 6E 20 62 65 74 77 65 65 6E 20    ication between 
00DE30:  75 70 70 65 72 20 52 4F 4D 73 2E 0D 0A 0D 0A 0D    upper ROMs......
00DE40:  0A 0D 0A 20 20 20 20 20 20 20 50 72 6F 67 72 61    ...       Progra
00DE50:  6D 73 20 69 6E 20 75 70 70 65 72 20 52 4F 4D 73    ms in upper ROMs
00DE60:  20 6D 61 79 20 63 61 6C 6C 20 72 6F 75 74 69 6E     may call routin
00DE70:  65 73 20 20 69 6E 20 20 6F 74 68 65 72 20 20 52    es  in  other  R
00DE80:  4F 4D 73 2C 20 20 75 73 69 6E 67 20 20 74 68 65    OMs,  using  the
00DE90:  0D 0A 20 20 20 20 20 20 20 76 61 72 69 6F 75 73    ..       various
00DEA0:  20 4B 65 72 6E 65 6C 20 46 61 63 69 6C 69 74 69     Kernel Faciliti
00DEB0:  65 73 2E 20 54 68 65 72 65 20 69 73 20 20 6E 6F    es. There is  no
00DEC0:  20 20 70 72 6F 76 69 73 69 6F 6E 20 20 69 6E 20      provision  in 
00DED0:  20 74 68 65 20 20 66 69 72 6D 77 61 72 65 2C 0D     the  firmware,.
00DEE0:  0A 20 20 20 20 20 20 20 68 6F 77 65 76 65 72 2C    .       however,
00DEF0:  20 66 6F 72 20 61 20 70 72 6F 67 72 61 6D 20 69     for a program i
00DF00:  6E 20 6F 6E 65 20 52 4F 4D 20 74 6F 20 61 63 63    n one ROM to acc
00DF10:  65 73 73 20 63 6F 6E 73 74 61 6E 74 73 20 69 6E    ess constants in
00DF20:  20 61 6E 6F 74 68 65 72 2E 0D 0A 0D 0A 0D 0A 0D     another........
00DF30:  0A 20 20 20 20 20 20 20 54 68 65 20 20 6D 61 6A    .       The  maj
00DF40:  6F 72 69 74 79 20 20 6F 66 20 20 66 69 72 6D 77    ority  of  firmw
00DF50:  61 72 65 20 20 72 6F 75 74 69 6E 65 73 20 20 61    are  routines  a
00DF60:  72 65 20 20 63 61 6C 6C 65 64 20 20 76 69 61 20    re  called  via 
00DF70:  20 74 68 65 20 20 66 69 72 6D 77 61 72 65 0D 0A     the  firmware..
00DF80:  20 20 20 20 20 20 20 6A 75 6D 70 62 6C 6F 63 6B           jumpblock
00DF90:  2C 20 77 68 69 63 68 20 73 74 61 72 74 73 20 61    , which starts a
00DFA0:  74 20 6C 6F 63 61 74 69 6F 6E 20 23 42 42 30 30    t location #BB00
00DFB0:  2C 20 69 6E 20 74 68 65 20 66 69 72 6D 77 61 72    , in the firmwar
00DFC0:  65 20 20 52 41 4D 20 20 61 72 65 61 2E 0D 0A 0D    e  RAM  area....
00DFD0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
00DFE0:  4B 65 72 6E 65 6C 20 72 6F 75 74 69 6E 65 73 20    Kernel routines 
00DFF0:  61 73 73 6F 63 69 61 74 65 64 20 77 69 74 68 20    associated with 
00E000:  74 68 65 20 6D 65 6D 6F 72 79 20 6D 61 70 20 61    the memory map a
00E010:  72 65 20 63 61 6C 6C 65 64 20 76 69 61 20 20 6F    re called via  o
00E020:  6E 65 0D 0A 20 20 20 20 20 20 20 6F 72 20 74 77    ne..       or tw
00E030:  6F 20 6F 74 68 65 72 20 6A 75 6D 70 62 6C 6F 63    o other jumpbloc
00E040:  6B 20 61 72 65 61 73 3A 20 74 68 65 20 4C 4F 57    k areas: the LOW
00E050:  20 61 72 65 61 20 62 65 74 77 65 65 6E 20 20 23     area between  #
00E060:  30 30 30 30 20 20 61 6E 64 20 20 23 30 30 33 46    0000  and  #003F
00E070:  2C 0D 0A 20 20 20 20 20 20 20 61 6E 64 20 74 68    ,..       and th
00E080:  65 20 48 49 47 48 20 61 72 65 61 20 20 73 74 61    e HIGH area  sta
00E090:  72 74 69 6E 67 20 20 61 74 20 20 23 42 39 30 30    rting  at  #B900
00E0A0:  2E 20 20 41 6C 6C 20 20 6F 66 20 20 74 68 65 73    .  All  of  thes
00E0B0:  65 20 20 72 6F 75 74 69 6E 65 73 20 20 61 6E 64    e  routines  and
00E0C0:  0D 0A 20 20 20 20 20 20 20 6A 75 6D 70 62 6C 6F    ..       jumpblo
00E0D0:  63 6B 73 20 61 72 65 20 63 6F 70 69 65 64 20 6F    cks are copied o
00E0E0:  75 74 20 6F 66 20 74 68 65 20 6C 6F 77 65 72 20    ut of the lower 
00E0F0:  52 4F 4D 20 69 6E 74 6F 20 74 68 65 20 66 69 72    ROM into the fir
00E100:  6D 77 61 72 65 20 52 41 4D 20 20 61 72 65 61 0D    mware RAM  area.
00E110:  0A 20 20 20 20 20 20 20 77 68 65 6E 20 74 68 65    .       when the
00E120:  20 4B 65 72 6E 65 6C 20 69 73 20 69 6E 69 74 69     Kernel is initi
00E130:  61 6C 69 7A 65 64 2E 20 54 68 75 73 20 74 68 65    alized. Thus the
00E140:  79 20 77 6F 72 6B 20 20 69 6E 64 65 70 65 6E 64    y work  independ
00E150:  65 6E 74 6C 79 20 20 6F 66 20 20 74 68 65 0D 0A    ently  of  the..
00E160:  20 20 20 20 20 20 20 52 4F 4D 20 73 74 61 74 65           ROM state
00E170:  2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
00E180:  32 2E 35 20 42 61 6E 6B 20 53 77 69 74 63 68 69    2.5 Bank Switchi
00E190:  6E 67 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ng.........     
00E1A0:  20 20 54 68 65 20 55 4C 41 20 69 6E 20 74 68 65      The ULA in the
00E1B0:  20 43 50 43 36 31 32 38 20 69 6E 63 6C 75 64 65     CPC6128 include
00E1C0:  73 20 63 69 72 63 75 69 74 72 79 20 66 6F 72 20    s circuitry for 
00E1D0:  62 61 6E 6B 20 73 77 69 74 63 68 69 6E 67 20 31    bank switching 1
00E1E0:  32 38 4B 20 20 52 41 4D 0D 0A 20 20 20 20 20 20    28K  RAM..      
00E1F0:  20 69 6E 74 6F 20 74 68 65 20 36 34 4B 20 6D 65     into the 64K me
00E200:  6D 6F 72 79 20 6D 61 70 20 64 65 73 63 72 69 62    mory map describ
00E210:  65 64 20 69 6E 20 73 65 63 74 69 6F 6E 20 32 2E    ed in section 2.
00E220:  31 2E 20 20 54 68 65 20 20 62 61 6E 6B 20 20 73    1.  The  bank  s
00E230:  77 69 74 63 68 65 64 0D 0A 20 20 20 20 20 20 20    witched..       
00E240:  52 41 4D 20 72 65 70 6C 61 63 65 73 20 74 68 65    RAM replaces the
00E250:  20 52 41 4D 20 69 6E 20 74 68 65 20 6D 65 6D 6F     RAM in the memo
00E260:  72 79 20 6D 61 70 20 61 74 20 23 30 30 30 30 2E    ry map at #0000.
00E270:  2E 23 33 46 46 46 2C 20 20 23 34 30 30 30 2E 2E    .#3FFF,  #4000..
00E280:  23 37 46 46 46 2C 0D 0A 20 20 20 20 20 20 20 23    #7FFF,..       #
00E290:  38 30 30 30 2E 2E 23 42 46 46 46 20 61 6E 64 20    8000..#BFFF and 
00E2A0:  23 43 30 30 30 2E 2E 23 46 46 46 46 2E 20 54 68    #C000..#FFFF. Th
00E2B0:  65 20 75 73 65 72 20 63 61 6E 20 73 65 6C 65 63    e user can selec
00E2C0:  74 20 61 6E 20 6F 72 67 61 6E 69 7A 61 74 69 6F    t an organizatio
00E2D0:  6E 20 20 62 79 0D 0A 20 20 20 20 20 20 20 63 61    n  by..       ca
00E2E0:  6C 6C 69 6E 67 20 4B 4C 20 42 41 4E 4B 20 53 45    lling KL BANK SE
00E2F0:  4C 45 43 54 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    LECT.........   
00E300:  20 20 20 20 54 68 65 20 62 6C 6F 63 6B 73 20 61        The blocks a
00E310:  76 61 69 6C 61 62 6C 65 20 69 6E 20 65 61 63 68    vailable in each
00E320:  20 6F 72 67 61 6E 69 7A 61 74 69 6F 6E 20 61 72     organization ar
00E330:  65 20 61 73 20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D    e as follows:...
00E340:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    .....           
00E350:  20 20 20 20 20 4F 72 67 61 6E 69 7A 61 74 69 6F         Organizatio
00E360:  6E 20 20 20 20 20 20 20 20 42 6C 6F 63 6B 20 61    n        Block a
00E370:  63 63 65 73 73 65 64 20 61 74 20 6D 65 6D 6F 72    ccessed at memor
00E380:  79 20 61 64 64 72 65 73 73 0D 0A 20 20 20 20 20    y address..     
00E390:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00E3A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23                   #
00E3B0:  30 30 30 30 20 20 20 20 20 23 34 30 30 30 20 20    0000     #4000  
00E3C0:  20 20 20 23 38 30 30 30 20 20 20 20 20 23 43 30       #8000     #C0
00E3D0:  30 30 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    00..            
00E3E0:  20 20 20 20 20 20 20 20 20 30 20 20 20 20 20 20             0      
00E3F0:  20 20 20 20 20 20 20 20 20 20 30 20 20 20 20 20              0     
00E400:  20 20 20 20 31 20 20 20 20 20 20 20 20 20 32 20        1         2 
00E410:  20 20 20 20 20 20 20 20 33 0D 0A 20 20 20 20 20            3..     
00E420:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00E430:  31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    1               
00E440:  20 30 20 20 20 20 20 20 20 20 20 31 20 20 20 20     0         1    
00E450:  20 20 20 20 20 32 20 20 20 20 20 20 20 20 20 37         2         7
00E460:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
00E470:  20 20 20 20 20 20 20 32 20 20 20 20 20 20 20 20           2        
00E480:  20 20 20 20 20 20 20 20 34 20 20 20 20 20 20 20            4       
00E490:  20 20 35 20 20 20 20 20 20 20 20 20 36 20 20 20      5         6   
00E4A0:  20 20 20 20 20 20 37 0D 0A 20 20 20 20 20 20 20          7..       
00E4B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 33 20                  3 
00E4C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30                   0
00E4D0:  20 20 20 20 20 20 20 20 20 33 20 20 20 20 20 20             3      
00E4E0:  20 20 20 32 20 20 20 20 20 20 20 20 20 37 0D 0A       2         7..
00E4F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00E500:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
00E510:  0C 00 00 00 02 09 50 E5 0C 00 C1 02 00 00 00 02    ......P.........
00E520:  0C 00 C2 02 00 00 00 02 0C 00 C3 02 00 00 00 02    ................
00E530:  0C 00 C4 02 00 00 00 02 0C 00 C5 02 00 00 00 02    ................
00E540:  0C 00 C6 02 00 00 00 02 0C 00 C7 02 00 00 00 02    ................
00E550:  0C 00 C8 02 00 00 00 02 0C 00 C9 02 00 00 00 02    ................
00E560:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E570:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E580:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E590:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E5F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
00E600:  20 20 20 20 20 34 20 20 20 20 20 20 20 20 20 20         4          
00E610:  20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20          0         
00E620:  34 20 20 20 20 20 20 20 20 20 32 20 20 20 20 20    4         2     
00E630:  20 20 20 20 33 0D 0A 20 20 20 20 20 20 20 20 20        3..         
00E640:  20 20 20 20 20 20 20 20 20 20 20 20 35 20 20 20                5   
00E650:  20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 20                 0  
00E660:  20 20 20 20 20 20 20 35 20 20 20 20 20 20 20 20           5        
00E670:  20 32 20 20 20 20 20 20 20 20 20 33 0D 0A 20 20     2         3..  
00E680:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00E690:  20 20 20 36 20 20 20 20 20 20 20 20 20 20 20 20       6            
00E6A0:  20 20 20 20 30 20 20 20 20 20 20 20 20 20 36 20        0         6 
00E6B0:  20 20 20 20 20 20 20 20 32 20 20 20 20 20 20 20            2       
00E6C0:  20 20 33 0D 0A 20 20 20 20 20 20 20 20 20 20 20      3..           
00E6D0:  20 20 20 20 20 20 20 20 20 20 37 20 20 20 20 20              7     
00E6E0:  20 20 20 20 20 20 20 20 20 20 20 30 20 20 20 20               0    
00E6F0:  20 20 20 20 20 37 20 20 20 20 20 20 20 20 20 32         7         2
00E700:  20 20 20 20 20 20 20 20 20 33 0D 0A 0D 0A 0D 0A             3......
00E710:  0D 0A 20 20 20 20 20 20 20 44 75 72 69 6E 67 20    ..       During 
00E720:  45 4D 53 20 20 74 68 65 20 20 43 50 43 36 31 32    EMS  the  CPC612
00E730:  38 20 20 73 65 6C 65 63 74 73 20 20 6F 72 67 61    8  selects  orga
00E740:  6E 69 7A 61 74 69 6F 6E 20 20 30 20 20 61 6E 64    nization  0  and
00E750:  20 20 74 68 69 73 20 20 69 73 20 20 74 68 65 0D      this  is  the.
00E760:  0A 20 20 20 20 20 20 20 6F 72 67 61 6E 69 7A 61    .       organiza
00E770:  74 69 6F 6E 20 6E 6F 72 6D 61 6C 6C 79 20 61 73    tion normally as
00E780:  73 6F 63 69 61 74 65 64 20 77 69 74 68 20 74 68    sociated with th
00E790:  65 20 66 69 72 6D 77 61 72 65 2E 20 4E 6F 74 65    e firmware. Note
00E7A0:  20 74 68 61 74 20 62 6C 6F 63 6B 73 20 30 0D 0A     that blocks 0..
00E7B0:  20 20 20 20 20 20 20 61 6E 64 20 32 20 63 6F 6E           and 2 con
00E7C0:  74 61 69 6E 20 66 69 72 6D 77 61 72 65 20 76 61    tain firmware va
00E7D0:  72 69 61 62 6C 65 73 2C 20 66 69 72 6D 77 61 72    riables, firmwar
00E7E0:  65 20 6A 75 6D 70 62 6C 6F 63 6B 73 20 61 6E 64    e jumpblocks and
00E7F0:  20 20 74 68 65 20 20 73 74 61 63 6B 2E 0D 0A 20      the  stack... 
00E800:  20 20 20 20 20 20 41 6C 6C 20 74 68 65 73 65 20          All these 
00E810:  6E 65 65 64 20 74 6F 20 62 65 20 69 6E 20 74 68    need to be in th
00E820:  65 69 72 20 63 6F 72 72 65 63 74 20 70 6C 61 63    eir correct plac
00E830:  65 73 20 66 6F 72 20 74 68 65 20 66 69 72 6D 77    es for the firmw
00E840:  61 72 65 20 74 6F 20 72 75 6E 2E 0D 0A 0D 0A 0D    are to run......
00E850:  0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20    .       AMSTRAD 
00E860:  43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20    CPC464/664/6128 
00E870:  46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20    FIRMWARE        
00E880:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00E890:  20 20 20 20 20 20 70 61 67 65 20 32 2E 36 0D 0A          page 2.6..
00E8A0:  1A 0D 0A 1A 72 74 20 49 6E 73 74 72 75 63 74 69    ....rt Instructi
00E8B0:  6F 6E 73 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ons......       
00E8C0:  54 68 65 20 73 79 73 74 65 6D 20 68 61 73 20 33    The system has 3
00E8D0:  32 4B 20 6F 66 20 52 4F 4D 20 61 6E 64 20 36 34    2K of ROM and 64
00E8E0:  4B 20 6F 66 20 52 41 4D 20 20 69 6E 20 20 74 68    K of RAM  in  th
00E8F0:  65 20 20 5A 38 30 27 73 20 20 36 34 4B 20 20 61    e  Z80's  64K  a
00E900:  20 20 20 20 20 20 20 20 20 33 0D 0A 0D 0A 0D 0A             3......
00E910:  0D 0A 20 20 20 20 20 20 20 44 75 72 69 6E 67 20    ..       During 
00E920:  45 4D 53 20 20 74 68 65 20 20 43 50 43 36 31 32    EMS  the  CPC612
00E930:  38 20 20 73 65 6C 65 63 74 73 20 20 6F 72 67 61    8  selects  orga
00E940:  6E 69 7A 61 74 69 6F 6E 20 20 30 20 20 61 6E 64    nization  0  and
00E950:  20 20 74 68 69 73 20 20 69 73 20 20 74 68 65 0D      this  is  the.
00E960:  0A 20 20 20 20 20 20 20 6F 72 67 61 6E 69 7A 61    .       organiza
00E970:  74 69 6F 6E 20 6E 6F 72 6D 61 6C 6C 79 20 61 73    tion normally as
00E980:  73 6F 63 69 61 74 65 64 20 77 69 74 68 20 74 68    sociated with th
00E990:  65 20 66 69 72 6D 77 61 72 65 2E 20 4E 6F 74 65    e firmware. Note
00E9A0:  20 74 68 61 74 20 62 6C 6F 63 6B 73 20 30 0D 0A     that blocks 0..
00E9B0:  20 20 20 20 20 20 20 61 6E 64 20 32 20 63 6F 6E           and 2 con
00E9C0:  74 61 69 6E 20 66 69 72 6D 77 61 72 65 20 76 61    tain firmware va
00E9D0:  72 69 61 62 6C 65 73 2C 20 66 69 72 6D 77 61 72    riables, firmwar
00E9E0:  65 20 6A 75 6D 70 62 6C 6F 63 6B 73 20 61 6E 64    e jumpblocks and
00E9F0:  20 20 74 68 65 20 20 73 74 61 63 6B 2E 0D 0A 20      the  stack... 
00EA00:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
00EA10:  20 20 20 54 68 65 20 64 6F 63 75 6D 65 6E 74 61       The documenta
00EA20:  74 69 6F 6E 20 66 6F 72 20 61 20 6E 75 6D 62 65    tion for a numbe
00EA30:  72 20 6F 66 20 20 66 69 72 6D 77 61 72 65 20 20    r of  firmware  
00EA40:  72 6F 75 74 69 6E 65 73 20 20 73 70 65 63 69 66    routines  specif
00EA50:  69 65 73 20 20 74 68 61 74 0D 0A 20 20 20 20 20    ies  that..     
00EA60:  20 20 64 61 74 61 20 62 6C 6F 63 6B 73 20 70 61      data blocks pa
00EA70:  73 73 65 64 20 74 6F 20 74 68 65 6D 20 73 68 6F    ssed to them sho
00EA80:  75 6C 64 20 62 65 20 69 6E 20 74 68 65 20 20 63    uld be in the  c
00EA90:  65 6E 74 72 61 6C 20 20 33 32 4B 20 20 6D 65 6D    entral  32K  mem
00EAA0:  6F 72 79 2E 20 20 49 6E 0D 0A 20 20 20 20 20 20    ory.  In..      
00EAB0:  20 6D 6F 73 74 20 63 61 73 65 73 20 69 74 20 64     most cases it d
00EAC0:  6F 65 73 20 6E 6F 74 20 6D 61 74 74 65 72 20 20    oes not matter  
00EAD0:  77 68 69 63 68 20 20 62 6C 6F 63 6B 73 20 20 61    which  blocks  a
00EAE0:  72 65 20 20 73 77 69 74 63 68 65 64 20 20 69 6E    re  switched  in
00EAF0:  74 6F 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20    to  the..       
00EB00:  6D 65 6D 6F 72 79 20 6D 61 70 20 61 74 20 74 68    memory map at th
00EB10:  65 73 65 20 70 6C 61 63 65 73 2C 20 68 6F 77 65    ese places, howe
00EB20:  76 65 72 2C 20 74 68 65 20 4B 65 72 6E 65 6C 20    ver, the Kernel 
00EB30:  61 63 63 65 73 73 65 73 20 20 64 61 74 61 20 20    accesses  data  
00EB40:  62 6C 6F 63 6B 73 0D 0A 20 20 20 20 20 20 20 70    blocks..       p
00EB50:  61 73 73 65 64 20 74 6F 20 69 74 20 28 65 2E 67    assed to it (e.g
00EB60:  2E 20 74 69 63 6B 65 72 20 62 6C 6F 63 6B 73 20    . ticker blocks 
00EB70:  6F 72 20 52 53 58 20 20 63 6F 6D 6D 61 6E 64 20    or RSX  command 
00EB80:  20 74 61 62 6C 65 73 29 20 20 61 74 20 20 76 61     tables)  at  va
00EB90:  72 69 6F 75 73 0D 0A 20 20 20 20 20 20 20 74 69    rious..       ti
00EBA0:  6D 65 73 20 28 65 2E 67 2E 20 64 75 72 69 6E 67    mes (e.g. during
00EBB0:  20 69 6E 74 65 72 72 75 70 74 73 20 6F 72 20 20     interrupts or  
00EBC0:  65 76 65 6E 74 20 20 70 72 6F 63 65 73 73 69 6E    event  processin
00EBD0:  67 29 20 20 61 6E 64 20 20 69 74 20 20 68 61 73    g)  and  it  has
00EBE0:  20 20 6E 6F 0D 0A 20 20 20 20 20 20 20 63 6F 6E      no..       con
00EBF0:  74 72 6F 6C 20 6F 76 65 72 20 74 68 65 20 62 61    trol over the ba
00EC00:  6E 6B 20 73 77 69 74 63 68 69 6E 67 20 61 74 20    nk switching at 
00EC10:  73 75 63 68 20 74 69 6D 65 73 2E 20 49 74 20 69    such times. It i
00EC20:  73 20 75 70 20 74 6F 20 74 68 65 20 75 73 65 72    s up to the user
00EC30:  20 74 6F 0D 0A 20 20 20 20 20 20 20 65 6E 73 75     to..       ensu
00EC40:  72 65 20 74 68 61 74 20 20 74 68 65 20 20 4B 65    re that  the  Ke
00EC50:  72 6E 65 6C 20 20 69 73 20 20 6F 6E 6C 79 20 20    rnel  is  only  
00EC60:  70 61 73 73 65 64 20 20 64 61 74 61 20 20 62 6C    passed  data  bl
00EC70:  6F 63 6B 73 20 20 74 68 61 74 20 20 72 65 6D 61    ocks  that  rema
00EC80:  69 6E 0D 0A 20 20 20 20 20 20 20 61 63 63 65 73    in..       acces
00EC90:  73 61 62 6C 65 2E 20 54 68 65 20 73 69 6D 70 6C    sable. The simpl
00ECA0:  65 73 74 20 73 6F 6C 75 74 69 6F 6E 20 74 6F 20    est solution to 
00ECB0:  74 68 69 73 20 70 72 6F 62 6C 65 6D 20 69 73 20    this problem is 
00ECC0:  20 74 6F 20 20 65 6E 73 75 72 65 20 20 74 68 61     to  ensure  tha
00ECD0:  74 0D 0A 20 20 20 20 20 20 20 61 6C 6C 20 4B 65    t..       all Ke
00ECE0:  72 6E 65 6C 20 64 61 74 61 20 62 6C 6F 63 6B 73    rnel data blocks
00ECF0:  20 61 72 65 20 6C 6F 63 61 74 65 64 20 20 69 6E     are located  in
00ED00:  20 20 62 6C 6F 63 6B 20 20 32 20 20 28 62 65 74      block  2  (bet
00ED10:  77 65 65 6E 20 20 23 38 30 30 30 20 20 61 6E 64    ween  #8000  and
00ED20:  0D 0A 20 20 20 20 20 20 20 23 42 46 46 46 29 2E    ..       #BFFF).
00ED30:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4F    ........       O
00ED40:  72 67 61 6E 69 7A 61 74 69 6F 6E 73 20 34 2E 2E    rganizations 4..
00ED50:  37 20 61 72 65 20 74 68 65 20 66 69 72 6D 77 61    7 are the firmwa
00ED60:  72 65 20 20 6F 72 67 61 6E 69 7A 61 74 69 6F 6E    re  organization
00ED70:  20 20 77 69 74 68 20 20 61 20 20 6E 65 77 20 20      with  a  new  
00ED80:  62 6C 6F 63 6B 0D 0A 20 20 20 20 20 20 20 73 77    block..       sw
00ED90:  69 74 63 68 65 64 20 69 6E 74 6F 20 74 68 65 20    itched into the 
00EDA0:  6D 65 6D 6F 72 79 20 6D 61 70 20 61 74 20 23 34    memory map at #4
00EDB0:  30 30 30 2E 20 54 68 65 73 65 20 6F 72 67 61 6E    000. These organ
00EDC0:  69 7A 61 74 69 6F 6E 73 20 63 61 6E 20 62 65 20    izations can be 
00EDD0:  75 73 65 64 0D 0A 20 20 20 20 20 20 20 74 6F 20    used..       to 
00EDE0:  61 63 63 65 73 73 20 70 72 6F 67 72 61 6D 73 20    access programs 
00EDF0:  6F 72 20 64 61 74 61 20 73 74 6F 72 65 64 20 69    or data stored i
00EE00:  6E 20 62 6C 6F 63 6B 73 20 34 2E 2E 37 2E 0D 0A    n blocks 4..7...
00EE10:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4F 72 67    ......       Org
00EE20:  61 6E 69 7A 61 74 69 6F 6E 73 20 31 2E 2E 32 20    anizations 1..2 
00EE30:  61 72 65 20 75 73 65 64 20 62 79 20 43 50 2F 4D    are used by CP/M
00EE40:  20 50 6C 75 73 20 61 6E 64 20 61 72 65 20 6E 6F     Plus and are no
00EE50:  74 20 20 72 65 61 6C 6C 79 20 20 73 75 69 74 61    t  really  suita
00EE60:  62 6C 65 0D 0A 20 20 20 20 20 20 20 66 6F 72 20    ble..       for 
00EE70:  67 65 6E 65 72 61 6C 20 75 73 65 2E 20 49 6E 20    general use. In 
00EE80:  70 61 72 74 69 63 75 6C 61 72 2C 20 69 66 20 6F    particular, if o
00EE90:  72 67 61 6E 69 7A 61 74 69 6F 6E 20 32 20 69 73    rganization 2 is
00EEA0:  20 20 73 65 6C 65 63 74 65 64 20 20 69 74 20 20      selected  it  
00EEB0:  69 73 0D 0A 20 20 20 20 20 20 20 6E 65 63 65 73    is..       neces
00EEC0:  73 61 72 79 20 74 6F 20 70 61 74 63 68 20 61 20    sary to patch a 
00EED0:  70 72 6F 67 61 6D 20 69 6E 74 6F 20 52 41 4D 20    progam into RAM 
00EEE0:  61 74 20 23 30 30 33 38 20 74 6F 20 63 61 74 63    at #0038 to catc
00EEF0:  68 20 69 6E 74 65 72 72 75 70 74 73 20 20 61 6E    h interrupts  an
00EF00:  64 0D 0A 20 20 20 20 20 20 20 74 6F 20 62 61 6E    d..       to ban
00EF10:  6B 20 73 77 69 74 63 68 20 62 61 63 6B 20 74 6F    k switch back to
00EF20:  20 61 20 6D 6F 72 65 20 6E 6F 72 6D 61 6C 20 6F     a more normal o
00EF30:  72 67 61 6E 69 7A 61 74 69 6F 6E 20 20 28 65 2E    rganization  (e.
00EF40:  67 2E 20 20 6F 72 67 61 6E 69 7A 61 74 69 6F 6E    g.  organization
00EF50:  0D 0A 20 20 20 20 20 20 20 31 29 20 74 6F 20 72    ..       1) to r
00EF60:  75 6E 20 74 68 65 20 73 74 61 6E 64 61 72 64 20    un the standard 
00EF70:  69 6E 74 65 72 72 75 70 74 20 63 6F 64 65 2E 0D    interrupt code..
00EF80:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4F 72    .......       Or
00EF90:  67 61 6E 69 7A 61 74 69 6F 6E 20 33 20 69 73 20    ganization 3 is 
00EFA0:  61 6C 73 6F 20 75 73 65 64 20 62 79 20 43 50 2F    also used by CP/
00EFB0:  4D 20 50 6C 75 73 20 62 75 74 20 69 74 20 69 73    M Plus but it is
00EFC0:  20 6F 66 20 20 69 6E 74 65 72 65 73 74 20 20 73     of  interest  s
00EFD0:  69 6E 63 65 0D 0A 20 20 20 20 20 20 20 69 74 20    ince..       it 
00EFE0:  68 61 73 20 74 68 65 20 52 41 4D 20 75 73 75 61    has the RAM usua
00EFF0:  6C 6C 79 20 75 73 65 64 20 66 6F 72 20 74 68 65    lly used for the
00F000:  20 73 63 72 65 65 6E 20 6C 6F 63 61 74 65 64 20     screen located 
00F010:  61 74 20 23 34 30 30 30 20 20 77 68 65 72 65 20    at #4000  where 
00F020:  20 69 74 0D 0A 20 20 20 20 20 20 20 63 61 6E 20     it..       can 
00F030:  62 65 20 61 63 63 65 73 73 65 64 20 77 69 74 68    be accessed with
00F040:  6F 75 74 20 64 69 73 61 62 6C 69 6E 67 20 74 68    out disabling th
00F050:  65 20 75 70 70 65 72 20 52 4F 4D 2E 0D 0A 0D 0A    e upper ROM.....
00F060:  0D 0A 0D 0A 20 20 20 20 20 20 20 42 61 6E 6B 20    ....       Bank 
00F070:  73 77 69 74 63 68 69 6E 67 20 68 61 73 20 6E 6F    switching has no
00F080:  20 65 66 66 65 63 74 20 6F 6E 20 74 68 65 20 43     effect on the C
00F090:  52 54 43 2E 20 42 61 73 65 20 61 64 64 72 65 73    RTC. Base addres
00F0A0:  73 65 73 20 23 30 30 30 30 2C 20 23 34 30 30 30    ses #0000, #4000
00F0B0:  2C 0D 0A 20 20 20 20 20 20 20 23 38 30 30 30 20    ,..       #8000 
00F0C0:  61 6E 64 20 23 43 30 30 30 20 63 6F 72 72 65 73    and #C000 corres
00F0D0:  70 6F 6E 64 20 74 6F 20 74 68 65 20 73 63 72 65    pond to the scre
00F0E0:  65 6E 20 62 65 69 6E 67 20 69 6E 20 62 6C 6F 63    en being in bloc
00F0F0:  6B 73 20 30 2C 20 31 2C 20 32 20 61 6E 64 20 33    ks 0, 1, 2 and 3
00F100:  0D 0A 20 20 20 20 20 20 20 72 65 73 70 65 63 74    ..       respect
00F110:  69 76 65 6C 79 2E 20 49 74 20 69 73 20 6E 6F 74    ively. It is not
00F120:  20 70 6F 73 73 69 62 6C 65 20 74 6F 20 6C 6F 63     possible to loc
00F130:  61 74 65 20 74 68 65 20 73 63 72 65 65 6E 20 69    ate the screen i
00F140:  6E 20 62 6C 6F 63 6B 73 20 20 34 2E 2E 37 2E 0D    n blocks  4..7..
00F150:  0A 20 20 20 20 20 20 20 48 6F 77 65 76 65 72 2C    .       However,
00F160:  20 74 68 65 20 66 69 72 6D 77 61 72 65 20 72 6F     the firmware ro
00F170:  75 74 69 6E 65 73 20 66 6F 72 20 61 63 63 65 73    utines for acces
00F180:  73 69 6E 67 20 20 74 68 65 20 20 73 63 72 65 65    sing  the  scree
00F190:  6E 20 20 6D 65 6D 6F 72 79 20 20 61 72 65 0D 0A    n  memory  are..
00F1A0:  20 20 20 20 20 20 20 61 66 66 65 63 74 65 64 20           affected 
00F1B0:  62 79 20 62 61 6E 6B 20 73 77 69 74 63 68 69 6E    by bank switchin
00F1C0:  67 2E 20 46 6F 72 20 65 78 61 6D 70 6C 65 2C 20    g. For example, 
00F1D0:  69 66 20 61 20 62 61 73 65 20 61 64 64 72 65 73    if a base addres
00F1E0:  73 20 6F 66 20 23 43 30 30 30 20 69 73 0D 0A 20    s of #C000 is.. 
00F1F0:  20 20 20 20 20 20 73 65 74 20 69 6E 20 6F 72 67          set in org
00F200:  61 6E 69 7A 61 74 69 6F 6E 20 33 20 74 68 65 6E    anization 3 then
00F210:  20 74 68 65 20 66 69 72 6D 77 61 72 65 20 77 69     the firmware wi
00F220:  6C 6C 20 62 65 20 75 6E 61 62 6C 65 20 74 6F 20    ll be unable to 
00F230:  20 61 63 63 65 73 73 20 20 74 68 65 0D 0A 20 20     access  the..  
00F240:  20 20 20 20 20 73 63 72 65 65 6E 20 6D 65 6D 6F         screen memo
00F250:  72 79 20 73 69 6E 63 65 20 62 6C 6F 63 6B 20 31    ry since block 1
00F260:  20 69 73 20 6E 6F 74 20 69 6E 20 74 68 65 20 6D     is not in the m
00F270:  65 6D 6F 72 79 20 6D 61 70 2E 20 28 53 65 65 20    emory map. (See 
00F280:  73 65 63 74 69 6F 6E 20 36 2E 34 0D 0A 20 20 20    section 6.4..   
00F290:  20 20 20 20 66 6F 72 20 61 20 66 75 6C 6C 20 64        for a full d
00F2A0:  65 73 63 72 69 70 74 69 6F 6E 20 6F 66 20 74 68    escription of th
00F2B0:  65 20 73 63 72 65 65 6E 20 6D 65 6D 6F 72 79 20    e screen memory 
00F2C0:  6D 61 70 29 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    map).........   
00F2D0:  20 20 20 20 4F 72 67 61 6E 69 7A 61 74 69 6F 6E        Organization
00F2E0:  73 20 34 2E 2E 37 20 63 61 6E 20 62 65 20 75 73    s 4..7 can be us
00F2F0:  65 64 20 74 6F 20 73 65 74 20 75 70 20 61 20 63    ed to set up a c
00F300:  6F 6D 70 6C 65 74 65 20 73 63 72 65 65 6E 20 69    omplete screen i
00F310:  6E 20 20 6F 6E 65 20 20 67 6F 0D 0A 20 20 20 20    n  one  go..    
00F320:  20 20 20 62 79 20 75 73 69 6E 67 20 53 43 52 20       by using SCR 
00F330:  53 45 54 20 50 4F 53 49 54 49 4F 4E 20 74 6F 20    SET POSITION to 
00F340:  6D 61 6B 65 20 74 68 65 20 66 69 72 6D 77 61 72    make the firmwar
00F350:  65 20 20 77 72 69 74 65 20 20 74 6F 20 20 74 68    e  write  to  th
00F360:  65 20 20 6D 65 6D 6F 72 79 0D 0A 20 20 20 20 20    e  memory..     
00F370:  20 20 6C 6F 63 61 74 69 6F 6E 20 61 74 20 23 34      location at #4
00F380:  30 30 30 20 77 69 74 68 6F 75 74 20 73 65 6E 64    000 without send
00F390:  69 6E 67 20 61 20 6E 65 77 20 62 61 73 65 20 20    ing a new base  
00F3A0:  61 64 64 72 65 73 73 20 20 74 6F 20 20 74 68 65    address  to  the
00F3B0:  20 20 73 63 72 65 65 6E 0D 0A 20 20 20 20 20 20      screen..      
00F3C0:  20 68 61 72 64 77 61 72 65 2E 20 54 68 65 6E 2C     hardware. Then,
00F3D0:  20 77 68 65 6E 20 74 68 65 20 73 63 72 65 65 6E     when the screen
00F3E0:  20 68 61 73 20 62 65 65 6E 20 20 66 69 6E 69 73     has been  finis
00F3F0:  68 65 64 2C 20 20 74 68 65 20 20 63 6F 6E 74 65    hed,  the  conte
00F400:  6E 74 73 20 20 6F 66 0D 0A 20 20 20 20 20 20 20    nts  of..       
00F410:  74 68 69 73 20 62 6C 6F 63 6B 20 63 61 6E 20 62    this block can b
00F420:  65 20 71 75 69 63 6B 6C 79 20 63 6F 70 69 65 64    e quickly copied
00F430:  20 69 6E 74 6F 20 74 68 65 20 62 6C 6F 63 6B 20     into the block 
00F440:  61 63 74 75 61 6C 6C 79 20 62 65 69 6E 67 20 75    actually being u
00F450:  73 65 64 20 62 79 0D 0A 20 20 20 20 20 20 20 74    sed by..       t
00F460:  68 65 20 43 52 54 43 20 28 75 73 69 6E 67 20 4B    he CRTC (using K
00F470:  4C 20 44 49 52 20 70 65 72 68 61 70 73 29 2E 20    L DIR perhaps). 
00F480:  46 6F 72 20 65 78 61 6D 70 6C 65 2C 20 61 20 74    For example, a t
00F490:  69 74 6C 65 20 73 63 72 65 65 6E 20 63 6F 75 6C    itle screen coul
00F4A0:  64 20 20 62 65 0D 0A 20 20 20 20 20 20 20 73 65    d  be..       se
00F4B0:  74 20 75 70 20 61 6E 64 20 62 61 6E 6B 20 73 77    t up and bank sw
00F4C0:  69 74 63 68 65 64 20 6F 75 74 20 6F 66 20 74 68    itched out of th
00F4D0:  65 20 77 61 79 20 61 6E 64 20 74 68 65 6E 20 73    e way and then s
00F4E0:  77 69 74 63 68 65 64 20 62 61 63 6B 20 69 6E 20    witched back in 
00F4F0:  20 61 6E 64 0D 0A 20 20 20 20 20 20 20 63 6F 70     and..       cop
00F500:  69 65 64 20 61 74 20 61 20 6C 61 74 65 72 20 64    ied at a later d
00F510:  61 74 65 20 77 68 65 6E 20 69 74 20 69 73 20 77    ate when it is w
00F520:  61 6E 74 65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    anted...........
00F530:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52    ....       AMSTR
00F540:  41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31    AD CPC464/664/61
00F550:  32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20    28 FIRMWARE     
00F560:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00F570:  20 20 20 20 20 20 20 20 20 70 61 67 65 20 32 2E             page 2.
00F580:  37 0D 0A 1A 41 50 2D 32 20 20 24 24 24 FF 00 FF    7...AP-2  $$$...
00F590:  20 52 4F 4D 73 2C 20 52 41 4D 20 61 6E 64 20 74     ROMs, RAM and t
00F5A0:  68 65 20 52 65 73 74 61 72 74 20 49 6E 73 74 72    he Restart Instr
00F5B0:  75 63 74 69 6F 6E 73 0D 0A 0D 0A 0D 0A 20 20 20    uctions......   
00F5C0:  20 20 20 20 54 68 65 20 73 79 73 74 65 6D 20 68        The system h
00F5D0:  61 73 20 33 32 4B 20 6F 66 20 52 4F 4D 20 61 6E    as 32K of ROM an
00F5E0:  64 20 36 34 4B 20 6F 66 20 52 41 4D 20 20 69 6E    d 64K of RAM  in
00F5F0:  20 20 74 68 65 20 20 5A 38 30 27 73 20 20 36 34      the  Z80's  64
00F600:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 33    ........       3
00F610:  20 54 68 65 20 4B 65 79 62 6F 61 72 64 2E 0D 0A     The Keyboard...
00F620:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 4B    ....       The K
00F630:  65 79 20 4D 61 6E 61 67 65 72 20 69 73 20 74 68    ey Manager is th
00F640:  65 20 70 61 63 6B 20 61 73 73 6F 63 69 61 74 65    e pack associate
00F650:  64 20 20 77 69 74 68 20 20 74 68 65 20 20 6B 65    d  with  the  ke
00F660:  79 62 6F 61 72 64 2E 20 20 41 6C 6C 20 20 74 68    yboard.  All  th
00F670:  65 0D 0A 20 20 20 20 20 20 20 61 74 74 72 69 62    e..       attrib
00F680:  75 74 65 73 20 6F 66 20 74 68 65 20 6B 65 79 62    utes of the keyb
00F690:  6F 61 72 64 20 61 72 65 20 67 65 6E 65 72 61 74    oard are generat
00F6A0:  65 64 20 61 6E 64 20 20 63 6F 6E 74 72 6F 6C 6C    ed and  controll
00F6B0:  65 64 20 20 62 79 20 20 74 68 65 20 20 4B 65 79    ed  by  the  Key
00F6C0:  0D 0A 20 20 20 20 20 20 20 4D 61 6E 61 67 65 72    ..       Manager
00F6D0:  2E 20 54 68 65 73 65 20 61 74 74 72 69 62 75 74    . These attribut
00F6E0:  65 73 20 69 6E 63 6C 75 64 65 20 20 72 65 70 65    es include  repe
00F6F0:  61 74 20 20 73 70 65 65 64 2C 20 20 73 68 69 66    at  speed,  shif
00F700:  74 20 20 61 6E 64 20 20 63 6F 6E 74 72 6F 6C 0D    t  and  control.
00F710:  0A 20 20 20 20 20 20 20 6B 65 79 73 2C 20 66 75    .       keys, fu
00F720:  6E 63 74 69 6F 6E 20 6B 65 79 73 20 20 61 6E 64    nction keys  and
00F730:  20 20 6B 65 79 20 20 74 72 61 6E 73 6C 61 74 69      key  translati
00F740:  6F 6E 2E 20 20 54 68 65 20 20 6A 6F 79 73 74 69    on.  The  joysti
00F750:  63 6B 73 20 20 61 72 65 20 20 61 6C 73 6F 0D 0A    cks  are  also..
00F760:  20 20 20 20 20 20 20 73 63 61 6E 6E 65 64 20 62           scanned b
00F770:  79 20 74 68 65 20 4B 65 79 20 4D 61 6E 61 67 65    y the Key Manage
00F780:  72 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    r.......       T
00F790:  68 65 20 4B 65 79 20 4D 61 6E 61 67 65 72 20 68    he Key Manager h
00F7A0:  61 73 20 74 68 72 65 65 20 6C 65 76 65 6C 73 20    as three levels 
00F7B0:  6F 66 20 6F 70 65 72 61 74 69 6F 6E 2E 20 54 68    of operation. Th
00F7C0:  65 20 6C 6F 77 65 73 74 20 6C 65 76 65 6C 20 20    e lowest level  
00F7D0:  73 63 61 6E 73 0D 0A 20 20 20 20 20 20 20 74 68    scans..       th
00F7E0:  65 20 6B 65 79 62 6F 61 72 64 2C 20 74 68 65 20    e keyboard, the 
00F7F0:  6D 69 64 64 6C 65 20 6C 65 76 65 6C 20 63 6F 6E    middle level con
00F800:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
00F810:  0D 00 00 00 02 09 50 E5 0D 00 C1 02 00 00 00 02    ......P.........
00F820:  0D 00 C2 02 00 00 00 02 0D 00 C3 02 00 00 00 02    ................
00F830:  0D 00 C4 02 00 00 00 02 0D 00 C5 02 00 00 00 02    ................
00F840:  0D 00 C6 02 00 00 00 02 0D 00 C7 02 00 00 00 02    ................
00F850:  0D 00 C8 02 00 00 00 02 0D 00 C9 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:  76 65 72 74 73 20 74 68 65 20 20 6B 65 79 20 20    verts the  key  
00F910:  70 72 65 73 73 69 6E 67 73 20 20 69 6E 74 6F 20    pressings  into 
00F920:  20 6B 65 79 0D 0A 20 20 20 20 20 20 20 76 61 6C     key..       val
00F930:  75 65 73 20 61 6E 64 20 74 68 65 20 74 6F 70 20    ues and the top 
00F940:  6C 65 76 65 6C 20 63 6F 6E 76 65 72 74 73 20 74    level converts t
00F950:  68 65 20 6B 65 79 20 76 61 6C 75 65 73 20 69 6E    he key values in
00F960:  74 6F 20 63 68 61 72 61 63 74 65 72 73 2E 20 20    to characters.  
00F970:  54 68 65 0D 0A 20 20 20 20 20 20 20 75 73 65 72    The..       user
00F980:  20 6D 61 79 20 61 63 63 65 73 73 20 74 68 65 20     may access the 
00F990:  4B 65 79 20 4D 61 6E 61 67 65 72 20 61 74 20 77    Key Manager at w
00F9A0:  68 69 63 68 65 76 65 72 20 6C 65 76 65 6C 20 69    hichever level i
00F9B0:  73 20 6D 6F 73 74 20 61 70 70 72 6F 70 72 69 61    s most appropria
00F9C0:  74 65 0D 0A 20 20 20 20 20 20 20 66 6F 72 20 61    te..       for a
00F9D0:  20 67 69 76 65 6E 20 70 72 6F 67 72 61 6D 2E 20     given program. 
00F9E0:  49 74 20 69 73 20 75 73 75 61 6C 6C 79 20 75 6E    It is usually un
00F9F0:  77 69 73 65 2C 20 68 6F 77 65 76 65 72 2C 20 66    wise, however, f
00FA00:  6F 72 20 61 20 20 70 72 6F 67 72 61 6D 20 20 74    or a  program  t
00FA10:  6F 0D 0A 20 20 20 20 20 20 20 6D 69 78 20 61 63    o..       mix ac
00FA20:  63 65 73 73 65 73 20 61 74 20 64 69 66 66 65 72    cesses at differ
00FA30:  65 6E 74 20 6C 65 76 65 6C 73 2E 0D 0A 0D 0A 20    ent levels..... 
00FA40:  20 20 20 20 20 20 33 2E 31 20 4B 65 79 62 6F 61          3.1 Keyboa
00FA50:  72 64 20 53 63 61 6E 6E 69 6E 67 2E 0D 0A 0D 0A    rd Scanning.....
00FA60:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 20 6B 65    ..       The  ke
00FA70:  79 62 6F 61 72 64 20 20 69 73 20 20 63 6F 6D 70    yboard  is  comp
00FA80:  6C 65 74 65 6C 79 20 20 73 6F 66 74 77 61 72 65    letely  software
00FA90:  20 20 73 63 61 6E 6E 65 64 2E 20 20 54 68 69 73      scanned.  This
00FAA0:  20 20 73 63 61 6E 20 20 20 6F 63 63 75 72 73 0D      scan   occurs.
00FAB0:  0A 20 20 20 20 20 20 20 61 75 74 6F 6D 61 74 69    .       automati
00FAC0:  63 61 6C 6C 79 20 65 76 65 72 79 20 66 69 66 74    cally every fift
00FAD0:  69 65 74 68 20 6F 66 20 61 20 20 73 65 63 6F 6E    ieth of a  secon
00FAE0:  64 20 20 28 73 65 65 20 20 4B 4D 20 20 53 43 41    d  (see  KM  SCA
00FAF0:  4E 20 20 4B 45 59 53 29 2E 20 20 54 68 65 0D 0A    N  KEYS).  The..
00FB00:  20 20 20 20 20 20 20 6B 65 79 62 6F 61 72 64 20           keyboard 
00FB10:  68 61 72 64 77 61 72 65 20 69 73 20 72 65 61 64    hardware is read
00FB20:  20 61 6E 64 20 61 20 62 69 74 20 6D 61 70 20 6E     and a bit map n
00FB30:  6F 74 69 6E 67 20 77 68 69 63 68 20 6B 65 79 73    oting which keys
00FB40:  20 61 72 65 20 20 70 72 65 73 73 65 64 0D 0A 20     are  pressed.. 
00FB50:  20 20 20 20 20 20 69 73 20 63 6F 6E 73 74 72 75          is constru
00FB60:  63 74 65 64 2E 20 54 68 69 73 20 62 69 74 20 6D    cted. This bit m
00FB70:  61 70 20 69 73 20 61 76 61 69 6C 61 62 6C 65 20    ap is available 
00FB80:  66 6F 72 20 74 65 73 74 69 6E 67 20 69 66 20 73    for testing if s
00FB90:  70 65 63 69 66 69 63 20 6B 65 79 73 0D 0A 20 20    pecific keys..  
00FBA0:  20 20 20 20 20 61 72 65 20 70 72 65 73 73 65 64         are pressed
00FBB0:  20 28 73 65 65 20 4B 4D 20 54 45 53 54 20 4B 45     (see KM TEST KE
00FBC0:  59 29 2E 20 41 73 20 74 68 65 20 62 69 74 20 6D    Y). As the bit m
00FBD0:  61 70 20 69 73 20 63 6F 6E 73 74 72 75 63 74 65    ap is constructe
00FBE0:  64 20 6B 65 79 73 20 74 68 61 74 0D 0A 20 20 20    d keys that..   
00FBF0:  20 20 20 20 61 72 65 20 6E 65 77 6C 79 20 70 72        are newly pr
00FC00:  65 73 73 65 64 20 61 72 65 20 20 6E 6F 74 65 64    essed are  noted
00FC10:  20 20 61 6E 64 20 20 6D 61 72 6B 65 72 73 20 20      and  markers  
00FC20:  61 72 65 20 20 73 74 6F 72 65 64 20 20 69 6E 20    are  stored  in 
00FC30:  20 61 20 20 62 75 66 66 65 72 0D 0A 20 20 20 20     a  buffer..    
00FC40:  20 20 20 75 6E 74 69 6C 20 6E 65 65 64 65 64 2E       until needed.
00FC50:  20 49 66 20 6E 6F 20 6E 65 77 6C 79 20 70 72 65     If no newly pre
00FC60:  73 73 65 64 20 6B 65 79 73 20 61 72 65 20 66 6F    ssed keys are fo
00FC70:  75 6E 64 20 20 74 68 65 6E 20 20 74 68 65 20 20    und  then  the  
00FC80:  6C 61 73 74 20 20 6B 65 79 0D 0A 20 20 20 20 20    last  key..     
00FC90:  20 20 70 72 65 73 73 65 64 20 6D 61 79 20 62 65      pressed may be
00FCA0:  20 61 6C 6C 6F 77 65 64 20 74 20 72 65 70 65 61     allowed t repea
00FCB0:  74 20 69 66 20 20 69 74 20 20 69 73 20 20 73 74    t if  it  is  st
00FCC0:  69 6C 6C 20 20 64 6F 77 6E 20 20 28 73 65 65 20    ill  down  (see 
00FCD0:  20 73 65 63 74 69 6F 6E 0D 0A 20 20 20 20 20 20     section..      
00FCE0:  20 33 2E 35 29 2E 20 54 68 65 20 6B 65 79 62 6F     3.5). The keybo
00FCF0:  61 72 64 20 69 73 20 27 64 65 62 6F 75 6E 63 65    ard is 'debounce
00FD00:  64 27 20 69 6E 20 20 74 68 61 74 20 20 61 20 20    d' in  that  a  
00FD10:  6B 65 79 20 20 6D 75 73 74 20 20 62 65 20 20 72    key  must  be  r
00FD20:  65 6C 65 61 73 65 64 0D 0A 20 20 20 20 20 20 20    eleased..       
00FD30:  66 6F 72 20 74 77 6F 20 63 6F 6E 73 65 63 75 74    for two consecut
00FD40:  69 76 65 20 73 63 61 6E 73 20 62 65 66 6F 72 65    ive scans before
00FD50:  20 69 74 20 20 69 73 20 20 6D 61 72 6B 65 64 20     it  is  marked 
00FD60:  20 61 73 20 20 72 65 6C 65 61 73 65 64 20 20 69     as  released  i
00FD70:  6E 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 62    n  the..       b
00FD80:  69 74 20 6D 61 70 2E 20 20 54 68 69 73 20 20 27    it map.  This  '
00FD90:  64 65 62 6F 75 6E 63 65 64 27 20 20 68 69 64 65    debounced'  hide
00FDA0:  73 20 20 6D 75 6C 74 69 70 6C 65 20 20 6F 70 65    s  multiple  ope
00FDB0:  72 61 74 69 6F 6E 73 20 20 6F 66 20 20 74 68 65    rations  of  the
00FDC0:  20 20 6B 65 79 0D 0A 20 20 20 20 20 20 20 73 77      key..       sw
00FDD0:  69 74 63 68 20 61 73 20 69 74 20 6F 70 65 6E 73    itch as it opens
00FDE0:  20 6F 72 20 63 6C 6F 73 65 73 2E 0D 0A 0D 0A 0D     or closes......
00FDF0:  0A 20 20 20 20 20 20 20 41 74 20 74 68 69 73 20    .       At this 
00FE00:  73 74 61 67 65 20 20 6F 6E 6C 79 20 20 66 6F 75    stage  only  fou
00FE10:  72 20 20 6B 65 79 73 20 20 61 72 65 20 20 74 72    r  keys  are  tr
00FE20:  65 61 74 65 64 20 20 73 70 65 63 69 66 69 63 61    eated  specifica
00FE30:  6C 6C 79 2E 20 20 54 68 65 20 20 74 77 6F 0D 0A    lly.  The  two..
00FE40:  20 20 20 20 20 20 20 73 68 69 66 74 20 6B 65 79           shift key
00FE50:  73 20 61 6E 64 20 74 68 65 20 63 6F 6E 74 72 6F    s and the contro
00FE60:  6C 20 6B 65 79 20 20 61 72 65 20 20 6E 6F 74 20    l key  are  not 
00FE70:  20 73 74 6F 72 65 64 20 20 69 6E 20 20 74 68 65     stored  in  the
00FE80:  20 20 6B 65 79 20 20 62 75 66 66 65 72 0D 0A 20      key  buffer.. 
00FE90:  20 20 20 20 20 20 74 68 65 6D 73 65 6C 76 65 73          themselves
00FEA0:  2E 20 49 6E 73 74 65 61 64 2C 20 77 68 65 6E 20    . Instead, when 
00FEB0:  61 6E 79 20 6F 74 68 65 72 20 6D 61 72 6B 65 72    any other marker
00FEC0:  20 69 73 20 20 73 74 6F 72 65 64 20 20 74 68 65     is  stored  the
00FED0:  20 20 73 74 61 74 65 73 20 20 6F 66 0D 0A 20 20      states  of..  
00FEE0:  20 20 20 20 20 74 68 65 20 73 68 69 66 74 20 61         the shift a
00FEF0:  6E 64 20 63 6F 6E 74 72 6F 6C 20 6B 65 79 73 20    nd control keys 
00FF00:  61 72 65 20 20 6E 6F 74 65 64 20 20 61 6E 64 20    are  noted  and 
00FF10:  20 70 75 74 20 20 69 6E 74 6F 20 20 74 68 65 20     put  into  the 
00FF20:  20 62 75 66 66 65 72 20 20 61 73 0D 0A 20 20 20     buffer  as..   
00FF30:  20 20 20 20 77 65 6C 6C 2E 20 54 68 65 20 65 73        well. The es
00FF40:  63 61 70 65 20 6B 65 79 20 20 67 65 6E 65 72 61    cape key  genera
00FF50:  74 65 73 20 20 61 20 20 6D 61 72 6B 65 72 20 20    tes  a  marker  
00FF60:  61 73 20 20 6E 6F 72 6D 61 6C 20 20 62 75 74 20    as  normal  but 
00FF70:  20 6D 61 79 20 20 61 6C 73 6F 0D 0A 20 20 20 20     may  also..    
00FF80:  20 20 20 68 61 76 65 20 6F 74 68 65 72 20 20 65       have other  e
00FF90:  66 66 65 63 74 73 20 20 64 65 70 65 6E 64 69 6E    ffects  dependin
00FFA0:  67 20 20 6F 6E 20 20 77 68 65 74 68 65 72 20 20    g  on  whether  
00FFB0:  74 68 65 20 20 62 72 65 61 6B 20 20 6D 65 63 68    the  break  mech
00FFC0:  61 6E 69 73 6D 20 20 69 73 0D 0A 20 20 20 20 20    anism  is..     
00FFD0:  20 20 61 72 6D 65 64 20 28 73 65 65 20 73 65 63      armed (see sec
00FFE0:  74 69 6F 6E 20 33 2E 36 29 2E 0D 0A 0D 0A 0D 0A    tion 3.6).......
00FFF0:  20 20 20 20 20 20 20 54 68 65 72 65 20 69 73 20           There is 
010000:  61 20 70 72 6F 62 6C 65 6D 20 77 69 74 68 20 73    a problem with s
010010:  63 61 6E 6E 69 6E 67 20 74 68 65 20 6B 65 79 62    canning the keyb
010020:  6F 61 72 64 2E 20 49 66 20 74 68 72 65 65 20 20    oard. If three  
010030:  6B 65 79 73 20 20 61 74 20 20 74 68 65 0D 0A 20    keys  at  the.. 
010040:  20 20 20 20 20 20 63 6F 72 6E 65 72 73 20 6F 66          corners of
010050:  20 61 20 72 65 63 74 61 6E 67 6C 65 20 69 6E 20     a rectangle in 
010060:  74 68 65 20 6B 65 79 20 6D 61 74 72 69 78 20 61    the key matrix a
010070:  72 65 20 61 6C 6C 20 70 72 65 73 73 65 64 20 61    re all pressed a
010080:  74 20 20 74 68 65 20 20 73 61 6D 65 0D 0A 20 20    t  the  same..  
010090:  20 20 20 20 20 74 69 6D 65 20 74 68 65 6E 20 74         time then t
0100A0:  68 65 20 6B 65 79 20 61 74 20 74 68 65 20 66 6F    he key at the fo
0100B0:  75 72 74 68 20 63 6F 72 6E 65 72 20 61 70 70 65    urth corner appe
0100C0:  61 72 73 20 74 6F 20 62 65 20 70 72 65 73 73 65    ars to be presse
0100D0:  64 20 61 73 20 20 77 65 6C 6C 2E 0D 0A 20 20 20    d as  well...   
0100E0:  20 20 20 20 54 68 65 72 65 20 69 73 20 6E 6F 20        There is no 
0100F0:  77 61 79 20 74 6F 20 61 76 6F 69 64 20 74 68 69    way to avoid thi
010100:  73 20 70 72 6F 62 6C 65 6D 20 20 61 73 20 20 69    s problem  as  i
010110:  74 20 20 69 73 20 20 61 20 20 66 65 61 74 75 72    t  is  a  featur
010120:  65 20 20 6F 66 20 20 74 68 65 0D 0A 20 20 20 20    e  of  the..    
010130:  20 20 20 6B 65 79 62 6F 61 72 64 20 68 61 72 64       keyboard hard
010140:  77 61 72 65 2E 20 41 6C 6C 20 6B 65 79 20 63 6F    ware. All key co
010150:  6D 62 69 6E 61 74 69 6F 6E 73 20 75 73 65 64 20    mbinations used 
010160:  62 79 20 74 68 65 20 66 69 72 6D 77 61 72 65 20    by the firmware 
010170:  28 61 6E 64 20 20 74 68 65 0D 0A 20 20 20 20 20    (and  the..     
010180:  20 20 42 41 53 49 43 29 20 68 61 76 65 20 62 65      BASIC) have be
010190:  65 6E 20 65 73 70 65 63 69 61 6C 6C 79 20 64 65    en especially de
0101A0:  73 69 67 6E 65 64 20 74 6F 20 61 76 6F 69 64 20    signed to avoid 
0101B0:  74 68 69 73 20 65 66 66 65 63 74 2E 0D 0A 0D 0A    this effect.....
0101C0:  20 20 20 20 20 20 20 33 2E 32 20 4B 65 79 20 54           3.2 Key T
0101D0:  72 61 6E 73 6C 61 74 69 6F 6E 2E 0D 0A 0D 0A 20    ranslation..... 
0101E0:  20 20 20 20 20 20 57 68 65 6E 20 74 68 65 20 75          When the u
0101F0:  73 65 72 20 61 73 6B 73 20 66 6F 72 20 61 20 6B    ser asks for a k
010200:  65 79 20 28 4B 4D 20 57 41 49 54 20 4B 45 59 20    ey (KM WAIT KEY 
010210:  6F 72 20 4B 4D 20 52 45 41 44 20 4B 45 59 29 20    or KM READ KEY) 
010220:  74 68 65 20 6E 65 78 74 20 6B 65 79 0D 0A 20 20    the next key..  
010230:  20 20 20 20 20 70 72 65 73 73 65 64 20 6D 61 72         pressed mar
010240:  6B 65 72 20 69 73 20 72 65 61 64 20 66 72 6F 6D    ker is read from
010250:  20 74 68 65 20 6B 65 79 20 62 75 66 66 65 72 2E     the key buffer.
010260:  20 54 68 65 20 6D 61 72 6B 65 72 20 69 73 20 63     The marker is c
010270:  6F 6E 76 65 72 74 65 64 20 74 6F 0D 0A 20 20 20    onverted to..   
010280:  20 20 20 20 61 20 6B 65 79 20 6E 75 6D 62 65 72        a key number
010290:  20 61 6E 64 20 74 68 69 73 20 69 73 20 6C 6F 6F     and this is loo
0102A0:  6B 65 64 20 75 70 20 69 6E 20 6F 6E 65 20 20 6F    ked up in one  o
0102B0:  66 20 20 74 68 65 20 20 74 68 72 65 65 20 20 74    f  the  three  t
0102C0:  72 61 6E 73 6C 61 74 69 6F 6E 0D 0A 20 20 20 20    ranslation..    
0102D0:  20 20 20 74 61 62 6C 65 73 2E 0D 0A 0D 0A 20 20       tables.....  
0102E0:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
0102F0:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
010300:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
010310:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
010320:  20 20 20 70 61 67 65 20 33 2E 31 0D 0A 0D 0A 0D       page 3.1.....
010330:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
010340:  57 68 69 63 68 20 74 61 62 6C 65 20 69 73 20 75    Which table is u
010350:  73 65 64 20 64 65 70 65 6E 64 73 20 6F 6E 20 77    sed depends on w
010360:  68 65 74 68 65 72 20 74 68 65 20 73 68 69 66 74    hether the shift
010370:  20 61 6E 64 20 63 6F 6E 74 72 6F 6C 20 6B 65 79     and control key
010380:  73 20 77 65 72 65 0D 0A 20 20 20 20 20 20 20 70    s were..       p
010390:  72 65 73 73 65 64 20 77 68 65 6E 20 74 68 65 20    ressed when the 
0103A0:  6B 65 79 20 77 61 73 20 70 72 65 73 73 65 64 2E    key was pressed.
0103B0:  20 4F 6E 65 20 74 61 62 6C 65 20 69 73 20 20 75     One table is  u
0103C0:  73 65 64 20 20 69 66 20 20 74 68 65 20 20 63 6F    sed  if  the  co
0103D0:  6E 74 72 6F 6C 0D 0A 20 20 20 20 20 20 20 6B 65    ntrol..       ke
0103E0:  79 20 77 61 73 20 70 72 65 73 73 65 64 2C 20 61    y was pressed, a
0103F0:  6E 6F 74 68 65 72 20 69 73 20 75 73 65 64 20 20    nother is used  
010400:  69 66 20 20 65 69 74 68 65 72 20 20 73 68 69 66    if  either  shif
010410:  74 20 20 6B 65 79 20 20 77 61 73 20 20 70 72 65    t  key  was  pre
010420:  73 73 65 64 0D 0A 20 20 20 20 20 20 20 62 75 74    ssed..       but
010430:  20 20 63 6F 6E 74 72 6F 6C 20 20 77 61 73 20 20      control  was  
010440:  6E 6F 74 2C 20 20 74 68 65 20 20 74 68 69 72 64    not,  the  third
010450:  20 20 69 73 20 20 75 73 65 64 20 20 69 66 20 20      is  used  if  
010460:  6E 65 69 74 68 65 72 20 20 73 68 69 66 74 20 20    neither  shift  
010470:  6E 6F 72 0D 0A 20 20 20 20 20 20 20 63 6F 6E 74    nor..       cont
010480:  72 6F 6C 20 6B 65 79 73 20 77 65 72 65 20 20 70    rol keys were  p
010490:  72 65 73 73 65 64 2E 20 20 54 68 65 20 20 63 6F    ressed.  The  co
0104A0:  6E 74 65 6E 74 73 20 20 6F 66 20 20 74 68 65 73    ntents  of  thes
0104B0:  65 20 20 74 61 62 6C 65 73 20 20 63 61 6E 20 20    e  tables  can  
0104C0:  62 65 0D 0A 20 20 20 20 20 20 20 61 6C 74 65 72    be..       alter
0104D0:  65 64 20 62 79 20 74 68 65 20 75 73 65 72 20 61    ed by the user a
0104E0:  73 20 72 65 71 75 69 72 65 64 20 28 62 79 20 63    s required (by c
0104F0:  61 6C 6C 69 6E 67 20 4B 4D 20 20 53 45 54 20 20    alling KM  SET  
010500:  43 4F 4E 54 52 4F 4C 2C 20 20 4B 4D 20 20 53 45    CONTROL,  KM  SE
010510:  54 0D 0A 20 20 20 20 20 20 20 53 48 49 46 54 20    T..       SHIFT 
010520:  61 6E 64 20 4B 4D 20 53 45 54 20 54 52 41 4E 53    and KM SET TRANS
010530:  4C 41 54 45 20 72 65 73 70 65 63 74 69 76 65 6C    LATE respectivel
010540:  79 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    y).....       Th
010550:  65 20 76 61 6C 75 65 20 65 78 74 72 61 63 74 65    e value extracte
010560:  64 20 66 72 6F 6D 20 74 68 65 20 74 61 62 6C 65    d from the table
010570:  20 6D 61 79 20 62 65 20 61 20 73 79 73 74 65 6D     may be a system
010580:  20 74 6F 6B 65 6E 2C 20 61 6E 20 65 78 70 61 6E     token, an expan
010590:  73 69 6F 6E 0D 0A 20 20 20 20 20 20 20 74 6F 6B    sion..       tok
0105A0:  65 6E 20 6F 72 20 61 20 63 68 61 72 61 63 74 65    en or a characte
0105B0:  72 2E 20 45 78 70 61 6E 73 69 6F 6E 20 74 6F 6B    r. Expansion tok
0105C0:  65 6E 73 20 61 6E 64 20 63 68 61 72 61 63 74 65    ens and characte
0105D0:  72 73 20 61 72 65 20 75 73 65 64 20 62 79 20 20    rs are used by  
0105E0:  74 68 65 0D 0A 20 20 20 20 20 20 20 74 6F 70 20    the..       top 
0105F0:  6C 65 76 65 6C 20 6F 66 20 74 68 65 20 4B 65 79    level of the Key
010600:  20 4D 61 6E 61 67 65 72 20 28 73 65 65 20 33 2E     Manager (see 3.
010610:  33 20 62 65 6C 6F 77 29 20 61 6E 20 61 72 65 20    3 below) an are 
010620:  70 61 73 73 65 64 20 75 70 20 66 72 6F 6D 20 74    passed up from t
010630:  68 65 0D 0A 20 20 20 20 20 20 20 6D 69 64 64 6C    he..       middl
010640:  65 20 6C 65 76 65 6C 20 77 68 65 6E 20 74 68 65    e level when the
010650:  79 20 61 72 65 20 66 6F 75 6E 64 20 69 6E 20 61    y are found in a
010660:  20 74 61 62 6C 65 2E 20 54 68 65 72 65 20 20 61     table. There  a
010670:  72 65 20 20 74 68 72 65 65 20 20 73 79 73 74 65    re  three  syste
010680:  6D 0D 0A 20 20 20 20 20 20 20 74 6F 6B 65 6E 73    m..       tokens
010690:  2C 20 77 68 69 63 68 20 61 72 65 20 6F 62 65 79    , which are obey
0106A0:  65 64 20 69 6D 6D 65 64 69 61 74 65 6C 79 20 74    ed immediately t
0106B0:  68 65 79 20 61 72 65 20 66 6F 75 6E 64 20 69 6E    hey are found in
0106C0:  20 61 20 74 61 62 6C 65 2E 20 20 41 66 74 65 72     a table.  After
0106D0:  0D 0A 20 20 20 20 20 20 20 6F 62 65 79 69 6E 67    ..       obeying
0106E0:  20 74 68 65 20 74 6F 6B 65 6E 20 20 74 68 65 20     the token  the 
0106F0:  20 6E 65 78 74 20 20 6D 61 72 6B 65 72 20 20 69     next  marker  i
010700:  73 20 20 72 65 61 64 20 20 66 72 6F 6D 20 20 74    s  read  from  t
010710:  68 65 20 20 62 75 66 66 65 72 20 20 61 6E 64 0D    he  buffer  and.
010720:  0A 20 20 20 20 20 20 20 74 72 61 6E 73 6C 61 74    .       translat
010730:  65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    ed.....       Th
010740:  65 20 64 65 66 61 75 6C 74 20 74 72 61 6E 73 6C    e default transl
010750:  61 74 69 6F 6E 20 74 61 62 6C 65 73 20 61 72 65    ation tables are
010760:  20 64 65 73 63 72 69 62 65 64 20 69 6E 20 41 70     described in Ap
010770:  70 65 6E 64 69 78 20 49 49 2E 0D 0A 0D 0A 20 20    pendix II.....  
010780:  20 20 20 20 20 54 68 65 20 69 6D 6D 65 64 69 61         The immedia
010790:  74 65 6C 79 20 6F 62 65 79 65 64 20 53 79 73 74    tely obeyed Syst
0107A0:  65 6D 20 74 6F 6B 65 6E 73 20 61 72 65 3A 0D 0A    em tokens are:..
0107B0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
0107C0:  20 20 61 2E 20 49 67 6E 6F 72 65 20 28 23 46 46      a. Ignore (#FF
0107D0:  29 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    )..             
0107E0:  20 20 20 54 68 65 20 6B 65 79 20 70 72 65 73 73       The key press
0107F0:  65 64 20 69 73 20 74 6F 20 62 65 20 69 67 6E 6F    ed is to be igno
010800:  72 65 64 2E 0D 0A 20 20 20 20 20 20 20 20 20 20    red...          
010810:  20 20 20 20 20 20 62 2E 20 53 68 69 66 74 20 6C          b. Shift l
010820:  6F 63 6B 20 28 23 46 45 29 0D 0A 20 20 20 20 20    ock (#FE)..     
010830:  20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 73               The s
010840:  68 69 66 74 20 6C 6F 63 6B 20 69 73 20 74 6F 20    hift lock is to 
010850:  62 65 20 74 6F 67 67 6C 65 64 20 28 74 75 72 6E    be toggled (turn
010860:  65 64 20 6F 6E 20 69 66 20 69 74 20 69 73 20 63    ed on if it is c
010870:  75 72 72 65 6E 74 6C 79 0D 0A 20 20 20 20 20 20    urrently..      
010880:  20 20 20 20 20 20 20 20 20 20 6F 66 66 20 61 6E              off an
010890:  64 20 74 75 72 6E 65 64 20 6F 66 66 20 69 66 20    d turned off if 
0108A0:  69 74 20 69 73 20 6F 6E 29 2E 0D 0A 20 20 20 20    it is on)...    
0108B0:  20 20 20 20 20 20 20 20 20 20 20 20 63 2E 20 43                c. C
0108C0:  61 70 73 20 6C 6F 63 6B 20 28 23 46 44 29 0D 0A    aps lock (#FD)..
0108D0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
0108E0:  20 20 54 68 65 20 63 61 70 73 20 6C 6F 63 6B 20      The caps lock 
0108F0:  69 73 20 74 6F 20 62 65 20 74 6F 67 67 6C 65 64    is to be toggled
010900:  20 28 74 75 72 6E 65 64 20 6F 6E 20 69 66 20 69     (turned on if i
010910:  74 20 20 69 73 20 20 6F 66 66 20 20 61 6E 64 0D    t  is  off  and.
010920:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
010930:  20 6F 66 66 20 69 66 20 69 74 20 69 73 20 6F 6E     off if it is on
010940:  29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 33 2E 33    ).....       3.3
010950:  20 43 68 61 72 61 63 74 65 72 73 20 66 72 6F 6D     Characters from
010960:  20 74 68 65 20 4B 65 79 62 6F 61 72 64 2E 0D 0A     the Keyboard...
010970:  20 20 20 20 20 20 20 57 68 65 6E 20 74 68 65 20           When the 
010980:  75 73 65 72 20 61 73 6B 73 20 74 68 65 20 74 6F    user asks the to
010990:  70 20 6C 65 76 65 6C 20 66 6F 72 20 61 20 63 68    p level for a ch
0109A0:  61 72 61 63 74 65 72 20 28 4B 4D 20 57 41 49 54    aracter (KM WAIT
0109B0:  20 43 48 41 52 20 20 6F 72 20 20 4B 4D 0D 0A 20     CHAR  or  KM.. 
0109C0:  20 20 20 20 20 20 52 45 41 44 20 43 48 41 52 29          READ CHAR)
0109D0:  20 61 20 6B 65 79 20 69 73 20 66 65 74 63 68 65     a key is fetche
0109E0:  64 20 66 72 6F 6D 20 20 74 68 65 20 20 6D 69 64    d from  the  mid
0109F0:  64 6C 65 20 20 6C 65 76 65 6C 2E 20 20 49 66 20    dle  level.  If 
010A00:  20 74 68 69 73 20 20 69 73 20 20 61 0D 0A 20 20     this  is  a..  
010A10:  20 20 20 20 20 63 68 61 72 61 63 74 65 72 20 28         character (
010A20:  23 30 30 2E 2E 23 37 46 20 6F 72 20 23 41 30 2E    #00..#7F or #A0.
010A30:  2E 23 46 43 29 20 74 68 65 6E 20 69 74 20 69 73    .#FC) then it is
010A40:  20 70 61 73 73 65 64 20 74 6F 20 74 68 65 20 75     passed to the u
010A50:  73 65 72 2E 20 49 66 20 20 69 74 0D 0A 20 20 20    ser. If  it..   
010A60:  20 20 20 20 69 73 20 20 6F 6E 65 20 20 6F 66 20        is  one  of 
010A70:  20 74 68 65 20 20 33 32 20 20 65 78 70 61 6E 73     the  32  expans
010A80:  69 6F 6E 20 20 74 6F 6B 65 6E 73 20 20 28 23 38    ion  tokens  (#8
010A90:  30 2E 2E 23 39 46 29 20 20 74 68 65 6E 20 20 74    0..#9F)  then  t
010AA0:  68 65 20 20 73 74 72 69 6E 67 0D 0A 20 20 20 20    he  string..    
010AB0:  20 20 20 61 73 73 6F 63 69 61 74 65 64 20 77 69       associated wi
010AC0:  74 68 20 74 68 65 20 74 6F 6B 65 6E 20 69 73 20    th the token is 
010AD0:  6C 6F 6F 6B 65 64 20 75 70 2E 20 54 68 65 20 63    looked up. The c
010AE0:  68 61 72 61 63 74 65 72 73 20 69 6E 20 74 68 69    haracters in thi
010AF0:  73 20 20 73 74 72 69 6E 67 0D 0A 20 20 20 20 20    s  string..     
010B00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
010B10:  0E 00 00 00 02 09 50 E5 0E 00 C1 02 00 00 00 02    ......P.........
010B20:  0E 00 C2 02 00 00 00 02 0E 00 C3 02 00 00 00 02    ................
010B30:  0E 00 C4 02 00 00 00 02 0E 00 C5 02 00 00 00 02    ................
010B40:  0E 00 C6 02 00 00 00 02 0E 00 C7 02 00 00 00 02    ................
010B50:  0E 00 C8 02 00 00 00 02 0E 00 C9 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 20 61 72 65 20 70 61 73 73 65 64 20 74 6F 20      are passed to 
010C10:  74 68 65 20 75 73 65 72 20 6F 6E 65 20 61 74 20    the user one at 
010C20:  61 20 74 69 6D 65 20 77 69 74 68 20 65 61 63 68    a time with each
010C30:  20 72 65 71 75 65 73 74 20 66 6F 72 20 61 20 63     request for a c
010C40:  68 61 72 61 63 74 65 72 0D 0A 20 20 20 20 20 20    haracter..      
010C50:  20 75 6E 74 69 6C 20 74 68 65 20 65 6E 64 20 6F     until the end o
010C60:  66 20 74 68 65 20 73 74 72 69 6E 67 20 69 73 20    f the string is 
010C70:  72 65 61 63 68 65 64 2E 0D 0A 0D 0A 20 20 20 20    reached.....    
010C80:  20 20 20 54 68 65 72 65 20 69 73 20 6F 6E 6C 79       There is only
010C90:  20 6F 6E 65 20 63 68 61 72 61 63 74 65 72 20 77     one character w
010CA0:  69 74 68 20 61 20 73 70 65 63 69 61 6C 20 6D 65    ith a special me
010CB0:  61 6E 69 6E 67 20 61 74 20 74 68 69 73 20 6C 65    aning at this le
010CC0:  76 65 6C 2E 20 54 68 69 73 0D 0A 20 20 20 20 20    vel. This..     
010CD0:  20 20 69 73 20 63 68 61 72 61 63 74 65 72 20 23      is character #
010CE0:  45 46 20 77 68 69 63 68 20 20 69 73 20 20 70 72    EF which  is  pr
010CF0:  6F 64 75 63 65 64 20 20 77 68 65 6E 20 20 70 72    oduced  when  pr
010D00:  65 73 73 69 6E 67 20 20 74 68 65 20 20 65 73 63    essing  the  esc
010D10:  61 70 65 20 20 6B 65 79 0D 0A 20 20 20 20 20 20    ape  key..      
010D20:  20 67 65 6E 65 72 61 74 65 73 20 61 20 62 72 65     generates a bre
010D30:  61 6B 20 65 76 65 6E 74 20 28 73 65 65 20 73 65    ak event (see se
010D40:  63 74 69 6F 6E 20 33 2E 36 29 2E 20 49 74 20 68    ction 3.6). It h
010D50:  61 73 20 6E 6F 20 20 65 66 66 65 63 74 73 2C 20    as no  effects, 
010D60:  20 69 74 20 20 69 73 0D 0A 20 20 20 20 20 20 20     it  is..       
010D70:  6D 65 72 65 6C 79 20 61 20 6D 61 72 6B 65 72 20    merely a marker 
010D80:  66 6F 72 20 74 68 65 20 70 6C 61 63 65 20 69 6E    for the place in
010D90:  20 74 68 65 20 62 75 66 66 65 72 20 77 68 65 72     the buffer wher
010DA0:  65 20 61 20 20 62 72 65 61 6B 20 20 65 76 65 6E    e a  break  even
010DB0:  74 20 20 77 61 73 0D 0A 20 20 20 20 20 20 20 67    t  was..       g
010DC0:  65 6E 65 72 61 74 65 64 2E 20 49 74 20 69 73 20    enerated. It is 
010DD0:  69 6E 74 65 6E 64 65 64 20 74 6F 20 62 65 20 75    intended to be u
010DE0:  73 65 64 20 74 6F 20 61 6C 6C 6F 77 20 20 61 6C    sed to allow  al
010DF0:  6C 20 20 63 68 61 72 61 63 74 65 72 73 20 20 62    l  characters  b
010E00:  65 66 6F 72 65 0D 0A 20 20 20 20 20 20 20 74 68    efore..       th
010E10:  65 20 62 72 65 61 6B 20 74 6F 20 62 65 20 64 69    e break to be di
010E20:  73 63 61 72 64 65 64 2E 20 54 68 69 73 20 63 68    scarded. This ch
010E30:  61 72 61 63 74 65 72 20 20 69 73 20 20 6E 6F 74    aracter  is  not
010E40:  20 20 67 65 6E 65 72 61 74 65 64 20 20 62 79 20      generated  by 
010E50:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 74 72 61     the..       tra
010E60:  6E 73 6C 61 74 69 6F 6E 20 74 61 62 6C 65 73 20    nslation tables 
010E70:  61 6E 64 20 74 68 75 73 20 63 61 6E 6E 6F 74 20    and thus cannot 
010E80:  62 65 20 63 68 61 6E 67 65 64 20 62 79 20 61 6C    be changed by al
010E90:  74 65 72 69 6E 67 20 74 68 65 6D 2E 0D 0A 0D 0A    tering them.....
010EA0:  20 20 20 20 20 20 20 41 20 73 69 6E 67 6C 65 20           A single 
010EB0:  27 70 75 74 20 62 61 63 6B 27 20 63 68 61 72 61    'put back' chara
010EC0:  63 74 65 72 20 69 73 20 73 75 70 70 6F 72 74 65    cter is supporte
010ED0:  64 2E 20 57 68 65 6E 20 74 68 65 20 75 73 65 72    d. When the user
010EE0:  20 70 75 74 73 20 62 61 63 6B 20 20 61 0D 0A 20     puts back  a.. 
010EF0:  20 20 20 20 20 20 63 68 61 72 61 63 74 65 72 20          character 
010F00:  74 68 69 73 20 63 68 61 72 61 63 74 65 72 20 77    this character w
010F10:  69 6C 6C 20 62 65 20 72 65 74 75 72 6E 65 64 20    ill be returned 
010F20:  62 79 20 74 68 65 20 6E 65 78 74 20 63 61 6C 6C    by the next call
010F30:  20 74 6F 20 74 68 65 20 20 74 6F 70 0D 0A 20 20     to the  top..  
010F40:  20 20 20 20 20 6C 65 76 65 6C 20 6F 66 20 74 68         level of th
010F50:  65 20 4B 65 79 20 4D 61 6E 61 67 65 72 2E 20 54    e Key Manager. T
010F60:  68 69 73 20 69 73 20 69 6E 74 65 6E 64 65 64 20    his is intended 
010F70:  66 6F 72 20 75 73 65 20 20 62 79 20 20 70 72 6F    for use  by  pro
010F80:  67 72 61 6D 73 20 20 74 68 61 74 0D 0A 20 20 20    grams  that..   
010F90:  20 20 20 20 6E 65 65 64 20 74 6F 20 74 65 73 74        need to test
010FA0:  20 74 68 65 20 6E 65 78 74 20 63 68 61 72 61 63     the next charac
010FB0:  74 65 72 20 74 6F 20 62 65 20 72 65 61 64 20 66    ter to be read f
010FC0:  72 6F 6D 20 74 68 65 20 20 6B 65 79 62 6F 61 72    rom the  keyboar
010FD0:  64 20 20 77 69 74 68 6F 75 74 0D 0A 20 20 20 20    d  without..    
010FE0:  20 20 20 6C 6F 73 69 6E 67 20 69 74 20 28 77 68       losing it (wh
010FF0:  65 6E 20 70 72 6F 63 65 73 73 69 6E 67 20 62 72    en processing br
011000:  65 61 6B 73 20 70 65 72 68 61 70 73 29 2E 0D 0A    eaks perhaps)...
011010:  0D 0A 20 20 20 20 20 20 20 49 6E 20 56 31 2E 31    ..       In V1.1
011020:  20 66 69 72 6D 77 61 72 65 20 69 74 20 69 73 20     firmware it is 
011030:  70 6F 73 73 69 62 6C 65 20 74 6F 20 63 61 6C 6C    possible to call
011040:  20 4B 4D 20 46 4C 55 53 48 20 74 6F 20 64 69 73     KM FLUSH to dis
011050:  63 61 72 64 20 61 6E 79 20 75 6E 75 73 65 64 0D    card any unused.
011060:  0A 20 20 20 20 20 20 20 6F 72 20 75 6E 77 61 6E    .       or unwan
011070:  74 65 64 20 63 68 61 72 61 63 74 65 72 73 20 73    ted characters s
011080:  6F 20 74 68 61 74 20 73 75 62 73 65 71 75 65 6E    o that subsequen
011090:  74 20 63 61 6C 6C 73 20 74 6F 20 4B 4D 20 52 45    t calls to KM RE
0110A0:  41 44 20 43 48 41 52 20 6F 72 20 20 4B 4D 0D 0A    AD CHAR or  KM..
0110B0:  20 20 20 20 20 20 20 52 45 41 44 20 4B 45 59 20           READ KEY 
0110C0:  77 69 6C 6C 20 6E 6F 74 20 72 65 74 75 72 6E 20    will not return 
0110D0:  76 61 6C 75 65 73 20 66 72 6F 6D 20 61 20 70 72    values from a pr
0110E0:  65 76 69 6F 75 73 20 69 6E 70 75 74 2E 20 54 68    evious input. Th
0110F0:  65 20 73 61 6D 65 20 65 66 66 65 63 74 0D 0A 20    e same effect.. 
011100:  20 20 20 20 20 20 63 61 6E 20 62 65 20 61 63 68          can be ach
011110:  69 65 76 65 64 20 69 6E 20 56 31 2E 30 20 46 69    ieved in V1.0 Fi
011120:  72 6D 77 61 72 65 20 62 79 20 72 65 70 65 61 74    rmware by repeat
011130:  65 64 6C 79 20 63 61 6C 6C 69 6E 67 20 20 4B 4D    edly calling  KM
011140:  20 20 52 45 41 44 20 20 43 48 41 52 0D 0A 20 20      READ  CHAR..  
011150:  20 20 20 20 20 75 6E 74 69 6C 20 69 74 20 72 65         until it re
011160:  74 75 72 6E 73 20 77 69 74 68 20 63 61 72 72 79    turns with carry
011170:  20 66 61 6C 73 65 20 74 6F 20 69 6E 64 69 63 61     false to indica
011180:  74 65 20 74 68 61 74 20 74 68 65 72 65 20 61 72    te that there ar
011190:  65 20 20 6E 6F 20 20 6D 6F 72 65 0D 0A 20 20 20    e  no  more..   
0111A0:  20 20 20 20 63 68 61 72 61 63 74 65 72 73 20 61        characters a
0111B0:  76 61 69 6C 61 62 6C 65 2E 0D 0A 20 20 20 20 20    vailable...     
0111C0:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
0111D0:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
0111E0:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
0111F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
011200:  70 61 67 65 20 33 2E 32 0D 0A 0D 0A 0D 0A 0D 0A    page 3.2........
011210:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 33 2E 34    ......       3.4
011220:  20 53 68 69 66 74 20 61 6E 64 20 43 61 70 73 20     Shift and Caps 
011230:  4C 6F 63 6B 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    Lock.....       
011240:  61 2E 20 53 68 69 66 74 20 6C 6F 63 6B 0D 0A 0D    a. Shift lock...
011250:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
011260:  20 57 68 65 6E 20 20 73 68 69 66 74 20 20 6C 6F     When  shift  lo
011270:  63 6B 20 20 69 73 20 20 65 6E 67 61 67 65 64 20    ck  is  engaged 
011280:  20 74 68 65 6E 20 20 74 68 65 20 20 6B 65 79 73     then  the  keys
011290:  20 20 70 72 65 73 73 65 64 20 20 61 72 65 0D 0A      pressed  are..
0112A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0112B0:  74 72 61 6E 73 6C 61 74 65 64 20 61 73 20 69 66    translated as if
0112C0:  20 61 20 73 68 69 66 74 20 6B 65 79 20 69 73 20     a shift key is 
0112D0:  70 72 65 73 73 65 64 2E 0D 0A 0D 0A 20 20 20 20    pressed.....    
0112E0:  20 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20                The 
0112F0:  73 68 69 66 74 20 6C 6F 63 6B 20 69 73 20 74 6F    shift lock is to
011300:  67 67 6C 65 64 20 62 79 20 61 20 73 74 72 65 61    ggled by a strea
011310:  6D 20 74 6F 6B 65 6E 20 28 73 65 65 20 20 33 2E    m token (see  3.
011320:  32 20 20 61 62 6F 76 65 29 0D 0A 20 20 20 20 20    2  above)..     
011330:  20 20 20 20 20 20 20 20 20 20 20 77 68 69 63 68               which
011340:  20 69 73 20 6E 6F 72 6D 61 6C 6C 79 20 67 65 6E     is normally gen
011350:  65 72 61 74 65 64 20 62 79 20 70 72 65 73 73 69    erated by pressi
011360:  6E 67 20 43 54 52 4C 20 61 6E 64 20 43 41 50 53    ng CTRL and CAPS
011370:  20 4C 4F 43 4B 2E 0D 0A 0D 0A 20 20 20 20 20 20     LOCK.....      
011380:  20 62 2E 20 43 61 70 73 20 6C 6F 63 6B 0D 0A 0D     b. Caps lock...
011390:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
0113A0:  20 57 68 65 6E 20 63 61 70 73 20 6C 6F 63 6B 20     When caps lock 
0113B0:  69 73 20 65 6E 67 61 67 65 64 20 20 74 68 65 6E    is engaged  then
0113C0:  20 20 61 6C 70 68 61 62 65 74 69 63 20 20 63 68      alphabetic  ch
0113D0:  61 72 61 63 74 65 72 73 20 20 72 65 61 64 0D 0A    aracters  read..
0113E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0113F0:  66 72 6F 6D 20 20 74 68 65 20 20 6B 65 79 62 6F    from  the  keybo
011400:  61 72 64 20 20 61 72 65 20 20 63 6F 6E 76 65 72    ard  are  conver
011410:  74 65 64 20 20 74 6F 20 20 74 68 65 69 72 20 20    ted  to  their  
011420:  20 75 70 70 65 72 20 20 20 63 61 73 65 0D 0A 20     upper   case.. 
011430:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                   e
011440:  71 75 69 76 61 6C 65 6E 74 73 2E 20 54 68 69 73    quivalents. This
011450:  20 63 61 73 65 20 63 6F 6E 76 65 72 73 69 6F 6E     case conversion
011460:  20 20 69 73 20 20 61 70 70 6C 69 65 64 20 20 62      is  applied  b
011470:  65 20 20 65 78 70 61 6E 73 69 6F 6E 0D 0A 20 20    e  expansion..  
011480:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6F                  to
011490:  6B 65 6E 73 20 61 72 65 20 65 78 70 61 6E 64 65    kens are expande
0114A0:  64 20 61 6E 64 20 73 6F 20 65 78 70 61 6E 73 69    d and so expansi
0114B0:  6F 6E 73 20 61 72 65 20 6E 6F 74 20 63 61 70 69    ons are not capi
0114C0:  74 61 6C 69 73 65 64 2E 0D 0A 0D 0A 20 20 20 20    talised.....    
0114D0:  20 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20                The 
0114E0:  63 61 70 73 20 6C 6F 63 6B 20 69 73 20 74 6F 67    caps lock is tog
0114F0:  67 6C 65 64 20 62 79 20 61 20 73 79 73 74 65 6D    gled by a system
011500:  20 74 6F 6B 65 6E 20 20 28 73 65 65 20 20 33 2E     token  (see  3.
011510:  32 20 20 61 62 6F 76 65 29 0D 0A 20 20 20 20 20    2  above)..     
011520:  20 20 20 20 20 20 20 20 20 20 20 77 68 69 63 68               which
011530:  20 69 73 20 6E 6F 72 6D 61 6C 6C 79 20 67 65 6E     is normally gen
011540:  65 72 61 74 65 64 20 62 79 20 70 72 65 73 73 69    erated by pressi
011550:  6E 67 20 20 43 41 50 53 20 20 4C 4F 43 4B 20 20    ng  CAPS  LOCK  
011560:  28 77 69 74 68 6F 75 74 0D 0A 20 20 20 20 20 20    (without..      
011570:  20 20 20 20 20 20 20 20 20 20 63 6F 6E 74 72 6F              contro
011580:  6C 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 49 6E    l).....       In
011590:  20 56 31 2E 31 20 66 69 72 6D 77 61 72 65 20 69     V1.1 firmware i
0115A0:  74 20 69 73 20 70 6F 73 73 69 62 6C 65 20 74 6F    t is possible to
0115B0:  20 73 65 74 20 74 68 65 20 73 74 61 74 65 20 6F     set the state o
0115C0:  66 20 74 68 65 20 20 6C 6F 63 6B 73 20 20 61 73    f the  locks  as
0115D0:  20 20 69 66 0D 0A 20 20 20 20 20 20 20 74 68 65      if..       the
0115E0:  20 53 48 49 46 54 20 6F 72 20 43 41 50 53 20 4C     SHIFT or CAPS L
0115F0:  4F 43 4B 20 6B 65 79 73 20 68 61 64 20 62 65 65    OCK keys had bee
011600:  6E 20 70 72 65 73 73 65 64 20 62 79 20 63 61 6C    n pressed by cal
011610:  6C 69 6E 67 20 4B 4D 20 53 45 54 20 4C 4F 43 4B    ling KM SET LOCK
011620:  53 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 33 2E 35    S.....       3.5
011630:  20 52 65 70 65 61 74 69 6E 67 20 6B 65 79 73 2E     Repeating keys.
011640:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 72 65    ....       There
011650:  20 69 73 20 61 20 74 61 62 6C 65 20 77 68 69 63     is a table whic
011660:  68 20 74 68 65 20 75 73 65 72 20 63 61 6E 20 61    h the user can a
011670:  6C 74 65 72 20 61 73 20 64 65 73 69 72 65 64 2C    lter as desired,
011680:  20 20 74 68 61 74 20 20 73 70 65 63 69 66 69 65      that  specifie
011690:  73 0D 0A 20 20 20 20 20 20 20 77 68 69 63 68 20    s..       which 
0116A0:  6B 65 79 73 20 61 72 65 20 61 6C 6C 6F 77 65 64    keys are allowed
0116B0:  20 74 6F 20 72 65 70 65 61 74 20 77 68 65 6E 20     to repeat when 
0116C0:  68 65 6C 64 20 64 6F 77 6E 20 28 73 65 65 20 4B    held down (see K
0116D0:  4D 20 20 53 45 54 20 20 52 45 50 45 41 54 29 2E    M  SET  REPEAT).
0116E0:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 64 65 66    ..       The def
0116F0:  61 75 6C 74 20 73 65 74 74 69 6E 67 20 66 6F 72    ault setting for
011700:  20 74 68 69 73 20 20 74 61 62 6C 65 20 20 69 73     this  table  is
011710:  20 20 64 65 73 63 72 69 62 65 64 20 20 69 6E 20      described  in 
011720:  20 41 70 70 65 6E 64 69 78 20 20 49 49 49 2E 0D     Appendix  III..
011730:  0A 20 20 20 20 20 20 20 42 72 69 65 66 6C 79 2C    .       Briefly,
011740:  20 74 68 65 20 64 65 66 61 75 6C 74 20 69 73 20     the default is 
011750:  74 6F 20 61 6C 6C 6F 77 20 61 6C 6C 20 6B 65 79    to allow all key
011760:  73 20 74 6F 20 72 65 70 65 61 74 20 20 65 78 63    s to repeat  exc
011770:  65 70 74 20 20 74 68 65 20 20 45 53 43 2C 0D 0A    ept  the  ESC,..
011780:  20 20 20 20 20 20 20 54 41 42 20 43 41 50 53 20           TAB CAPS 
011790:  4C 4F 43 4B 2C 20 53 48 49 46 54 2C 20 45 4E 54    LOCK, SHIFT, ENT
0117A0:  45 52 20 61 6E 64 20 43 54 52 4C 20 6B 65 79 73    ER and CTRL keys
0117B0:  20 20 61 6E 64 20 20 74 68 65 20 20 31 32 20 20      and  the  12  
0117C0:  6B 65 79 73 20 20 69 6E 20 20 74 68 65 0D 0A 20    keys  in  the.. 
0117D0:  20 20 20 20 20 20 6E 75 6D 65 72 69 63 20 6B 65          numeric ke
0117E0:  79 70 61 64 20 28 74 68 65 20 66 75 6E 63 74 69    ypad (the functi
0117F0:  6F 6E 20 6B 65 79 73 29 2E 0D 0A 0D 0A 20 20 20    on keys).....   
011800:  20 20 20 20 54 68 65 20 73 70 65 65 64 20 61 74        The speed at
011810:  20 77 68 69 63 68 20 6B 65 79 73 20 72 65 70 65     which keys repe
011820:  61 74 20 61 6E 64 20 74 68 65 20 64 65 6C 61 79    at and the delay
011830:  20 62 65 66 6F 72 65 20 74 68 65 20 20 66 69 72     before the  fir
011840:  73 74 20 20 72 65 70 65 61 74 0D 0A 20 20 20 20    st  repeat..    
011850:  20 20 20 63 61 6E 20 62 65 20 73 65 74 20 62 79       can be set by
011860:  20 74 68 65 20 75 73 65 72 20 28 73 65 65 20 4B     the user (see K
011870:  4D 20 53 45 54 20 44 45 4C 41 59 29 2E 20 54 68    M SET DELAY). Th
011880:  65 20 64 65 66 61 75 6C 74 20 73 70 65 65 64 20    e default speed 
011890:  20 70 72 6F 64 75 63 65 73 0D 0A 20 20 20 20 20     produces..     
0118A0:  20 20 75 70 20 74 6F 20 32 35 20 63 68 61 72 61      up to 25 chara
0118B0:  63 74 65 72 73 20 61 20 73 65 63 6F 6E 64 20 77    cters a second w
0118C0:  69 74 68 20 61 20 30 2E 36 20 73 65 63 6F 6E 64    ith a 0.6 second
0118D0:  20 73 74 61 72 74 20 75 70 20 64 65 6C 61 79 2E     start up delay.
0118E0:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 20 6B 65 79    ....       A key
0118F0:  20 69 73 20 61 6C 6C 6F 77 65 64 20 74 6F 20 72     is allowed to r
011900:  65 70 65 61 74 20 69 66 20 74 68 65 20 66 6F 6C    epeat if the fol
011910:  6C 6F 77 69 6E 67 20 63 6F 6E 64 69 74 69 6F 6E    lowing condition
011920:  73 20 61 72 65 20 73 61 74 69 73 66 69 65 64 3A    s are satisfied:
011930:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
011940:  20 20 20 20 31 2F 20 54 68 65 20 61 70 70 72 6F        1/ The appro
011950:  70 72 69 61 74 65 20 74 69 6D 65 20 68 61 73 20    priate time has 
011960:  70 61 73 73 65 64 20 73 69 6E 63 65 20 74 68 65    passed since the
011970:  20 20 6B 65 79 20 20 77 61 73 20 20 66 69 72 73      key  was  firs
011980:  74 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    t..             
011990:  20 20 20 70 72 65 73 73 65 64 20 6F 72 20 69 74       pressed or it
0119A0:  20 6C 61 73 74 20 72 65 70 65 61 74 65 64 2E 0D     last repeated..
0119B0:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
0119C0:  20 20 20 32 2F 20 54 68 65 20 6B 65 79 20 69 73       2/ The key is
0119D0:  20 73 74 69 6C 6C 20 70 72 65 73 73 65 64 2E 0D     still pressed..
0119E0:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
0119F0:  20 20 20 33 2F 20 4E 6F 20 6F 74 68 65 72 20 6B       3/ No other k
011A00:  65 79 20 68 61 73 20 62 65 65 6E 20 70 72 65 73    ey has been pres
011A10:  73 65 64 20 20 73 69 6E 63 65 20 20 74 68 65 20    sed  since  the 
011A20:  20 6B 65 79 20 20 77 61 73 20 20 66 69 72 73 74     key  was  first
011A30:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
011A40:  20 20 70 72 65 73 73 65 64 2E 0D 0A 0D 0A 20 20      pressed.....  
011A50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 34 2F                  4/
011A60:  20 54 68 65 20 6B 65 79 20 69 73 20 6D 61 72 6B     The key is mark
011A70:  65 64 20 61 73 20 20 61 6C 6C 6F 77 65 64 20 20    ed as  allowed  
011A80:  74 6F 20 20 72 65 70 65 61 74 20 20 69 6E 20 20    to  repeat  in  
011A90:  74 68 65 20 20 72 65 70 65 61 74 0D 0A 20 20 20    the  repeat..   
011AA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 74 61 62                 tab
011AB0:  6C 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    le.....         
011AC0:  20 20 20 20 20 20 20 35 2F 20 54 68 65 72 65 20           5/ There 
011AD0:  61 72 65 20 6E 6F 20 6B 65 79 73 20 73 74 6F 72    are no keys stor
011AE0:  65 64 20 69 6E 20 74 68 65 20 6B 65 79 20 62 75    ed in the key bu
011AF0:  66 66 65 72 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    ffer.....       
011B00:  43 6F 6E 64 69 74 69 6F 6E 20 35 20 61 62 6F 76    Condition 5 abov
011B10:  65 20 6D 65 61 6E 73 20 74 68 61 74 20 74 68 65    e means that the
011B20:  20 72 65 70 65 61 74 20 73 70 65 65 64 20 61 6E     repeat speed an
011B30:  64 20 73 74 61 72 74 20 75 70 20 20 64 65 6C 61    d start up  dela
011B40:  79 20 20 73 65 74 0D 0A 20 20 20 20 20 20 20 74    y  set..       t
011B50:  68 65 20 6D 61 78 69 6D 75 6D 20 73 70 65 65 64    he maximum speed
011B60:  20 61 74 20 77 68 69 63 68 20 61 20 6B 65 79 20     at which a key 
011B70:  69 73 20 61 6C 6C 6F 77 65 64 20 74 6F 20 72 65    is allowed to re
011B80:  70 65 61 74 2E 20 49 66 20 61 20 70 72 6F 67 72    peat. If a progr
011B90:  61 6D 20 69 73 0D 0A 20 20 20 20 20 20 20 73 6C    am is..       sl
011BA0:  6F 77 20 61 62 6F 75 74 20 72 65 6D 6F 76 69 6E    ow about removin
011BB0:  67 20 6B 65 79 73 20 66 72 6F 6D 20 74 68 65 20    g keys from the 
011BC0:  62 75 66 66 65 72 20 74 68 65 6E 20 74 68 65 20    buffer then the 
011BD0:  67 65 6E 65 72 61 74 69 6F 6E 20 20 6F 66 20 20    generation  of  
011BE0:  6B 65 79 73 0D 0A 20 20 20 20 20 20 20 77 69 6C    keys..       wil
011BF0:  6C 20 61 64 6A 75 73 74 20 69 74 73 65 6C 66 20    l adjust itself 
011C00:  74 6F 20 74 68 69 73 2E 20 54 68 75 73 20 69 74    to this. Thus it
011C10:  20 20 69 73 20 20 69 6D 70 6F 73 73 69 62 6C 65      is  impossible
011C20:  20 20 74 6F 20 20 67 65 74 20 20 61 20 20 6C 61      to  get  a  la
011C30:  72 67 65 0D 0A 20 20 20 20 20 20 20 6E 75 6D 62    rge..       numb
011C40:  65 72 20 6F 66 20 6B 65 79 73 20 73 74 6F 72 65    er of keys store
011C50:  64 20 69 6E 20 74 68 65 20 62 75 66 66 65 72 20    d in the buffer 
011C60:  73 69 6D 70 6C 79 20 62 79 20 68 6F 6C 64 69 6E    simply by holdin
011C70:  67 20 61 20 6B 65 79 20 70 72 65 73 73 65 64 2E    g a key pressed.
011C80:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53    ......       AMS
011C90:  54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F    TRAD CPC464/664/
011CA0:  36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20    6128 FIRMWARE   
011CB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
011CC0:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
011CD0:  33 2E 33 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    3.3.............
011CE0:  0A 20 20 20 20 20 20 20 33 2E 36 20 42 72 65 61    .       3.6 Brea
011CF0:  6B 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 42 72    ks.....       Br
011D00:  65 61 6B 73 20 6F 63 63 75 72 20 77 68 65 6E 20    eaks occur when 
011D10:  74 68 65 20 6B 65 79 62 6F 61 72 64 20 73 63 61    the keyboard sca
011D20:  6E 6E 65 72 20 64 65 74 65 63 74 73 20 74 68 61    nner detects tha
011D30:  74 20 20 74 68 65 20 20 45 53 43 20 20 6B 65 79    t  the  ESC  key
011D40:  20 20 69 73 0D 0A 20 20 20 20 20 20 20 70 72 65      is..       pre
011D50:  73 73 65 64 2E 20 57 68 65 6E 20 74 68 65 20 65    ssed. When the e
011D60:  73 63 61 70 65 20 6B 65 79 20 69 73 20 66 6F 75    scape key is fou
011D70:  6E 64 20 74 6F 20 62 65 20 70 72 65 73 73 65 64    nd to be pressed
011D80:  20 74 68 65 20 69 6E 64 69 72 65 63 74 69 6F 6E     the indirection
011D90:  20 4B 4D 0D 0A 20 20 20 20 20 20 20 54 45 53 54     KM..       TEST
011DA0:  20 42 52 45 41 4B 20 69 73 20 63 61 6C 6C 65 64     BREAK is called
011DB0:  20 74 6F 20 64 65 61 6C 20 77 69 74 68 20 74 68     to deal with th
011DC0:  65 20 62 72 65 61 6B 2E 20 54 68 65 20 64 65 66    e break. The def
011DD0:  61 75 6C 74 20 20 73 65 74 74 69 6E 67 20 20 66    ault  setting  f
011DE0:  6F 72 0D 0A 20 20 20 20 20 20 20 74 68 69 73 20    or..       this 
011DF0:  72 6F 75 74 69 6E 65 20 74 65 73 74 73 20 77 68    routine tests wh
011E00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
011E10:  0F 00 00 00 02 09 50 E5 0F 00 C1 02 00 00 00 02    ......P.........
011E20:  0F 00 C2 02 00 00 00 02 0F 00 C3 02 00 00 00 02    ................
011E30:  0F 00 C4 02 00 00 00 02 0F 00 C5 02 00 00 00 02    ................
011E40:  0F 00 C6 02 00 00 00 02 0F 00 C7 02 00 00 00 02    ................
011E50:  0F 00 C8 02 00 00 00 02 0F 00 C9 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:  65 74 68 65 72 20 74 68 65 20 53 48 49 46 54 2C    ether the SHIFT,
011F10:  20 43 54 52 4C 20 61 6E 64 20 45 53 43 20 6B 65     CTRL and ESC ke
011F20:  79 73 20 61 6E 64 20 6E 6F 20 20 6F 74 68 65 72    ys and no  other
011F30:  73 0D 0A 20 20 20 20 20 20 20 61 72 65 20 70 72    s..       are pr
011F40:  65 73 73 65 64 2E 20 49 66 20 73 6F 20 74 68 65    essed. If so the
011F50:  20 73 79 73 74 65 6D 20 69 73 20 20 72 65 73 65     system is  rese
011F60:  74 20 20 28 62 79 20 20 65 78 65 63 75 74 69 6E    t  (by  executin
011F70:  67 20 20 61 6E 64 20 20 52 53 54 20 20 30 29 2C    g  and  RST  0),
011F80:  0D 0A 20 20 20 20 20 20 20 6F 74 68 65 72 77 69    ..       otherwi
011F90:  73 65 20 74 68 65 20 62 72 65 61 6B 20 6D 65 63    se the break mec
011FA0:  68 61 6E 69 73 6D 20 69 73 20 69 6E 76 6F 6B 65    hanism is invoke
011FB0:  64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49    d.......       I
011FC0:  74 20 74 68 65 20 62 72 65 61 6B 20 6D 65 63 68    t the break mech
011FD0:  61 6E 69 73 6D 20 69 73 20 64 69 73 61 72 6D 65    anism is disarme
011FE0:  64 20 74 68 65 6E 20 6E 6F 20 61 63 74 69 6F 6E    d then no action
011FF0:  20 69 73 20 74 61 6B 65 6E 20 6F 74 68 65 72 20     is taken other 
012000:  20 74 68 61 6E 0D 0A 20 20 20 20 20 20 20 74 68     than..       th
012010:  65 20 6E 6F 72 6D 61 6C 20 69 6E 73 65 72 74 69    e normal inserti
012020:  6F 6E 20 6F 66 20 74 68 65 20 6D 61 72 6B 65 72    on of the marker
012030:  20 66 6F 72 20 74 68 65 20 65 73 63 61 70 65 20     for the escape 
012040:  20 6B 65 79 20 20 69 6E 74 6F 20 20 74 68 65 20     key  into  the 
012050:  20 6B 65 79 0D 0A 20 20 20 20 20 20 20 62 75 66     key..       buf
012060:  66 65 72 2E 20 49 66 20 74 68 65 20 62 72 65 61    fer. If the brea
012070:  6B 20 6D 65 63 68 61 6E 69 73 6D 20 69 73 20 61    k mechanism is a
012080:  72 6D 65 64 20 74 68 65 6E 20 74 77 6F 20 61 64    rmed then two ad
012090:  64 69 74 69 6F 6E 61 6C 20 6F 70 65 72 61 74 69    ditional operati
0120A0:  6F 6E 73 0D 0A 20 20 20 20 20 20 20 74 61 6B 65    ons..       take
0120B0:  20 70 6C 61 63 65 2E 20 46 69 72 73 74 6C 79 2C     place. Firstly,
0120C0:  20 61 20 73 70 65 63 69 61 6C 20 6D 61 72 6B 65     a special marke
0120D0:  72 20 69 73 20 70 6C 61 63 65 64 20 69 6E 74 6F    r is placed into
0120E0:  20 20 74 68 65 20 20 6B 65 79 20 20 62 75 66 66      the  key  buff
0120F0:  65 72 0D 0A 20 20 20 20 20 20 20 74 68 61 74 20    er..       that 
012100:  77 69 6C 6C 20 67 65 6E 65 72 61 74 65 20 63 68    will generate ch
012110:  61 72 61 63 74 65 72 20 23 45 46 20 77 68 65 6E    aracter #EF when
012120:  20 69 74 20 69 73 20 66 6F 75 6E 64 20 28 69 72     it is found (ir
012130:  72 65 73 70 65 63 74 69 76 65 20 6F 66 20 74 68    respective of th
012140:  65 0D 0A 20 20 20 20 20 20 20 74 72 61 6E 73 6C    e..       transl
012150:  61 74 69 6F 6E 20 74 61 62 6C 65 73 29 2E 20 20    ation tables).  
012160:  54 68 69 73 20 20 69 73 20 20 69 6E 74 65 6E 64    This  is  intend
012170:  65 64 20 20 74 6F 20 20 62 65 20 20 75 73 65 64    ed  to  be  used
012180:  20 20 74 6F 20 20 61 6C 6C 6F 77 20 20 74 68 65      to  allow  the
012190:  0D 0A 20 20 20 20 20 20 20 63 68 61 72 61 63 74    ..       charact
0121A0:  65 72 73 20 77 68 69 63 68 20 77 65 72 65 20 69    ers which were i
0121B0:  6E 20 74 68 65 20 62 75 66 66 65 72 20 62 65 66    n the buffer bef
0121C0:  6F 72 65 20 74 68 65 20 62 72 65 61 6B 20 20 6F    ore the break  o
0121D0:  63 63 75 72 72 65 64 20 20 74 6F 20 20 62 65 0D    ccurred  to  be.
0121E0:  0A 20 20 20 20 20 20 20 64 69 73 63 61 72 64 65    .       discarde
0121F0:  64 2E 20 53 65 63 6F 6E 64 6C 79 2C 20 74 68 65    d. Secondly, the
012200:  20 73 79 6E 63 68 72 6F 6E 6F 75 73 20 62 72 65     synchronous bre
012210:  61 6B 20 65 76 65 6E 74 20 69 73 20 27 6B 69 63    ak event is 'kic
012220:  6B 65 64 27 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ked'.......     
012230:  20 20 54 68 65 20 62 72 65 61 6B 20 6D 65 63 68      The break mech
012240:  61 6E 69 73 6D 20 63 61 6E 20 62 65 20 61 72 6D    anism can be arm
012250:  65 64 20 6F 72 20 64 69 73 61 72 6D 65 64 20 61    ed or disarmed a
012260:  74 20 61 6E 79 20 74 69 6D 65 20 20 28 62 79 20    t any time  (by 
012270:  20 63 61 6C 6C 69 6E 67 0D 0A 20 20 20 20 20 20     calling..      
012280:  20 4B 4D 20 41 52 4D 20 42 52 45 41 4B 20 6F 72     KM ARM BREAK or
012290:  20 4B 4D 20 44 49 53 41 52 4D 20 42 52 45 41 4B     KM DISARM BREAK
0122A0:  29 2E 20 54 68 65 20 64 65 66 61 75 6C 74 20 73    ). The default s
0122B0:  74 61 74 65 20 69 73 20 64 69 73 61 72 6D 65 64    tate is disarmed
0122C0:  2E 20 20 57 68 65 6E 0D 0A 20 20 20 20 20 20 20    .  When..       
0122D0:  61 20 62 72 65 61 6B 20 69 73 20 64 65 74 65 63    a break is detec
0122E0:  74 65 64 20 74 68 65 20 20 6D 65 63 68 61 6E 69    ted the  mechani
0122F0:  73 6D 20 20 69 73 20 20 64 69 73 61 72 6D 65 64    sm  is  disarmed
012300:  20 20 61 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20      automatically 
012310:  20 77 68 69 63 68 0D 0A 20 20 20 20 20 20 20 70     which..       p
012320:  72 65 76 65 6E 74 73 20 6D 75 6C 74 69 70 6C 65    revents multiple
012330:  20 62 72 65 61 6B 73 20 66 72 6F 6D 20 6F 63 63     breaks from occ
012340:  75 72 72 69 6E 67 2E 0D 0A 0D 0A 0D 0A 20 20 20    urring.......   
012350:  20 20 20 20 54 68 65 20 6D 65 74 68 6F 64 20 42        The method B
012360:  41 53 49 43 20 75 73 65 73 20 74 6F 20 68 61 6E    ASIC uses to han
012370:  64 6C 65 20 62 72 65 61 6B 73 20 73 68 6F 75 6C    dle breaks shoul
012380:  64 20 73 65 72 76 65 20 20 61 73 20 20 61 20 20    d serve  as  a  
012390:  6D 6F 64 65 6C 20 20 66 6F 72 0D 0A 20 20 20 20    model  for..    
0123A0:  20 20 20 6F 74 68 65 72 20 70 72 6F 67 72 61 6D       other program
0123B0:  73 2E 20 42 41 53 49 43 27 73 20 61 63 74 69 6F    s. BASIC's actio
0123C0:  6E 20 69 73 20 61 73 20 66 6F 6C 6C 6F 77 73 3A    n is as follows:
0123D0:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
0123E0:  20 20 20 20 54 68 65 20 62 72 65 61 6B 20 6D 65        The break me
0123F0:  63 68 61 6E 69 73 6D 20 69 73 20 61 72 6D 65 64    chanism is armed
012400:  2E 20 41 66 74 65 72 20 20 65 61 63 68 20 20 42    . After  each  B
012410:  41 53 49 43 20 20 69 6E 73 74 72 75 63 74 69 6F    ASIC  instructio
012420:  6E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    n..             
012430:  20 20 20 74 68 65 20 73 79 6E 63 68 72 6F 6E 6F       the synchrono
012440:  75 73 20 65 76 65 6E 74 20 71 75 65 75 65 20 69    us event queue i
012450:  73 20 70 6F 6C 6C 65 64 20 61 6E 64 20 69 66 20    s polled and if 
012460:  61 20 62 72 65 61 6B 20 65 76 65 6E 74 20 69 73    a break event is
012470:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
012480:  20 20 66 6F 75 6E 64 20 28 62 65 63 61 75 73 65      found (because
012490:  20 69 74 20 68 61 73 20 62 65 65 6E 20 6B 69 63     it has been kic
0124A0:  6B 65 64 20 20 61 73 20 20 65 78 70 6C 61 69 6E    ked  as  explain
0124B0:  65 64 20 20 61 62 6F 76 65 29 20 20 74 68 65 0D    ed  above)  the.
0124C0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
0124D0:  20 62 72 65 61 6B 20 65 76 65 6E 74 20 72 6F 75     break event rou
0124E0:  74 69 6E 65 20 69 73 20 72 75 6E 2E 0D 0A 0D 0A    tine is run.....
0124F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
012500:  54 68 65 20 62 72 65 61 6B 20 65 76 65 6E 74 20    The break event 
012510:  72 6F 75 74 69 6E 65 20 73 74 6F 70 73 20 73 6F    routine stops so
012520:  75 6E 64 20 67 65 6E 65 72 61 74 69 6F 6E 20 20    und generation  
012530:  28 53 4F 55 4E 44 20 20 48 4F 4C 44 29 0D 0A 20    (SOUND  HOLD).. 
012540:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                   a
012550:  6E 64 20 74 68 65 6E 20 69 74 20 64 69 73 63 61    nd then it disca
012560:  72 64 73 20 61 6C 6C 20 63 68 61 72 61 63 74 65    rds all characte
012570:  72 73 20 74 79 70 65 64 20 20 62 65 66 6F 72 65    rs typed  before
012580:  20 20 74 68 65 20 20 62 72 65 61 6B 0D 0A 20 20      the  break..  
012590:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 6F 63                  oc
0125A0:  63 75 72 72 65 64 20 62 79 20 72 65 61 64 69 6E    curred by readin
0125B0:  67 20 63 68 61 72 61 63 74 65 72 73 20 66 72 6F    g characters fro
0125C0:  6D 20 20 74 68 65 20 20 6B 65 79 62 6F 61 72 64    m  the  keyboard
0125D0:  20 20 28 4B 4D 20 20 52 45 41 44 0D 0A 20 20 20      (KM  READ..   
0125E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 43 48 41                 CHA
0125F0:  52 29 20 75 6E 74 69 6C 20 65 69 74 68 65 72 20    R) until either 
012600:  74 68 65 20 62 75 66 66 65 72 20 69 73 20 65 6D    the buffer is em
012610:  70 74 79 20 20 6F 72 20 20 74 68 65 20 20 62 72    pty  or  the  br
012620:  65 61 6B 20 20 65 76 65 6E 74 0D 0A 20 20 20 20    eak  event..    
012630:  20 20 20 20 20 20 20 20 20 20 20 20 6D 61 72 6B                mark
012640:  65 72 20 28 63 68 61 72 61 63 74 65 72 20 23 45    er (character #E
012650:  46 29 20 69 73 20 66 6F 75 6E 64 2E 20 42 41 53    F) is found. BAS
012660:  49 43 20 74 68 65 6E 20 74 75 72 6E 73 20 74 68    IC then turns th
012670:  65 20 20 63 75 72 73 6F 72 0D 0A 20 20 20 20 20    e  cursor..     
012680:  20 20 20 20 20 20 20 20 20 20 20 6F 6E 20 28 54               on (T
012690:  58 54 20 43 55 52 20 4F 4E 29 20 61 6E 64 20 77    XT CUR ON) and w
0126A0:  61 69 74 73 20 66 6F 72 20 74 68 65 20 6E 65 78    aits for the nex
0126B0:  74 20 63 68 61 72 61 63 74 65 72 20 74 6F 20 62    t character to b
0126C0:  65 20 20 74 79 70 65 64 0D 0A 20 20 20 20 20 20    e  typed..      
0126D0:  20 20 20 20 20 20 20 20 20 20 28 4B 4D 20 57 41              (KM WA
0126E0:  49 54 20 43 48 41 52 29 2E 0D 0A 0D 0A 20 20 20    IT CHAR).....   
0126F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 49 66 20                 If 
012700:  74 68 65 20 6E 65 78 74 20 63 68 61 72 61 63 74    the next charact
012710:  65 72 20 69 73 20 74 68 65 20 65 73 63 61 70 65    er is the escape
012720:  20 74 6F 6B 65 6E 20 20 28 63 68 61 72 61 63 74     token  (charact
012730:  65 72 20 20 23 46 43 20 20 2D 0D 0A 20 20 20 20    er  #FC  -..    
012740:  20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20                the 
012750:  64 65 66 61 75 6C 74 20 76 61 6C 75 65 20 67 65    default value ge
012760:  6E 65 72 61 74 65 64 20 62 79 20 74 68 65 20 45    nerated by the E
012770:  53 43 20 6B 65 79 29 20 74 68 65 6E 20 61 20 20    SC key) then a  
012780:  66 6C 61 67 20 20 73 65 74 0D 0A 20 20 20 20 20    flag  set..     
012790:  20 20 20 20 20 20 20 20 20 20 20 74 6F 20 6D 61               to ma
0127A0:  6B 65 20 42 41 53 49 43 20 61 62 61 6E 64 6F 6E    ke BASIC abandon
0127B0:  20 65 78 65 63 75 74 69 6F 6E 20 28 6F 72 20 72     execution (or r
0127C0:  75 6E 20 74 68 65 20 75 73 65 72 27 73 20 20 4F    un the user's  O
0127D0:  4E 20 20 42 52 45 41 4B 0D 0A 20 20 20 20 20 20    N  BREAK..      
0127E0:  20 20 20 20 20 20 20 20 20 20 47 4F 53 55 42 20              GOSUB 
0127F0:  73 75 62 72 6F 75 74 69 6E 65 29 20 61 6E 64 20    subroutine) and 
012800:  74 68 65 20 62 72 65 61 6B 20 65 76 65 6E 74 20    the break event 
012810:  72 6F 75 74 69 6E 65 20 72 65 74 75 72 6E 73 2E    routine returns.
012820:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
012830:  20 20 20 20 49 66 20 74 68 65 20 6E 65 78 74 20        If the next 
012840:  63 68 61 72 61 63 74 65 72 20 69 73 20 61 6E 79    character is any
012850:  20 63 68 61 72 61 63 74 65 72 20 6F 74 68 65 72     character other
012860:  20 74 68 61 6E 20 65 73 63 61 70 65 20 74 68 65     than escape the
012870:  6E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    n..             
012880:  20 20 20 74 68 65 20 62 72 65 61 6B 20 77 69 6C       the break wil
012890:  6C 20 62 65 20 69 67 6E 6F 72 65 64 2E 20 49 66    l be ignored. If
0128A0:  20 69 74 20 69 73 20 61 6E 79 20 63 68 61 72 61     it is any chara
0128B0:  63 74 65 72 20 6F 74 68 65 72 20 20 74 68 61 6E    cter other  than
0128C0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
0128D0:  20 20 73 70 61 63 65 20 74 68 65 6E 20 74 68 69      space then thi
0128E0:  73 20 69 73 20 27 70 75 74 20 62 61 63 6B 27 20    s is 'put back' 
0128F0:  28 4B 4D 20 43 48 41 52 20 20 52 45 54 55 52 4E    (KM CHAR  RETURN
012900:  29 2E 20 20 42 65 66 6F 72 65 20 20 74 68 65 0D    ).  Before  the.
012910:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
012920:  20 65 76 65 6E 74 20 72 6F 75 74 69 6E 65 20 72     event routine r
012930:  65 74 75 72 6E 73 20 74 68 65 20 63 75 72 73 6F    eturns the curso
012940:  72 20 69 73 20 74 75 72 6E 65 64 20 6F 66 66 20    r is turned off 
012950:  28 54 58 54 20 43 55 52 20 4F 46 46 29 2C 0D 0A    (TXT CUR OFF),..
012960:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
012970:  73 6F 75 6E 64 20 67 65 6E 65 72 61 74 69 6F 6E    sound generation
012980:  20 69 73 20 72 65 73 74 61 72 74 65 64 20 28 53     is restarted (S
012990:  4F 55 4E 44 20 43 4F 4E 54 49 4E 55 45 29 20 61    OUND CONTINUE) a
0129A0:  6E 64 20 74 68 65 20 20 62 72 65 61 6B 0D 0A 20    nd the  break.. 
0129B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6D                   m
0129C0:  65 63 68 61 6E 69 73 6D 20 69 73 20 72 65 61 72    echanism is rear
0129D0:  6D 65 64 2E 20 42 41 53 49 43 20 74 68 65 6E 20    med. BASIC then 
0129E0:  63 6F 6E 74 69 6E 75 65 73 20 61 73 20 69 66 20    continues as if 
0129F0:  6E 6F 74 68 69 6E 67 20 20 68 61 64 0D 0A 20 20    nothing  had..  
012A00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 68 61                  ha
012A10:  70 70 65 6E 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20    ppened.......   
012A20:  20 20 20 20 57 68 65 6E 20 72 65 61 64 69 6E 67        When reading
012A30:  20 6F 72 20 77 72 69 74 69 6E 67 20 66 72 6F 6D     or writing from
012A40:  20 74 68 65 20 63 61 73 73 65 74 74 65 20 74 68     the cassette th
012A50:  65 20 45 53 43 20 6B 65 79 20 69 73 20 68 61 6E    e ESC key is han
012A60:  64 6C 65 64 20 69 6E 20 20 61 0D 0A 20 20 20 20    dled in  a..    
012A70:  20 20 20 64 69 66 66 65 72 65 6E 74 20 6D 61 6E       different man
012A80:  6E 65 72 20 77 68 69 63 68 20 69 73 20 64 65 73    ner which is des
012A90:  63 72 69 62 65 64 20 69 6E 20 73 65 63 74 69 6F    cribed in sectio
012AA0:  6E 20 38 2E 31 32 0D 0A 0D 0A 20 20 20 20 20 20    n 8.12....      
012AB0:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
012AC0:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
012AD0:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
012AE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                   p
012AF0:  61 67 65 20 33 2E 34 0D 0A 0D 0A 0D 0A 0D 0A 0D    age 3.4.........
012B00:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 33 2E 37 20    .....       3.7 
012B10:  46 75 6E 63 74 69 6F 6E 20 4B 65 79 73 20 61 6E    Function Keys an
012B20:  64 20 45 78 70 61 6E 73 69 6F 6E 20 54 6F 6B 65    d Expansion Toke
012B30:  6E 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ns.........     
012B40:  20 20 54 68 65 20 4B 65 79 20 4D 61 6E 61 67 65      The Key Manage
012B50:  72 20 61 6C 6C 6F 77 73 20 66 6F 72 20 33 32 20    r allows for 32 
012B60:  65 78 70 61 6E 73 69 6F 6E 20 74 6F 6B 65 6E 73    expansion tokens
012B70:  20 28 76 61 6C 75 65 73 20 23 38 30 2E 2E 23 39     (values #80..#9
012B80:  46 29 20 77 68 69 63 68 0D 0A 20 20 20 20 20 20    F) which..      
012B90:  20 6D 61 79 20 62 65 20 70 6C 61 63 65 64 20 69     may be placed i
012BA0:  6E 20 74 68 65 20 6B 65 79 20 74 72 61 6E 73 6C    n the key transl
012BB0:  61 74 69 6F 6E 20 74 61 62 6C 65 73 2E 20 45 61    ation tables. Ea
012BC0:  63 68 20 74 6F 6B 65 6E 20 69 73 20 20 61 73 73    ch token is  ass
012BD0:  6F 63 69 61 74 65 64 0D 0A 20 20 20 20 20 20 20    ociated..       
012BE0:  77 69 74 68 20 61 20 73 74 72 69 6E 67 20 77 68    with a string wh
012BF0:  69 63 68 20 69 73 20 73 74 6F 72 65 64 20 69 6E    ich is stored in
012C00:  20 74 68 65 20 65 78 70 61 6E 73 69 6F 6E 20 62     the expansion b
012C10:  75 66 66 65 72 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20    uffer.........  
012C20:  20 20 20 20 20 57 68 65 6E 20 74 68 65 20 75 73         When the us
012C30:  65 72 20 61 73 6B 73 20 74 68 65 20 74 6F 70 20    er asks the top 
012C40:  6C 65 76 65 6C 20 66 6F 72 20 61 20 63 68 61 72    level for a char
012C50:  61 63 74 65 72 20 61 20 6B 65 79 20 69 73 20 66    acter a key is f
012C60:  65 74 63 68 65 64 20 66 72 6F 6D 0D 0A 20 20 20    etched from..   
012C70:  20 20 20 20 74 68 65 20 6D 69 64 64 6C 65 20 6C        the middle l
012C80:  65 76 65 6C 2E 20 49 66 20 74 68 69 73 20 6B 65    evel. If this ke
012C90:  79 20 69 73 20 61 20 63 68 61 72 61 63 74 65 72    y is a character
012CA0:  20 20 69 74 20 20 69 73 20 20 70 61 73 73 65 64      it  is  passed
012CB0:  20 20 73 74 72 61 69 67 68 74 0D 0A 20 20 20 20      straight..    
012CC0:  20 20 20 62 61 63 6B 2E 20 48 6F 77 65 76 65 72       back. However
012CD0:  2C 20 69 66 20 69 74 20 69 73 20 61 6E 20 65 78    , if it is an ex
012CE0:  70 61 6E 73 69 6F 6E 20 74 6F 6B 65 6E 20 74 68    pansion token th
012CF0:  65 6E 20 74 68 65 20 73 74 72 69 6E 67 20 20 61    en the string  a
012D00:  73 73 6F 63 69 61 74 65 64 0D 0A 20 20 20 20 20    ssociated..     
012D10:  20 20 77 69 74 68 20 74 68 65 20 74 6F 6B 65 6E      with the token
012D20:  20 69 73 20 6C 6F 6F 6B 65 64 20 75 70 2E 20 54     is looked up. T
012D30:  68 65 20 63 68 61 72 61 63 74 65 72 73 20 69 6E    he characters in
012D40:  20 74 68 69 73 20 73 74 72 69 6E 67 20 61 72 65     this string are
012D50:  20 20 70 61 73 73 65 64 0D 0A 20 20 20 20 20 20      passed..      
012D60:  20 6F 75 74 20 6F 6E 65 20 61 74 20 61 20 74 69     out one at a ti
012D70:  6D 65 20 77 69 74 68 20 65 61 63 68 20 72 65 71    me with each req
012D80:  75 65 73 74 20 66 6F 72 20 61 20 63 68 61 72 61    uest for a chara
012D90:  63 74 65 72 20 75 6E 74 69 6C 20 74 68 65 20 20    cter until the  
012DA0:  65 6E 64 20 20 6F 66 0D 0A 20 20 20 20 20 20 20    end  of..       
012DB0:  74 68 65 20 73 74 72 69 6E 67 20 69 73 20 72 65    the string is re
012DC0:  61 63 68 65 64 2E 20 20 56 61 6C 75 65 73 20 20    ached.  Values  
012DD0:  23 38 30 2E 2E 23 39 46 20 20 61 6E 64 20 20 23    #80..#9F  and  #
012DE0:  45 46 2C 20 20 23 46 44 2E 2E 23 46 46 20 20 69    EF,  #FD..#FF  i
012DF0:  6E 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 65    n  the..       e
012E00:  78 70 61 6E 73 69 6F 6E 20 73 74 72 69 6E 67 20    xpansion string 
012E10:  61 72 65 20 74 72 65 61 74 65 64 20 61 73 20 63    are treated as c
012E20:  68 61 72 61 63 74 65 72 73 20 61 6E 64 20 20 61    haracters and  a
012E30:  72 65 20 20 6E 6F 74 20 20 65 78 70 61 6E 64 65    re  not  expande
012E40:  64 20 20 6F 72 0D 0A 20 20 20 20 20 20 20 6F 62    d  or..       ob
012E50:  65 79 65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    eyed.........   
012E60:  20 20 20 20 54 68 65 20 75 73 65 72 20 6D 61 79        The user may
012E70:  20 73 65 74 20 74 68 65 20 73 74 72 69 6E 67 20     set the string 
012E80:  61 73 73 6F 63 69 61 74 65 64 20 77 69 74 68 20    associated with 
012E90:  61 6E 20 65 78 70 61 6E 73 69 6F 6E 20 74 6F 6B    an expansion tok
012EA0:  65 6E 20 28 73 65 65 20 4B 4D 0D 0A 20 20 20 20    en (see KM..    
012EB0:  20 20 20 53 45 54 20 45 58 50 41 4E 44 29 20 61       SET EXPAND) a
012EC0:  6E 64 20 6D 61 79 20 63 61 75 73 65 20 61 6E 79    nd may cause any
012ED0:  20 6B 65 79 20 20 6F 6E 20 20 74 68 65 20 20 6B     key  on  the  k
012EE0:  65 79 62 6F 61 72 64 20 20 74 6F 20 20 67 65 6E    eyboard  to  gen
012EF0:  65 72 61 74 65 20 20 61 6E 0D 0A 20 20 20 20 20    erate  an..     
012F00:  20 20 65 78 70 61 6E 73 69 6F 6E 20 74 6F 6B 65      expansion toke
012F10:  6E 2E 20 54 68 65 20 64 65 66 61 75 6C 74 20 73    n. The default s
012F20:  65 74 74 69 6E 67 73 20 66 6F 72 20 74 68 65 20    ettings for the 
012F30:  65 78 70 61 6E 73 69 6F 6E 20 74 6F 6B 65 6E 73    expansion tokens
012F40:  20 61 6E 64 20 74 68 65 0D 0A 20 20 20 20 20 20     and the..      
012F50:  20 6B 65 79 73 20 77 69 74 68 20 77 68 69 63 68     keys with which
012F60:  20 74 68 65 79 20 61 72 65 20 6E 6F 72 6D 61 6C     they are normal
012F70:  6C 79 20 61 73 73 6F 63 69 61 74 65 64 20 61 72    ly associated ar
012F80:  65 20 67 69 76 65 6E 20 69 6E 20 41 70 70 65 6E    e given in Appen
012F90:  64 69 78 20 49 56 2E 0D 0A 20 20 20 20 20 20 20    dix IV...       
012FA0:  54 68 65 20 75 73 65 72 20 6D 61 79 20 61 6C 73    The user may als
012FB0:  6F 20 73 65 74 20 74 68 65 20 73 69 7A 65 20 61    o set the size a
012FC0:  6E 64 20 6C 6F 63 61 74 69 6F 6E 20 6F 66 20 20    nd location of  
012FD0:  74 68 65 20 20 65 78 70 61 6E 73 69 6F 6E 20 20    the  expansion  
012FE0:  62 75 66 66 65 72 0D 0A 20 20 20 20 20 20 20 28    buffer..       (
012FF0:  73 65 65 20 4B 4D 20 45 58 50 20 42 55 46 46 45    see KM EXP BUFFE
013000:  52 29 3B 20 74 68 65 20 64 65 66 61 75 6C 74 20    R); the default 
013010:  62 75 66 66 65 72 20 69 73 20 61 74 20 6C 65 61    buffer is at lea
013020:  73 74 20 31 30 30 20 62 79 74 65 73 20 6C 6F 6E    st 100 bytes lon
013030:  67 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    g.........      
013040:  20 33 2E 38 20 4A 6F 79 73 74 69 63 6B 73 2E 0D     3.8 Joysticks..
013050:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
013060:  65 72 65 20 6D 61 79 20 62 65 20 74 77 6F 20 6A    ere may be two j
013070:  6F 79 73 74 69 63 6B 73 20 63 6F 6E 6E 65 63 74    oysticks connect
013080:  65 64 20 74 6F 20 74 68 65 20 20 73 79 73 74 65    ed to the  syste
013090:  6D 2E 20 20 54 68 65 73 65 20 20 61 72 65 20 20    m.  These  are  
0130A0:  62 6F 74 68 0D 0A 20 20 20 20 20 20 20 73 63 61    both..       sca
0130B0:  6E 6E 65 64 20 69 6E 20 74 68 65 20 73 61 6D 65    nned in the same
0130C0:  20 77 61 79 20 61 73 20 6B 65 79 73 20 6F 6E 20     way as keys on 
0130D0:  74 68 65 20 6B 65 79 62 6F 61 72 64 2E 20 20 49    the keyboard.  I
0130E0:  6E 64 65 65 64 2C 20 20 74 68 65 20 20 73 65 63    ndeed,  the  sec
0130F0:  6F 6E 64 0D 0A 20 20 20 20 20 20 20 6A 6F 79 73    ond..       joys
013100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
013110:  10 00 00 00 02 09 50 E5 10 00 C1 02 00 00 00 02    ......P.........
013120:  10 00 C2 02 00 00 00 02 10 00 C3 02 00 00 00 02    ................
013130:  10 00 C4 02 00 00 00 02 10 00 C5 02 00 00 00 02    ................
013140:  10 00 C6 02 00 00 00 02 10 00 C7 02 00 00 00 02    ................
013150:  10 00 C8 02 00 00 00 02 10 00 C9 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:  74 69 63 6B 20 6F 63 63 75 70 69 65 73 20 74 68    tick occupies th
013210:  65 20 73 61 6D 65 20 6C 6F 63 61 74 69 6F 6E 73    e same locations
013220:  20 69 6E 20 20 74 68 65 20 20 6B 65 79 20 20 6D     in  the  key  m
013230:  61 74 72 69 78 20 20 61 73 20 20 63 65 72 74 61    atrix  as  certa
013240:  69 6E 0D 0A 20 20 20 20 20 20 20 6F 74 68 65 72    in..       other
013250:  20 6B 65 79 73 20 61 6E 64 20 69 73 20 20 69 6E     keys and is  in
013260:  64 69 73 74 69 6E 67 75 69 73 68 61 62 6C 65 20    distinguishable 
013270:  20 66 72 6F 6D 20 20 74 68 65 6E 2E 20 20 54 68     from  then.  Th
013280:  65 20 20 73 74 61 74 65 20 20 6F 66 20 20 74 68    e  state  of  th
013290:  65 0D 0A 20 20 20 20 20 20 20 6A 6F 79 73 74 69    e..       joysti
0132A0:  63 6B 20 63 61 6E 20 62 65 20 64 65 74 65 72 6D    ck can be determ
0132B0:  69 6E 65 64 20 62 79 20 63 61 6C 6C 69 6E 67 20    ined by calling 
0132C0:  74 68 65 20 72 6F 75 74 69 6E 65 20 4B 4D 20 47    the routine KM G
0132D0:  45 54 20 4A 4F 59 53 54 49 43 4B 2E 0D 0A 0D 0A    ET JOYSTICK.....
0132E0:  0D 0A 0D 0A 20 20 20 20 20 20 20 42 65 63 61 75    ....       Becau
0132F0:  73 65 20 74 68 65 20 6A 6F 79 73 74 69 63 6B 73    se the joysticks
013300:  20 61 72 65 20 73 63 61 6E 6E 65 64 20 6C 69 6B     are scanned lik
013310:  65 20 6B 65 79 73 20 74 68 65 20 70 72 65 73 73    e keys the press
013320:  69 6E 67 20 20 6F 66 20 20 6A 6F 79 73 74 69 63    ing  of  joystic
013330:  6B 0D 0A 20 20 20 20 20 20 20 62 75 74 74 6F 6E    k..       button
013340:  73 20 63 61 6E 20 62 65 20 20 64 65 74 65 63 74    s can be  detect
013350:  65 64 20 20 6C 69 6B 65 20 20 61 6E 79 20 20 6F    ed  like  any  o
013360:  74 68 65 72 20 20 6B 65 79 2E 20 20 46 69 72 73    ther  key.  Firs
013370:  74 6C 79 2C 20 20 69 6E 64 69 76 69 64 75 61 6C    tly,  individual
013380:  0D 0A 20 20 20 20 20 20 20 64 69 72 65 63 74 69    ..       directi
013390:  6F 6E 20 6F 72 20 62 75 74 74 6F 6E 73 20 63 61    on or buttons ca
0133A0:  6E 20 62 65 20 74 65 73 74 65 64 20 69 6E 20 74    n be tested in t
0133B0:  68 65 20 6B 65 79 20 20 62 69 74 20 20 6D 61 70    he key  bit  map
0133C0:  20 20 28 73 65 65 20 20 73 65 63 74 69 6F 6E 0D      (see  section.
0133D0:  0A 20 20 20 20 20 20 20 33 2E 31 29 20 62 79 20    .       3.1) by 
0133E0:  63 61 6C 6C 69 6E 67 20 4B 4D 20 54 45 53 54 20    calling KM TEST 
0133F0:  4B 45 59 2E 20 53 65 63 6F 6E 64 6C 79 2C 20 74    KEY. Secondly, t
013400:  68 65 20 6A 6F 79 73 74 69 63 6B 20 20 62 75 74    he joystick  but
013410:  74 6F 6E 73 20 20 67 65 6E 65 72 61 74 65 0D 0A    tons  generate..
013420:  20 20 20 20 20 20 20 63 68 61 72 61 63 74 65 72           character
013430:  73 20 77 68 65 6E 20 74 68 65 79 20 61 72 65 20    s when they are 
013440:  70 72 65 73 73 65 64 20 28 70 72 6F 76 69 64 69    pressed (providi
013450:  6E 67 20 74 68 65 20 74 72 61 6E 73 6C 61 74 69    ng the translati
013460:  6F 6E 20 74 61 62 6C 65 73 20 61 72 65 0D 0A 20    on tables are.. 
013470:  20 20 20 20 20 20 73 65 74 20 73 75 69 74 61 62          set suitab
013480:  6C 79 29 20 61 6E 64 20 74 68 65 73 65 20 63 68    ly) and these ch
013490:  61 72 61 63 74 65 72 73 20 63 61 6E 20 62 65 20    aracters can be 
0134A0:  64 65 74 65 63 74 65 64 2E 20 54 68 65 20 6D 61    detected. The ma
0134B0:  6A 6F 72 20 20 70 72 6F 62 6C 65 6D 0D 0A 20 20    jor  problem..  
0134C0:  20 20 20 20 20 77 69 74 68 20 74 68 69 73 20 6C         with this l
0134D0:  61 74 74 65 72 20 6D 65 74 68 6F 64 20 69 73 20    atter method is 
0134E0:  74 68 61 74 20 74 68 65 20 72 61 74 65 20 6F 66    that the rate of
0134F0:  20 67 65 6E 65 72 61 74 69 6F 6E 20 20 6F 66 20     generation  of 
013500:  20 63 68 61 72 61 63 74 65 72 73 0D 0A 20 20 20     characters..   
013510:  20 20 20 20 64 65 70 65 6E 64 73 20 6F 6E 20 68        depends on h
013520:  6F 77 20 66 61 73 74 20 74 68 65 20 6B 65 79 62    ow fast the keyb
013530:  6F 61 72 64 20 69 73 20 73 65 74 20 74 6F 20 72    oard is set to r
013540:  65 70 65 61 74 2E 20 49 66 20 74 68 65 20 72 65    epeat. If the re
013550:  70 65 61 74 20 73 70 65 65 64 0D 0A 20 20 20 20    peat speed..    
013560:  20 20 20 69 6E 20 69 6E 63 72 65 61 73 65 64 20       in increased 
013570:  74 6F 20 6D 61 6B 65 20 20 74 68 65 20 20 6A 6F    to make  the  jo
013580:  79 73 74 69 63 6B 20 20 6D 6F 72 65 20 20 72 65    ystick  more  re
013590:  73 70 6F 6E 73 69 76 65 20 20 74 68 65 6E 20 20    sponsive  then  
0135A0:  74 68 65 6E 20 20 74 68 65 0D 0A 20 20 20 20 20    then  the..     
0135B0:  20 20 6B 65 79 62 6F 61 72 64 20 6D 61 79 20 62      keyboard may b
0135C0:  65 63 6F 6D 65 20 69 6D 70 6F 73 73 69 62 6C 65    ecome impossible
0135D0:  20 74 6F 20 75 73 65 2E 0D 0A 0D 0A 0D 0A 0D 0A     to use.........
0135E0:  20 20 20 20 20 20 20 53 65 65 20 41 70 70 65 6E           See Appen
0135F0:  64 69 78 20 49 20 66 6F 72 20 74 68 65 20 6E 75    dix I for the nu
013600:  6D 62 65 72 69 6E 67 20 6F 66 20 74 68 65 20 6B    mbering of the k
013610:  65 79 73 20 61 6E 64 20 6A 6F 79 73 74 69 63 6B    eys and joystick
013620:  20 62 75 74 74 6F 6E 73 20 20 61 6E 64 0D 0A 20     buttons  and.. 
013630:  20 20 20 20 20 20 73 65 65 20 41 70 70 65 6E 64          see Append
013640:  69 78 20 49 49 20 66 6F 72 20 74 68 65 20 64 65    ix II for the de
013650:  66 61 75 6C 74 20 74 72 61 6E 73 6C 61 74 69 6F    fault translatio
013660:  6E 20 74 61 62 6C 65 73 2E 0D 0A 0D 0A 0D 0A 20    n tables....... 
013670:  20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50          AMSTRAD CP
013680:  43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49    C464/664/6128 FI
013690:  52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20    RMWARE          
0136A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0136B0:  20 70 61 67 65 20 33 2E 35 0D 0A 1A 74 68 65 20     page 3.5...the 
0136C0:  70 61 63 6B 20 61 73 73 6F 63 69 61 74 65 64 20    pack associated 
0136D0:  20 77 69 74 68 20 20 74 68 65 20 20 6B 65 79 62     with  the  keyb
0136E0:  6F 61 72 64 2E 20 20 41 6C 6C 20 20 74 68 65 0D    oard.  All  the.
0136F0:  0A 20 20 20 20 20 20 20 61 74 74 72 69 62 75 74    .       attribut
013700:  20 63 68 61 72 61 63 74 65 72 73 0D 0A 20 20 20     characters..   
013710:  20 20 20 20 64 65 70 65 6E 64 73 20 6F 6E 20 68        depends on h
013720:  6F 77 20 66 61 73 74 20 74 68 65 20 6B 65 79 62    ow fast the keyb
013730:  6F 61 72 64 20 69 73 20 73 65 74 20 74 6F 20 72    oard is set to r
013740:  65 70 65 61 74 2E 20 49 66 20 74 68 65 20 72 65    epeat. If the re
013750:  70 65 61 74 20 73 70 65 65 64 0D 0A 20 20 20 20    peat speed..    
013760:  20 20 20 69 6E 20 69 6E 63 72 65 61 73 65 64 20       in increased 
013770:  74 6F 20 6D 61 6B 65 20 20 74 68 65 20 20 6A 6F    to make  the  jo
013780:  79 73 74 69 63 6B 20 20 6D 6F 72 65 20 20 72 65    ystick  more  re
013790:  73 70 6F 6E 73 69 76 65 20 20 74 68 65 6E 20 20    sponsive  then  
0137A0:  74 68 65 6E 20 20 74 68 65 0D 0A 20 20 20 20 20    then  the..     
0137B0:  20 20 6B 65 79 62 6F 61 72 64 20 6D 61 79 20 62      keyboard may b
0137C0:  65 63 6F 6D 65 20 69 6D 70 6F 73 73 69 62 6C 65    ecome impossible
0137D0:  20 74 6F 20 75 73 65 2E 0D 0A 0D 0A 0D 0A 0D 0A     to use.........
0137E0:  20 20 20 20 20 20 20 53 65 65 20 41 70 70 65 6E           See Appen
0137F0:  64 69 78 20 49 20 66 6F 72 20 74 68 65 20 6E 75    dix I for the nu
013800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0138A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0138B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0138C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0138D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0138E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0138F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0139A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0139B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0139C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0139D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0139E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0139F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
013A00:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 34    ........       4
013A10:  20 54 68 65 20 54 65 78 74 20 56 44 55 2E 0D 0A     The Text VDU...
013A20:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 54    ....       The T
013A30:  65 78 74 20 56 44 55 20 69 73 20 20 61 20 20 63    ext VDU is  a  c
013A40:  68 61 72 61 63 74 65 72 20 20 62 61 73 65 64 20    haracter  based 
013A50:  20 73 63 72 65 65 6E 20 20 64 72 69 76 65 72 2E     screen  driver.
013A60:  20 20 49 74 20 20 63 6F 6E 74 72 6F 6C 73 20 20      It  controls  
013A70:  38 0D 0A 20 20 20 20 20 20 20 64 69 66 66 65 72    8..       differ
013A80:  65 6E 74 20 73 74 72 65 61 6D 73 20 65 61 63 68    ent streams each
013A90:  20 6F 66 20 77 68 69 63 68 20 63 61 6E 20 68 61     of which can ha
013AA0:  76 65 20 61 6E 20 61 72 65 61 20 6F 66 20 20 73    ve an area of  s
013AB0:  63 72 65 65 6E 20 20 61 6C 6C 6F 63 61 74 65 64    creen  allocated
013AC0:  0D 0A 20 20 20 20 20 20 20 74 6F 20 69 74 20 28    ..       to it (
013AD0:  61 20 77 69 6E 64 6F 77 29 2E 20 54 68 65 20 54    a window). The T
013AE0:  65 78 74 20 56 44 55 20 61 6C 6C 6F 77 73 20 63    ext VDU allows c
013AF0:  68 61 72 61 63 74 65 72 73 20 74 6F 20 62 65 20    haracters to be 
013B00:  77 72 69 74 74 65 6E 20 74 6F 20 20 74 68 65 0D    written to  the.
013B10:  0A 20 20 20 20 20 20 20 73 63 72 65 65 6E 20 61    .       screen a
013B20:  6E 64 20 72 65 61 64 20 66 72 6F 6D 20 74 68 65    nd read from the
013B30:  20 73 63 72 65 65 6E 2E 20 49 74 20 61 6C 73 6F     screen. It also
013B40:  20 74 72 65 61 74 73 20 20 63 65 72 74 61 69 6E     treats  certain
013B50:  20 20 27 63 68 61 72 61 63 74 65 72 73 27 0D 0A      'characters'..
013B60:  20 20 20 20 20 20 20 61 73 20 27 63 6F 6E 74 72           as 'contr
013B70:  6F 6C 20 63 6F 64 65 73 27 20 77 68 69 63 68 20    ol codes' which 
013B80:  63 61 6E 20 68 61 76 65 20 76 61 72 69 6F 75 73    can have various
013B90:  20 20 65 66 66 65 63 74 73 2C 20 20 66 72 6F 6D      effects,  from
013BA0:  20 20 6D 6F 76 69 6E 67 20 20 74 68 65 0D 0A 20      moving  the.. 
013BB0:  20 20 20 20 20 20 63 75 72 73 6F 72 20 74 6F 20          cursor to 
013BC0:  73 65 74 74 69 6E 67 20 74 68 65 20 63 6F 6C 6F    setting the colo
013BD0:  75 72 20 6F 66 20 61 6E 20 69 6E 6B 2E 0D 0A 0D    ur of an ink....
013BE0:  0A 0D 0A 20 20 20 20 20 20 20 34 2E 31 20 54 65    ...       4.1 Te
013BF0:  78 74 20 56 44 55 20 43 6F 6F 72 64 69 6E 61 74    xt VDU Coordinat
013C00:  65 20 53 79 73 74 65 6D 2E 0D 0A 0D 0A 0D 0A 20    e System....... 
013C10:  20 20 20 20 20 20 54 68 65 20 54 65 78 74 20 56          The Text V
013C20:  44 55 20 75 73 65 73 20 74 77 6F 20 20 63 6F 6F    DU uses two  coo
013C30:  72 64 69 6E 61 74 65 20 20 73 79 73 74 65 6D 73    rdinate  systems
013C40:  20 20 2D 20 20 6C 6F 67 69 63 61 6C 20 20 61 6E      -  logical  an
013C50:  64 20 20 70 68 79 73 69 63 61 6C 2E 0D 0A 20 20    d  physical...  
013C60:  20 20 20 20 20 47 65 6E 65 72 61 6C 6C 79 20 74         Generally t
013C70:  68 65 20 75 73 65 72 20 73 70 65 63 69 66 69 65    he user specifie
013C80:  73 20 70 6F 73 69 74 69 6F 6E 73 20 74 6F 20 20    s positions to  
013C90:  74 68 65 20 20 54 65 78 74 20 20 56 44 55 20 20    the  Text  VDU  
013CA0:  69 6E 20 20 6C 6F 67 69 63 61 6C 0D 0A 20 20 20    in  logical..   
013CB0:  20 20 20 20 63 6F 6F 72 64 69 6E 61 74 65 73 2E        coordinates.
013CC0:  20 50 68 79 73 69 63 61 6C 20 63 6F 6F 72 64 69     Physical coordi
013CD0:  6E 61 74 65 73 20 61 72 65 20 75 73 65 64 20 69    nates are used i
013CE0:  6E 74 65 72 6E 61 6C 6C 79 20 61 6E 64 20 6F 63    nternally and oc
013CF0:  63 61 73 69 6F 6E 61 6C 6C 79 0D 0A 20 20 20 20    casionally..    
013D00:  20 20 20 62 79 20 74 68 65 20 75 73 65 72 20 74       by the user t
013D10:  6F 20 73 70 65 63 69 66 79 20 70 6F 73 69 74 69    o specify positi
013D20:  6F 6E 73 20 74 6F 20 74 68 65 20 54 65 78 74 20    ons to the Text 
013D30:  20 56 44 55 2E 20 20 42 6F 74 68 20 20 73 79 73     VDU.  Both  sys
013D40:  74 65 6D 73 20 20 75 73 65 0D 0A 20 20 20 20 20    tems  use..     
013D50:  20 20 73 69 67 6E 65 64 20 38 20 62 69 74 20 6E      signed 8 bit n
013D60:  75 6D 62 65 72 73 20 61 6E 64 20 77 6F 72 6B 20    umbers and work 
013D70:  69 6E 20 63 68 61 72 61 63 74 65 72 20 70 6F 73    in character pos
013D80:  69 74 69 6F 6E 73 2E 20 20 45 61 63 68 20 20 63    itions.  Each  c
013D90:  68 61 72 61 63 74 65 72 0D 0A 20 20 20 20 20 20    haracter..      
013DA0:  20 70 6F 73 69 74 69 6F 6E 20 69 73 20 38 20 70     position is 8 p
013DB0:  69 78 65 6C 73 20 28 64 6F 74 73 29 20 77 69 64    ixels (dots) wid
013DC0:  65 20 61 6E 64 20 38 20 70 69 78 65 6C 73 20 68    e and 8 pixels h
013DD0:  69 67 68 2E 20 20 54 68 69 73 20 20 6D 65 61 6E    igh.  This  mean
013DE0:  73 20 20 74 68 61 74 0D 0A 20 20 20 20 20 20 20    s  that..       
013DF0:  74 68 65 20 70 6F 73 69 74 69 6F 6E 20 6F 66 20    the position of 
013E00:  61 20 63 6F 6F 72 64 69 6E 61 74 65 20 6F 6E 20    a coordinate on 
013E10:  74 68 65 20 73 63 72 65 65 6E 20 20 64 65 70 65    the screen  depe
013E20:  6E 64 73 20 20 75 70 6F 6E 20 20 74 68 65 20 20    nds  upon  the  
013E30:  73 63 72 65 65 6E 0D 0A 20 20 20 20 20 20 20 6D    screen..       m
013E40:  6F 64 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ode.......      
013E50:  20 50 68 79 73 69 63 61 6C 20 63 6F 6F 72 64 69     Physical coordi
013E60:  6E 61 74 65 73 20 68 61 76 65 20 63 6F 6C 75 6D    nates have colum
013E70:  6E 73 20 72 75 6E 6E 69 6E 67 20 66 72 6F 6D 20    ns running from 
013E80:  6C 65 66 74 20 74 6F 20 72 69 67 68 74 20 61 6E    left to right an
013E90:  64 20 20 72 6F 77 73 0D 0A 20 20 20 20 20 20 20    d  rows..       
013EA0:  72 75 6E 6E 69 6E 67 20 74 6F 70 20 74 6F 20 62    running top to b
013EB0:  6F 74 74 6F 6D 2E 20 54 68 65 20 63 68 61 72 61    ottom. The chara
013EC0:  63 74 65 72 20 70 6F 73 69 74 69 6F 6E 20 61 74    cter position at
013ED0:  20 74 68 65 20 74 6F 70 20 20 6C 65 66 74 20 20     the top  left  
013EE0:  63 6F 72 6E 65 72 0D 0A 20 20 20 20 20 20 20 6F    corner..       o
013EF0:  66 20 74 68 65 20 73 63 72 65 65 6E 20 69 73 20    f the screen is 
013F00:  72 6F 77 20 30 2C 20 63 6F 6C 75 6D 6E 20 30 2E    row 0, column 0.
013F10:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4C 6F 67    ......       Log
013F20:  69 63 61 6C 20 63 6F 6F 72 64 69 6E 61 74 65 73    ical coordinates
013F30:  20 61 72 65 20 73 69 6D 69 6C 61 72 20 74 6F 20     are similar to 
013F40:  70 68 79 73 69 63 61 6C 20 20 63 6F 6F 72 64 69    physical  coordi
013F50:  6E 61 74 65 73 20 20 65 78 63 65 70 74 20 20 74    nates  except  t
013F60:  68 61 74 0D 0A 20 20 20 20 20 20 20 74 68 65 20    hat..       the 
013F70:  63 68 61 72 61 63 74 65 72 20 70 6F 73 69 74 69    character positi
013F80:  6F 6E 20 61 74 20 74 68 65 20 74 6F 70 20 6C 65    on at the top le
013F90:  66 74 20 63 6F 72 6E 65 72 20 6F 66 20 74 68 65    ft corner of the
013FA0:  20 20 74 65 78 74 20 20 77 69 6E 64 6F 77 20 20      text  window  
013FB0:  69 73 0D 0A 20 20 20 20 20 20 20 72 6F 77 20 31    is..       row 1
013FC0:  2C 20 63 6F 6C 75 6D 6E 20 31 2E 0D 0A 0D 0A 0D    , column 1......
013FD0:  0A 20 20 20 20 20 20 20 34 2E 32 20 53 74 72 65    .       4.2 Stre
013FE0:  61 6D 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ams.......      
013FF0:  20 54 68 65 20 54 65 78 74 20 56 44 55 20 68 61     The Text VDU ha
014000:  73 20 66 61 63 69 6C 69 74 69 65 73 20 66 6F 72    s facilities for
014010:  20 68 61 6E 64 6C 69 6E 67 20 75 70 20 74 6F 20     handling up to 
014020:  38 20 73 74 72 65 61 6D 73 20 61 74 20 6F 6E 63    8 streams at onc
014030:  65 2E 20 45 61 63 68 0D 0A 20 20 20 20 20 20 20    e. Each..       
014040:  73 74 72 65 61 6D 20 68 61 73 20 61 6E 20 69 6E    stream has an in
014050:  64 65 70 65 6E 64 65 6E 74 20 73 74 61 74 65 20    dependent state 
014060:  28 61 6C 74 68 6F 75 67 68 20 73 6F 6D 65 20 66    (although some f
014070:  61 63 69 6C 69 74 69 65 73 20 20 61 72 65 20 20    acilities  are  
014080:  73 68 61 72 65 64 0D 0A 20 20 20 20 20 20 20 61    shared..       a
014090:  6E 64 20 74 68 75 73 20 61 66 66 65 63 74 20 61    nd thus affect a
0140A0:  6C 6C 20 73 74 72 65 61 6D 73 20 20 77 68 65 6E    ll streams  when
0140B0:  20 20 61 6C 74 65 72 65 64 29 2E 20 20 54 68 65      altered).  The
0140C0:  20 20 66 65 61 74 75 72 65 73 20 20 74 68 61 74      features  that
0140D0:  20 20 61 72 65 0D 0A 20 20 20 20 20 20 20 73 74      are..       st
0140E0:  72 65 61 6D 20 64 65 70 65 6E 64 65 6E 74 20 61    ream dependent a
0140F0:  72 65 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    re:....         
014100:  20 20 20 20 20 20 20 56 44 55 20 65 6E 61 62 6C           VDU enabl
014110:  65 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    e...            
014120:  20 20 20 20 43 75 72 73 6F 72 20 65 6E 61 62 6C        Cursor enabl
014130:  65 20 28 65 6E 61 62 6C 65 20 6F 72 20 64 69 73    e (enable or dis
014140:  61 62 6C 65 2C 20 6F 6E 20 6F 72 20 6F 66 66 29    able, on or off)
014150:  2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
014160:  20 20 20 43 75 72 73 6F 72 20 70 6F 73 69 74 69       Cursor positi
014170:  6F 6E 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20    on...           
014180:  20 20 20 20 20 57 69 6E 64 6F 77 20 73 69 7A 65         Window size
014190:  2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
0141A0:  20 20 20 50 65 6E 20 61 6E 64 20 70 61 70 65 72       Pen and paper
0141B0:  20 69 6E 6B 73 2E 0D 0A 20 20 20 20 20 20 20 20     inks...        
0141C0:  20 20 20 20 20 20 20 20 43 68 61 72 61 63 74 65            Characte
0141D0:  72 20 77 72 69 74 65 20 6D 6F 64 65 20 28 6F 70    r write mode (op
0141E0:  61 71 75 65 20 6F 72 20 74 72 61 6E 73 70 61 72    aque or transpar
0141F0:  65 6E 74 29 2E 0D 0A 20 20 20 20 20 20 20 20 20    ent)...         
014200:  20 20 20 20 20 20 20 47 72 61 70 68 69 63 73 20           Graphics 
014210:  63 68 61 72 61 63 74 65 72 20 77 72 69 74 65 20    character write 
014220:  6D 6F 64 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    mode.....       
014230:  54 68 65 20 66 65 61 74 75 72 65 73 20 74 68 61    The features tha
014240:  74 20 61 66 66 65 63 74 20 61 6C 6C 20 73 74 72    t affect all str
014250:  65 61 6D 73 20 61 72 65 3A 0D 0A 0D 0A 20 20 20    eams are:....   
014260:  20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 61                 Cha
014270:  72 61 63 74 65 72 20 6D 61 74 72 69 63 65 73 2E    racter matrices.
014280:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
014290:  20 20 43 6F 6E 74 72 6F 6C 20 63 6F 64 65 20 62      Control code b
0142A0:  75 66 66 65 72 2E 0D 0A 20 20 20 20 20 20 20 20    uffer...        
0142B0:  20 20 20 20 20 20 20 20 54 65 78 74 20 56 44 55            Text VDU
0142C0:  20 69 6E 64 69 72 65 63 74 69 6F 6E 73 2E 0D 0A     indirections...
0142D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0142E0:  53 63 72 65 65 6E 20 6D 6F 64 65 2E 0D 0A 0D 0A    Screen mode.....
0142F0:  20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43           AMSTRAD C
014300:  50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46    PC464/664/6128 F
014310:  49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20    IRMWARE         
014320:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
014330:  20 20 20 20 20 70 61 67 65 20 34 2E 31 0D 0A 0D         page 4.1...
014340:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
014350:  20 20 41 6C 6C 20 74 68 65 73 65 20 66 65 61 74      All these feat
014360:  75 72 65 73 20 61 72 65 20 65 78 70 6C 61 69 6E    ures are explain
014370:  65 64 20 69 6E 20 64 65 74 61 69 6C 20 69 6E 20    ed in detail in 
014380:  74 68 65 20 73 65 63 74 69 6F 6E 73 20 62 65 6C    the sections bel
014390:  6F 77 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 74    ow.....       At
0143A0:  20 61 6E 79 20 74 69 6D 65 2C 20 74 68 65 20 73     any time, the s
0143B0:  74 72 65 61 6D 20 77 68 69 63 68 20 69 73 20 63    tream which is c
0143C0:  75 72 72 65 6E 74 6C 79 20 20 73 65 6C 65 63 74    urrently  select
0143D0:  65 64 20 20 6D 61 79 20 20 62 65 20 20 63 68 61    ed  may  be  cha
0143E0:  6E 67 65 64 0D 0A 20 20 20 20 20 20 20 77 69 74    nged..       wit
0143F0:  68 6F 75 74 20 61 64 76 65 72 73 65 20 65 66 66    hout adverse eff
014400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
014410:  11 00 00 00 02 09 50 E5 11 00 C1 02 00 00 00 02    ......P.........
014420:  11 00 C2 02 00 00 00 02 11 00 C3 02 00 00 00 02    ................
014430:  11 00 C4 02 00 00 00 02 11 00 C5 02 00 00 00 02    ................
014440:  11 00 C6 02 00 00 00 02 11 00 C7 02 00 00 00 02    ................
014450:  11 00 C8 02 00 00 00 02 11 00 C9 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:  65 63 74 73 20 70 72 6F 76 69 64 65 64 20 74 68    ects provided th
014510:  61 74 20 74 68 65 20 63 6F 6E 74 72 6F 6C 20 63    at the control c
014520:  6F 64 65 20 62 75 66 66 65 72 20 20 69 73 20 20    ode buffer  is  
014530:  6E 6F 74 0D 0A 20 20 20 20 20 20 20 69 6E 20 75    not..       in u
014540:  73 65 20 28 73 65 65 20 73 65 63 74 69 6F 6E 20    se (see section 
014550:  34 2E 37 20 66 6F 72 20 66 75 72 74 68 65 72 20    4.7 for further 
014560:  65 78 70 6C 61 6E 61 74 69 6F 6E 29 2E 20 41 20    explanation). A 
014570:  73 74 72 65 61 6D 20 77 69 6C 6C 20 72 65 6D 61    stream will rema
014580:  69 6E 0D 0A 20 20 20 20 20 20 20 73 65 6C 65 63    in..       selec
014590:  74 65 64 20 75 6E 74 69 6C 20 61 6E 6F 74 68 65    ted until anothe
0145A0:  72 20 73 74 72 65 61 6D 20 69 73 20 73 65 6C 65    r stream is sele
0145B0:  63 74 65 64 2E 20 54 68 69 73 20 6D 65 61 6E 73    cted. This means
0145C0:  20 74 68 61 74 20 20 61 20 20 70 72 6F 67 72 61     that  a  progra
0145D0:  6D 0D 0A 20 20 20 20 20 20 20 6E 65 65 64 20 6E    m..       need n
0145E0:  6F 74 20 6B 6E 6F 77 20 77 68 69 63 68 20 73 74    ot know which st
0145F0:  72 65 61 6D 20 69 74 20 69 73 20 75 73 69 6E 67    ream it is using
014600:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
014610:  64 65 66 61 75 6C 74 20 73 74 72 65 61 6D 2C 20    default stream, 
014620:  73 65 6C 65 63 74 65 64 20 61 74 20 45 4D 53 2C    selected at EMS,
014630:  20 69 73 20 73 74 72 65 61 6D 20 30 2E 0D 0A 0D     is stream 0....
014640:  0A 20 20 20 20 20 20 20 42 41 53 49 43 20 20 65    .       BASIC  e
014650:  78 74 65 6E 64 73 20 20 74 68 65 20 20 73 74 72    xtends  the  str
014660:  65 61 6D 20 20 63 6F 6E 63 65 70 74 20 20 74 6F    eam  concept  to
014670:  20 20 69 6E 63 6C 75 64 65 20 20 74 68 65 20 20      include  the  
014680:  20 70 72 69 6E 74 65 72 20 20 20 61 6E 64 0D 0A     printer   and..
014690:  20 20 20 20 20 20 20 63 61 73 73 65 74 74 65 2F           cassette/
0146A0:  64 69 73 63 20 66 69 6C 65 73 2E 20 54 68 69 73    disc files. This
0146B0:  20 65 78 74 65 6E 73 69 6F 6E 20 69 73 20 6E 6F     extension is no
0146C0:  74 20 70 61 72 74 20 6F 66 20 74 68 65 20 66 69    t part of the fi
0146D0:  72 6D 77 61 72 65 2E 0D 0A 0D 0A 20 20 20 20 20    rmware.....     
0146E0:  20 20 34 2E 33 20 54 65 78 74 20 50 65 6E 20 61      4.3 Text Pen a
0146F0:  6E 64 20 50 61 70 65 72 20 49 6E 6B 73 2E 0D 0A    nd Paper Inks...
014700:  0D 0A 20 20 20 20 20 20 20 45 61 63 68 20 73 74    ..       Each st
014710:  72 65 61 6D 20 68 61 73 20 61 20 70 65 6E 20 61    ream has a pen a
014720:  6E 64 20 61 20 70 61 70 65 72 20 69 6E 6B 20 61    nd a paper ink a
014730:  73 73 6F 63 69 61 74 65 64 20 77 69 74 68 20 69    ssociated with i
014740:  74 2E 20 54 68 65 20 74 65 78 74 20 70 65 6E 0D    t. The text pen.
014750:  0A 20 20 20 20 20 20 20 69 6E 6B 20 69 73 20 75    .       ink is u
014760:  73 65 64 20 74 6F 20 73 65 74 20 74 68 65 20 66    sed to set the f
014770:  6F 72 65 67 72 6F 75 6E 64 20 70 69 78 65 6C 73    oreground pixels
014780:  20 69 6E 20 20 63 68 61 72 61 63 74 65 72 73 20     in  characters 
014790:  20 28 73 65 65 20 20 73 65 63 74 69 6F 6E 0D 0A     (see  section..
0147A0:  20 20 20 20 20 20 20 34 2E 36 29 2E 20 54 68 65           4.6). The
0147B0:  20 74 65 78 74 20 70 61 70 65 72 20 69 6E 6B 20     text paper ink 
0147C0:  69 73 20 75 73 65 64 20 20 74 6F 20 20 73 65 74    is used  to  set
0147D0:  20 20 74 68 65 20 20 62 61 63 6B 67 72 6F 75 6E      the  backgroun
0147E0:  64 20 20 70 69 78 65 6C 73 20 20 69 6E 0D 0A 20    d  pixels  in.. 
0147F0:  20 20 20 20 20 20 63 68 61 72 61 63 74 65 72 73          characters
014800:  20 61 6E 64 20 74 6F 20 63 6C 65 61 72 20 74 68     and to clear th
014810:  65 20 74 65 78 74 20 77 69 6E 64 6F 77 2E 0D 0A    e text window...
014820:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 70 65 6E    ..       The pen
014830:  73 20 61 6E 64 20 70 61 70 65 72 73 20 63 61 6E    s and papers can
014840:  20 62 65 20 73 65 74 20 74 6F 20 61 6E 79 20 69     be set to any i
014850:  6E 6B 20 74 68 61 74 20 69 73 20 76 61 6C 69 64    nk that is valid
014860:  20 69 6E 20 74 68 65 20 63 75 72 72 65 6E 74 0D     in the current.
014870:  0A 20 20 20 20 20 20 20 73 63 72 65 65 6E 20 6D    .       screen m
014880:  6F 64 65 20 28 73 65 65 20 73 65 63 74 69 6F 6E    ode (see section
014890:  20 36 2E 31 29 2E 20 54 68 65 20 64 65 66 61 75     6.1). The defau
0148A0:  6C 74 20 73 65 74 74 69 6E 67 20 66 6F 72 20 20    lt setting for  
0148B0:  61 20 20 73 74 72 65 61 6D 20 20 68 61 73 0D 0A    a  stream  has..
0148C0:  20 20 20 20 20 20 20 74 68 65 20 70 61 70 65 72           the paper
0148D0:  20 73 65 74 20 74 6F 20 69 6E 6B 20 30 20 61 6E     set to ink 0 an
0148E0:  64 20 74 68 65 20 70 65 6E 20 73 65 74 20 74 6F    d the pen set to
0148F0:  20 69 6E 6B 20 31 2E 20 20 43 68 61 6E 67 69 6E     ink 1.  Changin
014900:  67 20 20 61 20 20 70 65 6E 20 20 6F 72 0D 0A 20    g  a  pen  or.. 
014910:  20 20 20 20 20 20 70 61 70 65 72 20 69 6E 6B 20          paper ink 
014920:  64 6F 65 73 20 6E 6F 74 20 63 68 61 6E 67 65 20    does not change 
014930:  74 68 65 20 73 63 72 65 65 6E 3B 20 69 74 20 6D    the screen; it m
014940:  65 72 65 6C 79 20 61 6C 74 65 72 73 20 68 6F 77    erely alters how
014950:  20 20 63 68 61 72 61 63 74 65 72 73 0D 0A 20 20      characters..  
014960:  20 20 20 20 20 77 69 6C 6C 20 62 65 20 77 72 69         will be wri
014970:  74 74 65 6E 20 69 6E 20 74 68 65 20 66 75 74 75    tten in the futu
014980:  72 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 34 2E    re.....       4.
014990:  34 20 54 65 78 74 20 57 69 6E 64 6F 77 73 2E 0D    4 Text Windows..
0149A0:  0A 20 20 20 20 20 20 20 45 61 63 68 20 73 74 72    .       Each str
0149B0:  65 61 6D 20 20 68 61 73 20 20 61 20 20 74 65 78    eam  has  a  tex
0149C0:  74 20 20 77 69 6E 64 6F 77 20 20 61 73 73 6F 63    t  window  assoc
0149D0:  69 61 74 65 64 20 20 77 69 74 68 20 20 69 74 2E    iated  with  it.
0149E0:  20 20 54 68 69 73 20 20 77 69 6E 64 6F 77 0D 0A      This  window..
0149F0:  20 20 20 20 20 20 20 73 70 65 63 69 66 69 65 73           specifies
014A00:  20 74 68 65 20 61 72 65 61 20 6F 66 20 74 68 65     the area of the
014A10:  20 73 63 72 65 65 6E 20 77 68 65 72 65 20 20 74     screen where  t
014A20:  68 65 20 20 73 74 72 65 61 6D 20 20 69 73 20 20    he  stream  is  
014A30:  70 65 72 6D 69 74 74 65 64 20 20 74 6F 0D 0A 20    permitted  to.. 
014A40:  20 20 20 20 20 20 77 72 69 74 65 20 63 68 61 72          write char
014A50:  61 63 74 65 72 73 2E 20 54 68 69 73 20 20 61 6C    acters. This  al
014A60:  6C 6F 77 73 20 20 64 69 66 66 65 72 65 6E 74 20    lows  different 
014A70:  20 73 74 72 65 61 6D 73 20 20 74 6F 20 20 75 73     streams  to  us
014A80:  65 20 20 64 69 66 66 65 72 65 6E 74 0D 0A 20 20    e  different..  
014A90:  20 20 20 20 20 70 6F 72 74 69 6F 6E 73 20 6F 66         portions of
014AA0:  20 74 68 65 20 73 63 72 65 65 6E 20 77 69 74 68     the screen with
014AB0:  6F 75 74 20 69 6E 74 65 72 66 65 72 69 6E 67 20    out interfering 
014AC0:  77 69 74 68 20 65 61 63 68 20 6F 74 68 65 72 2E    with each other.
014AD0:  0D 0A 0D 0A 20 20 20 20 20 20 20 57 69 6E 64 6F    ....       Windo
014AE0:  77 73 20 61 72 65 20 74 72 69 6D 6D 65 64 20 73    ws are trimmed s
014AF0:  6F 20 74 68 61 74 20 74 68 65 79 20 66 69 74 20    o that they fit 
014B00:  77 69 74 68 69 6E 20 74 68 65 20 63 75 72 72 65    within the curre
014B10:  6E 74 20 73 63 72 65 65 6E 20 20 28 77 68 6F 73    nt screen  (whos
014B20:  65 0D 0A 20 20 20 20 20 20 20 73 69 7A 65 20 76    e..       size v
014B30:  61 72 69 65 73 20 77 69 74 68 20 74 68 65 20 73    aries with the s
014B40:  63 72 65 65 6E 20 6D 6F 64 65 2C 20 73 65 65 20    creen mode, see 
014B50:  73 65 63 74 69 6F 6E 20 36 2E 31 29 2E 20 54 68    section 6.1). Th
014B60:  65 20 73 6D 61 6C 6C 65 73 74 20 20 73 69 7A 65    e smallest  size
014B70:  0D 0A 20 20 20 20 20 20 20 61 20 77 69 6E 64 6F    ..       a windo
014B80:  77 20 61 6C 6C 6F 77 65 64 20 69 73 20 31 20 63    w allowed is 1 c
014B90:  68 61 72 61 63 74 65 72 20 77 69 64 65 20 61 6E    haracter wide an
014BA0:  64 20 31 20 63 68 61 72 61 63 74 65 72 20 68 69    d 1 character hi
014BB0:  67 68 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 42 65    gh.....       Be
014BC0:  66 6F 72 65 20 77 72 69 74 69 6E 67 20 74 6F 20    fore writing to 
014BD0:  74 68 65 20 73 63 72 65 65 6E 20 74 68 65 20 70    the screen the p
014BE0:  6F 73 69 74 69 6F 6E 20 74 6F 20 77 72 69 74 65    osition to write
014BF0:  20 69 73 20 20 66 6F 72 63 65 64 20 20 74 6F 20     is  forced  to 
014C00:  20 6C 69 65 0D 0A 20 20 20 20 20 20 20 69 6E 73     lie..       ins
014C10:  69 64 65 20 74 68 65 20 77 69 6E 64 6F 77 20 28    ide the window (
014C20:  73 65 65 20 73 65 63 74 69 6F 6E 20 34 2E 35 20    see section 4.5 
014C30:  62 65 6C 6F 77 29 2E 20 54 68 69 73 20 6D 61 79    below). This may
014C40:  20 63 61 75 73 65 20 20 74 68 65 20 20 77 69 6E     cause  the  win
014C50:  64 6F 77 0D 0A 20 20 20 20 20 20 20 74 6F 20 72    dow..       to r
014C60:  6F 6C 6C 2E 20 4F 74 68 65 72 20 6F 70 65 72 61    oll. Other opera
014C70:  74 69 6F 6E 73 2C 20 73 75 63 68 20 61 73 20 6F    tions, such as o
014C80:  62 65 79 69 6E 67 20 63 65 72 74 61 69 6E 20 63    beying certain c
014C90:  6F 6E 74 72 6F 6C 20 63 6F 64 65 73 20 20 61 6C    ontrol codes  al
014CA0:  73 6F 0D 0A 20 20 20 20 20 20 20 63 61 75 73 65    so..       cause
014CB0:  20 74 68 65 20 77 72 69 74 65 20 70 6F 73 69 74     the write posit
014CC0:  69 6F 6E 20 74 6F 20 62 65 20 66 6F 72 63 65 64    ion to be forced
014CD0:  20 69 6E 73 69 64 65 20 74 68 65 20 77 69 6E 64     inside the wind
014CE0:  6F 77 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 20    ow.....       A 
014CF0:  74 65 78 74 20 77 69 6E 64 6F 77 20 77 68 69 63    text window whic
014D00:  68 20 64 6F 65 73 20 6E 6F 74 20 63 6F 76 65 72    h does not cover
014D10:  20 74 68 65 20 77 68 6F 6C 65 20 73 63 72 65 65     the whole scree
014D20:  6E 20 69 73 20 72 6F 6C 6C 65 64 20 20 62 79 20    n is rolled  by 
014D30:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 66 69 72     the..       fir
014D40:  6D 77 61 72 65 20 63 6F 70 79 69 6E 67 20 61 72    mware copying ar
014D50:  65 61 73 20 6F 66 20 73 63 72 65 65 6E 20 6D 65    eas of screen me
014D60:  6D 6F 72 79 20 61 72 6F 75 6E 64 2E 20 54 68 65    mory around. The
014D70:  72 65 20 69 73 20 6E 6F 20 20 61 6C 74 65 72 6E    re is no  altern
014D80:  61 74 65 0D 0A 20 20 20 20 20 20 20 6D 65 74 68    ate..       meth
014D90:  6F 64 20 61 76 61 69 6C 61 62 6C 65 2E 20 54 68    od available. Th
014DA0:  69 73 20 6D 61 6B 65 73 20 72 6F 6C 6C 69 6E 67    is makes rolling
014DB0:  20 6C 61 72 67 65 20 77 69 6E 64 6F 77 73 20 61     large windows a
014DC0:  20 66 61 69 72 6C 79 20 20 63 6F 6E 73 75 6D 69     fairly  consumi
014DD0:  6E 67 0D 0A 20 20 20 20 20 20 20 70 72 6F 63 65    ng..       proce
014DE0:  73 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 20    ss.....       A 
014DF0:  74 65 78 74 20 77 69 6E 64 6F 77 20 77 68 69 63    text window whic
014E00:  68 20 63 6F 76 65 72 73 20 74 68 65 20 77 68 6F    h covers the who
014E10:  6C 65 20 73 63 72 65 65 6E 20 69 73 20 20 72 6F    le screen is  ro
014E20:  6C 6C 65 64 20 20 62 79 20 20 75 73 69 6E 67 20    lled  by  using 
014E30:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 68 61 72     the..       har
014E40:  64 77 61 72 65 20 72 61 74 68 65 72 20 74 68 61    dware rather tha
014E50:  6E 20 63 6F 70 79 69 6E 67 20 61 72 65 61 73 20    n copying areas 
014E60:  6F 66 20 6D 65 6D 6F 72 79 2E 20 54 68 65 20 6F    of memory. The o
014E70:  66 66 73 65 74 20 6F 66 20 74 68 65 20 20 73 74    ffset of the  st
014E80:  61 72 74 0D 0A 20 20 20 20 20 20 20 6F 66 20 74    art..       of t
014E90:  68 65 20 73 63 72 65 65 6E 20 69 6E 20 74 68 65    he screen in the
014EA0:  20 73 63 72 65 65 6E 20 6D 65 6D 6F 72 79 20 63     screen memory c
014EB0:  61 6E 20 62 65 20 73 65 74 20 28 73 65 65 20 20    an be set (see  
014EC0:  73 65 63 74 69 6F 6E 20 20 36 2E 34 29 2E 20 20    section  6.4).  
014ED0:  42 79 0D 0A 20 20 20 20 20 20 20 63 68 61 6E 67    By..       chang
014EE0:  69 6E 67 20 74 68 69 73 20 6F 66 66 73 65 74 20    ing this offset 
014EF0:  62 79 20 2B 38 30 20 6F 72 20 2D 38 30 20 74 68    by +80 or -80 th
014F00:  65 20 77 68 6F 6C 65 20 73 63 72 65 65 6E 20 63    e whole screen c
014F10:  61 6E 20 62 65 20 20 72 6F 6C 6C 65 64 20 20 75    an be  rolled  u
014F20:  70 0D 0A 20 20 20 20 20 20 20 6F 72 20 64 6F 77    p..       or dow
014F30:  6E 20 62 79 20 61 20 6C 69 6E 65 20 6F 66 20 63    n by a line of c
014F40:  68 61 72 61 63 74 65 72 73 2E 0D 0A 0D 0A 20 20    haracters.....  
014F50:  20 20 20 20 20 49 74 20 69 73 20 6F 62 76 69 6F         It is obvio
014F60:  75 73 6C 79 20 61 20 67 6F 6F 64 20 69 64 65 61    usly a good idea
014F70:  20 74 6F 20 70 72 65 76 65 6E 74 20 77 69 6E 64     to prevent wind
014F80:  6F 77 73 20 20 74 68 61 74 20 20 61 72 65 20 20    ows  that  are  
014F90:  62 65 69 6E 67 20 20 75 73 65 64 0D 0A 20 20 20    being  used..   
014FA0:  20 20 20 20 66 72 6F 6D 20 6F 76 65 72 6C 61 70        from overlap
014FB0:  70 69 6E 67 2E 20 49 66 20 74 68 65 79 20 61 72    ping. If they ar
014FC0:  65 20 61 6C 6C 6F 77 65 64 20 74 6F 20 6F 76 65    e allowed to ove
014FD0:  72 6C 61 70 20 74 68 65 6E 20 74 68 65 20 20 70    rlap then the  p
014FE0:  6F 72 74 69 6F 6E 20 20 69 6E 0D 0A 20 20 20 20    ortion  in..    
014FF0:  20 20 20 6D 75 6C 74 69 70 6C 65 20 75 73 65 20       multiple use 
015000:  77 69 6C 6C 20 6D 65 72 65 6C 79 20 63 6F 6E 74    will merely cont
015010:  61 69 6E 20 77 68 61 74 65 76 65 72 20 20 77 61    ain whatever  wa
015020:  73 20 20 77 72 69 74 74 65 6E 20 20 74 6F 20 20    s  written  to  
015030:  69 74 20 20 6C 61 73 74 2E 0D 0A 20 20 20 20 20    it  last...     
015040:  20 20 54 68 65 72 65 20 69 73 20 6E 6F 20 70 72      There is no pr
015050:  65 63 65 64 65 6E 63 65 20 6F 66 20 77 69 6E 64    ecedence of wind
015060:  6F 77 73 20 6F 6E 65 20 6F 76 65 72 20 61 6E 6F    ows one over ano
015070:  74 68 65 72 2E 20 41 20 77 69 6E 64 6F 77 20 6F    ther. A window o
015080:  63 63 75 70 79 69 6E 67 0D 0A 20 20 20 20 20 20    ccupying..      
015090:  20 74 68 65 20 77 68 6F 6C 65 20 73 63 72 65 65     the whole scree
0150A0:  6E 20 77 69 6C 6C 20 6F 76 65 72 6C 61 70 20 74    n will overlap t
0150B0:  68 65 20 6F 74 68 65 72 20 77 69 6E 64 6F 77 20    he other window 
0150C0:  61 6E 64 20 73 6F 20 69 66 20 20 74 68 69 73 20    and so if  this 
0150D0:  20 77 69 6E 64 6F 77 0D 0A 20 20 20 20 20 20 20     window..       
0150E0:  69 73 20 72 6F 6C 6C 65 64 20 69 74 20 77 69 6C    is rolled it wil
0150F0:  6C 20 6D 6F 76 65 20 74 68 65 20 63 6F 6E 74 65    l move the conte
015100:  6E 74 73 20 6F 66 20 74 68 65 20 6F 74 68 65 72    nts of the other
015110:  20 77 69 6E 64 6F 77 73 2E 0D 0A 0D 0A 20 20 20     windows.....   
015120:  20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43 34        AMSTRAD CPC4
015130:  36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D    64/664/6128 FIRM
015140:  57 41 52 45 20 20 20 20 20 20 20 20 20 20 20 20    WARE            
015150:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
015160:  20 20 70 61 67 65 20 34 2E 32 0D 0A 0D 0A 0D 0A      page 4.2......
015170:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    ........       T
015180:  68 65 20 64 65 66 61 75 6C 74 20 77 69 6E 64 6F    he default windo
015190:  77 73 2C 20 73 65 74 20 75 70 20 61 74 20 45 4D    ws, set up at EM
0151A0:  53 20 61 6E 64 20 20 61 66 74 65 72 20 20 63 68    S and  after  ch
0151B0:  61 6E 67 69 6E 67 20 20 73 63 72 65 65 6E 20 20    anging  screen  
0151C0:  6D 6F 64 65 2C 0D 0A 20 20 20 20 20 20 20 63 6F    mode,..       co
0151D0:  76 65 72 20 74 68 65 20 77 68 6F 6C 65 20 73 63    ver the whole sc
0151E0:  72 65 65 6E 2E 20 41 6C 6C 20 65 69 67 68 74 20    reen. All eight 
0151F0:  77 69 6E 64 6F 77 73 20 6F 76 65 72 6C 61 70 2E    windows overlap.
015200:  0D 0A 0D 0A 20 20 20 20 20 20 20 34 2E 35 20 54    ....       4.5 T
015210:  68 65 20 43 75 72 72 65 6E 74 20 70 6F 73 69 74    he Current posit
015220:  69 6F 6E 20 61 6E 64 20 74 68 65 20 43 75 72 73    ion and the Curs
015230:  6F 72 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 61    or.....       Ea
015240:  63 68 20 73 74 72 65 61 6D 20 68 61 73 20 61 20    ch stream has a 
015250:  63 75 72 72 65 6E 74 20 70 6F 73 69 74 69 6F 6E    current position
015260:  20 61 73 73 6F 63 69 61 74 65 64 20 77 69 74 68     associated with
015270:  20 69 74 2E 20 54 68 69 73 20 20 69 73 20 20 77     it. This  is  w
015280:  68 65 72 65 0D 0A 20 20 20 20 20 20 20 74 68 65    here..       the
015290:  20 6E 65 78 74 20 63 68 61 72 61 63 74 65 72 20     next character 
0152A0:  74 6F 20 62 65 20 70 72 69 6E 74 65 64 20 6F 6E    to be printed on
0152B0:  20 20 74 68 65 20 20 73 63 72 65 65 6E 20 20 69      the  screen  i
0152C0:  73 20 20 65 78 70 65 63 74 65 64 20 20 74 6F 20    s  expected  to 
0152D0:  20 62 65 0D 0A 20 20 20 20 20 20 20 70 6C 61 63     be..       plac
0152E0:  65 64 2E 20 48 6F 77 65 76 65 72 2C 20 69 66 2C    ed. However, if,
0152F0:  20 77 68 65 6E 20 61 20 63 68 61 72 61 63 74 65     when a characte
015300:  72 20 69 73 20 74 6F 20 62 65 20 20 70 72 69 6E    r is to be  prin
015310:  74 65 64 2C 20 20 74 68 65 20 20 63 75 72 72 65    ted,  the  curre
015320:  6E 74 0D 0A 0D 0A 20 20 20 20 20 20 20 70 6F 73    nt....       pos
015330:  69 74 69 6F 6E 20 69 73 20 66 6F 75 6E 64 20 74    ition is found t
015340:  6F 20 6C 69 65 20 6F 75 74 73 69 64 65 20 74 68    o lie outside th
015350:  65 20 74 65 78 74 20 77 69 6E 64 6F 77 20 20 74    e text window  t
015360:  68 65 6E 20 20 69 74 20 20 69 73 20 20 66 6F 72    hen  it  is  for
015370:  63 65 64 0D 0A 20 20 20 20 20 20 20 69 6E 73 69    ced..       insi
015380:  64 65 2E 20 54 68 65 20 66 6F 6C 6C 6F 77 69 6E    de. The followin
015390:  67 20 73 74 65 70 73 20 61 72 65 20 61 70 70 6C    g steps are appl
0153A0:  69 65 64 20 69 6E 20 74 75 72 6E 20 74 6F 20 66    ied in turn to f
0153B0:  6F 72 63 65 20 20 74 68 65 20 20 63 75 72 72 65    orce  the  curre
0153C0:  6E 74 0D 0A 20 20 20 20 20 20 20 70 6F 73 69 74    nt..       posit
0153D0:  69 6F 6E 20 69 6E 73 69 64 65 20 74 68 65 20 77    ion inside the w
0153E0:  69 6E 64 6F 77 3A 0D 0A 0D 0A 20 20 20 20 20 20    indow:....      
0153F0:  20 20 20 20 20 20 20 20 20 20 31 2F 20 49 66 20              1/ If 
015400:  74 68 65 20 63 75 72 72 65 6E 74 20 70 6F 73 69    the current posi
015410:  74 69 6F 6E 20 69 73 20 6C 65 66 74 20 6F 66 20    tion is left of 
015420:  74 68 65 20 65 64 67 65 20 6F 66 20 74 68 65 20    the edge of the 
015430:  20 77 69 6E 64 6F 77 0D 0A 20 20 20 20 20 20 20     window..       
015440:  20 20 20 20 20 20 20 20 20 74 68 65 6E 20 69 74             then it
015450:  20 69 73 20 6D 6F 76 65 64 20 74 6F 20 74 68 65     is moved to the
015460:  20 72 69 67 68 74 20 65 64 67 65 20 6F 66 20 74     right edge of t
015470:  68 65 20 77 69 6E 64 6F 77 20 61 6E 64 20 20 75    he window and  u
015480:  70 20 20 6F 6E 65 0D 0A 20 20 20 20 20 20 20 20    p  one..        
015490:  20 20 20 20 20 20 20 20 6C 69 6E 65 2E 0D 0A 0D            line....
0154A0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
0154B0:  20 32 2F 20 49 66 20 74 68 65 20 63 75 72 72 65     2/ If the curre
0154C0:  6E 74 20 70 6F 73 69 74 69 6F 6E 20 69 73 20 72    nt position is r
0154D0:  69 67 68 74 20 6F 66 20 74 68 65 20 72 69 67 68    ight of the righ
0154E0:  74 20 65 64 67 65 20 6F 66 20 20 74 68 65 0D 0A    t edge of  the..
0154F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
015500:  77 69 6E 64 6F 77 20 74 68 65 6E 20 69 74 20 69    window then it i
015510:  73 20 6D 6F 76 65 64 20 74 6F 20 74 68 65 20 6C    s moved to the l
015520:  65 66 74 20 65 64 67 65 20 6F 66 20 20 74 68 65    eft edge of  the
015530:  20 20 77 69 6E 64 6F 77 20 20 61 6E 64 0D 0A 20      window  and.. 
015540:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                   d
015550:  6F 77 6E 20 6F 6E 65 20 6C 69 6E 65 2E 0D 0A 0D    own one line....
015560:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
015570:  20 33 2F 20 49 66 20 74 68 65 20 63 75 72 72 65     3/ If the curre
015580:  6E 74 20 70 6F 73 69 74 69 6F 6E 20 69 73 20 6E    nt position is n
015590:  6F 77 20 61 62 6F 76 65 20 74 68 65 20 74 6F 70    ow above the top
0155A0:  20 6C 69 6E 65 20 20 6F 66 20 20 74 68 65 0D 0A     line  of  the..
0155B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0155C0:  77 69 6E 64 6F 77 20 74 68 65 6E 20 69 74 20 69    window then it i
0155D0:  73 20 6D 6F 76 65 64 20 74 6F 20 74 68 65 20 74    s moved to the t
0155E0:  6F 70 20 6C 69 6E 65 20 6F 66 20 74 68 65 20 77    op line of the w
0155F0:  69 6E 64 6F 77 20 61 6E 64 20 74 68 65 0D 0A 20    indow and the.. 
015600:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                   c
015610:  6F 6E 74 65 6E 74 73 20 6F 66 20 74 68 65 20 77    ontents of the w
015620:  69 6E 64 6F 77 20 61 72 65 20 72 6F 6C 6C 65 64    indow are rolled
015630:  20 64 6F 77 6E 20 6F 6E 65 20 6C 69 6E 65 2E 0D     down one line..
015640:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
015650:  20 20 20 34 2F 20 49 66 20 74 68 65 20 63 75 72       4/ If the cur
015660:  72 65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 69 73    rent position is
015670:  20 6E 6F 77 20 62 65 6C 6F 77 20 74 68 65 20 20     now below the  
015680:  62 6F 74 74 6F 6D 20 20 6C 69 6E 65 20 20 6F 66    bottom  line  of
015690:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
0156A0:  20 20 74 68 65 20 77 69 6E 64 6F 77 20 74 68 65      the window the
0156B0:  6E 20 69 74 20 69 73 20 6D 6F 76 65 64 20 74 6F    n it is moved to
0156C0:  20 74 68 65 20 62 6F 74 74 6F 6D 20 6C 69 6E 65     the bottom line
0156D0:  20 6F 66 20 74 68 65 20 20 77 69 6E 64 6F 77 0D     of the  window.
0156E0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
0156F0:  20 61 6E 64 20 74 68 65 20 63 6F 6E 74 65 6E 74     and the content
015700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
015710:  12 00 00 00 02 09 50 E5 12 00 C1 02 00 00 00 02    ......P.........
015720:  12 00 C2 02 00 00 00 02 12 00 C3 02 00 00 00 02    ................
015730:  12 00 C4 02 00 00 00 02 12 00 C5 02 00 00 00 02    ................
015740:  12 00 C6 02 00 00 00 02 12 00 C7 02 00 00 00 02    ................
015750:  12 00 C8 02 00 00 00 02 12 00 C9 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:  73 20 6F 66 20 74 68 65 20 77 69 6E 64 6F 77 20    s of the window 
015810:  61 72 65 20 72 6F 6C 6C 65 64 20 75 70 20 6F 6E    are rolled up on
015820:  65 20 6C 69 6E 65 2E 0D 0A 0D 0A 20 20 20 20 20    e line.....     
015830:  20 20 57 68 65 6E 20 74 68 65 20 63 75 72 73 6F      When the curso
015840:  72 20 69 73 20 65 6E 61 62 6C 65 64 2C 20 74 68    r is enabled, th
015850:  65 20 63 75 72 72 65 6E 74 20 20 70 6F 73 69 74    e current  posit
015860:  69 6F 6E 20 20 69 73 20 20 6D 61 72 6B 65 64 20    ion  is  marked 
015870:  20 62 79 20 20 74 68 65 0D 0A 20 20 20 20 20 20     by  the..      
015880:  20 63 75 72 73 6F 72 20 62 6C 6F 62 2E 20 48 6F     cursor blob. Ho
015890:  77 65 76 65 72 2C 20 62 65 66 6F 72 65 20 70 6C    wever, before pl
0158A0:  61 63 69 6E 67 20 74 68 65 20 63 75 72 73 6F 72    acing the cursor
0158B0:  20 62 6C 6F 62 20 20 6F 6E 20 20 74 68 65 20 20     blob  on  the  
0158C0:  73 63 72 65 65 6E 2C 0D 0A 20 20 20 20 20 20 20    screen,..       
0158D0:  74 68 65 20 63 75 72 72 65 6E 74 20 70 6F 73 69    the current posi
0158E0:  74 69 6F 6E 20 69 73 20 66 6F 72 63 65 64 20 74    tion is forced t
0158F0:  6F 20 6C 69 65 20 69 6E 73 69 64 65 20 74 68 65    o lie inside the
015900:  20 63 75 72 72 65 6E 74 20 20 77 69 6E 64 6F 77     current  window
015910:  20 20 6A 75 73 74 0D 0A 20 20 20 20 20 20 20 61      just..       a
015920:  73 20 69 74 20 69 73 20 62 65 66 6F 72 65 20 61    s it is before a
015930:  20 63 68 61 72 61 63 74 65 72 20 69 73 20 70 6C     character is pl
015940:  61 63 65 64 20 6F 6E 20 74 68 65 20 73 63 72 65    aced on the scre
015950:  65 6E 2E 20 20 54 68 69 73 20 20 6D 61 79 20 20    en.  This  may  
015960:  63 61 75 73 65 0D 0A 20 20 20 20 20 20 20 74 68    cause..       th
015970:  65 20 63 75 72 72 65 6E 74 20 70 6F 73 69 74 69    e current positi
015980:  6F 6E 20 74 6F 20 6D 6F 76 65 2E 0D 0A 0D 0A 20    on to move..... 
015990:  20 20 20 20 20 20 49 66 20 74 68 65 20 63 75 72          If the cur
0159A0:  73 6F 72 20 69 73 20 64 69 73 61 62 6C 65 64 20    sor is disabled 
0159B0:  74 68 65 6E 20 74 68 65 20 63 75 72 72 65 6E 74    then the current
0159C0:  20 70 6F 73 69 74 69 6F 6E 20 20 6D 61 79 20 20     position  may  
0159D0:  6C 69 65 20 20 6F 75 74 73 69 64 65 0D 0A 20 20    lie  outside..  
0159E0:  20 20 20 20 20 74 68 65 20 77 69 6E 64 6F 77 20         the window 
0159F0:  61 6E 64 20 69 74 20 77 69 6C 6C 20 6E 6F 74 20    and it will not 
015A00:  62 65 20 66 6F 72 63 65 64 20 20 69 6E 73 69 64    be forced  insid
015A10:  65 20 20 74 68 65 20 20 77 69 6E 64 6F 77 20 20    e  the  window  
015A20:  75 6E 74 69 6C 2C 20 20 66 6F 72 0D 0A 20 20 20    until,  for..   
015A30:  20 20 20 20 65 78 61 6D 70 6C 65 2C 20 61 20 63        example, a c
015A40:  68 61 72 61 63 74 65 72 20 69 73 20 70 72 69 6E    haracter is prin
015A50:  74 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54    ted.....       T
015A60:  68 65 20 63 75 72 72 65 6E 74 20 70 6F 73 69 74    he current posit
015A70:  69 6F 6E 20 63 61 6E 20 62 65 20 20 63 68 61 6E    ion can be  chan
015A80:  67 65 64 20 20 64 69 72 65 63 74 6C 79 20 20 28    ged  directly  (
015A90:  62 79 20 20 63 61 6C 6C 69 6E 67 20 20 54 58 54    by  calling  TXT
015AA0:  20 20 53 45 54 0D 0A 20 20 20 20 20 20 20 43 55      SET..       CU
015AB0:  52 53 4F 52 2C 20 54 58 54 20 53 45 54 20 52 4F    RSOR, TXT SET RO
015AC0:  57 20 6F 72 20 54 58 54 20 53 45 54 20 43 4F 4C    W or TXT SET COL
015AD0:  55 4D 4E 29 20 6F 72 20 62 79 20 73 65 6E 64 69    UMN) or by sendi
015AE0:  6E 67 20 63 6F 6E 74 72 6F 6C 20 63 6F 64 65 73    ng control codes
015AF0:  20 20 74 6F 0D 0A 20 20 20 20 20 20 20 74 68 65      to..       the
015B00:  20 54 65 78 74 20 56 44 55 2E 20 54 68 65 20 6C     Text VDU. The l
015B10:  6F 63 61 74 69 6F 6E 20 74 68 65 20 63 75 72 72    ocation the curr
015B20:  65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 69 73 20    ent position is 
015B30:  20 6D 6F 76 65 64 20 20 74 6F 20 20 69 73 20 20     moved  to  is  
015B40:  6E 6F 74 0D 0A 20 20 20 20 20 20 20 66 6F 72 63    not..       forc
015B50:  65 64 20 69 6E 73 69 64 65 20 74 68 65 20 77 69    ed inside the wi
015B60:  6E 64 6F 77 20 69 6D 6D 65 64 69 61 74 65 6C 79    ndow immediately
015B70:  2C 20 62 75 74 20 6F 6E 6C 79 20 77 68 65 6E 20    , but only when 
015B80:  74 68 65 20 77 69 6E 64 6F 77 20 20 69 73 20 20    the window  is  
015B90:  74 6F 0D 0A 20 20 20 20 20 20 20 62 65 20 77 72    to..       be wr
015BA0:  69 74 74 65 6E 20 74 6F 2C 20 61 73 20 64 65 73    itten to, as des
015BB0:  63 72 69 62 65 64 20 61 62 6F 76 65 2E 20 54 68    cribed above. Th
015BC0:  69 73 20 61 6C 6C 6F 77 73 20 74 68 65 20 63 75    is allows the cu
015BD0:  72 72 65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 74    rrent position t
015BE0:  6F 0D 0A 20 20 20 20 20 20 20 62 65 20 63 68 61    o..       be cha
015BF0:  6E 67 65 64 20 62 79 20 6D 6F 76 69 6E 67 20 76    nged by moving v
015C00:  69 61 20 61 20 70 6F 73 69 74 69 6F 6E 20 6F 75    ia a position ou
015C10:  74 73 69 64 65 20 74 68 65 20 77 69 6E 64 6F 77    tside the window
015C20:  2C 20 69 66 20 72 65 71 75 69 72 65 64 2E 0D 0A    , if required...
015C30:  0D 0A 20 20 20 20 20 20 20 54 68 65 72 65 20 61    ..       There a
015C40:  72 65 20 74 77 6F 20 77 61 79 73 20 74 6F 20 64    re two ways to d
015C50:  69 73 61 62 6C 65 20 74 68 65 20 63 75 72 73 6F    isable the curso
015C60:  72 20 61 6E 64 20 70 72 65 76 65 6E 74 20 74 68    r and prevent th
015C70:  65 20 20 63 75 72 73 6F 72 20 20 62 6C 6F 62 0D    e  cursor  blob.
015C80:  0A 20 20 20 20 20 20 20 66 72 6F 6D 20 61 70 70    .       from app
015C90:  65 61 72 69 6E 67 20 6F 6E 20 74 68 65 20 73 63    earing on the sc
015CA0:  72 65 65 6E 2E 20 54 68 65 20 66 69 72 73 74 2C    reen. The first,
015CB0:  20 63 75 72 73 6F 72 20 20 6F 6E 2F 6F 66 66 2C     cursor  on/off,
015CC0:  20 20 69 73 20 20 69 6E 74 65 6E 64 65 64 0D 0A      is  intended..
015CD0:  20 20 20 20 20 20 20 66 6F 72 20 75 73 65 20 62           for use b
015CE0:  79 20 73 79 73 74 65 6D 73 20 70 72 6F 67 72 61    y systems progra
015CF0:  6D 73 2E 20 54 68 69 73 20 69 73 20 75 73 65 64    ms. This is used
015D00:  20 69 6E 20 42 41 53 49 43 2C 20 20 66 6F 72 20     in BASIC,  for 
015D10:  20 65 78 61 6D 70 6C 65 2C 20 20 74 6F 0D 0A 20     example,  to.. 
015D20:  20 20 20 20 20 20 68 69 64 65 20 20 74 68 65 20          hide  the 
015D30:  20 63 75 72 73 6F 72 20 20 75 6E 6C 65 73 73 20     cursor  unless 
015D40:  20 69 6E 70 75 74 20 20 69 73 20 20 65 78 70 65     input  is  expe
015D50:  63 74 65 64 2E 20 20 54 68 65 20 20 73 65 63 6F    cted.  The  seco
015D60:  6E 64 2C 20 20 20 63 75 72 73 6F 72 0D 0A 20 20    nd,   cursor..  
015D70:  20 20 20 20 20 65 6E 61 62 6C 65 2F 64 69 73 61         enable/disa
015D80:  62 6C 65 2C 20 69 73 20 69 6E 74 65 6E 64 65 64    ble, is intended
015D90:  20 66 6F 72 20 75 73 65 20 62 79 20 74 68 65 20     for use by the 
015DA0:  75 73 65 72 2E 20 54 68 65 20 63 75 72 73 6F 72    user. The cursor
015DB0:  20 62 6C 6F 62 20 20 77 69 6C 6C 0D 0A 20 20 20     blob  will..   
015DC0:  20 20 20 20 6F 6E 6C 79 20 62 65 20 70 6C 61 63        only be plac
015DD0:  65 64 20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E    ed on the screen
015DE0:  20 69 66 20 69 74 20 69 73 20 62 6F 74 68 20 6F     if it is both o
015DF0:  6E 20 61 6E 64 20 65 6E 61 62 6C 65 64 2E 0D 0A    n and enabled...
015E00:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 6E 20 20 56    ....       In  V
015E10:  31 2E 31 20 20 66 69 72 6D 77 61 72 65 20 20 69    1.1  firmware  i
015E20:  74 20 20 69 73 20 20 70 6F 73 73 69 62 6C 65 20    t  is  possible 
015E30:  20 74 6F 20 20 20 69 6E 74 65 72 72 6F 67 61 74     to   interrogat
015E40:  65 20 20 20 74 68 65 20 20 20 63 75 72 72 65 6E    e   the   curren
015E50:  74 0D 0A 20 20 20 20 20 20 20 65 6E 61 62 6C 65    t..       enable
015E60:  2F 64 69 73 61 62 6C 65 20 73 74 61 74 65 73 20    /disable states 
015E70:  6F 66 20 74 68 65 20 56 44 55 20 61 6E 64 20 63    of the VDU and c
015E80:  75 72 73 6F 72 20 20 66 6F 72 20 20 74 68 65 20    ursor  for  the 
015E90:  20 63 75 72 72 65 6E 74 20 20 73 74 72 65 61 6D     current  stream
015EA0:  0D 0A 20 20 20 20 20 20 20 75 73 69 6E 67 20 54    ..       using T
015EB0:  58 54 20 41 53 4B 20 53 54 41 54 45 2E 0D 0A 0D    XT ASK STATE....
015EC0:  0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41    ...       AMSTRA
015ED0:  44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32    D CPC464/664/612
015EE0:  38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20    8 FIRMWARE      
015EF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
015F00:  20 20 20 20 20 20 20 20 70 61 67 65 20 34 2E 33            page 4.3
015F10:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
015F20:  20 20 20 54 68 65 20 63 75 72 73 6F 72 20 62 6C       The cursor bl
015F30:  6F 62 20 69 73 20 6E 6F 72 6D 61 6C 6C 79 20 61    ob is normally a
015F40:  6E 20 69 6E 76 65 72 73 65 20 70 61 74 63 68 2E    n inverse patch.
015F50:  20 20 54 68 65 20 20 63 68 61 72 61 63 74 65 72      The  character
015F60:  20 20 61 74 20 20 74 68 65 0D 0A 20 20 20 20 20      at  the..     
015F70:  20 20 63 75 72 73 6F 72 20 70 6F 73 69 74 69 6F      cursor positio
015F80:  6E 20 69 73 20 64 69 73 70 6C 61 79 65 64 20 77    n is displayed w
015F90:  69 74 68 20 74 68 65 20 74 65 78 74 20 70 65 6E    ith the text pen
015FA0:  20 61 6E 64 20 70 61 70 65 72 20 69 6E 6B 20 72     and paper ink r
015FB0:  65 76 65 72 73 65 64 2E 0D 0A 20 20 20 20 20 20    eversed...      
015FC0:  20 54 68 69 73 20 6D 61 6B 65 73 20 69 74 20 65     This makes it e
015FD0:  61 73 79 20 74 6F 20 72 65 73 74 6F 72 65 20 20    asy to restore  
015FE0:  74 68 65 20 20 6F 72 69 67 69 6E 61 6C 20 20 66    the  original  f
015FF0:  6F 72 6D 20 20 6F 66 20 20 74 68 65 20 20 63 68    orm  of  the  ch
016000:  61 72 61 63 74 65 72 0D 0A 20 20 20 20 20 20 20    aracter..       
016010:  70 6F 73 69 74 69 6F 6E 20 69 66 20 74 68 65 20    position if the 
016020:  63 75 72 73 6F 72 20 69 73 20 6D 6F 76 65 64 2E    cursor is moved.
016030:  20 49 74 20 69 73 20 70 6F 73 73 69 62 6C 65 20     It is possible 
016040:  66 6F 72 20 74 68 65 20 75 73 65 72 20 74 6F 20    for the user to 
016050:  20 61 6C 74 65 72 0D 0A 20 20 20 20 20 20 20 74     alter..       t
016060:  68 65 20 66 6F 72 6D 20 6F 66 20 74 68 65 20 63    he form of the c
016070:  75 72 73 6F 72 20 62 6C 6F 62 2C 20 69 66 20 72    ursor blob, if r
016080:  65 71 75 69 72 65 64 2C 20 62 79 20 63 68 61 6E    equired, by chan
016090:  67 69 6E 67 20 74 68 65 20 69 6E 64 69 72 65 63    ging the indirec
0160A0:  74 69 6F 6E 73 0D 0A 20 20 20 20 20 20 20 54 58    tions..       TX
0160B0:  54 20 44 52 41 57 20 43 55 52 53 4F 52 20 61 6E    T DRAW CURSOR an
0160C0:  64 20 54 58 54 20 55 4E 44 52 41 57 20 43 55 52    d TXT UNDRAW CUR
0160D0:  53 4F 52 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 34    SOR.....       4
0160E0:  2E 36 20 43 68 61 72 61 63 74 65 72 73 20 61 6E    .6 Characters an
0160F0:  64 20 4D 61 74 72 69 63 65 73 2E 0D 0A 20 20 20    d Matrices...   
016100:  20 20 20 20 41 20 63 68 61 72 61 63 74 65 72 20        A character 
016110:  69 73 20 64 69 73 70 6C 61 79 65 64 20 6F 6E 20    is displayed on 
016120:  74 68 65 20 73 63 72 65 65 6E 20 69 6E 20 61 6E    the screen in an
016130:  20 61 72 65 61 20 38 20 20 70 69 78 65 6C 73 20     area 8  pixels 
016140:  20 28 64 6F 74 73 20 20 6F 6E 0D 0A 20 20 20 20     (dots  on..    
016150:  20 20 20 74 68 65 20 6D 6F 6E 69 74 6F 72 29 20       the monitor) 
016160:  77 69 64 65 20 61 6E 64 20 38 20 20 70 69 78 65    wide and 8  pixe
016170:  6C 73 20 20 68 69 67 68 2E 20 20 54 68 75 73 20    ls  high.  Thus 
016180:  20 74 68 65 20 20 6D 61 78 69 6D 75 6D 20 20 6E     the  maximum  n
016190:  75 6D 62 65 72 20 20 6F 66 0D 0A 20 20 20 20 20    umber  of..     
0161A0:  20 20 63 68 61 72 61 63 74 65 72 73 20 6F 6E 20      characters on 
0161B0:  74 68 65 20 73 63 72 65 65 6E 20 64 65 70 65 6E    the screen depen
0161C0:  64 73 20 75 70 6F 6E 20 74 68 65 20 73 63 72 65    ds upon the scre
0161D0:  65 6E 20 6D 6F 64 65 2C 20 28 73 65 65 20 73 65    en mode, (see se
0161E0:  63 74 69 6F 6E 20 36 2E 0D 0A 20 20 20 20 20 20    ction 6...      
0161F0:  20 31 29 2E 20 45 61 63 68 20 63 68 61 72 61 63     1). Each charac
016200:  74 65 72 20 68 61 73 20 61 20 20 6D 61 74 72 69    ter has a  matri
016210:  78 20 20 77 68 69 63 68 20 20 69 73 20 20 61 6E    x  which  is  an
016220:  20 20 38 20 20 62 79 74 65 20 20 76 65 63 74 6F      8  byte  vecto
016230:  72 20 20 74 68 61 74 0D 0A 20 20 20 20 20 20 20    r  that..       
016240:  73 70 65 63 69 66 69 65 73 20 74 68 65 20 73 68    specifies the sh
016250:  61 70 65 20 6F 66 20 74 68 65 20 63 68 61 72 61    ape of the chara
016260:  63 74 65 72 2E 20 54 68 65 20 66 69 72 73 74 20    cter. The first 
016270:  62 79 74 65 20 20 6F 66 20 20 74 68 65 20 20 20    byte  of  the   
016280:  76 65 63 74 6F 72 0D 0A 20 20 20 20 20 20 20 72    vector..       r
016290:  65 66 65 72 73 20 74 6F 20 74 68 65 20 74 6F 70    efers to the top
0162A0:  20 6C 69 6E 65 20 6F 66 20 74 68 65 20 63 68 61     line of the cha
0162B0:  72 61 63 74 65 72 20 20 61 6E 64 20 20 74 68 65    racter  and  the
0162C0:  20 20 6C 61 73 74 20 20 62 79 74 65 20 20 74 6F      last  byte  to
0162D0:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 62 6F      the..       bo
0162E0:  74 74 6F 6D 20 6C 69 6E 65 20 6F 66 20 74 68 65    ttom line of the
0162F0:  20 63 68 61 72 61 63 74 65 72 2E 20 54 68 65 20     character. The 
016300:  6D 6F 73 74 20 73 69 67 6E 69 66 69 63 61 6E 74    most significant
016310:  20 62 69 74 20 6F 66 20 20 61 20 20 62 79 74 65     bit of  a  byte
016320:  20 20 69 6E 0D 0A 20 20 20 20 20 20 20 74 68 65      in..       the
016330:  20 76 65 63 74 6F 72 20 72 65 66 65 72 73 20 74     vector refers t
016340:  6F 20 74 68 65 20 6C 65 66 74 6D 6F 73 74 20 70    o the leftmost p
016350:  69 78 65 6C 20 6F 6E 20 61 20 6C 69 6E 65 20 6F    ixel on a line o
016360:  66 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20    f the character 
016370:  61 6E 64 0D 0A 20 20 20 20 20 20 20 74 68 65 20    and..       the 
016380:  6C 65 61 73 74 20 73 69 67 6E 69 66 69 63 61 6E    least significan
016390:  74 20 62 69 74 20 72 65 66 65 72 73 20 74 6F 20    t bit refers to 
0163A0:  74 68 65 20 72 69 67 68 74 6D 6F 73 74 20 70 69    the rightmost pi
0163B0:  78 65 6C 20 6F 6E 20 61 20 20 6C 69 6E 65 20 20    xel on a  line  
0163C0:  6F 66 0D 0A 20 20 20 20 20 20 20 74 68 65 20 63    of..       the c
0163D0:  68 61 72 61 63 74 65 72 2E 20 49 66 20 61 20 62    haracter. If a b
0163E0:  69 74 20 69 6E 20 74 68 65 20 6D 61 74 72 69 78    it in the matrix
0163F0:  20 69 73 20 73 65 74 20 74 68 65 6E 20 74 68 65     is set then the
016400:  20 70 69 78 65 6C 20 69 73 20 69 6E 20 20 74 68     pixel is in  th
016410:  65 0D 0A 20 20 20 20 20 20 20 66 6F 72 65 67 72    e..       foregr
016420:  6F 75 6E 64 2E 20 49 66 20 61 20 62 69 74 20 69    ound. If a bit i
016430:  73 20 63 6C 65 61 72 20 74 68 65 6E 20 74 68 65    s clear then the
016440:  20 70 69 78 65 6C 20 69 73 20 69 6E 20 74 68 65     pixel is in the
016450:  20 62 61 63 6B 67 72 6F 75 6E 64 2E 0D 0A 0D 0A     background.....
016460:  20 20 20 20 20 20 20 41 20 66 6F 72 65 67 72 6F           A foregro
016470:  75 6E 64 20 70 69 78 65 6C 20 69 6E 20 74 68 65    und pixel in the
016480:  20 63 68 61 72 61 63 74 65 72 20 69 73 20 61 6C     character is al
016490:  77 61 79 73 20 73 65 74 20 74 6F 20 74 68 65 20    ways set to the 
0164A0:  70 65 6E 20 69 6E 6B 2E 20 20 54 68 65 0D 0A 20    pen ink.  The.. 
0164B0:  20 20 20 20 20 20 74 72 65 61 74 6D 65 6E 74 20          treatment 
0164C0:  6F 66 20 61 20 62 61 63 6B 67 72 6F 75 6E 64 20    of a background 
0164D0:  70 69 78 65 6C 20 64 65 70 65 6E 64 73 20 6F 6E    pixel depends on
0164E0:  20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 77     the character w
0164F0:  72 69 74 65 20 6D 6F 64 65 20 6F 66 0D 0A 20 20    rite mode of..  
016500:  20 20 20 20 20 74 68 65 20 56 44 55 2E 20 49 6E         the VDU. In
016510:  20 74 68 65 20 64 65 66 61 75 6C 74 20 6D 6F 64     the default mod
016520:  65 2C 20 6F 70 61 71 75 65 20 6D 6F 64 65 2C 20    e, opaque mode, 
016530:  62 61 63 6B 67 72 6F 75 6E 64 20 70 69 78 65 6C    background pixel
016540:  73 20 20 61 72 65 20 20 73 65 74 0D 0A 20 20 20    s  are  set..   
016550:  20 20 20 20 74 6F 20 74 68 65 20 70 61 70 65 72        to the paper
016560:  20 69 6E 6B 2E 20 54 68 65 72 65 20 69 73 20 61     ink. There is a
016570:  6E 6F 74 68 65 72 20 6D 6F 64 65 2C 20 74 72 61    nother mode, tra
016580:  6E 73 70 61 72 65 6E 74 20 20 6D 6F 64 65 2C 20    nsparent  mode, 
016590:  20 69 6E 20 20 77 68 69 63 68 0D 0A 20 20 20 20     in  which..    
0165A0:  20 20 20 74 68 65 20 62 61 63 6B 67 72 6F 75 6E       the backgroun
0165B0:  64 20 70 69 78 65 6C 73 20 61 72 65 20 6E 6F 74    d pixels are not
0165C0:  20 61 6C 74 65 72 65 64 2E 20 54 68 75 73 20 69     altered. Thus i
0165D0:  6E 20 74 72 61 6E 73 70 61 72 65 6E 74 20 20 6D    n transparent  m
0165E0:  6F 64 65 2C 20 20 74 68 65 0D 0A 20 20 20 20 20    ode,  the..     
0165F0:  20 20 63 68 61 72 61 63 74 65 72 20 69 73 20 77      character is w
016600:  72 69 74 74 65 6E 20 6F 76 65 72 20 74 68 65 20    ritten over the 
016610:  74 6F 70 20 20 6F 66 20 20 74 68 65 20 20 63 75    top  of  the  cu
016620:  72 72 65 6E 74 20 20 63 6F 6E 74 65 6E 74 73 20    rrent  contents 
016630:  20 6F 66 20 20 74 68 65 0D 0A 20 20 20 20 20 20     of  the..      
016640:  20 73 63 72 65 65 6E 2E 20 54 68 69 73 20 69 73     screen. This is
016650:  20 75 73 65 66 75 6C 20 66 6F 72 20 61 6E 6E 6F     useful for anno
016660:  74 61 74 69 6E 67 20 70 69 63 74 75 72 65 73 20    tating pictures 
016670:  6F 72 20 67 65 6E 65 72 61 74 69 6E 67 20 63 6F    or generating co
016680:  6D 70 6F 73 69 74 65 0D 0A 20 20 20 20 20 20 20    mposite..       
016690:  63 68 61 72 61 63 74 65 72 73 2E 0D 0A 0D 0A 20    characters..... 
0166A0:  20 20 20 20 20 20 54 68 65 20 54 65 78 74 20 56          The Text V
0166B0:  44 55 20 69 73 20 63 61 70 61 62 6C 65 20 6F 66    DU is capable of
0166C0:  20 70 72 69 6E 74 69 6E 67 20 32 35 36 20 64 69     printing 256 di
0166D0:  66 66 65 72 65 6E 74 20 63 68 61 72 61 63 74 65    fferent characte
0166E0:  72 73 2C 20 61 6C 74 68 6F 75 67 68 0D 0A 20 20    rs, although..  
0166F0:  20 20 20 20 20 73 70 65 63 69 61 6C 20 65 66 66         special eff
016700:  6F 72 74 20 69 73 20 72 65 71 75 69 72 65 64 20    ort is required 
016710:  74 6F 20 70 72 69 6E 74 20 74 68 65 20 66 69 72    to print the fir
016720:  73 74 20 33 32 20 63 68 61 72 61 63 74 65 72 73    st 32 characters
016730:  20 77 68 69 63 68 20 20 61 72 65 0D 0A 20 20 20     which  are..   
016740:  20 20 20 20 75 73 75 61 6C 6C 79 20 69 6E 74 65        usually inte
016750:  72 70 72 65 74 65 64 20 61 73 20 63 6F 6E 74 72    rpreted as contr
016760:  6F 6C 20 63 6F 64 65 73 2E 20 54 68 65 20 6D 61    ol codes. The ma
016770:  74 72 69 63 65 73 20 66 6F 72 20 74 68 65 20 20    trices for the  
016780:  63 68 61 72 61 63 74 65 72 73 0D 0A 20 20 20 20    characters..    
016790:  20 20 20 61 72 65 20 6E 6F 72 6D 61 6C 6C 79 20       are normally 
0167A0:  73 74 6F 72 65 64 20 69 6E 20 74 68 65 20 52 4F    stored in the RO
0167B0:  4D 20 62 75 74 20 74 68 65 20 75 73 65 72 20 6D    M but the user m
0167C0:  61 79 20 61 72 72 61 6E 67 65 20 66 6F 72 20 61    ay arrange for a
0167D0:  6E 79 20 6E 75 6D 62 65 72 0D 0A 20 20 20 20 20    ny number..     
0167E0:  20 20 6F 66 20 74 68 65 20 63 68 61 72 61 63 74      of the charact
0167F0:  65 72 73 20 74 6F 20 68 61 76 65 20 6D 61 74 72    ers to have matr
016800:  69 63 65 73 20 73 74 6F 72 65 64 20 69 6E 20 52    ices stored in R
016810:  41 4D 20 77 68 65 72 65 20 74 68 65 79 20 20 6D    AM where they  m
016820:  61 79 20 20 74 68 65 6E 0D 0A 20 20 20 20 20 20    ay  then..      
016830:  20 62 65 20 61 6C 74 65 72 65 64 2E 20 54 68 65     be altered. The
016840:  20 64 65 66 61 75 6C 74 20 73 65 74 74 69 6E 67     default setting
016850:  2C 20 61 74 20 45 4D 53 2C 20 69 73 20 74 6F 20    , at EMS, is to 
016860:  68 61 76 65 20 61 6C 6C 20 20 74 68 65 20 20 6D    have all  the  m
016870:  61 74 72 69 63 65 73 0D 0A 20 20 20 20 20 20 20    atrices..       
016880:  69 6E 20 52 4F 4D 2E 20 28 42 41 53 49 43 20 74    in ROM. (BASIC t
016890:  61 6B 65 73 20 73 70 65 63 69 61 6C 20 61 63 74    akes special act
0168A0:  69 6F 6E 20 64 75 72 69 6E 67 20 69 74 73 20 6F    ion during its o
0168B0:  77 6E 20 20 69 6E 69 74 69 61 6C 69 7A 61 74 69    wn  initializati
0168C0:  6F 6E 20 20 74 6F 0D 0A 20 20 20 20 20 20 20 63    on  to..       c
0168D0:  72 65 61 74 65 20 31 36 20 27 75 73 65 72 20 64    reate 16 'user d
0168E0:  65 66 69 6E 65 64 27 20 20 6D 61 74 72 69 63 65    efined'  matrice
0168F0:  73 2E 29 20 20 54 68 65 20 20 64 65 66 61 75 6C    s.)  The  defaul
016900:  74 20 20 63 68 61 72 61 63 74 65 72 20 20 73 65    t  character  se
016910:  74 20 20 69 73 0D 0A 20 20 20 20 20 20 20 64 65    t  is..       de
016920:  73 63 72 69 62 65 64 20 69 6E 20 41 70 70 65 6E    scribed in Appen
016930:  64 69 78 20 56 31 2E 0D 0A 0D 0A 20 20 20 20 20    dix V1.....     
016940:  20 20 57 68 65 6E 20 74 68 65 20 75 73 65 72 20      When the user 
016950:  73 65 74 73 20 75 70 20 61 20 74 61 62 6C 65 20    sets up a table 
016960:  6F 66 20 75 73 65 72 20 64 65 66 69 6E 65 64 20    of user defined 
016970:  6D 61 74 72 69 63 65 73 2C 20 62 79 20 63 61 6C    matrices, by cal
016980:  6C 69 6E 67 20 54 58 54 0D 0A 20 20 20 20 20 20    ling TXT..      
016990:  20 53 45 54 20 4D 20 54 41 42 4C 45 2C 20 69 74     SET M TABLE, it
0169A0:  20 69 73 20 20 69 6E 69 74 69 61 6C 69 7A 65 64     is  initialized
0169B0:  20 20 77 69 74 68 20 20 74 68 65 20 20 63 75 72      with  the  cur
0169C0:  72 65 6E 74 20 20 73 65 74 74 69 6E 67 73 20 20    rent  settings  
0169D0:  6F 66 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20    of  the..       
0169E0:  6D 61 74 72 69 63 65 73 20 66 72 6F 6D 20 52 4F    matrices from RO
0169F0:  4D 20 6F 72 20 52 41 4D 2E 20 54 68 69 73 20 6D    M or RAM. This m
016A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
016A10:  13 00 00 00 02 09 50 E5 13 00 C1 02 00 00 00 02    ......P.........
016A20:  13 00 C2 02 00 00 00 02 13 00 C3 02 00 00 00 02    ................
016A30:  13 00 C4 02 00 00 00 02 13 00 C5 02 00 00 00 02    ................
016A40:  13 00 C6 02 00 00 00 02 13 00 C7 02 00 00 00 02    ................
016A50:  13 00 C8 02 00 00 00 02 13 00 C9 02 00 00 00 02    ................
016A60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016A70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016A80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016A90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016AF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
016B00:  65 61 6E 73 20 74 68 61 74 20 65 78 74 65 6E 64    eans that extend
016B10:  69 6E 67 20 20 74 68 61 74 20 20 74 61 62 6C 65    ing  that  table
016B20:  20 20 64 6F 65 73 0D 0A 20 20 20 20 20 20 20 6E      does..       n
016B30:  6F 74 20 61 6C 74 65 72 20 74 68 65 20 20 63 75    ot alter the  cu
016B40:  72 72 65 6E 74 20 20 6D 61 74 72 69 63 65 73 2E    rrent  matrices.
016B50:  20 20 43 6F 6E 74 72 61 63 74 69 6E 67 20 20 74      Contracting  t
016B60:  68 65 20 20 74 61 62 6C 65 20 20 77 69 6C 6C 20    he  table  will 
016B70:  20 6D 61 6B 65 0D 0A 20 20 20 20 20 20 20 74 68     make..       th
016B80:  65 20 63 68 61 72 61 63 74 65 72 73 20 6C 6F 73    e characters los
016B90:  74 20 72 65 76 65 72 74 20 74 6F 20 74 68 65 69    t revert to thei
016BA0:  72 20 64 65 66 61 75 6C 74 20 6D 61 74 72 69 63    r default matric
016BB0:  65 20 69 6E 20 52 4F 4D 2E 0D 0A 0D 0A 20 20 20    e in ROM.....   
016BC0:  20 20 20 20 57 68 65 6E 20 63 68 61 72 61 63 74        When charact
016BD0:  65 72 73 20 61 72 65 20 72 65 61 64 20 66 72 6F    ers are read fro
016BE0:  6D 20 74 68 65 20 73 63 72 65 65 6E 20 28 62 79    m the screen (by
016BF0:  20 63 61 6C 6C 69 6E 67 20 28 54 58 54 20 52 44     calling (TXT RD
016C00:  20 43 48 41 52 29 20 74 68 65 0D 0A 20 20 20 20     CHAR) the..    
016C10:  20 20 20 70 69 78 65 6C 73 20 6F 6E 20 74 68 65       pixels on the
016C20:  20 73 63 72 65 65 6E 20 61 72 65 20 63 6F 6E 76     screen are conv
016C30:  65 72 74 65 64 20 74 6F 20 74 68 65 20 66 6F 72    erted to the for
016C40:  6D 20 6F 66 20 61 20 20 6D 61 74 72 69 78 2E 20    m of a  matrix. 
016C50:  20 54 68 69 73 20 20 69 73 0D 0A 20 20 20 20 20     This  is..     
016C60:  20 20 63 6F 6D 70 61 72 65 64 20 77 69 74 68 20      compared with 
016C70:  74 68 65 20 63 75 72 72 65 6E 74 20 63 68 61 72    the current char
016C80:  61 63 74 65 72 20 6D 61 74 72 69 63 65 73 20 74    acter matrices t
016C90:  6F 20 66 69 6E 64 20 20 77 68 69 63 68 20 20 63    o find  which  c
016CA0:  68 61 72 61 63 74 65 72 0D 0A 20 20 20 20 20 20    haracter..      
016CB0:  20 69 74 20 69 73 2E 20 54 68 69 73 20 6D 65 61     it is. This mea
016CC0:  6E 73 20 74 68 61 74 20 63 68 61 6E 67 69 6E 67    ns that changing
016CD0:  20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 6D     the character m
016CE0:  61 74 72 69 63 65 73 20 6F 72 20 61 6C 74 65 72    atrices or alter
016CF0:  69 6E 67 20 74 68 65 0D 0A 20 20 20 20 20 20 20    ing the..       
016D00:  73 63 72 65 65 6E 20 6D 61 79 20 6D 61 6B 65 20    screen may make 
016D10:  61 20 63 68 61 72 61 63 74 65 72 20 75 6E 72 65    a character unre
016D20:  63 6F 67 6E 69 73 61 62 6C 65 2C 20 20 69 6E 20    cognisable,  in 
016D30:  20 70 61 72 74 69 63 75 6C 61 72 2C 20 20 63 68     particular,  ch
016D40:  61 6E 67 69 6E 67 0D 0A 20 20 20 20 20 20 20 74    anging..       t
016D50:  68 65 20 70 65 6E 20 6F 72 20 70 61 70 65 72 20    he pen or paper 
016D60:  69 6E 6B 20 20 63 61 6E 20 20 63 61 75 73 65 20    ink  can  cause 
016D70:  20 63 6F 6E 66 75 73 69 6F 6E 2E 20 20 55 73 75     confusion.  Usu
016D80:  61 6C 6C 79 20 20 74 68 65 73 65 20 20 70 72 6F    ally  these  pro
016D90:  62 6C 65 6D 73 0D 0A 20 20 20 20 20 20 20 72 65    blems..       re
016DA0:  73 75 6C 74 20 69 6E 20 74 68 65 20 63 68 61 72    sult in the char
016DB0:  61 63 74 65 72 20 61 70 70 65 61 72 69 6E 67 20    acter appearing 
016DC0:  74 6F 20 62 65 20 61 20 73 70 61 63 65 20 28 63    to be a space (c
016DD0:  68 61 72 61 63 74 65 72 20 23 32 30 29 20 61 6E    haracter #20) an
016DE0:  64 20 73 6F 0D 0A 20 20 20 20 20 20 20 73 70 65    d so..       spe
016DF0:  63 69 61 6C 20 70 72 65 63 61 75 74 69 6F 6E 73    cial precautions
016E00:  20 61 72 65 20 74 61 6B 65 6E 20 74 6F 20 61 76     are taken to av
016E10:  6F 69 64 20 67 65 6E 65 72 61 74 69 6E 67 20 73    oid generating s
016E20:  70 61 63 65 73 20 2D 20 61 66 74 65 72 20 20 73    paces - after  s
016E30:  6F 6D 65 0D 0A 20 20 20 20 20 20 20 69 6E 6B 20    ome..       ink 
016E40:  63 68 61 6E 67 65 73 20 72 65 61 6C 20 73 70 61    changes real spa
016E50:  63 65 73 20 6D 61 79 20 62 65 20 72 65 61 64 20    ces may be read 
016E60:  61 73 20 62 6C 6F 63 6B 20 67 72 61 70 68 69 63    as block graphic
016E70:  73 20 20 63 68 61 72 61 63 74 65 72 73 20 20 23    s  characters  #
016E80:  38 30 0D 0A 20 20 20 20 20 20 20 6F 72 20 23 38    80..       or #8
016E90:  46 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 6F 20    F.....       To 
016EA0:  61 6C 6C 6F 77 20 74 68 65 20 75 73 65 72 20 74    allow the user t
016EB0:  6F 20 63 68 61 6E 67 65 20 68 6F 77 20 63 68 61    o change how cha
016EC0:  72 61 63 74 65 72 73 20 61 72 65 20 20 77 72 69    racters are  wri
016ED0:  74 74 65 6E 20 20 74 6F 20 20 61 6E 64 20 20 72    tten  to  and  r
016EE0:  65 61 64 0D 0A 20 20 20 20 20 20 20 66 72 6F 6D    ead..       from
016EF0:  20 74 68 65 20 73 63 72 65 65 6E 2C 20 74 68 65     the screen, the
016F00:  20 69 6E 64 69 72 65 63 74 69 6F 6E 73 20 54 58     indirections TX
016F10:  54 20 57 52 49 54 45 20 43 48 41 52 20 61 6E 64    T WRITE CHAR and
016F20:  20 54 58 54 20 20 55 4E 57 52 49 54 45 20 20 61     TXT  UNWRITE  a
016F30:  72 65 0D 0A 20 20 20 20 20 20 20 70 72 6F 76 69    re..       provi
016F40:  64 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ded.....       A
016F50:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
016F60:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
016F70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
016F80:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
016F90:  65 20 34 2E 34 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    e 4.4...........
016FA0:  0A 0D 0A 20 20 20 20 20 20 20 34 2E 37 20 43 68    ...       4.7 Ch
016FB0:  61 72 61 63 74 65 72 20 4F 75 74 70 75 74 20 61    aracter Output a
016FC0:  6E 64 20 43 6F 6E 74 72 6F 6C 20 43 6F 64 65 73    nd Control Codes
016FD0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
016FE0:  6D 61 69 6E 20 63 68 61 72 61 63 74 65 72 20 6F    main character o
016FF0:  75 74 70 75 74 20 72 6F 75 74 69 6E 65 20 66 6F    utput routine fo
017000:  72 20 74 68 65 20 54 65 78 74 20 56 44 55 20 69    r the Text VDU i
017010:  73 20 54 58 54 20 4F 55 54 50 55 54 2E 20 54 68    s TXT OUTPUT. Th
017020:  69 73 0D 0A 20 20 20 20 20 20 20 6F 62 65 79 73    is..       obeys
017030:  20 63 6F 6E 74 72 6F 6C 20 63 6F 64 65 73 20 28     control codes (
017040:  63 68 61 72 61 63 74 65 72 20 30 2E 2E 33 31 29    character 0..31)
017050:  20 61 6E 64 20 70 72 69 6E 74 73 20 61 6C 6C 20     and prints all 
017060:  6F 74 68 65 72 20 63 68 61 72 61 63 74 65 72 73    other characters
017070:  2E 0D 0A 20 20 20 20 20 20 20 43 68 61 72 61 63    ...       Charac
017080:  74 65 72 73 20 20 73 65 6E 74 20 20 74 6F 20 20    ters  sent  to  
017090:  54 58 54 20 20 4F 55 54 50 55 54 20 20 70 61 73    TXT  OUTPUT  pas
0170A0:  73 20 20 74 68 72 6F 75 67 68 20 20 76 61 72 69    s  through  vari
0170B0:  6F 75 73 20 20 6C 65 76 65 6C 73 20 20 20 6F 66    ous  levels   of
0170C0:  0D 0A 20 20 20 20 20 20 20 69 6E 64 69 72 65 63    ..       indirec
0170D0:  74 69 6F 6E 20 61 6E 64 20 63 61 6E 20 62 65 20    tion and can be 
0170E0:  64 65 6C 74 20 77 69 74 68 20 62 79 20 76 61 72    delt with by var
0170F0:  69 6F 75 73 20 6F 75 74 70 75 74 20 72 6F 75 74    ious output rout
017100:  69 6E 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    ines.....       
017110:  54 58 54 20 4F 55 54 50 55 54 20 75 73 65 73 20    TXT OUTPUT uses 
017120:  74 68 65 20 54 58 54 20 4F 55 54 20 41 43 54 49    the TXT OUT ACTI
017130:  4F 4E 20 69 6E 64 69 72 65 63 74 69 6F 6E 20 74    ON indirection t
017140:  6F 20 73 6F 72 74 20 6F 75 74 20 77 68 65 74 68    o sort out wheth
017150:  65 72 20 74 68 65 0D 0A 20 20 20 20 20 20 20 63    er the..       c
017160:  68 61 72 61 63 74 65 72 20 69 73 20 61 20 70 72    haracter is a pr
017170:  69 6E 74 69 6E 67 20 63 68 61 72 61 63 74 65 72    inting character
017180:  2C 20 69 73 20 61 20 63 6F 6E 74 72 6F 6C 20 63    , is a control c
017190:  6F 64 65 20 74 6F 20 62 65 20 20 6F 62 65 79 65    ode to be  obeye
0171A0:  64 20 20 6F 72 0D 0A 20 20 20 20 20 20 20 69 73    d  or..       is
0171B0:  20 74 68 65 20 70 61 72 61 6D 65 74 65 72 20 6F     the parameter o
0171C0:  66 20 61 20 63 6F 6E 74 72 6F 6C 20 63 6F 64 65    f a control code
0171D0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 58 54 20    .....       TXT 
0171E0:  4F 55 54 20 41 43 54 49 4F 4E 20 6E 6F 72 6D 61    OUT ACTION norma
0171F0:  6C 6C 79 20 63 61 6C 6C 73 20 54 58 54 20 57 52    lly calls TXT WR
017200:  49 54 45 20 43 48 41 52 20 74 6F 20 20 70 72 69    ITE CHAR to  pri
017210:  6E 74 20 20 63 68 61 72 61 63 74 65 72 73 20 20    nt  characters  
017220:  6F 6E 0D 0A 20 20 20 20 20 20 20 74 68 65 20 73    on..       the s
017230:  63 72 65 65 6E 2E 20 48 6F 77 65 76 65 72 2C 20    creen. However, 
017240:  69 66 20 74 68 65 20 67 72 61 70 68 69 63 73 20    if the graphics 
017250:  63 68 61 72 61 63 74 65 72 20 77 72 69 74 65 20    character write 
017260:  6D 6F 64 65 20 69 73 20 20 73 65 6C 65 63 74 65    mode is  selecte
017270:  64 0D 0A 20 20 20 20 20 20 20 74 68 65 6E 20 63    d..       then c
017280:  68 61 72 61 63 74 65 72 73 20 61 72 65 20 70 72    haracters are pr
017290:  69 6E 74 65 64 20 75 73 69 6E 67 20 74 68 65 20    inted using the 
0172A0:  20 47 72 61 70 68 69 63 73 20 20 56 44 55 20 20     Graphics  VDU  
0172B0:  63 68 61 72 61 63 74 65 72 20 20 77 72 69 74 65    character  write
0172C0:  0D 0A 20 20 20 20 20 20 20 72 6F 75 74 69 6E 65    ..       routine
0172D0:  20 28 73 65 65 20 35 2E 36 20 62 65 6C 6F 77 2E     (see 5.6 below.
0172E0:  29 20 54 68 69 73 20 6D 6F 64 65 20 63 61 6E 20    ) This mode can 
0172F0:  62 65 20 73 65 6C 65 63 74 65 64 20 6F 6E 20 61    be selected on a
017300:  20 20 63 68 61 72 61 63 74 65 72 20 20 62 79 0D      character  by.
017310:  0A 20 20 20 20 20 20 20 63 68 61 72 61 63 74 65    .       characte
017320:  72 20 62 61 73 69 73 20 75 73 69 6E 67 20 61 20    r basis using a 
017330:  63 6F 6E 74 72 6F 6C 20 63 6F 64 65 20 6F 72 20    control code or 
017340:  6F 6E 20 61 6C 6C 20 20 63 68 61 72 61 63 74 65    on all  characte
017350:  72 73 20 20 73 65 6E 74 20 20 28 73 65 65 0D 0A    rs  sent  (see..
017360:  20 20 20 20 20 20 20 54 58 54 20 53 45 54 20 47           TXT SET G
017370:  52 41 50 48 49 43 29 2E 20 20 57 68 65 6E 20 20    RAPHIC).  When  
017380:  67 72 61 70 68 69 63 20 20 63 68 61 72 61 63 74    graphic  charact
017390:  65 72 20 20 77 72 69 74 65 20 20 6D 6F 64 65 20    er  write  mode 
0173A0:  20 69 73 20 20 73 65 6C 65 63 74 65 64 0D 0A 20     is  selected.. 
0173B0:  20 20 20 20 20 20 63 6F 6E 74 72 6F 6C 20 63 6F          control co
0173C0:  64 65 73 20 61 72 65 20 6E 6F 74 20 6F 62 65 79    des are not obey
0173D0:  65 64 20 62 75 74 20 61 72 65 20 70 72 69 6E 74    ed but are print
0173E0:  65 64 20 62 79 20 74 68 65 20 20 67 72 61 70 68    ed by the  graph
0173F0:  69 63 73 20 20 72 6F 75 74 69 6E 65 0D 0A 20 20    ics  routine..  
017400:  20 20 20 20 20 69 6E 73 74 65 61 64 2E 0D 0A 20         instead... 
017410:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                   T
017420:  58 54 20 4F 55 54 20 41 43 54 49 4F 4E 20 64 65    XT OUT ACTION de
017430:  61 6C 73 20 77 69 74 68 20 61 20 63 6F 6E 74 72    als with a contr
017440:  6F 6C 20 20 63 6F 64 65 20 20 69 6E 20 20 74 68    ol  code  in  th
017450:  65 20 20 66 6F 6C 6C 6F 77 69 6E 67 0D 0A 20 20    e  following..  
017460:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 6D 61                  ma
017470:  6E 6E 65 72 3A 0D 0A 0D 0A 20 20 20 20 20 20 20    nner:....       
017480:  20 20 20 20 20 20 20 20 20 31 2F 20 54 68 65 20             1/ The 
017490:  63 6F 64 65 20 69 73 20 73 74 6F 72 65 64 20 20    code is stored  
0174A0:  61 74 20 20 74 68 65 20 20 73 74 61 72 74 20 20    at  the  start  
0174B0:  6F 66 20 20 74 68 65 20 20 63 6F 6E 74 72 6F 6C    of  the  control
0174C0:  20 20 63 6F 64 65 0D 0A 20 20 20 20 20 20 20 20      code..        
0174D0:  20 20 20 20 20 20 20 20 62 75 66 66 65 72 2E 0D            buffer..
0174E0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
0174F0:  20 32 2F 20 54 68 65 20 63 6F 64 65 20 69 73 20     2/ The code is 
017500:  6C 6F 6F 6B 65 64 20 75 70 20 69 6E 20 74 68 65    looked up in the
017510:  20 63 6F 6E 74 72 6F 6C 20 63 6F 64 65 20 20 74     control code  t
017520:  61 62 6C 65 20 20 74 6F 20 20 66 69 6E 64 0D 0A    able  to  find..
017530:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
017540:  6F 75 74 20 68 6F 77 20 6D 61 6E 79 20 70 61 72    out how many par
017550:  61 6D 65 74 65 72 73 20 69 74 20 72 65 71 75 69    ameters it requi
017560:  72 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20    res.....        
017570:  20 20 20 20 20 20 20 20 33 2F 20 49 66 20 6E 6F            3/ If no
017580:  20 70 61 72 61 6D 65 74 65 72 73 20 61 72 65 20     parameters are 
017590:  72 65 71 75 69 72 65 64 20 67 6F 20 64 69 72 65    required go dire
0175A0:  63 74 6C 79 20 74 6F 20 73 74 65 70 20 35 2E 0D    ctly to step 5..
0175B0:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
0175C0:  20 20 20 34 2F 20 49 66 20 6F 6E 65 20 6F 72 20       4/ If one or 
0175D0:  6D 6F 72 65 20 70 61 72 61 6D 65 74 65 72 73 20    more parameters 
0175E0:  61 72 65 20 72 65 71 75 69 72 65 64 20 74 68 65    are required the
0175F0:  20 54 58 54 20 4F 55 54 20 20 41 43 54 49 4F 4E     TXT OUT  ACTION
017600:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
017610:  20 20 72 65 74 75 72 6E 73 20 62 75 74 20 74 68      returns but th
017620:  65 20 6E 65 78 74 20 63 68 61 72 61 63 74 65 72    e next character
017630:  73 20 73 65 6E 74 20 74 6F 20 69 74 20 61 72 65    s sent to it are
017640:  20 61 64 64 65 64 20 20 74 6F 20 20 74 68 65 0D     added  to  the.
017650:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
017660:  20 63 6F 6E 74 72 6F 6C 20 63 6F 64 65 20 62 75     control code bu
017670:  66 66 65 72 20 72 61 74 68 65 72 20 74 68 61 6E    ffer rather than
017680:  20 62 65 69 6E 67 20 70 72 69 6E 74 65 64 20 6F     being printed o
017690:  72 20 6F 62 65 79 65 64 2E 20 54 68 69 73 0D 0A    r obeyed. This..
0176A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0176B0:  63 6F 6E 74 69 6E 75 65 73 20 75 6E 74 69 6C 20    continues until 
0176C0:  73 75 66 66 69 63 69 65 6E 74 20 20 70 61 72 61    sufficient  para
0176D0:  6D 65 74 65 72 20 20 63 68 61 72 61 63 74 65 72    meter  character
0176E0:  73 20 20 68 61 76 65 20 20 62 65 65 6E 0D 0A 20    s  have  been.. 
0176F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                   r
017700:  65 63 65 69 76 65 64 2E 0D 0A 0D 0A 20 20 20 20    eceived.....    
017710:  20 20 20 20 20 20 20 20 20 20 20 20 35 2F 20 54                5/ T
017720:  68 65 20 63 6F 64 65 20 69 73 20 6C 6F 6F 6B 65    he code is looke
017730:  64 20 75 70 20 69 6E 20 74 68 65 20 63 6F 6E 74    d up in the cont
017740:  72 6F 6C 20 63 6F 64 65 20 74 61 62 6C 65 20 74    rol code table t
017750:  6F 20 67 65 74 20 74 68 65 0D 0A 20 20 20 20 20    o get the..     
017760:  20 20 20 20 20 20 20 20 20 20 20 61 64 64 72 65               addre
017770:  73 73 20 6F 66 20 74 68 65 20 72 6F 75 74 69 6E    ss of the routin
017780:  65 20 74 6F 20 63 61 6C 6C 20 74 6F 20 70 65 72    e to call to per
017790:  66 6F 72 6D 20 20 74 68 65 20 20 63 6F 6E 74 72    form  the  contr
0177A0:  6F 6C 20 20 63 6F 64 65 0D 0A 20 20 20 20 20 20    ol  code..      
0177B0:  20 20 20 20 20 20 20 20 20 20 61 6E 64 20 74 68              and th
0177C0:  69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 74 68    is routine is th
0177D0:  65 6E 20 65 78 65 63 75 74 65 64 2E 0D 0A 0D 0A    en executed.....
0177E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0177F0:  36 2F 20 20 54 68 65 20 20 63 6F 6E 74 72 6F 6C    6/  The  control
017800:  20 20 63 6F 64 65 20 20 62 75 66 66 65 72 20 20      code  buffer  
017810:  69 73 20 20 64 69 73 63 61 72 64 65 64 20 20 61    is  discarded  a
017820:  6E 64 20 20 74 68 65 20 20 6E 65 78 74 0D 0A 20    nd  the  next.. 
017830:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                   c
017840:  68 61 72 61 63 74 65 72 20 73 65 6E 74 20 6D 61    haracter sent ma
017850:  79 20 62 65 20 70 72 69 6E 74 65 64 20 6F 72 20    y be printed or 
017860:  6D 61 79 20 62 65 20 74 68 65 20 73 74 61 72 74    may be the start
017870:  20 20 6F 66 20 20 61 20 20 6E 65 77 0D 0A 20 20      of  a  new..  
017880:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6F                  co
017890:  6E 74 72 6F 6C 20 63 6F 64 65 20 73 65 71 75 65    ntrol code seque
0178A0:  6E 63 65 2E 0D 0A 20 20 20 20 20 20 20 54 68 65    nce...       The
0178B0:  20 75 73 65 72 20 63 61 6E 20 63 68 61 6E 67 65     user can change
0178C0:  20 74 68 65 20 6F 70 65 72 61 74 69 6F 6E 20 6F     the operation o
0178D0:  66 20 61 20 63 6F 6E 74 72 6F 6C 20 20 63 6F 64    f a control  cod
0178E0:  65 20 20 79 20 20 63 68 61 6E 67 69 6E 67 20 20    e  y  changing  
0178F0:  74 68 65 0D 0A 20 20 20 20 20 20 20 65 6E 74 72    the..       entr
017900:  79 20 66 6F 72 20 69 74 20 69 6E 20 74 68 65 20    y for it in the 
017910:  63 6F 6E 74 72 6F 6C 20 63 6F 64 65 20 74 61 62    control code tab
017920:  6C 65 20 28 73 65 65 20 54 58 54 20 20 47 45 54    le (see TXT  GET
017930:  20 20 43 4F 4E 54 52 4F 4C 53 29 2E 20 20 54 68      CONTROLS).  Th
017940:  69 73 0D 0A 20 20 20 20 20 20 20 63 6F 6E 74 61    is..       conta
017950:  69 6E 73 20 61 20 33 20 62 79 74 65 20 65 6E 74    ins a 3 byte ent
017960:  72 79 20 66 6F 72 20 20 65 61 63 68 20 20 63 6F    ry for  each  co
017970:  64 65 20 20 61 6E 64 20 20 65 6E 74 72 69 65 73    de  and  entries
017980:  20 20 61 72 65 20 20 73 74 6F 72 65 64 20 20 69      are  stored  i
017990:  6E 0D 0A 20 20 20 20 20 20 20 61 73 63 65 6E 64    n..       ascend
0179A0:  69 6E 67 20 6F 72 64 65 72 20 28 69 2E 65 2E 20    ing order (i.e. 
0179B0:  74 68 65 20 65 6E 74 72 79 20 66 6F 72 20 23 30    the entry for #0
0179C0:  30 20 66 69 72 73 74 2C 20 23 30 31 20 6E 65 78    0 first, #01 nex
0179D0:  74 20 61 6E 64 20 73 6F 20 6F 6E 29 2E 0D 0A 0D    t and so on)....
0179E0:  0A 20 20 20 20 20 20 20 42 69 74 73 20 30 2E 2E    .       Bits 0..
0179F0:  33 20 6F 66 20 74 68 65 20 66 69 72 73 74 20 62    3 of the first b
017A00:  79 74 65 20 6F 66 20 65 61 63 68 20 20 65 6E 74    yte of each  ent
017A10:  72 79 20 20 73 70 65 63 69 66 69 65 73 20 20 74    ry  specifies  t
017A20:  68 65 20 20 6E 75 6D 62 65 72 20 20 6F 66 0D 0A    he  number  of..
017A30:  20 20 20 20 20 20 20 70 61 72 61 6D 65 74 65 72           parameter
017A40:  73 20 72 65 71 75 69 72 65 64 2E 20 54 68 69 73    s required. This
017A50:  20 6D 75 73 74 20 6C 69 65 20 69 6E 20 74 68 65     must lie in the
017A60:  20 72 61 6E 67 65 20 30 2E 2E 39 20 20 61 73 20     range 0..9  as 
017A70:  20 74 68 65 20 20 63 6F 6E 74 72 6F 6C 0D 0A 20     the  control.. 
017A80:  20 20 20 20 20 20 63 6F 64 65 20 62 75 66 66 65          code buffe
017A90:  72 20 69 73 20 6F 6E 6C 79 20 63 61 70 61 62 6C    r is only capabl
017AA0:  65 20 6F 66 20 73 74 6F 72 69 6E 67 20 75 70 20    e of storing up 
017AB0:  74 6F 20 39 20 70 61 72 61 6D 65 74 65 72 73 2E    to 9 parameters.
017AC0:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 6E 20 56 31    ....       In V1
017AD0:  2E 31 20 66 69 72 6D 77 61 72 65 20 62 69 74 20    .1 firmware bit 
017AE0:  37 20 73 70 65 63 69 66 69 65 73 20 77 68 65 74    7 specifies whet
017AF0:  68 65 72 20 74 68 65 20 63 6F 64 65 20 69 73 20    her the code is 
017B00:  61 66 66 65 63 74 65 64 20 77 68 65 6E 20 74 68    affected when th
017B10:  65 0D 0A 20 20 20 20 20 20 20 56 44 55 20 69 73    e..       VDU is
017B20:  20 64 69 73 61 62 6C 65 64 2E 20 49 66 20 62 69     disabled. If bi
017B30:  74 20 37 20 69 73 20 73 65 74 20 74 68 65 6E 20    t 7 is set then 
017B40:  74 68 65 20 63 6F 64 65 20 69 73 20 74 6F 20 62    the code is to b
017B50:  65 20 20 69 67 6E 6F 72 65 64 20 20 77 68 65 6E    e  ignored  when
017B60:  0D 0A 20 20 20 20 20 20 20 74 68 65 20 56 44 55    ..       the VDU
017B70:  20 69 73 20 64 69 73 61 62 6C 65 64 20 6F 74 68     is disabled oth
017B80:  65 72 77 69 73 65 20 69 74 20 69 73 20 74 6F 20    erwise it is to 
017B90:  62 65 20 6F 62 65 79 65 64 2E 0D 0A 20 20 20 20    be obeyed...    
017BA0:  20 20 20 54 68 65 20 73 65 63 6F 6E 64 20 61 6E       The second an
017BB0:  64 20 74 68 69 72 64 20 62 79 74 65 73 20 61 72    d third bytes ar
017BC0:  65 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66    e the address of
017BD0:  20 74 68 65 20 72 6F 75 74 69 6E 65 20 74 6F 20     the routine to 
017BE0:  20 63 61 6C 6C 20 20 74 6F 0D 0A 20 20 20 20 20     call  to..     
017BF0:  20 20 6F 62 65 79 20 74 68 65 20 63 6F 64 65 2E      obey the code.
017C00:  20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 73 68     This routine sh
017C10:  6F 75 6C 64 20 6C 69 65 20 69 6E 20 74 68 65 20    ould lie in the 
017C20:  63 65 6E 74 72 61 6C 20 33 32 4B 20 6F 66 20 52    central 32K of R
017C30:  41 4D 20 6F 72 20 69 6E 0D 0A 20 20 20 20 20 20    AM or in..      
017C40:  20 74 68 65 20 6C 6F 77 65 72 20 52 4F 4D 20 28     the lower ROM (
017C50:  77 68 69 63 68 20 77 69 6C 6C 20 20 62 65 20 20    which will  be  
017C60:  65 6E 61 62 6C 65 64 29 2E 20 20 49 74 20 20 73    enabled).  It  s
017C70:  68 6F 75 6C 64 20 20 63 6F 6E 66 6F 72 6D 20 20    hould  conform  
017C80:  74 6F 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20    to  the..       
017C90:  66 6F 6C 6C 6F 77 69 6E 67 20 65 6E 74 72 79 2F    following entry/
017CA0:  65 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    exit conditions:
017CB0:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52    ....       AMSTR
017CC0:  41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31    AD CPC464/664/61
017CD0:  32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20    28 FIRMWARE     
017CE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
017CF0:  20 20 20 20 20 20 20 20 20 70 61 67 65 20 34 2E             page 4.
017D00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
017D10:  14 00 00 00 02 09 50 E5 14 00 C1 02 00 00 00 02    ......P.........
017D20:  14 00 C2 02 00 00 00 02 14 00 C3 02 00 00 00 02    ................
017D30:  14 00 C4 02 00 00 00 02 14 00 C5 02 00 00 00 02    ................
017D40:  14 00 C6 02 00 00 00 02 14 00 C7 02 00 00 00 02    ................
017D50:  14 00 C8 02 00 00 00 02 14 00 C9 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:  35 0D 0A 1A 41 50 2D 34 20 20 24 24 24 FF 00 FF    5...AP-4  $$$...
017E10:  20 54 65 78 74 20 56 44 55 2E 0D 0A 0D 0A 0D 0A     Text VDU.......
017E20:  20 20 20 20 20 20 20 54 68 65 20 54 65 78 74 20           The Text 
017E30:  56 44 55 20 69 73 20 20 61 20 20 63 68 61 72 61    VDU is  a  chara
017E40:  63 74 65 72 20 20 62 61 73 65 64 20 20 73 63 72    cter  based  scr
017E50:  65 65 6E 20 20 64 72 69 76 65 72 2E 20 20 49 74    een  driver.  It
017E60:  20 20 63 6F 6E 74 72 6F 6C 73 20 20 38 0D 0A 20      controls  8.. 
017E70:  20 20 20 20 20 20 64 69 66 66 65 72 65 6E 74 20          different 
017E80:  00 43 48 41 50 2D 32 20 20 50 31 20 00 00 00 80    .CHAP-2  P1 ....
017E90:  26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35    &'()*+,-./012345
017EA0:  00 43 48 41 50 2D 32 20 20 50 31 20 01 00 00 06    .CHAP-2  P1 ....
017EB0:  36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    6...............
017EC0:  00 43 48 41 50 2D 32 20 20 50 32 20 00 00 00 18    .CHAP-2  P2 ....
017ED0:  37 38 39 00 00 00 00 00 00 00 00 00 00 00 00 00    789.............
017EE0:  00 43 48 41 50 2D 33 20 20 20 20 20 00 00 00 7A    .CHAP-3     ...z
017EF0:  3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49    :;<=>?@ABCDEFGHI
017F00:  00 43 48 41 50 2D 34 20 20 24 24 24 00 00 00 80    .CHAP-4  $$$....
017F10:  4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59    JKLMNOPQRSTUVWXY
017F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
017F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
017F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
017F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
017F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
017F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
017F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
017F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
017FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
017FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
017FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
017FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
017FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
017FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0180A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0180B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0180C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0180D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0180E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0180F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0181A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0181B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0181C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0181D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0181E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0181F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018200:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
018210:  20 20 20 45 6E 74 72 79 3A 0D 0A 0D 0A 0D 0A 20       Entry:...... 
018220:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                   A
018230:  20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 6C 61     contains the la
018240:  73 74 20 63 68 61 72 61 63 74 65 72 20 61 64 64    st character add
018250:  65 64 20 74 6F 20 74 68 65 20 62 75 66 66 65 72    ed to the buffer
018260:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    .......         
018270:  20 20 20 20 20 20 20 42 20 63 6F 6E 74 61 69 6E           B contain
018280:  73 20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20    s the number of 
018290:  63 68 61 72 61 63 74 65 72 73 20 69 6E 20 74 68    characters in th
0182A0:  65 20 62 75 66 66 65 72 20 20 28 69 6E 63 6C 75    e buffer  (inclu
0182B0:  64 69 6E 67 0D 0A 20 20 20 20 20 20 20 20 20 20    ding..          
0182C0:  20 20 20 20 20 20 74 68 65 20 63 6F 6E 74 72 6F          the contro
0182D0:  6C 20 63 6F 64 65 29 2E 0D 0A 0D 0A 0D 0A 20 20    l code).......  
0182E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 20                  C 
0182F0:  63 6F 6E 74 61 69 6E 73 20 74 68 65 20 73 61 6D    contains the sam
018300:  65 20 61 73 20 41 2E 0D 0A 0D 0A 0D 0A 20 20 20    e as A.......   
018310:  20 20 20 20 20 20 20 20 20 20 20 20 20 48 4C 20                 HL 
018320:  63 6F 6E 74 61 69 6E 73 20 74 68 65 20 61 64 64    contains the add
018330:  72 65 73 73 20 6F 66 20 74 68 65 20 63 6F 6E 74    ress of the cont
018340:  72 6F 6C 20 63 6F 64 65 20 62 75 66 66 65 72 20    rol code buffer 
018350:  28 70 6F 69 6E 74 73 20 61 74 0D 0A 20 20 20 20    (points at..    
018360:  20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20                the 
018370:  63 6F 6E 74 72 6F 6C 20 63 6F 64 65 29 2E 0D 0A    control code)...
018380:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 3A    ....       Exit:
018390:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
0183A0:  20 20 20 20 41 46 2C 42 43 2C 44 45 20 61 6E 64        AF,BC,DE and
0183B0:  20 48 4C 20 63 6F 72 72 75 70 74 2E 0D 0A 0D 0A     HL corrupt.....
0183C0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
0183D0:  20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69      All other regi
0183E0:  73 74 65 72 73 20 70 72 65 73 65 72 76 65 64 2E    sters preserved.
0183F0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    ......       The
018400:  20 63 6F 6E 74 72 6F 6C 20 63 6F 64 65 20 62 75     control code bu
018410:  66 66 65 72 20 69 73 20 73 68 61 72 65 64 20 62    ffer is shared b
018420:  65 74 77 65 65 6E 20 61 6C 6C 20 73 74 72 65 61    etween all strea
018430:  6D 73 2E 20 41 20 63 6F 6E 74 72 6F 6C 20 20 63    ms. A control  c
018440:  6F 64 65 0D 0A 20 20 20 20 20 20 20 73 65 71 75    ode..       sequ
018450:  65 6E 63 65 20 73 68 6F 75 6C 64 20 62 65 20 63    ence should be c
018460:  6F 6D 70 6C 65 74 65 64 20 62 65 66 6F 72 65 20    ompleted before 
018470:  20 61 20 20 73 74 72 65 61 6D 20 20 69 73 20 20     a  stream  is  
018480:  63 68 61 6E 67 65 64 20 20 6F 74 68 65 72 77 69    changed  otherwi
018490:  73 65 0D 0A 20 20 20 20 20 20 20 75 6E 65 78 70    se..       unexp
0184A0:  65 63 74 65 64 20 65 66 66 65 63 74 73 20 6D 61    ected effects ma
0184B0:  79 20 6F 63 63 75 72 2E 0D 0A 0D 0A 0D 0A 0D 0A    y occur.........
0184C0:  20 20 20 20 20 20 20 54 68 65 20 64 65 66 61 75           The defau
0184D0:  6C 74 20 63 6F 6E 74 72 6F 6C 20 63 6F 64 65 20    lt control code 
0184E0:  61 63 74 69 6F 6E 73 2C 20 73 65 74 20 61 74 20    actions, set at 
0184F0:  45 4D 53 20 61 6E 64 20 20 77 68 65 6E 20 20 54    EMS and  when  T
018500:  58 54 20 20 52 45 53 45 54 20 20 69 73 0D 0A 20    XT  RESET  is.. 
018510:  20 20 20 20 20 20 63 61 6C 6C 65 64 2C 20 61 72          called, ar
018520:  65 20 64 65 73 63 72 69 62 65 64 20 69 6E 20 41    e described in A
018530:  70 70 65 6E 64 69 78 20 56 49 49 2E 0D 0A 0D 0A    ppendix VII.....
018540:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 74 20 69 73    ....       It is
018550:  20 70 6F 73 73 69 62 6C 65 20 74 6F 20 64 69 73     possible to dis
018560:  61 62 6C 65 20 74 68 65 20 74 65 78 74 20 73 74    able the text st
018570:  72 65 61 6D 20 62 79 20 63 61 6C 6C 69 6E 67 20    ream by calling 
018580:  54 58 54 20 56 44 55 20 20 44 49 53 41 42 4C 45    TXT VDU  DISABLE
018590:  2E 0D 0A 20 20 20 20 20 20 20 57 68 65 6E 20 64    ...       When d
0185A0:  69 73 61 62 6C 65 64 20 74 68 65 20 73 74 72 65    isabled the stre
0185B0:  61 6D 20 77 69 6C 6C 20 6E 6F 74 20 77 72 69 74    am will not writ
0185C0:  65 20 61 6E 79 20 63 68 61 72 61 63 74 65 72 73    e any characters
0185D0:  20 74 6F 20 20 74 68 65 20 20 73 63 72 65 65 6E     to  the  screen
0185E0:  0D 0A 20 20 20 20 20 20 20 61 6E 64 20 69 6E 20    ..       and in 
0185F0:  56 31 2E 31 20 66 69 72 6D 77 61 72 65 20 63 6F    V1.1 firmware co
018600:  6E 74 72 6F 6C 20 63 6F 64 65 73 20 6D 61 79 20    ntrol codes may 
018610:  6E 6F 74 20 20 62 65 20 20 6F 62 65 79 65 64 20    not  be  obeyed 
018620:  20 28 61 73 20 20 64 65 73 63 72 69 62 65 64 0D     (as  described.
018630:  0A 20 20 20 20 20 20 20 61 62 6F 76 65 29 2E 20    .       above). 
018640:  4E 6F 72 6D 61 6C 20 6F 70 65 72 61 74 69 6F 6E    Normal operation
018650:  20 63 61 6E 20 62 65 20 72 65 73 74 6F 72 65 64     can be restored
018660:  20 62 79 20 63 61 6C 6C 20 54 58 54 20 56 44 55     by call TXT VDU
018670:  20 45 4E 41 42 4C 45 2E 20 4E 6F 74 65 2C 0D 0A     ENABLE. Note,..
018680:  20 20 20 20 20 20 20 68 6F 77 65 76 65 72 2C 20           however, 
018690:  74 68 61 74 20 63 61 6C 6C 69 6E 67 20 74 68 65    that calling the
0186A0:  73 65 20 20 72 6F 75 74 69 6E 65 73 20 20 77 69    se  routines  wi
0186B0:  6C 6C 20 20 65 6D 70 74 79 20 20 74 68 65 20 20    ll  empty  the  
0186C0:  63 6F 6E 74 72 6F 6C 20 20 63 6F 64 65 0D 0A 20    control  code.. 
0186D0:  20 20 20 20 20 20 62 75 66 66 65 72 2E 20 54 68          buffer. Th
0186E0:  69 73 20 65 66 66 65 63 74 20 6D 61 79 20 62 65    is effect may be
0186F0:  20 75 73 65 64 20 74 6F 20 61 76 6F 69 64 20 70     used to avoid p
018700:  72 6F 62 6C 65 6D 73 20 77 68 65 6E 20 20 74 68    roblems when  th
018710:  65 20 20 73 74 61 74 65 20 20 6F 66 0D 0A 20 20    e  state  of..  
018720:  20 20 20 20 20 74 68 65 20 20 63 6F 6E 74 72 6F         the  contro
018730:  6C 20 20 62 75 66 66 65 72 20 20 69 73 20 20 75    l  buffer  is  u
018740:  6E 6B 6E 6F 77 6E 20 20 28 77 68 65 6E 20 20 70    nknown  (when  p
018750:  72 69 6E 74 69 6E 67 20 20 61 6E 20 20 65 72 72    rinting  an  err
018760:  6F 72 20 20 6D 65 73 73 61 67 65 0D 0A 20 20 20    or  message..   
018770:  20 20 20 20 70 65 72 68 61 70 73 29 2E 0D 0A 0D        perhaps)....
018780:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
018790:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
0187A0:  20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43 34        AMSTRAD CPC4
0187B0:  36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D    64/664/6128 FIRM
0187C0:  57 41 52 45 20 20 20 20 20 20 20 20 20 20 20 20    WARE            
0187D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0187E0:  20 20 70 61 67 65 20 34 2E 36 0D 0A 1A 0D 0A 20      page 4.6..... 
0187F0:  20 20 20 20 20 20 64 69 66 66 65 72 65 6E 74 20          different 
018800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0188A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0188B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0188C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0188D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0188E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0188F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0189A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0189B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0189C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0189D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0189E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0189F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
018A00:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 35    ........       5
018A10:  20 54 68 65 20 47 72 61 70 68 69 63 73 20 56 44     The Graphics VD
018A20:  55 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    U.......       T
018A30:  68 65 20 47 72 61 70 68 69 63 73 20 56 44 55 20    he Graphics VDU 
018A40:  61 6C 6C 6F 77 73 20 69 6E 64 69 76 69 64 75 61    allows individua
018A50:  6C 20 70 69 78 65 6C 73 20 28 64 6F 74 73 29 20    l pixels (dots) 
018A60:  74 6F 20 62 65 20 73 65 74 20 20 6F 72 20 20 74    to be set  or  t
018A70:  65 73 74 65 64 0D 0A 20 20 20 20 20 20 20 61 6E    ested..       an
018A80:  64 20 6C 69 6E 65 73 20 74 6F 20 62 65 20 64 72    d lines to be dr
018A90:  61 77 6E 2E 20 54 68 65 20 70 6C 6F 74 74 69 6E    awn. The plottin
018AA0:  67 20 74 61 6B 65 73 20 70 6C 61 63 65 20 20 6F    g takes place  o
018AB0:  6E 20 20 61 6E 20 20 69 64 65 61 6C 20 20 73 63    n  an  ideal  sc
018AC0:  72 65 65 6E 0D 0A 20 20 20 20 20 20 20 74 68 61    reen..       tha
018AD0:  74 20 69 73 20 61 6C 77 61 79 73 20 36 34 30 20    t is always 640 
018AE0:  70 6F 69 6E 74 73 20 77 69 64 65 20 61 6E 64 20    points wide and 
018AF0:  34 30 30 20 70 6F 69 6E 74 73 20 68 69 67 68 2E    400 points high.
018B00:  20 20 54 68 69 73 20 20 6D 65 61 6E 73 20 20 74      This  means  t
018B10:  68 61 74 0D 0A 20 20 20 20 20 20 20 6D 6F 72 65    hat..       more
018B20:  20 74 68 61 6E 20 6F 6E 65 20 70 6F 69 6E 74 20     than one point 
018B30:  6F 6E 20 74 68 65 20 69 64 65 61 6C 20 73 63 72    on the ideal scr
018B40:  65 65 6E 20 77 69 6C 6C 20 20 6D 61 70 20 20 6F    een will  map  o
018B50:  6E 74 6F 20 20 61 20 20 70 61 72 74 69 63 75 6C    nto  a  particul
018B60:  61 72 0D 0A 20 20 20 20 20 20 20 70 69 78 65 6C    ar..       pixel
018B70:  20 6F 6E 20 74 68 65 20 72 65 61 6C 20 73 63 72     on the real scr
018B80:  65 65 6E 2E 20 54 68 65 20 77 69 64 74 68 20 6F    een. The width o
018B90:  66 20 74 68 65 20 69 64 65 61 6C 20 73 63 72 65    f the ideal scre
018BA0:  65 6E 20 20 28 36 34 30 20 20 70 6F 69 6E 74 73    en  (640  points
018BB0:  29 0D 0A 20 20 20 20 20 20 20 69 73 20 63 68 6F    )..       is cho
018BC0:  73 65 6E 20 74 6F 20 62 65 20 74 68 65 20 68 6F    sen to be the ho
018BD0:  72 69 7A 6F 6E 74 61 6C 20 6E 75 6D 62 65 72 20    rizontal number 
018BE0:  6F 66 20 70 69 78 65 6C 73 20 6F 6E 20 74 68 65    of pixels on the
018BF0:  20 73 63 72 65 65 6E 20 20 69 6E 20 20 74 68 65     screen  in  the
018C00:  0D 0A 20 20 20 20 20 20 20 68 69 67 68 65 73 74    ..       highest
018C10:  20 72 65 73 6F 6C 75 74 69 6F 6E 20 6D 6F 64 65     resolution mode
018C20:  20 28 6D 6F 64 65 20 32 29 2E 20 54 68 65 20 68     (mode 2). The h
018C30:  65 69 67 68 74 20 6F 66 20 74 68 65 20 69 64 65    eight of the ide
018C40:  61 6C 20 73 63 72 65 65 6E 20 20 28 34 30 30 0D    al screen  (400.
018C50:  0A 20 20 20 20 20 20 20 70 6F 69 6E 74 73 29 20    .       points) 
018C60:  69 73 20 63 68 6F 73 65 6E 20 74 6F 20 62 65 20    is chosen to be 
018C70:  74 77 69 63 65 20 74 68 65 20 76 65 72 74 69 63    twice the vertic
018C80:  61 6C 20 6E 75 6D 62 65 72 20 20 6F 66 20 20 70    al number  of  p
018C90:  69 78 65 6C 73 20 20 6F 6E 20 20 74 68 65 0D 0A    ixels  on  the..
018CA0:  20 20 20 20 20 20 20 73 63 72 65 65 6E 20 69 6E           screen in
018CB0:  20 61 6C 6C 20 6D 6F 64 65 73 2E 20 54 68 69 73     all modes. This
018CC0:  20 65 6E 73 75 72 65 73 20 74 68 61 74 20 74 68     ensures that th
018CD0:  65 20 61 73 70 65 63 74 20 72 61 74 69 6F 20 6F    e aspect ratio o
018CE0:  66 20 74 68 65 20 20 73 63 72 65 65 6E 0D 0A 20    f the  screen.. 
018CF0:  20 20 20 20 20 20 69 73 20 20 61 70 70 72 6F 78          is  approx
018D00:  69 6D 61 74 65 6C 79 20 20 75 6E 69 74 79 2C 20    imately  unity, 
018D10:  20 69 2E 65 2E 20 20 61 20 20 63 69 72 63 6C 65     i.e.  a  circle
018D20:  20 20 6C 6F 6F 6B 73 20 20 63 69 72 63 75 6C 61      looks  circula
018D30:  72 20 20 61 6E 64 20 20 20 6E 6F 74 0D 0A 20 20    r  and   not..  
018D40:  20 20 20 20 20 65 6C 6C 69 70 74 69 63 61 6C 2E         elliptical.
018D50:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 35 2E 31    ......       5.1
018D60:  20 47 72 61 70 68 69 63 73 20 56 44 55 20 43 6F     Graphics VDU Co
018D70:  6F 72 64 69 6E 61 74 65 20 53 79 73 74 65 6D 73    ordinate Systems
018D80:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
018D90:  47 72 61 70 68 69 63 73 20 20 56 44 55 20 20 75    Graphics  VDU  u
018DA0:  73 65 73 20 20 34 20 20 63 6F 6F 72 64 69 6E 61    ses  4  coordina
018DB0:  74 65 20 20 73 79 73 74 65 6D 73 2E 20 20 54 68    te  systems.  Th
018DC0:  65 20 20 75 73 65 72 20 20 73 70 65 63 69 66 69    e  user  specifi
018DD0:  65 73 0D 0A 20 20 20 20 20 20 20 70 6F 73 69 74    es..       posit
018DE0:  69 6F 6E 73 20 69 6E 20 75 73 65 72 20 63 6F 6F    ions in user coo
018DF0:  72 64 69 6E 61 74 65 73 20 6F 72 20 72 65 6C 61    rdinates or rela
018E00:  74 69 76 65 20 63 6F 6F 72 64 69 6E 61 74 65 73    tive coordinates
018E10:  20 6F 72 20 20 6F 63 63 61 73 69 6F 6E 61 6C 6C     or  occasionall
018E20:  79 0D 0A 20 20 20 20 20 20 20 69 6E 20 20 73 74    y..       in  st
018E30:  61 6E 64 61 72 64 20 20 63 6F 6F 72 64 69 6E 61    andard  coordina
018E40:  74 65 73 2E 20 20 49 6E 74 65 72 6E 61 6C 6C 79    tes.  Internally
018E50:  20 20 74 68 65 20 20 47 72 61 70 68 69 63 73 20      the  Graphics 
018E60:  20 56 44 55 20 20 75 73 65 73 20 20 62 61 73 65     VDU  uses  base
018E70:  0D 0A 20 20 20 20 20 20 20 63 6F 6F 72 64 69 6E    ..       coordin
018E80:  61 74 65 73 20 28 6F 72 20 6F 63 63 61 73 69 6F    ates (or occasio
018E90:  6E 61 6C 6C 79 20 73 74 61 6E 64 61 72 64 20 63    nally standard c
018EA0:  6F 6F 72 64 69 6E 61 74 65 73 29 2E 0D 0A 0D 0A    oordinates).....
018EB0:  20 20 20 20 20 20 20 55 73 65 72 20 63 6F 6F 72           User coor
018EC0:  64 69 6E 61 74 65 73 2C 20 72 65 6C 61 74 69 76    dinates, relativ
018ED0:  65 20 63 6F 6F 72 64 69 6E 61 74 65 73 2C 20 61    e coordinates, a
018EE0:  6E 64 20 73 74 61 6E 64 61 72 64 20 20 63 6F 6F    nd standard  coo
018EF0:  72 64 69 6E 61 74 65 73 20 20 61 72 65 0D 0A 20    rdinates  are.. 
018F00:  20 20 20 20 20 20 61 6C 6C 20 76 65 72 79 20 73          all very s
018F10:  69 6D 69 6C 61 72 2E 20 54 68 65 79 20 61 6C 6C    imilar. They all
018F20:  20 75 73 65 20 31 36 20 62 69 74 20 6E 75 6D 62     use 16 bit numb
018F30:  65 72 73 20 61 6E 64 20 77 6F 72 6B 20 6F 6E 20    ers and work on 
018F40:  70 6F 69 6E 74 73 20 20 77 69 74 68 0D 0A 20 20    points  with..  
018F50:  20 20 20 20 20 58 2D 63 6F 6F 72 64 69 6E 61 74         X-coordinat
018F60:  65 73 20 72 75 6E 6E 69 6E 67 20 6C 65 66 74 20    es running left 
018F70:  74 6F 20 72 69 67 68 74 20 61 6E 64 20 59 2D 63    to right and Y-c
018F80:  6F 6F 72 64 69 6E 61 74 65 73 20 20 72 75 6E 6E    oordinates  runn
018F90:  69 6E 67 20 20 62 6F 74 74 6F 6D 0D 0A 20 20 20    ing  bottom..   
018FA0:  20 20 20 20 74 6F 20 74 6F 70 2E 20 54 68 65 20        to top. The 
018FB0:  73 63 72 65 65 6E 20 69 73 20 61 6C 77 61 79 73    screen is always
018FC0:  20 34 30 30 20 20 70 6F 69 6E 74 73 20 20 68 69     400  points  hi
018FD0:  67 68 20 20 61 6E 64 20 20 36 34 30 20 20 70 6F    gh  and  640  po
018FE0:  69 6E 74 73 20 20 77 69 64 65 0D 0A 20 20 20 20    ints  wide..    
018FF0:  20 20 20 77 68 61 74 65 76 65 72 20 74 68 65 20       whatever the 
019000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
019010:  15 00 00 00 02 09 50 E5 15 00 C1 02 00 00 00 02    ......P.........
019020:  15 00 C2 02 00 00 00 02 15 00 C3 02 00 00 00 02    ................
019030:  15 00 C4 02 00 00 00 02 15 00 C5 02 00 00 00 02    ................
019040:  15 00 C6 02 00 00 00 02 15 00 C7 02 00 00 00 02    ................
019050:  15 00 C8 02 00 00 00 02 15 00 C9 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:  73 63 72 65 65 6E 20 6D 6F 64 65 2E 20 54 68 69    screen mode. Thi
019110:  73 20 6D 65 61 6E 73 20 74 68 61 74 20 61 20 70    s means that a p
019120:  69 78 65 6C 20 28 64 6F 74 20 6F 6E 20 74 68 65    ixel (dot on the
019130:  20 20 73 63 72 65 65 6E 29 0D 0A 20 20 20 20 20      screen)..     
019140:  20 20 69 73 20 6D 61 70 70 65 64 20 6F 6E 74 6F      is mapped onto
019150:  20 62 79 20 38 20 70 6F 69 6E 74 73 20 69 6E 20     by 8 points in 
019160:  6D 6F 64 65 20 30 2C 20 34 20 70 6F 69 6E 74 73    mode 0, 4 points
019170:  20 69 6E 20 6D 6F 64 65 20 31 20 61 6E 64 20 32     in mode 1 and 2
019180:  20 20 70 6F 69 6E 74 73 0D 0A 20 20 20 20 20 20      points..      
019190:  20 69 6E 20 6D 6F 64 65 20 32 2E 20 54 68 65 20     in mode 2. The 
0191A0:  6F 72 69 67 69 6E 20 28 63 6F 6F 72 64 69 6E 61    origin (coordina
0191B0:  74 65 20 28 30 2C 30 29 29 20 6F 66 20 74 68 65    te (0,0)) of the
0191C0:  73 65 20 73 79 73 74 65 6D 73 20 76 61 72 79 3A    se systems vary:
0191D0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    ......          
0191E0:  20 20 20 20 20 20 49 6E 20 73 74 61 6E 64 61 72          In standar
0191F0:  64 20 63 6F 6F 72 64 69 6E 61 74 65 73 20 74 68    d coordinates th
019200:  65 20 6F 72 69 67 69 6E 20 69 73 20 74 68 65 20    e origin is the 
019210:  70 6F 69 6E 74 20 61 74 20 74 68 65 20 62 6F 74    point at the bot
019220:  74 6F 6D 0D 0A 20 20 20 20 20 20 20 20 20 20 20    tom..           
019230:  20 20 20 20 20 6C 65 66 74 20 63 6F 72 6E 65 72         left corner
019240:  20 6F 66 20 74 68 65 20 73 63 72 65 65 6E 2E 0D     of the screen..
019250:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
019260:  20 20 20 54 68 65 20 6F 72 69 67 69 6E 20 6F 66       The origin of
019270:  20 75 73 65 72 20 63 6F 6F 72 64 69 6E 61 74 65     user coordinate
019280:  73 20 63 61 6E 20 62 65 20 73 65 74 20 62 79 20    s can be set by 
019290:  20 74 68 65 20 20 75 73 65 72 2E 20 20 54 68 65     the  user.  The
0192A0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
0192B0:  20 20 64 65 66 61 75 6C 74 20 6F 72 69 67 69 6E      default origin
0192C0:  20 69 73 20 61 74 20 74 68 65 20 62 6F 74 74 6F     is at the botto
0192D0:  6D 20 6C 65 66 74 20 63 6F 72 6E 65 72 20 20 6F    m left corner  o
0192E0:  66 20 20 74 68 65 20 20 73 63 72 65 65 6E 2E 0D    f  the  screen..
0192F0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
019300:  20 54 68 69 73 20 6D 61 6B 65 20 74 68 65 20 20     This make the  
019310:  64 65 66 61 75 6C 74 20 20 75 73 65 72 20 20 63    default  user  c
019320:  6F 6F 72 64 69 6E 61 74 65 73 20 20 74 68 65 20    oordinates  the 
019330:  20 73 61 6D 65 20 20 61 73 20 20 74 68 65 0D 0A     same  as  the..
019340:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
019350:  73 74 61 6E 64 61 72 64 20 63 6F 6F 72 64 69 6E    standard coordin
019360:  61 74 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    ates.....       
019370:  20 20 20 20 20 20 20 20 20 54 68 65 20 6F 72 69             The ori
019380:  67 69 6E 20 6F 66 20 72 65 6C 61 74 69 76 65 20    gin of relative 
019390:  63 6F 6F 72 64 69 6E 61 74 65 73 20 69 73 20 20    coordinates is  
0193A0:  74 68 65 20 20 63 75 72 72 65 6E 74 20 20 70 6F    the  current  po
0193B0:  73 69 74 69 6F 6E 0D 0A 20 20 20 20 20 20 20 20    sition..        
0193C0:  20 20 20 20 20 20 20 20 28 73 65 65 20 35 2E 32            (see 5.2
0193D0:  20 62 65 6C 6F 77 29 2E 20 54 68 69 73 20 20 61     below). This  a
0193E0:  6C 6C 6F 77 73 20 20 70 6C 6F 74 74 69 6E 67 20    llows  plotting 
0193F0:  20 74 6F 20 20 62 65 20 20 63 61 72 72 69 65 64     to  be  carried
019400:  20 20 6F 75 74 0D 0A 20 20 20 20 20 20 20 20 20      out..         
019410:  20 20 20 20 20 20 20 69 6E 64 65 70 65 6E 64 65           independe
019420:  6E 74 6C 79 20 6F 66 20 74 68 65 20 70 6F 73 69    ntly of the posi
019430:  74 69 6F 6E 20 6F 6E 20 74 68 65 20 73 63 72 65    tion on the scre
019440:  65 6E 20 61 6E 64 20 69 73 20 75 73 65 66 75 6C    en and is useful
019450:  20 20 69 66 0D 0A 20 20 20 20 20 20 20 20 20 20      if..          
019460:  20 20 20 20 20 20 61 20 70 61 72 74 69 63 75 6C          a particul
019470:  61 72 20 73 68 61 70 65 20 69 73 20 74 6F 20 62    ar shape is to b
019480:  65 20 72 65 70 65 61 74 65 64 20 6F 6E 20 74 68    e repeated on th
019490:  65 20 73 63 72 65 65 6E 20 20 61 20 20 6E 75 6D    e screen  a  num
0194A0:  62 65 72 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ber..           
0194B0:  20 20 20 20 20 6F 66 20 74 69 6D 65 73 20 6F 72         of times or
0194C0:  20 69 66 20 69 74 20 20 69 73 20 20 69 6E 63 6F     if it  is  inco
0194D0:  6E 76 65 6E 69 65 6E 74 20 20 74 6F 20 20 6B 65    nvenient  to  ke
0194E0:  65 70 20 20 74 72 61 63 6B 20 20 6F 66 20 20 74    ep  track  of  t
0194F0:  68 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    he..            
019500:  20 20 20 20 63 75 72 72 65 6E 74 20 6C 6F 63 61        current loca
019510:  74 69 6F 6E 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    tion.......     
019520:  20 20 42 61 73 65 20 63 6F 6F 72 64 69 6E 61 74      Base coordinat
019530:  65 73 20 61 72 65 20 61 20 70 68 79 73 69 63 61    es are a physica
019540:  6C 20 63 6F 6F 72 64 69 6E 61 74 65 20 20 73 79    l coordinate  sy
019550:  73 74 65 6D 20 20 77 68 69 63 68 20 20 64 65 61    stem  which  dea
019560:  6C 73 20 20 77 69 74 68 0D 0A 20 20 20 20 20 20    ls  with..      
019570:  20 70 69 78 65 6C 73 2E 20 58 2D 63 6F 6F 72 64     pixels. X-coord
019580:  69 6E 61 74 65 73 20 72 75 6E 20 6C 65 66 74 20    inates run left 
019590:  74 6F 20 72 69 67 68 74 20 61 6E 64 20 59 2D 63    to right and Y-c
0195A0:  6F 6F 72 64 69 6E 61 74 65 73 20 20 72 75 6E 20    oordinates  run 
0195B0:  20 62 6F 74 74 6F 6D 0D 0A 20 20 20 20 20 20 20     bottom..       
0195C0:  74 6F 20 74 6F 70 2E 20 50 69 78 65 6C 20 28 30    to top. Pixel (0
0195D0:  2C 30 29 20 69 73 20 74 68 65 20 70 69 78 65 6C    ,0) is the pixel
0195E0:  20 61 74 20 74 68 65 20 20 62 6F 74 74 6F 6D 20     at the  bottom 
0195F0:  20 6C 65 66 74 20 20 63 6F 72 6E 65 72 20 20 6F     left  corner  o
019600:  66 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 73    f  the..       s
019610:  63 72 65 65 6E 2E 20 42 65 63 61 75 73 65 20 74    creen. Because t
019620:  68 69 73 20 63 6F 6F 72 64 69 6E 61 74 65 20 73    his coordinate s
019630:  79 73 74 65 6D 20 77 6F 72 6B 73 20 69 6E 20 70    ystem works in p
019640:  69 78 65 6C 73 20 74 68 65 20 63 6F 6F 72 64 69    ixels the coordi
019650:  6E 61 74 65 73 0D 0A 20 20 20 20 20 20 20 6F 66    nates..       of
019660:  20 20 70 6F 73 69 74 69 6F 6E 73 20 20 6F 6E 20      positions  on 
019670:  20 74 68 65 20 20 73 63 72 65 65 6E 20 20 64 65     the  screen  de
019680:  70 65 6E 64 20 20 75 70 6F 6E 20 20 74 68 65 20    pend  upon  the 
019690:  20 73 63 72 65 65 6E 20 20 6D 6F 64 65 2E 20 20     screen  mode.  
0196A0:  42 61 73 65 0D 0A 20 20 20 20 20 20 20 63 6F 6F    Base..       coo
0196B0:  72 64 69 6E 61 74 65 73 20 61 72 65 20 75 6E 73    rdinates are uns
0196C0:  69 67 6E 65 64 20 31 36 20 62 69 74 20 20 6E 75    igned 16 bit  nu
0196D0:  6D 62 65 72 73 20 20 61 6E 64 20 20 6F 6E 6C 79    mbers  and  only
0196E0:  20 20 63 6F 6F 72 64 69 6E 61 74 65 73 20 20 74      coordinates  t
0196F0:  68 61 74 0D 0A 20 20 20 20 20 20 20 72 65 66 65    hat..       refe
019700:  72 20 74 6F 20 61 20 70 69 78 65 6C 20 6F 6E 20    r to a pixel on 
019710:  74 68 65 20 73 63 72 65 65 6E 20 61 72 65 20 76    the screen are v
019720:  61 6C 69 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    alid.......     
019730:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
019740:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
019750:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
019760:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
019770:  70 61 67 65 20 35 2E 31 0D 0A 0D 0A 0D 0A 0D 0A    page 5.1........
019780:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 47 72 61    ......       Gra
019790:  70 68 69 63 73 20 20 72 6F 75 74 69 6E 65 73 20    phics  routines 
0197A0:  20 63 6F 6E 76 65 72 74 20 20 66 72 6F 6D 20 20     convert  from  
0197B0:  20 72 65 6C 61 74 69 76 65 20 20 20 63 6F 6F 72     relative   coor
0197C0:  64 69 6E 61 74 65 73 20 20 20 74 6F 20 20 20 75    dinates   to   u
0197D0:  73 65 72 0D 0A 20 20 20 20 20 20 20 63 6F 6F 72    ser..       coor
0197E0:  64 69 6E 61 74 65 73 2C 20 69 66 20 6E 65 63 65    dinates, if nece
0197F0:  73 73 61 72 79 2C 20 61 6E 64 20 74 68 65 6E 20    ssary, and then 
019800:  20 66 72 6F 6D 20 20 75 73 65 72 20 20 63 6F 6F     from  user  coo
019810:  72 64 69 6E 61 74 65 73 20 20 74 6F 20 20 62 61    rdinates  to  ba
019820:  73 65 0D 0A 20 20 20 20 20 20 20 63 6F 6F 72 64    se..       coord
019830:  69 6E 61 74 65 73 20 62 65 66 6F 72 65 20 61 63    inates before ac
019840:  63 65 73 73 69 6E 67 20 74 68 65 20 70 68 79 73    cessing the phys
019850:  69 63 61 6C 20 73 63 72 65 65 6E 2E 20 20 44 75    ical screen.  Du
019860:  72 69 6E 67 20 20 74 68 65 20 20 6C 61 74 74 65    ring  the  latte
019870:  72 0D 0A 20 20 20 20 20 20 20 63 6F 6E 76 65 72    r..       conver
019880:  73 69 6F 6E 20 74 68 65 72 65 20 69 73 20 61 20    sion there is a 
019890:  6C 6F 73 73 20 6F 66 20 20 61 63 63 75 72 61 63    loss of  accurac
0198A0:  79 20 20 62 65 63 61 75 73 65 20 20 6F 66 20 20    y  because  of  
0198B0:  74 68 65 20 20 6D 61 70 70 69 6E 67 20 20 6F 66    the  mapping  of
0198C0:  0D 0A 20 20 20 20 20 20 20 6D 75 6C 74 69 70 6C    ..       multipl
0198D0:  65 20 70 6F 69 6E 74 73 20 6F 6E 74 6F 20 61 20    e points onto a 
0198E0:  73 69 6E 67 6C 65 20 70 69 78 65 6C 2E 20 54 68    single pixel. Th
0198F0:  69 73 20 63 6F 75 6C 64 20 6D 61 6B 65 20 73 68    is could make sh
019900:  61 70 65 73 20 20 64 72 61 77 6E 20 20 6F 6E 0D    apes  drawn  on.
019910:  0A 20 20 20 20 20 20 20 74 68 65 20 73 63 72 65    .       the scre
019920:  65 6E 20 61 70 70 65 61 72 20 61 73 79 6D 6D 65    en appear asymme
019930:  74 72 69 63 61 6C 20 28 70 61 72 74 69 63 75 6C    trical (particul
019940:  61 72 6C 79 20 63 69 72 63 6C 65 73 29 20 62 75    arly circles) bu
019950:  74 20 74 68 65 20 47 72 61 70 68 69 63 73 0D 0A    t the Graphics..
019960:  20 20 20 20 20 20 20 56 44 55 20 61 76 6F 69 64           VDU avoid
019970:  73 20 74 68 69 73 20 62 79 20 72 6F 75 6E 64 69    s this by roundi
019980:  6E 67 20 74 68 65 20 63 6F 6F 72 64 69 6E 61 74    ng the coordinat
019990:  65 73 20 74 6F 77 61 72 64 73 20 74 68 65 20 20    es towards the  
0199A0:  75 73 65 72 20 20 6F 72 69 67 69 6E 2E 0D 0A 0D    user  origin....
0199B0:  0A 20 20 20 20 20 20 20 54 68 75 73 20 73 79 6D    .       Thus sym
0199C0:  6D 65 74 72 69 63 61 6C 20 73 68 61 70 65 73 20    metrical shapes 
0199D0:  73 68 6F 75 6C 64 20 62 65 20 64 72 61 77 6E 20    should be drawn 
0199E0:  73 79 6D 6D 65 74 72 69 63 61 6C 6C 79 20 61 62    symmetrically ab
0199F0:  6F 75 74 20 20 74 68 65 20 20 75 73 65 72 0D 0A    out  the  user..
019A00:  20 20 20 20 20 20 20 6F 72 69 67 69 6E 20 74 6F           origin to
019A10:  20 74 61 6B 65 20 61 64 76 61 6E 74 61 67 65 20     take advantage 
019A20:  6F 66 20 74 68 65 20 72 6F 75 6E 64 69 6E 67 2E    of the rounding.
019A30:  20 49 66 20 74 68 65 20 73 68 61 70 65 20 69 73     If the shape is
019A40:  20 6E 6F 74 20 20 63 65 6E 74 72 65 64 0D 0A 20     not  centred.. 
019A50:  20 20 20 20 20 20 6F 6E 20 74 68 65 20 75 73 65          on the use
019A60:  72 20 6F 72 69 67 69 6E 20 74 68 65 6E 20 74 68    r origin then th
019A70:  65 20 61 73 79 6D 6D 65 74 72 79 20 6D 61 79 20    e asymmetry may 
019A80:  72 65 61 70 70 65 61 72 2E 0D 0A 0D 0A 20 20 20    reappear.....   
019A90:  20 20 20 20 49 6E 20 56 31 2E 31 20 66 69 72 6D        In V1.1 firm
019AA0:  77 61 72 65 20 69 74 20 69 73 20 70 6F 73 73 69    ware it is possi
019AB0:  62 6C 65 20 74 6F 20 63 61 6C 6C 20 47 52 41 20    ble to call GRA 
019AC0:  46 52 4F 4D 20 55 53 45 52 20 74 6F 20 63 6F 6E    FROM USER to con
019AD0:  76 65 72 74 20 20 66 72 6F 6D 0D 0A 20 20 20 20    vert  from..    
019AE0:  20 20 20 75 73 65 72 20 74 6F 20 62 61 73 65 20       user to base 
019AF0:  63 6F 6F 72 64 69 6E 61 74 65 73 20 2D 20 74 68    coordinates - th
019B00:  69 73 20 77 69 6C 6C 20 6D 61 6B 65 20 75 73 69    is will make usi
019B10:  6E 67 20 72 6F 75 74 69 6E 65 73 20 69 6E 20 74    ng routines in t
019B20:  68 65 20 20 6C 6F 77 65 72 0D 0A 20 20 20 20 20    he  lower..     
019B30:  20 20 6C 65 76 65 6C 20 73 63 72 65 65 6E 20 70      level screen p
019B40:  61 63 6B 20 65 61 73 69 65 72 20 28 65 2E 67 2E    ack easier (e.g.
019B50:  20 53 43 52 20 44 4F 54 20 50 4F 53 49 54 49 4F     SCR DOT POSITIO
019B60:  4E 2C 20 53 43 52 20 20 48 4F 52 49 5A 4F 4E 54    N, SCR  HORIZONT
019B70:  41 4C 2C 20 20 53 43 52 0D 0A 20 20 20 20 20 20    AL,  SCR..      
019B80:  20 56 45 52 54 49 43 41 4C 29 2E 0D 0A 0D 0A 20     VERTICAL)..... 
019B90:  20 20 20 20 20 20 35 2E 32 20 54 68 65 20 43 75          5.2 The Cu
019BA0:  72 72 65 6E 74 20 47 72 61 70 68 69 63 73 20 50    rrent Graphics P
019BB0:  6F 73 69 74 69 6F 6E 2E 0D 0A 0D 0A 20 20 20 20    osition.....    
019BC0:  20 20 20 54 68 65 20 20 47 72 61 70 68 69 63 73       The  Graphics
019BD0:  20 20 56 44 55 20 20 73 74 6F 72 65 73 20 20 61      VDU  stores  a
019BE0:  20 20 63 75 72 72 65 6E 74 20 20 70 6F 73 69 74      current  posit
019BF0:  69 6F 6E 2E 20 20 54 68 69 73 20 20 69 73 20 20    ion.  This  is  
019C00:  74 68 65 20 20 75 73 65 72 0D 0A 20 20 20 20 20    the  user..     
019C10:  20 20 63 6F 6F 72 64 69 6E 61 74 65 20 6F 66 20      coordinate of 
019C20:  74 68 65 20 6C 61 73 74 20 70 6F 69 6E 74 20 73    the last point s
019C30:  70 65 63 69 66 69 65 64 20 74 6F 20 74 68 65 20    pecified to the 
019C40:  20 47 72 61 70 68 69 63 73 20 20 56 44 55 20 20     Graphics  VDU  
019C50:  28 6F 72 20 20 74 68 65 0D 0A 20 20 20 20 20 20    (or  the..      
019C60:  20 6F 72 69 67 69 6E 20 61 66 74 65 72 20 63 6C     origin after cl
019C70:  65 61 72 69 6E 67 20 74 68 65 20 67 72 61 70 68    earing the graph
019C80:  69 63 73 20 77 69 6E 64 6F 77 29 2E 20 20 54 68    ics window).  Th
019C90:  65 20 20 6F 72 69 67 69 6E 20 20 6F 66 20 20 72    e  origin  of  r
019CA0:  65 6C 61 74 69 76 65 0D 0A 20 20 20 20 20 20 20    elative..       
019CB0:  63 6F 6F 72 64 69 6E 61 74 65 73 20 20 69 73 20    coordinates  is 
019CC0:  20 73 70 65 63 69 66 69 65 64 20 20 74 6F 20 20     specified  to  
019CD0:  62 65 20 20 61 74 20 20 74 68 69 73 20 20 70 6F    be  at  this  po
019CE0:  69 6E 74 2C 20 20 20 74 68 75 73 20 20 20 72 65    int,   thus   re
019CF0:  6C 61 74 69 76 65 0D 0A 20 20 20 20 20 20 20 63    lative..       c
019D00:  6F 6F 72 64 69 6E 61 74 65 73 20 61 72 65 20 61    oordinates are a
019D10:  6E 20 6F 66 66 73 65 74 20 66 72 6F 6D 20 74 68    n offset from th
019D20:  65 20 63 75 72 72 65 6E 74 20 70 6F 73 69 74 69    e current positi
019D30:  6F 6E 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 57 68    on.....       Wh
019D40:  65 6E 20 64 72 61 77 69 6E 67 20 61 20 6C 69 6E    en drawing a lin
019D50:  65 20 6F 6E 65 20 65 6E 64 20 69 73 20 61 74 20    e one end is at 
019D60:  74 68 65 20 20 70 6F 73 69 74 69 6F 6E 20 20 73    the  position  s
019D70:  70 65 63 69 66 69 65 64 20 20 77 68 69 6C 65 20    pecified  while 
019D80:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 6F 74 68     the..       oth
019D90:  65 72 20 65 6E 64 20 20 69 73 20 20 61 74 20 20    er end  is  at  
019DA0:  74 68 65 20 20 63 75 72 72 65 6E 74 20 20 67 72    the  current  gr
019DB0:  61 70 68 69 63 73 20 20 70 6F 73 69 74 69 6F 6E    aphics  position
019DC0:  2E 20 20 57 68 65 6E 20 20 64 72 61 77 69 6E 67    .  When  drawing
019DD0:  20 20 61 0D 0A 20 20 20 20 20 20 20 63 68 61 72      a..       char
019DE0:  61 63 74 65 72 20 6F 6E 20 74 68 65 20 73 63 72    acter on the scr
019DF0:  65 65 6E 20 75 73 69 6E 67 20 74 68 65 20 67 72    een using the gr
019E00:  61 70 68 69 63 73 20 63 68 61 72 61 63 74 65 72    aphics character
019E10:  20 77 72 69 74 65 20 72 6F 75 74 69 6E 65 20 74     write routine t
019E20:  68 65 0D 0A 20 20 20 20 20 20 20 63 68 61 72 61    he..       chara
019E30:  63 74 65 72 20 69 73 20 70 6C 61 63 65 64 20 77    cter is placed w
019E40:  69 74 68 20 74 68 65 20 63 75 72 72 65 6E 74 20    ith the current 
019E50:  67 72 61 70 68 69 63 73 20 20 20 70 6F 73 69 74    graphics   posit
019E60:  69 6F 6E 20 20 20 62 65 69 6E 67 20 20 20 74 68    ion   being   th
019E70:  65 0D 0A 20 20 20 20 20 20 20 74 6F 70 20 6C 65    e..       top le
019E80:  66 74 20 63 6F 72 6E 65 72 20 6F 66 20 74 68 65    ft corner of the
019E90:  20 63 68 61 72 61 63 74 65 72 2E 0D 0A 0D 0A 20     character..... 
019EA0:  20 20 20 20 20 20 41 66 74 65 72 20 70 6C 6F 74          After plot
019EB0:  74 69 6E 67 20 6F 72 20 74 65 73 74 69 6E 67 20    ting or testing 
019EC0:  61 20 20 70 6F 69 6E 74 20 20 6F 72 20 20 64 72    a  point  or  dr
019ED0:  61 77 69 6E 67 20 20 61 20 20 6C 69 6E 65 20 20    awing  a  line  
019EE0:  74 68 65 20 20 63 75 72 72 65 6E 74 0D 0A 20 20    the  current..  
019EF0:  20 20 20 20 20 70 6F 73 69 74 69 6F 6E 20 69 73         position is
019F00:  20 6D 6F 76 65 64 20 74 6F 20 74 68 65 20 70 6F     moved to the po
019F10:  73 69 74 69 6F 6E 20 73 70 65 63 69 66 69 65 64    sition specified
019F20:  2E 20 41 66 74 65 72 20 77 72 69 74 69 6E 67 20    . After writing 
019F30:  61 20 63 68 61 72 61 63 74 65 72 0D 0A 20 20 20    a character..   
019F40:  20 20 20 20 74 68 65 20 63 75 72 72 65 6E 74 20        the current 
019F50:  67 72 61 70 68 69 63 73 20 70 6F 73 69 74 69 6F    graphics positio
019F60:  6E 20 69 73 20 6D 6F 76 65 64 20 20 72 69 67 68    n is moved  righ
019F70:  74 20 20 62 79 20 20 74 68 65 20 20 77 69 64 74    t  by  the  widt
019F80:  68 20 20 6F 66 20 20 74 68 65 0D 0A 20 20 20 20    h  of  the..    
019F90:  20 20 20 63 68 61 72 61 63 74 65 72 20 72 65 61       character rea
019FA0:  64 79 20 66 6F 72 20 74 68 65 20 6E 65 78 74 20    dy for the next 
019FB0:  63 68 61 72 61 63 74 65 72 20 74 6F 20 62 65 20    character to be 
019FC0:  77 72 69 74 74 65 6E 2E 0D 0A 0D 0A 20 20 20 20    written.....    
019FD0:  20 20 20 35 2E 33 20 47 72 61 70 68 69 63 73 20       5.3 Graphics 
019FE0:  50 65 6E 20 61 6E 64 20 50 61 70 65 72 20 49 6E    Pen and Paper In
019FF0:  6B 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ks.......       
01A000:  54 68 65 20 47 72 61 70 68 69 63 73 20 56 44 55    The Graphics VDU
01A010:  20 68 61 73 20 61 20 70 65 6E 20 28 66 6F 72 65     has a pen (fore
01A020:  67 72 6F 75 6E 64 29 20 69 6E 6B 20 61 6E 64 20    ground) ink and 
01A030:  61 20 20 70 61 70 65 72 20 20 28 62 61 63 6B 67    a  paper  (backg
01A040:  72 6F 75 6E 64 29 0D 0A 20 20 20 20 20 20 20 69    round)..       i
01A050:  6E 6B 2E 20 54 68 65 20 67 72 61 70 68 69 63 73    nk. The graphics
01A060:  20 70 65 6E 20 69 6E 6B 20 69 73 20 75 73 65 64     pen ink is used
01A070:  20 74 6F 20 70 6C 6F 74 20 70 69 78 65 6C 73 20     to plot pixels 
01A080:  61 6E 64 20 74 6F 20 73 65 74 20 66 6F 72 65 67    and to set foreg
01A090:  72 6F 75 6E 64 0D 0A 20 20 20 20 20 20 20 70 69    round..       pi
01A0A0:  78 65 6C 73 20 77 68 65 6E 20 77 72 69 74 69 6E    xels when writin
01A0B0:  67 20 63 68 61 72 61 63 74 65 72 73 20 28 73 65    g characters (se
01A0C0:  65 20 35 2E 36 20 62 65 6C 6F 77 29 20 61 6E 64    e 5.6 below) and
01A0D0:  20 64 72 61 77 69 6E 67 20 6C 69 6E 65 73 20 20     drawing lines  
01A0E0:  28 73 65 65 0D 0A 20 20 20 20 20 20 20 35 2E 37    (see..       5.7
01A0F0:  20 62 65 6C 6F 77 29 2E 20 54 68 65 20 67 72 61     below). The gra
01A100:  70 68 69 63 73 20 70 61 70 65 72 20 69 6E 6B 20    phics paper ink 
01A110:  20 69 73 20 20 75 73 65 64 20 20 74 6F 20 20 63     is  used  to  c
01A120:  6C 65 61 72 20 20 74 68 65 20 20 67 72 61 70 68    lear  the  graph
01A130:  69 63 73 0D 0A 20 20 20 20 20 20 20 77 69 6E 64    ics..       wind
01A140:  6F 77 20 61 6E 64 20 74 6F 20 73 65 74 20 62 61    ow and to set ba
01A150:  63 6B 67 72 6F 75 6E 64 20 70 69 78 65 6C 73 20    ckground pixels 
01A160:  77 68 65 6E 20 77 72 69 74 69 6E 67 20 63 68 61    when writing cha
01A170:  72 61 63 74 65 72 73 20 6F 72 20 64 72 61 77 69    racters or drawi
01A180:  6E 67 0D 0A 20 20 20 20 20 20 20 6C 69 6E 65 73    ng..       lines
01A190:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
01A1A0:  70 65 6E 20 61 6E 64 20 70 61 70 65 72 20 63 61    pen and paper ca
01A1B0:  6E 20 62 65 20 73 65 74 20 74 6F 20 61 6E 79 20    n be set to any 
01A1C0:  69 6E 6B 20 76 61 6C 69 64 20 69 6E 20 20 74 68    ink valid in  th
01A1D0:  65 20 20 63 75 72 72 65 6E 74 20 20 73 63 72 65    e  current  scre
01A1E0:  65 6E 0D 0A 20 20 20 20 20 20 20 6D 6F 64 65 20    en..       mode 
01A1F0:  28 73 65 65 20 73 65 63 74 69 6F 6E 20 36 2E 32    (see section 6.2
01A200:  29 2E 20 54 68 65 20 64 65 66 61 75 6C 74 20 68    ). The default h
01A210:  61 73 20 74 68 65 20 70 61 70 65 72 20 73 65 74    as the paper set
01A220:  20 74 6F 20 69 6E 6B 20 30 20 61 6E 64 20 74 68     to ink 0 and th
01A230:  65 0D 0A 20 20 20 20 20 20 20 70 65 6E 20 73 65    e..       pen se
01A240:  74 20 74 6F 20 69 6E 6B 20 31 2E 20 43 68 61 6E    t to ink 1. Chan
01A250:  67 69 6E 67 20 74 68 65 20 70 65 6E 20 6F 72 20    ging the pen or 
01A260:  70 61 70 65 72 20 69 6E 6B 20 64 6F 65 73 20 20    paper ink does  
01A270:  6E 6F 74 20 20 63 68 61 6E 67 65 20 20 74 68 65    not  change  the
01A280:  0D 0A 20 20 20 20 20 20 20 73 63 72 65 65 6E 20    ..       screen 
01A290:  69 74 20 6D 65 72 65 6C 79 20 61 6C 74 65 72 73    it merely alters
01A2A0:  20 68 6F 77 20 74 68 65 20 70 69 78 65 6C 73 20     how the pixels 
01A2B0:  77 69 6C 6C 20 62 65 20 77 72 69 74 74 65 6E 20    will be written 
01A2C0:  69 6E 20 74 68 65 20 66 75 74 75 72 65 2E 0D 0A    in the future...
01A2D0:  0D 0A 0D 0A 20 20 20 20 20 20 20 35 2E 34 20 47    ....       5.4 G
01A2E0:  72 61 70 68 69 63 73 20 57 72 69 74 65 20 4D 6F    raphics Write Mo
01A2F0:  64 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 50 69    de.....       Pi
01A300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
01A310:  16 00 00 00 02 09 50 E5 16 00 C1 02 00 00 00 02    ......P.........
01A320:  16 00 C2 02 00 00 00 02 16 00 C3 02 00 00 00 02    ................
01A330:  16 00 C4 02 00 00 00 02 16 00 C5 02 00 00 00 02    ................
01A340:  16 00 C6 02 00 00 00 02 16 00 C7 02 00 00 00 02    ................
01A350:  16 00 C8 02 00 00 00 02 16 00 C9 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:  78 65 6C 73 20 70 6C 6F 74 74 65 64 20 62 79 20    xels plotted by 
01A410:  74 68 65 20 47 72 61 70 68 69 63 73 20 20 56 44    the Graphics  VD
01A420:  55 20 20 61 72 65 20 20 70 6C 6F 74 74 65 64 20    U  are  plotted 
01A430:  20 75 73 69 6E 67 20 20 74 68 65 20 20 63 75 72     using  the  cur
01A440:  72 65 6E 74 0D 0A 20 20 20 20 20 20 20 67 72 61    rent..       gra
01A450:  70 68 69 63 73 20 77 72 69 74 65 20 20 6D 6F 64    phics write  mod
01A460:  65 2E 20 20 54 68 69 73 20 20 73 70 65 63 69 66    e.  This  specif
01A470:  69 65 73 20 20 68 6F 77 20 20 74 68 65 20 20 69    ies  how  the  i
01A480:  6E 6B 20 20 74 6F 20 20 62 65 20 20 70 6C 6F 74    nk  to  be  plot
01A490:  74 65 64 0D 0A 20 20 20 20 20 20 20 69 6E 74 65    ted..       inte
01A4A0:  72 61 63 74 73 20 77 69 74 68 20 74 68 65 20 69    racts with the i
01A4B0:  6E 6B 20 61 20 70 69 78 65 6C 20 69 73 20 63 75    nk a pixel is cu
01A4C0:  72 72 65 6E 74 6C 79 20 73 65 74 20 74 6F 2E 0D    rrently set to..
01A4D0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54    .....       AMST
01A4E0:  52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36    RAD CPC464/664/6
01A4F0:  31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20    128 FIRMWARE    
01A500:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01A510:  20 20 20 20 20 20 20 20 20 20 70 61 67 65 20 35              page 5
01A520:  2E 32 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    .2..............
01A530:  20 20 20 20 20 20 20 54 68 65 72 65 20 61 72 65           There are
01A540:  20 66 6F 75 72 20 77 72 69 74 65 20 6D 6F 64 65     four write mode
01A550:  73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    s:....          
01A560:  20 20 20 20 20 20 30 3A 46 4F 52 43 45 3A 20 20          0:FORCE:  
01A570:  20 20 20 20 20 20 20 20 20 20 4E 45 57 20 3D 20              NEW = 
01A580:  49 4E 4B 0D 0A 20 20 20 20 20 20 20 20 20 20 20    INK..           
01A590:  20 20 20 20 20 31 3A 45 58 43 4C 55 53 49 56 45         1:EXCLUSIVE
01A5A0:  2D 4F 52 3A 20 20 20 20 20 4E 45 57 20 3D 20 49    -OR:     NEW = I
01A5B0:  4E 4B 20 78 6F 72 20 4F 4C 44 0D 0A 20 20 20 20    NK xor OLD..    
01A5C0:  20 20 20 20 20 20 20 20 20 20 20 20 32 3A 41 4E                2:AN
01A5D0:  44 3A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    D:              
01A5E0:  4E 45 57 20 3D 20 49 4E 4B 20 61 6E 64 20 4F 4C    NEW = INK and OL
01A5F0:  44 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    D..             
01A600:  20 20 20 33 3A 4F 52 3A 20 20 20 20 20 20 20 20       3:OR:        
01A610:  20 20 20 20 20 20 20 4E 45 57 20 3D 20 49 4E 4B           NEW = INK
01A620:  20 6F 72 20 4F 4C 44 0D 0A 0D 0A 20 20 20 20 20     or OLD....     
01A630:  20 20 20 20 20 20 20 20 20 20 20 4E 45 57 20 69               NEW i
01A640:  73 20 74 68 65 20 69 6E 6B 20 74 68 61 74 20 74    s the ink that t
01A650:  68 65 20 70 69 78 65 6C 73 20 77 69 6C 6C 20 62    he pixels will b
01A660:  65 20 73 65 74 20 74 6F 2E 0D 0A 20 20 20 20 20    e set to...     
01A670:  20 20 20 20 20 20 20 20 20 20 20 4F 4C 44 20 69               OLD i
01A680:  73 20 74 68 65 20 69 6E 6B 20 74 68 61 74 20 74    s the ink that t
01A690:  68 65 20 70 69 78 65 6C 20 69 73 20 63 75 72 72    he pixel is curr
01A6A0:  65 6E 74 6C 79 20 73 65 74 20 74 6F 2E 0D 0A 20    ently set to... 
01A6B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                   I
01A6C0:  4E 4B 20 69 73 20 74 68 65 20 69 6E 6B 20 74 68    NK is the ink th
01A6D0:  61 74 20 69 73 20 74 6F 20 62 65 20 70 6C 6F 74    at is to be plot
01A6E0:  74 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54    ted.....       T
01A6F0:  68 65 20 64 65 66 61 75 6C 74 20 47 72 61 70 68    he default Graph
01A700:  69 63 73 20 77 72 69 74 65 20 6D 6F 64 65 20 69    ics write mode i
01A710:  73 20 46 4F 52 43 45 20 6D 6F 64 65 2E 20 20 54    s FORCE mode.  T
01A720:  68 65 20 20 54 65 78 74 20 20 56 44 55 20 20 61    he  Text  VDU  a
01A730:  6C 77 61 79 73 0D 0A 20 20 20 20 20 20 20 73 65    lways..       se
01A740:  74 73 20 70 69 78 65 6C 73 20 61 73 20 69 66 20    ts pixels as if 
01A750:  69 74 20 69 73 20 6F 70 65 72 61 74 69 6E 67 20    it is operating 
01A760:  69 6E 20 20 74 68 69 73 20 20 6D 6F 64 65 2E 20    in  this  mode. 
01A770:  20 41 6C 73 6F 20 20 74 68 65 20 20 67 72 61 70     Also  the  grap
01A780:  68 69 63 73 0D 0A 20 20 20 20 20 20 20 77 69 6E    hics..       win
01A790:  64 6F 77 20 69 73 20 63 6C 65 61 72 65 64 20 62    dow is cleared b
01A7A0:  79 20 77 72 69 74 69 6E 67 20 69 6E 20 46 4F 52    y writing in FOR
01A7B0:  43 45 20 6D 6F 64 65 20 69 72 72 65 73 70 65 63    CE mode irrespec
01A7C0:  74 69 76 65 20 6F 66 20 74 68 65 20 20 61 63 74    tive of the  act
01A7D0:  75 61 6C 0D 0A 20 20 20 20 20 20 20 77 72 69 74    ual..       writ
01A7E0:  65 20 6D 6F 64 65 2E 0D 0A 0D 0A 20 20 20 20 20    e mode.....     
01A7F0:  20 20 50 72 6F 76 69 64 65 64 20 74 68 61 74 20      Provided that 
01A800:  73 75 69 74 61 62 6C 65 20 69 6E 6B 20 73 65 74    suitable ink set
01A810:  74 69 6E 67 73 20 61 72 65 20 63 68 6F 73 65 6E    tings are chosen
01A820:  2C 20 41 4E 44 20 6D 6F 64 65 20 61 6E 64 20 20    , AND mode and  
01A830:  4F 52 20 20 6D 6F 64 65 0D 0A 20 20 20 20 20 20    OR  mode..      
01A840:  20 61 6C 6C 6F 77 20 70 61 72 74 69 63 75 6C 61     allow particula
01A850:  72 20 62 69 74 73 20 69 6E 20 70 69 78 65 6C 20    r bits in pixel 
01A860:  74 6F 20 62 65 20 63 6C 65 61 72 65 64 20 6F 72    to be cleared or
01A870:  20 73 65 74 2E 20 54 68 69 73 20 20 61 6C 6C 6F     set. This  allo
01A880:  77 73 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20    ws  the..       
01A890:  47 72 61 70 68 69 63 73 20 56 44 55 20 74 6F 20    Graphics VDU to 
01A8A0:  77 72 69 74 65 20 69 6E 20 27 62 69 74 20 70 6C    write in 'bit pl
01A8B0:  61 6E 65 73 27 20 61 6E 64 20 62 79 20 63 68 6F    anes' and by cho
01A8C0:  6F 73 69 6E 67 20 74 68 65 20 20 63 6F 6C 6F 75    osing the  colou
01A8D0:  72 73 20 20 6F 66 0D 0A 20 20 20 20 20 20 20 74    rs  of..       t
01A8E0:  68 65 20 69 6E 6B 73 20 63 61 72 65 66 75 6C 6C    he inks carefull
01A8F0:  79 20 6F 76 65 72 6C 61 70 70 69 6E 67 20 73 68    y overlapping sh
01A900:  61 70 65 73 20 63 61 6E 20 62 65 20 64 72 61 77    apes can be draw
01A910:  6E 20 20 61 6E 64 20 20 61 75 74 6F 6D 61 74 69    n  and  automati
01A920:  63 61 6C 6C 79 0D 0A 20 20 20 20 20 20 20 68 69    cally..       hi
01A930:  64 64 65 6E 20 62 65 68 69 6E 64 20 6F 6E 65 20    dden behind one 
01A940:  61 6E 6F 74 68 65 72 2E 0D 0A 0D 0A 20 20 20 20    another.....    
01A950:  20 20 20 49 66 20 74 68 65 20 69 6E 6B 73 20 61       If the inks a
01A960:  72 65 20 63 68 6F 73 65 6E 20 73 75 69 74 61 62    re chosen suitab
01A970:  6C 79 2C 20 45 58 43 4C 55 53 49 56 45 2D 4F 52    ly, EXCLUSIVE-OR
01A980:  20 6D 6F 64 65 20 63 61 6E 20 62 65 20 75 73 65     mode can be use
01A990:  64 20 74 6F 20 70 6C 6F 74 0D 0A 20 20 20 20 20    d to plot..     
01A9A0:  20 20 6F 76 65 72 20 74 68 65 20 63 75 72 72 65      over the curre
01A9B0:  6E 74 20 63 6F 6E 74 65 6E 74 73 20 6F 66 20 74    nt contents of t
01A9C0:  68 65 20 73 63 72 65 65 6E 2E 20 49 74 20 69 73    he screen. It is
01A9D0:  20 61 6C 73 6F 20 75 73 65 66 75 6C 20 20 62 65     also useful  be
01A9E0:  63 61 75 73 65 20 20 61 0D 0A 20 20 20 20 20 20    cause  a..      
01A9F0:  20 73 68 61 70 65 20 20 63 61 6E 20 20 62 65 20     shape  can  be 
01AA00:  20 72 65 6D 6F 76 65 64 20 20 66 72 6F 6D 20 20     removed  from  
01AA10:  74 68 65 20 20 73 63 72 65 65 6E 20 20 62 79 20    the  screen  by 
01AA20:  20 72 65 64 72 61 77 69 6E 67 20 20 20 69 74 20     redrawing   it 
01AA30:  20 20 73 69 6E 63 65 0D 0A 20 20 20 20 20 20 20      since..       
01AA40:  65 78 63 6C 75 73 69 76 65 2D 6F 72 69 6E 67 20    exclusive-oring 
01AA50:  77 69 74 68 20 74 68 65 20 73 61 6D 65 20 69 6E    with the same in
01AA60:  6B 20 74 77 69 63 65 20 72 65 73 74 6F 72 65 73    k twice restores
01AA70:  20 74 68 65 20 6F 72 69 67 69 6E 61 6C 20 20 73     the original  s
01AA80:  65 74 74 69 6E 67 0D 0A 20 20 20 20 20 20 20 6F    etting..       o
01AA90:  66 20 74 68 65 20 70 69 78 65 6C 2E 0D 0A 0D 0A    f the pixel.....
01AAA0:  20 20 20 20 20 20 20 54 68 65 20 67 72 61 70 68           The graph
01AAB0:  69 63 73 20 77 72 69 74 65 20 6D 6F 64 65 20 6D    ics write mode m
01AAC0:  61 79 20 62 65 20 73 65 74 20 62 79 20 63 61 6C    ay be set by cal
01AAD0:  6C 69 6E 67 20 53 43 52 20 41 43 43 45 53 53 20    ling SCR ACCESS 
01AAE0:  6F 72 20 62 79 20 75 73 69 6E 67 20 61 0D 0A 20    or by using a.. 
01AAF0:  20 20 20 20 20 20 63 6F 6E 74 72 6F 6C 20 63 6F          control co
01AB00:  64 65 20 28 73 65 65 20 41 70 70 65 6E 64 69 78    de (see Appendix
01AB10:  20 56 49 49 29 2E 0D 0A 0D 0A 20 20 20 20 20 20     VII).....      
01AB20:  20 35 2E 35 20 47 72 61 70 68 69 63 73 20 57 69     5.5 Graphics Wi
01AB30:  6E 64 6F 77 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    ndow.....       
01AB40:  54 68 65 20 47 72 61 70 68 69 63 73 20 56 44 55    The Graphics VDU
01AB50:  20 61 6C 6C 6F 77 73 20 61 20 73 69 6E 67 6C 65     allows a single
01AB60:  20 77 69 6E 64 6F 77 20 74 6F 20 62 65 20 73 70     window to be sp
01AB70:  65 63 69 66 69 65 64 2E 20 20 54 68 69 73 20 20    ecified.  This  
01AB80:  61 6C 6C 6F 77 73 0D 0A 20 20 20 20 20 20 20 74    allows..       t
01AB90:  68 65 20 75 73 65 72 20 20 74 6F 20 20 6D 69 78    he user  to  mix
01ABA0:  20 20 74 65 78 74 20 20 61 6E 64 20 20 67 72 61      text  and  gra
01ABB0:  70 68 69 63 73 20 20 6F 6E 20 20 74 68 65 20 20    phics  on  the  
01ABC0:  73 63 72 65 65 6E 20 20 77 69 74 68 6F 75 74 20    screen  without 
01ABD0:  20 74 68 65 6D 0D 0A 20 20 20 20 20 20 20 69 6E     them..       in
01ABE0:  74 65 72 66 65 72 69 6E 67 20 77 69 74 68 20 65    terfering with e
01ABF0:  61 63 68 20 6F 74 68 65 72 2E 20 20 49 66 20 20    ach other.  If  
01AC00:  74 68 65 20 20 74 65 78 74 20 20 77 69 6E 64 6F    the  text  windo
01AC10:  77 73 20 20 61 72 65 20 20 61 6C 6C 6F 77 65 64    ws  are  allowed
01AC20:  20 20 74 6F 0D 0A 20 20 20 20 20 20 20 6F 76 65      to..       ove
01AC30:  72 6C 61 70 20 74 68 65 20 67 72 61 70 68 69 63    rlap the graphic
01AC40:  73 20 77 69 6E 64 6F 77 20 74 68 65 6E 20 74 68    s window then th
01AC50:  65 20 63 6F 6E 74 65 6E 74 73 20 6F 66 20 74 68    e contents of th
01AC60:  65 20 20 67 72 61 70 68 69 63 73 20 20 77 69 6E    e  graphics  win
01AC70:  64 6F 77 0D 0A 20 20 20 20 20 20 20 77 69 6C 6C    dow..       will
01AC80:  20 62 65 20 6D 6F 76 65 64 20 77 68 65 6E 20 74     be moved when t
01AC90:  68 65 20 74 65 78 74 20 77 69 6E 64 6F 77 73 20    he text windows 
01ACA0:  61 72 65 20 72 6F 6C 6C 65 64 2E 20 20 54 68 65    are rolled.  The
01ACB0:  20 20 67 72 61 70 68 69 63 73 20 20 77 69 6E 64      graphics  wind
01ACC0:  6F 77 0D 0A 20 20 20 20 20 20 20 63 61 6E 6E 6F    ow..       canno
01ACD0:  74 20 62 65 20 72 6F 6C 6C 65 64 2E 0D 0A 0D 0A    t be rolled.....
01ACE0:  20 20 20 20 20 20 20 57 68 65 6E 20 70 6C 6F 74           When plot
01ACF0:  74 69 6E 67 20 70 6F 69 6E 74 2C 20 64 72 61 77    ting point, draw
01AD00:  69 6E 67 20 6C 69 6E 65 73 20 20 6F 72 20 20 77    ing lines  or  w
01AD10:  72 69 74 69 6E 67 20 20 63 68 61 72 61 63 74 65    riting  characte
01AD20:  72 73 20 20 6E 6F 20 20 70 69 78 65 6C 0D 0A 20    rs  no  pixel.. 
01AD30:  20 20 20 20 20 20 6F 75 74 73 69 64 65 20 74 68          outside th
01AD40:  65 20 67 72 61 70 68 69 63 73 20 77 69 6E 64 6F    e graphics windo
01AD50:  77 20 69 73 20 65 76 65 72 20 77 72 69 74 74 65    w is ever writte
01AD60:  6E 2E 20 55 6E 6C 69 6B 65 20 74 68 65 20 20 74    n. Unlike the  t
01AD70:  65 78 74 20 20 77 69 6E 64 6F 77 73 0D 0A 20 20    ext  windows..  
01AD80:  20 20 20 20 20 6E 6F 20 61 63 74 69 6F 6E 20 69         no action i
01AD90:  73 20 74 61 6B 65 6E 20 74 6F 20 66 6F 72 63 65    s taken to force
01ADA0:  20 20 61 20 20 70 6F 69 6E 74 20 20 69 6E 73 69      a  point  insi
01ADB0:  64 65 20 20 74 68 65 20 20 77 69 6E 64 6F 77 20    de  the  window 
01ADC0:  20 2D 20 20 61 63 74 69 6F 6E 73 0D 0A 20 20 20     -  actions..   
01ADD0:  20 20 20 20 6F 75 74 73 69 64 65 20 74 68 65 20        outside the 
01ADE0:  77 69 6E 64 6F 77 20 77 69 6C 6C 20 62 65 20 20    window will be  
01ADF0:  6C 6F 73 74 2E 20 20 43 6F 6E 76 65 72 73 65 6C    lost.  Conversel
01AE00:  79 2C 20 20 77 68 65 6E 20 20 74 65 73 74 69 6E    y,  when  testin
01AE10:  67 20 20 70 6F 69 6E 74 73 2C 0D 0A 20 20 20 20    g  points,..    
01AE20:  20 20 20 70 6F 69 6E 74 73 20 6F 75 74 73 69 64       points outsid
01AE30:  65 20 74 68 65 20 77 69 6E 64 6F 77 20 61 72 65    e the window are
01AE40:  20 61 6C 6C 20 64 65 65 6D 65 64 20 74 6F 20 20     all deemed to  
01AE50:  62 65 20 20 73 65 74 20 20 74 6F 20 20 74 68 65    be  set  to  the
01AE60:  20 20 63 75 72 72 65 6E 74 0D 0A 20 20 20 20 20      current..     
01AE70:  20 20 67 72 61 70 68 69 63 73 20 70 61 70 65 72      graphics paper
01AE80:  20 69 6E 6B 2E 20 50 6F 69 6E 74 73 20 69 6E 73     ink. Points ins
01AE90:  69 64 65 20 74 68 65 20 77 69 6E 64 6F 77 20 61    ide the window a
01AEA0:  72 65 20 77 72 69 74 74 65 6E 20 61 6E 64 20 20    re written and  
01AEB0:  72 65 61 64 20 20 61 73 0D 0A 20 20 20 20 20 20    read  as..      
01AEC0:  20 65 78 70 65 63 74 65 64 2E 0D 0A 0D 0A 20 20     expected.....  
01AED0:  20 20 20 20 20 54 68 65 20 67 72 61 70 68 69 63         The graphic
01AEE0:  73 20 77 69 6E 64 6F 77 20 69 73 20 72 65 6C 61    s window is rela
01AEF0:  74 65 64 20 74 6F 20 61 20 73 70 65 63 69 66 69    ted to a specifi
01AF00:  63 20 61 72 65 61 20 6F 66 20 20 74 68 65 20 20    c area of  the  
01AF10:  73 63 72 65 65 6E 20 20 61 6E 64 0D 0A 20 20 20    screen  and..   
01AF20:  20 20 20 20 6E 6F 74 20 74 6F 20 74 68 65 20 75        not to the u
01AF30:  73 65 72 20 63 6F 6F 72 64 69 6E 61 74 65 20 73    ser coordinate s
01AF40:  79 73 74 65 6D 2E 20 54 68 75 73 2C 20 63 68 61    ystem. Thus, cha
01AF50:  6E 67 69 6E 67 20 74 68 65 20 20 6F 72 69 67 69    nging the  origi
01AF60:  6E 20 20 6F 66 20 20 74 68 65 0D 0A 20 20 20 20    n  of  the..    
01AF70:  20 20 20 75 73 65 72 20 63 6F 6F 72 64 69 6E 61       user coordina
01AF80:  74 65 20 73 79 73 74 65 6D 20 77 69 6C 6C 20 6E    te system will n
01AF90:  6F 74 20 6D 6F 76 65 20 74 68 65 20 6C 6F 63 61    ot move the loca
01AFA0:  74 69 6F 6E 20 6F 66 20 74 68 65 20 77 69 6E 64    tion of the wind
01AFB0:  6F 77 20 6F 6E 20 74 68 65 0D 0A 20 20 20 20 20    ow on the..     
01AFC0:  20 20 73 63 72 65 65 6E 20 61 6C 74 68 6F 75 67      screen althoug
01AFD0:  68 20 69 74 20 64 6F 65 73 20 63 68 61 6E 67 65    h it does change
01AFE0:  20 74 68 65 20 75 73 65 72 20 63 6F 6F 72 64 69     the user coordi
01AFF0:  6E 61 74 65 73 20 6F 66 20 70 6F 69 6E 74 73 20    nates of points 
01B000:  20 69 6E 20 20 74 68 65 0D 0A 20 20 20 20 20 20     in  the..      
01B010:  20 77 69 6E 64 6F 77 2E 0D 0A 0D 0A 20 20 20 20     window.....    
01B020:  20 20 20 54 68 65 20 64 65 66 61 75 6C 74 20 67       The default g
01B030:  72 61 70 68 69 63 73 20 77 69 6E 64 6F 77 2C 20    raphics window, 
01B040:  73 65 74 20 61 74 20 20 45 4D 53 20 20 61 6E 64    set at  EMS  and
01B050:  20 20 61 66 74 65 72 20 20 63 68 61 6E 67 69 6E      after  changin
01B060:  67 20 20 73 63 72 65 65 6E 0D 0A 20 20 20 20 20    g  screen..     
01B070:  20 20 6D 6F 64 65 2C 20 63 6F 76 65 72 73 20 74      mode, covers t
01B080:  68 65 20 77 68 6F 6C 65 20 73 63 72 65 65 6E 2E    he whole screen.
01B090:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ........       A
01B0A0:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
01B0B0:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
01B0C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01B0D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
01B0E0:  65 20 35 2E 33 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    e 5.3...........
01B0F0:  0A 0D 0A 20 20 20 20 20 20 20 35 2E 36 20 57 72    ...       5.6 Wr
01B100:  69 74 69 6E 67 20 43 68 61 72 61 63 74 65 72 73    iting Characters
01B110:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
01B120:  47 72 61 70 68 69 63 73 20 56 44 55 20 77 72 69    Graphics VDU wri
01B130:  74 65 20 63 68 61 72 61 63 74 65 72 20 72 6F 75    te character rou
01B140:  74 69 6E 65 20 64 72 61 77 73 20 61 20 20 63 68    tine draws a  ch
01B150:  61 72 61 63 74 65 72 20 20 77 69 74 68 20 20 74    aracter  with  t
01B160:  68 65 0D 0A 20 20 20 20 20 20 20 63 75 72 72 65    he..       curre
01B170:  6E 74 20 67 72 61 70 68 69 63 73 20 70 6F 73 69    nt graphics posi
01B180:  74 69 6F 6E 20 61 74 20 74 68 65 20 74 6F 70 20    tion at the top 
01B190:  6C 65 66 74 20 63 6F 72 6E 65 72 20 6F 66 20 74    left corner of t
01B1A0:  68 65 20 63 68 61 72 61 63 74 65 72 2E 20 54 68    he character. Th
01B1B0:  65 0D 0A 20 20 20 20 20 20 20 63 75 72 72 65 6E    e..       curren
01B1C0:  74 20 70 6F 73 69 74 69 6F 6E 20 69 73 20 6D 6F    t position is mo
01B1D0:  76 65 64 20 72 69 67 68 74 20 62 79 20 77 69 64    ved right by wid
01B1E0:  74 68 20 6F 66 20 61 20 63 68 61 72 61 63 74 65    th of a characte
01B1F0:  72 20 69 6E 20 74 68 65 20 63 75 72 72 65 6E 74    r in the current
01B200:  0D 0A 20 20 20 20 20 20 20 73 63 72 65 65 6E 20    ..       screen 
01B210:  6D 6F 64 65 2E 20 54 68 65 20 64 69 73 74 61 6E    mode. The distan
01B220:  63 65 20 6D 6F 76 65 64 20 76 61 72 69 65 73 3B    ce moved varies;
01B230:  20 69 6E 20 6D 6F 64 65 20 30 20 69 74 20 69 73     in mode 0 it is
01B240:  20 33 32 20 70 6F 69 6E 74 73 3B 20 20 69 6E 0D     32 points;  in.
01B250:  0A 20 20 20 20 20 20 20 6D 6F 64 65 20 31 2C 20    .       mode 1, 
01B260:  31 36 20 70 6F 69 6E 74 73 3B 20 61 6E 64 20 69    16 points; and i
01B270:  6E 20 6D 6F 64 65 20 32 2C 20 38 20 70 6F 69 6E    n mode 2, 8 poin
01B280:  74 73 2E 20 43 6F 6E 74 72 6F 6C 20 63 6F 64 65    ts. Control code
01B290:  73 2C 20 20 63 68 61 72 61 63 74 65 72 73 0D 0A    s,  characters..
01B2A0:  20 20 20 20 20 20 20 30 2E 2E 33 31 2C 20 61 72           0..31, ar
01B2B0:  65 20 70 72 69 6E 74 65 64 20 61 6E 64 20 61 72    e printed and ar
01B2C0:  65 20 6E 6F 74 20 6F 62 65 79 65 64 2E 0D 0A 0D    e not obeyed....
01B2D0:  0A 20 20 20 20 20 20 20 49 6E 20 56 31 2E 30 20    .       In V1.0 
01B2E0:  66 69 72 6D 77 61 72 65 20 74 68 65 20 63 68 61    firmware the cha
01B2F0:  72 61 63 74 65 72 20 69 73 20 61 6C 77 61 79 73    racter is always
01B300:  20 77 72 69 74 74 65 6E 20 6F 70 61 71 75 65 6C     written opaquel
01B310:  79 20 69 72 72 65 73 70 65 63 74 69 76 65 0D 0A    y irrespective..
01B320:  20 20 20 20 20 20 20 6F 66 20 77 68 61 74 20 6D           of what m
01B330:  6F 64 65 20 74 68 65 20 54 65 78 74 20 56 44 55    ode the Text VDU
01B340:  20 69 73 20 20 75 73 69 6E 67 20 20 74 6F 20 20     is  using  to  
01B350:  77 72 69 74 65 20 20 63 68 61 72 61 63 74 65 72    write  character
01B360:  73 2C 20 20 69 2E 65 2E 20 20 54 68 65 0D 0A 20    s,  i.e.  The.. 
01B370:  20 20 20 20 20 20 63 68 61 72 61 63 74 65 72 20          character 
01B380:  62 61 63 6B 67 72 6F 75 6E 64 20 20 69 73 20 20    background  is  
01B390:  73 65 74 20 20 74 6F 20 20 74 68 65 20 20 67 72    set  to  the  gr
01B3A0:  61 70 68 69 63 73 20 20 70 61 70 65 72 20 20 69    aphics  paper  i
01B3B0:  6E 6B 20 20 61 6E 64 20 20 74 68 65 0D 0A 20 20    nk  and  the..  
01B3C0:  20 20 20 20 20 66 6F 72 65 67 72 6F 75 6E 64 20         foreground 
01B3D0:  69 73 20 73 65 74 20 74 6F 20 20 74 68 65 20 20    is set to  the  
01B3E0:  67 72 61 70 68 69 63 73 20 20 70 65 6E 20 20 69    graphics  pen  i
01B3F0:  6E 6B 2E 20 20 48 6F 77 65 76 65 72 2C 20 20 74    nk.  However,  t
01B400:  68 65 20 20 63 75 72 72 65 6E 74 0D 0A 20 20 20    he  current..   
01B410:  20 20 20 20 67 72 61 70 68 69 63 73 20 77 72 69        graphics wri
01B420:  74 65 20 6D 6F 64 65 20 69 73 20 75 73 65 64 20    te mode is used 
01B430:  74 6F 20 70 6C 6F 74 20 74 68 65 20 70 69 78 65    to plot the pixe
01B440:  6C 73 20 69 6E 20 74 68 65 20 20 63 68 61 72 61    ls in the  chara
01B450:  63 74 65 72 20 20 28 73 65 65 0D 0A 20 20 20 20    cter  (see..    
01B460:  20 20 20 35 2E 34 20 61 62 6F 76 65 29 2E 0D 0A       5.4 above)...
01B470:  0D 0A 20 20 20 20 20 20 20 49 6E 20 74 68 65 20    ..       In the 
01B480:  56 31 2E 31 20 66 69 72 6D 77 61 72 65 20 74 68    V1.1 firmware th
01B490:  65 20 66 6F 72 65 67 72 6F 75 6E 64 20 74 6F 20    e foreground to 
01B4A0:  74 68 65 20 63 68 61 72 61 63 74 65 72 20 69 73    the character is
01B4B0:  20 61 6C 77 61 79 73 20 77 72 69 74 74 65 6E 0D     always written.
01B4C0:  0A 20 20 20 20 20 20 20 69 6E 20 74 68 65 20 67    .       in the g
01B4D0:  72 61 70 68 69 63 73 20 70 65 6E 20 69 6E 6B 20    raphics pen ink 
01B4E0:  75 73 69 6E 67 20 74 68 65 20 63 75 72 72 65 6E    using the curren
01B4F0:  74 20 67 72 61 70 68 69 63 73 20 77 72 69 74 65    t graphics write
01B500:  20 6D 6F 64 65 2E 20 48 6F 77 20 74 68 65 0D 0A     mode. How the..
01B510:  20 20 20 20 20 20 20 62 61 63 6B 67 72 6F 75 6E           backgroun
01B520:  64 20 74 6F 20 74 68 65 20 63 68 61 72 61 63 74    d to the charact
01B530:  65 72 20 69 73 20 77 72 69 74 74 65 6E 20 64 65    er is written de
01B540:  70 65 6E 64 73 20 6F 6E 20 74 68 65 20 62 61 63    pends on the bac
01B550:  6B 67 72 6F 75 6E 64 20 77 72 69 74 65 0D 0A 20    kground write.. 
01B560:  20 20 20 20 20 20 6D 6F 64 65 20 73 65 74 20 62          mode set b
01B570:  79 20 63 61 6C 6C 69 6E 67 20 47 52 41 20 53 45    y calling GRA SE
01B580:  54 20 42 41 43 4B 2E 20 49 66 20 74 68 65 20 20    T BACK. If the  
01B590:  62 61 63 6B 67 72 6F 75 6E 64 20 20 6D 6F 64 65    background  mode
01B5A0:  20 20 69 73 20 20 6F 70 61 71 75 65 0D 0A 20 20      is  opaque..  
01B5B0:  20 20 20 20 20 74 68 65 6E 20 74 68 65 20 62 61         then the ba
01B5C0:  63 6B 67 72 6F 75 6E 64 20 74 6F 20 74 68 65 20    ckground to the 
01B5D0:  63 68 61 72 61 63 74 65 72 20 69 73 20 77 72 69    character is wri
01B5E0:  74 74 65 6E 20 69 6E 20 74 68 65 20 67 72 61 70    tten in the grap
01B5F0:  68 69 63 73 20 20 70 61 70 65 72 0D 0A 20 20 20    hics  paper..   
01B600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
01B610:  17 00 00 00 02 09 50 E5 17 00 C1 02 00 00 00 02    ......P.........
01B620:  17 00 C2 02 00 00 00 02 17 00 C3 02 00 00 00 02    ................
01B630:  17 00 C4 02 00 00 00 02 17 00 C5 02 00 00 00 02    ................
01B640:  17 00 C6 02 00 00 00 02 17 00 C7 02 00 00 00 02    ................
01B650:  17 00 C8 02 00 00 00 02 17 00 C9 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:  20 20 20 20 69 6E 6B 20 75 73 69 6E 67 20 74 68        ink using th
01B710:  65 20 63 75 72 72 65 6E 74 20 67 72 61 70 68 69    e current graphi
01B720:  63 73 20 77 72 69 74 65 20 6D 6F 64 65 2E 20 49    cs write mode. I
01B730:  66 20 74 68 65 20 62 61 63 6B 67 72 6F 75 6E 64    f the background
01B740:  20 20 6D 6F 64 65 20 20 69 73 0D 0A 20 20 20 20      mode  is..    
01B750:  20 20 20 74 72 61 6E 73 70 61 72 65 6E 74 20 74       transparent t
01B760:  68 65 6E 20 74 68 65 20 62 61 63 6B 67 72 6F 75    hen the backgrou
01B770:  6E 64 20 70 69 78 65 6C 73 20 61 72 65 20 6E 6F    nd pixels are no
01B780:  74 20 20 70 6C 6F 74 74 65 64 20 20 61 74 20 20    t  plotted  at  
01B790:  61 6C 6C 2C 20 20 74 68 65 0D 0A 20 20 20 20 20    all,  the..     
01B7A0:  20 20 63 75 72 72 65 6E 74 20 73 65 74 74 69 6E      current settin
01B7B0:  67 73 20 6F 66 20 74 68 65 73 65 20 70 69 78 65    gs of these pixe
01B7C0:  6C 73 20 61 72 65 20 6C 65 66 74 20 75 6E 63 68    ls are left unch
01B7D0:  61 6E 67 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20    anged.....      
01B7E0:  20 35 2E 37 20 44 72 61 77 69 6E 67 20 4C 69 6E     5.7 Drawing Lin
01B7F0:  65 73 20 28 4F 6E 6C 79 20 61 70 70 6C 69 63 61    es (Only applica
01B800:  62 6C 65 20 74 6F 20 56 31 2E 31 20 66 69 72 6D    ble to V1.1 firm
01B810:  77 61 72 65 29 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ware)......     
01B820:  20 20 54 68 65 20 47 72 61 70 68 69 63 73 20 56      The Graphics V
01B830:  44 55 20 68 61 73 20 61 20 6E 75 6D 62 65 72 20    DU has a number 
01B840:  6F 66 20 6F 70 74 69 6F 6E 73 20 20 74 68 61 74    of options  that
01B850:  20 20 61 66 66 65 63 74 20 20 74 68 65 20 20 77      affect  the  w
01B860:  61 79 20 20 74 68 61 74 0D 0A 20 20 20 20 20 20    ay  that..      
01B870:  20 6C 69 6E 65 73 20 61 72 65 20 64 72 61 77 6E     lines are drawn
01B880:  20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E 2E 20     on the screen. 
01B890:  20 54 68 65 73 65 20 20 69 6E 63 6C 75 64 65 20     These  include 
01B8A0:  20 74 68 65 20 20 62 61 63 6B 67 72 6F 75 6E 64     the  background
01B8B0:  20 20 77 72 69 74 65 0D 0A 20 20 20 20 20 20 20      write..       
01B8C0:  6D 6F 64 65 2C 20 74 68 65 20 66 69 72 73 74 20    mode, the first 
01B8D0:  70 6F 69 6E 74 20 6D 6F 64 65 2C 20 74 68 65 20    point mode, the 
01B8E0:  6C 69 6E 65 20 6D 61 73 6B 20 61 6E 64 20 74 68    line mask and th
01B8F0:  65 20 67 72 61 70 68 69 63 73 20 77 72 69 74 65    e graphics write
01B900:  20 6D 6F 64 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20     mode.......    
01B910:  20 20 20 54 68 65 20 6C 69 6E 65 20 6D 61 73 6B       The line mask
01B920:  20 69 73 20 61 6E 20 20 38 20 20 62 69 74 2C 20     is an  8  bit, 
01B930:  20 62 69 74 20 20 73 69 67 6E 69 66 69 63 61 6E     bit  significan
01B940:  74 20 20 76 61 6C 75 65 20 20 74 68 61 74 20 20    t  value  that  
01B950:  73 70 65 63 69 66 69 65 73 0D 0A 20 20 20 20 20    specifies..     
01B960:  20 20 77 68 65 74 68 65 72 20 70 69 78 65 6C 73      whether pixels
01B970:  20 6F 6E 20 74 68 65 20 6C 69 6E 65 20 61 72 65     on the line are
01B980:  20 66 6F 72 65 67 72 6F 75 6E 64 20 6F 72 20 62     foreground or b
01B990:  61 63 6B 67 72 6F 75 6E 64 2E 20 49 66 20 74 68    ackground. If th
01B9A0:  65 20 62 69 74 20 6F 66 0D 0A 20 20 20 20 20 20    e bit of..      
01B9B0:  20 74 68 65 20 6D 61 73 6B 20 63 6F 72 72 65 73     the mask corres
01B9C0:  70 6F 6E 64 69 6E 67 20 74 6F 20 61 20 70 69 78    ponding to a pix
01B9D0:  65 6C 20 69 73 20 6F 6E 65 20 74 68 65 6E 20 74    el is one then t
01B9E0:  68 65 20 70 69 78 65 6C 20 69 73 20 66 6F 72 65    he pixel is fore
01B9F0:  67 72 6F 75 6E 64 2E 0D 0A 20 20 20 20 20 20 20    ground...       
01BA00:  49 66 20 74 68 65 20 62 69 74 20 69 73 20 7A 65    If the bit is ze
01BA10:  72 6F 20 74 68 65 6E 20 74 68 65 20 70 69 78 65    ro then the pixe
01BA20:  6C 20 69 73 20 20 62 61 63 6B 67 72 6F 75 6E 64    l is  background
01BA30:  2E 20 20 54 68 65 20 20 6D 61 73 6B 20 20 69 73    .  The  mask  is
01BA40:  20 20 75 73 65 64 0D 0A 20 20 20 20 20 20 20 72      used..       r
01BA50:  65 70 65 61 74 65 64 6C 79 20 61 6C 6F 6E 67 20    epeatedly along 
01BA60:  74 68 65 20 6C 65 6E 67 74 68 20 6F 66 20 74 68    the length of th
01BA70:  65 20 20 6C 69 6E 65 2E 20 20 69 2E 65 2E 20 20    e  line.  i.e.  
01BA80:  42 69 74 20 20 37 20 20 6F 66 20 20 74 68 65 20    Bit  7  of  the 
01BA90:  20 6D 61 73 6B 0D 0A 20 20 20 20 20 20 20 63 6F     mask..       co
01BAA0:  72 72 65 73 70 6F 6E 64 73 20 74 6F 20 70 69 78    rresponds to pix
01BAB0:  65 6C 73 20 31 2C 20 39 2C 20 31 37 2C 20 2E 2E    els 1, 9, 17, ..
01BAC0:  2E 20 6F 66 20 74 68 65 20 6C 69 6E 65 2C 20 62    . of the line, b
01BAD0:  69 74 20 36 20 20 74 6F 20 20 70 69 78 65 6C 73    it 6  to  pixels
01BAE0:  20 20 32 2C 0D 0A 20 20 20 20 20 20 20 31 30 2C      2,..       10,
01BAF0:  20 31 38 2C 20 2E 2E 2E 20 65 74 63 2E 0D 0A 0D     18, ... etc....
01BB00:  0A 0D 0A 20 20 20 20 20 20 20 46 6F 72 65 67 72    ...       Foregr
01BB10:  6F 75 6E 64 20 70 69 78 65 6C 73 20 6F 66 20 61    ound pixels of a
01BB20:  20 6C 69 6E 65 20 61 72 65 20 70 6C 6F 74 74 65     line are plotte
01BB30:  64 20 69 6E 20 74 68 65 20 67 72 61 70 68 69 63    d in the graphic
01BB40:  73 20 20 70 65 6E 20 20 61 6E 64 20 20 69 6E 6B    s  pen  and  ink
01BB50:  0D 0A 20 20 20 20 20 20 20 75 73 69 6E 67 20 74    ..       using t
01BB60:  68 65 20 67 72 61 70 68 69 63 73 20 77 72 69 74    he graphics writ
01BB70:  65 20 20 6D 6F 64 65 2E 20 20 48 6F 77 20 20 62    e  mode.  How  b
01BB80:  61 63 6B 67 72 6F 75 6E 64 20 20 70 69 78 65 6C    ackground  pixel
01BB90:  73 20 20 61 72 65 20 20 70 6C 6F 74 74 65 64 0D    s  are  plotted.
01BBA0:  0A 20 20 20 20 20 20 20 64 65 70 65 6E 64 73 20    .       depends 
01BBB0:  75 70 6F 6E 20 74 68 65 20 62 61 63 6B 67 72 6F    upon the backgro
01BBC0:  75 6E 64 20 77 72 69 74 65 20 6D 6F 64 65 2E 20    und write mode. 
01BBD0:  20 49 66 20 20 74 68 65 20 20 62 61 63 6B 67 72     If  the  backgr
01BBE0:  6F 75 6E 64 20 20 6D 6F 64 65 20 20 69 73 0D 0A    ound  mode  is..
01BBF0:  20 20 20 20 20 20 20 6F 70 61 71 75 65 20 74 68           opaque th
01BC00:  65 6E 20 74 68 65 20 62 61 63 6B 67 72 6F 75 6E    en the backgroun
01BC10:  64 20 70 69 78 65 6C 73 20 61 72 65 20 70 6C 6F    d pixels are plo
01BC20:  74 74 65 64 20 69 6E 20 20 74 68 65 20 20 67 72    tted in  the  gr
01BC30:  61 70 68 69 63 73 20 20 70 61 70 65 72 0D 0A 20    aphics  paper.. 
01BC40:  20 20 20 20 20 20 69 6E 6B 20 20 75 73 69 6E 67          ink  using
01BC50:  20 20 74 68 65 20 20 67 72 61 70 68 69 63 73 20      the  graphics 
01BC60:  20 77 72 69 74 65 20 20 6D 6F 64 65 2E 20 20 49     write  mode.  I
01BC70:  66 20 20 74 68 65 20 20 62 61 63 6B 67 72 6F 75    f  the  backgrou
01BC80:  6E 64 20 20 6D 6F 64 65 20 20 69 73 0D 0A 20 20    nd  mode  is..  
01BC90:  20 20 20 20 20 74 72 61 6E 73 70 61 72 65 6E 74         transparent
01BCA0:  20 74 68 65 6E 20 74 68 65 20 70 69 78 65 6C 73     then the pixels
01BCB0:  20 20 61 72 65 20 20 6E 6F 74 20 20 70 6C 6F 74      are  not  plot
01BCC0:  74 65 64 20 20 61 74 20 20 61 6C 6C 2C 20 20 74    ted  at  all,  t
01BCD0:  68 65 20 20 63 75 72 72 65 6E 74 0D 0A 20 20 20    he  current..   
01BCE0:  20 20 20 20 73 65 74 74 69 6E 67 73 20 6F 66 20        settings of 
01BCF0:  74 68 65 20 70 69 78 65 6C 73 20 61 72 65 20 6C    the pixels are l
01BD00:  65 66 74 20 75 6E 63 68 61 6E 67 65 64 2E 0D 0A    eft unchanged...
01BD10:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 66    ....       The f
01BD20:  69 72 73 74 20 70 6F 69 6E 74 20 6D 6F 64 65 20    irst point mode 
01BD30:  20 73 70 65 63 69 66 69 65 73 20 20 77 68 65 74     specifies  whet
01BD40:  68 65 72 20 20 74 68 65 20 20 70 69 78 65 6C 20    her  the  pixel 
01BD50:  20 61 74 20 20 74 68 65 20 20 63 75 72 72 65 6E     at  the  curren
01BD60:  74 0D 0A 20 20 20 20 20 20 20 67 72 61 70 68 69    t..       graphi
01BD70:  63 73 20 70 6F 73 69 74 69 6F 6E 20 69 73 20 74    cs position is t
01BD80:  6F 20 62 65 20 69 6E 63 6C 75 64 65 20 69 6E 20    o be include in 
01BD90:  74 68 65 20 6C 69 6E 65 20 6F 72 20 20 6E 6F 74    the line or  not
01BDA0:  2E 20 20 4E 6F 74 20 20 70 6C 6F 74 74 69 6E 67    .  Not  plotting
01BDB0:  0D 0A 20 20 20 20 20 20 20 74 68 65 20 66 69 72    ..       the fir
01BDC0:  73 74 20 70 69 78 65 6C 20 6F 66 20 61 20 6C 69    st pixel of a li
01BDD0:  6E 65 20 69 73 20 70 61 72 74 69 63 75 6C 61 72    ne is particular
01BDE0:  6C 79 20 20 75 73 65 66 75 6C 20 20 66 6F 72 20    ly  useful  for 
01BDF0:  20 64 72 61 77 69 6E 67 20 20 6C 69 6E 65 73 0D     drawing  lines.
01BE00:  0A 20 20 20 20 20 20 20 77 68 65 6E 20 74 68 65    .       when the
01BE10:  20 67 72 61 70 68 69 63 73 20 77 72 69 74 65 20     graphics write 
01BE20:  6D 6F 64 65 20 69 73 20 58 4F 52 2E 20 46 6F 72    mode is XOR. For
01BE30:  20 69 6E 73 74 61 6E 63 65 2C 20 74 68 65 20 20     instance, the  
01BE40:  63 6F 72 6E 65 72 20 20 70 69 78 65 6C 73 0D 0A    corner  pixels..
01BE50:  20 20 20 20 20 20 20 6F 66 20 61 20 62 6F 78 20           of a box 
01BE60:  77 69 6C 6C 20 62 65 20 70 6C 6F 74 74 65 64 20    will be plotted 
01BE70:  74 77 69 63 65 20 20 69 66 20 20 74 68 65 20 20    twice  if  the  
01BE80:  66 69 72 73 74 20 20 70 69 78 65 6C 73 20 20 6F    first  pixels  o
01BE90:  66 20 20 6C 69 6E 65 73 20 20 61 72 65 0D 0A 20    f  lines  are.. 
01BEA0:  20 20 20 20 20 20 70 6C 6F 74 74 65 64 20 61 6E          plotted an
01BEB0:  64 20 74 68 69 73 20 77 69 6C 6C 20 72 65 73 75    d this will resu
01BEC0:  6C 74 20 69 6E 20 74 68 65 73 65 20 70 69 78 65    lt in these pixe
01BED0:  6C 73 20 20 6E 6F 74 20 20 62 65 69 6E 67 20 20    ls  not  being  
01BEE0:  73 65 74 20 20 69 6E 20 20 58 4F 52 0D 0A 20 20    set  in  XOR..  
01BEF0:  20 20 20 20 20 6D 6F 64 65 2E 0D 0A 0D 0A 20 20         mode.....  
01BF00:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
01BF10:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
01BF20:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
01BF30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01BF40:  20 20 20 70 61 67 65 20 35 2E 34 0D 0A 0D 0A 0D       page 5.4.....
01BF50:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
01BF60:  35 2E 38 20 46 69 6C 6C 69 6E 67 20 41 72 65 61    5.8 Filling Area
01BF70:  73 20 28 4F 6E 6C 79 20 61 70 70 6C 69 63 61 62    s (Only applicab
01BF80:  6C 65 20 74 6F 20 56 31 2E 31 20 66 69 72 6D 77    le to V1.1 firmw
01BF90:  61 72 65 29 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    are)........    
01BFA0:  20 20 20 54 68 65 20 47 72 61 70 68 69 63 73 20       The Graphics 
01BFB0:  56 44 55 20 70 72 6F 76 69 64 65 73 20 61 20 67    VDU provides a g
01BFC0:  65 6E 65 72 61 6C 69 73 65 64 20 61 72 65 61 20    eneralised area 
01BFD0:  66 69 6C 6C 20 20 72 6F 75 74 69 6E 65 2E 20 20    fill  routine.  
01BFE0:  54 68 65 20 20 75 73 65 72 0D 0A 20 20 20 20 20    The  user..     
01BFF0:  20 20 64 72 61 77 73 20 74 68 65 20 6F 75 74 6C      draws the outl
01C000:  69 6E 65 20 6F 66 20 74 68 65 20 61 72 65 61 20    ine of the area 
01C010:  74 6F 20 62 65 20 66 69 6C 6C 65 64 20 20 75 73    to be filled  us
01C020:  69 6E 67 20 20 74 68 65 20 20 73 74 61 6E 64 61    ing  the  standa
01C030:  72 64 20 20 6C 69 6E 65 0D 0A 20 20 20 20 20 20    rd  line..      
01C040:  20 64 72 61 77 69 6E 67 20 61 6E 64 20 20 70 69     drawing and  pi
01C050:  78 65 6C 20 20 70 6C 6F 74 74 69 6E 67 20 20 72    xel  plotting  r
01C060:  6F 75 74 69 6E 65 73 20 20 61 6E 64 20 20 74 68    outines  and  th
01C070:  65 6E 20 20 6D 6F 76 65 73 20 20 74 68 65 20 20    en  moves  the  
01C080:  63 75 72 72 65 6E 74 0D 0A 20 20 20 20 20 20 20    current..       
01C090:  70 6F 73 69 74 69 6F 6E 20 74 6F 20 61 6E 79 20    position to any 
01C0A0:  70 69 78 65 6C 20 69 6E 73 69 64 65 20 74 68 65    pixel inside the
01C0B0:  20 61 72 65 61 20 61 6E 64 20 63 61 6C 6C 73 20     area and calls 
01C0C0:  74 68 65 20 66 69 6C 6C 20 72 6F 75 74 69 6E 65    the fill routine
01C0D0:  2C 20 20 47 52 41 0D 0A 20 20 20 20 20 20 20 46    ,  GRA..       F
01C0E0:  49 4C 4C 2E 20 54 68 69 73 20 77 69 6C 6C 20 73    ILL. This will s
01C0F0:  65 74 20 61 6C 6C 20 20 70 69 78 65 6C 73 20 20    et all  pixels  
01C100:  69 6E 73 69 64 65 20 20 74 68 65 20 20 61 72 65    inside  the  are
01C110:  61 20 20 74 6F 20 20 74 68 65 20 20 66 69 6C 6C    a  to  the  fill
01C120:  20 20 69 6E 6B 0D 0A 20 20 20 20 20 20 20 69 72      ink..       ir
01C130:  72 65 73 70 65 63 74 69 76 65 20 6F 66 20 77 68    respective of wh
01C140:  61 74 20 74 68 65 20 63 75 72 72 65 6E 74 20 67    at the current g
01C150:  72 61 70 68 69 63 73 20 77 72 69 74 65 20 6D 6F    raphics write mo
01C160:  64 65 20 69 73 20 73 65 74 20 74 6F 2E 20 20 28    de is set to.  (
01C170:  69 2E 65 2E 0D 0A 20 20 20 20 20 20 20 47 52 41    i.e...       GRA
01C180:  20 46 49 4C 4C 20 61 6C 77 61 79 73 20 77 6F 72     FILL always wor
01C190:  6B 73 20 61 73 20 69 66 20 46 4F 52 43 45 20 6D    ks as if FORCE m
01C1A0:  6F 64 65 20 77 61 73 20 73 65 6C 65 63 74 65 64    ode was selected
01C1B0:  29 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ).........      
01C1C0:  20 54 68 65 20 66 69 6C 6C 20 72 6F 75 74 69 6E     The fill routin
01C1D0:  65 20 72 65 63 6F 67 6E 69 73 65 73 20 70 69 78    e recognises pix
01C1E0:  65 6C 73 20 6D 61 6B 69 6E 67 20 75 70 20 74 68    els making up th
01C1F0:  65 20 65 64 67 65 20 6F 66 20 74 68 65 20 20 61    e edge of the  a
01C200:  72 65 61 20 20 62 79 0D 0A 20 20 20 20 20 20 20    rea  by..       
01C210:  74 68 65 20 69 6E 6B 20 74 68 61 74 20 74 68 65    the ink that the
01C220:  79 20 61 72 65 20 73 65 74 20 74 6F 2E 20 41 6C    y are set to. Al
01C230:  6C 20 70 69 78 65 6C 73 20 73 65 74 20 20 74 6F    l pixels set  to
01C240:  20 20 65 69 74 68 65 72 20 20 74 68 65 20 20 63      either  the  c
01C250:  75 72 72 65 6E 74 0D 0A 20 20 20 20 20 20 20 67    urrent..       g
01C260:  72 61 70 68 69 63 73 20 70 65 6E 20 69 6E 6B 20    raphics pen ink 
01C270:  6F 72 20 74 68 65 20 69 6E 6B 20 74 68 61 74 20    or the ink that 
01C280:  69 73 20 62 65 69 6E 67 20 75 73 65 64 20 74 6F    is being used to
01C290:  20 66 69 6C 6C 20 74 68 65 20 20 61 72 65 61 20     fill the  area 
01C2A0:  20 77 69 74 68 0D 0A 20 20 20 20 20 20 20 61 72     with..       ar
01C2B0:  65 20 74 72 65 61 74 65 64 20 61 73 20 65 64 67    e treated as edg
01C2C0:  65 20 70 69 78 65 6C 73 2E 20 28 54 68 65 73 65    e pixels. (These
01C2D0:  20 74 77 6F 20 69 6E 6B 73 20 6D 61 79 20 20 62     two inks may  b
01C2E0:  65 20 20 74 68 65 20 20 73 61 6D 65 29 2E 20 20    e  the  same).  
01C2F0:  45 64 67 65 0D 0A 20 20 20 20 20 20 20 70 69 78    Edge..       pix
01C300:  65 6C 73 20 6E 65 65 64 20 6F 6E 6C 79 20 6C 69    els need only li
01C310:  65 20 64 69 61 67 6F 6E 61 6C 6C 79 20 61 64 6A    e diagonally adj
01C320:  61 63 65 6E 74 20 74 6F 20 20 65 61 63 68 20 20    acent to  each  
01C330:  6F 74 68 65 72 2C 20 20 69 74 20 20 69 73 20 20    other,  it  is  
01C340:  6E 6F 74 0D 0A 20 20 20 20 20 20 20 6E 65 63 65    not..       nece
01C350:  73 73 61 72 79 20 66 6F 72 20 74 68 65 6D 20 74    ssary for them t
01C360:  6F 20 62 65 20 6F 72 74 68 6F 67 6F 6E 61 6C 6C    o be orthogonall
01C370:  79 20 61 64 6A 61 63 65 6E 74 2E 20 4F 66 20 63    y adjacent. Of c
01C380:  6F 75 72 73 65 2C 20 74 68 65 20 65 64 67 65 20    ourse, the edge 
01C390:  6F 66 0D 0A 20 20 20 20 20 20 20 74 68 65 20 67    of..       the g
01C3A0:  72 61 70 68 69 63 73 20 77 69 6E 64 6F 77 20 61    raphics window a
01C3B0:  72 65 20 61 6C 73 6F 20 74 72 65 61 74 65 64 20    re also treated 
01C3C0:  61 73 20 65 64 67 65 73 20 6F 66 20 74 68 65 20    as edges of the 
01C3D0:  61 72 65 61 20 74 6F 20 66 69 6C 6C 20 20 61 6E    area to fill  an
01C3E0:  64 0D 0A 20 20 20 20 20 20 20 73 6F 20 70 69 78    d..       so pix
01C3F0:  65 6C 73 20 6F 75 74 73 69 64 65 20 74 68 65 20    els outside the 
01C400:  67 72 61 70 68 69 63 73 20 77 69 6E 64 6F 77 20    graphics window 
01C410:  77 69 6C 6C 20 62 65 20 61 66 66 65 63 74 65 64    will be affected
01C420:  2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
01C430:  47 52 41 20 20 46 49 4C 4C 20 20 75 73 65 73 20    GRA  FILL  uses 
01C440:  20 61 20 20 62 75 66 66 65 72 20 20 73 75 70 70     a  buffer  supp
01C450:  6C 69 65 64 20 20 62 79 20 20 74 68 65 20 20 75    lied  by  the  u
01C460:  73 65 72 20 20 66 6F 72 20 20 73 74 6F 72 69 6E    ser  for  storin
01C470:  67 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 69    g  the..       i
01C480:  6E 66 6F 72 6D 61 74 69 6F 6E 2E 20 54 68 65 20    nformation. The 
01C490:  6D 6F 72 65 20 63 6F 6D 70 6C 69 63 61 74 65 64    more complicated
01C4A0:  20 74 68 65 20 61 72 65 61 20 74 68 65 20 6C 6F     the area the lo
01C4B0:  6E 67 65 72 20 74 68 65 20 62 75 66 66 65 72 20    nger the buffer 
01C4C0:  20 77 69 6C 6C 0D 0A 20 20 20 20 20 20 20 6E 65     will..       ne
01C4D0:  65 64 20 62 65 2E 20 49 66 20 74 68 65 20 73 75    ed be. If the su
01C4E0:  70 70 6C 69 65 64 20 62 75 66 66 65 72 20 69 73    pplied buffer is
01C4F0:  20 74 6F 6F 20 73 68 6F 72 74 20 74 68 65 6E 20     too short then 
01C500:  70 61 72 74 73 20 20 6F 66 20 20 74 68 65 20 20    parts  of  the  
01C510:  61 72 65 61 0D 0A 20 20 20 20 20 20 20 77 69 6C    area..       wil
01C520:  6C 20 62 65 20 69 67 6E 6F 72 65 64 20 61 6E 64    l be ignored and
01C530:  20 77 69 6C 6C 20 6E 6F 74 20 62 65 20 66 69 6C     will not be fil
01C540:  6C 65 64 2E 20 42 79 20 20 73 75 70 70 6C 79 69    led. By  supplyi
01C550:  6E 67 20 20 61 20 20 6C 6F 6E 67 20 20 65 6E 6F    ng  a  long  eno
01C560:  75 67 68 0D 0A 20 20 20 20 20 20 20 62 75 66 66    ugh..       buff
01C570:  65 72 20 61 6E 79 20 61 72 62 69 74 72 61 72 79    er any arbitrary
01C580:  20 63 6F 6D 70 6C 69 63 61 74 65 64 20 73 68 61     complicated sha
01C590:  70 65 20 6D 61 79 20 62 65 20 66 69 6C 6C 65 64    pe may be filled
01C5A0:  2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
01C5B0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
01C5C0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
01C5D0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
01C5E0:  20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43 34        AMSTRAD CPC4
01C5F0:  36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D    64/664/6128 FIRM
01C600:  57 41 52 45 20 20 20 20 20 20 20 20 20 20 20 20    WARE            
01C610:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01C620:  20 20 70 61 67 65 20 35 2E 35 0D 0A 1A 65 20 47      page 5.5...e G
01C630:  72 61 70 68 69 63 73 20 56 44 55 20 61 6C 6C 6F    raphics VDU allo
01C640:  77 73 20 69 6E 64 69 76 69 64 75 61 6C 20 70 69    ws individual pi
01C650:  78 65 6C 73 20 28 64 6F 74 73 29 20 74 6F 20 62    xels (dots) to b
01C660:  65 20 73 65 74 20 20 6F 72 20 20 74 65 73 74 65    e set  or  teste
01C670:  64 0D 0A 20 20 20 20 20 20 20 61 6E 64 20 6C 69    d..       and li
01C680:  6E 66 6F 72 6D 61 74 69 6F 6E 2E 20 54 68 65 20    nformation. The 
01C690:  6D 6F 72 65 20 63 6F 6D 70 6C 69 63 61 74 65 64    more complicated
01C6A0:  20 74 68 65 20 61 72 65 61 20 74 68 65 20 6C 6F     the area the lo
01C6B0:  6E 67 65 72 20 74 68 65 20 62 75 66 66 65 72 20    nger the buffer 
01C6C0:  20 77 69 6C 6C 0D 0A 20 20 20 20 20 20 20 6E 65     will..       ne
01C6D0:  65 64 20 62 65 2E 20 49 66 20 74 68 65 20 73 75    ed be. If the su
01C6E0:  70 70 6C 69 65 64 20 62 75 66 66 65 72 20 69 73    pplied buffer is
01C6F0:  20 74 6F 6F 20 73 68 6F 72 74 20 74 68 65 6E 20     too short then 
01C700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01C900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
01C910:  18 00 00 00 02 09 50 E5 18 00 C1 02 00 00 00 02    ......P.........
01C920:  18 00 C2 02 00 00 00 02 18 00 C3 02 00 00 00 02    ................
01C930:  18 00 C4 02 00 00 00 02 18 00 C5 02 00 00 00 02    ................
01C940:  18 00 C6 02 00 00 00 02 18 00 C7 02 00 00 00 02    ................
01C950:  18 00 C8 02 00 00 00 02 18 00 C9 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:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 36    ........       6
01CA10:  20 54 68 65 20 53 63 72 65 65 6E 20 50 61 63 6B     The Screen Pack
01CA20:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
01CA30:  53 63 72 65 65 6E 20 50 61 63 6B 20 69 73 20 75    Screen Pack is u
01CA40:  73 65 64 20 62 79 20 74 68 65 20 54 65 78 74 20    sed by the Text 
01CA50:  61 6E 64 20 47 72 61 70 68 69 63 73 20 56 44 55    and Graphics VDU
01CA60:  73 20 20 74 6F 20 20 61 63 63 65 73 73 20 20 74    s  to  access  t
01CA70:  68 65 0D 0A 20 20 20 20 20 20 20 68 61 72 64 77    he..       hardw
01CA80:  61 72 65 20 6F 66 20 74 68 65 20 73 63 72 65 65    are of the scree
01CA90:  6E 2E 20 49 74 20 61 6C 73 6F 20 63 6F 6E 74 72    n. It also contr
01CAA0:  6F 6C 73 20 74 68 65 20 66 65 61 74 75 72 65 73    ols the features
01CAB0:  20 20 6F 66 20 20 74 68 65 20 20 73 63 72 65 65      of  the  scree
01CAC0:  6E 0D 0A 20 20 20 20 20 20 20 74 68 61 74 20 61    n..       that a
01CAD0:  66 66 65 63 74 20 62 6F 74 68 20 74 68 65 20 54    ffect both the T
01CAE0:  65 78 74 20 56 44 55 20 61 6E 64 20 47 72 61 70    ext VDU and Grap
01CAF0:  68 69 63 73 20 56 44 55 2C 20 73 75 63 68 20 61    hics VDU, such a
01CB00:  73 20 77 68 61 74 20 6D 6F 64 65 20 20 74 68 65    s what mode  the
01CB10:  0D 0A 20 20 20 20 20 20 20 73 63 72 65 65 6E 20    ..       screen 
01CB20:  69 73 20 69 6E 2E 0D 0A 0D 0A 20 20 20 20 20 20    is in.....      
01CB30:  20 36 2E 31 20 53 63 72 65 65 6E 20 4D 6F 64 65     6.1 Screen Mode
01CB40:  73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    s.......       T
01CB50:  68 65 20 73 63 72 65 65 6E 20 68 61 73 20 74 68    he screen has th
01CB60:  72 65 65 20 6D 6F 64 65 73 20 6F 66 20 6F 70 65    ree modes of ope
01CB70:  72 61 74 69 6F 6E 2C 20 6E 75 6D 62 65 72 65 64    ration, numbered
01CB80:  20 20 30 2C 20 20 31 20 20 61 6E 64 20 20 32 2E      0,  1  and  2.
01CB90:  20 20 54 68 65 0D 0A 20 20 20 20 20 20 20 6D 6F      The..       mo
01CBA0:  64 65 73 20 68 61 76 65 20 64 69 66 66 65 72 65    des have differe
01CBB0:  6E 74 20 72 65 73 6F 6C 75 74 69 6F 6E 73 20 61    nt resolutions a
01CBC0:  6E 64 20 64 69 73 70 6C 61 79 20 64 69 66 66 65    nd display diffe
01CBD0:  72 65 6E 74 20 6E 75 6D 62 65 72 73 20 6F 66 20    rent numbers of 
01CBE0:  69 6E 6B 73 0D 0A 20 20 20 20 20 20 20 6F 6E 20    inks..       on 
01CBF0:  74 68 65 20 73 63 72 65 65 6E 2E 0D 0A 0D 0A 0D    the screen......
01CC00:  0A 20 20 20 20 20 20 20 41 6C 6C 20 6D 6F 64 65    .       All mode
01CC10:  73 20 68 61 76 65 20 61 20 76 65 72 74 69 63 61    s have a vertica
01CC20:  6C 20 72 65 73 6F 6C 75 74 69 6F 6E 20 6F 66 20    l resolution of 
01CC30:  32 30 30 20 70 69 78 65 6C 73 20 20 28 70 69 63    200 pixels  (pic
01CC40:  74 75 72 65 20 20 65 6C 65 6D 65 6E 74 73 0D 0A    ture  elements..
01CC50:  20 20 20 20 20 20 20 6F 72 20 64 6F 74 73 20 6F           or dots o
01CC60:  6E 20 74 68 65 20 73 63 72 65 65 6E 29 2E 20 54    n the screen). T
01CC70:  68 65 20 20 68 6F 72 69 7A 6F 6E 74 61 6C 20 20    he  horizontal  
01CC80:  72 65 73 6F 6C 75 74 69 6F 6E 20 20 76 61 72 69    resolution  vari
01CC90:  65 73 20 20 66 72 6F 6D 20 20 31 36 30 0D 0A 20    es  from  160.. 
01CCA0:  20 20 20 20 20 20 70 69 78 65 6C 73 20 74 6F 20          pixels to 
01CCB0:  36 34 30 20 70 69 78 65 6C 73 2E 20 41 73 20 65    640 pixels. As e
01CCC0:  61 63 68 20 63 68 61 72 61 63 74 65 72 20 69 73    ach character is
01CCD0:  20 38 20 70 69 78 65 6C 73 20 62 79 20 20 38 20     8 pixels by  8 
01CCE0:  20 70 69 78 65 6C 73 20 20 74 68 65 0D 0A 20 20     pixels  the..  
01CCF0:  20 20 20 20 20 6E 75 6D 62 65 72 20 6F 66 20 63         number of c
01CD00:  68 61 72 61 63 74 65 72 73 20 61 63 72 6F 73 73    haracters across
01CD10:  20 74 68 65 20 73 63 72 65 65 6E 20 76 61 72 69     the screen vari
01CD20:  65 73 20 77 69 74 68 20 74 68 65 20 6D 6F 64 65    es with the mode
01CD30:  20 2D 20 66 72 6F 6D 20 20 32 30 0D 0A 20 20 20     - from  20..   
01CD40:  20 20 20 20 63 68 61 72 61 63 74 65 72 73 20 74        characters t
01CD50:  6F 20 38 30 20 63 68 61 72 61 63 74 65 72 73 2E    o 80 characters.
01CD60:  20 54 68 65 20 73 63 72 65 65 6E 20 69 73 20 61     The screen is a
01CD70:  6C 77 61 79 73 20 32 35 20 63 68 61 72 61 63 74    lways 25 charact
01CD80:  65 72 73 20 68 69 67 68 2E 0D 0A 0D 0A 0D 0A 20    ers high....... 
01CD90:  20 20 20 20 20 20 54 68 65 20 6E 75 6D 62 65 72          The number
01CDA0:  20 6F 66 20 69 6E 6B 73 20 74 68 61 74 20 63 61     of inks that ca
01CDB0:  6E 20 62 65 20 64 69 73 70 6C 61 79 65 64 20 6F    n be displayed o
01CDC0:  6E 20 74 68 65 20 73 63 72 65 65 6E 20 76 61 72    n the screen var
01CDD0:  69 65 73 20 77 69 74 68 20 74 68 65 0D 0A 20 20    ies with the..  
01CDE0:  20 20 20 20 20 73 63 72 65 65 6E 20 72 65 73 6F         screen reso
01CDF0:  6C 75 74 69 6F 6E 2E 20 57 68 65 6E 20 74 68 65    lution. When the
01CE00:  20 73 63 72 65 65 6E 20 69 73 20 36 34 30 20 70     screen is 640 p
01CE10:  69 78 65 6C 73 20 77 69 64 65 20 6F 6E 6C 79 20    ixels wide only 
01CE20:  32 20 69 6E 6B 73 20 20 63 61 6E 0D 0A 20 20 20    2 inks  can..   
01CE30:  20 20 20 20 62 65 20 64 69 73 70 6C 61 79 65 64        be displayed
01CE40:  2C 20 77 68 65 6E 20 74 68 65 20 73 63 72 65 65    , when the scree
01CE50:  6E 20 20 69 73 20 20 33 32 30 20 20 70 69 78 65    n  is  320  pixe
01CE60:  6C 73 20 20 77 69 64 65 20 20 34 20 20 69 6E 6B    ls  wide  4  ink
01CE70:  73 20 20 63 61 6E 20 20 62 65 0D 0A 20 20 20 20    s  can  be..    
01CE80:  20 20 20 64 69 73 70 6C 61 79 65 64 20 61 6E 64       displayed and
01CE90:  20 77 68 65 6E 20 74 68 65 20 73 63 72 65 65 6E     when the screen
01CEA0:  20 69 73 20 20 31 36 30 20 20 70 69 78 65 6C 73     is  160  pixels
01CEB0:  20 20 77 69 64 65 20 20 31 36 20 20 69 6E 6B 73      wide  16  inks
01CEC0:  20 20 63 61 6E 20 20 62 65 0D 0A 20 20 20 20 20      can  be..     
01CED0:  20 20 64 69 73 70 6C 61 79 65 64 2E 0D 0A 0D 0A      displayed.....
01CEE0:  0D 0A 20 20 20 20 20 20 20 49 6E 20 73 75 6D 6D    ..       In summ
01CEF0:  61 72 79 2C 20 74 68 65 20 6D 6F 64 65 73 20 61    ary, the modes a
01CF00:  72 65 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    re:....         
01CF10:  20 20 20 20 20 4D 6F 64 65 20 20 20 20 20 20 20         Mode       
01CF20:  20 50 69 78 65 6C 20 73 69 7A 65 20 20 20 20 20     Pixel size     
01CF30:  20 20 20 20 20 43 68 61 72 61 63 74 65 72 20 73         Character s
01CF40:  69 7A 65 20 20 20 20 20 20 49 6E 6B 73 0D 0A 20    ize      Inks.. 
01CF50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30                   0
01CF60:  20 20 20 20 20 20 20 20 20 31 36 30 20 78 20 32             160 x 2
01CF70:  30 30 20 20 20 20 20 20 20 20 20 20 20 32 30 20    00           20 
01CF80:  78 20 32 35 20 20 20 20 20 20 20 20 20 20 20 20    x 25            
01CF90:  20 31 36 0D 0A 20 20 20 20 20 20 20 20 20 20 20     16..           
01CFA0:  20 20 20 20 20 31 20 20 20 20 20 20 20 20 20 33         1         3
01CFB0:  32 30 20 78 20 32 30 30 20 20 20 20 20 20 20 20    20 x 200        
01CFC0:  20 20 20 34 30 20 78 20 32 35 20 20 20 20 20 20       40 x 25      
01CFD0:  20 20 20 20 20 20 20 34 0D 0A 20 20 20 20 20 20           4..      
01CFE0:  20 20 20 20 20 20 20 20 20 20 32 20 20 20 20 20              2     
01CFF0:  20 20 20 20 36 34 30 20 78 20 32 30 30 20 20 20        640 x 200   
01D000:  20 20 20 20 20 20 20 20 38 30 20 78 20 32 35 20            80 x 25 
01D010:  20 20 20 20 20 20 20 20 20 20 20 20 32 0D 0A 0D                2...
01D020:  0A 20 20 20 20 20 20 20 54 68 65 20 64 65 66 61    .       The defa
01D030:  75 6C 74 20 73 63 72 65 65 6E 20 6D 6F 64 65 2C    ult screen mode,
01D040:  20 73 65 74 20 61 74 20 45 4D 53 2C 20 69 73 20     set at EMS, is 
01D050:  6D 6F 64 65 20 31 2E 0D 0A 0D 0A 0D 0A 20 20 20    mode 1.......   
01D060:  20 20 20 20 54 68 65 20 73 63 72 65 65 6E 20 6D        The screen m
01D070:  6F 64 65 20 69 73 20 73 65 74 20 62 79 20 63 61    ode is set by ca
01D080:  6C 6C 69 6E 67 20 53 43 52 20 53 45 54 20 4D 4F    lling SCR SET MO
01D090:  44 45 20 77 68 69 63 68 20 20 61 6C 73 6F 20 20    DE which  also  
01D0A0:  68 61 73 20 20 6F 74 68 65 72 0D 0A 20 20 20 20    has  other..    
01D0B0:  20 20 20 65 66 66 65 63 74 73 2E 0D 0A 0D 0A 20       effects..... 
01D0C0:  20 20 20 20 20 20 46 69 72 73 74 6C 79 2C 20 74          Firstly, t
01D0D0:  68 65 20 73 63 72 65 65 6E 20 69 73 20 63 6C 65    he screen is cle
01D0E0:  61 72 65 64 20 74 6F 20 69 6E 6B 20 30 2E 20 49    ared to ink 0. I
01D0F0:  66 20 74 65 78 74 20 20 61 6E 64 20 20 67 72 61    f text  and  gra
01D100:  70 68 69 63 73 20 20 70 61 70 65 72 0D 0A 20 20    phics  paper..  
01D110:  20 20 20 20 20 69 6E 6B 73 20 61 72 65 20 6E 6F         inks are no
01D120:  74 20 73 65 74 20 74 6F 20 69 6E 6B 20 30 20 74    t set to ink 0 t
01D130:  68 65 6E 20 74 68 69 73 20 77 69 6C 6C 20 62 65    hen this will be
01D140:  63 6F 6D 65 20 61 70 70 61 72 65 6E 74 20 6F 6E    come apparent on
01D150:  20 74 68 65 20 73 63 72 65 65 6E 0D 0A 20 20 20     the screen..   
01D160:  20 20 20 20 77 68 65 6E 20 63 68 61 72 61 63 74        when charact
01D170:  65 72 73 20 61 72 65 20 77 72 69 74 74 65 6E 20    ers are written 
01D180:  6F 72 20 77 69 6E 64 6F 77 73 20 61 72 65 20 63    or windows are c
01D190:  6C 65 61 72 65 64 2E 20 49 66 20 74 68 65 20 75    leared. If the u
01D1A0:  73 65 72 20 77 69 73 68 65 73 0D 0A 20 20 20 20    ser wishes..    
01D1B0:  20 20 20 74 6F 20 61 6C 74 65 72 20 74 68 69 73       to alter this
01D1C0:  20 73 63 72 65 65 6E 20 63 6C 65 61 72 69 6E 67     screen clearing
01D1D0:  20 6F 70 65 72 61 74 69 6F 6E 20 66 6F 72 20 73     operation for s
01D1E0:  6F 6D 65 20 72 65 61 73 6F 6E 20 74 68 65 6E 20    ome reason then 
01D1F0:  69 74 20 6D 61 79 20 62 65 0D 0A 20 20 20 20 20    it may be..     
01D200:  20 20 69 6E 74 65 72 63 65 70 74 65 64 20 61 74      intercepted at
01D210:  20 74 68 65 20 53 43 52 20 4D 4F 44 45 20 43 4C     the SCR MODE CL
01D220:  45 41 52 20 69 6E 64 69 72 65 63 74 69 6F 6E 2E    EAR indirection.
01D230:  0D 0A 0D 0A 20 20 20 20 20 20 20 53 65 63 6F 6E    ....       Secon
01D240:  64 6C 79 2C 20 74 68 65 20 54 65 78 74 20 61 6E    dly, the Text an
01D250:  64 20 47 72 61 70 68 69 63 73 20 56 44 55 73 20    d Graphics VDUs 
01D260:  61 72 65 20 73 65 74 20 69 6E 74 6F 20 73 74 61    are set into sta
01D270:  6E 64 61 72 64 20 73 74 61 74 65 73 2E 20 54 68    ndard states. Th
01D280:  65 0D 0A 20 20 20 20 20 20 20 77 69 6E 64 6F 77    e..       window
01D290:  73 20 61 72 65 20 61 6C 6C 20 73 65 74 20 74 6F    s are all set to
01D2A0:  20 63 6F 76 65 72 20 74 68 65 20 77 68 6F 6C 65     cover the whole
01D2B0:  20 73 63 72 65 65 6E 2E 20 49 66 20 74 68 65 20     screen. If the 
01D2C0:  20 70 65 6E 20 20 61 6E 64 20 20 70 61 70 65 72     pen  and  paper
01D2D0:  0D 0A 20 20 20 20 20 20 20 69 6E 6B 73 20 61 72    ..       inks ar
01D2E0:  65 20 6F 75 74 20 6F 66 20 72 61 6E 67 65 20 66    e out of range f
01D2F0:  6F 72 20 74 68 65 20 6E 65 77 20 6D 6F 64 65 20    or the new mode 
01D300:  74 68 65 6E 20 74 68 65 79 20 61 72 65 20 6D 61    then they are ma
01D310:  73 6B 65 64 20 28 77 69 74 68 20 20 23 30 31 0D    sked (with  #01.
01D320:  0A 20 20 20 20 20 20 20 6F 72 20 23 30 33 29 20    .       or #03) 
01D330:  74 6F 20 62 72 69 6E 67 20 74 68 65 6D 20 69 6E    to bring them in
01D340:  74 6F 20 72 61 6E 67 65 2E 20 54 68 65 20 63 75    to range. The cu
01D350:  72 72 65 6E 74 20 74 65 78 74 20 70 6F 73 69 74    rrent text posit
01D360:  69 6F 6E 73 20 61 72 65 20 6D 6F 76 65 64 0D 0A    ions are moved..
01D370:  20 20 20 20 20 20 20 74 6F 20 74 68 65 20 74 6F           to the to
01D380:  70 20 6C 65 66 74 20 63 6F 72 6E 65 72 20 6F 66    p left corner of
01D390:  20 74 68 65 20 73 63 72 65 65 6E 20 61 6E 64 20     the screen and 
01D3A0:  74 68 65 20 74 65 78 74 20 63 75 72 73 6F 72 73    the text cursors
01D3B0:  20 20 61 72 65 20 20 74 75 72 6E 65 64 0D 0A 20      are  turned.. 
01D3C0:  20 20 20 20 20 20 6F 66 66 20 28 73 65 65 20 54          off (see T
01D3D0:  58 54 20 43 55 52 20 4F 46 46 29 2E 20 54 68 65    XT CUR OFF). The
01D3E0:  20 63 75 72 72 65 6E 74 20 20 67 72 61 70 68 69     current  graphi
01D3F0:  63 73 20 20 70 6F 73 69 74 69 6F 6E 20 20 61 6E    cs  position  an
01D400:  64 20 20 74 68 65 20 20 75 73 65 72 0D 0A 20 20    d  the  user..  
01D410:  20 20 20 20 20 6F 72 69 67 69 6E 20 61 72 65 20         origin are 
01D420:  6D 6F 76 65 64 20 74 6F 20 74 68 65 20 62 6F 74    moved to the bot
01D430:  74 6F 6D 20 6C 65 66 74 20 63 6F 72 6E 65 72 20    tom left corner 
01D440:  6F 66 20 74 68 65 20 73 63 72 65 65 6E 2E 0D 0A    of the screen...
01D450:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52    ....       AMSTR
01D460:  41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31    AD CPC464/664/61
01D470:  32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20    28 FIRMWARE     
01D480:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01D490:  20 20 20 20 20 20 20 20 20 70 61 67 65 20 36 2E             page 6.
01D4A0:  31 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    1.............. 
01D4B0:  20 20 20 20 20 20 36 2E 32 20 49 6E 6B 73 20 61          6.2 Inks a
01D4C0:  6E 64 20 43 6F 6C 6F 75 72 73 2E 0D 0A 0D 0A 20    nd Colours..... 
01D4D0:  20 20 20 20 20 20 54 68 65 20 76 61 72 69 6F 75          The variou
01D4E0:  73 20 73 63 72 65 65 6E 20 6D 6F 64 65 73 20 61    s screen modes a
01D4F0:  6C 6C 6F 77 20 70 69 78 65 6C 73 20 28 64 6F 74    llow pixels (dot
01D500:  73 20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E 29    s on the screen)
01D510:  20 74 6F 20 20 62 65 20 20 73 65 74 0D 0A 20 20     to  be  set..  
01D520:  20 20 20 20 20 74 6F 20 64 69 66 66 65 72 65 6E         to differen
01D530:  74 20 6E 75 6D 62 65 72 73 20 6F 66 20 69 6E 6B    t numbers of ink
01D540:  73 20 61 73 20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D    s as follows:...
01D550:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
01D560:  20 4D 6F 64 65 20 30 3A 20 20 20 20 20 20 20 20     Mode 0:        
01D570:  20 20 20 20 20 31 36 20 69 6E 6B 73 2C 20 30 2E         16 inks, 0.
01D580:  2E 31 35 0D 0A 20 20 20 20 20 20 20 20 20 20 20    .15..           
01D590:  20 20 20 20 20 4D 6F 64 65 20 31 3A 20 20 20 20         Mode 1:    
01D5A0:  20 20 20 20 20 20 20 20 20 20 34 20 69 6E 6B 73              4 inks
01D5B0:  2C 20 30 2E 2E 33 0D 0A 20 20 20 20 20 20 20 20    , 0..3..        
01D5C0:  20 20 20 20 20 20 20 20 4D 6F 64 65 20 32 3A 20            Mode 2: 
01D5D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 32 20 69                 2 i
01D5E0:  6E 6B 73 2C 20 30 2E 2E 31 0D 0A 0D 0A 20 20 20    nks, 0..1....   
01D5F0:  20 20 20 20 48 6F 77 20 74 68 65 20 69 6E 6B 20        How the ink 
01D600:  66 6F 72 20 61 20 70 69 78 65 6C 20 69 73 20 65    for a pixel is e
01D610:  6E 63 6F 64 65 64 20 69 6E 74 6F 20 61 20 62 79    ncoded into a by
01D620:  74 65 20 20 6F 66 20 20 73 63 72 65 65 6E 20 20    te  of  screen  
01D630:  6D 65 6D 6F 72 79 20 20 69 73 0D 0A 20 20 20 20    memory  is..    
01D640:  20 20 20 64 65 73 63 72 69 62 65 64 20 69 6E 20       described in 
01D650:  73 65 63 74 69 6F 6E 20 36 2E 34 2E 20 54 68 65    section 6.4. The
01D660:  20 69 6E 6B 20 74 68 61 74 20 61 20 70 69 78 65     ink that a pixe
01D670:  6C 20 69 73 20 20 73 65 74 20 20 74 6F 20 20 64    l is  set  to  d
01D680:  65 74 65 72 6D 69 6E 65 73 0D 0A 20 20 20 20 20    etermines..     
01D690:  20 20 77 68 61 74 20 63 6F 6C 6F 75 72 20 74 68      what colour th
01D6A0:  65 20 70 69 78 65 6C 20 69 73 20 64 69 73 70 6C    e pixel is displ
01D6B0:  61 79 65 64 20 69 6E 2E 20 48 6F 77 65 76 65 72    ayed in. However
01D6C0:  2C 20 74 68 65 20 63 6F 6C 6F 75 72 20 20 61 73    , the colour  as
01D6D0:  73 6F 63 69 61 74 65 64 0D 0A 20 20 20 20 20 20    sociated..      
01D6E0:  20 77 69 74 68 20 61 6E 20 69 6E 6B 20 69 73 20     with an ink is 
01D6F0:  6E 6F 74 20 66 69 78 65 64 2C 20 69 74 20 63 61    not fixed, it ca
01D700:  6E 20 62 65 20 63 68 61 6E 67 65 64 2E 0D 0A 0D    n be changed....
01D710:  0A 20 20 20 20 20 20 20 54 68 65 72 65 20 61 72    .       There ar
01D720:  65 20 32 37 20 63 6F 6C 6F 75 72 73 20 61 76 61    e 27 colours ava
01D730:  69 6C 61 62 6C 65 2E 20 45 61 63 68 20 69 6E 6B    ilable. Each ink
01D740:  20 6D 61 79 20 62 65 20 73 65 74 20 74 6F 20 20     may be set to  
01D750:  61 6E 79 20 20 6F 66 20 20 74 68 65 73 65 0D 0A    any  of  these..
01D760:  20 20 20 20 20 20 20 63 6F 6C 6F 75 72 73 2E 20           colours. 
01D770:  54 68 65 20 62 6F 72 64 65 72 20 74 6F 20 74 68    The border to th
01D780:  65 20 73 63 72 65 65 6E 20 61 63 74 73 20 6D 75    e screen acts mu
01D790:  63 68 20 6C 69 6B 65 20 61 6E 20 69 6E 6B 20 61    ch like an ink a
01D7A0:  6E 64 20 20 63 61 6E 20 20 68 61 76 65 0D 0A 20    nd  can  have.. 
01D7B0:  20 20 20 20 20 20 69 74 73 20 63 6F 6C 6F 75 72          its colour
01D7C0:  20 73 70 65 63 69 66 69 65 64 20 61 73 20 77 65     specified as we
01D7D0:  6C 6C 2E 20 54 68 65 20 64 69 73 70 6C 61 79 20    ll. The display 
01D7E0:  20 68 61 72 64 77 61 72 65 20 20 66 65 74 63 68     hardware  fetch
01D7F0:  65 73 20 20 74 68 65 20 20 69 6E 6B 0D 0A 20 20    es  the  ink..  
01D800:  20 20 20 20 20 76 61 6C 75 65 20 66 72 6F 6D 20         value from 
01D810:  74 68 65 20 73 63 72 65 65 6E 20 6D 65 6D 6F 72    the screen memor
01D820:  79 20 66 6F 72 20 65 61 63 68 20 70 69 78 65 6C    y for each pixel
01D830:  20 61 73 20 69 74 20 69 73 20 20 64 69 73 70 6C     as it is  displ
01D840:  61 79 65 64 2E 20 20 54 68 69 73 0D 0A 20 20 20    ayed.  This..   
01D850:  20 20 20 20 69 6E 6B 20 76 61 6C 75 65 20 69 73        ink value is
01D860:  20 75 73 65 64 20 74 6F 20 61 63 63 65 73 73 20     used to access 
01D870:  61 20 73 6D 61 6C 6C 20 61 72 65 61 20 6F 66 20    a small area of 
01D880:  52 41 4D 20 69 6E 73 69 64 65 20 74 68 65 20 67    RAM inside the g
01D890:  61 74 65 20 20 61 72 72 61 79 0D 0A 20 20 20 20    ate  array..    
01D8A0:  20 20 20 63 61 6C 6C 65 64 20 74 68 65 20 27 70       called the 'p
01D8B0:  61 6C 65 74 74 65 27 2E 20 54 68 65 20 70 61 6C    alette'. The pal
01D8C0:  65 74 74 65 20 63 6F 6E 74 61 69 6E 73 20 74 68    ette contains th
01D8D0:  65 20 61 63 74 75 61 6C 20 63 6F 6C 6F 75 72 20    e actual colour 
01D8E0:  77 68 69 63 68 20 20 69 73 0D 0A 20 20 20 20 20    which  is..     
01D8F0:  20 20 74 6F 20 62 65 20 64 69 73 70 6C 61 79 65      to be displaye
01D900:  64 20 62 79 20 74 68 65 20 20 6D 6F 6E 69 74 6F    d by the  monito
01D910:  72 20 20 66 6F 72 20 20 74 68 61 74 20 20 70 61    r  for  that  pa
01D920:  72 74 69 63 75 6C 61 72 20 20 69 6E 6B 2E 20 20    rticular  ink.  
01D930:  43 68 61 6E 67 69 6E 67 0D 0A 20 20 20 20 20 20    Changing..      
01D940:  20 65 6E 74 72 69 65 73 20 69 6E 20 74 68 65 20     entries in the 
01D950:  70 61 6C 65 74 74 65 20 74 68 75 73 20 63 61 75    palette thus cau
01D960:  73 65 73 20 61 6C 6C 20 20 70 69 78 65 6C 73 20    ses all  pixels 
01D970:  20 73 65 74 20 20 74 6F 20 20 74 68 61 74 20 20     set  to  that  
01D980:  69 6E 6B 20 20 74 6F 0D 0A 20 20 20 20 20 20 20    ink  to..       
01D990:  63 68 61 6E 67 65 20 63 6F 6C 6F 75 72 20 77 68    change colour wh
01D9A0:  65 6E 20 74 68 65 79 20 61 72 65 20 6E 65 78 74    en they are next
01D9B0:  20 64 69 73 70 6C 61 79 65 64 20 28 69 2E 65 2E     displayed (i.e.
01D9C0:  20 77 69 74 68 69 6E 20 20 31 2F 35 30 74 68 20     within  1/50th 
01D9D0:  20 6F 66 20 20 61 0D 0A 20 20 20 20 20 20 20 73     of  a..       s
01D9E0:  65 63 6F 6E 64 20 6F 72 20 73 6F 29 2E 0D 0A 0D    econd or so)....
01D9F0:  0A 20 20 20 20 20 20 20 49 6E 20 66 61 63 74 20    .       In fact 
01DA00:  74 68 65 20 53 63 72 65 65 6E 20 50 61 63 6B 20    the Screen Pack 
01DA10:  61 6C 6C 6F 77 73 20 74 77 6F 20 63 6F 6C 6F 75    allows two colou
01DA20:  72 73 20 74 6F 20 62 65 20 20 61 73 73 6F 63 69    rs to be  associ
01DA30:  61 74 65 64 20 20 77 69 74 68 20 20 61 6E 0D 0A    ated  with  an..
01DA40:  20 20 20 20 20 20 20 69 6E 6B 20 28 6F 72 20 74           ink (or t
01DA50:  68 65 20 62 6F 72 64 65 72 29 2E 20 54 68 65 73    he border). Thes
01DA60:  65 20 61 72 65 20 6C 6F 61 64 65 64 20 20 69 6E    e are loaded  in
01DA70:  74 6F 20 20 74 68 65 20 20 70 61 6C 65 74 74 65    to  the  palette
01DA80:  20 20 61 6C 74 65 72 6E 61 74 65 6C 79 0D 0A 20      alternately.. 
01DA90:  20 20 20 20 20 20 75 6E 64 65 72 20 73 6F 66 74          under soft
01DAA0:  77 61 72 65 20 63 6F 6E 74 72 6F 6C 2E 20 49 66    ware control. If
01DAB0:  20 74 68 65 20 74 77 6F 20 63 6F 6C 6F 75 72 73     the two colours
01DAC0:  20 61 73 73 6F 63 69 61 74 65 64 20 77 69 74 68     associated with
01DAD0:  20 61 6E 20 69 6E 6B 20 20 61 72 65 0D 0A 20 20     an ink  are..  
01DAE0:  20 20 20 20 20 64 69 66 66 65 72 65 6E 74 20 74         different t
01DAF0:  68 65 6E 20 74 68 65 20 69 6E 6B 20 77 69 6C 6C    hen the ink will
01DB00:  20 66 6C 61 73 68 2C 20 69 66 20 74 68 65 20 63     flash, if the c
01DB10:  6F 6C 6F 75 72 73 20 61 72 65 20 20 74 68 65 20    olours are  the 
01DB20:  20 73 61 6D 65 20 20 74 68 65 6E 0D 0A 20 20 20     same  then..   
01DB30:  20 20 20 20 74 68 65 20 69 6E 6B 20 77 69 6C 6C        the ink will
01DB40:  20 62 65 20 73 74 65 61 64 79 2E 20 54 68 65 20     be steady. The 
01DB50:  75 73 65 72 20 63 61 6E 20 63 68 61 6E 67 65 20    user can change 
01DB60:  74 68 65 20 72 61 74 65 20 20 6F 66 20 20 61 6C    the rate  of  al
01DB70:  74 65 72 6E 61 74 69 6F 6E 2C 0D 0A 20 20 20 20    ternation,..    
01DB80:  20 20 20 66 72 6F 6D 20 74 68 65 20 64 65 66 61       from the defa
01DB90:  75 6C 74 20 6F 66 20 35 20 63 79 63 6C 65 73 20    ult of 5 cycles 
01DBA0:  70 65 72 20 73 65 63 6F 6E 64 2C 20 20 69 66 20    per second,  if 
01DBB0:  20 72 65 71 75 69 72 65 64 20 20 28 73 65 65 20     required  (see 
01DBC0:  20 53 43 52 20 20 53 45 54 0D 0A 20 20 20 20 20     SCR  SET..     
01DBD0:  20 20 46 4C 41 53 48 49 4E 47 29 2E 0D 0A 0D 0A      FLASHING).....
01DBE0:  20 20 20 20 20 20 20 57 68 65 6E 20 20 73 70 65           When  spe
01DBF0:  63 69 66 79 69 6E 67 20 20 63 6F 6C 6F 75 72 73    cifying  colours
01DC00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
01DC10:  19 00 00 00 02 09 50 E5 19 00 C1 02 00 00 00 02    ......P.........
01DC20:  19 00 C2 02 00 00 00 02 19 00 C3 02 00 00 00 02    ................
01DC30:  19 00 C4 02 00 00 00 02 19 00 C5 02 00 00 00 02    ................
01DC40:  19 00 C6 02 00 00 00 02 19 00 C7 02 00 00 00 02    ................
01DC50:  19 00 C8 02 00 00 00 02 19 00 C9 02 00 00 00 02    ................
01DC60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DC70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DC80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DC90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DCF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01DD00:  20 20 74 68 65 20 20 53 63 72 65 65 6E 20 20 50      the  Screen  P
01DD10:  61 63 6B 20 20 75 73 65 73 20 20 61 6E 20 20 6F    ack  uses  an  o
01DD20:  72 64 65 72 69 6E 67 20 20 74 68 61 74 0D 0A 20    rdering  that.. 
01DD30:  20 20 20 20 20 20 63 6F 72 72 65 73 70 6F 6E 64          correspond
01DD40:  73 20 74 6F 20 61 20 67 72 65 79 20 73 63 61 6C    s to a grey scal
01DD50:  65 20 6F 6E 20 61 20 6D 6F 6E 6F 63 68 72 6F 6D    e on a monochrom
01DD60:  65 20 6D 6F 6E 69 74 6F 72 2E 20 20 54 68 69 73    e monitor.  This
01DD70:  20 20 72 75 6E 73 20 20 66 72 6F 6D 0D 0A 20 20      runs  from..  
01DD80:  20 20 20 20 20 74 68 65 20 64 61 72 6B 65 73 74         the darkest
01DD90:  20 63 6F 6C 6F 75 72 20 28 62 6C 61 63 6B 29 2C     colour (black),
01DDA0:  20 63 6F 6C 6F 75 72 20 30 2C 20 74 6F 20 74 68     colour 0, to th
01DDB0:  65 20 62 72 69 67 68 74 65 73 74 20 63 6F 6C 6F    e brightest colo
01DDC0:  75 72 20 20 28 62 72 69 67 68 74 0D 0A 20 20 20    ur  (bright..   
01DDD0:  20 20 20 20 77 68 69 74 65 29 2C 20 63 6F 6C 6F        white), colo
01DDE0:  75 72 20 32 36 2E 20 54 68 65 20 63 6F 6C 6F 75    ur 26. The colou
01DDF0:  72 73 20 64 6F 20 6E 6F 74 20 61 70 70 65 61 72    rs do not appear
01DE00:  20 74 6F 20 20 68 61 76 65 20 20 61 6E 79 20 20     to  have  any  
01DE10:  70 61 72 74 69 63 75 6C 61 72 0D 0A 20 20 20 20    particular..    
01DE20:  20 20 20 6F 72 64 65 72 69 6E 67 20 77 68 65 6E       ordering when
01DE30:  20 76 69 65 77 65 64 20 6F 6E 20 61 20 63 6F 6C     viewed on a col
01DE40:  6F 75 72 20 6D 6F 6E 69 74 6F 72 2E 0D 0A 0D 0A    our monitor.....
01DE50:  20 20 20 20 20 20 20 54 68 65 20 70 61 6C 65 74           The palet
01DE60:  74 65 20 75 73 65 73 20 61 20 64 69 66 66 65 72    te uses a differ
01DE70:  65 6E 74 20 28 61 6E 64 20 20 61 70 70 61 72 65    ent (and  appare
01DE80:  6E 74 6C 79 20 20 6E 6F 6E 73 65 6E 73 69 63 61    ntly  nonsensica
01DE90:  6C 29 20 20 6E 75 6D 62 65 72 69 6E 67 0D 0A 20    l)  numbering.. 
01DEA0:  20 20 20 20 20 20 73 63 68 65 6D 65 20 66 6F 72          scheme for
01DEB0:  20 74 68 65 20 63 6F 6C 6F 75 72 73 2E 20 54 68     the colours. Th
01DEC0:  65 20 53 63 72 65 65 6E 20 50 61 63 6B 20 61 75    e Screen Pack au
01DED0:  74 6F 6D 61 74 69 63 61 6C 6C 79 20 20 74 72 61    tomatically  tra
01DEE0:  6E 73 6C 61 74 65 73 20 20 74 68 65 0D 0A 20 20    nslates  the..  
01DEF0:  20 20 20 20 20 67 72 65 79 20 20 73 63 61 6C 65         grey  scale
01DF00:  20 20 6E 75 6D 62 65 72 20 20 74 6F 20 20 74 68      number  to  th
01DF10:  65 20 20 68 61 72 64 77 61 72 65 20 20 6E 75 6D    e  hardware  num
01DF20:  62 65 72 20 20 61 6E 64 20 20 76 69 63 65 20 20    ber  and  vice  
01DF30:  76 65 72 73 61 20 20 77 68 65 6E 0D 0A 20 20 20    versa  when..   
01DF40:  20 20 20 20 61 70 70 72 6F 70 72 69 61 74 65 2E        appropriate.
01DF50:  20 55 6E 6C 65 73 73 20 74 68 65 20 75 73 65 72     Unless the user
01DF60:  20 69 73 20 20 64 72 69 76 69 6E 67 20 20 74 68     is  driving  th
01DF70:  65 20 20 68 61 72 64 77 61 72 65 20 20 64 69 72    e  hardware  dir
01DF80:  65 63 74 6C 79 20 20 74 68 65 0D 0A 20 20 20 20    ectly  the..    
01DF90:  20 20 20 68 61 72 64 77 61 72 65 20 6E 75 6D 62       hardware numb
01DFA0:  65 72 73 20 77 69 6C 6C 20 6E 65 76 65 72 20 62    ers will never b
01DFB0:  65 20 65 6E 63 6F 75 6E 74 65 72 65 64 2E 0D 0A    e encountered...
01DFC0:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 64 65 66    ..       The def
01DFD0:  61 75 6C 74 20 73 65 74 74 69 6E 67 73 20 66 6F    ault settings fo
01DFE0:  72 20 74 68 65 20 63 6F 6C 6F 75 72 20 6F 66 20    r the colour of 
01DFF0:  65 61 63 68 20 69 6E 6B 20 61 6E 64 20 61 20 6C    each ink and a l
01E000:  69 73 74 20 6F 66 20 20 74 68 65 20 20 32 37 0D    ist of  the  27.
01E010:  0A 20 20 20 20 20 20 20 63 6F 6C 6F 75 72 73 20    .       colours 
01E020:  61 76 61 69 6C 61 62 6C 65 20 61 72 65 20 67 69    available are gi
01E030:  76 65 6E 20 69 6E 20 41 70 70 65 6E 64 69 78 20    ven in Appendix 
01E040:  56 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 36 2E 33    V.....       6.3
01E050:  20 53 63 72 65 65 6E 20 41 64 64 72 65 73 73 65     Screen Addresse
01E060:  73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    s.....       The
01E070:  20 53 63 72 65 65 6E 20 50 61 63 6B 20 64 6F 65     Screen Pack doe
01E080:  73 20 6E 6F 74 20 75 73 65 20 20 61 20 20 63 6F    s not use  a  co
01E090:  6F 72 64 69 6E 61 74 65 20 20 73 79 73 74 65 6D    ordinate  system
01E0A0:  20 20 69 74 73 65 6C 66 2E 20 20 49 74 20 20 75      itself.  It  u
01E0B0:  73 65 73 0D 0A 20 20 20 20 20 20 20 73 63 72 65    ses..       scre
01E0C0:  65 6E 20 61 64 64 72 65 73 73 65 73 2E 20 48 6F    en addresses. Ho
01E0D0:  77 65 76 65 72 2C 20 69 74 20 64 6F 65 73 20 77    wever, it does w
01E0E0:  6F 72 6B 20 77 69 74 68 20 20 74 68 65 20 20 70    ork with  the  p
01E0F0:  68 79 73 69 63 61 6C 20 20 61 6E 64 20 20 62 61    hysical  and  ba
01E100:  73 65 0D 0A 20 20 20 20 20 20 20 63 6F 6F 72 64    se..       coord
01E110:  69 6E 61 74 65 20 73 79 73 74 65 6D 20 6F 66 20    inate system of 
01E120:  74 68 65 20 54 65 78 74 20 61 6E 64 20 47 72 61    the Text and Gra
01E130:  70 68 69 63 73 20 56 44 55 73 20 64 65 73 63 72    phics VDUs descr
01E140:  69 62 65 64 20 20 69 6E 20 20 73 65 63 74 69 6F    ibed  in  sectio
01E150:  6E 0D 0A 20 20 20 20 20 20 20 34 2E 31 20 61 6E    n..       4.1 an
01E160:  64 20 35 2E 31 20 72 65 73 70 65 63 74 69 76 65    d 5.1 respective
01E170:  6C 79 2E 20 49 6E 20 20 70 61 72 74 69 63 75 6C    ly. In  particul
01E180:  61 72 2C 20 20 72 6F 75 74 69 6E 65 73 20 20 61    ar,  routines  a
01E190:  72 65 20 20 70 72 6F 76 69 64 65 64 20 20 74 6F    re  provided  to
01E1A0:  0D 0A 20 20 20 20 20 20 20 63 6F 6E 76 65 72 74    ..       convert
01E1B0:  20 70 6F 73 69 74 69 6F 6E 73 20 67 69 76 65 6E     positions given
01E1C0:  20 69 6E 20 70 68 79 73 69 63 61 6C 20 20 6F 72     in physical  or
01E1D0:  20 20 62 61 73 65 20 20 63 6F 6F 72 64 69 6E 61      base  coordina
01E1E0:  74 65 73 20 20 74 6F 20 20 73 63 72 65 65 6E 0D    tes  to  screen.
01E1F0:  0A 20 20 20 20 20 20 20 61 64 64 72 65 73 73 65    .       addresse
01E200:  73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    s.........      
01E210:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
01E220:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
01E230:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
01E240:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                   p
01E250:  61 67 65 20 36 2E 32 0D 0A 0D 0A 0D 0A 0D 0A 0D    age 6.2.........
01E260:  0A 0D 0A 20 20 20 20 20 20 20 41 20 73 63 72 65    ...       A scre
01E270:  65 6E 20 61 64 64 72 65 73 73 20 69 73 2C 20 70    en address is, p
01E280:  72 6F 73 61 69 63 61 6C 6C 79 20 65 6E 6F 75 67    rosaically enoug
01E290:  68 2C 20 74 68 65 20 61 64 64 72 65 73 73 20 6F    h, the address o
01E2A0:  66 20 61 20 62 79 74 65 20 20 77 69 74 68 69 6E    f a byte  within
01E2B0:  0D 0A 20 20 20 20 20 20 20 74 68 65 20 73 63 72    ..       the scr
01E2C0:  65 65 6E 20 6D 65 6D 6F 72 79 2E 20 54 6F 20 73    een memory. To s
01E2D0:  70 65 63 69 66 79 20 61 20 70 61 72 74 69 63 75    pecify a particu
01E2E0:  6C 61 72 20 70 69 78 65 6C 20 61 20 73 63 72 65    lar pixel a scre
01E2F0:  65 6E 20 20 61 64 64 72 65 73 73 20 20 69 73 0D    en  address  is.
01E300:  0A 20 20 20 20 20 20 20 6F 66 74 65 6E 20 70 61    .       often pa
01E310:  73 73 65 64 20 74 6F 20 61 20 72 6F 75 74 69 6E    ssed to a routin
01E320:  65 20 61 6C 6F 6E 67 20 77 69 74 68 20 61 20 20    e along with a  
01E330:  6D 61 73 6B 20 20 74 68 61 74 20 20 69 6E 64 69    mask  that  indi
01E340:  63 61 74 65 73 20 20 65 78 61 63 74 6C 79 0D 0A    cates  exactly..
01E350:  20 20 20 20 20 20 20 77 68 69 63 68 20 70 69 78           which pix
01E360:  65 6C 20 69 73 20 72 65 71 75 69 72 65 64 2E 20    el is required. 
01E370:  52 6F 75 74 69 6E 65 73 20 61 72 65 20 70 72 6F    Routines are pro
01E380:  76 69 64 65 64 20 66 6F 72 20 73 74 65 70 70 69    vided for steppi
01E390:  6E 67 20 20 61 20 20 73 63 72 65 65 6E 0D 0A 20    ng  a  screen.. 
01E3A0:  20 20 20 20 20 20 61 64 64 72 65 73 73 20 75 70          address up
01E3B0:  2C 20 64 6F 77 6E 2C 20 72 69 67 68 74 20 61 6E    , down, right an
01E3C0:  64 20 6C 65 66 74 20 6F 6E 65 20 62 79 74 65 2E    d left one byte.
01E3D0:  20 28 54 68 65 20 73 63 72 65 65 6E 20 6D 61 70     (The screen map
01E3E0:  20 6D 61 6B 65 73 20 20 74 68 69 73 0D 0A 20 20     makes  this..  
01E3F0:  20 20 20 20 20 61 20 6E 6F 6E 2D 74 72 69 76 69         a non-trivi
01E400:  61 6C 20 6F 70 65 72 61 74 69 6F 6E 2E 29 0D 0A    al operation.)..
01E410:  0D 0A 20 20 20 20 20 20 20 36 2E 34 20 53 63 72    ..       6.4 Scr
01E420:  65 65 6E 20 4D 65 6D 6F 72 79 20 4D 61 70 2E 0D    een Memory Map..
01E430:  0A 20 20 20 20 20 20 20 54 68 65 20 73 63 72 65    .       The scre
01E440:  65 6E 20 69 73 20 61 20 6D 65 6D 6F 72 79 20 6D    en is a memory m
01E450:  61 70 70 65 64 20 70 69 78 65 6C 20 73 63 72 65    apped pixel scre
01E460:  65 6E 2E 20 54 68 65 20 20 73 63 72 65 65 6E 20    en. The  screen 
01E470:  20 6D 65 6D 6F 72 79 20 20 66 69 6C 6C 73 0D 0A     memory  fills..
01E480:  0D 0A 20 20 20 20 20 20 20 31 36 4B 20 6F 66 20    ..       16K of 
01E490:  52 41 4D 20 69 6E 20 61 6C 6C 20 6D 6F 64 65 73    RAM in all modes
01E4A0:  2E 20 54 68 65 20 64 65 66 61 75 6C 74 20 6C 6F    . The default lo
01E4B0:  63 61 74 69 6F 6E 20 66 6F 72 20 74 68 65 20 73    cation for the s
01E4C0:  63 72 65 65 6E 2C 20 20 73 65 74 20 20 61 74 0D    creen,  set  at.
01E4D0:  0A 20 20 20 20 20 20 20 45 4D 53 2C 20 69 73 20    .       EMS, is 
01E4E0:  74 68 65 20 31 36 4B 20 6F 66 20 52 41 4D 20 73    the 16K of RAM s
01E4F0:  74 61 72 74 69 6E 67 20 61 74 20 23 43 30 30 30    tarting at #C000
01E500:  2E 20 20 54 68 69 73 20 20 6C 69 65 73 20 20 75    .  This  lies  u
01E510:  6E 64 65 72 6E 65 61 74 68 20 20 74 68 65 0D 0A    nderneath  the..
01E520:  20 20 20 20 20 20 20 75 70 70 65 72 20 52 4F 4D           upper ROM
01E530:  2C 20 77 68 65 6E 20 69 74 20 69 73 20 65 6E 61    , when it is ena
01E540:  62 6C 65 64 2C 20 77 68 69 63 68 20 6B 65 65 70    bled, which keep
01E550:  73 20 74 68 65 20 73 63 72 65 65 6E 20 6F 75 74    s the screen out
01E560:  20 6F 66 20 20 74 68 65 20 20 77 61 79 0D 0A 20     of  the  way.. 
01E570:  20 20 20 20 20 20 6F 66 20 74 68 65 20 72 65 73          of the res
01E580:  74 20 6F 66 20 74 68 65 20 73 79 73 74 65 6D 2E    t of the system.
01E590:  20 48 6F 77 65 76 65 72 2C 20 68 69 73 20 61 6C     However, his al
01E5A0:  73 6F 20 6D 65 61 6E 73 20 74 68 61 74 20 74 68    so means that th
01E5B0:  65 20 75 70 70 65 72 20 20 52 4F 4D 0D 0A 20 20    e upper  ROM..  
01E5C0:  20 20 20 20 20 68 61 73 20 74 6F 20 62 65 20 64         has to be d
01E5D0:  69 73 61 62 6C 65 64 20 77 68 65 6E 65 76 65 72    isabled whenever
01E5E0:  20 74 68 65 20 73 63 72 65 65 6E 20 69 73 20 72     the screen is r
01E5F0:  65 61 64 2E 20 54 68 65 20 66 69 72 6D 77 61 72    ead. The firmwar
01E600:  65 20 6A 75 6D 70 62 6C 6F 63 6B 0D 0A 20 20 20    e jumpblock..   
01E610:  20 20 20 20 75 73 65 73 20 4C 4F 57 20 4A 55 4D        uses LOW JUM
01E620:  50 20 72 65 73 74 61 72 74 73 20 77 68 69 63 68    P restarts which
01E630:  20 74 75 72 6E 20 74 68 65 20 75 70 70 65 72 20     turn the upper 
01E640:  52 4F 4D 20 6F 66 66 20 74 6F 20 65 6E 73 75 72    ROM off to ensur
01E650:  65 20 74 68 61 74 20 74 68 65 0D 0A 20 20 20 20    e that the..    
01E660:  20 20 20 73 63 72 65 65 6E 20 6D 65 6D 6F 72 79       screen memory
01E670:  20 69 73 20 61 63 63 65 73 73 69 62 6C 65 20 69     is accessible i
01E680:  66 20 72 65 71 75 69 72 65 64 2E 0D 0A 0D 0A 20    f required..... 
01E690:  20 20 20 20 20 20 49 74 20 69 73 20 70 6F 73 73          It is poss
01E6A0:  69 62 6C 65 20 74 6F 20 63 68 61 6E 67 65 20 74    ible to change t
01E6B0:  68 65 20 6C 6F 63 61 74 69 6F 6E 20 6F 66 20 74    he location of t
01E6C0:  68 65 20 73 63 72 65 65 6E 20 6D 65 6D 6F 72 79    he screen memory
01E6D0:  20 74 6F 20 20 61 6E 79 20 20 6F 66 0D 0A 20 20     to  any  of..  
01E6E0:  20 20 20 20 20 74 68 65 20 34 20 31 36 4B 20 6D         the 4 16K m
01E6F0:  65 6D 6F 72 79 20 62 6C 6F 63 6B 73 20 6F 6E 20    emory blocks on 
01E700:  31 36 4B 20 62 6F 75 6E 64 61 72 69 65 73 20 28    16K boundaries (
01E710:  73 65 65 20 53 43 52 20 53 45 54 20 42 41 53 45    see SCR SET BASE
01E720:  29 2E 20 48 6F 77 65 76 65 72 2C 0D 0A 20 20 20    ). However,..   
01E730:  20 20 20 20 6F 6E 6C 79 20 23 43 30 30 30 20 61        only #C000 a
01E740:  6E 64 20 23 34 30 30 30 20 61 72 65 20 75 73 65    nd #4000 are use
01E750:  66 75 6C 3B 20 23 30 30 30 30 20 20 61 6E 64 20    ful; #0000  and 
01E760:  20 23 38 30 30 30 20 20 62 6F 74 68 20 20 6F 76     #8000  both  ov
01E770:  65 72 6C 61 70 20 20 74 68 65 0D 0A 20 20 20 20    erlap  the..    
01E780:  20 20 20 66 69 72 6D 77 61 72 65 20 6A 75 6D 70       firmware jump
01E790:  62 6C 6F 63 6B 73 20 6F 72 20 6F 74 68 65 72 20    blocks or other 
01E7A0:  73 79 73 74 65 6D 20 61 72 65 61 73 2E 20 54 68    system areas. Th
01E7B0:  65 20 64 65 73 63 72 69 70 74 69 6F 6E 73 20 62    e descriptions b
01E7C0:  65 6C 6F 77 20 20 61 6C 6C 0D 0A 20 20 20 20 20    elow  all..     
01E7D0:  20 20 61 73 73 75 6D 65 20 74 68 65 20 64 65 66      assume the def
01E7E0:  61 75 6C 74 20 73 63 72 65 65 6E 20 6C 6F 63 61    ault screen loca
01E7F0:  74 69 6F 6E 20 61 74 20 23 43 30 30 30 2E 0D 0A    tion at #C000...
01E800:  0D 0A 20 20 20 20 20 20 20 49 6E 20 56 31 2E 31    ..       In V1.1
01E810:  20 66 69 72 6D 77 61 72 65 20 69 73 20 69 74 20     firmware is it 
01E820:  70 6F 73 73 69 62 6C 65 20 74 6F 20 73 65 74 20    possible to set 
01E830:  74 68 65 20 6C 6F 63 61 74 69 6F 6E 20 6F 66 20    the location of 
01E840:  74 68 65 20 73 63 72 65 65 6E 20 74 68 61 74 0D    the screen that.
01E850:  0A 20 20 20 20 20 20 20 69 73 20 75 73 65 64 20    .       is used 
01E860:  62 79 20 74 68 65 20 73 63 72 65 65 6E 20 20 70    by the screen  p
01E870:  61 63 6B 20 20 72 6F 75 74 69 6E 65 73 20 20 69    ack  routines  i
01E880:  6E 64 65 70 65 6E 64 65 6E 74 6C 79 20 20 6F 66    ndependently  of
01E890:  20 20 73 65 74 74 69 6E 67 20 20 74 68 65 0D 0A      setting  the..
01E8A0:  20 20 20 20 20 20 20 68 61 72 64 77 61 72 65 20           hardware 
01E8B0:  76 61 6C 75 65 2E 20 54 68 69 73 20 77 69 6C 6C    value. This will
01E8C0:  20 74 68 65 6E 20 65 6E 61 62 6C 65 20 74 65 78     then enable tex
01E8D0:  74 20 61 6E 64 20 67 72 61 70 68 69 63 73 20 74    t and graphics t
01E8E0:  6F 20 62 65 20 70 72 6F 64 75 63 65 64 0D 0A 20    o be produced.. 
01E8F0:  20 20 20 20 20 20 69 6E 20 74 68 65 20 27 73 63          in the 'sc
01E900:  72 65 65 6E 27 20 74 68 61 74 20 69 73 6E 27 74    reen' that isn't
01E910:  20 63 75 72 72 65 6E 74 6C 79 20 69 6E 20 76 69     currently in vi
01E920:  65 77 20 2D 20 73 77 69 74 63 68 69 6E 67 20 74    ew - switching t
01E930:  6F 20 74 68 65 20 20 6F 74 68 65 72 0D 0A 20 20    o the  other..  
01E940:  20 20 20 20 20 70 6F 73 73 69 62 6C 65 20 6C 6F         possible lo
01E950:  63 61 74 69 6F 6E 20 28 23 34 30 30 30 20 74 6F    cation (#4000 to
01E960:  20 23 43 30 30 30 29 20 77 69 6C 6C 20 20 63 61     #C000) will  ca
01E970:  75 73 65 20 20 74 68 65 20 20 61 6C 72 65 61 64    use  the  alread
01E980:  79 20 20 70 72 65 70 61 72 65 64 0D 0A 20 20 20    y  prepared..   
01E990:  20 20 20 20 67 72 61 70 68 69 63 73 20 65 74 63        graphics etc
01E9A0:  2E 20 74 6F 20 69 6E 73 74 61 6E 74 6C 79 20 61    . to instantly a
01E9B0:  70 70 65 61 72 20 2D 20 74 68 75 73 20 61 76 6F    ppear - thus avo
01E9C0:  69 64 69 6E 67 20 66 6C 69 63 6B 65 72 20 61 6E    iding flicker an
01E9D0:  64 20 65 6E 61 62 6C 69 6E 67 0D 0A 20 20 20 20    d enabling..    
01E9E0:  20 20 20 73 6D 6F 6F 74 68 20 61 6E 69 6D 61 74       smooth animat
01E9F0:  69 6F 6E 20 65 66 66 65 63 74 73 2E 0D 0A 0D 0A    ion effects.....
01EA00:  20 20 20 20 20 20 20 54 68 65 20 73 63 72 65 65           The scree
01EA10:  6E 20 6D 65 6D 6F 72 79 20 6D 61 70 20 69 73 20    n memory map is 
01EA20:  6E 6F 74 20 73 69 6D 70 6C 65 2E 20 46 6F 72 74    not simple. Fort
01EA30:  75 6E 61 74 65 6C 79 20 69 74 20 69 73 20 20 6E    unately it is  n
01EA40:  6F 74 20 20 6E 65 63 65 73 73 61 72 79 0D 0A 20    ot  necessary.. 
01EA50:  20 20 20 20 20 20 74 6F 20 75 6E 64 65 72 73 74          to underst
01EA60:  61 6E 64 20 69 74 20 62 65 63 61 75 73 65 20 74    and it because t
01EA70:  68 65 20 54 65 78 74 20 61 6E 64 20 47 72 61 70    he Text and Grap
01EA80:  68 69 63 73 20 56 44 55 73 20 70 72 6F 76 69 64    hics VDUs provid
01EA90:  65 20 20 69 64 65 61 6C 69 73 65 64 0D 0A 20 20    e  idealised..  
01EAA0:  20 20 20 20 20 6D 6F 64 65 6C 73 20 6F 66 20 74         models of t
01EAB0:  68 65 20 73 63 72 65 65 6E 2E 20 48 6F 77 65 76    he screen. Howev
01EAC0:  65 72 2C 20 74 6F 20 61 63 68 69 65 76 65 20 6D    er, to achieve m
01EAD0:  61 78 69 6D 75 6D 20 20 73 70 65 65 64 20 20 66    aximum  speed  f
01EAE0:  6F 72 20 20 63 65 72 74 61 69 6E 0D 0A 20 20 20    or  certain..   
01EAF0:  20 20 20 20 61 70 70 6C 69 63 61 74 69 6F 6E 73        applications
01EB00:  20 28 73 75 63 68 20 61 73 20 61 6E 69 6D 61 74     (such as animat
01EB10:  65 64 20 67 61 6D 65 73 29 20 69 74 20 6D 61 79    ed games) it may
01EB20:  20 62 65 20 20 6E 65 63 65 73 73 61 72 79 20 20     be  necessary  
01EB30:  74 6F 20 20 61 63 63 65 73 73 0D 0A 20 20 20 20    to  access..    
01EB40:  20 20 20 74 68 65 20 73 63 72 65 65 6E 20 6D 65       the screen me
01EB50:  6D 6F 72 79 20 64 69 72 65 63 74 6C 79 2E 0D 0A    mory directly...
01EB60:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 73 63 72    ..       The scr
01EB70:  65 65 6E 20 6D 65 6D 6F 72 79 20 69 73 20 64 69    een memory is di
01EB80:  76 69 64 65 64 20 69 6E 74 6F 20 38 20 62 6C 6F    vided into 8 blo
01EB90:  63 6B 73 2C 20 65 61 63 68 20 32 4B 20 62 79 74    cks, each 2K byt
01EBA0:  65 73 20 6C 6F 6E 67 2E 20 20 42 6C 6F 63 6B 0D    es long.  Block.
01EBB0:  0A 20 20 20 20 20 20 20 30 20 72 75 6E 73 20 66    .       0 runs f
01EBC0:  72 6F 6D 20 23 43 30 30 30 20 74 6F 20 23 43 37    rom #C000 to #C7
01EBD0:  46 46 2C 20 62 6C 6F 63 6B 20 31 20 72 75 6E 73    FF, block 1 runs
01EBE0:  20 66 72 6F 6D 20 23 43 38 30 30 20 74 6F 20 23     from #C800 to #
01EBF0:  43 46 46 46 2C 20 20 61 6E 64 20 20 73 6F 0D 0A    CFFF,  and  so..
01EC00:  20 20 20 20 20 20 20 6F 6E 2E 20 45 61 63 68 20           on. Each 
01EC10:  6C 69 6E 65 20 6F 66 20 70 69 78 65 6C 73 20 6F    line of pixels o
01EC20:  6E 20 74 68 65 20 73 63 72 65 65 6E 20 75 73 65    n the screen use
01EC30:  73 20 38 30 20 63 6F 6E 73 65 63 75 74 69 76 65    s 80 consecutive
01EC40:  20 62 79 74 65 73 20 66 72 6F 6D 20 61 0D 0A 20     bytes from a.. 
01EC50:  20 20 20 20 20 20 62 6C 6F 63 6B 2E 20 54 68 65          block. The
01EC60:  20 74 6F 70 20 6C 69 6E 65 20 6F 66 20 74 68 65     top line of the
01EC70:  20 73 63 72 65 65 6E 20 63 6F 6D 65 73 20 66 72     screen comes fr
01EC80:  6F 6D 20 62 6C 6F 63 6B 20 30 2C 20 74 68 65 20    om block 0, the 
01EC90:  73 65 63 6F 6E 64 20 20 66 72 6F 6D 0D 0A 20 20    second  from..  
01ECA0:  20 20 20 20 20 62 6C 6F 63 6B 20 31 20 61 6E 64         block 1 and
01ECB0:  20 73 6F 20 6F 6E 20 75 6E 74 69 6C 20 74 68 65     so on until the
01ECC0:  20 65 69 67 68 74 68 20 6C 69 6E 65 20 77 68 69     eighth line whi
01ECD0:  63 68 20 63 6F 6D 65 73 20 66 72 6F 6D 20 62 6C    ch comes from bl
01ECE0:  6F 63 6B 20 37 2E 20 20 54 68 65 0D 0A 20 20 20    ock 7.  The..   
01ECF0:  20 20 20 20 73 65 71 75 65 6E 63 65 20 73 74 61        sequence sta
01ED00:  72 74 73 20 77 69 74 68 20 62 6C 6F 63 6B 20 30    rts with block 0
01ED10:  20 61 67 61 69 6E 20 6F 6E 20 74 68 65 20 6E 69     again on the ni
01ED20:  6E 74 68 20 6C 69 6E 65 20 20 61 6E 64 20 20 72    nth line  and  r
01ED30:  65 70 65 61 74 73 20 20 69 6E 0D 0A 20 20 20 20    epeats  in..    
01ED40:  20 20 20 74 68 69 73 20 66 61 73 68 69 6F 6E 20       this fashion 
01ED50:  61 6C 6C 20 74 68 65 20 77 61 79 20 64 6F 77 6E    all the way down
01ED60:  20 74 68 65 20 73 63 72 65 65 6E 2E 20 54 68 65     the screen. The
01ED70:  20 73 75 63 63 65 73 73 69 76 65 20 20 6C 69 6E     successive  lin
01ED80:  65 73 20 20 69 6E 20 20 61 0D 0A 20 20 20 20 20    es  in  a..     
01ED90:  20 20 62 6C 6F 63 6B 20 61 72 65 20 73 74 6F 72      block are stor
01EDA0:  65 64 20 63 6F 6E 73 65 63 75 74 69 76 65 6C 79    ed consecutively
01EDB0:  20 73 6F 20 74 68 65 72 65 20 61 72 65 20 34 38     so there are 48
01EDC0:  20 75 6E 75 73 65 64 20 62 79 74 65 73 20 61 74     unused bytes at
01EDD0:  20 74 68 65 20 65 6E 64 0D 0A 20 20 20 20 20 20     the end..      
01EDE0:  20 6F 66 20 65 61 63 68 20 62 6C 6F 63 6B 2E 0D     of each block..
01EDF0:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 72 65 20    ...       There 
01EE00:  69 73 20 66 75 72 74 68 65 72 20 63 6F 6D 70 6C    is further compl
01EE10:  69 63 61 74 69 6F 6E 20 69 6E 20 20 74 68 69 73    ication in  this
01EE20:  20 20 73 63 72 65 65 6E 20 20 6D 61 70 2E 20 20      screen  map.  
01EE30:  54 68 65 20 20 64 65 73 63 72 69 70 74 69 6F 6E    The  description
01EE40:  0D 0A 20 20 20 20 20 20 20 61 62 6F 76 65 20 61    ..       above a
01EE50:  73 73 75 6D 65 73 20 74 68 61 74 20 74 68 65 20    ssumes that the 
01EE60:  66 69 72 73 74 20 62 79 74 65 20 64 69 73 70 6C    first byte displ
01EE70:  61 79 65 64 20 20 66 72 6F 6D 20 20 74 68 65 20    ayed  from  the 
01EE80:  20 62 6C 6F 63 6B 20 20 69 73 20 20 74 68 65 0D     block  is  the.
01EE90:  0A 20 20 20 20 20 20 20 66 69 72 73 74 20 62 79    .       first by
01EEA0:  74 65 20 6F 66 20 74 68 65 20 62 6C 6F 63 6B 2E    te of the block.
01EEB0:  20 49 6E 20 70 72 61 63 74 69 63 65 20 74 68 65     In practice the
01EEC0:  20 6F 66 66 73 65 74 20 20 69 6E 20 20 61 20 20     offset  in  a  
01EED0:  62 6C 6F 63 6B 20 20 6F 66 20 20 74 68 65 0D 0A    block  of  the..
01EEE0:  20 20 20 20 20 20 20 66 69 72 73 74 20 62 79 74           first byt
01EEF0:  65 20 74 6F 20 62 65 20 64 69 73 70 6C 61 79 20    e to be display 
01EF00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
01EF10:  1A 00 00 00 02 09 50 E5 1A 00 C1 02 00 00 00 02    ......P.........
01EF20:  1A 00 C2 02 00 00 00 02 1A 00 C3 02 00 00 00 02    ................
01EF30:  1A 00 C4 02 00 00 00 02 1A 00 C5 02 00 00 00 02    ................
01EF40:  1A 00 C6 02 00 00 00 02 1A 00 C7 02 00 00 00 02    ................
01EF50:  1A 00 C8 02 00 00 00 02 1A 00 C9 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:  63 61 6E 20 62 65 20 73 65 74 20 74 6F 20 61 6E    can be set to an
01F010:  79 20 65 76 65 6E 20 20 76 61 6C 75 65 20 20 28    y even  value  (
01F020:  73 65 65 20 20 53 43 52 20 20 53 45 54 0D 0A 20    see  SCR  SET.. 
01F030:  20 20 20 20 20 20 4F 46 46 53 45 54 29 2E 20 54          OFFSET). T
01F040:  68 65 20 73 61 6D 65 20 6F 66 66 73 65 74 20 61    he same offset a
01F050:  70 70 6C 69 65 73 20 74 6F 20 61 6C 6C 20 65 69    pplies to all ei
01F060:  67 68 74 20 62 6C 6F 63 6B 73 2E 20 20 41 20 20    ght blocks.  A  
01F070:  62 6C 6F 63 6B 20 20 77 72 61 70 73 0D 0A 20 20    block  wraps..  
01F080:  20 20 20 20 20 61 72 6F 75 6E 64 20 66 72 6F 6D         around from
01F090:  20 69 74 73 20 6C 61 73 74 20 62 79 74 65 20 74     its last byte t
01F0A0:  6F 20 69 74 73 20 66 69 72 73 74 20 62 79 74 65    o its first byte
01F0B0:  2C 20 20 74 68 75 73 20 20 23 43 37 46 45 2C 20    ,  thus  #C7FE, 
01F0C0:  20 23 43 37 46 46 20 20 61 6E 64 0D 0A 20 20 20     #C7FF  and..   
01F0D0:  20 20 20 20 23 43 30 30 30 20 61 72 65 20 63 6F        #C000 are co
01F0E0:  6E 73 65 63 75 74 69 76 65 20 62 79 74 65 73 20    nsecutive bytes 
01F0F0:  69 6E 20 62 6C 6F 63 6B 20 30 20 61 6E 64 20 63    in block 0 and c
01F100:  6F 75 6C 64 20 61 6C 6C 20 62 65 20 20 6F 6E 20    ould all be  on 
01F110:  20 74 68 65 20 20 73 61 6D 65 0D 0A 20 20 20 20     the  same..    
01F120:  20 20 20 6C 69 6E 65 20 6F 66 20 74 68 65 20 73       line of the s
01F130:  63 72 65 65 6E 2E 20 41 6C 74 65 72 69 6E 67 20    creen. Altering 
01F140:  74 68 65 20 6F 66 66 73 65 74 20 62 79 20 2B 20    the offset by + 
01F150:  6F 72 20 2D 20 20 38 30 20 20 4D 4F 44 20 20 32    or -  80  MOD  2
01F160:  30 34 38 20 20 28 74 68 65 0D 0A 20 20 20 20 20    048  (the..     
01F170:  20 20 6C 65 6E 67 74 68 20 6F 66 20 61 20 6C 69      length of a li
01F180:  6E 65 29 20 72 6F 6C 6C 73 20 74 68 65 20 73 63    ne) rolls the sc
01F190:  72 65 65 6E 20 75 70 20 6F 72 20 64 6F 77 6E 20    reen up or down 
01F1A0:  62 79 20 6F 6E 65 20 63 68 61 72 61 63 74 65 72    by one character
01F1B0:  20 6C 69 6E 65 20 28 38 0D 0A 20 20 20 20 20 20     line (8..      
01F1C0:  20 70 69 78 65 6C 73 20 6C 69 6E 65 73 29 2E 20     pixels lines). 
01F1D0:  54 68 69 73 20 65 66 66 65 63 74 20 69 73 20 75    This effect is u
01F1E0:  73 65 64 20 62 79 20 74 68 65 20 54 65 78 74 20    sed by the Text 
01F1F0:  56 44 55 20 20 77 68 65 6E 20 20 72 6F 6C 6C 69    VDU  when  rolli
01F200:  6E 67 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20    ng  the..       
01F210:  65 6E 74 69 72 65 20 73 63 72 65 65 6E 2E 0D 0A    entire screen...
01F220:  0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44    ..       AMSTRAD
01F230:  20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38     CPC464/664/6128
01F240:  20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20     FIRMWARE       
01F250:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F260:  20 20 20 20 20 20 20 70 61 67 65 20 36 2E 33 0D           page 6.3.
01F270:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
01F280:  20 20 20 20 54 68 65 20 6D 65 61 6E 69 6E 67 20        The meaning 
01F290:  6F 66 20 74 68 65 20 62 79 74 65 73 20 61 63 63    of the bytes acc
01F2A0:  65 73 73 65 64 20 61 73 20 64 65 73 63 72 69 62    essed as describ
01F2B0:  65 64 20 61 62 6F 76 65 20 76 61 72 69 65 73 20    ed above varies 
01F2C0:  20 77 69 74 68 20 20 74 68 65 0D 0A 20 20 20 20     with  the..    
01F2D0:  20 20 20 73 63 72 65 65 6E 20 6D 6F 64 65 2E 20       screen mode. 
01F2E0:  45 61 63 68 20 62 79 74 65 20 73 74 6F 72 65 73    Each byte stores
01F2F0:  20 74 68 65 20 69 6E 6B 73 20 66 6F 72 20 32 2C     the inks for 2,
01F300:  20 34 20 6F 72 20 38 20 70 69 78 65 6C 73 2E 20     4 or 8 pixels. 
01F310:  54 68 65 20 20 62 69 74 73 0D 0A 20 20 20 20 20    The  bits..     
01F320:  20 20 75 73 65 64 20 74 6F 20 65 6E 63 6F 64 65      used to encode
01F330:  20 65 61 63 68 20 70 69 78 65 6C 20 61 72 65 20     each pixel are 
01F340:  6E 6F 74 20 61 72 72 61 6E 67 65 64 20 69 6E 20    not arranged in 
01F350:  61 6E 20 6F 62 76 69 6F 75 73 20 20 6D 61 6E 6E    an obvious  mann
01F360:  65 72 2E 20 20 54 68 65 0D 0A 20 20 20 20 20 20    er.  The..      
01F370:  20 66 6F 6C 6C 6F 77 69 6E 67 20 74 61 62 6C 65     following table
01F380:  20 73 70 65 63 69 66 69 65 73 20 77 68 69 63 68     specifies which
01F390:  20 62 69 74 73 20 6F 66 20 20 73 63 72 65 65 6E     bits of  screen
01F3A0:  20 20 6D 65 6D 6F 72 79 20 20 61 72 65 20 20 75      memory  are  u
01F3B0:  73 65 64 20 20 74 6F 0D 0A 20 20 20 20 20 20 20    sed  to..       
01F3C0:  65 6E 63 6F 64 65 20 77 68 69 63 68 20 70 69 78    encode which pix
01F3D0:  65 6C 20 69 6E 20 74 68 65 20 76 61 72 69 6F 75    el in the variou
01F3E0:  73 20 6D 6F 64 65 73 2E 20 54 68 65 20 62 69 74    s modes. The bit
01F3F0:  20 6E 75 6D 62 65 72 73 20 67 69 76 65 6E 20 69     numbers given i
01F400:  6E 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 74    n  the..       t
01F410:  61 62 6C 65 20 61 72 65 20 74 68 65 20 62 69 74    able are the bit
01F420:  73 20 6F 66 20 74 68 65 20 73 63 72 65 65 6E 20    s of the screen 
01F430:  62 79 74 65 2E 20 54 68 65 79 20 61 72 65 20 67    byte. They are g
01F440:  69 76 65 6E 20 69 6E 20 74 68 65 20 6F 72 64 65    iven in the orde
01F450:  72 20 20 6F 66 0D 0A 20 20 20 20 20 20 20 62 69    r  of..       bi
01F460:  74 73 20 69 6E 20 74 68 65 20 70 69 78 65 6C 20    ts in the pixel 
01F470:  2D 20 74 68 65 20 66 69 72 73 74 20 62 69 74 20    - the first bit 
01F480:  67 69 76 65 6E 20 69 73 20 6D 6F 73 74 20 73 69    given is most si
01F490:  67 6E 69 66 69 63 61 6E 74 20 62 69 74 20 20 6F    gnificant bit  o
01F4A0:  66 20 20 61 0D 0A 20 20 20 20 20 20 20 70 69 78    f  a..       pix
01F4B0:  65 6C 20 61 6E 64 20 74 68 65 20 6C 61 73 74 20    el and the last 
01F4C0:  62 69 74 20 69 73 20 74 68 65 20 6C 65 61 73 74    bit is the least
01F4D0:  20 73 69 67 6E 69 66 69 63 61 6E 74 20 62 69 74     significant bit
01F4E0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    .....           
01F4F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F500:  20 20 20 20 20 7C 20 20 20 4D 6F 64 65 20 30 20         |   Mode 0 
01F510:  20 20 20 20 20 20 20 20 20 20 4D 6F 64 65 20 31              Mode 1
01F520:  20 20 20 20 20 4D 6F 64 65 20 32 0D 0A 20 20 20         Mode 2..   
01F530:  20 20 20 20 20 20 20 20 20 20 20 20 20 2D 2D 2D                 ---
01F540:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 7C 2D 2D    -------------|--
01F550:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01F560:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01F570:  2D 2D 2D 2D 0D 0A 20 20 20 20 20 20 20 20 20 20    ----..          
01F580:  20 20 20 20 20 20 4C 65 66 74 6D 6F 73 74 20 70          Leftmost p
01F590:  69 78 65 6C 20 20 7C 20 20 42 69 74 73 20 31 2C    ixel  |  Bits 1,
01F5A0:  35 2C 33 2C 37 20 20 20 20 42 69 74 73 20 33 2C    5,3,7    Bits 3,
01F5B0:  37 20 20 20 20 42 69 74 20 37 0D 0A 20 20 20 20    7    Bit 7..    
01F5C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F5D0:  20 20 2E 20 20 20 20 20 20 20 20 20 7C 20 20 20      .         |   
01F5E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F5F0:  20 20 20 20 20 20 20 20 20 20 20 42 69 74 20 36               Bit 6
01F600:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
01F610:  20 20 20 20 20 20 20 20 2E 20 20 20 20 20 20 20            .       
01F620:  20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20      |             
01F630:  20 20 20 20 20 42 69 74 73 20 32 2C 36 20 20 20         Bits 2,6   
01F640:  20 42 69 74 20 35 0D 0A 20 20 20 20 20 20 20 20     Bit 5..        
01F650:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 2E 20                  . 
01F660:  20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20            |       
01F670:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F680:  20 20 20 20 20 20 20 42 69 74 20 34 0D 0A 20 20           Bit 4..  
01F690:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F6A0:  20 20 20 20 2E 20 20 20 20 20 20 20 20 20 7C 20        .         | 
01F6B0:  20 42 69 74 73 20 30 2C 34 2C 32 2C 36 20 20 20     Bits 0,4,2,6   
01F6C0:  20 42 69 74 73 20 31 2C 35 20 20 20 20 42 69 74     Bits 1,5    Bit
01F6D0:  20 33 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20     3..            
01F6E0:  20 20 20 20 20 20 20 20 20 20 2E 20 20 20 20 20              .     
01F6F0:  20 20 20 20 7C 20 20 20 20 20 20 20 20 20 20 20        |           
01F700:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F710:  20 20 20 42 69 74 20 32 0D 0A 20 20 20 20 20 20       Bit 2..      
01F720:  20 20 20 20 20 20 20 20 20 20 52 69 67 68 74 6D              Rightm
01F730:  6F 73 74 20 70 69 78 65 6C 20 7C 20 20 20 20 20    ost pixel |     
01F740:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74                 Bit
01F750:  73 20 30 2C 34 20 20 20 20 42 69 74 20 31 0D 0A    s 0,4    Bit 1..
01F760:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F770:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F780:  7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    |               
01F790:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42                   B
01F7A0:  69 74 20 30 0D 0A 0D 0A 20 20 20 20 20 20 20 54    it 0....       T
01F7B0:  68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 64 69 61    he following dia
01F7C0:  67 72 61 6D 20 69 6C 6C 75 73 74 72 61 74 65 20    gram illustrate 
01F7D0:  74 68 65 20 6D 61 70 70 69 6E 67 20 66 72 6F 6D    the mapping from
01F7E0:  20 70 69 78 65 6C 73 20 6F 6E 20 74 68 65 20 73     pixels on the s
01F7F0:  63 72 65 65 6E 0D 0A 20 20 20 20 20 20 20 74 6F    creen..       to
01F800:  20 61 64 64 72 65 73 73 65 73 20 69 6E 20 73 63     addresses in sc
01F810:  72 65 65 6E 20 6D 65 6D 6F 72 79 20 66 6F 72 20    reen memory for 
01F820:  74 68 65 20 73 69 6D 70 6C 65 20 63 61 73 65 20    the simple case 
01F830:  6F 66 20 61 20 62 61 73 65 20 61 64 64 72 65 73    of a base addres
01F840:  73 20 6F 66 0D 0A 20 20 20 20 20 20 20 23 43 30    s of..       #C0
01F850:  30 30 20 61 6E 64 20 61 6E 20 6F 66 66 73 65 74    00 and an offset
01F860:  20 6F 66 20 30 2E 0D 0A 0D 0A 20 20 20 20 20 20     of 0.....      
01F870:  20 20 20 20 20 20 20 20 20 3C 2D 2D 2D 2D 2D 2D             <------
01F880:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 20 38 30 20    ------------ 80 
01F890:  42 59 54 45 53 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    BYTES ----------
01F8A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 3E 0D 0A 20    ------------>.. 
01F8B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 5F 5F 5F                 ___
01F8C0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
01F8D0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
01F8E0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
01F8F0:  5F 5F 5F 0D 0A 20 20 20 20 20 20 20 20 20 20 5E    ___..          ^
01F900:  20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20      |             
01F910:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F920:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F930:  20 20 20 20 20 20 20 20 20 7C 20 20 5E 0D 0A 20             |  ^.. 
01F940:  20 20 20 20 20 20 20 20 20 7C 20 20 7C 20 20 23             |  |  #
01F950:  43 30 30 30 20 23 43 30 30 31 20 2E 2E 2E 2E 2E    C000 #C001 .....
01F960:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01F970:  2E 2E 2E 2E 2E 2E 20 23 43 30 34 45 20 23 43 30    ...... #C04E #C0
01F980:  34 46 20 7C 20 20 7C 0D 0A 20 20 20 20 20 20 20    4F |  |..       
01F990:  20 20 20 7C 20 20 7C 20 20 23 43 38 30 30 20 23       |  |  #C800 #
01F9A0:  43 38 30 31 20 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    C801 ...........
01F9B0:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01F9C0:  20 23 43 38 34 45 20 23 43 38 34 46 20 7C 20 31     #C84E #C84F | 1
01F9D0:  53 54 0D 0A 20 20 20 20 20 20 20 20 20 20 7C 20    ST..          | 
01F9E0:  20 7C 20 20 23 44 30 30 30 20 23 44 30 30 31 20     |  #D000 #D001 
01F9F0:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FA00:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 20 23 44 30 34    ........... #D04
01FA10:  45 20 23 44 30 34 46 20 7C 20 43 48 41 52 0D 0A    E #D04F | CHAR..
01FA20:  20 20 20 20 20 20 20 20 20 20 7C 20 20 7C 20 20              |  |  
01FA30:  23 44 38 30 30 20 23 44 38 30 31 20 2E 2E 2E 2E    #D800 #D801 ....
01FA40:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FA50:  2E 2E 2E 2E 2E 2E 2E 20 23 44 38 34 45 20 23 44    ....... #D84E #D
01FA60:  38 34 46 20 7C 20 52 4F 57 0D 0A 20 20 20 20 20    84F | ROW..     
01FA70:  20 20 20 20 20 7C 20 20 7C 20 20 20 20 20 20 20         |  |       
01FA80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FA90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FAA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C                   |
01FAB0:  20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 7C      |..          |
01FAC0:  20 20 7C 20 20 23 46 30 30 30 20 23 46 30 30 31      |  #F000 #F001
01FAD0:  20 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E     ...............
01FAE0:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 20 23 46 30    ............ #F0
01FAF0:  34 45 20 23 46 30 34 46 20 7C 20 20 7C 0D 0A 20    4E #F04F |  |.. 
01FB00:  20 20 20 20 20 20 20 20 20 7C 20 20 7C 20 20 23             |  |  #
01FB10:  46 38 30 30 20 23 46 38 30 31 20 2E 2E 2E 2E 2E    F800 #F801 .....
01FB20:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FB30:  2E 2E 2E 2E 2E 2E 20 23 46 38 34 45 20 23 46 38    ...... #F84E #F8
01FB40:  34 46 20 7C 20 20 56 0D 0A 20 20 20 20 20 20 20    4F |  V..       
01FB50:  20 20 20 7C 20 20 7C 20 20 23 43 30 35 30 20 23       |  |  #C050 #
01FB60:  43 30 35 31 20 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    C051 ...........
01FB70:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FB80:  20 23 43 30 39 45 20 23 43 30 39 46 20 7C 0D 0A     #C09E #C09F |..
01FB90:  20 20 20 20 20 20 20 20 20 20 7C 20 20 7C 20 20              |  |  
01FBA0:  23 43 38 35 30 20 23 43 38 35 31 20 2E 2E 2E 2E    #C850 #C851 ....
01FBB0:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FBC0:  2E 2E 2E 2E 2E 2E 2E 20 23 43 38 39 45 20 23 43    ....... #C89E #C
01FBD0:  38 39 46 20 7C 0D 0A 20 20 20 20 20 20 20 20 20    89F |..         
01FBE0:  20 7C 20 20 7C 20 20 20 20 20 20 20 20 20 20 20     |  |           
01FBF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FC00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FC10:  20 20 20 20 20 20 20 20 20 20 20 7C 0D 0A 20 20               |..  
01FC20:  20 20 20 20 20 32 30 30 20 20 20 7C 2E 2E 2E 2E         200   |....
01FC30:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FC40:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FC50:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FC60:  2E 2E 7C 0D 0A 20 20 20 20 20 20 20 50 49 58 45    ..|..       PIXE
01FC70:  4C 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20    L |             
01FC80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FC90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FCA0:  20 20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20             |..    
01FCB0:  20 20 20 4C 49 4E 45 53 20 7C 20 20 20 20 20 20       LINES |      
01FCC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FCD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FCE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FCF0:  7C 0D 0A 20 20 20 20 20 20 20 20 20 20 7C 20 20    |..          |  
01FD00:  7C 20 20 23 46 46 33 30 20 23 46 46 33 31 20 2E    |  #FF30 #FF31 .
01FD10:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FD20:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 20 23 46 46 37 45    .......... #FF7E
01FD30:  20 23 46 46 37 46 20 7C 0D 0A 20 20 20 20 20 20     #FF7F |..      
01FD40:  20 20 20 20 7C 20 20 7C 20 20 23 43 37 38 30 20        |  |  #C780 
01FD50:  23 43 37 38 31 20 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    #C781 ..........
01FD60:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FD70:  2E 20 23 43 37 43 45 20 23 43 37 43 46 20 7C 20    . #C7CE #C7CF | 
01FD80:  20 5E 0D 0A 20 20 20 20 20 20 20 20 20 20 7C 20     ^..          | 
01FD90:  20 7C 20 20 23 43 46 38 30 20 23 43 46 38 31 20     |  #CF80 #CF81 
01FDA0:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FDB0:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 20 23 43 46 43    ........... #CFC
01FDC0:  45 20 23 43 46 43 46 20 7C 20 20 7C 0D 0A 20 20    E #CFCF |  |..  
01FDD0:  20 20 20 20 20 20 20 20 7C 20 20 7C 20 20 20 20            |  |    
01FDE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FDF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FE00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FE10:  20 20 7C 20 32 35 74 68 0D 0A 20 20 20 20 20 20      | 25th..      
01FE20:  20 20 20 20 7C 20 20 7C 2E 2E 2E 2E 2E 2E 2E 2E        |  |........
01FE30:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FE40:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FE50:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 7C 20    ..............| 
01FE60:  43 48 41 52 0D 0A 20 20 20 20 20 20 20 20 20 20    CHAR..          
01FE70:  7C 20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20    |  |            
01FE80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FE90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FEA0:  20 20 20 20 20 20 20 20 20 20 7C 20 52 4F 57 0D              | ROW.
01FEB0:  0A 20 20 20 20 20 20 20 20 20 20 7C 20 20 7C 20    .          |  | 
01FEC0:  20 23 46 37 38 30 20 23 46 37 38 31 20 2E 2E 2E     #F780 #F781 ...
01FED0:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FEE0:  2E 2E 2E 2E 2E 2E 2E 2E 20 23 46 37 43 45 20 23    ........ #F7CE #
01FEF0:  46 37 43 46 20 7C 20 20 7C 0D 0A 20 20 20 20 20    F7CF |  |..     
01FF00:  20 20 20 20 20 7C 20 20 7C 20 20 23 46 46 38 30         |  |  #FF80
01FF10:  20 23 46 46 38 31 20 2E 2E 2E 2E 2E 2E 2E 2E 2E     #FF81 .........
01FF20:  2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E 2E    ................
01FF30:  2E 2E 20 23 46 46 43 45 20 23 46 46 43 46 20 7C    .. #FFCE #FFCF |
01FF40:  20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 56      |..          V
01FF50:  20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F      |_____________
01FF60:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
01FF70:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
01FF80:  5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 20 20 56 0D 0A 0D    _________|  V...
01FF90:  0A 20 20 20 20 20 20 20 23 43 37 44 30 2E 2E 23    .       #C7D0..#
01FFA0:  43 37 46 46 2C 20 23 43 46 44 30 2E 2E 23 43 46    C7FF, #CFD0..#CF
01FFB0:  46 46 2C 20 2E 2E 2E 20 2C 20 23 46 46 44 30 2E    FF, ... , #FFD0.
01FFC0:  2E 23 46 46 46 46 20 61 72 65 20 75 6E 75 73 65    .#FFFF are unuse
01FFD0:  64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 4F 6E 20    d.....       On 
01FFE0:  74 68 65 20 43 50 43 36 31 32 38 20 74 68 65 20    the CPC6128 the 
01FFF0:  62 61 73 65 20 61 64 64 72 65 73 73 20 73 65 74    base address set
020000:  73 20 77 68 69 63 68 20 62 6C 6F 63 6B 20 77 69    s which block wi
020010:  6C 6C 20 62 65 20 75 73 65 64 20 66 6F 72 20 20    ll be used for  
020020:  74 68 65 0D 0A 20 20 20 20 20 20 20 73 63 72 65    the..       scre
020030:  65 6E 20 6D 65 6D 6F 72 79 2E 20 20 42 61 73 65    en memory.  Base
020040:  20 20 61 64 64 72 65 73 73 65 73 20 20 6F 66 20      addresses  of 
020050:  20 23 30 30 30 30 2C 20 20 23 34 30 30 30 2C 20     #0000,  #4000, 
020060:  20 23 38 30 30 30 20 20 61 6E 64 20 20 23 43 30     #8000  and  #C0
020070:  30 30 0D 0A 20 20 20 20 20 20 20 63 6F 72 72 65    00..       corre
020080:  73 70 6F 6E 64 20 74 6F 20 62 6C 6F 63 6B 73 20    spond to blocks 
020090:  30 2C 20 31 2C 20 32 2C 20 61 6E 64 20 33 2E 20    0, 1, 2, and 3. 
0200A0:  49 74 20 69 73 20 6E 6F 74 20 70 6F 73 73 69 62    It is not possib
0200B0:  6C 65 20 66 6F 72 20 74 68 65 20 73 63 72 65 65    le for the scree
0200C0:  6E 0D 0A 20 20 20 20 20 20 20 6D 65 6D 6F 72 79    n..       memory
0200D0:  20 74 6F 20 62 65 20 6C 6F 63 61 74 65 64 20 69     to be located i
0200E0:  6E 20 62 6C 6F 63 6B 73 20 34 2E 2E 2E 37 2E 20    n blocks 4...7. 
0200F0:  57 68 65 72 65 20 74 68 65 20 62 6C 6F 63 6B 20    Where the block 
020100:  62 65 69 6E 67 20 20 75 73 65 64 20 20 66 6F 72    being  used  for
020110:  0D 0A 20 20 20 20 20 20 20 73 63 72 65 65 6E 20    ..       screen 
020120:  6D 65 6D 6F 72 79 20 61 63 74 75 61 6C 6C 79 20    memory actually 
020130:  61 70 70 65 61 72 73 20 69 6E 20 74 68 65 20 6D    appears in the m
020140:  65 6D 6F 72 79 20 6D 61 70 20 64 65 70 65 6E 64    emory map depend
020150:  73 20 6F 6E 20 20 74 68 65 20 20 62 61 6E 6B 0D    s on  the  bank.
020160:  0A 20 20 20 20 20 20 20 73 77 69 74 63 68 69 6E    .       switchin
020170:  67 20 28 73 65 65 20 73 65 63 74 69 6F 6E 20 32    g (see section 2
020180:  2E 35 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41    .5).....       A
020190:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
0201A0:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
0201B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0201C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
0201D0:  65 20 36 2E 34 0D 0A 1A 63 73 20 56 44 55 73 20    e 6.4...cs VDUs 
0201E0:  20 74 6F 20 20 61 63 63 65 73 73 20 20 74 68 65     to  access  the
0201F0:  0D 0A 20 20 20 20 20 20 20 68 61 72 64 77 61 72    ..       hardwar
020200:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
020210:  1B 00 00 00 02 09 50 E5 1B 00 C1 02 00 00 00 02    ......P.........
020220:  1B 00 C2 02 00 00 00 02 1B 00 C3 02 00 00 00 02    ................
020230:  1B 00 C4 02 00 00 00 02 1B 00 C5 02 00 00 00 02    ................
020240:  1B 00 C6 02 00 00 00 02 1B 00 C7 02 00 00 00 02    ................
020250:  1B 00 C8 02 00 00 00 02 1B 00 C9 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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0203A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0203B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0203C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0203D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0203E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0203F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0204A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0204B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0204C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0204D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0204E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0204F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
020500:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 37    ........       7
020510:  20 54 68 65 20 53 6F 75 6E 64 20 4D 61 6E 61 67     The Sound Manag
020520:  65 72 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    er.....       Th
020530:  65 20 53 6F 75 6E 64 20 4D 61 6E 61 67 65 72 20    e Sound Manager 
020540:  20 64 65 61 6C 73 20 20 77 69 74 68 20 20 74 68     deals  with  th
020550:  65 20 20 73 6F 75 6E 64 20 20 63 68 69 70 2E 20    e  sound  chip. 
020560:  20 49 74 20 20 61 6C 6C 6F 77 73 20 20 76 61 72     It  allows  var
020570:  69 6F 75 73 0D 0A 20 20 20 20 20 20 20 65 6E 76    ious..       env
020580:  65 6C 6F 70 65 73 20 61 6E 64 20 73 6F 75 6E 64    elopes and sound
020590:  73 20 74 6F 20 62 65 20 73 65 74 20 75 70 20 61    s to be set up a
0205A0:  6E 64 20 20 70 6C 61 79 65 64 20 20 75 6E 64 65    nd  played  unde
0205B0:  72 20 20 63 6F 6E 74 72 6F 6C 20 20 6F 66 20 20    r  control  of  
0205C0:  74 68 65 0D 0A 20 20 20 20 20 20 20 75 73 65 72    the..       user
0205D0:  2E 20 4D 6F 73 74 20 6F 66 20 74 68 65 20 63 6F    . Most of the co
0205E0:  6E 74 72 6F 6C 20 69 73 20 61 63 68 69 65 76 65    ntrol is achieve
0205F0:  64 20 75 73 69 6E 67 20 73 6F 66 74 77 61 72 65    d using software
020600:  20 72 61 74 68 65 72 20 20 74 68 61 6E 20 20 74     rather  than  t
020610:  68 65 0D 0A 20 20 20 20 20 20 20 73 6F 75 6E 64    he..       sound
020620:  20 63 68 69 70 20 68 61 72 64 77 61 72 65 2E 0D     chip hardware..
020630:  0A 0D 0A 20 20 20 20 20 20 20 37 2E 31 20 54 68    ...       7.1 Th
020640:  65 20 53 6F 75 6E 64 20 43 68 69 70 2E 0D 0A 0D    e Sound Chip....
020650:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 73 6F    ...       The so
020660:  75 6E 64 20 63 68 69 70 20 75 73 65 64 20 69 73    und chip used is
020670:  20 74 68 65 20 47 65 6E 65 72 61 6C 20 20 49 6E     the General  In
020680:  73 74 72 75 6D 65 6E 74 73 20 20 41 59 2D 33 2D    struments  AY-3-
020690:  38 39 31 32 2E 20 20 54 68 69 73 20 20 68 61 73    8912.  This  has
0206A0:  0D 0A 20 20 20 20 20 20 20 74 68 72 65 65 20 63    ..       three c
0206B0:  68 61 6E 6E 65 6C 73 20 20 61 6E 64 20 20 61 20    hannels  and  a 
0206C0:  20 70 73 65 75 64 6F 2D 72 61 6E 64 6F 6D 20 20     pseudo-random  
0206D0:  6E 6F 69 73 65 20 20 67 65 6E 65 72 61 74 6F 72    noise  generator
0206E0:  20 20 74 68 61 74 20 20 63 61 6E 20 20 62 65 0D      that  can  be.
0206F0:  0A 20 20 20 20 20 20 20 63 6F 6E 6E 65 63 74 65    .       connecte
020700:  64 20 74 6F 20 61 6E 79 20 6F 66 20 74 68 65 20    d to any of the 
020710:  63 68 61 6E 6E 65 6C 73 2E 20 54 68 65 20 63 68    channels. The ch
020720:  69 70 20 68 61 73 20 20 61 20 20 6C 69 6D 69 74    ip has  a  limit
020730:  65 64 20 20 6E 75 6D 62 65 72 20 20 6F 66 0D 0A    ed  number  of..
020740:  20 20 20 20 20 20 20 61 6D 70 6C 69 74 75 64 65           amplitude
020750:  20 65 6E 76 65 6C 6F 70 65 73 20 61 76 61 69 6C     envelopes avail
020760:  61 62 6C 65 20 28 20 73 65 65 20 41 70 70 65 6E    able ( see Appen
020770:  64 69 78 20 49 58 20 20 29 20 20 62 75 74 20 20    dix IX  )  but  
020780:  74 68 65 20 20 73 6F 66 74 77 61 72 65 0D 0A 20    the  software.. 
020790:  20 20 20 20 20 20 65 6E 76 65 6C 6F 70 69 6E 67          enveloping
0207A0:  2C 20 64 65 73 63 72 69 62 65 64 20 62 65 6C 6F    , described belo
0207B0:  77 2C 20 63 61 6E 20 61 63 68 69 65 76 65 20 20    w, can achieve  
0207C0:  61 6C 6C 20 20 74 68 61 74 20 20 74 68 65 20 20    all  that  the  
0207D0:  68 61 72 64 77 61 72 65 20 20 69 73 0D 0A 20 20    hardware  is..  
0207E0:  20 20 20 20 20 63 61 70 61 62 6C 65 20 6F 66 2C         capable of,
0207F0:  20 61 6E 64 20 6D 6F 72 65 2E 20 54 6F 6E 65 20     and more. Tone 
020800:  65 6E 76 65 6C 6F 70 69 6E 67 20 69 73 20 20 61    enveloping is  a
020810:  6C 6C 20 20 64 6F 6E 65 20 20 62 79 20 20 74 68    ll  done  by  th
020820:  65 20 20 73 6F 66 74 77 61 72 65 0D 0A 20 20 20    e  software..   
020830:  20 20 20 20 74 68 65 72 65 20 69 73 20 6E 6F 20        there is no 
020840:  68 61 72 64 77 61 72 65 20 73 75 70 70 6F 72 74    hardware support
020850:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
020860:  65 20 73 6F 75 6E 64 20 67 65 6E 65 72 61 74 65    e sound generate
020870:  64 20 62 79 20 74 68 65 20 63 68 69 70 20 75 73    d by the chip us
020880:  65 73 20 73 71 75 61 72 65 20 77 61 76 65 66 6F    es square wavefo
020890:  72 6D 73 2E 20 54 68 65 72 65 20 69 73 20 6E 6F    rms. There is no
0208A0:  20 77 61 79 0D 0A 20 20 20 20 20 20 20 74 6F 20     way..       to 
0208B0:  67 65 6E 65 72 61 74 65 20 61 6E 79 20 6F 74 68    generate any oth
0208C0:  65 72 20 77 61 76 65 66 6F 72 6D 2E 0D 0A 0D 0A    er waveform.....
0208D0:  0D 0A 20 20 20 20 20 20 20 49 74 20 69 73 20 70    ..       It is p
0208E0:  6F 73 73 69 62 6C 65 20 74 6F 20 61 63 63 65 73    ossible to acces
0208F0:  73 20 74 68 65 20 73 6F 75 6E 64 20 63 68 69 70    s the sound chip
020900:  20 64 69 72 65 63 74 6C 79 20 73 68 6F 75 6C 64     directly should
020910:  20 74 68 65 20 6E 65 65 64 20 61 72 69 73 65 0D     the need arise.
020920:  0A 20 20 20 20 20 20 20 48 6F 77 65 76 65 72 2C    .       However,
020930:  20 74 68 65 20 72 6F 75 74 69 6E 65 20 4D 43 20     the routine MC 
020940:  53 4F 55 4E 44 20 52 45 47 49 53 54 45 52 20 73    SOUND REGISTER s
020950:  68 6F 75 6C 64 20 20 62 65 20 20 75 73 65 64 20    hould  be  used 
020960:  20 74 6F 20 20 77 72 69 74 65 20 20 74 6F 0D 0A     to  write  to..
020970:  20 20 20 20 20 20 20 72 65 67 69 73 74 65 72 73           registers
020980:  20 6F 66 20 74 68 65 20 73 6F 75 6E 64 20 63 68     of the sound ch
020990:  69 70 2E 20 54 68 69 73 20 69 73 20 62 65 63 61    ip. This is beca
0209A0:  75 73 65 20 74 68 65 20 6B 65 79 62 6F 61 72 64    use the keyboard
0209B0:  20 69 73 20 20 61 74 74 61 63 68 65 64 0D 0A 20     is  attached.. 
0209C0:  20 20 20 20 20 20 74 6F 20 74 68 65 20 49 2F 4F          to the I/O
0209D0:  20 70 6F 72 74 20 6F 66 20 74 68 65 20 73 6F 75     port of the sou
0209E0:  6E 64 20 63 68 69 70 20 61 6E 64 20 74 68 65 20    nd chip and the 
0209F0:  20 6B 65 79 62 6F 61 72 64 20 20 73 63 61 6E 6E     keyboard  scann
020A00:  69 6E 67 20 20 72 6F 75 74 69 6E 65 0D 0A 20 20    ing  routine..  
020A10:  20 20 20 20 20 65 78 70 65 63 74 73 20 74 6F 20         expects to 
020A20:  66 69 6E 64 20 74 68 65 20 73 6F 75 6E 64 20 63    find the sound c
020A30:  68 69 70 20 69 6E 20 61 20 73 74 61 6E 64 61 72    hip in a standar
020A40:  64 20 73 74 61 74 65 20 28 20 69 2E 65 2E 20 6E    d state ( i.e. n
020A50:  6F 74 20 69 6E 20 20 75 73 65 29 0D 0A 20 20 20    ot in  use)..   
020A60:  20 20 20 20 41 6C 73 6F 2C 20 74 68 65 72 65 20        Also, there 
020A70:  61 72 65 20 74 69 6D 69 6E 67 20 63 6F 6E 73 74    are timing const
020A80:  72 61 69 6E 74 73 20 6F 6E 20 61 63 63 65 73 73    raints on access
020A90:  65 73 20 74 6F 20 20 74 68 65 20 20 63 68 69 70    es to  the  chip
020AA0:  3A 75 73 69 6E 67 20 20 4D 43 0D 0A 20 20 20 20    :using  MC..    
020AB0:  20 20 20 53 4F 55 4E 44 20 52 45 47 49 53 54 45       SOUND REGISTE
020AC0:  52 20 77 69 6C 6C 20 61 76 6F 69 64 20 63 6F 6E    R will avoid con
020AD0:  73 69 64 65 72 61 74 69 6F 6E 20 6F 66 20 74 68    sideration of th
020AE0:  65 73 65 20 64 65 74 61 69 6C 73 2E 0D 0A 0D 0A    ese details.....
020AF0:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 73 6F 75    ..       The sou
020B00:  6E 64 20 63 68 69 70 20 68 61 73 20 74 68 72 65    nd chip has thre
020B10:  65 20 69 6E 64 65 70 65 6E 64 65 6E 74 20 73 6F    e independent so
020B20:  75 6E 64 20 63 68 61 6E 6E 65 6C 73 2E 20 54 68    und channels. Th
020B30:  65 20 6F 75 74 70 75 74 73 20 20 66 72 6F 6D 0D    e outputs  from.
020B40:  0A 20 20 20 20 20 20 20 74 68 65 73 65 20 61 72    .       these ar
020B50:  65 20 6D 69 78 65 64 20 74 6F 67 65 74 68 65 72    e mixed together
020B60:  20 74 6F 20 66 6F 72 6D 20 74 77 6F 20 73 74 65     to form two ste
020B70:  72 65 6F 20 63 68 61 6E 6E 65 6C 73 20 2D 20 73    reo channels - s
020B80:  6F 75 6E 64 20 20 63 68 61 6E 6E 65 6C 73 0D 0A    ound  channels..
020B90:  20 20 20 20 20 20 20 41 20 61 6E 64 20 42 20 61           A and B a
020BA0:  72 65 20 6D 69 78 65 64 20 74 6F 20 66 6F 72 6D    re mixed to form
020BB0:  20 6F 6E 65 20 73 74 65 72 65 6F 20 63 68 61 6E     one stereo chan
020BC0:  6E 65 6C 20 61 6E 64 20 73 6F 75 6E 64 20 63 68    nel and sound ch
020BD0:  61 6E 6E 65 6C 73 20 42 20 20 61 6E 64 0D 0A 20    annels B  and.. 
020BE0:  20 20 20 20 20 20 43 20 61 72 65 20 6D 69 78 65          C are mixe
020BF0:  64 20 74 6F 20 66 6F 72 6D 20 74 68 65 20 6F 74    d to form the ot
020C00:  68 65 72 20 73 74 65 72 65 6F 20 20 63 68 61 6E    her stereo  chan
020C10:  6E 65 6C 2E 20 20 54 68 65 20 20 73 74 65 72 65    nel.  The  stere
020C20:  6F 20 20 73 6F 75 6E 64 20 20 69 73 0D 0A 20 20    o  sound  is..  
020C30:  20 20 20 20 20 61 76 61 69 6C 61 62 6C 65 20 6F         available o
020C40:  6E 20 74 68 65 20 6F 75 74 70 75 74 20 6A 61 63    n the output jac
020C50:  6B 20 6F 6E 20 74 68 65 20 20 62 61 63 6B 20 20    k on the  back  
020C60:  6F 66 20 20 74 68 65 20 20 6D 61 63 68 69 6E 65    of  the  machine
020C70:  2E 20 20 48 6F 77 65 76 65 72 2C 0D 0A 20 20 20    .  However,..   
020C80:  20 20 20 20 74 68 65 72 65 20 69 73 20 6F 6E 6C        there is onl
020C90:  79 20 61 20 73 69 6E 67 6C 65 20 69 6E 74 65 72    y a single inter
020CA0:  6E 61 6C 20 73 70 65 61 6B 65 72 20 61 6E 64 20    nal speaker and 
020CB0:  73 6F 20 74 68 65 20 74 77 6F 20 73 74 65 72 65    so the two stere
020CC0:  6F 20 63 68 61 6E 6E 65 6C 73 0D 0A 20 20 20 20    o channels..    
020CD0:  20 20 20 61 72 65 20 6D 69 78 65 64 20 74 6F 67       are mixed tog
020CE0:  65 74 68 65 72 20 74 6F 20 20 64 72 69 76 65 20    ether to  drive 
020CF0:  20 74 68 69 73 2E 20 20 54 68 65 20 20 76 6F 6C     this.  The  vol
020D00:  75 6D 65 20 20 6F 66 20 20 73 6F 75 6E 64 20 20    ume  of  sound  
020D10:  66 72 6F 6D 20 20 74 68 65 0D 0A 20 20 20 20 20    from  the..     
020D20:  20 20 69 6E 74 65 72 6E 61 6C 20 73 70 65 61 6B      internal speak
020D30:  65 72 20 63 61 6E 20 62 65 20 63 6F 6E 74 72 6F    er can be contro
020D40:  6C 6C 65 64 20 62 79 20 74 68 65 20 76 6F 6C 75    lled by the volu
020D50:  6D 65 20 6B 6E 6F 62 20 6F 6E 20 74 68 65 20 20    me knob on the  
020D60:  73 69 64 65 20 20 6F 66 0D 0A 20 20 20 20 20 20    side  of..      
020D70:  20 74 68 65 20 6D 61 63 68 69 6E 65 20 6E 65 61     the machine nea
020D80:  72 20 74 68 65 20 6F 6E 2F 6F 66 66 20 73 77 69    r the on/off swi
020D90:  74 63 68 2E 20 54 68 69 73 20 63 6F 6E 74 72 6F    tch. This contro
020DA0:  6C 20 6F 76 65 72 72 69 64 65 73 20 20 74 68 65    l overrides  the
020DB0:  20 20 6F 74 68 65 72 0D 0A 20 20 20 20 20 20 20      other..       
020DC0:  76 6F 6C 75 6D 65 20 6D 65 74 68 6F 64 73 20 64    volume methods d
020DD0:  65 73 63 72 69 62 65 64 20 62 65 6C 6F 77 2E 0D    escribed below..
020DE0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 37 2E 32 20    .....       7.2 
020DF0:  54 6F 6E 65 20 50 65 72 69 6F 64 73 20 61 6E 64    Tone Periods and
020E00:  20 41 6D 70 6C 69 74 75 64 65 73 2E 0D 0A 0D 0A     Amplitudes.....
020E10:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 73 6F 75    ..       The sou
020E20:  6E 64 20 63 68 69 70 20 61 6C 6C 6F 77 73 20 31    nd chip allows 1
020E30:  36 20 64 69 66 66 65 72 65 6E 74 20 20 61 6D 70    6 different  amp
020E40:  6C 69 74 75 64 65 73 20 20 69 6E 20 20 74 68 65    litudes  in  the
020E50:  20 20 72 61 6E 67 65 20 20 30 2E 2E 31 35 2E 0D      range  0..15..
020E60:  0A 20 20 20 20 20 20 20 41 6D 70 6C 69 74 75 64    .       Amplitud
020E70:  65 20 30 20 69 73 20 6E 6F 20 73 6F 75 6E 64 20    e 0 is no sound 
020E80:  61 74 20 61 6C 6C 2C 20 61 6D 70 6C 69 74 75 64    at all, amplitud
020E90:  65 20 31 35 20 69 73 20 6D 61 78 69 6D 75 6D 20    e 15 is maximum 
020EA0:  76 6F 6C 75 6D 65 2E 0D 0A 0D 0A 0D 0A 20 20 20    volume.......   
020EB0:  20 20 20 20 54 68 65 20 70 69 74 63 68 20 6F 66        The pitch of
020EC0:  20 61 20 6E 6F 74 65 20 74 6F 20 62 65 20 67 65     a note to be ge
020ED0:  6E 65 72 61 74 65 64 20 69 73 20 73 70 65 63 69    nerated is speci
020EE0:  66 69 65 64 20 62 79 20 74 68 65 20 70 65 72 69    fied by the peri
020EF0:  6F 64 20 6F 66 20 20 74 68 65 0D 0A 20 20 20 20    od of  the..    
020F00:  20 20 20 6E 6F 74 65 20 72 61 74 68 65 72 20 74       note rather t
020F10:  68 61 6E 20 62 79 20 74 68 65 20 66 72 65 71 75    han by the frequ
020F20:  65 6E 63 79 2E 20 54 68 69 73 20 70 65 72 69 6F    ency. This perio
020F30:  64 20 69 73 20 67 69 76 65 6E 20 69 6E 20 6D 69    d is given in mi
020F40:  63 72 6F 73 65 63 6F 6E 64 0D 0A 20 20 20 20 20    crosecond..     
020F50:  20 20 75 6E 69 74 73 2E 20 54 68 75 73 2C 20 74      units. Thus, t
020F60:  68 65 20 74 6F 6E 65 20 70 65 72 69 6F 64 20 73    he tone period s
020F70:  70 65 63 69 66 69 65 64 20 61 6E 64 20 74 68 65    pecified and the
020F80:  20 66 72 65 71 75 65 6E 63 79 20 6F 66 20 20 74     frequency of  t
020F90:  68 65 20 20 74 6F 6E 65 0D 0A 20 20 20 20 20 20    he  tone..      
020FA0:  20 67 65 6E 65 72 61 74 65 64 20 61 72 65 20 72     generated are r
020FB0:  65 6C 61 74 65 64 20 62 79 20 74 68 65 20 66 6F    elated by the fo
020FC0:  72 6D 75 6C 61 20 3A 0D 0A 0D 0A 0D 0A 20 20 20    rmula :......   
020FD0:  20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43 34        AMSTRAD CPC4
020FE0:  36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D    64/664/6128 FIRM
020FF0:  57 41 52 45 20 20 20 20 20 20 20 20 20 20 20 20    WARE            
021000:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
021010:  20 20 70 61 67 65 20 37 2E 31 0D 0A 0D 0A 0D 0A      page 7.1......
021020:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20    ........        
021030:  20 20 20 20 20 20 20 20 54 6F 6E 65 20 70 65 72            Tone per
021040:  69 6F 64 20 3D 20 31 32 35 30 30 30 2F 46 72 65    iod = 125000/Fre
021050:  71 75 65 6E 63 79 0D 0A 0D 0A 0D 0A 20 20 20 20    quency......    
021060:  20 20 20 53 65 65 20 41 70 70 65 6E 64 69 78 20       See Appendix 
021070:  56 49 49 49 20 66 6F 72 20 61 20 6C 69 73 74 20    VIII for a list 
021080:  6F 66 20 74 68 65 20 73 75 67 67 65 73 74 65 64    of the suggested
021090:  20 70 65 72 69 6F 64 73 20 20 66 6F 72 20 20 67     periods  for  g
0210A0:  65 6E 65 72 61 74 69 6E 67 0D 0A 20 20 20 20 20    enerating..     
0210B0:  20 20 6D 75 73 69 63 61 6C 20 6E 6F 74 65 73 2E      musical notes.
0210C0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 37 2E 33    ......       7.3
0210D0:  20 45 6E 76 65 6C 6F 70 69 6E 67 2E 0D 0A 0D 0A     Enveloping.....
0210E0:  0D 0A 20 20 20 20 20 20 20 52 65 61 6C 20 73 6F    ..       Real so
0210F0:  75 6E 64 73 20 72 61 72 65 6C 79 20 20 68 61 76    unds rarely  hav
021100:  65 20 20 61 20 20 63 6F 6E 73 74 61 6E 74 20 20    e  a  constant  
021110:  76 6F 6C 75 6D 65 2E 20 20 45 6E 76 65 6C 6F 70    volume.  Envelop
021120:  69 6E 67 20 20 61 6C 6C 6F 77 73 20 20 61 6E 0D    ing  allows  an.
021130:  0A 20 20 20 20 20 20 20 61 70 70 72 6F 78 69 6D    .       approxim
021140:  61 74 69 6F 6E 20 74 6F 20 74 68 65 20 76 61 72    ation to the var
021150:  69 61 74 69 6F 6E 20 69 6E 20 76 6F 6C 75 6D 65    iation in volume
021160:  20 6F 66 20 72 65 61 6C 20 73 6F 75 6E 64 20 74     of real sound t
021170:  6F 20 62 65 20 6D 61 64 65 2E 20 54 68 65 0D 0A    o be made. The..
021180:  20 20 20 20 20 20 20 73 6F 75 6E 64 20 69 73 20           sound is 
021190:  73 70 6C 69 74 20 69 6E 74 6F 20 61 20 6E 75 6D    split into a num
0211A0:  62 65 72 20 6F 66 20 73 65 63 74 69 6F 6E 73 20    ber of sections 
0211B0:  65 61 63 68 20 6F 66 20 20 77 68 69 63 68 20 20    each of  which  
0211C0:  63 61 6E 20 20 69 6E 63 72 65 61 73 65 0D 0A 20    can  increase.. 
0211D0:  20 20 20 20 20 20 74 68 65 20 76 6F 6C 75 6D 65          the volume
0211E0:  2C 20 64 65 63 72 65 61 73 65 20 74 68 65 20 76    , decrease the v
0211F0:  6F 6C 75 6D 65 2C 20 6F 72 20 6B 65 65 70 20 69    olume, or keep i
021200:  74 20 63 6F 6E 73 74 61 6E 74 2E 20 20 54 68 65    t constant.  The
021210:  20 20 6C 65 6E 67 74 68 20 20 6F 66 0D 0A 20 20      length  of..  
021220:  20 20 20 20 20 74 68 65 73 65 20 73 65 63 74 69         these secti
021230:  6F 6E 73 20 63 61 6E 20 62 65 20 76 61 72 69 65    ons can be varie
021240:  64 2C 20 61 73 20 63 61 6E 20 74 68 65 20 72 61    d, as can the ra
021250:  74 65 20 6F 66 20 69 6E 63 72 65 61 73 65 20 6F    te of increase o
021260:  72 20 20 64 65 63 72 65 61 73 65 0D 0A 20 20 20    r  decrease..   
021270:  20 20 20 20 69 6E 20 76 6F 6C 75 6D 65 2E 20 46        in volume. F
021280:  6F 72 20 65 78 61 6D 70 6C 65 2C 20 61 20 6E 6F    or example, a no
021290:  74 65 20 67 65 6E 65 72 61 74 65 64 20 62 79 20    te generated by 
0212A0:  61 20 6D 75 73 69 63 61 6C 20 20 69 6E 73 74 72    a musical  instr
0212B0:  75 6D 65 6E 74 20 20 6D 61 79 0D 0A 20 20 20 20    ument  may..    
0212C0:  20 20 20 62 65 20 63 6F 6E 73 69 64 65 72 65 64       be considered
0212D0:  20 74 6F 20 68 61 76 65 20 33 20 73 65 63 74 69     to have 3 secti
0212E0:  6F 6E 73 20 61 73 20 66 6F 6C 6C 6F 77 73 20 3A    ons as follows :
0212F0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 74 74    ......       Att
021300:  61 63 6B 3A 20 54 68 65 20 76 6F 6C 75 6D 65 20    ack: The volume 
021310:  6F 66 20 74 68 65 20 6E 6F 74 65 20 72 69 73 65    of the note rise
021320:  73 20 72 61 70 69 64 6C 79 20 74 6F 20 69 74 73    s rapidly to its
021330:  20 70 65 61 6B 2E 0D 0A 0D 0A 0D 0A 20 20 20 20     peak.......    
021340:  20 20 20 53 75 73 74 61 69 6E 3A 20 54 68 65 20       Sustain: The 
021350:  76 6F 6C 75 6D 65 20 6F 66 20 74 68 65 20 6E 6F    volume of the no
021360:  74 65 20 72 65 6D 61 69 6E 73 20 20 63 6F 6E 73    te remains  cons
021370:  74 61 6E 74 20 20 77 68 69 6C 65 20 20 74 68 65    tant  while  the
021380:  20 20 6E 6F 74 65 20 69 73 0D 0A 20 20 20 20 20      note is..     
021390:  20 20 20 20 20 20 20 20 20 20 20 70 6C 61 79 65               playe
0213A0:  64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 44    d.......       D
0213B0:  65 63 61 79 3A 20 20 54 68 65 20 76 6F 6C 75 6D    ecay:  The volum
0213C0:  65 20 66 61 6C 6C 73 20 61 77 61 79 20 73 6C 6F    e falls away slo
0213D0:  77 6C 79 20 74 6F 20 7A 65 72 6F 20 61 73 20 74    wly to zero as t
0213E0:  68 65 20 6E 6F 74 65 20 66 69 6E 69 73 68 65 73    he note finishes
0213F0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    .......         
021400:  20 20 20 20 20 20 20 20 20 20 20 20 20 5F 5F 5F                 ___
021410:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
021420:  5F 5F 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    __..            
021430:  20 20 20 20 20 20 20 20 20 2F 7C 20 20 20 20 20             /|     
021440:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C                   |
021450:  5C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    \..             
021460:  20 20 20 20 20 20 20 2F 20 7C 20 20 20 20 20 20           / |      
021470:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20                  | 
021480:  20 5C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20     \..            
021490:  20 20 20 20 20 20 20 2F 20 20 7C 20 20 20 20 20           /  |     
0214A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C                   |
0214B0:  20 20 20 20 5C 0D 0A 20 20 20 20 20 20 20 20 20        \..         
0214C0:  20 20 20 20 20 20 20 20 20 2F 20 20 20 7C 20 20             /   |  
0214D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0214E0:  20 20 7C 20 20 20 20 20 20 5C 0D 0A 20 20 20 20      |      \..    
0214F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 2F 20 20                 /  
021500:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
021510:  1C 00 00 00 02 09 50 E5 1C 00 C1 02 00 00 00 02    ......P.........
021520:  1C 00 C2 02 00 00 00 02 1C 00 C3 02 00 00 00 02    ................
021530:  1C 00 C4 02 00 00 00 02 1C 00 C5 02 00 00 00 02    ................
021540:  1C 00 C6 02 00 00 00 02 1C 00 C7 02 00 00 00 02    ................
021550:  1C 00 C8 02 00 00 00 02 1C 00 C9 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:  20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20      |             
021610:  20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20           |        
021620:  5C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    \..             
021630:  20 20 20 2F 20 20 20 20 20 7C 20 20 20 20 20 20       /     |      
021640:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20                  | 
021650:  20 20 20 20 20 20 20 20 20 5C 0D 0A 20 20 20 20             \..    
021660:  20 20 20 20 20 20 20 20 20 20 20 2F 20 20 20 20               /    
021670:  20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20      |             
021680:  20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20           |        
021690:  20 20 20 20 5C 0D 0A 20 20 20 20 20 20 20 20 20        \..         
0216A0:  20 20 20 20 20 2F 20 20 20 20 20 20 20 7C 20 20         /       |  
0216B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0216C0:  20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20      |             
0216D0:  20 5C 0D 0A 20 20 20 20 20 20 20 20 20 20 41 74     \..          At
0216E0:  74 61 63 6B 20 20 20 20 20 20 20 20 20 20 20 20    tack            
0216F0:  53 75 73 74 61 69 6E 20 20 20 20 20 20 20 20 20    Sustain         
021700:  20 20 20 20 44 65 63 61 79 0D 0A 0D 0A 0D 0A 20        Decay...... 
021710:  20 20 20 20 20 20 54 68 65 20 53 6F 75 6E 64 20          The Sound 
021720:  4D 61 6E 61 67 65 72 20 61 6C 6C 6F 77 73 20 74    Manager allows t
021730:  77 6F 20 74 79 70 65 73 20 6F 66 20 65 6E 76 65    wo types of enve
021740:  6C 6F 70 65 73 3A 20 20 61 6D 70 6C 69 74 75 64    lopes:  amplitud
021750:  65 20 20 65 6E 76 65 6C 6F 70 65 73 0D 0A 20 20    e  envelopes..  
021760:  20 20 20 20 20 74 6F 20 63 6F 6E 74 72 6F 6C 20         to control 
021770:  61 20 73 6F 75 6E 64 27 73 20 76 6F 6C 75 6D 65    a sound's volume
021780:  20 61 6E 64 20 74 6F 6E 65 20 65 6E 76 65 6C 6F     and tone envelo
021790:  70 65 73 20 69 74 73 20 70 69 74 63 68 20 28 20    pes its pitch ( 
0217A0:  20 74 68 65 20 20 70 69 74 63 68 0D 0A 20 20 20     the  pitch..   
0217B0:  20 20 20 20 69 73 20 76 61 72 69 65 64 20 69 6E        is varied in
0217C0:  20 6D 75 63 68 20 74 68 65 20 73 61 6D 65 20 77     much the same w
0217D0:  61 79 20 61 73 20 74 68 65 20 76 6F 6C 75 6D 65    ay as the volume
0217E0:  20 29 2E 20 54 68 65 20 75 73 65 72 20 63 61 6E     ). The user can
0217F0:  20 73 65 74 20 75 70 20 74 6F 0D 0A 20 20 20 20     set up to..    
021800:  20 20 20 31 35 20 64 69 66 66 65 72 65 6E 74 20       15 different 
021810:  65 6E 76 65 6C 6F 70 65 73 20 6F 66 20 65 61 63    envelopes of eac
021820:  68 20 74 79 70 65 2E 20 54 68 65 20 65 78 61 63    h type. The exac
021830:  74 20 20 66 6F 72 6D 61 74 73 20 20 6F 66 20 20    t  formats  of  
021840:  74 68 65 20 20 64 61 74 61 0D 0A 20 20 20 20 20    the  data..     
021850:  20 20 62 6C 6F 63 6B 20 73 70 65 63 69 66 79 69      block specifyi
021860:  6E 67 20 65 6E 76 65 6C 6F 70 65 73 20 61 72 65    ng envelopes are
021870:  20 67 69 76 65 6E 20 69 6E 20 53 4F 55 4E 44 20     given in SOUND 
021880:  41 4D 50 4C 20 45 4E 56 45 4C 4F 50 45 20 61 6E    AMPL ENVELOPE an
021890:  64 20 20 53 4F 55 4E 44 0D 0A 20 20 20 20 20 20    d  SOUND..      
0218A0:  20 54 4F 4E 45 20 45 4E 56 45 4C 4F 50 45 2E 0D     TONE ENVELOPE..
0218B0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 61 2E 20 41    .....       a. A
0218C0:  6D 70 6C 69 74 75 64 65 20 65 6E 76 65 6C 6F 70    mplitude envelop
0218D0:  65 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    es.......       
0218E0:  41 6E 20 61 6D 70 6C 69 74 75 64 65 20 65 6E 76    An amplitude env
0218F0:  65 6C 6F 70 65 20 69 73 20 75 73 65 64 20 74 6F    elope is used to
021900:  20 63 6F 6E 74 72 6F 6C 20 20 74 68 65 20 20 76     control  the  v
021910:  6F 6C 75 6D 65 20 20 61 6E 64 20 20 6C 65 6E 67    olume  and  leng
021920:  74 68 20 20 6F 66 0D 0A 20 20 20 20 20 20 20 73    th  of..       s
021930:  6F 75 6E 64 2E 20 49 74 20 63 61 6E 20 68 61 76    ound. It can hav
021940:  65 20 75 70 20 74 6F 20 66 69 76 65 20 73 65 63    e up to five sec
021950:  74 69 6F 6E 73 2E 20 45 61 63 68 20 20 73 65 63    tions. Each  sec
021960:  74 69 6F 6E 20 20 63 61 6E 20 20 62 65 20 20 65    tion  can  be  e
021970:  69 74 68 65 72 0D 0A 20 20 20 20 20 20 20 68 61    ither..       ha
021980:  72 64 77 61 72 65 20 6F 72 20 61 20 73 6F 66 74    rdware or a soft
021990:  77 61 72 65 20 73 65 63 74 69 6F 6E 2E 20 53 6F    ware section. So
0219A0:  66 74 77 61 72 65 20 73 65 63 74 69 6F 6E 73 20    ftware sections 
0219B0:  61 72 65 20 65 69 74 68 65 72 20 20 61 62 73 6F    are either  abso
0219C0:  6C 75 74 65 0D 0A 20 20 20 20 20 20 20 6F 72 20    lute..       or 
0219D0:  72 65 6C 61 74 69 76 65 2E 0D 0A 0D 0A 0D 0A 0D    relative........
0219E0:  0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20    .       AMSTRAD 
0219F0:  43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20    CPC464/664/6128 
021A00:  46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20    FIRMWARE        
021A10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
021A20:  20 20 20 20 20 20 70 61 67 65 20 37 2E 32 0D 0A          page 7.2..
021A30:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
021A40:  20 20 20 48 61 72 64 77 61 72 65 20 73 65 63 74       Hardware sect
021A50:  69 6F 6E 73 20 77 72 69 74 65 20 76 61 6C 75 65    ions write value
021A60:  73 20 69 6E 74 6F 20 74 68 65 20 73 6F 75 6E 64    s into the sound
021A70:  20 63 68 69 70 20 72 65 67 69 73 74 65 72 73 20     chip registers 
021A80:  31 31 2C 31 32 20 20 61 6E 0D 0A 20 20 20 20 20    11,12  an..     
021A90:  20 20 31 33 20 74 6F 20 73 65 74 20 75 70 20 61      13 to set up a
021AA0:  20 68 61 72 64 77 61 72 65 20 65 6E 76 65 6C 6F     hardware envelo
021AB0:  70 65 2E 20 28 20 53 65 65 20 41 70 70 65 6E 64    pe. ( See Append
021AC0:  69 78 20 49 58 20 66 6F 72 20 61 20 20 64 65 73    ix IX for a  des
021AD0:  63 72 69 70 74 69 6F 6E 0D 0A 20 20 20 20 20 20    cription..      
021AE0:  20 6F 66 20 74 68 65 20 73 6F 75 6E 64 20 63 68     of the sound ch
021AF0:  69 70 20 72 65 67 69 73 74 65 72 73 29 2E 20 47    ip registers). G
021B00:  65 6E 65 72 61 6C 6C 79 20 61 20 20 68 61 72 64    enerally a  hard
021B10:  77 61 72 65 20 20 73 65 63 74 69 6F 6E 20 20 77    ware  section  w
021B20:  69 6C 6C 20 20 62 65 0D 0A 20 20 20 20 20 20 20    ill  be..       
021B30:  66 6F 6C 6C 6F 77 65 64 20 62 79 20 61 20 73 6F    followed by a so
021B40:  66 74 77 61 72 65 20 73 65 63 74 69 6F 6E 20 74    ftware section t
021B50:  68 61 74 20 64 6F 65 73 20 6E 6F 74 68 69 6E 67    hat does nothing
021B60:  20 20 65 78 63 65 70 74 20 20 77 61 69 74 20 20      except  wait  
021B70:  66 6F 72 20 20 61 0D 0A 20 20 20 20 20 20 20 74    for  a..       t
021B80:  69 6D 65 20 6C 6F 6E 67 20 65 6E 6F 75 67 68 20    ime long enough 
021B90:  66 6F 72 20 74 68 65 20 68 61 72 64 77 61 72 65    for the hardware
021BA0:  20 65 6E 76 65 6C 6F 70 65 20 74 6F 20 6F 70 65     envelope to ope
021BB0:  72 61 74 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    rate.....       
021BC0:  41 6E 20 61 62 73 6F 6C 75 74 65 20 73 6F 66 74    An absolute soft
021BD0:  77 61 72 65 20 73 65 63 74 69 6F 6E 20 73 70 65    ware section spe
021BE0:  63 69 66 69 65 73 20 61 20 76 6F 6C 75 6D 65 20    cifies a volume 
021BF0:  74 6F 20 73 65 74 20 61 6E 64 20 61 20 20 74 69    to set and a  ti
021C00:  6D 65 20 20 74 6F 0D 0A 20 20 20 20 20 20 20 77    me  to..       w
021C10:  61 69 74 20 62 65 66 6F 72 65 20 6F 62 65 79 69    ait before obeyi
021C20:  6E 67 20 74 68 65 20 6E 65 78 74 20 73 6F 6C 75    ng the next solu
021C30:  74 69 6F 6E 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    tion.....       
021C40:  41 20 72 65 6C 61 74 69 76 65 20 73 6F 66 74 77    A relative softw
021C50:  61 72 65 20 73 65 63 74 69 6F 6E 20 73 70 65 63    are section spec
021C60:  69 66 69 65 73 20 61 6E 20 73 74 65 70 20 73 69    ifies an step si
021C70:  7A 65 2C 20 61 20 6E 75 6D 62 65 72 20 6F 66 20    ze, a number of 
021C80:  20 73 74 65 70 73 0D 0A 20 20 20 20 20 20 20 61     steps..       a
021C90:  6E 64 20 61 20 74 69 6D 65 20 74 6F 20 77 61 69    nd a time to wai
021CA0:  74 2E 20 46 6F 72 20 65 61 63 68 20 73 74 65 70    t. For each step
021CB0:  20 72 65 71 75 65 73 74 65 64 2C 20 20 74 68 65     requested,  the
021CC0:  20 20 63 75 72 72 65 6E 74 20 20 76 6F 6C 75 6D      current  volum
021CD0:  65 20 20 69 73 0D 0A 20 20 20 20 20 20 20 63 68    e  is..       ch
021CE0:  61 6E 67 65 64 20 62 79 20 74 68 65 20 67 69 76    anged by the giv
021CF0:  65 6E 20 73 74 65 70 20 73 69 7A 65 20 61 6E 64    en step size and
021D00:  20 74 68 65 6E 20 74 68 65 20 53 6F 75 6E 64 20     then the Sound 
021D10:  20 6D 61 6E 61 67 65 72 20 20 77 61 69 74 73 20     manager  waits 
021D20:  20 66 6F 72 0D 0A 20 20 20 20 20 20 20 74 68 65     for..       the
021D30:  20 67 69 76 65 6E 20 74 69 6D 65 20 61 66 74 65     given time afte
021D40:  72 20 65 61 63 68 20 73 74 65 70 20 62 65 66 6F    r each step befo
021D50:  72 65 20 6F 62 65 79 69 6E 67 20 74 68 65 20 6E    re obeying the n
021D60:  65 78 74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ext.....       A
021D70:  6D 70 6C 69 74 75 64 65 20 65 6E 76 65 6C 6F 70    mplitude envelop
021D80:  65 73 20 61 72 65 20 73 65 74 20 62 79 20 63 61    es are set by ca
021D90:  6C 6C 69 6E 67 20 53 4F 55 4E 44 20 41 4D 50 4C    lling SOUND AMPL
021DA0:  20 45 4E 56 45 4C 4F 50 45 2E 0D 0A 0D 0A 20 20     ENVELOPE.....  
021DB0:  20 20 20 20 20 62 2E 20 54 6F 6E 65 20 65 6E 76         b. Tone env
021DC0:  65 6C 6F 70 65 73 2E 0D 0A 0D 0A 20 20 20 20 20    elopes.....     
021DD0:  20 20 41 20 74 6F 6E 65 20 65 6E 76 65 6C 6F 70      A tone envelop
021DE0:  65 20 63 6F 6E 74 72 6F 6C 73 20 74 68 65 20 70    e controls the p
021DF0:  69 74 63 68 20 6F 66 20 74 68 65 20 73 6F 75 6E    itch of the soun
021E00:  64 2E 20 49 74 20 20 63 61 6E 20 20 68 61 76 65    d. It  can  have
021E10:  20 20 75 70 20 20 74 6F 0D 0A 20 20 20 20 20 20      up  to..      
021E20:  20 66 69 76 65 20 73 65 63 74 69 6F 6E 73 2E 20     five sections. 
021E30:  45 61 63 68 20 73 65 63 74 69 6F 6E 20 63 61 6E    Each section can
021E40:  20 62 65 20 65 69 74 68 65 72 20 61 6E 20 61 62     be either an ab
021E50:  73 6F 6C 75 74 65 20 20 6F 72 20 20 61 20 20 72    solute  or  a  r
021E60:  65 6C 61 74 69 76 65 0D 0A 20 20 20 20 20 20 20    elative..       
021E70:  73 65 63 74 69 6F 6E 2E 20 54 68 65 20 73 65 63    section. The sec
021E80:  74 69 6F 6E 73 20 6F 66 20 61 20 74 6F 6E 65 20    tions of a tone 
021E90:  65 6E 76 65 6C 6F 70 65 20 61 72 65 20 6E 6F 74    envelope are not
021EA0:  20 20 6E 65 63 65 73 73 61 72 69 6C 79 20 20 72      necessarily  r
021EB0:  65 6C 61 74 65 64 0D 0A 20 20 20 20 20 20 20 74    elated..       t
021EC0:  6F 20 74 68 6F 73 65 20 6F 66 20 61 6E 20 61 6D    o those of an am
021ED0:  70 6C 69 74 75 64 65 20 65 6E 76 65 6C 6F 70 65    plitude envelope
021EE0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 6E 20 61    .....       An a
021EF0:  62 73 6F 6C 75 74 65 20 73 65 63 74 69 6F 6E 20    bsolute section 
021F00:  73 70 65 63 69 66 69 65 73 20 61 20 74 6F 6E 65    specifies a tone
021F10:  20 70 65 72 69 6F 64 20 74 6F 20 73 65 74 20 61     period to set a
021F20:  6E 64 20 61 20 74 69 6D 65 20 74 6F 20 20 77 61    nd a time to  wa
021F30:  69 74 0D 0A 20 20 20 20 20 20 20 62 65 66 6F 72    it..       befor
021F40:  65 20 6F 62 65 79 69 6E 67 20 74 68 65 20 6E 65    e obeying the ne
021F50:  78 74 20 73 65 63 74 69 6F 6E 2E 0D 0A 0D 0A 20    xt section..... 
021F60:  20 20 20 20 20 20 41 20 72 65 6C 61 74 69 76 65          A relative
021F70:  20 73 65 63 74 69 6F 6E 20 73 70 65 63 69 66 69     section specifi
021F80:  65 73 20 61 6E 20 73 74 65 70 20 73 69 7A 65 2C    es an step size,
021F90:  20 61 20 6E 75 6D 62 65 72 20 20 6F 66 20 20 73     a number  of  s
021FA0:  74 65 70 73 20 20 61 6E 64 20 20 61 0D 0A 20 20    teps  and  a..  
021FB0:  20 20 20 20 20 74 69 6D 65 20 74 6F 20 77 61 69         time to wai
021FC0:  74 2E 20 46 6F 72 20 65 61 63 68 20 73 74 65 70    t. For each step
021FD0:  20 72 65 71 75 65 73 74 65 64 2C 20 20 74 68 65     requested,  the
021FE0:  20 20 63 75 72 72 65 6E 74 20 20 74 6F 6E 65 20      current  tone 
021FF0:  20 70 65 72 69 6F 64 20 20 69 73 0D 0A 20 20 20     period  is..   
022000:  20 20 20 20 63 68 61 6E 67 65 64 20 62 79 20 74        changed by t
022010:  68 65 20 67 69 76 65 6E 20 73 74 65 70 20 73 69    he given step si
022020:  7A 65 20 61 6E 64 20 74 68 65 6E 20 74 68 65 20    ze and then the 
022030:  53 6F 75 6E 64 20 20 4D 61 6E 61 67 65 72 20 20    Sound  Manager  
022040:  77 61 69 74 73 20 20 66 6F 72 0D 0A 20 20 20 20    waits  for..    
022050:  20 20 20 74 68 65 20 67 69 76 65 6E 20 74 69 6D       the given tim
022060:  65 20 61 66 74 65 72 20 65 61 63 68 20 73 74 65    e after each ste
022070:  70 20 62 65 66 6F 72 65 20 6F 62 65 79 69 6E 67    p before obeying
022080:  20 74 68 65 20 6E 65 78 74 20 73 74 65 70 2E 0D     the next step..
022090:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74    .....       If t
0220A0:  68 65 20 74 6F 6E 65 20 65 6E 76 65 6C 6F 70 65    he tone envelope
0220B0:  20 69 73 20 63 6F 6D 70 6C 65 74 65 64 20 62 65     is completed be
0220C0:  66 6F 72 65 20 74 68 65 20 20 73 6F 75 6E 64 20    fore the  sound 
0220D0:  20 64 75 72 61 74 69 6F 6E 20 20 65 78 70 69 72     duration  expir
0220E0:  65 73 0D 0A 20 20 20 20 20 20 20 28 73 65 65 20    es..       (see 
0220F0:  20 73 65 63 74 69 6F 6E 20 20 37 2E 34 66 29 20     section  7.4f) 
022100:  20 74 68 65 6E 20 20 74 68 65 20 20 66 69 6E 61     then  the  fina
022110:  6C 20 20 20 70 69 74 63 68 20 20 20 69 73 20 20    l   pitch   is  
022120:  20 68 65 6C 64 20 20 20 63 6F 6E 73 74 61 6E 74     held   constant
022130:  2E 0D 0A 20 20 20 20 20 20 20 41 6C 74 65 72 6E    ...       Altern
022140:  61 74 69 76 65 6C 79 2C 20 20 74 6F 6E 65 20 20    atively,  tone  
022150:  65 6E 76 65 6C 6F 70 65 73 20 20 63 61 6E 20 20    envelopes  can  
022160:  62 65 20 20 73 65 74 20 20 74 6F 20 20 72 65 70    be  set  to  rep
022170:  65 61 74 20 20 20 74 68 65 6D 73 65 6C 76 65 73    eat   themselves
022180:  0D 0A 20 20 20 20 20 20 20 61 75 74 6F 6D 61 74    ..       automat
022190:  69 63 61 6C 6C 79 2E 20 54 68 69 73 20 61 6C 6C    ically. This all
0221A0:  6F 77 73 20 74 72 65 6D 75 6C 6F 20 65 66 66 65    ows tremulo effe
0221B0:  63 74 73 20 74 6F 20 62 65 20 63 72 65 61 74 65    cts to be create
0221C0:  64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 6F 6E    d.....       Ton
0221D0:  65 20 65 6E 76 65 6C 6F 70 65 73 20 61 72 65 20    e envelopes are 
0221E0:  73 65 74 20 62 79 20 63 61 6C 6C 69 6E 67 20 53    set by calling S
0221F0:  4F 55 4E 44 20 54 4F 4E 45 20 45 4E 56 45 4C 4F    OUND TONE ENVELO
022200:  50 45 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 37    PE......       7
022210:  2E 34 20 53 6F 75 6E 64 20 43 6F 6D 6D 61 6E 64    .4 Sound Command
022220:  73 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 57 68    s......       Wh
022230:  65 6E 20 61 20 73 6F 75 6E 64 20 69 73 20 67 69    en a sound is gi
022240:  76 65 6E 20 74 6F 20 74 68 65 20 53 6F 75 6E 64    ven to the Sound
022250:  20 4D 61 6E 61 67 65 72 20 74 6F 20 62 65 20 20     Manager to be  
022260:  70 6C 61 79 65 64 2C 20 20 62 79 20 20 63 61 6C    played,  by  cal
022270:  6C 69 6E 67 0D 0A 20 20 20 20 20 20 20 53 4F 55    ling..       SOU
022280:  4E 44 20 51 55 45 55 45 2C 20 61 20 6C 6F 74 20    ND QUEUE, a lot 
022290:  6F 66 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 20    of information  
0222A0:  6E 65 65 64 73 20 20 74 6F 20 20 62 65 20 20 73    needs  to  be  s
0222B0:  70 65 63 69 66 69 65 64 2E 20 20 54 68 69 73 20    pecified.  This 
0222C0:  20 69 73 0D 0A 20 20 20 20 20 20 20 64 65 73 63     is..       desc
0222D0:  72 69 62 65 64 20 62 72 69 65 66 6C 79 20 62 65    ribed briefly be
0222E0:  6C 6F 77 2E 20 54 68 65 20 64 65 74 61 69 6C 65    low. The detaile
0222F0:  64 20 6C 61 79 6F 75 74 20 6F 66 20 61 20 73 6F    d layout of a so
022300:  75 6E 64 20 20 63 6F 6D 6D 61 6E 64 20 20 64 61    und  command  da
022310:  74 61 0D 0A 20 20 20 20 20 20 20 62 6C 6F 63 6B    ta..       block
022320:  20 69 73 20 64 65 73 63 72 69 62 65 64 20 69 6E     is described in
022330:  20 53 4F 55 4E 44 20 51 55 45 55 45 2E 0D 0A 0D     SOUND QUEUE....
022340:  0A 0D 0A 20 20 20 20 20 20 20 61 2E 20 49 6E 69    ...       a. Ini
022350:  74 69 61 6C 20 74 6F 6E 65 20 70 65 72 69 6F 64    tial tone period
022360:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
022370:  65 20 73 6F 75 6E 64 20 69 73 20 69 73 73 75 65    e sound is issue
022380:  64 20 77 69 74 68 20 61 6E 20 69 6E 69 74 69 61    d with an initia
022390:  6C 20 74 6F 6E 65 20 20 70 65 72 69 6F 64 2E 20    l tone  period. 
0223A0:  20 54 68 65 20 20 70 69 74 63 68 20 20 6F 66 20     The  pitch  of 
0223B0:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 73 6F 75     the..       sou
0223C0:  6E 64 20 63 61 6E 20 62 65 20 76 61 72 69 65 64    nd can be varied
0223D0:  20 66 72 6F 6D 20 74 68 69 73 20 69 6E 69 74 69     from this initi
0223E0:  61 6C 20 76 61 6C 75 65 20 75 73 69 6E 67 20 61    al value using a
0223F0:  20 74 6F 6E 65 20 65 6E 76 65 6C 6F 70 65 2E 20     tone envelope. 
022400:  20 49 66 0D 0A 20 20 20 20 20 20 20 6E 6F 20 65     If..       no e
022410:  6E 76 65 6C 6F 70 65 20 69 73 20 73 70 65 63 69    nvelope is speci
022420:  66 69 65 64 20 74 68 65 20 70 69 74 63 68 20 72    fied the pitch r
022430:  65 6D 61 69 6E 73 20 63 6F 6E 73 74 61 6E 74 2E    emains constant.
022440:  20 41 6E 20 20 69 6E 69 74 69 61 6C 20 20 74 6F     An  initial  to
022450:  6E 65 0D 0A 20 20 20 20 20 20 20 70 65 72 69 6F    ne..       perio
022460:  64 20 6F 66 20 7A 65 72 6F 20 6D 65 61 6E 73 20    d of zero means 
022470:  6E 6F 20 74 6F 6E 65 20 69 73 20 74 6F 20 62 65    no tone is to be
022480:  20 67 65 6E 65 72 61 74 65 64 2C 20 70 72 65 73     generated, pres
022490:  75 6D 61 62 6C 65 20 74 68 65 20 20 73 6F 75 6E    umable the  soun
0224A0:  64 0D 0A 20 20 20 20 20 20 20 69 73 20 74 6F 20    d..       is to 
0224B0:  62 65 20 70 75 72 65 20 6E 6F 69 73 65 20 28 20    be pure noise ( 
0224C0:  73 65 65 28 65 29 62 65 6C 6F 77 2E 0D 0A 0D 0A    see(e)below.....
0224D0:  0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44    ..       AMSTRAD
0224E0:  20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38     CPC464/664/6128
0224F0:  20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20     FIRMWARE       
022500:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
022510:  20 20 20 20 20 20 20 70 61 67 65 20 37 2E 33 0D           page 7.3.
022520:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
022530:  20 20 20 20 62 2E 20 49 6E 69 74 69 61 6C 20 76        b. Initial v
022540:  6F 6C 75 6D 65 0D 0A 0D 0A 20 20 20 20 20 20 20    olume....       
022550:  54 68 65 20 73 6F 75 6E 64 20 69 73 20 69 73 73    The sound is iss
022560:  75 65 64 20 77 69 74 68 20 61 6E 20 69 6E 69 74    ued with an init
022570:  69 61 6C 20 76 6F 6C 75 6D 65 2E 20 54 68 65 20    ial volume. The 
022580:  76 6F 6C 75 6D 65 20 20 6F 66 20 20 74 68 65 20    volume  of  the 
022590:  20 73 6F 75 6E 64 0D 0A 20 20 20 20 20 20 20 63     sound..       c
0225A0:  61 6E 20 62 65 20 76 61 72 69 65 64 20 66 72 6F    an be varied fro
0225B0:  6D 20 74 68 69 73 20 69 6E 69 74 69 61 6C 20 76    m this initial v
0225C0:  61 6C 75 65 20 75 73 69 6E 67 20 61 6E 20 61 6D    alue using an am
0225D0:  70 6C 69 74 75 64 65 20 65 6E 76 65 6C 6F 70 65    plitude envelope
0225E0:  2E 20 20 49 66 0D 0A 20 20 20 20 20 20 20 6E 6F    .  If..       no
0225F0:  20 61 6D 70 6C 69 74 75 64 65 20 65 6E 76 65 6C     amplitude envel
022600:  6F 70 65 20 69 73 20 73 70 65 63 69 66 69 65 64    ope is specified
022610:  20 74 68 65 6E 20 74 68 65 20 76 6F 6C 75 6D 65     then the volume
022620:  20 72 65 6D 61 69 6E 73 20 63 6F 6E 73 74 61 6E     remains constan
022630:  74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 63 2E 20    t.....       c. 
022640:  54 6F 6E 65 20 65 6E 76 65 6C 6F 70 65 2E 0D 0A    Tone envelope...
022650:  0D 0A 20 20 20 20 20 20 20 54 68 69 73 20 73 70    ..       This sp
022660:  65 63 69 66 69 65 73 20 77 68 69 63 68 20 74 6F    ecifies which to
022670:  6E 65 20 65 6E 76 65 6C 6F 70 65 20 74 6F 20 75    ne envelope to u
022680:  73 65 2E 20 49 66 20 6E 6F 20 65 6E 76 65 6C 6F    se. If no envelo
022690:  70 65 20 69 73 20 73 70 65 63 69 66 69 65 64 0D    pe is specified.
0226A0:  0A 20 20 20 20 20 20 20 74 68 65 6E 20 74 68 65    .       then the
0226B0:  20 70 69 74 63 68 20 6F 66 20 74 68 65 20 73 6F     pitch of the so
0226C0:  75 6E 64 20 72 65 6D 61 69 6E 73 20 63 6F 6E 73    und remains cons
0226D0:  74 61 6E 74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    tant.....       
0226E0:  64 2E 20 41 6D 70 6C 69 74 75 64 65 20 65 6E 76    d. Amplitude env
0226F0:  65 6C 6F 70 65 2E 0D 0A 0D 0A 20 20 20 20 20 20    elope.....      
022700:  20 54 68 69 73 20 73 70 65 63 69 66 69 65 73 20     This specifies 
022710:  77 68 69 63 68 20 61 6D 70 6C 69 74 75 64 65 20    which amplitude 
022720:  74 6F 20 75 73 65 2E 20 49 66 20 20 6E 6F 20 20    to use. If  no  
022730:  65 6E 76 65 6C 6F 70 65 20 20 69 73 20 20 73 70    envelope  is  sp
022740:  65 63 69 66 69 65 64 0D 0A 20 20 20 20 20 20 20    ecified..       
022750:  74 68 65 6E 20 64 65 66 61 75 6C 74 20 73 79 73    then default sys
022760:  74 65 6D 20 65 6E 76 65 6C 6F 70 65 20 69 73 20    tem envelope is 
022770:  75 73 65 64 2E 20 54 68 69 73 20 6B 65 65 70 73    used. This keeps
022780:  20 20 74 68 65 20 20 76 6F 6C 75 6D 65 20 20 6F      the  volume  o
022790:  66 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 73    f  the..       s
0227A0:  6F 75 6E 64 20 63 6F 6E 73 74 61 6E 74 20 61 6E    ound constant an
0227B0:  64 20 6C 61 73 74 73 20 66 6F 72 20 32 20 73 65    d lasts for 2 se
0227C0:  63 6F 6E 64 73 2E 0D 0A 0D 0A 20 20 20 20 20 20    conds.....      
0227D0:  20 65 2E 20 4E 6F 69 73 65 20 70 65 72 69 6F 64     e. Noise period
0227E0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74    .....       If t
0227F0:  68 65 20 6E 6F 69 73 65 20 70 65 72 69 6F 64 20    he noise period 
022800:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
022810:  1D 00 00 00 02 09 50 E5 1D 00 C1 02 00 00 00 02    ......P.........
022820:  1D 00 C2 02 00 00 00 02 1D 00 C3 02 00 00 00 02    ................
022830:  1D 00 C4 02 00 00 00 02 1D 00 C5 02 00 00 00 02    ................
022840:  1D 00 C6 02 00 00 00 02 1D 00 C7 02 00 00 00 02    ................
022850:  1D 00 C8 02 00 00 00 02 1D 00 C9 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:  69 73 20 7A 65 72 6F 20 74 68 65 6E 20 6E 6F 20    is zero then no 
022910:  6E 6F 69 73 65 20 69 73 20 74 6F 20 62 65 20 61    noise is to be a
022920:  64 64 65 64 20 74 6F 20 74 68 65 20 73 6F 75 6E    dded to the soun
022930:  64 2E 0D 0A 20 20 20 20 20 20 20 41 6E 79 20 6F    d...       Any o
022940:  74 68 65 72 20 76 61 6C 75 65 20 73 65 74 73 20    ther value sets 
022950:  74 68 65 20 70 65 72 69 6F 64 20 66 6F 72 20 74    the period for t
022960:  68 65 20 70 73 65 75 64 6F 2D 72 61 6E 64 6F 6D    he pseudo-random
022970:  20 6E 6F 69 73 65 20 20 67 65 6E 65 72 61 74 6F     noise  generato
022980:  72 0D 0A 20 20 20 20 20 20 20 61 6E 64 20 61 64    r..       and ad
022990:  64 73 20 6E 6F 69 73 65 20 74 6F 20 74 68 65 20    ds noise to the 
0229A0:  74 6F 6E 65 20 67 65 6E 65 72 61 74 65 64 2E 20    tone generated. 
0229B0:  4E 6F 74 65 20 20 74 68 61 74 20 20 74 68 65 72    Note  that  ther
0229C0:  65 20 20 69 73 20 20 6F 6E 6C 79 20 20 6F 6E 65    e  is  only  one
0229D0:  0D 0A 20 20 20 20 20 20 20 6E 6F 69 73 65 20 67    ..       noise g
0229E0:  65 6E 65 72 61 74 6F 72 20 61 6E 64 20 73 6F 20    enerator and so 
0229F0:  69 66 20 74 77 6F 20 73 6F 75 6E 64 73 20 61 72    if two sounds ar
022A00:  65 20 74 6F 20 75 73 65 20 69 74 20 61 74 20 20    e to use it at  
022A10:  74 68 65 20 20 73 61 6D 65 20 20 74 69 6D 65 0D    the  same  time.
022A20:  0A 20 20 20 20 20 20 20 74 68 65 79 20 77 69 6C    .       they wil
022A30:  6C 20 6E 65 65 64 20 74 6F 20 61 67 72 65 65 20    l need to agree 
022A40:  6F 6E 20 74 68 65 20 70 65 72 69 6F 64 2E 0D 0A    on the period...
022A50:  0D 0A 20 20 20 20 20 20 20 66 2E 20 44 75 72 61    ..       f. Dura
022A60:  74 69 6F 6E 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    tion.....       
022A70:  54 68 65 20 6C 65 6E 67 74 68 20 6F 66 20 61 20    The length of a 
022A80:  73 6F 75 6E 64 20 63 61 6E 20 62 65 20 73 70 65    sound can be spe
022A90:  63 69 66 69 65 64 20 20 69 6E 20 20 74 77 6F 20    cified  in  two 
022AA0:  20 77 61 79 73 2C 20 20 65 69 74 68 65 72 20 20     ways,  either  
022AB0:  61 73 20 20 61 6E 0D 0A 20 20 20 20 20 20 20 61    as  an..       a
022AC0:  62 73 6F 6C 75 74 65 20 74 69 6D 65 20 28 20 64    bsolute time ( d
022AD0:  75 72 61 74 69 6F 6E 20 29 20 20 6F 72 20 20 61    uration )  or  a
022AE0:  73 20 20 61 20 20 6E 75 6D 62 65 72 20 20 6F 66    s  a  number  of
022AF0:  20 20 6F 70 65 72 61 74 69 6F 6E 73 20 20 6F 66      operations  of
022B00:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 61 6D      the..       am
022B10:  70 6C 69 74 75 64 65 20 65 6E 76 65 6C 6F 70 65    plitude envelope
022B20:  2E 20 49 6E 20 74 68 65 20 6C 61 74 74 65 72 20    . In the latter 
022B30:  63 61 73 65 20 74 68 65 20 65 6E 76 65 6C 6F 70    case the envelop
022B40:  65 20 69 73 20 72 75 6E 20 6F 6E 65 20 6F 72 20    e is run one or 
022B50:  6D 6F 72 65 0D 0A 20 20 20 20 20 20 20 74 69 6D    more..       tim
022B60:  65 73 20 61 6E 64 20 74 68 65 20 73 6F 75 6E 64    es and the sound
022B70:  20 66 69 6E 69 73 68 65 73 20 77 68 65 6E 20 74     finishes when t
022B80:  68 65 20 65 6E 76 65 6C 6F 70 65 20 68 61 73 20    he envelope has 
022B90:  62 65 65 6E 20 20 65 78 65 63 75 74 65 64 20 20    been  executed  
022BA0:  74 68 65 0D 0A 20 20 20 20 20 20 20 73 70 65 63    the..       spec
022BB0:  69 66 69 65 64 20 6E 75 6D 62 65 72 20 6F 66 20    ified number of 
022BC0:  74 69 6D 65 73 2E 20 49 6E 20 74 68 65 20 66 6F    times. In the fo
022BD0:  72 6D 65 72 20 20 63 61 73 65 2C 20 20 69 66 20    rmer  case,  if 
022BE0:  20 74 68 65 20 20 64 75 72 61 74 69 6F 6E 20 20     the  duration  
022BF0:  69 73 0D 0A 20 20 20 20 20 20 20 6C 6F 6E 67 65    is..       longe
022C00:  72 20 74 68 61 6E 20 74 68 65 20 65 6E 76 65 6C    r than the envel
022C10:  6F 70 65 20 74 68 65 6E 20 74 68 65 20 73 6F 75    ope then the sou
022C20:  6E 64 20 69 73 20 63 75 74 20 73 68 6F 72 74 2E    nd is cut short.
022C30:  20 49 66 20 74 68 65 20 20 64 75 72 61 74 69 6F     If the  duratio
022C40:  6E 0D 0A 20 20 20 20 20 20 20 69 73 20 6C 6F 6E    n..       is lon
022C50:  67 65 72 20 74 68 61 6E 20 74 68 65 20 65 6E 76    ger than the env
022C60:  65 6C 6F 70 65 20 74 68 65 6E 20 74 68 65 20 66    elope then the f
022C70:  69 6E 61 6C 20 61 6D 70 6C 69 74 75 64 65 20 69    inal amplitude i
022C80:  73 20 68 65 6C 64 20 75 6E 74 69 6C 20 74 68 65    s held until the
022C90:  0D 0A 20 20 20 20 20 20 20 64 75 72 61 74 69 6F    ..       duratio
022CA0:  6E 20 65 78 70 69 72 65 73 2E 0D 0A 0D 0A 0D 0A    n expires.......
022CB0:  20 20 20 20 20 20 20 67 2E 20 43 68 61 6E 6E 65           g. Channe
022CC0:  6C 73 20 61 6E 64 20 53 79 6E 63 68 72 6F 6E 69    ls and Synchroni
022CD0:  73 61 74 69 6F 6E 20 42 69 74 73 2E 0D 0A 0D 0A    sation Bits.....
022CE0:  20 20 20 20 20 20 20 54 68 65 20 73 6F 75 6E 64           The sound
022CF0:  20 63 61 6E 20 62 65 20 69 73 73 75 65 64 20 74     can be issued t
022D00:  6F 20 6F 6E 65 20 6F 72 20 6D 6F 72 65 20 63 68    o one or more ch
022D10:  61 6E 6E 65 6C 73 2E 20 49 66 20 61 20 73 6F 75    annels. If a sou
022D20:  6E 64 20 69 73 20 20 69 73 73 75 65 64 0D 0A 20    nd is  issued.. 
022D30:  20 20 20 20 20 20 74 6F 20 6D 6F 72 65 20 74 68          to more th
022D40:  61 6E 20 6F 6E 65 20 63 68 61 6E 6E 65 6C 20 74    an one channel t
022D50:  68 65 6E 20 74 68 65 73 65 20 63 68 61 6E 6E 65    hen these channe
022D60:  6C 73 20 61 75 74 6F 6D 61 74 69 63 61 6C 6C 79    ls automatically
022D70:  20 20 72 65 6E 64 65 7A 76 6F 75 73 0D 0A 20 20      rendezvous..  
022D80:  20 20 20 20 20 77 69 74 68 20 65 61 63 68 20 6F         with each o
022D90:  74 68 65 72 2E 20 52 65 6E 64 65 7A 76 6F 75 73    ther. Rendezvous
022DA0:  20 72 65 71 75 69 72 65 6D 65 6E 74 73 20 20 63     requirements  c
022DB0:  61 6E 20 20 62 65 20 20 73 65 74 20 20 65 78 70    an  be  set  exp
022DC0:  6C 69 63 69 74 6C 79 20 20 61 73 0D 0A 20 20 20    licitly  as..   
022DD0:  20 20 20 20 77 65 6C 6C 2E 20 41 6C 73 6F 20 74        well. Also t
022DE0:  68 65 20 73 6F 75 6E 64 20 63 61 6E 20 62 65 20    he sound can be 
022DF0:  68 65 6C 64 20 6F 72 20 74 68 65 20 73 6F 75 6E    held or the soun
022E00:  64 20 20 71 75 65 75 65 20 20 63 61 6E 20 20 62    d  queue  can  b
022E10:  65 20 20 66 6C 75 73 68 65 64 0D 0A 20 20 20 20    e  flushed..    
022E20:  20 20 20 28 73 65 65 20 73 65 63 74 69 6F 6E 20       (see section 
022E30:  37 2E 36 29 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    7.6).......     
022E40:  20 20 37 2E 35 20 20 53 6F 75 6E 64 20 51 75 65      7.5  Sound Que
022E50:  75 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45    ues.....       E
022E60:  61 63 68 20 63 68 61 6E 6E 65 6C 20 68 61 73 20    ach channel has 
022E70:  61 20 71 75 65 75 65 20 61 73 73 6F 63 69 61 74    a queue associat
022E80:  65 64 20 77 69 74 68 20 69 74 2E 20 45 61 63 68    ed with it. Each
022E90:  20 71 75 65 75 65 20 68 61 73 20 20 73 70 61 63     queue has  spac
022EA0:  65 20 20 74 6F 0D 0A 20 20 20 20 20 20 20 73 74    e  to..       st
022EB0:  6F 72 65 20 61 74 20 6C 65 61 73 74 20 74 68 72    ore at least thr
022EC0:  65 65 20 73 6F 75 6E 64 73 2E 20 54 68 65 20 73    ee sounds. The s
022ED0:  6F 75 6E 64 20 61 74 20 74 68 65 20 68 65 61 64    ound at the head
022EE0:  20 6F 66 20 65 61 63 68 20 20 71 75 65 75 65 20     of each  queue 
022EF0:  20 6D 61 79 0D 0A 20 20 20 20 20 20 20 62 65 20     may..       be 
022F00:  72 75 6E 6E 69 6E 67 20 61 6E 64 20 6D 61 6B 69    running and maki
022F10:  6E 67 20 6D 75 73 69 63 20 6F 6E 20 69 74 73 20    ng music on its 
022F20:  63 68 61 6E 6E 65 6C 20 6F 72 20 69 74 20 6D 61    channel or it ma
022F30:  79 20 20 62 65 20 20 77 61 69 74 69 6E 67 20 20    y  be  waiting  
022F40:  66 6F 72 0D 0A 20 20 20 20 20 20 20 76 61 72 69    for..       vari
022F50:  6F 75 73 20 73 79 6E 63 68 72 6F 6E 69 73 61 74    ous synchronisat
022F60:  69 6F 6E 20 72 65 71 75 69 72 65 6D 65 6E 74 73    ion requirements
022F70:  20 28 20 73 65 65 20 37 2E 36 20 62 65 6C 6F 77     ( see 7.6 below
022F80:  20 29 2E 20 57 68 65 6E 20 20 61 20 20 73 6F 75     ). When  a  sou
022F90:  6E 64 0D 0A 20 20 20 20 20 20 20 63 6F 6D 6D 61    nd..       comma
022FA0:  6E 64 20 69 73 20 69 73 73 75 65 64 20 74 68 65    nd is issued the
022FB0:  20 73 6F 75 6E 64 20 69 73 20 70 6C 61 63 65 64     sound is placed
022FC0:  20 69 6E 74 6F 20 74 68 65 20 71 75 65 75 65 73     into the queues
022FD0:  20 66 6F 72 20 74 68 65 20 63 68 61 6E 6E 65 6C     for the channel
022FE0:  73 0D 0A 20 20 20 20 20 20 20 73 70 65 63 69 66    s..       specif
022FF0:  69 65 64 20 62 79 20 74 68 65 20 63 6F 6D 6D 61    ied by the comma
023000:  6E 64 2E 20 57 68 65 6E 20 74 68 65 20 20 73 6F    nd. When the  so
023010:  75 6E 64 20 20 72 65 61 63 68 65 73 20 20 74 68    und  reaches  th
023020:  65 20 20 68 65 61 64 20 20 6F 66 20 20 74 68 65    e  head  of  the
023030:  0D 0A 20 20 20 20 20 20 20 71 75 65 75 65 2C 20    ..       queue, 
023040:  61 6E 64 20 70 72 6F 76 69 64 69 6E 67 20 69 74    and providing it
023050:  73 20 73 79 6E 63 68 72 6F 6E 69 73 61 74 69 6F    s synchronisatio
023060:  6E 20 72 65 71 75 69 72 65 6D 65 6E 74 73 20 61    n requirements a
023070:  72 65 20 6D 65 74 2C 20 20 69 74 20 20 69 73 0D    re met,  it  is.
023080:  0A 20 20 20 20 20 20 20 65 78 65 63 75 74 65 64    .       executed
023090:  2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
0230A0:  41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36    AMSTRAD CPC464/6
0230B0:  36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45    64/6128 FIRMWARE
0230C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0230D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61                  pa
0230E0:  67 65 20 37 2E 34 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ge 7.4..........
0230F0:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 61 20    ....       If a 
023100:  73 6F 75 6E 64 20 74 68 61 74 20 68 61 73 20 74    sound that has t
023110:  68 65 20 66 6C 75 73 68 20 62 69 74 20 69 73 20    he flush bit is 
023120:  70 75 74 20 69 6E 74 6F 20 61 20 71 75 65 75 65    put into a queue
023130:  20 74 68 65 6E 20 61 6C 6C 20 20 73 6F 75 6E 64     then all  sound
023140:  73 0D 0A 20 20 20 20 20 20 20 71 75 65 75 65 64    s..       queued
023150:  20 66 6F 72 20 74 68 61 74 20 63 68 61 6E 6E 65     for that channe
023160:  6C 20 61 72 65 20 20 64 69 73 63 61 72 64 65 64    l are  discarded
023170:  20 20 61 6E 64 20 20 61 6E 79 20 20 65 78 65 63      and  any  exec
023180:  75 74 69 6E 67 20 20 73 6F 75 6E 64 20 20 69 73    uting  sound  is
023190:  0D 0A 20 20 20 20 20 20 20 73 74 6F 70 70 65 64    ..       stopped
0231A0:  20 69 6D 6D 65 64 69 61 74 65 6C 79 2E 20 54 68     immediately. Th
0231B0:  75 73 20 61 20 73 6F 75 6E 64 20 77 69 74 68 20    us a sound with 
0231C0:  74 68 65 20 66 6C 75 73 68 20 62 69 74 20 73 65    the flush bit se
0231D0:  74 20 77 69 6C 6C 20 6D 6F 76 65 20 20 74 6F 0D    t will move  to.
0231E0:  0A 20 20 20 20 20 20 20 74 68 65 20 68 65 61 64    .       the head
0231F0:  20 6F 66 20 74 68 65 20 71 75 65 75 65 20 69 6D     of the queue im
023200:  6D 65 64 69 61 74 65 6C 79 20 61 6E 64 20 6D 61    mediately and ma
023210:  79 20 63 6F 6D 6D 65 6E 63 65 20 65 78 65 63 75    y commence execu
023220:  74 69 6F 6E 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    tion.......     
023230:  20 20 41 20 72 6F 75 74 69 6E 65 20 28 53 4F 55      A routine (SOU
023240:  4E 44 20 43 48 45 43 4B 20 29 20 69 73 20 70 72    ND CHECK ) is pr
023250:  6F 76 69 64 65 64 20 74 6F 20 74 65 73 74 20 74    ovided to test t
023260:  68 65 20 73 74 61 74 75 73 20 6F 66 20 20 74 68    he status of  th
023270:  65 20 20 73 6F 75 6E 64 0D 0A 20 20 20 20 20 20    e  sound..      
023280:  20 61 74 20 74 68 65 20 68 65 61 64 20 6F 66 20     at the head of 
023290:  61 20 71 75 65 75 65 20 61 6E 64 20 74 6F 20 64    a queue and to d
0232A0:  65 74 65 72 6D 69 6E 65 20 68 6F 77 20 6D 75 63    etermine how muc
0232B0:  68 20 66 72 65 65 20 73 70 61 63 65 20 20 69 73    h free space  is
0232C0:  20 20 69 6E 20 20 61 0D 0A 20 20 20 20 20 20 20      in  a..       
0232D0:  71 75 65 75 65 2E 20 49 74 20 69 73 20 61 6C 73    queue. It is als
0232E0:  6F 20 70 6F 73 73 69 62 6C 65 20 74 6F 20 73 65    o possible to se
0232F0:  74 20 75 70 20 61 20 73 6F 75 6E 64 20 65 76 65    t up a sound eve
023300:  6E 74 20 66 6F 72 20 65 61 63 68 20 71 75 65 75    nt for each queu
023310:  65 20 28 20 62 79 0D 0A 20 20 20 20 20 20 20 63    e ( by..       c
023320:  61 6C 6C 69 6E 67 20 53 4F 55 4E 44 20 41 52 4D    alling SOUND ARM
023330:  20 45 56 45 4E 54 20 29 2E 20 54 68 69 73 20 73     EVENT ). This s
023340:  79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74    ynchronous event
023350:  20 69 73 20 27 20 6B 69 63 6B 65 64 20 20 27 20     is ' kicked  ' 
023360:  20 77 68 65 6E 0D 0A 20 20 20 20 20 20 20 74 68     when..       th
023370:  65 20 71 75 65 75 65 20 68 61 73 20 61 20 66 72    e queue has a fr
023380:  65 65 20 73 70 61 63 65 20 69 6E 20 69 74 2E 20    ee space in it. 
023390:  54 68 65 20 73 6F 75 6E 64 20 65 76 65 6E 74 20    The sound event 
0233A0:  6D 65 63 68 61 6E 69 73 6D 20 61 6C 6C 6F 77 73    mechanism allows
0233B0:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 67 65 6E     the..       gen
0233C0:  65 72 61 74 69 6F 6E 20 6F 66 20 73 6F 75 6E 64    eration of sound
0233D0:  20 74 6F 20 62 65 20 63 61 72 72 69 65 64 20 6F     to be carried o
0233E0:  6E 20 61 73 20 61 20 62 61 63 6B 67 72 6F 75 6E    n as a backgroun
0233F0:  64 20 74 61 73 6B 20 77 68 69 6C 73 74 20 20 73    d task whilst  s
023400:  6F 6D 65 0D 0A 20 20 20 20 20 20 20 6F 74 68 65    ome..       othe
023410:  72 20 61 63 74 69 6F 6E 20 69 73 20 62 65 69 6E    r action is bein
023420:  67 20 63 61 72 72 69 65 64 20 6F 75 74 2E 0D 0A    g carried out...
023430:  0D 0A 0D 0A 20 20 20 20 20 20 20 37 2E 36 20 53    ....       7.6 S
023440:  79 6E 63 68 72 6F 6E 69 73 61 74 69 6F 6E 2E 0D    ynchronisation..
023450:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 72    .....       Ther
023460:  65 20 61 72 65 20 74 77 6F 20 6D 65 63 68 61 6E    e are two mechan
023470:  69 73 6D 73 20 74 6F 20 61 6C 6C 6F 77 20 73 6F    isms to allow so
023480:  75 6E 64 73 20 6F 6E 20 64 69 66 66 65 72 65 6E    unds on differen
023490:  74 20 63 68 61 6E 6E 65 6C 73 20 20 74 6F 20 20    t channels  to  
0234A0:  62 65 0D 0A 20 20 20 20 20 20 20 73 79 6E 63 68    be..       synch
0234B0:  72 6F 6E 69 73 65 64 2E 20 54 68 65 73 65 20 61    ronised. These a
0234C0:  72 65 20 68 6F 6C 64 69 6E 67 20 73 6F 75 6E 64    re holding sound
0234D0:  73 20 61 6E 64 20 72 65 6E 64 65 7A 76 6F 75 73    s and rendezvous
0234E0:  2E 20 54 68 65 20 70 75 72 70 6F 73 65 20 20 6F    . The purpose  o
0234F0:  66 0D 0A 20 20 20 20 20 20 20 73 79 6E 63 68 72    f..       synchr
023500:  6F 6E 69 73 61 74 69 6F 6E 20 69 73 20 74 6F 20    onisation is to 
023510:  65 6E 73 75 72 65 20 74 68 61 74 20 20 73 6F 75    ensure that  sou
023520:  6E 64 73 20 20 73 74 61 72 74 20 20 73 69 6D 75    nds  start  simu
023530:  6C 74 61 6E 65 6F 75 73 6C 79 2E 20 20 46 6F 72    ltaneously.  For
023540:  0D 0A 20 20 20 20 20 20 20 65 78 61 6D 70 6C 65    ..       example
023550:  2C 20 61 20 73 69 6D 75 6C 61 74 69 6F 6E 20 6F    , a simulation o
023560:  66 20 20 61 6E 20 20 69 6E 73 74 72 75 6D 65 6E    f  an  instrumen
023570:  74 20 20 6D 69 67 68 74 20 20 75 73 65 20 20 6F    t  might  use  o
023580:  6E 65 20 20 63 68 61 6E 6E 65 6C 20 20 74 6F 0D    ne  channel  to.
023590:  0A 20 20 20 20 20 20 20 67 65 6E 65 72 61 74 65    .       generate
0235A0:  20 74 68 65 20 66 75 6E 64 61 6D 65 6E 74 61 6C     the fundamental
0235B0:  20 6E 6F 74 65 20 61 6E 64 20 20 61 6E 6F 74 68     note and  anoth
0235C0:  65 72 20 20 63 68 61 6E 6E 65 6C 20 20 74 6F 20    er  channel  to 
0235D0:  20 67 65 6E 65 72 61 74 65 20 20 74 68 65 0D 0A     generate  the..
0235E0:  20 20 20 20 20 20 20 68 61 72 6D 6F 6E 69 63 73           harmonics
0235F0:  20 6F 66 20 74 68 65 20 6E 6F 74 65 2E 20 20 54     of the note.  T
023600:  68 65 20 20 73 79 6E 63 68 72 6F 6E 69 73 61 74    he  synchronisat
023610:  69 6F 6E 20 20 6D 65 63 68 61 6E 69 73 6D 2C 20    ion  mechanism, 
023620:  20 70 61 72 74 69 63 75 6C 61 72 6C 79 0D 0A 20     particularly.. 
023630:  20 20 20 20 20 20 72 65 6E 64 65 7A 76 6F 75 73          rendezvous
023640:  2C 20 6D 79 20 62 65 20 75 73 65 64 20 74 6F 20    , my be used to 
023650:  65 6E 73 75 72 65 20 74 68 61 74 20 74 68 65 20    ensure that the 
023660:  66 75 6E 64 61 6D 65 6E 74 61 6C 20 61 6E 64 20    fundamental and 
023670:  74 68 65 20 68 61 72 6D 6F 6E 69 63 0D 0A 20 20    the harmonic..  
023680:  20 20 20 20 20 73 6F 75 6E 64 73 20 73 74 61 72         sounds star
023690:  74 20 65 78 61 63 74 6C 79 20 74 6F 67 65 74 68    t exactly togeth
0236A0:  65 72 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    er.......       
0236B0:  41 20 73 6F 75 6E 64 20 63 61 6E 20 62 65 20 73    A sound can be s
0236C0:  70 65 63 69 66 69 65 64 20 74 6F 20 62 65 20 68    pecified to be h
0236D0:  65 6C 64 20 77 68 65 6E 20 69 74 20 69 73 20 69    eld when it is i
0236E0:  73 73 75 65 64 2E 20 54 68 69 73 20 6D 65 61 6E    ssued. This mean
0236F0:  73 20 74 68 61 74 0D 0A 20 20 20 20 20 20 20 77    s that..       w
023700:  68 65 6E 20 69 74 20 72 65 61 63 68 65 73 20 74    hen it reaches t
023710:  68 65 20 68 65 61 64 20 20 6F 66 20 20 74 68 65    he head  of  the
023720:  20 20 73 6F 75 6E 64 20 20 71 75 65 75 65 20 20      sound  queue  
023730:  69 74 20 20 69 73 20 20 6E 6F 74 20 20 65 78 65    it  is  not  exe
023740:  63 75 74 65 64 0D 0A 20 20 20 20 20 20 20 69 6D    cuted..       im
023750:  6D 65 64 69 61 74 65 6C 79 2E 20 49 6E 73 74 65    mediately. Inste
023760:  61 64 20 69 74 20 77 61 69 74 73 20 75 6E 74 69    ad it waits unti
023770:  6C 20 69 74 20 69 73 20 20 65 78 70 6C 69 63 69    l it is  explici
023780:  74 6C 79 20 20 72 65 6C 65 61 73 65 64 20 20 28    tly  released  (
023790:  20 20 62 79 0D 0A 20 20 20 20 20 20 20 63 61 6C      by..       cal
0237A0:  6C 69 6E 67 20 53 4F 55 4E 44 20 52 45 4C 45 41    ling SOUND RELEA
0237B0:  53 45 20 29 20 62 65 66 6F 72 65 20 69 74 20 73    SE ) before it s
0237C0:  74 61 72 74 73 20 65 78 65 63 75 74 69 6F 6E 2E    tarts execution.
0237D0:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 20 73 6F 75    ....       A sou
0237E0:  6E 64 20 63 61 6E 20 68 61 76 65 20 72 65 6E 64    nd can have rend
0237F0:  65 7A 76 6F 75 73 20 72 65 71 75 69 72 65 6D 65    ezvous requireme
023800:  6E 74 73 20 73 65 74 20 6F 6E 20 69 74 20 77 68    nts set on it wh
023810:  65 6E 20 69 74 20 69 73 20 20 69 73 73 75 65 64    en it is  issued
023820:  2E 0D 0A 20 20 20 20 20 20 20 49 66 20 61 20 73    ...       If a s
023830:  6F 75 6E 64 20 69 73 20 69 73 73 75 65 64 20 74    ound is issued t
023840:  6F 20 6D 6F 72 65 20 74 68 61 6E 20 6F 6E 65 20    o more than one 
023850:  63 68 61 6E 6E 65 6C 20 74 68 65 6E 20 74 68 65    channel then the
023860:  73 65 20 63 68 61 6E 6E 65 6C 73 20 20 61 6C 6C    se channels  all
023870:  0D 0A 20 20 20 20 20 20 20 73 65 74 20 72 65 6E    ..       set ren
023880:  64 65 7A 76 6F 75 73 20 77 69 74 68 20 65 61 63    dezvous with eac
023890:  68 20 6F 74 68 65 72 20 61 75 74 6F 6D 61 74 69    h other automati
0238A0:  63 61 6C 6C 79 2E 20 20 57 68 65 6E 20 20 61 20    cally.  When  a 
0238B0:  20 73 6F 75 6E 64 20 20 77 69 74 68 20 20 61 0D     sound  with  a.
0238C0:  0A 20 20 20 20 20 20 20 72 65 6E 64 65 7A 76 6F    .       rendezvo
0238D0:  75 73 20 73 65 74 20 72 65 61 63 68 65 73 20 74    us set reaches t
0238E0:  68 65 20 68 65 61 64 20 6F 66 20 74 68 65 20 73    he head of the s
0238F0:  6F 75 6E 64 20 71 75 65 75 65 20 69 74 20 69 73    ound queue it is
023900:  20 6E 6F 74 20 20 65 78 65 63 75 74 65 64 0D 0A     not  executed..
023910:  20 20 20 20 20 20 20 69 6D 6D 65 64 69 61 74 65           immediate
023920:  6C 79 2E 20 49 6E 73 74 65 61 64 20 69 74 20 77    ly. Instead it w
023930:  61 69 74 73 20 75 6E 74 69 6C 20 73 6F 75 6E 64    aits until sound
023940:  73 20 20 77 69 74 68 20 20 6D 61 74 63 68 69 6E    s  with  matchin
023950:  67 20 20 72 65 6E 64 65 7A 76 6F 75 73 0D 0A 20    g  rendezvous.. 
023960:  20 20 20 20 20 20 72 65 71 75 69 72 65 6D 65 6E          requiremen
023970:  74 73 20 72 65 61 63 68 20 74 68 65 20 68 65 61    ts reach the hea
023980:  64 20 6F 66 20 20 74 68 65 69 72 20 20 73 6F 75    d of  their  sou
023990:  6E 64 20 20 71 75 65 75 65 73 2E 20 20 4F 6E 6C    nd  queues.  Onl
0239A0:  79 20 20 77 68 65 6E 20 20 61 6C 6C 0D 0A 20 20    y  when  all..  
0239B0:  20 20 20 20 20 72 65 6E 64 65 7A 76 6F 75 73 20         rendezvous 
0239C0:  73 6F 75 6E 64 73 20 61 72 65 20 66 6F 75 6E 64    sounds are found
0239D0:  20 74 6F 20 62 65 20 70 72 65 73 65 6E 74 20 61     to be present a
0239E0:  6E 64 20 72 65 61 64 79 20 20 74 6F 20 20 72 75    nd ready  to  ru
0239F0:  6E 20 20 64 6F 20 20 74 68 65 79 0D 0A 20 20 20    n  do  they..   
023A00:  20 20 20 20 73 74 61 72 74 2E 0D 0A 0D 0A 20 20        start.....  
023A10:  20 20 20 20 20 46 6F 72 20 69 6E 73 74 61 6E 63         For instanc
023A20:  65 2C 20 73 6F 75 6E 64 20 6F 6E 20 63 68 61 6E    e, sound on chan
023A30:  6E 65 6C 20 41 20 6D 61 72 6B 65 64 20 74 6F 20    nel A marked to 
023A40:  72 65 6E 64 65 7A 76 6F 75 73 20 77 69 74 68 20    rendezvous with 
023A50:  61 20 73 6F 75 6E 64 20 20 6F 6E 0D 0A 20 20 20    a sound  on..   
023A60:  20 20 20 20 63 68 61 6E 6E 65 6C 20 42 20 77 69        channel B wi
023A70:  6C 6C 20 6E 6F 74 20 73 74 61 72 74 20 2D 20 61    ll not start - a
023A80:  6E 64 20 76 69 63 65 20 76 65 72 73 61 21 20 49    nd vice versa! I
023A90:  66 20 20 61 20 20 73 6F 75 6E 64 20 20 69 73 20    f  a  sound  is 
023AA0:  20 72 65 61 64 79 20 20 74 6F 0D 0A 20 20 20 20     ready  to..    
023AB0:  20 20 20 73 74 61 72 74 20 6F 6E 20 63 68 61 6E       start on chan
023AC0:  6E 65 6C 20 42 20 74 68 61 74 20 69 73 20 6E 6F    nel B that is no
023AD0:  74 20 6D 61 72 6B 65 64 20 74 6F 20 20 72 65 6E    t marked to  ren
023AE0:  64 65 7A 76 6F 75 73 20 20 77 69 74 68 20 20 63    dezvous  with  c
023AF0:  68 61 6E 6E 65 6C 20 20 41 0D 0A 20 20 20 20 20    hannel  A..     
023B00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
023B10:  1E 00 00 00 02 09 50 E5 1E 00 C1 02 00 00 00 02    ......P.........
023B20:  1E 00 C2 02 00 00 00 02 1E 00 C3 02 00 00 00 02    ................
023B30:  1E 00 C4 02 00 00 00 02 1E 00 C5 02 00 00 00 02    ................
023B40:  1E 00 C6 02 00 00 00 02 1E 00 C7 02 00 00 00 02    ................
023B50:  1E 00 C8 02 00 00 00 02 1E 00 C9 02 00 00 00 02    ................
023B60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023B70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023B80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023B90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023BF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
023C00:  20 20 74 68 65 6E 20 69 74 20 73 74 61 72 74 73      then it starts
023C10:  20 62 75 74 20 74 68 65 20 73 6F 75 6E 64 20 6F     but the sound o
023C20:  6E 20 63 68 61 6E 6E 65 6C 20 41 20 63 6F 6E 74    n channel A cont
023C30:  69 6E 75 65 73 20 20 74 6F 20 77 61 69 74 20 20    inues  to wait  
023C40:  66 6F 72 20 20 69 74 73 0D 0A 20 20 20 20 20 20    for  its..      
023C50:  20 72 65 6E 64 65 7A 76 6F 75 73 2E 0D 0A 0D 0A     rendezvous.....
023C60:  0D 0A 20 20 20 20 20 20 20 37 2E 37 20 20 48 6F    ..       7.7  Ho
023C70:  6C 64 69 6E 67 20 53 6F 75 6E 64 73 2E 0D 0A 0D    lding Sounds....
023C80:  0A 20 20 20 20 20 20 20 49 74 20 69 73 20 70 6F    .       It is po
023C90:  73 73 69 62 6C 65 20 74 6F 20 73 74 6F 70 20 61    ssible to stop a
023CA0:  20 73 6F 75 6E 64 20 77 68 69 6C 65 20 69 74 20     sound while it 
023CB0:  69 73 20 65 78 65 63 75 74 69 6E 67 20 62 79 20    is executing by 
023CC0:  63 61 6C 6C 69 6E 67 20 20 53 4F 55 4E 44 0D 0A    calling  SOUND..
023CD0:  20 20 20 20 20 20 20 48 4F 4C 44 2E 20 54 68 69           HOLD. Thi
023CE0:  73 20 77 69 6C 6C 20 73 74 6F 70 20 61 20 63 68    s will stop a ch
023CF0:  61 6E 6E 65 6C 20 6D 61 6B 69 6E 67 20 61 6E 79    annel making any
023D00:  20 20 73 6F 75 6E 64 20 20 61 6E 64 20 20 77 69      sound  and  wi
023D10:  6C 6C 20 20 73 61 76 65 20 20 74 68 65 0D 0A 20    ll  save  the.. 
023D20:  20 20 20 20 20 20 73 74 61 74 65 20 6F 66 20 74          state of t
023D30:  68 65 20 73 6F 75 6E 64 2E 20 54 68 65 20 73 6F    he sound. The so
023D40:  75 6E 64 20 63 61 6E 20 62 65 20 72 65 73 74 61    und can be resta
023D50:  72 74 65 64 20 66 72 6F 6D 20 77 68 65 72 65 20    rted from where 
023D60:  69 74 20 77 61 73 20 20 68 65 6C 64 0D 0A 20 20    it was  held..  
023D70:  20 20 20 20 20 62 79 20 63 61 6C 6C 69 6E 67 20         by calling 
023D80:  53 4F 55 4E 44 20 43 4F 4E 54 49 4E 55 45 2E 20    SOUND CONTINUE. 
023D90:  48 6F 77 65 76 65 72 2C 20 69 66 20 61 20 68 61    However, if a ha
023DA0:  72 64 77 61 72 65 20 65 6E 76 65 6C 6F 70 65 20    rdware envelope 
023DB0:  77 61 73 20 72 75 6E 6E 69 6E 67 0D 0A 20 20 20    was running..   
023DC0:  20 20 20 20 77 68 65 6E 20 74 68 65 20 73 6F 75        when the sou
023DD0:  6E 64 20 77 61 73 20 68 65 6C 64 20 74 68 65 6E    nd was held then
023DE0:  20 69 74 20 69 73 20 69 6D 70 6F 73 73 69 62 6C     it is impossibl
023DF0:  65 20 74 6F 20 70 72 65 64 69 63 74 20 74 68 65    e to predict the
023E00:  20 65 66 66 65 63 74 20 6F 66 0D 0A 20 20 20 20     effect of..    
023E10:  20 20 20 72 65 73 74 61 72 74 69 6E 67 20 74 68       restarting th
023E20:  65 20 73 6F 75 6E 64 2E 20 54 68 65 20 68 61 72    e sound. The har
023E30:  64 77 61 72 65 20 65 6E 76 65 6C 6F 70 65 20 6D    dware envelope m
023E40:  61 79 20 6F 72 20 20 6D 61 79 20 20 6E 6F 74 20    ay or  may  not 
023E50:  20 63 6F 6E 74 69 6E 75 65 0D 0A 20 20 20 20 20     continue..     
023E60:  20 20 66 72 6F 6D 20 77 68 65 72 65 20 69 74 20      from where it 
023E70:  77 61 73 20 68 65 6C 64 2E 0D 0A 0D 0A 20 20 20    was held.....   
023E80:  20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43 34        AMSTRAD CPC4
023E90:  36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D    64/664/6128 FIRM
023EA0:  57 41 52 45 20 20 20 20 20 20 20 20 20 20 20 20    WARE            
023EB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
023EC0:  20 20 70 61 67 65 20 37 2E 35 0D 0A 0D 0A 0D 0A      page 7.5......
023ED0:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 43    ........       C
023EE0:  61 6C 6C 69 6E 67 20 53 4F 55 4E 44 20 48 4F 4C    alling SOUND HOL
023EF0:  44 20 69 73 20 64 69 66 66 65 72 65 6E 74 20 66    D is different f
023F00:  72 6F 6D 20 73 65 74 74 69 6E 67 20 74 68 65 20    rom setting the 
023F10:  68 6F 6C 64 20 62 69 74 20 77 68 65 6E 20 69 73    hold bit when is
023F20:  73 75 69 6E 67 0D 0A 20 20 20 20 20 20 20 61 20    suing..       a 
023F30:  73 6F 75 6E 64 20 61 73 20 64 65 73 63 72 69 62    sound as describ
023F40:  65 64 20 69 6E 20 73 65 63 74 69 6F 6E 20 37 2E    ed in section 7.
023F50:  36 20 61 62 6F 76 65 2E 20 53 4F 55 4E 44 20 48    6 above. SOUND H
023F60:  4F 4C 44 20 73 74 6F 70 73 20 61 6C 6C 20 73 6F    OLD stops all so
023F70:  75 6E 64 73 0D 0A 20 20 20 20 20 20 20 62 65 69    unds..       bei
023F80:  6E 67 20 67 65 6E 65 72 61 74 65 64 20 61 74 20    ng generated at 
023F90:  61 6E 79 20 74 69 6D 65 20 77 68 69 6C 73 74 20    any time whilst 
023FA0:  20 74 68 65 20 20 68 6F 6C 64 20 20 62 69 74 20     the  hold  bit 
023FB0:  20 69 73 20 20 61 20 20 6D 65 74 68 6F 64 20 20     is  a  method  
023FC0:  66 6F 72 0D 0A 20 20 20 20 20 20 20 73 79 6E 63    for..       sync
023FD0:  68 72 6F 6E 69 73 69 6E 67 20 73 6F 75 6E 64 73    hronising sounds
023FE0:  20 61 6E 64 20 70 72 65 76 65 6E 74 73 20 61 20     and prevents a 
023FF0:  70 61 72 74 69 63 75 6C 61 72 20 73 6F 75 6E 64    particular sound
024000:  20 73 74 61 72 74 69 6E 67 20 77 68 65 6E 20 20     starting when  
024010:  69 74 0D 0A 20 20 20 20 20 20 20 72 65 61 63 68    it..       reach
024020:  65 73 20 74 68 65 20 68 65 61 64 20 6F 66 20 74    es the head of t
024030:  68 65 20 71 75 65 75 65 2E 0D 0A 0D 0A 0D 0A 0D    he queue........
024040:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
024050:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
024060:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
024070:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
024080:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
024090:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
0240A0:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D    .......       AM
0240B0:  53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34    STRAD CPC464/664
0240C0:  2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20    /6128 FIRMWARE  
0240D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0240E0:  20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65                page
0240F0:  20 37 2E 36 0D 0A 1A 20 20 65 6E 76 65 6C 6F 70     7.6...  envelop
024100:  72 6F 6D 20 73 65 74 74 69 6E 67 20 74 68 65 20    rom setting the 
024110:  68 6F 6C 64 20 62 69 74 20 77 68 65 6E 20 69 73    hold bit when is
024120:  73 75 69 6E 67 0D 0A 20 20 20 20 20 20 20 61 20    suing..       a 
024130:  73 6F 75 6E 64 20 61 73 20 64 65 73 63 72 69 62    sound as describ
024140:  65 64 20 69 6E 20 73 65 63 74 69 6F 6E 20 37 2E    ed in section 7.
024150:  36 20 61 62 6F 76 65 2E 20 53 4F 55 4E 44 20 48    6 above. SOUND H
024160:  4F 4C 44 20 73 74 6F 70 73 20 61 6C 6C 20 73 6F    OLD stops all so
024170:  75 6E 64 73 0D 0A 20 20 20 20 20 20 20 62 65 69    unds..       bei
024180:  6E 67 20 67 65 6E 65 72 61 74 65 64 20 61 74 20    ng generated at 
024190:  61 6E 79 20 74 69 6D 65 20 77 68 69 6C 73 74 20    any time whilst 
0241A0:  20 74 68 65 20 20 68 6F 6C 64 20 20 62 69 74 20     the  hold  bit 
0241B0:  20 69 73 20 20 61 20 20 6D 65 74 68 6F 64 20 20     is  a  method  
0241C0:  66 6F 72 0D 0A 20 20 20 20 20 20 20 73 79 6E 63    for..       sync
0241D0:  68 72 6F 6E 69 73 69 6E 67 20 73 6F 75 6E 64 73    hronising sounds
0241E0:  20 61 6E 64 20 70 72 65 76 65 6E 74 73 20 61 20     and prevents a 
0241F0:  70 61 72 74 69 63 75 6C 61 72 20 73 6F 75 6E 64    particular sound
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:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 38    ........       8
024410:  20 54 68 65 20 43 61 73 73 65 74 74 65 20 4D 61     The Cassette Ma
024420:  6E 61 67 65 72 2E 0D 0A 0D 0A 20 20 20 20 20 20    nager.....      
024430:  20 54 68 65 20 43 61 73 73 65 74 74 65 20 4D 61     The Cassette Ma
024440:  6E 61 67 65 72 20 64 65 61 6C 73 20 77 69 74 68    nager deals with
024450:  20 72 65 61 64 69 6E 67 20 66 69 6C 65 73 20 66     reading files f
024460:  72 6F 6D 20 61 6E 64 20 20 77 72 69 74 69 6E 67    rom and  writing
024470:  20 20 66 69 6C 65 73 0D 0A 20 20 20 20 20 20 20      files..       
024480:  74 6F 20 74 61 70 65 2E 20 54 68 65 73 65 20 6F    to tape. These o
024490:  70 65 72 61 74 69 6F 6E 73 20 63 61 6E 20 65 69    perations can ei
0244A0:  74 68 65 72 20 62 65 20 70 65 72 66 6F 72 6D 65    ther be performe
0244B0:  64 20 6F 6E 20 20 61 20 20 63 68 61 72 61 63 74    d on  a  charact
0244C0:  65 72 20 20 62 79 0D 0A 20 20 20 20 20 20 20 63    er  by..       c
0244D0:  68 61 72 61 63 74 65 72 20 62 61 73 69 73 20 6F    haracter basis o
0244E0:  72 20 6F 6E 20 61 20 77 68 6F 6C 65 20 66 69 6C    r on a whole fil
0244F0:  65 20 20 61 74 20 20 6F 6E 63 65 2E 20 20 54 68    e  at  once.  Th
024500:  65 72 65 20 20 69 73 20 20 6E 6F 20 20 68 61 72    ere  is  no  har
024510:  64 77 61 72 65 0D 0A 20 20 20 20 20 20 20 73 75    dware..       su
024520:  70 70 6F 72 74 20 66 6F 72 20 74 68 65 20 63 61    pport for the ca
024530:  73 73 65 74 74 65 2C 20 65 76 65 6E 20 74 68 65    ssette, even the
024540:  20 74 69 6D 69 6E 67 20 66 6F 72 20 72 65 61 64     timing for read
024550:  69 6E 67 20 61 6E 64 20 77 72 69 74 69 6E 67 20    ing and writing 
024560:  62 69 74 73 0D 0A 20 20 20 20 20 20 20 69 73 20    bits..       is 
024570:  70 65 72 66 6F 72 6D 65 64 20 62 79 20 73 6F 66    performed by sof
024580:  74 77 61 72 65 2E 0D 0A 0D 0A 20 20 20 20 20 20    tware.....      
024590:  20 54 68 65 20 66 6F 72 6D 61 74 20 6F 66 20 64     The format of d
0245A0:  61 74 61 20 6F 6E 20 74 68 65 20 74 61 70 65 20    ata on the tape 
0245B0:  69 73 20 64 65 73 63 72 69 62 65 64 20 69 6E 20    is described in 
0245C0:  67 72 65 61 74 20 64 65 74 61 69 6C 2E 20 54 68    great detail. Th
0245D0:  69 73 20 77 69 6C 6C 0D 0A 20 20 20 20 20 20 20    is will..       
0245E0:  6F 6E 6C 79 20 62 65 20 6F 66 20 61 63 61 64 65    only be of acade
0245F0:  6D 69 63 20 69 6E 74 65 72 65 73 74 20 74 6F 20    mic interest to 
024600:  6D 75 73 74 20 75 73 65 72 73 2E 20 4D 6F 72 65    must users. More
024610:  20 20 67 65 6E 65 72 61 6C 20 20 69 6E 66 6F 72      general  infor
024620:  6D 61 74 69 6F 6E 0D 0A 20 20 20 20 20 20 20 63    mation..       c
024630:  61 6E 20 62 65 20 66 6F 75 6E 64 20 69 6E 20 73    an be found in s
024640:  65 63 74 69 6F 6E 73 20 38 2E 34 20 6F 6E 77 61    ections 8.4 onwa
024650:  72 64 73 2E 20 49 6E 20 74 68 65 20 63 61 73 65    rds. In the case
024660:  20 6F 66 20 56 31 2E 31 20 6D 61 63 68 69 6E 65     of V1.1 machine
024670:  73 20 20 6F 72 0D 0A 20 20 20 20 20 20 20 74 68    s  or..       th
024680:  65 20 43 50 43 34 36 34 20 77 69 74 68 20 61 20    e CPC464 with a 
024690:  44 44 49 2D 31 20 66 69 74 74 65 64 2C 20 61 20    DDI-1 fitted, a 
0246A0:  7C 54 41 50 45 20 63 6F 6D 6D 61 6E 64 20 77 69    |TAPE command wi
0246B0:  6C 6C 20 68 61 76 65 20 74 6F 20 20 62 65 20 20    ll have to  be  
0246C0:  75 73 65 64 0D 0A 20 20 20 20 20 20 20 74 6F 20    used..       to 
0246D0:  61 63 63 65 73 73 20 74 68 65 20 54 61 70 65 20    access the Tape 
0246E0:  4F 70 65 72 61 74 69 6E 67 20 53 79 73 74 65 6D    Operating System
0246F0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 38 2E    .......       8.
024700:  31 20 46 69 6C 65 20 46 6F 72 6D 61 74 2E 0D 0A    1 File Format...
024710:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 20 66 69 6C    ....       A fil
024720:  65 20 6F 6E 20 74 61 70 65 20 69 73 20 73 70 6C    e on tape is spl
024730:  69 74 20 69 6E 74 6F 20 62 6C 6F 63 6B 73 20 65    it into blocks e
024740:  61 63 68 20 77 69 74 68 20 61 20 68 65 61 64 65    ach with a heade
024750:  72 20 20 72 65 63 6F 72 64 20 20 61 6E 64 20 20    r  record  and  
024760:  61 0D 0A 20 20 20 20 20 20 20 64 61 74 61 20 72    a..       data r
024770:  65 63 6F 72 64 20 63 6F 6E 74 61 69 6E 69 6E 67    ecord containing
024780:  20 75 70 20 74 6F 20 32 4B 20 28 32 30 34 38 29     up to 2K (2048)
024790:  20 62 79 74 65 73 20 20 6F 66 20 20 64 61 74 61     bytes  of  data
0247A0:  2E 20 20 54 68 65 20 20 63 61 73 73 65 74 74 65    .  The  cassette
0247B0:  0D 0A 20 20 20 20 20 20 20 6D 6F 74 6F 72 20 77    ..       motor w
0247C0:  68 69 63 68 20 69 73 20 75 6E 64 65 72 20 73 6F    hich is under so
0247D0:  66 74 77 61 72 65 20 63 6F 6E 74 72 6F 6C 20 69    ftware control i
0247E0:  73 20 74 75 72 6E 65 64 20 6F 66 66 20 62 65 74    s turned off bet
0247F0:  77 65 65 6E 20 65 61 63 68 20 20 66 69 6C 65 0D    ween each  file.
024800:  0A 20 20 20 20 20 20 20 62 6C 6F 63 6B 20 74 6F    .       block to
024810:  20 61 6C 6C 6F 77 20 74 69 6D 65 20 74 6F 20 70     allow time to p
024820:  72 6F 63 65 73 73 20 74 68 65 20 64 61 74 61 20    rocess the data 
024830:  72 65 61 64 20 6F 72 20 74 6F 20 67 65 6E 65 72    read or to gener
024840:  61 74 65 20 20 74 68 65 20 20 64 61 74 61 0D 0A    ate  the  data..
024850:  20 20 20 20 20 20 20 74 6F 20 62 65 20 77 72 69           to be wri
024860:  74 74 65 6E 2E 20 54 68 65 20 6D 6F 74 6F 72 20    tten. The motor 
024870:  73 74 61 72 74 2D 75 70 20 67 61 70 20 20 61 6C    start-up gap  al
024880:  73 6F 20 20 73 65 72 76 65 73 20 20 74 6F 20 20    so  serves  to  
024890:  73 65 70 61 72 61 74 65 20 20 74 68 65 0D 0A 20    separate  the.. 
0248A0:  20 20 20 20 20 20 62 6C 6F 63 6B 73 20 66 72 6F          blocks fro
0248B0:  6D 20 65 61 63 68 20 6F 74 68 65 72 2E 0D 0A 0D    m each other....
0248C0:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 67 65    ...       The ge
0248D0:  6E 65 72 61 6C 20 66 6F 72 6D 61 74 20 6F 66 20    neral format of 
0248E0:  61 20 62 6C 6F 63 6B 20 69 73 20 61 73 20 66 6F    a block is as fo
0248F0:  6C 6C 6F 77 73 3A 0D 0A 0D 0A 20 20 20 20 20 20    llows:....      
024900:  20 20 20 20 20 20 20 5F 5F 5F 5F 5F 5F 5F 5F 5F           _________
024910:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
024920:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
024930:  5F 5F 5F 5F 5F 0D 0A 20 20 20 20 20 20 20 20 20    _____..         
024940:  20 20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20       |            
024950:  20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20     |              
024960:  20 20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20       |            
024970:  20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20      |..           
024980:  20 7C 20 20 4D 6F 74 6F 72 20 20 20 20 20 20 7C     |  Motor      |
024990:  20 20 20 46 69 6C 65 20 68 65 61 64 65 72 20 20       File header  
0249A0:  20 7C 20 20 20 20 46 69 6C 65 20 64 61 74 61 20     |    File data 
0249B0:  7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 7C    |..            |
0249C0:  20 20 53 74 61 72 74 2D 75 70 20 20 20 7C 20 20      Start-up   |  
0249D0:  20 72 65 63 6F 72 64 20 20 20 20 20 20 20 20 7C     record        |
0249E0:  20 20 20 20 72 65 63 6F 72 64 20 20 20 20 7C 0D        record    |.
0249F0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 7C 5F 5F    .            |__
024A00:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 5F 5F 5F 5F    ___________|____
024A10:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 5F 5F    _____________|__
024A20:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 0D 0A 0D    ____________|...
024A30:  0A 0D 0A 20 20 20 20 20 20 20 48 6F 77 65 76 65    ...       Howeve
024A40:  72 2C 20 74 68 65 20 66 69 72 73 74 20 61 6E 64    r, the first and
024A50:  20 6C 61 73 74 20 62 6C 6F 63 6B 73 20 6F 66 20     last blocks of 
024A60:  20 61 20 20 66 69 6C 65 20 20 68 61 76 65 20 20     a  file  have  
024A70:  61 6E 20 20 65 78 74 72 61 20 20 70 61 75 73 65    an  extra  pause
024A80:  0D 0A 20 20 20 20 20 20 20 62 65 66 6F 72 65 20    ..       before 
024A90:  61 6E 64 20 61 66 74 65 72 20 74 68 65 6D 20 72    and after them r
024AA0:  65 73 70 65 63 74 69 76 65 6C 79 2C 20 74 6F 20    espectively, to 
024AB0:  73 65 70 61 72 61 74 65 20 20 66 69 6C 65 73 20    separate  files 
024AC0:  20 6F 6E 20 20 74 68 65 20 20 74 61 70 65 2E 0D     on  the  tape..
024AD0:  0A 20 20 20 20 20 20 20 54 68 65 69 72 20 66 6F    .       Their fo
024AE0:  72 6D 61 74 73 20 61 72 65 20 74 68 75 73 3A 0D    rmats are thus:.
024AF0:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 46 69 72    ...          Fir
024B00:  73 74 20 62 6C 6F 63 6B 3A 0D 0A 0D 0A 20 20 20    st block:....   
024B10:  20 20 20 20 20 20 20 20 20 5F 5F 5F 5F 5F 5F 5F             _______
024B20:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
024B30:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
024B40:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D    _______________.
024B50:  0A 20 20 20 20 20 20 20 20 20 20 20 7C 20 20 20    .           |   
024B60:  20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20             |      
024B70:  20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20          |         
024B80:  20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20          |         
024B90:  20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20       |..          
024BA0:  20 7C 20 20 4D 6F 74 6F 72 20 20 20 20 20 7C 20     |  Motor     | 
024BB0:  20 20 50 72 65 2D 66 69 6C 65 20 7C 20 20 46 69      Pre-file |  Fi
024BC0:  6C 65 20 68 65 61 64 65 72 20 20 7C 20 20 46 69    le header  |  Fi
024BD0:  6C 65 20 64 61 74 61 20 7C 0D 0A 20 20 20 20 20    le data |..     
024BE0:  20 20 20 20 20 20 7C 20 20 73 74 61 72 74 2D 75          |  start-u
024BF0:  70 20 20 7C 20 20 20 67 61 70 20 20 20 20 20 20    p  |   gap      
024C00:  7C 20 20 72 65 63 6F 72 64 20 20 20 20 20 20 20    |  record       
024C10:  7C 20 20 72 65 63 6F 72 64 20 20 20 20 7C 0D 0A    |  record    |..
024C20:  20 20 20 20 20 20 20 20 20 20 20 7C 5F 5F 5F 5F               |____
024C30:  5F 5F 5F 5F 5F 5F 5F 5F 7C 5F 5F 5F 5F 5F 5F 5F    ________|_______
024C40:  5F 5F 5F 5F 5F 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    _____|__________
024C50:  5F 5F 5F 5F 5F 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    _____|__________
024C60:  5F 5F 7C 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    __|....         
024C70:  20 4C 61 73 74 20 62 6C 6F 63 6B 3A 0D 0A 0D 0A     Last block:....
024C80:  20 20 20 20 20 20 20 20 20 20 20 5F 5F 5F 5F 5F               _____
024C90:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
024CA0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
024CB0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
024CC0:  5F 5F 5F 0D 0A 20 20 20 20 20 20 20 20 20 20 7C    ___..          |
024CD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20 20                 |  
024CE0:  20 20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20              |     
024CF0:  20 20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20              |     
024D00:  20 20 20 20 20 20 20 20 7C 0D 0A 20 20 20 20 20            |..     
024D10:  20 20 20 20 20 7C 20 20 4D 6F 74 6F 72 20 20 20         |  Motor   
024D20:  20 20 20 7C 20 46 69 6C 65 20 68 65 61 64 65 72       | File header
024D30:  7C 20 20 20 46 69 6C 65 20 64 61 74 61 20 20 20    |   File data   
024D40:  7C 20 20 50 6F 73 74 2D 66 69 6C 65 20 20 7C 0D    |  Post-file  |.
024D50:  0A 20 20 20 20 20 20 20 20 20 20 7C 20 20 73 74    .          |  st
024D60:  61 72 74 2D 75 70 20 20 20 7C 20 72 65 63 6F 72    art-up   | recor
024D70:  64 20 20 20 20 20 7C 20 20 20 72 65 63 6F 72 64    d     |   record
024D80:  20 20 20 20 20 20 7C 20 20 67 61 70 20 20 20 20          |  gap    
024D90:  20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20        |..         
024DA0:  20 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C     |_____________|
024DB0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 5F 5F 5F    ____________|___
024DC0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 5F 5F 5F    ____________|___
024DD0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 0D 0A 0D 0A 0D    __________|.....
024DE0:  0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41    ...       AMSTRA
024DF0:  44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32    D CPC464/664/612
024E00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
024E10:  1F 00 00 00 02 09 50 E5 1F 00 C1 02 00 00 00 02    ......P.........
024E20:  1F 00 C2 02 00 00 00 02 1F 00 C3 02 00 00 00 02    ................
024E30:  1F 00 C4 02 00 00 00 02 1F 00 C5 02 00 00 00 02    ................
024E40:  1F 00 C6 02 00 00 00 02 1F 00 C7 02 00 00 00 02    ................
024E50:  1F 00 C8 02 00 00 00 02 1F 00 C9 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:  38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20    8 FIRMWARE      
024F10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
024F20:  20 20 20 20 20 20 20 20 70 61 67 65 20 38 2E 31            page 8.1
024F30:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ..............  
024F40:  20 20 20 20 20 54 68 65 72 65 20 69 73 20 61 20         There is a 
024F50:  73 74 72 6F 6E 67 20 64 69 73 74 69 6E 63 74 69    strong distincti
024F60:  6F 6E 20 62 65 74 77 65 65 6E 20 74 68 65 20 66    on between the f
024F70:  69 6C 65 20 68 65 61 64 65 72 20 72 65 63 6F 72    ile header recor
024F80:  64 20 20 61 6E 64 20 20 74 68 65 0D 0A 20 20 20    d  and  the..   
024F90:  20 20 20 20 66 69 6C 65 20 20 64 61 74 61 20 20        file  data  
024FA0:  72 65 63 6F 72 64 2E 20 20 54 68 65 20 20 68 65    record.  The  he
024FB0:  61 64 65 72 20 20 20 72 65 63 6F 72 64 20 20 20    ader   record   
024FC0:  69 73 20 20 20 77 72 69 74 74 65 6E 20 20 20 75    is   written   u
024FD0:  73 69 6E 67 20 20 20 6F 6E 65 0D 0A 20 20 20 20    sing   one..    
024FE0:  20 20 20 73 79 6E 63 68 72 6F 6E 69 73 61 74 69       synchronisati
024FF0:  6F 6E 20 63 68 61 72 61 63 74 65 72 20 28 23 32    on character (#2
025000:  43 29 20 20 61 6E 64 20 20 74 68 65 20 20 64 61    C)  and  the  da
025010:  74 61 20 20 72 65 63 6F 72 64 20 20 77 69 74 68    ta  record  with
025020:  20 20 61 6E 6F 74 68 65 72 0D 0A 20 20 20 20 20      another..     
025030:  20 20 28 23 31 36 29 2E 20 54 68 69 73 20 6D 65      (#16). This me
025040:  61 6E 73 20 74 68 61 74 20 77 68 65 6E 20 74 68    ans that when th
025050:  65 20 43 61 73 73 65 74 74 65 20 4D 61 6E 61 67    e Cassette Manag
025060:  65 72 20 69 73 20 20 73 65 61 72 63 68 69 6E 67    er is  searching
025070:  20 20 66 6F 72 20 20 61 0D 0A 20 20 20 20 20 20      for  a..      
025080:  20 66 69 6C 65 20 68 65 61 64 65 72 20 69 74 20     file header it 
025090:  69 73 20 69 6D 70 6F 73 73 69 62 6C 65 20 66 6F    is impossible fo
0250A0:  72 20 69 74 20 74 6F 20 66 69 6E 64 20 20 61 20    r it to find  a 
0250B0:  20 66 69 6C 65 20 20 64 61 74 61 20 20 72 65 63     file  data  rec
0250C0:  6F 72 64 20 20 62 79 0D 0A 20 20 20 20 20 20 20    ord  by..       
0250D0:  6D 69 73 74 61 6B 65 2C 20 20 61 6E 64 20 20 76    mistake,  and  v
0250E0:  69 63 65 20 20 76 65 72 73 61 2E 20 20 53 65 65    ice  versa.  See
0250F0:  20 20 38 2E 32 20 20 62 65 6C 6F 77 20 20 66 6F      8.2  below  fo
025100:  72 20 20 74 68 65 20 20 75 73 65 20 20 20 6F 66    r  the  use   of
025110:  20 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 73       the..       s
025120:  79 6E 63 68 72 6F 6E 69 73 61 74 69 6F 6E 20 63    ynchronisation c
025130:  68 61 72 61 63 74 65 72 73 2E 0D 0A 0D 0A 20 20    haracters.....  
025140:  20 20 20 20 20 38 2E 32 20 52 65 63 6F 72 64 20         8.2 Record 
025150:  46 6F 72 6D 61 74 2E 0D 0A 0D 0A 20 20 20 20 20    Format.....     
025160:  20 20 41 20 72 65 63 6F 72 64 20 63 61 6E 20 63      A record can c
025170:  6F 6E 74 61 69 6E 20 61 6E 79 20 6E 75 6D 62 65    ontain any numbe
025180:  72 20 6F 66 20 64 61 74 61 20 62 79 74 65 73 20    r of data bytes 
025190:  66 72 6F 6D 20 20 31 20 20 74 6F 20 20 36 35 35    from  1  to  655
0251A0:  33 36 2E 20 20 54 68 65 0D 0A 20 20 20 20 20 20    36.  The..      
0251B0:  20 64 61 74 61 20 69 73 20 73 70 6C 69 74 20 69     data is split i
0251C0:  6E 74 6F 20 73 65 67 6D 65 6E 74 73 20 65 61 63    nto segments eac
0251D0:  68 20 6F 66 20 77 68 69 63 68 20 69 73 20 32 35    h of which is 25
0251E0:  36 20 62 79 74 65 73 20 6C 6F 6E 67 2E 20 54 68    6 bytes long. Th
0251F0:  65 20 20 6C 61 73 74 0D 0A 20 20 20 20 20 20 20    e  last..       
025200:  73 65 67 6D 65 6E 74 20 69 73 20 70 61 64 64 65    segment is padde
025210:  64 20 20 6F 75 74 20 20 74 6F 20 20 32 35 36 20    d  out  to  256 
025220:  20 62 79 74 65 73 20 20 77 69 74 68 20 20 7A 65     bytes  with  ze
025230:  72 6F 73 20 20 77 68 65 6E 20 20 77 72 69 74 69    ros  when  writi
025240:  6E 67 20 20 69 66 0D 0A 20 20 20 20 20 20 20 6E    ng  if..       n
025250:  65 63 65 73 73 61 72 79 2E 20 57 68 65 6E 20 72    ecessary. When r
025260:  65 61 64 69 6E 67 20 61 20 72 65 63 6F 72 64 20    eading a record 
025270:  61 6E 79 20 65 78 74 72 61 20 62 79 74 65 73 20    any extra bytes 
025280:  61 72 65 20 69 67 6E 6F 72 65 64 20 20 61 6C 74    are ignored  alt
025290:  68 6F 75 67 68 0D 0A 20 20 20 20 20 20 20 74 68    hough..       th
0252A0:  65 79 20 61 72 65 20 61 63 63 75 6D 75 6C 61 74    ey are accumulat
0252B0:  65 64 20 69 6E 74 6F 20 74 68 65 20 43 52 43 2E    ed into the CRC.
0252C0:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 6C    ....       The l
0252D0:  61 79 6F 75 74 20 6F 66 20 61 20 72 65 63 6F 72    ayout of a recor
0252E0:  64 20 69 73 20 61 73 20 66 6F 6C 6C 6F 77 73 3A    d is as follows:
0252F0:  0D 0A 20 20 20 20 20 20 20 20 5F 5F 5F 5F 5F 5F    ..        ______
025300:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
025310:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
025320:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
025330:  5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 20 20 20 20 20    _________..     
025340:  20 20 7C 20 20 20 20 20 20 20 20 20 20 7C 20 20      |          |  
025350:  20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20 20                 |  
025360:  20 20 20 20 20 20 20 20 20 20 20 20 7C 20 20 20                |   
025370:  20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20             |      
025380:  20 20 7C 0D 0A 20 20 20 20 20 20 20 7C 20 4C 65      |..       | Le
025390:  61 64 65 72 20 20 20 7C 20 20 20 53 65 67 6D 65    ader   |   Segme
0253A0:  6E 74 20 31 20 20 20 7C 20 20 2E 2E 2E 2E 2E 2E    nt 1   |  ......
0253B0:  2E 2E 2E 2E 2E 20 7C 20 53 65 67 6D 65 6E 74 20    ..... | Segment 
0253C0:  4E 20 20 7C 20 54 72 61 69 6C 65 72 7C 0D 0A 20    N  | Trailer|.. 
0253D0:  20 20 20 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F          |_________
0253E0:  5F 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    _|______________
0253F0:  5F 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    _|______________
025400:  7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 5F 5F    |____________|__
025410:  5F 5F 5F 5F 5F 5F 7C 0D 0A 0D 0A 20 20 20 20 20    ______|....     
025420:  20 20 54 68 65 72 65 20 61 72 65 20 4E 20 73 65      There are N se
025430:  67 6D 65 6E 74 73 20 77 68 65 72 65 20 32 35 36    gments where 256
025440:  2A 4E 20 69 73 20 74 68 65 20 6C 65 6E 67 74 68    *N is the length
025450:  20 6F 66 20 64 61 74 61 20 28 70 6C 75 73 20 20     of data (plus  
025460:  70 61 64 64 69 6E 67 29 0D 0A 20 20 20 20 20 20    padding)..      
025470:  20 74 6F 20 62 65 20 77 72 69 74 74 65 6E 2E 0D     to be written..
025480:  0A 0D 0A 20 20 20 20 20 20 20 41 20 66 69 6C 65    ...       A file
025490:  20 68 65 61 64 65 72 20 72 65 63 6F 72 64 20 61     header record a
0254A0:  6C 77 61 79 73 20 63 6F 6E 74 61 69 6E 73 20 6F    lways contains o
0254B0:  6E 65 20 73 65 67 6D 65 6E 74 3B 20 61 20 66 69    ne segment; a fi
0254C0:  6C 65 20 20 64 61 74 61 20 20 72 65 63 6F 72 64    le  data  record
0254D0:  0D 0A 20 20 20 20 20 20 20 63 6F 6E 74 61 69 6E    ..       contain
0254E0:  73 20 66 72 6F 6D 20 6F 6E 65 20 74 6F 20 65 69    s from one to ei
0254F0:  67 68 74 20 73 65 67 6D 65 6E 74 73 20 28 75 73    ght segments (us
025500:  75 61 6C 6C 79 20 38 20 73 65 67 6D 65 6E 74 73    ually 8 segments
025510:  29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 61 2E 20    ).....       a. 
025520:  4C 65 61 64 65 72 2E 0D 0A 0D 0A 20 20 20 20 20    Leader.....     
025530:  20 20 41 74 20 74 68 65 20 73 74 61 72 74 20 6F      At the start o
025540:  66 20 20 61 6C 6C 20 20 72 65 63 6F 72 64 73 20    f  all  records 
025550:  20 61 20 20 6C 65 61 64 65 72 20 20 69 73 20 20     a  leader  is  
025560:  77 72 69 74 74 65 6E 20 20 77 68 69 63 68 20 20    written  which  
025570:  68 61 73 20 20 74 68 65 0D 0A 20 20 20 20 20 20    has  the..      
025580:  20 66 6F 6C 6C 6F 77 69 6E 67 20 6C 61 79 6F 75     following layou
025590:  74 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    t:....          
0255A0:  20 20 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F      ______________
0255B0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
0255C0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
0255D0:  5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 20 20 20 20 20 20    ________..      
0255E0:  20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20 20         |          
0255F0:  20 20 20 20 7C 20 20 20 20 20 20 20 20 20 20 20        |           
025600:  20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20            |       
025610:  20 20 7C 20 20 20 20 20 20 20 20 20 7C 0D 0A 20      |         |.. 
025620:  20 20 20 20 20 20 20 20 20 20 7C 20 20 50 72 65              |  Pre
025630:  2D 72 65 63 6F 72 64 20 20 7C 20 20 20 20 20 20    -record  |      
025640:  20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20 20                 |  
025650:  5A 65 72 6F 20 20 20 7C 20 20 20 53 79 6E 63 20    Zero   |   Sync 
025660:  20 7C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 7C     |..           |
025670:  20 20 67 61 70 20 20 20 20 20 20 20 20 20 7C 20      gap         | 
025680:  20 20 32 30 34 38 20 6F 6E 65 20 62 69 74 73 20      2048 one bits 
025690:  20 20 7C 20 20 62 69 74 20 20 20 20 7C 20 20 20      |  bit    |   
0256A0:  62 69 74 20 20 20 7C 0D 0A 20 20 20 20 20 20 20    bit   |..       
0256B0:  20 20 20 20 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F        |___________
0256C0:  5F 5F 5F 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ___|____________
0256D0:  5F 5F 5F 5F 5F 5F 5F 7C 5F 5F 5F 5F 5F 5F 5F 5F    _______|________
0256E0:  5F 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 0D 0A 0D 0A    _|_________|....
0256F0:  20 20 20 20 20 20 20 54 68 65 20 6C 65 61 64 69           The leadi
025700:  6E 67 20 67 61 70 20 69 73 20 74 68 65 72 65 20    ng gap is there 
025710:  74 6F 20 65 6E 73 75 72 65 20 20 74 68 65 20 20    to ensure  the  
025720:  66 61 69 6C 75 72 65 20 20 6F 66 20 20 61 6E 79    failure  of  any
025730:  20 20 61 74 74 65 6D 70 74 20 20 74 6F 0D 0A 20      attempt  to.. 
025740:  20 20 20 20 20 20 73 79 6E 63 68 72 6F 6E 69 73          synchronis
025750:  65 20 6F 6E 20 65 6E 64 20 6F 66 20 61 20 70 72    e on end of a pr
025760:  65 63 65 64 69 6E 67 20 72 65 63 6F 72 64 20 6F    eceding record o
025770:  72 20 6F 6E 20 64 61 74 61 20 74 68 61 74 20 20    r on data that  
025780:  77 61 73 20 20 6F 6E 20 20 74 68 65 0D 0A 20 20    was  on  the..  
025790:  20 20 20 20 20 74 61 70 65 20 61 6E 64 20 74 68         tape and th
0257A0:  61 74 20 68 61 73 20 62 65 65 6E 20 6F 76 65 72    at has been over
0257B0:  2D 72 65 63 6F 72 64 65 64 2E 0D 0A 0D 0A 20 20    -recorded.....  
0257C0:  20 20 20 20 20 54 68 65 20 6C 6F 6E 67 20 73 65         The long se
0257D0:  71 75 65 6E 63 65 20 6F 66 20 6F 6E 65 20 62 69    quence of one bi
0257E0:  74 73 20 69 73 20 75 73 65 64 20 74 6F 20 63 61    ts is used to ca
0257F0:  6C 63 75 6C 61 74 65 20 74 68 65 20 73 70 65 65    lculate the spee
025800:  64 20 61 74 20 20 77 68 69 63 68 0D 0A 20 20 20    d at  which..   
025810:  20 20 20 20 74 68 65 20 64 61 74 61 20 77 61 73        the data was
025820:  20 77 72 69 74 74 65 6E 20 61 6E 64 20 68 65 6E     written and hen
025830:  63 65 20 74 6F 20 63 61 6C 63 75 6C 61 74 65 20    ce to calculate 
025840:  74 68 65 20 74 68 72 65 73 68 6F 6C 64 20 20 76    the threshold  v
025850:  61 6C 75 65 20 20 75 73 65 64 0D 0A 20 20 20 20    alue  used..    
025860:  20 20 20 74 6F 20 64 69 73 74 69 6E 67 75 69 73       to distinguis
025870:  68 20 6F 6E 65 20 62 69 74 73 20 66 72 6F 6D 20    h one bits from 
025880:  7A 65 72 6F 20 62 69 74 73 2E 0D 0A 0D 0A 20 20    zero bits.....  
025890:  20 20 20 20 20 54 68 65 20 73 69 6E 67 6C 65 20         The single 
0258A0:  7A 65 72 6F 20 62 69 74 20 69 73 20 75 73 65 64    zero bit is used
0258B0:  20 74 6F 20 6D 61 72 6B 20 74 68 65 20 69 6D 70     to mark the imp
0258C0:  65 6E 64 69 6E 67 20 65 6E 64 20 20 6F 66 20 20    ending end  of  
0258D0:  74 68 65 20 20 6C 65 61 64 65 72 0D 0A 20 20 20    the  leader..   
0258E0:  20 20 20 20 61 6E 64 20 69 73 20 61 6C 73 6F 20        and is also 
0258F0:  75 73 65 64 20 74 6F 20 64 65 74 65 72 6D 69 6E    used to determin
025900:  65 20 77 68 65 74 68 65 72 20 74 68 65 20 72 65    e whether the re
025910:  63 6F 72 64 69 6E 67 20 68 61 73 20 62 65 65 6E    cording has been
025920:  20 20 69 6E 76 65 72 74 65 64 0D 0A 20 20 20 20      inverted..    
025930:  20 20 20 28 73 65 65 20 73 65 63 74 69 6F 6E 20       (see section 
025940:  38 2E 33 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    8.3).....       
025950:  54 68 65 20 20 73 79 6E 63 68 72 6F 6E 69 73 61    The  synchronisa
025960:  74 69 6F 6E 20 20 62 79 74 65 20 20 69 73 20 20    tion  byte  is  
025970:  74 68 65 72 65 20 20 20 74 6F 20 20 20 68 65 6C    there   to   hel
025980:  70 20 20 20 70 72 65 76 65 6E 74 20 20 20 73 70    p   prevent   sp
025990:  75 72 69 6F 75 73 0D 0A 20 20 20 20 20 20 20 73    urious..       s
0259A0:  79 6E 63 68 72 6F 6E 69 73 61 74 69 6F 6E 20 6F    ynchronisation o
0259B0:  6E 20 73 65 71 75 65 6E 63 65 73 20 6F 66 20 62    n sequences of b
0259C0:  69 74 73 20 73 75 63 68 20 20 61 73 20 20 6D 69    its such  as  mi
0259D0:  67 68 74 20 20 62 65 20 20 66 6F 75 6E 64 20 20    ght  be  found  
0259E0:  69 6E 20 20 61 0D 0A 20 20 20 20 20 20 20 72 65    in  a..       re
0259F0:  63 6F 72 64 2E 20 49 66 20 61 6E 20 69 6E 63 6F    cord. If an inco
025A00:  72 72 65 63 74 20 76 61 6C 75 65 20 66 6F 72 20    rrect value for 
025A10:  74 68 65 20 20 73 79 6E 63 20 20 62 79 74 65 20    the  sync  byte 
025A20:  20 69 73 20 20 66 6F 75 6E 64 20 20 74 68 65 6E     is  found  then
025A30:  20 20 61 6E 0D 0A 20 20 20 20 20 20 20 61 74 74      an..       att
025A40:  65 6D 70 74 20 68 61 73 20 62 65 65 6E 20 6D 61    empt has been ma
025A50:  64 65 20 74 6F 20 73 79 6E 63 68 72 6F 6E 69 73    de to synchronis
025A60:  65 20 6F 6E 20 74 68 65 20 6D 69 64 64 6C 65 20    e on the middle 
025A70:  6F 66 20 61 20 72 65 63 6F 72 64 20 20 6F 72 20    of a record  or 
025A80:  20 6F 6E 0D 0A 20 20 20 20 20 20 20 74 68 65 20     on..       the 
025A90:  77 72 6F 6E 67 20 74 79 70 65 20 6F 66 20 72 65    wrong type of re
025AA0:  63 6F 72 64 2E 20 54 68 69 73 20 62 79 74 65 20    cord. This byte 
025AB0:  20 69 73 20 20 75 73 65 64 20 20 74 6F 20 20 64     is  used  to  d
025AC0:  69 73 74 69 6E 67 75 69 73 68 20 20 68 65 61 64    istinguish  head
025AD0:  65 72 0D 0A 20 20 20 20 20 20 20 72 65 63 6F 72    er..       recor
025AE0:  64 73 20 66 72 6F 6D 20 64 61 74 61 20 72 65 63    ds from data rec
025AF0:  6F 72 64 73 20 69 6E 20 61 20 66 69 6C 65 20 20    ords in a file  
025B00:  62 6C 6F 63 6B 20 20 28 68 65 61 64 65 72 20 20    block  (header  
025B10:  72 65 63 6F 72 64 73 20 20 75 73 65 20 20 23 32    records  use  #2
025B20:  43 0D 0A 20 20 20 20 20 20 20 77 68 69 6C 65 20    C..       while 
025B30:  64 61 74 61 20 72 65 63 6F 72 64 73 20 75 73 65    data records use
025B40:  20 23 31 36 29 2E 0D 0A 0D 0A 20 20 20 20 20 20     #16).....      
025B50:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
025B60:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
025B70:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
025B80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                   p
025B90:  61 67 65 20 38 2E 32 0D 0A 0D 0A 0D 0A 0D 0A 0D    age 8.2.........
025BA0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 62 2E 20 53    .....       b. S
025BB0:  65 67 6D 65 6E 74 73 0D 0A 0D 0A 20 20 20 20 20    egments....     
025BC0:  20 20 45 61 63 68 20 73 65 67 6D 65 6E 74 20 63      Each segment c
025BD0:  6F 6E 74 61 69 6E 73 20 32 35 36 20 64 61 74 61    ontains 256 data
025BE0:  20 62 79 74 65 73 20 61 6E 64 20 68 61 73 20 74     bytes and has t
025BF0:  68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 66 6F 72    he following for
025C00:  6D 61 74 3A 0D 0A 20 20 20 20 20 20 20 20 20 20    mat:..          
025C10:  20 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F     _______________
025C20:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
025C30:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
025C40:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 0A 20 20    ____________..  
025C50:  20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20            |       
025C60:  20 20 7C 20 20 20 20 20 20 20 20 20 20 7C 20 20      |          |  
025C70:  20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20            |       
025C80:  20 20 20 7C 20 20 20 20 20 20 20 7C 20 20 20 20       |       |    
025C90:  20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20 20 20        |..         
025CA0:  20 7C 20 20 42 79 74 65 20 31 20 7C 20 20 42 79     |  Byte 1 |  By
025CB0:  74 65 20 32 20 20 7C 2E 2E 2E 2E 2E 2E 2E 2E 2E    te 2  |.........
025CC0:  2E 7C 20 42 79 74 65 20 32 35 36 20 7C 20 43 52    .| Byte 256 | CR
025CD0:  43 20 31 20 7C 20 20 43 52 43 20 32 20 7C 0D 0A    C 1 |  CRC 2 |..
025CE0:  20 20 20 20 20 20 20 20 20 20 7C 5F 5F 5F 5F 5F              |_____
025CF0:  5F 5F 5F 5F 7C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C    ____|__________|
025D00:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 7C 5F 5F 5F 5F 5F    __________|_____
025D10:  5F 5F 5F 5F 5F 7C 5F 5F 5F 5F 5F 5F 5F 7C 5F 5F    _____|_______|__
025D20:  5F 5F 5F 5F 5F 5F 7C 0D 0A 0D 0A 20 20 20 20 20    ______|....     
025D30:  20 20 27 43 52 43 20 31 27 20 69 73 20 74 68 65      'CRC 1' is the
025D40:  20 6D 6F 72 65 20 73 69 67 6E 69 66 69 63 61 6E     more significan
025D50:  74 20 62 79 74 65 20 61 6E 64 20 27 43 52 43 20    t byte and 'CRC 
025D60:  32 27 20 74 68 65 20 6C 65 73 73 20 20 73 69 67    2' the less  sig
025D70:  6E 69 66 69 63 61 6E 74 0D 0A 0D 0A 20 20 20 20    nificant....    
025D80:  20 20 20 62 79 74 65 20 6F 66 20 74 68 65 20 6C       byte of the l
025D90:  6F 67 69 63 61 6C 20 4E 4F 54 20 6F 66 20 74 68    ogical NOT of th
025DA0:  65 20 43 52 43 20 63 61 6C 63 75 6C 61 74 65 64    e CRC calculated
025DB0:  20 66 6F 72 20 74 68 65 20 32 35 36 20 62 79 74     for the 256 byt
025DC0:  65 73 20 69 6E 20 74 68 65 0D 0A 20 20 20 20 20    es in the..     
025DD0:  20 20 73 65 67 6D 65 6E 74 2E 20 28 54 68 65 20      segment. (The 
025DE0:  43 52 43 20 70 6F 6C 79 6E 6F 6D 69 6E 61 6C 20    CRC polynominal 
025DF0:  75 73 65 64 20 20 69 73 20 20 27 58 28 31 35 29    used  is  'X(15)
025E00:  2B 58 28 31 32 29 2B 58 28 35 29 2B 31 27 20 20    +X(12)+X(5)+1'  
025E10:  77 69 74 68 20 20 61 6E 0D 0A 20 20 20 20 20 20    with  an..      
025E20:  20 69 6E 69 74 69 61 6C 20 73 70 65 65 64 20 6F     initial speed o
025E30:  66 20 23 46 46 46 46 29 2E 20 28 4E 75 6D 62 65    f #FFFF). (Numbe
025E40:  72 73 20 69 6E 20 62 72 61 63 6B 65 74 73 20 6D    rs in brackets m
025E50:  65 61 6E 73 20 73 71 75 61 72 65 64 29 2E 0D 0A    eans squared)...
025E60:  0D 0A 20 20 20 20 20 20 20 63 2E 20 54 72 61 69    ..       c. Trai
025E70:  6C 65 72 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    ler....       Th
025E80:  65 20 74 72 61 69 6C 65 72 20 69 73 20 73 69 6D    e trailer is sim
025E90:  70 6C 79 20 61 6E 20 65 78 74 72 61 20 33 32 20    ply an extra 32 
025EA0:  6F 6E 65 20 62 69 74 73 20 77 72 69 74 74 65 6E    one bits written
025EB0:  20 74 6F 20 74 68 65 20 65 6E 64 20 20 6F 66 20     to the end  of 
025EC0:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 72 65 63     the..       rec
025ED0:  6F 72 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 38    ord.....       8
025EE0:  2E 33 20 42 69 74 20 46 6F 72 6D 61 74 2E 0D 0A    .3 Bit Format...
025EF0:  0D 0A 20 20 20 20 20 20 20 41 20 62 69 74 20 69    ..       A bit i
025F00:  73 20 77 72 69 74 74 65 6E 20 74 6F 20 74 68 65    s written to the
025F10:  20 74 61 70 65 20 61 73 20 61 20 70 65 72 69 6F     tape as a perio
025F20:  64 20 6F 66 20 6C 6F 77 20 6C 65 76 65 6C 20 66    d of low level f
025F30:  6F 6C 6C 6F 77 65 64 20 20 62 79 20 20 61 6E 0D    ollowed  by  an.
025F40:  0A 20 20 20 20 20 20 20 65 71 75 61 6C 20 70 65    .       equal pe
025F50:  72 69 6F 64 20 6F 66 20 68 69 67 68 20 6C 65 76    riod of high lev
025F60:  65 6C 2E 20 41 20 6F 6E 65 20 69 73 20 77 72 69    el. A one is wri
025F70:  74 74 65 6E 20 74 6F 20 74 68 65 20 20 74 61 70    tten to the  tap
025F80:  65 20 20 77 69 74 68 20 20 74 68 65 73 65 0D 0A    e  with  these..
025F90:  20 20 20 20 20 20 20 70 65 72 69 6F 64 73 20 74           periods t
025FA0:  77 69 63 65 20 61 73 20 6C 6F 6E 67 20 61 73 20    wice as long as 
025FB0:  74 68 6F 73 65 20 6F 66 20 7A 65 72 6F 2E 20 54    those of zero. T
025FC0:  68 65 20 6C 65 6E 67 74 68 20 6F 66 20 74 68 65    he length of the
025FD0:  20 70 65 72 69 6F 64 20 66 6F 72 20 61 0D 0A 20     period for a.. 
025FE0:  20 20 20 20 20 20 7A 65 72 6F 20 63 61 6E 20 62          zero can b
025FF0:  65 20 73 65 74 20 62 79 20 74 68 65 20 75 73 65    e set by the use
026000:  72 20 28 73 65 65 20 43 41 53 20 53 45 54 20 53    r (see CAS SET S
026010:  50 45 45 44 29 2E 0D 0A 0D 0A 20 20 20 20 20 20    PEED).....      
026020:  20 54 68 65 20 74 61 70 65 20 63 69 72 63 75 69     The tape circui
026030:  74 72 79 20 68 61 73 20 61 20 74 65 6E 64 65 6E    try has a tenden
026040:  63 79 20 20 74 6F 20 20 6D 6F 76 65 20 20 74 68    cy  to  move  th
026050:  65 20 20 70 6F 73 69 74 69 6F 6E 73 20 20 6F 66    e  positions  of
026060:  20 20 65 64 67 65 73 0D 0A 20 20 20 20 20 20 20      edges..       
026070:  28 74 72 61 6E 73 69 74 69 6F 6E 73 20 66 72 6F    (transitions fro
026080:  6D 20 68 69 67 68 20 74 6F 20 6C 6F 77 20 6F 72    m high to low or
026090:  20 6C 6F 77 20 74 6F 20 68 69 67 68 29 20 73 6F     low to high) so
0260A0:  20 61 73 20 74 6F 20 62 61 6C 61 6E 63 65 20 6F     as to balance o
0260B0:  75 74 20 74 68 65 0D 0A 20 20 20 20 20 20 20 64    ut the..       d
0260C0:  69 66 66 65 72 65 6E 63 65 20 62 65 74 77 65 65    ifference betwee
0260D0:  6E 20 6F 6E 65 73 20 61 6E 64 20 7A 65 72 6F 73    n ones and zeros
0260E0:  20 77 72 69 74 74 65 6E 20 74 6F 20 74 61 70 65     written to tape
0260F0:  2E 20 50 72 65 63 6F 6D 70 65 6E 73 61 74 69 6F    . Precompensatio
026100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
026110:  20 00 00 00 02 09 50 E5 20 00 C1 02 00 00 00 02     .....P. .......
026120:  20 00 C2 02 00 00 00 02 20 00 C3 02 00 00 00 02     ....... .......
026130:  20 00 C4 02 00 00 00 02 20 00 C5 02 00 00 00 02     ....... .......
026140:  20 00 C6 02 00 00 00 02 20 00 C7 02 00 00 00 02     ....... .......
026150:  20 00 C8 02 00 00 00 02 20 00 C9 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:  6E 20 20 69 73 0D 0A 20 20 20 20 20 20 20 75 73    n  is..       us
026210:  65 64 20 2D 20 77 68 69 63 68 20 61 64 64 73 20    ed - which adds 
026220:  74 6F 20 74 68 65 20 70 65 72 69 6F 64 20 6F 66    to the period of
026230:  20 6F 6E 65 20 20 62 69 74 20 20 61 6E 64 20 20     one  bit  and  
026240:  73 75 62 74 72 61 63 74 73 20 20 66 72 6F 6D 20    subtracts  from 
026250:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 70 65 72     the..       per
026260:  69 6F 64 20 6F 66 20 61 20 7A 65 72 6F 20 62 69    iod of a zero bi
026270:  74 20 74 6F 20 6D 61 6B 65 20 74 68 65 20 77 61    t to make the wa
026280:  76 65 66 6F 72 6D 20 63 6C 6F 73 65 72 20 74 6F    veform closer to
026290:  20 74 68 65 20 69 64 65 61 6C 20 77 68 65 6E 20     the ideal when 
0262A0:  20 69 74 0D 0A 20 20 20 20 20 20 20 69 73 20 72     it..       is r
0262B0:  65 61 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 57    ead.....       W
0262C0:  68 65 6E 20 72 65 61 64 69 6E 67 2C 20 74 68 65    hen reading, the
0262D0:  20 73 70 65 65 64 20 61 74 20 77 68 69 63 68 20     speed at which 
0262E0:  74 68 65 20 72 65 63 6F 72 64 69 6E 67 20 77 61    the recording wa
0262F0:  73 20 6D 61 64 65 20 69 73 20 20 64 65 74 65 72    s made is  deter
026300:  6D 69 6E 65 64 0D 0A 20 20 20 20 20 20 20 62 79    mined..       by
026310:  20 74 69 6D 69 6E 67 20 74 68 65 20 6F 6E 65 20     timing the one 
026320:  62 69 74 73 20 69 6E 20 20 74 68 65 20 20 72 65    bits in  the  re
026330:  63 6F 72 64 20 20 6C 65 61 64 65 72 2E 20 20 41    cord  leader.  A
026340:  73 20 20 74 68 69 73 20 20 69 73 20 20 61 20 20    s  this  is  a  
026350:  6C 6F 6E 67 0D 0A 20 20 20 20 20 20 20 73 65 71    long..       seq
026360:  75 65 6E 63 65 20 20 6F 66 20 20 74 68 65 20 20    uence  of  the  
026370:  73 61 6D 65 20 20 62 69 74 20 20 74 68 65 20 20    same  bit  the  
026380:  65 64 67 65 73 20 20 61 72 65 20 20 6E 6F 74 20    edges  are  not 
026390:  20 73 68 69 66 74 65 64 20 20 20 61 6E 64 20 20     shifted   and  
0263A0:  20 6E 6F 0D 0A 20 20 20 20 20 20 20 70 72 65 63     no..       prec
0263B0:  6F 6D 70 65 6E 73 61 74 69 6F 6E 20 20 69 73 20    ompensation  is 
0263C0:  20 61 70 70 6C 69 65 64 2E 20 20 20 53 69 6E 63     applied.   Sinc
0263D0:  65 20 20 20 74 68 65 20 20 20 73 70 65 65 64 20    e   the   speed 
0263E0:  20 20 69 73 20 20 20 65 73 74 61 62 6C 69 73 68      is   establish
0263F0:  65 64 0D 0A 20 20 20 20 20 20 20 69 6E 64 65 70    ed..       indep
026400:  65 6E 64 65 6E 74 6C 79 20 66 6F 72 20 65 61 63    endently for eac
026410:  68 20 72 65 63 6F 72 64 20 74 68 69 73 20 61 75    h record this au
026420:  74 6F 6D 61 74 69 63 61 6C 6C 79 20 20 74 61 6B    tomatically  tak
026430:  65 73 20 20 69 6E 74 6F 20 20 61 63 63 6F 75 6E    es  into  accoun
026440:  74 0D 0A 20 20 20 20 20 20 20 6D 6F 73 74 20 74    t..       most t
026450:  61 70 65 20 73 70 65 65 64 20 76 61 72 69 61 74    ape speed variat
026460:  69 6F 6E 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    ions.....       
026470:  44 61 74 61 20 69 73 20 77 72 69 74 74 65 6E 20    Data is written 
026480:  6C 6F 77 2D 68 69 67 68 20 62 75 74 20 6D 61 79    low-high but may
026490:  20 62 75 74 20 6D 61 79 20 62 65 20 69 6E 76 65     but may be inve
0264A0:  72 74 65 64 20 77 68 65 6E 20 20 72 65 61 64 20    rted when  read 
0264B0:  20 28 69 2E 65 2E 0D 0A 20 20 20 20 20 20 20 68     (i.e...       h
0264C0:  69 67 68 2D 6C 6F 77 29 2E 20 49 74 20 69 73 20    igh-low). It is 
0264D0:  69 6D 70 6F 72 74 61 6E 74 20 66 6F 72 20 74 68    important for th
0264E0:  65 20 66 69 72 6D 77 61 72 65 20 74 6F 20 64 65    e firmware to de
0264F0:  74 65 72 6D 69 6E 65 20 20 77 68 65 74 68 65 72    termine  whether
026500:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 77 61      the..       wa
026510:  76 65 66 6F 72 6D 20 62 65 69 6E 67 20 72 65 61    veform being rea
026520:  64 20 69 73 20 69 6E 76 65 72 74 65 64 20 6F 72    d is inverted or
026530:  20 6E 6F 74 2E 20 49 66 20 74 68 69 73 20 69 73     not. If this is
026540:  20 6E 6F 74 20 20 61 63 68 69 65 76 65 64 20 20     not  achieved  
026550:  74 68 65 6E 0D 0A 20 20 20 20 20 20 20 74 68 65    then..       the
026560:  20 62 69 74 73 20 77 69 6C 6C 20 6E 6F 74 20 62     bits will not b
026570:  65 20 72 65 61 64 20 70 72 6F 70 65 72 6C 79 20    e read properly 
026580:  61 73 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67    as the following
026590:  20 65 78 61 6D 70 6C 65 20 73 68 6F 77 73 3A 0D     example shows:.
0265A0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
0265B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3A                   :
0265C0:  20 20 20 20 20 20 3A 20 20 20 20 20 20 20 3A 20          :       : 
0265D0:  20 20 20 20 20 20 20 20 20 20 3A 20 20 20 20 20              :     
0265E0:  20 20 20 20 20 20 3A 0D 0A 20 20 20 20 20 20 20          :..       
0265F0:  49 6E 76 65 72 73 69 6F 6E 20 64 65 74 65 63 74    Inversion detect
026600:  65 64 3A 20 20 20 20 3A 5F 5F 30 20 20 20 3A 5F    ed:    :__0   :_
026610:  5F 5F 30 20 20 20 3A 5F 5F 5F 5F 5F 31 20 20 20    __0   :_____1   
026620:  20 20 3A 5F 5F 5F 5F 5F 31 20 20 20 20 20 3A 0D      :_____1     :.
026630:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
026640:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026650:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
026660:  20 20 20 20 7C 20 20 20 20 20 7C 20 20 20 20 20        |     |     
026670:  7C 20 20 20 20 20 7C 0D 0A 20 20 20 20 20 20 20    |     |..       
026680:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026690:  20 20 20 20 20 20 20 20 20 20 7C 20 20 20 7C 20              |   | 
0266A0:  20 20 7C 20 20 20 7C 20 20 20 20 20 7C 20 20 20      |   |     |   
0266B0:  20 20 7C 20 20 20 20 20 7C 20 20 20 20 20 7C 0D      |     |     |.
0266C0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
0266D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0266E0:  20 20 7C 5F 5F 5F 7C 20 20 20 7C 5F 5F 5F 7C 20      |___|   |___| 
0266F0:  20 20 20 20 7C 5F 5F 5F 5F 5F 7C 20 20 20 20 20        |_____|     
026700:  7C 5F 5F 5F 5F 5F 7C 0D 0A 20 20 20 20 20 20 20    |_____|..       
026710:  49 6E 76 65 72 73 69 6F 6E 73 20 6E 6F 74 20 64    Inversions not d
026720:  65 74 65 63 74 65 64 3A 20 20 3A 20 20 20 30 20    etected:  :   0 
026730:  20 20 3A 20 20 20 20 3F 20 20 20 20 3A 20 20 20      :    ?    :   
026740:  20 20 31 20 20 20 20 20 3A 0D 0A 20 20 20 20 20      1     :..     
026750:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026760:  20 20 20 20 20 20 20 20 20 20 20 20 3A 20 20 20                :   
026770:  20 20 20 20 3A 20 20 20 20 20 20 20 20 20 3A 20        :         : 
026780:  20 20 20 20 20 20 20 20 20 20 3A 0D 0A 0D 0A 20              :.... 
026790:  20 20 20 20 20 20 54 68 65 20 7A 65 72 6F 20 62          The zero b
0267A0:  69 74 20 69 6E 20 74 68 65 20 72 65 63 6F 72 64    it in the record
0267B0:  20 6C 65 61 64 65 72 20 69 73 20 75 73 65 64 20     leader is used 
0267C0:  20 74 6F 20 20 64 65 74 65 72 6D 69 6E 65 20 20     to  determine  
0267D0:  77 68 65 74 68 65 72 20 20 74 68 65 0D 0A 20 20    whether  the..  
0267E0:  20 20 20 20 20 72 65 63 6F 72 64 69 6E 67 20 68         recording h
0267F0:  61 73 20 62 65 65 6E 20 69 6E 76 65 72 74 65 64    as been inverted
026800:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 42 79 74 65    .....       Byte
026810:  73 20 77 72 69 74 74 65 6E 20 74 6F 20 74 68 65    s written to the
026820:  20 74 61 70 65 20 61 72 65 20 77 72 69 74 74 65     tape are writte
026830:  6E 20 77 69 74 68 20 74 68 65 20 20 6D 6F 73 74    n with the  most
026840:  20 20 73 69 67 6E 69 66 69 63 61 6E 74 20 20 62      significant  b
026850:  69 74 0D 0A 20 20 20 20 20 20 20 66 69 72 73 74    it..       first
026860:  20 61 6E 64 20 74 68 65 20 6C 65 61 73 74 20 73     and the least s
026870:  69 67 6E 69 66 69 63 61 6E 74 20 62 69 74 20 6C    ignificant bit l
026880:  61 73 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ast.......      
026890:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
0268A0:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
0268B0:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
0268C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                   p
0268D0:  61 67 65 20 38 2E 33 0D 0A 0D 0A 0D 0A 0D 0A 0D    age 8.3.........
0268E0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 38 2E 34 20    .....       8.4 
0268F0:  54 68 65 20 48 65 61 64 65 72 20 52 65 63 6F 72    The Header Recor
026900:  64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    d.....       The
026910:  20 68 65 61 64 65 72 20 72 65 63 6F 72 64 20 69     header record i
026920:  6E 20 61 20 66 69 6C 65 20 62 6C 6F 63 6B 20 63    n a file block c
026930:  6F 6E 74 61 69 6E 73 20 69 6E 66 6F 72 6D 61 74    ontains informat
026940:  69 6F 6E 20 61 62 6F 75 74 20 74 68 65 20 20 66    ion about the  f
026950:  69 6C 65 0D 0A 20 20 20 20 20 20 20 61 6E 64 20    ile..       and 
026960:  61 62 6F 75 74 20 74 68 65 20 64 61 74 61 20 69    about the data i
026970:  6E 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20    n the following 
026980:  64 61 74 61 20 72 65 63 6F 72 64 2E 20 53 6F 6D    data record. Som
026990:  65 20 6F 66 20 20 74 68 65 20 20 65 6E 74 72 69    e of  the  entri
0269A0:  65 73 0D 0A 20 20 20 20 20 20 20 69 6E 20 74 68    es..       in th
0269B0:  65 20 68 65 61 64 65 72 20 61 72 65 20 20 75 73    e header are  us
0269C0:  65 64 20 20 62 79 20 20 74 68 65 20 20 73 79 73    ed  by  the  sys
0269D0:  74 65 6D 20 20 66 6F 72 20 20 76 61 72 69 6F 75    tem  for  variou
0269E0:  73 20 20 70 75 72 70 6F 73 65 73 2E 20 20 54 68    s  purposes.  Th
0269F0:  65 0D 0A 20 20 20 20 20 20 20 72 65 6D 61 69 6E    e..       remain
026A00:  69 6E 67 20 65 6E 74 72 69 65 73 20 61 72 65 20    ing entries are 
026A10:  61 76 61 69 6C 61 62 6C 65 20 66 6F 72 20 74 68    available for th
026A20:  65 20 75 73 65 72 20 74 6F 20 20 73 65 74 20 20    e user to  set  
026A30:  77 68 65 6E 20 20 77 72 69 74 69 6E 67 20 20 61    when  writing  a
026A40:  0D 0A 20 20 20 20 20 20 20 66 69 6C 65 2C 20 61    ..       file, a
026A50:  6E 64 20 74 6F 20 72 65 61 64 20 77 68 65 6E 20    nd to read when 
026A60:  72 65 61 64 69 6E 67 20 61 20 66 69 6C 65 2E 20    reading a file. 
026A70:  54 68 65 73 65 20 65 6E 74 72 69 65 73 20 61 72    These entries ar
026A80:  65 20 74 68 65 20 66 69 6C 65 20 74 79 70 65 0D    e the file type.
026A90:  0A 20 20 20 20 20 20 20 28 62 79 74 65 20 31 38    .       (byte 18
026AA0:  29 20 61 6E 64 20 61 6C 6C 20 74 68 65 20 75 73    ) and all the us
026AB0:  65 72 20 66 69 65 6C 64 73 20 28 62 79 74 65 73    er fields (bytes
026AC0:  20 32 34 2E 2E 33 36 29 20 69 6E 63 6C 75 64 69     24..36) includi
026AD0:  6E 67 20 74 68 65 20 6C 6F 67 69 63 61 6C 0D 0A    ng the logical..
026AE0:  20 20 20 20 20 20 20 6C 65 6E 67 74 68 20 28 62           length (b
026AF0:  79 74 65 73 20 32 34 2E 2E 32 35 29 20 61 6E 64    ytes 24..25) and
026B00:  20 74 68 65 20 65 6E 74 72 79 20 61 64 64 72 65     the entry addre
026B10:  73 73 20 28 62 79 74 65 73 20 32 36 2E 2E 32 37    ss (bytes 26..27
026B20:  29 2E 20 20 54 68 65 20 20 75 73 65 72 0D 0A 20    ).  The  user.. 
026B30:  20 20 20 20 20 20 66 69 65 6C 64 73 20 77 69 6C          fields wil
026B40:  6C 20 61 6C 6C 20 62 65 20 73 65 74 20 74 6F 20    l all be set to 
026B50:  7A 65 72 6F 20 69 66 20 74 68 65 79 20 61 72 65    zero if they are
026B60:  20 6E 6F 74 20 75 73 65 64 2E 0D 0A 0D 0A 20 20     not used.....  
026B70:  20 20 20 20 20 20 20 20 20 20 54 68 65 20 68 65              The he
026B80:  61 64 65 72 20 69 73 20 6C 61 69 64 20 6F 75 74    ader is laid out
026B90:  20 61 73 20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A     as follows:....
026BA0:  20 20 20 20 20 20 20 20 20 20 20 20 53 79 73 74                Syst
026BB0:  65 6D 20 66 69 65 6C 64 73 0D 0A 0D 0A 20 20 20    em fields....   
026BC0:  20 20 20 20 20 20 20 20 20 42 79 74 65 73 20 30             Bytes 0
026BD0:  2E 2E 31 35 20 20 20 46 69 6C 65 6E 61 6D 65 20    ..15   Filename 
026BE0:  20 20 20 20 20 20 50 61 64 64 65 64 20 74 6F 20          Padded to 
026BF0:  31 36 20 62 79 74 65 73 20 77 69 74 68 20 6E 75    16 bytes with nu
026C00:  6C 6C 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20    lls.....        
026C10:  20 20 20 20 42 79 74 65 20 31 36 20 20 20 20 20        Byte 16     
026C20:  20 20 42 6C 6F 63 6B 20 6E 75 6D 62 65 72 20 20      Block number  
026C30:  20 54 68 65 20 66 69 72 73 74 20 62 6C 6F 63 6B     The first block
026C40:  20 69 73 20 6E 6F 72 6D 61 6C 6C 79 20 62 6C 6F     is normally blo
026C50:  63 6B 20 20 31 0D 0A 20 20 20 20 20 20 20 20 20    ck  1..         
026C60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026C70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026C80:  61 6E 64 20 62 6C 6F 63 6B 20 6E 75 6D 62 65 72    and block number
026C90:  73 20 69 6E 63 72 65 61 73 65 20 62 79 20 20 31    s increase by  1
026CA0:  20 20 6F 6E 0D 0A 20 20 20 20 20 20 20 20 20 20      on..          
026CB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026CC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                   s
026CD0:  75 63 63 65 73 73 69 76 65 20 62 6C 6F 63 6B 73    uccessive blocks
026CE0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    .....           
026CF0:  20 42 79 74 65 20 31 37 20 20 20 20 20 20 20 4C     Byte 17       L
026D00:  61 73 74 20 62 6C 6F 63 6B 20 20 20 20 20 41 20    ast block     A 
026D10:  6E 6F 6E 2D 7A 65 72 6F 20 76 61 6C 75 65 20 6D    non-zero value m
026D20:  65 61 6E 73 20 74 68 61 74 20 74 68 69 73 20 20    eans that this  
026D30:  69 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    is..            
026D40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026D50:  20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 65                 the
026D60:  20 6C 61 73 74 20 62 6C 6F 63 6B 20 6F 66 20 61     last block of a
026D70:  20 66 69 6C 65 2E 0D 0A 0D 0A 20 20 20 20 20 20     file.....      
026D80:  20 20 20 20 20 20 42 79 74 65 20 31 38 20 20 20          Byte 18   
026D90:  20 20 20 20 46 69 6C 65 20 74 79 70 65 20 20 20        File type   
026DA0:  20 20 20 41 20 76 61 6C 75 65 20 72 65 63 6F 72       A value recor
026DB0:  64 69 6E 67 20 74 68 65 20 20 74 79 70 65 20 20    ding the  type  
026DC0:  6F 66 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20    of  the..       
026DD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026DE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026DF0:  20 20 66 69 6C 65 20 28 73 65 65 20 62 65 6C 6F      file (see belo
026E00:  77 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    w).....         
026E10:  20 20 20 42 79 74 65 73 20 31 39 2E 2E 32 30 20       Bytes 19..20 
026E20:  20 44 61 74 61 20 6C 65 6E 67 74 68 20 20 20 20     Data length    
026E30:  54 68 65 20 20 6E 75 6D 62 65 72 20 20 6F 66 20    The  number  of 
026E40:  20 64 61 74 61 20 20 62 79 74 65 73 20 20 69 6E     data  bytes  in
026E50:  20 20 20 61 0D 0A 20 20 20 20 20 20 20 20 20 20       a..          
026E60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026E70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                   r
026E80:  65 63 6F 72 64 2E 0D 0A 0D 0A 20 20 20 20 20 20    ecord.....      
026E90:  20 20 20 20 20 20 42 79 74 65 73 20 32 31 2E 2E          Bytes 21..
026EA0:  32 32 20 20 44 61 74 61 20 6C 6F 63 61 74 69 6F    22  Data locatio
026EB0:  6E 20 20 57 68 65 72 65 20 20 20 74 68 65 20 20    n  Where   the  
026EC0:  20 64 61 74 61 20 20 20 20 77 61 73 20 20 20 20     data    was    
026ED0:  77 72 69 74 74 65 6E 0D 0A 20 20 20 20 20 20 20    written..       
026EE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026EF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026F00:  20 20 6F 72 69 67 69 6E 61 6C 6C 79 2E 0D 0A 20      originally... 
026F10:  20 20 20 20 20 20 20 20 20 20 20 42 79 74 65 20               Byte 
026F20:  32 33 20 20 20 20 20 20 20 46 69 72 73 74 20 62    23       First b
026F30:  6C 6F 63 6B 20 20 20 20 41 20 6E 6F 6E 2D 7A 65    lock    A non-ze
026F40:  72 6F 20 76 61 6C 75 65 20 6D 65 61 6E 73 20 74    ro value means t
026F50:  68 61 74 20 74 68 69 73 20 20 69 73 0D 0A 20 20    hat this  is..  
026F60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026F70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026F80:  20 20 20 20 20 20 20 74 68 65 20 66 69 72 73 74           the first
026F90:  20 62 6C 6F 63 6B 20 6F 66 20 61 20 66 69 6C 65     block of a file
026FA0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    .....           
026FB0:  20 55 73 65 72 20 66 69 65 6C 64 73 0D 0A 0D 0A     User fields....
026FC0:  20 20 20 20 20 20 20 20 20 20 20 20 42 79 74 65                Byte
026FD0:  73 20 32 34 2E 2E 32 35 20 20 4C 6F 67 69 63 61    s 24..25  Logica
026FE0:  6C 20 6C 65 6E 67 74 68 20 54 68 69 73 20 69 73    l length This is
026FF0:  20 74 68 65 20 74 6F 74 61 6C 20 6C 65 6E 67 74     the total lengt
027000:  68 20 6F 66 20 74 68 65 20 66 69 6C 65 0D 0A 20    h of the file.. 
027010:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027020:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027030:  20 20 20 20 20 20 20 20 69 6E 20 62 79 74 65 73            in bytes
027040:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    .....           
027050:  20 42 79 74 65 73 20 32 36 2E 2E 32 37 20 20 45     Bytes 26..27  E
027060:  6E 74 72 79 20 61 64 64 72 65 73 73 20 20 54 68    ntry address  Th
027070:  65 20 65 78 65 63 75 74 69 6F 6E 20 20 61 64 64    e execution  add
027080:  72 65 73 73 20 20 66 6F 72 20 20 6D 61 63 68 69    ress  for  machi
027090:  6E 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ne..            
0270A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0270B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 63 6F 64                 cod
0270C0:  65 20 70 72 6F 67 72 61 6D 73 2E 0D 0A 0D 0A 20    e programs..... 
0270D0:  20 20 20 20 20 20 20 20 20 20 20 42 79 74 65 73               Bytes
0270E0:  20 32 38 2E 2E 36 33 20 20 55 6E 61 6C 6C 6F 63     28..63  Unalloc
0270F0:  61 74 65 64 20 20 20 20 54 68 65 73 65 20 61 72    ated    These ar
027100:  65 20 20 75 6E 61 6C 6C 6F 63 61 74 65 64 20 20    e  unallocated  
027110:  61 6E 64 20 20 6D 61 79 20 20 62 65 0D 0A 20 20    and  may  be..  
027120:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027130:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027140:  20 20 20 20 20 20 20 75 73 65 64 20 61 73 20 72           used as r
027150:  65 71 75 69 72 65 64 2E 0D 0A 0D 0A 20 20 20 20    equired.....    
027160:  20 20 20 20 20 20 20 20 54 68 65 20 66 69 6C 65            The file
027170:  20 74 79 70 65 20 28 62 79 74 65 20 31 38 29 20     type (byte 18) 
027180:  69 73 20 73 70 6C 69 74 20 69 6E 74 6F 20 61 20    is split into a 
027190:  6E 75 6D 62 65 72 20 6F 66 20 66 69 65 6C 64 73    number of fields
0271A0:  3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 42    :..            B
0271B0:  69 74 20 30 20 20 20 20 20 20 20 20 20 50 72 6F    it 0         Pro
0271C0:  74 65 63 74 69 6F 6E 20 20 20 20 20 49 66 20 74    tection     If t
0271D0:  68 69 73 20 20 62 69 74 20 20 69 73 20 20 73 65    his  bit  is  se
0271E0:  74 20 20 74 68 65 20 20 66 69 6C 65 20 20 69 73    t  the  file  is
0271F0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
027200:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027210:  20 20 20 20 20 20 20 20 20 20 20 70 72 6F 74 65               prote
027220:  63 74 65 64 20 69 6E 20 73 6F 6D 65 20 77 61 79    cted in some way
027230:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    .....           
027240:  20 42 69 74 73 20 31 2E 2E 33 20 20 20 20 20 46     Bits 1..3     F
027250:  69 6C 65 20 63 6F 6E 74 65 6E 74 73 20 20 30 20    ile contents  0 
027260:  3D 20 49 6E 74 65 72 6E 61 6C 20 42 41 53 49 43    = Internal BASIC
027270:  2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
027280:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027290:  20 20 20 20 20 20 20 20 20 20 20 20 31 20 3D 20                1 = 
0272A0:  42 69 6E 61 72 79 2E 0D 0A 20 20 20 20 20 20 20    Binary...       
0272B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0272C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0272D0:  20 20 32 20 3D 20 53 63 72 65 65 6E 20 69 6D 61      2 = Screen ima
0272E0:  67 65 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ge...           
0272F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027300:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 33 20                  3 
027310:  3D 20 41 53 43 49 49 0D 0A 20 20 20 20 20 20 20    = ASCII..       
027320:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027330:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027340:  20 20 34 2E 2E 37 20 61 72 65 20 75 6E 61 6C 6C      4..7 are unall
027350:  6F 63 61 74 65 64 2E 0D 0A 0D 0A 20 20 20 20 20    ocated.....     
027360:  20 20 20 20 20 20 20 42 69 74 73 20 34 2E 2E 37           Bits 4..7
027370:  20 20 20 20 20 56 65 72 73 69 6F 6E 20 20 20 20         Version    
027380:  20 20 20 20 41 53 43 49 49 20 66 69 6C 65 73 20        ASCII files 
027390:  73 68 6F 75 6C 64 20 62 65 20 76 65 72 73 69 6F    should be versio
0273A0:  6E 20 31 2C 20 61 6C 6C 0D 0A 20 20 20 20 20 20    n 1, all..      
0273B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0273C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0273D0:  20 20 20 6F 74 68 65 72 20 66 69 6C 65 73 20 73       other files s
0273E0:  68 6F 75 6C 64 20 62 65 20 76 65 72 73 69 6F 6E    hould be version
0273F0:  20 30 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D     0.....       AM
027400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
027410:  21 00 00 00 02 09 50 E5 21 00 C1 02 00 00 00 02    !.....P.!.......
027420:  21 00 C2 02 00 00 00 02 21 00 C3 02 00 00 00 02    !.......!.......
027430:  21 00 C4 02 00 00 00 02 21 00 C5 02 00 00 00 02    !.......!.......
027440:  21 00 C6 02 00 00 00 02 21 00 C7 02 00 00 00 02    !.......!.......
027450:  21 00 C8 02 00 00 00 02 21 00 C9 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:  53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34    STRAD CPC464/664
027510:  2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20    /6128 FIRMWARE  
027520:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027530:  20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65                page
027540:  20 38 2E 34 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A     8.4............
027550:  0D 0A 20 20 20 20 20 20 20 38 2E 35 20 52 65 61    ..       8.5 Rea
027560:  64 20 61 6E 64 20 57 72 69 74 65 20 53 70 65 65    d and Write Spee
027570:  64 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    ds.....       Th
027580:  65 20 43 61 73 73 65 74 74 65 20 4D 61 6E 61 67    e Cassette Manag
027590:  65 72 20 69 73 20 63 61 70 61 62 6C 65 20 6F 66    er is capable of
0275A0:  20 72 65 61 64 69 6E 67 20 61 6E 64 20 77 72 69     reading and wri
0275B0:  74 69 6E 67 20 64 61 74 65 20 61 74 20 20 73 70    ting date at  sp
0275C0:  65 65 64 73 0D 0A 20 20 20 20 20 20 20 72 61 6E    eeds..       ran
0275D0:  67 69 6E 67 20 66 72 6F 6D 20 37 30 30 20 62 61    ging from 700 ba
0275E0:  75 64 20 74 6F 20 32 35 30 30 20 62 61 75 64 2E    ud to 2500 baud.
0275F0:  20 54 68 65 72 65 20 61 72 65 20 74 77 6F 20 73     There are two s
027600:  70 65 65 64 73 20 63 6F 6D 6D 6F 6E 6C 79 20 75    peeds commonly u
027610:  73 65 64 0D 0A 20 20 20 20 20 20 20 69 6E 20 74    sed..       in t
027620:  68 69 73 20 72 61 6E 67 65 2C 20 31 30 30 30 20    his range, 1000 
027630:  62 61 75 64 20 28 74 68 65 20 64 65 66 61 75 6C    baud (the defaul
027640:  74 20 73 70 65 65 64 20 73 65 6C 65 63 74 65 64    t speed selected
027650:  20 61 74 20 45 4D 53 29 20 61 6E 64 20 20 32 30     at EMS) and  20
027660:  30 30 0D 0A 20 20 20 20 20 20 20 62 61 75 64 2E    00..       baud.
027670:  20 54 68 65 20 64 65 66 61 75 6C 74 20 73 70 65     The default spe
027680:  65 64 20 69 73 20 63 68 6F 73 65 6E 20 74 6F 20    ed is chosen to 
027690:  65 20 6E 65 61 72 20 74 68 65 20 73 6C 6F 77 65    e near the slowe
0276A0:  73 74 20 73 70 65 65 64 20 74 6F 20 20 67 69 76    st speed to  giv
0276B0:  65 0D 0A 20 20 20 20 20 20 20 6D 61 78 69 6D 75    e..       maximu
0276C0:  6D 20 72 65 6C 69 61 62 69 6C 69 74 79 2E 20 54    m reliability. T
0276D0:  68 65 20 72 65 6C 69 61 62 69 6C 69 74 79 20 20    he reliability  
0276E0:  61 74 20 20 32 30 30 30 20 20 62 61 75 64 20 20    at  2000  baud  
0276F0:  69 73 20 20 73 74 69 6C 6C 20 20 67 6F 6F 64 2C    is  still  good,
027700:  0D 0A 20 20 20 20 20 20 20 68 6F 77 65 76 65 72    ..       however
027710:  2C 20 70 61 72 74 69 63 75 6C 61 72 6C 79 20 77    , particularly w
027720:  68 65 6E 20 70 6C 61 79 69 6E 67 20 62 61 63 6B    hen playing back
027730:  20 6F 6E 20 74 68 65 20 73 61 6D 65 20 6D 61 63     on the same mac
027740:  68 69 6E 65 20 20 74 68 61 74 20 20 77 61 73 0D    hine  that  was.
027750:  0A 20 20 20 20 20 20 20 75 73 65 64 20 74 6F 20    .       used to 
027760:  72 65 63 6F 72 64 20 61 20 74 61 70 65 2E 0D 0A    record a tape...
027770:  0D 0A 0D 0A 20 20 20 20 20 20 20 42 69 74 73 20    ....       Bits 
027780:  61 72 65 20 77 72 69 74 74 65 6E 20 74 6F 20 74    are written to t
027790:  68 65 20 74 61 70 65 20 61 73 20 61 20 73 69 6E    he tape as a sin
0277A0:  67 6C 65 20 63 79 63 6C 65 20 6F 66 20 61 20 74    gle cycle of a t
0277B0:  6F 6E 65 2E 20 54 68 65 20 74 6F 6E 65 20 66 6F    one. The tone fo
0277C0:  72 0D 0A 20 20 20 20 20 20 20 61 20 6F 6E 65 20    r..       a one 
0277D0:  61 6C 77 61 79 73 20 68 61 73 20 68 61 6C 66 20    always has half 
0277E0:  74 68 65 20 66 72 65 71 75 65 6E 63 79 20 6F 66    the frequency of
0277F0:  20 74 68 65 20 74 6F 6E 65 20 66 6F 72 20 61 20     the tone for a 
027800:  7A 65 72 6F 2E 20 54 68 75 73 20 20 6F 6E 65 73    zero. Thus  ones
027810:  0D 0A 20 20 20 20 20 20 20 61 72 65 20 74 77 69    ..       are twi
027820:  63 65 20 61 73 20 6C 6F 6E 67 20 61 73 20 7A 65    ce as long as ze
027830:  72 6F 73 20 6F 6E 20 74 68 65 20 74 61 70 65 2E    ros on the tape.
027840:  20 54 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74     This means that
027850:  20 74 68 65 20 62 61 75 64 20 72 61 74 65 73 0D     the baud rates.
027860:  0A 20 20 20 20 20 20 20 67 69 76 65 6E 20 61 62    .       given ab
027870:  6F 76 65 20 61 72 65 20 6F 6E 6C 79 20 61 76 65    ove are only ave
027880:  72 61 67 65 73 20 61 6E 64 20 76 61 72 79 20 61    rages and vary a
027890:  63 63 6F 72 64 69 6E 67 20 74 6F 20 20 74 68 65    ccording to  the
0278A0:  20 20 61 63 74 75 61 6C 20 20 64 61 74 61 0D 0A      actual  data..
0278B0:  20 20 20 20 20 20 20 77 72 69 74 74 65 6E 2E 0D           written..
0278C0:  0A 0D 0A 20 20 20 20 20 20 20 45 76 65 6E 20 77    ...       Even w
0278D0:  69 74 68 20 74 68 65 20 62 75 69 6C 74 20 69 6E    ith the built in
0278E0:  20 63 61 73 73 65 74 74 65 20 6D 65 63 68 61 6E     cassette mechan
0278F0:  69 73 6D 20 74 68 65 20 43 61 73 73 65 74 74 65    ism the Cassette
027900:  20 4D 61 6E 61 67 65 72 20 68 61 73 20 20 74 6F     Manager has  to
027910:  0D 0A 20 20 20 20 20 20 20 70 72 65 63 6F 6D 70    ..       precomp
027920:  65 6E 73 61 74 65 20 74 68 65 20 77 61 76 65 66    ensate the wavef
027930:  6F 72 6D 20 77 72 69 74 74 65 6E 20 74 6F 20 74    orm written to t
027940:  68 65 20 74 61 70 65 20 74 6F 20 61 63 68 69 65    he tape to achie
027950:  76 65 20 20 74 68 65 20 20 73 70 65 65 64 73 0D    ve  the  speeds.
027960:  0A 20 20 20 20 20 20 20 71 75 6F 74 65 64 2E 20    .       quoted. 
027970:  54 68 69 73 20 6D 65 61 6E 73 20 74 68 61 74 20    This means that 
027980:  74 68 65 20 6C 65 6E 67 74 68 73 20 6F 66 20 62    the lengths of b
027990:  69 74 73 20 77 72 69 74 74 65 6E 20 61 72 65 20    its written are 
0279A0:  61 6C 74 65 72 65 64 20 20 28 6F 6E 65 73 0D 0A    altered  (ones..
0279B0:  20 20 20 20 20 20 20 6C 65 6E 67 74 68 65 6E 65           lengthene
0279C0:  64 2C 20 7A 65 72 6F 73 20 73 68 6F 72 74 65 6E    d, zeros shorten
0279D0:  65 64 29 20 74 6F 20 74 72 79 20 74 6F 20 6D 61    ed) to try to ma
0279E0:  6B 65 20 61 20 77 61 76 65 66 6F 72 6D 20 72 65    ke a waveform re
0279F0:  61 64 20 63 6C 6F 73 65 72 20 20 74 6F 0D 0A 20    ad closer  to.. 
027A00:  20 20 20 20 20 20 74 68 65 20 69 64 65 61 6C 20          the ideal 
027A10:  61 66 74 65 72 20 74 68 65 20 65 64 67 65 73 20    after the edges 
027A20:  6F 66 20 74 68 65 20 77 61 76 65 66 6F 72 6D 20    of the waveform 
027A30:  68 61 76 65 20 20 62 65 65 6E 20 20 73 68 69 66    have  been  shif
027A40:  74 65 64 20 20 62 79 20 20 74 68 65 0D 0A 20 20    ted  by  the..  
027A50:  20 20 20 20 20 63 61 73 73 65 74 74 65 20 63 69         cassette ci
027A60:  72 63 75 69 74 72 79 2E 0D 0A 0D 0A 20 20 20 20    rcuitry.....    
027A70:  20 20 20 49 74 20 69 73 20 6F 6E 6C 79 20 6E 65       It is only ne
027A80:  63 65 73 73 61 72 79 20 74 6F 20 73 65 74 20 74    cessary to set t
027A90:  68 65 20 43 61 73 73 65 74 74 65 20 4D 61 6E 61    he Cassette Mana
027AA0:  67 65 72 27 73 20 77 72 69 74 65 20 20 73 70 65    ger's write  spe
027AB0:  65 64 2E 20 20 57 68 65 6E 0D 0A 20 20 20 20 20    ed.  When..     
027AC0:  20 20 72 65 63 6F 72 64 69 6E 67 20 61 20 72 65      recording a re
027AD0:  63 6F 72 64 20 66 72 6F 6D 20 74 61 70 65 20 74    cord from tape t
027AE0:  68 65 20 72 65 63 6F 72 64 20 6C 65 61 64 65 72    he record leader
027AF0:  20 69 73 20 20 75 73 65 64 20 20 74 6F 20 20 63     is  used  to  c
027B00:  61 6C 63 75 6C 61 74 65 0D 0A 20 20 20 20 20 20    alculate..      
027B10:  20 74 68 65 20 73 70 65 65 64 20 61 74 20 77 68     the speed at wh
027B20:  69 63 68 20 69 74 20 77 61 73 20 77 72 69 74 74    ich it was writt
027B30:  65 6E 2E 20 54 68 69 73 20 61 6C 73 6F 20 20 61    en. This also  a
027B40:  6C 6C 6F 77 73 20 20 74 68 65 20 20 74 61 70 65    llows  the  tape
027B50:  20 20 73 70 65 65 64 0D 0A 20 20 20 20 20 20 20      speed..       
027B60:  76 61 72 69 61 74 69 6F 6E 73 20 62 65 74 77 65    variations betwe
027B70:  65 6E 20 64 69 66 66 65 72 65 6E 74 20 6D 61 63    en different mac
027B80:  68 69 6E 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20    hines.....      
027B90:  20 38 2E 36 20 43 61 74 61 6C 6F 67 75 69 6E 67     8.6 Cataloguing
027BA0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 6F 20 67    .....       To g
027BB0:  65 6E 65 72 61 74 65 20 61 20 63 61 74 61 6C 6F    enerate a catalo
027BC0:  67 75 65 20 66 72 6F 6D 20 74 68 65 20 74 61 70    gue from the tap
027BD0:  65 20 74 68 65 20 20 43 61 73 73 65 74 74 65 20    e the  Cassette 
027BE0:  20 4D 61 6E 61 67 65 72 20 20 72 65 61 64 73 20     Manager  reads 
027BF0:  20 61 0D 0A 20 20 20 20 20 20 20 73 65 71 75 65     a..       seque
027C00:  6E 63 65 20 6F 66 20 66 69 6C 65 20 62 6C 6F 63    nce of file bloc
027C10:  6B 73 20 61 6E 64 20 70 72 69 6E 74 73 20 69 6E    ks and prints in
027C20:  66 6F 72 6D 61 74 69 6F 6E 20 20 66 72 6F 6D 20    formation  from 
027C30:  20 74 68 65 6D 2E 20 20 54 68 65 20 20 66 69 6C     them.  The  fil
027C40:  65 0D 0A 20 20 20 20 20 20 20 62 6C 6F 63 6B 73    e..       blocks
027C50:  20 6D 61 79 20 63 6F 6D 65 20 66 72 6F 6D 20 61     may come from a
027C60:  6E 79 20 66 69 6C 65 2C 20 69 6E 20 20 61 6E 79    ny file, in  any
027C70:  20 20 6F 72 64 65 72 2E 20 20 43 61 74 61 6C 6F      order.  Catalo
027C80:  67 75 69 6E 67 20 20 63 6F 6E 74 69 6E 75 65 73    guing  continues
027C90:  0D 0A 20 20 20 20 20 20 20 75 6E 74 69 6C 20 74    ..       until t
027CA0:  68 65 20 75 73 65 72 20 68 69 74 73 20 74 68 65    he user hits the
027CB0:  20 65 73 63 61 70 65 20 6B 65 79 2E 0D 0A 0D 0A     escape key.....
027CC0:  20 20 20 20 20 20 20 54 68 65 20 69 6E 66 6F 72           The infor
027CD0:  6D 61 74 69 6F 6E 20 69 73 20 72 65 70 6F 72 74    mation is report
027CE0:  65 64 20 61 73 20 66 6F 6C 6C 6F 77 73 3A 0D 0A    ed as follows:..
027CF0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
027D00:  20 20 20 20 20 20 20 20 20 20 20 20 46 49 4C 45                FILE
027D10:  4E 41 4D 45 20 20 20 20 20 20 62 6C 6F 63 6B 20    NAME      block 
027D20:  20 20 4E 20 20 4C 20 20 4F 6B 0D 0A 0D 0A 20 20      N  L  Ok....  
027D30:  20 20 20 20 20 46 49 4C 45 4E 41 4D 45 20 69 73         FILENAME is
027D40:  20 65 69 74 68 65 72 20 74 68 65 20 6E 61 6D 65     either the name
027D50:  20 6F 66 20 74 68 65 20 20 66 69 6C 65 20 20 6F     of the  file  o
027D60:  66 20 20 27 55 6E 6E 61 6D 65 64 20 20 66 69 6C    f  'Unnamed  fil
027D70:  65 27 20 20 69 66 20 20 74 68 65 0D 0A 20 20 20    e'  if  the..   
027D80:  20 20 20 20 66 69 6C 65 6E 61 6D 65 20 73 74 61        filename sta
027D90:  72 74 73 20 77 69 74 68 20 61 20 6E 75 6C 6C 2E    rts with a null.
027DA0:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 62    ....       The b
027DB0:  6C 6F 63 6B 20 6E 75 6D 62 65 72 2C 20 4E 2C 20    lock number, N, 
027DC0:  69 6E 64 69 63 61 74 65 73 20 77 68 69 63 68 20    indicates which 
027DD0:  62 6C 6F 63 6B 20 6F 66 20 74 68 65 20 66 69 6C    block of the fil
027DE0:  65 20 69 74 20 69 73 2E 20 4E 6F 72 6D 61 6C 6C    e it is. Normall
027DF0:  79 0D 0A 20 20 20 20 20 20 20 62 6C 6F 63 6B 20    y..       block 
027E00:  31 20 69 73 20 74 68 65 20 66 69 72 73 74 20 62    1 is the first b
027E10:  6C 6F 63 6B 20 6F 66 20 74 68 65 20 66 69 6C 65    lock of the file
027E20:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4C 20    .......       L 
027E30:  69 73 20 74 68 65 20 63 68 61 72 61 63 74 65 72    is the character
027E40:  20 72 65 70 72 65 73 65 6E 74 69 6E 67 20 74 68     representing th
027E50:  65 20 66 69 6C 65 20 74 79 70 65 20 61 6E 64 20    e file type and 
027E60:  70 72 6F 74 65 63 74 69 6F 6E 20 73 74 61 74 75    protection statu
027E70:  73 20 6F 66 0D 0A 20 20 20 20 20 20 20 74 68 65    s of..       the
027E80:  20 66 69 6C 65 2E 20 49 74 20 69 73 20 66 6F 72     file. It is for
027E90:  6D 65 64 20 62 79 20 61 64 64 69 6E 67 20 23 32    med by adding #2
027EA0:  34 20 28 63 68 61 72 61 63 74 65 72 20 27 24 27    4 (character '$'
027EB0:  29 20 74 6F 20 74 68 65 20 66 69 6C 65 20 20 74    ) to the file  t
027EC0:  79 70 65 0D 0A 20 20 20 20 20 20 20 66 72 6F 6D    ype..       from
027ED0:  20 74 68 65 20 68 65 61 64 65 72 20 6D 61 73 6B     the header mask
027EE0:  65 64 20 77 69 74 68 20 23 30 46 2E 20 54 68 69    ed with #0F. Thi
027EF0:  73 20 67 69 76 65 73 20 74 68 65 20 66 6F 6C 6C    s gives the foll
027F00:  6F 77 69 6E 67 20 63 68 61 72 61 63 74 65 72 73    owing characters
027F10:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    :......         
027F20:  20 20 20 20 20 20 20 24 20 20 20 20 20 20 20 20           $        
027F30:  20 61 6E 20 75 6E 70 72 6F 74 65 63 74 65 64 20     an unprotected 
027F40:  42 41 53 49 43 20 70 72 6F 67 72 61 6D 2E 0D 0A    BASIC program...
027F50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027F60:  25 20 20 20 20 20 20 20 20 20 61 20 70 72 6F 74    %         a prot
027F70:  65 63 74 65 64 20 42 41 53 49 43 20 70 72 6F 67    ected BASIC prog
027F80:  72 61 6D 2E 0D 0A 20 20 20 20 20 20 20 20 20 20    ram...          
027F90:  20 20 20 20 20 20 26 20 20 20 20 20 20 20 20 20          &         
027FA0:  61 20 62 69 6E 61 72 79 20 66 69 6C 65 2E 0D 0A    a binary file...
027FB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027FC0:  27 20 20 20 20 20 20 20 20 20 61 20 70 72 6F 74    '         a prot
027FD0:  65 63 74 65 64 20 62 69 6E 61 72 79 20 66 69 6C    ected binary fil
027FE0:  65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    e..             
027FF0:  20 20 20 2A 20 20 20 20 20 20 20 20 20 61 6E 20       *         an 
028000:  41 53 43 49 49 20 66 69 6C 65 2E 0D 0A 0D 0A 0D    ASCII file......
028010:  0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20    .       AMSTRAD 
028020:  43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20    CPC464/664/6128 
028030:  46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20    FIRMWARE        
028040:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
028050:  20 20 20 20 20 20 70 61 67 65 20 38 2E 35 0D 0A          page 8.5..
028060:  1A 20 61 6E 64 20 20 77 72 69 74 69 6E 67 20 20    . and  writing  
028070:  66 69 6C 65 73 0D 0A 20 20 20 20 20 20 20 74 6F    files..       to
028080:  20 66 69 6C 65 2E 20 49 74 20 69 73 20 66 6F 72     file. It is for
028090:  6D 65 64 20 62 79 20 61 64 64 69 6E 67 20 23 32    med by adding #2
0280A0:  34 20 28 63 68 61 72 61 63 74 65 72 20 27 24 27    4 (character '$'
0280B0:  29 20 74 6F 20 74 68 65 20 66 69 6C 65 20 20 74    ) to the file  t
0280C0:  79 70 65 0D 0A 20 20 20 20 20 20 20 66 72 6F 6D    ype..       from
0280D0:  20 74 68 65 20 68 65 61 64 65 72 20 6D 61 73 6B     the header mask
0280E0:  65 64 20 77 69 74 68 20 23 30 46 2E 20 54 68 69    ed with #0F. Thi
0280F0:  73 20 67 69 76 65 73 20 74 68 65 20 66 6F 6C 6C    s gives the foll
028100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0281A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0281B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0281C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0281D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0281E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0281F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0282A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0282B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0282C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0282D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0282E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0282F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
028300:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
028310:  20 20 20 4F 74 68 65 72 20 63 68 61 72 61 63 74       Other charact
028320:  65 72 73 20 61 72 65 20 70 6F 73 73 69 62 6C 65    ers are possible
028330:  20 62 75 74 20 74 68 65 20 20 61 62 6F 76 65 20     but the  above 
028340:  20 61 72 65 20 20 74 68 65 20 20 73 74 61 6E 64     are  the  stand
028350:  61 72 64 20 20 66 69 6C 65 0D 0A 20 20 20 20 20    ard  file..     
028360:  20 20 74 79 70 65 73 20 74 68 61 74 20 61 72 65      types that are
028370:  20 77 72 69 74 74 65 6E 20 62 79 20 74 68 65 20     written by the 
028380:  6F 6E 20 62 6F 61 72 64 20 52 4F 4D 2E 0D 0A 0D    on board ROM....
028390:  0A 20 20 20 20 20 20 20 54 68 65 20 61 62 6F 76    .       The abov
0283A0:  65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 69 73    e information is
0283B0:  20 20 70 72 69 6E 74 65 64 20 20 77 68 65 6E 20      printed  when 
0283C0:  20 74 68 65 20 20 68 65 61 64 65 72 20 20 72 65     the  header  re
0283D0:  63 6F 72 64 20 20 69 73 20 20 72 65 61 64 0D 0A    cord  is  read..
0283E0:  20 20 20 20 20 20 20 63 6F 72 72 65 63 74 6C 79           correctly
0283F0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 4F 6B 20 69    .....       Ok i
028400:  73 20 70 72 69 6E 74 65 64 20 61 66 74 65 72 20    s printed after 
028410:  74 68 65 20 64 61 74 61 20 72 65 63 6F 72 64 20    the data record 
028420:  68 61 73 20 62 65 65 6E 20 72 65 61 64 20 63 6F    has been read co
028430:  72 72 65 63 74 6C 79 2E 0D 0A 0D 0A 20 20 20 20    rrectly.....    
028440:  20 20 20 38 2E 37 20 52 65 61 64 69 6E 67 20 46       8.7 Reading F
028450:  69 6C 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    iles.....       
028460:  42 65 66 6F 72 65 20 61 20 66 69 6C 65 20 63 61    Before a file ca
028470:  6E 20 62 65 20 72 65 61 64 20 66 72 6F 6D 20 69    n be read from i
028480:  74 20 6D 75 73 74 20 62 65 20 6F 70 65 6E 65 64    t must be opened
028490:  20 28 62 79 20 20 63 61 6C 6C 69 6E 67 20 20 43     (by  calling  C
0284A0:  41 53 20 20 49 4E 0D 0A 20 20 20 20 20 20 20 4F    AS  IN..       O
0284B0:  50 45 4E 29 2E 20 54 68 69 73 20 73 65 74 73 20    PEN). This sets 
0284C0:  75 70 20 74 68 65 20 66 69 6C 65 6E 61 6D 65 20    up the filename 
0284D0:  28 73 65 65 20 38 2E 31 30 20 62 65 6C 6F 77 29    (see 8.10 below)
0284E0:  20 61 6E 64 20 72 65 61 64 73 20 74 68 65 20 20     and reads the  
0284F0:  66 69 72 73 74 0D 0A 20 20 20 20 20 20 20 62 6C    first..       bl
028500:  6F 63 6B 20 6F 66 20 74 68 65 20 66 69 6C 65 20    ock of the file 
028510:  73 6F 20 74 68 61 74 20 74 68 65 20 68 65 61 64    so that the head
028520:  65 72 20 63 61 6E 20 62 65 20 69 6E 73 70 65 63    er can be inspec
028530:  74 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54    ted.....       T
028540:  68 65 20 66 69 6C 65 20 6D 61 79 20 65 69 74 68    he file may eith
028550:  65 72 20 62 65 20 6F 70 65 6E 65 64 20 66 6F 72    er be opened for
028560:  20 63 68 61 72 61 63 74 65 72 20 69 6E 70 75 74     character input
028570:  20 6F 72 20 66 6F 72 20 64 69 72 65 63 74 20 69     or for direct i
028580:  6E 70 75 74 2C 0D 0A 20 20 20 20 20 20 20 62 75    nput,..       bu
028590:  74 20 6E 6F 74 20 62 6F 74 68 2E 20 54 68 65 20    t not both. The 
0285A0:  6D 6F 64 65 20 6F 66 20 69 6E 70 75 74 20 69 73    mode of input is
0285B0:  20 73 65 74 20 62 79 20 74 68 65 20 66 69 72 73     set by the firs
0285C0:  74 20 61 63 63 65 73 73 20 74 6F 20 74 68 65 20    t access to the 
0285D0:  66 69 6C 65 0D 0A 20 20 20 20 20 20 20 61 6E 64    file..       and
0285E0:  20 6E 6F 74 20 77 68 65 6E 20 69 74 20 69 73 20     not when it is 
0285F0:  6F 70 65 6E 65 64 2E 20 41 73 20 73 6F 6F 6E 20    opened. As soon 
028600:  61 73 20 6F 6E 65 20 6D 6F 64 65 20 69 73 20 73    as one mode is s
028610:  65 6C 65 63 74 65 64 20 69 74 20 20 62 65 63 6F    elected it  beco
028620:  6D 65 73 0D 0A 20 20 20 20 20 20 20 69 6D 70 6F    mes..       impo
028630:  73 73 69 62 6C 65 20 74 6F 20 75 73 65 20 74 68    ssible to use th
028640:  65 20 6F 74 68 65 72 20 6D 6F 64 65 20 74 6F 20    e other mode to 
028650:  61 63 63 65 73 73 20 74 68 65 20 66 69 6C 65 2E    access the file.
028660:  0D 0A 0D 0A 20 20 20 20 20 20 20 43 68 61 72 61    ....       Chara
028670:  63 74 65 72 20 69 6E 70 75 74 20 28 63 61 6C 6C    cter input (call
028680:  69 6E 67 20 43 41 53 20 49 4E 20 43 48 41 52 29    ing CAS IN CHAR)
028690:  20 61 6C 6C 6F 77 73 20 74 68 65 20 75 73 65 72     allows the user
0286A0:  20 74 6F 20 72 65 61 64 20 74 68 65 20 66 69 6C     to read the fil
0286B0:  65 0D 0A 20 20 20 20 20 20 20 73 65 71 75 65 6E    e..       sequen
0286C0:  74 69 61 6C 6C 79 20 6F 6E 65 20 63 68 61 72 61    tially one chara
0286D0:  63 74 65 72 20 61 74 20 61 20 74 69 6D 65 2E 20    cter at a time. 
0286E0:  42 6C 6F 63 6B 73 20 6F 66 20 74 68 65 20 66 69    Blocks of the fi
0286F0:  6C 65 20 61 72 65 20 72 65 61 64 20 66 72 6F 6D    le are read from
028700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
028710:  22 00 00 00 02 09 50 E5 22 00 C1 02 00 00 00 02    ".....P.".......
028720:  22 00 C2 02 00 00 00 02 22 00 C3 02 00 00 00 02    ".......".......
028730:  22 00 C4 02 00 00 00 02 22 00 C5 02 00 00 00 02    ".......".......
028740:  22 00 C6 02 00 00 00 02 22 00 C7 02 00 00 00 02    ".......".......
028750:  22 00 C8 02 00 00 00 02 22 00 C9 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:  0D 0A 20 20 20 20 20 20 20 74 61 70 65 20 69 6E    ..       tape in
028810:  74 6F 20 74 68 65 20 62 75 66 66 65 72 20 61 73    to the buffer as
028820:  20 6E 65 65 64 65 64 2E 20 54 68 69 73 20 20 69     needed. This  i
028830:  73 20 20 69 6E 74 65 6E 64 65 64 20 20 66 6F 72    s  intended  for
028840:  20 20 72 65 61 64 69 6E 67 20 20 74 65 78 74 0D      reading  text.
028850:  0A 20 20 20 20 20 20 20 66 69 6C 65 73 20 61 6E    .       files an
028860:  64 20 73 69 6D 69 6C 61 72 20 61 70 70 6C 69 63    d similar applic
028870:  61 74 69 6F 6E 73 2E 0D 0A 0D 0A 20 20 20 20 20    ations.....     
028880:  20 20 44 69 72 65 63 74 20 69 6E 70 75 74 20 28      Direct input (
028890:  63 61 6C 6C 69 6E 67 20 43 41 53 20 49 4E 20 44    calling CAS IN D
0288A0:  49 52 45 43 54 29 20 72 65 61 64 73 20 74 68 65    IRECT) reads the
0288B0:  20 77 68 6F 6C 65 20 66 69 6C 65 20 69 6E 74 6F     whole file into
0288C0:  20 20 6D 65 6D 6F 72 79 0D 0A 20 20 20 20 20 20      memory..      
0288D0:  20 69 6E 20 6F 6E 65 20 67 6F 2E 20 54 68 69 73     in one go. This
0288E0:  20 69 73 20 69 6E 74 65 6E 64 65 64 20 20 66 6F     is intended  fo
0288F0:  72 20 20 6C 6F 61 64 69 6E 67 20 20 6D 61 63 68    r  loading  mach
028900:  69 6E 65 20 20 63 6F 64 65 20 20 70 72 6F 67 72    ine  code  progr
028910:  61 6D 73 20 20 6F 72 0D 0A 20 20 20 20 20 20 20    ams  or..       
028920:  73 63 72 65 65 6E 20 64 75 6D 70 73 20 61 6E 64    screen dumps and
028930:  20 73 69 6D 69 6C 61 72 20 61 70 70 6C 69 63 61     similar applica
028940:  74 69 6F 6E 73 2E 0D 0A 0D 0A 20 20 20 20 20 20    tions.....      
028950:  20 49 6E 74 65 72 72 75 70 74 73 20 61 72 65 20     Interrupts are 
028960:  64 69 73 61 62 6C 65 64 20 77 68 69 6C 73 74 20    disabled whilst 
028970:  72 65 61 64 69 6E 67 20 20 66 72 6F 6D 20 20 74    reading  from  t
028980:  61 70 65 20 20 62 65 63 61 75 73 65 20 20 74 68    ape  because  th
028990:  69 73 20 20 68 61 73 0D 0A 20 20 20 20 20 20 20    is  has..       
0289A0:  73 65 72 69 6F 75 73 20 74 69 6D 69 6E 67 20 63    serious timing c
0289B0:  6F 6E 73 74 72 61 69 6E 74 73 2E 20 20 44 69 73    onstraints.  Dis
0289C0:  61 62 6C 69 6E 67 20 20 69 6E 74 65 72 72 75 70    abling  interrup
0289D0:  74 73 20 20 77 69 6C 6C 20 20 70 72 65 76 65 6E    ts  will  preven
0289E0:  74 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 76    t  the..       v
0289F0:  61 72 69 6F 75 73 20 74 69 6D 65 72 20 69 6E 74    arious timer int
028A00:  65 72 72 75 70 74 73 20 28 61 73 20 64 65 73 63    errupts (as desc
028A10:  72 69 62 65 64 20 69 6E 20 73 65 63 74 69 6F 6E    ribed in section
028A20:  20 31 30 2E 31 29 20 66 72 6F 6D 20 6F 63 63 75     10.1) from occu
028A30:  72 72 69 6E 67 2E 0D 0A 20 20 20 20 20 20 20 49    rring...       I
028A40:  6E 20 70 61 72 74 69 63 75 6C 61 72 20 74 68 69    n particular thi
028A50:  73 20 6D 69 67 68 74 20 6C 65 61 76 65 20 74 68    s might leave th
028A60:  65 20 73 6F 75 6E 64 20 63 68 69 70 20 6D 61 6B    e sound chip mak
028A70:  69 6E 67 20 20 61 20 20 6E 6F 69 73 65 20 20 66    ing  a  noise  f
028A80:  6F 72 20 20 61 0D 0A 20 20 20 20 20 20 20 6C 6F    or  a..       lo
028A90:  6E 67 20 70 65 72 69 6F 64 20 6F 66 20 74 69 6D    ng period of tim
028AA0:  65 20 61 6E 64 20 73 6F 20 74 68 65 20 53 6F 75    e and so the Sou
028AB0:  6E 64 20 4D 61 6E 61 67 65 72 20 69 73 20 73 68    nd Manager is sh
028AC0:  75 74 20 64 6F 77 6E 20 20 28 73 65 65 20 20 53    ut down  (see  S
028AD0:  4F 55 4E 44 0D 0A 20 20 20 20 20 20 20 52 45 53    OUND..       RES
028AE0:  45 54 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 49    ET).....       I
028AF0:  6E 20 56 31 2E 31 20 66 69 72 6D 77 61 72 65 20    n V1.1 firmware 
028B00:  74 68 65 20 20 63 61 73 73 65 74 74 65 20 20 6D    the  cassette  m
028B10:  61 6E 61 67 65 72 20 20 72 6F 75 74 69 6E 65 73    anager  routines
028B20:  20 20 66 6F 72 20 20 72 65 61 64 69 6E 67 20 20      for  reading  
028B30:  66 69 6C 65 73 0D 0A 20 20 20 20 20 20 20 72 65    files..       re
028B40:  74 75 72 6E 20 20 65 72 72 6F 72 20 20 63 6F 64    turn  error  cod
028B50:  65 73 20 20 74 6F 20 20 69 6E 64 69 63 61 74 65    es  to  indicate
028B60:  20 20 74 68 65 20 20 63 61 75 73 65 20 20 6F 66      the  cause  of
028B70:  20 20 74 68 65 20 20 65 72 72 6F 72 73 20 20 20      the  errors   
028B80:  28 66 6F 72 0D 0A 20 20 20 20 20 20 20 63 6F 6D    (for..       com
028B90:  70 61 74 61 62 69 6C 69 74 79 20 77 69 74 68 20    patability with 
028BA0:  41 4D 53 44 4F 53 29 3A 0D 0A 0D 0A 20 20 20 20    AMSDOS):....    
028BB0:  20 20 20 20 20 20 20 20 20 20 20 20 23 30 30 3A                #00:
028BC0:  20 20 20 20 20 20 54 68 65 20 75 73 65 72 20 68          The user h
028BD0:  69 74 20 65 73 63 61 70 65 0D 0A 20 20 20 20 20    it escape..     
028BE0:  20 20 20 20 20 20 20 20 20 20 20 23 30 45 3A 20               #0E: 
028BF0:  20 20 20 20 20 54 68 65 20 73 74 72 65 61 6D 20         The stream 
028C00:  69 73 20 61 6C 72 65 61 64 79 2F 6E 6F 74 20 69    is already/not i
028C10:  6E 20 75 73 65 0D 0A 20 20 20 20 20 20 20 20 20    n use..         
028C20:  20 20 20 20 20 20 20 23 30 46 3A 20 20 20 20 20           #0F:     
028C30:  20 48 61 76 65 20 72 65 61 63 68 65 64 20 74 68     Have reached th
028C40:  65 20 65 6E 64 20 6F 66 20 74 68 65 20 66 69 6C    e end of the fil
028C50:  65 0D 0A 0D 0A 20 20 20 20 20 20 20 38 2E 38 20    e....       8.8 
028C60:  57 72 69 74 69 6E 67 20 46 69 6C 65 73 2E 0D 0A    Writing Files...
028C70:  0D 0A 20 20 20 20 20 20 20 42 65 66 6F 72 65 20    ..       Before 
028C80:  61 20 66 69 6C 65 20 63 61 6E 20 62 65 20 77 72    a file can be wr
028C90:  69 74 74 65 6E 20 69 74 20 6D 75 73 74 20 62 65    itten it must be
028CA0:  20 6F 70 65 6E 65 64 20 20 28 62 79 20 20 63 61     opened  (by  ca
028CB0:  6C 6C 69 6E 67 20 20 43 41 53 20 20 4F 55 54 0D    lling  CAS  OUT.
028CC0:  0A 20 20 20 20 20 20 20 4F 50 45 4E 29 2E 20 54    .       OPEN). T
028CD0:  68 69 73 20 73 65 74 73 20 75 70 20 74 68 65 20    his sets up the 
028CE0:  66 69 6C 65 6E 61 6D 65 20 28 73 65 65 20 38 2E    filename (see 8.
028CF0:  31 30 20 62 65 6C 6F 77 29 20 61 6E 64 20 74 68    10 below) and th
028D00:  65 20 72 65 73 74 20 6F 66 20 20 74 68 65 0D 0A    e rest of  the..
028D10:  20 20 20 20 20 20 20 68 65 61 64 65 72 20 74 68           header th
028D20:  61 74 20 77 69 6C 6C 20 62 65 20 77 72 69 74 74    at will be writt
028D30:  65 6E 20 69 6E 20 65 61 63 68 20 66 69 6C 65 20    en in each file 
028D40:  62 6C 6F 63 6B 2E 0D 0A 0D 0A 20 20 20 20 20 20    block.....      
028D50:  20 54 68 65 20 66 69 6C 65 20 6D 61 79 20 65 69     The file may ei
028D60:  74 68 65 72 20 62 65 20 6F 70 65 6E 65 64 20 20    ther be opened  
028D70:  66 6F 72 20 20 63 68 61 72 61 63 74 65 72 20 20    for  character  
028D80:  6F 75 74 70 75 74 20 20 6F 72 20 20 66 6F 72 20    output  or  for 
028D90:  20 64 69 72 65 63 74 0D 0A 20 20 20 20 20 20 20     direct..       
028DA0:  6F 75 74 70 75 74 2C 20 62 75 74 20 6E 6F 74 20    output, but not 
028DB0:  62 6F 74 68 2E 20 54 68 65 20 6D 6F 64 65 20 6F    both. The mode o
028DC0:  66 20 6F 75 74 70 75 74 20 69 73 20 73 65 74 20    f output is set 
028DD0:  62 79 20 74 68 65 20 66 69 72 73 74 20 77 72 69    by the first wri
028DE0:  74 65 20 20 74 6F 0D 0A 20 20 20 20 20 20 20 74    te  to..       t
028DF0:  68 65 20 66 69 6C 65 20 61 6E 64 20 6E 6F 74 20    he file and not 
028E00:  77 68 65 6E 20 69 74 20 69 73 20 6F 70 65 6E 65    when it is opene
028E10:  64 2E 20 41 73 20 73 6F 6F 6E 20 61 73 20 6F 6E    d. As soon as on
028E20:  65 20 6D 6F 64 65 20 69 73 20 73 65 6C 65 63 74    e mode is select
028E30:  65 64 20 69 74 0D 0A 20 20 20 20 20 20 20 62 65    ed it..       be
028E40:  63 6F 6D 65 73 20 69 6D 70 6F 73 73 69 62 6C 65    comes impossible
028E50:  20 74 6F 20 75 73 65 20 74 68 65 20 6F 74 68 65     to use the othe
028E60:  72 20 6D 6F 64 65 20 74 6F 20 77 72 69 74 65 20    r mode to write 
028E70:  74 6F 20 74 68 65 20 66 69 6C 65 2E 0D 0A 0D 0A    to the file.....
028E80:  20 20 20 20 20 20 20 43 68 61 72 61 63 74 65 72           Character
028E90:  20 6F 75 74 70 75 74 20 28 63 61 6C 6C 69 6E 67     output (calling
028EA0:  20 43 41 53 20 4F 55 54 20 43 48 41 52 29 20 61     CAS OUT CHAR) a
028EB0:  6C 6C 6F 77 73 20 74 68 65 20 75 73 65 72 20 20    llows the user  
028EC0:  74 6F 20 20 77 72 69 74 65 20 20 74 6F 0D 0A 20    to  write  to.. 
028ED0:  20 20 20 20 20 20 74 68 65 20 66 69 6C 65 20 6F          the file o
028EE0:  6E 65 20 63 68 61 72 61 63 74 65 72 20 61 74 20    ne character at 
028EF0:  61 20 74 69 6D 65 2E 20 54 68 65 20 63 68 61 72    a time. The char
028F00:  61 63 74 65 72 73 20 61 72 65 20 62 75 66 66 65    acters are buffe
028F10:  72 65 64 20 75 6E 74 69 6C 20 20 61 0D 0A 20 20    red until  a..  
028F20:  20 20 20 20 20 63 6F 6D 70 6C 65 74 65 20 62 6C         complete bl
028F30:  6F 63 6B 20 28 32 30 34 38 20 63 68 61 72 61 63    ock (2048 charac
028F40:  74 65 72 73 29 20 69 73 20 72 65 61 64 79 20 74    ters) is ready t
028F50:  6F 20 62 65 20 20 77 72 69 74 74 65 6E 20 20 77    o be  written  w
028F60:  68 65 72 65 75 70 6F 6E 20 20 61 0D 0A 20 20 20    hereupon  a..   
028F70:  20 20 20 20 66 69 6C 65 20 62 6C 6F 63 6B 20 69        file block i
028F80:  73 20 77 72 69 74 74 65 6E 20 74 6F 20 74 68 65    s written to the
028F90:  20 74 61 70 65 2E 0D 0A 0D 0A 20 20 20 20 20 20     tape.....      
028FA0:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
028FB0:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
028FC0:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
028FD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                   p
028FE0:  61 67 65 20 38 2E 36 0D 0A 0D 0A 0D 0A 0D 0A 0D    age 8.6.........
028FF0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 44 69 72 65    .....       Dire
029000:  63 74 20 6F 75 74 70 75 74 20 28 63 61 6C 6C 69    ct output (calli
029010:  6E 67 20 43 41 53 20 4F 55 54 20 44 49 52 45 43    ng CAS OUT DIREC
029020:  54 29 20 77 72 69 74 65 73 20 74 68 65 20 77 68    T) writes the wh
029030:  6F 6C 65 20 20 6F 66 20 20 74 68 65 20 20 66 69    ole  of  the  fi
029040:  6C 65 0D 0A 20 20 20 20 20 20 20 66 72 6F 6D 20    le..       from 
029050:  6D 65 6D 6F 72 79 20 69 6E 20 6F 6E 65 20 67 6F    memory in one go
029060:  2E 20 54 68 65 20 64 61 74 61 20 77 72 69 74 74    . The data writt
029070:  65 6E 20 69 73 20 73 74 69 6C 6C 20 20 70 61 63    en is still  pac
029080:  6B 61 67 65 64 20 20 69 6E 74 6F 20 20 32 30 34    kaged  into  204
029090:  38 0D 0A 20 20 20 20 20 20 20 62 79 74 65 20 62    8..       byte b
0290A0:  6C 6F 63 6B 73 2E 0D 0A 0D 0A 20 20 20 20 20 20    locks.....      
0290B0:  20 57 68 69 63 68 65 76 65 72 20 6F 75 74 70 75     Whichever outpu
0290C0:  74 20 6D 6F 64 65 20 69 73 20 75 73 65 64 2C 20    t mode is used, 
0290D0:  69 74 20 69 73 20 69 6D 70 6F 72 74 61 6E 74 20    it is important 
0290E0:  20 74 6F 20 20 63 6C 6F 73 65 20 20 74 68 65 20     to  close  the 
0290F0:  20 6F 75 74 70 75 74 0D 0A 20 20 20 20 20 20 20     output..       
029100:  66 69 6C 65 20 70 72 6F 70 65 72 6C 79 20 28 75    file properly (u
029110:  73 69 6E 67 20 43 41 53 20 4F 55 54 20 43 4C 4F    sing CAS OUT CLO
029120:  53 45 29 20 6F 74 68 65 72 77 69 73 65 20 74 68    SE) otherwise th
029130:  65 20 6C 61 73 74 20 20 62 6C 6F 63 6B 20 20 6F    e last  block  o
029140:  66 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 66    f  the..       f
029150:  69 6C 65 20 77 69 6C 6C 20 6E 6F 74 20 62 65 20    ile will not be 
029160:  77 72 69 74 74 65 6E 2E 0D 0A 20 20 20 20 20 20    written...      
029170:  20 49 6E 74 65 72 72 75 70 74 73 20 61 72 65 20     Interrupts are 
029180:  64 69 73 61 62 6C 65 64 20 20 77 68 69 6C 73 74    disabled  whilst
029190:  20 20 77 72 69 74 69 6E 67 20 20 74 6F 20 20 74      writing  to  t
0291A0:  61 70 65 20 20 62 65 63 61 75 73 65 20 20 74 68    ape  because  th
0291B0:  69 73 20 20 68 69 73 0D 0A 20 20 20 20 20 20 20    is  his..       
0291C0:  73 65 72 69 6F 75 73 20 74 69 6D 69 6E 67 20 63    serious timing c
0291D0:  6F 6E 73 74 72 61 69 6E 74 73 2E 20 20 44 69 73    onstraints.  Dis
0291E0:  61 62 6C 69 6E 67 20 20 69 6E 74 65 72 72 75 70    abling  interrup
0291F0:  74 73 20 20 77 69 6C 6C 20 20 70 72 65 76 65 6E    ts  will  preven
029200:  74 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 76    t  the..       v
029210:  61 72 69 6F 75 73 20 20 74 69 6D 65 72 20 20 69    arious  timer  i
029220:  6E 74 65 72 72 75 70 74 73 20 20 28 61 73 20 20    nterrupts  (as  
029230:  64 65 73 63 72 69 62 65 64 20 20 69 6E 20 20 73    described  in  s
029240:  65 63 74 69 6F 6E 20 20 20 31 30 2E 31 29 20 20    ection   10.1)  
029250:  20 66 72 6F 6D 0D 0A 20 20 20 20 20 20 20 6F 63     from..       oc
029260:  63 75 72 72 69 6E 67 2E 20 49 6E 20 70 61 72 74    curring. In part
029270:  69 63 75 6C 61 72 20 74 68 69 73 20 6D 69 67 68    icular this migh
029280:  74 20 6C 65 61 76 65 20 20 74 68 65 20 20 73 6F    t leave  the  so
029290:  75 6E 64 20 20 63 68 69 70 20 20 6D 61 6B 69 6E    und  chip  makin
0292A0:  67 20 20 61 0D 0A 20 20 20 20 20 20 20 6E 6F 69    g  a..       noi
0292B0:  73 65 20 66 6F 72 20 61 20 6C 6F 6E 67 20 70 65    se for a long pe
0292C0:  72 69 6F 64 20 6F 66 20 74 69 6D 65 20 61 6E 64    riod of time and
0292D0:  20 73 6F 20 74 68 65 20 53 6F 75 6E 64 20 4D 61     so the Sound Ma
0292E0:  6E 61 67 65 72 20 69 73 20 73 68 75 74 20 20 64    nager is shut  d
0292F0:  6F 77 6E 0D 0A 20 20 20 20 20 20 20 28 73 65 65    own..       (see
029300:  20 53 4F 55 4E 44 20 52 45 53 45 54 29 2E 0D 0A     SOUND RESET)...
029310:  0D 0A 20 20 20 20 20 20 20 49 6E 20 56 31 2E 31    ..       In V1.1
029320:  20 66 69 72 6D 77 61 72 65 20 74 68 65 20 20 63     firmware the  c
029330:  61 73 73 65 74 74 65 20 20 6D 61 6E 61 67 65 72    assette  manager
029340:  20 20 72 6F 75 74 69 6E 65 73 20 20 66 6F 72 20      routines  for 
029350:  20 77 72 69 74 69 6E 67 20 20 66 69 6C 65 73 0D     writing  files.
029360:  0A 20 20 20 20 20 20 20 72 65 74 75 72 6E 20 20    .       return  
029370:  65 72 72 6F 72 20 20 63 6F 64 65 73 20 20 74 6F    error  codes  to
029380:  20 20 69 6E 64 69 63 61 74 65 20 20 74 68 65 20      indicate  the 
029390:  20 63 61 75 73 65 20 20 6F 66 20 20 74 68 65 20     cause  of  the 
0293A0:  20 20 65 72 72 6F 72 20 20 20 28 66 6F 72 0D 0A      error   (for..
0293B0:  20 20 20 20 20 20 20 63 6F 6D 70 61 74 69 62 69           compatibi
0293C0:  6C 69 74 79 20 77 69 74 68 20 41 4D 53 44 4F 53    lity with AMSDOS
0293D0:  29 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ):..            
0293E0:  20 20 20 20 23 30 30 3A 20 20 20 20 20 20 54 68        #00:      Th
0293F0:  65 20 75 73 65 72 20 68 61 73 20 68 69 74 20 65    e user has hit e
029400:  73 63 61 70 65 0D 0A 20 20 20 20 20 20 20 20 20    scape..         
029410:  20 20 20 20 20 20 20 23 30 45 3A 20 20 20 20 20           #0E:     
029420:  20 54 68 65 20 73 74 72 65 61 6D 20 69 73 20 61     The stream is a
029430:  6C 72 65 61 64 79 2F 6E 6F 74 20 69 6E 20 75 73    lready/not in us
029440:  65 0D 0A 20 20 20 20 20 20 20 38 2E 39 20 52 65    e..       8.9 Re
029450:  61 64 20 61 6E 64 20 57 72 69 74 69 6E 67 20 53    ad and Writing S
029460:  69 6D 75 6C 74 61 6E 65 6F 75 73 6C 79 2E 0D 0A    imultaneously...
029470:  20 20 20 20 20 20 20 54 68 65 20 43 61 73 73 65           The Casse
029480:  74 74 65 20 4D 61 6E 61 67 65 72 20 61 6C 6C 6F    tte Manager allo
029490:  77 73 20 74 77 6F 20 66 69 6C 65 73 20 74 6F 20    ws two files to 
0294A0:  62 65 20 6F 70 65 6E 20 20 73 69 6D 75 6C 74 61    be open  simulta
0294B0:  6E 65 6F 75 73 6C 79 2E 20 20 4F 6E 65 0D 0A 20    neously.  One.. 
0294C0:  20 20 20 20 20 20 6D 75 73 74 20 62 65 20 6F 70          must be op
0294D0:  65 6E 20 66 6F 72 20 72 65 61 64 69 6E 67 20 20    en for reading  
0294E0:  61 6E 64 20 20 74 68 65 20 20 6F 74 68 65 72 20    and  the  other 
0294F0:  20 66 6F 72 20 20 77 72 69 74 69 6E 67 2E 20 20     for  writing.  
029500:  54 68 75 73 20 20 69 74 20 20 69 73 0D 0A 20 20    Thus  it  is..  
029510:  20 20 20 20 20 70 6F 73 73 69 62 6C 65 20 74 6F         possible to
029520:  20 72 65 61 64 20 66 72 6F 6D 20 6F 6E 65 20 66     read from one f
029530:  69 6C 65 20 61 6E 64 20 77 72 69 74 65 20 74 6F    ile and write to
029540:  20 61 6E 6F 74 68 65 72 20 66 69 6C 65 20 61 74     another file at
029550:  20 20 74 68 65 20 20 73 61 6D 65 0D 0A 20 20 20      the  same..   
029560:  20 20 20 20 74 69 6D 65 2E 0D 0A 0D 0A 20 20 20        time.....   
029570:  20 20 20 20 57 68 65 6E 20 74 68 65 20 43 61 73        When the Cas
029580:  73 65 74 74 65 20 4D 61 6E 61 67 65 72 20 69 73    sette Manager is
029590:  20 61 62 6F 75 74 20 74 6F 20 72 65 61 64 20 61     about to read a
0295A0:  20 62 6C 6F 63 6B 20 69 74 20 61 73 6B 73 20 74     block it asks t
0295B0:  68 65 20 75 73 65 72 20 74 6F 0D 0A 20 20 20 20    he user to..    
0295C0:  20 20 20 70 72 65 73 73 20 50 4C 41 59 20 61 6E       press PLAY an
0295D0:  64 20 74 68 69 73 20 69 6D 70 6C 69 65 73 20 74    d this implies t
0295E0:  68 61 74 20 74 68 65 20 74 61 70 65 20 77 69 74    hat the tape wit
0295F0:  68 20 74 68 65 20 20 66 69 6C 65 20 20 66 6F 72    h the  file  for
029600:  20 20 72 65 61 64 69 6E 67 0D 0A 20 20 20 20 20      reading..     
029610:  20 20 73 68 6F 75 6C 64 20 62 65 20 6C 6F 61 64      should be load
029620:  65 64 2E 20 53 69 6D 69 6C 61 72 6C 79 2C 20 77    ed. Similarly, w
029630:  68 65 6E 20 69 74 20 69 73 20 61 62 6F 75 74 20    hen it is about 
029640:  74 6F 20 77 72 69 74 65 20 61 20 62 6C 6F 63 6B    to write a block
029650:  20 69 74 20 61 73 6B 73 0D 0A 20 20 20 20 20 20     it asks..      
029660:  20 66 6F 72 20 74 68 65 20 75 73 65 72 20 74 6F     for the user to
029670:  20 70 72 65 73 73 20 52 45 43 20 61 6E 64 20 50     press REC and P
029680:  4C 41 59 20 61 6E 64 20 74 68 69 73 20 69 6D 70    LAY and this imp
029690:  6C 69 65 73 20 74 68 61 74 20 74 68 65 20 20 74    lies that the  t
0296A0:  61 70 65 20 20 74 6F 0D 0A 20 20 20 20 20 20 20    ape  to..       
0296B0:  77 68 69 63 68 20 74 68 65 20 66 69 6C 65 20 69    which the file i
0296C0:  73 20 74 6F 20 62 65 20 77 72 69 74 74 65 6E 20    s to be written 
0296D0:  73 68 6F 75 6C 64 20 62 65 20 6C 6F 61 64 65 64    should be loaded
0296E0:  2E 20 54 68 65 20 43 61 73 73 65 74 74 65 20 4D    . The Cassette M
0296F0:  61 6E 61 67 65 72 0D 0A 20 20 20 20 20 20 20 61    anager..       a
029700:  73 73 75 6D 65 73 20 74 68 61 74 20 74 68 65 20    ssumes that the 
029710:  74 61 70 65 20 69 73 20 6E 6F 74 20 63 68 61 6E    tape is not chan
029720:  67 65 64 20 61 6E 64 20 74 68 61 74 20 74 68 65    ged and that the
029730:  20 61 70 70 72 6F 70 72 69 61 74 65 20 63 61 73     appropriate cas
029740:  73 65 74 74 65 0D 0A 20 20 20 20 20 20 20 63 6F    sette..       co
029750:  6E 74 72 6F 6C 73 20 72 65 6D 61 69 6E 20 70 72    ntrols remain pr
029760:  65 73 73 65 64 20 61 73 20 72 65 71 75 65 73 74    essed as request
029770:  65 64 20 75 6E 74 69 6C 20 74 68 65 20 70 72 6F    ed until the pro
029780:  6D 70 74 20 20 69 73 20 20 69 73 73 75 65 64 2E    mpt  is  issued.
029790:  20 20 49 74 0D 0A 20 20 20 20 20 20 20 61 6C 73      It..       als
0297A0:  6F 20 61 73 73 75 6D 65 73 20 74 68 61 74 20 70    o assumes that p
0297B0:  72 65 73 73 69 6E 67 20 61 20 20 6B 65 79 20 20    ressing a  key  
0297C0:  6D 65 61 6E 73 20 20 74 68 61 74 20 20 74 68 65    means  that  the
0297D0:  20 20 70 72 6F 6D 70 74 20 20 68 61 73 20 20 62      prompt  has  b
0297E0:  65 65 6E 0D 0A 20 20 20 20 20 20 20 6F 62 65 79    een..       obey
0297F0:  65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 49 74    ed.....       It
029800:  20 69 73 20 75 6E 77 69 73 65 20 74 6F 20 61 74     is unwise to at
029810:  74 65 6D 70 74 20 74 6F 20 72 65 61 64 20 20 61    tempt to read  a
029820:  6E 64 20 20 77 72 69 74 65 20 20 73 69 6D 75 6C    nd  write  simul
029830:  74 61 6E 65 6F 75 73 6C 79 20 20 77 69 74 68 20    taneously  with 
029840:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 43 61 73     the..       Cas
029850:  73 65 74 74 65 20 4D 61 6E 61 67 65 72 20 6D 65    sette Manager me
029860:  73 73 61 67 65 73 20 74 75 72 6E 65 64 20 6F 66    ssages turned of
029870:  66 2E 20 54 68 65 20 6F 6E 6C 79 20 6E 6F 74 69    f. The only noti
029880:  66 69 63 61 74 69 6F 6E 20 20 67 69 76 65 6E 20    fication  given 
029890:  20 6F 66 0D 0A 20 20 20 20 20 20 20 77 68 69 63     of..       whic
0298A0:  68 20 74 61 70 65 20 73 68 6F 75 6C 64 20 62 65    h tape should be
0298B0:  20 6C 6F 61 64 65 64 20 69 73 20 69 6E 20 74 68     loaded is in th
0298C0:  65 20 70 72 6F 6D 70 74 20 6D 65 73 73 61 67 65    e prompt message
0298D0:  73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 38 2E 31    s.....       8.1
0298E0:  30 20 46 69 6C 65 6E 61 6D 65 73 2E 0D 0A 20 20    0 Filenames...  
0298F0:  20 20 20 20 20 57 68 65 6E 20 74 68 65 20 75 73         When the us
029900:  65 72 20 6F 70 65 6E 73 20 61 20 66 69 6C 65 20    er opens a file 
029910:  66 6F 72 20 72 65 61 64 69 6E 67 20 6F 72 20 77    for reading or w
029920:  72 69 74 69 6E 67 20 74 68 65 20 6E 61 6D 65 20    riting the name 
029930:  6F 66 20 74 68 65 20 66 69 6C 65 0D 0A 20 20 20    of the file..   
029940:  20 20 20 20 74 6F 20 62 65 20 72 65 61 64 20 6F        to be read o
029950:  72 20 77 72 69 74 74 65 6E 20 69 73 20 73 70 65    r written is spe
029960:  63 69 66 69 65 64 2E 20 54 68 65 20 66 69 6C 65    cified. The file
029970:  6E 61 6D 65 20 69 73 20 61 20 73 74 72 69 6E 67    name is a string
029980:  20 6F 66 20 61 6E 79 20 31 36 0D 0A 20 20 20 20     of any 16..    
029990:  20 20 20 63 68 61 72 61 63 74 65 72 73 20 28 23       characters (#
0299A0:  30 30 2E 2E 23 46 46 29 2E 20 49 66 20 74 68 65    00..#FF). If the
0299B0:  20 66 69 6C 65 20 6E 61 6D 65 20 73 70 65 63 69     file name speci
0299C0:  66 69 65 64 20 69 73 20 20 6C 6F 6E 67 65 72 20    fied is  longer 
0299D0:  20 74 68 61 6E 20 20 31 36 0D 0A 20 20 20 20 20     than  16..     
0299E0:  20 20 63 68 61 72 61 63 74 65 72 73 20 74 68 65      characters the
0299F0:  6E 20 20 69 74 20 20 69 73 20 20 74 72 75 6E 63    n  it  is  trunc
029A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
029A10:  23 00 00 00 02 09 50 E5 23 00 C1 02 00 00 00 02    #.....P.#.......
029A20:  23 00 C2 02 00 00 00 02 23 00 C3 02 00 00 00 02    #.......#.......
029A30:  23 00 C4 02 00 00 00 02 23 00 C5 02 00 00 00 02    #.......#.......
029A40:  23 00 C6 02 00 00 00 02 23 00 C7 02 00 00 00 02    #.......#.......
029A50:  23 00 C8 02 00 00 00 02 23 00 C9 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:  61 74 65 64 20 20 61 6E 64 20 20 69 66 20 20 69    ated  and  if  i
029B10:  74 20 20 69 73 20 20 73 68 6F 72 74 65 72 20 20    t  is  shorter  
029B20:  74 68 61 6E 20 20 31 36 0D 0A 20 20 20 20 20 20    than  16..      
029B30:  20 63 68 61 72 61 63 74 65 72 73 20 69 74 20 69     characters it i
029B40:  73 20 70 61 64 64 65 64 20 74 6F 20 31 36 20 63    s padded to 16 c
029B50:  68 61 72 61 63 74 65 72 73 20 77 69 74 68 20 6E    haracters with n
029B60:  75 6C 6C 73 20 28 63 68 61 72 61 63 74 65 72 20    ulls (character 
029B70:  23 30 30 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    #00).....       
029B80:  57 68 65 6E 20 6F 70 65 6E 69 6E 67 20 61 20 66    When opening a f
029B90:  69 6C 65 20 66 6F 72 20 72 65 61 64 69 6E 67 20    ile for reading 
029BA0:  61 20 7A 65 72 6F 20 6C 65 6E 67 74 68 20 20 66    a zero length  f
029BB0:  69 6C 65 6E 61 6D 65 20 20 6F 72 20 20 6F 6E 65    ilename  or  one
029BC0:  20 20 74 68 61 74 0D 0A 20 20 20 20 20 20 20 73      that..       s
029BD0:  74 61 72 74 73 20 77 69 74 68 20 61 20 6E 75 6C    tarts with a nul
029BE0:  6C 20 68 61 73 20 61 20 73 70 65 63 69 61 6C 20    l has a special 
029BF0:  6D 65 61 6E 69 6E 67 20 2D 20 72 65 61 64 20 74    meaning - read t
029C00:  68 65 20 6E 65 78 74 20 66 69 6C 65 20 20 6F 6E    he next file  on
029C10:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 74 61      the..       ta
029C20:  70 65 2E 20 54 68 65 20 43 61 73 73 65 74 74 65    pe. The Cassette
029C30:  20 4D 61 6E 61 67 65 72 20 73 65 61 72 63 68 65     Manager searche
029C40:  73 20 74 68 65 20 74 61 70 65 20 75 6E 74 69 6C    s the tape until
029C50:  20 69 74 20 66 69 6E 64 73 20 74 68 65 20 20 66     it finds the  f
029C60:  69 72 73 74 0D 0A 20 20 20 20 20 20 20 62 6C 6F    irst..       blo
029C70:  63 6B 20 6F 66 20 61 20 66 69 6C 65 20 61 6E 64    ck of a file and
029C80:  20 69 74 20 72 65 61 64 73 20 74 68 69 73 20 66     it reads this f
029C90:  69 6C 65 2E 20 4F 6E 63 65 20 74 68 65 20 66 69    ile. Once the fi
029CA0:  72 73 74 20 62 6C 6F 63 6B 20 6F 66 20 61 20 66    rst block of a f
029CB0:  69 6C 65 0D 0A 20 20 20 20 20 20 20 68 61 73 20    ile..       has 
029CC0:  62 65 65 6E 20 66 6F 75 6E 64 20 74 68 65 20 43    been found the C
029CD0:  61 73 73 65 74 74 65 20 4D 61 6E 61 67 65 72 20    assette Manager 
029CE0:  77 69 6C 6C 20 6F 6E 6C 79 20 72 65 61 64 20 72    will only read r
029CF0:  6F 6D 20 74 68 61 74 20 20 66 69 6C 65 20 20 61    om that  file  a
029D00:  6E 64 0D 0A 20 20 20 20 20 20 20 6E 6F 20 6F 74    nd..       no ot
029D10:  68 65 72 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 42    her.....       B
029D20:  41 53 49 43 20 20 75 73 65 73 20 20 61 20 20 73    ASIC  uses  a  s
029D30:  6C 69 67 68 74 6C 79 20 20 20 65 78 74 65 6E 64    lightly   extend
029D40:  65 64 20 20 20 66 6F 72 6D 20 20 20 6F 66 20 20    ed   form   of  
029D50:  20 66 69 6C 65 6E 61 6D 65 2E 20 20 20 49 66 20     filename.   If 
029D60:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 66 69      the..       fi
029D70:  72 73 74 20 63 68 61 72 61 63 74 65 72 20 6F 66    rst character of
029D80:  20 61 20 42 41 53 49 43 20 66 69 6C 65 6E 61 6D     a BASIC filenam
029D90:  65 20 69 73 20 61 6E 20 65 78 63 6C 61 6D 61 74    e is an exclamat
029DA0:  69 6F 6E 20 6D 61 72 6B 20 20 28 63 68 61 72 61    ion mark  (chara
029DB0:  63 74 65 72 0D 0A 20 20 20 20 20 20 20 23 32 31    cter..       #21
029DC0:  29 20 74 68 65 20 42 41 53 49 43 20 74 75 72 6E    ) the BASIC turn
029DD0:  73 20 74 68 65 20 70 72 6F 6D 70 74 20 6D 65 73    s the prompt mes
029DE0:  73 61 67 65 73 20 20 6F 66 66 20 20 28 73 65 65    sages  off  (see
029DF0:  20 20 38 2E 31 31 20 20 62 65 6C 6F 77 29 20 20      8.11  below)  
029E00:  61 6E 64 0D 0A 20 20 20 20 20 20 20 72 65 6D 6F    and..       remo
029E10:  76 65 73 20 74 68 65 20 65 78 63 6C 61 6D 61 74    ves the exclamat
029E20:  69 6F 6E 20 6D 61 72 6B 20 66 72 6F 6D 20 20 74    ion mark from  t
029E30:  68 65 20 20 6E 61 6D 65 2E 20 20 54 68 69 73 20    he  name.  This 
029E40:  20 66 61 63 69 6C 69 74 79 20 20 69 73 20 20 6E     facility  is  n
029E50:  6F 74 0D 0A 20 20 20 20 20 20 20 70 72 6F 76 69    ot..       provi
029E60:  64 65 64 20 61 74 20 74 68 65 20 43 61 73 73 65    ded at the Casse
029E70:  74 74 65 20 4D 61 6E 61 67 65 72 20 6C 65 76 65    tte Manager leve
029E80:  6C 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53    l.....       AMS
029E90:  54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F    TRAD CPC464/664/
029EA0:  36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20    6128 FIRMWARE   
029EB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
029EC0:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
029ED0:  38 2E 37 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    8.7.............
029EE0:  0A 20 20 20 20 20 20 20 38 2E 31 31 20 43 61 73    .       8.11 Cas
029EF0:  73 65 74 74 65 20 4D 61 6E 61 67 65 72 20 4D 65    sette Manager Me
029F00:  73 73 61 67 65 73 2E 0D 0A 0D 0A 20 20 20 20 20    ssages.....     
029F10:  20 20 54 68 65 20 43 61 73 73 65 74 74 65 20 4D      The Cassette M
029F20:  61 6E 61 67 65 72 20 69 73 73 75 65 73 20 61 20    anager issues a 
029F30:  6E 75 6D 62 65 72 20 6F 66 20 6D 65 73 73 61 67    number of messag
029F40:  65 73 20 74 6F 20 70 72 6F 6D 70 74 20 61 6E 64    es to prompt and
029F50:  20 20 69 6E 66 6F 72 6D 0D 0A 20 20 20 20 20 20      inform..      
029F60:  20 74 68 65 20 75 73 65 72 20 61 6E 64 20 74 6F     the user and to
029F70:  20 77 61 72 6E 20 77 68 65 6E 20 65 72 72 6F 72     warn when error
029F80:  73 20 20 68 61 76 65 20 20 6F 63 63 75 72 72 65    s  have  occurre
029F90:  64 2E 20 20 54 68 65 20 20 6D 65 73 73 61 67 65    d.  The  message
029FA0:  73 20 20 74 68 61 74 0D 0A 20 20 20 20 20 20 20    s  that..       
029FB0:  70 72 6F 6D 70 74 20 6F 72 20 69 6E 66 6F 72 6D    prompt or inform
029FC0:  20 74 68 65 20 75 73 65 72 20 6D 61 79 20 62 65     the user may be
029FD0:  20 74 75 72 6E 65 64 20 6F 66 66 20 6F 72 20 6F     turned off or o
029FE0:  6E 20 61 73 20 64 65 73 69 72 65 64 20 28 73 65    n as desired (se
029FF0:  65 20 20 43 41 53 0D 0A 20 20 20 20 20 20 20 4E    e  CAS..       N
02A000:  4F 49 53 59 29 2E 20 4D 65 73 73 61 67 65 73 20    OISY). Messages 
02A010:  74 68 61 74 20 69 6E 66 6F 72 6D 20 74 68 65 20    that inform the 
02A020:  75 73 65 72 20 6F 66 20 65 72 72 6F 72 73 20 63    user of errors c
02A030:  61 6E 6E 6F 74 20 62 65 20 20 74 75 72 6E 65 64    annot be  turned
02A040:  20 20 6F 66 66 0D 0A 20 20 20 20 20 20 20 62 79      off..       by
02A050:  20 74 68 69 73 20 6D 65 63 68 61 6E 69 73 6D 2E     this mechanism.
02A060:  0D 0A 0D 0A 20 20 20 20 20 20 20 61 2E 20 50 72    ....       a. Pr
02A070:  6F 6D 70 74 20 6D 65 73 73 61 67 65 73 2E 0D 0A    ompt messages...
02A080:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 50 72    ..            Pr
02A090:  65 73 73 20 50 4C 41 59 20 74 68 65 6E 20 61 6E    ess PLAY then an
02A0A0:  79 20 6B 65 79 3A 0D 0A 0D 0A 20 20 20 20 20 20    y key:....      
02A0B0:  20 20 20 20 20 20 54 68 69 73 20 6D 65 73 73 61          This messa
02A0C0:  67 65 20 69 73 20 69 73 73 75 65 64 20 77 68 65    ge is issued whe
02A0D0:  6E 20 74 68 65 20 43 61 73 73 65 74 74 65 20 4D    n the Cassette M
02A0E0:  61 6E 61 67 65 72 20 69 73 20 61 62 6F 75 74 20    anager is about 
02A0F0:  74 6F 20 72 65 61 64 0D 0A 20 20 20 20 20 20 20    to read..       
02A100:  20 20 20 20 20 74 68 65 20 66 69 72 73 74 20 62         the first b
02A110:  6C 6F 63 6B 20 6F 66 20 61 20 66 69 6C 65 20 66    lock of a file f
02A120:  72 6F 6D 20 74 61 70 65 20 6F 72 20 77 68 65 6E    rom tape or when
02A130:  20 69 74 20 69 73 20 61 62 6F 75 74 20 74 6F 20     it is about to 
02A140:  72 65 61 64 20 61 0D 0A 20 20 20 20 20 20 20 20    read a..        
02A150:  20 20 20 20 62 6C 6F 63 6B 20 20 61 66 74 65 72        block  after
02A160:  20 20 68 61 76 69 6E 67 20 20 77 72 69 74 74 65      having  writte
02A170:  6E 20 20 74 6F 20 20 74 61 70 65 20 20 28 73 65    n  to  tape  (se
02A180:  65 20 20 73 65 63 74 69 6F 6E 20 20 38 2E 39 29    e  section  8.9)
02A190:  2E 20 20 49 74 0D 0A 20 20 20 20 20 20 20 20 20    .  It..         
02A1A0:  20 20 20 69 6E 64 69 63 61 74 65 73 20 74 68 61       indicates tha
02A1B0:  74 20 74 68 65 20 74 61 70 65 20 63 6F 6E 74 61    t the tape conta
02A1C0:  69 6E 69 6E 67 20 74 68 65 20 66 69 6C 65 20 74    ining the file t
02A1D0:  6F 20 62 65 20 72 65 61 64 20 73 68 6F 75 6C 64    o be read should
02A1E0:  20 20 62 65 0D 0A 20 20 20 20 20 20 20 20 20 20      be..          
02A1F0:  20 20 6C 6F 61 64 65 64 20 61 6E 64 20 74 68 61      loaded and tha
02A200:  74 20 20 74 68 65 20 20 50 4C 41 59 20 20 62 75    t  the  PLAY  bu
02A210:  74 74 6F 6E 20 20 6F 6E 20 20 74 68 65 20 20 72    tton  on  the  r
02A220:  65 63 6F 72 64 65 72 20 20 73 68 6F 75 6C 64 20    ecorder  should 
02A230:  20 62 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20     be..           
02A240:  20 70 72 65 73 73 65 64 2E 20 54 68 65 20 43 61     pressed. The Ca
02A250:  73 73 65 74 74 65 20 4D 61 6E 61 67 65 72 20 64    ssette Manager d
02A260:  6F 65 73 20 20 6E 6F 74 20 20 69 73 73 75 65 20    oes  not  issue 
02A270:  20 74 68 69 73 20 20 6D 65 73 73 61 67 65 20 20     this  message  
02A280:  61 74 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    at..            
02A290:  6F 74 68 65 72 20 74 69 6D 65 73 20 73 69 6E 63    other times sinc
02A2A0:  65 20 69 74 20 61 73 73 75 6D 65 73 20 20 74 68    e it assumes  th
02A2B0:  61 74 20 20 74 68 65 20 20 63 6F 72 72 65 63 74    at  the  correct
02A2C0:  20 20 74 61 70 65 20 20 69 73 20 20 73 74 69 6C      tape  is  stil
02A2D0:  6C 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 6C    l..            l
02A2E0:  6F 61 64 65 64 20 61 6E 64 20 74 68 61 74 20 74    oaded and that t
02A2F0:  68 65 20 50 4C 41 59 20 62 75 74 74 6F 6E 20 69    he PLAY button i
02A300:  73 20 73 74 69 6C 6C 20 70 72 65 73 73 65 64 2E    s still pressed.
02A310:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
02A320:  50 72 65 73 73 20 52 45 43 20 61 6E 64 20 50 4C    Press REC and PL
02A330:  41 59 20 74 68 65 6E 20 61 6E 79 20 6B 65 79 3A    AY then any key:
02A340:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
02A350:  54 68 69 73 20 6D 65 73 73 61 67 65 20 69 73 20    This message is 
02A360:  69 73 73 75 65 64 20 77 68 65 6E 20 74 68 65 20    issued when the 
02A370:  20 43 61 73 73 65 74 74 65 20 20 4D 61 6E 61 67     Cassette  Manag
02A380:  65 72 20 20 69 73 20 20 61 62 6F 75 74 20 20 74    er  is  about  t
02A390:  6F 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 77    o..            w
02A3A0:  72 69 74 65 20 74 68 65 20 66 69 72 73 74 20 62    rite the first b
02A3B0:  6C 6F 63 6B 20 6F 66 20 61 20 66 69 6C 65 20 74    lock of a file t
02A3C0:  6F 20 74 61 70 65 20 6F 72 20 77 68 65 6E 20 69    o tape or when i
02A3D0:  74 20 20 69 73 20 20 61 62 6F 75 74 20 20 74 6F    t  is  about  to
02A3E0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 77 72    ..            wr
02A3F0:  69 74 65 20 61 20 62 6C 6F 63 6B 20 61 66 74 65    ite a block afte
02A400:  72 20 68 61 76 69 6E 67 20 72 65 61 64 20 66 72    r having read fr
02A410:  6F 6D 20 74 61 70 65 2E 20 49 74 20 69 6E 64 69    om tape. It indi
02A420:  63 61 74 65 73 20 74 68 61 74 20 20 74 68 65 0D    cates that  the.
02A430:  0A 20 20 20 20 20 20 20 20 20 20 20 20 74 61 70    .            tap
02A440:  65 20 6F 6E 20 77 68 69 63 68 20 74 68 65 20 66    e on which the f
02A450:  69 6C 65 20 69 73 20 74 6F 20 62 65 20 77 72 69    ile is to be wri
02A460:  74 74 65 6E 20 73 68 6F 75 6C 64 20 62 65 20 6C    tten should be l
02A470:  6F 61 64 65 64 20 61 6E 64 20 74 68 61 74 0D 0A    oaded and that..
02A480:  20 20 20 20 20 20 20 20 20 20 20 20 74 68 65 20                the 
02A490:  52 45 43 20 61 6E 64 20 50 4C 41 59 20 62 75 74    REC and PLAY but
02A4A0:  74 6F 6E 73 20 6F 6E 20 74 68 65 20 72 65 63 6F    tons on the reco
02A4B0:  72 64 65 72 20 73 68 6F 75 6C 64 20 62 65 20 20    rder should be  
02A4C0:  70 72 65 73 73 65 64 2E 20 20 54 68 65 0D 0A 20    pressed.  The.. 
02A4D0:  20 20 20 20 20 20 20 20 20 20 20 43 61 73 73 65               Casse
02A4E0:  74 74 65 20 4D 61 6E 61 67 65 72 20 64 6F 65 73    tte Manager does
02A4F0:  20 6E 6F 74 20 69 73 73 75 65 20 74 68 69 73 20     not issue this 
02A500:  6D 65 73 73 61 67 65 20 61 74 20 6F 74 68 65 72    message at other
02A510:  20 74 69 6D 65 73 20 73 69 6E 63 65 0D 0A 20 20     times since..  
02A520:  20 20 20 20 20 20 20 20 20 20 69 74 20 61 73 73              it ass
02A530:  75 6D 65 73 20 74 68 61 74 20 74 68 65 20 63 6F    umes that the co
02A540:  72 72 65 63 74 20 74 61 70 65 20 69 73 20 73 74    rrect tape is st
02A550:  69 6C 6C 20 6C 6F 61 64 65 64 20 61 6E 64 20 74    ill loaded and t
02A560:  68 61 74 20 74 68 65 20 52 45 43 0D 0A 20 20 20    hat the REC..   
02A570:  20 20 20 20 20 20 20 20 20 61 6E 64 20 50 4C 41             and PLA
02A580:  59 20 62 75 74 74 6F 6E 73 20 61 72 65 20 73 74    Y buttons are st
02A590:  69 6C 6C 20 70 72 65 73 73 65 64 2E 0D 0A 0D 0A    ill pressed.....
02A5A0:  20 20 20 20 20 20 20 62 2E 20 49 6E 66 6F 72 6D           b. Inform
02A5B0:  61 74 69 6F 6E 20 6D 65 73 73 61 67 65 73 2E 0D    ation messages..
02A5C0:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 46    ...            F
02A5D0:  6F 75 6E 64 20 46 49 4C 45 4E 41 4D 45 20 62 6C    ound FILENAME bl
02A5E0:  6F 63 6B 20 4E 0D 0A 0D 0A 20 20 20 20 20 20 20    ock N....       
02A5F0:  20 20 20 20 20 54 68 69 73 20 6D 65 73 73 61 67         This messag
02A600:  65 20 69 73 20 70 72 69 6E 74 65 64 20 77 68 65    e is printed whe
02A610:  6E 20 72 65 61 64 69 6E 67 20 66 72 6F 6D 20 74    n reading from t
02A620:  68 65 20 74 61 70 65 20 20 69 66 20 20 61 20 20    he tape  if  a  
02A630:  68 65 61 64 65 72 0D 0A 20 20 20 20 20 20 20 20    header..        
02A640:  20 20 20 20 72 65 63 6F 72 64 20 69 73 20 66 6F        record is fo
02A650:  75 6E 64 20 74 68 61 74 20 66 6F 72 20 61 6E 79    und that for any
02A660:  20 72 65 61 73 6F 6E 20 64 6F 65 73 20 20 6E 6F     reason does  no
02A670:  74 20 20 6D 61 74 63 68 20 20 74 68 65 20 20 72    t  match  the  r
02A680:  65 63 6F 72 64 0D 0A 20 20 20 20 20 20 20 20 20    ecord..         
02A690:  20 20 20 74 68 61 74 20 77 61 73 20 65 78 70 65       that was expe
02A6A0:  63 74 65 64 2E 20 54 68 69 73 20 6D 61 79 20 69    cted. This may i
02A6B0:  6E 64 69 63 61 74 65 20 74 68 61 74 20 74 68 65    ndicate that the
02A6C0:  20 74 61 70 65 20 69 73 20 20 70 6F 73 69 74 69     tape is  positi
02A6D0:  6F 6E 65 64 0D 0A 20 20 20 20 20 20 20 20 20 20    oned..          
02A6E0:  20 20 69 6E 63 6F 72 72 65 63 74 6C 79 20 28 74      incorrectly (t
02A6F0:  6F 6F 20 65 61 72 6C 79 20 6F 72 20 74 6F 6F 20    oo early or too 
02A700:  6C 61 74 65 29 20 6F 72 20 74 68 61 74 20 20 74    late) or that  t
02A710:  68 65 20 20 77 72 6F 6E 67 20 20 74 61 70 65 20    he  wrong  tape 
02A720:  20 69 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20     is..           
02A730:  20 62 65 69 6E 67 20 70 6C 61 79 65 64 2E 0D 0A     being played...
02A740:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 4C 6F    ..            Lo
02A750:  61 64 69 6E 67 20 46 49 4C 45 4E 41 4D 45 20 62    ading FILENAME b
02A760:  6C 6F 63 6B 20 4E 0D 0A 0D 0A 20 20 20 20 20 20    lock N....      
02A770:  20 20 20 20 20 20 41 20 62 6C 6F 63 6B 20 6F 66          A block of
02A780:  20 74 68 65 20 66 69 6C 65 20 68 61 73 20 62 65     the file has be
02A790:  65 6E 20 66 6F 75 6E 64 20 61 6E 64 20 69 73 20    en found and is 
02A7A0:  62 65 69 6E 67 20 72 65 61 64 20 66 72 6F 6D 20    being read from 
02A7B0:  74 61 70 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    tape.....       
02A7C0:  20 20 20 20 20 53 61 76 69 6E 67 20 46 49 4C 45         Saving FILE
02A7D0:  4E 41 4D 45 20 62 6C 6F 63 6B 20 4E 0D 0A 0D 0A    NAME block N....
02A7E0:  20 20 20 20 20 20 20 20 20 20 20 20 41 20 62 6C                A bl
02A7F0:  6F 63 6B 20 6F 66 20 74 68 65 20 66 69 6C 65 20    ock of the file 
02A800:  69 73 20 62 65 69 6E 67 20 77 72 69 74 74 65 6E    is being written
02A810:  20 74 6F 20 74 61 70 65 2E 0D 0A 0D 0A 20 20 20     to tape.....   
02A820:  20 20 20 20 46 49 4C 45 4E 41 4D 45 20 69 6E 20        FILENAME in 
02A830:  74 68 65 20 61 62 6F 76 65 20 6D 65 73 73 61 67    the above messag
02A840:  65 73 20 69 73 20 74 68 65 20 6E 61 6D 65 20 6F    es is the name o
02A850:  66 20 20 74 68 65 20 20 66 69 6C 65 20 20 6F 72    f  the  file  or
02A860:  20 20 27 55 6E 6E 61 6D 65 64 0D 0A 20 20 20 20      'Unnamed..    
02A870:  20 20 20 66 69 6C 65 27 20 69 66 20 74 68 65 20       file' if the 
02A880:  66 69 6C 65 6E 61 6D 65 20 73 74 61 72 74 73 20    filename starts 
02A890:  77 69 74 68 20 61 20 6E 75 6C 6C 2E 0D 0A 0D 0A    with a null.....
02A8A0:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 62 6C 6F    ..       The blo
02A8B0:  63 6B 20 6E 75 6D 62 65 72 2C 20 4E 2C 20 69 6E    ck number, N, in
02A8C0:  64 69 63 61 74 65 73 20 77 68 69 63 68 20 62 6C    dicates which bl
02A8D0:  6F 63 6B 20 6F 66 20 74 68 65 20 66 69 6C 65 20    ock of the file 
02A8E0:  69 73 20 20 62 65 69 6E 67 20 20 72 65 61 64 0D    is  being  read.
02A8F0:  0A 20 20 20 20 20 20 20 6F 72 20 77 72 69 74 74    .       or writt
02A900:  65 6E 2E 20 54 68 65 20 66 69 72 73 74 20 62 6C    en. The first bl
02A910:  6F 63 6B 20 6F 66 20 61 20 66 69 6C 65 20 69 73    ock of a file is
02A920:  20 6E 6F 72 6D 61 6C 6C 79 20 62 6C 6F 63 6B 20     normally block 
02A930:  31 2C 20 74 68 65 20 20 73 65 63 6F 6E 64 0D 0A    1, the  second..
02A940:  20 20 20 20 20 20 20 62 6C 6F 63 6B 20 32 20 65           block 2 e
02A950:  74 63 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    tc.......       
02A960:  41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36    AMSTRAD CPC464/6
02A970:  36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45    64/6128 FIRMWARE
02A980:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02A990:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61                  pa
02A9A0:  67 65 20 38 2E 38 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ge 8.8..........
02A9B0:  0D 0A 0D 0A 20 20 20 20 20 20 20 63 2E 20 45 72    ....       c. Er
02A9C0:  72 6F 72 20 6D 65 73 73 61 67 65 73 2E 0D 0A 0D    ror messages....
02A9D0:  0A 20 20 20 20 20 20 20 20 20 20 20 52 65 77 69    .           Rewi
02A9E0:  6E 64 20 74 61 70 65 0D 0A 0D 0A 20 20 20 20 20    nd tape....     
02A9F0:  20 20 57 68 69 6C 65 20 73 65 61 72 63 68 69 6E      While searchin
02AA00:  67 20 66 6F 72 20 61 20 62 6C 6F 63 6B 20 6F 66    g for a block of
02AA10:  20 74 68 65 20 66 69 6C 65 20 62 65 69 6E 67 20     the file being 
02AA20:  72 65 61 64 2C 20 61 20 68 69 67 68 65 72 20 20    read, a higher  
02AA30:  6E 75 6D 62 65 72 65 64 0D 0A 20 20 20 20 20 20    numbered..      
02AA40:  20 62 6C 6F 63 6B 20 74 68 61 6E 20 74 68 61 74     block than that
02AA50:  20 72 65 71 75 69 72 65 64 20 68 61 73 20 62 65     required has be
02AA60:  65 6E 20 66 6F 75 6E 64 2E 20 54 68 65 20 72 65    en found. The re
02AA70:  71 75 69 72 65 64 20 62 6C 6F 63 6B 20 20 68 61    quired block  ha
02AA80:  73 20 20 62 65 65 6E 0D 0A 20 20 20 20 20 20 20    s  been..       
02AA90:  6D 69 73 73 65 64 2E 20 54 68 69 73 20 6D 65 73    missed. This mes
02AAA0:  73 61 67 65 20 69 73 20 6F 66 74 65 6E 20 70 72    sage is often pr
02AAB0:  6F 64 75 63 65 64 20 20 61 66 74 65 72 20 20 61    oduced  after  a
02AAC0:  20 20 72 65 61 64 20 20 65 72 72 6F 72 20 20 69      read  error  i
02AAD0:  6E 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 72    n  the..       r
02AAE0:  65 71 75 69 72 65 64 20 62 6C 6F 63 6B 20 77 68    equired block wh
02AAF0:  65 6E 20 74 68 65 20 6E 65 78 74 20 62 6C 6F 63    en the next bloc
02AB00:  6B 20 69 73 20 66 6F 75 6E 64 2E 0D 0A 0D 0A 20    k is found..... 
02AB10:  20 20 20 20 20 20 20 20 20 20 20 52 65 61 64 20               Read 
02AB20:  65 72 72 6F 72 20 58 0D 0A 0D 0A 20 20 20 20 20    error X....     
02AB30:  20 20 20 20 20 20 20 41 6E 20 65 72 72 6F 72 20           An error 
02AB40:  6F 66 20 73 6F 6D 65 20 6B 69 6E 64 20 6F 63 63    of some kind occ
02AB50:  75 72 72 65 64 20 77 68 69 6C 73 74 20 72 65 61    urred whilst rea
02AB60:  64 69 6E 67 20 66 72 6F 6D 20 74 61 70 65 2E 20    ding from tape. 
02AB70:  54 68 65 20 74 61 70 65 0D 0A 20 20 20 20 20 20    The tape..      
02AB80:  20 20 20 20 20 20 73 68 6F 75 6C 64 20 62 65 20          should be 
02AB90:  72 65 77 6F 75 6E 64 20 61 6E 64 20 74 68 65 20    rewound and the 
02ABA0:  62 6C 6F 63 6B 20 70 6C 61 79 65 64 20 61 67 61    block played aga
02ABB0:  69 6E 2E 20 54 68 65 20 58 20 69 73 20 20 61 20    in. The X is  a 
02ABC0:  20 73 69 6E 67 6C 65 0D 0A 20 20 20 20 20 20 20     single..       
02ABD0:  20 20 20 20 20 6C 65 74 74 65 72 20 69 6E 64 69         letter indi
02ABE0:  63 61 74 69 6E 67 20 77 68 61 74 20 6B 69 6E 64    cating what kind
02ABF0:  20 6F 66 20 72 65 61 64 20 65 72 72 6F 72 20 6F     of read error o
02AC00:  63 63 75 72 72 65 64 3A 0D 0A 0D 0A 20 20 20 20    ccurred:....    
02AC10:  20 20 20 20 20 20 20 20 27 61 27 20 20 20 20 20            'a'     
02AC20:  20 20 20 20 20 20 42 69 74 20 74 6F 6F 20 6C 6F          Bit too lo
02AC30:  6E 67 20 20 20 20 20 20 20 20 41 6E 20 69 6D 70    ng        An imp
02AC40:  6F 73 73 69 62 6C 79 20 6C 6F 6E 67 20 6F 6E 65    ossibly long one
02AC50:  20 6F 72 20 20 7A 65 72 6F 0D 0A 20 20 20 20 20     or  zero..     
02AC60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AC70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AC80:  20 20 20 20 20 20 20 20 20 68 61 73 20 62 65 65             has bee
02AC90:  6E 20 6D 65 61 73 75 72 65 64 2E 20 20 54 68 69    n measured.  Thi
02ACA0:  73 20 20 6F 66 74 65 6E 0D 0A 20 20 20 20 20 20    s  often..      
02ACB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02ACC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02ACD0:  20 20 20 20 20 20 20 20 69 6E 64 69 63 61 74 65            indicate
02ACE0:  73 20 72 65 61 64 69 6E 67 20 70 61 73 74 20 74    s reading past t
02ACF0:  68 65 20 20 65 6E 64 0D 0A 20 20 20 20 20 20 20    he  end..       
02AD00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
02AD10:  24 00 00 00 02 09 50 E5 24 00 C1 02 00 00 00 02    $.....P.$.......
02AD20:  24 00 C2 02 00 00 00 02 24 00 C3 02 00 00 00 02    $.......$.......
02AD30:  24 00 C4 02 00 00 00 02 24 00 C5 02 00 00 00 02    $.......$.......
02AD40:  24 00 C6 02 00 00 00 02 24 00 C7 02 00 00 00 02    $.......$.......
02AD50:  24 00 C8 02 00 00 00 02 24 00 C9 02 00 00 00 02    $.......$.......
02AD60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AE00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AE10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AE20:  20 20 20 20 20 20 20 6F 66 20 74 68 65 20 72 65           of the re
02AE30:  63 6F 72 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    cord.....       
02AE40:  20 20 20 20 20 27 62 27 20 20 20 20 20 20 20 20         'b'        
02AE50:  20 20 20 43 52 43 20 65 72 72 6F 72 20 20 20 20       CRC error    
02AE60:  20 20 20 20 20 20 20 44 61 74 61 20 20 20 77 61           Data   wa
02AE70:  73 20 20 20 72 65 61 64 20 20 20 66 72 6F 6D 20    s   read   from 
02AE80:  20 20 74 61 70 65 0D 0A 20 20 20 20 20 20 20 20      tape..        
02AE90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AEA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AEB0:  20 20 20 20 20 20 69 6E 63 6F 72 72 65 63 74 6C          incorrectl
02AEC0:  79 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    y.....          
02AED0:  20 20 27 64 27 20 20 20 20 20 20 20 20 20 20 20      'd'           
02AEE0:  42 6C 6F 63 6B 20 74 6F 6F 20 6C 6F 6E 67 20 20    Block too long  
02AEF0:  20 20 20 20 54 68 65 20 64 61 74 61 20 72 65 63        The data rec
02AF00:  6F 72 64 20 20 63 6F 6E 74 61 69 6E 73 20 20 6D    ord  contains  m
02AF10:  6F 72 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ore..           
02AF20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AF30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AF40:  20 20 20 74 68 61 6E 20 74 68 65 20 65 78 70 65       than the expe
02AF50:  63 74 65 64 20 32 30 34 38 20 62 79 74 65 73 20    cted 2048 bytes 
02AF60:  6F 66 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    of..            
02AF70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AF80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AF90:  20 20 64 61 74 61 2E 0D 0A 0D 0A 20 20 20 20 20      data.....     
02AFA0:  20 20 20 20 20 20 20 57 72 69 74 65 20 65 72 72           Write err
02AFB0:  6F 72 20 61 0D 0A 0D 0A 20 20 20 20 20 20 20 20    or a....        
02AFC0:  20 20 20 20 41 6E 20 65 72 72 6F 72 20 6F 63 63        An error occ
02AFD0:  75 72 72 65 64 20 77 68 69 6C 73 74 20 77 72 69    urred whilst wri
02AFE0:  74 69 6E 67 20 74 6F 20 74 68 65 20 74 61 70 65    ting to the tape
02AFF0:  2E 20 54 68 65 72 65 20 20 69 73 20 20 6F 6E 6C    . There  is  onl
02B000:  79 20 20 6F 6E 0D 0A 20 20 20 20 20 20 20 20 20    y  on..         
02B010:  20 20 20 70 6F 73 73 69 62 6C 65 20 77 72 69 74       possible writ
02B020:  65 20 65 72 72 6F 72 2E 20 54 68 69 73 20 69 6E    e error. This in
02B030:  64 69 63 61 74 65 73 20 74 68 61 74 20 20 74 68    dicates that  th
02B040:  65 20 20 43 61 73 73 65 74 74 65 20 20 4D 61 6E    e  Cassette  Man
02B050:  61 67 65 72 0D 0A 20 20 20 20 20 20 20 20 20 20    ager..          
02B060:  20 20 77 61 73 20 75 6E 61 62 6C 65 20 74 6F 20      was unable to 
02B070:  77 72 69 74 65 20 61 20 62 69 74 20 61 73 20 66    write a bit as f
02B080:  61 73 74 20 61 73 20 77 61 73 20 20 72 65 71 75    ast as was  requ
02B090:  65 73 74 65 64 2E 20 20 54 68 69 73 20 20 65 72    ested.  This  er
02B0A0:  72 6F 72 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ror..           
02B0B0:  20 77 69 6C 6C 20 6E 65 76 65 72 20 6F 63 63 75     will never occu
02B0C0:  72 20 75 6E 6C 65 73 73 20 74 68 65 20 75 73 65    r unless the use
02B0D0:  72 20 68 61 73 20 73 65 74 20 74 68 65 20 77 72    r has set the wr
02B0E0:  69 74 65 20 20 73 70 65 65 64 20 20 62 65 79 6F    ite  speed  beyo
02B0F0:  6E 64 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    nd..            
02B100:  74 68 65 20 6D 61 78 69 6D 75 6D 20 70 6F 73 73    the maximum poss
02B110:  69 62 6C 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    ible.....       
02B120:  38 2E 31 32 20 45 73 63 61 70 65 20 4B 65 79 2E    8.12 Escape Key.
02B130:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 65    ....       The e
02B140:  73 63 61 70 65 20 6B 65 79 20 6F 6E 20 20 74 68    scape key on  th
02B150:  65 20 20 6B 65 79 62 6F 61 72 64 20 20 6D 61 79    e  keyboard  may
02B160:  20 20 62 65 20 20 75 73 65 64 20 20 74 6F 20 20      be  used  to  
02B170:  61 62 61 6E 64 6F 6E 20 20 63 61 73 73 65 74 74    abandon  cassett
02B180:  65 0D 0A 20 20 20 20 20 20 20 6F 70 65 72 61 74    e..       operat
02B190:  69 6F 6E 73 20 61 74 20 63 65 72 74 61 69 6E 20    ions at certain 
02B1A0:  74 69 6D 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20    times.....      
02B1B0:  20 57 68 65 6E 20 74 68 65 20 43 61 73 73 65 74     When the Casset
02B1C0:  74 65 20 4D 61 6E 61 67 65 72 20 69 73 73 75 65    te Manager issue
02B1D0:  73 20 6F 6E 65 20 6F 66 20 74 68 65 20 70 72 6F    s one of the pro
02B1E0:  6D 70 74 20 6D 65 73 73 61 67 65 73 20 20 69 74    mpt messages  it
02B1F0:  20 20 63 61 6C 6C 73 0D 0A 20 20 20 20 20 20 20      calls..       
02B200:  4B 4D 20 52 45 41 44 20 43 48 41 52 20 72 65 70    KM READ CHAR rep
02B210:  65 61 74 65 64 6C 79 20 74 6F 20 65 6D 70 74 79    eatedly to empty
02B220:  20 74 68 65 20 6B 65 79 20 62 75 66 66 65 72 20     the key buffer 
02B230:  6F 75 74 2E 20 54 68 65 6E 20 69 74 20 63 61 6C    out. Then it cal
02B240:  6C 73 20 20 4B 4D 0D 0A 20 20 20 20 20 20 20 57    ls  KM..       W
02B250:  41 49 54 20 4B 45 59 20 74 6F 20 77 61 69 74 20    AIT KEY to wait 
02B260:  75 6E 74 69 6C 20 74 68 65 20 75 73 65 72 20 70    until the user p
02B270:  72 65 73 73 65 73 20 69 73 20 23 46 43 2C 20 20    resses is #FC,  
02B280:  77 68 69 63 68 20 20 69 73 20 20 74 68 65 20 20    which  is  the  
02B290:  76 61 6C 75 65 0D 0A 20 20 20 20 20 20 20 6E 6F    value..       no
02B2A0:  72 6D 61 6C 6C 79 20 67 65 6E 65 72 61 74 65 64    rmally generated
02B2B0:  20 62 79 20 74 68 65 20 65 73 63 61 70 65 20 6B     by the escape k
02B2C0:  65 79 2C 20 74 68 65 6E 20 74 68 65 20 43 61 73    ey, then the Cas
02B2D0:  73 65 74 74 65 20 20 4D 61 6E 61 67 65 72 20 20    sette  Manager  
02B2E0:  77 69 6C 6C 0D 0A 20 20 20 20 20 20 20 61 62 61    will..       aba
02B2F0:  6E 64 6F 6E 20 74 68 65 20 72 65 61 64 20 6F 72    ndon the read or
02B300:  20 77 72 69 74 65 20 61 6E 64 20 77 69 6C 6C 20     write and will 
02B310:  72 65 74 75 72 6E 20 61 6E 20 65 72 72 6F 72 20    return an error 
02B320:  20 63 6F 6E 64 69 74 69 6F 6E 20 20 74 6F 20 20     condition  to  
02B330:  74 68 65 0D 0A 20 20 20 20 20 20 20 63 61 6C 6C    the..       call
02B340:  65 72 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 57 68    er.....       Wh
02B350:  65 6E 20 72 65 61 64 69 6E 67 20 66 72 6F 6D 20    en reading from 
02B360:  6F 72 20 77 72 69 74 69 6E 67 20 74 6F 20 74 68    or writing to th
02B370:  65 20 63 61 73 73 65 74 74 65 20 69 6E 74 65 72    e cassette inter
02B380:  72 75 70 74 73 20 20 61 72 65 20 20 64 69 73 61    rupts  are  disa
02B390:  62 6C 65 64 0D 0A 20 20 20 20 20 20 20 61 6E 64    bled..       and
02B3A0:  20 74 68 65 20 6E 6F 72 6D 61 6C 20 6B 65 79 20     the normal key 
02B3B0:  73 63 61 6E 6E 69 6E 67 20 6D 65 63 68 61 6E 69    scanning mechani
02B3C0:  73 6D 20 69 73 20 6E 6F 74 20 61 63 74 69 76 65    sm is not active
02B3D0:  2E 20 57 68 69 6C 65 20 72 65 61 64 69 6E 67 20    . While reading 
02B3E0:  20 6F 72 0D 0A 20 20 20 20 20 20 20 77 72 69 74     or..       writ
02B3F0:  69 6E 67 20 74 68 65 20 72 65 63 6F 72 64 20 20    ing the record  
02B400:  6C 65 61 64 65 72 20 20 74 68 65 20 20 43 61 73    leader  the  Cas
02B410:  73 65 74 74 65 20 20 4D 61 6E 61 67 65 72 20 20    sette  Manager  
02B420:  69 74 73 65 6C 66 20 20 73 63 61 6E 73 20 20 74    itself  scans  t
02B430:  68 65 0D 0A 20 20 20 20 20 20 20 6B 65 79 62 6F    he..       keybo
02B440:  61 72 64 20 74 6F 20 74 65 73 74 20 77 68 65 74    ard to test whet
02B450:  68 65 72 20 6B 65 79 20 36 36 2C 20 74 68 65 20    her key 66, the 
02B460:  65 73 63 61 70 65 20 6B 65 79 2C 20 69 73 20 20    escape key, is  
02B470:  70 72 65 73 73 65 64 2E 20 20 49 66 20 20 74 68    pressed.  If  th
02B480:  65 0D 0A 20 20 20 20 20 20 20 6B 65 79 20 69 73    e..       key is
02B490:  20 66 6F 75 6E 64 20 74 6F 20 62 65 20 70 72 65     found to be pre
02B4A0:  73 73 65 64 20 74 68 65 6E 20 74 68 65 20 43 61    ssed then the Ca
02B4B0:  73 73 65 74 74 65 20 4D 61 6E 61 67 65 72 20 61    ssette Manager a
02B4C0:  62 61 6E 64 6F 6E 73 20 74 68 65 20 72 65 61 64    bandons the read
02B4D0:  0D 0A 20 20 20 20 20 20 20 6F 72 20 77 72 69 74    ..       or writ
02B4E0:  65 20 20 61 6E 64 20 20 72 65 74 75 72 6E 73 20    e  and  returns 
02B4F0:  20 74 6F 20 20 74 68 65 20 20 63 61 6C 6C 65 72     to  the  caller
02B500:  20 20 28 77 69 74 68 20 20 61 6E 20 20 61 70 70      (with  an  app
02B510:  72 6F 70 72 69 61 74 65 20 20 65 72 72 6F 72 0D    ropriate  error.
02B520:  0A 20 20 20 20 20 20 20 63 6F 6E 64 69 74 69 6F    .       conditio
02B530:  6E 29 2E 20 57 68 69 6C 65 20 72 65 61 64 69 6E    n). While readin
02B540:  67 20 61 6E 64 20 77 72 69 74 69 6E 67 20 74 68    g and writing th
02B550:  65 20 64 61 74 61 20 69 6E 20 74 68 65 20 72 65    e data in the re
02B560:  63 6F 72 64 20 74 68 65 72 65 20 20 69 73 0D 0A    cord there  is..
02B570:  20 20 20 20 20 20 20 6E 6F 20 77 61 79 20 74 6F           no way to
02B580:  20 69 6E 74 65 72 72 75 70 74 20 74 68 65 20 43     interrupt the C
02B590:  61 73 73 65 74 74 65 20 4D 61 6E 61 67 65 72 2C    assette Manager,
02B5A0:  20 74 68 75 73 20 70 72 65 73 73 69 6E 67 20 45     thus pressing E
02B5B0:  53 43 20 6D 61 79 20 6E 6F 74 20 62 65 0D 0A 20    SC may not be.. 
02B5C0:  20 20 20 20 20 20 64 65 74 65 63 74 65 64 20 66          detected f
02B5D0:  6F 72 20 73 65 76 65 72 61 6C 20 73 65 63 6F 6E    or several secon
02B5E0:  64 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ds.........     
02B5F0:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
02B600:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
02B610:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
02B620:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B630:  70 61 67 65 20 38 2E 39 0D 0A 0D 0A 0D 0A 0D 0A    page 8.9........
02B640:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 38    ........       8
02B650:  2E 31 33 20 4C 6F 77 20 4C 65 76 65 6C 20 43 61    .13 Low Level Ca
02B660:  73 73 65 74 74 65 20 44 72 69 76 69 6E 67 2E 0D    ssette Driving..
02B670:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 6F 20 61    .....       To a
02B680:  6C 6C 6F 77 20 74 68 65 20 75 73 65 72 20 74 6F    llow the user to
02B690:  20 70 72 6F 64 75 63 65 20 61 20 6E 65 77 20 66     produce a new f
02B6A0:  69 6C 69 6E 67 20 73 79 73 74 65 6D 20 74 68 65    iling system the
02B6B0:  20 72 65 63 6F 72 64 20 20 72 65 61 64 20 20 61     record  read  a
02B6C0:  6E 64 0D 0A 20 20 20 20 20 20 20 77 72 69 74 65    nd..       write
02B6D0:  20 72 6F 75 74 69 6E 65 73 2C 20 43 41 53 20 52     routines, CAS R
02B6E0:  45 41 44 20 61 6E 64 20 43 41 53 20 57 52 49 54    EAD and CAS WRIT
02B6F0:  45 2C 20 61 72 65 20 69 6E 20 74 68 65 20 66 69    E, are in the fi
02B700:  72 6D 77 61 72 65 20 6A 75 6D 70 62 6C 6F 63 6B    rmware jumpblock
02B710:  2E 0D 0A 20 20 20 20 20 20 20 54 68 65 72 65 20    ...       There 
02B720:  69 73 20 61 20 74 68 69 72 64 20 72 6F 75 74 69    is a third routi
02B730:  6E 65 20 61 74 20 74 68 69 73 20 6C 65 76 65 6C    ne at this level
02B740:  2C 20 43 41 53 20 20 43 48 45 43 4B 2C 20 20 77    , CAS  CHECK,  w
02B750:  68 6F 73 65 20 20 66 61 63 69 6C 69 74 69 65 73    hose  facilities
02B760:  0D 0A 20 20 20 20 20 20 20 61 72 65 20 6E 6F 74    ..       are not
02B770:  20 75 73 65 64 20 62 79 20 74 68 65 20 68 69 67     used by the hig
02B780:  68 65 72 20 6C 65 76 65 6C 73 20 6F 66 20 74 68    her levels of th
02B790:  65 20 43 61 73 73 65 74 74 65 20 4D 61 6E 61 67    e Cassette Manag
02B7A0:  65 72 2E 20 20 49 74 20 20 61 6C 6C 6F 77 73 0D    er.  It  allows.
02B7B0:  0A 20 20 20 20 20 20 20 74 68 65 20 64 61 74 61    .       the data
02B7C0:  20 74 68 61 74 20 68 61 73 20 62 65 65 6E 20 77     that has been w
02B7D0:  72 69 74 74 65 6E 20 74 6F 20 74 61 70 65 20 74    ritten to tape t
02B7E0:  6F 20 62 65 20 63 6F 6D 70 61 72 65 64 20 77 69    o be compared wi
02B7F0:  74 68 20 74 68 65 20 64 61 74 61 20 69 6E 0D 0A    th the data in..
02B800:  20 20 20 20 20 20 20 73 74 6F 72 65 2E 20 54 68           store. Th
02B810:  69 73 20 63 6F 75 6C 64 20 62 65 20 75 73 65 64    is could be used
02B820:  20 74 6F 20 70 65 72 66 6F 72 6D 20 61 20 72 65     to perform a re
02B830:  61 64 20 77 72 69 74 65 20 63 68 65 63 6B 20 69    ad write check i
02B840:  66 20 73 6F 20 64 65 73 69 72 65 64 2E 0D 0A 0D    f so desired....
02B850:  0A 0D 0A 20 20 20 20 20 20 20 41 6C 73 6F 20 61    ...       Also a
02B860:  76 61 69 6C 61 62 6C 65 20 69 6E 20 74 68 65 20    vailable in the 
02B870:  66 69 72 6D 77 61 72 65 20 6A 75 6D 70 62 6C 6F    firmware jumpblo
02B880:  63 6B 20 20 61 72 65 20 20 72 6F 75 74 69 6E 65    ck  are  routine
02B890:  73 20 20 74 6F 20 20 74 75 72 6E 20 20 74 68 65    s  to  turn  the
02B8A0:  0D 0A 20 20 20 20 20 20 20 63 61 73 73 65 74 74    ..       cassett
02B8B0:  65 20 6D 6F 74 6F 72 20 6F 6E 20 61 6E 64 20 6F    e motor on and o
02B8C0:  66 66 20 28 43 41 53 20 53 54 41 52 54 20 4D 4F    ff (CAS START MO
02B8D0:  54 4F 52 20 61 6E 64 20 43 41 53 20 53 54 4F 50    TOR and CAS STOP
02B8E0:  20 4D 4F 54 4F 52 29 2E 20 49 74 20 20 69 73 0D     MOTOR). It  is.
02B8F0:  0A 20 20 20 20 20 20 20 6E 6F 74 20 6E 65 63 65    .       not nece
02B900:  73 73 61 72 79 20 74 6F 20 74 75 72 6E 20 74 68    ssary to turn th
02B910:  65 20 6D 6F 74 6F 72 20 6F 6E 20 61 6E 64 20 6F    e motor on and o
02B920:  66 66 20 61 72 6F 75 6E 64 20 61 20 63 61 6C 6C    ff around a call
02B930:  20 6F 66 20 43 41 53 20 20 52 45 41 44 2C 0D 0A     of CAS  READ,..
02B940:  20 20 20 20 20 20 20 43 41 53 20 57 52 49 54 45           CAS WRITE
02B950:  20 6F 72 20 43 41 53 20 43 48 45 43 4B 20 61 73     or CAS CHECK as
02B960:  20 74 68 65 73 65 20 72 6F 75 74 69 6E 65 73 20     these routines 
02B970:  61 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20 74 75    automatically tu
02B980:  72 6E 20 74 68 65 20 20 6D 6F 74 6F 72 0D 0A 20    rn the  motor.. 
02B990:  20 20 20 20 20 20 6F 6E 20 61 6E 64 20 6F 66 66          on and off
02B9A0:  2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
02B9B0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
02B9C0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
02B9D0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
02B9E0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
02B9F0:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D    .......       AM
02BA00:  53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34    STRAD CPC464/664
02BA10:  2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20    /6128 FIRMWARE  
02BA20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02BA30:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
02BA40:  38 2E 31 30 0D 0A 1A 65 61 6C 73 20 77 69 74 68    8.10...eals with
02BA50:  20 72 65 61 64 69 6E 67 20 66 69 6C 65 73 20 66     reading files f
02BA60:  72 6F 6D 20 61 6E 64 20 20 77 72 69 74 69 6E 67    rom and  writing
02BA70:  20 20 66 69 6C 65 73 0D 0A 20 20 20 20 20 20 20      files..       
02BA80:  63 6B 20 20 61 72 65 20 20 72 6F 75 74 69 6E 65    ck  are  routine
02BA90:  73 20 20 74 6F 20 20 74 75 72 6E 20 20 74 68 65    s  to  turn  the
02BAA0:  0D 0A 20 20 20 20 20 20 20 63 61 73 73 65 74 74    ..       cassett
02BAB0:  65 20 6D 6F 74 6F 72 20 6F 6E 20 61 6E 64 20 6F    e motor on and o
02BAC0:  66 66 20 28 43 41 53 20 53 54 41 52 54 20 4D 4F    ff (CAS START MO
02BAD0:  54 4F 52 20 61 6E 64 20 43 41 53 20 53 54 4F 50    TOR and CAS STOP
02BAE0:  20 4D 4F 54 4F 52 29 2E 20 49 74 20 20 69 73 0D     MOTOR). It  is.
02BAF0:  0A 20 20 20 20 20 20 20 6E 6F 74 20 6E 65 63 65    .       not nece
02BB00:  73 73 61 72 79 20 74 6F 20 74 75 72 6E 20 74 68    ssary to turn th
02BB10:  65 20 6D 6F 74 6F 72 20 6F 6E 20 61 6E 64 20 6F    e motor on and o
02BB20:  66 66 20 61 72 6F 75 6E 64 20 61 20 63 61 6C 6C    ff around a call
02BB30:  20 6F 66 20 43 41 53 20 20 52 45 41 44 2C 0D 0A     of CAS  READ,..
02BB40:  20 20 20 20 20 20 20 43 41 53 20 57 52 49 54 45           CAS WRITE
02BB50:  20 6F 72 20 43 41 53 20 43 48 45 43 4B 20 61 73     or CAS CHECK as
02BB60:  20 74 68 65 73 65 20 72 6F 75 74 69 6E 65 73 20     these routines 
02BB70:  61 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20 74 75    automatically tu
02BB80:  72 6E 20 74 68 65 20 20 6D 6F 74 6F 72 0D 0A 20    rn the  motor.. 
02BB90:  20 20 20 20 20 20 6F 6E 20 61 6E 64 20 6F 66 66          on and off
02BBA0:  2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
02BBB0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
02BBC0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
02BBD0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
02BBE0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
02BBF0:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D    .......       AM
02BC00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BCF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BD90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BDF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BE00:  00 44 49 53 43 20 20 20 20 42 41 53 00 00 00 00    .DISC    BAS....
02BE10:  00 00 00 00 00 70 01 00 6C 00 00 00 00 00 00 00    .....p..l.......
02BE20:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02BE30:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02BE40:  6C 00 00 C2 03 5A 00 0A 00 AD 20 10 01 82 20 0F    l....Z.... ... .
02BE50:  01 A2 20 0E 2C 0F 01 A2 20 0F 2C 0F 01 BB 20 0F    .. .,... .,... .
02BE60:  01 BA 20 0E 01 AA 20 1C A2 38 01 A8 22 74 69 74    .. ... ..8.."tit
02BE70:  6C 65 2E 62 69 6E 22 2C 1C A3 38 01 83 20 1C A3    le.bin",.£8.. .£
02BE80:  5A 00 0A 00 AD 20 10 01 82 20 0F 01 A2 20 0E 2C    Z.... ... ... .,
02BE90:  0F 01 A2 20 0F 2C 0F 01 BB 20 0F 01 BA 20 0E 01    ... .,... ... ..
02BEA0:  AA 20 1C A2 38 01 A8 22 74 69 74 6C 65 2E 62 69    . ..8.."title.bi
02BEB0:  6E 22 2C 1C A3 38 01 83 20 1C A3 38 01 A8 22 64    n",.£8.. .£8.."d
02BEC0:  75 6D 70 2E 62 69 6E 22 2C 1C 00 85 01 83 20 1C    ump.bin",..... .
02BED0:  00 85 01 A2 20 0F 2C 19 1A 00 10 00 14 00 CA 22    .... .,........"
02BEE0:  73 74 61 72 74 2E 62 61 73 00 00 00 1A 73 00 00    start.bas....s..
02BEF0:  00 1A 00 1A 38 20 66 69 72 6D 77 61 72 65 20 67    ....8 firmware g
02BF00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BF90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BFA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BFB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BFC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BFD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BFE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02BFF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
02C010:  25 00 00 00 02 09 50 E5 25 00 C1 02 00 00 00 02    %.....P.%.......
02C020:  25 00 C2 02 00 00 00 02 25 00 C3 02 00 00 00 02    %.......%.......
02C030:  25 00 C4 02 00 00 00 02 25 00 C5 02 00 00 00 02    %.......%.......
02C040:  25 00 C6 02 00 00 00 02 25 00 C7 02 00 00 00 02    %.......%.......
02C050:  25 00 C8 02 00 00 00 02 25 00 C9 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:  00 07 C0 00 00 30 0F 18 00 0C 00 0C 07 8C 03 C6    .....0..........
02C110:  00 03 00 03 01 E3 00 F8 20 F0 38 10 00 0F E0 07    ........ .8.....
02C120:  C0 00 00 00 00 00 00 00 00 00 00 00 00 03 E3 00    ................
02C130:  00 07 C0 03 E0 00 00 00 00 00 7E 03 E0 00 00 00    ..........~.....
02C140:  00 07 80 00 00 00 00 1E 00 00 00 00 00 07 C0 00    ................
02C150:  00 70 1F 04 00 1C 00 18 0F 82 07 C1 00 07 00 06    .p..............
02C160:  03 E0 87 F8 40 F8 7C 08 00 0F E0 03 80 00 00 00    ....@.|.........
02C170:  00 00 00 00 00 00 00 00 00 07 E0 80 00 03 80 03    ................
02C180:  E0 00 00 00 00 00 7E 03 E7 C0 3E 00 00 07 80 77    ......~...>....w
02C190:  BC 07 F0 3E 03 E7 01 F8 01 F7 C0 00 00 F0 3F 00    ...>..........?.
02C1A0:  00 3C 00 18 1F 80 0F C0 00 0F 00 06 07 E0 01 F8    .<..............
02C1B0:  80 F8 7F 08 00 0F E0 00 07 CE 3B DE 1E 38 80 FC    ..........;..8..
02C1C0:  07 CE 03 E0 00 07 E0 47 C7 C0 00 FB E0 3E 00 00    .......G.....>..
02C1D0:  00 00 7E 03 EF E0 FF 80 00 0F C0 7B DE 0E 18 FF    ..~........{....
02C1E0:  C3 EB 06 1E 07 CF C0 00 01 F0 3F 00 00 7C 00 30    ..........?..|.0
02C1F0:  1F 80 0F C0 00 1F 00 0C 07 E0 01 F8 81 F8 7F 88    ................
02C200:  00 0F E0 00 07 D6 3D EF 1E 38 83 0F 07 D6 0F F8    ......=..8......
02C210:  00 0F E0 07 C7 C0 03 E7 E0 FF 80 00 00 00 7E 03    ..............~.
02C220:  F3 E1 E3 80 00 0F C0 73 9E 1F 00 3E 03 F0 08 1F    .......s...>....
02C230:  07 87 C0 00 03 F0 7F 00 00 FC 00 60 3F 80 1F C0    ...........`?...
02C240:  00 3F 00 18 0F E0 01 F8 81 F8 7F D0 00 0F FF C7    .?..............
02C250:  C7 E0 39 CF 1E 38 84 0F 87 E0 1E 38 00 0F E0 07    ..9..8.....8....
02C260:  C7 C7 C3 C3 E1 E3 80 00 00 00 7E 03 E3 E1 E3 C0    ..........~.....
02C270:  00 0F E0 73 9E 1F 80 3E 03 F0 00 1F 0F 87 C0 00    ...s...>........
02C280:  07 F0 7F 78 01 FC 00 60 3F BC 1F DE 00 7F 00 18    ...x...`?.......
02C290:  0F EF 01 F8 43 F0 3F E0 00 0F E0 07 C7 E0 39 CF    ....C.?.......9.
02C2A0:  1F 7D 80 0F 87 E0 1E 3C 00 0F E0 07 C7 C7 C7 C3    .}.....<........
02C2B0:  E1 E3 C0 00 00 00 7E 03 E3 E3 E3 C0 00 13 E0 73    ......~........s
02C2C0:  9E 1F C0 3E 03 E0 03 DF 0F 87 C0 00 0F F0 7F 04    ...>............
02C2D0:  03 FC 00 C0 3F 82 1F C1 00 FF 00 30 0F E0 81 F8    ....?......0....
02C2E0:  03 F0 1F F0 00 0F E0 07 C7 C0 39 CF 0F 7D 01 EF    ..........9..}..
02C2F0:  87 C0 3E 3C 00 0F EF C7 C7 C7 C7 C3 E3 E3 C0 00    ..><............
02C300:  00 44 55 4D 50 20 20 20 20 4D 53 48 00 00 00 00    .DUMP    MSH....
02C310:  00 00 02 00 00 00 85 00 F5 03 00 00 00 00 00 00    ................
02C320:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C330:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02C340:  F5 03 00 15 05 65 20 6C 61 73 74 20 6C 69 6E 65    .....e last line
02C350:  20 6F 66 20 74 68 65 20 73 63 72 65 65 6E 20 70     of the screen p
02C360:  72 6F 70 65 72 6C 79 20 2A 2A 0A 0D 0A 0D 3C 3C    roperly **....<<
02C370:  20 50 52 45 53 53 20 53 50 41 43 45 20 3E 3E 00     PRESS SPACE >>.
02C380:  01 BB 88 21 E8 88 CD D1 BC C9 FE 01 C2 CE 86 CD    ...!............
02C390:  2A 85 CD 4A 85 CD 21 85 CD 53 85 21 8F 01 C3 AB    *..J..!..S.!....
02C3A0:  85 06 00 21 9A 86 09 7E 4F C9 21 E8 86 11 D3 85    ...!...~O.!.....
02C3B0:  01 02 00 ED B0 C9 FE 02 C2 CE 86 CD 2A 85 CD 4A    ............*..J
02C3C0:  85 CD 21 85 CD 53 85 C3 64 85 DD 7E 00 4F DD 7E    ..!..S..d..~.O.~
02C3D0:  01 47 C9 ED 43 EC 88 CD BA BB CD E7 BB 32 EE 88    .G..C........2..
02C3E0:  CD 09 86 C9 DD 6E 02 DD 66 03 C3 AB 85 FE 01 C2    .....n..f.......
02C3F0:  CE 86 CD 7E 85 CD 8A 85 21 8F 01 C3 AB 85 21 E6    ...~....!.....!.
02C400:  86 11 D3 85 01 02 00 ED B0 C9 CD 4A 85 CD A2 85    ...........J....
02C410:  CD 53 85 C9 FE 02 C2 CE 86 CD 7E 85 CD 8A 85 C3    .S........~.....
02C420:  64 85 06 00 21 B4 86 09 7E 4F C9 22 EF 88 11 00    d...!...~O."....
02C430:  00 3E 07 32 F1 88 CD 14 86 0E 00 3A F1 88 47 E5    .>.2.......:..G.
02C440:  D5 C5 CD F0 BB C1 D1 21 EE 88 BE E1 37 20 01 A7    .......!....7 ..
02C450:  CB 11 2B 2B 00 10 E8 CD 6F 86 79 CD 66 86 13 E5    ..++....o.y.f...
02C460:  21 7F 02 37 ED 52 E1 38 05 2A EF 88 18 CB 23 7C    !..7.R.8.*....#|
02C470:  B5 C8 2B 11 00 00 22 EF 88 3E 07 BD 20 B8 7C B4    ..+..."..>.. .|.
02C480:  20 B4 3E 04 32 F1 88 18 AD 3E 1B CD 66 86 3E 31     .>.2....>..f.>1
02C490:  CD 66 86 C9 E5 3E 42 CD 1E BB E1 28 04 E1 C3 59    .f...>B....(...Y
02C4A0:  86 ED 4B EC 88 79 FE 00 20 04 E1 C3 59 86 3D 4F    ..K..y.. ...Y.=O
02C4B0:  ED 43 EC 88 AF 3E 0A CD 66 86 3E 0D CD 66 86 3E    .C...>..f.>..f.>
02C4C0:  1B CD 66 86 3E 2A CD 66 86 3E 04 CD 66 86 3E 7F    ..f.>*.f.>..f.>.
02C4D0:  CD 66 86 3E 02 CD 66 86 C9 21 6A 86 7E FE 00 C8    .f.>..f..!j.~...
02C4E0:  CD 66 86 23 18 F6 CD 2B BD C9 0A 0D 1B 32 00 3A    .f.#...+.....2.:
02C4F0:  F1 88 FE 07 C8 AF CB 11 CB 11 CB 11 C9 CD 11 BC    ................
02C500:  F5 3E 02 CD 0E BC CD D5 86 3E 2F CD 1E BB FE 00    .>.......>/.....
02C510:  28 F7 CD 03 BB F1 CD 0E BC C9 00 01 03 04 05 06    (...............
02C520:  07 08 09 0B 0C 0D 0E 0F 10 11 13 14 15 16 17 18    ................
02C530:  19 1B 1C 1D 00 03 05 07 09 0C 0E 10 12 17 19 1B    ................
02C540:  1D 20 22 24 26 29 2B 2D 2F 32 34 36 38 3B 21 EA    . "$&)+-/2468;!.
02C550:  86 CD DC 86 C9 21 13 87 CD DC 86 C9 7E FE 00 C8    .....!......~...
02C560:  CD 5A BB 23 18 F6 00 00 2B 00 07 2A 20 2A 20 2A    .Z.#....+..* * *
02C570:  20 50 61 72 61 6D 65 74 65 72 20 45 72 72 6F 72     Parameter Error
02C580:  20 2A 20 2A 20 2A 0A 0D 55 73 65 20 7C 48 45 4C     * * *..Use |HEL
02C590:  50 07 00 7C 44 55 4D 50 2C 6E 20 2D 20 77 68 65    P..|DUMP,n - whe
02C5A0:  72 65 20 6E 20 3D 20 61 20 6E 75 6D 62 65 72 20    re n = a number 
02C5B0:  66 72 6F 6D 20 31 20 74 6F 20 32 35 2E 0A 0D 7C    from 1 to 25...|
02C5C0:  50 2E 44 55 4D 50 2C 6E 6E 2C 6E 20 2D 20 77 68    P.DUMP,nn,n - wh
02C5D0:  65 72 65 20 6E 6E 20 3D 20 61 20 6E 75 6D 62 65    ere nn = a numbe
02C5E0:  72 20 66 72 6F 6D 20 33 39 39 20 74 6F 20 30 2E    r from 399 to 0.
02C5F0:  0A 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
02C600:  20 20 20 20 20 20 20 20 6E 20 3D 20 61 20 6E 75            n = a nu
02C610:  6D 62 65 72 20 66 72 6F 6D 20 31 20 74 6F 20 32    mber from 1 to 2
02C620:  35 2E 0A 0D 7C 42 2E 44 55 4D 50 2C 6E 20 2D 20    5...|B.DUMP,n - 
02C630:  77 68 65 72 65 20 6E 20 3D 20 61 20 6E 75 6D 62    where n = a numb
02C640:  65 72 20 66 72 6F 6D 20 31 20 74 6F 20 32 35 2E    er from 1 to 25.
02C650:  0A 0D 7C 42 50 2E 44 55 4D 50 2C 6E 6E 2C 6E 20    ..|BP.DUMP,nn,n 
02C660:  2D 20 77 68 65 72 65 20 6E 6E 20 3D 20 61 20 6E    - where nn = a n
02C670:  75 6D 62 65 72 20 66 72 6F 6D 20 33 39 39 20 74    umber from 399 t
02C680:  6F 20 30 2E 0A 0D 20 20 20 20 20 20 20 20 20 20    o 0...          
02C690:  20 20 20 20 20 20 20 20 20 20 20 20 20 6E 20 3D                 n =
02C6A0:  20 61 20 6E 75 6D 62 65 72 20 66 72 6F 6D 20 31     a number from 1
02C6B0:  20 74 6F 20 32 35 2E 0A 0D 7C 48 45 4C 50 20 2D     to 25...|HELP -
02C6C0:  20 64 69 73 70 6C 61 79 20 52 53 58 20 63 6F 6D     display RSX com
02C6D0:  6D 61 6E 64 73 2E 0A 0D 2A 2A 20 7C 42 2E 44 55    mands...** |B.DU
02C6E0:  4D 50 20 61 6E 64 20 7C 42 50 2E 44 55 4D 50 20    MP and |BP.DUMP 
02C6F0:  77 69 6C 6C 20 6E 6F 74 20 64 75 6D 70 20 74 68    will not dump th
02C700:  65 20 6C 61 73 74 20 6C 69 6E 65 20 6F 66 20 74    e last line of t
02C710:  68 65 20 73 63 72 65 65 6E 20 70 72 6F 70 65 72    he screen proper
02C720:  6C 79 20 2A 2A 0A 0D 0A 0D 3C 3C 20 50 52 45 53    ly **....<< PRES
02C730:  53 20 53 50 41 43 45 20 3E 3E 00 CC 88 C3 0A 85    S SPACE >>......
02C740:  C3 36 85 C3 6D 85 C3 94 85 C3 7D 86 44 55 4D D0    .6..m.....}.DUM.
02C750:  50 2E 44 55 4D D0 42 2E 44 55 4D D0 42 50 2E 44    P.DUM.B.DUM.BP.D
02C760:  55 4D D0 48 45 4C D0 00 FC A6 BB 88 00 00 00 00    UM.HEL..........
02C770:  00 00 00 00 00 1A 20 63 70 20 31 20 20 20 20 20    ...... cp 1     
02C780:  20 2A 20 2A 20 2A 0A 0D 55 73 65 20 7C 48 45 4C     * * *..Use |HEL
02C790:  50 07 00 7C 44 55 4D 50 2C 6E 20 2D 20 77 68 65    P..|DUMP,n - whe
02C7A0:  72 65 20 6E 20 3D 20 61 20 6E 75 6D 62 65 72 20    re n = a number 
02C7B0:  66 72 6F 6D 20 31 20 74 6F 20 32 35 2E 0A 0D 7C    from 1 to 25...|
02C7C0:  50 2E 44 55 4D 50 2C 6E 6E 2C 6E 20 2D 20 77 68    P.DUMP,nn,n - wh
02C7D0:  65 72 65 20 6E 6E 20 3D 20 61 20 6E 75 6D 62 65    ere nn = a numbe
02C7E0:  72 20 66 72 6F 6D 20 33 39 39 20 74 6F 20 30 2E    r from 399 to 0.
02C7F0:  0A 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
02C800:  20 20 20 20 20 20 20 20 6E 20 3D 20 61 20 6E 75            n = a nu
02C810:  6D 62 65 72 20 66 72 6F 6D 20 31 20 74 6F 20 32    mber from 1 to 2
02C820:  35 2E 0A 0D 7C 42 2E 44 55 4D 50 2C 6E 20 2D 20    5...|B.DUMP,n - 
02C830:  77 68 65 72 65 20 6E 20 3D 20 61 20 6E 75 6D 62    where n = a numb
02C840:  65 72 20 66 72 6F 6D 20 31 20 74 6F 20 32 35 2E    er from 1 to 25.
02C850:  0A 0D 7C 42 50 2E 44 55 4D 50 2C 6E 6E 2C 6E 20    ..|BP.DUMP,nn,n 
02C860:  2D 20 77 68 65 72 65 20 6E 6E 20 3D 20 61 20 6E    - where nn = a n
02C870:  75 6D 62 65 72 20 66 72 6F 6D 20 33 39 39 20 74    umber from 399 t
02C880:  6F 20 30 2E 0A 0D 20 20 20 20 20 20 20 20 20 20    o 0...          
02C890:  20 20 20 20 20 20 20 20 20 20 20 20 20 6E 20 3D                 n =
02C8A0:  20 61 20 6E 75 6D 62 65 72 20 66 72 6F 6D 20 31     a number from 1
02C8B0:  20 74 6F 20 32 35 2E 0A 0D 7C 48 45 4C 50 20 2D     to 25...|HELP -
02C8C0:  20 64 69 73 70 6C 61 79 20 52 53 58 20 63 6F 6D     display RSX com
02C8D0:  6D 61 6E 64 73 2E 0A 0D 2A 2A 20 7C 42 2E 44 55    mands...** |B.DU
02C8E0:  4D 50 20 61 6E 64 20 7C 42 50 2E 44 55 4D 50 20    MP and |BP.DUMP 
02C8F0:  77 69 6C 6C 20 6E 6F 74 20 64 75 6D 70 20 74 68    will not dump th
02C900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C9A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C9B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C9C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C9D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C9E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C9F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CA90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CAA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CAB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CAC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CAD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CAE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CAF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB00:  00 50 54 49 54 4C 45 20 20 42 41 53 00 00 00 00    .PTITLE  BAS....
02CB10:  00 00 00 00 00 70 01 00 D8 00 00 00 00 00 00 00    .....p..........
02CB20:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02CB30:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02CB40:  D8 00 00 09 05 70 72 65 73 73 20 61 6E 79 20 6B    .....press any k
02CB50:  65 79 2E 2E 2E 22 01 83 20 1C 03 BB 01 83 20 1C    ey...".. ..... .
02CB60:  18 BB 00 0A 00 32 00 83 20 1C A3 38 00 2E 00 3C    .....2.. .£8...<
02CB70:  00 9E 20 0D 00 00 E1 EF 0F 20 EC 20 19 0D 01 7C    .. ...... . ...|
02CB80:  1F 00 0A 00 AD 20 10 01 AA 20 1C A2 38 01 A8 22    ..... ... ..8.."
02CB90:  74 69 74 6C 65 2E 62 69 6E 22 2C 1C A3 38 00 1A    title.bin",.£8..
02CBA0:  00 14 00 A8 22 64 75 6D 70 2E 62 69 6E 22 2C 1C    ...."dump.bin",.
02CBB0:  00 85 01 83 20 1C 00 85 00 1D 00 1E 00 A2 20 0F    .... ......... .
02CBC0:  2C 19 1A 01 A2 20 0E 2C 0F 01 82 20 0F 01 BA 20    ,.... .,... ... 
02CBD0:  0E 01 BB 20 0F 00 48 00 28 00 A9 20 19 14 2C 19    ... ..H.(.. ..,.
02CBE0:  0A 01 BF 22 07 50 6C 65 61 73 65 20 74 75 72 6E    ...".Please turn
02CBF0:  20 6F 6E 20 70 72 69 6E 74 65 72 20 61 6E 64 20     on printer and 
02CC00:  70 72 65 73 73 20 61 6E 79 20 6B 65 79 2E 2E 2E    press any key...
02CC10:  22 01 83 20 1C 03 BB 01 83 20 1C 18 BB 00 0A 00    ".. ..... ......
02CC20:  32 00 83 20 1C A3 38 00 2E 00 3C 00 9E 20 0D 00    2.. .£8...<.. ..
02CC30:  00 E1 EF 0F 20 EC 20 19 0D 01 7C 00 42 2E 44 55    .... . ...|.B.DU
02CC40:  4D D0 2C 11 01 B0 01 BF 23 16 2C FF 03 28 19 0C    M.,.....#.,..(..
02CC50:  29 01 83 20 0E 00 00 00 1A FF FF F0 1A 00 40 00    ).. ..........@.
02CC60:  40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    @...............
02CC70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02CC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD00:  9F 20 1E 16 03 20 01 97 20 CA 22 61 70 65 6E 36    . ... .. ."apen6
02CD10:  2E 62 61 73 00 18 00 0E 06 A8 22 73 65 74 36 2D    .bas......"set6-
02CD20:  31 22 2C 1C 00 40 01 9F 20 1E 82 05 00 18 00 18    1",..@.. .......
02CD30:  06 A8 22 73 65 74 36 2D 32 22 2C 1C 00 40 01 9F    .."set6-2",..@..
02CD40:  20 1E 82 05 00 23 00 22 06 A8 22 73 65 74 62 36     ....#.".."setb6
02CD50:  2D 32 22 2C 1C 00 40 01 9F 20 1E 82 05 01 AD 20    -2",..@.. ..... 
02CD60:  10 01 9F 20 1E 78 05 00 1C 00 2C 06 03 00 00 66    ... .x....,....f
02CD70:  69 6C E5 EF 22 61 70 65 6E 36 2D 62 22 01 9F 20    il.."apen6-b".. 
02CD80:  1E 16 03 00 22 00 36 06 A8 22 62 6C 6F 63 6B 73    ....".6.."blocks
02CD90:  22 2C 1C 00 40 01 9F 20 1E 82 05 01 AD 20 10 01    ",..@.. ..... ..
02CDA0:  9F 20 1E 78 05 00 1C 00 40 06 03 00 00 66 69 6C    . .x....@....fil
02CDB0:  E5 EF 22 61 70 65 6E 36 2D 63 22 01 9F 20 1E 16    .."apen6-c".. ..
02CDC0:  03 00 17 00 4A 06 A8 22 6C 69 6E 65 73 22 2C 1C    ....J.."lines",.
02CDD0:  00 40 01 9F 20 1E 82 05 00 1A 00 54 06 A8 22 36    .@.. ......T.."6
02CDE0:  2D 35 63 68 61 72 73 22 2C 1C 00 40 01 9F 20 1E    -5chars",..@.. .
02CDF0:  82 05 00 1A 00 5E 06 A8 22 36 2D 36 63 68 61 2D    .....^.."6-6cha-
02CE00:  74 22 2C 1C 00 40 01 9F 20 1E 82 05 00 1A 00 68    t",..@.. ......h
02CE10:  06 A8 22 36 2D 36 63 68 61 2D 62 22 2C 1C 00 40    .."6-6cha-b",..@
02CE20:  01 9F 20 1E 82 05 00 19 00 72 06 A8 22 36 2D 37    .. ......r.."6-7
02CE30:  63 68 61 72 22 2C 1C 00 40 01 9F 20 1E 82 05 00    char",..@.. ....
02CE40:  19 00 7C 06 A8 22 36 2D 38 63 68 61 72 22 2C 1C    ..|.."6-8char",.
02CE50:  00 40 01 9F 20 1E 82 05 00 19 00 86 06 A8 22 36    .@.. ........."6
02CE60:  2D 39 63 68 61 72 22 2C 1C 00 40 01 9F 20 1E 82    -9char",..@.. ..
02CE70:  05 00 14 00 90 06 AD 20 10 01 9F 20 1E 78 05 01    ....... ... .x..
02CE80:  A0 20 1E 3E 03 00 12 00 9A 06 C7 20 1E A4 06 01    . .>....... ....
02CE90:  9F 20 1E CE 04 01 C9 00 20 00 A4 06 8C 20 22 61    . ...... .... "a
02CEA0:  70 65 6E 2D 31 31 2E 70 31 22 2C 22 61 70 65 6E    pen-11.p1","apen
02CEB0:  2D 31 31 2E 70 32 22 00 4B 00 AE 06 03 00 00 66    -11.p2".K......f
02CEC0:  69 6C E5 EF 22 61 70 65 6E 2D 38 22 01 9F 20 1E    il.."apen-8".. .
02CED0:  02 03 01 9F 20 1E 70 03 01 9F 20 1E 0C 03 01 A1    .... .p... .....
02CEE0:  20 0D 00 00 E6 EF 0E 20 EB 20 9F 20 1E 16 03 20     ...... . . ... 
02CEF0:  01 97 20 CA 22 61 70 70 65 6E 64 2D 38 2E 62 61    .. ."append-8.ba
02CF00:  00 54 49 54 4C 45 20 20 20 42 49 4E 00 00 00 00    .TITLE   BIN....
02CF10:  00 00 02 00 00 A3 38 00 5C 07 00 00 00 00 00 00    .....£8.\.......
02CF20:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02CF30:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02CF40:  5C 07 00 5E 04 00 00 00 00 00 00 00 00 00 00 00    \..^............
02CF50:  00 00 00 00 00 00 FF FF FF FF FF FF FF FF FF FF    ................
02CF60:  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
02CF70:  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
02CF80:  11 DF 38 21 02 C0 06 18 C5 E5 06 4C 1A 77 13 23    ..8!.......L.w.#
02CF90:  10 FA E1 01 00 08 09 30 06 01 B0 3F A7 ED 42 C1    .......0...?..B.
02CFA0:  10 E6 C9 00 00 00 00 00 00 00 00 01 00 0D 1A 01    ................
02CFB0:  05 0E 08 04 03 06 07 10 0F 18 12 09 00 00 00 00    ................
02CFC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02CFD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02CFE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02CFF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D000:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D010:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D020:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D030:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D040:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D050:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D0A0:  00 07 FF E3 E0 00 00 00 00 03 00 00 00 00 00 06    ................
02D0B0:  00 00 00 00 00 07 C0 00 00 10 03 E0 00 04 00 06    ................
02D0C0:  01 F0 00 F8 00 01 00 01 80 7C 00 18 1F E0 1F E0    .........|......
02D0D0:  00 0F FF 83 80 00 00 00 00 00 00 00 00 00 00 00    ................
02D0E0:  00 00 FC 00 00 03 80 03 E0 00 00 00 00 00 7E 03    ..............~.
02D0F0:  E0 00 00 00 00 03 00 00 00 00 00 0E 00 00 00 00    ................
02D100:  00 07 C0 00 00 30 0F 18 00 0C 00 0C 07 8C 03 C6    .....0..........
02D110:  00 03 00 03 01 E3 00 F8 20 F0 38 10 00 0F E0 07    ........ .8.....
02D120:  C0 00 00 00 00 00 00 00 00 00 00 00 00 03 E3 00    ................
02D130:  00 07 C0 03 E0 00 00 00 00 00 7E 03 E0 00 00 00    ..........~.....
02D140:  00 07 80 00 00 00 00 1E 00 00 00 00 00 07 C0 00    ................
02D150:  00 70 1F 04 00 1C 00 18 0F 82 07 C1 00 07 00 06    .p..............
02D160:  03 E0 87 F8 40 F8 7C 08 00 0F E0 03 80 00 00 00    ....@.|.........
02D170:  00 00 00 00 00 00 00 00 00 07 E0 80 00 03 80 03    ................
02D180:  E0 00 00 00 00 00 7E 03 E7 C0 3E 00 00 07 80 77    ......~...>....w
02D190:  BC 07 F0 3E 03 E7 01 F8 01 F7 C0 00 00 F0 3F 00    ...>..........?.
02D1A0:  00 3C 00 18 1F 80 0F C0 00 0F 00 06 07 E0 01 F8    .<..............
02D1B0:  80 F8 7F 08 00 0F E0 00 07 CE 3B DE 1E 38 80 FC    ..........;..8..
02D1C0:  07 CE 03 E0 00 07 E0 47 C7 C0 00 FB E0 3E 00 00    .......G.....>..
02D1D0:  00 00 7E 03 EF E0 FF 80 00 0F C0 7B DE 0E 18 FF    ..~........{....
02D1E0:  C3 EB 06 1E 07 CF C0 00 01 F0 3F 00 00 7C 00 30    ..........?..|.0
02D1F0:  1F 80 0F C0 00 1F 00 0C 07 E0 01 F8 81 F8 7F 88    ................
02D200:  00 0F E0 00 07 D6 3D EF 1E 38 83 0F 07 D6 0F F8    ......=..8......
02D210:  00 0F E0 07 C7 C0 03 E7 E0 FF 80 00 00 00 7E 03    ..............~.
02D220:  F3 E1 E3 80 00 0F C0 73 9E 1F 00 3E 03 F0 08 1F    .......s...>....
02D230:  07 87 C0 00 03 F0 7F 00 00 FC 00 60 3F 80 1F C0    ...........`?...
02D240:  00 3F 00 18 0F E0 01 F8 81 F8 7F D0 00 0F FF C7    .?..............
02D250:  C7 E0 39 CF 1E 38 84 0F 87 E0 1E 38 00 0F E0 07    ..9..8.....8....
02D260:  C7 C7 C3 C3 E1 E3 80 00 00 00 7E 03 E3 E1 E3 C0    ..........~.....
02D270:  00 0F E0 73 9E 1F 80 3E 03 F0 00 1F 0F 87 C0 00    ...s...>........
02D280:  07 F0 7F 78 01 FC 00 60 3F BC 1F DE 00 7F 00 18    ...x...`?.......
02D290:  0F EF 01 F8 43 F0 3F E0 00 0F E0 07 C7 E0 39 CF    ....C.?.......9.
02D2A0:  1F 7D 80 0F 87 E0 1E 3C 00 0F E0 07 C7 C7 C7 C3    .}.....<........
02D2B0:  E1 E3 C0 00 00 00 7E 03 E3 E3 E3 C0 00 13 E0 73    ......~........s
02D2C0:  9E 1F C0 3E 03 E0 03 DF 0F 87 C0 00 0F F0 7F 04    ...>............
02D2D0:  03 FC 00 C0 3F 82 1F C1 00 FF 00 30 0F E0 81 F8    ....?......0....
02D2E0:  03 F0 1F F0 00 0F E0 07 C7 C0 39 CF 0F 7D 01 EF    ..........9..}..
02D2F0:  87 C0 3E 3C 00 0F EF C7 C7 C7 C7 C3 E3 E3 C0 00    ..><............
02D300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
02D310:  26 00 00 00 02 09 50 E5 26 00 C1 02 00 00 00 02    &.....P.&.......
02D320:  26 00 C2 02 00 00 00 02 26 00 C3 02 00 00 00 02    &.......&.......
02D330:  26 00 C4 02 00 00 00 02 26 00 C5 02 00 00 00 02    &.......&.......
02D340:  26 00 C6 02 00 00 00 02 26 00 C7 02 00 00 00 02    &.......&.......
02D350:  26 00 C8 02 00 00 00 02 26 00 C9 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 00 7E 03 E3 E3 E3 C0 00 13 F0 73 9E 0F E0 3E    ..~........s...>
02D410:  03 E0 0F BF 0F 87 C0 00 1B F0 7F 02 06 FC 01 80    ................
02D420:  3F 81 1F C0 81 BF 00 60 0F E0 41 F8 07 E0 3F F8    ?......`..A...?.
02D430:  00 0F E0 07 C7 C0 39 CF 0F 7D 07 DF 87 C0 3E 3C    ......9..}....><
02D440:  00 0F E0 47 C7 C7 C7 C3 E3 E3 C0 00 00 00 7E 03    ...G..........~.
02D450:  E3 E3 FF C0 00 21 F0 73 9E 07 F0 3E 03 E0 1F 1F    .....!.s...>....
02D460:  0F 87 C0 00 33 F0 7F 02 0C FC 01 80 3F 81 1F C0    ....3.......?...
02D470:  83 3F 00 60 0F E0 41 F8 0F E0 47 FC 00 0F E0 07    .?.`..A...G.....
02D480:  C7 C0 39 CF 0F 9F 0F 8F 87 C0 3F FC 00 0F E0 47    ..9.......?....G
02D490:  C7 C7 C7 C3 E3 FF C0 00 00 00 7E 03 E3 E3 E0 00    ..........~.....
02D4A0:  00 21 F8 73 9E 03 F8 3E 03 E0 1F 1F 0F 87 C0 00    .!.s...>........
02D4B0:  63 F0 7F 02 18 FC 03 00 3F 81 1F C0 86 3F 00 C0    c.......?....?..
02D4C0:  0F E0 41 F8 0F C0 81 FC 00 0F E0 07 C7 C0 39 CF    ..A...........9.
02D4D0:  0F 9F 0F 8F 87 C0 3E 00 00 0F E0 47 C7 C7 C7 C3    ......>....G....
02D4E0:  E3 E0 00 00 00 00 7E 03 E3 E1 E0 00 00 40 F8 73    ......~......@.s
02D4F0:  9E 01 F8 3E 23 E0 1F 1F 0F 87 C0 00 FF FC 3F 02    ...>#.........?.
02D500:  3F FF 06 00 1F 81 0F C0 8F FF C1 80 07 E0 41 F8    ?.............A.
02D510:  1F C0 80 FC 00 0F E0 07 C7 C0 39 CF 07 9E 0F 8F    ..........9.....
02D520:  87 C0 1E 00 00 07 E0 87 C7 C7 C7 C3 E1 E0 00 00    ................
02D530:  00 00 7E 03 E3 E1 E0 40 00 7F FC 73 9E 20 F8 3E    ..~....@...s. .>
02D540:  23 E0 1F 1F 07 87 C0 00 03 F0 3F 04 00 FC 06 00    #.........?.....
02D550:  1F 82 0F C1 00 3F 01 80 07 E0 81 F8 3F 80 80 7C    .....?......?..|
02D560:  00 0F E0 07 C7 C0 39 CF 07 0E 0F 8F 87 C0 1E 04    ......9.........
02D570:  00 07 E0 87 CF C7 C3 C3 E1 E0 40 00 00 00 7E 03    ..........@...~.
02D580:  E3 E0 F0 80 00 80 7C 73 9E 10 70 1E 43 E0 0F BF    ......|s..p.C...
02D590:  07 CF C0 00 03 F0 1F 18 00 FC 0C 00 0F 8C 07 C6    ................
02D5A0:  00 3F 03 00 03 E3 01 F8 7F 00 40 38 00 0F E0 07    .?........@8....
02D5B0:  C7 C0 39 CF 07 0E 07 DF 87 C0 0F 08 00 03 E3 07    ..9.............
02D5C0:  F7 C7 C3 E7 E0 F0 80 00 00 00 7E 03 E3 E0 3F 00    ..........~...?.
02D5D0:  00 80 7C 73 9E 0F E0 0F 83 E0 03 DF 81 F7 C0 00    ..|s............
02D5E0:  03 F0 07 E0 00 FC 18 00 03 F0 01 F8 00 3F 06 00    .............?..
02D5F0:  00 FC 01 F8 FF F8 3F E0 00 0F E0 07 C7 C0 39 CF    ......?.......9.
02D600:  07 0E 01 EF C7 C0 03 F0 00 00 FC 03 E7 C7 C0 FB    ................
02D610:  E0 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00    .?..............
02D620:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D630:  00 00 18 00 00 00 00 00 00 00 06 00 00 00 00 00    ................
02D640:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D650:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D660:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D670:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D680:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D690:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D6A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D6B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D6C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D6D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D6E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D6F0:  00 00 00 00 00 00 00 00 00 1F FF FF FF FF FF FF    ................
02D700:  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
02D710:  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
02D720:  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
02D730:  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
02D740:  FF FF FE 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D750:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D760:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D770:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D780:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D790:  00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
02D7A0:  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
02D7B0:  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
02D7C0:  FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF    ................
02D7D0:  FF FF FF FF FF FF FF FF FF FF FF F0 1A 00 40 00    ..............@.
02D7E0:  40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    @...............
02D7F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D800:  00 53 54 41 52 54 20 20 20 42 41 53 00 00 00 00    .START   BAS....
02D810:  00 00 00 00 00 70 01 00 72 1D 00 00 00 00 00 00    .....p..r.......
02D820:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D830:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02D840:  72 1D 00 53 04 C7 20 1E 3A 07 01 9F 20 1E BA 04    r..S.. .:... ...
02D850:  01 C9 00 24 00 3A 07 8C 20 22 69 6E 64 65 78 2D    ...$.:.. "index-
02D860:  31 22 2C 22 69 6E 64 65 78 2D 32 22 2C 22 69 6E    1","index-2","in
02D870:  64 65 78 2D 33 22 00 12 00 44 07 C7 20 1E 4E 07    dex-3"...D.. .N.
02D880:  2F 00 0A 00 D8 23 0F 2C 10 2C 19 4F 2C 19 19 2C    /....#.,.,.O,..,
02D890:  19 19 01 D8 23 0E 2C 0F 2C 19 50 2C 13 2C 19 17    ....#.,.,.P,.,..
02D8A0:  01 D8 23 10 2C 0F 2C 19 50 2C 13 2C 19 19 00 27    ..#.,.,.P,.,...'
02D8B0:  00 14 00 C7 20 1E 1E 00 01 9F 20 1E 9E 02 01 A9    .... ..... .....
02D8C0:  20 19 22 2C 11 01 BF 22 4D 20 45 20 4E 20 55 20     .",..."M E N U 
02D8D0:  20 28 31 29 22 00 88 00 1E 00 8C 20 31 29 20 50     (1)"...... 1) P
02D8E0:  72 65 66 61 63 65 2C 32 29 20 43 6F 6E 74 65 6E    reface,2) Conten
02D8F0:  74 73 2C 33 29 20 43 68 61 70 74 65 72 20 4F 6E    ts,3) Chapter On
02D900:  65 2C 34 29 20 43 68 61 70 74 65 72 20 54 77 6F    e,4) Chapter Two
02D910:  2C 35 29 20 43 68 61 70 74 65 72 20 54 68 72 65    ,5) Chapter Thre
02D920:  65 2C 36 29 20 43 68 61 70 74 65 72 20 46 6F 75    e,6) Chapter Fou
02D930:  72 2C 37 29 20 43 68 61 70 74 65 72 20 46 69 76    r,7) Chapter Fiv
02D940:  65 2C 38 29 20 43 68 61 70 74 65 72 20 53 69 78    e,8) Chapter Six
02D950:  2C 39 29 20 4E 65 78 74 20 4D 65 6E 75 00 2E 00    ,9) Next Menu...
02D960:  28 00 A9 20 19 19 2C 19 11 01 BF 22 5B 49 5D 20    (.. ..,...."[I] 
02D970:  49 6E 74 72 6F 64 75 63 74 69 6F 6E 20 26 20 49    Introduction & I
02D980:  6E 73 74 72 75 63 74 69 6F 6E 73 00 0A 00 32 00    nstructions...2.
02D990:  9F 20 1E 94 02 00 0A 00 3C 00 9F 20 1E A8 02 00    . ......<.. ....
02D9A0:  15 00 46 00 A1 20 FF 0A 28 19 23 29 EF 0E 20 EB    ..F.. ..(.#).. .
02D9B0:  20 1E 64 00 00 1C 00 50 00 A1 20 0D 00 00 F3 F1     .d....P.. .....
02D9C0:  0F 20 FC 20 0D 00 00 F3 EE 17 20 EB 20 1E 3C 00    . . ...... . .<.
02D9D0:  00 31 00 5A 00 B2 20 0D 00 00 F3 20 A0 20 1E 6E    .1.Z.. .... . .n
02D9E0:  00 2C 1E 78 00 2C 1E 82 00 2C 1E 8C 00 2C 1E 96    .,.x.,...,...,..
02D9F0:  00 2C 1E A0 00 2C 1E AA 00 2C 1E B4 00 2C 1E BE    .,...,...,...,..
02DA00:  00 00 33 00 64 00 9F 20 1E 02 03 01 03 00 00 66    ..3.d.. .......f
02DA10:  69 6C E5 EF 22 69 6E 64 6F 63 2E 22 01 9F 20 1E    il.."indoc.".. .
02DA20:  98 03 01 9F 20 1E 0C 03 01 9F 20 1E 34 03 01 A0    .... ..... .4...
02DA30:  20 1E 66 03 00 35 00 6E 00 9F 20 1E C6 02 01 03     .f..5.n.. .....
02DA40:  00 00 66 69 6C E5 EF 22 70 72 65 66 61 63 65 2E    ..fil.."preface.
02DA50:  22 01 9F 20 1E 98 03 01 9F 20 1E 0C 03 01 9F 20    ".. ..... ..... 
02DA60:  1E 34 03 01 A0 20 1E 66 03 00 36 00 78 00 9F 20    .4... .f..6.x.. 
02DA70:  1E C6 02 01 03 00 00 66 69 6C E5 EF 22 63 6F 6E    .......fil.."con
02DA80:  74 65 6E 74 73 2E 22 01 9F 20 1E 98 03 01 9F 20    tents.".. ..... 
02DA90:  1E 0C 03 01 9F 20 1E 34 03 01 A0 20 1E 66 03 00    ..... .4... .f..
02DAA0:  22 00 82 00 9F 20 1E C6 02 01 9F 20 1E 98 03 01    ".... ..... ....
02DAB0:  9F 20 1E 0C 03 01 9F 20 1E C0 03 01 A0 20 1E 66    . ..... ..... .f
02DAC0:  03 00 22 00 8C 00 9F 20 1E C6 02 01 9F 20 1E 98    ..".... ..... ..
02DAD0:  03 01 9F 20 1E 0C 03 01 9F 20 1E D4 03 01 A0 20    ... ..... ..... 
02DAE0:  1E 66 03 00 34 00 96 00 9F 20 1E C6 02 01 9F 20    .f..4.... ..... 
02DAF0:  1E 98 03 01 9F 20 1E 0C 03 01 03 00 00 66 69 6C    ..... .......fil
02DB00:  E5 EF 22 63 68 61 70 2D 33 2E 22 01 9F 20 1E 34    .."chap-3.".. .4
02DB10:  03 01 A0 20 1E 66 03 00 22 00 A0 00 9F 20 1E C6    ... .f..".... ..
02DB20:  02 01 9F 20 1E 98 03 01 9F 20 1E 0C 03 01 9F 20    ... ..... ..... 
02DB30:  1E E8 03 01 A0 20 1E 66 03 00 34 00 AA 00 9F 20    ..... .f..4.... 
02DB40:  1E C6 02 01 9F 20 1E 98 03 01 9F 20 1E 0C 03 01    ..... ..... ....
02DB50:  03 00 00 66 69 6C E5 EF 22 63 68 61 70 2D 35 2E    ...fil.."chap-5.
02DB60:  22 01 9F 20 1E 34 03 01 A0 20 1E 66 03 00 34 00    ".. .4... .f..4.
02DB70:  B4 00 9F 20 1E C6 02 01 9F 20 1E 98 03 01 9F 20    ... ..... ..... 
02DB80:  1E 0C 03 01 03 00 00 66 69 6C E5 EF 22 63 68 61    .......fil.."cha
02DB90:  70 2D 36 2E 22 01 9F 20 1E 34 03 01 A0 20 1E 66    p-6.".. .4... .f
02DBA0:  03 00 27 00 BE 00 C7 20 1E C8 00 01 9F 20 1E 9E    ..'.... ..... ..
02DBB0:  02 01 A9 20 19 22 2C 11 01 BF 22 4D 20 45 20 4E    ... .",..."M E N
02DBC0:  20 55 20 20 28 32 29 22 00 9D 00 C8 00 8C 20 31     U  (2)"...... 1
02DBD0:  29 20 43 68 61 70 74 65 72 20 53 65 76 65 6E 2C    ) Chapter Seven,
02DBE0:  32 29 20 43 68 61 70 74 65 72 20 45 69 67 68 74    2) Chapter Eight
02DBF0:  2C 33 29 20 43 68 61 70 74 65 72 20 4E 69 6E 65    ,3) Chapter Nine
02DC00:  2C 34 29 20 43 68 61 70 74 65 72 20 54 65 6E 2C    ,4) Chapter Ten,
02DC10:  35 29 20 43 68 61 70 74 65 72 20 45 6C 65 76 65    5) Chapter Eleve
02DC20:  6E 2C 36 29 20 43 68 61 70 74 65 72 20 54 77 65    n,6) Chapter Twe
02DC30:  6C 76 65 2C 37 29 20 43 68 61 70 74 65 72 20 54    lve,7) Chapter T
02DC40:  68 69 72 74 65 65 6E 2C 38 29 20 50 72 65 76 69    hirteen,8) Previ
02DC50:  6F 75 73 20 4D 65 6E 75 2C 39 29 20 4E 65 78 74    ous Menu,9) Next
02DC60:  20 4D 65 6E 75 00 0A 00 D2 00 9F 20 1E 94 02 00     Menu...... ....
02DC70:  0A 00 DC 00 9F 20 1E A8 02 00 1C 00 E6 00 A1 20    ..... ......... 
02DC80:  0D 00 00 F3 F1 0F 20 FC 20 0D 00 00 F3 EE 17 20    ...... . ...... 
02DC90:  EB 20 1E DC 00 00 31 00 F0 00 B2 20 0D 00 00 F3    . ....1.... ....
02DCA0:  20 A0 20 1E FA 00 2C 1E 04 01 2C 1E 0E 01 2C 1E     . ...,...,...,.
02DCB0:  18 01 2C 1E 22 01 2C 1E 2C 01 2C 1E 36 01 2C 1E    ..,.".,.,.,.6.,.
02DCC0:  14 00 2C 1E 40 01 00 34 00 FA 00 9F 20 1E C6 02    ..,.@..4.... ...
02DCD0:  01 9F 20 1E 98 03 01 9F 20 1E 0C 03 01 03 00 00    .. ..... .......
02DCE0:  66 69 6C E5 EF 22 63 68 61 70 2D 37 2E 22 01 9F    fil.."chap-7."..
02DCF0:  20 1E 34 03 01 A0 20 1E 66 03 00 22 00 04 01 9F     .4... .f.."....
02DD00:  20 1E C6 02 01 9F 20 1E 98 03 01 9F 20 1E 0C 03     ..... ..... ...
02DD10:  01 9F 20 1E FC 03 01 A0 20 1E 66 03 00 22 00 0E    .. ..... .f.."..
02DD20:  01 9F 20 1E D0 02 01 9F 20 1E 98 03 01 9F 20 1E    .. ..... ..... .
02DD30:  0C 03 01 9F 20 1E 10 04 01 A0 20 1E 66 03 00 22    .... ..... .f.."
02DD40:  00 18 01 9F 20 1E D0 02 01 9F 20 1E 98 03 01 9F    .... ..... .....
02DD50:  20 1E 0C 03 01 9F 20 1E 24 04 01 A0 20 1E 66 03     ..... .$... .f.
02DD60:  00 35 00 22 01 9F 20 1E D0 02 01 9F 20 1E 98 03    .5.".. ..... ...
02DD70:  01 9F 20 1E 0C 03 01 03 00 00 66 69 6C E5 EF 22    .. .......fil.."
02DD80:  63 68 61 70 2D 31 31 2E 22 01 9F 20 1E 34 03 01    chap-11.".. .4..
02DD90:  A0 20 1E 66 03 00 35 00 2C 01 9F 20 1E D0 02 01    . .f..5.,.. ....
02DDA0:  9F 20 1E 98 03 01 9F 20 1E 0C 03 01 03 00 00 66    . ..... .......f
02DDB0:  69 6C E5 EF 22 63 68 61 70 2D 31 32 2E 22 01 9F    il.."chap-12."..
02DDC0:  20 1E 34 03 01 A0 20 1E 66 03 00 35 00 36 01 9F     .4... .f..5.6..
02DDD0:  20 1E D0 02 01 9F 20 1E 98 03 01 9F 20 1E 0C 03     ..... ..... ...
02DDE0:  01 03 00 00 66 69 6C E5 EF 22 63 68 61 70 2D 31    ....fil.."chap-1
02DDF0:  33 2E 22 01 9F 20 1E 34 03 01 A0 20 1E 66 03 00    3.".. .4... .f..
02DE00:  27 00 40 01 C7 20 1E B8 01 01 9F 20 1E 9E 02 01    '.@.. ..... ....
02DE10:  A9 20 19 22 2C 11 01 BF 22 4D 20 45 20 4E 20 55    . .",..."M E N U
02DE20:  20 20 28 33 29 22 00 0A 00 4A 01 9F 20 1E 94 02      (3)"...J.. ...
02DE30:  00 0A 00 54 01 9F 20 1E A8 02 00 1C 00 5E 01 A1    ...T.. ......^..
02DE40:  20 0D 00 00 F3 F1 0F 20 FC 20 0D 00 00 F3 EE 17     ...... . ......
02DE50:  20 EB 20 1E 54 01 00 31 00 68 01 B2 20 0D 00 00     . .T..1.h.. ...
02DE60:  F3 20 A0 20 1E 72 01 2C 1E 7C 01 2C 1E 86 01 2C    . . .r.,.|.,...,
02DE70:  1E 90 01 2C 1E 9A 01 2C 1E A4 01 2C 1E AE 01 2C    ...,...,...,...,
02DE80:  1E BE 00 2C 1E C2 01 00 22 00 72 01 9F 20 1E D0    ...,....".r.. ..
02DE90:  02 01 9F 20 1E 98 03 01 9F 20 1E 0C 03 01 9F 20    ... ..... ..... 
02DEA0:  1E 38 04 01 A0 20 1E 66 03 00 22 00 7C 01 9F 20    .8... .f..".|.. 
02DEB0:  1E D0 02 01 9F 20 1E 98 03 01 9F 20 1E 0C 03 01    ..... ..... ....
02DEC0:  9F 20 1E 4C 04 01 A0 20 1E 66 03 00 22 00 86 01    . .L... .f.."...
02DED0:  9F 20 1E E4 02 01 9F 20 1E 98 03 01 9F 20 1E 0C    . ..... ..... ..
02DEE0:  03 01 9F 20 1E 88 04 01 A0 20 1E 66 03 00 35 00    ... ..... .f..5.
02DEF0:  90 01 9F 20 1E E4 02 01 9F 20 1E 98 03 01 9F 20    ... ..... ..... 
02DF00:  1E 0C 03 01 03 00 00 66 69 6C E5 EF 22 63 68 61    .......fil.."cha
02DF10:  70 2D 31 37 2E 22 01 9F 20 1E 34 03 01 A0 20 1E    p-17.".. .4... .
02DF20:  66 03 00 22 00 9A 01 9F 20 1E EE 02 01 9F 20 1E    f..".... ..... .
02DF30:  98 03 01 9F 20 1E 0C 03 01 9F 20 1E 9C 04 01 A0    .... ..... .....
02DF40:  20 1E 66 03 00 35 00 A4 01 9F 20 1E EE 02 01 9F     .f..5.... .....
02DF50:  20 1E 98 03 01 9F 20 1E 0C 03 01 03 00 00 66 69     ..... .......fi
02DF60:  6C E5 EF 22 63 68 61 70 2D 31 39 2E 22 01 9F 20    l.."chap-19.".. 
02DF70:  1E 34 03 01 A0 20 1E 66 03 00 35 00 AE 01 9F 20    .4... .f..5.... 
02DF80:  1E EE 02 01 9F 20 1E 98 03 01 9F 20 1E 0C 03 01    ..... ..... ....
02DF90:  03 00 00 66 69 6C E5 EF 22 63 68 61 70 2D 32 30    ...fil.."chap-20
02DFA0:  2E 22 01 9F 20 1E 34 03 01 A0 20 1E 66 03 00 AD    .".. .4... .f...
02DFB0:  00 B8 01 8C 20 31 29 20 43 68 61 70 74 65 72 20    .... 1) Chapter 
02DFC0:  46 6F 75 72 74 65 65 6E 2C 32 29 20 43 68 61 70    Fourteen,2) Chap
02DFD0:  74 65 72 20 46 69 66 74 65 65 6E 2C 33 29 20 43    ter Fifteen,3) C
02DFE0:  68 61 70 74 65 72 20 53 69 78 74 65 65 6E 2C 34    hapter Sixteen,4
02DFF0:  29 20 43 68 61 70 74 65 72 20 53 65 76 65 6E 74    ) Chapter Sevent
02E000:  65 65 6E 2C 35 29 20 43 68 61 70 74 65 72 20 45    een,5) Chapter E
02E010:  69 67 68 74 65 65 6E 2C 36 29 20 43 68 61 70 74    ighteen,6) Chapt
02E020:  65 72 20 4E 69 6E 65 74 65 65 6E 2C 37 29 20 43    er Nineteen,7) C
02E030:  68 61 70 74 65 72 20 54 77 65 6E 74 79 2C 38 29    hapter Twenty,8)
02E040:  20 50 72 65 76 69 6F 75 73 20 4D 65 6E 75 2C 39     Previous Menu,9
02E050:  29 20 4E 65 78 74 20 4D 65 6E 75 00 27 00 C2 01    ) Next Menu.'...
02E060:  C7 20 1E 12 02 01 9F 20 1E 9E 02 01 A9 20 19 22    . ..... ..... ."
02E070:  2C 11 01 BF 22 4D 20 45 20 4E 20 55 20 20 28 34    ,..."M E N U  (4
02E080:  29 22 00 0A 00 CC 01 9F 20 1E 94 02 00 0A 00 D6    )"...... .......
02E090:  01 9F 20 1E A8 02 00 1C 00 E0 01 A1 20 0D 00 00    .. ......... ...
02E0A0:  F3 F1 0F 20 FC 20 0D 00 00 F3 EE 17 20 EB 20 1E    ... . ...... . .
02E0B0:  D6 01 00 31 00 EA 01 B2 20 0D 00 00 F3 20 A0 20    ...1.... .... . 
02E0C0:  1E 6E 05 2C 1E C4 04 2C 1E B4 05 2C 1E F4 01 2C    .n.,...,...,...,
02E0D0:  1E FE 01 2C 1E E6 05 2C 1E 08 02 2C 1E 40 01 2C    ...,...,...,.@.,
02E0E0:  1E 1C 02 00 30 00 F4 01 9F 20 1E EE 02 01 03 00    ....0.... ......
02E0F0:  00 66 69 6C E5 EF 22 61 70 34 22 01 9F 20 1E 98    .fil.."ap4".. ..
02E100:  03 01 9F 20 1E 0C 03 01 9F 20 1E 34 03 01 A0 20    ... ..... .4... 
02E110:  1E 66 03 00 33 00 FE 01 9F 20 1E EE 02 01 03 00    .f..3.... ......
02E120:  00 66 69 6C E5 EF 22 61 70 65 6E 2D 35 22 01 9F    .fil.."apen-5"..
02E130:  20 1E 98 03 01 9F 20 1E 0C 03 01 9F 20 1E 34 03     ..... ..... .4.
02E140:  01 A0 20 1E 66 03 00 33 00 08 02 9F 20 1E EE 02    .. .f..3.... ...
02E150:  01 03 00 00 66 69 6C E5 EF 22 61 70 65 6E 2D 37    ....fil.."apen-7
02E160:  22 01 9F 20 1E 98 03 01 9F 20 1E 0C 03 01 9F 20    ".. ..... ..... 
02E170:  1E 34 03 01 A0 20 1E 66 03 00 9A 00 12 02 8C 20    .4... .f....... 
02E180:  31 29 20 41 70 70 65 6E 64 69 78 20 4F 6E 65 2C    1) Appendix One,
02E190:  32 29 20 41 70 70 65 6E 64 69 78 20 54 77 6F 2C    2) Appendix Two,
02E1A0:  33 29 20 41 70 70 65 6E 64 69 78 20 54 68 72 65    3) Appendix Thre
02E1B0:  65 2C 34 29 20 41 70 70 65 6E 64 69 78 20 46 6F    e,4) Appendix Fo
02E1C0:  75 72 2C 35 29 20 41 70 70 65 6E 64 69 78 20 46    ur,5) Appendix F
02E1D0:  69 76 65 2C 36 29 20 41 70 70 65 6E 64 69 78 20    ive,6) Appendix 
02E1E0:  53 69 78 2C 37 29 20 41 70 70 65 6E 64 69 78 20    Six,7) Appendix 
02E1F0:  53 65 76 65 6E 2C 38 29 20 50 72 65 76 69 6F 75    Seven,8) Previou
02E200:  73 20 4D 65 6E 75 2C 39 29 20 4E 65 78 74 20 4D    s Menu,9) Next M
02E210:  65 6E 75 00 27 00 1C 02 C7 20 1E 8A 02 01 9F 20    enu.'.... ..... 
02E220:  1E 9E 02 01 A9 20 19 22 2C 11 01 BF 22 4D 20 45    ..... .",..."M E
02E230:  20 4E 20 55 20 20 28 35 29 22 00 0A 00 26 02 9F     N U  (5)"...&..
02E240:  20 1E 94 02 00 0A 00 30 02 9F 20 1E A8 02 00 1C     ......0.. .....
02E250:  00 3A 02 A1 20 0D 00 00 F3 F1 0F 20 FC 20 0D 00    .:.. ...... . ..
02E260:  00 F3 EE 17 20 EB 20 1E 30 02 00 31 00 44 02 B2    .... . .0..1.D..
02E270:  20 0D 00 00 F3 20 A0 20 1E 7C 06 2C 1E 9A 06 2C     .... . .|.,...,
02E280:  1E 4E 02 2C 1E 58 02 2C 1E C2 06 2C 1E 62 02 2C    .N.,.X.,...,.b.,
02E290:  1E 6C 02 2C 1E 80 02 2C 1E 14 00 00 34 00 4E 02    .l.,...,....4.N.
02E2A0:  9F 20 1E F8 02 01 03 00 00 66 69 6C E5 EF 22 61    . .......fil.."a
02E2B0:  70 65 6E 2D 31 30 22 01 9F 20 1E 98 03 01 9F 20    pen-10".. ..... 
02E2C0:  1E 0C 03 01 9F 20 1E 34 03 01 A0 20 1E 66 03 00    ..... .4... .f..
02E2D0:  35 00 58 02 9F 20 1E F8 02 01 9F 20 1E 98 03 01    5.X.. ..... ....
02E2E0:  9F 20 1E 0C 03 01 03 00 00 66 69 6C E5 EF 22 61    . .......fil.."a
02E2F0:  70 65 6E 2D 31 31 2E 22 01 9F 20 1E 34 03 01 A0    pen-11.".. .4...
02E300:  20 1E 66 03 00 22 00 62 02 9F 20 1E 02 03 01 9F     .f..".b.. .....
02E310:  20 1E 98 03 01 9F 20 1E 0C 03 01 9F 20 1E 44 07     ..... ..... .D.
02E320:  01 A0 20 1E 66 03 00 44 00 6C 02 9F 20 1E 02 03    .. .f..D.l.. ...
02E330:  01 9F 20 1E 98 03 01 9F 20 1E 0C 03 01 A8 22 74    .. ..... ....."t
02E340:  72 61 6E 73 22 2C 1C 00 40 01 A1 20 0D 00 00 E6    rans",..@.. ....
02E350:  EF 0E 20 EB 20 1E 76 02 20 01 97 20 CA 22 61 70    .. . .v. .. ."ap
02E360:  65 6E 2D 31 34 2E 62 61 73 22 00 50 00 76 02 03    en-14.bas".P.v..
02E370:  00 00 66 69 6C E5 EF 22 61 70 65 6E 2D 31 34 2E    ..fil.."apen-14.
02E380:  70 31 22 01 9F 20 1E 16 03 01 9F 20 1E 64 05 01    p1".. ..... .d..
02E390:  AD 20 10 01 9F 20 1E 5A 05 01 03 00 00 66 69 6C    . ... .Z.....fil
02E3A0:  E5 EF 22 61 70 65 6E 2D 31 34 2E 70 32 22 01 9F    .."apen-14.p2"..
02E3B0:  20 1E 16 03 01 A0 20 1E 66 03 00 22 00 80 02 9F     ..... .f.."....
02E3C0:  20 1E 02 03 01 9F 20 1E 98 03 01 9F 20 1E 0C 03     ..... ..... ...
02E3D0:  01 9F 20 1E 30 07 01 A0 20 1E 66 03 00 9E 00 8A    .. .0... .f.....
02E3E0:  02 8C 20 31 29 20 41 70 70 65 6E 64 69 78 20 45    .. 1) Appendix E
02E3F0:  69 67 68 74 2C 32 29 20 41 70 70 65 6E 64 69 78    ight,2) Appendix
02E400:  20 4E 69 6E 65 2C 33 29 20 41 70 70 65 6E 64 69     Nine,3) Appendi
02E410:  78 20 54 65 6E 2C 34 29 20 41 70 70 65 6E 64 69    x Ten,4) Appendi
02E420:  78 20 45 6C 65 76 65 6E 2C 35 29 20 41 70 70 65    x Eleven,5) Appe
02E430:  6E 64 69 78 20 54 77 65 6C 76 65 2C 36 29 20 41    ndix Twelve,6) A
02E440:  70 70 65 6E 64 69 78 20 54 68 69 72 74 65 65 6E    ppendix Thirteen
02E450:  2C 37 29 20 41 70 70 65 6E 64 69 78 20 46 6F 75    ,7) Appendix Fou
02E460:  72 74 65 65 6E 2C 38 29 20 49 6E 64 65 78 2C 39    rteen,8) Index,9
02E470:  29 20 4D 65 6E 75 20 6F 6E 65 00 51 00 94 02 A9    ) Menu one.Q....
02E480:  23 0F 2C 19 0A 2C 0F 01 BF 23 0F 2C 22 50 72 65    #.,..,...#.,"Pre
02E490:  73 73 20 74 68 65 20 6B 65 79 20 6E 75 6D 62 65    ss the key numbe
02E4A0:  72 20 6F 66 20 74 68 65 20 46 69 72 6D 77 61 72    r of the Firmwar
02E4B0:  65 20 50 61 72 74 20 79 6F 75 20 77 61 6E 74 20    e Part you want 
02E4C0:  28 31 20 74 6F 20 39 29 22 01 C9 00 32 00 9E 02    (1 to 9)"...2...
02E4D0:  8A 01 9E 20 0D 00 00 E1 EF 0F 20 EC 20 17 01 C3    ... ...... . ...
02E4E0:  20 03 00 00 E1 01 A9 20 19 21 2C 0D 00 00 E1 F4     ...... .!,.....
02E4F0:  13 01 BF 20 03 00 00 E1 3B 01 B0 01 C9 00 10 00    ... ....;.......
02E500:  A8 02 03 00 00 E1 EF FF 1C 28 FF 43 29 00 2D 00    .........(.C).-.
02E510:  B2 02 0D 00 00 F3 EF FF 74 28 22 20 31 32 33 34    ........t(" 1234
02E520:  35 36 37 38 39 22 2C 03 00 00 E1 29 01 0D 00 00    56789",....)....
02E530:  F3 EF FF 1D 28 03 00 00 E1 29 00 06 00 BC 02 C9    ....(....)......
02E540:  00 1A 00 C6 02 0D 00 00 64 69 73 E3 EF 0F 01 0D    ........dis.....
02E550:  00 00 73 69 64 E5 EF 0F 01 C9 00 1A 00 D0 02 0D    ..sid...........
02E560:  00 00 64 69 73 E3 EF 0F 01 0D 00 00 73 69 64 E5    ..dis.......sid.
02E570:  EF 10 01 C9 00 1A 00 DA 02 0D 00 00 64 69 73 E3    ............dis.
02E580:  EF 10 01 0D 00 00 73 69 64 E5 EF 0F 01 C9 00 1A    ......sid.......
02E590:  00 E4 02 0D 00 00 64 69 73 E3 EF 10 01 0D 00 00    ......dis.......
02E5A0:  73 69 64 E5 EF 10 01 C9 00 1A 00 EE 02 0D 00 00    sid.............
02E5B0:  64 69 73 E3 EF 11 01 0D 00 00 73 69 64 E5 EF 0F    dis.......sid...
02E5C0:  01 C9 00 1A 00 F8 02 0D 00 00 64 69 73 E3 EF 11    ..........dis...
02E5D0:  01 0D 00 00 73 69 64 E5 EF 10 01 C9 00 1A 00 02    ....sid.........
02E5E0:  03 0D 00 00 64 69 73 E3 EF 12 01 0D 00 00 73 69    ....dis.......si
02E5F0:  64 E5 EF 0F 01 C9 00 64 00 0C 03 8A 23 10 01 83    d......d....#...
02E600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 01 00 00    Track-Info......
02E610:  27 00 00 00 02 09 50 E5 27 00 C1 02 00 00 00 02    '.....P.'.......
02E620:  27 00 C2 02 00 00 00 02 27 00 C3 02 00 00 00 02    '.......'.......
02E630:  27 00 C4 02 00 00 00 02 27 00 C5 02 00 00 00 02    '.......'.......
02E640:  27 00 C6 02 00 00 00 02 27 00 C7 02 00 00 00 02    '.......'.......
02E650:  27 00 C8 02 00 00 00 02 27 00 C9 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:  20 1C 03 BB 01 A9 20 19 12 2C 13 01 BF 22 07 50     ..... ..,...".P
02E710:  6C 65 61 73 65 20 69 6E 73 65 72 74 20 44 69 73    lease insert Dis
02E720:  63 20 22 0D 00 00 64 69 73 E3 22 20 73 69 64 65    c "...dis." side
02E730:  20 22 0D 00 00 73 69 64 E5 22 20 61 6E 64 20 70     "...sid." and p
02E740:  72 65 73 73 20 61 6E 79 20 6B 65 79 2E 2E 2E 22    ress any key..."
02E750:  01 83 20 1C 18 BB 01 8A 01 C9 00 4F 00 16 03 0D    .. ........O....
02E760:  00 00 E1 EF 0E 01 B6 22 21 22 F4 03 00 00 66 69    ......."!"....fi
02E770:  6C E5 01 D6 20 FE 20 FF 40 01 A6 20 A3 23 17 2C    l... . .@.. £#.,
02E780:  03 00 00 E1 01 0D 00 00 E1 EF 0D 00 00 E1 F4 0F    ................
02E790:  01 A1 20 0D 00 00 E1 EE 19 11 20 EB 20 9F 20 1E    .. ....... . . .
02E7A0:  5C 03 01 0D 00 00 E1 EF 0E 00 15 00 20 03 A1 20    \........... .. 
02E7B0:  FF 0A 28 19 42 29 EF 0E 20 EB 20 1E 58 07 00 17    ..(.B).. . .X...
02E7C0:  00 2A 03 BF 20 03 00 00 E1 01 D5 01 88 01 9F 20    .*.. .......... 
02E7D0:  1E 5C 03 01 C9 00 1A 00 34 03 A1 20 0D 00 00 E6    .\......4.. ....
02E7E0:  EF 0E 20 EB 20 1E 16 03 20 01 97 20 1E 3E 03 00    .. . ... .. .>..
02E7F0:  23 00 3E 03 B6 22 21 22 F4 03 00 00 66 69 6C E5    #.>.."!"....fil.
02E800:  01 D6 20 FE 20 FF 40 01 A6 20 A3 23 17 2C 03 00    .. . .@.. £#.,..
02E810:  00 E1 00 15 00 48 03 A1 20 FF 0A 28 19 42 29 EF    .....H.. ..(.B).
02E820:  0E 20 EB 20 1E 58 07 00 13 00 52 03 BF 23 16 2C    . . .X....R..#.,
02E830:  03 00 00 E1 01 D5 01 88 01 C9 00 2D 00 5C 03 A9    ...........-.\..
02E840:  23 0F 2C 19 21 2C 0F 01 BF 23 0F 2C 22 50 72 65    #.,.!,...#.,"Pre
02E850:  73 73 20 61 20 6B 65 79 2E 2E 22 01 83 20 1C 18    ss a key..".. ..
02E860:  BB 01 8A 23 0F 01 C9 00 52 00 66 03 8A 23 10 01    ...#....R.f..#..
02E870:  A9 20 19 21 2C 13 01 BF 22 46 20 49 20 4E 20 49    . .!,..."F I N I
02E880:  20 53 20 48 20 45 20 44 22 01 A9 20 19 17 2C 19     S H E D".. ..,.
02E890:  0A 01 BF 22 07 50 72 65 73 73 20 5B 43 5D 20 74    ...".Press [C] t
02E8A0:  6F 20 43 6F 6E 74 69 6E 75 65 20 6F 72 20 5B 45    o Continue or [E
02E8B0:  5D 20 74 6F 20 45 6E 64 22 00 15 00 70 03 A1 20    ] to End"...p.. 
02E8C0:  FF 0A 28 19 3E 29 EF 0E 20 EB 20 1E 14 00 00 15    ..(.>).. . .....
02E8D0:  00 7A 03 A1 20 FF 0A 28 19 3A 29 EF 0E 20 EB 20    .z.. ..(.:).. . 
02E8E0:  1E 8E 03 00 0A 00 84 03 A0 20 1E 70 03 00 08 00    ......... .p....
02E8F0:  8E 03 83 20 0E 00 2D 00 98 03 8A 23 10 01 A9 20    ... ..-....#... 
02E900:  19 1C 2C 13 01 BF 22 07 5B 53 5D 20 53 63 72 65    ..,...".[S] Scre
02E910:  65 6E 20 6F 72 20 5B 50 5D 20 50 72 69 6E 74 65    en or [P] Printe
02E920:  72 22 00 1A 00 A2 03 A1 20 FF 0A 28 19 3C 29 EF    r"...... ..(.<).
02E930:  0E 20 EB 20 0D 00 00 E6 EF 0E 01 C9 00 1A 00 AC    . . ............
02E940:  03 A1 20 FF 0A 28 19 1B 29 EF 0E 20 EB 20 0D 00    .. ..(..).. . ..
02E950:  00 E6 EF 16 01 C9 00 0A 00 B6 03 A0 20 1E A2 03    ............ ...
02E960:  00 12 00 C0 03 C7 20 1E CA 03 01 9F 20 1E B0 04    ...... ..... ...
02E970:  01 C9 00 1D 00 CA 03 8C 22 63 68 61 70 2D 31 2E    ........"chap-1.
02E980:  70 31 22 2C 22 63 68 61 70 2D 31 2E 70 32 22 00    p1","chap-1.p2".
02E990:  12 00 D4 03 C7 20 1E DE 03 01 9F 20 1E B0 04 01    ..... ..... ....
02E9A0:  C9 00 1D 00 DE 03 8C 22 63 68 61 70 2D 32 2E 70    ......."chap-2.p
02E9B0:  31 22 2C 22 63 68 61 70 2D 32 2E 70 32 22 00 12    1","chap-2.p2"..
02E9C0:  00 E8 03 C7 20 1E F2 03 01 9F 20 1E B0 04 01 C9    .... ..... .....
02E9D0:  00 1D 00 F2 03 8C 22 63 68 61 70 2D 34 2E 70 31    ......"chap-4.p1
02E9E0:  22 2C 22 63 68 61 70 2D 34 2E 70 32 22 00 12 00    ","chap-4.p2"...
02E9F0:  FC 03 C7 20 1E FC 03 01 9F 20 1E B0 04 01 C9 00    ... ..... ......
02EA00:  1D 00 06 04 8C 22 63 68 61 70 2D 38 2E 70 31 22    ....."chap-8.p1"
02EA10:  2C 22 63 68 61 70 2D 38 2E 70 32 22 00 12 00 10    ,"chap-8.p2"....
02EA20:  04 C7 20 1E 1A 04 01 9F 20 1E B0 04 01 C9 00 1D    .. ..... .......
02EA30:  00 1A 04 8C 22 63 68 61 70 2D 39 2E 70 31 22 2C    ...."chap-9.p1",
02EA40:  22 63 68 61 70 2D 39 2E 70 32 22 00 12 00 24 04    "chap-9.p2"...$.
02EA50:  C7 20 1E 2E 04 01 9F 20 1E B0 04 01 C9 00 1F 00    . ..... ........
02EA60:  2E 04 8C 22 63 68 61 70 2D 31 30 2E 70 31 22 2C    ..."chap-10.p1",
02EA70:  22 63 68 61 70 2D 31 30 2E 70 32 22 00 12 00 38    "chap-10.p2"...8
02EA80:  04 C7 20 1E 42 04 01 9F 20 1E BA 04 01 C9 00 2C    .. .B... ......,
02EA90:  00 42 04 8C 22 63 68 61 70 2D 31 34 2E 70 31 22    .B.."chap-14.p1"
02EAA0:  2C 22 63 68 61 70 2D 31 34 2E 70 32 22 2C 22 63    ,"chap-14.p2","c
02EAB0:  68 61 70 2D 31 34 2E 70 33 22 00 39 00 4C 04 C7    hap-14.p3".9.L..
02EAC0:  20 1E 56 04 01 9E 20 0D 00 00 66 69 6C 65 F3 EF     .V... ...file..
02EAD0:  0F 20 EC 20 11 01 C3 20 03 00 00 66 69 6C E5 01    . . ... ...fil..
02EAE0:  9F 20 1E 34 03 01 B0 01 9F 20 1E DA 02 01 9F 20    . .4..... ..... 
02EAF0:  1E 0C 03 00 2C 00 56 04 8C 22 63 68 61 70 2D 31    ....,.V.."chap-1
02EB00:  35 2E 70 31 22 2C 22 63 68 61 70 2D 31 35 2E 70    5.p1","chap-15.p
02EB10:  32 22 2C 22 63 68 61 70 2D 31 35 2E 70 33 22 00    2","chap-15.p3".
02EB20:  3A 00 60 04 C7 20 1E 6A 04 01 9E 20 0D 00 00 66    :.`.. .j... ...f
02EB30:  69 6C 65 F3 EF 0F 20 EC 20 19 0B 01 C3 20 03 00    ile... . .... ..
02EB40:  00 66 69 6C E5 01 9F 20 1E 34 03 01 B0 01 9F 20    .fil... .4..... 
02EB50:  1E E4 02 01 9F 20 1E 0C 03 00 99 00 6A 04 8C 22    ..... ......j.."
02EB60:  63 68 61 70 2D 31 35 2E 70 34 22 2C 22 63 68 61    chap-15.p4","cha
02EB70:  70 2D 31 35 2E 70 35 22 2C 22 63 68 61 70 2D 31    p-15.p5","chap-1
02EB80:  35 2E 70 36 22 2C 22 63 68 61 70 2D 31 35 2E 70    5.p6","chap-15.p
02EB90:  37 22 2C 22 63 68 61 70 2D 31 35 2E 70 38 22 2C    7","chap-15.p8",
02EBA0:  22 63 68 61 70 2D 31 35 2E 70 39 22 2C 22 63 68    "chap-15.p9","ch
02EBB0:  61 70 2D 31 35 2E 70 31 30 22 2C 22 63 68 61 70    ap-15.p10","chap
02EBC0:  2D 31 35 2E 70 31 31 22 2C 22 63 68 61 70 2D 31    -15.p11","chap-1
02EBD0:  35 2E 70 31 32 22 2C 22 63 68 61 70 2D 31 35 2E    5.p12","chap-15.
02EBE0:  70 31 33 22 2C 22 63 68 61 70 2D 31 35 2E 70 31    p13","chap-15.p1
02EBF0:  34 22 00 2F 00 74 04 C7 20 1E 7E 04 01 9E 20 0D    4"./.t.. .~... .
02EC00:  00 00 66 69 6C 65 F3 EF 0F 20 EC 20 16 01 C3 20    ..file... . ... 
02EC10:  03 00 00 66 69 6C E5 01 9F 20 1E 34 03 01 B0 01    ...fil... .4....
02EC20:  C9 00 75 00 7E 04 8C 22 63 68 61 70 2D 31 35 2E    ..u.~.."chap-15.
02EC30:  70 31 35 22 2C 22 63 68 61 70 2D 31 35 2E 70 31    p15","chap-15.p1
02EC40:  36 22 2C 22 63 68 61 70 2D 31 35 2E 70 31 37 22    6","chap-15.p17"
02EC50:  2C 22 63 68 61 70 2D 31 35 2E 70 31 38 22 2C 22    ,"chap-15.p18","
02EC60:  63 68 61 70 2D 31 35 2E 70 31 39 22 2C 22 63 68    chap-15.p19","ch
02EC70:  61 70 2D 31 35 2E 70 32 30 22 2C 22 63 68 61 70    ap-15.p20","chap
02EC80:  2D 31 35 2E 70 32 31 22 2C 22 63 68 61 70 2D 31    -15.p21","chap-1
02EC90:  35 2E 70 32 32 22 00 12 00 88 04 C7 20 1E 92 04    5.p22"...... ...
02ECA0:  01 9F 20 1E B0 04 01 C9 00 1F 00 92 04 8C 22 63    .. ..........."c
02ECB0:  68 61 70 2D 31 36 2E 70 31 22 2C 22 63 68 61 70    hap-16.p1","chap
02ECC0:  2D 31 36 2E 70 32 22 00 12 00 9C 04 C7 20 1E A6    -16.p2"...... ..
02ECD0:  04 01 9F 20 1E B0 04 01 C9 00 1F 00 A6 04 8C 22    ... ..........."
02ECE0:  63 68 61 70 2D 31 38 2E 70 31 22 2C 22 63 68 61    chap-18.p1","cha
02ECF0:  70 2D 31 38 2E 70 32 22 00 29 00 B0 04 9E 20 0D    p-18.p2".).... .
02ED00:  00 00 66 69 6C 65 F3 EF 0F 20 EC 20 10 01 C3 20    ..file... . ... 
02ED10:  03 00 00 66 69 6C E5 01 9F 20 1E 34 03 01 B0 01    ...fil... .4....
02ED20:  C9 00 29 00 BA 04 9E 20 0D 00 00 66 69 6C 65 F3    ..).... ...file.
02ED30:  EF 0F 20 EC 20 11 01 C3 20 03 00 00 66 69 6C E5    .. . ... ...fil.
02ED40:  01 9F 20 1E 34 03 01 B0 01 C9 00 47 00 C4 04 03    .. .4......G....
02ED50:  00 00 66 69 6C E5 EF 22 61 70 32 22 01 9F 20 1E    ..fil.."ap2".. .
02ED60:  EE 02 01 9F 20 1E 98 03 01 9F 20 1E 0C 03 01 A1    .... ..... .....
02ED70:  20 0D 00 00 E6 EF 0E 20 EB 20 9F 20 1E 34 03 20     ...... . . .4. 
02ED80:  01 97 20 CA 22 61 70 70 65 6E 64 32 2E 62 61 73    .. ."append2.bas
02ED90:  22 00 8A 00 CE 04 8A 01 BF 22 4E 6F 72 6D 61 6C    "........"Normal
02EDA0:  20 54 72 61 6E 73 6C 61 74 69 6F 6E 20 54 61 62     Translation Tab
02EDB0:  6C 65 2E 22 01 BF 01 BF 22 54 68 65 20 66 6F 6C    le."...."The fol
02EDC0:  6C 6F 77 69 6E 67 20 64 69 61 67 72 61 6D 20 64    lowing diagram d
02EDD0:  65 73 63 72 69 62 65 73 20 74 68 65 20 74 72 61    escribes the tra
02EDE0:  6E 73 6C 61 74 69 6F 6E 20 77 68 65 6E 20 6E 65    nslation when ne
02EDF0:  69 74 68 65 72 20 73 68 69 66 74 20 20 6E 6F 72    ither shift  nor
02EE00:  20 20 63 6F 6E 74 72 6F 6C 69 73 20 70 72 65 73      controlis pres
02EE10:  73 65 64 2E 22 01 83 20 1C 18 BB 00 19 00 D8 04    sed.".. ........
02EE20:  A8 22 32 2D 34 6D 61 69 6E 22 2C 1C 00 40 01 9F    ."2-4main",..@..
02EE30:  20 1E 64 05 00 18 00 E2 04 A8 22 70 61 64 32 2D     .d......."pad2-
02EE40:  34 22 2C 1C 00 40 01 9F 20 1E 64 05 00 18 00 EC    4",..@.. .d.....
02EE50:  04 A8 22 6A 6F 79 32 2D 34 22 2C 1C 00 40 01 9F    .."joy2-4",..@..
02EE60:  20 1E 64 05 00 35 00 F6 04 AD 20 10 01 9F 20 1E     .d..5.... ... .
02EE70:  5A 05 01 A8 22 32 2D 35 6D 61 69 6E 22 01 BF 22    Z..."2-5main".."
02EE80:  53 68 69 66 74 20 54 72 61 6E 73 6C 61 74 69 6F    Shift Translatio
02EE90:  6E 20 54 61 62 6C 65 2E 22 00 A2 00 00 05 BF 01    n Table.".......
02EEA0:  BF 22 54 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20    ."The following 
02EEB0:  64 69 61 67 72 61 6D 20 64 65 73 72 69 62 65 73    diagram desribes
02EEC0:  20 74 68 65 20 74 72 61 6E 73 6C 61 74 69 6F 6E     the translation
02EED0:  20 77 68 65 6E 20 65 69 74 68 65 72 20 73 68 69     when either shi
02EEE0:  66 74 20 6B 65 79 20 69 73 20 70 72 65 73 73 65    ft key is presse
02EEF0:  64 2C 6F 72 20 74 68 65 20 73 68 69 66 74 20 6C    d,or the shift l
02EF00:  6F 63 6B 20 69 73 20 6F 6E 2C 20 62 75 74 20 74    ock is on, but t
02EF10:  68 65 20 63 6F 6E 74 72 6F 6C 20 6B 65 79 20 69    he control key i
02EF20:  73 20 6E 6F 74 20 70 72 65 73 73 65 64 2E 22 01    s not pressed.".
02EF30:  83 20 1C 03 BB 01 83 20 1C 18 BB 00 0A 00 0A 05    . ..... ........
02EF40:  9F 20 1E 64 05 00 18 00 14 05 A8 22 70 61 64 32    . .d......."pad2
02EF50:  2D 35 22 2C 1C 00 40 01 9F 20 1E 64 05 00 22 00    -5",..@.. .d..".
02EF60:  1E 05 A8 22 6A 6F 79 32 2D 35 22 2C 1C 00 40 01    ..."joy2-5",..@.
02EF70:  9F 20 1E 64 05 01 AD 20 10 01 9F 20 1E 5A 05 00    . .d... ... .Z..
02EF80:  86 00 28 05 8A 01 BF 22 43 6F 6E 74 72 6F 6C 20    ..(...."Control 
02EF90:  54 72 61 6E 73 6C 61 74 69 6F 6E 20 54 61 62 6C    Translation Tabl
02EFA0:  65 2E 22 01 BF 01 BF 22 54 68 65 20 66 6F 6C 6C    e."...."The foll
02EFB0:  6F 77 69 6E 67 20 64 69 61 67 72 61 6D 20 64 65    owing diagram de
02EFC0:  73 63 72 69 62 65 73 20 74 68 65 20 74 72 61 6E    scribes the tran
02EFD0:  73 6C 61 74 69 6F 6E 20 77 68 65 6E 20 74 68 65    slation when the
02EFE0:  20 63 6F 6E 74 72 6F 6C 20 6B 65 79 20 69 73 20     control key is 
02EFF0:  70 72 65 73 73 65 64 2E 22 01 83 20 1C 03 BB 01    pressed.".. ....
02F000:  83 20 1C 18 BB 00 19 00 32 05 A8 22 32 2D 36 6D    . ......2.."2-6m
02F010:  61 69 6E 22 2C 1C 00 40 01 9F 20 1E 64 05 00 18    ain",..@.. .d...
02F020:  00 3C 05 A8 22 70 61 64 32 2D 36 22 2C 1C 00 40    .<.."pad2-6",..@
02F030:  01 9F 20 1E 64 05 00 18 00 46 05 A8 22 6A 6F 79    .. .d....F.."joy
02F040:  32 2D 36 22 2C 1C 00 40 01 9F 20 1E 64 05 00 14    2-6",..@.. .d...
02F050:  00 50 05 AD 20 10 01 9F 20 1E 5A 05 01 A0 20 1E    .P.. ... .Z... .
02F060:  66 03 00 37 00 5A 05 D8 23 0F 2C 10 2C 19 4F 2C    f..7.Z..#.,.,.O,
02F070:  19 19 2C 19 19 01 D8 23 0E 2C 0F 2C 19 50 2C 13    ..,....#.,.,.P,.
02F080:  2C 19 17 01 D8 23 10 2C 0F 2C 19 50 2C 13 2C 19    ,....#.,.,.P,.,.
02F090:  19 01 83 20 1C A3 38 01 C9 00 18 00 64 05 83 20    ... .£8.....d.. 
02F0A0:  1C 00 40 01 83 20 1C 03 BB 01 83 20 1C 18 BB 01    ..@.. ..... ....
02F0B0:  C9 00 4A 00 6E 05 03 00 00 66 69 6C E5 EF 22 41    ..J.n....fil.."A
02F0C0:  50 31 2D 31 22 01 9F 20 1E EE 02 01 9F 20 1E 98    P1-1".. ..... ..
02F0D0:  03 01 9F 20 1E 0C 03 01 A1 20 0D 00 00 E6 EF 0E    ... ..... ......
02F0E0:  20 EB 20 9F 20 1E 34 03 20 01 97 20 CA 22 61 70     . . .4. .. ."ap
02F0F0:  70 65 6E 64 2D 31 2E 62 61 73 22 00 19 00 78 05    pend-1.bas"...x.
02F100:  A8 22 34 36 34 2D 41 50 31 22 2C 1C 00 40 01 9F    ."464-AP1",..@..
02F110:  20 1E 64 05 00 1A 00 82 05 A8 22 36 31 32 38 2D     .d......."6128-
02F120:  61 70 31 22 2C 1C 00 40 01 9F 20 1E 64 05 00 16    ap1",..@.. .d...
02F130:  00 8C 05 A8 22 70 61 64 73 22 2C 1C 00 40 01 9F    ...."pads",..@..
02F140:  20 1E 64 05 00 16 00 96 05 A8 22 6A 6F 79 73 22     .d......."joys"
02F150:  2C 1C 00 40 01 9F 20 1E 64 05 00 24 00 A0 05 AD    ,..@.. .d..$....
02F160:  20 10 01 9F 20 1E 5A 05 01 03 00 00 66 69 6C E5     ... .Z.....fil.
02F170:  EF 22 61 70 31 2D 32 22 01 9F 20 1E 34 03 00 0A    ."ap1-2".. .4...
02F180:  00 AA 05 A0 20 1E 66 03 00 4C 00 B4 05 03 00 00    .... .f..L......
02F190:  66 69 6C E5 EF 22 61 70 70 65 6E 64 33 22 01 9F    fil.."append3"..
02F1A0:  20 1E EE 02 01 9F 20 1E 98 03 01 9F 20 1E 0C 03     ..... ..... ...
02F1B0:  01 A1 20 0D 00 00 E6 EF 0E 20 EB 20 9F 20 1E 34    .. ...... . . .4
02F1C0:  03 20 01 97 20 CA 22 61 70 70 65 6E 64 2D 33 2E    . .. ."append-3.
02F1D0:  62 61 73 22 00 19 00 BE 05 A8 22 33 2D 31 4D 41    bas"......"3-1MA
02F1E0:  49 4E 22 2C 1C 00 40 01 9F 20 1E 64 05 00 18 00    IN",..@.. .d....
02F1F0:  C8 05 A8 22 50 41 44 33 2D 31 22 2C 1C 00 40 01    ..."PAD3-1",..@.
02F200:  9F 20 1E 64 05 00 18 00 D2 05 A8 22 4A 4F 59 33    . .d......."JOY3
02F210:  2D 31 22 2C 1C 00 40 01 9F 20 1E 64 05 00 14 00    -1",..@.. .d....
02F220:  DC 05 AD 20 10 01 9F 20 1E 5A 05 01 A0 20 1E 66    ... ... .Z... .f
02F230:  03 00 48 00 E6 05 03 00 00 66 69 6C E5 EF 22 61    ..H......fil.."a
02F240:  70 65 6E 36 2D 61 22 01 9F 20 1E F8 02 01 9F 20    pen6-a".. ..... 
02F250:  1E 98 03 01 9F 20 1E 0C 03 01 A1 20 0D 00 00 E6    ..... ..... ....
02F260:  EF 0E 20 EB 20 9F 20 1E 34 03 20 01 97 20 CA 22    .. . . .4. .. ."
02F270:  61 70 65 6E 36 2E 62 61 73 00 18 00 F0 05 A8 22    apen6.bas......"
02F280:  73 65 74 36 2D 31 22 2C 1C 00 40 01 9F 20 1E 64    set6-1",..@.. .d
02F290:  05 00 18 00 FA 05 A8 22 73 65 74 36 2D 32 22 2C    ......."set6-2",
02F2A0:  1C 00 40 01 9F 20 1E 64 05 00 23 00 04 06 A8 22    ..@.. .d..#...."
02F2B0:  73 65 74 62 36 2D 32 22 2C 1C 00 40 01 9F 20 1E    setb6-2",..@.. .
02F2C0:  64 05 01 AD 20 10 01 9F 20 1E 5A 05 00 1C 00 0E    d... ... .Z.....
02F2D0:  06 03 00 00 66 69 6C E5 EF 22 61 70 65 6E 36 2D    ....fil.."apen6-
02F2E0:  62 22 01 9F 20 1E 34 03 00 22 00 18 06 A8 22 62    b".. .4.."...."b
02F2F0:  6C 6F 63 6B 73 22 2C 1C 00 40 01 9F 20 1E 64 05    locks",..@.. .d.
02F300:  01 AD 20 10 01 9F 20 1E 5A 05 00 1C 00 22 06 03    .. ... .Z...."..
02F310:  00 00 66 69 6C E5 EF 22 61 70 65 6E 36 2D 63 22    ..fil.."apen6-c"
02F320:  01 9F 20 1E 34 03 00 17 00 2C 06 A8 22 6C 69 6E    .. .4....,.."lin
02F330:  65 73 22 2C 1C 00 40 01 9F 20 1E 64 05 00 1A 00    es",..@.. .d....
02F340:  36 06 A8 22 36 2D 35 63 68 61 72 73 22 2C 1C 00    6.."6-5chars",..
02F350:  40 01 9F 20 1E 64 05 00 1A 00 40 06 A8 22 36 2D    @.. .d....@.."6-
02F360:  36 63 68 61 2D 74 22 2C 1C 00 40 01 9F 20 1E 64    6cha-t",..@.. .d
02F370:  05 00 1A 00 4A 06 A8 22 36 2D 36 63 68 61 2D 62    ....J.."6-6cha-b
02F380:  22 2C 1C 00 40 01 9F 20 1E 64 05 00 19 00 54 06    ",..@.. .d....T.
02F390:  A8 22 36 2D 37 63 68 61 72 22 2C 1C 00 40 01 9F    ."6-7char",..@..
02F3A0:  20 1E 64 05 00 19 00 5E 06 A8 22 36 2D 38 63 68     .d....^.."6-8ch
02F3B0:  61 72 22 2C 1C 00 40 01 9F 20 1E 64 05 00 19 00    ar",..@.. .d....
02F3C0:  68 06 A8 22 36 2D 39 63 68 61 72 22 2C 1C 00 40    h.."6-9char",..@
02F3D0:  01 9F 20 1E 64 05 00 14 00 72 06 AD 20 10 01 9F    .. .d....r.. ...
02F3E0:  20 1E 5A 05 01 A0 20 1E 66 03 00 48 00 7C 06 03     .Z... .f..H.|..
02F3F0:  00 00 66 69 6C E5 EF 22 61 70 65 6E 2D 38 22 01    ..fil.."apen-8".
02F400:  9F 20 1E F8 02 01 9F 20 1E 98 03 01 9F 20 1E 0C    . ..... ..... ..
02F410:  03 01 A1 20 0D 00 00 E6 EF 0E 20 EB 20 9F 20 1E    ... ...... . . .
02F420:  34 03 20 01 97 20 CA 22 61 70 65 6E 38 2E 62 61    4. .. ."apen8.ba
02F430:  73 22 00 19 00 86 06 A8 22 61 70 65 6E 38 2D 61    s"......"apen8-a
02F440:  22 2C 1C 00 40 01 9F 20 1E 64 05 00 14 00 90 06    ",..@.. .d......
02F450:  AD 20 10 01 9F 20 1E 5A 05 01 9F 20 1E 66 03 00    . ... .Z... .f..
02F460:  44 00 9A 06 03 00 00 66 69 6C E5 EF 22 61 70 65    D......fil.."ape
02F470:  6E 2D 39 22 01 9F 20 1E F8 02 01 9F 20 1E 98 03    n-9".. ..... ...
02F480:  01 9F 20 1E 0C 03 01 A1 20 0D 00 00 E6 EF 0E 20    .. ..... ...... 
02F490:  EB 20 9F 20 1E 34 03 20 01 97 20 CA 22 61 70 65    . . .4. .. ."ape
02F4A0:  6E 39 22 00 19 00 A4 06 A8 22 61 70 65 6E 39 2D    n9"......"apen9-
02F4B0:  61 22 2C 1C 00 40 01 9F 20 1E 64 05 00 19 00 AE    a",..@.. .d.....
02F4C0:  06 A8 22 61 70 65 6E 39 2D 62 22 2C 1C 00 40 01    .."apen9-b",..@.
02F4D0:  9F 20 1E 64 05 00 2C 00 B8 06 AD 20 10 01 9F 20    . .d..,.... ... 
02F4E0:  1E 5A 05 01 03 00 00 66 69 6C E5 EF 22 61 70 65    .Z.....fil.."ape
02F4F0:  6E 2D 39 63 22 01 9F 20 1E 34 03 01 A0 20 1E 66    n-9c".. .4... .f
02F500:  03 00 49 00 C2 06 03 00 00 66 69 6C E5 EF 22 61    ..I......fil.."a
02F510:  70 65 6E 2D 31 32 2E 70 31 22 01 9F 20 1E F8 02    pen-12.p1".. ...
02F520:  01 9F 20 1E 98 03 01 9F 20 1E 0C 03 01 A1 20 0D    .. ..... ..... .
02F530:  00 00 E6 EF 0E 20 EB 20 9F 20 1E 34 03 20 01 97    ..... . . .4. ..
02F540:  20 CA 22 61 70 65 6E 31 32 22 00 1F 00 CC 06 03     ."apen12"......
02F550:  00 00 66 69 6C E5 EF 22 61 70 65 6E 2D 31 32 2E    ..fil.."apen-12.
02F560:  70 32 22 01 9F 20 1E 34 03 00 1A 00 D6 06 A8 22    p2".. .4......."
02F570:  31 32 2D 31 33 62 6F 74 22 2C 1C 00 40 01 9F 20    12-13bot",..@.. 
02F580:  1E 64 05 00 29 00 E0 06 AD 20 10 01 9F 20 1E 5A    .d..).... ... .Z
02F590:  05 01 03 00 00 66 69 6C E5 EF 22 61 70 65 6E 2D    .....fil.."apen-
02F5A0:  31 32 2E 70 34 22 01 9F 20 1E 34 03 00 1A 00 EA    12.p4".. .4.....
02F5B0:  06 A8 22 31 32 2D 31 34 62 6F 74 22 2C 1C 00 40    .."12-14bot",..@
02F5C0:  01 9F 20 1E 64 05 00 29 00 F4 06 AD 20 10 01 9F    .. .d..).... ...
02F5D0:  20 1E 5A 05 01 03 00 00 66 69 6C E5 EF 22 61 70     .Z.....fil.."ap
02F5E0:  65 6E 2D 31 32 2E 70 35 22 01 9F 20 1E 34 03 00    en-12.p5".. .4..
02F5F0:  17 00 FE 06 A8 22 66 2D 73 79 73 22 2C 1C 00 40    ....."f-sys",..@
02F600:  01 9F 20 1E 64 05 00 2A 00 08 07 AD 20 10 01 9F    .. .d..*.... ...
02F610:  20 1E 5A 05 01 03 00 00 66 69 6C E5 EF 22 61 70     .Z.....fil.."ap
02F620:  65 6E 2D 31 32 61 2E 70 36 22 01 9F 20 1E 34 03    en-12a.p6".. .4.
02F630:  00 18 00 12 07 A8 22 46 52 45 4E 43 48 22 2C 1C    ......"FRENCH",.
02F640:  00 40 01 9F 20 1E 64 05 00 29 00 1C 07 AD 20 10    .@.. .d..).... .
02F650:  01 9F 20 1E 5A 05 01 03 00 00 66 69 6C E5 EF 22    .. .Z.....fil.."
02F660:  61 70 65 6E 2D 31 32 2E 70 36 22 01 9F 20 1E 34    apen-12.p6".. .4
02F670:  03 00 0A 00 26 07 A0 20 1E 66 03 00 12 00 30 07    ....&.. .f....0.
02F680:  C7 20 1E 3A 07 01 9F 20 1E BA 04 01 C9 00 24 00    . .:... ......$.
02F690:  3A 07 8C 20 22 69 6E 64 65 78 2D 31 22 2C 22 69    :.. "index-1","i
02F6A0:  6E 64 65 78 2D 32 22 2C 22 69 6E 64 65 78 2D 33    ndex-2","index-3
02F6B0:  22 00 12 00 44 07 C7 20 1E 4E 07 01 9F 20 1E B0    "...D.. .N... ..
02F6C0:  04 01 C9 00 20 00 4E 07 8C 20 22 61 70 65 6E 2D    .... .N.. "apen-
02F6D0:  31 33 2E 70 31 22 2C 22 61 70 65 6E 2D 31 33 2E    13.p1","apen-13.
02F6E0:  70 32 22 00 0C 00 58 07 88 01 A0 20 1E 66 03 00    p2"...X.... .f..
02F6F0:  00 00 1A 20 4B 65 72 6E 65 6C 20 20 66 6F 72 20    ... Kernel  for 
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=129   CHEA=0   COD=55   MUSI=3   COP=6   GRA=147   WRIT=151   198=0   199=0   STARTER=0   KBI=0   CAAV=0   L.TOURNIER=0  
EXTENDED CPC DSK File    SAMdisk120417(  PCHAP-1  1 v  CHAP-1  2 dCHAP-2  1 &'()
*+,-./012345CHAP-2  1 6CHAP-2  2 789CHAP-3    zABCDEFGHICHAP-4  1 JKLMNOPQRSTUVW
XYCHAP-4  1 ZCHAP-4  2 CHAP-5    sabcdefghijkCHAP-6    llmnopqrstuvwxyCHAP-7    
rzCHAP-8  1 sCHAP-8  2 i£CONTENTS  - !"#$%DISC    ASDUMP    NPREFACE    PTITLE  
ASSTART   STITLE   N               1 The Firmware         This manual describes 
the firmware of  the  Amstrad  CPC  464/664/6128         microcomputers. It also
 describes the disc operating systems (CP/M and         AMSDOS). It does not des
cribe either the BASIC language supplied  with         the system or CP/M. The m
anual does describe certain  aspects  of  the         BASIC where these affect o
ther programs and it uses BASIC  in  certain         example programs when descr
ibing some features  of  the  firmware.  It         also describes how to call t
he firmware from CP/M.         Three versions of the firmware are described. V1.
0 (on  CPC464),  V1.1         (on CPC664) and  V1.2  (on  CPC6128).  Apart  from
  support  for  bank         switching V1.1 and V1.2 are identical and  are  ref
erred  to  as  V1.1         throughout this manual. It may be necessary for a  p
rogram  to  deduce         which firmware is fitted to the computer, and this ca
n be achieved  by         inspecting the on-board ROM's version number (as descr
ibed in  section         10.2) using KL ROM PROBE. This will return a 0,1 or 2 d
epending on the         version of firmware.           The firmware is the progr
am that resides in the lower ROM and the disc         controlling ROM (see secti
on  2).  Its  function  is  to  control  the         hardware of the computer an
d to provide useful  facilities  for  other         programs to use. This avoids
 every program written having  to  provide         its own facilities.          
 This manual is expected to be of interest to anyone who would like  to         
know how the system works. It is indispensable for programmers writing         m
achine  code  programs,  particularly  system  programs  (e.g.  other         la
nguages) and games.           The information presented can be extremely  detail
ed.  It  covers  the         operation of the firmware from the  lowest  level  
(e.g.  driving  the         sound chip) to the highest level (e.g. running a que
ue of sounds).  It         is not necessary to understand all the information gi
ven to be able to         use the firmware, however, a good grasp of how the sys
tem  works  will         aid the  programmer  in  selecting  the  most  appropri
ate  method  of         performing a particular task.           Two disc operati
ng systems are provided AMSDOS, which  enables  BASIC         programs to use di
sc files in much the same way as cassette files and         CP/M 2.2 the industr
y standard operating  system  (CP/M  Plus  in  the         CPC6128, but we do no
t discuss the diff  Perences between the two in this         manual). Both AMSDO
S and CP/M use the same file structure and may read         and write each other
s file's.           CP/M is invoked from BASIC by typing CPM. Part of CP/M (the 
 CCP  and         BDOS) is loaded from the disc in drive A. The CP/M  BIOS  resi
des  in         the disc ROM.         AMSDOS is enabled whenever BASIC is first 
used. This  intercepts  most         of the cassette firmware routines and redir
ects  them  to  disc.  Thus         existing BASIC programs which use cassette f
iles can  use  disc  files         with little or no modification.  AMSDOS  also
  provides  a  number  of         external commands for erasing and renaming fil
es and  redirecting  the         cassette firmware routines.           Provided 
with the disc system are a number  of  utility  programs  for         formatting
  and  copying  discs  and  for  changing   various   system         parameters.
 These all run under CP/M.           AMSTRAD CPC464/664/6128 FIRMWARE           
                   page 1.1                     1.1 The Hardware.           The 
diagram on the following page gives an indication of the different         piece
s of hardware in the system and how they connect to  each  other.         For mo
re information on how the hardware works see  Appendix  XII  and         the rel
evant manufacturer's data sheets.             The System centres around the CPU 
(Central Processing Unit) which is a         Z80A microprocessor with a 4MHz clo
ck. Next in importance is the  gate         array which contains  miscellaneous 
 logic  to  control  much  of  the         system. In particular, it controls in
k colours, screen  mode  and  ROM         enabling (see section 10 and appendix 
XII). In  conjunction  with  the         CRTC (Cathode Ray Tube Controller), whi
ch is a  6845  chip,  the  gate         array generate the video signal for the 
monitor.             The PSG (Programmable Sound Generator) is an AY-3-892. This
  chip  has         three channels of sound generator, a noise generator, envelo
pe control         for each channel and  an  I/O  port.  The  way  the  sound  g
enerating         hardware is used is described in section 7. The I/O port is  u
sed  for         input mode to sense the state of the keyboard and joystick swit
ches.             The FDC (Floppy Disc Controller) is an NEC uPD765A chip. Only 
two disc         drives are supported, since the US1 line from the uPD765A is  i
gnored.         This results in the two disc drives being accessed as drives 0  
and  1         and again as 2 and 3. The FDC supports both single  and  double  
sided         and single and double density mini-floppy disc drives. Note  that 
 the         clock frequency supplied to the uPD765A CLK pin is  4MHz  rather  t
han         the 8MHz used with larger disc drives.             Each disc drive t
akes a single 3" floppy disc. Either side of the disc         may be used, depen
ding on which way up the disc is inserted  into  the         drive. The disc int
erface contains a 16K expansion ROM,  8K  of  which         contains the disc dr
iving software, the remainder  being  used  by  DR         LOGO.             The
 PPI (Parallel Peripheral Interface), which is  an  8255  chip,  is         used
 to control the remainder of the system. It has three ports.  Port         C is 
used as in output port to control the cassette recorder motor, to         write 
data to the cassette, to write data to the cassette,  to  strobe         data in
 or out of the PSG and to select rows of the keyboard.  Port  B         is used 
as an input port  to  sense  the  frame  flyback  signal,  the         Centronic
s port busy signal and various option links and to read  data         from the c
assette. Port A is used to communicate with the PSG  and  is         set into in
put or output mode as required.             Accesses to memory are synchronized 
with the video logic  -  they  are         constrained to occur on microsecond b
oundaries. This has the affect of         stretching each Z80 M cycle (machine c
ycle) to be a multiple  of  4  T         states (clock cycles). In practice this
 alters the instruction  timing         so that the effective clock rate is appr
oximately 3.3MHz.               AMSTRAD CPC464/664/6128 FIRMWARE                
              page 1.2                                                          
                                        --            Monitor -------           
Gate Array                                       P                              
                                                                                
                                                                                
                                                                                
                                               Speakers         CRTC  --        
 ----   RAM                                                                     
               CPU                                                              
                                              V                                 
                                                                 PSG   ------   
      --         -----  ROM   -                                                 
                                                                        PPI     
                                                                                
V              Keyboard                                                         
    and     ----         --   Centronics Port      FDC            Joysticks     
                                                                                
                                                                                
 V         V                                                                    
                           Cassette Recorder          Disc Drives               
                                     1.2 The Division of the Firmware.          
       The Firmware is split into 'packs' each dealing with a particular part   
      of the system, usually a hardware device. Each pack has a  section  of    
     this manual devoted to it where its operation is explained in  detail.     
          The system components and their associated packs are                  
        Keyboard           Key Manager.                  Screen             Text
 VDU, Graphics VDU, Screen Pack.                  Cassette/Disc      Cassette Ma
nager/AMSDOS.                  Sound              Sound Manager.                
  Operating System   Kernel, Machine Pack, Jumper.                 AMSTRAD CPC46
4/664/6128 FIRMWARE                              page 1.3                     a.
 Key Manager           The Key Manager is more fully described in section 3.  It
  deals  with         scanning the keyboard, generating characters, function  ke
ys,  testing         for break and scanning the joysticks.             b. Text V
DU           The Text VDU is more fully outlined in section 4. It deals with put
ting         characters on the screen, the cursor and obeying control codes.    
         c. Graphics VDU           The Graphics VDU is more fully presented in s
ection 5. It  deals  with         plotting points, testing points, drawing lines
 and  filling  areas  on         the screen.             d. Screen Pack         
  The Screen Pack is more fully detailed in section 6. It interfaces the        
 Text and Graphics VDUs with the screen hardware and deals with aspects         
of the screen that affect both of these packs, such as screen mode  or         i
nk colours.           e. Sound Manager           The Sound Manager is more fully
 discussed in section 7. It deals  with         queuing, enveloping, synchronizi
ng and generating sounds.           f. Cassette Manager/AMSDOS           The Cas
sette Manager is more fully explained in section  8.  It  deals         with rea
ding from tape, writing to tape and cassette motor control.           AMSDOS is 
explained more fully in section 9.  It  deals  with  reading         from disc, 
writing to disc and the disc motor control.           g. Kernel           The Ke
rnel is more fully described in sections 2, 10, 11 and 12. It is         the hea
rt of the operating system and deals with  interrupts,  events,         selectin
g ROMs and running programs.           h. Machine Pack           The Machine Pac
k is more fully documented in section 13. It deals with         the printer and 
the low level driving of the hardware.           i. Jumper           Jumper, or 
rather, the main firmware jumpblock is  listed  in  section         14. The entr
ies in the jumpblock are described in  detail  in  se  Pction         15. Jumper
 sets up the firmware jumpblock.               AMSTRAD CPC464/664/6128 FIRMWARE 
                             page 1.4                     1.3 Controlling the Fi
rmware.           The firmware is controlled by  the  user  calling  published  
routines         rather than by the user setting the values of system  variables
.  This         will allow the firmware's variable layout to be changed in major
  ways         without the user being affected.           The addresses of the r
outines the user  is  to  call  need  to  remain         constant if the  firmwa
re  is  altered.  This  is  achieved  by  using         jumpblocks (see below). 
          The advantage of a routine interface is that it  allows  a  number  of
         different system  variables  to  be  altered  by  the  firmware  in  a 
        consistent way in one operation. If the system variables had to be set  
       by the user then the firmware could be left in an indeterminate  state   
        if some variables had been set but not others. Also, the routine  type  
       of interface ensures that all the required side effects  of  a  change   
      are taken care of automatically without the user being  troubled  with    
     the details. An example of this  is  changing  the  screen  mode  (see     
    section 6.1) - changing the size of the screen requires  a  number  of      
   other people to be informed of  the  change  so  that  illegal  screen       
  positions and inks are not used.           1.4 Jumpblocks.             A jumpb
lock is a series of  jump  instructions  placed  in  memory  at         well-kno
wn locations. The jumps are to the  various  routines  in  the         firmware 
that the user might want to call. Programs that need  to  use         the facili
ties provided by the routines in the jumpblock  should  call         the appropr
iate jumpblock entries.             If the firmware is altered then it is quite 
likely that the  addresses         of some of the routines available to the user
 will change. By  keeping         the address of the jumpblock constant but alte
ring the entries in  the         jumpblock so that they jump to the new addresse
s of the routines,  the         change is hidden from the user (providing that  
the  user  is  calling         routines  via  the  jumpblock  and  is  not  acce
ssing  the   firmware         directly).             To make the change to the f
irmware completely hidden from the user  it         is also necessary to  keep  
the  entry  and  exit  conditions  of  the         routines accessed via the jum
pblock constant. The greater part of this         manual is taken up with the de
tailed entry and  exit  requirements  of         the jumpblock entries.         
  The jumpblock is placed in RAM so that the user can alter the  entries        
 in it. This allows the user to trap particular entries and  substitute         
a new  routine  that  will  replace  the  standard  firmware  routine.         P
rovided that the new routine obeys the entry and exit requirements of         th
e firmware routine, the substitution will not upset programs unaware         of 
the change.                 AMSTRAD CPC464/664/6128 FIRMWARE                    
          page 1.5  nual describes the firmware of  the  Amstrad  CPC  464/664/6
128         microcomput         in it. This allows the user to trap particular e
ntries and  substitute         a new  routine  that  will  replace  the  standar
d  firmware  routine.         Provided that the new routine obeys the entry and 
exit requirements of         the firmwa                   There are four jumpblo
cks. These are all listed  in  section  14.  The         first and largest  jump
block  is  the  main  firmware  jumpblock  (see         sections 14.1 and 15). T
his allows the  user  to  call  most  firmware         routines. The second jump
block  is  the  indirections  jumpblock  (see         sections 14.2 and 16). The
 entries in this jumpblock are used  by  the         firmware at key moments in 
order to allow the user to alter the action         of the firmware. The last tw
o jumpblocks are rather special. They  are         to do with the Kernel and all
ow ROMs to be  enabled  and  routines  in         ROMs to be called. (See sectio
ns 14.3,14.4,17 and 18).             Section 1.7 below gives an example of how a
 jumpblock entry  might  be         changed to alter the action of the firmware.
             1.5 Conventions.           a. Notation           Processor instruct
ions are generally referred to by their standard Z80         mnemonics.  The  ex
ceptions  that  prove    Pthe  rule  are  the  restart         instructions. The
 mnemonics RST 0..RST 7 are used rather than the more         usual Z80 mnemonic
s RST #00..RST #38.             The registers are also referred to by their stan
dard  Z80  names.  The         flag register as a whole is referred to as F but 
the individual  flags         are called by their full name, e.g. carry. The fla
gs are  said  to  be         true when they are set and false when they are clea
r.  Thus  a  JP  NC         instruction would jump if carry was false and not if
 carry was true.             Hexadecimal numbers are indicated by prefixing the 
number with #, thus         #7F is the number 127 in hex. All numbers not prefix
ed  by  #  are  in         decimal.             Large numbers are often abbrevia
ted by writing them as a  multiple  of         1024. For example, 32K bytes mean
s 32 times 1024 (i.e. 32768) bytes.           b. Usage           Routines, where
 possible, take and return values in  registers.  Where         more information
 than may be held in registers is to be  passed  to  a         routine, the addr
ess of a data area is given. The location  in  memory         of these data area
s is sometimes critical, see section 2.4.             Where a routine can succee
d or fail this condition is normally  passed         back in the carry flag. Car
ry true normally  implies  success,  whilst         carry false normally implies
 failure.             The alternate register set, AF' BC' DE' HL', is reserved  
for  use  by         the system. The user should  not  execute  an  EX  AF,AF'  
or  an  EXX         instruction as these will have unfortunate consequences. (Se
e Appendix         XI for a full description.)             AMSTRAD CPC464/664/61
28 FIRMWARE                              page 1.6                     c. General
           The logical values true and false are generally represented by #FF an
d         #00 respectively. Often, however, any non-zero value is taken to  mean
         true.           The bits in a byte are numbered 0..7,  with  bit  0  be
ing  the  least         significant bit and bit 7 being the most significant bit
.             Where two byte (word) values are  stored  (in  tables  etc)  they 
 are         always stored with the  less  significant  byte  first  and  the  m
ore         significant byte second, unless a specific indication to the  contra
ry         is given. This is in accordance with the standard way the  Z80  store
s         words.             Tables and the like are always laid out with byte 0
  being  the  first         byte of the table. When the address of such a table 
is given  this  is         the address of byte 0 of the table unless otherwise i
ndicated.             When the computer is turned on (or when it  is  reset)  it
  completely         initializes itself before running any program. This initial
ization  is         known as early morning startup, abbreviated to EMS from now 
on.             1.6 Routine Documentation.           Each routine described in h
is manual has  entry  and  exit  conditions         associated with it. Where th
ere are other points of interest about the         routine these are normally gi
ven in a section after the entry and exit         conditions. Such points includ
e whether interrupts are enabled  and  a         fuller description of the param
eters and side effects of the routine.             There are two reasons for pro
viding this information. Firstly it tells         the use what will happen when 
the routine is called. Secondly it tells         the user what a replacement rou
tine is expected to do.             The entry conditions tell the caller of the 
routine what  the  routine         expects to be  passed  to  it.  When  calling
  a  routine  all  values         specified must be supplied. Values may only  b
e  left  out  where  the         routine documents that they are optional. When 
providing a replacement         routine to fit this interface only information t
hat is  specified  may         be used, although not all of it need be used.    
         The exit conditions tell the caller what  values  the  routine  passes 
        back and which processor registers re preserved.  Registers  that  are  
       documented as being corrupted may be changed by  the  routine  or  may   
      not. The user should not rely on  their  contents.  When  providing  a    
     routine to fit this interface it is extremely important that registers     
    documented as being preserved are indeed preserved and that the values      
   return are compatible with the original routine. Corrupting a register   P   
     or omitting a result will usually cause the system to fail,  often  in     
    subtle and unexpected ways.           AMSTRAD CPC464/664/6128 FIRMWARE      
                        page 1.7                     Often a routine will have d
ifferent exit conditions depending on  some         condition or other (usually 
whether it worked or not). In these  cases         the specific differences in t
he exit conditions  are  given  for  each         case and all conditions that r
emain the same irrespective of the  case         are given in a separate section
 (marked 'always').             There are abundant examples of routine interface
s in section 15 to 18.             1.7 Example of Patching a Jumpblock.         
    The following is an example of how the jumpblocks may be used. At this      
   stage many of the concepts introduced may be unfamiliar to the reader.       
  However, since altering  jumpblocks  is  an  important  technique  for        
 tailoring the system to a particular  purpose  the  example  is  given         
here. Later sections will explain the actions taken here.             Suppose an
 assembler program is being written that is intended to  use         the printer
 when it is finished. While this program is  being  written         it would sav
e time and paper if the program could be made to  use  the         screen instea
d of the printer. However, changing the program itself to         use the screen
 could introduce bugs when it is changed back  to  using         the printer. Wh
at is needed is a way of altering  the  action  of  the         firmware that dr
ives the printer - and this is what a RAM jumpblock is         for.             
The technique that  will  be  used  to  'connect'  the  printer  to  a         p
articular text window. This  can  be  achieved  by  writing  a  short         ro
utine to send the character to the screen and patching the entry  in         the
 jumpblock for sending characters to the printer, MC PRINT CHAR, so         that
 it jumps to this routine instead of its normal routine.             The substit
ute routine will have to obey the entry/exit conditions for         MC PRINT CHA
R. These can be found in  the  full  description  of  this         entry in sect
ion 15. Briefly they are as follows           MC PRINT CHAR                  Ent
ry conditions                              A contains character to print.       
             Exit conditions                              If the character was s
ent OK                                      Carry true.                         
     If the printer timed out                                      Carry false. 
                             Always                                        A and
 other flags corrupt.                                      All other registers p
reserved.           AMSTRAD CPC464/664/6128 FIRMWARE                            
  page 1.8                     The action of the substitute routine will  be  to
  select  the  screen         stream that the printer output is to appear on, to
 print the character         on the stream and then to  restore  the  stream  th
at  was  originally         selected. To do this the substitute routine  will  n
eed  to  call  the         routines  TXT  STR  SELECT  and  TXT  OUTPUT.  Once  
again  the   full         descriptions of these jumpblock entries can be found  
in  section  15.         The entry/exit conditions are as follows             TX
T STR SELECT                    Entry conditions                              A 
contains the stream number to select.                    Exit conditions        
                      A contains previously selected stream number.             
               HL and flags corrupt.                            All other regist
ers preserved.               TXT OUTPUT                    Entry conditions     
                         A contains character to print.                    Exit 
conditions                              All registers and flags preserved.      
       The code for the  substitute  routine  could  be  written  as  follows   
      (stream 7 has been chosen as the stream on which printer output is  to    
     appear)           PUSH HL         PUSH BC                  LD B,A          
             Save the character to print                  LD A,7                
       Printer stream number         CALL TXTSTRSELECT          Select the print
er stream         LD C,A                       Save the original stream number  
                LD A,B                       Get the character again         CAL
L TXTOUTPUT           P     Send it to the screen                  LD A,C       
                Get the original stream number         CALL TXTSTRSELECT        
  Reselect the original stream                  POP BC         POP HL         SC
F                          The character was sent OK         RET             AMS
TRAD CPC464/664/6128 FIRMWARE                              page 1.9             
        Note the following points               1/ MC PRINT CHAR preserves HL an
d BC. The routine above uses B  and  C         for temporary storage and HL is c
orrupted by TXT STR SELECT. HL and BC         are  therefore  pushed  and  poppe
d  to  preserve  them  through   the         substitute routine.               2
/ MC PRINT CHAR returns a success/fail indication in the carry  flag.         Si
nce the routine above can never fail it always sets the  carry  flag         to 
indicate success.               3/ The routine above does not change which text 
stream is selected. It         selects the stream it is going to print on and re
stores the previously         selected stream when it has printed the  character
.  The  firmware  is         written in such a way as to allow routines  to  res
tore  the  original         state when they finish if required.               To
 use the substitute routine it is necessary to patch it into  memory         and
 to change the jumpblock entry for MC PRINT CHAR  to  jump  to  it.         Assu
me that some memory at #AB00 has been reserved for the  substitute         routi
ne and that the routine has been  patched  into  memory.  The  MC         PRINT 
CHAR entry in the jumpblock is at location #BD2B (as can be seen         by insp
ecting section 13. 1.8). The three bytes of the entry should be         set to t
he instruction JP #AB00 by patching as follows                        #BD2B     
#C3                  #BD2C     #00                  #BD2B     #AB               
From now on all text sent to the printer will appear on the screen  on         s
tream 7. Of course, stream 7 should have its window set  so  that  it         do
es not interfere with any other stream using the screen.               This redi
rection will remain in force until  the  jumpblock  entry  is         restored. 
This can be achieved by patching the jumpblock back again or         by calling 
JUMP RESTORE or by causing an EMS  initialization  to  take         place by res
etting the system.                         AMSTRAD CPC464/664/6128 FIRMWARE     
                        page 1.10   section  14.  The         first and largest 
 jumpblock                 Preface.               The computers in the CPC range
  contain  ROMs  which  hold  the  BASIC         interpreter and the 'firmware'.
 The firmware  consists  of  low  level         routines responsible for driving
 the hardware,  handling  the  screen,         handling real-time events and oth
er  similar  functions.  This  manual         describes the firmware.           
    This manual is applicable to the full range of CPC machines 464, 664,       
  6128 and 464+DDI-1. The firmware in these machines is  not  identical.        
 All 464s contain V1.0 of the firmware, all 664s contain V1.1  and  all         
6128s contain V1.2. All firmware calls are  upwards  compatible,  that         i
s, any firmware call available in V1.0 is available in V1.1 and  V1.2         an
d any firmware call available in V1.1 is available in V1.2.  Upwards         com
patibility will  be  maintained  in  any  future  versions  of  the         firm
ware.               As stated above this manual relates only to the  firmware  s
ection  of         the ROMs. Other AMSOFT publications  describe  the  BASIC  in
terpreter         (though not at a system level)  and  the  various  implementat
ions  of         CP/M. However, the areas in which CP/M and the firmware  intera
ct  are         covered in this manual. Also, areas of the firmware that are  af
fected         by the addition of a disc interface are covered in this manual.  
                                                               AMSTRAD CPC464/66
4/6128 FIRMWARE              P                   PREFACE       The computers in 
the CPC range  contain  ROMs  which  hold  the  BASIC         interpreter andeve
l)  and  the  various  implementations  of         CP/M. However, the areas in w
hich CP/M and the firmware  interact  are         covered in this manual. Also, 
areas of the firmware that are  affected         by the addition of a disc inter
face are covered in this manual.                                                
                 AMSTRAD CPC464/664/6128 FIRMWARE                           The 
Contents.               1 The Firmware.               1.1  The Hardware.        
 1.2  The Division of the Firmware.         1.3  Controlling the Firmware.      
   1.4  The Jumpblocks.         1.5  Conventions.         1.6  Routine Documenta
tion.         1.7  Example of Patching a Jumpblock.               2 ROMs, RAM an
d the Restart Instructions.               2.1  Memory Map.         2.2  ROM Sele
ction.         2.3  The Restart Instructions.         2.4  RAM and the Firmware.
         2.5  Bank Switching.               3 The Keyboard.             3.1  Key
board Scanning.         3.2  Key Translation.         3.3  Characters from the K
eyboard.         3.4  Shift and Caps Lock.         3.5  Repeating Keys.         
3.6  Breaks.         3.7  Function Keys and Expansion Tokens.         3.8  Joyst
icks.               4 The Text VDU.             4.1  Text VDU Coordinate Systems
.         4.2  Streams.         4.3  Text Pen and Paper Inks.         4.4  Text 
Windows.         4.5  The Current Position and the Cursor.         4.6  Characte
rs and Matrices.         4.7  Character Output and Control Codes.               
AMSTRAD CPC464/664/6128 FIRMWARE                            Contents 1          
           The Graphics VDU.               5.1  Graphics VDU Coordinate Systems.
         5.2  The Current Graphics Position.         5.3  Graphics Pen and Paper
 Inks.         5.4  Graphics Write Mode.         5.5  Graphics Window.         5
.6  Writing Characters.         5.7  Drawing Lines.         5.8  Filling Areas. 
              6 The Screen.               6.1  Screen Modes.         6.2  Inks a
nd Colours.         6.3  Screen Addresses.         6.4  Screen Memory Map.      
         7 The Sound Manager.               7.1  The Sound Chip.         7.2  To
ne Periods and Amplitudes.         7.3  Enveloping.         7.4  Sound Commands.
         7.5  Sound Queues.         7.6  Synchronization.         7.7  Holding S
ounds.               8 The Cassette Manager.               8.1  File Format.    
     8.2  Record Format.         8.3  Bit Format.         8.4  The Header Record
.         8.5  Read and Write Speeds.         8.6  Cataloguing.         8.7  Rea
ding Files.         8.8  Writing Files.         8.9  Reading and Writing Files S
imultaneously.         8.10 Filenames.         8.11 Cassette Manager Messages.  
       8.12 Escape Key         8.13 Low Level Cassette Driving.             AMST
RAD CPC464/664/6128 FIRMWARE                            Contents 2              
       9 AMSDOS               9.1  Features         9.2  Filenames         9.3  
File Headers         9.4  Disc Organisation         9.5  Boot Sector         9.6
  AMSDOS Messages         9.7  BIOS Facilities Available to AMSDOS         9.8  
Store requirements         9.9  Extended Disc Parameter Blocks               10 
Expansion ROMs, Resident System Extensions and RAM Programs               10.1 R
OM Addressing.         10.2 The Format of an Expansion ROM.         10.3 Foregro
und ROMs and RAM Programs.         10.4 Background ROMs.         10.5 Resident S
ystem Extensions.         10.6 External Commands.         10.7 Examples.        
       11 Interrupts.               11.1 The Time Interrupt.         11.2 Extern
al Interrupts.         11.3 Nonmaskable Interrupts.         11.4 Interrupts and 
Events.         11.5 Interrupt Queues.                 12 Events               1
2.1 Event Class.         12.2 Event Count.         12.3 Event Routine.         1
2.4 Disarming and Reinitializing Events.                         AMSTRAD CPC464/
664/6128 FIRMWARE                            Contents 3                     13 T
he Machine Pack.               13.1 Hardware Interfaces.         13.2 The Printe
r.         13.3 Loading and Running Programs.               14 Firmware Jumpbloc
ks.               14.1 The Main Jumpblock.               14.1.1  Entries to the 
Key Manager.         14.1.2  Entries to the Text VDU.         14.1.3  Entries to
 the Graphics VDU.         14.1.4  Entries to the Screen Pack.         14.1.5  E
ntries to the Cassette Manager.         14.1.6  Entries to the Sound Manager.  P
         14.1.7  Entries to the Kernel.         14.1.8  Entries to the Machine P
ack.         14.1.9  Entries to the Jumper.         14.1.10 Further Entries.    
           14.2 Firmware Indirections.             14.2.1  Text VDU Indirections
.         14.2.2  Graphics VDU Indirections.         14.2.3  Screen Pack Indirec
tions.         14.2.4  Keyboard Manager Indirections.         14.2.5  Machine Pa
ck Indirections.         14.2.6  Further Indirections.             14.3 The High
 Kernel Jumpblock.         14.4 The Lower Kernel Jumpblock.             15 The M
ain Firmware Jumpblock.           16 The Firmware Indirections.           17 Ker
nel High Entries.           18 Low Entries to the Kernel.           19 AMSDOS 'B
IOS' Facilities           20 AMSDOS External Commands             AMSTRAD CPC464
/664/6128 FIRMWARE                            Contents 4                     App
endices             I        Key Numbering.             II       Key Translation
 Tables.             III      Repeating Keys.             IV       Function Keys
 and Expansion Strings.             V        Inks and Colours.             VI   
    Displayed Character Set.             VII      Text VDU Control Codes.       
      VIII     Notes and Tone Periods.             IX       The Programmable Sou
nd Generator.             X        Kernel Block Layouts.             XI       Th
e Alternate Register Set.             XII      Hardware and Hardware Variants   
          XIII     Hints, Tips and Workarounds.             XIV      Printer Tra
nslation Table.                                         AMSTRAD CPC464/664/6128 
FIRMWARE                            Contents 5   of the Firmwar         VII     
 Text VDU Control Codes.             VIII     Notes and Tone Periods.           
  IX       The Programmable Sound Generator.             X        Kernel Block L
ayouts.             XI       The Alternate Register Set.             XII      Ha
rdware and Hardware Variants             XIII     Hints, Tips and Workarounds.  
           XIV      Printer Translation Table.                2 ROMs, RAM and th
e Restart Instructions             The system has 32K of ROM and 64K of RAM  in 
 the  Z80's  64K  address         space. To allow this the ROM can be enabled or
 disabled  as  required.         Additional Expansion ROMs can  be  selected  gi
ving  up  to  4128K  of         program area.             All the Z80 restart in
structions, except for one, have  been  reserved         for system use. RST 1 t
o RST 5 are used to extend the instruction  set         by implementing special 
call and jump  instructions  that  enable  and         disable ROMs. RST 6 is av
ailable to the user.           2.1 Memory Map.             The memory map is com
plicated by the fact that into the Z80's  address         space of 64K bytes has
 been squeezed 64K bytes of RAM,  32K  bytes  of         ROM and provision for R
OM expansion  of  up  to  252*16K  (nearly  4M)         bytes. The address space
 is divided as follows                      Address          RAM                
       ROM                  #10000       #10000                                 
                                                                       Default S
creen                Upper ROMs                                   Memory        
            (bank switched)                  #C000      #C000                   
                                                       Stack, Firmware          
                 Data & Jumpblock                   #B100                       
                                                  Foreground Data               
    #AC00                                                                       
 -----------------                           Background Data   #504 bytes for AM
SDOS                          -----------------                  #              
                                                                                
                       Memory Pool                      #      #4000            
                                                                                
           Background Data                                                #     
                                                                                
   Lower ROM                                  Foreground Data                   
                             #0040  P                                           
                                                                                
         Firmware Area                                                 #0000    
  #0000                  AMSTRAD CPC464/664/6128 FIRMWARE                       
       page 2.1                     The size of the two background areas depend 
 on  the  background  ROMs         fitted to the machine (see section 9).       
    The upper foreground data area need not have its lower bound at  #AC00      
   but this is  the  default  setting  (as  used  by  BASIC).  The  lower       
  foreground data area need only be reserved if it is needed (this  area        
 is not used by BASIC and is set to zero length). The memory pool  left         
between the background data areas is also for the  foreground  program         t
o use (see section 9).           The 32K of on-board ROM is split into two secti
ons which  are  handled         separately. Henceforth  these  will  be  discuss
ed  as  if  they  were         separate ROMs. The firmware  resides  in  the  lo
wer  ROM.  The  BASIC         resides in the upper ROM. This upper ROM is bank s
witched so  that  up         to 252 expansion ROMs (see section 9) can replace  
it  in  the  memory         map.           2.2 ROM Selection.           There ar
e two mechanisms for switching ROMs in and out of the  address         space    
       a. ROM State.               The upper and lower ROMs may be enabled and  
disabled  separately.             When the upper ROM is enabled data  read  from
  addresses  between             #C000 and #FFFF is fetched from the ROM. Simila
rly, when the lower             ROM is enabled data read form addresses between 
#0000 and #3FFF is             fetched from the ROM. When the ROMs are disabled 
data  is  fetched             from RAM.               Note that the ROM state  d
oes  not  affect  writing  which  always             changes the contents of RAM
.           b. ROM Select.                 Expansion ROMs are supported  by  swi
tching  the  upper  ROM  area             between ROMs. Expansion ROMs  are  add
ressed  by  a  separate  ROM             select address byte implemented in I/O 
space. ROM select addresses             are in the range 0..251, providing for u
p to 252 expansion ROMs.                 When the machine is first turned on it 
selects ROM zero. This will             usually select the on board ROM,  but  a
n  expansion  ROM  may  be             fitted at this address, which will pre-em
pt the on-board ROM.               See section 9 for a description of the use of
 expansion ROMs.             2.3 The Restart Instructions.           The kernel 
supports the store map in a number of ways. In particular a         variety of f
acilities are  provided  to  handle  subroutine  addresses         extented to i
nclude ROM select and/or ROM state information.  Some  of         the  restart  
instructions  are  used  to  augment  the  existing  Z80         instruction set
. The other restarts are reserved.             AMSTRAD CPC464/664/6128 FIRMWARE 
                             page 2.2                     The firmware between #
0000 and #003F is set up so  that  the  restarts         operate whatever the cu
rrent ROM state is. The user should  not  alter         the contents of this are
a except as indicated in section 18.           The restarts are as follows. A fu
ller description of  their  operation         can be found in section 18.       
    a. The Extended Instruction Set.           LOW JUMP (RST 1)               RS
T 1 jumps to a routine in the lower 16K of memory. The two bytes             fol
lowing the restart are assumed to be a 'low address' - so RST 1             can 
be considered to be a three byte instruction, rather like a JP             instr
uction.               The top 2 bits of the 'low address' define the ROM  enable
/disable             state required the bottom 14 bits give the actual address (
in the             range #0000 to #3FFF) to jump to once the ROM  state  is  set
  up.             When the routine returns the ROM state is restored to its orig
inal             setting.               The firmware jumpblock, through which th
e firmware routines should             be called, makes extensive use  of  LOW  
JUMPs.  These  LOW  JUMPs             request the lower ROM to be enabled, so th
at the lower ROM may  be             disabled except when the firmware is active
.           SIDE CALL (RST 2)               RST 2 calls a  routine  in  an  asso
ciated  ROM.  I   P         t  has  a  very             specialised. A foregroun
d program (see section 9) may require more             than 16K of ROM. The side
 call mechanism allows for calls  between             two, three or four associa
ted  ROMs  without  reference  to  their             actual ROM select addresses
, provided that the ROMs are  installed             next to each other and in or
der.               The two bytes following the restart  instruction  give  the  
'side             address' of the routine to call - so the RST 2 can  be  consid
ered             to be a three byte instruction, rather like  a  CALL  instructi
on.             The top 2 bits of the 'side address' specify  which  of  the  fo
ur             ROMs to select the bottom 14 bits, when added to #C000, give  the
             actual routine address. The upper ROM is enabled, the lower ROM is 
            disabled. Both ROM state and the ROM select are restored to  their  
           original settings when the routine returns.           FAR CALL (RST 3
)               RST 3 calls a routine anywhere in memory, in RAM or  in  any  RO
M.             The two bytes following the restart are assumed to be the  addres
s             of a 'far address'. The 'far address'  is  a  three  byte  object,
             which takes the form               Bytes 0..1       Actual address 
of routine to call.             Byte  2          ROM select/state required.     
          The ROM select/state byte may take the following values             0.
.251           Select the upper ROM at this ROM select address.                 
              Enable the upper ROM, disable the lower ROM.           AMSTRAD CPC
464/664/6128 FIRMWARE                              page 2.3                     
    252..255          No change of ROM select, enable/disable ROMs  as          
                     follows                                 252 Enable upper RO
M, enable lower ROM.                               253 Enable upper ROM, disable
 lower ROM.                               254 Disable upper ROM, enable lower RO
M.                               255 Disable upper ROM, disable lower ROM.      
         Note that the  'far  address'  is  not  itself  contained  in  the     
        'instruction', but is pointed at. This is because the  ROM  select      
       address will depend on the particular order in which the user  has       
      chosen to install expansion ROMs and must be  established  at  run        
     time.               Both the ROM state and  the  ROM  select  are  restored
  to  their             original settings when the routine returns.           RA
M LAM (RST 4)               RST 4 reads the bytes from RAM at the  address  give
n  by  HL.  It             disables  both  ROMs  before  reading  and  restores 
  the   state             afterwards. This 'instruction' avoids the user  having
  to  put  a             read routine into the central 32K of  RAM  to  access  
RAM  hidden             under a ROM.               Writing to a memory location 
always changes the  contents  of  RAM             whatever the ROM enable state.
           FIRM JUMP (RST 5)               RST 5 turns on the lower ROM and jump
s to a routine. The two bytes             following the restart are assumed to b
e the address to jump  to  -             so RST 5 can be considered to be a thre
e byte instruction,  rather             like a JP instruction. The lower ROM is 
enabled before jumping  to             the routine and is disabled when the rout
ine returns. The state of             the upper ROM is left unchanged throughout
.           b. The Other Restarts.           RESET (RST 0)               RST 0 r
esets the system as if the machine has just been turned on.           USER RESTA
RT (RST 6)               RST 6 is available for the user. It could be used  to  
extend  the             instruction set in the same way  that  other  restarts  
have  been             used, or it could be used for another purpose such as a b
reakpoint             instruction in a debugger.               Locations #0030 t
o #0037 inclusive in RAM may be patched in  order             to gain control of
 the restart. If the lower ROM is  enabled  when             the restart is exec
uted then the  code  in  ROM  at  this  address             causes the ROM state
 to be saved in location #002B. Then the lower             ROM is disabled and t
he firmware jumps to location #0030  in  RAM.             If the lower ROM is di
sabled  then  the  restart  calls  #0030  as             normal for this Z80 res
tart instruction.             AMSTRAD CPC464/664/6128 FIRMWARE     P            
               page 2.4                     INTERRUPT (RST 7)                 RS
T 7 is reserved for interrupts (see section 10), it must not  be             exe
cuted by a program.             2.4 RAM and the Firmware.             The ROM st
ate should be  transparent  to  the  user.  If  the  current         foreground 
program (see section 9) is in ROM then the normal ROM state         is to have t
he upper ROM enabled and the lower ROM  disabled.  If  the         current foreg
round program is in RAM then the normal state is to  have         both ROMs disa
bled. These states allow  the  foreground  program  free         access to the m
emory pool. When a firmware routine is called the lower         ROM is enabled a
nd the upper ROM is usually disabled. This allows  the         firmware free acc
ess to the default screen memory  (but  not  all  the         memory pool). When
 the firmware  routine  returns  the  ROM  state  is         automatically resto
red to what it was.             The cases where the ROM state is important are  
         a. Stack             The hardware stack should never  be  below  #4000,
  otherwise  serious         confusion will occur when the lower ROM is enabled 
and  the  stack  is         used - for example, when interrupts occur or the fir
mware is called.             Similarly, it is inadvisable to set the stack above
 #C000 unless it is         certain that the upper ROM is never enabled when the
 stack is in use.             The system provides a stack area immediatley below
 #C000 which is over         256 bytes long. This should be adequate for most pu
rposes.           b. Communication with the firmware.           Most firmware ro
utines take their parameters  in  registers.  However,         some use data are
as in  memory  to  pass  information.  Most  firmware         routines that use 
data areas in memory  read  those  directly  without         using RAM LAMs (see
 above)  or  the  equivalent.  These  routines  are         affected by the ROM 
state and the ROM select. They will read data from         a ROM if the ROM is e
nabled  and  the  routine  is  given  a  suitable         address. (Note that th
e jumpblock disables  the  upper  ROM  when  the         firmware is called). Ot
her firmware routines that use  data  areas  in         memory always read from 
RAM. They are unaffected by the ROM state  and         the ROM select.          
   Routines that always access RAM will mention this in  the  description       
  of the routine. Other routines may be assumed to be  affected  by  the        
 ROM state. In particular the various data blocks used  by  the  Kernel         
must lie in the central 32K of RAM for the Kernel to be  able  to  use         t
hem.           AMSTRAD CPC464/664/6128 FIRMWARE                              pag
e 2.5                     c. Communication between upper ROMs.               Pro
grams in upper ROMs may call routines  in  other  ROMs,  using  the         vari
ous Kernel Facilities. There is  no  provision  in  the  firmware,         howev
er, for a program in one ROM to access constants in another.               The  
majority  of  firmware  routines  are  called  via  the  firmware         jumpbl
ock, which starts at location #BB00, in the firmware  RAM  area.               T
he Kernel routines associated with the memory map are called via  one         or
 two other jumpblock areas the LOW area between  #0000  and  #003F,         and 
the HIGH area  starting  at  #B900.  All  of  these  routines  and         jumpb
locks are copied out of the lower ROM into the firmware RAM  area         when t
he Kernel is initialized. Thus they work  independently  of  the         ROM sta
te.               2.5 Bank Switching.               The ULA in the CPC6128 inclu
des circuitry for bank switching 128K  RAM         into the 64K memory map descr
ibed in section 2.1.  The  bank  switched         RAM replaces the RAM in the me
mory map at #0000..#3FFF,  #4000..#7FFF,         #8000..#BFFF and #C000..#FFFF. 
The user can select an organization  by         calling KL BANK SELECT.         
      The blocks available in each organization are as follows                  
      Organization        Block accessed at memory address                      
                #0000     #4000     #8000     #C000                       0     
           0         1         2         3                       1              
  0         1         2         7                       2                4      
   5         6         7                       3                0         3     
    2         7                    P     4                0         4         2 
        3                       5                0         5         2         3
                       6                0         6         2         3         
              7                0         7         2         3               Dur
ing EMS  the  CPC6128  selects  organization  0  and  this  is  the         orga
nization normally associated with the firmware. Note that blocks 0         and 2
 contain firmware variables, firmware jumpblocks and  the  stack.         All th
ese need to be in their correct places for the firmware to run.             AMST
RAD CPC464/664/6128 FIRMWARE                              page 2.6    rt Instruc
tions             The system has 32K of ROM and 64K of RAM  in  the  Z80's  64K 
 a         3               During EMS  the  CPC6128  selects  organization  0  a
nd  this  is  the         organization normally associated with the firmware. No
te that blocks 0         and 2 contain firmware variables, firmware jumpblocks a
nd  the  stack.                      The documentation for a number of  firmware
  routines  specifies  that         data blocks passed to them should be in the 
 central  32K  memory.  In         most cases it does not matter  which  blocks 
 are  switched  into  the         memory map at these places, however, the Kerne
l accesses  data  blocks         passed to it (e.g. ticker blocks or RSX  comman
d  tables)  at  various         times (e.g. during interrupts or  event  process
ing)  and  it  has  no         control over the bank switching at such times. It
 is up to the user to         ensure that  the  Kernel  is  only  passed  data  
blocks  that  remain         accessable. The simplest solution to this problem i
s  to  ensure  that         all Kernel data blocks are located  in  block  2  (b
etween  #8000  and         #BFFF).               Organizations 4..7 are the firm
ware  organization  with  a  new  block         switched into the memory map at 
#4000. These organizations can be used         to access programs or data stored
 in blocks 4..7.               Organizations 1..2 are used by CP/M Plus and are 
not  really  suitable         for general use. In particular, if organization 2 
is  selected  it  is         necessary to patch a progam into RAM at #0038 to ca
tch interrupts  and         to bank switch back to a more normal organization  (
e.g.  organization         1) to run the standard interrupt code.               
Organization 3 is also used by CP/M Plus but it is of  interest  since         i
t has the RAM usually used for the screen located at #4000  where  it         ca
n be accessed without disabling the upper ROM.               Bank switching has 
no effect on the CRTC. Base addresses #0000, #4000,         #8000 and #C000 corr
espond to the screen being in blocks 0, 1, 2 and 3         respectively. It is n
ot possible to locate the screen in blocks  4..7.         However, the firmware 
routines for accessing  the  screen  memory  are         affected by bank switch
ing. For example, if a base address of #C000 is         set in organization 3 th
en the firmware will be unable to  access  the         screen memory since block
 1 is not in the memory map. (See section 6.4         for a full description of 
the screen memory map).               Organizations 4..7 can be used to set up a
 complete screen in  one  go         by using SCR SET POSITION to make the firmw
are  write  to  the  memory         location at #4000 without sending a new base
  address  to  the  screen         hardware. Then, when the screen has been  fin
ished,  the  contents  of         this block can be quickly copied into the bloc
k actually being used by         the CRTC (using KL DIR perhaps). For example, a
 title screen could  be         set up and bank switched out of the way and then
 switched back in  and         copied at a later date when it is wanted.        
             AMSTRAD CPC464/664/6128 FIRMWARE                              page 
2.7  AP-2  $$$ ROMs, RAM and the Restart Instructions             The system has
 32K of ROM and 64K of RAM  in  the  Z80's  64               3 The Keyboard.    
         The Key Manager is the pack associated  with  the  keyboard.  All  the 
        attributes of the keyboard are generated and  controlled  by  the  Key  
       Manager. These attributes include  repeat  speed,  shift  and  control   
      keys, function keys  and  key  translation.  The  joysticks  are  also    
     scanned by the Key Manager.             The Key Manager has three levels of
 operation. The lowest level  scans         the keyboard, the middle level con  
 P         verts the  key  pressings  into  key         values and the top level
 converts the key values into characters.  The         user may access the Key M
anager at whichever level is most appropriate         for a given program. It is
 usually unwise, however, for a  program  to         mix accesses at different l
evels.           3.1 Keyboard Scanning.             The  keyboard  is  completel
y  software  scanned.  This  scan   occurs         automatically every fiftieth 
of a  second  (see  KM  SCAN  KEYS).  The         keyboard hardware is read and 
a bit map noting which keys are  pressed         is constructed. This bit map is
 available for testing if specific keys         are pressed (see KM TEST KEY). A
s the bit map is constructed keys that         are newly pressed are  noted  and
  markers  are  stored  in  a  buffer         until needed. If no newly pressed 
keys are found  then  the  last  key         pressed may be allowed t repeat if 
 it  is  still  down  (see  section         3.5). The keyboard is 'debounced' in
  that  a  key  must  be  released         for two consecutive scans before it  
is  marked  as  released  in  the         bit map.  This  'debounced'  hides  mu
ltiple  operations  of  the  key         switch as it opens or closes.          
   At this stage  only  four  keys  are  treated  specifically.  The  two       
  shift keys and the control key  are  not  stored  in  the  key  buffer        
 themselves. Instead, when any other marker is  stored  the  states  of         
the shift and control keys are  noted  and  put  into  the  buffer  as         w
ell. The escape key  generates  a  marker  as  normal  but  may  also         ha
ve other  effects  depending  on  whether  the  break  mechanism  is         arm
ed (see section 3.6).             There is a problem with scanning the keyboard.
 If three  keys  at  the         corners of a rectangle in the key matrix are al
l pressed at  the  same         time then the key at the fourth corner appears t
o be pressed as  well.         There is no way to avoid this problem  as  it  is
  a  feature  of  the         keyboard hardware. All key combinations used by th
e firmware (and  the         BASIC) have been especially designed to avoid this 
effect.           3.2 Key Translation.           When the user asks for a key (K
M WAIT KEY or KM READ KEY) the next key         pressed marker is read from the 
key buffer. The marker is converted to         a key number and this is looked u
p in one  of  the  three  translation         tables.           AMSTRAD CPC464/6
64/6128 FIRMWARE                              page 3.1                     Which
 table is used depends on whether the shift and control keys were         presse
d when the key was pressed. One table is  used  if  the  control         key was
 pressed, another is used  if  either  shift  key  was  pressed         but  con
trol  was  not,  the  third  is  used  if  neither  shift  nor         control k
eys were  pressed.  The  contents  of  these  tables  can  be         altered by
 the user as required (by calling KM  SET  CONTROL,  KM  SET         SHIFT and K
M SET TRANSLATE respectively).           The value extracted from the table may 
be a system token, an expansion         token or a character. Expansion tokens a
nd characters are used by  the         top level of the Key Manager (see 3.3 bel
ow) an are passed up from the         middle level when they are found in a tabl
e. There  are  three  system         tokens, which are obeyed immediately they a
re found in a table.  After         obeying the token  the  next  marker  is  re
ad  from  the  buffer  and         translated.           The default translation
 tables are described in Appendix II.           The immediately obeyed System to
kens are                    a. Ignore (#FF)                  The key pressed is 
to be ignored.                  b. Shift lock (#FE)                  The shift l
ock is to be toggled (turned on if it is currently                  off and turn
ed off if it is on).                  c. Caps lock (#FD)                    The 
caps lock is to be toggled (turned on if it  is  off  and                  off i
f it is on).           3.3 Characters from the Keyboard.         When the user a
sks the top level for a character (KM WAIT CHAR  or  KM         READ CHAR) a key
 is fetched from  the  middle  level.  If  this  is  a         character (#00..#
7F or #A0..#FC) then it is passed to the user. If  it         is  one  of  the  
32  expansion  tokens  (#80..#9F)  then  the  string         associated with the
 token is looked up. The characters in this  string         P  are passed to the
 user one at a time with each request for a character         until the end of t
he string is reached.           There is only one character with a special meani
ng at this level. This         is character #EF which  is  produced  when  press
ing  the  escape  key         generates a break event (see section 3.6). It has 
no  effects,  it  is         merely a marker for the place in the buffer where a
  break  event  was         generated. It is intended to be used to allow  all  
characters  before         the break to be discarded. This character  is  not  g
enerated  by  the         translation tables and thus cannot be changed by alter
ing them.           A single 'put back' character is supported. When the user pu
ts back  a         character this character will be returned by the next call to
 the  top         level of the Key Manager. This is intended for use  by  progra
ms  that         need to test the next character to be read from the  keyboard  
without         losing it (when processing breaks perhaps).           In V1.1 fi
rmware it is possible to call KM FLUSH to discard any unused         or unwanted
 characters so that subsequent calls to KM READ CHAR or  KM         READ KEY wil
l not return values from a previous input. The same effect         can be achiev
ed in V1.0 Firmware by repeatedly calling  KM  READ  CHAR         until it retur
ns with carry false to indicate that there are  no  more         characters avai
lable.         AMSTRAD CPC464/664/6128 FIRMWARE                              pag
e 3.2                     3.4 Shift and Caps Lock.           a. Shift lock      
              When  shift  lock  is  engaged  then  the  keys  pressed  are     
             translated as if a shift key is pressed.                    The shi
ft lock is toggled by a stream token (see  3.2  above)                  which is
 normally generated by pressing CTRL and CAPS LOCK.           b. Caps lock      
              When caps lock is engaged  then  alphabetic  characters  read     
             from  the  keyboard  are  converted  to  their   upper   case      
            equivalents. This case conversion  is  applied  be  expansion       
           tokens are expanded and so expansions are not capitalised.           
         The caps lock is toggled by a system token  (see  3.2  above)          
        which is normally generated by pressing  CAPS  LOCK  (without           
       control).           In V1.1 firmware it is possible to set the state of t
he  locks  as  if         the SHIFT or CAPS LOCK keys had been pressed by callin
g KM SET LOCKS.           3.5 Repeating keys.           There is a table which t
he user can alter as desired,  that  specifies         which keys are allowed to
 repeat when held down (see KM  SET  REPEAT).         The default setting for th
is  table  is  described  in  Appendix  III.         Briefly, the default is to 
allow all keys to repeat  except  the  ESC,         TAB CAPS LOCK, SHIFT, ENTER 
and CTRL keys  and  the  12  keys  in  the         numeric keypad (the function 
keys).           The speed at which keys repeat and the delay before the  first 
 repeat         can be set by the user (see KM SET DELAY). The default speed  pr
oduces         up to 25 characters a second with a 0.6 second start up delay.   
        A key is allowed to repeat if the following conditions are satisfied    
                1/ The appropriate time has passed since the  key  was  first   
               pressed or it last repeated.                    2/ The key is sti
ll pressed.                    3/ No other key has been pressed  since  the  key
  was  first                  pressed.                    4/ The key is marked a
s  allowed  to  repeat  in  the  repeat                  table.                 
   5/ There are no keys stored in the key buffer.           Condition 5 above me
ans that the repeat speed and start up  delay  set         the maximum speed at 
which a key is allowed to repeat. If a program is         slow about removing ke
ys from the buffer then the generation  of  keys         will adjust itself to t
his. Thus it  is  impossible  to  get  a  large         number of keys stored in
 the buffer simply by holding a key pressed.             AMSTRAD CPC464/664/6128
 FIRMWARE                              page 3.3                     3.6 Breaks. 
          Breaks occur when the keyboard scanner detects that  the  ESC  key  is
         pressed. When the escape key is found to be pressed the indirection KM 
        TEST BREAK is called to deal with the break. The default  setting  for  
       this routine tests wh  Pether the SHIFT, CTRL and ESC keys and no  others
         are pressed. If so the system is  reset  (by  executing  and  RST  0), 
        otherwise the break mechanism is invoked.             It the break mecha
nism is disarmed then no action is taken other  than         the normal insertio
n of the marker for the escape  key  into  the  key         buffer. If the break
 mechanism is armed then two additional operations         take place. Firstly, 
a special marker is placed into  the  key  buffer         that will generate cha
racter #EF when it is found (irrespective of the         translation tables).  T
his  is  intended  to  be  used  to  allow  the         characters which were in
 the buffer before the break  occurred  to  be         discarded. Secondly, the 
synchronous break event is 'kicked'.             The break mechanism can be arme
d or disarmed at any time  (by  calling         KM ARM BREAK or KM DISARM BREAK)
. The default state is disarmed.  When         a break is detected the  mechanis
m  is  disarmed  automatically  which         prevents multiple breaks from occu
rring.             The method BASIC uses to handle breaks should serve  as  a  m
odel  for         other programs. BASIC's action is as follows                  
  The break mechanism is armed. After  each  BASIC  instruction                 
 the synchronous event queue is polled and if a break event is                  
found (because it has been kicked  as  explained  above)  the                  b
reak event routine is run.                    The break event routine stops soun
d generation  (SOUND  HOLD)                  and then it discards all characters
 typed  before  the  break                  occurred by reading characters from 
 the  keyboard  (KM  READ                  CHAR) until either the buffer is empt
y  or  the  break  event                  marker (character #EF) is found. BASIC
 then turns the  cursor                  on (TXT CUR ON) and waits for the next 
character to be  typed                  (KM WAIT CHAR).                    If th
e next character is the escape token  (character  #FC  -                  the de
fault value generated by the ESC key) then a  flag  set                  to make
 BASIC abandon execution (or run the user's  ON  BREAK                  GOSUB su
broutine) and the break event routine returns.                    If the next ch
aracter is any character other than escape then                  the break will 
be ignored. If it is any character other  than                  space then this 
is 'put back' (KM CHAR  RETURN).  Before  the                  event routine ret
urns the cursor is turned off (TXT CUR OFF),                  sound generation i
s restarted (SOUND CONTINUE) and the  break                  mechanism is rearme
d. BASIC then continues as if nothing  had                  happened.           
  When reading or writing from the cassette the ESC key is handled in  a        
 different manner which is described in section 8.12           AMSTRAD CPC464/66
4/6128 FIRMWARE                              page 3.4                     3.7 Fu
nction Keys and Expansion Tokens.               The Key Manager allows for 32 ex
pansion tokens (values #80..#9F) which         may be placed in the key translat
ion tables. Each token is  associated         with a string which is stored in t
he expansion buffer.               When the user asks the top level for a charac
ter a key is fetched from         the middle level. If this key is a character  
it  is  passed  straight         back. However, if it is an expansion token then
 the string  associated         with the token is looked up. The characters in t
his string are  passed         out one at a time with each request for a charact
er until the  end  of         the string is reached.  Values  #80..#9F  and  #EF
,  #FD..#FF  in  the         expansion string are treated as characters and  are
  not  expanded  or         obeyed.               The user may set the string as
sociated with an expansion token (see KM         SET EXPAND) and may cause any k
ey  on  the  keyboard  to  generate  an         expansion token. The default set
tings for the expansion tokens and the         keys with which they are normally
 associated are given in Appendix IV.         The user may also set the size and
 location of  the  expansion  buffer         (see KM EXP BUFFER) the default buf
fer is at least 100 bytes long.               3.8 Joysticks.               There
 may be two joysticks connected to the  system.  These  are  both         scanne
d in the same way as keys on the keyboard.  Indeed,  the  second         joys  P
tick occupies the same locations in  the  key  matrix  as  certain         other
 keys and is  indistinguishable  from  then.  The  state  of  the         joysti
ck can be determined by calling the routine KM GET JOYSTICK.               Becau
se the joysticks are scanned like keys the pressing  of  joystick         button
s can be  detected  like  any  other  key.  Firstly,  individual         directi
on or buttons can be tested in the key  bit  map  (see  section         3.1) by 
calling KM TEST KEY. Secondly, the joystick  buttons  generate         character
s when they are pressed (providing the translation tables are         set suitab
ly) and these characters can be detected. The major  problem         with this l
atter method is that the rate of generation  of  characters         depends on h
ow fast the keyboard is set to repeat. If the repeat speed         in increased 
to make  the  joystick  more  responsive  then  then  the         keyboard may b
ecome impossible to use.               See Appendix I for the numbering of the k
eys and joystick buttons  and         see Appendix II for the default translatio
n tables.             AMSTRAD CPC464/664/6128 FIRMWARE                          
 page 3.5  the pack associated  with  the  keyboard.  All  the         attribut 
characters         depends on how fast the keyboard is set to repeat. If the rep
eat speed         in increased to make  the  joystick  more  responsive  then  t
hen  the         keyboard may become impossible to use.               See Append
ix I for the nu               4 The Text VDU.             The Text VDU is  a  ch
aracter  based  screen  driver.  It  controls  8         different streams each 
of which can have an area of  screen  allocated         to it (a window). The Te
xt VDU allows characters to be written to  the         screen and read from the 
screen. It also treats  certain  'characters'         as 'control codes' which c
an have various  effects,  from  moving  the         cursor to setting the colou
r of an ink.             4.1 Text VDU Coordinate System.             The Text VD
U uses two  coordinate  systems  -  logical  and  physical.         Generally th
e user specifies positions to  the  Text  VDU  in  logical         coordinates. 
Physical coordinates are used internally and occasionally         by the user to
 specify positions to the Text  VDU.  Both  systems  use         signed 8 bit nu
mbers and work in character positions.  Each  character         position is 8 pi
xels (dots) wide and 8 pixels high.  This  means  that         the position of a
 coordinate on the screen  depends  upon  the  screen         mode.             
Physical coordinates have columns running from left to right and  rows         r
unning top to bottom. The character position at the top  left  corner         of
 the screen is row 0, column 0.             Logical coordinates are similar to p
hysical  coordinates  except  that         the character position at the top lef
t corner of the  text  window  is         row 1, column 1.             4.2 Strea
ms.             The Text VDU has facilities for handling up to 8 streams at once
. Each         stream has an independent state (although some facilities  are  s
hared         and thus affect all streams  when  altered).  The  features  that 
 are         stream dependent are                    VDU enable.                
  Cursor enable (enable or disable, on or off).                  Cursor position
.                  Window size.                  Pen and paper inks.            
      Character write mode (opaque or transparent).                  Graphics ch
aracter write mode.           The features that affect all streams are          
          Character matrices.                  Control code buffer.             
     Text VDU indirections.                  Screen mode.           AMSTRAD CPC4
64/664/6128 FIRMWARE                              page 4.1                     A
ll these features are explained in detail in the sections below.           At an
y time, the stream which is currently  selected  may  be  changed         withou
t adverse eff  Pects provided that the control code buffer  is  not         in u
se (see section 4.7 for further explanation). A stream will remain         selec
ted until another stream is selected. This means that  a  program         need n
ot know which stream it is using.           The default stream, selected at EMS,
 is stream 0.           BASIC  extends  the  stream  concept  to  include  the  
 printer   and         cassette/disc files. This extension is not part of the fi
rmware.           4.3 Text Pen and Paper Inks.           Each stream has a pen a
nd a paper ink associated with it. The text pen         ink is used to set the f
oreground pixels in  characters  (see  section         4.6). The text paper ink 
is used  to  set  the  background  pixels  in         characters and to clear th
e text window.           The pens and papers can be set to any ink that is valid
 in the current         screen mode (see section 6.1). The default setting for  
a  stream  has         the paper set to ink 0 and the pen set to ink 1.  Changin
g  a  pen  or         paper ink does not change the screen it merely alters how 
 characters         will be written in the future.           4.4 Text Windows.  
       Each stream  has  a  text  window  associated  with  it.  This  window   
      specifies the area of the screen where  the  stream  is  permitted  to    
     write characters. This  allows  different  streams  to  use  different     
    portions of the screen without interfering with each other.           Window
s are trimmed so that they fit within the current screen  (whose         size va
ries with the screen mode, see section 6.1). The smallest  size         a window
 allowed is 1 character wide and 1 character high.           Before writing to t
he screen the position to write is  forced  to  lie         inside the window (s
ee section 4.5 below). This may cause  the  window         to roll. Other operat
ions, such as obeying certain control codes  also         cause the write positi
on to be forced inside the window.           A text window which does not cover 
the whole screen is rolled  by  the         firmware copying areas of screen mem
ory around. There is no  alternate         method available. This makes rolling 
large windows a fairly  consuming         process.           A text window which
 covers the whole screen is  rolled  by  using  the         hardware rather than
 copying areas of memory. The offset of the  start         of the screen in the 
screen memory can be set (see  section  6.4).  By         changing this offset b
y +80 or -80 the whole screen can be  rolled  up         or down by a line of ch
aracters.           It is obviously a good idea to prevent windows  that  are  b
eing  used         from overlapping. If they are allowed to overlap then the  po
rtion  in         multiple use will merely contain whatever  was  written  to  i
t  last.         There is no precedence of windows one over another. A window oc
cupying         the whole screen will overlap the other window and so if  this  
window         is rolled it will move the contents of the other windows.        
   AMSTRAD CPC464/664/6128 FIRMWARE                              page 4.2       
              The default windows, set up at EMS and  after  changing  screen  m
ode,         cover the whole screen. All eight windows overlap.           4.5 Th
e Current position and the Cursor.           Each stream has a current position 
associated with it. This  is  where         the next character to be printed on 
 the  screen  is  expected  to  be         placed. However, if, when a character
 is to be  printed,  the  current           position is found to lie outside the
 text window  then  it  is  forced         inside. The following steps are appli
ed in turn to force  the  current         position inside the window            
        1/ If the current position is left of the edge of the  window           
       then it is moved to the right edge of the window and  up  one            
      line.                    2/ If the current position is right of the right 
edge of  the                  window then it is moved to the left edge of  the  
window  and                  down one line.                    3/ If the current
 position is now above the top line  of  the                  window then it is 
moved to the top line of the window and the                  contents of the win
dow are rolled down one line.                    4/ If the current position is n
ow below the  bottom  line  of                  the window then it is moved to t
he bottom line of the  window                  and the content  Ps of the window
 are rolled up one line.           When the cursor is enabled, the current  posi
tion  is  marked  by  the         cursor blob. However, before placing the curso
r blob  on  the  screen,         the current position is forced to lie inside th
e current  window  just         as it is before a character is placed on the scr
een.  This  may  cause         the current position to move.           If the cu
rsor is disabled then the current position  may  lie  outside         the window
 and it will not be forced  inside  the  window  until,  for         example, a 
character is printed.           The current position can be  changed  directly  
(by  calling  TXT  SET         CURSOR, TXT SET ROW or TXT SET COLUMN) or by send
ing control codes  to         the Text VDU. The location the current position is
  moved  to  is  not         forced inside the window immediately, but only when
 the window  is  to         be written to, as described above. This allows the c
urrent position to         be changed by moving via a position outside the windo
w, if required.           There are two ways to disable the cursor and prevent t
he  cursor  blob         from appearing on the screen. The first, cursor  on/off
,  is  intended         for use by systems programs. This is used in BASIC,  for
  example,  to         hide  the  cursor  unless  input  is  expected.  The  sec
ond,   cursor         enable/disable, is intended for use by the user. The curso
r blob  will         only be placed on the screen if it is both on and enabled. 
            In  V1.1  firmware  it  is  possible  to   interrogate   the   curre
nt         enable/disable states of the VDU and cursor  for  the  current  strea
m         using TXT ASK STATE.             AMSTRAD CPC464/664/6128 FIRMWARE     
                         page 4.3                   The cursor blob is normally 
an inverse patch.  The  character  at  the         cursor position is displayed 
with the text pen and paper ink reversed.         This makes it easy to restore 
 the  original  form  of  the  character         position if the cursor is moved
. It is possible for the user to  alter         the form of the cursor blob, if 
required, by changing the indirections         TXT DRAW CURSOR and TXT UNDRAW CU
RSOR.           4.6 Characters and Matrices.         A character is displayed on
 the screen in an area 8  pixels  (dots  on         the monitor) wide and 8  pix
els  high.  Thus  the  maximum  number  of         characters on the screen depe
nds upon the screen mode, (see section 6.         1). Each character has a  matr
ix  which  is  an  8  byte  vector  that         specifies the shape of the char
acter. The first byte  of  the   vector         refers to the top line of the ch
aracter  and  the  last  byte  to  the         bottom line of the character. The
 most significant bit of  a  byte  in         the vector refers to the leftmost 
pixel on a line of the character and         the least significant bit refers to
 the rightmost pixel on a  line  of         the character. If a bit in the matri
x is set then the pixel is in  the         foreground. If a bit is clear then th
e pixel is in the background.           A foreground pixel in the character is a
lways set to the pen ink.  The         treatment of a background pixel depends o
n the character write mode of         the VDU. In the default mode, opaque mode,
 background pixels  are  set         to the paper ink. There is another mode, tr
ansparent  mode,  in  which         the background pixels are not altered. Thus 
in transparent  mode,  the         character is written over the top  of  the  c
urrent  contents  of  the         screen. This is useful for annotating pictures
 or generating composite         characters.           The Text VDU is capable o
f printing 256 different characters, although         special effort is required
 to print the first 32 characters which  are         usually interpreted as cont
rol codes. The matrices for the  characters         are normally stored in the R
OM but the user may arrange for any number         of the characters to have mat
rices stored in RAM where they  may  then         be altered. The default settin
g, at EMS, is to have all  the  matrices         in ROM. (BASIC takes special ac
tion during its own  initialization  to         create 16 'user defined'  matric
es.)  The  default  character  set  is         described in Appendix V1.        
   When the user sets up a table of user defined matrices, by calling TXT       
  SET M TABLE, it is  initialized  with  the  current  settings  of  the        
 matrices from ROM or RAM. This m  Peans that extending  that  table  does      
   not alter the  current  matrices.  Contracting  the  table  will  make       
  the characters lost revert to their default matrice in ROM.           When cha
racters are read from the screen (by calling (TXT RD CHAR) the         pixels on
 the screen are converted to the form of a  matrix.  This  is         compared w
ith the current character matrices to find  which  character         it is. This
 means that changing the character matrices or altering the         screen may m
ake a character unrecognisable,  in  particular,  changing         the pen or pa
per ink  can  cause  confusion.  Usually  these  problems         result in the 
character appearing to be a space (character #20) and so         special precaut
ions are taken to avoid generating spaces - after  some         ink changes real
 spaces may be read as block graphics  characters  #80         or #8F.          
 To allow the user to change how characters are  written  to  and  read         
from the screen, the indirections TXT WRITE CHAR and TXT  UNWRITE  are         p
rovided.           AMSTRAD CPC464/664/6128 FIRMWARE                             
 page 4.4                     4.7 Character Output and Control Codes.           
The main character output routine for the Text VDU is TXT OUTPUT. This         o
beys control codes (character 0..31) and prints all other characters.         Ch
aracters  sent  to  TXT  OUTPUT  pass  through  various  levels   of         ind
irection and can be delt with by various output routines.           TXT OUTPUT u
ses the TXT OUT ACTION indirection to sort out whether the         character is 
a printing character, is a control code to be  obeyed  or         is the paramet
er of a control code.           TXT OUT ACTION normally calls TXT WRITE CHAR to 
 print  characters  on         the screen. However, if the graphics character wr
ite mode is  selected         then characters are printed using the  Graphics  V
DU  character  write         routine (see 5.6 below.) This mode can be selected 
on a  character  by         character basis using a control code or on all  char
acters  sent  (see         TXT SET GRAPHIC).  When  graphic  character  write  m
ode  is  selected         control codes are not obeyed but are printed by the  g
raphics  routine         instead.                  TXT OUT ACTION deals with a c
ontrol  code  in  the  following                  manner                    1/ T
he code is stored  at  the  start  of  the  control  code                  buffe
r.                  2/ The code is looked up in the control code  table  to  fin
d                  out how many parameters it requires.                    3/ If
 no parameters are required go directly to step 5.                    4/ If one 
or more parameters are required the TXT OUT  ACTION                  returns but
 the next characters sent to it are added  to  the                  control code
 buffer rather than being printed or obeyed. This                  continues unt
il sufficient  parameter  characters  have  been                  received.     
               5/ The code is looked up in the control code table to get the    
              address of the routine to call to perform  the  control  code     
             and this routine is then executed.                    6/  The  cont
rol  code  buffer  is  discarded  and  the  next                  character sent
 may be printed or may be the start  of  a  new                  control code se
quence.         The user can change the operation of a control  code  y  changin
g  the         entry for it in the control code table (see TXT  GET  CONTROLS). 
 This         contains a 3 byte entry for  each  code  and  entries  are  stored
  in         ascending order (i.e. the entry for #00 first, #01 next and so on).
           Bits 0..3 of the first byte of each  entry  specifies  the  number  o
f         parameters required. This must lie in the range 0..9  as  the  control
         code buffer is only capable of storing up to 9 parameters.           In
 V1.1 firmware bit 7 specifies whether the code is affected when the         VDU
 is disabled. If bit 7 is set then the code is to be  ignored  when         the 
VDU is disabled otherwise it is to be obeyed.         The second and third bytes
 are the address of the routine to  call  to         obey the code. This routine
 should lie in the central 32K of RAM or in         the lower ROM (which will  b
e  enabled).  It  should  conform  to  the         following entry/exit conditio
ns           AMSTRAD CPC464/664/6128 FIRMWARE                              page 
4.  P5  AP-4  $$$ Text VDU.             The Text VDU is  a  character  based  sc
reen  driver.  It  controls  8         different CHAP-2  P1 &'()*+,-./012345CHAP
-2  P1 6CHAP-2  P2 789CHAP-3     zABCDEFGHICHAP-4  $$$JKLMNOPQRSTUVWXY          
         Entry                      A contains the last character added to the b
uffer.                      B contains the number of characters in the buffer  (
including                  the control code).                      C contains th
e same as A.                      HL contains the address of the control code bu
ffer (points at                  the control code).             Exit            
        AF,BC,DE and HL corrupt.                      All other registers preser
ved.             The control code buffer is shared between all streams. A contro
l  code         sequence should be completed before  a  stream  is  changed  oth
erwise         unexpected effects may occur.               The default control c
ode actions, set at EMS and  when  TXT  RESET  is         called, are described 
in Appendix VII.               It is possible to disable the text stream by call
ing TXT VDU  DISABLE.         When disabled the stream will not write any charac
ters to  the  screen         and in V1.1 firmware control codes may not  be  obe
yed  (as  described         above). Normal operation can be restored by call TXT
 VDU ENABLE. Note,         however, that calling these  routines  will  empty  t
he  control  code         buffer. This effect may be used to avoid problems when
  the  state  of         the  control  buffer  is  unknown  (when  printing  an 
 error  message         perhaps).                                       AMSTRAD 
CPC464/664/6128 FIRMWARE                              page 4.6           differe
nt                5 The Graphics VDU.             The Graphics VDU allows indivi
dual pixels (dots) to be set  or  tested         and lines to be drawn. The plot
ting takes place  on  an  ideal  screen         that is always 640 points wide a
nd 400 points high.  This  means  that         more than one point on the ideal 
screen will  map  onto  a  particular         pixel on the real screen. The widt
h of the ideal screen  (640  points)         is chosen to be the horizontal numb
er of pixels on the screen  in  the         highest resolution mode (mode 2). Th
e height of the ideal screen  (400         points) is chosen to be twice the ver
tical number  of  pixels  on  the         screen in all modes. This ensures that
 the aspect ratio of the  screen         is  approximately  unity,  i.e.  a  cir
cle  looks  circular  and   not         elliptical.             5.1 Graphics VDU
 Coordinate Systems.           The Graphics  VDU  uses  4  coordinate  systems. 
 The  user  specifies         positions in user coordinates or relative coordina
tes or  occasionally         in  standard  coordinates.  Internally  the  Graphi
cs  VDU  uses  base         coordinates (or occasionally standard coordinates). 
          User coordinates, relative coordinates, and standard  coordinates  are
         all very similar. They all use 16 bit numbers and work on points  with 
        X-coordinates running left to right and Y-coordinates  running  bottom  
       to top. The screen is always 400  points  high  and  640  points  wide   
      whatever the   Pscreen mode. This means that a pixel (dot on the  screen) 
        is mapped onto by 8 points in mode 0, 4 points in mode 1 and 2  points  
       in mode 2. The origin (coordinate (0,0)) of these systems vary           
           In standard coordinates the origin is the point at the bottom        
          left corner of the screen.                    The origin of user coord
inates can be set by  the  user.  The                  default origin is at the 
bottom left corner  of  the  screen.                  This make the  default  us
er  coordinates  the  same  as  the                  standard coordinates.      
              The origin of relative coordinates is  the  current  position     
             (see 5.2 below). This  allows  plotting  to  be  carried  out      
            independently of the position on the screen and is useful  if       
           a particular shape is to be repeated on the screen  a  number        
          of times or if it  is  inconvenient  to  keep  track  of  the         
         current location.             Base coordinates are a physical coordinat
e  system  which  deals  with         pixels. X-coordinates run left to right an
d Y-coordinates  run  bottom         to top. Pixel (0,0) is the pixel at the  bo
ttom  left  corner  of  the         screen. Because this coordinate system works
 in pixels the coordinates         of  positions  on  the  screen  depend  upon 
 the  screen  mode.  Base         coordinates are unsigned 16 bit  numbers  and 
 only  coordinates  that         refer to a pixel on the screen are valid.      
       AMSTRAD CPC464/664/6128 FIRMWARE                              page 5.1   
                  Graphics  routines  convert  from   relative   coordinates   t
o   user         coordinates, if necessary, and then  from  user  coordinates  t
o  base         coordinates before accessing the physical screen.  During  the  
latter         conversion there is a loss of  accuracy  because  of  the  mappin
g  of         multiple points onto a single pixel. This could make shapes  drawn
  on         the screen appear asymmetrical (particularly circles) but the Graph
ics         VDU avoids this by rounding the coordinates towards the  user  origi
n.           Thus symmetrical shapes should be drawn symmetrically about  the  u
ser         origin to take advantage of the rounding. If the shape is not  centr
ed         on the user origin then the asymmetry may reappear.           In V1.1
 firmware it is possible to call GRA FROM USER to convert  from         user to 
base coordinates - this will make using routines in the  lower         level scr
een pack easier (e.g. SCR DOT POSITION, SCR  HORIZONTAL,  SCR         VERTICAL).
           5.2 The Current Graphics Position.           The  Graphics  VDU  stor
es  a  current  position.  This  is  the  user         coordinate of the last po
int specified to the  Graphics  VDU  (or  the         origin after clearing the 
graphics window).  The  origin  of  relative         coordinates  is  specified 
 to  be  at  this  point,   thus   relative         coordinates are an offset fr
om the current position.           When drawing a line one end is at the  positi
on  specified  while  the         other end  is  at  the  current  graphics  pos
ition.  When  drawing  a         character on the screen using the graphics char
acter write routine the         character is placed with the current graphics   
position   being   the         top left corner of the character.           After
 plotting or testing a  point  or  drawing  a  line  the  current         positi
on is moved to the position specified. After writing a character         the cur
rent graphics position is moved  right  by  the  width  of  the         characte
r ready for the next character to be written.           5.3 Graphics Pen and Pap
er Inks.             The Graphics VDU has a pen (foreground) ink and a  paper  (
background)         ink. The graphics pen ink is used to plot pixels and to set 
foreground         pixels when writing characters (see 5.6 below) and drawing li
nes  (see         5.7 below). The graphics paper ink  is  used  to  clear  the  
graphics         window and to set background pixels when writing characters or 
drawing         lines.           The pen and paper can be set to any ink valid i
n  the  current  screen         mode (see section 6.2). The default has the pape
r set to ink 0 and the         pen set to ink 1. Changing the pen or paper ink d
oes  not  change  the         screen it merely alters how the pixels will be wri
tten in the future.             5.4 Graphics Write Mode.           Pi  Pxels plo
tted by the Graphics  VDU  are  plotted  using  the  current         graphics wr
ite  mode.  This  specifies  how  the  ink  to  be  plotted         interacts wi
th the ink a pixel is currently set to.             AMSTRAD CPC464/664/6128 FIRM
WARE                              page 5.2                     There are four wr
ite modes                    0FORCE            NEW  INK                  1EXCLUS
IVE-OR     NEW  INK xor OLD                  2AND              NEW  INK and OLD 
                 3OR               NEW  INK or OLD                    NEW is the
 ink that the pixels will be set to.                  OLD is the ink that the pi
xel is currently set to.                  INK is the ink that is to be plotted. 
          The default Graphics write mode is FORCE mode.  The  Text  VDU  always
         sets pixels as if it is operating in  this  mode.  Also  the  graphics 
        window is cleared by writing in FORCE mode irrespective of the  actual  
       write mode.           Provided that suitable ink settings are chosen, AND
 mode and  OR  mode         allow particular bits in pixel to be cleared or set.
 This  allows  the         Graphics VDU to write in 'bit planes' and by choosing
 the  colours  of         the inks carefully overlapping shapes can be drawn  an
d  automatically         hidden behind one another.           If the inks are ch
osen suitably, EXCLUSIVE-OR mode can be used to plot         over the current co
ntents of the screen. It is also useful  because  a         shape  can  be  remo
ved  from  the  screen  by  redrawing   it   since         exclusive-oring with 
the same ink twice restores the original  setting         of the pixel.         
  The graphics write mode may be set by calling SCR ACCESS or by using a        
 control code (see Appendix VII).           5.5 Graphics Window.           The G
raphics VDU allows a single window to be specified.  This  allows         the us
er  to  mix  text  and  graphics  on  the  screen  without  them         interfe
ring with each other.  If  the  text  windows  are  allowed  to         overlap 
the graphics window then the contents of the  graphics  window         will be m
oved when the text windows are rolled.  The  graphics  window         cannot be 
rolled.           When plotting point, drawing lines  or  writing  characters  n
o  pixel         outside the graphics window is ever written. Unlike the  text  
windows         no action is taken to force  a  point  inside  the  window  -  a
ctions         outside the window will be  lost.  Conversely,  when  testing  po
ints,         points outside the window are all deemed to  be  set  to  the  cur
rent         graphics paper ink. Points inside the window are written and  read 
 as         expected.           The graphics window is related to a specific are
a of  the  screen  and         not to the user coordinate system. Thus, changing
 the  origin  of  the         user coordinate system will not move the location 
of the window on the         screen although it does change the user coordinates
 of points  in  the         window.           The default graphics window, set a
t  EMS  and  after  changing  screen         mode, covers the whole screen.     
          AMSTRAD CPC464/664/6128 FIRMWARE                              page 5.3
                     5.6 Writing Characters.           The Graphics VDU write ch
aracter routine draws a  character  with  the         current graphics position 
at the top left corner of the character. The         current position is moved r
ight by width of a character in the current         screen mode. The distance mo
ved varies in mode 0 it is 32 points  in         mode 1, 16 points and in mode 2
, 8 points. Control codes,  characters         0..31, are printed and are not ob
eyed.           In V1.0 firmware the character is always written opaquely irresp
ective         of what mode the Text VDU is  using  to  write  characters,  i.e.
  The         character background  is  set  to  the  graphics  paper  ink  and 
 the         foreground is set to  the  graphics  pen  ink.  However,  the  curr
ent         graphics write mode is used to plot the pixels in the  character  (s
ee         5.4 above).           In the V1.1 firmware the foreground to the char
acter is always written         in the graphics pen ink using the current graphi
cs write mode. How the         background to the character is written depends on
 the background write         mode set by calling GRA SET BACK. If the  backgrou
nd  mode  is  opaque         then the background to the character is written in 
the graphics  paper       P    ink using the current graphics write mode. If the
 background  mode  is         transparent then the background pixels are not  pl
otted  at  all,  the         current settings of these pixels are left unchanged
.           5.7 Drawing Lines (Only applicable to V1.1 firmware)             The
 Graphics VDU has a number of options  that  affect  the  way  that         line
s are drawn on the screen.  These  include  the  background  write         mode,
 the first point mode, the line mask and the graphics write mode.             Th
e line mask is an  8  bit,  bit  significant  value  that  specifies         whe
ther pixels on the line are foreground or background. If the bit of         the 
mask corresponding to a pixel is one then the pixel is foreground.         If th
e bit is zero then the pixel is  background.  The  mask  is  used         repeat
edly along the length of the  line.  i.e.  Bit  7  of  the  mask         corresp
onds to pixels 1, 9, 17, ... of the line, bit 6  to  pixels  2,         10, 18, 
... etc.             Foreground pixels of a line are plotted in the graphics  pe
n  and  ink         using the graphics write  mode.  How  background  pixels  ar
e  plotted         depends upon the background write mode.  If  the  background 
 mode  is         opaque then the background pixels are plotted in  the  graphic
s  paper         ink  using  the  graphics  write  mode.  If  the  background  m
ode  is         transparent then the pixels  are  not  plotted  at  all,  the  c
urrent         settings of the pixels are left unchanged.             The first 
point mode  specifies  whether  the  pixel  at  the  current         graphics po
sition is to be include in the line or  not.  Not  plotting         the first pi
xel of a line is particularly  useful  for  drawing  lines         when the grap
hics write mode is XOR. For instance, the  corner  pixels         of a box will 
be plotted twice  if  the  first  pixels  of  lines  are         plotted and thi
s will result in these pixels  not  being  set  in  XOR         mode.           
AMSTRAD CPC464/664/6128 FIRMWARE                              page 5.4          
           5.8 Filling Areas (Only applicable to V1.1 firmware)               Th
e Graphics VDU provides a generalised area fill  routine.  The  user         dra
ws the outline of the area to be filled  using  the  standard  line         draw
ing and  pixel  plotting  routines  and  then  moves  the  current         posit
ion to any pixel inside the area and calls the fill routine,  GRA         FILL. 
This will set all  pixels  inside  the  area  to  the  fill  ink         irrespe
ctive of what the current graphics write mode is set to.  (i.e.         GRA FILL
 always works as if FORCE mode was selected).               The fill routine rec
ognises pixels making up the edge of the  area  by         the ink that they are
 set to. All pixels set  to  either  the  current         graphics pen ink or th
e ink that is being used to fill the  area  with         are treated as edge pix
els. (These two inks may  be  the  same).  Edge         pixels need only lie dia
gonally adjacent to  each  other,  it  is  not         necessary for them to be 
orthogonally adjacent. Of course, the edge of         the graphics window are al
so treated as edges of the area to fill  and         so pixels outside the graph
ics window will be affected.               GRA  FILL  uses  a  buffer  supplied 
 by  the  user  for  storing  the         information. The more complicated the 
area the longer the buffer  will         need be. If the supplied buffer is too 
short then parts  of  the  area         will be ignored and will not be filled. 
By  supplying  a  long  enough         buffer any arbitrary complicated shape ma
y be filled.                                                                   A
MSTRAD CPC464/664/6128 FIRMWARE                              page 5.5  e Graphic
s VDU allows individual pixels (dots) to be set  or  tested         and linforma
tion. The more complicated the area the longer the buffer  will         need be.
 If the supplied buffer is too short then   P               6 The Screen Pack.  
         The Screen Pack is used by the Text and Graphics VDUs  to  access  the 
        hardware of the screen. It also controls the features  of  the  screen  
       that affect both the Text VDU and Graphics VDU, such as what mode  the   
      screen is in.           6.1 Screen Modes.             The screen has three
 modes of operation, numbered  0,  1  and  2.  The         modes have different 
resolutions and display different numbers of inks         on the screen.        
     All modes have a vertical resolution of 200 pixels  (picture  elements     
    or dots on the screen). The  horizontal  resolution  varies  from  160      
   pixels to 640 pixels. As each character is 8 pixels by  8  pixels  the       
  number of characters across the screen varies with the mode - from  20        
 characters to 80 characters. The screen is always 25 characters high.          
   The number of inks that can be displayed on the screen varies with the       
  screen resolution. When the screen is 640 pixels wide only 2 inks  can        
 be displayed, when the screen  is  320  pixels  wide  4  inks  can  be         
displayed and when the screen is  160  pixels  wide  16  inks  can  be         d
isplayed.             In summary, the modes are                  Mode        Pix
el size          Character size      Inks                  0         160 x 200  
         20 x 25             16                  1         320 x 200           4
0 x 25             4                  2         640 x 200           80 x 25     
        2           The default screen mode, set at EMS, is mode 1.             
The screen mode is set by calling SCR SET MODE which  also  has  other         e
ffects.           Firstly, the screen is cleared to ink 0. If text  and  graphic
s  paper         inks are not set to ink 0 then this will become apparent on the
 screen         when characters are written or windows are cleared. If the user 
wishes         to alter this screen clearing operation for some reason then it m
ay be         intercepted at the SCR MODE CLEAR indirection.           Secondly,
 the Text and Graphics VDUs are set into standard states. The         windows ar
e all set to cover the whole screen. If the  pen  and  paper         inks are ou
t of range for the new mode then they are masked (with  #01         or #03) to b
ring them into range. The current text positions are moved         to the top le
ft corner of the screen and the text cursors  are  turned         off (see TXT C
UR OFF). The current  graphics  position  and  the  user         origin are move
d to the bottom left corner of the screen.             AMSTRAD CPC464/664/6128 F
IRMWARE                              page 6.1                     6.2 Inks and C
olours.           The various screen modes allow pixels (dots on the screen) to 
 be  set         to different numbers of inks as follows                    Mode
 0             16 inks, 0..15                  Mode 1              4 inks, 0..3 
                 Mode 2              2 inks, 0..1           How the ink for a pi
xel is encoded into a byte  of  screen  memory  is         described in section 
6.4. The ink that a pixel is  set  to  determines         what colour the pixel 
is displayed in. However, the colour  associated         with an ink is not fixe
d, it can be changed.           There are 27 colours available. Each ink may be 
set to  any  of  these         colours. The border to the screen acts much like 
an ink and  can  have         its colour specified as well. The display  hardwar
e  fetches  the  ink         value from the screen memory for each pixel as it i
s  displayed.  This         ink value is used to access a small area of RAM insi
de the gate  array         called the 'palette'. The palette contains the actual
 colour which  is         to be displayed by the  monitor  for  that  particular
  ink.  Changing         entries in the palette thus causes all  pixels  set  to
  that  ink  to         change colour when they are next displayed (i.e. within 
 1/50th  of  a         second or so).           In fact the Screen Pack allows t
wo colours to be  associated  with  an         ink (or the border). These are lo
aded  into  the  palette  alternately         under software control. If the two
 colours associated with an ink  are         different then the ink will flash, 
if the colours are  the  same  then         the ink will be steady. The user can
 change the rate  of  alternation,         from the default of 5 cycles per seco
nd,  if  required  (see  SCR  SET         FLASHING).           When  specifying 
 colours  P  the  Screen  Pack  uses  an  ordering  that         corresponds to 
a grey scale on a monochrome monitor.  This  runs  from         the darkest colo
ur (black), colour 0, to the brightest colour  (bright         white), colour 26
. The colours do not appear to  have  any  particular         ordering when view
ed on a colour monitor.           The palette uses a different (and  apparently 
 nonsensical)  numbering         scheme for the colours. The Screen Pack automat
ically  translates  the         grey  scale  number  to  the  hardware  number  
and  vice  versa  when         appropriate. Unless the user is  driving  the  ha
rdware  directly  the         hardware numbers will never be encountered.       
    The default settings for the colour of each ink and a list of  the  27      
   colours available are given in Appendix V.           6.3 Screen Addresses.   
        The Screen Pack does not use  a  coordinate  system  itself.  It  uses  
       screen addresses. However, it does work with  the  physical  and  base   
      coordinate system of the Text and Graphics VDUs described  in  section    
     4.1 and 5.1 respectively. In  particular,  routines  are  provided  to     
    convert positions given in physical  or  base  coordinates  to  screen      
   addresses.               AMSTRAD CPC464/664/6128 FIRMWARE                    
          page 6.2                   A screen address is, prosaically enough, th
e address of a byte  within         the screen memory. To specify a particular p
ixel a screen  address  is         often passed to a routine along with a  mask 
 that  indicates  exactly         which pixel is required. Routines are provided
 for stepping  a  screen         address up, down, right and left one byte. (The
 screen map makes  this         a non-trivial operation.)           6.4 Screen M
emory Map.         The screen is a memory mapped pixel screen. The  screen  memo
ry  fills           16K of RAM in all modes. The default location for the screen
,  set  at         EMS, is the 16K of RAM starting at #C000.  This  lies  undern
eath  the         upper ROM, when it is enabled, which keeps the screen out of  
the  way         of the rest of the system. However, his also means that the upp
er  ROM         has to be disabled whenever the screen is read. The firmware jum
pblock         uses LOW JUMP restarts which turn the upper ROM off to ensure tha
t the         screen memory is accessible if required.           It is possible 
to change the location of the screen memory to  any  of         the 4 16K memory
 blocks on 16K boundaries (see SCR SET BASE). However,         only #C000 and #4
000 are useful #0000  and  #8000  both  overlap  the         firmware jumpblocks
 or other system areas. The descriptions below  all         assume the default s
creen location at #C000.           In V1.1 firmware is it possible to set the lo
cation of the screen that         is used by the screen  pack  routines  indepen
dently  of  setting  the         hardware value. This will then enable text and 
graphics to be produced         in the 'screen' that isn't currently in view - s
witching to the  other         possible location (#4000 to #C000) will  cause  t
he  already  prepared         graphics etc. to instantly appear - thus avoiding 
flicker and enabling         smooth animation effects.           The screen memo
ry map is not simple. Fortunately it is  not  necessary         to understand it
 because the Text and Graphics VDUs provide  idealised         models of the scr
een. However, to achieve maximum  speed  for  certain         applications (such
 as animated games) it may be  necessary  to  access         the screen memory d
irectly.           The screen memory is divided into 8 blocks, each 2K bytes lon
g.  Block         0 runs from #C000 to #C7FF, block 1 runs from #C800 to #CFFF, 
 and  so         on. Each line of pixels on the screen uses 80 consecutive bytes
 from a         block. The top line of the screen comes from block 0, the second
  from         block 1 and so on until the eighth line which comes from block 7.
  The         sequence starts with block 0 again on the ninth line  and  repeats
  in         this fashion all the way down the screen. The successive  lines  in
  a         block are stored consecutively so there are 48 unused bytes at the e
nd         of each block.           There is further complication in  this  scre
en  map.  The  description         above assumes that the first byte displayed  
from  the  block  is  the         first byte of the block. In practice the offse
t  in  a  block  of  the         first byte to be display   Pcan be set to any e
ven  value  (see  SCR  SET         OFFSET). The same offset applies to all eight
 blocks.  A  block  wraps         around from its last byte to its first byte,  
thus  #C7FE,  #C7FF  and         #C000 are consecutive bytes in block 0 and coul
d all be  on  the  same         line of the screen. Altering the offset by + or 
-  80  MOD  2048  (the         length of a line) rolls the screen up or down by 
one character line (8         pixels lines). This effect is used by the Text VDU
  when  rolling  the         entire screen.           AMSTRAD CPC464/664/6128 FI
RMWARE                              page 6.3                     The meaning of 
the bytes accessed as described above varies  with  the         screen mode. Eac
h byte stores the inks for 2, 4 or 8 pixels. The  bits         used to encode ea
ch pixel are not arranged in an obvious  manner.  The         following table sp
ecifies which bits of  screen  memory  are  used  to         encode which pixel 
in the various modes. The bit numbers given in  the         table are the bits o
f the screen byte. They are given in the order  of         bits in the pixel - t
he first bit given is most significant bit  of  a         pixel and the last bit
 is the least significant bit.                                       Mode 0     
      Mode 1     Mode 2                  ---------------------------------------
---------------                  Leftmost pixel    Bits 1,5,3,7    Bits 3,7    B
it 7                        .                                       Bit 6       
                 .                           Bits 2,6    Bit 5                  
      .                                       Bit 4                        .    
       Bits 0,4,2,6    Bits 1,5    Bit 3                        .               
                        Bit 2                  Rightmost pixel                  
 Bits 0,4    Bit 1                                                              
  Bit 0           The following diagram illustrate the mapping from pixels on th
e screen         to addresses in screen memory for the simple case of a base add
ress of         #C000 and an offset of 0.                   ------------------ 8
0 BYTES ----------------------                                                  
                                                    #C000 #C001 ................
........... #C04E #C04F                   #C800 #C801 ..........................
. #C84E #C84F  1ST                #D000 #D001 ........................... #D04E 
#D04F  CHAR                #D800 #D801 ........................... #D84E #D84F  
ROW                                                                             
         #F000 #F001 ........................... #F04E #F04F                   #
F800 #F801 ........................... #F84E #F84F   V                #C050 #C05
1 ........................... #C09E #C09F                 #C850 #C851 ..........
................. #C89E #C89F                                                   
                           200   ...............................................
.......         PIXEL                                                           
     LINES                                                                      
 #FF30 #FF31 ........................... #FF7E #FF7F                 #C780 #C781
 ........................... #C7CE #C7CF                   #CF80 #CF81 .........
.................. #CFCE #CFCF                                                  
                      25th              ........................................
.............. CHAR                                                             
        ROW                #F780 #F781 ........................... #F7CE #F7CF  
                 #FF80 #FF81 ........................... #FFCE #FFCF            
   V    V           #C7D0..#C7FF, #CFD0..#CFFF, ... , #FFD0..#FFFF are unused.  
         On the CPC6128 the base address sets which block will be used for  the 
        screen memory.  Base  addresses  of  #0000,  #4000,  #8000  and  #C000  
       correspond to blocks 0, 1, 2, and 3. It is not possible for the screen   
      memory to be located in blocks 4...7. Where the block being  used  for    
     screen memory actually appears in the memory map depends on  the  bank     
    switching (see section 2.5).           AMSTRAD CPC464/664/6128 FIRMWARE     
                         page 6.4  cs VDUs  to  access  the         hardwar  P  
             7 The Sound Manager.           The Sound Manager  deals  with  the 
 sound  chip.  It  allows  various         envelopes and sounds to be set up and
  played  under  control  of  the         user. Most of the control is achieved 
using software rather  than  the         sound chip hardware.           7.1 The 
Sound Chip.             The sound chip used is the General  Instruments  AY-3-89
12.  This  has         three channels  and  a  pseudo-random  noise  generator  
that  can  be         connected to any of the channels. The chip has  a  limited
  number  of         amplitude envelopes available ( see Appendix IX  )  but  th
e  software         enveloping, described below, can achieve  all  that  the  ha
rdware  is         capable of, and more. Tone enveloping is  all  done  by  the 
 software         there is no hardware support.             The sound generated 
by the chip uses square waveforms. There is no way         to generate any other
 waveform.             It is possible to access the sound chip directly should t
he need arise         However, the routine MC SOUND REGISTER should  be  used  t
o  write  to         registers of the sound chip. This is because the keyboard i
s  attached         to the I/O port of the sound chip and the  keyboard  scannin
g  routine         expects to find the sound chip in a standard state ( i.e. not
 in  use)         Also, there are timing constraints on accesses to  the  chipus
ing  MC         SOUND REGISTER will avoid consideration of these details.       
      The sound chip has three independent sound channels. The outputs  from    
     these are mixed together to form two stereo channels - sound  channels     
    A and B are mixed to form one stereo channel and sound channels B  and      
   C are mixed to form the other stereo  channel.  The  stereo  sound  is       
  available on the output jack on the  back  of  the  machine.  However,        
 there is only a single internal speaker and so the two stereo channels         
are mixed together to  drive  this.  The  volume  of  sound  from  the         i
nternal speaker can be controlled by the volume knob on the  side  of         th
e machine near the on/off switch. This control overrides  the  other         vol
ume methods described below.             7.2 Tone Periods and Amplitudes.       
      The sound chip allows 16 different  amplitudes  in  the  range  0..15.    
     Amplitude 0 is no sound at all, amplitude 15 is maximum volume.            
 The pitch of a note to be generated is specified by the period of  the         
note rather than by the frequency. This period is given in microsecond         u
nits. Thus, the tone period specified and the frequency of  the  tone         ge
nerated are related by the formula              AMSTRAD CPC464/664/6128 FIRMWARE
                              page 7.1                              Tone period 
 125000/Frequency             See Appendix VIII for a list of the suggested peri
ods  for  generating         musical notes.             7.3 Enveloping.         
    Real sounds rarely  have  a  constant  volume.  Enveloping  allows  an      
   approximation to the variation in volume of real sound to be made. The       
  sound is split into a number of sections each of  which  can  increase        
 the volume, decrease the volume, or keep it constant.  The  length  of         
these sections can be varied, as can the rate of increase or  decrease         i
n volume. For example, a note generated by a musical  instrument  may         be
 considered to have 3 sections as follows              Attack The volume of the 
note rises rapidly to its peak.             Sustain The volume of the note remai
ns  constant  while  the  note is                  played.             Decay  Th
e volume falls away slowly to zero as the note finishes.                        
                           /                                          /         
                                   /                                            
  /                                                /    P                       
                         /                                                    / 
                                                     /                          
                           Attack            Sustain             Decay          
   The Sound Manager allows two types of envelopes  amplitude  envelopes        
 to control a sound's volume and tone envelopes its pitch (  the  pitch         
is varied in much the same way as the volume ). The user can set up to         1
5 different envelopes of each type. The exact  formats  of  the  data         bl
ock specifying envelopes are given in SOUND AMPL ENVELOPE and  SOUND         TON
E ENVELOPE.             a. Amplitude envelopes.             An amplitude envelop
e is used to control  the  volume  and  length  of         sound. It can have up
 to five sections. Each  section  can  be  either         hardware or a software
 section. Software sections are either  absolute         or relative.           
    AMSTRAD CPC464/664/6128 FIRMWARE                              page 7.2      
               Hardware sections write values into the sound chip registers 11,1
2  an         13 to set up a hardware envelope. ( See Appendix IX for a  descrip
tion         of the sound chip registers). Generally a  hardware  section  will 
 be         followed by a software section that does nothing  except  wait  for 
 a         time long enough for the hardware envelope to operate.           An a
bsolute software section specifies a volume to set and a  time  to         wait 
before obeying the next solution.           A relative software section specifie
s an step size, a number of  steps         and a time to wait. For each step req
uested,  the  current  volume  is         changed by the given step size and the
n the Sound  manager  waits  for         the given time after each step before o
beying the next.           Amplitude envelopes are set by calling SOUND AMPL ENV
ELOPE.           b. Tone envelopes.           A tone envelope controls the pitch
 of the sound. It  can  have  up  to         five sections. Each section can be 
either an absolute  or  a  relative         section. The sections of a tone enve
lope are not  necessarily  related         to those of an amplitude envelope.   
        An absolute section specifies a tone period to set and a time to  wait  
       before obeying the next section.           A relative section specifies a
n step size, a number  of  steps  and  a         time to wait. For each step req
uested,  the  current  tone  period  is         changed by the given step size a
nd then the Sound  Manager  waits  for         the given time after each step be
fore obeying the next step.             If the tone envelope is completed before
 the  sound  duration  expires         (see  section  7.4f)  then  the  final   
pitch   is   held   constant.         Alternatively,  tone  envelopes  can  be  
set  to  repeat   themselves         automatically. This allows tremulo effects 
to be created.           Tone envelopes are set by calling SOUND TONE ENVELOPE  
           7.4 Sound Commands             When a sound is given to the Sound Man
ager to be  played,  by  calling         SOUND QUEUE, a lot of information  need
s  to  be  specified.  This  is         described briefly below. The detailed la
yout of a sound  command  data         block is described in SOUND QUEUE.       
      a. Initial tone period.             The sound is issued with an initial to
ne  period.  The  pitch  of  the         sound can be varied from this initial v
alue using a tone envelope.  If         no envelope is specified the pitch remai
ns constant. An  initial  tone         period of zero means no tone is to be gen
erated, presumable the  sound         is to be pure noise ( see(e)below.        
     AMSTRAD CPC464/664/6128 FIRMWARE                              page 7.3     
                b. Initial volume           The sound is issued with an initial 
volume. The volume  of  the  sound         can be varied from this initial value
 using an amplitude envelope.  If         no amplitude envelope is specified the
n the volume remains constant.           c. Tone envelope.           This specif
ies which tone envelope to use. If no envelope is specified         then the pit
ch of the sound remains constant.           d. Amplitude envelope.           Thi
s specifies which amplitude to use. If  no  envelope  is  specified         then
 default system envelope is used. This keeps  the  volume  of  the         sound
 constant and lasts for 2 seconds.           e. Noise period.           If the n
oise period   Pis zero then no noise is to be added to the sound.         Any ot
her value sets the period for the pseudo-random noise  generator         and add
s noise to the tone generated. Note  that  there  is  only  one         noise ge
nerator and so if two sounds are to use it at  the  same  time         they will
 need to agree on the period.           f. Duration.           The length of a s
ound can be specified  in  two  ways,  either  as  an         absolute time ( du
ration )  or  as  a  number  of  operations  of  the         amplitude envelope.
 In the latter case the envelope is run one or more         times and the sound 
finishes when the envelope has been  executed  the         specified number of t
imes. In the former  case,  if  the  duration  is         longer than the envelo
pe then the sound is cut short. If the  duration         is longer than the enve
lope then the final amplitude is held until the         duration expires.       
      g. Channels and Synchronisation Bits.           The sound can be issued to
 one or more channels. If a sound is  issued         to more than one channel th
en these channels automatically  rendezvous         with each other. Rendezvous 
requirements  can  be  set  explicitly  as         well. Also the sound can be h
eld or the sound  queue  can  be  flushed         (see section 7.6).            
 7.5  Sound Queues.           Each channel has a queue associated with it. Each 
queue has  space  to         store at least three sounds. The sound at the head 
of each  queue  may         be running and making music on its channel or it may
  be  waiting  for         various synchronisation requirements ( see 7.6 below 
). When  a  sound         command is issued the sound is placed into the queues 
for the channels         specified by the command. When the  sound  reaches  the
  head  of  the         queue, and providing its synchronisation requirements ar
e met,  it  is         executed.               AMSTRAD CPC464/664/6128 FIRMWARE 
                             page 7.4                     If a sound that has th
e flush bit is put into a queue then all  sounds         queued for that channel
 are  discarded  and  any  executing  sound  is         stopped immediately. Thu
s a sound with the flush bit set will move  to         the head of the queue imm
ediately and may commence execution.             A routine (SOUND CHECK ) is pro
vided to test the status of  the  sound         at the head of a queue and to de
termine how much free space  is  in  a         queue. It is also possible to set
 up a sound event for each queue ( by         calling SOUND ARM EVENT ). This sy
nchronous event is ' kicked  '  when         the queue has a free space in it. T
he sound event mechanism allows the         generation of sound to be carried on
 as a background task whilst  some         other action is being carried out.   
          7.6 Synchronisation.             There are two mechanisms to allow sou
nds on different channels  to  be         synchronised. These are holding sounds
 and rendezvous. The purpose  of         synchronisation is to ensure that  soun
ds  start  simultaneously.  For         example, a simulation of  an  instrument
  might  use  one  channel  to         generate the fundamental note and  anothe
r  channel  to  generate  the         harmonics of the note.  The  synchronisati
on  mechanism,  particularly         rendezvous, my be used to ensure that the f
undamental and the harmonic         sounds start exactly together.             A
 sound can be specified to be held when it is issued. This means that         wh
en it reaches the head  of  the  sound  queue  it  is  not  executed         imm
ediately. Instead it waits until it is  explicitly  released  (  by         call
ing SOUND RELEASE ) before it starts execution.           A sound can have rende
zvous requirements set on it when it is  issued.         If a sound is issued to
 more than one channel then these channels  all         set rendezvous with each
 other automatically.  When  a  sound  with  a         rendezvous set reaches th
e head of the sound queue it is not  executed         immediately. Instead it wa
its until sounds  with  matching  rendezvous         requirements reach the head
 of  their  sound  queues.  Only  when  all         rendezvous sounds are found 
to be present and ready  to  run  do  they         start.           For instance
, sound on channel A marked to rendezvous with a sound  on         channel B wil
l not start - and vice versa! If  a  sound  is  ready  to         start on chann
el B that is not marked to  rendezvous  with  channel  A         P  then it star
ts but the sound on channel A continues  to wait  for  its         rendezvous.  
           7.7  Holding Sounds.           It is possible to stop a sound while i
t is executing by calling  SOUND         HOLD. This will stop a channel making a
ny  sound  and  will  save  the         state of the sound. The sound can be res
tarted from where it was  held         by calling SOUND CONTINUE. However, if a 
hardware envelope was running         when the sound was held then it is impossi
ble to predict the effect of         restarting the sound. The hardware envelope
 may or  may  not  continue         from where it was held.           AMSTRAD CP
C464/664/6128 FIRMWARE                              page 7.5                    
 Calling SOUND HOLD is different from setting the hold bit when issuing         
a sound as described in section 7.6 above. SOUND HOLD stops all sounds         b
eing generated at any time whilst  the  hold  bit  is  a  method  for         sy
nchronising sounds and prevents a particular sound starting when  it         rea
ches the head of the queue.                                                     
                                                                AMSTRAD CPC464/6
64/6128 FIRMWARE                              page 7.6    enveloprom setting the
 hold bit when issuing         a sound as described in section 7.6 above. SOUND 
HOLD stops all sounds         being generated at any time whilst  the  hold  bit
  is  a  method  for         synchronising sounds and prevents a particular soun
d               8 The Cassette Manager.           The Cassette Manager deals wit
h reading files from and  writing  files         to tape. These operations can e
ither be performed on  a  character  by         character basis or on a whole fi
le  at  once.  There  is  no  hardware         support for the cassette, even th
e timing for reading and writing bits         is performed by software.         
  The format of data on the tape is described in great detail. This will        
 only be of academic interest to must users. More  general  information         
can be found in sections 8.4 onwards. In the case of V1.1 machines  or         t
he CPC464 with a DDI-1 fitted, a TAPE command will have to  be  used         to 
access the Tape Operating System.             8.1 File Format.             A fil
e on tape is split into blocks each with a header  record  and  a         data r
ecord containing up to 2K (2048) bytes  of  data.  The  cassette         motor w
hich is under software control is turned off between each  file         block to
 allow time to process the data read or to generate  the  data         to be wri
tten. The motor start-up gap  also  serves  to  separate  the         blocks fro
m each other.             The general format of a block is as follows           
                                                                                
Motor         File header       File data                 Start-up      record  
          record                               However, the first and last block
s of  a  file  have  an  extra  pause         before and after them respectively
, to separate  files  on  the  tape.         Their formats are thus             
 First block                                                                    
                           Motor        Pre-file   File header    File data     
           start-up     gap        record         record                        
       Last block                                                               
                               Motor       File header   File data     Post-file
                start-up    record        record        gap                     
              AMSTRAD CPC464/664/612  P8 FIRMWARE                              p
age 8.1                     There is a strong distinction between the file heade
r record  and  the         file  data  record.  The  header   record   is   writ
ten   using   one         synchronisation character (#2C)  and  the  data  recor
d  with  another         (#16). This means that when the Cassette Manager is  se
arching  for  a         file header it is impossible for it to find  a  file  da
ta  record  by         mistake,  and  vice  versa.  See  8.2  below  for  the  u
se   of   the         synchronisation characters.           8.2 Record Format.  
         A record can contain any number of data bytes from  1  to  65536.  The 
        data is split into segments each of which is 256 bytes long. The  last  
       segment is padded  out  to  256  bytes  with  zeros  when  writing  if   
      necessary. When reading a record any extra bytes are ignored  although    
     they are accumulated into the CRC.           The layout of a record is as f
ollows                                                                          
              Leader      Segment 1     ...........  Segment N   Trailer        
            There are N segments where 256*N is the length of data (plus  paddin
g)         to be written.           A file header record always contains one seg
ment a file  data  record         contains from one to eight segments (usually 8
 segments).           a. Leader.           At the start of  all  records  a  lea
der  is  written  which  has  the         following layout                      
                                                                         Pre-rec
ord                       Zero      Sync                 gap            2048 one
 bits     bit       bit                           The leading gap is there to en
sure  the  failure  of  any  attempt  to         synchronise on end of a precedi
ng record or on data that  was  on  the         tape and that has been over-reco
rded.           The long sequence of one bits is used to calculate the speed at 
 which         the data was written and hence to calculate the threshold  value 
 used         to distinguish one bits from zero bits.           The single zero 
bit is used to mark the impending end  of  the  leader         and is also used 
to determine whether the recording has been  inverted         (see section 8.3).
           The  synchronisation  byte  is  there   to   help   prevent   spuriou
s         synchronisation on sequences of bits such  as  might  be  found  in  a
         record. If an incorrect value for the  sync  byte  is  found  then  an 
        attempt has been made to synchronise on the middle of a record  or  on  
       the wrong type of record. This byte  is  used  to  distinguish  header   
      records from data records in a file  block  (header  records  use  #2C    
     while data records use #16).           AMSTRAD CPC464/664/6128 FIRMWARE    
                          page 8.2                     b. Segments           Eac
h segment contains 256 data bytes and has the following format                  
                                                                           Byte 
1   Byte 2  .......... Byte 256  CRC 1   CRC 2                        'CRC 1' is
 the more significant byte and 'CRC 2' the less  significant           byte of t
he logical NOT of the CRC calculated for the 256 bytes in the         segment. (
The CRC polynominal used  is  'X(15)+X(12)+X(5)+1'  with  an         initial spe
ed of #FFFF). (Numbers in brackets means squared).           c. Trailer         
  The trailer is simply an extra 32 one bits written to the end  of  the        
 record.           8.3 Bit Format.           A bit is written to the tape as a p
eriod of low level followed  by  an         equal period of high level. A one is
 written to the  tape  with  these         periods twice as long as those of zer
o. The length of the period for a         zero can be set by the user (see CAS S
ET SPEED).           The tape circuitry has a tendency  to  move  the  positions
  of  edges         (transitions from high to low or low to high) so as to balan
ce out the         difference between ones and zeros written to tape. Precompens
atio   P         n  is         used - which adds to the period of one  bit  and 
 subtracts  from  the         period of a zero bit to make the waveform closer t
o the ideal when  it         is read.           When reading, the speed at which
 the recording was made is  determined         by timing the one bits in  the  r
ecord  leader.  As  this  is  a  long         sequence  of  the  same  bit  the 
 edges  are  not  shifted   and   no         precompensation  is  applied.   Sin
ce   the   speed   is   established         independently for each record this a
utomatically  takes  into  account         most tape speed variations.          
 Data is written low-high but may but may be inverted when  read  (i.e.         
high-low). It is important for the firmware to determine  whether  the         w
aveform being read is inverted or not. If this is not  achieved  then         th
e bits will not be read properly as the following example shows                 
                                                           Inversion detected   
 0   0   1     1                                                                
                                                                                
                                              Inversions not detected     0     
           1                                                                    
          The zero bit in the record leader is used  to  determine  whether  the
         recording has been inverted.           Bytes written to the tape are wr
itten with the  most  significant  bit         first and the least significant b
it last.             AMSTRAD CPC464/664/6128 FIRMWARE                           
   page 8.3                     8.4 The Header Record.           The header reco
rd in a file block contains information about the  file         and about the da
ta in the following data record. Some of  the  entries         in the header are
  used  by  the  system  for  various  purposes.  The         remaining entries 
are available for the user to  set  when  writing  a         file, and to read w
hen reading a file. These entries are the file type         (byte 18) and all th
e user fields (bytes 24..36) including the logical         length (bytes 24..25)
 and the entry address (bytes 26..27).  The  user         fields will all be set
 to zero if they are not used.                The header is laid out as follows 
               System fields                Bytes 0..15   Filename       Padded 
to 16 bytes with nulls.                Byte 16       Block number   The first bl
ock is normally block  1                                           and block num
bers increase by  1  on                                           successive blo
cks.                Byte 17       Last block     A non-zero value means that thi
s  is                                           the last block of a file.       
         Byte 18       File type      A value recording the  type  of  the      
                                     file (see below).                Bytes 19..
20  Data length    The  number  of  data  bytes  in   a                         
                  record.                Bytes 21..22  Data location  Where   th
e   data    was    written                                           originally.
              Byte 23       First block    A non-zero value means that this  is 
                                          the first block of a file.            
    User fields                Bytes 24..25  Logical length This is the total le
ngth of the file                                           in bytes.            
    Bytes 26..27  Entry address  The execution  address  for  machine           
                                code programs.                Bytes 28..63  Unal
located    These are  unallocated  and  may  be                                 
          used as required.                The file type (byte 18) is split into
 a number of fields              Bit 0         Protection     If this  bit  is  
set  the  file  is                                           protected in some w
ay.                Bits 1..3     File contents  0  Internal BASIC.              
                             1  Binary.                                         
  2  Screen image.                                           3  ASCII           
                                4..7 are unallocated.                Bits 4..7  
   Version        ASCII files should be version 1, all                          
                 other files should be version 0.           AM  !P!!!!!!!!!STRAD
 CPC464/664/6128 FIRMWARE                              page 8.4                 
    8.5 Read and Write Speeds.           The Cassette Manager is capable of read
ing and writing date at  speeds         ranging from 700 baud to 2500 baud. Ther
e are two speeds commonly used         in this range, 1000 baud (the default spe
ed selected at EMS) and  2000         baud. The default speed is chosen to e nea
r the slowest speed to  give         maximum reliability. The reliability  at  2
000  baud  is  still  good,         however, particularly when playing back on t
he same machine  that  was         used to record a tape.             Bits are w
ritten to the tape as a single cycle of a tone. The tone for         a one alway
s has half the frequency of the tone for a zero. Thus  ones         are twice as
 long as zeros on the tape. This means that the baud rates         given above a
re only averages and vary according to  the  actual  data         written.      
     Even with the built in cassette mechanism the Cassette Manager has  to     
    precompensate the waveform written to the tape to achieve  the  speeds      
   quoted. This means that the lengths of bits written are altered  (ones       
  lengthened, zeros shortened) to try to make a waveform read closer  to        
 the ideal after the edges of the waveform have  been  shifted  by  the         
cassette circuitry.           It is only necessary to set the Cassette Manager's
 write  speed.  When         recording a record from tape the record leader is  
used  to  calculate         the speed at which it was written. This also  allows
  the  tape  speed         variations between different machines.           8.6 
Cataloguing.           To generate a catalogue from the tape the  Cassette  Mana
ger  reads  a         sequence of file blocks and prints information  from  them
.  The  file         blocks may come from any file, in  any  order.  Cataloguing
  continues         until the user hits the escape key.           The informatio
n is reported as follows                              FILENAME      block   N  L
  Ok           FILENAME is either the name of the  file  of  'Unnamed  file'  if
  the         filename starts with a null.           The block number, N, indica
tes which block of the file it is. Normally         block 1 is the first block o
f the file.             L is the character representing the file type and protec
tion status of         the file. It is formed by adding #24 (character '$') to t
he file  type         from the header masked with #0F. This gives the following 
characters                      $         an unprotected BASIC program.         
         %         a protected BASIC program.                  &         a binar
y file.                  '         a protected binary file                  *   
      an ASCII file.             AMSTRAD CPC464/664/6128 FIRMWARE               
               page 8.5   and  writing  files         to file. It is formed by a
dding #24 (character '$') to the file  type         from the header masked with 
#0F. This gives the foll                   Other characters are possible but the
  above  are  the  standard  file         types that are written by the on board
 ROM.           The above information is  printed  when  the  header  record  is
  read         correctly.           Ok is printed after the data record has been
 read correctly.           8.7 Reading Files.           Before a file can be rea
d from it must be opened (by  calling  CAS  IN         OPEN). This sets up the f
ilename (see 8.10 below) and reads the  first         block of the file so that 
the header can be inspected.           The file may either be opened for charact
er input or for direct input,         but not both. The mode of input is set by 
the first access to the file         and not when it is opened. As soon as one m
ode is selected it  becomes         impossible to use the other mode to access t
he file.           Character input (calling CAS IN CHAR) allows the user to read
 the file         sequentially one character at a time. Blocks of the file are r
ead from  "P"""""""""         tape into the buffer as needed. This  is  intended
  for  reading  text         files and similar applications.           Direct in
put (calling CAS IN DIRECT) reads the whole file into  memory         in one go.
 This is intended  for  loading  machine  code  programs  or         screen dump
s and similar applications.           Interrupts are disabled whilst reading  fr
om  tape  because  this  has         serious timing constraints.  Disabling  int
errupts  will  prevent  the         various timer interrupts (as described in se
ction 10.1) from occurring.         In particular this might leave the sound chi
p making  a  noise  for  a         long period of time and so the Sound Manager 
is shut down  (see  SOUND         RESET).           In V1.1 firmware the  casset
te  manager  routines  for  reading  files         return  error  codes  to  ind
icate  the  cause  of  the  errors   (for         compatability with AMSDOS)    
                #00      The user hit escape                  #0E      The strea
m is already/not in use                  #0F      Have reached the end of the fi
le           8.8 Writing Files.           Before a file can be written it must b
e opened  (by  calling  CAS  OUT         OPEN). This sets up the filename (see 8
.10 below) and the rest of  the         header that will be written in each file
 block.           The file may either be opened  for  character  output  or  for
  direct         output, but not both. The mode of output is set by the first wr
ite  to         the file and not when it is opened. As soon as one mode is selec
ted it         becomes impossible to use the other mode to write to the file.   
        Character output (calling CAS OUT CHAR) allows the user  to  write  to  
       the file one character at a time. The characters are buffered until  a   
      complete block (2048 characters) is ready to be  written  whereupon  a    
     file block is written to the tape.           AMSTRAD CPC464/664/6128 FIRMWA
RE                              page 8.6                     Direct output (call
ing CAS OUT DIRECT) writes the whole  of  the  file         from memory in one g
o. The data written is still  packaged  into  2048         byte blocks.         
  Whichever output mode is used, it is important  to  close  the  output        
 file properly (using CAS OUT CLOSE) otherwise the last  block  of  the         
file will not be written.         Interrupts are disabled  whilst  writing  to  
tape  because  this  his         serious timing constraints.  Disabling  interru
pts  will  prevent  the         various  timer  interrupts  (as  described  in  
section   10.1)   from         occurring. In particular this might leave  the  s
ound  chip  making  a         noise for a long period of time and so the Sound M
anager is shut  down         (see SOUND RESET).           In V1.1 firmware the  
cassette  manager  routines  for  writing  files         return  error  codes  t
o  indicate  the  cause  of  the   error   (for         compatibility with AMSDO
S)                  #00      The user has hit escape                  #0E      T
he stream is already/not in use         8.9 Read and Writing Simultaneously.    
     The Cassette Manager allows two files to be open  simultaneously.  One     
    must be open for reading  and  the  other  for  writing.  Thus  it  is      
   possible to read from one file and write to another file at  the  same       
  time.           When the Cassette Manager is about to read a block it asks the
 user to         press PLAY and this implies that the tape with the  file  for  
reading         should be loaded. Similarly, when it is about to write a block i
t asks         for the user to press REC and PLAY and this implies that the  tap
e  to         which the file is to be written should be loaded. The Cassette Man
ager         assumes that the tape is not changed and that the appropriate casse
tte         controls remain pressed as requested until the prompt  is  issued.  
It         also assumes that pressing a  key  means  that  the  prompt  has  bee
n         obeyed.           It is unwise to attempt to read  and  write  simulta
neously  with  the         Cassette Manager messages turned off. The only notifi
cation  given  of         which tape should be loaded is in the prompt messages.
           8.10 Filenames.         When the user opens a file for reading or wri
ting the name of the file         to be read or written is specified. The filena
me is a string of any 16         characters (#00..#FF). If the file name specifi
ed is  longer  than  16         characters then  it  is  trunc  #P#########ated 
 and  if  it  is  shorter  than  16         characters it is padded to 16 charac
ters with nulls (character #00).           When opening a file for reading a zer
o length  filename  or  one  that         starts with a null has a special meani
ng - read the next file  on  the         tape. The Cassette Manager searches the
 tape until it finds the  first         block of a file and it reads this file. 
Once the first block of a file         has been found the Cassette Manager will 
only read rom that  file  and         no other.           BASIC  uses  a  slight
ly   extended   form   of   filename.   If   the         first character of a BA
SIC filename is an exclamation mark  (character         #21) the BASIC turns the
 prompt messages  off  (see  8.11  below)  and         removes the exclamation m
ark from  the  name.  This  facility  is  not         provided at the Cassette M
anager level.           AMSTRAD CPC464/664/6128 FIRMWARE                        
      page 8.7                     8.11 Cassette Manager Messages.           The
 Cassette Manager issues a number of messages to prompt and  inform         the 
user and to warn when errors  have  occurred.  The  messages  that         promp
t or inform the user may be turned off or on as desired (see  CAS         NOISY)
. Messages that inform the user of errors cannot be  turned  off         by this
 mechanism.           a. Prompt messages.                Press PLAY then any key
                This message is issued when the Cassette Manager is about to rea
d              the first block of a file from tape or when it is about to read a
              block  after  having  written  to  tape  (see  section  8.9).  It 
             indicates that the tape containing the file to be read should  be  
            loaded and that  the  PLAY  button  on  the  recorder  should  be   
           pressed. The Cassette Manager does  not  issue  this  message  at    
          other times since it assumes  that  the  correct  tape  is  still     
         loaded and that the PLAY button is still pressed.                Press 
REC and PLAY then any key                This message is issued when the  Casset
te  Manager  is  about  to              write the first block of a file to tape 
or when it  is  about  to              write a block after having read from tape
. It indicates that  the              tape on which the file is to be written sh
ould be loaded and that              the REC and PLAY buttons on the recorder sh
ould be  pressed.  The              Cassette Manager does not issue this message
 at other times since              it assumes that the correct tape is still loa
ded and that the REC              and PLAY buttons are still pressed.           
b. Information messages.                Found FILENAME block N                Th
is message is printed when reading from the tape  if  a  header              rec
ord is found that for any reason does  not  match  the  record              that
 was expected. This may indicate that the tape is  positioned              incor
rectly (too early or too late) or that  the  wrong  tape  is              being 
played.                Loading FILENAME block N                A block of the fi
le has been found and is being read from tape.                Saving FILENAME bl
ock N                A block of the file is being written to tape.           FIL
ENAME in the above messages is the name of  the  file  or  'Unnamed         file
' if the filename starts with a null.             The block number, N, indicates
 which block of the file is  being  read         or written. The first block of 
a file is normally block 1, the  second         block 2 etc.             AMSTRAD
 CPC464/664/6128 FIRMWARE                              page 8.8                 
    c. Error messages.               Rewind tape           While searching for a
 block of the file being read, a higher  numbered         block than that requir
ed has been found. The required block  has  been         missed. This message is
 often produced  after  a  read  error  in  the         required block when the 
next block is found.                Read error X                An error of some
 kind occurred whilst reading from tape. The tape              should be rewound
 and the block played again. The X is  a  single              letter indicating 
what kind of read error occurred                'a'           Bit too long      
  An impossibly long one or  zero                                               
 has been measured.  This  often                                                
indicates reading past the  end           $P$$$$$$$$$                           
            of the record.                'b'           CRC error           Data
   was   read   from   tape                                                incor
rectly.                'd'           Block too long      The data record  contai
ns  more                                                than the expected 2048 b
ytes of                                                data.                Writ
e error a                An error occurred whilst writing to the tape. There  is
  only  on              possible write error. This indicates that  the  Cassette
  Manager              was unable to write a bit as fast as was  requested.  Thi
s  error              will never occur unless the user has set the write  speed 
 beyond              the maximum possible.           8.12 Escape Key.           
The escape key on  the  keyboard  may  be  used  to  abandon  cassette         o
perations at certain times.           When the Cassette Manager issues one of th
e prompt messages  it  calls         KM READ CHAR repeatedly to empty the key bu
ffer out. Then it calls  KM         WAIT KEY to wait until the user presses is #
FC,  which  is  the  value         normally generated by the escape key, then th
e Cassette  Manager  will         abandon the read or write and will return an e
rror  condition  to  the         caller.           When reading from or writing 
to the cassette interrupts  are  disabled         and the normal key scanning me
chanism is not active. While reading  or         writing the record  leader  the
  Cassette  Manager  itself  scans  the         keyboard to test whether key 66,
 the escape key, is  pressed.  If  the         key is found to be pressed then t
he Cassette Manager abandons the read         or write  and  returns  to  the  c
aller  (with  an  appropriate  error         condition). While reading and writi
ng the data in the record there  is         no way to interrupt the Cassette Man
ager, thus pressing ESC may not be         detected for several seconds.        
       AMSTRAD CPC464/664/6128 FIRMWARE                              page 8.9   
                    8.13 Low Level Cassette Driving.             To allow the us
er to produce a new filing system the record  read  and         write routines, 
CAS READ and CAS WRITE, are in the firmware jumpblock.         There is a third 
routine at this level, CAS  CHECK,  whose  facilities         are not used by th
e higher levels of the Cassette Manager.  It  allows         the data that has b
een written to tape to be compared with the data in         store. This could be
 used to perform a read write check if so desired.             Also available in
 the firmware jumpblock  are  routines  to  turn  the         cassette motor on 
and off (CAS START MOTOR and CAS STOP MOTOR). It  is         not necessary to tu
rn the motor on and off around a call of CAS  READ,         CAS WRITE or CAS CHE
CK as these routines automatically turn the  motor         on and off.          
                                                                                
   AMSTRAD CPC464/664/6128 FIRMWARE                             page 8.10  eals 
with reading files from and  writing  files         ck  are  routines  to  turn 
 the         cassette motor on and off (CAS START MOTOR and CAS STOP MOTOR). It 
 is         not necessary to turn the motor on and off around a call of CAS  REA
D,         CAS WRITE or CAS CHECK as these routines automatically turn the  moto
r         on and off.                                                           
                                  AMDISC    BASpllZ    , ,   8"title.bin",£8 £Z 
   , ,   8"title.bin",£8 £8"dump.bin",  ,"start.bass8 firmware g  %P%%%%%%%%%0 8
pw8G08s988sxC9s09DUMP    MSHe last line of the screen properly **     PRESS SPAC
E !*J!S!!O!*J!SdOGC2nf!!JSd!O"2G!7 ++oyf!7R8*#+"  2f1fB(YKy YOC f ff*ffff!jf#+  
2/(  "$&)+-/2468!!Z#+* * * Parameter Error * * *  Use HELPDUMP,n - where n  a nu
mber from 1 to 25.  P.DUMP,nn,n - where nn  a number from 399 to 0.             
           n  a number from 1 to 25.  B.DUMP,n - where n  a number from 1 to 25.
  BP.DUMP,nn,n - where nn  a number from 399 to 0.                         n  a 
number from 1 to 25.  HELP - display RSX commands.  ** B.DUMP and BP.DUMP will n
ot dump the last line of the screen properly **     PRESS SPACE  6mDUMP.DUMB.DUM
BP.DUMHEL cp 1      * * *  Use HELPDUMP,n - where n  a number from 1 to 25.  P.D
UMP,nn,n - where nn  a number from 399 to 0.                        n  a number 
from 1 to 25.  B.DUMP,n - where n  a number from 1 to 25.  BP.DUMP,nn,n - where 
nn  a number from 399 to 0.                         n  a number from 1 to 25.  H
ELP - display RSX commands.  ** B.DUMP and BP.DUMP will not dump thPTITLE  BASpp
ress any key..."   2 £8.        8"title.bin",£8"dump.bin",  , ,   H( , "Please t
urn on printer and press any key..."   2 £8.     B.DUM,#,()    "apen6.bas"set6-1
", "set6-2", #""setb6-2",   x,fil"apen6-b" "6"blocks",   xfil"apen6-c" J"lines",
 T"6-5chars", "6-6cha-t", h"6-6cha-b", r"6-7char", "6-8char", "6-9char",   x    
 "apen-11.p1","apen-11.p2"Kfil"apen-8"  p        "append-8.baTITLE   BIN£88!Lw#0
B 0 8pw8G08s988sxC9s09  &P&&&&&&&&&sA9G!s3AG9G!scA9Gs#A9s #9spC89s9START   BASpr
rS  $ "index-1","index-2","index-3"D N/ #,,O,,#,,P,,#,,P,,'   ","M E N U  (1)" 1
) Preface,2) Contents,3) Chapter One,4) Chapter Two,5) Chapter Three,6) Chapter 
Four,7) Chapter Five,8) Chapter Six,9) Next Menu.( ,"I Introduction & Instructio
ns 2   F  (#)  dP       1Z    n,x,,,,,,,3d fil"indoc."   4 f5n fil"preface."   4
 f6x fil"contents."   4 f"     f"     f4   fil"chap-3." 4 f"     f4   fil"chap-5
." 4 f4   fil"chap-6." 4 f'   ","M E N U  (2)" 1) Chapter Seven,2) Chapter Eight
,3) Chapter Nine,4) Chapter Ten,5) Chapter Eleven,6) Chapter Twelve,7) Chapter T
hirteen,8) Previous Menu,9) Next Menu           1    ,,,,",,,6,,4   fil"chap-7."
 4 f"     f"     f"    $ f5"   fil"chap-11." 4 f5,   fil"chap-12." 4 f56   fil"c
hap-13." 4 f'   ","M E N U  (3)" J  T        T1h    r,,,,,,,,"r    8 f"    L f" 
    f5   fil"chap-17." 4 f"     f5   fil"chap-19." 4 f5   fil"chap-20." 4 f 1) C
hapter Fourteen,2) Chapter Fifteen,3) Chapter Sixteen,4) Chapter Seventeen,5) Ch
apter Eighteen,6) Chapter Nineteen,7) Chapter Twenty,8) Previous Menu,9) Next Me
nu'   ","M E N U  (4)"           1    n,,,,,,,,0 fil"ap4"   4 f3 fil"apen-5"   4
 f3 fil"apen-7"   4 f 1) Appendix One,2) Appendix Two,3) Appendix Three,4) Appen
dix Four,5) Appendix Five,6) Appendix Six,7) Appendix Seven,8) Previous Menu,9) 
Next Menu'   ","M E N U  (5)" &  0        01D    ,,N,X,,b,l,,4N fil"apen-10"   4
 f5X   fil"apen-11." 4 f"b    D fDl   "trans",    v  "apen-14.bas"Pvfil"apen-14.
p1"  d  Zfil"apen-14.p2"  f"    0 f 1) Appendix Eight,2) Appendix Nine,3) Append
ix Ten,4) Appendix Eleven,5) Appendix Twelve,6) Appendix Thirteen,7) Appendix Fo
urteen,8) Index,9) Menu oneQ#, ,#,"Press the key number of the Firmware Part you
 want (1 to 9)"2      !,  (C)- t(" 123456789",) () dis sid dis sid dis sid dis s
id dis sid dis sid dis sidd#  'P'''''''''  ,"Please insert Disc " dis" side " si
d" and press any key..." O "!"fil   £#,           (B)  X*  4      #"!"fil   £#,H
  (B)  XR#,-#,!,#,"Press a key.." #Rf# !,"F I N I S H E D" , "Press C to Continu
e or E to End"p  ()  z  ()    p -# ,"S Screen or P Printer"  ()     ()       "ch
ap-1.p1","chap-1.p2"  "chap-2.p1","chap-2.p2"  "chap-4.p1","chap-4.p2"  "chap-8.
p1","chap-8.p2"  "chap-9.p1","chap-9.p2"$ . ."chap-10.p1","chap-10.p2"8 B ,B"cha
p-14.p1","chap-14.p2","chap-14.p3"9L V  file   fil 4  ,V"chap-15.p1","chap-15.p2
","chap-15.p3" j  file   fil 4  j"chap-15.p4","chap-15.p5","chap-15.p6","chap-15
.p7","chap-15.p8","chap-15.p9","chap-15.p10","chap-15.p11","chap-15.p12","chap-1
5.p13","chap-15.p14"/t   file   fil 4u"chap-15.p15","chap-15.p16","chap-15.p17",
"chap-15.p18","chap-15.p19","chap-15.p20","chap-15.p21","chap-15.p22"  "chap-16.
p1","chap-16.p2"  "chap-18.p1","chap-18.p2")  file   fil 4)  file   fil 4Gfil"ap
2"        4  "append2.bas""Normal Translation Table.""The following diagram desc
ribes the translation when neither shift  nor  controlis pressed." "2-4main", d"
pad2-4", d"joy2-4", d5  Z"2-5main""Shift Translation Table.""The following diagr
am desribes the translation when either shift key is pressed,or the shift lock i
s on, but the control key is not pressed."     d"pad2-5", d""joy2-5", d  Z("Cont
rol Translation Table.""The following diagram describes the translation when the
 control key is pressed."  2"2-6main", d"pad2-6", dF"joy2-6", dP  Z f7Z#,,O,,#,,
P,,#,,P,, £8d   Jnfil"AP1-1"        4  "append-1.bas"x"464-AP1", d"6128-ap1", d"
pads", d"joys", d$  Zfil"ap1-2" 4  fLfil"append3"        4  "append-3.bas""3-1MA
IN", d"PAD3-1", d"JOY3-1", d  Z fHfil"apen6-a"        4  "apen6.bas"set6-1", d"s
et6-2", d#"setb6-2", d  Zfil"apen6-b" 4""blocks", d  Z"fil"apen6-c" 4,"lines", d
6"6-5chars", d"6-6cha-t", dJ"6-6cha-b", dT"6-7char", d"6-8char", dh"6-9char", dr
  Z fHfil"apen-8"        4  "apen8.bas""apen8-a", d  Z fDfil"apen-9"        4  "
apen9""apen9-a", d"apen9-b", d,  Zfil"apen-9c" 4 fIfil"apen-12.p1"        4  "ap
en12"fil"apen-12.p2" 4"12-13bot", d)  Zfil"apen-12.p4" 4"12-14bot", d)  Zfil"ape
n-12.p5" 4"f-sys", d*  Zfil"apen-12a.p6" 4"FRENCH", d)  Zfil"apen-12.p6" 4 & f0 
 $ "index-1","index-2","index-3"D N  N "apen-13.p1","apen-13.p2"X f Kernel  for 
Tous droits réservés. Reproduction sans autorisation interdite. © Kukulcan