Firmware Guide (UK) (Disk 2 face 2) (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 35 20 D0 31 35 00 00 00 71    .CHAP-15 .15...q
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 35 20 D0 31 36 00 00 00 80    .CHAP-15 .16....
000230:  11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20    ............... 
000240:  00 43 48 41 50 2D 31 35 20 D0 31 36 01 00 00 04    .CHAP-15 .16....
000250:  21 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    !...............
000260:  00 43 48 41 50 2D 31 35 20 D0 31 37 00 00 00 80    .CHAP-15 .17....
000270:  22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31    "#$%&'()*+,-./01
000280:  00 43 48 41 50 2D 31 35 20 D0 31 37 01 00 00 01    .CHAP-15 .17....
000290:  32 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    2...............
0002A0:  00 43 48 41 50 2D 31 35 20 D0 31 38 00 00 00 7D    .CHAP-15 .18...}
0002B0:  33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42    3456789:;<=>?@AB
0002C0:  00 43 48 41 50 2D 31 35 20 D0 31 39 00 00 00 80    .CHAP-15 .19....
0002D0:  43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52    CDEFGHIJKLMNOPQR
0002E0:  00 43 48 41 50 2D 31 35 20 D0 31 39 01 00 00 02    .CHAP-15 .19....
0002F0:  53 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    S...............
000300:  00 43 48 41 50 2D 31 35 20 D0 32 30 00 00 00 80    .CHAP-15 .20....
000310:  54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63    TUVWXYZ[\]^_`abc
000320:  00 43 48 41 50 2D 31 35 20 D0 32 30 01 00 00 08    .CHAP-15 .20....
000330:  64 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    d...............
000340:  00 43 48 41 50 2D 31 35 20 D0 32 31 00 00 00 80    .CHAP-15 .21....
000350:  65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74    efghijklmnopqrst
000360:  00 43 48 41 50 2D 31 35 20 D0 32 31 01 00 00 03    .CHAP-15 .21....
000370:  75 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    u...............
000380:  00 43 48 41 50 2D 31 35 20 D0 32 32 00 00 00 3D    .CHAP-15 .22...=
000390:  76 77 78 79 7A 7B 7C 7D 00 00 00 00 00 00 00 00    vwxyz{|}........
0003A0:  00 43 48 41 50 2D 31 36 20 D0 31 20 00 00 00 80    .CHAP-16 .1 ....
0003B0:  7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D    ~...............
0003C0:  00 43 48 41 50 2D 31 36 20 D0 31 20 01 00 00 05    .CHAP-16 .1 ....
0003D0:  8E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0003E0:  00 43 48 41 50 2D 31 36 20 D0 32 20 00 00 00 42    .CHAP-16 .2 ...B
0003F0:  8F 90 91 92 93 94 95 96 97 00 00 00 00 00 00 00    ................
000400:  00 43 48 41 50 2D 31 37 20 A0 20 20 00 00 00 80    .CHAP-17 .  ....
000410:  98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7    ...........£....
000420:  00 43 48 41 50 2D 31 37 20 A0 20 20 01 00 00 08    .CHAP-17 .  ....
000430:  A8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0004A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0004B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0004C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0004D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0004E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0004F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0005A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0005B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0005C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0005D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0005E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0005F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000600:  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 0D 0A 0D 0A 20 20 20 20    ............    
000A10:  20 20 20 54 68 65 20 70 72 6F 6D 70 74 20 6D 65       The prompt me
000A20:  73 73 61 67 65 73 20 61 72 65 20 74 75 72 6E 65    ssages are turne
000A30:  64 20 6F 6E 20 28 73 65 65 20 43 41 53 20 4E 4F    d on (see CAS NO
000A40:  49 53 59 29 20 62 79 20 74 68 69 73 20 72 6F 75    ISY) by this rou
000A50:  74 69 6E 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    tine.......     
000A60:  20 20 57 68 65 6E 20 63 61 74 61 6C 6F 67 75 69      When catalogui
000A70:  6E 67 20 74 68 65 20 43 61 73 73 65 74 74 65 20    ng the Cassette 
000A80:  4D 61 6E 61 67 65 72 20 72 65 61 64 73 20 74 68    Manager reads th
000A90:  65 20 68 65 61 64 65 72 20 72 65 63 6F 72 64 2C    e header record,
000AA0:  20 20 70 72 69 6E 74 73 0D 0A 20 20 20 20 20 20      prints..      
000AB0:  20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 66 72 6F     information fro
000AC0:  6D 20 69 74 20 61 6E 64 20 74 68 65 6E 20 72 65    m it and then re
000AD0:  61 64 73 20 74 68 65 20 64 61 74 61 20 72 65 63    ads the data rec
000AE0:  6F 72 64 2E 20 54 68 69 73 20 63 79 63 6C 65 20    ord. This cycle 
000AF0:  72 65 70 65 61 74 73 0D 0A 20 20 20 20 20 20 20    repeats..       
000B00:  75 6E 74 69 6C 20 74 68 65 20 75 73 65 72 20 68    until the user h
000B10:  69 74 73 20 74 68 65 20 65 73 63 61 70 65 20 6B    its the escape k
000B20:  65 79 2E 20 20 54 68 65 20 20 69 6E 66 6F 72 6D    ey.  The  inform
000B30:  61 74 69 6F 6E 20 20 70 72 69 6E 74 65 64 20 20    ation  printed  
000B40:  69 73 20 20 61 73 0D 0A 20 20 20 20 20 20 20 66    is  as..       f
000B50:  6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 0D 0A 20 20 20    ollows:......   
000B60:  20 20 20 20 20 20 20 20 20 20 20 20 20 46 49 4C                 FIL
000B70:  45 4E 41 4D 45 20 62 6C 6F 63 6B 20 4E 20 54 20    ENAME block N T 
000B80:  4F 6B 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 46    Ok......       F
000B90:  49 4C 45 4E 41 4D 45 20 69 73 20 74 68 65 20 6E    ILENAME is the n
000BA0:  61 6D 65 20 6F 66 20 74 68 65 20 66 69 6C 65 20    ame of the file 
000BB0:  6F 6E 20 74 68 65 20 74 61 70 65 2C 20 6F 72 20    on the tape, or 
000BC0:  27 55 6E 6E 61 6D 65 64 20 66 69 6C 65 27 20 69    'Unnamed file' i
000BD0:  66 20 74 68 65 0D 0A 20 20 20 20 20 20 20 66 69    f the..       fi
000BE0:  6C 65 6E 61 6D 65 20 73 74 61 72 74 73 20 77 69    lename starts wi
000BF0:  74 68 20 61 20 6E 75 6C 6C 20 28 63 68 61 72 61    th a null (chara
000C00:  63 74 65 72 20 23 30 30 29 2E 0D 0A 0D 0A 0D 0A    cter #00).......
000C10:  20 20 20 20 20 20 20 4E 20 69 73 20 74 68 65 20           N is the 
000C20:  62 6C 6F 63 6B 2E 20 42 6C 6F 63 6B 20 31 20 69    block. Block 1 i
000C30:  73 20 6E 6F 72 6D 61 6C 6C 79 20 74 68 65 20 66    s normally the f
000C40:  69 72 73 74 20 62 6C 6F 63 6B 20 69 6E 20 61 20    irst block in a 
000C50:  66 69 6C 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    file.......     
000C60:  20 20 54 20 69 73 20 61 20 72 65 70 72 65 73 65      T is a represe
000C70:  6E 74 61 74 69 6F 6E 20 6F 66 20 74 68 65 20 66    ntation of the f
000C80:  69 6C 65 20 74 79 70 65 20 6F 66 20 74 68 65 20    ile type of the 
000C90:  66 69 6C 65 2E 20 49 74 20 20 69 73 20 20 66 6F    file. It  is  fo
000CA0:  72 6D 65 64 20 20 62 79 0D 0A 20 20 20 20 20 20    rmed  by..      
000CB0:  20 61 64 64 69 6E 67 20 23 32 34 20 28 74 68 65     adding #24 (the
000CC0:  20 63 68 61 72 61 63 74 65 72 20 27 24 27 29 20     character '$') 
000CD0:  74 6F 20 74 68 65 20 66 69 6C 65 20 74 79 70 65    to the file type
000CE0:  20 62 79 74 65 20 6D 61 73 6B 65 64 20 20 77 69     byte masked  wi
000CF0:  74 68 20 20 23 30 46 0D 0A 20 20 20 20 20 20 20    th  #0F..       
000D00:  28 74 6F 20 72 65 6D 6F 76 65 20 74 68 65 20 76    (to remove the v
000D10:  65 72 73 69 6F 6E 20 6E 75 6D 62 65 72 20 66 69    ersion number fi
000D20:  65 6C 64 29 2E 20 20 54 68 65 20 20 73 74 61 6E    eld).  The  stan
000D30:  64 61 72 64 20 20 66 69 6C 65 20 20 74 79 70 65    dard  file  type
000D40:  73 20 20 61 72 65 0D 0A 20 20 20 20 20 20 20 74    s  are..       t
000D50:  68 75 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    hus:......      
000D60:  20 20 20 20 20 20 20 20 20 20 24 20 20 20 20 20              $     
000D70:  20 20 20 20 61 20 42 41 53 49 43 20 70 72 6F 67        a BASIC prog
000D80:  72 61 6D 20 66 69 6C 65 0D 0A 20 20 20 20 20 20    ram file..      
000D90:  20 20 20 20 20 20 20 20 20 20 25 20 20 20 20 20              %     
000DA0:  20 20 20 20 61 20 70 72 6F 74 65 63 74 65 64 20        a protected 
000DB0:  42 41 53 49 43 20 70 72 6F 67 72 61 6D 20 66 69    BASIC program fi
000DC0:  6C 65 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    le..            
000DD0:  20 20 20 20 2A 20 20 20 20 20 20 20 20 20 61 6E        *         an
000DE0:  20 41 53 43 49 49 20 74 65 78 74 20 66 69 6C 65     ASCII text file
000DF0:  20 28 64 65 66 61 75 6C 74 20 66 69 6C 65 20 74     (default file t
000E00:  79 70 65 29 0D 0A 20 20 20 20 20 20 20 20 20 20    ype)..          
000E10:  20 20 20 20 20 20 26 20 20 20 20 20 20 20 20 20          &         
000E20:  61 20 62 69 6E 61 72 79 20 66 69 6C 65 2E 0D 0A    a binary file...
000E30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
000E40:  27 20 20 20 20 20 20 20 20 20 61 20 70 72 6F 74    '         a prot
000E50:  65 63 74 65 64 20 62 69 6E 61 72 79 20 66 69 6C    ected binary fil
000E60:  65 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4F 74    e......       Ot
000E70:  68 65 72 20 66 69 6C 65 20 74 79 70 65 73 20 61    her file types a
000E80:  72 65 20 70 6F 73 73 69 62 6C 65 20 62 75 74 20    re possible but 
000E90:  77 69 6C 6C 20 6E 6F 74 20 68 61 76 65 20 62 65    will not have be
000EA0:  65 6E 20 20 77 72 69 74 74 65 6E 20 20 62 79 20    en  written  by 
000EB0:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 42 41 53     the..       BAS
000EC0:  49 43 20 69 6E 20 20 74 68 65 20 6F 6E 2D 62 6F    IC in  the on-bo
000ED0:  61 72 64 20 52 4F 4D 2E 20 53 65 65 20 73 65 63    ard ROM. See sec
000EE0:  74 69 6F 6E 20 38 2E 34 20 66 6F 72 20 61 20 64    tion 8.4 for a d
000EF0:  65 73 63 72 69 70 74 69 6F 6E 20 20 6F 66 20 20    escription  of  
000F00:  74 68 65 0D 0A 20 20 20 20 20 20 20 66 69 6C 65    the..       file
000F10:  20 74 79 70 65 20 62 79 74 65 2E 0D 0A 0D 0A 0D     type byte......
000F20:  0A 20 20 20 20 20 20 20 4F 6B 20 69 73 20 70 72    .       Ok is pr
000F30:  69 6E 74 65 64 20 61 66 74 65 72 20 74 68 65 20    inted after the 
000F40:  65 6E 64 20 6F 66 20 74 68 65 20 64 61 74 61 20    end of the data 
000F50:  72 65 63 6F 72 64 2E 20 54 68 69 73 20 20 73 68    record. This  sh
000F60:  6F 77 73 20 20 74 68 61 74 20 20 74 68 65 0D 0A    ows  that  the..
000F70:  20 20 20 20 20 20 20 64 61 74 61 20 77 61 73 20           data was 
000F80:  72 65 61 64 20 77 69 74 68 6F 75 74 20 65 72 72    read without err
000F90:  6F 72 73 20 61 6E 64 20 61 6C 73 6F 20 73 65 72    ors and also ser
000FA0:  76 65 73 20 74 6F 20 69 6E 64 69 63 61 74 65 20    ves to indicate 
000FB0:  20 74 68 65 20 20 65 6E 64 20 20 6F 66 0D 0A 20     the  end  of.. 
000FC0:  20 20 20 20 20 20 74 68 65 20 64 61 74 61 20 6F          the data o
000FD0:  6E 20 74 61 70 65 20 28 74 6F 20 68 65 6C 70 20    n tape (to help 
000FE0:  61 76 6F 69 64 20 6F 76 65 72 2D 72 65 63 6F 72    avoid over-recor
000FF0:  64 69 6E 67 20 61 20 74 61 70 65 20 66 69 6C 65    ding a tape file
001000:  29 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ).........      
001010:  20 52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73     Related entries
001020:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 43 41    :......       CA
001030:  53 20 43 41 54 41 4C 4F 47 20 28 44 49 53 43 29    S CATALOG (DISC)
001040:  0D 0A 20 20 20 20 20 20 20 43 41 53 20 4E 4F 49    ..       CAS NOI
001050:  53 59 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    SY..............
001060:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
001070:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
001080:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
001090:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
0010A0:  20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65                page
0010B0:  20 31 35 2E 31 36 30 0D 0A 0D 0A 0D 0A 0D 0A 0D     15.160.........
0010C0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 33 37 3A    .....       137:
0010D0:  20 43 41 53 20 43 41 54 41 4C 4F 47 20 28 44 49     CAS CATALOG (DI
0010E0:  53 43 29 20 20 20 20 20 20 20 20 20 20 20 20 20    SC)             
0010F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
001100:  20 20 20 20 20 20 20 20 20 20 20 20 20 23 42 43                 #BC
001110:  39 42 0D 0A 0D 0A 20 20 20 20 20 20 20 44 69 73    9B....       Dis
001120:  70 6C 61 79 20 74 68 65 20 64 69 73 63 20 64 69    play the disc di
001130:  72 65 63 74 6F 72 79 0D 0A 0D 0A 20 20 20 20 20    rectory....     
001140:  20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 20 20 20      Action:....   
001150:  20 20 20 20 44 69 73 70 6C 61 79 20 74 68 65 20        Display the 
001160:  64 69 73 63 20 64 69 72 65 63 74 6F 72 79 20 66    disc directory f
001170:  6F 72 20 74 68 65 20 63 75 72 72 65 6E 74 20 64    or the current d
001180:  72 69 76 65 20 61 6E 64 20 63 75 72 72 65 6E 74    rive and current
001190:  20 75 73 65 72 2E 20 54 68 65 0D 0A 0D 0A 20 20     user. The....  
0011A0:  20 20 20 20 20 64 69 72 65 63 74 6F 72 79 20 69         directory i
0011B0:  73 20 73 6F 72 74 65 64 20 69 6E 74 6F 20 61 6C    s sorted into al
0011C0:  70 68 61 62 65 74 69 63 61 6C 20 6F 72 64 65 72    phabetical order
0011D0:  20 61 6E 64 20 64 69 73 70 6C 61 79 65 64 20 69     and displayed i
0011E0:  6E 20 20 61 73 20 20 6D 61 6E 79 0D 0A 20 20 20    n  as  many..   
0011F0:  20 20 20 20 63 6F 6C 75 6D 6E 73 20 61 73 20 77        columns as w
001200:  69 6C 6C 20 66 69 74 20 69 6E 20 74 68 65 20 63    ill fit in the c
001210:  75 72 72 65 6E 74 20 74 65 78 74 20 77 69 6E 64    urrent text wind
001220:  6F 77 20 28 73 74 72 65 61 6D 23 30 29 2E 20 54    ow (stream#0). T
001230:  68 65 20 73 69 7A 65 20 69 6E 0D 0A 20 20 20 20    he size in..    
001240:  20 20 20 4B 62 79 74 65 73 20 69 73 20 73 68 6F       Kbytes is sho
001250:  77 6E 20 61 6C 6F 6E 67 20 73 69 64 65 20 65 61    wn along side ea
001260:  63 68 20 66 69 6C 65 2E 20 54 68 65 20 74 6F 74    ch file. The tot
001270:  61 6C 20 61 6D 6F 75 6E 74 20 6F 66 20 20 66 72    al amount of  fr
001280:  65 65 20 20 73 70 61 63 65 0D 0A 20 20 20 20 20    ee  space..     
001290:  20 20 6F 6E 20 74 68 65 20 64 69 73 63 20 69 73      on the disc is
0012A0:  20 61 6C 73 6F 20 73 68 6F 77 6E 2E 0D 0A 0D 0A     also shown.....
0012B0:  20 20 20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E           Entry con
0012C0:  64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20    ditions:....    
0012D0:  20 20 20 44 45 20 63 6F 6E 74 61 69 6E 73 20 74       DE contains t
0012E0:  68 65 20 61 64 64 72 65 73 73 20 6F 66 20 61 20    he address of a 
0012F0:  32 4B 20 62 75 66 66 65 72 20 74 6F 20 75 73 65    2K buffer to use
001300:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74    .....       Exit
001310:  20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A     conditions:....
001320:  20 20 20 20 20 20 20 49 66 20 74 68 65 20 63 61           If the ca
001330:  74 61 6C 6F 67 69 6E 67 20 77 65 6E 74 20 4F 4B    taloging went OK
001340:  3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    :....           
001350:  20 20 20 20 20 43 61 72 72 79 20 74 72 75 65 2E         Carry true.
001360:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
001370:  20 20 5A 65 72 6F 20 66 61 6C 73 65 2E 0D 0A 20      Zero false... 
001380:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                   A
001390:  20 63 6F 72 72 75 70 74 2E 0D 0A 0D 0A 20 20 20     corrupt.....   
0013A0:  20 20 20 20 49 66 20 66 61 69 6C 65 64 20 66 6F        If failed fo
0013B0:  72 20 61 6E 79 20 72 65 61 73 6F 6E 3A 0D 0A 0D    r any reason:...
0013C0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
0013D0:  20 43 61 72 72 79 20 66 61 6C 73 65 2E 0D 0A 20     Carry false... 
0013E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5A                   Z
0013F0:  65 72 6F 20 74 72 75 65 2E 0D 0A 20 20 20 20 20    ero true...     
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:  20 20 20 20 20 20 20 20 20 20 20 41 20 63 6F 6E               A con
001510:  74 61 69 6E 73 20 61 6E 20 65 72 72 6F 72 20 6E    tains an error n
001520:  75 6D 62 65 72 2E 0D 0A 0D 0A 20 20 20 20 20 20    umber.....      
001530:  20 41 6C 77 61 79 73 0D 0A 0D 0A 20 20 20 20 20     Always....     
001540:  20 20 20 20 20 20 20 20 20 20 20 42 43 2C 44 45               BC,DE
001550:  2C 48 4C 2C 49 58 20 61 6E 64 20 6F 74 68 65 72    ,HL,IX and other
001560:  20 66 6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D     flags corrupt..
001570:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
001580:  20 41 6C 6C 20 72 65 67 69 73 74 65 72 73 20 70     All registers p
001590:  72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 20 20 20    reserved.....   
0015A0:  20 20 20 20 4E 4F 54 45 53 3A 0D 0A 0D 0A 20 20        NOTES:....  
0015B0:  20 20 20 20 20 46 69 6C 65 73 20 6D 61 72 6B 65         Files marke
0015C0:  64 20 53 59 53 20 61 72 65 20 6E 6F 74 20 73 68    d SYS are not sh
0015D0:  6F 77 6E 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    own.......      
0015E0:  20 46 69 6C 65 73 20 6D 61 72 6B 65 64 20 52 2F     Files marked R/
0015F0:  4F 20 61 72 65 20 73 68 6F 77 6E 20 77 69 74 68    O are shown with
001600:  20 61 20 27 2A 27 20 61 66 74 65 72 20 74 68 65     a '*' after the
001610:  20 66 69 6C 65 6E 61 6D 65 2E 0D 0A 0D 0A 0D 0A     filename.......
001620:  20 20 20 20 20 20 20 55 6E 6C 69 6B 65 20 74 68           Unlike th
001630:  65 20 63 61 73 73 65 74 74 65 20 76 65 72 73 69    e cassette versi
001640:  6F 6E 20 6F 66 20 74 68 69 73 20 72 6F 75 74 69    on of this routi
001650:  6E 65 2C 20 74 68 65 20 64 69 73 63 20 69 6E 70    ne, the disc inp
001660:  75 74 20 73 74 72 65 61 6D 20 20 69 73 0D 0A 20    ut stream  is.. 
001670:  20 20 20 20 20 20 6E 6F 74 20 72 65 71 75 69 72          not requir
001680:  65 64 2E 20 28 4E 6F 74 65 3A 20 42 41 53 49 43    ed. (Note: BASIC
001690:  20 61 62 61 6E 64 6F 6E 73 20 62 6F 74 68 20 74     abandons both t
0016A0:  68 65 20 69 6E 70 75 74 20 61 6E 64 20 6F 75 74    he input and out
0016B0:  70 75 74 20 20 73 74 72 65 61 6D 73 0D 0A 20 20    put  streams..  
0016C0:  20 20 20 20 20 77 68 65 6E 20 67 65 6E 65 72 61         when genera
0016D0:  74 69 6E 67 20 74 68 65 20 63 61 74 61 6C 6F 67    ting the catalog
0016E0:  75 65 2E 29 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ue.)........    
0016F0:  20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72 69       Related entri
001700:  65 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 43 41    es:....       CA
001710:  53 20 43 41 54 41 4C 4F 47 0D 0A 20 20 20 20 20    S CATALOG..     
001720:  20 20 7C 44 49 52 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A      |DIR..........
001730:  0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44    ..       AMSTRAD
001740:  20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38     CPC464/664/6128
001750:  20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20     FIRMWARE       
001760:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
001770:  20 20 20 20 70 61 67 65 20 31 35 2E 31 36 31 0D        page 15.161.
001780:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
001790:  20 20 20 20 31 33 38 3A 20 43 41 53 20 57 52 49        138: CAS WRI
0017A0:  54 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    TE              
0017B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0017C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0017D0:  20 20 20 20 20 23 42 43 39 45 0D 0A 0D 0A 20 20         #BC9E....  
0017E0:  20 20 20 20 20 57 72 69 74 65 20 61 20 72 65 63         Write a rec
0017F0:  6F 72 64 20 74 6F 20 74 61 70 65 2E 0D 0A 0D 0A    ord to tape.....
001800:  20 20 20 20 20 20 20 41 63 74 69 6F 6E 2E 0D 0A           Action...
001810:  0D 0A 20 20 20 20 20 20 20 57 72 69 74 65 20 61    ..       Write a
001820:  20 72 65 63 6F 72 64 20 74 6F 20 74 68 65 20 63     record to the c
001830:  61 73 73 65 74 74 65 2E 20 54 68 69 73 20 72 6F    assette. This ro
001840:  75 74 69 6E 65 20 69 73 20 20 75 73 65 64 20 20    utine is  used  
001850:  62 79 20 20 74 68 65 20 20 68 69 67 68 65 72 0D    by  the  higher.
001860:  0A 20 20 20 20 20 20 20 6C 65 76 65 6C 20 72 6F    .       level ro
001870:  75 74 69 6E 65 73 20 28 43 41 53 20 4F 55 54 20    utines (CAS OUT 
001880:  43 48 41 52 2C 20 43 41 53 20 4F 55 54 20 44 49    CHAR, CAS OUT DI
001890:  52 45 43 54 20 61 6E 64 20 20 43 41 53 20 20 4F    RECT and  CAS  O
0018A0:  55 54 20 20 43 4C 4F 53 45 29 20 20 74 6F 0D 0A    UT  CLOSE)  to..
0018B0:  20 20 20 20 20 20 20 77 72 69 74 65 20 74 68 65           write the
0018C0:  20 68 65 61 64 65 72 20 61 6E 64 20 64 61 74 61     header and data
0018D0:  20 72 65 63 6F 72 64 73 20 74 68 61 74 20 6D 61     records that ma
0018E0:  6B 65 20 75 70 20 61 20 74 61 70 65 20 66 69 6C    ke up a tape fil
0018F0:  65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74    e.....       Ent
001900:  72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    ry conditions:..
001910:  0D 0A 20 20 20 20 20 20 20 48 4C 20 63 6F 6E 74    ..       HL cont
001920:  61 69 6E 73 20 74 68 65 20 61 64 64 72 65 73 73    ains the address
001930:  20 6F 66 20 74 68 65 20 64 61 74 61 20 74 6F 20     of the data to 
001940:  77 72 69 74 65 2E 0D 0A 20 20 20 20 20 20 20 44    write...       D
001950:  45 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 6C    E contains the l
001960:  65 6E 67 74 68 20 6F 66 20 74 68 65 20 64 61 74    ength of the dat
001970:  61 20 74 6F 20 77 72 69 74 65 2E 0D 0A 20 20 20    a to write...   
001980:  20 20 20 20 41 20 63 6F 6E 74 61 69 6E 73 20 74        A contains t
001990:  68 65 20 73 79 6E 63 20 63 68 61 72 61 63 74 65    he sync characte
0019A0:  72 20 74 6F 20 77 72 69 74 65 20 61 74 20 74 68    r to write at th
0019B0:  65 20 65 6E 64 20 6F 66 20 74 68 65 20 6C 65 61    e end of the lea
0019C0:  64 65 72 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45    der.....       E
0019D0:  78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D    xit conditions:.
0019E0:  0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74 68 65    ...       If the
0019F0:  20 72 65 63 6F 72 64 20 77 61 73 20 77 72 69 74     record was writ
001A00:  74 65 6E 20 4F 4B 3A 0D 0A 0D 0A 20 20 20 20 20    ten OK:....     
001A10:  20 20 20 20 20 20 20 20 20 20 20 43 61 72 72 79               Carry
001A20:  20 74 72 75 65 2E 0D 0A 20 20 20 20 20 20 20 20     true...        
001A30:  20 20 20 20 20 20 20 20 41 20 63 6F 72 72 75 70            A corrup
001A40:  74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20    t.....       If 
001A50:  61 6E 20 65 72 72 6F 72 20 6F 63 63 75 72 72 65    an error occurre
001A60:  64 20 6F 72 20 74 68 65 20 75 73 65 72 20 68 69    d or the user hi
001A70:  74 20 65 73 63 61 70 65 3A 0D 0A 0D 0A 20 20 20    t escape:....   
001A80:  20 20 20 20 20 20 20 20 20 20 20 20 20 43 61 72                 Car
001A90:  72 79 20 66 61 6C 73 65 2E 0D 0A 20 20 20 20 20    ry false...     
001AA0:  20 20 20 20 20 20 20 20 20 20 20 41 20 63 6F 6E               A con
001AB0:  74 61 69 6E 73 20 61 6E 20 65 72 72 6F 72 20 63    tains an error c
001AC0:  6F 64 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ode.....       A
001AD0:  6C 77 61 79 73 3A 0D 0A 0D 0A 20 20 20 20 20 20    lways:....      
001AE0:  20 20 20 20 20 20 20 20 20 20 42 43 2C 20 44 45              BC, DE
001AF0:  2C 20 48 4C 2C 20 49 58 20 63 6F 72 72 75 70 74    , HL, IX corrupt
001B00:  2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
001B10:  20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67       All other reg
001B20:  69 73 74 65 72 73 20 70 72 65 73 65 72 76 65 64    isters preserved
001B30:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65    .....       Note
001B40:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    s:......       A
001B50:  20 64 61 74 61 20 6C 65 6E 67 74 68 20 6F 66 20     data length of 
001B60:  30 20 70 61 73 73 65 64 20 74 6F 20 74 68 69 73    0 passed to this
001B70:  20 72 6F 75 74 69 6E 65 20 69 73 20 74 61 6B 65     routine is take
001B80:  6E 20 74 6F 20 6D 65 61 6E 20 36 35 35 33 36 20    n to mean 65536 
001B90:  62 79 74 65 73 0D 0A 20 20 20 20 20 20 20 61 6E    bytes..       an
001BA0:  64 20 61 6C 6C 20 6F 66 20 74 68 65 20 6D 65 6D    d all of the mem
001BB0:  6F 72 79 20 77 69 6C 6C 20 62 65 20 77 72 69 74    ory will be writ
001BC0:  74 65 6E 20 74 6F 20 74 61 70 65 2E 20 28 54 68    ten to tape. (Th
001BD0:  69 73 20 69 73 20 75 6E 6C 69 6B 65 6C 79 20 74    is is unlikely t
001BE0:  6F 20 62 65 0D 0A 20 20 20 20 20 20 20 75 73 65    o be..       use
001BF0:  66 75 6C 29 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ful).......     
001C00:  20 20 54 68 65 20 64 61 74 61 20 74 6F 20 62 65      The data to be
001C10:  20 77 72 69 74 74 65 6E 20 6D 61 79 20 6C 69 65     written may lie
001C20:  20 61 6E 79 77 68 65 72 65 20 69 6E 20 52 41 4D     anywhere in RAM
001C30:  2C 20 65 76 65 6E 20 75 6E 64 65 72 6E 65 61 74    , even underneat
001C40:  68 20 61 20 52 4F 4D 2E 0D 0A 0D 0A 0D 0A 20 20    h a ROM.......  
001C50:  20 20 20 20 20 54 68 65 20 73 79 6E 63 20 63 68         The sync ch
001C60:  61 72 61 63 74 65 72 20 69 73 20 75 73 65 64 20    aracter is used 
001C70:  74 6F 20 64 69 73 74 69 6E 67 75 69 73 68 20 68    to distinguish h
001C80:  65 61 64 65 72 20 72 65 63 6F 72 64 73 20 28 73    eader records (s
001C90:  79 6E 63 20 69 73 20 23 32 43 29 0D 0A 20 20 20    ync is #2C)..   
001CA0:  20 20 20 20 66 72 6F 6D 20 64 61 74 61 20 72 65        from data re
001CB0:  63 6F 72 64 73 20 28 73 79 6E 63 20 69 73 20 23    cords (sync is #
001CC0:  31 36 29 2E 20 4F 74 68 65 72 20 73 79 6E 63 20    16). Other sync 
001CD0:  63 68 61 72 61 63 74 65 72 73 20 63 6F 75 6C 64    characters could
001CE0:  20 20 62 65 20 20 75 73 65 64 0D 0A 20 20 20 20      be  used..    
001CF0:  20 20 20 62 75 74 20 74 68 65 20 72 65 73 75 6C       but the resul
001D00:  74 69 6E 67 20 72 65 63 6F 72 64 20 77 6F 75 6C    ting record woul
001D10:  64 20 72 65 71 75 69 72 65 20 73 70 65 63 69 61    d require specia
001D20:  6C 20 61 63 74 69 6F 6E 20 74 6F 20 62 65 20 20    l action to be  
001D30:  74 61 6B 65 6E 20 20 74 6F 0D 0A 20 20 20 20 20    taken  to..     
001D40:  20 20 72 65 61 64 20 69 74 2E 0D 0A 0D 0A 0D 0A      read it.......
001D50:  20 20 20 20 20 20 20 54 68 65 20 65 72 72 6F 72           The error
001D60:  20 63 6F 64 65 73 20 72 65 74 75 72 6E 65 64 20     codes returned 
001D70:  62 79 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20    by this routine 
001D80:  61 72 65 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20    are:....        
001D90:  20 20 20 20 20 20 20 20 30 20 20 20 20 42 72 65            0    Bre
001DA0:  61 6B 20 20 20 20 20 20 20 20 20 20 54 68 65 20    ak          The 
001DB0:  75 73 65 72 20 68 69 74 20 74 68 65 20 65 73 63    user hit the esc
001DC0:  61 70 65 20 6B 65 79 2E 0D 0A 20 20 20 20 20 20    ape key...      
001DD0:  20 20 20 20 20 20 20 20 20 20 31 20 20 20 20 4F              1    O
001DE0:  76 65 72 72 75 6E 20 20 20 20 20 20 20 20 54 68    verrun        Th
001DF0:  65 20 43 61 73 73 65 74 74 65 20 4D 61 6E 61 67    e Cassette Manag
001E00:  65 72 20 77 61 73 20 20 75 6E 61 62 6C 65 20 20    er was  unable  
001E10:  74 6F 20 20 67 65 74 0D 0A 20 20 20 20 20 20 20    to  get..       
001E20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
001E30:  20 20 20 20 20 20 20 20 20 20 20 20 20 62 61 63                 bac
001E40:  6B 20 74 6F 20 77 72 69 74 69 6E 67 20 61 20 62    k to writing a b
001E50:  69 74 20 66 61 73 74 20 65 6E 6F 75 67 68 2E 0D    it fast enough..
001E60:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
001E70:  41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36    AMSTRAD CPC464/6
001E80:  36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45    64/6128 FIRMWARE
001E90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
001EA0:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
001EB0:  31 35 2E 31 36 32 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    15.162..........
001EC0:  0D 0A 0D 0A 20 20 20 20 20 20 20 42 65 63 61 75    ....       Becau
001ED0:  73 65 20 20 72 65 61 64 69 6E 67 20 20 61 6E 64    se  reading  and
001EE0:  20 20 77 72 69 74 69 6E 67 20 20 74 68 65 20 20      writing  the  
001EF0:  74 61 70 65 20 20 72 65 71 75 69 72 65 73 20 20    tape  requires  
001F00:  73 74 72 69 6E 67 65 6E 74 20 20 74 69 6D 69 6E    stringent  timin
001F10:  67 0D 0A 20 20 20 20 20 20 20 63 6F 6E 73 69 64    g..       consid
001F20:  65 72 61 74 69 6F 6E 73 20 69 6E 74 65 72 72 75    erations interru
001F30:  70 74 73 20 20 61 72 65 20 20 64 69 73 61 62 6C    pts  are  disabl
001F40:  65 64 20 20 77 68 69 6C 73 74 20 20 74 68 65 20    ed  whilst  the 
001F50:  20 74 61 70 65 20 20 69 73 20 20 62 65 69 6E 67     tape  is  being
001F60:  0D 0A 20 20 20 20 20 20 20 77 72 69 74 74 65 6E    ..       written
001F70:  20 28 70 6F 74 65 6E 74 69 61 6C 6C 79 20 20 61     (potentially  a
001F80:  20 20 70 65 72 69 6F 64 20 20 6F 66 20 20 6F 76      period  of  ov
001F90:  65 72 20 20 35 20 20 6D 69 6E 75 74 65 73 29 2E    er  5  minutes).
001FA0:  20 20 49 74 20 20 77 6F 75 6C 64 20 20 62 65 0D      It  would  be.
001FB0:  0A 20 20 20 20 20 20 20 75 6E 70 6C 65 61 73 61    .       unpleasa
001FC0:  6E 74 20 74 6F 20 68 61 76 65 20 74 68 65 20 73    nt to have the s
001FD0:  6F 75 6E 64 20 63 68 69 70 20 6D 61 6B 69 6E 67    ound chip making
001FE0:  20 61 20 6E 6F 69 73 65 20 66 6F 72 20 61 6C 6C     a noise for all
001FF0:  20 74 68 69 73 20 74 69 6D 65 20 20 73 6F 0D 0A     this time  so..
002000:  20 20 20 20 20 20 20 74 68 65 20 53 6F 75 6E 64           the Sound
002010:  20 4D 61 6E 61 67 65 72 20 69 73 20 73 68 75 74     Manager is shut
002020:  20 64 6F 77 6E 20 28 53 4F 55 4E 44 20 52 45 53     down (SOUND RES
002030:  45 54 29 2E 20 57 68 65 6E 20 77 72 69 74 69 6E    ET). When writin
002040:  67 20 74 6F 20 74 68 65 20 74 61 70 65 0D 0A 20    g to the tape.. 
002050:  20 20 20 20 20 20 68 61 73 20 66 69 6E 69 73 68          has finish
002060:  65 64 20 69 6E 74 65 72 72 75 70 74 73 20 61 72    ed interrupts ar
002070:  65 20 72 65 2D 65 6E 61 62 6C 65 64 2E 0D 0A 0D    e re-enabled....
002080:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
002090:  63 61 73 73 65 74 74 65 20 6D 6F 74 6F 72 20 69    cassette motor i
0020A0:  73 20 73 74 61 72 74 65 64 20 62 79 20 74 68 69    s started by thi
0020B0:  73 20 20 72 6F 75 74 69 6E 65 20 20 28 69 6E 20    s  routine  (in 
0020C0:  20 63 61 73 65 20 20 69 74 20 20 69 73 20 20 6E     case  it  is  n
0020D0:  6F 74 0D 0A 20 20 20 20 20 20 20 61 6C 72 65 61    ot..       alrea
0020E0:  64 79 20 6F 6E 29 20 61 6E 64 20 20 72 65 73 74    dy on) and  rest
0020F0:  6F 72 65 64 20 20 74 6F 20 20 69 74 73 20 20 70    ored  to  its  p
002100:  72 65 76 69 6F 75 73 20 20 73 74 61 74 65 20 20    revious  state  
002110:  77 68 65 6E 20 20 77 72 69 74 69 6E 67 20 20 69    when  writing  i
002120:  73 0D 0A 20 20 20 20 20 20 20 63 6F 6D 70 6C 65    s..       comple
002130:  74 65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ted...........  
002140:  20 20 20 20 20 52 65 6C 61 74 65 64 20 65 6E 74         Related ent
002150:  72 69 65 73 3A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    ries:........   
002160:  20 20 20 20 43 41 53 20 43 48 45 43 4B 0D 0A 20        CAS CHECK.. 
002170:  20 20 20 20 20 20 43 41 53 20 52 45 41 44 0D 0A          CAS READ..
002180:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
002190:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
0021A0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
0021B0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
0021C0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
0021D0:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
0021E0:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
0021F0:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
002200:  20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65                page
002210:  20 31 35 2E 31 36 33 0D 0A 0D 0A 0D 0A 0D 0A 0D     15.163.........
002220:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 33 39 3A    .....       139:
002230:  20 43 41 53 20 52 45 41 44 20 20 20 20 20 20 20     CAS READ       
002240:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002250:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002260:  20 20 20 20 20 20 20 20 20 20 20 20 20 23 42 43                 #BC
002270:  41 31 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 61    A1....       Rea
002280:  64 20 61 20 72 65 63 6F 72 64 20 66 72 6F 6D 20    d a record from 
002290:  74 61 70 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    tape.....       
0022A0:  41 63 74 69 6F 6E 3A 0D 0A 0D 0A 20 20 20 20 20    Action:....     
0022B0:  20 20 52 65 61 64 20 61 20 77 68 6F 6C 65 20 72      Read a whole r
0022C0:  65 63 6F 72 64 20 66 72 6F 6D 20 74 68 65 20 63    ecord from the c
0022D0:  61 73 73 65 74 74 65 2E 20 54 68 69 73 20 72 6F    assette. This ro
0022E0:  75 74 69 6E 65 20 20 69 73 20 20 75 73 65 64 20    utine  is  used 
0022F0:  20 62 79 20 20 74 68 65 0D 0A 20 20 20 20 20 20     by  the..      
002300:  20 68 69 67 68 65 72 20 6C 65 76 65 6C 20 72 6F     higher level ro
002310:  75 74 69 6E 65 73 20 28 43 41 53 20 49 4E 20 43    utines (CAS IN C
002320:  48 41 52 2C 20 43 41 53 20 20 49 4E 20 20 44 49    HAR, CAS  IN  DI
002330:  52 45 43 54 20 20 61 6E 64 20 20 43 41 53 20 20    RECT  and  CAS  
002340:  43 41 54 41 4C 4F 47 0D 0A 20 20 20 20 20 20 20    CATALOG..       
002350:  61 6D 6F 6E 67 73 74 20 6F 74 68 65 72 73 29 20    amongst others) 
002360:  74 6F 20 72 65 61 64 20 74 68 65 20 68 65 61 64    to read the head
002370:  65 72 20 61 6E 64 20 64 61 74 61 20 72 65 63 6F    er and data reco
002380:  72 64 73 20 20 74 68 61 74 20 20 6D 61 6B 65 20    rds  that  make 
002390:  20 75 70 20 20 61 0D 0A 20 20 20 20 20 20 20 66     up  a..       f
0023A0:  69 6C 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45    ile.....       E
0023B0:  6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    ntry conditions:
0023C0:  0D 0A 0D 0A 20 20 20 20 20 20 20 48 4C 20 63 6F    ....       HL co
0023D0:  6E 74 61 69 6E 73 20 74 68 65 20 61 64 64 72 65    ntains the addre
0023E0:  73 73 20 74 6F 20 70 75 74 20 74 68 65 20 64 61    ss to put the da
0023F0:  74 61 20 72 65 61 64 2E 0D 0A 20 20 20 20 20 20    ta read...      
002400:  20 44 45 20 63 6F 6E 74 61 69 6E 73 20 74 68 65     DE contains the
002410:  20 6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20 64     length of the d
002420:  61 74 61 20 74 6F 20 72 65 61 64 2E 0D 0A 20 20    ata to read...  
002430:  20 20 20 20 20 41 20 63 6F 6E 74 61 69 6E 73 20         A contains 
002440:  74 68 65 20 73 79 6E 63 20 63 68 61 72 61 63 74    the sync charact
002450:  65 72 20 65 78 70 65 63 74 65 64 20 61 74 20 74    er expected at t
002460:  68 65 20 65 6E 64 20 6F 66 20 74 68 65 20 6C 65    he end of the le
002470:  61 64 65 72 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    ader.....       
002480:  45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    Exit conditions:
002490:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 72 65    ....       If re
0024A0:  63 6F 72 64 20 77 61 73 20 72 65 61 64 20 4F 4B    cord was read OK
0024B0:  3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    :....           
0024C0:  20 20 20 20 20 43 61 72 72 79 20 74 72 75 65 2E         Carry true.
0024D0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
0024E0:  20 20 41 20 63 6F 72 72 75 70 74 2E 0D 0A 0D 0A      A corrupt.....
0024F0:  20 20 20 20 20 20 20 49 66 20 61 6E 20 65 72 72           If an err
002500:  6F 72 20 6F 63 63 75 72 72 65 64 20 6F 72 20 74    or occurred or t
002510:  68 65 20 75 73 65 72 20 68 69 74 20 65 73 63 61    he user hit esca
002520:  70 65 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    pe:....         
002530:  20 20 20 20 20 20 20 43 61 72 72 79 20 66 61 6C           Carry fal
002540:  73 65 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20    se...           
002550:  20 20 20 20 20 41 20 63 6F 6E 74 61 69 6E 73 20         A contains 
002560:  61 6E 20 65 72 72 6F 72 20 63 6F 64 65 2E 0D 0A    an error code...
002570:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 6C 77 61 79    ....       Alway
002580:  73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    s:....          
002590:  20 20 20 20 20 20 42 43 2C 20 44 45 2C 20 48 4C          BC, DE, HL
0025A0:  2C 20 49 58 20 61 6E 64 20 6F 74 68 65 72 20 66    , IX and other f
0025B0:  6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0A 20    lags corrupt... 
0025C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                   A
0025D0:  6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73 74 65    ll other registe
0025E0:  72 73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D    rs preserved....
0025F0:  0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A    ...       Notes:
002600:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 20 64    ......       A d
002610:  61 74 61 20 6C 65 6E 67 74 68 20 6F 66 20 30 20    ata length of 0 
002620:  70 61 73 73 65 64 20 74 6F 20 74 68 69 73 20 20    passed to this  
002630:  72 6F 75 74 69 6E 65 20 20 69 73 20 20 74 61 6B    routine  is  tak
002640:  65 6E 20 20 74 6F 20 20 6D 65 61 6E 20 20 36 35    en  to  mean  65
002650:  35 33 36 0D 0A 20 20 20 20 20 20 20 62 79 74 65    536..       byte
002660:  73 2E 20 28 54 68 69 73 20 69 73 20 6E 6F 74 20    s. (This is not 
002670:  75 73 65 66 75 6C 29 2E 0D 0A 0D 0A 0D 0A 20 20    useful).......  
002680:  20 20 20 20 20 49 74 20 69 73 20 6E 6F 74 20 6E         It is not n
002690:  65 63 65 73 73 61 72 79 20 74 6F 20 72 65 61 64    ecessary to read
0026A0:  20 61 20 77 68 6F 6C 65 20 72 65 63 6F 72 64 20     a whole record 
0026B0:  66 72 6F 6D 20 74 61 70 65 2E 20 20 49 66 20 20    from tape.  If  
0026C0:  74 68 65 20 20 6C 65 6E 67 74 68 0D 0A 20 20 20    the  length..   
0026D0:  20 20 20 20 70 61 73 73 65 64 20 69 73 20 6C 65        passed is le
0026E0:  73 73 20 74 68 61 6E 20 74 68 65 20 61 63 74 75    ss than the actu
0026F0:  61 6C 20 6C 65 6E 67 74 68 20 6F 66 20 20 74 68    al length of  th
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:  65 20 20 72 65 63 6F 72 64 20 20 74 68 65 6E 20    e  record  then 
002810:  20 6F 6E 6C 79 20 20 74 68 65 0D 0A 20 20 20 20     only  the..    
002820:  20 20 20 6E 75 6D 62 65 72 20 6F 66 20 62 79 74       number of byt
002830:  65 73 20 77 69 6C 6C 20 62 65 20 72 65 61 64 2E    es will be read.
002840:  20 54 72 79 69 6E 67 20 74 6F 20 72 65 61 64 20     Trying to read 
002850:  6D 6F 72 65 20 62 79 74 65 73 20 66 72 6F 6D 20    more bytes from 
002860:  61 20 20 72 65 63 6F 72 64 0D 0A 20 20 20 20 20    a  record..     
002870:  20 20 74 68 61 6E 20 77 65 72 65 20 77 72 69 74      than were writ
002880:  74 65 6E 20 77 69 6C 6C 20 70 72 6F 64 75 63 65    ten will produce
002890:  20 61 6E 20 65 72 72 6F 72 2C 20 20 75 73 75 61     an error,  usua
0028A0:  6C 6C 79 20 20 61 6E 20 20 6F 76 65 72 66 6C 6F    lly  an  overflo
0028B0:  77 20 20 65 72 72 6F 72 0D 0A 20 20 20 20 20 20    w  error..      
0028C0:  20 28 73 65 65 20 62 65 6C 6F 77 29 2E 0D 0A 0D     (see below)....
0028D0:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 73 79    ...       The sy
0028E0:  6E 63 20 63 68 61 72 61 63 74 65 72 20 69 73 20    nc character is 
0028F0:  75 73 65 64 20 74 6F 20 64 69 73 74 69 6E 67 75    used to distingu
002900:  69 73 68 20 68 65 61 64 65 72 20 72 65 63 6F 72    ish header recor
002910:  64 73 20 28 73 79 6E 63 20 69 73 20 23 32 43 29    ds (sync is #2C)
002920:  0D 0A 20 20 20 20 20 20 20 66 72 6F 6D 20 64 61    ..       from da
002930:  74 61 20 72 65 63 6F 72 64 73 20 28 73 79 6E 63    ta records (sync
002940:  20 69 73 20 23 31 36 29 2E 20 4F 74 68 65 72 20     is #16). Other 
002950:  73 79 6E 63 20 63 68 61 72 61 63 74 65 72 73 20    sync characters 
002960:  63 6F 75 6C 64 20 20 62 65 20 20 75 73 65 64 0D    could  be  used.
002970:  0A 20 20 20 20 20 20 20 69 66 20 74 68 65 20 72    .       if the r
002980:  65 63 6F 72 64 20 77 61 73 20 77 72 69 74 74 65    ecord was writte
002990:  6E 20 74 68 61 74 20 77 61 79 2E 0D 0A 0D 0A 0D    n that way......
0029A0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
0029B0:  41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36    AMSTRAD CPC464/6
0029C0:  36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45    64/6128 FIRMWARE
0029D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0029E0:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
0029F0:  31 35 2E 31 36 34 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    15.164..........
002A00:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 65    ....       The e
002A10:  72 72 6F 72 20 63 6F 64 65 73 20 72 65 74 75 72    rror codes retur
002A20:  6E 65 64 20 62 79 20 74 68 69 73 20 72 6F 75 74    ned by this rout
002A30:  69 6E 65 20 61 72 65 3A 0D 0A 0D 0A 0D 0A 20 20    ine are:......  
002A40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20                  0 
002A50:  20 20 20 42 72 65 61 6B 20 20 20 20 20 20 20 20       Break        
002A60:  20 20 54 68 65 20 75 73 65 72 20 68 69 74 20 74      The user hit t
002A70:  68 65 20 65 73 63 61 70 65 20 6B 65 79 2E 0D 0A    he escape key...
002A80:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
002A90:  20 20 20 20 31 20 20 20 20 4F 76 65 72 66 6C 6F        1    Overflo
002AA0:  77 20 20 20 20 20 20 20 54 68 65 20 43 61 73 73    w       The Cass
002AB0:  65 74 74 65 20 4D 61 6E 61 67 65 72 20 66 6F 75    ette Manager fou
002AC0:  6E 64 20 61 20 62 69 74 20 74 68 61 74 20 77 61    nd a bit that wa
002AD0:  73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    s..             
002AE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002AF0:  20 20 20 20 20 20 20 74 6F 6F 20 6C 6F 6E 67 20           too long 
002B00:  74 6F 20 72 65 61 64 2E 0D 0A 0D 0A 0D 0A 20 20    to read.......  
002B10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 20                  2 
002B20:  20 20 20 43 52 43 20 20 20 20 20 20 20 20 20 20       CRC          
002B30:  20 20 41 20 43 52 43 20 66 61 69 6C 75 72 65 20      A CRC failure 
002B40:  77 61 73 20 64 65 74 65 63 74 65 64 2E 0D 0A 0D    was detected....
002B50:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 63 61    ...       The ca
002B60:  73 73 65 74 74 65 20 6D 6F 74 6F 72 20 69 73 20    ssette motor is 
002B70:  73 74 61 72 74 65 64 20 62 79 20 74 68 69 73 20    started by this 
002B80:  20 72 6F 75 74 69 6E 65 20 20 28 69 6E 20 20 63     routine  (in  c
002B90:  61 73 65 20 20 69 74 20 20 69 73 20 20 6E 6F 74    ase  it  is  not
002BA0:  0D 0A 20 20 20 20 20 20 20 61 6C 72 65 61 64 79    ..       already
002BB0:  20 6F 6E 29 20 61 6E 64 20 20 72 65 73 74 6F 72     on) and  restor
002BC0:  65 64 20 20 74 6F 20 20 69 74 73 20 20 70 72 65    ed  to  its  pre
002BD0:  76 69 6F 75 73 20 20 73 74 61 74 65 20 20 77 68    vious  state  wh
002BE0:  65 6E 20 20 72 65 61 64 69 6E 67 20 20 69 73 0D    en  reading  is.
002BF0:  0A 20 20 20 20 20 20 20 63 6F 6D 70 6C 65 74 65    .       complete
002C00:  64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 42    d.......       B
002C10:  65 63 61 75 73 65 20 20 72 65 61 64 69 6E 67 20    ecause  reading 
002C20:  20 74 68 65 20 20 74 61 70 65 20 20 72 65 71 75     the  tape  requ
002C30:  69 72 65 73 20 20 73 74 72 69 6E 67 65 6E 74 20    ires  stringent 
002C40:  20 74 69 6D 69 6E 67 20 20 63 6F 6E 73 74 72 61     timing  constra
002C50:  69 6E 74 73 2C 0D 0A 20 20 20 20 20 20 20 69 6E    ints,..       in
002C60:  74 65 72 72 75 70 74 73 20 61 72 65 20 64 69 73    terrupts are dis
002C70:  61 62 6C 65 64 20 77 68 69 6C 73 74 20 74 68 65    abled whilst the
002C80:  20 74 61 70 65 20 69 73 20 62 65 69 6E 67 20 72     tape is being r
002C90:  65 61 64 20 20 28 70 6F 74 65 6E 74 69 61 6C 6C    ead  (potentiall
002CA0:  79 20 20 61 0D 0A 20 20 20 20 20 20 20 70 65 72    y  a..       per
002CB0:  69 6F 64 20 6F 66 20 6F 76 65 72 20 35 20 6D 69    iod of over 5 mi
002CC0:  6E 75 74 65 73 29 2E 20 49 74 20 77 6F 75 6C 64    nutes). It would
002CD0:  20 62 65 20 75 6E 70 6C 65 61 73 61 6E 74 20 74     be unpleasant t
002CE0:  6F 20 20 68 61 76 65 20 20 74 68 65 20 20 73 6F    o  have  the  so
002CF0:  75 6E 64 0D 0A 20 20 20 20 20 20 20 63 68 69 70    und..       chip
002D00:  20 6D 61 6B 69 6E 67 20 61 20 6E 6F 69 73 65 20     making a noise 
002D10:  66 6F 72 20 61 6C 6C 20 74 68 69 73 20 74 69 6D    for all this tim
002D20:  65 20 73 6F 20 74 68 65 20 20 53 6F 75 6E 64 20    e so the  Sound 
002D30:  20 4D 61 6E 61 67 65 72 20 20 69 73 20 20 73 68     Manager  is  sh
002D40:  75 74 0D 0A 20 20 20 20 20 20 20 64 6F 77 6E 20    ut..       down 
002D50:  28 53 4F 55 4E 44 20 52 45 53 45 54 29 2E 20 57    (SOUND RESET). W
002D60:  68 65 6E 20 72 65 61 64 69 6E 67 20 66 72 6F 6D    hen reading from
002D70:  20 74 68 65 20 74 61 70 65 20 68 61 73 20 66 69     the tape has fi
002D80:  6E 69 73 68 65 64 20 69 6E 74 65 72 72 75 70 74    nished interrupt
002D90:  73 0D 0A 20 20 20 20 20 20 20 61 72 65 20 72 65    s..       are re
002DA0:  2D 65 6E 61 62 6C 65 64 2E 0D 0A 0D 0A 0D 0A 0D    -enabled........
002DB0:  0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74 65    ...       Relate
002DC0:  64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A    d entries:......
002DD0:  20 20 20 20 20 20 20 43 41 53 20 43 48 45 43 4B           CAS CHECK
002DE0:  0D 0A 20 20 20 20 20 20 20 43 41 53 20 57 52 49    ..       CAS WRI
002DF0:  54 45 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    TE..............
002E00:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
002E10:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
002E20:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ........       A
002E30:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
002E40:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
002E50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002E60:  20 20 20 20 20 20 20 20 20 20 70 61 67 65 20 31              page 1
002E70:  35 2E 31 36 35 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    5.165...........
002E80:  0A 0D 0A 20 20 20 20 20 20 20 31 34 30 3A 20 43    ...       140: C
002E90:  41 53 20 43 48 45 43 4B 20 20 20 20 20 20 20 20    AS CHECK        
002EA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 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 20 20 20 20 20 23 42 43 41 34               #BCA4
002ED0:  0D 0A 0D 0A 20 20 20 20 20 20 20 43 6F 6D 70 61    ....       Compa
002EE0:  72 65 20 61 20 72 65 63 6F 72 64 20 6F 6E 20 74    re a record on t
002EF0:  61 70 65 20 77 69 74 68 20 74 68 65 20 63 6F 6E    ape with the con
002F00:  74 65 6E 74 73 20 6F 66 20 73 74 6F 72 65 2E 0D    tents of store..
002F10:  0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E    ...       Action
002F20:  3A 0D 0A 0D 0A 20 20 20 20 20 20 20 43 68 65 63    :....       Chec
002F30:  6B 20 74 68 61 74 20 61 20 74 61 70 65 20 72 65    k that a tape re
002F40:  63 6F 72 64 20 20 63 6F 6E 74 61 69 6E 73 20 20    cord  contains  
002F50:  61 20 20 63 6F 72 72 65 63 74 20 20 76 65 72 73    a  correct  vers
002F60:  69 6F 6E 20 20 6F 66 20 20 74 68 65 20 20 64 61    ion  of  the  da
002F70:  74 61 0D 0A 20 20 20 20 20 20 20 73 75 70 70 6C    ta..       suppl
002F80:  69 65 64 2E 20 54 68 69 73 20 72 6F 75 74 69 6E    ied. This routin
002F90:  65 20 69 73 20 69 6E 74 65 6E 64 65 64 20 74 6F    e is intended to
002FA0:  20 62 65 20 75 73 65 64 20 61 66 74 65 72 20 77     be used after w
002FB0:  72 69 74 69 6E 67 20 72 65 63 6F 72 64 73 20 74    riting records t
002FC0:  6F 0D 0A 20 20 20 20 20 20 20 63 68 65 63 6B 20    o..       check 
002FD0:  74 68 61 74 20 74 68 65 79 20 77 65 72 65 20 77    that they were w
002FE0:  72 69 74 74 65 6E 20 63 6F 72 72 65 63 74 6C 79    ritten correctly
002FF0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72    .....       Entr
003000:  79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D    y conditions:...
003010:  0A 20 20 20 20 20 20 20 48 4C 20 63 6F 6E 74 61    .       HL conta
003020:  69 6E 73 20 74 68 65 20 61 64 64 72 65 73 73 20    ins the address 
003030:  6F 66 20 74 68 65 20 64 61 74 61 20 74 6F 20 63    of the data to c
003040:  68 65 63 6B 2E 0D 0A 20 20 20 20 20 20 20 44 45    heck...       DE
003050:  20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 6C 65     contains the le
003060:  6E 67 74 68 20 6F 66 20 74 68 65 20 64 61 74 61    ngth of the data
003070:  20 74 6F 20 63 68 65 63 6B 2E 0D 0A 20 20 20 20     to check...    
003080:  20 20 20 41 20 63 6F 6E 74 61 69 6E 73 20 74 68       A contains th
003090:  65 20 73 79 6E 63 20 63 68 61 72 61 63 74 65 72    e sync character
0030A0:  20 65 78 70 65 63 74 65 64 20 61 74 20 74 68 65     expected at the
0030B0:  20 65 6E 64 20 6F 66 20 74 68 65 20 6C 65 61 64     end of the lead
0030C0:  65 72 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78    er.....       Ex
0030D0:  69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    it conditions:..
0030E0:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74 68    ....       If th
0030F0:  65 20 72 65 63 6F 72 64 20 63 68 65 63 6B 65 64    e record checked
003100:  20 4F 4B 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20     OK:....        
003110:  20 20 20 20 20 20 20 20 43 61 72 72 79 20 74 72            Carry tr
003120:  75 65 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ue...           
003130:  20 20 20 20 20 41 20 63 6F 72 72 75 70 74 2E 0D         A corrupt..
003140:  0A 0D 0A 20 20 20 20 20 20 20 49 66 20 61 6E 20    ...       If an 
003150:  65 72 72 6F 72 20 6F 63 63 75 72 72 65 64 20 6F    error occurred o
003160:  72 20 74 68 65 20 75 73 65 72 20 68 69 74 20 65    r the user hit e
003170:  73 63 61 70 65 3A 0D 0A 0D 0A 20 20 20 20 20 20    scape:....      
003180:  20 20 20 20 20 20 20 20 20 20 43 61 72 72 79 20              Carry 
003190:  66 61 6C 73 65 2E 0D 0A 20 20 20 20 20 20 20 20    false...        
0031A0:  20 20 20 20 20 20 20 20 41 20 63 6F 6E 74 61 69            A contai
0031B0:  6E 73 20 61 6E 20 65 72 72 6F 72 20 63 6F 64 65    ns an error code
0031C0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 6C    .......       Al
0031D0:  77 61 79 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ways:......     
0031E0:  20 20 20 20 20 20 20 20 20 20 20 42 43 2C 20 44               BC, D
0031F0:  45 2C 20 48 4C 2C 20 49 58 20 61 6E 64 20 6F 74    E, HL, IX and ot
003200:  68 65 72 20 66 6C 61 67 73 20 63 6F 72 72 75 70    her flags corrup
003210:  74 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    t...            
003220:  20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65        All other re
003230:  67 69 73 74 65 72 73 20 70 72 65 73 65 72 76 65    gisters preserve
003240:  64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74    d.....       Not
003250:  65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    es:......       
003260:  41 20 64 61 74 61 20 6C 65 6E 67 74 68 20 6F 66    A data length of
003270:  20 30 20 70 61 73 73 65 64 20 74 6F 20 74 68 69     0 passed to thi
003280:  73 20 20 72 6F 75 74 69 6E 65 20 20 69 73 20 20    s  routine  is  
003290:  74 61 6B 65 6E 20 20 74 6F 20 20 6D 65 61 6E 20    taken  to  mean 
0032A0:  20 36 35 35 33 36 0D 0A 20 20 20 20 20 20 20 62     65536..       b
0032B0:  79 74 65 73 2E 20 28 54 68 69 73 20 69 73 20 62    ytes. (This is b
0032C0:  6F 75 6E 64 20 74 6F 20 70 72 6F 64 75 63 65 20    ound to produce 
0032D0:  61 20 63 68 65 63 6B 20 66 61 69 6C 75 72 65 29    a check failure)
0032E0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 74    .......       It
0032F0:  20 69 73 20 6E 6F 74 20 6E 65 63 65 73 73 61 72     is not necessar
003300:  79 20 74 6F 20 63 68 65 63 6B 20 74 68 65 20 77    y to check the w
003310:  68 6F 6C 65 20 6F 66 20 61 20 72 65 63 6F 72 64    hole of a record
003320:  20 20 6F 6E 20 20 74 61 70 65 2E 20 20 49 66 20      on  tape.  If 
003330:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 6C 65 6E     the..       len
003340:  67 74 68 20 70 61 73 73 65 64 20 69 73 20 6C 65    gth passed is le
003350:  73 73 20 74 68 61 6E 20 74 68 65 20 61 63 74 75    ss than the actu
003360:  61 6C 20 6C 65 6E 67 74 68 20 6F 66 20 74 68 65    al length of the
003370:  20 72 65 63 6F 72 64 20 20 74 68 65 6E 20 20 6F     record  then  o
003380:  6E 6C 79 0D 0A 20 20 20 20 20 20 20 74 68 65 20    nly..       the 
003390:  6E 75 6D 62 65 72 20 6F 66 20 62 79 74 65 73 20    number of bytes 
0033A0:  77 69 6C 6C 20 62 65 20 63 68 65 63 6B 65 64 2E    will be checked.
0033B0:  20 54 72 79 69 6E 67 20 74 6F 20 63 68 65 63 6B     Trying to check
0033C0:  20 6D 6F 72 65 20 62 79 74 65 73 20 20 69 6E 20     more bytes  in 
0033D0:  20 61 0D 0A 20 20 20 20 20 20 20 72 65 63 6F 72     a..       recor
0033E0:  64 20 74 68 61 6E 20 77 65 72 65 20 77 72 69 74    d than were writ
0033F0:  74 65 6E 20 77 69 6C 6C 20 70 72 6F 64 75 63 65    ten will produce
003400:  20 20 61 6E 20 20 65 72 72 6F 72 20 20 6F 66 20      an  error  of 
003410:  20 73 6F 6D 65 20 20 73 6F 72 74 20 20 28 73 65     some  sort  (se
003420:  65 0D 0A 20 20 20 20 20 20 20 62 65 6C 6F 77 29    e..       below)
003430:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
003440:  65 20 64 61 74 61 20 74 6F 20 62 65 20 63 68 65    e data to be che
003450:  63 6B 65 64 20 6D 61 79 20 6C 69 65 20 61 6E 79    cked may lie any
003460:  77 68 65 72 65 20 69 6E 20 52 41 4D 2C 20 65 76    where in RAM, ev
003470:  65 6E 20 75 6E 64 65 72 6E 65 61 74 68 20 61 20    en underneath a 
003480:  52 4F 4D 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ROM.......      
003490:  20 54 68 65 20 73 79 6E 63 20 63 68 61 72 61 63     The sync charac
0034A0:  74 65 72 20 69 73 20 75 73 65 64 20 74 6F 20 64    ter is used to d
0034B0:  69 73 74 69 6E 67 75 69 73 68 20 68 65 61 64 65    istinguish heade
0034C0:  72 20 72 65 63 6F 72 64 73 20 28 73 79 6E 63 20    r records (sync 
0034D0:  69 73 20 23 32 43 29 0D 0A 20 20 20 20 20 20 20    is #2C)..       
0034E0:  66 72 6F 6D 20 64 61 74 61 20 72 65 63 6F 72 64    from data record
0034F0:  73 20 28 73 79 6E 63 20 69 73 20 23 31 36 29 2E    s (sync is #16).
003500:  20 4F 74 68 65 72 20 73 79 6E 63 20 63 68 61 72     Other sync char
003510:  61 63 74 65 72 73 20 63 6F 75 6C 64 20 62 65 20    acters could be 
003520:  75 73 65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    used........... 
003530:  20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50          AMSTRAD CP
003540:  43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49    C464/664/6128 FI
003550:  52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20    RMWARE          
003560:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
003570:  20 70 61 67 65 20 31 35 2E 31 36 36 0D 0A 0D 0A     page 15.166....
003580:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
003590:  20 54 68 65 20 65 72 72 6F 72 20 63 6F 64 65 73     The error codes
0035A0:  20 72 65 74 75 72 6E 65 64 20 62 79 20 74 68 69     returned by thi
0035B0:  73 20 72 6F 75 74 69 6E 65 20 61 72 65 3A 0D 0A    s routine are:..
0035C0:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
0035D0:  20 20 20 20 30 20 20 20 20 42 72 65 61 6B 20 20        0    Break  
0035E0:  20 20 20 20 20 20 20 20 54 68 65 20 75 73 65 72            The user
0035F0:  20 68 69 74 20 74 68 65 20 65 73 63 61 70 65 20     hit the escape 
003600:  6B 65 79 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    key.......      
003610:  20 20 20 20 20 20 20 20 20 20 31 20 20 20 20 4F              1    O
003620:  76 65 72 72 75 6E 20 20 20 20 20 20 20 20 54 68    verrun        Th
003630:  65 20 43 61 73 73 65 74 74 65 20 4D 61 6E 61 67    e Cassette Manag
003640:  65 72 20 66 6F 75 6E 64 20 61 20 62 69 74 20 74    er found a bit t
003650:  68 61 74 20 77 61 73 0D 0A 20 20 20 20 20 20 20    hat was..       
003660:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
003670:  20 20 20 20 20 20 20 20 20 20 20 20 20 74 6F 6F                 too
003680:  20 6C 6F 6E 67 20 74 6F 20 72 65 61 64 2E 0D 0A     long to read...
003690:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
0036A0:  20 20 20 20 32 20 20 20 20 43 52 43 20 20 20 20        2    CRC    
0036B0:  20 20 20 20 20 20 20 20 41 20 43 52 43 20 66 61            A CRC fa
0036C0:  69 6C 75 72 65 20 77 61 73 20 64 65 74 65 63 74    ilure was detect
0036D0:  65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ed.......       
0036E0:  20 20 20 20 20 20 20 20 20 33 20 20 20 20 44 69             3    Di
0036F0:  66 66 65 72 65 6E 74 20 20 20 20 20 20 54 68 65    fferent      The
003700:  20 64 61 74 61 20 72 65 61 64 20 66 72 6F 6D 20     data read from 
003710:  20 74 61 70 65 20 20 64 69 64 20 20 6E 6F 74 20     tape  did  not 
003720:  20 61 67 72 65 65 0D 0A 20 20 20 20 20 20 20 20     agree..        
003730:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
003740:  20 20 20 20 20 20 20 20 20 20 20 20 77 69 74 68                with
003750:  20 74 68 61 74 20 69 6E 20 6D 65 6D 6F 72 79 2E     that in memory.
003760:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    ......       The
003770:  20 63 61 73 73 65 74 74 65 20 6D 6F 74 6F 72 20     cassette motor 
003780:  69 73 20 73 74 61 72 74 65 64 20 62 79 20 74 68    is started by th
003790:  69 73 20 20 72 6F 75 74 69 6E 65 20 20 28 69 6E    is  routine  (in
0037A0:  20 20 63 61 73 65 20 20 69 74 20 20 69 73 20 20      case  it  is  
0037B0:  6E 6F 74 0D 0A 20 20 20 20 20 20 20 61 6C 72 65    not..       alre
0037C0:  61 64 79 20 6F 6E 29 20 61 6E 64 20 72 65 73 74    ady on) and rest
0037D0:  6F 72 65 64 20 20 74 6F 20 20 69 74 73 20 20 70    ored  to  its  p
0037E0:  72 65 76 69 6F 75 73 20 20 73 74 61 74 65 20 20    revious  state  
0037F0:  77 68 65 6E 20 20 63 68 65 63 6B 69 6E 67 20 20    when  checking  
003800:  69 73 0D 0A 20 20 20 20 20 20 20 63 6F 6D 70 6C    is..       compl
003810:  65 74 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    eted.......     
003820:  20 20 42 65 63 61 75 73 65 20 20 72 65 61 64 69      Because  readi
003830:  6E 67 20 20 74 68 65 20 20 74 61 70 65 20 20 72    ng  the  tape  r
003840:  65 71 75 69 72 65 73 20 20 73 74 72 69 6E 67 65    equires  stringe
003850:  6E 74 20 20 74 69 6D 69 6E 67 20 20 63 6F 6E 73    nt  timing  cons
003860:  74 72 61 69 6E 74 73 2C 0D 0A 20 20 20 20 20 20    traints,..      
003870:  20 69 6E 74 65 72 72 75 70 74 73 20 61 72 65 20     interrupts are 
003880:  64 69 73 61 62 6C 65 64 20 77 68 69 6C 73 74 20    disabled whilst 
003890:  74 68 65 20 74 61 70 65 20 69 73 20 62 65 69 6E    the tape is bein
0038A0:  67 20 63 68 65 63 6B 65 64 20 20 28 70 6F 74 65    g checked  (pote
0038B0:  6E 74 69 61 6C 6C 79 0D 0A 20 20 20 20 20 20 20    ntially..       
0038C0:  61 20 70 65 72 69 6F 64 20 6F 66 20 6F 76 65 72    a period of over
0038D0:  20 35 20 6D 69 6E 75 74 65 73 29 2E 20 49 74 20     5 minutes). It 
0038E0:  77 6F 75 6C 64 20 62 65 20 75 6E 70 6C 65 61 73    would be unpleas
0038F0:  61 6E 74 20 74 6F 20 68 61 76 65 20 74 68 65 20    ant to have the 
003900:  20 73 6F 75 6E 64 0D 0A 20 20 20 20 20 20 20 63     sound..       c
003910:  68 69 70 20 6D 61 6B 69 6E 67 20 61 20 6E 6F 69    hip making a noi
003920:  73 65 20 66 6F 72 20 61 6C 6C 20 74 68 69 73 20    se for all this 
003930:  74 69 6D 65 20 73 6F 20 74 68 65 20 20 53 6F 75    time so the  Sou
003940:  6E 64 20 20 4D 61 6E 61 67 65 72 20 20 69 73 20    nd  Manager  is 
003950:  20 73 68 75 74 0D 0A 20 20 20 20 20 20 20 64 6F     shut..       do
003960:  77 6E 20 20 28 53 4F 55 4E 44 20 20 52 45 53 45    wn  (SOUND  RESE
003970:  54 29 2E 20 20 57 68 65 6E 20 20 63 68 65 63 6B    T).  When  check
003980:  69 6E 67 20 20 68 61 73 20 20 66 69 6E 69 73 68    ing  has  finish
003990:  65 64 20 20 69 6E 74 65 72 72 75 70 74 73 20 20    ed  interrupts  
0039A0:  20 61 72 65 0D 0A 20 20 20 20 20 20 20 72 65 2D     are..       re-
0039B0:  65 6E 61 62 6C 65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A    enabled.........
0039C0:  0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64    ..       Related
0039D0:  20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20     entries:...... 
0039E0:  20 20 20 20 20 20 43 41 53 20 52 45 41 44 0D 0A          CAS READ..
0039F0:  20 20 20 20 20 20 20 43 41 53 20 57 52 49 54 45           CAS WRITE
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:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
003B10:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
003B20:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ..............  
003B30:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
003B40:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
003B50:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
003B60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
003B70:  70 61 67 65 20 31 35 2E 31 36 37 0D 0A 0D 0A 0D    page 15.167.....
003B80:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
003B90:  31 34 31 3A 20 53 4F 55 4E 44 20 52 45 53 45 54    141: SOUND RESET
003BA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
003BB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
003BC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
003BD0:  20 23 42 43 41 37 0D 0A 0D 0A 0D 0A 20 20 20 20     #BCA7......    
003BE0:  20 20 20 52 65 73 65 74 20 74 68 65 20 53 6F 75       Reset the Sou
003BF0:  6E 64 20 4D 61 6E 61 67 65 72 2E 0D 0A 0D 0A 0D    nd Manager......
003C00:  0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D    .       Action:.
003C10:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 2D 69    .....       Re-i
003C20:  6E 69 74 69 61 6C 69 7A 65 20 74 68 65 20 53 6F    nitialize the So
003C30:  75 6E 64 20 4D 61 6E 61 67 65 72 20 2D 20 73 68    und Manager - sh
003C40:  75 74 20 74 68 65 20 73 6F 75 6E 64 20 63 68 69    ut the sound chi
003C50:  70 20 75 70 20 61 6E 64 20 63 6C 65 61 72 20 61    p up and clear a
003C60:  6C 6C 0D 0A 20 20 20 20 20 20 20 71 75 65 75 65    ll..       queue
003C70:  73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    s.........      
003C80:  20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E     Entry condition
003C90:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E    s:......       N
003CA0:  6F 20 63 6F 6E 64 69 74 69 6F 6E 73 2E 0D 0A 0D    o conditions....
003CB0:  0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63    ...       Exit c
003CC0:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A    onditions:......
003CD0:  20 20 20 20 20 20 20 41 46 2C 20 42 43 2C 20 44           AF, BC, D
003CE0:  45 20 61 6E 64 20 48 4C 20 63 6F 72 72 75 70 74    E and HL corrupt
003CF0:  2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74    ...       All ot
003D00:  68 65 72 20 72 65 67 69 73 74 65 72 73 20 70 72    her registers pr
003D10:  65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20    eserved.......  
003D20:  20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D         Notes:.....
003D30:  0A 20 20 20 20 20 20 20 54 68 65 20 73 6F 75 6E    .       The soun
003D40:  64 20 71 75 65 75 65 73 20 61 72 65 20 63 6C 65    d queues are cle
003D50:  61 72 65 64 2E 0D 0A 20 20 20 20 20 20 20 41 6E    ared...       An
003D60:  79 20 63 75 72 72 65 6E 74 20 73 6F 75 6E 64 20    y current sound 
003D70:  69 73 20 73 74 6F 70 70 65 64 2E 0D 0A 20 20 20    is stopped...   
003D80:  20 20 20 20 54 68 65 20 73 6F 75 6E 64 20 67 65        The sound ge
003D90:  6E 65 72 61 74 6F 72 20 63 68 69 70 20 69 73 20    nerator chip is 
003DA0:  73 69 6C 65 6E 63 65 64 2E 0D 0A 0D 0A 0D 0A 20    silenced....... 
003DB0:  20 20 20 20 20 20 54 68 69 73 20 72 6F 75 74 69          This routi
003DC0:  6E 65 20 65 6E 61 62 6C 65 73 20 69 6E 74 65 72    ne enables inter
003DD0:  72 75 70 74 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    rupts...........
003DE0:  20 20 20 20 20 20 20 52 65 6C 61 74 65 64 20 65           Related e
003DF0:  6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20    ntries:......   
003E00:  20 20 20 20 53 4F 55 4E 44 20 48 4F 4C 44 0D 0A        SOUND HOLD..
003E10:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
003E20:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ..............  
003E30:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
003E40:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
003E50:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
003E60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
003E70:  70 61 67 65 20 31 35 2E 31 36 38 0D 0A 0D 0A 0D    page 15.168.....
003E80:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
003E90:  31 34 32 3A 20 53 4F 55 4E 44 20 51 55 45 55 45    142: SOUND QUEUE
003EA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
003EB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
003EC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
003ED0:  20 23 42 43 41 41 0D 0A 0D 0A 20 20 20 20 20 20     #BCAA....      
003EE0:  20 41 64 64 20 61 20 73 6F 75 6E 64 20 74 6F 20     Add a sound to 
003EF0:  61 20 73 6F 75 6E 64 20 71 75 65 75 65 2E 0D 0A    a sound queue...
003F00:  0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A    ..       Action:
003F10:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 72 79 20 74    ....       Try t
003F20:  6F 20 61 64 64 20 61 20 73 6F 75 6E 64 20 74 6F    o add a sound to
003F30:  20 74 68 65 20 73 6F 75 6E 64 20 71 75 65 75 65     the sound queue
003F40:  20 6F 66 20 6F 6E 65 20 6F 72 20 6D 6F 72 65 20     of one or more 
003F50:  63 68 61 6E 6E 65 6C 73 2E 20 49 66 20 20 74 68    channels. If  th
003F60:  65 0D 0A 20 20 20 20 20 20 20 73 6F 75 6E 64 20    e..       sound 
003F70:  71 75 65 75 65 20 6F 66 20 61 6E 79 20 6F 66 20    queue of any of 
003F80:  74 68 65 20 63 68 61 6E 6E 65 6C 73 20 69 73 20    the channels is 
003F90:  20 66 75 6C 6C 20 20 74 68 65 6E 20 20 6E 6F 20     full  then  no 
003FA0:  20 73 6F 75 6E 64 20 20 77 69 6C 6C 20 20 62 65     sound  will  be
003FB0:  0D 0A 20 20 20 20 20 20 20 69 73 73 75 65 64 20    ..       issued 
003FC0:  74 6F 20 61 6E 79 20 63 68 61 6E 6E 65 6C 2E 0D    to any channel..
003FD0:  0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20    ...       Entry 
003FE0:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20    conditions:.... 
003FF0:  20 20 20 20 20 20 48 4C 20 63 6F 6E 74 61 69 6E          HL contain
004000:  73 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66    s the address of
004010:  20 61 20 73 6F 75 6E 64 20 20 70 72 6F 67 72 61     a sound  progra
004020:  6D 20 20 77 68 69 63 68 20 20 6D 75 73 74 20 20    m  which  must  
004030:  6C 69 65 20 20 69 6E 20 20 74 68 65 0D 0A 20 20    lie  in  the..  
004040:  20 20 20 20 20 63 65 6E 74 72 61 6C 20 33 32 4B         central 32K
004050:  20 6F 66 20 52 41 4D 2E 0D 0A 0D 0A 20 20 20 20     of RAM.....    
004060:  20 20 20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F       Exit conditio
004070:  6E 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66    ns:....       If
004080:  20 74 68 65 20 73 6F 75 6E 64 20 77 61 73 20 61     the sound was a
004090:  64 64 65 64 20 74 6F 20 74 68 65 20 71 75 65 75    dded to the queu
0040A0:  65 28 73 29 3A 0D 0A 0D 0A 20 20 20 20 20 20 20    e(s):....       
0040B0:  20 20 20 20 20 20 20 20 20 43 61 72 72 79 20 74             Carry t
0040C0:  72 75 65 2E 0D 0A 20 20 20 20 20 20 20 20 20 20    rue...          
0040D0:  20 20 20 20 20 20 48 4C 20 63 6F 72 72 75 70 74          HL corrupt
0040E0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 61    .....       If a
0040F0:  74 20 6C 65 61 73 74 20 6F 6E 65 20 71 75 65 75    t least one queu
004100:  65 20 77 61 73 20 66 75 6C 6C 3A 0D 0A 0D 0A 20    e was full:.... 
004110:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                   C
004120:  61 72 72 79 20 66 61 6C 73 65 2E 0D 0A 20 20 20    arry false...   
004130:  20 20 20 20 20 20 20 20 20 20 20 20 20 48 4C 20                 HL 
004140:  70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 20 20    preserved.....  
004150:  20 20 20 20 20 41 6C 77 61 79 73 3A 0D 0A 0D 0A         Always:....
004160:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
004170:  41 2C 20 42 43 2C 20 44 45 2C 20 49 58 20 61 6E    A, BC, DE, IX an
004180:  64 20 6F 74 68 65 72 20 66 6C 61 67 73 20 63 6F    d other flags co
004190:  72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20 20 20    rrupt...        
0041A0:  20 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65            All othe
0041B0:  72 20 72 65 67 69 73 74 65 72 73 20 70 72 65 73    r registers pres
0041C0:  65 72 76 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20    erved.....      
0041D0:  20 4E 6F 74 65 73 3A 0D 0A 0D 0A 20 20 20 20 20     Notes:....     
0041E0:  20 20 54 68 65 20 73 6F 75 6E 64 20 70 72 6F 67      The sound prog
0041F0:  72 61 6D 20 69 73 20 6C 61 69 64 20 6F 75 74 20    ram is laid out 
004200:  61 73 20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 20    as follows:.... 
004210:  20 20 20 20 20 20 20 20 20 20 42 79 74 65 20 30              Byte 0
004220:  3A 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68    :             Ch
004230:  61 6E 6E 65 6C 73 20 74 6F 20 75 73 65 20 61 6E    annels to use an
004240:  64 20 72 65 6E 64 65 7A 76 6F 75 73 20 72 65 71    d rendezvous req
004250:  75 69 72 65 6D 65 6E 74 73 2E 0D 0A 0D 0A 20 20    uirements.....  
004260:  20 20 20 20 20 20 20 20 20 42 79 74 65 20 31 3A             Byte 1:
004270:  20 20 20 20 20 20 20 20 20 20 20 20 20 41 6D 70                 Amp
004280:  6C 69 74 75 64 65 20 65 6E 76 65 6C 6F 70 65 20    litude envelope 
004290:  74 6F 20 75 73 65 2E 0D 0A 20 20 20 20 20 20 20    to use...       
0042A0:  20 20 20 20 42 79 74 65 20 32 3A 20 20 20 20 20        Byte 2:     
0042B0:  20 20 20 20 20 20 20 20 54 6F 6E 65 20 65 6E 76            Tone env
0042C0:  65 6C 6F 70 65 20 74 6F 20 75 73 65 2E 0D 0A 20    elope to use... 
0042D0:  20 20 20 20 20 20 20 20 20 20 42 79 74 65 73 20              Bytes 
0042E0:  33 2E 2E 34 3A 20 20 20 20 20 20 20 20 20 54 6F    3..4:         To
0042F0:  6E 65 20 70 65 72 69 6F 64 2E 0D 0A 20 20 20 20    ne period...    
004300:  20 20 20 20 20 20 20 42 79 74 65 20 35 3A 20 20           Byte 5:  
004310:  20 20 20 20 20 20 20 20 20 20 20 4E 6F 69 73 65               Noise
004320:  20 70 65 72 69 6F 64 2E 0D 0A 20 20 20 20 20 20     period...      
004330:  20 20 20 20 20 42 79 74 65 20 36 3A 20 20 20 20         Byte 6:    
004340:  20 20 20 20 20 20 20 20 20 49 6E 69 74 69 61 6C             Initial
004350:  20 61 6D 70 6C 69 74 75 64 65 2E 0D 0A 20 20 20     amplitude...   
004360:  20 20 20 20 20 20 20 20 42 79 74 65 73 20 37 2E            Bytes 7.
004370:  2E 38 3A 20 20 20 20 20 20 20 20 20 44 75 72 61    .8:         Dura
004380:  74 69 6F 6E 20 6F 72 20 65 6E 76 65 6C 6F 70 65    tion or envelope
004390:  20 72 65 70 65 61 74 20 63 6F 75 6E 74 2E 0D 0A     repeat count...
0043A0:  0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 76 61 6C    ..       All val
0043B0:  75 65 73 20 69 6E 20 74 68 65 20 73 6F 75 6E 64    ues in the sound
0043C0:  20 70 72 6F 67 72 61 6D 20 61 72 65 20 6D 61 73     program are mas
0043D0:  6B 65 64 20 69 6E 74 6F 20 74 68 65 20 61 70 70    ked into the app
0043E0:  72 6F 70 72 69 61 74 65 20 20 72 61 6E 67 65 0D    ropriate  range.
0043F0:  0A 20 20 20 20 20 20 20 62 65 66 6F 72 65 20 62    .       before b
004400:  65 69 6E 67 20 75 73 65 64 2E 0D 0A 0D 0A 20 20    eing used.....  
004410:  20 20 20 20 20 54 68 65 20 63 68 61 6E 6E 65 6C         The channel
004420:  73 20 74 6F 20 69 73 73 75 65 20 74 68 65 20 73    s to issue the s
004430:  6F 75 6E 64 20 6F 6E 20 61 72 65 20 65 6E 63 6F    ound on are enco
004440:  64 65 64 20 69 6E 74 6F 20 62 79 74 65 20 30 20    ded into byte 0 
004450:  61 73 20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 20    as follows:.... 
004460:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42                   B
004470:  69 74 20 30 3A 20 20 20 20 49 73 73 75 65 20 6F    it 0:    Issue o
004480:  6E 20 63 68 61 6E 6E 65 6C 20 41 2E 0D 0A 20 20    n channel A...  
004490:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 69                  Bi
0044A0:  74 20 31 3A 20 20 20 20 49 73 73 75 65 20 6F 6E    t 1:    Issue on
0044B0:  20 63 68 61 6E 6E 65 6C 20 42 2E 0D 0A 20 20 20     channel B...   
0044C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74                 Bit
0044D0:  20 32 3A 20 20 20 20 49 73 73 75 65 20 6F 6E 20     2:    Issue on 
0044E0:  63 68 61 6E 6E 65 6C 20 43 2E 0D 0A 0D 0A 0D 0A    channel C.......
0044F0:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ........       A
004500:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
004510:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
004520:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
004530:  20 20 20 20 20 20 20 20 20 20 70 61 67 65 20 31              page 1
004540:  35 2E 31 36 39 0D 0A 1A 67 65 20 31 35 2E 31 37    5.169...ge 15.17
004550:  30 0D 0A 1A 20 20 20 20 20 20 20 20 20 20 20 20    0...            
004560:  42 69 74 20 33 3A 20 20 20 20 52 65 6E 64 65 7A    Bit 3:    Rendez
004570:  76 6F 75 73 20 77 69 74 68 20 63 68 61 6E 6E 65    vous with channe
004580:  74 69 6F 6E 20 6F 72 20 65 6E 76 65 6C 6F 70 65    tion or envelope
004590:  20 72 65 70 65 61 74 20 63 6F 75 6E 74 2E 0D 0A     repeat count...
0045A0:  0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 76 61 6C    ..       All val
0045B0:  75 65 73 20 69 6E 20 74 68 65 20 73 6F 75 6E 64    ues in the sound
0045C0:  20 70 72 6F 67 72 61 6D 20 61 72 65 20 6D 61 73     program are mas
0045D0:  6B 65 64 20 69 6E 74 6F 20 74 68 65 20 61 70 70    ked into the app
0045E0:  72 6F 70 72 69 61 74 65 20 20 72 61 6E 67 65 0D    ropriate  range.
0045F0:  0A 20 20 20 20 20 20 20 62 65 66 6F 72 65 20 62    .       before b
004600:  65 69 6E 67 20 75 73 65 64 2E 0D 0A 0D 0A 20 20    eing used.....  
004610:  20 20 20 20 20 54 68 65 20 63 68 61 6E 6E 65 6C         The channel
004620:  73 20 74 6F 20 69 73 73 75 65 20 74 68 65 20 73    s to issue the s
004630:  6F 75 6E 64 20 6F 6E 20 61 72 65 20 65 6E 63 6F    ound on are enco
004640:  64 65 64 20 69 6E 74 6F 20 62 79 74 65 20 30 20    ded into byte 0 
004650:  61 73 20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 20    as follows:.... 
004660:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42                   B
004670:  69 74 20 30 3A 20 20 20 20 49 73 73 75 65 20 6F    it 0:    Issue o
004680:  6E 20 63 68 61 6E 6E 65 6C 20 41 2E 0D 0A 20 20    n channel A...  
004690:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 69                  Bi
0046A0:  74 20 31 3A 20 20 20 20 49 73 73 75 65 20 6F 6E    t 1:    Issue on
0046B0:  20 63 68 61 6E 6E 65 6C 20 42 2E 0D 0A 20 20 20     channel B...   
0046C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74                 Bit
0046D0:  20 32 3A 20 20 20 20 49 73 73 75 65 20 6F 6E 20     2:    Issue on 
0046E0:  63 68 61 6E 6E 65 6C 20 43 2E 0D 0A 0D 0A 0D 0A    channel C.......
0046F0:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ........       A
004700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0047A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0047B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0047C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0047D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0047E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0047F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0048A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0048B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0048C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0048D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0048E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0048F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
004900:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
004910:  20 20 20 54 68 65 20 72 65 6E 64 65 7A 76 6F 75       The rendezvou
004920:  73 20 72 65 71 75 69 72 65 6D 65 6E 74 73 20 61    s requirements a
004930:  72 65 20 65 6E 63 6F 64 65 64 20 69 6E 74 6F 20    re encoded into 
004940:  62 79 74 65 20 30 20 61 73 20 66 6F 6C 6C 6F 77    byte 0 as follow
004950:  73 3A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    s:..            
004960:  20 20 20 20 42 69 74 20 33 3A 20 20 20 20 52 65        Bit 3:    Re
004970:  6E 64 65 7A 76 6F 75 73 20 77 69 74 68 20 63 68    ndezvous with ch
004980:  61 6E 6E 65 6C 20 41 2E 0D 0A 20 20 20 20 20 20    annel A...      
004990:  20 20 20 20 20 20 20 20 20 20 42 69 74 20 34 3A              Bit 4:
0049A0:  20 20 20 20 52 65 6E 64 65 7A 76 6F 75 73 20 77        Rendezvous w
0049B0:  69 74 68 20 63 68 61 6E 6E 65 6C 20 42 2E 0D 0A    ith channel B...
0049C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0049D0:  42 69 74 20 35 3A 20 20 20 20 52 65 6E 64 65 7A    Bit 5:    Rendez
0049E0:  76 6F 75 73 20 77 69 74 68 20 63 68 61 6E 6E 65    vous with channe
0049F0:  6C 20 43 2E 0D 0A 20 20 20 20 20 20 20 20 20 20    l C...          
004A00:  20 20 20 20 20 20 42 69 74 20 36 3A 20 20 20 20          Bit 6:    
004A10:  48 6F 6C 64 20 75 6E 74 69 6C 20 72 65 6C 65 61    Hold until relea
004A20:  73 65 64 2E 0D 0A 20 20 20 20 20 20 20 20 20 20    sed...          
004A30:  20 20 20 20 20 20 42 69 74 20 37 3A 20 20 20 20          Bit 7:    
004A40:  46 6C 75 73 68 20 71 75 65 75 65 2E 0D 0A 20 20    Flush queue...  
004A50:  20 20 20 20 20 41 20 63 68 61 6E 6E 65 6C 20 77         A channel w
004A60:  69 6C 6C 20 69 67 6E 6F 72 65 20 61 6E 20 20 6F    ill ignore an  o
004A70:  72 64 65 72 20 20 74 6F 20 20 72 65 6E 64 65 7A    rder  to  rendez
004A80:  76 6F 75 73 20 20 77 69 74 68 20 20 69 74 73 65    vous  with  itse
004A90:  6C 66 2E 20 20 53 6F 75 6E 64 73 0D 0A 20 20 20    lf.  Sounds..   
004AA0:  20 20 20 20 69 73 73 75 65 64 20 6F 6E 20 6D 75        issued on mu
004AB0:  6C 74 69 70 6C 65 20 63 68 61 6E 6E 65 6C 73 20    ltiple channels 
004AC0:  69 6D 70 6C 69 63 69 74 6C 79 20 20 72 65 6E 64    implicitly  rend
004AD0:  65 7A 76 6F 75 73 20 20 77 69 74 68 20 20 65 61    ezvous  with  ea
004AE0:  63 68 20 20 6F 74 68 65 72 2E 0D 0A 20 20 20 20    ch  other...    
004AF0:  20 20 20 53 6F 75 6E 64 73 20 74 68 61 74 20 61       Sounds that a
004B00:  72 65 20 6F 72 64 65 72 65 64 20 74 6F 20 72 65    re ordered to re
004B10:  6E 64 65 7A 76 6F 75 73 20 77 69 6C 6C 20 20 62    ndezvous will  b
004B20:  65 20 20 69 73 73 75 65 64 20 20 74 6F 20 20 74    e  issued  to  t
004B30:  68 65 20 20 73 6F 75 6E 64 0D 0A 20 20 20 20 20    he  sound..     
004B40:  20 20 67 65 6E 65 72 61 74 6F 72 20 73 74 61 72      generator star
004B50:  74 69 6E 67 20 61 74 20 74 68 65 20 73 61 6D 65    ting at the same
004B60:  20 74 69 6D 65 2E 0D 0A 0D 0A 20 20 20 20 20 20     time.....      
004B70:  20 53 65 74 74 69 6E 67 20 74 68 65 20 68 6F 6C     Setting the hol
004B80:  64 20 62 69 74 20 70 72 65 76 65 6E 74 73 20 74    d bit prevents t
004B90:  68 65 20 20 73 6F 75 6E 64 20 20 66 72 6F 6D 20    he  sound  from 
004BA0:  20 72 75 6E 6E 69 6E 67 20 20 75 6E 74 69 6C 20     running  until 
004BB0:  20 69 74 20 20 69 73 0D 0A 20 20 20 20 20 20 20     it  is..       
004BC0:  72 65 6C 65 61 73 65 64 20 62 79 20 63 61 6C 6C    released by call
004BD0:  69 6E 67 20 53 4F 55 4E 44 20 52 45 4C 45 41 53    ing SOUND RELEAS
004BE0:  45 20 20 28 6F 72 20 20 61 20 20 72 6F 75 74 69    E  (or  a  routi
004BF0:  6E 65 20 20 68 61 76 69 6E 67 20 20 61 20 20 73    ne  having  a  s
004C00:  69 6D 69 6C 61 72 0D 0A 20 20 20 20 20 20 20 65    imilar..       e
004C10:  66 66 65 63 74 29 2E 20 53 65 74 74 69 6E 67 20    ffect). Setting 
004C20:  74 68 65 20 66 6C 75 73 68 20 62 69 74 20 77 69    the flush bit wi
004C30:  6C 6C 20 65 6D 70 74 79 20 74 68 65 20 71 75 65    ll empty the que
004C40:  75 65 20 20 61 6E 64 20 20 61 62 61 6E 64 6F 6E    ue  and  abandon
004C50:  20 20 61 6E 79 0D 0A 20 20 20 20 20 20 20 63 75      any..       cu
004C60:  72 72 65 6E 74 6C 79 20 20 61 63 74 69 76 65 20    rrently  active 
004C70:  20 73 6F 75 6E 64 20 20 74 68 75 73 20 20 61 6C     sound  thus  al
004C80:  6C 6F 77 69 6E 67 20 20 74 68 65 20 20 6E 65 77    lowing  the  new
004C90:  20 20 73 6F 75 6E 64 20 20 20 74 6F 20 20 20 73      sound   to   s
004CA0:  74 61 72 74 0D 0A 20 20 20 20 20 20 20 69 6D 6D    tart..       imm
004CB0:  65 64 69 61 74 65 6C 79 2E 0D 0A 0D 0A 20 20 20    ediately.....   
004CC0:  20 20 20 20 54 68 65 20 61 6D 70 6C 69 74 75 64        The amplitud
004CD0:  65 20 65 6E 76 65 6C 6F 70 65 20 69 73 20 69 6E    e envelope is in
004CE0:  20 74 68 65 20 72 61 6E 67 65 20 30 2E 2E 31 35     the range 0..15
004CF0:  2E 20 45 6E 76 65 6C 6F 70 65 73 20 31 2E 2E 31    . Envelopes 1..1
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:  35 20 61 72 65 20 20 74 68 65 0D 0A 20 20 20 20    5 are  the..    
004E10:  20 20 20 61 6D 70 6C 69 74 75 64 65 20 65 6E 76       amplitude env
004E20:  65 6C 6F 70 65 73 20 20 74 68 61 74 20 20 63 61    elopes  that  ca
004E30:  6E 20 20 62 65 20 20 73 65 74 20 20 75 73 69 6E    n  be  set  usin
004E40:  67 20 20 53 4F 55 4E 44 20 20 41 4D 50 4C 20 20    g  SOUND  AMPL  
004E50:  45 4E 56 45 4C 4F 50 45 2E 0D 0A 20 20 20 20 20    ENVELOPE...     
004E60:  20 20 45 6E 76 65 6C 6F 70 65 20 30 20 6D 65 61      Envelope 0 mea
004E70:  6E 73 20 75 73 65 20 6E 6F 20 61 6D 70 6C 69 74    ns use no amplit
004E80:  75 64 65 20 65 6E 76 65 6C 6F 70 65 2C 20 73 69    ude envelope, si
004E90:  6D 70 6C 79 20 20 68 6F 6C 64 20 20 74 68 65 20    mply  hold  the 
004EA0:  20 69 6E 69 74 69 61 6C 0D 0A 20 20 20 20 20 20     initial..      
004EB0:  20 61 6D 70 6C 69 74 75 64 65 20 66 6F 72 20 32     amplitude for 2
004EC0:  20 73 65 63 6F 6E 64 73 20 6F 72 20 74 68 65 20     seconds or the 
004ED0:  64 75 72 61 74 69 6F 6E 20 73 70 65 63 69 66 69    duration specifi
004EE0:  65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    ed.....       Th
004EF0:  65 20 74 6F 6E 65 20 65 6E 76 65 6C 6F 70 65 20    e tone envelope 
004F00:  69 73 20 69 6E 20 74 68 65 20 72 61 6E 67 65 20    is in the range 
004F10:  30 2E 2E 31 35 2E 20 45 6E 76 65 6C 6F 70 65 73    0..15. Envelopes
004F20:  20 31 2E 2E 31 35 20 61 72 65 20 74 68 65 20 20     1..15 are the  
004F30:  74 6F 6E 65 0D 0A 20 20 20 20 20 20 20 65 6E 76    tone..       env
004F40:  65 6C 6F 70 65 73 20 74 68 61 74 20 63 61 6E 20    elopes that can 
004F50:  62 65 20 73 65 74 20 75 73 69 6E 67 20 53 4F 55    be set using SOU
004F60:  4E 44 20 54 4F 4E 45 20 45 4E 56 45 4C 4F 50 45    ND TONE ENVELOPE
004F70:  2E 20 45 6E 76 65 6C 6F 70 65 20 30 20 20 6D 65    . Envelope 0  me
004F80:  61 6E 73 0D 0A 20 20 20 20 20 20 20 75 73 65 20    ans..       use 
004F90:  6E 6F 20 74 6F 6E 65 20 65 6E 76 65 6C 6F 70 65    no tone envelope
004FA0:  2C 20 73 69 6D 70 6C 79 20 68 6F 6C 64 20 74 68    , simply hold th
004FB0:  65 20 69 6E 69 74 69 61 6C 20 74 6F 6E 65 2E 0D    e initial tone..
004FC0:  0A 0D 0A 20 20 20 20 20 20 20 41 20 74 6F 6E 65    ...       A tone
004FD0:  20 70 65 72 69 6F 64 20 6F 66 20 30 20 6D 65 61     period of 0 mea
004FE0:  6E 73 20 64 6F 20 6E 6F 74 20 67 65 6E 65 72 61    ns do not genera
004FF0:  74 65 20 61 6E 79 20 74 6F 6E 65 2E 20 54 6F 6E    te any tone. Ton
005000:  65 20 70 65 72 69 6F 64 73 20 69 6E 20 74 68 65    e periods in the
005010:  0D 0A 20 20 20 20 20 20 20 72 61 6E 67 65 20 31    ..       range 1
005020:  2E 2E 34 30 39 35 20 73 70 65 63 69 66 79 20 74    ..4095 specify t
005030:  68 65 20 70 65 72 69 6F 64 20 6F 66 20 74 68 65    he period of the
005040:  20 74 6F 6E 65 20 69 6E 20 38 20 6D 69 63 72 6F     tone in 8 micro
005050:  73 65 63 6F 6E 64 20 75 6E 69 74 73 2E 0D 0A 0D    second units....
005060:  0A 20 20 20 20 20 20 20 54 68 65 20 6E 6F 69 73    .       The nois
005070:  65 20 70 65 72 69 6F 64 20 69 73 20 69 6E 20 74    e period is in t
005080:  68 65 20 72 61 6E 67 65 20 30 2E 2E 33 31 2E 20    he range 0..31. 
005090:  4E 6F 69 73 65 20 20 70 65 72 69 6F 64 73 20 20    Noise  periods  
0050A0:  31 2E 2E 33 31 20 20 73 70 65 63 69 66 79 0D 0A    1..31  specify..
0050B0:  20 20 20 20 20 20 20 74 68 65 20 70 65 72 69 6F           the perio
0050C0:  64 20 6F 66 20 74 68 65 20 6E 6F 69 73 65 20 63    d of the noise c
0050D0:  6F 6D 70 6F 6E 65 6E 74 20 6F 66 20 61 20 73 6F    omponent of a so
0050E0:  75 6E 64 2E 20 20 41 20 20 6E 6F 69 73 65 20 20    und.  A  noise  
0050F0:  70 65 72 69 6F 64 20 20 6F 66 20 20 30 0D 0A 20    period  of  0.. 
005100:  20 20 20 20 20 20 6D 65 61 6E 73 20 75 73 65 20          means use 
005110:  6E 6F 20 6E 6F 69 73 65 2E 0D 0A 0D 0A 20 20 20    no noise.....   
005120:  20 20 20 20 54 68 65 20 69 6E 69 74 69 61 6C 20        The initial 
005130:  61 6D 70 6C 69 74 75 64 65 20 69 73 20 69 6E 20    amplitude is in 
005140:  74 68 65 20 72 61 6E 67 65 20 20 30 2E 2E 31 35    the range  0..15
005150:  2E 20 20 41 6D 70 6C 69 74 75 64 65 20 20 30 20    .  Amplitude  0 
005160:  20 62 65 69 6E 67 20 20 6E 6F 0D 0A 20 20 20 20     being  no..    
005170:  20 20 20 69 6E 69 74 69 61 6C 20 73 6F 75 6E 64       initial sound
005180:  2C 20 61 6D 70 6C 69 74 75 64 65 20 31 35 20 62    , amplitude 15 b
005190:  65 69 6E 67 20 74 68 65 20 6D 61 78 69 6D 75 6D    eing the maximum
0051A0:  20 76 6F 6C 75 6D 65 2E 0D 0A 0D 0A 20 20 20 20     volume.....    
0051B0:  20 20 20 42 79 74 65 73 20 37 20 61 6E 64 20 38       Bytes 7 and 8
0051C0:  20 73 74 6F 72 65 20 74 68 65 20 73 6F 75 6E 64     store the sound
0051D0:  20 74 69 6D 65 2E 20 49 66 20 74 68 69 73 20 69     time. If this i
0051E0:  73 20 7A 65 72 6F 20 74 68 65 6E 20 74 68 65 20    s zero then the 
0051F0:  61 6D 70 6C 69 74 75 64 65 0D 0A 20 20 20 20 20    amplitude..     
005200:  20 20 65 6E 76 65 6C 6F 70 65 20 69 73 20 6F 62      envelope is ob
005210:  65 79 65 64 20 6F 6E 63 65 2E 20 49 66 20 20 74    eyed once. If  t
005220:  68 65 20 20 73 6F 75 6E 64 20 20 74 69 6D 65 20    he  sound  time 
005230:  20 69 73 20 20 6E 65 67 61 74 69 76 65 20 20 74     is  negative  t
005240:  68 65 6E 20 20 74 68 65 0D 0A 20 20 20 20 20 20    hen  the..      
005250:  20 61 6D 70 6C 69 74 75 64 65 20 65 6E 76 65 6C     amplitude envel
005260:  6F 70 65 20 69 73 20 6F 62 65 79 65 64 20 6D 69    ope is obeyed mi
005270:  6E 75 73 20 74 68 65 20 20 73 6F 75 6E 64 20 20    nus the  sound  
005280:  74 69 6D 65 20 20 6E 75 6D 62 65 72 20 20 6F 66    time  number  of
005290:  20 20 74 69 6D 65 73 0D 0A 20 20 20 20 20 20 20      times..       
0052A0:  28 69 2E 65 2E 20 31 2E 2E 33 32 37 36 38 20 74    (i.e. 1..32768 t
0052B0:  69 6D 65 73 29 2E 20 49 66 20 74 68 65 20 73 6F    imes). If the so
0052C0:  75 6E 64 20 74 69 6D 65 20 69 73 20 70 6F 73 69    und time is posi
0052D0:  74 69 76 65 20 62 75 74 20 6E 6F 74 20 7A 65 72    tive but not zer
0052E0:  6F 20 74 68 65 6E 0D 0A 20 20 20 20 20 20 20 69    o then..       i
0052F0:  74 20 69 73 20 74 61 6B 65 6E 20 74 6F 20 62 65    t is taken to be
005300:  20 74 68 65 20 64 75 72 61 74 69 6F 6E 20 6F 66     the duration of
005310:  20 74 68 65 20 73 6F 75 6E 64 20 69 6E 20 31 2F     the sound in 1/
005320:  31 30 30 73 20 6F 66 20 61 20 73 65 63 6F 6E 64    100s of a second
005330:  2E 0D 0A 20 20 20 20 20 20 20 49 66 20 61 20 64    ...       If a d
005340:  75 72 61 74 69 6F 6E 20 69 73 20 73 70 65 63 69    uration is speci
005350:  66 69 65 64 20 77 68 65 6E 20 61 6E 20 61 6D 70    fied when an amp
005360:  6C 69 74 75 64 65 20 65 6E 76 65 6C 6F 70 65 20    litude envelope 
005370:  69 73 20 69 6E 20 20 75 73 65 20 20 74 68 65 6E    is in  use  then
005380:  0D 0A 20 20 20 20 20 20 20 74 68 65 20 64 75 72    ..       the dur
005390:  61 74 69 6F 6E 20 67 69 76 65 6E 20 73 65 74 73    ation given sets
0053A0:  20 74 68 65 20 6C 65 6E 67 74 68 20 6F 66 20 74     the length of t
0053B0:  68 65 20 73 6F 75 6E 64 2E 20 49 66 20 20 74 68    he sound. If  th
0053C0:  65 20 20 64 75 72 61 74 69 6F 6E 20 20 69 73 0D    e  duration  is.
0053D0:  0A 20 20 20 20 20 20 20 6C 6F 6E 67 65 72 20 74    .       longer t
0053E0:  68 61 6E 20 74 68 65 20 65 6E 76 65 6C 6F 70 65    han the envelope
0053F0:  20 74 68 65 6E 20 74 68 65 20 66 69 6E 61 6C 20     then the final 
005400:  61 6D 70 6C 69 74 75 64 65 20 6F 66 20 74 68 65    amplitude of the
005410:  20 20 65 6E 76 65 6C 6F 70 65 20 20 69 73 0D 0A      envelope  is..
005420:  20 20 20 20 20 20 20 73 75 73 74 61 69 6E 65 64           sustained
005430:  20 75 6E 74 69 6C 20 74 68 65 20 64 75 72 61 74     until the durat
005440:  69 6F 6E 20 65 78 70 69 72 65 73 2E 20 54 6F 6E    ion expires. Ton
005450:  65 20 65 6E 76 65 6C 6F 70 65 73 20 20 61 72 65    e envelopes  are
005460:  20 20 74 72 65 61 74 65 64 20 20 69 6E 0D 0A 20      treated  in.. 
005470:  20 20 20 20 20 20 6D 75 63 68 20 74 68 65 20 73          much the s
005480:  61 6D 65 20 77 61 79 20 20 61 73 20 20 61 6D 70    ame way  as  amp
005490:  6C 69 74 75 64 65 20 20 65 6E 76 65 6C 6F 70 65    litude  envelope
0054A0:  73 20 20 65 78 63 65 70 74 20 20 74 68 61 74 20    s  except  that 
0054B0:  20 74 68 65 79 20 20 6E 65 76 65 72 0D 0A 20 20     they  never..  
0054C0:  20 20 20 20 20 73 70 65 63 69 66 79 20 74 68 65         specify the
0054D0:  20 6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20 73     length of the s
0054E0:  6F 75 6E 64 2E 0D 0A 20 20 20 20 20 20 20 54 68    ound...       Th
0054F0:  65 20 73 6F 75 6E 64 20 65 76 65 6E 74 20 74 68    e sound event th
005500:  61 74 20 69 73 20 72 75 6E 20 77 68 65 6E 20 61    at is run when a
005510:  20 73 6F 75 6E 64 20 71 75 65 75 65 20 20 68 61     sound queue  ha
005520:  73 20 20 61 20 20 66 72 65 65 20 20 73 6C 6F 74    s  a  free  slot
005530:  20 20 69 73 0D 0A 20 20 20 20 20 20 20 64 69 73      is..       dis
005540:  61 72 6D 65 64 20 6F 6E 20 74 68 65 20 63 68 61    armed on the cha
005550:  6E 6E 65 6C 73 20 73 70 65 63 69 66 69 65 64 20    nnels specified 
005560:  69 6E 20 74 68 69 73 20 63 6F 6D 6D 61 6E 64 2E    in this command.
005570:  0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 73 6F 75    ..       All sou
005580:  6E 64 73 20 63 75 72 72 65 6E 74 6C 79 20 68 65    nds currently he
005590:  6C 64 20 62 79 20 53 4F 55 4E 44 20 20 48 4F 4C    ld by SOUND  HOL
0055A0:  44 20 20 61 72 65 20 20 61 75 74 6F 6D 61 74 69    D  are  automati
0055B0:  63 61 6C 6C 79 20 20 72 65 6C 65 61 73 65 64 0D    cally  released.
0055C0:  0A 20 20 20 20 20 20 20 77 68 65 6E 20 74 68 69    .       when thi
0055D0:  73 20 72 6F 75 74 69 6E 65 20 69 73 20 63 61 6C    s routine is cal
0055E0:  6C 65 64 2E 20 41 6C 73 6F 2C 20 74 68 65 20 73    led. Also, the s
0055F0:  6F 75 6E 64 20 71 75 65 75 65 20 65 76 65 6E 74    ound queue event
005600:  20 20 69 73 20 20 64 69 73 61 72 6D 65 64 0D 0A      is  disarmed..
005610:  20 20 20 20 20 20 20 28 73 65 65 20 53 4F 55 4E           (see SOUN
005620:  44 20 41 52 4D 20 45 56 45 4E 54 29 2E 0D 0A 20    D ARM EVENT)... 
005630:  20 20 20 20 20 20 53 4F 55 4E 44 20 51 55 45 55          SOUND QUEU
005640:  45 20 6D 61 79 20 65 6E 61 62 6C 65 20 69 6E 74    E may enable int
005650:  65 72 72 75 70 74 73 2E 0D 0A 0D 0A 20 20 20 20    errupts.....    
005660:  20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72 69       Related entri
005670:  65 73 3A 0D 0A 20 20 20 20 20 20 20 53 4F 55 4E    es:..       SOUN
005680:  44 20 41 52 4D 20 45 56 45 4E 54 0D 0A 20 20 20    D ARM EVENT..   
005690:  20 20 20 20 53 4F 55 4E 44 20 43 48 45 43 4B 0D        SOUND CHECK.
0056A0:  0A 20 20 20 20 20 20 20 53 4F 55 4E 44 20 52 45    .       SOUND RE
0056B0:  4C 45 41 53 45 0D 0A 0D 0A 20 20 20 20 20 20 20    LEASE....       
0056C0:  41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36    AMSTRAD CPC464/6
0056D0:  36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45    64/6128 FIRMWARE
0056E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0056F0:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
005700:  31 35 2E 31 37 30 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    15.170..........
005710:  0D 0A 0D 0A 20 20 20 20 20 20 20 31 34 33 3A 20    ....       143: 
005720:  53 4F 55 4E 44 20 43 48 45 43 4B 20 20 20 20 20    SOUND CHECK     
005730:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005740:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005750:  20 20 20 20 20 20 20 20 20 20 20 20 23 42 43 41                #BCA
005760:  44 0D 0A 0D 0A 20 20 20 20 20 20 20 41 73 6B 20    D....       Ask 
005770:  69 66 20 74 68 65 72 65 20 69 73 20 73 70 61 63    if there is spac
005780:  65 20 69 6E 20 61 20 73 6F 75 6E 64 20 71 75 65    e in a sound que
005790:  75 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63    ue.....       Ac
0057A0:  74 69 6F 6E 3A 0D 0A 0D 0A 20 20 20 20 20 20 20    tion:....       
0057B0:  41 73 6B 20 74 68 65 20 73 74 61 74 65 20 6F 66    Ask the state of
0057C0:  20 61 20 73 6F 75 6E 64 20 63 68 61 6E 6E 65 6C     a sound channel
0057D0:  2E 20 54 68 65 20 73 74 61 74 75 73 20 69 6E 63    . The status inc
0057E0:  6C 75 64 65 73 20 20 74 68 65 20 20 6E 75 6D 62    ludes  the  numb
0057F0:  65 72 20 20 6F 66 0D 0A 20 20 20 20 20 20 20 66    er  of..       f
005800:  72 65 65 20 73 70 61 63 65 73 20 69 6E 20 74 68    ree spaces in th
005810:  65 20 73 6F 75 6E 64 20 71 75 65 75 65 20 61 6E    e sound queue an
005820:  64 20 77 68 65 74 68 65 72 20 74 68 65 20 63 68    d whether the ch
005830:  61 6E 6E 65 6C 20 69 73 20 68 65 6C 64 2E 0D 0A    annel is held...
005840:  0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20 63    ..       Entry c
005850:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20    onditions:....  
005860:  20 20 20 20 20 41 20 63 6F 6E 74 61 69 6E 73 20         A contains 
005870:  74 68 65 20 62 69 74 20 66 6F 72 20 74 68 65 20    the bit for the 
005880:  63 68 61 6E 6E 65 6C 20 74 6F 20 74 65 73 74 2E    channel to test.
005890:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20    ....       Exit 
0058A0:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20    conditions:.... 
0058B0:  20 20 20 20 20 20 41 20 63 6F 6E 74 61 69 6E 73          A contains
0058C0:  20 74 68 65 20 63 68 61 6E 6E 65 6C 20 73 74 61     the channel sta
0058D0:  74 75 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 42    tus.....       B
0058E0:  43 2C 20 44 45 2C 20 48 4C 20 61 6E 64 20 66 6C    C, DE, HL and fl
0058F0:  61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20    ags corrupt...  
005900:  20 20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72         All other r
005910:  65 67 69 73 74 65 72 73 20 70 72 65 73 65 72 76    egisters preserv
005920:  65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F    ed.....       No
005930:  74 65 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    tes:....       T
005940:  68 65 20 63 68 61 6E 6E 65 6C 20 74 6F 20 61 73    he channel to as
005950:  6B 20 74 68 65 20 73 74 61 74 75 73 20 6F 66 20    k the status of 
005960:  69 73 20 65 6E 63 6F 64 65 64 20 61 73 20 66 6F    is encoded as fo
005970:  6C 6C 6F 77 73 3A 0D 0A 0D 0A 20 20 20 20 20 20    llows:....      
005980:  20 20 20 20 20 20 20 20 20 20 42 69 74 20 30 3A              Bit 0:
005990:  20 20 20 20 41 73 6B 20 61 62 6F 75 74 20 63 68        Ask about ch
0059A0:  61 6E 6E 65 6C 20 41 2E 0D 0A 20 20 20 20 20 20    annel A...      
0059B0:  20 20 20 20 20 20 20 20 20 20 42 69 74 20 31 3A              Bit 1:
0059C0:  20 20 20 20 41 73 6B 20 61 62 6F 75 74 20 63 68        Ask about ch
0059D0:  61 6E 6E 65 6C 20 42 2E 0D 0A 20 20 20 20 20 20    annel B...      
0059E0:  20 20 20 20 20 20 20 20 20 20 42 69 74 20 32 3A              Bit 2:
0059F0:  20 20 20 20 41 73 6B 20 61 62 6F 75 74 20 63 68        Ask about ch
005A00:  61 6E 6E 65 6C 20 43 2E 0D 0A 0D 0A 20 20 20 20    annel C.....    
005A10:  20 20 20 49 66 20 6D 6F 72 65 20 74 68 61 6E 20       If more than 
005A20:  6F 6E 65 20 62 69 74 20 69 73 20 73 65 74 20 74    one bit is set t
005A30:  68 65 6E 20 74 68 65 20 73 74 61 74 75 73 20 6F    hen the status o
005A40:  66 20 20 6F 6E 6C 79 20 20 6F 6E 65 20 20 63 68    f  only  one  ch
005A50:  61 6E 6E 65 6C 20 20 69 73 0D 0A 20 20 20 20 20    annel  is..     
005A60:  20 20 72 65 74 75 72 6E 65 64 2E 20 54 68 65 20      returned. The 
005A70:  63 68 61 6E 6E 65 6C 73 20 61 72 65 20 74 65 73    channels are tes
005A80:  74 65 64 20 69 6E 20 74 68 65 20 6F 72 64 65 72    ted in the order
005A90:  20 67 69 76 65 6E 20 61 62 6F 76 65 2E 0D 0A 0D     given above....
005AA0:  0A 20 20 20 20 20 20 20 54 68 65 20 73 74 61 74    .       The stat
005AB0:  75 73 20 72 65 74 75 72 6E 65 64 20 69 73 20 65    us returned is e
005AC0:  6E 63 6F 64 65 64 20 61 73 20 66 6F 6C 6C 6F 77    ncoded as follow
005AD0:  73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    s:....          
005AE0:  42 69 74 73 20 30 2E 2E 32 3A 20 20 20 20 20 43    Bits 0..2:     C
005AF0:  6F 6E 74 61 69 6E 20 74 68 65 20 6E 75 6D 62 65    ontain the numbe
005B00:  72 20 6F 66 20 66 72 65 65 20 73 6C 6F 74 73 20    r of free slots 
005B10:  69 6E 20 20 74 68 65 20 20 63 68 61 6E 6E 65 6C    in  the  channel
005B20:  27 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    's..            
005B30:  20 20 20 20 20 20 20 20 20 20 20 20 20 73 6F 75                 sou
005B40:  6E 64 20 71 75 65 75 65 2E 0D 0A 20 20 20 20 20    nd queue...     
005B50:  20 20 20 20 20 42 69 74 20 33 3A 20 20 20 20 20         Bit 3:     
005B60:  20 20 20 20 54 68 65 20 63 68 61 6E 6E 65 6C 20        The channel 
005B70:  69 73 20 61 77 61 69 74 69 6E 67 20 61 20 72 65    is awaiting a re
005B80:  6E 64 65 7A 76 6F 75 73 20 77 69 74 68 20 63 68    ndezvous with ch
005B90:  61 6E 6E 65 6C 20 41 2E 0D 0A 20 20 20 20 20 20    annel A...      
005BA0:  20 20 20 20 42 69 74 20 34 3A 20 20 20 20 20 20        Bit 4:      
005BB0:  20 20 20 54 68 65 20 63 68 61 6E 6E 65 6C 20 69       The channel i
005BC0:  73 20 61 77 61 69 74 69 6E 67 20 61 20 72 65 6E    s awaiting a ren
005BD0:  64 65 7A 76 6F 75 73 20 77 69 74 68 20 63 68 61    dezvous with cha
005BE0:  6E 6E 65 6C 20 42 2E 0D 0A 20 20 20 20 20 20 20    nnel B...       
005BF0:  20 20 20 42 69 74 20 35 3A 20 20 20 20 20 20 20       Bit 5:       
005C00:  20 20 54 68 65 20 63 68 61 6E 6E 65 6C 20 69 73      The channel is
005C10:  20 61 77 61 69 74 69 6E 67 20 61 20 72 65 6E 64     awaiting a rend
005C20:  65 7A 76 6F 75 73 20 77 69 74 68 20 63 68 61 6E    ezvous with chan
005C30:  6E 65 6C 20 43 2E 0D 0A 20 20 20 20 20 20 20 20    nel C...        
005C40:  20 20 42 69 74 20 36 3A 20 20 20 20 20 20 20 20      Bit 6:        
005C50:  20 54 68 65 20 63 68 61 6E 6E 65 6C 20 69 73 20     The channel is 
005C60:  68 65 6C 64 2E 0D 0A 20 20 20 20 20 20 20 20 20    held...         
005C70:  20 42 69 74 20 37 3A 20 20 20 20 20 20 20 20 20     Bit 7:         
005C80:  54 68 65 20 63 68 61 6E 6E 65 6C 20 69 73 20 61    The channel is a
005C90:  63 74 69 76 65 20 28 70 72 6F 64 75 63 69 6E 67    ctive (producing
005CA0:  20 61 20 73 6F 75 6E 64 29 2E 0D 0A 0D 0A 0D 0A     a sound).......
005CB0:  20 20 20 20 20 20 20 43 61 6C 6C 69 6E 67 20 74           Calling t
005CC0:  68 69 73 20 72 6F 75 74 69 6E 65 20 64 69 73 61    his routine disa
005CD0:  72 6D 73 20 74 68 65 20 73 6F 75 6E 64 20 71 75    rms the sound qu
005CE0:  65 75 65 20 65 76 65 6E 74 20 20 74 68 61 74 20    eue event  that 
005CF0:  20 6F 63 63 75 72 73 20 20 77 68 65 6E 0D 0A 20     occurs  when.. 
005D00:  20 20 20 20 20 20 74 68 65 20 71 75 65 75 65 20          the queue 
005D10:  68 61 73 20 61 20 66 72 65 65 20 73 6C 6F 74 20    has a free slot 
005D20:  66 6F 72 20 74 68 65 20 20 63 68 61 6E 6E 65 6C    for the  channel
005D30:  20 20 72 65 74 75 72 6E 65 64 20 20 28 73 65 65      returned  (see
005D40:  20 20 53 4F 55 4E 44 20 20 41 52 4D 0D 0A 20 20      SOUND  ARM..  
005D50:  20 20 20 20 20 45 56 45 4E 54 29 2E 0D 0A 0D 0A         EVENT).....
005D60:  0D 0A 20 20 20 20 20 20 20 54 68 69 73 20 72 6F    ..       This ro
005D70:  75 74 69 6E 65 20 6D 61 79 20 65 6E 61 62 6C 65    utine may enable
005D80:  20 69 6E 74 65 72 72 75 70 74 73 2E 0D 0A 0D 0A     interrupts.....
005D90:  0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74    ....       Relat
005DA0:  65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D    ed entries:.....
005DB0:  0A 20 20 20 20 20 20 20 53 4F 55 4E 44 20 41 52    .       SOUND AR
005DC0:  4D 20 45 56 45 4E 54 0D 0A 20 20 20 20 20 20 20    M EVENT..       
005DD0:  53 4F 55 4E 44 20 51 55 45 55 45 0D 0A 0D 0A 0D    SOUND QUEUE.....
005DE0:  0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41    ...       AMSTRA
005DF0:  44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32    D CPC464/664/612
005E00:  38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20    8 FIRMWARE      
005E10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005E20:  20 20 20 20 20 70 61 67 65 20 31 35 2E 31 37 31         page 15.171
005E30:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ..............  
005E40:  20 20 20 20 20 31 34 34 3A 20 53 4F 55 4E 44 20         144: SOUND 
005E50:  41 52 4D 20 45 56 45 4E 54 20 20 20 20 20 20 20    ARM EVENT       
005E60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005E70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005E80:  20 20 20 20 20 20 23 42 43 42 30 0D 0A 0D 0A 20          #BCB0.... 
005E90:  20 20 20 20 20 20 53 65 74 20 75 70 20 61 6E 20          Set up an 
005EA0:  65 76 65 6E 74 20 74 6F 20 62 65 20 72 75 6E 20    event to be run 
005EB0:  77 68 65 6E 20 61 20 73 6F 75 6E 64 20 71 75 65    when a sound que
005EC0:  75 65 20 62 65 63 6F 6D 65 73 20 65 6D 70 74 79    ue becomes empty
005ED0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69    .....       Acti
005EE0:  6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    on:......       
005EF0:  41 72 6D 20 74 68 65 20 73 6F 75 6E 64 20 65 76    Arm the sound ev
005F00:  65 6E 74 20 74 6F 20 62 65 20 72 75 6E 20 77 68    ent to be run wh
005F10:  65 6E 20 61 20 66 72 65 65 20 73 6C 6F 74 20 6F    en a free slot o
005F20:  63 63 75 72 73 20 69 6E 20 20 61 20 20 63 68 61    ccurs in  a  cha
005F30:  6E 6E 65 6C 27 73 0D 0A 20 20 20 20 20 20 20 73    nnel's..       s
005F40:  6F 75 6E 64 20 71 75 65 75 65 2E 0D 0A 0D 0A 20    ound queue..... 
005F50:  20 20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64          Entry cond
005F60:  69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20    itions:....     
005F70:  20 20 41 20 63 6F 6E 74 61 69 6E 73 20 74 68 65      A contains the
005F80:  20 62 69 74 20 66 6F 72 20 74 68 65 20 63 68 61     bit for the cha
005F90:  6E 6E 65 6C 20 74 6F 20 61 72 6D 2E 0D 0A 20 20    nnel to arm...  
005FA0:  20 20 20 20 20 48 4C 20 63 6F 6E 74 61 69 6E 73         HL contains
005FB0:  20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20     the address of 
005FC0:  61 6E 20 65 76 65 6E 74 20 62 6C 6F 63 6B 2E 0D    an event block..
005FD0:  0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63    ...       Exit c
005FE0:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20    onditions:....  
005FF0:  20 20 20 20 20 41 46 2C 20 42 43 2C 20 44 45 20         AF, BC, DE 
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:  61 6E 64 20 48 4C 20 63 6F 72 72 75 70 74 2E 0D    and HL corrupt..
006110:  0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65    .       All othe
006120:  72 20 72 65 67 69 73 74 65 72 73 20 70 72 65 73    r registers pres
006130:  65 72 76 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20    erved.....      
006140:  20 4E 6F 74 65 73 3A 0D 0A 0D 0A 20 20 20 20 20     Notes:....     
006150:  20 20 54 68 65 20 63 68 61 6E 6E 65 6C 20 66 6F      The channel fo
006160:  72 20 77 68 69 63 68 20 74 6F 20 61 72 6D 20 74    r which to arm t
006170:  68 65 20 65 76 65 6E 74 20 69 73 20 65 6E 63 6F    he event is enco
006180:  64 65 64 20 61 73 20 66 6F 6C 6C 6F 77 73 3A 0D    ded as follows:.
006190:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
0061A0:  20 20 20 42 69 74 20 30 3A 20 20 20 20 41 72 6D       Bit 0:    Arm
0061B0:  20 63 68 61 6E 6E 65 6C 20 41 2E 0D 0A 20 20 20     channel A...   
0061C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74                 Bit
0061D0:  20 31 3A 20 20 20 20 41 72 6D 20 63 68 61 6E 6E     1:    Arm chann
0061E0:  65 6C 20 42 2E 0D 0A 20 20 20 20 20 20 20 20 20    el B...         
0061F0:  20 20 20 20 20 20 20 42 69 74 20 32 3A 20 20 20           Bit 2:   
006200:  20 41 72 6D 20 63 68 61 6E 6E 65 6C 20 43 2E 0D     Arm channel C..
006210:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 6D    .....       If m
006220:  6F 72 65 20 74 68 61 6E 20 6F 6E 65 20 62 69 74    ore than one bit
006230:  20 69 73 20 73 65 74 20 20 74 68 65 6E 20 20 6F     is set  then  o
006240:  6E 6C 79 20 20 6F 6E 65 20 20 63 68 61 6E 6E 65    nly  one  channe
006250:  6C 20 20 69 73 20 20 61 72 6D 65 64 2E 20 20 54    l  is  armed.  T
006260:  68 65 0D 0A 20 20 20 20 20 20 20 63 68 61 6E 6E    he..       chann
006270:  65 6C 73 20 61 72 65 20 61 72 6D 65 64 20 69 6E    els are armed in
006280:  20 74 68 65 20 6F 72 64 65 72 20 67 69 76 65 6E     the order given
006290:  20 61 62 6F 76 65 2E 0D 0A 0D 0A 20 20 20 20 20     above.....     
0062A0:  20 20 54 68 65 20 65 76 65 6E 74 20 62 6C 6F 63      The event bloc
0062B0:  6B 20 70 61 73 73 65 64 20 6D 75 73 74 20 62 65    k passed must be
0062C0:  20 69 6E 69 74 69 61 6C 69 7A 65 64 20 28 62 79     initialized (by
0062D0:  20 4B 4C 20 49 4E 49 54 20 45 56 45 4E 54 29 2E     KL INIT EVENT).
0062E0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    ......       The
0062F0:  20 65 76 65 6E 74 20 77 69 6C 6C 20 62 65 20 27     event will be '
006300:  6B 69 63 6B 65 64 27 20 77 68 65 6E 20 61 20 66    kicked' when a f
006310:  72 65 65 20 73 6C 6F 74 20 6F 63 63 75 72 73 20    ree slot occurs 
006320:  69 6E 20 20 74 68 65 20 20 71 75 65 75 65 2E 20    in  the  queue. 
006330:  20 49 66 0D 0A 20 20 20 20 20 20 20 74 68 65 72     If..       ther
006340:  65 20 69 73 20 61 20 66 72 65 65 20 73 6C 6F 74    e is a free slot
006350:  20 69 6E 20 74 68 65 20 71 75 65 75 65 20 77 68     in the queue wh
006360:  65 6E 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20    en this routine 
006370:  69 73 20 63 61 6C 6C 65 64 20 74 68 65 6E 20 74    is called then t
006380:  68 65 0D 0A 20 20 20 20 20 20 20 65 76 65 6E 74    he..       event
006390:  20 77 69 6C 6C 20 62 65 20 27 6B 69 63 6B 65 64     will be 'kicked
0063A0:  27 20 69 6D 6D 65 64 69 61 74 65 6C 79 2E 0D 0A    ' immediately...
0063B0:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 73    ....       The s
0063C0:  6F 75 6E 64 20 65 76 65 6E 74 20 69 73 20 64 69    ound event is di
0063D0:  73 61 72 6D 65 64 20 61 75 74 6F 6D 61 74 69 63    sarmed automatic
0063E0:  61 6C 6C 79 20 77 68 65 6E 20 53 4F 55 4E 44 20    ally when SOUND 
0063F0:  20 51 55 45 55 45 20 20 6F 72 20 20 53 4F 55 4E     QUEUE  or  SOUN
006400:  44 0D 0A 20 20 20 20 20 20 20 43 48 45 43 4B 20    D..       CHECK 
006410:  69 73 20 63 61 6C 6C 65 64 2E 20 49 74 20 69 73    is called. It is
006420:  20 61 6C 73 6F 20 64 69 73 61 72 6D 65 64 20 77     also disarmed w
006430:  68 65 6E 20 74 68 65 20 65 76 65 6E 74 20 69 73    hen the event is
006440:  20 72 75 6E 2E 20 54 68 75 73 2C 20 20 74 68 65     run. Thus,  the
006450:  0D 0A 20 20 20 20 20 20 20 65 76 65 6E 74 20 72    ..       event r
006460:  6F 75 74 69 6E 65 20 77 69 6C 6C 20 6E 65 65 64    outine will need
006470:  20 74 6F 20 72 65 61 72 6D 20 74 68 65 20 73 6F     to rearm the so
006480:  75 6E 64 20 76 65 6E 74 20 20 74 6F 20 20 6B 65    und vent  to  ke
006490:  65 70 20 20 69 74 20 20 72 75 6E 6E 69 6E 67 0D    ep  it  running.
0064A0:  0A 20 20 20 20 20 20 20 63 6F 6E 74 69 6E 75 6F    .       continuo
0064B0:  75 73 6C 79 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    usly.......     
0064C0:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 6D      This routine m
0064D0:  61 79 20 65 6E 61 62 6C 65 20 69 6E 74 65 72 72    ay enable interr
0064E0:  75 70 74 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    upts.........   
0064F0:  20 20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72        Related entr
006500:  69 65 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 4B    ies:....       K
006510:  4C 20 49 4E 49 54 20 45 56 45 4E 54 0D 0A 20 20    L INIT EVENT..  
006520:  20 20 20 20 20 53 4F 55 4E 44 20 43 48 45 43 4B         SOUND CHECK
006530:  0D 0A 20 20 20 20 20 20 20 53 4F 55 4E 44 20 51    ..       SOUND Q
006540:  55 45 55 45 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    UEUE..........  
006550:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
006560:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
006570:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
006580:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006590:  70 61 67 65 20 31 35 2E 31 37 32 0D 0A 0D 0A 0D    page 15.172.....
0065A0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
0065B0:  31 34 35 3A 20 53 4F 55 4E 44 20 52 45 4C 45 41    145: SOUND RELEA
0065C0:  53 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    SE              
0065D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0065E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0065F0:  20 23 42 43 42 33 0D 0A 0D 0A 0D 0A 20 20 20 20     #BCB3......    
006600:  20 20 20 41 6C 6C 6F 77 20 73 6F 75 6E 64 73 20       Allow sounds 
006610:  77 68 69 63 68 20 61 72 65 20 69 6E 64 69 76 69    which are indivi
006620:  64 75 61 6C 6C 79 20 68 65 6C 64 20 74 6F 20 73    dually held to s
006630:  74 61 72 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    tart.......     
006640:  20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20      Action:...... 
006650:  20 20 20 20 20 20 52 65 6C 65 61 73 65 20 68 65          Release he
006660:  6C 64 20 73 6F 75 6E 64 73 20 6F 6E 20 61 20 6E    ld sounds on a n
006670:  75 6D 62 65 72 20 6F 66 20 63 68 61 6E 6E 65 6C    umber of channel
006680:  73 2E 20 54 68 69 73 20 61 6C 6C 6F 77 73 20 20    s. This allows  
006690:  73 6F 75 6E 64 73 20 20 74 68 61 74 0D 0A 20 20    sounds  that..  
0066A0:  20 20 20 20 20 77 65 72 65 20 6D 61 72 6B 65 64         were marked
0066B0:  20 77 69 74 68 20 61 20 68 6F 6C 64 20 62 69 74     with a hold bit
0066C0:  20 77 68 65 6E 20 74 68 65 79 20 77 65 72 65 20     when they were 
0066D0:  73 65 74 20 75 70 20 62 79 20 20 53 4F 55 4E 44    set up by  SOUND
0066E0:  20 20 51 55 45 55 45 20 20 74 6F 0D 0A 20 20 20      QUEUE  to..   
0066F0:  20 20 20 20 73 74 61 72 74 20 28 6F 74 68 65 72        start (other
006700:  20 66 61 63 74 6F 72 73 20 77 69 6C 6C 69 6E 67     factors willing
006710:  29 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    ).......       E
006720:  6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    ntry conditions:
006730:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 20 63    ......       A c
006740:  6F 6E 74 61 69 6E 73 20 62 69 74 73 20 66 6F 72    ontains bits for
006750:  20 74 68 65 20 63 68 61 6E 6E 65 6C 73 20 74 6F     the channels to
006760:  20 72 65 6C 65 61 73 65 2E 0D 0A 0D 0A 0D 0A 20     release....... 
006770:  20 20 20 20 20 20 45 78 69 74 20 63 6F 6E 64 69          Exit condi
006780:  74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    tions:......    
006790:  20 20 20 41 46 2C 20 42 43 2C 20 44 45 2C 20 48       AF, BC, DE, H
0067A0:  4C 20 61 6E 64 20 49 58 20 63 6F 72 72 75 70 74    L and IX corrupt
0067B0:  2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74    ...       All ot
0067C0:  68 65 72 20 72 65 67 69 73 74 65 72 73 20 70 72    her registers pr
0067D0:  65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20    eserved.......  
0067E0:  20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D         Notes:.....
0067F0:  0A 20 20 20 20 20 20 20 54 68 65 20 63 68 61 6E    .       The chan
006800:  6E 65 6C 73 20 74 6F 20 72 65 6C 65 61 73 65 20    nels to release 
006810:  61 72 65 20 65 6E 63 6F 64 65 64 20 61 73 20 66    are encoded as f
006820:  6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 0D 0A 20 20 20    ollows:......   
006830:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74                 Bit
006840:  20 30 3A 20 20 20 20 52 65 6C 65 61 73 65 20 63     0:    Release c
006850:  68 61 6E 6E 65 6C 20 41 2E 0D 0A 20 20 20 20 20    hannel A...     
006860:  20 20 20 20 20 20 20 20 20 20 20 42 69 74 20 31               Bit 1
006870:  3A 20 20 20 20 52 65 6C 65 61 73 65 20 63 68 61    :    Release cha
006880:  6E 6E 65 6C 20 42 2E 0D 0A 20 20 20 20 20 20 20    nnel B...       
006890:  20 20 20 20 20 20 20 20 20 42 69 74 20 32 3A 20             Bit 2: 
0068A0:  20 20 20 52 65 6C 65 61 73 65 20 63 68 61 6E 6E       Release chann
0068B0:  65 6C 20 43 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    el C.......     
0068C0:  20 20 41 6C 6C 20 63 68 61 6E 6E 65 6C 73 20 74      All channels t
0068D0:  68 61 74 20 61 72 65 20 73 70 65 63 69 66 69 65    hat are specifie
0068E0:  64 20 61 72 65 20 72 65 6C 65 61 73 65 64 2E 0D    d are released..
0068F0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20    .....       All 
006900:  73 6F 75 6E 64 73 20 63 75 72 72 65 6E 74 6C 79    sounds currently
006910:  20 68 65 6C 64 20 62 79 20 53 4F 55 4E 44 20 48     held by SOUND H
006920:  4F 4C 44 20 61 72 65 20 61 75 74 6F 6D 61 74 69    OLD are automati
006930:  63 61 6C 6C 79 20 72 65 6C 65 61 73 65 64 2E 0D    cally released..
006940:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73    .....       This
006950:  20 72 6F 75 74 69 6E 65 20 6D 61 79 20 65 6E 61     routine may ena
006960:  62 6C 65 20 69 6E 74 65 72 72 75 70 74 73 2E 0D    ble interrupts..
006970:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65    .......       Re
006980:  6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A    lated entries:..
006990:  0D 0A 0D 0A 20 20 20 20 20 20 20 53 4F 55 4E 44    ....       SOUND
0069A0:  20 51 55 45 55 45 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A     QUEUE..........
0069B0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53    ......       AMS
0069C0:  54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F    TRAD CPC464/664/
0069D0:  36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20    6128 FIRMWARE   
0069E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0069F0:  20 20 20 20 20 20 20 20 70 61 67 65 20 31 35 2E            page 15.
006A00:  31 37 33 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    173.............
006A10:  0A 20 20 20 20 20 20 20 31 34 36 3A 20 53 4F 55    .       146: SOU
006A20:  4E 44 20 48 4F 4C 44 20 20 20 20 20 20 20 20 20    ND HOLD         
006A30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006A40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006A50:  20 20 20 20 20 20 20 20 20 23 42 43 42 36 0D 0A             #BCB6..
006A60:  0D 0A 20 20 20 20 20 20 20 53 74 6F 70 20 61 6C    ..       Stop al
006A70:  6C 20 73 6F 75 6E 64 73 20 69 6E 20 6D 69 64 66    l sounds in midf
006A80:  6C 69 67 68 74 2E 0D 0A 0D 0A 20 20 20 20 20 20    light.....      
006A90:  20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 20 20 20 20     Action:....    
006AA0:  20 20 20 54 68 69 73 20 73 74 6F 70 73 20 61 6C       This stops al
006AB0:  6C 20 73 6F 75 6E 64 73 20 69 6D 6D 65 64 69 61    l sounds immedia
006AC0:  74 65 6C 79 2E 20 54 68 65 20 73 6F 75 6E 64 73    tely. The sounds
006AD0:  20 63 61 6E 20 62 65 20 73 74 61 72 74 65 64 20     can be started 
006AE0:  61 67 61 69 6E 20 20 62 79 0D 0A 20 20 20 20 20    again  by..     
006AF0:  20 20 63 61 6C 6C 69 6E 67 20 53 4F 55 4E 44 20      calling SOUND 
006B00:  43 4F 4E 54 49 4E 55 45 2E 0D 0A 0D 0A 20 20 20    CONTINUE.....   
006B10:  20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74        Entry condit
006B20:  69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20    ions:....       
006B30:  4E 6F 20 63 6F 6E 64 69 74 69 6F 6E 73 2E 0D 0A    No conditions...
006B40:  0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F    ..       Exit co
006B50:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20    nditions:....   
006B60:  20 20 20 20 49 66 20 61 20 73 6F 75 6E 64 20 77        If a sound w
006B70:  61 73 20 61 63 74 69 76 65 3A 0D 0A 0D 0A 0D 0A    as active:......
006B80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006B90:  43 61 72 72 79 20 74 72 75 65 2E 0D 0A 0D 0A 0D    Carry true......
006BA0:  0A 20 20 20 20 20 20 20 49 66 20 6E 6F 20 73 6F    .       If no so
006BB0:  75 6E 64 20 77 61 73 20 61 63 74 69 76 65 3A 0D    und was active:.
006BC0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    .....           
006BD0:  20 20 20 20 20 43 61 72 72 79 20 66 61 6C 73 65         Carry false
006BE0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 6C    .......       Al
006BF0:  77 61 79 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ways:......     
006C00:  20 20 20 20 20 20 20 20 20 20 20 41 2C 20 42 43               A, BC
006C10:  2C 20 48 4C 20 61 6E 64 20 6F 74 68 65 72 20 66    , HL and other f
006C20:  6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0A 20    lags corrupt... 
006C30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                   A
006C40:  6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73 74 65    ll other registe
006C50:  72 73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D    rs preserved....
006C60:  0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A    ...       Notes:
006C70:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 53 6F 75    ......       Sou
006C80:  6E 64 73 20 74 68 61 74 20 61 72 65 20 68 65 6C    nds that are hel
006C90:  64 20 62 79 20 74 68 69 73 20 72 6F 75 74 69 6E    d by this routin
006CA0:  65 20 61 72 65 20 61 75 74 6F 6D 61 74 69 63 61    e are automatica
006CB0:  6C 6C 79 20 72 65 73 74 61 72 74 65 64 20 20 77    lly restarted  w
006CC0:  68 65 6E 0D 0A 20 20 20 20 20 20 20 53 4F 55 4E    hen..       SOUN
006CD0:  44 20 51 55 45 55 45 20 6F 72 20 53 4F 55 4E 44    D QUEUE or SOUND
006CE0:  20 52 45 4C 45 41 53 45 20 61 72 65 20 63 61 6C     RELEASE are cal
006CF0:  6C 65 64 20 61 73 20 77 65 6C 6C 20 61 73 20 77    led as well as w
006D00:  68 65 6E 20 53 4F 55 4E 44 20 43 4F 4E 54 49 4E    hen SOUND CONTIN
006D10:  55 45 0D 0A 20 20 20 20 20 20 20 69 74 73 65 6C    UE..       itsel
006D20:  66 20 69 73 20 63 61 6C 6C 65 64 2E 0D 0A 0D 0A    f is called.....
006D30:  20 20 20 20 20 20 20 54 68 65 20 73 6F 75 6E 64           The sound
006D40:  20 69 73 20 73 74 6F 70 70 65 64 20 62 79 20 20     is stopped by  
006D50:  68 61 6C 74 69 6E 67 20 20 74 68 65 20 20 65 78    halting  the  ex
006D60:  65 63 75 74 69 6F 6E 20 20 6F 66 20 20 73 6F 75    ecution  of  sou
006D70:  6E 64 20 20 61 6E 64 20 20 74 6F 6E 65 0D 0A 20    nd  and  tone.. 
006D80:  20 20 20 20 20 20 65 6E 76 65 6C 6F 70 65 73 20          envelopes 
006D90:  61 6E 64 20 73 65 74 74 69 6E 67 20 74 68 65 20    and setting the 
006DA0:  73 6F 75 6E 64 20 63 68 69 70 20 76 6F 6C 75 6D    sound chip volum
006DB0:  65 20 74 6F 20 7A 65 72 6F 20 66 6F 72 20 61 6C    e to zero for al
006DC0:  6C 20 20 63 68 61 6E 6E 65 6C 73 2E 0D 0A 20 20    l  channels...  
006DD0:  20 20 20 20 20 57 68 65 6E 20 74 68 65 20 73 6F         When the so
006DE0:  75 6E 64 20 69 73 20 72 65 73 74 61 72 74 65 64    und is restarted
006DF0:  20 69 74 20 77 69 6C 6C 20 63 6F 6E 74 69 6E 75     it will continu
006E00:  65 20 66 72 6F 6D 20 61 73 20 6E 65 61 72 20 77    e from as near w
006E10:  68 65 72 65 20 69 74 20 77 61 73 0D 0A 0D 0A 20    here it was.... 
006E20:  20 20 20 20 20 20 73 74 6F 70 70 65 64 20 61 73          stopped as
006E30:  20 69 73 20 70 6F 73 73 69 62 6C 65 2E 0D 0A 0D     is possible....
006E40:  0A 20 20 20 20 20 20 20 54 68 69 73 20 72 6F 75    .       This rou
006E50:  74 69 6E 65 20 65 6E 61 62 6C 65 73 20 69 6E 74    tine enables int
006E60:  65 72 72 75 70 74 73 2E 0D 0A 0D 0A 0D 0A 20 20    errupts.......  
006E70:  20 20 20 20 20 52 65 6C 61 74 65 64 20 65 6E 74         Related ent
006E80:  72 69 65 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20    ries:....       
006E90:  53 4F 55 4E 44 20 43 4F 4E 54 49 4E 55 45 0D 0A    SOUND CONTINUE..
006EA0:  20 20 20 20 20 20 20 53 4F 55 4E 44 20 52 45 53           SOUND RES
006EB0:  45 54 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ET............  
006EC0:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
006ED0:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
006EE0:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
006EF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006F00:  70 61 67 65 20 31 35 2E 31 37 34 0D 0A 0D 0A 0D    page 15.174.....
006F10:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
006F20:  31 34 37 3A 20 53 4F 55 4E 44 20 43 4F 4E 54 49    147: SOUND CONTI
006F30:  4E 55 45 20 20 20 20 20 20 20 20 20 20 20 20 20    NUE             
006F40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006F50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006F60:  20 23 42 43 42 39 0D 0A 0D 0A 0D 0A 20 20 20 20     #BCB9......    
006F70:  20 20 20 52 65 73 74 61 72 74 20 73 6F 75 6E 64       Restart sound
006F80:  73 20 61 66 74 65 72 20 74 68 65 79 20 68 61 76    s after they hav
006F90:  65 20 61 6C 6C 20 62 65 65 6E 20 68 65 6C 64 2E    e all been held.
006FA0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74    ......       Act
006FB0:  69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ion:......      
006FC0:  20 41 6C 6C 6F 77 73 20 73 6F 75 6E 64 73 20 74     Allows sounds t
006FD0:  68 61 74 20 68 61 76 65 20 62 65 65 6E 20 68 65    hat have been he
006FE0:  6C 64 20 62 79 20 63 61 6C 6C 69 6E 67 20 53 4F    ld by calling SO
006FF0:  55 4E 44 20 48 4F 4C 44 20 74 6F 20 63 6F 6E 74    UND HOLD to cont
007000:  69 6E 75 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    inue.......     
007010:  20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F      Entry conditio
007020:  6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ns:......       
007030:  4E 6F 20 63 6F 6E 64 69 74 69 6F 6E 73 2E 0D 0A    No conditions...
007040:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20    ....       Exit 
007050:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D    conditions:.....
007060:  0A 20 20 20 20 20 20 20 41 46 2C 20 42 43 2C 20    .       AF, BC, 
007070:  44 45 20 61 6E 64 20 49 58 20 63 6F 72 72 75 70    DE and IX corrup
007080:  74 2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F    t...       All o
007090:  74 68 65 72 20 72 65 67 69 73 74 65 72 73 20 70    ther registers p
0070A0:  72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20    reserved....... 
0070B0:  20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A          Notes:....
0070C0:  0D 0A 20 20 20 20 20 20 20 49 66 20 6E 6F 20 73    ..       If no s
0070D0:  6F 75 6E 64 73 20 61 72 65 20 68 65 6C 64 20 74    ounds are held t
0070E0:  68 65 6E 20 6E 6F 20 61 63 74 69 6F 6E 20 69 73    hen no action is
0070F0:  20 74 61 6B 65 6E 2E 0D 0A 0D 0A 0D 0A 20 20 20     taken.......   
007100:  20 20 20 20 54 68 69 73 20 72 6F 75 74 69 6E 65        This routine
007110:  20 6D 61 79 20 65 6E 61 62 6C 65 20 69 6E 74 65     may enable inte
007120:  72 72 75 70 74 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20    rrupts......... 
007130:  20 20 20 20 20 20 52 65 6C 61 74 65 64 20 65 6E          Related en
007140:  74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    tries:......    
007150:  20 20 20 53 4F 55 4E 44 20 48 4F 4C 44 0D 0A 20       SOUND HOLD.. 
007160:  20 20 20 20 20 20 53 4F 55 4E 44 20 52 45 4C 45          SOUND RELE
007170:  41 53 45 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ASE.............
007180:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
007190:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
0071A0:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
0071B0:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
0071C0:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
0071D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
0071E0:  65 20 31 35 2E 31 37 35 0D 0A 0D 0A 0D 0A 0D 0A    e 15.175........
0071F0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 34 38    ......       148
007200:  3A 20 53 4F 55 4E 44 20 41 4D 50 4C 20 45 4E 56    : SOUND AMPL ENV
007210:  45 4C 4F 50 45 20 20 20 20 20 20 20 20 20 20 20    ELOPE           
007220:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
007230:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 42                  #B
007240:  43 42 43 0D 0A 0D 0A 20 20 20 20 20 20 20 53 65    CBC....       Se
007250:  74 20 75 70 20 61 6E 20 61 6D 70 6C 69 74 75 64    t up an amplitud
007260:  65 20 65 6E 76 65 6C 6F 70 65 2E 0D 0A 0D 0A 20    e envelope..... 
007270:  20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D          Action:...
007280:  0A 20 20 20 20 20 20 20 53 65 74 20 75 70 20 6F    .       Set up o
007290:  6E 65 20 6F 66 20 74 68 65 20 31 35 20 75 73 65    ne of the 15 use
0072A0:  72 20 70 72 6F 67 72 61 6D 6D 61 62 6C 65 20 61    r programmable a
0072B0:  6D 70 6C 69 74 75 64 65 20 28 76 6F 6C 75 6D 65    mplitude (volume
0072C0:  29 20 65 6E 76 65 6C 6F 70 65 73 2E 0D 0A 0D 0A    ) envelopes.....
0072D0:  20 20 20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E           Entry con
0072E0:  64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20    ditions:....    
0072F0:  20 20 20 41 20 63 6F 6E 74 61 69 6E 73 20 61 6E       A contains an
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 65 6E 76 65 6C 6F 70 65 20 6E 75 6D 62 65 72     envelope number
007410:  2E 0D 0A 20 20 20 20 20 20 20 48 4C 20 63 6F 6E    ...       HL con
007420:  74 61 69 6E 73 20 74 68 65 20 61 64 64 72 65 73    tains the addres
007430:  73 20 6F 66 20 61 6E 20 61 6D 70 6C 69 74 75 64    s of an amplitud
007440:  65 20 64 61 74 61 20 62 6C 6F 63 6B 2E 0D 0A 0D    e data block....
007450:  0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F 6E    .       Exit con
007460:  64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20    ditions:....    
007470:  20 20 20 49 66 20 65 6E 76 65 6C 6F 70 65 20 68       If envelope h
007480:  61 73 20 62 65 65 6E 20 73 65 74 20 4F 4B 3A 0D    as been set OK:.
007490:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
0074A0:  20 20 20 43 61 72 72 79 20 74 72 75 65 2E 0D 0A       Carry true...
0074B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0074C0:  48 4C 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20    HL contains the 
0074D0:  61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 64    address of the d
0074E0:  61 74 61 20 62 6C 6F 63 6B 20 2B 20 31 36 2E 0D    ata block + 16..
0074F0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
007500:  20 41 20 61 6E 64 20 42 43 20 63 6F 72 72 75 70     A and BC corrup
007510:  74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20    t.....       If 
007520:  74 68 65 20 65 6E 76 65 6C 6F 70 65 20 6E 75 6D    the envelope num
007530:  62 65 72 20 69 73 20 69 6E 76 61 6C 69 64 3A 0D    ber is invalid:.
007540:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
007550:  20 20 20 43 61 72 72 79 20 66 61 6C 73 65 2E 0D       Carry false..
007560:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
007570:  20 41 2C 20 42 20 61 6E 64 20 48 4C 20 70 72 65     A, B and HL pre
007580:  73 65 72 76 65 64 2E 0D 0A 0D 0A 20 20 20 20 20    served.....     
007590:  20 20 41 6C 77 61 79 73 3A 0D 0A 0D 0A 20 20 20      Always:....   
0075A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 44 45 20                 DE 
0075B0:  61 6E 64 20 6F 74 68 65 72 20 66 6C 61 67 73 20    and other flags 
0075C0:  63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20    corrupt...      
0075D0:  20 20 20 20 20 20 20 20 20 20 41 6C 6C 20 6F 74              All ot
0075E0:  68 65 72 20 72 65 67 69 73 74 65 72 73 20 70 72    her registers pr
0075F0:  65 73 65 72 76 65 64 2E 0D 0A 0D 0A 20 20 20 20    eserved.....    
007600:  20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 20 20 20       Notes:....   
007610:  20 20 20 20 54 68 65 20 65 6E 76 65 6C 6F 70 65        The envelope
007620:  20 74 6F 20 73 65 74 20 75 70 20 69 73 20 73 70     to set up is sp
007630:  65 63 69 66 69 65 64 20 62 79 20 61 20 6E 75 6D    ecified by a num
007640:  62 65 72 20 69 6E 20 74 68 65 20 72 61 6E 67 65    ber in the range
007650:  20 31 2E 2E 31 35 2E 20 20 4E 0D 0A 20 20 20 20     1..15.  N..    
007660:  20 20 20 65 6E 76 65 6C 6F 70 65 20 69 73 20 73       envelope is s
007670:  65 74 20 75 70 20 69 66 20 61 20 6E 75 6D 62 65    et up if a numbe
007680:  72 20 6F 75 74 73 69 64 65 20 74 68 69 73 20 72    r outside this r
007690:  61 6E 67 65 20 69 73 20 70 61 73 73 65 64 2E 0D    ange is passed..
0076A0:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 61 6D    ...       The am
0076B0:  70 6C 69 74 75 64 65 20 64 61 74 61 20 62 6C 6F    plitude data blo
0076C0:  63 6B 20 69 73 20 63 6F 70 69 65 64 20 69 6E 74    ck is copied int
0076D0:  6F 20 74 68 65 20 20 61 6D 70 6C 69 74 75 64 65    o the  amplitude
0076E0:  20 20 65 6E 76 65 6C 6F 70 65 2E 20 20 54 68 65      envelope.  The
0076F0:  0D 0A 20 20 20 20 20 20 20 64 61 74 61 20 62 6C    ..       data bl
007700:  6F 63 6B 20 6D 61 79 20 6C 69 65 20 69 6E 20 52    ock may lie in R
007710:  4F 4D 20 6F 72 20 69 6E 20 52 41 4D 2E 20 49 74    OM or in RAM. It
007720:  20 6D 61 79 20 20 6E 6F 74 20 20 6C 69 65 20 20     may  not  lie  
007730:  69 6E 20 20 52 41 4D 20 20 68 69 64 64 65 6E 0D    in  RAM  hidden.
007740:  0A 20 20 20 20 20 20 20 75 6E 64 65 72 6E 65 61    .       undernea
007750:  74 68 20 61 20 52 4F 4D 2E 0D 0A 0D 0A 20 20 20    th a ROM.....   
007760:  20 20 20 20 54 68 65 20 61 6D 70 6C 69 74 75 64        The amplitud
007770:  65 20 64 61 74 61 20 62 6C 6F 63 6B 20 68 61 73    e data block has
007780:  20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 6C     the following l
007790:  61 79 6F 75 74 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    ayout:......    
0077A0:  20 20 20 20 20 20 20 20 20 20 20 20 42 79 74 65                Byte
0077B0:  20 30 3A 20 20 20 20 20 20 20 20 20 20 20 20 20     0:             
0077C0:  43 6F 75 6E 74 20 6F 66 20 73 65 63 74 69 6F 6E    Count of section
0077D0:  73 20 69 6E 20 74 68 65 20 65 6E 76 65 6C 6F 70    s in the envelop
0077E0:  65 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    e...            
0077F0:  20 20 20 20 42 79 74 65 73 20 31 2E 2E 33 3A 20        Bytes 1..3: 
007800:  20 20 20 20 20 20 20 20 46 69 72 73 74 20 73 65            First se
007810:  63 74 69 6F 6E 20 6F 66 20 74 68 65 20 65 6E 76    ction of the env
007820:  65 6C 6F 70 65 2E 0D 0A 20 20 20 20 20 20 20 20    elope...        
007830:  20 20 20 20 20 20 20 20 42 79 74 65 73 20 34 2E            Bytes 4.
007840:  2E 36 3A 20 20 20 20 20 20 20 20 20 53 65 63 6F    .6:         Seco
007850:  6E 64 20 73 65 63 74 69 6F 6E 20 6F 66 20 74 68    nd section of th
007860:  65 20 65 6E 76 65 6C 6F 70 65 2E 0D 0A 20 20 20    e envelope...   
007870:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 79 74                 Byt
007880:  65 73 20 37 2E 2E 39 3A 20 20 20 20 20 20 20 20    es 7..9:        
007890:  20 54 68 69 72 64 20 73 65 63 74 69 6F 6E 20 6F     Third section o
0078A0:  66 20 74 68 65 20 65 6E 76 65 6C 6F 70 65 2E 0D    f the envelope..
0078B0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
0078C0:  20 42 79 74 65 73 20 31 30 2E 2E 31 32 3A 20 20     Bytes 10..12:  
0078D0:  20 20 20 20 20 46 6F 75 72 74 68 20 73 65 63 74         Fourth sect
0078E0:  69 6F 6E 20 6F 66 20 74 68 65 20 65 6E 76 65 6C    ion of the envel
0078F0:  6F 70 65 2E 0D 0A 20 20 20 20 20 20 20 20 20 20    ope...          
007900:  20 20 20 20 20 20 42 79 74 65 73 20 31 33 2E 2E          Bytes 13..
007910:  31 35 3A 20 20 20 20 20 20 20 46 69 66 74 68 20    15:       Fifth 
007920:  73 65 63 74 69 6F 6E 20 6F 66 20 74 68 65 20 65    section of the e
007930:  6E 76 65 6C 6F 70 65 2E 0D 0A 0D 0A 0D 0A 20 20    nvelope.......  
007940:  20 20 20 20 20 54 68 65 20 66 69 72 73 74 20 62         The first b
007950:  79 74 65 20 6F 66 20 74 68 65 20 61 6D 70 6C 69    yte of the ampli
007960:  74 75 64 65 20 64 61 74 61 20 62 6C 6F 63 6B 20    tude data block 
007970:  20 73 70 65 63 69 66 69 65 73 20 20 74 68 65 20     specifies  the 
007980:  20 6E 75 6D 62 65 72 20 20 6F 66 0D 0A 20 20 20     number  of..   
007990:  20 20 20 20 73 65 63 74 69 6F 6E 73 20 75 73 65        sections use
0079A0:  64 20 69 6E 20 74 68 65 20 65 6E 76 65 6C 6F 70    d in the envelop
0079B0:  65 2E 20 53 65 63 74 69 6F 6E 73 20 6E 6F 74 20    e. Sections not 
0079C0:  75 73 65 64 20 6E 65 65 64 20 6E 6F 74 20 62 65    used need not be
0079D0:  20 20 73 65 74 20 20 75 70 2E 0D 0A 20 20 20 20      set  up...    
0079E0:  20 20 20 41 6E 20 65 6E 76 65 6C 6F 70 65 20 75       An envelope u
0079F0:  73 69 6E 67 20 6E 6F 20 73 65 63 74 69 6F 6E 73    sing no sections
007A00:  20 68 61 73 20 61 20 73 70 65 63 69 61 6C 20 6D     has a special m
007A10:  65 61 6E 69 6E 67 20 2D 20 68 6F 6C 64 20 61 20    eaning - hold a 
007A20:  20 63 6F 6E 73 74 61 6E 74 0D 0A 20 20 20 20 20     constant..     
007A30:  20 20 76 6F 6C 75 6D 65 20 6C 61 73 74 69 6E 67      volume lasting
007A40:  20 66 6F 72 20 32 20 73 65 63 6F 6E 64 73 2E 0D     for 2 seconds..
007A50:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
007A60:  41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36    AMSTRAD CPC464/6
007A70:  36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45    64/6128 FIRMWARE
007A80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
007A90:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
007AA0:  31 35 2E 31 37 36 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    15.176..........
007AB0:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 6E    ....       The n
007AC0:  75 6D 62 65 72 20 6F 66 20 73 65 63 74 69 6F 6E    umber of section
007AD0:  73 20 74 6F 20 75 73 65 20 69 73 20 6E 6F 74 20    s to use is not 
007AE0:  63 68 65 63 6B 65 64 2C 20 69 66 20 61 20 6E 75    checked, if a nu
007AF0:  6D 62 65 72 20 6F 75 74 73 69 64 65 20 20 74 68    mber outside  th
007B00:  65 0D 0A 20 20 20 20 20 20 20 72 61 6E 67 65 20    e..       range 
007B10:  30 2E 2E 35 20 69 73 20 73 75 70 70 6C 69 65 64    0..5 is supplied
007B20:  20 74 68 65 6E 20 74 68 69 73 20 77 69 6C 6C 20     then this will 
007B30:  68 61 76 65 20 75 6E 70 72 65 64 69 63 74 61 62    have unpredictab
007B40:  6C 65 20 65 66 66 65 63 74 73 2E 20 54 68 69 73    le effects. This
007B50:  0D 0A 20 20 20 20 20 20 20 73 68 6F 75 6C 64 20    ..       should 
007B60:  62 65 20 61 76 6F 69 64 65 64 2E 0D 0A 0D 0A 20    be avoided..... 
007B70:  20 20 20 20 20 20 45 61 63 68 20 73 65 63 74 69          Each secti
007B80:  6F 6E 20 6F 66 20 74 68 65 20 61 6D 70 6C 69 74    on of the amplit
007B90:  75 64 65 20 64 61 74 61 20 62 6C 6F 63 6B 20 63    ude data block c
007BA0:  61 6E 20 73 70 65 63 69 66 79 20 65 69 74 68 65    an specify eithe
007BB0:  72 20 61 20 68 61 72 64 77 61 72 65 0D 0A 20 20    r a hardware..  
007BC0:  20 20 20 20 20 6F 72 20 61 20 73 6F 66 74 77 61         or a softwa
007BD0:  72 65 20 65 6E 76 65 6C 6F 70 65 2E 20 54 68 69    re envelope. Thi
007BE0:  73 20 69 73 20 69 6E 64 69 63 61 74 65 64 20 62    s is indicated b
007BF0:  79 20 74 68 65 20 20 66 69 72 73 74 20 20 62 79    y the  first  by
007C00:  74 65 20 20 6F 66 20 20 74 68 65 0D 0A 20 20 20    te  of  the..   
007C10:  20 20 20 20 73 65 63 74 69 6F 6E 2E 0D 0A 0D 0A        section.....
007C20:  20 20 20 20 20 20 20 41 20 73 6F 66 74 77 61 72           A softwar
007C30:  65 20 65 6E 76 65 6C 6F 70 65 20 73 65 63 74 69    e envelope secti
007C40:  6F 6E 20 69 73 20 6C 61 69 64 20 6F 75 74 20 61    on is laid out a
007C50:  73 20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 20 20    s follows:....  
007C60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 79                  By
007C70:  74 65 20 30 3A 20 20 20 53 74 65 70 20 63 6F 75    te 0:   Step cou
007C80:  6E 74 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20    nt...           
007C90:  20 20 20 20 20 42 79 74 65 20 31 3A 20 20 20 53         Byte 1:   S
007CA0:  74 65 70 20 73 69 7A 65 2E 0D 0A 20 20 20 20 20    tep size...     
007CB0:  20 20 20 20 20 20 20 20 20 20 20 42 79 74 65 20               Byte 
007CC0:  32 3A 20 20 20 50 61 75 73 65 20 74 69 6D 65 2E    2:   Pause time.
007CD0:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 66    ....       The f
007CE0:  61 63 74 20 74 68 61 74 20 74 68 69 73 20 69 73    act that this is
007CF0:  20 20 61 20 20 73 6F 66 74 77 61 72 65 20 20 65      a  software  e
007D00:  6E 76 65 6C 6F 70 65 20 20 73 65 63 74 69 6F 6E    nvelope  section
007D10:  20 20 72 61 74 68 65 72 20 20 74 68 61 6E 20 20      rather  than  
007D20:  61 0D 0A 20 20 20 20 20 20 20 68 61 72 64 77 61    a..       hardwa
007D30:  72 65 20 65 6E 76 65 6C 6F 70 65 20 73 65 63 74    re envelope sect
007D40:  69 6F 6E 20 69 73 20 69 6E 64 69 63 61 74 65 64    ion is indicated
007D50:  20 62 79 20 62 79 74 65 20 30 20 6E 6F 74 20 68     by byte 0 not h
007D60:  61 76 69 6E 67 20 62 69 74 20 37 20 73 65 74 2E    aving bit 7 set.
007D70:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74 68    ....       If th
007D80:  65 20 73 74 65 70 20 63 6F 75 6E 74 20 69 73 20    e step count is 
007D90:  69 6E 20 74 68 65 20 72 61 6E 67 65 20 31 2E 2E    in the range 1..
007DA0:  32 37 20 74 68 65 6E 20 74 68 65 20 73 74 65 70    27 then the step
007DB0:  20 73 69 7A 65 20 69 73 20 61 64 64 65 64 20 74     size is added t
007DC0:  6F 0D 0A 20 20 20 20 20 20 20 74 68 65 20 76 6F    o..       the vo
007DD0:  6C 75 6D 65 20 74 68 61 74 20 6E 75 6D 62 65 72    lume that number
007DE0:  20 6F 66 20 74 69 6D 65 73 20 77 69 74 68 20 61     of times with a
007DF0:  20 77 61 69 74 20 65 71 75 61 6C 20 74 6F 20 74     wait equal to t
007E00:  68 65 20 70 61 75 73 65 20 74 69 6D 65 20 69 6E    he pause time in
007E10:  0D 0A 20 20 20 20 20 20 20 31 2F 31 30 30 73 20    ..       1/100s 
007E20:  6F 66 20 61 20 73 65 63 6F 6E 64 20 61 66 74 65    of a second afte
007E30:  72 20 65 61 63 68 20 61 64 64 69 74 69 6F 6E 2E    r each addition.
007E40:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74 68    ....       If th
007E50:  65 20 73 74 65 70 20 63 6F 75 6E 74 20 69 73 20    e step count is 
007E60:  7A 65 72 6F 20 74 68 65 20 73 74 65 70 20 73 69    zero the step si
007E70:  7A 65 20 69 73 20 74 61 6B 65 6E 20 20 74 6F 20    ze is taken  to 
007E80:  20 62 65 20 20 61 6E 20 20 61 62 73 6F 6C 75 74     be  an  absolut
007E90:  65 0D 0A 20 20 20 20 20 20 20 76 6F 6C 75 6D 65    e..       volume
007EA0:  20 73 65 74 74 69 6E 67 2E 20 41 20 73 69 6E 67     setting. A sing
007EB0:  6C 65 20 77 61 69 74 20 6F 66 20 74 68 65 20 70    le wait of the p
007EC0:  61 75 73 65 20 74 69 6D 65 20 69 6E 20 31 2F 31    ause time in 1/1
007ED0:  30 30 73 20 6F 66 20 61 20 20 73 65 63 6F 6E 64    00s of a  second
007EE0:  0D 0A 20 20 20 20 20 20 20 69 73 20 6D 61 64 65    ..       is made
007EF0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 66    .......       Af
007F00:  74 65 72 20 63 61 6C 63 75 6C 61 74 69 6E 67 20    ter calculating 
007F10:  74 68 65 20 6E 65 77 20 76 6F 6C 75 6D 65 20 74    the new volume t
007F20:  68 69 73 20 69 73 20 6D 61 72 6B 65 64 20 77 69    his is marked wi
007F30:  74 68 20 23 30 46 20 74 6F 20 6D 61 6B 65 20 20    th #0F to make  
007F40:  73 75 72 65 0D 0A 20 20 20 20 20 20 20 69 74 20    sure..       it 
007F50:  69 73 20 6C 65 67 61 6C 2E 20 54 68 75 73 2C 20    is legal. Thus, 
007F60:  61 6C 6C 20 61 72 69 74 68 6D 65 74 69 63 20 6F    all arithmetic o
007F70:  6E 20 74 68 65 20 76 6F 6C 75 6D 65 20 69 73 20    n the volume is 
007F80:  63 61 72 72 69 65 64 20 6F 75 74 20 20 6D 6F 64    carried out  mod
007F90:  75 6C 6F 0D 0A 20 20 20 20 20 20 20 31 36 2E 0D    ulo..       16..
007FA0:  0A 0D 0A 20 20 20 20 20 20 20 41 20 70 61 75 73    ...       A paus
007FB0:  65 20 74 69 6D 65 20 6F 66 20 30 20 69 73 20 74    e time of 0 is t
007FC0:  61 6B 65 6E 20 74 6F 20 6D 65 61 6E 20 32 35 36    aken to mean 256
007FD0:  20 31 2F 31 30 30 73 20 6F 66 20 61 20 73 65 63     1/100s of a sec
007FE0:  6F 6E 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ond.....       A
007FF0:  20 68 61 72 64 77 61 72 65 20 65 6E 76 65 6C 6F     hardware envelo
008000:  70 65 20 73 65 63 74 69 6F 6E 20 69 73 20 6C 61    pe section is la
008010:  69 64 20 6F 75 74 20 61 73 20 66 6F 6C 6C 6F 77    id out as follow
008020:  73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    s:....          
008030:  20 20 20 20 20 20 42 79 74 65 20 30 3A 20 20 20          Byte 0:   
008040:  20 20 20 20 45 6E 76 65 6C 6F 70 65 20 73 68 61        Envelope sha
008050:  70 65 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20    pe...           
008060:  20 20 20 20 20 42 79 74 65 20 31 2E 2E 32 3A 20         Byte 1..2: 
008070:  20 20 20 45 6E 76 65 6C 6F 70 65 20 70 65 72 69       Envelope peri
008080:  6F 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    od.....       Th
008090:  65 20 66 61 63 74 20 74 68 61 74 20 74 68 69 73    e fact that this
0080A0:  20 69 73 20 20 61 20 20 68 61 72 64 77 61 72 65     is  a  hardware
0080B0:  20 20 65 6E 76 65 6C 6F 70 65 20 20 73 65 63 74      envelope  sect
0080C0:  69 6F 6E 20 20 72 61 74 68 65 72 20 20 74 68 61    ion  rather  tha
0080D0:  6E 20 20 61 0D 0A 20 20 20 20 20 20 20 73 6F 66    n  a..       sof
0080E0:  74 77 61 72 65 20 65 6E 76 65 6C 6F 70 65 20 73    tware envelope s
0080F0:  65 63 74 69 6F 6E 20 69 73 20 69 6E 64 69 63 61    ection is indica
008100:  74 65 64 20 62 79 20 62 79 74 65 20 30 20 68 61    ted by byte 0 ha
008110:  76 69 6E 67 20 62 69 74 20 37 20 73 65 74 2E 0D    ving bit 7 set..
008120:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 65 6E    ...       The en
008130:  76 65 6C 6F 70 65 20 73 68 61 70 65 20 28 6D 61    velope shape (ma
008140:  73 6B 65 64 20 77 69 74 68 20 23 37 46 29 20 69    sked with #7F) i
008150:  73 20 73 65 6E 74 20 74 6F 20 20 72 65 67 69 73    s sent to  regis
008160:  74 65 72 20 20 31 33 20 20 6F 66 20 20 74 68 65    ter  13  of  the
008170:  0D 0A 20 20 20 20 20 20 20 73 6F 75 6E 64 20 67    ..       sound g
008180:  65 6E 65 72 61 74 6F 72 2E 20 54 68 69 73 20 73    enerator. This s
008190:  65 74 20 74 68 65 20 20 73 68 61 70 65 20 20 6F    et the  shape  o
0081A0:  66 20 20 74 68 65 20 20 68 61 72 64 77 61 72 65    f  the  hardware
0081B0:  20 20 65 6E 76 65 6C 6F 70 65 20 20 61 6E 64 0D      envelope  and.
0081C0:  0A 20 20 20 20 20 20 20 77 68 65 74 68 65 72 20    .       whether 
0081D0:  69 74 20 72 65 70 65 61 74 73 20 28 73 65 65 20    it repeats (see 
0081E0:  41 70 70 65 6E 64 69 78 20 49 58 20 66 6F 72 20    Appendix IX for 
0081F0:  64 65 74 61 69 6C 73 29 2E 0D 0A 0D 0A 20 20 20    details).....   
008200:  20 20 20 20 54 68 65 20 65 6E 76 65 6C 6F 70 65        The envelope
008210:  20 70 65 72 69 6F 64 20 69 73 20 73 65 6E 74 20     period is sent 
008220:  74 6F 20 20 72 65 67 69 73 74 65 72 73 20 20 31    to  registers  1
008230:  31 20 20 61 6E 64 20 20 31 32 20 20 6F 66 20 20    1  and  12  of  
008240:  74 68 65 20 20 73 6F 75 6E 64 0D 0A 20 20 20 20    the  sound..    
008250:  20 20 20 67 65 6E 65 72 61 74 6F 72 2E 20 54 68       generator. Th
008260:  65 73 65 20 73 65 74 20 74 68 65 20 6C 65 6E 67    ese set the leng
008270:  74 68 20 6F 66 20 74 68 65 20 68 61 72 64 77 61    th of the hardwa
008280:  72 65 20 65 6E 76 65 6C 6F 70 65 20 28 73 65 65    re envelope (see
008290:  20 41 70 70 65 6E 64 69 78 0D 0A 20 20 20 20 20     Appendix..     
0082A0:  20 20 49 58 20 66 6F 72 20 64 65 74 61 69 6C 73      IX for details
0082B0:  29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    ).....       The
0082C0:  20 73 65 63 74 69 6F 6E 20 61 66 74 65 72 20 61     section after a
0082D0:  20 68 61 72 64 77 61 72 65 20 73 65 63 74 69 6F     hardware sectio
0082E0:  6E 20 73 68 6F 75 6C 64 20 62 65 20 61 20 70 61    n should be a pa
0082F0:  75 73 65 20 6C 6F 6E 67 20 65 6E 6F 75 67 68 20    use long enough 
008300:  20 74 6F 0D 0A 20 20 20 20 20 20 20 61 6C 6C 6F     to..       allo
008310:  77 20 74 68 65 20 68 61 72 64 77 61 72 65 20 65    w the hardware e
008320:  6E 76 65 6C 6F 70 65 20 74 6F 20 6F 70 65 72 61    nvelope to opera
008330:  74 65 2E 20 41 20 20 70 61 75 73 65 20 20 63 61    te. A  pause  ca
008340:  6E 20 20 62 65 20 20 63 6F 6E 73 74 72 75 63 74    n  be  construct
008350:  65 64 0D 0A 20 20 20 20 20 20 20 75 73 69 6E 67    ed..       using
008360:  20 61 20 73 6F 66 74 77 61 72 65 20 65 6E 76 65     a software enve
008370:  6C 6F 70 65 20 77 69 74 68 20 61 20 73 74 65 70    lope with a step
008380:  20 73 69 7A 65 20 6F 66 20 30 20 61 6E 64 20 20     size of 0 and  
008390:  77 69 74 68 20 20 74 68 65 20 20 72 65 70 65 61    with  the  repea
0083A0:  74 0D 0A 20 20 20 20 20 20 20 63 6F 75 6E 74 20    t..       count 
0083B0:  61 6E 64 20 70 61 75 73 65 20 74 69 6D 65 20 6A    and pause time j
0083C0:  75 67 67 6C 69 6E 67 20 74 6F 20 67 69 76 65 20    uggling to give 
0083D0:  74 68 65 20 72 69 67 68 74 20 74 6F 74 61 6C 20    the right total 
0083E0:  74 69 6D 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    time.....       
0083F0:  54 68 65 72 65 20 69 73 20 6E 6F 20 70 72 6F 74    There is no prot
008400:  65 63 74 69 6F 6E 20 61 67 61 69 6E 73 74 20 63    ection against c
008410:  68 61 6E 67 69 6E 67 20 61 6E 20 65 6E 76 65 6C    hanging an envel
008420:  6F 70 65 20 77 68 69 6C 73 74 20 20 69 74 20 20    ope whilst  it  
008430:  69 73 20 20 69 6E 0D 0A 20 20 20 20 20 20 20 75    is  in..       u
008440:  73 65 2E 20 54 68 69 73 20 63 6F 75 6C 64 20 68    se. This could h
008450:  61 76 65 20 75 6E 70 72 65 64 69 63 74 61 62 6C    ave unpredictabl
008460:  65 20 65 66 66 65 63 74 73 20 61 6E 64 20 73 68    e effects and sh
008470:  6F 75 6C 64 20 62 65 20 61 76 6F 69 64 65 64 2E    ould be avoided.
008480:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
008490:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
0084A0:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
0084B0:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
0084C0:  20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65                page
0084D0:  20 31 35 2E 31 37 37 0D 0A 0D 0A 0D 0A 0D 0A 0D     15.177.........
0084E0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
0084F0:  6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20 73 6F    length of the so
008500:  75 6E 64 20 63 61 6E 20 20 65 69 74 68 65 72 20    und can  either 
008510:  20 62 65 20 20 64 65 74 65 72 6D 69 6E 65 64 20     be  determined 
008520:  20 62 79 20 20 74 68 65 20 20 64 75 72 61 74 69     by  the  durati
008530:  6F 6E 0D 0A 20 20 20 20 20 20 20 73 75 70 70 6C    on..       suppl
008540:  69 65 64 20 77 68 65 6E 20 74 68 65 20 73 6F 75    ied when the sou
008550:  6E 64 20 69 73 20 71 75 65 75 65 64 20 6F 72 20    nd is queued or 
008560:  62 79 20 74 68 65 20 65 6E 76 65 6C 6F 70 65 20    by the envelope 
008570:  74 65 72 6D 69 6E 61 74 69 6E 67 20 20 28 73 65    terminating  (se
008580:  65 0D 0A 20 20 20 20 20 20 20 53 4F 55 4E 44 20    e..       SOUND 
008590:  51 55 45 55 45 29 2E 20 49 66 20 61 20 64 75 72    QUEUE). If a dur
0085A0:  61 74 69 6F 6E 20 69 73 20 73 65 74 20 74 68 61    ation is set tha
0085B0:  74 20 69 73 20 73 68 6F 72 74 65 72 20 74 68 61    t is shorter tha
0085C0:  6E 20 20 74 68 65 20 20 65 6E 76 65 6C 6F 70 65    n  the  envelope
0085D0:  0D 0A 20 20 20 20 20 20 20 74 68 65 6E 20 74 68    ..       then th
0085E0:  65 20 65 6E 76 65 6C 6F 70 65 20 69 73 20 74 72    e envelope is tr
0085F0:  75 6E 63 61 74 65 64 2E 20 49 66 20 74 68 65 20    uncated. If the 
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:  64 75 72 61 74 69 6F 6E 20 20 69 73 20 20 6C 6F    duration  is  lo
008710:  6E 67 65 72 20 20 74 68 61 6E 20 20 74 68 65 0D    nger  than  the.
008720:  0A 20 20 20 20 20 20 20 65 6E 76 65 6C 6F 70 65    .       envelope
008730:  20 74 68 65 6E 20 20 74 68 65 20 20 66 69 6E 61     then  the  fina
008740:  6C 20 20 76 6F 6C 75 6D 65 20 20 69 73 20 20 73    l  volume  is  s
008750:  75 73 74 61 69 6E 65 64 20 20 75 6E 74 69 6C 20    ustained  until 
008760:  20 74 68 65 20 20 64 75 72 61 74 69 6F 6E 0D 0A     the  duration..
008770:  20 20 20 20 20 20 20 65 78 70 69 72 65 73 2E 0D           expires..
008780:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
008790:  52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A    Related entries:
0087A0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 53 4F 55    ......       SOU
0087B0:  4E 44 20 41 20 41 44 44 52 45 53 53 0D 0A 20 20    ND A ADDRESS..  
0087C0:  20 20 20 20 20 53 4F 55 4E 44 20 54 4F 4E 45 20         SOUND TONE 
0087D0:  45 4E 56 45 4C 4F 50 45 0D 0A 0D 0A 0D 0A 0D 0A    ENVELOPE........
0087E0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
0087F0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
008800:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
008810:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
008820:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
008830:  0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44    ..       AMSTRAD
008840:  20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38     CPC464/664/6128
008850:  20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20     FIRMWARE       
008860:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
008870:  20 20 20 20 70 61 67 65 20 31 35 2E 31 37 38 0D        page 15.178.
008880:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
008890:  20 20 20 20 31 34 39 3A 20 53 4F 55 4E 44 20 54        149: SOUND T
0088A0:  4F 4E 45 20 45 4E 56 45 4C 4F 50 45 20 20 20 20    ONE ENVELOPE    
0088B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0088C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0088D0:  20 20 20 20 20 23 42 43 42 46 0D 0A 0D 0A 20 20         #BCBF....  
0088E0:  20 20 20 20 20 53 65 74 20 75 70 20 61 20 74 6F         Set up a to
0088F0:  6E 65 20 65 6E 76 65 6C 6F 70 65 2E 0D 0A 0D 0A    ne envelope.....
008900:  20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A           Action:..
008910:  0D 0A 20 20 20 20 20 20 20 53 65 74 20 75 70 20    ..       Set up 
008920:  6F 6E 65 20 6F 66 20 74 68 65 20 31 35 20 75 73    one of the 15 us
008930:  65 72 20 70 72 6F 67 72 61 6D 6D 61 62 6C 65 20    er programmable 
008940:  74 6F 6E 65 20 65 6E 76 65 6C 6F 70 65 73 2E 0D    tone envelopes..
008950:  0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20    ...       Entry 
008960:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20    conditions:.... 
008970:  20 20 20 20 20 20 41 20 63 6F 6E 74 61 69 6E 73          A contains
008980:  20 61 6E 20 65 6E 76 65 6C 6F 70 65 20 6E 75 6D     an envelope num
008990:  62 65 72 2E 0D 0A 20 20 20 20 20 20 20 48 4C 20    ber...       HL 
0089A0:  63 6F 6E 74 61 69 6E 73 20 74 68 65 20 61 64 64    contains the add
0089B0:  72 65 73 73 20 6F 66 20 61 20 74 6F 6E 65 20 64    ress of a tone d
0089C0:  61 74 61 20 62 6C 6F 63 6B 2E 0D 0A 0D 0A 0D 0A    ata block.......
0089D0:  0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F    ..       Exit co
0089E0:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20    nditions:....   
0089F0:  20 20 20 20 49 66 20 74 68 65 20 65 6E 76 65 6C        If the envel
008A00:  6F 70 65 20 68 61 73 20 62 65 65 6E 20 73 65 74    ope has been set
008A10:  20 75 70 20 4F 4B 3A 0D 0A 0D 0A 20 20 20 20 20     up OK:....     
008A20:  20 20 20 20 20 20 20 20 20 20 20 43 61 72 72 79               Carry
008A30:  20 74 72 75 65 2E 0D 0A 20 20 20 20 20 20 20 20     true...        
008A40:  20 20 20 20 20 20 20 20 48 4C 20 63 6F 6E 74 61            HL conta
008A50:  69 6E 73 20 74 68 65 20 61 64 64 72 65 73 73 20    ins the address 
008A60:  6F 66 20 74 68 65 20 64 61 74 61 20 62 6C 6F 63    of the data bloc
008A70:  6B 20 2B 20 31 36 2E 0D 0A 20 20 20 20 20 20 20    k + 16...       
008A80:  20 20 20 20 20 20 20 20 20 41 20 61 6E 64 20 42             A and B
008A90:  43 20 63 6F 72 72 75 70 74 2E 0D 0A 0D 0A 20 20    C corrupt.....  
008AA0:  20 20 20 20 20 49 66 20 74 68 65 20 65 6E 76 65         If the enve
008AB0:  6C 6F 70 65 20 6E 75 6D 62 65 72 20 69 73 20 69    lope number is i
008AC0:  6E 76 61 6C 69 64 3A 0D 0A 0D 0A 20 20 20 20 20    nvalid:....     
008AD0:  20 20 20 20 20 20 20 20 20 20 20 43 61 72 72 79               Carry
008AE0:  20 66 61 6C 73 65 2E 0D 0A 20 20 20 20 20 20 20     false...       
008AF0:  20 20 20 20 20 20 20 20 20 41 2C 20 42 43 20 61             A, BC a
008B00:  6E 64 20 48 4C 20 70 72 65 73 65 72 76 65 64 2E    nd HL preserved.
008B10:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 6C 77 61 79    ....       Alway
008B20:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20    s:......        
008B30:  20 20 20 20 20 20 20 20 44 45 20 61 6E 64 20 6F            DE and o
008B40:  74 68 65 72 20 66 6C 61 67 73 20 63 6F 72 72 75    ther flags corru
008B50:  70 74 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20    pt...           
008B60:  20 20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72         All other r
008B70:  65 67 69 73 74 65 72 73 20 70 72 65 73 65 72 76    egisters preserv
008B80:  65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ed.......       
008B90:  4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    Notes:......    
008BA0:  20 20 20 54 68 65 20 65 6E 76 65 6C 6F 70 65 20       The envelope 
008BB0:  74 6F 20 73 65 74 20 75 70 20 69 73 20 73 70 65    to set up is spe
008BC0:  63 69 66 69 65 64 20 62 79 20 61 20 6E 75 6D 62    cified by a numb
008BD0:  65 72 20 69 6E 20 74 68 65 20 72 61 6E 67 65 20    er in the range 
008BE0:  31 2E 2E 31 35 2E 20 4E 6F 0D 0A 20 20 20 20 20    1..15. No..     
008BF0:  20 20 65 6E 76 65 6C 6F 70 65 20 69 73 20 73 65      envelope is se
008C00:  74 20 75 70 20 69 66 20 61 20 6E 75 6D 62 65 72    t up if a number
008C10:  20 6F 75 74 73 69 64 65 20 74 68 69 73 20 72 61     outside this ra
008C20:  6E 67 65 20 69 73 20 70 61 73 73 65 64 2E 0D 0A    nge is passed...
008C30:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 74    ....       The t
008C40:  6F 6E 65 20 64 61 74 61 20 62 6C 6F 63 6B 20 69    one data block i
008C50:  73 20 63 6F 70 69 65 64 20 69 6E 74 6F 20 74 68    s copied into th
008C60:  65 20 74 6F 6E 65 20 65 6E 76 65 6C 6F 70 65 2E    e tone envelope.
008C70:  20 54 68 65 20 20 64 61 74 61 20 20 62 6C 6F 63     The  data  bloc
008C80:  6B 0D 0A 20 20 20 20 20 20 20 6D 61 79 20 6C 69    k..       may li
008C90:  65 20 69 6E 20 52 4F 4D 20 6F 72 20 69 6E 20 52    e in ROM or in R
008CA0:  41 4D 2E 20 49 74 20 6D 61 79 20 6E 6F 74 20 6C    AM. It may not l
008CB0:  69 65 20 69 6E 20 52 41 4D 20 75 6E 64 65 72 6E    ie in RAM undern
008CC0:  65 61 74 68 20 61 20 52 4F 4D 2E 0D 0A 0D 0A 0D    eath a ROM......
008CD0:  0A 20 20 20 20 20 20 20 54 68 65 20 74 6F 6E 65    .       The tone
008CE0:  20 64 61 74 61 20 62 6C 6F 63 6B 20 68 61 73 20     data block has 
008CF0:  74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 6C 61    the following la
008D00:  79 6F 75 74 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    yout:......     
008D10:  20 20 20 20 20 20 20 20 20 20 20 42 79 74 65 20               Byte 
008D20:  30 3A 20 20 20 20 20 20 20 20 20 20 20 20 20 43    0:             C
008D30:  6F 75 6E 74 20 6F 66 20 73 65 63 74 69 6F 6E 73    ount of sections
008D40:  20 69 6E 20 74 68 65 20 65 6E 76 65 6C 6F 70 65     in the envelope
008D50:  2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
008D60:  20 20 20 42 79 74 65 73 20 31 2E 2E 33 3A 20 20       Bytes 1..3:  
008D70:  20 20 20 20 20 20 20 46 69 72 73 74 20 73 65 63           First sec
008D80:  74 69 6F 6E 20 6F 66 20 74 68 65 20 65 6E 76 65    tion of the enve
008D90:  6C 6F 70 65 2E 0D 0A 20 20 20 20 20 20 20 20 20    lope...         
008DA0:  20 20 20 20 20 20 20 42 79 74 65 73 20 34 2E 2E           Bytes 4..
008DB0:  36 3A 20 20 20 20 20 20 20 20 20 53 65 63 6F 6E    6:         Secon
008DC0:  64 20 73 65 63 74 69 6F 6E 20 6F 66 20 74 68 65    d section of the
008DD0:  20 65 6E 76 65 6C 6F 70 65 2E 0D 0A 20 20 20 20     envelope...    
008DE0:  20 20 20 20 20 20 20 20 20 20 20 20 42 79 74 65                Byte
008DF0:  73 20 37 2E 2E 39 3A 20 20 20 20 20 20 20 20 20    s 7..9:         
008E00:  54 68 69 72 64 20 73 65 63 74 69 6F 6E 20 6F 66    Third section of
008E10:  20 74 68 65 20 65 6E 76 65 6C 6F 70 65 2E 0D 0A     the envelope...
008E20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
008E30:  42 79 74 65 73 20 31 30 2E 2E 31 32 3A 20 20 20    Bytes 10..12:   
008E40:  20 20 20 20 46 6F 75 72 74 68 20 73 65 63 74 69        Fourth secti
008E50:  6F 6E 20 6F 66 20 74 68 65 20 65 6E 76 65 6C 6F    on of the envelo
008E60:  70 65 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20    pe...           
008E70:  20 20 20 20 20 42 79 74 65 73 20 31 33 2E 2E 31         Bytes 13..1
008E80:  35 3A 20 20 20 20 20 20 20 46 69 66 74 68 20 73    5:       Fifth s
008E90:  65 63 74 69 6F 6E 20 6F 66 20 74 68 65 20 65 6E    ection of the en
008EA0:  76 65 6C 6F 70 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D    velope..........
008EB0:  0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20    .       AMSTRAD 
008EC0:  43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20    CPC464/664/6128 
008ED0:  46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20    FIRMWARE        
008EE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
008EF0:  20 20 20 70 61 67 65 20 31 35 2E 31 37 39 0D 0A       page 15.179..
008F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
008FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
009000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
009010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
009020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
009030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
009040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
009050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
009060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
009070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
009080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
009090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0090A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0090B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0090C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0090D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0090E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0090F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
009100:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
009110:  20 20 20 54 68 65 20 66 69 72 73 74 20 62 79 74       The first byt
009120:  65 20 6F 66 20 74 68 65 20 74 6F 6E 65 20 64 61    e of the tone da
009130:  74 61 20 62 6C 6F 63 6B 20 28 6D 61 73 6B 65 64    ta block (masked
009140:  20 77 69 74 68 20 23 37 46 29 20 73 70 65 63 69     with #7F) speci
009150:  66 69 65 73 20 20 74 68 65 0D 0A 20 20 20 20 20    fies  the..     
009160:  20 20 6E 75 6D 62 65 72 20 6F 66 20 73 65 63 74      number of sect
009170:  69 6F 6E 73 20 75 73 65 64 20 69 6E 20 74 68 65    ions used in the
009180:  20 65 6E 76 65 6C 6F 70 65 2E 20 53 65 63 74 69     envelope. Secti
009190:  6F 6E 73 20 6E 6F 74 20 75 73 65 64 20 6E 65 65    ons not used nee
0091A0:  64 20 6E 6F 74 20 62 65 0D 0A 20 20 20 20 20 20    d not be..      
0091B0:  20 73 65 74 20 75 70 2E 20 41 6E 20 65 6E 76 65     set up. An enve
0091C0:  6C 6F 70 65 20 75 73 69 6E 67 20 6E 6F 20 73 65    lope using no se
0091D0:  63 74 69 6F 6E 73 20 77 69 6C 6C 20 6E 6F 74 20    ctions will not 
0091E0:  61 6C 74 65 72 20 74 68 65 20 74 6F 6E 65 20 28    alter the tone (
0091F0:  69 2E 65 2E 20 6E 6F 0D 0A 20 20 20 20 20 20 20    i.e. no..       
009200:  65 6E 76 65 6C 6F 70 69 6E 67 29 2E 20 54 68 65    enveloping). The
009210:  20 6E 75 6D 62 65 72 20 6F 66 20 73 65 63 74 69     number of secti
009220:  6F 6E 73 20 74 6F 20 75 73 65 20 69 73 20 6E 6F    ons to use is no
009230:  74 20 63 68 65 63 6B 65 64 2C 20 69 66 20 61 20    t checked, if a 
009240:  6E 75 6D 62 65 72 0D 0A 20 20 20 20 20 20 20 6F    number..       o
009250:  75 74 73 69 64 65 20 74 68 65 20 72 61 6E 67 65    utside the range
009260:  20 30 2E 2E 35 20 69 73 20 73 75 70 70 6C 69 65     0..5 is supplie
009270:  64 20 74 68 65 6E 20 74 68 69 73 20 77 69 6C 6C    d then this will
009280:  20 20 68 61 76 65 20 20 75 6E 70 72 65 64 69 63      have  unpredic
009290:  74 61 62 6C 65 0D 0A 20 20 20 20 20 20 20 65 66    table..       ef
0092A0:  66 65 63 74 73 2E 20 54 68 69 73 20 73 68 6F 75    fects. This shou
0092B0:  6C 64 20 62 65 20 61 76 6F 69 64 65 64 2E 0D 0A    ld be avoided...
0092C0:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 74 6F 70    ..       The top
0092D0:  20 62 69 74 2C 20 62 69 74 20 37 2C 20 6F 66 20     bit, bit 7, of 
0092E0:  74 68 65 20 63 6F 75 6E 74 20 20 69 73 20 20 75    the count  is  u
0092F0:  73 65 64 20 20 74 6F 20 20 69 6E 64 69 63 61 74    sed  to  indicat
009300:  65 20 20 61 20 20 72 65 70 65 61 74 69 6E 67 0D    e  a  repeating.
009310:  0A 20 20 20 20 20 20 20 65 6E 76 65 6C 6F 70 65    .       envelope
009320:  2E 20 49 66 20 74 68 69 73 20 62 69 74 20 69 73    . If this bit is
009330:  20 20 73 65 74 20 20 74 68 65 6E 20 20 77 68 65      set  then  whe
009340:  6E 20 20 74 68 65 20 20 6C 61 73 74 20 20 73 65    n  the  last  se
009350:  63 74 69 6F 6E 20 20 6F 66 20 20 74 68 65 0D 0A    ction  of  the..
009360:  20 20 20 20 20 20 20 65 6E 76 65 6C 6F 70 65 20           envelope 
009370:  66 69 6E 69 73 68 65 73 20 74 68 65 20 66 69 72    finishes the fir
009380:  73 74 20 77 69 6C 6C 20 62 65 20 75 73 65 64 20    st will be used 
009390:  61 67 61 69 6E 2E 0D 0A 0D 0A 20 20 20 20 20 20    again.....      
0093A0:  20 45 61 63 68 20 73 65 63 74 69 6F 6E 20 6F 66     Each section of
0093B0:  20 74 68 65 20 74 6F 6E 65 20 64 61 74 61 20 62     the tone data b
0093C0:  6C 6F 63 6B 20 69 73 20 6C 61 69 64 20 6F 75 74    lock is laid out
0093D0:  20 61 73 20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A     as follows:....
0093E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0093F0:  42 79 74 65 20 30 3A 20 20 20 53 74 65 70 20 63    Byte 0:   Step c
009400:  6F 75 6E 74 2E 0D 0A 20 20 20 20 20 20 20 20 20    ount...         
009410:  20 20 20 20 20 20 20 42 79 74 65 20 31 3A 20 20           Byte 1:  
009420:  20 53 74 65 70 20 73 69 7A 65 2E 0D 0A 20 20 20     Step size...   
009430:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 79 74                 Byt
009440:  65 20 32 3A 20 20 20 50 61 75 73 65 20 74 69 6D    e 2:   Pause tim
009450:  65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20    e.....       If 
009460:  74 68 65 20 73 74 65 70 20 63 6F 75 6E 74 20 6C    the step count l
009470:  69 65 73 20 69 6E 20 74 68 65 20 72 61 6E 67 65    ies in the range
009480:  20 23 30 30 2E 2E 23 45 46 20 74 68 65 6E 20 20     #00..#EF then  
009490:  74 68 65 20 20 73 65 63 74 69 6F 6E 20 20 69 73    the  section  is
0094A0:  20 20 61 0D 0A 20 20 20 20 20 20 20 72 65 6C 61      a..       rela
0094B0:  74 69 76 65 20 73 65 63 74 69 6F 6E 2E 20 54 68    tive section. Th
0094C0:  65 20 73 74 65 70 20 73 69 7A 65 20 69 73 20 73    e step size is s
0094D0:  69 67 6E 20 65 78 74 65 6E 64 65 64 20 28 62 69    ign extended (bi
0094E0:  74 20 37 20 69 73 20 20 63 6F 70 69 65 64 20 20    t 7 is  copied  
0094F0:  74 6F 0D 0A 20 20 20 20 20 20 20 62 69 74 73 20    to..       bits 
009500:  38 2E 2E 31 35 29 20 61 6E 64 20 69 73 20 61 64    8..15) and is ad
009510:  64 65 64 20 74 6F 20 74 68 65 20 63 75 72 72 65    ded to the curre
009520:  6E 74 20 20 74 6F 6E 65 20 20 70 65 72 69 6F 64    nt  tone  period
009530:  20 20 74 68 65 20 20 6E 75 6D 62 65 72 20 20 6F      the  number  o
009540:  66 0D 0A 20 20 20 20 20 20 20 74 69 6D 65 73 20    f..       times 
009550:  73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65    specified by the
009560:  20 73 74 65 70 20 63 6F 75 6E 74 2E 20 41 66 74     step count. Aft
009570:  65 72 20 65 61 63 68 20 61 64 64 69 74 69 6F 6E    er each addition
009580:  20 61 20 77 61 69 74 20 20 6F 66 20 20 74 68 65     a wait  of  the
009590:  0D 0A 20 20 20 20 20 20 20 70 61 75 73 65 20 74    ..       pause t
0095A0:  69 6D 65 20 69 6E 20 31 2F 31 30 30 73 20 6F 66    ime in 1/100s of
0095B0:  20 61 20 73 65 63 6F 6E 64 20 69 73 20 6D 61 64     a second is mad
0095C0:  65 2E 20 54 68 65 20 73 6F 75 6E 64 20 63 68 69    e. The sound chi
0095D0:  70 20 6F 6E 6C 79 20 75 73 65 73 20 74 68 65 0D    p only uses the.
0095E0:  0A 0D 0A 20 20 20 20 20 20 20 6C 6F 77 65 72 20    ...       lower 
0095F0:  31 32 20 62 69 74 73 20 6F 66 20 74 68 65 20 74    12 bits of the t
009600:  6F 6E 65 20 70 65 72 69 6F 64 20 73 6F 20 20 61    one period so  a
009610:  6C 6C 20 20 61 72 69 74 68 6D 65 74 69 63 20 20    ll  arithmetic  
009620:  69 73 20 20 63 61 72 72 69 65 64 20 20 6F 75 74    is  carried  out
009630:  0D 0A 20 20 20 20 20 20 20 6D 6F 64 75 6C 6F 20    ..       modulo 
009640:  23 31 30 30 30 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    #1000.......    
009650:  20 20 20 41 20 73 74 65 70 20 63 6F 75 6E 74 20       A step count 
009660:  6F 66 20 30 20 69 73 20 74 61 6B 65 6E 20 74 6F    of 0 is taken to
009670:  20 6D 65 61 6E 20 31 20 73 74 65 70 20 77 68 69     mean 1 step whi
009680:  6C 73 74 20 61 20 70 61 75 73 65 20 74 69 6D 65    lst a pause time
009690:  20 6F 66 20 30 20 20 69 73 0D 0A 20 20 20 20 20     of 0  is..     
0096A0:  20 20 74 61 6B 65 6E 20 74 6F 20 6D 65 61 6E 20      taken to mean 
0096B0:  32 35 36 20 31 2F 31 30 30 73 20 6F 66 20 61 20    256 1/100s of a 
0096C0:  73 65 63 6F 6E 64 2E 0D 0A 0D 0A 0D 0A 20 20 20    second.......   
0096D0:  20 20 20 20 49 66 20 74 68 65 20 73 74 65 70 20        If the step 
0096E0:  63 6F 75 6E 74 20 6C 69 65 73 20 69 6E 20 74 68    count lies in th
0096F0:  65 20 72 61 6E 67 65 20 23 46 30 2E 2E 23 46 46    e range #F0..#FF
009700:  20 74 68 65 6E 20 74 68 65 20 20 73 65 63 74 69     then the  secti
009710:  6F 6E 20 20 69 73 20 20 61 6E 0D 0A 20 20 20 20    on  is  an..    
009720:  20 20 20 61 62 73 6F 6C 75 74 65 20 73 65 63 74       absolute sect
009730:  69 6F 6E 2E 20 54 68 65 20 6C 65 61 73 74 20 73    ion. The least s
009740:  69 67 6E 69 66 69 63 61 6E 74 20 66 6F 75 72 20    ignificant four 
009750:  62 69 74 73 20 6F 66 20 20 74 68 65 20 20 73 74    bits of  the  st
009760:  65 70 20 20 63 6F 75 6E 74 0D 0A 20 20 20 20 20    ep  count..     
009770:  20 20 61 72 65 20 74 61 6B 65 6E 20 74 6F 20 62      are taken to b
009780:  65 20 74 68 65 20 6D 6F 73 74 20 73 69 67 6E 69    e the most signi
009790:  66 69 63 61 6E 74 20 62 79 74 65 20 6F 66 20 74    ficant byte of t
0097A0:  68 65 20 74 6F 6E 65 20 70 65 72 69 6F 64 20 20    he tone period  
0097B0:  61 6E 64 20 20 74 68 65 0D 0A 20 20 20 20 20 20    and  the..      
0097C0:  20 73 74 65 70 20 73 69 7A 65 20 69 73 20 74 61     step size is ta
0097D0:  6B 65 6E 20 74 6F 20 62 65 20 74 68 65 20 6C 65    ken to be the le
0097E0:  61 73 74 20 73 69 67 6E 69 66 69 63 61 6E 74 20    ast significant 
0097F0:  62 79 74 65 2E 20 54 68 69 73 20 74 6F 6E 65 20    byte. This tone 
009800:  20 70 65 72 69 6F 64 0D 0A 20 20 20 20 20 20 20     period..       
009810:  69 73 20 73 65 74 20 69 6D 6D 65 64 69 61 74 65    is set immediate
009820:  6C 79 20 61 6E 64 20 69 73 20 66 6F 6C 6C 6F 77    ly and is follow
009830:  65 64 20 62 79 20 61 20 70 61 75 73 65 20 77 68    ed by a pause wh
009840:  6F 73 65 20 6C 65 6E 67 74 68 20 69 73 20 20 73    ose length is  s
009850:  65 74 20 20 62 79 0D 0A 20 20 20 20 20 20 20 74    et  by..       t
009860:  68 65 20 70 61 75 73 65 20 74 69 6D 65 20 69 6E    he pause time in
009870:  20 31 2F 31 30 30 73 20 6F 66 20 61 20 73 65 63     1/100s of a sec
009880:  6F 6E 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ond.......      
009890:  20 54 68 65 72 65 20 69 73 20 6E 6F 20 70 72 6F     There is no pro
0098A0:  74 65 63 74 69 6F 6E 20 61 67 61 69 6E 73 74 20    tection against 
0098B0:  63 68 61 6E 67 69 6E 67 20 61 6E 20 65 6E 76 65    changing an enve
0098C0:  6C 6F 70 65 20 77 68 69 6C 73 74 20 20 69 74 20    lope whilst  it 
0098D0:  20 69 73 20 20 69 6E 0D 0A 20 20 20 20 20 20 20     is  in..       
0098E0:  75 73 65 2E 20 54 68 69 73 20 63 6F 75 6C 64 20    use. This could 
0098F0:  68 61 76 65 20 75 6E 70 72 65 64 69 63 74 61 62    have unpredictab
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:  6C 65 20 65 66 66 65 63 74 73 20 61 6E 64 20 73    le effects and s
009A10:  68 6F 75 6C 64 20 62 65 20 61 76 6F 69 64 65 64    hould be avoided
009A20:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66    .......       If
009A30:  20 74 68 65 20 74 6F 6E 65 20 65 6E 76 65 6C 6F     the tone envelo
009A40:  70 65 20 66 69 6E 69 73 68 65 73 20 62 65 66 6F    pe finishes befo
009A50:  72 65 20 74 68 65 20 65 6E 64 20 6F 66 20 74 68    re the end of th
009A60:  65 20 73 6F 75 6E 64 20 28 61 73 20 73 65 74 20    e sound (as set 
009A70:  77 68 65 6E 0D 0A 20 20 20 20 20 20 20 74 68 65    when..       the
009A80:  20 73 6F 75 6E 64 20 77 61 73 20 71 75 65 75 65     sound was queue
009A90:  64 29 20 74 68 65 6E 20 74 68 65 20 66 69 6E 61    d) then the fina
009AA0:  6C 20 20 74 6F 6E 65 20 20 69 73 20 20 68 65 6C    l  tone  is  hel
009AB0:  64 2E 20 20 69 2E 65 2E 20 20 54 68 65 20 20 74    d.  i.e.  The  t
009AC0:  6F 6E 65 0D 0A 20 20 20 20 20 20 20 65 6E 76 65    one..       enve
009AD0:  6C 6F 70 65 20 64 6F 65 73 20 6E 6F 74 20 61 66    lope does not af
009AE0:  66 65 63 74 20 74 68 65 20 6C 65 6E 67 74 68 20    fect the length 
009AF0:  6F 66 20 74 68 65 20 73 6F 75 6E 64 2E 0D 0A 0D    of the sound....
009B00:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61    .....       Rela
009B10:  74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A    ted entries:....
009B20:  0D 0A 20 20 20 20 20 20 20 53 4F 55 4E 44 20 41    ..       SOUND A
009B30:  4D 50 4C 20 45 4E 56 45 4C 4F 50 45 0D 0A 20 20    MPL ENVELOPE..  
009B40:  20 20 20 20 20 53 4F 55 4E 44 20 54 20 41 44 44         SOUND T ADD
009B50:  52 45 53 53 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    RESS............
009B60:  20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43           AMSTRAD C
009B70:  50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46    PC464/664/6128 F
009B80:  49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20    IRMWARE         
009B90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
009BA0:  20 20 70 61 67 65 20 31 35 2E 31 38 30 0D 0A 0D      page 15.180...
009BB0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
009BC0:  20 20 31 35 30 3A 20 53 4F 55 4E 44 20 41 20 41      150: SOUND A A
009BD0:  44 44 52 45 53 53 20 20 20 20 20 20 20 20 20 20    DDRESS          
009BE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
009BF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
009C00:  20 20 20 23 42 43 43 32 0D 0A 0D 0A 0D 0A 20 20       #BCC2......  
009C10:  20 20 20 20 20 47 65 74 20 74 68 65 20 61 64 64         Get the add
009C20:  72 65 73 73 20 6F 66 20 61 6E 20 61 6D 70 6C 69    ress of an ampli
009C30:  74 75 64 65 20 65 6E 76 65 6C 6F 70 65 2E 0D 0A    tude envelope...
009C40:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F    ....       Actio
009C50:  6E 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    n:......       A
009C60:  73 6B 20 77 68 65 72 65 20 74 68 65 20 64 61 74    sk where the dat
009C70:  61 20 61 72 65 61 20 66 6F 72 20 61 6E 20 61 6D    a area for an am
009C80:  70 6C 69 74 75 64 65 20 65 6E 76 65 6C 6F 70 65    plitude envelope
009C90:  20 69 73 20 73 74 6F 72 65 64 2E 0D 0A 0D 0A 0D     is stored......
009CA0:  0A 20 20 20 20 20 20 20 45 6E 74 72 79 20 63 6F    .       Entry co
009CB0:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20    nditions:...... 
009CC0:  20 20 20 20 20 20 41 20 63 6F 6E 74 61 69 6E 73          A contains
009CD0:  20 61 6E 20 65 6E 76 65 6C 6F 70 65 20 6E 75 6D     an envelope num
009CE0:  62 65 72 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ber.......      
009CF0:  20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73     Exit conditions
009D00:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66    :......       If
009D10:  20 74 68 65 20 65 6E 76 65 6C 6F 70 65 20 77 61     the envelope wa
009D20:  73 20 66 6F 75 6E 64 20 4F 4B 3A 0D 0A 0D 0A 0D    s found OK:.....
009D30:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
009D40:  20 43 61 72 72 79 20 74 72 75 65 2E 0D 0A 20 20     Carry true...  
009D50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 48 4C                  HL
009D60:  20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 61 64     contains the ad
009D70:  64 72 65 73 73 20 6F 66 20 74 68 65 20 61 6D 70    dress of the amp
009D80:  6C 69 74 75 64 65 20 65 6E 76 65 6C 6F 70 65 2E    litude envelope.
009D90:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
009DA0:  20 20 42 43 20 63 6F 6E 74 61 69 6E 73 20 74 68      BC contains th
009DB0:  65 20 6C 65 6E 67 74 68 20 6F 66 20 61 6E 20 65    e length of an e
009DC0:  6E 76 65 6C 6F 70 65 20 28 31 36 20 62 79 74 65    nvelope (16 byte
009DD0:  73 29 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    s).......       
009DE0:  49 66 20 74 68 65 20 65 6E 76 65 6C 6F 70 65 20    If the envelope 
009DF0:  6E 75 6D 62 65 72 20 77 61 73 20 69 6E 76 61 6C    number was inval
009E00:  69 64 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    id:......       
009E10:  20 20 20 20 20 20 20 20 20 43 61 72 72 79 20 66             Carry f
009E20:  61 6C 73 65 2E 0D 0A 20 20 20 20 20 20 20 20 20    alse...         
009E30:  20 20 20 20 20 20 20 48 4C 20 63 6F 72 72 75 70           HL corrup
009E40:  74 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    t...            
009E50:  20 20 20 20 42 43 20 70 72 65 73 65 72 76 65 64        BC preserved
009E60:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 6C    .......       Al
009E70:  77 61 79 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ways:......     
009E80:  20 20 20 20 20 20 20 20 20 20 20 41 20 61 6E 64               A and
009E90:  20 6F 74 68 65 72 20 66 6C 61 67 73 20 63 6F 72     other flags cor
009EA0:  72 75 70 74 2E 0D 0A 20 20 20 20 20 20 20 20 20    rupt...         
009EB0:  20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65 72           All other
009EC0:  20 72 65 67 69 73 74 65 72 73 20 70 72 65 73 65     registers prese
009ED0:  72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    rved.......     
009EE0:  20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20      Notes:......  
009EF0:  20 20 20 20 20 54 68 65 20 65 6E 76 65 6C 6F 70         The envelop
009F00:  65 20 69 73 20 6C 61 69 64 20 6F 75 74 20 61 73    e is laid out as
009F10:  20 64 65 73 63 72 69 62 65 64 20 69 6E 20 53 4F     described in SO
009F20:  55 4E 44 20 41 4D 50 4C 20 45 4E 56 45 4C 4F 50    UND AMPL ENVELOP
009F30:  45 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    E.........      
009F40:  20 52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73     Related entries
009F50:  3A 0D 0A 0D 0A 20 20 20 20 20 20 20 53 4F 55 4E    :....       SOUN
009F60:  44 20 41 4D 50 4C 20 45 4E 56 45 4C 4F 50 45 0D    D AMPL ENVELOPE.
009F70:  0A 20 20 20 20 20 20 20 53 4F 55 4E 44 20 54 20    .       SOUND T 
009F80:  41 44 44 52 45 53 53 0D 0A 0D 0A 0D 0A 0D 0A 0D    ADDRESS.........
009F90:  0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20    .       AMSTRAD 
009FA0:  43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20    CPC464/664/6128 
009FB0:  46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20    FIRMWARE        
009FC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
009FD0:  20 20 20 70 61 67 65 20 31 35 2E 31 38 31 0D 0A       page 15.181..
009FE0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
009FF0:  20 20 20 31 35 31 3A 20 53 4F 55 4E 44 20 54 20       151: SOUND T 
00A000:  41 44 44 52 45 53 53 20 20 20 20 20 20 20 20 20    ADDRESS         
00A010:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A020:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A030:  20 20 20 20 23 42 43 43 35 0D 0A 0D 0A 0D 0A 20        #BCC5...... 
00A040:  20 20 20 20 20 20 47 65 74 20 74 68 65 20 61 64          Get the ad
00A050:  64 72 65 73 73 20 6F 66 20 61 20 74 6F 6E 65 20    dress of a tone 
00A060:  65 6E 76 65 6C 6F 70 65 2E 0D 0A 0D 0A 0D 0A 20    envelope....... 
00A070:  20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D          Action:...
00A080:  0A 0D 0A 20 20 20 20 20 20 20 41 73 6B 20 77 68    ...       Ask wh
00A090:  65 72 65 20 74 68 65 20 64 61 74 61 20 61 72 65    ere the data are
00A0A0:  61 20 66 6F 72 20 74 68 65 20 74 6F 6E 65 20 65    a for the tone e
00A0B0:  6E 76 65 6C 6F 70 65 20 69 73 20 73 74 6F 72 65    nvelope is store
00A0C0:  64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    d.......       E
00A0D0:  6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    ntry conditions:
00A0E0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 20 63    ......       A c
00A0F0:  6F 6E 74 61 69 6E 73 20 61 6E 20 65 6E 76 65 6C    ontains an envel
00A100:  6F 70 65 20 6E 75 6D 62 65 72 2E 0D 0A 0D 0A 0D    ope number......
00A110:  0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F 6E    .       Exit con
00A120:  64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20    ditions:......  
00A130:  20 20 20 20 20 49 66 20 74 68 65 20 65 6E 76 65         If the enve
00A140:  6C 6F 70 65 20 77 61 73 20 66 6F 75 6E 64 20 4F    lope was found O
00A150:  4B 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20    K:......        
00A160:  20 20 20 20 20 20 20 20 43 61 72 72 79 20 74 72            Carry tr
00A170:  75 65 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ue...           
00A180:  20 20 20 20 20 48 4C 20 63 6F 6E 74 61 69 6E 73         HL contains
00A190:  20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20     the address of 
00A1A0:  74 68 65 20 74 6F 6E 65 20 65 6E 76 65 6C 6F 70    the tone envelop
00A1B0:  65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20    e.......        
00A1C0:  20 20 20 20 20 20 20 20 42 43 20 63 6F 6E 74 61            BC conta
00A1D0:  69 6E 73 20 74 68 65 20 6C 65 6E 67 74 68 20 6F    ins the length o
00A1E0:  66 20 61 6E 20 65 6E 76 65 6C 6F 70 65 20 28 31    f an envelope (1
00A1F0:  36 20 62 79 74 65 73 29 2E 0D 0A 0D 0A 0D 0A 20    6 bytes)....... 
00A200:  20 20 20 20 20 20 49 66 20 74 68 65 20 65 6E 76          If the env
00A210:  65 6C 6F 70 65 20 6E 75 6D 62 65 72 20 77 61 73    elope number was
00A220:  20 69 6E 76 61 6C 69 64 3A 0D 0A 0D 0A 0D 0A 20     invalid:...... 
00A230:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                   C
00A240:  61 72 72 79 20 66 61 6C 73 65 2E 0D 0A 20 20 20    arry false...   
00A250:  20 20 20 20 20 20 20 20 20 20 20 20 20 48 4C 20                 HL 
00A260:  63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20    corrupt...      
00A270:  20 20 20 20 20 20 20 20 20 20 42 43 20 70 72 65              BC pre
00A280:  73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20    served.......   
00A290:  20 20 20 20 41 6C 77 61 79 73 3A 0D 0A 0D 0A 20        Always:.... 
00A2A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                   A
00A2B0:  20 61 6E 64 20 6F 74 68 65 72 20 66 6C 61 67 73     and other flags
00A2C0:  20 63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20     corrupt...     
00A2D0:  20 20 20 20 20 20 20 20 20 20 20 41 6C 6C 20 6F               All o
00A2E0:  74 68 65 72 20 72 65 67 69 73 74 65 72 73 20 70    ther registers p
00A2F0:  72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20    reserved....... 
00A300:  20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A          Notes:....
00A310:  20 20 20 20 20 20 20 54 68 65 20 65 6E 76 65 6C           The envel
00A320:  6F 70 65 20 6E 75 6D 62 65 72 20 6D 75 73 74 20    ope number must 
00A330:  6C 69 65 20 69 6E 20 74 68 65 20 72 61 6E 67 65    lie in the range
00A340:  20 31 2E 2E 31 35 2E 0D 0A 0D 0A 20 20 20 20 20     1..15.....     
00A350:  20 20 54 68 65 20 74 6F 6E 65 20 65 6E 76 65 6C      The tone envel
00A360:  6F 70 65 20 69 73 20 6C 61 69 64 20 6F 75 74 20    ope is laid out 
00A370:  61 73 20 64 65 73 63 72 69 62 65 64 20 69 6E 20    as described in 
00A380:  53 4F 55 4E 44 20 54 4F 4E 45 20 45 4E 56 45 4C    SOUND TONE ENVEL
00A390:  4F 50 45 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 52    OPE.....       R
00A3A0:  65 6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D    elated entries:.
00A3B0:  0A 0D 0A 20 20 20 20 20 20 20 53 4F 55 4E 44 20    ...       SOUND 
00A3C0:  41 20 41 44 44 52 45 53 53 0D 0A 20 20 20 20 20    A ADDRESS..     
00A3D0:  20 20 53 4F 55 4E 44 20 54 4F 4E 45 20 45 4E 56      SOUND TONE ENV
00A3E0:  45 4C 4F 50 45 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    ELOPE.......... 
00A3F0:  20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50          AMSTRAD CP
00A400:  43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49    C464/664/6128 FI
00A410:  52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20    RMWARE          
00A420:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A430:  20 70 61 67 65 20 31 35 2E 31 38 32 0D 0A 0D 0A     page 15.182....
00A440:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
00A450:  20 31 35 32 3A 20 4B 4C 20 43 48 4F 4B 45 20 4F     152: KL CHOKE O
00A460:  46 46 20 20 20 20 20 20 20 20 20 20 20 20 20 20    FF              
00A470:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A480:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00A490:  20 20 23 42 43 43 38 0D 0A 0D 0A 20 20 20 20 20      #BCC8....     
00A4A0:  20 20 52 65 73 65 74 20 74 68 65 20 4B 65 72 6E      Reset the Kern
00A4B0:  65 6C 20 2D 20 63 6C 65 61 72 73 20 61 6C 6C 20    el - clears all 
00A4C0:  65 76 65 6E 74 20 71 75 65 75 65 73 20 65 74 63    event queues etc
00A4D0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69    .....       Acti
00A4E0:  6F 6E 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    on:....       Th
00A4F0:  69 73 20 65 6E 74 72 79 20 63 6F 6D 70 6C 65 74    is entry complet
00A500:  65 6C 79 20 63 6C 65 61 72 73 20 61 6C 6C 20 65    ely clears all e
00A510:  76 65 6E 74 20 71 75 65 75 65 73 2C 20 74 68 65    vent queues, the
00A520:  20 76 61 72 69 6F 75 73 20 20 74 69 6D 65 72 20     various  timer 
00A530:  20 61 6E 64 0D 0A 20 20 20 20 20 20 20 66 72 61     and..       fra
00A540:  6D 65 20 66 6C 79 62 61 63 6B 20 6C 69 73 74 73    me flyback lists
00A550:  20 61 6E 64 20 73 6F 20 6F 6E 2E 20 54 68 65 20     and so on. The 
00A560:  65 66 66 65 63 74 20 69 73 20 74 6F 20 64 69 73    effect is to dis
00A570:  70 6F 73 65 20 6F 66 20 61 6E 79 20 70 65 6E 64    pose of any pend
00A580:  69 6E 67 0D 0A 20 20 20 20 20 20 20 73 79 6E 63    ing..       sync
00A590:  68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 73 20 61    hronous events a
00A5A0:  6E 64 20 74 6F 20 68 61 6C 74 20 61 6C 6C 20 74    nd to halt all t
00A5B0:  69 6D 65 72 20 72 65 6C 61 74 65 64 20 66 75 6E    imer related fun
00A5C0:  63 74 69 6F 6E 73 20 6F 74 68 65 72 20 20 74 68    ctions other  th
00A5D0:  61 6E 0D 0A 20 20 20 20 20 20 20 73 6F 75 6E 64    an..       sound
00A5E0:  20 67 65 6E 65 72 61 74 69 6F 6E 20 61 6E 64 20     generation and 
00A5F0:  6B 65 79 62 6F 61 72 64 20 73 63 61 6E 6E 69 6E    keyboard scannin
00A600:  67 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74    g.....       Ent
00A610:  72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    ry conditions:..
00A620:  0D 0A 20 20 20 20 20 20 20 4E 6F 20 63 6F 6E 64    ..       No cond
00A630:  69 74 69 6F 6E 73 2E 0D 0A 0D 0A 20 20 20 20 20    itions.....     
00A640:  20 20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E      Exit condition
00A650:  73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 42 20 63    s:....       B c
00A660:  6F 6E 74 61 69 6E 73 20 74 68 65 20 52 4F 4D 20    ontains the ROM 
00A670:  73 65 6C 65 63 74 20 61 64 64 72 65 73 73 20 6F    select address o
00A680:  66 20 74 68 65 20 63 75 72 72 65 6E 74 20 20 66    f the current  f
00A690:  6F 72 65 67 72 6F 75 6E 64 20 20 52 4F 4D 20 20    oreground  ROM  
00A6A0:  28 69 66 0D 0A 20 20 20 20 20 20 20 61 6E 79 29    (if..       any)
00A6B0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 44 45 20 63    .....       DE c
00A6C0:  6F 6E 74 61 69 6E 73 20 74 68 65 20 61 64 64 72    ontains the addr
00A6D0:  65 73 73 20 20 61 74 20 20 77 68 69 63 68 20 20    ess  at  which  
00A6E0:  74 68 65 20 20 63 75 72 72 65 6E 74 20 20 66 6F    the  current  fo
00A6F0:  72 65 67 72 6F 75 6E 64 20 20 52 4F 4D 20 20 77    reground  ROM  w
00A700:  61 73 0D 0A 20 20 20 20 20 20 20 65 6E 74 65 72    as..       enter
00A710:  65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 43 20    ed.....       C 
00A720:  63 6F 6E 74 61 69 6E 73 20 74 68 65 20 52 4F 4D    contains the ROM
00A730:  20 73 65 6C 65 63 74 20 61 64 64 72 65 73 73 20     select address 
00A740:  66 6F 72 20 61 20 52 41 4D 20 66 6F 72 65 67 72    for a RAM foregr
00A750:  6F 75 6E 64 20 70 72 6F 67 72 61 6D 2E 0D 0A 0D    ound program....
00A760:  0A 20 20 20 20 20 20 20 41 46 20 61 6E 64 20 48    .       AF and H
00A770:  4C 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20    L corrupt...    
00A780:  20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67       All other reg
00A790:  69 73 74 65 72 73 20 70 72 65 73 65 72 76 65 64    isters preserved
00A7A0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F    .......       No
00A7B0:  74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    tes:......      
00A7C0:  20 49 66 20 74 68 65 20 63 75 72 72 65 6E 74 20     If the current 
00A7D0:  66 6F 72 65 67 72 6F 75 6E 64 20 70 72 6F 67 72    foreground progr
00A7E0:  61 6D 20 20 69 73 20 20 69 6E 20 20 52 41 4D 20    am  is  in  RAM 
00A7F0:  20 74 68 65 6E 20 20 74 68 65 20 20 52 4F 4D 20     then  the  ROM 
00A800:  20 73 65 6C 65 63 74 0D 0A 20 20 20 20 20 20 20     select..       
00A810:  61 64 64 72 65 73 73 20 61 6E 64 20 65 6E 74 72    address and entr
00A820:  79 20 70 6F 69 6E 74 20 72 65 74 75 72 6E 65 64    y point returned
00A830:  20 61 72 65 20 62 6F 74 68 20 7A 65 72 6F 2E 20     are both zero. 
00A840:  69 2E 65 2E 20 54 68 65 20 20 64 65 66 61 75 6C    i.e. The  defaul
00A850:  74 20 20 52 4F 4D 0D 0A 20 20 20 20 20 20 20 28    t  ROM..       (
00A860:  52 4F 4D 20 30 29 20 61 74 20 69 74 73 20 65 6E    ROM 0) at its en
00A870:  74 72 79 20 61 64 64 72 65 73 73 2E 0D 0A 0D 0A    try address.....
00A880:  0D 0A 20 20 20 20 20 20 20 4B 4C 20 43 48 4F 4B    ..       KL CHOK
00A890:  45 20 4F 46 46 20 66 6F 72 6D 73 20 70 61 72 74    E OFF forms part
00A8A0:  20 6F 66 20 74 68 65 20 63 6C 6F 73 65 20 64 6F     of the close do
00A8B0:  77 6E 20 72 65 71 75 69 72 65 64 20 62 65 66 6F    wn required befo
00A8C0:  72 65 20 20 61 20 20 6E 65 77 20 20 52 41 4D 0D    re  a  new  RAM.
00A8D0:  0A 20 20 20 20 20 20 20 66 6F 72 65 67 72 6F 75    .       foregrou
00A8E0:  6E 64 20 70 72 6F 67 72 61 6D 20 69 73 20 6C 6F    nd program is lo
00A8F0:  61 64 65 64 2C 20 61 73 20 69 73 20 72 65 71 75    aded, as is requ
00A900:  69 72 65 64 20 62 79 20 4D 43 20 42 4F 4F 54 20    ired by MC BOOT 
00A910:  50 52 4F 47 52 41 4D 2E 0D 0A 0D 0A 20 20 20 20    PROGRAM.....    
00A920:  20 20 20 54 68 65 20 63 6C 6F 73 65 20 64 6F 77       The close dow
00A930:  6E 20 6D 75 73 74 20 65 6E 73 75 72 65 20 74 68    n must ensure th
00A940:  61 74 20 74 68 65 72 65 20 61 72 65 20 6E 6F 20    at there are no 
00A950:  69 6E 74 65 72 72 75 70 74 20 6F 72 20 6F 74 68    interrupt or oth
00A960:  65 72 20 65 76 65 6E 74 73 0D 0A 20 20 20 20 20    er events..     
00A970:  20 20 61 63 74 69 76 65 20 61 6E 64 20 75 73 69      active and usi
00A980:  6E 67 20 6D 65 6D 6F 72 79 20 77 68 69 63 68 20    ng memory which 
00A990:  20 6D 69 67 68 74 20 20 62 65 20 20 64 61 6D 61     might  be  dama
00A9A0:  67 65 64 20 20 62 79 20 20 6C 6F 61 64 69 6E 67    ged  by  loading
00A9B0:  20 20 61 20 20 6E 65 77 0D 0A 20 20 20 20 20 20      a  new..      
00A9C0:  20 70 72 6F 67 72 61 6D 20 69 6E 74 6F 20 6D 65     program into me
00A9D0:  6D 6F 72 79 2E 20 49 6E 20 74 68 65 20 63 6F 6D    mory. In the com
00A9E0:  70 6C 65 74 65 20 63 6C 6F 73 65 20 64 6F 77 6E    plete close down
00A9F0:  20 4D 43 20 42 4F 4F 54 20 50 52 4F 47 52 41 4D     MC BOOT PROGRAM
00AA00:  20 64 6F 65 73 3A 0D 0A 0D 0A 20 20 20 20 20 20     does:....      
00AA10:  20 53 4F 55 4E 44 20 52 45 53 45 54 20 20 20 20     SOUND RESET    
00AA20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 6F                  to
00AA30:  20 6B 69 6C 6C 20 6F 66 66 20 73 6F 75 6E 64 20     kill off sound 
00AA40:  67 65 6E 65 72 61 74 69 6F 6E 0D 0A 0D 0A 20 20    generation....  
00AA50:  20 20 20 20 20 61 6E 20 4F 55 54 20 74 6F 20 49         an OUT to I
00AA60:  2F 4F 20 70 6F 72 74 20 23 46 38 46 46 20 20 20    /O port #F8FF   
00AA70:  20 20 74 6F 20 72 65 73 65 74 20 61 6E 79 20 65      to reset any e
00AA80:  78 74 65 72 6E 61 6C 20 69 6E 74 65 72 72 75 70    xternal interrup
00AA90:  74 20 73 6F 75 72 63 65 73 2E 0D 0A 0D 0A 20 20    t sources.....  
00AAA0:  20 20 20 20 20 4B 4C 20 43 48 4F 4B 45 20 4F 46         KL CHOKE OF
00AAB0:  46 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    F               
00AAC0:  20 20 74 6F 20 6B 69 6C 6C 20 6F 66 66 20 65 76      to kill off ev
00AAD0:  65 6E 74 73 20 65 74 63 2E 0D 0A 0D 0A 20 20 20    ents etc.....   
00AAE0:  20 20 20 20 4B 4D 20 52 45 53 45 54 20 20 20 20        KM RESET    
00AAF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00AB00:  20 74 6F 20 72 65 73 65 74 20 61 6E 79 20 20 6B     to reset any  k
00AB10:  65 79 62 6F 61 72 64 20 20 69 6E 64 69 72 65 63    eyboard  indirec
00AB20:  74 69 6F 6E 73 20 20 61 6E 64 0D 0A 20 20 20 20    tions  and..    
00AB30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00AB40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00AB50:  74 68 65 20 62 72 65 61 6B 20 65 76 65 6E 74 2E    the break event.
00AB60:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 58 54 20 52    ....       TXT R
00AB70:  45 53 45 54 20 20 20 20 20 20 20 20 20 20 20 20    ESET            
00AB80:  20 20 20 20 20 20 20 20 74 6F 20 72 65 73 65 74            to reset
00AB90:  20 61 6E 79 20 54 65 78 74 20 56 44 55 20 69 6E     any Text VDU in
00ABA0:  64 69 72 65 63 74 69 6F 6E 73 2E 0D 0A 0D 0A 20    directions..... 
00ABB0:  20 20 20 20 20 20 53 43 52 20 52 45 53 45 54 20          SCR RESET 
00ABC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00ABD0:  20 20 20 74 6F 20 72 65 73 65 74 20 61 6E 79 20       to reset any 
00ABE0:  73 63 72 65 65 6E 20 69 6E 64 69 72 65 63 74 69    screen indirecti
00ABF0:  6F 6E 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ons.........    
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 41 4D 53 54 52 41 44 20 43 50 43 34 36       AMSTRAD CPC46
00AD10:  34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57    4/664/6128 FIRMW
00AD20:  41 52 45 20 20 20 20 20 20 20 20 20 20 20 20 20    ARE             
00AD30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61                  pa
00AD40:  67 65 20 31 35 2E 31 38 33 0D 0A 0D 0A 0D 0A 0D    ge 15.183.......
00AD50:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
00AD60:  65 20 76 61 6C 75 65 73 20 72 65 74 75 72 6E 65    e values returne
00AD70:  64 20 62 79 20 4B 4C 20 43 48 4F 4B 45 20 4F 46    d by KL CHOKE OF
00AD80:  46 20 61 72 65 20 75 73 65 64 20 62 79 20 4D 43    F are used by MC
00AD90:  20 42 4F 4F 54 20 50 52 4F 47 52 41 4D 20 69 66     BOOT PROGRAM if
00ADA0:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 70 72 6F     the..       pro
00ADB0:  67 72 61 6D 20 6C 6F 61 64 20 66 61 69 6C 73 2E    gram load fails.
00ADC0:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    ........       T
00ADD0:  68 69 73 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20    his information 
00ADE0:  69 73 20 20 69 6E 63 6C 75 64 65 64 20 20 66 6F    is  included  fo
00ADF0:  72 20 20 74 68 65 20 20 72 65 61 64 65 72 27 73    r  the  reader's
00AE00:  20 20 69 6E 74 65 72 65 73 74 2E 20 20 4D 43 20      interest.  MC 
00AE10:  20 42 4F 4F 54 0D 0A 20 20 20 20 20 20 20 50 52     BOOT..       PR
00AE20:  4F 47 52 41 4D 20 69 73 20 74 68 65 20 20 72 65    OGRAM is the  re
00AE30:  63 6F 6D 6D 65 6E 64 65 64 20 20 6D 65 61 6E 73    commended  means
00AE40:  20 20 6F 66 20 20 6C 6F 61 64 69 6E 67 20 20 61      of  loading  a
00AE50:  6E 64 20 20 65 6E 74 65 72 69 6E 67 20 20 61 20    nd  entering  a 
00AE60:  20 52 41 4D 0D 0A 20 20 20 20 20 20 20 66 6F 72     RAM..       for
00AE70:  65 67 72 6F 75 6E 64 20 70 72 6F 67 72 61 6D 2E    eground program.
00AE80:  20 4D 43 20 53 54 41 52 54 20 50 52 4F 47 52 41     MC START PROGRA
00AE90:  4D 20 20 69 73 20 20 20 74 68 65 20 20 72 65 63    M  is   the  rec
00AEA0:  6F 6D 6D 65 6E 64 65 64 20 20 6D 65 61 6E 73 20    ommended  means 
00AEB0:  20 6F 66 0D 0A 20 20 20 20 20 20 20 65 6E 74 65     of..       ente
00AEC0:  72 69 6E 67 20 61 20 52 4F 4D 20 66 6F 72 65 67    ring a ROM foreg
00AED0:  72 6F 75 6E 64 20 70 72 6F 67 72 61 6D 2C 20 6F    round program, o
00AEE0:  72 20 61 20 52 41 4D 20 66 6F 72 65 67 72 6F 75    r a RAM foregrou
00AEF0:  6E 64 20 20 70 72 6F 67 72 61 6D 20 20 77 68 69    nd  program  whi
00AF00:  63 68 0D 0A 20 20 20 20 20 20 20 68 61 73 20 61    ch..       has a
00AF10:  6C 72 65 61 64 79 20 62 65 65 6E 20 6C 6F 61 64    lready been load
00AF20:  65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ed.........     
00AF30:  20 20 4B 4C 20 43 48 4F 4B 45 20 4F 46 46 20 64      KL CHOKE OFF d
00AF40:  69 73 61 62 6C 65 73 20 69 6E 74 65 72 72 75 70    isables interrup
00AF50:  74 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    ts............. 
00AF60:  20 20 20 20 20 20 52 65 6C 61 74 65 64 20 65 6E          Related en
00AF70:  74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    tries:......    
00AF80:  20 20 20 4D 43 20 42 4F 4F 54 20 50 52 4F 47 52       MC BOOT PROGR
00AF90:  41 4D 0D 0A 20 20 20 20 20 20 20 4D 43 20 53 54    AM..       MC ST
00AFA0:  41 52 54 20 50 52 4F 47 52 41 4D 0D 0A 0D 0A 0D    ART PROGRAM.....
00AFB0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
00AFC0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
00AFD0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
00AFE0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
00AFF0:  0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41    ...       AMSTRA
00B000:  44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32    D CPC464/664/612
00B010:  38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20    8 FIRMWARE      
00B020:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00B030:  20 20 20 20 20 70 61 67 65 20 31 35 2E 31 38 34         page 15.184
00B040:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ..............  
00B050:  20 20 20 20 20 31 35 33 3A 20 4B 4C 20 52 4F 4D         153: KL ROM
00B060:  20 57 41 4C 4B 20 20 20 20 20 20 20 20 20 20 20     WALK           
00B070:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00B080:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00B090:  20 20 20 20 20 20 23 42 43 43 42 0D 0A 0D 0A 20          #BCCB.... 
00B0A0:  20 20 20 20 20 20 46 69 6E 64 20 61 6E 64 20 69          Find and i
00B0B0:  6E 69 74 69 61 6C 69 7A 65 20 61 6C 6C 20 62 61    nitialize all ba
00B0C0:  63 6B 67 72 6F 75 6E 64 20 52 4F 4D 73 2E 0D 0A    ckground ROMs...
00B0D0:  0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A    ..       Action:
00B0E0:  0D 0A 0D 0A 20 20 20 20 20 20 20 42 61 63 6B 67    ....       Backg
00B0F0:  72 6F 75 6E 64 20 52 4F 4D 73 20 70 72 6F 76 69    round ROMs provi
00B100:  64 65 20 73 75 70 70 6F 72 74 20 66 6F 72 20 65    de support for e
00B110:  78 70 61 6E 73 69 6F 6E 20 68 61 72 64 77 61 72    xpansion hardwar
00B120:  65 20 6F 72 20 61 75 67 6D 65 6E 74 20 20 74 68    e or augment  th
00B130:  65 0D 0A 20 20 20 20 20 20 20 73 6F 66 74 77 61    e..       softwa
00B140:  72 65 20 66 61 63 69 6C 69 74 69 65 73 20 6F 66    re facilities of
00B150:  20 74 68 65 20 6D 61 63 68 69 6E 65 2E 20 49 66     the machine. If
00B160:  20 74 68 65 20 66 61 63 69 6C 69 74 69 65 73 20     the facilities 
00B170:  70 72 6F 76 69 64 65 64 20 62 79 20 20 74 68 65    provided by  the
00B180:  0D 0A 20 20 20 20 20 20 20 62 61 63 6B 67 72 6F    ..       backgro
00B190:  75 6E 64 20 52 4F 4D 73 20 61 72 65 20 74 6F 20    und ROMs are to 
00B1A0:  20 62 65 20 20 61 76 61 69 6C 61 62 6C 65 2C 20     be  available, 
00B1B0:  20 74 68 65 20 20 66 6F 72 65 67 72 6F 75 6E 64     the  foreground
00B1C0:  20 20 70 72 6F 67 72 61 6D 20 20 6D 75 73 74 0D      program  must.
00B1D0:  0A 20 20 20 20 20 20 20 69 6E 69 74 69 61 6C 69    .       initiali
00B1E0:  7A 65 20 74 68 65 6D 2E 20 54 68 69 73 20 72 6F    ze them. This ro
00B1F0:  75 74 69 6E 65 20 66 69 6E 64 73 20 20 61 6E 64    utine finds  and
00B200:  20 20 69 6E 69 74 69 61 6C 69 7A 65 73 20 20 61      initializes  a
00B210:  6C 6C 20 20 62 61 63 6B 67 72 6F 75 6E 64 0D 0A    ll  background..
00B220:  20 20 20 20 20 20 20 52 4F 4D 73 2E 0D 0A 0D 0A           ROMs.....
00B230:  20 20 20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E           Entry con
00B240:  64 69 74 69 6F 6E 73 3A 0D 0A 20 20 20 20 20 20    ditions:..      
00B250:  20 44 45 20 63 6F 6E 74 61 69 6E 73 20 61 64 64     DE contains add
00B260:  72 65 73 73 20 20 6F 66 20 20 74 68 65 20 20 66    ress  of  the  f
00B270:  69 72 73 74 20 20 75 73 61 62 6C 65 20 20 62 79    irst  usable  by
00B280:  74 65 20 20 6F 66 20 20 6D 65 6D 6F 72 79 20 20    te  of  memory  
00B290:  28 6C 6F 77 65 73 74 0D 0A 20 20 20 20 20 20 20    (lowest..       
00B2A0:  61 64 64 72 65 73 73 29 2E 0D 0A 20 20 20 20 20    address)...     
00B2B0:  20 20 48 4C 20 63 6F 6E 74 61 69 6E 73 20 61 64      HL contains ad
00B2C0:  64 72 65 73 73 20 6F 66 20 20 74 68 65 20 20 6C    dress of  the  l
00B2D0:  61 73 74 20 20 75 73 61 62 6C 65 20 20 62 79 74    ast  usable  byt
00B2E0:  65 73 20 20 6F 66 20 20 6D 65 6D 6F 72 79 20 20    es  of  memory  
00B2F0:  28 68 69 67 68 65 73 74 0D 0A 20 20 20 20 20 20    (highest..      
00B300:  20 61 64 64 72 65 73 73 29 2E 0D 0A 0D 0A 20 20     address).....  
00B310:  20 20 20 20 20 45 78 69 74 20 63 6F 6E 64 69 74         Exit condit
00B320:  69 6F 6E 73 3A 0D 0A 20 20 20 20 20 20 20 44 45    ions:..       DE
00B330:  20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 61 64     contains the ad
00B340:  64 72 65 73 73 20 6F 66 20 74 68 65 20 6E 65 77    dress of the new
00B350:  20 66 69 72 73 74 20 75 73 61 62 6C 65 20 62 79     first usable by
00B360:  74 65 20 6F 66 20 6D 65 6D 6F 72 79 2E 0D 0A 20    te of memory... 
00B370:  20 20 20 20 20 20 48 4C 20 63 6F 6E 74 61 69 6E          HL contain
00B380:  73 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66    s the address of
00B390:  20 74 68 65 20 6E 65 77 20 6C 61 73 74 20 75 73     the new last us
00B3A0:  61 62 6C 65 20 62 79 74 65 20 6F 66 20 6D 65 6D    able byte of mem
00B3B0:  6F 72 79 2E 0D 0A 20 20 20 20 20 20 20 41 46 20    ory...       AF 
00B3C0:  61 6E 64 20 42 43 20 63 6F 72 72 75 70 74 2E 0D    and BC corrupt..
00B3D0:  0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65    .       All othe
00B3E0:  72 20 72 65 67 69 73 74 65 72 73 20 70 72 65 73    r registers pres
00B3F0:  65 72 76 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20    erved.....      
00B400:  20 4E 6F 74 65 73 3A 0D 0A 0D 0A 20 20 20 20 20     Notes:....     
00B410:  20 20 57 68 65 6E 20 61 20 66 6F 72 65 67 72 6F      When a foregro
00B420:  75 6E 64 20 52 4F 4D 20 70 72 6F 67 72 61 6D 20    und ROM program 
00B430:  69 73 20 65 6E 74 65 72 65 64 20 69 74 20 69 73    is entered it is
00B440:  20 70 61 73 73 65 64 20 74 68 65 20 61 64 64 72     passed the addr
00B450:  65 73 73 65 73 20 6F 66 0D 0A 20 20 20 20 20 20    esses of..      
00B460:  20 74 68 65 20 66 69 72 73 74 20 61 6E 64 20 6C     the first and l
00B470:  61 73 74 20 62 79 74 65 73 20 69 6E 20 6D 65 6D    ast bytes in mem
00B480:  6F 72 79 20 77 68 69 63 68 20 69 74 20 6D 61 79    ory which it may
00B490:  20 75 73 65 2E 20 54 68 65 20 20 61 72 65 20 20     use. The  are  
00B4A0:  6F 75 74 73 69 64 65 0D 0A 20 20 20 20 20 20 20    outside..       
00B4B0:  74 68 69 73 20 69 73 20 75 73 65 64 20 74 6F 20    this is used to 
00B4C0:  73 74 6F 72 65 20 66 69 72 6D 77 61 72 65 20 76    store firmware v
00B4D0:  61 72 69 61 62 6C 65 73 2C 20 74 68 65 20 20 73    ariables, the  s
00B4E0:  74 61 63 6B 2C 20 20 74 68 65 20 20 6A 75 6D 70    tack,  the  jump
00B4F0:  62 6C 6F 63 6B 73 0D 0A 20 20 20 20 20 20 20 61    blocks..       a
00B500:  6E 64 20 74 68 65 20 73 63 72 65 65 6E 20 6D 65    nd the screen me
00B510:  6D 6F 72 79 2E 20 46 72 6F 6D 20 74 68 65 20 20    mory. From the  
00B520:  61 72 65 61 20 20 61 76 61 69 6C 61 62 6C 65 20    area  available 
00B530:  20 66 6F 72 20 20 74 68 65 20 20 66 6F 72 65 67     for  the  foreg
00B540:  72 6F 75 6E 64 0D 0A 20 20 20 20 20 20 20 70 72    round..       pr
00B550:  6F 67 72 61 6D 20 74 6F 20 75 73 65 2C 20 74 68    ogram to use, th
00B560:  65 20 61 72 65 61 73 20 66 6F 72 20 20 62 61 63    e areas for  bac
00B570:  6B 67 72 6F 75 6E 64 20 20 70 72 6F 67 72 61 6D    kground  program
00B580:  73 20 20 74 6F 20 20 75 73 65 20 20 6D 75 73 74    s  to  use  must
00B590:  20 20 62 65 0D 0A 20 20 20 20 20 20 20 61 6C 6C      be..       all
00B5A0:  6F 63 61 74 65 64 2E 0D 0A 0D 0A 20 20 20 20 20    ocated.....     
00B5B0:  20 20 54 68 65 20 66 6F 72 65 67 72 6F 75 6E 64      The foreground
00B5C0:  20 70 72 6F 67 72 61 6D 20 73 68 6F 75 6C 64 20     program should 
00B5D0:  69 6E 69 74 69 61 6C 69 7A 65 20 62 61 63 6B 67    initialize backg
00B5E0:  72 6F 75 6E 64 20 52 4F 4D 73 20 61 74 20 20 61    round ROMs at  a
00B5F0:  6E 20 20 65 61 72 6C 79 0D 0A 20 20 20 20 20 20    n  early..      
00B600:  20 73 74 61 67 65 2C 20 62 65 66 6F 72 65 20 69     stage, before i
00B610:  74 20 75 73 65 73 20 74 68 65 20 6D 65 6D 6F 72    t uses the memor
00B620:  79 20 69 74 20 69 73 20 67 69 76 65 6E 2E 20 49    y it is given. I
00B630:  74 20 6D 61 79 20 63 68 6F 6F 73 65 20 77 68 65    t may choose whe
00B640:  74 68 65 72 20 74 6F 0D 0A 20 20 20 20 20 20 20    ther to..       
00B650:  65 6E 61 62 6C 65 20 62 61 63 6B 67 72 6F 75 6E    enable backgroun
00B660:  64 20 52 4F 4D 73 20 6F 72 20 6E 6F 74 2E 20 4B    d ROMs or not. K
00B670:  4C 20 49 4E 49 54 20 42 41 43 4B 20 6D 61 79 20    L INIT BACK may 
00B680:  62 65 20 75 73 65 64 20 74 6F 20 20 69 6E 69 74    be used to  init
00B690:  69 61 6C 69 7A 65 0D 0A 20 20 20 20 20 20 20 61    ialize..       a
00B6A0:  20 70 61 72 74 69 63 75 6C 61 72 20 62 61 63 6B     particular back
00B6B0:  67 72 6F 75 6E 64 20 52 4F 4D 20 6F 72 20 74 68    ground ROM or th
00B6C0:  69 73 20 72 6F 75 74 69 6E 65 20 6D 61 79 20 62    is routine may b
00B6D0:  65 20 75 73 65 64 20 74 6F 20 20 69 6E 69 74 69    e used to  initi
00B6E0:  61 6C 69 7A 65 0D 0A 20 20 20 20 20 20 20 61 6C    alize..       al
00B6F0:  6C 20 61 76 61 69 6C 61 62 6C 65 20 62 61 63 6B    l available back
00B700:  67 72 6F 75 6E 64 20 52 4F 4D 73 2E 0D 0A 0D 0A    ground ROMs.....
00B710:  20 20 20 20 20 20 20 4B 4C 20 52 4F 4D 20 57 41           KL ROM WA
00B720:  4C 4B 20 69 6E 73 70 65 63 74 73 20 74 68 65 20    LK inspects the 
00B730:  52 4F 4D 73 20 61 74 20 52 4F 4D 20 73 65 6C 65    ROMs at ROM sele
00B740:  63 74 20 61 64 64 72 65 73 73 65 73 20 69 6E 20    ct addresses in 
00B750:  74 68 65 20 72 61 6E 67 65 20 31 2E 2E 0D 0A 20    the range 1.... 
00B760:  20 20 20 20 20 20 37 20 20 69 6E 20 20 56 31 2E          7  in  V1.
00B770:  30 20 20 66 69 72 6D 77 61 72 65 20 20 61 6E 64    0  firmware  and
00B780:  20 20 30 2E 2E 31 35 20 20 69 6E 20 20 56 31 2E      0..15  in  V1.
00B790:  31 20 20 66 69 72 6D 77 61 72 65 2E 20 20 54 68    1  firmware.  Th
00B7A0:  65 20 20 20 70 6F 77 65 72 2D 75 70 0D 0A 20 20    e   power-up..  
00B7B0:  20 20 20 20 20 69 6E 69 74 69 61 6C 69 7A 61 74         initializat
00B7C0:  69 6F 6E 20 65 6E 74 72 79 20 6F 66 20 65 61 63    ion entry of eac
00B7D0:  68 20 62 61 63 6B 67 72 6F 75 6E 64 20 52 4F 4D    h background ROM
00B7E0:  20 66 6F 75 6E 64 20 69 73 20 63 61 6C 6C 65 64     found is called
00B7F0:  20 28 75 6E 6C 65 73 73 20 69 74 0D 0A 20 20 20     (unless it..   
00B800:  20 20 20 20 69 73 20 74 68 65 20 63 75 72 72 65        is the curre
00B810:  6E 74 20 66 6F 72 65 67 72 6F 75 6E 64 20 20 52    nt foreground  R
00B820:  4F 4D 20 20 69 6E 20 20 56 31 2E 31 20 20 66 69    OM  in  V1.1  fi
00B830:  72 6D 77 61 72 65 29 2E 20 20 54 68 69 73 20 20    rmware).  This  
00B840:  65 6E 74 72 79 20 20 6D 61 79 0D 0A 20 20 20 20    entry  may..    
00B850:  20 20 20 61 6C 6C 6F 63 61 74 65 20 73 6F 6D 65       allocate some
00B860:  20 6D 65 6D 6F 72 79 20 66 6F 72 20 74 68 65 20     memory for the 
00B870:  62 61 63 6B 67 72 6F 75 6E 64 20 52 4F 4D 27 73    background ROM's
00B880:  20 74 6F 20 75 73 65 20 62 79 20 61 64 6A 75 73     to use by adjus
00B890:  74 69 6E 67 20 20 74 68 65 0D 0A 20 20 20 20 20    ting  the..     
00B8A0:  20 20 76 61 6C 75 65 73 20 20 69 6E 20 20 44 45      values  in  DE
00B8B0:  20 20 61 6E 64 20 20 48 4C 20 20 62 65 66 6F 72      and  HL  befor
00B8C0:  65 20 20 72 65 74 75 72 6E 69 6E 67 2E 20 20 4F    e  returning.  O
00B8D0:  6E 63 65 20 20 74 68 65 20 20 52 4F 4D 20 20 68    nce  the  ROM  h
00B8E0:  61 73 20 20 62 65 65 6E 0D 0A 20 20 20 20 20 20    as  been..      
00B8F0:  20 69 6E 69 74 69 61 6C 69 7A 65 64 20 74 68 65     initialized the
00B900:  20 4B 65 72 6E 65 6C 20 20 61 64 64 73 20 20 69     Kernel  adds  i
00B910:  74 20 20 74 6F 20 20 74 68 65 20 20 6C 69 73 74    t  to  the  list
00B920:  20 20 6F 66 20 20 65 78 74 65 72 6E 61 6C 20 20      of  external  
00B930:  63 6F 6D 6D 61 6E 64 0D 0A 20 20 20 20 20 20 20    command..       
00B940:  73 65 72 76 65 72 73 2C 20 61 6E 64 20 6E 6F 74    servers, and not
00B950:  65 73 20 74 68 65 20 62 61 73 65 20 6F 66 20 74    es the base of t
00B960:  68 65 20 61 72 65 61 20 77 68 69 63 68 20 74 68    he area which th
00B970:  65 20 52 4F 4D 20 68 61 73 20 61 6C 6C 6F 63 61    e ROM has alloca
00B980:  74 65 64 20 61 74 0D 0A 20 20 20 20 20 20 20 74    ted at..       t
00B990:  68 65 20 74 6F 70 20 6F 66 20 6D 65 6D 6F 72 79    he top of memory
00B9A0:  20 28 69 66 20 61 6E 79 29 2E 20 53 75 62 73 65     (if any). Subse
00B9B0:  71 75 65 6E 74 20 46 41 52 20 43 41 4C 4C 73 20    quent FAR CALLs 
00B9C0:  74 6F 20 65 6E 74 72 69 65 73 20 69 6E 20 74 68    to entries in th
00B9D0:  65 20 52 4F 4D 0D 0A 20 20 20 20 20 20 20 77 69    e ROM..       wi
00B9E0:  6C 6C 20 61 75 74 6F 6D 61 74 69 63 61 6C 6C 79    ll automatically
00B9F0:  20 73 65 74 20 74 68 65 20 49 59 20 69 6E 64 65     set the IY inde
00BA00:  78 20 72 65 67 69 73 74 65 72 20 20 74 6F 20 20    x register  to  
00BA10:  70 6F 69 6E 74 20 20 61 74 20 20 74 68 65 20 20    point  at  the  
00BA20:  52 4F 4D 73 0D 0A 20 20 20 20 20 20 20 75 70 70    ROMs..       upp
00BA30:  65 72 20 6D 65 6D 6F 72 79 20 61 72 65 61 2E 0D    er memory area..
00BA40:  0A 0D 0A 20 20 20 20 20 20 20 53 65 65 20 73 65    ...       See se
00BA50:  63 74 69 6F 6E 20 31 30 2E 34 20 66 6F 72 20 61    ction 10.4 for a
00BA60:  20 66 75 6C 6C 20 64 65 73 63 72 69 70 74 69 6F     full descriptio
00BA70:  6E 20 6F 66 20 62 61 63 6B 67 72 6F 75 6E 64 20    n of background 
00BA80:  52 4F 4D 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    ROMs.....       
00BA90:  52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A    Related entries:
00BAA0:  0D 0A 0D 0A 20 20 20 20 20 20 20 4B 4C 20 46 49    ....       KL FI
00BAB0:  4E 44 20 43 4F 4D 4D 41 4E 44 0D 0A 20 20 20 20    ND COMMAND..    
00BAC0:  20 20 20 4B 4C 20 49 4E 49 54 20 42 41 43 4B 0D       KL INIT BACK.
00BAD0:  0A 20 20 20 20 20 20 20 4B 4C 20 4C 4F 47 20 45    .       KL LOG E
00BAE0:  58 54 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53    XT....       AMS
00BAF0:  54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F    TRAD CPC464/664/
00BB00:  36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20    6128 FIRMWARE   
00BB10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00BB20:  20 20 20 20 20 20 20 20 70 61 67 65 20 31 35 2E            page 15.
00BB30:  31 38 35 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    185.............
00BB40:  0A 20 20 20 20 20 20 20 31 35 34 3A 20 4B 4C 20    .       154: KL 
00BB50:  49 4E 49 54 20 42 41 43 4B 20 20 20 20 20 20 20    INIT BACK       
00BB60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00BB70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00BB80:  20 20 20 20 20 20 20 20 20 23 42 43 43 45 0D 0A             #BCCE..
00BB90:  0D 0A 20 20 20 20 20 20 20 49 6E 69 74 69 61 6C    ..       Initial
00BBA0:  69 7A 65 20 61 20 70 61 72 74 69 63 75 6C 61 72    ize a particular
00BBB0:  20 62 61 63 6B 67 72 6F 75 6E 64 20 52 4F 4D 2E     background ROM.
00BBC0:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F    ....       Actio
00BBD0:  6E 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 42 61 63    n:....       Bac
00BBE0:  6B 67 72 6F 75 6E 64 20 52 4F 4D 73 20 70 72 6F    kground ROMs pro
00BBF0:  76 69 64 65 20 73 75 70 70 6F 72 74 20 66 6F 72    vide support for
00BC00:  20 65 78 70 61 6E 73 69 6F 6E 20 68 61 72 64 77     expansion hardw
00BC10:  61 72 65 20 6F 72 20 61 75 67 6D 65 6E 74 20 20    are or augment  
00BC20:  74 68 65 0D 0A 20 20 20 20 20 20 20 73 6F 66 74    the..       soft
00BC30:  77 61 72 65 20 66 61 63 69 6C 69 74 69 65 73 20    ware facilities 
00BC40:  6F 66 20 74 68 65 20 6D 61 63 68 69 6E 65 2E 20    of the machine. 
00BC50:  49 66 20 74 68 65 20 66 61 63 69 6C 69 74 69 65    If the facilitie
00BC60:  73 20 70 72 6F 76 69 64 65 64 20 62 79 20 20 74    s provided by  t
00BC70:  68 65 0D 0A 20 20 20 20 20 20 20 62 61 63 6B 67    he..       backg
00BC80:  72 6F 75 6E 64 20 52 4F 4D 73 20 61 72 65 20 20    round ROMs are  
00BC90:  74 6F 20 20 62 65 20 20 61 76 61 69 6C 61 62 6C    to  be  availabl
00BCA0:  65 20 20 74 68 65 20 20 66 6F 72 65 67 72 6F 75    e  the  foregrou
00BCB0:  6E 64 20 20 70 72 6F 67 72 61 6D 20 20 6D 75 73    nd  program  mus
00BCC0:  74 0D 0A 20 20 20 20 20 20 20 69 6E 69 74 69 61    t..       initia
00BCD0:  6C 69 7A 65 20 74 68 65 6D 2E 20 54 68 69 73 20    lize them. This 
00BCE0:  72 6F 75 74 69 6E 65 20 73 65 6C 65 63 74 73 20    routine selects 
00BCF0:  20 61 6E 64 20 20 69 6E 69 74 69 61 6C 69 7A 65     and  initialize
00BD00:  73 20 20 61 20 20 70 61 72 74 69 63 75 6C 61 72    s  a  particular
00BD10:  0D 0A 20 20 20 20 20 20 20 62 61 63 6B 67 72 6F    ..       backgro
00BD20:  75 6E 64 20 52 4F 4D 2E 0D 0A 0D 0A 20 20 20 20    und ROM.....    
00BD30:  20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69       Entry conditi
00BD40:  6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 43    ons:....       C
00BD50:  20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 52 4F     contains the RO
00BD60:  4D 20 73 65 6C 65 63 74 20 61 64 64 72 65 73 73    M select address
00BD70:  20 6F 66 20 74 68 65 20 52 4F 4D 20 74 6F 20 69     of the ROM to i
00BD80:  6E 69 74 69 61 6C 69 7A 65 2E 0D 0A 20 20 20 20    nitialize...    
00BD90:  20 20 20 44 45 20 63 6F 6E 74 61 69 6E 73 20 61       DE contains a
00BDA0:  64 64 72 65 73 73 20 20 6F 66 20 20 74 68 65 20    ddress  of  the 
00BDB0:  20 66 69 72 73 74 20 20 75 73 61 62 6C 65 20 20     first  usable  
00BDC0:  62 79 74 65 20 20 6F 66 20 20 6D 65 6D 6F 72 79    byte  of  memory
00BDD0:  20 20 28 6C 6F 77 65 73 74 0D 0A 20 20 20 20 20      (lowest..     
00BDE0:  20 20 61 64 64 72 65 73 73 29 2E 0D 0A 20 20 20      address)...   
00BDF0:  20 20 20 20 48 4C 20 63 6F 6E 74 61 69 6E 73 20        HL contains 
00BE00:  61 64 64 72 65 73 73 20 20 6F 66 20 20 74 68 65    address  of  the
00BE10:  20 20 6C 61 73 74 20 20 75 73 61 62 6C 65 20 20      last  usable  
00BE20:  62 79 74 65 20 20 6F 66 20 20 6D 65 6D 6F 72 79    byte  of  memory
00BE30:  20 20 28 68 69 67 68 65 73 74 0D 0A 20 20 20 20      (highest..    
00BE40:  20 20 20 61 64 64 72 65 73 73 29 2E 0D 0A 0D 0A       address).....
00BE50:  0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F    ..       Exit co
00BE60:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20    nditions:....   
00BE70:  20 20 20 20 44 45 20 63 6F 6E 74 61 69 6E 73 20        DE contains 
00BE80:  74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20 74    the address of t
00BE90:  68 65 20 6E 65 77 20 66 69 72 73 74 20 75 73 61    he new first usa
00BEA0:  62 6C 65 20 62 79 74 65 20 6F 66 20 6D 65 6D 6F    ble byte of memo
00BEB0:  72 79 2E 0D 0A 20 20 20 20 20 20 20 48 4C 20 63    ry...       HL c
00BEC0:  6F 6E 74 61 69 6E 73 20 74 68 65 20 61 64 64 72    ontains the addr
00BED0:  65 73 73 20 6F 66 20 74 68 65 20 6E 65 77 20 6C    ess of the new l
00BEE0:  61 73 74 20 75 73 61 62 6C 65 20 62 79 74 65 20    ast usable byte 
00BEF0:  6F 66 20 6D 65 6D 6F 72 79 2E 0D 0A 0D 0A 20 20    of memory.....  
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:  20 20 20 20 20 41 46 20 61 6E 64 20 42 20 63 6F         AF and B co
00C010:  72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20 20 41    rrupt...       A
00C020:  6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73 74 65    ll other registe
00C030:  72 73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D    rs preserved....
00C040:  0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A    .       Notes:..
00C050:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 52 4F 4D    ..       The ROM
00C060:  20 73 65 6C 65 63 74 20 61 64 64 72 65 73 73 20     select address 
00C070:  6D 75 73 74 20 62 65 20 69 6E 20 74 68 65 20 72    must be in the r
00C080:  61 6E 67 65 20 31 2E 2E 37 20 69 6E 20 56 31 2E    ange 1..7 in V1.
00C090:  30 20 61 6E 64 20 30 2E 2E 31 35 20 20 69 6E 0D    0 and 0..15  in.
00C0A0:  0A 20 20 20 20 20 20 20 56 31 2E 31 20 66 69 72    .       V1.1 fir
00C0B0:  6D 77 61 72 65 20 61 6E 64 20 74 68 65 20 52 4F    mware and the RO
00C0C0:  4D 20 61 74 20 74 68 69 73 20 61 64 64 72 65 73    M at this addres
00C0D0:  73 20 6D 75 73 74 20 62 65 20 61 20 62 61 63 6B    s must be a back
00C0E0:  67 72 6F 75 6E 64 20 52 4F 4D 20 20 6F 72 0D 0A    ground ROM  or..
00C0F0:  20 20 20 20 20 20 20 74 68 65 20 72 65 71 75 65           the reque
00C100:  73 74 20 77 69 6C 6C 20 62 65 20 69 67 6E 6F 72    st will be ignor
00C110:  65 64 2E 20 49 6E 20 56 31 2E 31 20 20 66 69 72    ed. In V1.1  fir
00C120:  6D 77 61 72 65 20 20 74 68 65 20 20 72 65 71 75    mware  the  requ
00C130:  65 73 74 20 20 77 69 6C 6C 20 20 62 65 0D 0A 20    est  will  be.. 
00C140:  20 20 20 20 20 20 69 67 6E 6F 72 65 64 20 69 66          ignored if
00C150:  20 74 68 65 20 52 4F 4D 20 69 73 20 74 68 65 20     the ROM is the 
00C160:  63 75 72 72 65 6E 74 20 66 6F 72 65 67 72 6F 75    current foregrou
00C170:  6E 64 20 52 4F 4D 2E 0D 0A 0D 0A 20 20 20 20 20    nd ROM.....     
00C180:  20 20 57 68 65 6E 20 74 68 65 20 66 6F 72 65 67      When the foreg
00C190:  72 6F 75 6E 64 20 70 72 6F 67 72 61 6D 20 69 73    round program is
00C1A0:  20 65 6E 74 65 72 65 64 20 69 74 20 69 73 20 70     entered it is p
00C1B0:  61 73 73 65 64 20 74 68 65 20 20 61 64 64 72 65    assed the  addre
00C1C0:  73 73 65 73 20 20 6F 66 0D 0A 20 20 20 20 20 20    sses  of..      
00C1D0:  20 74 68 65 20 66 69 72 73 74 20 61 6E 64 20 6C     the first and l
00C1E0:  61 73 74 20 62 79 74 65 73 20 69 6E 20 6D 65 6D    ast bytes in mem
00C1F0:  6F 72 79 20 77 68 69 63 68 20 20 69 74 20 20 6D    ory which  it  m
00C200:  61 79 20 20 75 73 65 2E 20 20 54 68 65 20 20 61    ay  use.  The  a
00C210:  72 65 61 20 20 6F 66 0D 0A 20 20 20 20 20 20 20    rea  of..       
00C220:  6D 65 6D 6F 72 79 20 6F 75 74 73 69 64 65 20 74    memory outside t
00C230:  68 69 73 20 69 73 20 75 73 65 64 20 74 6F 20 73    his is used to s
00C240:  74 6F 72 65 20 66 69 72 6D 77 61 72 65 20 20 76    tore firmware  v
00C250:  61 72 69 61 62 6C 65 73 2C 20 20 74 68 65 20 20    ariables,  the  
00C260:  73 74 61 63 6B 2C 0D 0A 20 20 20 20 20 20 20 74    stack,..       t
00C270:  68 65 20 6A 75 6D 70 62 6C 6F 63 6B 73 20 61 6E    he jumpblocks an
00C280:  64 20 74 68 65 20 73 63 72 65 65 6E 20 6D 65 6D    d the screen mem
00C290:  6F 72 79 2E 20 46 72 6F 6D 20 74 68 65 20 61 72    ory. From the ar
00C2A0:  65 61 20 61 76 61 69 6C 61 62 6C 65 20 66 6F 72    ea available for
00C2B0:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 66 6F      the..       fo
00C2C0:  72 65 67 72 6F 75 6E 64 20 70 72 6F 67 72 61 6D    reground program
00C2D0:  20 74 6F 20 75 73 65 2C 20 74 68 65 20 61 72 65     to use, the are
00C2E0:  61 73 20 66 6F 72 20 62 61 63 6B 67 72 6F 75 6E    as for backgroun
00C2F0:  64 20 20 70 72 6F 67 72 61 6D 73 20 20 74 6F 20    d  programs  to 
00C300:  20 75 73 65 0D 0A 20 20 20 20 20 20 20 6D 75 73     use..       mus
00C310:  74 20 62 65 20 61 6C 6C 6F 63 61 74 65 64 2E 0D    t be allocated..
00C320:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 66 6F    ...       The fo
00C330:  72 65 67 72 6F 75 6E 64 20 70 72 6F 67 72 61 6D    reground program
00C340:  20 73 68 6F 75 6C 64 20 69 6E 69 74 69 61 6C 69     should initiali
00C350:  7A 65 20 62 61 63 6B 67 72 6F 75 6E 64 20 52 4F    ze background RO
00C360:  4D 73 20 61 74 20 20 61 6E 20 20 65 61 72 6C 79    Ms at  an  early
00C370:  0D 0A 20 20 20 20 20 20 20 73 74 61 67 65 2C 20    ..       stage, 
00C380:  62 65 66 6F 72 65 20 69 74 20 75 73 65 73 20 74    before it uses t
00C390:  68 65 20 6D 65 6D 6F 72 79 20 69 74 20 69 73 20    he memory it is 
00C3A0:  67 69 76 65 6E 2E 20 49 74 20 6D 61 79 20 63 68    given. It may ch
00C3B0:  6F 6F 73 65 20 77 68 65 74 68 65 72 20 74 6F 0D    oose whether to.
00C3C0:  0A 20 20 20 20 20 20 20 65 6E 61 62 6C 65 20 62    .       enable b
00C3D0:  61 63 6B 67 72 6F 75 6E 64 20 52 4F 4D 73 20 6F    ackground ROMs o
00C3E0:  72 20 6E 6F 74 2E 20 4B 4C 20 52 4F 4D 20 57 41    r not. KL ROM WA
00C3F0:  4C 4B 20 6D 61 79 20 62 65 20 75 73 65 64 20 20    LK may be used  
00C400:  74 6F 20 20 69 6E 69 74 69 61 6C 69 7A 65 0D 0A    to  initialize..
00C410:  20 20 20 20 20 20 20 61 6C 6C 20 20 61 76 61 69           all  avai
00C420:  6C 61 62 6C 65 20 20 52 4F 4D 73 20 20 6F 72 20    lable  ROMs  or 
00C430:  20 74 68 69 73 20 20 72 6F 75 74 69 6E 65 20 20     this  routine  
00C440:  6D 61 79 20 20 62 65 20 20 75 73 65 64 20 20 74    may  be  used  t
00C450:  6F 20 20 69 6E 69 74 69 61 6C 69 7A 65 0D 0A 20    o  initialize.. 
00C460:  20 20 20 20 20 20 70 61 72 74 69 63 75 6C 61 72          particular
00C470:  20 52 4F 4D 73 2E 0D 0A 0D 0A 20 20 20 20 20 20     ROMs.....      
00C480:  20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 63 61     This routine ca
00C490:  75 73 65 73 20 74 68 65 20 62 61 63 6B 67 72 6F    uses the backgro
00C4A0:  75 6E 64 20 52 4F 4D 27 73 20 70 6F 77 65 72 2D    und ROM's power-
00C4B0:  75 70 20 69 6E 69 74 69 61 6C 69 7A 61 74 69 6F    up initializatio
00C4C0:  6E 20 65 6E 74 72 79 0D 0A 20 20 20 20 20 20 20    n entry..       
00C4D0:  74 6F 20 62 65 20 63 61 6C 6C 65 64 2E 20 54 68    to be called. Th
00C4E0:  69 73 20 65 6E 74 72 79 20 6D 61 79 20 61 6C 6C    is entry may all
00C4F0:  6F 63 61 74 65 20 73 6F 6D 65 20 6D 65 6D 6F 72    ocate some memor
00C500:  79 20 66 6F 72 20 20 74 68 65 20 20 62 61 63 6B    y for  the  back
00C510:  67 72 6F 75 6E 64 0D 0A 20 20 20 20 20 20 20 52    ground..       R
00C520:  4F 4D 27 73 20 75 73 65 20 62 79 20 61 64 6A 75    OM's use by adju
00C530:  73 74 69 6E 67 20 74 68 65 20 76 61 6C 75 65 73    sting the values
00C540:  20 69 6E 20 44 45 20 61 6E 64 20 48 4C 20 62 65     in DE and HL be
00C550:  66 6F 72 65 20 72 65 74 75 72 6E 69 6E 67 2E 20    fore returning. 
00C560:  20 4F 6E 63 65 0D 0A 20 20 20 20 20 20 20 74 68     Once..       th
00C570:  65 20 52 4F 4D 20 68 61 73 20 62 65 65 6E 20 69    e ROM has been i
00C580:  6E 69 74 69 61 6C 69 7A 65 64 20 20 74 68 65 20    nitialized  the 
00C590:  20 4B 65 72 6E 65 6C 20 20 61 64 64 73 20 20 69     Kernel  adds  i
00C5A0:  74 20 20 74 6F 20 20 74 68 65 20 20 6C 69 73 74    t  to  the  list
00C5B0:  20 20 6F 66 0D 0A 20 20 20 20 20 20 20 65 78 74      of..       ext
00C5C0:  65 72 6E 61 6C 20 63 6F 6D 6D 61 6E 64 20 73 65    ernal command se
00C5D0:  72 76 65 72 73 2C 20 61 6E 64 20 6E 6F 74 65 73    rvers, and notes
00C5E0:  20 74 68 65 20 62 61 73 65 20 6F 66 20 74 68 65     the base of the
00C5F0:  20 61 72 65 61 20 77 68 69 63 68 20 74 68 65 20     area which the 
00C600:  52 4F 4D 0D 0A 20 20 20 20 20 20 20 68 61 73 20    ROM..       has 
00C610:  61 6C 6C 6F 63 61 74 65 64 20 74 6F 20 69 74 73    allocated to its
00C620:  65 6C 66 20 61 74 20 74 68 65 20 74 6F 70 20 6F    elf at the top o
00C630:  66 20 6D 65 6D 6F 72 79 20 28 69 66 20 61 6E 79    f memory (if any
00C640:  29 2E 20 53 75 62 73 65 71 75 65 6E 74 20 20 46    ). Subsequent  F
00C650:  41 52 0D 0A 20 20 20 20 20 20 20 43 41 4C 4C 73    AR..       CALLs
00C660:  20 74 6F 20 65 6E 74 72 69 65 73 20 69 6E 20 74     to entries in t
00C670:  68 65 20 20 52 4F 4D 20 20 77 69 6C 6C 20 20 61    he  ROM  will  a
00C680:  75 74 6F 6D 61 74 69 63 61 6C 6C 79 20 20 73 65    utomatically  se
00C690:  74 20 20 74 68 65 20 20 49 59 20 20 69 6E 64 65    t  the  IY  inde
00C6A0:  78 0D 0A 20 20 20 20 20 20 20 72 65 67 69 73 74    x..       regist
00C6B0:  65 72 20 74 6F 20 70 6F 69 6E 74 20 61 74 20 74    er to point at t
00C6C0:  68 65 20 52 4F 4D 27 73 20 75 70 70 65 72 20 6D    he ROM's upper m
00C6D0:  65 6D 6F 72 79 20 61 72 65 61 2E 0D 0A 0D 0A 0D    emory area......
00C6E0:  0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20    .       AMSTRAD 
00C6F0:  43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20    CPC464/664/6128 
00C700:  46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20    FIRMWARE        
00C710:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C720:  20 20 20 70 61 67 65 20 31 35 2E 31 38 36 0D 0A       page 15.186..
00C730:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
00C740:  20 20 20 53 65 65 20 73 65 63 74 69 6F 6E 20 31       See section 1
00C750:  30 2E 34 20 66 6F 72 20 61 20 66 75 6C 6C 20 64    0.4 for a full d
00C760:  65 73 63 72 69 70 74 69 6F 6E 20 6F 66 20 62 61    escription of ba
00C770:  63 6B 67 72 6F 75 6E 64 20 52 4F 4D 73 2E 0D 0A    ckground ROMs...
00C780:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C    ......       Rel
00C790:  61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D    ated entries:...
00C7A0:  0A 0D 0A 20 20 20 20 20 20 20 4B 4C 20 46 49 4E    ...       KL FIN
00C7B0:  44 20 43 4F 4D 4D 41 4E 44 0D 0A 20 20 20 20 20    D COMMAND..     
00C7C0:  20 20 4B 4C 20 4C 4F 47 20 45 58 54 0D 0A 20 20      KL LOG EXT..  
00C7D0:  20 20 20 20 20 4B 4C 20 52 4F 4D 20 57 41 4C 4B         KL ROM WALK
00C7E0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
00C7F0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
00C800:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
00C810:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
00C820:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
00C830:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
00C840:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52    ....       AMSTR
00C850:  41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31    AD CPC464/664/61
00C860:  32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20    28 FIRMWARE     
00C870:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C880:  20 20 20 20 20 20 70 61 67 65 20 31 35 2E 31 38          page 15.18
00C890:  37 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    7.............. 
00C8A0:  20 20 20 20 20 20 31 35 35 3A 20 4B 4C 20 4C 4F          155: KL LO
00C8B0:  47 20 45 58 54 20 20 20 20 20 20 20 20 20 20 20    G EXT           
00C8C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C8D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00C8E0:  20 20 20 20 20 20 20 23 42 43 44 31 0D 0A 0D 0A           #BCD1....
00C8F0:  0D 0A 20 20 20 20 20 20 20 49 6E 74 72 6F 64 75    ..       Introdu
00C900:  63 65 20 61 6E 20 52 53 58 20 74 6F 20 74 68 65    ce an RSX to the
00C910:  20 66 69 72 6D 77 61 72 65 2E 0D 0A 0D 0A 0D 0A     firmware.......
00C920:  20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A           Action:..
00C930:  0D 0A 0D 0A 20 20 20 20 20 20 20 52 53 58 73 20    ....       RSXs 
00C940:  28 52 65 73 69 64 65 6E 74 20 53 79 73 74 65 6D    (Resident System
00C950:  20 45 78 74 65 6E 73 69 6F 6E 73 29 20 61 72 65     Extensions) are
00C960:  20 73 69 6D 69 6C 61 72 20 74 6F 20 62 61 63 6B     similar to back
00C970:  67 72 6F 75 6E 64 20 52 4F 4D 73 2C 20 20 62 75    ground ROMs,  bu
00C980:  74 0D 0A 20 20 20 20 20 20 20 61 72 65 20 6C 6F    t..       are lo
00C990:  61 64 65 64 20 69 6E 74 6F 20 52 41 4D 2E 20 54    aded into RAM. T
00C9A0:  68 69 73 20 72 6F 75 74 69 6E 65 20 6D 75 73 74    his routine must
00C9B0:  20 62 65 20 63 61 6C 6C 65 64 20 74 6F 20 69 6E     be called to in
00C9C0:  63 6C 75 64 65 20 74 68 65 20 52 53 58 20 6F 6E    clude the RSX on
00C9D0:  0D 0A 20 20 20 20 20 20 20 74 68 65 20 4B 65 72    ..       the Ker
00C9E0:  6E 65 6C 27 73 20 6C 69 73 74 20 6F 66 20 65 78    nel's list of ex
00C9F0:  74 65 72 6E 61 6C 20 63 6F 6D 6D 61 6E 64 20 73    ternal command s
00CA00:  65 72 76 65 72 73 2E 0D 0A 0D 0A 0D 0A 20 20 20    ervers.......   
00CA10:  20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74        Entry condit
00CA20:  69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ions:......     
00CA30:  20 20 42 43 20 63 6F 6E 74 61 69 6E 73 20 74 68      BC contains th
00CA40:  65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65    e address of the
00CA50:  20 52 53 58 27 73 20 63 6F 6D 6D 61 6E 64 20 74     RSX's command t
00CA60:  61 62 6C 65 2E 0D 0A 20 20 20 20 20 20 20 48 4C    able...       HL
00CA70:  20 63 6F 6E 74 61 69 6E 65 64 20 74 68 65 20 61     contained the a
00CA80:  64 64 72 65 73 73 20 6F 66 20 61 20 34 20 62 79    ddress of a 4 by
00CA90:  74 65 20 61 72 65 61 20 6F 66 20 52 41 4D 20 66    te area of RAM f
00CAA0:  6F 72 20 74 68 65 20 4B 65 72 6E 65 6C 27 73 20    or the Kernel's 
00CAB0:  75 73 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    use.......      
00CAC0:  20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73     Exit conditions
00CAD0:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 44 45    :......       DE
00CAE0:  20 63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20     corrupt...     
00CAF0:  20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69      All other regi
00CB00:  73 74 65 72 73 20 70 72 65 73 65 72 76 65 64 2E    sters preserved.
00CB10:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74    ......       Not
00CB20:  65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    es:......       
00CB30:  42 6F 74 68 20 74 68 65 20 52 53 58 27 73 20 63    Both the RSX's c
00CB40:  6F 6D 6D 61 6E 64 20 74 61 62 6C 65 20 61 6E 64    ommand table and
00CB50:  20 74 68 65 20 4B 65 72 6E 65 6C 27 73 20 73 74     the Kernel's st
00CB60:  6F 72 61 67 65 20 61 72 65 61 20 6D 75 73 74 20    orage area must 
00CB70:  6C 69 65 20 69 6E 0D 0A 20 20 20 20 20 20 20 74    lie in..       t
00CB80:  68 65 20 63 65 6E 74 72 61 6C 20 33 32 4B 20 6F    he central 32K o
00CB90:  66 20 6D 65 6D 6F 72 79 2C 20 69 2E 65 2E 20 6E    f memory, i.e. n
00CBA0:  6F 74 20 75 6E 64 65 72 20 61 20 52 4F 4D 2E 0D    ot under a ROM..
00CBB0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
00CBC0:  66 6F 72 6D 61 74 20 6F 66 20 20 63 6F 6D 6D 61    format of  comma
00CBD0:  6E 64 20 74 61 62 6C 65 20 69 73 20 64 65 73 63    nd table is desc
00CBE0:  72 69 62 65 64 20 69 6E 20 73 65 63 74 69 6F 6E    ribed in section
00CBF0:  20 31 30 2E 32 20 61 6E 64 20 52 53 58 73 20 61     10.2 and RSXs a
00CC00:  72 65 0D 0A 20 20 20 20 20 20 20 64 69 73 63 75    re..       discu
00CC10:  73 73 65 64 20 69 6E 20 73 65 63 74 69 6F 6E 20    ssed in section 
00CC20:  31 30 2E 35 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    10.5.........   
00CC30:  20 20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72        Related entr
00CC40:  69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ies:......      
00CC50:  20 4B 4C 20 46 49 4E 44 20 43 4F 4D 4D 41 4E 44     KL FIND COMMAND
00CC60:  0D 0A 20 20 20 20 20 20 20 4B 4C 20 49 4E 49 54    ..       KL INIT
00CC70:  20 42 41 43 4B 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D     BACK...........
00CC80:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
00CC90:  0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41    ...       AMSTRA
00CCA0:  44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32    D CPC464/664/612
00CCB0:  38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20    8 FIRMWARE      
00CCC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00CCD0:  20 20 20 20 20 70 61 67 65 20 31 35 2E 31 38 38         page 15.188
00CCE0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ..............  
00CCF0:  20 20 20 20 20 31 35 36 3A 20 4B 4C 20 46 49 4E         156: KL FIN
00CD00:  44 20 43 4F 4D 4D 41 4E 44 20 20 20 20 20 20 20    D COMMAND       
00CD10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00CD20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00CD30:  20 20 20 20 20 20 23 42 43 44 34 0D 0A 0D 0A 0D          #BCD4.....
00CD40:  0A 20 20 20 20 20 20 20 53 65 61 72 63 68 20 66    .       Search f
00CD50:  6F 72 20 61 6E 20 52 53 58 2C 20 62 61 63 6B 67    or an RSX, backg
00CD60:  72 6F 75 6E 64 20 52 4F 4D 20 20 6F 72 20 20 66    round ROM  or  f
00CD70:  6F 72 65 67 72 6F 75 6E 64 20 20 52 4F 4D 20 20    oreground  ROM  
00CD80:  74 6F 20 20 70 72 6F 63 65 73 73 20 20 61 0D 0A    to  process  a..
00CD90:  20 20 20 20 20 20 20 63 6F 6D 6D 61 6E 64 2E 0D           command..
00CDA0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69    .....       Acti
00CDB0:  6F 6E 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 6C    on:....       Al
00CDC0:  6C 20 65 78 70 61 6E 73 69 6F 6E 20 52 4F 4D 73    l expansion ROMs
00CDD0:  20 61 6E 64 20 52 53 58 73 20 68 61 76 65 20 63     and RSXs have c
00CDE0:  6F 6D 6D 61 6E 64 20 74 61 62 6C 65 73 20 6F 66    ommand tables of
00CDF0:  20 74 68 65 20 73 61 6D 65 20 66 6F 72 6D 2E 20     the same form. 
00CE00:  54 68 69 73 0D 0A 20 20 20 20 20 20 20 72 6F 75    This..       rou
00CE10:  74 69 6E 65 20 73 65 61 72 63 68 65 73 20 61 6C    tine searches al
00CE20:  6C 20 52 53 58 73 20 61 6E 64 20 62 61 63 6B 67    l RSXs and backg
00CE30:  72 6F 75 6E 64 20 52 4F 4D 73 20 6F 6E 20 74 68    round ROMs on th
00CE40:  65 20 4B 65 72 6E 65 6C 27 73 20 6C 69 73 74 20    e Kernel's list 
00CE50:  20 6F 66 0D 0A 20 20 20 20 20 20 20 65 78 74 65     of..       exte
00CE60:  72 6E 61 6C 20 63 6F 6D 6D 61 6E 64 20 73 65 72    rnal command ser
00CE70:  76 65 72 73 20 6C 6F 6F 6B 69 6E 67 20 66 6F 72    vers looking for
00CE80:  20 61 20 6D 61 74 63 68 20 20 66 6F 72 20 20 74     a match  for  t
00CE90:  68 65 20 20 67 69 76 65 6E 20 20 63 6F 6D 6D 61    he  given  comma
00CEA0:  6E 64 0D 0A 20 20 20 20 20 20 20 6E 61 6D 65 2E    nd..       name.
00CEB0:  20 49 66 20 74 68 65 20 6E 61 6D 65 20 69 73 20     If the name is 
00CEC0:  66 6F 75 6E 64 2C 20 74 68 65 6E 20 74 68 65 20    found, then the 
00CED0:  27 66 61 72 20 61 64 64 72 65 73 73 27 20 6F 66    'far address' of
00CEE0:  20 20 74 68 65 20 20 61 73 73 6F 63 69 61 74 65      the  associate
00CEF0:  64 0D 0A 20 20 20 20 20 20 20 72 6F 75 74 69 6E    d..       routin
00CF00:  65 20 69 73 20 72 65 74 75 72 6E 65 64 2E 20 49    e is returned. I
00CF10:  66 20 74 68 65 20 63 6F 6D 6D 61 6E 64 20 69 73    f the command is
00CF20:  20 6E 6F 74 20 61 20 62 61 63 6B 67 72 6F 75 6E     not a backgroun
00CF30:  64 20 6F 72 20 52 53 58 20 63 6F 6D 6D 61 6E 64    d or RSX command
00CF40:  0D 0A 20 20 20 20 20 20 20 74 68 65 6E 20 61 6C    ..       then al
00CF50:  6C 20 74 68 65 20 66 6F 72 65 67 72 6F 75 6E 64    l the foreground
00CF60:  20 52 4F 4D 73 20 74 68 61 74 20 63 61 6E 20 62     ROMs that can b
00CF70:  65 20 20 66 6F 75 6E 64 20 20 61 72 65 20 20 73    e  found  are  s
00CF80:  65 61 72 63 68 65 64 20 20 66 6F 72 20 20 61 0D    earched  for  a.
00CF90:  0A 20 20 20 20 20 20 20 66 6F 72 65 67 72 6F 75    .       foregrou
00CFA0:  6E 64 20 70 72 6F 67 72 61 6D 20 77 69 74 68 20    nd program with 
00CFB0:  74 68 65 20 67 69 76 65 6E 20 6E 61 6D 65 2E 20    the given name. 
00CFC0:  49 66 20 20 61 20 20 66 6F 72 65 67 72 6F 75 6E    If  a  foregroun
00CFD0:  64 20 20 70 72 6F 67 72 61 6D 20 20 69 73 0D 0A    d  program  is..
00CFE0:  20 20 20 20 20 20 20 66 6F 75 6E 64 20 74 68 65           found the
00CFF0:  6E 20 74 68 65 20 73 79 73 74 65 6D 20 69 6D 6D    n the system imm
00D000:  65 64 69 61 74 65 6C 79 20 65 6E 74 65 72 73 20    ediately enters 
00D010:  69 74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E    it.....       En
00D020:  74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D    try conditions:.
00D030:  0A 0D 0A 20 20 20 20 20 20 20 48 4C 20 63 6F 6E    ...       HL con
00D040:  74 61 69 6E 73 20 74 68 65 20 61 64 64 72 65 73    tains the addres
00D050:  73 20 6F 66 20 74 68 65 20 63 6F 6D 6D 61 6E 64    s of the command
00D060:  20 6E 61 6D 65 20 74 6F 20 73 65 61 72 63 68 20     name to search 
00D070:  66 6F 72 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45    for.....       E
00D080:  78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D    xit conditions:.
00D090:  0A 0D 0A 20 20 20 20 20 20 20 49 66 20 61 6E 20    ...       If an 
00D0A0:  52 53 58 20 6F 72 20 62 61 63 6B 67 72 6F 75 6E    RSX or backgroun
00D0B0:  64 20 52 4F 4D 20 63 6F 6D 6D 61 6E 64 20 77 61    d ROM command wa
00D0C0:  73 20 66 6F 75 6E 64 3A 0D 0A 0D 0A 0D 0A 20 20    s found:......  
00D0D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 61                  Ca
00D0E0:  72 72 79 20 74 72 75 65 2E 0D 0A 20 20 20 20 20    rry true...     
00D0F0:  20 20 20 20 20 20 20 20 20 20 20 43 20 63 6F 6E               C con
00D100:  74 61 69 6E 73 20 74 68 65 20 52 4F 4D 20 73 65    tains the ROM se
00D110:  6C 65 63 74 20 61 64 64 72 65 73 73 2E 0D 0A 20    lect address... 
00D120:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48                   H
00D130:  4C 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 61    L contains the a
00D140:  64 64 72 65 73 73 20 6F 66 20 74 68 65 20 72 6F    ddress of the ro
00D150:  75 74 69 6E 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    utine.......    
00D160:  20 20 20 49 66 20 74 68 65 20 63 6F 6D 6D 61 6E       If the comman
00D170:  64 20 77 61 73 20 6E 6F 74 20 66 6F 75 6E 64 3A    d was not found:
00D180:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    ......          
00D190:  20 20 20 20 20 20 43 61 72 72 79 20 66 61 6C 73          Carry fals
00D1A0:  65 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    e...            
00D1B0:  20 20 20 20 43 20 61 6E 64 20 48 4C 20 63 6F 72        C and HL cor
00D1C0:  72 75 70 74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    rupt.....       
00D1D0:  41 6C 77 61 79 73 0D 0A 0D 0A 0D 0A 20 20 20 20    Always......    
00D1E0:  20 20 20 20 20 20 20 20 20 20 20 20 41 2C 20 42                A, B
00D1F0:  20 61 6E 64 20 44 45 20 63 6F 72 72 75 70 74 2E     and DE corrupt.
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:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
00D310:  20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69      All other regi
00D320:  73 74 65 72 73 20 70 72 65 73 65 72 76 65 64 2E    sters preserved.
00D330:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74    ......       Not
00D340:  65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    es:......       
00D350:  54 68 65 20 63 6F 6D 6D 61 6E 64 20 6E 61 6D 65    The command name
00D360:  20 70 61 73 73 65 64 20 6D 75 73 74 20 62 65 20     passed must be 
00D370:  69 6E 20 52 41 4D 20 62 75 74 20 6D 61 79 20 6C    in RAM but may l
00D380:  69 65 20 75 6E 64 65 72 6E 65 61 74 68 20 20 61    ie underneath  a
00D390:  20 20 52 4F 4D 2E 0D 0A 20 20 20 20 20 20 20 54      ROM...       T
00D3A0:  68 65 20 6E 61 6D 65 20 6D 61 79 20 62 65 20 61    he name may be a
00D3B0:  6E 79 20 6E 75 6D 62 65 72 20 6F 66 20 63 68 61    ny number of cha
00D3C0:  72 61 63 74 65 72 73 20 6C 6F 6E 67 20 62 75 74    racters long but
00D3D0:  20 6F 6E 6C 79 20 20 74 68 65 20 20 66 69 72 73     only  the  firs
00D3E0:  74 20 20 31 36 0D 0A 20 20 20 20 20 20 20 63 68    t  16..       ch
00D3F0:  61 72 61 63 74 65 72 73 20 61 72 65 20 73 69 67    aracters are sig
00D400:  6E 69 66 69 63 61 6E 74 2E 20 41 6C 6C 20 20 61    nificant. All  a
00D410:  6C 70 68 61 62 65 74 69 63 20 20 63 68 61 72 61    lphabetic  chara
00D420:  63 74 65 72 73 20 20 69 6E 20 20 74 68 65 20 20    cters  in  the  
00D430:  6E 61 6D 65 0D 0A 20 20 20 20 20 20 20 73 68 6F    name..       sho
00D440:  75 6C 64 20 62 65 20 69 6E 20 75 70 70 65 72 20    uld be in upper 
00D450:  63 61 73 65 20 61 6E 64 20 74 68 65 20 6C 61 73    case and the las
00D460:  74 20 63 68 61 72 61 63 74 65 72 20 6F 66 20 74    t character of t
00D470:  68 65 20 6E 61 6D 65 20 73 68 6F 75 6C 64 20 68    he name should h
00D480:  61 76 65 0D 0A 20 20 20 20 20 20 20 62 69 74 20    ave..       bit 
00D490:  37 20 73 65 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    7 set.......    
00D4A0:  20 20 20 54 68 65 20 52 4F 4D 20 73 65 6C 65 63       The ROM selec
00D4B0:  74 20 61 6E 64 20 72 6F 75 74 69 6E 65 20 61 64    t and routine ad
00D4C0:  64 72 65 73 73 65 73 20 72 65 74 75 72 6E 65 64    dresses returned
00D4D0:  20 61 72 65 20 73 75 69 74 61 62 6C 65 20 66 6F     are suitable fo
00D4E0:  72 20 63 61 6C 6C 69 6E 67 0D 0A 20 20 20 20 20    r calling..     
00D4F0:  20 20 4B 4C 20 46 41 52 20 50 43 48 4C 2E 0D 0A      KL FAR PCHL...
00D500:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52    ....       AMSTR
00D510:  41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31    AD CPC464/664/61
00D520:  32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20    28 FIRMWARE     
00D530:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00D540:  20 20 20 20 20 20 70 61 67 65 20 31 35 2E 31 38          page 15.18
00D550:  39 0D 0A 1A 39 0D 0A 1A 20 20 20 20 20 20 20 20    9...9...        
00D560:  20 20 20 20 42 69 74 20 33 3A 20 20 20 20 52 65        Bit 3:    Re
00D570:  6E 64 65 7A 76 6F 75 73 20 77 69 74 68 20 63 68    ndezvous with ch
00D580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D5A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D5B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D5C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D5D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D5E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D5F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D6A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D6B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D6C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D6D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D6E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D6F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D900:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
00D910:  20 20 20 54 68 65 20 6C 69 73 74 20 6F 66 20 65       The list of e
00D920:  78 74 65 72 6E 61 6C 20 63 6F 6D 6D 61 6E 64 20    xternal command 
00D930:  73 65 72 76 65 72 73 20 69 73 20 67 65 6E 65 72    servers is gener
00D940:  61 74 65 64 20 61 73 20 20 62 61 63 6B 67 72 6F    ated as  backgro
00D950:  75 6E 64 20 20 52 4F 4D 73 0D 0A 20 20 20 20 20    und  ROMs..     
00D960:  20 20 61 6E 64 20 52 53 58 73 20 61 72 65 20 69      and RSXs are i
00D970:  6E 69 74 69 61 6C 69 7A 65 64 3A 69 7A 65 64 20    nitialized:ized 
00D980:  28 73 65 65 20 4B 4C 20 52 4F 4D 20 57 41 4C 4B    (see KL ROM WALK
00D990:  2C 20 4B 4C 20 49 4E 49 54 20 20 42 41 43 4B 20    , KL INIT  BACK 
00D9A0:  20 61 6E 64 20 20 4B 4C 0D 0A 20 20 20 20 20 20     and  KL..      
00D9B0:  20 4C 4F 47 20 45 58 54 29 2E 20 54 68 65 20 63     LOG EXT). The c
00D9C0:  6F 6D 6D 61 6E 64 20 74 61 62 6C 65 73 20 61 72    ommand tables ar
00D9D0:  65 20 73 63 61 6E 6E 65 64 20 69 6E 20 74 68 65    e scanned in the
00D9E0:  20 6F 70 70 6F 73 69 74 65 20 6F 72 64 65 72 20     opposite order 
00D9F0:  74 6F 20 74 68 61 74 0D 0A 20 20 20 20 20 20 20    to that..       
00DA00:  69 6E 20 77 68 69 63 68 20 74 68 65 20 63 6F 6D    in which the com
00DA10:  6D 61 6E 64 20 73 65 72 76 65 72 73 20 77 65 72    mand servers wer
00DA20:  65 20 69 6E 74 72 6F 64 75 63 65 64 2E 20 54 68    e introduced. Th
00DA30:  75 73 2C 20 52 53 58 73 20 77 69 6C 6C 20 74 65    us, RSXs will te
00DA40:  6E 64 20 20 74 6F 0D 0A 20 20 20 20 20 20 20 74    nd  to..       t
00DA50:  61 6B 65 20 70 72 65 63 65 64 65 6E 63 65 20 6F    ake precedence o
00DA60:  76 65 72 20 62 61 63 6B 67 72 6F 75 6E 64 20 52    ver background R
00DA70:  4F 4D 73 2C 20 73 69 6E 63 65 20 20 52 53 58 27    OMs, since  RSX'
00DA80:  73 20 20 61 72 65 2C 20 20 69 6E 20 20 67 65 6E    s  are,  in  gen
00DA90:  65 72 61 6C 2C 0D 0A 20 20 20 20 20 20 20 69 6E    eral,..       in
00DAA0:  69 74 69 61 6C 69 7A 65 64 20 20 61 66 74 65 72    itialized  after
00DAB0:  20 20 62 61 63 6B 67 72 6F 75 6E 64 20 20 52 4F      background  RO
00DAC0:  4D 73 2E 20 20 42 61 63 6B 67 72 6F 75 6E 64 20    Ms.  Background 
00DAD0:  20 52 4F 4D 73 20 20 61 72 65 20 20 6E 6F 72 6D     ROMs  are  norm
00DAE0:  61 6C 6C 79 0D 0A 20 20 20 20 20 20 20 69 6E 69    ally..       ini
00DAF0:  74 69 61 6C 69 7A 65 64 20 69 6E 20 20 72 65 76    tialized in  rev
00DB00:  65 72 73 65 20 20 6F 72 64 65 72 20 20 6F 66 20    erse  order  of 
00DB10:  20 52 4F 4D 20 20 73 65 6C 65 63 74 20 20 61 64     ROM  select  ad
00DB20:  64 72 65 73 73 65 73 2C 20 20 73 6F 20 20 6C 6F    dresses,  so  lo
00DB30:  77 65 72 0D 0A 20 20 20 20 20 20 20 6E 75 6D 62    wer..       numb
00DB40:  65 72 65 64 20 52 4F 4D 53 20 77 69 6C 6C 20 74    ered ROMS will t
00DB50:  61 6B 65 20 70 72 65 63 65 64 65 6E 63 65 20 6F    ake precedence o
00DB60:  76 65 72 20 68 69 67 68 65 72 2E 0D 0A 0D 0A 0D    ver higher......
00DB70:  0A 20 20 20 20 20 20 20 53 65 65 20 73 65 63 74    .       See sect
00DB80:  69 6F 6E 20 31 30 2E 32 20 66 6F 72 20 61 20 64    ion 10.2 for a d
00DB90:  65 73 63 72 69 70 74 69 6F 6E 20 6F 66 20 20 74    escription of  t
00DBA0:  68 65 20 20 66 6F 72 6D 61 74 20 20 6F 66 20 20    he  format  of  
00DBB0:  65 78 70 61 6E 73 69 6F 6E 20 20 52 4F 4D 0D 0A    expansion  ROM..
00DBC0:  20 20 20 20 20 20 20 63 6F 6D 6D 61 6E 64 20 74           command t
00DBD0:  61 62 6C 65 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    ables.......    
00DBE0:  20 20 20 54 68 65 20 66 69 72 73 74 20 65 6E 74       The first ent
00DBF0:  72 79 20 69 6E 20 61 20 62 61 63 6B 67 72 6F 75    ry in a backgrou
00DC00:  6E 64 20 52 4F 4D 27 73 20 20 63 6F 6D 6D 61 6E    nd ROM's  comman
00DC10:  64 20 20 6E 61 6D 65 20 20 74 61 62 6C 65 20 20    d  name  table  
00DC20:  28 74 68 65 20 20 6F 6E 65 0D 0A 20 20 20 20 20    (the  one..     
00DC30:  20 20 61 73 73 6F 63 69 61 74 65 64 20 77 69 74      associated wit
00DC40:  68 20 74 68 65 20 70 6F 77 65 72 2D 75 70 20 65    h the power-up e
00DC50:  6E 74 72 79 29 20 6D 61 79 20 62 65 20 75 73 65    ntry) may be use
00DC60:  64 20 61 73 20 74 68 65 20 52 4F 4D 27 73 20 6E    d as the ROM's n
00DC70:  61 6D 65 2E 20 20 4B 4C 0D 0A 20 20 20 20 20 20    ame.  KL..      
00DC80:  20 46 49 4E 44 20 43 4F 4D 4D 41 4E 44 20 6D 61     FIND COMMAND ma
00DC90:  79 20 62 65 20 75 73 65 64 2C 20 74 68 65 72 65    y be used, there
00DCA0:  66 6F 72 65 2C 20 74 6F 20 66 69 6E 64 20 6F 75    fore, to find ou
00DCB0:  74 20 77 68 65 74 68 65 72 20 61 20 20 70 61 72    t whether a  par
00DCC0:  74 69 63 75 6C 61 72 0D 0A 20 20 20 20 20 20 20    ticular..       
00DCD0:  62 61 63 6B 67 72 6F 75 6E 64 20 52 4F 4D 20 68    background ROM h
00DCE0:  61 73 20 62 65 65 6E 20 69 6E 69 74 69 61 6C 69    as been initiali
00DCF0:  7A 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    zed.......      
00DD00:  20 57 68 65 6E 20 73 65 61 72 63 68 69 6E 67 20     When searching 
00DD10:  66 6F 72 20 61 20 66 6F 72 65 67 72 6F 75 6E 64    for a foreground
00DD20:  20 70 72 6F 67 72 61 6D 2C 20 52 4F 4D 73 20 61     program, ROMs a
00DD30:  72 65 20 20 69 6E 73 70 65 63 74 65 64 20 20 73    re  inspected  s
00DD40:  74 61 72 74 69 6E 67 0D 0A 20 20 20 20 20 20 20    tarting..       
00DD50:  77 69 74 68 20 52 4F 4D 20 30 20 61 6E 64 20 77    with ROM 0 and w
00DD60:  6F 72 6B 69 6E 67 20 75 70 77 61 72 64 73 2E 20    orking upwards. 
00DD70:  20 54 68 65 20 20 73 65 61 72 63 68 20 20 63 65     The  search  ce
00DD80:  61 73 65 73 20 20 77 68 65 6E 20 20 74 68 65 20    ases  when  the 
00DD90:  20 66 69 72 73 74 0D 0A 20 20 20 20 20 20 20 75     first..       u
00DDA0:  6E 75 73 65 64 20 52 4F 4D 20 61 64 64 72 65 73    nused ROM addres
00DDB0:  73 20 67 72 65 61 74 65 72 20 74 68 61 6E 20 30    s greater than 0
00DDC0:  20 6F 6E 20 56 31 2E 30 20 66 69 72 6D 77 61 72     on V1.0 firmwar
00DDD0:  65 20 61 6E 64 20 67 72 65 61 74 65 72 20 74 68    e and greater th
00DDE0:  61 6E 20 31 35 0D 0A 20 20 20 20 20 20 20 6F 6E    an 15..       on
00DDF0:  20 56 31 2E 31 20 66 69 72 6D 77 61 72 65 20 69     V1.1 firmware i
00DE00:  73 20 66 6F 75 6E 64 2E 0D 0A 0D 0A 0D 0A 20 20    s found.......  
00DE10:  20 20 20 20 20 54 68 65 20 6F 6E 2D 62 6F 61 72         The on-boar
00DE20:  64 20 42 41 53 49 43 20 6D 61 79 20 62 65 20 65    d BASIC may be e
00DE30:  6E 74 65 72 65 64 20 62 79 20 73 65 61 72 63 68    ntered by search
00DE40:  69 6E 67 20 66 6F 72 20 20 61 6E 64 20 20 69 6E    ing for  and  in
00DE50:  76 6F 6B 69 6E 67 20 20 74 68 65 0D 0A 20 20 20    voking  the..   
00DE60:  20 20 20 20 63 6F 6D 6D 61 6E 64 20 27 42 41 53        command 'BAS
00DE70:  49 43 27 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    IC'.......      
00DE80:  20 49 66 20 20 61 20 20 66 6F 72 65 67 72 6F 75     If  a  foregrou
00DE90:  6E 64 20 20 52 4F 4D 20 20 63 6F 6D 6D 61 6E 64    nd  ROM  command
00DEA0:  20 20 69 73 20 20 20 66 6F 75 6E 64 20 20 20 74      is   found   t
00DEB0:  68 65 20 20 20 52 4F 4D 20 20 20 69 73 20 20 20    he   ROM   is   
00DEC0:  65 6E 74 65 72 65 64 0D 0A 20 20 20 20 20 20 20    entered..       
00DED0:  75 6E 63 6F 6E 64 69 74 69 6F 6E 61 6C 6C 79 20    unconditionally 
00DEE0:  74 68 69 73 20 72 6F 75 74 69 6E 65 20 6E 65 76    this routine nev
00DEF0:  65 72 20 72 65 74 75 72 6E 73 2E 0D 0A 0D 0A 0D    er returns......
00DF00:  0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74 65    ...       Relate
00DF10:  64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A    d entries:......
00DF20:  20 20 20 20 20 20 20 4B 4C 20 49 4E 49 54 20 42           KL INIT B
00DF30:  41 43 4B 0D 0A 20 20 20 20 20 20 20 4B 4C 20 4C    ACK..       KL L
00DF40:  4F 47 20 45 58 54 0D 0A 20 20 20 20 20 20 20 4B    OG EXT..       K
00DF50:  4C 20 52 4F 4D 20 57 41 4C 4B 0D 0A 20 20 20 20    L ROM WALK..    
00DF60:  20 20 20 4D 43 20 53 54 41 52 54 20 50 52 4F 47       MC START PROG
00DF70:  52 41 4D 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    RAM.............
00DF80:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
00DF90:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D    .......       AM
00DFA0:  53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34    STRAD CPC464/664
00DFB0:  2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20    /6128 FIRMWARE  
00DFC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00DFD0:  20 20 20 20 20 20 20 20 20 70 61 67 65 20 31 35             page 15
00DFE0:  2E 31 39 30 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    .190............
00DFF0:  0D 0A 20 20 20 20 20 20 20 31 35 37 3A 20 4B 4C    ..       157: KL
00E000:  20 4E 45 57 20 46 52 41 4D 45 20 46 4C 59 20 20     NEW FRAME FLY  
00E010:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00E020:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00E030:  20 20 20 20 20 20 20 20 20 20 23 42 43 44 37 0D              #BCD7.
00E040:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 6E 69 74    .....       Init
00E050:  69 61 6C 69 7A 65 20 61 6E 64 20 70 75 74 20 61    ialize and put a
00E060:  20 62 6C 6F 63 6B 20 6F 6E 74 6F 20 74 68 65 20     block onto the 
00E070:  66 72 61 6D 65 20 66 6C 79 62 61 63 6B 20 6C 69    frame flyback li
00E080:  73 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    st.......       
00E090:  41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20    Action:......   
00E0A0:  20 20 20 20 54 68 65 20 4B 65 72 6E 65 6C 20 6D        The Kernel m
00E0B0:  61 69 6E 74 61 69 6E 73 20 61 20 6C 69 73 74 20    aintains a list 
00E0C0:  6F 66 20 65 76 65 6E 74 73 20 74 6F 20 62 65 20    of events to be 
00E0D0:  20 6B 69 63 6B 65 64 20 20 65 61 63 68 20 20 74     kicked  each  t
00E0E0:  69 6D 65 20 20 66 72 61 6D 65 0D 0A 20 20 20 20    ime  frame..    
00E0F0:  20 20 20 66 6C 79 62 61 63 6B 20 6F 63 63 75 72       flyback occur
00E100:  73 2E 20 54 68 65 20 72 6F 75 74 69 6E 65 20 69    s. The routine i
00E110:  6E 69 74 69 61 6C 69 7A 65 73 20 61 20 62 6C 6F    nitializes a blo
00E120:  63 6B 20 61 6E 64 20 20 61 64 64 73 20 20 69 74    ck and  adds  it
00E130:  20 20 74 6F 20 20 74 68 65 0D 0A 20 20 20 20 20      to  the..     
00E140:  20 20 6C 69 73 74 2E 0D 0A 0D 0A 0D 0A 20 20 20      list.......   
00E150:  20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74        Entry condit
00E160:  69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ions:......     
00E170:  20 20 48 4C 20 63 6F 6E 74 61 69 6E 73 20 74 68      HL contains th
00E180:  65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65    e address of the
00E190:  20 66 72 61 6D 65 20 66 6C 79 62 61 63 6B 20 62     frame flyback b
00E1A0:  6C 6F 63 6B 2E 0D 0A 20 20 20 20 20 20 20 42 20    lock...       B 
00E1B0:  63 6F 6E 74 61 69 6E 73 20 74 68 65 20 65 76 65    contains the eve
00E1C0:  6E 74 20 63 6C 61 73 73 2E 0D 0A 20 20 20 20 20    nt class...     
00E1D0:  20 20 43 20 63 6F 6E 74 61 69 6E 73 20 74 68 65      C contains the
00E1E0:  20 52 4F 4D 20 73 65 6C 65 63 74 20 61 64 64 72     ROM select addr
00E1F0:  65 73 73 20 6F 66 20 74 68 65 20 65 76 65 6E 74    ess of the event
00E200:  20 72 6F 75 74 69 6E 65 2E 0D 0A 20 20 20 20 20     routine...     
00E210:  20 20 44 45 20 63 6F 6E 74 61 69 6E 73 20 74 68      DE contains th
00E220:  65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65    e address of the
00E230:  20 65 76 65 6E 74 20 72 6F 75 74 69 6E 65 2E 0D     event routine..
00E240:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74    .....       Exit
00E250:  20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A     conditions:....
00E260:  0D 0A 20 20 20 20 20 20 20 41 46 2C 20 44 45 20    ..       AF, DE 
00E270:  61 6E 64 20 48 4C 20 63 6F 72 72 75 70 74 2E 0D    and HL corrupt..
00E280:  0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65    .       All othe
00E290:  72 20 72 65 67 69 73 74 65 72 73 20 70 72 65 73    r registers pres
00E2A0:  65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    erved.......    
00E2B0:  20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20       Notes:...... 
00E2C0:  20 20 20 20 20 20 54 68 65 20 66 72 61 6D 65 20          The frame 
00E2D0:  66 6C 79 62 61 63 6B 20 62 6C 6F 63 6B 20 69 73    flyback block is
00E2E0:  20 39 20 62 79 74 65 73 20 6C 6F 6E 67 20 61 6E     9 bytes long an
00E2F0:  64 20 6D 75 73 74 20 6C 69 65 20 20 69 6E 20 20    d must lie  in  
00E300:  74 68 65 20 20 63 65 6E 74 72 61 6C 0D 0A 20 20    the  central..  
00E310:  20 20 20 20 20 33 32 4B 20 6F 66 20 52 41 4D 2E         32K of RAM.
00E320:  20 54 68 65 20 6C 61 73 74 20 37 20 62 79 74 65     The last 7 byte
00E330:  73 20 6F 66 20 74 68 65 20 66 72 61 6D 65 20 66    s of the frame f
00E340:  6C 79 62 61 63 6B 20 62 6C 6F 63 6B 20 61 72 65    lyback block are
00E350:  20 20 61 6E 20 20 65 76 65 6E 74 0D 0A 20 20 20      an  event..   
00E360:  20 20 20 20 62 6C 6F 63 6B 20 77 68 69 63 68 20        block which 
00E370:  69 73 20 69 6E 69 74 69 61 6C 69 7A 65 64 20 74    is initialized t
00E380:  6F 20 72 65 66 6C 65 63 74 20 74 68 65 20 70 61    o reflect the pa
00E390:  72 61 6D 65 74 65 72 73 20 70 61 73 73 65 64 20    rameters passed 
00E3A0:  20 69 6E 20 20 42 2C 20 20 43 0D 0A 20 20 20 20     in  B,  C..    
00E3B0:  20 20 20 61 6E 64 20 44 45 20 28 73 65 65 20 4B       and DE (see K
00E3C0:  4C 20 49 4E 49 54 20 45 56 45 4E 54 29 2E 20 54    L INIT EVENT). T
00E3D0:  68 65 20 65 78 61 63 74 20 6C 61 79 6F 75 74 20    he exact layout 
00E3E0:  6F 66 20 61 20 66 72 61 6D 65 20 66 6C 79 62 61    of a frame flyba
00E3F0:  63 6B 20 20 62 6C 6F 63 6B 0D 0A 20 20 20 20 20    ck  block..     
00E400:  20 20 69 73 20 64 65 73 63 72 69 62 65 64 20 69      is described i
00E410:  6E 20 41 70 70 65 6E 64 69 78 20 58 2E 0D 0A 0D    n Appendix X....
00E420:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 66 72    ...       The fr
00E430:  61 6D 65 20 66 6C 79 62 61 63 6B 20 62 6C 6F 63    ame flyback bloc
00E440:  6B 20 69 73 20 61 70 70 65 6E 64 65 64 20 74 6F    k is appended to
00E450:  20 74 68 65 20 66 72 61 6D 65 20 66 6C 79 62 61     the frame flyba
00E460:  63 6B 20 6C 69 73 74 20 69 66 20 69 74 20 69 73    ck list if it is
00E470:  0D 0A 20 20 20 20 20 20 20 6E 6F 74 20 61 6C 72    ..       not alr
00E480:  65 61 64 79 20 6F 6E 20 69 74 2E 0D 0A 0D 0A 0D    eady on it......
00E490:  0A 20 20 20 20 20 20 20 54 68 69 73 20 72 6F 75    .       This rou
00E4A0:  74 69 6E 65 20 65 6E 61 62 6C 65 73 20 69 6E 74    tine enables int
00E4B0:  65 72 72 75 70 74 73 2E 0D 0A 0D 0A 0D 0A 0D 0A    errupts.........
00E4C0:  20 20 20 20 20 20 20 52 65 6C 61 74 65 64 20 65           Related e
00E4D0:  6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20    ntries:......   
00E4E0:  20 20 20 20 4B 4C 20 41 44 44 20 46 52 41 4D 45        KL ADD FRAME
00E4F0:  20 46 4C 59 0D 0A 20 20 20 20 20 20 20 4B 4C 20     FLY..       KL 
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:  44 45 4C 20 46 52 41 4D 45 20 46 4C 59 0D 0A 20    DEL FRAME FLY.. 
00E610:  20 20 20 20 20 20 4B 4C 20 49 4E 49 54 20 45 56          KL INIT EV
00E620:  45 4E 54 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    ENT............ 
00E630:  20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50          AMSTRAD CP
00E640:  43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49    C464/664/6128 FI
00E650:  52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20    RMWARE          
00E660:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00E670:  20 70 61 67 65 20 31 35 2E 31 39 31 0D 0A 0D 0A     page 15.191....
00E680:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
00E690:  20 31 35 38 3A 20 4B 4C 20 41 44 44 20 46 52 41     158: KL ADD FRA
00E6A0:  4D 45 20 46 4C 59 20 20 20 20 20 20 20 20 20 20    ME FLY          
00E6B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00E6C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00E6D0:  20 20 23 42 43 44 41 0D 0A 0D 0A 0D 0A 20 20 20      #BCDA......   
00E6E0:  20 20 20 20 50 75 74 20 61 20 62 6C 6F 63 6B 20        Put a block 
00E6F0:  6F 6E 74 6F 20 74 68 65 20 66 72 61 6D 65 20 66    onto the frame f
00E700:  6C 79 62 61 63 6B 20 6C 69 73 74 2E 0D 0A 0D 0A    lyback list.....
00E710:  0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A    ..       Action:
00E720:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    ......       The
00E730:  20 4B 65 72 6E 65 6C 20 6D 61 69 6E 74 61 69 6E     Kernel maintain
00E740:  73 20 61 20 6C 69 73 74 20 6F 66 20 65 76 65 6E    s a list of even
00E750:  74 73 20 74 6F 20 62 65 20 20 6B 69 63 6B 65 64    ts to be  kicked
00E760:  20 20 65 61 63 68 20 20 74 69 6D 65 20 20 66 72      each  time  fr
00E770:  61 6D 65 0D 0A 20 20 20 20 20 20 20 66 6C 79 62    ame..       flyb
00E780:  61 63 6B 20 6F 63 63 75 72 73 2E 20 54 68 69 73    ack occurs. This
00E790:  20 72 6F 75 74 69 6E 65 20 61 64 64 73 20 61 20     routine adds a 
00E7A0:  62 6C 6F 63 6B 20 74 6F 20 74 68 65 20 6C 69 73    block to the lis
00E7B0:  74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    t.......       E
00E7C0:  6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    ntry conditions:
00E7D0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 48 4C 20    ......       HL 
00E7E0:  63 6F 6E 74 61 69 6E 73 20 74 68 65 20 61 64 64    contains the add
00E7F0:  72 65 73 73 20 6F 66 20 74 68 65 20 66 72 61 6D    ress of the fram
00E800:  65 20 66 6C 79 62 61 63 6B 20 62 6C 6F 63 6B 2E    e flyback block.
00E810:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69    ......       Exi
00E820:  74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D    t conditions:...
00E830:  0A 0D 0A 20 20 20 20 20 20 20 41 46 2C 20 44 45    ...       AF, DE
00E840:  20 61 6E 64 20 48 4C 20 63 6F 72 72 75 70 74 2E     and HL corrupt.
00E850:  0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68    ..       All oth
00E860:  65 72 20 72 65 67 69 73 74 65 72 73 20 70 72 65    er registers pre
00E870:  73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20    served.......   
00E880:  20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A        Notes:......
00E890:  20 20 20 20 20 20 20 54 68 65 20 66 72 61 6D 65           The frame
00E8A0:  20 66 6C 79 62 61 63 6B 20 62 6C 6F 63 6B 20 69     flyback block i
00E8B0:  73 20 39 20 62 79 74 65 73 20 6C 6F 6E 67 20 61    s 9 bytes long a
00E8C0:  6E 64 20 69 74 20 6D 75 73 74 20 6C 69 65 20 69    nd it must lie i
00E8D0:  6E 20 74 68 65 20 63 65 6E 74 72 61 6C 0D 0A 20    n the central.. 
00E8E0:  20 20 20 20 20 20 33 32 4B 20 6F 66 20 52 41 4D          32K of RAM
00E8F0:  2E 20 54 68 65 20 6C 61 73 74 20 37 20 62 79 74    . The last 7 byt
00E900:  65 73 20 6F 66 20 74 68 65 20 66 72 61 6D 65 20    es of the frame 
00E910:  66 6C 79 62 61 63 6B 20 62 6C 6F 63 6B 20 61 72    flyback block ar
00E920:  65 20 20 61 6E 20 20 65 76 65 6E 74 0D 0A 20 20    e  an  event..  
00E930:  20 20 20 20 20 62 6C 6F 63 6B 20 20 77 68 69 63         block  whic
00E940:  68 20 20 6D 75 73 74 20 20 62 65 20 20 69 6E 69    h  must  be  ini
00E950:  74 69 61 6C 69 7A 65 64 20 20 73 65 70 61 72 61    tialized  separa
00E960:  74 65 6C 79 20 20 62 65 66 6F 72 65 20 20 63 61    tely  before  ca
00E970:  6C 6C 69 6E 67 20 20 74 68 69 73 0D 0A 20 20 20    lling  this..   
00E980:  20 20 20 20 72 6F 75 74 69 6E 65 2E 20 54 68 65        routine. The
00E990:  20 65 78 61 63 74 20 6C 61 79 6F 75 74 20 6F 66     exact layout of
00E9A0:  20 61 20 66 72 61 6D 65 20 66 6C 79 62 61 63 6B     a frame flyback
00E9B0:  20 20 62 6C 6F 63 6B 20 20 69 73 20 20 64 65 73      block  is  des
00E9C0:  63 72 69 62 65 64 20 20 69 6E 0D 0A 20 20 20 20    cribed  in..    
00E9D0:  20 20 20 41 70 70 65 6E 64 69 78 20 58 2E 0D 0A       Appendix X...
00E9E0:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 62    ....       The b
00E9F0:  6C 6F 63 6B 20 69 73 20 61 70 70 65 6E 64 65 64    lock is appended
00EA00:  20 74 6F 20 74 68 65 20 66 72 61 6D 65 20 66 6C     to the frame fl
00EA10:  79 62 61 63 6B 20 6C 69 73 74 20 69 66 20 69 74    yback list if it
00EA20:  20 69 73 20 20 6E 6F 74 20 20 61 6C 72 65 61 64     is  not  alread
00EA30:  79 0D 0A 20 20 20 20 20 20 20 6F 6E 20 69 74 2E    y..       on it.
00EA40:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    ......       The
00EA50:  20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C 65 73     routine enables
00EA60:  20 69 6E 74 65 72 72 75 70 74 73 2E 0D 0A 0D 0A     interrupts.....
00EA70:  0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74    ....       Relat
00EA80:  65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D    ed entries:.....
00EA90:  0A 20 20 20 20 20 20 20 4B 4C 20 44 45 4C 20 46    .       KL DEL F
00EAA0:  52 41 4D 45 20 46 4C 59 0D 0A 20 20 20 20 20 20    RAME FLY..      
00EAB0:  20 4B 4C 20 49 4E 49 54 20 45 56 45 4E 54 0D 0A     KL INIT EVENT..
00EAC0:  20 20 20 20 20 20 20 4B 4C 20 4E 45 57 20 46 52           KL NEW FR
00EAD0:  41 4D 45 20 46 4C 59 0D 0A 0D 0A 0D 0A 0D 0A 0D    AME FLY.........
00EAE0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
00EAF0:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
00EB00:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
00EB10:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
00EB20:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
00EB30:  65 20 31 35 2E 31 39 32 0D 0A 0D 0A 0D 0A 0D 0A    e 15.192........
00EB40:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 35 39    ......       159
00EB50:  3A 20 4B 4C 20 44 45 4C 20 46 52 41 4D 45 20 46    : KL DEL FRAME F
00EB60:  4C 59 20 20 20 20 20 20 20 20 20 20 20 20 20 20    LY              
00EB70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00EB80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 42                  #B
00EB90:  43 44 44 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    CDD......       
00EBA0:  52 65 6D 6F 76 65 20 61 20 62 6C 6F 63 6B 20 66    Remove a block f
00EBB0:  72 6F 6D 20 74 68 65 20 66 72 61 6D 65 20 66 6C    rom the frame fl
00EBC0:  79 62 61 63 6B 20 6C 69 73 74 2E 0D 0A 0D 0A 0D    yback list......
00EBD0:  0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D    .       Action:.
00EBE0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
00EBF0:  4B 65 72 6E 65 6C 20 6D 61 69 6E 74 61 69 6E 73    Kernel maintains
00EC00:  20 61 20 6C 69 73 74 20 6F 66 20 65 76 65 6E 74     a list of event
00EC10:  73 20 74 6F 20 62 65 20 20 6B 69 63 6B 65 64 20    s to be  kicked 
00EC20:  20 65 61 63 68 20 20 74 69 6D 65 20 20 66 72 61     each  time  fra
00EC30:  6D 65 0D 0A 20 20 20 20 20 20 20 66 6C 79 62 61    me..       flyba
00EC40:  63 6B 20 6F 63 63 75 72 73 2E 20 54 68 69 73 20    ck occurs. This 
00EC50:  72 6F 75 74 69 6E 65 20 72 65 6D 6F 76 65 73 20    routine removes 
00EC60:  61 20 62 6C 6F 63 6B 20 66 72 6F 6D 20 74 68 65    a block from the
00EC70:  20 6C 69 73 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20     list.......    
00EC80:  20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69       Entry conditi
00EC90:  6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ons:......      
00ECA0:  20 48 4C 20 63 6F 6E 74 61 69 6E 73 20 74 68 65     HL contains the
00ECB0:  20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20     address of the 
00ECC0:  66 72 61 6D 65 20 66 6C 79 62 61 63 6B 20 62 6C    frame flyback bl
00ECD0:  6F 63 6B 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ock.......      
00ECE0:  20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73     Exit conditions
00ECF0:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 46    :......       AF
00ED00:  2C 20 44 45 20 61 6E 64 20 48 4C 20 63 6F 72 72    , DE and HL corr
00ED10:  75 70 74 2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C    upt...       All
00ED20:  20 6F 74 68 65 72 20 72 65 67 69 73 74 65 72 73     other registers
00ED30:  20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D     preserved......
00ED40:  0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A    .       Notes:..
00ED50:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73 20    ....       This 
00ED60:  72 6F 75 74 69 6E 65 20 64 6F 65 73 20 6E 6F 74    routine does not
00ED70:  68 69 6E 67 20 69 66 20 74 68 65 20 62 6C 6F 63    hing if the bloc
00ED80:  6B 20 69 73 20 6E 6F 74 20 6F 6E 20 74 68 65 20    k is not on the 
00ED90:  6C 69 73 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    list.......     
00EDA0:  20 20 52 65 6D 6F 76 69 6E 67 20 61 20 62 6C 6F      Removing a blo
00EDB0:  63 6B 20 66 72 6F 6D 20 74 68 65 20 6C 69 73 74    ck from the list
00EDC0:  20 6F 6E 6C 79 20 70 72 65 76 65 6E 74 73 20 74     only prevents t
00EDD0:  68 65 20 20 65 76 65 6E 74 20 20 62 65 69 6E 67    he  event  being
00EDE0:  20 20 6B 69 63 6B 65 64 0D 0A 20 20 20 20 20 20      kicked..      
00EDF0:  20 61 67 61 69 6E 2E 20 49 74 20 64 6F 65 73 20     again. It does 
00EE00:  6E 6F 74 20 61 66 66 65 63 74 20 61 6E 79 20 6F    not affect any o
00EE10:  75 74 73 74 61 6E 64 69 6E 67 20 66 72 61 6D 65    utstanding frame
00EE20:  20 66 6C 79 62 61 63 6B 20 65 76 65 6E 74 73 2E     flyback events.
00EE30:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69    ......       Thi
00EE40:  73 20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C 65    s routine enable
00EE50:  73 20 69 6E 74 65 72 72 75 70 74 73 2E 0D 0A 0D    s interrupts....
00EE60:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61    .....       Rela
00EE70:  74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A    ted entries:....
00EE80:  0D 0A 20 20 20 20 20 20 20 4B 4C 20 41 44 44 20    ..       KL ADD 
00EE90:  46 52 41 4D 45 20 46 4C 59 0D 0A 20 20 20 20 20    FRAME FLY..     
00EEA0:  20 20 4B 4C 20 4E 45 57 20 46 52 41 4D 45 20 46      KL NEW FRAME F
00EEB0:  4C 59 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    LY..............
00EEC0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
00EED0:  20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43           AMSTRAD C
00EEE0:  50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46    PC464/664/6128 F
00EEF0:  49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20    IRMWARE         
00EF00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00EF10:  20 20 70 61 67 65 20 31 35 2E 31 39 33 0D 0A 0D      page 15.193...
00EF20:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
00EF30:  20 20 31 36 30 3A 20 4B 4C 20 4E 45 57 20 46 41      160: KL NEW FA
00EF40:  53 54 20 54 49 43 4B 45 52 20 20 20 20 20 20 20    ST TICKER       
00EF50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00EF60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00EF70:  20 20 20 23 42 43 45 30 0D 0A 0D 0A 0D 0A 20 20       #BCE0......  
00EF80:  20 20 20 20 20 49 6E 69 74 69 61 6C 69 7A 65 20         Initialize 
00EF90:  61 6E 64 20 70 75 74 20 61 20 62 6C 6F 63 6B 20    and put a block 
00EFA0:  6F 6E 74 6F 20 74 68 65 20 66 61 73 74 20 74 69    onto the fast ti
00EFB0:  63 6B 65 72 20 6C 69 73 74 2E 0D 0A 0D 0A 0D 0A    cker list.......
00EFC0:  20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A           Action:..
00EFD0:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 4B    ....       The K
00EFE0:  65 72 6E 65 6C 20 6D 61 69 6E 74 61 69 6E 73 20    ernel maintains 
00EFF0:  61 20 6C 69 73 74 20 6F 66 20 65 76 65 6E 74 73    a list of events
00F000:  20 20 74 6F 20 20 62 65 20 20 6B 69 63 6B 65 64      to  be  kicked
00F010:  20 20 65 61 63 68 20 20 74 69 6D 65 20 20 74 68      each  time  th
00F020:  65 0D 0A 20 20 20 20 20 20 20 31 2F 33 30 30 74    e..       1/300t
00F030:  68 20 6F 66 20 61 20 73 65 63 6F 6E 64 20 74 69    h of a second ti
00F040:  6D 65 72 20 69 6E 74 65 72 72 75 70 74 20 6F 63    mer interrupt oc
00F050:  63 75 72 73 2E 20 54 68 69 73 20 69 73 20 6B 6E    curs. This is kn
00F060:  6F 77 6E 20 61 73 20 74 68 65 20 20 66 61 73 74    own as the  fast
00F070:  0D 0A 20 20 20 20 20 20 20 74 69 63 6B 65 72 20    ..       ticker 
00F080:  6C 69 73 74 2E 20 54 68 69 73 20 72 6F 75 74 69    list. This routi
00F090:  6E 65 20 69 6E 69 74 69 61 6C 69 7A 65 73 20 61    ne initializes a
00F0A0:  20 62 6C 6F 63 6B 20 61 6E 64 20 61 64 64 73 20     block and adds 
00F0B0:  69 74 20 74 6F 20 74 68 65 20 6C 69 73 74 2E 0D    it to the list..
00F0C0:  0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20    ...       Entry 
00F0D0:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20    conditions:.... 
00F0E0:  20 20 20 20 20 20 48 4C 20 63 6F 6E 74 61 69 6E          HL contain
00F0F0:  73 20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66    s the address of
00F100:  20 74 68 65 20 66 61 73 74 20 74 69 63 6B 65 72     the fast ticker
00F110:  20 62 6C 6F 63 6B 2E 0D 0A 20 20 20 20 20 20 20     block...       
00F120:  42 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 65    B contains the e
00F130:  76 65 6E 74 20 63 6C 61 73 73 2E 0D 0A 20 20 20    vent class...   
00F140:  20 20 20 20 43 20 63 6F 6E 74 61 69 6E 73 20 74        C contains t
00F150:  68 65 20 52 4F 4D 20 73 65 6C 65 63 74 20 61 64    he ROM select ad
00F160:  64 72 65 73 73 20 6F 66 20 74 68 65 20 65 76 65    dress of the eve
00F170:  6E 74 20 72 6F 75 74 69 6E 65 2E 0D 0A 20 20 20    nt routine...   
00F180:  20 20 20 20 44 45 20 63 6F 6E 74 61 69 6E 73 20        DE contains 
00F190:  74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20 74    the address of t
00F1A0:  68 65 20 65 76 65 6E 74 20 72 6F 75 74 69 6E 65    he event routine
00F1B0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74    .....       Exit
00F1C0:  20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A     conditions:....
00F1D0:  20 20 20 20 20 20 20 41 46 2C 20 44 45 20 61 6E           AF, DE an
00F1E0:  64 20 48 4C 20 63 6F 72 72 75 70 74 2E 0D 0A 20    d HL corrupt... 
00F1F0:  20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20          All other 
00F200:  72 65 67 69 73 74 65 72 73 20 70 72 65 73 65 72    registers preser
00F210:  76 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 4E    ved.....       N
00F220:  6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    otes:......     
00F230:  20 20 54 68 65 20 66 61 73 74 20 74 69 63 6B 65      The fast ticke
00F240:  72 20 62 6C 6F 63 6B 20 69 73 20 39 20 62 79 74    r block is 9 byt
00F250:  65 73 20 6C 6F 6E 67 20 61 6E 64 20 6D 75 73 74    es long and must
00F260:  20 6C 69 65 20 69 6E 20 74 68 65 20 63 65 6E 74     lie in the cent
00F270:  72 61 6C 20 20 33 32 4B 0D 0A 20 20 20 20 20 20    ral  32K..      
00F280:  20 6F 66 20 52 41 4D 2E 20 54 68 65 20 6C 61 73     of RAM. The las
00F290:  74 20 37 20 62 79 74 65 73 20 6F 66 20 74 68 65    t 7 bytes of the
00F2A0:  20 66 61 73 74 20 74 69 63 6B 65 72 20 62 6C 6F     fast ticker blo
00F2B0:  63 6B 20 61 72 65 20 61 6E 20 20 65 76 65 6E 74    ck are an  event
00F2C0:  20 20 62 6C 6F 63 6B 0D 0A 20 20 20 20 20 20 20      block..       
00F2D0:  77 68 69 63 68 20 6D 75 73 74 20 62 65 20 69 6E    which must be in
00F2E0:  69 74 69 61 6C 69 7A 65 64 20 74 6F 20 72 65 66    itialized to ref
00F2F0:  6C 65 63 74 20 74 68 65 20 70 61 72 61 6D 65 74    lect the paramet
00F300:  65 72 73 20 70 61 73 73 65 64 20 69 6E 20 42 2C    ers passed in B,
00F310:  20 43 20 61 6E 64 0D 0A 20 20 20 20 20 20 20 44     C and..       D
00F320:  45 20 28 73 65 65 20 4B 4C 20 49 4E 49 54 20 45    E (see KL INIT E
00F330:  56 45 4E 54 29 2E 20 54 68 65 20 65 78 61 63 74    VENT). The exact
00F340:  20 6C 61 79 6F 75 74 20 6F 66 20 61 20 20 66 61     layout of a  fa
00F350:  73 74 20 20 74 69 63 6B 65 72 20 20 62 6C 6F 63    st  ticker  bloc
00F360:  6B 20 20 69 73 0D 0A 20 20 20 20 20 20 20 64 65    k  is..       de
00F370:  73 63 72 69 62 65 64 20 69 6E 20 41 70 70 65 6E    scribed in Appen
00F380:  64 69 78 20 58 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    dix X.......    
00F390:  20 20 20 54 68 65 20 66 61 73 74 20 74 69 63 6B       The fast tick
00F3A0:  65 72 20 62 6C 6F 63 6B 20 69 73 20 61 70 70 65    er block is appe
00F3B0:  6E 64 65 64 20 74 6F 20 74 68 65 20 66 61 73 74    nded to the fast
00F3C0:  20 74 69 63 6B 65 72 20 6C 69 73 74 20 69 66 20     ticker list if 
00F3D0:  69 74 20 69 73 20 6E 6F 74 0D 0A 20 20 20 20 20    it is not..     
00F3E0:  20 20 61 6C 72 65 61 64 79 20 6F 6E 20 69 74 2E      already on it.
00F3F0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    ......       The
00F400:  20 66 61 73 74 20 74 69 63 6B 65 72 20 66 61 63     fast ticker fac
00F410:  69 6C 69 74 79 20 69 73 20 6E 6F 74 20 69 6E 74    ility is not int
00F420:  65 6E 64 65 64 20 66 6F 72 20 67 65 6E 65 72 61    ended for genera
00F430:  6C 20 75 73 65 2E 20 48 6F 77 65 76 65 72 2C 20    l use. However, 
00F440:  20 69 74 0D 0A 20 20 20 20 20 20 20 64 6F 65 73     it..       does
00F450:  20 61 6C 6C 6F 77 20 72 65 6C 61 74 69 76 65 6C     allow relativel
00F460:  79 20 20 73 68 6F 72 74 20 20 74 69 6D 65 73 20    y  short  times 
00F470:  20 74 6F 20 20 62 65 20 20 6D 65 61 73 75 72 65     to  be  measure
00F480:  64 20 20 67 69 76 69 6E 67 20 20 67 72 65 61 74    d  giving  great
00F490:  65 72 0D 0A 20 20 20 20 20 20 20 72 65 73 6F 6C    er..       resol
00F4A0:  75 74 69 6F 6E 20 74 68 61 6E 20 74 68 65 20 67    ution than the g
00F4B0:  65 6E 65 72 61 6C 20 74 69 63 6B 65 72 20 66 61    eneral ticker fa
00F4C0:  63 69 6C 69 74 69 65 73 2E 0D 0A 0D 0A 0D 0A 20    cilities....... 
00F4D0:  20 20 20 20 20 20 54 68 69 73 20 72 6F 75 74 69          This routi
00F4E0:  6E 65 20 65 6E 61 62 6C 65 73 20 69 6E 74 65 72    ne enables inter
00F4F0:  72 75 70 74 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20    rupts.........  
00F500:  20 20 20 20 20 52 65 6C 61 74 65 64 20 65 6E 74         Related ent
00F510:  72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ries:......     
00F520:  20 20 4B 4C 20 41 44 44 20 46 41 53 54 20 54 49      KL ADD FAST TI
00F530:  43 4B 45 52 0D 0A 20 20 20 20 20 20 20 4B 4C 20    CKER..       KL 
00F540:  41 44 44 20 54 49 43 4B 45 52 0D 0A 20 20 20 20    ADD TICKER..    
00F550:  20 20 20 4B 4C 20 44 45 4C 20 46 41 53 54 20 54       KL DEL FAST T
00F560:  49 43 4B 45 52 0D 0A 20 20 20 20 20 20 20 4B 4C    ICKER..       KL
00F570:  20 49 4E 49 54 20 45 56 45 4E 54 0D 0A 20 20 20     INIT EVENT..   
00F580:  20 20 20 20 4B 4C 20 54 49 4D 45 20 50 4C 45 41        KL TIME PLEA
00F590:  53 45 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    SE........      
00F5A0:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
00F5B0:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
00F5C0:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
00F5D0:  20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65                page
00F5E0:  20 31 35 2E 31 39 34 0D 0A 0D 0A 0D 0A 0D 0A 0D     15.194.........
00F5F0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 36 31 3A    .....       161:
00F600:  20 4B 4C 20 41 44 44 20 46 41 53 54 20 54 49 43     KL ADD FAST TIC
00F610:  4B 45 52 20 20 20 20 20 20 20 20 20 20 20 20 20    KER             
00F620:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00F630:  20 20 20 20 20 20 20 20 20 20 20 20 20 23 42 43                 #BC
00F640:  45 33 0D 0A 0D 0A 20 20 20 20 20 20 20 50 75 74    E3....       Put
00F650:  20 61 20 62 6C 6F 63 6B 20 6F 6E 74 6F 20 74 68     a block onto th
00F660:  65 20 66 61 73 74 20 74 69 63 6B 65 72 20 6C 69    e fast ticker li
00F670:  73 74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63    st.....       Ac
00F680:  74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    tion:......     
00F690:  20 20 54 68 65 20 4B 65 72 6E 65 6C 20 6D 61 69      The Kernel mai
00F6A0:  6E 74 61 69 6E 73 20 61 20 6C 69 73 74 20 6F 66    ntains a list of
00F6B0:  20 65 76 65 6E 74 73 20 20 74 6F 20 20 62 65 20     events  to  be 
00F6C0:  20 6B 69 63 6B 65 64 20 20 65 61 63 68 20 20 74     kicked  each  t
00F6D0:  69 6D 65 20 20 74 68 65 0D 0A 20 20 20 20 20 20    ime  the..      
00F6E0:  20 31 2F 33 30 30 74 68 20 6F 66 20 61 20 73 65     1/300th of a se
00F6F0:  63 6F 6E 64 20 74 69 6D 65 72 20 69 6E 74 65 72    cond timer inter
00F700:  72 75 70 74 20 6F 63 63 75 72 73 2E 20 54 68 69    rupt occurs. Thi
00F710:  73 20 69 73 20 6B 6E 6F 77 6E 20 61 73 20 74 68    s is known as th
00F720:  65 20 20 66 61 73 74 0D 0A 20 20 20 20 20 20 20    e  fast..       
00F730:  74 69 63 6B 65 72 20 6C 69 73 74 2E 20 54 68 69    ticker list. Thi
00F740:  73 20 72 6F 75 74 69 6E 65 20 61 64 64 73 20 61    s routine adds a
00F750:  20 62 6C 6F 63 6B 20 74 6F 20 74 68 65 20 6C 69     block to the li
00F760:  73 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    st.......       
00F770:  45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73    Entry conditions
00F780:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 48 4C    :......       HL
00F790:  20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 61 64     contains the ad
00F7A0:  64 72 65 73 73 20 6F 66 20 74 68 65 20 66 61 73    dress of the fas
00F7B0:  74 20 74 69 63 6B 65 72 20 62 6C 6F 63 6B 2E 0D    t ticker block..
00F7C0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74    .....       Exit
00F7D0:  20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A     conditions:....
00F7E0:  0D 0A 20 20 20 20 20 20 20 41 46 2C 20 44 45 20    ..       AF, DE 
00F7F0:  61 6E 64 20 48 4C 20 63 6F 72 72 75 70 74 2E 0D    and HL corrupt..
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:  0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65    .       All othe
00F910:  72 20 72 65 67 69 73 74 65 72 73 20 70 72 65 73    r registers pres
00F920:  65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    erved.......    
00F930:  20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20       Notes:...... 
00F940:  20 20 20 20 20 20 54 68 65 20 66 61 73 74 20 74          The fast t
00F950:  69 63 6B 65 72 20 62 6C 6F 63 6B 20 69 73 20 39    icker block is 9
00F960:  20 62 79 74 65 73 20 6C 6F 6E 67 20 61 6E 64 20     bytes long and 
00F970:  6D 75 73 74 20 6C 69 65 20 69 6E 20 74 68 65 20    must lie in the 
00F980:  63 65 6E 74 72 61 6C 20 20 33 32 4B 0D 0A 20 20    central  32K..  
00F990:  20 20 20 20 20 6F 66 20 52 41 4D 2E 20 54 68 65         of RAM. The
00F9A0:  20 6C 61 73 74 20 37 20 62 79 74 65 73 20 6F 66     last 7 bytes of
00F9B0:  20 74 68 65 20 66 61 73 74 20 74 69 63 6B 65 72     the fast ticker
00F9C0:  20 62 6C 6F 63 6B 20 61 72 65 20 61 6E 20 20 65     block are an  e
00F9D0:  76 65 6E 74 20 20 62 6C 6F 63 6B 0D 0A 20 20 20    vent  block..   
00F9E0:  20 20 20 20 77 68 69 63 68 20 6D 75 73 74 20 62        which must b
00F9F0:  65 20 69 6E 69 74 69 61 6C 69 7A 65 64 20 20 62    e initialized  b
00FA00:  65 66 6F 72 65 20 20 63 61 6C 6C 69 6E 67 20 20    efore  calling  
00FA10:  74 68 69 73 20 20 72 6F 75 74 69 6E 65 2E 20 20    this  routine.  
00FA20:  54 68 65 20 20 65 78 61 63 74 0D 0A 20 20 20 20    The  exact..    
00FA30:  20 20 20 6C 61 79 6F 75 74 20 6F 66 20 61 20 66       layout of a f
00FA40:  61 73 74 20 74 69 63 6B 65 72 20 62 6C 6F 63 6B    ast ticker block
00FA50:  20 69 73 20 64 65 73 63 72 69 62 65 64 20 69 6E     is described in
00FA60:  20 41 70 70 65 6E 64 69 78 20 58 2E 0D 0A 0D 0A     Appendix X.....
00FA70:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 66 61 73    ..       The fas
00FA80:  74 20 74 69 63 6B 65 72 20 62 6C 6F 63 6B 20 69    t ticker block i
00FA90:  73 20 61 70 70 65 6E 64 65 64 20 74 6F 20 74 68    s appended to th
00FAA0:  65 20 66 61 73 74 20 74 69 63 6B 65 72 20 6C 69    e fast ticker li
00FAB0:  73 74 20 69 66 20 69 74 20 69 73 20 6E 6F 74 0D    st if it is not.
00FAC0:  0A 20 20 20 20 20 20 20 61 6C 72 65 61 64 79 20    .       already 
00FAD0:  6F 6E 20 69 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    on it.......    
00FAE0:  20 20 20 54 68 65 20 66 61 73 74 20 74 69 63 6B       The fast tick
00FAF0:  65 72 20 66 61 63 69 6C 69 74 79 20 69 73 20 6E    er facility is n
00FB00:  6F 74 20 69 6E 74 65 6E 64 65 64 20 66 6F 72 20    ot intended for 
00FB10:  67 65 6E 65 72 61 6C 20 75 73 65 2E 20 48 6F 77    general use. How
00FB20:  65 76 65 72 2C 20 20 69 74 0D 0A 20 20 20 20 20    ever,  it..     
00FB30:  20 20 64 6F 65 73 20 61 6C 6C 6F 77 20 72 65 6C      does allow rel
00FB40:  61 74 69 76 65 6C 79 20 20 73 68 6F 72 74 20 20    atively  short  
00FB50:  74 69 6D 65 73 20 20 74 6F 20 20 62 65 20 20 6D    times  to  be  m
00FB60:  65 61 73 75 72 65 64 20 20 67 69 76 69 6E 67 20    easured  giving 
00FB70:  20 67 72 65 61 74 65 72 0D 0A 20 20 20 20 20 20     greater..      
00FB80:  20 72 65 73 6F 6C 75 74 69 6F 6E 20 74 68 61 6E     resolution than
00FB90:  20 74 68 65 20 67 65 6E 65 72 61 6C 20 74 69 63     the general tic
00FBA0:  6B 65 72 20 66 61 63 69 6C 69 74 69 65 73 2E 0D    ker facilities..
00FBB0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73    .....       This
00FBC0:  20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C 65 73     routine enables
00FBD0:  20 69 6E 74 65 72 72 75 70 74 73 2E 0D 0A 0D 0A     interrupts.....
00FBE0:  0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74    ....       Relat
00FBF0:  65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D    ed entries:.....
00FC00:  0A 20 20 20 20 20 20 20 4B 4C 20 41 44 44 20 54    .       KL ADD T
00FC10:  49 43 4B 45 52 0D 0A 20 20 20 20 20 20 20 4B 4C    ICKER..       KL
00FC20:  20 44 45 4C 20 46 41 53 54 20 54 49 43 4B 45 52     DEL FAST TICKER
00FC30:  0D 0A 20 20 20 20 20 20 20 4B 4C 20 49 4E 49 54    ..       KL INIT
00FC40:  20 45 56 45 4E 54 0D 0A 20 20 20 20 20 20 20 4B     EVENT..       K
00FC50:  4C 20 4E 45 57 20 46 41 53 54 20 54 49 43 4B 45    L NEW FAST TICKE
00FC60:  52 0D 0A 20 20 20 20 20 20 20 4B 4C 20 54 49 4D    R..       KL TIM
00FC70:  45 20 50 4C 45 41 53 45 0D 0A 0D 0A 0D 0A 0D 0A    E PLEASE........
00FC80:  0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44    ..       AMSTRAD
00FC90:  20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38     CPC464/664/6128
00FCA0:  20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20     FIRMWARE       
00FCB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00FCC0:  20 20 20 20 70 61 67 65 20 31 35 2E 31 39 35 0D        page 15.195.
00FCD0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
00FCE0:  20 20 20 20 31 36 32 3A 20 4B 4C 20 44 45 4C 20        162: KL DEL 
00FCF0:  46 41 53 54 20 54 49 43 4B 45 52 20 20 20 20 20    FAST TICKER     
00FD00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00FD10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00FD20:  20 20 20 20 20 23 42 43 45 36 0D 0A 0D 0A 0D 0A         #BCE6......
00FD30:  20 20 20 20 20 20 20 52 65 6D 6F 76 65 20 61 20           Remove a 
00FD40:  62 6C 6F 63 6B 20 66 72 6F 6D 20 74 68 65 20 66    block from the f
00FD50:  61 73 74 20 74 69 63 6B 65 72 20 6C 69 73 74 2E    ast ticker list.
00FD60:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74    ......       Act
00FD70:  69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ion:......      
00FD80:  20 54 68 65 20 4B 65 72 6E 65 6C 20 6D 61 69 6E     The Kernel main
00FD90:  74 61 69 6E 73 20 61 20 6C 69 73 74 20 6F 66 20    tains a list of 
00FDA0:  65 76 65 6E 74 73 20 20 74 6F 20 20 62 65 20 20    events  to  be  
00FDB0:  6B 69 63 6B 65 64 20 20 65 61 63 68 20 20 74 69    kicked  each  ti
00FDC0:  6D 65 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20    me  the..       
00FDD0:  31 2F 33 30 30 74 68 20 6F 66 20 61 20 73 65 63    1/300th of a sec
00FDE0:  6F 6E 64 20 74 69 6D 65 72 20 69 6E 74 65 72 72    ond timer interr
00FDF0:  75 70 74 20 6F 63 63 75 72 73 2E 20 54 68 69 73    upt occurs. This
00FE00:  20 69 73 20 6B 6E 6F 77 6E 20 61 73 20 74 68 65     is known as the
00FE10:  20 20 66 61 73 74 0D 0A 20 20 20 20 20 20 20 74      fast..       t
00FE20:  69 63 6B 65 72 20 6C 69 73 74 2E 20 54 68 69 73    icker list. This
00FE30:  20 72 6F 75 74 69 6E 65 20 72 65 6D 6F 76 65 73     routine removes
00FE40:  20 61 20 62 6C 6F 63 6B 20 66 72 6F 6D 20 74 68     a block from th
00FE50:  65 20 6C 69 73 74 2E 0D 0A 0D 0A 0D 0A 20 20 20    e list.......   
00FE60:  20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74        Entry condit
00FE70:  69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ions:......     
00FE80:  20 20 48 4C 20 63 6F 6E 74 61 69 6E 73 20 74 68      HL contains th
00FE90:  65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65    e address of the
00FEA0:  20 66 61 73 74 20 74 69 63 6B 65 72 20 62 6C 6F     fast ticker blo
00FEB0:  63 6B 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ck.......       
00FEC0:  45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    Exit conditions:
00FED0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 46 2C    ......       AF,
00FEE0:  20 44 45 20 61 6E 64 20 48 4C 20 63 6F 72 72 75     DE and HL corru
00FEF0:  70 74 2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20    pt...       All 
00FF00:  6F 74 68 65 72 20 72 65 67 69 73 74 65 72 73 20    other registers 
00FF10:  70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A    preserved.......
00FF20:  20 20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D           Notes:...
00FF30:  0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73 20 72    ...       This r
00FF40:  6F 75 74 69 6E 65 20 64 6F 65 73 20 6E 6F 74 68    outine does noth
00FF50:  69 6E 67 20 69 66 20 74 68 65 20 62 6C 6F 63 6B    ing if the block
00FF60:  20 69 73 20 6E 6F 74 20 6F 6E 20 74 68 65 20 6C     is not on the l
00FF70:  69 73 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ist.......      
00FF80:  20 52 65 6D 6F 76 69 6E 67 20 61 20 62 6C 6F 63     Removing a bloc
00FF90:  6B 20 66 72 6F 6D 20 74 68 65 20 6C 69 73 74 20    k from the list 
00FFA0:  6F 6E 6C 79 20 20 70 72 65 76 65 6E 74 73 20 20    only  prevents  
00FFB0:  74 68 65 20 20 65 76 65 6E 74 20 20 66 72 6F 6D    the  event  from
00FFC0:  20 20 62 65 69 6E 67 0D 0A 20 20 20 20 20 20 20      being..       
00FFD0:  6B 69 63 6B 65 64 20 61 67 61 69 6E 2E 20 49 74    kicked again. It
00FFE0:  20 64 6F 65 73 20 6E 6F 74 20 61 66 66 65 63 74     does not affect
00FFF0:  20 61 6E 79 20 6F 75 74 73 74 61 6E 64 69 6E 67     any outstanding
010000:  20 66 61 73 74 20 74 69 63 6B 65 72 20 65 76 65     fast ticker eve
010010:  6E 74 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    nts.......      
010020:  20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 65 6E     This routine en
010030:  61 62 6C 65 73 20 69 6E 74 65 72 72 75 70 74 73    ables interrupts
010040:  2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
010050:  52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A    Related entries:
010060:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4B 4C 20    ......       KL 
010070:  41 44 44 20 46 41 53 54 20 54 49 43 4B 45 52 0D    ADD FAST TICKER.
010080:  0A 20 20 20 20 20 20 20 4B 4C 20 44 45 4C 20 54    .       KL DEL T
010090:  49 43 4B 45 52 0D 0A 20 20 20 20 20 20 20 4B 4C    ICKER..       KL
0100A0:  20 4E 45 57 20 46 41 53 54 20 54 49 43 4B 45 52     NEW FAST TICKER
0100B0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
0100C0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
0100D0:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
0100E0:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
0100F0:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
010100:  20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65                page
010110:  20 31 35 2E 31 39 36 0D 0A 0D 0A 0D 0A 0D 0A 0D     15.196.........
010120:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 36 33 3A    .....       163:
010130:  20 4B 4C 20 41 44 44 20 54 49 43 4B 45 52 20 20     KL ADD TICKER  
010140:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
010150:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
010160:  20 20 20 20 20 20 20 20 20 20 20 20 20 23 42 43                 #BC
010170:  45 39 0D 0A 0D 0A 20 20 20 20 20 20 20 50 75 74    E9....       Put
010180:  20 61 20 62 6C 6F 63 6B 20 6F 6E 74 6F 20 74 68     a block onto th
010190:  65 20 74 69 63 6B 65 72 20 6C 69 73 74 2E 0D 0A    e ticker list...
0101A0:  0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A    ..       Action:
0101B0:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 67    ....       The g
0101C0:  65 6E 65 72 61 6C 20 70 75 72 70 6F 73 65 20 74    eneral purpose t
0101D0:  69 6D 69 6E 67 20 66 61 63 69 6C 69 74 79 20 20    iming facility  
0101E0:  6D 65 61 73 75 72 65 73 20 20 74 69 6D 65 20 20    measures  time  
0101F0:  69 6E 20 20 31 2F 35 30 74 68 20 20 6F 66 20 20    in  1/50th  of  
010200:  61 0D 0A 20 20 20 20 20 20 20 73 65 63 6F 6E 64    a..       second
010210:  20 75 6E 69 74 73 2E 20 54 68 65 20 4B 65 72 6E     units. The Kern
010220:  65 6C 20 6D 61 69 6E 74 61 69 6E 73 20 61 20 6C    el maintains a l
010230:  69 73 74 20 6F 66 20 74 69 63 6B 20 62 6C 6F 63    ist of tick bloc
010240:  6B 73 20 65 61 63 68 20 6F 66 20 77 68 69 63 68    ks each of which
010250:  0D 0A 20 20 20 20 20 20 20 63 6F 6E 74 61 69 6E    ..       contain
010260:  73 20 61 20 63 6F 75 6E 74 20 61 6E 64 20 61 20    s a count and a 
010270:  72 65 63 68 61 72 67 65 20 76 61 6C 75 65 2E 20    recharge value. 
010280:  45 76 65 72 79 20 31 2F 35 30 74 68 20 6F 66 20    Every 1/50th of 
010290:  20 61 20 20 73 65 63 6F 6E 64 20 20 74 68 65 0D     a  second  the.
0102A0:  0A 20 20 20 20 20 20 20 4B 65 72 6E 65 6C 20 70    .       Kernel p
0102B0:  72 6F 63 65 73 73 65 73 20 61 6C 6C 20 74 68 65    rocesses all the
0102C0:  20 74 69 63 6B 20 62 6C 6F 63 6B 73 2C 20 64 65     tick blocks, de
0102D0:  63 72 65 6D 65 6E 74 69 6E 67 20 74 68 65 20 63    crementing the c
0102E0:  6F 75 6E 74 20 65 6E 74 72 79 20 20 6F 66 0D 0A    ount entry  of..
0102F0:  20 20 20 20 20 20 20 65 61 63 68 2E 20 49 66 20           each. If 
010300:  74 68 65 20 63 6F 75 6E 74 20 65 6E 74 72 79 20    the count entry 
010310:  6F 66 20 61 20 62 6C 6F 63 6B 20 62 65 63 6F 6D    of a block becom
010320:  65 73 20 7A 65 72 6F 20 74 68 65 20 20 65 76 65    es zero the  eve
010330:  6E 74 20 20 63 6F 6E 74 61 69 6E 65 64 0D 0A 20    nt  contained.. 
010340:  20 20 20 20 20 20 69 6E 20 74 68 65 20 62 6C 6F          in the blo
010350:  63 6B 20 69 73 20 27 6B 69 63 6B 65 64 27 2C 20    ck is 'kicked', 
010360:  61 6E 64 20 74 68 65 20 63 6F 75 6E 74 20 69 73    and the count is
010370:  20 73 65 74 20 74 6F 20 74 68 65 20 72 65 63 68     set to the rech
010380:  61 72 67 65 20 76 61 6C 75 65 2E 0D 0A 0D 0A 20    arge value..... 
010390:  20 20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64          Entry cond
0103A0:  69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20    itions:....     
0103B0:  20 20 48 4C 20 63 6F 6E 74 61 69 6E 73 20 74 68      HL contains th
0103C0:  65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65    e address of the
0103D0:  20 74 69 63 6B 20 62 6C 6F 63 6B 2E 0D 0A 20 20     tick block...  
0103E0:  20 20 20 20 20 44 45 20 63 6F 6E 74 61 69 6E 73         DE contains
0103F0:  20 74 68 65 20 69 6E 69 74 69 61 6C 20 76 61 6C     the initial val
010400:  75 65 20 66 6F 72 20 74 68 65 20 63 6F 75 6E 74    ue for the count
010410:  20 65 6E 74 72 79 2E 0D 0A 20 20 20 20 20 20 20     entry...       
010420:  42 43 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20    BC contains the 
010430:  76 61 6C 75 65 20 6F 66 20 74 68 65 20 72 65 63    value of the rec
010440:  68 61 72 67 65 20 65 6E 74 72 79 2E 0D 0A 0D 0A    harge entry.....
010450:  20 20 20 20 20 20 20 45 78 69 74 20 63 6F 6E 64           Exit cond
010460:  69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20    itions:....     
010470:  20 20 41 46 2C 20 42 43 2C 20 44 45 20 61 6E 64      AF, BC, DE and
010480:  20 48 4C 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20     HL corrupt...  
010490:  20 20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72         All other r
0104A0:  65 67 69 73 74 65 72 73 20 70 72 65 73 65 72 76    egisters preserv
0104B0:  65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F    ed.....       No
0104C0:  74 65 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    tes:....       T
0104D0:  68 65 20 74 69 63 6B 20 62 6C 6F 63 6B 20 69 73    he tick block is
0104E0:  20 31 33 20 62 79 74 65 73 20 6C 6F 6E 67 20 61     13 bytes long a
0104F0:  6E 64 20 6D 75 73 74 20 6C 69 65 20 69 6E 20 20    nd must lie in  
010500:  74 68 65 20 20 63 65 6E 74 72 61 6C 20 20 33 32    the  central  32
010510:  4B 20 20 6F 66 0D 0A 20 20 20 20 20 20 20 6D 65    K  of..       me
010520:  6D 6F 72 79 2E 20 54 68 65 20 6C 61 73 74 20 37    mory. The last 7
010530:  20 62 79 74 65 73 20 6F 66 20 74 68 65 20 74 69     bytes of the ti
010540:  63 6B 20 62 6C 6F 63 6B 20 61 72 65 20 61 6E 20    ck block are an 
010550:  20 65 76 65 6E 74 20 20 62 6C 6F 63 6B 20 20 77     event  block  w
010560:  68 69 63 68 0D 0A 20 20 20 20 20 20 20 6D 75 73    hich..       mus
010570:  74 20 62 65 20 69 6E 69 74 69 61 6C 69 7A 65 64    t be initialized
010580:  20 62 65 66 6F 72 65 20 74 68 69 73 20 72 6F 75     before this rou
010590:  74 69 6E 65 20 69 73 20 63 61 6C 6C 65 64 2E 20    tine is called. 
0105A0:  54 68 65 20 65 78 61 63 74 20 6C 61 79 6F 75 74    The exact layout
0105B0:  20 6F 66 0D 0A 20 20 20 20 20 20 20 61 20 74 69     of..       a ti
0105C0:  63 6B 20 62 6C 6F 63 6B 20 69 73 20 64 65 73 63    ck block is desc
0105D0:  72 69 62 65 64 20 69 6E 20 41 70 70 65 6E 64 69    ribed in Appendi
0105E0:  78 20 58 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54    x X.....       T
0105F0:  68 65 20 63 6F 75 6E 74 20 61 6E 64 20 72 65 63    he count and rec
010600:  68 61 72 67 65 20 65 6E 74 72 69 65 73 20 69 6E    harge entries in
010610:  20 74 68 65 20 62 6C 6F 63 6B 20 61 72 65 20 73     the block are s
010620:  65 74 2E 20 54 68 65 20 62 6C 6F 63 6B 20 69 73    et. The block is
010630:  20 74 68 65 6E 0D 0A 20 20 20 20 20 20 20 61 70     then..       ap
010640:  70 65 6E 64 65 64 20 74 6F 20 74 68 65 20 74 69    pended to the ti
010650:  63 6B 20 6C 69 73 74 20 69 66 20 69 74 20 69 73    ck list if it is
010660:  20 20 6E 6F 74 20 20 61 6C 72 65 61 64 79 20 20      not  already  
010670:  6F 6E 20 20 74 68 65 20 20 6C 69 73 74 2E 20 20    on  the  list.  
010680:  54 68 69 73 0D 0A 20 20 20 20 20 20 20 72 6F 75    This..       rou
010690:  74 69 6E 65 20 6D 61 79 20 62 65 20 75 73 65 64    tine may be used
0106A0:  2C 20 74 68 65 72 65 66 6F 72 65 2C 20 20 74 6F    , therefore,  to
0106B0:  20 20 63 68 61 6E 67 65 20 20 74 68 65 20 20 63      change  the  c
0106C0:  6F 75 6E 74 20 20 61 6E 64 20 20 72 65 63 68 61    ount  and  recha
0106D0:  72 67 65 0D 0A 20 20 20 20 20 20 20 65 6E 74 72    rge..       entr
0106E0:  69 65 73 20 6F 66 20 61 6E 20 65 78 69 73 74 69    ies of an existi
0106F0:  6E 67 20 62 6C 6F 63 6B 2E 0D 0A 0D 0A 20 20 20    ng block.....   
010700:  20 20 20 20 42 6C 6F 63 6B 73 20 77 69 74 68 20        Blocks with 
010710:  61 20 63 6F 75 6E 74 20 65 6E 74 72 79 20 20 6F    a count entry  o
010720:  66 20 20 7A 65 72 6F 20 20 61 72 65 20 20 69 67    f  zero  are  ig
010730:  6E 6F 72 65 64 20 20 77 68 65 6E 20 20 74 68 65    nored  when  the
010740:  20 20 6C 69 73 74 20 20 69 73 0D 0A 20 20 20 20      list  is..    
010750:  20 20 20 70 72 6F 63 65 73 73 65 64 2E 20 53 65       processed. Se
010760:  74 74 69 6E 67 20 61 20 72 65 63 68 61 72 67 65    tting a recharge
010770:  20 76 61 6C 75 65 20 6F 66 20 7A 65 72 6F 2C 20     value of zero, 
010780:  74 68 65 72 65 66 6F 72 65 2C 20 20 73 65 74 73    therefore,  sets
010790:  20 20 75 70 20 20 74 68 65 0D 0A 20 20 20 20 20      up  the..     
0107A0:  20 20 62 6C 6F 63 6B 20 61 73 20 61 20 27 6F 6E      block as a 'on
0107B0:  65 20 73 68 6F 74 20 74 69 6D 65 72 27 2E 20 53    e shot timer'. S
0107C0:  69 6E 63 65 20 69 74 20 74 61 6B 65 73 20 74 68    ince it takes th
0107D0:  65 20 4B 65 72 6E 65 6C 20 74 69 6D 65 20 74 6F    e Kernel time to
0107E0:  20 20 69 67 6E 6F 72 65 0D 0A 20 20 20 20 20 20      ignore..      
0107F0:  20 61 20 74 69 63 6B 20 62 6C 6F 63 6B 2C 20 61     a tick block, a
010800:  6E 79 20 72 65 64 75 6E 64 61 6E 74 20 62 6C 6F    ny redundant blo
010810:  63 6B 73 20 73 68 6F 75 6C 64 20 62 65 20 72 65    cks should be re
010820:  6D 6F 76 65 64 20 66 72 6F 6D 20 74 68 65 20 6C    moved from the l
010830:  69 73 74 20 20 61 73 0D 0A 20 20 20 20 20 20 20    ist  as..       
010840:  73 6F 6F 6E 20 61 73 20 70 6F 73 73 69 62 6C 65    soon as possible
010850:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 49 74 20 69    .....       It i
010860:  73 20 6E 6F 74 20 70 6F 73 73 69 62 6C 65 20 74    s not possible t
010870:  6F 20 70 72 65 64 69 63 74 2C 20 70 61 72 74 69    o predict, parti
010880:  63 75 6C 61 72 6C 79 20 77 69 74 68 20 20 73 79    cularly with  sy
010890:  6E 63 68 72 6F 6E 6F 75 73 20 20 65 76 65 6E 74    nchronous  event
0108A0:  73 2C 0D 0A 20 20 20 20 20 20 20 68 6F 77 20 6C    s,..       how l
0108B0:  6F 6E 67 20 69 74 20 77 69 6C 6C 20 62 65 20 61    ong it will be a
0108C0:  66 74 65 72 20 74 68 65 20 20 27 6B 69 63 6B 27    fter the  'kick'
0108D0:  20 20 62 65 66 6F 72 65 20 20 74 68 65 20 20 65      before  the  e
0108E0:  76 65 6E 74 20 20 72 6F 75 74 69 6E 65 20 20 69    vent  routine  i
0108F0:  73 0D 0A 20 20 20 20 20 20 20 61 63 74 75 61 6C    s..       actual
010900:  6C 79 20 63 61 6C 6C 65 64 2E 20 4E 6F 74 77 69    ly called. Notwi
010910:  74 68 73 74 61 6E 64 69 6E 67 20 74 68 65 73 65    thstanding these
010920:  20 64 65 6C 61 79 73 2C 20 74 68 65 20 74 69 63     delays, the tic
010930:  6B 65 72 20 6D 61 79 20 62 65 20 20 75 73 65 64    ker may be  used
010940:  0D 0A 20 20 20 20 20 20 20 74 6F 20 6F 62 74 61    ..       to obta
010950:  69 6E 20 61 6E 20 65 78 61 63 74 20 6E 75 6D 62    in an exact numb
010960:  65 72 20 6F 66 20 27 6B 69 63 6B 73 27 20 20 69    er of 'kicks'  i
010970:  6E 20 20 61 20 20 67 69 76 65 6E 20 20 70 65 72    n  a  given  per
010980:  69 6F 64 20 20 73 69 6E 63 65 20 20 74 68 65 0D    iod  since  the.
010990:  0A 20 20 20 20 20 20 20 72 65 63 68 61 72 67 65    .       recharge
0109A0:  20 6D 65 63 68 61 6E 69 73 6D 20 69 6D 6D 65 64     mechanism immed
0109B0:  69 61 74 65 6C 79 20 72 65 73 65 74 73 20 74 68    iately resets th
0109C0:  65 20 63 6F 75 6E 74 2E 20 20 54 68 65 20 20 65    e count.  The  e
0109D0:  76 65 6E 74 20 20 63 6F 75 6E 74 69 6E 67 0D 0A    vent  counting..
0109E0:  20 20 20 20 20 20 20 6D 65 63 68 61 6E 69 73 6D           mechanism
0109F0:  20 77 69 6C 6C 20 65 6E 73 75 72 65 20 74 68 61     will ensure tha
010A00:  74 20 27 6B 69 63 6B 73 27 20 61 72 65 20 6E 6F    t 'kicks' are no
010A10:  74 20 6D 69 73 73 65 64 2C 20 70 72 6F 76 69 64    t missed, provid
010A20:  65 64 20 74 68 61 74 20 74 68 65 72 65 0D 0A 20    ed that there.. 
010A30:  20 20 20 20 20 20 61 72 65 20 6E 65 76 65 72 20          are never 
010A40:  6D 6F 72 65 20 74 68 61 6E 20 31 32 37 20 6F 75    more than 127 ou
010A50:  74 73 74 61 6E 64 69 6E 67 20 61 74 20 6F 6E 63    tstanding at onc
010A60:  65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69    e.....       Thi
010A70:  73 20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C 65    s routine enable
010A80:  73 20 69 6E 74 65 72 72 75 70 74 73 2E 0D 0A 0D    s interrupts....
010A90:  0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64 20    .       Related 
010AA0:  65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 20 20 20 20    entries:....    
010AB0:  20 20 20 4B 4C 20 41 44 44 20 46 41 53 54 20 54       KL ADD FAST T
010AC0:  49 43 4B 45 52 0D 0A 20 20 20 20 20 20 20 4B 4C    ICKER..       KL
010AD0:  20 44 45 4C 20 54 49 43 4B 45 52 0D 0A 20 20 20     DEL TICKER..   
010AE0:  20 20 20 20 4B 4C 20 49 4E 49 54 20 45 56 45 4E        KL INIT EVEN
010AF0:  54 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D    T......       AM
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:  53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34    STRAD CPC464/664
010C10:  2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20    /6128 FIRMWARE  
010C20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
010C30:  20 20 20 20 20 20 20 20 20 70 61 67 65 20 31 35             page 15
010C40:  2E 31 39 37 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    .197............
010C50:  0D 0A 20 20 20 20 20 20 20 31 36 34 3A 20 4B 4C    ..       164: KL
010C60:  20 44 45 4C 20 54 49 43 4B 45 52 20 20 20 20 20     DEL TICKER     
010C70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
010C80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
010C90:  20 20 20 20 20 20 20 20 20 20 23 42 43 45 43 0D              #BCEC.
010CA0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6D 6F    .....       Remo
010CB0:  76 65 20 62 6C 6F 63 6B 20 66 72 6F 6D 20 74 68    ve block from th
010CC0:  65 20 74 69 63 6B 20 6C 69 73 74 2E 0D 0A 0D 0A    e tick list.....
010CD0:  0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A    ..       Action:
010CE0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20    ......       If 
010CF0:  61 20 67 69 76 65 6E 20 62 6C 6F 63 6B 20 69 73    a given block is
010D00:  20 6F 6E 20 74 68 65 20 74 69 63 6B 20 6C 69 73     on the tick lis
010D10:  74 20 69 74 20 69 73 20 72 65 6D 6F 76 65 64 2E    t it is removed.
010D20:  20 20 54 68 65 20 20 63 6F 6E 74 65 6E 74 73 20      The  contents 
010D30:  20 6F 66 0D 0A 20 20 20 20 20 20 20 74 68 65 20     of..       the 
010D40:  62 6C 6F 63 6B 20 61 72 65 20 6E 6F 74 20 61 66    block are not af
010D50:  66 65 63 74 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20    fected.......   
010D60:  20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74        Entry condit
010D70:  69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ions:......     
010D80:  20 20 48 4C 20 63 6F 6E 74 61 69 6E 73 20 74 68      HL contains th
010D90:  65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65    e address of the
010DA0:  20 74 69 63 6B 20 62 6C 6F 63 6B 2E 0D 0A 0D 0A     tick block.....
010DB0:  0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F    ..       Exit co
010DC0:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20    nditions:...... 
010DD0:  20 20 20 20 20 20 49 66 20 74 68 65 20 74 69 63          If the tic
010DE0:  6B 20 62 6C 6F 63 6B 20 77 61 73 20 66 6F 75 6E    k block was foun
010DF0:  64 20 6F 6E 20 74 68 65 20 74 69 63 6B 20 6C 69    d on the tick li
010E00:  73 74 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    st:......       
010E10:  20 20 20 20 20 20 20 20 20 43 61 72 72 79 20 74             Carry t
010E20:  72 75 65 2E 0D 0A 20 20 20 20 20 20 20 20 20 20    rue...          
010E30:  20 20 20 20 20 20 44 45 20 63 6F 6E 74 61 69 6E          DE contain
010E40:  73 20 74 68 65 20 63 6F 75 6E 74 20 72 65 6D 61    s the count rema
010E50:  69 6E 69 6E 67 20 62 65 66 6F 72 65 20 74 68 65    ining before the
010E60:  20 6E 65 78 74 20 65 76 65 6E 74 2E 0D 0A 0D 0A     next event.....
010E70:  0D 0A 20 20 20 20 20 20 20 49 66 20 74 68 65 20    ..       If the 
010E80:  74 69 63 6B 20 62 6C 6F 63 6B 20 77 61 73 20 6E    tick block was n
010E90:  6F 74 20 66 6F 75 6E 64 20 6F 6E 20 74 68 65 20    ot found on the 
010EA0:  74 69 63 6B 20 6C 69 73 74 3A 0D 0A 0D 0A 0D 0A    tick list:......
010EB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
010EC0:  43 61 72 72 79 20 66 61 6C 73 65 2E 0D 0A 20 20    Carry false...  
010ED0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 45                  DE
010EE0:  20 63 6F 72 72 75 70 74 2E 0D 0A 0D 0A 0D 0A 20     corrupt....... 
010EF0:  20 20 20 20 20 20 41 6C 77 61 79 73 3A 0D 0A 0D          Always:...
010F00:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
010F10:  20 20 20 41 2C 20 48 4C 20 61 6E 64 20 6F 74 68       A, HL and oth
010F20:  65 72 20 66 6C 61 67 73 20 63 6F 72 72 75 70 74    er flags corrupt
010F30:  2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
010F40:  20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67       All other reg
010F50:  69 73 74 65 72 73 20 70 72 65 73 65 72 76 65 64    isters preserved
010F60:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F    .......       No
010F70:  74 65 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    tes:....       T
010F80:  68 65 20 63 6F 6E 74 65 6E 74 73 20 6F 66 20 74    he contents of t
010F90:  68 65 20 62 6C 6F 63 6B 20 61 72 65 20 6E 6F 74    he block are not
010FA0:  20 61 66 66 65 63 74 65 64 20 62 79 20 20 72 65     affected by  re
010FB0:  6D 6F 76 69 6E 67 20 20 69 74 20 20 66 72 6F 6D    moving  it  from
010FC0:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 6C 69      the..       li
010FD0:  73 74 2E 20 49 6E 20 70 61 72 74 69 63 75 6C 61    st. In particula
010FE0:  72 20 74 68 65 20 63 6F 6E 74 69 6E 75 65 64 20    r the continued 
010FF0:  70 72 6F 63 65 73 73 69 6E 67 20 6F 66 20 6F 75    processing of ou
011000:  74 73 74 61 6E 64 69 6E 67 20 65 76 65 6E 74 73    tstanding events
011010:  20 20 69 73 0D 0A 20 20 20 20 20 20 20 6E 6F 74      is..       not
011020:  20 61 66 66 65 63 74 65 64 2E 20 54 68 65 20 62     affected. The b
011030:  6C 6F 63 6B 20 63 6F 75 6C 64 20 62 65 20 70 75    lock could be pu
011040:  74 20 62 61 63 6B 20 6F 6E 20 74 68 65 20 6C 69    t back on the li
011050:  73 74 20 61 74 20 61 20 6C 61 74 65 72 20 20 64    st at a later  d
011060:  61 74 65 0D 0A 20 20 20 20 20 20 20 61 6E 64 20    ate..       and 
011070:  69 74 20 63 6F 75 6C 64 20 63 6F 6E 74 69 6E 75    it could continu
011080:  65 20 63 6F 75 6E 74 69 6E 67 20 77 68 65 72 65    e counting where
011090:  20 69 74 20 6C 65 66 74 20 6F 66 66 2E 0D 0A 0D     it left off....
0110A0:  0A 20 20 20 20 20 20 20 54 68 69 73 20 72 6F 75    .       This rou
0110B0:  74 69 6E 65 20 65 6E 61 62 6C 65 73 20 69 6E 74    tine enables int
0110C0:  65 72 72 75 70 74 73 2E 0D 0A 0D 0A 20 20 20 20    errupts.....    
0110D0:  20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72 69       Related entri
0110E0:  65 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 4B 4C    es:....       KL
0110F0:  20 41 44 44 20 54 49 43 4B 45 52 0D 0A 20 20 20     ADD TICKER..   
011100:  20 20 20 20 4B 4C 20 44 45 4C 20 46 41 53 54 20        KL DEL FAST 
011110:  54 49 43 4B 45 52 0D 0A 0D 0A 0D 0A 0D 0A 20 20    TICKER........  
011120:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
011130:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
011140:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
011150:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
011160:  70 61 67 65 20 31 35 2E 31 39 38 0D 0A 0D 0A 0D    page 15.198.....
011170:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
011180:  31 36 35 3A 20 4B 4C 20 49 4E 49 54 20 45 56 45    165: KL INIT EVE
011190:  4E 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20    NT              
0111A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0111B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0111C0:  20 23 42 43 45 46 0D 0A 0D 0A 20 20 20 20 20 20     #BCEF....      
0111D0:  20 49 6E 69 74 69 61 6C 69 7A 65 20 61 6E 20 65     Initialize an e
0111E0:  76 65 6E 74 20 62 6C 6F 63 6B 2E 0D 0A 0D 0A 20    vent block..... 
0111F0:  20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D          Action:...
011200:  0A 20 20 20 20 20 20 20 49 6E 69 74 69 61 6C 69    .       Initiali
011210:  7A 65 20 61 6C 6C 20 65 6E 74 72 69 65 73 20 69    ze all entries i
011220:  6E 20 61 6E 20 65 76 65 6E 74 20 62 6C 6F 63 6B    n an event block
011230:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72    .....       Entr
011240:  79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D    y conditions:...
011250:  0A 20 20 20 20 20 20 20 48 4C 20 63 6F 6E 74 61    .       HL conta
011260:  69 6E 73 20 74 68 65 20 61 64 64 72 65 73 73 20    ins the address 
011270:  6F 66 20 74 68 65 20 65 76 65 6E 74 20 62 6C 6F    of the event blo
011280:  63 6B 2E 0D 0A 20 20 20 20 20 20 20 42 20 63 6F    ck...       B co
011290:  6E 74 61 69 6E 73 20 74 68 65 20 65 76 65 6E 74    ntains the event
0112A0:  20 63 6C 61 73 73 2E 0D 0A 20 20 20 20 20 20 20     class...       
0112B0:  43 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 52    C contains the R
0112C0:  4F 4D 20 73 65 6C 65 63 74 20 61 64 64 72 65 73    OM select addres
0112D0:  73 20 6F 66 20 74 68 65 20 65 76 65 6E 74 20 72    s of the event r
0112E0:  6F 75 74 69 6E 65 2E 0D 0A 20 20 20 20 20 20 20    outine...       
0112F0:  44 45 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20    DE contains the 
011300:  61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 65    address of the e
011310:  76 65 6E 74 20 72 6F 75 74 69 6E 65 2E 0D 0A 0D    vent routine....
011320:  0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F 6E    .       Exit con
011330:  64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20    ditions:....    
011340:  20 20 20 48 4C 20 63 6F 6E 74 61 69 6E 73 20 74       HL contains t
011350:  68 65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68    he address of th
011360:  65 20 65 76 65 6E 74 20 62 6C 6F 63 6B 20 2B 20    e event block + 
011370:  37 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 6C 6C    7.....       All
011380:  20 6F 74 68 65 72 20 72 65 67 69 73 74 65 72 73     other registers
011390:  20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 20     preserved..... 
0113A0:  20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A          Notes:....
0113B0:  20 20 20 20 20 20 20 54 68 65 20 65 76 65 6E 74           The event
0113C0:  20 62 6C 6F 63 6B 20 69 73 20 37 20 62 79 74 65     block is 7 byte
0113D0:  73 20 6C 6F 6E 67 20 61 6E 64 20 6D 75 73 74 20    s long and must 
0113E0:  6C 69 65 20 69 6E 20 20 74 68 65 20 20 63 65 6E    lie in  the  cen
0113F0:  74 72 61 6C 20 20 33 32 4B 20 20 6F 66 0D 0A 20    tral  32K  of.. 
011400:  20 20 20 20 20 20 52 41 4D 2E 20 54 68 65 20 6C          RAM. The l
011410:  61 79 6F 75 74 20 6F 66 20 61 6E 20 65 76 65 6E    ayout of an even
011420:  74 20 62 6C 6F 63 6B 20 69 73 20 20 64 65 73 63    t block is  desc
011430:  72 69 62 65 64 20 20 69 6E 20 20 41 70 70 65 6E    ribed  in  Appen
011440:  64 69 78 20 20 58 2E 20 20 53 65 65 0D 0A 20 20    dix  X.  See..  
011450:  20 20 20 20 20 73 65 63 74 69 6F 6E 20 31 32 20         section 12 
011460:  66 6F 72 20 61 20 67 65 6E 65 72 61 6C 20 64 69    for a general di
011470:  73 63 75 73 73 69 6F 6E 20 6F 66 20 65 76 65 6E    scussion of even
011480:  74 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    ts.....       Th
011490:  65 20 52 4F 4D 20 73 65 6C 65 63 74 20 61 6E 64    e ROM select and
0114A0:  20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20     address of the 
0114B0:  72 6F 75 74 69 6E 65 20 61 72 65 20 74 68 65 20    routine are the 
0114C0:  27 66 61 72 20 61 64 64 72 65 73 73 27 20 6F 66    'far address' of
0114D0:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 65 76 65     the..       eve
0114E0:  6E 74 20 72 6F 75 74 69 6E 65 20 28 73 65 65 20    nt routine (see 
0114F0:  73 65 63 74 69 6F 6E 20 32 29 2E 0D 0A 0D 0A 0D    section 2)......
011500:  0A 20 20 20 20 20 20 20 54 68 65 20 65 76 65 6E    .       The even
011510:  74 20 63 6C 61 73 73 20 69 73 20 62 69 74 20 73    t class is bit s
011520:  69 67 6E 69 66 69 63 61 6E 74 20 61 73 20 66 6F    ignificant as fo
011530:  6C 6C 6F 77 73 3A 0D 0A 0D 0A 20 20 20 20 20 20    llows:....      
011540:  20 20 20 20 20 20 20 20 20 20 42 69 74 20 30 3A              Bit 0:
011550:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 4E 65                  Ne
011560:  61 72 20 61 64 64 72 65 73 73 2E 0D 0A 20 20 20    ar address...   
011570:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74                 Bit
011580:  73 20 31 2E 2E 34 3A 20 20 20 20 20 20 20 20 20    s 1..4:         
011590:  20 53 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65     Synchronous eve
0115A0:  6E 74 20 70 72 69 6F 72 69 74 79 2E 0D 0A 20 20    nt priority...  
0115B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 69                  Bi
0115C0:  74 20 35 3A 20 20 20 20 20 20 20 20 20 20 20 20    t 5:            
0115D0:  20 20 4D 75 73 74 20 62 65 20 7A 65 72 6F 2E 0D      Must be zero..
0115E0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
0115F0:  20 42 69 74 20 36 3A 20 20 20 20 20 20 20 20 20     Bit 6:         
011600:  20 20 20 20 20 45 78 70 72 65 73 73 20 65 76 65         Express eve
011610:  6E 74 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20    nt...           
011620:  20 20 20 20 20 42 69 74 20 37 3A 20 20 20 20 20         Bit 7:     
011630:  20 20 20 20 20 20 20 20 20 41 73 79 6E 63 68 72             Asynchr
011640:  6F 6E 6F 75 73 20 65 76 65 6E 74 2E 0D 0A 0D 0A    onous event.....
011650:  0D 0A 20 20 20 20 20 20 20 49 66 20 74 68 65 20    ..       If the 
011660:  61 73 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65    asynchronous eve
011670:  6E 74 20 62 69 74 20 69 73 20 73 65 74 20 74 68    nt bit is set th
011680:  65 6E 20 74 68 65 20 65 76 65 6E 74 20 69 73 20    en the event is 
011690:  61 6E 20 61 73 79 6E 63 68 72 6F 6E 6F 75 73 0D    an asynchronous.
0116A0:  0A 20 20 20 20 20 20 20 65 76 65 6E 74 2C 20 6F    .       event, o
0116B0:  74 68 65 72 77 69 73 65 20 69 74 20 69 73 20 61    therwise it is a
0116C0:  20 73 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65     synchronous eve
0116D0:  6E 74 2E 20 41 73 79 6E 63 68 72 6F 6E 6F 75 73    nt. Asynchronous
0116E0:  20 65 76 65 6E 74 73 20 64 6F 20 6E 6F 74 0D 0A     events do not..
0116F0:  20 20 20 20 20 20 20 68 61 76 65 20 70 72 69 6F           have prio
011700:  72 69 74 69 65 73 20 61 6E 64 20 73 6F 20 74 68    rities and so th
011710:  65 20 70 72 69 6F 72 69 74 79 20 66 69 65 6C 64    e priority field
011720:  20 69 73 20 69 67 6E 6F 72 65 64 2E 0D 0A 0D 0A     is ignored.....
011730:  0D 0A 20 20 20 20 20 20 20 49 66 20 74 68 65 20    ..       If the 
011740:  65 78 70 72 65 73 73 20 65 76 65 6E 74 20 62 69    express event bi
011750:  74 20 69 73 20 73 65 74 20 74 68 65 6E 20 74 68    t is set then th
011760:  65 20 65 76 65 6E 74 20 69 73 20 20 61 6E 20 20    e event is  an  
011770:  65 78 70 72 65 73 73 20 20 65 76 65 6E 74 2E 0D    express  event..
011780:  0A 20 20 20 20 20 20 20 54 68 65 20 6D 65 61 6E    .       The mean
011790:  69 6E 67 20 6F 66 20 74 68 69 73 20 64 65 70 65    ing of this depe
0117A0:  6E 64 73 20 6F 6E 20 77 68 65 74 68 65 72 20 74    nds on whether t
0117B0:  68 65 20 20 65 76 65 6E 74 20 20 69 73 20 20 73    he  event  is  s
0117C0:  79 6E 63 68 72 6F 6E 6F 75 73 20 20 6F 72 0D 0A    ynchronous  or..
0117D0:  20 20 20 20 20 20 20 61 73 79 6E 63 68 72 6F 6E           asynchron
0117E0:  6F 75 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ous.......      
0117F0:  20 41 6C 6C 20 65 78 70 72 65 73 73 20 73 79 6E     All express syn
011800:  63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 73 20    chronous events 
011810:  68 61 76 65 20 68 69 67 68 65 72 20 70 72 69 6F    have higher prio
011820:  72 69 74 69 65 73 20 74 68 61 6E 20 61 6E 79 20    rities than any 
011830:  20 6E 6F 72 6D 61 6C 0D 0A 20 20 20 20 20 20 20     normal..       
011840:  73 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E    synchronous even
011850:  74 2E 20 54 68 65 20 70 72 69 6F 72 69 74 79 20    t. The priority 
011860:  6F 66 20 61 20 73 79 6E 63 68 72 6F 6E 6F 75 73    of a synchronous
011870:  20 65 76 65 6E 74 20 69 73 20 20 65 6E 63 6F 64     event is  encod
011880:  65 64 20 20 69 6E 0D 0A 20 20 20 20 20 20 20 62    ed  in..       b
011890:  69 74 73 20 31 2E 2E 34 20 6F 66 20 20 74 68 65    its 1..4 of  the
0118A0:  20 20 63 6C 61 73 73 2C 20 20 74 68 65 20 20 68      class,  the  h
0118B0:  69 67 68 65 72 20 20 74 68 65 20 20 6E 75 6D 62    igher  the  numb
0118C0:  65 72 20 20 74 68 65 20 20 67 72 65 61 74 65 72    er  the  greater
0118D0:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 70 72      the..       pr
0118E0:  69 6F 72 69 74 79 2E 20 4E 6F 20 65 76 65 6E 74    iority. No event
0118F0:  20 6D 61 79 20 68 61 76 65 20 20 70 72 69 6F 72     may have  prior
011900:  69 74 79 20 20 30 2E 20 20 54 68 65 20 20 70 72    ity  0.  The  pr
011910:  6F 63 65 73 73 69 6E 67 20 20 6F 66 20 20 6E 6F    ocessing  of  no
011920:  72 6D 61 6C 0D 0A 20 20 20 20 20 20 20 73 79 6E    rmal..       syn
011930:  63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 73 20    chronous events 
011940:  6D 61 79 20 62 65 20 64 69 73 61 62 6C 65 64 20    may be disabled 
011950:  20 28 62 79 20 20 63 61 6C 6C 69 6E 67 20 20 4B     (by  calling  K
011960:  4C 20 20 45 56 45 4E 54 20 20 44 49 53 41 42 4C    L  EVENT  DISABL
011970:  45 29 2C 0D 0A 20 20 20 20 20 20 20 77 68 69 6C    E),..       whil
011980:  65 20 74 68 61 74 20 69 66 20 65 78 70 72 65 73    e that if expres
011990:  73 20 73 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76    s synchronous ev
0119A0:  65 6E 74 73 20 6D 61 79 20 6E 6F 74 2E 0D 0A 0D    ents may not....
0119B0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54    .....       AMST
0119C0:  52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36    RAD CPC464/664/6
0119D0:  31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20    128 FIRMWARE    
0119E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0119F0:  20 20 20 20 20 20 20 70 61 67 65 20 31 35 2E 31           page 15.1
011A00:  39 39 0D 0A 1A 50 2D 31 35 20 24 24 24 FF 00 FF    99...P-15 $$$...
011A10:  20 20 20 54 68 65 20 66 69 72 73 74 20 62 79 74       The first byt
011A20:  65 20 6F 66 20 74 68 65 20 74 6F 6E 65 20 64 61    e of the tone da
011A30:  74 61 20 62 6C 6F 63 6B 20 28 6D 61 73 6B 65 64    ta block (masked
011A40:  20 77 69 74 68 20 23 37 46 29 20 73 70 65 63 69     with #7F) speci
011A50:  66 69 65 73 20 20 74 68 65 0D 0A 20 20 20 20 20    fies  the..     
011A60:  20 20 6E 75 6D 62 65 72 20 6F 66 20 73 65 63 74      number of sect
011A70:  69 6F 6E 73 20 75 73 65 64 20 69 6E 20 74 68 65    ions used in the
011A80:  65 64 20 20 69 6E 0D 0A 20 20 20 20 20 20 20 62    ed  in..       b
011A90:  69 74 73 20 31 2E 2E 34 20 6F 66 20 20 74 68 65    its 1..4 of  the
011AA0:  20 20 63 6C 61 73 73 2C 20 20 74 68 65 20 20 68      class,  the  h
011AB0:  69 67 68 65 72 20 20 74 68 65 20 20 6E 75 6D 62    igher  the  numb
011AC0:  65 72 20 20 74 68 65 20 20 67 72 65 61 74 65 72    er  the  greater
011AD0:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 70 72      the..       pr
011AE0:  69 6F 72 69 74 79 2E 20 4E 6F 20 65 76 65 6E 74    iority. No event
011AF0:  20 6D 61 79 20 68 61 76 65 20 20 70 72 69 6F 72     may have  prior
011B00:  69 74 79 20 20 30 2E 20 20 54 68 65 20 20 70 72    ity  0.  The  pr
011B10:  6F 63 65 73 73 69 6E 67 20 20 6F 66 20 20 6E 6F    ocessing  of  no
011B20:  72 6D 61 6C 0D 0A 20 20 20 20 20 20 20 73 79 6E    rmal..       syn
011B30:  63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 73 20    chronous events 
011B40:  6D 61 79 20 62 65 20 64 69 73 61 62 6C 65 64 20    may be disabled 
011B50:  20 28 62 79 20 20 63 61 6C 6C 69 6E 67 20 20 4B     (by  calling  K
011B60:  4C 20 20 45 56 45 4E 54 20 20 44 49 53 41 42 4C    L  EVENT  DISABL
011B70:  45 29 2C 0D 0A 20 20 20 20 20 20 20 77 68 69 6C    E),..       whil
011B80:  65 20 74 68 61 74 20 69 66 20 65 78 70 72 65 73    e that if expres
011B90:  73 20 73 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76    s synchronous ev
011BA0:  65 6E 74 73 20 6D 61 79 20 6E 6F 74 2E 0D 0A 0D    ents may not....
011BB0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54    .....       AMST
011BC0:  52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36    RAD CPC464/664/6
011BD0:  31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20    128 FIRMWARE    
011BE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
011BF0:  20 20 20 20 20 20 20 70 61 67 65 20 31 35 2E 31           page 15.1
011C00:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
011C10:  20 20 20 41 6E 20 65 78 70 72 65 73 73 20 61 73       An express as
011C20:  79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74    ynchronous event
011C30:  20 20 77 69 6C 6C 20 20 68 61 76 65 20 20 69 74      will  have  it
011C40:  73 20 20 65 76 65 6E 74 20 20 72 6F 75 74 69 6E    s  event  routin
011C50:  65 20 20 63 61 6C 6C 65 64 0D 0A 20 20 20 20 20    e  called..     
011C60:  20 20 64 69 72 65 63 74 6C 79 20 66 72 6F 6D 20      directly from 
011C70:  74 68 65 20 69 6E 74 65 72 72 75 70 74 20 20 70    the interrupt  p
011C80:  61 74 68 2E 20 20 41 20 20 6E 6F 72 6D 61 6C 20    ath.  A  normal 
011C90:  20 61 73 79 6E 63 68 72 6F 6E 6F 75 73 20 20 65     asynchronous  e
011CA0:  76 65 6E 74 20 20 69 73 0D 0A 20 20 20 20 20 20    vent  is..      
011CB0:  20 70 72 6F 63 65 73 73 65 64 20 6A 75 73 74 20     processed just 
011CC0:  62 65 66 6F 72 65 20 72 65 74 75 72 6E 69 6E 67    before returning
011CD0:  20 66 72 6F 6D 20 74 68 65 20 20 69 6E 74 65 72     from the  inter
011CE0:  72 75 70 74 20 20 28 77 69 74 68 20 20 69 6E 74    rupt  (with  int
011CF0:  65 72 72 75 70 74 73 0D 0A 20 20 20 20 20 20 20    errupts..       
011D00:  65 6E 61 62 6C 65 64 29 2E 0D 0A 0D 0A 0D 0A 20    enabled)....... 
011D10:  20 20 20 20 20 20 49 66 20 74 68 65 20 6E 65 61          If the nea
011D20:  72 20 61 64 64 72 65 73 73 20 62 69 74 20 69 73    r address bit is
011D30:  20 73 65 74 20 20 74 68 65 6E 20 20 74 68 65 20     set  then  the 
011D40:  20 65 76 65 6E 74 20 20 72 6F 75 74 69 6E 65 20     event  routine 
011D50:  20 69 73 20 20 6C 6F 63 61 74 65 64 0D 0A 20 20     is  located..  
011D60:  20 20 20 20 20 65 69 74 68 65 72 20 69 6E 20 74         either in t
011D70:  68 65 20 6C 6F 77 65 72 20 52 4F 4D 20 6F 72 20    he lower ROM or 
011D80:  69 6E 20 74 68 65 20 63 65 6E 74 72 61 6C 20 33    in the central 3
011D90:  32 4B 20 6F 66 20 52 41 4D 2E 20 54 68 65 20 20    2K of RAM. The  
011DA0:  52 4F 4D 20 20 73 65 6C 65 63 74 0D 0A 20 20 20    ROM  select..   
011DB0:  20 20 20 20 61 64 64 72 65 73 73 20 69 73 20 69        address is i
011DC0:  67 6E 6F 72 65 64 20 61 6E 64 20 74 68 65 20 72    gnored and the r
011DD0:  6F 75 74 69 6E 65 20 69 73 20 20 63 61 6C 6C 65    outine is  calle
011DE0:  64 20 20 64 69 72 65 63 74 6C 79 2C 20 20 72 61    d  directly,  ra
011DF0:  74 68 65 72 20 20 74 68 61 6E 0D 0A 20 20 20 20    ther  than..    
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:  20 20 20 74 68 72 6F 75 67 68 20 74 68 65 20 46       through the F
011F10:  41 52 20 43 41 4C 4C 20 6D 65 63 68 61 6E 69 73    AR CALL mechanis
011F20:  6D 2C 20 74 68 75 73 20 20 72 65 64 75 63 69 6E    m, thus  reducin
011F30:  67 20 20 74 68 65 20 20 65 76 65 6E 74 20 20 70    g  the  event  p
011F40:  72 6F 63 65 73 73 69 6E 67 0D 0A 20 20 20 20 20    rocessing..     
011F50:  20 20 6F 76 65 72 68 65 61 64 2E 20 57 68 65 72      overhead. Wher
011F60:  65 20 70 6F 73 73 69 62 6C 65 2C 20 20 61 73 79    e possible,  asy
011F70:  6E 63 68 72 6F 6E 6F 75 73 20 20 65 76 65 6E 74    nchronous  event
011F80:  73 20 20 73 68 6F 75 6C 64 20 20 62 65 20 20 61    s  should  be  a
011F90:  74 20 20 27 6E 65 61 72 0D 0A 20 20 20 20 20 20    t  'near..      
011FA0:  20 61 64 64 72 65 73 73 65 73 27 2E 20 45 78 70     addresses'. Exp
011FB0:  72 65 73 73 20 20 61 73 79 6E 63 68 72 6F 6E 6F    ress  asynchrono
011FC0:  75 73 20 20 65 76 65 6E 74 73 20 20 6D 75 73 74    us  events  must
011FD0:  20 20 61 6C 77 61 79 73 20 20 62 65 20 20 61 74      always  be  at
011FE0:  20 20 27 6E 65 61 72 0D 0A 20 20 20 20 20 20 20      'near..       
011FF0:  61 64 64 72 65 73 73 65 73 27 2E 0D 0A 0D 0A 20    addresses'..... 
012000:  20 20 20 20 20 20 45 76 65 6E 74 20 62 6C 6F 63          Event bloc
012010:  6B 73 20 61 70 70 65 61 72 20 69 6E 20 76 61 72    ks appear in var
012020:  69 6F 75 73 20 6F 74 68 65 72 20 62 6C 6F 63 6B    ious other block
012030:  73 20 20 68 61 6E 64 6C 65 64 20 20 62 79 20 20    s  handled  by  
012040:  74 68 65 20 20 4B 65 72 6E 65 6C 2C 0D 0A 20 20    the  Kernel,..  
012050:  20 20 20 20 20 69 6E 63 6C 75 64 69 6E 67 20 66         including f
012060:  72 61 6D 65 20 66 6C 79 62 61 63 6B 2C 20 66 61    rame flyback, fa
012070:  73 74 20 74 69 63 6B 65 72 20 61 6E 64 20 74 69    st ticker and ti
012080:  63 6B 20 62 6C 6F 63 6B 73 2E 20 54 68 69 73 20    ck blocks. This 
012090:  72 6F 75 74 69 6E 65 20 20 69 73 0D 0A 20 20 20    routine  is..   
0120A0:  20 20 20 20 75 73 65 64 20 74 6F 20 69 6E 69 74        used to init
0120B0:  69 61 6C 69 7A 65 20 74 68 65 20 65 76 65 6E 74    ialize the event
0120C0:  20 62 6C 6F 63 6B 20 70 61 72 74 73 20 6F 66 20     block parts of 
0120D0:  74 68 65 73 65 2E 0D 0A 0D 0A 20 20 20 20 20 20    these.....      
0120E0:  20 54 68 65 20 62 79 74 65 73 20 61 66 74 65 72     The bytes after
0120F0:  20 74 68 65 20 6C 61 73 74 20 62 79 74 65 20 6F     the last byte o
012100:  66 20 74 68 65 20 65 76 65 6E 74 20 62 6C 6F 63    f the event bloc
012110:  6B 2C 20 65 76 65 6E 20 77 68 65 72 65 20 74 68    k, even where th
012120:  65 20 62 6C 6F 63 6B 0D 0A 20 20 20 20 20 20 20    e block..       
012130:  66 6F 72 6D 73 20 70 61 72 74 20 6F 66 20 61 6E    forms part of an
012140:  6F 74 68 65 72 20 62 6C 6F 63 6B 2C 20 61 72 65    other block, are
012150:  20 6E 6F 74 20 75 73 65 64 20 20 62 79 20 20 74     not used  by  t
012160:  68 65 20 20 4B 65 72 6E 65 6C 2E 20 20 57 68 65    he  Kernel.  Whe
012170:  6E 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 65    n  the..       e
012180:  76 65 6E 74 20 72 6F 75 74 69 6E 65 20 69 73 20    vent routine is 
012190:  63 61 6C 6C 65 64 20 74 68 65 20 61 64 64 72 65    called the addre
0121A0:  73 73 20 6F 66 20 74 68 65 20 62 6C 6F 63 6B 20    ss of the block 
0121B0:  69 73 20 70 61 73 73 65 64 20 74 6F 20 20 69 74    is passed to  it
0121C0:  2C 20 20 73 6F 0D 0A 20 20 20 20 20 20 20 74 68    ,  so..       th
0121D0:  65 20 75 73 65 72 20 6D 61 79 20 61 70 70 65 6E    e user may appen
0121E0:  64 20 66 75 72 74 68 65 72 20 69 6E 66 6F 72 6D    d further inform
0121F0:  61 74 69 6F 6E 20 61 62 6F 75 74 20 74 68 65 20    ation about the 
012200:  65 76 65 6E 74 20 74 6F 20 74 68 65 20 20 62 6C    event to the  bl
012210:  6F 63 6B 2E 0D 0A 20 20 20 20 20 20 20 54 68 69    ock...       Thi
012220:  73 20 61 6C 6C 6F 77 73 20 73 65 76 65 72 61 6C    s allows several
012230:  20 73 69 6D 69 6C 61 72 20 65 76 65 6E 74 73 20     similar events 
012240:  74 6F 20 73 68 61 72 65 20 74 68 65 20 20 73 61    to share the  sa
012250:  6D 65 20 20 65 76 65 6E 74 20 20 72 6F 75 74 69    me  event  routi
012260:  6E 65 2C 0D 0A 20 20 20 20 20 20 20 65 61 63 68    ne,..       each
012270:  20 65 76 65 6E 74 20 68 61 76 69 6E 67 20 69 74     event having it
012280:  73 20 27 6F 77 6E 27 20 76 61 72 69 61 62 6C 65    s 'own' variable
012290:  73 20 61 70 70 65 6E 64 65 64 20 74 6F 20 69 74    s appended to it
0122A0:  73 20 65 76 65 6E 74 20 62 6C 6F 63 6B 2E 0D 0A    s event block...
0122B0:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 65 76 65    ..       The eve
0122C0:  6E 74 20 72 6F 75 74 69 6E 65 20 68 61 73 20 74    nt routine has t
0122D0:  68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20 65 6E 74    he following ent
0122E0:  72 79 20 61 6E 64 20 65 78 69 74 20 63 6F 6E 64    ry and exit cond
0122F0:  69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20    itions:....     
012300:  20 20 45 6E 74 72 79 3A 0D 0A 0D 0A 20 20 20 20      Entry:....    
012310:  20 20 20 54 68 65 20 65 76 65 6E 74 20 72 6F 75       The event rou
012320:  74 69 6E 65 20 69 73 20 61 74 20 61 20 27 66 61    tine is at a 'fa
012330:  72 20 61 64 64 72 65 73 73 27 3A 0D 0A 0D 0A 20    r address':.... 
012340:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48                   H
012350:  4C 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 61    L contains the a
012360:  64 64 72 65 73 73 20 6F 66 20 62 79 74 65 20 35    ddress of byte 5
012370:  20 6F 66 20 74 68 65 20 65 76 65 6E 74 20 62 6C     of the event bl
012380:  6F 63 6B 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ock..           
012390:  20 20 20 20 20 28 73 6F 20 61 6E 79 20 61 70 70         (so any app
0123A0:  65 6E 64 65 64 20 64 61 74 61 20 63 61 6E 20 73    ended data can s
0123B0:  74 61 72 74 20 61 74 20 61 64 64 72 65 73 73 20    tart at address 
0123C0:  48 4C 20 2B 20 32 29 2E 0D 0A 0D 0A 20 20 20 20    HL + 2).....    
0123D0:  20 20 20 49 66 20 74 68 65 20 65 76 65 6E 74 20       If the event 
0123E0:  72 6F 75 74 69 6E 65 20 69 73 20 61 74 20 61 20    routine is at a 
0123F0:  27 6E 65 61 72 20 61 64 64 72 65 73 73 27 3A 0D    'near address':.
012400:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
012410:  20 20 20 44 45 20 63 6F 6E 74 61 69 6E 73 20 74       DE contains t
012420:  68 65 20 61 64 64 72 65 73 73 20 6F 66 20 62 79    he address of by
012430:  74 65 20 36 20 6F 66 20 74 68 65 20 65 76 65 6E    te 6 of the even
012440:  74 20 62 6C 6F 63 6B 0D 0A 20 20 20 20 20 20 20    t block..       
012450:  20 20 20 20 20 20 20 20 20 28 73 6F 20 61 6E 79             (so any
012460:  20 61 70 70 65 6E 64 65 64 20 64 61 74 61 20 63     appended data c
012470:  61 6E 20 73 74 61 72 74 20 61 74 20 61 64 64 72    an start at addr
012480:  65 73 73 20 44 45 20 2B 20 31 29 2E 0D 0A 0D 0A    ess DE + 1).....
012490:  20 20 20 20 20 20 20 45 78 69 74 3A 0D 0A 0D 0A           Exit:....
0124A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0124B0:  41 46 2C 20 42 43 2C 20 44 45 20 61 6E 64 20 48    AF, BC, DE and H
0124C0:  4C 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20    L corrupt...    
0124D0:  20 20 20 20 20 20 20 20 20 20 20 20 41 6C 6C 20                All 
0124E0:  6F 74 68 65 72 20 72 65 67 69 73 74 65 72 73 20    other registers 
0124F0:  70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 20 20    preserved.....  
012500:  20 20 20 20 20 54 68 65 20 65 76 65 6E 74 20 72         The event r
012510:  6F 75 74 69 6E 65 20 6D 61 79 20 75 73 65 20 74    outine may use t
012520:  68 65 20 49 58 20 61 6E 64 20 49 59 20 72 65 67    he IX and IY reg
012530:  69 73 74 65 72 73 20 20 62 75 74 20 20 6D 75 73    isters  but  mus
012540:  74 20 20 70 72 65 73 65 72 76 65 0D 0A 20 20 20    t  preserve..   
012550:  20 20 20 20 74 68 65 6D 2E 20 49 74 20 6D 61 79        them. It may
012560:  20 6E 6F 74 20 75 73 65 20 74 68 65 20 73 65 63     not use the sec
012570:  6F 6E 64 20 20 72 65 67 69 73 74 65 72 20 20 73    ond  register  s
012580:  65 74 2E 20 20 45 78 70 72 65 73 73 20 20 61 73    et.  Express  as
012590:  79 6E 63 68 72 6F 6E 6F 75 73 0D 0A 20 20 20 20    ynchronous..    
0125A0:  20 20 20 65 76 65 6E 74 73 20 6D 61 79 20 6E 6F       events may no
0125B0:  74 20 65 6E 61 62 6C 65 20 69 6E 74 65 72 72 75    t enable interru
0125C0:  70 74 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 4B    pts.....       K
0125D0:  4C 20 49 4E 49 54 20 45 56 45 4E 54 20 65 6E 61    L INIT EVENT ena
0125E0:  62 6C 65 73 20 69 6E 74 65 72 72 75 70 74 73 2E    bles interrupts.
0125F0:  0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74    ....       Relat
012600:  65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 20 20 20    ed entries:..   
012610:  20 20 20 20 4B 4C 20 44 45 4C 20 53 59 4E 43 48        KL DEL SYNCH
012620:  52 4F 4E 4F 55 53 0D 0A 20 20 20 20 20 20 20 4B    RONOUS..       K
012630:  4C 20 44 49 53 41 52 4D 20 45 56 45 4E 54 0D 0A    L DISARM EVENT..
012640:  20 20 20 20 20 20 20 4B 4C 20 45 56 45 4E 54 0D           KL EVENT.
012650:  0A 20 20 20 20 20 20 20 4B 4C 20 4E 45 57 20 46    .       KL NEW F
012660:  41 53 54 20 54 49 43 4B 45 52 0D 0A 20 20 20 20    AST TICKER..    
012670:  20 20 20 4B 4C 20 4E 45 57 20 46 52 41 4D 45 20       KL NEW FRAME 
012680:  46 4C 59 0D 0A 20 20 20 20 20 20 20 4B 4C 20 4E    FLY..       KL N
012690:  45 57 20 54 49 43 4B 45 52 0D 0A 20 20 20 20 20    EW TICKER..     
0126A0:  20 20 4B 4C 20 53 59 4E 43 20 52 45 53 45 54 0D      KL SYNC RESET.
0126B0:  0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41    ...       AMSTRA
0126C0:  44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32    D CPC464/664/612
0126D0:  38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20    8 FIRMWARE      
0126E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0126F0:  20 20 20 20 20 70 61 67 65 20 31 35 2E 32 30 30         page 15.200
012700:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ..............  
012710:  20 20 20 20 20 31 36 36 3A 20 4B 4C 20 45 56 45         166: KL EVE
012720:  4E 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20    NT              
012730:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
012740:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
012750:  20 20 20 20 20 20 23 42 43 46 32 0D 0A 0D 0A 20          #BCF2.... 
012760:  20 20 20 20 20 20 27 4B 69 63 6B 27 20 61 6E 20          'Kick' an 
012770:  65 76 65 6E 74 20 62 6C 6F 63 6B 2E 0D 0A 0D 0A    event block.....
012780:  0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A    ..       Action:
012790:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 65    ....       The e
0127A0:  76 65 6E 74 20 6D 65 63 68 61 6E 69 73 6D 20 61    vent mechanism a
0127B0:  72 72 61 6E 67 65 73 20 20 74 68 61 74 20 20 61    rranges  that  a
0127C0:  6E 20 20 65 76 65 6E 74 20 20 72 6F 75 74 69 6E    n  event  routin
0127D0:  65 20 20 62 65 20 20 63 61 6C 6C 65 64 20 20 69    e  be  called  i
0127E0:  6E 0D 0A 20 20 20 20 20 20 20 72 65 73 70 6F 6E    n..       respon
0127F0:  73 65 20 74 6F 20 65 61 63 68 20 27 6B 69 63 6B    se to each 'kick
012800:  27 20 6F 66 20 61 6E 20 20 65 76 65 6E 74 20 20    ' of an  event  
012810:  62 6C 6F 63 6B 2E 20 20 4B 4C 20 20 45 56 45 4E    block.  KL  EVEN
012820:  54 20 20 70 65 72 66 6F 72 6D 73 20 20 74 68 65    T  performs  the
012830:  0D 0A 20 20 20 20 20 20 20 27 6B 69 63 6B 27 2E    ..       'kick'.
012840:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79    ....       Entry
012850:  20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A     conditions:....
012860:  20 20 20 20 20 20 20 48 4C 20 63 6F 6E 74 61 69           HL contai
012870:  6E 73 20 74 68 65 20 61 64 64 72 65 73 73 20 6F    ns the address o
012880:  66 20 74 68 65 20 65 76 65 6E 74 20 62 6C 6F 63    f the event bloc
012890:  6B 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69    k.....       Exi
0128A0:  74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D    t conditions:...
0128B0:  0A 20 20 20 20 20 20 20 41 46 2C 20 42 43 2C 20    .       AF, BC, 
0128C0:  44 45 20 61 6E 64 20 48 4C 20 63 6F 72 72 75 70    DE and HL corrup
0128D0:  74 2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F    t...       All o
0128E0:  74 68 65 72 20 72 65 67 69 73 74 65 72 73 20 70    ther registers p
0128F0:  72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 20 20 20    reserved.....   
012900:  20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 20 20        Notes:....  
012910:  20 20 20 20 20 55 6E 6C 69 6B 65 20 74 68 65 20         Unlike the 
012920:  76 61 73 74 20 6D 61 6A 6F 72 69 74 79 20 6F 66    vast majority of
012930:  20 4B 65 72 6E 65 6C 20 72 6F 75 74 69 6E 65 73     Kernel routines
012940:  20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 6D 61     this routine ma
012950:  79 20 62 65 20 63 61 6C 6C 65 64 0D 0A 20 20 20    y be called..   
012960:  20 20 20 20 66 72 6F 6D 20 74 68 65 20 69 6E 74        from the int
012970:  65 72 72 75 70 74 20 70 61 74 68 2E 20 42 65 63    errupt path. Bec
012980:  61 75 73 65 20 74 68 65 20 4C 4F 57 20 4A 55 4D    ause the LOW JUM
012990:  50 20 69 6E 73 74 72 75 63 74 69 6F 6E 20 69 6E    P instruction in
0129A0:  20 74 68 65 20 20 6D 61 69 6E 0D 0A 20 20 20 20     the  main..    
0129B0:  20 20 20 66 69 72 6D 77 61 72 65 20 6A 75 6D 70       firmware jump
0129C0:  62 6C 6F 63 6B 20 65 6E 61 62 6C 65 73 20 69 6E    block enables in
0129D0:  74 65 72 72 75 70 74 73 20 74 68 65 20 75 73 65    terrupts the use
0129E0:  72 20 6D 61 79 20 20 70 69 63 6B 20 20 74 68 65    r may  pick  the
0129F0:  20 20 61 64 64 72 65 73 73 0D 0A 20 20 20 20 20      address..     
012A00:  20 20 70 61 72 74 20 6F 66 20 74 68 65 20 27 6C      part of the 'l
012A10:  6F 77 20 61 64 64 72 65 73 73 27 20 6F 75 74 20    ow address' out 
012A20:  6F 66 20 74 68 65 20 6A 75 6D 70 62 6C 6F 63 6B    of the jumpblock
012A30:  20 61 6E 64 20 6D 61 73 6B 20 20 6F 66 66 20 20     and mask  off  
012A40:  74 68 65 20 20 74 6F 70 0D 0A 20 20 20 20 20 20    the  top..      
012A50:  20 74 77 6F 20 62 69 74 73 20 74 6F 20 65 78 74     two bits to ext
012A60:  72 61 63 74 20 74 68 65 20 61 64 64 72 65 73 73    ract the address
012A70:  20 69 6E 20 74 68 65 20 6C 6F 77 65 72 20 20 52     in the lower  R
012A80:  4F 4D 20 20 6F 66 20 20 4B 4C 20 20 45 56 45 4E    OM  of  KL  EVEN
012A90:  54 2E 20 20 54 68 65 0D 0A 20 20 20 20 20 20 20    T.  The..       
012AA0:  66 6F 6C 6C 6F 77 69 6E 67 20 63 6F 64 65 20 64    following code d
012AB0:  6F 65 73 20 74 68 69 73 3A 0D 0A 0D 0A 20 20 20    oes this:....   
012AC0:  20 20 20 20 4C 44 20 44 45 2C 28 4B 4C 5F 45 56        LD DE,(KL_EV
012AD0:  45 4E 54 2B 31 29 20 20 20 20 20 20 20 20 20 3B    ENT+1)         ;
012AE0:  65 78 74 72 61 63 74 20 61 64 64 72 65 73 73 20    extract address 
012AF0:  6F 66 20 4C 4F 57 20 4A 55 4D 50 0D 0A 20 20 20    of LOW JUMP..   
012B00:  20 20 20 20 52 45 53 20 37 2C 44 20 20 20 20 20        RES 7,D     
012B10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B                   ;
012B20:  72 65 6D 6F 76 65 20 75 70 70 65 72 20 52 4F 4D    remove upper ROM
012B30:  20 73 74 61 74 65 20 66 72 6F 6D 20 27 6C 6F 77     state from 'low
012B40:  20 61 64 64 72 65 73 73 27 0D 0A 20 20 20 20 20     address'..     
012B50:  20 20 52 45 53 20 36 2C 44 20 20 20 20 20 20 20      RES 6,D       
012B60:  20 20 20 20 20 20 20 20 20 20 20 20 20 3B 72 65                 ;re
012B70:  6D 6F 76 65 20 6C 6F 77 65 72 20 52 4F 4D 20 73    move lower ROM s
012B80:  74 61 74 65 20 66 72 6F 6D 20 27 6C 6F 77 20 61    tate from 'low a
012B90:  64 64 72 65 73 73 27 0D 0A 20 20 20 20 20 20 20    ddress'..       
012BA0:  43 41 4C 4C 20 50 43 44 45 5F 49 4E 53 54 52 55    CALL PCDE_INSTRU
012BB0:  43 54 49 4F 4E 20 20 20 20 20 20 3B 43 41 4C 4C    CTION      ;CALL
012BC0:  20 4B 4C 20 45 56 45 4E 54 0D 0A 0D 0A 20 20 20     KL EVENT....   
012BD0:  20 20 20 20 28 49 66 20 74 68 65 20 75 73 65 72        (If the user
012BE0:  20 69 73 20 67 6F 69 6E 67 20 74 6F 20 20 70 65     is going to  pe
012BF0:  72 66 6F 72 6D 20 20 74 68 69 73 20 20 6F 70 65    rform  this  ope
012C00:  72 61 74 69 6F 6E 20 20 72 65 70 65 61 74 65 64    ration  repeated
012C10:  6C 79 20 20 69 74 20 20 69 73 0D 0A 20 20 20 20    ly  it  is..    
012C20:  20 20 20 72 65 63 6F 6D 6D 65 6E 64 65 64 20 74       recommended t
012C30:  68 61 74 20 74 68 65 20 61 64 64 72 65 73 73 20    hat the address 
012C40:  73 68 6F 75 6C 64 20 62 65 20 65 78 74 72 61 63    should be extrac
012C50:  74 65 64 20 6F 6E 63 65 20 20 61 6E 64 20 20 73    ted once  and  s
012C60:  68 6F 75 6C 64 20 20 62 65 0D 0A 20 20 20 20 20    hould  be..     
012C70:  20 20 73 74 6F 72 65 64 20 73 6F 6D 65 77 68 65      stored somewhe
012C80:  72 65 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54    re).....       T
012C90:  68 65 20 65 66 66 65 63 74 20 6F 66 20 74 68 65    he effect of the
012CA0:  20 27 6B 69 63 6B 27 20 64 65 70 65 6E 64 73 20     'kick' depends 
012CB0:  6F 6E 20 20 74 68 65 20 20 65 76 65 6E 74 20 20    on  the  event  
012CC0:  63 6F 75 6E 74 20 20 69 6E 20 20 74 68 65 20 20    count  in  the  
012CD0:  65 76 65 6E 74 0D 0A 20 20 20 20 20 20 20 62 6C    event..       bl
012CE0:  6F 63 6B 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20    ock:....        
012CF0:  20 20 20 43 6F 75 6E 74 20 3C 20 30 20 3A 20 20       Count < 0 :  
012D00:  54 68 65 20 65 76 65 6E 74 20 69 73 20 64 69 73    The event is dis
012D10:  61 72 6D 65 64 2C 20 61 6E 64 20 6B 69 63 6B 69    armed, and kicki
012D20:  6E 67 20 69 74 20 68 61 73 20 6E 6F 20 65 66 66    ng it has no eff
012D30:  65 63 74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20    ect.....        
012D40:  20 20 20 43 6F 75 6E 74 20 3E 20 30 20 3A 20 20       Count > 0 :  
012D50:  54 68 65 72 65 20 61 72 65 20 6F 74 68 65 72 20    There are other 
012D60:  6B 69 63 6B 73 20 6F 75 74 73 74 61 6E 64 69 6E    kicks outstandin
012D70:  67 20 61 6E 64 20 20 74 68 65 20 20 65 76 65 6E    g and  the  even
012D80:  74 20 20 69 73 0D 0A 20 20 20 20 20 20 20 20 20    t  is..         
012D90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                   b
012DA0:  65 69 6E 67 20 70 72 6F 63 65 73 73 65 64 2E 20    eing processed. 
012DB0:  20 54 68 69 73 20 20 6B 69 63 6B 20 20 73 69 6D     This  kick  sim
012DC0:  70 6C 79 20 20 69 6E 63 72 65 6D 65 6E 74 73 20    ply  increments 
012DD0:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 20 20 20     the..          
012DE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6F                  co
012DF0:  75 6E 74 20 28 75 6E 6C 65 73 73 20 69 74 20 68    unt (unless it h
012E00:  61 73 20 61 6C 72 65 61 64 79 20 72 65 61 63 68    as already reach
012E10:  65 64 20 74 68 65 20 20 6D 61 78 69 6D 75 6D 20    ed the  maximum 
012E20:  20 6F 66 0D 0A 20 20 20 20 20 20 20 20 20 20 20     of..           
012E30:  20 20 20 20 20 20 20 20 20 20 20 20 20 31 32 37                 127
012E40:  29 2E 20 4F 6E 63 65 20 65 76 65 6E 74 20 70 72    ). Once event pr
012E50:  6F 63 65 73 73 69 6E 67 20 68 61 73 20 20 62 65    ocessing has  be
012E60:  67 75 6E 20 20 69 74 20 20 63 6F 6E 74 69 6E 75    gun  it  continu
012E70:  65 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    es..            
012E80:  20 20 20 20 20 20 20 20 20 20 20 20 75 6E 74 69                unti
012E90:  6C 20 20 74 68 65 20 20 63 6F 75 6E 74 20 20 62    l  the  count  b
012EA0:  65 63 6F 6D 65 73 20 20 7A 65 72 6F 20 20 6F 72    ecomes  zero  or
012EB0:  20 20 74 68 65 20 20 65 76 65 6E 74 20 20 20 69      the  event   i
012EC0:  73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    s..             
012ED0:  20 20 20 20 20 20 20 20 20 20 20 64 69 73 61 72               disar
012EE0:  6D 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20    med.....        
012EF0:  20 20 20 43 6F 75 6E 74 20 3D 20 30 20 3A 20 20       Count = 0 :  
012F00:  54 68 65 20 65 76 65 6E 74 20 20 69 73 20 20 61    The event  is  a
012F10:  72 6D 65 64 20 20 62 75 74 20 20 65 76 65 6E 74    rmed  but  event
012F20:  20 20 70 72 6F 63 65 73 73 69 6E 67 20 20 69 73      processing  is
012F30:  20 20 6E 6F 74 0D 0A 20 20 20 20 20 20 20 20 20      not..         
012F40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61                   a
012F50:  63 74 69 76 65 2E 0D 0A 20 20 20 20 20 20 20 20    ctive...        
012F60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
012F70:  54 68 65 20 20 63 6F 75 6E 74 20 20 69 73 20 20    The  count  is  
012F80:  69 6E 63 72 65 6D 65 6E 74 65 64 20 20 61 6E 64    incremented  and
012F90:  20 20 20 65 76 65 6E 74 20 20 20 70 72 6F 63 65       event   proce
012FA0:  73 73 69 6E 67 0D 0A 20 20 20 20 20 20 20 20 20    ssing..         
012FB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                   i
012FC0:  6E 69 74 69 61 74 65 64 2E 0D 0A 0D 0A 0D 0A 0D    nitiated........
012FD0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54    .....       AMST
012FE0:  52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36    RAD CPC464/664/6
012FF0:  31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20    128 FIRMWARE    
013000:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
013010:  20 20 20 20 20 20 20 70 61 67 65 20 31 35 2E 32           page 15.2
013020:  30 31 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    01..............
013030:  20 20 20 20 20 20 20 48 6F 77 20 65 76 65 6E 74           How event
013040:  20 70 72 6F 63 65 73 73 69 6E 67 20 69 73 20 69     processing is i
013050:  6E 69 74 69 61 74 65 64 20 64 65 70 65 6E 64 73    nitiated depends
013060:  20 6F 6E 20 74 68 65 20 65 76 65 6E 74 20 63 6C     on the event cl
013070:  61 73 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 53    ass.....       S
013080:  79 6E 63 68 72 6F 6E 6F 75 73 20 45 76 65 6E 74    ynchronous Event
013090:  73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    s.....          
0130A0:  20 53 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65     Synchronous eve
0130B0:  6E 74 73 20 61 72 65 20 61 64 64 65 64 20 74 6F    nts are added to
0130C0:  20 74 68 65 20 20 73 79 6E 63 68 72 6F 6E 6F 75     the  synchronou
0130D0:  73 20 20 65 76 65 6E 74 20 20 71 75 65 75 65 20    s  event  queue 
0130E0:  20 69 6E 0D 0A 20 20 20 20 20 20 20 20 20 20 20     in..           
0130F0:  70 72 69 6F 72 69 74 79 20 6F 72 64 65 72 2E 20    priority order. 
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:  49 74 20 69 73 20 74 68 65 20 72 65 73 70 6F 6E    It is the respon
013210:  73 69 62 69 6C 69 74 79 20 6F 66 20 74 68 65 20    sibility of the 
013220:  66 6F 72 65 67 72 6F 75 6E 64 20 70 72 6F 67 72    foreground progr
013230:  61 6D 0D 0A 20 20 20 20 20 20 20 20 20 20 20 74    am..           t
013240:  6F 20 70 72 6F 63 65 73 73 20 74 68 65 20 73 79    o process the sy
013250:  6E 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 20    nchronous event 
013260:  71 75 65 75 65 20 72 65 67 75 6C 61 72 6C 79 2E    queue regularly.
013270:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    ......          
013280:  20 53 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65     Synchronous eve
013290:  6E 74 20 72 6F 75 74 69 6E 65 20 61 72 65 20 63    nt routine are c
0132A0:  61 6C 6C 65 64 20 77 68 65 6E 20 74 68 65 20 20    alled when the  
0132B0:  66 6F 72 65 67 72 6F 75 6E 64 20 20 70 72 6F 67    foreground  prog
0132C0:  72 61 6D 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ram..           
0132D0:  63 61 6C 6C 73 20 4B 4C 20 44 4F 20 53 59 4E 43    calls KL DO SYNC
0132E0:  2C 20 74 68 65 20 65 76 65 6E 74 20 63 6F 75 6E    , the event coun
0132F0:  74 20 69 73 20 74 68 65 6E 20 64 65 61 6C 74 20    t is then dealt 
013300:  77 69 74 68 20 77 68 65 6E 20 4B 4C 20 20 44 4F    with when KL  DO
013310:  4E 45 0D 0A 20 20 20 20 20 20 20 20 20 20 20 53    NE..           S
013320:  59 4E 43 20 69 73 20 63 61 6C 6C 65 64 2E 0D 0A    YNC is called...
013330:  0D 0A 20 20 20 20 20 20 20 41 73 79 6E 63 68 72    ..       Asynchr
013340:  6F 6E 6F 75 73 20 45 76 65 6E 74 73 2E 0D 0A 0D    onous Events....
013350:  0A 0D 0A 20 20 20 20 20 20 20 61 2E 20 4E 6F 74    ...       a. Not
013360:  20 69 6E 20 74 68 65 20 49 6E 74 65 72 72 75 70     in the Interrup
013370:  74 20 50 61 74 68 0D 0A 0D 0A 0D 0A 20 20 20 20    t Path......    
013380:  20 20 20 20 20 20 20 54 68 65 20 65 76 65 6E 74           The event
013390:  20 72 6F 75 74 69 6E 65 20 69 73 20 63 61 6C 6C     routine is call
0133A0:  65 64 20 69 6D 6D 65 64 69 61 74 65 6C 79 2E 20    ed immediately. 
0133B0:  57 68 65 6E 20 74 68 65 20 72 6F 75 74 69 6E 65    When the routine
0133C0:  20 72 65 74 75 72 6E 73 2C 0D 0A 20 20 20 20 20     returns,..     
0133D0:  20 20 20 20 20 20 69 66 20 74 68 65 20 65 76 65          if the eve
0133E0:  6E 74 20 63 6F 75 6E 74 20 69 73 20 67 72 65 61    nt count is grea
0133F0:  74 65 72 20 74 68 61 6E 20 7A 65 72 6F 20 69 74    ter than zero it
013400:  20 69 73 20 64 65 63 72 65 6D 65 6E 74 65 64 2E     is decremented.
013410:  20 49 66 20 20 74 68 65 0D 0A 20 20 20 20 20 20     If  the..      
013420:  20 20 20 20 20 63 6F 75 6E 74 20 69 73 20 73 74         count is st
013430:  69 6C 6C 20 67 72 65 61 74 65 72 20 74 68 61 6E    ill greater than
013440:  20 7A 65 72 6F 20 74 68 65 6E 20 74 68 65 20 70     zero then the p
013450:  72 6F 63 65 64 75 72 65 20 69 73 20 72 65 70 65    rocedure is repe
013460:  61 74 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ated.......     
013470:  20 20 62 2E 20 49 6E 20 74 68 65 20 49 6E 74 65      b. In the Inte
013480:  72 72 75 70 74 20 50 61 74 68 20 2D 20 4E 6F 72    rrupt Path - Nor
013490:  6D 61 6C 20 41 73 79 6E 63 68 72 6F 6E 6F 75 73    mal Asynchronous
0134A0:  20 45 76 65 6E 74 0D 0A 0D 0A 0D 0A 20 20 20 20     Event......    
0134B0:  20 20 20 20 20 20 20 54 68 65 20 65 76 65 6E 74           The event
0134C0:  20 69 73 20 70 6C 61 63 65 64 20 6F 6E 20 74 68     is placed on th
0134D0:  65 20 69 6E 74 65 72 72 75 70 74 20 65 76 65 6E    e interrupt even
0134E0:  74 20 70 65 6E 64 69 6E 67 20 71 75 65 75 65 2E    t pending queue.
0134F0:  20 4F 6E 20 20 65 78 69 74 0D 0A 20 20 20 20 20     On  exit..     
013500:  20 20 20 20 20 20 66 72 6F 6D 20 74 68 65 20 69          from the i
013510:  6E 74 65 72 72 75 70 74 20 70 61 74 68 20 74 68    nterrupt path th
013520:  65 20 4B 65 72 6E 65 6C 20 70 72 6F 63 65 73 73    e Kernel process
013530:  65 73 20 20 61 6C 6C 20 20 65 76 65 6E 74 73 20    es  all  events 
013540:  20 6F 6E 20 20 74 68 65 0D 0A 20 20 20 20 20 20     on  the..      
013550:  20 20 20 20 20 69 6E 74 65 72 72 75 70 74 20 70         interrupt p
013560:  65 6E 64 69 6E 67 20 71 75 65 75 65 20 61 73 20    ending queue as 
013570:  64 65 73 63 72 69 62 65 64 20 69 6E 20 28 61 29    described in (a)
013580:  20 61 62 6F 76 65 2E 20 54 68 69 73 20 6D 65 61     above. This mea
013590:  6E 73 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20    ns  the..       
0135A0:  20 20 20 20 6E 6F 72 6D 61 6C 20 61 73 79 6E 63        normal async
0135B0:  68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 20 72 6F    hronous event ro
0135C0:  75 74 69 6E 65 73 20 61 72 65 20 63 61 6C 6C 65    utines are calle
0135D0:  64 20 69 6E 20 61 6E 20 20 65 78 74 65 6E 73 69    d in an  extensi
0135E0:  6F 6E 20 20 6F 66 0D 0A 20 20 20 20 20 20 20 20    on  of..        
0135F0:  20 20 20 6E 6F 72 6D 61 6C 20 28 6E 6F 6E 2D 69       normal (non-i
013600:  6E 74 65 72 72 75 70 74 29 20 70 72 6F 63 65 73    nterrupt) proces
013610:  73 69 6E 67 20 62 65 74 77 65 65 6E 20 69 6E 74    sing between int
013620:  65 72 72 75 70 74 20 72 65 74 75 72 6E 20 61 6E    errupt return an
013630:  64 20 74 68 65 0D 0A 20 20 20 20 20 20 20 20 20    d the..         
013640:  20 20 6D 61 69 6E 20 70 72 6F 67 72 61 6D 2E 20      main program. 
013650:  54 68 65 20 20 72 6F 75 74 69 6E 65 20 20 69 73    The  routine  is
013660:  2C 20 20 74 68 65 72 65 66 6F 72 65 2C 20 20 6E    ,  therefore,  n
013670:  6F 74 20 20 73 75 62 6A 65 63 74 20 20 74 6F 20    ot  subject  to 
013680:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 20 20 20     the..          
013690:  20 72 65 73 74 72 69 63 74 69 6F 6E 73 20 69 6D     restrictions im
0136A0:  70 6F 73 65 64 20 6F 6E 20 69 6E 74 65 72 72 75    posed on interru
0136B0:  70 74 20 70 61 74 68 20 72 6F 75 74 69 6E 65 73    pt path routines
0136C0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 63 2E    .......       c.
0136D0:  20 49 6E 20 74 68 65 20 49 6E 74 65 72 72 75 70     In the Interrup
0136E0:  74 20 50 61 74 68 20 2D 20 45 78 70 72 65 73 73    t Path - Express
0136F0:  20 41 73 79 6E 63 68 72 6F 6E 6F 75 73 20 45 76     Asynchronous Ev
013700:  65 6E 74 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ent......       
013710:  20 20 20 20 54 68 65 20 65 76 65 6E 74 20 72 6F        The event ro
013720:  75 74 69 6E 65 20 69 73 20 63 61 6C 6C 65 64 20    utine is called 
013730:  69 6D 6D 65 64 69 61 74 65 6C 79 2C 20 69 6E 20    immediately, in 
013740:  20 74 68 65 20 20 69 6E 74 65 72 72 75 70 74 20     the  interrupt 
013750:  20 70 61 74 68 2E 0D 0A 20 20 20 20 20 20 20 20     path...        
013760:  20 20 20 54 68 65 20 72 6F 75 74 69 6E 65 20 6D       The routine m
013770:  75 73 74 20 62 65 20 61 74 20 61 20 27 6E 65 61    ust be at a 'nea
013780:  72 20 61 64 64 72 65 73 73 27 20 28 73 65 65 20    r address' (see 
013790:  4B 4C 20 49 4E 49 54 20 45 56 45 4E 54 29 2E 20    KL INIT EVENT). 
0137A0:  55 6E 64 65 72 0D 0A 20 20 20 20 20 20 20 20 20    Under..         
0137B0:  20 20 6E 6F 20 63 69 72 63 75 6D 73 74 61 6E 63      no circumstanc
0137C0:  65 73 20 6D 61 79 20 74 68 65 20 72 6F 75 74 69    es may the routi
0137D0:  6E 65 20 65 6E 61 62 6C 65 20 69 6E 74 65 72 72    ne enable interr
0137E0:  75 70 74 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    upts.......     
0137F0:  20 20 4B 4C 20 45 56 45 4E 54 20 65 6E 61 62 6C      KL EVENT enabl
013800:  65 73 20 69 6E 74 65 72 72 75 70 74 73 20 75 6E    es interrupts un
013810:  6C 65 73 73 20 69 74 20 69 73 20 20 63 61 6C 6C    less it is  call
013820:  65 64 20 20 66 72 6F 6D 20 20 74 68 65 20 20 69    ed  from  the  i
013830:  6E 74 65 72 72 75 70 74 0D 0A 20 20 20 20 20 20    nterrupt..      
013840:  20 70 61 74 68 2E 0D 0A 0D 0A 0D 0A 20 20 20 20     path.......    
013850:  20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72 69       Related entri
013860:  65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    es:......       
013870:  4B 4C 20 49 4E 49 54 20 45 56 45 4E 54 0D 0A 20    KL INIT EVENT.. 
013880:  20 20 20 20 20 20 4B 4C 20 4E 45 58 54 20 53 59          KL NEXT SY
013890:  4E 43 0D 0A 20 20 20 20 20 20 20 4B 4C 20 50 4F    NC..       KL PO
0138A0:  4C 4C 20 53 59 4E 43 48 52 4F 4E 4F 55 53 0D 0A    LL SYNCHRONOUS..
0138B0:  20 20 20 20 20 20 20 4B 4C 20 53 59 4E 43 20 52           KL SYNC R
0138C0:  45 53 45 54 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ESET..........  
0138D0:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
0138E0:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
0138F0:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
013900:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
013910:  70 61 67 65 20 31 35 2E 32 30 32 0D 0A 0D 0A 0D    page 15.202.....
013920:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
013930:  31 36 37 3A 20 4B 4C 20 53 59 4E 43 20 52 45 53    167: KL SYNC RES
013940:  45 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ET              
013950:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
013960:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
013970:  20 23 42 43 46 35 0D 0A 0D 0A 0D 0A 20 20 20 20     #BCF5......    
013980:  20 20 20 43 6C 65 61 72 20 73 79 6E 63 68 72 6F       Clear synchro
013990:  6E 6F 75 73 20 65 76 65 6E 74 20 71 75 65 75 65    nous event queue
0139A0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63    .......       Ac
0139B0:  74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    tion:......     
0139C0:  20 20 54 68 65 20 73 79 6E 63 68 72 6F 6E 6F 75      The synchronou
0139D0:  73 20 65 76 65 6E 74 20 71 75 65 75 65 20 69 73    s event queue is
0139E0:  20 73 65 74 20 65 6D 70 74 79 20 2D 20 61 6E 79     set empty - any
0139F0:  20 6F 75 74 73 74 61 6E 64 69 6E 67 20 65 76 65     outstanding eve
013A00:  6E 74 73 20 20 61 72 65 0D 0A 20 20 20 20 20 20    nts  are..      
013A10:  20 73 69 6D 70 6C 79 20 20 64 69 73 63 61 72 64     simply  discard
013A20:  65 64 2E 20 20 54 68 65 20 20 63 75 72 72 65 6E    ed.  The  curren
013A30:  74 20 20 65 76 65 6E 74 20 20 70 72 69 6F 72 69    t  event  priori
013A40:  74 79 2C 20 20 75 73 65 64 20 20 62 79 20 20 4B    ty,  used  by  K
013A50:  4C 20 20 50 4F 4C 4C 0D 0A 20 20 20 20 20 20 20    L  POLL..       
013A60:  53 59 4E 43 48 52 4F 4E 4F 55 53 20 61 6E 64 20    SYNCHRONOUS and 
013A70:  4B 4C 20 4E 45 58 54 20 53 59 4E 43 20 74 6F 20    KL NEXT SYNC to 
013A80:  6D 61 73 6B 20 6F 75 74 20 20 6C 6F 77 65 72 20    mask out  lower 
013A90:  20 70 72 69 6F 72 69 74 79 20 20 65 76 65 6E 74     priority  event
013AA0:  73 2C 20 20 69 73 0D 0A 20 20 20 20 20 20 20 72    s,  is..       r
013AB0:  65 73 65 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    eset.......     
013AC0:  20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F      Entry conditio
013AD0:  6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ns:......       
013AE0:  4E 6F 20 63 6F 6E 64 69 74 69 6F 6E 73 2E 0D 0A    No conditions...
013AF0:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20    ....       Exit 
013B00:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D    conditions:.....
013B10:  0A 20 20 20 20 20 20 20 41 46 20 61 6E 64 20 48    .       AF and H
013B20:  4C 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20    L corrupt...    
013B30:  20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67       All other reg
013B40:  69 73 74 65 72 73 20 70 72 65 73 65 72 76 65 64    isters preserved
013B50:  2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
013B60:  4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    Notes:......    
013B70:  20 20 20 49 74 20 69 73 20 74 68 65 20 75 73 65       It is the use
013B80:  72 27 73 20 72 65 73 70 6F 6E 73 69 62 69 6C 69    r's responsibili
013B90:  74 79 20 74 6F 20 65 6E 73 75 72 65 20 74 68 61    ty to ensure tha
013BA0:  74 20 20 64 69 73 63 61 72 64 65 64 20 20 65 76    t  discarded  ev
013BB0:  65 6E 74 73 20 20 61 6E 64 0D 0A 20 20 20 20 20    ents  and..     
013BC0:  20 20 61 6E 79 20 63 75 72 72 65 6E 74 6C 79 20      any currently 
013BD0:  61 63 74 69 76 65 20 65 76 65 6E 74 73 20 61 72    active events ar
013BE0:  65 20 72 65 73 65 74 2E 20 54 68 65 20 65 76 65    e reset. The eve
013BF0:  6E 74 20 20 63 6F 75 6E 74 20 20 6F 66 20 20 64    nt  count  of  d
013C00:  69 73 63 61 72 64 65 64 0D 0A 20 20 20 20 20 20    iscarded..      
013C10:  20 65 76 65 6E 74 73 20 77 69 6C 6C 20 62 65 20     events will be 
013C20:  67 72 65 61 74 65 72 20 74 68 61 6E 20 7A 65 72    greater than zer
013C30:  6F 2C 20 73 6F 20 61 6E 79 20 66 75 72 74 68 65    o, so any furthe
013C40:  72 20 27 6B 69 63 6B 73 27 20 20 77 69 6C 6C 20    r 'kicks'  will 
013C50:  20 73 69 6D 70 6C 79 0D 0A 20 20 20 20 20 20 20     simply..       
013C60:  69 6E 63 72 65 6D 65 6E 74 20 74 68 65 20 63 6F    increment the co
013C70:  75 6E 74 2C 20 62 75 74 20 6E 6F 74 20 61 64 64    unt, but not add
013C80:  20 74 68 65 20 65 76 65 6E 74 20 74 6F 20 20 74     the event to  t
013C90:  68 65 20 20 73 79 6E 63 68 72 6F 6E 6F 75 73 20    he  synchronous 
013CA0:  20 65 76 65 6E 74 0D 0A 20 20 20 20 20 20 20 71     event..       q
013CB0:  75 65 75 65 20 2D 20 74 68 65 20 65 76 65 6E 74    ueue - the event
013CC0:  73 20 61 72 65 2C 20 74 68 65 72 65 66 6F 72 65    s are, therefore
013CD0:  2C 20 65 66 66 65 63 74 69 76 65 6C 79 20 64 69    , effectively di
013CE0:  73 61 72 6D 65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D    sarmed..........
013CF0:  0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64 20    .       Related 
013D00:  65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20    entries:......  
013D10:  20 20 20 20 20 4B 4C 20 44 45 4C 20 53 59 4E 43         KL DEL SYNC
013D20:  48 52 4F 4E 4F 55 53 0D 0A 20 20 20 20 20 20 20    HRONOUS..       
013D30:  4B 4C 20 4E 45 58 54 20 53 59 4E 43 0D 0A 20 20    KL NEXT SYNC..  
013D40:  20 20 20 20 20 4B 4C 20 50 4F 4C 4C 20 53 59 4E         KL POLL SYN
013D50:  43 48 52 4F 4E 4F 55 53 0D 0A 0D 0A 0D 0A 0D 0A    CHRONOUS........
013D60:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
013D70:  0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44    ..       AMSTRAD
013D80:  20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38     CPC464/664/6128
013D90:  20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20     FIRMWARE       
013DA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
013DB0:  20 20 20 20 70 61 67 65 20 31 35 2E 32 30 33 0D        page 15.203.
013DC0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
013DD0:  20 20 20 20 31 36 38 3A 20 4B 4C 20 44 45 4C 20        168: KL DEL 
013DE0:  53 59 4E 43 48 52 4F 4E 4F 55 53 20 20 20 20 20    SYNCHRONOUS     
013DF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
013E00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
013E10:  20 20 20 20 20 23 42 43 46 38 0D 0A 0D 0A 0D 0A         #BCF8......
013E20:  20 20 20 20 20 20 20 52 65 6D 6F 76 65 20 61 20           Remove a 
013E30:  73 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E    synchronous even
013E40:  74 20 66 72 6F 6D 20 74 68 65 20 65 76 65 6E 74    t from the event
013E50:  20 71 75 65 75 65 2E 0D 0A 0D 0A 0D 0A 20 20 20     queue.......   
013E60:  20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D        Action:.....
013E70:  0A 20 20 20 20 20 20 20 54 68 65 20 65 76 65 6E    .       The even
013E80:  74 20 69 73 20 64 69 73 61 72 6D 65 64 2E 20 49    t is disarmed. I
013E90:  66 20 69 74 20 69 73 20 6F 6E 20 74 68 65 20 73    f it is on the s
013EA0:  79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74    ynchronous event
013EB0:  20 71 75 65 75 65 20 74 68 65 6E 20 69 74 0D 0A     queue then it..
013EC0:  20 20 20 20 20 20 20 69 73 20 72 65 6D 6F 76 65           is remove
013ED0:  64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    d.......       E
013EE0:  6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    ntry conditions:
013EF0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 48 4C 20    ......       HL 
013F00:  63 6F 6E 74 61 69 6E 73 20 74 68 65 20 61 64 64    contains the add
013F10:  72 65 73 73 20 6F 66 20 74 68 65 20 65 76 65 6E    ress of the even
013F20:  74 20 62 6C 6F 63 6B 2E 0D 0A 0D 0A 0D 0A 20 20    t block.......  
013F30:  20 20 20 20 20 45 78 69 74 20 63 6F 6E 64 69 74         Exit condit
013F40:  69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ions:......     
013F50:  20 20 41 46 2C 20 42 43 2C 20 44 45 20 61 6E 64      AF, BC, DE and
013F60:  20 48 4C 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20     HL corrupt...  
013F70:  20 20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72         All other r
013F80:  65 67 69 73 74 65 72 73 20 70 72 65 73 65 72 76    egisters preserv
013F90:  65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ed.........     
013FA0:  20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20      Notes:......  
013FB0:  20 20 20 20 20 44 65 6C 65 74 69 6E 67 20 61 6E         Deleting an
013FC0:  20 65 76 65 6E 74 20 66 72 6F 6D 20 74 68 65 20     event from the 
013FD0:  71 75 65 75 65 20 70 72 65 76 65 6E 74 73 20 74    queue prevents t
013FE0:  68 65 20 6F 75 74 73 74 61 6E 64 69 6E 67 20 27    he outstanding '
013FF0:  6B 69 63 6B 73 27 20 66 72 6F 6D 0D 0A 20 20 20    kicks' from..   
014000:  20 20 20 20 62 65 69 6E 67 20 70 72 6F 63 65 73        being proces
014010:  73 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    sed.......      
014020:  20 42 65 66 6F 72 65 20 61 20 73 79 6E 63 68 72     Before a synchr
014030:  6F 6E 6F 75 73 20 20 65 76 65 6E 74 20 20 62 6C    onous  event  bl
014040:  6F 63 6B 20 20 69 73 20 20 72 65 73 65 74 20 20    ock  is  reset  
014050:  6F 72 20 20 72 65 69 6E 69 74 69 61 6C 69 7A 65    or  reinitialize
014060:  64 20 20 74 68 69 73 0D 0A 20 20 20 20 20 20 20    d  this..       
014070:  72 6F 75 74 69 6E 65 20 73 68 6F 75 6C 64 20 62    routine should b
014080:  65 20 75 73 65 64 20 74 6F 20 65 6E 73 75 72 65    e used to ensure
014090:  20 74 68 61 74 20 69 74 20 69 73 20 6E 6F 74 20     that it is not 
0140A0:  63 75 72 72 65 6E 74 6C 79 20 70 65 6E 64 69 6E    currently pendin
0140B0:  67 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    g.......       T
0140C0:  68 69 73 20 72 6F 75 74 69 6E 65 20 65 6E 61 62    his routine enab
0140D0:  6C 65 73 20 69 6E 74 65 72 72 75 70 74 73 2E 0D    les interrupts..
0140E0:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65    .......       Re
0140F0:  6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A    lated entries:..
014100:  0D 0A 0D 0A 20 20 20 20 20 20 20 4B 4C 20 44 49    ....       KL DI
014110:  53 41 52 4D 20 45 56 45 4E 54 0D 0A 20 20 20 20    SARM EVENT..    
014120:  20 20 20 4B 4C 20 49 4E 49 54 20 45 56 45 4E 54       KL INIT EVENT
014130:  0D 0A 20 20 20 20 20 20 20 4B 4C 20 53 59 4E 43    ..       KL SYNC
014140:  20 52 45 53 45 54 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A     RESET..........
014150:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ..............  
014160:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
014170:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
014180:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
014190:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0141A0:  70 61 67 65 20 31 35 2E 32 30 34 0D 0A 0D 0A 0D    page 15.204.....
0141B0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
0141C0:  31 36 39 3A 20 4B 4C 20 4E 45 58 54 20 53 59 4E    169: KL NEXT SYN
0141D0:  43 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    C               
0141E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0141F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
014200:  20 23 42 43 46 42 0D 0A 0D 0A 20 20 20 20 20 20     #BCFB....      
014210:  20 47 65 74 20 6E 65 78 74 20 65 76 65 6E 74 20     Get next event 
014220:  66 72 6F 6D 20 74 68 65 20 71 75 65 75 65 2E 0D    from the queue..
014230:  0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E    ...       Action
014240:  3A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74    :....       If t
014250:  68 65 72 65 20 69 73 20 61 6E 20 65 76 65 6E 74    here is an event
014260:  20 6F 6E 20 74 68 65 20 73 79 6E 63 68 72 6F 6E     on the synchron
014270:  6F 75 73 20 65 76 65 6E 74 20 71 75 65 75 65 20    ous event queue 
014280:  77 68 6F 73 65 20 70 72 69 6F 72 69 74 79 20 20    whose priority  
014290:  69 73 0D 0A 20 20 20 20 20 20 20 67 72 65 61 74    is..       great
0142A0:  65 72 20 74 68 61 6E 20 74 68 65 20 63 75 72 72    er than the curr
0142B0:  65 6E 74 20 65 76 65 6E 74 20 70 72 69 6F 72 69    ent event priori
0142C0:  74 79 20 20 28 69 66 20 20 61 6E 79 29 2C 20 20    ty  (if  any),  
0142D0:  74 68 65 6E 20 20 72 65 6D 6F 76 65 20 20 74 68    then  remove  th
0142E0:  65 0D 0A 20 20 20 20 20 20 20 65 76 65 6E 74 20    e..       event 
0142F0:  66 72 6F 6D 20 74 68 65 20 71 75 65 75 65 2C 20    from the queue, 
014300:  73 65 74 20 74 68 65 20 63 75 72 72 65 6E 74 20    set the current 
014310:  65 76 65 6E 74 20 70 72 69 6F 72 69 74 79 20 74    event priority t
014320:  6F 20 20 74 68 61 74 20 20 6F 66 20 20 74 68 65    o  that  of  the
014330:  0D 0A 0D 0A 20 20 20 20 20 20 20 65 76 65 6E 74    ....       event
014340:  20 72 65 6D 6F 76 65 64 20 61 6E 64 20 72 65 74     removed and ret
014350:  75 72 6E 20 74 68 65 20 70 72 65 76 69 6F 75 73    urn the previous
014360:  20 65 76 65 6E 74 20 70 72 69 6F 72 69 74 79 2E     event priority.
014370:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79    ....       Entry
014380:  20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A     conditions:....
014390:  20 20 20 20 20 20 20 4E 6F 20 63 6F 6E 64 69 74           No condit
0143A0:  69 6F 6E 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    ions.....       
0143B0:  45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    Exit conditions:
0143C0:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74 68    ....       If th
0143D0:  65 72 65 20 69 73 20 61 6E 20 65 76 65 6E 74 20    ere is an event 
0143E0:  74 6F 20 62 65 20 70 72 6F 63 65 73 73 65 64 3A    to be processed:
0143F0:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
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:  20 20 20 20 43 61 72 72 79 20 74 72 75 65 2E 0D        Carry true..
014510:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
014520:  20 48 4C 20 63 6F 6E 74 61 69 6E 73 20 74 68 65     HL contains the
014530:  20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20     address of the 
014540:  65 76 65 6E 74 20 62 6C 6F 63 6B 2E 0D 0A 20 20    event block...  
014550:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 20                  A 
014560:  63 6F 6E 74 61 69 6E 73 20 74 68 65 20 70 72 65    contains the pre
014570:  76 69 6F 75 73 20 65 76 65 6E 74 20 70 72 69 6F    vious event prio
014580:  72 69 74 79 20 28 69 66 20 61 6E 79 29 2E 0D 0A    rity (if any)...
014590:  0D 0A 20 20 20 20 20 20 20 49 66 20 74 68 65 72    ..       If ther
0145A0:  65 20 69 73 20 6E 6F 20 65 76 65 6E 74 20 74 6F    e is no event to
0145B0:  20 62 65 20 70 72 6F 63 65 73 73 65 64 3A 0D 0A     be processed:..
0145C0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
0145D0:  20 20 43 61 72 72 79 20 66 61 6C 73 65 2E 0D 0A      Carry false...
0145E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0145F0:  41 20 61 6E 64 20 48 4C 20 63 6F 72 72 75 70 74    A and HL corrupt
014600:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 6C 77 61    .....       Alwa
014610:  79 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    ys:....         
014620:  20 20 20 20 20 20 20 44 45 20 63 6F 72 72 75 70           DE corrup
014630:  74 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    t...            
014640:  20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65        All other re
014650:  67 69 73 74 65 72 73 20 70 72 65 73 65 72 76 65    gisters preserve
014660:  64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74    d.....       Not
014670:  65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    es:......       
014680:  4B 4C 20 4E 45 58 54 20 53 59 4E 43 20 72 65 74    KL NEXT SYNC ret
014690:  75 72 6E 73 20 74 68 65 20 61 64 64 72 65 73 73    urns the address
0146A0:  20 6F 66 20 74 68 65 20 6E 65 78 74 20 65 76 65     of the next eve
0146B0:  6E 74 20 74 6F 20 62 65 20 70 72 6F 63 65 73 73    nt to be process
0146C0:  65 64 2C 20 69 66 0D 0A 20 20 20 20 20 20 20 61    ed, if..       a
0146D0:  6E 79 2C 20 77 68 69 63 68 20 69 74 20 68 61 73    ny, which it has
0146E0:  20 74 61 6B 65 6E 20 6F 66 66 20 74 68 65 20 20     taken off the  
0146F0:  73 79 6E 63 68 72 6F 6E 6F 75 73 20 20 65 76 65    synchronous  eve
014700:  6E 74 20 20 71 75 65 75 65 20 20 61 6E 64 20 20    nt  queue  and  
014710:  77 68 6F 73 65 0D 0A 20 20 20 20 20 20 20 70 72    whose..       pr
014720:  69 6F 72 69 74 79 20 68 61 73 20 6E 6F 77 20 62    iority has now b
014730:  65 65 6E 20 73 65 74 20 61 73 20 74 68 65 20 65    een set as the e
014740:  76 65 6E 74 20 70 72 69 6F 72 69 74 79 20 6D 61    vent priority ma
014750:  73 6B 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    sk.......       
014760:  54 68 65 20 66 6F 72 65 67 72 6F 75 6E 64 20 70    The foreground p
014770:  72 6F 67 72 61 6D 20 73 68 6F 75 6C 64 20 63 61    rogram should ca
014780:  6C 6C 20 4B 4C 20 50 4F 4C 4C 20 20 53 59 4E 43    ll KL POLL  SYNC
014790:  48 52 4F 4E 4F 55 53 20 20 72 65 67 75 6C 61 72    HRONOUS  regular
0147A0:  6C 79 20 20 74 6F 0D 0A 20 20 20 20 20 20 20 63    ly  to..       c
0147B0:  68 65 63 6B 20 66 6F 72 20 6F 75 74 73 74 61 6E    heck for outstan
0147C0:  64 69 6E 67 20 65 76 65 6E 74 73 2E 20 4B 4C 20    ding events. KL 
0147D0:  50 4F 4C 4C 20 53 59 4E 43 48 52 4F 4E 4F 55 53    POLL SYNCHRONOUS
0147E0:  20 69 73 20 61 20 20 73 68 6F 72 74 20 20 72 6F     is a  short  ro
0147F0:  75 74 69 6E 65 0D 0A 20 20 20 20 20 20 20 69 6E    utine..       in
014800:  20 52 41 4D 2C 20 73 6F 20 63 61 6C 6C 69 6E 67     RAM, so calling
014810:  20 69 74 20 69 6D 70 6F 73 65 73 20 6C 69 74 74     it imposes litt
014820:  6C 65 20 6F 76 65 72 68 65 61 64 2E 20 49 66 20    le overhead. If 
014830:  74 68 65 72 65 20 20 69 73 20 20 61 6E 20 20 65    there  is  an  e
014840:  76 65 6E 74 0D 0A 20 20 20 20 20 20 20 6F 75 74    vent..       out
014850:  73 74 61 6E 64 69 6E 67 20 74 68 65 6E 20 74 68    standing then th
014860:  65 20 61 62 6F 76 65 20 70 72 6F 63 65 64 75 72    e above procedur
014870:  65 20 73 68 6F 75 6C 64 20 62 65 20 69 6E 76 6F    e should be invo
014880:  6B 65 64 2C 20 61 6E 64 20 73 68 6F 75 6C 64 20    ked, and should 
014890:  20 62 65 0D 0A 20 20 20 20 20 20 20 72 65 70 65     be..       repe
0148A0:  61 74 65 64 20 75 6E 74 69 6C 20 74 68 65 20 65    ated until the e
0148B0:  76 65 6E 74 20 71 75 65 75 65 20 69 73 20 65 6D    vent queue is em
0148C0:  70 74 79 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    pty.......      
0148D0:  20 54 68 65 20 63 75 72 72 65 6E 74 20 65 76 65     The current eve
0148E0:  6E 74 20 70 72 69 6F 72 69 74 79 20 6D 65 63 68    nt priority mech
0148F0:  61 6E 69 73 6D 20 61 6C 6C 6F 77 73 20 65 76 65    anism allows eve
014900:  6E 74 20 72 6F 75 74 69 6E 65 20 74 6F 20 70 6F    nt routine to po
014910:  6C 6C 20 66 6F 72 2C 0D 0A 20 20 20 20 20 20 20    ll for,..       
014920:  61 6E 64 20 70 72 6F 63 65 73 73 2C 20 65 76 65    and process, eve
014930:  6E 74 73 20 6F 66 20 68 69 67 68 65 72 20 70 72    nts of higher pr
014940:  69 6F 72 69 74 79 2E 20 54 68 65 20 70 72 69 6F    iority. The prio
014950:  72 69 74 79 20 72 65 74 75 72 6E 65 64 20 62 79    rity returned by
014960:  20 20 74 68 69 73 0D 0A 20 20 20 20 20 20 20 72      this..       r
014970:  6F 75 74 69 6E 65 20 6D 75 73 74 20 62 65 20 70    outine must be p
014980:  72 65 73 65 72 76 65 64 20 75 6E 74 69 6C 20 69    reserved until i
014990:  74 20 69 73 20 70 61 73 73 65 64 20 74 6F 20 4B    t is passed to K
0149A0:  4C 20 44 4F 20 53 59 4E 43 2E 0D 0A 0D 0A 0D 0A    L DO SYNC.......
0149B0:  20 20 20 20 20 20 20 4B 4C 20 4E 45 58 54 20 53           KL NEXT S
0149C0:  59 4E 43 20 65 6E 61 62 6C 65 73 20 69 6E 74 65    YNC enables inte
0149D0:  72 72 75 70 74 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D    rrupts..........
0149E0:  0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20    .       AMSTRAD 
0149F0:  43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20    CPC464/664/6128 
014A00:  46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20    FIRMWARE        
014A10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
014A20:  20 20 20 70 61 67 65 20 31 35 2E 32 30 35 0D 0A       page 15.205..
014A30:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
014A40:  20 20 20 54 68 65 20 70 72 6F 63 65 64 75 72 65       The procedure
014A50:  20 66 6F 72 20 70 72 6F 63 65 73 73 69 6E 67 20     for processing 
014A60:  73 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E    synchronous even
014A70:  74 73 20 69 73 20 61 73 20 66 6F 6C 6C 6F 77 73    ts is as follows
014A80:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 52    :......       TR
014A90:  59 20 41 47 41 49 4E 3A 0D 0A 20 20 20 20 20 20    Y AGAIN:..      
014AA0:  20 20 20 20 20 43 41 4C 4C 20 4B 4C 5F 4E 45 58         CALL KL_NEX
014AB0:  54 5F 53 59 4E 43 20 20 20 20 20 20 20 20 3B 72    T_SYNC        ;r
014AC0:  65 74 75 72 6E 20 6E 65 78 74 20 65 76 65 6E 74    eturn next event
014AD0:  2C 20 69 66 20 61 6E 79 0D 0A 20 20 20 20 20 20    , if any..      
014AE0:  20 20 20 20 20 4A 52 20 4E 43 2C 3F 3F 3F 3F 3F         JR NC,?????
014AF0:  3F 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 6A    ?             ;j
014B00:  75 6D 70 20 69 66 20 6E 6F 20 65 76 65 6E 74 20    ump if no event 
014B10:  74 6F 20 70 72 6F 63 65 73 73 0D 0A 20 20 20 20    to process..    
014B20:  20 20 20 3B 0D 0A 20 20 20 20 20 20 20 20 20 20       ;..          
014B30:  20 50 55 53 48 20 48 4C 20 20 20 20 20 20 20 20     PUSH HL        
014B40:  20 20 20 20 20 20 20 20 20 20 3B 73 61 76 65 20              ;save 
014B50:  61 64 64 72 65 73 73 20 6F 66 20 65 76 65 6E 74    address of event
014B60:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 50 55 53    ..           PUS
014B70:  48 20 41 46 20 20 20 20 20 20 20 20 20 20 20 20    H AF            
014B80:  20 20 20 20 20 20 3B 73 61 76 65 20 70 72 65 76          ;save prev
014B90:  69 6F 75 73 20 65 76 65 6E 74 20 70 72 69 6F 72    ious event prior
014BA0:  69 74 79 0D 0A 20 20 20 20 20 20 20 20 20 20 20    ity..           
014BB0:  43 41 4C 4C 20 4B 4C 5F 44 4F 5F 53 59 4E 43 20    CALL KL_DO_SYNC 
014BC0:  20 20 20 20 20 20 20 20 20 3B 63 61 6C 6C 20 74             ;call t
014BD0:  68 65 20 65 76 65 6E 74 20 72 6F 75 74 69 6E 65    he event routine
014BE0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 50 4F 50    ..           POP
014BF0:  20 41 46 0D 0A 20 20 20 20 20 20 20 20 20 20 20     AF..           
014C00:  50 4F 50 20 48 4C 0D 0A 20 20 20 20 20 20 20 3B    POP HL..       ;
014C10:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 43 41 4C    ..           CAL
014C20:  4C 20 4B 4C 5F 44 4F 4E 45 5F 53 59 4E 43 20 20    L KL_DONE_SYNC  
014C30:  20 20 20 20 20 20 3B 72 65 73 65 74 20 74 68 65          ;reset the
014C40:  20 65 76 65 6E 74 20 70 72 69 6F 72 69 74 79 20     event priority 
014C50:  6D 61 73 6B 2C 20 64 65 61 6C 20 77 69 74 68 0D    mask, deal with.
014C60:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    .....           
014C70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
014C80:  20 20 20 20 20 20 20 20 20 3B 74 68 65 20 65 76             ;the ev
014C90:  65 6E 74 20 63 6F 75 6E 74 20 61 6E 64 20 70 75    ent count and pu
014CA0:  74 20 74 68 65 20 20 65 76 65 6E 74 20 20 62 61    t the  event  ba
014CB0:  63 6B 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ck..            
014CC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
014CD0:  20 20 20 20 20 20 20 20 3B 6F 6E 20 74 68 65 20            ;on the 
014CE0:  71 75 65 75 65 20 69 66 20 74 68 65 20 63 6F 75    queue if the cou
014CF0:  6E 74 20 69 73 20 73 74 69 6C 6C 0D 0A 0D 0A 0D    nt is still.....
014D00:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
014D10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
014D20:  20 20 20 20 20 3B 67 72 65 61 74 65 72 20 74 68         ;greater th
014D30:  61 6E 20 7A 65 72 6F 0D 0A 20 20 20 20 20 20 20    an zero..       
014D40:  20 20 20 20 4A 52 20 54 52 59 5F 41 47 41 49 4E        JR TRY_AGAIN
014D50:  20 20 20 20 20 20 20 20 20 20 20 20 20 3B 73 65                 ;se
014D60:  65 20 69 66 20 61 6E 79 20 20 65 76 65 6E 74 73    e if any  events
014D70:  20 20 61 72 65 20 20 73 74 69 6C 6C 20 20 61 77      are  still  aw
014D80:  61 69 74 69 6E 67 0D 0A 20 20 20 20 20 20 20 20    aiting..        
014D90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
014DA0:  20 20 20 20 20 20 20 20 20 20 20 20 3B 70 72 6F                ;pro
014DB0:  63 65 73 73 69 6E 67 0D 0A 0D 0A 0D 0A 0D 0A 20    cessing........ 
014DC0:  20 20 20 20 20 20 52 65 6C 61 74 65 64 20 65 6E          Related en
014DD0:  74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    tries:......    
014DE0:  20 20 20 4B 4C 20 44 4F 4E 45 20 53 59 4E 43 0D       KL DONE SYNC.
014DF0:  0A 20 20 20 20 20 20 20 4B 4C 20 44 4F 20 53 59    .       KL DO SY
014E00:  4E 43 0D 0A 20 20 20 20 20 20 20 4B 4C 20 45 56    NC..       KL EV
014E10:  45 4E 54 0D 0A 20 20 20 20 20 20 20 4B 4C 20 49    ENT..       KL I
014E20:  4E 49 54 20 45 56 45 4E 54 0D 0A 20 20 20 20 20    NIT EVENT..     
014E30:  20 20 4B 4C 20 50 4F 4C 4C 20 53 59 4E 43 48 52      KL POLL SYNCHR
014E40:  4F 4E 4F 55 53 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ONOUS...........
014E50:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
014E60:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
014E70:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
014E80:  41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36    AMSTRAD CPC464/6
014E90:  36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45    64/6128 FIRMWARE
014EA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
014EB0:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
014EC0:  31 35 2E 32 30 36 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    15.206..........
014ED0:  0D 0A 0D 0A 20 20 20 20 20 20 20 31 37 30 3A 20    ....       170: 
014EE0:  4B 4C 20 44 4F 20 53 59 4E 43 20 20 20 20 20 20    KL DO SYNC      
014EF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
014F00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
014F10:  20 20 20 20 20 20 20 20 20 20 20 20 23 42 43 46                #BCF
014F20:  45 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 50 65    E......       Pe
014F30:  72 66 6F 72 6D 20 61 6E 20 65 76 65 6E 74 20 72    rform an event r
014F40:  6F 75 74 69 6E 65 2E 0D 0A 0D 0A 0D 0A 20 20 20    outine.......   
014F50:  20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D        Action:.....
014F60:  0A 20 20 20 20 20 20 20 43 61 6C 6C 20 74 68 65    .       Call the
014F70:  20 65 76 65 6E 74 20 72 6F 75 74 69 6E 65 20 66     event routine f
014F80:  6F 72 20 61 20 67 69 76 65 6E 20 65 76 65 6E 74    or a given event
014F90:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E    .......       En
014FA0:  74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D    try conditions:.
014FB0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 48 4C 20 63    .....       HL c
014FC0:  6F 6E 74 61 69 6E 73 20 74 68 65 20 61 64 64 72    ontains the addr
014FD0:  65 73 73 20 6F 66 20 74 68 65 20 65 76 65 6E 74    ess of the event
014FE0:  20 62 6C 6F 63 6B 2E 0D 0A 0D 0A 0D 0A 20 20 20     block.......   
014FF0:  20 20 20 20 45 78 69 74 20 63 6F 6E 64 69 74 69        Exit conditi
015000:  6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ons:......      
015010:  20 41 46 2C 20 42 43 2C 20 44 45 20 61 6E 64 20     AF, BC, DE and 
015020:  48 4C 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20 20    HL corrupt...   
015030:  20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65        All other re
015040:  67 69 73 74 65 72 73 20 70 72 65 73 65 72 76 65    gisters preserve
015050:  64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E    d.......       N
015060:  6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    otes:......     
015070:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69      This routine i
015080:  73 20 69 6E 74 65 6E 64 65 64 20 74 6F 20 62 65    s intended to be
015090:  20 63 61 6C 6C 65 64 20 74 6F 20 70 72 6F 63 65     called to proce
0150A0:  73 73 20 20 61 6E 20 20 65 76 65 6E 74 20 20 61    ss  an  event  a
0150B0:  66 74 65 72 20 20 4B 4C 0D 0A 20 20 20 20 20 20    fter  KL..      
0150C0:  20 4E 45 58 54 20 53 59 4E 43 20 68 61 73 20 66     NEXT SYNC has f
0150D0:  6F 75 6E 64 20 69 74 20 74 6F 20 62 65 20 70 65    ound it to be pe
0150E0:  6E 64 69 6E 67 2E 20 55 73 65 20 6F 66 20 74 68    nding. Use of th
0150F0:  69 73 20 65 6E 74 72 79 20 61 74 20 20 61 6E 79    is entry at  any
015100:  20 20 6F 74 68 65 72 0D 0A 20 20 20 20 20 20 20      other..       
015110:  74 69 6D 65 20 69 73 20 6E 6F 74 20 72 65 63 6F    time is not reco
015120:  6D 6D 65 6E 64 65 64 2E 0D 0A 0D 0A 0D 0A 20 20    mmended.......  
015130:  20 20 20 20 20 53 65 65 20 20 4B 4C 20 20 4E 45         See  KL  NE
015140:  58 54 20 20 53 59 4E 43 20 20 61 62 6F 76 65 20    XT  SYNC  above 
015150:  20 66 6F 72 20 20 74 68 65 20 20 67 65 6E 65 72     for  the  gener
015160:  61 6C 20 20 73 63 68 65 6D 65 20 20 66 6F 72 20    al  scheme  for 
015170:  20 70 72 6F 63 65 73 73 69 6E 67 0D 0A 20 20 20     processing..   
015180:  20 20 20 20 73 79 6E 63 68 72 6F 6E 6F 75 73 20        synchronous 
015190:  65 76 65 6E 74 73 2E 0D 0A 0D 0A 0D 0A 20 20 20    events.......   
0151A0:  20 20 20 20 4B 4C 20 44 4F 20 53 59 4E 43 20 64        KL DO SYNC d
0151B0:  6F 65 73 20 6E 6F 74 20 69 74 73 65 6C 66 20 61    oes not itself a
0151C0:  66 66 65 63 74 20 74 68 65 20 65 76 65 6E 74 20    ffect the event 
0151D0:  63 6F 75 6E 74 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20    count.........  
0151E0:  20 20 20 20 20 52 65 6C 61 74 65 64 20 65 6E 74         Related ent
0151F0:  72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ries:......     
015200:  20 20 4B 4C 20 44 4F 4E 45 20 53 59 4E 43 0D 0A      KL DONE SYNC..
015210:  20 20 20 20 20 20 20 4B 4C 20 4E 45 58 54 20 53           KL NEXT S
015220:  59 4E 43 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    YNC.............
015230:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    ............... 
015240:  20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50          AMSTRAD CP
015250:  43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49    C464/664/6128 FI
015260:  52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20    RMWARE          
015270:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
015280:  20 70 61 67 65 20 31 35 2E 32 30 37 0D 0A 0D 0A     page 15.207....
015290:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
0152A0:  20 31 37 31 3A 20 4B 4C 20 44 4F 4E 45 20 53 59     171: KL DONE SY
0152B0:  4E 43 20 20 20 20 20 20 20 20 20 20 20 20 20 20    NC              
0152C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0152D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0152E0:  20 20 23 42 44 30 31 0D 0A 0D 0A 20 20 20 20 20      #BD01....     
0152F0:  20 20 46 69 6E 69 73 68 20 70 72 6F 63 65 73 73      Finish process
015300:  69 6E 67 20 61 6E 20 65 76 65 6E 74 2E 0D 0A 0D    ing an event....
015310:  0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D    .       Action:.
015320:  0A 0D 0A 20 20 20 20 20 20 20 4F 6E 63 65 20 61    ...       Once a
015330:  20 73 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65     synchronous eve
015340:  6E 74 20 68 61 73 20 62 65 65 6E 20 70 72 6F 63    nt has been proc
015350:  65 73 73 65 64 2C 20 20 62 79 20 20 69 6E 76 6F    essed,  by  invo
015360:  6B 69 6E 67 20 20 69 74 73 20 20 65 76 65 6E 74    king  its  event
015370:  0D 0A 20 20 20 20 20 20 20 72 6F 75 74 69 6E 65    ..       routine
015380:  20 76 69 61 20 4B 4C 20 44 4F 20 53 59 4E 43 2C     via KL DO SYNC,
015390:  20 74 68 69 73 20 65 6E 74 72 79 20 20 6D 75 73     this entry  mus
0153A0:  74 20 20 62 65 20 20 63 61 6C 6C 65 64 20 20 74    t  be  called  t
0153B0:  6F 20 20 72 65 73 74 6F 72 65 20 20 74 68 65 0D    o  restore  the.
0153C0:  0A 20 20 20 20 20 20 20 63 75 72 72 65 6E 74 20    .       current 
0153D0:  65 76 65 6E 74 20 70 72 69 6F 72 69 74 79 20 61    event priority a
0153E0:  6E 64 20 74 6F 20 64 65 61 6C 20 77 69 74 68 20    nd to deal with 
0153F0:  74 68 65 20 65 76 65 6E 74 20 63 6F 75 6E 74 2E    the event count.
015400:  20 49 66 20 74 68 65 20 20 63 6F 75 6E 74 0D 0A     If the  count..
015410:  20 20 20 20 20 20 20 72 65 6D 61 69 6E 73 20 67           remains g
015420:  72 65 61 74 65 72 20 74 68 61 6E 20 7A 65 72 6F    reater than zero
015430:  20 74 68 65 20 20 65 76 65 6E 74 20 20 62 6C 6F     the  event  blo
015440:  63 6B 20 20 69 73 20 20 70 6C 61 63 65 64 20 20    ck  is  placed  
015450:  62 61 63 6B 20 20 6F 6E 20 20 74 68 65 0D 0A 20    back  on  the.. 
015460:  20 20 20 20 20 20 73 79 6E 63 68 72 6F 6E 6F 75          synchronou
015470:  73 20 65 76 65 6E 74 20 71 75 65 75 65 2E 0D 0A    s event queue...
015480:  0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20 63    ..       Entry c
015490:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20    onditions:....  
0154A0:  20 20 20 20 20 41 20 63 6F 6E 74 61 69 6E 73 20         A contains 
0154B0:  74 68 65 20 70 72 65 76 69 6F 75 73 20 65 76 65    the previous eve
0154C0:  6E 74 20 70 72 69 6F 72 69 74 79 2E 0D 0A 20 20    nt priority...  
0154D0:  20 20 20 20 20 48 4C 20 63 6F 6E 74 61 69 6E 73         HL contains
0154E0:  20 74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20     the address of 
0154F0:  74 68 65 20 65 76 65 6E 74 20 62 6C 6F 63 6B 2E    the event block.
015500:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20    ....       Exit 
015510:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20    conditions:.... 
015520:  20 20 20 20 20 20 41 46 2C 20 42 43 2C 20 44 45          AF, BC, DE
015530:  20 61 6E 64 20 48 4C 20 63 6F 72 72 75 70 74 2E     and HL corrupt.
015540:  0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68    ..       All oth
015550:  65 72 20 72 65 67 69 73 74 65 72 73 20 70 72 65    er registers pre
015560:  73 65 72 76 65 64 2E 0D 0A 0D 0A 20 20 20 20 20    served.....     
015570:  20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20      Notes:......  
015580:  20 20 20 20 20 54 68 69 73 20 72 6F 75 74 69 6E         This routin
015590:  65 20 69 73 20 69 6E 74 65 6E 64 65 64 20 74 6F    e is intended to
0155A0:  20 62 65 20 63 61 6C 6C 65 64 20 61 66 74 65 72     be called after
0155B0:  20 63 61 6C 6C 69 6E 67 20 4B 4C 20 4E 45 58 54     calling KL NEXT
0155C0:  20 20 53 59 4E 43 2C 20 20 74 6F 0D 0A 20 20 20      SYNC,  to..   
0155D0:  20 20 20 20 66 69 6E 64 20 61 20 70 65 6E 64 69        find a pendi
0155E0:  6E 67 20 65 76 65 6E 74 2C 20 61 6E 64 20 4B 4C    ng event, and KL
0155F0:  20 44 4F 20 53 59 4E 43 2C 20 74 6F 20 72 75 6E     DO SYNC, to run
015600:  20 20 74 68 65 20 20 65 76 65 6E 74 20 20 72 6F      the  event  ro
015610:  75 74 69 6E 65 2E 20 20 49 74 0D 0A 20 20 20 20    utine.  It..    
015620:  20 20 20 75 73 65 73 20 74 68 65 20 70 72 65 76       uses the prev
015630:  69 6F 75 73 20 65 76 65 6E 74 20 70 72 69 6F 72    ious event prior
015640:  69 74 79 20 61 6E 64 20 74 68 65 20 65 76 65 6E    ity and the even
015650:  74 20 62 6C 6F 63 6B 20 61 64 64 72 65 73 73 20    t block address 
015660:  20 72 65 74 75 72 6E 65 64 0D 0A 20 20 20 20 20     returned..     
015670:  20 20 62 79 20 4B 4C 20 4E 45 58 54 20 53 59 4E      by KL NEXT SYN
015680:  43 2E 20 4F 74 68 65 72 20 75 73 65 73 20 6F 66    C. Other uses of
015690:  20 74 68 69 73 20 65 6E 74 72 79 20 61 72 65 20     this entry are 
0156A0:  6E 6F 74 20 72 65 63 6F 6D 6D 65 6E 64 65 64 2E    not recommended.
0156B0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 53 65 65    ......       See
0156C0:  20 20 4B 4C 20 20 4E 45 58 54 20 20 53 59 4E 43      KL  NEXT  SYNC
0156D0:  20 20 61 62 6F 76 65 20 20 66 6F 72 20 20 74 68      above  for  th
0156E0:  65 20 20 67 65 6E 65 72 61 6C 20 20 73 63 68 65    e  general  sche
0156F0:  6D 65 20 20 66 6F 72 20 20 70 72 6F 63 65 73 73    me  for  process
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:  69 6E 67 0D 0A 20 20 20 20 20 20 20 73 79 6E 63    ing..       sync
015810:  68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 73 2E 0D    hronous events..
015820:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 73 74    .....       Rest
015830:  6F 72 69 6E 67 20 20 74 68 65 20 20 63 75 72 72    oring  the  curr
015840:  65 6E 74 20 20 65 76 65 6E 74 20 20 70 72 69 6F    ent  event  prio
015850:  72 69 74 79 20 20 69 73 20 20 61 6E 20 20 65 73    rity  is  an  es
015860:  73 65 6E 74 69 61 6C 20 20 73 74 65 70 20 20 20    sential  step   
015870:  69 6E 0D 0A 20 20 20 20 20 20 20 6D 61 69 6E 74    in..       maint
015880:  61 69 6E 69 6E 67 20 74 68 65 20 73 79 6E 63 68    aining the synch
015890:  72 6F 6E 6F 75 73 20 65 76 65 6E 74 20 70 72 69    ronous event pri
0158A0:  6F 72 69 74 79 20 73 63 68 65 6D 65 2E 0D 0A 0D    ority scheme....
0158B0:  0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74 68 65    ...       If the
0158C0:  20 65 76 65 6E 74 20 63 6F 75 6E 74 20 69 73 20     event count is 
0158D0:  67 72 65 61 74 65 72 20 74 68 61 6E 20 7A 65 72    greater than zer
0158E0:  6F 20 74 68 65 6E 20 69 74 20 69 73 20 64 65 63    o then it is dec
0158F0:  72 65 6D 65 6E 74 65 64 2E 20 49 66 20 74 68 65    remented. If the
015900:  0D 0A 20 20 20 20 20 20 20 63 6F 75 6E 74 20 69    ..       count i
015910:  73 20 73 74 69 6C 6C 20 20 67 72 65 61 74 65 72    s still  greater
015920:  20 20 74 68 61 6E 20 20 7A 65 72 6F 20 20 74 68      than  zero  th
015930:  65 6E 20 20 74 68 65 72 65 20 20 61 72 65 20 20    en  there  are  
015940:  66 75 72 74 68 65 72 20 20 65 76 65 6E 74 73 0D    further  events.
015950:  0A 20 20 20 20 20 20 20 6F 75 74 73 74 61 6E 64    .       outstand
015960:  69 6E 67 20 61 6E 64 20 74 68 65 20 65 76 65 6E    ing and the even
015970:  74 20 69 73 20 70 6C 61 63 65 64 20 20 62 61 63    t is placed  bac
015980:  6B 20 20 6F 6E 20 20 74 68 65 20 20 73 79 6E 63    k  on  the  sync
015990:  68 72 6F 6E 6F 75 73 20 20 65 76 65 6E 74 0D 0A    hronous  event..
0159A0:  20 20 20 20 20 20 20 71 75 65 75 65 2E 20 54 68           queue. Th
0159B0:  65 20 65 76 65 6E 74 20 6D 61 79 20 62 65 20 64    e event may be d
0159C0:  69 73 61 72 6D 65 64 20 62 65 74 77 65 65 6E 20    isarmed between 
0159D0:  4B 4C 20 20 4E 45 58 54 20 20 53 59 4E 43 20 20    KL  NEXT  SYNC  
0159E0:  61 6E 64 20 20 4B 4C 20 20 44 4F 4E 45 0D 0A 20    and  KL  DONE.. 
0159F0:  20 20 20 20 20 20 53 59 4E 43 2E 20 53 65 74 74          SYNC. Sett
015A00:  69 6E 67 20 74 68 65 20 65 76 65 6E 74 20 63 6F    ing the event co
015A10:  75 6E 74 20 74 6F 20 20 6F 6E 65 20 20 62 65 66    unt to  one  bef
015A20:  6F 72 65 20 20 63 61 6C 6C 69 6E 67 20 20 4B 4C    ore  calling  KL
015A30:  20 20 44 4F 4E 45 20 20 53 59 4E 43 0D 0A 20 20      DONE  SYNC..  
015A40:  20 20 20 20 20 66 6F 72 63 65 73 20 6D 75 6C 74         forces mult
015A50:  69 70 6C 65 20 65 76 65 6E 74 73 20 74 6F 20 62    iple events to b
015A60:  65 20 74 72 65 61 74 65 64 20 61 73 20 61 20 73    e treated as a s
015A70:  69 6E 67 6C 65 20 65 76 65 6E 74 2E 0D 0A 0D 0A    ingle event.....
015A80:  0D 0A 20 20 20 20 20 20 20 4B 4C 20 44 4F 4E 45    ..       KL DONE
015A90:  20 53 59 4E 43 20 6D 61 79 20 65 6E 61 62 6C 65     SYNC may enable
015AA0:  20 69 6E 74 65 72 72 75 70 74 73 2E 0D 0A 0D 0A     interrupts.....
015AB0:  0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64    ..       Related
015AC0:  20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20     entries:...... 
015AD0:  20 20 20 20 20 20 4B 4C 20 44 4F 20 53 59 4E 43          KL DO SYNC
015AE0:  0D 0A 20 20 20 20 20 20 20 4B 4C 20 4E 45 58 54    ..       KL NEXT
015AF0:  20 53 59 4E 43 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20     SYNC.......... 
015B00:  20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50          AMSTRAD CP
015B10:  43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49    C464/664/6128 FI
015B20:  52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20    RMWARE          
015B30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
015B40:  20 70 61 67 65 20 31 35 2E 32 30 38 0D 0A 0D 0A     page 15.208....
015B50:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
015B60:  20 31 37 32 3A 20 4B 4C 20 45 56 45 4E 54 20 44     172: KL EVENT D
015B70:  49 53 41 42 4C 45 20 20 20 20 20 20 20 20 20 20    ISABLE          
015B80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
015B90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
015BA0:  20 20 23 42 44 30 34 0D 0A 0D 0A 0D 0A 20 20 20      #BD04......   
015BB0:  20 20 20 20 44 69 73 61 62 6C 65 20 6E 6F 72 6D        Disable norm
015BC0:  61 6C 20 73 79 6E 63 68 72 6F 6E 6F 75 73 20 65    al synchronous e
015BD0:  76 65 6E 74 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    vents.......    
015BE0:  20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A       Action:......
015BF0:  20 20 20 20 20 20 20 50 72 65 76 65 6E 74 20 6E           Prevent n
015C00:  6F 72 6D 61 6C 20 73 79 6E 63 68 72 6F 6E 6F 75    ormal synchronou
015C10:  73 20 20 65 76 65 6E 74 73 20 20 66 72 6F 6D 20    s  events  from 
015C20:  20 62 65 69 6E 67 20 20 70 72 6F 63 65 73 73 65     being  processe
015C30:  64 20 20 62 75 74 20 20 61 6C 6C 6F 77 0D 0A 20    d  but  allow.. 
015C40:  20 20 20 20 20 20 65 78 70 72 65 73 73 20 73 79          express sy
015C50:  6E 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 73    nchronous events
015C60:  20 20 74 6F 20 20 62 65 20 20 70 72 6F 63 65 73      to  be  proces
015C70:  73 65 64 2E 20 20 54 68 69 73 20 20 69 73 20 20    sed.  This  is  
015C80:  61 63 68 69 65 76 65 64 20 20 62 79 0D 0A 20 20    achieved  by..  
015C90:  20 20 20 20 20 73 65 74 74 69 6E 67 20 74 68 65         setting the
015CA0:  20 63 75 72 72 65 6E 74 20 65 76 65 6E 74 20 70     current event p
015CB0:  72 69 6F 72 69 74 79 20 68 69 67 68 65 72 20 20    riority higher  
015CC0:  74 68 61 6E 20 20 61 6E 79 20 20 70 6F 73 73 69    than  any  possi
015CD0:  62 6C 65 20 20 6E 6F 72 6D 61 6C 0D 0A 20 20 20    ble  normal..   
015CE0:  20 20 20 20 73 79 6E 63 68 72 6F 6E 6F 75 73 20        synchronous 
015CF0:  65 76 65 6E 74 20 70 72 69 6F 72 69 74 79 2E 0D    event priority..
015D00:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72    .....       Entr
015D10:  79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D    y conditions:...
015D20:  0A 0D 0A 20 20 20 20 20 20 20 4E 6F 20 63 6F 6E    ...       No con
015D30:  64 69 74 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A 20 20    ditions.......  
015D40:  20 20 20 20 20 45 78 69 74 20 63 6F 6E 64 69 74         Exit condit
015D50:  69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ions:......     
015D60:  20 20 48 4C 20 63 6F 72 72 75 70 74 2E 0D 0A 20      HL corrupt... 
015D70:  20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20          All other 
015D80:  72 65 67 69 73 74 65 72 73 20 70 72 65 73 65 72    registers preser
015D90:  76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ved.......      
015DA0:  20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20     Notes:......   
015DB0:  20 20 20 20 4B 4C 20 45 56 45 4E 54 20 44 49 53        KL EVENT DIS
015DC0:  41 42 4C 45 20 64 6F 65 73 20 6E 6F 74 20 70 72    ABLE does not pr
015DD0:  65 76 65 6E 74 20 65 76 65 6E 74 73 20 66 72 6F    event events fro
015DE0:  6D 20 62 65 69 6E 67 20 6B 69 63 6B 65 64 2E 20    m being kicked. 
015DF0:  54 68 65 20 65 66 66 65 63 74 0D 0A 20 20 20 20    The effect..    
015E00:  20 20 20 69 73 20 74 6F 20 27 6D 61 73 6B 20 6F       is to 'mask o
015E10:  66 66 27 20 61 6C 6C 20 70 65 6E 64 69 6E 67 20    ff' all pending 
015E20:  6E 6F 72 6D 61 6C 20 73 79 6E 63 68 72 6F 6E 6F    normal synchrono
015E30:  75 73 20 65 76 65 6E 74 73 20 20 73 6F 20 20 74    us events  so  t
015E40:  68 61 74 20 20 74 68 65 79 0D 0A 20 20 20 20 20    hat  they..     
015E50:  20 20 61 72 65 20 68 69 64 64 65 6E 20 66 72 6F      are hidden fro
015E60:  6D 20 74 68 65 20 66 6F 72 65 67 72 6F 75 6E 64    m the foreground
015E70:  20 70 72 6F 67 72 61 6D 20 28 77 68 65 6E 20 4B     program (when K
015E80:  4C 20 50 4F 4C 4C 20 53 59 4E 43 48 52 4F 4E 4F    L POLL SYNCHRONO
015E90:  55 53 20 6F 72 20 4B 4C 0D 0A 20 20 20 20 20 20    US or KL..      
015EA0:  20 4E 45 58 54 20 53 59 4E 43 20 61 72 65 20 63     NEXT SYNC are c
015EB0:  61 6C 6C 65 64 29 20 61 6E 64 20 68 65 6E 63 65    alled) and hence
015EC0:  20 61 72 65 20 6E 6F 74 20 70 72 6F 63 65 73 73     are not process
015ED0:  65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ed.......       
015EE0:  4B 4C 20 45 56 45 4E 54 20 45 4E 41 42 4C 45 20    KL EVENT ENABLE 
015EF0:  72 65 76 65 72 73 65 73 20 74 68 65 20 65 66 66    reverses the eff
015F00:  65 63 74 20 6F 66 20 4B 4C 20 45 56 45 4E 54 20    ect of KL EVENT 
015F10:  44 49 53 41 42 4C 45 2E 0D 0A 0D 0A 0D 0A 20 20    DISABLE.......  
015F20:  20 20 20 20 20 49 74 20 69 73 20 6E 6F 74 20 70         It is not p
015F30:  6F 73 73 69 62 6C 65 20 74 6F 20 20 64 69 73 61    ossible to  disa
015F40:  62 6C 65 20 20 73 79 6E 63 68 72 6F 6E 6F 75 73    ble  synchronous
015F50:  20 20 65 76 65 6E 74 73 20 20 70 65 72 6D 61 6E      events  perman
015F60:  65 6E 74 6C 79 20 20 66 72 6F 6D 0D 0A 20 20 20    ently  from..   
015F70:  20 20 20 20 69 6E 73 69 64 65 20 61 20 73 79 6E        inside a syn
015F80:  63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 20 20    chronous event  
015F90:  72 6F 75 74 69 6E 65 20 20 61 73 20 20 74 68 65    routine  as  the
015FA0:  20 20 70 72 65 76 69 6F 75 73 20 20 63 75 72 72      previous  curr
015FB0:  65 6E 74 20 20 65 76 65 6E 74 0D 0A 20 20 20 20    ent  event..    
015FC0:  20 20 20 70 72 69 6F 72 69 74 79 20 69 73 20 72       priority is r
015FD0:  65 73 74 6F 72 65 64 20 77 68 65 6E 20 74 68 65    estored when the
015FE0:  20 65 76 65 6E 74 20 72 6F 75 74 69 6E 65 20 72     event routine r
015FF0:  65 74 75 72 6E 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20    eturns......... 
016000:  20 20 20 20 20 20 52 65 6C 61 74 65 64 20 65 6E          Related en
016010:  74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    tries:......    
016020:  20 20 20 4B 4C 20 44 49 53 41 52 4D 20 45 56 45       KL DISARM EVE
016030:  4E 54 0D 0A 20 20 20 20 20 20 20 4B 4C 20 45 56    NT..       KL EV
016040:  45 4E 54 20 45 4E 41 42 4C 45 0D 0A 20 20 20 20    ENT ENABLE..    
016050:  20 20 20 4B 4C 20 4E 45 58 54 20 53 59 4E 43 0D       KL NEXT SYNC.
016060:  0A 20 20 20 20 20 20 20 4B 4C 20 50 4F 4C 4C 20    .       KL POLL 
016070:  53 59 4E 43 48 52 4F 4E 4F 55 53 0D 0A 0D 0A 0D    SYNCHRONOUS.....
016080:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
016090:  41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36    AMSTRAD CPC464/6
0160A0:  36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45    64/6128 FIRMWARE
0160B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0160C0:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
0160D0:  31 35 2E 32 30 39 0D 0A 1A 20 20 20 20 20 20 20    15.209...       
0160E0:  46 69 6C 6C 20 61 6E 20 61 72 65 61 20 6F 66 20    Fill an area of 
0160F0:  74 68 65 20 73 63 72 65 65 6E 2E 0D 0A 0D 0A 20    the screen..... 
016100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0161A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0161B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0161C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0161D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0161E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0161F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0162A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0162B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0162C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0162D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0162E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0162F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0163A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0163B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0163C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0163D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0163E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0163F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
016400:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
016410:  20 20 20 31 37 33 3A 20 4B 4C 20 45 56 45 4E 54       173: KL EVENT
016420:  20 45 4E 41 42 4C 45 20 20 20 20 20 20 20 20 20     ENABLE         
016430:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
016440:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
016450:  20 20 20 20 23 42 44 30 37 0D 0A 0D 0A 0D 0A 20        #BD07...... 
016460:  20 20 20 20 20 20 45 6E 61 62 6C 65 73 20 6E 6F          Enables no
016470:  72 6D 61 6C 20 73 79 6E 63 68 72 6F 6E 6F 75 73    rmal synchronous
016480:  20 65 76 65 6E 74 73 2E 0D 0A 0D 0A 0D 0A 20 20     events.......  
016490:  20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A         Action:....
0164A0:  0D 0A 20 20 20 20 20 20 20 41 6C 6C 6F 77 20 6E    ..       Allow n
0164B0:  6F 72 6D 61 6C 20 61 6E 64 20 65 78 70 72 65 73    ormal and expres
0164C0:  73 20 73 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76    s synchronous ev
0164D0:  65 6E 74 73 20 74 6F 20 62 65 20 70 72 6F 63 65    ents to be proce
0164E0:  73 73 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ssed.......     
0164F0:  20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F      Entry conditio
016500:  6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ns:......       
016510:  4E 6F 20 63 6F 6E 64 69 74 69 6F 6E 73 2E 0D 0A    No conditions...
016520:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20    ....       Exit 
016530:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D    conditions:.....
016540:  0A 20 20 20 20 20 20 20 48 4C 20 63 6F 72 72 75    .       HL corru
016550:  70 74 2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20    pt...       All 
016560:  6F 74 68 65 72 20 72 65 67 69 73 74 65 72 73 20    other registers 
016570:  70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A    preserved.......
016580:  20 20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D           Notes:...
016590:  0A 0D 0A 20 20 20 20 20 20 20 45 76 65 6E 74 73    ...       Events
0165A0:  20 61 72 65 20 65 6E 61 62 6C 65 64 20 62 79 20     are enabled by 
0165B0:  64 65 66 61 75 6C 74 2E 20 4B 4C 20 45 56 45 4E    default. KL EVEN
0165C0:  54 20 45 4E 41 42 4C 45 20 72 65 76 65 72 73 65    T ENABLE reverse
0165D0:  73 20 74 68 65 20 65 66 66 65 63 74 20 20 6F 66    s the effect  of
0165E0:  0D 0A 20 20 20 20 20 20 20 4B 4C 20 45 56 45 4E    ..       KL EVEN
0165F0:  54 20 44 49 53 41 42 4C 45 2E 0D 0A 0D 0A 0D 0A    T DISABLE.......
016600:  20 20 20 20 20 20 20 49 74 20 69 73 20 6E 6F 74           It is not
016610:  20 70 6F 73 73 69 62 6C 65 20 74 6F 20 20 64 69     possible to  di
016620:  73 61 62 6C 65 20 20 73 79 6E 63 68 72 6F 6E 6F    sable  synchrono
016630:  75 73 20 20 65 76 65 6E 74 73 20 20 70 65 72 6D    us  events  perm
016640:  61 6E 65 6E 74 6C 79 20 20 66 72 6F 6D 0D 0A 20    anently  from.. 
016650:  20 20 20 20 20 20 69 6E 73 69 64 65 20 61 20 73          inside a s
016660:  79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74    ynchronous event
016670:  20 72 6F 75 74 69 6E 65 20 61 73 20 74 68 65 20     routine as the 
016680:  63 75 72 72 65 6E 74 20 65 76 65 6E 74 20 70 72    current event pr
016690:  69 6F 72 69 74 79 20 77 68 69 63 68 0D 0A 20 20    iority which..  
0166A0:  20 20 20 20 20 69 73 20 75 73 65 64 20 74 6F 20         is used to 
0166B0:  64 69 73 61 62 6C 65 20 65 76 65 6E 74 73 20 69    disable events i
0166C0:  73 20 72 65 73 74 6F 72 65 64 20 77 68 65 6E 20    s restored when 
0166D0:  74 68 65 20 65 76 65 6E 74 20 72 6F 75 74 69 6E    the event routin
0166E0:  65 20 72 65 74 75 72 6E 73 2E 0D 0A 0D 0A 0D 0A    e returns.......
0166F0:  0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64    ..       Related
016700:  20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20     entries:...... 
016710:  20 20 20 20 20 20 4B 4C 20 45 56 45 4E 54 20 44          KL EVENT D
016720:  49 53 41 42 4C 45 0D 0A 20 20 20 20 20 20 20 4B    ISABLE..       K
016730:  4C 20 4E 45 58 54 20 53 59 4E 43 0D 0A 20 20 20    L NEXT SYNC..   
016740:  20 20 20 20 4B 4C 20 50 4F 4C 4C 20 53 59 4E 43        KL POLL SYNC
016750:  48 52 4F 4E 4F 55 53 0D 0A 0D 0A 0D 0A 0D 0A 0D    HRONOUS.........
016760:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
016770:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D    .......       AM
016780:  53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34    STRAD CPC464/664
016790:  2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20    /6128 FIRMWARE  
0167A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0167B0:  20 20 20 20 20 20 20 20 20 70 61 67 65 20 31 35             page 15
0167C0:  2E 32 31 30 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    .210............
0167D0:  0D 0A 20 20 20 20 20 20 20 31 37 34 3A 20 4B 4C    ..       174: KL
0167E0:  20 44 49 53 41 52 4D 20 45 56 45 4E 54 20 20 20     DISARM EVENT   
0167F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
016800:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
016810:  20 20 20 20 20 20 20 20 20 20 23 42 44 30 41 0D              #BD0A.
016820:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 50 72 65 76    .....       Prev
016830:  65 6E 74 20 61 6E 20 65 76 65 6E 74 20 66 72 6F    ent an event fro
016840:  6D 20 6F 63 63 75 72 72 69 6E 67 2E 0D 0A 0D 0A    m occurring.....
016850:  0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A    ..       Action:
016860:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 44 69 73    ......       Dis
016870:  61 72 6D 73 20 74 68 65 20 65 76 65 6E 74 20 62    arms the event b
016880:  79 20 73 65 74 74 69 6E 67 20 74 68 65 20 65 76    y setting the ev
016890:  65 6E 74 20 63 6F 75 6E 74 20 74 6F 20 61 20 6E    ent count to a n
0168A0:  65 67 61 74 69 76 65 20 76 61 6C 75 65 2E 20 20    egative value.  
0168B0:  41 6E 79 0D 0A 20 20 20 20 20 20 20 66 75 72 74    Any..       furt
0168C0:  68 65 72 20 27 6B 69 63 6B 73 27 20 28 63 61 6C    her 'kicks' (cal
0168D0:  6C 73 20 6F 66 20 4B 4C 20 45 56 45 4E 54 29 20    ls of KL EVENT) 
0168E0:  66 6F 72 20 74 68 65 20 65 76 65 6E 74 20 77 69    for the event wi
0168F0:  6C 6C 20 62 65 20 69 67 6E 6F 72 65 64 2C 20 61    ll be ignored, a
016900:  6E 79 0D 0A 20 20 20 20 20 20 20 6F 75 74 73 74    ny..       outst
016910:  61 6E 64 69 6E 67 20 65 76 65 6E 74 73 20 61 72    anding events ar
016920:  65 20 64 69 73 63 61 72 64 65 64 2E 0D 0A 0D 0A    e discarded.....
016930:  0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20 63    ..       Entry c
016940:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A    onditions:......
016950:  20 20 20 20 20 20 20 48 4C 20 63 6F 6E 74 61 69           HL contai
016960:  6E 73 20 74 68 65 20 61 64 64 72 65 73 73 20 6F    ns the address o
016970:  66 20 74 68 65 20 65 76 65 6E 74 20 62 6C 6F 63    f the event bloc
016980:  6B 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    k.......       E
016990:  78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D    xit conditions:.
0169A0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 46 20 63    .....       AF c
0169B0:  6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20 20    orrupt...       
0169C0:  41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73 74    All other regist
0169D0:  65 72 73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A    ers preserved...
0169E0:  0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73    ....       Notes
0169F0:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4B 4C    :......       KL
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:  20 20 44 49 53 41 52 4D 20 20 45 56 45 4E 54 20      DISARM  EVENT 
016B10:  20 73 68 6F 75 6C 64 20 20 6F 6E 6C 79 20 20 62     should  only  b
016B20:  65 20 20 75 73 65 64 20 20 77 69 74 68 20 20 61    e  used  with  a
016B30:  73 79 6E 63 68 72 6F 6E 6F 75 73 20 20 65 76 65    synchronous  eve
016B40:  6E 74 73 2E 0D 0A 20 20 20 20 20 20 20 53 79 6E    nts...       Syn
016B50:  63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 73 20    chronous events 
016B60:  6D 61 79 20 62 65 20 64 69 73 61 72 6D 65 64 20    may be disarmed 
016B70:  20 62 79 20 20 63 61 6C 6C 69 6E 67 20 20 4B 4C     by  calling  KL
016B80:  20 20 44 45 4C 20 20 53 59 4E 43 48 52 4F 4E 4F      DEL  SYNCHRONO
016B90:  55 53 2C 0D 0A 20 20 20 20 20 20 20 77 68 69 63    US,..       whic
016BA0:  68 20 61 6C 73 6F 20 65 6E 73 75 72 65 73 20 74    h also ensures t
016BB0:  68 61 74 20 74 68 65 20 65 76 65 6E 74 20 69 73    hat the event is
016BC0:  20 20 6E 6F 74 20 20 6F 6E 20 20 74 68 65 20 20      not  on  the  
016BD0:  73 79 6E 63 68 72 6F 6E 6F 75 73 20 20 65 76 65    synchronous  eve
016BE0:  6E 74 0D 0A 20 20 20 20 20 20 20 71 75 65 75 65    nt..       queue
016BF0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
016C00:  65 20 65 76 65 6E 74 20 6D 61 79 20 62 65 20 72    e event may be r
016C10:  65 61 72 6D 65 64 20 62 79 20 72 65 69 6E 69 74    earmed by reinit
016C20:  69 61 6C 69 7A 69 6E 67 20 69 74 20 28 4B 4C 20    ializing it (KL 
016C30:  49 4E 49 54 20 20 45 56 45 4E 54 29 20 20 6F 72    INIT  EVENT)  or
016C40:  20 20 62 79 0D 0A 20 20 20 20 20 20 20 73 65 74      by..       set
016C50:  74 69 6E 67 20 74 68 65 20 65 76 65 6E 74 20 63    ting the event c
016C60:  6F 75 6E 74 20 28 62 79 74 65 20 32 20 6F 66 20    ount (byte 2 of 
016C70:  74 68 65 20 65 76 65 6E 74 20 62 6C 6F 63 6B 29    the event block)
016C80:  20 74 6F 20 7A 65 72 6F 2E 0D 0A 0D 0A 0D 0A 0D     to zero........
016C90:  0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64 20    .       Related 
016CA0:  65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20    entries:......  
016CB0:  20 20 20 20 20 4B 4C 20 44 45 4C 20 53 59 4E 43         KL DEL SYNC
016CC0:  48 52 4F 4E 4F 55 53 0D 0A 20 20 20 20 20 20 20    HRONOUS..       
016CD0:  4B 4C 20 49 4E 49 54 20 45 56 45 4E 54 0D 0A 0D    KL INIT EVENT...
016CE0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
016CF0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
016D00:  41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36    AMSTRAD CPC464/6
016D10:  36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45    64/6128 FIRMWARE
016D20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
016D30:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
016D40:  31 35 2E 32 31 31 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    15.211..........
016D50:  0D 0A 0D 0A 20 20 20 20 20 20 20 31 37 35 3A 20    ....       175: 
016D60:  4B 4C 20 54 49 4D 45 20 50 4C 45 41 53 45 20 20    KL TIME PLEASE  
016D70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
016D80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
016D90:  20 20 20 20 20 20 20 20 20 20 20 20 23 42 44 30                #BD0
016DA0:  44 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 73    D......       As
016DB0:  6B 20 74 68 65 20 65 6C 61 70 73 65 64 20 74 69    k the elapsed ti
016DC0:  6D 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    me.......       
016DD0:  41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20    Action:......   
016DE0:  20 20 20 20 54 68 65 20 4B 65 72 6E 65 6C 20 20        The Kernel  
016DF0:  6D 61 69 6E 74 61 69 6E 73 20 20 61 20 20 63 6F    maintains  a  co
016E00:  75 6E 74 20 20 77 68 69 63 68 20 20 69 74 20 20    unt  which  it  
016E10:  69 6E 63 72 65 6D 65 6E 74 73 20 20 6F 6E 20 20    increments  on  
016E20:  65 61 63 68 20 20 74 69 6D 65 0D 0A 20 20 20 20    each  time..    
016E30:  20 20 20 69 6E 74 65 72 72 75 70 74 2E 20 54 68       interrupt. Th
016E40:  65 20 63 6F 75 6E 74 2C 20 74 68 65 72 65 66 6F    e count, therefo
016E50:  72 65 2C 20 6D 65 61 73 75 72 65 73 20 74 69 6D    re, measures tim
016E60:  65 20 69 6E 20 31 2F 33 30 30 74 68 20 6F 66 20    e in 1/300th of 
016E70:  61 20 20 73 65 63 6F 6E 64 0D 0A 20 20 20 20 20    a  second..     
016E80:  20 20 75 6E 69 74 73 2E 20 54 68 69 73 20 72 6F      units. This ro
016E90:  75 74 69 6E 65 20 72 65 74 75 72 6E 73 20 74 68    utine returns th
016EA0:  65 20 63 75 72 72 65 6E 74 20 63 6F 75 6E 74 2E    e current count.
016EB0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74    ......       Ent
016EC0:  72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    ry conditions:..
016ED0:  0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 20 63 6F    ....       No co
016EE0:  6E 64 69 74 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A 20    nditions....... 
016EF0:  20 20 20 20 20 20 45 78 69 74 20 63 6F 6E 64 69          Exit condi
016F00:  74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    tions:......    
016F10:  20 20 20 44 45 48 4C 20 63 6F 6E 74 61 69 6E 73       DEHL contains
016F20:  20 74 68 65 20 66 6F 75 72 20 62 79 74 65 20 63     the four byte c
016F30:  6F 75 6E 74 20 28 44 20 20 63 6F 6E 74 61 69 6E    ount (D  contain
016F40:  73 20 20 74 68 65 20 20 6D 6F 73 74 20 20 73 69    s  the  most  si
016F50:  67 6E 69 66 69 63 61 6E 74 0D 0A 20 20 20 20 20    gnificant..     
016F60:  20 20 62 79 74 65 20 61 6E 64 20 4C 20 74 68 65      byte and L the
016F70:  20 6C 65 61 73 74 20 73 69 67 6E 69 66 69 63 61     least significa
016F80:  6E 74 20 62 79 74 65 29 2E 0D 0A 0D 0A 0D 0A 20    nt byte)....... 
016F90:  20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20          All other 
016FA0:  72 65 67 69 73 74 65 72 73 20 70 72 65 73 65 72    registers preser
016FB0:  76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ved.......      
016FC0:  20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20     Notes:......   
016FD0:  20 20 20 20 54 68 65 20 63 6F 75 6E 74 20 69 73        The count is
016FE0:  20 7A 65 72 6F 69 7A 65 64 20 77 68 65 6E 20 74     zeroized when t
016FF0:  68 65 20 6D 61 63 68 69 6E 65 20 69 73 20 20 74    he machine is  t
017000:  75 72 6E 65 64 20 20 6F 6E 20 20 6F 72 20 20 72    urned  on  or  r
017010:  65 73 65 74 2E 20 20 54 68 65 0D 0A 20 20 20 20    eset.  The..    
017020:  20 20 20 63 6F 75 6E 74 20 6D 61 79 20 62 65 20       count may be 
017030:  73 65 74 20 74 6F 20 61 6E 6F 74 68 65 72 20 73    set to another s
017040:  74 61 72 74 69 6E 67 20 76 61 6C 75 65 20 62 79    tarting value by
017050:  20 4B 4C 20 54 49 4D 45 20 53 45 54 2E 0D 0A 0D     KL TIME SET....
017060:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 63 6F    ...       The co
017070:  75 6E 74 20 69 73 20 6E 6F 74 20 6B 65 70 74 20    unt is not kept 
017080:  75 70 20 74 6F 20 64 61 74 65 20 69 66 20 69 6E    up to date if in
017090:  74 65 72 72 75 70 74 73 20 61 72 65 20 64 69 73    terrupts are dis
0170A0:  61 62 6C 65 64 20 20 66 6F 72 20 20 6C 6F 6E 67    abled  for  long
0170B0:  0D 0A 20 20 20 20 20 20 20 70 65 72 69 6F 64 73    ..       periods
0170C0:  2C 20 73 75 63 68 20 61 73 20 77 68 69 6C 65 20    , such as while 
0170D0:  72 65 61 64 69 6E 67 20 61 6E 64 20 77 72 69 74    reading and writ
0170E0:  69 6E 67 20 74 68 65 20 63 61 73 73 65 74 74 65    ing the cassette
0170F0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
017100:  65 20 66 6F 75 72 20 62 79 74 65 20 63 6F 75 6E    e four byte coun
017110:  74 20 6F 76 65 72 66 6C 6F 77 73 20 61 66 74 65    t overflows afte
017120:  72 20 61 70 70 72 6F 78 69 6D 61 74 65 6C 79 3A    r approximately:
017130:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    ......          
017140:  20 20 20 20 20 20 20 20 20 31 34 2C 33 31 36 2C             14,316,
017150:  35 35 38 20 53 65 63 6F 6E 64 73 0D 0A 20 20 20    558 Seconds..   
017160:  20 20 20 20 20 20 20 20 20 20 20 20 20 3D 20 20                 =  
017170:  20 20 20 32 33 38 2C 36 30 39 20 4D 69 6E 75 74       238,609 Minut
017180:  65 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    es..            
017190:  20 20 20 20 3D 20 20 20 20 20 20 20 33 2C 39 37        =       3,97
0171A0:  37 20 48 6F 75 72 73 0D 0A 20 20 20 20 20 20 20    7 Hours..       
0171B0:  20 20 20 20 20 20 20 20 20 3D 20 20 20 20 20 20             =      
0171C0:  20 20 20 31 36 36 20 44 61 79 73 0D 0A 0D 0A 20       166 Days.... 
0171D0:  20 20 20 20 20 20 54 68 69 73 20 72 6F 75 74 69          This routi
0171E0:  6E 65 20 65 6E 61 62 6C 65 73 20 69 6E 74 65 72    ne enables inter
0171F0:  72 75 70 74 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20    rupts.........  
017200:  20 20 20 20 20 52 65 6C 61 74 65 64 20 65 6E 74         Related ent
017210:  72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ries:......     
017220:  20 20 4B 4C 20 54 49 4D 45 20 53 45 54 0D 0A 0D      KL TIME SET...
017230:  0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41    ...       AMSTRA
017240:  44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32    D CPC464/664/612
017250:  38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20    8 FIRMWARE      
017260:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
017270:  20 20 20 20 20 70 61 67 65 20 31 35 2E 32 31 32         page 15.212
017280:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ..............  
017290:  20 20 20 20 20 31 37 36 3A 20 4B 4C 20 54 49 4D         176: KL TIM
0172A0:  45 20 53 45 54 20 20 20 20 20 20 20 20 20 20 20    E SET           
0172B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0172C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0172D0:  20 20 20 20 20 20 23 42 44 31 30 0D 0A 0D 0A 20          #BD10.... 
0172E0:  20 20 20 20 20 20 53 65 74 20 74 68 65 20 65 6C          Set the el
0172F0:  61 70 73 65 64 20 74 69 6D 65 2E 0D 0A 0D 0A 20    apsed time..... 
017300:  20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D          Action:...
017310:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 4B 65    ...       The Ke
017320:  72 6E 65 6C 20 20 6D 61 69 6E 74 61 69 6E 73 20    rnel  maintains 
017330:  20 61 20 20 63 6F 75 6E 74 20 20 77 68 69 63 68     a  count  which
017340:  20 20 69 74 20 20 69 6E 63 72 65 6D 65 6E 74 73      it  increments
017350:  20 20 6F 6E 20 20 65 61 63 68 20 20 74 69 6D 65      on  each  time
017360:  0D 0A 20 20 20 20 20 20 20 69 6E 74 65 72 72 75    ..       interru
017370:  70 74 2E 20 54 68 65 20 63 6F 75 6E 74 2C 20 74    pt. The count, t
017380:  68 65 72 65 66 6F 72 65 2C 20 6D 65 61 73 75 72    herefore, measur
017390:  65 73 20 74 69 6D 65 20 69 6E 20 31 2F 33 30 30    es time in 1/300
0173A0:  74 68 20 6F 66 20 61 20 20 73 65 63 6F 6E 64 0D    th of a  second.
0173B0:  0A 20 20 20 20 20 20 20 75 6E 69 74 73 2E 20 54    .       units. T
0173C0:  68 69 73 20 72 6F 75 74 69 6E 65 20 73 65 74 73    his routine sets
0173D0:  20 74 68 65 20 63 6F 75 6E 74 20 74 6F 20 61 20     the count to a 
0173E0:  67 69 76 65 6E 20 76 61 6C 75 65 2E 0D 0A 0D 0A    given value.....
0173F0:  0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20 63    ..       Entry c
017400:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A    onditions:......
017410:  20 20 20 20 20 20 20 44 45 48 4C 20 63 6F 6E 74           DEHL cont
017420:  61 69 6E 73 20 74 68 65 20 66 6F 75 72 20 62 79    ains the four by
017430:  74 65 20 63 6F 75 6E 74 20 28 44 20 20 63 6F 6E    te count (D  con
017440:  74 61 69 6E 73 20 20 74 68 65 20 20 6D 6F 73 74    tains  the  most
017450:  20 20 73 69 67 6E 69 66 69 63 61 6E 74 0D 0A 20      significant.. 
017460:  20 20 20 20 20 20 62 79 74 65 20 61 6E 64 20 4C          byte and L
017470:  20 74 68 65 20 6C 65 61 73 74 20 73 69 67 6E 69     the least signi
017480:  66 69 63 61 6E 74 20 62 79 74 65 29 2E 0D 0A 0D    ficant byte)....
017490:  0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63    ...       Exit c
0174A0:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A    onditions:......
0174B0:  20 20 20 20 20 20 20 41 46 20 63 6F 72 72 75 70           AF corrup
0174C0:  74 2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F    t...       All o
0174D0:  74 68 65 72 20 72 65 67 69 73 74 65 72 73 20 70    ther registers p
0174E0:  72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20    reserved....... 
0174F0:  20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A          Notes:....
017500:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 66 6F 75    ..       The fou
017510:  72 20 62 79 74 65 20 63 6F 75 6E 74 20 6F 76 65    r byte count ove
017520:  72 66 6C 6F 77 73 20 61 66 74 65 72 20 61 70 70    rflows after app
017530:  72 6F 78 69 6D 61 74 65 6C 79 3A 0D 0A 0D 0A 0D    roximately:.....
017540:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
017550:  20 20 20 20 31 34 2C 33 31 36 2C 35 35 38 20 53        14,316,558 S
017560:  65 63 6F 6E 64 73 0D 0A 20 20 20 20 20 20 20 20    econds..        
017570:  20 20 20 20 20 20 20 20 3D 20 20 20 20 20 32 33            =     23
017580:  38 2C 36 30 39 20 4D 69 6E 75 74 65 73 0D 0A 20    8,609 Minutes.. 
017590:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3D                   =
0175A0:  20 20 20 20 20 20 20 33 2C 39 37 37 20 48 6F 75           3,977 Hou
0175B0:  72 73 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    rs..            
0175C0:  20 20 20 20 3D 20 20 20 20 20 20 20 20 20 31 36        =         16
0175D0:  36 20 44 61 79 73 0D 0A 0D 0A 0D 0A 20 20 20 20    6 Days......    
0175E0:  20 20 20 4B 4C 20 54 49 4D 45 20 53 45 54 20 6D       KL TIME SET m
0175F0:  61 79 20 62 65 20 75 73 65 64 20 74 6F 20 73 65    ay be used to se
017600:  74 20 74 68 65 20 63 6F 75 6E 74 20 74 6F 20 74    t the count to t
017610:  68 65 20 61 63 74 75 61 6C 20 74 69 6D 65 20 6F    he actual time o
017620:  66 20 64 61 79 2C 20 73 6F 0D 0A 20 20 20 20 20    f day, so..     
017630:  20 20 74 68 61 74 20 74 68 65 20 4B 65 72 6E 65      that the Kerne
017640:  6C 20 74 68 65 6E 20 6D 61 69 6E 74 61 69 6E 73    l then maintains
017650:  20 61 20 20 72 65 61 6C 20 20 63 6C 6F 63 6B 20     a  real  clock 
017660:  20 72 61 74 68 65 72 20 20 74 68 61 6E 20 20 61     rather  than  a
017670:  20 20 73 69 6D 70 6C 65 0D 0A 20 20 20 20 20 20      simple..      
017680:  20 6D 65 61 73 75 72 65 20 6F 66 20 74 68 65 20     measure of the 
017690:  74 69 6D 65 20 65 6C 61 70 73 65 64 20 73 69 6E    time elapsed sin
0176A0:  63 65 20 74 68 65 20 6C 61 73 74 20 72 65 73 65    ce the last rese
0176B0:  74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    t.......       T
0176C0:  68 65 20 63 6F 75 6E 74 20 69 73 20 6E 6F 74 20    he count is not 
0176D0:  6B 65 70 74 20 75 70 20 74 6F 20 64 61 74 65 20    kept up to date 
0176E0:  69 66 20 69 6E 74 65 72 72 75 70 74 73 20 61 72    if interrupts ar
0176F0:  65 20 64 69 73 61 62 6C 65 64 20 20 66 6F 72 20    e disabled  for 
017700:  20 6C 6F 6E 67 0D 0A 20 20 20 20 20 20 20 70 65     long..       pe
017710:  72 69 6F 64 73 2C 20 73 75 63 68 20 61 73 20 77    riods, such as w
017720:  68 69 6C 65 20 72 65 61 64 69 6E 67 20 61 6E 64    hile reading and
017730:  20 77 72 69 74 69 6E 67 20 74 68 65 20 63 61 73     writing the cas
017740:  73 65 74 74 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    sette.......    
017750:  20 20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20       This routine 
017760:  65 6E 61 62 6C 65 73 20 69 6E 74 65 72 72 75 70    enables interrup
017770:  74 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ts.........     
017780:  20 20 52 65 6C 61 74 65 64 20 65 6E 74 72 69 65      Related entrie
017790:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4B    s:......       K
0177A0:  4C 20 54 49 4D 45 20 50 4C 45 41 53 45 0D 0A 0D    L TIME PLEASE...
0177B0:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D    .......       AM
0177C0:  53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34    STRAD CPC464/664
0177D0:  2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20    /6128 FIRMWARE  
0177E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0177F0:  20 20 20 20 20 20 20 20 20 70 61 67 65 20 31 35             page 15
017800:  2E 32 31 33 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    .213............
017810:  0D 0A 20 20 20 20 20 20 20 31 37 37 3A 20 4D 43    ..       177: MC
017820:  20 42 4F 4F 54 20 50 52 4F 47 52 41 4D 20 20 20     BOOT PROGRAM   
017830:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
017840:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
017850:  20 20 20 20 20 20 20 20 20 20 23 42 44 31 33 0D              #BD13.
017860:  0A 0D 0A 20 20 20 20 20 20 20 4C 6F 61 64 20 61    ...       Load a
017870:  6E 64 20 72 75 6E 20 61 20 70 72 6F 67 72 61 6D    nd run a program
017880:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69    .....       Acti
017890:  6F 6E 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 53 68    on:....       Sh
0178A0:  75 74 20 64 6F 77 6E 20 61 73 20 6D 75 63 68 20    ut down as much 
0178B0:  6F 66 20 74 68 65 20 73 79 73 74 65 6D 20 61 73    of the system as
0178C0:  20 70 6F 73 73 69 62 6C 65 20 74 68 65 6E 20 6C     possible then l
0178D0:  6F 61 64 20 61 20 20 70 72 6F 67 72 61 6D 20 20    oad a  program  
0178E0:  69 6E 74 6F 0D 0A 20 20 20 20 20 20 20 52 41 4D    into..       RAM
0178F0:  20 61 6E 64 20 72 75 6E 20 69 74 2E 20 49 66 20     and run it. If 
017900:  74 68 65 20 6C 6F 61 64 20 66 61 69 6C 73 20 74    the load fails t
017910:  68 65 6E 20 74 68 65 20 70 72 65 76 69 6F 75 73    hen the previous
017920:  20 66 6F 72 65 67 72 6F 75 6E 64 20 70 72 6F 67     foreground prog
017930:  72 61 6D 0D 0A 20 20 20 20 20 20 20 69 73 20 72    ram..       is r
017940:  65 73 74 61 72 74 65 64 2E 0D 0A 0D 0A 20 20 20    estarted.....   
017950:  20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74        Entry condit
017960:  69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20    ions:....       
017970:  48 4C 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20    HL contains the 
017980:  61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 72    address of the r
017990:  6F 75 74 69 6E 65 20 74 6F 20 63 61 6C 6C 20 74    outine to call t
0179A0:  6F 20 6C 6F 61 64 20 74 68 65 20 70 72 6F 67 72    o load the progr
0179B0:  61 6D 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78    am.....       Ex
0179C0:  69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    it conditions:..
0179D0:  0D 0A 0D 0A 20 20 20 20 20 20 20 44 6F 65 73 20    ....       Does 
0179E0:  6E 6F 74 20 65 78 69 74 21 0D 0A 0D 0A 20 20 20    not exit!....   
0179F0:  20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 20 20        Notes:....  
017A00:  20 20 20 20 20 54 68 65 20 73 79 73 74 65 6D 20         The system 
017A10:  69 73 20 70 61 72 74 69 61 6C 6C 79 20 72 65 73    is partially res
017A20:  65 74 20 62 65 66 6F 72 65 20 61 74 74 65 6D 70    et before attemp
017A30:  74 69 6E 67 20 74 6F 20 6C 6F 61 64 20 20 74 68    ting to load  th
017A40:  65 20 20 70 72 6F 67 72 61 6D 2E 0D 0A 20 20 20    e  program...   
017A50:  20 20 20 20 45 78 74 65 72 6E 61 6C 20 69 6E 74        External int
017A60:  65 72 72 75 70 74 73 20 61 72 65 20 64 69 73 61    errupts are disa
017A70:  62 6C 65 64 2C 20 61 73 20 61 72 65 20 61 6C 6C    bled, as are all
017A80:  20 74 69 6D 65 72 2C 20 66 72 61 6D 65 20 66 6C     timer, frame fl
017A90:  79 62 61 63 6B 20 20 61 6E 64 0D 0A 20 20 20 20    yback  and..    
017AA0:  20 20 20 6B 65 79 62 6F 61 72 64 20 62 72 65 61       keyboard brea
017AB0:  6B 20 65 76 65 6E 74 73 2E 20 53 6F 75 6E 64 20    k events. Sound 
017AC0:  67 65 6E 65 72 61 74 69 6F 6E 20 69 73 20 20 74    generation is  t
017AD0:  75 72 6E 65 64 20 20 6F 66 66 2C 20 20 69 6E 64    urned  off,  ind
017AE0:  69 72 65 63 74 69 6F 6E 73 0D 0A 20 20 20 20 20    irections..     
017AF0:  20 20 61 72 65 20 73 65 74 20 74 6F 20 74 68 65      are set to the
017B00:  69 72 20 64 65 66 61 75 6C 74 20 72 6F 75 74 69    ir default routi
017B10:  6E 65 73 20 20 61 6E 64 20 20 74 68 65 20 20 73    nes  and  the  s
017B20:  74 61 63 6B 20 20 69 73 20 20 72 65 73 65 74 20    tack  is  reset 
017B30:  20 74 6F 20 20 74 68 65 0D 0A 20 20 20 20 20 20     to  the..      
017B40:  20 64 65 66 61 75 6C 74 20 73 79 73 74 65 6D 20     default system 
017B50:  73 74 61 63 6B 2E 20 54 68 69 73 20 70 72 6F 63    stack. This proc
017B60:  65 73 73 20 65 6E 73 75 72 65 73 20 74 68 61 74    ess ensures that
017B70:  20 6E 6F 20 6D 65 6D 6F 72 79 20 6F 75 74 73 69     no memory outsi
017B80:  64 65 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20    de  the..       
017B90:  66 69 72 6D 77 61 72 65 20 20 76 61 72 69 61 62    firmware  variab
017BA0:  6C 65 73 20 20 61 72 65 61 20 20 69 73 20 20 69    les  area  is  i
017BB0:  6E 20 20 75 73 65 20 20 77 68 65 6E 20 20 6C 6F    n  use  when  lo
017BC0:  61 64 69 6E 67 20 20 20 74 68 65 20 20 20 70 72    ading   the   pr
017BD0:  6F 67 72 61 6D 2E 0D 0A 20 20 20 20 20 20 20 4F    ogram...       O
017BE0:  76 65 72 77 72 69 74 69 6E 67 20 20 61 6E 20 20    verwriting  an  
017BF0:  61 63 74 69 76 65 20 20 65 76 65 6E 74 20 20 62    active  event  b
017C00:  6C 6F 63 6B 20 20 6F 72 20 20 69 6E 64 69 72 65    lock  or  indire
017C10:  63 74 69 6F 6E 20 20 72 6F 75 74 69 6E 65 20 20    ction  routine  
017C20:  63 6F 75 6C 64 0D 0A 20 20 20 20 20 20 20 6F 74    could..       ot
017C30:  68 65 72 77 69 73 65 20 68 61 76 65 20 75 6E 66    herwise have unf
017C40:  6F 72 74 75 6E 61 74 65 20 63 6F 6E 73 65 71 75    ortunate consequ
017C50:  65 6E 63 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20    ences.....      
017C60:  20 54 68 65 20 70 61 72 74 69 61 6C 20 73 79 73     The partial sys
017C70:  74 65 6D 20 20 72 65 73 65 74 20 20 64 6F 65 73    tem  reset  does
017C80:  20 20 6E 6F 74 20 20 63 68 61 6E 67 65 20 20 74      not  change  t
017C90:  68 65 20 20 52 4F 4D 20 20 73 74 61 74 65 20 20    he  ROM  state  
017CA0:  6F 72 20 20 52 4F 4D 0D 0A 20 20 20 20 20 20 20    or  ROM..       
017CB0:  73 65 6C 65 63 74 69 6F 6E 2E 20 54 68 65 20 72    selection. The r
017CC0:  6F 75 74 69 6E 65 20 72 75 6E 20 74 6F 20 6C 6F    outine run to lo
017CD0:  61 64 20 74 68 65 20 70 72 6F 67 72 61 6D 20 6D    ad the program m
017CE0:  75 73 74 20 62 65 20 20 69 6E 20 20 61 63 63 65    ust be  in  acce
017CF0:  73 73 69 62 6C 65 0D 0A 20 20 20 20 20 20 20 52    ssible..       R
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:  41 4D 20 6F 72 20 61 6E 20 65 6E 61 62 6C 65 64    AM or an enabled
017E10:  20 52 4F 4D 2E 20 20 4E 6F 74 65 20 20 74 68 61     ROM.  Note  tha
017E20:  74 20 20 74 68 65 20 20 66 69 72 6D 77 61 72 65    t  the  firmware
017E30:  20 20 6A 75 6D 70 62 6C 6F 63 6B 20 20 6E 6F 72      jumpblock  nor
017E40:  6D 61 6C 6C 79 0D 0A 20 20 20 20 20 20 20 65 6E    mally..       en
017E50:  61 62 6C 65 73 20 74 68 65 20 6C 6F 77 65 72 20    ables the lower 
017E60:  52 4F 4D 20 61 6E 64 20 64 69 73 61 62 6C 65 73    ROM and disables
017E70:  20 74 68 65 20 75 70 70 65 72 20 52 4F 4D 20 61     the upper ROM a
017E80:  6E 64 20 20 73 6F 20 20 74 68 65 20 20 72 6F 75    nd  so  the  rou
017E90:  74 69 6E 65 0D 0A 20 20 20 20 20 20 20 6D 75 73    tine..       mus
017EA0:  74 20 6E 6F 72 6D 61 6C 6C 79 20 62 65 20 69 6E    t normally be in
017EB0:  20 52 41 4D 20 61 62 6F 76 65 20 23 34 30 30 30     RAM above #4000
017EC0:  20 6F 72 20 69 6E 20 74 68 65 20 6C 6F 77 65 72     or in the lower
017ED0:  20 52 4F 4D 2E 0D 0A 0D 0A 20 20 20 20 20 20 20     ROM.....       
017EE0:  54 68 65 20 72 6F 75 74 69 6E 65 20 72 75 6E 20    The routine run 
017EF0:  74 6F 20 6C 6F 61 64 20 74 68 65 20 70 72 6F 67    to load the prog
017F00:  72 61 6D 20 69 73 20 66 72 65 65 20 20 74 6F 20    ram is free  to 
017F10:  20 75 73 65 20 20 61 6E 79 20 20 73 74 6F 72 65     use  any  store
017F20:  20 20 66 72 6F 6D 0D 0A 20 20 20 20 20 20 20 23      from..       #
017F30:  30 30 34 30 20 75 70 20 74 6F 20 74 68 65 20 62    0040 up to the b
017F40:  61 73 65 20 6F 66 20 74 68 65 20 66 69 72 6D 77    ase of the firmw
017F50:  61 72 65 20 76 61 72 69 61 62 6C 65 73 20 61 72    are variables ar
017F60:  65 61 20 20 28 23 42 31 30 30 29 20 20 61 6E 64    ea  (#B100)  and
017F70:  20 20 6D 61 79 0D 0A 20 20 20 20 20 20 20 61 6C      may..       al
017F80:  74 65 72 20 69 6E 64 69 72 65 63 74 69 6F 6E 73    ter indirections
017F90:  20 61 6E 64 20 61 72 6D 20 65 78 74 65 72 6E 61     and arm externa
017FA0:  6C 20 64 65 76 69 63 65 20 69 6E 74 65 72 72 75    l device interru
017FB0:  70 74 73 20 61 73 20 72 65 71 75 69 72 65 64 2E    pts as required.
017FC0:  20 20 49 74 0D 0A 20 20 20 20 20 20 20 73 68 6F      It..       sho
017FD0:  75 6C 64 20 6F 62 65 79 20 74 68 65 20 66 6F 6C    uld obey the fol
017FE0:  6C 6F 77 69 6E 67 20 65 78 69 74 20 63 6F 6E 64    lowing exit cond
017FF0:  69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20    itions:....     
018000:  20 20 20 20 20 20 20 20 20 20 20 49 66 20 74 68               If th
018010:  65 20 70 72 6F 67 72 61 6D 20 6C 6F 61 64 65 64    e program loaded
018020:  20 73 75 63 63 65 73 73 66 75 6C 6C 79 3A 0D 0A     successfully:..
018030:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
018040:  20 20 20 20 20 20 20 20 20 20 20 20 43 61 72 72                Carr
018050:  79 20 74 72 75 65 2E 0D 0A 20 20 20 20 20 20 20    y true...       
018060:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
018070:  20 20 20 48 4C 20 63 6F 6E 74 61 69 6E 73 20 74       HL contains t
018080:  68 65 20 70 72 6F 67 72 61 6D 20 65 6E 74 72 79    he program entry
018090:  20 70 6F 69 6E 74 2E 0D 0A 0D 0A 20 20 20 20 20     point.....     
0180A0:  20 20 20 20 20 20 20 20 20 20 20 49 66 20 74 68               If th
0180B0:  65 20 70 72 6F 67 72 61 6D 20 66 61 69 6C 65 64    e program failed
0180C0:  20 74 6F 20 6C 6F 61 64 3A 0D 0A 0D 0A 20 20 20     to load:....   
0180D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0180E0:  20 20 20 20 20 20 20 43 61 72 72 79 20 66 61 6C           Carry fal
0180F0:  73 65 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20    se...           
018100:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 48                   H
018110:  4C 20 63 6F 72 72 75 70 74 2E 0D 0A 0D 0A 20 20    L corrupt.....  
018120:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 6C                  Al
018130:  77 61 79 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20    ways:....       
018140:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
018150:  20 20 20 41 2C 20 42 43 2C 20 44 45 2C 49 58 2C       A, BC, DE,IX,
018160:  49 59 20 61 6E 64 20 6F 74 68 65 72 20 66 6C 61    IY and other fla
018170:  67 73 20 63 6F 72 72 75 70 74 2E 0D 0A 0D 0A 0D    gs corrupt......
018180:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D    .......       AM
018190:  53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34    STRAD CPC464/664
0181A0:  2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20    /6128 FIRMWARE  
0181B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0181C0:  20 20 20 20 20 20 20 20 20 70 61 67 65 20 31 35             page 15
0181D0:  2E 32 31 34 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    .214............
0181E0:  0D 0A 20 20 20 20 20 20 20 41 66 74 65 72 20 61    ..       After a
0181F0:  20 73 75 63 63 65 73 73 66 75 6C 20 6C 6F 61 64     successful load
018200:  20 74 68 65 20 66 69 72 6D 77 61 72 65 20 69 73     the firmware is
018210:  20 63 6F 6D 70 6C 65 74 65 6C 79 20 69 6E 69 74     completely init
018220:  69 61 6C 69 7A 65 64 20 28 61 73 20 20 61 74 0D    ialized (as  at.
018230:  0A 20 20 20 20 20 20 20 45 4D 53 29 20 61 6E 64    .       EMS) and
018240:  20 74 68 65 20 70 72 6F 67 72 61 6D 20 69 73 20     the program is 
018250:  65 6E 74 65 72 65 64 20 61 74 20 74 68 65 20 65    entered at the e
018260:  6E 74 72 79 20 61 64 64 72 65 73 73 20 72 65 74    ntry address ret
018270:  75 72 6E 65 64 20 20 62 79 20 20 74 68 65 0D 0A    urned  by  the..
018280:  20 20 20 20 20 20 20 6C 6F 61 64 20 72 6F 75 74           load rout
018290:  69 6E 65 2E 20 20 52 65 74 75 72 6E 69 6E 67 20    ine.  Returning 
0182A0:  20 66 72 6F 6D 20 20 74 68 65 20 20 70 72 6F 67     from  the  prog
0182B0:  72 61 6D 20 20 77 69 6C 6C 20 20 72 65 73 65 74    ram  will  reset
0182C0:  20 20 74 68 65 20 20 73 79 73 74 65 6D 0D 0A 20      the  system.. 
0182D0:  20 20 20 20 20 20 28 70 65 72 66 6F 72 6D 20 52          (perform R
0182E0:  53 54 20 30 29 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    ST 0).......    
0182F0:  20 20 20 41 66 74 65 72 20 61 6E 20 75 6E 73 75       After an unsu
018300:  63 63 65 73 73 66 75 6C 20 6C 6F 61 64 20 61 6E    ccessful load an
018310:  20 61 70 70 72 6F 70 72 69 61 74 65 20 65 72 72     appropriate err
018320:  6F 72 20 6D 65 73 73 61 67 65 20 69 73 20 70 72    or message is pr
018330:  69 6E 74 65 64 20 61 6E 64 0D 0A 20 20 20 20 20    inted and..     
018340:  20 20 74 68 65 20 20 70 72 65 76 69 6F 75 73 20      the  previous 
018350:  20 66 6F 72 65 67 72 6F 75 6E 64 20 20 70 72 6F     foreground  pro
018360:  67 72 61 6D 20 20 69 73 20 20 72 65 73 74 61 72    gram  is  restar
018370:  74 65 64 2E 20 20 49 66 20 20 74 68 65 20 20 20    ted.  If  the   
018380:  70 72 65 76 69 6F 75 73 0D 0A 20 20 20 20 20 20    previous..      
018390:  20 66 6F 72 65 67 72 6F 75 6E 64 20 70 72 6F 67     foreground prog
0183A0:  72 61 6D 20 77 61 73 20 69 74 73 65 6C 66 20 61    ram was itself a
0183B0:  20 52 41 4D 20 70 72 6F 67 72 61 6D 20 74 68 65     RAM program the
0183C0:  6E 20 74 68 65 20 20 64 65 66 61 75 6C 74 20 20    n the  default  
0183D0:  52 4F 4D 20 20 69 73 0D 0A 20 20 20 20 20 20 20    ROM  is..       
0183E0:  65 6E 74 65 72 65 64 20 69 6E 73 74 65 61 64 20    entered instead 
0183F0:  61 73 20 74 68 65 20 70 72 6F 67 72 61 6D 20 6D    as the program m
018400:  61 79 20 20 68 61 76 65 20 20 62 65 65 6E 20 20    ay  have  been  
018410:  63 6F 72 72 75 70 74 65 64 20 20 64 75 72 69 6E    corrupted  durin
018420:  67 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 66    g  the..       f
018430:  61 69 6C 65 64 20 6C 6F 61 64 69 6E 67 2E 0D 0A    ailed loading...
018440:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C    ......       Rel
018450:  61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D    ated entries:...
018460:  0A 0D 0A 20 20 20 20 20 20 20 43 41 53 20 49 4E    ...       CAS IN
018470:  20 44 49 52 45 43 54 0D 0A 20 20 20 20 20 20 20     DIRECT..       
018480:  4B 4C 20 43 48 4F 4B 45 20 4F 46 46 0D 0A 20 20    KL CHOKE OFF..  
018490:  20 20 20 20 20 4D 43 20 53 54 41 52 54 20 50 52         MC START PR
0184A0:  4F 47 52 41 4D 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    OGRAM...........
0184B0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
0184C0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
0184D0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
0184E0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
0184F0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54    .....       AMST
018500:  52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36    RAD CPC464/664/6
018510:  31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20    128 FIRMWARE    
018520:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
018530:  20 20 20 20 20 20 20 70 61 67 65 20 31 35 2E 32           page 15.2
018540:  31 35 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    15..............
018550:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 37 38    ......       178
018560:  3A 20 4D 43 20 53 54 41 52 54 20 50 52 4F 47 52    : MC START PROGR
018570:  41 4D 20 20 20 20 20 20 20 20 20 20 20 20 20 20    AM              
018580:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
018590:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 42                  #B
0185A0:  44 31 36 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    D16......       
0185B0:  52 75 6E 20 61 20 66 6F 72 65 67 72 6F 75 6E 64    Run a foreground
0185C0:  20 70 72 6F 67 72 61 6D 2E 0D 0A 0D 0A 0D 0A 20     program....... 
0185D0:  20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D          Action:...
0185E0:  0A 0D 0A 20 20 20 20 20 20 20 46 75 6C 6C 79 20    ...       Fully 
0185F0:  69 6E 69 74 69 61 6C 69 7A 65 20 74 68 65 20 73    initialize the s
018600:  79 73 74 65 6D 20 61 6E 64 20 65 6E 74 65 72 20    ystem and enter 
018610:  61 20 70 72 6F 67 72 61 6D 2E 0D 0A 0D 0A 0D 0A    a program.......
018620:  20 20 20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E           Entry con
018630:  64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20    ditions:......  
018640:  20 20 20 20 20 48 4C 20 63 6F 6E 74 61 69 6E 73         HL contains
018650:  20 74 68 65 20 65 6E 74 72 79 20 70 6F 69 6E 74     the entry point
018660:  20 61 64 64 72 65 73 73 2E 0D 0A 20 20 20 20 20     address...     
018670:  20 20 43 20 63 6F 6E 74 61 69 6E 73 20 74 68 65      C contains the
018680:  20 72 65 71 75 69 72 65 64 20 52 4F 4D 20 73 65     required ROM se
018690:  6C 65 63 74 69 6F 6E 2E 0D 0A 0D 0A 0D 0A 20 20    lection.......  
0186A0:  20 20 20 20 20 45 78 69 74 20 63 6F 6E 64 69 74         Exit condit
0186B0:  69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ions:......     
0186C0:  20 20 4E 65 76 65 72 20 65 78 69 74 73 21 0D 0A      Never exits!..
0186D0:  0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A 0D    ..       Notes:.
0186E0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 48 4C 20 61    .....       HL a
0186F0:  6E 64 20 43 20 63 6F 6D 70 72 69 73 65 20 20 74    nd C comprise  t
018700:  68 65 20 20 27 66 61 72 20 20 61 64 64 72 65 73    he  'far  addres
018710:  73 27 20 20 6F 66 20 20 74 68 65 20 20 65 6E 74    s'  of  the  ent
018720:  72 79 20 20 70 6F 69 6E 74 20 20 6F 66 20 20 74    ry  point  of  t
018730:  68 65 0D 0A 20 20 20 20 20 20 20 66 6F 72 65 67    he..       foreg
018740:  72 6F 75 6E 64 20 70 72 6F 67 72 61 6D 20 28 73    round program (s
018750:  65 65 20 73 65 63 74 69 6F 6E 20 32 29 2E 0D 0A    ee section 2)...
018760:  0D 0A 0D 0A 20 20 20 20 20 20 20 57 68 65 6E 20    ....       When 
018770:  65 6E 74 65 72 69 6E 67 20 61 20 66 6F 72 65 67    entering a foreg
018780:  72 6F 75 6E 64 20 70 72 6F 67 72 61 6D 20 69 6E    round program in
018790:  20 52 4F 4D 20 74 68 65 20 52 4F 4D 20 73 65 6C     ROM the ROM sel
0187A0:  65 63 74 69 6F 6E 20 73 68 6F 75 6C 64 20 20 62    ection should  b
0187B0:  65 0D 0A 20 20 20 20 20 20 20 74 68 61 74 20 20    e..       that  
0187C0:  72 65 71 75 69 72 65 64 20 20 74 6F 20 20 73 65    required  to  se
0187D0:  6C 65 63 74 20 20 74 68 65 20 20 61 70 70 72 6F    lect  the  appro
0187E0:  70 72 69 61 74 65 20 20 52 4F 4D 2E 20 20 57 68    priate  ROM.  Wh
0187F0:  65 6E 20 20 65 6E 74 65 72 69 6E 67 20 20 20 61    en  entering   a
018800:  0D 0A 20 20 20 20 20 20 20 66 6F 72 65 67 72 6F    ..       foregro
018810:  75 6E 64 20 70 72 6F 67 72 61 6D 20 69 6E 20 52    und program in R
018820:  41 4D 20 74 68 65 20 52 4F 4D 20 73 65 6C 65 63    AM the ROM selec
018830:  74 69 6F 6E 20 73 68 6F 75 6C 64 20 62 65 20 75    tion should be u
018840:  73 65 64 20 20 74 6F 20 20 65 6E 61 62 6C 65 0D    sed  to  enable.
018850:  0A 20 20 20 20 20 20 20 6F 72 20 64 69 73 61 62    .       or disab
018860:  6C 65 20 52 4F 4D 73 20 61 73 20 74 68 65 20 52    le ROMs as the R
018870:  41 4D 20 70 72 6F 67 72 61 6D 20 72 65 71 75 69    AM program requi
018880:  72 65 73 20 28 52 4F 4D 20 73 65 6C 65 63 74 20    res (ROM select 
018890:  61 64 64 72 65 73 73 65 73 20 23 46 43 2E 0D 0A    addresses #FC...
0188A0:  20 20 20 20 20 20 20 2E 23 46 46 29 2E 0D 0A 0D           .#FF)....
0188B0:  0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73 20 72    ...       This r
0188C0:  6F 75 74 69 6E 65 20 63 61 72 72 69 65 73 20 6F    outine carries o
0188D0:  75 74 20 61 20 66 75 6C 6C 20 45 4D 53 20 20 69    ut a full EMS  i
0188E0:  6E 69 74 69 61 6C 69 7A 61 74 69 6F 6E 20 20 6F    nitialization  o
0188F0:  66 20 20 74 68 65 20 20 66 69 72 6D 77 61 72 65    f  the  firmware
018900:  0D 0A 20 20 20 20 20 20 20 62 65 66 6F 72 65 20    ..       before 
018910:  65 6E 74 65 72 69 6E 67 20 74 68 65 20 70 72 6F    entering the pro
018920:  67 72 61 6D 2E 20 52 65 74 75 72 6E 69 6E 67 20    gram. Returning 
018930:  66 72 6F 6D 20 74 68 65 20 70 72 6F 67 72 61 6D    from the program
018940:  20 77 69 6C 6C 20 72 65 73 65 74 20 74 68 65 0D     will reset the.
018950:  0A 20 20 20 20 20 20 20 73 79 73 74 65 6D 20 28    .       system (
018960:  70 65 72 66 6F 72 6D 20 52 53 54 20 30 29 2E 0D    perform RST 0)..
018970:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4D 43 20 53    .....       MC S
018980:  54 41 52 54 20 50 52 4F 47 52 41 4D 20 69 73 20    TART PROGRAM is 
018990:  69 6E 74 65 6E 64 65 64 20 66 6F 72 20 72 75 6E    intended for run
0189A0:  6E 69 6E 67 20 70 72 6F 67 72 61 6D 73 20 69 6E    ning programs in
0189B0:  20 52 4F 4D 20 20 6F 72 20 20 70 72 6F 67 72 61     ROM  or  progra
0189C0:  6D 73 0D 0A 20 20 20 20 20 20 20 74 68 61 74 20    ms..       that 
0189D0:  68 61 76 65 20 61 6C 72 65 61 64 79 20 62 65 65    have already bee
0189E0:  6E 20 6C 6F 61 64 65 64 20 69 6E 74 6F 20 52 41    n loaded into RA
0189F0:  4D 2E 20 54 6F 20 6C 6F 61 64 20 61 6E 64 20 72    M. To load and r
018A00:  75 6E 20 61 20 52 41 4D 20 20 70 72 6F 67 72 61    un a RAM  progra
018A10:  6D 0D 0A 20 20 20 20 20 20 20 75 73 65 20 4D 43    m..       use MC
018A20:  20 42 4F 4F 54 20 50 52 4F 47 52 41 4D 2E 0D 0A     BOOT PROGRAM...
018A30:  0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64    ..       Related
018A40:  20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 20 20 20     entries:....   
018A50:  20 20 20 20 4D 43 20 42 4F 4F 54 20 50 52 4F 47        MC BOOT PROG
018A60:  52 41 4D 0D 0A 20 20 20 20 20 20 20 52 45 53 45    RAM..       RESE
018A70:  54 20 45 4E 54 52 59 20 28 52 53 54 20 30 29 0D    T ENTRY (RST 0).
018A80:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
018A90:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
018AA0:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
018AB0:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
018AC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
018AD0:  65 20 31 35 2E 32 31 36 0D 0A 0D 0A 0D 0A 0D 0A    e 15.216........
018AE0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 37 39    ......       179
018AF0:  3A 20 4D 43 20 57 41 49 54 20 46 4C 59 42 41 43    : MC WAIT FLYBAC
018B00:  4B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    K               
018B10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
018B20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 42                  #B
018B30:  44 31 39 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    D19......       
018B40:  57 61 69 74 20 66 6F 72 20 66 72 61 6D 65 20 66    Wait for frame f
018B50:  6C 79 62 61 63 6B 2E 0D 0A 0D 0A 0D 0A 20 20 20    lyback.......   
018B60:  20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D        Action:.....
018B70:  0A 20 20 20 20 20 20 20 57 61 69 74 20 75 6E 74    .       Wait unt
018B80:  69 6C 20 66 72 61 6D 65 20 66 6C 79 62 61 63 6B    il frame flyback
018B90:  20 6F 63 63 75 72 73 2E 0D 0A 0D 0A 0D 0A 20 20     occurs.......  
018BA0:  20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69         Entry condi
018BB0:  74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    tions:......    
018BC0:  20 20 20 4E 6F 20 63 6F 6E 64 69 74 69 6F 6E 73       No conditions
018BD0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78    .......       Ex
018BE0:  69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    it conditions:..
018BF0:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 72    ....       All r
018C00:  65 67 69 73 74 65 72 73 20 61 6E 64 20 66 6C 61    egisters and fla
018C10:  67 73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D    gs preserved....
018C20:  0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A    ...       Notes:
018C30:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 46 72 61    ......       Fra
018C40:  6D 65 20 66 6C 79 62 61 63 6B 20 69 73 20 61 20    me flyback is a 
018C50:  73 69 67 6E 61 6C 20 67 65 6E 65 72 61 74 65 64    signal generated
018C60:  20 62 79 20 74 68 65 20 43 52 54 20 20 63 6F 6E     by the CRT  con
018C70:  74 72 6F 6C 6C 65 72 20 20 74 6F 20 20 73 69 67    troller  to  sig
018C80:  6E 61 6C 0D 0A 20 20 20 20 20 20 20 74 68 65 20    nal..       the 
018C90:  73 74 61 72 74 20 6F 66 20 74 68 65 20 76 65 72    start of the ver
018CA0:  74 69 63 61 6C 20 20 72 65 74 72 61 63 65 20 20    tical  retrace  
018CB0:  70 65 72 69 6F 64 2E 20 20 44 75 72 69 6E 67 20    period.  During 
018CC0:  20 74 68 69 73 20 20 70 65 72 69 6F 64 20 20 74     this  period  t
018CD0:  68 65 0D 0A 20 20 20 20 20 20 20 73 63 72 65 65    he..       scree
018CE0:  6E 20 69 73 20 6E 6F 74 20 62 65 69 6E 67 20 77    n is not being w
018CF0:  72 69 74 74 65 6E 20 61 6E 64 20 73 6F 20 6D 61    ritten and so ma
018D00:  6A 6F 72 20 6F 70 65 72 61 74 69 6F 6E 73 20 63    jor operations c
018D10:  61 6E 20 20 62 65 20 20 70 65 72 66 6F 72 6D 65    an  be  performe
018D20:  64 0D 0A 20 20 20 20 20 20 20 6F 6E 20 74 68 65    d..       on the
018D30:  20 73 63 72 65 65 6E 20 77 69 74 68 6F 75 74 20     screen without 
018D40:  70 72 6F 64 75 63 69 6E 67 20 75 6E 73 69 67 68    producing unsigh
018D50:  74 6C 79 20 65 66 66 65 63 74 73 2E 20 41 20 70    tly effects. A p
018D60:  72 69 6D 65 20 65 78 61 6D 70 6C 65 20 20 69 73    rime example  is
018D70:  0D 0A 20 20 20 20 20 20 20 72 6F 6C 6C 69 6E 67    ..       rolling
018D80:  20 74 68 65 20 73 63 72 65 65 6E 2E 0D 0A 0D 0A     the screen.....
018D90:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 20 66 72    ..       The  fr
018DA0:  61 6D 65 20 20 66 6C 79 62 61 63 6B 20 20 73 69    ame  flyback  si
018DB0:  67 6E 61 6C 20 20 6F 6E 6C 79 20 20 6C 61 73 74    gnal  only  last
018DC0:  73 20 20 66 6F 72 20 20 61 20 20 63 6F 75 70 6C    s  for  a  coupl
018DD0:  65 20 20 6F 66 20 20 20 68 75 6E 64 72 65 64 0D    e  of   hundred.
018DE0:  0A 20 20 20 20 20 20 20 6D 69 63 72 6F 73 65 63    .       microsec
018DF0:  6F 6E 64 73 20 62 75 74 20 74 68 65 20 76 65 72    onds but the ver
018E00:  74 69 63 61 6C 20 72 65 74 72 61 63 65 20 70 65    tical retrace pe
018E10:  72 69 6F 64 20 69 73 20 6D 75 63 68 20 6C 6F 6E    riod is much lon
018E20:  67 65 72 20 74 68 61 6E 20 74 68 69 73 2E 0D 0A    ger than this...
018E30:  20 20 20 20 20 20 20 48 6F 77 65 76 65 72 2C 20           However, 
018E40:  74 68 65 72 65 20 77 69 6C 6C 20 62 65 20 61 20    there will be a 
018E50:  74 69 63 6B 65 72 20 20 69 6E 74 65 72 72 75 70    ticker  interrup
018E60:  74 20 20 69 6E 20 20 74 68 65 20 20 6D 69 64 64    t  in  the  midd
018E70:  6C 65 20 20 6F 66 20 20 66 72 61 6D 65 0D 0A 20    le  of  frame.. 
018E80:  20 20 20 20 20 20 66 6C 79 62 61 63 6B 20 77 68          flyback wh
018E90:  69 63 68 20 6D 61 79 20 63 61 75 73 65 20 74 68    ich may cause th
018EA0:  65 20 66 6F 72 65 67 72 6F 75 6E 64 20 70 72 6F    e foreground pro
018EB0:  63 65 73 73 69 6E 67 20 74 6F 20 62 65 20 73 75    cessing to be su
018EC0:  73 70 65 6E 64 65 64 20 20 66 6F 72 0D 0A 20 20    spended  for..  
018ED0:  20 20 20 20 20 61 20 73 69 67 6E 69 66 69 63 61         a significa
018EE0:  6E 74 20 6C 65 6E 67 74 68 20 6F 66 20 74 69 6D    nt length of tim
018EF0:  65 2E 20 49 74 20 69 73 20 69 6D 70 6F 72 74 61    e. It is importa
018F00:  6E 74 2C 20 74 68 65 72 65 66 6F 72 65 2C 20 20    nt, therefore,  
018F10:  74 6F 20 20 70 65 72 66 6F 72 6D 0D 0A 20 20 20    to  perform..   
018F20:  20 20 20 20 61 6E 79 20 63 72 69 74 69 63 61 6C        any critical
018F30:  20 70 72 6F 63 65 73 73 69 6E 67 20 61 73 20 73     processing as s
018F40:  6F 6F 6E 20 61 66 74 65 72 20 74 68 65 20 66 72    oon after the fr
018F50:  61 6D 65 20 66 6C 79 62 61 63 6B 20 69 73 20 64    ame flyback is d
018F60:  65 74 65 63 74 65 64 20 61 73 0D 0A 20 20 20 20    etected as..    
018F70:  20 20 20 69 73 20 70 6F 73 73 69 62 6C 65 2E 0D       is possible..
018F80:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73    .....       This
018F90:  20 72 6F 75 74 69 6E 65 20 72 65 74 75 72 6E 73     routine returns
018FA0:  20 69 6D 6D 65 64 69 61 74 65 6C 79 20 69 66 20     immediately if 
018FB0:  66 72 61 6D 65 20 66 6C 79 62 61 63 6B 20 69 73    frame flyback is
018FC0:  20 6F 63 63 75 72 72 69 6E 67 20 77 68 65 6E 20     occurring when 
018FD0:  69 74 0D 0A 20 20 20 20 20 20 20 69 73 20 63 61    it..       is ca
018FE0:  6C 6C 65 64 2E 20 49 74 20 64 6F 65 73 20 6E 6F    lled. It does no
018FF0:  74 20 77 61 69 74 20 66 6F 72 20 74 68 65 20 73    t wait for the s
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:  74 61 72 74 20 20 6F 66 20 20 66 72 61 6D 65 20    tart  of  frame 
019110:  20 66 6C 79 62 61 63 6B 20 20 28 75 73 65 20 20     flyback  (use  
019120:  61 0D 0A 20 20 20 20 20 20 20 66 72 61 6D 65 20    a..       frame 
019130:  66 6C 79 62 61 63 6B 20 65 76 65 6E 74 20 74 6F    flyback event to
019140:  20 64 6F 20 74 68 69 73 29 2E 0D 0A 0D 0A 0D 0A     do this).......
019150:  0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64    ..       Related
019160:  20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20     entries:...... 
019170:  20 20 20 20 20 20 4B 4C 20 41 44 44 20 46 52 41          KL ADD FRA
019180:  4D 45 20 46 4C 59 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ME FLY..........
019190:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52    ....       AMSTR
0191A0:  41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31    AD CPC464/664/61
0191B0:  32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20    28 FIRMWARE     
0191C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0191D0:  20 20 20 20 20 20 70 61 67 65 20 31 35 2E 32 31          page 15.21
0191E0:  37 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    7.............. 
0191F0:  20 20 20 20 20 20 31 38 30 3A 20 4D 43 20 53 45          180: MC SE
019200:  54 20 4D 4F 44 45 20 20 20 20 20 20 20 20 20 20    T MODE          
019210:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
019220:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
019230:  20 20 20 20 20 20 20 23 42 44 31 43 0D 0A 0D 0A           #BD1C....
019240:  0D 0A 20 20 20 20 20 20 20 53 65 74 20 74 68 65    ..       Set the
019250:  20 73 63 72 65 65 6E 20 6D 6F 64 65 2E 0D 0A 0D     screen mode....
019260:  0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E    ...       Action
019270:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4C 6F    :......       Lo
019280:  61 64 20 74 68 65 20 68 61 72 64 77 61 72 65 20    ad the hardware 
019290:  77 69 74 68 20 74 68 65 20 72 65 71 75 69 72 65    with the require
0192A0:  64 20 73 63 72 65 65 6E 20 6D 6F 64 65 2E 0D 0A    d screen mode...
0192B0:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79    ....       Entry
0192C0:  20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A     conditions:....
0192D0:  0D 0A 20 20 20 20 20 20 20 41 20 63 6F 6E 74 61    ..       A conta
0192E0:  69 6E 73 20 74 68 65 20 72 65 71 75 69 72 65 64    ins the required
0192F0:  20 6D 6F 64 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20     mode.......    
019300:  20 20 20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F       Exit conditio
019310:  6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ns:......       
019320:  41 46 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20 20    AF corrupt...   
019330:  20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65        All other re
019340:  67 69 73 74 65 72 73 20 70 72 65 73 65 72 76 65    gisters preserve
019350:  64 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    d.........      
019360:  20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20     Notes:......   
019370:  20 20 20 20 54 68 65 20 72 65 71 75 69 72 65 64        The required
019380:  20 6D 6F 64 65 20 69 73 20 63 68 65 63 6B 65 64     mode is checked
019390:  20 61 6E 64 20 6E 6F 20 61 63 74 69 6F 6E 20 69     and no action i
0193A0:  73 20 74 61 6B 65 6E 20 69 66 20 69 74 20 69 73    s taken if it is
0193B0:  20 20 69 6E 76 61 6C 69 64 2E 0D 0A 20 20 20 20      invalid...    
0193C0:  20 20 20 49 66 20 69 74 20 69 73 20 76 61 6C 69       If it is vali
0193D0:  64 20 74 68 65 6E 20 74 68 65 20 6E 65 77 20 76    d then the new v
0193E0:  61 6C 75 65 20 69 73 20 73 65 6E 74 20 74 6F 20    alue is sent to 
0193F0:  74 68 65 20 68 61 72 64 77 61 72 65 2E 0D 0A 0D    the hardware....
019400:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 73 63    ...       The sc
019410:  72 65 65 6E 20 6D 6F 64 65 73 20 61 72 65 3A 0D    reen modes are:.
019420:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    .....           
019430:  20 20 20 20 20 30 3A 20 20 20 20 20 20 20 20 31         0:        1
019440:  36 30 20 78 20 32 30 30 20 70 69 78 65 6C 73 2C    60 x 200 pixels,
019450:  20 20 20 32 30 20 78 20 32 35 20 63 68 61 72 61       20 x 25 chara
019460:  63 74 65 72 73 2E 0D 0A 20 20 20 20 20 20 20 20    cters...        
019470:  20 20 20 20 20 20 20 20 31 3A 20 20 20 20 20 20            1:      
019480:  20 20 33 32 30 20 78 20 32 30 30 20 70 69 78 65      320 x 200 pixe
019490:  6C 73 2C 20 20 20 34 30 20 78 20 32 35 20 63 68    ls,   40 x 25 ch
0194A0:  61 72 61 63 74 65 72 73 2E 0D 0A 20 20 20 20 20    aracters...     
0194B0:  20 20 20 20 20 20 20 20 20 20 20 32 3A 20 20 20               2:   
0194C0:  20 20 20 20 20 36 34 30 20 78 20 32 30 30 20 70         640 x 200 p
0194D0:  69 78 65 6C 73 2C 20 20 20 38 30 20 78 20 32 35    ixels,   80 x 25
0194E0:  20 63 68 61 72 61 63 74 65 72 73 2E 0D 0A 0D 0A     characters.....
0194F0:  0D 0A 20 20 20 20 20 20 20 41 6C 74 65 72 69 6E    ..       Alterin
019500:  67 20 74 68 65 20 73 63 72 65 65 6E 20 20 6D 6F    g the screen  mo
019510:  64 65 20 20 77 69 74 68 6F 75 74 20 20 6E 6F 74    de  without  not
019520:  69 66 79 69 6E 67 20 20 74 68 65 20 20 53 63 72    ifying  the  Scr
019530:  65 65 6E 20 20 50 61 63 6B 20 20 77 69 6C 6C 0D    een  Pack  will.
019540:  0A 20 20 20 20 20 20 20 70 72 6F 64 75 63 65 20    .       produce 
019550:  70 65 63 75 6C 69 61 72 20 65 66 66 65 63 74 73    peculiar effects
019560:  20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E 2E 20     on the screen. 
019570:  49 6E 20 67 65 6E 65 72 61 6C 20 53 43 52 20 53    In general SCR S
019580:  45 54 20 4D 4F 44 45 20 73 68 6F 75 6C 64 0D 0A    ET MODE should..
019590:  20 20 20 20 20 20 20 62 65 20 63 61 6C 6C 65 64           be called
0195A0:  20 74 6F 20 63 68 61 6E 67 65 20 73 63 72 65 65     to change scree
0195B0:  6E 20 6D 6F 64 65 2E 20 54 68 69 73 2C 20 69 6E    n mode. This, in
0195C0:  20 74 75 72 6E 2C 20 73 65 74 73 20 74 68 65 20     turn, sets the 
0195D0:  6E 65 77 20 6D 6F 64 65 20 69 6E 74 6F 0D 0A 20    new mode into.. 
0195E0:  20 20 20 20 20 20 74 68 65 20 68 61 72 64 77 61          the hardwa
0195F0:  72 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    re...........   
019600:  20 20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72        Related entr
019610:  69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ies:......      
019620:  20 53 43 52 20 53 45 54 20 4D 4F 44 45 0D 0A 0D     SCR SET MODE...
019630:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
019640:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
019650:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
019660:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
019670:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
019680:  65 20 31 35 2E 32 31 38 0D 0A 0D 0A 0D 0A 0D 0A    e 15.218........
019690:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 38 31    ......       181
0196A0:  3A 20 4D 43 20 53 43 52 45 45 4E 20 4F 46 46 53    : MC SCREEN OFFS
0196B0:  45 54 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ET              
0196C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0196D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 42                  #B
0196E0:  44 31 46 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    D1F......       
0196F0:  53 65 74 20 74 68 65 20 73 63 72 65 65 6E 20 6F    Set the screen o
019700:  66 66 73 65 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    ffset.......    
019710:  20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A       Action:......
019720:  20 20 20 20 20 20 20 4C 6F 61 64 20 74 68 65 20           Load the 
019730:  68 61 72 64 77 61 72 65 20 77 69 74 68 20 74 68    hardware with th
019740:  65 20 6F 66 66 73 65 74 20 6F 66 20 74 68 65 20    e offset of the 
019750:  20 66 69 72 73 74 20 20 62 79 74 65 20 20 6F 6E     first  byte  on
019760:  20 20 74 68 65 20 20 73 63 72 65 65 6E 0D 0A 20      the  screen.. 
019770:  20 20 20 20 20 20 69 6E 73 69 64 65 20 61 20 32          inside a 2
019780:  4B 20 73 63 72 65 65 6E 20 62 6C 6F 63 6B 20 61    K screen block a
019790:  6E 64 20 77 68 69 63 68 20 31 36 4B 20 20 62 6C    nd which 16K  bl
0197A0:  6F 63 6B 20 20 74 68 65 20 20 73 63 72 65 65 6E    ock  the  screen
0197B0:  20 20 6D 65 6D 6F 72 79 20 20 69 73 0D 0A 20 20      memory  is..  
0197C0:  20 20 20 20 20 6C 6F 63 61 74 65 64 20 69 6E 2E         located in.
0197D0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74    ......       Ent
0197E0:  72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    ry conditions:..
0197F0:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 20 63 6F 6E    ....       A con
019800:  74 61 69 6E 73 20 74 68 65 20 6E 65 77 20 73 63    tains the new sc
019810:  72 65 65 6E 20 62 61 73 65 2E 0D 0A 20 20 20 20    reen base...    
019820:  20 20 20 48 4C 20 63 6F 6E 74 61 69 6E 73 20 74       HL contains t
019830:  68 65 20 6E 65 77 20 73 63 72 65 65 6E 20 6F 66    he new screen of
019840:  66 73 65 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    fset.......     
019850:  20 20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E      Exit condition
019860:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    s:......       A
019870:  46 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20    F corrupt...    
019880:  20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67       All other reg
019890:  69 73 74 65 72 73 20 70 72 65 73 65 72 76 65 64    isters preserved
0198A0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F    .......       No
0198B0:  74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    tes:......      
0198C0:  20 54 68 65 20 73 63 72 65 65 6E 20 62 61 73 65     The screen base
0198D0:  20 61 64 64 72 65 73 73 20 69 73 20 6D 61 73 6B     address is mask
0198E0:  65 64 20 77 69 74 68 20 23 43 30 20 74 6F 20 6D    ed with #C0 to m
0198F0:  61 6B 65 20 73 75 72 65 20 69 74 20 72 65 66 65    ake sure it refe
019900:  72 73 20 74 6F 20 61 0D 0A 20 20 20 20 20 20 20    rs to a..       
019910:  76 61 6C 69 64 20 31 36 4B 20 6D 65 6D 6F 72 79    valid 16K memory
019920:  20 61 72 65 61 2E 20 54 68 65 20 64 65 66 61 75     area. The defau
019930:  6C 74 20 73 63 72 65 65 6E 20 62 61 73 65 20 69    lt screen base i
019940:  73 20 23 43 30 20 28 74 68 65 20 20 73 63 72 65    s #C0 (the  scre
019950:  65 6E 20 20 69 73 0D 0A 20 20 20 20 20 20 20 75    en  is..       u
019960:  6E 64 65 72 6E 65 61 74 68 20 74 68 65 20 75 70    nderneath the up
019970:  70 65 72 20 52 4F 4D 29 2E 0D 0A 0D 0A 0D 0A 20    per ROM)....... 
019980:  20 20 20 20 20 20 54 68 65 20 73 63 72 65 65 6E          The screen
019990:  20 6F 66 66 73 65 74 20 69 73 20 6D 61 73 6B 65     offset is maske
0199A0:  64 20 77 69 74 68 20 23 30 37 46 45 20 74 6F 20    d with #07FE to 
0199B0:  6D 61 6B 65 20 69 74 20 6C 65 67 61 6C 2E 20 4E    make it legal. N
0199C0:  6F 74 65 20 74 68 61 74 20 62 69 74 0D 0A 20 20    ote that bit..  
0199D0:  20 20 20 20 20 30 20 69 73 20 69 67 6E 6F 72 65         0 is ignore
0199E0:  64 20 61 73 20 74 68 65 20 68 61 72 64 77 61 72    d as the hardwar
0199F0:  65 20 6F 6E 6C 79 20 75 73 65 73 20 65 76 65 6E    e only uses even
019A00:  20 6F 66 66 73 65 74 73 2E 0D 0A 0D 0A 0D 0A 20     offsets....... 
019A10:  20 20 20 20 20 20 49 66 20 74 68 65 20 73 63 72          If the scr
019A20:  65 65 6E 20 62 61 73 65 20 6F 72 20 6F 66 66 73    een base or offs
019A30:  65 74 20 69 73 20 63 68 61 6E 67 65 64 20 77 69    et is changed wi
019A40:  74 68 6F 75 74 20 6E 6F 74 69 66 79 69 6E 67 20    thout notifying 
019A50:  20 74 68 65 20 20 53 63 72 65 65 6E 0D 0A 20 20     the  Screen..  
019A60:  20 20 20 20 20 50 61 63 6B 20 74 68 65 6E 20 75         Pack then u
019A70:  6E 65 78 70 65 63 74 65 64 20 65 66 66 65 63 74    nexpected effect
019A80:  73 20 6D 61 79 20 6F 63 63 75 72 20 6F 6E 20 74    s may occur on t
019A90:  68 65 20 73 63 72 65 65 6E 2E 20 49 6E 20 20 67    he screen. In  g
019AA0:  65 6E 65 72 61 6C 20 20 53 43 52 0D 0A 20 20 20    eneral  SCR..   
019AB0:  20 20 20 20 53 45 54 20 42 41 53 45 20 6F 72 20        SET BASE or 
019AC0:  53 43 52 20 53 45 54 20 4F 46 46 53 45 54 20 73    SCR SET OFFSET s
019AD0:  68 6F 75 6C 64 20 62 65 20 63 61 6C 6C 65 64 2E    hould be called.
019AE0:  20 20 54 68 65 73 65 2C 20 20 69 6E 20 20 74 68      These,  in  th
019AF0:  65 69 72 20 20 74 75 72 6E 2C 0D 0A 20 20 20 20    eir  turn,..    
019B00:  20 20 20 73 65 6E 64 20 74 68 65 20 76 61 6C 75       send the valu
019B10:  65 73 20 74 6F 20 74 68 65 20 68 61 72 64 77 61    es to the hardwa
019B20:  72 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    re..............
019B30:  0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64 20    .       Related 
019B40:  65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20    entries:......  
019B50:  20 20 20 20 20 53 43 52 20 53 45 54 20 42 41 53         SCR SET BAS
019B60:  45 0D 0A 20 20 20 20 20 20 20 53 43 52 20 53 45    E..       SCR SE
019B70:  54 20 4F 46 46 53 45 54 0D 0A 0D 0A 0D 0A 0D 0A    T OFFSET........
019B80:  0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44    ..       AMSTRAD
019B90:  20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38     CPC464/664/6128
019BA0:  20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20     FIRMWARE       
019BB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
019BC0:  20 20 20 20 70 61 67 65 20 31 35 2E 32 31 39 0D        page 15.219.
019BD0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
019BE0:  20 20 20 20 31 38 32 3A 20 4D 43 20 43 4C 45 41        182: MC CLEA
019BF0:  52 20 49 4E 4B 53 20 20 20 20 20 20 20 20 20 20    R INKS          
019C00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
019C10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
019C20:  20 20 20 20 20 23 42 44 32 32 0D 0A 0D 0A 0D 0A         #BD22......
019C30:  20 20 20 20 20 20 20 53 65 74 20 61 6C 6C 20 69           Set all i
019C40:  6E 6B 73 20 74 6F 20 6F 6E 65 20 63 6F 6C 6F 75    nks to one colou
019C50:  72 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63    r......       Ac
019C60:  74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    tion:......     
019C70:  20 20 53 65 74 20 74 68 65 20 63 6F 6C 6F 75 72      Set the colour
019C80:  20 6F 66 20 74 68 65 20 62 6F 72 64 65 72 20 61     of the border a
019C90:  6E 64 20 73 65 74 20 74 68 65 20 63 6F 6C 6F 75    nd set the colou
019CA0:  72 20 6F 66 20 61 6C 6C 20 74 68 65 20 20 69 6E    r of all the  in
019CB0:  6B 73 2E 20 20 41 6C 6C 0D 0A 20 20 20 20 20 20    ks.  All..      
019CC0:  20 69 6E 6B 73 20 61 72 65 20 73 65 74 20 74 6F     inks are set to
019CD0:  20 74 68 65 20 73 61 6D 65 20 63 6F 6C 6F 75 72     the same colour
019CE0:  20 74 68 75 73 20 67 69 76 69 6E 67 20 74 68 65     thus giving the
019CF0:  20 20 69 6D 70 72 65 73 73 69 6F 6E 20 20 74 68      impression  th
019D00:  61 74 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20    at  the..       
019D10:  73 63 72 65 65 6E 20 68 61 73 20 62 65 65 6E 20    screen has been 
019D20:  63 6C 65 61 72 65 64 20 69 6E 73 74 61 6E 74 6C    cleared instantl
019D30:  79 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    y.......       E
019D40:  6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    ntry conditions:
019D50:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 44 45 20    ......       DE 
019D60:  63 6F 6E 74 61 69 6E 73 20 74 68 65 20 61 64 64    contains the add
019D70:  72 65 73 73 20 6F 66 20 61 6E 20 69 6E 6B 20 76    ress of an ink v
019D80:  65 63 74 6F 72 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    ector.......    
019D90:  20 20 20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F       Exit conditio
019DA0:  6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ns:......       
019DB0:  41 46 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20 20    AF corrupt...   
019DC0:  20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65        All other re
019DD0:  67 69 73 74 65 72 73 20 70 72 65 73 65 72 76 65    gisters preserve
019DE0:  64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E    d.......       N
019DF0:  6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    otes:......     
019E00:  20 20 54 68 65 20 69 6E 6B 20 76 65 63 74 6F 72      The ink vector
019E10:  20 68 61 73 20 74 68 65 20 66 6F 72 6D 3A 0D 0A     has the form:..
019E20:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
019E30:  20 20 20 20 42 79 74 65 20 30 3A 20 20 20 43 6F        Byte 0:   Co
019E40:  6C 6F 75 72 20 6F 66 20 74 68 65 20 62 6F 72 64    lour of the bord
019E50:  65 72 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20    er...           
019E60:  20 20 20 20 20 42 79 74 65 20 31 3A 20 20 20 43         Byte 1:   C
019E70:  6F 6C 6F 75 72 20 66 6F 72 20 61 6C 6C 20 69 6E    olour for all in
019E80:  6B 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ks.......       
019E90:  54 68 65 20 63 6F 6C 6F 75 72 73 20 73 75 70 70    The colours supp
019EA0:  6C 69 65 64 20 61 72 65 20 74 68 65 20 6E 75 6D    lied are the num
019EB0:  62 65 72 73 20 75 73 65 64 20 62 79 20 74 68 65    bers used by the
019EC0:  20 68 61 72 64 77 61 72 65 20 72 61 74 68 65 72     hardware rather
019ED0:  20 20 74 68 61 6E 0D 0A 20 20 20 20 20 20 20 74      than..       t
019EE0:  68 65 20 67 72 65 79 20 73 63 61 6C 65 20 6E 75    he grey scale nu
019EF0:  6D 62 65 72 73 20 73 75 70 70 6C 69 65 64 20 74    mbers supplied t
019F00:  6F 20 53 43 52 20 53 45 54 20 49 4E 4B 20 28 73    o SCR SET INK (s
019F10:  65 65 20 41 70 70 65 6E 64 69 78 20 56 29 2E 0D    ee Appendix V)..
019F20:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 66 74 65    .....       Afte
019F30:  72 20 74 68 65 20 73 63 72 65 65 6E 20 68 61 73    r the screen has
019F40:  20 20 62 65 65 6E 20 20 63 6C 65 61 72 65 64 20      been  cleared 
019F50:  20 28 6F 72 20 20 77 68 61 74 65 76 65 72 29 20     (or  whatever) 
019F60:  20 74 68 65 20 20 63 6F 72 72 65 63 74 20 20 69     the  correct  i
019F70:  6E 6B 0D 0A 20 20 20 20 20 20 20 63 6F 6C 6F 75    nk..       colou
019F80:  72 73 20 63 61 6E 20 62 65 20 73 65 74 20 62 79    rs can be set by
019F90:  20 63 61 6C 6C 69 6E 67 20 4D 43 20 53 45 54 20     calling MC SET 
019FA0:  49 4E 4B 53 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    INKS.......     
019FB0:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 73      This routine s
019FC0:  65 74 73 20 74 68 65 20 63 6F 6C 6F 75 72 73 20    ets the colours 
019FD0:  66 6F 72 20 61 6C 6C 20 31 36 20 20 69 6E 6B 73    for all 16  inks
019FE0:  20 20 77 68 65 74 68 65 72 20 20 74 68 65 79 20      whether  they 
019FF0:  20 63 61 6E 20 20 62 65 0D 0A 20 20 20 20 20 20     can  be..      
01A000:  20 64 69 73 70 6C 61 79 65 64 20 6F 6E 20 74 68     displayed on th
01A010:  65 20 73 63 72 65 65 6E 20 69 6E 20 74 68 65 20    e screen in the 
01A020:  63 75 72 72 65 6E 74 20 6D 6F 64 65 20 6F 72 20    current mode or 
01A030:  6E 6F 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    not.......      
01A040:  20 54 68 69 73 20 69 6E 6B 20 63 6C 65 61 72 69     This ink cleari
01A050:  6E 67 20 74 65 63 68 6E 69 71 75 65 20 69 73 20    ng technique is 
01A060:  75 73 65 64 20 62 79 20 74 68 65 20 53 63 72 65    used by the Scre
01A070:  65 6E 20 50 61 63 6B 20 20 77 68 65 6E 20 20 63    en Pack  when  c
01A080:  6C 65 61 72 69 6E 67 0D 0A 20 20 20 20 20 20 20    learing..       
01A090:  74 68 65 20 73 63 72 65 65 6E 20 6F 72 20 63 68    the screen or ch
01A0A0:  61 6E 67 69 6E 67 20 6D 6F 64 65 20 28 62 79 20    anging mode (by 
01A0B0:  53 43 52 20 43 4C 45 41 52 20 61 6E 64 20 53 43    SCR CLEAR and SC
01A0C0:  52 20 53 45 54 20 4D 4F 44 45 29 2E 0D 0A 0D 0A    R SET MODE).....
01A0D0:  0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64    ..       Related
01A0E0:  20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 20 20 20     entries:....   
01A0F0:  20 20 20 20 4D 43 20 53 45 54 20 49 4E 4B 53 0D        MC SET INKS.
01A100:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D    .......       AM
01A110:  53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34    STRAD CPC464/664
01A120:  2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20    /6128 FIRMWARE  
01A130:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01A140:  20 20 20 20 20 20 20 20 20 70 61 67 65 20 31 35             page 15
01A150:  2E 32 32 30 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    .220............
01A160:  0D 0A 20 20 20 20 20 20 20 31 38 33 3A 20 4D 43    ..       183: MC
01A170:  20 53 45 54 20 49 4E 4B 53 20 20 20 20 20 20 20     SET INKS       
01A180:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01A190:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01A1A0:  20 20 20 20 20 20 20 20 20 20 23 42 44 32 35 0D              #BD25.
01A1B0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 53 65 74 20    .....       Set 
01A1C0:  63 6F 6C 6F 75 72 73 20 6F 66 20 61 6C 6C 20 74    colours of all t
01A1D0:  68 65 20 69 6E 6B 73 2E 0D 0A 0D 0A 0D 0A 20 20    he inks.......  
01A1E0:  20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A         Action:....
01A1F0:  0D 0A 20 20 20 20 20 20 20 53 65 74 20 74 68 65    ..       Set the
01A200:  20 63 6F 6C 6F 75 72 73 20 6F 66 20 61 6C 6C 20     colours of all 
01A210:  74 68 65 20 69 6E 6B 73 20 61 6E 64 20 74 68 65    the inks and the
01A220:  20 62 6F 72 64 65 72 2E 0D 0A 0D 0A 0D 0A 20 20     border.......  
01A230:  20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69         Entry condi
01A240:  74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    tions:......    
01A250:  20 20 20 44 45 20 63 6F 6E 74 61 69 6E 73 20 74       DE contains t
01A260:  68 65 20 61 64 64 72 65 73 73 20 6F 66 20 61 6E    he address of an
01A270:  20 69 6E 6B 20 76 65 63 74 6F 72 2E 0D 0A 0D 0A     ink vector.....
01A280:  0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F    ..       Exit co
01A290:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20    nditions:...... 
01A2A0:  20 20 20 20 20 20 41 46 20 63 6F 72 72 75 70 74          AF corrupt
01A2B0:  2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74    ...       All ot
01A2C0:  68 65 72 20 72 65 67 69 73 74 65 72 73 20 70 72    her registers pr
01A2D0:  65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20    eserved.......  
01A2E0:  20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D         Notes:.....
01A2F0:  0A 20 20 20 20 20 20 20 54 68 65 20 69 6E 6B 20    .       The ink 
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:  76 65 63 74 6F 72 20 70 61 73 73 65 64 20 68 61    vector passed ha
01A410:  73 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20    s the following 
01A420:  6C 61 79 6F 75 74 3A 0D 0A 0D 0A 0D 0A 20 20 20    layout:......   
01A430:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 79 74                 Byt
01A440:  65 20 30 3A 20 20 20 43 6F 6C 6F 75 72 20 6F 66    e 0:   Colour of
01A450:  20 74 68 65 20 62 6F 72 64 65 72 2E 0D 0A 20 20     the border...  
01A460:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 79                  By
01A470:  74 65 20 31 3A 20 20 20 43 6F 6C 6F 75 72 20 66    te 1:   Colour f
01A480:  6F 72 20 69 6E 6B 20 30 2E 0D 0A 20 20 20 20 20    or ink 0...     
01A490:  20 20 20 20 20 20 20 20 20 20 20 42 79 74 65 20               Byte 
01A4A0:  32 3A 20 20 20 43 6F 6C 6F 75 72 20 66 6F 72 20    2:   Colour for 
01A4B0:  69 6E 6B 20 31 2E 0D 0A 0D 0A 20 20 20 20 20 20    ink 1.....      
01A4C0:  20 20 20 20 20 20 20 20 20 20 2E 2E 20 20 20 20              ..    
01A4D0:  20 20 20 20 20 20 20 20 20 2E 2E 0D 0A 20 20 20             ....   
01A4E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 79 74                 Byt
01A4F0:  65 20 31 36 3A 20 20 43 6F 6C 6F 75 72 20 66 6F    e 16:  Colour fo
01A500:  72 20 69 6E 6B 20 31 35 2E 0D 0A 0D 0A 0D 0A 20    r ink 15....... 
01A510:  20 20 20 20 20 20 54 68 65 20 63 6F 6C 6F 75 72          The colour
01A520:  73 20 73 75 70 70 6C 69 65 64 20 61 72 65 20 74    s supplied are t
01A530:  68 65 20 6E 75 6D 62 65 72 73 20 75 73 65 64 20    he numbers used 
01A540:  62 79 20 74 68 65 20 68 61 72 64 77 61 72 65 20    by the hardware 
01A550:  72 61 74 68 65 72 20 20 74 68 61 6E 0D 0A 20 20    rather  than..  
01A560:  20 20 20 20 20 74 68 65 20 67 72 65 79 20 73 63         the grey sc
01A570:  61 6C 65 20 6E 75 6D 62 65 72 73 20 73 75 70 70    ale numbers supp
01A580:  6C 69 65 64 20 74 6F 20 53 43 52 20 53 45 54 20    lied to SCR SET 
01A590:  49 4E 4B 20 28 73 65 65 20 41 70 70 65 6E 64 69    INK (see Appendi
01A5A0:  78 20 56 29 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    x V).......     
01A5B0:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 73      This routine s
01A5C0:  65 74 73 20 74 68 65 20 63 6F 6C 6F 75 72 73 20    ets the colours 
01A5D0:  66 6F 72 20 61 6C 6C 20 69 6E 6B 73 20 69 6E 63    for all inks inc
01A5E0:  6C 75 64 69 6E 67 20 74 68 6F 73 65 20 74 68 61    luding those tha
01A5F0:  74 20 63 61 6E 6E 6F 74 0D 0A 20 20 20 20 20 20    t cannot..      
01A600:  20 62 65 20 76 69 73 69 62 6C 65 20 69 6E 20 74     be visible in t
01A610:  68 65 20 63 75 72 72 65 6E 74 20 73 63 72 65 65    he current scree
01A620:  6E 20 6D 6F 64 65 2E 20 48 6F 77 65 76 65 72 2C    n mode. However,
01A630:  20 69 74 20 69 73 20 20 6F 6E 6C 79 20 20 6E 65     it is  only  ne
01A640:  63 65 73 73 61 72 79 0D 0A 20 20 20 20 20 20 20    cessary..       
01A650:  74 6F 20 73 75 70 70 6C 79 20 73 65 6E 73 69 62    to supply sensib
01A660:  6C 65 20 63 6F 6C 6F 75 72 73 20 66 6F 72 20 74    le colours for t
01A670:  68 65 20 76 69 73 69 62 6C 65 20 69 6E 6B 73 2E    he visible inks.
01A680:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 53    ....       The S
01A690:  63 72 65 65 6E 20 50 61 63 6B 20 73 65 74 73 20    creen Pack sets 
01A6A0:  74 68 65 20 63 6F 6C 6F 75 72 73 20 66 6F 72 20    the colours for 
01A6B0:  61 6C 6C 20 74 68 65 20 69 6E 6B 73 20 65 61 63    all the inks eac
01A6C0:  68 20 74 69 6D 65 20 20 74 68 65 20 20 69 6E 6B    h time  the  ink
01A6D0:  73 0D 0A 20 20 20 20 20 20 20 66 6C 61 73 68 20    s..       flash 
01A6E0:  61 6E 64 20 61 66 74 65 72 20 61 6E 20 69 6E 6B    and after an ink
01A6F0:  20 63 6F 6C 6F 75 72 20 68 61 73 20 62 65 65 6E     colour has been
01A700:  20 63 68 61 6E 67 65 64 20 28 62 79 20 63 61 6C     changed (by cal
01A710:  6C 69 6E 67 20 53 43 52 20 53 45 54 20 49 4E 4B    ling SCR SET INK
01A720:  0D 0A 20 20 20 20 20 20 20 6F 72 20 53 43 52 20    ..       or SCR 
01A730:  53 45 54 20 42 4F 52 44 45 52 29 2E 0D 0A 0D 0A    SET BORDER).....
01A740:  20 20 20 20 20 20 20 52 65 6C 61 74 65 64 20 65           Related e
01A750:  6E 74 72 69 65 73 3A 0D 0A 0D 0A 20 20 20 20 20    ntries:....     
01A760:  20 20 4D 43 20 43 4C 45 41 52 20 49 4E 4B 53 0D      MC CLEAR INKS.
01A770:  0A 20 20 20 20 20 20 20 53 43 52 20 53 45 54 20    .       SCR SET 
01A780:  42 4F 52 44 45 52 0D 0A 20 20 20 20 20 20 20 53    BORDER..       S
01A790:  43 52 20 53 45 54 20 49 4E 4B 0D 0A 0D 0A 0D 0A    CR SET INK......
01A7A0:  0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44    ..       AMSTRAD
01A7B0:  20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38     CPC464/664/6128
01A7C0:  20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20     FIRMWARE       
01A7D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01A7E0:  20 20 20 20 70 61 67 65 20 31 35 2E 32 32 31 0D        page 15.221.
01A7F0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
01A800:  20 20 20 20 31 38 34 3A 20 4D 43 20 52 45 53 45        184: MC RESE
01A810:  54 20 50 52 49 4E 54 45 52 20 20 20 20 20 20 20    T PRINTER       
01A820:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01A830:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23                   #
01A840:  42 44 32 38 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    BD28......      
01A850:  20 52 65 73 65 74 20 74 68 65 20 70 72 69 6E 74     Reset the print
01A860:  65 72 20 69 6E 64 69 72 65 63 74 69 6F 6E 2E 0D    er indirection..
01A870:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69    .....       Acti
01A880:  6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    on:......       
01A890:  53 65 74 20 74 68 65 20 70 72 69 6E 74 65 72 20    Set the printer 
01A8A0:  69 6E 64 69 72 65 63 74 69 6F 6E 2C 20 4D 43 20    indirection, MC 
01A8B0:  57 41 49 54 20 50 52 49 4E 54 45 52 2C 20 74 6F    WAIT PRINTER, to
01A8C0:  20 69 74 73 20 20 64 65 66 61 75 6C 74 20 20 72     its  default  r
01A8D0:  6F 75 74 69 6E 65 0D 0A 20 20 20 20 20 20 20 61    outine..       a
01A8E0:  6E 64 2C 20 69 6E 20 56 31 2E 31 20 66 69 72 6D    nd, in V1.1 firm
01A8F0:  77 61 72 65 2C 20 73 65 74 20 75 70 20 74 68 65    ware, set up the
01A900:  20 64 65 66 61 75 6C 74 20 70 72 69 6E 74 65 72     default printer
01A910:  20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 74 61 62     translation tab
01A920:  6C 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    le.......       
01A930:  45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73    Entry conditions
01A940:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F    :......       No
01A950:  20 63 6F 6E 64 69 74 69 6F 6E 73 2E 0D 0A 0D 0A     conditions.....
01A960:  0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F    ..       Exit co
01A970:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20    nditions:...... 
01A980:  20 20 20 20 20 20 41 46 2C 20 42 43 2C 20 44 45          AF, BC, DE
01A990:  20 61 6E 64 20 48 4C 20 63 6F 72 72 75 70 74 2E     and HL corrupt.
01A9A0:  0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68    ..       All oth
01A9B0:  65 72 20 72 65 67 69 73 74 65 72 73 20 70 72 65    er registers pre
01A9C0:  73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20    served.......   
01A9D0:  20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A        Notes:......
01A9E0:  20 20 20 20 20 20 20 54 68 65 20 64 65 66 61 75           The defau
01A9F0:  6C 74 20 70 72 69 6E 74 65 72 20 74 72 61 6E 73    lt printer trans
01AA00:  6C 61 74 69 6F 6E 20 74 61 62 6C 65 20 69 73 20    lation table is 
01AA10:  64 65 73 63 72 69 62 65 64 20 20 69 6E 20 20 41    described  in  A
01AA20:  70 70 65 6E 64 69 78 20 20 58 49 56 2E 0D 0A 0D    ppendix  XIV....
01AA30:  0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73 20 69    ...       This i
01AA40:  73 20 64 65 73 69 67 6E 65 64 20 74 6F 20 64 72    s designed to dr
01AA50:  69 76 65 20 74 68 65 20 44 4D 50 2D 31 20 70 72    ive the DMP-1 pr
01AA60:  69 6E 74 65 72 2E 20 49 74 20 20 6F 6E 6C 79 20    inter. It  only 
01AA70:  20 74 72 61 6E 73 6C 61 74 65 73 20 20 74 68 65     translates  the
01AA80:  0D 0A 20 20 20 20 20 20 20 61 64 64 69 74 69 6F    ..       additio
01AA90:  6E 61 6C 20 63 68 61 72 61 63 74 65 72 73 20 69    nal characters i
01AAA0:  6E 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20    n the character 
01AAB0:  73 65 74 20 20 28 23 30 41 2E 2E 23 41 46 29 3B    set  (#0A..#AF);
01AAC0:  20 20 69 74 20 20 64 6F 65 73 20 20 6E 6F 74 0D      it  does  not.
01AAD0:  0A 20 20 20 20 20 20 20 74 72 61 6E 73 6C 61 74    .       translat
01AAE0:  65 20 61 6E 79 20 20 6F 66 20 20 74 68 65 20 20    e any  of  the  
01AAF0:  73 74 61 6E 64 61 72 64 20 20 41 53 43 49 49 20    standard  ASCII 
01AB00:  20 63 68 61 72 61 63 74 65 72 73 20 20 6F 72 20     characters  or 
01AB10:  20 74 68 65 20 20 67 72 61 70 68 69 63 73 0D 0A     the  graphics..
01AB20:  20 20 20 20 20 20 20 63 68 61 72 61 63 74 65 72           character
01AB30:  73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    s.........      
01AB40:  20 52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73     Related entries
01AB50:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4D 43    :......       MC
01AB60:  20 57 41 49 54 20 50 52 49 4E 54 45 52 0D 0A 20     WAIT PRINTER.. 
01AB70:  20 20 20 20 20 20 4D 43 20 50 52 49 4E 54 20 43          MC PRINT C
01AB80:  48 41 52 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    HAR.............
01AB90:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
01ABA0:  0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41    ...       AMSTRA
01ABB0:  44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32    D CPC464/664/612
01ABC0:  38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20    8 FIRMWARE      
01ABD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01ABE0:  20 20 20 20 20 70 61 67 65 20 31 35 2E 32 32 32         page 15.222
01ABF0:  0D 0A 1A 6C 20 73 79 6E 63 68 72 6F 6E 6F 75 73    ...l synchronous
01AC00:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
01AC10:  20 20 20 31 38 35 3A 20 4D 43 20 50 52 49 4E 54       185: MC PRINT
01AC20:  20 43 48 41 52 20 20 20 20 20 20 20 20 20 20 20     CHAR           
01AC30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01AC40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01AC50:  20 20 20 20 23 42 44 32 42 0D 0A 0D 0A 20 20 20        #BD2B....   
01AC60:  20 20 20 20 54 72 79 20 74 6F 20 73 65 6E 64 20        Try to send 
01AC70:  61 20 63 68 61 72 61 63 74 65 72 20 74 6F 20 74    a character to t
01AC80:  68 65 20 43 65 6E 74 72 6F 6E 69 63 73 20 70 6F    he Centronics po
01AC90:  72 74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63    rt.....       Ac
01ACA0:  74 69 6F 6E 3A 0D 0A 0D 0A 20 20 20 20 20 20 20    tion:....       
01ACB0:  53 65 6E 64 20 61 20 63 68 61 72 61 63 74 65 72    Send a character
01ACC0:  20 74 6F 20 74 68 65 20 70 72 69 6E 74 65 72 20     to the printer 
01ACD0:  28 43 65 6E 74 72 6F 6E 69 63 73 20 70 6F 72 74    (Centronics port
01ACE0:  29 20 6F 72 20 74 69 6D 65 20 6F 75 74 20 20 69    ) or time out  i
01ACF0:  66 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 70    f  the..       p
01AD00:  72 69 6E 74 65 72 20 69 73 20 62 75 73 79 20 66    rinter is busy f
01AD10:  6F 72 20 74 6F 6F 20 6C 6F 6E 67 2E 0D 0A 0D 0A    or too long.....
01AD20:  20 20 20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E           Entry con
01AD30:  64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20    ditions:....    
01AD40:  20 20 20 41 20 63 6F 6E 74 61 69 6E 73 20 74 68       A contains th
01AD50:  65 20 63 68 61 72 61 63 74 65 72 20 74 6F 20 73    e character to s
01AD60:  65 6E 64 20 28 62 69 74 20 37 20 69 73 20 69 67    end (bit 7 is ig
01AD70:  6E 6F 72 65 64 29 2E 0D 0A 0D 0A 20 20 20 20 20    nored).....     
01AD80:  20 20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E      Exit condition
01AD90:  73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20    s:....       If 
01ADA0:  74 68 65 20 63 68 61 72 61 63 74 65 72 20 77 61    the character wa
01ADB0:  73 20 73 65 6E 74 20 4F 4B 3A 0D 0A 0D 0A 20 20    s sent OK:....  
01ADC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                   C
01ADD0:  61 72 72 79 20 74 72 75 65 2E 0D 0A 0D 0A 20 20    arry true.....  
01ADE0:  20 20 20 20 20 49 66 20 74 68 65 20 70 72 69 6E         If the prin
01ADF0:  74 65 72 20 74 69 6D 65 64 20 6F 75 74 3A 0D 0A    ter timed out:..
01AE00:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
01AE10:  20 20 20 43 61 72 72 79 20 66 61 6C 73 65 2E 0D       Carry false..
01AE20:  0A 0D 0A 20 20 20 20 20 20 20 41 6C 77 61 79 73    ...       Always
01AE30:  3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    :....           
01AE40:  20 20 20 20 20 41 20 61 6E 64 20 6F 74 68 65 72         A and other
01AE50:  20 66 6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D     flags corrupt..
01AE60:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
01AE70:  20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73     All other regis
01AE80:  74 65 72 73 20 70 72 65 73 65 72 76 65 64 2E 0D    ters preserved..
01AE90:  0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A    ...       Notes:
01AEA0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 6E 20    ......       In 
01AEB0:  56 31 2E 31 20 66 69 72 6D 77 61 72 65 2C 20 74    V1.1 firmware, t
01AEC0:  68 65 20 63 68 61 72 61 63 74 65 72 20 74 6F 20    he character to 
01AED0:  62 65 20 73 65 6E 74 20 20 69 73 20 20 74 72 61    be sent  is  tra
01AEE0:  6E 73 6C 61 74 65 64 20 20 75 73 69 6E 67 20 20    nslated  using  
01AEF0:  74 68 65 0D 0A 20 20 20 20 20 20 20 70 72 69 6E    the..       prin
01AF00:  74 65 72 20 74 72 61 6E 73 6C 61 74 69 6F 6E 20    ter translation 
01AF10:  74 61 62 6C 65 20 61 73 20 73 65 74 20 20 62 79    table as set  by
01AF20:  20 20 4D 43 20 20 50 52 49 4E 54 20 20 54 52 41      MC  PRINT  TRA
01AF30:  4E 53 4C 41 54 49 4F 4E 2E 20 20 49 66 20 20 74    NSLATION.  If  t
01AF40:  68 65 0D 0A 20 20 20 20 20 20 20 73 75 70 70 6C    he..       suppl
01AF50:  69 65 64 20 63 68 61 72 61 63 74 65 72 20 69 73    ied character is
01AF60:  20 6E 6F 74 20 66 6F 75 6E 64 20 69 6E 20 20 74     not found in  t
01AF70:  68 65 20 20 74 61 62 6C 65 20 20 74 68 65 6E 20    he  table  then 
01AF80:  20 69 74 20 20 69 73 20 20 73 65 6E 74 20 20 61     it  is  sent  a
01AF90:  73 0D 0A 20 20 20 20 20 20 20 73 75 70 70 6C 69    s..       suppli
01AFA0:  65 64 20 77 69 74 68 6F 75 74 20 74 72 61 6E 73    ed without trans
01AFB0:  6C 61 74 69 6F 6E 2E 20 48 6F 77 65 76 65 72 2C    lation. However,
01AFC0:  20 69 66 20 74 68 65 20 63 68 61 72 61 63 74 65     if the characte
01AFD0:  72 20 20 69 73 20 20 66 6F 75 6E 64 20 20 69 6E    r  is  found  in
01AFE0:  0D 0A 20 20 20 20 20 20 20 74 68 65 20 74 72 61    ..       the tra
01AFF0:  6E 73 6C 61 74 69 6F 6E 20 74 61 62 6C 65 20 20    nslation table  
01B000:  74 68 65 6E 20 20 74 68 65 20 20 63 6F 72 72 65    then  the  corre
01B010:  73 70 6F 6E 64 69 6E 67 20 20 74 72 61 6E 73 6C    sponding  transl
01B020:  61 74 69 6F 6E 20 20 69 73 20 20 73 65 6E 74 0D    ation  is  sent.
01B030:  0A 20 20 20 20 20 20 20 69 6E 73 74 65 61 64 3B    .       instead;
01B040:  20 75 6E 6C 65 73 73 20 74 68 65 20 74 72 61 6E     unless the tran
01B050:  73 6C 61 74 69 6F 6E 20 69 73 20 46 46 20 69 6E    slation is FF in
01B060:  20 77 68 69 63 68 20 63 61 73 65 20 74 68 65 20     which case the 
01B070:  20 63 68 61 72 61 63 74 65 72 20 20 69 73 0D 0A     character  is..
01B080:  20 20 20 20 20 20 20 69 67 6E 6F 72 65 64 20 61           ignored a
01B090:  6E 64 20 6E 6F 74 68 69 6E 67 20 69 73 20 73 65    nd nothing is se
01B0A0:  6E 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    nt.......       
01B0B0:  54 68 69 73 20 72 6F 75 74 69 6E 65 20 63 61 6C    This routine cal
01B0C0:  6C 73 20 74 68 65 20 4D 61 63 68 69 6E 65 20 50    ls the Machine P
01B0D0:  61 63 6B 20 69 6E 64 69 72 65 63 74 69 6F 6E 20    ack indirection 
01B0E0:  20 4D 43 20 20 57 41 49 54 20 20 50 52 49 4E 54     MC  WAIT  PRINT
01B0F0:  45 52 20 20 74 6F 0D 0A 20 20 20 20 20 20 20 73    ER  to..       s
01B100:  65 6E 74 20 74 68 65 20 63 68 61 72 61 63 74 65    ent the characte
01B110:  72 2E 20 54 68 65 20 64 65 66 61 75 6C 74 20 20    r. The default  
01B120:  69 6E 64 69 72 65 63 74 69 6F 6E 20 20 72 6F 75    indirection  rou
01B130:  74 69 6E 65 20 20 77 61 69 74 73 20 20 66 6F 72    tine  waits  for
01B140:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 43 65      the..       Ce
01B150:  6E 74 72 6F 6E 69 63 73 20 70 6F 72 74 20 74 6F    ntronics port to
01B160:  20 62 65 63 6F 6D 65 20 6E 6F 6E 2D 62 75 73 79     become non-busy
01B170:  20 74 68 65 6E 20 73 65 6E 64 73 20 74 68 65 20     then sends the 
01B180:  20 63 68 61 72 61 63 74 65 72 2E 20 20 49 66 20     character.  If 
01B190:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 70 6F 72     the..       por
01B1A0:  74 20 72 65 6D 61 69 6E 73 20 62 75 73 79 20 66    t remains busy f
01B1B0:  6F 72 20 74 6F 6F 20 6C 6F 6E 67 20 28 61 70 70    or too long (app
01B1C0:  72 6F 78 69 6D 61 74 65 6C 79 20 30 2E 34 20 20    roximately 0.4  
01B1D0:  73 65 63 6F 6E 64 73 29 20 20 74 68 65 6E 20 20    seconds)  then  
01B1E0:  74 68 65 0D 0A 20 20 20 20 20 20 20 72 6F 75 74    the..       rout
01B1F0:  69 6E 65 20 74 69 6D 65 73 20 6F 75 74 20 61 6E    ine times out an
01B200:  64 20 74 68 65 20 63 68 61 72 61 63 74 65 72 20    d the character 
01B210:  69 73 20 6E 6F 74 20 20 73 65 6E 74 2E 20 20 54    is not  sent.  T
01B220:  68 69 73 20 20 74 69 6D 65 20 20 6F 75 74 20 20    his  time  out  
01B230:  69 73 0D 0A 20 20 20 20 20 20 20 70 72 6F 76 69    is..       provi
01B240:  64 65 64 20 73 6F 20 74 68 61 74 20 74 68 65 20    ded so that the 
01B250:  63 61 6C 6C 65 72 20 63 61 6E 20 74 65 73 74 20    caller can test 
01B260:  20 66 6F 72 20 20 62 72 65 61 6B 20 20 77 68 69     for  break  whi
01B270:  6C 73 74 20 20 64 72 69 76 69 6E 67 20 20 74 68    lst  driving  th
01B280:  65 0D 0A 20 20 20 20 20 20 20 70 72 69 6E 74 65    e..       printe
01B290:  72 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    r...........    
01B2A0:  20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72 69       Related entri
01B2B0:  65 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 4D 43    es:....       MC
01B2C0:  20 50 52 49 4E 54 20 54 52 41 4E 53 4C 41 54 49     PRINT TRANSLATI
01B2D0:  4F 4E 0D 0A 20 20 20 20 20 20 20 4D 43 20 52 45    ON..       MC RE
01B2E0:  53 45 54 20 50 52 49 4E 54 45 52 0D 0A 20 20 20    SET PRINTER..   
01B2F0:  20 20 20 20 4D 43 20 57 41 49 54 20 50 52 49 4E        MC WAIT PRIN
01B300:  54 45 52 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    TER........     
01B310:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
01B320:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
01B330:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
01B340:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
01B350:  65 20 31 35 2E 32 32 33 0D 0A 0D 0A 0D 0A 0D 0A    e 15.223........
01B360:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 38 36    ......       186
01B370:  3A 20 4D 43 20 42 55 53 59 20 50 52 49 4E 54 45    : MC BUSY PRINTE
01B380:  52 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    R               
01B390:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01B3A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 42                  #B
01B3B0:  44 32 45 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    D2E......       
01B3C0:  54 65 73 74 20 69 66 20 74 68 65 20 43 65 6E 74    Test if the Cent
01B3D0:  72 6F 6E 69 63 73 20 70 6F 72 74 20 69 73 20 62    ronics port is b
01B3E0:  75 73 79 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    usy.......      
01B3F0:  20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20     Action:......  
01B400:  20 20 20 20 20 54 65 73 74 20 69 66 20 74 68 65         Test if the
01B410:  20 70 72 69 6E 74 65 72 20 28 43 65 6E 74 72 6F     printer (Centro
01B420:  6E 69 63 73 20 70 6F 72 74 29 20 69 73 20 62 75    nics port) is bu
01B430:  73 79 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    sy.......       
01B440:  45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73    Entry conditions
01B450:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F    :......       No
01B460:  20 63 6F 6E 64 69 74 69 6F 6E 73 2E 0D 0A 0D 0A     conditions.....
01B470:  0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F    ..       Exit co
01B480:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20    nditions:...... 
01B490:  20 20 20 20 20 20 49 66 20 43 65 6E 74 72 6F 6E          If Centron
01B4A0:  69 63 73 20 70 6F 72 74 20 69 73 20 62 75 73 79    ics port is busy
01B4B0:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    :......         
01B4C0:  20 20 20 20 20 20 20 43 61 72 72 79 20 74 72 75           Carry tru
01B4D0:  65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49    e.......       I
01B4E0:  66 20 43 65 6E 74 72 6F 6E 69 63 73 20 70 6F 72    f Centronics por
01B4F0:  74 20 69 73 20 69 64 6C 65 3A 0D 0A 0D 0A 0D 0A    t is idle:......
01B500:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01B510:  43 61 72 72 79 20 66 61 6C 73 65 2E 0D 0A 0D 0A    Carry false.....
01B520:  0D 0A 20 20 20 20 20 20 20 41 6C 77 61 79 73 3A    ..       Always:
01B530:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    ......          
01B540:  20 20 20 20 20 20 4F 74 68 65 72 20 66 6C 61 67          Other flag
01B550:  73 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20    s corrupt...    
01B560:  20 20 20 20 20 20 20 20 20 20 20 20 41 6C 6C 20                All 
01B570:  6F 74 68 65 72 20 72 65 67 69 73 74 65 72 73 20    other registers 
01B580:  70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A    preserved.......
01B590:  20 20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D           Notes:...
01B5A0:  0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73 20 72    ...       This r
01B5B0:  6F 75 74 69 6E 65 20 68 61 73 20 6E 6F 20 6F 74    outine has no ot
01B5C0:  68 65 72 20 65 66 66 65 63 74 73 2E 0D 0A 0D 0A    her effects.....
01B5D0:  0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74    ....       Relat
01B5E0:  65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D    ed entries:.....
01B5F0:  0A 20 20 20 20 20 20 20 4D 43 20 53 45 4E 44 20    .       MC SEND 
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:  50 52 49 4E 54 45 52 0D 0A 0D 0A 0D 0A 0D 0A 0D    PRINTER.........
01B710:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
01B720:  41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36    AMSTRAD CPC464/6
01B730:  36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45    64/6128 FIRMWARE
01B740:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01B750:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
01B760:  31 35 2E 32 32 34 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    15.224..........
01B770:  0D 0A 0D 0A 20 20 20 20 20 20 20 31 38 37 3A 20    ....       187: 
01B780:  4D 43 20 53 45 4E 44 20 50 52 49 4E 54 45 52 20    MC SEND PRINTER 
01B790:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01B7A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01B7B0:  20 20 20 20 20 20 20 20 20 20 20 20 23 42 44 33                #BD3
01B7C0:  31 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 53 65    1......       Se
01B7D0:  6E 64 20 61 20 63 68 61 72 61 63 74 65 72 20 74    nd a character t
01B7E0:  6F 20 74 68 65 20 43 65 6E 74 72 6F 6E 69 63 73    o the Centronics
01B7F0:  20 70 6F 72 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20     port.......    
01B800:  20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A       Action:......
01B810:  20 20 20 20 20 20 20 53 65 6E 64 20 61 20 63 68           Send a ch
01B820:  61 72 61 63 74 65 72 20 74 6F 20 74 68 65 20 70    aracter to the p
01B830:  72 69 6E 74 65 72 20 28 43 65 6E 74 72 6F 6E 69    rinter (Centroni
01B840:  63 73 20 70 6F 72 74 29 20 77 68 69 63 68 20 20    cs port) which  
01B850:  6D 75 73 74 20 20 6E 6F 74 20 20 62 65 0D 0A 20    must  not  be.. 
01B860:  20 20 20 20 20 20 62 75 73 79 2E 0D 0A 0D 0A 0D          busy......
01B870:  0A 20 20 20 20 20 20 20 45 6E 74 72 79 20 63 6F    .       Entry co
01B880:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20    nditions:...... 
01B890:  20 20 20 20 20 20 41 20 63 6F 6E 74 61 69 6E 73          A contains
01B8A0:  20 74 68 65 20 63 68 61 72 61 63 74 65 72 20 74     the character t
01B8B0:  6F 20 73 65 6E 64 20 28 62 69 74 20 37 20 69 73    o send (bit 7 is
01B8C0:  20 69 67 6E 6F 72 65 64 29 2E 0D 0A 0D 0A 0D 0A     ignored).......
01B8D0:  20 20 20 20 20 20 20 45 78 69 74 20 63 6F 6E 64           Exit cond
01B8E0:  69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20    itions:......   
01B8F0:  20 20 20 20 43 61 72 72 79 20 74 72 75 65 2E 0D        Carry true..
01B900:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 20 61 6E    .....       A an
01B910:  64 20 6F 74 68 65 72 20 66 6C 61 67 73 20 63 6F    d other flags co
01B920:  72 72 75 70 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    rrupt.......    
01B930:  20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67       All other reg
01B940:  69 73 74 65 72 73 20 70 72 65 73 65 72 76 65 64    isters preserved
01B950:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F    .......       No
01B960:  74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    tes:......      
01B970:  20 54 68 65 20 70 72 69 6E 74 65 72 20 6D 75 73     The printer mus
01B980:  74 20 6E 6F 74 20 62 65 20 62 75 73 79 20 77 68    t not be busy wh
01B990:  65 6E 20 61 20 20 63 68 61 72 61 63 74 65 72 20    en a  character 
01B9A0:  20 69 73 20 20 73 65 6E 74 2E 20 20 54 68 65 20     is  sent.  The 
01B9B0:  20 68 69 67 68 65 72 0D 0A 20 20 20 20 20 20 20     higher..       
01B9C0:  6C 65 76 65 6C 20 72 6F 75 74 69 6E 65 20 4D 43    level routine MC
01B9D0:  20 50 52 49 4E 54 20 43 48 41 52 20 77 69 6C 6C     PRINT CHAR will
01B9E0:  20 61 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20 77     automatically w
01B9F0:  61 69 74 20 66 6F 72 20 74 68 65 20 70 72 69 6E    ait for the prin
01BA00:  74 65 72 20 74 6F 0D 0A 20 20 20 20 20 20 20 62    ter to..       b
01BA10:  65 63 6F 6D 65 20 6E 6F 6E 2D 62 75 73 79 20 61    ecome non-busy a
01BA20:  6E 64 20 73 68 6F 75 6C 64 20 62 65 20 75 73 65    nd should be use
01BA30:  64 20 69 6E 20 70 72 65 66 65 72 65 6E 63 65 2E    d in preference.
01BA40:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52    ........       R
01BA50:  65 6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D    elated entries:.
01BA60:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4D 43 20 42    .....       MC B
01BA70:  55 53 59 20 50 52 49 4E 54 45 52 0D 0A 20 20 20    USY PRINTER..   
01BA80:  20 20 20 20 4D 43 20 50 52 49 4E 54 20 43 48 41        MC PRINT CHA
01BA90:  52 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    R...............
01BAA0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    ............... 
01BAB0:  20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50          AMSTRAD CP
01BAC0:  43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49    C464/664/6128 FI
01BAD0:  52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20    RMWARE          
01BAE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01BAF0:  20 70 61 67 65 20 31 35 2E 32 32 35 0D 0A 0D 0A     page 15.225....
01BB00:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
01BB10:  20 31 38 38 3A 20 4D 43 20 53 4F 55 4E 44 20 52     188: MC SOUND R
01BB20:  45 47 49 53 54 45 52 20 20 20 20 20 20 20 20 20    EGISTER         
01BB30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01BB40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01BB50:  20 20 23 42 44 33 34 0D 0A 0D 0A 0D 0A 20 20 20      #BD34......   
01BB60:  20 20 20 20 53 65 6E 64 20 64 61 74 61 20 74 6F        Send data to
01BB70:  20 61 20 73 6F 75 6E 64 20 63 68 69 70 20 72 65     a sound chip re
01BB80:  67 69 73 74 65 72 2E 0D 0A 0D 0A 0D 0A 20 20 20    gister.......   
01BB90:  20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D        Action:.....
01BBA0:  0A 20 20 20 20 20 20 20 53 65 74 20 73 6F 75 6E    .       Set soun
01BBB0:  64 20 63 68 69 70 20 72 65 67 69 73 74 65 72 2E    d chip register.
01BBC0:  20 54 68 69 73 20 69 73 20 61 20 72 61 74 68 65     This is a rathe
01BBD0:  72 20 63 6F 6E 76 6F 6C 75 74 65 64 20 61 63 74    r convoluted act
01BBE0:  69 6F 6E 20 62 65 63 61 75 73 65 20 6F 66 0D 0A    ion because of..
01BBF0:  20 20 20 20 20 20 20 74 68 65 20 77 61 79 20 74           the way t
01BC00:  68 65 20 68 61 72 64 77 61 72 65 20 68 61 73 20    he hardware has 
01BC10:  62 65 65 6E 20 64 65 73 69 67 6E 65 64 2E 0D 0A    been designed...
01BC20:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79    ....       Entry
01BC30:  20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A     conditions:....
01BC40:  0D 0A 20 20 20 20 20 20 20 41 20 63 6F 6E 74 61    ..       A conta
01BC50:  69 6E 73 20 74 68 65 20 73 6F 75 6E 64 20 63 68    ins the sound ch
01BC60:  69 70 20 72 65 67 69 73 74 65 72 20 6E 75 6D 62    ip register numb
01BC70:  65 72 2E 0D 0A 20 20 20 20 20 20 20 43 20 63 6F    er...       C co
01BC80:  6E 74 61 69 6E 73 20 74 68 65 20 64 61 74 61 20    ntains the data 
01BC90:  74 6F 20 73 65 6E 64 2E 0D 0A 0D 0A 0D 0A 20 20    to send.......  
01BCA0:  20 20 20 20 20 45 78 69 74 20 63 6F 6E 64 69 74         Exit condit
01BCB0:  69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ions:......     
01BCC0:  20 20 41 46 20 61 6E 64 20 42 43 20 63 6F 72 72      AF and BC corr
01BCD0:  75 70 74 2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C    upt...       All
01BCE0:  20 6F 74 68 65 72 20 72 65 67 69 73 74 65 72 73     other registers
01BCF0:  20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D     preserved......
01BD00:  0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A    .       Notes:..
01BD10:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73 20    ....       This 
01BD20:  72 6F 75 74 69 6E 65 20 65 6E 61 62 6C 65 73 20    routine enables 
01BD30:  69 6E 74 65 72 72 75 70 74 73 2E 0D 0A 0D 0A 0D    interrupts......
01BD40:  0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74 65    ...       Relate
01BD50:  64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A    d entries:......
01BD60:  20 20 20 20 20 20 20 4E 6F 6E 65 21 0D 0A 0D 0A           None!....
01BD70:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
01BD80:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
01BD90:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ........       A
01BDA0:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
01BDB0:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
01BDC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01BDD0:  20 20 20 20 20 20 20 20 20 20 70 61 67 65 20 31              page 1
01BDE0:  35 2E 32 32 36 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    5.226...........
01BDF0:  0A 0D 0A 20 20 20 20 20 20 20 31 38 39 3A 20 4A    ...       189: J
01BE00:  55 4D 50 20 52 45 53 54 4F 52 45 20 20 20 20 20    UMP RESTORE     
01BE10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01BE20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01BE30:  20 20 20 20 20 20 20 20 20 20 20 23 42 44 33 37               #BD37
01BE40:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 73    ......       Res
01BE50:  74 6F 72 65 20 74 68 65 20 73 74 61 6E 64 61 72    tore the standar
01BE60:  64 20 6A 75 6D 70 62 6C 6F 63 6B 2E 0D 0A 0D 0A    d jumpblock.....
01BE70:  0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A    ..       Action:
01BE80:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 53 65 74    ......       Set
01BE90:  20 74 68 65 20 6D 61 69 6E 20 66 69 72 6D 77 61     the main firmwa
01BEA0:  72 65 20 6A 75 6D 70 62 6C 6F 63 6B 20 74 6F 20    re jumpblock to 
01BEB0:  69 74 73 20 73 74 61 6E 64 61 72 64 20 73 74 61    its standard sta
01BEC0:  74 65 20 61 73 20 64 65 73 63 72 69 62 65 64 20    te as described 
01BED0:  20 69 6E 0D 0A 20 20 20 20 20 20 20 73 65 63 74     in..       sect
01BEE0:  69 6F 6E 73 20 31 34 2E 31 20 61 6E 64 20 31 35    ions 14.1 and 15
01BEF0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E    .......       En
01BF00:  74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D    try conditions:.
01BF10:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 20 63    .....       No c
01BF20:  6F 6E 64 69 74 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A    onditions.......
01BF30:  20 20 20 20 20 20 20 45 78 69 74 20 63 6F 6E 64           Exit cond
01BF40:  69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20    itions:......   
01BF50:  20 20 20 20 41 46 2C 20 42 43 2C 20 44 45 20 61        AF, BC, DE a
01BF60:  6E 64 20 48 4C 20 63 6F 72 72 75 70 74 2E 0D 0A    nd HL corrupt...
01BF70:  20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65 72           All other
01BF80:  20 72 65 67 69 73 74 65 72 73 20 70 72 65 73 65     registers prese
01BF90:  72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    rved.......     
01BFA0:  20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20      Notes:......  
01BFB0:  20 20 20 20 20 54 68 69 73 20 72 6F 75 74 69 6E         This routin
01BFC0:  65 20 6D 61 79 20 62 65 20 75 73 65 64 20 74 6F    e may be used to
01BFD0:  20 72 65 73 74 6F 72 65 20 20 74 68 65 20 20 6A     restore  the  j
01BFE0:  75 6D 70 62 6C 6F 63 6B 20 20 74 6F 20 20 69 74    umpblock  to  it
01BFF0:  73 20 20 73 74 61 6E 64 61 72 64 0D 0A 20 20 20    s  standard..   
01C000:  20 20 20 20 72 6F 75 74 69 6E 65 73 20 61 66 74        routines aft
01C010:  65 72 20 74 68 65 20 75 73 65 72 20 68 61 73 20    er the user has 
01C020:  63 68 61 6E 67 65 64 20 65 6E 74 72 69 65 73 20    changed entries 
01C030:  69 6E 20 69 74 2E 20 54 68 65 20 20 77 68 6F 6C    in it. The  whol
01C040:  65 20 20 6F 66 20 20 74 68 65 0D 0A 20 20 20 20    e  of  the..    
01C050:  20 20 20 6A 75 6D 70 62 6C 6F 63 6B 20 69 73 20       jumpblock is 
01C060:  73 65 74 20 75 70 20 73 6F 20 63 61 72 65 20 6D    set up so care m
01C070:  75 73 74 20 62 65 20 74 61 6B 65 6E 20 69 66 20    ust be taken if 
01C080:  6F 74 68 65 72 20 70 72 6F 67 72 61 6D 73 2C 20    other programs, 
01C090:  20 73 75 63 68 20 20 61 73 0D 0A 20 20 20 20 20     such  as..     
01C0A0:  20 20 41 4D 53 44 4F 53 2C 20 68 61 76 65 20 70      AMSDOS, have p
01C0B0:  61 74 63 68 65 64 20 69 74 2E 0D 0A 0D 0A 0D 0A    atched it.......
01C0C0:  20 20 20 20 20 20 20 54 68 65 20 69 6E 64 69 72           The indir
01C0D0:  65 63 74 69 6F 6E 73 20 6A 75 6D 70 62 6C 6F 63    ections jumpbloc
01C0E0:  6B 20 69 73 20 73 65 74 20 75 70 20 70 69 65 63    k is set up piec
01C0F0:  65 6D 65 61 6C 20 62 79 20 74 68 65 20 20 76 61    emeal by the  va
01C100:  72 69 6F 75 73 20 20 70 61 63 6B 73 27 0D 0A 20    rious  packs'.. 
01C110:  20 20 20 20 20 20 69 6E 69 74 69 61 6C 69 7A 61          initializa
01C120:  74 69 6F 6E 20 61 6E 64 20 72 65 73 65 74 20 72    tion and reset r
01C130:  6F 75 74 69 6E 65 73 2E 20 4A 55 4D 50 20 52 45    outines. JUMP RE
01C140:  53 54 4F 52 45 20 64 6F 65 73 20 6E 6F 74 20 20    STORE does not  
01C150:  73 65 74 20 20 75 70 20 20 74 68 65 0D 0A 20 20    set  up  the..  
01C160:  20 20 20 20 20 69 6E 64 69 72 65 63 74 69 6F 6E         indirection
01C170:  73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    s.........      
01C180:  20 52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73     Related entries
01C190:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 47 52    :......       GR
01C1A0:  41 20 52 45 53 45 54 0D 0A 20 20 20 20 20 20 20    A RESET..       
01C1B0:  4B 4D 20 52 45 53 45 54 0D 0A 20 20 20 20 20 20    KM RESET..      
01C1C0:  20 4D 43 20 52 45 53 45 54 20 50 52 49 4E 54 45     MC RESET PRINTE
01C1D0:  52 0D 0A 20 20 20 20 20 20 20 53 43 52 20 52 45    R..       SCR RE
01C1E0:  53 45 54 0D 0A 20 20 20 20 20 20 20 54 58 54 20    SET..       TXT 
01C1F0:  52 45 53 45 54 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    RESET...........
01C200:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
01C210:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
01C220:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
01C230:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
01C240:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
01C250:  65 20 31 35 2E 32 32 37 0D 0A 0D 0A 0D 0A 0D 0A    e 15.227........
01C260:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 39 30    ......       190
01C270:  3A 20 4B 4D 20 53 45 54 20 4C 4F 43 4B 53 20 20    : KM SET LOCKS  
01C280:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01C290:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01C2A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 42                  #B
01C2B0:  44 33 41 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    D3A......       
01C2C0:  53 65 74 20 74 68 65 20 73 68 69 66 74 20 61 6E    Set the shift an
01C2D0:  64 20 63 61 70 73 20 6C 6F 63 6B 20 73 74 61 74    d caps lock stat
01C2E0:  65 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    es.......       
01C2F0:  41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20    Action:......   
01C300:  20 20 20 20 54 75 72 6E 20 74 68 65 20 73 68 69        Turn the shi
01C310:  66 74 20 61 6E 64 20 63 61 70 73 20 6C 6F 63 6B    ft and caps lock
01C320:  73 20 6F 6E 20 6F 72 20 6F 66 66 2E 0D 0A 0D 0A    s on or off.....
01C330:  0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20 63    ..       Entry c
01C340:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A    onditions:......
01C350:  20 20 20 20 20 20 20 48 20 63 6F 6E 74 61 69 6E           H contain
01C360:  73 20 74 68 65 20 72 65 71 75 69 72 65 64 20 63    s the required c
01C370:  61 70 73 20 6C 6F 63 6B 20 73 74 61 74 65 2E 0D    aps lock state..
01C380:  0A 20 20 20 20 20 20 20 4C 20 63 6F 6E 74 61 69    .       L contai
01C390:  6E 73 20 74 68 65 20 72 65 71 75 69 72 65 64 20    ns the required 
01C3A0:  73 68 69 66 74 20 6C 6F 63 6B 20 73 74 61 74 65    shift lock state
01C3B0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78    .......       Ex
01C3C0:  69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    it conditions:..
01C3D0:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 46 20 63 6F    ....       AF co
01C3E0:  72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20 20 41    rrupt...       A
01C3F0:  6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73 74 65    ll other registe
01C400:  72 73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D    rs preserved....
01C410:  0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A    ...       Notes:
01C420:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69    ......       Thi
01C430:  73 20 72 6F 75 74 69 6E 65 20 69 73 20 6E 6F 74    s routine is not
01C440:  20 61 76 61 69 6C 61 62 6C 65 20 6F 6E 20 56 31     available on V1
01C450:  2E 30 20 66 69 72 6D 77 61 72 65 2E 0D 0A 0D 0A    .0 firmware.....
01C460:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 6C 6F 63    ..       The loc
01C470:  6B 20 73 74 61 74 65 73 20 61 72 65 3A 0D 0A 0D    k states are:...
01C480:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
01C490:  20 20 20 23 30 30 20 6D 65 61 6E 73 20 74 68 61       #00 means tha
01C4A0:  74 20 74 68 65 20 6C 6F 63 6B 20 69 73 20 74 6F    t the lock is to
01C4B0:  20 62 65 20 74 75 72 6E 65 64 20 6F 66 66 2E 0D     be turned off..
01C4C0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
01C4D0:  20 23 46 46 20 6D 65 61 6E 73 20 74 68 61 74 20     #FF means that 
01C4E0:  74 68 65 20 6C 6F 63 6B 20 69 73 20 74 6F 20 62    the lock is to b
01C4F0:  65 20 74 75 72 6E 65 64 20 6F 6E 2E 0D 0A 0D 0A    e turned on.....
01C500:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 64 65 66    ..       The def
01C510:  61 75 6C 74 20 6C 6F 63 6B 20 73 74 61 74 65 73    ault lock states
01C520:  20 61 72 65 20 6F 66 66 2E 0D 0A 0D 0A 0D 0A 0D     are off........
01C530:  0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64 20    .       Related 
01C540:  65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20    entries:......  
01C550:  20 20 20 20 20 4B 4D 20 47 45 54 20 53 54 41 54         KM GET STAT
01C560:  45 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    E...............
01C570:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
01C580:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
01C590:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
01C5A0:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
01C5B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
01C5C0:  65 20 31 35 2E 32 32 38 0D 0A 0D 0A 0D 0A 0D 0A    e 15.228........
01C5D0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 39 31    ......       191
01C5E0:  3A 20 4B 4D 20 46 4C 55 53 48 20 20 20 20 20 20    : KM FLUSH      
01C5F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01C600:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01C610:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 42                  #B
01C620:  44 33 44 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    D3D......       
01C630:  46 6C 75 73 68 20 74 68 65 20 6B 65 79 62 6F 61    Flush the keyboa
01C640:  72 64 20 62 75 66 66 65 72 73 2E 0D 0A 0D 0A 0D    rd buffers......
01C650:  0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D    .       Action:.
01C660:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 44 69 73 63    .....       Disc
01C670:  61 72 64 20 61 6C 6C 20 70 65 6E 64 69 6E 67 20    ard all pending 
01C680:  6B 65 79 73 20 66 72 6F 6D 20 74 68 65 20 6B 65    keys from the ke
01C690:  79 20 62 75 66 66 65 72 2C 20 74 68 65 20 27 70    y buffer, the 'p
01C6A0:  75 74 20 62 61 63 6B 27 20 63 68 61 72 61 63 74    ut back' charact
01C6B0:  65 72 0D 0A 20 20 20 20 20 20 20 61 6E 64 20 61    er..       and a
01C6C0:  6E 79 20 63 75 72 72 65 6E 74 20 65 78 70 61 6E    ny current expan
01C6D0:  73 69 6F 6E 20 73 74 72 69 6E 67 2E 0D 0A 0D 0A    sion string.....
01C6E0:  0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20 63    ..       Entry c
01C6F0:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A    onditions:......
01C700:  20 20 20 20 20 20 20 4E 6F 20 63 6F 6E 64 69 74           No condit
01C710:  69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ions.......     
01C720:  20 20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E      Exit condition
01C730:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    s:......       A
01C740:  46 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20    F corrupt...    
01C750:  20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67       All other reg
01C760:  69 73 74 65 72 73 20 70 72 65 73 65 72 76 65 64    isters preserved
01C770:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F    .......       No
01C780:  74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    tes:......      
01C790:  20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73     This routine is
01C7A0:  20 6E 6F 74 20 61 76 61 69 6C 61 62 6C 65 20 6F     not available o
01C7B0:  6E 20 56 31 2E 30 20 66 69 72 6D 77 61 72 65 2E    n V1.0 firmware.
01C7C0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    ......       The
01C7D0:  20 6E 65 78 74 20 63 68 61 72 61 63 74 65 72 20     next character 
01C7E0:  74 68 61 74 20 77 69 6C 6C 20 62 65 20 72 65 74    that will be ret
01C7F0:  75 72 6E 65 64 20 62 79 20 4B 4D 20 52 45 41 44    urned by KM READ
01C800:  20 43 48 41 52 20 28 6F 72 20 61 20 73 69 6D 69     CHAR (or a simi
01C810:  6C 61 72 0D 0A 20 20 20 20 20 20 20 72 6F 75 74    lar..       rout
01C820:  69 6E 65 29 20 61 66 74 65 72 20 4B 4D 20 46 4C    ine) after KM FL
01C830:  55 53 48 20 69 73 20 63 61 6C 6C 65 64 20 77 69    USH is called wi
01C840:  6C 6C 20 62 65 20 74 68 65 20 66 69 72 73 74 20    ll be the first 
01C850:  63 68 61 72 61 63 74 65 72 20 74 68 61 74 20 74    character that t
01C860:  68 65 0D 0A 20 20 20 20 20 20 20 75 73 65 72 20    he..       user 
01C870:  74 79 70 65 73 20 61 66 74 65 72 20 74 68 65 20    types after the 
01C880:  63 61 6C 6C 20 6F 66 20 4B 4D 20 46 4C 55 53 48    call of KM FLUSH
01C890:  20 73 69 6E 63 65 20 61 6C 6C 20 74 68 65 20 70     since all the p
01C8A0:  65 6E 64 69 6E 67 20 63 68 61 72 61 63 74 65 72    ending character
01C8B0:  73 0D 0A 20 20 20 20 20 20 20 77 69 6C 6C 20 68    s..       will h
01C8C0:  61 76 65 20 62 65 65 6E 20 64 69 73 63 61 72 64    ave been discard
01C8D0:  65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ed.......       
01C8E0:  4F 6E 20 56 31 2E 30 20 66 69 72 6D 77 61 72 65    On V1.0 firmware
01C8F0:  20 74 68 65 20 65 66 66 65 63 74 20 20 6F 66 20     the effect  of 
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:  20 74 68 69 73 20 20 72 6F 75 74 69 6E 65 20 20     this  routine  
01CA10:  63 61 6E 20 20 62 65 20 20 73 69 6D 75 6C 61 74    can  be  simulat
01CA20:  65 64 20 20 62 79 0D 0A 20 20 20 20 20 20 20 72    ed  by..       r
01CA30:  65 70 65 61 74 65 64 6C 79 20 63 61 6C 6C 69 6E    epeatedly callin
01CA40:  67 20 4B 4D 20 52 45 41 44 20 43 48 41 52 20 75    g KM READ CHAR u
01CA50:  6E 74 69 6C 20 69 74 20 63 6F 6D 65 73 20 62 61    ntil it comes ba
01CA60:  63 6B 20 77 69 74 68 20 63 61 72 72 79 20 66 61    ck with carry fa
01CA70:  6C 73 65 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    lse.........    
01CA80:  20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72 69       Related entri
01CA90:  65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    es:......       
01CAA0:  4B 4D 20 52 45 41 44 20 43 48 41 52 0D 0A 20 20    KM READ CHAR..  
01CAB0:  20 20 20 20 20 4B 4D 20 52 45 41 44 20 4B 45 59         KM READ KEY
01CAC0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
01CAD0:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ........       A
01CAE0:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
01CAF0:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
01CB00:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01CB10:  20 20 20 20 20 20 20 20 20 20 70 61 67 65 20 31              page 1
01CB20:  35 2E 32 32 39 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    5.229...........
01CB30:  0A 0D 0A 20 20 20 20 20 20 20 31 39 32 3A 20 54    ...       192: T
01CB40:  58 54 20 41 53 4B 20 53 54 41 54 45 20 20 20 20    XT ASK STATE    
01CB50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01CB60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01CB70:  20 20 20 20 20 20 20 20 20 20 20 23 42 44 34 30               #BD40
01CB80:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 47 65 74    ......       Get
01CB90:  20 74 68 65 20 73 74 61 74 65 20 6F 66 20 74 68     the state of th
01CBA0:  65 20 54 65 78 74 20 56 44 55 2E 0D 0A 0D 0A 0D    e Text VDU......
01CBB0:  0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D    .       Action:.
01CBC0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 74 75    .....       Retu
01CBD0:  72 6E 73 20 74 68 65 20 56 44 55 20 65 6E 61 62    rns the VDU enab
01CBE0:  6C 65 2F 64 69 73 61 62 6C 65 20 73 74 61 74 65    le/disable state
01CBF0:  20 61 6E 64 20 74 68 65 20 63 75 72 73 6F 72 20     and the cursor 
01CC00:  6F 6E 2F 6F 66 66 20 61 6E 64 20 20 63 75 72 73    on/off and  curs
01CC10:  6F 72 0D 0A 20 20 20 20 20 20 20 65 6E 61 62 6C    or..       enabl
01CC20:  65 2F 64 69 73 61 62 6C 65 20 73 74 61 74 65 73    e/disable states
01CC30:  20 6F 66 20 74 68 65 20 63 75 72 72 65 6E 74 20     of the current 
01CC40:  73 65 6C 65 63 74 65 64 20 73 74 72 65 61 6D 2E    selected stream.
01CC50:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74    ......       Ent
01CC60:  72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    ry conditions:..
01CC70:  0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 20 63 6F    ....       No co
01CC80:  6E 64 69 74 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A 20    nditions....... 
01CC90:  20 20 20 20 20 20 45 78 69 74 20 63 6F 6E 64 69          Exit condi
01CCA0:  74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    tions:......    
01CCB0:  20 20 20 41 20 63 6F 6E 74 61 69 6E 73 20 74 68       A contains th
01CCC0:  65 20 73 74 72 65 61 6D 20 73 74 61 74 65 2E 0D    e stream state..
01CCD0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 46 6C 61 67    .....       Flag
01CCE0:  73 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20    s corrupt...    
01CCF0:  20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67       All other reg
01CD00:  69 73 74 65 72 73 20 70 72 65 73 65 72 76 65 64    isters preserved
01CD10:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F    .......       No
01CD20:  74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    tes:......      
01CD30:  20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73     This routine is
01CD40:  20 6E 6F 74 20 61 76 61 69 6C 61 62 6C 65 20 6F     not available o
01CD50:  6E 20 56 31 2E 30 20 66 69 72 6D 77 61 72 65 2E    n V1.0 firmware.
01CD60:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    ......       The
01CD70:  20 73 74 72 65 61 6D 20 73 74 61 74 65 20 69 73     stream state is
01CD80:  20 72 65 74 75 72 6E 65 64 20 61 73 20 66 6F 6C     returned as fol
01CD90:  6C 6F 77 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    lows:......     
01CDA0:  20 20 20 20 20 20 42 69 74 20 30 20 20 20 20 20          Bit 0     
01CDB0:  20 20 20 20 20 30 20 2D 2D 3E 20 63 75 72 73 6F         0 --> curso
01CDC0:  72 20 65 6E 61 62 6C 65 64 2C 20 20 20 20 20 20    r enabled,      
01CDD0:  20 20 31 20 2D 2D 3E 20 63 75 72 73 6F 72 20 64      1 --> cursor d
01CDE0:  69 73 61 62 6C 65 64 2E 0D 0A 20 20 20 20 20 20    isabled...      
01CDF0:  20 20 20 20 20 42 69 74 20 31 20 20 20 20 20 20         Bit 1      
01CE00:  20 20 20 20 30 20 2D 2D 3E 20 63 75 72 73 6F 72        0 --> cursor
01CE10:  20 6F 6E 2C 20 20 20 20 20 20 20 20 20 20 20 20     on,            
01CE20:  20 31 20 2D 2D 3E 20 63 75 72 73 6F 72 20 6F 66     1 --> cursor of
01CE30:  66 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 42    f...           B
01CE40:  69 74 73 20 32 2E 2E 36 20 20 20 20 20 20 61 72    its 2..6      ar
01CE50:  65 20 75 6E 64 65 66 69 6E 65 64 2E 0D 0A 20 20    e undefined...  
01CE60:  20 20 20 20 20 20 20 20 20 42 69 74 20 37 20 20             Bit 7  
01CE70:  20 20 20 20 20 20 20 20 30 20 2D 2D 3E 20 56 44            0 --> VD
01CE80:  55 20 64 69 73 61 62 6C 65 64 2C 20 20 20 20 20    U disabled,     
01CE90:  20 20 20 20 20 31 20 2D 2D 3E 20 56 44 55 20 65         1 --> VDU e
01CEA0:  6E 61 62 6C 65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 20    nabled......... 
01CEB0:  20 20 20 20 20 20 52 65 6C 61 74 65 64 20 65 6E          Related en
01CEC0:  74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    tries:......    
01CED0:  20 20 20 54 58 54 20 43 55 52 20 44 49 53 41 42       TXT CUR DISAB
01CEE0:  4C 45 0D 0A 20 20 20 20 20 20 20 54 58 54 20 43    LE..       TXT C
01CEF0:  55 52 20 45 4E 41 42 4C 45 0D 0A 20 20 20 20 20    UR ENABLE..     
01CF00:  20 20 54 58 54 20 43 55 52 20 4F 46 46 0D 0A 20      TXT CUR OFF.. 
01CF10:  20 20 20 20 20 20 54 58 54 20 43 55 52 20 4F 4E          TXT CUR ON
01CF20:  0D 0A 20 20 20 20 20 20 20 54 58 54 20 56 44 55    ..       TXT VDU
01CF30:  20 44 49 53 41 42 4C 45 0D 0A 20 20 20 20 20 20     DISABLE..      
01CF40:  20 54 58 54 20 56 44 55 20 45 4E 41 42 4C 45 0D     TXT VDU ENABLE.
01CF50:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
01CF60:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
01CF70:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
01CF80:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
01CF90:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
01CFA0:  65 20 31 35 2E 32 33 30 0D 0A 0D 0A 0D 0A 0D 0A    e 15.230........
01CFB0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 39 33    ......       193
01CFC0:  3A 20 47 52 41 20 44 45 46 41 55 4C 54 20 20 20    : GRA DEFAULT   
01CFD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01CFE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01CFF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 42                  #B
01D000:  44 33 34 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    D34......       
01D010:  53 65 74 20 74 68 65 20 64 65 66 61 75 6C 74 20    Set the default 
01D020:  47 72 61 70 68 69 63 73 20 56 44 55 20 6D 6F 64    Graphics VDU mod
01D030:  65 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    es.......       
01D040:  41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20    Action:......   
01D050:  20 20 20 20 53 65 74 73 20 74 68 65 20 67 72 61        Sets the gra
01D060:  70 68 69 63 73 20 77 72 69 74 65 20 6D 6F 64 65    phics write mode
01D070:  2C 20 62 61 63 6B 67 72 6F 75 6E 64 20 6D 6F 64    , background mod
01D080:  65 2C 20 20 66 69 72 73 74 20 20 70 69 78 65 6C    e,  first  pixel
01D090:  20 20 6D 6F 64 65 20 20 61 6E 64 0D 0A 20 20 20      mode  and..   
01D0A0:  20 20 20 20 6C 69 6E 65 20 6D 61 73 6B 20 74 6F        line mask to
01D0B0:  20 74 68 65 69 72 20 64 65 66 61 75 6C 74 20 73     their default s
01D0C0:  65 74 74 69 6E 67 73 2E 0D 0A 0D 0A 0D 0A 20 20    ettings.......  
01D0D0:  20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69         Entry condi
01D0E0:  74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    tions:......    
01D0F0:  20 20 20 4E 6F 20 63 6F 6E 64 69 74 69 6F 6E 73       No conditions
01D100:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78    .......       Ex
01D110:  69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    it conditions:..
01D120:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 46 2C 20 42    ....       AF, B
01D130:  43 2C 20 44 45 20 61 6E 64 20 48 4C 20 63 6F 72    C, DE and HL cor
01D140:  72 75 70 74 2E 0D 0A 20 20 20 20 20 20 20 41 6C    rupt...       Al
01D150:  6C 20 6F 74 68 65 72 20 72 65 67 69 73 74 65 72    l other register
01D160:  73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A    s preserved.....
01D170:  0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A 0D    ..       Notes:.
01D180:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73    .....       This
01D190:  20 72 6F 75 74 69 6E 65 20 69 73 20 6E 6F 74 20     routine is not 
01D1A0:  61 76 61 69 6C 61 62 6C 65 20 6F 6E 20 56 31 2E    available on V1.
01D1B0:  30 20 66 69 72 6D 77 61 72 65 2E 0D 0A 0D 0A 0D    0 firmware......
01D1C0:  0A 20 20 20 20 20 20 20 54 68 69 73 20 72 6F 75    .       This rou
01D1D0:  74 69 6E 65 20 73 65 74 73 20 74 68 65 20 66 6F    tine sets the fo
01D1E0:  6C 6C 6F 77 69 6E 67 20 6D 6F 64 65 73 3A 0D 0A    llowing modes:..
01D1F0:  0D 0A 0D 0A 20 20 20 20 20 20 20 47 72 61 70 68    ....       Graph
01D200:  69 63 73 20 77 72 69 74 65 20 6D 6F 64 65 20 69    ics write mode i
01D210:  73 20 73 65 74 20 74 6F 20 66 6F 72 63 65 2E 0D    s set to force..
01D220:  0A 20 20 20 20 20 20 20 47 72 61 70 68 69 63 73    .       Graphics
01D230:  20 62 61 63 6B 67 72 6F 75 6E 64 20 6D 6F 64 65     background mode
01D240:  20 69 73 20 73 65 74 20 74 6F 20 6F 70 61 71 75     is set to opaqu
01D250:  65 2E 0D 0A 20 20 20 20 20 20 20 46 69 72 73 74    e...       First
01D260:  20 70 6F 69 6E 74 20 6D 6F 64 65 20 69 73 20 73     point mode is s
01D270:  65 74 20 74 6F 20 70 6C 6F 74 20 74 68 65 20 66    et to plot the f
01D280:  69 72 73 74 20 70 69 78 65 6C 20 6F 66 20 6C 69    irst pixel of li
01D290:  6E 65 73 2E 0D 0A 20 20 20 20 20 20 20 4C 69 6E    nes...       Lin
01D2A0:  65 20 6D 61 73 6B 20 69 73 20 73 65 74 20 74 6F    e mask is set to
01D2B0:  20 67 69 76 65 20 63 6F 6E 74 69 6E 75 6F 75 73     give continuous
01D2C0:  20 6C 69 6E 65 73 20 28 6D 61 73 6B 20 6F 66 20     lines (mask of 
01D2D0:  23 46 46 29 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    #FF).........   
01D2E0:  20 20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72        Related entr
01D2F0:  69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ies:......      
01D300:  20 47 52 41 20 49 4E 49 54 49 41 4C 49 53 45 0D     GRA INITIALISE.
01D310:  0A 20 20 20 20 20 20 20 47 52 41 20 52 45 53 45    .       GRA RESE
01D320:  54 0D 0A 20 20 20 20 20 20 20 47 52 41 20 53 45    T..       GRA SE
01D330:  54 20 42 41 43 4B 0D 0A 20 20 20 20 20 20 20 47    T BACK..       G
01D340:  52 41 20 53 45 54 20 46 49 52 53 54 0D 0A 20 20    RA SET FIRST..  
01D350:  20 20 20 20 20 47 52 41 20 53 45 54 20 4C 49 4E         GRA SET LIN
01D360:  45 20 4D 41 53 4B 0D 0A 20 20 20 20 20 20 20 53    E MASK..       S
01D370:  43 52 20 41 43 43 45 53 53 0D 0A 0D 0A 0D 0A 0D    CR ACCESS.......
01D380:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
01D390:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
01D3A0:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
01D3B0:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
01D3C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
01D3D0:  65 20 31 35 2E 32 33 31 0D 0A 0D 0A 0D 0A 0D 0A    e 15.231........
01D3E0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31 39 34    ......       194
01D3F0:  3A 20 47 52 41 20 53 45 54 20 42 41 43 4B 20 20    : GRA SET BACK  
01D400:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01D410:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01D420:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 42                  #B
01D430:  44 34 36 0D 0A 0D 0A 20 20 20 20 20 20 20 53 65    D46....       Se
01D440:  74 20 77 68 65 74 68 65 72 20 62 61 63 6B 67 72    t whether backgr
01D450:  6F 75 6E 64 20 69 73 20 74 6F 20 62 65 20 77 72    ound is to be wr
01D460:  69 74 74 65 6E 2E 0D 0A 0D 0A 20 20 20 20 20 20    itten.....      
01D470:  20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 20 20 20 20     Action:....    
01D480:  20 20 20 53 65 74 20 74 68 65 20 67 72 61 70 68       Set the graph
01D490:  69 63 73 20 62 61 63 6B 67 72 6F 75 6E 64 20 77    ics background w
01D4A0:  72 69 74 65 20 6D 6F 64 65 20 74 6F 20 6F 70 61    rite mode to opa
01D4B0:  71 75 65 20 6F 72 20 74 72 61 6E 73 70 61 72 65    que or transpare
01D4C0:  6E 74 2E 20 20 54 68 69 73 0D 0A 20 20 20 20 20    nt.  This..     
01D4D0:  20 20 61 66 66 65 63 74 73 20 68 6F 77 20 47 52      affects how GR
01D4E0:  41 20 4C 49 4E 45 20 41 42 53 4F 4C 55 54 45 2C    A LINE ABSOLUTE,
01D4F0:  20 47 52 41 20 4C 49 4E 45 20 52 45 4C 41 54 49     GRA LINE RELATI
01D500:  56 45 20 61 6E 64 20 47 52 41 20 57 52 20 43 48    VE and GRA WR CH
01D510:  41 52 20 77 72 69 74 65 0D 0A 20 20 20 20 20 20    AR write..      
01D520:  20 27 62 61 63 6B 67 72 6F 75 6E 64 27 20 70 69     'background' pi
01D530:  78 65 6C 73 2E 20 49 6E 20 6F 70 61 71 75 65 20    xels. In opaque 
01D540:  6D 6F 64 65 20 74 68 65 20 20 70 69 78 65 6C 73    mode the  pixels
01D550:  20 20 61 72 65 20 20 77 72 69 74 74 65 6E 20 20      are  written  
01D560:  69 6E 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20    in  the..       
01D570:  63 75 72 72 65 6E 74 20 20 70 61 70 65 72 20 20    current  paper  
01D580:  69 6E 6B 20 20 75 73 69 6E 67 20 20 74 68 65 20    ink  using  the 
01D590:  20 63 75 72 72 65 6E 74 20 20 67 72 61 70 68 69     current  graphi
01D5A0:  63 73 20 20 77 72 69 74 65 20 20 20 6D 6F 64 65    cs  write   mode
01D5B0:  2E 20 20 20 49 6E 0D 0A 20 20 20 20 20 20 20 74    .   In..       t
01D5C0:  72 61 6E 73 70 61 72 65 6E 74 20 6D 6F 64 65 20    ransparent mode 
01D5D0:  74 68 65 73 65 20 70 69 78 65 6C 73 20 61 72 65    these pixels are
01D5E0:  20 6E 6F 74 20 70 6C 6F 74 74 65 64 20 61 74 20     not plotted at 
01D5F0:  61 6C 6C 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45    all.....       E
01D600:  6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    ntry conditions:
01D610:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 62 61    ....       If ba
01D620:  63 6B 67 72 6F 75 6E 64 20 69 73 20 74 6F 20 62    ckground is to b
01D630:  65 20 77 72 69 74 74 65 6E 20 28 6F 70 61 71 75    e written (opaqu
01D640:  65 20 6D 6F 64 65 29 3A 0D 0A 0D 0A 20 20 20 20    e mode):....    
01D650:  20 20 20 20 20 20 20 20 20 20 20 20 41 20 6D 75                A mu
01D660:  73 74 20 62 65 20 7A 65 72 6F 2E 0D 0A 0D 0A 20    st be zero..... 
01D670:  20 20 20 20 20 20 49 66 20 62 61 63 6B 67 72 6F          If backgro
01D680:  75 6E 64 20 69 73 20 6E 6F 74 20 74 6F 20 62 65    und is not to be
01D690:  20 77 72 69 74 74 65 6E 20 28 74 72 61 6E 73 70     written (transp
01D6A0:  61 72 65 6E 74 20 6D 6F 64 65 29 3A 0D 0A 0D 0A    arent mode):....
01D6B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01D6C0:  41 20 6D 75 73 74 20 62 65 20 6E 6F 6E 2D 7A 65    A must be non-ze
01D6D0:  72 6F 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78    ro.....       Ex
01D6E0:  69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    it conditions:..
01D6F0:  0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 72 65 67    ..       All reg
01D700:  69 73 74 65 72 73 20 61 6E 64 20 66 6C 61 67 73    isters and flags
01D710:  20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D     preserved......
01D720:  0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A    ...       Notes:
01D730:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69    ......       Thi
01D740:  73 20 72 6F 75 74 69 6E 65 20 69 73 20 6E 6F 74    s routine is not
01D750:  20 61 76 61 69 6C 61 62 6C 65 20 6F 6E 20 56 31     available on V1
01D760:  2E 30 20 66 69 72 6D 77 61 72 65 2E 0D 0A 0D 0A    .0 firmware.....
01D770:  0D 0A 20 20 20 20 20 20 20 54 72 61 6E 73 70 61    ..       Transpa
01D780:  72 65 6E 74 20 77 72 69 74 65 20 6D 6F 64 65 20    rent write mode 
01D790:  69 73 20 20 75 73 65 66 75 6C 20 20 66 6F 72 20    is  useful  for 
01D7A0:  20 61 6E 6E 6F 74 61 74 69 6E 67 20 20 64 69 61     annotating  dia
01D7B0:  67 72 61 6D 73 20 20 61 6E 64 20 20 66 6F 72 0D    grams  and  for.
01D7C0:  0A 20 20 20 20 20 20 20 73 69 6D 69 6C 61 72 20    .       similar 
01D7D0:  61 70 70 6C 69 63 61 74 69 6F 6E 73 2E 0D 0A 0D    applications....
01D7E0:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 67 72    ...       The gr
01D7F0:  61 70 68 69 63 73 20 62 61 63 6B 67 72 6F 75 6E    aphics backgroun
01D800:  64 20 77 72 69 74 65 20 6D 6F 64 65 20 69 73 20    d write mode is 
01D810:  73 69 6D 69 6C 61 72 20 74 6F 20 20 62 75 74 20    similar to  but 
01D820:  20 69 6E 64 65 70 65 6E 64 65 6E 74 20 20 6F 66     independent  of
01D830:  0D 0A 20 20 20 20 20 20 20 74 68 65 20 63 68 61    ..       the cha
01D840:  72 61 63 74 65 72 20 77 72 69 74 65 20 6D 6F 64    racter write mod
01D850:  65 20 6F 66 20 65 61 63 68 20 73 74 72 65 61 6D    e of each stream
01D860:  20 6F 66 20 74 68 65 20 54 65 78 74 20 56 44 55     of the Text VDU
01D870:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
01D880:  65 20 64 65 66 61 75 6C 74 20 73 65 74 74 69 6E    e default settin
01D890:  67 20 69 73 20 6F 70 61 71 75 65 20 6D 6F 64 65    g is opaque mode
01D8A0:  2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
01D8B0:  52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A    Related entries:
01D8C0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 47 52 41    ......       GRA
01D8D0:  20 44 45 46 41 55 4C 54 0D 0A 20 20 20 20 20 20     DEFAULT..      
01D8E0:  20 47 52 41 20 4C 49 4E 45 0D 0A 20 20 20 20 20     GRA LINE..     
01D8F0:  20 20 47 52 41 20 4C 49 4E 45 20 41 42 53 4F 4C      GRA LINE ABSOL
01D900:  55 54 45 0D 0A 20 20 20 20 20 20 20 47 52 41 20    UTE..       GRA 
01D910:  4C 49 4E 45 20 52 45 4C 41 54 49 56 45 0D 0A 20    LINE RELATIVE.. 
01D920:  20 20 20 20 20 20 47 52 41 20 53 45 54 20 4C 49          GRA SET LI
01D930:  4E 45 20 4D 41 53 4B 0D 0A 20 20 20 20 20 20 20    NE MASK..       
01D940:  47 52 41 20 57 52 20 43 48 41 52 0D 0A 20 20 20    GRA WR CHAR..   
01D950:  20 20 20 20 54 58 54 20 53 45 54 20 42 41 43 4B        TXT SET BACK
01D960:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ........       A
01D970:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
01D980:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
01D990:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01D9A0:  20 20 20 20 20 20 20 20 20 20 70 61 67 65 20 31              page 1
01D9B0:  35 2E 32 33 32 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    5.232...........
01D9C0:  0A 0D 0A 20 20 20 20 20 20 20 31 39 35 3A 20 47    ...       195: G
01D9D0:  52 41 20 53 45 54 20 46 49 52 53 54 20 20 20 20    RA SET FIRST    
01D9E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01D9F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01DA00:  20 20 20 20 20 20 20 20 20 20 20 23 42 44 34 39               #BD49
01DA10:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 53 65 74    ......       Set
01DA20:  20 77 68 65 74 68 65 72 20 74 68 65 20 66 69 72     whether the fir
01DA30:  73 74 20 70 6F 69 6E 74 20 6F 66 20 61 20 6C 69    st point of a li
01DA40:  6E 65 20 69 73 20 74 6F 20 62 65 20 70 6C 6F 74    ne is to be plot
01DA50:  74 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ted.......      
01DA60:  20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20     Action:......  
01DA70:  20 20 20 20 20 54 75 72 6E 20 70 6C 6F 74 74 69         Turn plotti
01DA80:  6E 67 20 6F 66 20 74 68 65 20 66 69 72 73 74 20    ng of the first 
01DA90:  70 69 78 65 6C 20 6F 66 20 6C 69 6E 65 73 20 6F    pixel of lines o
01DAA0:  6E 20 6F 72 20 6F 66 66 2E 0D 0A 0D 0A 0D 0A 20    n or off....... 
01DAB0:  20 20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64          Entry cond
01DAC0:  69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20    itions:......   
01DAD0:  20 20 20 20 49 66 20 74 68 65 20 66 69 72 73 74        If the first
01DAE0:  20 70 69 78 65 6C 20 69 73 20 6E 6F 74 20 74 6F     pixel is not to
01DAF0:  20 62 65 20 70 6C 6F 74 74 65 64 3A 0D 0A 0D 0A     be plotted:....
01DB00:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
01DB10:  20 20 41 20 63 6F 6E 74 61 69 6E 73 20 7A 65 72      A contains zer
01DB20:  6F 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49    o.......       I
01DB30:  66 20 74 68 65 20 66 69 72 73 74 20 70 69 78 65    f the first pixe
01DB40:  6C 20 69 73 20 74 6F 20 62 65 20 70 6C 6F 74 74    l is to be plott
01DB50:  65 64 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ed:......       
01DB60:  20 20 20 20 20 20 20 20 20 41 20 63 6F 6E 74 61             A conta
01DB70:  69 6E 73 20 6E 6F 6E 2D 7A 65 72 6F 2E 0D 0A 0D    ins non-zero....
01DB80:  0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63    ...       Exit c
01DB90:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A    onditions:......
01DBA0:  20 20 20 20 20 20 20 41 6C 6C 20 72 65 67 69 73           All regis
01DBB0:  74 65 72 73 20 61 6E 64 20 66 6C 61 67 73 20 70    ters and flags p
01DBC0:  72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20    reserved....... 
01DBD0:  20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A          Notes:....
01DBE0:  0D 0A 20 20 20 20 20 20 20 54 68 69 73 20 72 6F    ..       This ro
01DBF0:  75 74 69 6E 65 20 69 73 20 6E 6F 74 20 61 76 61    utine is not ava
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:  69 6C 61 62 6C 65 20 6F 6E 20 56 31 2E 30 20 66    ilable on V1.0 f
01DD10:  69 72 6D 77 61 72 65 2E 0D 0A 0D 0A 0D 0A 20 20    irmware.......  
01DD20:  20 20 20 20 20 54 75 72 6E 69 6E 67 20 6F 66 66         Turning off
01DD30:  20 74 68 65 20 70 6C 6F 74 74 69 6E 67 20 6F 66     the plotting of
01DD40:  20 74 68 65 20 66 69 72 73 74 20 70 69 78 65 6C     the first pixel
01DD50:  20 6F 66 20 61 20 6C 69 6E 65 20 69 73 20 20 70     of a line is  p
01DD60:  61 72 74 69 63 75 6C 61 72 6C 79 0D 0A 20 20 20    articularly..   
01DD70:  20 20 20 20 75 73 65 66 75 6C 20 77 68 65 6E 20        useful when 
01DD80:  64 72 61 77 69 6E 67 20 75 73 69 6E 67 20 58 4F    drawing using XO
01DD90:  52 20 67 72 61 70 68 69 63 73 20 77 72 69 74 65    R graphics write
01DDA0:  20 6D 6F 64 65 2E 20 46 6F 72 20 65 78 61 6D 70     mode. For examp
01DDB0:  6C 65 2C 20 20 69 66 20 20 61 0D 0A 20 20 20 20    le,  if  a..    
01DDC0:  20 20 20 62 6F 78 20 69 73 20 64 72 61 77 6E 20       box is drawn 
01DDD0:  69 6E 20 58 4F 52 20 6D 6F 64 65 20 77 68 65 6E    in XOR mode when
01DDE0:  20 74 68 65 20 20 66 69 72 73 74 20 20 70 69 78     the  first  pix
01DDF0:  65 6C 20 20 6F 66 20 20 6C 69 6E 65 73 20 20 61    el  of  lines  a
01DE00:  72 65 20 20 62 65 69 6E 67 0D 0A 20 20 20 20 20    re  being..     
01DE10:  20 20 70 6C 6F 74 74 65 64 20 74 68 65 6E 20 74      plotted then t
01DE20:  68 65 20 63 6F 72 6E 65 72 20 70 69 78 65 6C 73    he corner pixels
01DE30:  20 77 69 6C 6C 20 65 20 70 6C 6F 74 74 65 64 20     will e plotted 
01DE40:  74 77 69 63 65 20 61 6E 64 20 77 69 6C 6C 20 74    twice and will t
01DE50:  68 65 72 65 66 6F 72 65 0D 0A 20 20 20 20 20 20    herefore..      
01DE60:  20 6E 6F 74 20 62 65 20 73 65 74 2E 20 42 79 20     not be set. By 
01DE70:  6E 6F 74 20 70 6C 6F 74 74 69 6E 67 20 74 68 65    not plotting the
01DE80:  20 66 69 72 73 74 20 70 69 78 65 6C 20 6F 66 20     first pixel of 
01DE90:  6C 69 6E 65 73 20 20 74 68 69 73 20 20 65 66 66    lines  this  eff
01DEA0:  65 63 74 20 20 69 73 0D 0A 20 20 20 20 20 20 20    ect  is..       
01DEB0:  61 76 6F 69 64 65 64 2E 0D 0A 0D 0A 0D 0A 20 20    avoided.......  
01DEC0:  20 20 20 20 20 54 68 65 20 64 65 66 61 75 6C 74         The default
01DED0:  20 73 65 74 74 69 6E 67 20 66 6F 72 20 74 68 69     setting for thi
01DEE0:  73 20 6D 6F 64 65 20 69 73 20 74 6F 20 70 6C 6F    s mode is to plo
01DEF0:  74 20 74 68 65 20 66 69 72 73 74 20 70 69 78 65    t the first pixe
01DF00:  6C 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52    l.......       R
01DF10:  65 6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D    elated entries:.
01DF20:  0A 0D 0A 20 20 20 20 20 20 20 47 52 41 20 44 45    ...       GRA DE
01DF30:  46 41 55 4C 54 0D 0A 20 20 20 20 20 20 20 47 52    FAULT..       GR
01DF40:  41 20 4C 49 4E 45 0D 0A 20 20 20 20 20 20 20 47    A LINE..       G
01DF50:  52 41 20 4C 49 4E 45 20 41 42 53 4F 4C 55 54 45    RA LINE ABSOLUTE
01DF60:  0D 0A 20 20 20 20 20 20 20 47 52 41 20 4C 49 4E    ..       GRA LIN
01DF70:  45 20 52 45 4C 41 54 49 56 45 0D 0A 0D 0A 0D 0A    E RELATIVE......
01DF80:  0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44    ..       AMSTRAD
01DF90:  20 43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38     CPC464/664/6128
01DFA0:  20 46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20     FIRMWARE       
01DFB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01DFC0:  20 20 20 20 70 61 67 65 20 31 35 2E 32 33 33 0D        page 15.233.
01DFD0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
01DFE0:  20 20 20 20 31 39 36 3A 20 47 52 41 20 53 45 54        196: GRA SET
01DFF0:  20 4C 49 4E 45 20 4D 41 53 4B 20 20 20 20 20 20     LINE MASK      
01E000:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01E010:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01E020:  20 20 20 20 20 23 42 44 34 43 0D 0A 0D 0A 20 20         #BD4C....  
01E030:  20 20 20 20 20 53 65 74 20 74 68 65 20 6C 69 6E         Set the lin
01E040:  65 20 6D 61 73 6B 20 66 6F 72 20 70 6C 6F 74 74    e mask for plott
01E050:  69 6E 67 20 70 69 78 65 6C 73 20 6F 66 20 6C 69    ing pixels of li
01E060:  6E 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41    nes.....       A
01E070:  63 74 69 6F 6E 3A 0D 0A 0D 0A 20 20 20 20 20 20    ction:....      
01E080:  20 53 65 74 20 74 68 65 20 6C 69 6E 65 20 6D 61     Set the line ma
01E090:  73 6B 20 74 68 61 74 20 20 73 70 65 63 69 66 69    sk that  specifi
01E0A0:  65 73 20 20 68 6F 77 20 20 70 69 78 65 6C 73 20    es  how  pixels 
01E0B0:  20 6F 6E 20 20 6C 69 6E 65 73 20 20 61 72 65 20     on  lines  are 
01E0C0:  20 74 6F 20 20 62 65 0D 0A 20 20 20 20 20 20 20     to  be..       
01E0D0:  70 6C 6F 74 74 65 64 2E 20 57 68 65 72 65 20 61    plotted. Where a
01E0E0:  20 62 69 74 20 69 6E 20 74 68 65 20 6D 61 73 6B     bit in the mask
01E0F0:  20 69 73 20 73 65 74 20 74 68 65 20 70 69 78 65     is set the pixe
01E100:  6C 20 77 69 6C 6C 20 62 65 20 20 70 6C 6F 74 74    l will be  plott
01E110:  65 64 20 20 69 6E 0D 0A 20 20 20 20 20 20 20 74    ed  in..       t
01E120:  68 65 20 66 6F 72 65 67 72 6F 75 6E 64 20 28 69    he foreground (i
01E130:  6E 20 67 72 61 70 68 69 63 73 20 70 65 6E 20 69    n graphics pen i
01E140:  6E 6B 20 75 73 69 6E 67 20 74 68 65 20 20 67 72    nk using the  gr
01E150:  61 70 68 69 63 73 20 20 77 72 69 74 65 20 20 6D    aphics  write  m
01E160:  6F 64 65 29 2E 0D 0A 20 20 20 20 20 20 20 57 68    ode)...       Wh
01E170:  65 72 65 20 61 20 70 69 78 65 6C 20 69 6E 20 74    ere a pixel in t
01E180:  68 65 20 6D 61 73 6B 20 69 73 20 6E 6F 74 20 73    he mask is not s
01E190:  65 74 20 74 68 65 20 70 69 78 65 6C 20 77 69 6C    et the pixel wil
01E1A0:  6C 20 65 69 74 68 65 72 20 62 65 20 20 70 6C 6F    l either be  plo
01E1B0:  74 74 65 64 0D 0A 20 20 20 20 20 20 20 69 6E 20    tted..       in 
01E1C0:  74 68 65 20 67 72 61 70 68 69 63 73 20 70 61 70    the graphics pap
01E1D0:  65 72 20 69 6E 6B 20 75 73 69 6E 67 20 74 68 65    er ink using the
01E1E0:  20 67 72 61 70 68 69 63 73 20 77 72 69 74 65 20     graphics write 
01E1F0:  6D 6F 64 65 20 6F 72 20 77 69 6C 6C 20 6E 6F 74    mode or will not
01E200:  20 62 65 0D 0A 20 20 20 20 20 20 20 70 6C 6F 74     be..       plot
01E210:  74 65 64 20 61 74 20 61 6C 6C 20 64 65 70 65 6E    ted at all depen
01E220:  64 69 6E 67 20 6F 6E 20 74 68 65 20 67 72 61 70    ding on the grap
01E230:  68 69 63 73 20 62 61 63 6B 67 72 6F 75 6E 64 20    hics background 
01E240:  77 72 69 74 65 20 6D 6F 64 65 2E 0D 0A 0D 0A 20    write mode..... 
01E250:  20 20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64          Entry cond
01E260:  69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20    itions:....     
01E270:  20 20 41 20 63 6F 6E 74 61 69 6E 73 20 74 68 65      A contains the
01E280:  20 6C 69 6E 65 20 6D 61 73 6B 20 74 6F 20 75 73     line mask to us
01E290:  65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69    e.....       Exi
01E2A0:  74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D    t conditions:...
01E2B0:  0A 20 20 20 20 20 20 20 41 6C 6C 20 72 65 67 69    .       All regi
01E2C0:  73 74 65 72 73 20 61 6E 64 20 66 6C 61 67 73 20    sters and flags 
01E2D0:  70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 20 20    preserved.....  
01E2E0:  20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 20         Notes:.... 
01E2F0:  20 20 20 20 20 20 54 68 69 73 20 72 6F 75 74 69          This routi
01E300:  6E 65 20 69 73 20 6E 6F 74 20 61 76 61 69 6C 61    ne is not availa
01E310:  62 6C 65 20 6F 6E 20 56 31 2E 30 20 66 69 72 6D    ble on V1.0 firm
01E320:  77 61 72 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    ware.....       
01E330:  54 68 65 20 6C 69 6E 65 20 6D 61 73 6B 20 69 73    The line mask is
01E340:  20 75 73 65 64 20 73 74 61 72 74 69 6E 67 20 77     used starting w
01E350:  69 74 68 20 62 69 74 20 37 20 61 6E 64 20 72 75    ith bit 7 and ru
01E360:  6E 6E 69 6E 67 20 20 74 6F 20 20 62 69 74 20 20    nning  to  bit  
01E370:  30 20 20 61 6E 64 0D 0A 20 20 20 20 20 20 20 74    0  and..       t
01E380:  68 65 6E 20 73 74 61 72 74 69 6E 67 20 77 69 74    hen starting wit
01E390:  68 20 62 69 74 20 37 20 61 67 61 69 6E 2E 20 53    h bit 7 again. S
01E3A0:  75 63 63 65 73 73 69 76 65 20 6C 69 6E 65 73 20    uccessive lines 
01E3B0:  77 69 6C 6C 20 75 73 65 20 74 68 65 20 6D 61 73    will use the mas
01E3C0:  6B 20 20 61 73 0D 0A 20 20 20 20 20 20 20 69 74    k  as..       it
01E3D0:  20 77 61 73 20 6C 65 66 74 20 77 68 65 6E 20 74     was left when t
01E3E0:  68 65 20 70 72 65 76 69 6F 75 73 20 6C 69 6E 65    he previous line
01E3F0:  20 66 69 6E 69 73 68 65 64 2C 20 74 68 65 20 20     finished, the  
01E400:  6D 61 73 6B 20 20 69 73 20 20 6E 6F 74 20 20 72    mask  is  not  r
01E410:  65 73 65 74 0D 0A 20 20 20 20 20 20 20 62 65 74    eset..       bet
01E420:  77 65 65 6E 20 6C 69 6E 65 73 2E 0D 0A 0D 0A 20    ween lines..... 
01E430:  20 20 20 20 20 20 54 68 65 20 6C 69 6E 65 20 6D          The line m
01E440:  61 73 6B 20 73 70 65 63 69 66 69 65 73 20 68 6F    ask specifies ho
01E450:  77 20 70 69 78 65 6C 73 20 61 72 65 20 74 6F 20    w pixels are to 
01E460:  62 65 20 70 6C 6F 74 74 65 64 2E 20 54 68 69 73    be plotted. This
01E470:  20 6D 65 61 6E 73 20 20 74 68 61 74 0D 0A 20 20     means  that..  
01E480:  20 20 20 20 20 74 68 65 20 73 61 6D 65 20 6D 61         the same ma
01E490:  73 6B 20 77 69 6C 6C 20 67 69 76 65 20 6E 6F 74    sk will give not
01E4A0:  69 63 65 61 62 6C 79 20 64 69 66 66 65 72 65 6E    iceably differen
01E4B0:  74 20 65 66 66 65 63 74 73 20 20 69 6E 20 20 74    t effects  in  t
01E4C0:  68 65 20 20 76 61 72 69 6F 75 73 0D 0A 20 20 20    he  various..   
01E4D0:  20 20 20 20 73 63 72 65 65 6E 20 6D 6F 64 65 73        screen modes
01E4E0:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
01E4F0:  6D 61 73 6B 20 69 73 20 61 70 70 6C 69 65 64 20    mask is applied 
01E500:  74 6F 20 74 68 65 20 6C 69 6E 65 20 72 75 6E 6E    to the line runn
01E510:  69 6E 67 20 66 72 6F 6D 20 6C 65 66 74 20 20 74    ing from left  t
01E520:  6F 20 20 72 69 67 68 74 20 20 6F 72 20 20 66 72    o  right  or  fr
01E530:  6F 6D 0D 0A 20 20 20 20 20 20 20 62 6F 74 74 6F    om..       botto
01E540:  6D 20 74 6F 20 74 6F 70 2C 20 64 65 70 65 6E 64    m to top, depend
01E550:  69 6E 67 20 6F 6E 20 74 68 65 20 61 6E 67 6C 65    ing on the angle
01E560:  20 6F 66 20 20 74 68 65 20 20 6C 69 6E 65 2C 20     of  the  line, 
01E570:  20 69 72 72 65 73 70 65 63 74 69 76 65 20 20 6F     irrespective  o
01E580:  66 0D 0A 20 20 20 20 20 20 20 77 68 69 63 68 20    f..       which 
01E590:  77 61 79 20 72 6F 75 6E 64 20 74 68 65 20 65 6E    way round the en
01E5A0:  64 20 70 6F 69 6E 74 73 20 6F 66 20 74 68 65 20    d points of the 
01E5B0:  6C 69 6E 65 20 61 72 65 20 73 70 65 63 69 66 69    line are specifi
01E5C0:  65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ed.......       
01E5D0:  49 66 20 74 68 65 20 66 69 72 73 74 20 70 69 78    If the first pix
01E5E0:  65 6C 20 6F 66 20 74 68 65 20 6C 69 6E 65 20 69    el of the line i
01E5F0:  73 20 6E 6F 74 20 62 65 69 6E 67 20 70 6C 6F 74    s not being plot
01E600:  74 65 64 20 74 68 65 6E 20 74 68 65 20 6C 69 6E    ted then the lin
01E610:  65 20 6D 61 73 6B 0D 0A 20 20 20 20 20 20 20 69    e mask..       i
01E620:  73 20 61 70 70 6C 69 65 64 20 74 6F 20 74 68 65    s applied to the
01E630:  20 73 65 63 6F 6E 64 20 70 69 78 65 6C 20 6F 66     second pixel of
01E640:  20 74 68 65 20 6C 69 6E 65 20 66 69 72 73 74 2E     the line first.
01E650:  20 49 74 20 69 73 20 6E 6F 74 20 73 74 65 70 70     It is not stepp
01E660:  65 64 20 6F 6E 0D 0A 20 20 20 20 20 20 20 66 6F    ed on..       fo
01E670:  72 20 74 68 65 20 6D 69 73 73 69 6E 67 20 66 69    r the missing fi
01E680:  72 73 74 20 70 69 78 65 6C 2E 0D 0A 0D 0A 0D 0A    rst pixel.......
01E690:  20 20 20 20 20 20 20 54 68 65 20 64 65 66 61 75           The defau
01E6A0:  6C 74 20 6C 69 6E 65 20 6D 61 73 6B 20 20 69 73    lt line mask  is
01E6B0:  20 20 23 46 46 20 20 77 68 69 63 68 20 20 70 6C      #FF  which  pl
01E6C0:  6F 74 20 20 74 68 65 20 20 77 68 6F 6C 65 20 20    ot  the  whole  
01E6D0:  6C 69 6E 65 20 20 69 6E 20 20 74 68 65 0D 0A 20    line  in  the.. 
01E6E0:  20 20 20 20 20 20 66 6F 72 65 67 72 6F 75 6E 64          foreground
01E6F0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65    .......       Re
01E700:  6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A    lated entries:..
01E710:  0D 0A 20 20 20 20 20 20 20 47 52 41 20 44 45 46    ..       GRA DEF
01E720:  41 55 4C 54 0D 0A 20 20 20 20 20 20 20 47 52 41    AULT..       GRA
01E730:  20 4C 49 4E 45 0D 0A 20 20 20 20 20 20 20 47 52     LINE..       GR
01E740:  41 20 4C 49 4E 45 20 41 42 53 4F 4C 55 54 45 0D    A LINE ABSOLUTE.
01E750:  0A 20 20 20 20 20 20 20 47 52 41 20 4C 49 4E 45    .       GRA LINE
01E760:  20 52 45 4C 41 54 49 56 45 0D 0A 20 20 20 20 20     RELATIVE..     
01E770:  20 20 47 52 41 20 53 45 54 20 42 41 43 4B 0D 0A      GRA SET BACK..
01E780:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ........       A
01E790:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
01E7A0:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
01E7B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01E7C0:  20 20 20 20 20 20 20 20 20 20 70 61 67 65 20 31              page 1
01E7D0:  35 2E 32 33 34 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    5.234...........
01E7E0:  0A 0D 0A 20 20 20 20 20 20 20 31 39 37 3A 20 47    ...       197: G
01E7F0:  52 41 20 46 52 4F 4D 20 55 53 45 52 20 20 20 20    RA FROM USER    
01E800:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01E810:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01E820:  20 20 20 20 20 20 20 20 20 20 20 23 42 44 34 46               #BD4F
01E830:  0D 0A 0D 0A 20 20 20 20 20 20 20 43 6F 6E 76 65    ....       Conve
01E840:  72 74 20 75 73 65 72 20 63 6F 6F 72 64 69 6E 61    rt user coordina
01E850:  74 65 73 20 74 6F 20 62 61 73 65 20 63 6F 6F 72    tes to base coor
01E860:  64 69 6E 61 74 65 73 2E 0D 0A 0D 0A 20 20 20 20    dinates.....    
01E870:  20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 20 20       Action:....  
01E880:  20 20 20 20 20 43 6F 6E 76 65 72 74 20 74 68 65         Convert the
01E890:  20 63 6F 6F 72 64 69 6E 61 74 65 73 20 6F 66 20     coordinates of 
01E8A0:  61 20 20 70 6F 69 6E 74 20 20 66 72 6F 6D 20 20    a  point  from  
01E8B0:  75 73 65 72 20 20 63 6F 6F 72 64 69 6E 61 74 65    user  coordinate
01E8C0:  73 20 20 74 6F 20 20 62 61 73 65 0D 0A 20 20 20    s  to  base..   
01E8D0:  20 20 20 20 63 6F 6F 72 64 69 6E 61 74 65 73 20        coordinates 
01E8E0:  72 6F 75 6E 64 69 6E 67 20 61 73 20 61 70 70 72    rounding as appr
01E8F0:  6F 70 72 69 61 74 65 2E 0D 0A 0D 0A 20 20 20 20    opriate.....    
01E900:  20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69       Entry conditi
01E910:  6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 44    ons:....       D
01E920:  45 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 75    E contains the u
01E930:  73 65 72 20 58 20 63 6F 6F 72 64 69 6E 61 74 65    ser X coordinate
01E940:  2E 0D 0A 20 20 20 20 20 20 20 48 4C 20 63 6F 6E    ...       HL con
01E950:  74 61 69 6E 73 20 74 68 65 20 75 73 65 72 20 59    tains the user Y
01E960:  20 63 6F 6F 72 64 69 6E 61 74 65 2E 0D 0A 0D 0A     coordinate.....
01E970:  20 20 20 20 20 20 20 45 78 69 74 20 63 6F 6E 64           Exit cond
01E980:  69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20    itions:....     
01E990:  20 20 44 45 20 63 6F 6E 74 61 69 6E 73 20 74 68      DE contains th
01E9A0:  65 20 62 61 73 65 20 58 20 63 6F 6F 72 64 69 6E    e base X coordin
01E9B0:  61 74 65 2E 0D 0A 20 20 20 20 20 20 20 48 4C 20    ate...       HL 
01E9C0:  63 6F 6E 74 61 69 6E 73 20 74 68 65 20 62 61 73    contains the bas
01E9D0:  65 20 59 20 63 6F 6F 72 64 69 6E 61 74 65 2E 0D    e Y coordinate..
01E9E0:  0A 0D 0A 20 20 20 20 20 20 20 41 46 20 63 6F 72    ...       AF cor
01E9F0:  72 75 70 74 2E 0D 0A 20 20 20 20 20 20 20 41 6C    rupt...       Al
01EA00:  6C 20 6F 74 68 65 72 20 72 65 67 69 73 74 65 72    l other register
01EA10:  73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A    s preserved.....
01EA20:  20 20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D           Notes:...
01EA30:  0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73 20 72    ...       This r
01EA40:  6F 75 74 69 6E 65 20 69 73 20 6E 6F 74 20 61 76    outine is not av
01EA50:  61 69 6C 61 62 6C 65 20 6F 6E 20 56 31 2E 30 20    ailable on V1.0 
01EA60:  66 69 72 6D 77 61 72 65 2E 0D 0A 0D 0A 0D 0A 20    firmware....... 
01EA70:  20 20 20 20 20 20 54 68 65 20 66 6F 6C 6C 6F 77          The follow
01EA80:  69 6E 67 20 66 6F 72 6D 75 6C 61 65 20 61 72 65    ing formulae are
01EA90:  20 75 73 65 64 20 20 74 6F 20 20 63 6F 6E 76 65     used  to  conve
01EAA0:  72 74 20 20 62 65 74 77 65 65 6E 20 20 74 68 65    rt  between  the
01EAB0:  20 20 63 6F 6F 72 64 69 6E 61 74 65 0D 0A 20 20      coordinate..  
01EAC0:  20 20 20 20 20 73 79 73 74 65 6D 73 3A 0D 0A 0D         systems:...
01EAD0:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
01EAE0:  20 20 20 42 61 73 65 20 58 20 20 20 20 3D 20 28       Base X    = (
01EAF0:  4F 72 69 67 69 6E 20 58 20 2B 20 52 6F 75 6E 64    Origin X + Round
01EB00:  65 64 20 58 29 20 2F 20 50 6F 69 6E 74 73 20 70    ed X) / Points p
01EB10:  65 72 20 70 69 78 65 6C 0D 0A 20 20 20 20 20 20    er pixel..      
01EB20:  20 20 20 20 20 20 20 20 20 20 52 6F 75 6E 64 65              Rounde
01EB30:  64 20 58 20 3D 20 28 55 73 65 72 20 58 20 2B 20    d X = (User X + 
01EB40:  52 6F 75 6E 64 20 66 61 63 74 6F 72 29 20 41 4E    Round factor) AN
01EB50:  44 20 52 6F 75 6E 64 20 6D 61 73 6B 0D 0A 0D 0A    D Round mask....
01EB60:  0D 0A 20 20 20 20 20 20 20 57 68 65 72 65 3A 0D    ..       Where:.
01EB70:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    .....           
01EB80:  20 20 20 20 20 20 20 52 6F 75 6E 64 20 66 61 63           Round fac
01EB90:  74 6F 72 20 20 20 20 20 20 20 20 20 20 52 6F 75    tor          Rou
01EBA0:  6E 64 20 6D 61 73 6B 20 20 20 20 20 20 20 20 20    nd mask         
01EBB0:  50 6F 69 6E 74 73 20 70 65 72 20 70 69 78 65 6C    Points per pixel
01EBC0:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
01EBD0:  20 2B 76 65 20 75 73 65 72 20 58 20 2D 76 65 20     +ve user X -ve 
01EBE0:  75 73 65 72 20 58 0D 0A 0D 0A 20 20 20 20 20 20    user X....      
01EBF0:  20 4D 6F 64 65 20 30 3A 20 20 20 20 20 30 20 20     Mode 0:     0  
01EC00:  20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20          0         
01EC10:  20 20 20 20 23 46 46 46 46 20 20 20 20 20 20 20        #FFFF       
01EC20:  20 20 20 20 20 20 20 20 20 20 20 20 31 0D 0A 20                1.. 
01EC30:  20 20 20 20 20 20 4D 6F 64 65 20 31 3A 20 20 20          Mode 1:   
01EC40:  20 20 30 20 20 20 20 20 20 20 20 31 20 20 20 20      0        1    
01EC50:  20 20 20 20 20 20 20 20 20 23 46 46 46 45 20 20             #FFFE  
01EC60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01EC70:  20 32 0D 0A 20 20 20 20 20 20 20 4D 6F 64 65 20     2..       Mode 
01EC80:  32 3A 20 20 20 20 20 30 20 20 20 20 20 20 20 20    2:     0        
01EC90:  33 20 20 20 20 20 20 20 20 20 20 20 20 20 23 46    3             #F
01ECA0:  46 46 43 20 20 20 20 20 20 20 20 20 20 20 20 20    FFC             
01ECB0:  20 20 20 20 20 20 34 0D 0A 0D 0A 20 20 20 20 20          4....     
01ECC0:  20 20 20 20 20 20 20 20 20 20 42 61 73 65 20 59              Base Y
01ECD0:  20 20 20 20 20 3D 20 28 4F 72 69 67 69 6E 20 59         = (Origin Y
01ECE0:  20 2B 20 52 6F 75 6E 64 65 64 20 59 29 20 2F 20     + Rounded Y) / 
01ECF0:  50 6F 69 6E 74 73 20 70 65 72 20 70 69 78 65 6C    Points per pixel
01ED00:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
01ED10:  20 52 6F 75 6E 64 65 64 20 59 20 20 3D 20 28 55     Rounded Y  = (U
01ED20:  73 65 72 20 59 20 2B 20 52 6F 75 6E 64 20 66 61    ser Y + Round fa
01ED30:  63 74 6F 72 29 20 41 4E 44 20 52 6F 75 6E 64 20    ctor) AND Round 
01ED40:  6D 61 73 6B 0D 0A 0D 0A 20 20 20 20 20 20 20 57    mask....       W
01ED50:  68 65 72 65 3A 20 20 20 20 20 20 20 20 20 20 20    here:           
01ED60:  20 20 52 6F 75 6E 64 20 66 61 63 74 6F 72 20 20      Round factor  
01ED70:  20 20 20 20 20 20 3D 20 30 20 66 6F 72 20 2B 76          = 0 for +v
01ED80:  65 20 75 73 65 72 20 59 0D 0A 20 20 20 20 20 20    e user Y..      
01ED90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01EDA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01EDB0:  20 20 20 20 20 20 20 20 3D 20 31 20 66 6F 72 20            = 1 for 
01EDC0:  2D 76 65 20 75 73 65 72 20 59 0D 0A 20 20 20 20    -ve user Y..    
01EDD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01EDE0:  20 20 20 20 20 20 52 6F 75 6E 64 20 6D 61 73 6B          Round mask
01EDF0:  20 20 20 20 20 20 20 20 20 20 3D 20 23 46 46 46              = #FFF
01EE00:  45 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    E..             
01EE10:  20 20 20 20 20 20 20 20 20 20 20 20 20 50 6F 69                 Poi
01EE20:  6E 74 73 20 70 65 72 20 70 69 78 65 6C 20 20 20    nts per pixel   
01EE30:  20 3D 20 32 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A     = 2............
01EE40:  20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43           AMSTRAD C
01EE50:  50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46    PC464/664/6128 F
01EE60:  49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20    IRMWARE         
01EE70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01EE80:  20 20 70 61 67 65 20 31 35 2E 32 33 35 0D 0A 0D      page 15.235...
01EE90:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
01EEA0:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69      This routine i
01EEB0:  73 20 70 61 72 74 69 63 75 6C 61 72 6C 79 20 75    s particularly u
01EEC0:  73 65 66 75 6C 20 77 68 65 6E 20 63 61 6C 6C 69    seful when calli
01EED0:  6E 67 20 53 63 72 65 65 6E 20 70 61 63 6B 20 20    ng Screen pack  
01EEE0:  72 6F 75 74 69 6E 65 73 0D 0A 20 20 20 20 20 20    routines..      
01EEF0:  20 77 68 69 63 68 20 74 61 6B 65 20 74 68 65 20     which take the 
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:  70 6F 73 69 74 69 6F 6E 73 20 6F 66 20 70 6F 69    positions of poi
01F010:  6E 74 73 20 69 6E 20 62 61 73 65 20 63 6F 6F 72    nts in base coor
01F020:  64 69 6E 61 74 65 73 2E 0D 0A 0D 0A 0D 0A 0D 0A    dinates.........
01F030:  0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64    ..       Related
01F040:  20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20     entries:...... 
01F050:  20 20 20 20 20 20 47 52 41 20 53 45 54 20 4F 52          GRA SET OR
01F060:  49 47 49 4E 0D 0A 20 20 20 20 20 20 20 53 43 52    IGIN..       SCR
01F070:  20 44 4F 54 20 50 4F 53 49 54 49 4F 4E 0D 0A 0D     DOT POSITION...
01F080:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
01F090:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
01F0A0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
01F0B0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
01F0C0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
01F0D0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    ............... 
01F0E0:  20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50          AMSTRAD CP
01F0F0:  43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49    C464/664/6128 FI
01F100:  52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20    RMWARE          
01F110:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F120:  20 70 61 67 65 20 31 35 2E 32 33 36 0D 0A 1A 20     page 15.236... 
01F130:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
01F140:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
01F150:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
01F160:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
01F170:  65 20 31 35 2E 32 33 38 0D 0A 1A 6F 6E 6F 75 73    e 15.238...onous
01F180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F3A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F3B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F3C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F3D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F3E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F3F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01F400:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
01F410:  20 20 20 31 39 38 3A 20 47 52 41 20 46 49 4C 4C       198: GRA FILL
01F420:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F430:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F440:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01F450:  20 20 20 20 23 42 44 35 32 0D 0A 0D 0A 20 20 20        #BD52....   
01F460:  20 20 20 20 46 69 6C 6C 20 61 6E 20 61 72 65 61        Fill an area
01F470:  20 6F 66 20 74 68 65 20 73 63 72 65 65 6E 2E 0D     of the screen..
01F480:  0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F 6E    ...       Action
01F490:  3A 0D 0A 0D 0A 20 20 20 20 20 20 20 46 69 6C 6C    :....       Fill
01F4A0:  20 61 6E 20 61 72 65 61 20 6F 66 20 74 68 65 20     an area of the 
01F4B0:  73 63 72 65 65 6E 20 63 6F 6E 74 61 69 6E 69 6E    screen containin
01F4C0:  67 20 74 68 65 20 20 63 75 72 72 65 6E 74 20 20    g the  current  
01F4D0:  67 72 61 70 68 69 63 73 20 20 70 6F 73 69 74 69    graphics  positi
01F4E0:  6F 6E 0D 0A 20 20 20 20 20 20 20 61 6E 64 20 62    on..       and b
01F4F0:  6F 75 6E 64 65 64 20 62 79 20 74 68 65 20 65 64    ounded by the ed
01F500:  67 65 20 6F 66 20 74 68 65 20 77 69 6E 64 6F 77    ge of the window
01F510:  20 61 6E 64 20 70 69 78 65 6C 73 20 73 65 74 20     and pixels set 
01F520:  74 6F 20 74 68 65 20 70 65 6E 20 69 6E 6B 2E 0D    to the pen ink..
01F530:  0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20    ...       Entry 
01F540:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20    conditions:.... 
01F550:  20 20 20 20 20 20 41 20 63 6F 6E 74 61 69 6E 73          A contains
01F560:  20 74 68 65 20 28 75 6E 65 6E 63 6F 64 65 64 29     the (unencoded)
01F570:  20 69 6E 6B 20 74 6F 20 66 69 6C 6C 20 74 68 65     ink to fill the
01F580:  20 61 72 65 61 20 77 69 74 68 2E 0D 0A 20 20 20     area with...   
01F590:  20 20 20 20 48 4C 20 63 6F 6E 74 61 69 6E 73 20        HL contains 
01F5A0:  74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20 61    the address of a
01F5B0:  20 62 75 66 66 65 72 2E 0D 0A 20 20 20 20 20 20     buffer...      
01F5C0:  20 44 45 20 63 6F 6E 74 61 69 6E 73 20 74 68 65     DE contains the
01F5D0:  20 6C 65 6E 67 74 68 20 6F 66 20 74 68 65 20 62     length of the b
01F5E0:  75 66 66 65 72 2E 0D 0A 0D 0A 20 20 20 20 20 20    uffer.....      
01F5F0:  20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73     Exit conditions
01F600:  3A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74    :....       If t
01F610:  68 65 20 61 72 65 61 20 77 61 73 20 66 69 6C 6C    he area was fill
01F620:  65 64 20 73 75 63 63 65 73 73 66 75 6C 6C 79 3A    ed successfully:
01F630:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
01F640:  20 20 20 20 43 61 72 72 79 20 74 72 75 65 2E 0D        Carry true..
01F650:  0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74 68 65    ...       If the
01F660:  20 61 72 65 61 20 77 61 73 20 6E 6F 74 20 66 69     area was not fi
01F670:  6C 6C 65 64 3A 0D 0A 0D 0A 20 20 20 20 20 20 20    lled:....       
01F680:  20 20 20 20 20 20 20 20 20 43 61 72 72 79 20 66             Carry f
01F690:  61 6C 73 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    alse.....       
01F6A0:  41 6C 77 61 79 73 3A 0D 0A 0D 0A 20 20 20 20 20    Always:....     
01F6B0:  20 20 20 20 20 20 20 20 20 20 20 41 2C 20 42 43               A, BC
01F6C0:  2C 20 44 45 2C 20 48 4C 20 61 6E 64 20 6F 74 68    , DE, HL and oth
01F6D0:  65 72 20 66 6C 61 67 73 20 63 6F 72 72 75 70 74    er flags corrupt
01F6E0:  2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
01F6F0:  20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67       All other reg
01F700:  69 73 74 65 72 73 20 70 72 65 73 65 72 76 65 64    isters preserved
01F710:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65    .....       Note
01F720:  73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69    s:....       Thi
01F730:  73 20 72 6F 75 74 69 6E 65 20 69 73 20 6E 6F 74    s routine is not
01F740:  20 61 76 61 69 6C 61 62 6C 65 20 6F 6E 20 56 31     available on V1
01F750:  2E 30 20 66 69 72 6D 77 61 72 65 2E 0D 0A 0D 0A    .0 firmware.....
01F760:  20 20 20 20 20 20 20 54 68 65 20 66 69 6C 6C 69           The filli
01F770:  6E 67 20 61 6C 67 6F 72 69 74 68 6D 20 74 72 65    ng algorithm tre
01F780:  61 74 73 20 70 69 78 65 6C 73 20 73 65 74 20 74    ats pixels set t
01F790:  6F 20 74 68 65 20 20 63 75 72 72 65 6E 74 20 20    o the  current  
01F7A0:  70 65 6E 20 20 69 6E 6B 20 20 61 6E 64 0D 0A 20    pen  ink  and.. 
01F7B0:  20 20 20 20 20 20 70 69 78 65 6C 73 20 73 65 74          pixels set
01F7C0:  20 74 6F 20 74 68 65 20 69 6E 6B 20 74 68 61 74     to the ink that
01F7D0:  20 69 73 20 62 65 69 6E 67 20 75 73 65 64 20 66     is being used f
01F7E0:  6F 72 20 66 69 6C 6C 69 6E 67 20 61 73 20 64 65    or filling as de
01F7F0:  6C 69 6D 69 74 65 72 73 20 20 6F 66 0D 0A 20 20    limiters  of..  
01F800:  20 20 20 20 20 74 68 65 20 65 64 67 65 20 6F 66         the edge of
01F810:  20 74 68 65 20 61 72 65 61 2E 20 54 68 65 20 66     the area. The f
01F820:  69 6C 6C 20 69 6E 6B 20 61 6E 64 20 74 68 65 20    ill ink and the 
01F830:  70 65 6E 20 69 6E 6B 20 20 6D 61 79 20 20 62 65    pen ink  may  be
01F840:  20 20 74 68 65 20 20 73 61 6D 65 0D 0A 20 20 20      the  same..   
01F850:  20 20 20 20 69 6E 6B 2E 0D 0A 0D 0A 20 20 20 20        ink.....    
01F860:  20 20 20 50 69 78 65 6C 73 20 74 68 61 74 20 61       Pixels that a
01F870:  72 65 20 66 69 6C 6C 65 64 20 61 72 65 20 73 65    re filled are se
01F880:  74 20 74 6F 20 74 68 65 20 66 69 6C 6C 20 20 69    t to the fill  i
01F890:  6E 6B 2E 20 20 54 68 65 20 20 67 72 61 70 68 69    nk.  The  graphi
01F8A0:  63 73 20 20 77 72 69 74 65 0D 0A 20 20 20 20 20    cs  write..     
01F8B0:  20 20 6D 6F 64 65 20 64 6F 65 73 20 6E 6F 74 20      mode does not 
01F8C0:  61 66 66 65 63 74 20 74 68 65 20 77 61 79 20 70    affect the way p
01F8D0:  69 78 65 6C 73 20 61 72 65 20 77 72 69 74 74 65    ixels are writte
01F8E0:  6E 20 77 68 65 6E 20 66 69 6C 6C 69 6E 67 2E 0D    n when filling..
01F8F0:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 66 69    ...       The fi
01F900:  6C 6C 69 6E 67 20 61 6C 67 6F 72 69 74 68 6D 20    lling algorithm 
01F910:  6F 6E 6C 79 20 6D 6F 76 65 73 20 75 70 2C 20 64    only moves up, d
01F920:  6F 77 6E 2C 20 72 69 67 68 74 20 6F 72 20 6C 65    own, right or le
01F930:  66 74 2E 20 49 74 20 64 6F 65 73 20 20 6E 6F 74    ft. It does  not
01F940:  0D 0A 20 20 20 20 20 20 20 6D 6F 76 65 20 64 69    ..       move di
01F950:  61 67 6F 6E 61 6C 6C 79 20 61 6E 64 20 73 6F 20    agonally and so 
01F960:  74 68 65 20 61 6C 67 6F 72 69 74 68 6D 20 77 69    the algorithm wi
01F970:  6C 6C 20 6E 6F 74 20 27 65 73 63 61 70 65 27 20    ll not 'escape' 
01F980:  74 68 72 6F 75 67 68 20 20 61 20 20 67 61 70 0D    through  a  gap.
01F990:  0A 20 20 20 20 20 20 20 62 65 74 77 65 65 6E 20    .       between 
01F9A0:  74 68 65 20 65 64 67 65 20 70 69 78 65 6C 73 20    the edge pixels 
01F9B0:  74 68 61 74 20 61 72 65 20 64 69 61 67 6F 6E 61    that are diagona
01F9C0:  6C 6C 79 20 61 64 6A 61 63 65 6E 74 2E 20 54 68    lly adjacent. Th
01F9D0:  69 73 20 6D 65 61 6E 73 20 20 74 68 61 74 0D 0A    is means  that..
01F9E0:  20 20 20 20 20 20 20 74 68 65 20 65 64 67 65 20           the edge 
01F9F0:  63 61 6E 20 62 65 20 64 65 6C 69 6D 69 74 65 64    can be delimited
01FA00:  20 75 73 69 6E 67 20 74 68 65 20 6E 6F 72 6D 61     using the norma
01FA10:  6C 20 6C 69 6E 65 73 20 64 72 61 77 6E 20 62 79    l lines drawn by
01FA20:  20 74 68 65 20 47 72 61 70 68 69 63 73 0D 0A 20     the Graphics.. 
01FA30:  20 20 20 20 20 20 56 44 55 2E 0D 0A 0D 0A 20 20          VDU.....  
01FA40:  20 20 20 20 20 54 68 65 20 66 69 6C 6C 69 6E 67         The filling
01FA50:  20 61 6C 67 6F 72 69 74 68 6D 20 61 76 6F 69 64     algorithm avoid
01FA60:  73 20 72 65 63 75 72 73 69 6E 67 2E 20 49 6E 73    s recursing. Ins
01FA70:  74 65 61 64 20 69 74 20 73 74 6F 72 65 73 20 27    tead it stores '
01FA80:  69 6E 74 65 72 65 73 74 69 6E 67 0D 0A 20 20 20    interesting..   
01FA90:  20 20 20 20 70 6F 69 6E 74 73 27 2C 20 70 6C 61        points', pla
01FAA0:  63 65 73 20 74 68 61 74 20 74 68 65 20 61 6C 67    ces that the alg
01FAB0:  6F 72 69 74 68 6D 20 68 61 73 20 63 68 6F 73 65    orithm has chose
01FAC0:  6E 20 6F 6E 65 20 72 6F 75 74 65 20 20 74 6F 20    n one route  to 
01FAD0:  20 66 69 6C 6C 20 20 62 75 74 0D 0A 20 20 20 20     fill  but..    
01FAE0:  20 20 20 6D 69 67 68 74 20 68 61 76 65 20 63 68       might have ch
01FAF0:  6F 73 65 6E 20 61 6E 6F 74 68 65 72 20 72 6F 75    osen another rou
01FB00:  74 65 2C 20 69 6E 20 74 68 65 20 62 75 66 66 65    te, in the buffe
01FB10:  72 20 73 75 70 70 6C 69 65 64 20 62 79 20 20 74    r supplied by  t
01FB20:  68 65 20 20 75 73 65 72 2E 0D 0A 20 20 20 20 20    he  user...     
01FB30:  20 20 54 68 65 20 62 75 66 66 65 72 20 6D 61 79      The buffer may
01FB40:  20 6C 69 65 20 61 6E 79 77 68 65 72 65 20 69 6E     lie anywhere in
01FB50:  20 52 41 4D 2E 20 45 61 63 68 20 20 27 69 6E 74     RAM. Each  'int
01FB60:  65 72 65 73 74 69 6E 67 20 20 70 6F 69 6E 74 27    eresting  point'
01FB70:  20 20 73 74 6F 72 65 64 0D 0A 20 20 20 20 20 20      stored..      
01FB80:  20 75 73 65 73 20 37 20 62 79 74 65 73 20 6F 66     uses 7 bytes of
01FB90:  20 74 68 65 20 62 75 66 66 65 72 20 61 6E 64 20     the buffer and 
01FBA0:  74 68 65 72 65 20 69 73 20 61 6E 20 6F 76 65 72    there is an over
01FBB0:  68 65 61 64 20 6F 66 20 31 20 62 79 74 65 20 75    head of 1 byte u
01FBC0:  73 65 64 20 20 74 6F 0D 0A 20 20 20 20 20 20 20    sed  to..       
01FBD0:  6D 61 72 6B 20 74 68 65 20 65 6E 64 20 6F 66 20    mark the end of 
01FBE0:  74 68 65 20 62 75 66 66 65 72 2E 20 54 68 75 73    the buffer. Thus
01FBF0:  20 61 20 62 75 66 66 65 72 20 36 34 20 62 79 74     a buffer 64 byt
01FC00:  65 73 20 6C 6F 6E 67 20 77 69 6C 6C 20 20 61 6C    es long will  al
01FC10:  6C 6F 77 20 20 39 0D 0A 20 20 20 20 20 20 20 27    low  9..       '
01FC20:  69 6E 74 65 72 65 73 74 69 6E 67 20 70 6F 69 6E    interesting poin
01FC30:  74 73 27 20 74 6F 20 62 65 20 20 73 74 6F 72 65    ts' to be  store
01FC40:  64 20 20 77 68 69 63 68 20 20 73 68 6F 75 6C 64    d  which  should
01FC50:  20 20 62 65 20 20 73 75 66 66 69 63 69 65 6E 74      be  sufficient
01FC60:  20 20 66 6F 72 0D 0A 20 20 20 20 20 20 20 66 69      for..       fi
01FC70:  6C 6C 69 6E 67 20 6D 6F 73 74 20 73 69 6D 70 6C    lling most simpl
01FC80:  65 20 61 72 65 61 73 2E 0D 0A 0D 0A 0D 0A 0D 0A    e areas.........
01FC90:  20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43           AMSTRAD C
01FCA0:  50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46    PC464/664/6128 F
01FCB0:  49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20    IRMWARE         
01FCC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
01FCD0:  20 20 70 61 67 65 20 31 35 2E 32 33 37 0D 0A 0D      page 15.237...
01FCE0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
01FCF0:  20 20 54 68 65 20 61 72 65 61 20 74 6F 20 62 65      The area to be
01FD00:  20 66 69 6C 6C 65 64 20 6D 61 79 20 62 65 20 61     filled may be a
01FD10:  73 20 63 6F 6D 70 6C 69 63 61 74 65 64 20 61 73    s complicated as
01FD20:  20 72 65 71 75 69 72 65 64 20 62 75 74 20 20 74     required but  t
01FD30:  68 65 20 20 6D 6F 72 65 0D 0A 20 20 20 20 20 20    he  more..      
01FD40:  20 63 6F 6D 70 6C 69 63 61 74 65 64 20 74 68 65     complicated the
01FD50:  20 73 68 61 70 65 20 74 68 65 20 6C 6F 6E 67 65     shape the longe
01FD60:  72 20 74 68 65 20 27 69 6E 74 65 72 65 73 74 69    r the 'interesti
01FD70:  6E 67 20 70 6F 69 6E 74 27 20 62 75 66 66 65 72    ng point' buffer
01FD80:  20 20 6E 65 65 64 73 0D 0A 20 20 20 20 20 20 20      needs..       
01FD90:  74 6F 20 62 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    to be.......    
01FDA0:  20 20 20 54 68 65 20 66 61 69 6C 75 72 65 20 72       The failure r
01FDB0:  65 74 75 72 6E 20 66 72 6F 6D 20 74 68 69 73 20    eturn from this 
01FDC0:  72 6F 75 74 69 6E 65 20 20 63 61 6E 20 20 6F 63    routine  can  oc
01FDD0:  63 75 72 20 20 66 6F 72 20 20 74 68 72 65 65 20    cur  for  three 
01FDE0:  20 72 65 61 73 6F 6E 73 2E 0D 0A 20 20 20 20 20     reasons...     
01FDF0:  20 20 46 69 72 73 74 6C 79 2C 20 74 68 65 20 63      Firstly, the c
01FE00:  75 72 72 65 6E 74 20 67 72 61 70 68 69 63 73 20    urrent graphics 
01FE10:  70 6F 73 69 74 69 6F 6E 20 20 6D 61 79 20 20 62    position  may  b
01FE20:  65 20 20 6F 75 74 73 69 64 65 20 20 74 68 65 20    e  outside  the 
01FE30:  20 77 69 6E 64 6F 77 2E 0D 0A 20 20 20 20 20 20     window...      
01FE40:  20 53 65 63 6F 6E 64 6C 79 2C 20 74 68 65 20 70     Secondly, the p
01FE50:  69 78 65 6C 20 61 74 20 74 68 65 20 63 75 72 72    ixel at the curr
01FE60:  65 6E 74 20 67 72 61 70 68 69 63 73 20 70 6F 73    ent graphics pos
01FE70:  69 74 69 6F 6E 20 6D 61 79 20 62 65 20 65 64 67    ition may be edg
01FE80:  65 20 20 28 70 65 6E 0D 0A 20 20 20 20 20 20 20    e  (pen..       
01FE90:  6F 72 20 66 69 6C 6C 20 69 6E 6B 29 2E 20 49 6E    or fill ink). In
01FEA0:  20 74 68 65 73 65 20 63 61 73 65 73 20 74 68 65     these cases the
01FEB0:  20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 72 65     routine will re
01FEC0:  74 75 72 6E 20 20 77 69 74 68 6F 75 74 20 20 66    turn  without  f
01FED0:  69 6C 6C 69 6E 67 0D 0A 20 20 20 20 20 20 20 61    illing..       a
01FEE0:  6E 79 74 68 69 6E 67 2E 20 54 68 69 72 64 6C 79    nything. Thirdly
01FEF0:  20 74 68 65 20 61 6C 67 6F 72 69 74 68 6D 20 6D     the algorithm m
01FF00:  61 79 20 65 78 68 61 75 73 74 20 74 68 65 20 20    ay exhaust the  
01FF10:  27 69 6E 74 65 72 65 73 74 69 6E 67 20 20 70 6F    'interesting  po
01FF20:  69 6E 74 27 0D 0A 20 20 20 20 20 20 20 62 75 66    int'..       buf
01FF30:  66 65 72 20 69 6E 20 77 68 69 63 68 20 63 61 73    fer in which cas
01FF40:  65 20 73 6F 6D 65 20 70 6F 72 74 69 6F 6E 20 6F    e some portion o
01FF50:  66 20 74 68 65 20 61 72 65 61 20 77 69 6C 6C 20    f the area will 
01FF60:  6E 6F 74 20 62 65 20 66 69 6C 6C 65 64 2E 0D 0A    not be filled...
01FF70:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52    ........       R
01FF80:  65 6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D    elated entries:.
01FF90:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 47 52 41 20    .....       GRA 
01FFA0:  53 45 54 20 50 45 4E 0D 0A 0D 0A 0D 0A 0D 0A 0D    SET PEN.........
01FFB0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
01FFC0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
01FFD0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
01FFE0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
01FFF0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
020000:  41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36    AMSTRAD CPC464/6
020010:  36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45    64/6128 FIRMWARE
020020:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
020030:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
020040:  31 35 2E 32 33 38 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    15.238..........
020050:  0D 0A 0D 0A 20 20 20 20 20 20 20 31 39 39 3A 20    ....       199: 
020060:  53 43 52 20 53 45 54 20 50 4F 53 49 54 49 4F 4E    SCR SET POSITION
020070:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
020080:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
020090:  20 20 20 20 20 20 20 20 20 20 20 20 23 42 44 35                #BD5
0200A0:  35 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 53 65    5......       Se
0200B0:  74 20 74 68 65 20 6C 6F 63 61 74 69 6F 6E 20 6F    t the location o
0200C0:  66 20 74 68 65 20 73 63 72 65 65 6E 20 6D 65 6D    f the screen mem
0200D0:  6F 72 79 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ory.......      
0200E0:  20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20     Action:......  
0200F0:  20 20 20 20 20 54 65 6C 6C 20 74 68 65 20 53 63         Tell the Sc
020100:  72 65 65 6E 20 70 61 63 6B 20 74 68 65 20 73 63    reen pack the sc
020110:  72 65 65 6E 20 62 61 73 65 20 61 6E 64 20 74 68    reen base and th
020120:  65 20 20 6F 66 66 73 65 74 20 20 77 69 74 68 6F    e  offset  witho
020130:  75 74 20 20 74 65 6C 6C 69 6E 67 0D 0A 20 20 20    ut  telling..   
020140:  20 20 20 20 74 68 65 20 68 61 72 64 77 61 72 65        the hardware
020150:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E    .......       En
020160:  74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D    try conditions:.
020170:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 20 63 6F    .....       A co
020180:  6E 74 61 69 6E 73 20 74 68 65 20 73 63 72 65 65    ntains the scree
020190:  6E 20 62 61 73 65 2E 0D 0A 20 20 20 20 20 20 20    n base...       
0201A0:  48 4C 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20    HL contains the 
0201B0:  73 63 72 65 65 6E 20 6F 66 66 73 65 74 2E 0D 0A    screen offset...
0201C0:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20    ....       Exit 
0201D0:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D    conditions:.....
0201E0:  0A 20 20 20 20 20 20 20 41 20 63 6F 6E 74 61 69    .       A contai
0201F0:  6E 73 20 74 68 65 20 73 63 72 65 65 6E 20 62 61    ns the screen ba
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:  73 65 20 6D 61 73 6B 65 64 20 61 73 20 72 65 71    se masked as req
020310:  75 69 72 65 64 2E 0D 0A 20 20 20 20 20 20 20 48    uired...       H
020320:  4C 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 73    L contains the s
020330:  63 72 65 65 6E 20 6F 66 66 73 65 74 20 6D 61 73    creen offset mas
020340:  6B 65 64 20 61 73 20 72 65 71 75 69 72 65 64 2E    ked as required.
020350:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 46 6C 61    ......       Fla
020360:  67 73 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20 20    gs corrupt...   
020370:  20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72 65        All other re
020380:  67 69 73 74 65 72 73 20 70 72 65 73 65 72 76 65    gisters preserve
020390:  64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E    d.......       N
0203A0:  6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    otes:......     
0203B0:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69      This routine i
0203C0:  73 20 6E 6F 74 20 61 76 61 69 6C 61 62 6C 65 20    s not available 
0203D0:  6F 6E 20 56 31 2E 30 20 66 69 72 6D 77 61 72 65    on V1.0 firmware
0203E0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
0203F0:  69 73 20 72 6F 75 74 69 6E 65 20 63 68 61 6E 67    is routine chang
020400:  65 73 20 74 68 65 20 6C 6F 63 61 74 69 6F 6E 20    es the location 
020410:  6F 66 20 74 68 65 20 73 63 72 65 65 6E 20 77 69    of the screen wi
020420:  74 68 6F 75 74 20 6E 6F 74 69 66 79 69 6E 67 20    thout notifying 
020430:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 68 61 72     the..       har
020440:  64 77 61 72 65 20 6F 66 20 74 68 65 20 63 68 61    dware of the cha
020450:  6E 67 65 2E 20 54 68 69 73 20 65 66 66 65 63 74    nge. This effect
020460:  20 6D 61 79 20 62 65 20 75 73 65 64 20 74 6F 20     may be used to 
020470:  63 6F 6E 73 74 72 75 63 74 20 61 20 20 73 65 63    construct a  sec
020480:  6F 6E 64 0D 0A 20 20 20 20 20 20 20 73 63 72 65    ond..       scre
020490:  65 6E 20 6F 66 20 74 65 78 74 20 6F 72 20 67 72    en of text or gr
0204A0:  61 70 68 69 63 73 20 77 69 74 68 6F 75 74 20 63    aphics without c
0204B0:  6C 65 61 72 69 6E 67 20 74 68 65 20 70 72 65 76    learing the prev
0204C0:  69 6F 75 73 20 73 63 72 65 65 6E 2E 20 20 57 68    ious screen.  Wh
0204D0:  65 6E 0D 0A 20 20 20 20 20 20 20 74 68 65 20 6E    en..       the n
0204E0:  65 77 20 73 63 72 65 65 6E 20 68 61 73 20 62 65    ew screen has be
0204F0:  65 6E 20 63 6F 6E 73 74 72 75 63 74 65 64 20 74    en constructed t
020500:  68 65 20 68 61 72 64 77 61 72 65 20 6D 61 79 20    he hardware may 
020510:  62 65 20 20 6E 6F 74 69 66 69 65 64 20 20 61 6E    be  notified  an
020520:  64 0D 0A 20 20 20 20 20 20 20 74 68 65 20 70 69    d..       the pi
020530:  63 74 75 72 65 20 77 69 6C 6C 20 61 70 70 65 61    cture will appea
020540:  72 20 69 6E 73 74 61 6E 74 6C 79 2E 0D 0A 0D 0A    r instantly.....
020550:  20 20 20 20 20 20 20 49 6E 20 67 65 6E 65 72 61           In genera
020560:  6C 20 74 68 65 20 75 73 65 72 20 69 73 20 61 64    l the user is ad
020570:  76 69 73 65 64 20 74 6F 20 73 65 74 20 74 68 65    vised to set the
020580:  20 62 61 73 65 20 75 73 69 6E 67 20 53 43 52 20     base using SCR 
020590:  53 45 54 20 42 41 53 45 20 20 61 6E 64 0D 0A 20    SET BASE  and.. 
0205A0:  20 20 20 20 20 20 74 68 65 20 6F 66 66 73 65 74          the offset
0205B0:  20 75 73 69 6E 67 20 53 43 52 20 53 45 54 20 4F     using SCR SET O
0205C0:  46 46 53 45 54 2E 0D 0A 0D 0A 20 20 20 20 20 20    FFSET.....      
0205D0:  20 54 68 65 20 73 63 72 65 65 6E 20 62 61 73 65     The screen base
0205E0:  20 69 73 20 6D 61 73 6B 65 64 20 77 69 74 68 20     is masked with 
0205F0:  23 43 30 20 61 6E 64 20 74 68 65 20 73 63 72 65    #C0 and the scre
020600:  65 6E 20 6F 66 66 73 65 74 20 77 69 74 68 20 23    en offset with #
020610:  30 37 46 45 20 74 6F 0D 0A 20 20 20 20 20 20 20    07FE to..       
020620:  6D 61 6B 65 20 74 68 65 20 76 61 6C 75 65 73 20    make the values 
020630:  6C 65 67 61 6C 2E 0D 0A 0D 0A 20 20 20 20 20 20    legal.....      
020640:  20 52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73     Related entries
020650:  3A 0D 0A 0D 0A 20 20 20 20 20 20 20 53 43 52 20    :....       SCR 
020660:  47 45 54 20 4C 4F 43 41 54 49 4F 4E 0D 0A 20 20    GET LOCATION..  
020670:  20 20 20 20 20 53 43 52 20 53 45 54 20 42 41 53         SCR SET BAS
020680:  45 0D 0A 20 20 20 20 20 20 20 53 43 52 20 53 45    E..       SCR SE
020690:  54 20 4F 46 46 53 45 54 0D 0A 0D 0A 0D 0A 0D 0A    T OFFSET........
0206A0:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52    ....       AMSTR
0206B0:  41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31    AD CPC464/664/61
0206C0:  32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20    28 FIRMWARE     
0206D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0206E0:  20 20 20 20 20 20 70 61 67 65 20 31 35 2E 32 33          page 15.23
0206F0:  39 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    9.............. 
020700:  20 20 20 20 20 20 32 30 30 3A 20 4D 43 20 50 52          200: MC PR
020710:  49 4E 54 20 54 52 41 4E 53 4C 41 54 49 4F 4E 20    INT TRANSLATION 
020720:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
020730:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
020740:  20 20 20 20 20 20 20 23 42 44 35 38 0D 0A 0D 0A           #BD58....
020750:  20 20 20 20 20 20 20 53 65 74 20 74 68 65 20 70           Set the p
020760:  72 69 6E 74 65 72 20 74 72 61 6E 73 6C 61 74 69    rinter translati
020770:  6F 6E 20 74 61 62 6C 65 2E 0D 0A 0D 0A 20 20 20    on table.....   
020780:  20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 20        Action:.... 
020790:  20 20 20 20 20 20 53 65 74 20 68 6F 77 20 63 68          Set how ch
0207A0:  61 72 61 63 74 65 72 73 20 61 72 65 20 74 6F 20    aracters are to 
0207B0:  62 65 20 20 74 72 61 6E 73 6C 61 74 65 64 20 20    be  translated  
0207C0:  62 65 66 6F 72 65 20 20 62 65 69 6E 67 20 20 73    before  being  s
0207D0:  65 6E 74 20 20 74 6F 20 20 74 68 65 0D 0A 20 20    ent  to  the..  
0207E0:  20 20 20 20 20 70 72 69 6E 74 65 72 2E 0D 0A 0D         printer....
0207F0:  0A 20 20 20 20 20 20 20 45 6E 74 72 79 20 63 6F    .       Entry co
020800:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20    nditions:....   
020810:  20 20 20 20 48 4C 20 63 6F 6E 74 61 69 6E 73 20        HL contains 
020820:  74 68 65 20 61 64 64 72 65 73 73 20 6F 66 20 74    the address of t
020830:  68 65 20 74 61 62 6C 65 2E 0D 0A 0D 0A 0D 0A 0D    he table........
020840:  0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F 6E    .       Exit con
020850:  64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20    ditions:....    
020860:  20 20 20 49 66 20 74 68 65 20 74 61 62 6C 65 20       If the table 
020870:  69 73 20 74 6F 6F 20 6C 6F 6E 67 20 28 6D 6F 72    is too long (mor
020880:  65 20 74 68 61 6E 20 32 30 20 65 6E 74 72 69 65    e than 20 entrie
020890:  73 29 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20    s):....         
0208A0:  20 20 20 20 20 20 20 43 61 72 72 79 20 66 61 6C           Carry fal
0208B0:  73 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66    se.....       If
0208C0:  20 74 68 65 20 74 61 62 6C 65 20 69 73 20 4F 4B     the table is OK
0208D0:  3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20    :....           
0208E0:  20 20 20 20 20 43 61 72 72 79 20 74 72 75 65 2E         Carry true.
0208F0:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 6C 77 61 79    ....       Alway
020900:  73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20    s:....          
020910:  20 20 20 20 20 20 41 2C 20 42 43 2C 20 44 45 2C          A, BC, DE,
020920:  20 48 4C 20 61 6E 64 20 6F 74 68 65 72 20 66 6C     HL and other fl
020930:  61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20    ags corrupt...  
020940:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 6C                  Al
020950:  6C 20 6F 74 68 65 72 20 72 65 67 69 73 74 65 72    l other register
020960:  73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A    s preserved.....
020970:  20 20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D           Notes:...
020980:  0A 20 20 20 20 20 20 20 54 68 69 73 20 72 6F 75    .       This rou
020990:  74 69 6E 65 20 69 73 20 6E 6F 74 20 61 76 61 69    tine is not avai
0209A0:  6C 61 62 6C 65 20 6F 6E 20 56 31 2E 30 20 66 69    lable on V1.0 fi
0209B0:  72 6D 77 61 72 65 2E 0D 0A 0D 0A 20 20 20 20 20    rmware.....     
0209C0:  20 20 54 68 65 20 73 75 70 70 6C 69 65 64 20 74      The supplied t
0209D0:  72 61 6E 73 6C 61 74 69 6F 6E 20 74 61 62 6C 65    ranslation table
0209E0:  20 6D 61 79 20 6C 69 65 20 61 6E 79 77 68 65 72     may lie anywher
0209F0:  65 20 69 6E 20 52 41 4D 2E 20 20 54 68 69 73 20    e in RAM.  This 
020A00:  20 72 6F 75 74 69 6E 65 0D 0A 20 20 20 20 20 20     routine..      
020A10:  20 63 6F 70 69 65 73 20 74 68 65 20 74 61 62 6C     copies the tabl
020A20:  65 20 61 6E 64 20 73 6F 20 74 68 65 20 6D 65 6D    e and so the mem
020A30:  6F 72 79 20 6D 61 79 20 62 65 20 72 65 2D 75 73    ory may be re-us
020A40:  65 64 20 69 66 20 72 65 71 75 69 72 65 64 2E 0D    ed if required..
020A50:  0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 66 6F    ...       The fo
020A60:  72 6D 61 74 20 6F 66 20 74 68 65 20 74 61 62 6C    rmat of the tabl
020A70:  65 20 69 73 20 61 73 20 66 6F 6C 6C 6F 77 73 3A    e is as follows:
020A80:  0D 0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    ....            
020A90:  20 20 20 20 42 79 74 65 20 30 3A 20 20 20 20 20        Byte 0:     
020AA0:  20 20 20 20 20 20 20 20 4E 75 6D 62 65 72 20 6F            Number o
020AB0:  66 20 65 6E 74 72 69 65 73 20 69 6E 20 74 68 65    f entries in the
020AC0:  20 74 61 62 6C 65 20 28 4E 29 2E 0D 0A 20 20 20     table (N)...   
020AD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 79 74                 Byt
020AE0:  65 73 20 31 2C 32 3A 20 20 20 20 20 20 20 20 20    es 1,2:         
020AF0:  20 45 6E 74 72 79 20 31 0D 0A 20 20 20 20 20 20     Entry 1..      
020B00:  20 20 20 20 20 20 20 20 20 20 2E 2E 2E 20 20 20              ...   
020B10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 2E 2E                  ..
020B20:  2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
020B30:  20 20 20 42 79 74 65 73 20 32 4E 2D 31 2C 32 4E       Bytes 2N-1,2N
020B40:  3A 20 20 20 20 20 20 45 6E 74 72 79 20 4E 0D 0A    :      Entry N..
020B50:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 66 6F 72    ..       The for
020B60:  6D 61 74 20 6F 66 20 65 61 63 68 20 74 77 6F 20    mat of each two 
020B70:  62 79 74 65 20 65 6E 74 72 79 20 69 73 20 61 73    byte entry is as
020B80:  20 66 6F 6C 6C 6F 77 73 3A 0D 0A 0D 0A 20 20 20     follows:....   
020B90:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 79 74                 Byt
020BA0:  65 20 30 3A 20 20 20 20 20 20 20 20 20 20 20 20    e 0:            
020BB0:  20 43 68 61 72 61 63 74 65 72 20 74 6F 20 62 65     Character to be
020BC0:  20 74 72 61 6E 73 6C 61 74 65 64 2E 0D 0A 20 20     translated...  
020BD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 79                  By
020BE0:  74 65 20 31 3A 20 20 20 20 20 20 20 20 20 20 20    te 1:           
020BF0:  20 20 43 68 61 72 61 63 74 65 72 20 74 6F 20 74      Character to t
020C00:  72 61 6E 73 6C 61 74 65 20 74 6F 2E 0D 0A 0D 0A    ranslate to.....
020C10:  20 20 20 20 20 20 20 49 66 20 74 68 65 20 63 68           If the ch
020C20:  61 72 61 63 74 65 72 20 74 6F 20 74 72 61 6E 73    aracter to trans
020C30:  6C 61 74 65 20 74 6F 20 69 73 20 23 46 46 20 74    late to is #FF t
020C40:  68 65 6E 20 74 68 65 20 63 68 61 72 61 63 74 65    hen the characte
020C50:  72 20 69 73 20 20 69 67 6E 6F 72 65 64 0D 0A 20    r is  ignored.. 
020C60:  20 20 20 20 20 20 61 6E 64 20 6E 6F 74 68 69 6E          and nothin
020C70:  67 20 69 73 20 73 65 6E 74 20 74 6F 20 74 68 65    g is sent to the
020C80:  20 70 72 69 6E 74 65 72 2E 0D 0A 20 20 20 20 20     printer...     
020C90:  20 20 54 72 61 6E 73 6C 61 74 69 6F 6E 20 6F 66      Translation of
020CA0:  20 63 68 61 72 61 63 74 65 72 73 20 62 79 20 74     characters by t
020CB0:  68 65 20 70 72 69 6E 74 65 72 20 64 72 69 76 65    he printer drive
020CC0:  72 20 20 6F 63 63 75 72 73 20 20 69 6E 20 20 4D    r  occurs  in  M
020CD0:  43 20 20 50 52 49 4E 54 0D 0A 20 20 20 20 20 20    C  PRINT..      
020CE0:  20 43 48 41 52 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A     CHAR...........
020CF0:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52    ....       AMSTR
020D00:  41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31    AD CPC464/664/61
020D10:  32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20    28 FIRMWARE     
020D20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
020D30:  20 20 20 20 20 20 70 61 67 65 20 31 35 2E 32 34          page 15.24
020D40:  30 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    0.............. 
020D50:  20 20 20 20 20 20 54 68 65 20 64 65 66 61 75 6C          The defaul
020D60:  74 20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 74 61    t translation ta
020D70:  62 6C 65 20 69 73 20 73 65 74 20 20 75 70 20 20    ble is set  up  
020D80:  77 68 65 6E 20 20 4D 43 20 20 52 45 53 45 54 20    when  MC  RESET 
020D90:  20 50 52 49 4E 54 45 52 20 20 69 73 0D 0A 20 20     PRINTER  is..  
020DA0:  20 20 20 20 20 63 61 6C 6C 65 64 2E 20 54 68 65         called. The
020DB0:  20 64 65 66 61 75 6C 74 20 74 61 62 6C 65 20 69     default table i
020DC0:  73 20 64 65 73 69 67 6E 65 64 20 74 6F 20 64 72    s designed to dr
020DD0:  69 76 65 20 74 68 65 20 44 4D 50 2D 31 20 70 72    ive the DMP-1 pr
020DE0:  69 6E 74 65 72 20 20 28 73 65 65 0D 0A 20 20 20    inter  (see..   
020DF0:  20 20 20 20 41 70 70 65 6E 64 69 78 20 58 49 56        Appendix XIV
020E00:  29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C    ).....       Rel
020E10:  61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D    ated entries:...
020E20:  0A 20 20 20 20 20 20 20 4D 43 20 50 52 49 4E 54    .       MC PRINT
020E30:  20 43 48 41 52 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D     CHAR...........
020E40:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
020E50:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
020E60:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
020E70:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
020E80:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
020E90:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    ............... 
020EA0:  20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50          AMSTRAD CP
020EB0:  43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49    C464/664/6128 FI
020EC0:  52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20    RMWARE          
020ED0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
020EE0:  20 70 61 67 65 20 31 35 2E 32 34 31 0D 0A 0D 0A     page 15.241....
020EF0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
020F00:  20 32 30 31 3A 20 4B 4C 20 42 41 4E 4B 20 53 57     201: KL BANK SW
020F10:  49 54 43 48 20 20 20 20 20 20 20 20 20 20 20 20    ITCH            
020F20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
020F30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
020F40:  20 20 23 42 44 35 42 0D 0A 0D 0A 0D 0A 20 20 20      #BD5B......   
020F50:  20 20 20 20 53 65 6C 65 63 74 20 61 20 6D 65 6D        Select a mem
020F60:  6F 72 79 20 6F 72 67 61 6E 69 7A 61 74 69 6F 6E    ory organization
020F70:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63    .......       Ac
020F80:  74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    tion:......     
020F90:  20 20 53 65 74 20 77 68 69 63 68 20 52 41 4D 20      Set which RAM 
020FA0:  62 61 6E 6B 73 20 61 72 65 20 73 77 69 74 63 68    banks are switch
020FB0:  65 64 20 69 6E 74 6F 20 74 68 65 20 36 34 4B 20    ed into the 64K 
020FC0:  6F 66 20 20 52 41 4D 20 20 69 6E 20 20 74 68 65    of  RAM  in  the
020FD0:  20 20 6D 65 6D 6F 72 79 0D 0A 20 20 20 20 20 20      memory..      
020FE0:  20 6D 61 70 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20     map.......     
020FF0:  20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F      Entry conditio
021000:  6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ns:......       
021010:  41 20 63 6F 6E 74 61 69 6E 73 20 6E 65 77 20 6F    A contains new o
021020:  72 67 61 6E 69 7A 61 74 69 6F 6E 2E 0D 0A 0D 0A    rganization.....
021030:  0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F    ..       Exit co
021040:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20    nditions:...... 
021050:  20 20 20 20 20 20 41 20 63 6F 6E 74 61 69 6E 73          A contains
021060:  20 6F 6C 64 20 6F 72 67 61 6E 69 7A 61 74 69 6F     old organizatio
021070:  6E 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 46    n.......       F
021080:  6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0A 20    lags corrupt... 
021090:  20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20          All other 
0210A0:  72 65 67 69 73 74 65 72 73 20 70 72 65 73 65 72    registers preser
0210B0:  76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ved.......      
0210C0:  20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20     Notes:......   
0210D0:  20 20 20 20 54 68 69 73 20 72 6F 75 74 69 6E 65        This routine
0210E0:  20 69 73 20 6F 6E 6C 79 20 61 76 61 69 6C 61 62     is only availab
0210F0:  6C 65 20 6F 6E 20 74 68 65 20 43 50 43 36 31 32    le on the CPC612
021100:  38 20 20 28 69 2E 65 2E 20 20 56 31 2E 32 20 20    8  (i.e.  V1.2  
021110:  66 69 72 6D 77 61 72 65 29 2E 0D 0A 20 20 20 20    firmware)...    
021120:  20 20 20 54 68 65 20 6D 65 6D 6F 72 79 20 6F 72       The memory or
021130:  67 61 6E 69 7A 61 74 69 6F 6E 73 20 61 6E 64 20    ganizations and 
021140:  62 61 6E 6B 20 73 77 69 74 63 68 69 6E 67 20 20    bank switching  
021150:  61 72 65 20 20 64 69 73 63 75 73 73 65 64 20 20    are  discussed  
021160:  66 75 6C 6C 79 20 20 69 6E 0D 0A 20 20 20 20 20    fully  in..     
021170:  20 20 73 65 63 74 69 6F 6E 20 32 2E 35 2E 0D 0A      section 2.5...
021180:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 74 20 69 73    ....       It is
021190:  20 69 6E 61 64 76 69 73 61 62 6C 65 20 74 6F 20     inadvisable to 
0211A0:  62 61 6E 6B 20 73 77 69 74 63 68 20 74 6F 20 61    bank switch to a
0211B0:  20 6D 65 6D 6F 72 79 20 20 6F 72 67 61 6E 69 7A     memory  organiz
0211C0:  61 74 69 6F 6E 20 20 77 68 65 72 65 20 20 74 68    ation  where  th
0211D0:  65 0D 0A 20 20 20 20 20 20 20 63 6F 64 65 20 74    e..       code t
0211E0:  68 61 74 20 69 73 20 62 65 69 6E 67 20 65 78 65    hat is being exe
0211F0:  63 75 74 65 64 2C 20 6F 72 20 73 74 61 63 6B 20    cuted, or stack 
021200:  61 72 65 20 69 6E 61 63 63 65 73 73 69 62 6C 65    are inaccessible
021210:  21 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    !........       
021220:  52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A    Related entries:
021230:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4B 4C 20    ......       KL 
021240:  4C 20 52 4F 4D 20 44 49 53 41 42 4C 45 0D 0A 20    L ROM DISABLE.. 
021250:  20 20 20 20 20 20 4B 4C 20 4C 20 52 4F 4D 20 45          KL L ROM E
021260:  4E 41 42 4C 45 0D 0A 20 20 20 20 20 20 20 4B 4C    NABLE..       KL
021270:  20 52 4F 4D 20 53 45 4C 45 43 54 0D 0A 20 20 20     ROM SELECT..   
021280:  20 20 20 20 4B 4C 20 55 20 52 4F 4D 20 44 49 53        KL U ROM DIS
021290:  41 42 4C 45 0D 0A 20 20 20 20 20 20 20 4B 4C 20    ABLE..       KL 
0212A0:  55 20 52 4F 4D 20 45 4E 41 42 4C 45 0D 0A 0D 0A    U ROM ENABLE....
0212B0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
0212C0:  20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43           AMSTRAD C
0212D0:  50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46    PC464/664/6128 F
0212E0:  49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20    IRMWARE         
0212F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
021300:  20 20 70 61 67 65 20 31 35 2E 32 34 32 0D 0A 1A      page 15.242...
021310:  20 20 20 31 38 35 3A 20 4D 43 20 50 52 49 4E 54       185: MC PRINT
021320:  20 43 48 41 52 20 20 20 20 20 20 20 20 20 20 20     CHAR           
021330:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
021340:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
021350:  20 20 20 20 23 42 44 32 42 0D 0A 0D 0A 20 20 20        #BD2B....   
021360:  20 20 20 20 54 72 79 20 74 6F 20 73 65 6E 64 20        Try to send 
021370:  61 20 63 68 61 72 61 63 74 65 72 20 74 6F 20 74    a character to t
021380:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 74 20 69 73    ....       It is
021390:  20 69 6E 61 64 76 69 73 61 62 6C 65 20 74 6F 20     inadvisable to 
0213A0:  62 61 6E 6B 20 73 77 69 74 63 68 20 74 6F 20 61    bank switch to a
0213B0:  20 6D 65 6D 6F 72 79 20 20 6F 72 67 61 6E 69 7A     memory  organiz
0213C0:  61 74 69 6F 6E 20 20 77 68 65 72 65 20 20 74 68    ation  where  th
0213D0:  65 0D 0A 20 20 20 20 20 20 20 63 6F 64 65 20 74    e..       code t
0213E0:  68 61 74 20 69 73 20 62 65 69 6E 67 20 65 78 65    hat is being exe
0213F0:  63 75 74 65 64 2C 20 6F 72 20 73 74 61 63 6B 20    cuted, or stack 
021400:  61 72 65 20 69 6E 61 63 63 65 73 73 69 62 6C 65    are inaccessible
021410:  21 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    !........       
021420:  52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A    Related entries:
021430:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4B 4C 20    ......       KL 
021440:  4C 20 52 4F 4D 20 44 49 53 41 42 4C 45 0D 0A 20    L ROM DISABLE.. 
021450:  20 20 20 20 20 20 4B 4C 20 4C 20 52 4F 4D 20 45          KL L ROM E
021460:  4E 41 42 4C 45 0D 0A 20 20 20 20 20 20 20 4B 4C    NABLE..       KL
021470:  20 52 4F 4D 20 53 45 4C 45 43 54 0D 0A 20 20 20     ROM SELECT..   
021480:  20 20 20 20 4B 4C 20 55 20 52 4F 4D 20 44 49 53        KL U ROM DIS
021490:  41 42 4C 45 0D 0A 20 20 20 20 20 20 20 4B 4C 20    ABLE..       KL 
0214A0:  55 20 52 4F 4D 20 45 4E 41 42 4C 45 0D 0A 0D 0A    U ROM ENABLE....
0214B0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
0214C0:  20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43           AMSTRAD C
0214D0:  50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46    PC464/664/6128 F
0214E0:  49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20    IRMWARE         
0214F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 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:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 31    ........       1
021610:  36 20 54 68 65 20 46 69 72 6D 77 61 72 65 20 49    6 The Firmware I
021620:  6E 64 69 72 65 63 74 69 6F 6E 73 2E 0D 0A 0D 0A    ndirections.....
021630:  20 20 20 20 20 20 20 54 68 69 73 20 73 65 63 74           This sect
021640:  69 6F 6E 20 67 69 76 65 73 20 74 68 65 20 64 65    ion gives the de
021650:  74 61 69 6C 65 64 20 65 6E 74 72 79 20 61 6E 64    tailed entry and
021660:  20 65 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73     exit conditions
021670:  20 61 6E 64 20 20 65 66 66 65 63 74 73 0D 0A 20     and  effects.. 
021680:  20 20 20 20 20 20 6F 66 20 74 68 65 20 72 6F 75          of the rou
021690:  74 69 6E 65 73 20 69 6E 20 74 68 65 20 69 6E 64    tines in the ind
0216A0:  69 72 65 63 74 69 6F 6E 73 20 6A 75 6D 70 62 6C    irections jumpbl
0216B0:  6F 63 6B 2E 20 53 65 65 20 73 65 63 74 69 6F 6E    ock. See section
0216C0:  20 31 34 2E 32 20 66 6F 72 20 20 61 0D 0A 20 20     14.2 for  a..  
0216D0:  20 20 20 20 20 6C 69 73 74 20 61 20 74 68 65 73         list a thes
0216E0:  65 20 72 6F 75 74 69 6E 65 73 2E 0D 0A 0D 0A 20    e routines..... 
0216F0:  20 20 20 20 20 20 54 68 65 20 66 69 72 6D 77 61          The firmwa
021700:  72 65 20 69 6E 64 69 72 65 63 74 69 6F 6E 73 20    re indirections 
021710:  61 72 65 20 74 61 6B 65 6E 20 62 79 20 74 68 65    are taken by the
021720:  20 20 66 69 72 6D 77 61 72 65 20 20 61 74 20 20      firmware  at  
021730:  6B 65 79 20 20 70 6F 69 6E 74 73 2E 0D 0A 20 20    key  points...  
021740:  20 20 20 20 20 54 68 65 79 20 61 6C 6C 6F 77 20         They allow 
021750:  74 68 65 20 75 73 65 72 20 74 6F 20 20 69 6E 74    the user to  int
021760:  65 72 63 65 70 74 20 20 61 6E 64 20 20 61 6C 74    ercept  and  alt
021770:  65 72 20 20 61 20 20 6E 75 6D 62 65 72 20 20 6F    er  a  number  o
021780:  66 20 20 66 69 72 6D 77 61 72 65 0D 0A 20 20 20    f  firmware..   
021790:  20 20 20 20 61 63 74 69 6F 6E 73 20 77 69 74 68        actions with
0217A0:  6F 75 74 20 68 61 76 69 6E 67 20 74 6F 20 70 72    out having to pr
0217B0:  6F 76 69 64 65 20 61 20 63 6F 6D 70 6C 65 74 65    ovide a complete
0217C0:  20 6E 65 77 20 66 69 72 6D 77 61 72 65 20 70 61     new firmware pa
0217D0:  63 6B 61 67 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    ckage.......    
0217E0:  20 20 20 54 68 65 20 20 64 65 73 63 72 69 70 74       The  descript
0217F0:  69 6F 6E 73 20 20 67 69 76 65 6E 20 20 61 72 65    ions  given  are
021800:  20 20 66 6F 72 20 20 74 68 65 20 20 64 65 66 61      for  the  defa
021810:  75 6C 74 20 20 20 73 65 74 74 69 6E 67 73 20 20    ult   settings  
021820:  20 6F 66 20 20 20 74 68 65 0D 0A 20 20 20 20 20     of   the..     
021830:  20 20 69 6E 64 69 72 65 63 74 69 6F 6E 73 2E 20      indirections. 
021840:  52 65 70 6C 61 63 65 6D 65 6E 74 20 72 6F 75 74    Replacement rout
021850:  69 6E 65 73 20 6E 65 65 64 20 6E 6F 74 20 70 65    ines need not pe
021860:  72 66 6F 72 6D 20 20 61 6C 6C 20 20 74 68 65 20    rform  all  the 
021870:  20 61 63 74 69 6F 6E 73 0D 0A 20 20 20 20 20 20     actions..      
021880:  20 74 68 61 74 20 74 68 65 20 64 65 66 61 75 6C     that the defaul
021890:  74 20 72 6F 75 74 69 6E 65 20 70 65 72 66 6F 72    t routine perfor
0218A0:  6D 73 20 61 6C 74 68 6F 75 67 68 20 74 68 65 79    ms although they
0218B0:  20 61 72 65 20 61 64 76 69 73 65 64 20 74 6F 20     are advised to 
0218C0:  64 6F 20 73 6F 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    do so...........
0218D0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
0218E0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
0218F0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
021900:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
021910:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ..............  
021920:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
021930:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
021940:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
021950:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
021960:  20 20 70 61 67 65 20 31 36 2E 31 0D 0A 0D 0A 0D      page 16.1.....
021970:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
021980:  49 4E 44 3A 20 54 58 54 20 44 52 41 57 20 43 55    IND: TXT DRAW CU
021990:  52 53 4F 52 20 20 20 20 20 20 20 20 20 20 20 20    RSOR            
0219A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0219B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0219C0:  20 23 42 44 43 44 0D 0A 0D 0A 0D 0A 20 20 20 20     #BDCD......    
0219D0:  20 20 20 50 6C 61 63 65 20 74 68 65 20 63 75 72       Place the cur
0219E0:  73 6F 72 20 62 6C 6F 62 20 6F 6E 20 74 68 65 20    sor blob on the 
0219F0:  73 63 72 65 65 6E 20 28 69 66 20 65 6E 61 62 6C    screen (if enabl
021A00:  65 64 29 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ed).......      
021A10:  20 44 65 66 61 75 6C 74 20 61 63 74 69 6F 6E 3A     Default action:
021A20:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20    ......       If 
021A30:  74 68 65 20 63 75 72 73 6F 72 20 69 73 20 65 6E    the cursor is en
021A40:  61 62 6C 65 64 20 61 6E 64 20 74 75 72 6E 65 64    abled and turned
021A50:  20 6F 6E 20 74 68 65 6E 20 74 68 65 20 63 75 72     on then the cur
021A60:  73 6F 72 20 62 6C 6F 62 20 20 69 73 20 20 64 72    sor blob  is  dr
021A70:  61 77 6E 0D 0A 20 20 20 20 20 20 20 6F 6E 20 74    awn..       on t
021A80:  68 65 20 73 63 72 65 65 6E 2E 20 49 66 20 6E 6F    he screen. If no
021A90:  74 20 74 68 65 6E 20 20 6E 6F 20 20 61 63 74 69    t then  no  acti
021AA0:  6F 6E 20 20 69 73 20 20 74 61 6B 65 6E 2E 20 20    on  is  taken.  
021AB0:  54 68 65 20 20 63 75 72 72 65 6E 74 20 20 74 65    The  current  te
021AC0:  78 74 0D 0A 20 20 20 20 20 20 20 70 6F 73 69 74    xt..       posit
021AD0:  69 6F 6E 20 69 73 20 66 6F 72 63 65 64 20 69 6E    ion is forced in
021AE0:  74 6F 20 74 68 65 20 77 69 6E 64 6F 77 20 28 73    to the window (s
021AF0:  65 65 20 54 58 54 20 56 41 4C 49 44 41 54 45 29    ee TXT VALIDATE)
021B00:  20 61 6E 64 20 20 74 68 65 20 20 63 75 72 73 6F     and  the  curso
021B10:  72 0D 0A 20 20 20 20 20 20 20 62 6C 6F 62 20 69    r..       blob i
021B20:  73 20 77 72 69 74 74 65 6E 20 61 74 20 74 68 65    s written at the
021B30:  20 72 65 73 75 6C 74 69 6E 67 20 20 70 6F 73 69     resulting  posi
021B40:  74 69 6F 6E 2E 20 20 54 68 65 20 20 63 75 72 73    tion.  The  curs
021B50:  6F 72 20 20 62 6C 6F 62 20 20 69 73 20 20 61 6E    or  blob  is  an
021B60:  0D 0A 20 20 20 20 20 20 20 69 6E 76 65 72 73 65    ..       inverse
021B70:  20 70 61 74 63 68 2E 20 54 68 69 73 20 72 6F 75     patch. This rou
021B80:  74 69 6E 65 20 77 69 6C 6C 20 6F 6E 6C 79 20 62    tine will only b
021B90:  65 20 63 61 6C 6C 65 64 20 74 77 69 63 65 20 20    e called twice  
021BA0:  69 66 20 20 54 58 54 20 20 55 4E 44 52 41 57 0D    if  TXT  UNDRAW.
021BB0:  0A 20 20 20 20 20 20 20 43 55 52 53 4F 52 20 69    .       CURSOR i
021BC0:  73 20 63 61 6C 6C 65 64 20 69 6E 20 62 65 74 77    s called in betw
021BD0:  65 65 6E 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    een.......      
021BE0:  20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E     Entry condition
021BF0:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E    s:......       N
021C00:  6F 20 63 6F 6E 64 69 74 69 6F 6E 73 2E 0D 0A 0D    o conditions....
021C10:  0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63    ...       Exit c
021C20:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A    onditions:......
021C30:  20 20 20 20 20 20 20 41 46 20 63 6F 72 72 75 70           AF corrup
021C40:  74 2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F    t...       All o
021C50:  74 68 65 72 20 72 65 67 69 73 74 65 72 73 20 70    ther registers p
021C60:  72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20    reserved....... 
021C70:  20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A          Notes:....
021C80:  0D 0A 20 20 20 20 20 20 20 54 68 69 73 20 69 6E    ..       This in
021C90:  64 69 72 65 63 74 69 6F 6E 20 69 73 20 70 72 6F    direction is pro
021CA0:  76 69 64 65 64 20 74 6F 20 61 6C 6C 6F 77 20 74    vided to allow t
021CB0:  68 65 20 75 73 65 72 20 74 6F 20 63 68 61 6E 67    he user to chang
021CC0:  65 20 74 68 65 20 20 66 6F 72 6D 20 20 6F 66 0D    e the  form  of.
021CD0:  0A 20 20 20 20 20 20 20 74 68 65 20 63 75 72 73    .       the curs
021CE0:  6F 72 20 62 6C 6F 62 2E 20 53 65 65 20 54 58 54    or blob. See TXT
021CF0:  20 50 4C 41 43 45 20 43 55 52 53 4F 52 20 66 6F     PLACE CURSOR fo
021D00:  72 20 61 20 20 64 65 73 63 72 69 70 74 69 6F 6E    r a  description
021D10:  20 20 6F 66 20 20 68 6F 77 20 20 74 68 65 0D 0A      of  how  the..
021D20:  20 20 20 20 20 20 20 63 75 72 73 6F 72 20 62 6C           cursor bl
021D30:  6F 62 20 69 73 20 6E 6F 72 6D 61 6C 6C 79 20 77    ob is normally w
021D40:  72 69 74 74 65 6E 2E 0D 0A 0D 0A 0D 0A 20 20 20    ritten.......   
021D50:  20 20 20 20 54 68 65 20 54 65 78 74 20 56 44 55        The Text VDU
021D60:  20 72 6F 75 74 69 6E 65 73 20 63 61 6C 6C 20 74     routines call t
021D70:  68 69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E 20    his indirection 
021D80:  20 77 68 65 6E 65 76 65 72 20 20 74 68 65 20 20     whenever  the  
021D90:  63 75 72 73 6F 72 20 20 69 73 0D 0A 20 20 20 20    cursor  is..    
021DA0:  20 20 20 70 6C 61 63 65 64 20 6F 6E 20 74 68 65       placed on the
021DB0:  20 73 63 72 65 65 6E 2E 20 41 6C 6C 20 74 68 65     screen. All the
021DC0:  20 54 65 78 74 20 56 44 55 20 72 6F 75 74 69 6E     Text VDU routin
021DD0:  65 73 20 20 74 68 61 74 20 20 72 65 61 64 20 20    es  that  read  
021DE0:  66 72 6F 6D 20 20 74 68 65 0D 0A 20 20 20 20 20    from  the..     
021DF0:  20 20 73 63 72 65 65 6E 2C 20 77 72 69 74 65 20      screen, write 
021E00:  74 6F 20 74 68 65 20 73 63 72 65 65 6E 20 6F 72    to the screen or
021E10:  20 63 68 61 6E 67 65 20 74 68 65 20 63 75 72 72     change the curr
021E20:  65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 72 65 6D    ent position rem
021E30:  6F 76 65 20 20 74 68 65 0D 0A 20 20 20 20 20 20    ove  the..      
021E40:  20 63 75 72 73 6F 72 20 28 75 73 69 6E 67 20 54     cursor (using T
021E50:  58 54 20 55 4E 44 52 41 57 20 43 55 52 53 4F 52    XT UNDRAW CURSOR
021E60:  29 20 62 65 66 6F 72 65 20 70 65 72 66 6F 72 6D    ) before perform
021E70:  69 6E 67 20 20 74 68 65 69 72 20 20 61 63 74 69    ing  their  acti
021E80:  6F 6E 20 20 61 6E 64 0D 0A 20 20 20 20 20 20 20    on  and..       
021E90:  70 6C 61 63 65 20 69 74 20 62 61 63 6B 20 6F 6E    place it back on
021EA0:  20 74 68 65 20 73 63 72 65 65 6E 20 61 66 74 65     the screen afte
021EB0:  72 77 61 72 64 73 20 28 75 73 69 6E 67 20 20 54    rwards (using  T
021EC0:  58 54 20 20 44 52 41 57 20 20 43 55 52 53 4F 52    XT  DRAW  CURSOR
021ED0:  29 2E 20 20 41 6E 0D 0A 20 20 20 20 20 20 20 65    ).  An..       e
021EE0:  78 61 6D 70 6C 65 20 6F 66 20 73 75 63 68 20 61    xample of such a
021EF0:  20 72 6F 75 74 69 6E 65 20 69 73 20 54 58 54 20     routine is TXT 
021F00:  57 52 20 43 48 41 52 20 74 68 61 74 20 77 72 69    WR CHAR that wri
021F10:  74 65 73 20 20 61 20 20 63 68 61 72 61 63 74 65    tes  a  characte
021F20:  72 20 20 6F 6E 0D 0A 20 20 20 20 20 20 20 74 68    r  on..       th
021F30:  65 20 73 63 72 65 65 6E 2E 0D 0A 0D 0A 0D 0A 20    e screen....... 
021F40:  20 20 20 20 20 20 54 68 69 73 20 69 6E 64 69 72          This indir
021F50:  65 63 74 69 6F 6E 20 69 73 20 73 65 74 20 75 70    ection is set up
021F60:  20 77 68 65 6E 20 54 58 54 20 49 4E 49 54 49 41     when TXT INITIA
021F70:  4C 49 53 45 20 6F 72 20 54 58 54 20 52 45 53 45    LISE or TXT RESE
021F80:  54 20 69 73 20 63 61 6C 6C 65 64 2E 0D 0A 0D 0A    T is called.....
021F90:  0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74    ....       Relat
021FA0:  65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 20    ed entries:.... 
021FB0:  20 20 20 20 20 20 54 58 54 20 50 4C 41 43 45 20          TXT PLACE 
021FC0:  43 55 52 53 4F 52 0D 0A 20 20 20 20 20 20 20 54    CURSOR..       T
021FD0:  58 54 20 55 4E 44 52 41 57 20 43 55 52 53 4F 52    XT UNDRAW CURSOR
021FE0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
021FF0:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
022000:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
022010:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
022020:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61                  pa
022030:  67 65 20 31 36 2E 32 0D 0A 0D 0A 0D 0A 0D 0A 0D    ge 16.2.........
022040:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 4E 44 3A    .....       IND:
022050:  20 54 58 54 20 55 4E 44 52 41 57 20 43 55 52 53     TXT UNDRAW CURS
022060:  4F 52 20 20 20 20 20 20 20 20 20 20 20 20 20 20    OR              
022070:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
022080:  20 20 20 20 20 20 20 20 20 20 20 20 20 23 42 44                 #BD
022090:  44 30 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52    D0......       R
0220A0:  65 6D 6F 76 65 20 74 68 65 20 63 75 72 73 6F 72    emove the cursor
0220B0:  20 62 6C 6F 62 20 6F 6E 20 74 68 65 20 73 63 72     blob on the scr
0220C0:  65 65 6E 20 28 69 66 20 65 6E 61 62 6C 65 64 29    een (if enabled)
0220D0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 44 65    .......       De
0220E0:  66 61 75 6C 74 20 61 63 74 69 6F 6E 3A 0D 0A 0D    fault action:...
0220F0:  0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74 68 65    ...       If the
022100:  20 63 75 72 73 6F 72 20 69 73 20 65 6E 61 62 6C     cursor is enabl
022110:  65 64 20 61 6E 64 20 74 75 72 6E 65 64 20 6F 6E    ed and turned on
022120:  20 74 68 65 6E 20 74 68 65 20 63 75 72 73 6F 72     then the cursor
022130:  20 62 6C 6F 62 20 69 73 20 72 65 6D 6F 76 65 64     blob is removed
022140:  0D 0A 20 20 20 20 20 20 20 66 72 6F 6D 20 74 68    ..       from th
022150:  65 20 73 63 72 65 65 6E 2E 20 49 66 20 6E 6F 74    e screen. If not
022160:  20 74 68 65 6E 20 6E 6F 20 61 63 74 69 6F 6E 20     then no action 
022170:  69 73 20 74 61 6B 65 6E 2E 20 54 68 65 20 54 68    is taken. The Th
022180:  65 20 20 63 75 72 73 6F 72 20 20 62 6C 6F 62 0D    e  cursor  blob.
022190:  0A 20 20 20 20 20 20 20 69 73 20 61 6E 20 69 6E    .       is an in
0221A0:  76 65 72 73 65 20 70 61 74 63 68 2E 20 54 68 69    verse patch. Thi
0221B0:  73 20 72 6F 75 74 69 6E 65 20 77 69 6C 6C 20 6F    s routine will o
0221C0:  6E 6C 79 20 62 65 20 63 61 6C 6C 65 64 20 61 66    nly be called af
0221D0:  74 65 72 20 20 54 58 54 20 20 44 52 41 57 0D 0A    ter  TXT  DRAW..
0221E0:  20 20 20 20 20 20 20 43 55 52 53 4F 52 20 68 61           CURSOR ha
0221F0:  73 20 62 65 65 6E 20 75 73 65 64 20 74 6F 20 70    s been used to p
022200:  6C 61 63 65 20 74 68 65 20 63 75 72 73 6F 72 20    lace the cursor 
022210:  6F 6E 20 74 68 65 20 73 63 72 65 65 6E 2E 0D 0A    on the screen...
022220:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79    ....       Entry
022230:  20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A     conditions:....
022240:  0D 0A 20 20 20 20 20 20 20 4E 6F 20 63 6F 6E 64    ..       No cond
022250:  69 74 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A 20 20 20    itions.......   
022260:  20 20 20 20 45 78 69 74 20 63 6F 6E 64 69 74 69        Exit conditi
022270:  6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ons:......      
022280:  20 41 46 20 63 6F 72 72 75 70 74 2E 0D 0A 20 20     AF corrupt...  
022290:  20 20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72         All other r
0222A0:  65 67 69 73 74 65 72 73 20 70 72 65 73 65 72 76    egisters preserv
0222B0:  65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ed.......       
0222C0:  4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    Notes:......    
0222D0:  20 20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74       This indirect
0222E0:  69 6F 6E 20 69 73 20 70 72 6F 76 69 64 65 64 20    ion is provided 
0222F0:  74 6F 20 61 6C 6C 6F 77 20 74 68 65 20 75 73 65    to allow the use
022300:  72 20 74 6F 20 63 68 61 6E 67 65 20 74 68 65 20    r to change the 
022310:  20 66 6F 72 6D 20 20 6F 66 0D 0A 20 20 20 20 20     form  of..     
022320:  20 20 74 68 65 20 63 75 72 73 6F 72 20 62 6C 6F      the cursor blo
022330:  62 2E 20 53 65 65 20 54 58 54 20 52 45 4D 4F 56    b. See TXT REMOV
022340:  45 20 43 55 52 53 4F 52 20 66 6F 72 20 61 20 64    E CURSOR for a d
022350:  65 73 63 72 69 70 74 69 6F 6E 20 20 6F 66 20 20    escription  of  
022360:  68 6F 77 20 20 74 68 65 0D 0A 20 20 20 20 20 20    how  the..      
022370:  20 63 75 72 73 6F 72 20 62 6C 6F 62 20 69 73 20     cursor blob is 
022380:  6E 6F 72 6D 61 6C 6C 79 20 72 65 6D 6F 76 65 64    normally removed
022390:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
0223A0:  65 20 54 65 78 74 20 56 44 55 20 72 6F 75 74 69    e Text VDU routi
0223B0:  6E 65 73 20 63 61 6C 6C 20 74 68 69 73 20 69 6E    nes call this in
0223C0:  64 69 72 65 63 74 69 6F 6E 20 74 6F 20 72 65 6D    direction to rem
0223D0:  6F 76 65 20 74 68 65 20 63 75 72 73 6F 72 20 20    ove the cursor  
0223E0:  66 72 6F 6D 0D 0A 20 20 20 20 20 20 20 74 68 65    from..       the
0223F0:  20 73 63 72 65 65 6E 2E 20 41 6C 6C 20 74 68 65     screen. All the
022400:  20 54 65 78 74 20 56 44 55 20 72 6F 75 74 69 6E     Text VDU routin
022410:  65 73 20 74 68 61 74 20 72 65 61 64 20 66 72 6F    es that read fro
022420:  6D 20 74 68 65 20 73 63 72 65 65 6E 2C 20 77 72    m the screen, wr
022430:  69 74 65 0D 0A 20 20 20 20 20 20 20 74 6F 20 74    ite..       to t
022440:  68 65 20 73 63 72 65 65 6E 20 6F 72 20 63 68 61    he screen or cha
022450:  6E 67 65 20 74 68 65 20 63 75 72 72 65 6E 74 20    nge the current 
022460:  70 6F 73 69 74 69 6F 6E 20 72 65 6D 6F 76 65 20    position remove 
022470:  74 68 65 20 63 75 72 73 6F 72 20 20 28 75 73 69    the cursor  (usi
022480:  6E 67 0D 0A 20 20 20 20 20 20 20 54 58 54 20 55    ng..       TXT U
022490:  4E 44 52 41 57 20 43 55 52 53 4F 52 29 20 62 65    NDRAW CURSOR) be
0224A0:  66 6F 72 65 20 70 65 72 66 6F 72 6D 69 6E 67 20    fore performing 
0224B0:  74 68 65 69 72 20 61 63 74 69 6F 6E 20 61 6E 64    their action and
0224C0:  20 70 6C 61 63 65 20 69 74 20 62 61 63 6B 20 6F     place it back o
0224D0:  6E 0D 0A 20 20 20 20 20 20 20 74 68 65 20 73 63    n..       the sc
0224E0:  72 65 65 6E 20 61 66 74 65 72 77 61 72 64 73 20    reen afterwards 
0224F0:  28 75 73 69 6E 67 20 54 58 54 20 44 52 41 57 20    (using TXT DRAW 
022500:  43 55 52 53 4F 52 29 2E 20 41 6E 20 65 78 61 6D    CURSOR). An exam
022510:  70 6C 65 20 20 6F 66 20 20 73 75 63 68 20 20 61    ple  of  such  a
022520:  0D 0A 20 20 20 20 20 20 20 72 6F 75 74 69 6E 65    ..       routine
022530:  20 69 73 20 54 58 54 20 57 52 20 43 48 41 52 20     is TXT WR CHAR 
022540:  74 68 61 74 20 77 72 69 74 65 73 20 61 20 63 68    that writes a ch
022550:  61 72 61 63 74 65 72 20 6F 6E 20 74 68 65 20 73    aracter on the s
022560:  63 72 65 65 6E 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    creen.......    
022570:  20 20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74       This indirect
022580:  69 6F 6E 20 69 73 20 73 65 74 20 75 70 20 77 68    ion is set up wh
022590:  65 6E 20 54 58 54 20 49 4E 49 54 49 41 4C 49 53    en TXT INITIALIS
0225A0:  45 20 6F 72 20 54 58 54 20 52 45 53 45 54 20 69    E or TXT RESET i
0225B0:  73 20 63 61 6C 6C 65 64 2E 0D 0A 0D 0A 0D 0A 0D    s called........
0225C0:  0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64 20    .       Related 
0225D0:  65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20    entries:......  
0225E0:  20 20 20 20 20 54 58 54 20 44 52 41 57 20 43 55         TXT DRAW CU
0225F0:  52 53 4F 52 0D 0A 20 20 20 20 20 20 20 54 58 54    RSOR..       TXT
022600:  20 52 45 4D 4F 56 45 20 43 55 52 53 4F 52 0D 0A     REMOVE CURSOR..
022610:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
022620:  20 20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36       AMSTRAD CPC46
022630:  34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57    4/664/6128 FIRMW
022640:  41 52 45 20 20 20 20 20 20 20 20 20 20 20 20 20    ARE             
022650:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
022660:  70 61 67 65 20 31 36 2E 33 0D 0A 0D 0A 0D 0A 0D    page 16.3.......
022670:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 4E    .......       IN
022680:  44 3A 20 54 58 54 20 57 52 49 54 45 20 43 48 41    D: TXT WRITE CHA
022690:  52 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    R               
0226A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0226B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23                   #
0226C0:  42 44 44 33 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    BDD3......      
0226D0:  20 57 72 69 74 65 20 61 20 63 68 61 72 61 63 74     Write a charact
0226E0:  65 72 20 6F 6E 74 6F 20 74 68 65 20 73 63 72 65    er onto the scre
0226F0:  65 6E 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    en.......       
022700:  44 65 66 61 75 6C 74 20 61 63 74 69 6F 6E 3A 0D    Default action:.
022710:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 50 75 74 20    .....       Put 
022720:  61 20 63 68 61 72 61 63 74 65 72 20 6F 6E 20 74    a character on t
022730:  68 65 20 73 63 72 65 65 6E 20 61 74 20 61 20 63    he screen at a c
022740:  68 61 72 61 63 74 65 72 20 70 6F 73 69 74 69 6F    haracter positio
022750:  6E 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    n.......       E
022760:  6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    ntry conditions:
022770:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 20 63    ......       A c
022780:  6F 6E 74 61 69 6E 73 20 74 68 65 20 63 68 61 72    ontains the char
022790:  61 63 74 65 72 20 74 6F 20 77 72 69 74 65 2E 0D    acter to write..
0227A0:  0A 20 20 20 20 20 20 20 48 20 63 6F 6E 74 61 69    .       H contai
0227B0:  6E 73 20 74 68 65 20 70 68 79 73 69 63 61 6C 20    ns the physical 
0227C0:  63 6F 6C 75 6D 6E 20 74 6F 20 77 72 69 74 65 20    column to write 
0227D0:  61 74 2E 0D 0A 20 20 20 20 20 20 20 4C 20 63 6F    at...       L co
0227E0:  6E 74 61 69 6E 73 20 74 68 65 20 70 68 79 73 69    ntains the physi
0227F0:  63 61 6C 20 72 6F 77 20 74 6F 20 77 72 69 74 65    cal row to write
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:  20 61 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20     at.......      
022910:  20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73     Exit conditions
022920:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 46    :......       AF
022930:  2C 20 42 43 2C 20 44 45 20 61 6E 64 20 48 4C 20    , BC, DE and HL 
022940:  63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20    corrupt...      
022950:  20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73     All other regis
022960:  74 65 72 73 20 70 72 65 73 65 72 76 65 64 2E 0D    ters preserved..
022970:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65    .....       Note
022980:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    s:......       T
022990:  68 65 20 63 68 61 72 61 63 74 65 72 20 70 6F 73    he character pos
0229A0:  69 74 69 6F 6E 20 74 6F 20 77 72 69 74 65 20 61    ition to write a
0229B0:  74 20 69 73 20 67 69 76 65 6E 20 69 6E 20 20 70    t is given in  p
0229C0:  68 79 73 69 63 61 6C 20 20 63 6F 6F 72 64 69 6E    hysical  coordin
0229D0:  61 74 65 73 2E 0D 0A 20 20 20 20 20 20 20 69 2E    ates...       i.
0229E0:  65 2E 20 52 6F 77 20 30 2C 20 63 6F 6C 75 6D 6E    e. Row 0, column
0229F0:  20 30 20 69 73 20 20 74 68 65 20 20 74 6F 70 20     0 is  the  top 
022A00:  20 6C 65 66 74 20 20 63 6F 72 6E 65 72 20 20 6F     left  corner  o
022A10:  66 20 20 74 68 65 20 20 73 63 72 65 65 6E 2E 20    f  the  screen. 
022A20:  20 54 68 65 0D 0A 20 20 20 20 20 20 20 70 6F 73     The..       pos
022A30:  69 74 69 6F 6E 20 69 73 20 6E 6F 74 20 63 68 65    ition is not che
022A40:  63 6B 65 64 20 66 6F 72 20 6C 65 67 61 6C 69 74    cked for legalit
022A50:  79 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    y.......       T
022A60:  58 54 20 57 52 49 54 45 20 43 48 41 52 20 69 73    XT WRITE CHAR is
022A70:  20 63 61 6C 6C 65 64 20 62 79 20 54 58 54 20 57     called by TXT W
022A80:  52 20 43 48 41 52 20 74 6F 20 70 72 69 6E 74 20    R CHAR to print 
022A90:  61 20 20 63 68 61 72 61 63 74 65 72 20 20 6F 6E    a  character  on
022AA0:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 73 63      the..       sc
022AB0:  72 65 65 6E 2E 20 54 68 65 20 72 65 6D 6F 76 69    reen. The removi
022AC0:  6E 67 20 6F 66 20 74 68 65 20 63 75 72 73 6F 72    ng of the cursor
022AD0:  20 62 6C 6F 62 20 61 6E 64 20 74 68 65 20 63 61     blob and the ca
022AE0:  6C 63 75 6C 61 74 69 6F 6E 20 6F 66 20 74 68 65    lculation of the
022AF0:  20 6E 65 77 0D 0A 20 20 20 20 20 20 20 63 75 72     new..       cur
022B00:  72 65 6E 74 20 70 6F 73 69 74 69 6F 6E 20 61 72    rent position ar
022B10:  65 20 70 65 72 66 6F 72 6D 65 64 20 62 79 20 54    e performed by T
022B20:  58 54 20 57 52 20 43 48 41 52 20 61 6E 64 20 20    XT WR CHAR and  
022B30:  6E 6F 74 20 20 62 79 20 20 54 58 54 20 20 57 52    not  by  TXT  WR
022B40:  49 54 45 0D 0A 20 20 20 20 20 20 20 43 48 41 52    ITE..       CHAR
022B50:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
022B60:  69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E 20 69    is indirection i
022B70:  73 20 73 65 74 20 75 70 20 77 68 65 6E 20 54 58    s set up when TX
022B80:  54 20 49 4E 49 54 49 41 4C 49 53 45 20 6F 72 20    T INITIALISE or 
022B90:  54 58 54 20 52 45 53 45 54 20 69 73 20 63 61 6C    TXT RESET is cal
022BA0:  6C 65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    led.........    
022BB0:  20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72 69       Related entri
022BC0:  65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    es:......       
022BD0:  54 58 54 20 4F 55 54 50 55 54 0D 0A 20 20 20 20    TXT OUTPUT..    
022BE0:  20 20 20 54 58 54 20 55 4E 57 52 49 54 45 0D 0A       TXT UNWRITE..
022BF0:  20 20 20 20 20 20 20 54 58 54 20 57 52 20 43 48           TXT WR CH
022C00:  41 52 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    AR..............
022C10:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52    ....       AMSTR
022C20:  41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31    AD CPC464/664/61
022C30:  32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20    28 FIRMWARE     
022C40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
022C50:  20 20 20 20 20 20 20 20 70 61 67 65 20 31 36 2E            page 16.
022C60:  34 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    4.............. 
022C70:  20 20 20 20 20 20 49 4E 44 3A 20 54 58 54 20 55          IND: TXT U
022C80:  4E 57 52 49 54 45 20 20 20 20 20 20 20 20 20 20    NWRITE          
022C90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
022CA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
022CB0:  20 20 20 20 20 20 20 23 42 44 44 36 0D 0A 0D 0A           #BDD6....
022CC0:  20 20 20 20 20 20 20 52 65 61 64 20 61 20 63 68           Read a ch
022CD0:  61 72 61 63 74 65 72 20 66 72 6F 6D 20 74 68 65    aracter from the
022CE0:  20 73 63 72 65 65 6E 2E 0D 0A 0D 0A 20 20 20 20     screen.....    
022CF0:  20 20 20 44 65 66 61 75 6C 74 20 61 63 74 69 6F       Default actio
022D00:  6E 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 72 79    n:....       Try
022D10:  20 74 6F 20 72 65 61 64 20 61 20 63 68 61 72 61     to read a chara
022D20:  63 74 65 72 20 66 72 6F 6D 20 74 68 65 20 73 63    cter from the sc
022D30:  72 65 65 6E 20 61 74 20 61 20 63 68 61 72 61 63    reen at a charac
022D40:  74 65 72 20 70 6F 73 69 74 69 6F 6E 2E 0D 0A 0D    ter position....
022D50:  0A 20 20 20 20 20 20 20 45 6E 74 72 79 20 63 6F    .       Entry co
022D60:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20    nditions:....   
022D70:  20 20 20 20 48 20 63 6F 6E 74 61 69 6E 73 20 74        H contains t
022D80:  68 65 20 70 68 79 73 69 63 61 6C 20 63 6F 6C 75    he physical colu
022D90:  6D 6E 20 74 6F 20 72 65 61 64 20 66 72 6F 6D 2E    mn to read from.
022DA0:  0D 0A 20 20 20 20 20 20 20 4C 20 63 6F 6E 74 61    ..       L conta
022DB0:  69 6E 73 20 74 68 65 20 70 68 79 73 69 63 61 6C    ins the physical
022DC0:  20 72 6F 77 20 74 6F 20 72 65 61 64 20 66 72 6F     row to read fro
022DD0:  6D 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69    m.....       Exi
022DE0:  74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D    t conditions:...
022DF0:  0A 20 20 20 20 20 20 20 49 66 20 61 20 72 65 61    .       If a rea
022E00:  64 61 62 6C 65 20 63 68 61 72 61 63 74 65 72 20    dable character 
022E10:  77 61 73 20 66 6F 75 6E 64 3A 0D 0A 0D 0A 20 20    was found:....  
022E20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 61                  Ca
022E30:  72 72 79 20 74 72 75 65 2E 0D 0A 20 20 20 20 20    rry true...     
022E40:  20 20 20 20 20 20 20 20 20 20 20 41 20 63 6F 6E               A con
022E50:  74 61 69 6E 73 20 74 68 65 20 63 68 61 72 61 63    tains the charac
022E60:  74 65 72 20 72 65 61 64 2E 0D 0A 0D 0A 20 20 20    ter read.....   
022E70:  20 20 20 20 49 66 20 6E 6F 20 72 65 63 6F 67 6E        If no recogn
022E80:  69 73 61 62 6C 65 20 63 68 61 72 61 63 74 65 72    isable character
022E90:  20 77 61 73 20 66 6F 75 6E 64 3A 0D 0A 0D 0A 20     was found:.... 
022EA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                   C
022EB0:  61 72 72 79 20 66 61 6C 73 65 2E 0D 0A 20 20 20    arry false...   
022EC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 41 20 63                 A c
022ED0:  6F 6E 74 61 69 6E 73 20 7A 65 72 6F 2E 0D 0A 0D    ontains zero....
022EE0:  0A 20 20 20 20 20 20 20 41 6C 77 61 79 73 3A 0D    .       Always:.
022EF0:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
022F00:  20 20 20 42 43 2C 20 44 45 2C 20 48 4C 20 61 6E       BC, DE, HL an
022F10:  64 20 6F 74 68 65 72 20 66 6C 61 67 73 20 63 6F    d other flags co
022F20:  72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20 20 20    rrupt...        
022F30:  20 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65            All othe
022F40:  72 20 72 65 67 69 73 74 65 72 73 20 70 72 65 73    r registers pres
022F50:  65 72 76 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20    erved.....      
022F60:  20 4E 6F 74 65 73 3A 0D 0A 0D 0A 20 20 20 20 20     Notes:....     
022F70:  20 20 54 68 65 20 63 68 61 72 61 63 74 65 72 20      The character 
022F80:  70 6F 73 69 74 69 6F 6E 20 74 6F 20 72 65 61 64    position to read
022F90:  20 66 72 6F 6D 20 69 73 20 67 69 76 65 6E 20 69     from is given i
022FA0:  6E 20 70 68 79 73 69 63 61 6C 20 20 63 6F 6F 72    n physical  coor
022FB0:  64 69 6E 61 74 65 73 2E 0D 0A 20 20 20 20 20 20    dinates...      
022FC0:  20 69 2E 65 2E 20 52 6F 77 20 30 2C 20 63 6F 6C     i.e. Row 0, col
022FD0:  75 6D 6E 20 30 20 69 73 20 20 74 68 65 20 20 74    umn 0 is  the  t
022FE0:  6F 70 20 20 6C 65 66 74 20 20 63 6F 72 6E 65 72    op  left  corner
022FF0:  20 20 6F 66 20 20 74 68 65 20 20 73 63 72 65 65      of  the  scree
023000:  6E 2E 20 20 54 68 65 0D 0A 20 20 20 20 20 20 20    n.  The..       
023010:  70 6F 73 69 74 69 6F 6E 20 69 73 20 6E 6F 74 20    position is not 
023020:  63 68 65 63 6B 65 64 20 66 6F 72 20 6C 65 67 61    checked for lega
023030:  6C 69 74 79 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    lity.....       
023040:  54 68 69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E    This indirection
023050:  20 69 73 20 63 61 6C 6C 65 64 20 62 79 20 54 58     is called by TX
023060:  54 20 52 44 20 43 48 41 52 20 74 6F 20 72 65 61    T RD CHAR to rea
023070:  64 20 61 20 63 68 61 72 61 63 74 65 72 20 66 6F    d a character fo
023080:  72 6D 20 74 68 65 0D 0A 20 20 20 20 20 20 20 73    rm the..       s
023090:  63 72 65 65 6E 2E 20 54 58 54 20 52 44 20 43 48    creen. TXT RD CH
0230A0:  41 52 20 72 65 6D 6F 76 65 73 20 74 68 65 20 63    AR removes the c
0230B0:  75 72 73 6F 72 20 66 72 6F 6D 20 74 68 65 20 73    ursor from the s
0230C0:  63 72 65 65 6E 20 62 65 66 6F 72 65 20 20 63 61    creen before  ca
0230D0:  6C 6C 69 6E 67 0D 0A 20 20 20 20 20 20 20 74 68    lling..       th
0230E0:  69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E 2E 0D    is indirection..
0230F0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
023100:  72 65 61 64 20 69 73 20 70 65 72 66 6F 72 6D 65    read is performe
023110:  64 20 62 79 20 63 6F 6D 70 61 72 69 6E 67 20 74    d by comparing t
023120:  68 65 20 6D 61 74 72 69 78 20 66 6F 75 6E 64 20    he matrix found 
023130:  6F 6E 20 74 68 65 20 73 63 72 65 65 6E 20 77 69    on the screen wi
023140:  74 68 0D 0A 20 20 20 20 20 20 20 74 68 65 20 6D    th..       the m
023150:  61 74 72 69 63 65 73 20 75 73 65 64 20 74 6F 20    atrices used to 
023160:  67 65 6E 65 72 61 74 65 20 20 63 68 61 72 61 63    generate  charac
023170:  74 65 72 73 2E 20 20 41 73 20 20 61 20 20 72 65    ters.  As  a  re
023180:  73 75 6C 74 20 20 63 68 61 6E 67 69 6E 67 20 20    sult  changing  
023190:  61 0D 0A 20 20 20 20 20 20 20 63 68 61 72 61 63    a..       charac
0231A0:  74 65 72 20 6D 61 74 72 69 78 2C 20 63 68 61 6E    ter matrix, chan
0231B0:  67 69 6E 67 20 74 68 65 20 70 65 6E 20 20 6F 72    ging the pen  or
0231C0:  20 20 70 61 70 65 72 20 20 69 6E 6B 73 20 20 6F      paper  inks  o
0231D0:  72 20 20 63 68 61 6E 67 69 6E 67 20 20 74 68 65    r  changing  the
0231E0:  0D 0A 20 20 20 20 20 20 20 73 63 72 65 65 6E 20    ..       screen 
0231F0:  28 65 2E 67 2E 20 20 64 72 61 77 69 6E 67 20 20    (e.g.  drawing  
023200:  61 20 20 6C 69 6E 65 20 20 74 68 72 6F 75 67 68    a  line  through
023210:  20 20 61 20 20 63 68 61 72 61 63 74 65 72 29 20      a  character) 
023220:  20 6D 61 79 20 20 6D 61 6B 65 20 20 74 68 65 0D     may  make  the.
023230:  0A 20 20 20 20 20 20 20 63 68 61 72 61 63 74 65    .       characte
023240:  72 20 20 75 6E 72 65 61 64 61 62 6C 65 2E 20 20    r  unreadable.  
023250:  49 6E 20 20 70 61 72 74 69 63 75 6C 61 72 20 20    In  particular  
023260:  74 68 65 20 20 63 75 72 73 6F 72 20 20 62 6C 6F    the  cursor  blo
023270:  62 20 20 77 69 6C 6C 20 20 63 61 75 73 65 0D 0A    b  will  cause..
023280:  20 20 20 20 20 20 20 63 6F 6E 66 75 73 69 6F 6E           confusion
023290:  20 61 6E 64 20 73 6F 20 73 68 6F 75 6C 64 20 6E     and so should n
0232A0:  6F 74 20 62 65 20 6F 6E 20 74 68 65 20 73 63 72    ot be on the scr
0232B0:  65 65 6E 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    een.......      
0232C0:  20 53 70 65 63 69 61 6C 20 20 70 72 65 63 61 75     Special  precau
0232D0:  74 69 6F 6E 73 20 20 61 72 65 20 20 74 61 6B 65    tions  are  take
0232E0:  6E 20 20 61 67 61 69 6E 73 74 20 20 67 65 6E 65    n  against  gene
0232F0:  72 61 74 69 6E 67 20 20 69 6E 76 65 72 73 65 20    rating  inverse 
023300:  20 20 73 70 61 63 65 0D 0A 20 20 20 20 20 20 20      space..       
023310:  28 63 68 61 72 61 63 74 65 72 20 20 23 38 46 29    (character  #8F)
023320:  2E 20 20 49 6E 69 74 69 61 6C 6C 79 20 20 74 68    .  Initially  th
023330:  65 20 20 63 68 61 72 61 63 74 65 72 20 20 69 73    e  character  is
023340:  20 20 72 65 61 64 20 20 61 73 73 75 6D 69 6E 67      read  assuming
023350:  20 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 62       the..       b
023360:  61 63 6B 67 72 6F 75 6E 64 20 74 6F 20 74 68 65    ackground to the
023370:  20 63 68 61 72 61 63 74 65 72 20 77 61 73 20 77     character was w
023380:  72 69 74 74 65 6E 20 69 6E 20 74 68 65 20 63 75    ritten in the cu
023390:  72 72 65 6E 74 20 70 61 70 65 72 20 20 69 6E 6B    rrent paper  ink
0233A0:  2E 20 20 49 66 0D 0A 20 20 20 20 20 20 20 74 68    .  If..       th
0233B0:  69 73 20 66 61 69 6C 73 20 74 6F 20 20 67 65 6E    is fails to  gen
0233C0:  65 72 61 74 65 20 20 61 20 20 72 65 63 6F 67 6E    erate  a  recogn
0233D0:  69 73 61 62 6C 65 20 20 63 68 61 72 61 63 74 65    isable  characte
0233E0:  72 20 20 6F 72 20 20 69 74 20 20 67 65 6E 65 72    r  or  it  gener
0233F0:  61 74 65 73 0D 0A 20 20 20 20 20 20 20 69 6E 76    ates..       inv
023400:  65 72 73 65 20 73 70 61 63 65 20 74 68 65 6E 20    erse space then 
023410:  61 6E 6F 74 68 65 72 20 74 72 79 20 69 73 20 6D    another try is m
023420:  61 64 65 20 62 79 20 61 73 73 75 6D 69 6E 67 20    ade by assuming 
023430:  74 68 61 74 20 74 68 65 20 20 63 68 61 72 61 63    that the  charac
023440:  74 65 72 0D 0A 20 20 20 20 20 20 20 77 61 73 20    ter..       was 
023450:  77 72 69 74 74 65 6E 20 69 6E 20 74 68 65 20 63    written in the c
023460:  75 72 72 65 6E 74 20 70 65 6E 20 69 6E 6B 2E 0D    urrent pen ink..
023470:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
023480:  41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36    AMSTRAD CPC464/6
023490:  36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45    64/6128 FIRMWARE
0234A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0234B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
0234C0:  65 20 31 36 2E 35 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    e 16.5..........
0234D0:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 63    ....       The c
0234E0:  68 61 72 61 63 74 65 72 73 20 61 72 65 20 73 63    haracters are sc
0234F0:  61 6E 6E 65 64 20 73 74 61 72 74 69 6E 67 20 77    anned starting w
023500:  69 74 68 20 23 30 30 20 61 6E 64 20 66 69 6E 69    ith #00 and fini
023510:  73 68 69 6E 67 20 20 77 69 74 68 20 20 23 46 46    shing  with  #FF
023520:  2E 0D 0A 20 20 20 20 20 20 20 54 68 75 73 2C 20    ...       Thus, 
023530:  69 66 20 74 68 65 72 65 20 61 72 65 20 74 77 6F    if there are two
023540:  20 70 6F 73 73 69 62 6C 65 20 20 63 68 61 72 61     possible  chara
023550:  63 74 65 72 20 20 6D 61 74 72 69 63 65 73 20 20    cter  matrices  
023560:  74 68 61 74 20 20 6D 61 74 63 68 20 20 74 68 65    that  match  the
023570:  0D 0A 20 20 20 20 20 20 20 73 63 72 65 65 6E 2C    ..       screen,
023580:  20 74 68 65 20 73 6D 61 6C 6C 65 72 20 6F 66 20     the smaller of 
023590:  74 68 65 20 74 77 6F 20 63 68 61 72 61 63 74 65    the two characte
0235A0:  72 20 6E 75 6D 62 65 72 73 20 77 69 6C 6C 20 62    r numbers will b
0235B0:  65 20 72 65 74 75 72 6E 65 64 2E 0D 0A 0D 0A 0D    e returned......
0235C0:  0A 20 20 20 20 20 20 20 54 68 69 73 20 69 6E 64    .       This ind
0235D0:  69 72 65 63 74 69 6F 6E 20 69 73 20 73 65 74 20    irection is set 
0235E0:  75 70 20 77 68 65 6E 20 54 58 54 20 49 4E 49 54    up when TXT INIT
0235F0:  49 41 4C 49 53 45 20 6F 72 20 54 58 54 20 52 45    IALISE or TXT RE
023600:  53 45 54 20 69 73 20 63 61 6C 6C 65 64 2E 0D 0A    SET is called...
023610:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C    ......       Rel
023620:  61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D    ated entries:...
023630:  0A 0D 0A 20 20 20 20 20 20 20 54 58 54 20 52 44    ...       TXT RD
023640:  20 43 48 41 52 0D 0A 20 20 20 20 20 20 20 54 58     CHAR..       TX
023650:  54 20 57 52 49 54 45 20 43 48 41 52 0D 0A 0D 0A    T WRITE CHAR....
023660:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
023670:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
023680:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
023690:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
0236A0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
0236B0:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ........       A
0236C0:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
0236D0:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
0236E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0236F0:  20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65                page
023700:  20 31 36 2E 36 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D     16.6...........
023710:  0A 0D 0A 20 20 20 20 20 20 20 49 4E 44 3A 20 54    ...       IND: T
023720:  58 54 20 4F 55 54 20 41 43 54 49 4F 4E 20 20 20    XT OUT ACTION   
023730:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
023740:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
023750:  20 20 20 20 20 20 20 20 20 20 20 23 42 44 44 39               #BDD9
023760:  0D 0A 0D 0A 20 20 20 20 20 20 20 4F 75 74 70 75    ....       Outpu
023770:  74 20 61 20 63 68 61 72 61 63 74 65 72 20 6F 72    t a character or
023780:  20 63 6F 6E 74 72 6F 6C 20 63 6F 64 65 2E 0D 0A     control code...
023790:  0D 0A 20 20 20 20 20 20 20 44 65 66 61 75 6C 74    ..       Default
0237A0:  20 61 63 74 69 6F 6E 3A 0D 0A 0D 0A 20 20 20 20     action:....    
0237B0:  20 20 20 50 72 69 6E 74 20 61 20 63 68 61 72 61       Print a chara
0237C0:  63 74 65 72 20 6F 6E 20 74 68 65 20 73 63 72 65    cter on the scre
0237D0:  65 6E 20 6F 72 20 6F 62 65 79 20 61 20 63 6F 6E    en or obey a con
0237E0:  74 72 6F 6C 20 63 6F 64 65 20 28 63 68 61 72 61    trol code (chara
0237F0:  63 74 65 72 20 23 30 30 2E 0D 0A 20 20 20 20 20    cter #00...     
023800:  20 20 2E 23 31 46 29 2E 20 57 6F 72 6B 73 20 6F      .#1F). Works o
023810:  6E 20 74 68 65 20 63 75 72 72 65 6E 74 6C 79 20    n the currently 
023820:  73 65 6C 65 63 74 65 64 20 73 74 72 65 61 6D 20    selected stream 
023830:  28 65 78 63 65 70 74 20 61 73 20 6E 6F 74 65 64    (except as noted
023840:  20 62 65 6C 6F 77 29 2E 0D 0A 0D 0A 20 20 20 20     below).....    
023850:  20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69       Entry conditi
023860:  6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ons:....       A
023870:  20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 63 68     contains the ch
023880:  61 72 61 63 74 65 72 20 6F 72 20 63 6F 64 65 2E    aracter or code.
023890:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20    ....       Exit 
0238A0:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20    conditions:.... 
0238B0:  20 20 20 20 20 20 41 46 2C 20 42 43 2C 20 44 45          AF, BC, DE
0238C0:  20 61 6E 64 20 48 4C 20 63 6F 72 72 75 70 74 2E     and HL corrupt.
0238D0:  0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68    ..       All oth
0238E0:  65 72 20 72 65 67 69 73 74 65 72 73 20 70 72 65    er registers pre
0238F0:  73 65 72 76 65 64 2E 0D 0A 0D 0A 20 20 20 20 20    served.....     
023900:  20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 20 20 20 20      Notes:....    
023910:  20 20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74       This indirect
023920:  69 6F 6E 20 69 73 20 63 61 6C 6C 65 64 20 62 79    ion is called by
023930:  20 54 58 54 20 4F 55 54 50 55 54 20 74 6F 20 64     TXT OUTPUT to d
023940:  6F 20 74 68 65 20 20 77 6F 72 6B 20 20 6F 66 20    o the  work  of 
023950:  20 70 72 69 6E 74 69 6E 67 0D 0A 20 20 20 20 20     printing..     
023960:  20 20 63 68 61 72 61 63 74 65 72 73 20 6F 72 20      characters or 
023970:  6F 62 65 79 69 6E 67 20 74 68 65 20 63 6F 6E 74    obeying the cont
023980:  72 6F 6C 20 63 6F 64 65 73 2E 20 49 74 20 69 73    rol codes. It is
023990:  20 70 72 6F 76 69 64 65 64 20 74 6F 20 20 61 6C     provided to  al
0239A0:  6C 6F 77 20 20 74 68 65 0D 0A 20 20 20 20 20 20    low  the..      
0239B0:  20 75 73 65 72 20 74 6F 20 63 68 61 6E 67 65 20     user to change 
0239C0:  74 68 65 20 6D 65 74 68 6F 64 20 6F 66 20 64 65    the method of de
0239D0:  61 6C 69 6E 67 20 77 69 74 68 20 63 68 61 72 61    aling with chara
0239E0:  63 74 65 72 73 20 61 6E 64 20 63 6F 6E 74 72 6F    cters and contro
0239F0:  6C 20 63 6F 64 65 73 0D 0A 20 20 20 20 20 20 20    l codes..       
023A00:  6F 72 20 74 6F 20 61 6C 6C 6F 77 20 74 68 65 20    or to allow the 
023A10:  75 73 65 72 20 74 6F 20 72 65 64 69 72 65 63 74    user to redirect
023A20:  20 6F 75 74 70 75 74 20 28 74 6F 20 74 68 65 20     output (to the 
023A30:  70 72 69 6E 74 65 72 20 66 6F 72 20 20 65 78 61    printer for  exa
023A40:  6D 70 6C 65 29 2E 0D 0A 20 20 20 20 20 20 20 54    mple)...       T
023A50:  58 54 20 4F 55 54 50 55 54 20 6D 65 72 65 6C 79    XT OUTPUT merely
023A60:  20 70 72 65 73 65 72 76 65 73 20 74 68 65 20 72     preserves the r
023A70:  65 67 69 73 74 65 72 73 20 61 72 6F 75 6E 64 20    egisters around 
023A80:  74 68 65 20 63 61 6C 6C 20 6F 66 20 20 54 58 54    the call of  TXT
023A90:  20 20 4F 55 54 0D 0A 20 20 20 20 20 20 20 41 43      OUT..       AC
023AA0:  54 49 4F 4E 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    TION.....       
023AB0:  43 6F 6E 74 72 6F 6C 20 63 6F 64 65 73 20 6D 61    Control codes ma
023AC0:  79 20 74 61 6B 65 20 75 70 20 74 6F 20 39 20 70    y take up to 9 p
023AD0:  61 72 61 6D 65 74 65 72 73 2E 20 54 68 65 73 65    arameters. These
023AE0:  20 20 61 72 65 20 20 74 68 65 20 20 63 68 61 72      are  the  char
023AF0:  61 63 74 65 72 73 0D 0A 20 20 20 20 20 20 20 73    acters..       s
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:  65 6E 74 20 66 6F 6C 6C 6F 77 69 6E 67 20 74 68    ent following th
023C10:  65 20 69 6E 69 74 69 61 6C 20 20 63 6F 6E 74 72    e initial  contr
023C20:  6F 6C 20 20 63 6F 64 65 2E 20 20 54 68 65 20 20    ol  code.  The  
023C30:  63 68 61 72 61 63 74 65 72 73 20 20 73 65 6E 74    characters  sent
023C40:  20 20 61 72 65 0D 0A 20 20 20 20 20 20 20 73 74      are..       st
023C50:  6F 72 65 64 20 69 6E 20 61 20 62 75 66 66 65 72    ored in a buffer
023C60:  20 75 6E 74 69 6C 20 73 75 66 66 69 63 69 65 6E     until sufficien
023C70:  74 20 68 61 76 65 20 62 65 65 6E 20 72 65 63 65    t have been rece
023C80:  69 76 65 64 20 74 6F 20 6D 61 6B 65 20 75 70 20    ived to make up 
023C90:  20 61 6C 6C 0D 0A 20 20 20 20 20 20 20 74 68 65     all..       the
023CA0:  20 72 65 71 75 69 72 65 64 20 70 61 72 61 6D 65     required parame
023CB0:  74 65 72 73 2E 20 54 68 65 20 63 6F 6E 74 72 6F    ters. The contro
023CC0:  6C 20 63 6F 64 65 20 62 75 66 66 65 72 20 69 73    l code buffer is
023CD0:  20 6F 6E 6C 79 20 20 6C 6F 6E 67 20 20 65 6E 6F     only  long  eno
023CE0:  75 67 68 0D 0A 20 20 20 20 20 20 20 74 6F 20 61    ugh..       to a
023CF0:  63 63 65 70 74 20 39 20 70 61 72 61 6D 65 74 65    ccept 9 paramete
023D00:  72 20 63 68 61 72 61 63 74 65 72 73 2E 0D 0A 0D    r characters....
023D10:  0A 20 20 20 20 20 20 20 54 68 65 72 65 20 69 73    .       There is
023D20:  20 6F 6E 6C 79 20 6F 6E 65 20 63 6F 6E 74 72 6F     only one contro
023D30:  6C 20 63 6F 64 65 20 62 75 66 66 65 72 20 77 68    l code buffer wh
023D40:  69 63 68 20 69 73 20 73 68 61 72 65 64 20 62 65    ich is shared be
023D50:  74 77 65 65 6E 20 61 6C 6C 20 20 74 68 65 0D 0A    tween all  the..
023D60:  20 20 20 20 20 20 20 73 74 72 65 61 6D 73 2E 20           streams. 
023D70:  49 74 20 69 73 2C 20 74 68 65 72 65 66 6F 72 65    It is, therefore
023D80:  20 70 6F 73 73 69 62 6C 65 20 74 6F 20 67 65 74     possible to get
023D90:  20 75 6E 70 72 65 64 69 63 74 61 62 6C 65 20 72     unpredictable r
023DA0:  65 73 75 6C 74 73 20 69 66 20 74 68 65 0D 0A 20    esults if the.. 
023DB0:  20 20 20 20 20 20 6F 75 74 70 75 74 20 73 74 72          output str
023DC0:  65 61 6D 20 69 73 20 63 68 61 6E 67 65 64 20 70    eam is changed p
023DD0:  61 72 74 20 6F 66 20 74 68 65 20 77 61 79 20 20    art of the way  
023DE0:  74 68 72 6F 75 67 68 20 20 73 65 6E 64 69 6E 67    through  sending
023DF0:  20 20 61 20 20 63 6F 6E 74 72 6F 6C 0D 0A 20 20      a  control..  
023E00:  20 20 20 20 20 63 6F 64 65 20 73 65 71 75 65 6E         code sequen
023E10:  63 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66    ce.....       If
023E20:  20 74 68 65 20 56 44 55 20 69 73 20 64 69 73 61     the VDU is disa
023E30:  62 6C 65 64 20 74 68 65 6E 20 6E 6F 20 20 63 68    bled then no  ch
023E40:  61 72 61 63 74 65 72 73 20 20 77 69 6C 6C 20 20    aracters  will  
023E50:  62 65 20 20 70 72 69 6E 74 65 64 20 20 6F 6E 20    be  printed  on 
023E60:  20 74 68 65 0D 0A 20 20 20 20 20 20 20 73 63 72     the..       scr
023E70:  65 65 6E 2E 20 49 6E 20 56 31 2E 31 20 66 69 72    een. In V1.1 fir
023E80:  6D 77 61 72 65 20 63 6F 6E 74 72 6F 6C 20 63 6F    mware control co
023E90:  64 65 73 20 74 68 61 74 20 61 72 65 20 20 73 70    des that are  sp
023EA0:  65 63 69 61 6C 6C 79 20 20 6D 61 72 6B 65 64 20    ecially  marked 
023EB0:  20 69 6E 0D 0A 20 20 20 20 20 20 20 74 68 65 20     in..       the 
023EC0:  63 6F 6E 74 72 6F 6C 20 63 6F 64 65 20 74 61 62    control code tab
023ED0:  6C 65 20 77 69 6C 6C 20 6E 6F 74 20 62 65 20 6F    le will not be o
023EE0:  62 65 79 65 64 20 20 69 66 20 20 74 68 65 20 20    beyed  if  the  
023EF0:  56 44 55 20 20 69 73 20 20 64 69 73 61 62 6C 65    VDU  is  disable
023F00:  64 2E 0D 0A 20 20 20 20 20 20 20 4F 74 68 65 72    d...       Other
023F10:  20 63 6F 6E 74 72 6F 6C 20 63 6F 64 65 73 20 61     control codes a
023F20:  6E 64 20 61 6C 6C 20 63 6F 6E 74 72 6F 6C 20 63    nd all control c
023F30:  6F 64 65 73 20 69 6E 20 20 56 31 2E 30 20 20 66    odes in  V1.0  f
023F40:  69 72 6D 77 61 72 65 20 20 77 69 6C 6C 20 20 62    irmware  will  b
023F50:  65 0D 0A 20 20 20 20 20 20 20 6F 62 65 79 65 64    e..       obeyed
023F60:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74    .....       If t
023F70:  68 65 20 67 72 61 70 68 69 63 73 20 63 68 61 72    he graphics char
023F80:  61 63 74 65 72 20 77 72 69 74 65 20 6D 6F 64 65    acter write mode
023F90:  20 69 73 20 65 6E 61 62 6C 65 64 20 20 74 68 65     is enabled  the
023FA0:  6E 20 20 61 6C 6C 20 20 63 68 61 72 61 63 74 65    n  all  characte
023FB0:  72 73 0D 0A 20 20 20 20 20 20 20 61 6E 64 20 63    rs..       and c
023FC0:  6F 6E 74 72 6F 6C 20 63 6F 64 65 73 20 61 72 65    ontrol codes are
023FD0:  20 70 72 69 6E 74 65 64 20 75 73 69 6E 67 20 74     printed using t
023FE0:  68 65 20 47 72 61 70 68 69 63 73 20 56 44 55 20    he Graphics VDU 
023FF0:  28 73 65 65 20 47 52 41 20 57 52 20 43 48 41 52    (see GRA WR CHAR
024000:  29 0D 0A 20 20 20 20 20 20 20 61 6E 64 20 61 72    )..       and ar
024010:  65 20 6E 6F 74 20 6F 62 65 79 65 64 2E 20 4E 6F    e not obeyed. No
024020:  72 6D 61 6C 6C 79 20 63 68 61 72 61 63 74 65 72    rmally character
024030:  73 20 61 72 65 20 77 72 69 74 74 65 6E 20 62 79    s are written by
024040:  20 20 74 68 65 20 20 54 65 78 74 20 20 56 44 55      the  Text  VDU
024050:  0D 0A 20 20 20 20 20 20 20 28 73 65 65 20 54 58    ..       (see TX
024060:  54 20 57 52 20 43 48 41 52 29 2E 0D 0A 0D 0A 20    T WR CHAR)..... 
024070:  20 20 20 20 20 20 54 68 69 73 20 69 6E 64 69 72          This indir
024080:  65 63 74 69 6F 6E 20 69 73 20 73 65 74 20 75 70    ection is set up
024090:  20 77 68 65 6E 20 54 58 54 20 49 4E 49 54 49 41     when TXT INITIA
0240A0:  4C 49 53 45 20 6F 72 20 54 58 54 20 52 45 53 45    LISE or TXT RESE
0240B0:  54 20 69 73 20 63 61 6C 6C 65 64 2E 0D 0A 0D 0A    T is called.....
0240C0:  20 20 20 20 20 20 20 52 65 6C 61 74 65 64 20 65           Related e
0240D0:  6E 74 72 69 65 73 3A 0D 0A 0D 0A 20 20 20 20 20    ntries:....     
0240E0:  20 20 54 58 54 20 4F 55 54 50 55 54 0D 0A 20 20      TXT OUTPUT..  
0240F0:  20 20 20 20 20 54 58 54 20 57 52 20 43 48 41 52         TXT WR CHAR
024100:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
024110:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
024120:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
024130:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
024140:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61                  pa
024150:  67 65 20 31 36 2E 37 0D 0A 0D 0A 0D 0A 0D 0A 0D    ge 16.7.........
024160:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 4E 44 3A    .....       IND:
024170:  20 47 52 41 20 50 4C 4F 54 20 20 20 20 20 20 20     GRA PLOT       
024180:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
024190:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0241A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 23 42 44                 #BD
0241B0:  44 43 0D 0A 0D 0A 20 20 20 20 20 20 20 50 6C 6F    DC....       Plo
0241C0:  74 20 61 20 70 6F 69 6E 74 2E 0D 0A 0D 0A 20 20    t a point.....  
0241D0:  20 20 20 20 20 44 65 66 61 75 6C 74 20 61 63 74         Default act
0241E0:  69 6F 6E 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 43    ion:....       C
0241F0:  68 65 63 6B 20 69 66 20 74 68 65 20 70 6F 69 6E    heck if the poin
024200:  74 20 6C 69 65 73 20 69 6E 73 69 64 65 20 74 68    t lies inside th
024210:  65 20 63 75 72 72 65 6E 74 20 77 69 6E 64 6F 77    e current window
024220:  20 61 6E 64 20 69 66 20 73 6F 20 20 77 72 69 74     and if so  writ
024230:  65 20 20 69 74 0D 0A 20 20 20 20 20 20 20 69 6E    e  it..       in
024240:  20 74 68 65 20 63 75 72 72 65 6E 74 20 67 72 61     the current gra
024250:  70 68 69 63 73 20 70 65 6E 20 69 6E 6B 20 61 6E    phics pen ink an
024260:  64 20 75 73 69 6E 67 20 74 68 65 20 63 75 72 72    d using the curr
024270:  65 6E 74 20 20 67 72 61 70 68 69 63 73 20 20 77    ent  graphics  w
024280:  72 69 74 65 0D 0A 20 20 20 20 20 20 20 6D 6F 64    rite..       mod
024290:  65 2E 20 54 68 65 20 63 75 72 72 65 6E 74 20 67    e. The current g
0242A0:  72 61 70 68 69 63 73 20 70 6F 73 69 74 69 6F 6E    raphics position
0242B0:  20 69 20 61 6C 77 61 79 73 20 6D 6F 76 65 64 20     i always moved 
0242C0:  20 74 6F 20 20 74 68 65 20 20 73 70 65 63 69 66     to  the  specif
0242D0:  69 65 64 0D 0A 20 20 20 20 20 20 20 70 6F 69 6E    ied..       poin
0242E0:  74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    t.......       E
0242F0:  6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    ntry conditions:
024300:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 44 45 20    ......       DE 
024310:  63 6F 6E 74 61 69 6E 73 20 74 68 65 20 75 73 65    contains the use
024320:  72 20 58 20 63 6F 6F 72 64 69 6E 61 74 65 20 6F    r X coordinate o
024330:  66 20 74 68 65 20 70 6F 69 6E 74 20 74 6F 20 70    f the point to p
024340:  6C 6F 74 2E 0D 0A 20 20 20 20 20 20 20 48 4C 20    lot...       HL 
024350:  63 6F 6E 74 61 69 6E 73 20 74 68 65 20 75 73 65    contains the use
024360:  72 20 59 20 63 6F 6F 72 64 69 6E 61 74 65 20 6F    r Y coordinate o
024370:  66 20 74 68 65 20 70 6F 69 6E 74 20 74 6F 20 70    f the point to p
024380:  6C 6F 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    lot.......      
024390:  20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73     Exit conditions
0243A0:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 46    :......       AF
0243B0:  2C 20 42 43 2C 20 44 45 20 61 6E 64 20 48 4C 20    , BC, DE and HL 
0243C0:  63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20    corrupt...      
0243D0:  20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73     All other regis
0243E0:  74 65 72 73 20 70 72 65 73 65 72 76 65 64 2E 0D    ters preserved..
0243F0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65    .....       Note
024400:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    s:......       T
024410:  68 65 20 70 6F 73 69 74 69 6F 6E 20 6F 66 20 74    he position of t
024420:  68 65 20 70 6F 69 6E 74 20 74 6F 20 70 6C 6F 74    he point to plot
024430:  20 69 73 20 67 69 76 65 6E 20 69 6E 20 75 73 65     is given in use
024440:  72 20 20 63 6F 6F 72 64 69 6E 61 74 65 73 2C 20    r  coordinates, 
024450:  20 69 2E 65 2E 0D 0A 20 20 20 20 20 20 20 72 65     i.e...       re
024460:  6C 61 74 69 76 65 20 74 6F 20 74 68 65 20 75 73    lative to the us
024470:  65 72 20 6F 72 69 67 69 6E 2E 0D 0A 0D 0A 0D 0A    er origin.......
024480:  20 20 20 20 20 20 20 54 68 69 73 20 69 6E 64 69           This indi
024490:  72 65 63 74 69 6F 6E 20 69 73 20 63 61 6C 6C 65    rection is calle
0244A0:  64 20 62 79 20 47 52 41 20 50 4C 4F 54 20 52 45    d by GRA PLOT RE
0244B0:  4C 41 54 49 56 45 20 61 6E 64 20 47 52 41 20 50    LATIVE and GRA P
0244C0:  4C 4F 54 20 20 41 42 53 4F 4C 55 54 45 0D 0A 20    LOT  ABSOLUTE.. 
0244D0:  20 20 20 20 20 20 74 6F 20 70 6C 6F 74 20 74 68          to plot th
0244E0:  65 20 70 6F 69 6E 74 20 72 65 71 75 65 73 74 65    e point requeste
0244F0:  64 2E 20 49 74 20 69 73 20 20 70 72 6F 76 69 64    d. It is  provid
024500:  65 64 20 20 74 6F 20 20 61 6C 6C 6F 77 20 20 74    ed  to  allow  t
024510:  68 65 20 20 75 73 65 72 20 20 74 6F 0D 0A 20 20    he  user  to..  
024520:  20 20 20 20 20 63 68 61 6E 67 65 20 74 68 65 20         change the 
024530:  6D 65 74 68 6F 64 20 66 6F 72 20 70 6C 6F 74 74    method for plott
024540:  69 6E 67 20 20 28 74 6F 20 20 6F 75 74 70 75 74    ing  (to  output
024550:  20 20 74 6F 20 20 61 6E 20 20 58 2D 59 20 20 70      to  an  X-Y  p
024560:  6C 6F 74 74 65 72 20 20 66 6F 72 0D 0A 20 20 20    lotter  for..   
024570:  20 20 20 20 65 78 61 6D 70 6C 65 29 2E 20 47 52        example). GR
024580:  41 20 50 4C 4F 54 20 52 45 4C 41 54 49 56 45 20    A PLOT RELATIVE 
024590:  63 6F 6E 76 65 72 74 73 20 66 72 6F 6D 20 72 65    converts from re
0245A0:  6C 61 74 69 76 65 20 74 6F 20 75 73 65 72 20 63    lative to user c
0245B0:  6F 6F 72 64 69 6E 61 74 65 73 0D 0A 20 20 20 20    oordinates..    
0245C0:  20 20 20 61 6E 64 20 20 74 68 65 6E 20 20 63 61       and  then  ca
0245D0:  6C 6C 73 20 20 74 68 69 73 20 20 69 6E 64 69 72    lls  this  indir
0245E0:  65 63 74 69 6F 6E 3B 20 20 47 52 41 20 20 50 4C    ection;  GRA  PL
0245F0:  4F 54 20 20 41 42 53 4F 4C 55 54 45 20 20 63 61    OT  ABSOLUTE  ca
024600:  6C 6C 73 20 20 74 68 69 73 0D 0A 20 20 20 20 20    lls  this..     
024610:  20 20 69 6E 64 69 72 65 63 74 69 6F 6E 20 69 6D      indirection im
024620:  6D 65 64 69 61 74 65 6C 79 2E 0D 0A 0D 0A 0D 0A    mediately.......
024630:  20 20 20 20 20 20 20 54 6F 20 77 72 69 74 65 20           To write 
024640:  74 68 65 20 70 6F 69 6E 74 20 6F 6E 20 74 68 65    the point on the
024650:  20 73 63 72 65 65 6E 20 74 68 65 20 53 43 52 20     screen the SCR 
024660:  57 52 49 54 45 20 20 69 6E 64 69 72 65 63 74 69    WRITE  indirecti
024670:  6F 6E 20 20 69 73 20 20 75 73 65 64 2E 0D 0A 20    on  is  used... 
024680:  20 20 20 20 20 20 54 68 75 73 20 74 68 65 20 70          Thus the p
024690:  6F 69 6E 74 20 69 73 20 70 6C 6F 74 74 65 64 20    oint is plotted 
0246A0:  75 73 69 6E 67 20 74 68 65 20 63 75 72 72 65 6E    using the curren
0246B0:  74 20 67 72 61 70 68 69 63 73 20 77 72 69 74 65    t graphics write
0246C0:  20 6D 6F 64 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20     mode.......    
0246D0:  20 20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74       This indirect
0246E0:  69 6F 6E 20 69 73 20 73 65 74 20 75 70 20 77 68    ion is set up wh
0246F0:  65 6E 20 47 52 41 20 49 4E 49 54 49 41 4C 49 53    en GRA INITIALIS
024700:  45 20 6F 72 20 47 52 41 20 52 45 53 45 54 20 69    E or GRA RESET i
024710:  73 20 63 61 6C 6C 65 64 2E 0D 0A 0D 0A 0D 0A 0D    s called........
024720:  0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64 20    .       Related 
024730:  65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 20 20 20 20    entries:....    
024740:  20 20 20 47 52 41 20 50 4C 4F 54 20 41 42 53 4F       GRA PLOT ABSO
024750:  4C 55 54 45 0D 0A 20 20 20 20 20 20 20 47 52 41    LUTE..       GRA
024760:  20 50 4C 4F 54 20 52 45 4C 41 54 49 56 45 0D 0A     PLOT RELATIVE..
024770:  20 20 20 20 20 20 20 47 52 41 20 54 45 53 54 0D           GRA TEST.
024780:  0A 20 20 20 20 20 20 20 53 43 52 20 57 52 49 54    .       SCR WRIT
024790:  45 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    E..........     
0247A0:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
0247B0:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
0247C0:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
0247D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                   p
0247E0:  61 67 65 20 31 36 2E 38 0D 0A 0D 0A 0D 0A 0D 0A    age 16.8........
0247F0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 49 4E 44    ......       IND
024800:  3A 20 47 52 41 20 54 45 53 54 20 20 20 20 20 20    : GRA TEST      
024810:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
024820:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
024830:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 42                  #B
024840:  44 44 46 0D 0A 0D 0A 20 20 20 20 20 20 20 54 65    DDF....       Te
024850:  73 74 20 61 20 70 6F 69 6E 74 2E 0D 0A 0D 0A 20    st a point..... 
024860:  20 20 20 20 20 20 44 65 66 61 75 6C 74 20 61 63          Default ac
024870:  74 69 6F 6E 3A 0D 0A 0D 0A 20 20 20 20 20 20 20    tion:....       
024880:  43 68 65 63 6B 20 69 66 20 74 68 65 20 70 6F 69    Check if the poi
024890:  6E 74 20 69 6E 73 69 64 65 20 74 68 65 20 67 72    nt inside the gr
0248A0:  61 70 68 69 63 73 20 77 69 6E 64 6F 77 20 61 6E    aphics window an
0248B0:  64 20 72 65 74 75 72 6E 20 74 68 65 20 69 6E 6B    d return the ink
0248C0:  20 69 74 20 69 73 0D 0A 20 20 20 20 20 20 20 63     it is..       c
0248D0:  75 72 72 65 6E 74 6C 79 20 73 65 74 20 74 6F 20    urrently set to 
0248E0:  69 66 20 73 6F 2E 20 4F 74 68 65 72 77 69 73 65    if so. Otherwise
0248F0:  2C 20 72 65 74 75 72 6E 20 74 68 65 20 20 63 75    , return the  cu
024900:  72 72 65 6E 74 20 20 67 72 61 70 68 69 63 20 20    rrent  graphic  
024910:  70 61 70 65 72 0D 0A 20 20 20 20 20 20 20 69 6E    paper..       in
024920:  6B 2E 20 54 68 65 20 63 75 72 72 65 6E 74 20 67    k. The current g
024930:  72 61 70 68 69 63 73 20 70 6F 73 69 74 69 6F 6E    raphics position
024940:  20 69 73 20 61 6C 77 61 79 73 20 6D 6F 76 65 64     is always moved
024950:  20 20 74 6F 20 20 74 68 65 20 20 73 70 65 63 69      to  the  speci
024960:  66 69 65 64 0D 0A 20 20 20 20 20 20 20 70 6F 69    fied..       poi
024970:  6E 74 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E    nt.....       En
024980:  74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D    try conditions:.
024990:  0A 0D 0A 20 20 20 20 20 20 20 44 45 20 63 6F 6E    ...       DE con
0249A0:  74 61 69 6E 73 20 74 68 65 20 75 73 65 72 20 58    tains the user X
0249B0:  20 63 6F 6F 72 64 69 6E 61 74 65 20 6F 66 20 74     coordinate of t
0249C0:  68 65 20 70 6F 69 6E 74 20 74 6F 20 74 65 73 74    he point to test
0249D0:  2E 0D 0A 20 20 20 20 20 20 20 48 4C 20 63 6F 6E    ...       HL con
0249E0:  74 61 69 6E 73 20 74 68 65 20 75 73 65 72 20 59    tains the user Y
0249F0:  20 63 6F 6F 72 64 69 6E 61 74 65 20 6F 66 20 74     coordinate of t
024A00:  68 65 20 70 6F 69 6E 74 20 74 6F 20 74 65 73 74    he point to test
024A10:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74    .....       Exit
024A20:  20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A     conditions:....
024A30:  20 20 20 20 20 20 20 41 20 63 6F 6E 74 61 69 6E           A contain
024A40:  73 20 74 68 65 20 64 65 63 6F 64 65 64 20 69 6E    s the decoded in
024A50:  6B 20 6F 66 20 74 68 65 20 73 70 65 63 69 66 69    k of the specifi
024A60:  65 64 20 70 6F 69 6E 74 2E 0D 0A 0D 0A 0D 0A 20    ed point....... 
024A70:  20 20 20 20 20 20 42 43 2C 20 44 45 2C 48 4C 20          BC, DE,HL 
024A80:  61 6E 64 20 66 6C 61 67 73 20 63 6F 72 72 75 70    and flags corrup
024A90:  74 2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F    t...       All o
024AA0:  74 68 65 72 20 72 65 67 69 73 74 65 72 73 20 70    ther registers p
024AB0:  72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20    reserved....... 
024AC0:  20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A          Notes:....
024AD0:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 70 6F 73    ..       The pos
024AE0:  69 74 69 6F 6E 20 6F 66 20 74 68 65 20 70 6F 69    ition of the poi
024AF0:  6E 74 20 74 6F 20 70 6C 6F 74 20 69 73 20 67 69    nt to plot is gi
024B00:  76 65 6E 20 69 6E 20 75 73 65 72 20 20 63 6F 6F    ven in user  coo
024B10:  72 64 69 6E 61 74 65 73 2C 20 20 69 2E 65 2E 0D    rdinates,  i.e..
024B20:  0A 20 20 20 20 20 20 20 72 65 6C 61 74 69 76 65    .       relative
024B30:  20 74 6F 20 74 68 65 20 75 73 65 72 20 6F 72 69     to the user ori
024B40:  67 69 6E 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    gin.......      
024B50:  20 54 68 69 73 20 69 6E 64 69 72 65 63 74 69 6F     This indirectio
024B60:  6E 20 69 73 20 75 73 65 64 20 62 79 20 47 52 41    n is used by GRA
024B70:  20 54 45 53 54 20 52 45 4C 41 54 49 56 45 20 61     TEST RELATIVE a
024B80:  6E 64 20 47 52 41 20 54 45 53 54 20 41 42 53 4F    nd GRA TEST ABSO
024B90:  4C 55 54 45 20 74 6F 0D 0A 20 20 20 20 20 20 20    LUTE to..       
024BA0:  74 65 73 74 20 74 68 65 20 70 6F 69 6E 74 20 72    test the point r
024BB0:  65 71 75 65 73 74 65 64 2E 20 49 74 20 69 73 20    equested. It is 
024BC0:  70 72 6F 76 69 64 65 64 20 74 6F 20 61 6C 6C 6F    provided to allo
024BD0:  77 20 74 68 65 20 75 73 65 72 20 20 74 6F 20 20    w the user  to  
024BE0:  63 68 61 6E 67 65 0D 0A 20 20 20 20 20 20 20 74    change..       t
024BF0:  68 65 20 6D 65 74 68 6F 64 20 66 6F 72 20 20 74    he method for  t
024C00:  65 73 74 69 6E 67 20 20 28 63 6F 6D 70 61 72 69    esting  (compari
024C10:  6E 67 20 20 77 69 74 68 20 20 74 68 65 20 20 63    ng  with  the  c
024C20:  75 72 72 65 6E 74 20 20 70 65 6E 20 20 69 6E 6B    urrent  pen  ink
024C30:  20 20 66 6F 72 0D 0A 20 20 20 20 20 20 20 65 78      for..       ex
024C40:  61 6D 70 6C 65 29 2E 20 47 52 41 20 54 45 53 54    ample). GRA TEST
024C50:  20 52 45 4C 41 54 49 56 45 20 63 6F 6E 76 65 72     RELATIVE conver
024C60:  74 73 20 66 72 6F 6D 20 72 65 6C 61 74 69 76 65    ts from relative
024C70:  20 74 6F 20 75 73 65 72 20 63 6F 6F 72 64 69 6E     to user coordin
024C80:  61 74 65 73 0D 0A 20 20 20 20 20 20 20 61 6E 64    ates..       and
024C90:  20 20 74 68 65 6E 20 20 63 61 6C 6C 73 20 20 74      then  calls  t
024CA0:  68 69 73 20 20 69 6E 64 69 72 65 63 74 69 6F 6E    his  indirection
024CB0:  3B 20 20 47 52 41 20 20 54 45 53 54 20 20 41 42    ;  GRA  TEST  AB
024CC0:  53 4F 4C 55 54 45 20 20 63 61 6C 6C 73 20 20 74    SOLUTE  calls  t
024CD0:  68 69 73 0D 0A 20 20 20 20 20 20 20 69 6E 64 69    his..       indi
024CE0:  72 65 63 74 69 6F 6E 20 69 6D 6D 65 64 69 61 74    rection immediat
024CF0:  65 6C 79 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ely.......      
024D00:  20 54 6F 20 74 65 73 74 20 74 68 65 20 69 6E 6B     To test the ink
024D10:  20 6F 66 20 61 20 70 6F 69 6E 74 20 69 6E 73 69     of a point insi
024D20:  64 65 20 74 68 65 20 77 69 6E 64 6F 77 20 74 68    de the window th
024D30:  65 20 53 43 52 20 52 45 41 44 20 20 69 6E 64 69    e SCR READ  indi
024D40:  72 65 63 74 69 6F 6E 0D 0A 20 20 20 20 20 20 20    rection..       
024D50:  69 73 20 75 73 65 64 2E 0D 0A 0D 0A 20 20 20 20    is used.....    
024D60:  20 20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74       This indirect
024D70:  69 6F 6E 20 69 73 20 73 65 74 20 75 70 20 77 68    ion is set up wh
024D80:  65 6E 20 47 52 41 20 49 4E 49 54 49 41 4C 49 53    en GRA INITIALIS
024D90:  45 20 6F 72 20 47 52 41 20 52 45 53 45 54 20 69    E or GRA RESET i
024DA0:  73 20 63 61 6C 6C 65 64 2E 0D 0A 0D 0A 0D 0A 0D    s called........
024DB0:  0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64 20    .       Related 
024DC0:  65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20    entries:......  
024DD0:  20 20 20 20 20 47 52 41 20 50 4C 4F 54 0D 0A 20         GRA PLOT.. 
024DE0:  20 20 20 20 20 20 47 52 41 20 54 45 53 54 20 41          GRA TEST A
024DF0:  42 53 4F 4C 55 54 45 0D 0A 20 20 20 20 20 20 20    BSOLUTE..       
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:  47 52 41 20 54 45 53 54 20 52 45 4C 41 54 49 56    GRA TEST RELATIV
024F10:  45 0D 0A 20 20 20 20 20 20 20 53 43 52 20 52 45    E..       SCR RE
024F20:  41 44 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    AD............  
024F30:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
024F40:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
024F50:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
024F60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
024F70:  20 20 70 61 67 65 20 31 36 2E 39 0D 0A 0D 0A 0D      page 16.9.....
024F80:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
024F90:  49 4E 44 3A 20 47 52 41 20 4C 49 4E 45 20 20 20    IND: GRA LINE   
024FA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
024FB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
024FC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
024FD0:  20 23 42 44 45 32 0D 0A 0D 0A 0D 0A 20 20 20 20     #BDE2......    
024FE0:  20 20 20 44 72 61 77 20 61 20 6C 69 6E 65 2E 0D       Draw a line..
024FF0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 44 65 66 61    .....       Defa
025000:  75 6C 74 20 61 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D    ult action:.....
025010:  0A 20 20 20 20 20 20 20 44 72 61 77 20 61 20 6C    .       Draw a l
025020:  69 6E 65 20 62 65 74 77 65 65 6E 20 20 74 68 65    ine between  the
025030:  20 20 63 75 72 72 65 6E 74 20 20 67 72 61 70 68      current  graph
025040:  69 63 73 20 20 70 6F 73 69 74 69 6F 6E 20 20 61    ics  position  a
025050:  6E 64 20 20 74 68 65 20 20 67 69 76 65 6E 0D 0A    nd  the  given..
025060:  20 20 20 20 20 20 20 65 6E 64 70 6F 69 6E 74 20           endpoint 
025070:  75 73 69 6E 67 20 74 68 65 20 63 75 72 72 65 6E    using the curren
025080:  74 20 67 72 61 70 68 69 63 73 20 77 72 69 74 65    t graphics write
025090:  20 6D 6F 64 65 2E 20 20 50 6F 69 6E 74 73 20 20     mode.  Points  
0250A0:  6F 6E 20 20 74 68 65 20 20 6C 69 6E 65 0D 0A 20    on  the  line.. 
0250B0:  20 20 20 20 20 20 74 68 61 74 20 6C 69 65 20 6F          that lie o
0250C0:  75 74 73 69 64 65 20 74 68 65 20 63 75 72 72 65    utside the curre
0250D0:  6E 74 20 67 72 61 70 68 69 63 73 20 77 69 6E 64    nt graphics wind
0250E0:  6F 77 20 77 69 6C 6C 20 6E 6F 74 20 62 65 20 70    ow will not be p
0250F0:  6C 6F 74 74 65 64 2E 20 20 54 68 65 0D 0A 20 20    lotted.  The..  
025100:  20 20 20 20 20 63 75 72 72 65 6E 74 20 67 72 61         current gra
025110:  70 68 69 63 73 20 70 6F 73 69 74 69 6F 6E 20 69    phics position i
025120:  73 20 61 6C 77 61 79 73 20 6D 6F 76 65 64 20 74    s always moved t
025130:  6F 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20    o the specified 
025140:  65 6E 64 70 6F 69 6E 74 2E 0D 0A 0D 0A 0D 0A 20    endpoint....... 
025150:  20 20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64          Entry cond
025160:  69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20    itions:......   
025170:  20 20 20 20 44 45 20 63 6F 6E 74 61 69 6E 73 20        DE contains 
025180:  74 68 65 20 75 73 65 72 20 58 20 63 6F 6F 72 64    the user X coord
025190:  69 6E 61 74 65 20 6F 66 20 74 68 65 20 65 6E 64    inate of the end
0251A0:  70 6F 69 6E 74 2E 0D 0A 20 20 20 20 20 20 20 48    point...       H
0251B0:  4C 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 75    L contains the u
0251C0:  73 65 72 20 59 20 63 6F 6F 72 64 69 6E 61 74 65    ser Y coordinate
0251D0:  20 6F 66 20 74 68 65 20 65 6E 64 70 6F 69 6E 74     of the endpoint
0251E0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78    .......       Ex
0251F0:  69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    it conditions:..
025200:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 46 2C 20 42    ....       AF, B
025210:  43 2C 20 44 45 20 61 6E 64 20 48 4C 20 63 6F 72    C, DE and HL cor
025220:  72 75 70 74 2E 0D 0A 20 20 20 20 20 20 20 41 6C    rupt...       Al
025230:  6C 20 6F 74 68 65 72 20 72 65 67 69 73 74 65 72    l other register
025240:  73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A    s preserved.....
025250:  0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A 0D    ..       Notes:.
025260:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
025270:  70 6F 73 69 74 69 6F 6E 20 6F 66 20 74 68 65 20    position of the 
025280:  20 65 6E 64 70 6F 69 6E 74 20 20 69 73 20 20 67     endpoint  is  g
025290:  69 76 65 6E 20 20 69 6E 20 20 75 73 65 72 20 20    iven  in  user  
0252A0:  63 6F 6F 72 64 69 6E 61 74 65 73 2C 20 20 69 2E    coordinates,  i.
0252B0:  65 2E 0D 0A 20 20 20 20 20 20 20 72 65 6C 61 74    e...       relat
0252C0:  69 76 65 20 74 6F 20 74 68 65 20 75 73 65 72 20    ive to the user 
0252D0:  6F 72 69 67 69 6E 2E 0D 0A 0D 0A 20 20 20 20 20    origin.....     
0252E0:  20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74 69      This indirecti
0252F0:  6F 6E 20 69 73 20 75 73 65 64 20 62 79 20 47 52    on is used by GR
025300:  41 20 4C 49 4E 45 20 52 45 4C 41 54 49 56 45 20    A LINE RELATIVE 
025310:  61 6E 64 20 47 52 41 20 4C 49 4E 45 20 41 42 53    and GRA LINE ABS
025320:  4F 4C 55 54 45 20 74 6F 0D 0A 20 20 20 20 20 20    OLUTE to..      
025330:  20 64 72 61 77 20 74 68 65 20 6C 69 6E 65 20 73     draw the line s
025340:  70 65 63 69 66 69 65 64 2E 20 49 74 20 69 73 20    pecified. It is 
025350:  70 72 6F 76 69 64 65 64 20 74 6F 20 61 6C 6C 6F    provided to allo
025360:  77 20 74 68 65 20 20 75 73 65 72 20 20 74 6F 20    w the  user  to 
025370:  20 63 68 61 6E 67 65 0D 0A 20 20 20 20 20 20 20     change..       
025380:  74 68 65 20 6D 65 74 68 6F 64 20 66 6F 72 20 6C    the method for l
025390:  69 6E 65 20 64 72 61 77 69 6E 67 20 28 74 6F 20    ine drawing (to 
0253A0:  6F 75 74 70 75 74 20 74 6F 20 61 6E 20 58 2D 59    output to an X-Y
0253B0:  20 70 6C 6F 74 74 65 72 20 66 6F 72 20 65 78 61     plotter for exa
0253C0:  6D 70 6C 65 29 2E 0D 0A 20 20 20 20 20 20 20 47    mple)...       G
0253D0:  52 41 20 4C 49 4E 45 20 52 45 4C 41 54 49 56 45    RA LINE RELATIVE
0253E0:  20 63 6F 6E 76 65 72 74 73 20 66 72 6F 6D 20 72     converts from r
0253F0:  65 6C 61 74 69 76 65 20 74 6F 20 75 73 65 72 20    elative to user 
025400:  63 6F 6F 72 64 69 6E 61 74 65 73 20 61 6E 64 20    coordinates and 
025410:  20 74 68 65 6E 0D 0A 20 20 20 20 20 20 20 63 61     then..       ca
025420:  6C 6C 73 20 20 74 68 65 20 20 69 6E 64 69 72 65    lls  the  indire
025430:  63 74 69 6F 6E 3B 20 20 47 52 41 20 20 4C 49 4E    ction;  GRA  LIN
025440:  45 20 20 41 42 53 4F 4C 55 54 45 20 20 63 61 6C    E  ABSOLUTE  cal
025450:  6C 73 20 20 74 68 65 20 20 69 6E 64 69 72 65 63    ls  the  indirec
025460:  74 69 6F 6E 0D 0A 20 20 20 20 20 20 20 69 6D 6D    tion..       imm
025470:  65 64 69 61 74 65 6C 79 2E 0D 0A 0D 0A 20 20 20    ediately.....   
025480:  20 20 20 20 54 68 65 20 6C 69 6E 65 20 69 73 20        The line is 
025490:  73 70 6C 69 74 20 75 70 20 69 6E 74 6F 20 68 6F    split up into ho
0254A0:  72 69 7A 6F 6E 74 61 6C 20 6F 72 20 20 76 65 72    rizontal or  ver
0254B0:  74 69 63 61 6C 20 20 73 65 63 74 69 6F 6E 73 20    tical  sections 
0254C0:  20 74 68 61 74 20 20 61 72 65 0D 0A 20 20 20 20     that  are..    
0254D0:  20 20 20 64 72 61 77 6E 20 73 65 70 61 72 61 74       drawn separat
0254E0:  65 6C 79 20 28 73 65 65 20 53 43 52 20 48 4F 52    ely (see SCR HOR
0254F0:  49 5A 4F 4E 54 41 4C 20 61 6E 64 20 53 43 52 20    IZONTAL and SCR 
025500:  56 45 52 54 49 43 41 4C 29 2E 20 54 68 65 20 53    VERTICAL). The S
025510:  43 52 20 20 57 52 49 54 45 0D 0A 20 20 20 20 20    CR  WRITE..     
025520:  20 20 69 6E 64 69 72 65 63 74 69 6F 6E 20 69 73      indirection is
025530:  20 63 61 6C 6C 65 64 20 74 6F 20 77 72 69 74 65     called to write
025540:  20 70 6F 69 6E 74 73 20 69 6E 20 74 68 65 73 65     points in these
025550:  20 20 73 65 63 74 69 6F 6E 73 2E 20 20 54 68 69      sections.  Thi
025560:  73 20 20 6D 65 61 6E 73 0D 0A 20 20 20 20 20 20    s  means..      
025570:  20 74 68 61 74 20 74 68 65 20 6C 69 6E 65 20 69     that the line i
025580:  73 20 70 6C 6F 74 74 65 64 20 75 73 69 6E 67 20    s plotted using 
025590:  74 68 65 20 63 75 72 72 65 6E 74 20 67 72 61 70    the current grap
0255A0:  68 69 63 73 20 77 72 69 74 65 20 6D 6F 64 65 2E    hics write mode.
0255B0:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 6E 20 56 31    ....       In V1
0255C0:  2E 30 20 66 69 72 6D 77 61 72 65 20 74 68 65 20    .0 firmware the 
0255D0:  6C 69 6E 65 20 69 73 20 70 6C 6F 74 74 65 64 20    line is plotted 
0255E0:  69 6E 20 74 68 65 20 63 75 72 72 65 6E 74 20 70    in the current p
0255F0:  65 6E 20 20 69 6E 6B 2E 20 20 42 75 74 20 20 69    en  ink.  But  i
025600:  6E 0D 0A 20 20 20 20 20 20 20 56 31 2E 31 20 74    n..       V1.1 t
025610:  68 65 20 73 65 74 74 69 6E 67 20 6F 66 20 74 68    he setting of th
025620:  65 20 6C 69 6E 65 20 6D 61 73 6B 20 64 65 74 65    e line mask dete
025630:  72 6D 69 6E 65 73 20 68 6F 77 20 70 69 78 65 6C    rmines how pixel
025640:  73 20 20 6F 6E 20 20 74 68 65 20 20 6C 69 6E 65    s  on  the  line
025650:  0D 0A 20 20 20 20 20 20 20 77 69 6C 6C 20 62 65    ..       will be
025660:  20 70 6C 6F 74 74 65 64 2E 20 20 54 68 65 20 20     plotted.  The  
025670:  6C 69 6E 65 20 20 6D 61 73 6B 20 20 69 73 20 20    line  mask  is  
025680:  62 69 74 20 20 73 69 67 6E 69 66 69 63 61 6E 74    bit  significant
025690:  20 20 61 6E 64 20 20 69 73 20 20 75 73 65 64 0D      and  is  used.
0256A0:  0A 20 20 20 20 20 20 20 72 65 70 65 61 74 65 64    .       repeated
0256B0:  6C 79 20 69 6E 20 74 68 65 20 6F 72 64 65 72 20    ly in the order 
0256C0:  62 69 74 20 37 2C 20 62 69 74 20 36 20 64 6F 77    bit 7, bit 6 dow
0256D0:  6E 20 74 6F 20 62 69 74 20 30 20 66 6F 72 20 65    n to bit 0 for e
0256E0:  61 63 68 20 20 70 69 78 65 6C 20 20 69 6E 0D 0A    ach  pixel  in..
0256F0:  20 20 20 20 20 20 20 74 68 65 20 6C 69 6E 65 2E           the line.
025700:  20 49 66 20 74 68 65 20 62 69 74 20 69 73 20 6F     If the bit is o
025710:  6E 65 20 74 68 65 6E 20 74 68 65 20 70 69 78 65    ne then the pixe
025720:  6C 20 69 73 20 70 6C 6F 74 74 65 64 20 69 6E 20    l is plotted in 
025730:  74 68 65 20 20 67 72 61 70 68 69 63 73 0D 0A 20    the  graphics.. 
025740:  20 20 20 20 20 20 70 65 6E 20 69 6E 6B 2E 20 49          pen ink. I
025750:  66 20 74 68 65 20 62 69 74 20 69 73 20 7A 65 72    f the bit is zer
025760:  6F 20 74 68 65 6E 20 20 74 68 65 20 20 61 63 74    o then  the  act
025770:  69 6F 6E 20 20 74 61 6B 65 6E 20 20 64 65 70 65    ion  taken  depe
025780:  6E 64 73 20 20 6F 6E 20 20 74 68 65 0D 0A 20 20    nds  on  the..  
025790:  20 20 20 20 20 67 72 61 70 68 69 63 73 20 62 61         graphics ba
0257A0:  63 6B 67 72 6F 75 6E 64 20 77 72 69 74 65 20 6D    ckground write m
0257B0:  6F 64 65 2E 20 49 66 20 74 68 65 20 62 61 63 6B    ode. If the back
0257C0:  67 72 6F 75 6E 64 20 6D 6F 64 65 20 69 73 20 6F    ground mode is o
0257D0:  70 61 71 75 65 20 20 74 68 65 6E 0D 0A 20 20 20    paque  then..   
0257E0:  20 20 20 20 74 68 65 20 70 69 78 65 6C 20 69 73        the pixel is
0257F0:  20 70 6C 6F 74 74 65 64 20 69 6E 20 74 68 65 20     plotted in the 
025800:  67 72 61 70 68 69 63 73 20 70 61 70 65 72 20 69    graphics paper i
025810:  6E 6B 2E 20 49 66 20 74 68 65 20 62 61 63 6B 67    nk. If the backg
025820:  72 6F 75 6E 64 20 6D 6F 64 65 0D 0A 20 20 20 20    round mode..    
025830:  20 20 20 69 73 20 74 72 61 6E 73 70 61 72 65 6E       is transparen
025840:  74 20 74 68 65 6E 20 74 68 65 20 70 69 78 65 6C    t then the pixel
025850:  20 69 73 20 6E 6F 74 20 70 6C 6F 74 74 65 64 2E     is not plotted.
025860:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ........       A
025870:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
025880:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
025890:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0258A0:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
0258B0:  31 36 2E 31 30 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    16.10...........
0258C0:  0A 0D 0A 20 20 20 20 20 20 20 49 6E 20 56 31 2E    ...       In V1.
0258D0:  31 20 66 69 72 6D 77 61 72 65 20 74 68 65 20 66    1 firmware the f
0258E0:  69 72 73 74 20 70 69 78 65 6C 20 6F 66 20 74 68    irst pixel of th
0258F0:  65 20 20 6C 69 6E 65 20 20 28 74 68 61 74 20 20    e  line  (that  
025900:  61 74 20 20 74 68 65 20 20 63 75 72 72 65 6E 74    at  the  current
025910:  0D 0A 20 20 20 20 20 20 20 67 72 61 70 68 69 63    ..       graphic
025920:  73 20 70 6F 73 69 74 69 6F 6E 29 20 69 73 20 6E    s position) is n
025930:  6F 74 20 70 6C 6F 74 74 65 64 20 69 66 20 74 68    ot plotted if th
025940:  65 20 66 69 72 73 74 20 70 6F 69 6E 74 20 70 6C    e first point pl
025950:  6F 74 74 69 6E 67 20 6D 6F 64 65 20 20 69 73 0D    otting mode  is.
025960:  0A 20 20 20 20 20 20 20 73 65 74 20 66 61 6C 73    .       set fals
025970:  65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    e.......       T
025980:  68 69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E 20    his indirection 
025990:  69 73 20 73 65 74 20 75 70 20 77 68 65 6E 20 47    is set up when G
0259A0:  52 41 20 49 4E 49 54 49 41 4C 49 53 45 20 6F 72    RA INITIALISE or
0259B0:  20 47 52 41 20 52 45 53 45 54 20 69 73 20 63 61     GRA RESET is ca
0259C0:  6C 6C 65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    lled.........   
0259D0:  20 20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72        Related entr
0259E0:  69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ies:......      
0259F0:  20 47 52 41 20 4C 49 4E 45 20 41 42 53 4F 4C 55     GRA LINE ABSOLU
025A00:  54 45 0D 0A 20 20 20 20 20 20 20 47 52 41 20 4C    TE..       GRA L
025A10:  49 4E 45 20 52 45 4C 41 54 49 56 45 0D 0A 20 20    INE RELATIVE..  
025A20:  20 20 20 20 20 47 52 41 20 53 45 54 20 42 41 43         GRA SET BAC
025A30:  4B 0D 0A 20 20 20 20 20 20 20 47 52 41 20 53 45    K..       GRA SE
025A40:  54 20 46 49 52 53 54 0D 0A 20 20 20 20 20 20 20    T FIRST..       
025A50:  47 52 41 20 53 45 54 20 4C 49 4E 45 20 4D 41 53    GRA SET LINE MAS
025A60:  4B 0D 0A 20 20 20 20 20 20 20 53 43 52 20 48 4F    K..       SCR HO
025A70:  52 49 5A 4F 4E 54 41 4C 0D 0A 20 20 20 20 20 20    RIZONTAL..      
025A80:  20 53 43 52 20 56 45 52 54 49 43 41 4C 0D 0A 0D     SCR VERTICAL...
025A90:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
025AA0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
025AB0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
025AC0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
025AD0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    ............... 
025AE0:  20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50          AMSTRAD CP
025AF0:  43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49    C464/664/6128 FI
025B00:  52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20    RMWARE          
025B10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
025B20:  20 20 70 61 67 65 20 31 36 2E 31 31 0D 0A 1A 0A      page 16.11....
025B30:  20 20 20 20 20 20 20 54 68 69 73 20 73 65 63 74           This sect
025B40:  69 6F 6E 20 67 69 76 65 73 20 74 68 65 20 64 65    ion gives the de
025B50:  74 61 69 6C 65 64 20 65 6E 74 72 79 20 61 6E 64    tailed entry and
025B60:  20 65 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73     exit conditions
025B70:  20 61 6E 64 20 20 65 66 66 65 63 74 73 0D 0A 20     and  effects.. 
025B80:  68 69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E 20    his indirection 
025B90:  69 73 20 73 65 74 20 75 70 20 77 68 65 6E 20 47    is set up when G
025BA0:  52 41 20 49 4E 49 54 49 41 4C 49 53 45 20 6F 72    RA INITIALISE or
025BB0:  20 47 52 41 20 52 45 53 45 54 20 69 73 20 63 61     GRA RESET is ca
025BC0:  6C 6C 65 64 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    lled.........   
025BD0:  20 20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72        Related entr
025BE0:  69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ies:......      
025BF0:  20 47 52 41 20 4C 49 4E 45 20 41 42 53 4F 4C 55     GRA LINE ABSOLU
025C00:  54 45 0D 0A 20 20 20 20 20 20 20 47 52 41 20 4C    TE..       GRA L
025C10:  49 4E 45 20 52 45 4C 41 54 49 56 45 0D 0A 20 20    INE RELATIVE..  
025C20:  20 20 20 20 20 47 52 41 20 53 45 54 20 42 41 43         GRA SET BAC
025C30:  4B 0D 0A 20 20 20 20 20 20 20 47 52 41 20 53 45    K..       GRA SE
025C40:  54 20 46 49 52 53 54 0D 0A 20 20 20 20 20 20 20    T FIRST..       
025C50:  47 52 41 20 53 45 54 20 4C 49 4E 45 20 4D 41 53    GRA SET LINE MAS
025C60:  4B 0D 0A 20 20 20 20 20 20 20 53 43 52 20 48 4F    K..       SCR HO
025C70:  52 49 5A 4F 4E 54 41 4C 0D 0A 20 20 20 20 20 20    RIZONTAL..      
025C80:  20 53 43 52 20 56 45 52 54 49 43 41 4C 0D 0A 0D     SCR VERTICAL...
025C90:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
025CA0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
025CB0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
025CC0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
025CD0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    ............... 
025CE0:  20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50          AMSTRAD CP
025CF0:  43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49    C464/664/6128 FI
025D00:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
025D10:  20 20 20 49 4E 44 3A 20 53 43 52 20 52 45 41 44       IND: SCR READ
025D20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
025D30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
025D40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
025D50:  20 20 20 20 23 42 44 45 35 0D 0A 0D 0A 0D 0A 20        #BDE5...... 
025D60:  20 20 20 20 20 20 52 65 61 64 20 61 20 70 69 78          Read a pix
025D70:  65 6C 20 66 72 6F 6D 20 74 68 65 20 73 63 72 65    el from the scre
025D80:  65 6E 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    en.......       
025D90:  44 65 66 61 75 6C 74 20 61 63 74 69 6F 6E 3A 0D    Default action:.
025DA0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 61 64    .....       Read
025DB0:  20 61 20 70 69 78 65 6C 20 66 72 6F 6D 20 74 68     a pixel from th
025DC0:  65 20 73 63 72 65 65 6E 20 61 6E 64 20 64 65 63    e screen and dec
025DD0:  6F 64 65 20 69 74 73 20 69 6E 6B 2E 0D 0A 0D 0A    ode its ink.....
025DE0:  0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20 63    ..       Entry c
025DF0:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A    onditions:......
025E00:  20 20 20 20 20 20 20 48 4C 20 63 6F 6E 74 61 69           HL contai
025E10:  6E 73 20 74 68 65 20 73 63 72 65 65 6E 20 61 64    ns the screen ad
025E20:  64 72 65 73 73 20 6F 66 20 74 68 65 20 70 69 78    dress of the pix
025E30:  65 6C 2E 0D 0A 20 20 20 20 20 20 20 43 20 63 6F    el...       C co
025E40:  6E 74 61 69 6E 73 20 74 68 65 20 6D 61 73 6B 20    ntains the mask 
025E50:  66 6F 72 20 74 68 65 20 70 69 78 65 6C 2E 0D 0A    for the pixel...
025E60:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20    ....       Exit 
025E70:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D    conditions:.....
025E80:  0A 20 20 20 20 20 20 20 41 20 63 6F 6E 74 61 69    .       A contai
025E90:  6E 73 20 74 68 65 20 64 65 63 6F 64 65 64 20 69    ns the decoded i
025EA0:  6E 6B 20 74 68 61 74 20 74 68 65 20 70 69 78 65    nk that the pixe
025EB0:  6C 20 77 61 73 20 73 65 74 20 74 6F 2E 0D 0A 0D    l was set to....
025EC0:  0A 0D 0A 20 20 20 20 20 20 20 46 6C 61 67 73 20    ...       Flags 
025ED0:  63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20    corrupt...      
025EE0:  20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73     All other regis
025EF0:  74 65 72 73 20 70 72 65 73 65 72 76 65 64 2E 0D    ters preserved..
025F00:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65    .....       Note
025F10:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    s:......       T
025F20:  68 65 20 6D 61 73 6B 20 73 75 70 70 6C 69 65 64    he mask supplied
025F30:  20 6D 75 73 74 20 62 65 20 61 20 6D 61 73 6B 20     must be a mask 
025F40:  66 6F 72 20 20 61 20 20 73 69 6E 67 6C 65 20 20    for  a  single  
025F50:  70 69 78 65 6C 20 20 6F 74 68 65 72 77 69 73 65    pixel  otherwise
025F60:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 64 65      the..       de
025F70:  63 6F 64 69 6E 67 20 6F 66 20 74 68 65 20 69 6E    coding of the in
025F80:  6B 20 72 65 61 64 20 66 72 6F 6D 20 74 68 65 20    k read from the 
025F90:  73 63 72 65 65 6E 20 77 69 6C 6C 20 6E 6F 74 20    screen will not 
025FA0:  77 6F 72 6B 20 63 6F 72 72 65 63 74 6C 79 2E 0D    work correctly..
025FB0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73    .....       This
025FC0:  20 69 6E 64 69 72 65 63 74 69 6F 6E 20 69 73 20     indirection is 
025FD0:  73 65 74 20 75 70 20 77 68 65 6E 20 53 43 52 20    set up when SCR 
025FE0:  49 4E 49 54 49 41 4C 49 53 45 20 6F 72 20 53 43    INITIALISE or SC
025FF0:  52 20 52 45 53 45 54 20 69 73 20 63 61 6C 6C 65    R RESET is calle
026000:  64 2E 0D 0A 20 20 20 20 20 20 20 49 74 20 69 73    d...       It is
026010:  20 63 61 6C 6C 65 64 20 62 79 20 47 52 41 20 54     called by GRA T
026020:  45 53 54 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    EST.........    
026030:  20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72 69       Related entri
026040:  65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    es:......       
026050:  47 52 41 20 54 45 53 54 0D 0A 20 20 20 20 20 20    GRA TEST..      
026060:  20 53 43 52 20 57 52 49 54 45 0D 0A 0D 0A 0D 0A     SCR WRITE......
026070:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
026080:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53    ......       AMS
026090:  54 52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F    TRAD CPC464/664/
0260A0:  36 31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20    6128 FIRMWARE   
0260B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0260C0:  20 20 20 20 20 20 20 20 20 70 61 67 65 20 31 36             page 16
0260D0:  2E 31 32 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    .12.............
0260E0:  0A 20 20 20 20 20 20 20 49 4E 44 3A 20 53 43 52    .       IND: SCR
0260F0:  20 57 52 49 54 45 20 20 20 20 20 20 20 20 20 20     WRITE          
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:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026210:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026220:  20 20 20 20 20 20 20 20 20 23 42 44 45 38 0D 0A             #BDE8..
026230:  0D 0A 20 20 20 20 20 20 20 57 72 69 74 65 20 70    ..       Write p
026240:  69 78 65 6C 28 73 29 20 75 73 69 6E 67 20 74 68    ixel(s) using th
026250:  65 20 63 75 72 72 65 6E 74 20 67 72 61 70 68 69    e current graphi
026260:  63 73 20 77 72 69 74 65 20 6D 6F 64 65 2E 0D 0A    cs write mode...
026270:  0D 0A 20 20 20 20 20 20 20 44 65 66 61 75 6C 74    ..       Default
026280:  20 61 63 74 69 6F 6E 3A 0D 0A 0D 0A 20 20 20 20     action:....    
026290:  20 20 20 50 6C 6F 74 20 61 20 70 69 78 65 6C 20       Plot a pixel 
0262A0:  6F 72 20 70 69 78 65 6C 73 20 6F 6E 20 74 68 65    or pixels on the
0262B0:  20 73 63 72 65 65 6E 20 75 73 69 6E 67 20 74 68     screen using th
0262C0:  65 20 63 75 72 72 65 6E 74 20 67 72 61 70 68 69    e current graphi
0262D0:  63 73 20 20 77 72 69 74 65 0D 0A 20 20 20 20 20    cs  write..     
0262E0:  20 20 6D 6F 64 65 2E 0D 0A 0D 0A 20 20 20 20 20      mode.....     
0262F0:  20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F      Entry conditio
026300:  6E 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 48 4C    ns:....       HL
026310:  20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 73 63     contains the sc
026320:  72 65 65 6E 20 61 64 64 72 65 73 73 20 6F 66 20    reen address of 
026330:  74 68 65 20 70 69 78 65 6C 28 73 29 2E 0D 0A 20    the pixel(s)... 
026340:  20 20 20 20 20 20 43 20 63 6F 6E 74 61 69 6E 73          C contains
026350:  20 74 68 65 20 6D 61 73 6B 20 66 6F 72 20 74 68     the mask for th
026360:  65 20 70 69 78 65 6C 28 73 29 2E 0D 0A 20 20 20    e pixel(s)...   
026370:  20 20 20 20 42 20 63 6F 6E 74 61 69 6E 73 20 74        B contains t
026380:  68 65 20 65 6E 63 6F 64 65 64 20 69 6E 6B 20 74    he encoded ink t
026390:  6F 20 70 6C 6F 74 20 77 69 74 68 2E 0D 0A 0D 0A    o plot with.....
0263A0:  20 20 20 20 20 20 20 45 78 69 74 20 63 6F 6E 64           Exit cond
0263B0:  69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20 20 20 20 20    itions:....     
0263C0:  20 20 41 46 20 63 6F 72 72 75 70 74 2E 0D 0A 0D      AF corrupt....
0263D0:  0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65    .       All othe
0263E0:  72 20 72 65 67 69 73 74 65 72 73 20 70 72 65 73    r registers pres
0263F0:  65 72 76 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20    erved.....      
026400:  20 4E 6F 74 65 73 3A 0D 0A 0D 0A 20 20 20 20 20     Notes:....     
026410:  20 20 54 68 65 20 70 69 78 65 6C 20 6D 61 73 6B      The pixel mask
026420:  20 73 75 70 70 6C 69 65 64 20 63 61 6E 20 62 65     supplied can be
026430:  20 66 6F 72 20 61 20 73 69 6E 67 6C 65 20 70 69     for a single pi
026440:  78 65 6C 20 20 6F 72 20 20 6D 6F 72 65 20 20 74    xel  or  more  t
026450:  68 61 6E 20 20 6F 6E 65 0D 0A 20 20 20 20 20 20    han  one..      
026460:  20 70 69 78 65 6C 20 28 6F 72 20 65 76 65 6E 20     pixel (or even 
026470:  6E 6F 20 70 69 78 65 6C 73 29 2E 20 54 68 65 20    no pixels). The 
026480:  69 6E 6B 20 73 75 70 70 6C 69 65 64 20 73 68 6F    ink supplied sho
026490:  75 6C 64 20 62 65 20 65 6E 63 6F 64 65 64 20 74    uld be encoded t
0264A0:  6F 20 63 6F 76 65 72 0D 0A 20 20 20 20 20 20 20    o cover..       
0264B0:  74 68 65 20 77 68 6F 6C 65 20 6F 66 20 61 20 62    the whole of a b
0264C0:  79 74 65 20 28 73 65 65 20 53 43 52 20 49 4E 4B    yte (see SCR INK
0264D0:  20 45 4E 43 4F 44 45 29 2E 0D 0A 0D 0A 20 20 20     ENCODE).....   
0264E0:  20 20 20 20 54 68 65 20 70 69 78 65 6C 20 69 73        The pixel is
0264F0:  20 70 6C 6F 74 74 65 64 20 75 73 69 6E 67 20 74     plotted using t
026500:  68 65 20 63 75 72 72 65 6E 74 20 47 72 61 70 68    he current Graph
026510:  69 63 73 20 56 44 55 20 77 72 69 74 65 20 6D 6F    ics VDU write mo
026520:  64 65 2E 20 20 54 68 65 73 65 0D 0A 20 20 20 20    de.  These..    
026530:  20 20 20 6D 6F 64 65 73 20 61 72 65 3A 0D 0A 0D       modes are:...
026540:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
026550:  20 46 4F 52 43 45 20 20 20 20 20 50 69 78 65 6C     FORCE     Pixel
026560:  20 69 73 20 73 65 74 20 74 6F 20 74 68 65 20 6E     is set to the n
026570:  65 77 20 69 6E 6B 20 69 72 72 65 73 70 65 63 74    ew ink irrespect
026580:  69 76 65 20 6F 66 20 74 68 65 20 6F 6C 64 0D 0A    ive of the old..
026590:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0265A0:  20 20 20 20 20 20 20 20 20 20 69 6E 6B 2E 0D 0A              ink...
0265B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0265C0:  58 4F 52 20 20 20 20 20 20 20 50 69 78 65 6C 20    XOR       Pixel 
0265D0:  69 73 20 73 65 74 20 74 6F 20 74 68 65 20 69 6E    is set to the in
0265E0:  6B 20 66 6F 72 6D 65 64 20 20 62 79 20 20 65 78    k formed  by  ex
0265F0:  63 6C 75 73 69 76 65 2D 6F 72 69 6E 67 0D 0A 20    clusive-oring.. 
026600:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026610:  20 20 20 20 20 20 20 20 20 74 68 65 20 6E 65 77             the new
026620:  20 69 6E 6B 20 66 6F 72 20 74 68 65 20 70 69 78     ink for the pix
026630:  65 6C 20 61 6E 64 20 69 74 73 20 63 75 72 72 65    el and its curre
026640:  6E 74 20 73 65 74 74 69 6E 67 2E 0D 0A 20 20 20    nt setting...   
026650:  20 20 20 20 20 20 20 20 20 20 20 20 20 41 4E 44                 AND
026660:  20 20 20 20 20 20 20 50 69 78 65 6C 20 69 73 20           Pixel is 
026670:  73 65 74 20 74 6F 20 74 68 65 20 69 6E 6B 20 66    set to the ink f
026680:  6F 72 6D 65 64 20 62 79 20 20 61 6E 64 69 6E 67    ormed by  anding
026690:  20 20 74 68 65 20 20 6E 65 77 0D 0A 20 20 20 20      the  new..    
0266A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0266B0:  20 20 20 20 20 20 69 6E 6B 20 66 6F 72 20 74 68          ink for th
0266C0:  65 20 70 69 78 65 6C 20 61 6E 64 20 69 74 73 20    e pixel and its 
0266D0:  63 75 72 72 65 6E 74 20 73 65 74 74 69 6E 67 2E    current setting.
0266E0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
0266F0:  20 20 4F 52 20 20 20 20 20 20 20 20 50 69 78 65      OR        Pixe
026700:  6C 20 69 73 20 73 65 74 20 74 6F 20 74 68 65 20    l is set to the 
026710:  69 6E 6B 20 66 6F 72 6D 65 64 20 62 79 20 6F 72    ink formed by or
026720:  69 6E 67 20 74 68 65 20 6E 65 77 20 69 6E 6B 0D    ing the new ink.
026730:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
026740:  20 20 20 20 20 20 20 20 20 20 20 66 6F 72 20 74               for t
026750:  68 65 20 70 69 78 65 6C 20 61 6E 64 20 69 74 73    he pixel and its
026760:  20 63 75 72 72 65 6E 74 20 73 65 74 74 69 6E 67     current setting
026770:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20    .....       The 
026780:  77 72 69 74 65 20 6D 6F 64 65 20 63 61 6E 20 62    write mode can b
026790:  65 20 73 65 74 20 62 79 20 63 61 6C 6C 69 6E 67    e set by calling
0267A0:  20 53 43 52 20 41 43 43 45 53 53 20 61 70 70 72     SCR ACCESS appr
0267B0:  6F 70 72 69 61 74 65 6C 79 2E 0D 0A 0D 0A 20 20    opriately.....  
0267C0:  20 20 20 20 20 54 68 69 73 20 69 6E 64 69 72 65         This indire
0267D0:  63 74 69 6F 6E 20 69 73 20 63 61 6C 6C 65 64 20    ction is called 
0267E0:  62 79 20 61 6C 6C 20 20 47 72 61 70 68 69 63 73    by all  Graphics
0267F0:  20 20 56 44 55 20 20 77 72 69 74 65 20 20 72 6F      VDU  write  ro
026800:  75 74 69 6E 65 73 2C 20 20 69 6E 0D 0A 20 20 20    utines,  in..   
026810:  20 20 20 20 70 61 72 74 69 63 75 6C 61 72 20 47        particular G
026820:  52 41 20 50 4C 4F 54 20 52 45 4C 41 54 49 56 45    RA PLOT RELATIVE
026830:  2C 20 47 52 41 20 50 4C 4F 54 20 41 42 53 4F 4C    , GRA PLOT ABSOL
026840:  55 54 45 2C 20 20 47 52 41 20 20 4C 49 4E 45 20    UTE,  GRA  LINE 
026850:  20 52 45 4C 41 54 49 56 45 2C 0D 0A 20 20 20 20     RELATIVE,..    
026860:  20 20 20 47 52 41 20 4C 49 4E 45 20 41 42 53 4F       GRA LINE ABSO
026870:  4C 55 54 45 20 61 6E 64 20 47 52 41 20 57 52 20    LUTE and GRA WR 
026880:  43 48 41 52 2C 20 74 6F 20 70 6C 6F 74 20 70 69    CHAR, to plot pi
026890:  78 65 6C 73 20 6F 6E 20 74 68 65 20 73 63 72 65    xels on the scre
0268A0:  65 6E 2E 20 49 74 20 69 73 0D 0A 20 20 20 20 20    en. It is..     
0268B0:  20 20 70 72 6F 76 69 64 65 64 20 74 6F 20 61 6C      provided to al
0268C0:  6C 6F 77 20 74 68 65 20 75 73 65 72 20 74 6F 20    low the user to 
0268D0:  69 6E 74 65 72 63 65 70 74 20 20 74 68 65 20 20    intercept  the  
0268E0:  6C 6F 77 65 73 74 20 20 6C 65 76 65 6C 20 20 6F    lowest  level  o
0268F0:  66 20 20 70 6F 69 6E 74 0D 0A 20 20 20 20 20 20    f  point..      
026900:  20 70 6C 6F 74 74 69 6E 67 20 28 70 65 72 68 61     plotting (perha
026910:  70 73 20 74 6F 20 61 64 64 20 79 65 74 20 61 6E    ps to add yet an
026920:  6F 74 68 65 72 20 70 6C 6F 74 74 69 6E 67 20 6D    other plotting m
026930:  6F 64 65 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    ode).....       
026940:  54 68 69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E    This indirection
026950:  20 69 73 20 73 65 74 20 75 70 20 77 68 65 6E 20     is set up when 
026960:  53 43 52 20 49 4E 49 54 49 41 4C 49 53 45 20 6F    SCR INITIALISE o
026970:  72 20 53 43 52 20 52 45 53 45 54 20 69 73 20 63    r SCR RESET is c
026980:  61 6C 6C 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20    alled.....      
026990:  20 52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73     Related entries
0269A0:  3A 0D 0A 0D 0A 20 20 20 20 20 20 20 47 52 41 20    :....       GRA 
0269B0:  50 4C 4F 54 0D 0A 20 20 20 20 20 20 20 53 43 52    PLOT..       SCR
0269C0:  20 41 43 43 45 53 53 0D 0A 20 20 20 20 20 20 20     ACCESS..       
0269D0:  53 43 52 20 50 49 58 45 4C 53 0D 0A 20 20 20 20    SCR PIXELS..    
0269E0:  20 20 20 53 43 52 20 52 45 41 44 0D 0A 0D 0A 0D       SCR READ.....
0269F0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54    .....       AMST
026A00:  52 41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36    RAD CPC464/664/6
026A10:  31 32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20    128 FIRMWARE    
026A20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026A30:  20 20 20 20 20 20 20 20 70 61 67 65 20 31 36 2E            page 16.
026A40:  31 33 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    13..............
026A50:  20 20 20 20 20 20 20 49 4E 44 3A 20 53 43 52 20           IND: SCR 
026A60:  4D 4F 44 45 20 43 4C 45 41 52 20 20 20 20 20 20    MODE CLEAR      
026A70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026A80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026A90:  20 20 20 20 20 20 20 20 23 42 44 45 42 0D 0A 0D            #BDEB...
026AA0:  0A 0D 0A 20 20 20 20 20 20 20 43 6C 65 61 72 20    ...       Clear 
026AB0:  74 68 65 20 73 63 72 65 65 6E 20 74 6F 20 69 6E    the screen to in
026AC0:  6B 20 30 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    k 0.......      
026AD0:  20 44 65 66 61 75 6C 74 20 61 63 74 69 6F 6E 3A     Default action:
026AE0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 43 6C 65    ......       Cle
026AF0:  61 72 20 74 68 65 20 73 63 72 65 65 6E 20 6D 65    ar the screen me
026B00:  6D 6F 72 79 20 74 6F 20 7A 65 72 6F 73 2E 20 20    mory to zeros.  
026B10:  54 68 69 73 20 20 69 6E 64 69 72 65 63 74 69 6F    This  indirectio
026B20:  6E 20 20 69 73 20 20 70 72 6F 76 69 64 65 64 20    n  is  provided 
026B30:  20 74 6F 0D 0A 20 20 20 20 20 20 20 61 6C 6C 6F     to..       allo
026B40:  77 20 74 68 65 20 75 73 65 72 20 74 6F 20 70 72    w the user to pr
026B50:  65 76 65 6E 74 20 74 68 65 20 73 63 72 65 65 6E    event the screen
026B60:  20 62 65 69 6E 67 20 63 6C 65 61 72 65 64 20 61     being cleared a
026B70:  66 74 65 72 20 74 68 65 20 20 6D 6F 64 65 20 20    fter the  mode  
026B80:  69 73 0D 0A 20 20 20 20 20 20 20 63 68 61 6E 67    is..       chang
026B90:  65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ed.......       
026BA0:  45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73    Entry conditions
026BB0:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F    :......       No
026BC0:  20 63 6F 6E 64 69 74 69 6F 6E 73 2E 0D 0A 0D 0A     conditions.....
026BD0:  0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F    ..       Exit co
026BE0:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20    nditions:...... 
026BF0:  20 20 20 20 20 20 41 46 2C 20 42 43 2C 20 44 45          AF, BC, DE
026C00:  20 61 6E 64 20 48 4C 20 63 6F 72 72 75 70 74 2E     and HL corrupt.
026C10:  0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68    ..       All oth
026C20:  65 72 20 72 65 67 69 73 74 65 72 73 20 70 72 65    er registers pre
026C30:  73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20    served.......   
026C40:  20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A        Notes:......
026C50:  20 20 20 20 20 20 20 4E 6F 72 6D 61 6C 6C 79 20           Normally 
026C60:  74 68 69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E    this indirection
026C70:  20 70 65 72 66 6F 72 6D 73 20 74 68 65 20 61 63     performs the ac
026C80:  74 69 6F 6E 73 20 64 65 73 63 72 69 62 65 64 20    tions described 
026C90:  69 6E 20 53 43 52 20 43 4C 45 41 52 2E 0D 0A 0D    in SCR CLEAR....
026CA0:  0A 0D 0A 20 20 20 20 20 20 20 49 6E 20 56 31 2E    ...       In V1.
026CB0:  30 20 66 69 72 6D 77 61 72 65 20 69 74 20 69 73    0 firmware it is
026CC0:  20 6E 65 63 65 73 73 61 72 79 20 66 6F 72 20 74     necessary for t
026CD0:  68 65 20 75 73 65 72 20 74 6F 20 73 65 74 20 75    he user to set u
026CE0:  70 20 20 74 68 65 20 20 69 6E 6B 73 20 20 69 66    p  the  inks  if
026CF0:  0D 0A 20 20 20 20 20 20 20 74 68 69 73 20 69 6E    ..       this in
026D00:  64 69 72 65 63 74 69 6F 6E 20 69 73 20 69 6E 74    direction is int
026D10:  65 72 63 65 70 74 65 64 20 28 73 65 65 20 41 70    ercepted (see Ap
026D20:  70 65 6E 64 69 78 20 58 49 49 49 29 2E 20 49 6E    pendix XIII). In
026D30:  20 56 31 2E 31 20 20 66 69 72 6D 77 61 72 65 0D     V1.1  firmware.
026D40:  0A 20 20 20 20 20 20 20 74 68 65 20 73 63 72 65    .       the scre
026D50:  65 6E 20 70 61 63 6B 20 73 65 74 73 20 75 70 20    en pack sets up 
026D60:  74 68 65 20 69 6E 6B 73 20 66 6F 72 20 74 68 65    the inks for the
026D70:  20 75 73 65 72 20 61 66 74 65 72 20 53 43 52 20     user after SCR 
026D80:  4D 4F 44 45 20 43 4C 45 41 52 20 68 61 73 0D 0A    MODE CLEAR has..
026D90:  20 20 20 20 20 20 20 62 65 65 6E 20 63 61 6C 6C           been call
026DA0:  65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ed.......       
026DB0:  54 68 69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E    This indirection
026DC0:  20 69 73 20 73 65 74 20 75 70 20 77 68 65 6E 20     is set up when 
026DD0:  53 43 52 20 49 4E 49 54 49 41 4C 49 53 45 20 6F    SCR INITIALISE o
026DE0:  72 20 53 43 52 20 52 45 53 45 54 20 69 73 20 63    r SCR RESET is c
026DF0:  61 6C 6C 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20    alled.....      
026E00:  20 4E 2E 42 2E 20 57 68 65 6E 20 74 68 69 73 20     N.B. When this 
026E10:  69 6E 64 69 72 65 63 74 69 6F 6E 20 69 73 20 63    indirection is c
026E20:  61 6C 6C 65 64 20 74 68 65 20 74 65 78 74 20 61    alled the text a
026E30:  6E 64 20 67 72 61 70 68 69 63 73 20 56 44 55 73    nd graphics VDUs
026E40:  20 61 72 65 20 69 6E 0D 0A 20 20 20 20 20 20 20     are in..       
026E50:  6E 6F 6E 2D 73 74 61 6E 64 61 72 64 20 73 74 61    non-standard sta
026E60:  74 65 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 52    tes.....       R
026E70:  65 6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D    elated entries:.
026E80:  0A 0D 0A 20 20 20 20 20 20 20 53 43 52 20 43 4C    ...       SCR CL
026E90:  45 41 52 0D 0A 20 20 20 20 20 20 20 53 43 52 20    EAR..       SCR 
026EA0:  53 45 54 20 4D 4F 44 45 0D 0A 0D 0A 0D 0A 0D 0A    SET MODE........
026EB0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
026EC0:  20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43           AMSTRAD C
026ED0:  50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46    PC464/664/6128 F
026EE0:  49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20    IRMWARE         
026EF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026F00:  20 20 20 70 61 67 65 20 31 36 2E 31 34 0D 0A 0D       page 16.14...
026F10:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
026F20:  20 20 49 4E 44 3A 20 4B 4D 20 54 45 53 54 20 42      IND: KM TEST B
026F30:  52 45 41 4B 20 20 20 20 20 20 20 20 20 20 20 20    REAK            
026F40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026F50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
026F60:  20 20 20 23 42 44 45 45 0D 0A 0D 0A 0D 0A 20 20       #BDEE......  
026F70:  20 20 20 20 20 54 65 73 74 20 66 6F 72 20 62 72         Test for br
026F80:  65 61 6B 20 28 6F 72 20 72 65 73 65 74 29 2E 0D    eak (or reset)..
026F90:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 44 65 66 61    .....       Defa
026FA0:  75 6C 74 20 61 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D    ult action:.....
026FB0:  0A 20 20 20 20 20 20 20 54 65 73 74 20 69 66 20    .       Test if 
026FC0:  74 68 65 20 65 73 63 61 70 65 20 6B 65 79 20 69    the escape key i
026FD0:  73 20 70 72 65 73 73 65 64 2C 20 69 66 20 6E 6F    s pressed, if no
026FE0:  74 20 74 68 65 6E 20 6E 6F 20 61 63 74 69 6F 6E    t then no action
026FF0:  20 69 73 20 74 61 6B 65 6E 2E 20 20 49 66 0D 0A     is taken.  If..
027000:  20 20 20 20 20 20 20 65 73 63 61 70 65 2C 20 73           escape, s
027010:  68 69 66 74 20 61 6E 64 20 63 6F 6E 74 72 6F 6C    hift and control
027020:  20 61 72 65 20 61 6C 6C 20 70 72 65 73 73 65 64     are all pressed
027030:  20 61 6E 64 20 6E 6F 20 6F 74 68 65 72 20 6B 65     and no other ke
027040:  79 73 20 20 74 68 65 6E 20 20 74 68 65 0D 0A 20    ys  then  the.. 
027050:  20 20 20 20 20 20 73 79 73 74 65 6D 20 69 73 20          system is 
027060:  72 65 73 65 74 2E 20 4F 74 68 65 72 77 69 73 65    reset. Otherwise
027070:  2C 20 61 20 62 72 65 61 6B 20 65 76 65 6E 74 20    , a break event 
027080:  69 73 20 72 65 70 6F 72 74 65 64 20 20 28 73 65    is reported  (se
027090:  65 20 20 4B 4D 20 20 42 52 45 41 4B 0D 0A 20 20    e  KM  BREAK..  
0270A0:  20 20 20 20 20 45 56 45 4E 54 29 2E 0D 0A 0D 0A         EVENT).....
0270B0:  0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20 63    ..       Entry c
0270C0:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A    onditions:......
0270D0:  20 20 20 20 20 20 20 49 6E 74 65 72 72 75 70 74           Interrupt
0270E0:  73 20 64 69 73 61 62 6C 65 64 2E 0D 0A 20 20 20    s disabled...   
0270F0:  20 20 20 20 43 20 63 6F 6E 74 61 69 6E 73 20 73        C contains s
027100:  68 69 66 74 20 61 6E 64 20 63 6F 6E 74 72 6F 6C    hift and control
027110:  20 6B 65 79 20 73 74 61 74 65 73 2E 0D 0A 0D 0A     key states.....
027120:  0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F    ..       Exit co
027130:  6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20    nditions:...... 
027140:  20 20 20 20 20 20 41 46 20 61 6E 64 20 48 4C 20          AF and HL 
027150:  63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20    corrupt...      
027160:  20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73     All other regis
027170:  74 65 72 73 20 70 72 65 73 65 72 76 65 64 2E 0D    ters preserved..
027180:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65    .....       Note
027190:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    s:......       T
0271A0:  68 69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E 20    his indirection 
0271B0:  69 73 20 63 61 6C 6C 65 64 20 62 79 20 74 68 65    is called by the
0271C0:  20 66 69 72 6D 77 61 72 65 20 66 72 6F 6D 20 20     firmware from  
0271D0:  74 68 65 20 20 69 6E 74 65 72 72 75 70 74 20 20    the  interrupt  
0271E0:  70 61 74 68 2E 0D 0A 20 20 20 20 20 20 20 54 68    path...       Th
0271F0:  75 73 20 69 6E 74 65 72 72 75 70 74 73 20 61 72    us interrupts ar
027200:  65 20 64 69 73 61 62 6C 65 64 20 61 6E 64 20 74    e disabled and t
027210:  68 65 79 20 6D 75 73 74 20 72 65 6D 61 69 6E 20    hey must remain 
027220:  64 69 73 61 62 6C 65 64 2E 0D 0A 0D 0A 0D 0A 20    disabled....... 
027230:  20 20 20 20 20 20 49 66 20 62 69 74 20 37 20 6F          If bit 7 o
027240:  66 20 43 20 69 73 20 73 65 74 20 74 68 65 6E 20    f C is set then 
027250:  74 68 65 20 63 6F 6E 74 72 6F 6C 20 6B 65 79 20    the control key 
027260:  69 73 20 70 72 65 73 73 65 64 2E 20 49 66 20 62    is pressed. If b
027270:  69 74 20 35 20 6F 66 20 43 20 69 73 0D 0A 20 20    it 5 of C is..  
027280:  20 20 20 20 20 73 65 74 20 74 68 65 6E 20 6F 6E         set then on
027290:  65 20 6F 66 20 74 68 65 20 73 68 69 66 74 20 6B    e of the shift k
0272A0:  65 79 73 20 69 73 20 70 72 65 73 73 65 64 2E 0D    eys is pressed..
0272B0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73    .....       This
0272C0:  20 69 6E 64 69 72 65 63 74 69 6F 6E 20 69 73 20     indirection is 
0272D0:  63 61 6C 6C 65 64 20 61 66 74 65 72 20 74 68 65    called after the
0272E0:  20 6B 65 79 73 20 68 61 76 65 20 62 65 65 6E 20     keys have been 
0272F0:  20 73 63 61 6E 6E 65 64 20 20 61 6E 64 20 20 74     scanned  and  t
027300:  68 65 0D 0A 20 20 20 20 20 20 20 65 73 63 61 70    he..       escap
027310:  65 20 6B 65 79 20 77 61 73 20 66 6F 75 6E 64 20    e key was found 
027320:  74 6F 20 68 61 76 65 20 62 65 65 6E 20 70 72 65    to have been pre
027330:  73 73 65 64 2E 20 49 74 20 69 73 20 70 72 6F 76    ssed. It is prov
027340:  69 64 65 64 20 74 6F 20 61 6C 6C 6F 77 20 74 68    ided to allow th
027350:  65 0D 0A 20 20 20 20 20 20 20 75 73 65 72 20 74    e..       user t
027360:  6F 20 61 6C 74 65 72 20 74 68 65 20 61 63 74 69    o alter the acti
027370:  6F 6E 20 6F 66 20 61 20 62 72 65 61 6B 20 28 70    on of a break (p
027380:  61 72 74 69 63 75 6C 61 72 6C 79 20 70 72 65 76    articularly prev
027390:  65 6E 74 20 20 74 68 65 20 20 73 79 73 74 65 6D    ent  the  system
0273A0:  0D 0A 20 20 20 20 20 20 20 72 65 73 65 74 2C 20    ..       reset, 
0273B0:  73 65 65 20 52 45 53 45 54 20 45 4E 54 52 59 29    see RESET ENTRY)
0273C0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
0273D0:  69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E 20 69    is indirection i
0273E0:  73 20 73 65 74 20 75 70 20 77 68 65 6E 20 4B 4D    s set up when KM
0273F0:  20 49 4E 49 54 49 41 4C 49 53 45 20 6F 72 20 4B     INITIALISE or K
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:  4D 20 52 45 53 45 54 20 69 73 20 63 61 6C 6C 65    M RESET is calle
027510:  64 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    d.........      
027520:  20 52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73     Related entries
027530:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4B 4D    :......       KM
027540:  20 42 52 45 41 4B 20 45 56 45 4E 54 0D 0A 0D 0A     BREAK EVENT....
027550:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ........       A
027560:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
027570:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
027580:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027590:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
0275A0:  31 36 2E 31 35 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    16.15...........
0275B0:  0A 0D 0A 20 20 20 20 20 20 20 49 4E 44 3A 20 4D    ...       IND: M
0275C0:  43 20 57 41 49 54 20 50 52 49 4E 54 45 52 20 20    C WAIT PRINTER  
0275D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0275E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0275F0:  20 20 20 20 20 20 20 20 20 20 20 23 42 44 46 31               #BDF1
027600:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 50 72 69    ......       Pri
027610:  6E 74 20 61 20 63 68 61 72 61 63 74 65 72 20 6F    nt a character o
027620:  72 20 74 69 6D 65 20 6F 75 74 2E 0D 0A 0D 0A 0D    r time out......
027630:  0A 20 20 20 20 20 20 20 44 65 66 61 75 6C 74 20    .       Default 
027640:  61 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20    action:......   
027650:  20 20 20 20 57 61 69 74 20 66 6F 72 20 74 68 65        Wait for the
027660:  20 43 65 6E 74 72 6F 6E 69 63 73 20 70 6F 72 74     Centronics port
027670:  20 74 6F 20 20 62 65 63 6F 6D 65 20 20 6E 6F 74     to  become  not
027680:  20 20 62 75 73 79 20 20 61 6E 64 20 20 74 68 65      busy  and  the
027690:  6E 20 20 73 65 6E 64 20 20 61 0D 0A 20 20 20 20    n  send  a..    
0276A0:  20 20 20 63 68 61 72 61 63 74 65 72 20 74 6F 20       character to 
0276B0:  69 74 2E 20 49 66 20 74 68 65 20 70 6F 72 74 20    it. If the port 
0276C0:  72 65 6D 61 69 6E 73 20 62 75 73 79 20 66 6F 72    remains busy for
0276D0:  20 61 20 6C 6F 6E 67 20 74 69 6D 65 20 74 68 65     a long time the
0276E0:  20 20 72 6F 75 74 69 6E 65 0D 0A 20 20 20 20 20      routine..     
0276F0:  20 20 74 69 6D 65 73 20 6F 75 74 20 61 6E 64 20      times out and 
027700:  74 68 65 20 63 68 61 72 61 63 74 65 72 20 69 73    the character is
027710:  20 6E 6F 74 20 73 65 6E 74 2E 0D 0A 0D 0A 0D 0A     not sent.......
027720:  20 20 20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E           Entry con
027730:  64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20    ditions:......  
027740:  20 20 20 20 20 41 20 63 6F 6E 74 61 69 6E 73 20         A contains 
027750:  74 68 65 20 63 68 61 72 61 63 74 65 72 20 74 6F    the character to
027760:  20 73 65 6E 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20     send.......    
027770:  20 20 20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F       Exit conditio
027780:  6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ns:......       
027790:  49 66 20 74 68 65 20 63 68 61 72 61 63 74 65 72    If the character
0277A0:  20 77 61 73 20 73 65 6E 74 20 4F 4B 3A 0D 0A 0D     was sent OK:...
0277B0:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
0277C0:  20 20 20 43 61 72 72 79 20 74 72 75 65 2E 0D 0A       Carry true...
0277D0:  0D 0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74 68    ....       If th
0277E0:  65 20 43 65 6E 74 72 6F 6E 69 63 73 20 70 6F 72    e Centronics por
0277F0:  74 20 74 69 6D 65 64 20 6F 75 74 3A 0D 0A 0D 0A    t timed out:....
027800:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027810:  43 61 72 72 79 20 66 61 6C 73 65 2E 0D 0A 0D 0A    Carry false.....
027820:  20 20 20 20 20 20 20 41 6C 77 61 79 73 3A 0D 0A           Always:..
027830:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
027840:  20 20 41 20 61 6E 64 20 42 43 20 63 6F 72 72 75      A and BC corru
027850:  70 74 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20    pt...           
027860:  20 20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20 72         All other r
027870:  65 67 69 73 74 65 72 73 20 70 72 65 73 65 72 76    egisters preserv
027880:  65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F    ed.....       No
027890:  74 65 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    tes:....       T
0278A0:  68 69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E 20    his indirection 
0278B0:  69 73 20 70 72 6F 76 69 64 65 64 20 74 6F 20 61    is provided to a
0278C0:  6C 6C 6F 77 20 74 68 65 20 75 73 65 72 20 74 6F    llow the user to
0278D0:  20 64 72 69 76 65 20 74 68 65 20 70 72 69 6E 74     drive the print
0278E0:  65 72 20 69 6E 0D 0A 20 20 20 20 20 20 20 61 20    er in..       a 
0278F0:  64 69 66 66 65 72 65 6E 74 20 77 61 79 2E 20 46    different way. F
027900:  6F 72 20 65 78 61 6D 70 6C 65 2C 20 27 65 73 63    or example, 'esc
027910:  61 70 65 20 73 65 71 75 65 6E 63 65 27 20 63 6F    ape sequence' co
027920:  75 6C 64 20 20 62 65 20 20 68 61 6E 64 6C 65 64    uld  be  handled
027930:  20 20 6F 72 0D 0A 20 20 20 20 20 20 20 74 68 65      or..       the
027940:  20 74 69 6D 65 20 6F 75 74 20 63 6F 75 6C 64 20     time out could 
027950:  62 65 20 63 68 61 6E 67 65 64 2E 0D 0A 0D 0A 20    be changed..... 
027960:  20 20 20 20 20 20 54 68 69 73 20 69 6E 64 69 72          This indir
027970:  65 63 74 69 6F 6E 20 69 73 20 63 61 6C 6C 65 64    ection is called
027980:  20 62 79 20 74 68 65 20 72 6F 75 74 69 6E 65 20     by the routine 
027990:  20 4D 43 20 20 50 52 49 4E 54 20 20 43 48 41 52     MC  PRINT  CHAR
0279A0:  2E 20 20 49 74 20 20 74 65 73 74 73 0D 0A 20 20    .  It  tests..  
0279B0:  20 20 20 20 20 77 68 65 74 68 65 72 20 74 68 65         whether the
0279C0:  20 70 72 69 6E 74 65 72 20 69 73 20 62 75 73 79     printer is busy
0279D0:  20 69 6E 20 74 68 65 20 73 61 6D 65 20 77 61 79     in the same way
0279E0:  20 61 73 20 20 4D 43 20 20 42 55 53 59 20 20 50     as  MC  BUSY  P
0279F0:  52 49 4E 54 45 52 20 20 61 6E 64 0D 0A 20 20 20    RINTER  and..   
027A00:  20 20 20 20 73 65 6E 64 73 20 74 68 65 20 63 68        sends the ch
027A10:  61 72 61 63 74 65 72 20 69 6E 20 74 68 65 20 73    aracter in the s
027A20:  61 6D 65 20 77 61 79 20 61 73 20 4D 43 20 53 45    ame way as MC SE
027A30:  4E 44 20 50 52 49 4E 54 45 52 2E 0D 0A 0D 0A 20    ND PRINTER..... 
027A40:  20 20 20 20 20 20 54 68 69 73 20 69 6E 64 69 72          This indir
027A50:  65 63 74 69 6F 6E 20 69 73 20 73 65 74 20 75 70    ection is set up
027A60:  20 77 68 65 6E 20 4D 43 20 52 45 53 45 54 20 50     when MC RESET P
027A70:  52 49 4E 54 45 52 20 69 73 20 63 61 6C 6C 65 64    RINTER is called
027A80:  2E 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61    .....       Rela
027A90:  74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A    ted entries:....
027AA0:  20 20 20 20 20 20 20 4D 43 20 42 55 53 59 20 50           MC BUSY P
027AB0:  52 49 4E 54 45 52 0D 0A 20 20 20 20 20 20 20 4D    RINTER..       M
027AC0:  43 20 50 52 49 4E 54 20 43 48 41 52 0D 0A 20 20    C PRINT CHAR..  
027AD0:  20 20 20 20 20 4D 43 20 53 45 4E 44 20 50 52 49         MC SEND PRI
027AE0:  4E 54 45 52 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    NTER..........  
027AF0:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
027B00:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
027B10:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
027B20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027B30:  20 70 61 67 65 20 31 36 2E 31 36 0D 0A 0D 0A 0D     page 16.16.....
027B40:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
027B50:  49 4E 44 3A 20 4B 4D 20 53 43 41 4E 20 4B 45 59    IND: KM SCAN KEY
027B60:  53 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    S               
027B70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027B80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027B90:  20 23 42 44 46 34 0D 0A 0D 0A 0D 0A 20 20 20 20     #BDF4......    
027BA0:  20 20 20 53 63 61 6E 20 74 68 65 20 6B 65 79 62       Scan the keyb
027BB0:  6F 61 72 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    oard.......     
027BC0:  20 20 44 65 66 61 75 6C 74 20 61 63 74 69 6F 6E      Default action
027BD0:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 53 63    :......       Sc
027BE0:  61 6E 73 20 74 68 65 20 6B 65 79 62 6F 61 72 64    ans the keyboard
027BF0:  20 61 6E 64 20 75 70 64 61 74 65 73 20 74 68 65     and updates the
027C00:  20 6B 65 79 20 73 74 61 74 65 20 6D 61 70 2E 20     key state map. 
027C10:  4E 65 77 6C 79 20 20 70 72 65 73 73 65 64 20 20    Newly  pressed  
027C20:  6B 65 79 73 0D 0A 20 20 20 20 20 20 20 61 72 65    keys..       are
027C30:  20 64 65 74 65 63 74 65 64 20 61 6E 64 20 61 70     detected and ap
027C40:  70 72 6F 70 72 69 61 74 65 20 6D 61 72 6B 65 72    propriate marker
027C50:  73 20 61 72 65 20 69 6E 73 65 72 74 65 64 20 69    s are inserted i
027C60:  6E 74 6F 20 74 68 65 20 6B 65 79 20 62 75 66 66    nto the key buff
027C70:  65 72 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    er.......       
027C80:  45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73    Entry conditions
027C90:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F    :......       No
027CA0:  20 63 6F 6E 64 69 74 69 6F 6E 73 20 65 78 63 65     conditions exce
027CB0:  70 74 20 74 68 61 74 20 69 6E 74 65 72 72 75 70    pt that interrup
027CC0:  74 73 20 6D 75 73 74 20 62 65 20 64 69 73 61 62    ts must be disab
027CD0:  6C 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    led.......      
027CE0:  20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73     Exit conditions
027CF0:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 46    :......       AF
027D00:  2C 20 42 43 2C 20 44 45 20 61 6E 64 20 48 4C 20    , BC, DE and HL 
027D10:  63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20    corrupt...      
027D20:  20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73     All other regis
027D30:  74 65 72 73 20 70 72 65 73 65 72 76 65 64 20 61    ters preserved a
027D40:  6E 64 20 69 6E 74 65 72 72 75 70 74 73 20 72 65    nd interrupts re
027D50:  6D 61 69 6E 20 64 69 73 61 62 6C 65 64 2E 0D 0A    main disabled...
027D60:  0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73    ....       Notes
027D70:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    :......       Th
027D80:  69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E 20 69    is indirection i
027D90:  73 20 63 61 6C 6C 65 64 20 65 76 65 72 79 20 66    s called every f
027DA0:  69 66 74 69 65 74 68 20 6F 66 20 61 20 73 65 63    iftieth of a sec
027DB0:  6F 6E 64 20 64 75 72 69 6E 67 20 61 20 20 74 69    ond during a  ti
027DC0:  63 6B 65 72 0D 0A 20 20 20 20 20 20 20 69 6E 74    cker..       int
027DD0:  65 72 72 75 70 74 2E 20 54 68 65 20 72 65 70 65    errupt. The repe
027DE0:  61 74 20 73 70 65 65 64 73 20 61 6E 64 20 20 73    at speeds and  s
027DF0:  74 61 72 74 2D 75 70 20 20 64 65 6C 61 79 73 20    tart-up  delays 
027E00:  20 6F 66 20 20 74 68 65 20 20 6B 65 79 73 20 20     of  the  keys  
027E10:  61 72 65 0D 0A 20 20 20 20 20 20 20 6D 65 61 73    are..       meas
027E20:  75 72 65 64 20 69 6E 20 73 63 61 6E 73 20 6F 66    ured in scans of
027E30:  20 74 68 65 20 6B 65 79 62 6F 61 72 64 20 61 6E     the keyboard an
027E40:  64 20 68 65 6E 63 65 20 66 69 66 74 69 65 74 68    d hence fiftieth
027E50:  20 6F 66 20 61 20 73 65 63 6F 6E 64 2E 0D 0A 0D     of a second....
027E60:  0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74 68 65    ...       If the
027E70:  20 65 73 63 61 70 65 20 6B 65 79 20 69 73 20 70     escape key is p
027E80:  72 65 73 73 65 64 20 74 68 65 6E 20 74 68 65 20    ressed then the 
027E90:  69 6E 64 69 72 65 63 74 69 6F 6E 20 20 4B 4D 20    indirection  KM 
027EA0:  20 54 45 53 54 20 20 42 52 45 41 4B 20 20 69 73     TEST  BREAK  is
027EB0:  0D 0A 20 20 20 20 20 20 20 63 61 6C 6C 65 64 20    ..       called 
027EC0:  74 6F 20 70 72 6F 63 65 73 73 20 74 68 65 20 62    to process the b
027ED0:  72 65 61 6B 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    reak.........   
027EE0:  20 20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72        Related entr
027EF0:  69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ies:......      
027F00:  20 4B 4C 20 53 43 41 4E 20 4E 45 45 44 45 44 0D     KL SCAN NEEDED.
027F10:  0A 20 20 20 20 20 20 20 4B 4D 20 52 45 41 44 20    .       KM READ 
027F20:  4B 45 59 0D 0A 20 20 20 20 20 20 20 4B 4D 20 54    KEY..       KM T
027F30:  45 53 54 20 42 52 45 41 4B 0D 0A 20 20 20 20 20    EST BREAK..     
027F40:  20 20 4B 4D 20 54 45 53 54 20 4B 45 59 0D 0A 0D      KM TEST KEY...
027F50:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
027F60:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
027F70:  41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36    AMSTRAD CPC464/6
027F80:  36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45    64/6128 FIRMWARE
027F90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027FA0:  20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65                page
027FB0:  20 31 36 2E 31 37 0D 0A 1A 69 73 20 73 65 63 74     16.17...is sect
027FC0:  69 6F 6E 20 67 69 76 65 73 20 74 68 65 20 64 65    ion gives the de
027FD0:  74 61 69 6C 65 64 20 65 6E 74 72 79 20 61 6E 64    tailed entry and
027FE0:  20 65 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73     exit conditions
027FF0:  20 61 6E 64 20 20 65 66 66 65 63 74 73 0D 0A 20     and  effects.. 
028000:  20 6F 66 20 20 74 68 65 20 20 6B 65 79 73 20 20     of  the  keys  
028010:  61 72 65 0D 0A 20 20 20 20 20 20 20 6D 65 61 73    are..       meas
028020:  75 72 65 64 20 69 6E 20 73 63 61 6E 73 20 6F 66    ured in scans of
028030:  20 74 68 65 20 6B 65 79 62 6F 61 72 64 20 61 6E     the keyboard an
028040:  64 20 68 65 6E 63 65 20 66 69 66 74 69 65 74 68    d hence fiftieth
028050:  20 6F 66 20 61 20 73 65 63 6F 6E 64 2E 0D 0A 0D     of a second....
028060:  0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74 68 65    ...       If the
028070:  20 65 73 63 61 70 65 20 6B 65 79 20 69 73 20 70     escape key is p
028080:  72 65 73 73 65 64 20 74 68 65 6E 20 74 68 65 20    ressed then the 
028090:  69 6E 64 69 72 65 63 74 69 6F 6E 20 20 4B 4D 20    indirection  KM 
0280A0:  20 54 45 53 54 20 20 42 52 45 41 4B 20 20 69 73     TEST  BREAK  is
0280B0:  0D 0A 20 20 20 20 20 20 20 63 61 6C 6C 65 64 20    ..       called 
0280C0:  74 6F 20 70 72 6F 63 65 73 73 20 74 68 65 20 62    to process the b
0280D0:  72 65 61 6B 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    reak.........   
0280E0:  20 20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72        Related entr
0280F0:  69 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ies:......      
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 20 20 20 20 20 20 20 31    ........       1
028310:  37 20 54 68 65 20 48 69 67 68 20 4B 65 72 6E 65    7 The High Kerne
028320:  6C 20 4A 75 6D 70 62 6C 6F 63 6B 2E 0D 0A 0D 0A    l Jumpblock.....
028330:  0D 0A 20 20 20 20 20 20 20 53 65 70 61 72 61 74    ..       Separat
028340:  65 20 66 72 6F 6D 20 74 68 65 20 6D 61 69 6E 20    e from the main 
028350:  66 69 72 6D 77 61 72 65 20 6A 75 6D 70 62 6C 6F    firmware jumpblo
028360:  63 6B 20 69 73 20 20 61 20 20 73 6D 61 6C 6C 20    ck is  a  small 
028370:  20 6A 75 6D 70 62 6C 6F 63 6B 20 20 66 6F 72 0D     jumpblock  for.
028380:  0A 20 20 20 20 20 20 20 4B 65 72 6E 65 6C 20 72    .       Kernel r
028390:  6F 75 74 69 6E 65 73 20 61 73 73 6F 63 69 61 74    outines associat
0283A0:  65 64 20 77 69 74 68 20 20 52 4F 4D 20 20 73 74    ed with  ROM  st
0283B0:  61 74 65 20 20 61 6E 64 20 20 52 4F 4D 20 20 73    ate  and  ROM  s
0283C0:  65 6C 65 63 74 69 6F 6E 2E 20 20 54 68 65 0D 0A    election.  The..
0283D0:  20 20 20 20 20 20 20 72 6F 75 74 69 6E 65 73 20           routines 
0283E0:  61 63 63 65 73 73 65 64 20 74 68 72 6F 75 67 68    accessed through
0283F0:  20 74 68 69 73 20 6A 75 6D 70 62 6C 6F 63 6B 20     this jumpblock 
028400:  20 61 72 65 20 20 61 6C 6C 20 20 52 41 4D 20 20     are  all  RAM  
028410:  72 65 73 69 64 65 6E 74 2C 20 20 74 6F 0D 0A 20    resident,  to.. 
028420:  20 20 20 20 20 20 61 76 6F 69 64 20 63 6F 6E 66          avoid conf
028430:  75 73 69 6F 6E 20 77 68 69 6C 65 20 74 68 65 20    usion while the 
028440:  52 4F 4D 20 73 74 61 74 65 20 61 6E 64 20 52 4F    ROM state and RO
028450:  4D 20 73 65 6C 65 63 74 20 20 61 72 65 20 20 63    M select  are  c
028460:  68 61 6E 67 65 64 21 20 20 54 68 65 0D 0A 20 20    hanged!  The..  
028470:  20 20 20 20 20 52 41 4D 20 61 72 65 61 20 69 73         RAM area is
028480:  20 63 6F 70 69 65 64 20 6F 75 74 20 6F 66 20 52     copied out of R
028490:  4F 4D 20 64 75 72 69 6E 67 20 74 68 65 20 70 6F    OM during the po
0284A0:  77 65 72 2D 75 70 20 69 6E 69 74 69 61 6C 69 7A    wer-up initializ
0284B0:  61 74 69 6F 6E 2E 20 20 54 68 65 0D 0A 20 20 20    ation.  The..   
0284C0:  20 20 20 20 6A 75 6D 70 62 6C 6F 63 6B 20 73 68        jumpblock sh
0284D0:  6F 75 6C 64 20 6E 6F 74 20 62 65 20 61 6C 74 65    ould not be alte
0284E0:  72 65 64 20 62 79 20 74 68 65 20 75 73 65 72 2E    red by the user.
0284F0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    ......       The
028500:  20 65 6E 74 72 79 20 4B 4C 20 50 4F 4C 4C 20 20     entry KL POLL  
028510:  53 59 4E 43 48 52 4F 4E 4F 55 53 20 20 69 73 20    SYNCHRONOUS  is 
028520:  20 74 68 65 20 20 27 6F 64 64 20 20 6D 61 6E 20     the  'odd  man 
028530:  20 6F 75 74 27 20 20 61 6D 6F 6E 67 73 74 20 20     out'  amongst  
028540:  74 68 65 0D 0A 20 20 20 20 20 20 20 72 6F 75 74    the..       rout
028550:  69 6E 65 73 20 20 69 6E 20 20 74 68 69 73 20 20    ines  in  this  
028560:  6A 75 6D 70 62 6C 6F 63 6B 2E 20 20 55 6E 6C 69    jumpblock.  Unli
028570:  6B 65 20 20 74 68 65 20 20 6F 74 68 65 72 20 20    ke  the  other  
028580:  73 79 6E 63 68 72 6F 6E 6F 75 73 20 20 65 76 65    synchronous  eve
028590:  6E 74 0D 0A 20 20 20 20 20 20 20 68 61 6E 64 6C    nt..       handl
0285A0:  69 6E 67 20 72 6F 75 74 69 6E 65 73 2C 20 77 68    ing routines, wh
0285B0:  69 63 68 20 61 72 65 20 69 6E 20 74 68 65 20 6C    ich are in the l
0285C0:  6F 77 65 72 20 52 4F 4D 2C 20 20 74 68 69 73 20    ower ROM,  this 
0285D0:  20 72 6F 75 74 69 6E 65 20 20 69 73 20 20 52 41     routine  is  RA
0285E0:  4D 0D 0A 20 20 20 20 20 20 20 72 65 73 69 64 65    M..       reside
0285F0:  6E 74 2E 20 20 54 68 69 73 20 20 6D 69 6E 69 6D    nt.  This  minim
028600:  69 73 65 73 20 20 74 68 65 20 20 6F 76 65 72 68    ises  the  overh
028610:  65 61 64 20 20 69 6E 76 6F 6C 76 65 64 20 20 69    ead  involved  i
028620:  6E 20 20 70 6F 6C 6C 69 6E 67 20 20 20 66 6F 72    n  polling   for
028630:  0D 0A 20 20 20 20 20 20 20 73 79 6E 63 68 72 6F    ..       synchro
028640:  6E 6F 75 73 20 65 76 65 6E 74 73 2E 0D 0A 0D 0A    nous events.....
028650:  0D 0A 20 20 20 20 20 20 20 41 20 62 72 69 65 66    ..       A brief
028660:  20 6C 69 73 74 69 6E 67 20 6F 66 20 74 68 65 20     listing of the 
028670:  65 6E 74 72 69 65 73 20 69 6E 20 20 74 68 69 73    entries in  this
028680:  20 20 6A 75 6D 70 62 6C 6F 63 6B 20 20 63 61 6E      jumpblock  can
028690:  20 20 62 65 20 20 66 6F 75 6E 64 20 20 69 6E 0D      be  found  in.
0286A0:  0A 20 20 20 20 20 20 20 73 65 63 74 69 6F 6E 20    .       section 
0286B0:  31 34 2E 33 2E 20 41 20 64 69 73 63 75 73 73 69    14.3. A discussi
0286C0:  6F 6E 20 6F 66 20 52 4F 4D 73 20 61 6E 64 20 74    on of ROMs and t
0286D0:  68 65 20 6D 65 6D 6F 72 79 20 6D 61 70 20 63 61    he memory map ca
0286E0:  6E 20 62 65 20 66 6F 75 6E 64 20 20 69 6E 0D 0A    n be found  in..
0286F0:  20 20 20 20 20 20 20 73 65 63 74 69 6F 6E 20 32           section 2
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:  2C 20 66 75 72 74 68 65 72 20 64 69 73 63 75 73    , further discus
028810:  73 69 6F 6E 20 6F 66 20 52 4F 4D 73 20 63 61 6E    sion of ROMs can
028820:  20 62 65 20 66 6F 75 6E 64 20 69 6E 20 73 65 63     be found in sec
028830:  74 69 6F 6E 20 31 30 20 61 6E 64 20 61 0D 0A 20    tion 10 and a.. 
028840:  20 20 20 20 20 20 64 69 73 63 75 73 73 69 6F 6E          discussion
028850:  20 6F 66 20 65 76 65 6E 74 73 20 63 61 6E 20 62     of events can b
028860:  65 20 66 6F 75 6E 64 20 69 6E 20 73 65 63 74 69    e found in secti
028870:  6F 6E 20 31 32 2E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    on 12...........
028880:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
028890:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
0288A0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
0288B0:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ..............  
0288C0:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
0288D0:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
0288E0:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
0288F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
028900:  20 20 70 61 67 65 20 31 37 2E 31 0D 0A 0D 0A 0D      page 17.1.....
028910:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
028920:  48 49 3A 20 4B 4C 20 55 20 52 4F 4D 20 45 4E 41    HI: KL U ROM ENA
028930:  42 4C 45 20 20 20 20 20 20 20 20 20 20 20 20 20    BLE             
028940:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
028950:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
028960:  20 23 42 39 30 30 0D 0A 0D 0A 0D 0A 20 20 20 20     #B900......    
028970:  20 20 20 45 6E 61 62 6C 65 20 74 68 65 20 75 70       Enable the up
028980:  70 65 72 20 52 4F 4D 2E 0D 0A 0D 0A 0D 0A 20 20    per ROM.......  
028990:  20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A         Action:....
0289A0:  0D 0A 20 20 20 20 20 20 20 45 6E 61 62 6C 65 73    ..       Enables
0289B0:  20 74 68 65 20 63 75 72 72 65 6E 74 6C 79 20 73     the currently s
0289C0:  65 6C 65 63 74 65 64 20 75 70 70 65 72 20 52 4F    elected upper RO
0289D0:  4D 2E 20 52 65 61 64 69 6E 67 20 66 72 6F 6D 20    M. Reading from 
0289E0:  61 64 64 72 65 73 73 65 73 20 23 43 30 30 30 0D    addresses #C000.
0289F0:  0A 20 20 20 20 20 20 20 61 6E 64 20 75 70 20 77    .       and up w
028A00:  69 6C 6C 20 6E 6F 77 20 72 65 74 75 72 6E 20 74    ill now return t
028A10:  68 65 20 63 6F 6E 74 65 6E 74 73 20 6F 66 20 74    he contents of t
028A20:  68 65 20 52 4F 4D 2E 0D 0A 0D 0A 0D 0A 20 20 20    he ROM.......   
028A30:  20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74        Entry condit
028A40:  69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ions:......     
028A50:  20 20 4E 6F 20 63 6F 6E 64 69 74 69 6F 6E 73 2E      No conditions.
028A60:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69    ......       Exi
028A70:  74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D    t conditions:...
028A80:  0A 0D 0A 20 20 20 20 20 20 20 41 20 63 6F 6E 74    ...       A cont
028A90:  61 69 6E 73 20 74 68 65 20 70 72 65 76 69 6F 75    ains the previou
028AA0:  73 20 52 4F 4D 20 73 74 61 74 65 2E 0D 0A 0D 0A    s ROM state.....
028AB0:  0D 0A 20 20 20 20 20 20 20 46 6C 61 67 73 20 63    ..       Flags c
028AC0:  6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20 20    orrupt...       
028AD0:  41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73 74    All other regist
028AE0:  65 72 73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A    ers preserved...
028AF0:  0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73    ....       Notes
028B00:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    :......       Th
028B10:  65 20 6D 65 63 68 61 6E 69 73 6D 20 70 72 6F 76    e mechanism prov
028B20:  69 64 65 64 20 66 6F 72 20 63 61 6C 6C 69 6E 67    ided for calling
028B30:  20 73 75 62 72 6F 75 74 69 6E 65 73 20 69 6E 20     subroutines in 
028B40:  74 68 65 20 20 75 70 70 65 72 20 20 52 4F 4D 20    the  upper  ROM 
028B50:  20 61 6E 64 0D 0A 20 20 20 20 20 20 20 66 6F 72     and..       for
028B60:  20 73 65 6C 65 63 74 69 6E 67 20 75 70 70 65 72     selecting upper
028B70:  20 52 4F 4D 73 20 61 75 74 6F 6D 61 74 69 63 61     ROMs automatica
028B80:  6C 6C 79 20 65 6E 61 62 6C 65 20 20 74 68 65 20    lly enable  the 
028B90:  20 52 4F 4D 20 20 61 73 20 20 72 65 71 75 69 72     ROM  as  requir
028BA0:  65 64 2E 0D 0A 20 20 20 20 20 20 20 54 68 69 73    ed...       This
028BB0:  20 72 6F 75 74 69 6E 65 20 69 73 20 75 73 65 64     routine is used
028BC0:  20 62 79 20 74 68 65 20 66 69 72 6D 77 61 72 65     by the firmware
028BD0:  20 62 75 74 20 69 73 20 6F 74 68 65 72 77 69 73     but is otherwis
028BE0:  65 20 6F 66 20 6C 69 74 74 6C 65 20 75 73 65 2E    e of little use.
028BF0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    ......       The
028C00:  20 70 72 65 76 69 6F 75 73 20 52 4F 4D 20 73 74     previous ROM st
028C10:  61 74 65 20 6D 61 79 20 62 65 20 70 61 73 73 65    ate may be passe
028C20:  64 20 74 6F 20 4B 4C 20 52 4F 4D 20 52 45 53 54    d to KL ROM REST
028C30:  4F 52 45 20 20 74 6F 20 20 72 65 73 65 74 20 20    ORE  to  reset  
028C40:  74 68 65 0D 0A 20 20 20 20 20 20 20 73 74 61 74    the..       stat
028C50:  65 20 74 6F 20 77 68 61 74 20 69 74 20 77 61 73    e to what it was
028C60:  20 62 65 66 6F 72 65 20 74 68 69 73 20 72 6F 75     before this rou
028C70:  74 69 6E 65 20 77 61 73 20 63 61 6C 6C 65 64 2E    tine was called.
028C80:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69    ......       Thi
028C90:  73 20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C 65    s routine enable
028CA0:  73 20 69 6E 74 65 72 72 75 70 74 73 2E 0D 0A 0D    s interrupts....
028CB0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61    .....       Rela
028CC0:  74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A    ted entries:....
028CD0:  0D 0A 20 20 20 20 20 20 20 4B 4C 20 4C 20 52 4F    ..       KL L RO
028CE0:  4D 20 45 4E 41 42 4C 45 0D 0A 20 20 20 20 20 20    M ENABLE..      
028CF0:  20 4B 4C 20 52 4F 4D 20 52 45 53 54 4F 52 45 0D     KL ROM RESTORE.
028D00:  0A 20 20 20 20 20 20 20 4B 4C 20 52 4F 4D 20 53    .       KL ROM S
028D10:  45 4C 45 43 54 0D 0A 20 20 20 20 20 20 20 4B 4C    ELECT..       KL
028D20:  20 55 20 52 4F 4D 20 44 49 53 41 42 4C 45 0D 0A     U ROM DISABLE..
028D30:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20    ..............  
028D40:  20 20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43         AMSTRAD CPC
028D50:  34 36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52    464/664/6128 FIR
028D60:  4D 57 41 52 45 20 20 20 20 20 20 20 20 20 20 20    MWARE           
028D70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
028D80:  20 20 70 61 67 65 20 31 37 2E 32 0D 0A 0D 0A 0D      page 17.2.....
028D90:  0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
028DA0:  48 49 3A 20 4B 4C 20 55 20 52 4F 4D 20 44 49 53    HI: KL U ROM DIS
028DB0:  41 42 4C 45 20 20 20 20 20 20 20 20 20 20 20 20    ABLE            
028DC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
028DD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
028DE0:  20 23 42 39 30 33 0D 0A 0D 0A 0D 0A 20 20 20 20     #B903......    
028DF0:  20 20 20 44 69 73 61 62 6C 65 20 74 68 65 20 75       Disable the u
028E00:  70 70 65 72 20 52 4F 4D 2E 0D 0A 0D 0A 0D 0A 20    pper ROM....... 
028E10:  20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D          Action:...
028E20:  0A 0D 0A 20 20 20 20 20 20 20 44 69 73 61 62 6C    ...       Disabl
028E30:  65 73 20 74 68 65 20 75 70 70 65 72 20 52 4F 4D    es the upper ROM
028E40:  2E 20 52 65 61 64 69 6E 67 20 66 72 6F 6D 20 61    . Reading from a
028E50:  64 64 72 65 73 73 65 73 20 23 43 30 30 30 20 61    ddresses #C000 a
028E60:  6E 64 20 75 70 20 20 77 69 6C 6C 20 20 6E 6F 77    nd up  will  now
028E70:  0D 0A 20 20 20 20 20 20 20 72 65 74 75 72 6E 20    ..       return 
028E80:  74 68 65 20 63 6F 6E 74 65 6E 74 73 20 6F 66 20    the contents of 
028E90:  74 68 65 20 52 41 4D 2E 0D 0A 0D 0A 0D 0A 20 20    the RAM.......  
028EA0:  20 20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69         Entry condi
028EB0:  74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20    tions:......    
028EC0:  20 20 20 4E 6F 20 63 6F 6E 64 69 74 69 6F 6E 73       No conditions
028ED0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78    .......       Ex
028EE0:  69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    it conditions:..
028EF0:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 20 63 6F 6E    ....       A con
028F00:  74 61 69 6E 73 20 74 68 65 20 70 72 65 76 69 6F    tains the previo
028F10:  75 73 20 52 4F 4D 20 73 74 61 74 65 2E 0D 0A 0D    us ROM state....
028F20:  0A 0D 0A 20 20 20 20 20 20 20 46 6C 61 67 73 20    ...       Flags 
028F30:  63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20    corrupt...      
028F40:  20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73     All other regis
028F50:  74 65 72 73 20 70 72 65 73 65 72 76 65 64 2E 0D    ters preserved..
028F60:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65    .....       Note
028F70:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 44    s:......       D
028F80:  69 73 61 62 6C 69 6E 67 20 74 68 65 20 75 70 70    isabling the upp
028F90:  65 72 20 52 4F 4D 20 67 69 76 65 73 20 72 65 61    er ROM gives rea
028FA0:  64 20 61 63 63 65 73 73 20 74 6F 20 74 68 65 20    d access to the 
028FB0:  74 6F 70 20 31 36 4B 20 6F 66 20 52 41 4D 2C 20    top 16K of RAM, 
028FC0:  77 68 69 63 68 0D 0A 20 20 20 20 20 20 20 69 73    which..       is
028FD0:  20 75 73 75 61 6C 6C 79 20 75 73 65 64 20 61 73     usually used as
028FE0:  20 74 68 65 20 73 63 72 65 65 6E 20 6D 65 6D 6F     the screen memo
028FF0:  72 79 2E 20 20 4E 6F 74 65 20 20 74 68 61 74 20    ry.  Note  that 
029000:  20 74 68 65 20 20 6D 61 70 70 69 6E 67 20 20 6F     the  mapping  o
029010:  66 20 20 61 0D 0A 20 20 20 20 20 20 20 6C 6F 63    f  a..       loc
029020:  61 74 69 6F 6E 20 69 6E 20 73 63 72 65 65 6E 20    ation in screen 
029030:  6D 65 6D 6F 72 79 20 74 6F 20 70 69 78 65 6C 73    memory to pixels
029040:  20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E 20 64     on the screen d
029050:  65 70 65 6E 64 73 20 6F 6E 20 74 68 65 20 20 6D    epends on the  m
029060:  6F 64 65 0D 0A 20 20 20 20 20 20 20 61 6E 64 20    ode..       and 
029070:  6F 6E 20 74 68 65 20 73 63 72 65 65 6E 20 6F 66    on the screen of
029080:  66 73 65 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    fset.......     
029090:  20 20 49 74 20 20 69 73 20 20 69 6E 61 64 76 69      It  is  inadvi
0290A0:  73 61 62 6C 65 20 20 74 6F 20 20 64 69 73 61 62    sable  to  disab
0290B0:  6C 65 20 20 74 68 65 20 20 75 70 70 65 72 20 20    le  the  upper  
0290C0:  20 52 4F 4D 20 20 20 77 68 69 6C 65 20 20 20 65     ROM   while   e
0290D0:  78 65 63 75 74 69 6E 67 0D 0A 20 20 20 20 20 20    xecuting..      
0290E0:  20 69 6E 73 74 72 75 63 74 69 6F 6E 73 20 69 6E     instructions in
0290F0:  20 69 74 21 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20     it!......      
029100:  20 54 68 65 20 70 72 65 76 69 6F 75 73 20 52 4F     The previous RO
029110:  4D 20 73 74 61 74 65 20 6D 61 79 20 62 65 20 70    M state may be p
029120:  61 73 73 65 64 20 74 6F 20 4B 4C 20 52 4F 4D 20    assed to KL ROM 
029130:  52 45 53 54 4F 52 45 20 20 74 6F 20 20 72 65 73    RESTORE  to  res
029140:  65 74 20 20 74 68 65 0D 0A 20 20 20 20 20 20 20    et  the..       
029150:  73 74 61 74 65 20 74 6F 20 77 68 61 74 20 69 74    state to what it
029160:  20 77 61 73 20 62 65 66 6F 72 65 20 74 68 69 73     was before this
029170:  20 72 6F 75 74 69 6E 65 20 77 61 73 20 63 61 6C     routine was cal
029180:  6C 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    led.......      
029190:  20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 65 6E     This routine en
0291A0:  61 62 6C 65 73 20 69 6E 74 65 72 72 75 70 74 73    ables interrupts
0291B0:  2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    .........       
0291C0:  52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A    Related entries:
0291D0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4B 4C 20    ......       KL 
0291E0:  4C 20 52 4F 4D 20 44 49 53 41 42 4C 45 0D 0A 20    L ROM DISABLE.. 
0291F0:  20 20 20 20 20 20 4B 4C 20 52 4F 4D 20 52 45 53          KL ROM RES
029200:  54 4F 52 45 0D 0A 20 20 20 20 20 20 20 4B 4C 20    TORE..       KL 
029210:  55 20 52 4F 4D 20 45 4E 41 42 4C 45 0D 0A 0D 0A    U ROM ENABLE....
029220:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52    ....       AMSTR
029230:  41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31    AD CPC464/664/61
029240:  32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20    28 FIRMWARE     
029250:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
029260:  20 20 20 20 20 20 20 20 70 61 67 65 20 31 37 2E            page 17.
029270:  33 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20    3.............. 
029280:  20 20 20 20 20 20 48 49 3A 20 4B 4C 20 4C 20 52          HI: KL L R
029290:  4F 4D 20 45 4E 41 42 4C 45 20 20 20 20 20 20 20    OM ENABLE       
0292A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0292B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0292C0:  20 20 20 20 20 20 20 23 42 39 30 36 0D 0A 0D 0A           #B906....
0292D0:  0D 0A 20 20 20 20 20 20 20 45 6E 61 62 6C 65 20    ..       Enable 
0292E0:  74 68 65 20 6C 6F 77 65 72 20 52 4F 4D 2E 0D 0A    the lower ROM...
0292F0:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F    ....       Actio
029300:  6E 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    n:......       E
029310:  6E 61 62 6C 65 73 20 74 68 65 20 6C 6F 77 65 72    nables the lower
029320:  20 52 4F 4D 2E 20 52 65 61 64 69 6E 67 20 66 72     ROM. Reading fr
029330:  6F 6D 20 61 64 64 72 65 73 73 65 73 20 20 62 65    om addresses  be
029340:  6C 6F 77 20 20 23 34 30 30 30 20 20 77 69 6C 6C    low  #4000  will
029350:  20 20 6E 6F 77 0D 0A 20 20 20 20 20 20 20 72 65      now..       re
029360:  74 75 72 6E 20 74 68 65 20 63 6F 6E 74 65 6E 74    turn the content
029370:  73 20 6F 66 20 74 68 65 20 52 4F 4D 2E 0D 0A 0D    s of the ROM....
029380:  0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20    ...       Entry 
029390:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D    conditions:.....
0293A0:  0A 20 20 20 20 20 20 20 4E 6F 20 63 6F 6E 64 69    .       No condi
0293B0:  74 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    tions.......    
0293C0:  20 20 20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F       Exit conditio
0293D0:  6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ns:......       
0293E0:  41 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 70    A contains the p
0293F0:  72 65 76 69 6F 75 73 20 52 4F 4D 20 73 74 61 74    revious ROM stat
029400:  65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 46    e.......       F
029410:  6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0A 20    lags corrupt... 
029420:  20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65 72 20          All other 
029430:  72 65 67 69 73 74 65 72 73 20 70 72 65 73 65 72    registers preser
029440:  76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ved.......      
029450:  20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20     Notes:......   
029460:  20 20 20 20 49 6E 20 67 65 6E 65 72 61 6C 20 74        In general t
029470:  68 65 20 6C 6F 77 65 72 20 52 4F 4D 20 69 73 20    he lower ROM is 
029480:  64 69 73 61 62 6C 65 64 20 65 78 63 65 70 74 20    disabled except 
029490:  77 68 65 6E 20 61 20 66 69 72 6D 77 61 72 65 20    when a firmware 
0294A0:  72 6F 75 74 69 6E 65 20 69 73 0D 0A 20 20 20 20    routine is..    
0294B0:  20 20 20 63 61 6C 6C 65 64 2E 20 54 68 65 20 66       called. The f
0294C0:  69 72 6D 77 61 72 65 20 20 6A 75 6D 70 62 6C 6F    irmware  jumpblo
0294D0:  63 6B 20 20 61 72 72 61 6E 67 65 73 20 20 74 6F    ck  arranges  to
0294E0:  20 20 65 6E 61 62 6C 65 20 20 74 68 65 20 20 6C      enable  the  l
0294F0:  6F 77 65 72 20 20 52 4F 4D 0D 0A 20 20 20 20 20    ower  ROM..     
029500:  20 20 61 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20      automatically 
029510:  61 6E 64 20 74 6F 20 64 69 73 61 62 6C 65 20 69    and to disable i
029520:  74 20 61 67 61 69 6E 20 77 68 65 6E 20 74 68 65    t again when the
029530:  20 72 6F 75 74 69 6E 65 20 20 72 65 74 75 72 6E     routine  return
029540:  73 2E 20 20 54 68 69 73 0D 0A 20 20 20 20 20 20    s.  This..      
029550:  20 72 6F 75 74 69 6E 65 20 69 73 20 75 73 65 64     routine is used
029560:  20 62 79 20 74 68 65 20 66 69 72 6D 77 61 72 65     by the firmware
029570:  20 62 75 74 20 69 73 20 6F 74 68 65 72 77 69 73     but is otherwis
029580:  65 20 6F 66 20 6C 69 74 74 6C 65 20 75 73 65 2E    e of little use.
029590:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    ......       The
0295A0:  20 70 72 65 76 69 6F 75 73 20 52 4F 4D 20 73 74     previous ROM st
0295B0:  61 74 65 20 6D 61 79 20 62 65 20 70 61 73 73 65    ate may be passe
0295C0:  64 20 74 6F 20 4B 4C 20 52 4F 4D 20 52 45 53 54    d to KL ROM REST
0295D0:  4F 52 45 20 20 74 6F 20 20 72 65 73 65 74 20 20    ORE  to  reset  
0295E0:  74 68 65 0D 0A 20 20 20 20 20 20 20 73 74 61 74    the..       stat
0295F0:  65 20 74 6F 20 77 68 61 74 20 69 74 20 77 61 73    e to what it was
029600:  20 62 65 66 6F 72 65 20 74 68 69 73 20 72 6F 75     before this rou
029610:  74 69 6E 65 20 77 61 73 20 63 61 6C 6C 65 64 2E    tine was called.
029620:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69    ......       Thi
029630:  73 20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C 65    s routine enable
029640:  73 20 69 6E 74 65 72 72 75 70 74 73 2E 0D 0A 0D    s interrupts....
029650:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61    .....       Rela
029660:  74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A    ted entries:....
029670:  0D 0A 20 20 20 20 20 20 20 4B 4C 20 4C 20 52 4F    ..       KL L RO
029680:  4D 20 44 49 53 41 42 4C 45 0D 0A 20 20 20 20 20    M DISABLE..     
029690:  20 20 4B 4C 20 52 4F 4D 20 52 45 53 54 4F 52 45      KL ROM RESTORE
0296A0:  0D 0A 20 20 20 20 20 20 20 4B 4C 20 55 20 52 4F    ..       KL U RO
0296B0:  4D 20 45 4E 41 42 4C 45 0D 0A 0D 0A 0D 0A 0D 0A    M ENABLE........
0296C0:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ........       A
0296D0:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
0296E0:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
0296F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
029700:  20 20 20 20 20 20 20 20 20 20 20 20 70 61 67 65                page
029710:  20 31 37 2E 34 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D     17.4...........
029720:  0A 0D 0A 20 20 20 20 20 20 20 48 49 3A 20 4B 4C    ...       HI: KL
029730:  20 4C 20 52 4F 4D 20 44 49 53 41 42 4C 45 20 20     L ROM DISABLE  
029740:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
029750:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
029760:  20 20 20 20 20 20 20 20 20 20 20 23 42 39 30 39               #B909
029770:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 44 69 73    ......       Dis
029780:  61 62 6C 65 20 74 68 65 20 6C 6F 77 65 72 20 52    able the lower R
029790:  4F 4D 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    OM.......       
0297A0:  41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20    Action:......   
0297B0:  20 20 20 20 44 69 73 61 62 6C 65 73 20 74 68 65        Disables the
0297C0:  20 6C 6F 77 65 72 20 52 4F 4D 2E 20 52 65 61 64     lower ROM. Read
0297D0:  69 6E 67 20 66 72 6F 6D 20 61 64 64 72 65 73 73    ing from address
0297E0:  65 73 20 62 65 6C 6F 77 20 20 23 34 30 30 30 20    es below  #4000 
0297F0:  20 77 69 6C 6C 20 20 6E 6F 77 0D 0A 20 20 20 20     will  now..    
029800:  20 20 20 72 65 74 75 72 6E 20 74 68 65 20 63 6F       return the co
029810:  6E 74 65 6E 74 73 20 6F 66 20 74 68 65 20 52 41    ntents of the RA
029820:  4D 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    M.......       E
029830:  6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    ntry conditions:
029840:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 20    ......       No 
029850:  63 6F 6E 64 69 74 69 6F 6E 73 2E 0D 0A 0D 0A 0D    conditions......
029860:  0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F 6E    .       Exit con
029870:  64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20    ditions:......  
029880:  20 20 20 20 20 41 20 63 6F 6E 74 61 69 6E 73 20         A contains 
029890:  74 68 65 20 70 72 65 76 69 6F 75 73 20 52 4F 4D    the previous ROM
0298A0:  20 73 74 61 74 65 2E 0D 0A 0D 0A 0D 0A 20 20 20     state.......   
0298B0:  20 20 20 20 46 6C 61 67 73 20 63 6F 72 72 75 70        Flags corrup
0298C0:  74 2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F    t...       All o
0298D0:  74 68 65 72 20 72 65 67 69 73 74 65 72 73 20 70    ther registers p
0298E0:  72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20    reserved....... 
0298F0:  20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A          Notes:....
029900:  0D 0A 20 20 20 20 20 20 20 49 6E 20 67 65 6E 65    ..       In gene
029910:  72 61 6C 20 74 68 65 20 6C 6F 77 65 72 20 52 4F    ral the lower RO
029920:  4D 20 69 73 20 64 69 73 61 62 6C 65 64 20 65 78    M is disabled ex
029930:  63 65 70 74 20 77 68 65 6E 20 61 20 66 69 72 6D    cept when a firm
029940:  77 61 72 65 20 72 6F 75 74 69 6E 65 20 69 73 0D    ware routine is.
029950:  0A 20 20 20 20 20 20 20 63 61 6C 6C 65 64 2E 20    .       called. 
029960:  54 68 65 20 66 69 72 6D 77 61 72 65 20 20 6A 75    The firmware  ju
029970:  6D 70 62 6C 6F 63 6B 20 20 61 72 72 61 6E 67 65    mpblock  arrange
029980:  73 20 20 74 6F 20 20 65 6E 61 62 6C 65 20 20 74    s  to  enable  t
029990:  68 65 20 20 6C 6F 77 65 72 20 20 52 4F 4D 0D 0A    he  lower  ROM..
0299A0:  20 20 20 20 20 20 20 61 75 74 6F 6D 61 74 69 63           automatic
0299B0:  61 6C 6C 79 20 61 6E 64 20 74 6F 20 64 69 73 61    ally and to disa
0299C0:  62 6C 65 20 69 74 20 61 67 61 69 6E 20 77 68 65    ble it again whe
0299D0:  6E 20 74 68 65 20 72 6F 75 74 69 6E 65 20 20 72    n the routine  r
0299E0:  65 74 75 72 6E 73 2E 0D 0A 0D 0A 0D 0A 20 20 20    eturns.......   
0299F0:  20 20 20 20 54 68 65 20 70 72 65 76 69 6F 75 73        The previous
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:  20 52 4F 4D 20 73 74 61 74 65 20 6D 61 79 20 62     ROM state may b
029B10:  65 20 70 61 73 73 65 64 20 74 6F 20 4B 4C 20 52    e passed to KL R
029B20:  4F 4D 20 52 45 53 54 4F 52 45 20 20 74 6F 20 20    OM RESTORE  to  
029B30:  72 65 73 65 74 20 20 74 68 65 0D 0A 20 20 20 20    reset  the..    
029B40:  20 20 20 73 74 61 74 65 20 74 6F 20 77 68 61 74       state to what
029B50:  20 69 74 20 77 61 73 20 62 65 66 6F 72 65 20 74     it was before t
029B60:  68 69 73 20 72 6F 75 74 69 6E 65 20 77 61 73 20    his routine was 
029B70:  63 61 6C 6C 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20    called.......   
029B80:  20 20 20 20 54 68 69 73 20 72 6F 75 74 69 6E 65        This routine
029B90:  20 65 6E 61 62 6C 65 73 20 69 6E 74 65 72 72 75     enables interru
029BA0:  70 74 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    pts.........    
029BB0:  20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72 69       Related entri
029BC0:  65 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    es:......       
029BD0:  4B 4C 20 4C 20 52 4F 4D 20 45 4E 41 42 4C 45 0D    KL L ROM ENABLE.
029BE0:  0A 20 20 20 20 20 20 20 4B 4C 20 52 4F 4D 20 52    .       KL ROM R
029BF0:  45 53 54 4F 52 45 0D 0A 20 20 20 20 20 20 20 4B    ESTORE..       K
029C00:  4C 20 55 20 52 4F 4D 20 44 49 53 41 42 4C 45 0D    L U ROM DISABLE.
029C10:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
029C20:  0A 20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20    .       AMSTRAD 
029C30:  43 50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20    CPC464/664/6128 
029C40:  46 49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20    FIRMWARE        
029C50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
029C60:  20 20 20 20 20 70 61 67 65 20 31 37 2E 35 0D 0A         page 17.5..
029C70:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    ............    
029C80:  20 20 20 48 49 3A 20 4B 4C 20 52 4F 4D 20 52 45       HI: KL ROM RE
029C90:  53 54 4F 52 45 20 20 20 20 20 20 20 20 20 20 20    STORE           
029CA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
029CB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
029CC0:  20 20 20 20 23 42 39 30 43 0D 0A 0D 0A 0D 0A 20        #B90C...... 
029CD0:  20 20 20 20 20 20 52 65 73 74 6F 72 65 20 74 68          Restore th
029CE0:  65 20 70 72 65 76 69 6F 75 73 20 52 4F 4D 20 73    e previous ROM s
029CF0:  74 61 74 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    tate.......     
029D00:  20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A 20      Action:...... 
029D10:  20 20 20 20 20 20 54 68 65 20 52 4F 4D 20 73 74          The ROM st
029D20:  61 74 65 20 63 68 61 6E 67 65 20 72 6F 75 74 69    ate change routi
029D30:  6E 65 73 20 61 6C 6C 20 72 65 74 75 72 6E 20 61    nes all return a
029D40:  20 76 61 6C 75 65 20 67 69 76 69 6E 67 20 20 74     value giving  t
029D50:  68 65 20 20 70 72 65 76 69 6F 75 73 0D 0A 20 20    he  previous..  
029D60:  20 20 20 20 20 52 4F 4D 20 73 74 61 74 65 2E 20         ROM state. 
029D70:  47 69 76 65 6E 20 74 68 61 74 20 76 61 6C 75 65    Given that value
029D80:  20 4B 4C 20 52 4F 4D 20 52 45 53 54 4F 52 45 20     KL ROM RESTORE 
029D90:  77 69 6C 6C 20 20 72 65 73 65 74 20 20 74 68 65    will  reset  the
029DA0:  20 20 73 74 61 74 65 20 20 74 6F 0D 0A 20 20 20      state  to..   
029DB0:  20 20 20 20 77 68 61 74 20 69 74 20 77 61 73 20        what it was 
029DC0:  62 65 66 6F 72 65 20 74 68 65 20 63 68 61 6E 67    before the chang
029DD0:  65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    e.......       E
029DE0:  6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    ntry conditions:
029DF0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 20 63    ......       A c
029E00:  6F 6E 74 61 69 6E 73 20 74 68 65 20 70 72 65 76    ontains the prev
029E10:  69 6F 75 73 20 52 4F 4D 20 73 74 61 74 65 2E 0D    ious ROM state..
029E20:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74    .....       Exit
029E30:  20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A     conditions:....
029E40:  0D 0A 20 20 20 20 20 20 20 41 46 20 63 6F 72 72    ..       AF corr
029E50:  75 70 74 2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C    upt...       All
029E60:  20 6F 74 68 65 72 20 72 65 67 69 73 74 65 72 73     other registers
029E70:  20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D     preserved......
029E80:  0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A    .       Notes:..
029E90:  0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65 20 70    ....       The p
029EA0:  72 65 76 69 6F 75 73 20 52 4F 4D 20 73 74 61 74    revious ROM stat
029EB0:  65 20 69 73 20 74 68 65 20 76 61 6C 75 65 20 72    e is the value r
029EC0:  65 74 75 72 6E 65 64 20 62 79 20 6F 6E 65 20 6F    eturned by one o
029ED0:  66 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 20    f:......        
029EE0:  20 20 20 20 20 20 20 20 4B 4C 20 55 20 52 4F 4D            KL U ROM
029EF0:  20 45 4E 41 42 4C 45 0D 0A 20 20 20 20 20 20 20     ENABLE..       
029F00:  20 20 20 20 20 20 20 20 20 4B 4C 20 55 20 52 4F             KL U RO
029F10:  4D 20 44 49 53 41 42 4C 45 0D 0A 20 20 20 20 20    M DISABLE..     
029F20:  20 20 20 20 20 20 20 20 20 20 20 4B 4C 20 4C 20               KL L 
029F30:  52 4F 4D 20 45 4E 41 42 4C 45 0D 0A 20 20 20 20    ROM ENABLE..    
029F40:  20 20 20 20 20 20 20 20 20 20 20 20 4B 4C 20 4C                KL L
029F50:  20 52 4F 4D 20 44 49 53 41 42 4C 45 0D 0A 20 20     ROM DISABLE..  
029F60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 4B 4C                  KL
029F70:  20 52 4F 4D 20 53 45 4C 45 43 54 0D 0A 0D 0A 0D     ROM SELECT.....
029F80:  0A 20 20 20 20 20 20 20 49 74 20 69 73 20 70 6F    .       It is po
029F90:  73 73 69 62 6C 65 20 74 6F 20 75 73 65 20 4B 4C    ssible to use KL
029FA0:  20 55 20 52 4F 4D 20 44 49 53 41 42 4C 45 20 74     U ROM DISABLE t
029FB0:  6F 20 72 65 76 65 72 73 65 20 74 68 65 20 65 66    o reverse the ef
029FC0:  66 65 63 74 20 6F 66 20 61 20 63 61 6C 6C 0D 0A    fect of a call..
029FD0:  20 20 20 20 20 20 20 6F 66 20 4B 4C 20 55 20 52           of KL U R
029FE0:  4F 4D 20 45 4E 41 42 4C 45 20 20 28 61 6D 6F 6E    OM ENABLE  (amon
029FF0:  67 73 74 20 20 76 61 72 69 6F 75 73 20 20 6F 74    gst  various  ot
02A000:  68 65 72 20 20 63 6F 6D 62 69 6E 61 74 69 6F 6E    her  combination
02A010:  73 29 2E 20 20 48 6F 77 65 76 65 72 2C 0D 0A 20    s).  However,.. 
02A020:  20 20 20 20 20 20 63 61 6C 6C 69 6E 67 20 4B 4C          calling KL
02A030:  20 52 4F 4D 20 52 45 53 54 4F 52 45 20 69 73 20     ROM RESTORE is 
02A040:  74 68 65 20 70 72 65 66 65 72 72 65 64 20 6D 65    the preferred me
02A050:  74 68 6F 64 20 73 69 6E 63 65 20 69 74 20 20 72    thod since it  r
02A060:  65 73 74 6F 72 65 73 20 20 74 68 65 0D 0A 20 20    estores  the..  
02A070:  20 20 20 20 20 73 74 61 74 65 20 74 6F 20 77 68         state to wh
02A080:  61 74 20 69 74 20 77 61 73 2C 20 77 68 69 63 68    at it was, which
02A090:  20 6D 69 67 68 74 20 68 61 76 65 20 62 65 65 6E     might have been
02A0A0:  20 65 6E 61 62 6C 65 64 20 61 6E 79 77 61 79 2E     enabled anyway.
02A0B0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69    ......       Thi
02A0C0:  73 20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C 65    s routine enable
02A0D0:  73 20 69 6E 74 65 72 72 75 70 74 73 2E 0D 0A 0D    s interrupts....
02A0E0:  0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64 20    .       Related 
02A0F0:  65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 20 20 20 20    entries:....    
02A100:  20 20 20 4B 4C 20 4C 20 52 4F 4D 20 44 49 53 41       KL L ROM DISA
02A110:  42 4C 45 0D 0A 20 20 20 20 20 20 20 4B 4C 20 4C    BLE..       KL L
02A120:  20 52 4F 4D 20 45 4E 41 42 4C 45 0D 0A 20 20 20     ROM ENABLE..   
02A130:  20 20 20 20 4B 4C 20 52 4F 4D 20 53 45 4C 45 43        KL ROM SELEC
02A140:  54 0D 0A 20 20 20 20 20 20 20 4B 4C 20 55 20 52    T..       KL U R
02A150:  4F 4D 20 44 49 53 41 42 4C 45 0D 0A 20 20 20 20    OM DISABLE..    
02A160:  20 20 20 4B 4C 20 55 20 52 4F 4D 20 45 4E 41 42       KL U ROM ENAB
02A170:  4C 45 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    LE..........    
02A180:  20 20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36       AMSTRAD CPC46
02A190:  34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57    4/664/6128 FIRMW
02A1A0:  41 52 45 20 20 20 20 20 20 20 20 20 20 20 20 20    ARE             
02A1B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02A1C0:  70 61 67 65 20 31 37 2E 36 0D 0A 0D 0A 0D 0A 0D    page 17.6.......
02A1D0:  0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 48 49    .......       HI
02A1E0:  3A 20 4B 4C 20 52 4F 4D 20 53 45 4C 45 43 54 20    : KL ROM SELECT 
02A1F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02A200:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02A210:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23                   #
02A220:  42 39 30 46 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    B90F......      
02A230:  20 53 65 6C 65 63 74 20 61 20 70 61 72 74 69 63     Select a partic
02A240:  75 6C 61 72 20 75 70 70 65 72 20 52 4F 4D 2E 0D    ular upper ROM..
02A250:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69    .....       Acti
02A260:  6F 6E 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    on:......       
02A270:  53 65 6C 65 63 74 20 61 20 67 69 76 65 6E 20 75    Select a given u
02A280:  70 70 65 72 20 52 4F 4D 20 61 6E 64 20 65 6E 61    pper ROM and ena
02A290:  62 6C 65 20 74 68 65 20 75 70 70 65 72 20 52 4F    ble the upper RO
02A2A0:  4D 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    M.......       E
02A2B0:  6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    ntry conditions:
02A2C0:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 43 20 63    ......       C c
02A2D0:  6F 6E 74 61 69 6E 73 20 74 68 65 20 52 4F 4D 20    ontains the ROM 
02A2E0:  73 65 6C 65 63 74 20 61 64 64 72 65 73 73 20 6F    select address o
02A2F0:  66 20 74 68 65 20 72 65 71 75 69 72 65 64 20 52    f the required R
02A300:  4F 4D 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    OM.......       
02A310:  45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    Exit conditions:
02A320:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 43 20 63    ......       C c
02A330:  6F 6E 74 61 69 6E 73 20 74 68 65 20 52 4F 4D 20    ontains the ROM 
02A340:  73 65 6C 65 63 74 20 61 64 64 72 65 73 73 20 6F    select address o
02A350:  66 20 74 68 65 20 70 72 65 76 69 6F 75 73 6C 79    f the previously
02A360:  20 73 65 6C 65 63 74 65 64 20 52 4F 4D 2E 0D 0A     selected ROM...
02A370:  20 20 20 20 20 20 20 42 20 63 6F 6E 74 61 69 6E           B contain
02A380:  73 20 74 68 65 20 70 72 65 76 69 6F 75 73 20 52    s the previous R
02A390:  4F 4D 20 73 74 61 74 65 2E 0D 0A 0D 0A 0D 0A 20    OM state....... 
02A3A0:  20 20 20 20 20 20 41 46 20 63 6F 72 72 75 70 74          AF corrupt
02A3B0:  2E 0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74    ...       All ot
02A3C0:  68 65 72 20 72 65 67 69 73 74 65 72 73 20 70 72    her registers pr
02A3D0:  65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20    eserved.......  
02A3E0:  20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D         Notes:.....
02A3F0:  0A 20 20 20 20 20 20 20 54 68 65 20 70 72 65 76    .       The prev
02A400:  69 6F 75 73 20 52 4F 4D 20 73 74 61 74 65 20 63    ious ROM state c
02A410:  61 6E 20 62 65 20 70 61 73 73 65 64 20 74 6F 20    an be passed to 
02A420:  4B 4C 20 52 4F 4D 20 52 45 53 54 4F 52 45 20 20    KL ROM RESTORE  
02A430:  74 6F 20 20 72 65 73 65 74 20 20 74 68 65 0D 0A    to  reset  the..
02A440:  20 20 20 20 20 20 20 52 4F 4D 20 65 6E 61 62 6C           ROM enabl
02A450:  65 20 74 6F 20 77 68 61 74 20 69 74 20 77 61 73    e to what it was
02A460:  2E 20 42 6F 74 68 20 74 68 65 20 70 72 65 76 69    . Both the previ
02A470:  6F 75 73 20 73 74 61 74 65 20 20 61 6E 64 20 20    ous state  and  
02A480:  74 68 65 20 20 70 72 65 76 69 6F 75 73 0D 0A 20    the  previous.. 
02A490:  20 20 20 20 20 20 73 65 6C 65 63 74 69 6F 6E 20          selection 
02A4A0:  63 61 6E 20 62 65 20 70 61 73 73 65 64 20 74 6F    can be passed to
02A4B0:  20 4B 4C 20 52 4F 4D 20 44 45 53 45 4C 45 43 54     KL ROM DESELECT
02A4C0:  20 74 6F 20 20 72 65 73 74 6F 72 65 20 20 74 68     to  restore  th
02A4D0:  65 20 20 73 74 61 74 65 20 20 74 6F 0D 0A 20 20    e  state  to..  
02A4E0:  20 20 20 20 20 77 68 61 74 20 69 74 20 77 61 73         what it was
02A4F0:  20 61 6E 64 20 74 6F 20 73 65 6C 65 63 74 20 74     and to select t
02A500:  68 65 20 70 72 65 76 69 6F 75 73 6C 79 20 73 65    he previously se
02A510:  6C 65 63 74 65 64 20 52 4F 4D 20 61 67 61 69 6E    lected ROM again
02A520:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
02A530:  65 20 20 6D 65 63 68 61 6E 69 73 6D 20 20 70 72    e  mechanism  pr
02A540:  6F 76 69 64 65 64 20 20 66 6F 72 20 20 63 61 6C    ovided  for  cal
02A550:  6C 69 6E 67 20 20 72 6F 75 74 69 6E 65 73 20 20    ling  routines  
02A560:  69 6E 20 20 65 78 70 61 6E 73 69 6F 6E 20 20 20    in  expansion   
02A570:  52 4F 4D 73 0D 0A 20 20 20 20 20 20 20 61 75 74    ROMs..       aut
02A580:  6F 6D 61 74 69 63 61 6C 6C 79 20 70 65 72 66 6F    omatically perfo
02A590:  72 6D 20 52 4F 4D 20 73 65 6C 65 63 74 69 6F 6E    rm ROM selection
02A5A0:  20 61 73 20 72 65 71 75 69 72 65 64 20 28 73 65     as required (se
02A5B0:  65 20 73 65 63 74 69 6F 6E 20 32 29 2E 0D 0A 0D    e section 2)....
02A5C0:  0A 0D 0A 20 20 20 20 20 20 20 49 74 20 69 73 20    ...       It is 
02A5D0:  20 69 6E 61 64 76 69 73 61 62 6C 65 20 20 74 6F     inadvisable  to
02A5E0:  20 20 73 65 6C 65 63 74 20 20 61 6E 6F 74 68 65      select  anothe
02A5F0:  72 20 20 75 70 70 65 72 20 20 52 4F 4D 20 20 77    r  upper  ROM  w
02A600:  68 69 6C 73 74 20 20 65 78 65 63 75 74 69 6E 67    hilst  executing
02A610:  0D 0A 20 20 20 20 20 20 20 69 6E 73 74 72 75 63    ..       instruc
02A620:  74 69 6F 6E 73 20 69 6E 20 74 68 65 20 75 70 70    tions in the upp
02A630:  65 72 20 52 4F 4D 2E 0D 0A 0D 0A 0D 0A 20 20 20    er ROM.......   
02A640:  20 20 20 20 54 68 69 73 20 72 6F 75 74 69 6E 65        This routine
02A650:  20 65 6E 61 62 6C 65 73 20 69 6E 74 65 72 72 75     enables interru
02A660:  70 74 73 2E 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20    pts.........    
02A670:  20 20 20 52 65 6C 61 74 65 64 20 65 6E 74 72 69       Related entri
02A680:  65 73 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 4B 4C    es:....       KL
02A690:  20 43 55 52 52 20 53 45 4C 45 43 54 49 4F 4E 0D     CURR SELECTION.
02A6A0:  0A 20 20 20 20 20 20 20 4B 4C 20 50 52 4F 42 45    .       KL PROBE
02A6B0:  20 52 4F 4D 0D 0A 20 20 20 20 20 20 20 4B 4C 20     ROM..       KL 
02A6C0:  52 4F 4D 20 44 45 53 45 4C 45 43 54 0D 0A 20 20    ROM DESELECT..  
02A6D0:  20 20 20 20 20 4B 4C 20 52 4F 4D 20 52 45 53 54         KL ROM REST
02A6E0:  4F 52 45 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ORE........     
02A6F0:  20 20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34      AMSTRAD CPC464
02A700:  2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41    /664/6128 FIRMWA
02A710:  52 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20    RE              
02A720:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                   p
02A730:  61 67 65 20 31 37 2E 37 0D 0A 0D 0A 0D 0A 0D 0A    age 17.7........
02A740:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 48 49 3A    ......       HI:
02A750:  20 4B 4C 20 43 55 52 52 20 53 45 4C 45 43 54 49     KL CURR SELECTI
02A760:  4F 4E 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ON              
02A770:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02A780:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 42                  #B
02A790:  39 31 32 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    912......       
02A7A0:  41 73 6B 20 77 68 69 63 68 20 75 70 70 65 72 20    Ask which upper 
02A7B0:  52 4F 4D 20 69 73 20 63 75 72 72 65 6E 74 6C 79    ROM is currently
02A7C0:  20 73 65 6C 65 63 74 65 64 2E 0D 0A 0D 0A 0D 0A     selected.......
02A7D0:  20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A           Action:..
02A7E0:  0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 74 75 72    ....       Retur
02A7F0:  6E 73 20 74 68 65 20 52 4F 4D 20 73 65 6C 65 63    ns the ROM selec
02A800:  74 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65    t address of the
02A810:  20 63 75 72 72 65 6E 74 6C 79 20 73 65 6C 65 63     currently selec
02A820:  74 65 64 20 75 70 70 65 72 20 52 4F 4D 2E 0D 0A    ted upper ROM...
02A830:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79    ....       Entry
02A840:  20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A     conditions:....
02A850:  0D 0A 20 20 20 20 20 20 20 4E 6F 20 63 6F 6E 64    ..       No cond
02A860:  69 74 69 6F 6E 73 2E 0D 0A 0D 0A 0D 0A 20 20 20    itions.......   
02A870:  20 20 20 20 45 78 69 74 20 63 6F 6E 64 69 74 69        Exit conditi
02A880:  6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ons:......      
02A890:  20 41 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20     A contains the 
02A8A0:  52 4F 4D 20 73 65 6C 65 63 74 20 61 64 64 72 65    ROM select addre
02A8B0:  73 73 20 6F 66 20 74 68 65 20 63 75 72 72 65 6E    ss of the curren
02A8C0:  74 6C 79 20 73 65 6C 65 63 74 65 64 20 52 4F 4D    tly selected ROM
02A8D0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41 6C    .......       Al
02A8E0:  6C 20 6F 74 68 65 72 20 72 65 67 69 73 74 65 72    l other register
02A8F0:  73 20 61 6E 64 20 66 6C 61 67 73 20 70 72 65 73    s and flags pres
02A900:  65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    erved.......    
02A910:  20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A 20       Notes:...... 
02A920:  20 20 20 20 20 20 49 74 20 69 73 20 6E 6F 74 20          It is not 
02A930:  70 6F 73 73 69 62 6C 65 20 20 74 6F 20 20 70 72    possible  to  pr
02A940:  65 64 69 63 74 20 20 74 68 65 20 20 52 4F 4D 20    edict  the  ROM 
02A950:  20 73 65 6C 65 63 74 20 20 61 64 64 72 65 73 73     select  address
02A960:  20 20 77 68 69 63 68 20 20 61 6E 79 0D 0A 20 20      which  any..  
02A970:  20 20 20 20 20 70 61 72 74 69 63 75 6C 61 72 20         particular 
02A980:  65 78 70 61 6E 73 69 6F 6E 20 52 4F 4D 20 77 69    expansion ROM wi
02A990:  6C 6C 20 62 65 20 66 69 74 74 65 64 2E 20 54 68    ll be fitted. Th
02A9A0:  65 20 20 27 66 61 72 20 20 61 64 64 72 65 73 73    e  'far  address
02A9B0:  27 20 20 75 73 65 64 20 20 74 6F 0D 0A 20 20 20    '  used  to..   
02A9C0:  20 20 20 20 72 65 66 65 72 65 6E 63 65 20 73 75        reference su
02A9D0:  62 72 6F 75 74 69 6E 65 73 20 69 6E 20 65 78 70    broutines in exp
02A9E0:  61 6E 73 69 6F 6E 20 52 4F 4D 73 20 69 6E 63 6C    ansion ROMs incl
02A9F0:  75 64 65 73 20 20 61 20 20 52 4F 4D 20 20 73 65    udes  a  ROM  se
02AA00:  6C 65 63 74 20 20 62 79 74 65 0D 0A 20 20 20 20    lect  byte..    
02AA10:  20 20 20 77 68 69 63 68 20 6D 75 73 74 20 62 65       which must be
02AA20:  20 73 65 74 20 75 70 20 61 74 20 72 75 6E 20 74     set up at run t
02AA30:  69 6D 65 2E 20 54 68 69 73 20 72 6F 75 74 69 6E    ime. This routin
02AA40:  65 20 72 65 74 75 72 6E 73 20 74 68 65 20 52 4F    e returns the RO
02AA50:  4D 20 20 73 65 6C 65 63 74 0D 0A 20 20 20 20 20    M  select..     
02AA60:  20 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65      address of the
02AA70:  20 63 75 72 72 65 6E 74 20 52 4F 4D 20 20 73 6F     current ROM  so
02AA80:  20 20 74 68 61 74 20 20 69 74 20 20 63 61 6E 20      that  it  can 
02AA90:  20 73 65 74 20 20 75 70 20 20 73 75 69 74 61 62     set  up  suitab
02AAA0:  6C 65 20 20 27 66 61 72 0D 0A 20 20 20 20 20 20    le  'far..      
02AAB0:  20 61 64 64 72 65 73 73 65 73 27 2E 0D 0A 0D 0A     addresses'.....
02AAC0:  0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74    ....       Relat
02AAD0:  65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D    ed entries:.....
02AAE0:  0A 20 20 20 20 20 20 20 4B 4C 20 50 52 4F 42 45    .       KL PROBE
02AAF0:  20 52 4F 4D 0D 0A 20 20 20 20 20 20 20 4B 4C 20     ROM..       KL 
02AB00:  52 4F 4D 20 53 45 4C 45 43 54 0D 0A 0D 0A 0D 0A    ROM SELECT......
02AB10:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
02AB20:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
02AB30:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
02AB40:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
02AB50:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
02AB60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 61                  pa
02AB70:  67 65 20 31 37 2E 38 0D 0A 0D 0A 0D 0A 0D 0A 0D    ge 17.8.........
02AB80:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 48 49 3A 20    .....       HI: 
02AB90:  4B 4C 20 50 52 4F 42 45 20 52 4F 4D 20 20 20 20    KL PROBE ROM    
02ABA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02ABB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02ABC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 23 42 39                 #B9
02ABD0:  31 35 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    15......       A
02ABE0:  73 6B 20 63 6C 61 73 73 20 61 6E 64 20 76 65 72    sk class and ver
02ABF0:  73 69 6F 6E 20 6F 66 20 61 20 52 4F 4D 2E 0D 0A    sion of a ROM...
02AC00:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F    ....       Actio
02AC10:  6E 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54    n:......       T
02AC20:  68 65 20 66 69 72 73 74 20 66 65 77 20 62 79 74    he first few byt
02AC30:  65 73 20 20 6F 66 20 20 61 6C 6C 20 20 75 70 70    es  of  all  upp
02AC40:  65 72 20 20 52 4F 4D 73 20 20 63 6F 6E 74 61 69    er  ROMs  contai
02AC50:  6E 20 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 20    n  information  
02AC60:  69 6E 20 20 61 0D 0A 20 20 20 20 20 20 20 73 74    in  a..       st
02AC70:  61 6E 64 61 72 64 20 66 6F 72 6D 20 61 62 6F 75    andard form abou
02AC80:  74 20 74 68 65 20 52 4F 4D 2E 20 54 68 69 73 20    t the ROM. This 
02AC90:  72 6F 75 74 69 6E 65 20 20 65 78 74 72 61 63 74    routine  extract
02ACA0:  73 20 20 74 68 65 20 20 63 6C 61 73 73 2C 20 20    s  the  class,  
02ACB0:  6D 61 72 6B 0D 0A 20 20 20 20 20 20 20 6E 75 6D    mark..       num
02ACC0:  62 65 72 20 61 6E 64 20 76 65 72 73 69 6F 6E 20    ber and version 
02ACD0:  6E 75 6D 62 65 72 20 62 79 74 65 73 20 66 72 6F    number bytes fro
02ACE0:  6D 20 74 68 65 20 52 4F 4D 20 61 74 20 20 61 20    m the ROM at  a 
02ACF0:  20 67 69 76 65 6E 20 20 52 4F 4D 20 20 73 65 6C     given  ROM  sel
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:  65 63 74 0D 0A 20 20 20 20 20 20 20 61 64 64 72    ect..       addr
02AE10:  65 73 73 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ess.......      
02AE20:  20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E     Entry condition
02AE30:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 43    s:......       C
02AE40:  20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 52 4F     contains the RO
02AE50:  4D 20 73 65 6C 65 63 74 20 61 64 64 72 65 73 73    M select address
02AE60:  20 6F 66 20 74 68 65 20 52 4F 4D 20 74 6F 20 70     of the ROM to p
02AE70:  72 6F 62 65 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20    robe.......     
02AE80:  20 20 45 78 69 74 20 63 6F 6E 64 69 74 69 6F 6E      Exit condition
02AE90:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    s:......       A
02AEA0:  20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20 52 4F     contains the RO
02AEB0:  4D 27 73 20 63 6C 61 73 73 2E 0D 0A 20 20 20 20    M's class...    
02AEC0:  20 20 20 4C 20 63 6F 6E 74 61 69 6E 73 20 74 68       L contains th
02AED0:  65 20 52 4F 4D 27 73 20 6D 61 72 6B 20 6E 75 6D    e ROM's mark num
02AEE0:  62 65 72 0D 0A 20 20 20 20 20 20 20 48 20 63 6F    ber..       H co
02AEF0:  6E 74 61 69 6E 73 20 74 68 65 20 52 4F 4D 27 73    ntains the ROM's
02AF00:  20 76 65 72 73 69 6F 6E 20 6E 75 6D 62 65 72 2E     version number.
02AF10:  0D 0A 0D 0A 20 20 20 20 20 20 20 42 20 61 6E 64    ....       B and
02AF20:  20 66 6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D     flags corrupt..
02AF30:  0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68 65    .       All othe
02AF40:  72 20 72 65 67 69 73 74 65 72 73 20 70 72 65 73    r registers pres
02AF50:  65 72 76 65 64 2E 0D 0A 0D 0A 20 20 20 20 20 20    erved.....      
02AF60:  20 4E 6F 74 65 73 3A 0D 0A 0D 0A 20 20 20 20 20     Notes:....     
02AF70:  20 20 54 68 65 20 52 4F 4D 20 63 6C 61 73 73 20      The ROM class 
02AF80:  72 65 74 75 72 6E 65 64 20 6D 61 79 20 74 61 6B    returned may tak
02AF90:  65 20 61 6E 79 20 6F 66 20 74 68 65 20 66 6F 6C    e any of the fol
02AFA0:  6C 6F 77 69 6E 67 20 76 61 6C 75 65 73 3A 0D 0A    lowing values:..
02AFB0:  0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ..              
02AFC0:  30 3A 20 20 20 20 20 20 20 20 46 6F 72 65 67 72    0:        Foregr
02AFD0:  6F 75 6E 64 20 52 4F 4D 2E 0D 0A 20 20 20 20 20    ound ROM...     
02AFE0:  20 20 20 20 20 20 20 20 20 31 3A 20 20 20 20 20             1:     
02AFF0:  20 20 20 42 61 63 6B 67 72 6F 75 6E 64 20 52 4F       Background RO
02B000:  4D 2E 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20    M...            
02B010:  20 20 32 3A 20 20 20 20 20 20 20 20 45 78 74 65      2:        Exte
02B020:  6E 73 69 6F 6E 20 66 6F 72 65 67 72 6F 75 6E 64    nsion foreground
02B030:  20 52 4F 4D 2E 0D 0A 20 20 20 20 20 20 20 20 20     ROM...         
02B040:  20 20 20 20 20 23 38 30 3A 20 20 20 20 20 20 4F         #80:      O
02B050:  6E 20 62 6F 61 72 64 20 52 4F 4D 20 28 74 68 65    n board ROM (the
02B060:  20 62 75 69 6C 74 20 69 6E 20 42 41 53 49 43 20     built in BASIC 
02B070:  66 6F 72 65 67 72 6F 75 6E 64 20 70 72 6F 67 72    foreground progr
02B080:  61 6D 29 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 53    am).....       S
02B090:  65 6C 65 63 74 69 6E 67 20 61 20 52 4F 4D 20 61    electing a ROM a
02B0A0:  64 64 72 65 73 73 20 77 68 65 72 65 20 6E 6F 20    ddress where no 
02B0B0:  52 4F 4D 20 69 73 20 66 69 74 74 65 64 20 69 6D    ROM is fitted im
02B0C0:  70 6C 69 63 69 74 6C 79 20 73 65 6C 65 63 74 73    plicitly selects
02B0D0:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 6F 6E      the..       on
02B0E0:  2D 62 6F 61 72 64 20 52 4F 4D 20 61 6E 64 20 73    -board ROM and s
02B0F0:  6F 20 69 74 20 77 69 6C 6C 20 72 65 74 75 72 6E    o it will return
02B100:  20 23 38 30 20 61 73 20 69 74 73 20 63 6C 61 73     #80 as its clas
02B110:  73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 65    s.....       The
02B120:  20 6D 65 61 6E 69 6E 67 20 6F 66 20 74 68 65 20     meaning of the 
02B130:  6D 61 72 6B 20 61 6E 64 20 76 65 72 73 69 6F 6E    mark and version
02B140:  20 6E 75 6D 62 65 72 73 20 64 65 70 65 6E 64 73     numbers depends
02B150:  20 6F 6E 20 74 68 65 20 52 4F 4D 2E 0D 0A 0D 0A     on the ROM.....
02B160:  20 20 20 20 20 20 20 53 65 65 20 73 65 63 74 69           See secti
02B170:  6F 6E 20 31 30 20 66 6F 72 20 61 20 64 65 73 63    on 10 for a desc
02B180:  72 69 70 74 69 6F 6E 20 6F 66 20 65 78 70 61 6E    ription of expan
02B190:  73 69 6F 6E 20 52 4F 4D 73 2E 0D 0A 0D 0A 20 20    sion ROMs.....  
02B1A0:  20 20 20 20 20 54 68 69 73 20 72 6F 75 74 69 6E         This routin
02B1B0:  65 20 65 6E 61 62 6C 65 73 20 69 6E 74 65 72 72    e enables interr
02B1C0:  75 70 74 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    upts.....       
02B1D0:  52 65 6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A    Related entries:
02B1E0:  0D 0A 0D 0A 20 20 20 20 20 20 20 4B 4C 20 52 4F    ....       KL RO
02B1F0:  4D 20 53 45 4C 45 43 54 0D 0A 20 20 20 20 20 20    M SELECT..      
02B200:  20 4B 4C 20 43 55 52 52 20 53 45 4C 45 43 54 49     KL CURR SELECTI
02B210:  4F 4E 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ON..............
02B220:  20 20 20 20 20 20 20 41 4D 53 54 52 41 44 20 43           AMSTRAD C
02B230:  50 43 34 36 34 2F 36 36 34 2F 36 31 32 38 20 46    PC464/664/6128 F
02B240:  49 52 4D 57 41 52 45 20 20 20 20 20 20 20 20 20    IRMWARE         
02B250:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B260:  20 20 20 20 70 61 67 65 20 31 37 2E 39 0D 0A 0D        page 17.9...
02B270:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ...........     
02B280:  20 20 48 49 3A 20 4B 4C 20 52 4F 4D 20 44 45 53      HI: KL ROM DES
02B290:  45 4C 45 43 54 20 20 20 20 20 20 20 20 20 20 20    ELECT           
02B2A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B2B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B2C0:  20 20 20 23 42 39 31 38 0D 0A 0D 0A 0D 0A 20 20       #B918......  
02B2D0:  20 20 20 20 20 52 65 73 74 6F 72 65 20 70 72 65         Restore pre
02B2E0:  76 69 6F 75 73 20 75 70 70 65 72 20 52 4F 4D 20    vious upper ROM 
02B2F0:  73 65 6C 65 63 74 69 6F 6E 2E 0D 0A 0D 0A 0D 0A    selection.......
02B300:  20 20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A           Action:..
02B310:  0D 0A 0D 0A 20 20 20 20 20 20 20 53 65 74 20 74    ....       Set t
02B320:  68 65 20 52 4F 4D 20 73 74 61 74 65 20 61 6E 64    he ROM state and
02B330:  20 75 70 70 65 72 20 52 4F 4D 20 73 65 6C 65 63     upper ROM selec
02B340:  74 69 6F 6E 20 74 6F 20 77 68 61 74 20 74 68 65    tion to what the
02B350:  79 20 77 65 72 65 20 62 65 66 6F 72 65 20 20 4B    y were before  K
02B360:  4C 0D 0A 20 20 20 20 20 20 20 52 4F 4D 20 53 45    L..       ROM SE
02B370:  4C 45 43 54 20 77 61 73 20 63 61 6C 6C 65 64 2E    LECT was called.
02B380:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45 6E 74    ......       Ent
02B390:  72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A    ry conditions:..
02B3A0:  0D 0A 0D 0A 20 20 20 20 20 20 20 43 20 63 6F 6E    ....       C con
02B3B0:  74 61 69 6E 73 20 74 68 65 20 52 4F 4D 20 73 65    tains the ROM se
02B3C0:  6C 65 63 74 20 61 64 64 72 65 73 73 20 6F 66 20    lect address of 
02B3D0:  74 68 65 20 70 72 65 76 69 6F 75 73 6C 79 20 73    the previously s
02B3E0:  65 6C 65 63 74 65 64 20 52 4F 4D 2E 0D 0A 20 20    elected ROM...  
02B3F0:  20 20 20 20 20 42 20 63 6F 6E 74 61 69 6E 73 20         B contains 
02B400:  74 68 65 20 70 72 65 76 69 6F 75 73 20 52 4F 4D    the previous ROM
02B410:  20 73 74 61 74 65 2E 0D 0A 0D 0A 0D 0A 20 20 20     state.......   
02B420:  20 20 20 20 45 78 69 74 20 63 6F 6E 64 69 74 69        Exit conditi
02B430:  6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ons:......      
02B440:  20 43 20 63 6F 6E 74 61 69 6E 73 20 74 68 65 20     C contains the 
02B450:  52 4F 4D 20 73 65 6C 65 63 74 20 61 64 64 72 65    ROM select addre
02B460:  73 73 20 6F 66 20 74 68 65 20 63 75 72 72 65 6E    ss of the curren
02B470:  74 6C 79 20 73 65 6C 65 63 74 65 64 20 52 4F 4D    tly selected ROM
02B480:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 42 20    .......       B 
02B490:  63 6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20    corrupt...      
02B4A0:  20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73     All other regis
02B4B0:  74 65 72 73 20 61 6E 64 20 66 6C 61 67 73 20 70    ters and flags p
02B4C0:  72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20    reserved....... 
02B4D0:  20 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A          Notes:....
02B4E0:  0D 0A 20 20 20 20 20 20 20 54 68 65 20 70 72 65    ..       The pre
02B4F0:  76 69 6F 75 73 20 52 4F 4D 20 73 65 6C 65 63 74    vious ROM select
02B500:  69 6F 6E 20 61 6E 64 20 73 74 61 74 65 20 61 72    ion and state ar
02B510:  65 20 74 68 65 20 76 61 6C 75 65 73 20 72 65 74    e the values ret
02B520:  75 72 6E 65 64 20 62 79 20 4B 4C 20 52 4F 4D 0D    urned by KL ROM.
02B530:  0A 20 20 20 20 20 20 20 53 45 4C 45 43 54 2E 20    .       SELECT. 
02B540:  54 68 65 20 63 75 72 72 65 6E 74 6C 79 20 73 65    The currently se
02B550:  6C 65 63 74 65 64 20 52 4F 4D 20 72 65 74 75 72    lected ROM retur
02B560:  6E 65 64 20 62 79 20 74 68 69 73 20 72 6F 75 74    ned by this rout
02B570:  69 6E 65 20 69 73 20 74 68 65 20 52 4F 4D 0D 0A    ine is the ROM..
02B580:  20 20 20 20 20 20 20 74 68 61 74 20 77 61 73 20           that was 
02B590:  73 65 6C 65 63 74 65 64 20 62 79 20 63 61 6C 6C    selected by call
02B5A0:  69 6E 67 20 4B 4C 20 52 4F 4D 20 53 45 4C 45 43    ing KL ROM SELEC
02B5B0:  54 20 28 75 6E 6C 65 73 73 20 66 75 72 74 68 65    T (unless furthe
02B5C0:  72 20 20 73 65 6C 65 63 74 69 6F 6E 73 0D 0A 20    r  selections.. 
02B5D0:  20 20 20 20 20 20 68 61 76 65 20 62 65 65 6E 20          have been 
02B5E0:  6D 61 64 65 29 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    made).......    
02B5F0:  20 20 20 54 68 65 20 6D 65 63 68 61 6E 69 73 6D       The mechanism
02B600:  20 70 72 6F 76 69 64 65 64 20 20 66 6F 72 20 20     provided  for  
02B610:  63 61 6C 6C 69 6E 67 20 20 73 75 62 72 6F 75 74    calling  subrout
02B620:  69 6E 65 73 20 20 69 6E 20 20 65 78 70 61 6E 73    ines  in  expans
02B630:  69 6F 6E 20 20 52 4F 4D 73 0D 0A 20 20 20 20 20    ion  ROMs..     
02B640:  20 20 61 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20      automatically 
02B650:  70 65 72 66 6F 72 6D 73 20 52 4F 4D 20 73 65 6C    performs ROM sel
02B660:  65 63 74 69 6F 6E 20 61 73 20 72 65 71 75 69 72    ection as requir
02B670:  65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20    ed.......       
02B680:  49 74 20 69 73 20 20 69 6E 61 64 76 69 73 61 62    It is  inadvisab
02B690:  6C 65 20 20 74 6F 20 20 73 65 6C 65 63 74 20 20    le  to  select  
02B6A0:  61 6E 6F 74 68 65 72 20 20 75 70 70 65 72 20 20    another  upper  
02B6B0:  52 4F 4D 20 20 77 68 69 6C 73 74 20 20 65 78 65    ROM  whilst  exe
02B6C0:  63 75 74 69 6E 67 0D 0A 20 20 20 20 20 20 20 69    cuting..       i
02B6D0:  6E 73 74 72 75 63 74 69 6F 6E 73 20 69 6E 20 74    nstructions in t
02B6E0:  68 65 20 75 70 70 65 72 20 52 4F 4D 2E 0D 0A 0D    he upper ROM....
02B6F0:  0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73 20 72    ...       This r
02B700:  6F 75 74 69 6E 65 20 65 6E 61 62 6C 65 73 20 69    outine enables i
02B710:  6E 74 65 72 72 75 70 74 73 2E 0D 0A 0D 0A 0D 0A    nterrupts.......
02B720:  0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74 65 64    ..       Related
02B730:  20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 20 20 20     entries:....   
02B740:  20 20 20 20 4B 4C 20 43 55 52 52 20 53 45 4C 45        KL CURR SELE
02B750:  43 54 49 4F 4E 0D 0A 20 20 20 20 20 20 20 4B 4C    CTION..       KL
02B760:  20 52 4F 4D 20 52 45 53 54 4F 52 45 0D 0A 20 20     ROM RESTORE..  
02B770:  20 20 20 20 20 4B 4C 20 52 4F 4D 20 53 45 4C 45         KL ROM SELE
02B780:  43 54 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    CT........      
02B790:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
02B7A0:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
02B7B0:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
02B7C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
02B7D0:  65 20 31 37 2E 31 30 0D 0A 0D 0A 0D 0A 0D 0A 0D    e 17.10.........
02B7E0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 48 49 3A 20    .....       HI: 
02B7F0:  4B 4C 20 4C 44 49 52 20 20 20 20 20 20 20 20 20    KL LDIR         
02B800:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B810:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02B820:  20 20 20 20 20 20 20 20 20 20 20 20 20 23 42 39                 #B9
02B830:  31 42 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4D    1B......       M
02B840:  6F 76 65 20 73 74 6F 72 65 20 28 4C 44 49 52 29    ove store (LDIR)
02B850:  20 77 69 74 68 20 52 4F 4D 73 20 74 75 72 6E 65     with ROMs turne
02B860:  64 20 6F 66 66 2E 0D 0A 0D 0A 0D 0A 20 20 20 20    d off.......    
02B870:  20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D 0A 0D 0A       Action:......
02B880:  20 20 20 20 20 20 20 50 65 72 66 6F 72 6D 73 20           Performs 
02B890:  61 6E 20 4C 44 49 52 20 69 6E 73 74 72 75 63 74    an LDIR instruct
02B8A0:  69 6F 6E 20 28 4C 6F 61 44 20 49 6E 63 72 65 6D    ion (LoaD Increm
02B8B0:  65 6E 74 20 20 61 6E 64 20 20 52 65 70 65 61 74    ent  and  Repeat
02B8C0:  29 20 20 77 69 74 68 20 20 62 6F 74 68 0D 0A 20    )  with  both.. 
02B8D0:  20 20 20 20 20 20 75 70 70 65 72 20 61 6E 64 20          upper and 
02B8E0:  6C 6F 77 65 72 20 52 4F 4D 73 20 64 69 73 61 62    lower ROMs disab
02B8F0:  6C 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    led.......      
02B900:  20 45 6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E     Entry condition
02B910:  73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 42    s:......       B
02B920:  43 2C 20 44 45 2C 20 48 4C 20 61 73 20 72 65 71    C, DE, HL as req
02B930:  75 69 72 65 64 20 62 79 20 74 68 65 20 4C 44 49    uired by the LDI
02B940:  52 20 69 6E 73 74 72 75 63 74 69 6F 6E 2E 0D 0A    R instruction...
02B950:  0D 0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20    ....       Exit 
02B960:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D    conditions:.....
02B970:  0A 20 20 20 20 20 20 20 46 2C 20 42 43 2C 20 44    .       F, BC, D
02B980:  45 2C 20 48 4C 20 61 73 20 73 65 74 20 62 79 20    E, HL as set by 
02B990:  74 68 65 20 4C 44 49 52 20 69 6E 73 74 72 75 63    the LDIR instruc
02B9A0:  74 69 6F 6E 2E 0D 0A 20 20 20 20 20 20 20 41 6C    tion...       Al
02B9B0:  6C 20 6F 74 68 65 72 20 72 65 67 69 73 74 65 72    l other register
02B9C0:  73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A 0D 0A    s preserved.....
02B9D0:  0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A 0D    ..       Notes:.
02B9E0:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69 73    .....       This
02B9F0:  20 72 6F 75 74 69 6E 65 20 6D 61 79 20 62 65 20     routine may be 
02BA00:  75 73 65 64 20 74 6F 20 6D 6F 76 65 20 61 72 65    used to move are
02BA10:  61 73 20 6F 66 20 52 41 4D 20 69 72 72 65 73 70    as of RAM irresp
02BA20:  65 63 74 69 76 65 20 6F 66 20 74 68 65 20 20 52    ective of the  R
02BA30:  4F 4D 0D 0A 20 20 20 20 20 20 20 73 74 61 74 65    OM..       state
02BA40:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    .......       Th
02BA50:  69 73 20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C    is routine enabl
02BA60:  65 73 20 69 6E 74 65 72 72 75 70 74 73 2E 0D 0A    es interrupts...
02BA70:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C    ......       Rel
02BA80:  61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D    ated entries:...
02BA90:  0A 0D 0A 20 20 20 20 20 20 20 4B 4C 20 4C 44 44    ...       KL LDD
02BAA0:  52 0D 0A 20 20 20 20 20 20 20 52 41 4D 20 4C 41    R..       RAM LA
02BAB0:  4D 20 28 52 53 54 20 34 29 0D 0A 0D 0A 0D 0A 0D    M (RST 4).......
02BAC0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    ................
02BAD0:  0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20    .............   
02BAE0:  20 20 20 20 41 4D 53 54 52 41 44 20 43 50 43 34        AMSTRAD CPC4
02BAF0:  36 34 2F 36 36 34 2F 36 31 32 38 20 46 49 52 4D    64/664/6128 FIRM
02BB00:  57 41 52 45 20 20 20 20 20 20 20 20 20 20 20 20    WARE            
02BB10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02BB20:  70 61 67 65 20 31 37 2E 31 31 0D 0A 0D 0A 0D 0A    page 17.11......
02BB30:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 48    ........       H
02BB40:  49 3A 20 4B 4C 20 4C 44 44 52 20 20 20 20 20 20    I: KL LDDR      
02BB50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02BB60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02BB70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02BB80:  23 42 39 31 45 0D 0A 0D 0A 0D 0A 20 20 20 20 20    #B91E......     
02BB90:  20 20 4D 6F 76 65 20 73 74 6F 72 65 20 28 4C 44      Move store (LD
02BBA0:  44 52 29 20 77 69 74 68 20 52 4F 4D 73 20 74 75    DR) with ROMs tu
02BBB0:  72 6E 65 64 20 6F 66 66 2E 0D 0A 0D 0A 0D 0A 20    rned off....... 
02BBC0:  20 20 20 20 20 20 41 63 74 69 6F 6E 3A 0D 0A 0D          Action:...
02BBD0:  0A 0D 0A 20 20 20 20 20 20 20 50 65 72 66 6F 72    ...       Perfor
02BBE0:  6D 73 20 61 6E 20 4C 44 44 52 20 69 6E 73 74 72    ms an LDDR instr
02BBF0:  75 63 74 69 6F 6E 20 28 4C 6F 61 44 20 44 65 63    uction (LoaD Dec
02BC00:  72 65 6D 65 6E 74 20 20 61 6E 64 20 20 52 65 70    rement  and  Rep
02BC10:  65 61 74 29 20 20 77 69 74 68 20 20 62 6F 74 68    eat)  with  both
02BC20:  0D 0A 20 20 20 20 20 20 20 75 70 70 65 72 20 61    ..       upper a
02BC30:  6E 64 20 6C 6F 77 65 72 20 52 4F 4D 73 20 64 69    nd lower ROMs di
02BC40:  73 61 62 6C 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20    sabled.......   
02BC50:  20 20 20 20 45 6E 74 72 79 20 63 6F 6E 64 69 74        Entry condit
02BC60:  69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20    ions:......     
02BC70:  20 20 42 43 2C 20 44 45 2C 20 48 4C 20 61 73 20      BC, DE, HL as 
02BC80:  72 65 71 75 69 72 65 64 20 62 79 20 4C 44 44 52    required by LDDR
02BC90:  20 69 6E 73 74 72 75 63 74 69 6F 6E 2E 0D 0A 0D     instruction....
02BCA0:  0A 0D 0A 20 20 20 20 20 20 20 45 78 69 74 20 63    ...       Exit c
02BCB0:  6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A    onditions:......
02BCC0:  20 20 20 20 20 20 20 46 2C 20 42 43 2C 20 44 45           F, BC, DE
02BCD0:  2C 20 48 4C 20 61 73 20 73 65 74 20 62 79 20 4C    , HL as set by L
02BCE0:  44 44 52 20 69 6E 73 74 72 75 63 74 69 6F 6E 2E    DDR instruction.
02BCF0:  0D 0A 20 20 20 20 20 20 20 41 6C 6C 20 6F 74 68    ..       All oth
02BD00:  65 72 20 72 65 67 69 73 74 65 72 73 20 70 72 65    er registers pre
02BD10:  73 65 72 76 65 64 2E 0D 0A 0D 0A 0D 0A 20 20 20    served.......   
02BD20:  20 20 20 20 4E 6F 74 65 73 3A 0D 0A 0D 0A 0D 0A        Notes:......
02BD30:  20 20 20 20 20 20 20 54 68 69 73 20 72 6F 75 74           This rout
02BD40:  69 6E 65 20 6D 61 79 20 62 65 20 75 73 65 64 20    ine may be used 
02BD50:  74 6F 20 6D 6F 76 65 20 61 72 65 61 73 20 6F 66    to move areas of
02BD60:  20 52 41 4D 20 69 72 72 65 73 70 65 63 74 69 76     RAM irrespectiv
02BD70:  65 20 6F 66 20 74 68 65 20 20 52 4F 4D 0D 0A 20    e of the  ROM.. 
02BD80:  20 20 20 20 20 20 73 74 61 74 65 2E 0D 0A 0D 0A          state.....
02BD90:  0D 0A 20 20 20 20 20 20 20 54 68 69 73 20 72 6F    ..       This ro
02BDA0:  75 74 69 6E 65 20 65 6E 61 62 6C 65 73 20 69 6E    utine enables in
02BDB0:  74 65 72 72 75 70 74 73 2E 0D 0A 0D 0A 0D 0A 0D    terrupts........
02BDC0:  0A 0D 0A 20 20 20 20 20 20 20 52 65 6C 61 74 65    ...       Relate
02BDD0:  64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D 0A 0D 0A    d entries:......
02BDE0:  20 20 20 20 20 20 20 4B 4C 20 4C 44 49 52 0D 0A           KL LDIR..
02BDF0:  20 20 20 20 20 20 20 52 41 4D 20 4C 41 4D 20 28           RAM LAM (
02BE00:  52 53 54 20 34 29 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    RST 4)..........
02BE10:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
02BE20:  0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 41    ........       A
02BE30:  4D 53 54 52 41 44 20 43 50 43 34 36 34 2F 36 36    MSTRAD CPC464/66
02BE40:  34 2F 36 31 32 38 20 46 49 52 4D 57 41 52 45 20    4/6128 FIRMWARE 
02BE50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02BE60:  20 20 20 20 20 20 20 20 20 20 20 70 61 67 65 20               page 
02BE70:  31 37 2E 31 32 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D    17.12...........
02BE80:  0A 0D 0A 20 20 20 20 20 20 20 48 4C 3A 20 4B 4C    ...       HL: KL
02BE90:  20 50 4F 4C 4C 20 53 59 4E 43 48 52 4F 4E 4F 55     POLL SYNCHRONOU
02BEA0:  53 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    S               
02BEB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02BEC0:  20 20 20 20 20 20 20 20 20 20 20 23 42 39 32 31               #B921
02BED0:  0D 0A 0D 0A 20 20 20 20 20 20 20 43 68 65 63 6B    ....       Check
02BEE0:  20 69 66 20 61 6E 20 65 76 65 6E 74 20 77 69 74     if an event wit
02BEF0:  68 20 68 69 67 68 65 72 20 20 70 72 69 6F 72 69    h higher  priori
02BF00:  74 79 20 20 74 68 61 6E 20 20 74 68 65 20 20 63    ty  than  the  c
02BF10:  75 72 72 65 6E 74 20 20 65 76 65 6E 74 20 20 69    urrent  event  i
02BF20:  73 0D 0A 20 20 20 20 20 20 20 70 65 6E 64 69 6E    s..       pendin
02BF30:  67 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74    g.....       Act
02BF40:  69 6F 6E 3A 0D 0A 0D 0A 20 20 20 20 20 20 20 49    ion:....       I
02BF50:  66 20 74 68 65 20 73 79 6E 63 68 72 6F 6E 6F 75    f the synchronou
02BF60:  73 20 65 76 65 6E 74 20 71 75 65 75 65 20 69 73    s event queue is
02BF70:  20 6E 6F 74 20 65 6D 70 74 79 20 74 68 65 6E 20     not empty then 
02BF80:  74 68 65 20 70 72 69 6F 72 69 74 79 20 20 6F 66    the priority  of
02BF90:  20 20 74 68 65 0D 0A 20 20 20 20 20 20 20 68 69      the..       hi
02BFA0:  67 68 65 73 74 20 70 72 69 6F 72 69 74 79 20 70    ghest priority p
02BFB0:  65 6E 64 69 6E 67 20 65 76 65 6E 74 20 69 73 20    ending event is 
02BFC0:  63 6F 6D 70 61 72 65 64 20 77 69 74 68 20 20 74    compared with  t
02BFD0:  68 65 20 20 63 75 72 72 65 6E 74 20 20 65 76 65    he  current  eve
02BFE0:  6E 74 27 73 0D 0A 20 20 20 20 20 20 20 70 72 69    nt's..       pri
02BFF0:  6F 72 69 74 79 20 28 69 66 20 61 6E 79 29 2E 0D    ority (if any)..
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:  0A 0D 0A 20 20 20 20 20 20 20 45 6E 74 72 79 20    ...       Entry 
02C110:  63 6F 6E 64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 20    conditions:.... 
02C120:  20 20 20 20 20 20 4E 6F 20 63 6F 6E 64 69 74 69          No conditi
02C130:  6F 6E 73 2E 0D 0A 0D 0A 20 20 20 20 20 20 20 45    ons.....       E
02C140:  78 69 74 20 63 6F 6E 64 69 74 69 6F 6E 73 3A 0D    xit conditions:.
02C150:  0A 0D 0A 20 20 20 20 20 20 20 49 66 20 74 68 65    ...       If the
02C160:  72 65 20 69 73 20 61 20 68 69 67 68 65 72 20 70    re is a higher p
02C170:  72 69 6F 72 69 74 79 20 65 76 65 6E 74 20 70 65    riority event pe
02C180:  6E 64 69 6E 67 3A 0D 0A 0D 0A 20 20 20 20 20 20    nding:....      
02C190:  20 20 20 20 20 20 20 20 20 20 43 61 72 72 79 20              Carry 
02C1A0:  74 72 75 65 2E 0D 0A 0D 0A 20 20 20 20 20 20 20    true.....       
02C1B0:  49 66 20 74 68 65 72 65 20 69 73 20 6E 6F 20 68    If there is no h
02C1C0:  69 67 68 65 72 20 70 72 69 6F 72 69 74 79 20 65    igher priority e
02C1D0:  76 65 6E 74 20 70 65 6E 64 69 6E 67 3A 0D 0A 0D    vent pending:...
02C1E0:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
02C1F0:  20 43 61 72 72 79 20 66 61 6C 73 65 2E 0D 0A 0D     Carry false....
02C200:  0A 20 20 20 20 20 20 20 41 6C 77 61 79 73 3A 0D    .       Always:.
02C210:  0A 0D 0A 20 20 20 20 20 20 20 20 20 20 20 20 20    ...             
02C220:  20 20 20 41 20 61 6E 64 20 6F 74 68 65 72 20 66       A and other f
02C230:  6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0A 0D    lags corrupt....
02C240:  0A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
02C250:  20 41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73     All other regis
02C260:  74 65 72 73 20 70 72 65 73 65 72 76 65 64 2E 0D    ters preserved..
02C270:  0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73 3A    ...       Notes:
02C280:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68 69    ......       Thi
02C290:  73 20 72 6F 75 74 69 6E 65 20 69 73 20 69 6E 20    s routine is in 
02C2A0:  74 68 65 20 68 69 67 68 20 6A 75 6D 70 62 6C 6F    the high jumpblo
02C2B0:  63 6B 20 20 74 6F 20 20 6D 69 6E 69 6D 69 73 65    ck  to  minimise
02C2C0:  20 20 74 68 65 20 20 6F 76 65 72 68 65 61 64 20      the  overhead 
02C2D0:  20 6F 66 0D 0A 20 20 20 20 20 20 20 70 6F 6C 6C     of..       poll
02C2E0:  69 6E 67 20 66 6F 72 20 73 79 6E 63 68 72 6F 6E    ing for synchron
02C2F0:  6F 75 73 20 65 76 65 6E 74 73 2E 20 49 66 20 20    ous events. If  
02C300:  74 68 65 20 20 73 79 6E 63 68 72 6F 6E 6F 75 73    the  synchronous
02C310:  20 20 65 76 65 6E 74 20 20 71 75 65 75 65 20 20      event  queue  
02C320:  69 73 0D 0A 20 20 20 20 20 20 20 65 6D 70 74 79    is..       empty
02C330:  20 74 68 65 6E 20 74 68 65 20 72 6F 75 74 69 6E     then the routin
02C340:  65 20 74 61 6B 65 73 20 6F 6E 6C 79 20 61 20 66    e takes only a f
02C350:  65 77 20 69 6E 73 74 72 75 63 74 69 6F 6E 73 2E    ew instructions.
02C360:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 57 68 69    ......       Whi
02C370:  6C 65 20 61 20 73 79 6E 63 68 72 6F 6E 6F 75 73    le a synchronous
02C380:  20 65 76 65 6E 74 20 69 73 20 62 65 69 6E 67 20     event is being 
02C390:  70 72 6F 63 65 73 73 65 64 20 74 68 65 20 4B 65    processed the Ke
02C3A0:  72 6E 65 6C 20 72 65 6D 65 6D 62 65 72 73 20 20    rnel remembers  
02C3B0:  69 74 73 0D 0A 20 20 20 20 20 20 20 70 72 69 6F    its..       prio
02C3C0:  72 69 74 79 2E 20 20 54 68 65 20 20 73 79 6E 63    rity.  The  sync
02C3D0:  68 72 6F 6E 6F 75 73 20 20 65 76 65 6E 74 20 20    hronous  event  
02C3E0:  72 6F 75 74 69 6E 65 20 20 6D 61 79 20 20 20 69    routine  may   i
02C3F0:  74 73 65 6C 66 20 20 20 70 6F 6C 6C 20 20 20 74    tself   poll   t
02C400:  68 65 0D 0A 20 20 20 20 20 20 20 73 79 6E 63 68    he..       synch
02C410:  72 6F 6E 6F 75 73 20 65 76 65 6E 74 20 71 75 65    ronous event que
02C420:  75 65 2C 20 62 75 74 20 6F 6E 6C 79 20 65 76 65    ue, but only eve
02C430:  6E 74 73 20 6F 66 20 20 61 20 20 68 69 67 68 65    nts of  a  highe
02C440:  72 20 20 70 72 69 6F 72 69 74 79 20 20 74 68 61    r  priority  tha
02C450:  6E 0D 0A 20 20 20 20 20 20 20 69 74 73 65 6C 66    n..       itself
02C460:  20 61 72 65 20 6E 6F 74 69 66 69 65 64 20 74 6F     are notified to
02C470:  20 69 74 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20     it.......      
02C480:  20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 65 6E     This routine en
02C490:  61 62 6C 65 73 20 69 6E 74 65 72 72 75 70 74 73    ables interrupts
02C4A0:  2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65    .......       Re
02C4B0:  6C 61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A    lated entries:..
02C4C0:  0D 0A 20 20 20 20 20 20 20 4B 4C 20 45 56 45 4E    ..       KL EVEN
02C4D0:  54 0D 0A 20 20 20 20 20 20 20 4B 4C 20 44 4F 4E    T..       KL DON
02C4E0:  45 20 53 59 4E 43 0D 0A 20 20 20 20 20 20 20 4B    E SYNC..       K
02C4F0:  4C 20 44 4F 20 53 59 4E 43 0D 0A 20 20 20 20 20    L DO SYNC..     
02C500:  20 20 4B 4C 20 4E 45 58 54 20 53 59 4E 43 0D 0A      KL NEXT SYNC..
02C510:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20    ..........      
02C520:  20 41 4D 53 54 52 41 44 20 43 50 43 34 36 34 2F     AMSTRAD CPC464/
02C530:  36 36 34 2F 36 31 32 38 20 46 49 52 4D 57 41 52    664/6128 FIRMWAR
02C540:  45 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    E               
02C550:  20 20 20 20 20 20 20 20 20 20 20 20 20 70 61 67                 pag
02C560:  65 20 31 37 2E 31 33 0D 0A 0D 0A 0D 0A 0D 0A 0D    e 17.13.........
02C570:  0A 0D 0A 0D 0A 20 20 20 20 20 20 20 48 49 3A 20    .....       HI: 
02C580:  4B 4C 20 53 43 41 4E 20 4E 45 45 44 45 44 20 20    KL SCAN NEEDED  
02C590:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02C5A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02C5B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 23 42 39                 #B9
02C5C0:  32 41 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    2A......       E
02C5D0:  6E 73 75 72 65 20 6B 65 79 62 6F 61 72 64 20 69    nsure keyboard i
02C5E0:  73 20 73 63 61 6E 6E 65 64 20 61 74 20 6E 65 78    s scanned at nex
02C5F0:  74 20 6F 70 70 6F 72 74 75 6E 69 74 79 2E 0D 0A    t opportunity...
02C600:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 63 74 69 6F    ....       Actio
02C610:  6E 3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 46    n:......       F
02C620:  6F 72 63 65 20 74 68 65 20 4B 65 79 20 4D 61 6E    orce the Key Man
02C630:  61 67 65 72 20 74 6F 20 20 73 63 61 6E 20 20 74    ager to  scan  t
02C640:  68 65 20 20 6B 65 79 62 6F 61 72 64 20 20 77 68    he  keyboard  wh
02C650:  65 6E 20 20 74 68 65 20 20 6E 65 78 74 20 20 74    en  the  next  t
02C660:  69 63 6B 65 72 0D 0A 20 20 20 20 20 20 20 69 6E    icker..       in
02C670:  74 65 72 72 75 70 74 20 6F 63 63 75 72 73 2E 20    terrupt occurs. 
02C680:  54 68 69 73 20 6D 61 79 20 62 65 20 75 73 65 64    This may be used
02C690:  20 74 6F 20 72 65 64 75 63 65 20 74 68 65 20 20     to reduce the  
02C6A0:  70 72 6F 62 61 62 69 6C 69 74 79 20 20 6F 66 20    probability  of 
02C6B0:  20 6B 65 79 0D 0A 20 20 20 20 20 20 20 70 72 65     key..       pre
02C6C0:  73 73 69 6E 67 73 20 62 65 69 6E 67 20 6D 69 73    ssings being mis
02C6D0:  73 65 64 20 77 68 69 6C 65 20 69 6E 74 65 72 72    sed while interr
02C6E0:  75 70 74 73 20 61 72 65 20 64 69 73 61 62 6C 65    upts are disable
02C6F0:  64 2E 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 45    d.......       E
02C700:  6E 74 72 79 20 63 6F 6E 64 69 74 69 6F 6E 73 3A    ntry conditions:
02C710:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 20    ......       No 
02C720:  63 6F 6E 64 69 74 69 6F 6E 73 2E 0D 0A 0D 0A 0D    conditions......
02C730:  0A 20 20 20 20 20 20 20 45 78 69 74 20 63 6F 6E    .       Exit con
02C740:  64 69 74 69 6F 6E 73 3A 0D 0A 0D 0A 0D 0A 20 20    ditions:......  
02C750:  20 20 20 20 20 41 46 20 61 6E 64 20 48 4C 20 63         AF and HL c
02C760:  6F 72 72 75 70 74 2E 0D 0A 20 20 20 20 20 20 20    orrupt...       
02C770:  41 6C 6C 20 6F 74 68 65 72 20 72 65 67 69 73 74    All other regist
02C780:  65 72 73 20 70 72 65 73 65 72 76 65 64 2E 0D 0A    ers preserved...
02C790:  0D 0A 0D 0A 20 20 20 20 20 20 20 4E 6F 74 65 73    ....       Notes
02C7A0:  3A 0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 54 68    :......       Th
02C7B0:  65 20 6B 65 79 62 6F 61 72 64 20 69 73 20 6E 6F    e keyboard is no
02C7C0:  72 6D 61 6C 6C 79 20 20 73 63 61 6E 6E 65 64 20    rmally  scanned 
02C7D0:  20 6F 6E 20 20 65 76 65 72 79 20 20 73 69 78 74     on  every  sixt
02C7E0:  68 20 20 74 69 63 6B 65 72 20 20 69 6E 74 65 72    h  ticker  inter
02C7F0:  72 75 70 74 0D 0A 20 20 20 20 20 20 20 28 65 76    rupt..       (ev
02C800:  65 72 79 20 66 69 66 74 69 65 74 68 20 6F 66 20    ery fiftieth of 
02C810:  61 20 73 65 63 6F 6E 64 29 2E 20 57 68 69 6C 65    a second). While
02C820:  20 69 6E 74 65 72 72 75 70 74 73 20 61 72 65 20     interrupts are 
02C830:  64 69 73 61 62 6C 65 64 20 74 68 65 20 20 74 69    disabled the  ti
02C840:  63 6B 73 0D 0A 20 20 20 20 20 20 20 61 72 65 20    cks..       are 
02C850:  6C 6F 73 74 20 61 6E 64 20 74 68 65 20 6B 65 79    lost and the key
02C860:  62 6F 61 72 64 20 77 69 6C 6C 20 20 6E 6F 74 20    board will  not 
02C870:  20 62 65 20 20 73 63 61 6E 6E 65 64 2E 20 20 49     be  scanned.  I
02C880:  66 20 20 69 6E 74 65 72 72 75 70 74 73 20 20 61    f  interrupts  a
02C890:  72 65 0D 0A 20 20 20 20 20 20 20 64 69 73 61 62    re..       disab
02C8A0:  6C 65 64 20 66 6F 72 20 61 20 73 69 67 6E 69 66    led for a signif
02C8B0:  69 63 61 6E 74 20 70 65 72 69 6F 64 20 28 6D 6F    icant period (mo
02C8C0:  72 65 20 74 68 61 6E 20 74 68 72 65 65 20 20 74    re than three  t
02C8D0:  69 63 6B 73 29 20 20 74 68 65 6E 20 20 74 68 69    icks)  then  thi
02C8E0:  73 0D 0A 20 20 20 20 20 20 20 72 6F 75 74 69 6E    s..       routin
02C8F0:  65 20 73 68 6F 75 6C 64 20 62 65 20 63 61 6C 6C    e should be call
02C900:  65 64 20 6A 75 73 74 20 62 65 66 6F 72 65 20 20    ed just before  
02C910:  69 6E 74 65 72 72 75 70 74 73 20 20 61 72 65 20    interrupts  are 
02C920:  20 72 65 2D 65 6E 61 62 6C 65 64 2E 20 20 49 66     re-enabled.  If
02C930:  0D 0A 20 20 20 20 20 20 20 69 6E 74 65 72 72 75    ..       interru
02C940:  70 74 73 20 61 72 65 20 64 69 73 61 62 6C 65 64    pts are disabled
02C950:  20 66 6F 72 20 61 20 6C 6F 6E 67 20 74 69 6D 65     for a long time
02C960:  20 28 6D 6F 72 65 20 74 68 61 6E 20 74 77 65 6C     (more than twel
02C970:  76 65 20 74 69 63 6B 73 29 20 20 74 68 65 6E 0D    ve ticks)  then.
02C980:  0A 20 20 20 20 20 20 20 74 68 65 20 20 75 73 65    .       the  use
02C990:  72 20 20 6D 69 67 68 74 20 20 63 6F 6E 73 69 64    r  might  consid
02C9A0:  65 72 20 20 63 61 6C 6C 69 6E 67 20 20 74 68 69    er  calling  thi
02C9B0:  73 20 20 72 6F 75 74 69 6E 65 20 20 20 61 6E 64    s  routine   and
02C9C0:  20 20 20 72 65 2D 65 6E 61 62 6C 69 6E 67 0D 0A       re-enabling..
02C9D0:  20 20 20 20 20 20 20 69 6E 74 65 72 72 75 70 74           interrupt
02C9E0:  73 20 66 6F 72 20 61 20 73 68 6F 72 74 20 74 69    s for a short ti
02C9F0:  6D 65 20 65 76 65 72 79 20 66 69 66 74 69 65 74    me every fiftiet
02CA00:  68 20 6F 66 20 61 20 73 65 63 6F 6E 64 2E 0D 0A    h of a second...
02CA10:  0D 0A 0D 0A 0D 0A 20 20 20 20 20 20 20 52 65 6C    ......       Rel
02CA20:  61 74 65 64 20 65 6E 74 72 69 65 73 3A 0D 0A 0D    ated entries:...
02CA30:  0A 0D 0A 20 20 20 20 20 20 20 4B 4D 20 53 43 41    ...       KM SCA
02CA40:  4E 20 4B 45 59 53 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    N KEYS..........
02CA50:  0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A    ................
02CA60:  0D 0A 0D 0A 20 20 20 20 20 20 20 41 4D 53 54 52    ....       AMSTR
02CA70:  41 44 20 43 50 43 34 36 34 2F 36 36 34 2F 36 31    AD CPC464/664/61
02CA80:  32 38 20 46 49 52 4D 57 41 52 45 20 20 20 20 20    28 FIRMWARE     
02CA90:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02CAA0:  20 20 20 20 20 20 20 70 61 67 65 20 31 37 2E 31           page 17.1
02CAB0:  34 0D 0A 1A 20 53 65 70 61 72 61 74 65 20 66 72    4... Separate fr
02CAC0:  6F 6D 20 74 68 65 20 6D 61 69 6E 20 66 69 72 6D    om the main firm
02CAD0:  77 61 72 65 20 6A 75 6D 70 62 6C 6F 63 6B 20 69    ware jumpblock i
02CAE0:  73 20 20 61 20 20 73 6D 61 6C 6C 20 20 6A 75 6D    s  a  small  jum
02CAF0:  70 62 6C 6F 63 6B 20 20 66 6F 72 0D 0A 20 20 20    pblock  for..   
02CB00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CB90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CBA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CBB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CBC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CBD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CBE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CBF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CCF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CD90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CDA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CDB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CDC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CDD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CDE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CDF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CE90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CEA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CEB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CEC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CEE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CEF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CF90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CFA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CFB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CFC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CFD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CFE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02CFF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D0A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D0B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D0C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D0D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D0E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D0F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D4A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D4B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D4C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D4D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D4E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D4F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D5A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D5B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D5C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D5D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D5E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D5F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D6F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D9A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D9B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D9C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D9D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D9E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02D9F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DA90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DAA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DAB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DAC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DAD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DAE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DAF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DB90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DBA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DBB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DBC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DBD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DBE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DBF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DCA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DCB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DCC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DCD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DCE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DCF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DD90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DDA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DDB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DDC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DDD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DDE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DDF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DE90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DEA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DEB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DEC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DEE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DEF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DF90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DFA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DFB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DFC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DFD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DFE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02DFF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E0A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E0B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E0C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E0D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E0E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E0F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E3F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E4F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E5F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02E9F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EA90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EAF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EB90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EBF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ECF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02ED90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EDF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EE90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EEF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EF90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02EFF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F0F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F3F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F4F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F5F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F6F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F700:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F710:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F720:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F730:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F740:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F750:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F760:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F770:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F780:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F790:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F7F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02F8F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
RESULT OF SEARCH :
PRO=166   CHEA=0   COD=40   MUSI=0   COP=5   GRA=202   WRIT=85   198=2   199=2   STARTER=0   KBI=0   CAAV=0   L.TOURNIER=0  
EXTENDED CPC DSK File    SAMdisk120417(  PCHAP-15 15q  CHAP-15 16 CHAP-15 16!CHA
P-15 17"#$%&'()*+,-./01CHAP-15 172CHAP-15 183456789ABCHAP-15 19CDEFGHIJKLMNOPQRC
HAP-15 19SCHAP-15 20TUVWXYZabcCHAP-15 20dCHAP-15 21efghijklmnopqrstCHAP-15 21uCH
AP-15 22vwxyzCHAP-16 1 CHAP-16 1 CHAP-16 2 BCHAP-17   £CHAP-17                  
    The prompt messages are turned on (see CAS NOISY) by this routine.          
   When cataloguing the Cassette Manager reads the header record,  prints       
  information from it and then reads the data record. This cycle repeats        
 until the user hits the escape key.  The  information  printed  is  as         
follows                      FILENAME block N T Ok             FILENAME is the n
ame of the file on the tape, or 'Unnamed file' if the         filename starts wi
th a null (character #00).             N is the block. Block 1 is normally the f
irst block in a file.             T is a representation of the file type of the 
file. It  is  formed  by         adding #24 (the character '$') to the file type
 byte masked  with  #0F         (to remove the version number field).  The  stan
dard  file  types  are         thus                      $         a BASIC progr
am file                  %         a protected BASIC program file               
   *         an ASCII text file (default file type)                  &         a
 binary file.                  '         a protected binary file             Oth
er file types are possible but will not have been  written  by  the         BASI
C in  the on-board ROM. See section 8.4 for a description  of  the         file 
type byte.             Ok is printed after the end of the data record. This  sho
ws  that  the         data was read without errors and also serves to indicate  
the  end  of         the data on tape (to help avoid over-recording a tape file)
.               Related entries             CAS CATALOG (DISC)         CAS NOISY
                               AMSTRAD CPC464/664/6128 FIRMWARE                 
          page 15.160                     137 CAS CATALOG (DISC)                
                          #BC9B           Display the disc directory           A
ction           Display the disc directory for the current drive and current use
r. The           directory is sorted into alphabetical order and displayed in  a
s  many         columns as will fit in the current text window (stream#0). The s
ize in         Kbytes is shown along side each file. The total amount of  free  
space         on the disc is also shown.           Entry conditions           DE
 contains the address of a 2K buffer to use.           Exit conditions          
 If the cataloging went OK                    Carry true.                  Zero 
false.                  A corrupt.           If failed for any reason           
         Carry false.                  Zero true.         P           A contains
 an error number.           Always                    BC,DE,HL,IX and other flag
s corrupt.                  All registers preserved.           NOTES           F
iles marked SYS are not shown.             Files marked R/O are shown with a '*'
 after the filename.             Unlike the cassette version of this routine, th
e disc input stream  is         not required. (Note BASIC abandons both the inpu
t and output  streams         when generating the catalogue.)               Rela
ted entries           CAS CATALOG         DIR                   AMSTRAD CPC464/6
64/6128 FIRMWARE                           page 15.161                     138 C
AS WRITE                                                   #BC9E           Write
 a record to tape.           Action.           Write a record to the cassette. T
his routine is  used  by  the  higher         level routines (CAS OUT CHAR, CAS 
OUT DIRECT and  CAS  OUT  CLOSE)  to         write the header and data records t
hat make up a tape file.           Entry conditions           HL contains the ad
dress of the data to write.         DE contains the length of the data to write.
         A contains the sync character to write at the end of the leader.       
    Exit conditions           If the record was written OK                    Ca
rry true.                  A corrupt.           If an error occurred or the user
 hit escape                    Carry false.                  A contains an error
 code.           Always                    BC, DE, HL, IX corrupt.              
    All other registers preserved.           Notes             A data length of 
0 passed to this routine is taken to mean 65536 bytes         and all of the mem
ory will be written to tape. (This is unlikely to be         useful).           
  The data to be written may lie anywhere in RAM, even underneath a ROM.        
     The sync character is used to distinguish header records (sync is #2C)     
    from data records (sync is #16). Other sync characters could  be  used      
   but the resulting record would require special action to be  taken  to       
  read it.             The error codes returned by this routine are             
       0    Break          The user hit the escape key.                  1    Ov
errun        The Cassette Manager was  unable  to  get                          
            back to writing a bit fast enough.                 AMSTRAD CPC464/66
4/6128 FIRMWARE                           page 15.162                     Becaus
e  reading  and  writing  the  tape  requires  stringent  timing         conside
rations interrupts  are  disabled  whilst  the  tape  is  being         written 
(potentially  a  period  of  over  5  minutes).  It  would  be         unpleasan
t to have the sound chip making a noise for all this time  so         the Sound 
Manager is shut down (SOUND RESET). When writing to the tape         has finishe
d interrupts are re-enabled.               The cassette motor is started by this
  routine  (in  case  it  is  not         already on) and  restored  to  its  pr
evious  state  when  writing  is         completed.                 Related entr
ies               CAS CHECK         CAS READ                                    
                                               AMSTRAD CPC464/664/6128 FIRMWARE 
                          page 15.163                     139 CAS READ          
                                          #BCA1           Read a record from tap
e.           Action           Read a whole record from the cassette. This routin
e  is  used  by  the         higher level routines (CAS IN CHAR, CAS  IN  DIRECT
  and  CAS  CATALOG         amongst others) to read the header and data records 
 that  make  up  a         file.           Entry conditions           HL contain
s the address to put the data read.         DE contains the length of the data t
o read.         A contains the sync character expected at the end of the leader.
           Exit conditions           If record was read OK                    Ca
rry true.                  A corrupt.           If an error occurred or the user
 hit escape                    Carry false.                  A contains an error
 code.             Always                    BC, DE, HL, IX and other flags corr
upt.                  All other registers preserved.             Notes          
   A data length of 0 passed to this  routine  is  taken  to  mean  65536       
  bytes. (This is not useful).             It is not necessary to read a whole r
ecord from tape.  If  the  length         passed is less than the actual length 
of  th  Pe  record  then  only  the         number of bytes will be read. Trying
 to read more bytes from a  record         than were written will produce an err
or,  usually  an  overflow  error         (see below).             The sync char
acter is used to distinguish header records (sync is #2C)         from data reco
rds (sync is #16). Other sync characters could  be  used         if the record w
as written that way.                     AMSTRAD CPC464/664/6128 FIRMWARE       
                    page 15.164                     The error codes returned by 
this routine are                      0    Break          The user hit the escap
e key.                      1    Overflow       The Cassette Manager found a bit
 that was                                      too long to read.                
      2    CRC            A CRC failure was detected.             The cassette m
otor is started by this  routine  (in  case  it  is  not         already on) and
  restored  to  its  previous  state  when  reading  is         completed.      
       Because  reading  the  tape  requires  stringent  timing  constraints,   
      interrupts are disabled whilst the tape is being read  (potentially  a    
     period of over 5 minutes). It would be unpleasant to  have  the  sound     
    chip making a noise for all this time so the  Sound  Manager  is  shut      
   down (SOUND RESET). When reading from the tape has finished interrupts       
  are re-enabled.                 Related entries             CAS CHECK         
CAS WRITE                                                             AMSTRAD CP
C464/664/6128 FIRMWARE                           page 15.165                    
 140 CAS CHECK                                                   #BCA4          
 Compare a record on tape with the contents of store.           Action          
 Check that a tape record  contains  a  correct  version  of  the  data         
supplied. This routine is intended to be used after writing records to         c
heck that they were written correctly.           Entry conditions           HL c
ontains the address of the data to check.         DE contains the length of the 
data to check.         A contains the sync character expected at the end of the 
leader.           Exit conditions             If the record checked OK          
          Carry true.                  A corrupt.           If an error occurred
 or the user hit escape                    Carry false.                  A conta
ins an error code.             Always                      BC, DE, HL, IX and ot
her flags corrupt.                  All other registers preserved.           Not
es             A data length of 0 passed to this  routine  is  taken  to  mean  
65536         bytes. (This is bound to produce a check failure).             It 
is not necessary to check the whole of a record  on  tape.  If  the         leng
th passed is less than the actual length of the record  then  only         the n
umber of bytes will be checked. Trying to check more bytes  in  a         record
 than were written will produce  an  error  of  some  sort  (see         below).
             The data to be checked may lie anywhere in RAM, even underneath a R
OM.             The sync character is used to distinguish header records (sync i
s #2C)         from data records (sync is #16). Other sync characters could be u
sed.                 AMSTRAD CPC464/664/6128 FIRMWARE                           
page 15.166                     The error codes returned by this routine are    
                  0    Break          The user hit the escape key.              
        1    Overrun        The Cassette Manager found a bit that was           
                           too long to read.                      2    CRC      
      A CRC failure was detected.                      3    Different      The d
ata read from  tape  did  not  agree                                      with t
hat in memory.             The cassette motor is started by this  routine  (in  
case  it  is  not         already on) and restored  to  its  previous  state  wh
en  checking  is         completed.             Because  reading  the  tape  req
uires  stringent  timing  constraints,         interrupts are disabled whilst th
e tape is being checked  (potentially         a period of over 5 minutes). It wo
uld be unpleasant to have the  sound         chip making a noise for all this ti
me so the  Sound  Manager  is  shut         down  (SOUND  RESET).  When  checkin
g  has  finished  interrupts   are         re-enabled.                 Related e
ntries             CAS READ         CAS WRITE  P                                
                     AMSTRAD CPC464/664/6128 FIRMWARE                           
page 15.167                     141 SOUND RESET                                 
                #BCA7             Reset the Sound Manager.             Action   
          Re-initialize the Sound Manager - shut the sound chip up and clear all
         queues.               Entry conditions             No conditions.      
       Exit conditions             AF, BC, DE and HL corrupt.         All other 
registers preserved.             Notes             The sound queues are cleared.
         Any current sound is stopped.         The sound generator chip is silen
ced.             This routine enables interrupts.                 Related entrie
s             SOUND HOLD                                       AMSTRAD CPC464/66
4/6128 FIRMWARE                           page 15.168                     142 SO
UND QUEUE                                                 #BCAA           Add a 
sound to a sound queue.           Action           Try to add a sound to the sou
nd queue of one or more channels. If  the         sound queue of any of the chan
nels is  full  then  no  sound  will  be         issued to any channel.         
  Entry conditions           HL contains the address of a sound  program  which 
 must  lie  in  the         central 32K of RAM.           Exit conditions       
    If the sound was added to the queue(s)                    Carry true.       
           HL corrupt.           If at least one queue was full                 
   Carry false.                  HL preserved.           Always                 
   A, BC, DE, IX and other flags corrupt.                  All other registers p
reserved.           Notes           The sound program is laid out as follows    
           Byte 0             Channels to use and rendezvous requirements.      
         Byte 1             Amplitude envelope to use.             Byte 2       
      Tone envelope to use.             Bytes 3..4         Tone period.         
    Byte 5             Noise period.             Byte 6             Initial ampl
itude.             Bytes 7..8         Duration or envelope repeat count.        
   All values in the sound program are masked into the appropriate  range       
  before being used.           The channels to issue the sound on are encoded in
to byte 0 as follows                    Bit 0    Issue on channel A.            
      Bit 1    Issue on channel B.                  Bit 2    Issue on channel C.
                     AMSTRAD CPC464/664/6128 FIRMWARE                           
page 15.169  ge 15.170              Bit 3    Rendezvous with channetion or envel
ope repeat count.           All values in the sound program are masked into the 
appropriate  range         before being used.           The channels to issue th
e sound on are encoded into byte 0 as follows                    Bit 0    Issue 
on channel A.                  Bit 1    Issue on channel B.                  Bit
 2    Issue on channel C.                     A                   The rendezvous
 requirements are encoded into byte 0 as follows                  Bit 3    Rende
zvous with channel A.                  Bit 4    Rendezvous with channel B.      
            Bit 5    Rendezvous with channel C.                  Bit 6    Hold u
ntil released.                  Bit 7    Flush queue.         A channel will ign
ore an  order  to  rendezvous  with  itself.  Sounds         issued on multiple 
channels implicitly  rendezvous  with  each  other.         Sounds that are orde
red to rendezvous will  be  issued  to  the  sound         generator starting at
 the same time.           Setting the hold bit prevents the  sound  from  runnin
g  until  it  is         released by calling SOUND RELEASE  (or  a  routine  hav
ing  a  similar         effect). Setting the flush bit will empty the queue  and
  abandon  any         currently  active  sound  thus  allowing  the  new  sound
   to   start         immediately.           The amplitude envelope is in the ra
nge 0..15. Envelopes 1..1  P5 are  the         amplitude envelopes  that  can  b
e  set  using  SOUND  AMPL  ENVELOPE.         Envelope 0 means use no amplitude 
envelope, simply  hold  the  initial         amplitude for 2 seconds or the dura
tion specified.           The tone envelope is in the range 0..15. Envelopes 1..
15 are the  tone         envelopes that can be set using SOUND TONE ENVELOPE. En
velope 0  means         use no tone envelope, simply hold the initial tone.     
      A tone period of 0 means do not generate any tone. Tone periods in the    
     range 1..4095 specify the period of the tone in 8 microsecond units.       
    The noise period is in the range 0..31. Noise  periods  1..31  specify      
   the period of the noise component of a sound.  A  noise  period  of  0       
  means use no noise.           The initial amplitude is in the range  0..15.  A
mplitude  0  being  no         initial sound, amplitude 15 being the maximum vol
ume.           Bytes 7 and 8 store the sound time. If this is zero then the ampl
itude         envelope is obeyed once. If  the  sound  time  is  negative  then 
 the         amplitude envelope is obeyed minus the  sound  time  number  of  ti
mes         (i.e. 1..32768 times). If the sound time is positive but not zero th
en         it is taken to be the duration of the sound in 1/100s of a second.   
      If a duration is specified when an amplitude envelope is in  use  then    
     the duration given sets the length of the sound. If  the  duration  is     
    longer than the envelope then the final amplitude of the  envelope  is      
   sustained until the duration expires. Tone envelopes  are  treated  in       
  much the same way  as  amplitude  envelopes  except  that  they  never        
 specify the length of the sound.         The sound event that is run when a sou
nd queue  has  a  free  slot  is         disarmed on the channels specified in t
his command.         All sounds currently held by SOUND  HOLD  are  automaticall
y  released         when this routine is called. Also, the sound queue event  is
  disarmed         (see SOUND ARM EVENT).         SOUND QUEUE may enable interru
pts.           Related entries         SOUND ARM EVENT         SOUND CHECK      
   SOUND RELEASE           AMSTRAD CPC464/664/6128 FIRMWARE                     
      page 15.170                     143 SOUND CHECK                           
                      #BCAD           Ask if there is space in a sound queue.   
        Action           Ask the state of a sound channel. The status includes  
the  number  of         free spaces in the sound queue and whether the channel i
s held.           Entry conditions           A contains the bit for the channel 
to test.           Exit conditions           A contains the channel status.     
      BC, DE, HL and flags corrupt.         All other registers preserved.      
     Notes           The channel to ask the status of is encoded as follows     
               Bit 0    Ask about channel A.                  Bit 1    Ask about
 channel B.                  Bit 2    Ask about channel C.           If more tha
n one bit is set then the status of  only  one  channel  is         returned. Th
e channels are tested in the order given above.           The status returned is
 encoded as follows              Bits 0..2     Contain the number of free slots 
in  the  channel's                           sound queue.            Bit 3      
   The channel is awaiting a rendezvous with channel A.            Bit 4        
 The channel is awaiting a rendezvous with channel B.            Bit 5         T
he channel is awaiting a rendezvous with channel C.            Bit 6         The
 channel is held.            Bit 7         The channel is active (producing a so
und).             Calling this routine disarms the sound queue event  that  occu
rs  when         the queue has a free slot for the  channel  returned  (see  SOU
ND  ARM         EVENT).             This routine may enable interrupts.         
      Related entries             SOUND ARM EVENT         SOUND QUEUE           
    AMSTRAD CPC464/664/6128 FIRMWARE                           page 15.171      
               144 SOUND ARM EVENT                                             #
BCB0           Set up an event to be run when a sound queue becomes empty.      
     Action             Arm the sound event to be run when a free slot occurs in
  a  channel's         sound queue.           Entry conditions           A conta
ins the bit for the channel to arm.         HL contains the address of an event 
block.           Exit conditions           AF, BC, DE   Pand HL corrupt.        
 All other registers preserved.           Notes           The channel for which 
to arm the event is encoded as follows                    Bit 0    Arm channel A
.                  Bit 1    Arm channel B.                  Bit 2    Arm channel
 C.             If more than one bit is set  then  only  one  channel  is  armed
.  The         channels are armed in the order given above.           The event 
block passed must be initialized (by KL INIT EVENT).             The event will 
be 'kicked' when a free slot occurs in  the  queue.  If         there is a free 
slot in the queue when this routine is called then the         event will be 'ki
cked' immediately.             The sound event is disarmed automatically when SO
UND  QUEUE  or  SOUND         CHECK is called. It is also disarmed when the even
t is run. Thus,  the         event routine will need to rearm the sound vent  to
  keep  it  running         continuously.             This routine may enable in
terrupts.               Related entries           KL INIT EVENT         SOUND CH
ECK         SOUND QUEUE                 AMSTRAD CPC464/664/6128 FIRMWARE        
                   page 15.172                     145 SOUND RELEASE            
                                   #BCB3             Allow sounds which are indi
vidually held to start.             Action             Release held sounds on a 
number of channels. This allows  sounds  that         were marked with a hold bi
t when they were set up by  SOUND  QUEUE  to         start (other factors willin
g).             Entry conditions             A contains bits for the channels to
 release.             Exit conditions             AF, BC, DE, HL and IX corrupt.
         All other registers preserved.             Notes             The channe
ls to release are encoded as follows                      Bit 0    Release chann
el A.                  Bit 1    Release channel B.                  Bit 2    Rel
ease channel C.             All channels that are specified are released.       
      All sounds currently held by SOUND HOLD are automatically released.       
      This routine may enable interrupts.               Related entries         
    SOUND QUEUE                       AMSTRAD CPC464/664/6128 FIRMWARE          
                 page 15.173                     146 SOUND HOLD                 
                                 #BCB6           Stop all sounds in midflight.  
         Action           This stops all sounds immediately. The sounds can be s
tarted again  by         calling SOUND CONTINUE.           Entry conditions     
      No conditions.           Exit conditions           If a sound was active  
                    Carry true.             If no sound was active              
        Carry false.             Always                      A, BC, HL and other
 flags corrupt.                  All other registers preserved.             Note
s             Sounds that are held by this routine are automatically restarted  
when         SOUND QUEUE or SOUND RELEASE are called as well as when SOUND CONTI
NUE         itself is called.           The sound is stopped by  halting  the  e
xecution  of  sound  and  tone         envelopes and setting the sound chip volu
me to zero for all  channels.         When the sound is restarted it will contin
ue from as near where it was           stopped as is possible.           This ro
utine enables interrupts.             Related entries           SOUND CONTINUE  
       SOUND RESET                   AMSTRAD CPC464/664/6128 FIRMWARE           
                page 15.174                     147 SOUND CONTINUE              
                                #BCB9             Restart sounds after they have
 all been held.             Action             Allows sounds that have been held
 by calling SOUND HOLD to continue.             Entry conditions             No 
conditions.             Exit conditions             AF, BC, DE and IX corrupt.  
       All other registers preserved.             Notes             If no sounds
 are held then no action is taken.             This routine may enable interrupt
s.               Related entries             SOUND HOLD         SOUND RELEASE   
                                            AMSTRAD CPC464/664/6128 FIRMWARE    
                       page 15.175                     148 SOUND AMPL ENVELOPE  
                                       #BCBC           Set up an amplitude envel
ope.           Action           Set up one of the 15 user programmable amplitude
 (volume) envelopes.           Entry conditions           A contains an  P envel
ope number.         HL contains the address of an amplitude data block.         
  Exit conditions           If envelope has been set OK                    Carry
 true.                  HL contains the address of the data block + 16.         
         A and BC corrupt.           If the envelope number is invalid          
          Carry false.                  A, B and HL preserved.           Always 
                   DE and other flags corrupt.                  All other regist
ers preserved.           Notes           The envelope to set up is specified by 
a number in the range 1..15.  N         envelope is set up if a number outside t
his range is passed.           The amplitude data block is copied into the  ampl
itude  envelope.  The         data block may lie in ROM or in RAM. It may  not  
lie  in  RAM  hidden         underneath a ROM.           The amplitude data bloc
k has the following layout                      Byte 0             Count of sect
ions in the envelope.                  Bytes 1..3         First section of the e
nvelope.                  Bytes 4..6         Second section of the envelope.    
              Bytes 7..9         Third section of the envelope.                 
 Bytes 10..12       Fourth section of the envelope.                  Bytes 13..1
5       Fifth section of the envelope.             The first byte of the amplitu
de data block  specifies  the  number  of         sections used in the envelope.
 Sections not used need not be  set  up.         An envelope using no sections h
as a special meaning - hold a  constant         volume lasting for 2 seconds.   
              AMSTRAD CPC464/664/6128 FIRMWARE                           page 15
.176                     The number of sections to use is not checked, if a numb
er outside  the         range 0..5 is supplied then this will have unpredictable
 effects. This         should be avoided.           Each section of the amplitud
e data block can specify either a hardware         or a software envelope. This 
is indicated by the  first  byte  of  the         section.           A software 
envelope section is laid out as follows                    Byte 0   Step count. 
                 Byte 1   Step size.                  Byte 2   Pause time.      
     The fact that this is  a  software  envelope  section  rather  than  a     
    hardware envelope section is indicated by byte 0 not having bit 7 set.      
     If the step count is in the range 1..27 then the step size is added to     
    the volume that number of times with a wait equal to the pause time in      
   1/100s of a second after each addition.           If the step count is zero t
he step size is taken  to  be  an  absolute         volume setting. A single wai
t of the pause time in 1/100s of a  second         is made.             After ca
lculating the new volume this is marked with #0F to make  sure         it is leg
al. Thus, all arithmetic on the volume is carried out  modulo         16.       
    A pause time of 0 is taken to mean 256 1/100s of a second.           A hardw
are envelope section is laid out as follows                    Byte 0       Enve
lope shape.                  Byte 1..2    Envelope period.           The fact th
at this is  a  hardware  envelope  section  rather  than  a         software env
elope section is indicated by byte 0 having bit 7 set.           The envelope sh
ape (masked with #7F) is sent to  register  13  of  the         sound generator.
 This set the  shape  of  the  hardware  envelope  and         whether it repeat
s (see Appendix IX for details).           The envelope period is sent to  regis
ters  11  and  12  of  the  sound         generator. These set the length of the
 hardware envelope (see Appendix         IX for details).           The section 
after a hardware section should be a pause long enough  to         allow the har
dware envelope to operate. A  pause  can  be  constructed         using a softwa
re envelope with a step size of 0 and  with  the  repeat         count and pause
 time juggling to give the right total time.           There is no protection ag
ainst changing an envelope whilst  it  is  in         use. This could have unpre
dictable effects and should be avoided.                 AMSTRAD CPC464/664/6128 
FIRMWARE                           page 15.177                     The length of
 the sound can  either  be  determined  by  the  duration         supplied when 
the sound is queued or by the envelope terminating  (see         SOUND QUEUE). I
f a duration is set that is shorter than  the  envelope         then the envelop
e is truncated. If the   Pduration  is  longer  than  the         envelope then 
 the  final  volume  is  sustained  until  the  duration         expires.       
          Related entries             SOUND A ADDRESS         SOUND TONE ENVELOP
E                                                                               
                  AMSTRAD CPC464/664/6128 FIRMWARE                           pag
e 15.178                     149 SOUND TONE ENVELOPE                            
             #BCBF           Set up a tone envelope.           Action           
Set up one of the 15 user programmable tone envelopes.           Entry condition
s           A contains an envelope number.         HL contains the address of a 
tone data block.               Exit conditions           If the envelope has bee
n set up OK                    Carry true.                  HL contains the addr
ess of the data block + 16.                  A and BC corrupt.           If the 
envelope number is invalid                    Carry false.                  A, B
C and HL preserved.           Always                      DE and other flags cor
rupt.                  All other registers preserved.             Notes         
    The envelope to set up is specified by a number in the range 1..15. No      
   envelope is set up if a number outside this range is passed.             The 
tone data block is copied into the tone envelope. The  data  block         may l
ie in ROM or in RAM. It may not lie in RAM underneath a ROM.             The ton
e data block has the following layout                      Byte 0             Co
unt of sections in the envelope.                  Bytes 1..3         First secti
on of the envelope.                  Bytes 4..6         Second section of the en
velope.                  Bytes 7..9         Third section of the envelope.      
            Bytes 10..12       Fourth section of the envelope.                  
Bytes 13..15       Fifth section of the envelope.                 AMSTRAD CPC464
/664/6128 FIRMWARE                           page 15.179                     The
 first byte of the tone data block (masked with #7F) specifies  the         numb
er of sections used in the envelope. Sections not used need not be         set u
p. An envelope using no sections will not alter the tone (i.e. no         envelo
ping). The number of sections to use is not checked, if a number         outside
 the range 0..5 is supplied then this will  have  unpredictable         effects.
 This should be avoided.           The top bit, bit 7, of the count  is  used  t
o  indicate  a  repeating         envelope. If this bit is  set  then  when  the
  last  section  of  the         envelope finishes the first will be used again.
           Each section of the tone data block is laid out as follows           
         Byte 0   Step count.                  Byte 1   Step size.              
    Byte 2   Pause time.           If the step count lies in the range #00..#EF 
then  the  section  is  a         relative section. The step size is sign extend
ed (bit 7 is  copied  to         bits 8..15) and is added to the current  tone  
period  the  number  of         times specified by the step count. After each ad
dition a wait  of  the         pause time in 1/100s of a second is made. The sou
nd chip only uses the           lower 12 bits of the tone period so  all  arithm
etic  is  carried  out         modulo #1000.             A step count of 0 is ta
ken to mean 1 step whilst a pause time of 0  is         taken to mean 256 1/100s
 of a second.             If the step count lies in the range #F0..#FF then the 
 section  is  an         absolute section. The least significant four bits of  t
he  step  count         are taken to be the most significant byte of the tone pe
riod  and  the         step size is taken to be the least significant byte. This
 tone  period         is set immediately and is followed by a pause whose length
 is  set  by         the pause time in 1/100s of a second.             There is 
no protection against changing an envelope whilst  it  is  in         use. This 
could have unpredictab  Ple effects and should be avoided.             If the to
ne envelope finishes before the end of the sound (as set when         the sound 
was queued) then the final  tone  is  held.  i.e.  The  tone         envelope do
es not affect the length of the sound.               Related entries            
 SOUND AMPL ENVELOPE         SOUND T ADDRESS                   AMSTRAD CPC464/66
4/6128 FIRMWARE                           page 15.180                     150 SO
UND A ADDRESS                                             #BCC2             Get 
the address of an amplitude envelope.             Action             Ask where t
he data area for an amplitude envelope is stored.             Entry conditions  
           A contains an envelope number.             Exit conditions           
  If the envelope was found OK                      Carry true.                 
 HL contains the address of the amplitude envelope.                  BC contains
 the length of an envelope (16 bytes).             If the envelope number was in
valid                      Carry false.                  HL corrupt.            
      BC preserved.             Always                      A and other flags co
rrupt.                  All other registers preserved.             Notes        
     The envelope is laid out as described in SOUND AMPL ENVELOPE.              
 Related entries           SOUND AMPL ENVELOPE         SOUND T ADDRESS          
       AMSTRAD CPC464/664/6128 FIRMWARE                           page 15.181   
                  151 SOUND T ADDRESS                                           
  #BCC5             Get the address of a tone envelope.             Action      
       Ask where the data area for the tone envelope is stored.             Entr
y conditions             A contains an envelope number.             Exit conditi
ons             If the envelope was found OK                      Carry true.   
               HL contains the address of the tone envelope.                    
  BC contains the length of an envelope (16 bytes).             If the envelope 
number was invalid                      Carry false.                  HL corrupt
.                  BC preserved.             Always                    A and oth
er flags corrupt.                  All other registers preserved.             No
tes           The envelope number must lie in the range 1..15.           The ton
e envelope is laid out as described in SOUND TONE ENVELOPE.           Related en
tries           SOUND A ADDRESS         SOUND TONE ENVELOPE                 AMST
RAD CPC464/664/6128 FIRMWARE                           page 15.182              
       152 KL CHOKE OFF                                                #BCC8    
       Reset the Kernel - clears all event queues etc.           Action         
  This entry completely clears all event queues, the various  timer  and        
 frame flyback lists and so on. The effect is to dispose of any pending         
synchronous events and to halt all timer related functions other  than         s
ound generation and keyboard scanning.           Entry conditions           No c
onditions.           Exit conditions           B contains the ROM select address
 of the current  foreground  ROM  (if         any).           DE contains the ad
dress  at  which  the  current  foreground  ROM  was         entered.           
C contains the ROM select address for a RAM foreground program.           AF and
 HL corrupt.         All other registers preserved.             Notes           
  If the current foreground program  is  in  RAM  then  the  ROM  select        
 address and entry point returned are both zero. i.e. The  default  ROM         
(ROM 0) at its entry address.             KL CHOKE OFF forms part of the close d
own required before  a  new  RAM         foreground program is loaded, as is req
uired by MC BOOT PROGRAM.           The close down must ensure that there are no
 interrupt or other events         active and using memory which  might  be  dam
aged  by  loading  a  new         program into memory. In the complete close dow
n MC BOOT PROGRAM does           SOUND RESET                  to kill off sound 
generation           an OUT to I/O port #F8FF     to reset any external interrup
t sources.           KL CHOKE OFF                 to kill off events etc.       
    KM RESET                     to reset any  keyboard  indirections  and      
                                the break event.           TXT RESET            
        to reset any Text VDU indirections.           SCR RESET                 
   to reset any screen indirections.              P   AMSTRAD CPC464/664/6128 FI
RMWARE                           page 15.183                     The values retu
rned by KL CHOKE OFF are used by MC BOOT PROGRAM if the         program load fai
ls.               This information is  included  for  the  reader's  interest.  
MC  BOOT         PROGRAM is the  recommended  means  of  loading  and  entering 
 a  RAM         foreground program. MC START PROGRAM  is   the  recommended  mea
ns  of         entering a ROM foreground program, or a RAM foreground  program  
which         has already been loaded.               KL CHOKE OFF disables inter
rupts.                   Related entries             MC BOOT PROGRAM         MC 
START PROGRAM                                                                   
            AMSTRAD CPC464/664/6128 FIRMWARE                           page 15.1
84                     153 KL ROM WALK                                          
       #BCCB           Find and initialize all background ROMs.           Action
           Background ROMs provide support for expansion hardware or augment  th
e         software facilities of the machine. If the facilities provided by  the
         background ROMs are to  be  available,  the  foreground  program  must 
        initialize them. This routine finds  and  initializes  all  background  
       ROMs.           Entry conditions         DE contains address  of  the  fi
rst  usable  byte  of  memory  (lowest         address).         HL contains add
ress of  the  last  usable  bytes  of  memory  (highest         address).       
    Exit conditions         DE contains the address of the new first usable byte
 of memory.         HL contains the address of the new last usable byte of memor
y.         AF and BC corrupt.         All other registers preserved.           N
otes           When a foreground ROM program is entered it is passed the address
es of         the first and last bytes in memory which it may use. The  are  out
side         this is used to store firmware variables, the  stack,  the  jumpblo
cks         and the screen memory. From the  area  available  for  the  foregrou
nd         program to use, the areas for  background  programs  to  use  must  b
e         allocated.           The foreground program should initialize backgrou
nd ROMs at  an  early         stage, before it uses the memory it is given. It m
ay choose whether to         enable background ROMs or not. KL INIT BACK may be 
used to  initialize         a particular background ROM or this routine may be u
sed to  initialize         all available background ROMs.           KL ROM WALK 
inspects the ROMs at ROM select addresses in the range 1..         7  in  V1.0  
firmware  and  0..15  in  V1.1  firmware.  The   power-up         initialization
 entry of each background ROM found is called (unless it         is the current 
foreground  ROM  in  V1.1  firmware).  This  entry  may         allocate some me
mory for the background ROM's to use by adjusting  the         values  in  DE  a
nd  HL  before  returning.  Once  the  ROM  has  been         initialized the Ke
rnel  adds  it  to  the  list  of  external  command         servers, and notes 
the base of the area which the ROM has allocated at         the top of memory (i
f any). Subsequent FAR CALLs to entries in the ROM         will automatically se
t the IY index register  to  point  at  the  ROMs         upper memory area.    
       See section 10.4 for a full description of background ROMs.           Rel
ated entries           KL FIND COMMAND         KL INIT BACK         KL LOG EXT  
         AMSTRAD CPC464/664/6128 FIRMWARE                           page 15.185 
                    154 KL INIT BACK                                            
    #BCCE           Initialize a particular background ROM.           Action    
       Background ROMs provide support for expansion hardware or augment  the   
      software facilities of the machine. If the facilities provided by  the    
     background ROMs are  to  be  available  the  foreground  program  must     
    initialize them. This routine selects  and  initializes  a  particular      
   background ROM.           Entry conditions           C contains the ROM selec
t address of the ROM to initialize.         DE contains address  of  the  first 
 usable  byte  of  memory  (lowest         address).         HL contains address
  of  the  last  usable  byte  of  memory  (highest         address).           
  Exit conditions           DE contains the address of the new first usable byte
 of memory.         HL contains the address of the new last usable byte of memor
y.         P              AF and B corrupt.         All other registers preserve
d.           Notes           The ROM select address must be in the range 1..7 in
 V1.0 and 0..15  in         V1.1 firmware and the ROM at this address must be a 
background ROM  or         the request will be ignored. In V1.1  firmware  the  
request  will  be         ignored if the ROM is the current foreground ROM.     
      When the foreground program is entered it is passed the  addresses  of    
     the first and last bytes in memory which  it  may  use.  The  area  of     
    memory outside this is used to store firmware  variables,  the  stack,      
   the jumpblocks and the screen memory. From the area available for  the       
  foreground program to use, the areas for background  programs  to  use        
 must be allocated.           The foreground program should initialize backgroun
d ROMs at  an  early         stage, before it uses the memory it is given. It ma
y choose whether to         enable background ROMs or not. KL ROM WALK may be us
ed  to  initialize         all  available  ROMs  or  this  routine  may  be  use
d  to  initialize         particular ROMs.           This routine causes the bac
kground ROM's power-up initialization entry         to be called. This entry may
 allocate some memory for  the  background         ROM's use by adjusting the va
lues in DE and HL before returning.  Once         the ROM has been initialized  
the  Kernel  adds  it  to  the  list  of         external command servers, and n
otes the base of the area which the ROM         has allocated to itself at the t
op of memory (if any). Subsequent  FAR         CALLs to entries in the  ROM  wil
l  automatically  set  the  IY  index         register to point at the ROM's upp
er memory area.             AMSTRAD CPC464/664/6128 FIRMWARE                    
       page 15.186                     See section 10.4 for a full description o
f background ROMs.               Related entries             KL FIND COMMAND    
     KL LOG EXT         KL ROM WALK                                             
                                                              AMSTRAD CPC464/664
/6128 FIRMWARE                           page 15.187                     155 KL 
LOG EXT                                                  #BCD1             Intro
duce an RSX to the firmware.             Action             RSXs (Resident Syste
m Extensions) are similar to background ROMs,  but         are loaded into RAM. 
This routine must be called to include the RSX on         the Kernel's list of e
xternal command servers.             Entry conditions             BC contains th
e address of the RSX's command table.         HL contained the address of a 4 by
te area of RAM for the Kernel's use.             Exit conditions             DE 
corrupt.         All other registers preserved.             Notes             Bo
th the RSX's command table and the Kernel's storage area must lie in         the
 central 32K of memory, i.e. not under a ROM.             The format of  command
 table is described in section 10.2 and RSXs are         discussed in section 10
.5.               Related entries             KL FIND COMMAND         KL INIT BA
CK                                     AMSTRAD CPC464/664/6128 FIRMWARE         
                  page 15.188                     156 KL FIND COMMAND           
                                  #BCD4             Search for an RSX, backgroun
d ROM  or  foreground  ROM  to  process  a         command.             Action  
         All expansion ROMs and RSXs have command tables of the same form. This 
        routine searches all RSXs and background ROMs on the Kernel's list  of  
       external command servers looking for a match  for  the  given  command   
      name. If the name is found, then the 'far address' of  the  associated    
     routine is returned. If the command is not a background or RSX command     
    then all the foreground ROMs that can be  found  are  searched  for  a      
   foreground program with the given name. If  a  foreground  program  is       
  found then the system immediately enters it.           Entry conditions       
    HL contains the address of the command name to search for.           Exit co
nditions           If an RSX or background ROM command was found                
      Carry true.                  C contains the ROM select address.           
       HL contains the address of the routine.             If the command was no
t found                      Carry false.                  C and HL corrupt.    
       Always                      A, B and DE corrupt.  P                  All 
other registers preserved.             Notes             The command name passed
 must be in RAM but may lie underneath  a  ROM.         The name may be any numb
er of characters long but only  the  first  16         characters are significan
t. All  alphabetic  characters  in  the  name         should be in upper case an
d the last character of the name should have         bit 7 set.             The 
ROM select and routine addresses returned are suitable for calling         KL FA
R PCHL.             AMSTRAD CPC464/664/6128 FIRMWARE                           p
age 15.189  9              Bit 3    Rendezvous with ch                   The lis
t of external command servers is generated as  background  ROMs         and RSXs
 are initializedized (see KL ROM WALK, KL INIT  BACK  and  KL         LOG EXT). 
The command tables are scanned in the opposite order to that         in which th
e command servers were introduced. Thus, RSXs will tend  to         take precede
nce over background ROMs, since  RSX's  are,  in  general,         initialized  
after  background  ROMs.  Background  ROMs  are  normally         initialized in
  reverse  order  of  ROM  select  addresses,  so  lower         numbered ROMS w
ill take precedence over higher.             See section 10.2 for a description 
of  the  format  of  expansion  ROM         command tables.             The firs
t entry in a background ROM's  command  name  table  (the  one         associate
d with the power-up entry) may be used as the ROM's name.  KL         FIND COMMA
ND may be used, therefore, to find out whether a  particular         background 
ROM has been initialized.             When searching for a foreground program, R
OMs are  inspected  starting         with ROM 0 and working upwards.  The  searc
h  ceases  when  the  first         unused ROM address greater than 0 on V1.0 fi
rmware and greater than 15         on V1.1 firmware is found.             The on
-board BASIC may be entered by searching for  and  invoking  the         command
 'BASIC'.             If  a  foreground  ROM  command  is   found   the   ROM   
is   entered         unconditionally this routine never returns.               R
elated entries             KL INIT BACK         KL LOG EXT         KL ROM WALK  
       MC START PROGRAM                                           AMSTRAD CPC464
/664/6128 FIRMWARE                           page 15.190                     157
 KL NEW FRAME FLY                                            #BCD7             I
nitialize and put a block onto the frame flyback list.             Action       
      The Kernel maintains a list of events to be  kicked  each  time  frame    
     flyback occurs. The routine initializes a block and  adds  it  to  the     
    list.             Entry conditions             HL contains the address of th
e frame flyback block.         B contains the event class.         C contains th
e ROM select address of the event routine.         DE contains the address of th
e event routine.             Exit conditions             AF, DE and HL corrupt. 
        All other registers preserved.             Notes             The frame f
lyback block is 9 bytes long and must lie  in  the  central         32K of RAM. 
The last 7 bytes of the frame flyback block are  an  event         block which i
s initialized to reflect the parameters passed  in  B,  C         and DE (see KL
 INIT EVENT). The exact layout of a frame flyback  block         is described in
 Appendix X.             The frame flyback block is appended to the frame flybac
k list if it is         not already on it.             This routine enables inte
rrupts.               Related entries             KL ADD FRAME FLY         KL   
PDEL FRAME FLY         KL INIT EVENT                   AMSTRAD CPC464/664/6128 F
IRMWARE                           page 15.191                     158 KL ADD FRA
ME FLY                                            #BCDA             Put a block 
onto the frame flyback list.             Action             The Kernel maintains
 a list of events to be  kicked  each  time  frame         flyback occurs. This 
routine adds a block to the list.             Entry conditions             HL co
ntains the address of the frame flyback block.             Exit conditions      
       AF, DE and HL corrupt.         All other registers preserved.            
 Notes             The frame flyback block is 9 bytes long and it must lie in th
e central         32K of RAM. The last 7 bytes of the frame flyback block are  a
n  event         block  which  must  be  initialized  separately  before  callin
g  this         routine. The exact layout of a frame flyback  block  is  describ
ed  in         Appendix X.             The block is appended to the frame flybac
k list if it is  not  already         on it.             The routine enables int
errupts.               Related entries             KL DEL FRAME FLY         KL I
NIT EVENT         KL NEW FRAME FLY                           AMSTRAD CPC464/664/
6128 FIRMWARE                           page 15.192                     159 KL D
EL FRAME FLY                                            #BCDD             Remove
 a block from the frame flyback list.             Action             The Kernel 
maintains a list of events to be  kicked  each  time  frame         flyback occu
rs. This routine removes a block from the list.             Entry conditions    
         HL contains the address of the frame flyback block.             Exit co
nditions             AF, DE and HL corrupt.         All other registers preserve
d.             Notes             This routine does nothing if the block is not o
n the list.             Removing a block from the list only prevents the  event 
 being  kicked         again. It does not affect any outstanding frame flyback e
vents.             This routine enables interrupts.               Related entrie
s             KL ADD FRAME FLY         KL NEW FRAME FLY                         
            AMSTRAD CPC464/664/6128 FIRMWARE                           page 15.1
93                     160 KL NEW FAST TICKER                                   
       #BCE0             Initialize and put a block onto the fast ticker list.  
           Action             The Kernel maintains a list of events  to  be  kic
ked  each  time  the         1/300th of a second timer interrupt occurs. This is
 known as the  fast         ticker list. This routine initializes a block and ad
ds it to the list.           Entry conditions           HL contains the address 
of the fast ticker block.         B contains the event class.         C contains
 the ROM select address of the event routine.         DE contains the address of
 the event routine.           Exit conditions           AF, DE and HL corrupt.  
       All other registers preserved.           Notes             The fast ticke
r block is 9 bytes long and must lie in the central  32K         of RAM. The las
t 7 bytes of the fast ticker block are an  event  block         which must be in
itialized to reflect the parameters passed in B, C and         DE (see KL INIT E
VENT). The exact layout of a  fast  ticker  block  is         described in Appen
dix X.             The fast ticker block is appended to the fast ticker list if 
it is not         already on it.             The fast ticker facility is not int
ended for general use. However,  it         does allow relatively  short  times 
 to  be  measured  giving  greater         resolution than the general ticker fa
cilities.             This routine enables interrupts.               Related ent
ries             KL ADD FAST TICKER         KL ADD TICKER         KL DEL FAST TI
CKER         KL INIT EVENT         KL TIME PLEASE               AMSTRAD CPC464/6
64/6128 FIRMWARE                           page 15.194                     161 K
L ADD FAST TICKER                                          #BCE3           Put a
 block onto the fast ticker list.           Action             The Kernel mainta
ins a list of events  to  be  kicked  each  time  the         1/300th of a secon
d timer interrupt occurs. This is known as the  fast         ticker list. This r
outine adds a block to the list.             Entry conditions             HL con
tains the address of the fast ticker block.             Exit conditions         
    AF, DE and HL corrupt.    P                 All other registers preserved.  
           Notes             The fast ticker block is 9 bytes long and must lie 
in the central  32K         of RAM. The last 7 bytes of the fast ticker block ar
e an  event  block         which must be initialized  before  calling  this  rou
tine.  The  exact         layout of a fast ticker block is described in Appendix
 X.             The fast ticker block is appended to the fast ticker list if it 
is not         already on it.             The fast ticker facility is not intend
ed for general use. However,  it         does allow relatively  short  times  to
  be  measured  giving  greater         resolution than the general ticker facil
ities.             This routine enables interrupts.               Related entrie
s             KL ADD TICKER         KL DEL FAST TICKER         KL INIT EVENT    
     KL NEW FAST TICKER         KL TIME PLEASE                 AMSTRAD CPC464/66
4/6128 FIRMWARE                           page 15.195                     162 KL
 DEL FAST TICKER                                          #BCE6             Remo
ve a block from the fast ticker list.             Action             The Kernel 
maintains a list of events  to  be  kicked  each  time  the         1/300th of a
 second timer interrupt occurs. This is known as the  fast         ticker list. 
This routine removes a block from the list.             Entry conditions        
     HL contains the address of the fast ticker block.             Exit conditio
ns             AF, DE and HL corrupt.         All other registers preserved.    
         Notes             This routine does nothing if the block is not on the 
list.             Removing a block from the list only  prevents  the  event  fro
m  being         kicked again. It does not affect any outstanding fast ticker ev
ents.             This routine enables interrupts.               Related entries
             KL ADD FAST TICKER         KL DEL TICKER         KL NEW FAST TICKER
                                 AMSTRAD CPC464/664/6128 FIRMWARE               
            page 15.196                     163 KL ADD TICKER                   
                            #BCE9           Put a block onto the ticker list.   
        Action           The general purpose timing facility  measures  time  in
  1/50th  of  a         second units. The Kernel maintains a list of tick blocks
 each of which         contains a count and a recharge value. Every 1/50th of  a
  second  the         Kernel processes all the tick blocks, decrementing the cou
nt entry  of         each. If the count entry of a block becomes zero the  event
  contained         in the block is 'kicked', and the count is set to the rechar
ge value.           Entry conditions           HL contains the address of the ti
ck block.         DE contains the initial value for the count entry.         BC 
contains the value of the recharge entry.           Exit conditions           AF
, BC, DE and HL corrupt.         All other registers preserved.           Notes 
          The tick block is 13 bytes long and must lie in  the  central  32K  of
         memory. The last 7 bytes of the tick block are an  event  block  which 
        must be initialized before this routine is called. The exact layout of  
       a tick block is described in Appendix X.           The count and recharge
 entries in the block are set. The block is then         appended to the tick li
st if it is  not  already  on  the  list.  This         routine may be used, the
refore,  to  change  the  count  and  recharge         entries of an existing bl
ock.           Blocks with a count entry  of  zero  are  ignored  when  the  lis
t  is         processed. Setting a recharge value of zero, therefore,  sets  up 
 the         block as a 'one shot timer'. Since it takes the Kernel time to  ign
ore         a tick block, any redundant blocks should be removed from the list  
as         soon as possible.           It is not possible to predict, particular
ly with  synchronous  events,         how long it will be after the  'kick'  bef
ore  the  event  routine  is         actually called. Notwithstanding these dela
ys, the ticker may be  used         to obtain an exact number of 'kicks'  in  a 
 given  period  since  the         recharge mechanism immediately resets the cou
nt.  The  event  counting         mechanism will ensure that 'kicks' are not mis
sed, provided that there         are never more than 127 outstanding at once.   
        This routine enables interrupts.           Related entries           KL 
ADD FAST TICKER         KL DEL TICKER         KL INIT EVENT             AM  PSTR
AD CPC464/664/6128 FIRMWARE                           page 15.197               
      164 KL DEL TICKER                                               #BCEC     
        Remove block from the tick list.             Action             If a giv
en block is on the tick list it is removed.  The  contents  of         the block
 are not affected.             Entry conditions             HL contains the addr
ess of the tick block.             Exit conditions             If the tick block
 was found on the tick list                      Carry true.                  DE
 contains the count remaining before the next event.             If the tick blo
ck was not found on the tick list                      Carry false.             
     DE corrupt.             Always                      A, HL and other flags c
orrupt.                  All other registers preserved.             Notes       
    The contents of the block are not affected by  removing  it  from  the      
   list. In particular the continued processing of outstanding events  is       
  not affected. The block could be put back on the list at a later  date        
 and it could continue counting where it left off.           This routine enable
s interrupts.           Related entries           KL ADD TICKER         KL DEL F
AST TICKER               AMSTRAD CPC464/664/6128 FIRMWARE                       
    page 15.198                     165 KL INIT EVENT                           
                    #BCEF           Initialize an event block.           Action 
          Initialize all entries in an event block.           Entry conditions  
         HL contains the address of the event block.         B contains the even
t class.         C contains the ROM select address of the event routine.        
 DE contains the address of the event routine.           Exit conditions        
   HL contains the address of the event block + 7.           All other registers
 preserved.           Notes           The event block is 7 bytes long and must l
ie in  the  central  32K  of         RAM. The layout of an event block is  descr
ibed  in  Appendix  X.  See         section 12 for a general discussion of event
s.           The ROM select and address of the routine are the 'far address' of 
the         event routine (see section 2).             The event class is bit si
gnificant as follows                    Bit 0              Near address.        
          Bits 1..4          Synchronous event priority.                  Bit 5 
             Must be zero.                  Bit 6              Express event.   
               Bit 7              Asynchronous event.             If the asynchr
onous event bit is set then the event is an asynchronous         event, otherwis
e it is a synchronous event. Asynchronous events do not         have priorities 
and so the priority field is ignored.             If the express event bit is se
t then the event is  an  express  event.         The meaning of this depends on 
whether the  event  is  synchronous  or         asynchronous.             All ex
press synchronous events have higher priorities than any  normal         synchro
nous event. The priority of a synchronous event is  encoded  in         bits 1..
4 of  the  class,  the  higher  the  number  the  greater  the         priority.
 No event may have  priority  0.  The  processing  of  normal         synchronou
s events may be disabled  (by  calling  KL  EVENT  DISABLE),         while that 
if express synchronous events may not.               AMSTRAD CPC464/664/6128 FIR
MWARE                           page 15.199  P-15 $$$   The first byte of the to
ne data block (masked with #7F) specifies  the         number of sections used i
n theed  in         bits 1..4 of  the  class,  the  higher  the  number  the  gr
eater  the         priority. No event may have  priority  0.  The  processing  o
f  normal         synchronous events may be disabled  (by  calling  KL  EVENT  D
ISABLE),         while that if express synchronous events may not.              
 AMSTRAD CPC464/664/6128 FIRMWARE                           page 15.1           
        An express asynchronous event  will  have  its  event  routine  called  
       directly from the interrupt  path.  A  normal  asynchronous  event  is   
      processed just before returning from the  interrupt  (with  interrupts    
     enabled).             If the near address bit is set  then  the  event  rou
tine  is  located         either in the lower ROM or in the central 32K of RAM. 
The  ROM  select         address is ignored and the routine is  called  directly
,  rather  than        P   through the FAR CALL mechanism, thus  reducing  the  
event  processing         overhead. Where possible,  asynchronous  events  shoul
d  be  at  'near         addresses'. Express  asynchronous  events  must  always
  be  at  'near         addresses'.           Event blocks appear in various oth
er blocks  handled  by  the  Kernel,         including frame flyback, fast ticke
r and tick blocks. This routine  is         used to initialize the event block p
arts of these.           The bytes after the last byte of the event block, even 
where the block         forms part of another block, are not used  by  the  Kern
el.  When  the         event routine is called the address of the block is passe
d to  it,  so         the user may append further information about the event to
 the  block.         This allows several similar events to share the  same  even
t  routine,         each event having its 'own' variables appended to its event 
block.           The event routine has the following entry and exit conditions  
         Entry           The event routine is at a 'far address'                
    HL contains the address of byte 5 of the event block                  (so an
y appended data can start at address HL + 2).           If the event routine is 
at a 'near address'                    DE contains the address of byte 6 of the 
event block                  (so any appended data can start at address DE + 1).
           Exit                    AF, BC, DE and HL corrupt.                  A
ll other registers preserved.           The event routine may use the IX and IY 
registers  but  must  preserve         them. It may not use the second  register
  set.  Express  asynchronous         events may not enable interrupts.         
  KL INIT EVENT enables interrupts.           Related entries         KL DEL SYN
CHRONOUS         KL DISARM EVENT         KL EVENT         KL NEW FAST TICKER    
     KL NEW FRAME FLY         KL NEW TICKER         KL SYNC RESET           AMST
RAD CPC464/664/6128 FIRMWARE                           page 15.200              
       166 KL EVENT                                                    #BCF2    
       'Kick' an event block.             Action           The event mechanism a
rranges  that  an  event  routine  be  called  in         response to each 'kick
' of an  event  block.  KL  EVENT  performs  the         'kick'.           Entry
 conditions           HL contains the address of the event block.           Exit
 conditions           AF, BC, DE and HL corrupt.         All other registers pre
served.           Notes           Unlike the vast majority of Kernel routines th
is routine may be called         from the interrupt path. Because the LOW JUMP i
nstruction in the  main         firmware jumpblock enables interrupts the user m
ay  pick  the  address         part of the 'low address' out of the jumpblock an
d mask  off  the  top         two bits to extract the address in the lower  ROM 
 of  KL  EVENT.  The         following code does this           LD DE,(KLEVENT+1
)         extract address of LOW JUMP         RES 7,D                    remove 
upper ROM state from 'low address'         RES 6,D                    remove low
er ROM state from 'low address'         CALL PCDEINSTRUCTION      CALL KL EVENT 
          (If the user is going to  perform  this  operation  repeatedly  it  is
         recommended that the address should be extracted once  and  should  be 
        stored somewhere).           The effect of the 'kick' depends on  the  e
vent  count  in  the  event         block               Count  0   The event is 
disarmed, and kicking it has no effect.               Count  0   There are other
 kicks outstanding and  the  event  is                          being processed.
  This  kick  simply  increments  the                          count (unless it 
has already reached the  maximum  of                          127). Once event p
rocessing has  begun  it  continues                          until  the  count  
becomes  zero  or  the  event   is                          disarmed.           
    Count  0   The event  is  armed  but  event  processing  is  not            
              active.                          The  count  is  incremented  and 
  event   processing                          initiated.                   AMSTR
AD CPC464/664/6128 FIRMWARE                           page 15.201               
      How event processing is initiated depends on the event class.           Sy
nchronous Events.               Synchronous events are added to the  synchronous
  event  queue  in             priority order.   PIt is the responsibility of th
e foreground program             to process the synchronous event queue regularl
y.                 Synchronous event routine are called when the  foreground  pr
ogram             calls KL DO SYNC, the event count is then dealt with when KL  
DONE             SYNC is called.           Asynchronous Events.             a. N
ot in the Interrupt Path                 The event routine is called immediately
. When the routine returns,             if the event count is greater than zero 
it is decremented. If  the             count is still greater than zero then the
 procedure is repeated.             b. In the Interrupt Path - Normal Asynchrono
us Event                 The event is placed on the interrupt event pending queu
e. On  exit             from the interrupt path the Kernel processes  all  event
s  on  the             interrupt pending queue as described in (a) above. This m
eans  the             normal asynchronous event routines are called in an  exten
sion  of             normal (non-interrupt) processing between interrupt return 
and the             main program. The  routine  is,  therefore,  not  subject  t
o  the             restrictions imposed on interrupt path routines.             
c. In the Interrupt Path - Express Asynchronous Event                 The event 
routine is called immediately, in  the  interrupt  path.             The routine
 must be at a 'near address' (see KL INIT EVENT). Under             no circumsta
nces may the routine enable interrupts.             KL EVENT enables interrupts 
unless it is  called  from  the  interrupt         path.             Related ent
ries             KL INIT EVENT         KL NEXT SYNC         KL POLL SYNCHRONOUS 
        KL SYNC RESET                 AMSTRAD CPC464/664/6128 FIRMWARE          
                 page 15.202                     167 KL SYNC RESET              
                                 #BCF5             Clear synchronous event queue
.             Action             The synchronous event queue is set empty - any 
outstanding events  are         simply  discarded.  The  current  event  priorit
y,  used  by  KL  POLL         SYNCHRONOUS and KL NEXT SYNC to mask out  lower  
priority  events,  is         reset.             Entry conditions             No
 conditions.             Exit conditions             AF and HL corrupt.         
All other registers preserved.               Notes             It is the user's 
responsibility to ensure that  discarded  events  and         any currently acti
ve events are reset. The event  count  of  discarded         events will be grea
ter than zero, so any further 'kicks'  will  simply         increment the count,
 but not add the event to  the  synchronous  event         queue - the events ar
e, therefore, effectively disarmed.                 Related entries             
KL DEL SYNCHRONOUS         KL NEXT SYNC         KL POLL SYNCHRONOUS             
                    AMSTRAD CPC464/664/6128 FIRMWARE                           p
age 15.203                     168 KL DEL SYNCHRONOUS                           
               #BCF8             Remove a synchronous event from the event queue
.             Action             The event is disarmed. If it is on the synchron
ous event queue then it         is removed.             Entry conditions        
     HL contains the address of the event block.             Exit conditions    
         AF, BC, DE and HL corrupt.         All other registers preserved.      
         Notes             Deleting an event from the queue prevents the outstan
ding 'kicks' from         being processed.             Before a synchronous  eve
nt  block  is  reset  or  reinitialized  this         routine should be used to 
ensure that it is not currently pending.             This routine enables interr
upts.               Related entries             KL DISARM EVENT         KL INIT 
EVENT         KL SYNC RESET                               AMSTRAD CPC464/664/612
8 FIRMWARE                           page 15.204                     169 KL NEXT
 SYNC                                                #BCFB           Get next ev
ent from the queue.           Action           If there is an event on the synch
ronous event queue whose priority  is         greater than the current event pri
ority  (if  any),  then  remove  the         event from the queue, set the curre
nt event priority to  that  of  the           event removed and return the previ
ous event priority.           Entry conditions           No conditions.         
  Exit conditions           If there is an event to be processed                
  P    Carry true.                  HL contains the address of the event block. 
                 A contains the previous event priority (if any).           If t
here is no event to be processed                    Carry false.                
  A and HL corrupt.           Always                    DE corrupt.             
     All other registers preserved.           Notes             KL NEXT SYNC ret
urns the address of the next event to be processed, if         any, which it has
 taken off the  synchronous  event  queue  and  whose         priority has now b
een set as the event priority mask.             The foreground program should ca
ll KL POLL  SYNCHRONOUS  regularly  to         check for outstanding events. KL 
POLL SYNCHRONOUS is a  short  routine         in RAM, so calling it imposes litt
le overhead. If there  is  an  event         outstanding then the above procedur
e should be invoked, and should  be         repeated until the event queue is em
pty.             The current event priority mechanism allows event routine to po
ll for,         and process, events of higher priority. The priority returned by
  this         routine must be preserved until it is passed to KL DO SYNC.      
       KL NEXT SYNC enables interrupts.                 AMSTRAD CPC464/664/6128 
FIRMWARE                           page 15.205                     The procedure
 for processing synchronous events is as follows             TRY AGAIN          
   CALL KLNEXTSYNC        return next event, if any             JR NC,          
   jump if no event to process                      PUSH HL                  sav
e address of event             PUSH AF                  save previous event prio
rity             CALL KLDOSYNC          call the event routine             POP A
F             POP HL                      CALL KLDONESYNC        reset the event
 priority mask, deal with                                          the event cou
nt and put the  event  back                                      on the queue if
 the count is still                                          greater than zero  
           JR TRYAGAIN             see if any  events  are  still  awaiting     
                                 processing               Related entries       
      KL DONE SYNC         KL DO SYNC         KL EVENT         KL INIT EVENT    
     KL POLL SYNCHRONOUS                                                        
   AMSTRAD CPC464/664/6128 FIRMWARE                           page 15.206       
              170 KL DO SYNC                                                  #B
CFE             Perform an event routine.             Action             Call th
e event routine for a given event.             Entry conditions             HL c
ontains the address of the event block.             Exit conditions             
AF, BC, DE and HL corrupt.         All other registers preserved.             No
tes             This routine is intended to be called to process  an  event  aft
er  KL         NEXT SYNC has found it to be pending. Use of this entry at  any  
other         time is not recommended.             See  KL  NEXT  SYNC  above  f
or  the  general  scheme  for  processing         synchronous events.           
  KL DO SYNC does not itself affect the event count.               Related entri
es             KL DONE SYNC         KL NEXT SYNC                                
   AMSTRAD CPC464/664/6128 FIRMWARE                           page 15.207       
              171 KL DONE SYNC                                                #B
D01           Finish processing an event.           Action           Once a sync
hronous event has been processed,  by  invoking  its  event         routine via 
KL DO SYNC, this entry  must  be  called  to  restore  the         current event
 priority and to deal with the event count. If the  count         remains greate
r than zero the  event  block  is  placed  back  on  the         synchronous eve
nt queue.           Entry conditions           A contains the previous event pri
ority.         HL contains the address of the event block.           Exit condit
ions           AF, BC, DE and HL corrupt.         All other registers preserved.
           Notes             This routine is intended to be called after calling
 KL NEXT  SYNC,  to         find a pending event, and KL DO SYNC, to run  the  e
vent  routine.  It         uses the previous event priority and the event block 
address  returned         by KL NEXT SYNC. Other uses of this entry are not reco
mmended.             See  KL  NEXT  SYNC  above  for  the  general  scheme  for 
 process  Ping         synchronous events.             Restoring  the  current  
event  priority  is  an  essential  step   in         maintaining the synchronou
s event priority scheme.             If the event count is greater than zero the
n it is decremented. If the         count is still  greater  than  zero  then  t
here  are  further  events         outstanding and the event is placed  back  on
  the  synchronous  event         queue. The event may be disarmed between KL  N
EXT  SYNC  and  KL  DONE         SYNC. Setting the event count to  one  before  
calling  KL  DONE  SYNC         forces multiple events to be treated as a single
 event.             KL DONE SYNC may enable interrupts.             Related entr
ies             KL DO SYNC         KL NEXT SYNC                 AMSTRAD CPC464/6
64/6128 FIRMWARE                           page 15.208                     172 K
L EVENT DISABLE                                            #BD04             Dis
able normal synchronous events.             Action             Prevent normal sy
nchronous  events  from  being  processed  but  allow         express synchronou
s events  to  be  processed.  This  is  achieved  by         setting the current
 event priority higher  than  any  possible  normal         synchronous event pr
iority.             Entry conditions             No conditions.             Exit
 conditions             HL corrupt.         All other registers preserved.      
       Notes             KL EVENT DISABLE does not prevent events from being kic
ked. The effect         is to 'mask off' all pending normal synchronous events  
so  that  they         are hidden from the foreground program (when KL POLL SYNC
HRONOUS or KL         NEXT SYNC are called) and hence are not processed.        
     KL EVENT ENABLE reverses the effect of KL EVENT DISABLE.             It is 
not possible to  disable  synchronous  events  permanently  from         inside 
a synchronous event  routine  as  the  previous  current  event         priority
 is restored when the event routine returns.               Related entries      
       KL DISARM EVENT         KL EVENT ENABLE         KL NEXT SYNC         KL P
OLL SYNCHRONOUS                     AMSTRAD CPC464/664/6128 FIRMWARE            
               page 15.209         Fill an area of the screen.                  
      173 KL EVENT ENABLE                                             #BD07     
        Enables normal synchronous events.             Action             Allow 
normal and express synchronous events to be processed.             Entry conditi
ons             No conditions.             Exit conditions             HL corrup
t.         All other registers preserved.             Notes             Events a
re enabled by default. KL EVENT ENABLE reverses the effect  of         KL EVENT 
DISABLE.             It is not possible to  disable  synchronous  events  perman
ently  from         inside a synchronous event routine as the current event prio
rity which         is used to disable events is restored when the event routine 
returns.               Related entries             KL EVENT DISABLE         KL N
EXT SYNC         KL POLL SYNCHRONOUS                                       AMSTR
AD CPC464/664/6128 FIRMWARE                           page 15.210               
      174 KL DISARM EVENT                                             #BD0A     
        Prevent an event from occurring.             Action             Disarms 
the event by setting the event count to a negative value.  Any         further '
kicks' (calls of KL EVENT) for the event will be ignored, any         outstandin
g events are discarded.             Entry conditions             HL contains the
 address of the event block.             Exit conditions             AF corrupt.
         All other registers preserved.             Notes             KL  P  DIS
ARM  EVENT  should  only  be  used  with  asynchronous  events.         Synchron
ous events may be disarmed  by  calling  KL  DEL  SYNCHRONOUS,         which als
o ensures that the event is  not  on  the  synchronous  event         queue.    
         The event may be rearmed by reinitializing it (KL INIT  EVENT)  or  by 
        setting the event count (byte 2 of the event block) to zero.            
   Related entries             KL DEL SYNCHRONOUS         KL INIT EVENT         
                          AMSTRAD CPC464/664/6128 FIRMWARE                      
     page 15.211                     175 KL TIME PLEASE                         
                     #BD0D             Ask the elapsed time.             Action 
            The Kernel  maintains  a  count  which  it  increments  on  each  ti
me         interrupt. The count, therefore, measures time in 1/300th of a  secon
d         units. This routine returns the current count.             Entry condi
tions             No conditions.             Exit conditions             DEHL co
ntains the four byte count (D  contains  the  most  significant         byte and
 L the least significant byte).             All other registers preserved.      
       Notes             The count is zeroized when the machine is  turned  on  
or  reset.  The         count may be set to another starting value by KL TIME SE
T.             The count is not kept up to date if interrupts are disabled  for 
 long         periods, such as while reading and writing the cassette.          
   The four byte count overflows after approximately                         14,
316,558 Seconds                       238,609 Minutes                         3,
977 Hours                           166 Days           This routine enables inte
rrupts.               Related entries             KL TIME SET             AMSTRA
D CPC464/664/6128 FIRMWARE                           page 15.212                
     176 KL TIME SET                                                 #BD10      
     Set the elapsed time.           Action             The Kernel  maintains  a
  count  which  it  increments  on  each  time         interrupt. The count, the
refore, measures time in 1/300th of a  second         units. This routine sets t
he count to a given value.             Entry conditions             DEHL contain
s the four byte count (D  contains  the  most  significant         byte and L th
e least significant byte).             Exit conditions             AF corrupt.  
       All other registers preserved.             Notes             The four byt
e count overflows after approximately                         14,316,558 Seconds
                       238,609 Minutes                         3,977 Hours      
                     166 Days             KL TIME SET may be used to set the cou
nt to the actual time of day, so         that the Kernel then maintains a  real 
 clock  rather  than  a  simple         measure of the time elapsed since the la
st reset.             The count is not kept up to date if interrupts are disable
d  for  long         periods, such as while reading and writing the cassette.   
          This routine enables interrupts.               Related entries        
     KL TIME PLEASE                 AMSTRAD CPC464/664/6128 FIRMWARE            
               page 15.213                     177 MC BOOT PROGRAM              
                               #BD13           Load and run a program.          
 Action           Shut down as much of the system as possible then load a  progr
am  into         RAM and run it. If the load fails then the previous foreground 
program         is restarted.           Entry conditions           HL contains t
he address of the routine to call to load the program.           Exit conditions
             Does not exit!           Notes           The system is partially re
set before attempting to load  the  program.         External interrupts are dis
abled, as are all timer, frame flyback  and         keyboard break events. Sound
 generation is  turned  off,  indirections         are set to their default rout
ines  and  the  stack  is  reset  to  the         default system stack. This pro
cess ensures that no memory outside  the         firmware  variables  area  is  
in  use  when  loading   the   program.         Overwriting  an  active  event  
block  or  indirection  routine  could         otherwise have unfortunate conseq
uences.           The partial system  reset  does  not  change  the  ROM  state 
 or  ROM         selection. The routine run to load the program must be  in  acc
essible         R  PAM or an enabled ROM.  Note  that  the  firmware  jumpblock 
 normally         enables the lower ROM and disables the upper ROM and  so  the 
 routine         must normally be in RAM above #4000 or in the lower ROM.       
    The routine run to load the program is free  to  use  any  store  from      
   #0040 up to the base of the firmware variables area  (#B100)  and  may       
  alter indirections and arm external device interrupts as required.  It        
 should obey the following exit conditions                    If the program loa
ded successfully                              Carry true.                       
     HL contains the program entry point.                    If the program fail
ed to load                              Carry false.                            
HL corrupt.                    Always                              A, BC, DE,IX,
IY and other flags corrupt.                   AMSTRAD CPC464/664/6128 FIRMWARE  
                         page 15.214                     After a successful load
 the firmware is completely initialized (as  at         EMS) and the program is 
entered at the entry address returned  by  the         load routine.  Returning 
 from  the  program  will  reset  the  system         (perform RST 0).          
   After an unsuccessful load an appropriate error message is printed and       
  the  previous  foreground  program  is  restarted.  If  the   previous        
 foreground program was itself a RAM program then the  default  ROM  is         
entered instead as the program may  have  been  corrupted  during  the         f
ailed loading.               Related entries             CAS IN DIRECT         K
L CHOKE OFF         MC START PROGRAM                                            
                                           AMSTRAD CPC464/664/6128 FIRMWARE     
                      page 15.215                           178 MC START PROGRAM
                                            #BD16             Run a foreground p
rogram.             Action             Fully initialize the system and enter a p
rogram.             Entry conditions             HL contains the entry point add
ress.         C contains the required ROM selection.             Exit conditions
             Never exits!           Notes             HL and C comprise  the  'f
ar  address'  of  the  entry  point  of  the         foreground program (see sec
tion 2).             When entering a foreground program in ROM the ROM selection
 should  be         that  required  to  select  the  appropriate  ROM.  When  en
tering   a         foreground program in RAM the ROM selection should be used  t
o  enable         or disable ROMs as the RAM program requires (ROM select addres
ses #FC.         .#FF).             This routine carries out a full EMS  initial
ization  of  the  firmware         before entering the program. Returning from t
he program will reset the         system (perform RST 0).             MC START P
ROGRAM is intended for running programs in ROM  or  programs         that have a
lready been loaded into RAM. To load and run a RAM  program         use MC BOOT 
PROGRAM.           Related entries           MC BOOT PROGRAM         RESET ENTRY
 (RST 0)                   AMSTRAD CPC464/664/6128 FIRMWARE                     
      page 15.216                     179 MC WAIT FLYBACK                       
                      #BD19             Wait for frame flyback.             Acti
on             Wait until frame flyback occurs.             Entry conditions    
         No conditions.             Exit conditions             All registers an
d flags preserved.             Notes             Frame flyback is a signal gener
ated by the CRT  controller  to  signal         the start of the vertical  retra
ce  period.  During  this  period  the         screen is not being written and s
o major operations can  be  performed         on the screen without producing un
sightly effects. A prime example  is         rolling the screen.             The
  frame  flyback  signal  only  lasts  for  a  couple  of   hundred         micr
oseconds but the vertical retrace period is much longer than this.         Howev
er, there will be a ticker  interrupt  in  the  middle  of  frame         flybac
k which may cause the foreground processing to be suspended  for         a signi
ficant length of time. It is important, therefore,  to  perform         any crit
ical processing as soon after the frame flyback is detected as         is possib
le.             This routine returns immediately if frame flyback is occurring w
hen it         is called. It does not wait for the s  Ptart  of  frame  flyback 
 (use  a         frame flyback event to do this).               Related entries 
            KL ADD FRAME FLY                     AMSTRAD CPC464/664/6128 FIRMWAR
E                           page 15.217                     180 MC SET MODE     
                                            #BD1C             Set the screen mod
e.             Action             Load the hardware with the required screen mod
e.             Entry conditions             A contains the required mode.       
      Exit conditions             AF corrupt.         All other registers preser
ved.               Notes             The required mode is checked and no action 
is taken if it is  invalid.         If it is valid then the new value is sent to
 the hardware.             The screen modes are                      0        16
0 x 200 pixels,   20 x 25 characters.                  1        320 x 200 pixels
,   40 x 25 characters.                  2        640 x 200 pixels,   80 x 25 ch
aracters.             Altering the screen  mode  without  notifying  the  Screen
  Pack  will         produce peculiar effects on the screen. In general SCR SET 
MODE should         be called to change screen mode. This, in turn, sets the new
 mode into         the hardware.                 Related entries             SCR
 SET MODE                     AMSTRAD CPC464/664/6128 FIRMWARE                  
         page 15.218                     181 MC SCREEN OFFSET                   
                         #BD1F             Set the screen offset.             Ac
tion             Load the hardware with the offset of the  first  byte  on  the 
 screen         inside a 2K screen block and which 16K  block  the  screen  memo
ry  is         located in.             Entry conditions             A contains t
he new screen base.         HL contains the new screen offset.             Exit 
conditions             AF corrupt.         All other registers preserved.       
      Notes             The screen base address is masked with #C0 to make sure 
it refers to a         valid 16K memory area. The default screen base is #C0 (th
e  screen  is         underneath the upper ROM).             The screen offset i
s masked with #07FE to make it legal. Note that bit         0 is ignored as the 
hardware only uses even offsets.             If the screen base or offset is cha
nged without notifying  the  Screen         Pack then unexpected effects may occ
ur on the screen. In  general  SCR         SET BASE or SCR SET OFFSET should be 
called.  These,  in  their  turn,         send the values to the hardware.      
               Related entries             SCR SET BASE         SCR SET OFFSET  
               AMSTRAD CPC464/664/6128 FIRMWARE                           page 1
5.219                     182 MC CLEAR INKS                                     
          #BD22             Set all inks to one colour             Action       
      Set the colour of the border and set the colour of all the  inks.  All    
     inks are set to the same colour thus giving the  impression  that  the     
    screen has been cleared instantly.             Entry conditions             
DE contains the address of an ink vector.             Exit conditions           
  AF corrupt.         All other registers preserved.             Notes          
   The ink vector has the form                      Byte 0   Colour of the borde
r.                  Byte 1   Colour for all inks.             The colours suppli
ed are the numbers used by the hardware rather  than         the grey scale numb
ers supplied to SCR SET INK (see Appendix V).             After the screen has  
been  cleared  (or  whatever)  the  correct  ink         colours can be set by c
alling MC SET INKS.             This routine sets the colours for all 16  inks  
whether  they  can  be         displayed on the screen in the current mode or no
t.             This ink clearing technique is used by the Screen Pack  when  cle
aring         the screen or changing mode (by SCR CLEAR and SCR SET MODE).      
       Related entries           MC SET INKS               AMSTRAD CPC464/664/61
28 FIRMWARE                           page 15.220                     183 MC SET
 INKS                                                 #BD25             Set colo
urs of all the inks.             Action             Set the colours of all the i
nks and the border.             Entry conditions             DE contains the add
ress of an ink vector.             Exit conditions             AF corrupt.      
   All other registers preserved.             Notes             The ink   Pvecto
r passed has the following layout                      Byte 0   Colour of the bo
rder.                  Byte 1   Colour for ink 0.                  Byte 2   Colo
ur for ink 1.                    ..             ..                  Byte 16  Col
our for ink 15.             The colours supplied are the numbers used by the har
dware rather  than         the grey scale numbers supplied to SCR SET INK (see A
ppendix V).             This routine sets the colours for all inks including tho
se that cannot         be visible in the current screen mode. However, it is  on
ly  necessary         to supply sensible colours for the visible inks.          
 The Screen Pack sets the colours for all the inks each time  the  inks         
flash and after an ink colour has been changed (by calling SCR SET INK         o
r SCR SET BORDER).           Related entries           MC CLEAR INKS         SCR
 SET BORDER         SCR SET INK               AMSTRAD CPC464/664/6128 FIRMWARE  
                         page 15.221                     184 MC RESET PRINTER   
                                   #BD28             Reset the printer indirecti
on.             Action             Set the printer indirection, MC WAIT PRINTER,
 to its  default  routine         and, in V1.1 firmware, set up the default prin
ter translation table.             Entry conditions             No conditions.  
           Exit conditions             AF, BC, DE and HL corrupt.         All ot
her registers preserved.             Notes             The default printer trans
lation table is described  in  Appendix  XIV.             This is designed to dr
ive the DMP-1 printer. It  only  translates  the         additional characters i
n the character set  (#0A..#AF)  it  does  not         translate any  of  the  s
tandard  ASCII  characters  or  the  graphics         characters.               
Related entries             MC WAIT PRINTER         MC PRINT CHAR               
                        AMSTRAD CPC464/664/6128 FIRMWARE                        
   page 15.222  l synchronous                   185 MC PRINT CHAR               
                                #BD2B           Try to send a character to the C
entronics port.           Action           Send a character to the printer (Cent
ronics port) or time out  if  the         printer is busy for too long.         
  Entry conditions           A contains the character to send (bit 7 is ignored)
.           Exit conditions           If the character was sent OK              
       Carry true.           If the printer timed out                     Carry 
false.           Always                    A and other flags corrupt.           
       All other registers preserved.           Notes             In V1.1 firmwa
re, the character to be sent  is  translated  using  the         printer transla
tion table as set  by  MC  PRINT  TRANSLATION.  If  the         supplied charact
er is not found in  the  table  then  it  is  sent  as         supplied without 
translation. However, if the character  is  found  in         the translation ta
ble  then  the  corresponding  translation  is  sent         instead unless the 
translation is FF in which case the  character  is         ignored and nothing i
s sent.             This routine calls the Machine Pack indirection  MC  WAIT  P
RINTER  to         sent the character. The default  indirection  routine  waits 
 for  the         Centronics port to become non-busy then sends the  character. 
 If  the         port remains busy for too long (approximately 0.4  seconds)  th
en  the         routine times out and the character is not  sent.  This  time  o
ut  is         provided so that the caller can test  for  break  whilst  driving
  the         printer.                 Related entries           MC PRINT TRANSL
ATION         MC RESET PRINTER         MC WAIT PRINTER               AMSTRAD CPC
464/664/6128 FIRMWARE                           page 15.223                     
186 MC BUSY PRINTER                                             #BD2E           
  Test if the Centronics port is busy.             Action             Test if th
e printer (Centronics port) is busy.             Entry conditions             No
 conditions.             Exit conditions             If Centronics port is busy 
                     Carry true.             If Centronics port is idle         
             Carry false.             Always                      Other flags co
rrupt.                  All other registers preserved.             Notes        
     This routine has no other effects.               Related entries           
  MC SEND   PPRINTER                         AMSTRAD CPC464/664/6128 FIRMWARE   
                        page 15.224                     187 MC SEND PRINTER     
                                        #BD31             Send a character to th
e Centronics port.             Action             Send a character to the printe
r (Centronics port) which  must  not  be         busy.             Entry conditi
ons             A contains the character to send (bit 7 is ignored).            
 Exit conditions             Carry true.             A and other flags corrupt. 
            All other registers preserved.             Notes             The pri
nter must not be busy when a  character  is  sent.  The  higher         level ro
utine MC PRINT CHAR will automatically wait for the printer to         become no
n-busy and should be used in preference.               Related entries          
   MC BUSY PRINTER         MC PRINT CHAR                                     AMS
TRAD CPC464/664/6128 FIRMWARE                           page 15.225             
        188 MC SOUND REGISTER                                           #BD34   
          Send data to a sound chip register.             Action             Set
 sound chip register. This is a rather convoluted action because of         the 
way the hardware has been designed.             Entry conditions             A c
ontains the sound chip register number.         C contains the data to send.    
         Exit conditions             AF and BC corrupt.         All other regist
ers preserved.             Notes             This routine enables interrupts.   
            Related entries             None!                                   
                AMSTRAD CPC464/664/6128 FIRMWARE                           page 
15.226                     189 JUMP RESTORE                                     
           #BD37             Restore the standard jumpblock.             Action 
            Set the main firmware jumpblock to its standard state as described  
in         sections 14.1 and 15.             Entry conditions             No con
ditions.             Exit conditions             AF, BC, DE and HL corrupt.     
    All other registers preserved.             Notes             This routine ma
y be used to restore  the  jumpblock  to  its  standard         routines after t
he user has changed entries in it. The  whole  of  the         jumpblock is set 
up so care must be taken if other programs,  such  as         AMSDOS, have patch
ed it.             The indirections jumpblock is set up piecemeal by the  variou
s  packs'         initialization and reset routines. JUMP RESTORE does not  set 
 up  the         indirections.               Related entries             GRA RES
ET         KM RESET         MC RESET PRINTER         SCR RESET         TXT RESET
                             AMSTRAD CPC464/664/6128 FIRMWARE                   
        page 15.227                     190 KM SET LOCKS                        
                        #BD3A             Set the shift and caps lock states.   
          Action             Turn the shift and caps locks on or off.           
  Entry conditions             H contains the required caps lock state.         
L contains the required shift lock state.             Exit conditions           
  AF corrupt.         All other registers preserved.             Notes          
   This routine is not available on V1.0 firmware.             The lock states a
re                      #00 means that the lock is to be turned off.            
      #FF means that the lock is to be turned on.             The default lock s
tates are off.               Related entries             KM GET STATE           
                      AMSTRAD CPC464/664/6128 FIRMWARE                          
 page 15.228                     191 KM FLUSH                                   
                 #BD3D             Flush the keyboard buffers.             Actio
n             Discard all pending keys from the key buffer, the 'put back' chara
cter         and any current expansion string.             Entry conditions     
        No conditions.             Exit conditions             AF corrupt.      
   All other registers preserved.             Notes             This routine is 
not available on V1.0 firmware.             The next character that will be retu
rned by KM READ CHAR (or a similar         routine) after KM FLUSH is called wil
l be the first character that the         user types after the call of KM FLUSH 
since all the pending characters         will have been discarded.             O
n V1.0 firmware the effect  of   P this  routine  can  be  simulated  by        
 repeatedly calling KM READ CHAR until it comes back with carry false.          
     Related entries             KM READ CHAR         KM READ KEY               
                AMSTRAD CPC464/664/6128 FIRMWARE                           page 
15.229                     192 TXT ASK STATE                                    
           #BD40             Get the state of the Text VDU.             Action  
           Returns the VDU enable/disable state and the cursor on/off and  curso
r         enable/disable states of the current selected stream.             Entr
y conditions             No conditions.             Exit conditions             
A contains the stream state.             Flags corrupt.         All other regist
ers preserved.             Notes             This routine is not available on V1
.0 firmware.             The stream state is returned as follows                
 Bit 0          0 -- cursor enabled,        1 -- cursor disabled.             Bi
t 1          0 -- cursor on,             1 -- cursor off.             Bits 2..6 
     are undefined.             Bit 7          0 -- VDU disabled,          1 -- 
VDU enabled.               Related entries             TXT CUR DISABLE         T
XT CUR ENABLE         TXT CUR OFF         TXT CUR ON         TXT VDU DISABLE    
     TXT VDU ENABLE                   AMSTRAD CPC464/664/6128 FIRMWARE          
                 page 15.230                     193 GRA DEFAULT                
                                 #BD34             Set the default Graphics VDU 
modes.             Action             Sets the graphics write mode, background m
ode,  first  pixel  mode  and         line mask to their default settings.      
       Entry conditions             No conditions.             Exit conditions  
           AF, BC, DE and HL corrupt.         All other registers preserved.    
         Notes             This routine is not available on V1.0 firmware.      
       This routine sets the following modes             Graphics write mode is 
set to force.         Graphics background mode is set to opaque.         First p
oint mode is set to plot the first pixel of lines.         Line mask is set to g
ive continuous lines (mask of #FF).               Related entries             GR
A INITIALISE         GRA RESET         GRA SET BACK         GRA SET FIRST       
  GRA SET LINE MASK         SCR ACCESS                         AMSTRAD CPC464/66
4/6128 FIRMWARE                           page 15.231                     194 GR
A SET BACK                                                #BD46           Set wh
ether background is to be written.           Action           Set the graphics b
ackground write mode to opaque or transparent.  This         affects how GRA LIN
E ABSOLUTE, GRA LINE RELATIVE and GRA WR CHAR write         'background' pixels.
 In opaque mode the  pixels  are  written  in  the         current  paper  ink  
using  the  current  graphics  write   mode.   In         transparent mode these
 pixels are not plotted at all.           Entry conditions           If backgrou
nd is to be written (opaque mode)                    A must be zero.           I
f background is not to be written (transparent mode)                    A must b
e non-zero.           Exit conditions           All registers and flags preserve
d.               Notes             This routine is not available on V1.0 firmwar
e.             Transparent write mode is  useful  for  annotating  diagrams  and
  for         similar applications.             The graphics background write mo
de is similar to  but  independent  of         the character write mode of each 
stream of the Text VDU.             The default setting is opaque mode.         
      Related entries             GRA DEFAULT         GRA LINE         GRA LINE 
ABSOLUTE         GRA LINE RELATIVE         GRA SET LINE MASK         GRA WR CHAR
         TXT SET BACK               AMSTRAD CPC464/664/6128 FIRMWARE            
               page 15.232                     195 GRA SET FIRST                
                               #BD49             Set whether the first point of 
a line is to be plotted.             Action             Turn plotting of the fir
st pixel of lines on or off.             Entry conditions             If the fir
st pixel is not to be plotted                      A contains zero.             
If the first pixel is to be plotted                      A contains non-zero.   
          Exit conditions             All registers and flags preserved.        
     Notes             This routine is not ava  Pilable on V1.0 firmware.       
      Turning off the plotting of the first pixel of a line is  particularly    
     useful when drawing using XOR graphics write mode. For example,  if  a     
    box is drawn in XOR mode when the  first  pixel  of  lines  are  being      
   plotted then the corner pixels will e plotted twice and will therefore       
  not be set. By not plotting the first pixel of lines  this  effect  is        
 avoided.             The default setting for this mode is to plot the first pix
el.             Related entries           GRA DEFAULT         GRA LINE         G
RA LINE ABSOLUTE         GRA LINE RELATIVE               AMSTRAD CPC464/664/6128
 FIRMWARE                           page 15.233                     196 GRA SET 
LINE MASK                                           #BD4C           Set the line
 mask for plotting pixels of lines.           Action           Set the line mask
 that  specifies  how  pixels  on  lines  are  to  be         plotted. Where a b
it in the mask is set the pixel will be  plotted  in         the foreground (in 
graphics pen ink using the  graphics  write  mode).         Where a pixel in the
 mask is not set the pixel will either be  plotted         in the graphics paper
 ink using the graphics write mode or will not be         plotted at all dependi
ng on the graphics background write mode.           Entry conditions           A
 contains the line mask to use.           Exit conditions           All register
s and flags preserved.           Notes           This routine is not available o
n V1.0 firmware.           The line mask is used starting with bit 7 and running
  to  bit  0  and         then starting with bit 7 again. Successive lines will 
use the mask  as         it was left when the previous line finished, the  mask 
 is  not  reset         between lines.           The line mask specifies how pix
els are to be plotted. This means  that         the same mask will give noticeab
ly different effects  in  the  various         screen modes.           The mask 
is applied to the line running from left  to  right  or  from         bottom to 
top, depending on the angle of  the  line,  irrespective  of         which way r
ound the end points of the line are specified.             If the first pixel of
 the line is not being plotted then the line mask         is applied to the seco
nd pixel of the line first. It is not stepped on         for the missing first p
ixel.             The default line mask  is  #FF  which  plot  the  whole  line 
 in  the         foreground.             Related entries           GRA DEFAULT  
       GRA LINE         GRA LINE ABSOLUTE         GRA LINE RELATIVE         GRA 
SET BACK                 AMSTRAD CPC464/664/6128 FIRMWARE                       
    page 15.234                     197 GRA FROM USER                           
                    #BD4F           Convert user coordinates to base coordinates
.           Action           Convert the coordinates of a  point  from  user  co
ordinates  to  base         coordinates rounding as appropriate.           Entry
 conditions           DE contains the user X coordinate.         HL contains the
 user Y coordinate.           Exit conditions           DE contains the base X c
oordinate.         HL contains the base Y coordinate.           AF corrupt.     
    All other registers preserved.           Notes             This routine is n
ot available on V1.0 firmware.             The following formulae are used  to  
convert  between  the  coordinate         systems                      Base X   
  (Origin X + Rounded X) / Points per pixel                  Rounded X  (User X 
+ Round factor) AND Round mask             Where                        Round fa
ctor          Round mask         Points per pixel                 +ve user X -ve
 user X           Mode 0     0        0             #FFFF                   1   
      Mode 1     0        1             #FFFE                   2         Mode 2
     0        3             #FFFC                   4                   Base Y  
    (Origin Y + Rounded Y) / Points per pixel                 Rounded Y   (User 
Y + Round factor) AND Round mask           Where             Round factor       
  0 for +ve user Y                                                 1 for -ve use
r Y                            Round mask           #FFFE                       
     Points per pixel     2                   AMSTRAD CPC464/664/6128 FIRMWARE  
                         page 15.235                     This routine is particu
larly useful when calling Screen pack  routines         which take the   Ppositi
ons of points in base coordinates.                 Related entries             G
RA SET ORIGIN         SCR DOT POSITION                                          
                                                               AMSTRAD CPC464/66
4/6128 FIRMWARE                           page 15.236     AMSTRAD CPC464/664/612
8 FIRMWARE                           page 15.238  onous                   198 GR
A FILL                                                    #BD52           Fill a
n area of the screen.           Action           Fill an area of the screen cont
aining the  current  graphics  position         and bounded by the edge of the w
indow and pixels set to the pen ink.           Entry conditions           A cont
ains the (unencoded) ink to fill the area with.         HL contains the address 
of a buffer.         DE contains the length of the buffer.           Exit condit
ions           If the area was filled successfully                    Carry true
.           If the area was not filled                    Carry false.          
 Always                    A, BC, DE, HL and other flags corrupt.               
   All other registers preserved.           Notes           This routine is not 
available on V1.0 firmware.           The filling algorithm treats pixels set to
 the  current  pen  ink  and         pixels set to the ink that is being used fo
r filling as delimiters  of         the edge of the area. The fill ink and the p
en ink  may  be  the  same         ink.           Pixels that are filled are set
 to the fill  ink.  The  graphics  write         mode does not affect the way pi
xels are written when filling.           The filling algorithm only moves up, do
wn, right or left. It does  not         move diagonally and so the algorithm wil
l not 'escape' through  a  gap         between the edge pixels that are diagonal
ly adjacent. This means  that         the edge can be delimited using the normal
 lines drawn by the Graphics         VDU.           The filling algorithm avoids
 recursing. Instead it stores 'interesting         points', places that the algo
rithm has chosen one route  to  fill  but         might have chosen another rout
e, in the buffer supplied by  the  user.         The buffer may lie anywhere in 
RAM. Each  'interesting  point'  stored         uses 7 bytes of the buffer and t
here is an overhead of 1 byte used  to         mark the end of the buffer. Thus 
a buffer 64 bytes long will  allow  9         'interesting points' to be  stored
  which  should  be  sufficient  for         filling most simple areas.         
      AMSTRAD CPC464/664/6128 FIRMWARE                           page 15.237    
                 The area to be filled may be as complicated as required but  th
e  more         complicated the shape the longer the 'interesting point' buffer 
 needs         to be.             The failure return from this routine  can  occ
ur  for  three  reasons.         Firstly, the current graphics position  may  be
  outside  the  window.         Secondly, the pixel at the current graphics posi
tion may be edge  (pen         or fill ink). In these cases the routine will ret
urn  without  filling         anything. Thirdly the algorithm may exhaust the  '
interesting  point'         buffer in which case some portion of the area will n
ot be filled.                 Related entries             GRA SET PEN           
                                                                              AM
STRAD CPC464/664/6128 FIRMWARE                           page 15.238            
         199 SCR SET POSITION                                            #BD55  
           Set the location of the screen memory.             Action            
 Tell the Screen pack the screen base and the  offset  without  telling         
the hardware.             Entry conditions             A contains the screen bas
e.         HL contains the screen offset.             Exit conditions           
  A contains the screen ba  Pse masked as required.         HL contains the scre
en offset masked as required.             Flags corrupt.         All other regis
ters preserved.             Notes             This routine is not available on V
1.0 firmware.             This routine changes the location of the screen withou
t notifying  the         hardware of the change. This effect may be used to cons
truct a  second         screen of text or graphics without clearing the previous
 screen.  When         the new screen has been constructed the hardware may be  
notified  and         the picture will appear instantly.           In general th
e user is advised to set the base using SCR SET BASE  and         the offset usi
ng SCR SET OFFSET.           The screen base is masked with #C0 and the screen o
ffset with #07FE to         make the values legal.           Related entries    
       SCR GET LOCATION         SCR SET BASE         SCR SET OFFSET             
      AMSTRAD CPC464/664/6128 FIRMWARE                           page 15.239    
                 200 MC PRINT TRANSLATION                                       
 #BD58           Set the printer translation table.           Action           S
et how characters are to be  translated  before  being  sent  to  the         pr
inter.           Entry conditions           HL contains the address of the table
.               Exit conditions           If the table is too long (more than 20
 entries)                    Carry false.           If the table is OK          
          Carry true.           Always                    A, BC, DE, HL and othe
r flags corrupt.                  All other registers preserved.           Notes
           This routine is not available on V1.0 firmware.           The supplie
d translation table may lie anywhere in RAM.  This  routine         copies the t
able and so the memory may be re-used if required.           The format of the t
able is as follows                    Byte 0             Number of entries in th
e table (N).                  Bytes 1,2          Entry 1                  ...   
              ...                  Bytes 2N-1,2N      Entry N           The form
at of each two byte entry is as follows                    Byte 0             Ch
aracter to be translated.                  Byte 1             Character to trans
late to.           If the character to translate to is #FF then the character is
  ignored         and nothing is sent to the printer.         Translation of cha
racters by the printer driver  occurs  in  MC  PRINT         CHAR.              
       AMSTRAD CPC464/664/6128 FIRMWARE                           page 15.240   
                  The default translation table is set  up  when  MC  RESET  PRI
NTER  is         called. The default table is designed to drive the DMP-1 printe
r  (see         Appendix XIV).           Related entries           MC PRINT CHAR
                                                                                
                                 AMSTRAD CPC464/664/6128 FIRMWARE               
            page 15.241                     201 KL BANK SWITCH                  
                            #BD5B             Select a memory organization.     
        Action             Set which RAM banks are switched into the 64K of  RAM
  in  the  memory         map.             Entry conditions             A contai
ns new organization.             Exit conditions             A contains old orga
nization.             Flags corrupt.         All other registers preserved.     
        Notes             This routine is only available on the CPC6128  (i.e.  
V1.2  firmware).         The memory organizations and bank switching  are  discu
ssed  fully  in         section 2.5.             It is inadvisable to bank switc
h to a memory  organization  where  the         code that is being executed, or 
stack are inaccessible!               Related entries             KL L ROM DISAB
LE         KL L ROM ENABLE         KL ROM SELECT         KL U ROM DISABLE       
  KL U ROM ENABLE                           AMSTRAD CPC464/664/6128 FIRMWARE    
                       page 15.242     185 MC PRINT CHAR                        
                       #BD2B           Try to send a character to t           It
 is inadvisable to bank switch to a memory  organization  where  the         cod
e that is being executed, or stack are inaccessible!               Related entri
es             KL L ROM DISABLE         KL L ROM ENABLE         KL ROM SELECT   
      KL U ROM DISABLE         KL U ROM ENABLE                           AMSTRAD
 CPC464/664/6128 FIRMWARE                           P               16 The Firmw
are Indirections.           This section gives the detailed entry and exit condi
tions and  effects         of the routines in the indirections jumpblock. See se
ction 14.2 for  a         list a these routines.           The firmware indirect
ions are taken by the  firmware  at  key  points.         They allow the user to
  intercept  and  alter  a  number  of  firmware         actions without having 
to provide a complete new firmware package.             The  descriptions  given
  are  for  the  default   settings   of   the         indirections. Replacement
 routines need not perform  all  the  actions         that the default routine p
erforms although they are advised to do so.                                     
                                                          AMSTRAD CPC464/664/612
8 FIRMWARE                             page 16.1                     IND TXT DRA
W CURSOR                                             #BDCD             Place the
 cursor blob on the screen (if enabled).             Default action             
If the cursor is enabled and turned on then the cursor blob  is  drawn         o
n the screen. If not then  no  action  is  taken.  The  current  text         po
sition is forced into the window (see TXT VALIDATE) and  the  cursor         blo
b is written at the resulting  position.  The  cursor  blob  is  an         inve
rse patch. This routine will only be called twice  if  TXT  UNDRAW         CURSO
R is called in between.             Entry conditions             No conditions. 
            Exit conditions             AF corrupt.         All other registers 
preserved.             Notes             This indirection is provided to allow t
he user to change the  form  of         the cursor blob. See TXT PLACE CURSOR fo
r a  description  of  how  the         cursor blob is normally written.         
    The Text VDU routines call this indirection  whenever  the  cursor  is      
   placed on the screen. All the Text VDU routines  that  read  from  the       
  screen, write to the screen or change the current position remove  the        
 cursor (using TXT UNDRAW CURSOR) before performing  their  action  and         
place it back on the screen afterwards (using  TXT  DRAW  CURSOR).  An         e
xample of such a routine is TXT WR CHAR that writes  a  character  on         th
e screen.             This indirection is set up when TXT INITIALISE or TXT RESE
T is called.               Related entries           TXT PLACE CURSOR         TX
T UNDRAW CURSOR                 AMSTRAD CPC464/664/6128 FIRMWARE                
             page 16.2                     IND TXT UNDRAW CURSOR                
                           #BDD0             Remove the cursor blob on the scree
n (if enabled).             Default action             If the cursor is enabled 
and turned on then the cursor blob is removed         from the screen. If not th
en no action is taken. The The  cursor  blob         is an inverse patch. This r
outine will only be called after  TXT  DRAW         CURSOR has been used to plac
e the cursor on the screen.             Entry conditions             No conditio
ns.             Exit conditions             AF corrupt.         All other regist
ers preserved.             Notes             This indirection is provided to all
ow the user to change the  form  of         the cursor blob. See TXT REMOVE CURS
OR for a description  of  how  the         cursor blob is normally removed.     
        The Text VDU routines call this indirection to remove the cursor  from  
       the screen. All the Text VDU routines that read from the screen, write   
      to the screen or change the current position remove the cursor  (using    
     TXT UNDRAW CURSOR) before performing their action and place it back on     
    the screen afterwards (using TXT DRAW CURSOR). An example  of  such  a      
   routine is TXT WR CHAR that writes a character on the screen.             Thi
s indirection is set up when TXT INITIALISE or TXT RESET is called.             
  Related entries             TXT DRAW CURSOR         TXT REMOVE CURSOR         
            AMSTRAD CPC464/664/6128 FIRMWARE                             page 16
.3                     IND TXT WRITE CHAR                                       
       #BDD3             Write a character onto the screen.             Default 
action             Put a character on the screen at a character position.       
      Entry conditions             A contains the character to write.         H 
contains the physical column to write at.         L contains the physical row to
 write  P at.             Exit conditions             AF, BC, DE and HL corrupt.
         All other registers preserved.             Notes             The charac
ter position to write at is given in  physical  coordinates.         i.e. Row 0,
 column 0 is  the  top  left  corner  of  the  screen.  The         position is 
not checked for legality.             TXT WRITE CHAR is called by TXT WR CHAR to
 print a  character  on  the         screen. The removing of the cursor blob and
 the calculation of the new         current position are performed by TXT WR CHA
R and  not  by  TXT  WRITE         CHAR.             This indirection is set up 
when TXT INITIALISE or TXT RESET is called.               Related entries       
      TXT OUTPUT         TXT UNWRITE         TXT WR CHAR                        
 AMSTRAD CPC464/664/6128 FIRMWARE                             page 16.4         
            IND TXT UNWRITE                                                 #BDD
6           Read a character from the screen.           Default action          
 Try to read a character from the screen at a character position.           Entr
y conditions           H contains the physical column to read from.         L co
ntains the physical row to read from.           Exit conditions           If a r
eadable character was found                    Carry true.                  A co
ntains the character read.           If no recognisable character was found     
               Carry false.                  A contains zero.           Always  
                  BC, DE, HL and other flags corrupt.                  All other
 registers preserved.           Notes           The character position to read f
rom is given in physical  coordinates.         i.e. Row 0, column 0 is  the  top
  left  corner  of  the  screen.  The         position is not checked for legali
ty.           This indirection is called by TXT RD CHAR to read a character form
 the         screen. TXT RD CHAR removes the cursor from the screen before  call
ing         this indirection.             The read is performed by comparing the
 matrix found on the screen with         the matrices used to generate  characte
rs.  As  a  result  changing  a         character matrix, changing the pen  or  
paper  inks  or  changing  the         screen (e.g.  drawing  a  line  through  
a  character)  may  make  the         character  unreadable.  In  particular  th
e  cursor  blob  will  cause         confusion and so should not be on the scree
n.             Special  precautions  are  taken  against  generating  inverse   
space         (character  #8F).  Initially  the  character  is  read  assuming  
 the         background to the character was written in the current paper  ink. 
 If         this fails to  generate  a  recognisable  character  or  it  generat
es         inverse space then another try is made by assuming that the  characte
r         was written in the current pen ink.                 AMSTRAD CPC464/664
/6128 FIRMWARE                             page 16.5                     The cha
racters are scanned starting with #00 and finishing  with  #FF.         Thus, if
 there are two possible  character  matrices  that  match  the         screen, t
he smaller of the two character numbers will be returned.             This indir
ection is set up when TXT INITIALISE or TXT RESET is called.               Relat
ed entries             TXT RD CHAR         TXT WRITE CHAR                       
                                                                            AMST
RAD CPC464/664/6128 FIRMWARE                             page 16.6              
       IND TXT OUT ACTION                                              #BDD9    
       Output a character or control code.           Default action           Pr
int a character on the screen or obey a control code (character #00.         .#1
F). Works on the currently selected stream (except as noted below).           En
try conditions           A contains the character or code.           Exit condit
ions           AF, BC, DE and HL corrupt.         All other registers preserved.
           Notes           This indirection is called by TXT OUTPUT to do the  w
ork  of  printing         characters or obeying the control codes. It is provide
d to  allow  the         user to change the method of dealing with characters an
d control codes         or to allow the user to redirect output (to the printer 
for  example).         TXT OUTPUT merely preserves the registers around the call
 of  TXT  OUT         ACTION.           Control codes may take up to 9 parameter
s. These  are  the  characters         s  Pent following the initial  control  c
ode.  The  characters  sent  are         stored in a buffer until sufficient hav
e been received to make up  all         the required parameters. The control cod
e buffer is only  long  enough         to accept 9 parameter characters.        
   There is only one control code buffer which is shared between all  the       
  streams. It is, therefore possible to get unpredictable results if the        
 output stream is changed part of the way  through  sending  a  control         
code sequence.           If the VDU is disabled then no  characters  will  be  p
rinted  on  the         screen. In V1.1 firmware control codes that are  special
ly  marked  in         the control code table will not be obeyed  if  the  VDU  
is  disabled.         Other control codes and all control codes in  V1.0  firmwa
re  will  be         obeyed.           If the graphics character write mode is e
nabled  then  all  characters         and control codes are printed using the Gr
aphics VDU (see GRA WR CHAR)         and are not obeyed. Normally characters are
 written by  the  Text  VDU         (see TXT WR CHAR).           This indirectio
n is set up when TXT INITIALISE or TXT RESET is called.           Related entrie
s           TXT OUTPUT         TXT WR CHAR                 AMSTRAD CPC464/664/61
28 FIRMWARE                             page 16.7                     IND GRA PL
OT                                                    #BDDC           Plot a poi
nt.           Default action           Check if the point lies inside the curren
t window and if so  write  it         in the current graphics pen ink and using 
the current  graphics  write         mode. The current graphics position i alway
s moved  to  the  specified         point.             Entry conditions         
    DE contains the user X coordinate of the point to plot.         HL contains 
the user Y coordinate of the point to plot.             Exit conditions         
    AF, BC, DE and HL corrupt.         All other registers preserved.           
  Notes             The position of the point to plot is given in user  coordina
tes,  i.e.         relative to the user origin.             This indirection is 
called by GRA PLOT RELATIVE and GRA PLOT  ABSOLUTE         to plot the point req
uested. It is  provided  to  allow  the  user  to         change the method for 
plotting  (to  output  to  an  X-Y  plotter  for         example). GRA PLOT RELA
TIVE converts from relative to user coordinates         and  then  calls  this  
indirection  GRA  PLOT  ABSOLUTE  calls  this         indirection immediately.  
           To write the point on the screen the SCR WRITE  indirection  is  used
.         Thus the point is plotted using the current graphics write mode.      
       This indirection is set up when GRA INITIALISE or GRA RESET is called.   
            Related entries           GRA PLOT ABSOLUTE         GRA PLOT RELATIV
E         GRA TEST         SCR WRITE                 AMSTRAD CPC464/664/6128 FIR
MWARE                             page 16.8                     IND GRA TEST    
                                                #BDDF           Test a point.   
        Default action           Check if the point inside the graphics window a
nd return the ink it is         currently set to if so. Otherwise, return the  c
urrent  graphic  paper         ink. The current graphics position is always move
d  to  the  specified         point.           Entry conditions           DE con
tains the user X coordinate of the point to test.         HL contains the user Y
 coordinate of the point to test.           Exit conditions           A contains
 the decoded ink of the specified point.             BC, DE,HL and flags corrupt
.         All other registers preserved.             Notes             The posit
ion of the point to plot is given in user  coordinates,  i.e.         relative t
o the user origin.             This indirection is used by GRA TEST RELATIVE and
 GRA TEST ABSOLUTE to         test the point requested. It is provided to allow 
the user  to  change         the method for  testing  (comparing  with  the  cur
rent  pen  ink  for         example). GRA TEST RELATIVE converts from relative t
o user coordinates         and  then  calls  this  indirection  GRA  TEST  ABSOL
UTE  calls  this         indirection immediately.             To test the ink of
 a point inside the window the SCR READ  indirection         is used.           
This indirection is set up when GRA INITIALISE or GRA RESET is called.          
     Related entries             GRA PLOT         GRA TEST ABSOLUTE           PG
RA TEST RELATIVE         SCR READ                   AMSTRAD CPC464/664/6128 FIRM
WARE                             page 16.9                     IND GRA LINE     
                                               #BDE2             Draw a line.   
          Default action             Draw a line between  the  current  graphics
  position  and  the  given         endpoint using the current graphics write mo
de.  Points  on  the  line         that lie outside the current graphics window 
will not be plotted.  The         current graphics position is always moved to t
he specified endpoint.             Entry conditions             DE contains the 
user X coordinate of the endpoint.         HL contains the user Y coordinate of 
the endpoint.             Exit conditions             AF, BC, DE and HL corrupt.
         All other registers preserved.             Notes             The positi
on of the  endpoint  is  given  in  user  coordinates,  i.e.         relative to
 the user origin.           This indirection is used by GRA LINE RELATIVE and GR
A LINE ABSOLUTE to         draw the line specified. It is provided to allow the 
 user  to  change         the method for line drawing (to output to an X-Y plott
er for example).         GRA LINE RELATIVE converts from relative to user coordi
nates and  then         calls  the  indirection  GRA  LINE  ABSOLUTE  calls  the
  indirection         immediately.           The line is split up into horizonta
l or  vertical  sections  that  are         drawn separately (see SCR HORIZONTAL
 and SCR VERTICAL). The SCR  WRITE         indirection is called to write points
 in these  sections.  This  means         that the line is plotted using the cur
rent graphics write mode.           In V1.0 firmware the line is plotted in the 
current pen  ink.  But  in         V1.1 the setting of the line mask determines 
how pixels  on  the  line         will be plotted.  The  line  mask  is  bit  si
gnificant  and  is  used         repeatedly in the order bit 7, bit 6 down to bi
t 0 for each  pixel  in         the line. If the bit is one then the pixel is pl
otted in the  graphics         pen ink. If the bit is zero then  the  action  ta
ken  depends  on  the         graphics background write mode. If the background 
mode is opaque  then         the pixel is plotted in the graphics paper ink. If 
the background mode         is transparent then the pixel is not plotted.       
        AMSTRAD CPC464/664/6128 FIRMWARE                            page 16.10  
                   In V1.1 firmware the first pixel of the  line  (that  at  the
  current         graphics position) is not plotted if the first point plotting 
mode  is         set false.             This indirection is set up when GRA INIT
IALISE or GRA RESET is called.               Related entries             GRA LIN
E ABSOLUTE         GRA LINE RELATIVE         GRA SET BACK         GRA SET FIRST 
        GRA SET LINE MASK         SCR HORIZONTAL         SCR VERTICAL           
                                                                              AM
STRAD CPC464/664/6128 FIRMWARE                            page 16.11          Th
is section gives the detailed entry and exit conditions and  effects   his indir
ection is set up when GRA INITIALISE or GRA RESET is called.               Relat
ed entries             GRA LINE ABSOLUTE         GRA LINE RELATIVE         GRA S
ET BACK         GRA SET FIRST         GRA SET LINE MASK         SCR HORIZONTAL  
       SCR VERTICAL                                                             
                            AMSTRAD CPC464/664/6128 FI                   IND SCR
 READ                                                    #BDE5             Read 
a pixel from the screen.             Default action             Read a pixel fro
m the screen and decode its ink.             Entry conditions             HL con
tains the screen address of the pixel.         C contains the mask for the pixel
.             Exit conditions             A contains the decoded ink that the pi
xel was set to.             Flags corrupt.         All other registers preserved
.             Notes             The mask supplied must be a mask for  a  single 
 pixel  otherwise  the         decoding of the ink read from the screen will not
 work correctly.             This indirection is set up when SCR INITIALISE or S
CR RESET is called.         It is called by GRA TEST.               Related entr
ies             GRA TEST         SCR WRITE                                   AMS
TRAD CPC464/664/6128 FIRMWARE                            page 16.12             
        IND SCR WRITE             P                                             
     #BDE8           Write pixel(s) using the current graphics write mode.      
     Default action           Plot a pixel or pixels on the screen using the cur
rent graphics  write         mode.           Entry conditions           HL conta
ins the screen address of the pixel(s).         C contains the mask for the pixe
l(s).         B contains the encoded ink to plot with.           Exit conditions
           AF corrupt.           All other registers preserved.           Notes 
          The pixel mask supplied can be for a single pixel  or  more  than  one
         pixel (or even no pixels). The ink supplied should be encoded to cover 
        the whole of a byte (see SCR INK ENCODE).           The pixel is plotted
 using the current Graphics VDU write mode.  These         modes are            
        FORCE     Pixel is set to the new ink irrespective of the old           
                 ink.                  XOR       Pixel is set to the ink formed 
 by  exclusive-oring                            the new ink for the pixel and it
s current setting.                  AND       Pixel is set to the ink formed by 
 anding  the  new                            ink for the pixel and its current s
etting.                  OR        Pixel is set to the ink formed by oring the n
ew ink                            for the pixel and its current setting.        
   The write mode can be set by calling SCR ACCESS appropriately.           This
 indirection is called by all  Graphics  VDU  write  routines,  in         parti
cular GRA PLOT RELATIVE, GRA PLOT ABSOLUTE,  GRA  LINE  RELATIVE,         GRA LI
NE ABSOLUTE and GRA WR CHAR, to plot pixels on the screen. It is         provide
d to allow the user to intercept  the  lowest  level  of  point         plotting
 (perhaps to add yet another plotting mode).           This indirection is set u
p when SCR INITIALISE or SCR RESET is called.           Related entries         
  GRA PLOT         SCR ACCESS         SCR PIXELS         SCR READ               
  AMSTRAD CPC464/664/6128 FIRMWARE                            page 16.13        
             IND SCR MODE CLEAR                                              #BD
EB             Clear the screen to ink 0.             Default action            
 Clear the screen memory to zeros.  This  indirection  is  provided  to         
allow the user to prevent the screen being cleared after the  mode  is         c
hanged.             Entry conditions             No conditions.             Exit
 conditions             AF, BC, DE and HL corrupt.         All other registers p
reserved.             Notes             Normally this indirection performs the a
ctions described in SCR CLEAR.             In V1.0 firmware it is necessary for 
the user to set up  the  inks  if         this indirection is intercepted (see A
ppendix XIII). In V1.1  firmware         the screen pack sets up the inks for th
e user after SCR MODE CLEAR has         been called.             This indirectio
n is set up when SCR INITIALISE or SCR RESET is called.           N.B. When this
 indirection is called the text and graphics VDUs are in         non-standard st
ates.           Related entries           SCR CLEAR         SCR SET MODE        
                       AMSTRAD CPC464/664/6128 FIRMWARE                         
   page 16.14                     IND KM TEST BREAK                             
                  #BDEE             Test for break (or reset).             Defau
lt action             Test if the escape key is pressed, if not then no action i
s taken.  If         escape, shift and control are all pressed and no other keys
  then  the         system is reset. Otherwise, a break event is reported  (see 
 KM  BREAK         EVENT).             Entry conditions             Interrupts d
isabled.         C contains shift and control key states.             Exit condi
tions             AF and HL corrupt.         All other registers preserved.     
        Notes             This indirection is called by the firmware from  the  
interrupt  path.         Thus interrupts are disabled and they must remain disab
led.             If bit 7 of C is set then the control key is pressed. If bit 5 
of C is         set then one of the shift keys is pressed.             This indi
rection is called after the keys have been  scanned  and  the         escape key
 was found to have been pressed. It is provided to allow the         user to alt
er the action of a break (particularly prevent  the  system         reset, see R
ESET ENTRY).             This indirection is set up when KM INITIALISE or K  !P!
!!!!!!!!M RESET is called.               Related entries             KM BREAK EV
ENT                   AMSTRAD CPC464/664/6128 FIRMWARE                          
  page 16.15                     IND MC WAIT PRINTER                            
                 #BDF1             Print a character or time out.             De
fault action             Wait for the Centronics port to  become  not  busy  and
  then  send  a         character to it. If the port remains busy for a long tim
e the  routine         times out and the character is not sent.             Entr
y conditions             A contains the character to send.             Exit cond
itions             If the character was sent OK                      Carry true.
             If the Centronics port timed out                    Carry false.   
        Always                    A and BC corrupt.                  All other r
egisters preserved.           Notes           This indirection is provided to al
low the user to drive the printer in         a different way. For example, 'esca
pe sequence' could  be  handled  or         the time out could be changed.      
     This indirection is called by the routine  MC  PRINT  CHAR.  It  tests     
    whether the printer is busy in the same way as  MC  BUSY  PRINTER  and      
   sends the character in the same way as MC SEND PRINTER.           This indire
ction is set up when MC RESET PRINTER is called.           Related entries      
     MC BUSY PRINTER         MC PRINT CHAR         MC SEND PRINTER              
   AMSTRAD CPC464/664/6128 FIRMWARE                            page 16.16       
              IND KM SCAN KEYS                                                #B
DF4             Scan the keyboard.             Default action             Scans 
the keyboard and updates the key state map. Newly  pressed  keys         are det
ected and appropriate markers are inserted into the key buffer.             Entr
y conditions             No conditions except that interrupts must be disabled. 
            Exit conditions             AF, BC, DE and HL corrupt.         All o
ther registers preserved and interrupts remain disabled.             Notes      
       This indirection is called every fiftieth of a second during a  ticker   
      interrupt. The repeat speeds and  start-up  delays  of  the  keys  are    
     measured in scans of the keyboard and hence fiftieth of a second.          
   If the escape key is pressed then the indirection  KM  TEST  BREAK  is       
  called to process the break.               Related entries             KL SCAN
 NEEDED         KM READ KEY         KM TEST BREAK         KM TEST KEY           
                        AMSTRAD CPC464/664/6128 FIRMWARE                        
    page 16.17  is section gives the detailed entry and exit conditions and  eff
ects    of  the  keys  are         measured in scans of the keyboard and hence f
iftieth of a second.             If the escape key is pressed then the indirecti
on  KM  TEST  BREAK  is         called to process the break.               Relat
ed entries                           17 The High Kernel Jumpblock.             S
eparate from the main firmware jumpblock is  a  small  jumpblock  for         Ke
rnel routines associated with  ROM  state  and  ROM  selection.  The         rou
tines accessed through this jumpblock  are  all  RAM  resident,  to         avoi
d confusion while the ROM state and ROM select  are  changed!  The         RAM a
rea is copied out of ROM during the power-up initialization.  The         jumpbl
ock should not be altered by the user.             The entry KL POLL  SYNCHRONOU
S  is  the  'odd  man  out'  amongst  the         routines  in  this  jumpblock.
  Unlike  the  other  synchronous  event         handling routines, which are in
 the lower ROM,  this  routine  is  RAM         resident.  This  minimises  the 
 overhead  involved  in  polling   for         synchronous events.             A
 brief listing of the entries in  this  jumpblock  can  be  found  in         se
ction 14.3. A discussion of ROMs and the memory map can be found  in         sec
tion 2  "P""""""""", further discussion of ROMs can be found in section 10 and a
         discussion of events can be found in section 12.                       
                                                        AMSTRAD CPC464/664/6128 
FIRMWARE                             page 17.1                     HI KL U ROM E
NABLE                                              #B900             Enable the 
upper ROM.             Action             Enables the currently selected upper R
OM. Reading from addresses #C000         and up will now return the contents of 
the ROM.             Entry conditions             No conditions.             Exi
t conditions             A contains the previous ROM state.             Flags co
rrupt.         All other registers preserved.             Notes             The 
mechanism provided for calling subroutines in the  upper  ROM  and         for s
electing upper ROMs automatically enable  the  ROM  as  required.         This r
outine is used by the firmware but is otherwise of little use.             The p
revious ROM state may be passed to KL ROM RESTORE  to  reset  the         state 
to what it was before this routine was called.             This routine enables 
interrupts.               Related entries             KL L ROM ENABLE         KL
 ROM RESTORE         KL ROM SELECT         KL U ROM DISABLE                     
  AMSTRAD CPC464/664/6128 FIRMWARE                             page 17.2        
             HI KL U ROM DISABLE                                             #B9
03             Disable the upper ROM.             Action             Disables th
e upper ROM. Reading from addresses #C000 and up  will  now         return the c
ontents of the RAM.             Entry conditions             No conditions.     
        Exit conditions             A contains the previous ROM state.          
   Flags corrupt.         All other registers preserved.             Notes      
       Disabling the upper ROM gives read access to the top 16K of RAM, which   
      is usually used as the screen memory.  Note  that  the  mapping  of  a    
     location in screen memory to pixels on the screen depends on the  mode     
    and on the screen offset.             It  is  inadvisable  to  disable  the 
 upper   ROM   while   executing         instructions in it!             The pre
vious ROM state may be passed to KL ROM RESTORE  to  reset  the         state to
 what it was before this routine was called.             This routine enables in
terrupts.               Related entries             KL L ROM DISABLE         KL 
ROM RESTORE         KL U ROM ENABLE               AMSTRAD CPC464/664/6128 FIRMWA
RE                             page 17.3                     HI KL L ROM ENABLE 
                                             #B906             Enable the lower 
ROM.             Action             Enables the lower ROM. Reading from addresse
s  below  #4000  will  now         return the contents of the ROM.             E
ntry conditions             No conditions.             Exit conditions          
   A contains the previous ROM state.             Flags corrupt.         All oth
er registers preserved.             Notes             In general the lower ROM i
s disabled except when a firmware routine is         called. The firmware  jumpb
lock  arranges  to  enable  the  lower  ROM         automatically and to disable
 it again when the routine  returns.  This         routine is used by the firmwa
re but is otherwise of little use.             The previous ROM state may be pas
sed to KL ROM RESTORE  to  reset  the         state to what it was before this r
outine was called.             This routine enables interrupts.               Re
lated entries             KL L ROM DISABLE         KL ROM RESTORE         KL U R
OM ENABLE                       AMSTRAD CPC464/664/6128 FIRMWARE                
             page 17.4                     HI KL L ROM DISABLE                  
                           #B909             Disable the lower ROM.             
Action             Disables the lower ROM. Reading from addresses below  #4000  
will  now         return the contents of the RAM.             Entry conditions  
           No conditions.             Exit conditions             A contains the
 previous ROM state.             Flags corrupt.         All other registers pres
erved.             Notes             In general the lower ROM is disabled except
 when a firmware routine is         called. The firmware  jumpblock  arranges  t
o  enable  the  lower  ROM         automatically and to disable it again when th
e routine  returns.             The previous  #P######### ROM state may be passe
d to KL ROM RESTORE  to  reset  the         state to what it was before this rou
tine was called.             This routine enables interrupts.               Rela
ted entries             KL L ROM ENABLE         KL ROM RESTORE         KL U ROM 
DISABLE                         AMSTRAD CPC464/664/6128 FIRMWARE                
             page 17.5                     HI KL ROM RESTORE                    
                           #B90C             Restore the previous ROM state.    
         Action             The ROM state change routines all return a value giv
ing  the  previous         ROM state. Given that value KL ROM RESTORE will  rese
t  the  state  to         what it was before the change.             Entry condi
tions             A contains the previous ROM state.             Exit conditions
             AF corrupt.         All other registers preserved.             Note
s             The previous ROM state is the value returned by one of            
          KL U ROM ENABLE                  KL U ROM DISABLE                  KL 
L ROM ENABLE                  KL L ROM DISABLE                  KL ROM SELECT   
          It is possible to use KL U ROM DISABLE to reverse the effect of a call
         of KL U ROM ENABLE  (amongst  various  other  combinations).  However, 
        calling KL ROM RESTORE is the preferred method since it  restores  the  
       state to what it was, which might have been enabled anyway.             T
his routine enables interrupts.           Related entries           KL L ROM DIS
ABLE         KL L ROM ENABLE         KL ROM SELECT         KL U ROM DISABLE     
    KL U ROM ENABLE                 AMSTRAD CPC464/664/6128 FIRMWARE            
                 page 17.6                     HI KL ROM SELECT                 
                               #B90F             Select a particular upper ROM. 
            Action             Select a given upper ROM and enable the upper ROM
.             Entry conditions             C contains the ROM select address of 
the required ROM.             Exit conditions             C contains the ROM sel
ect address of the previously selected ROM.         B contains the previous ROM 
state.             AF corrupt.         All other registers preserved.           
  Notes             The previous ROM state can be passed to KL ROM RESTORE  to  
reset  the         ROM enable to what it was. Both the previous state  and  the 
 previous         selection can be passed to KL ROM DESELECT to  restore  the  s
tate  to         what it was and to select the previously selected ROM again.   
          The  mechanism  provided  for  calling  routines  in  expansion   ROMs
         automatically perform ROM selection as required (see section 2).       
      It is  inadvisable  to  select  another  upper  ROM  whilst  executing    
     instructions in the upper ROM.             This routine enables interrupts.
               Related entries           KL CURR SELECTION         KL PROBE ROM 
        KL ROM DESELECT         KL ROM RESTORE               AMSTRAD CPC464/664/
6128 FIRMWARE                             page 17.7                     HI KL CU
RR SELECTION                                            #B912             Ask wh
ich upper ROM is currently selected.             Action             Returns the 
ROM select address of the currently selected upper ROM.             Entry condit
ions             No conditions.             Exit conditions             A contai
ns the ROM select address of the currently selected ROM.             All other r
egisters and flags preserved.             Notes             It is not possible  
to  predict  the  ROM  select  address  which  any         particular expansion 
ROM will be fitted. The  'far  address'  used  to         reference subroutines 
in expansion ROMs includes  a  ROM  select  byte         which must be set up at
 run time. This routine returns the ROM  select         address of the current R
OM  so  that  it  can  set  up  suitable  'far         addresses'.              
 Related entries             KL PROBE ROM         KL ROM SELECT                 
                      AMSTRAD CPC464/664/6128 FIRMWARE                          
   page 17.8                     HI KL PROBE ROM                                
                 #B915             Ask class and version of a ROM.             A
ction             The first few bytes  of  all  upper  ROMs  contain  informatio
n  in  a         standard form about the ROM. This routine  extracts  the  class
,  mark         number and version number bytes from the ROM at  a  given  ROM  
sel  $P$$$$$$$$$ect         address.             Entry conditions             C 
contains the ROM select address of the ROM to probe.             Exit conditions
             A contains the ROM's class.         L contains the ROM's mark numbe
r         H contains the ROM's version number.           B and flags corrupt.   
      All other registers preserved.           Notes           The ROM class ret
urned may take any of the following values                  0        Foreground 
ROM.                1        Background ROM.                2        Extension f
oreground ROM.                #80      On board ROM (the built in BASIC foregrou
nd program).           Selecting a ROM address where no ROM is fitted implicitly
 selects  the         on-board ROM and so it will return #80 as its class.      
     The meaning of the mark and version numbers depends on the ROM.           S
ee section 10 for a description of expansion ROMs.           This routine enable
s interrupts.           Related entries           KL ROM SELECT         KL CURR 
SELECTION                     AMSTRAD CPC464/664/6128 FIRMWARE                  
           page 17.9                     HI KL ROM DESELECT                     
                         #B918             Restore previous upper ROM selection.
             Action             Set the ROM state and upper ROM selection to wha
t they were before  KL         ROM SELECT was called.             Entry conditio
ns             C contains the ROM select address of the previously selected ROM.
         B contains the previous ROM state.             Exit conditions         
    C contains the ROM select address of the currently selected ROM.            
 B corrupt.         All other registers and flags preserved.             Notes  
           The previous ROM selection and state are the values returned by KL RO
M         SELECT. The currently selected ROM returned by this routine is the ROM
         that was selected by calling KL ROM SELECT (unless further  selections 
        have been made).             The mechanism provided  for  calling  subro
utines  in  expansion  ROMs         automatically performs ROM selection as requ
ired.             It is  inadvisable  to  select  another  upper  ROM  whilst  e
xecuting         instructions in the upper ROM.             This routine enables
 interrupts.               Related entries           KL CURR SELECTION         K
L ROM RESTORE         KL ROM SELECT               AMSTRAD CPC464/664/6128 FIRMWA
RE                            page 17.10                     HI KL LDIR         
                                             #B91B             Move store (LDIR)
 with ROMs turned off.             Action             Performs an LDIR instructi
on (LoaD Increment  and  Repeat)  with  both         upper and lower ROMs disabl
ed.             Entry conditions             BC, DE, HL as required by the LDIR 
instruction.             Exit conditions             F, BC, DE, HL as set by the
 LDIR instruction.         All other registers preserved.             Notes     
        This routine may be used to move areas of RAM irrespective of the  ROM  
       state.             This routine enables interrupts.               Related
 entries             KL LDDR         RAM LAM (RST 4)                            
               AMSTRAD CPC464/664/6128 FIRMWARE                            page 
17.11                     HI KL LDDR                                            
          #B91E             Move store (LDDR) with ROMs turned off.             
Action             Performs an LDDR instruction (LoaD Decrement  and  Repeat)  w
ith  both         upper and lower ROMs disabled.             Entry conditions   
          BC, DE, HL as required by LDDR instruction.             Exit condition
s             F, BC, DE, HL as set by LDDR instruction.         All other regist
ers preserved.             Notes             This routine may be used to move ar
eas of RAM irrespective of the  ROM         state.             This routine enab
les interrupts.                 Related entries             KL LDIR         RAM 
LAM (RST 4)                                         AMSTRAD CPC464/664/6128 FIRM
WARE                            page 17.12                     HL KL POLL SYNCHR
ONOUS                                          #B921           Check if an event
 with higher  priority  than  the  current  event  is         pending.          
 Action           If the synchronous event queue is not empty then the priority 
 of  the         highest priority pending event is compared with  the  current  
event's         priority (if any).   %P%%%%%%%%%          Entry conditions      
     No conditions.           Exit conditions           If there is a higher pri
ority event pending                    Carry true.           If there is no high
er priority event pending                    Carry false.           Always      
              A and other flags corrupt.                    All other registers 
preserved.           Notes             This routine is in the high jumpblock  to
  minimise  the  overhead  of         polling for synchronous events. If  the  s
ynchronous  event  queue  is         empty then the routine takes only a few ins
tructions.             While a synchronous event is being processed the Kernel r
emembers  its         priority.  The  synchronous  event  routine  may   itself 
  poll   the         synchronous event queue, but only events of  a  higher  pri
ority  than         itself are notified to it.             This routine enables 
interrupts.             Related entries           KL EVENT         KL DONE SYNC 
        KL DO SYNC         KL NEXT SYNC                   AMSTRAD CPC464/664/612
8 FIRMWARE                            page 17.13                     HI KL SCAN 
NEEDED                                               #B92A             Ensure ke
yboard is scanned at next opportunity.             Action             Force the 
Key Manager to  scan  the  keyboard  when  the  next  ticker         interrupt o
ccurs. This may be used to reduce the  probability  of  key         pressings be
ing missed while interrupts are disabled.             Entry conditions          
   No conditions.             Exit conditions             AF and HL corrupt.    
     All other registers preserved.             Notes             The keyboard i
s normally  scanned  on  every  sixth  ticker  interrupt         (every fiftieth
 of a second). While interrupts are disabled the  ticks         are lost and the
 keyboard will  not  be  scanned.  If  interrupts  are         disabled for a si
gnificant period (more than three  ticks)  then  this         routine should be 
called just before  interrupts  are  re-enabled.  If         interrupts are disa
bled for a long time (more than twelve ticks)  then         the  user  might  co
nsider  calling  this  routine   and   re-enabling         interrupts for a shor
t time every fiftieth of a second.               Related entries             KM 
SCAN KEYS                                     AMSTRAD CPC464/664/6128 FIRMWARE  
                          page 17.14   Separate from the main firmware jumpblock
 is  a  small  jumpblock  for       &P&&&&&&&&&  'P'''''''''
Tous droits réservés. Reproduction sans autorisation interdite. © Kukulcan