Kevin Thacker's CPC Guide (UK) (Face A) (1994) (Version Basic 1.1) [EDUCATIF].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 36 30 32 32 30 00    ..SAMdisk160220.
000030:  28 01 00 00 13 13 13 13 13 13 13 13 13 13 13 13    (...............
000040:  13 13 13 13 13 13 13 13 13 13 13 13 13 13 13 13    ................
000050:  13 13 13 13 13 13 13 13 13 13 13 13 00 00 00 00    ................
000060:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000070:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000080:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000090:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0000F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
000110:  00 00 01 00 02 09 4E E5 00 00 C1 02 00 00 00 02    ......N.........
000120:  00 00 C6 02 00 00 00 02 00 00 C2 02 00 00 00 02    ................
000130:  00 00 C7 02 00 00 00 02 00 00 C3 02 00 00 00 02    ................
000140:  00 00 C8 02 00 00 00 02 00 00 C4 02 00 00 00 02    ................
000150:  00 00 C9 02 00 00 00 02 00 00 C5 02 00 00 00 02    ................
000160:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000170:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000180:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000190:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0001F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000200:  00 38 32 35 35 20 20 20 20 54 58 54 00 00 00 44    .8255    TXT...D
000210:  02 03 04 05 06 07 08 09 0A 00 00 00 00 00 00 00    ................
000220:  00 38 32 35 35 32 20 20 20 54 58 54 00 00 00 4B    .82552   TXT...K
000230:  0B 0C 0D 0E 0F 10 11 12 13 14 00 00 00 00 00 00    ................
000240:  00 42 44 4F 53 20 20 20 20 54 58 54 00 00 00 33    .BDOS    TXT...3
000250:  15 16 17 18 19 1A 1B 00 00 00 00 00 00 00 00 00    ................
000260:  00 43 41 53 20 20 20 20 20 54 58 54 00 00 00 74    .CAS     TXT...t
000270:  1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 00    .... !"#$%&'()*.
000280:  00 43 4F 4E 4E 45 43 54 20 54 58 54 00 00 00 2F    .CONNECT TXT.../
000290:  2B 2C 2D 2E 2F 30 00 00 00 00 00 00 00 00 00 00    +,-./0..........
0002A0:  00 43 4F 4E 54 43 48 41 52 54 58 54 00 00 00 1C    .CONTCHARTXT....
0002B0:  31 32 33 34 00 00 00 00 00 00 00 00 00 00 00 00    1234............
0002C0:  00 43 52 54 43 20 20 20 20 54 58 54 00 00 00 80    .CRTC    TXT....
0002D0:  35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44    56789:;<=>?@ABCD
0002E0:  00 43 52 54 43 20 20 20 20 54 58 54 01 00 00 2F    .CRTC    TXT.../
0002F0:  45 46 47 48 49 4A 00 00 00 00 00 00 00 00 00 00    EFGHIJ..........
000300:  00 45 58 50 41 4E 20 20 20 54 58 54 00 00 00 0B    .EXPAN   TXT....
000310:  4B 4C 00 00 00 00 00 00 00 00 00 00 00 00 00 00    KL..............
000320:  00 46 49 4E 44 45 52 20 20 44 41 54 00 00 00 1B    .FINDER  DAT....
000330:  4D 4E 4F 50 00 00 00 00 00 00 00 00 00 00 00 00    MNOP............
000340:  00 47 41 54 45 20 20 20 20 54 58 54 00 00 00 74    .GATE    TXT...t
000350:  51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 00    QRSTUVWXYZ[\]^_.
000360:  00 47 52 41 20 20 20 20 20 54 58 54 00 00 00 47    .GRA     TXT...G
000370:  60 61 62 63 64 65 66 67 68 00 00 00 00 00 00 00    `abcdefgh.......
000380:  00 48 41 52 44 57 41 52 45 54 58 54 00 00 00 0E    .HARDWARETXT....
000390:  69 6A 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ij..............
0003A0:  00 48 49 2D 4B 45 52 4E 20 54 58 54 00 00 00 4A    .HI-KERN TXT...J
0003B0:  6B 6C 6D 6E 6F 70 71 72 73 74 00 00 00 00 00 00    klmnopqrst......
0003C0:  00 49 4E 44 49 52 45 43 54 54 58 54 00 00 00 68    .INDIRECTTXT...h
0003D0:  75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 00 00 00    uvwxyz{|}~......
0003E0:  00 49 4F 50 4F 52 54 53 20 54 58 54 00 00 00 09    .IOPORTS TXT....
0003F0:  82 83 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
000400:  63 61 6E 20 0D 8A 66 75 6E 63 74 69 6F 6E 2E 0D    can ..function..
000410:  0D 4D 6F 64 65 20 30 20 2D 20 42 61 73 69 63 20    .Mode 0 - Basic 
000420:  49 6E 70 75 74 2F 4F 75 74 70 75 74 0D 4D 6F 64    Input/Output.Mod
000430:  65 20 31 20 2D 20 53 74 72 6F 62 65 64 20 49 6E    e 1 - Strobed In
000440:  70 75 74 2F 4F 75 74 70 75 74 20 2A 2A 4E 4F 54    put/Output **NOT
000450:  20 55 53 45 44 20 42 59 20 43 50 43 2A 2A 0D 4D     USED BY CPC**.M
000460:  6F 64 65 20 32 20 2D 20 42 69 2D 44 69 72 65 63    ode 2 - Bi-Direc
000470:  74 69 6F 6E 61 6C 20 42 75 73 20 20 20 2A 2A 4E    tional Bus   **N
000480:  4F 54 20 55 53 45 44 20 42 59 20 43 50 43 2A 2A    OT USED BY CPC**
000490:  0D 0D 49 6E 20 73 6F 6D 65 20 6F 66 20 74 68 65    ..In some of the
0004A0:  73 65 20 6D 6F 64 65 73 20 70 6F 72 74 90 20 43    se modes port. C
0004B0:  90 20 69 73 90 20 75 73 65 64 90 20 61 73 20 61    . is. used. as a
0004C0:  20 63 6F 6E 74 72 6F 6C 2F 73 74 61 74 75 73 20     control/status 
0004D0:  70 6F 72 74 20 66 6F 72 20 0D 8A 70 6F 72 74 20    port for ..port 
0004E0:  41 20 6F 72 20 42 2E 20 49 74 20 63 61 6E 90 20    A or B. It can. 
0004F0:  62 65 90 20 75 73 65 64 90 20 74 6F 90 20 63 6F    be. used. to. co
000500:  6E 66 69 72 6D 20 77 68 65 6E 20 64 61 74 61 20    nfirm when data 
000510:  74 72 61 6E 73 66 65 72 20 6D 61 79 20 74 61 6B    transfer may tak
000520:  65 20 0D 8A 70 6C 61 63 65 2C 20 61 6E 64 20 72    e ..place, and r
000530:  65 66 6C 65 63 74 20 61 6E 79 20 6F 74 68 65 72    eflect any other
000540:  20 66 6C 61 67 73 2E 20 54 68 65 20 38 32 35 35     flags. The 8255
000550:  20 50 50 49 20 69 73 20 74 68 65 72 65 66 6F 72     PPI is therefor
000560:  65 20 73 75 70 70 6C 69 65 64 20 0D 8A 77 69 74    e supplied ..wit
000570:  68 20 74 68 65 20 61 64 64 65 64 20 6F 70 74 69    h the added opti
000580:  6F 6E 20 66 6F 72 20 74 68 65 20 75 73 65 72 20    on for the user 
000590:  74 6F 20 73 65 74 20 6F 72 20 72 65 73 65 74 20    to set or reset 
0005A0:  61 6E 79 20 69 6E 64 69 76 69 64 75 61 6C 20 62    any individual b
0005B0:  69 74 73 20 0D 8A 69 6E 20 70 6F 72 74 20 43 2E    its ..in port C.
0005C0:  0D 0D 54 68 65 20 49 2F 4F 20 73 74 61 74 75 73    ..The I/O status
0005D0:  2C 20 6D 6F 64 65 20 6F 66 20 6F 70 65 72 61 74    , mode of operat
0005E0:  69 6F 6E 90 20 61 6E 64 90 20 62 69 74 90 20 73    ion. and. bit. s
0005F0:  65 74 74 69 6E 67 20 69 73 20 64 65 66 69 6E 65    etting is define
000600:  00 4B 45 52 4E 41 4C 20 20 54 58 54 00 00 00 80    .KERNAL  TXT....
000610:  84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93    ................
000620:  00 4B 45 52 4E 41 4C 20 20 54 58 54 01 00 00 64    .KERNAL  TXT...d
000630:  94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 00 00 00    ................
000640:  00 4B 45 59 4D 41 50 20 20 54 58 54 00 00 00 29    .KEYMAP  TXT...)
000650:  A1 A2 A3 A4 A5 A6 00 00 00 00 00 00 00 00 00 00    ..£.............
000660:  00 4B 4D 20 20 20 20 20 20 54 58 54 00 00 00 4B    .KM      TXT...K
000670:  A7 A8 A9 AA AB AC AD AE AF B0 00 00 00 00 00 00    ................
000680:  00 44 49 53 43 20 20 20 20 20 20 20 00 00 00 16    .DISC       ....
000690:  B1 B2 B3 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
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:  64 20 62 79 20 74 68 65 20 0D 8A 38 32 35 35 20    d by the ..8255 
000810:  50 50 49 20 63 6F 6E 74 72 6F 6C 90 20 62 79 74    PPI control. byt
000820:  65 2E 90 20 28 54 68 65 90 20 63 6F 6E 74 72 6F    e.. (The. contro
000830:  6C 90 20 62 79 74 65 90 20 69 73 90 20 61 63 63    l. byte. is. acc
000840:  65 73 73 65 64 90 20 75 73 69 6E 67 20 70 6F 72    essed. using por
000850:  74 20 0D 8A 26 46 37 78 78 2E 28 38 32 35 35 20    t ..&F7xx.(8255 
000860:  43 6F 6E 74 72 6F 6C 20 70 6F 72 74 29 29 0D 0D    Control port))..
000870:  54 68 65 20 70 6F 72 74 73 20 6D 61 79 20 62 65    The ports may be
000880:  20 61 63 63 65 73 73 65 64 20 73 65 70 61 72 61     accessed separa
000890:  74 65 6C 79 20 62 79 20 74 68 65 20 43 50 55 2E    tely by the CPU.
0008A0:  0D 0D 50 6F 72 74 20 41 20 69 73 20 61 63 63 65    ..Port A is acce
0008B0:  73 73 65 64 20 75 73 69 6E 67 20 70 6F 72 74 20    ssed using port 
0008C0:  26 46 34 78 78 2E 0D 50 6F 72 74 20 42 20 69 73    &F4xx..Port B is
0008D0:  20 61 63 63 65 73 73 65 64 20 75 73 69 6E 67 20     accessed using 
0008E0:  70 6F 72 74 20 26 46 35 78 78 2E 0D 50 6F 72 74    port &F5xx..Port
0008F0:  20 43 20 69 73 20 61 63 63 65 73 73 65 64 20 75     C is accessed u
000900:  73 69 6E 67 20 70 6F 72 74 20 26 46 36 78 78 2E    sing port &F6xx.
000910:  20 0D 0D 4E 4F 54 45 3A 0D 0D 4D 6F 64 65 20 30     ..NOTE:..Mode 0
000920:  20 6F 70 65 72 61 74 69 6F 6E 3A 0D 0D 4D 6F 64     operation:..Mod
000930:  65 20 30 20 6F 70 65 72 61 74 69 6F 6E 20 64 6F    e 0 operation do
000940:  65 73 20 6E 6F 74 20 72 65 71 75 69 72 65 90 20    es not require. 
000950:  6F 74 68 65 72 90 20 70 6F 72 74 73 90 20 74 6F    other. ports. to
000960:  20 62 65 20 75 73 65 64 20 74 6F 20 63 6F 6E 74     be used to cont
000970:  72 6F 6C 20 0D 8A 64 61 74 61 20 74 72 61 6E 73    rol ..data trans
000980:  66 65 72 2E 20 44 61 74 61 20 6D 61 79 20 6F 6E    fer. Data may on
000990:  6C 79 20 62 65 20 73 65 6E 74 20 74 6F 90 20 61    ly be sent to. a
0009A0:  20 70 6F 72 74 20 69 66 20 74 68 65 20 70 6F 72     port if the por
0009B0:  74 20 69 73 20 64 65 66 69 6E 65 64 20 0D 8A 61    t is defined ..a
0009C0:  73 20 6F 75 74 70 75 74 2C 20 61 6E 64 20 64 61    s output, and da
0009D0:  74 61 20 6D 61 79 20 6F 6E 6C 79 20 62 65 20 72    ta may only be r
0009E0:  65 61 64 90 20 66 72 6F 6D 20 61 20 70 6F 72 74    ead. from a port
0009F0:  20 77 68 65 6E 20 74 68 65 20 70 6F 72 74 20 69     when the port i
000A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000B90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000BA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000BB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000BC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000BD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000BE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000BF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000C00:  73 20 73 65 74 20 0D 8A 74 6F 20 69 6E 70 75 74    s set ..to input
000C10:  2E 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ...=============
000C20:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
000C30:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
000C40:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
000C50:  3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 55 73 69 6E 67    =========..Using
000C60:  20 74 68 65 20 38 32 35 35 20 50 6F 72 74 73 0D     the 8255 Ports.
000C70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
000C80:  2D 2D 2D 2D 0D 0D 57 68 65 6E 20 77 72 69 74 69    ----..When writi
000C90:  6E 67 20 74 6F 20 61 20 70 6F 72 74 3A 0D 0D 31    ng to a port:..1
000CA0:  29 20 4D 61 6B 65 20 73 75 72 65 90 74 68 65 90    ) Make sure.the.
000CB0:  70 6F 72 74 20 69 73 20 6F 70 65 72 61 74 69 6E    port is operatin
000CC0:  67 20 61 73 20 6F 75 74 70 75 74 2E 20 28 54 68    g as output. (Th
000CD0:  69 73 20 69 73 20 64 6F 6E 65 20 62 79 20 73 65    is is done by se
000CE0:  6E 64 69 6E 67 20 0D 8A 20 20 20 61 20 63 6F 6E    nding ..   a con
000CF0:  74 72 6F 6C 20 62 79 74 65 20 74 6F 20 70 6F 72    trol byte to por
000D00:  74 20 26 46 37 78 78 29 2E 0D 32 29 20 57 72 69    t &F7xx)..2) Wri
000D10:  74 65 20 74 68 65 20 64 61 74 61 20 74 6F 20 74    te the data to t
000D20:  68 65 20 70 6F 72 74 2E 0D 33 29 20 52 65 74 75    he port..3) Retu
000D30:  72 6E 20 74 68 65 20 70 6F 72 74 20 74 6F 20 69    rn the port to i
000D40:  74 27 73 20 6F 72 69 67 69 6E 61 6C 20 49 2F 4F    t's original I/O
000D50:  20 53 74 61 74 75 73 2E 0D 0D 57 68 65 6E 20 72     Status...When r
000D60:  65 61 64 69 6E 67 20 66 72 6F 6D 20 61 20 70 6F    eading from a po
000D70:  72 74 3A 0D 0D 31 29 20 4D 61 6B 65 20 73 75 72    rt:..1) Make sur
000D80:  65 20 74 68 65 20 70 6F 72 74 20 69 73 20 6F 70    e the port is op
000D90:  65 72 61 74 69 6E 67 90 20 61 73 20 69 6E 70 75    erating. as inpu
000DA0:  74 2E 20 28 54 68 69 73 20 69 73 20 64 6F 6E 65    t. (This is done
000DB0:  20 62 79 20 73 65 6E 64 69 6E 67 20 0D 8A 20 20     by sending ..  
000DC0:  20 61 20 63 6F 6E 74 72 6F 6C 20 62 79 74 65 20     a control byte 
000DD0:  74 6F 20 70 6F 72 74 20 26 46 37 78 78 29 2E 0D    to port &F7xx)..
000DE0:  32 29 20 52 65 61 64 20 74 68 65 20 64 61 74 61    2) Read the data
000DF0:  20 66 72 6F 6D 20 74 68 65 20 70 6F 72 74 2E 0D     from the port..
000E00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000E90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000EA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000EB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000EC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000ED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000EE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000EF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000F90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000FA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000FB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000FC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000FD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000FE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
000FF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
001000:  33 29 20 52 65 74 75 72 6E 20 74 68 65 20 70 6F    3) Return the po
001010:  72 74 20 74 6F 20 69 74 27 73 20 6F 72 69 67 69    rt to it's origi
001020:  6E 61 6C 20 49 2F 4F 20 53 74 61 74 75 73 2E 0D    nal I/O Status..
001030:  0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    .===============
001040:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001050:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001060:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001070:  3D 3D 3D 3D 3D 3D 3D 0D 0D 38 32 35 35 20 50 50    =======..8255 PP
001080:  49 20 43 6F 6E 74 72 6F 6C 20 42 79 74 65 0D 2D    I Control Byte.-
001090:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0010A0:  2D 2D 2D 2D 0D 0D 54 68 69 73 20 62 79 74 65 20    ----..This byte 
0010B0:  63 6F 6E 74 72 6F 6C 73 20 74 68 65 20 49 6E 70    controls the Inp
0010C0:  75 74 2F 4F 75 74 70 75 74 20 28 49 2F 4F 29 20    ut/Output (I/O) 
0010D0:  73 74 61 74 75 73 20 61 6E 64 20 6F 70 65 72 61    status and opera
0010E0:  74 69 6E 67 20 6D 6F 64 65 20 6F 66 20 0D 8A 65    ting mode of ..e
0010F0:  61 63 68 20 70 6F 72 74 2E 0D 0D 49 74 20 61 6C    ach port...It al
001100:  73 6F 20 68 61 73 20 61 20 73 65 63 6F 6E 64 61    so has a seconda
001110:  72 79 20 66 75 6E 63 74 69 6F 6E 20 77 68 69 63    ry function whic
001120:  68 20 61 6C 6C 6F 77 73 20 74 68 65 20 75 73 65    h allows the use
001130:  72 20 74 6F 20 73 65 74 20 6F 72 20 72 65 73 65    r to set or rese
001140:  74 20 0D 8A 61 20 70 61 72 74 69 63 75 6C 61 72    t ..a particular
001150:  20 62 69 74 20 6F 66 20 70 6F 72 74 20 43 2E 0D     bit of port C..
001160:  0D 54 6F 20 73 65 6E 64 20 61 20 63 6F 6E 74 72    .To send a contr
001170:  6F 6C 20 62 79 74 65 90 20 74 6F 90 20 74 68 65    ol byte. to. the
001180:  90 20 38 32 35 35 2C 90 20 73 69 6D 70 6C 79 90    . 8255,. simply.
001190:  20 73 65 6E 74 90 20 74 68 65 20 62 79 74 65 20     sent. the byte 
0011A0:  74 6F 20 70 6F 72 74 20 0D 8A 26 46 37 78 78 2E    to port ..&F7xx.
0011B0:  20 28 4E 4F 54 45 3A 20 54 68 65 20 63 6F 6E 74     (NOTE: The cont
0011C0:  72 6F 6C 90 20 62 79 74 65 90 20 63 61 6E 90 20    rol. byte. can. 
0011D0:  6F 6E 6C 79 90 20 62 65 90 20 77 72 69 74 74 65    only. be. writte
0011E0:  6E 2C 90 20 69 74 20 63 61 6E 6E 6F 74 20 62 65    n,. it cannot be
0011F0:  20 0D 8A 72 65 61 64 2E 29 0D 0D 54 68 65 20 66     ..read.)..The f
001200:  38 32 35 35 20 50 61 72 61 6C 6C 65 6C 20 50 65    8255 Parallel Pe
001210:  72 69 70 68 65 72 61 6C 20 49 6E 74 65 72 66 61    ripheral Interfa
001220:  63 65 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ce.-------------
001230:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
001240:  2D 2D 2D 2D 2D 0D 0D 54 68 65 20 38 32 35 35 20    -----..The 8255 
001250:  69 73 20 61 20 67 65 6E 65 72 61 6C 20 70 75 72    is a general pur
001260:  70 6F 73 65 90 20 69 6E 70 75 74 90 20 6F 75 74    pose. input. out
001270:  70 75 74 90 20 63 68 69 70 2E 20 49 74 20 69 73    put. chip. It is
001280:  20 63 6F 6E 6E 65 63 74 65 64 20 74 6F 20 0D 8A     connected to ..
001290:  74 68 65 20 50 53 47 2C 20 6B 65 79 62 6F 61 72    the PSG, keyboar
0012A0:  64 20 61 6E 64 20 63 61 73 73 65 74 74 65 20 72    d and cassette r
0012B0:  65 63 6F 72 64 65 72 2E 0D 0D 50 72 6F 67 72 61    ecorder...Progra
0012C0:  6D 6D 69 6E 67 20 74 68 65 20 38 32 35 35 0D 2D    mming the 8255.-
0012D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0012E0:  2D 2D 2D 0D 0D 54 68 65 20 38 32 35 35 20 68 61    ---..The 8255 ha
0012F0:  73 20 33 20 38 2D 62 69 74 90 20 70 6F 72 74 73    s 3 8-bit. ports
001300:  90 20 28 41 2C 42 90 20 61 6E 64 90 20 43 29 2C    . (A,B. and. C),
001310:  90 20 65 61 63 68 90 20 6F 66 20 77 68 69 63 68    . each. of which
001320:  20 63 61 6E 20 68 61 76 65 20 61 20 0D 8A 64 69     can have a ..di
001330:  66 66 65 72 65 6E 74 20 49 2F 4F 20 53 74 61 74    fferent I/O Stat
001340:  75 73 90 20 28 69 2E 65 2E 90 20 69 6E 70 75 74    us. (i.e.. input
001350:  90 20 6F 72 90 20 6F 75 74 70 75 74 29 2E 90 20    . or. output).. 
001360:  50 6F 72 74 90 20 43 90 20 63 61 6E 20 61 6C 73    Port. C. can als
001370:  6F 20 62 65 20 0D 8A 70 72 6F 67 72 61 6D 6D 65    o be ..programme
001380:  64 20 74 6F 20 6F 70 65 72 61 74 65 20 69 6E 20    d to operate in 
001390:  74 77 6F 20 68 61 6C 76 65 73 2E 20 28 41 73 20    two halves. (As 
0013A0:  74 77 6F 20 73 65 70 61 72 61 74 65 20 34 2D 62    two separate 4-b
0013B0:  69 74 20 70 6F 72 74 73 29 2E 20 0D 0D 54 68 65    it ports). ..The
0013C0:  72 65 20 61 72 65 20 33 90 20 62 61 73 69 63 90    re are 3. basic.
0013D0:  20 6D 6F 64 65 73 90 20 6F 66 90 20 6F 70 65 72     modes. of. oper
0013E0:  61 74 69 6F 6E 90 20 75 6E 64 65 72 90 20 77 68    ation. under. wh
0013F0:  69 63 68 90 20 74 68 65 90 20 70 6F 72 74 73 20    ich. the. ports 
001400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
001410:  01 00 01 00 02 09 4E E5 01 00 C1 02 00 00 00 02    ......N.........
001420:  01 00 C6 02 00 00 00 02 01 00 C2 02 00 00 00 02    ................
001430:  01 00 C7 02 00 00 00 02 01 00 C3 02 00 00 00 02    ................
001440:  01 00 C8 02 00 00 00 02 01 00 C4 02 00 00 00 02    ................
001450:  01 00 C9 02 00 00 00 02 01 00 C5 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:  75 6E 63 74 69 6F 6E 20 74 6F 20 62 65 20 65 78    unction to be ex
001510:  65 63 75 74 65 64 20 62 79 20 74 68 65 90 20 38    ecuted by the. 8
001520:  32 35 35 90 20 69 73 20 64 65 70 65 6E 64 61 6E    255. is dependan
001530:  74 20 6F 6E 20 74 68 65 20 73 74 61 74 65 20 6F    t on the state o
001540:  66 20 0D 8A 62 69 74 20 37 2E 0D 0D 49 66 20 62    f ..bit 7...If b
001550:  69 74 20 37 20 69 73 20 31 2C 20 74 68 65 20 72    it 7 is 1, the r
001560:  65 6D 61 69 6E 69 6E 67 90 20 62 69 74 73 90 20    emaining. bits. 
001570:  61 72 65 20 75 73 65 64 20 74 6F 20 64 65 66 69    are used to defi
001580:  6E 65 20 74 68 65 20 49 2F 4F 20 73 74 61 74 75    ne the I/O statu
001590:  73 2C 20 0D 8A 61 6E 64 20 6F 70 65 72 61 74 69    s, ..and operati
0015A0:  6E 67 20 6D 6F 64 65 20 6F 66 20 65 61 63 68 20    ng mode of each 
0015B0:  70 6F 72 74 2E 20 0D 0D 49 66 20 62 69 74 20 37    port. ..If bit 7
0015C0:  20 69 73 20 30 2C 20 74 68 65 20 72 65 6D 61 69     is 0, the remai
0015D0:  6E 69 6E 67 90 20 62 69 74 73 90 20 61 72 65 90    ning. bits. are.
0015E0:  20 75 73 65 64 20 74 6F 20 64 65 74 65 72 6D 69     used to determi
0015F0:  6E 65 20 77 68 61 74 20 62 69 74 20 69 73 20 0D    ne what bit is .
001600:  8A 73 65 74 20 28 73 65 74 20 74 6F 20 31 29 20    .set (set to 1) 
001610:  6F 72 20 72 65 73 65 74 20 28 73 65 74 20 74 6F    or reset (set to
001620:  20 30 29 20 6F 66 20 70 6F 72 74 20 43 2E 0D 0D     0) of port C...
001630:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001640:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001650:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001660:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001670:  3D 3D 3D 3D 3D 3D 0D 0D 43 6F 6E 66 69 67 75 72    ======..Configur
001680:  61 74 69 6F 6E 20 63 6F 6E 74 72 6F 6C 20 62 79    ation control by
001690:  74 65 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    te.-------------
0016A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 57    -------------..W
0016B0:  68 65 6E 20 62 69 74 20 37 20 69 73 20 73 65 74    hen bit 7 is set
0016C0:  20 74 6F 20 31 2C 20 74 68 65 20 63 6F 6D 6D 61     to 1, the comma
0016D0:  6E 64 20 62 79 74 65 20 6F 70 65 72 61 74 65 73    nd byte operates
0016E0:  20 69 6E 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E     in the followin
0016F0:  67 20 0D 8A 77 61 79 3A 0D 0D 42 69 74 20 37 3A    g ..way:..Bit 7:
001700:  65 20 6D 61 79 20 63 72 61 73 68 2E 20 28 54 68    e may crash. (Th
001710:  65 20 66 69 72 6D 77 61 72 65 90 20 65 78 70 65    e firmware. expe
001720:  63 74 73 90 20 74 68 65 90 20 6F 70 65 72 61 74    cts. the. operat
001730:  69 6E 67 20 6D 6F 64 65 73 20 74 6F 20 62 65 20    ing modes to be 
001740:  0D 8A 74 68 65 20 73 61 6D 65 20 61 73 20 67 69    ..the same as gi
001750:  76 65 6E 20 62 65 6C 6F 77 29 2E 20 0D 0D 50 6F    ven below). ..Po
001760:  72 74 20 41 20 28 50 6F 72 74 20 61 64 64 72 65    rt A (Port addre
001770:  73 73 3A 26 46 34 78 78 29 20 28 49 2F 4F 20 53    ss:&F4xx) (I/O S
001780:  74 61 74 75 73 3A 20 4F 75 74 70 75 74 29 20 28    tatus: Output) (
001790:  4F 70 65 72 61 74 69 6E 67 20 6D 6F 64 65 3A 20    Operating mode: 
0017A0:  30 29 0D 2D 2D 2D 2D 2D 2D 0D 0D 42 69 74 20 37    0).------..Bit 7
0017B0:  3A 20 7D 20 50 53 47 20 64 61 74 61 0D 42 69 74    : } PSG data.Bit
0017C0:  20 36 3A 20 7D 0D 42 69 74 20 35 3A 20 7D 0D 42     6: }.Bit 5: }.B
0017D0:  69 74 20 34 3A 20 7D 0D 42 69 74 20 33 3A 20 7D    it 4: }.Bit 3: }
0017E0:  0D 42 69 74 20 32 3A 20 7D 0D 42 69 74 20 31 3A    .Bit 2: }.Bit 1:
0017F0:  20 7D 0D 42 69 74 20 30 3A 20 7D 0D 0D 3D 3D 3D     }.Bit 0: }..===
001800:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001810:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001820:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001830:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001840:  3D 3D 3D 0D 0D 50 6F 72 74 20 42 20 28 50 6F 72    ===..Port B (Por
001850:  74 20 61 64 64 72 65 73 73 3A 20 26 46 35 78 78    t address: &F5xx
001860:  29 20 28 49 2F 4F 20 53 74 61 74 75 73 3A 20 49    ) (I/O Status: I
001870:  6E 70 75 74 29 20 28 4F 70 65 72 61 74 69 6E 67    nput) (Operating
001880:  20 6D 6F 64 65 3A 20 30 29 0D 2D 2D 2D 2D 2D 2D     mode: 0).------
001890:  0D 0D 42 69 74 90 37 3A 90 43 61 73 73 65 74 74    ..Bit.7:.Cassett
0018A0:  65 20 72 65 61 64 20 64 61 74 61 0D 0D 42 69 74    e read data..Bit
0018B0:  20 36 3A 20 50 72 69 6E 74 65 72 20 63 6F 6E 66     6: Printer conf
0018C0:  69 67 75 72 61 74 69 6F 6E 0D 09 31 3A 20 4E 6F    iguration..1: No
0018D0:  74 2D 72 65 61 64 79 2C 20 20 30 3A 20 52 65 61    t-ready,  0: Rea
0018E0:  64 79 0D 0D 42 69 74 20 35 3A 20 45 78 70 61 6E    dy..Bit 5: Expan
0018F0:  73 69 6F 6E 20 70 65 72 69 70 68 65 72 61 6C 20    sion peripheral 
001900:  20 43 6F 6E 74 72 6F 6C 20 62 79 74 65 20 66 75     Control byte fu
001910:  6E 63 74 69 6F 6E 20 28 31 3D 43 6F 6E 66 69 67    nction (1=Config
001920:  75 72 61 74 69 6F 6E 20 63 6F 6E 74 72 6F 6C 20    uration control 
001930:  62 79 74 65 29 0D 0D 42 69 74 20 36 3A 20 7D 20    byte)..Bit 6: } 
001940:  4F 70 65 72 61 74 69 6E 67 20 4D 6F 64 65 20 28    Operating Mode (
001950:  50 6F 72 74 20 41 20 61 6E 64 20 50 6F 72 74 20    Port A and Port 
001960:  43 20 75 70 70 65 72 29 0D 42 69 74 20 35 3A 20    C upper).Bit 5: 
001970:  7D 20 0D 0D 42 69 74 20 34 3A 20 50 6F 72 74 20    } ..Bit 4: Port 
001980:  41 20 49 2F 4F 20 53 74 61 74 75 73 0D 09 20 30    A I/O Status.. 0
001990:  3A 20 4F 75 74 70 75 74 2C 20 31 3A 20 49 6E 70    : Output, 1: Inp
0019A0:  75 74 0D 0D 42 69 74 20 33 3A 20 50 6F 72 74 20    ut..Bit 3: Port 
0019B0:  43 20 28 75 70 70 65 72 29 20 49 2F 4F 20 53 74    C (upper) I/O St
0019C0:  61 74 75 73 20 0D 09 20 30 3A 20 4F 75 74 70 75    atus .. 0: Outpu
0019D0:  74 2C 20 31 3A 20 49 6E 70 75 74 0D 0D 42 69 74    t, 1: Input..Bit
0019E0:  20 32 3A 20 4F 70 65 72 61 74 69 6E 67 20 4D 6F     2: Operating Mo
0019F0:  64 65 20 73 65 6C 65 63 74 69 6F 6E 20 28 50 6F    de selection (Po
001A00:  72 74 20 42 20 61 6E 64 20 50 6F 72 74 20 43 20    rt B and Port C 
001A10:  6C 6F 77 65 72 29 0D 0D 42 69 74 20 31 3A 20 50    lower)..Bit 1: P
001A20:  6F 72 74 20 42 20 49 2F 4F 20 53 74 61 74 75 73    ort B I/O Status
001A30:  0D 09 30 3A 20 4F 75 74 70 75 74 2C 20 31 3A 20    ..0: Output, 1: 
001A40:  49 6E 70 75 74 0D 0D 42 69 74 20 30 3A 20 50 6F    Input..Bit 0: Po
001A50:  72 74 20 43 20 28 6C 6F 77 65 72 29 20 49 2F 4F    rt C (lower) I/O
001A60:  20 53 74 61 74 75 73 0D 09 30 3A 20 4F 75 74 70     Status..0: Outp
001A70:  75 74 2C 20 31 3A 20 49 6E 70 75 74 0D 0D 50 6F    ut, 1: Input..Po
001A80:  72 74 20 41 20 61 6E 64 20 50 6F 72 74 20 43 20    rt A and Port C 
001A90:  28 75 70 70 65 72 29 20 4F 70 65 72 61 74 69 6E    (upper) Operatin
001AA0:  67 20 6D 6F 64 65 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D    g mode.---------
001AB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
001AC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 42    -------------..B
001AD0:  69 74 20 36 09 09 42 69 74 20 35 09 09 4D 6F 64    it 6..Bit 5..Mod
001AE0:  65 20 73 65 6C 65 63 74 69 6F 6E 0D 2D 2D 2D 2D    e selection.----
001AF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
001B00:  64 65 74 65 63 74 0D 09 31 3A 20 45 78 70 61 6E    detect..1: Expan
001B10:  73 69 6F 6E 20 70 65 72 69 70 68 65 72 61 6C 20    sion peripheral 
001B20:  70 72 65 73 65 6E 74 2C 20 30 3A 20 4E 6F 74 20    present, 0: Not 
001B30:  70 72 65 73 65 6E 74 0D 0D 42 69 74 20 34 3A 20    present..Bit 4: 
001B40:  53 63 72 65 65 6E 20 72 65 66 72 65 73 68 20 66    Screen refresh f
001B50:  72 65 71 75 65 6E 63 79 20 28 64 65 66 69 6E 65    requency (define
001B60:  64 20 62 79 20 68 61 72 64 77 61 72 65 29 0D 09    d by hardware)..
001B70:  31 3A 20 35 30 48 7A 20 20 20 20 30 3A 20 36 30    1: 50Hz    0: 60
001B80:  48 7A 0D 0D 42 69 74 20 33 3A 20 7D 20 43 6F 6D    Hz..Bit 3: } Com
001B90:  70 75 74 65 72 20 6E 61 6D 65 20 6F 6E 20 70 6F    puter name on po
001BA0:  77 65 72 2D 75 70 2E 0D 42 69 74 20 32 3A 20 7D    wer-up..Bit 2: }
001BB0:  0D 42 69 74 20 31 3A 20 7D 0D 0D 42 69 74 20 30    .Bit 1: }..Bit 0
001BC0:  3A 20 56 53 59 4E 43 20 73 74 61 74 75 73 20 28    : VSYNC status (
001BD0:  46 72 61 6D 65 20 66 6C 79 62 61 63 6B 20 73 74    Frame flyback st
001BE0:  61 74 75 73 29 0D 09 31 3A 20 56 53 59 4E 43 20    atus)..1: VSYNC 
001BF0:  6F 63 63 75 72 65 64 2C 20 30 3A 20 6E 6F 20 56    occured, 0: no V
001C00:  53 59 4E 43 0D 0D 54 61 62 6C 65 20 73 68 6F 77    SYNC..Table show
001C10:  69 6E 67 20 43 6F 6D 70 75 74 65 72 20 6E 61 6D    ing Computer nam
001C20:  65 20 6F 6E 20 70 6F 77 65 72 2D 75 70 3A 0D 0D    e on power-up:..
001C30:  42 69 74 20 33 20 20 20 20 20 20 42 69 74 20 32    Bit 3      Bit 2
001C40:  20 20 20 20 42 69 74 20 31 20 20 20 20 43 6F 6D        Bit 1    Com
001C50:  70 75 74 65 72 20 6E 61 6D 65 0D 2D 2D 2D 2D 2D    puter name.-----
001C60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
001C70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
001C80:  2D 2D 2D 0D 0D 20 20 20 30 20 20 20 20 20 20 20    ---..   0       
001C90:  30 20 20 20 20 20 20 30 20 20 20 20 20 20 20 20    0      0        
001CA0:  49 73 70 0D 20 20 20 30 20 20 20 20 20 20 20 30    Isp.   0       0
001CB0:  20 20 20 20 20 20 31 20 20 20 20 20 20 20 20 54          1        T
001CC0:  72 69 75 6D 70 68 0D 20 20 20 30 20 20 20 20 20    riumph.   0     
001CD0:  20 20 31 20 20 20 20 20 20 30 20 20 20 20 20 20      1      0      
001CE0:  20 20 53 61 69 73 68 6F 0D 20 20 20 30 20 20 20      Saisho.   0   
001CF0:  20 20 20 20 31 20 20 20 20 20 20 31 20 20 20 20        1      1    
001D00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
001D10:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 20 30 09 09    ----------.  0..
001D20:  20 20 30 09 09 4D 6F 64 65 20 30 09 0D 20 20 30      0..Mode 0..  0
001D30:  09 09 20 20 31 09 09 4D 6F 64 65 20 31 0D 20 20    ..  1..Mode 1.  
001D40:  31 09 09 20 20 30 09 09 4D 6F 64 65 20 32 0D 20    1..  0..Mode 2. 
001D50:  20 31 09 09 20 20 31 09 09 4D 6F 64 65 20 32 0D     1..  1..Mode 2.
001D60:  0D 50 6F 72 74 20 42 20 61 6E 64 20 50 6F 72 74    .Port B and Port
001D70:  20 43 20 28 6C 6F 77 65 72 29 20 6F 70 65 72 61     C (lower) opera
001D80:  74 69 6E 67 20 6D 6F 64 65 0D 2D 2D 2D 2D 2D 2D    ting mode.------
001D90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
001DA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
001DB0:  2D 2D 0D 0D 42 69 74 20 32 09 09 4D 6F 64 65 20    --..Bit 2..Mode 
001DC0:  53 65 6C 65 63 74 69 6F 6E 0D 2D 2D 2D 2D 2D 2D    Selection.------
001DD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
001DE0:  2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 30 09 09 4D    --------..  0..M
001DF0:  6F 64 65 20 30 0D 20 20 31 09 09 4D 6F 64 65 20    ode 0.  1..Mode 
001E00:  31 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    1..=============
001E10:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001E20:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001E30:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001E40:  3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 42 69 74 20 53    =========..Bit S
001E50:  65 74 2F 52 65 73 65 74 20 63 6F 6E 74 72 6F 6C    et/Reset control
001E60:  20 62 79 74 65 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D     byte.----------
001E70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
001E80:  0D 0D 57 68 65 6E 20 62 69 74 20 37 20 69 73 20    ..When bit 7 is 
001E90:  73 65 74 20 74 6F 90 20 30 2C 90 20 74 68 65 90    set to. 0,. the.
001EA0:  20 63 6F 6E 74 72 6F 6C 90 20 62 79 74 65 20 6F     control. byte o
001EB0:  70 65 72 61 74 65 73 20 69 6E 20 74 68 65 20 66    perates in the f
001EC0:  6F 6C 6C 6F 77 69 6E 67 20 0D 8A 77 61 79 3A 0D    ollowing ..way:.
001ED0:  0D 42 69 74 20 37 3A 20 43 6F 6E 74 72 6F 6C 20    .Bit 7: Control 
001EE0:  62 79 74 65 20 66 75 6E 63 74 69 6F 6E 20 28 30    byte function (0
001EF0:  3D 42 69 74 20 53 65 74 2F 52 65 73 65 74 20 63    =Bit Set/Reset c
001F00:  20 20 20 20 53 6F 6C 61 76 6F 78 0D 20 20 20 31        Solavox.   1
001F10:  20 20 20 20 20 20 20 30 20 20 20 20 20 20 30 20           0      0 
001F20:  20 20 20 20 20 20 20 41 77 61 0D 20 20 20 31 20           Awa.   1 
001F30:  20 20 20 20 20 20 30 20 20 20 20 20 20 31 20 20          0      1  
001F40:  20 20 20 20 20 20 53 63 68 6E 65 69 64 65 72 0D          Schneider.
001F50:  20 20 20 31 20 20 20 20 20 20 20 31 20 20 20 20       1       1    
001F60:  20 20 30 20 20 20 20 20 20 20 20 4F 72 69 6F 6E      0        Orion
001F70:  0D 20 20 20 31 20 20 20 20 20 20 20 31 20 20 20    .   1       1   
001F80:  20 20 20 31 20 20 20 20 20 20 20 20 41 6D 73 74       1        Amst
001F90:  72 61 64 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    rad..===========
001FA0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001FB0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001FC0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
001FD0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 50 6F 72    ===========..Por
001FE0:  74 20 43 20 28 50 6F 72 74 20 61 64 64 72 65 73    t C (Port addres
001FF0:  73 3A 20 26 46 36 78 78 29 20 28 49 2F 4F 20 53    s: &F6xx) (I/O S
002000:  74 61 74 75 73 3A 20 4F 75 74 70 75 74 29 20 28    tatus: Output) (
002010:  4F 70 65 72 61 74 69 6E 67 20 6D 6F 64 65 3A 20    Operating mode: 
002020:  30 29 0D 2D 2D 2D 2D 2D 2D 0D 0D 42 69 74 20 37    0).------..Bit 7
002030:  3A 20 7D 20 50 53 47 20 63 6F 6E 74 72 6F 6C 0D    : } PSG control.
002040:  42 69 74 20 36 3A 20 7D 0D 0D 42 69 74 90 35 3A    Bit 6: }..Bit.5:
002050:  20 43 61 73 73 65 74 74 65 20 77 72 69 74 65 20     Cassette write 
002060:  64 61 74 61 0D 0D 42 69 74 20 34 3A 20 43 61 73    data..Bit 4: Cas
002070:  73 65 74 74 65 20 6D 6F 74 6F 72 20 63 6F 6E 74    sette motor cont
002080:  72 6F 6C 0D 20 20 20 20 20 20 20 20 31 3A 20 54    rol.        1: T
002090:  75 72 6E 20 6D 6F 74 6F 72 20 6F 6E 2C 20 30 3A    urn motor on, 0:
0020A0:  20 54 75 72 6E 20 6D 6F 74 6F 72 20 6F 66 66 0D     Turn motor off.
0020B0:  8A 0D 42 69 74 20 33 3A 20 7D 20 4B 65 79 62 6F    ..Bit 3: } Keybo
0020C0:  61 72 64 20 6C 69 6E 65 20 74 6F 20 62 65 20 73    ard line to be s
0020D0:  63 61 6E 6E 65 64 20 28 30 2D 31 30 29 0D 42 69    canned (0-10).Bi
0020E0:  74 20 32 3A 20 7D 0D 42 69 74 20 31 3A 20 7D 0D    t 2: }.Bit 1: }.
0020F0:  42 69 74 20 30 3A 20 7D 0D 0D 3D 3D 3D 3D 3D 3D    Bit 0: }..======
002100:  6F 6E 74 72 6F 6C 20 62 79 74 65 29 0D 0D 42 69    ontrol byte)..Bi
002110:  74 20 36 3A 20 7D 20 4E 6F 74 20 75 73 65 64 2E    t 6: } Not used.
002120:  20 28 73 65 6E 64 20 30 29 0D 42 69 74 20 35 3A     (send 0).Bit 5:
002130:  20 7D 0D 42 69 74 20 34 3A 20 7D 0D 0D 42 69 74     }.Bit 4: }..Bit
002140:  20 33 3A 20 7D 20 42 69 74 20 74 6F 20 63 68 61     3: } Bit to cha
002150:  6E 67 65 2E 0D 42 69 74 20 32 3A 20 7D 0D 42 69    nge..Bit 2: }.Bi
002160:  74 20 31 3A 20 7D 0D 0D 42 69 74 20 30 3A 20 42    t 1: }..Bit 0: B
002170:  69 74 20 6F 70 65 72 61 74 69 6F 6E 0D 09 31 3A    it operation..1:
002180:  20 53 65 74 20 62 69 74 20 28 6D 61 6B 65 20 62     Set bit (make b
002190:  69 74 3D 31 29 2C 20 30 3A 20 52 65 73 65 74 20    it=1), 0: Reset 
0021A0:  62 69 74 20 28 6D 61 6B 65 20 62 69 74 3D 30 29    bit (make bit=0)
0021B0:  0D 0D 54 61 62 6C 65 20 74 6F 20 73 68 6F 77 20    ..Table to show 
0021C0:  68 6F 77 20 62 69 74 20 74 6F 20 63 68 61 6E 67    how bit to chang
0021D0:  65 20 69 73 20 63 6F 64 65 64 3A 0D 0D 42 69 74    e is coded:..Bit
0021E0:  20 33 09 09 42 69 74 20 32 09 09 42 69 74 20 31     3..Bit 2..Bit 1
0021F0:  09 09 42 69 74 20 73 65 6C 65 63 74 65 64 0D 2D    ..Bit selected.-
002200:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
002210:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
002220:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
002230:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 30 09 09    -----------. 0..
002240:  20 20 30 09 09 20 20 30 09 09 42 69 74 20 30 0D      0..  0..Bit 0.
002250:  20 30 09 09 20 20 30 09 09 20 20 31 09 09 42 69     0..  0..  1..Bi
002260:  74 20 31 0D 20 30 09 09 20 20 31 09 09 20 20 30    t 1. 0..  1..  0
002270:  09 09 42 69 74 20 32 0D 20 30 09 09 20 20 31 09    ..Bit 2. 0..  1.
002280:  09 20 20 31 09 09 42 69 74 20 33 0D 20 31 09 09    .  1..Bit 3. 1..
002290:  20 20 30 09 09 20 20 30 09 09 42 69 74 20 34 0D      0..  0..Bit 4.
0022A0:  20 31 09 09 20 20 30 09 09 20 20 31 09 09 42 69     1..  0..  1..Bi
0022B0:  74 20 35 0D 20 31 09 09 20 20 31 09 09 20 20 30    t 5. 1..  1..  0
0022C0:  09 09 42 69 74 20 36 0D 20 31 09 09 20 20 31 09    ..Bit 6. 1..  1.
0022D0:  09 20 20 31 09 09 42 69 74 20 37 0D 0D 3D 3D 3D    .  1..Bit 7..===
0022E0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0022F0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002300:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002310:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002320:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002330:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002340:  0D 0D 50 72 6F 67 72 61 6D 6D 69 6E 67 20 45 78    ..Programming Ex
002350:  61 6D 70 6C 65 73 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D    amples.---------
002360:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 31 29 20    -----------..1) 
002370:  55 73 69 6E 67 20 74 68 65 20 63 6F 6E 74 72 6F    Using the contro
002380:  6C 20 62 79 74 65 0D 0D 61 29 20 53 65 74 74 69    l byte..a) Setti
002390:  6E 67 20 62 69 74 20 37 20 6F 66 20 70 6F 72 74    ng bit 7 of port
0023A0:  20 43 20 74 6F 20 31 2C 0D 0D 4C 44 20 42 2C 26     C to 1,..LD B,&
0023B0:  46 37 09 09 3B 38 32 35 35 20 43 6F 6E 74 72 6F    F7..;8255 Contro
0023C0:  6C 20 70 6F 72 74 0D 4C 44 20 41 2C 25 30 30 30    l port.LD A,%000
0023D0:  30 31 31 31 31 09 09 3B 42 69 74 20 53 65 74 2F    01111..;Bit Set/
0023E0:  72 65 73 65 74 20 66 75 6E 63 74 69 6F 6E 0D 4F    reset function.O
0023F0:  55 54 20 28 43 29 2C 41 09 09 3B 53 65 6E 64 20    UT (C),A..;Send 
002400:  69 74 20 74 6F 20 38 32 35 35 0D 52 45 54 0D 0D    it to 8255.RET..
002410:  62 29 20 53 65 74 20 70 6F 72 74 20 41 90 20 74    b) Set port A. t
002420:  6F 90 20 69 6E 70 75 74 2C 90 20 6F 70 65 72 61    o. input,. opera
002430:  74 69 6E 67 90 20 69 6E 90 20 6D 6F 64 65 90 20    ting. in. mode. 
002440:  30 2C 90 20 70 6F 72 74 90 20 42 20 74 6F 20 6F    0,. port. B to o
002450:  75 74 70 75 74 2C 20 0D 8A 6F 70 65 72 61 74 69    utput, ..operati
002460:  6E 67 20 69 6E 20 6D 6F 64 65 20 30 20 61 6E 64    ng in mode 0 and
002470:  20 70 6F 72 74 20 43 20 74 6F 20 69 6E 70 75 74     port C to input
002480:  2C 20 6F 70 65 72 61 74 69 6E 67 20 69 6E 20 6D    , operating in m
002490:  6F 64 65 20 30 2E 0D 0D 4C 44 20 42 2C 26 46 37    ode 0...LD B,&F7
0024A0:  09 09 3B 38 32 35 35 20 43 6F 6E 74 72 6F 6C 20    ..;8255 Control 
0024B0:  70 6F 72 74 0D 4C 44 20 41 2C 25 31 30 30 31 31    port.LD A,%10011
0024C0:  30 30 31 09 09 3B 43 6F 6E 66 69 67 75 72 61 74    001..;Configurat
0024D0:  69 6F 6E 20 66 75 6E 63 74 69 6F 6E 0D 4F 55 54    ion function.OUT
0024E0:  20 28 43 29 2C 41 09 09 3B 53 65 6E 64 20 69 74     (C),A..;Send it
0024F0:  20 74 6F 20 38 32 35 35 0D 52 45 54 0D 0D 3D 3D     to 8255.RET..==
002500:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002510:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002520:  3D 3D 0D 0D 50 6F 72 74 20 55 73 61 67 65 0D 2D    ==..Port Usage.-
002530:  2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 46 6F 72 20 65    ---------..For e
002540:  61 63 68 20 70 6F 72 74 2C 20 74 68 65 20 70 6F    ach port, the po
002550:  72 74 20 61 64 64 72 65 73 73 90 20 28 61 74 90    rt address. (at.
002560:  20 77 68 69 63 68 90 20 74 68 65 20 70 6F 72 74     which. the port
002570:  20 63 61 6E 20 62 65 20 61 63 63 65 73 73 65 64     can be accessed
002580:  29 20 0D 8A 69 74 27 73 20 6E 6F 72 6D 61 6C 20    ) ..it's normal 
002590:  49 2F 4F 20 53 74 61 74 75 73 20 28 75 6E 6C 65    I/O Status (unle
0025A0:  73 73 90 20 63 68 61 6E 67 65 64 90 20 62 79 90    ss. changed. by.
0025B0:  20 74 68 65 20 75 73 65 72 29 2C 20 69 74 27 73     the user), it's
0025C0:  20 6F 70 65 72 61 74 69 6E 67 20 0D 8A 6D 6F 64     operating ..mod
0025D0:  65 20 28 75 6E 6C 65 73 73 20 63 68 61 6E 67 65    e (unless change
0025E0:  64 20 62 79 20 74 68 65 20 75 73 65 72 29 20 61    d by the user) a
0025F0:  72 65 20 67 69 76 65 6E 2E 0D 0D 46 6F 72 20 6D    re given...For m
002600:  6F 72 65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20    ore information 
002610:  6F 6E 20 61 90 20 70 61 72 74 69 63 75 6C 61 72    on a. particular
002620:  90 20 66 75 6E 63 74 69 6F 6E 90 20 6F 66 20 65    . function. of e
002630:  61 63 68 20 70 6F 72 74 2C 20 73 65 65 20 74 68    ach port, see th
002640:  65 20 0D 8A 61 70 70 72 6F 70 69 61 74 65 20 70    e ..appropiate p
002650:  61 72 74 20 6F 66 20 74 68 65 20 43 50 43 20 47    art of the CPC G
002660:  75 69 64 65 2E 0D 0D 4E 4F 54 45 3A 20 49 66 20    uide...NOTE: If 
002670:  79 6F 75 20 61 72 65 20 75 73 69 6E 67 20 74 68    you are using th
002680:  65 20 66 69 72 6D 77 61 72 65 2C 20 61 6C 77 61    e firmware, alwa
002690:  79 73 20 72 65 74 75 72 6E 20 74 68 65 20 6F 70    ys return the op
0026A0:  65 72 61 74 69 6E 67 20 6D 6F 64 65 73 20 0D 8A    erating modes ..
0026B0:  61 6E 64 20 49 2F 4F 20 73 74 61 74 75 73 20 6F    and I/O status o
0026C0:  66 20 74 68 65 20 70 6F 72 74 73 20 75 73 65 64    f the ports used
0026D0:  90 20 74 6F 20 74 68 65 69 72 20 73 74 61 74 75    . to their statu
0026E0:  73 20 62 65 6C 6F 77 2C 20 6F 74 68 65 72 77 69    s below, otherwi
0026F0:  73 65 20 74 68 65 20 0D 8A 66 69 72 6D 77 61 72    se the ..firmwar
002700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
002710:  02 00 01 00 02 09 4E E5 02 00 C1 02 00 00 00 02    ......N.........
002720:  02 00 C6 02 00 00 00 02 02 00 C2 02 00 00 00 02    ................
002730:  02 00 C7 02 00 00 00 02 02 00 C3 02 00 00 00 02    ................
002740:  02 00 C8 02 00 00 00 02 02 00 C4 02 00 00 00 02    ................
002750:  02 00 C9 02 00 00 00 02 02 00 C5 02 00 00 00 02    ................
002760:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002770:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002780:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002790:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0027F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
002800:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002810:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002820:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002830:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002840:  3D 3D 3D 3D 0D 0D 32 29 20 55 73 69 6E 67 20 70    ====..2) Using p
002850:  6F 72 74 20 41 2F 42 2F 43 2C 0D 0D 49 6E 20 74    ort A/B/C,..In t
002860:  68 69 73 20 65 78 61 6D 70 6C 65 2C 20 70 6F 72    his example, por
002870:  74 20 41 20 69 73 20 73 65 74 20 74 6F 90 20 6F    t A is set to. o
002880:  75 74 70 75 74 2C 20 70 6F 72 74 20 42 20 69 73    utput, port B is
002890:  20 73 65 74 20 74 6F 20 69 6E 70 75 74 2C 20 61     set to input, a
0028A0:  6E 64 20 0D 8A 70 6F 72 74 20 43 20 69 73 20 73    nd ..port C is s
0028B0:  65 74 20 74 6F 20 6F 75 74 70 75 74 2C 20 61 6E    et to output, an
0028C0:  64 20 74 68 65 79 20 61 72 65 20 61 6C 6C 20 6F    d they are all o
0028D0:  70 65 72 61 74 69 6E 67 20 69 6E 20 6D 6F 64 65    perating in mode
0028E0:  20 30 2E 0D 0D 57 65 20 77 69 6C 6C 20 6F 6E 6C     0...We will onl
0028F0:  79 20 62 65 20 75 73 69 6E 67 20 70 6F 72 74 20    y be using port 
002900:  41 20 66 6F 72 20 74 68 65 73 65 20 65 78 61 6D    A for these exam
002910:  70 6C 65 73 2E 0D 0D 61 29 20 52 65 61 64 69 6E    ples...a) Readin
002920:  67 20 66 72 6F 6D 20 70 6F 72 74 20 41 2C 0D 0D    g from port A,..
002930:  09 09 09 3B 53 65 74 20 70 6F 72 74 20 41 20 74    ...;Set port A t
002940:  6F 20 69 6E 70 75 74 0D 20 20 20 20 20 20 20 20    o input.        
002950:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
002960:  0D 4C 44 20 42 2C 26 46 37 09 09 3B 38 32 35 35    .LD B,&F7..;8255
002970:  20 43 6F 6E 74 72 6F 6C 20 70 6F 72 74 0D 4C 44     Control port.LD
002980:  20 41 2C 25 31 30 30 31 30 30 31 30 09 09 3B 43     A,%10010010..;C
002990:  6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 66 75 6E    onfiguration fun
0029A0:  63 74 69 6F 6E 0D 4F 55 54 20 28 43 29 2C 41 09    ction.OUT (C),A.
0029B0:  09 3B 53 65 6E 64 20 74 6F 20 38 32 35 35 0D 0D    .;Send to 8255..
0029C0:  4C 44 20 42 2C 26 46 34 09 09 3B 50 6F 72 74 20    LD B,&F4..;Port 
0029D0:  41 20 70 6F 72 74 20 61 64 64 72 65 73 73 0D 49    A port address.I
0029E0:  4E 20 45 2C 28 43 29 09 09 3B 47 65 74 20 62 79    N E,(C)..;Get by
0029F0:  74 65 20 66 72 6F 6D 20 70 6F 72 74 0D 0D 09 09    te from port....
002A00:  63 74 69 6F 6E 2E 0D 0D 4D 6F 64 65 20 30 20 2D    ction...Mode 0 -
002A10:  20 42 61 73 69 63 20 49 6E 70 75 74 2F 4F 75 74     Basic Input/Out
002A20:  70 75 74 0D 4D 6F 64 65 20 31 20 2D 20 53 74 72    put.Mode 1 - Str
002A30:  6F 62 65 64 20 49 6E 70 75 74 2F 4F 75 74 70 75    obed Input/Outpu
002A40:  74 20 2A 2A 4E 4F 54 20 55 53 45 44 20 42 59 20    t **NOT USED BY 
002A50:  43 50 43 2A 2A 0D 4D 6F 64 65 20 32 20 2D 20 42    CPC**.Mode 2 - B
002A60:  69 2D 44 69 72 65 63 74 69 6F 6E 61 6C 20 42 75    i-Directional Bu
002A70:  73 20 20 20 2A 2A 4E 4F 54 20 55 53 45 44 20 42    s   **NOT USED B
002A80:  59 20 43 50 43 2A 2A 0D 0D 49 6E 20 73 6F 6D 65    Y CPC**..In some
002A90:  20 6F 66 20 74 68 65 73 65 20 6D 6F 64 65 73 20     of these modes 
002AA0:  70 6F 72 74 20 20 43 20 20 69 73 20 20 75 73 65    port  C  is  use
002AB0:  64 20 20 61 73 20 61 20 63 6F 6E 74 72 6F 6C 2F    d  as a control/
002AC0:  73 74 61 74 75 73 20 70 6F 72 74 20 66 6F 72 0D    status port for.
002AD0:  70 6F 72 74 20 41 20 6F 72 20 42 2E 20 49 74 20    port A or B. It 
002AE0:  63 61 6E 20 20 62 65 20 20 75 73 65 64 20 20 74    can  be  used  t
002AF0:  6F 20 20 63 6F 6E 66 69 72 6D 20 77 68 65 6E 20    o  confirm when 
002B00:  64 61 74 61 20 74 72 61 6E 73 66 65 72 20 6D 61    data transfer ma
002B10:  79 20 74 61 6B 65 0D 70 6C 61 63 65 2C 20 61 6E    y take.place, an
002B20:  64 20 72 65 66 6C 65 63 74 20 61 6E 79 20 6F 74    d reflect any ot
002B30:  68 65 72 20 66 6C 61 67 73 2E 20 54 68 65 20 38    her flags. The 8
002B40:  32 35 35 20 50 50 49 20 69 73 20 74 68 65 72 65    255 PPI is there
002B50:  66 6F 72 65 20 73 75 70 70 6C 69 65 64 0D 77 69    fore supplied.wi
002B60:  74 68 20 74 68 65 20 61 64 64 65 64 20 6F 70 74    th the added opt
002B70:  69 6F 6E 20 66 6F 72 20 74 68 65 20 75 73 65 72    ion for the user
002B80:  20 74 6F 20 73 65 74 20 6F 72 20 72 65 73 65 74     to set or reset
002B90:  20 61 6E 79 20 69 6E 64 69 76 69 64 75 61 6C 20     any individual 
002BA0:  62 69 74 73 0D 69 6E 20 70 6F 72 74 20 43 2E 0D    bits.in port C..
002BB0:  0D 54 68 65 20 49 2F 4F 20 73 74 61 74 75 73 2C    .The I/O status,
002BC0:  20 6D 6F 64 65 20 6F 66 20 6F 70 65 72 61 74 69     mode of operati
002BD0:  6F 6E 20 20 61 6E 64 20 20 62 69 74 20 20 73 65    on  and  bit  se
002BE0:  74 74 69 6E 67 20 69 73 20 64 65 66 69 6E 65 64    tting is defined
002BF0:  20 62 79 20 74 68 65 0D 38 32 35 35 20 50 50 49     by the.8255 PPI
002C00:  09 3B 52 65 67 69 73 74 65 72 20 45 20 68 6F 6C    .;Register E hol
002C10:  64 73 20 76 61 6C 75 65 20 66 72 6F 6D 20 70 6F    ds value from po
002C20:  72 74 0D 0D 09 09 09 3B 52 65 74 75 72 6E 20 70    rt.....;Return p
002C30:  6F 72 74 20 49 2F 4F 20 73 74 61 74 75 73 20 61    ort I/O status a
002C40:  6E 64 20 6F 70 65 72 61 74 69 6E 67 20 6D 6F 64    nd operating mod
002C50:  65 73 0D 09 09 09 3B 74 6F 20 70 72 65 76 69 6F    es....;to previo
002C60:  75 73 20 73 65 74 74 69 6E 67 73 2E 0D 0D 4C 44    us settings...LD
002C70:  20 42 2C 26 46 37 09 09 3B 38 32 35 35 20 43 6F     B,&F7..;8255 Co
002C80:  6E 74 72 6F 6C 20 70 6F 72 74 0D 4C 44 20 41 2C    ntrol port.LD A,
002C90:  25 31 30 30 30 30 30 31 30 09 09 3B 43 6F 6E 66    %10000010..;Conf
002CA0:  69 67 75 72 61 74 69 6F 6E 20 66 75 6E 63 74 69    iguration functi
002CB0:  6F 6E 0D 4F 55 54 20 28 43 29 2C 41 09 09 3B 53    on.OUT (C),A..;S
002CC0:  65 6E 64 20 74 6F 20 38 32 35 35 0D 52 45 54 0D    end to 8255.RET.
002CD0:  0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    .===============
002CE0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002CF0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002D00:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
002D10:  3D 3D 3D 3D 3D 3D 3D 0D 0D 62 29 20 57 72 69 74    =======..b) Writ
002D20:  69 6E 67 20 74 6F 20 70 6F 72 74 20 41 2C 0D 0D    ing to port A,..
002D30:  09 09 09 3B 53 65 74 20 70 6F 72 74 20 41 20 74    ...;Set port A t
002D40:  6F 20 6F 75 74 70 75 74 0D 20 20 20 20 20 20 20    o output.       
002D50:  20 20 20 20 20 20 20 20 20 0D 09 09 09 3B 28 4E             ....;(N
002D60:  6F 74 65 20 74 68 65 20 6E 65 78 74 20 66 65 77    ote the next few
002D70:  20 6C 69 6E 65 73 20 61 72 65 20 6E 6F 74 20 6E     lines are not n
002D80:  65 63 65 73 73 61 72 79 0D 09 09 09 3B 61 73 20    ecessary....;as 
002D90:  70 6F 72 74 20 41 20 69 73 20 61 6C 72 65 61 64    port A is alread
002DA0:  79 20 61 63 74 69 6E 67 20 61 73 20 6F 75 74 70    y acting as outp
002DB0:  75 74 2C 20 68 6F 77 65 76 65 72 0D 09 09 09 3B    ut, however....;
002DC0:  69 74 20 69 73 20 67 69 76 65 6E 20 68 65 72 65    it is given here
002DD0:  20 6A 75 73 74 20 74 6F 20 6D 61 6B 65 20 74 68     just to make th
002DE0:  65 20 65 78 61 6D 70 6C 65 0D 09 09 09 3B 6D 6F    e example....;mo
002DF0:  72 65 20 75 6E 64 65 72 73 74 61 6E 64 61 62 6C    re understandabl
002E00:  20 63 6F 6E 74 72 6F 6C 20 20 62 79 74 65 2E 20     control  byte. 
002E10:  20 28 54 68 65 20 20 63 6F 6E 74 72 6F 6C 20 20     (The  control  
002E20:  62 79 74 65 20 20 69 73 20 20 61 63 63 65 73 73    byte  is  access
002E30:  65 64 20 20 75 73 69 6E 67 20 70 6F 72 74 0D 26    ed  using port.&
002E40:  46 37 78 78 2E 28 38 32 35 35 20 43 6F 6E 74 72    F7xx.(8255 Contr
002E50:  6F 6C 20 70 6F 72 74 29 29 0D 0D 54 68 65 20 70    ol port))..The p
002E60:  6F 72 74 73 20 6D 61 79 20 62 65 20 61 63 63 65    orts may be acce
002E70:  73 73 65 64 20 73 65 70 61 72 61 74 65 6C 79 20    ssed separately 
002E80:  62 79 20 74 68 65 20 43 50 55 2E 0D 0D 50 6F 72    by the CPU...Por
002E90:  74 20 41 20 69 73 20 61 63 63 65 73 73 65 64 20    t A is accessed 
002EA0:  75 73 69 6E 67 20 70 6F 72 74 20 26 46 34 78 78    using port &F4xx
002EB0:  2E 0D 50 6F 72 74 20 42 20 69 73 20 61 63 63 65    ..Port B is acce
002EC0:  73 73 65 64 20 75 73 69 6E 67 20 70 6F 72 74 20    ssed using port 
002ED0:  26 46 35 78 78 2E 0D 50 6F 72 74 20 43 20 69 73    &F5xx..Port C is
002EE0:  20 61 63 63 65 73 73 65 64 20 75 73 69 6E 67 20     accessed using 
002EF0:  70 6F 72 74 20 26 46 36 78 78 2E 0D 0D 4E 4F 54    port &F6xx...NOT
002F00:  45 3A 0D 0D 4D 6F 64 65 20 30 20 6F 70 65 72 61    E:..Mode 0 opera
002F10:  74 69 6F 6E 3A 0D 0D 4D 6F 64 65 20 30 20 6F 70    tion:..Mode 0 op
002F20:  65 72 61 74 69 6F 6E 20 64 6F 65 73 20 6E 6F 74    eration does not
002F30:  20 72 65 71 75 69 72 65 20 20 6F 74 68 65 72 20     require  other 
002F40:  20 70 6F 72 74 73 20 20 74 6F 20 62 65 20 75 73     ports  to be us
002F50:  65 64 20 74 6F 20 63 6F 6E 74 72 6F 6C 0D 64 61    ed to control.da
002F60:  74 61 20 74 72 61 6E 73 66 65 72 2E 20 44 61 74    ta transfer. Dat
002F70:  61 20 6D 61 79 20 6F 6E 6C 79 20 62 65 20 73 65    a may only be se
002F80:  6E 74 20 74 6F 20 20 61 20 70 6F 72 74 20 69 66    nt to  a port if
002F90:  20 74 68 65 20 70 6F 72 74 20 69 73 20 64 65 66     the port is def
002FA0:  69 6E 65 64 0D 61 73 20 6F 75 74 70 75 74 2C 20    ined.as output, 
002FB0:  61 6E 64 20 64 61 74 61 20 6D 61 79 20 6F 6E 6C    and data may onl
002FC0:  79 20 62 65 20 72 65 61 64 20 20 66 72 6F 6D 20    y be read  from 
002FD0:  61 20 70 6F 72 74 20 77 68 65 6E 20 74 68 65 20    a port when the 
002FE0:  70 6F 72 74 20 69 73 20 73 65 74 0D 74 6F 20 69    port is set.to i
002FF0:  6E 70 75 74 2E 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D    nput...=========
003000:  65 29 0D 0D 4C 44 20 42 2C 26 46 37 09 09 3B 38    e)..LD B,&F7..;8
003010:  32 35 35 20 43 6F 6E 74 72 6F 6C 20 70 6F 72 74    255 Control port
003020:  0D 4C 44 20 41 2C 25 31 30 30 30 30 30 31 30 09    .LD A,%10000010.
003030:  09 3B 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20    .;Configuration 
003040:  66 75 6E 63 74 69 6F 6E 0D 4F 55 54 20 28 43 29    function.OUT (C)
003050:  2C 41 09 09 3B 53 65 6E 64 20 74 6F 20 38 32 35    ,A..;Send to 825
003060:  35 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20    5.              
003070:  20 20 20 20 20 20 20 20 20 20 0D 4C 44 20 42 2C              .LD B,
003080:  26 46 34 09 09 3B 70 6F 72 74 20 41 20 70 6F 72    &F4..;port A por
003090:  74 20 61 64 64 72 65 73 73 0D 0D 09 09 09 3B 52    t address.....;R
0030A0:  65 67 69 73 74 65 72 20 45 20 68 6F 6C 64 73 20    egister E holds 
0030B0:  76 61 6C 75 65 20 74 6F 20 70 75 74 20 69 6E 74    value to put int
0030C0:  6F 20 70 6F 72 74 0D 0D 4C 44 20 45 2C 26 46 46    o port..LD E,&FF
0030D0:  09 09 3B 44 61 74 61 20 74 6F 20 70 75 74 20 69    ..;Data to put i
0030E0:  6E 74 6F 20 70 6F 72 74 0D 4F 55 54 20 28 43 29    nto port.OUT (C)
0030F0:  2C 41 09 09 3B 53 65 6E 64 20 74 6F 20 70 6F 72    ,A..;Send to por
003100:  74 20 41 0D 0D 09 09 09 3B 52 65 74 75 72 6E 20    t A.....;Return 
003110:  70 6F 72 74 20 49 2F 4F 20 73 74 61 74 75 73 20    port I/O status 
003120:  61 6E 64 20 6F 70 65 72 61 74 69 6E 67 20 6D 6F    and operating mo
003130:  64 65 73 0D 09 09 09 3B 74 6F 20 70 72 65 76 69    des....;to previ
003140:  6F 75 73 20 73 65 74 74 69 6E 67 73 2E 0D 0D 4C    ous settings...L
003150:  44 20 42 2C 26 46 37 09 09 3B 38 32 35 35 20 43    D B,&F7..;8255 C
003160:  6F 6E 74 72 6F 6C 20 70 6F 72 74 0D 4C 44 20 41    ontrol port.LD A
003170:  2C 25 31 30 30 30 30 30 31 30 09 09 3B 43 6F 6E    ,%10000010..;Con
003180:  66 69 67 75 72 61 74 69 6F 6E 20 66 75 6E 63 74    figuration funct
003190:  69 6F 6E 0D 4F 55 54 20 28 43 29 2C 41 0D 52 45    ion.OUT (C),A.RE
0031A0:  54 0D 1A 74 72 6F 6C 20 70 6F 72 74 0D 4C 44 20    T..trol port.LD 
0031B0:  41 2C 25 31 30 30 30 30 30 31 30 09 09 3B 43 6F    A,%10000010..;Co
0031C0:  6E 66 69 67 75 72 61 74 69 6F 6E 20 66 75 6E 63    nfiguration func
0031D0:  74 69 6F 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    tio.............
0031E0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0031F0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
003200:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
003210:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
003220:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
003230:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 55    =============..U
003240:  73 69 6E 67 20 74 68 65 20 38 32 35 35 20 50 6F    sing the 8255 Po
003250:  72 74 73 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    rts.------------
003260:  2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 57 68 65 6E 20 77    --------..When w
003270:  72 69 74 69 6E 67 20 74 6F 20 61 20 70 6F 72 74    riting to a port
003280:  3A 0D 0D 31 29 20 4D 61 6B 65 20 73 75 72 65 20    :..1) Make sure 
003290:  74 68 65 20 70 6F 72 74 20 69 73 20 6F 70 65 72    the port is oper
0032A0:  61 74 69 6E 67 20 61 73 20 6F 75 74 70 75 74 2E    ating as output.
0032B0:  20 28 54 68 69 73 20 69 73 20 64 6F 6E 65 20 62     (This is done b
0032C0:  79 20 73 65 6E 64 69 6E 67 0D 20 20 20 61 20 63    y sending.   a c
0032D0:  6F 6E 74 72 6F 6C 20 62 79 74 65 20 74 6F 20 70    ontrol byte to p
0032E0:  6F 72 74 20 26 46 37 78 78 29 2E 0D 32 29 20 57    ort &F7xx)..2) W
0032F0:  72 69 74 65 20 74 68 65 20 64 61 74 61 20 74 6F    rite the data to
003300:  20 74 68 65 20 70 6F 72 74 2E 0D 33 29 20 52 65     the port..3) Re
003310:  74 75 72 6E 20 74 68 65 20 70 6F 72 74 20 74 6F    turn the port to
003320:  20 69 74 27 73 20 6F 72 69 67 69 6E 61 6C 20 49     it's original I
003330:  2F 4F 20 53 74 61 74 75 73 2E 0D 0D 57 68 65 6E    /O Status...When
003340:  20 72 65 61 64 69 6E 67 20 66 72 6F 6D 20 61 20     reading from a 
003350:  70 6F 72 74 3A 0D 0D 31 29 20 4D 61 6B 65 20 73    port:..1) Make s
003360:  75 72 65 20 74 68 65 20 70 6F 72 74 20 69 73 20    ure the port is 
003370:  6F 70 65 72 61 74 69 6E 67 20 20 61 73 20 69 6E    operating  as in
003380:  70 75 74 2E 20 28 54 68 69 73 20 69 73 20 64 6F    put. (This is do
003390:  6E 65 20 62 79 20 73 65 6E 64 69 6E 67 0D 20 20    ne by sending.  
0033A0:  20 61 20 63 6F 6E 74 72 6F 6C 20 62 79 74 65 20     a control byte 
0033B0:  74 6F 20 70 6F 72 74 20 26 46 37 78 78 29 2E 0D    to port &F7xx)..
0033C0:  32 29 20 52 65 61 64 20 74 68 65 20 64 61 74 61    2) Read the data
0033D0:  20 66 72 6F 6D 20 74 68 65 20 70 6F 72 74 2E 0D     from the port..
0033E0:  33 29 20 52 65 74 75 72 6E 20 74 68 65 20 70 6F    3) Return the po
0033F0:  72 74 20 74 6F 20 69 74 27 73 20 6F 72 69 67 69    rt to it's origi
003400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0034A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0034B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0034C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0034D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0034E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0034F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0035A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0035B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0035C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0035D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0035E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0035F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
003600:  6E 61 6C 20 49 2F 4F 20 53 74 61 74 75 73 2E 0D    nal I/O Status..
003610:  0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    .===============
003620:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
003630:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
003640:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
003650:  3D 3D 3D 3D 3D 3D 3D 0D 0D 38 32 35 35 20 50 50    =======..8255 PP
003660:  49 20 43 6F 6E 74 72 6F 6C 20 42 79 74 65 0D 2D    I Control Byte.-
003670:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
003680:  2D 2D 2D 2D 0D 0D 54 68 69 73 20 62 79 74 65 20    ----..This byte 
003690:  63 6F 6E 74 72 6F 6C 73 20 74 68 65 20 49 6E 70    controls the Inp
0036A0:  75 74 2F 4F 75 74 70 75 74 20 28 49 2F 4F 29 20    ut/Output (I/O) 
0036B0:  73 74 61 74 75 73 20 61 6E 64 20 6F 70 65 72 61    status and opera
0036C0:  74 69 6E 67 20 6D 6F 64 65 20 6F 66 0D 65 61 63    ting mode of.eac
0036D0:  68 20 70 6F 72 74 2E 0D 0D 49 74 20 61 6C 73 6F    h port...It also
0036E0:  20 68 61 73 20 61 20 73 65 63 6F 6E 64 61 72 79     has a secondary
0036F0:  20 66 75 6E 63 74 69 6F 6E 20 77 68 69 63 68 20     function which 
003700:  61 6C 6C 6F 77 73 20 74 68 65 20 75 73 65 72 20    allows the user 
003710:  74 6F 20 73 65 74 20 6F 72 20 72 65 73 65 74 0D    to set or reset.
003720:  61 20 70 61 72 74 69 63 75 6C 61 72 20 62 69 74    a particular bit
003730:  20 6F 66 20 70 6F 72 74 20 43 2E 0D 0D 54 6F 20     of port C...To 
003740:  73 65 6E 64 20 61 20 63 6F 6E 74 72 6F 6C 20 62    send a control b
003750:  79 74 65 20 20 74 6F 20 20 74 68 65 20 20 38 32    yte  to  the  82
003760:  35 35 2C 20 20 73 69 6D 70 6C 79 20 20 73 65 6E    55,  simply  sen
003770:  74 20 20 74 68 65 20 62 79 74 65 20 74 6F 20 70    t  the byte to p
003780:  6F 72 74 0D 26 46 37 78 78 2E 20 28 4E 4F 54 45    ort.&F7xx. (NOTE
003790:  3A 20 54 68 65 20 63 6F 6E 74 72 6F 6C 20 20 62    : The control  b
0037A0:  79 74 65 20 20 63 61 6E 20 20 6F 6E 6C 79 20 20    yte  can  only  
0037B0:  62 65 20 20 77 72 69 74 74 65 6E 2C 20 20 69 74    be  written,  it
0037C0:  20 63 61 6E 6E 6F 74 20 62 65 0D 72 65 61 64 2E     cannot be.read.
0037D0:  29 0D 0D 54 68 65 20 66 75 6E 63 74 69 6F 6E 20    )..The function 
0037E0:  74 6F 20 62 65 20 65 78 65 63 75 74 65 64 20 62    to be executed b
0037F0:  79 20 74 68 65 20 20 38 32 35 35 20 20 69 73 20    y the  8255  is 
003800:  38 32 35 35 20 50 61 72 61 6C 6C 65 6C 20 50 65    8255 Parallel Pe
003810:  72 69 70 68 65 72 61 6C 20 49 6E 74 65 72 66 61    ripheral Interfa
003820:  63 65 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ce.-------------
003830:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
003840:  2D 2D 2D 2D 2D 0D 0D 54 68 65 20 38 20 44 71 80    -----..The 8 Dq.
003850:  0C 70 60 63 27 88 88 00 88 04 8E 01 CF 87 80 04    .p`c'...........
003860:  87 80 04 08 4F CF 82 00 87 80 01 CF CF 80 00 01    ....O...........
003870:  87 80 01 CF CF 8C 03 82 07 C0 CF 92 01 CF 82 04    ................
003880:  4F 8C 00 00 80 88 0C 01 88 09 CF 81 80 70 01 83    O............p..
003890:  88 4F 87 84 18 41 CF 80 08 02 0C 80 0E 04 89 CF    .O...A..........
0038A0:  8E 00 89 CF 8C 0E 04 04 08 01 81 88 4F 84 88 0C    ............O...
0038B0:  00 04 89 88 04 C0 F0 70 07 84 80 08 04 8E 00 00    .......p........
0038C0:  02 00 88 4F 81 83 88 4F C3 C4 C0 40 70 40 40 40    ...O...O...@p@@@
0038D0:  40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40    @@@@@@@@@@@@@@@@
0038E0:  40 70 70 01 83 88 4F C3 C4 C0 40 4F 83 8E 04 4F    @pp...O...@O...O
0038F0:  C4 4F C3 C0 0C 82 01 CF CF 87 80 04 81 84 4F CF    .O............O.
003900:  C3 9E 41 9C CF CF 8E 00 89 CF CF 9C 42 41 CF CF    ..A.........BA..
003910:  88 0E 0C 03 CF CF 80 08 CF 80 03 82 0C 03 CF 8C    ................
003920:  0E 00 CF 83 8E 00 88 4F 8E 70 09 82 08 88 88 04    .......O.p......
003930:  88 00 81 CF 92 40 10 4F 84 01 8E 01 80 04 4F CF    .....@.O......O.
003940:  C3 82 40 88 40 CF CF 82 00 87 80 01 CF CF 80 04    ..@.@...........
003950:  CF CF 80 00 01 87 80 01 C2 40 CF CF 87 80 04 81    .........@......
003960:  CF CF 9C 4F CF 8C 0E 00 CF 8E 01 84 00 4F 8C 88    ...O.........O..
003970:  70 07 84 80 08 04 8E 00 00 08 09 CF 81 80 4F 80    p.............O.
003980:  07 88 04 8E 01 88 4F 82 00 CF 81 80 00 4F 83 8E    ......O......O..
003990:  01 80 88 04 40 CF C3 9E 04 4F 81 80 00 4F 84 08    ....@....O...O..
0039A0:  07 8E 04 8E 01 88 4F C1 C0 0C 82 01 CF 87 80 04    ......O.........
0039B0:  81 84 42 40 F0 70 01 83 88 04 88 4F 8E 04 88 4F    ..B@.p.....O...O
0039C0:  C4 4F CF 8C 8E 04 02 0C 4F CF 80 00 09 88 04 4F    .O......O......O
0039D0:  CF 80 08 CF CF 80 07 88 04 8E 01 82 00 00 CF CF    ................
0039E0:  80 00 89 88 04 CF CF 80 03 82 0C 03 CF CF 81 83    ................
0039F0:  88 4F CF 87 80 04 81 84 4F 8C 0E 00 F0 08 80 00    .O......O.......
003A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
003A10:  03 00 01 00 02 09 4E E5 03 00 C1 02 00 00 00 02    ......N.........
003A20:  03 00 C6 02 00 00 00 02 03 00 C2 02 00 00 00 02    ................
003A30:  03 00 C7 02 00 00 00 02 03 00 C3 02 00 00 00 02    ................
003A40:  03 00 C8 02 00 00 00 02 03 00 C4 02 00 00 00 02    ................
003A50:  03 00 C9 02 00 00 00 02 03 00 C5 02 00 00 00 02    ................
003A60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003A70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003A80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003A90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003AF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
003B00:  64 65 70 65 6E 64 61 6E 74 20 6F 6E 20 74 68 65    dependant on the
003B10:  20 73 74 61 74 65 20 6F 66 0D 62 69 74 20 37 2E     state of.bit 7.
003B20:  0D 0D 49 66 20 62 69 74 20 37 20 69 73 20 31 2C    ..If bit 7 is 1,
003B30:  20 74 68 65 20 72 65 6D 61 69 6E 69 6E 67 20 20     the remaining  
003B40:  62 69 74 73 20 20 61 72 65 20 75 73 65 64 20 74    bits  are used t
003B50:  6F 20 64 65 66 69 6E 65 20 74 68 65 20 49 2F 4F    o define the I/O
003B60:  20 73 74 61 74 75 73 2C 0D 61 6E 64 20 6F 70 65     status,.and ope
003B70:  72 61 74 69 6E 67 20 6D 6F 64 65 20 6F 66 20 65    rating mode of e
003B80:  61 63 68 20 70 6F 72 74 2E 0D 0D 49 66 20 62 69    ach port...If bi
003B90:  74 20 37 20 69 73 20 30 2C 20 74 68 65 20 72 65    t 7 is 0, the re
003BA0:  6D 61 69 6E 69 6E 67 20 20 62 69 74 73 20 20 61    maining  bits  a
003BB0:  72 65 20 20 75 73 65 64 20 74 6F 20 64 65 74 65    re  used to dete
003BC0:  72 6D 69 6E 65 20 77 68 61 74 20 62 69 74 20 69    rmine what bit i
003BD0:  73 0D 73 65 74 20 28 73 65 74 20 74 6F 20 31 29    s.set (set to 1)
003BE0:  20 6F 72 20 72 65 73 65 74 20 28 73 65 74 20 74     or reset (set t
003BF0:  6F 20 30 29 20 6F 66 20 70 6F 72 74 20 43 2E 0D    o 0) of port C..
003C00:  0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    .===============
003C10:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
003C20:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
003C30:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
003C40:  3D 3D 3D 3D 3D 3D 3D 0D 0D 43 6F 6E 66 69 67 75    =======..Configu
003C50:  72 61 74 69 6F 6E 20 63 6F 6E 74 72 6F 6C 20 62    ration control b
003C60:  79 74 65 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    yte.------------
003C70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D    --------------..
003C80:  57 68 65 6E 20 62 69 74 20 37 20 69 73 20 73 65    When bit 7 is se
003C90:  74 20 74 6F 20 31 2C 20 74 68 65 20 63 6F 6D 6D    t to 1, the comm
003CA0:  61 6E 64 20 62 79 74 65 20 6F 70 65 72 61 74 65    and byte operate
003CB0:  73 20 69 6E 20 74 68 65 20 66 6F 6C 6C 6F 77 69    s in the followi
003CC0:  6E 67 0D 77 61 79 3A 0D 0D 42 69 74 20 37 3A 20    ng.way:..Bit 7: 
003CD0:  43 6F 6E 74 72 6F 6C 20 62 79 74 65 20 66 75 6E    Control byte fun
003CE0:  63 74 69 6F 6E 20 28 31 3D 43 6F 6E 66 69 67 75    ction (1=Configu
003CF0:  72 61 74 69 6F 6E 20 63 6F 6E 74 72 6F 6C 20 62    ration control b
003D00:  20 20 77 68 69 63 68 20 20 74 68 65 20 70 6F 72      which  the por
003D10:  74 20 63 61 6E 20 62 65 20 61 63 63 65 73 73 65    t can be accesse
003D20:  64 29 0D 69 74 27 73 20 6E 6F 72 6D 61 6C 20 49    d).it's normal I
003D30:  2F 4F 20 53 74 61 74 75 73 20 28 75 6E 6C 65 73    /O Status (unles
003D40:  73 20 20 63 68 61 6E 67 65 64 20 20 62 79 20 20    s  changed  by  
003D50:  74 68 65 20 75 73 65 72 29 2C 20 69 74 27 73 20    the user), it's 
003D60:  6F 70 65 72 61 74 69 6E 67 0D 6D 6F 64 65 20 28    operating.mode (
003D70:  75 6E 6C 65 73 73 20 63 68 61 6E 67 65 64 20 62    unless changed b
003D80:  79 20 74 68 65 20 75 73 65 72 29 20 61 72 65 20    y the user) are 
003D90:  67 69 76 65 6E 2E 0D 0D 46 6F 72 20 6D 6F 72 65    given...For more
003DA0:  20 69 6E 66 6F 72 6D 61 74 69 6F 6E 20 6F 6E 20     information on 
003DB0:  61 20 20 70 61 72 74 69 63 75 6C 61 72 20 20 66    a  particular  f
003DC0:  75 6E 63 74 69 6F 6E 20 20 6F 66 20 65 61 63 68    unction  of each
003DD0:  20 70 6F 72 74 2C 20 73 65 65 20 74 68 65 0D 61     port, see the.a
003DE0:  70 70 72 6F 70 69 61 74 65 20 70 61 72 74 20 6F    ppropiate part o
003DF0:  66 20 74 68 65 20 43 50 43 20 47 75 69 64 65 2E    f the CPC Guide.
003E00:  0D 0D 4E 4F 54 45 3A 20 49 66 20 79 6F 75 20 61    ..NOTE: If you a
003E10:  72 65 20 75 73 69 6E 67 20 74 68 65 20 66 69 72    re using the fir
003E20:  6D 77 61 72 65 2C 20 61 6C 77 61 79 73 20 72 65    mware, always re
003E30:  74 75 72 6E 20 74 68 65 20 6F 70 65 72 61 74 69    turn the operati
003E40:  6E 67 20 6D 6F 64 65 73 0D 61 6E 64 20 49 2F 4F    ng modes.and I/O
003E50:  20 73 74 61 74 75 73 20 6F 66 20 74 68 65 20 70     status of the p
003E60:  6F 72 74 73 20 75 73 65 64 20 20 74 6F 20 74 68    orts used  to th
003E70:  65 69 72 20 73 74 61 74 75 73 20 62 65 6C 6F 77    eir status below
003E80:  2C 20 6F 74 68 65 72 77 69 73 65 20 74 68 65 0D    , otherwise the.
003E90:  66 69 72 6D 77 61 72 65 20 6D 61 79 20 63 72 61    firmware may cra
003EA0:  73 68 2E 20 28 54 68 65 20 66 69 72 6D 77 61 72    sh. (The firmwar
003EB0:  65 20 20 65 78 70 65 63 74 73 20 20 74 68 65 20    e  expects  the 
003EC0:  20 6F 70 65 72 61 74 69 6E 67 20 6D 6F 64 65 73     operating modes
003ED0:  20 74 6F 20 62 65 0D 74 68 65 20 73 61 6D 65 20     to be.the same 
003EE0:  61 73 20 67 69 76 65 6E 20 62 65 6C 6F 77 29 2E    as given below).
003EF0:  0D 0D 50 6F 72 74 20 41 20 28 50 6F 72 74 20 61    ..Port A (Port a
003F00:  79 74 65 29 0D 0D 42 69 74 20 36 3A 20 7D 20 4F    yte)..Bit 6: } O
003F10:  70 65 72 61 74 69 6E 67 20 4D 6F 64 65 20 28 50    perating Mode (P
003F20:  6F 72 74 20 41 20 61 6E 64 20 50 6F 72 74 20 43    ort A and Port C
003F30:  20 75 70 70 65 72 29 0D 42 69 74 20 35 3A 20 7D     upper).Bit 5: }
003F40:  0D 0D 42 69 74 20 34 3A 20 50 6F 72 74 20 41 20    ..Bit 4: Port A 
003F50:  49 2F 4F 20 53 74 61 74 75 73 0D 20 20 20 20 20    I/O Status.     
003F60:  20 20 20 20 30 3A 20 4F 75 74 70 75 74 2C 20 31        0: Output, 1
003F70:  3A 20 49 6E 70 75 74 0D 0D 42 69 74 20 33 3A 20    : Input..Bit 3: 
003F80:  50 6F 72 74 20 43 20 28 75 70 70 65 72 29 20 49    Port C (upper) I
003F90:  2F 4F 20 53 74 61 74 75 73 0D 20 20 20 20 20 20    /O Status.      
003FA0:  20 20 20 30 3A 20 4F 75 74 70 75 74 2C 20 31 3A       0: Output, 1:
003FB0:  20 49 6E 70 75 74 0D 0D 42 69 74 20 32 3A 20 4F     Input..Bit 2: O
003FC0:  70 65 72 61 74 69 6E 67 20 4D 6F 64 65 20 73 65    perating Mode se
003FD0:  6C 65 63 74 69 6F 6E 20 28 50 6F 72 74 20 42 20    lection (Port B 
003FE0:  61 6E 64 20 50 6F 72 74 20 43 20 6C 6F 77 65 72    and Port C lower
003FF0:  29 0D 0D 42 69 74 20 31 3A 20 50 6F 72 74 20 42    )..Bit 1: Port B
004000:  20 49 2F 4F 20 53 74 61 74 75 73 0D 20 20 20 20     I/O Status.    
004010:  20 20 20 20 30 3A 20 4F 75 74 70 75 74 2C 20 31        0: Output, 1
004020:  3A 20 49 6E 70 75 74 0D 0D 42 69 74 20 30 3A 20    : Input..Bit 0: 
004030:  50 6F 72 74 20 43 20 28 6C 6F 77 65 72 29 20 49    Port C (lower) I
004040:  2F 4F 20 53 74 61 74 75 73 0D 20 20 20 20 20 20    /O Status.      
004050:  20 20 30 3A 20 4F 75 74 70 75 74 2C 20 31 3A 20      0: Output, 1: 
004060:  49 6E 70 75 74 0D 0D 50 6F 72 74 20 41 20 61 6E    Input..Port A an
004070:  64 20 50 6F 72 74 20 43 20 28 75 70 70 65 72 29    d Port C (upper)
004080:  20 4F 70 65 72 61 74 69 6E 67 20 6D 6F 64 65 0D     Operating mode.
004090:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0040A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0040B0:  2D 2D 2D 2D 2D 2D 0D 0D 42 69 74 20 36 20 20 20    ------..Bit 6   
0040C0:  20 20 20 20 20 20 20 20 42 69 74 20 35 20 20 20            Bit 5   
0040D0:  20 20 20 20 20 20 20 20 4D 6F 64 65 20 73 65 6C            Mode sel
0040E0:  65 63 74 69 6F 6E 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ection.---------
0040F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
004100:  64 64 72 65 73 73 3A 26 46 34 78 78 29 20 28 49    ddress:&F4xx) (I
004110:  2F 4F 20 53 74 61 74 75 73 3A 20 4F 75 74 70 75    /O Status: Outpu
004120:  74 29 20 28 4F 70 65 72 61 74 69 6E 67 20 6D 6F    t) (Operating mo
004130:  64 65 3A 20 30 29 0D 2D 2D 2D 2D 2D 2D 0D 0D 42    de: 0).------..B
004140:  69 74 20 37 3A 20 7D 20 50 53 47 20 64 61 74 61    it 7: } PSG data
004150:  0D 42 69 74 20 36 3A 20 7D 0D 42 69 74 20 35 3A    .Bit 6: }.Bit 5:
004160:  20 7D 0D 42 69 74 20 34 3A 20 7D 0D 42 69 74 20     }.Bit 4: }.Bit 
004170:  33 3A 20 7D 0D 42 69 74 20 32 3A 20 7D 0D 42 69    3: }.Bit 2: }.Bi
004180:  74 20 31 3A 20 7D 0D 42 69 74 20 30 3A 20 7D 0D    t 1: }.Bit 0: }.
004190:  0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    .===============
0041A0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0041B0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0041C0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0041D0:  3D 3D 3D 3D 3D 3D 3D 0D 0D 50 6F 72 74 20 42 20    =======..Port B 
0041E0:  28 50 6F 72 74 20 61 64 64 72 65 73 73 3A 20 26    (Port address: &
0041F0:  46 35 78 78 29 20 28 49 2F 4F 20 53 74 61 74 75    F5xx) (I/O Statu
004200:  73 3A 20 49 6E 70 75 74 29 20 28 4F 70 65 72 61    s: Input) (Opera
004210:  74 69 6E 67 20 6D 6F 64 65 3A 20 30 29 0D 2D 2D    ting mode: 0).--
004220:  2D 2D 2D 2D 0D 0D 42 69 74 20 37 3A 20 43 61 73    ----..Bit 7: Cas
004230:  73 65 74 74 65 20 72 65 61 64 20 64 61 74 61 0D    sette read data.
004240:  0D 42 69 74 20 36 3A 20 50 72 69 6E 74 65 72 20    .Bit 6: Printer 
004250:  63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 0D 20 20    configuration.  
004260:  20 20 20 20 20 20 31 3A 20 4E 6F 74 2D 72 65 61          1: Not-rea
004270:  64 79 2C 20 20 30 3A 20 52 65 61 64 79 0D 0D 42    dy,  0: Ready..B
004280:  69 74 20 35 3A 20 45 78 70 61 6E 73 69 6F 6E 20    it 5: Expansion 
004290:  70 65 72 69 70 68 65 72 61 6C 20 64 65 74 65 63    peripheral detec
0042A0:  74 0D 20 20 20 20 20 20 20 20 31 3A 20 45 78 70    t.        1: Exp
0042B0:  61 6E 73 69 6F 6E 20 70 65 72 69 70 68 65 72 61    ansion periphera
0042C0:  6C 20 70 72 65 73 65 6E 74 2C 20 30 3A 20 4E 6F    l present, 0: No
0042D0:  74 20 70 72 65 73 65 6E 74 0D 0D 42 69 74 20 34    t present..Bit 4
0042E0:  3A 20 53 63 72 65 65 6E 20 72 65 66 72 65 73 68    : Screen refresh
0042F0:  20 66 72 65 71 75 65 6E 63 79 20 28 64 65 66 69     frequency (defi
004300:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
004310:  2D 2D 2D 2D 2D 0D 20 20 30 20 20 20 20 20 20 20    -----.  0       
004320:  20 20 20 20 20 20 20 20 30 20 20 20 20 20 20 20            0       
004330:  20 20 20 20 20 20 4D 6F 64 65 20 30 0D 20 20 30          Mode 0.  0
004340:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 31                   1
004350:  20 20 20 20 20 20 20 20 20 20 20 20 20 4D 6F 64                 Mod
004360:  65 20 31 0D 20 20 31 20 20 20 20 20 20 20 20 20    e 1.  1         
004370:  20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20          0         
004380:  20 20 20 20 4D 6F 64 65 20 32 0D 20 20 31 20 20        Mode 2.  1  
004390:  20 20 20 20 20 20 20 20 20 20 20 20 20 31 20 20                 1  
0043A0:  20 20 20 20 20 20 20 20 20 20 20 4D 6F 64 65 20               Mode 
0043B0:  32 0D 0D 50 6F 72 74 20 42 20 61 6E 64 20 50 6F    2..Port B and Po
0043C0:  72 74 20 43 20 28 6C 6F 77 65 72 29 20 6F 70 65    rt C (lower) ope
0043D0:  72 61 74 69 6E 67 20 6D 6F 64 65 0D 2D 2D 2D 2D    rating mode.----
0043E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0043F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
004400:  2D 2D 2D 2D 0D 0D 42 69 74 20 32 20 20 20 20 20    ----..Bit 2     
004410:  20 20 20 20 20 20 4D 6F 64 65 20 53 65 6C 65 63          Mode Selec
004420:  74 69 6F 6E 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    tion.-----------
004430:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
004440:  2D 2D 2D 0D 0D 20 20 30 20 20 20 20 20 20 20 20    ---..  0        
004450:  20 20 20 20 20 4D 6F 64 65 20 30 0D 20 20 31 20         Mode 0.  1 
004460:  20 20 20 20 20 20 20 20 20 20 20 20 4D 6F 64 65                Mode
004470:  20 31 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D     1..============
004480:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
004490:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0044A0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0044B0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 42 69 74 20    ==========..Bit 
0044C0:  53 65 74 2F 52 65 73 65 74 20 63 6F 6E 74 72 6F    Set/Reset contro
0044D0:  6C 20 62 79 74 65 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D    l byte.---------
0044E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0044F0:  2D 0D 0D 57 68 65 6E 20 62 69 74 20 37 20 69 73    -..When bit 7 is
004500:  6E 65 64 20 62 79 20 68 61 72 64 77 61 72 65 29    ned by hardware)
004510:  0D 20 20 20 20 20 20 20 20 31 3A 20 35 30 48 7A    .        1: 50Hz
004520:  20 20 20 20 30 3A 20 36 30 48 7A 0D 0D 42 69 74        0: 60Hz..Bit
004530:  20 33 3A 20 7D 20 43 6F 6D 70 75 74 65 72 20 6E     3: } Computer n
004540:  61 6D 65 20 6F 6E 20 70 6F 77 65 72 2D 75 70 2E    ame on power-up.
004550:  0D 42 69 74 20 32 3A 20 7D 0D 42 69 74 20 31 3A    .Bit 2: }.Bit 1:
004560:  20 7D 0D 0D 42 69 74 20 30 3A 20 56 53 59 4E 43     }..Bit 0: VSYNC
004570:  20 73 74 61 74 75 73 20 28 46 72 61 6D 65 20 66     status (Frame f
004580:  6C 79 62 61 63 6B 20 73 74 61 74 75 73 29 0D 20    lyback status). 
004590:  20 20 20 20 20 20 20 31 3A 20 56 53 59 4E 43 20           1: VSYNC 
0045A0:  6F 63 63 75 72 65 64 2C 20 30 3A 20 6E 6F 20 56    occured, 0: no V
0045B0:  53 59 4E 43 0D 0D 54 61 62 6C 65 20 73 68 6F 77    SYNC..Table show
0045C0:  69 6E 67 20 43 6F 6D 70 75 74 65 72 20 6E 61 6D    ing Computer nam
0045D0:  65 20 6F 6E 20 70 6F 77 65 72 2D 75 70 3A 0D 0D    e on power-up:..
0045E0:  42 69 74 20 33 20 20 20 20 20 20 42 69 74 20 32    Bit 3      Bit 2
0045F0:  20 20 20 20 42 69 74 20 31 20 20 20 20 43 6F 6D        Bit 1    Com
004600:  70 75 74 65 72 20 6E 61 6D 65 0D 2D 2D 2D 2D 2D    puter name.-----
004610:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
004620:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
004630:  2D 2D 2D 0D 0D 20 20 20 30 20 20 20 20 20 20 20    ---..   0       
004640:  30 20 20 20 20 20 20 30 20 20 20 20 20 20 20 20    0      0        
004650:  49 73 70 0D 20 20 20 30 20 20 20 20 20 20 20 30    Isp.   0       0
004660:  20 20 20 20 20 20 31 20 20 20 20 20 20 20 20 54          1        T
004670:  72 69 75 6D 70 68 0D 20 20 20 30 20 20 20 20 20    riumph.   0     
004680:  20 20 31 20 20 20 20 20 20 30 20 20 20 20 20 20      1      0      
004690:  20 20 53 61 69 73 68 6F 0D 20 20 20 30 20 20 20      Saisho.   0   
0046A0:  20 20 20 20 31 20 20 20 20 20 20 31 20 20 20 20        1      1    
0046B0:  20 20 20 20 53 6F 6C 61 76 6F 78 0D 20 20 20 31        Solavox.   1
0046C0:  20 20 20 20 20 20 20 30 20 20 20 20 20 20 30 20           0      0 
0046D0:  20 20 20 20 20 20 20 41 77 61 0D 20 20 20 31 20           Awa.   1 
0046E0:  20 20 20 20 20 20 30 20 20 20 20 20 20 31 20 20          0      1  
0046F0:  20 20 20 20 20 20 53 63 68 6E 65 69 64 65 72 0D          Schneider.
004700:  20 73 65 74 20 74 6F 20 20 30 2C 20 20 74 68 65     set to  0,  the
004710:  20 20 63 6F 6E 74 72 6F 6C 20 20 62 79 74 65 20      control  byte 
004720:  6F 70 65 72 61 74 65 73 20 69 6E 20 74 68 65 20    operates in the 
004730:  66 6F 6C 6C 6F 77 69 6E 67 0D 77 61 79 3A 0D 0D    following.way:..
004740:  42 69 74 20 37 3A 20 43 6F 6E 74 72 6F 6C 20 62    Bit 7: Control b
004750:  79 74 65 20 66 75 6E 63 74 69 6F 6E 20 28 30 3D    yte function (0=
004760:  42 69 74 20 53 65 74 2F 52 65 73 65 74 20 63 6F    Bit Set/Reset co
004770:  6E 74 72 6F 6C 20 62 79 74 65 29 0D 0D 42 69 74    ntrol byte)..Bit
004780:  20 36 3A 20 7D 20 4E 6F 74 20 75 73 65 64 2E 20     6: } Not used. 
004790:  28 73 65 6E 64 20 30 29 0D 42 69 74 20 35 3A 20    (send 0).Bit 5: 
0047A0:  7D 0D 42 69 74 20 34 3A 20 7D 0D 0D 42 69 74 20    }.Bit 4: }..Bit 
0047B0:  33 3A 20 7D 20 42 69 74 20 74 6F 20 63 68 61 6E    3: } Bit to chan
0047C0:  67 65 2E 0D 42 69 74 20 32 3A 20 7D 0D 42 69 74    ge..Bit 2: }.Bit
0047D0:  20 31 3A 20 7D 0D 0D 42 69 74 20 30 3A 20 42 69     1: }..Bit 0: Bi
0047E0:  74 20 6F 70 65 72 61 74 69 6F 6E 0D 20 20 20 20    t operation.    
0047F0:  20 20 20 20 31 3A 20 53 65 74 20 62 69 74 20 28        1: Set bit (
004800:  6D 61 6B 65 20 62 69 74 3D 31 29 2C 20 30 3A 20    make bit=1), 0: 
004810:  52 65 73 65 74 20 62 69 74 20 28 6D 61 6B 65 20    Reset bit (make 
004820:  62 69 74 3D 30 29 0D 0D 54 61 62 6C 65 20 74 6F    bit=0)..Table to
004830:  20 73 68 6F 77 20 68 6F 77 20 62 69 74 20 74 6F     show how bit to
004840:  20 63 68 61 6E 67 65 20 69 73 20 63 6F 64 65 64     change is coded
004850:  3A 0D 0D 42 69 74 20 33 20 20 20 20 20 20 20 20    :..Bit 3        
004860:  20 20 20 42 69 74 20 32 20 20 20 20 20 20 20 20       Bit 2        
004870:  20 20 20 42 69 74 20 31 20 20 20 20 20 20 20 20       Bit 1        
004880:  20 20 20 42 69 74 20 73 65 6C 65 63 74 65 64 0D       Bit selected.
004890:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0048A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0048B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0048C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 30 20    ------------. 0 
0048D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30                   0
0048E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30                   0
0048F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 69 74                 Bit
004900:  20 20 20 31 20 20 20 20 20 20 20 31 20 20 20 20       1       1    
004910:  20 20 30 20 20 20 20 20 20 20 20 4F 72 69 6F 6E      0        Orion
004920:  0D 20 20 20 31 20 20 20 20 20 20 20 31 20 20 20    .   1       1   
004930:  20 20 20 31 20 20 20 20 20 20 20 20 41 6D 73 74       1        Amst
004940:  72 61 64 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    rad..===========
004950:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
004960:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
004970:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
004980:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 50 6F 72    ===========..Por
004990:  74 20 43 20 28 50 6F 72 74 20 61 64 64 72 65 73    t C (Port addres
0049A0:  73 3A 20 26 46 36 78 78 29 20 28 49 2F 4F 20 53    s: &F6xx) (I/O S
0049B0:  74 61 74 75 73 3A 20 4F 75 74 70 75 74 29 20 28    tatus: Output) (
0049C0:  4F 70 65 72 61 74 69 6E 67 20 6D 6F 64 65 3A 20    Operating mode: 
0049D0:  30 29 0D 2D 2D 2D 2D 2D 2D 0D 0D 42 69 74 20 37    0).------..Bit 7
0049E0:  3A 20 7D 20 50 53 47 20 63 6F 6E 74 72 6F 6C 0D    : } PSG control.
0049F0:  42 69 74 20 36 3A 20 7D 0D 0D 42 69 74 20 35 3A    Bit 6: }..Bit 5:
004A00:  20 43 61 73 73 65 74 74 65 20 77 72 69 74 65 20     Cassette write 
004A10:  64 61 74 61 0D 0D 42 69 74 20 34 3A 20 43 61 73    data..Bit 4: Cas
004A20:  73 65 74 74 65 20 6D 6F 74 6F 72 20 63 6F 6E 74    sette motor cont
004A30:  72 6F 6C 0D 20 20 20 20 20 20 20 20 31 3A 20 54    rol.        1: T
004A40:  75 72 6E 20 6D 6F 74 6F 72 20 6F 6E 2C 20 30 3A    urn motor on, 0:
004A50:  20 54 75 72 6E 20 6D 6F 74 6F 72 20 6F 66 66 0D     Turn motor off.
004A60:  0D 42 69 74 20 33 3A 20 7D 20 4B 65 79 62 6F 61    .Bit 3: } Keyboa
004A70:  72 64 20 6C 69 6E 65 20 74 6F 20 62 65 20 73 63    rd line to be sc
004A80:  61 6E 6E 65 64 20 28 30 2D 31 30 29 0D 42 69 74    anned (0-10).Bit
004A90:  20 32 3A 20 7D 0D 42 69 74 20 31 3A 20 7D 0D 42     2: }.Bit 1: }.B
004AA0:  69 74 20 30 3A 20 7D 0D 0D 3D 3D 3D 3D 3D 3D 3D    it 0: }..=======
004AB0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
004AC0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
004AD0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
004AE0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D    ===============.
004AF0:  0D 50 72 6F 67 72 61 6D 6D 69 6E 67 20 45 78 61    .Programming Exa
004B00:  20 30 0D 20 30 20 20 20 20 20 20 20 20 20 20 20     0. 0           
004B10:  20 20 20 20 20 30 20 20 20 20 20 20 20 20 20 20         0          
004B20:  20 20 20 20 20 31 20 20 20 20 20 20 20 20 20 20         1          
004B30:  20 20 20 42 69 74 20 31 0D 20 30 20 20 20 20 20       Bit 1. 0     
004B40:  20 20 20 20 20 20 20 20 20 20 20 31 20 20 20 20               1    
004B50:  20 20 20 20 20 20 20 20 20 20 20 30 20 20 20 20               0    
004B60:  20 20 20 20 20 20 20 20 20 42 69 74 20 32 0D 20             Bit 2. 
004B70:  30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    0               
004B80:  20 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20     1              
004B90:  20 31 20 20 20 20 20 20 20 20 20 20 20 20 20 42     1             B
004BA0:  69 74 20 33 0D 20 31 20 20 20 20 20 20 20 20 20    it 3. 1         
004BB0:  20 20 20 20 20 20 20 30 20 20 20 20 20 20 20 20           0        
004BC0:  20 20 20 20 20 20 20 30 20 20 20 20 20 20 20 20           0        
004BD0:  20 20 20 20 20 42 69 74 20 34 0D 20 31 20 20 20         Bit 4. 1   
004BE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 20                 0  
004BF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 31 20 20                 1  
004C00:  20 20 20 20 20 20 20 20 20 20 20 42 69 74 20 35               Bit 5
004C10:  0D 20 31 20 20 20 20 20 20 20 20 20 20 20 20 20    . 1             
004C20:  20 20 20 31 20 20 20 20 20 20 20 20 20 20 20 20       1            
004C30:  20 20 20 30 20 20 20 20 20 20 20 20 20 20 20 20       0            
004C40:  20 42 69 74 20 36 0D 20 31 20 20 20 20 20 20 20     Bit 6. 1       
004C50:  20 20 20 20 20 20 20 20 20 31 20 20 20 20 20 20             1      
004C60:  20 20 20 20 20 20 20 20 20 31 20 20 20 20 20 20             1      
004C70:  20 20 20 20 20 20 20 42 69 74 20 37 0D 0D 3D 3D           Bit 7..==
004C80:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
004C90:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
004CA0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
004CB0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
004CC0:  3D 3D 3D 0D 0D 50 6F 72 74 20 55 73 61 67 65 0D    ===..Port Usage.
004CD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 46 6F 72 20    ----------..For 
004CE0:  65 61 63 68 20 70 6F 72 74 2C 20 74 68 65 20 70    each port, the p
004CF0:  6F 72 74 20 61 64 64 72 65 73 73 20 20 28 61 74    ort address  (at
004D00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
004D10:  04 00 01 00 02 09 4E E5 04 00 C1 02 00 00 00 02    ......N.........
004D20:  04 00 C6 02 00 00 00 02 04 00 C2 02 00 00 00 02    ................
004D30:  04 00 C7 02 00 00 00 02 04 00 C3 02 00 00 00 02    ................
004D40:  04 00 C8 02 00 00 00 02 04 00 C4 02 00 00 00 02    ................
004D50:  04 00 C9 02 00 00 00 02 04 00 C5 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:  6D 70 6C 65 73 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    mples.----------
004E10:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 31 29 20 55    ----------..1) U
004E20:  73 69 6E 67 20 74 68 65 20 63 6F 6E 74 72 6F 6C    sing the control
004E30:  20 62 79 74 65 0D 0D 61 29 20 53 65 74 74 69 6E     byte..a) Settin
004E40:  67 20 62 69 74 20 37 20 6F 66 20 70 6F 72 74 20    g bit 7 of port 
004E50:  43 20 74 6F 20 31 2C 0D 0D 4C 44 20 42 2C 26 46    C to 1,..LD B,&F
004E60:  37 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    7               
004E70:  20 3B 38 32 35 35 20 43 6F 6E 74 72 6F 6C 20 70     ;8255 Control p
004E80:  6F 72 74 0D 4C 44 20 41 2C 25 30 30 30 30 31 31    ort.LD A,%000011
004E90:  31 31 20 20 20 20 20 20 20 20 20 20 3B 42 69 74    11          ;Bit
004EA0:  20 53 65 74 2F 72 65 73 65 74 20 66 75 6E 63 74     Set/reset funct
004EB0:  69 6F 6E 0D 4F 55 54 20 28 43 29 2C 41 20 20 20    ion.OUT (C),A   
004EC0:  20 20 20 20 20 20 20 20 20 20 20 20 3B 53 65 6E                ;Sen
004ED0:  64 20 69 74 20 74 6F 20 38 32 35 35 0D 52 45 54    d it to 8255.RET
004EE0:  0D 0D 62 29 20 53 65 74 20 70 6F 72 74 20 41 20    ..b) Set port A 
004EF0:  20 74 6F 20 20 69 6E 70 75 74 2C 20 20 6F 70 65     to  input,  ope
004F00:  72 61 74 69 6E 67 20 20 69 6E 20 20 6D 6F 64 65    rating  in  mode
004F10:  20 20 30 2C 20 20 70 6F 72 74 20 20 42 20 74 6F      0,  port  B to
004F20:  20 6F 75 74 70 75 74 2C 0D 6F 70 65 72 61 74 69     output,.operati
004F30:  6E 67 20 69 6E 20 6D 6F 64 65 20 30 20 61 6E 64    ng in mode 0 and
004F40:  20 70 6F 72 74 20 43 20 74 6F 20 69 6E 70 75 74     port C to input
004F50:  2C 20 6F 70 65 72 61 74 69 6E 67 20 69 6E 20 6D    , operating in m
004F60:  6F 64 65 20 30 2E 0D 0D 4C 44 20 42 2C 26 46 37    ode 0...LD B,&F7
004F70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
004F80:  3B 38 32 35 35 20 43 6F 6E 74 72 6F 6C 20 70 6F    ;8255 Control po
004F90:  72 74 0D 4C 44 20 41 2C 25 31 30 30 31 31 30 30    rt.LD A,%1001100
004FA0:  31 20 20 20 20 20 20 20 20 20 20 3B 43 6F 6E 66    1          ;Conf
004FB0:  69 67 75 72 61 74 69 6F 6E 20 66 75 6E 63 74 69    iguration functi
004FC0:  6F 6E 0D 4F 55 54 20 28 43 29 2C 41 20 20 20 20    on.OUT (C),A    
004FD0:  20 20 20 20 20 20 20 20 20 20 20 3B 53 65 6E 64               ;Send
004FE0:  20 69 74 20 74 6F 20 38 32 35 35 0D 52 45 54 0D     it to 8255.RET.
004FF0:  0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    .===============
005000:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005010:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005020:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005030:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005040:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005050:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005060:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005070:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005080:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005090:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0050A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0050B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0050C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0050D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0050E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0050F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0051A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0051B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0051C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0051D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0051E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0051F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
005200:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
005210:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
005220:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
005230:  3D 3D 3D 3D 3D 3D 3D 0D 0D 32 29 20 55 73 69 6E    =======..2) Usin
005240:  67 20 70 6F 72 74 20 41 2F 42 2F 43 2C 0D 0D 49    g port A/B/C,..I
005250:  6E 20 74 68 69 73 20 65 78 61 6D 70 6C 65 2C 20    n this example, 
005260:  70 6F 72 74 20 41 20 69 73 20 73 65 74 20 74 6F    port A is set to
005270:  20 20 6F 75 74 70 75 74 2C 20 70 6F 72 74 20 42      output, port B
005280:  20 69 73 20 73 65 74 20 74 6F 20 69 6E 70 75 74     is set to input
005290:  2C 20 61 6E 64 0D 70 6F 72 74 20 43 20 69 73 20    , and.port C is 
0052A0:  73 65 74 20 74 6F 20 6F 75 74 70 75 74 2C 20 61    set to output, a
0052B0:  6E 64 20 74 68 65 79 20 61 72 65 20 61 6C 6C 20    nd they are all 
0052C0:  6F 70 65 72 61 74 69 6E 67 20 69 6E 20 6D 6F 64    operating in mod
0052D0:  65 20 30 2E 0D 0D 57 65 20 77 69 6C 6C 20 6F 6E    e 0...We will on
0052E0:  6C 79 20 62 65 20 75 73 69 6E 67 20 70 6F 72 74    ly be using port
0052F0:  20 41 20 66 6F 72 20 74 68 65 73 65 20 65 78 61     A for these exa
005300:  6D 70 6C 65 73 2E 0D 0D 61 29 20 52 65 61 64 69    mples...a) Readi
005310:  6E 67 20 66 72 6F 6D 20 70 6F 72 74 20 41 2C 0D    ng from port A,.
005320:  0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
005330:  20 20 20 20 20 20 20 20 20 3B 53 65 74 20 70 6F             ;Set po
005340:  72 74 20 41 20 74 6F 20 69 6E 70 75 74 0D 0D 4C    rt A to input..L
005350:  44 20 42 2C 26 46 37 20 20 20 20 20 20 20 20 20    D B,&F7         
005360:  20 20 20 20 20 20 20 3B 38 32 35 35 20 43 6F 6E           ;8255 Con
005370:  74 72 6F 6C 20 70 6F 72 74 0D 4C 44 20 41 2C 25    trol port.LD A,%
005380:  31 30 30 31 30 30 31 30 20 20 20 20 20 20 20 20    10010010        
005390:  20 20 3B 43 6F 6E 66 69 67 75 72 61 74 69 6F 6E      ;Configuration
0053A0:  20 66 75 6E 63 74 69 6F 6E 0D 4F 55 54 20 28 43     function.OUT (C
0053B0:  29 2C 41 20 20 20 20 20 20 20 20 20 20 20 20 20    ),A             
0053C0:  20 20 3B 53 65 6E 64 20 74 6F 20 38 32 35 35 0D      ;Send to 8255.
0053D0:  0D 4C 44 20 42 2C 26 46 34 20 20 20 20 20 20 20    .LD B,&F4       
0053E0:  20 20 20 20 20 20 20 20 20 3B 50 6F 72 74 20 41             ;Port A
0053F0:  20 70 6F 72 74 20 61 64 64 72 65 73 73 0D 49 4E     port address.IN
005400:  1B 40 45 72 72 6F 72 20 63 6F 64 65 73 3A 0D 0D    .@Error codes:..
005410:  49 66 20 62 69 74 20 36 20 3D 20 30 20 74 68 65    If bit 6 = 0 the
005420:  6E 20 74 68 65 20 65 72 72 6F 72 20 6E 75 6D 62    n the error numb
005430:  65 72 73 20 61 72 65 20 61 73 20 66 6F 6C 6C 6F    ers are as follo
005440:  77 73 3A 0D 0D 26 30 45 20 20 20 20 20 46 69 6C    ws:..&0E     Fil
005450:  65 20 69 73 20 6E 6F 74 20 6F 70 65 6E 20 61 73    e is not open as
005460:  20 65 78 70 65 63 74 65 64 0D 26 30 46 20 20 20     expected.&0F   
005470:  20 20 48 61 72 64 20 65 6E 64 20 6F 66 20 66 69      Hard end of fi
005480:  6C 65 0D 0D 26 31 30 20 20 20 20 20 42 61 64 20    le..&10     Bad 
005490:  63 6F 6D 6D 61 6E 64 20 28 69 6E 63 6F 72 72 65    command (incorre
0054A0:  63 74 20 66 69 6C 65 6E 61 6D 65 3F 29 0D 26 31    ct filename?).&1
0054B0:  31 20 20 20 20 20 46 69 6C 65 20 65 78 69 73 74    1     File exist
0054C0:  73 2E 0D 26 31 32 20 20 20 20 20 46 69 6C 65 20    s..&12     File 
0054D0:  64 6F 65 73 6E 27 74 20 65 78 69 73 74 2E 0D 26    doesn't exist..&
0054E0:  31 33 20 20 20 20 20 44 69 72 65 63 74 6F 72 79    13     Directory
0054F0:  20 66 75 6C 6C 0D 26 31 34 20 20 20 20 20 44 69     full.&14     Di
005500:  73 63 20 69 73 20 66 75 6C 6C 2E 0D 26 31 35 20    sc is full..&15 
005510:  20 20 20 20 44 69 73 63 20 68 61 73 20 62 65 65        Disc has bee
005520:  6E 20 63 68 61 6E 67 65 64 20 77 69 74 68 20 66    n changed with f
005530:  69 6C 65 73 20 6F 70 65 6E 2E 0D 26 31 36 20 20    iles open..&16  
005540:  20 20 20 46 69 6C 65 20 69 73 20 72 65 61 64 2D       File is read-
005550:  6F 6E 6C 79 0D 0D 26 31 41 20 20 20 20 20 53 6F    only..&1A     So
005560:  66 74 20 65 6E 64 20 6F 66 20 66 69 6C 65 0D 0D    ft end of file..
005570:  26 30 30 20 20 20 20 20 55 73 65 72 20 68 61 73    &00     User has
005580:  20 68 69 74 20 65 73 63 61 70 65 0D 0D 49 66 20     hit escape..If 
005590:  62 69 74 20 36 20 3D 20 31 20 74 68 65 6E 20 74    bit 6 = 1 then t
0055A0:  68 65 20 65 72 72 6F 72 20 69 73 20 61 73 20 66    he error is as f
0055B0:  6F 6C 6C 6F 77 73 3A 0D 0D 42 69 74 20 35 20 20    ollows:..Bit 5  
0055C0:  20 44 61 74 61 20 45 72 72 6F 72 20 20 20 20 20     Data Error     
0055D0:  20 28 64 61 74 61 20 63 6F 72 72 75 70 74 69 6F     (data corruptio
0055E0:  6E 20 6F 6E 20 64 69 73 63 29 0D 42 69 74 20 34    n on disc).Bit 4
0055F0:  20 20 20 4F 76 65 72 72 75 6E 20 45 72 72 6F 72       Overrun Error
005600:  20 45 2C 28 43 29 20 20 20 20 20 20 20 20 20 20     E,(C)          
005610:  20 20 20 20 20 20 3B 47 65 74 20 62 79 74 65 20          ;Get byte 
005620:  66 72 6F 6D 20 70 6F 72 74 0D 0D 20 20 20 20 20    from port..     
005630:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005640:  20 20 20 3B 52 65 67 69 73 74 65 72 20 45 20 68       ;Register E h
005650:  6F 6C 64 73 20 76 61 6C 75 65 20 66 72 6F 6D 20    olds value from 
005660:  70 6F 72 74 0D 0D 20 20 20 20 20 20 20 20 20 20    port..          
005670:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 52                  ;R
005680:  65 74 75 72 6E 20 70 6F 72 74 20 49 2F 4F 20 73    eturn port I/O s
005690:  74 61 74 75 73 20 61 6E 64 20 6F 70 65 72 61 74    tatus and operat
0056A0:  69 6E 67 20 6D 6F 64 65 73 0D 20 20 20 20 20 20    ing modes.      
0056B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0056C0:  20 20 3B 74 6F 20 70 72 65 76 69 6F 75 73 20 73      ;to previous s
0056D0:  65 74 74 69 6E 67 73 2E 0D 0D 4C 44 20 42 2C 26    ettings...LD B,&
0056E0:  46 37 20 20 20 20 20 20 20 20 20 20 20 20 20 20    F7              
0056F0:  20 20 3B 38 32 35 35 20 43 6F 6E 74 72 6F 6C 20      ;8255 Control 
005700:  70 6F 72 74 0D 4C 44 20 41 2C 25 31 30 30 30 30    port.LD A,%10000
005710:  30 31 30 20 20 20 20 20 20 20 20 20 20 3B 43 6F    010          ;Co
005720:  6E 66 69 67 75 72 61 74 69 6F 6E 20 66 75 6E 63    nfiguration func
005730:  74 69 6F 6E 0D 4F 55 54 20 28 43 29 2C 41 20 20    tion.OUT (C),A  
005740:  20 20 20 20 20 20 20 20 20 20 20 20 20 3B 53 65                 ;Se
005750:  6E 64 20 74 6F 20 38 32 35 35 0D 52 45 54 0D 0D    nd to 8255.RET..
005760:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
005770:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
005780:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
005790:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0057A0:  3D 3D 3D 3D 3D 3D 0D 0D 62 29 20 57 72 69 74 69    ======..b) Writi
0057B0:  6E 67 20 74 6F 20 70 6F 72 74 20 41 2C 0D 0D 20    ng to port A,.. 
0057C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0057D0:  20 20 20 20 20 20 20 3B 53 65 74 20 70 6F 72 74           ;Set port
0057E0:  20 41 20 74 6F 20 6F 75 74 70 75 74 0D 0D 20 20     A to output..  
0057F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005800:  20 20 20 28 64 61 74 61 20 6E 6F 74 20 73 75 70       (data not sup
005810:  70 6C 69 65 64 20 74 6F 20 46 44 43 20 71 75 69    plied to FDC qui
005820:  63 6B 20 65 6E 6F 75 67 68 29 0D 42 69 74 20 33    ck enough).Bit 3
005830:  20 20 20 44 72 69 76 65 20 6E 6F 74 20 72 65 61       Drive not rea
005840:  64 79 20 28 64 69 73 63 20 6E 6F 74 20 69 6E 20    dy (disc not in 
005850:  64 72 69 76 65 29 0D 42 69 74 20 32 20 20 20 4E    drive).Bit 2   N
005860:  6F 20 64 61 74 61 20 28 73 65 63 74 6F 72 20 6E    o data (sector n
005870:  6F 74 20 66 6F 75 6E 64 29 0D 42 69 74 20 31 20    ot found).Bit 1 
005880:  20 20 6E 6F 74 20 77 72 69 74 61 62 6C 65 20 20      not writable  
005890:  20 20 28 64 69 73 63 20 69 73 20 77 72 69 74 65      (disc is write
0058A0:  20 70 72 6F 74 65 63 74 65 64 29 0D 62 69 74 20     protected).bit 
0058B0:  30 20 20 20 61 64 64 72 65 73 73 20 6D 61 72 6B    0   address mark
0058C0:  20 6D 69 73 73 69 6E 67 20 28 63 61 6E 6E 6F 74     missing (cannot
0058D0:  20 64 65 74 65 72 6D 69 6E 65 20 74 68 65 20 66     determine the f
0058E0:  6F 72 6D 61 74 20 66 6F 72 20 74 68 65 20 64 61    ormat for the da
0058F0:  74 61 0D 20 20 20 20 20 20 20 20 20 20 20 20 20    ta.             
005900:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005910:  20 69 6E 20 74 68 65 20 73 65 63 74 6F 72 29 2E     in the sector).
005920:  0D 0D 45 72 72 6F 72 20 73 74 61 74 75 73 20 62    ..Error status b
005930:  75 66 66 65 72 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    uffer.----------
005940:  2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 54 68 65 20 66    ---------..The f
005950:  69 72 73 74 20 76 61 6C 75 65 20 69 73 20 20 74    irst value is  t
005960:  68 65 20 20 6E 75 6D 62 65 72 20 20 6F 66 20 20    he  number  of  
005970:  62 79 74 65 73 20 20 72 65 63 69 65 76 65 64 20    bytes  recieved 
005980:  64 75 72 69 6E 67 20 74 68 65 20 72 65 73 75 6C    during the resul
005990:  74 0D 70 68 61 73 65 20 6F 66 20 74 68 65 20 46    t.phase of the F
0059A0:  44 43 20 28 61 73 20 20 64 65 73 63 72 69 62 65    DC (as  describe
0059B0:  64 20 20 65 6C 73 65 77 68 65 72 65 29 20 64 69    d  elsewhere) di
0059C0:  73 63 20 63 6F 6E 74 72 6F 6C 6C 65 72 2C 20 74    sc controller, t
0059D0:  68 6F 73 65 0D 66 6F 6C 6C 6F 77 69 6E 67 20 61    hose.following a
0059E0:  72 65 20 74 68 65 20 62 79 74 65 73 20 72 65 63    re the bytes rec
0059F0:  69 65 76 65 64 2E 20 28 46 6F 72 20 61 20 66 75    ieved. (For a fu
005A00:  20 20 20 20 20 20 3B 28 4E 6F 74 65 20 74 68 65          ;(Note the
005A10:  20 6E 65 78 74 20 66 65 77 20 6C 69 6E 65 73 20     next few lines 
005A20:  61 72 65 20 6E 6F 74 20 6E 65 63 65 73 73 61 72    are not necessar
005A30:  79 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20    y.              
005A40:  20 20 20 20 20 20 20 20 20 20 3B 61 73 20 70 6F              ;as po
005A50:  72 74 20 41 20 69 73 20 61 6C 72 65 61 64 79 20    rt A is already 
005A60:  61 63 74 69 6E 67 20 61 73 20 6F 75 74 70 75 74    acting as output
005A70:  2C 20 68 6F 77 65 76 65 72 0D 20 20 20 20 20 20    , however.      
005A80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005A90:  20 20 3B 69 74 20 69 73 20 67 69 76 65 6E 20 68      ;it is given h
005AA0:  65 72 65 20 6A 75 73 74 20 74 6F 20 6D 61 6B 65    ere just to make
005AB0:  20 74 68 65 20 65 78 61 6D 70 6C 65 0D 20 20 20     the example.   
005AC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005AD0:  20 20 20 20 20 3B 6D 6F 72 65 20 75 6E 64 65 72         ;more under
005AE0:  73 74 61 6E 64 61 62 6C 65 29 0D 0D 4C 44 20 42    standable)..LD B
005AF0:  2C 26 46 37 20 20 20 20 20 20 20 20 20 20 20 20    ,&F7            
005B00:  20 20 20 20 3B 38 32 35 35 20 43 6F 6E 74 72 6F        ;8255 Contro
005B10:  6C 20 70 6F 72 74 0D 4C 44 20 41 2C 25 31 30 30    l port.LD A,%100
005B20:  30 30 30 31 30 20 20 20 20 20 20 20 20 20 20 3B    00010          ;
005B30:  43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 66 75    Configuration fu
005B40:  6E 63 74 69 6F 6E 0D 4F 55 54 20 28 43 29 2C 41    nction.OUT (C),A
005B50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B                   ;
005B60:  53 65 6E 64 20 74 6F 20 38 32 35 35 0D 0D 4C 44    Send to 8255..LD
005B70:  20 42 2C 26 46 34 20 20 20 20 20 20 20 20 20 20     B,&F4          
005B80:  20 20 20 20 20 20 3B 70 6F 72 74 20 41 20 70 6F          ;port A po
005B90:  72 74 20 61 64 64 72 65 73 73 0D 0D 20 20 20 20    rt address..    
005BA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005BB0:  20 20 20 20 3B 52 65 67 69 73 74 65 72 20 45 20        ;Register E 
005BC0:  68 6F 6C 64 73 20 76 61 6C 75 65 20 74 6F 20 70    holds value to p
005BD0:  75 74 20 69 6E 74 6F 20 70 6F 72 74 0D 0D 4C 44    ut into port..LD
005BE0:  20 45 2C 26 46 46 20 20 20 20 20 20 20 20 20 20     E,&FF          
005BF0:  20 20 20 20 20 20 3B 44 61 74 61 20 74 6F 20 70          ;Data to p
005C00:  6C 6C 20 64 65 73 63 72 69 70 74 69 6F 6E 20 73    ll description s
005C10:  65 65 20 6E 6F 74 65 73 20 6F 6E 0D 46 44 43 29    ee notes on.FDC)
005C20:  2E 0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ...-------------
005C30:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
005C40:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
005C50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
005C60:  2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 42 49 4F 53 3A 20    --------..BIOS: 
005C70:  53 45 54 20 4D 45 53 53 41 47 45 20 2D 20 53 65    SET MESSAGE - Se
005C80:  74 20 6D 65 73 73 61 67 65 73 20 74 6F 20 62 65    t messages to be
005C90:  20 64 69 73 70 6C 61 79 65 64 20 6F 72 20 6E 6F     displayed or no
005CA0:  74 2E 0D 0D 45 6E 74 72 79 3A 0D 0D 49 66 20 6D    t...Entry:..If m
005CB0:  65 73 73 61 67 65 73 20 61 72 65 20 74 6F 20 62    essages are to b
005CC0:  65 20 65 6E 61 62 6C 65 64 3A 0D 0D 41 20 3D 20    e enabled:..A = 
005CD0:  26 30 0D 0D 49 66 20 6D 65 73 73 61 67 65 73 20    &0..If messages 
005CE0:  64 69 73 61 62 6C 65 64 3A 0D 0D 41 20 3D 20 26    disabled:..A = &
005CF0:  46 46 0D 0D 45 78 69 74 3A 0D 0D 41 20 3D 20 70    FF..Exit:..A = p
005D00:  72 65 76 69 6F 75 73 20 73 74 61 74 65 0D 48 4C    revious state.HL
005D10:  20 61 6E 64 20 66 6C 61 67 73 20 63 6F 72 72 75     and flags corru
005D20:  70 74 2E 0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    pt...-----------
005D30:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
005D40:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
005D50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
005D60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 42 49 4F 53    ----------..BIOS
005D70:  3A 20 53 45 54 55 50 20 44 49 53 43 20 2D 20 53    : SETUP DISC - S
005D80:  65 74 75 70 20 64 69 73 63 20 69 6E 66 6F 72 6D    etup disc inform
005D90:  61 74 69 6F 6E 0D 0D 45 6E 74 72 79 3A 0D 0D 48    ation..Entry:..H
005DA0:  4C 20 3D 20 61 64 64 72 65 73 73 20 6F 66 20 70    L = address of p
005DB0:  61 72 61 6D 65 74 65 72 20 62 6C 6F 63 6B 0D 0D    arameter block..
005DC0:  45 78 69 74 3A 0D 0D 41 46 2C 42 43 2C 44 45 2C    Exit:..AF,BC,DE,
005DD0:  48 4C 20 63 6F 72 72 75 70 74 2E 0D 0D 4E 6F 74    HL corrupt...Not
005DE0:  65 73 3A 0D 0D 50 61 72 61 6D 65 74 65 72 20 62    es:..Parameter b
005DF0:  6C 6F 63 6B 3A 0D 0D 42 79 74 65 20 20 20 20 44    lock:..Byte    D
005E00:  75 74 20 69 6E 74 6F 20 70 6F 72 74 0D 4F 55 54    ut into port.OUT
005E10:  20 28 43 29 2C 41 20 20 20 20 20 20 20 20 20 20     (C),A          
005E20:  20 20 20 20 20 3B 53 65 6E 64 20 74 6F 20 70 6F         ;Send to po
005E30:  72 74 20 41 0D 0D 20 20 20 20 20 20 20 20 20 20    rt A..          
005E40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 52                  ;R
005E50:  65 74 75 72 6E 20 70 6F 72 74 20 49 2F 4F 20 73    eturn port I/O s
005E60:  74 61 74 75 73 20 61 6E 64 20 6F 70 65 72 61 74    tatus and operat
005E70:  69 6E 67 20 6D 6F 64 65 73 0D 20 20 20 20 20 20    ing modes.      
005E80:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005E90:  20 20 3B 74 6F 20 70 72 65 76 69 6F 75 73 20 73      ;to previous s
005EA0:  65 74 74 69 6E 67 73 2E 0D 0D 4C 44 20 42 2C 26    ettings...LD B,&
005EB0:  46 37 20 20 20 20 20 20 20 20 20 20 20 20 20 20    F7              
005EC0:  20 20 3B 38 32 35 35 20 43 6F 6E 74 72 6F 6C 20      ;8255 Control 
005ED0:  70 6F 72 74 0D 4C 44 20 41 2C 25 31 30 30 30 30    port.LD A,%10000
005EE0:  30 31 30 20 20 20 20 20 20 20 20 20 20 3B 43 6F    010          ;Co
005EF0:  6E 66 69 67 75 72 61 74 69 6F 6E 20 66 75 6E 63    nfiguration func
005F00:  74 69 6F 6E 0D 4F 55 54 20 28 43 29 2C 41 0D 52    tion.OUT (C),A.R
005F10:  45 54 0D 0D 1A 75 72 70 6F 73 65 20 20 69 6E 70    ET...urpose  inp
005F20:  75 74 20 20 6F 75 74 70 75 74 20 20 63 68 69 70    ut  output  chip
005F30:  2E 20 1A 31 30 30 30 30 30 31 30 09 09 3B 43 6F    . .10000010..;Co
005F40:  6E 66 69 67 75 72 61 74 69 6F 6E 20 66 75 6E 63    nfiguration func
005F50:  74 69 6F 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    tio.............
005F60:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
005F70:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
005F80:  20 20 20 20 20 20 3B 70 6F 72 74 20 41 20 70 6F          ;port A po
005F90:  72 74 20 61 64 64 72 65 73 73 0D 0D 20 20 20 20    rt address..    
005FA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
005FB0:  20 20 20 20 3B 52 65 67 69 73 74 65 72 20 45 20        ;Register E 
005FC0:  68 6F 6C 64 73 20 76 61 6C 75 65 20 74 6F 20 70    holds value to p
005FD0:  75 74 20 69 6E 74 6F 20 70 6F 72 74 0D 0D 4C 44    ut into port..LD
005FE0:  20 45 2C 26 46 46 20 20 20 20 20 20 20 20 20 20     E,&FF          
005FF0:  20 20 20 20 20 20 3B 44 61 74 61 20 74 6F 20 70          ;Data to p
006000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
006010:  05 00 01 00 02 09 4E E5 05 00 C1 02 00 00 00 02    ......N.........
006020:  05 00 C6 02 00 00 00 02 05 00 C2 02 00 00 00 02    ................
006030:  05 00 C7 02 00 00 00 02 05 00 C3 02 00 00 00 02    ................
006040:  05 00 C8 02 00 00 00 02 05 00 C4 02 00 00 00 02    ................
006050:  05 00 C9 02 00 00 00 02 05 00 C5 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:  65 66 61 75 6C 74 20 20 20 20 20 20 20 20 20 46    efault         F
006110:  75 6E 63 74 69 6F 6E 0D 0D 30 2C 31 20 20 20 20    unction..0,1    
006120:  20 35 30 20 20 20 20 20 20 20 20 20 20 20 20 20     50             
006130:  20 4D 6F 74 6F 72 20 6F 6E 20 74 69 6D 65 6F 75     Motor on timeou
006140:  74 20 28 32 30 20 6D 69 6C 6C 69 73 65 63 6F 6E    t (20 millisecon
006150:  64 20 75 6E 69 74 73 29 0D 32 2C 33 20 20 20 20    d units).2,3    
006160:  20 32 35 30 20 20 20 20 20 20 20 20 20 20 20 20     250            
006170:  20 4D 6F 74 6F 72 20 6F 66 66 20 74 69 6D 65 6F     Motor off timeo
006180:  75 74 20 28 32 30 20 6D 69 6C 6C 69 73 65 63 6F    ut (20 milliseco
006190:  6E 64 20 75 6E 69 74 73 29 0D 34 20 20 20 20 20    nd units).4     
0061A0:  20 20 31 37 35 20 20 20 20 20 20 20 20 20 20 20      175           
0061B0:  20 20 57 72 69 74 65 20 6F 66 66 20 74 69 6D 65      Write off time
0061C0:  20 28 31 30 20 6D 69 63 72 6F 73 65 63 6F 6E 64     (10 microsecond
0061D0:  20 75 6E 69 74 73 29 0D 35 20 20 20 20 20 20 20     units).5       
0061E0:  31 35 20 20 20 20 20 20 20 20 20 20 20 20 20 20    15              
0061F0:  48 65 61 64 20 73 65 74 74 6C 65 20 74 69 6D 65    Head settle time
006200:  20 28 31 20 6D 69 6C 6C 69 73 65 63 6F 6E 64 20     (1 millisecond 
006210:  75 6E 69 74 73 29 0D 36 20 20 20 20 20 20 20 31    units).6       1
006220:  32 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53    2              S
006230:  74 65 70 20 72 61 74 65 20 74 69 6D 65 20 28 31    tep rate time (1
006240:  20 6D 69 6C 6C 69 73 65 63 6F 6E 64 20 75 6E 69     millisecond uni
006250:  74 73 29 0D 37 20 20 20 20 20 20 20 31 20 20 20    ts).7       1   
006260:  20 20 20 20 20 20 20 20 20 20 20 20 7D 20 48 65                } He
006270:  61 64 20 75 6E 6C 6F 61 64 20 64 65 6C 61 79 20    ad unload delay 
006280:  20 20 20 20 20 20 20 20 20 20 20 20 7C 0D 38 20                |.8 
006290:  20 20 20 20 20 20 31 20 20 20 20 20 20 20 20 20          1         
0062A0:  20 20 20 20 20 20 7D 20 62 69 74 73 20 37 2D 31          } bits 7-1
0062B0:  20 2D 20 68 65 61 64 20 6C 6F 61 64 20 64 65 6C     - head load del
0062C0:  61 79 20 20 20 20 7C 20 73 65 65 20 69 6E 66 6F    ay    | see info
0062D0:  20 6F 6E 20 46 44 43 0D 20 20 20 20 20 20 20 20     on FDC.        
0062E0:  31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    1               
0062F0:  62 69 74 20 20 20 20 30 20 2D 20 6E 6F 6E 2D 44    bit    0 - non-D
006300:  0D 4F 74 68 65 72 20 66 6C 61 67 73 20 63 6F 72    .Other flags cor
006310:  72 75 70 74 0D 0D 4E 6F 74 65 73 3A 0D 0D 46 6F    rupt..Notes:..Fo
006320:  72 6D 61 74 20 68 65 61 64 65 72 20 64 61 74 61    rmat header data
006330:  3A 0D 0D 54 68 69 73 20 69 73 20 74 68 65 20 73    :..This is the s
006340:  61 6D 65 20 61 73 20 74 68 65 20 20 66 6F 72 6D    ame as the  form
006350:  61 74 20 20 64 61 74 61 20 20 73 65 6E 74 20 20    at  data  sent  
006360:  74 6F 20 74 68 65 20 46 44 43 20 66 6F 72 20 69    to the FDC for i
006370:  74 73 20 66 6F 72 6D 61 74 0D 63 6F 6D 6D 61 6E    ts format.comman
006380:  64 2E 20 54 68 65 20 66 6F 72 6D 61 74 20 68 65    d. The format he
006390:  61 64 65 72 20 64 61 74 61 20 20 63 6F 6E 73 69    ader data  consi
0063A0:  73 74 73 20 20 6F 66 20 20 65 6E 74 72 69 65 73    sts  of  entries
0063B0:  20 20 6F 66 20 34 20 62 79 74 65 73 2E 20 41 6E      of 4 bytes. An
0063C0:  0D 65 6E 74 72 79 20 69 73 20 6E 65 65 64 65 64    .entry is needed
0063D0:  20 70 65 72 20 73 65 63 74 6F 72 2E 0D 0D 45 61     per sector...Ea
0063E0:  63 68 20 65 6E 74 72 79 20 68 61 73 20 74 68 65    ch entry has the
0063F0:  20 66 6F 72 6D 3A 0D 0D 42 79 74 65 0D 0D 30 20     form:..Byte..0 
006400:  20 20 20 20 20 20 20 74 72 61 63 6B 20 6E 75 6D           track num
006410:  62 65 72 0D 31 20 20 20 20 20 20 20 20 68 65 61    ber.1        hea
006420:  64 20 6E 75 6D 62 65 72 20 28 73 69 64 65 29 0D    d number (side).
006430:  32 20 20 20 20 20 20 20 20 73 65 63 74 6F 72 20    2        sector 
006440:  6E 75 6D 62 65 72 0D 33 20 20 20 20 20 20 20 20    number.3        
006450:  73 65 63 74 6F 72 20 73 69 7A 65 20 28 30 20 2D    sector size (0 -
006460:  20 31 32 38 20 62 79 74 65 73 2C 20 31 20 2D 20     128 bytes, 1 - 
006470:  32 35 36 20 62 79 74 65 73 2C 20 32 20 2D 20 35    256 bytes, 2 - 5
006480:  31 32 20 62 79 74 65 73 2C 20 65 74 63 29 0D 0D    12 bytes, etc)..
006490:  28 66 6F 72 20 73 70 65 63 69 61 6C 20 66 6F 72    (for special for
0064A0:  6D 61 74 73 20 69 74 20 69 73 20 6E 6F 74 20 20    mats it is not  
0064B0:  6E 65 63 65 73 73 61 72 79 20 20 66 6F 72 20 20    necessary  for  
0064C0:  74 68 65 20 74 72 61 63 6B 20 6E 75 6D 62 65 72    the track number
0064D0:  20 74 6F 20 62 65 0D 74 68 65 20 73 61 6D 65 20     to be.the same 
0064E0:  61 73 20 74 68 65 20 74 72 61 63 6B 20 20 74 68    as the track  th
0064F0:  65 20 20 64 72 69 76 65 20 20 72 65 61 64 69 6E    e  drive  readin
006500:  4D 41 20 6D 6F 64 65 20 20 20 20 20 20 20 7C 20    MA mode       | 
006510:  53 50 45 43 49 46 59 20 63 6F 6D 6D 61 6E 64 0D    SPECIFY command.
006520:  0D 54 68 65 20 70 72 6F 67 72 61 6D 6D 65 64 20    .The programmed 
006530:  76 61 6C 75 65 73 20 61 72 65 20 75 73 65 64 20    values are used 
006540:  66 6F 72 20 62 6F 74 68 20 64 72 69 76 65 73 2E    for both drives.
006550:  0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ..--------------
006560:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
006570:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
006580:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
006590:  2D 2D 2D 2D 2D 2D 2D 0D 0D 42 49 4F 53 3A 20 53    -------..BIOS: S
0065A0:  45 4C 45 43 54 20 46 4F 52 4D 41 54 20 2D 20 49    ELECT FORMAT - I
0065B0:  6E 69 74 69 6C 69 73 65 20 64 61 74 61 20 70 61    nitilise data pa
0065C0:  72 61 6D 65 74 65 72 73 20 66 6F 72 20 73 65 6C    rameters for sel
0065D0:  65 63 74 65 64 20 66 6F 72 6D 61 74 0D 0D 45 6E    ected format..En
0065E0:  74 72 79 3A 0D 0D 41 20 3D 20 26 34 31 2C 20 26    try:..A = &41, &
0065F0:  43 31 20 6F 72 20 26 30 31 0D 0D 26 34 31 20 2D    C1 or &01..&41 -
006600:  20 53 79 73 74 65 6D 20 66 6F 72 6D 61 74 0D 26     System format.&
006610:  43 31 20 2D 20 44 61 74 61 20 66 6F 72 6D 61 74    C1 - Data format
006620:  0D 26 30 31 20 2D 20 49 42 4D 20 66 6F 72 6D 61    .&01 - IBM forma
006630:  74 0D 0D 45 20 3D 20 64 72 69 76 65 20 6E 75 6D    t..E = drive num
006640:  62 65 72 20 28 41 20 3D 20 30 2C 20 42 20 3D 20    ber (A = 0, B = 
006650:  31 29 0D 0D 45 78 69 74 3A 0D 0D 41 46 2C 42 43    1)..Exit:..AF,BC
006660:  2C 44 45 2C 48 4C 20 63 6F 72 72 75 70 74 2E 0D    ,DE,HL corrupt..
006670:  0D 4E 6F 74 65 73 3A 0D 0D 42 79 74 65 73 20 30    .Notes:..Bytes 0
006680:  2D 32 31 20 61 72 65 20 72 65 73 65 74 20 74 6F    -21 are reset to
006690:  20 74 68 65 20 20 76 61 6C 75 65 73 20 20 66 6F     the  values  fo
0066A0:  72 20 65 61 63 68 20 70 61 72 74 69 63 75 6C 61    r each particula
0066B0:  72 20 66 6F 72 6D 61 74 2E 20 42 79 74 65 73 0D    r format. Bytes.
0066C0:  32 32 2D 32 34 20 72 65 6D 61 69 6E 20 75 6E 74    22-24 remain unt
0066D0:  6F 75 63 68 65 64 2E 0D 0D 49 66 20 74 68 65 20    ouched...If the 
0066E0:  75 73 65 72 20 77 61 6E 74 73 20 74 6F 20 75 73    user wants to us
0066F0:  65 20 61 20 73 70 65 63 69 61 6C 20 66 6F 72 6D    e a special form
006700:  67 2F 77 72 69 74 69 6E 67 20 68 65 61 64 20 69    g/writing head i
006710:  73 20 6C 6F 63 61 74 65 64 20 6F 6E 2C 0D 61 6C    s located on,.al
006720:  73 6F 20 79 6F 75 20 63 61 6E 20 68 61 76 65 20    so you can have 
006730:  64 69 66 66 65 72 65 6E 74 20 73 65 63 74 6F 72    different sector
006740:  20 6E 75 6D 62 65 72 73 20 61 6E 64 20 68 65 61     numbers and hea
006750:  64 20 76 61 6C 75 65 73 29 2E 0D 0D 54 68 65 20    d values)...The 
006760:  45 78 70 61 6E 64 65 64 20 64 69 73 63 20 70 61    Expanded disc pa
006770:  72 61 6D 65 74 65 72 20 62 6C 6F 63 6B 20 6D 75    rameter block mu
006780:  73 74 20 62 65 20 69 6E 69 74 69 61 6C 69 73 65    st be initialise
006790:  64 20 66 6F 72 20 74 68 65 20 72 65 71 75 69 72    d for the requir
0067A0:  65 64 0D 66 6F 72 6D 61 74 2E 0D 0D 2D 2D 2D 2D    ed.format...----
0067B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0067C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0067D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0067E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0067F0:  2D 2D 0D 0D 42 49 4F 53 3A 20 4D 4F 56 45 20 54    --..BIOS: MOVE T
006800:  52 41 43 4B 20 2D 20 4D 6F 76 65 20 74 6F 20 73    RACK - Move to s
006810:  70 65 63 69 66 69 65 64 20 74 72 61 63 6B 0D 0D    pecified track..
006820:  45 6E 74 72 79 3A 0D 0D 45 20 3D 20 64 72 69 76    Entry:..E = driv
006830:  65 20 6E 75 6D 62 65 72 0D 44 20 3D 20 74 72 61    e number.D = tra
006840:  63 6B 20 6E 75 6D 62 65 72 0D 0D 45 78 69 74 3A    ck number..Exit:
006850:  0D 0D 49 66 20 6D 6F 76 65 64 20 4F 4B 3A 0D 0D    ..If moved OK:..
006860:  43 61 72 72 79 20 74 72 75 65 2E 0D 41 20 3D 20    Carry true..A = 
006870:  30 0D 48 4C 20 75 6E 63 68 61 6E 67 65 64 2E 0D    0.HL unchanged..
006880:  0D 49 66 20 6D 6F 76 65 20 66 61 69 6C 65 64 3A    .If move failed:
006890:  0D 0D 43 61 72 72 79 20 66 61 6C 73 65 2E 0D 41    ..Carry false..A
0068A0:  20 3D 20 65 72 72 6F 72 20 73 74 61 74 75 73 20     = error status 
0068B0:  62 79 74 65 0D 48 4C 20 3D 20 61 64 64 72 65 73    byte.HL = addres
0068C0:  73 20 6F 66 20 65 72 72 6F 72 20 73 74 61 74 75    s of error statu
0068D0:  73 20 62 75 66 66 65 72 0D 0D 4F 74 68 65 72 20    s buffer..Other 
0068E0:  66 6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0D    flags corrupt...
0068F0:  4E 6F 74 65 73 3A 0D 0D 54 68 65 20 72 65 61 64    Notes:..The read
006900:  61 74 2C 20 74 68 65 79 20 6D 75 73 74 20 70 6F    at, they must po
006910:  6B 65 20 69 6E 74 6F 20 74 68 65 0D 65 78 74 65    ke into the.exte
006920:  6E 64 65 64 20 64 69 73 63 20 70 61 72 61 6D 65    nded disc parame
006930:  74 65 72 20 62 6C 6F 63 6B 20 64 69 72 65 63 74    ter block direct
006940:  6C 79 2E 0D 0D 4D 61 6B 65 20 73 75 72 65 2C 20    ly...Make sure, 
006950:  61 75 74 6F 20 73 65 6C 65 63 74 20 66 6F 72 6D    auto select form
006960:  61 74 20 3D 20 4E 4F 2C 20 6F 74 68 65 72 77 69    at = NO, otherwi
006970:  73 65 2C 20 77 68 65 6E 20 61 20 6E 65 77 20 64    se, when a new d
006980:  69 73 63 20 69 73 20 70 75 74 0D 69 6E 20 61 6E    isc is put.in an
006990:  64 20 6F 70 65 72 61 74 65 64 20 6F 6E 2C 20 74    d operated on, t
0069A0:  68 65 20 64 69 73 63 20 70 61 72 61 6D 65 74 65    he disc paramete
0069B0:  72 20 62 6C 6F 63 6B 20 77 69 6C 6C 20 63 68 61    r block will cha
0069C0:  6E 67 65 2E 0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    nge...----------
0069D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0069E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0069F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
006A00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 42 49 4F    -----------..BIO
006A10:  53 3A 20 52 45 41 44 20 53 45 43 54 4F 52 20 2D    S: READ SECTOR -
006A20:  20 52 65 61 64 20 61 20 73 65 63 74 6F 72 20 69     Read a sector i
006A30:  6E 74 6F 20 6D 65 6D 6F 72 79 0D 0D 45 6E 74 72    nto memory..Entr
006A40:  79 3A 0D 0D 48 4C 20 3D 20 61 64 64 72 65 73 73    y:..HL = address
006A50:  20 74 6F 20 70 75 74 20 73 65 63 74 6F 72 20 64     to put sector d
006A60:  61 74 61 0D 45 20 3D 20 64 72 69 76 65 20 6E 75    ata.E = drive nu
006A70:  6D 62 65 72 20 28 30 2D 31 29 0D 44 20 3D 20 74    mber (0-1).D = t
006A80:  72 61 63 6B 20 6E 75 6D 62 65 72 20 28 30 2D 34    rack number (0-4
006A90:  32 29 0D 43 20 3D 20 73 65 63 74 6F 72 20 6E 75    2).C = sector nu
006AA0:  6D 62 65 72 20 28 61 6E 79 20 2D 20 64 65 70 65    mber (any - depe
006AB0:  6E 64 73 20 6F 6E 20 66 6F 72 6D 61 74 29 0D 0D    nds on format)..
006AC0:  45 78 69 74 3A 0D 0D 49 66 20 73 65 63 74 6F 72    Exit:..If sector
006AD0:  20 72 65 61 64 20 4F 4B 3A 0D 0D 43 61 72 72 79     read OK:..Carry
006AE0:  20 74 72 75 65 2E 20 41 20 3D 20 30 2E 0D 0D 49     true. A = 0...I
006AF0:  66 20 66 61 69 6C 65 64 20 74 6F 20 72 65 61 64    f failed to read
006B00:  2F 77 72 69 74 65 2F 66 6F 72 6D 61 74 20 20 72    /write/format  r
006B10:  6F 75 74 69 6E 65 73 20 20 6D 6F 76 65 20 20 61    outines  move  a
006B20:  75 74 6F 6D 61 74 69 63 61 6C 6C 79 20 20 74 6F    utomatically  to
006B30:  20 20 74 68 65 20 20 63 6F 72 72 65 63 74 0D 74      the  correct.t
006B40:  72 61 63 6B 2E 0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D    rack...---------
006B50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
006B60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
006B70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
006B80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 42    -------------..B
006B90:  49 4F 53 3A 20 47 45 54 20 44 52 20 53 54 41 54    IOS: GET DR STAT
006BA0:  55 53 20 2D 20 47 65 74 20 73 74 61 74 75 73 20    US - Get status 
006BB0:  72 65 67 69 73 74 65 72 20 33 20 6F 66 20 75 50    register 3 of uP
006BC0:  44 37 36 35 41 20 64 69 73 63 20 63 6F 6E 74 72    D765A disc contr
006BD0:  6F 6C 6C 65 72 0D 0D 45 6E 74 72 79 3A 0D 0D 41    oller..Entry:..A
006BE0:  20 3D 20 64 72 69 76 65 20 6E 75 6D 62 65 72 0D     = drive number.
006BF0:  0D 45 78 69 74 3A 0D 0D 49 66 20 63 61 72 72 79    .Exit:..If carry
006C00:  20 74 72 75 65 3A 0D 0D 41 20 3D 20 64 72 69 76     true:..A = driv
006C10:  65 20 73 74 61 74 75 73 20 62 79 74 65 20 61 73    e status byte as
006C20:  20 62 65 6C 6F 77 20 28 53 74 61 74 75 73 20 72     below (Status r
006C30:  65 67 69 73 74 65 72 20 33 20 6F 66 20 46 44 43    egister 3 of FDC
006C40:  29 2E 0D 48 4C 20 75 6E 63 68 61 6E 67 65 64 2E    )..HL unchanged.
006C50:  0D 0D 49 66 20 63 61 72 72 79 20 66 61 6C 73 65    ..If carry false
006C60:  3A 0D 0D 48 4C 20 3D 20 61 64 64 72 65 73 73 20    :..HL = address 
006C70:  6F 66 20 65 72 72 6F 72 20 20 73 74 61 74 75 73    of error  status
006C80:  20 20 62 75 66 66 65 72 2C 20 20 73 65 63 6F 6E      buffer,  secon
006C90:  64 20 20 62 79 74 65 20 20 3D 20 73 74 61 74 75    d  byte  = statu
006CA0:  73 20 62 79 74 65 20 61 73 0D 62 65 6C 6F 77 0D    s byte as.below.
006CB0:  41 20 63 6F 72 72 75 70 74 0D 0D 4F 74 68 65 72    A corrupt..Other
006CC0:  20 66 6C 61 67 73 20 63 6F 72 72 75 70 74 0D 0D     flags corrupt..
006CD0:  4E 6F 74 65 73 3A 0D 0D 42 69 74 20 20 20 20 20    Notes:..Bit     
006CE0:  46 75 6E 63 74 69 6F 6E 0D 0D 37 20 20 20 20 20    Function..7     
006CF0:  20 20 75 6E 64 65 66 69 6E 65 64 0D 36 20 20 20      undefined.6   
006D00:  20 73 65 63 74 6F 72 20 63 6F 72 72 65 63 74 6C     sector correctl
006D10:  79 3A 0D 0D 43 61 72 72 79 20 66 61 6C 73 65 2E    y:..Carry false.
006D20:  20 41 20 3D 20 65 72 72 6F 72 20 73 74 61 74 75     A = error statu
006D30:  73 20 62 79 74 65 20 28 73 65 65 20 61 62 6F 76    s byte (see abov
006D40:  65 29 0D 48 4C 20 3D 20 61 64 64 72 65 73 73 20    e).HL = address 
006D50:  6F 66 20 65 72 72 6F 72 20 73 74 61 74 75 73 20    of error status 
006D60:  62 75 66 66 65 72 20 28 73 65 65 20 61 62 6F 76    buffer (see abov
006D70:  65 29 0D 0D 4F 74 68 65 72 20 66 6C 61 67 73 20    e)..Other flags 
006D80:  63 6F 72 72 75 70 74 2E 0D 0D 2D 2D 2D 2D 2D 2D    corrupt...------
006D90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
006DA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
006DB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
006DC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D    ---------------.
006DD0:  42 49 4F 53 3A 20 57 52 49 54 45 20 53 45 43 54    BIOS: WRITE SECT
006DE0:  4F 52 20 2D 20 57 72 69 74 65 20 61 20 73 65 63    OR - Write a sec
006DF0:  74 6F 72 20 74 6F 20 64 69 73 63 0D 0D 45 6E 74    tor to disc..Ent
006E00:  72 79 3A 0D 0D 48 4C 20 3D 20 61 64 64 72 65 73    ry:..HL = addres
006E10:  73 20 74 6F 20 67 65 74 20 73 65 63 74 6F 72 20    s to get sector 
006E20:  64 61 74 61 20 66 72 6F 6D 0D 45 20 3D 20 64 72    data from.E = dr
006E30:  69 76 65 20 6E 75 6D 62 65 72 20 28 41 20 3D 20    ive number (A = 
006E40:  30 2C 20 42 20 3D 20 31 29 0D 44 20 3D 20 74 72    0, B = 1).D = tr
006E50:  61 63 6B 20 6E 75 6D 62 65 72 0D 43 20 3D 20 73    ack number.C = s
006E60:  65 63 74 6F 72 20 6E 75 6D 62 65 72 0D 0D 45 78    ector number..Ex
006E70:  69 74 3A 0D 0D 49 66 20 73 65 63 74 6F 72 20 77    it:..If sector w
006E80:  72 69 74 74 65 6E 20 4F 4B 3A 0D 0D 43 61 72 72    ritten OK:..Carr
006E90:  79 20 74 72 75 65 2E 0D 41 20 3D 20 30 0D 48 4C    y true..A = 0.HL
006EA0:  20 75 6E 63 68 61 6E 67 65 64 2E 0D 0D 49 66 20     unchanged...If 
006EB0:  73 65 63 74 6F 72 20 77 61 73 6E 27 74 20 77 72    sector wasn't wr
006EC0:  69 74 74 65 6E 20 63 6F 72 72 65 63 74 6C 79 3A    itten correctly:
006ED0:  0D 0D 43 61 72 72 79 20 66 61 6C 73 65 2E 0D 41    ..Carry false..A
006EE0:  20 3D 20 65 72 72 6F 72 20 62 79 74 65 20 20 20     = error byte   
006EF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
006F00:  20 20 20 20 66 6C 61 67 20 20 74 6F 20 20 69 6E        flag  to  in
006F10:  64 69 63 61 74 65 20 20 69 66 20 20 64 72 69 76    dicate  if  driv
006F20:  65 20 20 69 73 20 20 77 72 69 74 65 20 20 70 72    e  is  write  pr
006F30:  6F 74 65 63 74 65 64 20 20 28 31 3A 77 72 69 74    otected  (1:writ
006F40:  65 0D 20 20 20 20 20 20 20 20 70 72 6F 74 65 63    e.        protec
006F50:  74 65 64 29 0D 35 20 20 20 20 20 20 20 46 6C 61    ted).5       Fla
006F60:  67 20 74 6F 20 69 6E 64 69 63 61 74 65 20 69 66    g to indicate if
006F70:  20 64 72 69 76 65 20 72 65 61 64 79 20 28 31 3D     drive ready (1=
006F80:  72 65 61 64 79 29 0D 34 20 20 20 20 20 20 20 46    ready).4       F
006F90:  6C 61 67 20 74 6F 20 69 6E 64 69 63 61 74 65 20    lag to indicate 
006FA0:  69 66 20 68 65 61 64 20 69 73 20 6F 6E 20 74 72    if head is on tr
006FB0:  61 63 6B 20 30 20 28 31 3D 61 74 20 74 72 61 63    ack 0 (1=at trac
006FC0:  6B 20 30 29 0D 33 20 20 20 20 20 20 20 75 6E 64    k 0).3       und
006FD0:  65 66 69 6E 65 64 0D 32 20 20 20 20 20 20 20 68    efined.2       h
006FE0:  65 61 64 2F 73 69 64 65 20 28 30 29 0D 31 20 20    ead/side (0).1  
006FF0:  20 20 20 20 20 30 0D 30 20 20 20 20 20 20 20 73         0.0       s
007000:  65 6C 65 63 74 65 64 20 64 72 69 76 65 20 28 41    elected drive (A
007010:  3D 30 2C 20 42 3D 31 29 0D 0D 49 66 20 61 6E 79    =0, B=1)..If any
007020:  20 6F 66 20 74 68 65 20 62 69 74 73 20 34 2D 36     of the bits 4-6
007030:  20 61 72 65 20 73 65 74 20 28 31 29 20 74 68 65     are set (1) the
007040:  6E 20 74 68 61 74 20 65 72 72 6F 72 20 20 68 61    n that error  ha
007050:  73 20 6F 63 63 75 72 65 64 2E 0D 0D 2D 2D 2D 2D    s occured...----
007060:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007070:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007080:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007090:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0070A0:  2D 0D 0D 42 49 4F 53 3A 20 20 53 45 54 20 20 52    -..BIOS:  SET  R
0070B0:  45 54 52 59 20 20 20 43 4F 55 4E 54 20 20 20 2D    ETRY   COUNT   -
0070C0:  20 20 20 53 65 74 20 20 20 74 68 65 20 20 20 6E       Set   the   n
0070D0:  75 6D 62 65 72 20 20 20 6F 66 20 20 20 72 65 74    umber   of   ret
0070E0:  72 69 65 73 20 20 66 6F 72 0D 20 20 20 20 20 20    ries  for.      
0070F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
007100:  20 20 20 28 73 65 65 20 61 62 6F 76 65 29 0D 48       (see above).H
007110:  4C 20 3D 20 61 64 64 72 65 73 73 20 6F 66 20 65    L = address of e
007120:  72 72 6F 72 20 73 74 61 74 75 73 20 62 75 66 66    rror status buff
007130:  65 72 0D 0D 4F 74 68 65 72 20 66 6C 61 67 73 20    er..Other flags 
007140:  63 6F 72 72 75 70 74 2E 0D 0D 2D 2D 2D 2D 2D 2D    corrupt...------
007150:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007160:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007170:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007180:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007190:  0D 0D 42 49 4F 53 3A 20 46 4F 52 4D 41 54 20 54    ..BIOS: FORMAT T
0071A0:  52 41 43 4B 20 2D 20 20 46 6F 72 6D 61 74 20 20    RACK -  Format  
0071B0:  61 20 20 74 72 61 63 6B 20 20 28 69 6E 69 74 69    a  track  (initi
0071C0:  61 6C 69 73 65 20 20 61 20 20 74 72 61 63 6B 20    alise  a  track 
0071D0:  66 6F 72 20 64 61 74 61 0D 20 20 20 20 20 20 20    for data.       
0071E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                   s
0071F0:  74 6F 72 61 67 65 29 0D 0D 45 6E 74 72 79 3A 0D    torage)..Entry:.
007200:  0D 48 4C 20 3D 20 61 64 64 72 65 73 73 20 6F 66    .HL = address of
007210:  20 66 6F 72 6D 61 74 20 68 65 61 64 65 72 20 64     format header d
007220:  61 74 61 0D 45 20 3D 20 64 72 69 76 65 20 6E 75    ata.E = drive nu
007230:  6D 62 65 72 0D 44 20 3D 20 74 72 61 63 6B 20 6E    mber.D = track n
007240:  75 6D 62 65 72 0D 0D 45 78 69 74 20 63 6F 6E 64    umber..Exit cond
007250:  69 74 69 6F 6E 73 3A 0D 0D 49 66 20 74 72 61 63    itions:..If trac
007260:  6B 20 66 6F 72 6D 61 74 74 65 64 20 4F 4B 3A 0D    k formatted OK:.
007270:  0D 43 61 72 72 79 20 74 72 75 65 2E 0D 41 20 3D    .Carry true..A =
007280:  20 30 0D 48 4C 20 75 6E 63 68 61 6E 67 65 64 2E     0.HL unchanged.
007290:  2E 0D 0D 49 66 20 66 61 69 6C 65 64 20 74 6F 20    ...If failed to 
0072A0:  66 6F 72 6D 61 74 20 74 72 61 63 6B 20 63 6F 72    format track cor
0072B0:  72 65 63 74 6C 79 3A 0D 0D 43 61 72 72 79 20 66    rectly:..Carry f
0072C0:  61 6C 73 65 2E 0D 41 20 3D 20 65 72 72 6F 72 20    alse..A = error 
0072D0:  73 74 61 74 75 73 20 62 79 74 65 0D 48 4C 20 3D    status byte.HL =
0072E0:  20 61 64 64 72 65 73 73 20 6F 66 20 65 72 72 6F     address of erro
0072F0:  72 20 73 74 61 74 75 73 20 62 75 66 66 65 72 0D    r status buffer.
007300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
007310:  06 00 01 00 02 09 4E E5 06 00 C1 02 00 00 00 02    ......N.........
007320:  06 00 C6 02 00 00 00 02 06 00 C2 02 00 00 00 02    ................
007330:  06 00 C7 02 00 00 00 02 06 00 C3 02 00 00 00 02    ................
007340:  06 00 C8 02 00 00 00 02 06 00 C4 02 00 00 00 02    ................
007350:  06 00 C9 02 00 00 00 02 06 00 C5 02 00 00 00 02    ................
007360:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007370:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007380:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007390:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0073F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007400:  20 20 20 20 20 20 20 20 20 20 72 65 61 64 2F 77              read/w
007410:  72 69 74 65 2F 66 6F 72 6D 61 74 20 63 6F 6D 6D    rite/format comm
007420:  61 6E 64 73 0D 0D 45 6E 74 72 79 3A 0D 0D 41 20    ands..Entry:..A 
007430:  3D 20 6E 65 77 20 76 61 6C 75 65 20 66 6F 72 20    = new value for 
007440:  72 65 74 72 79 20 63 6F 75 6E 74 0D 0D 45 78 69    retry count..Exi
007450:  74 3A 0D 0D 41 20 3D 20 6F 6C 64 20 76 61 6C 75    t:..A = old valu
007460:  65 0D 48 4C 20 61 6E 64 20 66 6C 61 67 73 20 63    e.HL and flags c
007470:  6F 72 72 75 70 74 2E 0D 0D 4E 6F 74 65 73 3A 0D    orrupt...Notes:.
007480:  0D 54 68 65 20 64 65 66 61 75 6C 74 20 76 61 6C    .The default val
007490:  75 65 20 69 73 20 31 36 2E 0D 0D 2D 2D 2D 2D 2D    ue is 16...-----
0074A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0074B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0074C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0074D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0074E0:  0D 0D 1A 20 62 69 74 20 36 20 3D 20 30 20 74 68    ... bit 6 = 0 th
0074F0:  65 6E 20 74 68 65 20 65 72 72 6F 72 20 6E 75 6D    en the error num
007500:  62 65 72 73 20 61 72 65 20 61 73 20 66 6F 6C 6C    bers are as foll
007510:  6F 77 73 3A 0D 0D 26 30 45 09 46 69 6C 65 20 69    ows:..&0E.File i
007520:  73 20 6E 6F 74 20 6F 70 65 6E 20 61 73 20 65 78    s not open as ex
007530:  70 65 63 74 65 64 0D 26 30 46 09 48 61 72 64 20    pected.&0F.Hard 
007540:  65 6E 64 20 6F 66 20 66 69 6C 65 0D 0D 1A 6E 63    end of file...nc
007550:  74 69 6F 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    tio.............
007560:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
007570:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
007580:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007590:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0075A0:  2D 0D 0D 42 49 4F 53 3A 20 20 53 45 54 20 20 52    -..BIOS:  SET  R
0075B0:  45 54 52 59 20 20 20 43 4F 55 4E 54 20 20 20 2D    ETRY   COUNT   -
0075C0:  20 20 20 53 65 74 20 20 20 74 68 65 20 20 20 6E       Set   the   n
0075D0:  75 6D 62 65 72 20 20 20 6F 66 20 20 20 72 65 74    umber   of   ret
0075E0:  72 69 65 73 20 20 66 6F 72 0D 20 20 20 20 20 20    ries  for.      
0075F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
007600:  74 65 20 0D 8A 65 72 72 6F 72 73 2E 0D 0D 0D 0D    te ..errors.....
007610:  54 68 65 20 64 65 66 61 75 6C 74 20 68 61 6C 66    The default half
007620:  90 20 7A 65 72 6F 90 20 6C 65 6E 67 74 68 90 20    . zero. length. 
007630:  61 6E 64 90 20 70 72 65 63 6F 6D 70 65 6E 73 61    and. precompensa
007640:  74 69 6F 6E 90 20 73 65 74 74 69 6E 67 73 20 61    tion. settings a
007650:  72 65 20 33 33 33 20 0D 8A 6D 69 63 72 6F 73 65    re 333 ..microse
007660:  63 6F 6E 64 73 20 28 31 30 30 30 20 62 61 75 64    conds (1000 baud
007670:  29 20 61 6E 64 20 32 35 20 6D 69 63 72 6F 73 65    ) and 25 microse
007680:  63 6F 6E 64 73 20 72 65 73 70 65 63 74 69 76 6C    conds respectivl
007690:  79 2E 20 54 68 65 20 63 6F 6D 6D 6F 6E 6C 79 20    y. The commonly 
0076A0:  0D 8A 75 73 65 64 90 20 66 61 73 74 65 72 90 20    ..used. faster. 
0076B0:  73 65 74 74 69 6E 67 90 20 69 73 90 20 31 36 37    setting. is. 167
0076C0:  90 90 20 6D 69 63 72 6F 73 65 63 6F 6E 64 73 90    .. microseconds.
0076D0:  90 20 28 32 30 30 30 90 20 62 61 75 64 29 90 20    . (2000. baud). 
0076E0:  77 69 74 68 90 20 35 30 20 0D 8A 6D 69 63 72 6F    with. 50 ..micro
0076F0:  73 65 63 6F 6E 64 73 20 6F 66 20 70 72 65 63 6F    seconds of preco
007700:  6D 70 65 6E 73 61 74 69 6F 6E 2E 90 20 54 68 65    mpensation.. The
007710:  73 65 90 20 76 61 6C 75 65 73 90 20 68 61 76 65    se. values. have
007720:  90 20 62 65 65 6E 20 64 65 74 65 72 6D 69 6E 65    . been determine
007730:  64 20 0D 8A 61 66 74 65 72 20 65 78 74 65 6E 73    d ..after extens
007740:  69 76 65 20 74 65 73 74 69 6E 67 20 61 6E 64 20    ive testing and 
007750:  74 68 65 20 75 73 65 72 20 69 73 20 61 64 76 69    the user is advi
007760:  73 65 64 20 74 6F 20 73 74 69 63 6B 20 74 6F 20    sed to stick to 
007770:  74 68 65 6D 2E 0D 0D 0D 0D 2D 2D 2D 2D 2D 2D 2D    them.....-------
007780:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007790:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0077A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0077B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D    --------------..
0077C0:  26 42 43 36 42 20 2D 20 43 41 53 20 4E 4F 49 53    &BC6B - CAS NOIS
0077D0:  59 20 2D 20 41 6C 6C 6F 77 20 6D 65 73 73 61 67    Y - Allow messag
0077E0:  65 73 20 74 6F 20 62 65 20 70 72 69 6E 74 65 64    es to be printed
0077F0:  0D 0D 0D 0D 45 6E 74 72 79 3A 0D 0D 0D 0D 49 66    ....Entry:....If
007800:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007810:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007820:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007830:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007840:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007850:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007860:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007870:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007880:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007890:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0078A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0078B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0078C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0078D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0078E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0078F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0079A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0079B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0079C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0079D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0079E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0079F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
007A00:  20 6D 65 73 73 61 67 65 73 20 61 72 65 20 74 6F     messages are to
007A10:  20 62 65 20 65 6E 61 62 6C 65 64 3A 0D 0D 0D 0D     be enabled:....
007A20:  41 20 3D 20 30 0D 0D 0D 0D 49 66 20 6D 65 73 73    A = 0....If mess
007A30:  61 67 65 73 20 61 72 65 20 74 6F 20 62 65 20 64    ages are to be d
007A40:  69 73 61 62 6C 65 64 3A 0D 0D 0D 0D 41 20 3C 3E    isabled:....A <>
007A50:  20 30 0D 0D 0D 0D 45 78 69 74 3A 0D 0D 0D 0D 41     0....Exit:....A
007A60:  46 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 0D 4E 6F    F corrupt.....No
007A70:  74 65 73 3A 0D 0D 0D 0D 54 68 65 20 70 72 6F 6D    tes:....The prom
007A80:  70 74 20 6D 65 73 73 61 67 65 73 20 73 75 63 68    pt messages such
007A90:  20 61 73 20 27 50 72 65 73 73 20 50 4C 41 59 90     as 'Press PLAY.
007AA0:  20 74 68 65 6E 20 61 6E 79 20 6B 65 79 22 20 61     then any key" a
007AB0:  72 65 20 74 75 72 6E 65 64 20 6F 66 66 2E 20 0D    re turned off. .
007AC0:  8A 45 72 72 6F 72 20 6D 65 73 73 61 67 65 73 20    .Error messages 
007AD0:  73 75 63 68 20 61 73 20 27 52 65 61 64 20 65 72    such as 'Read er
007AE0:  72 6F 72 20 61 27 20 65 74 63 20 61 72 65 20 6E    ror a' etc are n
007AF0:  6F 74 2E 0D 0D 0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ot.....---------
007B00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007B10:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007B20:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007B30:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 26 42    ------------..&B
007B40:  43 36 45 20 2D 20 43 41 53 20 53 54 41 52 54 20    C6E - CAS START 
007B50:  4D 4F 54 4F 52 20 2D 20 53 74 61 72 74 20 63 61    MOTOR - Start ca
007B60:  73 73 65 74 74 65 20 6D 6F 74 6F 72 2E 0D 0D 0D    ssette motor....
007B70:  0D 45 6E 74 72 79 3A 0D 0D 0D 0D 4E 6F 6E 65 0D    .Entry:....None.
007B80:  0D 0D 0D 45 78 69 74 3A 0D 0D 0D 0D 49 66 20 74    ...Exit:....If t
007B90:  68 65 20 6D 6F 74 6F 72 20 74 75 72 6E 65 64 20    he motor turned 
007BA0:  6F 6E 20 4F 4B 3A 0D 0D 0D 0D 43 61 72 72 79 20    on OK:....Carry 
007BB0:  74 72 75 65 2E 0D 0D 0D 0D 49 66 20 74 68 65 20    true.....If the 
007BC0:  75 73 65 72 20 68 69 74 20 65 73 63 61 70 65 3A    user hit escape:
007BD0:  0D 0D 0D 0D 43 61 72 72 79 20 66 61 6C 73 65 2E    ....Carry false.
007BE0:  0D 0D 0D 0D 41 20 3D 20 70 72 65 76 69 6F 75 73    ....A = previous
007BF0:  20 6D 6F 74 6F 72 20 73 74 61 74 65 0D 0D 4F 74     motor state..Ot
007C00:  00 43 41 53 20 20 20 20 20 20 20 20 00 00 00 00    .CAS        ....
007C10:  00 00 0D 00 00 72 01 00 0D 39 00 00 00 00 00 00    .....r...9......
007C20:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007C30:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007C40:  0D 39 00 DA 02 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 1A    .9...--------...
007C50:  24 24 FF 00 FF 00 00 0D 00 00 72 01 00 91 37 00    $$........r...7.
007C60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007C70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
007C80:  26 42 43 36 35 20 2D 20 43 41 53 20 49 4E 49 54    &BC65 - CAS INIT
007C90:  49 41 4C 49 53 45 20 2D 20 49 6E 69 74 69 61 6C    IALISE - Initial
007CA0:  69 73 65 20 74 68 65 20 63 61 73 73 65 74 74 65    ise the cassette
007CB0:  20 6D 61 6E 61 67 65 72 0D 0D 0D 0D 45 6E 74 72     manager....Entr
007CC0:  79 3A 0D 0D 0D 0D 4E 6F 6E 65 0D 0D 0D 0D 45 78    y:....None....Ex
007CD0:  69 74 3A 0D 0D 0D 0D 41 46 2C 42 43 2C 44 45 2C    it:....AF,BC,DE,
007CE0:  48 4C 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 0D 4E    HL corrupt.....N
007CF0:  6F 74 65 73 3A 0D 0D 0D 0D 41 6C 6C 20 73 74 72    otes:....All str
007D00:  65 61 6D 73 20 61 72 65 20 6D 61 72 6B 65 64 20    eams are marked 
007D10:  63 6C 6F 73 65 64 2E 0D 0D 54 68 65 20 64 65 66    closed...The def
007D20:  61 75 6C 74 20 77 72 69 74 65 20 73 70 65 65 64    ault write speed
007D30:  20 69 73 20 73 65 74 20 75 70 2E 0D 0D 54 68 65     is set up...The
007D40:  20 70 72 6F 6D 70 74 20 6D 65 73 73 61 67 65 73     prompt messages
007D50:  20 61 72 65 20 74 75 72 6E 65 64 20 6F 6E 2E 0D     are turned on..
007D60:  0D 54 68 65 20 63 61 73 73 65 74 74 65 20 6D 6F    .The cassette mo
007D70:  74 6F 72 20 69 73 20 74 75 72 6E 65 64 20 6F 66    tor is turned of
007D80:  66 20 28 65 78 63 65 70 74 20 6F 6E 20 56 31 2E    f (except on V1.
007D90:  30 29 0D 0D 0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    0)....----------
007DA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007DB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007DC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007DD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 26 42 43    -----------..&BC
007DE0:  36 38 20 2D 20 43 41 53 20 53 45 54 20 53 50 45    68 - CAS SET SPE
007DF0:  45 44 20 2D 20 53 65 74 20 74 68 65 20 77 72 69    ED - Set the wri
007E00:  68 65 72 20 66 6C 61 67 73 20 63 6F 72 72 75 70    her flags corrup
007E10:  74 2E 0D 0D 0D 0D 4E 6F 74 65 73 3A 0D 0D 0D 0D    t.....Notes:....
007E20:  54 68 65 20 70 72 65 76 69 6F 75 73 20 73 74 61    The previous sta
007E30:  74 65 20 6D 61 79 20 62 65 20 73 65 6E 74 20 74    te may be sent t
007E40:  6F 20 43 41 53 20 52 45 53 54 4F 52 45 20 4D 4F    o CAS RESTORE MO
007E50:  54 4F 52 2E 0D 0D 0D 0D 2D 2D 2D 2D 2D 2D 2D 2D    TOR.....--------
007E60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007E70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007E80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007E90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 0D 0D    ------------....
007EA0:  26 42 43 37 31 20 2D 20 43 41 53 20 53 54 4F 50    &BC71 - CAS STOP
007EB0:  20 4D 4F 54 4F 52 20 2D 20 53 74 6F 70 20 63 61     MOTOR - Stop ca
007EC0:  73 73 65 74 74 65 20 6D 6F 74 6F 72 2E 20 0D 0D    ssette motor. ..
007ED0:  0D 0D 45 6E 74 72 79 3A 0D 0D 0D 0D 4E 6F 6E 65    ..Entry:....None
007EE0:  0D 0D 0D 0D 45 78 69 74 3A 0D 0D 0D 0D 49 66 20    ....Exit:....If 
007EF0:  6D 6F 74 6F 72 20 77 61 73 20 74 75 72 6E 65 64    motor was turned
007F00:  20 6F 66 66 20 4F 4B 3A 0D 0D 0D 0D 43 61 72 72     off OK:....Carr
007F10:  79 20 74 72 75 65 2E 0D 0D 0D 0D 49 66 20 74 68    y true.....If th
007F20:  65 20 75 73 65 72 20 68 69 74 20 65 73 63 61 70    e user hit escap
007F30:  65 3A 0D 0D 0D 0D 43 61 72 72 79 20 66 61 6C 73    e:....Carry fals
007F40:  65 0D 0D 0D 0D 41 20 3D 20 70 72 65 76 69 6F 75    e....A = previou
007F50:  73 20 73 74 61 74 65 0D 0D 4F 74 68 65 72 20 66    s state..Other f
007F60:  6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0D 0D    lags corrupt....
007F70:  0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    .---------------
007F80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007F90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007FA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
007FB0:  2D 2D 2D 2D 2D 2D 0D 0D 0D 0D 26 42 43 37 34 20    ------....&BC74 
007FC0:  2D 20 43 41 53 20 52 45 53 54 4F 52 45 20 4D 4F    - CAS RESTORE MO
007FD0:  54 4F 52 20 2D 20 52 65 73 74 6F 72 65 20 70 72    TOR - Restore pr
007FE0:  65 76 69 6F 75 73 20 73 74 61 74 65 20 6F 66 20    evious state of 
007FF0:  6D 6F 74 6F 72 0D 0D 0D 0D 45 6E 74 72 79 3A 0D    motor....Entry:.
008000:  74 65 20 73 70 65 65 64 0D 0D 0D 0D 45 6E 74 72    te speed....Entr
008010:  79 3A 0D 0D 0D 0D 48 4C 20 3D 20 6C 65 6E 67 74    y:....HL = lengt
008020:  68 20 6F 66 20 68 61 6C 66 20 61 20 7A 65 72 6F    h of half a zero
008030:  20 62 69 74 0D 0D 41 20 3D 20 70 72 65 63 6F 6D     bit..A = precom
008040:  70 65 6E 73 61 74 69 6F 6E 20 74 6F 20 61 70 70    pensation to app
008050:  6C 79 0D 0D 0D 0D 45 78 69 74 3A 0D 0D 0D 0D 41    ly....Exit:....A
008060:  46 20 61 6E 64 20 48 4C 20 63 6F 72 72 75 70 74    F and HL corrupt
008070:  2E 0D 0D 0D 0D 4E 6F 74 65 73 3A 0D 0D 0D 0D 54    .....Notes:....T
008080:  68 65 20 73 70 65 65 64 20 73 75 70 70 6C 69 65    he speed supplie
008090:  64 20 69 73 20 74 68 65 20 6C 65 6E 67 74 68 20    d is the length 
0080A0:  6F 66 20 61 20 68 61 6C 66 20 7A 65 72 6F 20 62    of a half zero b
0080B0:  69 74 20 69 6E 20 6D 69 72 63 6F 73 65 63 6F 6E    it in mircosecon
0080C0:  64 73 2E 20 41 20 0D 8A 6F 6E 65 20 62 69 74 20    ds. A ..one bit 
0080D0:  69 73 20 77 72 69 74 74 65 6E 20 74 77 69 63 65    is written twice
0080E0:  20 74 68 65 20 6C 65 6E 67 74 68 90 20 6F 66 20     the length. of 
0080F0:  61 20 7A 65 72 6F 20 62 69 74 2E 20 54 68 65 20    a zero bit. The 
008100:  73 70 65 65 64 20 73 75 70 70 6C 69 65 64 20 0D    speed supplied .
008110:  8A 63 61 6E 20 62 65 20 72 65 6C 61 74 65 64 20    .can be related 
008120:  74 6F 20 74 68 65 90 20 61 76 65 72 61 67 65 90    to the. average.
008130:  20 62 61 75 64 90 20 72 61 74 65 90 20 28 61 73     baud. rate. (as
008140:  73 75 6D 69 6E 67 20 65 71 75 61 6C 20 6E 75 6D    suming equal num
008150:  62 65 72 73 20 6F 66 20 0D 8A 6F 6E 65 73 20 61    bers of ..ones a
008160:  6E 64 20 7A 65 72 6F 73 29 20 62 79 20 74 68 65    nd zeros) by the
008170:  20 66 6F 6C 6C 6F 77 69 6E 67 20 65 71 75 61 74     following equat
008180:  69 6F 6E 73 3A 0D 0D 0D 0D 41 76 65 72 61 67 65    ions:....Average
008190:  20 62 61 75 64 20 72 61 74 65 3A 0D 0D 0D 0D 3D     baud rate:....=
0081A0:  20 31 20 30 30 30 20 30 30 30 2F 28 33 2A 68 61     1 000 000/(3*ha
0081B0:  6C 66 20 7A 65 72 6F 20 6C 65 6E 67 74 68 29 0D    lf zero length).
0081C0:  0D 3D 20 33 33 33 20 33 33 33 2F 48 61 6C 66 20    .= 333 333/Half 
0081D0:  7A 65 72 6F 20 6C 65 6E 67 74 68 0D 0D 0D 0D 54    zero length....T
0081E0:  68 65 20 68 61 6C 66 20 7A 65 72 6F 20 6C 65 6E    he half zero len
0081F0:  67 74 68 20 6D 75 73 74 20 62 65 90 20 62 65 74    gth must be. bet
008200:  0D 0D 0D 41 20 3D 20 70 72 65 76 69 6F 75 73 20    ...A = previous 
008210:  73 74 61 74 65 0D 0D 0D 0D 45 78 69 74 3A 0D 0D    state....Exit:..
008220:  0D 0D 49 66 20 6D 6F 74 6F 72 20 73 65 74 20 61    ..If motor set a
008230:  73 20 61 70 70 72 6F 70 69 61 74 65 20 77 61 73    s appropiate was
008240:  20 4F 4B 3A 0D 0D 0D 0D 43 61 72 72 79 20 74 72     OK:....Carry tr
008250:  75 65 2E 0D 0D 0D 0D 45 73 63 61 70 65 20 77 61    ue.....Escape wa
008260:  73 20 70 72 65 73 73 65 64 3A 0D 0D 0D 0D 43 61    s pressed:....Ca
008270:  72 72 79 20 66 61 6C 73 65 2E 0D 0D 0D 0D 41 20    rry false.....A 
008280:  61 6E 64 20 6F 74 68 65 72 20 66 6C 61 67 73 20    and other flags 
008290:  63 6F 72 72 75 70 74 2E 0D 0D 0D 0D 2D 2D 2D 2D    corrupt.....----
0082A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0082B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0082C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0082D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0082E0:  2D 0D 0D 0D 0D 26 42 43 37 37 20 2D 20 43 41 53    -....&BC77 - CAS
0082F0:  20 49 4E 20 4F 50 45 4E 20 2D 20 4F 70 65 6E 20     IN OPEN - Open 
008300:  61 20 66 69 6C 65 20 66 6F 72 20 69 6E 70 75 74    a file for input
008310:  0D 0D 0D 0D 45 6E 74 72 79 3A 0D 0D 0D 0D 42 20    ....Entry:....B 
008320:  3D 20 6C 65 6E 67 74 68 20 6F 66 20 66 69 6C 65    = length of file
008330:  6E 61 6D 65 0D 0D 48 4C 20 3D 20 61 64 64 72 65    name..HL = addre
008340:  73 73 20 6F 66 20 66 69 6C 65 6E 61 6D 65 0D 0D    ss of filename..
008350:  44 45 20 3D 20 32 4B 20 62 75 66 66 65 72 20 74    DE = 2K buffer t
008360:  6F 20 75 73 65 0D 0D 0D 0D 45 78 69 74 3A 0D 0D    o use....Exit:..
008370:  0D 0D 49 66 20 74 68 65 20 66 69 6C 65 20 77 61    ..If the file wa
008380:  73 20 6F 70 65 6E 65 64 20 4F 4B 3A 0D 0D 0D 0D    s opened OK:....
008390:  43 61 72 72 79 20 74 72 75 65 2E 0D 0D 5A 65 72    Carry true...Zer
0083A0:  6F 20 66 61 6C 73 65 2E 0D 0D 48 4C 20 3D 20 61    o false...HL = a
0083B0:  64 64 72 65 73 73 20 6F 66 20 61 20 62 75 66 66    ddress of a buff
0083C0:  65 72 20 63 6F 6E 74 61 69 6E 69 6E 67 20 74 68    er containing th
0083D0:  65 20 66 69 6C 65 20 68 65 61 64 65 72 0D 0D 44    e file header..D
0083E0:  45 20 3D 20 64 61 74 61 20 6C 6F 63 61 74 69 6F    E = data locatio
0083F0:  6E 20 28 66 72 6F 6D 20 68 65 61 64 65 72 29 0D    n (from header).
008400:  77 65 65 6E 20 31 33 30 20 61 6E 64 20 34 38 30    ween 130 and 480
008410:  20 6D 69 63 72 6F 73 65 63 6F 6E 64 73 2E 20 56     microseconds. V
008420:  61 6C 75 65 73 20 0D 8A 6F 75 74 73 69 64 65 20    alues ..outside 
008430:  74 68 65 73 65 20 76 61 6C 75 65 73 20 77 69 6C    these values wil
008440:  6C 20 63 61 75 73 65 20 72 65 61 64 20 61 6E 64    l cause read and
008450:  20 77 72 69 74 65 20 65 72 72 6F 72 73 2E 0D 0D     write errors...
008460:  0D 0D 54 68 65 20 70 72 65 63 6F 6D 70 65 6E 73    ..The precompens
008470:  61 74 69 6F 6E 20 73 75 70 70 6C 69 65 64 20 69    ation supplied i
008480:  73 20 74 68 65 90 20 65 78 74 72 61 20 6C 65 6E    s the. extra len
008490:  67 74 68 2C 20 69 6E 20 6D 69 63 72 6F 73 65 63    gth, in microsec
0084A0:  6F 6E 64 73 2C 20 74 6F 20 0D 8A 61 64 64 20 74    onds, to ..add t
0084B0:  6F 20 68 61 6C 66 20 61 20 6F 6E 65 90 20 62 69    o half a one. bi
0084C0:  74 90 20 61 6E 64 90 20 74 6F 90 20 73 75 62 74    t. and. to. subt
0084D0:  72 61 63 74 90 20 66 72 6F 6D 90 20 68 61 6C 66    ract. from. half
0084E0:  20 61 20 7A 65 72 6F 20 62 69 74 20 75 6E 64 65     a zero bit unde
0084F0:  72 20 0D 8A 63 65 72 74 61 69 6E 20 63 6F 6E 64    r ..certain cond
008500:  69 74 69 6F 6E 73 2E 20 54 68 65 20 61 6D 6F 75    itions. The amou
008510:  6E 74 20 6F 66 20 70 72 65 63 6F 6D 70 65 6E 73    nt of precompens
008520:  61 74 69 6F 6E 20 72 65 71 75 69 72 65 64 20 76    ation required v
008530:  61 72 69 65 73 20 77 69 74 68 20 0D 8A 74 68 65    aries with ..the
008540:  20 73 70 65 65 64 20 28 6D 6F 72 65 20 69 73 20     speed (more is 
008550:  72 65 71 75 69 72 65 64 20 61 74 20 68 69 67 68    required at high
008560:  65 72 20 62 61 75 64 20 72 61 74 65 73 29 2E 0D    er baud rates)..
008570:  0D 0D 0D 54 68 65 20 70 72 65 63 6F 6D 70 65 6E    ...The precompen
008580:  73 61 74 69 6F 6E 20 6D 61 79 20 6C 69 65 90 20    sation may lie. 
008590:  62 65 74 77 65 65 6E 90 20 30 90 20 61 6E 64 20    between. 0. and 
0085A0:  32 35 35 20 6D 69 63 72 6F 73 65 63 6F 6E 64 73    255 microseconds
0085B0:  20 61 6C 74 68 6F 75 67 68 20 0D 8A 74 68 65 20     although ..the 
0085C0:  68 69 67 68 65 72 20 73 65 74 74 69 6E 67 73 20    higher settings 
0085D0:  61 72 65 20 6E 6F 74 20 75 73 65 66 75 6C 90 20    are not useful. 
0085E0:  61 73 90 20 74 68 65 79 20 77 69 6C 6C 20 63 61    as. they will ca
0085F0:  75 73 65 20 72 65 61 64 20 61 6E 64 20 77 72 69    use read and wri
008600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
008610:  07 00 01 00 02 09 4E E5 07 00 C1 02 00 00 00 02    ......N.........
008620:  07 00 C6 02 00 00 00 02 07 00 C2 02 00 00 00 02    ................
008630:  07 00 C7 02 00 00 00 02 07 00 C3 02 00 00 00 02    ................
008640:  07 00 C8 02 00 00 00 02 07 00 C4 02 00 00 00 02    ................
008650:  07 00 C9 02 00 00 00 02 07 00 C5 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:  0D 42 43 20 3D 20 6C 65 6E 67 74 68 20 6F 66 20    .BC = length of 
008710:  66 69 6C 65 20 28 66 72 6F 6D 20 68 65 61 64 65    file (from heade
008720:  72 29 0D 0D 41 20 3D 20 66 69 6C 65 20 74 79 70    r)..A = file typ
008730:  65 0D 0D 0D 0D 49 66 20 73 74 72 65 61 6D 20 69    e....If stream i
008740:  73 20 69 6E 20 75 73 65 3A 0D 0D 0D 0D 43 61 72    s in use:....Car
008750:  72 79 20 66 61 6C 73 65 2E 0D 0D 5A 65 72 6F 20    ry false...Zero 
008760:  66 61 6C 73 65 2E 0D 0D 42 43 2C 44 45 2C 48 4C    false...BC,DE,HL
008770:  20 63 6F 72 72 75 70 74 2E 0D 0D 0D 0D 56 31 2E     corrupt.....V1.
008780:  30 0D 0D 2D 2D 2D 2D 20 20 41 20 63 6F 72 72 75    0..----  A corru
008790:  70 74 2E 0D 0D 0D 0D 56 31 2E 31 0D 0D 2D 2D 2D    pt.....V1.1..---
0087A0:  2D 20 20 41 20 3D 20 65 72 72 6F 72 20 6E 75 6D    -  A = error num
0087B0:  62 65 72 20 28 26 30 45 29 0D 0D 0D 0D 49 66 20    ber (&0E)....If 
0087C0:  75 73 65 72 20 68 69 74 20 65 73 63 61 70 65 3A    user hit escape:
0087D0:  0D 0D 0D 0D 43 61 72 72 79 20 66 61 6C 73 65 2E    ....Carry false.
0087E0:  0D 0D 5A 65 72 6F 20 74 72 75 65 2E 0D 0D 42 43    ..Zero true...BC
0087F0:  2C 44 45 2C 48 4C 20 63 6F 72 72 75 70 74 2E 0D    ,DE,HL corrupt..
008800:  0D 0D 0D 56 31 2E 30 0D 0D 2D 2D 2D 2D 20 20 41    ...V1.0..----  A
008810:  20 63 6F 72 72 75 70 74 0D 0D 0D 0D 56 31 2E 31     corrupt....V1.1
008820:  0D 0D 2D 2D 2D 2D 20 20 41 20 3D 20 65 72 72 6F    ..----  A = erro
008830:  72 20 6E 75 6D 62 65 72 20 28 26 30 30 29 0D 0D    r number (&00)..
008840:  0D 0D 0D 0D 49 58 20 61 6E 64 20 6F 74 68 65 72    ....IX and other
008850:  20 66 6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D     flags corrupt..
008860:  0D 0D 0D 4E 6F 74 65 73 3A 0D 0D 0D 0D 54 68 65    ...Notes:....The
008870:  20 32 6B 20 62 75 66 66 65 72 20 73 75 70 70 6C     2k buffer suppl
008880:  69 65 64 20 69 73 20 75 73 65 64 20 74 6F 20 73    ied is used to s
008890:  74 6F 72 65 20 74 68 65 20 63 6F 6E 74 65 6E 74    tore the content
0088A0:  73 20 6F 66 20 61 20 62 6C 6F 63 6B 20 6F 66 20    s of a block of 
0088B0:  74 68 65 20 0D 8A 66 69 6C 65 2E 20 49 74 20 77    the ..file. It w
0088C0:  69 6C 6C 20 72 65 6D 61 69 6E 90 20 69 6E 90 20    ill remain. in. 
0088D0:  75 73 65 90 20 75 6E 74 69 6C 90 20 65 69 74 68    use. until. eith
0088E0:  65 72 90 20 43 41 53 90 20 49 4E 90 20 43 4C 4F    er. CAS. IN. CLO
0088F0:  53 45 20 6F 72 20 43 41 53 20 49 4E 20 0D 8A 41    SE or CAS IN ..A
008900:  20 70 6F 73 73 69 62 6C 65 90 20 74 6F 20 64 69     possible. to di
008910:  72 65 63 74 20 0D 8A 72 65 61 64 69 6E 67 20 28    rect ..reading (
008920:  62 79 20 43 41 53 20 49 4E 20 44 49 52 45 43 54    by CAS IN DIRECT
008930:  29 2E 0D 0D 0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ).....----------
008940:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
008950:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
008960:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
008970:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 8A 0D 0D 26    -----------....&
008980:  42 43 38 33 20 2D 20 43 41 53 20 49 4E 20 44 49    BC83 - CAS IN DI
008990:  52 45 43 54 20 2D 20 52 65 61 64 20 61 20 69 6E    RECT - Read a in
0089A0:  70 75 74 20 66 69 6C 65 20 69 6E 74 6F 20 73 74    put file into st
0089B0:  6F 72 65 2E 0D 0D 0D 0D 45 6E 74 72 79 3A 0D 0D    ore.....Entry:..
0089C0:  0D 0D 48 4C 20 3D 20 61 64 64 72 65 73 73 20 74    ..HL = address t
0089D0:  6F 20 70 75 74 20 74 68 65 20 66 69 6C 65 20 28    o put the file (
0089E0:  61 6E 79 77 68 65 72 65 20 69 6E 20 72 61 6D 29    anywhere in ram)
0089F0:  0D 0D 0D 0D 45 78 69 74 3A 0D 0D 0D 0D 49 66 20    ....Exit:....If 
008A00:  66 69 6C 65 20 77 61 73 20 72 65 61 64 20 4F 4B    file was read OK
008A10:  3A 0D 0D 0D 0D 43 61 72 72 79 20 74 72 75 65 2E    :....Carry true.
008A20:  20 5A 65 72 6F 20 66 61 6C 73 65 2E 0D 0D 48 4C     Zero false...HL
008A30:  20 3D 20 65 6E 74 72 79 20 61 64 64 72 65 73 73     = entry address
008A40:  0D 0D 41 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 0D    ..A corrupt.....
008A50:  49 66 20 66 69 6C 65 20 77 61 73 20 6E 6F 74 20    If file was not 
008A60:  6F 70 65 6E 65 64 20 63 6F 72 72 65 63 74 6C 79    opened correctly
008A70:  3A 0D 0D 0D 0D 43 61 72 72 79 20 66 61 6C 73 65    :....Carry false
008A80:  2E 20 5A 65 72 6F 20 66 61 6C 73 65 2E 0D 0D 48    . Zero false...H
008A90:  4C 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 0D 56 31    L corrupt.....V1
008AA0:  2E 30 0D 0D 2D 2D 2D 2D 20 41 20 63 6F 72 72 75    .0..---- A corru
008AB0:  70 74 2E 0D 0D 0D 0D 56 31 2E 31 0D 0D 2D 2D 2D    pt.....V1.1..---
008AC0:  2D 20 41 20 3D 20 65 72 72 6F 72 20 6E 75 6D 62    - A = error numb
008AD0:  65 72 20 28 26 30 45 29 0D 0D 0D 0D 49 66 20 75    er (&0E)....If u
008AE0:  73 65 72 20 68 69 74 20 65 73 63 61 70 65 3A 0D    ser hit escape:.
008AF0:  0D 0D 0D 43 61 72 72 79 20 66 61 6C 73 65 0D 0D    ...Carry false..
008B00:  42 41 4E 44 4F 4E 20 69 73 20 63 61 6C 6C 65 64    BANDON is called
008B10:  2E 20 54 68 65 20 62 75 66 66 65 72 90 20 6D 61    . The buffer. ma
008B20:  79 90 20 62 65 90 20 73 74 6F 72 65 64 90 20 61    y. be. stored. a
008B30:  6E 79 77 68 65 72 65 2C 20 65 76 65 6E 20 75 6E    nywhere, even un
008B40:  64 65 72 20 61 20 0D 8A 52 4F 4D 2E 0D 0D 0D 0D    der a ..ROM.....
008B50:  41 20 66 69 6C 65 6E 61 6D 65 20 6F 66 20 30 20    A filename of 0 
008B60:  63 68 61 72 61 63 74 65 72 73 20 69 73 20 74 72    characters is tr
008B70:  65 61 74 65 64 20 74 6F 20 6D 65 61 6E 2C 20 6C    eated to mean, l
008B80:  6F 61 64 20 74 68 65 20 6E 65 78 74 20 66 69 6C    oad the next fil
008B90:  65 20 66 72 6F 6D 20 0D 8A 63 61 73 73 65 74 74    e from ..cassett
008BA0:  65 2E 0D 0D 0D 0D 54 68 65 20 66 69 6C 65 6E 61    e.....The filena
008BB0:  6D 65 20 69 73 20 73 68 6F 72 74 65 6E 65 64 20    me is shortened 
008BC0:  74 6F 90 20 31 36 90 20 63 68 61 72 61 63 74 65    to. 16. characte
008BD0:  72 73 90 20 69 66 90 20 69 74 20 69 73 20 6C 6F    rs. if. it is lo
008BE0:  6E 67 65 72 20 74 68 61 6E 20 31 36 20 0D 8A 63    nger than 16 ..c
008BF0:  68 61 72 61 63 74 65 72 73 2E 49 66 20 69 74 20    haracters.If it 
008C00:  69 73 20 6C 65 73 73 20 74 68 61 6E 20 31 36 90    is less than 16.
008C10:  20 63 68 61 72 61 63 74 65 72 73 90 20 69 74 20     characters. it 
008C20:  69 73 20 70 61 64 64 65 64 20 77 69 74 68 20 26    is padded with &
008C30:  30 30 20 74 6F 20 0D 8A 31 36 20 63 68 61 72 61    00 to ..16 chara
008C40:  63 74 65 72 73 2E 20 54 68 65 20 41 53 43 49 49    cters. The ASCII
008C50:  20 63 68 61 72 61 63 74 65 72 73 20 61 72 65 20     characters are 
008C60:  74 75 72 6E 65 64 20 74 6F 20 75 70 70 65 72 20    turned to upper 
008C70:  63 61 73 65 2E 0D 0D 0D 0D 57 68 65 6E 20 74 68    case.....When th
008C80:  65 20 66 69 6C 65 20 69 73 90 20 6F 70 65 6E 65    e file is. opene
008C90:  64 90 20 66 6F 72 90 20 72 65 61 64 69 6E 67 90    d. for. reading.
008CA0:  20 74 68 65 90 20 66 69 72 73 74 90 20 62 6C 6F     the. first. blo
008CB0:  63 6B 20 69 73 20 72 65 61 64 2E 20 54 68 65 20    ck is read. The 
008CC0:  0D 8A 61 64 64 72 65 73 73 20 6F 66 20 74 68 65    ..address of the
008CD0:  20 61 72 65 61 20 77 68 65 72 65 90 20 74 68 65     area where. the
008CE0:  90 20 68 65 61 64 65 72 90 20 66 72 6F 6D 90 20    . header. from. 
008CF0:  74 68 69 73 90 20 62 6C 6F 63 6B 20 69 73 20 73    this. block is s
008D00:  5A 65 72 6F 20 74 72 75 65 2E 0D 0D 48 4C 20 63    Zero true...HL c
008D10:  6F 72 72 75 70 74 2E 0D 0D 0D 0D 56 31 2E 30 0D    orrupt.....V1.0.
008D20:  0D 2D 2D 2D 2D 20 41 20 63 6F 72 72 75 70 74 2E    .---- A corrupt.
008D30:  0D 0D 0D 0D 56 31 2E 31 0D 0D 2D 2D 2D 2D 20 41    ....V1.1..---- A
008D40:  20 3D 20 65 72 72 6F 72 20 6E 75 6D 62 65 72 20     = error number 
008D50:  28 26 30 30 29 0D 0D 0D 0D 0D 0D 44 45 2C 49 58    (&00)......DE,IX
008D60:  2C 42 43 20 61 6E 64 20 6F 74 68 65 72 20 66 6C    ,BC and other fl
008D70:  61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 0D    ags corrupt.....
008D80:  4E 6F 74 65 73 3A 0D 0D 0D 0D 54 68 65 20 73 74    Notes:....The st
008D90:  72 65 61 6D 20 6D 75 73 74 20 6E 65 20 6E 65 77    ream must ne new
008DA0:  6C 79 20 6F 70 65 6E 65 64 90 20 28 62 79 90 20    ly opened. (by. 
008DB0:  43 41 53 90 20 49 4E 20 4F 50 45 4E 29 2E 20 49    CAS. IN OPEN). I
008DC0:  66 20 74 68 65 20 73 74 72 65 61 6D 20 68 61 73    f the stream has
008DD0:  20 0D 8A 62 65 65 6E 20 75 73 65 64 20 66 6F 72     ..been used for
008DE0:  20 63 68 61 72 61 63 74 65 72 20 61 63 63 65 73     character acces
008DF0:  73 90 20 74 68 65 6E 90 20 69 74 90 20 69 73 90    s. then. it. is.
008E00:  20 6E 6F 74 20 70 6F 73 73 69 62 6C 65 20 74 6F     not possible to
008E10:  20 64 69 72 65 63 74 6C 79 20 0D 8A 72 65 61 64     directly ..read
008E20:  20 74 68 65 20 66 69 6C 65 2E 20 49 74 20 69 73     the file. It is
008E30:  20 6E 6F 74 90 20 70 6F 73 73 69 62 6C 65 90 20     not. possible. 
008E40:  74 6F 90 20 72 65 61 64 90 20 74 68 65 20 66 69    to. read. the fi
008E50:  6C 65 20 69 6E 74 6F 20 73 74 6F 72 65 20 6D 6F    le into store mo
008E60:  72 65 20 0D 8A 74 68 61 6E 20 6F 6E 63 65 2E 20    re ..than once. 
008E70:  54 68 69 73 20 77 69 6C 6C 20 63 6F 72 72 75 70    This will corrup
008E80:  74 20 74 68 65 20 63 6F 70 79 20 6F 66 20 74 68    t the copy of th
008E90:  65 20 66 69 6C 65 20 72 65 61 64 2E 0D 0D 0D 0D    e file read.....
008EA0:  54 68 65 20 62 75 66 66 65 72 20 6F 66 20 64 61    The buffer of da
008EB0:  74 61 20 72 65 61 64 20 77 68 65 6E 90 20 74 68    ta read when. th
008EC0:  65 90 20 73 74 72 65 61 6D 90 20 77 61 73 20 6F    e. stream. was o
008ED0:  70 65 6E 65 64 20 69 73 20 63 6F 70 69 65 64 20    pened is copied 
008EE0:  74 6F 20 69 74 73 20 0D 8A 63 6F 72 72 65 63 74    to its ..correct
008EF0:  20 70 6F 73 69 74 69 6F 6E 20 61 6E 64 20 74 68     position and th
008F00:  74 6F 72 65 64 20 69 73 20 0D 8A 70 61 73 73 65    tored is ..passe
008F10:  64 20 62 61 63 6B 20 74 6F 20 74 68 65 20 75 73    d back to the us
008F20:  65 72 20 73 6F 20 74 68 61 74 90 20 74 68 65 20    er so that. the 
008F30:  69 6E 66 6F 72 6D 61 74 69 6F 6E 20 63 61 6E 20    information can 
008F40:  62 65 20 65 78 74 72 61 63 74 65 64 20 66 72 6F    be extracted fro
008F50:  6D 20 0D 8A 69 74 2E 20 54 68 65 20 75 73 65 72    m ..it. The user
008F60:  20 69 73 20 6E 6F 74 20 61 6C 6C 6F 77 65 64 90     is not allowed.
008F70:  20 74 6F 90 20 77 72 69 74 65 90 20 74 6F 90 20     to. write. to. 
008F80:  69 74 2C 20 6F 6E 6C 79 20 72 65 61 64 20 66 72    it, only read fr
008F90:  6F 6D 20 69 74 2E 54 68 69 73 20 0D 8A 61 72 65    om it.This ..are
008FA0:  61 20 77 69 6C 6C 20 6C 69 65 20 69 6E 20 74 68    a will lie in th
008FB0:  65 90 20 63 65 6E 74 72 61 6C 90 20 33 32 6B 90    e. central. 32k.
008FC0:  20 6F 66 90 20 72 61 6D 2E 20 54 68 65 20 63 61     of. ram. The ca
008FD0:  73 73 65 74 74 65 20 6D 61 6E 61 67 65 72 20 75    ssette manager u
008FE0:  73 65 73 20 0D 8A 73 6F 6D 65 20 66 69 65 6C 64    ses ..some field
008FF0:  73 20 69 6E 20 74 68 65 20 68 65 61 64 65 72 20    s in the header 
009000:  66 6F 72 20 69 74 73 20 6F 77 6E 20 70 75 72 70    for its own purp
009010:  6F 73 65 73 20 73 6F 20 74 68 65 73 65 20 6D 61    oses so these ma
009020:  79 20 76 61 72 79 2E 0D 0D 0D 0D 2D 2D 2D 2D 2D    y vary.....-----
009030:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009040:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009050:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009060:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009070:  0D 8A 0D 0D 26 42 43 37 41 20 2D 20 43 41 53 20    ....&BC7A - CAS 
009080:  49 4E 20 43 4C 4F 53 45 20 2D 20 43 6C 6F 73 65    IN CLOSE - Close
009090:  20 69 6E 70 75 74 20 66 69 6C 65 20 70 72 6F 70     input file prop
0090A0:  65 72 6C 79 2E 0D 0D 0D 0D 45 6E 74 72 79 3A 0D    erly.....Entry:.
0090B0:  0D 0D 0D 4E 6F 6E 65 0D 0D 0D 0D 45 78 69 74 3A    ...None....Exit:
0090C0:  0D 0D 0D 0D 49 66 20 73 74 72 65 61 6D 20 77 61    ....If stream wa
0090D0:  73 20 63 6C 6F 73 65 64 20 4F 4B 3A 0D 0D 0D 0D    s closed OK:....
0090E0:  43 61 72 72 79 20 74 72 75 65 2E 0D 0D 41 20 63    Carry true...A c
0090F0:  6F 72 72 75 70 74 2E 0D 0D 0D 0D 49 66 20 74 68    orrupt.....If th
009100:  65 20 72 65 6D 61 69 6E 64 65 72 20 6F 66 20 74    e remainder of t
009110:  68 65 20 66 69 6C 65 20 69 73 20 61 6C 73 6F 20    he file is also 
009120:  72 65 61 64 2E 0D 0D 0D 0D 2D 2D 2D 2D 2D 2D 2D    read.....-------
009130:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009140:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009150:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009160:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 8A    --------------..
009170:  0D 0D 26 42 43 38 36 20 2D 20 43 41 53 20 52 45    ..&BC86 - CAS RE
009180:  54 55 52 4E 20 2D 20 50 75 74 20 62 61 63 6B 20    TURN - Put back 
009190:  74 68 65 20 6C 61 73 74 20 63 68 61 72 61 63 74    the last charact
0091A0:  65 72 20 72 65 61 64 0D 0D 0D 0D 45 6E 74 72 79    er read....Entry
0091B0:  3A 0D 0D 0D 0D 4E 6F 6E 65 0D 0D 0D 0D 45 78 69    :....None....Exi
0091C0:  74 3A 0D 0D 0D 0D 41 6C 6C 20 70 72 65 73 65 72    t:....All preser
0091D0:  76 65 64 2E 0D 0D 0D 0D 4E 6F 74 65 73 3A 0D 0D    ved.....Notes:..
0091E0:  0D 0D 54 68 69 73 20 69 73 20 6F 6E 6C 79 20 70    ..This is only p
0091F0:  6F 73 73 69 62 6C 65 20 69 66 20 74 68 65 90 20    ossible if the. 
009200:  66 69 6C 65 90 20 68 61 73 90 20 62 65 65 6E 90    file. has. been.
009210:  20 72 65 61 64 20 69 6E 20 62 79 20 75 73 69 6E     read in by usin
009220:  67 20 43 41 53 20 49 4E 20 0D 8A 43 48 41 52 2E    g CAS IN ..CHAR.
009230:  20 41 74 20 6C 65 61 73 74 20 6F 6E 65 20 63 68     At least one ch
009240:  61 72 61 63 74 65 72 20 6D 75 73 74 20 68 61 76    aracter must hav
009250:  65 20 62 65 65 6E 20 72 65 61 64 20 73 69 6E 63    e been read sinc
009260:  65 3A 0D 0D 0D 0D 0D 0D 61 29 20 74 68 65 20 73    e:......a) the s
009270:  74 72 65 61 6D 20 77 61 73 20 6F 70 65 6E 65 64    tream was opened
009280:  0D 0D 62 29 20 74 68 65 20 6C 61 73 74 20 63 68    ..b) the last ch
009290:  61 72 61 63 74 65 72 20 77 61 73 20 72 65 74 75    aracter was retu
0092A0:  72 6E 65 64 2E 0D 0D 63 29 20 74 68 65 20 6C 61    rned...c) the la
0092B0:  73 74 20 74 65 73 74 20 66 6F 72 20 65 6F 66 20    st test for eof 
0092C0:  77 61 73 20 6D 61 64 65 2E 0D 0D 0D 0D 2D 2D 2D    was made.....---
0092D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0092E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0092F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009300:  65 20 73 74 72 65 61 6D 20 77 61 73 20 6E 6F 74    e stream was not
009310:  20 6F 70 65 6E 3A 0D 0D 0D 0D 43 61 72 72 79 20     open:....Carry 
009320:  66 61 6C 73 65 0D 0D 0D 0D 56 31 2E 30 0D 0D 2D    false....V1.0..-
009330:  2D 2D 2D 20 41 20 63 6F 72 72 75 70 74 2E 0D 0D    --- A corrupt...
009340:  0D 0D 56 31 2E 31 0D 0D 2D 2D 2D 2D 20 41 20 3D    ..V1.1..---- A =
009350:  20 65 72 72 6F 72 20 6E 75 6D 62 65 72 20 28 26     error number (&
009360:  30 45 29 0D 0D 0D 0D 42 43 2C 44 45 2C 48 4C 20    0E)....BC,DE,HL 
009370:  61 6E 64 20 6F 74 68 65 72 20 66 6C 61 67 73 20    and other flags 
009380:  63 6F 72 72 75 70 74 2E 0D 0D 0D 0D 2D 2D 2D 2D    corrupt.....----
009390:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0093A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0093B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0093C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0093D0:  2D 0D 8A 0D 0D 26 42 43 37 44 20 2D 20 43 41 53    -....&BC7D - CAS
0093E0:  20 49 4E 20 41 42 41 4E 44 4F 4E 20 2D 20 43 6C     IN ABANDON - Cl
0093F0:  6F 73 65 20 69 6E 70 75 74 20 66 69 6C 65 20 73    ose input file s
009400:  74 72 61 69 67 68 74 20 61 77 61 79 0D 0D 0D 0D    traight away....
009410:  45 6E 74 72 79 3A 0D 0D 0D 0D 4E 6F 6E 65 0D 0D    Entry:....None..
009420:  0D 0D 45 78 69 74 3A 0D 0D 0D 0D 41 46 2C 42 43    ..Exit:....AF,BC
009430:  2C 44 45 2C 48 4C 20 63 6F 72 72 75 70 74 2E 0D    ,DE,HL corrupt..
009440:  0D 0D 0D 4E 6F 74 65 73 3A 0D 0D 0D 0D 54 68 69    ...Notes:....Thi
009450:  73 20 69 73 20 6D 65 61 6E 74 20 74 6F 20 62 65    s is meant to be
009460:  20 75 73 65 64 20 61 66 74 65 72 20 61 6E 20 65     used after an e
009470:  72 72 6F 72 20 68 61 73 20 6F 63 63 75 72 65 64    rror has occured
009480:  2E 0D 0D 0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    .....-----------
009490:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0094A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0094B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0094C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 8A 0D 0D 26 42    ----------....&B
0094D0:  43 38 30 20 2D 20 43 41 53 20 49 4E 20 43 48 41    C80 - CAS IN CHA
0094E0:  52 20 2D 20 52 65 61 64 20 61 20 63 68 61 72 61    R - Read a chara
0094F0:  63 74 65 72 20 66 72 6F 6D 20 74 68 65 20 69 6E    cter from the in
009500:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009510:  2D 2D 0D 8A 0D 0D 26 42 43 38 39 20 2D 20 43 41    --....&BC89 - CA
009520:  53 20 54 45 53 54 20 45 4F 46 20 2D 20 43 68 65    S TEST EOF - Che
009530:  63 6B 20 69 66 20 65 6E 64 20 6F 66 20 66 69 6C    ck if end of fil
009540:  65 20 68 61 73 20 62 65 65 6E 20 72 65 61 63 68    e has been reach
009550:  65 64 0D 0D 0D 0D 45 6E 74 72 79 3A 0D 0D 0D 0D    ed....Entry:....
009560:  4E 6F 6E 65 0D 0D 0D 0D 45 78 69 74 3A 0D 0D 0D    None....Exit:...
009570:  0D 49 66 20 74 68 65 20 65 6E 64 20 6F 66 20 66    .If the end of f
009580:  69 6C 65 20 77 61 73 20 6E 6F 74 20 66 6F 75 6E    ile was not foun
009590:  64 3A 0D 0D 0D 0D 43 61 72 72 79 20 74 72 75 65    d:....Carry true
0095A0:  2E 20 5A 65 72 6F 20 66 61 6C 73 65 2E 20 41 20    . Zero false. A 
0095B0:  63 6F 72 72 75 70 74 2E 0D 0D 0D 0D 49 66 20 65    corrupt.....If e
0095C0:  6E 64 20 6F 66 20 66 69 6C 65 20 77 61 73 20 66    nd of file was f
0095D0:  6F 75 6E 64 3A 0D 0D 0D 0D 43 61 72 72 79 20 66    ound:....Carry f
0095E0:  61 6C 73 65 2E 20 5A 65 72 6F 20 66 61 6C 73 65    alse. Zero false
0095F0:  2E 0D 0D 0D 0D 56 31 2E 30 0D 0D 2D 2D 2D 2D 20    .....V1.0..---- 
009600:  41 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 0D 56 31    A corrupt.....V1
009610:  2E 31 0D 0D 2D 2D 2D 2D 20 41 20 3D 20 65 72 72    .1..---- A = err
009620:  6F 72 20 6E 75 6D 62 65 72 20 28 26 30 45 20 2D    or number (&0E -
009630:  20 73 74 72 65 61 6D 20 69 73 20 6E 6F 74 20 6F     stream is not o
009640:  70 65 6E 20 6F 72 20 26 30 46 20 2D 20 65 6E 64    pen or &0F - end
009650:  20 6F 66 20 66 69 6C 65 29 0D 0D 0D 0D 49 66 20     of file)....If 
009660:  74 68 65 20 75 73 65 72 20 68 69 74 20 65 73 63    the user hit esc
009670:  61 70 65 3A 0D 0D 0D 0D 43 61 72 72 79 20 66 61    ape:....Carry fa
009680:  6C 73 65 2E 20 5A 65 72 6F 20 74 72 75 65 2E 0D    lse. Zero true..
009690:  0D 0D 0D 56 31 2E 30 0D 0D 2D 2D 2D 2D 20 41 20    ...V1.0..---- A 
0096A0:  63 6F 72 72 75 70 74 2E 0D 0D 0D 0D 56 31 2E 31    corrupt.....V1.1
0096B0:  0D 0D 2D 2D 2D 2D 20 41 20 3D 20 65 72 72 6F 72    ..---- A = error
0096C0:  20 6E 75 6D 62 65 72 20 28 26 30 30 29 0D 0D 0D     number (&00)...
0096D0:  0D 49 58 20 61 6E 64 20 6F 74 68 65 72 20 66 6C    .IX and other fl
0096E0:  61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 0D    ags corrupt.....
0096F0:  43 61 6C 6C 69 6E 67 20 74 68 69 73 20 72 6F 75    Calling this rou
009700:  70 75 74 20 66 69 6C 65 0D 0D 0D 0D 45 6E 74 72    put file....Entr
009710:  79 3A 0D 0D 0D 0D 4E 6F 6E 65 0D 0D 0D 0D 45 78    y:....None....Ex
009720:  69 74 3A 0D 0D 0D 0D 49 66 20 63 68 61 72 61 63    it:....If charac
009730:  74 65 72 20 77 61 73 20 72 65 61 64 20 4F 4B 3A    ter was read OK:
009740:  0D 0D 0D 0D 43 61 72 72 79 20 74 72 75 65 2E 20    ....Carry true. 
009750:  5A 65 72 6F 20 66 61 6C 73 65 2E 0D 0D 41 20 3D    Zero false...A =
009760:  20 63 68 61 72 61 63 74 65 72 20 72 65 61 64 0D     character read.
009770:  0D 0D 0D 49 66 20 65 6E 64 20 6F 66 20 66 69 6C    ...If end of fil
009780:  65 20 77 61 73 20 66 6F 75 6E 64 3A 0D 0D 0D 0D    e was found:....
009790:  43 61 72 72 79 20 66 61 6C 73 65 2E 20 5A 65 72    Carry false. Zer
0097A0:  6F 20 66 61 6C 73 65 2E 20 0D 0D 0D 0D 56 31 2E    o false. ....V1.
0097B0:  30 0D 0D 2D 2D 2D 2D 20 41 20 63 6F 72 72 75 70    0..---- A corrup
0097C0:  74 2E 0D 0D 0D 0D 56 31 2E 31 0D 0D 2D 2D 2D 2D    t.....V1.1..----
0097D0:  20 41 20 3D 20 65 72 72 6F 72 20 6E 75 6D 62 65     A = error numbe
0097E0:  72 20 28 26 30 45 29 0D 0D 0D 0D 49 66 20 75 73    r (&0E)....If us
0097F0:  65 72 20 68 69 74 20 65 73 63 61 70 65 3A 0D 0D    er hit escape:..
009800:  0D 0D 43 61 72 72 79 20 66 61 6C 73 65 2E 0D 0D    ..Carry false...
009810:  5A 65 72 6F 20 74 72 75 65 2E 0D 0D 0D 0D 56 31    Zero true.....V1
009820:  2E 30 0D 0D 2D 2D 2D 2D 20 41 20 63 6F 72 72 75    .0..---- A corru
009830:  70 74 2E 0D 0D 0D 0D 56 31 2E 31 0D 0D 2D 2D 2D    pt.....V1.1..---
009840:  2D 20 41 20 3D 20 65 72 72 6F 72 20 6E 75 6D 62    - A = error numb
009850:  65 72 20 28 26 30 30 29 0D 0D 0D 0D 49 58 20 61    er (&00)....IX a
009860:  6E 64 20 6F 74 68 65 72 20 66 6C 61 67 73 20 63    nd other flags c
009870:  6F 72 72 75 70 74 2E 0D 0D 0D 0D 4E 6F 74 65 73    orrupt.....Notes
009880:  3A 0D 0D 0D 0D 4F 6E 63 65 20 74 68 65 20 66 69    :....Once the fi
009890:  72 73 74 20 63 68 61 72 61 63 74 65 72 20 68 61    rst character ha
0098A0:  73 20 62 65 65 6E 20 72 65 61 64 20 66 72 6F 6D    s been read from
0098B0:  20 61 20 66 69 6C 65 20 69 74 20 63 61 6E 20 6F     a file it can o
0098C0:  6E 6C 79 20 62 65 20 75 73 65 64 20 0D 8A 66 6F    nly be used ..fo
0098D0:  72 20 63 68 61 72 61 63 74 65 72 20 62 79 90 20    r character by. 
0098E0:  63 68 61 72 61 63 74 65 72 90 20 61 63 63 65 73    character. acces
0098F0:  73 2E 90 20 49 74 90 20 69 73 90 20 6E 6F 74 90    s.. It. is. not.
009900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
009910:  08 00 01 00 02 09 4E E5 08 00 C1 02 00 00 00 02    ......N.........
009920:  08 00 C6 02 00 00 00 02 08 00 C2 02 00 00 00 02    ................
009930:  08 00 C7 02 00 00 00 02 08 00 C3 02 00 00 00 02    ................
009940:  08 00 C8 02 00 00 00 02 08 00 C4 02 00 00 00 02    ................
009950:  08 00 C9 02 00 00 00 02 08 00 C5 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:  74 69 6E 65 20 70 75 74 73 20 74 68 65 20 73 74    tine puts the st
009A10:  72 65 61 6D 90 20 69 6E 74 6F 20 63 68 61 72 61    ream. into chara
009A20:  63 74 65 72 20 69 6E 70 75 74 20 6D 6F 64 65 2E    cter input mode.
009A30:  20 49 74 20 69 73 20 0D 8A 6E 6F 74 20 70 6F 73     It is ..not pos
009A40:  73 69 62 6C 65 20 74 6F 20 75 73 65 20 64 69 72    sible to use dir
009A50:  65 63 74 20 72 65 61 64 69 6E 67 20 61 66 74 65    ect reading afte
009A60:  72 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 68    r this routine h
009A70:  61 73 20 62 65 65 6E 20 63 61 6C 6C 65 64 2E 0D    as been called..
009A80:  0D 0D 0D 49 74 20 69 73 20 6E 6F 74 20 70 6F 73    ...It is not pos
009A90:  73 69 62 6C 65 20 74 6F 90 20 63 61 6C 6C 90 20    sible to. call. 
009AA0:  43 41 53 90 20 52 45 54 55 52 4E 90 20 61 66 74    CAS. RETURN. aft
009AB0:  65 72 90 20 74 68 69 73 20 72 6F 75 74 69 6E 65    er. this routine
009AC0:  20 68 61 73 20 62 65 65 6E 20 0D 8A 63 61 6C 6C     has been ..call
009AD0:  65 64 2E 20 41 20 63 68 61 72 61 63 74 65 72 20    ed. A character 
009AE0:  6D 75 73 74 20 62 65 20 72 65 61 64 20 66 69 72    must be read fir
009AF0:  73 74 2E 0D 0D 0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D    st.....---------
009B00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009B10:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009B20:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009B30:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 8A    --------------..
009B40:  0D 0D 26 42 43 38 43 20 2D 20 43 41 53 20 4F 55    ..&BC8C - CAS OU
009B50:  54 20 4F 50 45 4E 20 2D 20 4F 70 65 6E 20 61 20    T OPEN - Open a 
009B60:  66 69 6C 65 20 66 6F 72 20 6F 75 74 70 75 74 0D    file for output.
009B70:  0D 0D 0D 45 6E 74 72 79 3A 0D 0D 0D 0D 42 20 3D    ...Entry:....B =
009B80:  20 6C 65 6E 67 74 68 20 6F 66 20 66 69 6C 65 6E     length of filen
009B90:  61 6D 65 0D 0D 48 4C 20 3D 20 61 64 64 72 65 73    ame..HL = addres
009BA0:  73 20 6F 66 20 66 69 6C 65 6E 61 6D 65 0D 0D 44    s of filename..D
009BB0:  45 20 3D 20 61 64 64 72 65 73 73 20 6F 66 20 32    E = address of 2
009BC0:  6B 20 62 75 66 66 65 72 0D 0D 0D 0D 45 78 69 74    k buffer....Exit
009BD0:  3A 0D 0D 0D 0D 49 66 20 74 68 65 20 66 69 6C 65    :....If the file
009BE0:  20 77 61 73 20 6F 70 65 6E 65 64 20 4F 4B 3A 0D     was opened OK:.
009BF0:  0D 0D 0D 43 61 72 72 79 20 74 72 75 65 2E 0D 0D    ...Carry true...
009C00:  20 61 73 20 65 78 70 65 63 74 65 64 3A 0D 0D 0D     as expected:...
009C10:  0D 43 61 72 72 79 20 66 61 6C 73 65 2E 20 5A 65    .Carry false. Ze
009C20:  72 6F 20 66 61 6C 73 65 2E 20 41 20 3D 20 26 30    ro false. A = &0
009C30:  45 20 28 65 72 72 6F 72 20 6E 75 6D 62 65 72 29    E (error number)
009C40:  0D 0D 0D 0D 49 66 20 63 6F 6D 6D 61 6E 64 20 66    ....If command f
009C50:  61 69 6C 65 64 3A 0D 0D 0D 0D 43 61 72 72 79 20    ailed:....Carry 
009C60:  66 61 6C 73 65 2E 0D 0D 5A 65 72 6F 20 74 72 75    false...Zero tru
009C70:  65 2E 0D 0D 41 20 3D 20 65 72 72 6F 72 20 6E 75    e...A = error nu
009C80:  6D 62 65 72 0D 0D 0D 0D 0D 0D 42 43 2C 44 45 2C    mber......BC,DE,
009C90:  48 4C 2C 49 58 20 61 6E 64 20 6F 74 68 65 72 20    HL,IX and other 
009CA0:  66 6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0D    flags corrupt...
009CB0:  0D 0D 4E 6F 74 65 73 3A 0D 0D 0D 0D 41 66 74 65    ..Notes:....Afte
009CC0:  72 20 77 72 69 74 69 6E 67 20 74 68 65 20 66 69    r writing the fi
009CD0:  6C 65 20 69 74 20 6D 75 73 74 90 20 62 65 90 20    le it must. be. 
009CE0:  63 6C 6F 73 65 64 90 20 77 69 74 68 20 43 41 53    closed. with CAS
009CF0:  20 4F 55 54 20 43 4C 4F 53 45 20 66 6F 72 20 74     OUT CLOSE for t
009D00:  68 65 20 0D 8A 66 69 6C 65 20 74 6F 20 6D 61 6B    he ..file to mak
009D10:  65 20 73 75 72 65 20 74 68 65 20 66 69 6C 65 20    e sure the file 
009D20:  69 73 20 77 72 69 74 74 65 6E 20 74 6F 20 64 69    is written to di
009D30:  73 6B 2E 0D 0D 0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D    sk.....---------
009D40:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009D50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009D60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009D70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 0D    -------------...
009D80:  0D 26 42 43 39 42 20 2D 20 43 41 53 20 43 41 54    .&BC9B - CAS CAT
009D90:  41 4C 4F 47 20 2D 20 47 65 6E 65 72 61 74 65 20    ALOG - Generate 
009DA0:  61 20 63 61 74 61 6C 6F 67 75 65 20 66 72 6F 6D    a catalogue from
009DB0:  20 63 61 73 73 65 74 74 65 0D 0D 0D 0D 45 6E 74     cassette....Ent
009DC0:  72 79 3A 0D 0D 0D 0D 44 45 20 3D 20 61 64 64 72    ry:....DE = addr
009DD0:  65 73 73 20 6F 66 20 32 6B 20 62 75 66 66 65 72    ess of 2k buffer
009DE0:  20 74 6F 20 75 73 65 2E 0D 0D 0D 0D 45 78 69 74     to use.....Exit
009DF0:  3A 0D 0D 0D 0D 49 66 20 74 68 65 20 63 61 74 61    :....If the cata
009E00:  5A 65 72 6F 20 66 61 6C 73 65 2E 0D 0D 48 4C 20    Zero false...HL 
009E10:  3D 20 61 64 64 72 65 73 73 20 6F 66 20 61 20 62    = address of a b
009E20:  75 66 66 65 72 90 20 63 6F 6E 74 61 69 6E 69 6E    uffer. containin
009E30:  67 90 20 74 68 65 90 20 68 65 61 64 65 72 20 74    g. the. header t
009E40:  68 61 74 20 77 69 6C 6C 20 62 65 20 77 72 69 74    hat will be writ
009E50:  74 65 6E 20 0D 8A 74 6F 20 65 61 63 68 20 62 6C    ten ..to each bl
009E60:  6F 63 6B 2E 0D 0D 41 20 63 6F 72 72 75 70 74 2E    ock...A corrupt.
009E70:  0D 0D 0D 0D 49 66 20 73 74 72 65 61 6D 20 69 73    ....If stream is
009E80:  20 69 6E 20 75 73 65 3A 0D 0D 0D 0D 43 61 72 72     in use:....Carr
009E90:  79 20 66 61 6C 73 65 2E 0D 0D 5A 65 72 6F 20 66    y false...Zero f
009EA0:  61 6C 73 65 2E 0D 0D 48 4C 20 63 6F 72 72 75 70    alse...HL corrup
009EB0:  74 2E 0D 0D 0D 0D 56 31 2E 30 0D 0D 2D 2D 2D 2D    t.....V1.0..----
009EC0:  20 20 41 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 0D      A corrupt.....
009ED0:  56 31 2E 31 0D 0D 2D 2D 2D 2D 20 20 41 20 3D 20    V1.1..----  A = 
009EE0:  65 72 72 6F 72 20 6E 75 6D 62 65 72 20 28 26 30    error number (&0
009EF0:  45 29 0D 0D 0D 0D 49 66 20 75 73 65 72 20 68 69    E)....If user hi
009F00:  74 20 65 73 63 61 70 65 3A 0D 0D 0D 0D 43 61 72    t escape:....Car
009F10:  72 79 20 66 61 6C 73 65 2E 0D 0D 5A 65 72 6F 20    ry false...Zero 
009F20:  74 72 75 65 2E 0D 0D 48 4C 20 63 6F 72 72 75 70    true...HL corrup
009F30:  74 2E 0D 0D 0D 0D 56 31 2E 30 0D 0D 2D 2D 2D 2D    t.....V1.0..----
009F40:  20 20 41 20 63 6F 72 72 75 70 74 0D 0D 0D 0D 56      A corrupt....V
009F50:  31 2E 31 0D 0D 2D 2D 2D 2D 20 20 41 20 3D 20 65    1.1..----  A = e
009F60:  72 72 6F 72 20 6E 75 6D 62 65 72 20 28 26 30 30    rror number (&00
009F70:  29 0D 0D 0D 0D 0D 0D 42 43 2C 44 45 2C 49 58 20    )......BC,DE,IX 
009F80:  61 6E 64 20 6F 74 68 65 72 20 66 6C 61 67 73 20    and other flags 
009F90:  63 6F 72 72 75 70 74 2E 0D 0D 0D 0D 2D 2D 2D 2D    corrupt.....----
009FA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009FB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009FC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009FD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
009FE0:  2D 2D 2D 0D 8A 0D 0D 26 42 43 38 46 20 2D 20 43    ---....&BC8F - C
009FF0:  41 53 20 4F 55 54 20 43 4C 4F 53 45 20 2D 20 43    AS OUT CLOSE - C
00A000:  6C 6F 67 75 65 20 77 65 6E 74 20 4F 4B 3A 0D 0D    logue went OK:..
00A010:  0D 0D 43 61 72 72 79 20 74 72 75 65 2E 20 5A 65    ..Carry true. Ze
00A020:  72 6F 20 66 61 6C 73 65 2E 20 41 20 63 6F 72 72    ro false. A corr
00A030:  75 70 74 2E 0D 0D 0D 0D 49 66 20 74 68 65 20 73    upt.....If the s
00A040:  74 72 65 61 6D 20 77 61 73 20 69 6E 20 75 73 65    tream was in use
00A050:  3A 0D 0D 0D 0D 43 61 72 72 79 20 66 61 6C 73 65    :....Carry false
00A060:  2E 20 5A 65 72 6F 20 66 61 6C 73 65 2E 20 0D 0D    . Zero false. ..
00A070:  0D 0D 56 31 2E 30 0D 0D 2D 2D 2D 2D 20 41 20 63    ..V1.0..---- A c
00A080:  6F 72 72 75 70 74 2E 0D 0D 0D 0D 56 31 2E 31 0D    orrupt.....V1.1.
00A090:  0D 2D 2D 2D 2D 20 41 20 3D 20 26 30 45 20 28 65    .---- A = &0E (e
00A0A0:  72 72 6F 72 20 6E 75 6D 62 65 72 29 0D 0D 0D 0D    rror number)....
00A0B0:  42 43 2C 44 45 2C 48 4C 2C 49 58 20 61 6E 64 20    BC,DE,HL,IX and 
00A0C0:  6F 74 68 65 72 20 66 6C 61 67 73 2E 0D 0D 0D 0D    other flags.....
00A0D0:  4E 6F 74 65 73 3A 0D 0D 0D 0D 54 68 65 20 72 65    Notes:....The re
00A0E0:  61 64 20 73 74 72 65 61 6D 20 6D 75 73 74 20 62    ad stream must b
00A0F0:  65 20 63 6C 6F 73 65 64 20 62 65 66 6F 72 65 20    e closed before 
00A100:  74 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20    this routine is 
00A110:  63 61 6C 6C 65 64 2E 0D 0D 0D 0D 54 68 65 20 70    called.....The p
00A120:  72 6F 6D 70 74 20 6D 65 73 73 61 67 65 73 20 61    rompt messages a
00A130:  72 65 20 74 75 72 6E 65 64 20 6F 6E 2E 0D 0D 0D    re turned on....
00A140:  0D 57 68 65 6E 20 74 68 65 20 63 61 74 61 6C 6F    .When the catalo
00A150:  67 20 69 73 20 75 73 73 75 65 64 2C 20 74 68 65    g is ussued, the
00A160:  20 64 69 72 65 63 74 6F 72 79 20 69 73 20 72 65     directory is re
00A170:  61 64 20 69 6E 74 6F 20 6D 65 6D 6F 72 79 2E 0D    ad into memory..
00A180:  0D 4F 6E 6C 79 20 74 68 6F 73 65 20 66 69 6C 65    .Only those file
00A190:  73 20 69 6E 20 74 68 65 20 63 75 72 72 65 6E 74    s in the current
00A1A0:  90 20 75 73 65 72 90 20 61 6E 64 2F 6F 72 20 61    . user. and/or a
00A1B0:  72 65 20 73 65 74 20 74 6F 20 64 69 72 65 63 74    re set to direct
00A1C0:  6F 72 79 20 61 72 65 20 0D 8A 70 75 74 20 69 6E    ory are ..put in
00A1D0:  74 6F 20 74 68 65 20 62 75 66 66 65 72 2E 20 54    to the buffer. T
00A1E0:  68 65 90 20 62 75 66 66 65 72 90 20 67 69 76 65    he. buffer. give
00A1F0:  73 90 20 61 6C 6C 90 20 74 68 65 20 66 69 6C 65    s. all. the file
00A200:  6C 6F 73 65 20 74 68 65 20 6F 75 74 70 75 74 20    lose the output 
00A210:  66 69 6C 65 20 63 6F 72 72 65 63 74 6C 79 2E 0D    file correctly..
00A220:  0D 0D 0D 45 6E 74 72 79 3A 0D 0D 0D 0D 4E 6F 6E    ...Entry:....Non
00A230:  65 0D 0D 0D 0D 45 78 69 74 3A 0D 0D 0D 0D 49 66    e....Exit:....If
00A240:  20 73 74 72 65 61 6D 20 77 61 73 20 63 6C 6F 73     stream was clos
00A250:  65 64 20 4F 4B 3A 0D 0D 0D 0D 43 61 72 72 79 20    ed OK:....Carry 
00A260:  74 72 75 65 2E 20 5A 65 72 6F 20 66 61 6C 73 65    true. Zero false
00A270:  2E 0D 0D 41 20 63 6F 72 72 75 70 74 2E 0D 0D 0D    ...A corrupt....
00A280:  0D 49 66 20 74 68 65 20 73 74 72 65 61 6D 20 77    .If the stream w
00A290:  61 73 20 6E 6F 74 20 6F 70 65 6E 3A 0D 0D 0D 0D    as not open:....
00A2A0:  43 61 72 72 79 20 66 61 6C 73 65 2E 20 5A 65 72    Carry false. Zer
00A2B0:  6F 20 66 61 6C 73 65 2E 0D 0D 0D 0D 56 31 2E 30    o false.....V1.0
00A2C0:  0D 0D 2D 2D 2D 2D 20 41 20 63 6F 72 72 75 70 74    ..---- A corrupt
00A2D0:  2E 0D 0D 0D 0D 56 31 2E 31 0D 0D 2D 2D 2D 2D 20    .....V1.1..---- 
00A2E0:  41 20 3D 20 65 72 72 6F 72 20 6E 75 6D 62 65 72    A = error number
00A2F0:  20 28 26 30 45 29 0D 0D 0D 0D 49 66 20 74 68 65     (&0E)....If the
00A300:  20 75 73 65 72 20 68 69 74 20 65 73 63 61 70 65     user hit escape
00A310:  3A 0D 0D 0D 0D 43 61 72 72 79 20 66 61 6C 73 65    :....Carry false
00A320:  2E 20 5A 65 72 6F 20 74 72 75 65 2E 0D 0D 0D 0D    . Zero true.....
00A330:  56 31 2E 30 0D 0D 2D 2D 2D 2D 20 41 20 63 6F 72    V1.0..---- A cor
00A340:  72 75 70 74 2E 0D 0D 0D 0D 56 31 2E 31 0D 0D 2D    rupt.....V1.1..-
00A350:  2D 2D 2D 20 41 20 3D 20 65 72 72 6F 72 20 6E 75    --- A = error nu
00A360:  6D 62 65 72 20 28 26 30 30 29 0D 0D 0D 0D 49 58    mber (&00)....IX
00A370:  2C 42 43 2C 44 45 2C 48 4C 20 61 6E 64 20 6F 74    ,BC,DE,HL and ot
00A380:  68 65 72 20 66 6C 61 67 73 20 63 6F 72 72 75 70    her flags corrup
00A390:  74 2E 0D 0D 0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    t.....----------
00A3A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00A3B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00A3C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00A3D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 8A 0D    -------------...
00A3E0:  0D 26 42 43 39 32 20 2D 20 43 41 53 20 4F 55 54    .&BC92 - CAS OUT
00A3F0:  20 41 42 41 4E 44 4F 4E 20 2D 20 43 6C 6F 73 65     ABANDON - Close
00A400:  73 20 6D 61 74 63 68 69 6E 67 20 74 68 6F 73 65    s matching those
00A410:  20 0D 8A 63 72 69 74 65 72 69 61 2C 20 61 6E 64     ..criteria, and
00A420:  20 74 68 65 20 6E 61 6D 65 73 20 61 72 65 20 69     the names are i
00A430:  6E 20 61 6C 70 68 61 62 65 74 69 63 61 6C 20 6F    n alphabetical o
00A440:  72 64 65 72 2E 0D 0D 0D 0D 49 66 20 6E 6F 20 66    rder.....If no f
00A450:  69 6C 65 73 20 6D 61 74 63 68 20 74 68 69 73 2C    iles match this,
00A460:  20 74 68 65 20 62 75 66 66 65 72 20 77 69 6C 6C     the buffer will
00A470:  20 73 74 61 72 74 20 77 69 74 68 20 61 20 7A 65     start with a ze
00A480:  72 6F 2E 0D 0D 0D 0D 54 68 65 20 63 61 74 61 6C    ro.....The catal
00A490:  6F 67 20 66 6F 72 6D 61 74 3A 0D 0D 0D 0D 45 6E    og format:....En
00A4A0:  74 72 79 20 31 2C 45 6E 74 72 79 20 32 2E 2E 2E    try 1,Entry 2...
00A4B0:  0D 0D 0D 0D 0D 0D 57 68 65 72 65 20 65 6E 74 72    ......Where entr
00A4C0:  79 20 66 6F 72 6D 61 74 20 69 73 3A 0D 0D 0D 0D    y format is:....
00A4D0:  42 79 74 65 20 30 3A 09 09 4D 61 72 6B 65 72 20    Byte 0:..Marker 
00A4E0:  28 26 46 46 29 0D 0D 42 79 74 65 20 31 2D 31 32    (&FF)..Byte 1-12
00A4F0:  3A 09 46 69 6C 65 6E 61 6D 65 20 0D 0D 0D 0D 09    :.Filename .....
00A500:  09 38 20 63 68 61 72 61 63 74 65 72 20 6E 61 6D    .8 character nam
00A510:  65 20 70 61 72 74 20 70 61 64 64 65 64 20 77 69    e part padded wi
00A520:  74 68 20 73 70 61 63 65 73 0D 0D 0D 0D 09 09 33    th spaces......3
00A530:  20 63 68 61 72 61 63 74 65 72 20 65 78 74 65 6E     character exten
00A540:  73 69 6F 6E 20 70 61 72 74 20 70 61 64 64 65 64    sion part padded
00A550:  20 77 69 74 68 20 73 70 61 63 65 73 0D 0D 0D 0D     with spaces....
00A560:  09 09 45 78 74 65 6E 73 69 6F 6E 20 70 61 72 74    ..Extension part
00A570:  3A 0D 0D 0D 0D 09 09 42 79 74 65 20 30 3A 09 09    :......Byte 0:..
00A580:  42 69 74 20 37 3A 20 31 3A 20 52 65 61 64 20 4F    Bit 7: 1: Read O
00A590:  6E 6C 79 2C 0D 0D 09 09 09 09 20 20 20 20 20 20    nly,......      
00A5A0:  20 30 3A 20 52 65 61 64 20 77 72 69 74 65 2E 0D     0: Read write..
00A5B0:  0D 0D 0D 42 79 74 65 20 31 33 3A 09 53 69 7A 65    ...Byte 13:.Size
00A5C0:  20 6F 66 20 66 69 6C 65 20 69 6E 20 4B 2E 0D 0D     of file in K...
00A5D0:  42 79 74 65 20 31 34 3A 09 4D 61 72 6B 65 72 20    Byte 14:.Marker 
00A5E0:  28 26 30 30 29 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 2D    (&00)..........-
00A5F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00A600:  20 6F 75 74 70 75 74 20 66 69 6C 65 20 69 6D 6D     output file imm
00A610:  65 64 69 61 74 65 6C 79 2E 0D 0D 0D 0D 45 6E 74    ediately.....Ent
00A620:  72 79 3A 0D 0D 0D 0D 4E 6F 6E 65 0D 0D 0D 0D 45    ry:....None....E
00A630:  78 69 74 3A 0D 0D 0D 0D 41 46 2C 42 43 2C 44 45    xit:....AF,BC,DE
00A640:  2C 48 4C 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 0D    ,HL corrupt.....
00A650:  4E 6F 74 65 73 3A 0D 0D 0D 0D 54 68 69 73 20 69    Notes:....This i
00A660:  73 20 69 6E 74 65 6E 64 65 64 20 74 6F 20 62 65    s intended to be
00A670:  20 75 73 65 64 20 61 66 74 65 72 20 61 6E 20 65     used after an e
00A680:  72 72 6F 72 20 68 61 73 20 6F 63 63 75 72 65 64    rror has occured
00A690:  2E 0D 0D 0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    .....-----------
00A6A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00A6B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00A6C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00A6D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 8A 0D 0D    ------------....
00A6E0:  26 42 43 39 35 20 2D 20 43 41 53 20 4F 55 54 20    &BC95 - CAS OUT 
00A6F0:  43 48 41 52 20 2D 20 57 72 69 74 65 20 61 20 63    CHAR - Write a c
00A700:  68 61 72 61 63 74 65 72 20 74 6F 20 74 68 65 20    haracter to the 
00A710:  6F 75 74 70 75 74 20 66 69 6C 65 0D 0D 0D 0D 45    output file....E
00A720:  6E 74 72 79 3A 0D 0D 0D 0D 41 20 3D 20 63 68 61    ntry:....A = cha
00A730:  72 61 63 74 65 72 0D 0D 0D 0D 45 78 69 74 3A 0D    racter....Exit:.
00A740:  0D 0D 0D 49 66 20 63 68 61 72 61 63 74 65 72 20    ...If character 
00A750:  77 61 73 20 77 72 69 74 74 65 6E 20 4F 4B 3A 0D    was written OK:.
00A760:  0D 0D 0D 43 61 72 72 79 20 74 72 75 65 2E 20 5A    ...Carry true. Z
00A770:  65 72 6F 20 66 61 6C 73 65 2E 0D 0D 41 20 3D 20    ero false...A = 
00A780:  63 6F 72 72 75 70 74 2E 0D 0D 0D 0D 49 66 20 74    corrupt.....If t
00A790:  68 65 20 66 69 6C 65 20 77 61 73 20 6E 6F 74 20    he file was not 
00A7A0:  6F 70 65 6E 20 61 73 20 65 78 70 65 63 74 65 64    open as expected
00A7B0:  3A 0D 0D 0D 0D 43 61 72 72 79 20 66 61 6C 73 65    :....Carry false
00A7C0:  2E 20 5A 65 72 6F 20 66 61 6C 73 65 2E 20 0D 0D    . Zero false. ..
00A7D0:  0D 0D 56 31 2E 30 0D 0D 2D 2D 2D 2D 20 41 20 63    ..V1.0..---- A c
00A7E0:  6F 72 72 75 70 74 2E 0D 0D 0D 0D 56 31 2E 31 0D    orrupt.....V1.1.
00A7F0:  0D 2D 2D 2D 2D 20 41 20 3D 20 65 72 72 6F 72 20    .---- A = error 
00A800:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00A810:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00A820:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00A830:  2D 2D 2D 2D 2D 2D 0D 8A 0D 0D 26 42 43 39 45 20    ------....&BC9E 
00A840:  2D 20 43 41 53 20 57 52 49 54 45 20 2D 20 57 72    - CAS WRITE - Wr
00A850:  69 74 65 20 61 20 68 65 61 64 65 72 6C 65 73 73    ite a headerless
00A860:  20 66 69 6C 65 20 74 6F 20 74 61 70 65 2E 0D 0D     file to tape...
00A870:  0D 0D 45 6E 74 72 79 3A 0D 0D 0D 0D 48 4C 20 3D    ..Entry:....HL =
00A880:  20 61 64 64 72 65 73 73 20 6F 66 20 64 61 74 61     address of data
00A890:  20 74 6F 20 77 72 69 74 65 0D 0D 44 45 20 3D 20     to write..DE = 
00A8A0:  6C 65 6E 67 74 68 20 6F 66 20 64 61 74 61 20 74    length of data t
00A8B0:  6F 20 77 72 69 74 65 0D 0D 41 20 3D 20 73 79 6E    o write..A = syn
00A8C0:  63 20 63 68 61 72 61 63 74 65 72 20 74 6F 20 77    c character to w
00A8D0:  72 69 74 65 20 61 74 20 65 6E 64 20 6F 66 20 74    rite at end of t
00A8E0:  68 65 20 6C 65 61 64 65 72 0D 0D 0D 0D 45 78 69    he leader....Exi
00A8F0:  74 3A 0D 0D 0D 0D 49 66 20 74 68 65 20 72 65 63    t:....If the rec
00A900:  6F 72 64 20 77 61 73 20 77 72 69 74 74 65 6E 20    ord was written 
00A910:  4F 4B 3A 0D 0D 0D 0D 43 61 72 72 79 20 74 72 75    OK:....Carry tru
00A920:  65 2E 20 41 20 63 6F 72 72 75 70 74 2E 0D 0D 0D    e. A corrupt....
00A930:  0D 49 66 20 61 6E 20 65 72 72 6F 72 20 6F 63 63    .If an error occ
00A940:  75 72 65 64 3A 0D 0D 0D 0D 43 61 72 72 79 20 66    ured:....Carry f
00A950:  61 6C 73 65 2E 20 41 20 3D 20 65 72 72 6F 72 20    alse. A = error 
00A960:  63 6F 64 65 0D 0D 0D 0D 42 43 2C 44 45 2C 48 4C    code....BC,DE,HL
00A970:  2C 49 58 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 0D    ,IX corrupt.....
00A980:  4E 6F 74 65 73 3A 0D 0D 0D 0D 41 20 6C 65 6E 67    Notes:....A leng
00A990:  74 68 20 6F 66 20 30 20 69 73 20 74 61 6B 65 6E    th of 0 is taken
00A9A0:  20 74 6F 20 6D 65 61 6E 20 36 35 35 33 36 20 62     to mean 65536 b
00A9B0:  79 74 65 73 2E 20 54 68 65 20 64 61 74 61 20 74    ytes. The data t
00A9C0:  6F 20 62 65 20 77 72 69 74 74 65 6E 20 6D 61 79    o be written may
00A9D0:  20 0D 8A 6C 69 65 20 61 6E 79 77 68 65 72 65 2C     ..lie anywhere,
00A9E0:  20 65 76 65 6E 20 75 6E 64 65 72 20 61 20 72 6F     even under a ro
00A9F0:  6D 2E 0D 0D 0D 0D 54 68 65 20 73 79 6E 63 20 63    m.....The sync c
00AA00:  6E 75 6D 62 65 72 20 28 26 30 45 29 0D 0D 0D 0D    number (&0E)....
00AA10:  49 66 20 75 73 65 72 20 68 69 74 20 65 73 63 61    If user hit esca
00AA20:  70 65 3A 0D 0D 0D 0D 43 61 72 72 79 20 66 61 6C    pe:....Carry fal
00AA30:  73 65 2E 0D 0D 5A 65 72 6F 20 74 72 75 65 2E 0D    se...Zero true..
00AA40:  0D 0D 0D 56 31 2E 30 0D 0D 2D 2D 2D 2D 20 41 20    ...V1.0..---- A 
00AA50:  63 6F 72 72 75 70 74 2E 0D 0D 0D 0D 56 31 2E 31    corrupt.....V1.1
00AA60:  0D 0D 2D 2D 2D 2D 20 41 20 3D 20 65 72 72 6F 72    ..---- A = error
00AA70:  20 6E 75 6D 62 65 72 20 28 26 30 30 29 0D 0D 0D     number (&00)...
00AA80:  0D 41 2C 49 58 20 61 6E 64 20 6F 74 68 65 72 20    .A,IX and other 
00AA90:  66 6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0D    flags corrupt...
00AAA0:  0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ..--------------
00AAB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00AAC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00AAD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00AAE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 8A 0D 0D 26 42 43    ---------....&BC
00AAF0:  39 38 20 2D 20 43 41 53 20 4F 55 54 20 44 49 52    98 - CAS OUT DIR
00AB00:  45 43 54 20 2D 20 57 72 69 74 65 20 74 68 65 20    ECT - Write the 
00AB10:  6F 75 74 70 75 74 20 66 69 6C 65 20 66 72 6F 6D    output file from
00AB20:  20 73 74 6F 72 65 2E 0D 0D 0D 0D 45 6E 74 72 79     store.....Entry
00AB30:  3A 0D 0D 0D 0D 48 4C 20 3D 20 61 64 64 72 65 73    :....HL = addres
00AB40:  73 20 6F 66 20 74 68 65 20 64 61 74 61 20 74 6F    s of the data to
00AB50:  20 77 72 69 74 65 0D 0D 44 45 20 3D 20 6C 65 6E     write..DE = len
00AB60:  67 74 68 20 6F 66 20 64 61 74 61 20 74 6F 20 77    gth of data to w
00AB70:  72 69 74 65 0D 0D 42 43 20 3D 20 65 6E 74 72 79    rite..BC = entry
00AB80:  20 61 64 64 72 65 73 73 0D 0D 41 20 3D 20 66 69     address..A = fi
00AB90:  6C 65 20 74 79 70 65 0D 0D 0D 0D 45 78 69 74 3A    le type....Exit:
00ABA0:  0D 0D 0D 0D 49 66 20 66 69 6C 65 20 77 61 73 20    ....If file was 
00ABB0:  77 72 69 74 74 65 6E 20 4F 4B 3A 0D 0D 0D 0D 43    written OK:....C
00ABC0:  61 72 72 79 20 74 72 75 65 2E 0D 0D 5A 65 72 6F    arry true...Zero
00ABD0:  20 66 61 6C 73 65 2E 0D 0D 41 20 63 6F 72 72 75     false...A corru
00ABE0:  70 74 2E 0D 0D 0D 0D 49 66 20 74 68 65 20 73 74    pt.....If the st
00ABF0:  72 65 61 6D 20 69 73 20 6E 6F 74 20 6F 70 65 6E    ream is not open
00AC00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00AC10:  09 00 01 00 02 09 4E E5 09 00 C1 02 00 00 00 02    ......N.........
00AC20:  09 00 C6 02 00 00 00 02 09 00 C2 02 00 00 00 02    ................
00AC30:  09 00 C7 02 00 00 00 02 09 00 C3 02 00 00 00 02    ................
00AC40:  09 00 C8 02 00 00 00 02 09 00 C4 02 00 00 00 02    ................
00AC50:  09 00 C9 02 00 00 00 02 09 00 C5 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:  68 61 72 61 74 63 72 65 20 69 73 20 75 73 65 64    haratcre is used
00AD10:  20 74 6F 20 64 69 73 74 69 6E 67 75 69 73 68 20     to distinguish 
00AD20:  68 65 61 64 65 72 20 72 65 63 6F 72 64 73 20 28    header records (
00AD30:  73 79 6E 63 20 69 73 20 26 32 63 29 20 0D 8A 66    sync is &2c) ..f
00AD40:  72 6F 6D 20 64 61 74 61 20 72 65 63 6F 72 64 73    rom data records
00AD50:  20 28 73 79 6E 63 20 69 73 20 26 31 36 29 2E 90     (sync is &16)..
00AD60:  20 4F 74 68 65 72 90 20 73 79 6E 63 20 63 68 61     Other. sync cha
00AD70:  72 61 63 74 65 72 73 20 63 6F 75 6C 64 20 62 65    racters could be
00AD80:  20 75 73 65 64 20 0D 8A 62 75 74 20 74 68 65 20     used ..but the 
00AD90:  72 65 73 75 6C 74 69 6E 67 20 72 65 63 6F 72 64    resulting record
00ADA0:  20 77 6F 75 6C 64 20 72 65 71 75 69 72 65 90 20     would require. 
00ADB0:  73 70 65 63 69 61 6C 90 20 61 63 74 69 6F 6E 20    special. action 
00ADC0:  74 6F 20 62 65 20 74 61 6B 65 6E 20 74 6F 20 0D    to be taken to .
00ADD0:  8A 72 65 61 64 20 69 74 2E 0D 0D 0D 0D 54 68 65    .read it.....The
00ADE0:  20 65 72 72 6F 72 20 63 6F 64 65 73 20 61 72 65     error codes are
00ADF0:  3A 0D 0D 0D 0D 30 20 2D 20 54 68 65 20 65 73 63    :....0 - The esc
00AE00:  61 70 65 20 6B 65 79 20 77 61 73 20 70 72 65 73    ape key was pres
00AE10:  73 65 64 0D 0D 31 20 2D 20 54 68 65 20 63 61 73    sed..1 - The cas
00AE20:  73 65 74 74 65 20 6D 61 6E 61 67 65 72 20 77 61    sette manager wa
00AE30:  73 20 75 6E 61 62 6C 65 20 74 6F 90 20 67 65 74    s unable to. get
00AE40:  20 62 61 63 6B 20 74 6F 20 77 72 69 74 69 6E 67     back to writing
00AE50:  20 61 20 62 69 74 20 66 61 73 74 20 0D 8A 20 20     a bit fast ..  
00AE60:  20 20 65 6E 6F 75 67 68 2E 0D 0D 0D 0D 54 68 65      enough.....The
00AE70:  20 63 61 73 73 65 74 74 65 20 6D 6F 74 6F 72 20     cassette motor 
00AE80:  69 73 20 74 75 72 6E 65 64 20 6F 6E 90 20 62 79    is turned on. by
00AE90:  90 20 74 68 69 73 20 72 6F 75 74 69 6E 65 20 61    . this routine a
00AEA0:  6E 64 20 74 68 65 6E 20 72 65 73 74 6F 72 65 64    nd then restored
00AEB0:  20 74 6F 20 0D 8A 69 74 73 20 6F 72 69 67 69 6E     to ..its origin
00AEC0:  61 6C 20 73 74 61 74 75 73 2E 0D 0D 0D 0D 49 6E    al status.....In
00AED0:  74 65 72 75 70 74 73 20 61 72 65 20 64 69 73 61    terupts are disa
00AEE0:  62 6C 65 64 20 61 6E 64 20 74 68 65 20 73 6F 75    bled and the sou
00AEF0:  6E 64 90 20 6D 61 6E 61 67 65 72 90 20 69 73 20    nd. manager. is 
00AF00:  43 4F 4E 4E 45 43 54 4F 52 53 0D 3D 3D 3D 3D 3D    CONNECTORS.=====
00AF10:  3D 3D 3D 3D 3D 0D 0D 0D 4E 43 20 2D 09 50 69 6E    =====...NC -.Pin
00AF20:  20 6E 6F 74 20 63 6F 6E 6E 65 63 74 65 64 0D 0D     not connected..
00AF30:  41 20 62 61 72 20 61 62 6F 76 65 20 74 68 65 20    A bar above the 
00AF40:  70 69 6E 20 6E 61 6D 65 2C 20 69 6E 64 69 63 61    pin name, indica
00AF50:  74 65 73 20 74 68 61 74 20 74 68 65 20 73 69 67    tes that the sig
00AF60:  6E 61 6C 20 69 73 20 61 63 74 69 76 65 20 77 68    nal is active wh
00AF70:  65 6E 20 6C 6F 77 2C 0D 6F 72 20 61 20 30 56 20    en low,.or a 0V 
00AF80:  69 73 20 61 70 70 6C 69 65 64 2E 0D 0D 47 4E 44    is applied...GND
00AF90:  09 2D 20 30 56 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D    .- 0V..=========
00AFA0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00AFB0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00AFC0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00AFD0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00AFE0:  3D 3D 3D 3D 3D 3D 0D 0D 0D 50 72 69 6E 74 65 72    ======...Printer
00AFF0:  20 50 6F 72 74 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D     Port.==========
00B000:  3D 3D 0D 0D 09 09 41 73 20 73 65 65 6E 20 66 72    ==....As seen fr
00B010:  6F 6D 20 74 68 65 20 72 65 61 72 0D 0D 0D 0D 31    om the rear....1
00B020:  37 20 31 36 20 31 35 20 31 34 20 31 33 20 31 32    7 16 15 14 13 12
00B030:  20 31 31 20 31 30 20 39 20 20 38 20 20 37 20 20     11 10 9  8  7  
00B040:  36 20 20 35 20 20 34 20 20 33 20 20 32 20 20 31    6  5  4  3  2  1
00B050:  0D 2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D 20 20    .-  -  -  -  -  
00B060:  2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D    -  -  -  -  -  -
00B070:  20 20 2D 20 20 2D 7C 7C 2D 20 20 2D 20 20 2D 20      -  -||-  -  - 
00B080:  20 2D 20 0D 2D 20 20 2D 20 20 2D 20 20 2D 20 20     - .-  -  -  -  
00B090:  2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D    -  -  -  -  -  -
00B0A0:  20 20 2D 20 20 2D 20 20 2D 7C 7C 2D 20 20 2D 20      -  -  -||-  - 
00B0B0:  20 2D 20 20 2D 0D 33 35 20 33 34 20 33 33 20 33     -  -.35 34 33 3
00B0C0:  32 20 33 31 20 33 30 20 32 39 20 32 38 20 32 37    2 31 30 29 28 27
00B0D0:  20 32 36 20 32 35 20 32 34 20 32 33 20 32 32 20     26 25 24 23 22 
00B0E0:  32 31 20 32 30 20 31 39 0D 0D 09 5F 5F 5F 5F 5F    21 20 19..._____
00B0F0:  5F 0D 31 09 53 74 72 6F 62 65 0D 0D 32 09 44 30    _.1.Strobe..2.D0
00B100:  73 68 75 74 20 64 6F 77 6E 20 73 6F 20 74 68 61    shut down so tha
00B110:  74 20 6E 6F 20 0D 8A 6E 6F 74 65 20 6C 61 73 74    t no ..note last
00B120:  73 20 66 6F 72 20 74 68 65 20 64 75 72 61 74 69    s for the durati
00B130:  6F 6E 20 6F 66 20 74 68 65 20 72 65 63 6F 72 64    on of the record
00B140:  20 62 65 69 6E 67 20 6C 6F 61 64 65 64 2E 0D 0D     being loaded...
00B150:  0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ..--------------
00B160:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00B170:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00B180:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00B190:  2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 0D 0D 26 42 43 41    --------....&BCA
00B1A0:  31 20 2D 20 43 41 53 20 52 45 41 44 20 2D 20 52    1 - CAS READ - R
00B1B0:  65 61 64 20 61 20 72 65 63 6F 72 64 20 66 72 6F    ead a record fro
00B1C0:  6D 20 74 61 70 65 0D 0D 0D 0D 45 6E 74 72 79 3A    m tape....Entry:
00B1D0:  0D 0D 0D 0D 48 4C 20 3D 20 61 64 64 72 65 73 73    ....HL = address
00B1E0:  20 74 6F 20 70 75 74 20 64 61 74 61 0D 0D 44 45     to put data..DE
00B1F0:  20 3D 20 6C 65 6E 67 74 68 20 6F 66 20 64 61 74     = length of dat
00B200:  61 0D 0D 41 20 3D 20 73 79 6E 63 20 63 68 61 72    a..A = sync char
00B210:  61 63 74 65 72 20 65 78 70 65 63 74 65 64 20 61    acter expected a
00B220:  74 20 65 6E 64 20 6F 66 20 6C 65 61 64 65 72 2E    t end of leader.
00B230:  0D 0D 0D 0D 45 78 69 74 3A 0D 0D 0D 0D 49 66 20    ....Exit:....If 
00B240:  72 65 63 6F 72 64 20 77 61 73 20 72 65 61 64 20    record was read 
00B250:  4F 4B 3A 0D 0D 0D 0D 43 61 72 72 79 20 74 72 75    OK:....Carry tru
00B260:  65 2E 20 41 20 63 6F 72 72 75 70 74 2E 0D 0D 0D    e. A corrupt....
00B270:  0D 49 66 20 61 6E 20 65 72 72 6F 72 20 6F 63 63    .If an error occ
00B280:  75 72 65 64 3A 0D 0D 0D 0D 43 61 72 72 79 20 66    ured:....Carry f
00B290:  61 6C 73 65 2E 20 41 20 3D 20 65 72 72 6F 72 20    alse. A = error 
00B2A0:  63 6F 64 65 0D 0D 0D 0D 42 43 2C 44 45 2C 48 4C    code....BC,DE,HL
00B2B0:  2C 49 58 20 61 6E 64 20 6F 74 68 65 72 20 66 6C    ,IX and other fl
00B2C0:  61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 0D    ags corrupt.....
00B2D0:  4E 6F 74 65 73 3A 0D 0D 0D 0D 49 74 20 69 73 20    Notes:....It is 
00B2E0:  6E 6F 74 20 6E 65 63 65 73 73 61 72 79 20 74 6F    not necessary to
00B2F0:  20 72 65 61 64 20 61 6C 6C 90 20 74 68 65 90 20     read all. the. 
00B300:  0D 0D 33 09 44 31 0D 0D 34 09 44 32 0D 0D 35 09    ..3.D1..4.D2..5.
00B310:  44 33 0D 0D 36 09 44 34 0D 0D 37 09 44 35 0D 0D    D3..6.D4..7.D5..
00B320:  38 09 44 36 0D 0D 39 09 44 37 0D 0D 31 30 09 4E    8.D6..9.D7..10.N
00B330:  43 0D 0D 31 31 09 42 75 73 79 0D 0D 31 32 09 4E    C..11.Busy..12.N
00B340:  43 0D 0D 31 33 09 4E 43 0D 0D 31 34 09 47 6E 64    C..13.NC..14.Gnd
00B350:  0D 0D 31 35 09 4E 43 0D 0D 31 36 09 47 6E 64 0D    ..15.NC..16.Gnd.
00B360:  0D 31 37 09 4E 43 0D 0D 31 39 09 47 6E 64 0D 0D    .17.NC..19.Gnd..
00B370:  32 30 09 4E 43 0D 0D 32 31 09 47 6E 64 0D 0D 32    20.NC..21.Gnd..2
00B380:  32 09 4E 43 0D 0D 32 33 09 47 6E 64 0D 0D 32 34    2.NC..23.Gnd..24
00B390:  09 4E 43 0D 0D 32 35 09 47 6E 64 0D 0D 32 36 09    .NC..25.Gnd..26.
00B3A0:  4E 43 0D 0D 32 37 09 47 6E 64 0D 0D 32 38 09 4E    NC..27.Gnd..28.N
00B3B0:  43 0D 0D 32 39 09 47 6E 64 0D 0D 33 30 09 4E 43    C..29.Gnd..30.NC
00B3C0:  0D 0D 33 31 09 47 6E 64 0D 0D 33 32 09 4E 43 0D    ..31.Gnd..32.NC.
00B3D0:  0D 33 33 09 47 6E 64 0D 0D 3D 3D 3D 3D 3D 3D 3D    .33.Gnd..=======
00B3E0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00B3F0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00B400:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00B410:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00B420:  3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 0D 4A 6F 79 73    =========...Joys
00B430:  74 69 63 6B 20 53 6F 63 6B 65 74 0D 3D 3D 3D 3D    tick Socket.====
00B440:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 0D 0D 20    ===========.... 
00B450:  20 20 20 20 20 20 20 20 20 20 20 20 41 73 20 73                As s
00B460:  65 65 6E 20 66 72 6F 6D 20 74 68 65 20 72 65 61    een from the rea
00B470:  72 0D 0D 0D 20 20 20 20 5F 5F 5F 5F 5F 5F 5F 5F    r...    ________
00B480:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
00B490:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
00B4A0:  5F 5F 0D 20 20 20 20 5C 20 20 20 20 20 20 20 20    __.    \        
00B4B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00B4C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00B4D0:  2F 0D 20 20 20 20 20 5C 09 31 09 32 09 33 09 34    /.     \.1.2.3.4
00B4E0:  09 35 20 20 20 2F 0D 20 20 20 20 20 20 5C 20 20    .5   /.      \  
00B4F0:  2A 20 20 20 20 20 20 2A 20 20 20 20 20 20 20 2A    *      *       *
00B500:  64 61 74 61 90 20 62 79 74 65 73 20 69 6E 20 74    data. bytes in t
00B510:  68 65 20 72 65 63 6F 72 64 2E 20 20 49 66 20 61    he record.  If a
00B520:  20 0D 8A 6C 65 6E 67 74 68 20 6F 66 20 6C 65 73     ..length of les
00B530:  73 20 74 68 61 6E 90 20 74 68 61 74 90 20 77 72    s than. that. wr
00B540:  69 74 74 65 6E 90 20 69 73 90 20 73 70 65 63 69    itten. is. speci
00B550:  66 69 65 64 90 20 6F 6E 6C 79 20 74 68 61 74 20    fied. only that 
00B560:  6E 75 6D 62 65 72 20 6F 66 20 0D 8A 62 79 74 65    number of ..byte
00B570:  73 20 77 69 6C 6C 20 62 65 20 72 65 61 64 2E 20    s will be read. 
00B580:  54 72 79 69 6E 67 90 20 74 6F 90 20 72 65 61 64    Trying. to. read
00B590:  90 20 6D 6F 72 65 90 20 62 79 74 65 73 20 74 68    . more. bytes th
00B5A0:  61 6E 20 74 68 6F 73 65 20 74 68 61 74 20 68 61    an those that ha
00B5B0:  76 65 20 0D 8A 62 65 65 6E 20 77 72 69 74 74 65    ve ..been writte
00B5C0:  6E 20 77 69 6C 6C 20 67 69 76 65 20 61 6E 20 65    n will give an e
00B5D0:  72 72 6F 72 20 28 75 73 75 61 6C 6C 79 20 6F 76    rror (usually ov
00B5E0:  65 72 72 75 6E 29 2E 0D 0D 0D 0D 53 65 65 20 43    errun).....See C
00B5F0:  41 53 20 57 52 49 54 45 0D 0D 0D 0D 4F 6E 65 20    AS WRITE....One 
00B600:  65 78 74 72 61 20 65 72 72 6F 72 20 63 61 6E 20    extra error can 
00B610:  6F 63 63 75 72 3A 0D 0D 0D 0D 32 20 2D 20 41 20    occur:....2 - A 
00B620:  43 52 43 20 66 61 69 6C 75 72 65 20 77 61 73 20    CRC failure was 
00B630:  64 65 74 65 63 74 65 64 2E 0D 0D 0D 0D 2D 2D 2D    detected.....---
00B640:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00B650:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00B660:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00B670:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00B680:  2D 2D 2D 0D 0D 0D 0D 26 42 43 41 34 20 2D 20 43    ---....&BCA4 - C
00B690:  41 53 20 43 48 45 43 4B 20 2D 20 43 68 65 63 6B    AS CHECK - Check
00B6A0:  20 61 20 72 65 63 6F 72 64 20 6F 6E 20 63 61 73     a record on cas
00B6B0:  73 65 74 74 65 20 77 69 74 68 20 64 61 74 61 20    sette with data 
00B6C0:  69 6E 20 6D 65 6D 6F 72 79 0D 0D 0D 0D 45 6E 74    in memory....Ent
00B6D0:  72 79 3A 0D 0D 0D 0D 48 4C 20 3D 20 73 74 61 72    ry:....HL = star
00B6E0:  74 20 61 64 64 72 65 73 73 20 6F 66 20 64 61 74    t address of dat
00B6F0:  61 20 74 6F 20 72 65 61 64 0D 0D 44 45 20 3D 20    a to read..DE = 
00B700:  20 20 20 20 20 20 20 2A 20 20 20 20 20 20 2A 20           *      * 
00B710:  20 20 2F 20 0D 20 20 20 20 20 20 20 5C 20 20 20      / .       \   
00B720:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00B730:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F                   /
00B740:  0D 20 20 20 20 20 20 20 20 5C 20 20 20 20 2A 20    .        \    * 
00B750:  20 20 20 20 20 2A 20 20 20 20 20 20 20 2A 20 20         *       *  
00B760:  20 20 20 20 20 2A 20 20 20 20 2F 0D 09 20 5C 20         *    /.. \ 
00B770:  20 20 36 09 20 20 20 20 37 09 20 20 20 20 38 09      6.    7.    8.
00B780:  20 20 20 20 39 20 20 20 2F 0D 20 20 20 20 20 20        9   /.      
00B790:  20 20 20 20 5C 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F        \___________
00B7A0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    ________________
00B7B0:  5F 2F 0D 0D 0D 31 09 55 70 0D 0D 32 09 44 6F 77    _/...1.Up..2.Dow
00B7C0:  6E 0D 0D 33 09 4C 65 66 74 0D 0D 34 09 52 69 67    n..3.Left..4.Rig
00B7D0:  68 74 0D 0D 35 09 53 70 61 72 65 09 28 45 78 74    ht..5.Spare.(Ext
00B7E0:  72 61 20 66 69 72 65 20 62 75 74 74 6F 6E 20 66    ra fire button f
00B7F0:  6F 72 20 41 4D 58 20 6D 6F 75 73 65 29 0D 0D 36    or AMX mouse)..6
00B800:  09 46 69 72 65 20 32 0D 0D 37 09 46 69 72 65 20    .Fire 2..7.Fire 
00B810:  31 0D 0D 38 09 43 6F 6D 6D 6F 6E 0D 0D 39 09 43    1..8.Common..9.C
00B820:  6F 6D 6D 6F 6E 20 32 0D 0D 3D 3D 3D 3D 3D 3D 3D    ommon 2..=======
00B830:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00B840:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00B850:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00B860:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00B870:  3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 0D 53 74 65 72    =========...Ster
00B880:  65 6F 20 53 6F 63 6B 65 74 0D 3D 3D 3D 3D 3D 3D    eo Socket.======
00B890:  3D 3D 3D 3D 3D 3D 3D 0D 0D 20 20 20 20 20 20 20    =======..       
00B8A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 69                  ri
00B8B0:  67 68 74 0D 20 20 20 20 20 20 20 20 20 20 20 20    ght.            
00B8C0:  20 20 20 20 20 20 20 20 20 20 7C 0D 20 20 20 20              |.    
00B8D0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00B8E0:  20 20 7C 0D 20 20 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F      |.  __________
00B8F0:  5F 5F 20 20 20 20 20 20 20 20 7C 0D 20 2F 20 20    __        |. /  
00B900:  6C 65 6E 67 74 68 20 6F 66 20 64 61 74 61 0D 0D    length of data..
00B910:  41 20 3D 20 73 79 6E 63 20 63 68 61 72 61 63 74    A = sync charact
00B920:  65 72 0D 0D 0D 0D 45 78 69 74 3A 0D 0D 0D 0D 49    er....Exit:....I
00B930:  66 20 72 65 63 6F 72 64 20 77 61 73 20 63 68 65    f record was che
00B940:  63 6B 65 64 20 4F 4B 3A 0D 0D 0D 0D 43 61 72 72    cked OK:....Carr
00B950:  79 20 74 72 75 65 2E 20 41 20 63 6F 72 72 75 70    y true. A corrup
00B960:  74 2E 0D 0D 0D 0D 49 66 20 61 6E 20 65 72 72 6F    t.....If an erro
00B970:  72 20 6F 63 63 75 72 65 64 3A 0D 0D 0D 0D 43 61    r occured:....Ca
00B980:  72 72 79 20 66 61 6C 73 65 2E 20 41 20 3D 20 65    rry false. A = e
00B990:  72 72 6F 72 20 63 6F 64 65 2E 0D 0D 0D 0D 42 43    rror code.....BC
00B9A0:  2C 44 45 2C 48 4C 2C 49 58 20 61 6E 64 20 6F 74    ,DE,HL,IX and ot
00B9B0:  68 65 72 20 66 6C 61 67 73 20 63 6F 72 72 75 70    her flags corrup
00B9C0:  74 2E 0D 0D 0D 0D 4E 6F 74 65 73 3A 0D 0D 0D 0D    t.....Notes:....
00B9D0:  53 65 65 20 43 41 53 20 52 45 41 44 0D 0D 0D 0D    See CAS READ....
00B9E0:  4F 6E 65 20 65 78 74 72 61 20 63 6F 64 65 20 6D    One extra code m
00B9F0:  61 79 20 62 65 20 72 65 74 75 72 6E 65 64 20 62    ay be returned b
00BA00:  79 20 74 68 69 73 20 72 6F 75 74 69 6E 65 2E 0D    y this routine..
00BA10:  0D 0D 0D 33 20 2D 20 54 68 65 20 64 61 74 61 20    ...3 - The data 
00BA20:  69 73 20 64 69 66 66 65 72 65 6E 74 20 74 6F 20    is different to 
00BA30:  74 68 61 74 20 69 6E 20 6D 65 6D 6F 72 79 0D 0D    that in memory..
00BA40:  0D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ..--------------
00BA50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00BA60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00BA70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00BA80:  2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 1A 24 24 FF 00 FF    --------...$$...
00BA90:  6F 77 73 3A 0D 0D 26 30 45 09 46 69 6C 65 20 69    ows:..&0E.File i
00BAA0:  73 20 6E 6F 74 20 6F 70 65 6E 20 61 73 20 65 78    s not open as ex
00BAB0:  70 65 63 74 65 64 0D 26 30 46 09 48 61 72 64 20    pected.&0F.Hard 
00BAC0:  65 6E 64 20 6F 66 20 66 69 6C 65 0D 0D 1A 6E 63    end of file...nc
00BAD0:  74 69 6F 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    tio.............
00BAE0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00BAF0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00BB00:  20 20 20 20 20 20 20 20 20 20 7C 5F 5F 5F 5F 5F              |_____
00BB10:  20 5F 5F 5F 20 2D 2D 0D 7C 20 20 20 20 20 20 20     ___ --.|       
00BB20:  20 20 20 20 20 20 7C 5F 5F 5F 5F 5F 7C 5F 5F 5F          |_____|___
00BB30:  7C 20 20 7C 0D 20 5C 5F 5F 5F 5F 5F 5F 5F 5F 5F    |  |. \_________
00BB40:  5F 5F 5F 7C 20 20 20 20 20 20 20 20 20 20 2D 2D    ___|          --
00BB50:  0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
00BB60:  20 20 7C 20 20 20 20 20 20 20 20 7C 0D 20 20 20      |        |.   
00BB70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20                  | 
00BB80:  20 20 20 20 20 20 20 7C 0D 20 20 20 20 20 20 20           |.       
00BB90:  20 20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20              |     
00BBA0:  20 20 6C 65 66 74 0D 20 20 20 20 20 20 20 20 20      left.         
00BBB0:  20 20 20 20 20 20 20 67 6E 64 0D 0D 0D 3D 3D 3D           gnd...===
00BBC0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00BBD0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00BBE0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00BBF0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00BC00:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 0D    =============...
00BC10:  4D 6F 6E 69 74 6F 72 20 53 6F 63 6B 65 74 0D 3D    Monitor Socket.=
00BC20:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 0D    =============...
00BC30:  09 09 73 65 65 6E 20 66 72 6F 6D 20 72 65 61 72    ..seen from rear
00BC40:  0D 0D 0D 09 09 20 20 20 20 20 0D 09 09 20 20 20    .....     ...   
00BC50:  20 5F 5F 5F 20 20 20 5F 5F 5F 0D 20 20 20 20 20     ___   ___.     
00BC60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 2F 20                  / 
00BC70:  20 20 7C 5F 7C 20 20 20 5C 0D 20 20 20 20 20 20      |_|   \.      
00BC80:  20 20 20 20 20 20 20 20 20 20 20 20 2F 20 35 20                / 5 
00BC90:  20 20 20 20 20 20 31 20 5C 0D 20 20 20 20 20 20          1 \.      
00BCA0:  20 20 20 20 20 20 20 20 20 20 20 7C 20 20 2A 20               |  * 
00BCB0:  20 20 36 20 20 20 2A 20 20 7C 0D 20 20 20 20 20      6   *  |.     
00BCC0:  20 20 20 20 20 20 20 20 20 20 20 20 7C 20 20 20                |   
00BCD0:  20 20 20 2A 20 20 20 20 20 20 7C 0D 20 20 20 20       *      |.    
00BCE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20 20                 |  
00BCF0:  2A 20 20 20 20 20 20 20 2A 20 20 7C 0D 20 20 20    *       *  |.   
00BD00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BD10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BD20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BD30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BD40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BD50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BD60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BD70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BD80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BD90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BDA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BDB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BDC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BDD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BDE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BDF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BE00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BE10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BE20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BE30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BE40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BE50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BE60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BE70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BE80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BE90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BEA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BEB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BEC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BED0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BEE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BEF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00BF00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00BF10:  0A 00 01 00 02 09 4E E5 0A 00 C1 02 00 00 00 02    ......N.........
00BF20:  0A 00 C6 02 00 00 00 02 0A 00 C2 02 00 00 00 02    ................
00BF30:  0A 00 C7 02 00 00 00 02 0A 00 C3 02 00 00 00 02    ................
00BF40:  0A 00 C8 02 00 00 00 02 0A 00 C4 02 00 00 00 02    ................
00BF50:  0A 00 C9 02 00 00 00 02 0A 00 C5 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 20 20 20 20 20 20 20 20 20 20 5C                   \
00C010:  20 34 20 20 20 2A 33 20 20 32 20 2F 0D 09 09 20     4   *3  2 /... 
00C020:  20 20 5C 5F 5F 5F 5F 5F 5F 5F 5F 5F 2F 0D 0D 0D      \_________/...
00C030:  31 09 52 65 64 20 28 41 6E 61 6C 6F 67 75 65 20    1.Red (Analogue 
00C040:  73 69 67 6E 61 6C 29 0D 0D 32 09 47 72 65 65 6E    signal)..2.Green
00C050:  20 28 41 6E 61 6C 6F 67 75 65 20 73 69 67 6E 61     (Analogue signa
00C060:  6C 29 0D 0D 33 09 42 6C 75 65 20 28 41 6E 61 6C    l)..3.Blue (Anal
00C070:  6F 67 75 65 20 73 69 67 6E 61 6C 29 0D 0D 34 09    ogue signal)..4.
00C080:  43 6F 6D 70 6F 73 69 74 65 20 53 79 6E 63 20 28    Composite Sync (
00C090:  63 6F 6D 62 69 6E 65 64 20 48 6F 72 69 7A 6F 6E    combined Horizon
00C0A0:  74 61 6C 20 61 6E 64 20 56 65 72 69 63 61 6C 20    tal and Verical 
00C0B0:  73 79 6E 63 20 73 69 67 6E 61 6C 73 29 0D 0D 35    sync signals)..5
00C0C0:  09 47 6E 64 0D 0D 36 20 20 20 09 4C 75 6D 69 6E    .Gnd..6   .Lumin
00C0D0:  61 6E 63 65 20 28 61 6E 61 6C 6F 67 75 65 20 73    ance (analogue s
00C0E0:  69 67 6E 61 6C 3B 20 6F 6E 6C 79 20 61 70 70 6C    ignal; only appl
00C0F0:  69 65 73 20 74 6F 20 47 72 65 65 6E 20 53 63 72    ies to Green Scr
00C100:  65 65 6E 20 4D 6F 6E 69 74 6F 72 73 29 0D 0D 0D    een Monitors)...
00C110:  0D 4E 6F 74 65 3A 0D 0D 46 6F 72 20 63 6F 6C 6F    .Note:..For colo
00C120:  75 72 20 6D 6F 6E 69 74 6F 72 73 3A 0D 0D 31 29    ur monitors:..1)
00C130:  20 4F 6E 6C 79 20 74 68 65 20 52 65 64 2C 20 47     Only the Red, G
00C140:  72 65 65 6E 2C 20 42 6C 75 65 2C 20 43 6F 6D 70    reen, Blue, Comp
00C150:  6F 73 69 74 65 20 53 79 6E 63 2C 20 61 6E 64 20    osite Sync, and 
00C160:  47 6E 64 20 73 69 67 6E 61 6C 73 20 61 72 65 20    Gnd signals are 
00C170:  75 73 65 64 2E 0D 0D 32 29 20 54 68 65 20 52 65    used...2) The Re
00C180:  64 2C 20 47 72 65 65 6E 20 61 6E 64 20 42 6C 75    d, Green and Blu
00C190:  65 20 61 72 65 20 61 6E 61 6C 6F 67 75 65 20 73    e are analogue s
00C1A0:  69 67 6E 61 6C 73 2E 20 54 68 65 20 76 6F 6C 74    ignals. The volt
00C1B0:  61 67 65 20 6F 66 20 74 68 65 20 73 69 67 6E 61    age of the signa
00C1C0:  6C 0D 20 20 20 64 65 70 65 6E 64 73 20 6F 6E 20    l.   depends on 
00C1D0:  74 68 65 20 61 6D 6F 75 6E 74 20 6F 66 20 43 6F    the amount of Co
00C1E0:  6C 6F 75 72 20 70 72 65 73 65 6E 74 2E 0D 0D 33    lour present...3
00C1F0:  29 20 4F 6E 6C 79 20 33 20 6C 65 76 65 6C 73 20    ) Only 3 levels 
00C200:  73 73 2E 20 54 68 65 20 61 64 64 72 65 73 73 20    ss. The address 
00C210:  6C 69 6E 65 73 20 68 6F 6C 64 20 74 68 65 20 70    lines hold the p
00C220:  6F 72 74 20 61 64 64 72 65 73 73 2C 20 61 6E 64    ort address, and
00C230:  20 74 68 65 0D 09 09 64 61 74 61 20 6C 69 6E 65     the...data line
00C240:  73 20 68 6F 6C 64 20 74 68 65 20 62 79 74 65 20    s hold the byte 
00C250:  6F 66 20 64 61 74 61 2E 0D 5F 5F 0D 52 64 09 2D    of data..__.Rd.-
00C260:  09 69 6E 64 69 63 61 74 65 73 20 74 68 65 20 43    .indicates the C
00C270:  50 55 20 69 73 20 72 65 61 64 69 6E 67 20 64 61    PU is reading da
00C280:  74 61 0D 5F 5F 0D 57 72 09 2D 09 69 6E 64 69 63    ta.__.Wr.-.indic
00C290:  61 74 65 73 20 74 68 65 20 43 50 55 20 69 73 20    ates the CPU is 
00C2A0:  77 72 69 74 69 6E 67 20 64 61 74 61 0D 5F 5F 5F    writing data.___
00C2B0:  5F 5F 0D 52 65 73 65 74 09 2D 09 77 68 65 6E 20    __.Reset.-.when 
00C2C0:  74 68 69 73 20 73 69 67 6E 61 6C 20 69 73 20 6C    this signal is l
00C2D0:  6F 77 2C 20 74 68 65 20 43 50 55 20 72 65 73 65    ow, the CPU rese
00C2E0:  74 73 2C 20 74 68 65 20 70 72 6F 67 72 61 6D 20    ts, the program 
00C2F0:  63 6F 75 6E 74 65 72 0D 09 09 62 65 63 6F 6D 65    counter...become
00C300:  73 20 7A 65 72 6F 2C 20 61 6E 64 20 74 68 65 20    s zero, and the 
00C310:  70 72 6F 67 72 61 6D 20 69 73 20 73 74 61 72 74    program is start
00C320:  65 64 20 65 78 65 63 75 74 69 6E 67 2E 0D 5F 5F    ed executing..__
00C330:  5F 0D 49 72 71 09 2D 09 57 68 65 6E 20 6C 6F 77    _.Irq.-.When low
00C340:  2C 20 74 68 65 20 43 50 55 20 69 73 20 69 6E 74    , the CPU is int
00C350:  65 72 72 75 70 74 65 64 2E 0D 0D 0D 53 6F 75 6E    errupted....Soun
00C360:  64 09 2D 09 6D 6F 6E 6F 20 6F 75 74 70 75 74 20    d.-.mono output 
00C370:  6F 66 20 61 6C 6C 20 33 20 63 68 61 6E 6E 65 6C    of all 3 channel
00C380:  73 20 6D 69 78 65 64 20 74 6F 67 65 74 68 65 72    s mixed together
00C390:  0D 0D 47 6E 64 09 2D 09 30 56 20 73 75 70 70 6C    ..Gnd.-.0V suppl
00C3A0:  79 0D 0D 2B 35 76 09 2D 09 35 76 20 53 75 70 70    y..+5v.-.5v Supp
00C3B0:  6C 79 0D 0D 30 09 2D 09 34 4D 68 7A 20 43 6C 6F    ly..0.-.4Mhz Clo
00C3C0:  63 6B 20 28 66 6F 72 20 64 72 69 76 69 6E 67 20    ck (for driving 
00C3D0:  74 68 65 20 43 50 55 29 0D 0D 0D 0D 0D 3D 3D 3D    the CPU).....===
00C3E0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00C3F0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00C400:  6F 66 20 63 6F 6C 6F 75 72 20 61 72 65 20 75 73    of colour are us
00C410:  65 64 2E 20 28 4F 6E 2C 20 68 61 6C 66 2D 6F 6E    ed. (On, half-on
00C420:  2C 20 6F 66 66 29 0D 20 20 20 41 6C 6C 20 63 6F    , off).   All co
00C430:  6D 62 69 6E 61 74 61 74 69 6F 6E 73 20 6F 66 20    mbinatations of 
00C440:  74 68 65 73 65 20 77 69 6C 6C 20 67 69 76 65 20    these will give 
00C450:  32 37 20 63 6F 6C 6F 75 72 73 2E 0D 0D 46 6F 72    27 colours...For
00C460:  20 67 72 65 65 6E 20 73 63 72 65 65 6E 20 6D 6F     green screen mo
00C470:  6E 69 74 6F 72 73 3A 0D 0D 31 29 20 4F 6E 6C 79    nitors:..1) Only
00C480:  20 6C 75 6D 69 6E 61 6E 63 65 20 61 6E 64 20 47     luminance and G
00C490:  6E 64 20 73 69 67 6E 61 6C 73 20 61 72 65 20 75    nd signals are u
00C4A0:  73 65 64 2E 0D 0D 32 29 20 4C 75 6D 69 6E 61 6E    sed...2) Luminan
00C4B0:  63 65 20 69 73 20 61 20 61 6E 61 6C 6F 67 75 65    ce is a analogue
00C4C0:  20 73 69 67 6E 61 6C 2E 0D 20 20 20 54 68 65 72     signal..   Ther
00C4D0:  65 20 61 72 65 20 32 37 20 6C 65 76 65 6C 73 20    e are 27 levels 
00C4E0:  6F 66 20 67 72 65 65 6E 20 72 61 6E 67 69 6E 67    of green ranging
00C4F0:  20 66 72 6F 6D 20 6E 6F 6E 65 2C 20 74 6F 20 66     from none, to f
00C500:  75 6C 6C 20 67 72 65 65 6E 2E 0D 0D 0D 3D 3D 3D    ull green....===
00C510:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00C520:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00C530:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00C540:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00C550:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 0D    =============...
00C560:  54 61 70 65 20 53 6F 63 6B 65 74 0D 3D 3D 3D 3D    Tape Socket.====
00C570:  3D 3D 3D 3D 3D 3D 3D 0D 0D 0D 09 09 73 65 65 6E    =======.....seen
00C580:  20 66 72 6F 6D 20 72 65 61 72 0D 09 09 20 20 20     from rear...   
00C590:  20 20 0D 09 09 20 20 20 20 5F 5F 5F 20 20 20 5F      ...    ___   _
00C5A0:  5F 5F 0D 20 20 20 20 20 20 20 20 20 20 20 20 20    __.             
00C5B0:  20 20 20 20 20 20 2F 20 20 20 7C 5F 7C 20 20 20          /   |_|   
00C5C0:  5C 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20    \.              
00C5D0:  20 20 20 20 2F 20 33 20 20 20 20 20 20 20 31 20        / 3       1 
00C5E0:  5C 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20    \.              
00C5F0:  20 20 20 7C 20 2A 20 20 20 20 20 20 20 20 20 2A       | *         *
00C600:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00C610:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00C620:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 0D 44    ============...D
00C630:  69 73 63 20 44 72 69 76 65 20 32 20 53 6F 63 6B    isc Drive 2 Sock
00C640:  65 74 20 28 43 50 43 36 36 34 2F 36 31 32 38 29    et (CPC664/6128)
00C650:  0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    .===============
00C660:  3D 3D 3D 3D 0D 0D 0D 09 09 09 73 65 65 6E 20 66    ====......seen f
00C670:  72 6F 6D 20 72 65 61 72 0D 0D 0D 20 32 20 20 34    rom rear... 2  4
00C680:  20 20 36 20 20 38 20 31 30 20 31 32 20 31 34 20      6  8 10 12 14 
00C690:  31 36 20 31 38 20 32 30 20 32 32 20 32 34 20 32    16 18 20 22 24 2
00C6A0:  36 20 32 38 20 33 30 20 33 32 20 33 34 0D 20 2D    6 28 30 32 34. -
00C6B0:  20 20 2D 7C 7C 2D 20 20 2D 20 20 2D 20 20 2D 20      -||-  -  -  - 
00C6C0:  20 2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D 20 20     -  -  -  -  -  
00C6D0:  2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D    -  -  -  -  -  -
00C6E0:  0D 20 2D 20 20 2D 7C 7C 2D 20 20 2D 20 20 2D 20    . -  -||-  -  - 
00C6F0:  20 2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D 20 20     -  -  -  -  -  
00C700:  2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D    -  -  -  -  -  -
00C710:  20 20 2D 0D 20 31 20 20 33 20 20 35 20 20 37 20      -. 1  3  5  7 
00C720:  20 39 20 31 31 20 31 33 20 31 35 20 31 37 20 31     9 11 13 15 17 1
00C730:  39 20 32 31 20 32 33 20 32 35 20 32 37 20 32 39    9 21 23 25 27 29
00C740:  20 33 31 20 33 33 0D 0D 20 20 20 20 20 20 20 20     31 33..        
00C750:  5F 5F 5F 5F 5F 0D 31 09 52 65 61 64 79 0D 0D 32    _____.1.Ready..2
00C760:  09 47 6E 64 0D 09 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    .Gnd..__________
00C770:  5F 5F 5F 0D 33 09 53 69 64 65 20 31 20 73 65 6C    ___.3.Side 1 sel
00C780:  65 63 74 0D 0D 34 09 47 6E 64 0D 09 5F 5F 5F 5F    ect..4.Gnd..____
00C790:  5F 5F 5F 5F 5F 0D 35 09 52 65 61 64 20 64 61 74    _____.5.Read dat
00C7A0:  61 0D 0D 36 09 47 6E 64 0D 09 5F 5F 5F 5F 5F 5F    a..6.Gnd..______
00C7B0:  5F 5F 5F 5F 5F 5F 5F 0D 37 09 57 72 69 74 65 20    _______.7.Write 
00C7C0:  50 72 6F 74 65 63 74 0D 0D 38 09 47 6E 64 0D 09    Protect..8.Gnd..
00C7D0:  5F 5F 5F 5F 5F 5F 5F 0D 39 09 54 72 61 63 6B 20    _______.9.Track 
00C7E0:  30 0D 0D 31 30 09 47 6E 64 0D 09 5F 5F 5F 5F 5F    0..10.Gnd.._____
00C7F0:  5F 5F 5F 5F 5F 0D 31 31 09 57 72 69 74 65 20 47    _____.11.Write G
00C800:  20 7C 0D 20 20 20 20 20 20 20 20 20 20 20 20 20     |.             
00C810:  20 20 20 20 7C 20 20 20 20 20 20 20 20 20 20 20        |           
00C820:  20 20 7C 0D 20 20 20 20 20 20 20 20 20 20 20 20      |.            
00C830:  20 20 20 20 20 7C 20 20 2A 20 20 20 20 20 20 20         |  *       
00C840:  2A 20 20 7C 0D 20 20 20 20 20 20 20 20 20 20 20    *  |.           
00C850:  20 20 20 20 20 20 20 5C 20 35 20 20 20 2A 32 20           \ 5   *2 
00C860:  20 34 20 2F 0D 09 09 20 20 20 5C 5F 5F 5F 5F 5F     4 /...   \_____
00C870:  5F 5F 5F 5F 2F 0D 0D 0D 31 09 52 65 6D 6F 74 65    ____/...1.Remote
00C880:  20 53 77 69 74 63 68 20 28 54 61 70 65 20 6D 6F     Switch (Tape mo
00C890:  74 6F 72 20 6F 6E 2F 6F 66 66 20 73 77 69 74 63    tor on/off switc
00C8A0:  68 29 0D 0D 32 09 47 6E 64 0D 0D 33 09 52 65 6D    h)..2.Gnd..3.Rem
00C8B0:  6F 74 65 20 53 77 69 74 63 68 20 28 54 61 70 65    ote Switch (Tape
00C8C0:  20 6D 6F 74 6F 72 20 6F 6E 2F 6F 66 66 20 73 77     motor on/off sw
00C8D0:  69 74 63 68 29 0D 0D 34 09 44 61 74 61 20 69 6E    itch)..4.Data in
00C8E0:  20 28 64 61 74 61 20 72 65 61 64 29 0D 0D 35 09     (data read)..5.
00C8F0:  44 61 74 61 20 6F 75 74 20 28 64 61 74 61 20 77    Data out (data w
00C900:  72 69 74 74 65 6E 29 0D 0D 3D 3D 3D 3D 3D 3D 3D    ritten)..=======
00C910:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00C920:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00C930:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00C940:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00C950:  3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 0D 45 78 70 61    =========...Expa
00C960:  6E 73 69 6F 6E 20 53 6F 63 6B 65 74 0D 3D 3D 3D    nsion Socket.===
00C970:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 0D    =============...
00C980:  09 09 09 73 65 65 6E 20 66 72 6F 6D 20 72 65 61    ...seen from rea
00C990:  72 0D 0D 0D 34 39 20 34 37 20 34 35 20 34 33 20    r...49 47 45 43 
00C9A0:  34 31 20 33 39 20 33 37 20 33 35 20 33 33 20 33    41 39 37 35 33 3
00C9B0:  31 20 32 39 20 32 37 20 32 35 20 32 33 20 32 31    1 29 27 25 23 21
00C9C0:  20 31 39 20 31 37 20 31 35 20 31 33 20 31 31 20     19 17 15 13 11 
00C9D0:  20 39 20 20 37 20 20 35 20 20 33 20 20 31 0D 20     9  7  5  3  1. 
00C9E0:  2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D    -  -  -  -  -  -
00C9F0:  20 20 2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D 20      -  -  -  -  - 
00CA00:  61 74 65 0D 0D 31 32 09 47 6E 64 0D 09 5F 5F 5F    ate..12.Gnd..___
00CA10:  5F 5F 5F 5F 5F 5F 5F 0D 31 33 09 57 72 69 74 65    _______.13.Write
00CA20:  20 44 61 74 61 0D 0D 31 34 09 47 6E 64 0D 09 5F     Data..14.Gnd.._
00CA30:  5F 5F 5F 0D 31 35 09 53 74 65 70 0D 0D 31 36 09    ___.15.Step..16.
00CA40:  47 6E 64 0D 09 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F    Gnd..___________
00CA50:  5F 5F 5F 5F 5F 0D 31 37 09 44 69 72 65 63 74 69    _____.17.Directi
00CA60:  6F 6E 20 53 65 6C 65 63 74 0D 0D 31 38 09 47 6E    on Select..18.Gn
00CA70:  64 0D 09 5F 5F 5F 5F 5F 5F 5F 5F 0D 31 39 09 4D    d..________.19.M
00CA80:  6F 74 6F 72 20 4F 6E 0D 0D 32 30 09 47 6E 64 0D    otor On..20.Gnd.
00CA90:  0D 32 31 09 4E 43 0D 0D 32 32 09 47 6E 64 0D 09    .21.NC..22.Gnd..
00CAA0:  5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 32    ______________.2
00CAB0:  33 09 44 72 69 76 65 20 53 65 6C 65 63 74 20 31    3.Drive Select 1
00CAC0:  0D 0D 32 34 09 47 6E 64 0D 0D 32 35 09 4E 43 0D    ..24.Gnd..25.NC.
00CAD0:  0D 32 36 09 47 6E 64 0D 09 5F 5F 5F 5F 5F 0D 32    .26.Gnd.._____.2
00CAE0:  37 09 49 6E 64 65 78 0D 0D 32 38 09 47 6E 64 0D    7.Index..28.Gnd.
00CAF0:  0D 32 39 09 4E 43 0D 0D 33 30 09 47 6E 64 0D 0D    .29.NC..30.Gnd..
00CB00:  33 31 09 4E 43 0D 0D 33 32 09 47 6E 64 0D 0D 33    31.NC..32.Gnd..3
00CB10:  33 09 4E 43 0D 0D 33 34 09 47 6E 64 0D 0D 1A 20    3.NC..34.Gnd... 
00CB20:  6C 6F 77 2C 0D 6F 1A 70 65 6E 20 61 73 20 65 78    low,.o.pen as ex
00CB30:  70 65 63 74 65 64 0D 26 30 46 09 48 61 72 64 20    pected.&0F.Hard 
00CB40:  65 6E 64 20 6F 66 20 66 69 6C 65 0D 0D 1A 6E 63    end of file...nc
00CB50:  74 69 6F 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    tio.............
00CB60:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00CB70:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00CB80:  65 63 74 0D 0D 34 09 47 6E 64 0D 09 5F 5F 5F 5F    ect..4.Gnd..____
00CB90:  5F 5F 5F 5F 5F 0D 35 09 52 65 61 64 20 64 61 74    _____.5.Read dat
00CBA0:  61 0D 0D 36 09 47 6E 64 0D 09 5F 5F 5F 5F 5F 5F    a..6.Gnd..______
00CBB0:  5F 5F 5F 5F 5F 5F 5F 0D 37 09 57 72 69 74 65 20    _______.7.Write 
00CBC0:  50 72 6F 74 65 63 74 0D 0D 38 09 47 6E 64 0D 09    Protect..8.Gnd..
00CBD0:  5F 5F 5F 5F 5F 5F 5F 0D 39 09 54 72 61 63 6B 20    _______.9.Track 
00CBE0:  30 0D 0D 31 30 09 47 6E 64 0D 09 5F 5F 5F 5F 5F    0..10.Gnd.._____
00CBF0:  5F 5F 5F 5F 5F 0D 31 31 09 57 72 69 74 65 20 47    _____.11.Write G
00CC00:  20 2D 20 20 2D 20 20 2D 7C 7C 2D 20 20 2D 20 20     -  -  -||-  -  
00CC10:  2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D    -  -  -  -  -  -
00CC20:  20 20 2D 20 20 2D 20 20 2D 0D 20 2D 20 20 2D 20      -  -  -. -  - 
00CC30:  20 2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D 20 20     -  -  -  -  -  
00CC40:  2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D    -  -  -  -  -  -
00CC50:  20 20 2D 7C 7C 2D 20 20 2D 20 20 2D 20 20 2D 20      -||-  -  -  - 
00CC60:  20 2D 20 20 2D 20 20 2D 20 20 2D 20 20 2D 20 20     -  -  -  -  -  
00CC70:  2D 20 20 2D 0D 35 30 20 34 38 20 34 36 20 34 34    -  -.50 48 46 44
00CC80:  20 34 32 20 34 30 20 33 38 20 33 36 20 33 34 20     42 40 38 36 34 
00CC90:  33 32 20 33 30 20 32 38 20 32 36 20 32 34 20 32    32 30 28 26 24 2
00CCA0:  32 20 32 30 20 31 38 20 31 36 20 31 34 20 31 32    2 20 18 16 14 12
00CCB0:  20 31 30 20 20 38 20 20 36 20 20 34 20 20 32 0D     10  8  6  4  2.
00CCC0:  0D 41 78 78 20 2D 20 41 64 64 72 65 73 73 20 6C    .Axx - Address l
00CCD0:  69 6E 65 73 0D 44 78 20 20 2D 20 44 61 74 61 20    ines.Dx  - Data 
00CCE0:  6C 69 6E 65 73 0D 0D 0D 0D 31 09 53 6F 75 6E 64    lines....1.Sound
00CCF0:  20 0D 0D 32 09 47 6E 64 0D 0D 33 09 41 31 35 0D     ..2.Gnd..3.A15.
00CD00:  0D 34 09 41 31 34 0D 0D 35 09 41 31 33 0D 0D 36    .4.A14..5.A13..6
00CD10:  09 41 31 32 0D 0D 37 09 41 31 31 0D 0D 38 09 41    .A12..7.A11..8.A
00CD20:  31 30 0D 0D 39 09 41 39 0D 0D 31 30 09 41 38 0D    10..9.A9..10.A8.
00CD30:  0D 31 31 09 41 37 0D 0D 31 32 09 41 36 0D 0D 31    .11.A7..12.A6..1
00CD40:  33 09 41 35 0D 0D 31 34 09 41 34 0D 0D 31 35 09    3.A5..14.A4..15.
00CD50:  41 33 0D 0D 31 36 09 41 32 0D 0D 31 37 09 41 31    A3..16.A2..17.A1
00CD60:  0D 0D 31 38 09 41 30 0D 0D 31 39 09 44 37 0D 0D    ..18.A0..19.D7..
00CD70:  32 30 09 44 36 0D 0D 32 31 09 44 35 0D 0D 32 32    20.D6..21.D5..22
00CD80:  09 44 34 0D 0D 32 33 09 44 33 0D 0D 32 34 09 44    .D4..23.D3..24.D
00CD90:  32 0D 0D 32 35 09 44 31 0D 0D 32 36 09 44 30 0D    2..25.D1..26.D0.
00CDA0:  0D 32 37 09 2B 35 76 0D 20 20 20 20 20 20 20 20    .27.+5v.        
00CDB0:  5F 5F 5F 5F 0D 32 38 09 4D 72 65 71 0D 20 20 20    ____.28.Mreq.   
00CDC0:  20 20 20 20 20 5F 5F 0D 32 39 09 4D 31 0D 20 20         __.29.M1.  
00CDD0:  20 20 20 20 20 20 5F 5F 5F 5F 0D 33 30 09 52 66          ____.30.Rf
00CDE0:  73 68 0D 20 20 20 20 20 20 20 20 5F 5F 5F 5F 0D    sh.        ____.
00CDF0:  33 31 09 49 6F 72 71 0D 20 20 20 20 20 20 20 20    31.Iorq.        
00CE00:  0D 0D 43 6F 6E 74 72 6F 6C 20 09 4E 61 6D 65 09    ..Control .Name.
00CE10:  09 50 61 72 61 6D 65 74 65 72 73 09 09 09 09 46    .Parameters....F
00CE20:  75 6E 63 74 69 6F 6E 0D 63 68 61 72 61 63 74 65    unction.characte
00CE30:  72 0D 63 6F 64 65 0D 28 41 53 43 49 49 20 76 61    r.code.(ASCII va
00CE40:  6C 75 65 29 0D 0D 26 30 30 09 09 4E 55 4C 09 09    lue)..&00..NUL..
00CE50:  4E 6F 6E 65 2E 09 09 09 09 4E 6F 74 68 69 6E 67    None.....Nothing
00CE60:  2E 0D 0D 26 30 31 09 09 53 4F 48 09 09 73 79 6D    ...&01..SOH..sym
00CE70:  62 6F 6C 20 28 30 2E 2E 32 35 35 29 09 09 09 64    bol (0..255)...d
00CE80:  69 73 70 6C 61 79 20 73 79 6D 62 6F 6C 0D 0D 26    isplay symbol..&
00CE90:  30 32 09 09 53 54 58 09 09 4E 6F 6E 65 2E 09 09    02..STX..None...
00CEA0:  09 09 54 75 72 6E 20 6F 66 66 20 74 65 78 74 0D    ..Turn off text.
00CEB0:  09 09 09 09 09 09 09 09 63 75 72 73 6F 72 0D 0D    ........cursor..
00CEC0:  26 30 33 09 09 45 54 58 09 09 4E 6F 6E 65 2E 09    &03..ETX..None..
00CED0:  09 09 09 54 75 72 6E 20 6F 6E 20 74 65 78 74 0D    ...Turn on text.
00CEE0:  09 09 09 09 09 09 09 09 63 75 72 73 6F 72 0D 0D    ........cursor..
00CEF0:  26 30 34 09 09 45 4F 54 09 09 73 63 72 65 65 6E    &04..EOT..screen
00CF00:  5F 6D 6F 64 65 20 28 30 2E 2E 32 29 09 09 53 65    _mode (0..2)..Se
00CF10:  74 20 73 63 72 65 65 6E 20 6D 6F 64 65 0D 0D 26    t screen mode..&
00CF20:  30 35 09 09 45 4E 51 09 09 63 68 61 72 61 63 74    05..ENQ..charact
00CF30:  65 72 20 28 30 2E 2E 32 35 35 29 09 09 64 69 73    er (0..255)..dis
00CF40:  70 6C 61 79 20 63 68 61 72 0D 09 09 09 09 09 09    play char.......
00CF50:  09 09 61 74 20 67 72 61 70 68 69 63 73 20 0D 09    ..at graphics ..
00CF60:  09 09 09 09 09 09 09 63 75 72 73 6F 72 20 70 6F    .......cursor po
00CF70:  73 69 74 69 6F 6E 0D 0D 0D 26 30 36 20 09 09 41    sition...&06 ..A
00CF80:  43 4B 09 09 4E 6F 6E 65 2E 09 09 09 09 45 6E 61    CK..None.....Ena
00CF90:  62 6C 65 20 70 72 69 6E 74 69 6E 67 0D 09 09 09    ble printing....
00CFA0:  09 09 09 09 09 6F 66 20 74 65 78 74 20 63 68 61    .....of text cha
00CFB0:  72 73 0D 09 09 09 09 09 09 09 09 61 6E 64 20 69    rs.........and i
00CFC0:  6E 74 65 72 70 72 65 74 61 0D 09 09 09 09 09 09    nterpreta.......
00CFD0:  09 09 2D 74 69 6F 6E 20 6F 66 20 63 6F 6E 74 72    ..-tion of contr
00CFE0:  6F 6C 0D 09 09 09 09 09 09 09 09 63 68 61 72 73    ol.........chars
00CFF0:  2E 0D 0D 26 30 37 20 2A 09 09 42 45 4C 09 09 4E    ...&07 *..BEL..N
00D000:  5F 5F 0D 33 32 09 52 64 0D 20 20 20 20 20 20 20    __.32.Rd.       
00D010:  20 5F 5F 0D 33 33 09 57 72 0D 20 20 20 20 20 20     __.33.Wr.      
00D020:  20 20 5F 5F 5F 5F 20 20 20 20 0D 33 34 09 48 61      ____    .34.Ha
00D030:  6C 74 0D 20 20 20 20 20 20 20 20 5F 5F 5F 0D 33    lt.        ___.3
00D040:  35 09 49 6E 74 0D 20 20 20 20 20 20 20 20 5F 5F    5.Int.        __
00D050:  5F 0D 33 36 09 4E 6D 69 0D 20 20 20 20 20 20 20    _.36.Nmi.       
00D060:  20 5F 5F 5F 5F 0D 33 37 09 42 75 73 72 32 0D 20     ____.37.Busr2. 
00D070:  20 20 20 20 20 20 20 5F 5F 5F 5F 5F 0D 33 38 09           _____.38.
00D080:  42 75 73 61 6B 0D 0D 33 39 09 52 65 61 64 79 0D    Busak..39.Ready.
00D090:  09 5F 5F 5F 5F 5F 5F 5F 5F 5F 0D 34 30 09 42 75    ._________.40.Bu
00D0A0:  73 20 72 65 73 65 74 0D 20 20 20 20 20 20 20 20    s reset.        
00D0B0:  5F 5F 5F 5F 5F 0D 34 31 09 52 65 73 65 74 0D 09    _____.41.Reset..
00D0C0:  5F 5F 5F 5F 5F 0D 34 32 09 52 6F 6D 65 6E 0D 0D    _____.42.Romen..
00D0D0:  34 33 09 52 6F 6D 64 69 73 0D 20 20 20 20 20 20    43.Romdis.      
00D0E0:  20 20 5F 5F 5F 5F 5F 0D 34 34 09 52 61 6D 72 64      _____.44.Ramrd
00D0F0:  0D 0D 34 35 09 52 61 6D 64 69 73 0D 0D 34 36 09    ..45.Ramdis..46.
00D100:  43 75 72 73 6F 72 0D 0D 34 37 09 4C 2E 70 65 6E    Cursor..47.L.pen
00D110:  0D 20 20 20 20 20 20 20 20 5F 5F 5F 0D 34 38 09    .        ___.48.
00D120:  45 78 70 0D 0D 34 39 09 47 6E 64 0D 0D 35 30 09    Exp..49.Gnd..50.
00D130:  30 0D 0D 0D 50 69 6E 20 64 65 73 63 72 69 70 74    0...Pin descript
00D140:  69 6F 6E 73 3A 0D 0D 0D 41 31 35 2E 2E 41 30 09    ions:...A15..A0.
00D150:  2D 09 41 64 64 72 65 73 73 20 6C 69 6E 65 73 20    -.Address lines 
00D160:  28 68 6F 6C 64 73 20 6D 65 6D 6F 72 79 20 61 64    (holds memory ad
00D170:  64 72 65 73 73 29 0D 0D 0D 44 37 2E 2E 44 30 09    dress)...D7..D0.
00D180:  2D 09 44 61 74 61 20 6C 69 6E 65 73 20 28 68 6F    -.Data lines (ho
00D190:  6C 64 73 20 64 61 74 61 20 62 65 69 6E 67 20 70    lds data being p
00D1A0:  6F 6B 65 64 20 6F 72 20 70 65 65 6B 65 64 29 0D    oked or peeked).
00D1B0:  0D 0D 5F 5F 5F 5F 0D 49 6F 72 71 09 2D 09 77 68    ..____.Iorq.-.wh
00D1C0:  65 6E 20 6C 6F 77 2C 20 69 6E 64 69 63 61 74 65    en low, indicate
00D1D0:  73 20 43 50 55 20 69 73 20 77 72 69 74 69 6E 67    s CPU is writing
00D1E0:  20 74 6F 20 6F 72 20 72 65 61 64 69 6E 67 20 74     to or reading t
00D1F0:  6F 20 61 20 70 6F 72 74 0D 09 09 61 64 64 72 65    o a port...addre
00D200:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00D210:  0B 00 01 00 02 09 4E E5 0B 00 C1 02 00 00 00 02    ......N.........
00D220:  0B 00 C6 02 00 00 00 02 0B 00 C2 02 00 00 00 02    ................
00D230:  0B 00 C7 02 00 00 00 02 0B 00 C3 02 00 00 00 02    ................
00D240:  0B 00 C8 02 00 00 00 02 0B 00 C4 02 00 00 00 02    ................
00D250:  0B 00 C9 02 00 00 00 02 0B 00 C5 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:  6F 6E 65 2E 09 09 09 09 4D 61 6B 65 20 61 20 62    one.....Make a b
00D310:  65 65 70 2E 0D 0D 26 30 38 20 2A 09 09 42 53 09    eep...&08 *..BS.
00D320:  09 4E 6F 6E 65 2E 09 09 09 09 4D 6F 76 65 20 63    .None.....Move c
00D330:  75 72 73 6F 72 0D 20 20 20 20 20 20 20 20 28 62    ursor.        (b
00D340:  61 63 6B 73 70 61 63 65 29 09 09 09 09 09 09 6C    ackspace)......l
00D350:  65 66 74 20 61 20 63 68 61 72 0D 09 0D 0D 26 30    eft a char....&0
00D360:  39 20 2A 09 09 54 41 42 09 09 4E 6F 6E 65 2E 09    9 *..TAB..None..
00D370:  09 09 09 4D 6F 76 65 20 63 75 72 73 6F 72 0D 09    ...Move cursor..
00D380:  09 09 09 09 09 09 09 72 69 67 68 74 20 61 20 63    .......right a c
00D390:  68 61 72 2E 0D 0D 26 30 41 20 2A 09 09 4C 46 09    har...&0A *..LF.
00D3A0:  09 4E 6F 6E 65 2E 09 09 09 09 4D 6F 76 65 20 63    .None.....Move c
00D3B0:  75 72 73 6F 72 0D 09 09 09 09 09 09 09 09 64 6F    ursor.........do
00D3C0:  77 6E 20 61 20 6C 69 6E 65 2E 0D 09 20 20 20 28    wn a line...   (
00D3D0:  6C 69 6E 65 20 66 65 65 64 29 0D 0D 26 30 42 20    line feed)..&0B 
00D3E0:  2A 09 09 56 54 09 09 4E 6F 6E 65 2E 09 09 09 09    *..VT..None.....
00D3F0:  4D 6F 76 65 20 63 75 72 73 6F 72 0D 09 09 09 09    Move cursor.....
00D400:  09 09 09 09 75 70 20 61 20 6C 69 6E 65 2E 0D 0D    ....up a line...
00D410:  26 30 43 20 2A 09 09 46 46 09 09 4E 6F 6E 65 2E    &0C *..FF..None.
00D420:  09 09 09 09 43 6C 65 61 72 20 74 65 78 74 0D 09    ....Clear text..
00D430:  20 20 20 28 66 6F 72 6D 20 66 65 65 64 29 09 09       (form feed)..
00D440:  09 09 09 09 77 69 6E 64 6F 77 20 61 6E 64 20 6D    ....window and m
00D450:  6F 76 65 0D 09 09 09 09 09 09 09 09 63 75 72 73    ove.........curs
00D460:  6F 72 20 74 6F 20 74 6F 70 0D 09 09 09 09 09 09    or to top.......
00D470:  09 09 6C 65 66 74 0D 0D 26 30 44 20 2A 09 09 43    ..left..&0D *..C
00D480:  52 09 09 4E 6F 6E 65 2E 09 09 09 09 4D 6F 76 65    R..None.....Move
00D490:  20 63 75 72 73 6F 72 20 74 6F 0D 09 20 20 28 63     cursor to..  (c
00D4A0:  61 72 72 69 61 67 65 20 72 65 74 75 72 6E 29 09    arriage return).
00D4B0:  09 09 09 09 6C 65 66 74 20 65 64 67 65 20 6F 66    ....left edge of
00D4C0:  20 0D 09 09 09 09 09 09 09 09 77 69 6E 64 6F 77     .........window
00D4D0:  2E 0D 0D 26 30 45 09 09 53 4F 09 09 50 61 70 65    ...&0E..SO..Pape
00D4E0:  72 5F 6E 75 6D 62 65 72 20 28 30 2E 2E 31 35 29    r_number (0..15)
00D4F0:  09 09 53 65 74 20 70 61 70 65 72 20 74 6F 20 75    ..Set paper to u
00D500:  09 09 20 74 68 65 20 74 77 6F 20 76 61 6C 75 65    .. the two value
00D510:  73 0D 09 09 09 09 09 09 09 09 20 61 72 65 20 64    s......... are d
00D520:  69 66 66 65 72 65 6E 74 0D 09 09 09 09 09 09 09    ifferent........
00D530:  09 20 74 68 65 20 62 6F 72 64 65 72 20 0D 09 09    . the border ...
00D540:  09 09 09 09 09 09 20 63 6F 6C 6F 75 72 20 77 69    ...... colour wi
00D550:  6C 6C 0D 09 09 09 09 09 09 09 09 20 66 6C 61 73    ll......... flas
00D560:  68 20 62 65 74 77 65 65 6E 0D 09 09 09 09 09 09    h between.......
00D570:  09 09 20 74 68 65 20 74 77 6F 2E 0D 0D 09 09 09    .. the two......
00D580:  09 09 09 09 09 20 0D 0D 0D 0D 26 31 45 09 09 52    ..... ....&1E..R
00D590:  53 09 09 4E 6F 6E 65 2E 09 09 09 09 20 4D 6F 76    S..None..... Mov
00D5A0:  65 20 63 75 72 73 6F 72 20 74 6F 0D 09 09 09 09    e cursor to.....
00D5B0:  09 09 09 09 20 74 6F 70 20 6C 65 66 74 20 28 31    .... top left (1
00D5C0:  2C 31 29 0D 09 09 09 09 09 09 09 09 20 70 6F 73    ,1)......... pos
00D5D0:  69 74 69 6F 6E 20 69 6E 0D 09 09 09 09 09 09 09    ition in........
00D5E0:  09 20 63 75 72 72 65 6E 74 20 74 65 78 74 0D 09    . current text..
00D5F0:  09 09 09 09 09 09 09 20 77 69 6E 64 6F 77 2E 0D    ....... window..
00D600:  0D 26 31 46 09 09 55 53 09 09 78 5F 74 65 78 74    .&1F..US..x_text
00D610:  5F 63 6F 6F 72 64 69 6E 61 74 65 20 28 31 2E 2E    _coordinate (1..
00D620:  38 30 29 2C 20 20 20 20 20 20 20 4D 6F 76 65 20    80),       Move 
00D630:  63 75 72 73 6F 72 20 74 6F 0D 09 09 09 09 79 5F    cursor to.....y_
00D640:  74 65 78 74 5F 63 6F 6F 72 64 69 6E 61 74 65 20    text_coordinate 
00D650:  28 31 2E 2E 32 35 29 09 20 28 78 2C 79 29 20 70    (1..25). (x,y) p
00D660:  6F 73 69 74 69 6F 6E 0D 09 09 09 09 09 09 09 09    osition.........
00D670:  20 77 69 74 68 69 6E 20 74 68 65 0D 09 09 09 09     within the.....
00D680:  09 09 09 09 20 63 75 72 72 65 6E 74 6C 79 20 0D    .... currently .
00D690:  09 09 09 09 09 09 09 09 20 73 65 6C 65 63 74 65    ........ selecte
00D6A0:  64 20 74 65 78 74 0D 09 09 09 09 09 09 09 09 20    d text......... 
00D6B0:  77 69 6E 64 6F 77 2E 1A FF 00 00 00 00 FF FF FF    window..........
00D6C0:  FF 00 00 00 00 FF FF FF FF 00 00 00 00 FF FF FF    ................
00D6D0:  FF 00 00 00 00 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00D6E0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00D6F0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
00D700:  73 65 0D 0D 26 30 46 20 09 09 53 49 09 09 49 6E    se..&0F ..SI..In
00D710:  6B 5F 6E 75 6D 62 65 72 20 28 30 2E 2E 31 35 29    k_number (0..15)
00D720:  09 09 53 65 74 20 70 65 6E 20 74 6F 20 75 73 65    ..Set pen to use
00D730:  0D 0D 0D 26 31 30 20 2A 09 09 44 4C 45 09 09 4E    ...&10 *..DLE..N
00D740:  6F 6E 65 2E 09 09 09 09 44 65 6C 65 74 65 20 63    one.....Delete c
00D750:  75 72 72 65 6E 74 0D 09 09 09 09 09 09 09 09 63    urrent.........c
00D760:  68 61 72 61 63 74 65 72 2E 0D 0D 26 31 31 20 2A    haracter...&11 *
00D770:  09 09 44 43 31 09 09 4E 6F 6E 65 2E 09 09 09 09    ..DC1..None.....
00D780:  43 6C 65 61 72 20 66 72 6F 6D 20 6C 65 66 74 0D    Clear from left.
00D790:  09 09 09 09 09 09 09 09 65 64 67 65 20 74 6F 20    ........edge to 
00D7A0:  63 68 61 72 0D 09 09 09 09 09 09 09 09 70 6F 73    char.........pos
00D7B0:  69 74 69 6F 6E 2E 0D 0D 26 31 32 20 2A 09 09 44    ition...&12 *..D
00D7C0:  43 32 09 09 4E 6F 6E 65 2E 09 09 09 09 43 6C 65    C2..None.....Cle
00D7D0:  61 72 20 66 72 6F 6D 20 63 68 61 72 0D 09 09 09    ar from char....
00D7E0:  09 09 09 09 09 70 6F 73 69 74 69 6F 6E 20 74 6F    .....position to
00D7F0:  0D 09 09 09 09 09 09 09 09 72 69 67 68 74 20 65    .........right e
00D800:  64 67 65 20 6F 66 0D 09 09 09 09 09 09 09 09 77    dge of.........w
00D810:  69 6E 64 6F 77 2E 0D 0D 26 31 33 20 2A 09 09 44    indow...&13 *..D
00D820:  43 33 09 09 4E 6F 6E 65 2E 09 09 09 09 43 6C 65    C3..None.....Cle
00D830:  61 72 20 77 69 6E 64 6F 77 20 75 70 0D 09 09 09    ar window up....
00D840:  09 09 09 09 09 74 6F 20 63 75 72 72 65 6E 74 20    .....to current 
00D850:  63 68 61 72 0D 09 09 09 09 09 09 09 09 70 6F 73    char.........pos
00D860:  69 74 69 6F 6E 2E 0D 0D 26 31 34 20 2A 09 09 44    ition...&14 *..D
00D870:  43 34 09 09 4E 6F 6E 65 2E 09 09 09 09 43 6C 65    C4..None.....Cle
00D880:  61 72 20 63 75 72 72 65 6E 74 0D 09 09 09 09 09    ar current......
00D890:  09 09 09 77 69 6E 64 6F 77 20 77 69 74 68 0D 09    ...window with..
00D8A0:  09 09 09 09 09 09 09 63 75 72 72 65 6E 74 20 70    .......current p
00D8B0:  61 70 65 72 0D 09 09 09 09 09 09 09 09 63 6F 6C    aper.........col
00D8C0:  6F 75 72 2E 0D 0D 26 31 35 09 09 4E 41 4B 09 09    our...&15..NAK..
00D8D0:  4E 6F 6E 65 2E 09 09 09 09 44 69 73 61 62 6C 65    None.....Disable
00D8E0:  20 70 72 69 6E 74 69 6E 67 0D 09 09 09 09 09 09     printing.......
00D8F0:  09 09 6F 66 20 74 65 78 74 20 61 6E 64 0D 09 09    ..of text and...
00D900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D9A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D9B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D9C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D9D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D9E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00D9F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DA00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DA10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DA20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DA30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DA40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DA50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DA60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DA70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DA80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DA90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DAA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DAB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DAC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DAD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DAE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DAF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
00DB00:  09 09 09 09 09 09 64 69 73 61 62 6C 65 0D 09 09    ......disable...
00DB10:  09 09 09 09 09 09 69 6E 74 65 72 70 72 65 74 69    ......interpreti
00DB20:  6E 67 0D 09 09 09 09 09 09 09 09 6F 74 68 65 72    ng.........other
00DB30:  20 63 6F 6E 74 72 6F 6C 0D 09 09 09 09 09 09 09     control........
00DB40:  09 63 68 61 72 73 2C 20 75 6E 74 69 6C 20 61 6E    .chars, until an
00DB50:  0D 09 09 09 09 09 09 09 09 41 43 4B 20 69 73 20    .........ACK is 
00DB60:  72 65 63 69 65 76 65 64 2E 0D 0D 26 31 36 09 09    recieved...&16..
00DB70:  53 59 4E 09 09 74 72 61 6E 73 70 61 72 65 6E 74    SYN..transparent
00DB80:  20 6F 6E 2F 6F 66 66 20 28 30 2E 2E 31 29 09 50     on/off (0..1).P
00DB90:  61 72 61 6D 65 74 65 72 20 6D 6F 64 20 32 0D 09    arameter mod 2..
00DBA0:  09 09 09 09 09 09 09 28 30 20 64 69 73 61 62 6C    .......(0 disabl
00DBB0:  65 0D 09 09 09 09 09 09 09 09 20 31 20 65 6E 61    e......... 1 ena
00DBC0:  62 6C 65 29 0D 0D 26 31 37 09 09 45 54 42 09 09    ble)..&17..ETB..
00DBD0:  67 72 61 70 68 69 63 73 20 69 6E 6B 20 6D 6F 64    graphics ink mod
00DBE0:  65 20 28 30 2E 2E 33 29 2E 09 20 50 61 72 61 6D    e (0..3).. Param
00DBF0:  65 74 65 72 20 6D 6F 64 20 34 0D 0D 09 09 09 09    eter mod 4......
00DC00:  09 09 09 09 30 20 2D 20 6E 6F 72 6D 61 6C 2F 66    ....0 - normal/f
00DC10:  6F 72 63 65 0D 09 09 09 09 09 09 09 09 31 20 2D    orce.........1 -
00DC20:  20 58 4F 52 0D 09 09 09 09 09 09 09 09 32 20 2D     XOR.........2 -
00DC30:  20 41 4E 44 0D 09 09 09 09 09 09 09 09 33 20 2D     AND.........3 -
00DC40:  20 4F 52 0D 0D 26 31 38 09 09 43 41 4E 09 09 4E     OR..&18..CAN..N
00DC50:  6F 6E 65 2E 09 09 09 09 20 45 78 63 68 61 6E 67    one..... Exchang
00DC60:  65 20 70 65 6E 0D 09 09 09 09 09 09 09 09 20 61    e pen......... a
00DC70:  6E 64 20 70 61 70 65 72 20 69 6E 6B 73 2E 0D 0D    nd paper inks...
00DC80:  0D 26 31 39 09 09 45 4D 09 09 73 79 6D 62 6F 6C    .&19..EM..symbol
00DC90:  5F 76 61 6C 75 65 20 28 30 2E 2E 32 35 35 29 2C    _value (0..255),
00DCA0:  09 09 20 44 65 66 69 6E 65 20 61 20 75 73 65 72    .. Define a user
00DCB0:  0D 09 09 09 09 73 79 6D 62 6F 6C 5F 6C 69 6E 65    .....symbol_line
00DCC0:  5F 31 20 28 30 2E 2E 32 35 35 29 2C 09 20 20 20    _1 (0..255),.   
00DCD0:  20 20 20 20 20 20 64 65 66 69 6E 65 61 62 6C 65          defineable
00DCE0:  0D 09 09 09 09 73 79 6D 62 6F 6C 5F 6C 69 6E 65    .....symbol_line
00DCF0:  5F 32 20 28 30 2E 2E 32 35 35 29 2C 09 09 20 63    _2 (0..255),.. c
00DD00:  1B 40 49 66 20 61 6E 79 6F 6E 65 20 68 61 73 20    .@If anyone has 
00DD10:  61 6E 79 20 6D 6F 72 65 20 69 6E 66 6F 72 6D 61    any more informa
00DD20:  74 69 6F 6E 20 61 62 6F 75 74 20 74 68 65 20 43    tion about the C
00DD30:  52 54 43 20 61 6E 64 20 43 52 54 43 20 64 69 66    RTC and CRTC dif
00DD40:  66 65 72 65 6E 63 65 73 0D 70 6C 65 61 73 65 20    ferences.please 
00DD50:  63 6F 6E 74 61 63 74 20 6D 65 2E 0D 0D 49 20 68    contact me...I h
00DD60:  61 76 65 20 65 78 70 6C 61 69 6E 65 64 20 74 68    ave explained th
00DD70:  6F 73 65 20 72 65 67 69 73 74 65 72 73 20 20 49    ose registers  I
00DD80:  20 20 75 6E 64 65 72 73 74 61 6E 64 20 66 75 6C      understand ful
00DD90:  6C 79 2E 20 54 68 65 20 6F 74 68 65 72 73 20 77    ly. The others w
00DDA0:  69 6C 6C 0D 62 65 20 64 65 73 63 72 69 62 65 64    ill.be described
00DDB0:  20 61 73 20 73 6F 6F 6E 20 61 73 20 20 49 20 20     as soon as  I  
00DDC0:  75 6E 64 65 72 73 74 61 6E 64 20 20 74 68 65 6D    understand  them
00DDD0:  20 20 66 75 6C 6C 79 20 61 6E 64 2C 20 49 20 63      fully and, I c
00DDE0:  61 6E 20 65 78 70 6C 61 69 6E 0D 65 78 61 63 74    an explain.exact
00DDF0:  6C 79 20 77 68 61 74 20 74 68 65 79 20 64 6F 2E    ly what they do.
00DE00:  0D 0D 50 72 6F 67 72 61 6D 6D 69 6E 67 20 74 68    ..Programming th
00DE10:  65 20 43 52 54 43 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D    e CRTC.---------
00DE20:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 54 68 65    -----------..The
00DE30:  20 43 52 54 43 20 68 61 73 20 31 38 20 72 65 67     CRTC has 18 reg
00DE40:  69 73 74 65 72 73 20 28 30 2D 31 37 29 20 77 68    isters (0-17) wh
00DE50:  69 63 68 20 61 72 65 20 75 73 65 64 20 74 6F 20    ich are used to 
00DE60:  63 6F 6E 74 72 6F 6C 20 74 68 65 20 73 63 72 65    control the scre
00DE70:  65 6E 2C 0D 73 63 72 65 65 6E 20 63 75 72 73 6F    en,.screen curso
00DE80:  72 2C 20 61 6E 64 20 74 6F 20 73 65 6E 73 65 20    r, and to sense 
00DE90:  61 20 6C 69 67 68 74 20 70 65 6E 2F 67 75 6E 2E    a light pen/gun.
00DEA0:  0D 0D 54 6F 20 61 63 63 65 73 73 20 74 68 65 73    ..To access thes
00DEB0:  65 20 72 65 67 69 73 74 65 72 73 2C 20 74 68 65    e registers, the
00DEC0:  20 43 52 54 43 20 20 68 61 73 20 20 33 20 63 6F     CRTC  has  3 co
00DED0:  6E 74 72 6F 6C 20 70 6F 72 74 73 2E 20 4F 6E 65    ntrol ports. One
00DEE0:  20 70 6F 72 74 20 74 6F 0D 73 65 6C 65 63 74 20     port to.select 
00DEF0:  61 20 72 65 67 69 73 74 65 72 2C 20 6F 6E 65 20    a register, one 
00DF00:  68 61 72 61 63 74 65 72 2E 0D 09 09 09 09 73 79    haracter......sy
00DF10:  6D 62 6F 6C 5F 6C 69 6E 65 5F 33 20 28 30 2E 2E    mbol_line_3 (0..
00DF20:  32 35 35 29 2C 0D 09 09 09 09 73 79 6D 62 6F 6C    255),.....symbol
00DF30:  5F 6C 69 6E 65 5F 34 20 28 30 2E 2E 32 35 35 29    _line_4 (0..255)
00DF40:  2C 09 09 20 28 73 61 6D 65 20 61 73 20 53 59 4D    ,.. (same as SYM
00DF50:  42 4F 4C 0D 09 09 09 09 73 79 6D 62 6F 6C 5F 6C    BOL.....symbol_l
00DF60:  69 6E 65 5F 35 20 28 30 2E 2E 32 35 35 29 2C 09    ine_5 (0..255),.
00DF70:  09 20 63 6F 6D 6D 61 6E 64 20 69 6E 20 0D 09 09    . command in ...
00DF80:  09 09 73 79 6D 62 6F 6C 5F 6C 69 6E 65 5F 36 20    ..symbol_line_6 
00DF90:  28 30 2E 2E 32 35 35 29 2C 09 09 20 42 41 53 49    (0..255),.. BASI
00DFA0:  43 29 2E 0D 09 09 09 09 73 79 6D 62 6F 6C 5F 6C    C)......symbol_l
00DFB0:  69 6E 65 5F 37 20 28 30 2E 2E 32 35 35 29 2C 0D    ine_7 (0..255),.
00DFC0:  09 09 09 09 73 79 6D 62 6F 6C 5F 6C 69 6E 65 5F    ....symbol_line_
00DFD0:  38 20 28 30 2E 2E 32 35 35 29 2E 0D 0D 0D 26 31    8 (0..255)....&1
00DFE0:  41 09 09 53 55 42 09 09 78 31 5F 65 64 67 65 5F    A..SUB..x1_edge_
00DFF0:  6F 66 5F 77 69 6E 64 6F 77 20 28 31 2E 2E 38 30    of_window (1..80
00E000:  29 2C 09 20 44 65 66 69 6E 65 20 74 68 65 20 73    ),. Define the s
00E010:  69 7A 65 0D 09 09 09 09 78 32 5F 65 64 67 65 5F    ize.....x2_edge_
00E020:  6F 66 5F 77 69 6E 64 6F 77 20 28 31 2E 2E 38 30    of_window (1..80
00E030:  29 2C 09 20 6F 66 20 61 20 77 69 6E 64 6F 77 2E    ),. of a window.
00E040:  0D 09 09 09 09 79 31 5F 65 64 67 65 5F 6F 66 5F    .....y1_edge_of_
00E050:  77 69 6E 64 6F 77 20 28 31 2E 2E 32 35 29 2C 09    window (1..25),.
00E060:  0D 09 09 09 09 79 32 5F 65 64 67 65 5F 6F 66 5F    .....y2_edge_of_
00E070:  77 69 6E 64 6F 77 20 28 31 2E 2E 32 35 29 2E 09    window (1..25)..
00E080:  20 54 68 65 20 6C 65 66 74 20 65 64 67 65 0D 09     The left edge..
00E090:  09 09 09 09 09 09 09 20 69 73 20 74 61 6B 65 6E    ....... is taken
00E0A0:  20 74 6F 20 62 65 0D 09 09 09 09 09 09 09 09 20     to be......... 
00E0B0:  74 68 65 20 73 6D 61 6C 6C 65 72 0D 09 09 09 09    the smaller.....
00E0C0:  09 09 09 09 20 76 61 6C 75 65 20 6F 66 0D 09 09    .... value of...
00E0D0:  09 09 09 09 09 78 31 5F 65 64 67 65 5F 6F 66 5F    .....x1_edge_of_
00E0E0:  77 69 6E 64 6F 77 20 61 6E 64 0D 09 09 09 09 09    window and......
00E0F0:  09 09 78 32 5F 65 64 67 65 5F 6F 66 5F 77 69 6E    ..x2_edge_of_win
00E100:  70 6F 72 74 20 74 6F 20 20 77 72 69 74 65 20 20    port to  write  
00E110:  64 61 74 61 20 20 69 6E 74 6F 20 74 68 65 20 72    data  into the r
00E120:  65 67 69 73 74 65 72 20 61 6E 64 20 6F 6E 65 0D    egister and one.
00E130:  70 6F 72 74 20 74 6F 20 72 65 61 64 20 64 61 74    port to read dat
00E140:  61 20 66 72 6F 6D 20 74 68 65 20 72 65 67 69 73    a from the regis
00E150:  74 65 72 2E 0D 0D 50 6F 72 74 20 61 64 64 72 65    ter...Port addre
00E160:  73 73 20 20 20 20 52 65 61 64 2F 57 72 69 74 65    ss    Read/Write
00E170:  20 20 20 20 20 20 46 75 6E 63 74 69 6F 6E 2F 55          Function/U
00E180:  73 65 0D 0D 26 42 43 78 78 20 20 20 20 20 20 20    se..&BCxx       
00E190:  20 20 20 20 57 20 20 20 20 20 20 20 20 20 20 20        W           
00E1A0:  20 20 20 20 53 65 6C 65 63 74 20 43 52 54 43 20        Select CRTC 
00E1B0:  72 65 67 69 73 74 65 72 0D 26 42 44 78 78 20 20    register.&BDxx  
00E1C0:  20 20 20 20 20 20 20 20 20 57 20 20 20 20 20 20             W      
00E1D0:  20 20 20 20 20 20 20 20 20 57 72 69 74 65 20 64             Write d
00E1E0:  61 74 61 20 74 6F 20 73 65 6C 65 63 74 65 64 20    ata to selected 
00E1F0:  43 52 54 43 20 72 65 67 69 73 74 65 72 0D 26 42    CRTC register.&B
00E200:  46 78 78 20 20 20 20 20 20 20 20 20 20 20 52 20    Fxx           R 
00E210:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65                  Re
00E220:  61 64 20 64 61 74 61 20 66 72 6F 6D 20 73 65 6C    ad data from sel
00E230:  65 63 74 65 64 20 43 52 54 43 20 72 65 67 69 73    ected CRTC regis
00E240:  74 65 72 0D 0D 4E 4F 54 45 3A 20 44 75 65 20 74    ter..NOTE: Due t
00E250:  6F 20 64 69 66 66 65 72 65 6E 63 65 73 20 69 6E    o differences in
00E260:  20 43 52 54 43 27 73 2C 20 20 73 6F 6D 65 20 6F     CRTC's,  some o
00E270:  66 20 74 68 65 20 69 6E 66 6F 72 6D 61 74 69 6F    f the informatio
00E280:  6E 20 64 65 73 63 72 69 62 65 64 0D 20 20 20 20    n described.    
00E290:  20 20 68 65 72 65 20 6D 61 79 20 6E 6F 74 20 77      here may not w
00E2A0:  6F 72 6B 2E 20 20 57 68 65 72 65 20 20 64 69 66    ork.  Where  dif
00E2B0:  66 65 72 65 6E 63 65 73 20 20 6F 63 63 75 72 20    ferences  occur 
00E2C0:  20 28 74 68 61 74 20 61 72 65 20 6B 6E 6F 77 6E     (that are known
00E2D0:  29 2C 0D 20 20 20 20 20 20 74 68 65 79 20 77 69    ),.      they wi
00E2E0:  6C 6C 20 62 65 20 6C 69 73 74 65 64 2E 0D 0D 20    ll be listed... 
00E2F0:  20 20 20 20 20 49 66 20 79 6F 75 20 69 6E 74 65         If you inte
00E300:  64 6F 77 2C 20 61 6E 64 0D 09 09 09 09 09 09 09    dow, and........
00E310:  74 68 65 20 74 6F 70 20 65 64 67 65 20 69 73 20    the top edge is 
00E320:  74 61 6B 65 6E 0D 09 09 09 09 09 09 09 74 6F 20    taken........to 
00E330:  62 65 20 74 68 65 20 73 6D 61 6C 6C 65 72 20 76    be the smaller v
00E340:  61 6C 75 65 0D 09 09 09 09 09 09 09 6F 66 20 79    alue........of y
00E350:  31 5F 65 64 67 65 5F 6F 66 5F 77 69 6E 64 6F 77    1_edge_of_window
00E360:  20 61 6E 64 0D 09 09 09 09 09 09 09 79 32 5F 65     and........y2_e
00E370:  64 67 65 5F 6F 66 5F 77 69 6E 64 6F 77 2E 0D 09    dge_of_window...
00E380:  09 09 09 0D 0D 0D 26 31 42 09 09 45 53 43 09 09    ......&1B..ESC..
00E390:  09 09 09 09 20 4E 6F 20 65 66 66 65 63 74 2E 0D    .... No effect..
00E3A0:  0D 09 09 09 09 09 09 09 09 20 28 55 73 65 64 20    ......... (Used 
00E3B0:  62 79 20 61 20 0D 09 09 09 09 09 09 09 09 20 70    by a ......... p
00E3C0:  72 69 6E 74 65 72 20 74 6F 0D 09 09 09 09 09 09    rinter to.......
00E3D0:  09 09 20 61 6C 6C 6F 77 20 74 68 65 20 75 73 65    .. allow the use
00E3E0:  72 0D 09 09 09 09 09 09 09 09 20 74 6F 20 63 68    r......... to ch
00E3F0:  61 6E 67 65 20 66 6F 6E 74 0D 09 09 09 09 09 09    ange font.......
00E400:  09 09 20 73 74 79 6C 65 20 61 6E 64 0D 09 09 09    .. style and....
00E410:  09 09 09 09 09 20 6F 74 68 65 72 20 74 68 69 6E    ..... other thin
00E420:  67 73 29 2E 0D 0D 26 31 43 09 09 46 53 09 09 49    gs)...&1C..FS..I
00E430:  6E 6B 5F 6E 75 6D 62 65 72 20 28 30 2E 2E 31 35    nk_number (0..15
00E440:  29 2C 09 09 20 53 65 74 20 61 6E 20 69 6E 6B 20    ),.. Set an ink 
00E450:  74 6F 0D 09 09 09 09 43 6F 6C 6F 75 72 5F 31 20    to.....Colour_1 
00E460:  28 30 2E 2E 33 31 29 2C 09 09 20 61 20 70 61 69    (0..31),.. a pai
00E470:  72 20 6F 66 20 0D 09 09 09 09 43 6F 6C 6F 75 72    r of .....Colour
00E480:  5F 32 20 28 30 2E 2E 33 31 29 09 09 20 63 6F 6C    _2 (0..31).. col
00E490:  6F 75 72 73 2E 0D 0D 0D 0D 26 31 44 09 09 47 53    ours.....&1D..GS
00E4A0:  09 09 43 6F 6C 6F 75 72 5F 31 20 28 30 2E 2E 33    ..Colour_1 (0..3
00E4B0:  31 29 2C 09 09 20 53 65 74 20 62 6F 72 64 65 72    1),.. Set border
00E4C0:  20 74 6F 0D 09 09 09 09 43 6F 6C 6F 75 72 5F 32     to.....Colour_2
00E4D0:  20 28 30 2E 2E 33 31 29 09 09 20 61 20 70 61 69     (0..31).. a pai
00E4E0:  72 20 6F 66 0D 09 09 09 09 09 09 09 09 20 63 6F    r of......... co
00E4F0:  6C 6F 75 72 73 2E 20 49 66 0D 09 09 09 09 09 09    lours. If.......
00E500:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00E510:  0C 00 01 00 02 09 4E E5 0C 00 C1 02 00 00 00 02    ......N.........
00E520:  0C 00 C6 02 00 00 00 02 0C 00 C2 02 00 00 00 02    ................
00E530:  0C 00 C7 02 00 00 00 02 0C 00 C3 02 00 00 00 02    ................
00E540:  0C 00 C8 02 00 00 00 02 0C 00 C4 02 00 00 00 02    ................
00E550:  0C 00 C9 02 00 00 00 02 0C 00 C5 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:  6E 64 20 74 6F 20 75 73 65 20 73 70 65 63 69 61    nd to use specia
00E610:  6C 20 65 66 66 65 63 74 73 2C 20 65 6E 73 75 72    l effects, ensur
00E620:  65 20 74 68 65 79 20 77 6F 72 6B 20 77 69 74 68    e they work with
00E630:  20 61 6C 6C 0D 20 20 20 20 20 20 43 52 54 43 20     all.      CRTC 
00E640:  74 79 70 65 73 2C 20 6F 72 20 79 6F 75 20 73 70    types, or you sp
00E650:  65 63 69 66 79 20 77 68 69 63 68 20 43 52 54 43    ecify which CRTC
00E660:  20 74 79 70 65 73 20 74 68 65 20 65 66 66 65 63     types the effec
00E670:  74 20 77 6F 72 6B 73 20 6F 6E 2E 0D 0D 3D 3D 3D    t works on...===
00E680:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00E690:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00E6A0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00E6B0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00E6C0:  3D 3D 3D 0D 0D 0D 53 65 6C 65 63 74 69 6E 67 20    ===...Selecting 
00E6D0:  61 20 72 65 67 69 73 74 65 72 0D 2D 2D 2D 2D 2D    a register.-----
00E6E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D    ---------------.
00E6F0:  0D 41 20 72 65 67 69 73 74 65 72 20 69 73 20 73    .A register is s
00E700:  65 6C 65 63 74 65 64 20 62 79 20 73 65 6E 64 69    elected by sendi
00E710:  6E 67 20 20 74 68 65 20 20 72 65 67 69 73 74 65    ng  the  registe
00E720:  72 20 6E 75 6D 62 65 72 20 28 69 6E 20 74 68 65    r number (in the
00E730:  20 72 61 6E 67 65 0D 30 2D 31 37 29 20 74 6F 20     range.0-17) to 
00E740:  70 6F 72 74 20 26 42 43 78 78 2E 20 54 68 69 73    port &BCxx. This
00E750:  20 72 65 67 69 73 74 65 72 20 20 77 69 6C 6C 20     register  will 
00E760:  72 65 6D 61 69 6E 20 73 65 6C 65 63 74 65 64 20    remain selected 
00E770:  75 6E 74 69 6C 20 61 6E 6F 74 68 65 72 0D 69 73    until another.is
00E780:  20 73 65 6C 65 63 74 65 64 2E 20 54 68 69 73 20     selected. This 
00E790:  6D 65 61 6E 73 20 79 6F 75 20 63 61 6E 20 77 72    means you can wr
00E7A0:  69 74 65 20 74 6F 20 74 68 65 20 73 61 6D 65 20    ite to the same 
00E7B0:  72 65 67 69 73 74 65 72 20 6D 61 6E 79 20 74 69    register many ti
00E7C0:  6D 65 73 2C 0D 77 69 74 68 6F 75 74 20 68 61 76    mes,.without hav
00E7D0:  69 6E 67 20 74 6F 20 72 65 2D 73 65 6C 65 63 74    ing to re-select
00E7E0:  20 74 68 65 20 72 65 67 69 73 74 65 72 20 65 61     the register ea
00E7F0:  63 68 20 74 69 6D 65 2E 0D 0D 28 53 65 65 20 74    ch time...(See t
00E800:  20 20 20 58 20 20 20 20 20 20 20 58 0D 2A 31 35       X       X.*15
00E810:  20 20 20 20 20 20 20 20 20 20 20 20 20 52 2F 57                 R/W
00E820:  20 20 20 20 20 43 75 72 73 6F 72 20 28 4C 6F 77         Cursor (Low
00E830:  29 20 20 20 20 20 20 20 20 20 20 20 20 20 20 58    )              X
00E840:  20 20 20 20 20 58 20 20 20 20 20 20 20 58 0D 31         X       X.1
00E850:  36 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52    6              R
00E860:  20 20 20 20 20 20 20 4C 69 67 68 74 20 50 65 6E           Light Pen
00E870:  20 28 48 69 67 68 29 20 20 20 20 20 20 20 20 20     (High)         
00E880:  20 58 20 20 20 20 20 58 20 20 20 20 20 20 20 58     X     X       X
00E890:  0D 31 37 20 20 20 20 20 20 20 20 20 20 20 20 20    .17             
00E8A0:  20 52 20 20 20 20 20 20 20 4C 69 67 68 74 20 50     R       Light P
00E8B0:  65 6E 20 28 4C 6F 77 29 20 20 20 20 20 20 20 20    en (Low)        
00E8C0:  20 20 20 58 20 20 20 20 20 58 20 20 20 20 20 20       X     X      
00E8D0:  20 58 0D 0D 2A 20 2D 20 54 68 65 73 65 20 72 65     X..* - These re
00E8E0:  67 69 73 74 65 72 73 20 61 72 65 20 6E 6F 74 20    gisters are not 
00E8F0:  75 73 65 64 20 6F 6E 20 74 68 65 20 43 50 43 2E    used on the CPC.
00E900:  0D 0D 52 20 2D 20 52 65 61 64 20 6F 6E 6C 79 0D    ..R - Read only.
00E910:  57 20 2D 20 57 72 69 74 65 20 6F 6E 6C 79 0D 0D    W - Write only..
00E920:  52 2F 57 20 2D 20 42 6F 74 68 20 52 65 61 64 20    R/W - Both Read 
00E930:  61 6E 64 20 57 72 69 74 65 0D 0D 58 20 69 6E 64    and Write..X ind
00E940:  69 63 61 74 65 73 20 74 68 65 20 20 76 61 6C 75    icates the  valu
00E950:  65 73 20 20 6F 66 20 20 74 68 65 73 65 20 20 72    es  of  these  r
00E960:  65 67 69 73 74 65 72 73 20 20 6D 61 79 20 20 76    egisters  may  v
00E970:  61 72 79 20 64 75 72 69 6E 67 20 6E 6F 72 6D 61    ary during norma
00E980:  6C 0D 6F 70 65 72 61 74 69 6F 6E 2E 0D 0D 4E 4F    l.operation...NO
00E990:  54 45 3A 0D 0D 45 78 70 65 72 69 6D 65 6E 74 69    TE:..Experimenti
00E9A0:  6E 67 20 77 69 74 68 20 74 68 65 20 72 65 67 69    ng with the regi
00E9B0:  73 74 65 72 73 20 63 61 6E 20 20 70 72 6F 64 75    sters can  produ
00E9C0:  63 65 20 69 6E 74 65 72 65 73 74 69 6E 67 20 65    ce interesting e
00E9D0:  66 66 65 63 74 73 2E 20 59 6F 75 0D 77 69 6C 6C    ffects. You.will
00E9E0:  20 6E 6F 74 20 64 6F 20 61 6E 79 20 68 61 72 6D     not do any harm
00E9F0:  20 62 79 20 64 6F 69 6E 67 20 20 74 68 69 73 2E     by doing  this.
00EA00:  68 65 20 70 72 6F 67 72 61 6D 6D 69 6E 67 20 65    he programming e
00EA10:  78 61 6D 70 6C 65 29 0D 0D 3D 3D 3D 3D 3D 3D 3D    xample)..=======
00EA20:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EA30:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EA40:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EA50:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D    ===============.
00EA60:  0D 0D 57 72 69 74 69 6E 67 20 74 6F 20 61 20 72    ..Writing to a r
00EA70:  65 67 69 73 74 65 72 0D 2D 2D 2D 2D 2D 2D 2D 2D    egister.--------
00EA80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 4F    -------------..O
00EA90:  6E 63 65 20 61 20 72 65 67 69 73 74 65 72 20 68    nce a register h
00EAA0:  61 73 20 62 65 65 6E 20 73 65 6C 65 63 74 65 64    as been selected
00EAB0:  20 75 73 69 6E 67 20 74 68 65 20 6D 65 74 68 6F     using the metho
00EAC0:  64 20 61 62 6F 76 65 2C 20 74 68 65 20 75 73 65    d above, the use
00EAD0:  72 20 63 61 6E 0D 77 72 69 74 65 20 64 61 74 61    r can.write data
00EAE0:  20 69 6E 74 6F 20 69 74 2E 20 44 61 74 61 20 63     into it. Data c
00EAF0:  61 6E 20 20 62 65 20 20 77 72 69 74 74 65 6E 20    an  be  written 
00EB00:  69 6E 74 6F 20 74 68 65 20 72 65 67 69 73 74 65    into the registe
00EB10:  72 20 62 79 20 73 65 6E 64 69 6E 67 0D 74 68 65    r by sending.the
00EB20:  20 64 61 74 61 20 74 6F 20 70 6F 72 74 20 26 42     data to port &B
00EB30:  44 78 78 2E 0D 0D 49 66 20 74 68 65 20 73 65 6C    Dxx...If the sel
00EB40:  65 63 74 65 64 20 20 72 65 67 69 73 74 65 72 20    ected  register 
00EB50:  20 63 61 6E 6E 6F 74 20 20 62 65 20 20 77 72 69     cannot  be  wri
00EB60:  74 74 65 6E 20 20 74 6F 2C 20 20 74 68 65 72 65    tten  to,  there
00EB70:  20 20 77 69 6C 6C 20 62 65 20 6E 6F 0D 65 66 66      will be no.eff
00EB80:  65 63 74 2E 0D 0D 28 53 65 65 20 74 68 65 20 70    ect...(See the p
00EB90:  72 6F 67 72 61 6D 6D 69 6E 67 20 65 78 61 6D 70    rogramming examp
00EBA0:  6C 65 29 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    le)..===========
00EBB0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EBC0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EBD0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EBE0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 0D 52 65    ===========...Re
00EBF0:  61 64 69 6E 67 20 61 20 72 65 67 69 73 74 65 72    ading a register
00EC00:  20 20 4A 75 73 74 20 73 77 69 74 63 68 20 74 68      Just switch th
00EC10:  65 20 63 6F 6D 70 75 74 65 72 20 6F 66 66 20 61    e computer off a
00EC20:  6E 64 0D 74 68 65 6E 20 6F 6E 2C 20 61 6E 64 20    nd.then on, and 
00EC30:  65 76 65 72 79 74 68 69 6E 67 20 77 69 6C 6C 20    everything will 
00EC40:  62 65 20 6F 6B 20 61 67 61 69 6E 2E 0D 3D 3D 3D    be ok again..===
00EC50:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EC60:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EC70:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EC80:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EC90:  3D 3D 3D 0D 0D 52 65 67 69 73 74 65 72 20 75 73    ===..Register us
00ECA0:  61 67 65 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    age.------------
00ECB0:  2D 2D 0D 0D 43 65 72 74 61 69 6E 20 72 65 67 69    --..Certain regi
00ECC0:  73 74 65 72 73 20 63 61 6E 20 62 65 20 75 73 65    sters can be use
00ECD0:  64 20 66 6F 72 20 76 61 72 69 6F 75 73 20 74 68    d for various th
00ECE0:  69 6E 67 73 2E 20 48 65 72 65 20 69 73 20 61 20    ings. Here is a 
00ECF0:  6C 69 73 74 20 6F 66 0D 72 65 67 69 73 74 65 72    list of.register
00ED00:  73 20 61 6E 64 20 74 68 65 69 72 20 63 6F 6D 6D    s and their comm
00ED10:  6F 6E 20 75 73 61 67 65 2E 0D 0D 0D 52 65 67 69    on usage....Regi
00ED20:  73 74 65 72 20 30 3A 20 20 20 20 20 48 6F 72 69    ster 0:     Hori
00ED30:  7A 6F 6E 74 61 6C 20 73 70 6C 69 74 74 69 6E 67    zontal splitting
00ED40:  20 28 63 68 61 6E 67 69 6E 67 20 6F 66 20 73 63     (changing of sc
00ED50:  72 65 65 6E 20 61 64 64 72 65 73 73 2F 6D 6F 64    reen address/mod
00ED60:  65 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20    e.              
00ED70:  20 20 61 63 63 72 6F 73 73 20 6C 69 6E 65 29 2E      accross line).
00ED80:  0D 52 65 67 69 73 74 65 72 20 31 3A 20 20 20 20    .Register 1:    
00ED90:  20 57 69 64 74 68 20 6F 66 20 73 63 72 65 65 6E     Width of screen
00EDA0:  0D 52 65 67 69 73 74 65 72 20 32 3A 20 20 20 20    .Register 2:    
00EDB0:  20 61 29 20 48 6F 72 69 7A 6F 6E 74 61 6C 20 70     a) Horizontal p
00EDC0:  6F 73 69 74 69 6F 6E 69 6E 67 20 6F 66 20 73 63    ositioning of sc
00EDD0:  72 65 65 6E 0D 20 20 20 20 20 20 20 20 20 20 20    reen.           
00EDE0:  20 20 20 20 20 62 29 20 53 63 72 65 65 6E 20 64         b) Screen d
00EDF0:  69 73 74 6F 72 74 69 6E 67 20 28 77 68 65 6E 20    istorting (when 
00EE00:  0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    .---------------
00EE10:  2D 2D 2D 0D 0D 4F 6E 63 65 20 61 20 72 65 67 69    ---..Once a regi
00EE20:  73 74 65 72 20 68 61 73 20 62 65 65 6E 20 73 65    ster has been se
00EE30:  6C 65 63 74 65 64 2C 20 20 69 74 20 20 63 61 6E    lected,  it  can
00EE40:  20 20 62 65 20 72 65 61 64 20 66 72 6F 6D 2E 20      be read from. 
00EE50:  54 68 65 20 64 61 74 61 20 69 6E 0D 74 68 65 20    The data in.the 
00EE60:  72 65 67 69 73 74 65 72 20 63 61 6E 20 62 65 20    register can be 
00EE70:  72 65 61 64 20 66 72 6F 6D 20 70 6F 72 74 20 26    read from port &
00EE80:  42 46 78 78 2E 0D 0D 49 66 20 74 68 65 20 72 65    BFxx...If the re
00EE90:  67 69 73 74 65 72 20 63 61 6E 6E 6F 74 20 62 65    gister cannot be
00EEA0:  20 72 65 61 64 2C 20 61 20 76 61 6C 75 65 20 6F     read, a value o
00EEB0:  66 20 26 46 46 20 77 69 6C 6C 20 62 65 20 72 65    f &FF will be re
00EEC0:  74 75 72 6E 65 64 2E 0D 0D 28 53 65 65 20 74 68    turned...(See th
00EED0:  65 20 70 72 6F 67 72 61 6D 6D 69 6E 67 20 65 78    e programming ex
00EEE0:  61 6D 70 6C 65 29 0D 0D 4E 4F 54 45 3A 20 4F 6E    ample)..NOTE: On
00EEF0:  20 63 65 72 74 61 69 6E 20 43 52 54 43 20 74 79     certain CRTC ty
00EF00:  70 65 73 20 74 68 69 73 20 69 73 20 6E 6F 74 20    pes this is not 
00EF10:  70 6F 73 73 69 62 6C 65 2E 0D 0D 3D 3D 3D 3D 3D    possible...=====
00EF20:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EF30:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EF40:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EF50:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00EF60:  3D 0D 0D 0D 52 65 67 69 73 74 65 72 20 46 75 6E    =...Register Fun
00EF70:  63 74 69 6F 6E 73 20 2D 20 61 6E 64 20 6E 6F 72    ctions - and nor
00EF80:  6D 61 6C 20 76 61 6C 75 65 73 0D 2D 2D 2D 2D 2D    mal values.-----
00EF90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 52    -------------..R
00EFA0:  65 67 69 73 74 65 72 20 20 20 20 20 20 20 20 52    egister        R
00EFB0:  65 61 64 2F 20 20 20 52 65 67 69 73 74 65 72 20    ead/   Register 
00EFC0:  54 69 74 6C 65 20 20 20 20 20 20 20 20 20 20 20    Title           
00EFD0:  20 20 20 4E 6F 72 6D 61 6C 20 76 61 6C 75 65 73       Normal values
00EFE0:  0D 4E 75 6D 62 65 72 20 20 20 20 20 20 20 20 20    .Number         
00EFF0:  20 57 72 69 74 65 20 20 20 20 20 20 20 20 20 20     Write          
00F000:  63 68 61 6E 67 65 64 20 61 73 20 62 65 61 6D 20    changed as beam 
00F010:  73 63 61 6E 73 20 73 63 72 65 65 6E 29 0D 52 65    scans screen).Re
00F020:  67 69 73 74 65 72 20 33 3A 20 20 20 20 20 53 6D    gister 3:     Sm
00F030:  6F 6F 74 68 20 6C 65 66 74 2D 72 69 67 68 74 20    ooth left-right 
00F040:  68 61 72 64 77 61 72 65 20 73 63 72 6F 6C 6C 0D    hardware scroll.
00F050:  52 65 67 69 73 74 65 72 20 34 3A 20 20 20 20 20    Register 4:     
00F060:  52 75 70 74 75 72 65 2F 56 65 72 74 69 63 61 6C    Rupture/Vertical
00F070:  20 53 70 6C 69 74 74 69 6E 67 20 28 61 6C 6C 6F     Splitting (allo
00F080:  77 69 6E 67 20 73 63 72 65 65 6E 20 61 64 64 72    wing screen addr
00F090:  65 73 73 20 74 6F 0D 20 20 20 20 20 20 20 20 20    ess to.         
00F0A0:  20 20 20 20 20 20 20 62 65 20 63 68 61 6E 67 65           be change
00F0B0:  64 20 6F 6E 20 61 6E 79 20 6C 69 6E 65 0D 52 65    d on any line.Re
00F0C0:  67 69 73 74 65 72 20 35 3A 20 20 20 20 20 56 65    gister 5:     Ve
00F0D0:  72 79 20 73 6D 6F 6F 74 68 20 76 65 72 74 69 63    ry smooth vertic
00F0E0:  61 6C 20 73 63 72 6F 6C 6C 69 6E 67 0D 52 65 67    al scrolling.Reg
00F0F0:  69 73 74 65 72 20 36 3A 20 20 20 20 20 48 65 69    ister 6:     Hei
00F100:  67 68 74 20 6F 66 20 73 63 72 65 65 6E 0D 52 65    ght of screen.Re
00F110:  67 69 73 74 65 72 20 37 3A 20 20 20 20 20 53 65    gister 7:     Se
00F120:  74 74 69 6E 67 20 75 70 20 74 68 65 20 72 75 70    tting up the rup
00F130:  74 75 72 65 2F 73 70 6C 69 74 74 69 6E 67 20 61    ture/splitting a
00F140:  6E 64 20 76 65 72 74 69 63 61 6C 20 70 6F 73 69    nd vertical posi
00F150:  74 69 6F 6E 0D 20 20 20 20 20 20 20 20 20 20 20    tion.           
00F160:  20 20 20 20 20 6F 66 20 73 63 72 65 65 6E 0D 52         of screen.R
00F170:  65 67 69 73 74 65 72 20 38 3A 20 20 20 20 20 2D    egister 8:     -
00F180:  0D 52 65 67 69 73 74 65 72 20 39 3A 20 20 20 20    .Register 9:    
00F190:  20 2D 0D 52 65 67 69 73 74 65 72 20 31 30 3A 20     -.Register 10: 
00F1A0:  20 20 20 4E 4F 54 20 55 53 45 44 0D 52 65 67 69       NOT USED.Regi
00F1B0:  73 74 65 72 20 31 31 3A 20 20 20 20 4E 4F 54 20    ster 11:    NOT 
00F1C0:  55 53 45 44 0D 52 65 67 69 73 74 65 72 20 31 32    USED.Register 12
00F1D0:  3A 20 20 20 20 53 65 74 74 69 6E 67 20 73 63 72    :    Setting scr
00F1E0:  65 65 6E 20 61 64 64 72 65 73 73 20 2B 20 4F 76    een address + Ov
00F1F0:  65 72 73 63 61 6E 20 2B 20 48 61 72 64 77 61 72    erscan + Hardwar
00F200:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
00F210:  20 20 20 50 41 4C 20 20 20 53 45 43 41 4D 20 20       PAL   SECAM  
00F220:  20 4E 54 53 43 0D 0D 30 20 20 20 20 20 20 20 20     NTSC..0        
00F230:  20 20 20 20 20 20 20 57 20 20 20 20 20 20 20 48           W       H
00F240:  6F 72 69 7A 6F 6E 74 61 6C 20 54 6F 74 61 6C 20    orizontal Total 
00F250:  20 20 20 20 20 20 20 20 20 36 33 20 20 20 20 36             63    6
00F260:  33 20 20 20 20 20 20 36 33 0D 31 20 20 20 20 20    3      63.1     
00F270:  20 20 20 20 20 20 20 20 20 20 57 20 20 20 20 20              W     
00F280:  20 20 48 6F 72 69 7A 6F 6E 74 61 6C 20 44 69 73      Horizontal Dis
00F290:  70 6C 61 79 65 64 20 20 20 20 20 20 34 30 20 20    played      40  
00F2A0:  20 20 34 30 20 20 20 20 20 20 34 30 0D 32 20 20      40      40.2  
00F2B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 57 20 20                 W  
00F2C0:  20 20 20 20 20 48 6F 72 69 7A 6F 6E 74 61 6C 20         Horizontal 
00F2D0:  53 79 6E 63 20 50 6F 73 69 74 69 6F 6E 20 20 34    Sync Position  4
00F2E0:  36 20 20 20 20 34 36 20 20 20 20 20 20 34 36 0D    6    46      46.
00F2F0:  33 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    3               
00F300:  57 20 20 20 20 20 20 20 53 79 6E 63 20 57 69 64    W       Sync Wid
00F310:  74 68 20 20 20 20 20 20 20 20 20 20 20 20 20 20    th              
00F320:  20 20 26 38 45 20 20 20 26 38 45 20 20 20 20 20      &8E   &8E     
00F330:  26 38 45 0D 34 20 20 20 20 20 20 20 20 20 20 20    &8E.4           
00F340:  20 20 20 20 57 20 20 20 20 20 20 20 56 65 72 74        W       Vert
00F350:  69 63 61 6C 20 54 6F 74 61 6C 20 20 20 20 20 20    ical Total      
00F360:  20 20 20 20 20 20 33 38 20 20 20 20 33 38 20 20          38    38  
00F370:  20 20 20 20 33 31 0D 35 20 20 20 20 20 20 20 20        31.5        
00F380:  20 20 20 20 20 20 20 57 20 20 20 20 20 20 20 56           W       V
00F390:  65 72 74 69 63 61 6C 20 54 6F 74 61 6C 20 41 64    ertical Total Ad
00F3A0:  6A 75 73 74 20 20 20 20 20 30 20 20 20 20 20 30    just     0     0
00F3B0:  20 20 20 20 20 20 20 36 0D 36 20 20 20 20 20 20           6.6      
00F3C0:  20 20 20 20 20 20 20 20 20 57 20 20 20 20 20 20             W      
00F3D0:  20 56 65 72 74 69 63 61 6C 20 44 69 73 70 6C 61     Vertical Displa
00F3E0:  79 65 64 20 20 20 20 20 20 20 20 32 35 20 20 20    yed        25   
00F3F0:  20 32 35 20 20 20 20 20 20 32 35 0D 37 20 20 20     25      25.7   
00F400:  65 20 73 63 72 6F 6C 6C 69 6E 67 0D 52 65 67 69    e scrolling.Regi
00F410:  73 74 65 72 20 31 33 3A 20 20 20 20 48 61 72 64    ster 13:    Hard
00F420:  77 61 72 65 20 73 63 72 6F 6C 6C 69 6E 67 0D 52    ware scrolling.R
00F430:  65 67 69 73 74 65 72 20 31 34 3A 20 20 20 20 4E    egister 14:    N
00F440:  4F 54 20 55 53 45 44 0D 52 65 67 69 73 74 65 72    OT USED.Register
00F450:  20 31 35 3A 20 20 20 20 4E 4F 54 20 55 53 45 44     15:    NOT USED
00F460:  0D 52 65 67 69 73 74 65 72 20 31 36 3A 20 20 20    .Register 16:   
00F470:  20 4C 69 67 68 74 20 70 65 6E 20 61 64 64 72 65     Light pen addre
00F480:  73 73 0D 52 65 67 69 73 74 65 72 20 31 37 3A 20    ss.Register 17: 
00F490:  20 20 20 4C 69 67 68 74 20 70 65 6E 20 61 64 64       Light pen add
00F4A0:  72 65 73 73 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ress..==========
00F4B0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00F4C0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00F4D0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00F4E0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 52    =============..R
00F4F0:  65 67 69 73 74 65 72 20 31 20 20 2D 20 48 6F 72    egister 1  - Hor
00F500:  69 7A 6F 6E 74 61 6C 20 44 69 73 70 6C 61 79 65    izontal Displaye
00F510:  64 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    d.--------------
00F520:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00F530:  2D 2D 2D 2D 0D 0D 54 68 69 73 20 72 65 67 69 73    ----..This regis
00F540:  74 65 72 20 69 73 20 75 73 65 64 20 74 6F 20 64    ter is used to d
00F550:  65 66 69 6E 65 20 74 68 65 20 20 77 69 64 74 68    efine the  width
00F560:  20 6F 66 20 74 68 65 20 73 63 72 65 65 6E 2E 20     of the screen. 
00F570:  54 68 65 20 77 69 64 74 68 20 69 73 0D 63 61 6C    The width is.cal
00F580:  63 75 6C 61 74 65 64 20 69 6E 20 6D 6F 64 65 20    culated in mode 
00F590:  31 20 63 68 61 72 61 63 74 65 72 20 73 69 7A 65    1 character size
00F5A0:  64 20 73 74 65 70 73 2E 0D 0D 69 2E 65 2E 20 74    d steps...i.e. t
00F5B0:  68 65 20 6E 75 6D 62 65 72 20 6F 66 20 63 68 61    he number of cha
00F5C0:  72 61 63 74 65 72 73 20 20 61 63 63 72 6F 73 73    racters  accross
00F5D0:  20 20 74 68 65 20 20 73 63 72 65 65 6E 20 20 69      the  screen  i
00F5E0:  6E 20 6D 6F 64 65 20 31 2C 20 69 73 20 74 68 65    n mode 1, is the
00F5F0:  0D 20 20 20 20 20 73 61 6D 65 20 61 73 20 74 68    .     same as th
00F600:  20 20 20 20 20 20 20 20 20 20 20 20 57 20 20 20                W   
00F610:  20 20 20 20 56 65 72 74 69 63 61 6C 20 53 79 6E        Vertical Syn
00F620:  63 20 50 6F 73 69 74 69 6F 6E 20 20 20 20 33 30    c Position    30
00F630:  20 20 20 20 33 30 20 20 20 20 20 20 32 37 0D 38        30      27.8
00F640:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57                   W
00F650:  20 20 20 20 20 20 20 49 6E 74 65 72 6C 61 63 65           Interlace
00F660:  20 61 6E 64 20 53 6B 65 77 20 20 20 20 20 20 20     and Skew       
00F670:  20 30 20 20 20 20 20 30 20 20 20 20 20 20 20 30     0     0       0
00F680:  0D 39 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .9              
00F690:  20 57 20 20 20 20 20 20 20 4D 61 78 69 6D 75 6D     W       Maximum
00F6A0:  20 52 61 73 74 65 72 20 41 64 64 72 65 73 73 20     Raster Address 
00F6B0:  20 20 20 37 20 20 20 20 20 37 20 20 20 20 20 20       7     7      
00F6C0:  20 37 0D 2A 31 30 20 20 20 20 20 20 20 20 20 20     7.*10          
00F6D0:  20 20 20 57 20 20 20 20 20 20 20 43 75 72 73 6F       W       Curso
00F6E0:  72 20 53 74 61 72 74 20 52 61 73 74 65 72 20 20    r Start Raster  
00F6F0:  20 20 20 20 20 58 20 20 20 20 20 58 20 20 20 20         X     X    
00F700:  20 20 20 58 0D 2A 31 31 20 20 20 20 20 20 20 20       X.*11        
00F710:  20 20 20 20 20 57 20 20 20 20 20 20 20 43 75 72         W       Cur
00F720:  73 6F 72 20 45 6E 64 20 52 61 73 74 65 72 20 20    sor End Raster  
00F730:  20 20 20 20 20 20 20 58 20 20 20 20 20 58 20 20           X     X  
00F740:  20 20 20 20 20 58 0D 31 32 20 20 20 20 20 20 20         X.12       
00F750:  20 20 20 20 20 20 20 52 2F 57 20 20 20 20 20 53           R/W     S
00F760:  74 61 72 74 20 41 64 64 72 65 73 73 20 28 48 69    tart Address (Hi
00F770:  67 68 29 20 20 20 20 20 20 58 20 20 20 20 20 58    gh)      X     X
00F780:  20 20 20 20 20 20 20 58 0D 31 33 20 20 20 20 20           X.13     
00F790:  20 20 20 20 20 20 20 20 20 52 2F 57 20 20 20 20             R/W    
00F7A0:  20 53 74 61 72 74 20 41 64 64 72 65 73 73 20 28     Start Address (
00F7B0:  4C 6F 77 29 20 20 20 20 20 20 20 58 20 20 20 20    Low)       X    
00F7C0:  20 58 20 20 20 20 20 20 20 58 0D 2A 31 34 20 20     X       X.*14  
00F7D0:  20 20 20 20 20 20 20 20 20 20 20 52 2F 57 20 20               R/W  
00F7E0:  20 20 20 43 75 72 73 6F 72 20 28 48 69 67 68 29       Cursor (High)
00F7F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 58 20 20                 X  
00F800:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
00F810:  0D 00 01 00 02 09 4E E5 0D 00 C1 02 00 00 00 02    ......N.........
00F820:  0D 00 C6 02 00 00 00 02 0D 00 C2 02 00 00 00 02    ................
00F830:  0D 00 C7 02 00 00 00 02 0D 00 C3 02 00 00 00 02    ................
00F840:  0D 00 C8 02 00 00 00 02 0D 00 C4 02 00 00 00 02    ................
00F850:  0D 00 C9 02 00 00 00 02 0D 00 C5 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:  65 20 6E 75 6D 62 65 72 20 70 72 6F 67 72 61 6D    e number program
00F910:  6D 65 64 20 69 6E 74 6F 20 74 68 69 73 20 72 65    med into this re
00F920:  67 69 73 74 65 72 2E 0D 0D 54 68 65 72 65 66 6F    gister...Therefo
00F930:  72 65 2C 20 74 68 65 20 77 69 64 74 68 20 6F 66    re, the width of
00F940:  20 74 68 65 20 73 63 72 65 65 6E 20 20 6D 61 79     the screen  may
00F950:  20 20 62 65 20 69 6E 63 72 65 61 73 65 64 20 6F      be increased o
00F960:  72 20 64 65 63 72 65 61 73 65 64 2C 20 74 6F 0D    r decreased, to.
00F970:  67 65 74 20 74 68 65 20 64 65 73 69 72 65 64 20    get the desired 
00F980:  73 63 72 65 65 6E 20 77 69 64 74 68 2E 0D 0D 49    screen width...I
00F990:  66 20 74 68 65 20 76 61 6C 75 65 20 70 72 6F 67    f the value prog
00F9A0:  72 61 6D 6D 65 64 20 69 73 20 20 69 6E 63 72 65    rammed is  incre
00F9B0:  61 73 65 64 2C 20 20 74 68 65 20 20 77 69 64 74    ased,  the  widt
00F9C0:  68 20 20 6F 66 20 74 68 65 20 73 63 72 65 65 6E    h  of the screen
00F9D0:  20 77 69 6C 6C 0D 69 6E 63 72 65 61 73 65 2C 20     will.increase, 
00F9E0:  69 66 20 74 68 65 20 20 76 61 6C 75 65 20 20 70    if the  value  p
00F9F0:  72 6F 67 72 61 6D 6D 65 64 20 20 69 73 20 20 64    rogrammed  is  d
00FA00:  65 63 72 65 61 73 65 64 2C 20 20 74 68 65 20 20    ecreased,  the  
00FA10:  77 69 64 74 68 20 6F 66 20 74 68 65 0D 73 63 72    width of the.scr
00FA20:  65 65 6E 20 77 69 6C 6C 20 64 65 63 72 65 61 73    een will decreas
00FA30:  65 2E 0D 0D 54 68 65 20 6E 6F 72 6D 61 6C 20 77    e...The normal w
00FA40:  69 64 74 68 20 6F 66 20 74 68 65 20 20 73 63 72    idth of the  scr
00FA50:  65 65 6E 20 20 69 73 20 20 34 30 20 20 63 68 61    een  is  40  cha
00FA60:  72 61 63 74 65 72 73 2E 20 20 54 68 65 20 77 69    racters.  The wi
00FA70:  64 74 68 20 6F 66 20 74 68 65 0D 6D 6F 6E 69 74    dth of the.monit
00FA80:  6F 72 20 73 63 72 65 65 6E 20 69 73 20 35 30 20    or screen is 50 
00FA90:  63 68 61 72 61 63 74 65 72 73 2E 0D 0D 28 54 68    characters...(Th
00FAA0:  65 20 6E 75 6D 62 65 72 20 6F 66 20 62 79 74 65    e number of byte
00FAB0:  73 20 64 69 73 70 6C 61 79 65 64 20 6F 6E 20 20    s displayed on  
00FAC0:  61 20 6C 69 6E 65 3D 76 61 6C 75 65 20 70 72 6F    a line=value pro
00FAD0:  67 72 61 6D 6D 65 64 20 74 6F 20 72 65 67 69 73    grammed to regis
00FAE0:  74 65 72 0D 31 2A 32 29 0D 0D 3D 3D 3D 3D 3D 3D    ter.1*2)..======
00FAF0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00FB00:  75 65 20 69 73 20 64 65 63 72 65 61 73 65 64 2C    ue is decreased,
00FB10:  20 74 68 65 20 73 63 72 65 65 6E 20 77 69 6C 6C     the screen will
00FB20:  20 73 68 69 66 74 20 64 6F 77 6E 77 61 72 64 73     shift downwards
00FB30:  2E 0D 0D 54 68 65 72 65 66 6F 72 65 2C 20 75 73    ...Therefore, us
00FB40:  69 6E 67 20 74 68 69 73 20 20 72 65 67 69 73 74    ing this  regist
00FB50:  65 72 20 20 61 6E 64 20 20 72 65 67 69 73 74 65    er  and  registe
00FB60:  72 20 20 32 2C 20 20 69 74 20 20 69 73 20 70 6F    r  2,  it  is po
00FB70:  73 73 69 62 6C 65 20 74 6F 0D 70 6F 73 69 74 69    ssible to.positi
00FB80:  6F 6E 20 74 68 65 20 70 69 63 74 75 72 65 20 74    on the picture t
00FB90:  6F 20 61 6E 79 20 70 6F 73 69 74 69 6F 6E 20 6F    o any position o
00FBA0:  6E 20 74 68 65 20 6D 6F 6E 69 74 6F 72 20 73 63    n the monitor sc
00FBB0:  72 65 65 6E 2E 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D    reen...=========
00FBC0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00FBD0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00FBE0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00FBF0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 52    =============..R
00FC00:  65 67 69 73 74 65 72 20 31 32 20 2D 20 53 74 61    egister 12 - Sta
00FC10:  72 74 20 41 64 64 72 65 73 73 20 28 48 69 67 68    rt Address (High
00FC20:  29 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ).--------------
00FC30:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00FC40:  2D 2D 2D 2D 0D 0D 54 68 69 73 20 72 65 67 69 73    ----..This regis
00FC50:  74 65 72 20 73 70 65 63 69 66 79 73 20 77 68 65    ter specifys whe
00FC60:  72 65 20 74 68 65 20 73 63 72 65 65 6E 20 20 77    re the screen  w
00FC70:  69 6C 6C 20 20 73 74 61 72 74 20 69 6E 20 6D 65    ill  start in me
00FC80:  6D 6F 72 79 20 61 6E 64 20 68 6F 77 0D 6D 75 63    mory and how.muc
00FC90:  68 20 6D 65 6D 6F 72 79 20 69 73 20 20 74 6F 20    h memory is  to 
00FCA0:  20 62 65 20 20 75 73 65 64 20 20 74 6F 20 20 64     be  used  to  d
00FCB0:  69 73 70 6C 61 79 20 20 74 68 65 20 20 73 63 72    isplay  the  scr
00FCC0:  65 65 6E 2E 20 20 54 6F 67 65 74 68 65 72 20 77    een.  Together w
00FCD0:  69 74 68 0D 72 65 67 69 73 74 65 72 20 31 33 2C    ith.register 13,
00FCE0:  20 69 74 20 61 6C 6C 6F 77 73 20 74 68 65 20 75     it allows the u
00FCF0:  73 65 72 20 74 6F 20 73 63 72 6F 6C 6C 20 74 68    ser to scroll th
00FD00:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00FD10:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00FD20:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00FD30:  0D 0D 52 65 67 69 73 74 65 72 20 32 20 20 2D 20    ..Register 2  - 
00FD40:  48 6F 72 69 7A 6F 6E 74 61 6C 20 53 79 6E 63 20    Horizontal Sync 
00FD50:  50 6F 73 69 74 69 6F 6E 0D 2D 2D 2D 2D 2D 2D 2D    Position.-------
00FD60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
00FD70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D    --------------..
00FD80:  54 68 69 73 20 72 65 67 69 73 74 65 72 20 64 65    This register de
00FD90:  66 69 6E 65 73 20 74 68 65 20 68 6F 72 69 7A 6F    fines the horizo
00FDA0:  6E 74 61 6C 20 70 6F 73 69 74 69 6F 6E 20 6F 66    ntal position of
00FDB0:  20 74 68 65 20 73 63 72 65 65 6E 20 77 69 74 68     the screen with
00FDC0:  69 6E 20 74 68 65 0D 6D 6F 6E 69 74 6F 72 20 73    in the.monitor s
00FDD0:  63 72 65 65 6E 2E 0D 0D 49 66 20 74 68 65 20 70    creen...If the p
00FDE0:  72 6F 67 72 61 6D 6D 65 64 20 76 61 6C 75 65 20    rogrammed value 
00FDF0:  69 73 20 20 69 6E 63 72 65 61 73 65 64 2C 20 20    is  increased,  
00FE00:  74 68 65 20 20 73 63 72 65 65 6E 20 20 77 69 6C    the  screen  wil
00FE10:  6C 20 73 68 69 66 74 20 74 6F 20 74 68 65 0D 6C    l shift to the.l
00FE20:  65 66 74 2C 20 69 66 20 74 68 65 20 70 72 6F 67    eft, if the prog
00FE30:  72 61 6D 6D 65 64 20 76 61 6C 75 65 20 69 73 20    rammed value is 
00FE40:  20 64 65 63 72 65 61 73 65 64 2C 20 20 74 68 65     decreased,  the
00FE50:  20 73 63 72 65 65 6E 20 77 69 6C 6C 20 73 68 69     screen will shi
00FE60:  66 74 20 74 6F 0D 74 68 65 20 72 69 67 68 74 2E    ft to.the right.
00FE70:  0D 0D 53 6F 2C 20 75 73 69 6E 67 20 20 74 68 69    ..So, using  thi
00FE80:  73 20 20 72 65 67 69 73 74 65 72 2C 20 20 74 68    s  register,  th
00FE90:  65 20 20 75 73 65 72 20 20 63 61 6E 20 20 70 75    e  user  can  pu
00FEA0:  74 20 20 74 68 65 20 20 73 63 72 65 65 6E 20 20    t  the  screen  
00FEB0:  74 6F 20 20 61 6E 79 0D 68 6F 72 69 7A 6F 6E 74    to  any.horizont
00FEC0:  61 6C 20 70 6F 73 69 74 69 6F 6E 20 74 68 65 79    al position they
00FED0:  20 77 61 6E 74 2E 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D     want...========
00FEE0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00FEF0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
00FF00:  65 20 73 63 72 65 65 6E 2E 0D 0D 42 69 74 20 35    e screen...Bit 5
00FF10:  20 61 6E 64 20 42 69 74 20 34 20 64 65 74 65 72     and Bit 4 deter
00FF20:  6D 69 6E 65 20 20 77 68 69 63 68 20 20 31 36 6B    mine  which  16k
00FF30:  20 20 62 6C 6F 63 6B 20 74 68 65 20 73 63 72 65      block the scre
00FF40:  65 6E 20 69 73 20 6C 6F 63 61 74 65 64 2C 20 69    en is located, i
00FF50:  6E 0D 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20    n.the following 
00FF60:  77 61 79 3A 0D 0D 42 69 74 20 35 20 20 20 42 69    way:..Bit 5   Bi
00FF70:  74 20 34 20 20 20 4D 65 6D 6F 72 79 20 62 6C 6F    t 4   Memory blo
00FF80:  63 6B 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ck.-------------
00FF90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D    ---------------.
00FFA0:  20 20 30 20 20 20 20 20 20 30 20 20 20 20 20 20      0      0      
00FFB0:  26 30 30 30 30 2D 26 33 46 46 46 0D 20 20 30 20    &0000-&3FFF.  0 
00FFC0:  20 20 20 20 20 31 20 20 20 20 20 20 26 34 30 30         1      &400
00FFD0:  30 2D 26 38 30 30 30 0D 20 20 31 20 20 20 20 20    0-&8000.  1     
00FFE0:  20 30 20 20 20 20 20 20 26 38 30 30 30 2D 26 43     0      &8000-&C
00FFF0:  30 30 30 0D 20 20 31 20 20 20 20 20 20 31 20 20    000.  1      1  
010000:  20 20 20 20 26 43 30 30 30 2D 26 46 46 46 46 0D        &C000-&FFFF.
010010:  0D 49 6E 20 74 68 69 73 20 77 61 79 2C 20 74 68    .In this way, th
010020:  65 20 73 63 72 65 65 6E 20 63 61 6E 20 62 65 20    e screen can be 
010030:  70 6F 73 69 74 69 6F 6E 65 64 20 61 6C 6D 6F 73    positioned almos
010040:  74 20 61 6E 79 77 68 65 72 65 20 69 6E 20 6D 65    t anywhere in me
010050:  6D 6F 72 79 2E 0D 0D 54 68 65 20 73 63 72 65 65    mory...The scree
010060:  6E 20 61 64 64 72 65 73 73 20 69 73 20 6F 6E 6C    n address is onl
010070:  79 20 20 63 68 61 6E 67 65 64 20 20 77 68 65 6E    y  changed  when
010080:  20 20 61 20 20 56 53 59 4E 43 20 6F 63 63 75 72      a  VSYNC occur
010090:  73 2E 20 53 6F 2C 20 69 66 20 79 6F 75 0D 61 74    s. So, if you.at
0100A0:  74 65 6D 70 74 20 74 6F 20 63 68 61 6E 67 65 20    tempt to change 
0100B0:  74 68 65 20 73 63 72 65 65 6E 20 61 64 64 72 65    the screen addre
0100C0:  73 73 2C 20 20 61 73 20 74 68 65 20 65 6C 65 63    ss,  as the elec
0100D0:  74 72 6F 6E 20 62 65 61 6D 20 69 73 20 64 72 61    tron beam is dra
0100E0:  77 69 6E 67 0D 74 68 65 20 73 63 72 65 65 6E 2C    wing.the screen,
0100F0:  20 6F 6E 6C 79 20 6F 6E 65 20 73 63 72 65 65 6E     only one screen
010100:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
010110:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D    ==============..
010120:  52 65 67 69 73 74 65 72 20 35 20 20 2D 20 56 65    Register 5  - Ve
010130:  72 74 69 63 61 6C 20 74 6F 74 61 6C 20 61 64 6A    rtical total adj
010140:  75 73 74 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ust.------------
010150:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
010160:  2D 2D 2D 2D 2D 2D 2D 0D 0D 54 68 69 73 20 72 65    -------..This re
010170:  67 69 73 74 65 72 20 20 61 6C 6C 6F 77 73 20 20    gister  allows  
010180:  74 68 65 20 20 76 65 72 74 69 63 61 6C 20 20 70    the  vertical  p
010190:  6F 73 69 74 69 6F 6E 20 20 6F 66 20 20 74 68 65    osition  of  the
0101A0:  20 20 73 63 72 65 65 6E 20 20 74 6F 20 62 65 0D      screen  to be.
0101B0:  70 6F 73 69 74 69 6F 6E 65 64 20 74 6F 20 61 6E    positioned to an
0101C0:  79 20 20 70 69 78 65 6C 20 20 6F 66 66 73 65 74    y  pixel  offset
0101D0:  20 20 66 72 6F 6D 20 20 74 68 65 20 20 63 75 72      from  the  cur
0101E0:  72 65 6E 74 20 76 65 72 74 69 63 61 6C 20 70 6F    rent vertical po
0101F0:  73 69 74 69 6F 6E 0D 64 65 66 69 6E 65 64 20 69    sition.defined i
010200:  6E 20 72 65 67 69 73 74 65 72 20 37 2E 0D 0D 49    n register 7...I
010210:  66 20 74 68 65 20 76 61 6C 75 65 20 69 73 20 69    f the value is i
010220:  6E 63 72 65 61 73 65 64 2C 20 20 74 68 65 20 20    ncreased,  the  
010230:  70 69 63 74 75 72 65 20 20 77 69 6C 6C 20 20 73    picture  will  s
010240:  68 69 66 74 20 20 64 6F 77 6E 20 62 79 20 61 20    hift  down by a 
010250:  70 69 78 65 6C 0D 6C 69 6E 65 2C 20 69 66 20 69    pixel.line, if i
010260:  74 20 69 73 20 64 65 63 72 65 61 73 65 64 20 74    t is decreased t
010270:  68 65 20 70 69 63 74 75 72 65 20 77 69 6C 6C 20    he picture will 
010280:  73 68 69 66 74 20 75 70 20 62 79 20 6F 6E 65 20    shift up by one 
010290:  70 69 78 65 6C 20 6C 69 6E 65 2E 0D 0D 54 68 69    pixel line...Thi
0102A0:  73 20 72 65 67 69 73 74 65 72 20 75 73 65 64 20    s register used 
0102B0:  69 6E 20 63 6F 6E 6A 75 6E 63 74 69 6F 6E 20 77    in conjunction w
0102C0:  69 74 68 20 72 65 67 69 73 74 65 72 20 31 32 20    ith register 12 
0102D0:  61 6E 64 20 31 33 2C 20 63 61 6E 20 62 65 20 75    and 13, can be u
0102E0:  73 65 64 0D 74 6F 20 67 65 74 20 70 65 72 66 65    sed.to get perfe
0102F0:  63 74 20 70 69 78 65 6C 20 62 79 20 70 69 78 65    ct pixel by pixe
010300:  20 77 69 6C 6C 20 62 65 20 73 68 6F 77 6E 2E 0D     will be shown..
010310:  0D 28 54 6F 20 63 68 61 6E 67 65 20 74 68 65 20    .(To change the 
010320:  73 63 72 65 65 6E 20 61 64 64 72 65 73 73 20 6D    screen address m
010330:  6F 72 65 20 20 74 68 61 6E 20 6F 6E 63 65 20 61    ore  than once a
010340:  20 73 70 65 63 69 61 6C 20 74 65 63 68 6E 69 63     special technic
010350:  20 63 61 6C 6C 65 64 0D 22 72 75 70 74 75 72 65     called."rupture
010360:  22 20 6F 72 20 22 68 61 72 64 77 61 72 65 20 73    " or "hardware s
010370:  70 6C 69 74 74 69 6E 67 22 20 69 73 20 20 6E 65    plitting" is  ne
010380:  65 64 65 64 2E 20 20 54 68 69 73 20 73 70 65 63    eded.  This spec
010390:  69 61 6C 20 65 66 66 65 63 74 20 77 61 73 0D 64    ial effect was.d
0103A0:  65 76 65 6C 6F 70 65 64 20 62 79 20 54 68 65 20    eveloped by The 
0103B0:  4C 6F 67 6F 6E 20 53 79 73 74 65 6D 20 64 65 6D    Logon System dem
0103C0:  6F 20 74 65 61 6D 2E 29 0D 0D 54 68 65 20 43 52    o team.)..The CR
0103D0:  54 43 20 63 61 6E 6E 6F 74 20 61 63 63 65 73 73    TC cannot access
0103E0:  20 20 74 68 65 20 20 65 78 74 72 61 20 20 6D 65      the  extra  me
0103F0:  6D 6F 72 79 2C 20 20 73 6F 20 20 69 74 20 20 77    mory,  so  it  w
010400:  69 6C 6C 20 6F 6E 6C 79 20 64 69 73 70 6C 61 79    ill only display
010410:  0D 73 63 72 65 65 6E 73 20 77 68 69 63 68 20 61    .screens which a
010420:  72 65 20 6C 6F 63 61 74 65 64 20 69 6E 20 6D 65    re located in me
010430:  6D 6F 72 79 20 62 6C 6F 63 6B 73 20 30 2D 33 20    mory blocks 0-3 
010440:  6F 6E 6C 79 2C 20 72 65 67 61 72 64 6C 65 73 73    only, regardless
010450:  20 6F 66 20 61 6E 79 0D 72 61 6D 20 63 6F 6E 66     of any.ram conf
010460:  69 67 75 72 61 74 69 6F 6E 2E 20 28 69 2E 65 2E    iguration. (i.e.
010470:  20 69 74 20 20 77 69 6C 6C 20 20 6F 6E 6C 79 20     it  will  only 
010480:  20 64 69 73 70 6C 61 79 20 20 73 63 72 65 65 6E     display  screen
010490:  73 20 69 6E 20 74 68 65 20 66 69 72 73 74 0D 62    s in the first.b
0104A0:  61 6E 6B 20 6F 66 20 20 36 34 6B 29 2E 20 20 49    ank of  64k).  I
0104B0:  66 20 20 79 6F 75 20 20 63 68 61 6E 67 65 20 20    f  you  change  
0104C0:  74 68 65 20 20 72 61 6D 20 20 63 6F 6E 66 69 67    the  ram  config
0104D0:  75 72 61 74 69 6F 6E 2C 20 20 73 6F 20 20 74 68    uration,  so  th
0104E0:  61 74 20 20 61 0D 64 69 66 66 65 72 65 6E 74 20    at  a.different 
0104F0:  31 36 6B 20 20 62 6C 6F 63 6B 20 20 69 73 20 20    16k  block  is  
010500:  6C 20 76 65 72 74 69 63 61 6C 20 73 63 72 6F 6C    l vertical scrol
010510:  6C 69 6E 67 2E 0D 0D 28 73 65 65 20 70 72 6F 67    ling...(see prog
010520:  72 61 6D 6D 69 6E 67 20 65 78 61 6D 70 6C 65 29    ramming example)
010530:  0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ..==============
010540:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
010550:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
010560:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
010570:  3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 52 65 67 69 73 74    ========..Regist
010580:  65 72 20 36 20 20 2D 20 56 65 72 74 69 63 61 6C    er 6  - Vertical
010590:  20 64 69 73 70 6C 61 79 65 64 0D 2D 2D 2D 2D 2D     displayed.-----
0105A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0105B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 54 68 69    -----------..Thi
0105C0:  73 20 72 65 67 69 73 74 65 72 20 64 65 66 69 6E    s register defin
0105D0:  65 73 20 74 68 65 20 20 68 65 69 67 68 74 20 20    es the  height  
0105E0:  6F 66 20 20 74 68 65 20 20 73 63 72 65 65 6E 20    of  the  screen 
0105F0:  20 69 6E 20 63 68 61 72 61 63 74 65 72 20 73 69     in character si
010600:  7A 65 64 0D 75 6E 69 74 73 2E 0D 0D 49 66 20 74    zed.units...If t
010610:  68 65 20 76 61 6C 75 65 20 70 72 6F 67 72 61 6D    he value program
010620:  6D 65 64 20 69 73 20 20 69 6E 63 72 65 61 73 65    med is  increase
010630:  64 2C 20 20 74 68 65 20 20 68 65 69 67 68 74 20    d,  the  height 
010640:  6F 66 20 74 68 65 20 73 63 72 65 65 6E 20 77 69    of the screen wi
010650:  6C 6C 0D 69 6E 63 72 65 61 73 65 2C 20 69 66 20    ll.increase, if 
010660:  74 68 65 20 76 61 6C 75 65 20 20 70 72 6F 67 72    the value  progr
010670:  61 6D 6D 65 64 20 20 69 73 20 20 64 65 63 72 65    ammed  is  decre
010680:  61 73 65 64 2C 20 20 74 68 65 20 20 68 65 69 67    ased,  the  heig
010690:  68 74 20 6F 66 20 74 68 65 0D 73 63 72 65 65 6E    ht of the.screen
0106A0:  20 77 69 6C 6C 20 64 65 63 72 65 61 73 65 2E 0D     will decrease..
0106B0:  0D 54 68 65 20 6E 6F 72 6D 61 6C 20 76 61 6C 75    .The normal valu
0106C0:  65 20 70 72 6F 67 72 61 6D 6D 65 64 20 69 73 20    e programmed is 
0106D0:  32 35 2E 20 54 68 65 20 68 65 69 67 68 74 20 6F    25. The height o
0106E0:  66 20 74 68 65 20 6D 6F 6E 69 74 6F 72 20 73 63    f the monitor sc
0106F0:  72 65 65 6E 20 69 73 0D 33 35 20 63 68 61 72 61    reen is.35 chara
010700:  73 77 69 74 63 68 65 64 20 20 69 6E 74 6F 20 20    switched  into  
010710:  74 68 65 20 20 61 72 65 61 20 20 77 68 69 63 68    the  area  which
010720:  20 20 68 6F 6C 64 73 20 20 74 68 65 0D 73 63 72      holds  the.scr
010730:  65 65 6E 20 74 68 65 72 65 20 77 69 6C 6C 20 62    een there will b
010740:  65 20 6E 6F 20 65 66 66 65 63 74 20 6F 6E 20 74    e no effect on t
010750:  68 65 20 70 69 63 74 75 72 65 2E 0D 0D 28 73 65    he picture...(se
010760:  65 20 74 68 65 20 64 6F 63 75 6D 65 6E 74 20 6F    e the document o
010770:  6E 20 74 68 65 20 47 61 74 65 20 41 72 72 61 79    n the Gate Array
010780:  20 66 6F 72 20 6D 6F 72 65 20 69 6E 66 6F 72 6D     for more inform
010790:  61 74 69 6F 6E 29 2E 0D 0D 42 69 74 20 33 20 61    ation)...Bit 3 a
0107A0:  6E 64 20 32 20 64 65 74 65 72 6D 69 6E 65 20 68    nd 2 determine h
0107B0:  6F 77 20 6D 75 63 68 20 6D 65 6D 6F 72 79 20 74    ow much memory t
0107C0:  68 65 20 43 52 54 43 20 63 61 6E 20 75 73 65 20    he CRTC can use 
0107D0:  66 6F 72 20 74 68 65 20 73 63 72 65 65 6E 2E 0D    for the screen..
0107E0:  54 68 65 20 43 52 54 43 20 69 73 20 63 61 70 61    The CRTC is capa
0107F0:  62 6C 65 20 6F 66 20 64 69 73 70 6C 61 79 69 6E    ble of displayin
010800:  67 20 31 36 6B 20 6F 72 20 33 32 6B 20 73 63 72    g 16k or 32k scr
010810:  65 65 6E 73 2E 20 42 69 74 73 20 33 20 61 6E 64    eens. Bits 3 and
010820:  20 32 20 61 72 65 0D 64 65 66 69 6E 65 64 20 69     2 are.defined i
010830:  6E 20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 20    n the following 
010840:  77 61 79 3A 0D 0D 42 69 74 20 33 20 20 20 42 69    way:..Bit 3   Bi
010850:  74 20 32 20 20 20 53 63 72 65 65 6E 20 6D 65 6D    t 2   Screen mem
010860:  6F 72 79 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ory.------------
010870:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
010880:  2D 0D 20 20 30 20 20 20 20 20 20 30 20 20 20 20    -.  0      0    
010890:  20 20 31 36 6B 0D 20 20 31 20 20 20 20 20 20 30      16k.  1      0
0108A0:  20 20 20 20 20 20 31 36 6B 0D 20 20 30 20 20 20          16k.  0   
0108B0:  20 20 20 31 20 20 20 20 20 20 31 36 6B 0D 20 20       1      16k.  
0108C0:  31 20 20 20 20 20 20 31 20 20 20 20 20 20 33 32    1      1      32
0108D0:  6B 0D 0D 57 68 65 6E 20 74 68 65 20 43 52 54 43    k..When the CRTC
0108E0:  20 69 73 20 61 63 63 65 73 73 69 6E 67 20 33 32     is accessing 32
0108F0:  6B 2C 20 79 6F 75 20 63 61 6E 20 65 78 70 61 6E    k, you can expan
010900:  63 74 65 72 73 2E 0D 0D 4E 4F 54 45 3A 0D 0D 57    cters...NOTE:..W
010910:  65 20 63 61 6E 20 66 69 6E 64 20 74 68 65 20 68    e can find the h
010920:  65 69 67 68 74 20 6F 66 20 20 74 68 65 20 20 73    eight of  the  s
010930:  63 72 65 65 6E 20 20 69 6E 20 70 69 78 65 6C 20    creen  in pixel 
010940:  6C 69 6E 65 73 2C 20 62 79 20 6D 75 6C 74 69 70    lines, by multip
010950:  6C 79 69 6E 67 0D 74 68 69 73 20 62 79 20 74 68    lying.this by th
010960:  65 20 76 61 6C 75 65 20 69 6E 20 72 65 67 69 73    e value in regis
010970:  74 65 72 20 39 20 70 6C 75 73 20 31 2E 0D 0D 48    ter 9 plus 1...H
010980:  65 69 67 68 74 20 6F 66 20 73 63 72 65 65 6E 20    eight of screen 
010990:  3D 20 72 65 67 69 73 74 65 72 20 36 20 76 61 6C    = register 6 val
0109A0:  75 65 2A 28 72 65 67 69 73 74 65 72 20 39 20 76    ue*(register 9 v
0109B0:  61 6C 75 65 2B 31 29 0D 0D 3D 3D 3D 3D 3D 3D 3D    alue+1)..=======
0109C0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0109D0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0109E0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0109F0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D    ===============.
010A00:  0D 52 65 67 69 73 74 65 72 20 37 20 20 2D 20 56    .Register 7  - V
010A10:  65 72 74 69 63 61 6C 20 73 79 6E 63 20 70 6F 73    ertical sync pos
010A20:  69 74 69 6F 6E 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ition.----------
010A30:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
010A40:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 54 68 69 73    ----------..This
010A50:  20 72 65 67 69 73 74 65 72 20 64 65 66 69 6E 65     register define
010A60:  73 20 74 68 65 20 76 65 72 74 69 63 61 6C 20 20    s the vertical  
010A70:  70 6F 73 69 74 69 6F 6E 20 20 6F 66 20 74 68 65    position  of the
010A80:  20 73 63 72 65 65 6E 20 77 69 74 68 69 6E 20 74     screen within t
010A90:  68 65 0D 6D 6F 6E 69 74 6F 72 20 73 63 72 65 65    he.monitor scree
010AA0:  6E 2E 0D 0D 49 66 20 74 68 65 20 70 72 6F 67 72    n...If the progr
010AB0:  61 6D 6D 65 64 20 76 61 6C 75 65 20 69 73 20 20    ammed value is  
010AC0:  69 6E 63 72 65 61 73 65 64 2C 20 20 74 68 65 20    increased,  the 
010AD0:  73 63 72 65 65 6E 20 77 69 6C 6C 20 73 68 69 66    screen will shif
010AE0:  74 20 75 70 77 61 72 64 73 2C 0D 69 66 20 74 68    t upwards,.if th
010AF0:  65 20 70 72 6F 67 72 61 6D 6D 65 64 20 76 61 6C    e programmed val
010B00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
010B10:  0E 00 01 00 02 09 4E E5 0E 00 C1 02 00 00 00 02    ......N.........
010B20:  0E 00 C6 02 00 00 00 02 0E 00 C2 02 00 00 00 02    ................
010B30:  0E 00 C7 02 00 00 00 02 0E 00 C3 02 00 00 00 02    ................
010B40:  0E 00 C8 02 00 00 00 02 0E 00 C4 02 00 00 00 02    ................
010B50:  0E 00 C9 02 00 00 00 02 0E 00 C5 02 00 00 00 02    ................
010B60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010B90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010BF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
010C00:  64 20 74 68 65 20 73 63 72 65 65 6E 20 73 69 7A    d the screen siz
010C10:  65 20 73 6F 20 74 68 61 74 0D 79 6F 75 20 63 61    e so that.you ca
010C20:  6E 20 68 61 76 65 20 61 20 70 69 63 74 75 72 65    n have a picture
010C30:  20 77 68 69 63 68 20 63 6F 76 65 72 73 20 74 68     which covers th
010C40:  65 20 62 6F 72 64 65 72 73 21 20 28 6F 76 65 72    e borders! (over
010C50:  73 63 61 6E 29 0D 0D 57 68 65 6E 20 33 32 6B 20    scan)..When 32k 
010C60:  20 69 73 20 20 73 65 6C 65 63 74 65 64 2C 20 20     is  selected,  
010C70:  74 68 65 20 20 66 69 72 73 74 20 20 61 6E 64 20    the  first  and 
010C80:  20 73 65 63 6F 6E 64 20 20 73 63 72 65 65 6E 73     second  screens
010C90:  20 20 6F 63 63 75 70 79 20 20 74 68 65 0D 66 6F      occupy  the.fo
010CA0:  6C 6C 6F 77 69 6E 67 20 72 61 6E 67 65 20 6F 66    llowing range of
010CB0:  20 61 64 64 72 65 73 73 65 73 73 3A 0D 0D 46 69     addressess:..Fi
010CC0:  72 73 74 20 73 63 72 65 65 6E 20 20 20 20 53 65    rst screen    Se
010CD0:  63 6F 6E 64 20 73 63 72 65 65 6E 0D 2D 2D 2D 2D    cond screen.----
010CE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
010CF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 26 30 30 30 30 2D    ---------.&0000-
010D00:  26 33 46 46 46 20 20 20 20 20 26 34 30 30 30 2D    &3FFF     &4000-
010D10:  26 37 46 46 46 0D 26 34 30 30 30 2D 26 37 46 46    &7FFF.&4000-&7FF
010D20:  46 20 20 20 20 20 26 38 30 30 30 2D 26 42 46 46    F     &8000-&BFF
010D30:  46 0D 26 38 30 30 30 2D 26 42 46 46 46 20 20 20    F.&8000-&BFFF   
010D40:  20 20 26 43 30 30 30 2D 26 46 46 46 46 0D 26 43      &C000-&FFFF.&C
010D50:  30 30 30 2D 26 46 46 46 46 20 20 20 20 20 26 30    000-&FFFF     &0
010D60:  30 30 30 2D 26 33 46 46 46 0D 0D 28 73 65 65 20    000-&3FFF..(see 
010D70:  74 68 65 20 70 72 6F 67 72 61 6D 6D 69 6E 67 20    the programming 
010D80:  65 78 61 6D 70 6C 65 29 0D 0D 42 69 74 20 31 20    example)..Bit 1 
010D90:  61 6E 64 20 30 20 20 61 72 65 20 20 75 73 65 64    and 0  are  used
010DA0:  20 20 77 69 74 68 20 20 72 65 67 69 73 74 65 72      with  register
010DB0:  20 20 31 33 20 20 74 6F 20 20 64 6F 20 68 61 72      13  to  do har
010DC0:  64 77 61 72 65 20 73 63 72 6F 6C 6C 69 6E 67 2E    dware scrolling.
010DD0:  0D 52 65 67 69 73 74 65 72 20 31 33 20 63 6F 6E    .Register 13 con
010DE0:  74 61 69 6E 73 20 74 68 65 20 6C 6F 77 65 72 20    tains the lower 
010DF0:  38 20 62 69 74 73 20 20 6F 66 20 20 74 68 65 20    8 bits  of  the 
010E00:  4F 76 65 72 73 63 61 6E 2C 0D 3D 3D 3D 3D 3D 3D    Overscan,.======
010E10:  3D 3D 3D 3D 3D 3D 0D 0D 4F 76 65 72 73 63 61 6E    ======..Overscan
010E20:  20 69 73 20 74 68 65 20 65 66 66 65 63 74 20 77     is the effect w
010E30:  68 65 72 65 20 74 68 65 20 73 63 72 65 65 6E 20    here the screen 
010E40:  20 69 73 20 65 78 70 61 6E 64 65 64 20 74 6F 20     is expanded to 
010E50:  66 69 6C 6C 20 74 68 65 20 77 68 6F 6C 65 0D 6D    fill the whole.m
010E60:  6F 6E 69 74 6F 72 20 73 63 72 65 65 6E 2C 20 53    onitor screen, S
010E70:  6F 20 74 68 65 72 65 20 61 72 65 20 6E 6F 20 62    o there are no b
010E80:  6F 72 64 65 72 73 20 72 65 6D 61 69 6E 69 6E 67    orders remaining
010E90:  2E 0D 0D 49 74 20 69 73 20 61 20 20 73 69 6D 70    ...It is a  simp
010EA0:  6C 65 20 20 65 66 66 65 63 74 20 20 74 6F 20 20    le  effect  to  
010EB0:  75 73 65 2C 20 20 62 75 74 20 20 77 6F 72 6B 69    use,  but  worki
010EC0:  6E 67 20 20 6F 75 74 20 73 63 72 65 65 6E 20 61    ng  out screen a
010ED0:  64 64 72 65 73 73 65 73 73 0D 62 65 63 6F 6D 65    ddressess.become
010EE0:  73 20 6D 6F 72 65 20 64 69 66 66 69 63 75 6C 74    s more difficult
010EF0:  2E 20 28 65 73 70 65 63 69 61 6C 6C 79 20 20 77    . (especially  w
010F00:  68 65 72 65 20 20 74 68 65 20 20 66 69 72 73 74    here  the  first
010F10:  20 73 63 72 65 65 6E 20 65 6E 64 73 20 61 6E 64     screen ends and
010F20:  0D 74 68 65 20 73 65 63 6F 6E 64 20 73 63 72 65    .the second scre
010F30:  65 6E 20 73 74 61 72 74 73 29 2E 0D 0D 54 6F 20    en starts)...To 
010F40:  65 78 70 61 6E 64 20 74 68 65 20 73 63 72 65 65    expand the scree
010F50:  6E 2C 20 77 65 20 20 75 73 65 20 20 72 65 67 69    n, we  use  regi
010F60:  73 74 65 72 73 20 20 31 2C 20 20 36 2C 20 20 32    sters  1,  6,  2
010F70:  20 20 61 6E 64 20 37 2E 20 52 65 67 69 73 74 65      and 7. Registe
010F80:  72 20 31 0D 69 73 20 75 73 65 64 20 74 6F 20 73    r 1.is used to s
010F90:  65 74 20 74 68 65 20 77 69 64 74 68 20 6F 66 20    et the width of 
010FA0:  20 74 68 65 20 20 73 63 72 65 65 6E 2C 20 72 65     the  screen, re
010FB0:  67 69 73 74 65 72 20 36 20 74 68 65 20 68 65 69    gister 6 the hei
010FC0:  67 68 74 20 6F 66 20 74 68 65 0D 73 63 72 65 65    ght of the.scree
010FD0:  6E 2C 20 72 65 67 69 73 74 65 72 20 32 20 74 68    n, register 2 th
010FE0:  65 20 68 6F 72 69 7A 6F 6E 74 61 6C 20 70 6F 73    e horizontal pos
010FF0:  69 74 69 6F 6E 20 20 6F 66 20 74 68 65 20 73 63    ition  of the sc
011000:  20 6F 66 66 73 65 74 20 61 6E 64 20 62 69 74 20     offset and bit 
011010:  31 20 61 6E 64 20 30 0D 63 6F 6E 74 61 69 6E 20    1 and 0.contain 
011020:  74 68 65 20 75 70 70 65 72 20 32 20 62 69 74 73    the upper 2 bits
011030:  20 20 6F 66 20 20 74 68 65 20 20 6F 66 66 73 65      of  the  offse
011040:  74 2E 20 20 54 68 65 20 20 6F 66 66 73 65 74 20    t.  The  offset 
011050:  69 73 20 31 30 20 62 69 74 73 20 61 6E 64 0D 64    is 10 bits and.d
011060:  65 66 69 6E 65 73 20 74 68 65 20 70 6F 73 69 74    efines the posit
011070:  69 6F 6E 20 6F 66 20 74 68 65 20 73 63 72 65 65    ion of the scree
011080:  6E 20 20 77 69 74 68 69 6E 20 20 74 68 65 20 31    n  within  the 1
011090:  36 6B 20 62 6C 6F 63 6B 20 73 70 65 63 69 66 69    6k block specifi
0110A0:  65 64 20 69 6E 0D 62 69 74 73 20 35 20 61 6E 64    ed in.bits 5 and
0110B0:  20 34 2E 0D 0D 53 6F 2C 20 62 79 20 63 68 61 6E     4...So, by chan
0110C0:  67 69 6E 67 20 74 68 65 20 76 61 6C 75 65 20 63    ging the value c
0110D0:  6F 6E 74 61 69 6E 65 64 20 69 6E 20 20 72 65 67    ontained in  reg
0110E0:  69 73 74 65 72 20 20 31 33 2C 20 61 6E 64 20 62    ister  13, and b
0110F0:  69 74 73 20 31 20 61 6E 64 20 30 0D 6F 66 20 72    its 1 and 0.of r
011100:  65 67 69 73 74 65 72 20 31 32 2C 20 74 68 65 20    egister 12, the 
011110:  20 73 63 72 65 65 6E 20 20 63 61 6E 20 20 62 65     screen  can  be
011120:  20 20 73 63 72 6F 6C 6C 65 64 2E 20 20 54 68 69      scrolled.  Thi
011130:  73 20 65 66 66 65 63 74 20 69 73 20 63 61 6C 6C    s effect is call
011140:  65 64 0D 68 61 72 64 77 61 72 65 20 73 63 72 6F    ed.hardware scro
011150:  6C 6C 69 6E 67 2E 20 28 73 65 65 20 70 72 6F 67    lling. (see prog
011160:  72 61 6D 6D 69 6E 67 20 65 78 61 6D 70 6C 65 29    ramming example)
011170:  0D 0D 53 75 6D 6D 61 72 79 3A 0D 0D 42 69 74 20    ..Summary:..Bit 
011180:  37 3A 20 4E 6F 74 20 75 73 65 64 2E 0D 42 69 74    7: Not used..Bit
011190:  20 36 3A 20 4E 6F 74 20 75 73 65 64 2E 0D 0D 42     6: Not used...B
0111A0:  69 74 20 35 3A 20 7D 20 4D 65 6D 6F 72 79 20 62    it 5: } Memory b
0111B0:  6C 6F 63 6B 20 6F 66 20 73 74 61 72 74 20 6F 66    lock of start of
0111C0:  20 73 63 72 65 65 6E 0D 42 69 74 20 34 3A 20 7D     screen.Bit 4: }
0111D0:  0D 0D 42 69 74 20 33 3A 20 7D 20 53 63 72 65 65    ..Bit 3: } Scree
0111E0:  6E 20 6D 65 6D 6F 72 79 0D 42 69 74 20 32 3A 20    n memory.Bit 2: 
0111F0:  7D 0D 0D 42 69 74 20 31 3A 20 7D 20 4F 66 66 73    }..Bit 1: } Offs
011200:  72 65 65 6E 20 61 6E 64 20 72 65 67 69 73 74 65    reen and registe
011210:  72 0D 37 2C 20 74 68 65 20 76 65 72 74 69 63 61    r.7, the vertica
011220:  6C 20 70 6F 73 69 74 69 6F 6E 20 6F 66 20 74 68    l position of th
011230:  65 20 73 63 72 65 65 6E 2E 0D 0D 57 68 65 6E 20    e screen...When 
011240:  74 68 69 73 20 69 73 20 64 6F 6E 65 2C 20 77 65    this is done, we
011250:  20 20 63 61 6E 20 20 73 65 65 20 20 74 68 61 74      can  see  that
011260:  20 20 70 61 72 74 73 20 20 6F 66 20 74 68 65 20      parts  of the 
011270:  73 63 72 65 65 6E 20 72 65 70 65 61 74 2E 20 54    screen repeat. T
011280:  6F 0D 6F 76 65 72 63 6F 6D 65 20 74 68 69 73 2C    o.overcome this,
011290:  20 77 65 20 74 65 6C 6C 20 74 68 65 20 43 52 54     we tell the CRT
0112A0:  43 20 74 6F 20 20 75 73 65 20 20 33 32 6B 20 69    C to  use  32k i
0112B0:  6E 73 74 65 61 64 20 6F 66 20 31 36 6B 2E 0D 0D    nstead of 16k...
0112C0:  4E 4F 54 45 3A 20 4F 6E 20 20 73 6F 6D 65 20 20    NOTE: On  some  
0112D0:  43 52 54 43 20 20 74 79 70 65 73 2C 20 20 74 68    CRTC  types,  th
0112E0:  65 20 20 73 63 72 65 65 6E 20 20 77 69 64 74 68    e  screen  width
0112F0:  20 20 6D 75 73 74 20 20 6E 6F 74 20 20 65 78 63      must  not  exc
011300:  65 65 64 20 34 38 0D 20 20 20 20 20 20 63 68 61    eed 48.      cha
011310:  72 61 63 74 65 72 73 20 20 6F 74 68 65 72 77 69    racters  otherwi
011320:  73 65 20 20 69 74 20 20 77 69 6C 6C 20 20 20 6E    se  it  will   n
011330:  6F 74 20 20 20 77 6F 72 6B 2E 20 20 20 53 6F 20    ot   work.   So 
011340:  20 74 6F 20 20 6D 61 69 6E 74 61 69 6E 0D 20 20     to  maintain.  
011350:  20 20 20 20 63 6F 6D 70 61 74 69 62 69 6C 69 74        compatibilit
011360:  79 20 6B 65 65 70 20 74 68 65 20 77 69 64 74 68    y keep the width
011370:  20 6F 66 20 74 68 65 20 73 63 72 65 65 6E 20 62     of the screen b
011380:  65 6C 6F 77 20 34 38 2E 0D 20 20 20 20 20 20 28    elow 48..      (
011390:  41 70 6C 69 65 73 20 74 6F 20 43 52 54 43 20 74    Aplies to CRTC t
0113A0:  79 70 65 20 32 29 2E 0D 0D 54 68 65 20 63 6F 64    ype 2)...The cod
0113B0:  65 20 66 6F 72 20 6F 76 65 72 73 63 61 6E 20 69    e for overscan i
0113C0:  73 2E 0D 0D 3B 3B 20 2A 2A 2A 2A 20 73 65 74 20    s...;; **** set 
0113D0:  77 69 64 74 68 20 6F 66 20 73 63 72 65 65 6E 20    width of screen 
0113E0:  2A 2A 2A 2A 0D 0D 6C 64 20 62 63 2C 26 62 63 30    ****..ld bc,&bc0
0113F0:  30 2B 31 0D 6F 75 74 20 28 63 29 2C 63 0D 6C 64    0+1.out (c),c.ld
011400:  65 74 20 28 75 70 70 65 72 20 32 20 62 69 74 73    et (upper 2 bits
011410:  20 6F 66 20 6F 66 66 73 65 74 20 76 61 6C 75 65     of offset value
011420:  20 2D 20 6C 6F 77 65 72 20 38 20 62 69 74 73 20     - lower 8 bits 
011430:  64 65 66 69 6E 65 64 0D 42 69 74 20 30 3A 20 7D    defined.Bit 0: }
011440:  20 20 20 20 20 20 20 20 62 79 20 72 65 67 69 73            by regis
011450:  74 65 72 20 31 33 29 2E 0D 0D 3D 3D 3D 3D 3D 3D    ter 13)...======
011460:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011470:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011480:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011490:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0114A0:  0D 0D 52 65 67 69 73 74 65 72 20 31 33 20 2D 20    ..Register 13 - 
0114B0:  53 74 61 72 74 20 41 64 64 72 65 73 73 20 28 4C    Start Address (L
0114C0:  6F 77 29 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ow).------------
0114D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0114E0:  2D 2D 2D 2D 2D 0D 0D 54 68 69 73 20 72 65 67 69    -----..This regi
0114F0:  73 74 65 72 20 64 65 66 69 6E 65 73 20 20 74 68    ster defines  th
011500:  65 20 20 6C 6F 77 65 72 20 20 38 20 20 62 69 74    e  lower  8  bit
011510:  73 20 20 6F 66 20 20 74 68 65 20 20 6F 66 66 73    s  of  the  offs
011520:  65 74 20 77 69 74 68 69 6E 20 74 68 65 0D 73 65    et within the.se
011530:  6C 65 63 74 65 64 20 31 36 6B 20 62 6C 6F 63 6B    lected 16k block
011540:  2E 20 54 68 69 73 20 72 65 67 69 73 74 65 72 20    . This register 
011550:  69 73 20 75 73 65 64 20 69 6E 20 63 6F 6E 6A 75    is used in conju
011560:  6E 63 74 69 6F 6E 20 77 69 74 68 20 72 65 67 69    nction with regi
011570:  73 74 65 72 0D 31 32 20 74 6F 20 70 65 72 66 6F    ster.12 to perfo
011580:  72 6D 20 68 61 72 64 77 61 72 65 20 73 63 72 6F    rm hardware scro
011590:  6C 6C 69 6E 67 2E 0D 0D 28 73 65 65 20 70 72 6F    lling...(see pro
0115A0:  67 72 61 6D 6D 69 6E 67 20 65 78 61 6D 70 6C 65    gramming example
0115B0:  29 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    )..=============
0115C0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0115D0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0115E0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0115F0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 50 72 6F 67 72    =========..Progr
011600:  20 62 63 2C 26 62 64 30 30 2B 34 38 20 20 20 20     bc,&bd00+48    
011610:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 34                  ;4
011620:  38 20 63 68 61 72 61 63 74 65 72 73 20 77 69 64    8 characters wid
011630:  65 0D 6F 75 74 20 28 63 29 2C 63 0D 0D 3B 3B 20    e.out (c),c..;; 
011640:  2A 2A 2A 2A 20 73 65 74 20 68 65 69 67 68 74 20    **** set height 
011650:  6F 66 20 73 63 72 65 65 6E 20 2A 2A 2A 2A 0D 0D    of screen ****..
011660:  6C 64 20 62 63 2C 26 62 63 30 30 2B 36 0D 6F 75    ld bc,&bc00+6.ou
011670:  74 20 28 63 29 2C 63 0D 6C 64 20 62 63 2C 26 62    t (c),c.ld bc,&b
011680:  64 30 30 2B 33 35 20 20 20 20 20 20 20 20 20 20    d00+35          
011690:  20 20 20 20 20 20 20 20 3B 33 35 20 63 68 61 72            ;35 char
0116A0:  61 63 74 65 72 73 20 74 61 6C 6C 0D 6F 75 74 20    acters tall.out 
0116B0:  28 63 29 2C 63 0D 0D 3B 3B 20 2A 2A 2A 2A 20 73    (c),c..;; **** s
0116C0:  65 74 20 68 6F 72 69 7A 6F 6E 74 61 6C 20 70 6F    et horizontal po
0116D0:  73 69 74 69 6F 6E 20 6F 66 20 73 63 72 65 65 6E    sition of screen
0116E0:  20 74 6F 20 6C 65 66 74 68 61 6E 64 20 73 69 64     to lefthand sid
0116F0:  65 20 2A 2A 2A 2A 0D 0D 6C 64 20 62 63 2C 26 62    e ****..ld bc,&b
011700:  63 30 30 2B 32 0D 6F 75 74 20 28 63 29 2C 63 0D    c00+2.out (c),c.
011710:  6C 64 20 62 63 2C 26 62 64 30 30 2B 35 30 20 20    ld bc,&bd00+50  
011720:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
011730:  3B 6C 65 66 74 6D 6F 73 74 20 65 64 67 65 20 6F    ;leftmost edge o
011740:  66 20 73 63 72 65 65 6E 0D 6F 75 74 20 28 63 29    f screen.out (c)
011750:  2C 63 0D 0D 3B 3B 20 2A 2A 2A 2A 20 73 65 74 20    ,c..;; **** set 
011760:  76 65 72 74 69 63 61 6C 20 70 6F 73 69 74 69 6F    vertical positio
011770:  6E 20 6F 66 20 73 63 72 65 65 6E 20 74 6F 20 74    n of screen to t
011780:  6F 70 20 2A 2A 2A 2A 0D 0D 6C 64 20 62 63 2C 26    op ****..ld bc,&
011790:  62 63 30 30 2B 37 0D 6F 75 74 20 28 63 29 2C 63    bc00+7.out (c),c
0117A0:  0D 6C 64 20 62 63 2C 26 62 64 30 30 2B 33 35 20    .ld bc,&bd00+35 
0117B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0117C0:  20 3B 74 6F 70 6D 6F 73 74 20 70 6F 73 69 74 69     ;topmost positi
0117D0:  6F 6E 20 6F 66 20 73 63 72 65 65 6E 0D 6F 75 74    on of screen.out
0117E0:  20 28 63 29 2C 63 0D 0D 3B 3B 20 2A 2A 2A 2A 20     (c),c..;; **** 
0117F0:  74 65 6C 6C 20 74 68 65 20 43 52 54 43 20 74 6F    tell the CRTC to
011800:  61 6D 6D 69 6E 67 20 65 78 61 6D 70 6C 65 73 0D    amming examples.
011810:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
011820:  2D 2D 2D 2D 0D 0D 61 29 20 50 72 6F 67 72 61 6D    ----..a) Program
011830:  6D 69 6E 67 20 74 68 65 20 43 52 54 43 2C 0D 3D    ming the CRTC,.=
011840:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011850:  3D 3D 3D 3D 3D 3D 3D 0D 0D 31 29 20 53 65 6C 65    =======..1) Sele
011860:  63 74 69 6E 67 20 61 20 43 52 54 43 20 72 65 67    cting a CRTC reg
011870:  69 73 74 65 72 2C 0D 20 20 20 2D 2D 2D 2D 2D 2D    ister,.   ------
011880:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
011890:  2D 2D 2D 0D 0D 6C 64 20 62 63 2C 26 62 63 30 30    ---..ld bc,&bc00
0118A0:  2B 78 78 0D 6F 75 74 20 28 63 29 2C 63 0D 0D 57    +xx.out (c),c..W
0118B0:  68 65 72 65 20 78 78 20 69 73 20 74 68 65 20 72    here xx is the r
0118C0:  65 67 69 73 74 65 72 20 6E 75 6D 62 65 72 20 72    egister number r
0118D0:  65 71 75 69 72 65 64 2E 0D 0D 65 2E 67 2E 0D 0D    equired...e.g...
0118E0:  54 6F 20 73 65 6C 65 63 74 20 72 65 67 69 73 74    To select regist
0118F0:  65 72 20 31 32 2C 0D 0D 6C 64 20 62 63 2C 26 62    er 12,..ld bc,&b
011900:  63 30 30 2B 31 32 0D 6F 75 74 20 28 63 29 2C 63    c00+12.out (c),c
011910:  0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ..==============
011920:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011930:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011940:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011950:  3D 3D 3D 3D 3D 3D 3D 0D 0D 32 29 20 57 72 69 74    =======..2) Writ
011960:  69 6E 67 20 74 6F 20 61 20 43 52 54 43 20 72 65    ing to a CRTC re
011970:  67 69 73 74 65 72 2C 0D 20 20 20 2D 2D 2D 2D 2D    gister,.   -----
011980:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
011990:  2D 2D 2D 2D 2D 0D 0D 4C 44 20 62 63 2C 26 62 64    -----..LD bc,&bd
0119A0:  30 30 2B 78 78 0D 6F 75 74 20 28 63 29 2C 63 0D    00+xx.out (c),c.
0119B0:  0D 77 68 65 72 65 20 78 78 20 69 73 20 74 68 65    .where xx is the
0119C0:  20 64 61 74 61 20 74 6F 20 62 65 20 70 75 74 20     data to be put 
0119D0:  69 6E 74 6F 20 74 68 65 20 63 75 72 72 65 6E 74    into the current
0119E0:  6C 79 20 73 65 6C 65 63 74 65 64 20 72 65 67 69    ly selected regi
0119F0:  73 74 65 72 2E 0D 0D 65 2E 67 2E 0D 0D 54 6F 20    ster...e.g...To 
011A00:  20 75 73 65 20 33 32 6B 20 66 6F 72 20 73 63 72     use 32k for scr
011A10:  65 65 6E 20 64 69 73 70 6C 61 79 20 20 20 20 20    een display     
011A20:  20 20 20 20 2A 2A 2A 2A 0D 3B 3B 20 2A 2A 2A 2A        ****.;; ****
011A30:  20 28 61 6C 73 6F 20 64 65 66 69 6E 65 20 73 63     (also define sc
011A40:  72 65 65 6E 20 6D 65 6D 6F 72 79 20 72 61 6E 67    reen memory rang
011A50:  65 20 74 6F 20 62 65 20 26 63 30 30 30 2D 26 66    e to be &c000-&f
011A60:  66 66 66 29 20 2A 2A 2A 2A 0D 3B 3B 20 2A 2A 2A    fff) ****.;; ***
011A70:  2A 20 67 69 76 69 6E 67 20 75 73 20 74 68 65 20    * giving us the 
011A80:  73 63 72 65 65 6E 20 6D 65 6D 6F 72 79 20 74 61    screen memory ta
011A90:  6B 69 6E 67 20 75 70 20 26 43 30 30 30 2D 26 33    king up &C000-&3
011AA0:  46 46 46 20 20 20 2A 2A 2A 2A 0D 0D 6C 64 20 62    FFF   ****..ld b
011AB0:  63 2C 26 62 63 30 30 2B 31 32 0D 6F 75 74 20 28    c,&bc00+12.out (
011AC0:  63 29 2C 63 0D 0D 6C 64 20 62 63 2C 26 62 64 30    c),c..ld bc,&bd0
011AD0:  30 2B 25 30 30 31 31 31 31 30 30 0D 6F 75 74 20    0+%00111100.out 
011AE0:  28 63 29 2C 63 0D 0D 53 6F 20 6E 6F 77 2C 20 79    (c),c..So now, y
011AF0:  6F 75 20 73 68 6F 75 6C 64 20 68 61 76 65 20 20    ou should have  
011B00:  61 20 20 6C 61 72 67 65 20 20 73 63 72 65 65 6E    a  large  screen
011B10:  20 20 63 6F 76 65 72 69 6E 67 20 74 68 65 20 62      covering the b
011B20:  6F 72 64 65 72 73 2E 20 49 74 20 69 73 0D 6A 75    orders. It is.ju
011B30:  73 74 20 61 20 6D 61 74 74 65 72 20 6F 66 20 70    st a matter of p
011B40:  6C 6F 74 74 69 6E 67 20 67 72 61 70 68 69 63 73    lotting graphics
011B50:  20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E 2E 0D     on the screen..
011B60:  0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    .===============
011B70:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011B80:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011B90:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011BA0:  3D 3D 3D 3D 3D 3D 3D 0D 0D 63 29 20 48 61 72 64    =======..c) Hard
011BB0:  77 61 72 65 20 73 63 72 6F 6C 6C 69 6E 67 0D 3D    ware scrolling.=
011BC0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011BD0:  3D 3D 3D 3D 0D 0D 48 61 72 64 77 61 72 65 20 73    ====..Hardware s
011BE0:  63 72 6F 6C 6C 69 6E 67 20 69 73 20 20 61 63 68    crolling is  ach
011BF0:  69 65 76 65 64 20 20 62 79 20 20 75 73 69 6E 67    ieved  by  using
011C00:  70 75 74 20 31 32 38 20 69 6E 74 6F 20 72 65 67    put 128 into reg
011C10:  69 73 74 65 72 20 31 32 2C 0D 0D 3B 3B 20 73 65    ister 12,..;; se
011C20:  6C 65 63 74 20 43 52 54 43 20 72 65 67 69 73 74    lect CRTC regist
011C30:  65 72 20 31 32 0D 0D 6C 64 20 62 63 2C 26 62 63    er 12..ld bc,&bc
011C40:  30 30 2B 31 32 0D 6F 75 74 20 28 63 29 2C 63 0D    00+12.out (c),c.
011C50:  0D 3B 3B 20 77 72 69 74 65 20 74 6F 20 72 65 67    .;; write to reg
011C60:  69 73 74 65 72 20 31 32 0D 0D 6C 64 20 62 63 2C    ister 12..ld bc,
011C70:  26 62 64 30 30 2B 31 32 38 0D 6F 75 74 20 28 63    &bd00+128.out (c
011C80:  29 2C 63 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ),c..===========
011C90:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011CA0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011CB0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011CC0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 33 29 20    ===========..3) 
011CD0:  52 65 61 64 69 6E 67 20 66 72 6F 6D 20 61 20 43    Reading from a C
011CE0:  52 54 43 20 72 65 67 69 73 74 65 72 2C 0D 0D 6C    RTC register,..l
011CF0:  64 20 62 63 2C 26 62 66 30 30 0D 69 6E 20 61 2C    d bc,&bf00.in a,
011D00:  28 63 29 0D 0D 77 68 65 72 65 2C 20 74 68 65 20    (c)..where, the 
011D10:  64 61 74 61 20 69 6E 20 74 68 65 20 72 65 67 69    data in the regi
011D20:  73 74 65 72 20 77 6F 75 6C 64 20 62 65 20 72 65    ster would be re
011D30:  74 75 72 6E 65 64 20 69 6E 20 72 65 67 69 73 74    turned in regist
011D40:  65 72 20 41 0D 0D 65 2E 67 2E 0D 0D 3B 3B 20 73    er A..e.g...;; s
011D50:  65 6C 65 63 74 20 43 52 54 43 20 72 65 67 69 73    elect CRTC regis
011D60:  74 65 72 20 31 32 0D 0D 6C 64 20 62 63 2C 26 62    ter 12..ld bc,&b
011D70:  63 30 30 2B 31 32 0D 6F 75 74 20 28 63 29 2C 63    c00+12.out (c),c
011D80:  0D 0D 3B 3B 20 72 65 61 64 20 64 61 74 61 20 69    ..;; read data i
011D90:  6E 20 72 65 67 69 73 74 65 72 20 31 32 0D 0D 6C    n register 12..l
011DA0:  64 20 62 63 2C 26 62 66 30 30 0D 69 6E 20 61 2C    d bc,&bf00.in a,
011DB0:  28 63 29 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    (c)..===========
011DC0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011DD0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011DE0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
011DF0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 62 29 20    ===========..b) 
011E00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
011E10:  0F 00 01 00 02 09 4E E5 0F 00 C1 02 00 00 00 02    ......N.........
011E20:  0F 00 C6 02 00 00 00 02 0F 00 C2 02 00 00 00 02    ................
011E30:  0F 00 C7 02 00 00 00 02 0F 00 C3 02 00 00 00 02    ................
011E40:  0F 00 C8 02 00 00 00 02 0F 00 C4 02 00 00 00 02    ................
011E50:  0F 00 C9 02 00 00 00 02 0F 00 C5 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 72 65 67 69 73 74 65 72 73 20 20 31 32 20      registers  12 
011F10:  20 61 6E 64 20 31 33 2E 20 54 68 65 0D 65 66 66     and 13. The.eff
011F20:  65 63 74 20 77 6F 72 6B 73 20 62 79 20 63 68 61    ect works by cha
011F30:  6E 67 69 6E 67 20 74 68 65 20 73 74 61 72 74 20    nging the start 
011F40:  61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 73    address of the s
011F50:  63 72 65 65 6E 2E 20 28 54 68 65 72 65 20 69 73    creen. (There is
011F60:  20 6E 6F 0D 73 68 69 66 74 69 6E 67 20 6F 72 20     no.shifting or 
011F70:  6D 6F 76 69 6E 67 20 6F 66 20 64 61 74 61 29 2E    moving of data).
011F80:  0D 0D 42 79 20 64 6F 69 6E 67 20 74 68 69 73 20    ..By doing this 
011F90:  77 65 20 63 61 6E 20 6D 61 6B 65 20 69 74 20 6C    we can make it l
011FA0:  6F 6F 6B 20 6C 69 6B 65 20 74 68 65 20 73 63 72    ook like the scr
011FB0:  65 65 6E 20 69 73 20 73 63 72 6F 6C 6C 69 6E 67    een is scrolling
011FC0:  2E 0D 0D 49 74 20 69 73 20 69 6D 70 6F 72 74 61    ...It is importa
011FD0:  6E 74 20 74 6F 20 6E 6F 74 65 2C 20 74 68 61 74    nt to note, that
011FE0:  20 6F 6E 6C 79 20 61 20 31 36 6B 20 73 63 72 65     only a 16k scre
011FF0:  65 6E 20 63 61 6E 20 62 65 20 66 75 6C 6C 79 20    en can be fully 
012000:  73 63 72 6F 6C 6C 65 64 2E 0D 49 66 20 61 20 33    scrolled..If a 3
012010:  32 6B 20 73 63 72 65 65 6E 20 69 73 20 20 73 63    2k screen is  sc
012020:  72 6F 6C 6C 65 64 20 20 74 6F 6F 20 20 6D 75 63    rolled  too  muc
012030:  68 2C 20 20 69 74 20 20 73 70 6C 69 74 73 20 69    h,  it  splits i
012040:  6E 74 6F 20 61 20 31 36 6B 20 73 63 72 65 65 6E    nto a 16k screen
012050:  0D 77 68 69 63 68 20 72 65 70 65 61 74 73 2E 0D    .which repeats..
012060:  0D 54 68 65 20 73 63 72 65 65 6E 20 69 73 20 73    .The screen is s
012070:  63 72 6F 6C 6C 65 64 20 69 6E 20 20 63 68 61 72    crolled in  char
012080:  61 63 74 65 72 20 20 73 69 7A 65 64 20 63 68 75    acter  sized chu
012090:  6E 6B 73 2E 20 54 68 69 73 20 70 72 6F 64 75 63    nks. This produc
0120A0:  65 73 20 76 65 72 79 0D 66 61 73 74 20 20 73 6D    es very.fast  sm
0120B0:  6F 6F 74 68 20 20 68 61 72 64 77 61 72 65 20 20    ooth  hardware  
0120C0:  73 63 72 6F 6C 6C 69 6E 67 2E 20 20 48 6F 77 65    scrolling.  Howe
0120D0:  76 65 72 20 20 69 74 20 20 69 73 20 20 6F 66 74    ver  it  is  oft
0120E0:  65 6E 20 20 74 6F 6F 20 20 66 61 73 74 2E 0D 54    en  too  fast..T
0120F0:  68 65 72 65 66 6F 72 65 2C 20 69 74 20 69 73 20    herefore, it is 
012100:  63 72 6F 6C 6C 5F 72 69 67 68 74 0D 6C 64 20 68    croll_right.ld h
012110:  6C 2C 28 73 63 72 6F 6C 6C 5F 6F 66 66 73 65 74    l,(scroll_offset
012120:  29 0D 69 6E 63 20 68 6C 20 20 20 20 20 20 20 20    ).inc hl        
012130:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
012140:  20 20 3B 61 64 64 20 31 0D 6C 64 20 61 2C 68 0D      ;add 1.ld a,h.
012150:  61 6E 64 20 26 30 33 20 20 20 20 20 20 20 20 20    and &03         
012160:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
012170:  3B 65 6E 73 75 72 65 20 73 63 72 6F 6C 6C 5F 6F    ;ensure scroll_o
012180:  66 66 73 65 74 20 69 73 20 69 6E 20 72 61 6E 67    ffset is in rang
012190:  65 0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20    e.              
0121A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0121B0:  20 20 3B 26 30 30 30 30 2D 26 30 33 66 66 0D 6C      ;&0000-&03ff.l
0121C0:  64 20 68 2C 61 0D 6C 64 20 28 73 63 72 6F 6C 6C    d h,a.ld (scroll
0121D0:  5F 6F 66 66 73 65 74 29 2C 68 6C 0D 72 65 74 0D    _offset),hl.ret.
0121E0:  0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    .===============
0121F0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
012200:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
012210:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
012220:  3D 3D 3D 3D 3D 3D 3D 0D 0D 53 63 72 6F 6C 6C 20    =======..Scroll 
012230:  74 68 65 20 73 63 72 65 65 6E 20 74 6F 20 74 68    the screen to th
012240:  65 20 6C 65 66 74 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D    e left.---------
012250:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
012260:  2D 2D 2D 2D 0D 0D 2E 73 63 72 6F 6C 6C 5F 6C 65    ----...scroll_le
012270:  66 74 0D 0D 6C 64 20 68 6C 2C 28 73 63 72 6F 6C    ft..ld hl,(scrol
012280:  6C 5F 6F 66 66 73 65 74 29 0D 64 65 63 20 68 6C    l_offset).dec hl
012290:  0D 0D 6C 64 20 61 2C 68 0D 61 6E 64 20 26 30 33    ..ld a,h.and &03
0122A0:  0D 6C 64 20 68 2C 61 0D 0D 6C 64 20 28 73 63 72    .ld h,a..ld (scr
0122B0:  6F 6C 6C 5F 6F 66 66 73 65 74 29 2C 68 6C 0D 72    oll_offset),hl.r
0122C0:  65 74 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    et..============
0122D0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0122E0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0122F0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
012300:  70 6F 73 73 69 62 6C 65 20 74 6F 20 20 68 61 76    possible to  hav
012310:  65 20 20 73 6C 6F 77 65 72 20 68 61 72 64 77 61    e  slower hardwa
012320:  72 65 20 73 63 72 6F 6C 6C 69 6E 67 20 62 79 20    re scrolling by 
012330:  75 73 69 6E 67 0D 72 65 67 69 73 74 65 72 20 33    using.register 3
012340:  20 66 6F 72 20 20 73 6D 6F 6F 74 68 65 72 20 20     for  smoother  
012350:  68 6F 72 69 7A 6F 6E 74 61 6C 20 20 73 63 72 6F    horizontal  scro
012360:  6C 6C 69 6E 67 2C 20 20 61 6E 64 20 20 72 65 67    lling,  and  reg
012370:  69 73 74 65 72 20 20 35 20 66 6F 72 0D 73 6D 6F    ister  5 for.smo
012380:  6F 74 68 65 72 20 76 65 72 74 69 63 61 6C 20 73    other vertical s
012390:  63 72 6F 6C 6C 69 6E 67 2E 0D 0D 49 74 20 69 73    crolling...It is
0123A0:  20 69 6D 70 6F 72 74 61 6E 74 20 74 6F 20 6E 6F     important to no
0123B0:  74 65 20 74 68 61 74 20 77 68 65 6E 20 74 68 65    te that when the
0123C0:  20 73 63 72 65 65 6E 20 69 73 20 68 61 72 64 77     screen is hardw
0123D0:  61 72 65 20 73 63 72 6F 6C 6C 65 64 2C 20 61 6C    are scrolled, al
0123E0:  6C 0D 73 70 72 69 74 65 73 20 70 6C 6F 74 74 65    l.sprites plotte
0123F0:  64 20 6F 6E 20 20 69 74 20 20 77 69 6C 6C 20 20    d on  it  will  
012400:  62 65 20 20 73 63 72 6F 6C 6C 65 64 20 20 61 6C    be  scrolled  al
012410:  73 6F 2E 20 20 53 6F 20 20 74 68 65 20 70 6F 73    so.  So  the pos
012420:  69 74 69 6F 6E 20 6F 66 0D 73 70 72 69 74 65 73    ition of.sprites
012430:  20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E 20 6D     on the screen m
012440:  75 73 74 20 62 65 20 20 75 70 64 61 74 65 64 2C    ust be  updated,
012450:  20 20 74 68 65 20 73 63 72 65 65 6E 20 73 63 72      the screen scr
012460:  6F 6C 6C 65 64 2C 20 61 6E 64 20 74 68 65 6E 0D    olled, and then.
012470:  72 65 70 6C 6F 74 74 65 64 2E 0D 0D 0D 2A 2A 2A    replotted....***
012480:  2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A    ****************
012490:  2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A    ****************
0124A0:  2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A    ****************
0124B0:  2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A 2A    ****************
0124C0:  2A 2A 0D 0D 53 63 72 6F 6C 6C 69 6E 67 20 74 68    **..Scrolling th
0124D0:  65 20 73 63 72 65 65 6E 0D 2D 2D 2D 2D 2D 2D 2D    e screen.-------
0124E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 54    -------------..T
0124F0:  68 65 20 6F 66 66 73 65 74 20 69 73 20 63 6F 6E    he offset is con
012500:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 53 63 72 6F    ==========..Scro
012510:  6C 6C 20 74 68 65 20 73 63 72 65 65 6E 20 75 70    ll the screen up
012520:  0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    .---------------
012530:  2D 2D 2D 2D 2D 0D 0D 2E 73 63 72 6F 6C 6C 5F 75    -----...scroll_u
012540:  70 0D 6C 64 20 68 6C 2C 28 73 63 72 6F 6C 6C 5F    p.ld hl,(scroll_
012550:  6F 66 66 73 65 74 29 0D 6C 64 20 62 63 2C 34 30    offset).ld bc,40
012560:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
012570:  20 20 20 20 20 20 20 20 3B 76 61 6C 75 65 20 70            ;value p
012580:  72 6F 67 72 61 6D 6D 65 64 20 74 6F 20 72 65 67    rogrammed to reg
012590:  69 73 74 65 72 20 31 0D 61 64 64 20 68 6C 2C 62    ister 1.add hl,b
0125A0:  63 0D 6C 64 20 61 2C 68 0D 61 6E 64 20 26 30 33    c.ld a,h.and &03
0125B0:  0D 6C 64 20 68 2C 61 0D 6C 64 20 28 73 63 72 6F    .ld h,a.ld (scro
0125C0:  6C 6C 5F 6F 66 66 73 65 74 29 2C 68 6C 0D 72 65    ll_offset),hl.re
0125D0:  74 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    t..=============
0125E0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0125F0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
012600:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
012610:  3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 53 63 72 6F 6C    =========..Scrol
012620:  6C 20 74 68 65 20 73 63 72 65 65 6E 20 64 6F 77    l the screen dow
012630:  6E 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    n.--------------
012640:  2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 2E 73 63 72 6F 6C    --------...scrol
012650:  6C 5F 64 6F 77 6E 0D 6C 64 20 68 6C 2C 28 73 63    l_down.ld hl,(sc
012660:  72 6F 6C 6C 5F 6F 66 66 73 65 74 29 0D 6C 64 20    roll_offset).ld 
012670:  62 63 2C 34 30 0D 6F 72 20 61 0D 73 62 63 20 68    bc,40.or a.sbc h
012680:  6C 2C 62 63 0D 0D 6C 64 20 61 2C 68 0D 61 6E 64    l,bc..ld a,h.and
012690:  20 26 30 33 0D 6C 64 20 68 2C 61 0D 6C 64 20 28     &03.ld h,a.ld (
0126A0:  73 63 72 6F 6C 6C 5F 6F 66 66 73 65 74 29 2C 68    scroll_offset),h
0126B0:  6C 0D 72 65 74 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D    l.ret..=========
0126C0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0126D0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0126E0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0126F0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 64    =============..d
012700:  73 74 72 75 63 74 65 64 20 20 66 72 6F 6D 20 20    structed  from  
012710:  62 69 74 73 20 20 30 20 20 61 6E 64 20 20 31 20    bits  0  and  1 
012720:  20 6F 66 20 20 72 65 67 69 73 74 65 72 20 31 32     of  register 12
012730:  2C 20 61 6E 64 0D 72 65 67 69 73 74 65 72 20 31    , and.register 1
012740:  33 2E 0D 0D 54 68 69 73 20 66 6F 72 6D 73 20 61    3...This forms a
012750:  20 31 30 20 62 69 74 20 20 6E 75 6D 62 65 72 2E     10 bit  number.
012760:  20 20 28 38 20 20 62 69 74 73 20 20 66 72 6F 6D      (8  bits  from
012770:  20 20 72 65 67 69 73 74 65 72 20 20 31 33 2C 20      register  13, 
012780:  61 6E 64 20 32 20 66 72 6F 6D 0D 72 65 67 69 73    and 2 from.regis
012790:  74 65 72 20 31 32 29 2E 20 28 26 30 30 30 30 2D    ter 12). (&0000-
0127A0:  26 30 33 46 46 29 0D 0D 42 79 20 63 68 61 6E 67    &03FF)..By chang
0127B0:  69 6E 67 20 74 68 65 20 76 61 6C 75 65 20 6F 66    ing the value of
0127C0:  20 74 68 65 20 6F 66 66 73 65 74 2C 20 77 65 20     the offset, we 
0127D0:  73 63 72 6F 6C 6C 20 74 68 65 20 73 63 72 65 65    scroll the scree
0127E0:  6E 2E 0D 0D 54 6F 20 73 63 72 6F 6C 6C 20 74 68    n...To scroll th
0127F0:  65 20 73 63 72 65 65 6E 20 55 50 2C 20 41 44 44    e screen UP, ADD
012800:  20 74 68 65 20 76 61 6C 75 65 20 70 72 6F 67 72     the value progr
012810:  61 6D 6D 65 64 20 74 6F 20 72 65 67 69 73 74 65    ammed to registe
012820:  72 20 31 20 74 6F 20 74 68 65 0D 6F 66 66 73 65    r 1 to the.offse
012830:  74 2E 0D 0D 54 6F 20 73 63 72 6F 6C 6C 20 74 68    t...To scroll th
012840:  65 20 73 63 72 65 65 6E 20 44 4F 57 4E 2C 20 53    e screen DOWN, S
012850:  55 42 54 52 41 43 54 20 74 68 65 20 76 61 6C 75    UBTRACT the valu
012860:  65 20 70 72 6F 67 72 61 6D 6D 65 64 20 74 6F 20    e programmed to 
012870:  72 65 67 69 73 74 65 72 20 31 0D 66 72 6F 6D 20    register 1.from 
012880:  74 68 65 20 6F 66 66 73 65 74 2E 0D 0D 54 6F 20    the offset...To 
012890:  73 63 72 6F 6C 6C 20 74 68 65 20 73 63 72 65 65    scroll the scree
0128A0:  6E 20 52 49 47 48 54 2C 20 41 44 44 20 6F 6E 65    n RIGHT, ADD one
0128B0:  20 74 6F 20 74 68 65 20 6F 66 66 73 65 74 2E 0D     to the offset..
0128C0:  0D 54 6F 20 73 63 72 6F 6C 6C 20 74 68 65 20 73    .To scroll the s
0128D0:  63 72 65 65 6E 20 4C 45 46 54 2C 20 53 55 42 54    creen LEFT, SUBT
0128E0:  52 41 43 54 20 6F 6E 65 20 66 72 6F 6D 20 74 68    RACT one from th
0128F0:  65 20 6F 66 66 73 65 74 2E 0D 0D 49 6E 20 61 6C    e offset...In al
012900:  29 20 52 75 70 74 75 72 65 20 74 65 63 68 6E 69    ) Rupture techni
012910:  63 2F 56 65 72 74 69 63 61 6C 20 73 70 6C 69 74    c/Vertical split
012920:  74 69 6E 67 0D 0D 54 48 49 53 20 54 45 43 48 4E    ting..THIS TECHN
012930:  49 43 20 57 41 53 20 46 4F 55 4E 44 20 42 59 20    IC WAS FOUND BY 
012940:  54 48 45 20 4C 4F 47 4F 4E 20 44 45 4D 4F 20 54    THE LOGON DEMO T
012950:  45 41 4D 2E 20 49 20 54 48 49 4E 4B 20 49 54 20    EAM. I THINK IT 
012960:  57 41 53 20 4C 4F 4E 47 53 48 4F 54 0D 57 48 4F    WAS LONGSHOT.WHO
012970:  20 46 4F 55 4E 44 20 49 54 2C 20 4F 52 20 46 52     FOUND IT, OR FR
012980:  45 44 20 43 52 41 5A 59 2E 20 41 4C 4C 20 43 52    ED CRAZY. ALL CR
012990:  45 44 49 54 53 20 54 4F 20 54 48 45 4D 2E 20 49    EDITS TO THEM. I
0129A0:  20 48 4F 50 45 20 54 48 45 59 20 44 4F 20 4E 4F     HOPE THEY DO NO
0129B0:  54 0D 4D 49 4E 44 20 4D 45 20 47 49 56 49 4E 47    T.MIND ME GIVING
0129C0:  20 41 57 41 59 20 41 20 46 45 57 20 53 45 43 52     AWAY A FEW SECR
0129D0:  45 54 53 2E 0D 0D 54 68 69 73 20 74 65 63 68 6E    ETS...This techn
0129E0:  69 63 20 69 73 20 75 73 65 64 20 77 69 64 65 6C    ic is used widel
0129F0:  79 20 69 6E 20 64 65 6D 6F 73 2E 20 4E 6F 72 6D    y in demos. Norm
012A00:  61 6C 6C 79 20 74 68 65 20 73 63 72 65 65 6E 20    ally the screen 
012A10:  61 64 64 72 65 73 73 20 63 61 6E 0D 6F 6E 6C 79    address can.only
012A20:  20 62 65 20 63 68 61 6E 67 65 64 20 6F 6E 63 65     be changed once
012A30:  2E 20 54 68 65 20 43 52 54 43 20 6F 6E 6C 79 20    . The CRTC only 
012A40:  61 6C 6C 6F 77 73 20 74 68 65 20 73 63 72 65 65    allows the scree
012A50:  6E 20 61 64 64 72 65 73 73 20 74 6F 20 62 65 0D    n address to be.
012A60:  63 68 61 6E 67 65 64 20 77 68 65 6E 20 61 20 56    changed when a V
012A70:  53 59 4E 43 20 6F 63 63 75 72 73 2C 20 69 2E 65    SYNC occurs, i.e
012A80:  2E 20 77 68 65 6E 20 74 68 65 20 62 65 61 6D 20    . when the beam 
012A90:  68 61 73 20 66 69 6E 69 73 68 65 64 20 64 72 61    has finished dra
012AA0:  77 69 6E 67 0D 74 68 65 20 73 63 72 65 65 6E 20    wing.the screen 
012AB0:  61 6E 64 20 6D 6F 76 65 73 20 62 61 63 6B 20 74    and moves back t
012AC0:  6F 20 74 68 65 20 74 6F 70 2D 6C 65 66 74 20 61    o the top-left a
012AD0:  67 61 69 6E 2C 20 73 6F 20 74 68 61 74 20 69 74    gain, so that it
012AE0:  20 63 61 6E 20 73 74 61 72 74 0D 61 67 61 69 6E     can start.again
012AF0:  2E 0D 0D 54 68 69 73 20 74 65 63 68 6E 69 63 20    ...This technic 
012B00:  6C 20 63 61 73 65 73 20 77 65 20 6D 75 73 74 20    l cases we must 
012B10:  20 65 6E 73 75 72 65 20 20 74 68 65 20 20 6F 66     ensure  the  of
012B20:  66 73 65 74 20 20 72 65 6D 61 69 6E 73 20 69 6E    fset  remains in
012B30:  20 74 68 65 20 72 61 6E 67 65 20 26 30 30 30 30     the range &0000
012B40:  2D 0D 26 30 33 46 46 2E 0D 3D 3D 3D 3D 3D 3D 3D    -.&03FF..=======
012B50:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
012B60:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
012B70:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
012B80:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D    ===============.
012B90:  0D 53 65 74 74 69 6E 67 20 74 68 65 20 73 63 72    .Setting the scr
012BA0:  65 65 6E 20 6F 66 66 73 65 74 0D 2D 2D 2D 2D 2D    een offset.-----
012BB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
012BC0:  2D 2D 2D 2D 0D 0D 2E 73 65 74 5F 73 63 72 65 65    ----...set_scree
012BD0:  6E 5F 6F 66 66 73 65 74 0D 6C 64 20 68 6C 2C 28    n_offset.ld hl,(
012BE0:  73 63 72 6F 6C 6C 5F 6F 66 66 73 65 74 29 20 20    scroll_offset)  
012BF0:  20 20 20 20 20 20 20 20 20 3B 26 30 30 30 30 2D             ;&0000-
012C00:  26 30 33 46 46 0D 0D 6C 64 20 61 2C 68 0D 6F 72    &03FF..ld a,h.or
012C10:  20 25 30 30 78 78 30 30 30 30 20 20 20 20 20 20     %00xx0000      
012C20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 77                  ;w
012C30:  68 65 72 65 20 20 78 78 20 20 69 73 20 20 74 68    here  xx  is  th
012C40:  65 20 20 6D 65 6D 6F 72 79 20 20 62 6C 6F 63 6B    e  memory  block
012C50:  20 74 68 65 0D 20 20 20 20 20 20 20 20 20 20 20     the.           
012C60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
012C70:  20 20 20 20 20 3B 73 63 72 65 65 6E 20 69 73 20         ;screen is 
012C80:  6C 6F 63 61 74 65 64 20 69 6E 2E 0D 0D 6C 64 20    located in...ld 
012C90:  62 63 2C 26 62 63 30 30 2B 31 32 20 20 20 20 20    bc,&bc00+12     
012CA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 3B 43 52                 ;CR
012CB0:  54 43 20 72 65 67 69 73 74 65 72 20 31 32 0D 6F    TC register 12.o
012CC0:  75 74 20 28 63 29 2C 63 20 20 20 20 20 20 20 20    ut (c),c        
012CD0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B                   ;
012CE0:  73 65 6C 65 63 74 20 43 52 54 43 20 72 65 67 69    select CRTC regi
012CF0:  73 74 65 72 20 31 32 0D 0D 6C 64 20 62 2C 26 62    ster 12..ld b,&b
012D00:  66 6F 6F 6C 73 20 74 68 65 20 43 52 54 43 20 69    fools the CRTC i
012D10:  6E 74 6F 20 74 68 69 6E 6B 69 6E 67 20 61 20 56    nto thinking a V
012D20:  53 59 4E 43 20 68 61 73 20 6F 63 63 75 72 65 64    SYNC has occured
012D30:  2C 20 73 6F 20 74 68 61 74 0D 79 6F 75 20 63 61    , so that.you ca
012D40:  6E 20 63 68 61 6E 67 65 20 74 68 65 20 73 63 72    n change the scr
012D50:  65 65 6E 20 61 64 64 72 65 73 73 2E 20 53 6F 20    een address. So 
012D60:  79 6F 75 20 63 61 6E 20 63 68 61 6E 67 65 20 74    you can change t
012D70:  68 65 20 73 63 72 65 65 6E 20 61 64 64 72 65 73    he screen addres
012D80:  73 0D 61 6E 79 77 68 65 72 65 20 6F 6E 20 74 68    s.anywhere on th
012D90:  65 20 73 63 72 65 65 6E 2E 0D 0D 54 68 69 73 20    e screen...This 
012DA0:  61 6C 6C 6F 77 73 20 79 6F 75 20 74 6F 20 64 6F    allows you to do
012DB0:  20 61 6D 61 7A 69 6E 67 20 74 68 69 6E 67 73 2E     amazing things.
012DC0:  0D 0D 65 2E 67 2E 20 74 68 65 20 74 6F 70 20 70    ..e.g. the top p
012DD0:  61 72 74 20 6F 66 20 74 68 65 20 73 63 72 65 65    art of the scree
012DE0:  6E 20 73 63 72 6F 6C 6C 69 6E 67 20 28 75 73 69    n scrolling (usi
012DF0:  6E 67 20 68 61 72 64 77 61 72 65 29 2C 20 77 68    ng hardware), wh
012E00:  69 6C 73 74 0D 74 68 65 20 6C 6F 77 65 72 20 70    ilst.the lower p
012E10:  61 72 74 20 69 73 20 73 74 61 74 69 6F 6E 61 72    art is stationar
012E20:  79 2E 20 28 41 73 20 73 65 65 6E 20 69 6E 20 53    y. (As seen in S
012E30:  75 70 65 72 20 43 61 75 6C 64 72 6F 6E 20 61 6E    uper Cauldron an
012E40:  64 20 50 72 65 68 69 73 74 6F 72 69 6B 0D 49 49    d Prehistorik.II
012E50:  29 2E 0D 0D 42 6F 74 68 20 6F 66 20 74 68 65 20    )...Both of the 
012E60:  73 65 63 74 69 6F 6E 73 20 6F 66 20 74 68 65 20    sections of the 
012E70:  73 63 72 65 65 6E 20 63 61 6E 20 73 74 61 72 74    screen can start
012E80:  20 61 74 20 61 20 64 69 66 66 65 72 65 6E 74 20     at a different 
012E90:  6D 65 6D 6F 72 79 0D 6C 6F 63 61 74 69 6F 6E 2E    memory.location.
012EA0:  0D 0D 53 6F 20 74 68 69 73 20 74 65 63 68 6E 69    ..So this techni
012EB0:  63 20 69 73 20 76 65 72 79 20 66 6C 65 78 69 62    c is very flexib
012EC0:  6C 65 2E 20 42 75 74 20 69 74 20 69 73 20 6E 6F    le. But it is no
012ED0:  74 20 61 6E 20 65 61 73 79 20 74 65 63 68 6E 69    t an easy techni
012EE0:  63 20 74 6F 20 64 6F 2E 0D 0D 4D 61 6E 79 20 74    c to do...Many t
012EF0:  69 6D 65 73 2C 20 74 68 65 20 73 63 72 65 65 6E    imes, the screen
012F00:  64 0D 6F 75 74 20 28 63 29 2C 61 20 20 20 20 20    d.out (c),a     
012F10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
012F20:  20 20 3B 73 65 6E 64 20 74 6F 70 20 32 20 62 69      ;send top 2 bi
012F30:  74 73 20 6F 66 20 6F 66 66 73 65 74 20 61 6E 64    ts of offset and
012F40:  20 6D 65 6D 6F 72 79 0D 20 20 20 20 20 20 20 20     memory.        
012F50:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
012F60:  20 20 20 20 20 20 20 20 3B 62 6C 6F 63 6B 20 73            ;block s
012F70:  63 72 65 65 6E 20 69 73 20 6C 6F 63 61 74 65 64    creen is located
012F80:  20 69 6E 0D 6C 64 20 62 63 2C 26 62 63 30 30 2B     in.ld bc,&bc00+
012F90:  31 33 20 20 20 20 20 20 20 20 20 20 20 20 20 20    13              
012FA0:  20 20 20 20 3B 43 52 54 43 20 72 65 67 69 73 74        ;CRTC regist
012FB0:  65 72 20 31 33 0D 6F 75 74 20 28 63 29 2C 63 20    er 13.out (c),c 
012FC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
012FD0:  20 20 20 20 20 20 3B 73 65 6C 65 63 74 20 43 52          ;select CR
012FE0:  54 43 20 72 65 67 69 73 74 65 72 20 31 33 0D 6C    TC register 13.l
012FF0:  64 20 62 2C 26 62 64 0D 6F 75 74 20 28 63 29 2C    d b,&bd.out (c),
013000:  6C 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    l               
013010:  20 20 20 20 20 20 20 20 3B 73 65 6E 64 20 6C 6F            ;send lo
013020:  77 65 72 20 38 20 62 69 74 73 20 6F 66 20 6F 66    wer 8 bits of of
013030:  66 73 65 74 0D 72 65 74 0D 0D 2E 73 63 72 6F 6C    fset.ret...scrol
013040:  6C 5F 6F 66 66 73 65 74 20 64 65 66 77 20 30 20    l_offset defw 0 
013050:  20 20 20 20 20 20 20 20 20 20 3B 72 65 73 65 72              ;reser
013060:  76 65 20 32 20 62 79 74 65 73 20 66 6F 72 20 6F    ve 2 bytes for o
013070:  66 66 73 65 74 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ffset..=========
013080:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
013090:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0130A0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0130B0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 53    =============..S
0130C0:  63 72 6F 6C 6C 20 74 68 65 20 73 63 72 65 65 6E    croll the screen
0130D0:  20 74 6F 20 74 68 65 20 72 69 67 68 74 0D 2D 2D     to the right.--
0130E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0130F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 2E 73    ------------...s
013100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
013110:  10 00 01 00 02 09 4E E5 10 00 C1 02 00 00 00 02    ......N.........
013120:  10 00 C6 02 00 00 00 02 10 00 C2 02 00 00 00 02    ................
013130:  10 00 C7 02 00 00 00 02 10 00 C3 02 00 00 00 02    ................
013140:  10 00 C8 02 00 00 00 02 10 00 C4 02 00 00 00 02    ................
013150:  10 00 C9 02 00 00 00 02 10 00 C5 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:  20 77 69 6C 6C 20 66 6C 69 63 6B 65 72 20 61 6E     will flicker an
013210:  64 20 6C 6F 6F 6B 20 77 72 6F 6E 67 2C 20 62 75    d look wrong, bu
013220:  74 20 70 65 72 73 65 76 65 72 20 61 6E 64 20 69    t persever and i
013230:  74 0D 77 69 6C 6C 20 77 6F 72 6B 2E 20 41 6C 73    t.will work. Als
013240:  6F 2C 20 6F 6E 63 65 20 79 6F 75 20 64 6F 20 67    o, once you do g
013250:  65 74 20 69 74 20 74 6F 20 77 6F 72 6B 2C 20 63    et it to work, c
013260:  68 65 63 6B 20 69 74 20 6F 6E 20 64 69 66 66 65    heck it on diffe
013270:  72 65 6E 74 20 43 52 54 43 0D 74 79 70 65 73 2E    rent CRTC.types.
013280:  20 28 59 6F 75 20 63 61 6E 20 66 69 6E 64 20 6F     (You can find o
013290:  75 74 20 61 20 43 52 54 43 20 74 79 70 65 2C 20    ut a CRTC type, 
0132A0:  62 79 20 72 75 6E 6E 69 6E 67 20 61 20 64 65 6D    by running a dem
0132B0:  6F 20 77 68 69 63 68 20 68 61 73 20 43 52 54 43    o which has CRTC
0132C0:  0D 64 65 74 65 63 74 69 6F 6E 20 69 6E 20 69 74    .detection in it
0132D0:  20 2D 20 6C 69 6B 65 20 56 4F 59 41 47 45 20 39     - like VOYAGE 9
0132E0:  33 20 62 79 20 42 45 4E 47 21 29 2E 0D 0D 41 6C    3 by BENG!)...Al
0132F0:  73 6F 2C 20 79 6F 75 20 63 61 6E 20 61 63 68 69    so, you can achi
013300:  65 76 65 20 6F 76 65 72 73 63 61 6E 20 62 79 20    eve overscan by 
013310:  75 73 69 6E 67 20 74 68 69 73 20 74 65 63 68 6E    using this techn
013320:  69 63 2E 0D 0D 54 6F 20 73 65 74 2D 75 70 20 74    ic...To set-up t
013330:  68 65 20 73 70 6C 69 74 20 69 73 20 65 61 73 79    he split is easy
013340:  20 65 6E 6F 75 67 68 2E 0D 0D 61 29 20 46 69 72     enough...a) Fir
013350:  73 74 20 74 68 65 20 69 6E 74 65 72 72 75 70 74    st the interrupt
013360:  20 76 65 63 74 6F 72 20 6D 75 73 74 20 62 65 20     vector must be 
013370:  73 65 74 20 73 6F 20 74 68 61 74 20 69 74 20 64    set so that it d
013380:  6F 65 73 20 6E 6F 74 68 69 6E 67 2E 0D 62 29 20    oes nothing..b) 
013390:  54 68 65 6E 20 65 76 65 72 79 20 66 72 61 6D 65    Then every frame
0133A0:  2D 66 6C 79 62 61 63 6B 2F 56 59 53 4E 43 2C 20    -flyback/VYSNC, 
0133B0:  70 75 74 20 26 66 66 20 69 6E 74 6F 20 72 65 67    put &ff into reg
0133C0:  69 73 74 65 72 20 37 20 6F 66 20 43 52 54 43 0D    ister 7 of CRTC.
0133D0:  63 29 20 54 68 65 6E 20 70 75 74 20 69 6E 20 73    c) Then put in s
0133E0:  70 6C 69 74 20 76 61 6C 75 65 73 20 74 6F 20 73    plit values to s
0133F0:  65 70 65 72 61 74 65 20 73 63 72 65 65 6E 20 75    eperate screen u
013400:  30 30 30 31 30 30 30 30 20 20 20 3B 73 63 72 65    00010000   ;scre
013410:  65 6E 20 61 64 64 72 65 73 73 20 74 6F 20 26 34    en address to &4
013420:  30 30 30 0D 6F 75 74 20 28 63 29 2C 63 0D 6C 64    000.out (c),c.ld
013430:  20 62 63 2C 26 62 63 30 30 2B 31 33 0D 6F 75 74     bc,&bc00+13.out
013440:  20 28 63 29 2C 63 0D 6C 64 20 62 63 2C 26 62 64     (c),c.ld bc,&bd
013450:  30 30 0D 6F 75 74 20 28 63 29 2C 63 0D 6A 70 20    00.out (c),c.jp 
013460:  6D 61 69 6E 5F 6C 6F 6F 70 0D 0D 28 54 68 65 72    main_loop..(Ther
013470:  65 20 69 73 20 61 6E 6F 74 68 65 72 20 65 78 61    e is another exa
013480:  6D 70 6C 65 20 6F 66 20 73 70 6C 69 74 74 69 6E    mple of splittin
013490:  67 20 6F 6E 20 74 68 65 20 64 69 73 63 2E 20 53    g on the disc. S
0134A0:  50 4C 49 54 2E 4D 41 58 29 0D 0D 3D 3D 3D 3D 3D    PLIT.MAX)..=====
0134B0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0134C0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0134D0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0134E0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0134F0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 1A 20 74 68 6F 73    =========.. thos
013500:  65 20 72 65 67 69 73 74 65 72 73 90 1A FF 00 FF    e registers.....
013510:  09 09 09 09 09 09 09 09 20 73 65 6C 65 63 74 65    ........ selecte
013520:  64 20 74 65 78 74 0D 09 09 09 09 09 09 09 09 20    d text......... 
013530:  77 69 6E 64 6F 77 2E 1A FF 00 00 00 00 FF FF FF    window..........
013540:  FF 00 00 00 00 FF FF FF FF 00 00 00 00 FF FF FF    ................
013550:  FF 00 00 00 00 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
013560:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
013570:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
013580:  72 20 69 6E 69 74 69 61 6C 69 73 61 74 69 6F 6E    r initialisation
013590:  20 6F 66 20 73 70 6C 69 74 0D 6F 75 74 20 28 63     of split.out (c
0135A0:  29 2C 63 20 20 20 20 20 20 20 20 20 20 20 20 20    ),c             
0135B0:  20 20 3B 2A 2A 20 49 4D 50 4F 52 54 41 4E 54 20      ;** IMPORTANT 
0135C0:  2A 2A 0D 6C 64 20 62 63 2C 26 62 64 30 30 0D 6F    **.ld bc,&bd00.o
0135D0:  75 74 20 28 63 29 2C 63 0D 0D 6C 64 20 62 63 2C    ut (c),c..ld bc,
0135E0:  26 62 63 30 30 2B 31 32 0D 6F 75 74 20 28 63 29    &bc00+12.out (c)
0135F0:  2C 63 0D 6C 64 20 62 63 2C 26 62 64 30 30 2B 25    ,c.ld bc,&bd00+%
013600:  70 2E 0D 64 29 20 54 68 65 6E 20 69 6E 20 62 6F    p..d) Then in bo
013610:  74 74 6F 6D 20 6F 66 20 73 63 72 65 65 6E 2C 20    ttom of screen, 
013620:  70 75 74 20 26 30 30 20 69 6E 74 6F 20 72 65 67    put &00 into reg
013630:  69 73 74 65 72 20 37 20 6F 66 20 43 52 54 43 2E    ister 7 of CRTC.
013640:  0D 0D 54 68 65 20 69 6E 74 65 72 72 75 70 74 73    ..The interrupts
013650:  20 65 66 66 65 63 74 69 76 65 6C 79 20 73 70 6C     effectively spl
013660:  69 74 20 74 68 65 20 73 63 72 65 65 6E 20 69 6E    it the screen in
013670:  74 6F 20 36 20 62 6C 6F 63 6B 73 2E 20 53 6F 20    to 6 blocks. So 
013680:  77 65 20 63 61 6E 20 65 61 73 69 6C 79 0D 77 61    we can easily.wa
013690:  69 74 20 66 6F 72 20 61 6E 20 69 6E 74 65 72 72    it for an interr
0136A0:  75 70 74 20 74 6F 20 6F 63 63 75 72 20 62 79 20    upt to occur by 
0136B0:  75 73 69 6E 67 20 61 20 48 41 4C 54 20 69 6E 73    using a HALT ins
0136C0:  74 72 75 63 74 69 6F 6E 2C 20 74 68 65 6E 20 77    truction, then w
0136D0:  65 20 63 61 6E 0D 70 72 6F 67 72 61 6D 20 74 68    e can.program th
0136E0:  65 20 73 70 6C 69 74 20 76 61 6C 75 65 73 2E 0D    e split values..
0136F0:  0D 28 54 68 69 73 20 63 6F 64 65 20 63 61 6E 20    .(This code can 
013700:  62 65 20 66 6F 75 6E 64 20 69 6E 20 74 68 65 20    be found in the 
013710:  66 69 6C 65 20 53 50 4C 54 53 48 4C 4C 2E 4D 41    file SPLTSHLL.MA
013720:  58 29 2E 0D 0D 53 69 6E 63 65 20 77 65 20 63 68    X)...Since we ch
013730:  61 6E 67 65 20 74 68 65 20 69 6E 74 65 72 72 75    ange the interru
013740:  70 74 20 76 65 63 74 6F 72 20 74 6F 20 73 6F 6D    pt vector to som
013750:  65 74 68 69 6E 67 20 64 69 66 66 65 72 65 6E 74    ething different
013760:  2C 20 74 68 65 20 6B 65 79 62 6F 61 72 64 0D 77    , the keyboard.w
013770:  69 6C 6C 20 6E 6F 74 20 62 65 20 73 63 61 6E 6E    ill not be scann
013780:  65 64 20 6F 72 20 61 6E 79 74 68 69 6E 67 20 64    ed or anything d
013790:  6F 6E 65 2C 20 73 6F 20 61 6C 6C 20 74 68 69 73    one, so all this
0137A0:  20 68 61 73 20 74 6F 20 62 65 20 64 6F 6E 65 2C     has to be done,
0137B0:  20 62 79 0D 70 72 6F 67 72 61 6D 6D 69 6E 67 20     by.programming 
0137C0:  74 68 65 20 68 61 72 64 77 61 72 65 20 64 69 72    the hardware dir
0137D0:  65 63 74 6C 79 2E 0D 0D 4E 6F 77 20 74 6F 20 61    ectly...Now to a
0137E0:  63 74 75 61 6C 6C 79 20 73 65 74 75 70 20 74 68    ctually setup th
0137F0:  65 20 73 70 6C 69 74 73 2C 20 77 65 20 75 73 65    e splits, we use
013800:  1B 40 53 65 6C 65 63 74 69 6E 67 20 61 6E 20 45    .@Selecting an E
013810:  78 70 61 6E 73 69 6F 6E 20 52 6F 6D 0D 2D 2D 2D    xpansion Rom.---
013820:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
013830:  2D 2D 2D 2D 2D 2D 2D 0D 0D 54 6F 20 73 65 6C 65    -------..To sele
013840:  63 74 20 61 6E 20 65 78 70 61 6E 73 69 6F 6E 20    ct an expansion 
013850:  72 6F 6D 2C 20 73 69 6D 70 6C 79 20 73 65 6E 64    rom, simply send
013860:  20 74 68 65 20 6E 75 6D 62 65 72 20 6F 66 20 74     the number of t
013870:  68 65 20 65 78 70 61 6E 73 69 6F 6E 0D 72 6F 6D    he expansion.rom
013880:  20 74 6F 20 70 6F 72 74 20 26 44 46 78 78 2E 20     to port &DFxx. 
013890:  28 41 6E 20 65 78 70 61 6E 73 69 6F 6E 20 20 72    (An expansion  r
0138A0:  6F 6D 20 20 6D 61 79 20 20 68 61 76 65 20 61 20    om  may  have a 
0138B0:  6E 75 6D 62 65 72 20 66 72 6F 6D 20 30 2D 32 35    number from 0-25
0138C0:  35 29 2E 0D 57 68 65 72 65 20 61 20 76 61 6C 75    5)..Where a valu
0138D0:  65 20 6F 66 20 30 20 77 69 6C 6C 20 20 73 65 6C    e of 0 will  sel
0138E0:  65 63 74 20 20 42 41 53 49 43 2C 20 20 61 6E 64    ect  BASIC,  and
0138F0:  20 20 61 20 76 61 6C 75 65 20 6F 66 20 37 20 77      a value of 7 w
013900:  69 6C 6C 20 73 65 6C 65 63 74 0D 41 4D 53 44 4F    ill select.AMSDO
013910:  53 2E 0D 0D 48 6F 77 65 76 65 72 20 74 68 69 73    S...However this
013920:  20 70 72 6F 63 65 73 73 20 6F 6E 6C 79 20 73 65     process only se
013930:  6C 65 63 74 73 20 74 68 65 20 65 78 70 61 6E 73    lects the expans
013940:  69 6F 6E 20 72 6F 6D 2E 20 49 74 20 64 6F 65 73    ion rom. It does
013950:  20 6E 6F 74 20 61 6C 6C 6F 77 0D 74 68 65 20 75     not allow.the u
013960:  73 65 72 20 74 6F 20 61 63 63 65 73 73 20 61 6E    ser to access an
013970:  79 20 72 6F 75 74 69 6E 65 73 20 20 69 6E 20 20    y routines  in  
013980:  74 68 65 20 20 72 6F 6D 2E 20 54 6F 20 61 6C 6C    the  rom. To all
013990:  6F 77 20 72 6F 75 74 69 6E 65 73 20 74 6F 20 62    ow routines to b
0139A0:  65 0D 61 63 63 65 73 73 65 64 20 74 68 65 20 75    e.accessed the u
0139B0:  73 65 72 20 6D 75 73 74 20 65 6E 61 62 6C 65 20    ser must enable 
0139C0:  74 68 65 20 75 70 70 65 72 20 72 6F 6D 20 75 73    the upper rom us
0139D0:  69 6E 67 20 74 68 65 20 47 61 74 65 20 41 72 72    ing the Gate Arr
0139E0:  61 79 2E 20 28 53 65 65 0D 70 72 6F 67 72 61 6D    ay. (See.program
0139F0:  6D 69 6E 67 20 74 68 65 20 67 61 74 65 20 61 72    ming the gate ar
013A00:  20 72 65 67 69 73 74 65 72 20 26 34 20 6F 66 20     register &4 of 
013A10:  43 52 54 43 2E 0D 0D 53 69 6D 70 6C 79 20 70 72    CRTC...Simply pr
013A20:  6F 67 72 61 6D 20 74 68 65 20 68 65 69 67 68 74    ogram the height
013A30:  20 6F 66 20 74 68 65 20 62 6C 6F 63 6B 20 79 6F     of the block yo
013A40:  75 20 77 61 6E 74 20 28 69 6E 20 63 68 61 72 61    u want (in chara
013A50:  63 74 65 72 20 73 69 7A 65 64 20 75 6E 69 74 73    cter sized units
013A60:  29 2D 31 2E 0D 54 68 65 6E 20 62 65 66 6F 72 65    )-1..Then before
013A70:  20 74 68 65 20 62 6C 6F 63 6B 20 77 69 6C 6C 20     the block will 
013A80:  65 6E 64 2C 20 70 72 6F 67 72 61 6D 20 61 20 6E    end, program a n
013A90:  65 77 20 62 6C 6F 63 6B 20 68 65 69 67 68 74 2E    ew block height.
013AA0:  0D 0D 54 68 65 20 74 6F 74 61 6C 20 68 65 69 67    ..The total heig
013AB0:  68 74 20 6F 66 20 74 68 65 20 73 63 72 65 65 6E    ht of the screen
013AC0:  20 69 73 20 33 38 20 63 68 61 72 61 63 74 65 72     is 38 character
013AD0:  73 20 74 61 6C 6C 2E 20 53 6F 2C 20 61 6C 6C 20    s tall. So, all 
013AE0:  74 68 65 20 62 6C 6F 63 6B 73 0D 68 65 69 67 68    the blocks.heigh
013AF0:  74 73 20 73 68 6F 75 6C 64 20 61 64 64 20 75 70    ts should add up
013B00:  20 74 6F 20 33 38 2E 0D 0D 53 6F 20 6C 65 74 73     to 38...So lets
013B10:  20 73 61 79 2C 20 77 65 20 77 61 6E 74 20 74 68     say, we want th
013B20:  65 20 73 63 72 65 65 6E 20 73 70 6C 69 74 20 69    e screen split i
013B30:  6E 20 68 61 6C 66 2E 20 57 65 20 77 61 6E 74 2C    n half. We want,
013B40:  20 74 77 6F 20 62 6C 6F 63 6B 73 20 6F 66 20 68     two blocks of h
013B50:  65 69 67 68 74 0D 31 39 20 63 68 61 72 61 63 74    eight.19 charact
013B60:  65 72 73 2C 20 74 6F 70 20 62 6C 6F 63 6B 20 75    ers, top block u
013B70:  73 69 6E 67 20 6D 65 6D 6F 72 79 20 61 74 20 26    sing memory at &
013B80:  34 30 30 30 2D 26 38 30 30 30 2C 20 74 68 65 20    4000-&8000, the 
013B90:  73 65 63 6F 6E 64 20 75 73 69 6E 67 20 6D 65 6D    second using mem
013BA0:  6F 72 79 0D 61 74 20 26 43 30 30 30 2D 26 46 46    ory.at &C000-&FF
013BB0:  46 46 2E 0D 0D 3B 20 74 68 65 20 63 6F 64 65 20    FF...; the code 
013BC0:  77 6F 75 6C 64 20 62 65 0D 0D 3D 3D 3D 3D 3D 3D    would be..======
013BD0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
013BE0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
013BF0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
013C00:  72 61 79 20 74 6F 20 73 65 65 20 68 6F 77 20 74    ray to see how t
013C10:  68 69 73 20 69 73 20 64 6F 6E 65 29 2E 0D 0D 41    his is done)...A
013C20:  20 70 72 6F 67 72 61 6D 6D 69 6E 67 20 65 78 61     programming exa
013C30:  6D 70 6C 65 20 69 73 20 67 69 76 65 6E 20 74 6F    mple is given to
013C40:  20 20 73 68 6F 77 20 20 68 6F 77 20 20 74 6F 20      show  how  to 
013C50:  73 65 6C 65 63 74 20 61 6E 64 20 64 69 73 61 62    select and disab
013C60:  6C 65 20 61 6E 0D 65 78 70 61 6E 73 69 6F 6E 20    le an.expansion 
013C70:  72 6F 6D 2E 0D 0D 4E 6F 74 65 20 70 6F 72 74 20    rom...Note port 
013C80:  26 44 46 78 78 20 69 73 20 61 20 77 72 69 74 65    &DFxx is a write
013C90:  20 20 6F 6E 6C 79 20 20 70 6F 72 74 2C 20 72 65      only  port, re
013CA0:  61 64 69 6E 67 20 77 69 6C 6C 20 72 65 74 75 72    ading will retur
013CB0:  6E 20 61 20 6E 6F 6E 73 65 6E 73 65 0D 76 61 6C    n a nonsense.val
013CC0:  75 65 2E 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ue...===========
013CD0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
013CE0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
013CF0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
013D00:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 50 72 6F    ===========..Pro
013D10:  67 72 61 6D 6D 69 6E 67 20 45 78 61 6D 70 6C 65    gramming Example
013D20:  73 3A 0D 0D 0D 61 29 20 53 65 6C 65 63 74 69 6E    s:...a) Selectin
013D30:  67 20 61 6E 20 65 78 70 61 6E 73 69 6F 6E 20 72    g an expansion r
013D40:  6F 6D 0D 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    om.   ----------
013D50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
013D60:  0D 0D 54 6F 20 73 65 6C 65 63 74 20 72 6F 6D 20    ..To select rom 
013D70:  37 2E 20 28 41 4D 53 44 4F 53 29 0D 0D 6C 64 20    7. (AMSDOS)..ld 
013D80:  62 63 2C 26 37 66 30 30 20 20 20 20 20 3B 47 61    bc,&7f00     ;Ga
013D90:  74 65 20 41 72 72 61 79 0D 6C 64 20 61 2C 25 31    te Array.ld a,%1
013DA0:  30 30 30 30 31 30 30 20 20 3B 65 6E 61 62 6C 65    0000100  ;enable
013DB0:  20 75 70 70 65 72 20 72 6F 6D 2C 20 64 69 73 61     upper rom, disa
013DC0:  62 6C 65 20 6C 6F 77 65 72 20 72 6F 6D 2C 20 6D    ble lower rom, m
013DD0:  6F 64 65 20 30 0D 6F 75 74 20 28 63 29 2C 61 20    ode 0.out (c),a 
013DE0:  20 20 20 20 20 20 3B 73 65 6E 64 20 69 74 0D 0D          ;send it..
013DF0:  6C 64 20 62 63 2C 26 44 46 30 30 20 20 20 20 20    ld bc,&DF00     
013E00:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
013E10:  3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 6F 72 67 20 26    =========..org &
013E20:  34 30 30 30 0D 0D 64 69 20 20 20 20 20 20 20 20    4000..di        
013E30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 63                  ;c
013E40:  68 61 6E 67 65 20 69 6E 74 65 72 72 75 70 74 20    hange interrupt 
013E50:  76 65 63 74 6F 72 0D 6C 64 20 68 6C 2C 26 63 39    vector.ld hl,&c9
013E60:  66 62 0D 6C 64 20 28 26 30 30 33 38 29 2C 68 6C    fb.ld (&0038),hl
013E70:  0D 65 69 0D 0D 3B 3B 73 70 6C 69 74 74 69 6E 67    .ei..;;splitting
013E80:  20 70 61 72 74 0D 0D 2E 6D 61 69 6E 5F 6C 6F 6F     part...main_loo
013E90:  70 0D 6C 64 20 62 2C 26 66 35 20 20 20 20 20 20    p.ld b,&f5      
013EA0:  20 20 20 20 20 20 20 20 20 20 3B 77 61 69 74 20              ;wait 
013EB0:  66 6F 72 20 66 72 61 6D 65 20 66 6C 79 62 61 63    for frame flybac
013EC0:  6B 2F 56 53 59 4E 43 0D 2E 6E 6F 5F 56 53 59 4E    k/VSYNC..no_VSYN
013ED0:  43 0D 69 6E 20 61 2C 28 63 29 0D 72 72 61 0D 6A    C.in a,(c).rra.j
013EE0:  70 20 6E 63 2C 6E 6F 5F 56 53 59 4E 43 0D 0D 6C    p nc,no_VSYNC..l
013EF0:  64 20 62 63 2C 26 62 63 30 30 2B 37 0D 6F 75 74    d bc,&bc00+7.out
013F00:  20 28 63 29 2C 63 0D 6C 64 20 62 63 2C 26 62 64     (c),c.ld bc,&bd
013F10:  66 66 0D 6F 75 74 20 28 63 29 2C 63 20 20 20 20    ff.out (c),c    
013F20:  20 20 20 20 20 20 20 20 20 20 20 3B 49 4E 49 54               ;INIT
013F30:  49 41 4C 49 53 45 20 53 50 4C 49 54 20 2A 2A 49    IALISE SPLIT **I
013F40:  4D 50 4F 52 54 41 4E 54 2A 2A 0D 0D 6C 64 20 62    MPORTANT**..ld b
013F50:  63 2C 26 62 63 30 34 0D 6F 75 74 20 28 63 29 2C    c,&bc04.out (c),
013F60:  63 0D 6C 64 20 62 63 2C 26 62 64 30 30 2B 31 39    c.ld bc,&bd00+19
013F70:  2D 31 20 20 20 20 20 20 20 20 3B 68 65 69 67 68    -1        ;heigh
013F80:  74 20 6F 66 20 66 69 72 73 74 20 62 6C 6F 63 6B    t of first block
013F90:  0D 6F 75 74 20 28 63 29 2C 63 0D 0D 68 61 6C 74    .out (c),c..halt
013FA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
013FB0:  20 20 20 20 3B 77 61 69 74 20 36 2E 35 20 6C 69        ;wait 6.5 li
013FC0:  6E 65 73 0D 0D 6C 64 20 62 63 2C 26 62 63 30 30    nes..ld bc,&bc00
013FD0:  2B 31 32 20 20 20 20 20 20 20 20 20 20 3B 73 63    +12          ;sc
013FE0:  72 65 65 6E 20 61 64 64 72 65 73 73 20 74 6F 20    reen address to 
013FF0:  26 43 30 30 30 2D 26 46 46 46 46 0D 6F 75 74 20    &C000-&FFFF.out 
014000:  3B 65 78 70 61 6E 73 69 6F 6E 20 72 6F 6D 20 73    ;expansion rom s
014010:  65 6C 65 63 74 20 70 6F 72 74 0D 6C 64 20 61 2C    elect port.ld a,
014020:  37 20 20 20 20 20 20 20 20 20 20 3B 65 78 70 61    7          ;expa
014030:  6E 73 69 6F 6E 20 72 6F 6D 20 77 61 6E 74 65 64    nsion rom wanted
014040:  0D 6F 75 74 20 28 63 29 2C 61 20 20 20 20 20 20    .out (c),a      
014050:  20 3B 73 65 6C 65 63 74 20 69 74 0D 72 65 74 0D     ;select it.ret.
014060:  0D 0D 62 29 20 44 69 73 61 62 6C 69 6E 67 20 61    ..b) Disabling a
014070:  6E 20 65 78 70 61 6E 73 69 6F 6E 20 72 6F 6D 0D    n expansion rom.
014080:  20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D       -------------
014090:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 6C    -------------..l
0140A0:  64 20 62 63 2C 26 37 66 30 30 20 20 20 20 20 3B    d bc,&7f00     ;
0140B0:  47 61 74 65 20 41 72 72 61 79 0D 6C 64 20 61 2C    Gate Array.ld a,
0140C0:  25 31 30 30 30 31 31 30 30 20 20 3B 75 70 70 65    %10001100  ;uppe
0140D0:  72 20 61 6E 64 20 6C 6F 77 65 72 20 72 6F 6D 20    r and lower rom 
0140E0:  64 69 73 61 62 6C 65 64 2C 20 6D 6F 64 65 20 30    disabled, mode 0
0140F0:  0D 6F 75 74 20 28 63 29 2C 61 20 20 20 20 20 20    .out (c),a      
014100:  20 3B 73 65 6E 64 20 69 74 0D 72 65 74 0D 0D 1A     ;send it.ret...
014110:  65 6C 65 63 74 20 61 6E 20 65 78 70 61 6E 73 69    elect an expansi
014120:  6F 6E 20 72 6F 6D 2C 20 73 69 6D 70 6C 79 20 73    on rom, simply s
014130:  65 6E 64 20 74 68 65 20 6E 75 6D 62 65 72 20 6F    end the number o
014140:  66 20 74 68 65 20 65 78 70 61 6E 73 69 6F 6E 20    f the expansion 
014150:  0D 8A 1A 00 00 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
014160:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
014170:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
014180:  62 63 2C 26 37 66 30 30 20 20 20 20 20 3B 47 61    bc,&7f00     ;Ga
014190:  74 65 20 41 72 72 61 79 0D 6C 64 20 61 2C 25 31    te Array.ld a,%1
0141A0:  30 30 30 30 31 30 30 20 20 3B 65 6E 61 62 6C 65    0000100  ;enable
0141B0:  20 75 70 70 65 72 20 72 6F 6D 2C 20 64 69 73 61     upper rom, disa
0141C0:  62 6C 65 20 6C 6F 77 65 72 20 72 6F 6D 2C 20 6D    ble lower rom, m
0141D0:  6F 64 65 20 30 0D 6F 75 74 20 28 63 29 2C 61 20    ode 0.out (c),a 
0141E0:  20 20 20 20 20 20 3B 73 65 6E 64 20 69 74 0D 0D          ;send it..
0141F0:  6C 64 20 62 63 2C 26 44 46 30 30 20 20 20 20 20    ld bc,&DF00     
014200:  28 63 29 2C 63 0D 6C 64 20 62 63 2C 26 62 64 30    (c),c.ld bc,&bd0
014210:  30 2B 25 30 30 31 31 30 30 30 30 0D 6F 75 74 20    0+%00110000.out 
014220:  28 63 29 2C 63 0D 6C 64 20 62 63 2C 26 62 63 30    (c),c.ld bc,&bc0
014230:  30 2B 31 33 0D 6F 75 74 20 28 63 29 2C 63 0D 6C    0+13.out (c),c.l
014240:  64 20 62 63 2C 26 62 64 30 30 0D 6F 75 74 20 28    d bc,&bd00.out (
014250:  63 29 2C 63 0D 0D 68 61 6C 74 20 20 20 20 20 20    c),c..halt      
014260:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 77                  ;w
014270:  61 69 74 20 36 2E 35 20 6C 69 6E 65 73 0D 0D 6C    ait 6.5 lines..l
014280:  64 20 62 2C 31 35 20 20 20 20 20 20 20 20 20 20    d b,15          
014290:  20 20 20 20 20 20 20 3B 6E 6F 74 20 73 75 72 65           ;not sure
0142A0:  20 72 65 61 73 6F 6E 20 66 6F 72 20 74 68 69 73     reason for this
0142B0:  2C 20 6D 61 79 62 65 20 74 6F 20 61 6C 6C 6F 77    , maybe to allow
0142C0:  20 63 6F 6D 70 61 74 69 62 69 6C 74 79 0D 2E 77     compatibilty..w
0142D0:  61 69 74 20 64 6A 6E 7A 20 77 61 69 74 20 20 20    ait djnz wait   
0142E0:  20 20 20 20 20 20 3B 77 69 74 68 20 6F 74 68 65          ;with othe
0142F0:  72 20 43 52 54 43 73 0D 0D 6C 64 20 62 63 2C 26    r CRTCs..ld bc,&
014300:  62 63 30 34 0D 6F 75 74 20 28 63 29 2C 63 0D 6C    bc04.out (c),c.l
014310:  64 20 62 63 2C 26 62 64 30 30 2B 31 39 2D 31 20    d bc,&bd00+19-1 
014320:  20 20 20 20 20 20 20 3B 68 65 69 67 68 74 20 6F           ;height o
014330:  66 20 73 65 63 6F 6E 64 20 62 6C 6F 63 6B 0D 6F    f second block.o
014340:  75 74 20 28 63 29 2C 63 0D 68 61 6C 74 0D 0D 68    ut (c),c.halt..h
014350:  61 6C 74 0D 0D 68 61 6C 74 0D 0D 68 61 6C 74 0D    alt..halt..halt.
014360:  6C 64 20 62 63 2C 26 62 63 30 30 2B 37 20 20 20    ld bc,&bc00+7   
014370:  20 20 20 20 20 20 20 20 3B 61 6C 73 6F 20 66 6F            ;also fo
014380:  72 20 69 6E 69 74 69 61 6C 69 73 61 74 69 6F 6E    r initialisation
014390:  20 6F 66 20 73 70 6C 69 74 0D 6F 75 74 20 28 63     of split.out (c
0143A0:  29 2C 63 20 20 20 20 20 20 20 20 20 20 20 20 20    ),c             
0143B0:  20 20 3B 2A 2A 20 49 4D 50 4F 52 54 41 4E 54 20      ;** IMPORTANT 
0143C0:  2A 2A 0D 6C 64 20 62 63 2C 26 62 64 30 30 0D 6F    **.ld bc,&bd00.o
0143D0:  75 74 20 28 63 29 2C 63 0D 0D 6C 64 20 62 63 2C    ut (c),c..ld bc,
0143E0:  26 62 63 30 30 2B 31 32 0D 6F 75 74 20 28 63 29    &bc00+12.out (c)
0143F0:  2C 63 0D 6C 64 20 62 63 2C 26 62 64 30 30 2B 25    ,c.ld bc,&bd00+%
014400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
014410:  11 00 01 00 02 09 4E E5 11 00 C1 02 00 00 00 02    ......N.........
014420:  11 00 C6 02 00 00 00 02 11 00 C2 02 00 00 00 02    ................
014430:  11 00 C7 02 00 00 00 02 11 00 C3 02 00 00 00 02    ................
014440:  11 00 C8 02 00 00 00 02 11 00 C4 02 00 00 00 02    ................
014450:  11 00 C9 02 00 00 00 02 11 00 C5 02 00 00 00 02    ................
014460:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014470:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014480:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014490:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0144F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014500:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014510:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014520:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014530:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014540:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014550:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014560:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014570:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014580:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014590:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0145A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0145B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0145C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0145D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0145E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0145F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014600:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014610:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014620:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014630:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014640:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014650:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014660:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014670:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014680:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014690:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0146A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0146B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0146C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0146D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0146E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0146F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
014700:  07 50 53 47 2E 54 58 54 00 00 00 01 00 09 C2 E0    .PSG.TXT........
014710:  00 00 2A 00 00 09 C2 E0 00 00 02 00 00 10 98 1C    ..*.............
014720:  54 45 58 54 4D 41 43 41 01 00 00 D0 00 C0 00 00    TEXTMACA........
014730:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014740:  A6 DD 00 E4 A6 DD 00 E4 00 00 00 00 7F FF FF CF    ................
014750:  50 53 47 20 20 20 20 20 54 58 54 00 0B 52 45 41    PSG     TXT..REA
014760:  44 2D 4D 45 2E 54 58 54 00 09 C2 E0 00 00 2A 00    D-ME.TXT......*.
014770:  00 09 C2 E0 00 00 02 00 00 10 98 1C 54 45 58 54    ............TEXT
014780:  4D 41 43 41 01 00 00 D0 01 00 00 00 00 00 00 00    MACA............
014790:  00 00 00 00 00 00 00 00 00 00 00 00 A6 DD 00 E4    ................
0147A0:  A6 DD 00 E4 00 00 00 00 7F FF FF CE 52 45 41 44    ............READ
0147B0:  2D 4D 45 20 54 58 54 00 0B 52 45 41 44 4B 45 59    -ME TXT..READKEY
0147C0:  2E 54 58 54 00 09 C2 E0 00 00 2A 00 00 09 C2 E0    .TXT......*.....
0147D0:  00 00 02 00 00 10 98 1C 54 45 58 54 4D 41 43 41    ........TEXTMACA
0147E0:  01 00 01 04 00 00 00 00 00 00 00 00 00 00 00 00    ................
0147F0:  00 00 00 00 00 00 00 00 A6 DD 00 E4 A6 DD 00 E4    ................
014800:  00 00 00 00 7F FF FF CD 52 45 41 44 4B 45 59 20    ........READKEY 
014810:  54 58 54 00 08 52 53 58 53 48 45 4C 4C 00 00 01    TXT..RSXSHELL...
014820:  00 09 C2 E0 00 00 2A 00 00 09 C2 E0 00 00 02 00    ......*.........
014830:  00 10 98 1C 54 45 58 54 4D 41 43 41 01 00 01 04    ....TEXTMACA....
014840:  00 40 00 00 00 00 00 00 00 00 00 00 00 00 00 00    .@..............
014850:  00 00 00 00 A6 DD 00 E4 A6 DD 00 E4 00 00 00 00    ................
014860:  7F FF FF CC 52 53 58 53 48 45 4C 4C 20 20 20 00    ....RSXSHELL   .
014870:  07 53 43 52 2E 54 58 54 00 00 00 01 00 09 C2 E0    .SCR.TXT........
014880:  00 00 2A 00 00 09 C2 E0 00 00 02 00 00 10 98 1C    ..*.............
014890:  54 45 58 54 4D 41 43 41 01 00 01 04 00 80 00 00    TEXTMACA........
0148A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0148B0:  A6 DD 00 E4 A6 DD 00 E4 00 00 00 00 7F FF FF CB    ................
0148C0:  53 43 52 20 20 20 20 20 54 58 54 00 09 53 4F 55    SCR     TXT..SOU
0148D0:  4E 44 2E 54 58 54 00 01 00 09 C2 E0 00 00 2A 00    ND.TXT........*.
0148E0:  00 09 C2 E0 00 00 02 00 00 10 98 1C 54 45 58 54    ............TEXT
0148F0:  4D 41 43 41 01 00 01 04 00 C0 00 00 00 00 00 00    MACA............
014900:  08 38 32 35 35 2E 54 58 54 03 EB E4 00 28 FF ED    .8255.TXT....(..
014910:  00 29 00 00 03 54 00 10 97 FC 00 11 94 92 84 02    .)...T..........
014920:  54 45 58 54 4D 41 43 41 01 00 00 00 00 00 00 00    TEXTMACA........
014930:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014940:  A6 DD 00 E4 A6 DD 00 E4 00 00 00 00 7F FF FF E5    ................
014950:  38 32 35 35 20 20 20 20 54 58 54 01 09 38 32 35    8255    TXT..825
014960:  35 32 2E 54 58 54 00 00 00 00 00 00 00 00 00 00    52.TXT..........
014970:  03 54 00 10 97 FC 00 11 94 92 84 02 54 45 58 54    .T..........TEXT
014980:  4D 41 43 41 01 00 00 00 00 40 00 00 00 00 00 00    MACA.....@......
014990:  00 00 00 00 00 00 00 00 00 00 00 00 A6 DD 00 E4    ................
0149A0:  A6 DD 00 E4 00 00 00 00 7F FF FF E4 38 32 35 35    ............8255
0149B0:  32 20 20 20 54 58 54 01 08 42 44 4F 53 2E 54 58    2   TXT..BDOS.TX
0149C0:  54 00 00 00 00 00 00 00 00 00 00 00 03 54 00 10    T............T..
0149D0:  97 FC 00 11 94 92 84 02 54 45 58 54 4D 41 43 41    ........TEXTMACA
0149E0:  01 00 00 00 00 80 00 00 00 00 00 00 00 00 00 00    ................
0149F0:  00 00 00 00 00 00 00 00 A6 DD 00 E4 A6 DD 00 E4    ................
014A00:  00 00 00 00 7F FF FF E3 42 44 4F 53 20 20 20 20    ........BDOS    
014A10:  54 58 54 01 07 43 41 53 2E 54 58 54 00 00 00 00    TXT..CAS.TXT....
014A20:  00 00 00 00 00 00 00 00 03 54 00 10 97 FC 00 11    .........T......
014A30:  94 92 84 02 54 45 58 54 4D 41 43 41 01 00 00 00    ....TEXTMACA....
014A40:  00 C0 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014A50:  00 00 00 00 A6 DD 00 E4 A6 DD 00 E4 00 00 00 00    ................
014A60:  7F FF FF E2 43 41 53 20 20 20 20 20 54 58 54 01    ....CAS     TXT.
014A70:  0B 43 4F 4E 4E 45 43 54 2E 54 58 54 00 00 00 00    .CONNECT.TXT....
014A80:  00 00 00 00 03 54 00 10 97 FC 00 11 94 92 84 02    .....T..........
014A90:  54 45 58 54 4D 41 43 41 01 00 00 00 01 00 00 00    TEXTMACA........
014AA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014AB0:  A6 DD 00 E4 A6 DD 00 E4 00 00 00 00 7F FF FF E1    ................
014AC0:  43 4F 4E 4E 45 43 54 20 54 58 54 01 0C 43 4F 4E    CONNECT TXT..CON
014AD0:  54 43 48 41 52 2E 54 58 54 00 00 00 00 00 00 00    TCHAR.TXT.......
014AE0:  03 54 00 10 97 FC 00 11 94 92 84 02 54 45 58 54    .T..........TEXT
014AF0:  4D 41 43 41 01 00 00 34 00 00 00 00 00 00 00 00    MACA...4........
014B00:  00 00 00 00 00 00 00 00 00 00 00 00 A6 DD 00 E4    ................
014B10:  A6 DD 00 E4 00 00 00 00 7F FF FF CA 53 4F 55 4E    ............SOUN
014B20:  44 20 20 20 54 58 54 00 09 53 50 4C 49 54 2E 4D    D   TXT..SPLIT.M
014B30:  41 58 00 01 00 09 C2 E0 00 00 2A 00 00 09 C2 E0    AX........*.....
014B40:  00 00 02 00 00 10 98 1C 54 45 58 54 4D 41 43 41    ........TEXTMACA
014B50:  01 00 01 04 01 00 00 00 00 00 00 00 00 00 00 00    ................
014B60:  00 00 00 00 00 00 00 00 A6 DD 00 E4 A6 DD 00 E4    ................
014B70:  00 00 00 00 7F FF FF C9 53 50 4C 49 54 20 20 20    ........SPLIT   
014B80:  4D 41 58 00 0C 53 50 4C 54 53 48 4C 4C 2E 4D 41    MAX..SPLTSHLL.MA
014B90:  58 09 C2 E0 00 00 2A 00 00 09 C2 E0 00 00 02 00    X.....*.........
014BA0:  00 10 98 1C 54 45 58 54 4D 41 43 41 01 00 01 38    ....TEXTMACA...8
014BB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014BC0:  00 00 00 00 A6 DD 00 E4 A6 DD 00 E4 00 00 00 00    ................
014BD0:  7F FF FF C8 53 50 4C 54 53 48 4C 4C 4D 41 58 00    ....SPLTSHLLMAX.
014BE0:  08 54 45 53 54 2E 4D 41 58 00 00 01 00 09 C2 E0    .TEST.MAX.......
014BF0:  00 04 88 00 00 09 C2 E0 00 00 02 00 00 10 98 1C    ................
014C00:  54 45 58 54 4D 41 43 41 01 00 01 38 00 40 00 00    TEXTMACA...8.@..
014C10:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014C20:  A6 DD 00 E4 A6 DD 00 E4 00 00 00 00 7F FF FF C7    ................
014C30:  54 45 53 54 20 20 20 20 4D 41 58 00 0C 54 45 58    TEST    MAX..TEX
014C40:  54 44 49 53 50 2E 42 41 53 09 C2 E0 00 04 88 00    TDISP.BAS.......
014C50:  00 09 C2 E0 00 00 02 00 00 10 98 1C 3F 3F 3F 3F    ............????
014C60:  42 49 4E 20 01 00 01 38 00 80 00 00 00 00 00 00    BIN ...8........
014C70:  00 00 00 00 00 00 00 00 00 00 00 00 A6 DD 00 E4    ................
014C80:  A6 DD 00 E4 00 00 00 00 7F FF FF C6 54 45 58 54    ............TEXT
014C90:  44 49 53 50 42 41 53 00 07 54 58 54 2E 54 58 54    DISPBAS..TXT.TXT
014CA0:  00 00 00 01 00 09 C2 E0 00 04 88 00 00 09 C2 E0    ................
014CB0:  00 00 02 00 00 10 98 1C 54 45 58 54 4D 41 43 41    ........TEXTMACA
014CC0:  01 00 01 38 00 C0 00 00 00 00 00 00 00 00 00 00    ...8............
014CD0:  00 00 00 00 00 00 00 00 A6 DD 00 E4 A6 DD 00 E4    ................
014CE0:  00 00 00 00 7F FF FF C5 54 58 54 20 20 20 20 20    ........TXT     
014CF0:  54 58 54 00 00 00 00 00 00 00 00 00 00 00 00 00    TXT.............
014D00:  00 00 00 00 00 00 00 00 00 00 00 00 A6 DD 00 E4    ................
014D10:  A6 DD 00 E4 00 00 00 00 7F FF FF E0 43 4F 4E 54    ............CONT
014D20:  43 48 41 52 54 58 54 01 08 43 52 54 43 2E 54 58    CHARTXT..CRTC.TX
014D30:  54 00 00 00 00 00 00 00 00 00 00 00 03 54 00 10    T............T..
014D40:  97 FC 00 11 94 92 84 02 54 45 58 54 4D 41 43 41    ........TEXTMACA
014D50:  01 00 00 34 00 40 00 00 00 00 00 00 00 00 00 00    ...4.@..........
014D60:  00 00 00 00 00 00 00 00 A6 DD 00 E4 A6 DD 00 E4    ................
014D70:  00 00 00 00 7F FF FF DF 43 52 54 43 20 20 20 20    ........CRTC    
014D80:  54 58 54 01 09 45 58 50 41 4E 2E 54 58 54 00 00    TXT..EXPAN.TXT..
014D90:  00 00 00 00 00 00 00 00 03 54 00 10 97 FC 00 11    .........T......
014DA0:  94 92 84 02 54 45 58 54 4D 41 43 41 01 00 00 34    ....TEXTMACA...4
014DB0:  00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014DC0:  00 00 00 00 A6 DD 00 E4 A6 DD 00 E4 00 00 00 00    ................
014DD0:  7F FF FF DE 45 58 50 41 4E 20 20 20 54 58 54 01    ....EXPAN   TXT.
014DE0:  0B 46 49 4C 45 5F 49 44 2E 44 49 5A 00 00 00 00    .FILE_ID.DIZ....
014DF0:  00 00 00 00 03 44 00 10 97 FC 00 11 94 92 84 02    .....D..........
014E00:  54 45 58 54 4D 41 43 41 01 00 00 34 00 C0 00 00    TEXTMACA...4....
014E10:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014E20:  AB EA 7D EC AB EA 7D EC 00 00 00 00 7F FF FF DD    ..}...}.........
014E30:  46 49 4C 45 5F 49 44 20 44 49 5A 01 08 47 41 54    FILE_ID DIZ..GAT
014E40:  45 2E 54 58 54 00 00 00 00 00 00 00 00 00 00 00    E.TXT...........
014E50:  03 54 00 10 97 FC 00 11 94 92 84 02 54 45 58 54    .T..........TEXT
014E60:  4D 41 43 41 01 00 00 34 01 00 00 00 00 00 00 00    MACA...4........
014E70:  00 00 00 00 00 00 00 00 00 00 00 00 A6 DD 00 E4    ................
014E80:  A6 DD 00 E4 00 00 00 00 7F FF FF DC 47 41 54 45    ............GATE
014E90:  20 20 20 20 54 58 54 01 07 47 52 41 2E 54 58 54        TXT..GRA.TXT
014EA0:  00 00 00 00 00 00 00 00 00 00 00 00 03 54 00 10    .............T..
014EB0:  97 FC 00 11 94 92 84 02 54 45 58 54 4D 41 43 41    ........TEXTMACA
014EC0:  01 00 00 34 01 40 00 00 00 00 00 00 00 00 00 00    ...4.@..........
014ED0:  00 00 00 00 00 00 00 00 A6 DD 00 E4 A6 DD 00 E4    ................
014EE0:  00 00 00 00 7F FF FF DB 47 52 41 20 20 20 20 20    ........GRA     
014EF0:  54 58 54 01 00 00 00 00 00 00 00 00 00 00 00 00    TXT.............
014F00:  0B 56 41 52 49 4F 55 53 2E 54 58 54 00 09 C2 E0    .VARIOUS.TXT....
014F10:  00 04 88 00 00 09 C2 E0 00 00 02 00 00 10 98 1C    ................
014F20:  54 45 58 54 4D 41 43 41 01 00 01 38 01 00 00 00    TEXTMACA...8....
014F30:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
014F40:  A6 DD 00 E4 A6 DD 00 E4 00 00 00 00 7F FF FF C4    ................
014F50:  56 41 52 49 4F 55 53 20 54 58 54 00 08 58 44 50    VARIOUS TXT..XDP
014F60:  42 2E 54 58 54 00 00 01 00 09 C2 E0 00 04 88 00    B.TXT...........
014F70:  00 09 C2 E0 00 00 02 00 00 10 98 1C 54 45 58 54    ............TEXT
014F80:  4D 41 43 41 01 00 01 38 01 40 00 00 00 00 00 00    MACA...8.@......
014F90:  00 00 00 00 00 00 00 00 00 00 00 00 A6 DD 00 E4    ................
014FA0:  A6 DD 00 E4 00 00 00 00 7F FF FF C3 58 44 50 42    ............XDPB
014FB0:  20 20 20 20 54 58 54 00 0A 5A 38 30 53 45 54 2E        TXT..Z80SET.
014FC0:  54 58 54 01 00 09 C2 E0 00 04 88 00 00 09 C2 E0    TXT.............
014FD0:  00 00 02 00 00 10 98 1C 54 45 58 54 4D 41 43 41    ........TEXTMACA
014FE0:  01 00 01 6C 00 00 00 00 00 00 00 00 00 00 00 00    ...l............
014FF0:  00 00 00 00 00 00 00 00 A6 DD 00 E4 A6 DD 00 E4    ................
015000:  00 00 00 00 7F FF FF C2 5A 38 30 53 45 54 20 20    ........Z80SET  
015010:  54 58 54 00 1A E3 2C 94 EC 25 25 EC 2C 2C 9B 9B    TXT...,..%%.,,..
015020:  D4 B5 B5 B5 CE B3 6A D4 D4 81 F4 92 F4 2F 1A 1A    ......j....../..
015030:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
015040:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
015050:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
015060:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
015070:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
015080:  A6 DD 00 E4 00 00 00 00 7F FF FF C6 54 45 58 54    ............TEXT
015090:  44 49 53 50 42 41 53 00 07 54 58 54 2E 54 58 54    DISPBAS..TXT.TXT
0150A0:  00 00 00 01 00 09 C2 E0 00 04 88 00 00 09 C2 E0    ................
0150B0:  00 00 02 00 00 10 98 1C 54 45 58 54 4D 41 43 41    ........TEXTMACA
0150C0:  01 00 01 38 00 C0 00 00 00 00 00 00 00 00 00 00    ...8............
0150D0:  00 00 00 00 00 00 00 00 A6 DD 00 E4 A6 DD 00 E4    ................
0150E0:  00 00 00 00 7F FF FF C5 54 58 54 20 20 20 20 20    ........TXT     
0150F0:  54 58 54 00 00 00 00 00 00 00 00 00 00 00 00 00    TXT.............
015100:  0C 48 41 52 44 57 41 52 45 2E 54 58 54 14 00 09    .HARDWARE.TXT...
015110:  C2 E0 00 00 03 54 00 10 97 FC 00 11 94 92 84 02    .....T..........
015120:  54 45 58 54 4D 41 43 41 01 00 00 68 00 00 00 00    TEXTMACA...h....
015130:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015140:  A6 DD 00 E4 A6 DD 00 E4 00 00 00 00 7F FF FF DA    ................
015150:  48 41 52 44 57 41 52 45 54 58 54 01 0B 48 49 2D    HARDWARETXT..HI-
015160:  4B 45 52 4E 2E 54 58 54 00 00 00 00 00 00 00 00    KERN.TXT........
015170:  03 54 00 10 97 FC 00 11 94 92 84 02 54 45 58 54    .T..........TEXT
015180:  4D 41 43 41 01 00 00 68 00 80 00 00 00 00 00 00    MACA...h........
015190:  00 00 00 00 00 00 00 00 00 00 00 00 A6 DD 00 E4    ................
0151A0:  A6 DD 00 E4 00 00 00 00 7F FF FF D9 48 49 2D 4B    ............HI-K
0151B0:  45 52 4E 20 54 58 54 01 0C 49 4E 44 49 52 45 43    ERN TXT..INDIREC
0151C0:  54 2E 54 58 54 09 C2 E0 00 00 2A 00 00 09 C2 E0    T.TXT.....*.....
0151D0:  00 00 02 00 00 10 98 1C 54 45 58 54 4D 41 43 41    ........TEXTMACA
0151E0:  01 00 00 68 00 C0 00 00 00 00 00 00 00 00 00 00    ...h............
0151F0:  00 00 00 00 00 00 00 00 A6 DD 00 E4 A6 DD 00 E4    ................
015200:  00 00 00 00 7F FF FF D8 49 4E 44 49 52 45 43 54    ........INDIRECT
015210:  54 58 54 00 0B 49 4F 50 4F 52 54 53 2E 54 58 54    TXT..IOPORTS.TXT
015220:  00 09 C2 E0 00 00 2A 00 00 09 C2 E0 00 00 02 00    ......*.........
015230:  00 10 98 1C 54 45 58 54 4D 41 43 41 01 00 00 9C    ....TEXTMACA....
015240:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015250:  00 00 00 00 A6 DD 00 E4 A6 DD 00 E4 00 00 00 00    ................
015260:  7F FF FF D7 49 4F 50 4F 52 54 53 20 54 58 54 00    ....IOPORTS TXT.
015270:  0A 4B 45 52 4E 41 4C 2E 54 58 54 01 00 09 C2 E0    .KERNAL.TXT.....
015280:  00 00 2A 00 00 09 C2 E0 00 00 02 00 00 10 98 1C    ..*.............
015290:  54 45 58 54 4D 41 43 41 01 00 00 9C 00 40 00 00    TEXTMACA.....@..
0152A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0152B0:  A6 DD 00 E4 A6 DD 00 E4 00 00 00 00 7F FF FF D6    ................
0152C0:  4B 45 52 4E 41 4C 20 20 54 58 54 00 0A 4B 45 59    KERNAL  TXT..KEY
0152D0:  4D 41 50 2E 54 58 54 01 00 09 C2 E0 00 00 2A 00    MAP.TXT.......*.
0152E0:  00 09 C2 E0 00 00 02 00 00 10 98 1C 54 45 58 54    ............TEXT
0152F0:  4D 41 43 41 01 00 00 9C 00 80 00 00 00 00 00 00    MACA............
015300:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015310:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015320:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015330:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015340:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015350:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015360:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015370:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015380:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015390:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0153A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0153B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0153C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0153D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0153E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0153F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015400:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015410:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015420:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015430:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015440:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015450:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015460:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015470:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015480:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015490:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0154A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0154B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0154C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0154D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0154E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0154F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
015500:  00 00 00 00 00 00 00 00 00 00 00 00 A6 DD 00 E4    ................
015510:  A6 DD 00 E4 00 00 00 00 7F FF FF D5 4B 45 59 4D    ............KEYM
015520:  41 50 20 20 54 58 54 00 06 4B 4D 2E 54 58 54 00    AP  TXT..KM.TXT.
015530:  00 00 00 01 00 09 C2 E0 00 00 2A 00 00 09 C2 E0    ..........*.....
015540:  00 00 02 00 00 10 98 1C 54 45 58 54 4D 41 43 41    ........TEXTMACA
015550:  01 00 00 9C 00 C0 00 00 00 00 00 00 00 00 00 00    ................
015560:  00 00 00 00 00 00 00 00 A6 DD 00 E4 A6 DD 00 E4    ................
015570:  00 00 00 00 7F FF FF D4 4B 4D 20 20 20 20 20 20    ........KM      
015580:  54 58 54 00 0B 4C 4F 2D 4B 45 52 4E 2E 54 58 54    TXT..LO-KERN.TXT
015590:  00 09 C2 E0 00 00 2A 00 00 09 C2 E0 00 00 02 00    ......*.........
0155A0:  00 10 98 1C 54 45 58 54 4D 41 43 41 01 00 00 9C    ....TEXTMACA....
0155B0:  01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0155C0:  00 00 00 00 A6 DD 00 E4 A6 DD 00 E4 00 00 00 00    ................
0155D0:  7F FF FF D3 4C 4F 2D 4B 45 52 4E 20 54 58 54 00    ....LO-KERN TXT.
0155E0:  06 4D 43 2E 54 58 54 00 00 00 00 01 00 09 C2 E0    .MC.TXT.........
0155F0:  00 00 2A 00 00 09 C2 E0 00 00 02 00 00 10 98 1C    ..*.............
015600:  54 45 58 54 4D 41 43 41 01 00 00 9C 01 40 00 00    TEXTMACA.....@..
015610:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
015620:  A6 DD 00 E4 A6 DD 00 E4 00 00 00 00 7F FF FF D2    ................
015630:  4D 43 20 20 20 20 20 20 54 58 54 00 0C 50 4C 55    MC      TXT..PLU
015640:  53 50 4F 52 54 2E 54 58 54 09 C2 E0 00 00 2A 00    SPORT.TXT.....*.
015650:  00 09 C2 E0 00 00 02 00 00 10 98 1C 54 45 58 54    ............TEXT
015660:  4D 41 43 41 01 00 00 D0 00 00 00 00 00 00 00 00    MACA............
015670:  00 00 00 00 00 00 00 00 00 00 00 00 A6 DD 00 E4    ................
015680:  A6 DD 00 E4 00 00 00 00 7F FF FF D1 50 4C 55 53    ............PLUS
015690:  50 4F 52 54 54 58 54 00 0B 50 52 49 4E 54 45 52    PORTTXT..PRINTER
0156A0:  2E 54 58 54 00 09 C2 E0 00 00 2A 00 00 09 C2 E0    .TXT......*.....
0156B0:  00 00 02 00 00 10 98 1C 54 45 58 54 4D 41 43 41    ........TEXTMACA
0156C0:  01 00 00 D0 00 80 00 00 00 00 00 00 00 00 00 00    ................
0156D0:  00 00 00 00 00 00 00 00 A6 DD 00 E4 A6 DD 00 E4    ................
0156E0:  00 00 00 00 7F FF FF D0 50 52 49 4E 54 45 52 20    ........PRINTER 
0156F0:  54 58 54 00 00 00 00 00 00 00 00 00 00 00 00 00    TXT.............
015700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
015710:  12 00 01 00 02 09 4E E5 12 00 C1 02 00 00 00 02    ......N.........
015720:  12 00 C6 02 00 00 00 02 12 00 C2 02 00 00 00 02    ................
015730:  12 00 C7 02 00 00 00 02 12 00 C3 02 00 00 00 02    ................
015740:  12 00 C8 02 00 00 00 02 12 00 C4 02 00 00 00 02    ................
015750:  12 00 C9 02 00 00 00 02 12 00 C5 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:  1B 40 54 68 65 20 47 61 74 65 20 41 72 72 61 79    .@The Gate Array
015810:  0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D    .--------------.
015820:  0D 54 68 65 20 67 61 74 65 20 61 72 72 61 79 20    .The gate array 
015830:  69 73 20 61 20 73 70 65 63 69 61 6C 6C 79 20 64    is a specially d
015840:  65 73 69 67 6E 65 64 20 63 68 69 70 20 65 78 63    esigned chip exc
015850:  6C 75 73 69 76 65 6C 79 20 66 6F 72 20 75 73 65    lusively for use
015860:  20 69 6E 20 74 68 65 0D 41 6D 73 74 72 61 64 20     in the.Amstrad 
015870:  43 50 43 2E 20 49 74 20 69 73 20 66 6F 72 20 74    CPC. It is for t
015880:  68 69 73 20 72 65 61 73 6F 6E 20 6E 6F 74 20 6D    his reason not m
015890:  75 63 68 20 69 73 20 6B 6E 6F 77 6E 20 61 62 6F    uch is known abo
0158A0:  75 74 20 69 74 2E 0D 0D 49 74 20 69 73 20 72 65    ut it...It is re
0158B0:  73 70 6F 6E 73 69 62 6C 65 20 66 6F 72 20 20 63    sponsible for  c
0158C0:  6F 6E 74 72 6F 6C 6C 69 6E 67 20 20 73 63 72 65    ontrolling  scre
0158D0:  65 6E 20 20 6D 6F 64 65 2C 20 20 63 6F 6C 6F 75    en  mode,  colou
0158E0:  72 20 70 61 6C 65 74 74 65 2C 20 72 61 6D 0D 63    r palette, ram.c
0158F0:  6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 61 6E 64    onfiguration and
015900:  20 72 6F 6D 20 63 6F 6E 66 69 67 75 72 61 74 69     rom configurati
015910:  6F 6E 2E 0D 0D 54 68 65 20 6E 65 77 20 41 53 49    on...The new ASI
015920:  43 20 47 61 74 65 20 41 72 72 61 79 20 28 69 6E    C Gate Array (in
015930:  20 74 68 65 20 20 6E 65 77 20 20 50 6C 75 73 20     the  new  Plus 
015940:  6D 61 63 68 69 6E 65 73 29 20 69 73 20 64 65 73    machines) is des
015950:  63 72 69 62 65 64 20 69 6E 20 61 0D 64 69 66 66    cribed in a.diff
015960:  65 72 65 6E 74 20 73 65 63 74 69 6F 6E 2E 20 49    erent section. I
015970:  6E 20 73 74 61 6E 64 61 72 64 20 6D 6F 64 65 20    n standard mode 
015980:  6F 6E 20 74 68 65 20 50 6C 75 73 20 6D 61 63 68    on the Plus mach
015990:  69 6E 65 73 20 28 74 68 61 74 20 69 73 20 77 68    ines (that is wh
0159A0:  65 6E 0D 74 68 65 20 6E 65 77 20 41 53 49 43 20    en.the new ASIC 
0159B0:  47 61 74 65 20 41 72 72 61 79 20 68 61 73 20 6E    Gate Array has n
0159C0:  6F 74 20 20 62 65 65 6E 20 20 65 6E 61 62 6C 65    ot  been  enable
0159D0:  64 29 2C 20 69 74 20 61 63 74 73 20 61 73 20 61    d), it acts as a
0159E0:  20 73 74 61 6E 64 61 72 64 0D 67 61 74 65 20 61     standard.gate a
0159F0:  72 72 61 79 2C 20 61 6C 6C 6F 77 69 6E 67 20 70    rray, allowing p
015A00:  77 61 72 65 20 70 61 6C 6C 65 74 74 65 29 2E 0D    ware pallette)..
015A10:  0D 54 68 65 20 68 61 72 64 77 61 72 65 20 63 6F    .The hardware co
015A20:  6C 6F 75 72 20 6E 75 6D 62 65 72 20 69 73 20 20    lour number is  
015A30:  64 69 66 66 65 72 65 6E 74 20 20 74 6F 20 20 74    different  to  t
015A40:  68 65 20 63 6F 6C 6F 75 72 20 72 61 6E 67 65 20    he colour range 
015A50:  75 73 65 64 20 62 79 0D 74 68 65 20 66 69 72 6D    used by.the firm
015A60:  77 61 72 65 2C 20 73 6F 20 61 20 63 6F 6E 76 65    ware, so a conve
015A70:  72 73 69 6F 6E 20 63 68 61 72 74 20 20 69 73 20    rsion chart  is 
015A80:  70 72 6F 76 69 64 65 64 20 66 6F 72 20 74 68 65    provided for the
015A90:  20 63 6F 72 72 65 73 70 6F 6E 64 69 6E 67 0D 66     corresponding.f
015AA0:  69 72 6D 77 61 72 65 2F 68 61 72 64 77 61 72 65    irmware/hardware
015AB0:  20 63 6F 6C 6F 75 72 20 76 61 6C 75 65 73 20 61     colour values a
015AC0:  6E 64 20 74 68 65 20 63 6F 72 72 65 73 70 6F 6E    nd the correspon
015AD0:  64 69 6E 67 20 63 6F 6C 6F 75 72 20 6E 61 6D 65    ding colour name
015AE0:  2E 0D 0D 45 76 65 6E 20 74 68 6F 75 67 68 20 74    ...Even though t
015AF0:  68 65 72 65 20 69 73 20 70 72 6F 76 69 73 69 6F    here is provisio
015B00:  6E 20 66 6F 72 20 20 33 32 20 20 63 6F 6C 6F 75    n for  32  colou
015B10:  72 73 2C 20 6F 6E 6C 79 20 32 37 20 61 72 65 20    rs, only 27 are 
015B20:  70 6F 73 73 69 62 6C 65 2E 0D 54 68 65 20 72 65    possible..The re
015B30:  6D 61 69 6E 69 6E 67 20 63 6F 6C 6F 75 72 73 20    maining colours 
015B40:  61 72 65 20 64 75 70 6C 69 63 61 74 65 73 20 20    are duplicates  
015B50:  6F 66 20 20 74 68 6F 73 65 20 20 61 6C 72 65 61    of  those  alrea
015B60:  64 79 20 69 6E 20 74 68 65 20 63 6F 6C 6F 75 72    dy in the colour
015B70:  0D 70 61 6C 65 74 74 65 2E 0D 0D 4E 6F 74 65 3A    .palette...Note:
015B80:  20 54 68 65 20 66 69 72 6D 77 61 72 65 20 6B 65     The firmware ke
015B90:  65 70 73 20 74 72 61 63 6B 20 6F 66 20 74 68 65    eps track of the
015BA0:  20 63 6F 6C 6F 75 72 73 20 69 74 20 69 73 20 75     colours it is u
015BB0:  73 69 6E 67 2E 20 45 76 65 72 79 20 56 53 59 4E    sing. Every VSYN
015BC0:  43 0D 28 61 73 73 75 6D 69 6E 67 20 69 6E 74 65    C.(assuming inte
015BD0:  72 72 75 70 74 73 20 61 72 65 20 65 6E 61 62 6C    rrupts are enabl
015BE0:  65 64 29 20 74 68 65 20 20 66 69 72 6D 77 61 72    ed) the  firmwar
015BF0:  65 20 73 65 74 73 20 74 68 65 20 63 6F 6C 6F 75    e sets the colou
015C00:  72 6F 67 72 61 6D 73 20 6F 6E 20 74 68 65 20 43    rograms on the C
015C10:  50 43 20 20 74 6F 20 77 6F 72 6B 20 6F 6E 20 74    PC  to work on t
015C20:  68 65 20 50 6C 75 73 20 6D 61 63 68 69 6E 65 73    he Plus machines
015C30:  0D 77 69 74 68 6F 75 74 20 6D 6F 64 69 66 69 63    .without modific
015C40:  61 74 69 6F 6E 2E 0D 0D 48 6F 77 65 76 65 72 20    ation...However 
015C50:  77 68 65 6E 20 74 68 65 20 6E 65 77 20 41 53 49    when the new ASI
015C60:  43 20 67 61 74 65 20 61 72 72 61 79 20 69 73 20    C gate array is 
015C70:  65 6E 61 62 6C 65 64 2C 20 69 74 20 61 6C 6C 6F    enabled, it allo
015C80:  77 73 20 74 68 65 20 75 73 65 72 20 74 6F 0D 75    ws the user to.u
015C90:  73 65 20 61 20 6E 75 6D 62 65 72 20 6F 66 20 65    se a number of e
015CA0:  78 74 72 61 20 65 6E 68 61 6E 63 65 6D 65 6E 74    xtra enhancement
015CB0:  73 2E 0D 0D 54 68 65 20 47 61 74 65 20 41 72 72    s...The Gate Arr
015CC0:  61 79 20 69 73 20 64 65 73 63 72 69 62 65 64 20    ay is described 
015CD0:  68 65 72 65 2C 20 20 61 73 20 20 69 74 20 20 77    here,  as  it  w
015CE0:  6F 75 6C 64 20 62 65 20 6F 6E 20 61 20 73 74 61    ould be on a sta
015CF0:  6E 64 61 72 64 20 43 50 43 2E 0D 0D 3D 3D 3D 3D    ndard CPC...====
015D00:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
015D10:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
015D20:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
015D30:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
015D40:  3D 3D 0D 0D 43 6F 6E 74 72 6F 6C 6C 69 6E 67 20    ==..Controlling 
015D50:  74 68 65 20 47 61 74 65 20 41 72 72 61 79 0D 2D    the Gate Array.-
015D60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
015D70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 54 68 65 20 67    ---------..The g
015D80:  61 74 65 20 61 72 72 61 79 20 69 73 20 20 63 6F    ate array is  co
015D90:  6E 74 72 6F 6C 6C 65 64 20 20 62 79 20 20 73 65    ntrolled  by  se
015DA0:  6E 64 69 6E 67 20 20 76 61 6C 75 65 73 20 20 74    nding  values  t
015DB0:  6F 20 70 6F 72 74 20 26 37 46 78 78 2E 20 54 68    o port &7Fxx. Th
015DC0:  65 0D 66 75 6E 63 74 69 6F 6E 20 77 68 69 63 68    e.function which
015DD0:  20 69 73 20 74 6F 20 62 65 20 70 65 72 66 6F 72     is to be perfor
015DE0:  6D 65 64 20 69 73 20 64 65 70 65 6E 64 61 6E 74    med is dependant
015DF0:  20 6F 6E 20 74 68 65 20 73 65 74 74 69 6E 67 73     on the settings
015E00:  72 73 2E 20 54 68 69 73 0D 65 6E 61 62 6C 65 73    rs. This.enables
015E10:  20 74 68 65 20 75 73 65 72 20 74 6F 20 68 61 76     the user to hav
015E20:  65 20 66 6C 61 73 68 69 6E 67 20 20 63 6F 6C 6F    e flashing  colo
015E30:  75 72 73 2E 20 20 49 66 20 74 68 65 20 75 73 65    urs.  If the use
015E40:  72 20 73 65 6C 65 63 74 73 20 61 20 6E 65 77 0D    r selects a new.
015E50:  63 6F 6C 6F 75 72 20 75 73 69 6E 67 20 74 68 65    colour using the
015E60:  20 67 61 74 65 20 61 72 72 61 79 2C 20 74 68 65     gate array, the
015E70:  20 6E 65 77 20 63 6F 6C 6F 75 72 20 77 69 6C 6C     new colour will
015E80:  20 66 6C 61 73 68 20 74 65 6D 70 6F 72 61 72 69     flash temporari
015E90:  6C 79 20 61 6E 64 0D 74 68 65 6E 20 72 65 74 75    ly and.then retu
015EA0:  72 6E 20 74 6F 20 69 74 27 73 20 6F 72 69 67 69    rn to it's origi
015EB0:  6E 61 6C 20 63 6F 6C 6F 75 72 2E 20 20 54 68 69    nal colour.  Thi
015EC0:  73 20 20 69 73 20 64 75 65 20 74 6F 20 74 68 65    s  is due to the
015ED0:  20 66 69 72 6D 77 61 72 65 20 72 65 2D 0D 73 65     firmware re-.se
015EE0:  74 74 69 6E 67 20 74 68 65 20 63 6F 6C 6F 75 72    tting the colour
015EF0:  2E 20 57 68 65 6E 20 20 75 73 69 6E 67 20 20 74    . When  using  t
015F00:  68 65 20 20 66 69 72 6D 77 61 72 65 2C 20 20 75    he  firmware,  u
015F10:  73 65 20 20 69 74 27 73 20 72 6F 75 74 69 6E 65    se  it's routine
015F20:  73 20 74 6F 0D 73 65 6C 65 63 74 20 74 68 65 20    s to.select the 
015F30:  63 6F 6C 6F 75 72 2C 20 61 6E 64 20 74 68 65 20    colour, and the 
015F40:  63 6F 6C 6F 75 72 20 77 69 6C 6C 20 72 65 6D 61    colour will rema
015F50:  69 6E 2E 0D 0D 53 75 6D 6D 61 72 79 3A 0D 0D 42    in...Summary:..B
015F60:  69 74 20 37 3A 20 7D 20 47 61 74 65 20 41 72 72    it 7: } Gate Arr
015F70:  61 79 20 66 75 6E 63 74 69 6F 6E 20 28 30 29 0D    ay function (0).
015F80:  42 69 74 20 36 3A 20 7D 20 20 20 20 20 20 20 20    Bit 6: }        
015F90:  20 20 20 20 20 20 20 20 20 20 20 20 20 28 31 29                 (1)
015FA0:  0D 0D 42 69 74 20 35 3A 20 4E 6F 74 20 75 73 65    ..Bit 5: Not use
015FB0:  64 2E 0D 0D 42 69 74 20 34 3A 20 7D 20 43 6F 6C    d...Bit 4: } Col
015FC0:  6F 75 72 20 6E 75 6D 62 65 72 20 28 66 72 6F 6D    our number (from
015FD0:  20 68 61 72 64 77 61 72 65 20 63 6F 6C 6F 75 72     hardware colour
015FE0:  20 70 61 6C 65 74 74 65 29 0D 42 69 74 20 33 3A     palette).Bit 3:
015FF0:  20 7D 0D 42 69 74 20 32 3A 20 7D 0D 42 69 74 20     }.Bit 2: }.Bit 
016000:  20 6F 66 20 62 69 74 73 0D 37 20 61 6E 64 20 36     of bits.7 and 6
016010:  3B 20 74 68 65 20 72 65 6D 61 69 6E 69 6E 67 20    ; the remaining 
016020:  62 69 74 73 20 61 72 65 20 64 61 74 61 20 75 73    bits are data us
016030:  65 64 20 62 79 20 74 68 65 20 61 70 70 72 6F 70    ed by the approp
016040:  69 61 74 65 20 66 75 6E 63 74 69 6F 6E 2E 0D 0D    iate function...
016050:  41 6C 6C 20 74 68 65 73 65 20 72 65 67 69 73 74    All these regist
016060:  65 72 73 20 61 72 65 20 77 72 69 74 65 20 6F 6E    ers are write on
016070:  6C 79 20 61 6E 64 20 63 61 6E 6E 6F 74 20 62 65    ly and cannot be
016080:  20 72 65 61 64 2E 0D 0D 41 20 62 72 69 65 66 20     read...A brief 
016090:  64 65 73 63 72 69 70 74 69 6F 6E 20 6F 66 20 74    description of t
0160A0:  68 65 20 20 66 75 6E 63 74 69 6F 6E 73 20 20 61    he  functions  a
0160B0:  72 65 20 20 64 65 73 63 72 69 62 65 64 20 62 65    re  described be
0160C0:  6C 6F 77 20 77 69 74 68 20 74 68 65 69 72 0D 73    low with their.s
0160D0:  65 74 74 69 6E 67 73 20 66 6F 72 20 62 69 74 20    ettings for bit 
0160E0:  37 20 61 6E 64 20 36 2E 0D 0D 42 69 74 20 37 20    7 and 6...Bit 7 
0160F0:  20 20 42 69 74 20 36 20 20 20 46 75 6E 63 74 69      Bit 6   Functi
016100:  6F 6E 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    on.-------------
016110:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 20 30 20    -----------.  0 
016120:  20 20 20 20 20 30 20 20 20 20 20 20 53 65 6C 65         0      Sele
016130:  63 74 20 77 68 69 63 68 20 70 65 6E 20 69 73 20    ct which pen is 
016140:  74 6F 20 68 61 76 65 20 69 74 73 20 63 6F 6C 6F    to have its colo
016150:  75 72 20 63 68 61 6E 67 65 64 2E 0D 20 20 30 20    ur changed..  0 
016160:  20 20 20 20 20 31 20 20 20 20 20 20 53 65 6C 65         1      Sele
016170:  63 74 20 63 6F 6C 6F 75 72 20 66 6F 72 20 63 75    ct colour for cu
016180:  72 72 65 6E 74 6C 79 20 73 65 6C 65 63 74 65 64    rrently selected
016190:  20 70 65 6E 2E 20 28 66 72 6F 6D 0D 20 20 20 20     pen. (from.    
0161A0:  20 20 20 20 20 20 20 20 20 20 20 20 68 61 72 64                hard
0161B0:  77 61 72 65 20 63 6F 6C 6F 75 72 20 70 61 6C 65    ware colour pale
0161C0:  74 74 65 29 0D 20 20 31 20 20 20 20 20 20 30 20    tte).  1      0 
0161D0:  20 20 20 20 20 53 65 6C 65 63 74 20 73 63 72 65         Select scre
0161E0:  65 6E 20 6D 6F 64 65 20 61 6E 64 20 72 6F 6D 20    en mode and rom 
0161F0:  63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 2E 0D 20    configuration.. 
016200:  31 3A 20 7D 0D 42 69 74 20 30 3A 20 7D 0D 0D 3D    1: }.Bit 0: }..=
016210:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
016220:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
016230:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
016240:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
016250:  3D 3D 3D 3D 3D 0D 0D 53 65 6C 65 63 74 20 73 63    =====..Select sc
016260:  72 65 65 6E 20 6D 6F 64 65 20 61 6E 64 20 72 6F    reen mode and ro
016270:  6D 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 0D    m configuration.
016280:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
016290:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0162A0:  2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 54 68 69 73 20 69    --------..This i
0162B0:  73 20 61 20 67 65 6E 65 72 61 6C 20 70 75 72 70    s a general purp
0162C0:  6F 73 65 20 72 65 67 69 73 74 65 72 20 72 65 73    ose register res
0162D0:  70 6F 6E 73 69 62 6C 65 20 66 6F 72 20 74 68 65    ponsible for the
0162E0:  20 73 63 72 65 65 6E 20 6D 6F 64 65 20 61 6E 64     screen mode and
0162F0:  0D 74 68 65 20 72 6F 6D 20 63 6F 6E 66 69 67 75    .the rom configu
016300:  72 61 74 69 6F 6E 2E 0D 0D 53 63 72 65 65 6E 20    ration...Screen 
016310:  6D 6F 64 65 20 73 65 6C 65 63 74 69 6F 6E 0D 2D    mode selection.-
016320:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
016330:  2D 2D 2D 2D 0D 0D 54 68 65 20 66 75 6E 63 74 69    ----..The functi
016340:  6F 6E 20 6F 66 20 62 69 74 73 20 20 31 20 20 61    on of bits  1  a
016350:  6E 64 20 20 30 20 20 69 73 20 20 74 6F 20 20 64    nd  0  is  to  d
016360:  65 66 69 6E 65 20 20 74 68 65 20 20 73 63 72 65    efine  the  scre
016370:  65 6E 20 6D 6F 64 65 2E 20 54 68 65 0D 73 65 74    en mode. The.set
016380:  74 69 6E 67 73 20 66 6F 72 20 62 69 74 73 20 31    tings for bits 1
016390:  20 61 6E 64 20 30 20 61 6E 64 20 20 74 68 65 20     and 0 and  the 
0163A0:  63 6F 72 72 65 73 70 6F 6E 64 69 6E 67 20 73 63    corresponding sc
0163B0:  72 65 65 6E 20 6D 6F 64 65 20 61 72 65 20 67 69    reen mode are gi
0163C0:  76 65 6E 0D 69 6E 20 74 68 65 20 74 61 62 6C 65    ven.in the table
0163D0:  20 62 65 6C 6F 77 2E 0D 0D 46 72 6F 6D 20 74 68     below...From th
0163E0:  65 20 20 63 6F 6D 62 69 6E 61 74 69 6F 6E 73 20    e  combinations 
0163F0:  20 70 6F 73 73 69 62 6C 65 2C 20 20 77 65 20 20     possible,  we  
016400:  20 31 20 20 20 20 20 20 31 20 20 20 20 20 20 53     1      1      S
016410:  65 6C 65 63 74 20 72 61 6D 20 63 6F 6E 66 69 67    elect ram config
016420:  75 72 61 74 69 6F 6E 20 28 62 61 6E 6B 20 73 77    uration (bank sw
016430:  69 74 63 68 69 6E 67 29 2E 0D 0D 3D 3D 3D 3D 3D    itching)...=====
016440:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
016450:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
016460:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
016470:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
016480:  3D 0D 0D 50 65 6E 20 73 65 6C 65 63 74 69 6F 6E    =..Pen selection
016490:  0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D    .-------------..
0164A0:  57 68 65 6E 20 62 69 74 20 37 20 61 6E 64 20 62    When bit 7 and b
0164B0:  69 74 20 36 20 61 72 65 20 73 65 74 20 20 74 6F    it 6 are set  to
0164C0:  20 30 2C 20 74 68 65 20 72 65 6D 61 69 6E 69 6E     0, the remainin
0164D0:  67 20 62 69 74 73 20 64 65 74 65 72 6D 69 6E 65    g bits determine
0164E0:  20 77 68 69 63 68 0D 70 65 6E 20 69 73 20 74 6F     which.pen is to
0164F0:  20 68 61 76 65 20 69 74 73 20 63 6F 6C 6F 75 72     have its colour
016500:  20 63 68 61 6E 67 65 64 2E 20 42 69 74 73 20 20     changed. Bits  
016510:  33 20 74 6F 20 30 20 64 65 66 69 6E 65 20 77 68    3 to 0 define wh
016520:  69 63 68 20 70 65 6E 20 69 73 20 74 6F 0D 62 65    ich pen is to.be
016530:  20 73 65 6C 65 63 74 65 64 2E 20 57 68 65 6E 20     selected. When 
016540:  62 69 74 20 34 20 69 73 20 73 65 74 20 20 74 6F    bit 4 is set  to
016550:  20 20 31 2C 20 74 68 65 20 76 61 6C 75 65 20 63      1, the value c
016560:  6F 6E 74 61 69 6E 65 64 20 69 6E 20 62 69 74 73    ontained in bits
016570:  20 33 2D 30 0D 69 73 20 69 67 6E 6F 72 65 64 20     3-0.is ignored 
016580:  61 6E 64 20 74 68 65 20 62 6F 72 64 65 72 20 69    and the border i
016590:  73 20 73 65 6C 65 63 74 65 64 2E 0D 0D 54 68 65    s selected...The
0165A0:  20 70 65 6E 20 72 65 6D 61 69 6E 73 20 73 65 6C     pen remains sel
0165B0:  65 63 74 65 64 20 75 6E 74 69 6C 20 61 6E 6F 74    ected until anot
0165C0:  68 65 72 20 69 73 20 73 65 6C 65 63 74 65 64 2E    her is selected.
0165D0:  0D 0D 45 61 63 68 20 6D 6F 64 65 20 68 61 73 20    ..Each mode has 
0165E0:  61 20 66 69 78 65 64 20 6E 75 6D 62 65 72 20 6F    a fixed number o
0165F0:  66 20 70 65 6E 73 2E 20 4D 6F 64 65 20 30 20 68    f pens. Mode 0 h
016600:  63 61 6E 20 20 73 65 65 20 20 74 68 61 74 20 20    can  see  that  
016610:  34 20 20 6D 6F 64 65 73 20 63 61 6E 20 62 65 0D    4  modes can be.
016620:  64 65 66 69 6E 65 64 2C 20 61 6C 74 68 6F 75 67    defined, althoug
016630:  68 20 74 68 65 20 41 6D 73 74 72 61 64 20 6F 6E    h the Amstrad on
016640:  6C 79 20 68 61 73 20 33 2E 20 4D 6F 64 65 20 33    ly has 3. Mode 3
016650:  20 69 73 20 73 69 6D 69 6C 61 72 20 74 6F 20 6D     is similar to m
016660:  6F 64 65 20 30 2C 0D 62 65 63 61 75 73 65 20 69    ode 0,.because i
016670:  74 20 68 61 73 20 74 68 65 20 20 73 61 6D 65 20    t has the  same 
016680:  20 72 65 73 6F 6C 75 74 69 6F 6E 2C 20 20 62 75     resolution,  bu
016690:  74 20 20 69 74 20 20 69 73 20 20 6C 69 6D 69 74    t  it  is  limit
0166A0:  65 64 20 20 74 6F 20 6F 6E 6C 79 20 34 0D 63 6F    ed  to only 4.co
0166B0:  6C 6F 75 72 73 2E 20 54 68 69 73 20 6D 6F 64 65    lours. This mode
0166C0:  20 6D 61 79 20 62 65 20 64 69 66 66 65 72 65 6E     may be differen
0166D0:  74 20 20 6F 6E 20 64 69 66 66 65 72 65 6E 74 20    t  on different 
0166E0:  76 65 72 73 69 6F 6E 73 20 6F 66 20 74 68 65 20    versions of the 
0166F0:  47 61 74 65 0D 41 72 72 61 79 20 61 6E 64 20 6F    Gate.Array and o
016700:  6E 20 64 69 66 66 65 72 65 6E 74 20 43 50 43 20    n different CPC 
016710:  6D 6F 64 65 6C 73 2E 0D 0D 54 68 65 20 20 73 63    models...The  sc
016720:  72 65 65 6E 20 20 6D 6F 64 65 20 20 69 73 20 20    reen  mode  is  
016730:  63 68 61 6E 67 65 64 20 20 77 68 65 6E 20 61 20    changed  when a 
016740:  48 53 59 4E 43 20 6F 63 63 75 72 73 2E 0D 0D 42    HSYNC occurs...B
016750:  69 74 20 31 20 20 20 42 69 74 20 30 20 20 20 20    it 1   Bit 0    
016760:  20 20 20 20 20 20 20 53 63 72 65 65 6E 20 6D 6F           Screen mo
016770:  64 65 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    de.-------------
016780:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
016790:  2D 2D 2D 2D 2D 2D 0D 20 20 30 20 20 20 20 20 20    ------.  0      
0167A0:  20 30 20 20 20 20 20 20 20 20 20 20 20 20 20 4D     0             M
0167B0:  6F 64 65 20 30 2C 31 36 30 78 32 30 30 2C 20 31    ode 0,160x200, 1
0167C0:  36 20 63 6F 6C 6F 75 72 73 2E 0D 20 20 30 20 20    6 colours..  0  
0167D0:  20 20 20 20 20 31 20 20 20 20 20 20 20 20 20 20         1          
0167E0:  20 20 20 4D 6F 64 65 20 31 2C 33 32 30 78 32 30       Mode 1,320x20
0167F0:  30 2C 20 34 20 63 6F 6C 6F 75 72 73 2E 0D 20 20    0, 4 colours..  
016800:  61 73 20 31 36 20 70 65 6E 73 2C 20 6D 6F 64 65    as 16 pens, mode
016810:  20 31 20 68 61 73 20 34 0D 70 65 6E 73 20 61 6E     1 has 4.pens an
016820:  64 20 6D 6F 64 65 20 32 20 68 61 73 20 32 20 70    d mode 2 has 2 p
016830:  65 6E 73 2E 0D 0D 53 75 6D 6D 61 72 79 0D 2D 2D    ens...Summary.--
016840:  2D 2D 2D 2D 2D 0D 0D 42 69 74 20 37 3A 20 7D 20    -----..Bit 7: } 
016850:  47 61 74 65 20 41 72 72 61 79 20 66 75 6E 63 74    Gate Array funct
016860:  69 6F 6E 20 28 30 29 0D 42 69 74 20 36 3A 20 7D    ion (0).Bit 6: }
016870:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
016880:  20 20 20 20 20 28 30 29 0D 0D 42 69 74 20 35 3A         (0)..Bit 5:
016890:  20 4E 6F 74 20 75 73 65 64 0D 0D 42 69 74 20 34     Not used..Bit 4
0168A0:  3A 20 42 6F 72 64 65 72 20 73 65 6C 65 63 74 69    : Border selecti
0168B0:  6F 6E 0D 20 20 20 20 20 20 20 20 31 3D 53 65 6C    on.        1=Sel
0168C0:  65 63 74 20 62 6F 72 64 65 72 2C 20 30 3D 75 73    ect border, 0=us
0168D0:  65 20 70 65 6E 20 76 61 6C 75 65 20 63 6F 6E 74    e pen value cont
0168E0:  61 69 6E 65 64 20 69 6E 20 62 69 74 73 20 33 2D    ained in bits 3-
0168F0:  30 2E 0D 0D 42 69 74 20 33 3A 20 7D 20 50 65 6E    0...Bit 3: } Pen
016900:  20 6E 75 6D 62 65 72 0D 42 69 74 20 32 3A 20 7D     number.Bit 2: }
016910:  0D 42 69 74 20 31 3A 20 7D 0D 42 69 74 20 30 3A    .Bit 1: }.Bit 0:
016920:  20 7D 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D     }..============
016930:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
016940:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
016950:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
016960:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 43 6F 6C 6F    ==========..Colo
016970:  75 72 20 73 65 6C 65 63 74 69 6F 6E 0D 2D 2D 2D    ur selection.---
016980:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 4F    -------------..O
016990:  6E 63 65 20 74 68 65 20 70 65 6E 20 68 61 73 20    nce the pen has 
0169A0:  62 65 65 6E 20 73 65 6C 65 63 74 65 64 20 74 68    been selected th
0169B0:  65 20 20 63 6F 6C 6F 75 72 20 63 61 6E 20 74 68    e  colour can th
0169C0:  65 6E 20 62 65 20 63 68 61 6E 67 65 64 2E 20 42    en be changed. B
0169D0:  69 74 73 20 34 0D 74 6F 20 30 20 68 6F 6C 64 20    its 4.to 0 hold 
0169E0:  74 68 65 20 63 6F 6C 6F 75 72 20 6E 75 6D 62 65    the colour numbe
0169F0:  72 20 28 66 72 6F 6D 20 74 68 65 20 68 61 72 64    r (from the hard
016A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
016A10:  13 00 01 00 02 09 4E E5 13 00 C1 02 00 00 00 02    ......N.........
016A20:  13 00 C6 02 00 00 00 02 13 00 C2 02 00 00 00 02    ................
016A30:  13 00 C7 02 00 00 00 02 13 00 C3 02 00 00 00 02    ................
016A40:  13 00 C8 02 00 00 00 02 13 00 C4 02 00 00 00 02    ................
016A50:  13 00 C9 02 00 00 00 02 13 00 C5 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:  31 20 20 20 20 20 20 20 30 20 20 20 20 20 20 20    1       0       
016B10:  20 20 20 20 20 20 4D 6F 64 65 20 32 2C 36 34 30          Mode 2,640
016B20:  78 32 30 30 2C 20 32 20 63 6F 6C 6F 75 72 73 0D    x200, 2 colours.
016B30:  20 20 31 20 20 20 20 20 20 20 31 20 20 20 20 20      1       1     
016B40:  20 20 20 20 20 20 20 20 4D 6F 64 65 20 33 2C 31            Mode 3,1
016B50:  36 30 78 32 30 30 2C 20 34 20 63 6F 6C 6F 75 72    60x200, 4 colour
016B60:  73 2E 0D 0D 0D 52 6F 6D 20 63 6F 6E 66 69 67 75    s....Rom configu
016B70:  72 61 74 69 6F 6E 20 73 65 6C 65 63 74 69 6F 6E    ration selection
016B80:  0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    .---------------
016B90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 28 53    ------------..(S
016BA0:  65 65 20 74 68 65 20 6D 65 6D 6F 72 79 20 6D 61    ee the memory ma
016BB0:  70 20 66 6F 72 20 6D 6F 72 65 20 69 6E 66 6F 72    p for more infor
016BC0:  6D 61 74 69 6F 6E 29 0D 0D 42 69 74 20 32 20 20    mation)..Bit 2  
016BD0:  69 73 20 20 75 73 65 64 20 20 74 6F 20 20 65 6E    is  used  to  en
016BE0:  61 62 6C 65 20 20 6F 72 20 20 64 69 73 61 62 6C    able  or  disabl
016BF0:  65 20 20 74 68 65 20 20 6C 6F 77 65 72 20 20 72    e  the  lower  r
016C00:  6F 6D 2E 20 20 54 68 65 20 20 6C 6F 77 65 72 0D    om.  The  lower.
016C10:  72 6F 6D 20 6F 63 63 75 70 69 65 73 20 6D 65 6D    rom occupies mem
016C20:  6F 72 79 20 61 64 64 72 65 73 73 65 73 73 20 20    ory addressess  
016C30:  26 30 30 30 30 2D 26 33 66 66 66 2E 0D 0D 57 68    &0000-&3fff...Wh
016C40:  65 6E 20 69 74 20 69 73 20 65 6E 61 62 6C 65 64    en it is enabled
016C50:  2C 20 72 65 61 64 69 6E 67 20 66 72 6F 6D 20 20    , reading from  
016C60:  26 30 30 30 30 2D 26 33 46 46 46 20 20 77 69 6C    &0000-&3FFF  wil
016C70:  6C 20 72 65 74 75 72 6E 20 64 61 74 61 20 69 6E    l return data in
016C80:  20 74 68 65 0D 72 6F 6D 2E 20 57 68 65 6E 20 61     the.rom. When a
016C90:  20 76 61 6C 75 65 20 69 73 20 77 72 69 74 74 65     value is writte
016CA0:  6E 20 74 6F 20 26 30 30 30 30 2D 26 33 46 46 46    n to &0000-&3FFF
016CB0:  2C 20 69 74 20 77 69 6C 6C 20 62 65 20 77 72 69    , it will be wri
016CC0:  74 74 65 6E 20 74 6F 20 74 68 65 0D 72 61 6D 20    tten to the.ram 
016CD0:  61 74 20 74 68 65 20 73 61 6D 65 20 61 64 64 72    at the same addr
016CE0:  65 73 73 20 61 73 20 74 68 65 20 72 6F 6D 2E 0D    ess as the rom..
016CF0:  0D 57 68 65 6E 20 69 74 20 69 73 20 64 69 73 61    .When it is disa
016D00:  78 65 64 27 20 77 69 74 68 20 74 68 65 20 6D 61    xed' with the ma
016D10:  69 6E 20 72 61 6D 2E 0D 0D 54 68 65 20 43 50 55    in ram...The CPU
016D20:  20 69 73 20 63 61 70 61 62 6C 65 20 6F 66 20 20     is capable of  
016D30:  61 63 63 65 73 73 69 6E 67 20 20 61 20 20 6D 61    accessing  a  ma
016D40:  78 69 6D 75 6D 20 20 6F 66 20 20 36 34 4B 20 20    ximum  of  64K  
016D50:  61 74 20 6F 6E 65 20 74 69 6D 65 2E 20 54 6F 0D    at one time. To.
016D60:  61 63 63 65 73 73 20 65 78 74 72 61 20 6D 65 6D    access extra mem
016D70:  6F 72 79 2C 20 62 6C 6F 63 6B 73 20 69 6E 20 74    ory, blocks in t
016D80:  68 65 20 6D 61 69 6E 20 20 72 61 6D 20 28 62 61    he main  ram (ba
016D90:  6E 6B 20 31 29 20 63 61 6E 20 62 65 20 65 78 63    nk 1) can be exc
016DA0:  68 61 6E 67 65 64 0D 77 69 74 68 20 62 6C 6F 63    hanged.with bloc
016DB0:  6B 73 20 69 6E 20 74 68 65 20 65 78 74 72 61 20    ks in the extra 
016DC0:  72 61 6D 2E 20 54 68 65 20 6E 75 6D 62 65 72 20    ram. The number 
016DD0:  6F 66 20 62 6C 6F 63 6B 73 20 65 78 63 68 61 6E    of blocks exchan
016DE0:  67 65 64 20 61 6E 64 20 74 68 65 0D 74 68 65 20    ged and the.the 
016DF0:  62 6C 6F 63 6B 73 20 20 74 68 65 79 20 20 63 68    blocks  they  ch
016E00:  61 6E 67 65 20 20 70 6C 61 63 65 20 20 77 69 74    ange  place  wit
016E10:  68 20 20 63 68 61 6E 67 65 73 20 20 64 65 70 65    h  changes  depe
016E20:  6E 64 69 6E 67 20 20 6F 6E 20 20 74 68 65 20 72    nding  on  the r
016E30:  61 6D 0D 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E    am.configuration
016E40:  20 75 73 65 64 2E 0D 0D 52 61 6D 20 63 6F 6E 66     used...Ram conf
016E50:  69 67 75 72 61 74 69 6F 6E 73 0D 2D 2D 2D 2D 2D    igurations.-----
016E60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 42    -------------..B
016E70:  69 74 73 20 20 32 2D 30 20 20 73 65 6C 65 63 74    its  2-0  select
016E80:  20 20 77 68 69 63 68 20 20 72 61 6D 20 20 63 6F      which  ram  co
016E90:  6E 66 69 67 75 72 61 74 69 6F 6E 20 20 20 69 73    nfiguration   is
016EA0:  20 20 74 6F 20 20 62 65 20 20 75 73 65 64 2E 20      to  be  used. 
016EB0:  20 57 68 65 6E 0D 63 6F 6E 66 69 67 75 72 61 74     When.configurat
016EC0:  69 6F 6E 20 30 20 69 73 20 73 65 6C 65 63 74 65    ion 0 is selecte
016ED0:  64 20 20 28 72 65 67 61 72 64 6C 65 73 73 20 20    d  (regardless  
016EE0:  6F 66 20 20 74 68 65 20 20 62 61 6E 6B 20 73 65    of  the  bank se
016EF0:  6C 65 63 74 65 64 29 2C 20 74 68 65 0D 43 50 55    lected), the.CPU
016F00:  62 6C 65 64 2C 20 64 61 74 61 20 72 65 61 64 20    bled, data read 
016F10:  20 66 72 6F 6D 20 20 26 30 30 30 30 2D 26 33 46     from  &0000-&3F
016F20:  46 46 20 77 69 6C 6C 20 72 65 74 75 72 6E 20 74    FF will return t
016F30:  68 65 20 64 61 74 61 0D 69 6E 20 74 68 65 20 72    he data.in the r
016F40:  61 6D 2E 0D 0D 53 69 6D 69 6C 61 72 6C 79 2C 20    am...Similarly, 
016F50:  62 69 74 20 33 20 63 6F 6E 74 72 6F 6C 73 20 65    bit 3 controls e
016F60:  6E 61 62 6C 69 6E 67 20 6F 72 20 64 69 73 61 62    nabling or disab
016F70:  6C 69 6E 67 20 6F 66 20 74 68 65 20 75 70 70 65    ling of the uppe
016F80:  72 20 72 6F 6D 2E 0D 0D 54 68 65 20 75 70 70 65    r rom...The uppe
016F90:  72 20 72 6F 6D 20 72 65 73 69 64 65 73 20 69 6E    r rom resides in
016FA0:  20 6D 65 6D 6F 72 79 20 20 61 64 64 72 65 73 73     memory  address
016FB0:  65 73 73 20 26 43 30 30 30 2D 26 46 46 46 46 2E    ess &C000-&FFFF.
016FC0:  20 54 68 65 20 75 70 70 65 72 20 72 6F 6D 0D 63     The upper rom.c
016FD0:  61 6E 20 62 65 20 62 61 73 69 63 20 6F 72 20 61    an be basic or a
016FE0:  6E 79 20 6F 74 68 65 72 20 20 65 78 74 72 61 20    ny other  extra 
016FF0:  20 65 78 70 61 6E 73 69 6F 6E 20 20 72 6F 6D 73     expansion  roms
017000:  20 77 68 69 63 68 20 6D 61 79 20 62 65 20 70 6C     which may be pl
017010:  75 67 67 65 64 0D 69 6E 74 6F 20 61 6E 20 65 78    ugged.into an ex
017020:  70 61 6E 73 69 6F 6E 20 62 6F 61 72 64 2E 20 54    pansion board. T
017030:  68 65 20 75 70 70 65 72 20 72 6F 6D 20 20 69 73    he upper rom  is
017040:  20 73 65 6C 65 63 74 65 64 20 62 79 20 77 72 69     selected by wri
017050:  74 69 6E 67 20 74 68 65 20 72 6F 6D 0D 6E 75 6D    ting the rom.num
017060:  62 65 72 20 74 6F 20 70 6F 72 74 20 26 44 46 78    ber to port &DFx
017070:  78 2E 20 28 53 65 65 20 75 70 70 65 72 20 72 6F    x. (See upper ro
017080:  6D 20 73 65 6C 65 63 74 69 6F 6E 20 66 6F 72 20    m selection for 
017090:  6D 6F 72 65 20 69 6E 66 6F 72 6D 61 74 69 6F 6E    more information
0170A0:  29 2E 0D 0D 57 68 65 6E 20 74 68 65 20 75 70 70    )...When the upp
0170B0:  65 72 20 72 6F 6D 20 69 73 20 20 65 6E 61 62 6C    er rom is  enabl
0170C0:  65 64 2C 20 20 72 65 61 64 69 6E 67 20 66 72 6F    ed,  reading fro
0170D0:  6D 20 26 63 30 30 30 2D 26 66 66 66 66 2C 20 77    m &c000-&ffff, w
0170E0:  69 6C 6C 20 72 65 74 75 72 6E 0D 64 61 74 61 20    ill return.data 
0170F0:  69 6E 20 74 68 65 20 72 6F 6D 2E 20 20 57 68 65    in the rom.  Whe
017100:  20 77 69 6C 6C 20 6F 6E 6C 79 20 61 63 63 65 73     will only acces
017110:  73 20 74 68 65 20 20 6D 61 69 6E 20 20 72 61 6D    s the  main  ram
017120:  2E 20 20 57 68 65 6E 20 63 6F 6E 66 69 67 75 72    .  When configur
017130:  61 74 69 6F 6E 20 32 20 69 73 20 73 65 6C 65 63    ation 2 is selec
017140:  74 65 64 0D 74 68 65 20 43 50 55 20 77 69 6C 6C    ted.the CPU will
017150:  20 6F 6E 6C 79 20 61 63 63 65 73 73 20 74 68 65     only access the
017160:  20 62 61 6E 6B 20 73 65 6C 65 63 74 65 64 2E 0D     bank selected..
017170:  0D 49 6E 20 74 68 65 20 74 61 62 6C 65 20 61 62    .In the table ab
017180:  6F 76 65 2C 20 30 2D 33 20 61 72 65 20 74 68 65    ove, 0-3 are the
017190:  20 20 62 6C 6F 63 6B 73 20 20 69 6E 20 74 68 65      blocks  in the
0171A0:  20 6D 61 69 6E 20 72 61 6D 20 28 62 61 6E 6B 20     main ram (bank 
0171B0:  31 29 2C 20 61 6E 64 0D 34 2D 37 20 61 72 65 20    1), and.4-7 are 
0171C0:  74 68 65 20 62 6C 6F 63 6B 73 20 6F 66 20 20 74    the blocks of  t
0171D0:  68 65 20 20 73 65 6C 65 63 74 65 64 20 20 62 61    he  selected  ba
0171E0:  6E 6B 2C 20 20 61 73 20 74 68 65 79 20 77 6F 75    nk,  as they wou
0171F0:  6C 64 20 6E 6F 72 6D 61 6C 6C 79 20 62 65 0D 61    ld normally be.a
017200:  72 72 61 6E 67 65 64 20 73 68 6F 77 6E 20 62 65    rranged shown be
017210:  6C 6F 77 2E 20 54 68 65 69 72 20 6E 65 77 20 20    low. Their new  
017220:  70 6F 73 69 74 69 6F 6E 2C 20 20 69 73 20 74 68    position,  is th
017230:  65 20 70 6F 73 69 74 69 6F 6E 20 74 68 65 79 20    e position they 
017240:  77 6F 75 6C 64 0D 74 61 6B 65 20 69 66 20 74 68    would.take if th
017250:  61 74 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E    at configuration
017260:  20 77 61 73 20 75 73 65 64 2E 0D 0D 49 74 20 69     was used...It i
017270:  73 20 6E 6F 74 20 61 64 76 69 73 65 61 62 6C 65    s not adviseable
017280:  20 20 74 6F 20 20 75 73 65 20 20 63 6F 6E 66 69      to  use  confi
017290:  67 75 72 61 74 69 6F 6E 20 20 32 20 20 77 68 65    guration  2  whe
0172A0:  6E 20 20 74 68 65 20 66 69 72 6D 77 61 72 65 20    n  the firmware 
0172B0:  69 73 0D 72 75 6E 6E 69 6E 67 2C 20 6F 72 20 74    is.running, or t
0172C0:  68 65 20 63 6F 6D 70 75 74 65 72 20 77 69 6C 6C    he computer will
0172D0:  20 63 72 61 73 68 20 61 6E 64 20 79 6F 75 20 77     crash and you w
0172E0:  69 6C 6C 20 6C 6F 73 65 20 76 61 6C 75 61 62 6C    ill lose valuabl
0172F0:  65 20 64 61 74 61 2E 0D 0D 4E 4F 54 45 3A 20 4E    e data...NOTE: N
017300:  6E 20 20 64 61 74 61 20 20 69 73 20 20 77 72 69    n  data  is  wri
017310:  74 74 65 6E 20 20 74 6F 20 20 26 63 30 30 30 2D    tten  to  &c000-
017320:  26 46 46 46 46 2C 20 69 74 20 77 69 6C 6C 20 62    &FFFF, it will b
017330:  65 0D 77 72 69 74 74 65 6E 20 74 6F 20 74 68 65    e.written to the
017340:  20 72 61 6D 20 61 74 20 74 68 65 20 73 61 6D 65     ram at the same
017350:  20 61 64 64 72 65 73 73 20 61 73 20 74 68 65 20     address as the 
017360:  72 6F 6D 2E 0D 0D 57 68 65 6E 20 74 68 65 20 75    rom...When the u
017370:  70 70 65 72 20 72 6F 6D 20 69 73 20 64 69 73 61    pper rom is disa
017380:  62 6C 65 64 2C 20 61 6E 64 20 20 64 61 74 61 20    bled, and  data 
017390:  69 73 20 72 65 61 64 20 66 72 6F 6D 20 26 63 30    is read from &c0
0173A0:  30 30 2D 26 66 66 66 66 20 74 68 65 0D 64 61 74    00-&ffff the.dat
0173B0:  61 20 72 65 74 75 72 6E 65 64 20 77 69 6C 6C 20    a returned will 
0173C0:  62 65 20 74 68 65 20 64 61 74 61 20 69 6E 20 74    be the data in t
0173D0:  68 65 20 72 61 6D 2E 0D 0D 42 69 74 20 34 20 63    he ram...Bit 4 c
0173E0:  6F 6E 74 72 6F 6C 73 20 20 74 68 65 20 20 43 50    ontrols  the  CP
0173F0:  55 20 20 69 6E 74 65 72 72 75 70 74 73 2E 20 20    U  interrupts.  
017400:  41 20 20 43 50 55 20 20 69 6E 74 65 72 72 75 70    A  CPU  interrup
017410:  74 20 20 6F 63 63 75 72 73 20 65 76 65 72 79 0D    t  occurs every.
017420:  33 30 30 74 68 20 6F 66 20 61 20 73 65 63 6F 6E    300th of a secon
017430:  64 2E 20 57 68 65 6E 20 61 6E 20 20 69 6E 74 65    d. When an  inte
017440:  72 72 75 70 74 20 20 6F 63 63 75 72 73 2C 20 74    rrupt  occurs, t
017450:  68 65 20 43 50 55 20 73 74 6F 70 73 20 65 78 65    he CPU stops exe
017460:  63 75 74 69 6E 67 0D 74 68 65 20 63 75 72 72 65    cuting.the curre
017470:  6E 74 20 70 72 6F 67 72 61 6D 2C 20 20 61 6E 64    nt program,  and
017480:  20 20 65 78 65 63 75 74 65 73 20 20 61 6E 20 20      executes  an  
017490:  69 6E 74 65 72 72 75 70 74 20 20 70 72 6F 67 72    interrupt  progr
0174A0:  61 6D 2E 20 20 57 68 65 6E 20 74 68 65 0D 69 6E    am.  When the.in
0174B0:  74 65 72 72 75 70 74 20 70 72 6F 67 72 61 6D 20    terrupt program 
0174C0:  20 68 61 73 20 20 62 65 65 6E 20 20 63 6F 6D 70     has  been  comp
0174D0:  6C 65 74 65 64 2C 20 20 69 74 20 20 72 65 74 75    leted,  it  retu
0174E0:  72 6E 73 20 20 74 6F 20 20 74 68 65 20 63 75 72    rns  to  the cur
0174F0:  72 65 6E 74 0D 70 72 6F 67 72 61 6D 2E 20 28 53    rent.program. (S
017500:  6F 72 6D 61 6C 6C 79 20 74 68 65 20 20 43 50 43    ormally the  CPC
017510:  20 20 72 75 6E 73 20 20 69 6E 20 20 72 61 6D 20      runs  in  ram 
017520:  20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 20     configuration  
017530:  30 20 20 28 41 4D 53 44 4F 53 29 20 61 6E 64 0D    0  (AMSDOS) and.
017540:  63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 31 20    configuration 1 
017550:  28 43 50 2F 4D 29 2E 0D 0D 0D 4E 6F 72 6D 61 6C    (CP/M)....Normal
017560:  20 61 72 72 61 6E 67 65 6D 65 6E 74 20 6F 66 20     arrangement of 
017570:  62 6C 6F 63 6B 73 3A 0D 0D 28 57 69 74 68 6F 75    blocks:..(Withou
017580:  74 20 61 6E 79 20 72 61 6D 20 63 6F 6E 66 69 67    t any ram config
017590:  75 72 61 74 69 6F 6E 20 73 65 6C 65 63 74 65 64    uration selected
0175A0:  29 2E 0D 0D 20 20 20 20 20 20 20 20 4D 61 69 6E    )...        Main
0175B0:  20 52 61 6D 20 20 20 20 20 20 20 20 53 65 6C 65     Ram        Sele
0175C0:  63 74 65 64 20 62 61 6E 6B 0D 20 20 20 20 20 20    cted bank.      
0175D0:  20 20 28 62 61 6E 6B 20 31 29 0D 0D 26 46 46 46      (bank 1)..&FFF
0175E0:  46 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    F   +-----------
0175F0:  2D 2D 2D 2D 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----+-----------
017600:  2D 2D 2D 2D 2B 0D 20 20 20 20 20 20 20 20 7C 20    ----+.        | 
017610:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20                  | 
017620:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D                  |.
017630:  20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20            |       
017640:  33 20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20    3       |       
017650:  37 20 20 20 20 20 20 20 7C 0D 20 20 20 20 20 20    7       |.      
017660:  20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20      |             
017670:  20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20      |             
017680:  20 20 7C 0D 26 43 30 30 30 20 20 20 2B 2D 2D 2D      |.&C000   +---
017690:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2B 2D 2D 2D    ------------+---
0176A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2B 0D 20 20    ------------+.  
0176B0:  20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20          |         
0176C0:  20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20          |         
0176D0:  20 20 20 20 20 20 7C 0D 20 20 20 20 20 20 20 20          |.        
0176E0:  7C 20 20 20 20 20 20 20 32 20 20 20 20 20 20 20    |       2       
0176F0:  7C 20 20 20 20 20 20 20 36 20 20 20 20 20 20 20    |       6       
017700:  65 65 20 69 6E 74 65 72 72 75 70 74 73 20 66 6F    ee interrupts fo
017710:  72 20 6D 6F 72 65 20 69 6E 66 6F 72 6D 61 74 69    r more informati
017720:  6F 6E 29 2E 0D 0D 42 69 74 20 34 20 69 73 20 75    on)...Bit 4 is u
017730:  73 65 64 20 74 6F 20 64 65 74 65 72 6D 69 6E 65    sed to determine
017740:  20 77 68 65 74 68 65 72 20 43 50 55 20 69 6E 74     whether CPU int
017750:  65 72 72 75 70 74 73 20 61 72 65 20 61 6C 6C 6F    errupts are allo
017760:  77 65 64 2E 0D 0D 57 68 65 6E 20 74 68 69 73 20    wed...When this 
017770:  62 69 74 20 20 69 73 20 20 73 65 74 20 20 74 6F    bit  is  set  to
017780:  20 20 31 2C 20 20 69 74 20 20 70 72 65 76 65 6E      1,  it  preven
017790:  74 73 20 20 74 68 65 20 20 6E 65 78 74 20 69 6E    ts  the  next in
0177A0:  74 65 72 72 75 70 74 20 66 72 6F 6D 0D 6F 63 63    terrupt from.occ
0177B0:  75 72 69 6E 67 2E 0D 0D 57 68 65 6E 20 74 68 69    uring...When thi
0177C0:  73 20 62 69 74 20 69 73 20 73 65 74 20 74 6F 20    s bit is set to 
0177D0:  30 2C 20 74 68 65 20 6E 65 78 74 20 69 6E 74 65    0, the next inte
0177E0:  72 72 75 70 74 20 69 73 20 65 6E 61 62 6C 65 64    rrupt is enabled
0177F0:  2E 0D 0D 53 75 6D 6D 61 72 79 3A 0D 0D 42 69 74    ...Summary:..Bit
017800:  20 37 3A 20 7D 20 47 61 74 65 20 41 72 72 61 79     7: } Gate Array
017810:  20 66 75 6E 63 74 69 6F 6E 20 28 31 29 0D 42 69     function (1).Bi
017820:  74 20 36 3A 20 7D 20 20 20 20 20 20 20 20 20 20    t 6: }          
017830:  20 20 20 20 20 20 20 20 20 20 20 28 30 29 0D 0D               (0)..
017840:  42 69 74 20 35 3A 20 4E 6F 74 20 75 73 65 64 2E    Bit 5: Not used.
017850:  0D 0D 42 69 74 20 34 3A 20 43 50 55 20 49 6E 74    ..Bit 4: CPU Int
017860:  65 72 72 75 70 74 20 65 6E 61 62 6C 65 2F 64 69    errupt enable/di
017870:  73 61 62 6C 65 0D 20 20 20 20 20 20 20 31 3A 64    sable.       1:d
017880:  69 73 61 62 6C 65 20 6E 65 78 74 20 69 6E 74 65    isable next inte
017890:  72 72 75 70 74 2C 20 30 3A 65 6E 61 62 6C 65 20    rrupt, 0:enable 
0178A0:  6E 65 78 74 20 69 6E 74 65 72 72 75 70 74 0D 0D    next interrupt..
0178B0:  42 69 74 20 33 3A 20 55 70 70 65 72 20 72 6F 6D    Bit 3: Upper rom
0178C0:  20 65 6E 61 62 6C 65 2F 64 69 73 61 62 6C 65 2E     enable/disable.
0178D0:  20 28 45 78 70 61 6E 73 69 6F 6E 20 72 6F 6D 73     (Expansion roms
0178E0:  29 0D 20 20 20 20 20 20 20 31 3A 64 69 73 61 62    ).       1:disab
0178F0:  6C 65 20 75 70 70 65 72 20 72 6F 6D 2C 20 30 3A    le upper rom, 0:
017900:  7C 0D 20 20 20 20 20 20 20 20 7C 20 20 20 20 20    |.        |     
017910:  20 20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20              |     
017920:  20 20 20 20 20 20 20 20 20 20 7C 0D 26 38 30 30              |.&800
017930:  30 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    0   +-----------
017940:  2D 2D 2D 2D 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----+-----------
017950:  2D 2D 2D 2D 2B 0D 20 20 20 20 20 20 20 20 7C 20    ----+.        | 
017960:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 20                  | 
017970:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C 0D                  |.
017980:  20 20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20            |       
017990:  31 20 20 20 20 20 20 20 7C 20 20 20 20 20 20 20    1       |       
0179A0:  35 20 20 20 20 20 20 20 7C 0D 20 20 20 20 20 20    5       |.      
0179B0:  20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20      |             
0179C0:  20 20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20      |             
0179D0:  20 20 7C 0D 26 34 30 30 30 20 20 20 2B 2D 2D 2D      |.&4000   +---
0179E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2B 2D 2D 2D    ------------+---
0179F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2B 0D 20 20    ------------+.  
017A00:  20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20          |         
017A10:  20 20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20          |         
017A20:  20 20 20 20 20 20 7C 0D 20 20 20 20 20 20 20 20          |.        
017A30:  7C 20 20 20 20 20 20 20 30 20 20 20 20 20 20 20    |       0       
017A40:  7C 20 20 20 20 20 20 20 34 20 20 20 20 20 20 20    |       4       
017A50:  7C 0D 20 20 20 20 20 20 20 20 7C 20 20 20 20 20    |.        |     
017A60:  20 20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20              |     
017A70:  20 20 20 20 20 20 20 20 20 20 7C 0D 26 30 30 30              |.&000
017A80:  30 20 20 20 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    0   +-----------
017A90:  2D 2D 2D 2D 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----+-----------
017AA0:  2D 2D 2D 2D 2B 0D 0D 0D 42 69 74 20 32 20 20 20    ----+...Bit 2   
017AB0:  42 69 74 20 31 20 20 20 42 69 74 20 30 20 20 20    Bit 1   Bit 0   
017AC0:  43 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20 6E 75    Configuration nu
017AD0:  6D 62 65 72 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    mber.-----------
017AE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
017AF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
017B00:  65 6E 61 62 6C 65 20 75 70 70 65 72 20 72 6F 6D    enable upper rom
017B10:  0D 0D 42 69 74 20 32 3A 20 4C 6F 77 65 72 20 72    ..Bit 2: Lower r
017B20:  6F 6D 20 65 6E 61 62 6C 65 2F 64 69 73 61 62 6C    om enable/disabl
017B30:  65 2E 20 28 4F 70 65 72 61 74 69 6E 67 20 53 79    e. (Operating Sy
017B40:  73 74 65 6D 20 72 6F 6D 29 0D 20 20 20 20 20 20    stem rom).      
017B50:  20 31 3A 64 69 73 61 62 6C 65 20 6C 6F 77 65 72     1:disable lower
017B60:  20 72 6F 6D 2C 20 30 3A 65 6E 61 62 6C 65 20 6C     rom, 0:enable l
017B70:  6F 77 65 72 20 72 6F 6D 0D 0D 42 69 74 20 31 3A    ower rom..Bit 1:
017B80:  20 7D 20 53 63 72 65 65 6E 20 4D 6F 64 65 0D 42     } Screen Mode.B
017B90:  69 74 20 30 3A 20 7D 0D 0D 3D 3D 3D 3D 3D 3D 3D    it 0: }..=======
017BA0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
017BB0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
017BC0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
017BD0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D    ===============.
017BE0:  0D 53 65 6C 65 63 74 20 72 61 6D 20 63 6F 6E 66    .Select ram conf
017BF0:  69 67 75 72 61 74 69 6F 6E 0D 2D 2D 2D 2D 2D 2D    iguration.------
017C00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
017C10:  2D 2D 0D 0D 54 68 69 73 20 72 65 67 69 73 74 65    --..This registe
017C20:  72 20 69 73 20 75 73 65 64 20 74 6F 20 20 73 65    r is used to  se
017C30:  6C 65 63 74 20 20 74 68 65 20 20 72 61 6D 20 20    lect  the  ram  
017C40:  63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 2E 0D 0D    configuration...
017C50:  54 68 65 20 72 61 6D 20 69 73 20 73 70 6C 69 74    The ram is split
017C60:  20 69 6E 74 6F 20 62 61 6E 6B 73 20 6F 66 20 36     into banks of 6
017C70:  34 4B 2E 20 20 45 61 63 68 20 6F 66 20 74 68 65    4K.  Each of the
017C80:  73 65 20 62 61 6E 6B 73 20 69 73 20 73 70 6C 69    se banks is spli
017C90:  74 20 69 6E 74 6F 0D 62 6C 6F 63 6B 73 20 6F 66    t into.blocks of
017CA0:  20 31 36 4B 2E 20 55 73 69 6E 67 20 74 68 69 73     16K. Using this
017CB0:  20 20 72 65 67 69 73 74 65 72 2C 20 20 74 68 65      register,  the
017CC0:  20 20 75 73 65 72 20 20 63 61 6E 20 73 65 6C 65      user  can sele
017CD0:  63 74 20 77 68 69 63 68 20 62 61 6E 6B 0D 74 68    ct which bank.th
017CE0:  65 79 20 77 69 73 68 20 74 6F 20 75 73 65 20 61    ey wish to use a
017CF0:  6E 64 20 68 6F 77 20 69 74 20 69 73 20 27 6D 69    nd how it is 'mi
017D00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
017D10:  14 00 01 00 02 09 4E E5 14 00 C1 02 00 00 00 02    ......N.........
017D20:  14 00 C6 02 00 00 00 02 14 00 C2 02 00 00 00 02    ................
017D30:  14 00 C7 02 00 00 00 02 14 00 C3 02 00 00 00 02    ................
017D40:  14 00 C8 02 00 00 00 02 14 00 C4 02 00 00 00 02    ................
017D50:  14 00 C9 02 00 00 00 02 14 00 C5 02 00 00 00 02    ................
017D60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017D70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017D80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017D90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017DF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
017E00:  2D 0D 30 20 20 20 20 20 20 20 30 20 20 20 20 20    -.0       0     
017E10:  20 20 30 20 20 20 20 20 20 20 30 0D 30 20 20 20      0       0.0   
017E20:  20 20 20 20 30 20 20 20 20 20 20 20 31 20 20 20        0       1   
017E30:  20 20 20 20 31 0D 30 20 20 20 20 20 20 20 31 20        1.0       1 
017E40:  20 20 20 20 20 20 30 20 20 20 20 20 20 20 32 0D          0       2.
017E50:  30 20 20 20 20 20 20 20 31 20 20 20 20 20 20 20    0       1       
017E60:  31 20 20 20 20 20 20 20 33 0D 31 20 20 20 20 20    1       3.1     
017E70:  20 20 30 20 20 20 20 20 20 20 30 20 20 20 20 20      0       0     
017E80:  20 20 34 0D 31 20 20 20 20 20 20 20 30 20 20 20      4.1       0   
017E90:  20 20 20 20 31 20 20 20 20 20 20 20 35 0D 31 20        1       5.1 
017EA0:  20 20 20 20 20 20 31 20 20 20 20 20 20 20 30 20          1       0 
017EB0:  20 20 20 20 20 20 36 0D 31 20 20 20 20 20 20 20          6.1       
017EC0:  31 20 20 20 20 20 20 20 31 20 20 20 20 20 20 20    1       1       
017ED0:  37 0D 0D 0D 0D 4F 72 67 61 6E 69 7A 61 74 69 6F    7....Organizatio
017EE0:  6E 20 20 20 20 20 20 20 20 20 20 20 20 42 6C 6F    n            Blo
017EF0:  63 6B 20 61 63 63 65 73 73 65 64 20 61 74 20 6D    ck accessed at m
017F00:  65 6D 6F 72 79 20 61 64 64 72 65 73 73 0D 0D 20    emory address.. 
017F10:  20 20 20 20 20 20 20 20 20 20 26 30 30 30 30 2D              &0000-
017F20:  26 33 46 46 46 20 20 20 20 20 26 34 30 30 30 2D    &3FFF     &4000-
017F30:  26 37 66 66 66 20 20 20 20 20 26 38 30 30 30 2D    &7fff     &8000-
017F40:  26 62 66 66 66 20 20 20 20 26 63 30 30 30 2D 26    &bfff    &c000-&
017F50:  66 66 66 66 0D 0D 20 20 20 20 20 30 20 20 20 20    ffff..     0    
017F60:  20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20          0         
017F70:  20 20 20 20 20 20 31 20 20 20 20 20 20 20 20 20          1         
017F80:  20 20 20 20 20 20 32 20 20 20 20 20 20 20 20 20          2         
017F90:  20 20 20 20 20 20 33 0D 0D 20 20 20 20 20 31 20          3..     1 
017FA0:  20 20 20 20 20 20 20 20 20 30 20 20 20 20 20 20             0      
017FB0:  20 20 20 20 20 20 20 20 20 31 20 20 20 20 20 20             1      
017FC0:  20 20 20 20 20 20 20 20 20 32 20 20 20 20 20 20             2      
017FD0:  20 20 20 20 20 20 20 20 20 37 0D 0D 20 20 20 20             7..    
017FE0:  20 32 20 20 20 20 20 20 20 20 20 20 34 20 20 20     2          4   
017FF0:  20 20 20 20 20 20 20 20 20 20 20 20 35 20 20 20                5   
018000:  20 20 20 20 20 20 20 20 20 20 3B 47 61 74 65 20              ;Gate 
018010:  61 72 72 61 79 20 70 6F 72 74 0D 4C 44 20 41 2C    array port.LD A,
018020:  25 31 30 30 30 30 30 30 30 2B 25 30 30 30 30 31    %10000000+%00001
018030:  31 31 30 20 20 20 20 20 20 20 20 3B 4D 6F 64 65    110        ;Mode
018040:  20 20 61 6E 64 20 20 72 6F 6D 20 20 73 65 6C 65      and  rom  sele
018050:  63 74 69 6F 6E 20 20 28 61 6E 64 20 47 61 74 65    ction  (and Gate
018060:  0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
018070:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
018080:  20 3B 41 72 72 61 79 20 66 75 6E 63 74 69 6F 6E     ;Array function
018090:  29 0D 4F 55 54 20 28 43 29 2C 41 20 20 20 20 20    ).OUT (C),A     
0180A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0180B0:  20 20 3B 53 65 6E 64 20 69 74 0D 52 45 54 0D 0D      ;Send it.RET..
0180C0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0180D0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0180E0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0180F0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
018100:  3D 3D 3D 3D 3D 0D 0D 33 29 20 53 65 74 74 69 6E    =====..3) Settin
018110:  67 20 74 68 65 20 72 61 6D 20 63 6F 6E 66 69 67    g the ram config
018120:  75 72 61 74 69 6F 6E 2C 0D 0D 53 65 74 74 69 6E    uration,..Settin
018130:  67 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20    g configuration 
018140:  31 2E 0D 0D 4C 44 20 42 43 2C 26 37 46 30 30 20    1...LD BC,&7F00 
018150:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
018160:  20 20 20 20 3B 47 61 74 65 20 61 72 72 61 79 20        ;Gate array 
018170:  70 6F 72 74 0D 4C 44 20 41 2C 25 31 31 30 30 30    port.LD A,%11000
018180:  30 30 30 2B 25 30 30 30 30 30 30 30 31 20 20 20    000+%00000001   
018190:  20 20 20 20 20 3B 52 61 6D 20 20 63 6F 6E 66 69         ;Ram  confi
0181A0:  67 75 72 61 74 69 6F 6E 20 20 28 61 6E 64 20 20    guration  (and  
0181B0:  47 61 74 65 20 41 72 72 61 79 0D 20 20 20 20 20    Gate Array.     
0181C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0181D0:  20 20 20 20 20 20 20 20 20 20 20 3B 66 75 6E 63               ;func
0181E0:  74 69 6F 6E 29 0D 4F 55 54 20 28 43 29 2C 41 20    tion).OUT (C),A 
0181F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
018200:  20 20 20 20 20 20 20 20 20 20 20 20 36 20 20 20                6   
018210:  20 20 20 20 20 20 20 20 20 20 20 20 37 0D 0D 20                7.. 
018220:  20 20 20 20 33 20 20 20 20 20 20 20 20 20 20 30        3          0
018230:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 33                   3
018240:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32                   2
018250:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 37                   7
018260:  0D 0D 20 20 20 20 20 34 20 20 20 20 20 20 20 20    ..     4        
018270:  20 20 30 20 20 20 20 20 20 20 20 20 20 20 20 20      0             
018280:  20 20 34 20 20 20 20 20 20 20 20 20 20 20 20 20      4             
018290:  20 20 32 20 20 20 20 20 20 20 20 20 20 20 20 20      2             
0182A0:  20 20 33 0D 0D 20 20 20 20 20 35 20 20 20 20 20      3..     5     
0182B0:  20 20 20 20 20 30 20 20 20 20 20 20 20 20 20 20         0          
0182C0:  20 20 20 20 20 35 20 20 20 20 20 20 20 20 20 20         5          
0182D0:  20 20 20 20 20 32 20 20 20 20 20 20 20 20 20 20         2          
0182E0:  20 20 20 20 20 33 0D 0D 20 20 20 20 20 36 20 20         3..     6  
0182F0:  20 20 20 20 20 20 20 20 30 20 20 20 20 20 20 20            0       
018300:  20 20 20 20 20 20 20 20 36 20 20 20 20 20 20 20            6       
018310:  20 20 20 20 20 20 20 20 32 20 20 20 20 20 20 20            2       
018320:  20 20 20 20 20 20 20 20 33 0D 0D 20 20 20 20 20            3..     
018330:  37 20 20 20 20 20 20 20 20 20 20 30 20 20 20 20    7          0    
018340:  20 20 20 20 20 20 20 20 20 20 20 37 20 20 20 20               7    
018350:  20 20 20 20 20 20 20 20 20 20 20 32 20 20 20 20               2    
018360:  20 20 20 20 20 20 20 20 20 20 20 33 0D 0D 42 61               3..Ba
018370:  6E 6B 20 73 65 6C 65 63 74 69 6F 6E 73 0D 2D 2D    nk selections.--
018380:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 42    -------------..B
018390:  69 74 73 20 35 2D 33 20 73 65 6C 65 63 74 20 74    its 5-3 select t
0183A0:  68 65 20 62 61 6E 6B 20 72 65 71 75 69 72 65 64    he bank required
0183B0:  20 61 73 20 73 68 6F 77 6E 20 69 6E 20 74 68 65     as shown in the
0183C0:  20 74 61 62 6C 65 20 62 65 6C 6F 77 2E 0D 0D 42     table below...B
0183D0:  69 74 20 35 20 20 20 42 69 74 20 34 20 20 20 42    it 5   Bit 4   B
0183E0:  69 74 20 33 20 20 20 20 20 20 20 20 20 20 20 42    it 3           B
0183F0:  61 6E 6B 20 53 65 6C 65 63 74 65 64 0D 2D 2D 2D    ank Selected.---
018400:  20 20 20 20 20 20 3B 53 65 6E 64 20 69 74 0D 52          ;Send it.R
018410:  45 54 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ET..============
018420:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
018430:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
018440:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
018450:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 50 61 6C 65    ==========..Pale
018460:  74 74 65 20 63 6F 6E 76 65 72 73 69 6F 6E 20 63    tte conversion c
018470:  68 61 72 74 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    hart.-----------
018480:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20    -------------.. 
018490:  20 46 69 72 6D 77 61 72 65 20 63 6F 6C 6F 75 72     Firmware colour
0184A0:  20 20 20 20 20 20 20 43 6F 6C 6F 75 72 20 20 20           Colour   
0184B0:  20 20 20 20 20 20 20 48 61 72 64 77 61 72 65 20           Hardware 
0184C0:  70 61 6C 65 74 74 65 20 20 20 20 51 75 69 63 6B    palette    Quick
0184D0:  0D 20 20 6E 75 6D 62 65 72 20 20 20 20 20 20 20    .  number       
0184E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
0184F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 6E 75 6D                 num
018500:  62 65 72 20 20 20 20 20 20 20 20 52 65 66 65 72    ber        Refer
018510:  65 6E 63 65 0D 0D 20 20 20 20 20 30 20 20 20 20    ence..     0    
018520:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 6C                  Bl
018530:  61 63 6B 20 20 20 20 20 20 20 20 20 20 20 20 20    ack             
018540:  20 20 20 20 20 20 32 30 20 20 20 20 20 20 20 20          20        
018550:  20 20 26 35 34 0D 20 20 20 20 20 31 20 20 20 20      &54.     1    
018560:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 6C                  Bl
018570:  75 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20    ue              
018580:  20 20 20 20 20 20 34 20 20 20 20 20 20 20 20 20          4         
018590:  20 20 26 34 34 0D 20 20 20 20 20 32 20 20 20 20      &44.     2    
0185A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 72                  Br
0185B0:  69 67 68 74 20 42 6C 75 65 20 20 20 20 20 20 20    ight Blue       
0185C0:  20 20 20 20 20 20 32 31 20 20 20 20 20 20 20 20          21        
0185D0:  20 20 26 35 35 0D 20 20 20 20 20 33 20 20 20 20      &55.     3    
0185E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65                  Re
0185F0:  64 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    d               
018600:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
018610:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
018620:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 30 20 20 20    ----------. 0   
018630:  20 20 20 20 30 20 20 20 20 20 20 20 30 20 20 20        0       0   
018640:  20 20 20 20 20 20 20 20 20 20 20 42 61 6E 6B 20               Bank 
018650:  32 0D 20 30 20 20 20 20 20 20 20 30 20 20 20 20    2. 0       0    
018660:  20 20 20 31 20 20 20 20 20 20 20 20 20 20 20 20       1            
018670:  20 20 42 61 6E 6B 20 33 0D 20 30 20 20 20 20 20      Bank 3. 0     
018680:  20 20 31 20 20 20 20 20 20 20 30 20 20 20 20 20      1       0     
018690:  20 20 20 20 20 20 20 20 20 42 61 6E 6B 20 34 0D             Bank 4.
0186A0:  20 30 20 20 20 20 20 20 20 31 20 20 20 20 20 20     0       1      
0186B0:  20 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20     1              
0186C0:  42 61 6E 6B 20 35 0D 20 31 20 20 20 20 20 20 20    Bank 5. 1       
0186D0:  30 20 20 20 20 20 20 20 30 20 20 20 20 20 20 20    0       0       
0186E0:  20 20 20 20 20 20 20 42 61 6E 6B 20 36 0D 20 31           Bank 6. 1
0186F0:  20 20 20 20 20 20 20 30 20 20 20 20 20 20 20 31           0       1
018700:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 61                  Ba
018710:  6E 6B 20 37 0D 20 31 20 20 20 20 20 20 20 31 20    nk 7. 1       1 
018720:  20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20          0         
018730:  20 20 20 20 20 42 61 6E 6B 20 38 0D 20 31 20 20         Bank 8. 1  
018740:  20 20 20 20 20 31 20 20 20 20 20 20 20 31 20 20         1       1  
018750:  20 20 20 20 20 20 20 20 20 20 20 20 42 61 6E 6B                Bank
018760:  20 39 0D 0D 4E 4F 54 45 3A 0D 0D 49 66 20 79 6F     9..NOTE:..If yo
018770:  75 20 68 61 76 65 20 36 34 6B 2C 20 61 6E 64 20    u have 64k, and 
018780:  79 6F 75 20 61 74 74 65 6D 70 74 20 20 74 6F 20    you attempt  to 
018790:  75 73 65 20 61 20 62 61 6E 6B 20 61 6E 64 20 72    use a bank and r
0187A0:  61 6D 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E    am configuration
0187B0:  2C 0D 74 68 65 72 65 20 77 69 6C 6C 20 62 65 20    ,.there will be 
0187C0:  6E 6F 20 65 66 66 65 63 74 2E 20 20 69 2E 65 2E    no effect.  i.e.
0187D0:  20 20 74 68 65 20 20 61 72 72 61 6E 67 65 6D 65      the  arrangeme
0187E0:  6E 74 20 20 6F 66 20 20 74 68 65 20 36 34 4B 20    nt  of  the 64K 
0187F0:  77 69 6C 6C 20 6E 6F 74 0D 63 68 61 6E 67 65 2E    will not.change.
018800:  20 20 20 20 20 20 32 38 20 20 20 20 20 20 20 20          28        
018810:  20 20 26 35 43 0D 20 20 20 20 20 34 20 20 20 20      &5C.     4    
018820:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 4D 61                  Ma
018830:  67 65 6E 74 61 20 20 20 20 20 20 20 20 20 20 20    genta           
018840:  20 20 20 20 20 20 32 34 20 20 20 20 20 20 20 20          24        
018850:  20 20 26 35 38 0D 20 20 20 20 20 35 20 20 20 20      &58.     5    
018860:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 4D 61                  Ma
018870:  75 76 65 20 20 20 20 20 20 20 20 20 20 20 20 20    uve             
018880:  20 20 20 20 20 20 32 39 20 20 20 20 20 20 20 20          29        
018890:  20 20 26 35 44 0D 20 20 20 20 20 36 20 20 20 20      &5D.     6    
0188A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 72                  Br
0188B0:  69 67 68 74 20 52 65 64 20 20 20 20 20 20 20 20    ight Red        
0188C0:  20 20 20 20 20 20 31 32 20 20 20 20 20 20 20 20          12        
0188D0:  20 20 26 34 43 0D 20 20 20 20 20 37 20 20 20 20      &4C.     7    
0188E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 75                  Pu
0188F0:  72 70 6C 65 20 20 20 20 20 20 20 20 20 20 20 20    rple            
018900:  20 20 20 20 20 20 35 20 20 20 20 20 20 20 20 20          5         
018910:  20 20 26 34 35 0D 20 20 20 20 20 38 20 20 20 20      &45.     8    
018920:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 72                  Br
018930:  69 67 68 74 20 4D 61 67 65 6E 74 61 20 20 20 20    ight Magenta    
018940:  20 20 20 20 20 20 31 33 20 20 20 20 20 20 20 20          13        
018950:  20 20 26 34 44 0D 20 20 20 20 20 39 20 20 20 20      &4D.     9    
018960:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 72                  Gr
018970:  65 65 6E 20 20 20 20 20 20 20 20 20 20 20 20 20    een             
018980:  20 20 20 20 20 20 32 32 20 20 20 20 20 20 20 20          22        
018990:  20 20 26 35 36 0D 20 20 20 20 31 30 20 20 20 20      &56.    10    
0189A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 79                  Cy
0189B0:  61 6E 20 20 20 20 20 20 20 20 20 20 20 20 20 20    an              
0189C0:  20 20 20 20 20 20 36 20 20 20 20 20 20 20 20 20          6         
0189D0:  20 20 26 34 36 0D 20 20 20 20 31 31 20 20 20 20      &46.    11    
0189E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 6B                  Sk
0189F0:  79 20 42 6C 75 65 20 20 20 20 20 20 20 20 20 20    y Blue          
018A00:  0D 0D 49 66 20 79 6F 75 20 6F 6E 6C 79 20 68 61    ..If you only ha
018A10:  76 65 20 31 32 38 6B 2C 20 72 65 67 61 72 64 6C    ve 128k, regardl
018A20:  65 73 73 20 6F 66 20 74 68 65 20 62 61 6E 6B 20    ess of the bank 
018A30:  79 6F 75 20 63 68 6F 6F 73 65 2C 20 62 61 6E 6B    you choose, bank
018A40:  20 32 0D 77 69 6C 6C 20 62 65 20 73 65 6C 65 63     2.will be selec
018A50:  74 65 64 2E 0D 0D 49 66 20 79 6F 75 20 68 61 76    ted...If you hav
018A60:  65 20 6D 6F 72 65 20 74 68 61 6E 20 31 32 38 4B    e more than 128K
018A70:  2C 20 79 6F 75 20 20 77 69 6C 6C 20 20 62 65 20    , you  will  be 
018A80:  20 61 62 6C 65 20 74 6F 20 63 68 6F 6F 73 65 20     able to choose 
018A90:  74 68 65 20 62 61 6E 6B 20 61 6E 64 0D 74 68 65    the bank and.the
018AA0:  20 72 61 6D 20 63 6F 6E 66 69 67 75 72 61 74 69     ram configurati
018AB0:  6F 6E 20 61 6E 64 20 69 74 20 77 69 6C 6C 20 61    on and it will a
018AC0:  72 72 61 6E 67 65 20 74 68 65 20 72 61 6D 20 63    rrange the ram c
018AD0:  6F 72 72 65 63 74 6C 79 2E 0D 0D 53 75 6D 6D 61    orrectly...Summa
018AE0:  72 79 3A 0D 0D 42 69 74 20 37 3A 7D 20 47 61 74    ry:..Bit 7:} Gat
018AF0:  65 20 41 72 72 61 79 20 46 75 6E 63 74 69 6F 6E    e Array Function
018B00:  20 28 31 29 0D 42 69 74 20 36 3A 7D 20 20 20 20     (1).Bit 6:}    
018B10:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
018B20:  20 28 31 29 0D 0D 42 69 74 20 35 3A 7D 20 42 61     (1)..Bit 5:} Ba
018B30:  6E 6B 0D 42 69 74 20 34 3A 7D 0D 42 69 74 20 33    nk.Bit 4:}.Bit 3
018B40:  3A 7D 0D 0D 42 69 74 20 32 3A 7D 20 52 61 6D 20    :}..Bit 2:} Ram 
018B50:  63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 0D 42 69    configuration.Bi
018B60:  74 20 31 3A 7D 0D 42 69 74 20 30 3A 7D 0D 0D 3D    t 1:}.Bit 0:}..=
018B70:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
018B80:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
018B90:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
018BA0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
018BB0:  3D 3D 3D 3D 3D 0D 0D 50 72 6F 67 72 61 6D 6D 69    =====..Programmi
018BC0:  6E 67 20 74 68 65 20 47 61 74 65 20 41 72 72 61    ng the Gate Arra
018BD0:  79 20 2D 20 45 78 61 6D 70 6C 65 73 0D 2D 2D 2D    y - Examples.---
018BE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
018BF0:  2D 2D 2D 2D 2D 2D 2D 0D 0D 31 29 20 44 65 66 69    -------..1) Defi
018C00:  20 20 20 20 20 20 32 33 20 20 20 20 20 20 20 20          23        
018C10:  20 20 26 35 37 0D 20 20 20 20 31 32 20 20 20 20      &57.    12    
018C20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 59 65                  Ye
018C30:  6C 6C 6F 77 20 20 20 20 20 20 20 20 20 20 20 20    llow            
018C40:  20 20 20 20 20 20 33 30 20 20 20 20 20 20 20 20          30        
018C50:  20 20 26 35 45 0D 20 20 20 20 31 33 20 20 20 20      &5E.    13    
018C60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 68                  Wh
018C70:  69 74 65 20 20 20 20 20 20 20 20 20 20 20 20 20    ite             
018C80:  20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20          0         
018C90:  20 20 26 34 30 0D 20 20 20 20 31 34 20 20 20 20      &40.    14    
018CA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 61                  Pa
018CB0:  73 74 65 6C 20 42 6C 75 65 20 20 20 20 20 20 20    stel Blue       
018CC0:  20 20 20 20 20 20 33 31 20 20 20 20 20 20 20 20          31        
018CD0:  20 20 26 35 46 0D 20 20 20 20 31 35 20 20 20 20      &5F.    15    
018CE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 4F 72                  Or
018CF0:  61 6E 67 65 20 20 20 20 20 20 20 20 20 20 20 20    ange            
018D00:  20 20 20 20 20 20 31 34 20 20 20 20 20 20 20 20          14        
018D10:  20 20 26 34 45 0D 20 20 20 20 31 36 20 20 20 20      &4E.    16    
018D20:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 69                  Pi
018D30:  6E 6B 20 20 20 20 20 20 20 20 20 20 20 20 20 20    nk              
018D40:  20 20 20 20 20 20 37 20 20 20 20 20 20 20 20 20          7         
018D50:  20 20 26 34 37 0D 20 20 20 20 31 37 20 20 20 20      &47.    17    
018D60:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 61                  Pa
018D70:  73 74 65 6C 20 4D 61 67 65 6E 74 61 20 20 20 20    stel Magenta    
018D80:  20 20 20 20 20 20 31 35 20 20 20 20 20 20 20 20          15        
018D90:  20 20 26 34 46 0D 20 20 20 20 31 38 20 20 20 20      &4F.    18    
018DA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 72                  Br
018DB0:  69 67 68 74 20 47 72 65 65 6E 20 20 20 20 20 20    ight Green      
018DC0:  20 20 20 20 20 20 31 38 20 20 20 20 20 20 20 20          18        
018DD0:  20 20 26 35 32 0D 20 20 20 20 31 39 20 20 20 20      &52.    19    
018DE0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65                  Se
018DF0:  61 20 47 72 65 65 6E 20 20 20 20 20 20 20 20 20    a Green         
018E00:  6E 69 6E 67 20 74 68 65 20 63 6F 6C 6F 75 72 73    ning the colours
018E10:  2C 0D 0D 53 65 74 74 69 6E 67 20 70 65 6E 20 30    ,..Setting pen 0
018E20:  20 74 6F 20 42 72 69 67 68 74 20 57 68 69 74 65     to Bright White
018E30:  2E 0D 0D 4C 44 20 42 43 2C 26 37 46 30 30 20 20    ...LD BC,&7F00  
018E40:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
018E50:  20 20 20 3B 47 61 74 65 20 41 72 72 61 79 20 70       ;Gate Array p
018E60:  6F 72 74 0D 4C 44 20 41 2C 25 30 30 30 30 30 30    ort.LD A,%000000
018E70:  30 30 2B 30 20 20 20 20 20 20 20 20 20 20 20 20    00+0            
018E80:  20 20 20 20 3B 50 65 6E 20 6E 75 6D 62 65 72 20        ;Pen number 
018E90:  28 61 6E 64 20 47 61 74 65 20 41 72 72 61 79 20    (and Gate Array 
018EA0:  66 75 6E 63 74 69 6F 6E 29 0D 4F 55 54 20 28 43    function).OUT (C
018EB0:  29 2C 41 20 20 20 20 20 20 20 20 20 20 20 20 20    ),A             
018EC0:  20 20 20 20 20 20 20 20 20 20 3B 53 65 6E 64 20              ;Send 
018ED0:  70 65 6E 20 6E 75 6D 62 65 72 0D 4C 44 20 41 2C    pen number.LD A,
018EE0:  25 30 31 30 30 30 30 30 30 2B 31 31 20 20 20 20    %01000000+11    
018EF0:  20 20 20 20 20 20 20 20 20 20 20 3B 50 65 6E 20               ;Pen 
018F00:  63 6F 6C 6F 75 72 20 28 61 6E 64 20 47 61 74 65    colour (and Gate
018F10:  20 41 72 72 61 79 20 66 75 6E 63 74 69 6F 6E 29     Array function)
018F20:  0D 4F 55 54 20 28 43 29 2C 41 20 20 20 20 20 20    .OUT (C),A      
018F30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
018F40:  20 3B 53 65 6E 64 20 69 74 0D 52 45 54 0D 0D 3D     ;Send it.RET..=
018F50:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
018F60:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
018F70:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
018F80:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
018F90:  3D 3D 3D 3D 3D 0D 0D 32 29 20 53 65 74 74 69 6E    =====..2) Settin
018FA0:  67 20 74 68 65 20 6D 6F 64 65 20 61 6E 64 20 72    g the mode and r
018FB0:  6F 6D 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E    om configuration
018FC0:  2C 0D 0D 4D 6F 64 65 20 32 2C 20 75 70 70 65 72    ,..Mode 2, upper
018FD0:  20 61 6E 64 20 6C 6F 77 65 72 20 72 6F 6D 20 64     and lower rom d
018FE0:  69 73 61 62 6C 65 64 2E 0D 0D 4C 44 20 42 43 2C    isabled...LD BC,
018FF0:  26 37 46 30 30 20 20 20 20 20 20 20 20 20 20 20    &7F00           
019000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
019010:  15 00 01 00 02 09 4E E5 15 00 C1 02 00 00 00 02    ......N.........
019020:  15 00 C6 02 00 00 00 02 15 00 C2 02 00 00 00 02    ................
019030:  15 00 C7 02 00 00 00 02 15 00 C3 02 00 00 00 02    ................
019040:  15 00 C8 02 00 00 00 02 15 00 C4 02 00 00 00 02    ................
019050:  15 00 C9 02 00 00 00 02 15 00 C5 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:  20 20 20 20 20 20 32 20 20 20 20 20 20 20 20 20          2         
019110:  20 20 26 34 32 0D 20 20 20 20 32 30 20 20 20 20      &42.    20    
019120:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 72                  Br
019130:  69 67 68 74 20 43 79 61 6E 20 20 20 20 20 20 20    ight Cyan       
019140:  20 20 20 20 20 20 31 39 20 20 20 20 20 20 20 20          19        
019150:  20 20 26 35 33 0D 20 20 20 20 32 31 20 20 20 20      &53.    21    
019160:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 4C 69                  Li
019170:  6D 65 20 20 20 20 20 20 20 20 20 20 20 20 20 20    me              
019180:  20 20 20 20 20 20 32 36 20 20 20 20 20 20 20 20          26        
019190:  20 20 26 35 41 0D 20 20 20 20 32 32 20 20 20 20      &5A.    22    
0191A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 61                  Pa
0191B0:  73 74 65 6C 20 67 72 65 65 6E 20 20 20 20 20 20    stel green      
0191C0:  20 20 20 20 20 20 32 35 20 20 20 20 20 20 20 20          25        
0191D0:  20 20 26 35 39 0D 20 20 20 20 32 33 20 20 20 20      &59.    23    
0191E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 61                  Pa
0191F0:  73 74 65 6C 20 43 79 61 6E 20 20 20 20 20 20 20    stel Cyan       
019200:  20 20 20 20 20 20 32 37 20 20 20 20 20 20 20 20          27        
019210:  20 20 26 35 42 0D 20 20 20 20 32 34 20 20 20 20      &5B.    24    
019220:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 72                  Br
019230:  69 67 68 74 20 59 65 6C 6C 6F 77 20 20 20 20 20    ight Yellow     
019240:  20 20 20 20 20 20 31 30 20 20 20 20 20 20 20 20          10        
019250:  20 20 26 34 41 0D 20 20 20 20 32 35 20 20 20 20      &4A.    25    
019260:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 50 61                  Pa
019270:  73 74 65 6C 20 59 65 6C 6C 6F 77 20 20 20 20 20    stel Yellow     
019280:  20 20 20 20 20 20 33 20 20 20 20 20 20 20 20 20          3         
019290:  20 20 26 34 33 0D 20 20 20 20 32 36 20 20 20 20      &43.    26    
0192A0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 72                  Br
0192B0:  69 67 68 74 20 57 68 69 74 65 20 20 20 20 20 20    ight White      
0192C0:  20 20 20 20 20 20 31 31 20 20 20 20 20 20 20 20          11        
0192D0:  20 20 26 34 42 0D 0D 54 68 69 73 20 63 68 61 72      &4B..This char
0192E0:  74 20 61 6C 73 6F 20 67 69 76 65 73 20 20 61 20    t also gives  a 
0192F0:  20 71 75 69 63 6B 20 20 72 65 66 65 72 65 6E 63     quick  referenc
019300:  6E 61 74 65 0D 20 20 20 20 20 48 4C 20 3D 20 79    nate.     HL = y
019310:  20 63 6F 6F 72 64 69 6E 61 74 65 0D 0D 20 20 20     coordinate..   
019320:  20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20 41 46      Exit:..     AF
019330:  2C 42 43 2C 44 45 2C 48 4C 20 63 6F 72 72 75 70    ,BC,DE,HL corrup
019340:  74 2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D    t...     Notes:.
019350:  0D 20 20 20 20 20 54 68 65 20 63 6F 6F 72 64 69    .     The coordi
019360:  6E 61 74 65 20 69 73 20 72 65 6C 61 74 69 76 65    nate is relative
019370:  20 74 6F 20 74 68 65 20 6F 72 69 67 69 6E 2E 0D     to the origin..
019380:  0D 20 20 20 20 20 54 68 65 20 70 6F 73 69 74 69    .     The positi
019390:  6F 6E 20 63 61 6E 20 62 65 20 6F 75 74 73 69 64    on can be outsid
0193A0:  65 20 74 68 65 20 67 72 61 70 68 69 63 73 20 77    e the graphics w
0193B0:  69 6E 64 6F 77 2E 0D 20 20 20 20 20 54 68 65 20    indow..     The 
0193C0:  67 72 61 70 68 69 63 20 56 44 55 20 70 6C 6F 74    graphic VDU plot
0193D0:  74 69 6E 67 20 74 65 73 74 69 6E 67 20 61 6E 64    ting testing and
0193E0:  20 20 64 72 61 77 69 6E 67 20 72 6F 75 74 69 6E      drawing routin
0193F0:  65 73 20 61 72 65 20 73 65 74 20 74 6F 20 74 68    es are set to th
019400:  61 74 0D 20 20 20 20 20 70 6F 69 6E 74 2E 0D 0D    at.     point...
019410:  0D 0D 0D 0D 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D    ......     -----
019420:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019430:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019440:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019450:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019460:  0D 0D 20 20 20 20 20 26 42 42 43 33 20 2D 20 47    ..     &BBC3 - G
019470:  52 41 20 4D 4F 56 45 20 52 45 4C 41 54 49 56 45    RA MOVE RELATIVE
019480:  20 2D 20 4D 6F 76 65 20 74 6F 20 61 20 72 65 6C     - Move to a rel
019490:  61 74 69 76 65 20 70 6F 73 69 74 69 6F 6E 0D 0D    ative position..
0194A0:  20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20         Entry:..   
0194B0:  20 20 44 45 20 3D 20 73 69 67 6E 65 64 20 58 20      DE = signed X 
0194C0:  6F 66 66 73 65 74 0D 20 20 20 20 20 48 4C 20 3D    offset.     HL =
0194D0:  20 73 69 67 6E 65 64 20 59 20 6F 66 66 73 65 74     signed Y offset
0194E0:  0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20    ..     Exit:..  
0194F0:  20 20 20 41 46 2C 42 43 2C 44 45 2C 48 4C 20 63       AF,BC,DE,HL c
019500:  65 20 20 67 75 69 64 65 20 20 66 6F 72 20 70 72    e  guide  for pr
019510:  6F 67 72 61 6D 6D 69 6E 67 20 74 68 65 0D 63 6F    ogramming the.co
019520:  6C 6F 75 72 73 2E 20 54 68 65 20 6E 75 6D 62 65    lours. The numbe
019530:  72 20 69 73 20 74 68 65 20 63 6F 6C 6F 75 72 20    r is the colour 
019540:  20 6E 75 6D 62 65 72 20 20 77 68 69 63 68 20 63     number  which c
019550:  61 6E 20 62 65 20 73 65 6E 74 20 64 69 72 65 63    an be sent direc
019560:  74 6C 79 2C 0D 6F 6E 63 65 20 74 68 65 20 70 65    tly,.once the pe
019570:  6E 20 68 61 73 20 62 65 65 6E 20 73 65 6C 65 63    n has been selec
019580:  74 65 64 2C 20 74 6F 20 67 65 74 20 74 68 65 20    ted, to get the 
019590:  63 6F 6C 6F 75 72 20 77 61 6E 74 65 64 2E 0D 0D    colour wanted...
0195A0:  45 78 61 6D 70 6C 65 3A 0D 0D 6C 64 20 62 63 2C    Example:..ld bc,
0195B0:  26 37 66 30 30 2B 31 20 20 20 20 20 20 20 20 20    &7f00+1         
0195C0:  20 20 3B 47 61 74 65 20 61 72 72 61 79 20 66 75      ;Gate array fu
0195D0:  6E 63 74 69 6F 6E 20 28 73 65 74 20 70 65 6E 29    nction (set pen)
0195E0:  0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
0195F0:  20 20 20 20 20 20 20 20 20 3B 61 6E 64 20 70 65             ;and pe
019600:  6E 20 6E 75 6D 62 65 72 0D 6F 75 74 20 28 63 29    n number.out (c)
019610:  2C 63 0D 6C 64 20 62 63 2C 26 37 66 30 30 2B 26    ,c.ld bc,&7f00+&
019620:  34 31 20 20 20 20 20 20 20 20 20 3B 47 61 74 65    41         ;Gate
019630:  20 61 72 72 61 79 20 66 75 6E 63 74 69 6F 6E 20     array function 
019640:  28 73 65 74 20 63 6F 6C 6F 75 72 29 0D 20 20 20    (set colour).   
019650:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
019660:  20 20 20 20 20 3B 61 6E 64 20 63 6F 6C 6F 75 72         ;and colour
019670:  20 6E 75 6D 62 65 72 0D 6F 75 74 20 28 63 29 2C     number.out (c),
019680:  63 0D 72 65 74 0D 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D    c.ret..=========
019690:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0196A0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0196B0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0196C0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 1A    =============...
0196D0:  66 6F 1A 00 00 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    fo..............
0196E0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
0196F0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
019700:  6F 72 72 75 70 74 2E 0D 0D 20 20 20 20 20 2D 2D    orrupt...     --
019710:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019720:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019730:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019740:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019750:  2D 2D 2D 0D 0D 20 20 20 20 20 26 42 42 43 36 20    ---..     &BBC6 
019760:  2D 20 47 52 41 20 41 53 4B 20 43 55 52 53 4F 52    - GRA ASK CURSOR
019770:  20 2D 20 47 65 74 20 63 75 72 73 6F 72 20 70 6F     - Get cursor po
019780:  73 69 74 69 6F 6E 0D 0D 20 20 20 20 20 45 6E 74    sition..     Ent
019790:  72 79 3A 0D 0D 20 20 20 20 20 4E 6F 6E 65 0D 0D    ry:..     None..
0197A0:  20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20         Exit:..    
0197B0:  20 44 45 20 3D 20 58 20 63 6F 6F 72 64 69 6E 61     DE = X coordina
0197C0:  74 65 20 72 65 6C 61 74 69 76 65 20 74 6F 20 6F    te relative to o
0197D0:  72 69 67 69 6E 0D 20 20 20 20 20 48 4C 20 3D 20    rigin.     HL = 
0197E0:  59 20 63 6F 6F 72 64 69 6E 61 74 65 20 72 65 6C    Y coordinate rel
0197F0:  61 74 69 76 65 20 74 6F 20 6F 72 69 67 69 6E 0D    ative to origin.
019800:  0D 20 20 20 20 20 41 46 20 63 6F 72 72 75 70 74    .     AF corrupt
019810:  2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D    ...     --------
019820:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019830:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019840:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019850:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20    -------------.. 
019860:  20 20 20 20 26 42 42 43 39 20 2D 20 47 52 41 20        &BBC9 - GRA 
019870:  53 45 54 20 4F 52 49 47 49 4E 20 2D 20 53 65 74    SET ORIGIN - Set
019880:  20 6F 72 69 67 69 6E 0D 0D 20 20 20 20 20 45 6E     origin..     En
019890:  74 72 79 3A 0D 0D 20 20 20 20 20 44 45 20 3D 20    try:..     DE = 
0198A0:  58 20 63 6F 6F 72 64 69 6E 61 74 65 20 72 65 6C    X coordinate rel
0198B0:  61 74 69 76 65 20 74 6F 20 30 2C 30 0D 20 20 20    ative to 0,0.   
0198C0:  20 20 48 4C 20 3D 20 59 20 63 6F 6F 72 64 69 6E      HL = Y coordin
0198D0:  61 74 65 20 72 65 6C 61 74 69 76 65 20 74 6F 20    ate relative to 
0198E0:  30 2C 30 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D    0,0..     Exit:.
0198F0:  0D 20 20 20 20 20 41 46 2C 42 43 2C 44 45 2C 48    .     AF,BC,DE,H
019900:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019910:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019920:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019930:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019940:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019950:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019960:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019970:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019980:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019990:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0199A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0199B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0199C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0199D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0199E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0199F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019A90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019AA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019AB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019AC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019AD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019AE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019AF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
019B00:  4C 20 63 6F 72 72 75 70 74 2E 0D 0D 20 20 20 20    L corrupt...    
019B10:  20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 57 68     Notes:..     Wh
019B20:  65 6E 20 74 68 65 20 73 63 72 65 65 6E 20 69 73    en the screen is
019B30:  20 63 6C 65 61 72 65 64 20 77 69 74 68 20 53 43     cleared with SC
019B40:  52 20 53 45 54 20 4D 4F 44 45 20 74 68 65 20 6F    R SET MODE the o
019B50:  72 69 67 69 6E 20 69 73 20 72 65 73 74 6F 72 65    rigin is restore
019B60:  64 20 74 6F 0D 20 20 20 20 20 30 2C 30 2E 0D 0D    d to.     0,0...
019B70:  20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D         -----------
019B80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019B90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019BA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019BB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20    ----------..    
019BC0:  20 26 42 42 43 43 20 2D 20 47 52 41 20 47 45 54     &BBCC - GRA GET
019BD0:  20 4F 52 49 47 49 4E 20 2D 20 47 65 74 20 6F 72     ORIGIN - Get or
019BE0:  69 67 69 6E 0D 0D 20 20 20 20 20 45 6E 74 72 79    igin..     Entry
019BF0:  3A 0D 0D 20 20 20 20 20 4E 6F 6E 65 0D 0D 20 20    :..     None..  
019C00:  20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20 44       Exit:..     D
019C10:  45 20 3D 20 58 20 63 6F 6F 72 64 69 6E 61 74 65    E = X coordinate
019C20:  20 6F 66 20 6F 72 69 67 69 6E 20 72 65 6C 61 74     of origin relat
019C30:  69 76 65 20 74 6F 20 30 2C 30 0D 20 20 20 20 20    ive to 0,0.     
019C40:  48 4C 20 3D 20 59 20 63 6F 6F 72 64 69 6E 61 74    HL = Y coordinat
019C50:  65 20 6F 66 20 6F 72 69 67 69 6E 20 72 65 6C 61    e of origin rela
019C60:  74 69 76 65 20 74 6F 20 30 2C 30 0D 0D 20 20 20    tive to 0,0..   
019C70:  20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D      --------------
019C80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019C90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019CA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
019CB0:  2D 2D 2D 2D 2D 2D 2D 0D 0D 0D 0D 0D 0D 0D 0D 0D    -------.........
019CC0:  0D 0D 20 20 20 20 20 26 42 42 43 46 20 2D 20 47    ..     &BBCF - G
019CD0:  52 41 20 57 49 4E 20 57 49 44 54 48 20 2D 20 53    RA WIN WIDTH - S
019CE0:  65 74 20 20 74 68 65 20 20 6C 65 66 74 20 61 6E    et  the  left an
019CF0:  64 20 72 69 67 68 74 20 65 64 67 65 73 20 6F 66    d right edges of
019D00:  1B 40 0D 0D 0D 20 20 20 20 20 26 42 42 42 41 20    .@...     &BBBA 
019D10:  2D 20 47 52 41 20 49 4E 49 54 49 41 4C 49 53 45    - GRA INITIALISE
019D20:  20 2D 20 49 6E 69 74 69 61 6C 69 73 65 20 47 72     - Initialise Gr
019D30:  61 70 68 69 63 73 20 56 44 55 0D 0D 20 20 20 20    aphics VDU..    
019D40:  20 45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 4E 6F     Entry:..     No
019D50:  6E 65 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D    ne..     Exit:..
019D60:  20 20 20 20 20 41 46 2C 42 43 2C 44 45 2C 48 4C         AF,BC,DE,HL
019D70:  20 63 6F 72 72 75 70 74 2E 0D 0D 20 20 20 20 20     corrupt...     
019D80:  4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54 68 65    Notes:..     The
019D90:  20 67 72 61 70 68 69 63 20 69 6E 64 69 72 65 63     graphic indirec
019DA0:  74 69 6F 6E 73 20 61 72 65 20 73 65 74 20 74 6F    tions are set to
019DB0:  20 74 68 65 69 72 20 64 65 66 61 75 6C 74 20 72     their default r
019DC0:  6F 75 74 69 6E 65 73 2E 0D 20 20 20 20 20 53 65    outines..     Se
019DD0:  74 20 67 72 61 70 68 69 63 20 70 61 70 65 72 20    t graphic paper 
019DE0:  74 6F 20 69 6E 6B 20 30 0D 20 20 20 20 20 53 65    to ink 0.     Se
019DF0:  74 20 67 72 61 70 68 69 63 20 70 65 6E 20 74 6F    t graphic pen to
019E00:  20 69 6E 6B 20 31 0D 20 20 20 20 20 53 65 74 20     ink 1.     Set 
019E10:  6F 72 69 67 69 6E 20 74 6F 20 62 6F 74 74 6F 6D    origin to bottom
019E20:  20 63 6F 72 6E 65 72 20 6F 66 20 73 63 72 65 65     corner of scree
019E30:  6E 0D 20 20 20 20 20 4D 6F 76 65 20 70 6F 73 69    n.     Move posi
019E40:  74 69 6F 6E 20 74 6F 20 6F 72 69 67 69 6E 0D 20    tion to origin. 
019E50:  20 20 20 20 54 68 65 20 67 72 61 70 68 69 63 73        The graphics
019E60:  20 77 69 6E 64 6F 77 20 69 73 20 73 65 74 20 74     window is set t
019E70:  6F 20 63 6F 76 65 72 20 74 68 65 20 77 68 6F 6C    o cover the whol
019E80:  65 20 73 63 72 65 65 6E 2E 0D 20 20 20 20 20 54    e screen..     T
019E90:  68 65 20 77 72 69 74 65 20 6D 6F 64 65 20 69 73    he write mode is
019EA0:  20 73 65 74 20 74 6F 20 6F 70 61 71 75 65 2E 0D     set to opaque..
019EB0:  20 20 20 20 20 54 68 65 20 6C 69 6E 65 20 6D 61         The line ma
019EC0:  73 6B 20 69 73 20 73 65 74 20 74 6F 20 26 46 46    sk is set to &FF
019ED0:  20 61 6E 64 20 74 68 65 20 66 69 72 73 74 20 70     and the first p
019EE0:  69 78 65 6C 20 6F 66 20 6C 69 6E 65 73 20 61 72    ixel of lines ar
019EF0:  65 20 70 6C 6F 74 74 65 64 2E 0D 20 20 20 20 20    e plotted..     
019F00:  20 74 68 65 20 67 72 61 70 68 69 63 73 0D 20 20     the graphics.  
019F10:  20 20 20 77 69 6E 64 6F 77 0D 0D 20 20 20 20 20       window..     
019F20:  45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 44 45 20    Entry:..     DE 
019F30:  3D 20 58 20 63 6F 6F 72 64 69 6E 61 74 65 20 72    = X coordinate r
019F40:  65 6C 61 74 69 76 65 20 74 6F 20 30 2C 30 20 6F    elative to 0,0 o
019F50:  66 20 6F 6E 65 20 65 64 67 65 0D 20 20 20 20 20    f one edge.     
019F60:  48 4C 20 3D 20 58 20 63 6F 6F 72 64 69 6E 61 74    HL = X coordinat
019F70:  65 20 72 65 6C 61 74 69 76 65 20 74 6F 20 30 2C    e relative to 0,
019F80:  30 20 6F 66 20 74 68 65 20 6F 74 68 65 72 20 65    0 of the other e
019F90:  64 67 65 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D    dge..     Exit:.
019FA0:  0D 20 20 20 20 20 41 46 2C 42 43 2C 44 45 2C 48    .     AF,BC,DE,H
019FB0:  4C 20 63 6F 72 72 75 70 74 0D 0D 20 20 20 20 20    L corrupt..     
019FC0:  4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54 68 65    Notes:..     The
019FD0:  20 6C 65 66 74 20 65 64 67 65 20 69 73 20 74 61     left edge is ta
019FE0:  6B 65 6E 20 74 6F 20 62 65 20 74 68 65 20 20 6C    ken to be the  l
019FF0:  65 73 73 65 72 20 6F 66 20 74 68 65 20 74 77 6F    esser of the two
01A000:  20 76 61 6C 75 65 73 2E 20 54 68 65 20 77 69 6E     values. The win
01A010:  64 6F 77 0D 20 20 20 20 20 6D 61 79 20 62 65 20    dow.     may be 
01A020:  73 68 72 75 6E 6B 20 73 6F 20 74 68 61 74 20 69    shrunk so that i
01A030:  74 20 63 61 6E 20 62 65 20 66 69 74 20 6F 6E 74    t can be fit ont
01A040:  6F 20 74 68 65 20 73 63 72 65 65 6E 2E 0D 0D 20    o the screen... 
01A050:  20 20 20 20 41 6C 6C 20 67 72 61 70 68 69 63 20        All graphic 
01A060:  56 44 55 20 70 6F 69 6E 74 20 70 6C 6F 74 74 69    VDU point plotti
01A070:  6E 67 20 61 6E 64 20 20 6C 69 6E 65 20 64 72 61    ng and  line dra
01A080:  77 69 6E 67 20 72 6F 75 74 69 6E 65 73 20 74 65    wing routines te
01A090:  73 74 20 77 68 65 74 68 65 72 0D 20 20 20 20 20    st whether.     
01A0A0:  74 68 65 20 70 6F 69 6E 74 73 20 74 68 65 79 20    the points they 
01A0B0:  61 72 65 20 74 6F 20 70 6C 6F 74 20 20 61 72 65    are to plot  are
01A0C0:  20 20 69 6E 73 69 64 65 20 20 74 68 65 20 20 77      inside  the  w
01A0D0:  69 6E 64 6F 77 2C 20 69 66 20 74 68 65 79 20 61    indow, if they a
01A0E0:  72 65 20 6E 6F 74 0D 20 20 20 20 20 74 68 65 79    re not.     they
01A0F0:  20 61 72 65 20 6E 6F 74 20 70 6C 6F 74 74 65 64     are not plotted
01A100:  54 68 65 20 77 69 6E 64 6F 77 20 69 73 6E 27 74    The window isn't
01A110:  20 63 6C 65 61 72 65 64 2E 0D 0D 20 20 20 20 20     cleared...     
01A120:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A130:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A140:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A150:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A160:  2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20 26 42 42 42    -----..     &BBB
01A170:  44 20 2D 20 47 52 41 20 52 45 53 45 54 20 2D 20    D - GRA RESET - 
01A180:  52 65 73 65 74 20 74 68 65 20 67 72 61 70 68 69    Reset the graphi
01A190:  63 73 20 56 44 55 0D 0D 20 20 20 20 20 45 6E 74    cs VDU..     Ent
01A1A0:  72 79 3A 0D 0D 20 20 20 20 20 4E 6F 6E 65 0D 0D    ry:..     None..
01A1B0:  20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20         Exit:..    
01A1C0:  20 41 46 2C 42 43 2C 44 45 2C 48 4C 20 63 6F 72     AF,BC,DE,HL cor
01A1D0:  72 75 70 74 2E 0D 0D 20 20 20 20 20 4E 6F 74 65    rupt...     Note
01A1E0:  73 3A 0D 0D 20 20 20 20 20 54 68 65 20 69 6E 64    s:..     The ind
01A1F0:  69 72 65 63 74 69 6F 6E 73 20 61 72 65 20 73 65    irections are se
01A200:  74 20 74 6F 20 74 68 65 69 72 20 64 65 66 61 75    t to their defau
01A210:  6C 74 20 72 6F 75 74 69 6E 65 73 2E 0D 20 20 20    lt routines..   
01A220:  20 20 49 6E 20 56 31 2E 31 20 74 68 65 20 6C 69      In V1.1 the li
01A230:  6E 65 20 6D 61 73 6B 20 69 73 20 73 65 74 20 61    ne mask is set a
01A240:  73 20 69 6E 20 47 52 41 20 49 4E 49 54 49 41 4C    s in GRA INITIAL
01A250:  49 53 45 2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D    ISE...     -----
01A260:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A270:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A280:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A290:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A2A0:  0D 0D 20 20 20 20 20 26 42 42 43 30 20 2D 20 47    ..     &BBC0 - G
01A2B0:  52 41 20 4D 4F 56 45 20 41 42 53 4F 4C 55 54 45    RA MOVE ABSOLUTE
01A2C0:  20 2D 20 4D 6F 76 65 20 74 6F 20 61 6E 20 61 62     - Move to an ab
01A2D0:  73 6F 6C 75 74 65 20 70 6F 73 69 74 69 6F 6E 0D    solute position.
01A2E0:  0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20    .     Entry:..  
01A2F0:  20 20 20 44 45 20 3D 20 58 20 63 6F 6F 72 64 69       DE = X coordi
01A300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01A310:  16 00 01 00 02 09 4E E5 16 00 C1 02 00 00 00 02    ......N.........
01A320:  16 00 C6 02 00 00 00 02 16 00 C2 02 00 00 00 02    ................
01A330:  16 00 C7 02 00 00 00 02 16 00 C3 02 00 00 00 02    ................
01A340:  16 00 C8 02 00 00 00 02 16 00 C4 02 00 00 00 02    ................
01A350:  16 00 C9 02 00 00 00 02 16 00 C5 02 00 00 00 02    ................
01A360:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A370:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A380:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A390:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A3F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01A400:  2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D    ...     --------
01A410:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A420:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A430:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A440:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20    -------------.. 
01A450:  20 20 20 20 26 42 42 44 32 20 2D 20 47 52 41 20        &BBD2 - GRA 
01A460:  57 49 4E 20 48 45 49 47 48 54 20 2D 20 53 65 74    WIN HEIGHT - Set
01A470:  20 74 6F 70 20 61 6E 64 20 62 6F 74 74 6F 6D 20     top and bottom 
01A480:  65 64 67 65 73 20 6F 66 20 67 72 61 70 68 69 63    edges of graphic
01A490:  20 77 69 6E 64 6F 77 0D 0D 20 20 20 20 20 45 6E     window..     En
01A4A0:  74 72 79 3A 0D 0D 20 20 20 20 20 44 45 20 3D 20    try:..     DE = 
01A4B0:  59 20 63 6F 6F 72 64 69 6E 61 74 65 20 72 65 6C    Y coordinate rel
01A4C0:  61 74 69 76 65 20 74 6F 20 30 2C 30 20 6F 66 20    ative to 0,0 of 
01A4D0:  6F 6E 65 20 65 64 67 65 0D 20 20 20 20 20 48 4C    one edge.     HL
01A4E0:  20 3D 20 59 20 63 6F 6F 72 64 69 6E 61 74 65 20     = Y coordinate 
01A4F0:  72 65 6C 61 74 69 76 65 20 74 6F 20 30 2C 30 20    relative to 0,0 
01A500:  6F 66 20 6F 74 68 65 72 20 65 64 67 65 2E 0D 0D    of other edge...
01A510:  20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20         Exit:..    
01A520:  20 41 46 2C 42 43 2C 44 45 2C 48 4C 20 63 6F 72     AF,BC,DE,HL cor
01A530:  72 75 70 74 2E 0D 0D 20 20 20 20 20 4E 6F 74 65    rupt...     Note
01A540:  73 3A 0D 0D 20 20 20 20 20 54 68 65 20 74 6F 70    s:..     The top
01A550:  20 65 64 67 65 20 77 69 6C 6C 20 62 65 20 74 68     edge will be th
01A560:  65 20 68 69 67 68 65 72 20 6F 66 20 74 68 65 20    e higher of the 
01A570:  74 77 6F 20 76 61 6C 75 65 73 2E 0D 0D 20 20 20    two values...   
01A580:  20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D      --------------
01A590:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A5A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A5B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A5C0:  2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20 26 42    -------..     &B
01A5D0:  42 44 35 20 2D 20 47 52 41 20 47 45 54 20 57 20    BD5 - GRA GET W 
01A5E0:  57 49 44 54 48 20 2D 20 47 65 74 20 74 68 65 20    WIDTH - Get the 
01A5F0:  6C 65 66 74 20 61 6E 64 20 72 69 67 68 74 20 65    left and right e
01A600:  64 6F 77 20 77 68 65 6E 0D 20 20 20 20 20 74 65    dow when.     te
01A610:  73 74 69 6E 67 20 70 6F 69 6E 74 73 2E 0D 0D 20    sting points... 
01A620:  20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D        ------------
01A630:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A640:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A650:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A660:  2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 20 20 20 20 26    ---------.     &
01A670:  42 42 45 37 20 2D 20 47 52 41 20 47 45 54 20 50    BBE7 - GRA GET P
01A680:  41 50 45 52 20 2D 20 47 65 74 20 74 68 65 20 63    APER - Get the c
01A690:  75 72 72 65 6E 74 20 62 61 63 6B 67 72 6F 75 6E    urrent backgroun
01A6A0:  64 20 70 65 6E 0D 0D 20 20 20 20 20 45 6E 74 72    d pen..     Entr
01A6B0:  79 3A 0D 0D 20 20 20 20 20 4E 6F 6E 65 0D 0D 20    y:..     None.. 
01A6C0:  20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20        Exit:..     
01A6D0:  41 20 3D 20 70 65 6E 0D 0D 20 20 20 20 20 46 6C    A = pen..     Fl
01A6E0:  61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0D 20 20    ags corrupt...  
01A6F0:  20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20       Notes:..     
01A700:  41 73 20 47 52 41 20 53 45 54 20 50 41 50 45 52    As GRA SET PAPER
01A710:  0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D    ..     ---------
01A720:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A730:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A740:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A750:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 20 20    ------------.   
01A760:  20 20 26 42 42 45 41 20 2D 20 47 52 41 20 50 4C      &BBEA - GRA PL
01A770:  4F 54 20 41 42 53 4F 4C 55 54 45 20 2D 20 50 6C    OT ABSOLUTE - Pl
01A780:  6F 74 20 61 20 70 6F 69 6E 74 20 61 74 20 61 6E    ot a point at an
01A790:  20 61 62 73 6F 6C 75 74 65 20 70 6F 73 69 74 69     absolute positi
01A7A0:  6F 6E 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D    on..     Entry:.
01A7B0:  0D 20 20 20 20 20 44 45 20 3D 20 58 20 63 6F 6F    .     DE = X coo
01A7C0:  72 64 69 6E 61 74 65 20 72 65 6C 61 74 69 76 65    rdinate relative
01A7D0:  20 74 6F 20 75 73 65 72 20 6F 72 69 67 69 6E 0D     to user origin.
01A7E0:  20 20 20 20 20 48 4C 20 3D 20 59 20 63 6F 6F 72         HL = Y coor
01A7F0:  64 69 6E 61 74 65 20 72 65 6C 61 74 69 76 65 20    dinate relative 
01A800:  64 67 65 73 20 6F 66 20 74 68 65 20 77 69 6E 64    dges of the wind
01A810:  6F 77 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D    ow..     Entry:.
01A820:  0D 20 20 20 20 20 4E 6F 6E 65 0D 0D 20 20 20 20    .     None..    
01A830:  20 45 78 69 74 3A 0D 0D 20 20 20 20 20 44 45 20     Exit:..     DE 
01A840:  3D 20 58 20 63 6F 6F 72 64 69 6E 61 74 65 20 72    = X coordinate r
01A850:  65 6C 61 74 69 76 65 20 74 6F 20 30 2C 30 20 6F    elative to 0,0 o
01A860:  66 20 74 68 65 20 6C 65 66 74 20 65 64 67 65 20    f the left edge 
01A870:  6F 66 20 74 68 65 20 77 69 6E 64 6F 77 0D 20 20    of the window.  
01A880:  20 20 20 48 4C 20 3D 20 58 20 63 6F 6F 72 64 69       HL = X coordi
01A890:  6E 61 74 65 20 72 65 6C 61 74 69 76 65 20 74 6F    nate relative to
01A8A0:  20 30 2C 30 20 6F 66 20 74 68 65 20 72 69 67 68     0,0 of the righ
01A8B0:  74 20 65 64 67 65 20 6F 66 20 74 68 65 20 77 69    t edge of the wi
01A8C0:  6E 64 6F 77 0D 0D 20 20 20 20 20 41 46 20 63 6F    ndow..     AF co
01A8D0:  72 72 75 70 74 2E 0D 0D 20 20 20 20 20 4E 6F 74    rrupt...     Not
01A8E0:  65 73 3A 0D 0D 20 20 20 20 20 54 68 65 20 65 64    es:..     The ed
01A8F0:  67 65 73 20 72 65 63 69 65 76 65 64 20 6D 61 79    ges recieved may
01A900:  20 20 62 65 20 20 64 69 66 66 65 72 65 6E 74 20      be  different 
01A910:  20 61 73 20 20 74 68 6F 73 65 20 73 70 65 63 69     as  those speci
01A920:  66 69 65 64 20 62 65 63 61 75 73 65 20 74 68 65    fied because the
01A930:  0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20 77 69 6E 64    .......     wind
01A940:  6F 77 20 6D 61 79 20 68 61 76 65 20 62 65 65 6E    ow may have been
01A950:  20 72 65 64 75 63 65 64 20 74 6F 20 66 69 74 20     reduced to fit 
01A960:  6F 6E 74 6F 20 74 68 65 20 73 63 72 65 65 6E 2E    onto the screen.
01A970:  0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D    ..     ---------
01A980:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A990:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A9A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01A9B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20    ------------..  
01A9C0:  20 20 20 26 42 42 44 38 20 2D 20 47 52 41 20 47       &BBD8 - GRA G
01A9D0:  45 54 20 57 20 48 45 49 47 48 54 20 2D 20 47 65    ET W HEIGHT - Ge
01A9E0:  74 20 74 6F 70 20 61 6E 64 20 62 6F 74 74 6F 6D    t top and bottom
01A9F0:  20 65 64 67 65 73 20 6F 66 20 74 68 65 20 77 69     edges of the wi
01AA00:  74 6F 20 75 73 65 72 20 6F 72 69 67 69 6E 0D 0D    to user origin..
01AA10:  20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20         Exit:..    
01AA20:  20 41 46 2C 42 43 2C 44 45 2C 48 4C 20 63 6F 72     AF,BC,DE,HL cor
01AA30:  72 75 70 74 2E 0D 0D 0D 0D 0D 0D 0D 0D 20 20 20    rupt.........   
01AA40:  20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D      --------------
01AA50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01AA60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01AA70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01AA80:  2D 2D 2D 2D 2D 2D 2D 0D 20 20 20 20 20 26 42 42    -------.     &BB
01AA90:  45 44 20 2D 20 47 52 41 20 50 4C 4F 54 20 52 45    ED - GRA PLOT RE
01AAA0:  4C 41 54 49 56 45 20 2D 20 50 6C 6F 74 20 61 20    LATIVE - Plot a 
01AAB0:  70 6F 69 6E 74 20 72 65 6C 61 74 69 76 65 20 74    point relative t
01AAC0:  6F 20 63 75 72 72 65 6E 74 20 70 6F 73 69 74 69    o current positi
01AAD0:  6F 6E 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D    on..     Entry:.
01AAE0:  0D 20 20 20 20 20 44 45 20 3D 20 73 69 67 6E 65    .     DE = signe
01AAF0:  64 20 58 20 6F 66 66 73 65 74 0D 20 20 20 20 20    d X offset.     
01AB00:  48 4C 20 3D 20 73 69 67 6E 65 64 20 59 20 6F 66    HL = signed Y of
01AB10:  66 73 65 74 0D 0D 20 20 20 20 20 45 78 69 74 3A    fset..     Exit:
01AB20:  0D 0D 20 20 20 20 20 41 46 2C 42 43 2C 44 45 2C    ..     AF,BC,DE,
01AB30:  48 4C 20 63 6F 72 72 75 70 74 2E 0D 0D 20 20 20    HL corrupt...   
01AB40:  20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D      --------------
01AB50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01AB60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01AB70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01AB80:  2D 2D 2D 2D 2D 2D 2D 0D 20 20 20 20 20 26 42 42    -------.     &BB
01AB90:  46 30 20 2D 20 47 52 41 20 54 45 53 54 20 41 42    F0 - GRA TEST AB
01ABA0:  53 4F 4C 55 54 45 20 2D 20 54 65 73 74 20 61 20    SOLUTE - Test a 
01ABB0:  70 6F 69 6E 74 20 61 74 20 61 6E 20 61 62 73 6F    point at an abso
01ABC0:  6C 75 74 65 20 70 6F 73 69 74 69 6F 6E 0D 0D 20    lute position.. 
01ABD0:  20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20        Entry:..    
01ABE0:  20 44 45 20 3D 20 58 20 63 6F 6F 72 64 69 6E 61     DE = X coordina
01ABF0:  74 65 20 74 6F 20 74 65 73 74 20 72 65 6C 61 74    te to test relat
01AC00:  6E 64 6F 77 0D 0D 20 20 20 20 20 45 6E 74 72 79    ndow..     Entry
01AC10:  3A 0D 0D 20 20 20 20 20 4E 6F 6E 65 0D 0D 20 20    :..     None..  
01AC20:  20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20 44       Exit:..     D
01AC30:  45 20 3D 20 59 20 63 6F 6F 72 64 69 6E 61 74 65    E = Y coordinate
01AC40:  20 72 65 6C 61 74 69 76 65 20 74 6F 20 30 2C 30     relative to 0,0
01AC50:  20 6F 66 20 74 68 65 20 74 6F 70 20 65 64 67 65     of the top edge
01AC60:  20 6F 66 20 74 68 65 20 77 69 6E 64 6F 77 0D 20     of the window. 
01AC70:  20 20 20 20 48 4C 20 3D 20 59 20 63 6F 6F 72 64        HL = Y coord
01AC80:  69 6E 61 74 65 20 72 65 6C 61 74 69 76 65 20 74    inate relative t
01AC90:  6F 20 30 2C 30 20 6F 66 20 74 68 65 20 62 6F 74    o 0,0 of the bot
01ACA0:  74 6F 6D 20 65 64 67 65 20 6F 66 20 74 68 65 20    tom edge of the 
01ACB0:  77 69 6E 64 6F 77 0D 0D 20 20 20 20 20 41 46 20    window..     AF 
01ACC0:  63 6F 72 72 75 70 74 2E 0D 0D 20 20 20 20 20 4E    corrupt...     N
01ACD0:  6F 74 65 73 3A 0D 0D 20 20 20 20 20 53 65 65 20    otes:..     See 
01ACE0:  61 62 6F 76 65 20 61 73 20 69 6E 20 47 52 41 20    above as in GRA 
01ACF0:  47 45 54 20 57 20 57 49 44 54 48 0D 0D 20 20 20    GET W WIDTH..   
01AD00:  20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D      --------------
01AD10:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01AD20:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01AD30:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01AD40:  2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20 26 42    -------..     &B
01AD50:  42 44 42 20 2D 20 47 52 41 20 43 4C 45 41 52 20    BDB - GRA CLEAR 
01AD60:  57 49 4E 44 4F 57 20 2D 20 43 6C 65 61 72 20 74    WINDOW - Clear t
01AD70:  68 65 20 67 72 61 70 68 69 63 73 20 77 69 6E 64    he graphics wind
01AD80:  6F 77 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D    ow..     Entry:.
01AD90:  0D 20 20 20 20 20 4E 6F 6E 65 0D 0D 20 20 20 20    .     None..    
01ADA0:  20 45 78 69 74 3A 0D 0D 20 20 20 20 20 41 46 2C     Exit:..     AF,
01ADB0:  42 43 2C 44 45 2C 48 4C 20 63 6F 72 72 75 70 74    BC,DE,HL corrupt
01ADC0:  2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D    ...     Notes:..
01ADD0:  20 20 20 20 20 54 68 65 20 67 72 61 70 68 69 63         The graphic
01ADE0:  73 20 63 75 72 73 6F 72 20 70 6F 73 69 74 69 6F    s cursor positio
01ADF0:  6E 20 69 73 20 6D 6F 76 65 64 20 20 74 6F 20 20    n is moved  to  
01AE00:  69 76 65 20 74 6F 20 75 73 65 72 20 6F 72 69 67    ive to user orig
01AE10:  69 6E 0D 20 20 20 20 20 48 4C 20 3D 20 59 20 63    in.     HL = Y c
01AE20:  6F 6F 72 64 69 6E 61 74 65 20 74 6F 20 74 65 73    oordinate to tes
01AE30:  74 20 72 65 6C 61 74 69 76 65 20 74 6F 20 75 73    t relative to us
01AE40:  65 72 20 6F 72 69 67 69 6E 0D 0D 20 20 20 20 20    er origin..     
01AE50:  45 78 69 74 3A 0D 0D 20 20 20 20 20 41 20 3D 20    Exit:..     A = 
01AE60:  70 65 6E 20 6F 66 20 73 70 65 63 69 66 69 65 64    pen of specified
01AE70:  20 70 6F 69 6E 74 20 6F 72 20 70 61 70 65 72 20     point or paper 
01AE80:  70 65 6E 0D 0D 20 20 20 20 20 42 43 2C 44 45 2C    pen..     BC,DE,
01AE90:  48 4C 20 61 6E 64 20 66 6C 61 67 73 20 63 6F 72    HL and flags cor
01AEA0:  72 75 70 74 2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D    rupt...     ----
01AEB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01AEC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01AED0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01AEE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01AEF0:  2D 0D 0D 20 20 20 20 20 26 42 42 46 33 20 2D 20    -..     &BBF3 - 
01AF00:  47 52 41 20 54 45 53 54 20 52 45 4C 41 54 49 56    GRA TEST RELATIV
01AF10:  45 20 2D 20 54 65 73 74 20 61 20 70 6F 69 6E 74    E - Test a point
01AF20:  20 72 65 6C 61 74 69 76 65 20 74 6F 20 63 75 72     relative to cur
01AF30:  72 65 6E 74 20 70 6F 73 69 74 69 6F 6E 0D 0D 20    rent position.. 
01AF40:  20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20        Entry:..    
01AF50:  20 44 45 20 3D 20 58 20 73 69 67 6E 65 64 20 6F     DE = X signed o
01AF60:  66 66 73 65 74 0D 20 20 20 20 20 48 4C 20 3D 20    ffset.     HL = 
01AF70:  59 20 73 69 67 6E 65 64 20 6F 66 66 73 65 74 0D    Y signed offset.
01AF80:  0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20    .     Exit:..   
01AF90:  20 20 41 20 3D 20 70 65 6E 20 6F 66 20 73 70 65      A = pen of spe
01AFA0:  63 69 66 69 65 64 20 70 6F 69 6E 74 20 6F 72 20    cified point or 
01AFB0:  70 61 70 65 72 20 70 65 6E 0D 0D 20 20 20 20 20    paper pen..     
01AFC0:  42 43 2C 44 45 2C 48 4C 20 61 6E 64 20 66 6C 61    BC,DE,HL and fla
01AFD0:  67 73 20 63 6F 72 72 75 70 74 2E 0D 0D 20 20 20    gs corrupt...   
01AFE0:  20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D      --------------
01AFF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B000:  74 68 65 20 6F 72 69 67 69 6E 20 73 70 65 63 69    the origin speci
01B010:  66 69 65 64 20 62 79 20 74 68 65 0D 20 20 20 20    fied by the.    
01B020:  20 75 73 65 72 2E 0D 0D 20 20 20 20 20 2D 2D 2D     user...     ---
01B030:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B040:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B050:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B060:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B070:  2D 2D 0D 0D 20 20 20 20 20 26 42 42 44 45 20 2D    --..     &BBDE -
01B080:  20 47 52 41 20 53 45 54 20 50 45 4E 20 2D 20 53     GRA SET PEN - S
01B090:  65 74 20 74 68 65 20 67 72 61 70 68 69 63 73 20    et the graphics 
01B0A0:  70 6C 6F 74 74 69 6E 67 20 69 6E 6B 0D 0D 20 20    plotting ink..  
01B0B0:  20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20 20       Entry:..     
01B0C0:  41 20 3D 20 70 65 6E 0D 0D 20 20 20 20 20 45 78    A = pen..     Ex
01B0D0:  69 74 3A 0D 0D 20 20 20 20 20 41 46 20 63 6F 72    it:..     AF cor
01B0E0:  72 75 70 74 0D 0D 20 20 20 20 20 4E 6F 74 65 73    rupt..     Notes
01B0F0:  3A 0D 0D 20 20 20 20 20 54 68 65 20 76 61 6C 75    :..     The valu
01B100:  65 20 69 73 20 66 6F 72 63 65 64 20 74 6F 20 6C    e is forced to l
01B110:  69 65 20 20 77 69 74 68 69 6E 20 20 74 68 65 20    ie  within  the 
01B120:  72 61 6E 67 65 20 61 6C 6C 6F 77 65 64 20 66 6F    range allowed fo
01B130:  72 20 74 68 65 20 73 65 6C 65 63 74 65 64 0D 20    r the selected. 
01B140:  20 20 20 20 6D 6F 64 65 2E 0D 0D 20 20 20 20 20        mode...     
01B150:  56 31 2E 31 0D 20 20 20 20 20 2D 2D 2D 2D 0D 0D    V1.1.     ----..
01B160:  20 20 20 20 20 54 68 65 20 67 72 61 70 68 69 63         The graphic
01B170:  73 20 70 65 6E 20 69 73 20 74 61 6B 65 6E 20 74    s pen is taken t
01B180:  6F 20 20 62 65 20 20 74 68 65 20 20 65 64 67 65    o  be  the  edge
01B190:  20 20 6F 66 20 20 74 68 65 20 61 72 65 61 20 74      of  the area t
01B1A0:  6F 20 66 69 6C 6C 20 77 68 65 6E 0D 20 20 20 20    o fill when.    
01B1B0:  20 66 6C 6F 6F 64 20 66 69 6C 6C 69 6E 67 20 61     flood filling a
01B1C0:  72 65 61 73 20 6F 66 20 74 68 65 20 73 63 72 65    reas of the scre
01B1D0:  65 6E 2E 0D 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20    en.........     
01B1E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B1F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B200:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B210:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B220:  2D 2D 2D 2D 2D 2D 2D 0D 20 20 20 20 20 26 42 42    -------.     &BB
01B230:  46 36 20 2D 20 47 52 41 20 4C 49 4E 45 20 41 42    F6 - GRA LINE AB
01B240:  53 4F 4C 55 54 45 20 2D 20 44 72 61 77 20 61 20    SOLUTE - Draw a 
01B250:  6C 69 6E 65 20 74 6F 20 61 6E 20 61 62 73 6F 6C    line to an absol
01B260:  75 74 65 20 70 6F 73 69 74 69 6F 6E 0D 0D 20 20    ute position..  
01B270:  20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20 20       Entry:..     
01B280:  44 45 20 3D 20 58 20 63 6F 6F 72 64 69 6E 61 74    DE = X coordinat
01B290:  65 20 6F 66 20 65 6E 64 70 6F 69 6E 74 0D 20 20    e of endpoint.  
01B2A0:  20 20 20 48 4C 20 3D 20 59 20 63 6F 6F 72 64 69       HL = Y coordi
01B2B0:  6E 61 74 65 20 6F 66 20 65 6E 64 70 6F 69 6E 74    nate of endpoint
01B2C0:  0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20    ..     Exit:..  
01B2D0:  20 20 20 41 46 2C 42 43 2C 44 45 2C 48 4C 20 63       AF,BC,DE,HL c
01B2E0:  6F 72 72 75 70 74 2E 0D 0D 20 20 20 20 20 56 31    orrupt...     V1
01B2F0:  2E 30 0D 20 20 20 20 20 2D 2D 2D 2D 0D 0D 20 20    .0.     ----..  
01B300:  20 20 20 54 68 65 20 70 6F 69 6E 74 73 20 77 69       The points wi
01B310:  6C 6C 20 62 65 20 70 6C 6F 74 74 65 64 20 69 6E    ll be plotted in
01B320:  20 74 68 65 20 63 75 72 72 65 6E 74 20 70 65 6E     the current pen
01B330:  20 75 73 69 6E 67 20 74 68 65 20 63 75 72 72 65     using the curre
01B340:  6E 74 20 6D 6F 64 65 0D 0D 20 20 20 20 20 56 31    nt mode..     V1
01B350:  2E 31 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20 2D 2D    .1.......     --
01B360:  2D 2D 0D 0D 20 20 20 20 20 54 68 65 20 6C 69 6E    --..     The lin
01B370:  65 20 69 73 20 70 6C 6F 74 74 65 64 20 64 65 70    e is plotted dep
01B380:  65 6E 64 69 6E 67 20 6F 6E 20 74 68 65 20 20 6D    ending on the  m
01B390:  61 73 6B 20 64 65 66 69 6E 65 64 2E 20 49 66 20    ask defined. If 
01B3A0:  74 68 65 20 66 69 72 73 74 20 70 6F 69 6E 74 0D    the first point.
01B3B0:  20 20 20 20 20 70 6C 6F 74 74 69 6E 67 20 6D 6F         plotting mo
01B3C0:  64 65 20 69 73 20 73 65 74 20 74 6F 20 66 61 6C    de is set to fal
01B3D0:  73 65 20 74 68 65 20 66 69 72 73 74 20 70 6F 69    se the first poi
01B3E0:  6E 74 20 77 69 6C 6C 20 6E 6F 74 20 62 65 20 73    nt will not be s
01B3F0:  65 74 2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D    et...     ------
01B400:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B410:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B420:  2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20 26 42 42 45    -----..     &BBE
01B430:  31 20 2D 20 47 52 41 20 47 45 54 20 50 45 4E 20    1 - GRA GET PEN 
01B440:  2D 20 47 65 74 20 74 68 65 20 67 72 61 70 68 69    - Get the graphi
01B450:  63 73 20 70 65 6E 20 6E 75 6D 62 65 72 0D 0D 20    cs pen number.. 
01B460:  20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20        Entry:..    
01B470:  20 4E 6F 6E 65 0D 0D 20 20 20 20 20 45 78 69 74     None..     Exit
01B480:  3A 0D 0D 20 20 20 20 20 41 20 3D 20 70 65 6E 0D    :..     A = pen.
01B490:  0D 20 20 20 20 20 46 6C 61 67 73 20 63 6F 72 72    .     Flags corr
01B4A0:  75 70 74 2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D    upt...     -----
01B4B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B4C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B4D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B4E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B4F0:  0D 20 20 20 20 20 26 42 42 45 34 20 2D 20 47 52    .     &BBE4 - GR
01B500:  41 20 53 45 54 20 50 41 50 45 52 20 2D 20 53 65    A SET PAPER - Se
01B510:  74 20 67 72 61 70 68 69 63 73 20 62 61 63 6B 67    t graphics backg
01B520:  72 6F 75 6E 64 20 70 65 6E 0D 0D 20 20 20 20 20    round pen..     
01B530:  45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 41 20 3D    Entry:..     A =
01B540:  20 70 65 6E 0D 0D 20 20 20 20 20 45 78 69 74 3A     pen..     Exit:
01B550:  0D 0D 20 20 20 20 20 41 46 20 63 6F 72 72 75 70    ..     AF corrup
01B560:  74 2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D    t...     Notes:.
01B570:  0D 20 20 20 20 20 54 68 65 20 70 61 70 65 72 20    .     The paper 
01B580:  69 6E 6B 20 69 73 20 74 68 65 20 69 6E 6B 20 74    ink is the ink t
01B590:  68 61 74 20 69 73 20 75 73 65 64 20 66 6F 72 20    hat is used for 
01B5A0:  63 6C 65 61 72 69 6E 67 20 74 68 65 20 67 72 61    clearing the gra
01B5B0:  70 68 69 63 73 20 77 69 6E 64 6F 77 0D 20 20 20    phics window.   
01B5C0:  20 20 61 6E 64 20 69 74 20 69 73 20 61 73 73 75      and it is assu
01B5D0:  6D 65 64 20 74 6F 20 63 6F 76 65 72 20 65 76 65    med to cover eve
01B5E0:  72 79 77 68 65 72 65 20 6F 75 74 73 69 64 65 20    rywhere outside 
01B5F0:  74 68 65 20 67 72 61 70 68 69 63 73 20 77 69 6E    the graphics win
01B600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01B610:  17 00 01 00 02 09 4E E5 17 00 C1 02 00 00 00 02    ......N.........
01B620:  17 00 C6 02 00 00 00 02 17 00 C2 02 00 00 00 02    ................
01B630:  17 00 C7 02 00 00 00 02 17 00 C3 02 00 00 00 02    ................
01B640:  17 00 C8 02 00 00 00 02 17 00 C4 02 00 00 00 02    ................
01B650:  17 00 C9 02 00 00 00 02 17 00 C5 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:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B710:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B720:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B730:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D    ---------------.
01B740:  20 20 20 20 20 26 42 42 46 39 20 2D 20 47 52 41         &BBF9 - GRA
01B750:  20 4C 49 4E 45 20 20 52 45 4C 41 54 49 56 45 20     LINE  RELATIVE 
01B760:  20 2D 20 20 44 72 61 77 20 20 61 20 20 6C 69 6E     -  Draw  a  lin
01B770:  65 20 20 72 65 6C 61 74 69 76 65 20 20 74 6F 20    e  relative  to 
01B780:  74 68 65 20 63 75 72 72 65 6E 74 0D 20 20 20 20    the current.    
01B790:  20 70 6F 73 69 74 69 6F 6E 0D 0D 20 20 20 20 20     position..     
01B7A0:  45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 44 45 20    Entry:..     DE 
01B7B0:  3D 20 73 69 67 6E 65 64 20 58 20 6F 66 66 73 65    = signed X offse
01B7C0:  74 20 6F 66 20 74 68 65 20 65 6E 64 70 6F 69 6E    t of the endpoin
01B7D0:  74 0D 20 20 20 20 20 48 4C 20 3D 20 73 69 67 6E    t.     HL = sign
01B7E0:  65 64 20 59 20 6F 66 66 73 65 74 20 6F 66 20 74    ed Y offset of t
01B7F0:  68 65 20 65 6E 64 70 6F 69 6E 74 0D 0D 20 20 20    he endpoint..   
01B800:  20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20 41 46      Exit:..     AF
01B810:  2C 42 43 2C 44 45 2C 48 4C 20 63 6F 72 72 75 70    ,BC,DE,HL corrup
01B820:  74 2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D    t...     Notes:.
01B830:  0D 20 20 20 20 20 53 65 65 20 47 52 41 20 4C 49    .     See GRA LI
01B840:  4E 45 20 41 42 53 4F 4C 55 54 45 0D 0D 20 20 20    NE ABSOLUTE..   
01B850:  20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D      --------------
01B860:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B870:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B880:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01B890:  2D 2D 2D 2D 2D 2D 2D 0D 20 20 20 20 20 26 42 42    -------.     &BB
01B8A0:  46 43 20 2D 20 47 52 41 20 57 52 20 43 48 41 52    FC - GRA WR CHAR
01B8B0:  20 2D 20 50 72 69 6E 74 20 20 61 20 20 63 68 61     - Print  a  cha
01B8C0:  72 61 63 74 65 72 20 6F 6E 20 74 68 65 20 73 63    racter on the sc
01B8D0:  72 65 65 6E 20 61 74 20 74 68 65 20 63 75 72 72    reen at the curr
01B8E0:  65 6E 74 0D 20 20 20 20 20 67 72 61 70 68 69 63    ent.     graphic
01B8F0:  73 20 70 6F 73 69 74 69 6F 6E 0D 0D 20 20 20 20    s position..    
01B900:  20 74 68 65 20 62 69 74 20 69 73 20 31 29 2E 0D     the bit is 1)..
01B910:  0D 54 6F 20 64 65 73 74 69 6E 67 75 69 73 68 20    .To destinguish 
01B920:  62 65 74 77 65 65 6E 20 70 6F 6B 69 6E 67 20 74    between poking t
01B930:  6F 20 6D 65 6D 6F 72 79 20 61 6E 64 20 73 65 6E    o memory and sen
01B940:  64 69 6E 67 20 64 61 74 61 20 74 6F 20 61 6E 20    ding data to an 
01B950:  65 78 74 65 72 6E 61 6C 20 64 65 76 69 63 65 2C    external device,
01B960:  0D 74 68 65 20 43 50 55 20 75 73 65 73 20 61 6E    .the CPU uses an
01B970:  20 65 78 74 72 61 20 70 69 6E 20 63 61 6C 6C 65     extra pin calle
01B980:  64 20 49 4F 52 51 2E 20 28 49 6E 70 75 74 2F 4F    d IORQ. (Input/O
01B990:  75 74 70 75 74 20 52 65 71 75 65 73 74 29 2E 20    utput Request). 
01B9A0:  57 68 65 6E 20 74 68 69 73 20 69 73 20 6C 6F 77    When this is low
01B9B0:  2C 0D 74 68 65 20 43 50 55 20 69 73 20 73 65 6E    ,.the CPU is sen
01B9C0:  64 69 6E 67 20 64 61 74 61 20 74 6F 20 61 6E 20    ding data to an 
01B9D0:  65 78 74 65 72 6E 61 6C 20 64 65 76 69 63 65 2C    external device,
01B9E0:  20 6F 74 68 65 72 77 69 73 65 20 69 74 20 69 73     otherwise it is
01B9F0:  20 70 6F 6B 69 6E 67 20 74 6F 20 74 68 65 0D 6D     poking to the.m
01BA00:  65 6D 6F 72 79 2E 0D 0D 41 6E 64 20 74 6F 20 64    emory...And to d
01BA10:  69 73 74 69 6E 67 75 69 73 68 20 62 65 74 77 65    istinguish betwe
01BA20:  65 6E 20 72 65 61 64 69 6E 67 20 61 6E 64 20 77    en reading and w
01BA30:  72 69 74 69 6E 67 20 69 74 20 75 73 65 73 20 61    riting it uses a
01BA40:  20 70 69 6E 20 63 61 6C 6C 65 64 20 57 52 20 28     pin called WR (
01BA50:  77 72 69 74 65 29 20 61 6E 64 0D 52 44 20 28 72    write) and.RD (r
01BA60:  65 61 64 29 2E 20 57 68 65 6E 20 65 69 74 68 65    ead). When eithe
01BA70:  72 20 6F 66 20 74 68 65 73 65 20 61 72 65 20 6C    r of these are l
01BA80:  6F 77 2C 20 74 68 65 20 43 50 55 20 69 73 20 77    ow, the CPU is w
01BA90:  72 69 74 69 6E 67 20 6F 72 20 72 65 61 64 69 6E    riting or readin
01BAA0:  67 2E 0D 0D 53 6F 20 74 6F 20 63 6F 6E 6E 65 63    g...So to connec
01BAB0:  74 20 61 20 64 65 76 69 63 65 20 61 6E 64 20 67    t a device and g
01BAC0:  65 74 20 69 74 20 74 6F 20 77 6F 72 6B 2C 20 77    et it to work, w
01BAD0:  65 20 6E 65 65 64 20 74 6F 20 63 6F 6E 6E 65 63    e need to connec
01BAE0:  74 20 74 68 65 20 61 64 64 72 65 73 73 20 6C 69    t the address li
01BAF0:  6E 65 73 2C 0D 64 61 74 61 20 6C 69 6E 65 73 2C    nes,.data lines,
01BB00:  20 45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 41 20     Entry:..     A 
01BB10:  3D 20 63 68 61 72 61 63 74 65 72 20 74 6F 20 77    = character to w
01BB20:  72 69 74 65 0D 0D 20 20 20 20 20 45 78 69 74 3A    rite..     Exit:
01BB30:  0D 0D 20 20 20 20 20 41 46 2C 42 43 2C 44 45 2C    ..     AF,BC,DE,
01BB40:  48 4C 20 63 6F 72 72 75 70 74 2E 0D 0D 20 20 20    HL corrupt...   
01BB50:  20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54      Notes:..     T
01BB60:  68 65 20 63 68 61 72 61 63 74 65 72 20 69 73 20    he character is 
01BB70:  77 72 69 74 74 65 6E 20 77 69 74 68 20 20 69 74    written with  it
01BB80:  73 20 20 74 6F 70 20 20 6C 65 66 74 20 20 61 74    s  top  left  at
01BB90:  20 74 68 65 20 63 75 72 72 65 6E 74 20 67 72 61     the current gra
01BBA0:  70 68 69 63 73 0D 20 20 20 20 20 70 6F 73 69 74    phics.     posit
01BBB0:  69 6F 6E 2E 20 41 6C 6C 20 63 68 61 72 61 63 74    ion. All charact
01BBC0:  65 72 73 20 61 72 65 20 70 72 69 6E 74 65 64 20    ers are printed 
01BBD0:  69 6E 63 6C 75 64 69 6E 67 20 63 6F 6E 74 72 6F    including contro
01BBE0:  6C 20 63 68 61 72 61 63 74 65 72 73 2E 20 54 68    l characters. Th
01BBF0:  65 0D 20 20 20 20 20 70 6F 73 69 74 69 6F 6E 20    e.     position 
01BC00:  69 73 20 6D 6F 76 65 64 20 72 69 67 68 74 20 33    is moved right 3
01BC10:  32 20 20 70 6F 69 6E 74 73 20 20 69 6E 20 20 6D    2  points  in  m
01BC20:  6F 64 65 20 20 30 2C 20 20 31 36 20 20 69 6E 20    ode  0,  16  in 
01BC30:  6D 6F 64 65 20 31 2C 20 61 6E 64 20 38 0D 20 20    mode 1, and 8.  
01BC40:  20 20 20 70 6F 69 6E 74 73 20 69 6E 20 6D 6F 64       points in mod
01BC50:  65 20 32 2E 0D 0D 20 20 20 20 20 54 68 65 20 63    e 2...     The c
01BC60:  68 61 72 61 63 74 65 72 20 77 69 6C 6C 20 62 65    haracter will be
01BC70:  20 70 72 69 6E 74 65 64 20 75 73 69 6E 67 20 74     printed using t
01BC80:  68 65 20 63 75 72 72 65 6E 74 20 67 72 61 70 68    he current graph
01BC90:  69 63 73 20 70 65 6E 20 69 6E 6B 2E 0D 20 20 20    ics pen ink..   
01BCA0:  20 20 49 66 20 74 68 65 20 67 72 61 70 68 69 63      If the graphic
01BCB0:  73 20 6D 6F 64 65 20 69 73 20 20 73 65 74 20 20    s mode is  set  
01BCC0:  74 6F 20 20 6F 70 61 71 75 65 20 20 74 68 65 6E    to  opaque  then
01BCD0:  20 20 74 68 65 20 62 61 63 6B 67 72 6F 75 6E 64      the background
01BCE0:  20 77 69 6C 6C 20 62 65 0D 20 20 20 20 20 77 72     will be.     wr
01BCF0:  69 74 74 65 6E 20 20 77 69 74 68 20 20 74 68 65    itten  with  the
01BD00:  20 74 68 65 20 49 4F 52 51 20 70 69 6E 20 61 6E     the IORQ pin an
01BD10:  64 20 74 68 65 20 57 52 20 61 6E 64 20 52 44 20    d the WR and RD 
01BD20:  70 69 6E 73 2E 20 4E 6F 77 20 69 74 20 69 73 20    pins. Now it is 
01BD30:  70 6F 73 73 69 62 6C 65 20 74 6F 20 6C 69 6E 6B    possible to link
01BD40:  0D 64 65 76 69 63 65 73 20 61 6E 64 20 75 73 65    .devices and use
01BD50:  20 74 68 65 6D 2E 0D 0D 0D 0D 0D 0D 0D 0D 1A 2D     them..........-
01BD60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01BD70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01BD80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01BD90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01BDA0:  2D 2D 2D 2D 0D 0D 65 6E 64 20 6D 61 69 6E 5F 70    ----..end main_p
01BDB0:  72 6F 67 72 61 6D 1A 70 6C 79 20 63 6F 6D 6D 61    rogram.ply comma
01BDC0:  6E 64 29 2E 0D 3B 0D 3B 0D 1A 3D 3D 3D 0D 0D 1A    nd)..;.;..===...
01BDD0:  66 6F 1A 00 00 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    fo..............
01BDE0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01BDF0:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01BE00:  65 6D 6F 72 79 2E 0D 0D 41 6E 64 20 74 6F 20 64    emory...And to d
01BE10:  69 73 74 69 6E 67 75 69 73 68 20 62 65 74 77 65    istinguish betwe
01BE20:  65 6E 20 72 65 61 64 69 6E 67 20 61 6E 64 20 77    en reading and w
01BE30:  72 69 74 69 6E 67 20 69 74 20 75 73 65 73 20 61    riting it uses a
01BE40:  20 70 69 6E 20 63 61 6C 6C 65 64 20 57 52 20 28     pin called WR (
01BE50:  77 72 69 74 65 29 20 61 6E 64 0D 52 44 20 28 72    write) and.RD (r
01BE60:  65 61 64 29 2E 20 57 68 65 6E 20 65 69 74 68 65    ead). When eithe
01BE70:  72 20 6F 66 20 74 68 65 73 65 20 61 72 65 20 6C    r of these are l
01BE80:  6F 77 2C 20 74 68 65 20 43 50 55 20 69 73 20 77    ow, the CPU is w
01BE90:  72 69 74 69 6E 67 20 6F 72 20 72 65 61 64 69 6E    riting or readin
01BEA0:  67 2E 0D 0D 53 6F 20 74 6F 20 63 6F 6E 6E 65 63    g...So to connec
01BEB0:  74 20 61 20 64 65 76 69 63 65 20 61 6E 64 20 67    t a device and g
01BEC0:  65 74 20 69 74 20 74 6F 20 77 6F 72 6B 2C 20 77    et it to work, w
01BED0:  65 20 6E 65 65 64 20 74 6F 20 63 6F 6E 6E 65 63    e need to connec
01BEE0:  74 20 74 68 65 20 61 64 64 72 65 73 73 20 6C 69    t the address li
01BEF0:  6E 65 73 2C 0D 64 61 74 61 20 6C 69 6E 65 73 2C    nes,.data lines,
01BF00:  20 20 63 75 72 72 65 6E 74 20 20 67 72 61 70 68      current  graph
01BF10:  69 63 73 20 20 70 61 70 65 72 20 20 20 70 65 6E    ics  paper   pen
01BF20:  2C 20 20 69 66 20 20 74 68 65 20 20 6D 6F 64 65    ,  if  the  mode
01BF30:  20 20 69 73 0D 20 20 20 20 20 74 72 61 6E 73 70      is.     transp
01BF40:  61 72 65 6E 74 20 74 68 65 6E 20 74 68 65 20 62    arent then the b
01BF50:  61 63 6B 67 72 6F 75 6E 64 20 77 69 6C 6C 20 6E    ackground will n
01BF60:  6F 74 20 62 65 20 77 72 69 74 74 65 6E 20 6F 76    ot be written ov
01BF70:  65 72 2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D    er...     ------
01BF80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01BF90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01BFA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01BFB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D    ---------------.
01BFC0:  0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D    ................
01BFD0:  1A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01BFE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01BFF0:  00 00 C1 1F 00 17 04 2D 2D 2D 2D 2D 2D 2D 2D 2D    .......---------
01C000:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01C010:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01C020:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01C030:  2D 2D 1A 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    --.=============
01C040:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 1A    =============...
01C050:  66 6F 1A 00 00 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    fo..............
01C060:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01C070:  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01C080:  68 65 20 63 75 72 72 65 6E 74 20 67 72 61 70 68    he current graph
01C090:  69 63 73 20 70 65 6E 20 69 6E 6B 2E 0D 20 20 20    ics pen ink..   
01C0A0:  20 20 49 66 20 74 68 65 20 67 72 61 70 68 69 63      If the graphic
01C0B0:  73 20 6D 6F 64 65 20 69 73 20 20 73 65 74 20 20    s mode is  set  
01C0C0:  74 6F 20 20 6F 70 61 71 75 65 20 20 74 68 65 6E    to  opaque  then
01C0D0:  20 20 74 68 65 20 62 61 63 6B 67 72 6F 75 6E 64      the background
01C0E0:  20 77 69 6C 6C 20 62 65 0D 20 20 20 20 20 77 72     will be.     wr
01C0F0:  69 74 74 65 6E 20 20 77 69 74 68 20 20 74 68 65    itten  with  the
01C100:  1B 40 0D 0D 0D 20 20 20 20 20 48 69 67 68 20 4B    .@...     High K
01C110:  65 72 6E 61 6C 20 4A 75 6D 70 62 6C 6F 63 6B 0D    ernal Jumpblock.
01C120:  20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D         -----------
01C130:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 0D 20 20 20    ----------...   
01C140:  20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D      --------------
01C150:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01C160:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01C170:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01C180:  2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20    ---------..     
01C190:  26 42 39 30 30 20 2D 20 48 49 3A 20 48 4C 20 55    &B900 - HI: HL U
01C1A0:  20 52 4F 4D 20 45 4E 41 42 4C 45 20 2D 20 45 6E     ROM ENABLE - En
01C1B0:  61 62 6C 65 20 74 68 65 20 75 70 70 65 72 20 72    able the upper r
01C1C0:  6F 6D 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D    om..     Entry:.
01C1D0:  0D 20 20 20 20 20 4E 6F 6E 65 0D 0D 20 20 20 20    .     None..    
01C1E0:  20 45 78 69 74 3A 0D 0D 20 20 20 20 20 41 20 3D     Exit:..     A =
01C1F0:  70 72 65 76 69 6F 75 73 20 72 6F 6D 20 73 74 61    previous rom sta
01C200:  74 65 0D 20 20 20 20 20 46 6C 61 67 73 20 63 6F    te.     Flags co
01C210:  72 72 75 70 74 2E 0D 0D 20 20 20 20 20 4E 6F 74    rrupt...     Not
01C220:  65 73 3A 0D 0D 20 20 20 20 20 54 68 65 20 6D 65    es:..     The me
01C230:  63 68 61 6E 69 73 6D 73 20 70 72 6F 76 69 64 65    chanisms provide
01C240:  64 20 66 6F 72 20 63 61 6C 6C 69 6E 67 20 20 73    d for calling  s
01C250:  75 62 72 6F 75 74 69 6E 65 73 20 20 69 6E 20 74    ubroutines  in t
01C260:  68 65 20 75 70 70 65 72 20 52 4F 4D 20 61 6E 64    he upper ROM and
01C270:  0D 20 20 20 20 20 66 6F 72 20 73 65 6C 65 63 74    .     for select
01C280:  69 6E 67 20 75 70 70 65 72 20 72 6F 6D 73 20 20    ing upper roms  
01C290:  61 75 74 6F 6D 61 74 69 63 61 6C 6C 79 20 20 65    automatically  e
01C2A0:  6E 61 62 6C 65 20 20 74 68 65 20 20 72 6F 6D 20    nable  the  rom 
01C2B0:  61 73 20 72 65 71 75 69 72 65 64 2E 0D 20 20 20    as required..   
01C2C0:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 69      This routine i
01C2D0:  73 20 75 73 65 64 20 62 79 20 74 68 65 20 66 69    s used by the fi
01C2E0:  72 6D 77 61 72 65 20 62 75 74 20 69 73 20 6F 74    rmware but is ot
01C2F0:  68 65 72 77 69 73 65 20 6F 66 20 6C 69 74 74 6C    herwise of littl
01C300:  57 65 20 75 73 65 2C 20 4F 55 54 20 61 6E 64 20    We use, OUT and 
01C310:  49 4E 20 63 6F 6D 6D 61 6E 64 73 20 74 6F 20 61    IN commands to a
01C320:  63 63 65 73 73 20 65 78 74 65 72 6E 61 6C 20 64    ccess external d
01C330:  65 76 69 63 65 73 20 61 6E 64 20 74 68 65 20 68    evices and the h
01C340:  61 72 64 77 61 72 65 0D 69 6E 73 69 64 65 20 74    ardware.inside t
01C350:  68 65 20 43 50 43 2E 0D 0D 57 65 20 73 65 6E 64    he CPC...We send
01C360:  20 64 61 74 61 20 74 6F 20 61 6E 20 65 78 74 65     data to an exte
01C370:  72 6E 61 6C 20 64 65 76 69 63 65 20 6C 69 6B 65    rnal device like
01C380:  20 74 68 69 73 3A 0D 0D 4C 44 20 42 43 2C 70 6F     this:..LD BC,po
01C390:  72 74 5F 61 64 64 72 65 73 73 0D 4F 55 54 20 28    rt_address.OUT (
01C3A0:  43 29 2C 72 65 67 0D 0D 57 68 65 72 65 20 42 43    C),reg..Where BC
01C3B0:  20 63 6F 6E 74 61 69 6E 73 20 61 20 31 36 2D 62     contains a 16-b
01C3C0:  69 74 20 6E 75 6D 62 65 72 20 73 70 65 63 69 66    it number specif
01C3D0:  69 6E 67 20 74 68 65 20 70 6F 72 74 20 61 64 64    ing the port add
01C3E0:  72 65 73 73 20 28 6F 72 20 61 6E 20 61 64 64 72    ress (or an addr
01C3F0:  65 73 73 0D 74 6F 20 61 63 63 65 73 73 20 74 68    ess.to access th
01C400:  65 20 63 68 69 70 20 61 74 29 2E 20 41 6E 64 2C    e chip at). And,
01C410:  20 77 68 65 72 65 20 72 65 67 20 63 61 6E 20 62     where reg can b
01C420:  65 20 41 2C 42 2C 43 2C 44 2C 45 2C 46 2C 48 20    e A,B,C,D,E,F,H 
01C430:  6F 72 20 4C 2C 20 61 6E 64 20 63 6F 6E 74 61 69    or L, and contai
01C440:  6E 73 0D 38 2D 62 69 74 20 64 61 74 61 20 74 6F    ns.8-bit data to
01C450:  20 73 65 6E 64 20 74 6F 20 74 68 65 20 63 68 69     send to the chi
01C460:  70 2E 0D 0D 4C 69 6B 65 77 69 73 65 2C 20 77 65    p...Likewise, we
01C470:  20 67 65 74 20 64 61 74 61 20 66 72 6F 6D 20 61     get data from a
01C480:  6E 20 65 78 74 65 72 6E 61 6C 20 64 65 76 69 63    n external devic
01C490:  65 20 62 79 20 75 73 69 6E 67 3A 0D 0D 4C 44 20    e by using:..LD 
01C4A0:  42 43 2C 70 6F 72 74 5F 61 64 64 72 65 73 73 0D    BC,port_address.
01C4B0:  49 4E 20 72 65 67 2C 28 43 29 0D 0D 48 65 72 65    IN reg,(C)..Here
01C4C0:  20 42 43 20 63 6F 6E 74 61 69 6E 73 20 61 20 31     BC contains a 1
01C4D0:  36 2D 62 69 74 20 6E 75 6D 62 65 72 20 73 70 65    6-bit number spe
01C4E0:  63 69 66 79 69 6E 67 20 74 68 65 20 70 6F 72 74    cifying the port
01C4F0:  20 61 64 64 72 65 73 73 2C 20 61 6E 64 20 72 65     address, and re
01C500:  65 20 75 73 65 2E 0D 0D 20 20 20 20 20 54 68 65    e use...     The
01C510:  20 70 72 65 76 69 6F 75 73 20 72 6F 6D 20 73 74     previous rom st
01C520:  61 74 65 20 6D 61 79 20 62 65 20 20 70 61 73 73    ate may be  pass
01C530:  65 64 20 20 74 6F 20 20 4B 4C 20 52 4F 4D 20 52    ed  to  KL ROM R
01C540:  45 53 54 4F 52 45 20 74 6F 20 72 65 73 65 74 20    ESTORE to reset 
01C550:  74 68 65 0D 20 20 20 20 20 73 74 61 74 65 20 74    the.     state t
01C560:  6F 20 77 68 61 74 20 69 74 20 77 61 73 20 62 65    o what it was be
01C570:  66 6F 72 65 20 74 68 69 73 20 72 6F 75 74 69 6E    fore this routin
01C580:  65 20 77 61 73 20 63 61 6C 6C 65 64 2E 0D 0D 20    e was called... 
01C590:  20 20 20 20 54 68 69 73 20 72 6F 75 74 69 6E 65        This routine
01C5A0:  20 65 6E 61 62 6C 65 73 20 69 6E 74 65 72 75 70     enables interup
01C5B0:  74 73 2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D    ts...     ------
01C5C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01C5D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01C5E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01C5F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01C600:  0D 0D 20 20 20 20 20 26 42 39 30 33 20 2D 20 48    ..     &B903 - H
01C610:  49 3A 20 4B 4C 20 55 20 52 4F 4D 20 44 49 53 41    I: KL U ROM DISA
01C620:  42 4C 45 20 2D 20 44 69 73 61 62 6C 65 20 75 70    BLE - Disable up
01C630:  70 65 72 20 72 6F 6D 0D 0D 20 20 20 20 20 45 6E    per rom..     En
01C640:  74 72 79 3A 0D 0D 20 20 20 20 20 4E 6F 6E 65 0D    try:..     None.
01C650:  0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20    .     Exit:..   
01C660:  20 20 41 20 3D 20 70 72 65 76 69 6F 75 73 20 72      A = previous r
01C670:  6F 6D 20 73 74 61 74 65 0D 0D 20 20 20 20 20 46    om state..     F
01C680:  6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0D 20    lags corrupt... 
01C690:  20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20        Notes:..    
01C6A0:  20 44 69 73 61 62 6C 69 6E 67 20 74 68 65 20 75     Disabling the u
01C6B0:  70 70 65 72 20 72 6F 6D 20 67 69 76 65 73 20 72    pper rom gives r
01C6C0:  65 61 64 20 61 63 63 65 73 73 20 20 74 6F 20 74    ead access  to t
01C6D0:  68 65 20 74 6F 70 20 31 36 6B 20 6F 66 20 72 61    he top 16k of ra
01C6E0:  6D 20 77 68 69 63 68 0D 20 20 20 20 20 69 73 20    m which.     is 
01C6F0:  75 73 75 61 6C 6C 79 20 75 73 65 64 20 61 73 20    usually used as 
01C700:  67 20 77 69 6C 6C 0D 63 6F 6E 74 61 69 6E 20 74    g will.contain t
01C710:  68 65 20 38 2D 62 69 74 20 64 61 74 61 20 72 65    he 8-bit data re
01C720:  61 64 20 66 72 6F 6D 20 74 68 65 20 63 68 69 70    ad from the chip
01C730:  2E 0D 0D 53 6F 20 68 6F 77 20 64 6F 65 73 20 74    ...So how does t
01C740:  68 69 73 20 77 6F 72 6B 20 61 73 20 65 6C 65 63    his work as elec
01C750:  74 72 69 63 20 73 69 67 6E 61 6C 73 3F 0D 0D 57    tric signals?..W
01C760:  65 6C 6C 20 74 68 65 20 43 50 55 20 69 73 20 63    ell the CPU is c
01C770:  6F 6E 6E 65 63 74 65 64 20 74 6F 20 65 76 65 72    onnected to ever
01C780:  79 74 68 69 6E 67 20 62 79 20 69 74 73 20 6C 69    ything by its li
01C790:  6E 65 73 2C 20 6F 72 20 70 69 6E 73 20 6F 6E 20    nes, or pins on 
01C7A0:  74 68 65 20 63 68 69 70 2E 0D 45 61 63 68 20 70    the chip..Each p
01C7B0:  69 6E 20 68 61 73 20 61 20 73 70 65 63 69 61 6C    in has a special
01C7C0:  20 66 75 6E 63 74 69 6F 6E 2E 0D 0D 54 68 65 20     function...The 
01C7D0:  43 50 55 20 68 61 73 20 31 36 20 61 64 64 72 65    CPU has 16 addre
01C7E0:  73 73 20 6C 69 6E 65 73 2C 20 6E 75 6D 62 65 72    ss lines, number
01C7F0:  65 64 20 41 30 2D 41 31 35 2E 20 45 61 63 68 20    ed A0-A15. Each 
01C800:  6F 66 20 74 68 65 73 65 20 63 61 6E 20 62 65 20    of these can be 
01C810:  30 56 20 6F 72 20 35 56 2C 0D 65 66 66 65 63 74    0V or 5V,.effect
01C820:  69 76 65 6C 79 20 30 20 6F 72 20 31 20 69 6E 20    ively 0 or 1 in 
01C830:  62 69 6E 61 72 79 2E 20 55 73 69 6E 67 20 74 68    binary. Using th
01C840:  65 73 65 20 31 36 20 61 64 64 72 65 73 73 20 6C    ese 16 address l
01C850:  69 6E 65 73 20 77 65 20 63 61 6E 20 73 70 65 63    ines we can spec
01C860:  69 66 79 20 61 6E 79 0D 6D 65 6D 6F 72 79 20 6F    ify any.memory o
01C870:  72 20 70 6F 72 74 20 61 64 64 72 65 73 73 20 77    r port address w
01C880:  65 20 77 61 6E 74 2E 0D 0D 57 68 65 6E 20 64 61    e want...When da
01C890:  74 61 20 69 73 20 74 6F 20 62 65 20 70 6F 6B 65    ta is to be poke
01C8A0:  64 20 6F 72 20 72 65 61 64 2C 20 38 20 64 61 74    d or read, 8 dat
01C8B0:  61 20 6C 69 6E 65 73 20 6E 75 6D 62 65 72 65 64    a lines numbered
01C8C0:  20 44 30 2D 44 37 20 61 72 65 20 75 73 65 64 20     D0-D7 are used 
01C8D0:  74 6F 20 70 61 73 73 0D 74 68 65 20 64 61 74 61    to pass.the data
01C8E0:  2E 20 28 30 56 20 77 68 65 6E 20 74 68 65 20 62    . (0V when the b
01C8F0:  69 74 20 69 73 20 30 2C 20 35 56 20 77 68 65 6E    it is 0, 5V when
01C900:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01C910:  18 00 01 00 02 09 4E E5 18 00 C1 02 00 00 00 02    ......N.........
01C920:  18 00 C6 02 00 00 00 02 18 00 C2 02 00 00 00 02    ................
01C930:  18 00 C7 02 00 00 00 02 18 00 C3 02 00 00 00 02    ................
01C940:  18 00 C8 02 00 00 00 02 18 00 C4 02 00 00 00 02    ................
01C950:  18 00 C9 02 00 00 00 02 18 00 C5 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 65 20 20 73 63 72 65 65 6E 20 20 6D 65     the  screen  me
01CA10:  6D 6F 72 79 2E 20 20 4E 6F 74 65 20 20 74 68 61    mory.  Note  tha
01CA20:  74 20 20 74 68 65 20 6D 61 70 70 69 6E 67 20 6F    t  the mapping o
01CA30:  66 20 61 0D 20 20 20 20 20 6C 6F 63 61 74 69 6F    f a.     locatio
01CA40:  6E 20 69 6E 20 73 63 72 65 65 6E 20 6D 65 6D 6F    n in screen memo
01CA50:  72 79 20 74 6F 20 70 69 78 65 6C 73 20 6F 6E 20    ry to pixels on 
01CA60:  20 74 68 65 20 73 63 72 65 65 6E 20 64 65 70 65     the screen depe
01CA70:  6E 64 73 20 6F 6E 20 74 68 65 20 6D 6F 64 65 0D    nds on the mode.
01CA80:  20 20 20 20 20 61 6E 64 20 74 68 65 20 73 63 72         and the scr
01CA90:  65 65 6E 20 6F 66 66 73 65 74 2E 0D 0D 20 20 20    een offset...   
01CAA0:  20 20 49 74 20 20 69 73 20 20 69 6E 61 64 76 69      It  is  inadvi
01CAB0:  73 65 61 62 6C 65 20 20 74 6F 20 20 64 69 73 61    seable  to  disa
01CAC0:  62 6C 65 20 20 20 74 68 65 20 20 20 75 70 70 65    ble   the   uppe
01CAD0:  72 20 20 72 6F 6D 20 20 77 68 69 6C 65 20 20 65    r  rom  while  e
01CAE0:  78 65 63 75 74 69 6E 67 0D 20 20 20 20 20 69 6E    xecuting.     in
01CAF0:  73 74 72 75 63 74 69 6F 6E 73 20 69 6E 20 69 74    structions in it
01CB00:  21 0D 0D 20 20 20 20 20 54 68 65 20 70 72 65 76    !..     The prev
01CB10:  69 6F 75 73 20 72 6F 6D 20 73 74 61 74 65 20 6D    ious rom state m
01CB20:  61 79 20 62 65 20 20 70 61 73 73 65 64 20 20 74    ay be  passed  t
01CB30:  6F 20 20 4B 4C 20 52 4F 4D 20 52 45 53 54 4F 52    o  KL ROM RESTOR
01CB40:  45 20 74 6F 20 72 65 73 65 74 20 74 68 65 0D 20    E to reset the. 
01CB50:  20 20 20 20 73 74 61 74 65 20 6F 66 20 77 68 61        state of wha
01CB60:  74 20 69 74 20 77 61 73 20 62 65 66 6F 72 65 20    t it was before 
01CB70:  74 68 69 73 20 72 6F 75 74 69 6E 65 20 77 61 73    this routine was
01CB80:  20 63 61 6C 6C 65 64 2E 0D 0D 20 20 20 20 20 54     called...     T
01CB90:  68 69 73 20 72 6F 75 74 69 6E 65 20 65 6E 61 62    his routine enab
01CBA0:  6C 65 73 20 69 6E 74 65 72 75 70 74 73 2E 0D 20    les interupts.. 
01CBB0:  20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D        ------------
01CBC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01CBD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01CBE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01CBF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 20 20 20 20    ----------.     
01CC00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D    ---------------.
01CC10:  0D 20 20 20 20 20 26 42 39 30 46 20 2D 20 48 49    .     &B90F - HI
01CC20:  3A 20 4B 4C 20 52 4F 4D 20 53 45 4C 45 43 54 20    : KL ROM SELECT 
01CC30:  2D 20 53 65 6C 65 63 74 20 61 20 70 61 72 74 69    - Select a parti
01CC40:  63 75 6C 61 72 20 75 70 70 65 72 20 52 4F 4D 0D    cular upper ROM.
01CC50:  0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20    .     Entry:..  
01CC60:  20 20 20 43 20 3D 20 72 6F 6D 20 73 65 6C 65 63       C = rom selec
01CC70:  74 20 61 64 64 72 65 73 73 0D 0D 20 20 20 20 20    t address..     
01CC80:  45 78 69 74 3A 0D 0D 20 20 20 20 20 43 20 3D 20    Exit:..     C = 
01CC90:  72 6F 6D 20 73 65 6C 65 63 74 20 61 64 64 72 65    rom select addre
01CCA0:  73 73 20 6F 66 20 74 68 65 20 70 72 65 76 69 6F    ss of the previo
01CCB0:  75 73 6C 79 20 73 65 6C 65 63 74 65 64 20 72 6F    usly selected ro
01CCC0:  6D 0D 20 20 20 20 20 42 20 3D 20 70 72 65 76 69    m.     B = previ
01CCD0:  6F 75 73 20 72 6F 6D 20 73 74 61 74 65 0D 0D 20    ous rom state.. 
01CCE0:  20 20 20 20 41 46 20 63 6F 72 72 75 70 74 2E 0D        AF corrupt..
01CCF0:  0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20    .     Notes:..  
01CD00:  20 20 20 54 68 65 20 70 72 65 76 69 6F 75 73 20       The previous 
01CD10:  73 74 61 74 65 20 63 61 6E 20 62 65 20 70 61 73    state can be pas
01CD20:  73 65 64 20 20 74 6F 20 20 4B 4C 20 20 52 4F 4D    sed  to  KL  ROM
01CD30:  20 52 45 53 54 4F 52 45 20 74 6F 20 72 65 73 65     RESTORE to rese
01CD40:  74 20 74 68 65 20 52 4F 4D 0D 20 20 20 20 20 65    t the ROM.     e
01CD50:  6E 61 62 6C 65 20 74 6F 20 77 68 61 74 20 20 69    nable to what  i
01CD60:  74 20 20 77 61 73 2E 20 20 42 6F 74 68 20 20 74    t  was.  Both  t
01CD70:  68 65 20 20 70 72 65 76 69 6F 75 73 20 20 73 74    he  previous  st
01CD80:  61 74 65 20 20 61 6E 64 20 74 68 65 20 70 72 65    ate  and the pre
01CD90:  76 69 6F 75 73 0D 20 20 20 20 20 73 65 6C 65 63    vious.     selec
01CDA0:  74 69 6F 6E 20 63 61 6E 20 62 65 20 70 61 73 73    tion can be pass
01CDB0:  65 64 20 74 6F 20 20 4B 4C 20 20 52 4F 4D 20 20    ed to  KL  ROM  
01CDC0:  44 45 53 45 4C 45 43 54 20 20 74 6F 20 72 65 73    DESELECT  to res
01CDD0:  74 6F 72 65 20 74 68 65 20 73 74 61 74 65 20 74    tore the state t
01CDE0:  6F 0D 20 20 20 20 20 77 68 61 74 20 69 74 20 77    o.     what it w
01CDF0:  61 73 20 61 6E 64 20 74 6F 20 73 65 6C 65 63 74    as and to select
01CE00:  26 42 39 30 36 20 2D 20 48 49 3A 20 4B 4C 20 4C    &B906 - HI: KL L
01CE10:  20 52 4F 4D 20 45 4E 41 42 4C 45 20 2D 20 45 6E     ROM ENABLE - En
01CE20:  61 62 6C 65 20 74 68 65 20 6C 6F 77 65 72 20 52    able the lower R
01CE30:  4F 4D 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D    OM..     Entry:.
01CE40:  0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20 4E 6F 6E 65    .......     None
01CE50:  0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20    ..     Exit:..  
01CE60:  20 20 20 41 20 3D 20 70 72 65 76 69 6F 75 73 20       A = previous 
01CE70:  72 6F 6D 20 73 74 61 74 65 0D 0D 20 20 20 20 20    rom state..     
01CE80:  46 6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0D    Flags corrupt...
01CE90:  20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20         Notes:..   
01CEA0:  20 20 49 6E 20 67 65 6E 65 72 61 6C 20 74 68 65      In general the
01CEB0:  20 6C 6F 77 65 72 20 72 6F 6D 20 69 73 20 64 69     lower rom is di
01CEC0:  73 61 62 6C 65 64 20 65 78 63 65 70 74 20 77 68    sabled except wh
01CED0:  65 6E 20 61 20 66 69 72 6D 77 61 72 65 20 72 6F    en a firmware ro
01CEE0:  75 74 69 6E 65 20 69 73 0D 20 20 20 20 20 63 61    utine is.     ca
01CEF0:  6C 6C 65 64 2E 20 54 68 65 20 20 66 69 72 6D 77    lled. The  firmw
01CF00:  61 72 65 20 20 6A 75 6D 70 62 6C 6F 63 6B 20 20    are  jumpblock  
01CF10:  61 72 72 61 6E 67 65 73 20 20 74 6F 20 20 65 6E    arranges  to  en
01CF20:  61 62 6C 65 20 20 74 68 65 20 20 6C 6F 77 65 72    able  the  lower
01CF30:  20 72 6F 6D 0D 20 20 20 20 20 61 75 74 6F 6D 61     rom.     automa
01CF40:  74 69 63 61 6C 6C 79 20 61 6E 64 20 74 6F 20 64    tically and to d
01CF50:  69 73 61 62 6C 65 20 69 74 20 20 61 67 61 69 6E    isable it  again
01CF60:  20 20 77 68 65 6E 20 74 68 65 20 72 6F 75 74 69      when the routi
01CF70:  6E 65 20 72 65 74 75 72 6E 73 2E 20 54 68 69 73    ne returns. This
01CF80:  0D 20 20 20 20 20 72 6F 75 74 69 6E 65 20 69 73    .     routine is
01CF90:  20 75 73 65 64 20 62 79 20 74 68 65 20 66 69 72     used by the fir
01CFA0:  6D 77 61 72 65 20 62 75 74 20 69 73 20 6F 74 68    mware but is oth
01CFB0:  65 72 77 69 73 65 20 6F 66 20 6C 69 74 74 6C 65    erwise of little
01CFC0:  20 75 73 65 2E 0D 0D 20 20 20 20 20 54 68 65 20     use...     The 
01CFD0:  70 72 65 76 69 6F 75 73 20 72 6F 6D 20 73 74 61    previous rom sta
01CFE0:  74 65 20 6D 61 79 20 62 65 20 20 70 61 73 73 65    te may be  passe
01CFF0:  64 20 20 74 6F 20 20 4B 4C 20 52 4F 4D 20 52 45    d  to  KL ROM RE
01D000:  20 74 68 65 20 70 72 65 76 69 6F 75 73 6C 79 20     the previously 
01D010:  73 65 6C 65 63 74 65 64 20 52 4F 4D 20 61 67 61    selected ROM aga
01D020:  69 6E 2E 0D 0D 20 20 20 20 20 54 68 65 20 20 6D    in...     The  m
01D030:  65 63 68 61 6E 69 73 6D 73 20 20 70 72 6F 76 69    echanisms  provi
01D040:  64 65 64 20 20 66 6F 72 20 20 63 61 6C 6C 69 6E    ded  for  callin
01D050:  67 20 20 72 6F 75 74 69 6E 65 73 20 20 69 6E 20    g  routines  in 
01D060:  20 65 78 70 61 6E 73 69 6F 6E 20 20 72 6F 6D 73     expansion  roms
01D070:  0D 20 20 20 20 20 61 75 74 6F 6D 61 74 69 63 61    .     automatica
01D080:  6C 6C 79 20 70 65 72 66 6F 72 6D 20 72 6F 6D 20    lly perform rom 
01D090:  73 65 6C 65 63 74 69 6F 6E 20 61 73 20 72 65 71    selection as req
01D0A0:  75 69 72 65 64 2E 0D 0D 20 20 20 20 20 49 74 20    uired...     It 
01D0B0:  69 73 20 20 69 6E 61 64 76 69 73 61 62 6C 65 20    is  inadvisable 
01D0C0:  20 74 6F 20 20 73 65 6C 65 63 74 20 20 61 6E 6F     to  select  ano
01D0D0:  74 68 65 72 20 20 75 70 70 65 72 20 20 72 6F 6D    ther  upper  rom
01D0E0:  20 20 77 68 69 6C 73 74 20 20 65 78 65 63 75 74      whilst  execut
01D0F0:  69 6E 67 0D 20 20 20 20 20 69 6E 73 74 72 75 63    ing.     instruc
01D100:  74 69 6F 6E 73 20 69 6E 20 74 68 65 20 75 70 70    tions in the upp
01D110:  65 72 20 72 6F 6D 2E 0D 0D 20 20 20 20 20 54 68    er rom...     Th
01D120:  69 73 20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C    is routine enabl
01D130:  65 73 20 69 6E 74 65 72 75 70 74 73 2E 0D 0D 20    es interupts... 
01D140:  20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D        ------------
01D150:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D160:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D170:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D180:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20    -----------..   
01D190:  20 20 26 42 39 31 32 20 2D 20 48 49 3A 20 4B 4C      &B912 - HI: KL
01D1A0:  20 20 43 55 52 52 20 20 53 45 4C 45 43 54 49 4F      CURR  SELECTIO
01D1B0:  4E 20 20 2D 20 20 41 73 6B 20 20 77 68 69 63 68    N  -  Ask  which
01D1C0:  20 20 75 70 70 65 72 20 52 4F 4D 20 69 73 20 63      upper ROM is c
01D1D0:  75 72 72 65 6E 74 6C 79 0D 20 20 20 20 20 73 65    urrently.     se
01D1E0:  6C 65 63 74 65 64 2E 0D 0D 20 20 20 20 20 45 6E    lected...     En
01D1F0:  74 72 79 3A 0D 0D 20 20 20 20 20 4E 6F 6E 65 0D    try:..     None.
01D200:  53 54 4F 52 45 20 74 6F 20 72 65 73 65 74 20 74    STORE to reset t
01D210:  68 65 0D 20 20 20 20 20 73 74 61 74 65 20 74 6F    he.     state to
01D220:  20 77 68 61 74 20 69 74 20 77 61 73 20 62 65 66     what it was bef
01D230:  6F 72 65 20 74 68 69 73 20 72 6F 75 74 69 6E 65    ore this routine
01D240:  20 77 61 73 20 63 61 6C 6C 65 64 2E 0D 0D 20 20     was called...  
01D250:  20 20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20       This routine 
01D260:  65 6E 61 62 6C 65 73 20 69 6E 74 65 72 75 70 74    enables interupt
01D270:  73 2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D    s...     -------
01D280:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D290:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D2A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D2B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D2C0:  0D 0D 20 20 20 20 20 26 42 39 30 39 20 2D 20 48    ..     &B909 - H
01D2D0:  49 3A 20 4B 4C 20 4C 20 52 4F 4D 20 44 49 53 41    I: KL L ROM DISA
01D2E0:  42 4C 45 20 2D 20 44 69 73 61 62 6C 65 20 74 68    BLE - Disable th
01D2F0:  65 20 6C 6F 77 65 72 20 72 6F 6D 0D 0D 20 20 20    e lower rom..   
01D300:  20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 4E      Entry:..     N
01D310:  6F 6E 65 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D    one..     Exit:.
01D320:  0D 20 20 20 20 20 41 20 3D 70 72 65 76 69 6F 75    .     A =previou
01D330:  73 20 72 6F 6D 20 73 74 61 74 65 0D 0D 20 20 20    s rom state..   
01D340:  20 20 46 6C 61 67 73 20 63 6F 72 72 75 70 74 2E      Flags corrupt.
01D350:  0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 0D    ..     Notes:...
01D360:  0D 20 20 20 20 20 49 6E 20 67 65 6E 65 72 61 6C    .     In general
01D370:  20 74 68 65 20 6C 6F 77 65 72 20 72 6F 6D 20 69     the lower rom i
01D380:  73 20 64 69 73 61 62 6C 65 64 20 65 78 63 65 70    s disabled excep
01D390:  74 20 77 68 65 6E 20 61 20 66 69 72 6D 77 61 72    t when a firmwar
01D3A0:  65 20 72 6F 75 74 69 6E 65 20 69 73 0D 20 20 20    e routine is.   
01D3B0:  20 20 63 61 6C 6C 65 64 2E 20 54 68 65 20 20 66      called. The  f
01D3C0:  69 72 6D 77 61 72 65 20 20 6A 75 6D 70 62 6C 6F    irmware  jumpblo
01D3D0:  63 6B 20 20 61 72 72 61 6E 67 65 73 20 20 74 6F    ck  arranges  to
01D3E0:  20 20 65 6E 61 62 6C 65 20 20 74 68 65 20 20 6C      enable  the  l
01D3F0:  6F 77 65 72 20 72 6F 6D 0D 20 20 20 20 20 61 75    ower rom.     au
01D400:  0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20    .     Exit:..   
01D410:  20 20 41 20 3D 20 72 6F 6D 20 73 65 6C 65 63 74      A = rom select
01D420:  20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20     address of the 
01D430:  63 75 72 72 65 6E 74 6C 79 20 73 65 6C 65 63 74    currently select
01D440:  65 64 20 72 6F 6D 0D 0D 20 20 20 20 20 4E 6F 74    ed rom..     Not
01D450:  65 73 3A 0D 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20    es:........     
01D460:  49 74 20 69 73 20 6E 6F 74 20 70 6F 73 73 69 62    It is not possib
01D470:  6C 65 20 74 6F 20 20 70 72 65 64 69 63 74 20 20    le to  predict  
01D480:  74 68 65 20 20 72 6F 6D 20 20 73 65 6C 65 63 74    the  rom  select
01D490:  20 20 61 64 64 72 65 73 73 20 61 74 20 77 68 69      address at whi
01D4A0:  63 68 20 61 6E 79 0D 20 20 20 20 20 70 61 72 74    ch any.     part
01D4B0:  69 63 75 6C 61 72 20 65 78 70 61 6E 73 69 6F 6E    icular expansion
01D4C0:  20 72 6F 6D 20 20 77 69 6C 6C 20 20 62 65 20 20     rom  will  be  
01D4D0:  66 69 74 74 65 64 2E 20 20 54 68 65 20 20 66 61    fitted.  The  fa
01D4E0:  72 20 20 61 64 64 72 65 73 73 20 75 73 65 64 20    r  address used 
01D4F0:  74 6F 0D 20 20 20 20 20 72 65 66 65 72 65 6E 63    to.     referenc
01D500:  65 20 73 75 62 72 6F 75 74 69 6E 65 73 20 69 6E    e subroutines in
01D510:  20 20 65 78 70 61 6E 73 69 6F 6E 20 20 72 6F 6D      expansion  rom
01D520:  73 20 20 69 6E 63 6C 75 64 65 20 20 61 20 20 72    s  include  a  r
01D530:  6F 6D 20 73 65 6C 65 63 74 20 62 79 74 65 0D 20    om select byte. 
01D540:  20 20 20 20 77 68 69 63 68 20 6D 75 73 74 20 62        which must b
01D550:  65 20 73 65 74 20 75 70 20 61 74 20 72 75 6E 20    e set up at run 
01D560:  20 74 69 6D 65 2E 20 54 68 69 73 20 72 6F 75 74     time. This rout
01D570:  69 6E 65 20 72 65 74 75 72 6E 73 20 74 68 65 20    ine returns the 
01D580:  72 6F 6D 20 73 65 6C 65 63 74 0D 20 20 20 20 20    rom select.     
01D590:  61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 20    address of the  
01D5A0:  63 75 72 72 65 6E 74 20 20 72 6F 6D 20 20 73 6F    current  rom  so
01D5B0:  20 20 74 68 61 74 20 20 69 74 20 20 63 61 6E 20      that  it  can 
01D5C0:  20 73 65 74 20 20 75 70 20 20 73 75 69 74 61 62     set  up  suitab
01D5D0:  6C 65 20 66 61 72 0D 20 20 20 20 20 61 64 64 72    le far.     addr
01D5E0:  65 73 73 65 73 2E 0D 0D 20 20 20 20 20 2D 2D 2D    esses...     ---
01D5F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D600:  74 6F 6D 61 74 69 63 61 6C 6C 79 20 61 6E 64 20    tomatically and 
01D610:  74 6F 20 64 69 73 61 62 6C 65 20 69 74 20 20 61    to disable it  a
01D620:  67 61 69 6E 20 20 77 68 65 6E 20 74 68 65 20 72    gain  when the r
01D630:  6F 75 74 69 6E 65 20 72 65 74 75 72 6E 73 2E 0D    outine returns..
01D640:  0D 20 20 20 20 20 54 68 65 20 70 72 65 76 69 6F    .     The previo
01D650:  75 73 20 72 6F 6D 20 73 74 61 74 65 20 6D 61 79    us rom state may
01D660:  20 62 65 20 20 70 61 73 73 65 64 20 20 74 6F 20     be  passed  to 
01D670:  20 4B 4C 20 52 4F 4D 20 52 45 53 54 4F 52 45 20     KL ROM RESTORE 
01D680:  74 6F 20 72 65 73 65 74 20 74 68 65 0D 20 20 20    to reset the.   
01D690:  20 20 73 74 61 74 65 20 74 6F 20 77 68 61 74 20      state to what 
01D6A0:  69 74 20 77 61 73 20 62 65 66 6F 72 65 20 74 68    it was before th
01D6B0:  69 73 20 72 6F 75 74 69 6E 65 20 77 61 73 20 63    is routine was c
01D6C0:  61 6C 6C 65 64 2E 0D 0D 20 20 20 20 20 54 68 69    alled...     Thi
01D6D0:  73 20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C 65    s routine enable
01D6E0:  73 20 69 6E 74 65 72 75 70 74 73 2E 0D 0D 20 20    s interupts...  
01D6F0:  20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D       -------------
01D700:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D710:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D720:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D730:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 20 20 20 20    ----------.     
01D740:  26 42 39 30 43 20 2D 20 48 49 3A 20 4B 4C 20 52    &B90C - HI: KL R
01D750:  4F 4D 20 52 45 53 54 4F 52 45 20 2D 20 52 65 73    OM RESTORE - Res
01D760:  74 6F 72 65 20 74 68 65 20 70 72 65 76 69 6F 75    tore the previou
01D770:  73 20 72 6F 6D 20 73 74 61 74 65 0D 0D 20 20 20    s rom state..   
01D780:  20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 41      Entry:..     A
01D790:  20 3D 20 70 72 65 76 69 6F 75 73 20 72 6F 6D 20     = previous rom 
01D7A0:  73 74 61 74 65 0D 0D 20 20 20 20 20 45 78 69 74    state..     Exit
01D7B0:  3A 0D 0D 20 20 20 20 20 41 46 20 63 6F 72 72 75    :..     AF corru
01D7C0:  70 74 2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A    pt...     Notes:
01D7D0:  0D 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20 54 68 65    ........     The
01D7E0:  20 70 72 65 76 69 6F 75 73 20 72 6F 6D 20 73 74     previous rom st
01D7F0:  61 74 65 20 69 73 20 74 68 65 20 76 61 6C 75 65    ate is the value
01D800:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D810:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D820:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01D830:  2D 2D 2D 0D 0D 20 20 20 20 20 26 42 39 31 35 20    ---..     &B915 
01D840:  2D 20 48 49 3A 20 4B 4C 20 50 52 4F 42 45 20 52    - HI: KL PROBE R
01D850:  4F 4D 20 2D 20 41 73 6B 20 63 6C 61 73 73 20 61    OM - Ask class a
01D860:  6E 64 20 76 65 72 73 69 6F 6E 20 6F 66 20 61 20    nd version of a 
01D870:  72 6F 6D 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A    rom..     Entry:
01D880:  0D 0D 20 20 20 20 20 43 20 3D 20 72 6F 6D 20 73    ..     C = rom s
01D890:  65 6C 65 63 74 20 61 64 64 72 65 73 73 20 6F 66    elect address of
01D8A0:  20 72 6F 6D 0D 0D 20 20 20 20 20 45 78 69 74 3A     rom..     Exit:
01D8B0:  0D 0D 20 20 20 20 20 41 20 3D 20 72 6F 6D 73 20    ..     A = roms 
01D8C0:  63 6C 61 73 73 0D 20 20 20 20 20 4C 20 3D 20 72    class.     L = r
01D8D0:  6F 6D 73 20 6D 61 72 6B 20 6E 75 6D 62 65 72 0D    oms mark number.
01D8E0:  20 20 20 20 20 48 20 3D 20 72 6F 6D 73 20 76 65         H = roms ve
01D8F0:  72 73 69 6F 6E 20 6E 75 6D 62 65 72 0D 20 20 20    rsion number.   
01D900:  20 20 42 20 61 6E 64 20 66 6C 61 67 73 20 63 6F      B and flags co
01D910:  72 72 75 70 74 2E 0D 0D 20 20 20 20 20 4E 6F 74    rrupt...     Not
01D920:  65 73 3A 0D 0D 20 20 20 20 20 54 68 65 20 72 6F    es:..     The ro
01D930:  6D 20 63 6C 61 73 73 20 72 65 74 75 72 6E 65 64    m class returned
01D940:  20 6D 61 79 20 74 61 6B 65 20 61 6E 79 20 6F 66     may take any of
01D950:  20 74 68 65 20 66 6F 6C 6C 6F 77 69 6E 67 3A 0D     the following:.
01D960:  0D 20 20 20 20 20 30 3A 20 20 20 20 20 20 46 6F    .     0:      Fo
01D970:  72 65 67 72 6F 75 6E 64 20 72 6F 6D 0D 20 20 20    reground rom.   
01D980:  20 20 31 3A 20 20 20 20 20 20 42 61 63 6B 67 72      1:      Backgr
01D990:  6F 75 6E 64 20 72 6F 6D 0D 20 20 20 20 20 32 3A    ound rom.     2:
01D9A0:  20 20 20 20 20 20 45 78 74 65 6E 73 69 6F 6E 20          Extension 
01D9B0:  66 6F 72 65 67 72 6F 75 6E 64 20 72 6F 6D 0D 20    foreground rom. 
01D9C0:  20 20 20 20 26 38 30 20 20 20 20 20 4F 6E 20 62        &80     On b
01D9D0:  6F 61 72 64 20 72 6F 6D 20 28 42 41 53 49 43 20    oard rom (BASIC 
01D9E0:  72 6F 6D 29 0D 0D 20 20 20 20 20 53 65 6C 65 63    rom)..     Selec
01D9F0:  74 69 6E 67 20 61 20 72 6F 6D 20 61 64 64 72 65    ting a rom addre
01DA00:  20 72 65 74 75 72 6E 65 64 20 62 79 20 6F 6E 65     returned by one
01DA10:  20 6F 66 3A 0D 0D 20 20 20 20 20 4B 4C 20 55 20     of:..     KL U 
01DA20:  52 4F 4D 20 45 4E 41 42 4C 45 0D 20 20 20 20 20    ROM ENABLE.     
01DA30:  4B 4C 20 55 20 52 4F 4D 20 44 49 53 41 42 4C 45    KL U ROM DISABLE
01DA40:  0D 20 20 20 20 20 4B 4C 20 4C 20 52 4F 4D 20 45    .     KL L ROM E
01DA50:  4E 41 42 4C 45 0D 20 20 20 20 20 4B 4C 20 4C 20    NABLE.     KL L 
01DA60:  52 4F 4D 20 44 49 53 41 42 4C 45 0D 20 20 20 20    ROM DISABLE.    
01DA70:  20 4B 4C 20 52 4F 4D 20 53 45 4C 45 43 54 0D 0D     KL ROM SELECT..
01DA80:  20 20 20 20 20 49 74 20 69 73 20 70 6F 73 73 69         It is possi
01DA90:  62 6C 65 20 74 6F 20 75 73 65 20 4B 4C 20 55 20    ble to use KL U 
01DAA0:  52 4F 4D 20 44 49 53 41 42 4C 45 20 74 6F 20 72    ROM DISABLE to r
01DAB0:  65 76 65 72 73 65 20 74 68 65 20 65 66 66 65 63    everse the effec
01DAC0:  74 20 6F 66 20 61 20 63 61 6C 6C 0D 20 20 20 20    t of a call.    
01DAD0:  20 6F 66 20 4B 4C 20 55 20 45 4E 41 42 4C 45 20     of KL U ENABLE 
01DAE0:  28 61 6D 6F 6E 67 73 74 20 20 76 61 72 69 6F 75    (amongst  variou
01DAF0:  73 20 6F 74 68 65 72 20 63 6F 6D 62 69 6E 61 74    s other combinat
01DB00:  69 6F 6E 73 29 2E 20 48 6F 77 65 76 65 72 2C 20    ions). However, 
01DB10:  63 61 6C 6C 69 6E 67 0D 20 20 20 20 20 4B 4C 20    calling.     KL 
01DB20:  52 4F 4D 20 52 45 53 54 4F 52 45 20 69 73 20 74    ROM RESTORE is t
01DB30:  68 65 20 70 72 65 66 65 72 65 64 20 20 6D 65 74    he prefered  met
01DB40:  68 6F 64 20 20 73 69 6E 63 65 20 69 74 20 72 65    hod  since it re
01DB50:  73 74 6F 72 65 73 20 74 68 65 20 73 74 61 74 65    stores the state
01DB60:  20 74 6F 0D 20 20 20 20 20 77 68 61 74 20 69 74     to.     what it
01DB70:  20 77 61 73 2C 20 77 68 69 63 68 20 6D 69 67 68     was, which migh
01DB80:  74 20 68 61 76 65 20 62 65 65 6E 20 65 6E 61 62    t have been enab
01DB90:  6C 65 64 20 61 6E 79 77 61 79 2E 0D 0D 20 20 20    led anyway...   
01DBA0:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 65      This routine e
01DBB0:  6E 61 62 6C 65 73 20 69 6E 74 65 72 75 70 74 73    nables interupts
01DBC0:  2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D    ...     --------
01DBD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01DBE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01DBF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01DC00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01DC10:  19 00 01 00 02 09 4E E5 19 00 C1 02 00 00 00 02    ......N.........
01DC20:  19 00 C6 02 00 00 00 02 19 00 C2 02 00 00 00 02    ................
01DC30:  19 00 C7 02 00 00 00 02 19 00 C3 02 00 00 00 02    ................
01DC40:  19 00 C8 02 00 00 00 02 19 00 C4 02 00 00 00 02    ................
01DC50:  19 00 C9 02 00 00 00 02 19 00 C5 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:  73 73 20 77 68 65 72 65 20 6E 6F 20 20 72 6F 6D    ss where no  rom
01DD10:  20 20 69 73 20 66 69 74 74 65 64 20 69 6D 70 6C      is fitted impl
01DD20:  69 63 69 74 79 20 73 65 6C 65 63 74 73 20 74 68    icity selects th
01DD30:  65 0D 20 20 20 20 20 6F 6E 2D 62 6F 61 72 64 20    e.     on-board 
01DD40:  72 6F 6D 20 61 6E 64 20 73 6F 20 69 74 20 77 69    rom and so it wi
01DD50:  6C 6C 20 72 65 74 75 72 6E 20 26 38 30 20 61 73    ll return &80 as
01DD60:  20 69 74 73 20 63 6C 61 73 73 2E 0D 0D 20 20 20     its class...   
01DD70:  20 20 54 68 65 20 6D 65 61 6E 69 6E 67 20 6F 66      The meaning of
01DD80:  20 74 68 65 20 6D 61 72 6B 20 61 6E 64 20 76 65     the mark and ve
01DD90:  72 73 69 6F 6E 20 6E 75 6D 62 65 72 73 20 64 65    rsion numbers de
01DDA0:  70 65 6E 64 73 20 6F 6E 20 74 68 65 20 72 6F 6D    pends on the rom
01DDB0:  0D 0D 20 20 20 20 20 54 68 69 73 20 72 6F 75 74    ..     This rout
01DDC0:  69 6E 65 20 65 6E 61 62 6C 65 73 20 69 6E 74 65    ine enables inte
01DDD0:  72 75 70 74 73 2E 0D 0D 20 20 20 20 20 2D 2D 2D    rupts...     ---
01DDE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01DDF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01DE00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01DE10:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01DE20:  2D 2D 2D 2D 0D 0D 20 20 20 20 20 26 42 39 31 38    ----..     &B918
01DE30:  20 2D 20 48 49 3A 20 4B 4C 20 52 4F 4D 20 44 45     - HI: KL ROM DE
01DE40:  53 45 4C 45 43 54 20 2D 20 52 65 73 74 6F 72 65    SELECT - Restore
01DE50:  20 70 72 65 76 69 6F 75 73 20 75 70 70 65 72 20     previous upper 
01DE60:  72 6F 6D 20 73 65 6C 65 63 74 69 6F 6E 0D 0D 20    rom selection.. 
01DE70:  20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20        Entry:..    
01DE80:  20 43 20 3D 20 72 6F 6D 20 73 65 6C 65 63 74 20     C = rom select 
01DE90:  61 64 64 72 65 73 73 20 6F 66 20 70 72 65 76 69    address of previ
01DEA0:  6F 75 73 6C 79 20 73 65 6C 65 63 74 65 64 20 72    ously selected r
01DEB0:  6F 6D 0D 20 20 20 20 20 42 20 3D 20 70 72 65 76    om.     B = prev
01DEC0:  69 6F 75 73 20 72 6F 6D 20 73 74 61 74 65 0D 0D    ious rom state..
01DED0:  20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20         Exit:..    
01DEE0:  20 43 20 3D 20 72 6F 6D 20 73 65 6C 65 63 74 20     C = rom select 
01DEF0:  61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 63    address of the c
01DF00:  6D 62 65 72 73 20 69 74 73 0D 20 20 20 20 20 70    mbers its.     p
01DF10:  72 69 6F 72 69 74 79 2E 20 20 54 68 65 20 20 73    riority.  The  s
01DF20:  79 6E 63 68 72 6F 6E 6F 75 73 20 20 65 76 65 6E    ynchronous  even
01DF30:  74 20 20 20 72 6F 75 74 69 6E 65 20 20 20 6D 61    t   routine   ma
01DF40:  79 20 20 20 69 74 73 65 6C 66 20 20 70 6F 6C 6C    y   itself  poll
01DF50:  20 20 74 68 65 0D 20 20 20 20 20 73 79 6E 63 68      the.     synch
01DF60:  72 6F 6E 6F 75 73 65 20 65 76 65 6E 74 20 71 75    ronouse event qu
01DF70:  65 75 65 2C 20 20 62 75 74 20 20 6F 6E 6C 79 20    eue,  but  only 
01DF80:  20 65 76 65 6E 74 73 20 20 6F 66 20 20 68 69 67     events  of  hig
01DF90:  68 65 72 20 70 72 69 6F 72 69 74 79 20 74 68 61    her priority tha
01DFA0:  6E 0D 20 20 20 20 20 69 74 73 65 6C 66 20 61 72    n.     itself ar
01DFB0:  65 20 6E 6F 74 69 66 69 65 64 20 74 6F 20 69 74    e notified to it
01DFC0:  2E 0D 0D 20 20 20 20 20 54 68 69 73 20 72 6F 75    ...     This rou
01DFD0:  74 69 6E 65 20 6D 61 79 20 65 6E 61 62 6C 65 20    tine may enable 
01DFE0:  69 6E 74 65 72 75 70 74 73 2E 0D 0D 20 20 20 20    interupts...    
01DFF0:  20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D     ---------------
01E000:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01E010:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01E020:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01E030:  2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20 26 42    -------..     &B
01E040:  39 32 41 20 2D 20 48 49 3A 20 4B 4C 20 20 53 43    92A - HI: KL  SC
01E050:  41 4E 20 20 4E 45 45 44 45 44 20 20 2D 20 20 45    AN  NEEDED  -  E
01E060:  6E 73 75 72 65 20 20 6B 65 79 62 6F 61 72 64 20    nsure  keyboard 
01E070:  20 69 73 20 20 73 63 61 6E 6E 65 64 20 61 74 20     is  scanned at 
01E080:  6E 65 78 74 0D 20 20 20 20 20 6F 70 70 6F 72 74    next.     opport
01E090:  75 6E 69 74 79 2E 0D 0D 0D 20 20 20 20 20 4E 6F    unity....     No
01E0A0:  6E 65 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D    ne..     Exit:..
01E0B0:  20 20 20 20 20 41 46 20 61 6E 64 20 48 4C 20 63         AF and HL c
01E0C0:  6F 72 72 75 70 74 2E 0D 0D 20 20 20 20 20 4E 6F    orrupt...     No
01E0D0:  74 65 73 3A 0D 0D 20 20 20 20 20 54 68 65 20 6B    tes:..     The k
01E0E0:  65 79 62 6F 61 72 64 20 69 73 20 6E 6F 72 6D 61    eyboard is norma
01E0F0:  6C 6C 79 20 73 63 61 6E 6E 65 64 20 6F 6E 20 65    lly scanned on e
01E100:  75 72 72 65 6E 74 6C 79 20 73 65 6C 65 63 74 65    urrently selecte
01E110:  64 20 72 6F 6D 0D 20 20 20 20 20 42 20 63 6F 72    d rom.     B cor
01E120:  72 75 70 74 2E 0D 0D 20 20 20 20 20 4E 6F 74 65    rupt...     Note
01E130:  73 3A 0D 0D 20 20 20 20 20 54 68 65 20 70 72 65    s:..     The pre
01E140:  76 69 6F 75 73 20 72 6F 6D 20 73 65 6C 65 63 74    vious rom select
01E150:  69 6F 6E 20 61 6E 64 20 20 73 74 61 74 65 20 20    ion and  state  
01E160:  61 72 65 20 20 76 61 6C 75 65 73 20 20 72 65 74    are  values  ret
01E170:  75 72 6E 65 64 20 62 79 20 4B 4C 20 52 4F 4D 0D    urned by KL ROM.
01E180:  20 20 20 20 20 53 45 4C 45 43 54 2E 20 54 68 65         SELECT. The
01E190:  20 63 75 72 72 65 6E 74 6C 79 20 20 73 65 6C 65     currently  sele
01E1A0:  63 74 65 64 20 20 72 6F 6D 20 20 72 65 74 75 72    cted  rom  retur
01E1B0:  6E 65 64 20 20 62 79 20 20 74 68 69 73 20 20 72    ned  by  this  r
01E1C0:  6F 6D 20 74 68 61 74 20 77 61 73 0D 20 20 20 20    om that was.    
01E1D0:  20 73 65 6C 65 63 74 65 64 20 62 79 20 63 61 6C     selected by cal
01E1E0:  6C 69 6E 67 20 4B 4C 20 52 4F 4D 20 53 45 4C 45    ling KL ROM SELE
01E1F0:  43 54 20 28 75 6E 6C 65 73 73 20 66 75 72 74 68    CT (unless furth
01E200:  65 72 20 73 65 6C 65 63 74 69 6F 6E 73 20 68 61    er selections ha
01E210:  76 65 20 62 65 65 6E 0D 20 20 20 20 20 6D 61 64    ve been.     mad
01E220:  65 29 0D 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20 54    e)........     T
01E230:  68 65 20 6D 65 63 68 61 6E 69 73 6D 73 20 70 72    he mechanisms pr
01E240:  6F 76 69 64 65 64 20 20 66 6F 72 20 20 63 61 6C    ovided  for  cal
01E250:  6C 69 6E 67 20 20 73 75 62 72 6F 75 74 69 6E 65    ling  subroutine
01E260:  73 20 20 69 6E 20 20 65 78 70 61 6E 73 69 6F 6E    s  in  expansion
01E270:  20 72 6F 6D 73 0D 20 20 20 20 20 61 75 74 6F 6D     roms.     autom
01E280:  61 74 69 63 61 6C 6C 79 20 70 65 72 66 6F 72 6D    atically perform
01E290:  20 72 6F 6D 20 73 65 6C 65 63 74 69 6F 6E 20 61     rom selection a
01E2A0:  73 20 72 65 71 75 69 72 65 64 2E 0D 0D 20 20 20    s required...   
01E2B0:  20 20 49 74 20 69 73 20 20 69 6E 61 64 76 69 73      It is  inadvis
01E2C0:  61 62 6C 65 20 20 74 6F 20 20 73 65 6C 65 63 74    able  to  select
01E2D0:  20 20 61 6E 6F 74 68 65 72 20 20 75 70 70 65 72      another  upper
01E2E0:  20 20 72 6F 6D 20 20 77 68 69 6C 73 74 20 20 65      rom  whilst  e
01E2F0:  78 65 63 75 74 69 6E 67 0D 20 20 20 20 20 69 6E    xecuting.     in
01E300:  76 65 72 79 20 73 69 78 74 68 20 74 69 63 6B 65    very sixth ticke
01E310:  72 20 69 6E 74 65 72 75 70 74 20 28 65 76 65 72    r interupt (ever
01E320:  79 0D 20 20 20 20 20 66 69 66 74 69 65 74 68 20    y.     fiftieth 
01E330:  6F 66 20 61 20 73 65 63 6F 6E 64 29 2E 20 57 68    of a second). Wh
01E340:  69 6C 65 20 69 6E 74 65 72 75 70 74 73 20 61 72    ile interupts ar
01E350:  65 20 64 69 73 61 62 6C 65 64 20 74 68 65 20 74    e disabled the t
01E360:  69 63 6B 73 20 61 72 65 20 6C 6F 73 74 0D 20 20    icks are lost.  
01E370:  20 20 20 61 6E 64 20 74 68 65 20 6B 65 79 62 6F       and the keybo
01E380:  61 72 66 64 20 77 69 6C 6C 20 6E 6F 74 20 62 65    arfd will not be
01E390:  20 73 63 61 6E 6E 65 64 2E 20 49 66 20 69 6E 74     scanned. If int
01E3A0:  65 72 75 70 74 73 20 61 72 65 20 64 69 73 61 62    erupts are disab
01E3B0:  6C 65 64 20 66 6F 72 20 61 0D 20 20 20 20 20 73    led for a.     s
01E3C0:  69 67 6E 69 66 69 63 61 6E 74 20 70 65 72 69 6F    ignificant perio
01E3D0:  64 20 28 6D 6F 72 65 20 74 68 61 6E 20 74 68 72    d (more than thr
01E3E0:  65 65 20 74 69 63 6B 73 29 20 74 68 65 6E 20 74    ee ticks) then t
01E3F0:  68 69 73 20 72 6F 75 74 69 6E 65 20 73 68 6F 75    his routine shou
01E400:  6C 64 20 62 65 0D 20 20 20 20 20 63 61 6C 6C 65    ld be.     calle
01E410:  64 20 6A 75 73 74 20 62 65 66 6F 72 65 20 69 6E    d just before in
01E420:  74 65 72 75 70 74 73 20 61 72 65 20 72 65 2D 65    terupts are re-e
01E430:  6E 61 62 6C 65 64 2E 20 49 66 20 69 6E 74 65 72    nabled. If inter
01E440:  75 70 74 73 20 61 72 65 20 64 69 73 61 62 6C 65    upts are disable
01E450:  64 0D 20 20 20 20 20 66 6F 72 20 61 20 6C 6F 6E    d.     for a lon
01E460:  67 20 74 69 6D 65 20 28 6D 6F 72 65 20 74 68 61    g time (more tha
01E470:  6E 20 74 77 65 6C 76 65 20 20 74 69 63 6B 73 29    n twelve  ticks)
01E480:  20 74 68 65 6E 20 74 68 65 20 75 73 65 72 20 6D     then the user m
01E490:  69 67 68 74 20 63 6F 6E 73 69 64 65 72 0D 20 20    ight consider.  
01E4A0:  20 20 20 63 61 6C 6C 69 6E 67 20 74 68 69 73 20       calling this 
01E4B0:  72 6F 75 74 69 6E 65 20 61 6E 64 20 72 65 2D 65    routine and re-e
01E4C0:  6E 61 62 6C 69 6E 67 20 69 6E 74 65 72 75 70 74    nabling interupt
01E4D0:  73 20 20 66 6F 72 20 61 20 73 68 6F 72 74 20 74    s  for a short t
01E4E0:  69 6D 65 20 65 76 65 72 79 0D 20 20 20 20 20 66    ime every.     f
01E4F0:  69 66 74 69 65 74 68 20 6F 66 20 61 20 73 65 63    iftieth of a sec
01E500:  73 74 72 75 63 74 69 6F 6E 73 20 69 6E 20 74 68    structions in th
01E510:  65 20 75 70 70 65 72 20 72 6F 6D 2E 0D 0D 20 20    e upper rom...  
01E520:  20 20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20       This routine 
01E530:  65 6E 61 62 6C 65 73 20 69 6E 74 65 72 75 70 74    enables interupt
01E540:  73 2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D    s...     -------
01E550:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01E560:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01E570:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01E580:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D    ---------------.
01E590:  0D 20 20 20 20 20 26 42 39 31 42 20 2D 20 48 49    .     &B91B - HI
01E5A0:  3A 20 4B 4C 20 4C 44 49 52 20 2D 20 4D 6F 76 65    : KL LDIR - Move
01E5B0:  20 61 20 62 6C 6F 63 6B 20 6F 66 20 63 6F 64 65     a block of code
01E5C0:  20 77 69 74 68 20 72 6F 6D 73 20 74 75 72 6E 65     with roms turne
01E5D0:  64 20 6F 66 66 0D 0D 20 20 20 20 20 45 6E 74 72    d off..     Entr
01E5E0:  79 3A 0D 0D 20 20 20 20 20 42 43 2C 44 45 2C 48    y:..     BC,DE,H
01E5F0:  4C 20 61 73 20 4C 44 49 52 20 63 6F 6D 6D 61 6E    L as LDIR comman
01E600:  64 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20    d..     Exit:.. 
01E610:  20 20 20 20 46 2C 42 43 2C 44 45 2C 48 4C 20 61        F,BC,DE,HL a
01E620:  73 20 73 65 74 20 62 79 20 4C 44 49 52 20 63 6F    s set by LDIR co
01E630:  6D 6D 61 6E 64 0D 0D 20 20 20 20 20 4E 6F 74 65    mmand..     Note
01E640:  73 3A 0D 0D 20 20 20 20 20 54 68 69 73 20 72 6F    s:..     This ro
01E650:  75 74 69 6E 65 20 6D 61 79 20 62 65 20 75 73 65    utine may be use
01E660:  64 20 74 6F 20 6D 6F 76 65 20 20 61 72 65 61 73    d to move  areas
01E670:  20 6F 66 20 72 61 6D 20 69 72 72 65 73 70 65 63     of ram irrespec
01E680:  74 69 76 65 20 6F 66 20 74 68 65 20 72 6F 6D 0D    tive of the rom.
01E690:  20 20 20 20 20 73 74 61 74 65 2E 0D 0D 20 20 20         state...   
01E6A0:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 65      This routine e
01E6B0:  6E 61 62 6C 65 73 20 69 6E 74 65 72 75 70 74 73    nables interupts
01E6C0:  2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D    ...     --------
01E6D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01E6E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01E6F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01E700:  6F 6E 64 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D    ond..     ------
01E710:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01E720:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01E730:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01E740:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01E750:  0D 0D 20 20 20 20 20 3D 3D 3D 3D 3D 3D 3D 3D 3D    ..     =========
01E760:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
01E770:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
01E780:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
01E790:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 20 20    =============.  
01E7A0:  20 20 20 65 6E 64 20 6F 66 20 68 69 67 68 20 6B       end of high k
01E7B0:  65 72 6E 61 6C 20 6A 75 6D 70 62 6C 6F 63 6B 0D    ernal jumpblock.
01E7C0:  0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D    ................
01E7D0:  1A 10 22 00 00 00 00 00 00 00 00 00 00 00 00 00    ..".............
01E7E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
01E7F0:  00 00 00 00 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
01E800:  6C 64 20 62 65 0D 20 20 20 20 20 63 61 6C 6C 65    ld be.     calle
01E810:  64 20 6A 75 73 74 20 62 65 66 6F 72 65 20 69 6E    d just before in
01E820:  74 65 72 75 70 74 73 20 61 72 65 20 72 65 2D 65    terupts are re-e
01E830:  6E 61 62 6C 65 64 2E 20 49 66 20 69 6E 74 65 72    nabled. If inter
01E840:  75 70 74 73 20 61 72 65 20 64 69 73 61 62 6C 65    upts are disable
01E850:  64 0D 20 20 20 20 20 66 6F 72 20 61 20 6C 6F 6E    d.     for a lon
01E860:  67 20 74 69 6D 65 20 28 6D 6F 72 65 20 74 68 61    g time (more tha
01E870:  6E 20 74 77 65 6C 76 65 20 20 74 69 63 6B 73 29    n twelve  ticks)
01E880:  20 74 68 65 6E 20 74 68 65 20 75 73 65 72 20 6D     then the user m
01E890:  69 67 68 74 20 63 6F 6E 73 69 64 65 72 0D 20 20    ight consider.  
01E8A0:  20 20 20 63 61 6C 6C 69 6E 67 20 74 68 69 73 20       calling this 
01E8B0:  72 6F 75 74 69 6E 65 20 61 6E 64 20 72 65 2D 65    routine and re-e
01E8C0:  6E 61 62 6C 69 6E 67 20 69 6E 74 65 72 75 70 74    nabling interupt
01E8D0:  73 20 20 66 6F 72 20 61 20 73 68 6F 72 74 20 74    s  for a short t
01E8E0:  69 6D 65 20 65 76 65 72 79 0D 20 20 20 20 20 66    ime every.     f
01E8F0:  69 66 74 69 65 74 68 20 6F 66 20 61 20 73 65 63    iftieth of a sec
01E900:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D    ---------------.
01E910:  0D 20 20 20 20 20 26 42 39 31 45 20 2D 20 48 49    .     &B91E - HI
01E920:  3A 20 4B 4C 20 4C 44 44 52 20 2D 20 4D 6F 76 65    : KL LDDR - Move
01E930:  20 61 20 62 6C 6F 63 6B 20 6F 66 20 63 6F 64 65     a block of code
01E940:  20 77 69 74 68 20 72 6F 6D 73 20 74 75 72 6E 65     with roms turne
01E950:  64 20 6F 66 66 0D 0D 20 20 20 20 20 45 6E 74 72    d off..     Entr
01E960:  79 3A 0D 0D 20 20 20 20 20 42 43 2C 44 45 2C 48    y:..     BC,DE,H
01E970:  4C 20 61 73 20 4C 44 44 52 20 63 6F 6D 6D 61 6E    L as LDDR comman
01E980:  64 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20    d..     Exit:.. 
01E990:  20 20 20 20 46 2C 42 43 2C 44 45 2C 48 4C 20 61        F,BC,DE,HL a
01E9A0:  73 20 4C 44 44 52 20 63 6F 6D 6D 61 6E 64 0D 0D    s LDDR command..
01E9B0:  20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20         Notes:..   
01E9C0:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 6D      This routine m
01E9D0:  61 79 20 62 65 20 75 73 65 64 20 74 6F 20 6D 6F    ay be used to mo
01E9E0:  76 65 20 20 61 72 65 61 73 20 6F 66 20 72 61 6D    ve  areas of ram
01E9F0:  20 69 72 72 65 73 70 65 63 74 69 76 65 20 6F 66     irrespective of
01EA00:  20 74 68 65 20 72 6F 6D 0D 20 20 20 20 20 73 74     the rom.     st
01EA10:  61 74 65 2E 0D 0D 20 20 20 20 20 54 68 69 73 20    ate...     This 
01EA20:  72 6F 75 74 69 6E 65 20 65 6E 61 62 6C 65 73 20    routine enables 
01EA30:  69 6E 74 65 72 75 70 74 73 0D 0D 20 20 20 20 20    interupts..     
01EA40:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01EA50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01EA60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01EA70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01EA80:  2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20 26 42    -------..     &B
01EA90:  39 32 31 20 2D 20 48 4C 3A 20 4B 4C 20 20 50 4F    921 - HL: KL  PO
01EAA0:  4C 4C 20 20 53 59 4E 43 48 52 4F 4E 4F 55 53 20    LL  SYNCHRONOUS 
01EAB0:  20 2D 20 20 43 68 65 63 6B 20 20 69 66 20 20 61     -  Check  if  a
01EAC0:  6E 20 20 65 76 65 6E 74 20 77 69 74 68 20 68 69    n  event with hi
01EAD0:  67 68 65 72 0D 20 20 20 20 20 70 72 69 6F 72 69    gher.     priori
01EAE0:  74 79 20 74 68 61 6E 20 74 68 65 20 63 75 72 72    ty than the curr
01EAF0:  65 6E 74 20 65 76 65 6E 74 20 69 73 20 70 65 6E    ent event is pen
01EB00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EB10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EB20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EB30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EB40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EB50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EB60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EB70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EB80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EB90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EBA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EBB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EBC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EBD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EBE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EBF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EC00:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EC10:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EC20:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EC30:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EC40:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EC50:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EC60:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EC70:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EC80:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01EC90:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01ECA0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01ECB0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01ECC0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01ECD0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01ECE0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01ECF0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
01ED00:  64 69 6E 67 0D 0D 20 20 20 20 20 45 6E 74 72 79    ding..     Entry
01ED10:  3A 0D 0D 20 20 20 20 20 4E 6F 6E 65 0D 0D 20 20    :..     None..  
01ED20:  20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20 49       Exit:..     I
01ED30:  66 20 74 68 65 72 65 20 69 73 20 61 20 68 69 67    f there is a hig
01ED40:  68 65 72 20 70 72 69 6F 72 69 74 79 20 65 76 65    her priority eve
01ED50:  6E 74 20 70 65 6E 64 69 6E 67 2E 0D 0D 20 20 20    nt pending...   
01ED60:  20 20 43 61 72 72 79 20 74 72 75 65 2E 0D 0D 0D      Carry true....
01ED70:  0D 0D 0D 0D 0D 20 20 20 20 20 49 66 20 74 68 65    .....     If the
01ED80:  72 65 20 69 73 20 6E 6F 20 68 69 67 68 65 72 20    re is no higher 
01ED90:  70 72 69 6F 72 69 74 79 20 65 76 65 6E 74 20 70    priority event p
01EDA0:  65 6E 64 69 6E 67 3A 0D 0D 20 20 20 20 20 43 61    ending:..     Ca
01EDB0:  72 72 79 20 66 61 6C 73 65 2E 0D 0D 20 20 20 20    rry false...    
01EDC0:  20 41 20 61 6E 64 20 6F 74 68 65 72 20 66 6C 61     A and other fla
01EDD0:  67 73 20 63 6F 72 72 75 70 74 2E 0D 0D 20 20 20    gs corrupt...   
01EDE0:  20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54      Notes:..     T
01EDF0:  68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 69    his routine is i
01EE00:  6E 20 20 74 68 65 20 20 68 69 67 68 20 20 6A 75    n  the  high  ju
01EE10:  6D 70 62 6C 6F 63 6B 20 20 74 6F 20 20 6D 69 6E    mpblock  to  min
01EE20:  69 6D 69 73 65 20 74 68 65 20 6F 76 65 72 68 65    imise the overhe
01EE30:  61 64 20 6F 66 0D 20 20 20 20 20 70 6F 6C 6C 69    ad of.     polli
01EE40:  6E 67 20 66 6F 72 20 73 79 6E 63 68 72 6F 6E 6F    ng for synchrono
01EE50:  75 73 20 20 65 76 65 6E 74 73 2E 20 20 49 66 20    us  events.  If 
01EE60:  20 74 68 65 20 20 73 79 6E 63 68 72 6F 6E 6F 75     the  synchronou
01EE70:  73 20 20 65 76 65 6E 74 20 71 75 65 75 65 20 69    s  event queue i
01EE80:  73 0D 20 20 20 20 20 65 6D 70 74 79 20 74 68 65    s.     empty the
01EE90:  6E 20 74 68 65 20 72 6F 75 74 69 6E 65 20 74 61    n the routine ta
01EEA0:  6B 65 73 20 6F 6E 6C 79 20 61 20 66 65 77 20 69    kes only a few i
01EEB0:  6E 73 74 72 75 63 74 69 6F 6E 73 2E 0D 0D 20 20    nstructions...  
01EEC0:  20 20 20 57 68 69 6C 65 20 61 20 73 79 6E 63 68       While a synch
01EED0:  72 6F 6E 6F 75 73 20 65 76 65 6E 74 20 69 73 20    ronous event is 
01EEE0:  62 65 69 6E 67 20 20 70 72 6F 63 65 73 73 65 64    being  processed
01EEF0:  20 74 68 65 20 6B 65 72 6E 65 6C 20 72 65 6D 65     the kernel reme
01EF00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
01EF10:  1A 00 01 00 02 09 4E E5 1A 00 C1 02 00 00 00 02    ......N.........
01EF20:  1A 00 C6 02 00 00 00 02 1A 00 C2 02 00 00 00 02    ................
01EF30:  1A 00 C7 02 00 00 00 02 1A 00 C3 02 00 00 00 02    ................
01EF40:  1A 00 C8 02 00 00 00 02 1A 00 C4 02 00 00 00 02    ................
01EF50:  1A 00 C9 02 00 00 00 02 1A 00 C5 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:  1B 40 0D 0D 0D 20 20 20 20 20 49 6E 64 69 72 65    .@...     Indire
01F010:  63 74 69 6F 6E 73 0D 20 20 20 20 20 2D 2D 2D 2D    ctions.     ----
01F020:  2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20 26    --------..     &
01F030:  42 44 43 44 20 2D 20 49 4E 44 3A 20 54 58 54 20    BDCD - IND: TXT 
01F040:  44 52 41 57 20 43 55 52 53 4F 52 20 2D 20 50 75    DRAW CURSOR - Pu
01F050:  74 20 63 75 72 73 6F 72 20 62 6C 6F 62 20 6F 6E    t cursor blob on
01F060:  20 73 63 72 65 65 6E 0D 0D 20 20 20 20 20 45 6E     screen..     En
01F070:  74 72 79 3A 0D 0D 20 20 20 20 20 4E 6F 6E 65 0D    try:..     None.
01F080:  0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20    .     Exit:..   
01F090:  20 20 41 46 20 63 6F 72 72 75 70 74 2E 0D 0D 20      AF corrupt... 
01F0A0:  20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20        Notes:..    
01F0B0:  20 54 68 69 73 20 69 6E 64 69 72 65 63 74 69 6F     This indirectio
01F0C0:  6E 20 69 73 20 70 72 6F 76 69 64 65 64 20 74 6F    n is provided to
01F0D0:  20 61 6C 6C 6F 77 20 20 74 68 65 20 20 75 73 65     allow  the  use
01F0E0:  72 20 74 6F 20 63 68 61 6E 67 65 20 74 68 65 20    r to change the 
01F0F0:  66 6F 72 6D 20 6F 66 0D 20 20 20 20 20 74 68 65    form of.     the
01F100:  20 63 75 72 73 6F 72 20 62 6C 6F 62 2E 20 53 65     cursor blob. Se
01F110:  65 20 54 58 54 20 20 50 4C 41 43 45 20 20 43 55    e TXT  PLACE  CU
01F120:  52 53 4F 52 20 20 66 6F 72 20 20 61 20 64 65 73    RSOR  for  a des
01F130:  63 72 69 70 74 69 6F 6E 20 6F 66 20 68 6F 77 20    cription of how 
01F140:  74 68 65 0D 20 20 20 20 20 63 75 72 73 6F 72 20    the.     cursor 
01F150:  62 6C 6F 62 20 69 73 20 6E 6F 72 6D 61 6C 6C 79    blob is normally
01F160:  20 77 72 69 74 74 65 6E 2E 0D 0D 20 20 20 20 20     written...     
01F170:  54 68 65 20 74 65 78 74 20 56 44 55 20 72 6F 75    The text VDU rou
01F180:  74 69 6E 65 73 20 20 63 61 6C 6C 20 20 74 68 69    tines  call  thi
01F190:  73 20 20 69 6E 64 69 72 65 63 74 69 6F 6E 20 20    s  indirection  
01F1A0:  77 68 65 6E 65 76 65 72 20 74 68 65 20 63 75 72    whenever the cur
01F1B0:  73 6F 72 20 69 73 0D 20 20 20 20 20 70 6C 61 63    sor is.     plac
01F1C0:  65 64 20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E    ed on the screen
01F1D0:  2E 20 41 6C 6C 20 20 74 68 65 20 20 74 65 78 74    . All  the  text
01F1E0:  20 20 56 44 55 20 20 72 6F 75 74 69 6E 65 73 20      VDU  routines 
01F1F0:  74 68 61 74 20 72 65 61 64 20 66 72 6F 6D 20 74    that read from t
01F200:  20 66 72 6F 6D 20 74 68 65 0D 20 20 20 20 20 73     from the.     s
01F210:  63 72 65 65 6E 2E 20 54 58 54 20 52 44 20 43 48    creen. TXT RD CH
01F220:  41 52 20 72 65 6D 6F 76 65 73 20 74 68 65 20 20    AR removes the  
01F230:  63 75 72 73 6F 72 20 66 72 6F 6D 20 74 68 65 20    cursor from the 
01F240:  73 63 72 65 65 6E 20 62 65 66 6F 72 65 20 63 61    screen before ca
01F250:  6C 6C 69 6E 67 0D 20 20 20 20 20 74 68 69 73 20    lling.     this 
01F260:  69 6E 64 69 72 65 63 74 69 6F 6E 2E 0D 0D 20 20    indirection...  
01F270:  20 20 20 54 68 69 73 20 72 65 61 64 20 69 73 20       This read is 
01F280:  70 65 72 66 6F 72 6D 65 64 20 62 79 20 20 63 6F    performed by  co
01F290:  6D 70 61 72 69 6E 67 20 20 74 68 65 20 20 6D 61    mparing  the  ma
01F2A0:  74 72 69 78 20 20 66 6F 75 6E 64 20 6F 6E 20 74    trix  found on t
01F2B0:  68 65 20 73 63 72 65 65 6E 0D 20 20 20 20 20 77    he screen.     w
01F2C0:  69 74 68 20 74 68 65 20 6D 61 74 72 69 63 65 73    ith the matrices
01F2D0:  20 75 73 65 64 20 74 6F 20 67 65 6E 65 72 61 74     used to generat
01F2E0:  65 20 20 63 68 61 72 61 63 74 65 72 73 2E 20 41    e  characters. A
01F2F0:  73 20 61 20 72 65 73 75 6C 74 20 63 68 61 6E 67    s a result chang
01F300:  69 6E 67 20 61 0D 20 20 20 20 20 63 68 61 72 61    ing a.     chara
01F310:  63 74 65 72 20 6D 61 74 72 69 78 2C 20 63 68 61    cter matrix, cha
01F320:  6E 67 69 6E 67 20 70 65 6E 20 20 6F 72 20 20 70    nging pen  or  p
01F330:  61 70 65 72 20 20 69 6E 6B 73 20 20 6F 72 20 63    aper  inks  or c
01F340:  68 61 6E 67 69 6E 67 20 74 68 65 20 73 63 72 65    hanging the scre
01F350:  6E 0D 20 20 20 20 20 28 65 2E 67 2E 20 64 72 61    n.     (e.g. dra
01F360:  77 69 6E 67 20 61 20 20 6C 69 6E 65 20 20 74 68    wing a  line  th
01F370:  72 6F 75 67 68 20 20 61 20 20 63 68 61 72 61 63    rough  a  charac
01F380:  74 65 72 29 20 20 6D 61 79 20 20 6D 61 6B 65 20    ter)  may  make 
01F390:  74 68 65 20 63 68 61 72 61 63 74 65 72 0D 20 20    the character.  
01F3A0:  20 20 20 75 6E 72 65 61 64 61 62 6C 65 2E 20 49       unreadable. I
01F3B0:  6E 20 70 61 72 74 69 63 75 6C 61 72 20 74 68 65    n particular the
01F3C0:  20 63 75 72 73 6F 72 20 62 6C 6F 62 20 20 77 69     cursor blob  wi
01F3D0:  6C 6C 20 63 61 75 73 65 20 63 6F 6E 66 75 73 69    ll cause confusi
01F3E0:  6F 6E 20 61 6E 64 20 73 6F 0D 20 20 20 20 20 69    on and so.     i
01F3F0:  74 20 73 68 6F 75 6C 64 20 6E 6F 74 20 62 65 20    t should not be 
01F400:  68 65 0D 20 20 20 20 20 73 63 72 65 65 6E 2C 20    he.     screen, 
01F410:  77 72 69 74 65 20 74 6F 20 74 68 65 20 73 63 72    write to the scr
01F420:  65 65 6E 20 6F 72 20 20 63 68 61 6E 67 65 20 74    een or  change t
01F430:  68 65 20 63 75 72 72 65 6E 74 20 70 6F 73 69 74    he current posit
01F440:  69 6F 6E 20 72 65 6D 6F 76 65 20 74 68 65 0D 20    ion remove the. 
01F450:  20 20 20 20 63 75 72 73 6F 72 20 28 75 73 69 6E        cursor (usin
01F460:  67 20 54 58 54 20 55 4E 44 52 41 57 20 20 43 55    g TXT UNDRAW  CU
01F470:  52 53 4F 52 29 20 20 62 65 66 6F 72 65 20 20 70    RSOR)  before  p
01F480:  65 72 66 6F 72 6D 69 6E 67 20 74 68 65 69 72 20    erforming their 
01F490:  61 63 74 69 6F 6E 20 61 6E 64 0D 20 20 20 20 20    action and.     
01F4A0:  70 6C 61 63 65 20 69 74 20 62 61 63 6B 20 6F 6E    place it back on
01F4B0:  20 74 68 65 20 20 73 63 72 65 65 6E 20 20 61 66     the  screen  af
01F4C0:  74 65 72 77 61 72 64 73 20 20 28 75 73 69 6E 67    terwards  (using
01F4D0:  20 20 54 58 54 20 44 52 41 57 20 43 55 52 53 4F      TXT DRAW CURSO
01F4E0:  52 29 2E 20 41 6E 0D 20 20 20 20 20 65 78 61 6D    R). An.     exam
01F4F0:  70 6C 65 20 6F 66 20 73 75 63 68 20 61 20 72 6F    ple of such a ro
01F500:  75 74 69 6E 65 20 69 73 20 20 54 58 54 20 20 57    utine is  TXT  W
01F510:  52 20 20 43 48 41 52 20 74 68 61 74 20 77 72 69    R  CHAR that wri
01F520:  74 65 73 20 61 20 63 68 61 72 61 63 74 65 72 20    tes a character 
01F530:  6F 6E 0D 20 20 20 20 20 74 68 65 20 73 63 72 65    on.     the scre
01F540:  65 6E 2E 0D 0D 20 20 20 20 20 54 68 69 73 20 69    en...     This i
01F550:  6E 64 69 72 65 63 74 69 6F 6E 20 69 73 20 73 65    ndirection is se
01F560:  74 75 70 20 77 68 65 6E 20 54 58 54 20 49 4E 49    tup when TXT INI
01F570:  54 49 41 4C 49 53 45 20 6F 72 20 54 58 54 20 52    TIALISE or TXT R
01F580:  45 53 45 54 20 69 73 20 63 61 6C 6C 65 64 2E 0D    ESET is called..
01F590:  0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    .     ----------
01F5A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01F5B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01F5C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01F5D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20    ------------..  
01F5E0:  20 20 20 26 42 44 44 30 20 2D 20 49 4E 44 3A 20       &BDD0 - IND: 
01F5F0:  54 58 54 20 55 4E 44 52 41 57 20 43 55 52 53 4F    TXT UNDRAW CURSO
01F600:  6F 6E 20 74 68 65 20 73 63 72 65 65 6E 2E 0D 0D    on the screen...
01F610:  20 20 20 20 20 53 70 65 63 69 61 6C 20 20 70 72         Special  pr
01F620:  65 63 61 75 74 69 6F 6E 73 20 20 61 72 65 20 20    ecautions  are  
01F630:  74 61 6B 65 6E 20 20 20 61 67 61 69 6E 73 74 20    taken   against 
01F640:  20 67 65 6E 65 72 61 74 69 6E 67 20 20 69 6E 76     generating  inv
01F650:  65 72 73 65 20 20 73 70 61 63 65 0D 20 20 20 20    erse  space.    
01F660:  20 28 63 68 61 72 61 63 74 65 72 20 26 38 66 29     (character &8f)
01F670:  2E 20 49 6E 69 74 69 61 6C 6C 79 20 74 68 65 20    . Initially the 
01F680:  20 63 68 61 72 61 63 74 65 72 20 20 69 73 20 20     character  is  
01F690:  72 65 61 64 20 20 61 73 73 75 6D 69 6E 67 20 74    read  assuming t
01F6A0:  68 61 74 20 74 68 65 0D 20 20 20 20 20 62 61 63    hat the.     bac
01F6B0:  6B 67 72 6F 75 6E 64 20 74 6F 20 74 68 65 20 63    kground to the c
01F6C0:  68 61 72 61 63 74 65 72 20 77 61 73 20 77 72 69    haracter was wri
01F6D0:  74 74 65 6E 20 20 69 6E 20 20 74 68 65 20 63 75    tten  in  the cu
01F6E0:  72 72 65 6E 74 20 70 61 70 65 72 20 69 6E 6B 2E    rrent paper ink.
01F6F0:  20 49 66 0D 20 20 20 20 20 74 68 69 73 20 66 61     If.     this fa
01F700:  69 6C 73 20 74 6F 20 20 67 65 6E 65 72 61 74 65    ils to  generate
01F710:  20 20 61 20 20 72 65 63 6F 67 6E 69 73 65 61 62      a  recogniseab
01F720:  6C 65 20 20 63 68 61 72 61 63 74 65 72 20 20 6F    le  character  o
01F730:  72 20 20 69 74 20 67 65 6E 65 72 61 74 65 73 0D    r  it generates.
01F740:  20 20 20 20 20 69 6E 76 65 72 73 65 20 73 70 61         inverse spa
01F750:  63 65 20 74 68 65 6E 20 61 6E 6F 74 68 65 72 20    ce then another 
01F760:  74 72 79 20 69 73 20 20 6D 61 64 65 20 62 79 20    try is  made by 
01F770:  61 73 73 75 6D 69 6E 67 20 74 68 61 74 20 74 68    assuming that th
01F780:  65 20 63 68 61 72 61 63 74 65 72 0D 20 20 20 20    e character.    
01F790:  20 77 61 73 20 77 72 69 74 74 65 6E 20 69 6E 20     was written in 
01F7A0:  74 68 65 20 63 75 72 72 65 6E 74 20 70 65 6E 20    the current pen 
01F7B0:  69 6E 6B 2E 0D 0D 20 20 20 20 20 54 68 65 20 63    ink...     The c
01F7C0:  68 61 72 61 63 74 65 72 73 20 61 72 65 20 73 63    haracters are sc
01F7D0:  61 6E 6E 65 64 20 20 73 74 61 72 74 69 6E 67 20    anned  starting 
01F7E0:  20 77 69 74 68 20 20 30 20 20 61 6E 64 20 66 69     with  0  and fi
01F7F0:  6E 69 73 68 69 6E 67 20 77 69 74 68 20 26 46 46    nishing with &FF
01F800:  52 20 2D 20 52 65 6D 6F 76 65 20 62 6C 6F 62 20    R - Remove blob 
01F810:  66 72 6F 6D 20 73 63 72 65 65 6E 2E 0D 0D 20 20    from screen...  
01F820:  20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20 20       Entry:..     
01F830:  4E 6F 6E 65 0D 0D 20 20 20 20 20 45 78 69 74 3A    None..     Exit:
01F840:  0D 0D 20 20 20 20 20 41 46 20 63 6F 72 72 75 70    ..     AF corrup
01F850:  74 2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D    t...     Notes:.
01F860:  0D 20 20 20 20 20 53 65 65 20 49 4E 44 3A 20 54    .     See IND: T
01F870:  58 54 20 44 52 41 57 20 43 55 52 53 4F 52 0D 0D    XT DRAW CURSOR..
01F880:  20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D         -----------
01F890:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01F8A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01F8B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01F8C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20    ------------..  
01F8D0:  20 20 20 26 42 44 44 33 20 2D 20 49 4E 44 3A 20       &BDD3 - IND: 
01F8E0:  54 58 54 20 57 52 49 54 45 20 43 48 41 52 20 2D    TXT WRITE CHAR -
01F8F0:  20 50 75 74 20 61 20 63 68 61 72 61 63 74 65 72     Put a character
01F900:  20 6F 6E 20 74 68 65 20 73 63 72 65 65 6E 0D 0D     on the screen..
01F910:  20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20         Entry:..   
01F920:  20 20 41 20 3D 20 63 68 61 72 61 63 74 65 72 20      A = character 
01F930:  74 6F 20 77 72 69 74 65 0D 20 20 20 20 20 48 20    to write.     H 
01F940:  3D 20 63 6F 6C 75 6D 6E 20 74 6F 20 77 72 69 74    = column to writ
01F950:  65 20 61 74 0D 20 20 20 20 20 4C 20 3D 20 72 6F    e at.     L = ro
01F960:  77 20 74 6F 20 77 72 69 74 65 20 61 74 0D 0D 20    w to write at.. 
01F970:  20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20        Exit:..     
01F980:  41 46 2C 42 43 2C 44 45 2C 48 4C 20 63 6F 72 72    AF,BC,DE,HL corr
01F990:  75 70 74 2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73    upt...     Notes
01F9A0:  3A 0D 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20 54 68    :........     Th
01F9B0:  65 20 63 68 61 72 61 63 74 65 72 20 70 6F 73 69    e character posi
01F9C0:  74 69 6F 6E 20 74 6F 20 77 72 69 74 65 20 20 61    tion to write  a
01F9D0:  74 20 20 69 73 20 67 69 76 65 6E 20 69 6E 20 70    t  is given in p
01F9E0:  68 79 73 69 63 61 6C 20 63 6F 6F 72 64 69 6E 61    hysical coordina
01F9F0:  74 65 73 2E 0D 20 20 20 20 20 69 2E 65 2E 20 72    tes..     i.e. r
01FA00:  2E 0D 20 20 20 20 20 54 68 75 73 2C 20 69 66 20    ..     Thus, if 
01FA10:  74 68 65 72 65 20 20 61 72 65 20 20 74 77 6F 20    there  are  two 
01FA20:  20 70 6F 73 73 69 62 6C 65 20 20 63 68 61 72 61     possible  chara
01FA30:  63 74 65 72 20 20 61 74 72 69 63 65 73 20 20 74    cter  atrices  t
01FA40:  68 61 74 20 6D 61 74 63 68 20 74 68 65 0D 20 20    hat match the.  
01FA50:  20 20 20 73 63 72 65 65 6E 2C 20 74 68 65 20 73       screen, the s
01FA60:  6D 61 6C 6C 65 72 20 6F 66 20 74 68 65 20 74 77    maller of the tw
01FA70:  6F 20 63 68 61 72 61 63 74 65 72 20 6E 75 6D 62    o character numb
01FA80:  65 72 73 20 77 69 6C 6C 20 62 65 20 72 65 74 75    ers will be retu
01FA90:  72 6E 65 64 2E 0D 0D 0D 0D 0D 0D 0D 0D 20 20 20    rned.........   
01FAA0:  20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74 69      This indirecti
01FAB0:  6F 6E 20 69 73 20 73 65 74 20 75 70 20 77 68 65    on is set up whe
01FAC0:  6E 20 54 58 54 20 49 4E 49 54 49 41 4C 49 53 45    n TXT INITIALISE
01FAD0:  20 6F 72 20 54 58 54 20 52 45 53 45 54 20 69 73     or TXT RESET is
01FAE0:  20 63 61 6C 6C 65 64 2E 0D 0D 20 20 20 20 20 2D     called...     -
01FAF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01FB00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01FB10:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01FB20:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01FB30:  2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20 26 42 44 44    -----..     &BDD
01FB40:  39 20 2D 20 49 4E 44 3A 20 54 58 54 20 4F 55 54    9 - IND: TXT OUT
01FB50:  20 41 43 54 49 4F 4E 20 2D 20 4F 75 74 70 75 74     ACTION - Output
01FB60:  20 61 20 63 68 61 72 61 63 74 65 72 20 6F 72 20     a character or 
01FB70:  63 6F 6E 74 72 6F 6C 20 63 6F 64 65 0D 0D 20 20    control code..  
01FB80:  20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20 20       Entry:..     
01FB90:  41 20 3D 20 63 68 61 72 61 63 74 65 72 20 6F 72    A = character or
01FBA0:  20 63 6F 64 65 0D 0D 20 20 20 20 20 45 78 69 74     code..     Exit
01FBB0:  3A 0D 0D 20 20 20 20 20 41 46 2C 42 43 2C 44 45    :..     AF,BC,DE
01FBC0:  2C 48 4C 20 63 6F 72 72 75 70 74 2E 0D 0D 20 20    ,HL corrupt...  
01FBD0:  20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20       Notes:..     
01FBE0:  54 68 69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E    This indirection
01FBF0:  20 69 73 20 63 61 6C 6C 65 64 20 62 79 20 54 58     is called by TX
01FC00:  6F 77 20 30 2C 63 6F 6C 75 6D 6E 20 30 20 69 73    ow 0,column 0 is
01FC10:  20 74 68 65 20 74 6F 70 20 6C 65 66 74 20 6F 66     the top left of
01FC20:  20 74 68 65 20 73 63 72 65 65 6E 2E 20 54 68 65     the screen. The
01FC30:  20 70 6F 73 69 74 69 6F 6E 20 69 73 20 6E 6F 74     position is not
01FC40:  0D 20 20 20 20 20 63 68 65 63 6B 65 64 20 66 6F    .     checked fo
01FC50:  72 20 6C 65 67 61 6C 69 74 79 2E 0D 0D 20 20 20    r legality...   
01FC60:  20 20 54 58 54 20 57 52 49 54 45 20 43 48 41 52      TXT WRITE CHAR
01FC70:  20 69 73 20 63 61 6C 6C 65 64 20 62 79 20 54 58     is called by TX
01FC80:  54 20 20 57 52 20 20 43 48 41 52 20 20 74 6F 20    T  WR  CHAR  to 
01FC90:  70 72 69 6E 74 20 61 20 63 68 61 72 61 63 74 65    print a characte
01FCA0:  72 20 6F 6E 20 74 68 65 0D 20 20 20 20 20 73 63    r on the.     sc
01FCB0:  72 65 65 6E 2E 20 54 68 65 20 72 65 6D 6F 76 69    reen. The removi
01FCC0:  6E 67 20 6F 66 20 74 68 65 20 63 75 72 73 6F 72    ng of the cursor
01FCD0:  20 62 6C 6F 62 20 61 6E 64 20 74 68 65 20 63 61     blob and the ca
01FCE0:  6C 63 75 6C 61 74 69 6F 6E 20 6F 66 20 74 68 65    lculation of the
01FCF0:  20 6E 65 77 0D 20 20 20 20 20 63 75 72 72 65 6E     new.     curren
01FD00:  74 20 70 6F 73 69 74 69 6F 6E 20 61 72 65 20 70    t position are p
01FD10:  65 72 66 6F 72 6D 65 64 20 62 79 20 20 54 58 54    erformed by  TXT
01FD20:  20 20 57 52 20 20 43 48 41 52 20 20 61 6E 64 20      WR  CHAR  and 
01FD30:  6E 6F 74 20 62 79 20 54 58 54 20 57 52 49 54 45    not by TXT WRITE
01FD40:  0D 20 20 20 20 20 43 48 41 52 2E 0D 0D 20 20 20    .     CHAR...   
01FD50:  20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74 69      This indirecti
01FD60:  6F 6E 20 69 73 20 73 65 74 20 75 70 20 77 68 65    on is set up whe
01FD70:  6E 20 54 58 54 20 49 4E 49 54 49 41 4C 49 53 45    n TXT INITIALISE
01FD80:  20 6F 72 20 54 58 54 20 52 45 53 45 54 20 69 73     or TXT RESET is
01FD90:  20 63 61 6C 6C 65 64 0D 0D 20 20 20 20 20 2D 2D     called..     --
01FDA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01FDB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01FDC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01FDD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
01FDE0:  2D 2D 2D 2D 0D 0D 20 20 20 20 20 26 42 44 44 36    ----..     &BDD6
01FDF0:  20 2D 20 49 4E 44 3A 20 54 58 54 20 55 4E 57 52     - IND: TXT UNWR
01FE00:  54 20 20 4F 55 54 50 55 54 20 20 74 6F 20 20 64    T  OUTPUT  to  d
01FE10:  6F 20 74 68 65 20 77 6F 72 6B 20 6F 66 20 70 72    o the work of pr
01FE20:  69 6E 74 69 6E 67 0D 20 20 20 20 20 63 68 61 72    inting.     char
01FE30:  61 63 74 65 72 73 20 6F 72 20 6F 62 65 79 69 6E    acters or obeyin
01FE40:  67 20 74 68 65 20 63 6F 6E 74 72 6F 6C 20 63 6F    g the control co
01FE50:  64 65 73 2E 20 20 49 74 20 20 69 73 20 70 72 6F    des.  It  is pro
01FE60:  76 69 64 65 64 20 74 6F 20 61 6C 6C 6F 77 20 74    vided to allow t
01FE70:  68 65 0D 20 20 20 20 20 75 73 65 72 20 74 6F 20    he.     user to 
01FE80:  63 68 61 6E 67 65 20 74 68 65 20 6D 65 74 68 6F    change the metho
01FE90:  64 20 6F 66 20 64 65 61 6C 69 6E 67 20 77 69 74    d of dealing wit
01FEA0:  68 20 63 68 61 72 61 63 74 65 72 73 20 61 6E 64    h characters and
01FEB0:  20 63 6F 6E 74 72 6F 6C 20 63 6F 64 65 73 0D 20     control codes. 
01FEC0:  20 20 20 20 6F 72 20 74 6F 20 61 6C 6C 6F 77 20        or to allow 
01FED0:  74 68 65 20 75 73 65 72 20 74 6F 20 72 65 64 69    the user to redi
01FEE0:  72 65 63 74 20 20 6F 75 74 70 75 74 20 28 74 6F    rect  output (to
01FEF0:  20 74 68 65 20 70 72 69 6E 74 65 72 20 66 6F 72     the printer for
01FF00:  20 65 78 61 6D 70 6C 65 29 2E 0D 20 20 20 20 20     example)..     
01FF10:  54 58 54 20 4F 55 54 50 55 54 20 6D 65 72 65 6C    TXT OUTPUT merel
01FF20:  79 20 70 72 65 73 65 72 76 65 73 20 74 68 65 20    y preserves the 
01FF30:  72 65 67 69 73 74 65 72 73 20 20 61 72 6F 75 6E    registers  aroun
01FF40:  64 20 20 74 68 65 20 63 61 6C 6C 20 6F 66 20 54    d  the call of T
01FF50:  58 54 20 4F 55 54 0D 20 20 20 20 20 41 43 54 49    XT OUT.     ACTI
01FF60:  4F 4E 2E 0D 0D 20 20 20 20 20 43 6F 6E 74 72 6F    ON...     Contro
01FF70:  6C 20 63 6F 64 65 73 20 6D 61 79 20 74 61 6B 65    l codes may take
01FF80:  20 75 70 20 20 74 6F 20 20 39 20 20 70 61 72 61     up  to  9  para
01FF90:  6D 65 74 65 72 73 2E 20 54 68 65 73 65 20 61 72    meters. These ar
01FFA0:  65 20 74 68 65 20 63 68 61 72 61 63 74 65 72 73    e the characters
01FFB0:  0D 20 20 20 20 20 73 65 6E 74 20 66 6F 6C 6C 6F    .     sent follo
01FFC0:  77 69 6E 67 20 74 68 65 20 20 69 6E 69 74 69 61    wing the  initia
01FFD0:  6C 20 20 63 6F 6E 74 72 6F 6C 20 20 63 6F 64 65    l  control  code
01FFE0:  2E 20 20 54 68 65 20 20 63 68 61 72 61 63 74 65    .  The  characte
01FFF0:  72 73 20 20 73 65 6E 74 20 61 72 65 0D 20 20 20    rs  sent are.   
020000:  49 54 45 20 2D 20 52 65 61 64 20 61 20 63 68 61    ITE - Read a cha
020010:  72 61 63 74 65 72 20 66 72 6F 6D 20 74 68 65 20    racter from the 
020020:  73 63 72 65 65 6E 2E 0D 0D 20 20 20 20 20 45 6E    screen...     En
020030:  74 72 79 3A 0D 0D 20 20 20 20 20 48 20 3D 20 63    try:..     H = c
020040:  6F 6C 75 6D 6E 0D 20 20 20 20 20 4C 20 3D 20 72    olumn.     L = r
020050:  6F 77 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D    ow..     Exit:..
020060:  20 20 20 20 20 49 66 20 61 20 72 65 61 64 61 62         If a readab
020070:  6C 65 20 63 68 61 72 61 63 74 65 72 20 77 61 73    le character was
020080:  20 66 6F 75 6E 64 3A 0D 0D 20 20 20 20 20 43 61     found:..     Ca
020090:  72 72 79 20 74 72 75 65 2E 0D 20 20 20 20 20 41    rry true..     A
0200A0:  20 3D 20 63 68 61 72 61 63 74 65 72 20 72 65 61     = character rea
0200B0:  64 0D 0D 20 20 20 20 20 49 66 20 6E 6F 20 72 65    d..     If no re
0200C0:  63 6F 67 6E 69 73 61 62 6C 65 20 63 68 61 72 61    cognisable chara
0200D0:  63 74 65 72 20 77 61 73 20 66 6F 75 6E 64 3A 0D    cter was found:.
0200E0:  0D 20 20 20 20 20 43 61 72 72 79 20 66 61 6C 73    .     Carry fals
0200F0:  65 2E 20 41 20 3D 20 7A 65 72 6F 0D 0D 20 20 20    e. A = zero..   
020100:  20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54      Notes:..     T
020110:  68 65 20 63 68 61 72 61 63 74 65 72 20 70 6F 73    he character pos
020120:  69 74 69 6F 6E 20 74 6F 20 77 72 69 74 65 20 20    ition to write  
020130:  61 74 20 20 69 73 20 67 69 76 65 6E 20 69 6E 20    at  is given in 
020140:  70 68 79 73 69 63 61 6C 20 63 6F 6F 72 64 69 6E    physical coordin
020150:  61 74 65 73 2E 0D 20 20 20 20 20 69 2E 65 2E 20    ates..     i.e. 
020160:  72 6F 77 20 30 2C 63 6F 6C 75 6D 6E 20 30 20 69    row 0,column 0 i
020170:  73 20 74 68 65 20 74 6F 70 20 6C 65 66 74 20 6F    s the top left o
020180:  66 20 74 68 65 20 73 63 72 65 65 6E 2E 20 54 68    f the screen. Th
020190:  65 20 70 6F 73 69 74 69 6F 6E 20 69 73 20 6E 6F    e position is no
0201A0:  74 0D 20 20 20 20 20 63 68 65 63 6B 65 64 20 66    t.     checked f
0201B0:  6F 72 20 6C 65 67 61 6C 69 74 79 2E 0D 0D 20 20    or legality...  
0201C0:  20 20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74       This indirect
0201D0:  69 6F 6E 20 69 73 20 63 61 6C 6C 65 64 20 62 79    ion is called by
0201E0:  20 54 58 54 20 52 44 20 43 48 41 52 20 74 6F 20     TXT RD CHAR to 
0201F0:  72 65 61 64 20 61 20 63 68 61 72 61 63 74 65 72    read a character
020200:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
020210:  1B 00 01 00 02 09 4E E5 1B 00 C1 02 00 00 00 02    ......N.........
020220:  1B 00 C6 02 00 00 00 02 1B 00 C2 02 00 00 00 02    ................
020230:  1B 00 C7 02 00 00 00 02 1B 00 C3 02 00 00 00 02    ................
020240:  1B 00 C8 02 00 00 00 02 1B 00 C4 02 00 00 00 02    ................
020250:  1B 00 C9 02 00 00 00 02 1B 00 C5 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:  20 20 73 74 6F 72 65 64 20 69 6E 20 61 20 62 75      stored in a bu
020310:  66 66 65 72 20 75 6E 74 69 6C 20 73 75 66 66 69    ffer until suffi
020320:  63 69 65 6E 74 20 68 61 76 65 20 20 62 65 65 6E    cient have  been
020330:  20 72 65 63 69 65 76 65 64 20 74 6F 20 6D 61 6B     recieved to mak
020340:  65 20 75 70 20 61 6C 6C 0D 20 20 20 20 20 74 68    e up all.     th
020350:  65 20 72 65 71 75 69 72 65 64 20 70 61 72 61 6D    e required param
020360:  65 74 65 72 73 2E 20 54 68 65 20 63 6F 6E 74 72    eters. The contr
020370:  6F 6C 20 20 63 6F 64 65 20 20 62 75 66 66 65 72    ol  code  buffer
020380:  20 69 73 20 6F 6E 6C 79 20 6C 6F 6E 67 20 65 6E     is only long en
020390:  6F 75 67 68 0D 20 20 20 20 20 74 6F 20 61 63 63    ough.     to acc
0203A0:  65 70 74 20 39 20 70 61 72 61 6D 65 74 65 72 20    ept 9 parameter 
0203B0:  63 68 61 72 61 63 74 65 72 73 2E 0D 0D 20 20 20    characters...   
0203C0:  20 20 54 68 65 72 65 20 69 73 20 6F 6E 6C 79 20      There is only 
0203D0:  6F 6E 65 20 63 6F 6E 74 72 6F 6C 20 63 6F 64 65    one control code
0203E0:  20 62 75 66 66 65 72 20 20 77 68 69 63 68 20 69     buffer  which i
0203F0:  73 20 73 68 61 72 65 64 20 62 65 74 77 65 65 6E    s shared between
020400:  20 61 6C 6C 20 74 68 65 0D 20 20 20 20 20 73 74     all the.     st
020410:  72 65 61 6D 73 2E 49 74 20 69 73 2C 20 74 68 65    reams.It is, the
020420:  72 65 66 6F 72 65 2C 20 70 6F 73 73 69 62 6C 65    refore, possible
020430:  20 74 6F 20 67 65 74 20 75 6E 70 72 65 64 69 63     to get unpredic
020440:  74 61 62 6C 65 20 72 65 73 75 6C 74 73 20 69 66    table results if
020450:  20 74 68 65 0D 20 20 20 20 20 6F 75 74 70 75 74     the.     output
020460:  20 73 74 72 65 61 6D 20 69 73 20 63 68 61 6E 67     stream is chang
020470:  65 64 20 70 61 72 74 20 20 6F 66 20 20 74 68 65    ed part  of  the
020480:  20 20 77 61 79 20 20 74 68 72 6F 75 67 68 20 73      way  through s
020490:  65 6E 64 69 6E 67 20 61 20 63 6F 6E 74 72 6F 6C    ending a control
0204A0:  0D 20 20 20 20 20 63 6F 64 65 20 73 65 71 75 65    .     code seque
0204B0:  6E 63 65 2E 0D 0D 20 20 20 20 20 49 66 20 74 68    nce...     If th
0204C0:  65 20 56 44 55 20 69 73 20 20 64 69 73 61 62 6C    e VDU is  disabl
0204D0:  65 64 20 20 74 68 65 6E 20 20 6E 6F 20 20 63 68    ed  then  no  ch
0204E0:  61 72 61 63 74 65 72 73 20 20 77 69 6C 6C 20 20    aracters  will  
0204F0:  62 65 20 70 72 69 6E 74 65 64 20 6F 6E 20 74 68    be printed on th
020500:  69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E 20 69    is indirection i
020510:  73 20 75 73 65 64 20 62 79 20 47 52 41 20 54 45    s used by GRA TE
020520:  53 54 20 52 45 4C 41 54 49 56 45 20 61 6E 64 20    ST RELATIVE and 
020530:  47 52 41 20 54 45 53 54 20 41 42 53 4F 4C 55 54    GRA TEST ABSOLUT
020540:  45 20 74 6F 0D 20 20 20 20 20 74 65 73 74 20 74    E to.     test t
020550:  68 65 20 70 6F 69 6E 74 20 72 65 71 75 65 73 74    he point request
020560:  65 64 2E 20 49 74 20 69 73 20 20 70 72 6F 76 69    ed. It is  provi
020570:  64 65 64 20 20 74 6F 20 61 6C 6C 6F 77 20 74 68    ded  to allow th
020580:  65 20 75 73 65 72 20 74 6F 20 63 68 61 6E 67 65    e user to change
020590:  0D 20 20 20 20 20 74 68 65 20 6D 65 74 68 6F 64    .     the method
0205A0:  20 20 66 6F 72 20 20 74 65 73 74 69 6E 67 20 20      for  testing  
0205B0:  28 63 6F 6D 70 61 72 69 6E 67 20 20 77 69 74 68    (comparing  with
0205C0:  20 20 74 68 65 20 20 63 75 72 72 65 6E 74 20 20      the  current  
0205D0:  70 65 6E 20 20 69 6E 6B 20 66 6F 72 0D 20 20 20    pen  ink for.   
0205E0:  20 20 65 78 61 6D 70 6C 65 29 2E 2E 20 20 47 52      example)..  GR
0205F0:  41 20 20 54 45 53 54 20 20 52 45 4C 41 54 49 56    A  TEST  RELATIV
020600:  45 20 20 20 63 6F 6E 76 65 72 74 73 20 20 20 66    E   converts   f
020610:  72 6F 6D 20 20 20 72 65 6C 61 74 69 76 65 20 20    rom   relative  
020620:  74 6F 20 20 75 73 65 72 0D 20 20 20 20 20 63 6F    to  user.     co
020630:  6F 72 64 69 6E 61 74 65 73 20 61 6E 64 20 74 68    ordinates and th
020640:  65 6E 20 63 61 6C 6C 73 20 74 68 69 73 20 20 69    en calls this  i
020650:  6E 64 69 72 65 63 74 69 6F 6E 2E 20 20 47 52 41    ndirection.  GRA
020660:  20 54 45 53 54 20 41 42 53 4F 4C 55 54 45 20 63     TEST ABSOLUTE c
020670:  61 6C 6C 73 0D 20 20 20 20 20 74 68 69 73 20 69    alls.     this i
020680:  6E 64 69 72 65 63 74 69 6F 6E 20 64 69 72 65 63    ndirection direc
020690:  74 6C 79 2E 0D 0D 20 20 20 20 20 54 6F 20 74 65    tly...     To te
0206A0:  73 74 20 74 68 65 20 69 6E 6B 20 6F 66 20 61 20    st the ink of a 
0206B0:  70 6F 69 6E 74 20 20 69 6E 73 69 64 65 20 74 68    point  inside th
0206C0:  65 20 77 69 6E 64 6F 77 20 74 68 65 20 53 43 52    e window the SCR
0206D0:  20 52 45 41 44 20 69 6E 64 69 72 65 63 74 69 6F     READ indirectio
0206E0:  6E 0D 20 20 20 20 20 69 73 20 75 73 65 64 2E 0D    n.     is used..
0206F0:  0D 20 20 20 20 20 54 68 69 73 20 69 6E 64 69 72    .     This indir
020700:  65 0D 20 20 20 20 20 73 63 72 65 65 6E 2E 20 49    e.     screen. I
020710:  6E 20 56 31 2E 31 20 66 69 72 6D 77 61 72 65 20    n V1.1 firmware 
020720:  63 6F 6E 74 72 6F 6C 20 20 63 6F 64 65 73 20 20    control  codes  
020730:  74 68 61 74 20 61 72 65 20 73 70 72 65 63 69 61    that are sprecia
020740:  6C 6C 79 20 6D 61 72 6B 65 64 20 69 6E 0D 20 20    lly marked in.  
020750:  20 20 20 74 68 65 20 63 6F 6E 74 72 6F 6C 20 63       the control c
020760:  6F 64 65 20 74 61 62 6C 65 20 77 69 6C 6C 20 20    ode table will  
020770:  6E 6F 74 20 20 62 65 20 20 6F 62 65 79 65 64 20    not  be  obeyed 
020780:  20 69 66 20 20 74 68 65 20 56 44 55 20 69 73 20     if  the VDU is 
020790:  64 69 73 61 62 6C 65 64 2E 0D 20 20 20 20 20 4F    disabled..     O
0207A0:  74 68 65 72 20 63 6F 6E 74 72 6F 6C 20 63 6F 64    ther control cod
0207B0:  65 73 20 61 6E 64 20 61 6C 6C 20 20 63 6F 6E 74    es and all  cont
0207C0:  72 6F 6C 20 20 63 6F 64 65 73 20 20 69 6E 20 20    rol  codes  in  
0207D0:  56 31 2E 30 20 66 69 72 6D 77 61 72 65 20 77 69    V1.0 firmware wi
0207E0:  6C 6C 20 62 65 0D 20 20 20 20 20 6F 62 65 79 65    ll be.     obeye
0207F0:  64 2E 0D 0D 20 20 20 20 20 49 66 20 74 68 65 20    d...     If the 
020800:  67 72 61 70 68 69 63 73 20 63 68 61 72 61 63 74    graphics charact
020810:  65 72 20 77 72 69 74 65 20 20 6D 6F 64 65 20 20    er write  mode  
020820:  69 73 20 20 65 6E 61 62 6C 65 64 20 74 68 65 6E    is  enabled then
020830:  20 61 6C 6C 20 63 68 61 72 61 63 74 65 72 73 0D     all characters.
020840:  20 20 20 20 20 61 6E 64 20 63 6F 6E 74 72 6F 6C         and control
020850:  20 63 6F 64 65 73 20 61 72 65 20 70 72 69 6E 74     codes are print
020860:  65 64 20 75 73 69 6E 67 20 74 68 65 20 47 72 61    ed using the Gra
020870:  70 68 69 63 73 20 56 44 55 20 28 73 65 65 20 47    phics VDU (see G
020880:  52 41 20 57 52 20 43 48 41 52 29 0D 20 20 20 20    RA WR CHAR).    
020890:  20 61 6E 64 20 61 72 65 20 6E 6F 74 20 6F 62 65     and are not obe
0208A0:  79 65 64 2E 20 4E 6F 72 6D 61 6C 6C 79 20 20 63    yed. Normally  c
0208B0:  68 61 72 61 63 74 65 72 73 20 20 61 72 65 20 20    haracters  are  
0208C0:  77 72 69 74 74 65 6E 20 62 79 20 74 68 65 20 74    written by the t
0208D0:  65 78 74 20 56 44 55 0D 20 20 20 20 20 28 73 65    ext VDU.     (se
0208E0:  65 20 54 58 54 20 57 52 20 43 48 41 52 29 2E 0D    e TXT WR CHAR)..
0208F0:  0D 20 20 20 20 20 54 68 69 73 20 69 6E 64 69 72    .     This indir
020900:  65 63 74 69 6F 6E 20 69 73 20 73 65 74 20 75 70    ection is set up
020910:  20 77 68 65 6E 20 47 52 41 20 49 4E 49 54 49 41     when GRA INITIA
020920:  4C 49 53 45 20 6F 72 20 47 52 41 20 52 45 53 45    LISE or GRA RESE
020930:  54 20 69 73 20 63 61 6C 6C 65 64 2E 0D 0D 20 20    T is called...  
020940:  20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D       -------------
020950:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
020960:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
020970:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
020980:  2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20    ---------..     
020990:  26 42 44 45 32 20 2D 20 49 4E 44 3A 20 47 52 41    &BDE2 - IND: GRA
0209A0:  20 4C 49 4E 45 20 2D 20 44 72 61 77 20 61 20 6C     LINE - Draw a l
0209B0:  69 6E 65 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A    ine..     Entry:
0209C0:  0D 0D 20 20 20 20 20 44 45 20 3D 20 75 73 65 72    ..     DE = user
0209D0:  20 58 20 63 6F 6F 72 64 69 6E 61 74 65 73 20 6F     X coordinates o
0209E0:  66 20 65 6E 64 70 6F 69 6E 74 0D 20 20 20 20 20    f endpoint.     
0209F0:  48 4C 20 3D 20 75 73 65 72 20 59 20 63 6F 6F 72    HL = user Y coor
020A00:  64 69 6E 61 74 65 73 20 6F 66 20 65 6E 64 70 6F    dinates of endpo
020A10:  69 6E 74 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D    int..     Exit:.
020A20:  0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20 41 46 2C 42    .......     AF,B
020A30:  43 2C 44 45 2C 48 4C 20 63 6F 72 72 75 70 74 2E    C,DE,HL corrupt.
020A40:  0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20    ..     Notes:.. 
020A50:  20 20 20 20 54 68 65 20 70 6F 73 69 74 69 6F 6E        The position
020A60:  20 6F 66 20 20 74 68 65 20 20 65 6E 64 70 6F 69     of  the  endpoi
020A70:  6E 74 20 20 69 73 20 20 67 69 76 65 6E 20 20 69    nt  is  given  i
020A80:  6E 20 20 75 73 65 72 20 20 63 6F 6F 72 64 69 6E    n  user  coordin
020A90:  61 74 65 73 2E 20 69 2E 65 2E 0D 20 20 20 20 20    ates. i.e..     
020AA0:  72 65 6C 61 74 69 76 65 20 74 6F 20 74 68 65 20    relative to the 
020AB0:  75 73 65 72 20 6F 72 69 67 69 6E 0D 0D 20 20 20    user origin..   
020AC0:  20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74 69      This indirecti
020AD0:  6F 6E 20 69 73 20 75 73 65 64 20 62 79 20 47 52    on is used by GR
020AE0:  41 20 4C 49 4E 45 20 52 45 4C 41 54 49 56 45 20    A LINE RELATIVE 
020AF0:  61 6E 64 20 47 52 41 20 4C 49 4E 45 20 41 42 53    and GRA LINE ABS
020B00:  65 63 74 69 6F 6E 20 69 73 20 73 65 74 20 75 70    ection is set up
020B10:  20 77 68 65 6E 20 54 58 54 20 49 4E 49 54 49 41     when TXT INITIA
020B20:  4C 49 53 45 20 6F 72 20 54 58 54 20 52 45 53 45    LISE or TXT RESE
020B30:  54 20 69 73 20 63 61 6C 6C 65 64 2E 0D 0D 20 20    T is called...  
020B40:  20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D       -------------
020B50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
020B60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
020B70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
020B80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20    ---------..     
020B90:  26 42 44 44 43 20 2D 20 49 4E 44 3A 20 47 52 41    &BDDC - IND: GRA
020BA0:  20 50 4C 4F 54 20 2D 20 50 6C 6F 74 20 61 20 70     PLOT - Plot a p
020BB0:  6F 69 6E 74 0D 0D 20 20 20 20 20 45 6E 74 72 79    oint..     Entry
020BC0:  3A 0D 0D 20 20 20 20 20 44 45 20 3D 20 75 73 65    :..     DE = use
020BD0:  72 20 58 20 63 6F 6F 72 64 69 6E 61 74 65 20 6F    r X coordinate o
020BE0:  66 20 70 6F 69 6E 74 20 74 6F 20 70 6C 6F 74 0D    f point to plot.
020BF0:  20 20 20 20 20 48 4C 20 3D 20 75 73 65 72 20 59         HL = user Y
020C00:  20 63 6F 6F 72 64 69 6E 61 74 65 20 6F 66 20 70     coordinate of p
020C10:  6F 69 6E 74 20 74 6F 20 70 6C 6F 74 0D 0D 20 20    oint to plot..  
020C20:  20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20 41       Exit:..     A
020C30:  46 2C 42 43 2C 44 45 2C 48 4C 20 63 6F 72 72 75    F,BC,DE,HL corru
020C40:  70 74 2E 0D 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20    pt.........     
020C50:  4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54 68 65    Notes:..     The
020C60:  20 70 6F 73 69 74 69 6F 6E 20 6F 66 20 74 68 65     position of the
020C70:  20 70 6F 69 6E 74 20 69 73 20 20 67 69 76 65 6E     point is  given
020C80:  20 69 6E 20 75 73 65 72 20 63 6F 6F 72 64 69 6E     in user coordin
020C90:  61 74 65 73 2E 20 69 2E 65 2E 20 72 65 6C 61 74    ates. i.e. relat
020CA0:  69 76 65 0D 20 20 20 20 20 74 6F 20 74 68 65 20    ive.     to the 
020CB0:  75 73 65 72 20 6F 72 69 67 69 6E 2E 0D 0D 20 20    user origin...  
020CC0:  20 20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74       This indirect
020CD0:  69 6F 6E 20 69 73 20 63 61 6C 6C 65 64 20 62 79    ion is called by
020CE0:  20 47 52 41 20 20 50 4C 4F 54 20 52 45 4C 41 54     GRA  PLOT RELAT
020CF0:  49 56 45 20 61 6E 64 20 47 52 41 20 50 4C 4F 54    IVE and GRA PLOT
020D00:  4F 4C 55 54 45 20 74 6F 0D 20 20 20 20 20 64 72    OLUTE to.     dr
020D10:  61 77 20 74 68 65 20 6C 69 6E 65 20 72 65 71 75    aw the line requ
020D20:  65 73 74 65 64 2E 20 49 74 20 69 73 20 20 70 72    ested. It is  pr
020D30:  6F 76 69 64 65 64 20 20 74 6F 20 20 61 6C 6C 6F    ovided  to  allo
020D40:  77 20 74 68 65 20 75 73 65 72 20 74 6F 20 63 68    w the user to ch
020D50:  61 6E 67 65 0D 20 20 20 20 20 74 68 65 20 6D 65    ange.     the me
020D60:  74 68 6F 64 20 66 6F 72 20 6C 69 6E 65 20 64 72    thod for line dr
020D70:  61 77 69 6E 67 2E 20 47 52 41 20 20 4C 49 4E 45    awing. GRA  LINE
020D80:  20 52 45 4C 41 54 49 56 45 20 63 6F 6E 76 65 72     RELATIVE conver
020D90:  74 73 20 66 72 6F 6D 20 72 65 6C 61 74 69 76 65    ts from relative
020DA0:  0D 20 20 20 20 20 74 6F 20 75 73 65 72 20 63 6F    .     to user co
020DB0:  6F 72 64 69 6E 61 74 65 73 20 61 6E 64 20 74 68    ordinates and th
020DC0:  65 6E 20 63 61 6C 6C 73 20 74 68 69 73 20 69 6E    en calls this in
020DD0:  64 69 72 65 63 74 69 6F 6E 2E 20 47 52 41 20 4C    direction. GRA L
020DE0:  49 4E 45 20 41 42 53 4F 4C 55 54 45 0D 20 20 20    INE ABSOLUTE.   
020DF0:  20 20 63 61 6C 6C 73 20 74 68 69 73 20 69 6E 64      calls this ind
020E00:  69 72 65 63 74 69 6F 6E 20 69 6D 6D 65 64 69 61    irection immedia
020E10:  74 6C 79 2E 0D 0D 20 20 20 20 20 54 68 65 20 6C    tly...     The l
020E20:  69 6E 65 20 69 73 20 73 70 6C 69 74 20 75 70 20    ine is split up 
020E30:  20 69 6E 74 6F 20 20 68 6F 72 69 7A 6F 6E 74 61     into  horizonta
020E40:  6C 20 20 6F 72 20 20 76 65 72 74 69 63 61 6C 20    l  or  vertical 
020E50:  73 65 63 74 69 6F 6E 73 20 74 68 61 74 20 61 72    sections that ar
020E60:  65 0D 20 20 20 20 20 64 72 61 77 6E 20 73 65 70    e.     drawn sep
020E70:  61 72 61 74 65 6C 79 20 28 73 65 65 20 53 43 52    arately (see SCR
020E80:  20 48 4F 52 49 5A 4F 4E 54 41 4C 20 61 6E 64 20     HORIZONTAL and 
020E90:  20 53 43 52 20 56 45 52 54 49 43 41 4C 29 2E 20     SCR VERTICAL). 
020EA0:  54 68 65 20 53 43 52 20 57 52 49 54 45 0D 20 20    The SCR WRITE.  
020EB0:  20 20 20 69 6E 64 69 72 65 63 74 69 6F 6E 20 69       indirection i
020EC0:  73 20 63 61 6C 6C 65 64 20 74 6F 20 20 77 72 69    s called to  wri
020ED0:  74 65 20 20 74 68 65 20 20 70 6F 69 6E 74 73 20    te  the  points 
020EE0:  20 69 6E 20 20 74 68 65 73 65 20 73 65 63 74 69     in  these secti
020EF0:  6F 6E 73 2E 20 54 68 69 73 0D 20 20 20 20 20 6D    ons. This.     m
020F00:  20 41 42 53 4F 4C 49 54 45 0D 20 20 20 20 20 74     ABSOLITE.     t
020F10:  6F 20 70 6C 6F 74 20 74 68 65 20 70 6F 69 6E 74    o plot the point
020F20:  20 20 72 65 71 75 65 73 74 65 64 2E 20 20 49 74      requested.  It
020F30:  20 20 69 73 20 20 70 72 6F 76 69 64 65 64 20 20      is  provided  
020F40:  74 6F 20 20 61 6C 6C 6F 77 20 74 68 65 20 75 73    to  allow the us
020F50:  65 72 20 74 6F 0D 20 20 20 20 20 63 68 61 6E 67    er to.     chang
020F60:  65 20 74 68 65 20 6D 65 74 68 6F 64 20 20 66 6F    e the method  fo
020F70:  72 20 20 70 6C 6F 74 74 69 6E 67 20 20 28 74 6F    r  plotting  (to
020F80:  20 20 6F 75 74 70 75 74 20 20 74 6F 20 20 61 6E      output  to  an
020F90:  20 20 58 2D 59 20 70 6C 6F 74 74 65 72 20 66 6F      X-Y plotter fo
020FA0:  72 0D 20 20 20 20 20 65 78 61 6D 70 6C 65 29 2E    r.     example).
020FB0:  20 47 52 41 20 50 4C 4F 54 20 52 45 4C 41 54 49     GRA PLOT RELATI
020FC0:  56 45 20 63 6F 6E 76 65 72 74 73 20 66 72 6F 6D    VE converts from
020FD0:  20 72 65 6C 61 74 69 76 65 20 74 6F 20 75 73 65     relative to use
020FE0:  72 20 63 6F 6F 72 64 69 6E 61 74 65 73 0D 20 20    r coordinates.  
020FF0:  20 20 20 61 6E 64 20 20 74 68 65 6E 20 20 63 61       and  then  ca
021000:  6C 6C 73 20 20 74 68 69 73 20 20 69 6E 64 69 72    lls  this  indir
021010:  65 63 74 69 6F 6E 2E 20 20 47 52 41 20 20 50 4C    ection.  GRA  PL
021020:  4F 54 20 20 41 42 53 4F 4C 55 54 45 20 20 63 61    OT  ABSOLUTE  ca
021030:  6C 6C 73 20 20 74 68 69 73 0D 20 20 20 20 20 69    lls  this.     i
021040:  6E 64 69 72 65 63 74 69 6F 6E 20 69 6D 6D 65 64    ndirection immed
021050:  69 61 74 6C 79 2E 0D 0D 20 20 20 20 20 54 6F 20    iatly...     To 
021060:  77 72 69 74 65 20 74 68 65 20 70 6F 69 6E 74 20    write the point 
021070:  6F 6E 20 74 68 65 20 20 73 63 72 65 65 6E 20 20    on the  screen  
021080:  74 68 65 20 20 53 43 52 20 57 52 49 54 45 20 69    the  SCR WRITE i
021090:  6E 64 69 72 65 63 74 69 6F 6E 20 69 73 20 75 73    ndirection is us
0210A0:  65 64 2E 0D 20 20 20 20 20 54 68 75 73 20 74 68    ed..     Thus th
0210B0:  65 20 70 6F 69 6E 74 20 69 73 20 70 6C 6F 74 74    e point is plott
0210C0:  65 64 20 75 73 69 6E 67 20 74 68 65 20 63 75 72    ed using the cur
0210D0:  72 65 6E 74 20 67 72 61 70 68 69 63 73 20 77 72    rent graphics wr
0210E0:  69 74 65 20 6D 6F 64 65 2E 0D 0D 20 20 20 20 20    ite mode...     
0210F0:  54 68 69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E    This indirection
021100:  65 61 6E 73 20 74 68 61 74 20 74 68 65 20 6C 69    eans that the li
021110:  6E 65 20 69 73 20 70 6C 6F 74 74 65 64 20 75 73    ne is plotted us
021120:  69 6E 67 20 74 68 65 20 63 75 72 72 65 6E 74 20    ing the current 
021130:  67 72 61 70 68 69 63 73 20 77 72 69 74 65 20 6D    graphics write m
021140:  6F 64 65 2E 0D 0D 20 20 20 20 20 49 6E 20 56 31    ode...     In V1
021150:  2E 30 20 66 69 72 6D 77 61 72 65 20 74 68 65 20    .0 firmware the 
021160:  6C 69 6E 65 20 20 69 73 20 20 70 6C 6F 74 74 65    line  is  plotte
021170:  64 20 20 69 6E 20 20 74 68 65 20 20 63 75 72 72    d  in  the  curr
021180:  65 6E 74 20 70 65 6E 20 69 6E 6B 2E 20 56 31 2E    ent pen ink. V1.
021190:  31 0D 20 20 20 20 20 66 69 72 6D 77 61 72 65 20    1.     firmware 
0211A0:  73 65 74 74 69 6E 67 20 6F 66 20 74 68 65 20 6C    setting of the l
0211B0:  69 6E 65 20 20 6D 61 73 6B 20 20 64 65 74 65 72    ine  mask  deter
0211C0:  6D 69 6E 65 73 20 20 68 6F 77 20 70 69 78 65 6C    mines  how pixel
0211D0:  73 20 6F 6E 20 74 68 65 20 6C 69 6E 65 0D 20 20    s on the line.  
0211E0:  20 20 20 77 69 6C 6C 20 62 65 20 20 70 6C 6F 74       will be  plot
0211F0:  74 65 64 2E 20 20 54 68 65 20 20 6C 69 6E 65 20    ted.  The  line 
021200:  20 6D 61 73 6B 20 20 69 73 20 20 62 69 74 20 20     mask  is  bit  
021210:  73 69 67 6E 69 66 69 63 61 6E 74 20 20 61 6E 64    significant  and
021220:  20 20 69 73 20 75 73 65 64 0D 20 20 20 20 20 72      is used.     r
021230:  65 70 65 61 74 65 64 6C 79 20 69 6E 20 74 68 65    epeatedly in the
021240:  20 6F 72 64 65 72 20 62 69 74 20 37 2C 62 69 74     order bit 7,bit
021250:  20 36 20 20 64 6F 77 6E 20 20 74 6F 20 20 62 69     6  down  to  bi
021260:  74 20 30 20 66 6F 72 20 65 61 63 68 20 70 69 78    t 0 for each pix
021270:  65 6C 20 69 6E 0D 20 20 20 20 20 74 68 65 20 6C    el in.     the l
021280:  69 6E 65 2E 20 49 66 20 74 68 65 20 62 69 74 20    ine. If the bit 
021290:  69 73 20 6F 6E 65 20 74 68 65 6E 20 20 74 68 65    is one then  the
0212A0:  20 70 69 78 65 6C 20 69 73 20 70 6C 6F 74 74 65     pixel is plotte
0212B0:  64 20 69 6E 20 74 68 65 20 67 72 61 70 68 69 63    d in the graphic
0212C0:  73 0D 20 20 20 20 20 70 65 6E 20 69 6E 6B 2E 20    s.     pen ink. 
0212D0:  49 66 20 74 68 65 20 62 69 74 20 20 69 73 20 20    If the bit  is  
0212E0:  7A 65 72 6F 20 20 74 68 65 6E 20 20 74 68 65 20    zero  then  the 
0212F0:  20 61 63 74 69 6F 6E 20 20 74 61 6B 65 6E 20 64     action  taken d
021300:  20 69 73 20 73 65 74 20 75 70 20 77 68 65 6E 20     is set up when 
021310:  47 52 41 20 49 4E 49 54 49 41 4C 49 53 45 20 6F    GRA INITIALISE o
021320:  72 20 47 52 41 20 52 45 53 45 54 20 69 73 20 63    r GRA RESET is c
021330:  61 6C 6C 65 64 2E 0D 0D 20 20 20 20 20 2D 2D 2D    alled...     ---
021340:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021350:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021360:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021370:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021380:  2D 2D 2D 2D 0D 0D 0D 20 20 20 20 20 26 42 44 44    ----...     &BDD
021390:  46 20 2D 20 49 4E 44 3A 20 47 52 41 20 54 45 53    F - IND: GRA TES
0213A0:  54 20 2D 20 54 65 73 74 20 61 20 70 6F 69 6E 74    T - Test a point
0213B0:  0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 20    ..     Entry:.. 
0213C0:  20 20 20 20 44 45 20 3D 20 75 73 65 72 20 58 20        DE = user X 
0213D0:  63 6F 6F 72 64 69 6E 61 74 65 20 6F 66 20 74 68    coordinate of th
0213E0:  65 20 70 6F 69 6E 74 20 74 6F 20 74 65 73 74 0D    e point to test.
0213F0:  20 20 20 20 20 48 4C 20 3D 20 75 73 65 72 20 59         HL = user Y
021400:  20 63 6F 6F 72 64 69 6E 61 74 65 20 6F 66 20 74     coordinate of t
021410:  68 65 20 70 6F 69 6E 74 20 74 6F 20 74 65 73 74    he point to test
021420:  0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20    ..     Exit:..  
021430:  20 20 20 41 20 3D 20 64 65 63 6F 64 65 64 20 69       A = decoded i
021440:  6E 6B 20 61 74 20 74 68 65 20 70 6F 69 6E 74 20    nk at the point 
021450:  73 70 65 63 69 66 69 65 64 0D 0D 20 20 20 20 20    specified..     
021460:  42 43 2C 44 45 2C 48 4C 20 61 6E 64 20 66 6C 61    BC,DE,HL and fla
021470:  67 73 20 63 6F 72 72 75 70 74 2E 0D 0D 20 20 20    gs corrupt...   
021480:  20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54      Notes:..     T
021490:  68 65 20 70 6F 73 69 74 69 6F 6E 20 6F 66 20 74    he position of t
0214A0:  68 65 20 70 6F 69 6E 74 20 74 6F 20 20 74 65 73    he point to  tes
0214B0:  74 20 20 69 73 20 20 67 69 76 65 6E 20 69 6E 20    t  is  given in 
0214C0:  75 73 65 72 20 63 6F 6F 72 64 69 6E 61 74 65 73    user coordinates
0214D0:  20 69 2E 65 2E 0D 20 20 20 20 20 72 65 6C 61 74     i.e..     relat
0214E0:  69 76 65 20 74 6F 20 74 68 65 20 75 73 65 72 20    ive to the user 
0214F0:  6F 72 69 67 69 6E 2E 0D 0D 20 20 20 20 20 54 68    origin...     Th
021500:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
021510:  1C 00 01 00 02 09 4E E5 1C 00 C1 02 00 00 00 02    ......N.........
021520:  1C 00 C6 02 00 00 00 02 1C 00 C2 02 00 00 00 02    ................
021530:  1C 00 C7 02 00 00 00 02 1C 00 C3 02 00 00 00 02    ................
021540:  1C 00 C8 02 00 00 00 02 1C 00 C4 02 00 00 00 02    ................
021550:  1C 00 C9 02 00 00 00 02 1C 00 C5 02 00 00 00 02    ................
021560:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021570:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021580:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021590:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0215F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
021600:  65 70 65 6E 64 73 20 6F 6E 20 74 68 65 0D 20 20    epends on the.  
021610:  20 20 20 67 72 61 70 68 69 63 73 20 77 72 69 74       graphics writ
021620:  65 20 6D 6F 65 2E 20 49 66 20 74 68 65 20 62 61    e moe. If the ba
021630:  63 6B 67 72 6F 75 6E 64 20 6D 6F 64 65 20 69 73    ckground mode is
021640:  20 6F 70 61 71 75 65 20 74 68 65 6E 20 74 68 65     opaque then the
021650:  20 70 69 78 65 6C 20 69 73 0D 20 20 20 20 20 70     pixel is.     p
021660:  6C 6F 74 74 65 64 20 20 69 6E 20 20 74 68 65 20    lotted  in  the 
021670:  20 67 72 61 70 68 69 63 73 20 20 70 61 70 65 72     graphics  paper
021680:  20 20 69 6E 6B 2E 20 20 49 66 20 20 74 68 65 20      ink.  If  the 
021690:  20 62 61 63 6B 67 72 6F 75 6E 64 20 20 6D 6F 64     background  mod
0216A0:  65 20 20 69 73 0D 20 20 20 20 20 74 72 61 6E 73    e  is.     trans
0216B0:  70 61 72 65 6E 74 20 74 68 65 6E 20 74 68 65 20    parent then the 
0216C0:  70 69 78 65 6C 20 69 73 20 6E 6F 74 20 70 6C 6F    pixel is not plo
0216D0:  74 74 65 64 2E 0D 0D 20 20 20 20 20 49 6E 20 56    tted...     In V
0216E0:  31 2E 31 20 66 69 72 6D 77 61 72 65 20 74 68 65    1.1 firmware the
0216F0:  20 66 69 72 73 74 20 20 70 69 78 65 6C 20 20 6F     first  pixel  o
021700:  66 20 20 74 68 65 20 20 6C 69 6E 65 20 20 28 74    f  the  line  (t
021710:  68 61 74 20 61 74 20 74 68 65 20 63 75 72 72 65    hat at the curre
021720:  6E 74 0D 20 20 20 20 20 67 72 61 70 68 69 63 73    nt.     graphics
021730:  20 70 6F 73 69 74 69 6F 6E 29 20 69 73 20 6E 6F     position) is no
021740:  74 20 70 6C 6F 74 74 65 64 20 69 66 20 20 74 68    t plotted if  th
021750:  65 20 66 69 72 73 74 20 70 6F 69 6E 74 20 70 6C    e first point pl
021760:  6F 74 74 69 6E 67 20 6D 6F 64 65 20 69 73 0D 20    otting mode is. 
021770:  20 20 20 20 73 65 74 20 66 61 6C 73 65 2E 0D 0D        set false...
021780:  20 20 20 20 20 54 68 69 73 20 69 6E 64 69 72 65         This indire
021790:  63 74 69 6F 6E 20 69 73 20 73 65 74 20 75 70 20    ction is set up 
0217A0:  77 68 65 6E 20 47 52 41 20 49 4E 49 54 49 41 4C    when GRA INITIAL
0217B0:  49 53 45 20 6F 72 20 47 52 41 20 52 45 53 45 54    ISE or GRA RESET
0217C0:  20 69 73 20 63 61 6C 6C 65 64 2E 0D 0D 20 20 20     is called...   
0217D0:  20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D      --------------
0217E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0217F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021800:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021810:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021820:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021830:  2D 2D 0D 20 20 20 20 20 26 42 44 46 31 20 2D 20    --.     &BDF1 - 
021840:  49 4E 44 3A 20 4D 43 20 57 41 49 54 20 50 52 49    IND: MC WAIT PRI
021850:  4E 54 45 52 20 2D 20 50 72 69 6E 74 20 61 20 63    NTER - Print a c
021860:  68 61 72 61 63 74 65 72 20 6F 72 20 74 69 6D 65    haracter or time
021870:  20 6F 75 74 0D 0D 20 20 20 20 20 45 6E 74 72 79     out..     Entry
021880:  3A 0D 0D 20 20 20 20 20 41 20 3D 20 63 68 61 72    :..     A = char
021890:  61 63 74 65 72 20 74 6F 20 73 65 6E 64 2E 0D 0D    acter to send...
0218A0:  20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20         Exit:..    
0218B0:  20 49 66 20 74 68 65 20 63 68 61 72 61 63 74 65     If the characte
0218C0:  72 20 77 61 73 20 73 65 6E 74 20 4F 4B 3A 0D 20    r was sent OK:. 
0218D0:  20 20 20 20 43 61 72 72 79 20 74 72 75 65 2E 0D        Carry true..
0218E0:  0D 20 20 20 20 20 49 66 20 74 68 65 20 63 68 61    .     If the cha
0218F0:  72 61 63 74 65 72 20 77 61 73 20 6E 6F 74 20 73    racter was not s
021900:  65 6E 74 3A 0D 0D 20 20 20 20 20 43 61 72 72 79    ent:..     Carry
021910:  20 66 61 6C 73 65 2E 0D 0D 20 20 20 20 20 41 20     false...     A 
021920:  61 6E 64 20 42 43 20 63 6F 72 72 75 70 74 2E 0D    and BC corrupt..
021930:  0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20    .     Notes:..  
021940:  20 20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74       This indirect
021950:  69 6F 6E 20 69 73 20 70 72 6F 76 69 64 65 64 20    ion is provided 
021960:  74 6F 20 61 6C 6C 6F 77 20 74 68 65 20 75 73 65    to allow the use
021970:  72 20 74 6F 20 64 72 69 76 65 20 74 68 65 20 70    r to drive the p
021980:  72 69 6E 74 65 72 20 69 6E 0D 20 20 20 20 20 61    rinter in.     a
021990:  20 64 69 66 66 65 72 65 6E 74 20 77 61 79 2E 20     different way. 
0219A0:  54 68 69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E    This indirection
0219B0:  20 20 69 73 20 20 63 61 6C 6C 65 64 20 20 62 79      is  called  by
0219C0:  20 74 68 65 20 72 6F 75 74 69 6E 65 20 4D 43 20     the routine MC 
0219D0:  50 52 49 4E 54 0D 20 20 20 20 20 43 48 41 52 20    PRINT.     CHAR 
0219E0:  61 6E 64 20 70 65 72 66 6F 72 6D 73 20 74 68 65    and performs the
0219F0:  20 61 63 74 69 6F 6E 73 20 20 6F 66 20 20 62 6F     actions  of  bo
021A00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021A10:  2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20 26    --------..     &
021A20:  42 44 45 35 20 2D 20 49 4E 44 3A 20 53 43 52 20    BDE5 - IND: SCR 
021A30:  52 45 41 44 20 2D 20 52 65 61 64 20 61 20 70 69    READ - Read a pi
021A40:  78 65 6C 20 66 72 6F 6D 20 74 68 65 20 73 63 72    xel from the scr
021A50:  65 65 6E 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A    een..     Entry:
021A60:  0D 0D 20 20 20 20 20 48 4C 20 3D 20 73 63 72 65    ..     HL = scre
021A70:  65 6E 20 61 64 64 72 65 73 73 0D 20 20 20 20 20    en address.     
021A80:  43 20 3D 20 6D 61 73 6B 20 66 6F 72 20 70 69 78    C = mask for pix
021A90:  65 6C 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D    el..     Exit:..
021AA0:  20 20 20 20 20 41 20 3D 20 64 65 63 6F 64 65 64         A = decoded
021AB0:  20 69 6E 6B 20 74 68 61 74 20 74 68 65 20 70 69     ink that the pi
021AC0:  78 65 6C 20 77 61 73 20 73 65 74 20 74 6F 2E 0D    xel was set to..
021AD0:  0D 20 20 20 20 20 46 6C 61 67 73 20 63 6F 72 72    .     Flags corr
021AE0:  75 70 74 2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73    upt...     Notes
021AF0:  3A 0D 0D 20 20 20 20 20 54 68 65 20 6D 61 73 6B    :..     The mask
021B00:  20 73 75 70 70 6C 69 65 64 20 6D 75 73 74 20 62     supplied must b
021B10:  65 20 20 61 20 20 6D 61 73 6B 20 20 66 6F 72 20    e  a  mask  for 
021B20:  20 61 20 20 73 69 6E 67 6C 65 20 70 69 78 65 6C     a  single pixel
021B30:  20 6F 74 68 65 72 77 69 73 65 20 74 68 65 0D 20     otherwise the. 
021B40:  20 20 20 20 64 65 63 6F 64 69 6E 67 20 6F 66 20        decoding of 
021B50:  74 68 65 20 69 6E 6B 20 72 65 61 64 20 66 72 6F    the ink read fro
021B60:  6D 20 74 68 65 20 73 63 72 65 65 6E 20 77 69 6C    m the screen wil
021B70:  6C 20 6E 6F 74 20 77 6F 72 6B 20 63 6F 72 72 65    l not work corre
021B80:  63 74 6C 79 2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D    ctly...     ----
021B90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021BA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021BB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021BC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021BD0:  2D 2D 2D 0D 0D 0D 0D 20 20 20 20 20 26 42 44 45    ---....     &BDE
021BE0:  38 20 2D 20 53 43 52 20 57 52 49 54 45 20 2D 20    8 - SCR WRITE - 
021BF0:  50 6C 6F 74 20 61 20 70 69 78 65 6C 20 75 73 69    Plot a pixel usi
021C00:  74 68 20 20 4D 43 20 20 42 55 53 59 20 20 50 52    th  MC  BUSY  PR
021C10:  49 4E 54 45 52 20 61 6E 64 20 4D 43 20 53 45 4E    INTER and MC SEN
021C20:  44 0D 20 20 20 20 20 50 52 49 4E 54 45 52 2E 0D    D.     PRINTER..
021C30:  20 20 20 20 20 54 68 69 73 20 69 6E 64 69 72 65         This indire
021C40:  63 74 69 6F 6E 20 69 73 20 69 6E 69 74 69 61 6C    ction is initial
021C50:  69 73 65 64 20 77 68 65 6E 20 4D 43 20 52 45 53    ised when MC RES
021C60:  45 54 20 50 52 49 4E 54 45 52 20 69 73 20 63 61    ET PRINTER is ca
021C70:  6C 6C 65 64 2E 0D 20 20 20 20 20 2D 2D 2D 2D 2D    lled..     -----
021C80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021C90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021CA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021CB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021CC0:  2D 0D 20 20 20 20 20 26 42 44 46 34 20 2D 20 49    -.     &BDF4 - I
021CD0:  4E 44 3A 20 4B 4D 20 53 43 41 4E 20 4B 45 59 53    ND: KM SCAN KEYS
021CE0:  20 2D 20 53 63 61 6E 20 74 68 65 20 6B 65 79 62     - Scan the keyb
021CF0:  6F 61 72 64 0D 0D 20 20 20 20 20 45 6E 74 72 79    oard..     Entry
021D00:  3A 0D 0D 20 20 20 20 20 49 6E 74 65 72 75 70 74    :..     Interupt
021D10:  73 20 6D 75 73 74 20 62 65 20 64 69 73 61 62 6C    s must be disabl
021D20:  65 64 2E 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D    ed...     Exit:.
021D30:  0D 20 20 20 20 20 41 46 2C 42 43 2C 44 45 2C 48    .     AF,BC,DE,H
021D40:  4C 20 63 6F 72 72 75 70 74 2E 0D 0D 20 20 20 20    L corrupt...    
021D50:  20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54 68     Notes:..     Th
021D60:  69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E 20 69    is indirection i
021D70:  73 20 63 61 6C 6C 65 64 20 20 65 76 65 72 79 20    s called  every 
021D80:  20 35 30 74 68 20 20 6F 66 20 20 61 20 20 73 65     50th  of  a  se
021D90:  63 6F 6E 64 2E 20 54 68 65 20 72 65 70 65 61 74    cond. The repeat
021DA0:  20 61 6E 64 0D 20 20 20 20 20 73 74 61 72 74 20     and.     start 
021DB0:  75 70 20 73 70 65 65 64 73 20 61 72 65 20 6D 65    up speeds are me
021DC0:  61 73 75 72 65 64 20 69 6E 20 35 30 74 68 73 20    asured in 50ths 
021DD0:  6F 66 20 61 20 73 65 63 6F 6E 64 2E 0D 0D 20 20    of a second...  
021DE0:  20 20 20 49 66 20 74 68 65 20 65 73 63 61 70 65       If the escape
021DF0:  20 6B 65 79 20 69 73 20 20 70 72 65 73 73 65 64     key is  pressed
021E00:  6E 67 20 74 68 65 20 63 75 72 72 65 6E 74 20 77    ng the current w
021E10:  72 69 74 65 20 6D 6F 64 65 0D 0D 0D 0D 0D 0D 0D    rite mode.......
021E20:  0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20    .     Entry:..  
021E30:  20 20 20 48 4C 20 3D 20 73 63 72 65 65 6E 20 61       HL = screen a
021E40:  64 64 72 65 73 73 0D 20 20 20 20 20 43 20 3D 20    ddress.     C = 
021E50:  6D 61 73 6B 20 66 6F 72 20 74 68 65 20 70 69 78    mask for the pix
021E60:  65 6C 73 0D 20 20 20 20 20 42 20 3D 20 65 6E 63    els.     B = enc
021E70:  6F 64 65 64 20 69 6E 6B 20 74 6F 20 70 6C 6F 74    oded ink to plot
021E80:  20 77 69 74 68 0D 0D 20 20 20 20 20 45 78 69 74     with..     Exit
021E90:  3A 0D 0D 20 20 20 20 20 41 46 20 63 6F 72 72 75    :..     AF corru
021EA0:  70 74 2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A    pt...     Notes:
021EB0:  0D 0D 20 20 20 20 20 2A 2A 20 44 4F 20 4C 41 54    ..     ** DO LAT
021EC0:  45 52 20 2A 2A 0D 20 20 20 20 20 2D 2D 2D 2D 2D    ER **.     -----
021ED0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021EE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021EF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021F00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
021F10:  2D 0D 20 20 20 20 20 26 42 44 45 42 20 2D 20 49    -.     &BDEB - I
021F20:  4E 44 3A 20 53 43 52 20 4D 4F 44 45 20 43 4C 45    ND: SCR MODE CLE
021F30:  41 52 20 2D 20 43 6C 65 61 72 20 74 68 65 20 73    AR - Clear the s
021F40:  63 72 65 65 6E 20 74 6F 20 69 6E 6B 20 30 0D 0D    creen to ink 0..
021F50:  20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20         Entry:..   
021F60:  20 20 4E 6F 6E 65 0D 0D 20 20 20 20 20 45 78 69      None..     Exi
021F70:  74 3A 0D 0D 20 20 20 20 20 41 46 2C 42 43 2C 44    t:..     AF,BC,D
021F80:  45 2C 48 4C 20 63 6F 72 72 75 70 74 2E 0D 0D 20    E,HL corrupt... 
021F90:  20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20        Notes:..    
021FA0:  20 54 68 69 73 20 69 6E 64 69 72 65 63 74 69 6F     This indirectio
021FB0:  6E 20 69 73 20 69 6E 69 74 69 6C 69 73 65 64 20    n is initilised 
021FC0:  77 68 65 6E 20 20 53 43 52 20 20 49 4E 49 54 49    when  SCR  INITI
021FD0:  41 4C 49 53 45 20 20 6F 72 20 53 43 52 20 52 45    ALISE  or SCR RE
021FE0:  53 45 54 20 61 72 65 0D 20 20 20 20 20 63 61 6C    SET are.     cal
021FF0:  6C 65 64 2E 0D 0D 20 20 20 20 20 56 31 2E 30 0D    led...     V1.0.
022000:  20 20 74 68 65 6E 20 20 74 68 65 20 20 69 6E 64      then  the  ind
022010:  69 72 65 63 74 69 6F 6E 20 4B 4D 20 54 45 53 54    irection KM TEST
022020:  20 42 52 45 41 4B 20 69 73 0D 20 20 20 20 20 63     BREAK is.     c
022030:  61 6C 6C 65 64 20 74 6F 20 70 72 6F 63 65 73 73    alled to process
022040:  20 74 68 65 20 62 72 65 61 6B 2E 0D 20 20 20 20     the break..    
022050:  20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D     ---------------
022060:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
022070:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
022080:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
022090:  2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20 3D    --------..     =
0220A0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0220B0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0220C0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0220D0:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
0220E0:  3D 3D 3D 3D 3D 0D 20 20 20 20 20 3D 20 20 20 20    =====.     =    
0220F0:  20 20 20 20 20 20 20 20 20 20 20 45 4E 44 20 20               END  
022100:  20 20 20 20 20 20 20 20 20 20 20 4F 46 20 20 20               OF   
022110:  20 20 20 20 49 4E 44 49 52 45 43 54 49 4F 4E 53        INDIRECTIONS
022120:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
022130:  3D 0D 20 20 20 20 20 3D 3D 3D 3D 3D 3D 3D 3D 3D    =.     =========
022140:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
022150:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
022160:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    ================
022170:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 0D    =============...
022180:  0D 0D 0D 0D 0D 0D 1A 3D 09 09 45 4E 44 20 09 09    .......=..END ..
022190:  4F 46 09 20 49 4E 44 49 52 45 43 54 49 4F 4E 53    OF. INDIRECTIONS
0221A0:  09 09 20 20 20 20 20 3D 0D 3D 3D 3D 3D 3D 3D 3D    ..     =.=======
0221B0:  3D 1A 6E 61 6C 20 6A 75 6D 70 62 6C 6F 63 6B 0D    =.nal jumpblock.
0221C0:  0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D    ................
0221D0:  1A 10 22 00 00 00 00 00 00 00 00 00 00 00 00 00    ..".............
0221E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0221F0:  00 00 00 00 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
022200:  20 20 20 20 20 2D 2D 2D 2D 0D 0D 20 20 20 20 20         ----..     
022210:  49 74 20 69 73 20 6E 65 63 65 73 73 61 72 79 20    It is necessary 
022220:  66 6F 72 20 74 68 65 20 75 73 65 72 20 74 6F 20    for the user to 
022230:  73 65 74 20 75 70 20 74 68 65 20 69 6E 6B 73 20    set up the inks 
022240:  69 66 20 74 68 69 73 20 69 6E 64 69 72 65 63 74    if this indirect
022250:  69 6F 6E 20 69 73 0D 20 20 20 20 20 63 61 6C 6C    ion is.     call
022260:  65 64 2E 0D 0D 20 20 20 20 20 56 31 2E 31 0D 20    ed...     V1.1. 
022270:  20 20 20 20 2D 2D 2D 2D 0D 0D 20 20 20 20 20 54        ----..     T
022280:  68 65 20 73 63 72 65 65 6E 20 70 61 63 6B 20 73    he screen pack s
022290:  65 74 73 20 75 70 20 74 68 65 20 69 6E 6B 73 20    ets up the inks 
0222A0:  66 6F 72 20 74 68 65 20 75 73 65 72 20 61 66 74    for the user aft
0222B0:  65 72 20 53 43 52 20 4D 4F 44 45 20 43 4C 45 41    er SCR MODE CLEA
0222C0:  52 20 68 61 73 0D 20 20 20 20 20 62 65 65 6E 20    R has.     been 
0222D0:  63 61 6C 6C 65 64 2E 0D 0D 20 20 20 20 20 54 68    called...     Th
0222E0:  65 20 67 72 61 70 68 69 63 73 20 56 44 55 73 20    e graphics VDUs 
0222F0:  61 72 65 20 70 75 74 20 69 6E 74 6F 20 6E 6F 6E    are put into non
022300:  2D 73 74 61 6E 64 61 72 64 20 73 74 61 74 65 73    -standard states
022310:  2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D    ...     --------
022320:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
022330:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
022340:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
022350:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 20    -------------.  
022360:  20 20 20 26 42 44 45 45 20 2D 20 49 4E 44 3A 20       &BDEE - IND: 
022370:  4B 4D 20 54 45 53 54 20 42 52 45 41 4B 20 2D 20    KM TEST BREAK - 
022380:  54 65 73 74 20 66 6F 72 20 62 72 65 61 6B 20 6F    Test for break o
022390:  72 20 72 65 73 65 74 0D 0D 20 20 20 20 20 45 6E    r reset..     En
0223A0:  74 72 79 3A 0D 0D 20 20 20 20 20 49 6E 74 65 72    try:..     Inter
0223B0:  75 70 74 73 20 64 69 73 61 62 6C 65 64 2E 0D 20    upts disabled.. 
0223C0:  20 20 20 20 43 20 3D 20 73 68 69 66 74 20 61 6E        C = shift an
0223D0:  64 20 63 6F 6E 74 72 6F 6C 20 6B 65 79 20 73 74    d control key st
0223E0:  61 74 65 73 2E 0D 0D 20 20 20 20 20 45 78 69 74    ates...     Exit
0223F0:  3A 0D 0D 20 20 20 20 20 41 46 20 61 6E 64 20 48    :..     AF and H
022400:  1B 40 49 2F 4F 20 70 6F 72 74 73 0D 2D 2D 2D 2D    .@I/O ports.----
022410:  2D 2D 2D 2D 2D 0D 0D 50 4F 52 54 0D 0D 26 37 46    -----..PORT..&7F
022420:  78 78 20 20 20 47 61 74 65 20 61 72 72 61 79 0D    xx   Gate array.
022430:  0D 26 42 43 78 78 20 20 20 48 44 36 38 34 35 20    .&BCxx   HD6845 
022440:  43 52 54 43 20 73 65 6C 65 63 74 20 72 65 67 69    CRTC select regi
022450:  73 74 65 72 0D 26 42 44 78 78 20 20 20 48 44 36    ster.&BDxx   HD6
022460:  38 34 35 20 43 52 54 43 20 72 65 67 69 73 74 65    845 CRTC registe
022470:  72 20 64 61 74 61 0D 26 42 46 78 78 20 20 20 48    r data.&BFxx   H
022480:  44 36 38 34 35 20 43 52 54 43 20 64 61 74 61 0D    D6845 CRTC data.
022490:  0D 26 44 46 78 78 20 20 20 45 78 70 61 6E 73 69    .&DFxx   Expansi
0224A0:  6F 6E 20 72 6F 6D 20 73 65 6C 65 63 74 0D 26 45    on rom select.&E
0224B0:  46 78 78 20 20 20 43 65 6E 74 72 6F 6E 69 63 73    Fxx   Centronics
0224C0:  20 64 61 74 61 0D 0D 26 46 34 78 78 20 20 20 75     data..&F4xx   u
0224D0:  50 44 38 32 35 35 20 70 6F 72 74 20 41 20 64 61    PD8255 port A da
0224E0:  74 61 20 20 20 20 20 20 20 20 20 20 20 20 20 28    ta             (
0224F0:  50 53 47 29 0D 26 46 35 78 78 20 20 20 75 50 44    PSG).&F5xx   uPD
022500:  38 32 35 35 20 70 6F 72 74 20 42 20 64 61 74 61    8255 port B data
022510:  20 20 20 20 20 20 20 20 20 20 20 20 20 28 54 61                 (Ta
022520:  70 65 2E 2E 2E 2E 65 74 63 29 0D 26 46 36 78 78    pe....etc).&F6xx
022530:  20 20 20 75 50 44 38 32 35 35 20 70 6F 72 74 20       uPD8255 port 
022540:  43 20 64 61 74 61 20 20 20 20 20 20 20 20 20 20    C data          
022550:  20 20 20 28 4B 65 79 62 6F 61 72 64 2F 50 53 47       (Keyboard/PSG
022560:  20 43 6F 6E 74 72 6F 6C 2F 54 61 70 65 29 0D 26     Control/Tape).&
022570:  46 37 78 78 20 20 20 75 50 44 38 32 35 35 20 63    F7xx   uPD8255 c
022580:  6F 6E 74 72 6F 6C 0D 0D 26 46 38 78 78 20 20 20    ontrol..&F8xx   
022590:  45 78 70 61 6E 73 69 6F 6E 20 42 75 73 0D 26 46    Expansion Bus.&F
0225A0:  39 78 78 20 20 20 45 78 70 61 6E 73 69 6F 6E 20    9xx   Expansion 
0225B0:  42 75 73 0D 26 46 41 78 78 20 20 20 45 78 70 61    Bus.&FAxx   Expa
0225C0:  6E 73 69 6F 6E 20 42 75 73 0D 0D 26 46 41 37 45    nsion Bus..&FA7E
0225D0:  20 20 20 44 69 73 6B 20 64 72 69 76 65 20 6D 6F       Disk drive mo
0225E0:  74 6F 72 20 63 6F 6E 74 72 6F 6C 0D 0D 26 46 42    tor control..&FB
0225F0:  78 78 20 20 20 45 78 70 61 6E 73 69 6F 6E 20 42    xx   Expansion B
022600:  4C 20 63 6F 72 72 75 70 74 2E 0D 0D 20 20 20 20    L corrupt...    
022610:  20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54 68     Notes:..     Th
022620:  69 73 20 69 6E 64 69 72 65 63 74 69 6F 6E 20 69    is indirection i
022630:  73 20 63 61 6C 6C 65 64 20 62 79 20 74 68 65 20    s called by the 
022640:  66 69 72 6D 77 61 72 65 2E 20 49 66 20 20 62 69    firmware. If  bi
022650:  74 20 37 20 6F 66 20 63 20 69 73 20 73 65 74 20    t 7 of c is set 
022660:  74 68 65 6E 0D 20 20 20 20 20 74 68 65 20 63 6F    then.     the co
022670:  6E 74 72 6F 6C 20 6B 65 79 20 69 73 20 70 72 65    ntrol key is pre
022680:  73 73 65 64 20 61 6E 64 20 69 66 20 62 69 74 20    ssed and if bit 
022690:  20 36 20 20 69 73 20 73 65 74 20 74 68 65 6E 20     6  is set then 
0226A0:  6F 6E 65 20 6F 66 20 74 68 65 20 73 68 69 66 74    one of the shift
0226B0:  0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20 6B 65 79 73    .......     keys
0226C0:  20 69 73 20 70 72 65 73 73 65 64 2E 0D 0D 20 20     is pressed...  
0226D0:  20 20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74       This indirect
0226E0:  69 6F 6E 20 69 73 20 63 61 6C 6C 65 64 20 61 66    ion is called af
0226F0:  74 65 72 20 20 74 68 65 20 20 6B 65 79 73 20 20    ter  the  keys  
022700:  68 61 76 65 20 62 65 65 6E 20 73 63 61 6E 6E 65    have been scanne
022710:  64 20 61 6E 64 20 74 68 65 0D 20 20 20 20 20 65    d and the.     e
022720:  73 63 61 70 65 20 6B 65 79 20 77 61 73 20 66 6F    scape key was fo
022730:  75 6E 64 20 74 6F 20 62 65 20 20 70 72 65 73 73    und to be  press
022740:  65 64 2E 20 20 49 74 20 20 69 73 20 20 70 72 6F    ed.  It  is  pro
022750:  76 69 64 65 64 20 73 6F 20 74 68 65 20 75 73 65    vided so the use
022760:  72 20 63 61 6E 0D 20 20 20 20 20 63 68 61 6E 67    r can.     chang
022770:  65 20 74 68 65 20 61 63 74 69 6F 6E 20 77 68 65    e the action whe
022780:  6E 20 74 68 65 20 62 72 65 61 6B 20 6B 65 79 20    n the break key 
022790:  69 73 20 70 72 65 73 73 65 64 2E 0D 0D 20 20 20    is pressed...   
0227A0:  20 20 54 68 69 73 20 69 6E 64 69 72 65 63 74 69      This indirecti
0227B0:  6F 6E 20 69 73 20 73 65 74 75 70 20 77 68 65 6E    on is setup when
0227C0:  20 4B 4D 20 49 4E 49 54 49 41 4C 49 53 45 20 6F     KM INITIALISE o
0227D0:  72 20 4B 4D 20 52 45 53 45 54 20 61 72 65 20 63    r KM RESET are c
0227E0:  61 6C 6C 65 64 2E 0D 20 20 20 20 20 2D 2D 2D 2D    alled..     ----
0227F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
022800:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
022810:  1D 00 01 00 02 09 4E E5 1D 00 C1 02 00 00 00 02    ......N.........
022820:  1D 00 C6 02 00 00 00 02 1D 00 C2 02 00 00 00 02    ................
022830:  1D 00 C7 02 00 00 00 02 1D 00 C3 02 00 00 00 02    ................
022840:  1D 00 C8 02 00 00 00 02 1D 00 C4 02 00 00 00 02    ................
022850:  1D 00 C9 02 00 00 00 02 1D 00 C5 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:  75 73 0D 0D 26 46 42 37 45 20 20 20 46 44 43 20    us..&FB7E   FDC 
022910:  6D 61 69 6E 20 73 74 61 74 75 73 20 72 65 67 69    main status regi
022920:  73 74 65 72 0D 26 46 42 37 46 20 20 20 46 44 43    ster.&FB7F   FDC
022930:  20 64 61 74 61 20 72 65 67 69 73 74 65 72 0D 0D     data register..
022940:  26 46 46 78 78 20 20 20 4E 4F 54 20 55 53 45 44    &FFxx   NOT USED
022950:  0D 0D 0D 46 6F 72 20 74 68 6F 73 65 20 70 6F 72    ...For those por
022960:  74 20 61 64 64 72 65 73 73 65 73 73 20 69 6E 20    t addressess in 
022970:  74 68 65 20 65 78 70 61 6E 73 69 6F 6E 20 62 75    the expansion bu
022980:  73 20 72 61 6E 67 65 3A 0D 0D 50 6F 72 74 73 20    s range:..Ports 
022990:  26 46 38 78 78 20 74 6F 20 26 46 42 78 78 0D 0D    &F8xx to &FBxx..
0229A0:  78 78 20 62 79 74 65 20 61 73 20 73 70 65 63 69    xx byte as speci
0229B0:  66 69 65 64 20 62 65 6C 6F 77 3A 0D 0D 26 30 30    fied below:..&00
0229C0:  20 2D 20 26 37 42 20 20 20 20 20 20 20 44 4F 20     - &7B       DO 
0229D0:  4E 4F 54 20 55 53 45 0D 26 37 43 20 2D 20 26 37    NOT USE.&7C - &7
0229E0:  46 20 20 20 20 20 20 20 44 69 73 63 20 49 6E 74    F       Disc Int
0229F0:  65 72 66 61 63 65 0D 26 38 30 20 2D 20 26 42 42    erface.&80 - &BB
022A00:  20 20 20 20 20 20 20 44 4F 20 4E 4F 54 20 55 53           DO NOT US
022A10:  45 0D 26 42 43 20 2D 20 26 42 46 20 20 20 20 20    E.&BC - &BF     
022A20:  20 20 52 65 73 65 72 76 65 64 20 66 6F 72 20 66      Reserved for f
022A30:  75 74 75 72 65 20 75 73 65 0D 26 43 30 20 2D 20    uture use.&C0 - 
022A40:  26 44 42 20 20 20 20 20 20 20 44 4F 20 4E 4F 54    &DB       DO NOT
022A50:  20 55 53 45 0D 26 44 43 20 2D 20 26 44 46 20 20     USE.&DC - &DF  
022A60:  20 20 20 20 20 46 6F 72 20 20 63 6F 6D 6D 75 6E         For  commun
022A70:  69 63 61 74 69 6F 6E 73 20 20 69 6E 74 65 72 66    ications  interf
022A80:  61 63 65 73 0D 26 45 30 20 2D 20 26 46 45 20 20    aces.&E0 - &FE  
022A90:  20 20 20 20 20 41 76 61 69 6C 61 62 6C 65 20 66         Available f
022AA0:  6F 72 20 75 73 65 72 20 65 78 70 61 6E 73 69 6F    or user expansio
022AB0:  6E 20 69 6E 74 65 72 66 61 63 65 73 0D 26 46 46    n interfaces.&FF
022AC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 75 73                 Bus
022AD0:  20 52 65 73 65 74 20 69 6E 74 65 72 66 61 63 65     Reset interface
022AE0:  73 0D 0D 1A 2D 0D 0D 50 4F 52 54 09 0D 0D 26 37    s...-..PORT...&7
022AF0:  46 78 78 09 47 61 74 65 20 61 72 72 61 79 09 09    Fxx.Gate array..
022B00:  20 20 4B 4D 20 52 45 53 45 54 20 2D 20 74 6F 20      KM RESET - to 
022B10:  72 65 73 65 74 20 61 6E 79 20 6B 65 79 62 6F 61    reset any keyboa
022B20:  72 64 20 69 6E 64 69 72 65 63 74 69 6F 6E 73 20    rd indirections 
022B30:  61 6E 64 20 62 72 65 61 6B 20 65 76 65 6E 74 2E    and break event.
022B40:  0D 20 20 20 20 20 54 58 54 20 52 45 53 45 54 20    .     TXT RESET 
022B50:  2D 20 74 6F 20 72 65 73 65 74 20 61 6E 79 20 54    - to reset any T
022B60:  58 54 20 56 44 55 20 69 6E 64 69 72 65 63 74 67    XT VDU indirectg
022B70:  69 6F 6E 73 2E 0D 20 20 20 20 20 53 43 52 20 52    ions..     SCR R
022B80:  45 53 45 54 20 2D 20 74 6F 20 72 65 73 65 74 20    ESET - to reset 
022B90:  61 6E 79 20 73 63 72 65 65 6E 20 69 6E 64 69 72    any screen indir
022BA0:  65 63 74 69 6F 6E 73 2E 0D 0D 20 20 20 20 20 54    ections...     T
022BB0:  68 65 20 76 61 6C 75 65 73 20 72 65 74 75 72 6E    he values return
022BC0:  65 64 20 62 79 20 4B 4C 20 43 48 4F 4B 45 20 4F    ed by KL CHOKE O
022BD0:  46 46 20 61 72 65 20 75 73 65 64 20 62 79 20 4D    FF are used by M
022BE0:  43 20 42 4F 4F 54 20 50 52 4F 47 52 41 4D 20 69    C BOOT PROGRAM i
022BF0:  66 20 74 68 65 0D 20 20 20 20 20 70 72 6F 67 72    f the.     progr
022C00:  61 6D 20 6C 6F 61 64 20 66 61 69 6C 73 2E 0D 0D    am load fails...
022C10:  20 20 20 20 20 54 68 69 73 20 69 6E 66 6F 72 6D         This inform
022C20:  61 74 69 6F 6E 20 69 73 20 69 6E 63 6C 75 64 65    ation is include
022C30:  64 20 66 6F 72 20 74 68 65 20 72 65 61 64 65 72    d for the reader
022C40:  73 20 69 6E 74 65 72 65 73 74 2E 20 4D 43 20 42    s interest. MC B
022C50:  4F 4F 54 20 50 52 4F 47 52 41 4D 0D 20 20 20 20    OOT PROGRAM.    
022C60:  20 69 73 20 74 68 65 20 72 65 63 6F 6D 6D 65 6E     is the recommen
022C70:  64 65 64 20 6D 65 61 6E 73 20 20 6F 66 20 20 6C    ded means  of  l
022C80:  6F 61 64 69 6E 67 20 20 61 6E 64 20 20 65 6E 74    oading  and  ent
022C90:  65 72 69 6E 67 20 20 61 20 72 61 6D 20 66 6F 72    ering  a ram for
022CA0:  65 67 72 6F 75 6E 64 0D 20 20 20 20 20 70 72 6F    eground.     pro
022CB0:  67 72 61 6D 2E 20 4D 43 20 53 54 41 52 54 20 50    gram. MC START P
022CC0:  52 4F 47 52 41 4D 20 69 73 20 74 68 65 20 20 72    ROGRAM is the  r
022CD0:  65 63 6F 6D 6D 65 6E 64 65 64 20 20 6D 65 61 6E    ecommended  mean
022CE0:  73 20 6F 66 20 65 6E 74 65 72 69 6E 67 20 61 20    s of entering a 
022CF0:  72 6F 6D 0D 20 20 20 20 20 70 72 6F 67 72 61 6D    rom.     program
022D00:  09 0D 0D 26 42 43 78 78 09 48 44 36 38 34 35 20    ...&BCxx.HD6845 
022D10:  43 52 54 43 20 73 65 6C 65 63 74 20 72 65 67 69    CRTC select regi
022D20:  73 74 65 72 09 09 0D 26 42 44 78 78 09 48 44 36    ster...&BDxx.HD6
022D30:  38 34 35 20 43 52 54 43 20 72 65 67 69 73 74 65    845 CRTC registe
022D40:  72 20 64 61 74 61 20 20 20 20 1A 0D 0D 0D 0D 0D    r data    ......
022D50:  1A 10 22 00 00 00 00 00 00 00 00 00 00 00 00 00    ..".............
022D60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
022D70:  00 00 00 00 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
022D80:  73 20 72 61 6E 67 65 3A 0D 0D 50 6F 72 74 73 20    s range:..Ports 
022D90:  26 46 38 78 78 20 74 6F 20 26 46 42 78 78 0D 0D    &F8xx to &FBxx..
022DA0:  78 78 20 62 79 74 65 20 61 73 20 73 70 65 63 69    xx byte as speci
022DB0:  66 69 65 64 20 62 65 6C 6F 77 3A 0D 0D 26 30 30    fied below:..&00
022DC0:  20 2D 20 26 37 42 20 20 20 20 20 20 20 44 4F 20     - &7B       DO 
022DD0:  4E 4F 54 20 55 53 45 0D 26 37 43 20 2D 20 26 37    NOT USE.&7C - &7
022DE0:  46 20 20 20 20 20 20 20 44 69 73 63 20 49 6E 74    F       Disc Int
022DF0:  65 72 66 61 63 65 0D 26 38 30 20 2D 20 26 42 42    erface.&80 - &BB
022E00:  20 20 20 20 20 20 20 44 4F 20 4E 4F 54 20 55 53           DO NOT US
022E10:  45 0D 26 42 43 20 2D 20 26 42 46 20 20 20 20 20    E.&BC - &BF     
022E20:  20 20 52 65 73 65 72 76 65 64 20 66 6F 72 20 66      Reserved for f
022E30:  75 74 75 72 65 20 75 73 65 0D 26 43 30 20 2D 20    uture use.&C0 - 
022E40:  26 44 42 20 20 20 20 20 20 20 44 4F 20 4E 4F 54    &DB       DO NOT
022E50:  20 55 53 45 0D 26 44 43 20 2D 20 26 44 46 20 20     USE.&DC - &DF  
022E60:  20 20 20 20 20 46 6F 72 20 20 63 6F 6D 6D 75 6E         For  commun
022E70:  69 63 61 74 69 6F 6E 73 20 20 69 6E 74 65 72 66    ications  interf
022E80:  61 63 65 73 0D 26 45 30 20 2D 20 26 46 45 20 20    aces.&E0 - &FE  
022E90:  20 20 20 20 20 41 76 61 69 6C 61 62 6C 65 20 66         Available f
022EA0:  6F 72 20 75 73 65 72 20 65 78 70 61 6E 73 69 6F    or user expansio
022EB0:  6E 20 69 6E 74 65 72 66 61 63 65 73 0D 26 46 46    n interfaces.&FF
022EC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 42 75 73                 Bus
022ED0:  20 52 65 73 65 74 20 69 6E 74 65 72 66 61 63 65     Reset interface
022EE0:  73 0D 0D 1A 2D 0D 0D 50 4F 52 54 09 0D 0D 26 37    s...-..PORT...&7
022EF0:  46 78 78 09 47 61 74 65 20 61 72 72 61 79 09 09    Fxx.Gate array..
022F00:  20 6F 72 20 61 20 72 61 6D 20 66 6F 72 65 67 72     or a ram foregr
022F10:  6F 75 6E 64 20 70 72 6F 67 72 61 6D 20 77 68 69    ound program whi
022F20:  63 68 20 68 61 73 20 61 6C 72 65 61 64 79 20 62    ch has already b
022F30:  65 65 6E 20 6C 6F 61 64 65 64 2E 0D 0D 20 20 20    een loaded...   
022F40:  20 20 4B 4C 20 43 48 4F 4B 45 20 4F 46 46 20 64      KL CHOKE OFF d
022F50:  69 73 61 62 6C 65 73 20 69 6E 74 65 72 75 70 74    isables interupt
022F60:  73 2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D    s...     -------
022F70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
022F80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
022F90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
022FA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
022FB0:  0D 0D 20 20 20 20 20 26 42 43 43 42 20 2D 20 4B    ..     &BCCB - K
022FC0:  4C 20 52 4F 4D 20 57 41 4C 4B 20 2D 20 46 69 6E    L ROM WALK - Fin
022FD0:  64 20 61 6E 64 20 69 6E 69 74 69 61 6C 69 7A 65    d and initialize
022FE0:  20 61 6C 6C 20 62 61 63 6B 67 72 6F 75 6E 64 20     all background 
022FF0:  52 4F 4D 73 0D 0D 20 20 20 20 20 45 6E 74 72 79    ROMs..     Entry
023000:  3A 0D 0D 20 20 20 20 20 44 45 20 3D 20 66 69 72    :..     DE = fir
023010:  73 74 20 75 73 65 61 62 6C 65 20 62 79 74 65 20    st useable byte 
023020:  6F 66 20 6D 65 6D 6F 72 79 0D 20 20 20 20 20 48    of memory.     H
023030:  4C 20 3D 20 6C 61 73 74 20 75 73 65 61 62 6C 65    L = last useable
023040:  20 62 79 74 65 20 6F 66 20 6D 65 6D 6F 72 79 0D     byte of memory.
023050:  0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20    .     Exit:..   
023060:  20 20 44 45 20 3D 20 61 64 64 72 65 73 73 20 6F      DE = address o
023070:  66 20 74 68 65 20 6E 65 77 20 66 69 72 73 74 20    f the new first 
023080:  75 73 65 61 62 6C 65 20 62 79 74 65 20 6F 66 20    useable byte of 
023090:  6D 65 6D 6F 72 79 0D 20 20 20 20 20 48 4C 20 3D    memory.     HL =
0230A0:  20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20     address of the 
0230B0:  6E 65 77 20 6C 61 73 74 20 75 73 61 62 6C 65 20    new last usable 
0230C0:  62 79 74 65 20 6F 66 20 6D 65 6D 6F 72 79 0D 0D    byte of memory..
0230D0:  20 20 20 20 20 41 46 2C 42 43 20 63 68 61 6E 67         AF,BC chang
0230E0:  65 64 2E 0D 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20    ed.........     
0230F0:  4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 57 68 65    Notes:..     Whe
023100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0231A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0231B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0231C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0231D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0231E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0231F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0232A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0232B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0232C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0232D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0232E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
0232F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
023300:  6E 20 61 20 66 6F 72 65 67 72 6F 75 6E 64 20 70    n a foreground p
023310:  72 6F 67 72 61 6D 20 69 73 20 20 65 6E 74 65 72    rogram is  enter
023320:  65 64 20 20 69 74 20 20 69 73 20 70 61 73 73 65    ed  it  is passe
023330:  64 20 74 68 65 20 61 64 64 72 65 73 73 65 73 73    d the addressess
023340:  20 6F 66 0D 20 20 20 20 20 74 68 65 20 66 69 72     of.     the fir
023350:  73 74 20 61 6E 64 20 6C 61 73 74 20 62 79 74 65    st and last byte
023360:  73 20 20 69 6E 20 20 6D 65 6D 6F 72 79 20 20 77    s  in  memory  w
023370:  68 69 63 68 20 20 69 74 20 20 6D 61 79 20 20 75    hich  it  may  u
023380:  73 65 2E 20 54 68 65 20 61 72 61 65 20 6F 66 0D    se. The arae of.
023390:  20 20 20 20 20 6D 65 6D 6F 72 79 20 6F 75 74 73         memory outs
0233A0:  69 64 65 20 74 68 69 73 20 69 73 20 75 73 65 64    ide this is used
0233B0:  20 20 74 6F 20 20 73 74 6F 72 65 20 20 66 69 72      to  store  fir
0233C0:  6D 77 61 72 65 20 76 61 72 69 61 62 6C 65 73 2C    mware variables,
0233D0:  20 74 68 65 20 73 74 61 63 6B 2C 0D 20 20 20 20     the stack,.    
0233E0:  20 74 68 65 20 6A 75 6D 70 62 6C 6F 63 6B 73 20     the jumpblocks 
0233F0:  61 6E 64 20 74 68 65 20 73 63 72 65 65 6E 20 20    and the screen  
023400:  6D 65 6D 6F 72 79 2E 20 20 46 72 6F 6D 20 20 74    memory.  From  t
023410:  68 65 20 61 72 65 61 20 61 76 61 69 6C 61 62 6C    he area availabl
023420:  65 20 66 6F 72 20 61 0D 20 20 20 20 20 66 6F 72    e for a.     for
023430:  65 67 72 6F 75 6E 64 20 74 6F 20 75 73 65 2C 20    eground to use, 
023440:  74 68 65 20 61 72 65 61 73 20 20 66 6F 72 20 20    the areas  for  
023450:  62 61 63 6B 67 72 6F 75 6E 64 20 20 70 72 6F 67    background  prog
023460:  72 61 6D 73 20 74 6F 20 75 73 65 20 6D 75 73 74    rams to use must
023470:  20 62 65 0D 20 20 20 20 20 61 6C 6C 6F 63 61 74     be.     allocat
023480:  65 64 2E 0D 0D 20 20 20 20 20 54 68 65 20 66 6F    ed...     The fo
023490:  72 65 67 72 6F 75 6E 64 20 70 72 6F 67 72 61 6D    reground program
0234A0:  20 73 68 6F 75 6C 64 20 69 6E 69 74 69 61 6C 69     should initiali
0234B0:  7A 65 20 20 62 61 63 6B 67 72 6F 75 6E 64 20 20    ze  background  
0234C0:  52 4F 4D 53 20 61 74 20 61 6E 20 65 61 72 6C 79    ROMS at an early
0234D0:  0D 20 20 20 20 20 73 74 61 67 65 2C 20 62 65 66    .     stage, bef
0234E0:  6F 72 65 20 69 74 20 75 73 65 73 20 74 68 65 20    ore it uses the 
0234F0:  6D 65 6D 6F 72 79 20 69 74 20 20 69 73 20 67 69    memory it  is gi
023500:  1B 40 0D 0D 0D 20 20 20 20 20 26 42 43 43 38 20    .@...     &BCC8 
023510:  2D 20 4B 4C 20 43 48 4F 4B 45 20 4F 46 46 20 2D    - KL CHOKE OFF -
023520:  20 52 65 73 65 74 20 74 68 65 20 4B 65 72 6E 61     Reset the Kerna
023530:  6C 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D    l..     Entry:..
023540:  20 20 20 20 20 4E 6F 6E 65 0D 0D 20 20 20 20 20         None..     
023550:  45 78 69 74 3A 0D 0D 20 20 20 20 20 42 20 3D 20    Exit:..     B = 
023560:  72 6F 6D 20 73 65 6C 65 63 74 20 61 64 64 72 65    rom select addre
023570:  73 73 20 6F 66 20 74 68 65 20 63 75 72 72 65 6E    ss of the curren
023580:  74 20 66 6F 72 65 67 72 6F 75 6E 64 20 72 6F 6D    t foreground rom
023590:  20 28 69 66 20 61 6E 79 29 0D 20 20 20 20 20 44     (if any).     D
0235A0:  45 20 3D 20 61 64 64 72 65 73 73 20 61 74 20 77    E = address at w
0235B0:  68 69 63 68 20 74 68 65 20 63 75 72 72 65 6E 74    hich the current
0235C0:  20 66 6F 72 65 67 72 6F 75 6E 64 20 52 4F 4D 20     foreground ROM 
0235D0:  77 61 73 20 65 6E 74 65 72 65 64 0D 20 20 20 20    was entered.    
0235E0:  20 43 20 3D 20 72 6F 6D 20 73 65 6C 65 63 74 20     C = rom select 
0235F0:  61 64 64 72 65 73 73 20 66 6F 72 20 61 20 72 61    address for a ra
023600:  6D 20 66 6F 72 65 67 72 6F 75 6E 64 20 70 72 6F    m foreground pro
023610:  67 72 61 6D 2E 0D 0D 20 20 20 20 20 41 46 2C 48    gram...     AF,H
023620:  4C 20 63 68 61 6E 67 65 64 2E 0D 0D 20 20 20 20    L changed...    
023630:  20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 49 66     Notes:..     If
023640:  20 74 68 65 20 63 75 72 72 65 6E 74 20 20 66 6F     the current  fo
023650:  72 65 67 72 6F 75 6E 64 20 20 70 72 6F 67 72 61    reground  progra
023660:  6D 20 20 69 73 20 20 69 6E 20 20 72 61 6D 20 20    m  is  in  ram  
023670:  74 68 65 6E 20 20 74 68 65 20 72 6F 6D 20 73 65    then  the rom se
023680:  6C 65 63 74 0D 20 20 20 20 20 61 64 64 72 65 73    lect.     addres
023690:  73 20 61 6E 64 20 65 6E 74 72 79 20 70 6F 69 6E    s and entry poin
0236A0:  74 20 61 72 65 20 72 65 74 75 72 6E 65 64 20 62    t are returned b
0236B0:  6F 74 68 20 7A 65 72 6F 2E 20 69 2E 65 2E 20 74    oth zero. i.e. t
0236C0:  68 65 20 64 65 66 61 75 6C 74 20 6F 6D 20 61 74    he default om at
0236D0:  0D 20 20 20 20 20 69 74 73 20 65 6E 74 72 79 20    .     its entry 
0236E0:  61 64 64 72 65 73 73 2E 0D 0D 20 20 20 20 20 4B    address...     K
0236F0:  4C 20 43 48 4F 4B 45 20 4F 46 46 20 66 6F 72 6D    L CHOKE OFF form
023700:  76 65 6E 2E 20 49 74 20 6D 61 79 20 63 68 6F 73    ven. It may chos
023710:  65 20 77 68 65 74 68 65 72 20 74 6F 0D 20 20 20    e whether to.   
023720:  20 20 65 6E 61 62 6C 65 20 62 61 63 6B 67 72 6F      enable backgro
023730:  75 6E 64 20 52 4F 4D 53 20 6F 72 20 6E 6F 74 2E    und ROMS or not.
023740:  20 4B 4C 20 49 4E 49 54 20 20 42 41 43 4B 20 6D     KL INIT  BACK m
023750:  61 79 20 62 65 20 75 73 65 64 20 74 6F 20 69 6E    ay be used to in
023760:  69 74 69 61 6C 69 7A 65 0D 20 20 20 20 20 61 20    itialize.     a 
023770:  70 61 72 74 69 63 75 6C 61 72 20 62 61 63 6B 67    particular backg
023780:  72 6F 75 6E 64 20 52 4F 4D 20 6F 72 20 74 68 69    round ROM or thi
023790:  73 20 20 72 6F 75 74 69 6E 65 20 6D 61 79 20 62    s  routine may b
0237A0:  65 20 75 73 65 64 20 74 6F 20 69 6E 69 74 69 61    e used to initia
0237B0:  6C 69 7A 65 0D 20 20 20 20 20 61 6C 6C 20 61 76    lize.     all av
0237C0:  61 69 6C 61 62 6C 65 20 62 61 63 6B 67 72 6F 75    ailable backgrou
0237D0:  6E 64 20 52 4F 4D 53 2E 0D 0D 20 20 20 20 20 4B    nd ROMS...     K
0237E0:  4C 20 52 4F 4D 20 57 41 4C 4B 20 69 6E 73 70 65    L ROM WALK inspe
0237F0:  63 74 73 20 74 68 65 20 20 72 6F 6D 73 20 20 61    cts the  roms  a
023800:  74 20 20 72 6F 6D 20 20 73 65 6C 65 63 74 20 61    t  rom  select a
023810:  64 64 72 65 73 73 65 73 20 69 6E 20 74 68 65 20    ddresses in the 
023820:  72 61 6E 67 65 0D 20 20 20 20 20 31 2E 2E 37 20    range.     1..7 
023830:  69 6E 20 20 76 31 2E 30 20 20 66 69 72 6D 77 61    in  v1.0  firmwa
023840:  72 65 20 20 61 6E 64 20 20 30 2E 2E 31 35 20 20    re  and  0..15  
023850:  69 6E 20 20 76 31 2E 31 20 20 66 69 72 6D 77 61    in  v1.1  firmwa
023860:  72 65 2E 20 20 54 68 65 20 70 6F 77 65 72 2D 75    re.  The power-u
023870:  70 0D 20 20 20 20 20 69 6E 69 74 69 61 6C 69 7A    p.     initializ
023880:  65 20 65 6E 74 72 79 20 6F 66 20 65 61 63 68 20    e entry of each 
023890:  62 61 63 6B 67 72 6F 75 6E 64 20 72 6F 6D 20 20    background rom  
0238A0:  66 6F 75 6E 64 20 69 73 20 63 61 6C 6C 65 64 20    found is called 
0238B0:  28 75 6E 6C 65 73 73 20 69 74 20 69 73 0D 20 20    (unless it is.  
0238C0:  20 20 20 74 68 65 20 63 75 72 72 65 6E 74 20 66       the current f
0238D0:  6F 72 65 67 72 6F 75 6E 64 20 72 6F 6D 20 20 69    oreground rom  i
0238E0:  6E 20 20 76 31 2E 31 29 2E 20 20 54 68 69 73 20    n  v1.1).  This 
0238F0:  20 65 6E 74 72 79 20 20 6D 61 79 20 61 6C 6C 6F     entry  may allo
023900:  73 20 70 61 72 74 20 6F 66 20 20 74 68 65 20 20    s part of  the  
023910:  63 6C 6F 73 65 20 20 64 6F 77 6E 20 72 65 71 75    close  down requ
023920:  69 72 65 64 20 62 65 66 6F 72 65 20 61 20 6E 65    ired before a ne
023930:  77 20 72 61 6D 0D 20 20 20 20 20 66 6F 72 65 67    w ram.     foreg
023940:  72 6F 75 6E 64 20 70 72 6F 67 72 61 6D 20 69 73    round program is
023950:  20 6C 6F 61 64 65 64 2C 20 61 73 20 69 73 20 72     loaded, as is r
023960:  65 71 75 69 72 65 64 20 62 79 20 4D 43 20 42 4F    equired by MC BO
023970:  4F 54 20 50 52 4F 47 52 41 4D 2E 0D 0D 20 20 20    OT PROGRAM...   
023980:  20 20 54 68 65 20 63 6C 6F 73 65 20 64 6F 77 6E      The close down
023990:  20 6D 75 73 74 20 65 6E 73 75 72 65 20 74 68 61     must ensure tha
0239A0:  74 20 74 68 65 72 65 20 61 72 65 20 6E 6F 20 69    t there are no i
0239B0:  6E 74 65 72 72 75 70 74 20 6F 72 20 6F 74 68 65    nterrupt or othe
0239C0:  72 20 65 76 65 6E 74 73 0D 20 20 20 20 20 61 63    r events.     ac
0239D0:  74 69 76 65 20 61 6E 64 20 75 73 69 6E 67 20 20    tive and using  
0239E0:  6D 65 6D 6F 72 79 20 20 77 68 69 63 68 20 20 6D    memory  which  m
0239F0:  69 67 68 74 20 20 62 65 20 20 64 61 6D 61 67 65    ight  be  damage
023A00:  64 20 20 62 79 20 20 6C 6F 61 64 69 6E 67 20 61    d  by  loading a
023A10:  20 6E 65 77 0D 20 20 20 20 20 70 72 6F 67 72 61     new.     progra
023A20:  6D 20 69 6E 74 6F 20 6D 65 6D 6F 72 79 2E 20 49    m into memory. I
023A30:  6E 20 74 68 65 20 63 6F 6D 70 6C 65 74 65 20 63    n the complete c
023A40:  6C 6F 73 65 20 64 6F 77 6E 20 4D 43 20 42 4F 4F    lose down MC BOO
023A50:  54 20 50 52 4F 47 52 41 4D 20 64 6F 65 73 3A 0D    T PROGRAM does:.
023A60:  0D 20 20 20 20 20 53 4F 55 4E 44 20 52 45 53 45    .     SOUND RESE
023A70:  54 20 2D 20 74 6F 20 6B 69 6C 6C 20 6F 66 20 73    T - to kill of s
023A80:  6F 75 6E 64 20 67 65 6E 65 72 61 74 69 6F 6E 0D    ound generation.
023A90:  0D 20 20 20 20 20 61 6E 64 20 4F 55 54 20 74 6F    .     and OUT to
023AA0:  20 49 2F 4F 20 70 6F 72 74 20 26 46 38 46 46 20     I/O port &F8FF 
023AB0:  2D 20 72 65 73 65 74 20 61 6E 79 20 65 78 74 65    - reset any exte
023AC0:  72 6E 61 6C 20 69 6E 74 65 72 75 70 74 73 20 73    rnal interupts s
023AD0:  6F 75 72 63 65 73 0D 20 20 20 20 20 4B 4C 20 43    ources.     KL C
023AE0:  48 4F 4B 45 20 4F 46 46 20 2D 20 74 6F 20 6B 69    HOKE OFF - to ki
023AF0:  6C 6C 20 6F 66 20 65 76 65 6E 74 73 0D 20 20 20    ll of events.   
023B00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
023B10:  1E 00 01 00 02 09 4E E5 1E 00 C1 02 00 00 00 02    ......N.........
023B20:  1E 00 C6 02 00 00 00 02 1E 00 C2 02 00 00 00 02    ................
023B30:  1E 00 C7 02 00 00 00 02 1E 00 C3 02 00 00 00 02    ................
023B40:  1E 00 C8 02 00 00 00 02 1E 00 C4 02 00 00 00 02    ................
023B50:  1E 00 C9 02 00 00 00 02 1E 00 C5 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:  63 61 74 65 20 73 6F 6D 65 0D 20 20 20 20 20 6D    cate some.     m
023C10:  65 6D 6F 72 79 20 66 6F 72 20 74 68 65 20 62 61    emory for the ba
023C20:  63 6B 67 72 6F 75 6E 64 20 72 6F 6D 73 20 75 73    ckground roms us
023C30:  65 20 20 62 79 20 20 61 64 6A 75 73 74 69 6E 67    e  by  adjusting
023C40:  20 74 68 65 20 76 61 6C 75 65 73 20 69 6E 20 44     the values in D
023C50:  45 20 61 6E 64 0D 20 20 20 20 20 48 4C 20 62 65    E and.     HL be
023C60:  66 6F 72 65 20 72 65 74 75 72 6E 69 6E 67 2E 20    fore returning. 
023C70:  4F 6E 63 65 20 74 68 65 20 52 4F 4D 20 68 61 73    Once the ROM has
023C80:  20 62 65 65 6E 20 69 6E 69 74 69 61 6C 69 7A 65     been initialize
023C90:  64 20 74 68 65 20 4B 65 72 6E 61 6C 20 61 64 64    d the Kernal add
023CA0:  73 0D 20 20 20 20 20 69 74 20 74 6F 20 74 68 65    s.     it to the
023CB0:  20 6C 69 73 74 20 6F 66 20 65 78 74 65 72 6E 61     list of externa
023CC0:  6C 20 63 6F 6D 6D 61 6E 64 20 20 73 65 72 76 65    l command  serve
023CD0:  72 73 2C 20 61 6E 64 20 6E 6F 74 65 73 20 74 68    rs, and notes th
023CE0:  65 20 62 61 73 65 20 6F 66 20 74 68 65 0D 20 20    e base of the.  
023CF0:  20 20 20 61 72 65 61 20 77 68 69 63 68 20 74 68       area which th
023D00:  65 20 52 4F 4D 20 68 61 73 20 61 6C 6C 6F 63 61    e ROM has alloca
023D10:  74 65 64 20 20 74 6F 20 20 69 74 73 65 6C 66 20    ted  to  itself 
023D20:  20 61 74 20 74 68 65 20 74 6F 70 20 6F 66 20 6D     at the top of m
023D30:  65 6D 6F 72 79 20 28 69 66 0D 20 20 20 20 20 61    emory (if.     a
023D40:  6E 79 29 2E 20 53 75 62 73 65 71 75 65 6E 74 20    ny). Subsequent 
023D50:  46 41 52 20 43 41 4C 4C 73 20 74 6F 20 20 65 6E    FAR CALLs to  en
023D60:  74 72 69 65 73 20 20 69 6E 20 20 74 68 65 20 72    tries  in  the r
023D70:  6F 6D 20 77 69 6C 6C 20 61 75 74 6F 6D 61 74 69    om will automati
023D80:  63 61 6C 6C 79 0D 20 20 20 20 20 73 65 74 20 74    cally.     set t
023D90:  68 65 20 49 59 20 69 6E 64 65 78 20 72 65 67 69    he IY index regi
023DA0:  73 74 65 72 20 74 6F 20 70 6F 69 6E 74 20 61 74    ster to point at
023DB0:  20 74 68 65 20 52 4F 4D 73 20 75 70 70 65 72 20     the ROMs upper 
023DC0:  6D 65 6D 6F 72 79 20 61 72 65 61 2E 0D 0D 20 20    memory area...  
023DD0:  20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D       -------------
023DE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
023DF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
023E00:  74 68 65 20 63 65 6E 74 72 61 6C 20 33 32 4B 20    the central 32K 
023E10:  6F 66 20 6D 65 6D 6F 72 79 2E 20 69 2E 65 2E 20    of memory. i.e. 
023E20:  6E 6F 74 20 75 6E 64 65 72 20 61 20 72 6F 6D 2E    not under a rom.
023E30:  0D 0D 20 20 20 20 20 54 68 65 20 66 6F 72 6D 61    ..     The forma
023E40:  74 20 6F 66 20 61 20 63 6F 6D 6D 61 6E 64 20 74    t of a command t
023E50:  61 62 6C 65 20 69 73 20 64 65 73 63 72 69 62 65    able is describe
023E60:  64 20 6C 61 74 65 72 2E 0D 0D 0D 20 20 20 20 20    d later....     
023E70:  26 42 43 44 34 20 2D 20 4B 4C 20 46 49 4E 44 20    &BCD4 - KL FIND 
023E80:  43 4F 4D 4D 41 4E 44 20 2D 20 53 65 61 72 63 68    COMMAND - Search
023E90:  20 66 6F 72 20 52 53 58 0D 0D 20 20 20 20 20 45     for RSX..     E
023EA0:  6E 74 72 79 3A 0D 0D 20 20 20 20 20 48 4C 20 3D    ntry:..     HL =
023EB0:  20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20     address of the 
023EC0:  63 6F 6D 6D 61 6E 64 20 6E 61 6D 65 20 74 6F 20    command name to 
023ED0:  73 65 61 72 63 68 20 66 6F 72 0D 0D 20 20 20 20    search for..    
023EE0:  20 45 78 69 74 3A 0D 0D 20 20 20 20 20 49 46 20     Exit:..     IF 
023EF0:  61 6E 20 52 53 58 20 6F 72 20 62 61 63 6B 67 72    an RSX or backgr
023F00:  6F 75 6E 64 20 52 4F 4D 20 63 6F 6D 6D 61 6E 64    ound ROM command
023F10:  20 77 61 73 20 66 6F 75 6E 64 3A 0D 0D 20 20 20     was found:..   
023F20:  20 20 43 61 72 72 79 20 74 72 75 65 2E 20 43 20      Carry true. C 
023F30:  3D 20 52 4F 4D 20 73 65 6C 65 63 74 20 61 64 64    = ROM select add
023F40:  72 65 73 73 0D 20 20 20 20 20 48 4C 20 3D 20 61    ress.     HL = a
023F50:  64 64 72 65 73 73 20 6F 66 20 74 68 65 20 72 6F    ddress of the ro
023F60:  75 74 69 6E 65 0D 0D 20 20 20 20 20 49 66 20 74    utine..     If t
023F70:  68 65 20 63 6F 6D 6D 61 6E 64 20 77 61 73 20 6E    he command was n
023F80:  6F 74 20 66 6F 75 6E 64 3A 0D 0D 20 20 20 20 20    ot found:..     
023F90:  43 61 72 72 79 20 66 61 6C 73 65 2E 43 2C 48 4C    Carry false.C,HL
023FA0:  20 63 68 61 6E 67 65 64 2E 0D 0D 20 20 20 20 20     changed...     
023FB0:  41 2C 42 2C 44 45 20 63 68 61 6E 67 65 64 2E 0D    A,B,DE changed..
023FC0:  0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20    .     Notes:..  
023FD0:  20 20 20 54 68 65 20 63 6F 6D 6D 61 6E 64 20 6E       The command n
023FE0:  61 6D 65 20 70 61 73 73 65 64 20 6D 75 73 74 20    ame passed must 
023FF0:  62 65 20 69 6E 20 20 52 41 4D 20 20 62 75 74 20    be in  RAM  but 
024000:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
024010:  2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20    ---------..     
024020:  26 42 43 43 45 20 2D 20 4B 4C 20 49 4E 49 54 20    &BCCE - KL INIT 
024030:  42 41 43 4B 20 2D 20 49 6E 69 74 69 61 6C 69 7A    BACK - Initializ
024040:  65 20 61 20 70 61 72 74 69 63 75 6C 61 72 20 72    e a particular r
024050:  6F 6D 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D    om..     Entry:.
024060:  0D 20 20 20 20 20 43 20 3D 20 72 6F 6D 20 73 65    .     C = rom se
024070:  6C 65 63 74 20 61 64 64 72 65 73 73 20 6F 66 20    lect address of 
024080:  74 68 65 20 72 6F 6D 20 74 6F 20 69 6E 69 74 69    the rom to initi
024090:  61 6C 69 7A 65 0D 20 20 20 20 20 44 45 20 3D 20    alize.     DE = 
0240A0:  66 69 72 73 74 20 75 73 65 61 62 6C 65 20 62 79    first useable by
0240B0:  74 65 20 6F 66 20 6D 65 6D 6F 72 79 0D 20 20 20    te of memory.   
0240C0:  20 20 48 4C 20 3D 20 6C 61 73 74 20 75 73 65 61      HL = last usea
0240D0:  62 6C 65 20 62 79 74 65 20 6F 66 20 6D 65 6D 6F    ble byte of memo
0240E0:  72 79 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D    ry..     Exit:..
0240F0:  20 20 20 20 20 44 45 20 3D 20 61 64 64 72 65 73         DE = addres
024100:  73 20 6F 66 20 74 68 65 20 6E 65 77 20 66 69 72    s of the new fir
024110:  73 74 20 75 73 65 61 62 6C 65 20 62 79 74 65 20    st useable byte 
024120:  6F 66 20 6D 65 6D 6F 72 79 0D 20 20 20 20 20 48    of memory.     H
024130:  4C 20 3D 20 61 64 64 72 65 73 73 20 6F 66 20 74    L = address of t
024140:  68 65 20 6E 65 77 20 6C 61 73 74 20 75 73 65 61    he new last usea
024150:  62 6C 65 20 62 79 74 65 20 6F 66 20 6D 65 6D 6F    ble byte of memo
024160:  72 79 0D 0D 20 20 20 20 20 41 46 2C 42 20 63 68    ry..     AF,B ch
024170:  61 6E 67 65 64 2E 0D 0D 20 20 20 20 20 4E 6F 74    anged...     Not
024180:  65 73 3A 0D 0D 20 20 20 20 20 54 68 65 20 72 6F    es:..     The ro
024190:  6D 20 73 65 6C 65 63 74 20 61 64 64 72 65 73 73    m select address
0241A0:  20 6D 75 73 74 20 62 65 20 69 6E 20 74 68 65 20     must be in the 
0241B0:  20 72 61 6E 67 65 20 31 2E 2E 37 20 69 6E 20 56     range 1..7 in V
0241C0:  31 2E 30 20 61 6E 64 20 30 2E 2E 31 35 20 69 6E    1.0 and 0..15 in
0241D0:  0D 20 20 20 20 20 56 31 2E 31 20 66 69 72 6D 77    .     V1.1 firmw
0241E0:  61 72 65 20 61 6E 64 20 74 68 65 20 72 6F 6D 20    are and the rom 
0241F0:  61 74 20 74 68 69 73 20 20 61 64 64 72 65 73 73    at this  address
024200:  6D 61 79 20 6C 69 65 20 75 6E 64 65 72 6E 65 61    may lie undernea
024210:  74 68 20 61 20 52 4F 4D 2E 0D 20 20 20 20 20 54    th a ROM..     T
024220:  68 65 20 6E 61 6D 65 20 6D 61 79 20 62 65 20 61    he name may be a
024230:  6E 79 20 6E 75 6D 62 65 72 20 20 6F 66 20 20 63    ny number  of  c
024240:  68 61 72 61 63 74 65 72 73 20 20 6C 6F 6E 67 20    haracters  long 
024250:  62 75 74 20 6F 6E 6C 79 20 74 68 65 20 66 69 72    but only the fir
024260:  73 74 20 31 36 0D 20 20 20 20 20 63 68 61 72 61    st 16.     chara
024270:  63 74 65 72 73 20 61 72 65 20 73 69 67 6E 69 66    cters are signif
024280:  69 63 61 6E 74 2E 20 20 41 6C 6C 20 20 61 6C 70    icant.  All  alp
024290:  68 61 62 65 74 69 63 20 20 63 68 61 72 61 63 74    habetic  charact
0242A0:  65 72 73 20 20 69 6E 20 20 74 68 65 20 6E 61 6D    ers  in  the nam
0242B0:  65 0D 20 20 20 20 20 73 68 6F 75 6C 64 20 62 65    e.     should be
0242C0:  20 69 6E 20 75 70 70 65 72 20 63 61 73 65 20 61     in upper case a
0242D0:  6E 64 20 74 68 65 20 6C 61 73 74 20 63 68 61 72    nd the last char
0242E0:  61 63 74 65 72 20 6F 66 20 74 68 65 20 6E 61 6D    acter of the nam
0242F0:  65 20 73 68 6F 75 6C 64 20 68 61 76 65 0D 20 20    e should have.  
024300:  20 20 20 62 69 74 20 37 20 73 65 74 2E 0D 0D 20       bit 7 set... 
024310:  20 20 20 20 54 68 65 20 72 6F 6D 20 73 65 6C 65        The rom sele
024320:  63 74 20 61 6E 64 20 72 6F 75 74 69 6E 65 20 61    ct and routine a
024330:  64 64 72 65 73 73 65 73 20 72 65 74 75 72 6E 65    ddresses returne
024340:  64 20 61 72 65 20 73 75 69 74 61 62 6C 65 20 66    d are suitable f
024350:  6F 72 20 63 61 6C 6C 69 6E 67 0D 20 20 20 20 20    or calling.     
024360:  4B 4C 20 46 41 52 20 50 43 48 4C 2E 0D 0D 20 20    KL FAR PCHL...  
024370:  20 20 20 54 68 65 20 6C 69 73 74 20 6F 66 20 65       The list of e
024380:  78 74 65 72 6E 61 6C 20 63 6F 6D 6D 61 6E 64 20    xternal command 
024390:  20 73 65 72 76 65 72 73 20 20 69 73 20 67 65 6E     servers  is gen
0243A0:  65 72 61 74 65 64 20 61 73 20 62 61 63 6B 67 72    erated as backgr
0243B0:  6F 75 6E 64 20 72 6F 6D 73 0D 20 20 20 20 20 61    ound roms.     a
0243C0:  6E 64 20 72 73 78 73 20 61 72 65 20 20 69 6E 69    nd rsxs are  ini
0243D0:  74 69 61 6C 69 7A 65 64 2E 20 20 54 68 65 20 20    tialized.  The  
0243E0:  63 6F 6D 6D 61 6E 64 20 20 74 61 62 6C 65 73 20    command  tables 
0243F0:  20 61 72 65 20 20 73 63 61 6E 6E 65 64 20 20 69     are  scanned  i
024400:  20 6D 75 73 74 20 62 65 20 61 20 62 61 63 6B 67     must be a backg
024410:  72 6F 75 6E 64 20 72 6F 6D 20 6F 72 0D 20 20 20    round rom or.   
024420:  20 20 74 68 65 20 72 65 71 75 65 73 74 20 77 69      the request wi
024430:  6C 6C 20 62 65 20 20 69 67 6E 6F 72 65 64 2E 20    ll be  ignored. 
024440:  20 49 6E 20 20 76 31 2E 31 20 20 66 69 72 6D 77     In  v1.1  firmw
024450:  61 72 65 20 20 74 68 65 20 72 65 75 71 65 73 74    are  the reuqest
024460:  20 77 69 6C 6C 20 62 65 0D 20 20 20 20 20 69 67     will be.     ig
024470:  6E 6F 72 65 64 20 69 66 20 74 68 65 20 72 6F 6D    nored if the rom
024480:  20 69 73 20 74 68 65 20 63 75 72 72 65 6E 74 20     is the current 
024490:  66 6F 72 65 67 72 6F 75 6E 64 20 72 6F 6D 2E 0D    foreground rom..
0244A0:  0D 20 20 20 20 20 54 68 65 20 66 6F 72 65 67 72    .     The foregr
0244B0:  6F 75 6E 64 20 70 72 6F 67 72 61 6D 20 73 68 6F    ound program sho
0244C0:  75 6C 64 20 69 6E 69 74 69 61 6C 69 7A 65 20 20    uld initialize  
0244D0:  62 61 63 6B 67 72 6F 75 6E 64 20 20 52 4F 4D 53    background  ROMS
0244E0:  20 61 74 20 61 6E 20 65 61 72 6C 79 0D 20 20 20     at an early.   
0244F0:  20 20 73 74 61 67 65 2C 20 62 65 66 6F 72 65 20      stage, before 
024500:  69 74 20 75 73 65 73 20 74 68 65 20 6D 65 6D 6F    it uses the memo
024510:  72 79 20 69 74 20 20 69 73 20 67 69 76 65 6E 2E    ry it  is given.
024520:  20 49 74 20 6D 61 79 20 63 68 6F 73 65 20 77 68     It may chose wh
024530:  65 74 68 65 72 20 74 6F 0D 20 20 20 20 20 65 6E    ether to.     en
024540:  61 62 6C 65 20 62 61 63 6B 67 72 6F 75 6E 64 20    able background 
024550:  52 4F 4D 53 20 6F 72 20 6E 6F 74 2E 20 4B 4C 20    ROMS or not. KL 
024560:  52 4F 4D 20 20 57 41 4C 4B 20 6D 61 79 20 62 65    ROM  WALK may be
024570:  20 75 73 65 64 20 74 6F 20 69 6E 69 74 69 61 6C     used to initial
024580:  69 7A 65 0D 20 20 20 20 20 61 20 70 61 72 74 69    ize.     a parti
024590:  63 75 6C 61 72 20 62 61 63 6B 67 72 6F 75 6E 64    cular background
0245A0:  20 52 4F 4D 20 6F 72 20 74 68 69 73 20 20 72 6F     ROM or this  ro
0245B0:  75 74 69 6E 65 20 6D 61 79 20 62 65 20 75 73 65    utine may be use
0245C0:  64 20 74 6F 20 69 6E 69 74 69 61 6C 69 7A 65 0D    d to initialize.
0245D0:  20 20 20 20 20 61 6C 6C 20 20 61 76 61 69 6C 61         all  availa
0245E0:  62 6C 65 20 20 62 61 63 6B 67 72 6F 75 6E 64 20    ble  background 
0245F0:  20 52 4F 4D 53 20 20 6F 72 20 20 74 68 69 73 20     ROMS  or  this 
024600:  6E 20 74 68 65 0D 0D 0D 0D 0D 0D 0D 20 20 20 20    n the.......    
024610:  20 6F 70 70 6F 73 69 74 65 20 6F 72 64 65 72 20     opposite order 
024620:  74 6F 20 74 68 61 74 20 69 6E 20 20 77 68 69 63    to that in  whic
024630:  68 20 20 74 68 65 20 63 6F 6D 6D 61 6E 64 20 73    h  the command s
024640:  65 72 76 65 72 73 20 77 65 72 65 20 69 6E 74 72    ervers were intr
024650:  6F 64 75 63 65 64 2E 0D 20 20 20 20 20 54 68 75    oduced..     Thu
024660:  73 2C 20 52 53 58 73 20 77 69 6C 6C 20 74 65 6E    s, RSXs will ten
024670:  64 20 74 6F 20 20 74 61 6B 65 20 20 70 72 65 63    d to  take  prec
024680:  65 64 65 6E 63 65 20 20 6F 76 65 72 20 62 61 63    edence  over bac
024690:  6B 67 72 6F 75 6E 64 20 72 6F 6D 73 2C 20 73 69    kground roms, si
0246A0:  6E 63 65 0D 20 20 20 20 20 72 73 78 73 20 61 72    nce.     rsxs ar
0246B0:  65 20 69 6E 20 20 67 65 6E 65 72 61 6C 2C 20 20    e in  general,  
0246C0:  69 6E 69 74 69 61 6C 69 7A 65 64 20 20 61 66 74    initialized  aft
0246D0:  65 72 20 20 62 61 63 6B 67 72 6F 75 6E 64 20 72    er  background r
0246E0:  6F 6D 73 2E 20 42 61 63 6B 67 72 6F 75 6E 64 0D    oms. Background.
0246F0:  20 20 20 20 20 72 6F 6D 73 20 61 72 65 20 6E 6F         roms are no
024700:  72 6D 61 6C 6C 79 20 69 6E 69 74 69 61 6C 69 7A    rmally initializ
024710:  65 64 20 69 6E 20 72 65 76 65 72 73 65 20 20 6F    ed in reverse  o
024720:  72 64 65 72 20 6F 66 20 72 6F 6D 20 73 65 6C 65    rder of rom sele
024730:  63 74 20 61 64 64 72 65 73 73 2C 0D 20 20 20 20    ct address,.    
024740:  20 73 6F 20 6C 6F 77 65 72 20 6E 75 6D 62 65 72     so lower number
024750:  65 64 20 72 6F 6D 73 20 77 69 6C 6C 20 74 61 6B    ed roms will tak
024760:  65 20 70 72 65 63 65 64 65 6E 63 65 20 6F 76 65    e precedence ove
024770:  72 20 68 69 67 68 65 72 2E 0D 0D 20 20 20 20 20    r higher...     
024780:  54 68 65 20 66 69 72 73 74 2D 65 6E 74 72 79 20    The first-entry 
024790:  69 6E 20 20 61 20 20 62 61 63 6B 67 72 6F 75 6E    in  a  backgroun
0247A0:  64 20 20 72 6F 6D 73 20 20 63 6F 6D 6D 61 6E 64    d  roms  command
0247B0:  20 20 6E 61 6D 65 20 20 74 61 62 6C 65 20 28 74      name  table (t
0247C0:  68 65 20 6F 6E 65 0D 20 20 20 20 20 61 73 73 6F    he one.     asso
0247D0:  63 69 61 74 65 64 20 77 69 74 68 20 74 68 65 20    ciated with the 
0247E0:  70 6F 77 65 72 2D 75 70 20 65 6E 74 72 79 29 20    power-up entry) 
0247F0:  6D 61 79 20 20 62 65 20 20 75 73 65 64 20 61 73    may  be  used as
024800:  20 72 6F 75 74 69 6E 65 20 20 6D 61 79 20 20 62     routine  may  b
024810:  65 20 20 75 73 65 64 20 20 74 6F 0D 20 20 20 20    e  used  to.    
024820:  20 69 6E 69 74 69 61 6C 69 7A 65 20 70 61 72 74     initialize part
024830:  69 63 75 6C 61 72 20 72 6F 6D 73 2E 0D 0D 20 20    icular roms...  
024840:  20 20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20       This routine 
024850:  63 61 75 73 65 73 20 74 68 65 20 62 61 63 6B 67    causes the backg
024860:  72 6F 75 6E 64 20 20 72 6F 6D 73 20 70 6F 77 65    round  roms powe
024870:  72 2D 75 70 20 69 6E 69 74 69 61 6C 69 7A 61 74    r-up initializat
024880:  69 6F 6E 20 65 6E 74 72 79 0D 20 20 20 20 20 74    ion entry.     t
024890:  6F 20 62 65 20 63 61 6C 6C 65 64 2E 20 54 68 69    o be called. Thi
0248A0:  73 20 65 6E 74 72 79 20 6D 61 79 20 20 61 6C 6C    s entry may  all
0248B0:  6F 63 61 74 65 20 20 73 6F 6D 65 20 6D 65 6D 6F    ocate  some memo
0248C0:  72 79 20 66 6F 72 20 74 68 65 20 62 61 63 6B 67    ry for the backg
0248D0:  72 6F 75 6E 64 0D 0D 0D 0D 0D 0D 0D 20 20 20 20    round.......    
0248E0:  20 72 6F 6D 73 20 75 73 65 20 62 79 20 61 64 6A     roms use by adj
0248F0:  75 73 74 69 6E 67 20 74 68 65 20 76 61 6C 75 65    usting the value
024900:  73 20 20 69 6E 20 20 44 45 20 61 6E 64 20 48 4C    s  in  DE and HL
024910:  20 62 65 66 6F 72 65 20 72 65 74 75 72 6E 69 6E     before returnin
024920:  67 2E 20 4F 6E 63 65 0D 20 20 20 20 20 74 68 65    g. Once.     the
024930:  20 52 4F 4D 20 68 61 73 20 20 62 65 65 6E 20 20     ROM has  been  
024940:  69 6E 69 74 69 61 6C 69 7A 65 64 20 20 74 68 65    initialized  the
024950:  20 20 4B 65 72 6E 61 6C 20 20 61 64 64 73 20 20      Kernal  adds  
024960:  69 74 20 20 74 6F 20 20 74 68 65 20 6C 69 73 74    it  to  the list
024970:  20 6F 66 0D 20 20 20 20 20 65 78 74 65 72 6E 61     of.     externa
024980:  6C 20 63 6F 6D 6D 61 6E 64 20 73 65 72 76 65 72    l command server
024990:  73 2C 20 61 6E 64 20 6E 6F 74 65 73 20 74 68 65    s, and notes the
0249A0:  20 62 61 73 65 20 6F 66 20 74 68 65 20 61 72 65     base of the are
0249B0:  61 20 77 68 69 63 68 20 74 68 65 20 52 4F 4D 0D    a which the ROM.
0249C0:  20 20 20 20 20 68 61 73 20 61 6C 6C 6F 63 61 74         has allocat
0249D0:  65 64 20 74 6F 20 69 74 73 65 6C 66 20 61 74 20    ed to itself at 
0249E0:  74 68 65 20 74 6F 70 20 20 6F 66 20 6D 65 6D 6F    the top  of memo
0249F0:  72 79 20 28 69 66 20 61 6E 79 29 2E 20 53 75 62    ry (if any). Sub
024A00:  20 74 68 65 20 72 6F 6D 73 20 6E 61 6D 65 2E 20     the roms name. 
024A10:  4B 4C 0D 20 20 20 20 20 46 49 4E 44 20 43 4F 4D    KL.     FIND COM
024A20:  4D 41 4E 44 20 6D 61 79 20 62 65 20 75 73 65 64    MAND may be used
024A30:  2C 20 74 68 65 72 65 66 6F 72 65 2C 20 20 74 6F    , therefore,  to
024A40:  20 66 69 6E 64 20 6F 75 74 20 77 68 65 74 68 65     find out whethe
024A50:  72 20 61 20 70 61 72 74 69 63 75 6C 61 72 0D 20    r a particular. 
024A60:  20 20 20 20 62 61 63 6B 67 72 6F 75 6E 64 20 72        background r
024A70:  6F 6D 20 68 61 73 20 62 65 65 6E 20 69 6E 69 74    om has been init
024A80:  69 61 6C 69 7A 65 64 2E 0D 0D 20 20 20 20 20 57    ialized...     W
024A90:  68 65 6E 20 73 65 61 72 63 68 69 6E 67 20 66 6F    hen searching fo
024AA0:  72 20 61 20 66 6F 72 65 67 72 6F 75 6E 64 20 20    r a foreground  
024AB0:  70 72 6F 67 72 61 6D 2C 20 20 72 6F 6D 73 20 61    program,  roms a
024AC0:  72 65 20 69 6E 73 70 65 63 74 65 64 20 73 74 61    re inspected sta
024AD0:  72 74 69 6E 67 0D 20 20 20 20 20 77 69 74 68 20    rting.     with 
024AE0:  72 6F 6D 20 30 20 61 6E 64 20 20 77 6F 72 6B 69    rom 0 and  worki
024AF0:  6E 67 20 20 75 70 77 61 72 64 73 2E 20 20 54 68    ng  upwards.  Th
024B00:  65 20 20 73 65 61 72 63 68 20 20 63 65 61 73 65    e  search  cease
024B10:  73 20 20 77 68 65 6E 20 74 68 65 20 66 69 72 73    s  when the firs
024B20:  74 0D 20 20 20 20 20 75 6E 75 73 65 64 20 72 6F    t.     unused ro
024B30:  6D 20 61 64 64 72 65 73 73 20 67 72 65 61 74 65    m address greate
024B40:  72 20 74 68 61 6E 20 30 20 6F 6E 20 76 31 2E 31    r than 0 on v1.1
024B50:  20 66 69 72 6D 77 61 72 65 20 61 6E 64 20 67 72     firmware and gr
024B60:  65 61 74 65 72 20 74 68 61 6E 20 31 35 0D 20 20    eater than 15.  
024B70:  20 20 20 6F 6E 20 76 31 2E 31 20 66 69 72 6D 77       on v1.1 firmw
024B80:  61 72 65 20 69 73 20 66 6F 75 6E 64 2E 0D 0D 20    are is found... 
024B90:  20 20 20 20 54 68 65 20 6F 6E 2D 62 6F 61 72 64        The on-board
024BA0:  20 62 61 73 69 63 20 6D 61 79 20 62 65 20 20 65     basic may be  e
024BB0:  6E 74 65 72 65 64 20 20 62 79 20 20 73 65 61 72    ntered  by  sear
024BC0:  63 68 69 6E 67 20 66 6F 72 20 61 6E 64 20 69 6E    ching for and in
024BD0:  76 6F 6B 69 6E 67 20 74 68 65 0D 20 20 20 20 20    voking the.     
024BE0:  63 6F 6D 6D 61 6E 64 20 27 42 41 53 49 43 27 0D    command 'BASIC'.
024BF0:  0D 20 20 20 20 20 49 66 20 20 61 20 20 66 6F 72    .     If  a  for
024C00:  73 65 71 75 65 6E 74 20 46 41 52 0D 20 20 20 20    sequent FAR.    
024C10:  20 43 41 4C 4C 73 20 74 6F 20 65 6E 74 72 69 65     CALLs to entrie
024C20:  73 20 20 69 6E 20 20 74 68 65 20 20 52 4F 4D 20    s  in  the  ROM 
024C30:  20 77 69 6C 6C 20 20 61 75 74 6F 6D 61 74 69 63     will  automatic
024C40:  61 6C 6C 79 20 20 73 65 74 20 20 74 68 65 20 49    ally  set  the I
024C50:  59 20 69 6E 64 65 78 0D 20 20 20 20 20 72 65 67    Y index.     reg
024C60:  69 73 74 65 72 20 74 6F 20 70 6F 69 6E 74 20 61    ister to point a
024C70:  74 20 74 68 65 20 52 4F 4D 73 20 75 70 70 65 72    t the ROMs upper
024C80:  20 6D 65 6D 6F 72 79 20 61 72 65 61 2E 0D 0D 20     memory area... 
024C90:  20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D        ------------
024CA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
024CB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
024CC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
024CD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20    ----------..    
024CE0:  20 26 42 43 44 31 20 2D 20 4B 4C 20 4C 4F 47 20     &BCD1 - KL LOG 
024CF0:  45 58 54 20 2D 20 49 6E 74 72 6F 64 75 63 65 20    EXT - Introduce 
024D00:  61 6E 20 52 53 58 20 74 6F 20 74 68 65 20 66 69    an RSX to the fi
024D10:  72 6D 77 61 72 65 2E 0D 0D 20 20 20 20 20 45 6E    rmware...     En
024D20:  74 72 79 3A 0D 0D 20 20 20 20 20 42 43 20 3D 20    try:..     BC = 
024D30:  61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 52    address of the R
024D40:  53 58 20 63 6F 6D 6D 61 6E 64 20 74 61 62 6C 65    SX command table
024D50:  0D 20 20 20 20 20 48 4C 20 3D 20 34 20 62 79 74    .     HL = 4 byt
024D60:  65 20 61 72 65 61 20 6F 66 20 52 41 4D 20 66 6F    e area of RAM fo
024D70:  72 20 74 68 65 20 4B 65 72 6E 61 6C 73 20 75 73    r the Kernals us
024D80:  65 2E 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D    e...     Exit:..
024D90:  20 20 20 20 20 44 45 20 63 68 61 6E 67 65 64 2E         DE changed.
024DA0:  0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20    ..     Notes:.. 
024DB0:  20 20 20 20 42 6F 74 68 20 74 68 65 20 52 53 58        Both the RSX
024DC0:  73 20 63 6F 6D 6D 61 6E 64 20 74 61 62 6C 65 20    s command table 
024DD0:  61 6E 64 20 20 74 68 65 20 20 4B 65 72 6E 61 6C    and  the  Kernal
024DE0:  73 20 73 74 6F 72 61 67 65 20 61 72 65 61 20 6D    s storage area m
024DF0:  75 73 74 20 6C 69 65 20 69 6E 0D 20 20 20 20 20    ust lie in.     
024E00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
024E10:  1F 00 01 00 02 09 4E E5 1F 00 C1 02 00 00 00 02    ......N.........
024E20:  1F 00 C6 02 00 00 00 02 1F 00 C2 02 00 00 00 02    ................
024E30:  1F 00 C7 02 00 00 00 02 1F 00 C3 02 00 00 00 02    ................
024E40:  1F 00 C8 02 00 00 00 02 1F 00 C4 02 00 00 00 02    ................
024E50:  1F 00 C9 02 00 00 00 02 1F 00 C5 02 00 00 00 02    ................
024E60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024E90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024ED0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024EF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
024F00:  65 67 72 6F 75 6E 64 20 20 72 6F 6D 20 20 20 63    eground  rom   c
024F10:  6F 6D 6D 61 6E 64 20 20 20 69 73 20 20 20 66 6F    ommand   is   fo
024F20:  75 6E 64 20 20 20 74 68 65 20 20 20 72 6F 6D 20    und   the   rom 
024F30:  20 69 73 20 20 65 6E 74 65 72 65 64 0D 20 20 20     is  entered.   
024F40:  20 20 75 6E 63 6F 6E 64 69 74 69 6F 6E 61 6C 6C      unconditionall
024F50:  79 20 61 6E 64 20 74 68 69 73 20 72 6F 75 74 69    y and this routi
024F60:  6E 65 20 6E 65 76 65 72 20 72 65 74 75 72 6E 73    ne never returns
024F70:  2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D    ...     --------
024F80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
024F90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
024FA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
024FB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D    --------------..
024FC0:  20 20 20 20 20 26 42 43 44 37 20 2D 20 4B 4C 20         &BCD7 - KL 
024FD0:  4E 45 57 20 46 52 41 4D 45 20 46 4C 59 20 2D 20    NEW FRAME FLY - 
024FE0:  20 49 6E 69 74 69 61 6C 69 7A 65 20 20 61 6E 64     Initialize  and
024FF0:  20 70 75 74 20 61 20 62 6C 6F 63 6B 20 6F 6E 74     put a block ont
025000:  6F 20 74 68 65 20 66 72 61 6D 65 0D 20 20 20 20    o the frame.    
025010:  20 66 6C 79 62 61 63 6B 20 6C 69 73 74 2E 0D 0D     flyback list...
025020:  20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20         Entry:..   
025030:  20 20 48 4C 20 3D 20 61 64 64 72 65 73 73 20 6F      HL = address o
025040:  66 20 74 68 65 20 66 72 61 6D 65 20 66 6C 79 62    f the frame flyb
025050:  61 63 6B 20 62 6C 6F 63 6B 0D 20 20 20 20 20 42    ack block.     B
025060:  20 3D 20 65 76 65 6E 74 20 63 6C 61 73 73 0D 20     = event class. 
025070:  20 20 20 20 43 20 3D 20 72 6F 6D 20 73 65 6C 65        C = rom sele
025080:  63 74 20 61 64 64 72 65 73 73 20 6F 66 20 74 68    ct address of th
025090:  65 20 65 76 65 6E 74 20 72 6F 75 74 69 6E 65 0D    e event routine.
0250A0:  20 20 20 20 20 44 45 20 3D 20 61 64 64 72 65 73         DE = addres
0250B0:  73 20 6F 66 20 74 68 65 20 65 76 65 6E 74 20 72    s of the event r
0250C0:  6F 75 74 69 6E 65 0D 0D 20 20 20 20 20 45 78 69    outine..     Exi
0250D0:  74 3A 0D 0D 20 20 20 20 20 41 46 2C 44 45 2C 48    t:..     AF,DE,H
0250E0:  4C 20 63 68 61 6E 67 65 64 2E 0D 0D 20 20 20 20    L changed...    
0250F0:  20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54 68     Notes:..     Th
025100:  6E 64 20 6D 75 73 74 20 6C 69 65 20 69 6E 20 74    nd must lie in t
025110:  68 65 20 63 65 6E 74 72 61 6C 20 33 32 6B 0D 20    he central 32k. 
025120:  20 20 20 20 6F 66 20 72 61 6D 2E 20 54 68 65 20        of ram. The 
025130:  6C 61 73 74 20 37 20 62 79 74 65 73 20 6F 66 20    last 7 bytes of 
025140:  74 68 65 20 74 69 63 6B 20 62 6C 6F 63 6B 20 61    the tick block a
025150:  72 65 20 61 6E 20 65 76 65 6E 74 20 62 6C 6F 63    re an event bloc
025160:  6B 20 77 68 69 63 68 20 69 73 0D 20 20 20 20 20    k which is.     
025170:  69 6E 69 74 69 61 6C 69 7A 65 64 20 74 6F 20 72    initialized to r
025180:  65 66 6C 65 63 74 20 20 74 68 65 20 20 70 61 72    eflect  the  par
025190:  61 6D 65 74 65 72 73 20 20 70 61 73 73 65 64 20    ameters  passed 
0251A0:  20 69 6E 20 20 42 2C 43 2C 44 45 2E 20 54 68 65     in  B,C,DE. The
0251B0:  20 65 78 61 63 74 0D 20 20 20 20 20 6C 61 79 6F     exact.     layo
0251C0:  75 74 20 6F 66 20 61 20 66 61 73 74 20 74 69 63    ut of a fast tic
0251D0:  6B 65 72 20 62 6C 6F 63 6B 20 69 73 20 64 65 73    ker block is des
0251E0:  63 72 69 62 65 64 20 6C 61 74 65 72 2E 0D 0D 20    cribed later... 
0251F0:  20 20 20 20 54 68 65 20 66 61 73 74 20 74 69 63        The fast tic
025200:  6B 65 72 20 62 6C 6F 63 6B 20 69 73 20 61 70 70    ker block is app
025210:  65 6E 64 65 64 20 74 6F 20 74 68 65 20 66 61 73    ended to the fas
025220:  74 20 74 69 63 6B 65 72 20 6C 69 73 74 20 69 66    t ticker list if
025230:  20 69 74 20 69 73 20 6E 6F 74 0D 20 20 20 20 20     it is not.     
025240:  61 6C 72 65 61 64 79 20 6F 6E 20 69 74 2E 0D 0D    already on it...
025250:  0D 0D 0D 0D 0D 0D 20 20 20 20 20 54 68 65 20 66    ......     The f
025260:  61 73 74 20 74 69 63 6B 65 72 20 66 61 63 69 6C    ast ticker facil
025270:  69 74 79 20 69 73 20 6E 6F 74 20 20 69 6E 74 65    ity is not  inte
025280:  6E 64 65 64 20 66 6F 72 20 67 65 6E 65 72 61 6C    nded for general
025290:  20 75 73 65 2E 20 48 6F 77 65 76 65 72 2C 20 69     use. However, i
0252A0:  74 0D 20 20 20 20 20 64 6F 65 73 20 61 6C 6C 6F    t.     does allo
0252B0:  77 20 20 72 65 6C 61 74 69 76 65 6C 79 20 20 73    w  relatively  s
0252C0:  68 6F 72 74 20 20 74 69 6D 65 73 20 20 74 6F 20    hort  times  to 
0252D0:  20 62 65 20 20 6D 65 61 73 75 72 65 64 20 20 67     be  measured  g
0252E0:  69 76 69 6E 67 20 67 72 65 61 74 65 72 0D 20 20    iving greater.  
0252F0:  20 20 20 72 65 73 6F 6C 75 74 69 6F 6E 20 74 68       resolution th
025300:  65 20 66 72 61 6D 65 20 66 6C 79 62 61 63 6B 20    e frame flyback 
025310:  62 6C 6F 63 6B 20 69 73 20 39 20 20 62 79 74 65    block is 9  byte
025320:  73 20 20 6C 6F 6E 67 20 20 61 6E 64 20 6D 75 73    s  long  and mus
025330:  74 20 6C 69 65 20 69 6E 20 74 68 65 20 63 65 6E    t lie in the cen
025340:  74 72 61 6C 0D 20 20 20 20 20 33 32 6B 20 6F 66    tral.     32k of
025350:  20 72 61 6D 2E 20 54 68 65 20 6C 61 73 74 20 37     ram. The last 7
025360:  20 62 79 74 65 73 20 20 6F 66 20 20 74 68 65 20     bytes  of  the 
025370:  66 72 61 6D 65 20 66 6C 79 62 61 63 6B 20 62 6C    frame flyback bl
025380:  6F 63 6B 20 61 72 65 20 61 6E 20 65 76 65 6E 74    ock are an event
025390:  0D 20 20 20 20 20 62 6C 6F 63 6B 20 77 68 69 63    .     block whic
0253A0:  68 20 72 65 66 6C 65 63 74 73 20 20 74 68 65 20    h reflects  the 
0253B0:  20 70 61 72 61 6D 65 74 65 72 73 20 20 70 61 73     parameters  pas
0253C0:  73 65 64 20 20 69 6E 20 20 42 2C 43 2C 44 45 2E    sed  in  B,C,DE.
0253D0:  20 20 20 54 68 65 20 65 78 61 63 74 0D 20 20 20       The exact.   
0253E0:  20 20 6C 61 79 6F 75 74 20 6F 66 20 61 20 66 72      layout of a fr
0253F0:  61 6D 65 20 66 6C 79 62 61 63 6B 20 62 6C 6F 63    ame flyback bloc
025400:  6B 20 69 73 20 64 65 73 63 72 69 62 65 64 20 6C    k is described l
025410:  61 74 65 72 2E 0D 0D 20 20 20 20 20 54 68 65 20    ater...     The 
025420:  66 72 61 6D 65 20 66 6C 79 62 61 63 6B 20 62 6C    frame flyback bl
025430:  6F 63 6B 20 69 73 20 61 70 70 65 6E 64 65 64 20    ock is appended 
025440:  74 6F 20 74 68 65 20 66 72 61 6D 65 20 66 6C 79    to the frame fly
025450:  62 61 63 6B 20 6C 69 73 74 20 69 66 20 69 74 20    back list if it 
025460:  69 73 0D 20 20 20 20 20 6E 6F 74 20 61 6C 72 65    is.     not alre
025470:  61 64 79 20 6F 6E 20 69 74 2E 0D 0D 20 20 20 20    ady on it...    
025480:  20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 65 6E     This routine en
025490:  61 62 6C 65 73 20 69 6E 74 65 72 75 70 74 73 2E    ables interupts.
0254A0:  0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D    ..     ---------
0254B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0254C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0254D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0254E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 20 20    ------------.   
0254F0:  20 20 2D 0D 20 20 20 20 20 26 42 43 44 41 20 2D      -.     &BCDA -
025500:  61 6E 20 74 68 65 20 67 65 6E 65 72 61 6C 20 74    an the general t
025510:  69 63 6B 65 72 20 66 61 63 69 6C 69 74 69 65 73    icker facilities
025520:  2E 0D 0D 20 20 20 20 20 54 68 69 73 20 72 6F 75    ...     This rou
025530:  74 69 6E 65 20 65 6E 61 62 6C 65 73 20 69 6E 74    tine enables int
025540:  65 72 75 70 74 73 2E 0D 0D 20 20 20 20 20 2D 2D    erupts...     --
025550:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025560:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025570:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025580:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025590:  2D 2D 2D 0D 20 20 20 20 20 2D 0D 20 20 20 20 20    ---.     -.     
0255A0:  26 42 43 45 33 20 2D 20 4B 4C 20 41 44 44 20 46    &BCE3 - KL ADD F
0255B0:  41 53 54 20 54 49 43 4B 45 52 20 2D 20 50 75 74    AST TICKER - Put
0255C0:  20 61 20 62 6C 6F 63 6B 20 6F 6E 74 6F 20 74 68     a block onto th
0255D0:  65 20 66 61 73 74 20 74 69 63 6B 65 72 20 6C 69    e fast ticker li
0255E0:  73 74 2E 0D 0D 0D 20 20 20 20 20 48 4C 20 3D 20    st....     HL = 
0255F0:  61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20 66    address of the f
025600:  61 73 74 20 74 69 63 6B 65 72 20 62 6C 6F 63 6B    ast ticker block
025610:  0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20    ..     Exit:..  
025620:  20 20 20 41 46 2C 44 45 2C 48 4C 20 63 68 61 6E       AF,DE,HL chan
025630:  67 65 64 2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73    ged...     Notes
025640:  3A 0D 0D 20 20 20 20 20 54 68 65 20 66 61 73 74    :..     The fast
025650:  20 74 69 63 6B 65 72 20 62 6C 6F 63 6B 20 69 73     ticker block is
025660:  20 39 20 62 79 74 65 73 20 6C 6F 6E 67 20 20 61     9 bytes long  a
025670:  6E 64 20 6D 75 73 74 20 6C 69 65 20 69 6E 20 74    nd must lie in t
025680:  68 65 20 63 65 6E 74 72 61 6C 20 33 32 6B 0D 20    he central 32k. 
025690:  20 20 20 20 6F 66 20 72 61 6D 2E 20 54 68 65 20        of ram. The 
0256A0:  6C 61 73 74 20 37 20 62 79 74 65 73 20 6F 66 20    last 7 bytes of 
0256B0:  20 74 68 65 20 20 66 61 73 74 20 74 69 63 6B 65     the  fast ticke
0256C0:  72 20 62 6C 6F 63 6B 20 61 72 65 20 61 6E 20 65    r block are an e
0256D0:  76 65 6E 74 20 62 6C 6F 63 6B 0D 20 20 20 20 20    vent block.     
0256E0:  77 68 69 63 68 20 6D 75 73 74 20 62 65 20 20 69    which must be  i
0256F0:  6E 69 74 69 61 6C 69 7A 65 64 20 20 62 65 66 6F    nitialized  befo
025700:  20 4B 4C 20 41 44 44 20 46 52 41 4D 45 20 46 4C     KL ADD FRAME FL
025710:  59 20 2D 20 41 64 64 20 61 20 62 6C 6F 63 6B 20    Y - Add a block 
025720:  74 6F 20 74 68 65 20 66 72 61 6D 65 20 66 6C 79    to the frame fly
025730:  62 61 63 6B 20 6C 69 73 74 0D 0D 20 20 20 20 20    back list..     
025740:  45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 48 4C 20    Entry:..     HL 
025750:  3D 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65    = address of the
025760:  20 66 72 61 6D 65 20 66 6C 79 62 61 63 6B 20 62     frame flyback b
025770:  6C 6F 63 6B 0D 0D 20 20 20 20 20 45 78 69 74 3A    lock..     Exit:
025780:  0D 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20 41 46 2C    ........     AF,
025790:  44 45 2C 48 4C 20 63 68 61 6E 67 65 64 2E 0D 0D    DE,HL changed...
0257A0:  20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20         Notes:..   
0257B0:  20 20 54 68 65 20 66 72 61 6D 65 20 66 6C 79 62      The frame flyb
0257C0:  61 63 6B 20 62 6C 6F 63 6B 20 69 73 20 39 20 20    ack block is 9  
0257D0:  62 79 74 65 73 20 20 6C 6F 6E 67 20 20 61 6E 64    bytes  long  and
0257E0:  20 6D 75 73 74 20 6C 69 65 20 69 6E 20 74 68 65     must lie in the
0257F0:  20 63 65 6E 74 72 61 6C 0D 20 20 20 20 20 33 32     central.     32
025800:  6B 20 6F 66 20 72 61 6D 2E 20 54 68 65 20 6C 61    k of ram. The la
025810:  73 74 20 37 20 62 79 74 65 73 20 20 6F 66 20 20    st 7 bytes  of  
025820:  74 68 65 20 66 72 61 6D 65 20 66 6C 79 62 61 63    the frame flybac
025830:  6B 20 62 6C 6F 63 6B 20 61 72 65 20 61 6E 20 65    k block are an e
025840:  76 65 6E 74 0D 20 20 20 20 20 62 6C 6F 63 6B 20    vent.     block 
025850:  77 68 69 63 68 20 6D 75 73 74 20 62 65 20 69 6E    which must be in
025860:  69 74 69 61 6C 69 7A 65 64 20 62 65 66 6F 72 65    itialized before
025870:  20 63 61 6C 6C 69 6E 67 20 74 68 69 73 20 72 6F     calling this ro
025880:  75 74 69 6E 65 2E 20 54 68 65 20 65 78 61 63 74    utine. The exact
025890:  0D 20 20 20 20 20 6C 61 79 6F 75 74 20 6F 66 20    .     layout of 
0258A0:  61 20 66 72 61 6D 65 20 66 6C 79 62 61 63 6B 20    a frame flyback 
0258B0:  62 6C 6F 63 6B 20 69 73 20 64 65 73 63 72 69 62    block is describ
0258C0:  65 64 20 6C 61 74 65 72 2E 0D 0D 20 20 20 20 20    ed later...     
0258D0:  54 68 65 20 62 6C 6F 63 6B 20 69 73 20 61 70 70    The block is app
0258E0:  65 6E 64 65 64 20 74 6F 20 74 68 65 20 66 72 61    ended to the fra
0258F0:  6D 65 20 20 66 6C 79 62 61 63 6B 20 20 6C 69 73    me  flyback  lis
025900:  72 65 20 20 63 61 6C 6C 69 6E 67 20 20 74 68 69    re  calling  thi
025910:  73 20 20 72 6F 75 74 69 6E 65 2E 20 20 54 68 65    s  routine.  The
025920:  20 65 78 61 63 74 0D 20 20 20 20 20 6C 61 79 6F     exact.     layo
025930:  75 74 20 6F 66 20 61 20 66 61 73 74 20 74 69 63    ut of a fast tic
025940:  6B 65 72 20 62 6C 6F 63 6B 20 69 73 20 64 65 73    ker block is des
025950:  63 72 69 62 65 64 20 6C 61 74 65 72 2E 0D 0D 20    cribed later... 
025960:  20 20 20 20 54 68 65 20 66 61 73 74 20 74 69 63        The fast tic
025970:  6B 65 72 20 62 6C 6F 63 6B 20 69 73 20 61 70 70    ker block is app
025980:  65 6E 64 65 64 20 74 6F 20 74 68 65 20 66 61 73    ended to the fas
025990:  74 20 74 69 63 6B 65 72 20 6C 69 73 74 20 69 66    t ticker list if
0259A0:  20 69 74 20 69 73 20 6E 6F 74 0D 20 20 20 20 20     it is not.     
0259B0:  61 6C 72 65 61 64 79 20 6F 6E 20 69 74 2E 0D 0D    already on it...
0259C0:  20 20 20 20 20 54 68 65 20 66 61 73 74 20 74 69         The fast ti
0259D0:  63 6B 65 72 20 66 61 63 69 6C 69 74 79 20 69 73    cker facility is
0259E0:  20 6E 6F 74 20 20 69 6E 74 65 6E 64 65 64 20 66     not  intended f
0259F0:  6F 72 20 67 65 6E 65 72 61 6C 20 75 73 65 2E 20    or general use. 
025A00:  48 6F 77 65 76 65 72 2C 20 69 74 0D 20 20 20 20    However, it.    
025A10:  20 64 6F 65 73 20 61 6C 6C 6F 77 20 20 72 65 6C     does allow  rel
025A20:  61 74 69 76 65 6C 79 20 20 73 68 6F 72 74 20 20    atively  short  
025A30:  74 69 6D 65 73 20 20 74 6F 20 20 62 65 20 20 6D    times  to  be  m
025A40:  65 61 73 75 72 65 64 20 20 67 69 76 69 6E 67 20    easured  giving 
025A50:  67 72 65 61 74 65 72 0D 20 20 20 20 20 72 65 73    greater.     res
025A60:  6F 6C 75 74 69 6F 6E 20 74 68 61 6E 20 74 68 65    olution than the
025A70:  20 67 65 6E 65 72 61 6C 20 74 69 63 6B 65 72 20     general ticker 
025A80:  66 61 63 69 6C 69 74 69 65 73 2E 0D 0D 20 20 20    facilities...   
025A90:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 65      This routine e
025AA0:  6E 61 62 6C 65 73 20 69 6E 74 65 72 75 70 74 73    nables interupts
025AB0:  2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D    ...     --------
025AC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025AD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025AE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025AF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 20    -------------.  
025B00:  74 20 69 66 20 69 74 20 69 73 20 6E 6F 74 20 61    t if it is not a
025B10:  6C 72 65 61 64 79 0D 20 20 20 20 20 6F 6E 20 69    lready.     on i
025B20:  74 2E 0D 0D 20 20 20 20 20 54 68 69 73 20 72 6F    t...     This ro
025B30:  75 74 69 6E 65 20 65 6E 61 62 6C 65 73 20 69 6E    utine enables in
025B40:  74 65 72 75 70 74 73 2E 0D 20 20 20 20 20 2D 2D    terupts..     --
025B50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025B60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025B70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025B80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025B90:  2D 2D 2D 0D 20 20 20 20 20 2D 0D 0D 20 20 20 20    ---.     -..    
025BA0:  20 26 42 43 44 44 20 2D 20 4B 4C 20 44 45 4C 20     &BCDD - KL DEL 
025BB0:  46 52 41 4D 45 20 46 4C 59 20 2D 20 52 65 6D 6F    FRAME FLY - Remo
025BC0:  76 65 20 61 20 62 6C 6F 63 6B 20 66 72 6F 6D 20    ve a block from 
025BD0:  74 68 65 20 66 72 61 6D 65 20 66 6C 79 62 61 63    the frame flybac
025BE0:  6B 20 6C 69 73 74 0D 0D 20 20 20 20 20 45 6E 74    k list..     Ent
025BF0:  72 79 3A 0D 0D 20 20 20 20 20 48 4C 20 3D 20 61    ry:..     HL = a
025C00:  64 64 72 65 73 73 20 6F 66 20 74 68 65 20 66 72    ddress of the fr
025C10:  61 6D 65 20 66 6C 79 62 61 63 6B 20 62 6C 6F 63    ame flyback bloc
025C20:  6B 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20    k..     Exit:.. 
025C30:  20 20 20 20 41 46 2C 44 45 2C 48 4C 20 63 68 61        AF,DE,HL cha
025C40:  6E 67 65 64 2E 0D 0D 20 20 20 20 20 4E 6F 74 65    nged...     Note
025C50:  73 3A 0D 0D 20 20 20 20 20 54 68 69 73 20 72 6F    s:..     This ro
025C60:  75 74 69 6E 65 20 64 6F 65 73 20 6E 6F 74 68 69    utine does nothi
025C70:  6E 67 20 69 66 20 74 68 65 20 62 6C 6F 63 6B 20    ng if the block 
025C80:  69 73 20 6E 6F 74 20 6F 6E 20 74 68 65 20 6C 69    is not on the li
025C90:  73 74 2E 0D 0D 20 20 20 20 20 52 65 6D 6F 76 69    st...     Removi
025CA0:  6E 67 20 61 20 62 6C 6F 63 6B 20 66 72 6F 6D 20    ng a block from 
025CB0:  74 68 65 20 20 6C 69 73 74 20 20 6F 6E 6C 79 20    the  list  only 
025CC0:  20 70 72 65 76 65 6E 74 73 20 74 68 65 20 65 76     prevents the ev
025CD0:  65 6E 74 20 62 65 69 6E 67 20 6B 69 63 6B 65 64    ent being kicked
025CE0:  0D 20 20 20 20 20 61 67 61 69 6E 2E 20 49 74 20    .     again. It 
025CF0:  64 6F 65 73 20 6E 6F 74 20 61 66 66 65 63 74 20    does not affect 
025D00:  20 20 20 2D 0D 0D 20 20 20 20 20 26 42 43 45 36       -..     &BCE6
025D10:  20 2D 20 4B 4C 20 44 45 4C 20 46 41 53 54 20 54     - KL DEL FAST T
025D20:  49 43 4B 45 52 20 2D 20 52 65 6D 6F 76 65 20 61    ICKER - Remove a
025D30:  20 62 6C 6F 63 6B 20 66 72 6F 6D 20 74 68 65 20     block from the 
025D40:  66 61 73 74 20 74 69 63 6B 65 72 20 6C 69 73 74    fast ticker list
025D50:  0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 20    ..     Entry:.. 
025D60:  20 20 20 20 48 4C 20 3D 20 61 64 64 72 65 73 73        HL = address
025D70:  20 6F 66 20 74 68 65 20 66 61 73 74 20 74 69 63     of the fast tic
025D80:  6B 65 72 20 62 6C 6F 63 6B 0D 0D 20 20 20 20 20    ker block..     
025D90:  45 78 69 74 3A 0D 0D 20 20 20 20 20 41 46 2C 44    Exit:..     AF,D
025DA0:  45 2C 48 4C 20 63 68 61 6E 67 65 64 2E 0D 0D 20    E,HL changed... 
025DB0:  20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20        Notes:..    
025DC0:  20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 64 6F     This routine do
025DD0:  65 73 20 6E 6F 74 68 69 6E 67 20 69 66 20 74 68    es nothing if th
025DE0:  65 20 62 6C 6F 63 6B 20 69 73 20 6E 6F 74 20 6F    e block is not o
025DF0:  6E 20 74 68 65 20 6C 69 73 74 2E 0D 0D 20 20 20    n the list...   
025E00:  20 20 52 65 6D 6F 76 69 6E 67 20 61 20 62 6C 6F      Removing a blo
025E10:  63 6B 20 66 72 6F 6D 20 20 74 68 65 20 20 6C 69    ck from  the  li
025E20:  73 74 20 20 6F 6E 6C 79 20 20 70 72 65 76 65 6E    st  only  preven
025E30:  74 73 20 20 74 68 65 20 65 76 65 6E 74 20 66 72    ts  the event fr
025E40:  6F 6D 20 62 65 69 6E 67 0D 20 20 20 20 20 6B 69    om being.     ki
025E50:  63 6B 65 64 20 61 67 61 69 6E 2E 20 49 74 20 64    cked again. It d
025E60:  6F 65 73 20 6E 6F 74 20 61 66 66 65 63 74 20 61    oes not affect a
025E70:  6E 79 20 6F 75 74 73 74 61 6E 64 69 6E 67 20 66    ny outstanding f
025E80:  61 73 74 20 74 69 63 6B 65 72 20 65 76 65 6E 74    ast ticker event
025E90:  73 2E 0D 0D 20 20 20 20 20 54 68 69 73 20 72 6F    s...     This ro
025EA0:  75 74 69 6E 65 20 65 6E 61 62 6C 65 73 20 69 6E    utine enables in
025EB0:  74 65 72 75 70 74 73 2E 0D 0D 0D 20 20 20 20 20    terupts....     
025EC0:  26 42 43 45 39 20 2D 20 4B 4C 20 41 44 44 20 54    &BCE9 - KL ADD T
025ED0:  49 43 4B 45 52 20 2D 20 50 75 74 20 61 20 62 6C    ICKER - Put a bl
025EE0:  6F 63 6B 20 6F 6E 74 6F 20 74 68 65 20 74 69 63    ock onto the tic
025EF0:  6B 20 6C 69 73 74 0D 0D 20 20 20 20 20 45 6E 74    k list..     Ent
025F00:  61 6E 79 20 6F 75 74 73 74 61 6E 64 69 6E 67 20    any outstanding 
025F10:  66 72 61 6D 65 20 66 6C 79 62 61 63 6B 20 65 76    frame flyback ev
025F20:  65 6E 74 73 2E 0D 0D 20 20 20 20 20 54 68 69 73    ents...     This
025F30:  20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C 65 73     routine enables
025F40:  20 69 6E 74 65 72 75 70 74 73 2E 0D 20 20 20 20     interupts..    
025F50:  20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D     ---------------
025F60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025F70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025F80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
025F90:  2D 2D 2D 2D 2D 2D 0D 20 20 20 20 20 2D 2D 0D 20    ------.     --. 
025FA0:  20 20 20 20 26 42 43 45 30 20 2D 20 4B 4C 20 4E        &BCE0 - KL N
025FB0:  45 57 20 46 41 53 54 20 54 49 43 4B 45 52 20 2D    EW FAST TICKER -
025FC0:  20 20 49 6E 69 74 69 6C 69 7A 65 20 20 61 6E 64      Initilize  and
025FD0:  20 70 75 74 20 61 20 62 6C 6F 63 6B 20 6F 6E 74     put a block ont
025FE0:  6F 20 74 68 65 20 66 61 73 74 0D 20 20 20 20 20    o the fast.     
025FF0:  74 69 63 6B 20 6C 69 73 74 0D 0D 20 20 20 20 20    tick list..     
026000:  45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 48 4C 20    Entry:..     HL 
026010:  3D 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65    = address of the
026020:  20 66 61 73 74 20 74 69 63 6B 65 72 20 62 6C 6F     fast ticker blo
026030:  63 6B 0D 20 20 20 20 20 44 45 20 3D 20 65 76 65    ck.     DE = eve
026040:  6E 74 20 63 6C 61 73 73 0D 20 20 20 20 20 43 20    nt class.     C 
026050:  3D 20 72 6F 6D 20 73 65 6C 65 63 74 20 61 64 64    = rom select add
026060:  72 65 73 73 20 6F 66 20 74 68 65 20 65 76 65 6E    ress of the even
026070:  74 20 72 6F 75 74 69 6E 65 0D 20 20 20 20 20 44    t routine.     D
026080:  45 20 3D 20 61 64 64 72 65 73 73 20 6F 66 20 74    E = address of t
026090:  68 65 20 65 76 65 6E 74 20 72 6F 75 74 69 6E 65    he event routine
0260A0:  0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20    ..     Exit:..  
0260B0:  20 20 20 41 46 2C 44 45 2C 48 4C 20 63 68 61 6E       AF,DE,HL chan
0260C0:  67 65 64 2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73    ged...     Notes
0260D0:  3A 0D 0D 20 20 20 20 20 54 68 65 20 66 61 73 74    :..     The fast
0260E0:  20 74 69 63 6B 65 72 20 62 6C 6F 63 6B 20 69 73     ticker block is
0260F0:  20 39 20 62 79 74 65 73 20 6C 6F 6E 67 20 20 61     9 bytes long  a
026100:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
026110:  20 00 01 00 02 09 4E E5 20 00 C1 02 00 00 00 02     .....N. .......
026120:  20 00 C6 02 00 00 00 02 20 00 C2 02 00 00 00 02     ....... .......
026130:  20 00 C7 02 00 00 00 02 20 00 C3 02 00 00 00 02     ....... .......
026140:  20 00 C8 02 00 00 00 02 20 00 C4 02 00 00 00 02     ....... .......
026150:  20 00 C9 02 00 00 00 02 20 00 C5 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:  72 79 3A 0D 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20    ry:........     
026210:  48 4C 20 3D 20 61 64 64 72 65 73 73 20 6F 66 20    HL = address of 
026220:  74 68 65 20 74 69 63 6B 20 62 6C 6F 63 6B 0D 20    the tick block. 
026230:  20 20 20 20 44 45 20 3D 20 69 6E 69 74 69 61 6C        DE = initial
026240:  20 76 61 6C 75 65 20 66 6F 72 20 74 68 65 20 63     value for the c
026250:  6F 75 6E 74 20 65 6E 74 72 79 0D 20 20 20 20 20    ount entry.     
026260:  42 43 20 3D 20 76 61 6C 75 65 20 66 6F 72 20 74    BC = value for t
026270:  68 65 20 72 65 63 68 61 72 67 65 20 65 6E 74 72    he recharge entr
026280:  79 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20    y..     Exit:.. 
026290:  20 20 20 20 41 46 2C 42 43 2C 44 45 2C 48 4C 20        AF,BC,DE,HL 
0262A0:  63 68 61 6E 67 65 64 2E 0D 0D 20 20 20 20 20 4E    changed...     N
0262B0:  6F 74 65 73 3A 0D 0D 20 20 20 20 20 54 68 65 20    otes:..     The 
0262C0:  74 69 63 6B 20 62 6C 6F 63 6B 20 69 73 20 31 33    tick block is 13
0262D0:  20 62 79 74 65 73 20 20 6C 6F 6E 67 20 20 61 6E     bytes  long  an
0262E0:  64 20 20 6D 75 73 74 20 20 6C 69 65 20 69 6E 20    d  must  lie in 
0262F0:  74 68 65 20 63 65 6E 74 72 61 6C 20 33 32 6B 20    the central 32k 
026300:  6F 66 0D 20 20 20 20 20 6D 65 6D 6F 72 79 2E 20    of.     memory. 
026310:  54 68 65 20 6C 61 73 74 20 37 20 62 79 74 65 73    The last 7 bytes
026320:  20 6F 66 20 20 74 68 65 20 20 74 69 63 6B 20 20     of  the  tick  
026330:  62 6C 6F 63 6B 20 61 72 65 20 61 6E 20 65 76 65    block are an eve
026340:  6E 74 20 62 6C 6F 63 6B 20 77 68 69 63 68 0D 20    nt block which. 
026350:  20 20 20 20 6D 75 73 74 20 62 65 20 69 6E 69 74        must be init
026360:  69 61 6C 69 7A 65 64 20 62 65 66 6F 72 65 20 74    ialized before t
026370:  68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 63    his routine is c
026380:  61 6C 6C 65 64 2E 20 54 68 65 20 65 78 61 63 74    alled. The exact
026390:  20 6C 61 79 6F 75 74 20 6F 66 0D 20 20 20 20 20     layout of.     
0263A0:  61 20 74 69 63 6B 20 62 6C 6F 63 6B 20 69 73 20    a tick block is 
0263B0:  64 65 73 63 72 69 62 65 64 20 6C 61 74 65 72 2E    described later.
0263C0:  0D 0D 20 20 20 20 20 54 68 65 20 63 6F 75 6E 74    ..     The count
0263D0:  20 61 6E 64 20 72 65 63 68 61 72 67 65 20 65 6E     and recharge en
0263E0:  74 72 69 65 73 20 69 6E 20 74 68 65 20 62 6C 6F    tries in the blo
0263F0:  63 6B 20 61 72 65 20 73 65 74 2E 20 54 68 65 20    ck are set. The 
026400:  63 6C 61 73 73 0D 20 20 20 20 20 43 20 3D 20 72    class.     C = r
026410:  6F 6D 20 73 65 6C 65 63 74 20 61 64 64 72 65 73    om select addres
026420:  73 0D 20 20 20 20 20 44 45 20 3D 20 61 64 64 72    s.     DE = addr
026430:  65 73 73 20 6F 66 20 65 76 65 6E 74 20 72 6F 75    ess of event rou
026440:  74 69 6E 65 0D 0D 20 20 20 20 20 45 78 69 74 3A    tine..     Exit:
026450:  0D 0D 20 20 20 20 20 48 4C 20 3D 20 61 64 64 72    ..     HL = addr
026460:  65 73 73 20 6F 66 20 65 76 65 6E 74 20 62 6C 6F    ess of event blo
026470:  63 6B 2B 37 0D 0D 20 20 20 20 20 4E 6F 74 65 73    ck+7..     Notes
026480:  3A 0D 0D 20 20 20 20 20 54 68 65 20 65 76 65 6E    :..     The even
026490:  74 20 62 6C 6F 63 6B 20 69 73 20 37 20 62 79 74    t block is 7 byt
0264A0:  65 73 20 20 6C 6F 6E 67 20 20 61 6E 64 20 20 6D    es  long  and  m
0264B0:  75 73 74 20 20 6C 69 65 20 69 6E 20 74 68 65 20    ust  lie in the 
0264C0:  63 65 6E 74 72 61 6C 20 33 32 6B 20 6F 66 0D 20    central 32k of. 
0264D0:  20 20 20 20 72 61 6D 2E 0D 0D 20 20 20 20 20 54        ram...     T
0264E0:  68 65 20 72 6F 6D 20 73 65 6C 65 63 74 20 61 64    he rom select ad
0264F0:  64 72 65 73 73 20 6F 66 20 74 68 65 20 72 6F 75    dress of the rou
026500:  74 69 6E 65 20 61 72 65 20 74 68 65 20 66 61 72    tine are the far
026510:  20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65 20     address of the 
026520:  65 76 65 6E 74 0D 20 20 20 20 20 72 6F 75 74 69    event.     routi
026530:  6E 65 2E 0D 0D 20 20 20 20 20 54 68 65 20 65 76    ne...     The ev
026540:  65 6E 74 20 63 6C 61 73 73 20 69 73 20 62 69 74    ent class is bit
026550:  20 73 69 67 6E 69 66 69 63 61 6E 74 20 61 73 20     significant as 
026560:  66 6F 6C 6C 6F 77 73 3A 0D 0D 20 20 20 20 20 42    follows:..     B
026570:  69 74 20 30 3A 20 4E 65 61 72 20 61 64 64 72 65    it 0: Near addre
026580:  73 73 0D 20 20 20 20 20 42 69 74 20 31 2E 2E 34    ss.     Bit 1..4
026590:  3A 20 53 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76    : Synchronous ev
0265A0:  65 6E 74 20 70 72 69 6F 72 69 74 79 0D 20 20 20    ent priority.   
0265B0:  20 20 42 69 74 20 35 3A 20 4D 75 73 74 20 62 65      Bit 5: Must be
0265C0:  20 7A 65 72 6F 0D 20 20 20 20 20 42 69 74 20 36     zero.     Bit 6
0265D0:  3A 20 45 78 70 72 65 73 73 20 65 76 65 6E 74 0D    : Express event.
0265E0:  20 20 20 20 20 42 69 74 20 37 3A 20 41 73 79 6E         Bit 7: Asyn
0265F0:  63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 0D 0D    chronous event..
026600:  62 6C 6F 63 6B 20 69 73 20 74 68 65 6E 0D 20 20    block is then.  
026610:  20 20 20 61 70 70 65 6E 20 64 65 64 20 74 6F 20       appen ded to 
026620:  74 68 65 20 74 69 63 6B 20 6C 69 73 74 20 20 69    the tick list  i
026630:  66 20 20 69 74 20 20 69 73 20 20 6E 6F 74 20 20    f  it  is  not  
026640:  61 6C 72 65 61 64 79 20 6F 6E 20 74 68 65 20 6C    already on the l
026650:  69 73 74 2E 20 54 68 69 73 0D 20 20 20 20 20 72    ist. This.     r
026660:  6F 75 74 69 6E 65 20 6D 61 79 20 62 65 20 20 75    outine may be  u
026670:  73 65 64 2C 20 20 74 68 65 72 65 66 6F 72 65 2C    sed,  therefore,
026680:  20 20 74 6F 20 20 63 68 61 6E 67 65 20 20 74 68      to  change  th
026690:  65 20 20 63 6F 75 6E 74 20 61 6E 64 20 72 65 63    e  count and rec
0266A0:  68 61 72 67 65 0D 20 20 20 20 20 65 6E 74 72 69    harge.     entri
0266B0:  65 73 20 6F 66 20 61 6E 20 65 78 69 73 74 69 6E    es of an existin
0266C0:  67 20 62 6C 6F 63 6B 2E 0D 0D 20 20 20 20 20 42    g block...     B
0266D0:  6C 6F 63 6B 73 20 77 69 74 68 20 61 20 20 63 6F    locks with a  co
0266E0:  75 6E 74 20 20 65 6E 74 72 79 20 20 6F 66 20 20    unt  entry  of  
0266F0:  7A 65 72 6F 20 20 61 72 65 20 20 69 67 6E 6F 72    zero  are  ignor
026700:  65 64 20 20 77 68 65 6E 20 20 74 68 65 20 6C 69    ed  when  the li
026710:  73 74 20 69 73 0D 20 20 20 20 20 70 72 6F 63 65    st is.     proce
026720:  73 73 65 64 2E 20 53 65 74 74 69 6E 67 20 61 20    ssed. Setting a 
026730:  72 65 63 68 61 72 67 65 20 76 61 6C 75 65 20 20    recharge value  
026740:  6F 66 20 20 7A 65 72 6F 2C 20 20 74 68 65 72 65    of  zero,  there
026750:  66 6F 72 65 2C 20 73 65 74 73 20 75 70 20 74 68    fore, sets up th
026760:  65 0D 20 20 20 20 20 62 6C 6F 63 6B 20 61 73 20    e.     block as 
026770:  61 20 27 6F 6E 65 20 73 68 6F 74 20 74 69 6D 65    a 'one shot time
026780:  72 27 2E 20 53 69 6E 63 65 20 20 69 74 20 74 61    r'. Since  it ta
026790:  6B 65 73 20 74 68 65 20 4B 65 72 6E 61 6C 20 74    kes the Kernal t
0267A0:  69 6D 65 20 74 6F 20 69 67 6E 6F 72 65 0D 20 20    ime to ignore.  
0267B0:  20 20 20 61 20 74 69 63 6B 20 62 6C 6F 63 6B 2C       a tick block,
0267C0:  20 61 6E 79 20 72 65 64 75 6E 64 61 6E 74 20 62     any redundant b
0267D0:  6C 6F 63 6B 73 20 73 68 6F 75 6C 64 20 20 62 65    locks should  be
0267E0:  20 72 65 6D 6F 76 65 64 20 66 72 6F 6D 20 74 68     removed from th
0267F0:  65 20 6C 69 73 74 20 61 73 0D 20 20 20 20 20 73    e list as.     s
026800:  20 20 20 20 20 49 66 20 74 68 65 20 61 73 79 6E         If the asyn
026810:  63 68 72 6F 6E 6F 75 73 65 20 62 69 74 20 20 69    chronouse bit  i
026820:  73 20 20 73 65 74 20 20 74 68 65 6E 20 20 74 68    s  set  then  th
026830:  65 20 20 65 76 65 6E 74 20 69 73 20 61 6E 20 61    e  event is an a
026840:  73 79 6E 63 68 72 6F 6E 6F 75 73 0D 20 20 20 20    synchronous.    
026850:  20 65 76 65 6E 74 2C 20 6F 74 68 65 72 77 69 73     event, otherwis
026860:  65 20 69 74 20 69 73 20 61 20 73 79 6E 63 68 72    e it is a synchr
026870:  6F 6E 6F 75 73 20 65 76 65 6E 74 2E 20 41 73 79    onous event. Asy
026880:  6E 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 73    nchronous events
026890:  20 64 6F 20 6E 6F 74 0D 20 20 20 20 20 68 61 76     do not.     hav
0268A0:  65 20 70 72 69 6F 72 69 74 69 65 73 20 61 6E 64    e priorities and
0268B0:  20 73 6F 20 74 68 65 20 70 72 69 6F 72 69 74 79     so the priority
0268C0:  20 66 69 65 6C 64 20 69 73 20 69 67 6E 6F 72 65     field is ignore
0268D0:  64 2E 0D 0D 20 20 20 20 20 49 66 20 74 68 65 20    d...     If the 
0268E0:  65 78 70 72 65 73 73 20 65 76 65 6E 74 20 62 69    express event bi
0268F0:  74 20 69 73 20 20 73 65 74 20 20 74 68 65 6E 20    t is  set  then 
026900:  20 74 68 65 20 65 76 65 6E 74 20 69 73 20 61 6E     the event is an
026910:  20 65 78 70 72 65 73 73 20 65 76 65 6E 74 2E 0D     express event..
026920:  20 20 20 20 20 54 68 65 20 6D 65 61 6E 69 6E 67         The meaning
026930:  20 6F 66 20 74 68 69 73 20 64 65 70 65 6E 64 73     of this depends
026940:  20 20 6F 6E 20 20 77 68 65 74 68 65 72 20 20 74      on  whether  t
026950:  68 65 20 20 65 76 65 6E 74 20 69 73 20 73 79 6E    he  event is syn
026960:  63 68 72 6F 6E 6F 75 73 20 6F 72 0D 20 20 20 20    chronous or.    
026970:  20 61 73 79 6E 63 68 72 6F 6E 6F 75 73 2E 0D 0D     asynchronous...
026980:  20 20 20 20 20 41 6C 6C 20 65 78 70 72 65 73 73         All express
026990:  20 73 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65     synchronous eve
0269A0:  6E 74 73 20 68 61 76 65 20 20 68 69 67 68 65 72    nts have  higher
0269B0:  20 70 72 69 6F 72 69 74 69 65 73 20 74 68 61 6E     priorities than
0269C0:  20 61 6E 79 20 6E 6F 72 6D 61 6C 0D 20 20 20 20     any normal.    
0269D0:  20 73 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65     synchronous eve
0269E0:  6E 74 2E 20 54 68 65 20 70 72 69 6F 72 69 74 79    nt. The priority
0269F0:  20 6F 66 20 20 61 20 20 73 79 6E 63 68 72 6F 6E     of  a  synchron
026A00:  6F 6F 6E 20 61 73 20 70 6F 73 73 69 62 6C 65 2E    oon as possible.
026A10:  0D 0D 20 20 20 20 20 49 74 20 69 73 20 6E 6F 74    ..     It is not
026A20:  20 70 6F 73 73 69 62 6C 65 20 74 6F 20 20 70 72     possible to  pr
026A30:  65 64 69 63 74 2C 20 20 70 61 72 74 69 63 75 6C    edict,  particul
026A40:  61 72 6C 79 20 77 69 74 68 20 73 79 6E 63 68 72    arly with synchr
026A50:  6F 6E 6F 75 73 20 65 76 65 6E 74 73 2C 0D 20 20    onous events,.  
026A60:  20 20 20 68 6F 77 20 6C 6F 6E 67 20 69 74 20 20       how long it  
026A70:  77 69 6C 6C 20 20 62 65 20 20 61 66 74 65 72 20    will  be  after 
026A80:  20 74 68 65 20 20 6B 69 63 6B 20 20 62 65 66 6F     the  kick  befo
026A90:  72 65 20 20 74 68 65 20 20 65 76 65 6E 74 20 72    re  the  event r
026AA0:  6F 75 74 69 6E 65 20 69 73 0D 20 20 20 20 20 61    outine is.     a
026AB0:  63 74 75 61 6C 6C 79 20 63 61 6C 6C 65 64 2E 20    ctually called. 
026AC0:  6E 6F 74 77 69 74 68 73 74 61 6E 64 69 6E 67 20    notwithstanding 
026AD0:  74 68 65 73 65 20 64 65 6C 61 79 73 2C 20 20 74    these delays,  t
026AE0:  68 65 20 74 69 63 6B 65 72 20 6D 61 79 20 62 65    he ticker may be
026AF0:  20 75 73 65 64 0D 20 20 20 20 20 74 6F 20 6F 62     used.     to ob
026B00:  74 61 69 6E 20 61 6E 20 20 65 78 61 63 74 20 20    tain an  exact  
026B10:  6E 75 6D 62 65 72 20 20 6F 66 20 20 6B 69 63 6B    number  of  kick
026B20:  73 20 20 69 6E 20 20 61 20 20 67 69 76 65 6E 20    s  in  a  given 
026B30:  20 70 65 72 69 6F 64 20 73 69 6E 63 65 20 74 68     period since th
026B40:  65 0D 20 20 20 20 20 72 65 63 68 61 72 67 65 20    e.     recharge 
026B50:  6D 65 63 68 61 6E 69 73 6D 20 69 6D 6D 65 64 69    mechanism immedi
026B60:  61 74 6C 79 20 20 72 65 73 65 74 73 20 20 74 68    atly  resets  th
026B70:  65 20 20 63 6F 75 6E 74 2E 20 20 54 68 65 20 65    e  count.  The e
026B80:  76 65 6E 74 20 63 6F 75 6E 74 69 6E 67 0D 20 20    vent counting.  
026B90:  20 20 20 6D 65 63 68 61 6E 69 73 6D 20 77 69 6C       mechanism wil
026BA0:  6C 20 65 6E 73 75 72 65 20 74 68 61 74 20 6B 69    l ensure that ki
026BB0:  63 6B 73 20 20 61 72 65 20 20 6E 6F 74 20 6D 69    cks  are  not mi
026BC0:  73 73 65 64 2C 20 70 72 6F 76 69 64 65 64 20 74    ssed, provided t
026BD0:  68 61 74 20 74 68 65 72 65 0D 20 20 20 20 20 61    hat there.     a
026BE0:  72 65 20 6E 65 76 65 72 20 6D 6F 72 65 20 74 68    re never more th
026BF0:  61 6E 20 31 32 37 20 6F 75 74 73 74 61 6E 64 69    an 127 outstandi
026C00:  6F 75 73 20 65 76 65 6E 74 20 69 73 20 65 6E 63    ous event is enc
026C10:  6F 64 65 64 20 69 6E 0D 20 20 20 20 20 62 69 74    oded in.     bit
026C20:  73 20 31 2E 2E 34 20 20 6F 66 20 20 74 68 65 20    s 1..4  of  the 
026C30:  20 63 6C 61 73 73 2C 20 20 74 68 65 20 20 68 69     class,  the  hi
026C40:  67 68 65 72 20 20 74 68 65 20 20 6E 75 6D 62 65    gher  the  numbe
026C50:  72 20 20 74 68 65 20 20 67 72 65 61 74 65 72 20    r  the  greater 
026C60:  74 68 65 0D 20 20 20 20 20 70 72 69 6F 72 69 74    the.     priorit
026C70:  79 2E 20 4E 6F 20 65 76 65 6E 74 20 20 6D 61 79    y. No event  may
026C80:  20 20 68 61 76 65 20 20 70 72 69 6F 72 69 74 79      have  priority
026C90:  20 20 30 2E 20 20 54 68 65 20 20 70 72 6F 63 65      0.  The  proce
026CA0:  73 73 69 6E 67 20 6F 66 20 6E 6F 72 6D 61 6C 0D    ssing of normal.
026CB0:  20 20 20 20 20 73 79 6E 63 68 72 6F 6E 6F 75 73         synchronous
026CC0:  20 65 76 65 6E 74 73 20 6D 61 79 20 62 65 20 64     events may be d
026CD0:  69 73 61 62 6C 65 64 2C 20 20 77 68 69 6C 65 20    isabled,  while 
026CE0:  74 68 61 74 20 6F 66 20 65 78 70 72 65 73 73 20    that of express 
026CF0:  73 79 6E 63 68 72 6F 6E 6F 75 73 0D 20 20 20 20    synchronous.    
026D00:  20 65 76 65 6E 74 73 20 6D 61 79 20 6E 6F 74 2E     events may not.
026D10:  0D 0D 20 20 20 20 20 41 6E 20 65 78 70 72 65 73    ..     An expres
026D20:  73 20 61 73 79 6E 63 68 72 6F 6E 6F 75 73 20 20    s asynchronous  
026D30:  65 76 65 6E 74 20 20 77 69 6C 6C 20 20 68 61 76    event  will  hav
026D40:  65 20 20 69 74 73 20 20 65 76 65 6E 74 20 20 72    e  its  event  r
026D50:  6F 75 74 69 6E 65 20 63 61 6C 6C 65 64 0D 20 20    outine called.  
026D60:  20 20 20 64 69 72 65 63 74 6C 79 20 66 72 6F 6D       directly from
026D70:  20 20 74 68 65 20 20 69 6E 74 65 72 75 70 74 20      the  interupt 
026D80:  20 70 61 74 68 2E 20 20 41 20 20 6E 6F 72 6D 61     path.  A  norma
026D90:  6C 20 20 61 73 79 6E 63 68 72 6F 6E 6F 75 73 20    l  asynchronous 
026DA0:  20 65 76 65 6E 74 20 69 73 0D 20 20 20 20 20 70     event is.     p
026DB0:  72 6F 63 65 73 73 65 64 20 6A 75 73 74 20 62 65    rocessed just be
026DC0:  66 6F 72 65 20 20 72 65 74 75 72 6E 69 6E 67 20    fore  returning 
026DD0:  20 66 72 6F 6D 20 20 74 68 65 20 20 69 6E 74 65     from  the  inte
026DE0:  72 75 70 74 20 20 28 77 69 74 68 20 69 6E 74 65    rupt  (with inte
026DF0:  72 75 70 74 73 0D 20 20 20 20 20 65 6E 61 62 6C    rupts.     enabl
026E00:  6E 67 20 61 74 20 6F 6E 63 65 2E 0D 0D 20 20 20    ng at once...   
026E10:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 65      This routine e
026E20:  6E 61 62 6C 65 73 20 69 6E 74 65 72 75 70 74 73    nables interupts
026E30:  2E 0D 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D    ....     -------
026E40:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
026E50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
026E60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
026E70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20    --------------. 
026E80:  20 20 20 20 2D 0D 0D 20 20 20 20 20 26 42 43 45        -..     &BCE
026E90:  43 20 2D 20 4B 4C 20 44 45 4C 20 54 49 43 4B 45    C - KL DEL TICKE
026EA0:  52 20 2D 20 52 65 6D 6F 76 65 20 61 20 62 6C 6F    R - Remove a blo
026EB0:  63 6B 20 66 72 6F 6D 20 74 68 65 20 74 69 63 6B    ck from the tick
026EC0:  20 6C 69 73 74 0D 0D 0D 20 20 20 20 20 45 6E 74     list...     Ent
026ED0:  72 79 3A 0D 0D 20 20 20 20 20 48 4C 20 3D 20 61    ry:..     HL = a
026EE0:  64 64 72 65 73 73 20 6F 66 20 74 69 63 6B 20 62    ddress of tick b
026EF0:  6C 6F 63 6B 0D 0D 20 20 20 20 20 45 78 69 74 3A    lock..     Exit:
026F00:  0D 0D 20 20 20 20 20 49 66 20 74 68 65 20 74 69    ..     If the ti
026F10:  63 6B 20 62 6C 6F 63 6B 20 77 61 73 20 66 6F 75    ck block was fou
026F20:  6E 64 20 6F 6E 20 74 68 65 20 74 69 63 6B 20 6C    nd on the tick l
026F30:  69 73 74 3A 0D 0D 20 20 20 20 20 43 61 72 72 79    ist:..     Carry
026F40:  20 74 72 75 65 2E 20 44 45 20 3D 20 63 6F 75 6E     true. DE = coun
026F50:  74 20 72 65 6D 61 69 6E 69 6E 67 20 62 65 66 6F    t remaining befo
026F60:  72 65 20 74 68 65 20 6E 65 78 74 20 65 76 65 6E    re the next even
026F70:  74 0D 0D 20 20 20 20 20 49 66 20 74 68 65 20 74    t..     If the t
026F80:  69 63 6B 20 62 6C 6F 63 6B 20 77 61 73 20 6E 6F    ick block was no
026F90:  74 20 66 6F 75 6E 64 20 6F 6E 20 74 68 65 20 74    t found on the t
026FA0:  69 63 6B 20 6C 69 73 74 3A 0D 0D 20 20 20 20 20    ick list:..     
026FB0:  43 61 72 72 79 20 66 61 6C 73 65 2E 20 44 45 20    Carry false. DE 
026FC0:  63 68 61 6E 67 65 64 2E 0D 0D 20 20 20 20 20 41    changed...     A
026FD0:  2C 48 4C 20 61 6E 64 20 6F 74 68 65 72 20 66 6C    ,HL and other fl
026FE0:  61 67 73 20 63 68 61 6E 67 65 64 2E 0D 0D 20 20    ags changed...  
026FF0:  20 20 20 4E 6F 74 65 73 3A 0D 0D 0D 0D 0D 0D 0D       Notes:.......
027000:  65 64 29 2E 0D 0D 20 20 20 20 20 49 66 20 74 68    ed)...     If th
027010:  65 20 6E 65 61 72 20 61 64 64 72 65 73 73 20 20    e near address  
027020:  62 69 74 20 20 69 73 20 20 73 65 74 20 20 74 68    bit  is  set  th
027030:  65 6E 20 20 74 68 65 20 20 65 76 65 6E 74 20 72    en  the  event r
027040:  6F 75 74 69 6E 65 20 69 73 20 6C 6F 63 61 74 65    outine is locate
027050:  64 0D 20 20 20 20 20 65 69 74 68 65 72 20 69 6E    d.     either in
027060:  20 74 68 65 20 6C 6F 77 65 72 20 72 6F 6D 20 20     the lower rom  
027070:  6F 72 20 20 69 6E 20 20 74 68 65 20 20 63 65 6E    or  in  the  cen
027080:  74 72 61 6C 20 20 33 32 6B 20 72 61 6D 2E 20 54    tral  32k ram. T
027090:  68 65 20 72 6F 6D 20 73 65 6C 65 63 74 0D 0D 0D    he rom select...
0270A0:  0D 0D 0D 0D 20 20 20 20 20 61 64 64 72 65 73 73    ....     address
0270B0:  20 69 73 20 69 67 6E 6F 72 65 64 20 61 6E 64 20     is ignored and 
0270C0:  20 74 68 65 20 20 72 6F 75 74 69 6E 65 20 20 69     the  routine  i
0270D0:  73 20 20 63 61 6C 6C 65 64 20 20 64 69 72 65 63    s  called  direc
0270E0:  74 6C 79 20 72 61 74 68 65 72 20 74 68 61 6E 0D    tly rather than.
0270F0:  20 20 20 20 20 74 68 72 6F 75 67 68 20 74 68 65         through the
027100:  20 46 41 52 20 43 41 4C 4C 20 20 6D 65 63 68 61     FAR CALL  mecha
027110:  6E 69 73 6D 2C 20 20 74 68 75 73 20 20 72 65 64    nism,  thus  red
027120:  75 63 69 6E 67 20 20 74 68 65 20 65 76 65 6E 74    ucing  the event
027130:  20 70 72 6F 63 65 73 73 69 6E 67 0D 20 20 20 20     processing.    
027140:  20 6F 76 65 72 68 65 61 64 2E 20 57 68 65 72 65     overhead. Where
027150:  20 20 70 6F 73 73 69 62 6C 65 2C 20 20 61 73 79      possible,  asy
027160:  6E 63 68 72 6F 6E 6F 75 73 20 20 65 76 65 6E 74    nchronous  event
027170:  73 20 20 73 68 6F 75 6C 64 20 20 62 65 20 20 61    s  should  be  a
027180:  74 20 20 6E 65 61 72 0D 20 20 20 20 20 61 64 64    t  near.     add
027190:  72 65 73 73 65 73 2E 20 20 45 78 70 72 65 73 73    resses.  Express
0271A0:  20 20 61 73 79 6E 63 68 72 6F 6E 6F 75 73 20 20      asynchronous  
0271B0:  65 76 65 6E 74 73 20 20 6D 75 73 74 20 20 61 6C    events  must  al
0271C0:  77 61 79 73 20 20 62 65 20 20 61 74 20 20 27 6E    ways  be  at  'n
0271D0:  65 61 72 0D 20 20 20 20 20 61 64 64 72 65 73 73    ear.     address
0271E0:  65 73 27 2E 0D 0D 20 20 20 20 20 45 76 65 6E 74    es'...     Event
0271F0:  20 62 6C 6F 63 6B 73 20 61 70 70 65 61 72 20 69     blocks appear i
027200:  0D 20 20 20 20 20 54 68 65 20 63 6F 6E 74 65 6E    .     The conten
027210:  74 73 20 6F 66 20 74 68 65 20 62 6C 6F 63 6B 20    ts of the block 
027220:  20 61 72 65 20 20 6E 6F 74 20 20 61 66 66 65 63     are  not  affec
027230:  74 65 64 20 20 62 79 20 72 65 6D 6F 76 69 6E 67    ted  by removing
027240:  20 69 74 20 66 72 6F 6D 20 74 68 65 0D 20 20 20     it from the.   
027250:  20 20 6C 69 73 74 2E 20 49 6E 20 70 61 72 74 69      list. In parti
027260:  63 75 6C 61 72 20 74 68 65 20 63 6F 6E 74 69 6E    cular the contin
027270:  75 65 64 20 20 70 72 6F 63 65 73 73 69 6E 67 20    ued  processing 
027280:  6F 66 20 6F 75 74 73 74 61 6E 64 69 6E 67 20 65    of outstanding e
027290:  76 65 6E 74 73 20 69 73 0D 20 20 20 20 20 6E 6F    vents is.     no
0272A0:  74 20 61 66 66 65 63 74 65 64 2E 20 54 68 65 20    t affected. The 
0272B0:  62 6C 6F 63 6B 20 63 6F 75 6C 64 20 62 65 20 70    block could be p
0272C0:  75 74 20 62 61 63 6B 20 20 6F 6E 20 74 68 65 20    ut back  on the 
0272D0:  6C 69 73 74 20 61 74 20 61 20 6C 61 74 65 72 20    list at a later 
0272E0:  64 61 74 65 0D 20 20 20 20 20 61 6E 64 20 69 74    date.     and it
0272F0:  20 63 6F 75 6C 64 20 63 6F 6E 74 69 6E 75 65 20     could continue 
027300:  63 6F 75 6E 74 69 6E 67 20 77 68 65 72 65 20 69    counting where i
027310:  74 20 6C 65 66 74 20 6F 66 66 2E 0D 0D 20 20 20    t left off...   
027320:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 65      This routine e
027330:  6E 61 62 6C 65 73 20 69 6E 74 65 72 75 70 74 73    nables interupts
027340:  2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D    ...     --------
027350:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
027360:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
027370:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
027380:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 20    -------------.  
027390:  20 20 20 26 42 43 45 46 20 2D 20 4B 4C 20 49 4E       &BCEF - KL IN
0273A0:  49 54 20 45 56 45 4E 54 20 2D 20 49 6E 69 74 69    IT EVENT - Initi
0273B0:  61 6C 69 7A 65 20 65 76 65 6E 74 20 62 6C 6F 63    alize event bloc
0273C0:  6B 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D    k..     Entry:..
0273D0:  20 20 20 20 20 48 4C 20 3D 20 61 64 64 72 65 73         HL = addres
0273E0:  73 20 6F 66 20 65 76 65 6E 74 20 62 6C 6F 63 6B    s of event block
0273F0:  0D 20 20 20 20 20 42 20 3D 20 65 76 65 6E 74 20    .     B = event 
027400:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
027410:  21 00 01 00 02 09 4E E5 21 00 C1 02 00 00 00 02    !.....N.!.......
027420:  21 00 C6 02 00 00 00 02 21 00 C2 02 00 00 00 02    !.......!.......
027430:  21 00 C7 02 00 00 00 02 21 00 C3 02 00 00 00 02    !.......!.......
027440:  21 00 C8 02 00 00 00 02 21 00 C4 02 00 00 00 02    !.......!.......
027450:  21 00 C9 02 00 00 00 02 21 00 C5 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:  6E 20 20 76 61 72 69 6F 75 73 20 20 6F 74 68 65    n  various  othe
027510:  72 20 20 62 6C 6F 63 6B 73 20 20 68 61 6E 64 6C    r  blocks  handl
027520:  65 64 20 62 79 20 74 68 65 20 4B 65 72 6E 65 6C    ed by the Kernel
027530:  2C 0D 20 20 20 20 20 69 6E 63 6C 75 64 69 6E 67    ,.     including
027540:  20 66 72 61 6D 65 20 66 6C 79 62 61 63 6B 2C 66     frame flyback,f
027550:  61 73 74 20 74 69 63 6B 65 72 20 61 6E 64 20 20    ast ticker and  
027560:  74 69 63 6B 20 20 62 6C 6F 63 6B 73 2E 20 54 68    tick  blocks. Th
027570:  69 73 20 72 6F 75 74 69 6E 65 20 69 73 0D 20 20    is routine is.  
027580:  20 20 20 75 73 65 64 20 74 6F 20 69 6E 69 74 69       used to initi
027590:  61 6C 69 7A 65 20 74 68 65 20 65 76 65 6E 74 20    alize the event 
0275A0:  62 6C 6F 63 6B 20 70 61 72 74 73 20 6F 66 20 74    block parts of t
0275B0:  68 65 73 65 2E 0D 0D 20 20 20 20 20 54 68 65 20    hese...     The 
0275C0:  62 79 74 65 73 20 61 66 74 65 72 20 74 68 65 20    bytes after the 
0275D0:  6C 61 73 74 20 62 79 74 65 20 6F 66 20 74 68 65    last byte of the
0275E0:  20 65 76 65 6E 74 20 62 6C 6F 63 6B 2C 20 65 76     event block, ev
0275F0:  65 6E 20 77 68 65 72 65 20 74 68 65 20 62 6C 6F    en where the blo
027600:  63 6B 0D 20 20 20 20 20 66 6F 72 6D 73 20 70 61    ck.     forms pa
027610:  72 74 20 6F 66 20 61 6E 6F 74 68 65 72 20 62 6C    rt of another bl
027620:  6F 63 6B 2C 20 20 61 72 65 20 20 6E 6F 74 20 20    ock,  are  not  
027630:  75 73 65 64 20 20 62 79 20 20 74 68 65 20 4B 65    used  by  the Ke
027640:  72 6E 65 6C 2E 20 57 68 65 6E 20 74 68 65 0D 20    rnel. When the. 
027650:  20 20 20 20 65 76 65 6E 74 20 72 6F 75 74 69 6E        event routin
027660:  65 20 69 73 20 63 61 6C 6C 65 64 20 74 68 65 20    e is called the 
027670:  61 64 64 72 65 73 73 20 6F 66 20 20 74 68 65 20    address of  the 
027680:  20 62 6C 6F 63 6B 20 69 73 20 70 61 73 73 65 64     block is passed
027690:  20 74 6F 20 69 74 2C 20 73 6F 0D 20 20 20 20 20     to it, so.     
0276A0:  74 68 65 20 75 73 65 72 20 6D 61 79 20 61 70 70    the user may app
0276B0:  65 6E 64 20 66 75 72 74 68 75 72 20 69 6E 66 6F    end furthur info
0276C0:  72 6D 61 74 69 6F 6E 20 20 61 62 6F 75 74 20 74    rmation  about t
0276D0:  68 65 20 65 76 65 6E 74 20 74 6F 20 74 68 65 20    he event to the 
0276E0:  62 6C 6F 63 6B 2E 0D 20 20 20 20 20 54 68 69 73    block..     This
0276F0:  20 61 6C 6C 6F 77 73 20 73 65 76 65 72 61 6C 20     allows several 
027700:  6C 65 73 73 20 69 74 20 68 61 73 0D 20 20 20 20    less it has.    
027710:  20 61 6C 72 65 61 64 79 20 72 65 61 63 68 65 64     already reached
027720:  20 74 68 65 20 6D 61 78 69 6D 75 6D 20 6F 66 20     the maximum of 
027730:  20 31 32 37 29 2E 20 20 4F 6E 63 65 20 65 76 65     127).  Once eve
027740:  6E 74 20 70 72 6F 63 65 73 73 69 6E 67 20 68 61    nt processing ha
027750:  73 20 62 65 67 75 6E 0D 20 20 20 20 20 69 74 20    s begun.     it 
027760:  63 6F 6E 74 69 6E 75 65 73 20 75 6E 74 69 6C 20    continues until 
027770:  74 68 65 20 63 6F 75 6E 74 20 62 65 63 6F 6D 65    the count become
027780:  73 20 7A 65 72 6F 20 6F 72 20 74 68 65 20 65 76    s zero or the ev
027790:  65 6E 74 20 69 73 20 64 69 73 61 72 6D 65 64 2E    ent is disarmed.
0277A0:  0D 20 20 20 20 20 63 6F 75 6E 74 3D 30 20 20 20    .     count=0   
0277B0:  20 20 20 20 20 20 54 68 65 20 65 76 65 6E 74 20          The event 
0277C0:  69 73 20 61 72 6D 65 64 20 62 75 74 20 65 76 65    is armed but eve
0277D0:  6E 74 20 70 72 6F 63 65 73 73 69 6E 67 20 69 73    nt processing is
0277E0:  20 6E 6F 74 20 61 63 74 69 76 65 0D 20 20 20 20     not active.    
0277F0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
027800:  20 54 68 65 20 63 6F 75 6E 74 20 20 69 73 20 20     The count  is  
027810:  69 6E 63 72 65 6D 65 6E 74 65 64 20 20 61 6E 64    incremented  and
027820:  20 20 74 68 65 20 20 65 76 65 6E 74 20 70 72 6F      the  event pro
027830:  63 65 73 73 69 6E 67 0D 20 20 20 20 20 69 6E 69    cessing.     ini
027840:  74 69 61 74 65 64 2E 0D 0D 20 20 20 20 20 48 6F    tiated...     Ho
027850:  77 20 65 76 65 6E 74 20 70 72 6F 63 65 73 73 69    w event processi
027860:  6E 67 20 69 73 20 69 6E 69 74 69 61 74 65 64 20    ng is initiated 
027870:  64 65 70 65 6E 64 73 20 6F 6E 20 74 68 65 20 65    depends on the e
027880:  76 65 6E 74 20 63 6C 61 73 73 3A 0D 0D 20 20 20    vent class:..   
027890:  20 20 53 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76      Synchronous ev
0278A0:  65 6E 74 73 0D 0D 20 20 20 20 20 53 79 6E 63 68    ents..     Synch
0278B0:  72 6F 6E 6F 75 73 20 65 76 65 6E 74 73 20 61 72    ronous events ar
0278C0:  65 20 61 64 64 65 64 20 74 6F 20 74 68 65 20 73    e added to the s
0278D0:  79 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 20    ychronous event 
0278E0:  71 75 65 75 65 20 69 6E 20 70 72 69 6F 72 69 74    queue in priorit
0278F0:  79 0D 20 20 20 20 20 6F 72 64 65 72 2E 20 49 74    y.     order. It
027900:  73 69 6D 69 6C 61 72 20 65 76 65 6E 74 73 20 20    similar events  
027910:  74 6F 20 20 73 68 61 72 65 20 20 74 68 65 20 73    to  share  the s
027920:  61 6D 65 20 65 76 65 6E 74 20 72 6F 75 74 69 6E    ame event routin
027930:  65 2C 0D 20 20 20 20 20 65 61 63 68 20 65 76 65    e,.     each eve
027940:  6E 74 20 68 61 76 69 6E 67 20 69 74 73 20 6F 77    nt having its ow
027950:  6E 20 76 61 72 69 61 62 6C 65 73 20 64 65 70 65    n variables depe
027960:  6E 64 69 6E 67 20 6F 6E 20 69 74 73 20 65 76 65    nding on its eve
027970:  6E 74 20 62 6C 6F 63 6B 2E 0D 0D 20 20 20 20 20    nt block...     
027980:  45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 49 66 20    Entry:..     If 
027990:  74 68 65 20 65 76 65 6E 74 20 72 6F 75 74 69 6E    the event routin
0279A0:  65 20 69 73 20 61 74 20 61 20 66 61 72 20 61 64    e is at a far ad
0279B0:  64 72 65 73 73 3A 0D 0D 20 20 20 20 20 48 4C 20    dress:..     HL 
0279C0:  3D 20 61 64 64 72 65 73 73 20 6F 66 20 62 79 74    = address of byt
0279D0:  65 20 35 20 6F 66 20 74 68 65 20 65 76 65 6E 74    e 5 of the event
0279E0:  20 62 6C 6F 63 6B 0D 20 20 20 20 20 28 73 6F 20     block.     (so 
0279F0:  61 6E 79 20 61 70 70 65 6E 64 65 64 20 64 61 74    any appended dat
027A00:  61 20 63 61 6E 20 73 74 61 72 74 20 61 74 20 61    a can start at a
027A10:  64 64 72 65 73 73 20 68 6C 2B 32 29 0D 0D 20 20    ddress hl+2)..  
027A20:  20 20 20 69 66 20 74 68 65 20 65 76 65 6E 20 72       if the even r
027A30:  6F 75 74 69 6E 65 20 69 73 20 61 74 20 61 20 6E    outine is at a n
027A40:  65 61 72 20 61 64 64 72 65 73 73 3A 0D 0D 20 20    ear address:..  
027A50:  20 20 20 64 65 3D 61 64 64 72 65 73 73 20 6F 66       de=address of
027A60:  20 62 79 74 65 20 36 20 6F 66 20 74 68 65 20 65     byte 6 of the e
027A70:  76 65 6E 74 20 62 6C 6F 63 6B 2E 0D 20 20 20 20    vent block..    
027A80:  20 28 73 6F 20 61 6E 79 20 61 70 70 65 6E 64 65     (so any appende
027A90:  64 20 64 61 74 61 20 63 61 6E 20 73 74 61 72 74    d data can start
027AA0:  20 61 74 20 61 64 64 72 65 73 73 20 44 45 2B 31     at address DE+1
027AB0:  29 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20    )..     Exit:.. 
027AC0:  20 20 20 20 41 46 2C 42 43 2C 44 45 2C 48 4C 20        AF,BC,DE,HL 
027AD0:  63 68 61 6E 67 65 64 2E 0D 0D 20 20 20 20 20 54    changed...     T
027AE0:  68 65 20 65 76 65 6E 74 20 72 6F 75 74 69 6E 65    he event routine
027AF0:  20 6D 61 79 20 75 73 65 20 74 68 65 20 20 49 58     may use the  IX
027B00:  20 69 73 20 74 68 65 20 72 65 73 70 6F 6E 73 69     is the responsi
027B10:  62 69 6C 69 74 79 20 20 6F 66 20 20 74 68 65 20    bility  of  the 
027B20:  66 6F 72 65 67 72 6F 75 6E 64 20 70 72 6F 67 72    foreground progr
027B30:  61 6D 20 74 6F 20 70 72 6F 63 65 73 73 0D 20 20    am to process.  
027B40:  20 20 20 74 68 65 20 73 79 6E 63 68 72 6F 6E 6F       the synchrono
027B50:  75 73 20 65 76 65 6E 74 20 71 75 65 75 65 20 72    us event queue r
027B60:  65 67 75 61 72 6C 79 2E 0D 0D 20 20 20 20 20 53    eguarly...     S
027B70:  79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74    ynchronous event
027B80:  20 72 6F 75 74 69 6E 65 73 20 20 61 72 65 20 20     routines  are  
027B90:  63 61 6C 6C 65 64 20 20 77 68 65 6E 20 20 74 68    called  when  th
027BA0:  65 20 20 66 6F 72 65 67 72 6F 75 6E 64 20 70 72    e  foreground pr
027BB0:  6F 67 72 61 6D 0D 20 20 20 20 20 63 61 6C 6C 73    ogram.     calls
027BC0:  20 4B 4C 20 44 4F 20 53 59 4E 43 2C 20 74 68 65     KL DO SYNC, the
027BD0:  20 65 76 65 6E 74 20 63 6F 75 6E 74 20 69 73 20     event count is 
027BE0:  74 68 65 6E 20 64 65 61 6C 74 20 77 69 74 68 20    then dealt with 
027BF0:  77 68 65 6E 20 4B 4C 20 44 4F 4E 45 20 53 59 4E    when KL DONE SYN
027C00:  43 0D 20 20 20 20 20 69 73 20 63 61 6C 6C 65 64    C.     is called
027C10:  2E 0D 0D 20 20 20 20 20 41 73 79 6E 63 68 72 6F    ...     Asynchro
027C20:  6E 6F 75 73 20 65 76 65 6E 74 73 0D 0D 20 20 20    nous events..   
027C30:  20 20 61 2E 20 4E 6F 74 20 69 6E 20 74 68 65 20      a. Not in the 
027C40:  69 6E 74 65 72 75 70 74 20 70 61 74 68 0D 0D 20    interupt path.. 
027C50:  20 20 20 20 54 68 65 20 65 76 65 6E 74 20 72 6F        The event ro
027C60:  75 74 69 6E 65 20 69 73 20 63 61 6C 6C 65 64 20    utine is called 
027C70:  20 69 6D 6D 65 64 69 61 74 6C 79 2E 20 20 57 68     immediatly.  Wh
027C80:  65 6E 20 74 68 65 20 72 6F 75 74 69 6E 65 20 72    en the routine r
027C90:  65 74 75 72 6E 73 2C 20 69 66 0D 20 20 20 20 20    eturns, if.     
027CA0:  74 68 65 20 65 76 65 6E 74 20 63 6F 75 6E 74 20    the event count 
027CB0:  67 72 65 61 74 65 72 20 74 68 61 6E 20 7A 65 72    greater than zer
027CC0:  6F 20 20 69 74 20 20 69 73 20 64 65 63 72 65 6D    o  it  is decrem
027CD0:  65 6E 74 65 64 2E 20 49 66 20 74 68 65 20 63 6F    ented. If the co
027CE0:  75 6E 74 20 69 73 0D 20 20 20 20 20 73 74 69 6C    unt is.     stil
027CF0:  6C 20 67 72 65 61 74 65 72 20 74 68 61 6E 20 7A    l greater than z
027D00:  20 20 61 6E 64 20 20 49 59 20 72 65 67 69 73 74      and  IY regist
027D10:  65 72 73 20 62 75 74 20 6D 75 73 74 20 70 72 65    ers but must pre
027D20:  73 65 72 76 65 0D 20 20 20 20 20 74 68 65 6D 2E    serve.     them.
027D30:  20 49 74 20 6D 61 79 20 6E 6F 74 20 20 75 73 65     It may not  use
027D40:  20 20 74 68 65 20 20 73 65 63 6F 6E 64 20 20 72      the  second  r
027D50:  65 67 69 73 74 65 72 20 73 65 74 2E 20 45 78 70    egister set. Exp
027D60:  72 65 73 73 20 61 73 79 6E 63 68 72 6F 6E 6F 75    ress asynchronou
027D70:  73 0D 20 20 20 20 20 65 76 65 6E 74 73 20 6D 61    s.     events ma
027D80:  79 20 6E 6F 74 20 65 6E 61 62 6C 65 20 69 6E 74    y not enable int
027D90:  65 72 75 70 74 73 2E 0D 0D 20 20 20 20 20 54 68    erupts...     Th
027DA0:  69 73 20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C    is routine enabl
027DB0:  65 73 20 69 6E 74 65 72 75 70 74 73 2E 0D 0D 20    es interupts... 
027DC0:  20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D        ------------
027DD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
027DE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
027DF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
027E00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 20 20 20    -----------.    
027E10:  20 26 42 43 46 32 20 2D 20 4B 4C 20 45 56 45 4E     &BCF2 - KL EVEN
027E20:  54 20 2D 20 4B 69 63 6B 20 61 6E 20 65 76 65 6E    T - Kick an even
027E30:  74 20 62 6C 6F 63 6B 0D 0D 20 20 20 20 20 45 6E    t block..     En
027E40:  74 72 79 3A 0D 0D 20 20 20 20 20 48 4C 20 3D 20    try:..     HL = 
027E50:  61 64 64 72 65 73 73 20 20 6F 66 20 65 76 65 6E    address  of even
027E60:  74 20 62 6C 6F 63 6B 0D 0D 20 20 20 20 20 45 78    t block..     Ex
027E70:  69 74 3A 0D 0D 20 20 20 20 20 41 46 2C 42 43 2C    it:..     AF,BC,
027E80:  44 45 2C 48 4C 20 63 68 61 6E 67 65 64 2E 0D 0D    DE,HL changed...
027E90:  20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20         Notes:..   
027EA0:  20 20 55 6E 6C 69 6B 65 20 74 68 65 20 76 61 73      Unlike the vas
027EB0:  74 20 6D 61 6A 6F 72 69 74 79 20 6F 66 20 4B 65    t majority of Ke
027EC0:  72 6E 65 6C 20 72 6F 75 74 69 6E 65 73 20 74 68    rnel routines th
027ED0:  69 73 20 72 6F 75 74 69 6E 65 20 6D 61 79 20 62    is routine may b
027EE0:  65 20 63 61 6C 6C 65 64 0D 20 20 20 20 20 66 72    e called.     fr
027EF0:  6F 6D 20 74 68 65 20 69 6E 74 65 72 75 70 74 20    om the interupt 
027F00:  65 72 6F 20 74 68 65 6E 20 74 68 65 20 70 72 6F    ero then the pro
027F10:  63 65 64 75 72 65 20 69 73 20 72 65 70 65 61 74    cedure is repeat
027F20:  65 64 2E 0D 0D 20 20 20 20 20 62 2E 20 49 6E 20    ed...     b. In 
027F30:  74 68 65 20 69 6E 74 65 72 75 70 74 20 70 61 74    the interupt pat
027F40:  68 20 2D 20 4E 6F 72 6D 61 6C 20 41 73 79 6E 63    h - Normal Async
027F50:  68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 0D 0D 20    hronous event.. 
027F60:  20 20 20 20 54 68 65 20 65 76 65 6E 74 20 69 73        The event is
027F70:  20 70 6C 61 63 65 64 20 6F 6E 20 74 68 65 20 69     placed on the i
027F80:  6E 74 65 72 75 70 74 20 20 65 76 65 6E 74 20 70    nterupt  event p
027F90:  65 6E 64 69 6E 67 20 71 75 65 75 65 2E 20 4F 6E    ending queue. On
027FA0:  20 65 78 69 74 20 66 72 6F 6D 0D 20 20 20 20 20     exit from.     
027FB0:  74 68 65 20 69 6E 74 65 72 75 70 74 20 70 61 74    the interupt pat
027FC0:  68 20 74 68 65 20 20 4B 65 72 6E 65 6C 20 20 70    h the  Kernel  p
027FD0:  72 6F 63 65 73 73 65 73 20 20 61 6C 6C 20 20 65    rocesses  all  e
027FE0:  76 65 6E 74 73 20 20 6F 6E 20 74 68 65 20 69 6E    vents  on the in
027FF0:  74 65 72 75 70 74 0D 20 20 20 20 20 70 65 6E 64    terupt.     pend
028000:  69 6E 67 20 71 75 65 75 65 20 61 73 20 20 64 65    ing queue as  de
028010:  73 63 72 69 62 65 64 20 20 69 6E 20 20 28 61 29    scribed  in  (a)
028020:  20 20 61 62 6F 76 65 2E 20 20 54 68 69 73 20 20      above.  This  
028030:  6D 65 61 6E 73 20 20 74 68 61 74 20 6E 6F 72 6D    means  that norm
028040:  61 6C 0D 20 20 20 20 20 41 73 79 6E 63 68 72 6F    al.     Asynchro
028050:  6E 6F 75 73 20 65 76 65 6E 74 20 72 6F 75 74 69    nous event routi
028060:  6E 65 73 20 61 72 65 20 63 61 6C 6C 65 64 20 69    nes are called i
028070:  6E 20 61 6E 20 65 78 74 65 6E 73 69 6F 6E 20 6F    n an extension o
028080:  66 20 6E 6F 72 6D 61 6C 20 28 6E 6F 6E 2D 0D 20    f normal (non-. 
028090:  20 20 20 20 69 6E 74 65 72 75 70 74 29 20 70 72        interupt) pr
0280A0:  6F 63 65 73 73 69 6E 67 20 62 65 74 77 65 65 6E    ocessing between
0280B0:  20 69 6E 74 65 72 75 70 74 20 72 65 74 75 72 6E     interupt return
0280C0:  20 61 6E 64 20 74 68 65 20 6D 61 69 6E 20 70 72     and the main pr
0280D0:  6F 67 72 61 6D 2E 20 54 68 65 0D 20 20 20 20 20    ogram. The.     
0280E0:  72 6F 75 74 69 6E 65 20 69 73 2C 20 74 68 65 72    routine is, ther
0280F0:  65 66 6F 72 65 2C 20 20 6E 6F 79 20 20 73 75 62    efore,  noy  sub
028100:  70 61 74 68 2E 20 42 65 63 61 75 73 65 20 74 68    path. Because th
028110:  65 20 20 4C 4F 57 20 20 4A 55 4D 50 20 69 6E 73    e  LOW  JUMP ins
028120:  74 72 75 63 74 69 6F 6E 20 69 6E 20 74 68 65 20    truction in the 
028130:  6D 61 69 6E 0D 20 20 20 20 20 66 69 72 6D 77 61    main.     firmwa
028140:  72 65 20 6A 75 6D 70 62 6C 6F 63 6B 20 65 6E 61    re jumpblock ena
028150:  62 6C 65 73 20 69 6E 74 65 72 75 70 74 73 20 20    bles interupts  
028160:  74 68 65 20 20 75 73 65 72 20 20 6D 75 73 74 20    the  user  must 
028170:  70 69 63 6B 20 74 68 65 20 61 64 64 72 65 73 73    pick the address
028180:  0D 20 20 20 20 20 70 61 72 74 20 6F 66 20 74 68    .     part of th
028190:  65 20 6C 6F 77 20 61 64 64 72 65 73 73 20 6F 75    e low address ou
0281A0:  74 20 6F 66 20 74 68 65 20 20 6A 75 6D 70 62 6C    t of the  jumpbl
0281B0:  6F 63 6B 20 61 6E 64 20 6D 61 73 6B 20 6F 66 66    ock and mask off
0281C0:  20 74 68 65 20 74 6F 70 20 74 77 6F 0D 20 20 20     the top two.   
0281D0:  20 20 62 69 74 73 20 74 6F 20 65 78 74 72 61 63      bits to extrac
0281E0:  74 20 20 74 68 65 20 20 61 64 64 72 65 73 73 20    t  the  address 
0281F0:  20 69 6E 20 20 74 68 65 20 20 6C 6F 77 65 72 20     in  the  lower 
028200:  20 72 6F 6D 20 20 6F 66 20 20 4B 4C 20 20 65 76     rom  of  KL  ev
028210:  65 6E 74 2E 20 54 68 65 0D 20 20 20 20 20 66 6F    ent. The.     fo
028220:  6C 6C 6F 77 69 6E 67 20 64 6F 65 73 20 74 68 69    llowing does thi
028230:  73 3A 0D 0D 20 20 20 20 20 4C 44 20 44 45 2C 28    s:..     LD DE,(
028240:  4B 4C 5F 45 56 45 4E 54 2B 31 29 20 20 20 20 20    KL_EVENT+1)     
028250:  20 3B 65 78 74 72 61 63 74 20 61 64 64 72 65 73     ;extract addres
028260:  73 20 70 61 72 74 20 6F 66 20 4C 4F 57 20 4A 55    s part of LOW JU
028270:  4D 50 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20 52 45    MP.......     RE
028280:  53 20 37 2C 44 20 20 20 20 20 20 20 20 20 20 20    S 7,D           
028290:  20 20 20 20 20 20 3B 72 65 6D 6F 76 65 20 75 70          ;remove up
0282A0:  70 65 72 20 72 6F 6D 20 73 74 61 74 65 20 66 72    per rom state fr
0282B0:  6F 6D 20 6C 6F 77 20 61 64 64 72 65 73 73 0D 20    om low address. 
0282C0:  20 20 20 20 52 45 53 20 36 2C 44 20 20 20 20 20        RES 6,D     
0282D0:  20 20 20 20 20 20 20 20 20 20 20 20 3B 72 65 6D                ;rem
0282E0:  6F 76 65 20 6C 6F 77 65 72 20 72 6F 6D 20 73 74    ove lower rom st
0282F0:  61 74 65 20 66 72 6F 6D 20 6C 6F 77 20 61 64 64    ate from low add
028300:  6A 65 63 74 20 20 74 6F 20 20 74 68 65 20 20 72    ject  to  the  r
028310:  65 73 74 72 69 63 74 69 6F 6E 73 20 69 6D 70 6F    estrictions impo
028320:  73 65 64 20 6F 6E 0D 20 20 20 20 20 69 6E 74 65    sed on.     inte
028330:  72 75 70 74 20 70 61 74 68 20 72 6F 75 74 69 6E    rupt path routin
028340:  65 73 2E 0D 0D 20 20 20 20 20 63 2E 20 49 6E 20    es...     c. In 
028350:  74 68 65 20 69 6E 74 65 72 75 70 74 20 70 61 74    the interupt pat
028360:  68 20 2D 20 45 78 70 72 65 73 73 20 41 73 79 6E    h - Express Asyn
028370:  63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 73 0D    chronous events.
028380:  0D 20 20 20 20 20 54 68 65 20 65 76 65 6E 74 20    .     The event 
028390:  72 6F 75 74 69 6E 65 20 69 73 20 20 63 61 6C 6C    routine is  call
0283A0:  65 64 20 20 69 6D 6D 65 64 69 61 74 6C 79 2C 20    ed  immediatly, 
0283B0:  20 69 6E 20 20 74 68 65 20 20 69 6E 74 65 72 75     in  the  interu
0283C0:  70 74 20 70 61 74 68 2E 20 54 68 65 0D 20 20 20    pt path. The.   
0283D0:  20 20 72 6F 75 74 69 6E 65 20 6D 75 73 74 20 62      routine must b
0283E0:  65 20 61 74 20 20 61 20 20 6E 65 61 72 20 20 61    e at  a  near  a
0283F0:  64 64 72 65 73 73 2E 20 20 55 6E 64 65 72 20 20    ddress.  Under  
028400:  6E 6F 20 63 69 72 63 75 6D 73 74 61 6E 63 65 73    no circumstances
028410:  20 6D 61 79 20 74 68 65 0D 20 20 20 20 20 72 6F     may the.     ro
028420:  75 74 69 6E 65 20 65 6E 61 62 6C 65 20 69 6E 74    utine enable int
028430:  65 72 75 70 74 73 2E 0D 0D 20 20 20 20 20 4B 4C    erupts...     KL
028440:  20 45 56 45 4E 54 20 65 6E 61 62 6C 65 73 20 69     EVENT enables i
028450:  6E 74 65 72 75 70 74 73 20 75 6E 6C 65 73 73 20    nterupts unless 
028460:  69 74 20 69 73 20 63 61 6C 6C 65 64 20 66 72 6F    it is called fro
028470:  6D 20 74 68 65 20 69 6E 74 65 72 75 70 74 20 70    m the interupt p
028480:  61 74 68 2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D    ath...     -----
028490:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0284A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0284B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0284C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0284D0:  2D 0D 0D 20 20 20 20 20 26 42 43 46 35 20 2D 20    -..     &BCF5 - 
0284E0:  4B 4C 20 53 59 4E 43 20 52 45 53 45 54 20 2D 20    KL SYNC RESET - 
0284F0:  43 6C 65 61 72 20 73 79 6E 63 68 72 6F 6E 6F 75    Clear synchronou
028500:  72 65 73 73 0D 20 20 20 20 20 43 41 4C 4C 20 50    ress.     CALL P
028510:  43 44 45 5F 49 4E 53 54 52 55 43 54 49 4F 4E 20    CDE_INSTRUCTION 
028520:  20 20 3B 63 61 6C 6C 20 4B 4C 20 45 56 45 4E 54      ;call KL EVENT
028530:  0D 0D 20 20 20 20 20 28 69 66 20 74 68 65 20 75    ..     (if the u
028540:  73 65 72 20 69 73 20 20 67 6F 69 6E 67 20 20 74    ser is  going  t
028550:  6F 20 20 70 65 72 66 6F 72 6D 20 20 74 68 69 73    o  perform  this
028560:  20 20 6F 70 65 72 61 74 69 6F 6E 20 20 72 65 70      operation  rep
028570:  65 61 74 65 64 6C 79 20 69 74 20 69 73 0D 20 20    eatedly it is.  
028580:  20 20 20 72 65 63 6F 6D 6D 65 6E 64 65 64 20 74       recommended t
028590:  68 61 74 20 74 68 65 20 61 64 64 72 65 73 73 20    hat the address 
0285A0:  73 68 6F 75 6C 64 20 20 62 65 20 20 65 78 74 72    should  be  extr
0285B0:  61 63 74 65 64 20 20 6F 6E 63 65 20 61 6E 64 20    acted  once and 
0285C0:  73 68 6F 75 6C 64 20 62 65 0D 20 20 20 20 20 73    should be.     s
0285D0:  74 6F 72 65 64 20 73 6F 6D 65 77 68 65 72 65 29    tored somewhere)
0285E0:  0D 0D 20 20 20 20 20 54 68 65 20 65 66 66 65 63    ..     The effec
0285F0:  74 20 6F 66 20 74 68 65 20 6B 69 63 6B 20 64 65    t of the kick de
028600:  70 65 6E 64 73 20 6F 6E 20 74 68 65 20 65 76 65    pends on the eve
028610:  6E 74 20 63 6F 75 6E 74 20 69 6E 20 74 68 65 20    nt count in the 
028620:  65 76 65 6E 74 20 62 6C 6F 63 6B 3A 0D 0D 20 20    event block:..  
028630:  20 20 20 63 6F 75 6E 74 3C 30 20 20 20 20 20 20       count<0      
028640:  20 20 20 54 68 65 20 65 76 65 6E 74 20 69 73 20       The event is 
028650:  64 69 73 61 72 6D 65 64 2C 20 61 6E 64 20 6B 69    disarmed, and ki
028660:  63 6B 69 6E 67 20 68 61 73 20 6E 6F 20 65 66 66    cking has no eff
028670:  65 63 74 0D 20 20 20 20 20 63 6F 75 6E 74 3E 30    ect.     count>0
028680:  20 20 20 20 20 20 20 20 20 54 68 65 72 65 20 61             There a
028690:  72 65 20 6F 74 68 65 72 20 20 6B 69 63 6B 73 20    re other  kicks 
0286A0:  20 6F 75 74 73 74 61 6E 64 69 6E 67 20 20 61 6E     outstanding  an
0286B0:  64 20 20 74 68 65 20 65 76 65 6E 74 20 69 73 0D    d  the event is.
0286C0:  20 20 20 20 20 62 65 69 6E 67 20 70 72 6F 63 65         being proce
0286D0:  73 73 65 64 2E 20 54 68 69 73 20 6B 69 63 6B 20    ssed. This kick 
0286E0:  73 69 6D 70 6C 79 20 69 6E 63 72 65 6D 65 6E 74    simply increment
0286F0:  73 20 20 74 68 65 20 63 6F 75 6E 74 20 28 75 6E    s  the count (un
028700:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
028710:  22 00 01 00 02 09 4E E5 22 00 C1 02 00 00 00 02    ".....N.".......
028720:  22 00 C6 02 00 00 00 02 22 00 C2 02 00 00 00 02    ".......".......
028730:  22 00 C7 02 00 00 00 02 22 00 C3 02 00 00 00 02    ".......".......
028740:  22 00 C8 02 00 00 00 02 22 00 C4 02 00 00 00 02    ".......".......
028750:  22 00 C9 02 00 00 00 02 22 00 C5 02 00 00 00 02    ".......".......
028760:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028770:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028780:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028790:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
0287F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
028800:  73 20 65 76 65 6E 74 20 71 75 65 75 65 2E 0D 0D    s event queue...
028810:  0D 0D 0D 0D 0D 0D 20 20 20 20 20 45 6E 74 72 79    ......     Entry
028820:  3A 0D 0D 20 20 20 20 20 4E 6F 6E 65 0D 0D 20 20    :..     None..  
028830:  20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20 41       Exit:..     A
028840:  46 20 61 6E 64 20 48 4C 20 63 68 61 6E 67 65 64    F and HL changed
028850:  2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D    ...     Notes:..
028860:  20 20 20 20 20 49 74 20 69 73 20 74 68 65 20 75         It is the u
028870:  73 65 72 27 73 20 72 65 73 70 6F 6E 73 69 62 69    ser's responsibi
028880:  6C 69 74 79 20 20 74 6F 20 20 65 6E 73 75 72 65    lity  to  ensure
028890:  20 20 74 68 61 74 20 74 68 65 20 64 69 73 63 61      that the disca
0288A0:  72 64 65 64 20 65 76 65 6E 74 73 0D 20 20 20 20    rded events.    
0288B0:  20 61 6E 64 20 61 6E 79 20 20 63 75 72 72 65 6E     and any  curren
0288C0:  74 6C 79 20 20 61 63 74 69 76 65 20 20 65 76 65    tly  active  eve
0288D0:  6E 74 73 20 20 61 72 65 20 20 72 65 73 65 74 2E    nts  are  reset.
0288E0:  20 20 54 68 65 20 20 65 76 65 6E 74 20 20 63 6F      The  event  co
0288F0:  75 6E 74 20 20 6F 66 0D 20 20 20 20 20 64 69 73    unt  of.     dis
028900:  63 61 72 64 65 64 20 65 76 65 6E 74 73 20 77 69    carded events wi
028910:  6C 6C 20 62 65 20 67 72 65 61 74 65 72 20 74 68    ll be greater th
028920:  61 6E 20 20 7A 65 72 6F 2C 20 73 6F 20 61 6E 79    an  zero, so any
028930:  20 66 75 72 74 68 75 72 20 6B 69 63 6B 73 20 77     furthur kicks w
028940:  69 6C 6C 0D 20 20 20 20 20 73 69 6D 70 6C 79 20    ill.     simply 
028950:  69 6E 63 72 65 6D 65 6E 74 20 74 68 65 20 63 6F    increment the co
028960:  75 6E 74 2C 20 62 75 74 20 6E 6F 74 20 20 61 64    unt, but not  ad
028970:  64 20 20 74 68 65 20 65 76 65 6E 74 20 74 6F 20    d  the event to 
028980:  74 68 65 20 73 79 6E 63 68 72 6F 6E 6F 75 73 0D    the synchronous.
028990:  20 20 20 20 20 65 76 65 6E 74 20 71 75 65 75 65         event queue
0289A0:  2D 20 74 68 65 20 65 76 65 6E 74 73 20 61 72 65    - the events are
0289B0:  2C 20 74 68 65 72 65 66 6F 72 65 2C 20 65 66 66    , therefore, eff
0289C0:  65 63 74 69 76 65 6C 79 20 64 69 73 61 72 6D 65    ectively disarme
0289D0:  64 2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D    d...     -------
0289E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
0289F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
028A00:  6E 74 20 70 72 69 6F 72 69 74 79 0D 20 20 20 20    nt priority.    
028A10:  20 43 41 4C 4C 20 4B 4C 5F 44 4F 5F 53 59 4E 43     CALL KL_DO_SYNC
028A20:  20 20 20 20 20 20 20 20 20 3B 63 61 6C 6C 20 74             ;call t
028A30:  68 65 20 65 76 65 6E 74 20 72 6F 75 74 69 6E 65    he event routine
028A40:  0D 20 20 20 20 20 50 4F 50 20 41 46 0D 20 20 20    .     POP AF.   
028A50:  20 20 50 4F 50 20 48 4C 0D 20 20 20 20 20 43 41      POP HL.     CA
028A60:  4C 4C 20 4B 4C 5F 44 4F 4E 45 5F 53 59 4E 43 20    LL KL_DONE_SYNC 
028A70:  20 20 20 20 20 20 3B 72 65 73 65 74 20 74 68 65          ;reset the
028A80:  20 65 76 65 6E 74 20 70 72 69 6F 72 69 74 79 20     event priority 
028A90:  6D 61 73 6B 2C 20 64 65 61 6C 20 77 69 74 68 0D    mask, deal with.
028AA0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
028AB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 3B 74 68                 ;th
028AC0:  65 20 65 76 65 6E 74 20 63 6F 75 6E 74 20 61 6E    e event count an
028AD0:  64 20 70 75 74 20 74 68 65 20 65 76 65 6E 74 20    d put the event 
028AE0:  62 61 63 6B 20 6F 6E 0D 20 20 20 20 20 20 20 20    back on.        
028AF0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
028B00:  20 20 20 20 20 3B 74 68 65 20 71 75 65 75 65 20         ;the queue 
028B10:  69 66 20 74 68 65 20 63 6F 75 6E 74 20 69 73 20    if the count is 
028B20:  73 74 69 6C 6C 20 67 72 65 61 74 65 72 0D 20 20    still greater.  
028B30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
028B40:  20 20 20 20 20 20 20 20 20 20 20 3B 74 68 61 6E               ;than
028B50:  20 7A 65 72 6F 0D 0D 20 20 20 20 20 4A 52 20 20     zero..     JR  
028B60:  54 52 59 5F 41 47 41 49 4E 20 20 20 20 20 20 20    TRY_AGAIN       
028B70:  20 20 20 20 3B 73 65 65 20 20 69 66 20 20 61 6E        ;see  if  an
028B80:  79 20 20 20 65 76 65 6E 74 73 20 20 61 72 65 20    y   events  are 
028B90:  20 73 74 69 6C 6C 20 20 61 77 61 69 74 69 6E 67     still  awaiting
028BA0:  0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
028BB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 70                  ;p
028BC0:  72 6F 63 65 73 73 69 6E 67 0D 0D 20 20 20 20 20    rocessing..     
028BD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
028BE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
028BF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
028C00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
028C10:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D    ---------------.
028C20:  20 20 20 20 20 26 42 43 46 38 20 2D 20 4B 4C 20         &BCF8 - KL 
028C30:  44 45 4C 20 53 59 4E 43 48 52 4F 4E 4F 55 53 20    DEL SYNCHRONOUS 
028C40:  2D 20 52 65 6D 6F 76 65 20 20 61 20 73 79 6E 63    - Remove  a sync
028C50:  68 72 6F 6E 6F 75 73 20 65 76 6E 74 20 66 72 6F    hronous evnt fro
028C60:  6D 20 74 68 65 20 65 76 65 6E 74 0D 20 20 20 20    m the event.    
028C70:  20 71 75 65 75 65 0D 0D 20 20 20 20 20 45 6E 74     queue..     Ent
028C80:  72 79 3A 0D 0D 20 20 20 20 20 48 4C 20 3D 20 61    ry:..     HL = a
028C90:  64 64 72 65 73 73 20 6F 66 20 74 68 65 20 65 76    ddress of the ev
028CA0:  65 6E 74 20 62 6C 6F 63 6B 0D 0D 20 20 20 20 20    ent block..     
028CB0:  45 78 69 74 3A 0D 0D 20 20 20 20 20 41 46 2C 42    Exit:..     AF,B
028CC0:  43 2C 44 45 2C 48 4C 20 63 68 61 6E 67 65 64 2E    C,DE,HL changed.
028CD0:  0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20    ..     Notes:.. 
028CE0:  20 20 20 20 44 65 6C 65 74 69 6E 67 20 61 6E 20        Deleting an 
028CF0:  65 76 65 6E 74 20 66 72 6F 6D 20 74 68 65 20 20    event from the  
028D00:  71 75 65 75 65 20 20 70 72 65 76 65 6E 74 73 20    queue  prevents 
028D10:  74 68 65 20 6F 75 74 73 74 61 6E 64 69 6E 67 20    the outstanding 
028D20:  6B 69 63 6B 73 20 66 6F 72 6D 0D 20 20 20 20 20    kicks form.     
028D30:  62 65 69 6E 67 20 70 72 6F 63 65 73 73 65 64 2E    being processed.
028D40:  0D 0D 20 20 20 20 20 42 65 66 6F 72 65 20 61 20    ..     Before a 
028D50:  20 73 79 6E 63 68 72 6F 6E 6F 75 73 20 20 65 76     synchronous  ev
028D60:  65 6E 74 20 20 62 6C 6F 63 6B 20 20 69 73 20 20    ent  block  is  
028D70:  72 65 73 65 74 20 20 6F 72 20 20 72 65 69 6E 69    reset  or  reini
028D80:  74 69 61 6C 69 7A 65 64 20 74 68 69 73 0D 20 20    tialized this.  
028D90:  20 20 20 72 6F 75 74 69 6E 65 20 73 68 6F 75 6C       routine shoul
028DA0:  64 20 62 65 20 75 73 65 64 20 74 6F 20 65 6E 73    d be used to ens
028DB0:  75 72 65 20 74 68 61 74 20 69 74 20 69 73 20 6E    ure that it is n
028DC0:  6F 74 20 63 75 72 72 65 6E 74 6C 79 20 70 65 6E    ot currently pen
028DD0:  64 69 6E 67 2E 0D 0D 20 20 20 20 20 54 68 69 73    ding...     This
028DE0:  20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C 65 73     routine enables
028DF0:  20 69 6E 74 65 72 75 70 74 73 2E 0D 0D 20 20 20     interupts...   
028E00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
028E10:  2D 2D 2D 2D 2D 2D 2D 0D 20 20 20 20 20 26 42 43    -------.     &BC
028E20:  46 45 20 2D 20 4B 4C 20 44 4F 20 53 59 4E 43 20    FE - KL DO SYNC 
028E30:  2D 20 44 6F 20 61 6E 20 65 76 65 6E 74 20 72 6F    - Do an event ro
028E40:  75 74 69 6E 65 0D 0D 20 20 20 20 20 45 6E 74 72    utine..     Entr
028E50:  79 3A 0D 0D 20 20 20 20 20 48 4C 20 3D 20 61 64    y:..     HL = ad
028E60:  64 72 65 73 73 20 6F 66 20 65 76 65 6E 74 20 62    dress of event b
028E70:  6C 6F 63 6B 0D 0D 20 20 20 20 20 45 78 69 74 3A    lock..     Exit:
028E80:  0D 0D 20 20 20 20 20 41 46 2C 42 43 2C 44 45 2C    ..     AF,BC,DE,
028E90:  48 4C 20 63 68 61 6E 67 65 64 2E 0D 0D 20 20 20    HL changed...   
028EA0:  20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54      Notes:..     T
028EB0:  68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20 74    his routine is t
028EC0:  6F 20 62 65 20 63 61 6C 6C 65 64 20 20 74 6F 20    o be called  to 
028ED0:  20 70 72 6F 63 65 73 73 20 20 61 6E 20 65 76 65     process  an eve
028EE0:  6E 74 20 61 66 74 65 72 20 4B 4C 20 4E 45 58 54    nt after KL NEXT
028EF0:  20 53 59 4E 43 0D 20 20 20 20 20 68 61 73 20 66     SYNC.     has f
028F00:  6F 75 6E 64 20 69 74 20 74 6F 20 62 65 20 70 65    ound it to be pe
028F10:  6E 64 69 6E 67 2E 20 55 73 65 20 20 6F 66 20 20    nding. Use  of  
028F20:  74 68 69 73 20 20 65 6E 74 72 79 20 61 74 20 6F    this  entry at o
028F30:  74 68 65 72 20 74 69 6D 65 73 20 69 73 20 6E 6F    ther times is no
028F40:  74 0D 20 20 20 20 20 72 65 63 6F 6D 6D 65 6E 64    t.     recommend
028F50:  65 64 2E 0D 0D 20 20 20 20 20 54 68 69 73 20 72    ed...     This r
028F60:  6F 75 74 69 6E 65 20 64 6F 65 73 6E 27 74 20 61    outine doesn't a
028F70:  66 66 65 63 74 20 74 68 65 20 65 76 65 6E 74 20    ffect the event 
028F80:  63 6F 75 6E 74 2E 0D 0D 20 20 20 20 20 2D 2D 2D    count...     ---
028F90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
028FA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
028FB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
028FC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
028FD0:  2D 2D 2D 2D 0D 20 20 20 20 20 26 42 44 30 31 20    ----.     &BD01 
028FE0:  2D 20 4B 4C 20 44 4F 4E 45 20 53 59 4E 43 20 2D    - KL DONE SYNC -
028FF0:  20 46 69 6E 69 73 68 20 70 72 6F 63 65 73 73 69     Finish processi
029000:  20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D      --------------
029010:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029020:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029030:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029040:  2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20    ---------..     
029050:  26 42 43 46 42 20 2D 20 4B 4C 20 4E 45 58 54 20    &BCFB - KL NEXT 
029060:  53 59 4E 43 20 2D 20 47 65 74 20 6E 65 78 74 20    SYNC - Get next 
029070:  65 76 65 6E 74 20 66 72 6F 6D 20 74 68 65 20 71    event from the q
029080:  75 65 75 65 2E 0D 0D 20 20 20 20 20 45 6E 74 72    ueue...     Entr
029090:  79 3A 0D 0D 20 20 20 20 20 4E 6F 6E 65 0D 0D 20    y:..     None.. 
0290A0:  20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20        Exit:..     
0290B0:  49 66 20 74 68 65 72 65 20 77 61 73 20 61 6E 20    If there was an 
0290C0:  65 76 65 6E 74 20 74 6F 20 62 65 20 70 72 6F 63    event to be proc
0290D0:  73 73 65 64 3A 0D 0D 20 20 20 20 20 43 61 72 72    ssed:..     Carr
0290E0:  79 20 74 72 75 65 2E 20 48 4C 20 3D 20 61 64 64    y true. HL = add
0290F0:  72 65 73 73 20 6F 66 20 74 68 65 20 65 76 65 6E    ress of the even
029100:  74 20 62 6C 6F 63 6B 0D 20 20 20 20 20 41 20 3D    t block.     A =
029110:  20 70 72 65 76 69 6F 75 73 20 65 76 65 6E 74 20     previous event 
029120:  70 72 69 6F 72 69 74 79 20 28 69 66 20 61 6E 79    priority (if any
029130:  29 0D 0D 20 20 20 20 20 49 66 20 74 68 65 72 65    )..     If there
029140:  20 69 73 20 6E 6F 20 65 76 65 6E 74 20 74 6F 20     is no event to 
029150:  62 65 20 70 72 6F 63 65 73 73 65 64 3A 0D 0D 20    be processed:.. 
029160:  20 20 20 20 43 61 72 72 79 20 66 61 6C 73 65 2E        Carry false.
029170:  20 41 2C 48 4C 20 63 68 61 6E 67 65 64 2E 0D 0D     A,HL changed...
029180:  20 20 20 20 20 44 45 20 63 68 61 6E 67 65 64 2E         DE changed.
029190:  0D 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20 4E 6F 74    ........     Not
0291A0:  65 73 3A 0D 0D 20 20 20 20 20 4B 4C 20 4E 45 58    es:..     KL NEX
0291B0:  54 20 53 59 4E 43 20 72 65 74 75 72 6E 73 20 74    T SYNC returns t
0291C0:  68 65 20 61 64 64 72 65 73 73 20 6F 66 20 74 68    he address of th
0291D0:  65 20 6E 65 78 74 20 65 76 65 6E 74 20 74 6F 20    e next event to 
0291E0:  62 65 20 70 72 6F 63 65 73 73 65 64 2C 20 69 66    be processed, if
0291F0:  0D 20 20 20 20 20 61 6E 79 2C 20 77 68 69 63 68    .     any, which
029200:  6E 67 20 61 6E 20 65 76 65 6E 74 0D 0D 0D 0D 0D    ng an event.....
029210:  0D 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D    ...     Entry:..
029220:  20 20 20 20 20 41 20 3D 20 70 72 65 76 69 6F 75         A = previou
029230:  73 20 65 76 65 6E 74 20 70 72 69 6F 72 69 74 79    s event priority
029240:  0D 20 20 20 20 20 48 4C 20 3D 20 61 64 64 72 65    .     HL = addre
029250:  73 73 20 6F 66 20 74 68 65 20 65 76 65 6E 74 20    ss of the event 
029260:  62 6C 6F 63 6B 0D 0D 20 20 20 20 20 45 78 69 74    block..     Exit
029270:  3A 0D 0D 20 20 20 20 20 41 46 2C 42 43 2C 44 45    :..     AF,BC,DE
029280:  2C 48 4C 20 63 68 61 6E 67 65 64 2E 0D 0D 20 20    ,HL changed...  
029290:  20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20       Notes:..     
0292A0:  54 68 69 73 20 72 6F 75 74 69 6E 65 20 69 73 20    This routine is 
0292B0:  69 6E 74 65 6E 64 65 64 20 74 6F 20 62 65 20 20    intended to be  
0292C0:  63 61 6C 6C 65 64 20 20 61 66 74 65 72 20 20 4B    called  after  K
0292D0:  4C 20 4E 45 58 54 20 53 59 4E 43 2C 20 74 6F 20    L NEXT SYNC, to 
0292E0:  66 69 6E 64 20 61 0D 20 20 20 20 20 70 65 6E 64    find a.     pend
0292F0:  69 6E 67 20 65 76 65 6E 74 2C 20 61 6E 64 20 4B    ing event, and K
029300:  4C 20 44 4F 20 53 59 4E 43 2C 20 74 6F 20 20 72    L DO SYNC, to  r
029310:  75 6E 20 20 74 68 65 20 65 76 65 6E 74 20 72 6F    un  the event ro
029320:  75 74 69 6E 65 2E 20 49 74 20 75 73 65 73 20 74    utine. It uses t
029330:  68 65 0D 20 20 20 20 20 70 72 65 76 69 6F 75 73    he.     previous
029340:  20 65 76 65 6E 74 20 70 72 69 6F 72 69 74 79 20     event priority 
029350:  61 6E 64 20 20 74 68 65 20 20 65 76 65 6E 74 20    and  the  event 
029360:  20 62 6C 6F 63 6B 20 20 61 64 64 72 65 73 73 20     block  address 
029370:  72 65 74 75 72 6E 65 64 20 62 79 20 4B 4C 0D 20    returned by KL. 
029380:  20 20 20 20 4E 45 58 54 20 53 59 4E 43 2E 20 4F        NEXT SYNC. O
029390:  74 68 65 72 20 75 73 65 73 20 6F 66 20 74 68 69    ther uses of thi
0293A0:  73 20 65 6E 74 72 79 20 61 72 65 20 6E 6F 74 20    s entry are not 
0293B0:  72 65 63 6F 6D 6D 65 6E 64 65 64 2E 0D 0D 20 20    recommended...  
0293C0:  20 20 20 53 65 65 20 4B 4C 20 4E 45 58 54 20 20       See KL NEXT  
0293D0:  53 59 4E 43 20 20 61 62 6F 76 65 20 20 66 6F 72    SYNC  above  for
0293E0:  20 20 74 68 65 20 20 73 63 68 65 6D 65 20 20 66      the  scheme  f
0293F0:  6F 72 20 70 72 6F 63 65 73 73 69 6E 67 20 73 79    or processing sy
029400:  20 69 74 20 68 61 73 20 20 74 61 6B 65 6E 20 20     it has  taken  
029410:  6F 66 66 20 20 74 68 65 20 20 73 79 6E 63 68 72    off  the  synchr
029420:  6F 6E 6F 75 73 20 20 65 76 65 6E 74 20 71 75 65    onous  event que
029430:  75 65 20 61 6E 64 20 77 68 6F 73 65 0D 20 20 20    ue and whose.   
029440:  20 20 70 72 69 6F 72 69 74 79 20 68 61 73 20 6E      priority has n
029450:  6F 77 20 62 65 65 6E 20 73 65 74 20 61 73 20 74    ow been set as t
029460:  68 65 20 65 76 65 6E 74 20 70 72 69 6F 72 69 74    he event priorit
029470:  79 20 6D 61 73 6B 2E 0D 0D 20 20 20 20 20 54 68    y mask...     Th
029480:  65 20 66 6F 72 65 67 72 6F 75 6E 64 20 70 72 6F    e foreground pro
029490:  67 72 61 6D 20 73 68 6F 75 6C 64 20 20 63 61 6C    gram should  cal
0294A0:  6C 20 20 4B 4C 20 20 50 4F 4C 4C 20 20 53 59 4E    l  KL  POLL  SYN
0294B0:  43 48 52 4F 4E 4F 55 53 20 72 65 67 75 61 72 6C    CHRONOUS reguarl
0294C0:  79 20 74 6F 0D 20 20 20 20 20 63 68 65 63 6B 20    y to.     check 
0294D0:  66 6F 72 20 6F 75 74 73 74 61 6E 64 69 6E 67 20    for outstanding 
0294E0:  65 76 65 6E 74 73 2E 20 4B 4C 20 20 50 4F 4C 4C    events. KL  POLL
0294F0:  20 20 53 59 4E 43 48 52 4F 4E 4F 55 53 20 69 73      SYNCHRONOUS is
029500:  20 61 20 73 68 6F 72 74 20 72 6F 75 74 69 6E 65     a short routine
029510:  0D 20 20 20 20 20 69 6E 20 52 41 4D 2C 20 73 6F    .     in RAM, so
029520:  20 63 61 6C 6C 69 6E 67 20 69 74 20 69 6D 70 6F     calling it impo
029530:  73 65 73 20 20 6C 69 74 74 6C 65 20 20 6F 76 65    ses  little  ove
029540:  72 68 65 61 64 2E 20 20 49 66 20 74 68 65 72 65    rhead.  If there
029550:  20 69 73 20 61 6E 20 65 76 65 6E 74 0D 20 20 20     is an event.   
029560:  20 20 6F 75 74 73 74 61 6E 64 69 6E 67 20 74 68      outstanding th
029570:  65 6E 20 74 68 65 20 61 62 6F 76 65 20 70 72 6F    en the above pro
029580:  63 65 64 75 72 65 20 73 68 6F 75 6C 64 20 20 62    cedure should  b
029590:  65 20 69 6E 76 6F 6B 65 64 2C 20 61 6E 64 20 73    e invoked, and s
0295A0:  68 6F 75 6C 64 20 62 65 0D 20 20 20 20 20 72 65    hould be.     re
0295B0:  70 65 61 74 65 64 20 75 6E 74 69 6C 20 74 68 65    peated until the
0295C0:  20 65 76 65 6E 74 20 71 75 65 75 65 20 69 73 20     event queue is 
0295D0:  65 6D 70 74 79 2E 0D 0D 20 20 20 20 20 54 68 65    empty...     The
0295E0:  20 63 75 72 72 65 6E 74 20 65 76 65 6E 74 20 70     current event p
0295F0:  72 69 6F 72 69 74 79 20 20 6D 65 63 68 61 6E 69    riority  mechani
029600:  6E 63 68 72 6F 6E 6F 75 73 0D 20 20 20 20 20 65    nchronous.     e
029610:  76 65 6E 74 73 2E 0D 0D 20 20 20 20 20 52 65 73    vents...     Res
029620:  74 6F 72 69 6E 67 20 20 74 68 65 20 20 63 75 72    toring  the  cur
029630:  72 65 6E 74 20 20 65 76 65 6E 74 20 20 70 72 69    rent  event  pri
029640:  6F 72 69 74 79 20 20 20 69 73 20 20 61 6E 20 20    ority   is  an  
029650:  65 73 73 65 6E 74 69 61 6C 20 20 73 74 65 70 20    essential  step 
029660:  20 69 6E 0D 20 20 20 20 20 6D 61 69 6E 74 61 69     in.     maintai
029670:  6E 69 6E 67 20 74 68 65 20 73 79 63 68 72 6F 6E    ning the sychron
029680:  6F 75 73 20 65 76 65 6E 74 20 70 72 69 6F 72 69    ous event priori
029690:  74 79 20 73 63 68 65 6D 65 2E 0D 0D 20 20 20 20    ty scheme...    
0296A0:  20 49 66 20 74 68 65 20 65 76 65 6E 74 20 63 6F     If the event co
0296B0:  75 6E 74 20 69 73 20 67 72 65 61 74 65 72 20 74    unt is greater t
0296C0:  68 61 6E 20 7A 65 72 6F 20 74 68 65 6E 20 69 74    han zero then it
0296D0:  20 69 73 20 64 65 63 72 65 6D 65 6E 74 65 64 2E     is decremented.
0296E0:  20 49 66 20 74 68 65 0D 20 20 20 20 20 63 6F 75     If the.     cou
0296F0:  6E 74 20 69 73 20 20 73 74 69 6C 6C 20 20 67 72    nt is  still  gr
029700:  65 61 74 65 72 20 20 74 68 61 6E 20 20 7A 65 72    eater  than  zer
029710:  6F 20 20 74 68 65 6E 20 20 74 68 65 72 65 20 20    o  then  there  
029720:  61 72 65 20 20 66 75 72 74 68 65 72 20 65 76 65    are  further eve
029730:  6E 74 73 0D 20 20 20 20 20 6F 75 74 73 74 61 6E    nts.     outstan
029740:  64 69 6E 67 20 61 6E 64 20 74 68 65 20 65 76 65    ding and the eve
029750:  6E 74 20 20 69 73 20 20 70 6C 61 63 65 64 20 20    nt  is  placed  
029760:  62 61 63 6B 20 20 6F 6E 20 20 74 68 65 20 73 79    back  on  the sy
029770:  6E 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 0D    nchronous event.
029780:  20 20 20 20 20 71 75 65 75 65 2E 20 54 68 65 20         queue. The 
029790:  65 76 65 6E 74 20 6D 61 79 20 62 65 20 20 64 69    event may be  di
0297A0:  73 61 72 6D 65 64 20 20 62 65 74 77 65 65 6E 20    sarmed  between 
0297B0:  20 4B 4C 20 20 4E 45 58 54 20 20 53 59 4E 43 20     KL  NEXT  SYNC 
0297C0:  61 6E 64 20 4B 4C 20 44 4F 4E 45 0D 20 20 20 20    and KL DONE.    
0297D0:  20 53 59 4E 43 2E 20 53 65 74 74 69 6E 67 20 74     SYNC. Setting t
0297E0:  68 65 20 65 76 65 6E 74 20 20 63 6F 75 6E 74 20    he event  count 
0297F0:  20 74 6F 20 20 6F 6E 65 20 20 62 65 66 6F 72 65     to  one  before
029800:  73 6D 20 20 61 6C 6C 6F 77 73 20 20 65 76 65 6E    sm  allows  even
029810:  74 20 20 72 6F 75 74 69 6E 65 73 20 74 6F 20 70    t  routines to p
029820:  6F 6C 6C 0D 20 20 20 20 20 66 6F 72 2C 20 61 6E    oll.     for, an
029830:  64 20 70 72 6F 63 65 73 73 2C 20 65 76 65 6E 74    d process, event
029840:  73 20 6F 66 20 68 69 67 68 65 72 20 70 72 69 6F    s of higher prio
029850:  72 69 74 79 2E 20 54 68 65 20 70 72 69 6F 72 69    rity. The priori
029860:  74 79 20 72 65 74 75 72 6E 65 64 20 62 79 0D 20    ty returned by. 
029870:  20 20 20 20 74 68 69 73 20 72 6F 75 74 69 6E 65        this routine
029880:  20 6D 75 73 74 20 62 65 20 75 6E 63 68 61 6E 67     must be unchang
029890:  65 64 20 75 6E 74 69 6C 20 69 74 20 69 73 20 70    ed until it is p
0298A0:  61 73 73 65 64 20 74 6F 20 4B 4C 20 44 4F 4E 45    assed to KL DONE
0298B0:  20 53 59 4E 43 2F 2E 0D 0D 20 20 20 20 20 4B 4C     SYNC/...     KL
0298C0:  20 4E 45 58 54 20 53 59 4E 43 20 65 6E 61 62 6C     NEXT SYNC enabl
0298D0:  65 73 20 69 6E 74 65 72 75 70 74 73 2E 0D 0D 0D    es interupts....
0298E0:  20 20 20 20 20 54 68 65 20 70 72 6F 63 65 64 75         The procedu
0298F0:  72 65 20 66 6F 72 20 70 72 6F 63 65 73 73 69 6E    re for processin
029900:  67 20 73 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76    g synchronous ev
029910:  65 6E 74 73 20 69 73 3A 0D 0D 20 20 20 20 20 54    ents is:..     T
029920:  52 59 5F 41 47 41 49 4E 0D 0D 20 20 20 20 20 43    RY_AGAIN..     C
029930:  41 4C 4C 20 4B 4C 5F 4E 45 58 54 5F 53 59 4E 43    ALL KL_NEXT_SYNC
029940:  20 20 20 20 20 20 20 3B 72 65 74 75 72 6E 20 6E           ;return n
029950:  65 78 74 20 65 76 65 6E 74 2C 20 69 66 20 61 6E    ext event, if an
029960:  79 0D 20 20 20 20 20 4A 52 20 4E 43 2C 3F 3F 3F    y.     JR NC,???
029970:  3F 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B    ?              ;
029980:  6A 75 6D 70 20 69 66 20 6E 6F 20 65 76 65 6E 74    jump if no event
029990:  20 74 6F 20 70 72 6F 63 65 73 73 0D 0D 20 20 20     to process..   
0299A0:  20 20 50 55 53 48 20 48 4C 20 20 20 20 20 20 20      PUSH HL       
0299B0:  20 20 20 20 20 20 20 20 20 20 3B 73 61 76 65 20              ;save 
0299C0:  61 64 64 72 65 73 73 20 6F 66 20 65 76 65 6E 74    address of event
0299D0:  0D 20 20 20 20 20 50 55 53 48 20 41 46 20 20 20    .     PUSH AF   
0299E0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 3B 73                  ;s
0299F0:  61 76 65 20 70 72 65 76 69 6F 75 73 20 65 76 65    ave previous eve
029A00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
029A10:  23 00 01 00 02 09 4E E5 23 00 C1 02 00 00 00 02    #.....N.#.......
029A20:  23 00 C6 02 00 00 00 02 23 00 C2 02 00 00 00 02    #.......#.......
029A30:  23 00 C7 02 00 00 00 02 23 00 C3 02 00 00 00 02    #.......#.......
029A40:  23 00 C8 02 00 00 00 02 23 00 C4 02 00 00 00 02    #.......#.......
029A50:  23 00 C9 02 00 00 00 02 23 00 C5 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 20 63 61 6C 6C 69 6E 67 20 20 4B 4C 20 44 4F      calling  KL DO
029B10:  4E 45 20 53 59 4E 43 0D 20 20 20 20 20 66 6F 72    NE SYNC.     for
029B20:  63 65 73 20 6D 75 6C 74 69 70 6C 65 20 65 76 65    ces multiple eve
029B30:  6E 74 73 20 74 6F 20 62 65 20 74 72 65 61 74 65    nts to be treate
029B40:  64 20 61 73 20 20 61 20 73 69 6E 67 6C 65 20 65    d as  a single e
029B50:  76 65 6E 74 2E 0D 0D 20 20 20 20 20 4B 4C 20 44    vent...     KL D
029B60:  4F 4E 45 20 53 59 4E 43 20 6D 61 79 20 65 6E 61    ONE SYNC may ena
029B70:  62 6C 65 20 69 6E 74 65 72 75 70 74 73 2E 0D 0D    ble interupts...
029B80:  20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D         -----------
029B90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029BA0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029BB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029BC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20    -----------..   
029BD0:  20 20 26 42 44 30 34 20 2D 20 4B 4C 20 45 56 45      &BD04 - KL EVE
029BE0:  4E 54 20 44 49 53 41 42 4C 45 20 2D 20 44 69 73    NT DISABLE - Dis
029BF0:  61 62 6C 65 20 6E 6F 72 6D 61 6C 20 73 79 6E 63    able normal sync
029C00:  68 72 6F 6E 6F 75 73 20 65 76 65 6E 74 73 0D 0D    hronous events..
029C10:  20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20         Entry:..   
029C20:  20 20 4E 6F 6E 65 0D 0D 20 20 20 20 20 45 78 69      None..     Exi
029C30:  74 3A 0D 0D 20 20 20 20 20 48 4C 20 63 68 61 6E    t:..     HL chan
029C40:  67 65 64 2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73    ged...     Notes
029C50:  3A 0D 0D 20 20 20 20 20 4B 4C 20 45 56 45 4E 54    :..     KL EVENT
029C60:  20 44 49 53 41 42 4C 45 20 64 6F 65 73 20 6E 6F     DISABLE does no
029C70:  74 20 70 72 65 76 65 6E 74 20 20 65 76 65 6E 74    t prevent  event
029C80:  73 20 66 6F 72 20 62 65 69 6E 67 20 6B 69 63 6B    s for being kick
029C90:  65 64 2E 20 54 68 65 20 65 66 66 65 63 74 0D 20    ed. The effect. 
029CA0:  20 20 20 20 69 73 20 74 6F 20 27 6D 61 73 6B 20        is to 'mask 
029CB0:  6F 66 66 27 20 61 6C 6C 20 20 70 65 6E 64 69 6E    off' all  pendin
029CC0:  67 20 20 6E 6F 72 6D 61 6C 20 20 73 79 6E 63 68    g  normal  synch
029CD0:  72 6F 6E 6F 75 73 20 65 76 65 6E 74 73 20 73 6F    ronous events so
029CE0:  20 74 68 61 74 20 74 68 65 79 0D 20 20 20 20 20     that they.     
029CF0:  61 72 65 20 68 69 64 64 65 6E 20 66 72 6F 6D 20    are hidden from 
029D00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029D10:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029D20:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029D30:  2D 2D 2D 2D 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20    ----.......     
029D40:  26 42 44 31 30 20 2D 20 4B 4C 20 54 49 4D 45 20    &BD10 - KL TIME 
029D50:  53 45 54 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A    SET..     Entry:
029D60:  0D 0D 20 20 20 20 20 44 45 20 61 6E 64 20 48 4C    ..     DE and HL
029D70:  20 3D 20 66 6F 75 72 20 62 79 74 65 20 6E 75 6D     = four byte num
029D80:  62 65 72 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D    ber..     Exit:.
029D90:  0D 20 20 20 20 20 41 46 20 63 68 61 6E 67 65 64    .     AF changed
029DA0:  2E 0D 0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D    ....     Notes:.
029DB0:  0D 20 20 20 20 20 54 68 69 73 20 76 61 6C 75 65    .     This value
029DC0:  20 6D 61 79 20 62 65 20 75 73 65 64 20 61 73 20     may be used as 
029DD0:  61 20 20 63 6C 6F 63 6B 20 62 65 63 61 75 73 65    a  clock because
029DE0:  20 74 68 65 20 6B 65 72 6E 61 6C 20 6D 61 69 6E     the kernal main
029DF0:  74 61 69 6E 73 20 61 20 72 65 61 6C 0D 20 20 20    tains a real.   
029E00:  20 20 63 6C 6F 63 6B 2E 0D 20 20 20 20 20 2D 2D      clock..     --
029E10:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029E20:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029E30:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029E40:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029E50:  2D 2D 2D 2D 2D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D    -----...........
029E60:  0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D    ................
029E70:  0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D    ................
029E80:  0D 0D 0D 0D 0D 1A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ......----------
029E90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
029EA0:  2D 2D 1A 72 09 09 0D 26 42 44 78 78 09 48 44 36    --.r...&BDxx.HD6
029EB0:  38 34 35 20 43 52 54 43 20 72 65 67 69 73 74 65    845 CRTC registe
029EC0:  72 20 64 61 74 61 20 20 20 20 1A 0D 0D 0D 0D 0D    r data    ......
029ED0:  1A 10 22 00 00 00 00 00 00 00 00 00 00 00 00 00    ..".............
029EE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
029EF0:  00 00 00 00 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
029F00:  74 68 65 20 66 6F 72 65 67 72 6F 75 6E 64 20 70    the foreground p
029F10:  72 6F 67 72 61 6D 20 28 77 68 65 6E 20 4B 4C 20    rogram (when KL 
029F20:  50 4F 4C 4C 20 53 59 4E 43 48 52 4F 4E 4F 55 53    POLL SYNCHRONOUS
029F30:  20 6F 72 20 4B 4C 0D 20 20 20 20 20 4E 45 58 54     or KL.     NEXT
029F40:  20 53 59 4E 43 20 61 72 65 20 63 61 6C 6C 65 64     SYNC are called
029F50:  29 20 61 6E 64 20 68 65 6E 63 65 20 61 72 65 20    ) and hence are 
029F60:  6E 6F 74 20 70 72 6F 63 65 73 73 65 64 2E 0D 0D    not processed...
029F70:  20 20 20 20 20 4B 4C 20 45 56 45 4E 54 20 45 4E         KL EVENT EN
029F80:  41 42 4C 45 20 72 65 76 65 72 73 65 73 20 74 68    ABLE reverses th
029F90:  65 20 65 66 66 65 63 74 20 6F 66 20 4B 4C 20 45    e effect of KL E
029FA0:  56 45 4E 54 20 44 49 53 41 42 4C 45 0D 0D 20 20    VENT DISABLE..  
029FB0:  20 20 20 49 74 20 69 73 20 6E 6F 74 20 20 70 6F       It is not  po
029FC0:  73 73 69 62 6C 65 20 20 74 6F 20 20 64 69 73 61    ssible  to  disa
029FD0:  62 6C 65 20 20 73 79 6E 63 68 72 6F 6E 6F 75 73    ble  synchronous
029FE0:  20 20 65 76 65 6E 74 73 20 70 65 72 6D 65 6E 65      events permene
029FF0:  6E 74 6C 79 20 66 72 6F 6D 0D 20 20 20 20 20 69    ntly from.     i
02A000:  6E 73 69 64 65 20 61 20 73 79 6E 63 68 72 6F 6E    nside a synchron
02A010:  6F 75 73 20 20 65 76 65 6E 74 20 20 72 6F 75 74    ous  event  rout
02A020:  69 6E 65 20 20 61 73 20 20 74 68 65 20 20 70 72    ine  as  the  pr
02A030:  65 76 69 6F 75 73 20 20 63 75 72 72 65 6E 74 20    evious  current 
02A040:  65 76 65 6E 74 0D 20 20 20 20 20 70 72 69 6F 72    event.     prior
02A050:  69 74 79 20 69 73 20 72 65 73 74 6F 72 65 64 20    ity is restored 
02A060:  77 68 65 6E 20 74 68 65 20 65 76 65 6E 74 20 72    when the event r
02A070:  6F 75 74 69 6E 65 20 72 65 74 75 72 6E 73 2E 0D    outine returns..
02A080:  0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    .     ----------
02A090:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02A0A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02A0B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02A0C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20    ------------..  
02A0D0:  20 20 20 26 42 44 30 37 20 2D 20 4B 4C 20 45 56       &BD07 - KL EV
02A0E0:  45 4E 54 20 45 4E 41 42 4C 45 20 2D 20 45 6E 61    ENT ENABLE - Ena
02A0F0:  62 6C 65 20 6E 6F 72 6D 61 6C 20 73 79 6E 63 68    ble normal synch
02A100:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02A300:  72 6F 6E 6F 75 73 20 65 76 65 6E 74 73 0D 0D 0D    ronous events...
02A310:  0D 0D 0D 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A    .....     Entry:
02A320:  0D 0D 20 20 20 20 20 4E 6F 6E 65 0D 0D 20 20 20    ..     None..   
02A330:  20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20 45 76      Exit:..     Ev
02A340:  65 6E 74 73 20 61 72 65 20 65 6E 61 62 6C 65 64    ents are enabled
02A350:  20 62 79 20 64 65 66 61 75 6C 74 2E 20 4B 4C 20     by default. KL 
02A360:  20 45 56 45 4E 54 20 45 4E 41 42 4C 45 20 72 65     EVENT ENABLE re
02A370:  76 65 72 73 65 73 20 74 68 65 20 65 66 66 65 63    verses the effec
02A380:  74 20 6F 66 0D 20 20 20 20 20 4B 4C 20 45 56 45    t of.     KL EVE
02A390:  4E 54 20 44 49 53 41 42 4C 45 2E 0D 0D 20 20 20    NT DISABLE...   
02A3A0:  20 20 49 74 20 69 73 20 6E 6F 74 20 20 70 6F 73      It is not  pos
02A3B0:  73 69 62 6C 65 20 20 74 6F 20 20 65 6E 61 62 6C    sible  to  enabl
02A3C0:  65 20 20 73 79 6E 63 68 72 6F 6E 6F 75 73 20 20    e  synchronous  
02A3D0:  65 76 65 6E 74 73 20 20 70 65 72 6D 61 6E 65 6E    events  permanen
02A3E0:  74 6C 79 20 66 72 6F 6D 0D 20 20 20 20 20 69 6E    tly from.     in
02A3F0:  73 69 64 65 20 61 20 73 79 6E 63 68 72 6F 6E 6F    side a synchrono
02A400:  75 73 20 65 76 65 6E 74 20 72 6F 75 74 69 6E 65    us event routine
02A410:  20 61 73 20 74 68 65 20 63 75 72 72 65 6E 74 20     as the current 
02A420:  65 76 65 6E 74 20 70 72 69 6F 72 69 74 79 20 77    event priority w
02A430:  68 69 63 68 0D 20 20 20 20 20 69 73 20 75 73 65    hich.     is use
02A440:  64 20 74 6F 20 64 69 73 61 62 6C 65 20 20 74 68    d to disable  th
02A450:  65 20 20 65 76 65 6E 74 73 20 20 69 73 20 20 72    e  events  is  r
02A460:  65 73 74 6F 72 65 64 20 20 77 68 65 6E 20 20 74    estored  when  t
02A470:  68 65 20 65 76 65 6E 74 20 72 6F 75 74 69 6E 65    he event routine
02A480:  0D 20 20 20 20 20 72 65 74 75 72 6E 73 2E 0D 0D    .     returns...
02A490:  20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D         -----------
02A4A0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02A4B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02A4C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02A4D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 20 20 20 20    -----------.    
02A4E0:  20 26 42 44 30 41 20 2D 20 4B 4C 20 44 49 53 41     &BD0A - KL DISA
02A4F0:  52 4D 20 45 56 45 4E 54 20 2D 20 50 72 65 76 65    RM EVENT - Preve
02A500:  0D 45 78 70 61 6E 73 69 6F 6E 20 63 68 61 72 61    .Expansion chara
02A510:  63 74 65 72 73 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D    cters.==========
02A520:  3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D 2B 2D 2D 2D    ==========..+---
02A530:  2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D    +---+---+---+---
02A540:  2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D    +---+---+---+---
02A550:  2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D    +---+---+---+---
02A560:  2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D    +---+---+---+---
02A570:  2B 2D 2D 2D 2B 0D 7C 20 20 20 7C 20 20 20 7C 20    +---+.|   |   | 
02A580:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02A590:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02A5A0:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02A5B0:  20 20 7C 31 33 35 7C 31 33 36 7C 31 33 37 7C 0D      |135|136|137|.
02A5C0:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    |   |   |   |   
02A5D0:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    |   |   |   |   
02A5E0:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    |   |   |   |   
02A5F0:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 31 33 35    |   |   |   |135
02A600:  7C 31 33 36 7C 31 33 37 7C 0D 7C 20 20 20 7C 20    |136|137|.|   | 
02A610:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02A620:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02A630:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02A640:  20 20 7C 20 20 20 7C 31 33 35 7C 31 33 36 7C 31      |   |135|136|1
02A650:  33 37 7C 0D 2B 2D 2D 2D 2B 2D 2B 2D 2B 2D 2B 2D    37|.+---+-+-+-+-
02A660:  2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D    +-+-+-+-+-+-+-+-
02A670:  2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D    +-+-+-+-+-+-+-+-
02A680:  2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2D 2D    +-+-+-+-+-+-+---
02A690:  2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 0D 7C 20    +---+---+---+.| 
02A6A0:  20 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20        |   |   |   
02A6B0:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    |   |   |   |   
02A6C0:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    |   |   |   |   
02A6D0:  7C 20 20 20 7C 20 20 20 20 20 7C 31 33 32 7C 31    |   |     |132|1
02A6E0:  33 33 7C 31 33 34 7C 0D 7C 20 20 20 20 20 7C 20    33|134|.|     | 
02A6F0:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02A700:  6E 74 20 61 6E 20 65 76 65 6E 74 20 66 72 6F 6D    nt an event from
02A710:  20 6F 63 63 75 72 69 6E 67 0D 0D 20 20 20 20 20     occuring..     
02A720:  45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 48 4C 20    Entry:..     HL 
02A730:  3D 20 61 64 64 72 65 73 73 20 6F 66 20 74 68 65    = address of the
02A740:  20 65 76 65 6E 74 20 62 6C 6F 63 6B 0D 0D 20 20     event block..  
02A750:  20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20 41       Exit:..     A
02A760:  46 20 63 68 61 6E 67 65 64 0D 20 20 20 20 20 41    F changed.     A
02A770:  6C 6C 20 6F 74 68 65 72 73 20 75 6E 63 68 61 6E    ll others unchan
02A780:  67 65 64 2E 0D 0D 20 20 20 20 20 4E 4F 54 45 53    ged...     NOTES
02A790:  3A 0D 0D 20 20 20 20 20 4B 4C 20 44 49 53 41 52    :..     KL DISAR
02A7A0:  4D 20 45 56 45 4E 54 20 73 68 6F 75 6C 64 20 20    M EVENT should  
02A7B0:  62 65 20 20 75 73 65 64 20 20 77 69 74 68 20 61    be  used  with a
02A7C0:  73 79 6E 63 68 72 6F 6E 6F 75 73 20 65 76 65 6E    synchronous even
02A7D0:  74 73 2E 20 53 79 6E 63 72 6F 6E 6F 75 73 0D 20    ts. Syncronous. 
02A7E0:  20 20 20 20 65 76 65 6E 74 73 20 6D 61 79 20 62        events may b
02A7F0:  65 20 64 69 73 61 72 6D 65 64 20 20 62 79 20 20    e disarmed  by  
02A800:  63 61 6C 6C 69 6E 67 20 20 4B 4C 20 20 44 45 4C    calling  KL  DEL
02A810:  20 20 53 59 4E 43 48 52 4F 55 4E 4F 55 53 2C 20      SYNCHROUNOUS, 
02A820:  77 68 69 63 68 20 61 6C 73 6F 0D 20 20 20 20 20    which also.     
02A830:  65 6E 73 75 72 65 73 20 74 68 61 74 20 74 68 65    ensures that the
02A840:  20 65 76 65 6E 74 20 69 73 20 6E 6F 74 20 6F 6E     event is not on
02A850:  20 74 68 65 20 73 79 6E 63 68 72 6F 6E 6F 75 73     the synchronous
02A860:  20 65 76 65 6E 74 20 71 75 65 75 65 2E 0D 0D 20     event queue... 
02A870:  20 20 20 20 54 68 65 20 65 76 65 6E 74 20 6D 61        The event ma
02A880:  79 20 62 65 20 72 65 61 72 6D 65 64 20 62 79 20    y be rearmed by 
02A890:  20 72 65 69 6E 69 74 69 61 6C 69 7A 69 6E 67 20     reinitializing 
02A8A0:  20 69 74 20 20 28 4B 4C 20 49 4E 49 54 20 45 56     it  (KL INIT EV
02A8B0:  45 4E 54 29 20 6F 72 20 62 79 0D 20 20 20 20 20    ENT) or by.     
02A8C0:  73 65 74 74 69 6E 67 20 74 68 65 20 65 76 65 6E    setting the even
02A8D0:  74 20 63 6F 75 6E 74 20 28 62 79 74 65 32 20 6F    t count (byte2 o
02A8E0:  66 20 74 68 65 20 65 76 65 6E 74 20 62 6C 6F 63    f the event bloc
02A8F0:  6B 29 20 74 6F 20 7A 65 72 6F 2E 0D 0D 0D 20 20    k) to zero....  
02A900:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02A910:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02A920:  20 20 20 20 7C 31 33 32 7C 31 33 33 7C 31 33 34        |132|133|134
02A930:  7C 0D 7C 20 20 20 20 20 7C 20 20 20 7C 20 20 20    |.|     |   |   
02A940:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    |   |   |   |   
02A950:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    |   |   |   |   
02A960:  7C 20 20 20 7C 20 20 20 7C 20 20 20 20 20 7C 31    |   |   |     |1
02A970:  33 32 7C 31 33 33 7C 31 33 34 7C 0D 2B 2D 2D 2D    32|133|134|.+---
02A980:  2D 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D    --+-+-+-+-+-+-+-
02A990:  2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D    +-+-+-+-+-+-+-+-
02A9A0:  2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D    +-+-+-+-+-+-+-+-
02A9B0:  2B 2D 2B 2D 2B 20 20 20 2B 2D 2D 2D 2B 2D 2D 2D    +-+-+   +---+---
02A9C0:  2B 2D 2D 2D 2B 0D 7C 20 20 20 20 20 20 20 7C 20    +---+.|       | 
02A9D0:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02A9E0:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02A9F0:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02AA00:  20 20 7C 31 32 39 7C 31 33 30 7C 31 33 31 7C 0D      |129|130|131|.
02AA10:  7C 20 20 20 20 20 20 20 7C 20 20 20 7C 20 20 20    |       |   |   
02AA20:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    |   |   |   |   
02AA30:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    |   |   |   |   
02AA40:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 31 32 39    |   |   |   |129
02AA50:  7C 31 33 30 7C 31 33 31 7C 0D 7C 20 20 20 20 20    |130|131|.|     
02AA60:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02AA70:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02AA80:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02AA90:  20 20 7C 20 20 20 7C 31 32 39 7C 31 33 30 7C 31      |   |129|130|1
02AAA0:  33 31 7C 0D 2B 2D 2D 2D 2D 2D 2D 2D 2B 2D 2B 2D    31|.+-------+-+-
02AAB0:  2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D    +-+-+-+-+-+-+-+-
02AAC0:  2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D    +-+-+-+-+-+-+-+-
02AAD0:  2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2D 2D    +-+-+-+-+-+-+---
02AAE0:  2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 0D 7C 20    +---+---+---+.| 
02AAF0:  20 20 20 20 20 20 20 20 7C 20 20 20 7C 20 20 20            |   |   
02AB00:  20 20 20 26 42 44 30 44 20 2D 20 4B 4C 20 54 49       &BD0D - KL TI
02AB10:  4D 45 20 50 4C 45 41 53 45 20 2D 20 41 73 6B 20    ME PLEASE - Ask 
02AB20:  74 68 65 20 74 69 6D 65 20 65 6C 61 70 73 65 64    the time elapsed
02AB30:  2E 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D    ...     Entry:..
02AB40:  20 20 20 20 20 4E 6F 6E 65 0D 0D 20 20 20 20 20         None..     
02AB50:  45 78 69 74 3A 0D 0D 20 20 20 20 20 44 45 20 61    Exit:..     DE a
02AB60:  6E 64 20 48 4C 20 3D 20 63 6F 75 6E 74 0D 0D 20    nd HL = count.. 
02AB70:  20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20        Notes:..    
02AB80:  20 54 68 65 20 63 6F 75 6E 74 20 69 73 20 61 20     The count is a 
02AB90:  66 6F 75 72 20 62 79 74 65 20 6E 75 6D 62 65 72    four byte number
02ABA0:  2E 20 44 20 20 69 73 20 74 68 65 20 6D 6F 73 74    . D  is the most
02ABB0:  20 73 69 67 6E 69 66 69 63 61 6E 74 20 62 79 74     significant byt
02ABC0:  65 20 61 6E 64 20 4C 0D 20 20 20 20 20 69 73 20    e and L.     is 
02ABD0:  74 68 65 20 6C 65 61 73 74 20 73 69 67 6E 69 66    the least signif
02ABE0:  69 63 61 6E 74 20 62 79 74 65 2E 0D 0D 20 20 20    icant byte...   
02ABF0:  20 20 54 68 65 20 63 6F 75 6E 74 20 69 73 20 73      The count is s
02AC00:  65 74 20 74 6F 20 7A 65 72 6F 20 77 68 65 6E 20    et to zero when 
02AC10:  74 68 65 20 20 6D 61 63 68 69 6E 65 20 20 69 73    the  machine  is
02AC20:  20 74 75 72 6E 65 64 20 6F 6E 20 6F 72 20 6D 61     turned on or ma
02AC30:  79 20 62 65 20 73 65 74 0D 20 20 20 20 20 74 6F    y be set.     to
02AC40:  20 7A 65 72 6F 20 62 79 20 75 73 69 6E 67 20 4B     zero by using K
02AC50:  4C 20 54 49 4D 45 20 53 45 54 2E 0D 0D 20 20 20    L TIME SET...   
02AC60:  20 20 54 68 65 20 63 6F 75 6E 74 20 69 73 20 6E      The count is n
02AC70:  6F 74 20 6B 65 70 74 20 75 70 20 20 74 6F 20 20    ot kept up  to  
02AC80:  64 61 74 65 20 20 69 66 20 20 6C 6F 6E 67 20 70    date  if  long p
02AC90:  65 72 69 6F 64 73 20 6F 66 20 74 69 6D 65 20 61    eriods of time a
02ACA0:  72 65 20 73 70 65 6E 74 0D 20 20 20 20 20 77 69    re spent.     wi
02ACB0:  74 68 20 74 68 65 20 69 6E 74 65 72 75 70 74 73    th the interupts
02ACC0:  20 64 69 73 61 62 6C 65 64 2E 0D 0D 20 20 20 20     disabled...    
02ACD0:  20 49 6E 74 65 72 75 70 74 73 20 61 72 65 20 65     Interupts are e
02ACE0:  6E 61 62 6C 65 64 2E 0D 20 20 20 20 20 2D 2D 2D    nabled..     ---
02ACF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02AD00:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02AD10:  24 00 01 00 02 09 4E E5 24 00 C1 02 00 00 00 02    $.....N.$.......
02AD20:  24 00 C6 02 00 00 00 02 24 00 C2 02 00 00 00 02    $.......$.......
02AD30:  24 00 C7 02 00 00 00 02 24 00 C3 02 00 00 00 02    $.......$.......
02AD40:  24 00 C8 02 00 00 00 02 24 00 C4 02 00 00 00 02    $.......$.......
02AD50:  24 00 C9 02 00 00 00 02 24 00 C5 02 00 00 00 02    $.......$.......
02AD60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD70:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD80:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AD90:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADA0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADB0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADC0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADD0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADE0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02ADF0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02AE00:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    |   |   |   |   
02AE10:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    |   |   |   |   
02AE20:  7C 20 20 20 7C 20 20 20 20 20 7C 31 32 38 7C 20    |   |     |128| 
02AE30:  20 20 7C 31 33 38 7C 0D 7C 20 20 20 20 20 20 20      |138|.|       
02AE40:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02AE50:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02AE60:  20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20      |   |   |   | 
02AE70:  20 20 20 20 7C 31 32 38 7C 20 4E 41 7C 31 33 38        |128| NA|138
02AE80:  7C 0D 7C 20 20 20 20 20 20 20 20 20 7C 20 20 20    |.|         |   
02AE90:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    |   |   |   |   
02AEA0:  7C 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    |   |   |   |   
02AEB0:  7C 20 20 20 7C 20 20 20 7C 20 20 20 20 20 7C 31    |   |   |     |1
02AEC0:  32 38 7C 20 20 20 7C 31 33 38 7C 0D 2B 2D 2D 2D    28|   |138|.+---
02AED0:  2D 2D 2D 2D 2D 2D 2B 2D 2D 2D 2B 2D 2B 2D 2B 2D    ------+---+-+-+-
02AEE0:  2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D    --+---+---+---+-
02AEF0:  2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2B 2D 2B 2D    --+---+---+-+-+-
02AF00:  2D 2D 2B 2D 2D 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D    --+-----+---+---
02AF10:  2B 2D 2D 2D 2B 20 0D 7C 09 20 20 7C 20 20 20 20    +---+ .|.  |    
02AF20:  20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20     |              
02AF30:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AF40:  20 7C 20 20 20 20 31 34 30 20 20 20 20 7C 20 20     |    140    |  
02AF50:  20 7C 20 20 20 7C 20 20 20 7C 0D 7C 20 20 20 20     |   |   |.|    
02AF60:  4E 41 09 20 20 7C 20 20 4E 41 20 7C 20 20 20 20    NA.  |  NA |    
02AF70:  20 20 20 20 20 20 20 20 20 20 20 4E 41 20 20 20               NA   
02AF80:  20 20 20 20 20 20 20 20 20 20 20 7C 20 20 20 20               |    
02AF90:  31 33 39 20 20 20 20 7C 20 4E 41 7C 20 4E 41 7C    139    | NA| NA|
02AFA0:  20 4E 41 7C 0D 7C 09 20 20 7C 20 20 20 20 20 7C     NA|.|.  |     |
02AFB0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02AFC0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7C                   |
02AFD0:  20 20 20 20 31 33 39 20 20 20 20 7C 20 20 20 7C        139    |   |
02AFE0:  20 20 20 7C 20 20 20 7C 0D 2B 2D 2D 2D 2D 2D 2D       |   |.+------
02AFF0:  2D 2D 2D 2B 2D 2D 2D 2D 2D 2B 2D 2D 2D 2D 2D 2D    ---+-----+------
02B000:  20 20 20 20 20 20 20 20 20 20 2B 2D 2D 2D 2B 0D              +---+.
02B010:  20 20 20 20 20 20 20 20 20 20 20 7C 20 32 36 7C               | 26|
02B020:  0D 20 20 20 20 20 20 20 20 20 20 20 7C 20 33 36    .           | 36
02B030:  7C 0D 20 20 20 20 20 2B 2D 2D 2D 2B 2D 2B 2D 2D    |.     +---+-+--
02B040:  2D 2B 2D 2B 2D 2D 2D 2B 0D 4C 65 66 74 20 7C 20    -+-+---+.Left | 
02B050:  31 32 7C 20 20 20 20 20 20 20 7C 20 31 34 7C 20    12|       | 14| 
02B060:  52 69 67 68 74 0D 20 20 20 20 20 7C 20 35 32 7C    Right.     | 52|
02B070:  20 20 20 20 20 20 20 7C 20 35 34 7C 0D 20 20 20           | 54|.   
02B080:  20 20 7C 20 37 32 7C 20 20 20 20 20 20 20 7C 20      | 72|       | 
02B090:  37 34 7C 0D 20 20 20 20 20 2B 2D 2D 2D 2B 2D 2B    74|.     +---+-+
02B0A0:  2D 2D 2D 2B 2D 2B 2D 2D 2D 2B 0D 09 20 20 20 7C    ---+-+---+..   |
02B0B0:  20 32 35 7C 0D 20 20 20 20 20 20 20 20 20 20 20     25|.           
02B0C0:  7C 20 33 35 7C 0D 09 20 20 20 2B 2D 2D 2D 2B 0D    | 35|..   +---+.
02B0D0:  09 20 20 44 6F 77 6E 0D 0D 20 20 20 20 20 20 20    .  Down..       
02B0E0:  20 20 46 69 72 65 31 20 46 69 72 65 32 0D 09 20      Fire1 Fire2.. 
02B0F0:  20 2B 2D 2D 2D 2B 2D 2D 2D 2B 0D 09 20 20 7C 20     +---+---+..  | 
02B100:  30 37 7C 20 30 36 7C 0D 09 20 20 7C 20 34 37 7C    07| 06|..  | 47|
02B110:  20 34 36 7C 0D 09 20 20 7C 20 36 37 7C 20 36 36     46|..  | 67| 66
02B120:  7C 0D 09 20 20 2B 2D 2D 2D 2B 2D 2D 2D 2B 0D 0D    |..  +---+---+..
02B130:  0D 0D 4B 65 79 20 6D 61 70 0D 3D 3D 3D 3D 3D 3D    ..Key map.======
02B140:  3D 0D 0D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B    =..+---+---+---+
02B150:  2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B    ---+---+---+---+
02B160:  2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B    ---+---+---+---+
02B170:  2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B    ---+---+---+---+
02B180:  2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 0D 7C 20 36    ---+---+---+.| 6
02B190:  36 7C 20 36 34 7C 20 36 35 7C 20 35 37 7C 20 35    6| 64| 65| 57| 5
02B1A0:  36 7C 20 34 39 7C 20 34 38 7C 20 34 31 7C 20 34    6| 49| 48| 41| 4
02B1B0:  30 7C 20 33 33 7C 20 33 32 7C 20 32 35 7C 20 32    0| 33| 32| 25| 2
02B1C0:  34 7C 20 31 36 7C 20 37 39 7C 20 31 30 7C 20 31    4| 16| 79| 10| 1
02B1D0:  31 7C 20 20 33 7C 0D 2B 2D 2D 2D 2B 2D 2B 2D 2B    1|  3|.+---+-+-+
02B1E0:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02B1F0:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02B200:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02B210:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2B 2D 2D 2D 2D 2D 2D    ---------+------
02B220:  2D 2D 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D    -----+---+---+--
02B230:  2D 2B 0D 0D 28 41 6C 6C 20 6F 74 68 65 72 73 20    -+..(All others 
02B240:  4E 41 29 0D 0D 41 53 43 49 49 20 4B 65 79 6D 61    NA)..ASCII Keyma
02B250:  70 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 0D    p.============..
02B260:  4E 41 20 2D 20 6E 6F 74 20 61 76 61 69 6C 61 62    NA - not availab
02B270:  6C 65 0D 0D 0D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D    le...+---+---+--
02B280:  2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D    -+---+---+---+--
02B290:  2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D    -+---+---+---+--
02B2A0:  2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D    -+---+---+---+--
02B2B0:  2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 0D 7C    -+---+---+---+.|
02B2C0:  20 4E 41 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C     NA|   |   |   |
02B2D0:  20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C       |   |   |   |
02B2E0:  20 20 20 7C 20 20 20 7C 20 31 46 7C 20 20 20 7C       |   | 1F|   |
02B2F0:  20 31 45 7C 20 31 30 7C 20 37 46 7C 20 20 20 7C     1E| 10| 7F|   |
02B300:  20 20 20 7C 20 20 20 7C 0D 7C 20 20 20 7C 20 32       |   |.|   | 2
02B310:  31 7C 20 32 32 7C 20 32 33 7C 20 32 34 7C 20 32    1| 22| 23| 24| 2
02B320:  35 7C 20 32 36 7C 20 32 37 7C 20 32 38 7C 20 32    5| 26| 27| 28| 2
02B330:  39 7C 20 35 46 7C 20 33 44 7C 20 41 33 7C 20 31    9| 5F| 3D| A3| 1
02B340:  30 7C 20 37 46 7C 20 4E 41 7C 20 4E 41 7C 20 4E    0| 7F| NA| NA| N
02B350:  41 7C 0D 7C 20 20 20 7C 20 33 31 7C 20 33 32 7C    A|.|   | 31| 32|
02B360:  20 33 33 7C 20 33 34 7C 20 33 35 7C 20 33 36 7C     33| 34| 35| 36|
02B370:  20 33 37 7C 20 33 38 7C 20 33 39 7C 20 33 30 7C     37| 38| 39| 30|
02B380:  20 32 44 7C 20 35 45 7C 20 31 30 7C 20 37 46 7C     2D| 5E| 10| 7F|
02B390:  20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 2B 2D 2D       |   |   |.+--
02B3A0:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02B3B0:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02B3C0:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02B3D0:  2D 2B 2D 2B 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D    -+-+-+---+---+--
02B3E0:  2D 2B 2D 2D 2D 2B 0D 7C 20 45 31 20 20 7C 20 31    -+---+.| E1  | 1
02B3F0:  31 7C 20 31 37 7C 20 30 35 7C 20 31 32 7C 20 31    1| 17| 05| 12| 1
02B400:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02B410:  2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B    ---+---+---+---+
02B420:  0D 7C 20 36 38 20 20 7C 20 36 37 7C 20 35 39 7C    .| 68  | 67| 59|
02B430:  20 35 38 7C 20 35 30 7C 20 35 31 7C 20 34 33 7C     58| 50| 51| 43|
02B440:  20 34 32 7C 20 33 35 7C 20 33 34 7C 20 32 37 7C     42| 35| 34| 27|
02B450:  20 32 36 7C 20 31 37 7C 20 20 20 31 38 7C 20 32     26| 17|   18| 2
02B460:  30 7C 20 31 32 7C 20 20 34 7C 0D 2B 2D 2D 2D 2D    0| 12|  4|.+----
02B470:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02B480:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02B490:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02B4A0:  2D 2B 2D 2B 20 20 20 2B 2D 2D 2D 2B 2D 2D 2D 2B    -+-+   +---+---+
02B4B0:  2D 2D 2D 2B 0D 7C 20 37 30 20 20 20 20 7C 20 36    ---+.| 70    | 6
02B4C0:  39 7C 20 36 30 7C 20 36 31 7C 20 35 33 7C 20 35    9| 60| 61| 53| 5
02B4D0:  32 7C 20 34 34 7C 20 34 35 7C 20 33 37 7C 20 33    2| 44| 45| 37| 3
02B4E0:  36 7C 20 32 39 7C 20 32 38 7C 20 31 39 7C 20 20    6| 29| 28| 19|  
02B4F0:  20 7C 20 31 33 7C 20 31 34 7C 20 20 35 7C 0D 2B     | 13| 14|  5|.+
02B500:  2D 2D 2D 2D 2D 2D 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -------+-+-+-+-+
02B510:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02B520:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02B530:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B    -+-+-+-+---+---+
02B540:  2D 2D 2D 2B 2D 2D 2D 2B 0D 7C 20 32 31 20 20 20    ---+---+.| 21   
02B550:  20 20 20 7C 20 37 31 7C 20 36 33 7C 20 36 32 7C       | 71| 63| 62|
02B560:  20 35 35 7C 20 35 34 7C 20 34 36 7C 20 33 38 7C     55| 54| 46| 38|
02B570:  20 33 39 7C 20 33 31 7C 20 33 30 7C 20 32 32 7C     39| 31| 30| 22|
02B580:  20 20 32 31 20 7C 20 31 35 7C 20 20 30 7C 20 20      21 | 15|  0|  
02B590:  37 7C 0D 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2B 2D 2D    7|.+---------+--
02B5A0:  2D 2B 2D 2B 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D    -+-+-+---+---+--
02B5B0:  2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D    -+---+---+---+--
02B5C0:  2D 2B 2D 2B 2D 2B 2D 2D 2D 2B 2D 2D 2D 2D 2D 2B    -+-+-+---+-----+
02B5D0:  2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 20 0D 7C 20    ---+---+---+ .| 
02B5E0:  32 33 09 20 20 7C 20 20 20 39 20 7C 20 20 20 20    23.  |   9 |    
02B5F0:  20 20 20 20 20 20 20 20 20 20 20 34 37 20 20 20               47   
02B600:  34 7C 20 31 39 7C 20 31 35 7C 20 30 39 7C 20 30    4| 19| 15| 09| 0
02B610:  46 7C 20 31 30 7C 20 30 30 7C 20 31 42 7C 20 20    F| 10| 00| 1B|  
02B620:  20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20 7C       |   |   |   |
02B630:  0D 7C 20 30 39 20 20 7C 20 35 31 7C 20 35 37 7C    .| 09  | 51| 57|
02B640:  20 34 35 7C 20 35 32 7C 20 35 34 7C 20 35 39 7C     45| 52| 54| 59|
02B650:  20 35 35 7C 20 34 39 7C 20 34 46 7C 20 35 30 7C     55| 49| 4F| 50|
02B660:  20 37 43 7C 20 37 42 7C 20 20 30 44 20 7C 20 4E     7C| 7B|  0D | N
02B670:  41 7C 20 4E 41 7C 20 4E 41 7C 0D 7C 20 30 39 20    A| NA| NA|.| 09 
02B680:  20 7C 20 37 31 7C 20 37 37 7C 20 36 35 7C 20 37     | 71| 77| 65| 7
02B690:  32 7C 20 37 34 7C 20 37 39 7C 20 37 35 7C 20 36    2| 74| 79| 75| 6
02B6A0:  39 7C 20 36 46 7C 20 37 30 7C 20 34 30 7C 20 35    9| 6F| 70| 40| 5
02B6B0:  42 7C 20 20 30 44 20 7C 20 20 20 7C 20 20 20 7C    B|  0D |   |   |
02B6C0:  20 20 20 7C 0D 2B 2D 2D 2D 2D 2D 2B 2D 2B 2D 2B       |.+-----+-+-+
02B6D0:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02B6E0:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02B6F0:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 30 44    -+-+-+-+-+-+-+0D
02B700:  20 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 0D 7C     +---+---+---+.|
02B710:  20 20 20 20 20 20 20 7C 20 30 31 7C 20 31 33 7C           | 01| 13|
02B720:  20 30 34 7C 20 30 36 7C 20 30 37 7C 20 30 38 7C     04| 06| 07| 08|
02B730:  20 30 41 7C 20 30 42 7C 20 30 43 7C 20 20 20 7C     0A| 0B| 0C|   |
02B740:  20 20 20 7C 20 31 44 7C 20 20 20 7C 20 20 20 7C       | 1D|   |   |
02B750:  20 20 20 7C 20 20 20 7C 0D 7C 20 4E 41 20 20 20       |   |.| NA   
02B760:  20 7C 20 34 31 7C 20 35 33 7C 20 34 34 7C 20 34     | 41| 53| 44| 4
02B770:  36 7C 20 34 37 7C 20 34 38 7C 20 34 41 7C 20 34    6| 47| 48| 4A| 4
02B780:  42 7C 20 34 43 7C 20 32 41 7C 20 32 42 7C 20 37    B| 4C| 2A| 2B| 7
02B790:  44 7C 20 20 20 7C 20 4E 41 7C 20 4E 41 7C 20 4E    D|   | NA| NA| N
02B7A0:  41 7C 0D 7C 20 20 20 20 20 20 20 7C 20 36 31 7C    A|.|       | 61|
02B7B0:  20 37 33 7C 20 36 34 7C 20 36 36 7C 20 36 37 7C     73| 64| 66| 67|
02B7C0:  20 36 38 7C 20 36 41 7C 20 36 42 7C 20 36 43 7C     68| 6A| 6B| 6C|
02B7D0:  20 33 41 7C 20 33 42 7C 20 35 44 7C 20 20 20 7C     3A| 3B| 5D|   |
02B7E0:  20 20 20 7C 20 20 20 7C 20 20 20 7C 0D 2B 2D 2D       |   |   |.+--
02B7F0:  2D 2D 2D 2D 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -----+-+-+-+-+-+
02B800:  20 20 20 20 20 20 20 20 20 20 20 7C 20 20 20 20               |    
02B810:  20 20 36 20 20 20 20 7C 20 20 38 7C 20 20 32 7C      6    |  8|  2|
02B820:  20 20 31 7C 0D 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2B      1|.+---------+
02B830:  2D 2D 2D 2D 2D 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    -----+----------
02B840:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02B850:  2D 2D 2D 2D 2D 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    -----+----------
02B860:  2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 0D 0D    -+---+---+---+..
02B870:  0D 0D 4A 6F 79 73 74 69 63 6B 20 30 0D 3D 3D 3D    ..Joystick 0.===
02B880:  3D 3D 3D 3D 3D 3D 3D 0D 09 20 20 20 20 20 55 70    =======..     Up
02B890:  0D 20 20 20 20 20 20 20 20 20 20 20 2B 2D 2D 2D    .           +---
02B8A0:  2B 0D 20 20 20 20 20 20 20 20 20 20 20 7C 20 37    +.           | 7
02B8B0:  32 7C 0D 20 20 20 20 20 2B 2D 2D 2D 2B 2D 2B 2D    2|.     +---+-+-
02B8C0:  2D 2D 2B 2D 2B 2D 2D 2D 2B 0D 4C 65 66 74 20 7C    --+-+---+.Left |
02B8D0:  20 37 34 7C 20 20 20 20 20 20 20 7C 20 37 35 7C     74|       | 75|
02B8E0:  20 52 69 67 68 74 0D 20 20 20 20 20 2B 2D 2D 2D     Right.     +---
02B8F0:  2B 2D 2B 2D 2D 2D 2B 2D 2B 2D 2D 2D 2B 0D 09 20    +-+---+-+---+.. 
02B900:  20 20 7C 20 37 33 7C 0D 09 20 20 20 2B 2D 2D 2D      | 73|..   +---
02B910:  2B 0D 09 20 20 44 6F 77 6E 0D 0D 20 20 20 20 20    +..  Down..     
02B920:  20 20 20 20 46 69 72 65 31 20 46 69 72 65 32 0D        Fire1 Fire2.
02B930:  09 20 20 2B 2D 2D 2D 2B 2D 2D 2D 2B 0D 09 20 20    .  +---+---+..  
02B940:  7C 20 37 36 7C 20 37 37 7C 0D 09 20 20 2B 2D 2D    | 76| 77|..  +--
02B950:  2D 2B 2D 2D 2D 2B 0D 0D 0D 0D 4A 6F 79 73 74 69    -+---+....Joysti
02B960:  63 6B 20 31 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D    ck 1.==========.
02B970:  09 20 20 20 20 20 55 70 0D 20 20 20 20 20 20 20    .     Up.       
02B980:  20 20 20 20 2B 2D 2D 2D 2B 0D 20 20 20 20 20 20        +---+.      
02B990:  20 20 20 20 20 7C 20 34 38 7C 0D 20 20 20 20 20         | 48|.     
02B9A0:  2B 2D 2D 2D 2B 2D 2B 2D 2D 2D 2B 2D 2B 2D 2D 2D    +---+-+---+-+---
02B9B0:  2B 0D 4C 65 66 74 20 7C 20 35 30 7C 20 20 20 20    +.Left | 50|    
02B9C0:  20 20 20 7C 20 35 31 7C 20 52 69 67 68 74 0D 20       | 51| Right. 
02B9D0:  20 20 20 20 2B 2D 2D 2D 2B 2D 2B 2D 2D 2D 2B 2D        +---+-+---+-
02B9E0:  2B 2D 2D 2D 2B 0D 09 20 20 20 7C 20 34 39 7C 0D    +---+..   | 49|.
02B9F0:  09 20 20 20 2B 2D 2D 2D 2B 0D 09 20 20 44 6F 77    .   +---+..  Dow
02BA00:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02BA10:  2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B 2D 2B    -+-+-+-+-+-+-+-+
02BA20:  2D 2B 2D 2B 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D    -+-+-+---+---+--
02BA30:  2D 2B 2D 2D 2D 2B 0D 7C 20 20 20 20 20 20 20 20    -+---+.|        
02BA40:  20 7C 20 31 41 7C 20 31 38 7C 20 30 33 7C 20 31     | 1A| 18| 03| 1
02BA50:  36 7C 20 30 32 7C 20 30 45 7C 20 30 44 7C 20 20    6| 02| 0E| 0D|  
02BA60:  20 7C 20 20 20 7C 20 20 20 7C 20 31 43 7C 20 20     |   |   | 1C|  
02BA70:  20 20 20 7C 20 20 20 7C 20 46 38 7C 20 20 20 7C       |   | F8|   |
02BA80:  0D 7C 20 4E 41 20 20 20 20 20 20 7C 20 35 41 7C    .| NA      | 5A|
02BA90:  20 35 38 7C 20 34 33 7C 20 35 36 7C 20 34 32 7C     58| 43| 56| 42|
02BAA0:  20 34 45 7C 20 34 44 7C 20 33 43 7C 20 33 45 7C     4E| 4D| 3C| 3E|
02BAB0:  20 33 46 7C 20 36 30 7C 20 4E 41 20 20 7C 20 4E     3F| 60| NA  | N
02BAC0:  41 7C 20 46 34 7C 20 4E 41 7C 0D 7C 20 20 20 20    A| F4| NA|.|    
02BAD0:  20 20 20 20 20 7C 20 37 41 7C 20 37 38 7C 20 36         | 7A| 78| 6
02BAE0:  33 7C 20 37 36 7C 20 36 32 7C 20 36 45 7C 20 36    3| 76| 62| 6E| 6
02BAF0:  44 7C 20 32 43 7C 20 32 45 7C 20 32 46 7C 20 35    D| 2C| 2E| 2F| 5
02BB00:  43 7C 20 20 20 20 20 7C 20 20 20 7C 20 46 30 7C    C|     |   | F0|
02BB10:  20 20 20 7C 0D 2B 2D 2D 2D 2D 2D 2D 2D 2D 2D 2B       |.+---------+
02BB20:  2D 2D 2D 2B 2D 2B 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B    ---+-+-+---+---+
02BB30:  2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B    ---+---+---+---+
02BB40:  2D 2D 2D 2B 2D 2B 2D 2B 2D 2D 2D 2B 2D 2D 2D 2D    ---+-+-+---+----
02BB50:  2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 2D 2D 2D 2B 20 0D    -+---+---+---+ .
02BB60:  7C 09 20 20 7C 20 45 30 20 20 7C 20 20 20 20 20    |.  | E0  |     
02BB70:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02BB80:  20 20 20 20 20 20 20 20 20 20 7C 20 20 20 20 20              |     
02BB90:  20 20 20 20 20 20 7C 20 46 41 7C 20 46 39 7C 20          | FA| F9| 
02BBA0:  46 42 7C 0D 7C 20 4E 41 09 20 20 7C 20 45 30 20    FB|.| NA.  | E0 
02BBB0:  20 7C 20 20 20 20 20 20 20 20 20 20 20 20 20 20     |              
02BBC0:  32 30 20 20 20 20 20 20 20 20 20 20 20 20 20 20    20              
02BBD0:  20 7C 20 20 20 20 4E 41 20 20 20 20 20 7C 20 46     |    NA     | F
02BBE0:  36 7C 20 46 35 7C 20 46 37 7C 0D 7C 09 20 20 7C    6| F5| F7|.|.  |
02BBF0:  20 45 30 20 20 7C 20 20 20 20 20 20 20 20 20 20     E0  |          
02BC00:  6E 0D 0D 20 20 20 20 20 20 20 20 20 46 69 72 65    n..         Fire
02BC10:  31 20 46 69 72 65 32 0D 09 20 20 2B 2D 2D 2D 2B    1 Fire2..  +---+
02BC20:  2D 2D 2D 2B 0D 09 20 20 7C 20 35 32 7C 20 35 33    ---+..  | 52| 53
02BC30:  7C 0D 09 20 20 2B 2D 2D 2D 2B 2D 2D 2D 2B 0D 0D    |..  +---+---+..
02BC40:  1A 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    .   |   |   |   
02BC50:  7C 20 20 20 7C 20 20 20 7C 20 20 1A 00 00 00 00    |   |   |  .....
02BC60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02BC70:  00 00 00 00 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
02BC80:  3D 3D 3D 3D 3D 3D 3D 0D 09 20 20 20 20 20 55 70    =======..     Up
02BC90:  0D 20 20 20 20 20 20 20 20 20 20 20 2B 2D 2D 2D    .           +---
02BCA0:  2B 0D 20 20 20 20 20 20 20 20 20 20 20 7C 20 37    +.           | 7
02BCB0:  32 7C 0D 20 20 20 20 20 2B 2D 2D 2D 2B 2D 2B 2D    2|.     +---+-+-
02BCC0:  2D 2D 2B 2D 2B 2D 2D 2D 2B 0D 4C 65 66 74 20 7C    --+-+---+.Left |
02BCD0:  20 37 34 7C 20 20 20 20 20 20 20 7C 20 37 35 7C     74|       | 75|
02BCE0:  20 52 69 67 68 74 0D 20 20 20 20 20 2B 2D 2D 2D     Right.     +---
02BCF0:  2B 2D 2B 2D 2D 2D 2B 2D 2B 2D 2D 2D 2B 0D 09 20    +-+---+-+---+.. 
02BD00:  20 20 7C 20 37 33 7C 0D 09 20 20 20 2B 2D 2D 2D      | 73|..   +---
02BD10:  2B 0D 09 20 20 44 6F 77 6E 0D 0D 20 20 20 20 20    +..  Down..     
02BD20:  20 20 20 20 46 69 72 65 31 20 46 69 72 65 32 0D        Fire1 Fire2.
02BD30:  09 20 20 2B 2D 2D 2D 2B 2D 2D 2D 2B 0D 09 20 20    .  +---+---+..  
02BD40:  7C 20 37 36 7C 20 37 37 7C 0D 09 20 20 2B 2D 2D    | 76| 77|..  +--
02BD50:  2D 2B 2D 2D 2D 2B 0D 0D 0D 0D 4A 6F 79 73 74 69    -+---+....Joysti
02BD60:  63 6B 20 31 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D    ck 1.==========.
02BD70:  09 20 20 20 20 20 55 70 0D 20 20 20 20 20 20 20    .     Up.       
02BD80:  20 20 20 20 2B 2D 2D 2D 2B 0D 20 20 20 20 20 20        +---+.      
02BD90:  20 20 20 20 20 7C 20 34 38 7C 0D 20 20 20 20 20         | 48|.     
02BDA0:  2B 2D 2D 2D 2B 2D 2B 2D 2D 2D 2B 2D 2B 2D 2D 2D    +---+-+---+-+---
02BDB0:  2B 0D 4C 65 66 74 20 7C 20 35 30 7C 20 20 20 20    +.Left | 50|    
02BDC0:  20 20 20 7C 20 35 31 7C 20 52 69 67 68 74 0D 20       | 51| Right. 
02BDD0:  20 20 20 20 2B 2D 2D 2D 2B 2D 2B 2D 2D 2D 2B 2D        +---+-+---+-
02BDE0:  2B 2D 2D 2D 2B 0D 09 20 20 20 7C 20 34 39 7C 0D    +---+..   | 49|.
02BDF0:  09 20 20 20 2B 2D 2D 2D 2B 0D 09 20 20 44 6F 77    .   +---+..  Dow
02BE00:  20 20 20 20 32 30 20 20 20 20 20 20 20 20 20 20        20          
02BE10:  20 20 20 20 20 7C 20 20 20 20 20 20 20 20 20 20         |          
02BE20:  20 7C 20 46 32 7C 20 46 31 7C 20 46 33 7C 0D 2B     | F2| F1| F3|.+
02BE30:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2B 2D 2D 2D 2D 2D 2B    ---------+-----+
02BE40:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02BE50:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2B    ---------------+
02BE60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2B 2D 2D 2D 2B    -----------+---+
02BE70:  2D 2D 2D 2B 2D 2D 2D 2B 0D 0D 0D 2B 2D 2D 2D 2D    ---+---+...+----
02BE80:  2D 2D 2D 2D 2D 2B 0D 7C 20 43 6F 6E 74 72 6F 6C    -----+.| Control
02BE90:  20 7C 0D 7C 20 53 68 69 66 74 20 20 20 7C 0D 7C     |.| Shift   |.|
02BEA0:  20 53 74 61 6E 64 61 72 64 7C 0D 2B 2D 2D 2D 2D     Standard|.+----
02BEB0:  2D 2D 2D 2D 2D 2B 0D 0D 0D 4A 6F 79 73 74 69 63    -----+...Joystic
02BEC0:  6B 20 30 0D 3D 3D 3D 3D 3D 3D 3D 3D 3D 3D 0D 09    k 0.==========..
02BED0:  20 20 20 20 20 55 70 0D 20 20 20 20 20 20 20 20         Up.        
02BEE0:  20 20 20 2B 2D 2D 2D 2B 0D 20 20 20 20 20 20 20       +---+.       
02BEF0:  20 20 20 20 7C 20 30 42 7C 0D 09 20 20 20 7C 20        | 0B|..   | 
02BF00:  30 42 7C 0D 20 20 20 20 20 2B 2D 2D 2D 2B 2D 2B    0B|.     +---+-+
02BF10:  2D 2D 2D 2B 2D 2B 2D 2D 2D 2B 0D 4C 65 66 74 20    ---+-+---+.Left 
02BF20:  7C 20 30 38 7C 20 20 20 20 20 20 20 7C 20 30 39    | 08|       | 09
02BF30:  7C 20 52 69 67 68 74 0D 20 20 20 20 20 7C 20 30    | Right.     | 0
02BF40:  38 7C 20 20 20 20 20 20 20 7C 20 30 38 7C 0D 20    8|       | 08|. 
02BF50:  20 20 20 20 2B 2D 2D 2D 2B 2D 2B 2D 2D 2D 2B 2D        +---+-+---+-
02BF60:  2B 2D 2D 2D 2B 0D 09 20 20 20 7C 20 30 61 7C 0D    +---+..   | 0a|.
02BF70:  20 20 20 20 20 20 20 20 20 20 20 7C 20 30 61 7C               | 0a|
02BF80:  0D 09 20 20 20 2B 2D 2D 2D 2B 0D 09 20 20 44 6F    ..   +---+..  Do
02BF90:  77 6E 0D 0D 20 20 20 20 20 20 20 20 20 46 69 72    wn..         Fir
02BFA0:  65 31 20 46 69 72 65 32 0D 09 20 20 2B 2D 2D 2D    e1 Fire2..  +---
02BFB0:  2B 2D 2D 2D 2B 0D 09 20 20 7C 20 35 38 7C 20 35    +---+..  | 58| 5
02BFC0:  41 7C 0D 09 20 20 7C 20 35 38 7C 20 35 41 7C 0D    A|..  | 58| 5A|.
02BFD0:  09 20 20 2B 2D 2D 2D 2B 2D 2D 2D 2B 0D 0D 0D 0D    .  +---+---+....
02BFE0:  4A 6F 79 73 74 69 63 6B 20 31 0D 3D 3D 3D 3D 3D    Joystick 1.=====
02BFF0:  3D 3D 3D 3D 3D 0D 09 20 20 20 20 20 55 70 0D 20    =====..     Up. 
02C000:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02C010:  25 00 01 00 02 09 4E E5 25 00 C1 02 00 00 00 02    %.....N.%.......
02C020:  25 00 C6 02 00 00 00 02 25 00 C2 02 00 00 00 02    %.......%.......
02C030:  25 00 C7 02 00 00 00 02 25 00 C3 02 00 00 00 02    %.......%.......
02C040:  25 00 C8 02 00 00 00 02 25 00 C4 02 00 00 00 02    %.......%.......
02C050:  25 00 C9 02 00 00 00 02 25 00 C5 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:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C110:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C120:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C130:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C140:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C150:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C160:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C170:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C180:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C190:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C1A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C1B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C1C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C1D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C1E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C1F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C200:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C210:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C220:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C230:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C240:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C250:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C260:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C270:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C280:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C290:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C2A0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C2B0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C2C0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C2D0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C2E0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C2F0:  E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5 E5    ................
02C300:  20 49 74 20 77 69 6C 6C 20 6E 6F 74 20 20 62 65     It will not  be
02C310:  20 20 70 72 6F 63 65 73 73 65 64 20 62 75 74 20      processed but 
02C320:  72 65 74 75 72 6E 65 64 20 68 6F 77 20 69 74 0D    returned how it.
02C330:  20 20 20 20 20 69 73 2E 20 54 68 65 20 63 68 61         is. The cha
02C340:  72 61 63 74 65 72 20 64 6F 65 73 6E 27 74 20 6E    racter doesn't n
02C350:  65 65 64 20 74 6F 20 62 65 20 72 65 61 64 20 66    eed to be read f
02C360:  72 6F 6D 20 74 68 65 20 6B 65 79 62 6F 61 72 64    rom the keyboard
02C370:  2E 0D 0D 20 20 20 20 20 59 6F 75 20 63 61 6E 20    ...     You can 
02C380:  6F 6E 6C 79 20 68 61 76 65 20 6F 6E 65 20 63 68    only have one ch
02C390:  61 72 61 63 74 65 72 20 74 6F 20 20 70 75 74 20    aracter to  put 
02C3A0:  20 62 61 63 6B 2E 20 49 66 20 61 6E 79 6D 6F 72     back. If anymor
02C3B0:  65 20 61 72 65 20 70 75 74 20 62 61 63 6B 0D 20    e are put back. 
02C3C0:  20 20 20 20 62 65 66 6F 72 65 20 61 20 63 68 61        before a cha
02C3D0:  72 61 63 74 65 72 20 69 73 20 20 72 65 61 64 20    racter is  read 
02C3E0:  20 74 68 65 6E 20 20 74 68 65 20 20 66 69 72 73     then  the  firs
02C3F0:  74 20 20 63 68 61 72 61 63 74 65 72 20 77 69 6C    t  character wil
02C400:  6C 20 62 65 20 6C 6F 73 74 2E 0D 20 20 20 20 20    l be lost..     
02C410:  43 68 61 72 61 63 74 65 72 20 32 35 35 20 63 61    Character 255 ca
02C420:  6E 6E 6F 74 20 62 65 20 72 65 74 75 72 6E 65 64    nnot be returned
02C430:  20 61 73 20 74 68 69 73 20 20 69 73 20 20 75 73     as this  is  us
02C440:  65 64 20 61 73 20 61 20 6D 61 72 6B 65 72 20 74    ed as a marker t
02C450:  6F 20 74 65 6C 6C 0D 20 20 20 20 20 74 68 65 20    o tell.     the 
02C460:  63 6F 6D 70 75 74 65 72 20 74 68 65 72 65 20 69    computer there i
02C470:  73 20 6E 6F 20 63 68 61 72 61 63 74 65 72 20 62    s no character b
02C480:  65 69 6E 67 20 70 75 74 20 62 61 63 6B 2E 0D 0D    eing put back...
02C490:  0D 20 20 20 20 20 26 42 42 30 46 20 2D 20 4B 4D    .     &BB0F - KM
02C4A0:  20 53 45 54 20 45 58 50 41 4E 44 20 2D 20 53 65     SET EXPAND - Se
02C4B0:  74 20 61 6E 20 65 78 70 61 6E 73 69 6F 6E 20 73    t an expansion s
02C4C0:  74 72 69 6E 67 0D 0D 20 20 20 20 20 45 6E 74 72    tring..     Entr
02C4D0:  79 3A 0D 0D 20 20 20 20 20 42 20 3D 20 65 78 70    y:..     B = exp
02C4E0:  61 6E 73 69 6F 6E 20 74 6F 6B 65 6E 20 66 6F 72    ansion token for
02C4F0:  20 65 78 70 61 6E 73 69 6F 6E 20 74 6F 20 73 65     expansion to se
02C500:  1B 40 0D 0D 0D 20 20 20 20 20 26 42 42 30 30 20    .@...     &BB00 
02C510:  2D 20 4B 4D 20 49 4E 49 54 49 41 4C 49 53 45 20    - KM INITIALISE 
02C520:  2D 20 49 6E 69 74 69 61 6C 69 73 65 20 74 68 65    - Initialise the
02C530:  20 6B 65 79 20 6D 61 6E 61 67 65 72 0D 0D 20 20     key manager..  
02C540:  20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20 20       Entry:..     
02C550:  4E 6F 20 63 6F 6E 64 69 74 69 6F 6E 73 2E 0D 0D    No conditions...
02C560:  20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20         Exit:..    
02C570:  20 41 46 2C 42 43 2C 44 45 20 61 6E 64 20 48 4C     AF,BC,DE and HL
02C580:  20 63 6F 72 72 75 70 74 2E 0D 0D 20 20 20 20 20     corrupt...     
02C590:  4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 49 6E 74    Notes:..     Int
02C5A0:  65 72 75 70 74 73 20 61 72 65 20 65 6E 61 62 6C    erupts are enabl
02C5B0:  65 64 2E 0D 20 20 20 20 20 54 68 65 20 6B 65 79    ed..     The key
02C5C0:  62 6F 61 72 64 20 62 75 66 66 65 72 20 69 73 20    board buffer is 
02C5D0:  63 6C 65 61 72 65 64 2E 0D 20 20 20 20 20 53 68    cleared..     Sh
02C5E0:  69 66 74 20 6C 6F 63 6B 20 61 6E 64 20 43 61 70    ift lock and Cap
02C5F0:  73 20 6C 6F 63 6B 20 61 72 65 20 74 75 72 6E 65    s lock are turne
02C600:  64 20 6F 66 66 2E 0D 20 20 20 20 20 54 68 65 20    d off..     The 
02C610:  72 65 70 65 61 74 20 73 70 65 65 64 20 69 73 20    repeat speed is 
02C620:  73 65 74 20 74 6F 20 64 65 66 61 75 6C 74 2E 0D    set to default..
02C630:  20 20 20 20 20 54 68 65 20 72 65 70 65 61 74 20         The repeat 
02C640:  6B 65 79 20 6D 61 70 20 69 73 20 69 6E 69 74 69    key map is initi
02C650:  61 6C 69 7A 65 64 20 74 6F 20 64 65 66 61 75 6C    alized to defaul
02C660:  74 20 73 74 61 74 65 2E 0D 20 20 20 20 20 54 68    t state..     Th
02C670:  65 20 65 78 70 61 6E 73 69 6F 6E 20 62 75 66 66    e expansion buff
02C680:  65 72 20 69 73 20 73 65 74 20 20 75 70 20 20 61    er is set  up  a
02C690:  6E 64 20 20 74 68 65 20 20 65 78 70 61 6E 73 69    nd  the  expansi
02C6A0:  6F 6E 73 20 61 72 65 20 73 65 74 20 74 6F 20 74    ons are set to t
02C6B0:  68 65 69 72 0D 20 20 20 20 20 64 65 66 61 75 6C    heir.     defaul
02C6C0:  74 20 76 61 6C 75 65 73 2E 0D 20 20 20 20 20 54    t values..     T
02C6D0:  68 65 20 6B 65 79 20 74 72 61 6E 73 6C 61 74 69    he key translati
02C6E0:  6F 6E 20 74 61 62 6C 65 73 20 61 72 65 20 69 6E    on tables are in
02C6F0:  74 69 61 6C 69 7A 65 64 20 74 6F 20 69 74 73 20    tialized to its 
02C700:  74 0D 20 20 20 20 20 43 20 3D 20 6C 65 6E 67 74    t.     C = lengt
02C710:  68 20 6F 66 20 73 74 72 69 6E 67 0D 20 20 20 20    h of string.    
02C720:  20 48 4C 20 3D 20 61 64 64 72 65 73 73 20 6F 66     HL = address of
02C730:  20 73 74 72 69 6E 67 0D 0D 20 20 20 20 20 45 78     string..     Ex
02C740:  69 74 3A 0D 0D 20 20 20 20 20 49 66 20 65 76 65    it:..     If eve
02C750:  72 79 74 68 69 6E 67 20 4F 4B 3A 0D 0D 20 20 20    rything OK:..   
02C760:  20 20 43 61 72 72 79 20 74 72 75 65 2E 0D 0D 0D      Carry true....
02C770:  0D 0D 0D 0D 0D 20 20 20 20 20 49 66 20 69 74 20    .....     If it 
02C780:  77 61 73 20 74 6F 6F 20 6C 6F 6E 67 20 6F 72 20    was too long or 
02C790:  74 6F 6B 65 6E 20 69 6E 76 61 6C 69 64 3A 0D 20    token invalid:. 
02C7A0:  20 20 20 20 43 61 72 72 79 20 66 61 6C 73 65 2E        Carry false.
02C7B0:  0D 0D 20 20 20 20 20 41 2C 42 43 2C 44 45 2C 48    ..     A,BC,DE,H
02C7C0:  4C 20 61 6E 64 20 6F 74 68 65 72 20 66 6C 61 67    L and other flag
02C7D0:  73 20 63 6F 72 72 75 70 74 2E 0D 0D 20 20 20 20    s corrupt...    
02C7E0:  20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 49 66     Notes:..     If
02C7F0:  20 74 68 65 72 65 20 69 73 6E 27 74 20 65 6E 6F     there isn't eno
02C800:  75 67 68 20 72 6F 6F 6D 20 66 6F 72 20 74 68 65    ugh room for the
02C810:  20 20 6E 65 77 20 73 74 72 69 6E 67 20 74 68 65      new string the
02C820:  6E 20 74 68 65 20 6F 6C 64 20 73 74 61 74 65 20    n the old state 
02C830:  77 69 6C 6C 0D 20 20 20 20 20 6E 6F 74 20 62 65    will.     not be
02C840:  20 63 68 61 6E 67 65 64 2E 0D 20 20 20 20 20 53     changed..     S
02C850:  65 74 20 61 6E 20 65 78 70 61 6E 73 69 6F 6E 20    et an expansion 
02C860:  73 74 72 69 6E 67 2E 0D 20 20 20 20 20 49 6E 74    string..     Int
02C870:  65 72 75 70 74 73 20 61 72 65 20 65 6E 61 62 6C    erupts are enabl
02C880:  65 64 2E 0D 0D 0D 20 20 20 20 20 26 42 42 31 32    ed....     &BB12
02C890:  20 2D 20 4B 4D 20 47 45 54 20 45 58 50 41 4E 44     - KM GET EXPAND
02C8A0:  20 2D 20 47 65 74 20 61 20 63 68 61 72 61 63 74     - Get a charact
02C8B0:  65 72 20 66 72 6F 6D 20 61 6E 20 65 78 70 61 6E    er from an expan
02C8C0:  73 69 6F 6E 20 73 74 72 69 6E 67 0D 0D 20 20 20    sion string..   
02C8D0:  20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 41      Entry:..     A
02C8E0:  20 3D 20 65 78 70 61 6E 73 69 6F 6E 20 74 6F 6B     = expansion tok
02C8F0:  65 6E 0D 20 20 20 20 20 4C 20 3D 20 63 68 61 72    en.     L = char
02C900:  64 65 66 61 75 6C 74 20 73 74 61 74 65 2E 0D 20    default state.. 
02C910:  20 20 20 20 54 68 65 20 62 72 65 61 6B 20 65 76        The break ev
02C920:  65 6E 74 20 69 73 20 64 69 73 61 72 6D 65 64 2E    ent is disarmed.
02C930:  0D 20 20 20 20 20 54 68 65 20 62 72 65 61 6B 20    .     The break 
02C940:  69 6E 64 69 72 65 63 74 69 6F 6E 20 63 61 6C 6C    indirection call
02C950:  20 69 73 20 73 65 74 20 74 6F 20 69 74 73 20 69     is set to its i
02C960:  6E 69 74 69 61 6C 20 76 61 6C 75 65 2E 0D 0D 0D    nitial value....
02C970:  20 20 20 20 20 26 42 42 30 33 20 2D 20 4B 4D 20         &BB03 - KM 
02C980:  52 45 53 45 54 20 2D 20 52 65 73 65 74 20 74 68    RESET - Reset th
02C990:  65 20 4B 65 79 20 4D 61 6E 61 67 65 72 0D 0D 20    e Key Manager.. 
02C9A0:  20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20        Entry:..    
02C9B0:  20 4E 6F 20 63 6F 6E 64 69 74 69 6F 6E 73 2E 0D     No conditions..
02C9C0:  0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20    .     Exit:..   
02C9D0:  20 20 41 46 2C 42 43 2C 44 45 2C 48 4C 20 63 6F      AF,BC,DE,HL co
02C9E0:  72 72 75 70 74 0D 0D 20 20 20 20 20 4E 6F 74 65    rrupt..     Note
02C9F0:  73 3A 0D 0D 20 20 20 20 20 49 6E 74 65 72 75 70    s:..     Interup
02CA00:  74 73 20 61 72 65 20 65 6E 61 62 6C 65 64 2E 0D    ts are enabled..
02CA10:  20 20 20 20 20 54 68 65 20 62 72 65 61 6B 20 69         The break i
02CA20:  6E 64 69 72 65 63 74 69 6F 6E 20 63 61 6C 6C 20    ndirection call 
02CA30:  20 69 73 20 20 73 65 74 20 20 74 6F 20 20 69 74     is  set  to  it
02CA40:  73 20 20 69 6E 69 74 69 61 6C 20 72 6F 75 74 69    s  initial routi
02CA50:  6E 65 20 65 6E 61 62 6C 69 6E 67 0D 20 20 20 20    ne enabling.    
02CA60:  20 53 48 49 46 54 20 43 4F 4E 54 52 4F 4C 20 45     SHIFT CONTROL E
02CA70:  53 43 20 72 65 73 65 74 2E 0D 20 20 20 20 20 54    SC reset..     T
02CA80:  68 65 20 6B 65 79 62 6F 61 72 64 20 62 75 66 66    he keyboard buff
02CA90:  65 72 20 69 73 20 63 6C 65 61 72 65 64 2E 0D 20    er is cleared.. 
02CAA0:  20 20 20 20 54 68 65 20 65 78 70 61 6E 73 69 6F        The expansio
02CAB0:  6E 20 62 75 66 66 65 72 20 69 73 20 73 65 74 20    n buffer is set 
02CAC0:  74 6F 20 64 65 66 61 75 6C 74 2E 0D 20 20 20 20    to default..    
02CAD0:  20 54 68 65 20 62 72 65 61 6B 20 65 76 65 6E 74     The break event
02CAE0:  20 69 73 20 64 69 73 61 72 6D 65 64 2E 0D 0D 20     is disarmed... 
02CAF0:  20 20 20 20 26 42 42 30 36 20 2D 20 4B 4D 20 57        &BB06 - KM W
02CB00:  61 63 74 65 72 20 6E 75 6D 62 65 72 0D 0D 20 20    acter number..  
02CB10:  20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20 49       Exit:..     I
02CB20:  66 20 63 68 61 72 61 63 74 65 72 20 66 6F 75 6E    f character foun
02CB30:  64 3A 0D 0D 20 20 20 20 20 43 61 72 72 79 20 74    d:..     Carry t
02CB40:  72 75 65 2E 0D 20 20 20 20 20 41 20 3D 20 63 68    rue..     A = ch
02CB50:  61 72 61 63 74 65 72 0D 0D 20 20 20 20 20 54 6F    aracter..     To
02CB60:  6B 65 6E 20 69 6E 76 61 6C 69 64 2C 20 6F 72 20    ken invalid, or 
02CB70:  73 74 72 69 6E 67 20 6E 6F 74 20 6C 6F 6E 67 20    string not long 
02CB80:  65 6E 6F 75 67 68 3A 0D 20 20 20 20 20 43 61 72    enough:.     Car
02CB90:  72 79 20 66 61 6C 73 65 2E 0D 20 20 20 20 20 41    ry false..     A
02CBA0:  20 63 6F 72 72 75 70 74 0D 0D 20 20 20 20 20 44     corrupt..     D
02CBB0:  45 20 61 6E 64 20 6F 74 68 65 72 20 66 6C 61 67    E and other flag
02CBC0:  73 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 20 20 20    s corrupt....   
02CBD0:  20 20 26 42 42 31 35 20 2D 20 4B 4D 20 45 58 50      &BB15 - KM EXP
02CBE0:  20 42 55 46 46 45 52 20 2D 20 41 6C 6C 6F 63 61     BUFFER - Alloca
02CBF0:  74 65 20 61 20 62 75 66 66 65 72 20 66 6F 72 20    te a buffer for 
02CC00:  65 78 70 61 6E 73 69 6F 6E 20 73 74 72 69 6E 67    expansion string
02CC10:  73 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D    s..     Entry:..
02CC20:  20 20 20 20 20 44 45 20 3D 20 61 64 64 72 65 73         DE = addres
02CC30:  73 20 6F 66 20 62 75 66 66 65 72 0D 20 20 20 20    s of buffer.    
02CC40:  20 48 4C 20 3D 20 6C 65 6E 67 74 68 20 6F 66 20     HL = length of 
02CC50:  62 75 66 66 65 72 0D 0D 20 20 20 20 20 45 78 69    buffer..     Exi
02CC60:  74 3A 0D 0D 20 20 20 20 20 42 75 66 66 65 72 20    t:..     Buffer 
02CC70:  4F 4B 3A 0D 0D 20 20 20 20 20 43 61 72 72 79 20    OK:..     Carry 
02CC80:  74 72 75 65 2E 0D 0D 20 20 20 20 20 42 75 66 66    true...     Buff
02CC90:  65 72 20 74 6F 6F 20 73 68 6F 72 74 3A 0D 0D 20    er too short:.. 
02CCA0:  20 20 20 20 43 61 72 72 79 20 66 61 6C 73 65 2E        Carry false.
02CCB0:  0D 0D 20 20 20 20 20 41 2C 42 43 2C 44 45 2C 48    ..     A,BC,DE,H
02CCC0:  4C 20 61 6E 64 20 6F 74 68 65 72 20 66 6C 61 67    L and other flag
02CCD0:  73 20 63 6F 72 72 75 70 74 0D 0D 20 20 20 20 20    s corrupt..     
02CCE0:  4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54 68 65    Notes:..     The
02CCF0:  20 62 75 66 66 65 72 20 6D 75 73 74 20 62 65 20     buffer must be 
02CD00:  41 49 54 20 43 48 41 52 20 2D 20 57 61 69 74 20    AIT CHAR - Wait 
02CD10:  66 6F 72 20 61 20 63 68 61 72 61 63 74 65 72 20    for a character 
02CD20:  66 72 6F 6D 20 74 68 65 20 6B 65 79 62 6F 61 72    from the keyboar
02CD30:  64 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D    d..     Entry:..
02CD40:  20 20 20 20 20 4E 6F 20 63 6F 6E 64 69 74 69 6F         No conditio
02CD50:  6E 73 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D    ns..     Exit:..
02CD60:  20 20 20 20 20 43 61 72 72 79 20 74 72 75 65 2E         Carry true.
02CD70:  20 4F 74 68 65 72 20 66 6C 61 67 73 20 63 6F 72     Other flags cor
02CD80:  72 75 70 74 2E 0D 20 20 20 20 20 41 20 3D 20 63    rupt..     A = c
02CD90:  68 61 72 61 63 74 65 72 0D 0D 20 20 20 20 20 4E    haracter..     N
02CDA0:  6F 74 65 73 3A 0D 0D 20 20 20 20 20 54 72 79 20    otes:..     Try 
02CDB0:  74 6F 20 67 65 74 20 61 20 63 68 61 72 61 63 74    to get a charact
02CDC0:  65 72 20 66 72 6F 6D 20 6B 65 79 62 6F 61 72 64    er from keyboard
02CDD0:  20 20 62 75 66 66 65 72 2E 20 49 66 20 6F 6E 65      buffer. If one
02CDE0:  20 69 73 20 6E 6F 74 20 66 6F 75 6E 64 20 74 68     is not found th
02CDF0:  65 6E 0D 20 20 20 20 20 74 68 65 20 72 6F 75 74    en.     the rout
02CE00:  69 6E 65 20 77 69 6C 6C 20 77 61 69 74 20 75 6E    ine will wait un
02CE10:  74 69 6C 20 6F 6E 65 20 69 73 2E 0D 0D 0D 0D 0D    til one is......
02CE20:  0D 0D 0D 0D 20 20 20 20 20 26 42 42 30 39 20 2D    ....     &BB09 -
02CE30:  20 4B 4D 20 52 45 41 44 20 43 48 41 52 20 2D 20     KM READ CHAR - 
02CE40:  47 65 74 20 61 20 63 68 61 72 61 63 74 65 72 20    Get a character 
02CE50:  66 72 6F 6D 20 74 68 65 20 6B 65 79 62 6F 61 72    from the keyboar
02CE60:  64 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D    d..     Entry:..
02CE70:  20 20 20 20 20 4E 6F 20 63 6F 6E 64 69 74 69 6F         No conditio
02CE80:  6E 73 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D    ns..     Exit:..
02CE90:  20 20 20 20 20 49 66 20 61 20 63 68 61 72 61 63         If a charac
02CEA0:  74 65 72 20 77 61 73 20 61 76 61 69 6C 61 62 6C    ter was availabl
02CEB0:  65 3A 0D 20 20 20 20 20 43 61 72 72 79 20 54 72    e:.     Carry Tr
02CEC0:  75 65 2E 20 41 20 3D 20 63 68 61 72 61 63 74 65    ue. A = characte
02CED0:  72 0D 0D 20 20 20 20 20 49 46 20 6E 6F 20 63 68    r..     IF no ch
02CEE0:  61 72 61 63 74 65 72 20 61 76 61 69 6C 61 62 6C    aracter availabl
02CEF0:  65 3A 0D 20 20 20 20 20 43 61 72 72 79 20 46 61    e:.     Carry Fa
02CF00:  61 74 20 6C 65 61 73 74 20 34 39 20 62 79 74 65    at least 49 byte
02CF10:  73 20 20 61 6E 64 20 69 6E 20 52 41 4D 2E 20 49    s  and in RAM. I
02CF20:  74 20 6D 75 73 74 20 6E 6F 74 20 62 65 20 75 6E    t must not be un
02CF30:  64 65 72 0D 20 20 20 20 20 61 20 52 4F 4D 2E 20    der.     a ROM. 
02CF40:  49 66 20 74 68 65 20 6E 65 77 20 62 75 66 66 65    If the new buffe
02CF50:  72 20 69 73 20 74 6F 6F 20 73 68 6F 72 74 2C 20    r is too short, 
02CF60:  74 68 65 20 6F 6C 64 20 6F 6E 65 20 69 73 20 6C    the old one is l
02CF70:  65 66 74 20 75 6E 63 68 61 6E 67 65 64 2E 0D 20    eft unchanged.. 
02CF80:  20 20 20 20 49 6E 74 65 72 75 70 74 73 20 61 72        Interupts ar
02CF90:  65 20 65 6E 61 62 6C 65 64 2E 0D 0D 0D 0D 0D 0D    e enabled.......
02CFA0:  0D 0D 0D 20 20 20 20 20 26 42 42 31 38 20 2D 20    ...     &BB18 - 
02CFB0:  4B 4D 20 57 41 49 54 20 4B 45 59 20 2D 20 57 61    KM WAIT KEY - Wa
02CFC0:  69 74 20 66 6F 72 20 61 20 6B 65 79 20 66 72 6F    it for a key fro
02CFD0:  6D 20 74 68 65 20 6B 65 79 62 6F 61 72 64 20 62    m the keyboard b
02CFE0:  75 66 66 65 72 0D 0D 20 20 20 20 20 45 6E 74 72    uffer..     Entr
02CFF0:  79 3A 0D 0D 20 20 20 20 20 4E 6F 20 63 6F 6E 64    y:..     No cond
02D000:  69 74 69 6F 6E 73 0D 0D 20 20 20 20 20 45 78 69    itions..     Exi
02D010:  74 3A 0D 0D 20 20 20 20 20 43 61 72 72 79 20 74    t:..     Carry t
02D020:  72 75 65 2E 0D 20 20 20 20 20 41 20 3D 20 63 68    rue..     A = ch
02D030:  61 72 61 63 74 65 72 20 6F 72 20 65 78 70 61 6E    aracter or expan
02D040:  73 69 6F 6E 20 74 6F 6B 65 6E 0D 0D 20 20 20 20    sion token..    
02D050:  20 4F 74 68 65 72 20 66 6C 61 67 73 20 63 6F 72     Other flags cor
02D060:  72 75 70 74 2E 0D 0D 0D 20 20 20 20 20 26 42 42    rupt....     &BB
02D070:  31 42 20 2D 20 4B 4D 20 52 45 41 44 20 4B 45 59    1B - KM READ KEY
02D080:  20 2D 20 47 65 74 20 61 20 6B 65 79 20 66 72 6F     - Get a key fro
02D090:  6D 20 74 68 65 20 6B 65 79 62 6F 61 72 64 20 62    m the keyboard b
02D0A0:  75 66 66 65 72 0D 0D 20 20 20 20 20 45 6E 74 72    uffer..     Entr
02D0B0:  79 3A 0D 0D 20 20 20 20 20 4E 6F 20 63 6F 6E 64    y:..     No cond
02D0C0:  69 74 69 6F 6E 73 0D 0D 20 20 20 20 20 45 78 69    itions..     Exi
02D0D0:  74 3A 0D 0D 20 20 20 20 20 4B 65 79 20 61 76 61    t:..     Key ava
02D0E0:  69 6C 61 62 6C 65 3A 0D 0D 20 20 20 20 20 43 61    ilable:..     Ca
02D0F0:  72 72 79 20 74 72 75 65 2E 20 41 20 3D 20 63 68    rry true. A = ch
02D100:  6C 73 65 2E 20 41 20 63 6F 72 72 75 70 74 0D 0D    lse. A corrupt..
02D110:  20 20 20 20 20 4F 74 68 65 72 20 66 6C 61 67 73         Other flags
02D120:  20 63 6F 72 72 75 70 74 2E 0D 0D 0D 20 20 20 20     corrupt....    
02D130:  20 56 31 2E 30 20 61 6E 64 20 56 31 2E 31 0D 20     V1.0 and V1.1. 
02D140:  20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D        ------------
02D150:  2D 0D 0D 20 20 20 20 20 49 66 20 74 68 69 73 20    -..     If this 
02D160:  72 6F 75 74 69 6E 65 20 77 61 73 20 63 61 6C 6C    routine was call
02D170:  65 64 20 20 72 65 70 65 61 74 65 64 6C 79 20 20    ed  repeatedly  
02D180:  75 6E 74 69 6C 20 20 69 74 20 20 72 65 70 6F 72    until  it  repor
02D190:  74 73 20 74 68 65 72 65 20 69 73 20 6E 6F 0D 20    ts there is no. 
02D1A0:  20 20 20 20 63 68 61 72 61 63 74 65 72 20 69 74        character it
02D1B0:  20 63 6F 75 6C 64 20 62 65 20 75 73 65 64 20 74     could be used t
02D1C0:  6F 20 63 6F 6D 70 6C 65 74 65 6C 79 20 63 6C 65    o completely cle
02D1D0:  61 72 20 74 68 65 20 6B 65 79 62 6F 61 72 64 20    ar the keyboard 
02D1E0:  62 75 66 66 65 72 2E 0D 0D 0D 20 20 20 20 20 26    buffer....     &
02D1F0:  42 42 30 43 20 2D 20 4B 4D 20 43 48 41 52 20 52    BB0C - KM CHAR R
02D200:  45 54 55 52 4E 20 2D 20 52 65 74 75 72 6E 20 61    ETURN - Return a
02D210:  20 63 68 61 72 61 63 74 65 72 20 74 6F 20 74 68     character to th
02D220:  65 20 6B 65 79 62 6F 61 72 64 20 62 75 66 66 65    e keyboard buffe
02D230:  72 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D    r..     Entry:..
02D240:  20 20 20 20 20 41 20 3D 20 63 68 61 72 61 63 74         A = charact
02D250:  65 72 20 74 6F 20 70 75 74 20 62 61 63 6B 0D 0D    er to put back..
02D260:  20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20         Exit:..    
02D270:  20 41 6C 6C 20 72 65 67 69 73 74 65 72 73 20 70     All registers p
02D280:  72 65 73 65 72 76 65 64 2E 0D 0D 20 20 20 20 20    reserved...     
02D290:  4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54 68 65    Notes:..     The
02D2A0:  20 63 68 61 72 61 63 74 65 72 20 77 69 6C 6C 20     character will 
02D2B0:  20 62 65 20 20 70 75 74 20 20 62 61 63 6B 20 20     be  put  back  
02D2C0:  69 6E 74 6F 20 20 74 68 65 20 20 62 75 66 66 65    into  the  buffe
02D2D0:  72 20 20 62 65 66 6F 72 65 20 61 6E 79 20 6F 74    r  before any ot
02D2E0:  68 65 72 0D 20 20 20 20 20 63 68 61 72 61 63 74    her.     charact
02D2F0:  65 72 20 69 73 20 67 65 6E 65 72 61 74 65 64 2E    er is generated.
02D300:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02D310:  26 00 01 00 02 09 4E E5 26 00 C1 02 00 00 00 02    &.....N.&.......
02D320:  26 00 C6 02 00 00 00 02 26 00 C2 02 00 00 00 02    &.......&.......
02D330:  26 00 C7 02 00 00 00 02 26 00 C3 02 00 00 00 02    &.......&.......
02D340:  26 00 C8 02 00 00 00 02 26 00 C4 02 00 00 00 02    &.......&.......
02D350:  26 00 C9 02 00 00 00 02 26 00 C5 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:  61 72 61 63 74 65 72 20 6F 72 20 74 6F 6B 65 6E    aracter or token
02D410:  0D 0D 20 20 20 20 20 4E 6F 20 6B 65 79 3A 0D 0D    ..     No key:..
02D420:  20 20 20 20 20 43 61 72 72 79 20 66 61 6C 73 65         Carry false
02D430:  2E 0D 20 20 20 20 20 41 20 63 6F 72 72 75 70 74    ..     A corrupt
02D440:  2E 0D 0D 20 20 20 20 20 4F 74 68 65 72 20 66 6C    ...     Other fl
02D450:  61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 20    ags corrupt.... 
02D460:  20 20 20 20 26 42 42 31 45 20 2D 20 4B 4D 20 54        &BB1E - KM T
02D470:  45 53 54 20 4B 45 59 20 2D 20 54 65 73 74 20 6B    EST KEY - Test k
02D480:  65 79 20 68 61 73 20 62 65 65 6E 20 70 72 65 73    ey has been pres
02D490:  73 65 64 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A    sed..     Entry:
02D4A0:  0D 0D 20 20 20 20 20 41 20 3D 20 6B 65 79 20 6E    ..     A = key n
02D4B0:  75 6D 62 65 72 20 28 61 73 20 6F 6E 20 64 69 73    umber (as on dis
02D4C0:  63 20 64 72 69 76 65 20 43 50 43 36 31 32 38 20    c drive CPC6128 
02D4D0:  6F 72 20 61 73 20 66 6F 75 6E 64 20 69 6E 20 62    or as found in b
02D4E0:  61 73 69 63 20 6D 61 6E 75 61 6C 29 0D 0D 20 20    asic manual)..  
02D4F0:  20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20 4B       Exit:..     K
02D500:  65 79 20 70 72 65 73 73 65 64 3A 0D 0D 20 20 20    ey pressed:..   
02D510:  20 20 5A 65 72 6F 20 66 61 6C 73 65 2E 0D 0D 20      Zero false... 
02D520:  20 20 20 20 4B 65 79 20 6E 6F 74 20 70 72 65 73        Key not pres
02D530:  73 65 64 3A 0D 0D 20 20 20 20 20 5A 65 72 6F 20    sed:..     Zero 
02D540:  74 72 75 65 2E 0D 0D 20 20 20 20 20 43 61 72 72    true...     Carr
02D550:  79 20 66 61 6C 73 65 2E 0D 20 20 20 20 20 43 20    y false..     C 
02D560:  3D 20 73 68 69 66 74 20 61 6E 64 20 63 6F 6E 74    = shift and cont
02D570:  72 6F 6C 20 73 74 61 74 65 0D 0D 20 20 20 20 20    rol state..     
02D580:  42 49 54 20 37 20 20 31 3D 63 6F 6E 74 72 6F 6C    BIT 7  1=control
02D590:  20 6B 65 79 20 70 72 65 73 73 65 64 2C 20 30 3D     key pressed, 0=
02D5A0:  6E 6F 74 20 70 72 65 73 73 65 64 0D 20 20 20 20    not pressed.    
02D5B0:  20 42 49 54 20 35 20 20 31 3D 73 68 69 66 74 20     BIT 5  1=shift 
02D5C0:  6B 65 79 20 70 72 65 73 73 65 64 2C 20 30 3D 6E    key pressed, 0=n
02D5D0:  6F 74 20 70 72 65 73 73 65 64 0D 0D 20 20 20 20    ot pressed..    
02D5E0:  20 41 2C 48 4C 20 63 6F 72 72 75 70 74 2E 20 4F     A,HL corrupt. O
02D5F0:  74 68 65 72 20 66 6C 61 67 73 20 63 6F 72 72 75    ther flags corru
02D600:  73 20 63 6F 72 72 75 70 74 2E 0D 0D 0D 0D 0D 0D    s corrupt.......
02D610:  0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20    ..     Notes:.. 
02D620:  20 20 20 20 53 65 65 20 4B 4D 20 53 45 54 20 54        See KM SET T
02D630:  52 41 4E 53 4C 41 54 45 0D 0D 0D 20 20 20 20 20    RANSLATE...     
02D640:  26 42 42 33 33 20 2D 20 4B 4D 20 53 45 54 20 43    &BB33 - KM SET C
02D650:  4F 4E 54 52 4F 4C 20 20 2D 20 53 65 74 20 65 6E    ONTROL  - Set en
02D660:  74 72 79 20 69 6E 20 6B 65 79 20 74 72 61 6E 73    try in key trans
02D670:  6C 61 74 69 6F 6E 20 74 61 62 6C 65 20 28 63 6F    lation table (co
02D680:  6E 74 72 6F 6C 29 0D 0D 20 20 20 20 20 45 6E 74    ntrol)..     Ent
02D690:  72 79 3A 0D 0D 20 20 20 20 20 41 20 3D 20 6B 65    ry:..     A = ke
02D6A0:  79 20 6E 75 6D 62 65 72 0D 20 20 20 20 20 42 20    y number.     B 
02D6B0:  3D 20 6E 65 77 20 74 72 61 6E 73 6C 61 74 69 6F    = new translatio
02D6C0:  6E 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20    n..     Exit:.. 
02D6D0:  20 20 20 20 41 46 20 61 6E 64 20 48 4C 20 63 6F        AF and HL co
02D6E0:  72 72 75 70 74 0D 0D 20 20 20 20 20 4E 6F 74 65    rrupt..     Note
02D6F0:  73 3A 0D 0D 20 20 20 20 20 53 65 65 20 4B 4D 20    s:..     See KM 
02D700:  53 45 54 20 54 52 41 4E 53 4C 41 54 45 0D 0D 0D    SET TRANSLATE...
02D710:  20 20 20 20 20 26 42 42 33 36 20 2D 20 4B 4D 20         &BB36 - KM 
02D720:  47 45 54 20 43 4F 4E 54 52 4F 4C 20 2D 20 47 65    GET CONTROL - Ge
02D730:  74 20 65 6E 74 72 79 20 66 72 6F 6D 20 74 72 61    t entry from tra
02D740:  6E 73 6C 61 74 69 6F 6E 20 74 61 62 6C 65 20 28    nslation table (
02D750:  63 6F 6E 74 72 6F 6C 29 0D 0D 20 20 20 20 20 45    control)..     E
02D760:  6E 74 72 79 3A 0D 0D 20 20 20 20 20 41 20 3D 20    ntry:..     A = 
02D770:  6B 65 79 20 6E 75 6D 62 65 72 0D 0D 20 20 20 20    key number..    
02D780:  20 45 78 69 74 3A 0D 0D 20 20 20 20 20 41 20 3D     Exit:..     A =
02D790:  20 63 75 72 72 65 6E 74 20 74 72 61 6E 73 6C 61     current transla
02D7A0:  74 69 6F 6E 0D 20 20 20 20 20 48 4C 20 61 6E 64    tion.     HL and
02D7B0:  20 66 6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D     flags corrupt..
02D7C0:  0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20    .     Notes:..  
02D7D0:  20 20 20 53 65 65 20 4B 4D 20 53 45 54 20 54 52       See KM SET TR
02D7E0:  41 4E 53 4C 41 54 45 0D 0D 20 20 20 20 20 2D 2D    ANSLATE..     --
02D7F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02D800:  70 74 2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A    pt...     Notes:
02D810:  0D 0D 0D 0D 0D 0D 0D 0D 20 20 20 20 20 54 68 65    ........     The
02D820:  20 6E 75 6D 62 65 72 20 69 73 20 6E 6F 74 20 20     number is not  
02D830:  63 68 65 63 6B 65 64 2E 20 20 54 68 69 73 20 20    checked.  This  
02D840:  75 73 65 73 20 20 74 68 65 20 6B 65 79 62 6F 61    uses  the keyboa
02D850:  72 64 20 73 63 61 6E 6E 69 6E 67 20 72 6F 75 74    rd scanning rout
02D860:  69 6E 65 0D 20 20 20 20 20 77 68 69 63 68 20 72    ine.     which r
02D870:  75 6E 73 20 65 76 65 72 79 20 35 30 74 68 20 6F    uns every 50th o
02D880:  66 20 61 20 73 65 63 6F 6E 64 2E 0D 0D 0D 20 20    f a second....  
02D890:  20 20 20 26 42 42 32 31 20 2D 20 4B 4D 20 47 45       &BB21 - KM GE
02D8A0:  54 20 53 54 41 54 45 20 2D 20 47 65 74 20 73 68    T STATE - Get sh
02D8B0:  69 66 74 20 6C 6F 63 6B 20 61 6E 64 20 63 61 70    ift lock and cap
02D8C0:  73 20 6C 6F 63 6B 20 73 74 61 74 65 73 0D 0D 20    s lock states.. 
02D8D0:  20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20 20        Entry:..    
02D8E0:  20 4E 6F 6E 65 2E 0D 0D 20 20 20 20 20 45 78 69     None...     Exi
02D8F0:  74 3A 0D 0D 20 20 20 20 20 4C 20 3D 20 73 68 69    t:..     L = shi
02D900:  66 74 20 6C 6F 63 6B 20 73 74 61 74 65 20 28 26    ft lock state (&
02D910:  30 30 20 3D 20 6F 66 66 2C 20 26 46 46 20 3D 20    00 = off, &FF = 
02D920:  6F 6E 29 0D 20 20 20 20 20 48 20 3D 20 63 61 70    on).     H = cap
02D930:  73 20 6C 6F 63 6B 20 73 74 61 74 65 0D 20 20 20    s lock state.   
02D940:  20 20 41 46 20 63 6F 72 72 75 70 74 2E 0D 0D 20      AF corrupt... 
02D950:  20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20        Notes:..    
02D960:  20 54 68 65 20 64 65 66 61 75 6C 74 20 73 74 61     The default sta
02D970:  74 65 20 69 73 20 6F 66 66 2E 0D 0D 0D 20 20 20    te is off....   
02D980:  20 20 26 42 42 32 34 20 2D 20 4B 4D 20 47 45 54      &BB24 - KM GET
02D990:  20 4A 4F 59 53 54 49 43 4B 20 2D 20 47 65 74 20     JOYSTICK - Get 
02D9A0:  73 74 61 74 65 73 20 6F 66 20 62 6F 74 68 20 6A    states of both j
02D9B0:  6F 79 73 74 69 63 6B 73 0D 0D 20 20 20 20 20 45    oysticks..     E
02D9C0:  6E 74 72 79 3A 0D 0D 20 20 20 20 20 4E 6F 6E 65    ntry:..     None
02D9D0:  0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20    ..     Exit:..  
02D9E0:  20 20 20 48 2C 41 20 3D 20 73 74 61 74 65 20 6F       H,A = state o
02D9F0:  66 20 6A 6F 79 73 74 69 63 6B 20 30 0D 20 20 20    f joystick 0.   
02DA00:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02DA10:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02DA20:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02DA30:  2D 2D 2D 0D 0D 20 20 20 20 20 26 42 42 33 39 20    ---..     &BB39 
02DA40:  2D 20 4B 4D 20 53 45 54 20 52 45 50 45 41 54 20    - KM SET REPEAT 
02DA50:  2D 20 53 65 74 20 77 68 65 74 68 65 72 20 61 20    - Set whether a 
02DA60:  6B 65 79 20 69 73 20 61 6C 6C 6F 77 65 64 20 74    key is allowed t
02DA70:  6F 20 72 65 70 65 61 74 0D 0D 20 20 20 20 20 45    o repeat..     E
02DA80:  6E 74 72 79 3A 0D 0D 20 20 20 20 20 41 20 3D 20    ntry:..     A = 
02DA90:  6B 65 79 20 6E 75 6D 62 65 72 0D 20 20 20 20 20    key number.     
02DAA0:  42 20 3D 20 72 65 70 65 61 74 20 62 79 74 65 20    B = repeat byte 
02DAB0:  28 26 46 46 20 3D 20 61 6C 6C 6F 77 65 64 20 74    (&FF = allowed t
02DAC0:  6F 20 72 65 70 65 61 74 2C 20 26 30 20 3D 20 6E    o repeat, &0 = n
02DAD0:  6F 74 20 61 6C 6C 6F 77 65 64 20 74 6F 20 72 65    ot allowed to re
02DAE0:  70 65 61 74 29 0D 0D 20 20 20 20 20 45 78 69 74    peat)..     Exit
02DAF0:  3A 0D 0D 20 20 20 20 20 41 46 2C 42 43 2C 48 4C    :..     AF,BC,HL
02DB00:  20 63 6F 72 72 75 70 74 2E 0D 0D 20 20 20 20 20     corrupt...     
02DB10:  4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 49 66 20    Notes:..     If 
02DB20:  6B 65 79 20 6E 75 6D 62 65 72 20 69 73 20 67 72    key number is gr
02DB30:  65 61 74 65 72 20 74 68 61 6E 20 37 39 20 6E 6F    eater than 79 no
02DB40:  20 61 63 74 69 6F 6E 20 69 73 20 74 61 6B 65 6E     action is taken
02DB50:  2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D    ...     --------
02DB60:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02DB70:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02DB80:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02DB90:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20    -------------.. 
02DBA0:  20 20 20 20 26 42 42 33 43 20 2D 20 4B 4D 20 47        &BB3C - KM G
02DBB0:  45 54 20 52 45 50 45 41 54 20 2D 20 41 73 6B 20    ET REPEAT - Ask 
02DBC0:  69 66 20 61 20 6B 65 79 20 69 73 20 61 6C 6C 6F    if a key is allo
02DBD0:  77 65 64 20 74 6F 20 72 65 70 65 61 74 2E 0D 0D    wed to repeat...
02DBE0:  20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 0D 0D 0D         Entry:.....
02DBF0:  0D 0D 0D 20 20 20 20 20 41 20 3D 20 6B 65 79 20    ...     A = key 
02DC00:  20 20 4C 20 3D 20 73 74 61 74 65 20 6F 66 20 6A      L = state of j
02DC10:  6F 79 73 74 69 63 6B 20 31 0D 20 20 20 20 20 46    oystick 1.     F
02DC20:  6C 61 67 73 20 63 6F 72 72 75 70 74 2E 0D 0D 20    lags corrupt... 
02DC30:  20 20 20 20 54 68 65 20 62 69 74 73 20 61 72 65        The bits are
02DC40:  20 73 65 74 20 61 73 20 62 65 6C 6F 77 3A 0D 0D     set as below:..
02DC50:  20 20 20 20 20 42 69 74 20 30 20 2D 20 55 70 0D         Bit 0 - Up.
02DC60:  20 20 20 20 20 42 69 74 20 31 20 2D 20 44 6F 77         Bit 1 - Dow
02DC70:  6E 0D 20 20 20 20 20 42 69 74 20 32 20 2D 20 4C    n.     Bit 2 - L
02DC80:  65 66 74 0D 20 20 20 20 20 42 69 74 20 33 20 2D    eft.     Bit 3 -
02DC90:  20 52 69 67 68 74 0D 20 20 20 20 20 42 69 74 20     Right.     Bit 
02DCA0:  34 20 2D 20 46 69 72 65 20 32 0D 20 20 20 20 20    4 - Fire 2.     
02DCB0:  42 69 74 20 35 20 2D 20 46 69 72 65 20 31 0D 20    Bit 5 - Fire 1. 
02DCC0:  20 20 20 20 42 69 74 20 36 20 2D 20 53 70 61 72        Bit 6 - Spar
02DCD0:  65 20 6A 6F 79 73 74 69 63 6B 20 62 75 74 74 6F    e joystick butto
02DCE0:  6E 0D 20 20 20 20 20 42 69 74 20 37 20 2D 20 7A    n.     Bit 7 - z
02DCF0:  65 72 6F 0D 0D 20 20 20 20 20 49 66 20 61 20 70    ero..     If a p
02DD00:  61 72 74 69 63 75 6C 61 72 20 62 69 74 20 69 73    articular bit is
02DD10:  20 73 65 74 20 74 68 65 6E 20 74 68 61 74 20 62     set then that b
02DD20:  75 74 74 6F 6E 20 68 61 73 20 62 65 65 6E 20 70    utton has been p
02DD30:  72 65 73 73 65 64 2E 0D 0D 0D 20 20 20 20 20 26    ressed....     &
02DD40:  42 42 32 37 20 2D 20 4B 4D 20 53 45 54 20 54 52    BB27 - KM SET TR
02DD50:  41 4E 53 4C 41 54 45 20 2D 20 53 65 74 20 61 6E    ANSLATE - Set an
02DD60:  20 65 6E 74 72 79 20 69 6E 20 74 68 65 20 6B 65     entry in the ke
02DD70:  79 20 74 72 61 6E 73 6C 61 74 69 6F 6E 20 74 61    y translation ta
02DD80:  62 6C 65 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A    ble..     Entry:
02DD90:  0D 0D 20 20 20 20 20 41 20 3D 20 6B 65 79 20 6E    ..     A = key n
02DDA0:  75 6D 62 65 72 0D 20 20 20 20 20 42 20 3D 20 6E    umber.     B = n
02DDB0:  65 77 20 74 72 61 6E 73 6C 61 74 69 6F 6E 0D 0D    ew translation..
02DDC0:  20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20         Exit:..    
02DDD0:  20 41 46 2C 48 4C 20 63 6F 72 72 75 70 74 2E 0D     AF,HL corrupt..
02DDE0:  0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 0D 0D    .     Notes:....
02DDF0:  0D 0D 0D 0D 20 20 20 20 20 49 66 20 74 68 65 20    ....     If the 
02DE00:  6E 75 6D 62 65 72 0D 0D 20 20 20 20 20 45 78 69    number..     Exi
02DE10:  74 3A 0D 0D 20 20 20 20 20 49 66 20 6B 65 79 20    t:..     If key 
02DE20:  61 6C 6C 6F 77 65 64 20 74 6F 20 72 65 70 65 61    allowed to repea
02DE30:  74 3A 0D 0D 20 20 20 20 20 5A 65 72 6F 20 66 61    t:..     Zero fa
02DE40:  6C 73 65 2E 0D 0D 20 20 20 20 20 49 66 20 6B 65    lse...     If ke
02DE50:  79 20 6E 6F 74 20 61 6C 6C 6F 77 65 64 20 74 6F    y not allowed to
02DE60:  20 72 65 70 65 61 74 3A 0D 0D 20 20 20 20 20 5A     repeat:..     Z
02DE70:  65 72 6F 20 74 72 75 65 2E 0D 0D 20 20 20 20 20    ero true...     
02DE80:  43 61 72 72 79 20 66 61 6C 73 65 2E 20 41 2C 48    Carry false. A,H
02DE90:  4C 20 61 6E 64 20 6F 74 68 65 72 20 66 6C 61 67    L and other flag
02DEA0:  73 20 63 6F 72 72 75 70 74 2E 20 41 6C 6C 20 6F    s corrupt. All o
02DEB0:  74 68 65 72 73 20 4F 4B 2E 0D 0D 20 20 20 20 20    thers OK...     
02DEC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02DED0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02DEE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02DEF0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02DF00:  2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20 26 42 42 33    -----..     &BB3
02DF10:  46 20 2D 20 4B 4D 20 53 45 54 20 44 45 4C 41 59    F - KM SET DELAY
02DF20:  20 2D 20 53 65 74 20 64 65 6C 61 79 20 61 6E 64     - Set delay and
02DF30:  20 72 65 70 65 61 74 20 73 70 65 65 64 73 0D 0D     repeat speeds..
02DF40:  20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 20 20 20         Entry:..   
02DF50:  20 20 48 20 3D 20 73 74 61 72 74 20 75 70 20 64      H = start up d
02DF60:  65 6C 61 79 0D 20 20 20 20 20 4C 20 3D 20 6E 65    elay.     L = ne
02DF70:  77 20 72 65 70 65 61 74 20 73 70 65 65 64 0D 0D    w repeat speed..
02DF80:  20 20 20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20         Exit:..    
02DF90:  20 41 46 20 63 6F 72 72 75 70 74 2E 0D 0D 20 20     AF corrupt...  
02DFA0:  20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20       Notes:..     
02DFB0:  54 68 65 20 64 65 6C 61 79 73 20 61 72 65 20 67    The delays are g
02DFC0:  69 76 65 6E 20 69 6E 20 20 6B 65 79 62 6F 61 72    iven in  keyboar
02DFD0:  64 20 20 73 63 61 6E 73 20 20 77 68 69 63 68 20    d  scans  which 
02DFE0:  20 6F 63 63 75 72 20 65 76 65 72 79 20 35 30 74     occur every 50t
02DFF0:  68 20 6F 66 20 61 0D 20 20 20 20 20 73 65 63 6F    h of a.     seco
02E000:  6B 65 79 20 6E 75 6D 62 65 72 20 69 73 20 67 72    key number is gr
02E010:  65 61 74 65 72 20 74 68 61 6E 20 37 39 20 74 68    eater than 79 th
02E020:  65 6E 20 6E 6F 20 61 63 74 69 6F 6E 20 69 73 20    en no action is 
02E030:  74 61 6B 65 6E 2E 0D 0D 20 20 20 20 20 26 38 30    taken...     &80
02E040:  2D 26 39 46 20 20 20 45 78 70 61 6E 73 69 6F 6E    -&9F   Expansion
02E050:  20 74 6F 6B 65 6E 73 20 20 77 68 69 63 68 20 20     tokens  which  
02E060:  61 72 65 20 20 65 78 70 61 6E 64 65 64 20 20 74    are  expanded  t
02E070:  6F 20 63 68 61 72 61 63 74 65 72 20 73 74 72 69    o character stri
02E080:  6E 67 73 0D 20 20 20 20 20 77 68 65 6E 20 4B 4D    ngs.     when KM
02E090:  20 52 45 41 44 20 43 48 41 52 20 61 6E 64 20 4B     READ CHAR and K
02E0A0:  4D 20 57 41 49 54 20 43 48 41 52 20 61 72 65 20    M WAIT CHAR are 
02E0B0:  65 78 65 63 75 74 65 64 2E 0D 0D 20 20 20 20 20    executed...     
02E0C0:  26 46 44 20 20 20 20 20 20 20 63 61 70 73 20 6C    &FD       caps l
02E0D0:  6F 63 6B 20 74 6F 6B 65 6E 2E 0D 0D 20 20 20 20    ock token...    
02E0E0:  20 26 46 45 20 20 20 20 20 20 20 53 68 69 66 74     &FE       Shift
02E0F0:  20 6C 6F 63 6B 20 74 6F 6B 65 6E 2E 0D 0D 20 20     lock token...  
02E100:  20 20 20 26 46 46 20 20 20 20 20 20 20 49 67 6E       &FF       Ign
02E110:  6F 72 65 20 74 6F 6B 65 6E 2E 20 28 54 68 72 6F    ore token. (Thro
02E120:  77 20 6B 65 79 20 61 77 61 79 29 0D 0D 20 20 20    w key away)..   
02E130:  20 20 26 45 30 2D 26 46 43 20 61 72 65 20 73 70      &E0-&FC are sp
02E140:  65 63 69 61 6C 20 74 6F 6B 65 6E 73 20 66 6F 72    ecial tokens for
02E150:  20 65 64 69 74 69 6E 67 20 69 6E 20 42 41 53 49     editing in BASI
02E160:  43 20 65 74 63 2E 0D 0D 0D 20 20 20 20 20 26 42    C etc....     &B
02E170:  42 32 41 20 2D 20 4B 4D 20 47 45 54 20 54 52 41    B2A - KM GET TRA
02E180:  4E 53 4C 41 54 45 20 2D 20 47 65 74 20 61 6E 20    NSLATE - Get an 
02E190:  65 6E 74 72 79 20 66 72 6F 6D 20 6B 65 79 20 74    entry from key t
02E1A0:  72 61 6E 73 6C 61 74 69 6F 6E 20 74 61 62 6C 65    ranslation table
02E1B0:  0D 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20    .               
02E1C0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02E1D0:  20 28 6E 6F 72 6D 61 6C 29 0D 0D 20 20 20 20 20     (normal)..     
02E1E0:  45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 41 20 3D    Entry:..     A =
02E1F0:  20 6B 65 79 20 6E 75 6D 62 65 72 0D 0D 20 20 20     key number..   
02E200:  6E 64 2E 20 41 20 64 65 6C 61 79 20 6F 72 20 73    nd. A delay or s
02E210:  70 65 65 64 20 6F 66 20 30 20 69 73 20 74 61 6B    peed of 0 is tak
02E220:  65 6E 20 74 6F 20 6D 65 61 6E 20 32 35 36 2E 0D    en to mean 256..
02E230:  0D 20 20 20 20 20 54 68 65 20 64 65 66 61 75 6C    .     The defaul
02E240:  74 20 64 65 6C 61 79 20 69 73 20 33 30 20 73 63    t delay is 30 sc
02E250:  61 6E 73 20 61 6E 64 20 74 68 65 20 64 65 66 61    ans and the defa
02E260:  75 6C 74 20 73 70 65 65 64 20 69 73 20 32 20 73    ult speed is 2 s
02E270:  63 61 6E 73 2E 0D 0D 20 20 20 20 20 54 68 65 20    cans...     The 
02E280:  64 65 6C 61 79 20 6F 72 20 73 70 65 65 64 20 76    delay or speed v
02E290:  61 6C 75 65 73 20 6F 6E 6C 79 20 61 70 70 6C 79    alues only apply
02E2A0:  20 74 6F 20 6B 65 79 73 20 74 68 61 74 20 61 72     to keys that ar
02E2B0:  65 20 73 65 74 20 74 6F 20 72 65 70 65 61 74 2E    e set to repeat.
02E2C0:  0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D    ..     ---------
02E2D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02E2E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02E2F0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02E300:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20    ------------..  
02E310:  20 20 20 26 42 42 34 32 20 2D 20 4B 4D 20 47 45       &BB42 - KM GE
02E320:  54 20 44 45 4C 41 59 20 2D 20 47 65 74 20 64 65    T DELAY - Get de
02E330:  6C 61 79 20 61 6E 64 20 72 65 70 65 61 74 20 73    lay and repeat s
02E340:  70 65 65 64 73 0D 0D 20 20 20 20 20 45 6E 74 72    peeds..     Entr
02E350:  79 3A 0D 0D 20 20 20 20 20 4E 6F 6E 65 2E 0D 0D    y:..     None...
02E360:  20 20 20 20 20 45 78 69 74 3A 0D 20 20 20 20 20         Exit:.     
02E370:  48 20 3D 20 73 74 61 72 74 20 75 70 20 73 70 65    H = start up spe
02E380:  65 64 0D 20 20 20 20 20 4C 20 3D 20 72 65 70 65    ed.     L = repe
02E390:  61 74 20 73 70 65 65 64 0D 0D 20 20 20 20 20 41    at speed..     A
02E3A0:  46 20 63 6F 72 72 75 70 74 0D 0D 20 20 20 20 20    F corrupt..     
02E3B0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02E3C0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02E3D0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02E3E0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02E3F0:  2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20 26 42 42 34    -----..     &BB4
02E400:  20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20 41 20      Exit:..     A 
02E410:  3D 20 63 75 72 72 65 6E 74 20 74 72 61 6E 73 6C    = current transl
02E420:  61 74 69 6F 6E 0D 0D 20 20 20 20 20 48 4C 20 61    ation..     HL a
02E430:  6E 64 20 66 6C 61 67 73 20 63 6F 72 72 75 70 74    nd flags corrupt
02E440:  2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D    ...     Notes:..
02E450:  20 20 20 20 20 53 65 65 20 4B 4D 20 53 45 54 20         See KM SET 
02E460:  54 52 41 4E 53 4C 41 54 45 0D 0D 0D 20 20 20 20    TRANSLATE...    
02E470:  20 26 42 42 32 44 20 2D 20 4B 4D 20 53 45 54 20     &BB2D - KM SET 
02E480:  53 48 49 46 54 20 2D 20 47 65 74 20 61 6E 20 65    SHIFT - Get an e
02E490:  6E 74 72 79 20 66 72 6F 6D 20 74 72 61 6E 73 6C    ntry from transl
02E4A0:  61 74 69 6F 6E 20 74 61 62 6C 65 0D 20 20 20 20    ation table.    
02E4B0:  20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                    
02E4C0:  20 20 20 20 20 20 20 20 28 53 68 69 66 74 65 64            (Shifted
02E4D0:  29 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D    )..     Entry:..
02E4E0:  20 20 20 20 20 41 20 3D 20 6B 65 79 20 6E 75 6D         A = key num
02E4F0:  62 65 72 0D 20 20 20 20 20 42 20 3D 20 6E 65 77    ber.     B = new
02E500:  20 74 72 61 6E 73 6C 61 74 69 6F 6E 0D 0D 20 20     translation..  
02E510:  20 20 20 45 78 69 74 3A 0D 0D 20 20 20 20 20 41       Exit:..     A
02E520:  46 20 61 6E 64 20 48 4C 20 63 6F 72 72 75 70 74    F and HL corrupt
02E530:  2E 0D 0D 20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D    ...     Notes:..
02E540:  20 20 20 20 20 53 65 65 20 4B 4D 20 53 45 54 20         See KM SET 
02E550:  54 52 41 4E 53 4C 41 54 45 0D 0D 0D 20 20 20 20    TRANSLATE...    
02E560:  20 26 42 42 33 30 20 2D 20 4B 4D 20 47 45 54 20     &BB30 - KM GET 
02E570:  53 48 49 46 54 20 2D 20 47 65 74 20 65 6E 74 72    SHIFT - Get entr
02E580:  79 20 66 72 6F 6D 20 74 72 61 6E 73 6C 61 74 69    y from translati
02E590:  6F 6E 20 74 61 62 6C 65 20 28 73 68 69 66 74 65    on table (shifte
02E5A0:  64 29 0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D    d)..     Entry:.
02E5B0:  0D 20 20 20 20 20 41 20 3D 20 6B 65 79 20 6E 75    .     A = key nu
02E5C0:  6D 62 65 72 0D 0D 20 20 20 20 20 45 78 69 74 3A    mber..     Exit:
02E5D0:  0D 0D 20 20 20 20 20 41 20 3D 20 63 75 72 72 65    ..     A = curre
02E5E0:  6E 74 20 74 72 61 6E 73 6C 61 74 69 6F 6E 0D 0D    nt translation..
02E5F0:  20 20 20 20 20 48 4C 20 61 6E 64 20 66 6C 61 67         HL and flag
02E600:  54 72 61 63 6B 2D 49 6E 66 6F 0D 0A 00 00 00 00    Track-Info......
02E610:  27 00 01 00 02 09 4E E5 27 00 C1 02 00 00 00 02    '.....N.'.......
02E620:  27 00 C6 02 00 00 00 02 27 00 C2 02 00 00 00 02    '.......'.......
02E630:  27 00 C7 02 00 00 00 02 27 00 C3 02 00 00 00 02    '.......'.......
02E640:  27 00 C8 02 00 00 00 02 27 00 C4 02 00 00 00 02    '.......'.......
02E650:  27 00 C9 02 00 00 00 02 27 00 C5 02 00 00 00 02    '.......'.......
02E660:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E670:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E680:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E690:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6A0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6B0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6C0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6D0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6E0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E6F0:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02E700:  35 20 2D 20 4B 4D 20 41 52 4D 20 42 52 45 41 4B    5 - KM ARM BREAK
02E710:  53 20 2D 20 41 6C 6C 6F 77 20 62 72 65 61 6B 20    S - Allow break 
02E720:  65 76 65 6E 74 73 20 74 6F 20 62 65 20 67 65 6E    events to be gen
02E730:  65 72 61 74 65 64 0D 0D 20 20 20 20 20 45 6E 74    erated..     Ent
02E740:  72 79 3A 0D 0D 20 20 20 20 20 44 45 20 3D 20 61    ry:..     DE = a
02E750:  64 64 72 65 73 73 20 6F 66 20 62 72 65 61 6B 20    ddress of break 
02E760:  65 76 65 6E 74 0D 20 20 20 20 20 43 20 3D 20 52    event.     C = R
02E770:  6F 6D 20 73 65 6C 65 63 74 20 61 64 64 72 65 73    om select addres
02E780:  73 20 66 6F 72 20 72 6F 75 74 69 6E 65 0D 0D 20    s for routine.. 
02E790:  20 20 20 20 45 78 69 74 3A 20 41 46 2C 42 43 2C        Exit: AF,BC,
02E7A0:  44 45 2C 48 4C 20 63 6F 72 72 75 70 74 2E 20 41    DE,HL corrupt. A
02E7B0:  6C 6C 20 6F 74 68 65 72 73 20 70 72 65 73 65 72    ll others preser
02E7C0:  76 65 64 2E 0D 0D 0D 0D 0D 0D 0D 0D 20 20 20 20    ved.........    
02E7D0:  20 4E 6F 74 65 73 3A 0D 0D 20 20 20 20 20 54 68     Notes:..     Th
02E7E0:  69 73 20 72 6F 75 74 69 6E 65 20 65 6E 61 62 6C    is routine enabl
02E7F0:  65 73 20 69 6E 74 65 72 75 70 74 73 2E 0D 0D 20    es interupts... 
02E800:  20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D        ------------
02E810:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02E820:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02E830:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02E840:  2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20 20 20 20 20    ---------..     
02E850:  26 42 42 34 38 20 2D 20 4B 4D 20 44 49 53 41 52    &BB48 - KM DISAR
02E860:  4D 20 42 52 45 41 4B 20 2D 20 53 74 6F 70 20 62    M BREAK - Stop b
02E870:  72 65 61 6B 20 65 76 65 6E 74 73 20 66 72 6F 6D    reak events from
02E880:  20 62 65 69 6E 67 20 67 65 6E 65 72 61 74 65 64     being generated
02E890:  0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 20    ..     Entry:.. 
02E8A0:  20 20 20 20 4E 6F 6E 65 2E 0D 0D 20 20 20 20 20        None...     
02E8B0:  45 78 69 74 3A 0D 0D 20 20 20 20 20 41 46 20 61    Exit:..     AF a
02E8C0:  6E 64 20 48 4C 20 63 6F 72 72 75 70 74 2E 0D 0D    nd HL corrupt...
02E8D0:  20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20         Notes:..   
02E8E0:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 65      This routine e
02E8F0:  6E 61 62 6C 65 73 20 69 6E 74 65 72 75 70 74 73    nables interupts
02E900:  20 1E EA 01 00 2F 00 D2 00 20 20 D6 20 FE 20 FF     ..../...  . . .
02E910:  40 01 A6 20 A3 23 17 2C 0C 00 00 F3 5B 0B 00 00    @.. £#.,....[...
02E920:  6E F3 5D 01 0B 00 00 6E F3 EF 0B 00 00 6E F3 F4    n.]....n.....n..
02E930:  0F 01 D5 00 16 00 DC 00 20 20 88 01 0B 00 00 6E    ........  .....n
02E940:  F2 EF 0B 00 00 6E F2 F4 0F 00 18 00 E6 00 B0 01    .....n..........
02E950:  0B 00 00 6E E6 5B 0B 00 00 EE 5D EF 0B 00 00 6E    ...n.[....]....n
02E960:  F3 00 1E 00 F0 00 BF 22 1A 22 FF 03 28 0E 29 22    ......."."..(.)"
02E970:  4F 22 FF 03 28 0E 29 22 18 1F 01 18 14 22 3B 00    O"..(.)".....";.
02E980:  54 00 FA 00 A1 20 0B 00 00 6E F2 EF 0E 20 EB 20    T.... ...n... . 
02E990:  BF 22 49 20 6B 6E 65 77 20 74 68 69 73 20 61 74    ."I knew this at
02E9A0:  74 65 6D 70 74 20 77 6F 75 6C 64 20 62 65 20 61    tempt would be a
02E9B0:  6E 20 6F 75 74 73 74 61 6E 64 69 6E 67 20 73 75    n outstanding su
02E9C0:  63 63 65 73 73 2E 22 01 83 20 1C 06 BB 01 A0 20    ccess.".. ..... 
02E9D0:  1E 86 01 00 B7 00 04 01 BF 22 55 73 65 20 F0 20    ........."Use . 
02E9E0:  61 6E 64 20 F1 20 74 6F 20 73 63 72 6F 6C 6C 20    and . to scroll 
02E9F0:  74 68 65 20 74 65 78 74 2C 20 5B 43 4F 4E 54 52    the text, [CONTR
02EA00:  4F 4C 5D 20 F0 20 61 6E 64 20 F1 20 74 6F 20 73    OL] . and . to s
02EA10:  6B 69 70 20 74 6F 20 70 72 65 76 69 6F 75 73 2F    kip to previous/
02EA20:  6E 65 78 74 20 66 69 6C 65 2C 5B 53 50 41 43 45    next file,[SPACE
02EA30:  5D 20 74 6F 20 72 65 62 75 69 6C 64 20 73 63 72    ] to rebuild scr
02EA40:  65 65 6E 20 61 6E 64 20 5B 52 45 54 55 52 4E 5D    een and [RETURN]
02EA50:  20 74 6F 20 66 69 6E 69 73 68 2E 20 50 72 65 73     to finish. Pres
02EA60:  73 20 61 6E 79 20 6B 65 79 20 74 6F 20 73 74 61    s any key to sta
02EA70:  72 74 21 22 01 83 20 1C 06 BB 01 0C 00 00 F3 EF    rt!".. .........
02EA80:  22 20 22 01 0B 00 00 EE EF 0E 00 12 00 0E 01 D6    " ".............
02EA90:  20 0C 00 00 F3 F2 FF 03 28 19 0D 29 00 3A 00 18     .......(..).:..
02EAA0:  01 20 20 B2 20 FF 74 28 22 40 20 F0 F1 F8 F9 22    .  . .t("@ ...."
02EAB0:  2C 0C 00 00 F3 29 F4 0F 20 A0 20 1E 72 01 2C 1E    ,....).. . .r.,.
02EAC0:  72 01 2C 1E 40 01 2C 1E 54 01 2C 1E 68 01 2C 1E    r.,.@.,.T.,.h.,.
02EAD0:  22 01 2C 1E 36 01 00 4E 00 22 01 20 20 20 20 0B    ".,.6..N.".    .
02EAE0:  00 00 E6 EF 0B 00 00 6E E6 01 D6 20 0B 00 00 E6    .......n... ....
02EAF0:  EE 0F 20 FA 20 0B 00 00 6E E6 5B 0B 00 00 E6 5D    .. . ...n.[....]
02EB00:  2E 0D 0D 20 20 20 20 20 2D 2D 2D 2D 2D 2D 2D 2D    ...     --------
02EB10:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02EB20:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02EB30:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02EB40:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D 0D 20    -------------.. 
02EB50:  20 20 20 20 26 42 42 34 42 20 2D 20 4B 4D 20 42        &BB4B - KM B
02EB60:  52 45 41 4B 20 45 56 45 4E 54 0D 0D 20 20 20 20    REAK EVENT..    
02EB70:  20 45 6E 74 72 79 3A 0D 0D 20 20 20 20 20 4E 6F     Entry:..     No
02EB80:  6E 65 0D 0D 20 20 20 20 20 45 78 69 74 3A 0D 0D    ne..     Exit:..
02EB90:  20 20 20 20 20 41 46 20 61 6E 64 20 48 4C 20 63         AF and HL c
02EBA0:  6F 72 72 75 70 74 2E 0D 0D 20 20 20 20 20 2D 2D    orrupt...     --
02EBB0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02EBC0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02EBD0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02EBE0:  2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ----------------
02EBF0:  2D 2D 2D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D    ---.............
02EC00:  0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D 0D    ................
02EC10:  0D 1A 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D    ..--------------
02EC20:  2D 2D 2D 2D 0D 1A 00 00 00 00 00 00 00 1A 35 33    ----..........53
02EC30:  7C 0D 09 20 20 2B 2D 2D 2D 2B 2D 2D 2D 2B 0D 0D    |..  +---+---+..
02EC40:  1A 20 20 20 7C 20 20 20 7C 20 20 20 7C 20 20 20    .   |   |   |   
02EC50:  7C 20 20 20 7C 20 20 20 7C 20 20 1A 00 00 00 00    |   |   |  .....
02EC60:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02EC70:  00 00 00 00 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A    ................
02EC80:  20 62 65 69 6E 67 20 67 65 6E 65 72 61 74 65 64     being generated
02EC90:  0D 0D 20 20 20 20 20 45 6E 74 72 79 3A 0D 0D 20    ..     Entry:.. 
02ECA0:  20 20 20 20 4E 6F 6E 65 2E 0D 0D 20 20 20 20 20        None...     
02ECB0:  45 78 69 74 3A 0D 0D 20 20 20 20 20 41 46 20 61    Exit:..     AF a
02ECC0:  6E 64 20 48 4C 20 63 6F 72 72 75 70 74 2E 0D 0D    nd HL corrupt...
02ECD0:  20 20 20 20 20 4E 6F 74 65 73 3A 0D 0D 20 20 20         Notes:..   
02ECE0:  20 20 54 68 69 73 20 72 6F 75 74 69 6E 65 20 65      This routine e
02ECF0:  6E 61 62 6C 65 73 20 69 6E 74 65 72 75 70 74 73    nables interupts
02ED00:  F0 0B 00 00 EE 01 0B 00 00 E6 EF 0B 00 00 E6 F5    ................
02ED10:  0F 01 D5 01 0B 00 00 EE EF 0B 00 00 6E E6 5B 0B    ............n.[.
02ED20:  00 00 E6 5D 00 0C 00 2C 01 20 20 A0 20 1E 40 01    ...]...,.  . .@.
02ED30:  00 54 00 36 01 20 20 20 20 0B 00 00 E6 EF 0B 00    .T.6.    .......
02ED40:  00 6E E6 01 D6 20 0B 00 00 6E E6 5B 0B 00 00 E6    .n... ...n.[....
02ED50:  5D EE 0B 00 00 EE 01 0B 00 00 E6 EF 0B 00 00 E6    ]...............
02ED60:  F5 0F 01 D5 01 0B 00 00 EE EF FF 77 28 0B 00 00    ...........w(...
02ED70:  6E E6 5B 0B 00 00 E6 F4 0F 5D 2C 0B 00 00 6E F3    n.[......],...n.
02ED80:  F5 19 19 29 00 43 00 40 01 20 20 20 20 9F 20 1E    ...).C.@.    . .
02ED90:  B8 01 01 9E 20 0B 00 00 E9 EF 0E 20 EC 20 19 18    .... ...... . ..
02EDA0:  01 A9 20 0F 2C 0B 00 00 E9 F4 0F 01 83 20 0B 00    .. .,........ ..
02EDB0:  00 70 72 F4 2C 40 0C 00 00 F3 5B 0B 00 00 E9 F4    .pr.,@....[.....
02EDC0:  0B 00 00 EE 5D 01 B0 00 0C 00 4A 01 20 20 A0 20    ....].....J.  . 
02EDD0:  1E 72 01 00 3E 00 54 01 20 20 20 20 A1 20 0B 00    .r..>.T.    . ..
02EDE0:  00 EE EE 0E 20 EB 20 0B 00 00 EE EF 0B 00 00 EE    .... . .........
02EDF0:  F5 0F 01 BF 22 1F 01 FF 20 08 22 3B 01 83 20 0B    ...."... .";.. .
02EE00:  00 00 70 72 F4 2C 40 0C 00 00 F3 5B 0B 00 00 EE    ..pr.,@....[....
02EE10:  5D 00 0C 00 5E 01 20 20 A0 20 1E 72 01 00 48 00    ]...^.  . .r..H.
02EE20:  68 01 20 20 20 20 A1 20 0B 00 00 EE F1 0B 00 00    h.    . ........
02EE30:  6E F3 F5 19 19 20 EB 20 0B 00 00 EE EF 0B 00 00    n.... . ........
02EE40:  EE F4 0F 01 BF 22 1F 01 1A 20 08 22 3B 01 83 20    ....."... .";.. 
02EE50:  0B 00 00 70 72 F4 2C 40 0C 00 00 F3 5B 0B 00 00    ...pr.,@....[...
02EE60:  EE F4 19 18 5D 00 0E 00 72 01 20 20 0C 00 00 F3    ....]...r.  ....
02EE70:  EF FF 43 00 06 00 7C 01 D5 00 1D 00 86 01 9F 20    ..C...|........ 
02EE80:  1E B8 01 01 BF 22 1F 01 17 42 79 65 20 64 61 72    ....."...Bye dar
02EE90:  6C 69 6E 67 21 22 00 08 00 90 01 86 01 98 00 CE    ling!"..........
02EEA0:  00 9A 01 0C 00 00 F3 EF 22 33 44 43 30 44 44 36    ........"3DC0DD6
02EEB0:  45 30 30 44 44 36 36 30 31 41 46 42 36 43 38 34    E00DD6601AFB6C84
02EEC0:  37 32 33 35 45 32 33 35 36 43 44 37 38 42 42 32    7235E2356CD78BB2
02EED0:  44 32 35 45 42 37 45 32 33 46 45 46 46 32 30 30    D25EB7E23FEFF200
02EEE0:  38 37 45 32 33 30 35 43 38 45 36 37 46 31 38 30    87E2305C8E67F180
02EEF0:  43 45 36 37 46 46 45 30 39 32 30 30 41 37 41 45    CE67FFE09200A7AE
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:  36 30 37 44 36 30 39 32 46 38 32 35 37 31 38 32    607D6092F8257182
02F110:  36 46 45 32 30 32 38 32 31 43 35 44 35 45 35 46    6FE202821C5D5E5F
02F120:  33 30 31 38 41 37 46 45 44 34 39 43 44 44 45 41    3018A7FED49CDDEA
02F130:  44 45 42 43 44 44 45 41 44 30 31 30 30 30 38 31    DEBCDDEAD0100081
02F140:  41 31 33 37 37 30 39 33 30 46 41 44 39 45 44 34    A13770930FAD9ED4
02F150:  39 44 39 46 42 45 31 44 31 43 31 31 34 37 41 46    9D9FBE1D1C1147AF
02F160:  45 35 30 44 30 31 30 42 36 43 39 22 00 2E 00 A4    E50D010B6C9"....
02F170:  01 83 20 1C 4E BB 01 83 20 1C FF BB 01 0B 00 00    .. .N... .......
02F180:  E1 EF 1C A6 BB 01 9F 20 1E C2 01 01 0B 00 00 E1    ....... ........
02F190:  EF 1C 1B BC 01 9F 20 1E C2 01 00 3E 00 AE 01 9E    ...... ....>....
02F1A0:  20 0B 00 00 E9 EF 0E 20 EC 20 1C 60 00 01 BE 20     ...... . .`... 
02F1B0:  0B 00 00 70 72 F4 F4 0B 00 00 E9 2C FF 1D 28 22    ...pr......,..("
02F1C0:  26 22 F4 AC 28 0C 00 00 F3 2C 0B 00 00 E9 F6 10    &"..(....,......
02F1D0:  F4 0F 2C 10 29 29 01 B0 00 1B 00 B8 01 AD 20 10    ..,.))........ .
02F1E0:  01 A2 20 0E 2C 0E 01 A2 20 0F 2C 19 1A 01 82 20    .. .,... .,.... 
02F1F0:  0E 01 C9 00 41 00 C2 01 AC 28 0C 00 00 F3 2C FF    ....A....(....,.
02F200:  74 28 0C 00 00 F3 2C 22 44 45 41 44 22 29 29 EF    t(....,"DEAD")).
02F210:  FF 73 28 FF 12 28 0B 00 00 E1 29 2C 10 29 F4 FF    .s(..(....),.)..
02F220:  73 28 FF 12 28 0B 00 00 E1 F4 0F 29 FA 20 1C 3F    s(..(......). .?
02F230:  00 2C 10 29 00 06 00 CC 01 C9 00 2E 00 D6 01 A1    .,.)............
02F240:  20 FF 41 EF 19 20 20 EB 20 0C 00 00 F3 EF 22 46     .A..  . ....."F
02F250:  69 6C 65 20 64 6F 65 73 6E 27 74 20 65 78 69 73    ile doesn't exis
02F260:  74 22 01 A0 20 1E 1C 02 00 2D 00 E0 01 A1 20 FF    t".. ....-.... .
02F270:  41 EF 19 19 20 EB 20 0C 00 00 F3 EF 22 46 69 6C    A... . ....."Fil
02F280:  65 20 69 73 20 6E 6F 74 20 41 53 43 49 49 22 01    e is not ASCII".
02F290:  A0 20 1E 1C 02 00 2B 00 EA 01 A1 20 FF 41 EF 19    . ....+.... .A..
02F2A0:  20 20 EB 20 0D 00 00 F3 EF 22 46 69 6C 65 20 72      . ....."File r
02F2B0:  65 61 64 20 65 72 72 6F 72 22 01 A0 20 1E 1C 02    ead error".. ...
02F2C0:  00 20 00 F4 01 A1 20 FF 41 F2 19 0E 20 FA 20 FF    . .... .A... . .
02F2D0:  41 F2 17 20 FA 20 FF 41 F2 15 20 EB 20 1E 12 02    A.. . .A.. . ...
02F2E0:  00 38 00 FE 01 0C 00 00 F3 EF 22 4F 75 74 20 6F    .8........"Out o
02F2F0:  66 20 6D 65 6D 6F 72 79 22 01 A1 20 0B 00 00 6E    f memory".. ...n
02F300:  00 44 49 53 43 20 20 20 20 20 20 20 00 00 00 00    .DISC       ....
02F310:  00 00 00 00 00 70 01 00 5E 0A 00 00 00 00 00 00    .....p..^.......
02F320:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F330:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................
02F340:  5E 0A 00 44 03 0B 00 00 6E E6 5B 0B 00 00 EE 5D    ^..D....n.[....]
02F350:  01 9F 20 1E 26 02 01 C8 20 1E E6 00 00 28 00 26    .. .&... ....(.&
02F360:  02 88 01 BF 22 1F 01 01 12 3E 20 22 FF 1C 28 0C    ...."....> "..(.
02F370:  00 00 73 E6 5B 0B 00 00 EE 5D 29 22 1F 28 01 22    ..s.[....])".(."
02F380:  39 00 0A 00 01 C0 20 46 69 6C 65 20 53 63 61 6E    9..... File Scan
02F390:  6E 65 72 20 56 31 2E 31 20 28 43 29 31 39 39 30    ner V1.1 (C)1990
02F3A0:  20 20 62 79 20 44 52 41 47 4F 4E 42 52 45 45 44      by DRAGONBREED
02F3B0:  20 57 45 54 57 41 52 45 00 07 00 14 00 01 C0 00     WETWARE........
02F3C0:  3C 00 1E 00 01 C0 20 57 72 69 74 74 65 6E 20 6F    <..... Written o
02F3D0:  75 74 20 6F 66 20 50 55 52 45 20 46 52 55 53 54    ut of PURE FRUST
02F3E0:  52 41 54 49 4F 4E 2E 20 50 6C 65 61 73 65 20 69    RATION. Please i
02F3F0:  66 20 79 6F 75 20 77 72 69 74 65 00 37 00 28 00    f you write.7.(.
02F400:  01 C0 20 61 20 70 72 6F 67 72 61 6D 20 77 72 69    .. a program wri
02F410:  74 65 20 69 74 20 47 4F 4F 44 20 41 54 20 4F 4E    te it GOOD AT ON
02F420:  43 45 2E 20 53 6F 20 74 68 61 74 20 6F 74 68 65    CE. So that othe
02F430:  72 73 00 3A 00 32 00 01 C0 20 64 6F 6E 27 74 20    rs.:.2... don't 
02F440:  68 61 76 65 20 74 6F 20 72 65 2D 69 6E 76 65 6E    have to re-inven
02F450:  74 20 74 68 65 20 77 68 65 65 6C 20 6F 6E 6C 79    t the wheel only
02F460:  20 62 65 63 61 75 73 65 20 79 6F 75 00 2D 00 3C     because you.-.<
02F470:  00 01 C0 20 72 65 66 75 73 65 64 20 74 6F 20 6D    ... refused to m
02F480:  61 6B 65 20 74 68 65 20 77 68 65 65 6C 20 77 6F    ake the wheel wo
02F490:  72 6B 61 62 6C 65 2E 2E 2E 00 07 00 46 00 01 C0    rkable......F...
02F4A0:  00 0E 00 64 00 8E 20 61 2D 7A 01 90 20 73 00 2A    ...d.. a-z.. s.*
02F4B0:  00 6E 00 93 20 0C 00 00 F3 5B FF 09 28 22 22 29    .n.. ....[..("")
02F4C0:  F7 19 14 5D 2C 0C 00 00 73 E6 5B 19 19 5D 2C 0B    ...],...s.[..],.
02F4D0:  00 00 6E E6 5B 19 19 5D 00 3E 00 78 00 0B 00 00    ..n.[..].>.x....
02F4E0:  70 72 F4 EF 1C 00 B0 01 9F 20 1E 9A 01 01 0B 00    pr....... ......
02F4F0:  00 6E F3 EF 0E 01 0B 00 00 6E E6 EF 0E 01 0C 00    .n.......n......
02F500:  F3 F5 0B 00 00 6E E6 5B 0B 00 00 EE F5 0F 5D F1    .....n.[......].
02F510:  19 19 20 EB 20 1E 1C 02 00 2D 00 08 02 0C 00 00    .. . ....-......
02F520:  F3 5B 0B 00 00 6E F3 5D EF 22 22 01 0B 00 00 6E    .[...n.].""....n
02F530:  F3 EF 0B 00 00 6E F3 F5 0F 01 9F 20 1E 26 02 01    .....n..... .&..
02F540:  C8 20 1E DC 00 00 30 00 12 02 9F 20 1E B8 01 01    . ....0.... ....
02F550:  BF 22 1F 01 17 50 72 6F 67 72 61 6D 20 65 72 72    ."...Program err
02F560:  6F 72 22 FF 41 22 69 6E 20 6C 69 6E 65 22 E3 01    or".A"in line"..
02F570:  C8 20 1E 90 01 00 22 00 1C 02 0B 00 00 6E F3 EF    . ...."......n..
02F580:  0B 00 00 6E E6 5B 0B 00 00 EE 5D 01 9F 20 1E 26    ...n.[....].. .&
02F590:  02 01 C8 20 1E E6 00 00 28 00 26 02 88 01 BF 22    ... ....(.&...."
02F5A0:  1F 01 01 12 3E 20 22 FF 1C 28 0C 00 00 73 E6 5B    ....> "..(...s.[
02F5B0:  0B 00 00 EE 5D 29 22 1F 28 01 22 0C 00 00 F3 00    ....])".(.".....
02F5C0:  1C 00 30 02 9E 20 0B 00 00 E9 EF 0F 20 EC 20 19    ..0.. ...... . .
02F5D0:  32 01 83 20 1C 19 BD 01 B0 01 C9 00 00 00 1A 43    2.. ...........C
02F5E0:  29 20 31 39 38 39 20 50 6F 77 65 72 48 6F 77 73    ) 1989 PowerHows
02F5F0:  65 2F FF 84 2A 0D 3B 2A FF 83 44 72 61 67 6F 6E    e/..*.;*..Dragon
02F600:  74 28 0C 00 00 F3 2C 22 44 45 41 44 22 29 29 EF    t(....,"DEAD")).
02F610:  FF 73 28 FF 12 28 0B 00 00 E1 29 2C 10 29 F4 FF    .s(..(....),.)..
02F620:  73 28 FF 12 28 0B 00 00 E1 F4 0F 29 FA 20 1C 3F    s(..(......). .?
02F630:  00 2C 10 29 00 06 00 CC 01 C9 00 2E 00 D6 01 A1    .,.)............
02F640:  20 FF 41 EF 19 20 20 EB 20 0C 00 00 F3 EF 22 46     .A..  . ....."F
02F650:  69 6C 65 20 64 6F 65 73 6E 27 74 20 65 78 69 73    ile doesn't exis
02F660:  74 22 01 A0 20 1E 1C 02 00 2D 00 E0 01 A1 20 FF    t".. ....-.... .
02F670:  41 EF 19 19 20 EB 20 0C 00 00 F3 EF 22 46 69 6C    A... . ....."Fil
02F680:  65 20 69 73 20 6E 6F 74 20 41 53 43 49 49 22 01    e is not ASCII".
02F690:  A0 20 1E 1C 02 00 2B 00 EA 01 A1 20 FF 41 EF 19    . ....+.... .A..
02F6A0:  20 20 EB 20 0D 00 00 F3 EF 22 46 69 6C 65 20 72      . ....."File r
02F6B0:  65 61 64 20 65 72 72 6F 72 22 01 A0 20 1E 1C 02    ead error".. ...
02F6C0:  00 20 00 F4 01 A1 20 FF 41 F2 19 0E 20 FA 20 FF    . .... .A... . .
02F6D0:  41 F2 17 20 FA 20 FF 41 F2 15 20 EB 20 1E 12 02    A.. . .A.. . ...
02F6E0:  00 38 00 FE 01 0C 00 00 F3 EF 22 4F 75 74 20 6F    .8........"Out o
02F6F0:  66 20 6D 65 6D 6F 72 79 22 01 A1 20 0B 00 00 6E    f memory".. ...n
02F700:  00 73 E6 5B 0B 00 00 6E E6 5D EF 22 20 22 01 0B    .s.[...n.]." "..
02F710:  00 00 6E F2 EF 0E 00 3D 00 82 00 BF 22 18 12 53    ..n....=...."..S
02F720:  43 41 4E 2E 42 41 53 20 54 65 78 74 20 46 69 6C    CAN.BAS Text Fil
02F730:  65 20 53 63 61 6E 6E 65 72 1F 3E 01 44 52 41 47    e Scanner.>.DRAG
02F740:  4F 4E 42 52 45 45 44 20 57 45 54 57 41 52 45 18    ONBREED WETWARE.
02F750:  22 01 84 00 5B 00 8C 00 BF 22 1F 01 18 4E 6F 77    "...[...."...Now
02F760:  20 65 6E 74 65 72 20 61 6C 6C 20 66 69 6C 65 73     enter all files
02F770:  20 79 6F 75 20 77 69 73 68 20 74 6F 20 76 69 65     you wish to vie
02F780:  77 2E 20 20 46 69 6E 69 73 68 20 77 69 74 68 20    w.  Finish with 
02F790:  52 45 54 55 52 4E 2E 20 20 44 6F 6E 27 74 20 6D    RETURN.  Don't m
02F7A0:  69 6E 64 20 6D 69 73 74 61 6B 65 73 2E 22 00 47    ind mistakes.".G
02F7B0:  00 96 00 D6 20 0C 00 00 73 E6 5B 0B 00 00 6E E6    .... ...s.[...n.
02F7C0:  5D EE 22 22 01 0B 00 00 6E E6 EF 0B 00 00 6E E6    ].""....n.....n.
02F7D0:  F4 0F 01 A6 20 A3 22 1F 01 19 12 46 69 6C 65 6E    .... £"....Filen
02F7E0:  61 6D 65 3A 20 22 2C 0C 00 00 73 E6 5B 0B 00 00    ame: ",...s.[...
02F7F0:  6E E6 5D 01 D5 00 43 00 A0 00 0B 00 00 6E E6 EF    n.]...C......n..
02F800:  0B 00 00 6E E6 F5 0F 01 BF 22 1F 01 18 14 41 74    ...n....."....At
02F810:  74 65 6D 70 74 69 6E 67 20 74 6F 20 72 65 61 64    tempting to read
02F820:  20 69 6E 20 66 69 6C 65 73 2E 2E 2E 1A 22 FF 03     in files...."..
02F830:  28 0E 29 22 4F 18 18 22 00 15 00 AA 00 9E 20 0B    (.)"O.."...... .
02F840:  00 00 EE EF 0F 20 EC 20 0B 00 00 6E E6 00 40 00    ..... . ...n..@.
02F850:  B4 00 20 20 0C 00 00 F3 5B 0B 00 00 6E F3 F4 0F    ..  ....[...n...
02F860:  5D EF FF 75 28 22 7F 7F 20 22 F4 FF 1C 28 0C 00    ]..u(".. "...(..
02F870:  00 73 E6 5B 0B 00 00 EE 5D 29 F4 22 20 22 F4 FF    .s.[....])." "..
02F880:  7B 28 19 4B 2C 1C 7F 00 29 2C 19 4F 29 00 4F 00    {(.K,...),.O).O.
02F890:  BE 00 20 20 0C 00 00 F3 5B 0B 00 00 6E F3 5D EF    ..  ....[...n.].
02F8A0:  22 22 01 0B 00 00 6E E6 5B 0B 00 00 EE 5D EF 0B    ""....n.[....]..
02F8B0:  00 00 6E F3 01 0B 00 00 6E F3 EF 0B 00 00 6E F3    ..n.....n.....n.
02F8C0:  F4 10 01 BF 22 1F 01 01 12 3E 20 22 FF 1C 28 0C    ...."....> "..(.
02F8D0:  00 00 73 E6 5B 0B 00 00 EE 5D 29 3B 00 28 00 C8    ..s.[....]);.(..
02F8E0:  00 20 20 B2 20 9C 20 A0 20 1E D6 01 01 B6 20 0C    .  . . . ..... .
02F8F0:  00 00 73 E6 5B 0B 00 00 EE 5D 01 B2 20 9C 20 A0    ..s.[....].. . .
RESULT OF SEARCH :
PRO=131   CHEA=0   COD=33   MUSI=0   COP=2   GRA=160   WRIT=115   198=1   199=1   STARTER=0   KBI=0   CAAV=0   L.TOURNIER=0  
EXTENDED CPC DSK File    SAMdisk160220(  N8255    TXTD 82552   TXTK BDOS    TXT3
CAS     TXTt !"#$%&'()*CONNECT TXT/+,-./0CONTCHARTXT1234CRTC    TXT56789ABCDCRTC
    TXT/EFGHIJEXPAN   TXTKLFINDER  DATMNOPGATE    TXTtQRSTUVWXYZGRA     TXTGabcd
efghHARDWARETXTijHI-KERN TXTJklmnopqrstINDIRECTTXThuvwxyzIOPORTS TXTcan  functio
n.  Mode 0 - Basic Input/Output Mode 1 - Strobed Input/Output **NOT USED BY CPC*
* Mode 2 - Bi-Directional Bus   **NOT USED BY CPC**  In some of these modes port
 C is used as a control/status port for  port A or B. It can be used to confirm 
when data transfer may take  place, and reflect any other flags. The 8255 PPI is
 therefore supplied  with the added option for the user to set or reset any indi
vidual bits  in port C.  The I/O status, mode of operation and bit setting is de
fineKERNAL  TXTKERNAL  TXTdKEYMAP  TXT)£KM      TXTKDISC       d by the  8255 PP
I control byte. (The control byte is accessed using port  &F7xx.(8255 Control po
rt))  The ports may be accessed separately by the CPU.  Port A is accessed using
 port &F4xx. Port B is accessed using port &F5xx. Port C is accessed using port 
&F6xx.   NOTE  Mode 0 operation  Mode 0 operation does not require other ports t
o be used to control  data transfer. Data may only be sent to a port if the port
 is defined  as output, and data may only be read from a port when the port is s
et  to input.    Using the 8255 Ports --------------------  When writing to a po
rt  1) Make suretheport is operating as output. (This is done by sending     a c
ontrol byte to port &F7xx). 2) Write the data to the port. 3) Return the port to
 it's original I/O Status.  When reading from a port  1) Make sure the port is o
perating as input. (This is done by sending     a control byte to port &F7xx). 2
) Read the data from the port. 3) Return the port to it's original I/O Status.  
  8255 PPI Control Byte ---------------------  This byte controls the Input/Outp
ut (I/O) status and operating mode of  each port.  It also has a secondary funct
ion which allows the user to set or reset  a particular bit of port C.  To send 
a control byte to the 8255, simply sent the byte to port  &F7xx. (NOTE The contr
ol byte can only be written, it cannot be  read.)  The f8255 Parallel Peripheral
 Interface ----------------------------------  The 8255 is a general purpose inp
ut output chip. It is connected to  the PSG, keyboard and cassette recorder.  Pr
ogramming the 8255 --------------------  The 8255 has 3 8-bit ports (A,B and C),
 each of which can have a  different I/O Status (i.e. input or output). Port C c
an also be  programmed to operate in two halves. (As two separate 4-bit ports). 
  There are 3 basic modes of operation under which the ports   Nunction to be ex
ecuted by the 8255 is dependant on the state of  bit 7.  If bit 7 is 1, the rema
ining bits are used to define the I/O status,  and operating mode of each port. 
  If bit 7 is 0, the remaining bits are used to determine what bit is  set (set 
to 1) or reset (set to 0) of port C.    Configuration control byte -------------
-------------  When bit 7 is set to 1, the command byte operates in the followin
g  way  Bit 7e may crash. (The firmware expects the operating modes to be  the s
ame as given below).   Port A (Port address&F4xx) (I/O Status Output) (Operating
 mode 0) ------  Bit 7  PSG data Bit 6  Bit 5  Bit 4  Bit 3  Bit 2  Bit 1  Bit 0
     Port B (Port address &F5xx) (I/O Status Input) (Operating mode 0) ------  B
it7Cassette read data  Bit 6 Printer configuration 1 Not-ready,  0 Ready  Bit 5 
Expansion peripheral  Control byte function (1Configuration control byte)  Bit 6
  Operating Mode (Port A and Port C upper) Bit 5    Bit 4 Port A I/O Status  0 O
utput, 1 Input  Bit 3 Port C (upper) I/O Status   0 Output, 1 Input  Bit 2 Opera
ting Mode selection (Port B and Port C lower)  Bit 1 Port B I/O Status 0 Output,
 1 Input  Bit 0 Port C (lower) I/O Status 0 Output, 1 Input  Port A and Port C (
upper) Operating mode --------------------------------------  Bit 6Bit 5Mode sel
ection --------------------detect 1 Expansion peripheral present, 0 Not present 
 Bit 4 Screen refresh frequency (defined by hardware) 1 50Hz    0 60Hz  Bit 3  C
omputer name on power-up. Bit 2  Bit 1   Bit 0 VSYNC status (Frame flyback statu
s) 1 VSYNC occured, 0 no VSYNC  Table showing Computer name on power-up  Bit 3  
    Bit 2    Bit 1    Computer name ----------------------------------------    
 0       0      0        Isp    0       0      1        Triumph    0       1    
  0        Saisho    0       1      1    --------------------------   0  0Mode 0
   0  1Mode 1   1  0Mode 2   1  1Mode 2  Port B and Port C (lower) operating mod
e ----------------------------------------  Bit 2Mode Selection ----------------
--------------    0Mode 0   1Mode 1    Bit Set/Reset control byte --------------
------------  When bit 7 is set to 0, the control byte operates in the following
  way  Bit 7 Control byte function (0Bit Set/Reset c    Solavox    1       0    
  0        Awa    1       0      1        Schneider    1       1      0        O
rion    1       1      1        Amstrad    Port C (Port address &F6xx) (I/O Stat
us Output) (Operating mode 0) ------  Bit 7  PSG control Bit 6   Bit5 Cassette w
rite data  Bit 4 Cassette motor control         1 Turn motor on, 0 Turn motor of
f  Bit 3  Keyboard line to be scanned (0-10) Bit 2  Bit 1  Bit 0   ontrol byte) 
 Bit 6  Not used. (send 0) Bit 5  Bit 4   Bit 3  Bit to change. Bit 2  Bit 1   B
it 0 Bit operation 1 Set bit (make bit1), 0 Reset bit (make bit0)  Table to show
 how bit to change is coded  Bit 3Bit 2Bit 1Bit selected -----------------------
-------------------------------------  0  0  0Bit 0  0  0  1Bit 1  0  1  0Bit 2 
 0  1  1Bit 3  1  0  0Bit 4  1  0  1Bit 5  1  1  0Bit 6  1  1  1Bit 7    Program
ming Examples --------------------  1) Using the control byte  a) Setting bit 7 
of port C to 1,  LD B,&F78255 Control port LD A,%00001111Bit Set/reset function 
OUT (C),ASend it to 8255 RET  b) Set port A to input, operating in mode 0, port 
B to output,  operating in mode 0 and port C to input, operating in mode 0.  LD 
B,&F78255 Control port LD A,%10011001Configuration function OUT (C),ASend it to 
8255 RET    Port Usage ----------  For each port, the port address (at which the
 port can be accessed)  it's normal I/O Status (unless changed by the user), it'
s operating  mode (unless changed by the user) are given.  For more information 
on a particular function of each port, see the  appropiate part of the CPC Guide
.  NOTE If you are using the firmware, always return the operating modes  and I/
O status of the ports used to their status below, otherwise the  firmwar  N  2) 
Using port A/B/C,  In this example, port A is set to output, port B is set to in
put, and  port C is set to output, and they are all operating in mode 0.  We wil
l only be using port A for these examples.  a) Reading from port A,  Set port A 
to input                          LD B,&F78255 Control port LD A,%10010010Config
uration function OUT (C),ASend to 8255  LD B,&F4Port A port address IN E,(C)Get 
byte from port  ction.  Mode 0 - Basic Input/Output Mode 1 - Strobed Input/Outpu
t **NOT USED BY CPC** Mode 2 - Bi-Directional Bus   **NOT USED BY CPC**  In some
 of these modes port  C  is  used  as a control/status port for port A or B. It 
can  be  used  to  confirm when data transfer may take place, and reflect any ot
her flags. The 8255 PPI is therefore supplied with the added option for the user
 to set or reset any individual bits in port C.  The I/O status, mode of operati
on  and  bit  setting is defined by the 8255 PPIRegister E holds value from port
  Return port I/O status and operating modes to previous settings.  LD B,&F78255
 Control port LD A,%10000010Configuration function OUT (C),ASend to 8255 RET    
b) Writing to port A,  Set port A to output                  (Note the next few 
lines are not necessary as port A is already acting as output, however it is giv
en here just to make the example more understandabl control  byte.  (The  contro
l  byte  is  accessed  using port &F7xx.(8255 Control port))  The ports may be a
ccessed separately by the CPU.  Port A is accessed using port &F4xx. Port B is a
ccessed using port &F5xx. Port C is accessed using port &F6xx.  NOTE  Mode 0 ope
ration  Mode 0 operation does not require  other  ports  to be used to control d
ata transfer. Data may only be sent to  a port if the port is defined as output,
 and data may only be read  from a port when the port is set to input.  e)  LD B
,&F78255 Control port LD A,%10000010Configuration function OUT (C),ASend to 8255
                          LD B,&F4port A port address  Register E holds value to
 put into port  LD E,&FFData to put into port OUT (C),ASend to port A  Return po
rt I/O status and operating modes to previous settings.  LD B,&F78255 Control po
rt LD A,%10000010Configuration function OUT (C),A RET trol port LD A,%10000010Co
nfiguration functio  Using the 8255 Ports --------------------  When writing to 
a port  1) Make sure the port is operating as output. (This is done by sending  
  a control byte to port &F7xx). 2) Write the data to the port. 3) Return the po
rt to it's original I/O Status.  When reading from a port  1) Make sure the port
 is operating  as input. (This is done by sending    a control byte to port &F7x
x). 2) Read the data from the port. 3) Return the port to it's original I/O Stat
us.    8255 PPI Control Byte ---------------------  This byte controls the Input
/Output (I/O) status and operating mode of each port.  It also has a secondary f
unction which allows the user to set or reset a particular bit of port C.  To se
nd a control byte  to  the  8255,  simply  sent  the byte to port &F7xx. (NOTE T
he control  byte  can  only  be  written,  it cannot be read.)  The function to 
be executed by the  8255  is 8255 Parallel Peripheral Interface ----------------
------------------  The 8 Dqpc'OOpOAOpOOpppOOOOOABAOpOOOOpOOOOOOBpOOOOOOO  Ndepe
ndant on the state of bit 7.  If bit 7 is 1, the remaining  bits  are used to de
fine the I/O status, and operating mode of each port.  If bit 7 is 0, the remain
ing  bits  are  used to determine what bit is set (set to 1) or reset (set to 0)
 of port C.    Configuration control byte --------------------------  When bit 7
 is set to 1, the command byte operates in the following way  Bit 7 Control byte
 function (1Configuration control b  which  the port can be accessed) it's norma
l I/O Status (unless  changed  by  the user), it's operating mode (unless change
d by the user) are given.  For more information on a  particular  function  of e
ach port, see the appropiate part of the CPC Guide.  NOTE If you are using the f
irmware, always return the operating modes and I/O status of the ports used  to 
their status below, otherwise the firmware may crash. (The firmware  expects  th
e  operating modes to be the same as given below).  Port A (Port ayte)  Bit 6  O
perating Mode (Port A and Port C upper) Bit 5   Bit 4 Port A I/O Status         
 0 Output, 1 Input  Bit 3 Port C (upper) I/O Status          0 Output, 1 Input  
Bit 2 Operating Mode selection (Port B and Port C lower)  Bit 1 Port B I/O Statu
s         0 Output, 1 Input  Bit 0 Port C (lower) I/O Status         0 Output, 1
 Input  Port A and Port C (upper) Operating mode -------------------------------
-------  Bit 6           Bit 5           Mode selection ------------------------
-ddress&F4xx) (I/O Status Output) (Operating mode 0) ------  Bit 7  PSG data Bit
 6  Bit 5  Bit 4  Bit 3  Bit 2  Bit 1  Bit 0     Port B (Port address &F5xx) (I/
O Status Input) (Operating mode 0) ------  Bit 7 Cassette read data  Bit 6 Print
er configuration         1 Not-ready,  0 Ready  Bit 5 Expansion peripheral detec
t         1 Expansion peripheral present, 0 Not present  Bit 4 Screen refresh fr
equency (defi---------------------   0               0             Mode 0   0   
            1             Mode 1   1               0             Mode 2   1     
          1             Mode 2  Port B and Port C (lower) operating mode -------
---------------------------------  Bit 2           Mode Selection --------------
----------------    0             Mode 0   1             Mode 1    Bit Set/Reset
 control byte --------------------------  When bit 7 isned by hardware)         
1 50Hz    0 60Hz  Bit 3  Computer name on power-up. Bit 2  Bit 1   Bit 0 VSYNC s
tatus (Frame flyback status)         1 VSYNC occured, 0 no VSYNC  Table showing 
Computer name on power-up  Bit 3      Bit 2    Bit 1    Computer name ----------
------------------------------     0       0      0        Isp    0       0     
 1        Triumph    0       1      0        Saisho    0       1      1        S
olavox    1       0      0        Awa    1       0      1        Schneider  set 
to  0,  the  control  byte operates in the following way  Bit 7 Control byte fun
ction (0Bit Set/Reset control byte)  Bit 6  Not used. (send 0) Bit 5  Bit 4   Bi
t 3  Bit to change. Bit 2  Bit 1   Bit 0 Bit operation         1 Set bit (make b
it1), 0 Reset bit (make bit0)  Table to show how bit to change is coded  Bit 3  
         Bit 2           Bit 1           Bit selected --------------------------
----------------------------------  0                0               0          
   Bit   1       1      0        Orion    1       1      1        Amstrad    Por
t C (Port address &F6xx) (I/O Status Output) (Operating mode 0) ------  Bit 7  P
SG control Bit 6   Bit 5 Cassette write data  Bit 4 Cassette motor control      
   1 Turn motor on, 0 Turn motor off  Bit 3  Keyboard line to be scanned (0-10) 
Bit 2  Bit 1  Bit 0     Programming Exa 0  0                0               1   
          Bit 1  0                1               0             Bit 2  0        
        1               1             Bit 3  1                0               0 
            Bit 4  1                0               1             Bit 5  1      
          1               0             Bit 6  1                1               
1             Bit 7    Port Usage ----------  For each port, the port address  (
at  Nmples --------------------  1) Using the control byte  a) Setting bit 7 of 
port C to 1,  LD B,&F7                8255 Control port LD A,%00001111          
Bit Set/reset function OUT (C),A               Send it to 8255 RET  b) Set port 
A  to  input,  operating  in  mode  0,  port  B to output, operating in mode 0 a
nd port C to input, operating in mode 0.  LD B,&F7                8255 Control p
ort LD A,%10011001          Configuration function OUT (C),A               Send 
it to 8255 RET    2) Using port A/B/C,  In this example, port A is set to  outpu
t, port B is set to input, and port C is set to output, and they are all operati
ng in mode 0.  We will only be using port A for these examples.  a) Reading from
 port A,                          Set port A to input  LD B,&F7                8
255 Control port LD A,%10010010          Configuration function OUT (C),A       
        Send to 8255  LD B,&F4                Port A port address INError codes 
 If bit 6  0 then the error numbers are as follows  &0E     File is not open as 
expected &0F     Hard end of file  &10     Bad command (incorrect filename) &11 
    File exists. &12     File doesn't exist. &13     Directory full &14     Disc
 is full. &15     Disc has been changed with files open. &16     File is read-on
ly  &1A     Soft end of file  &00     User has hit escape  If bit 6  1 then the 
error is as follows  Bit 5   Data Error      (data corruption on disc) Bit 4   O
verrun Error E,(C)                Get byte from port                          Re
gister E holds value from port                          Return port I/O status a
nd operating modes                         to previous settings.  LD B,&F7      
          8255 Control port LD A,%10000010          Configuration function OUT (
C),A               Send to 8255 RET    b) Writing to port A,                    
      Set port A to output                       (data not supplied to FDC quick
 enough) Bit 3   Drive not ready (disc not in drive) Bit 2   No data (sector not
 found) Bit 1   not writable    (disc is write protected) bit 0   address mark m
issing (cannot determine the format for the data                               i
n the sector).  Error status buffer -------------------  The first value is  the
  number  of  bytes  recieved during the result phase of the FDC (as  described 
 elsewhere) disc controller, those following are the bytes recieved. (For a fu  
    (Note the next few lines are not necessary                         as port A
 is already acting as output, however                         it is given here j
ust to make the example                         more understandable)  LD B,&F7  
              8255 Control port LD A,%10000010          Configuration function O
UT (C),A               Send to 8255  LD B,&F4                port A port address
                          Register E holds value to put into port  LD E,&FF     
           Data to pll description see notes on FDC).  -------------------------
--------------------------------------------  BIOS SET MESSAGE - Set messages to
 be displayed or not.  Entry  If messages are to be enabled  A  &0  If messages 
disabled  A  &FF  Exit  A  previous state HL and flags corrupt.  ---------------
------------------------------------------------------  BIOS SETUP DISC - Setup 
disc information  Entry  HL  address of parameter block  Exit  AF,BC,DE,HL corru
pt.  Notes  Parameter block  Byte    Dut into port OUT (C),A               Send 
to port A                          Return port I/O status and operating modes   
                      to previous settings.  LD B,&F7                8255 Contro
l port LD A,%10000010          Configuration function OUT (C),A RET  urpose  inp
ut  output  chip. 10000010Configuration functio      port A port address        
                  Register E holds value to put into port  LD E,&FF             
   Data to p  Nefault         Function  0,1     50              Motor on timeout
 (20 millisecond units) 2,3     250             Motor off timeout (20 millisecon
d units) 4       175             Write off time (10 microsecond units) 5       1
5              Head settle time (1 millisecond units) 6       12              St
ep rate time (1 millisecond units) 7       1                Head unload delay   
           8       1                bits 7-1 - head load delay     see info on F
DC         1               bit    0 - non-D Other flags corrupt  Notes  Format h
eader data  This is the same as the  format  data  sent  to the FDC for its form
at command. The format header data  consists  of  entries  of 4 bytes. An entry 
is needed per sector.  Each entry has the form  Byte  0        track number 1   
     head number (side) 2        sector number 3        sector size (0 - 128 byt
es, 1 - 256 bytes, 2 - 512 bytes, etc)  (for special formats it is not  necessar
y  for  the track number to be the same as the track  the  drive  readinMA mode 
       SPECIFY command  The programmed values are used for both drives.  -------
--------------------------------------------------------------  BIOS SELECT FORM
AT - Initilise data parameters for selected format  Entry  A  &41, &C1 or &01  &
41 - System format &C1 - Data format &01 - IBM format  E  drive number (A  0, B 
 1)  Exit  AF,BC,DE,HL corrupt.  Notes  Bytes 0-21 are reset to the  values  for
 each particular format. Bytes 22-24 remain untouched.  If the user wants to use
 a special formg/writing head is located on, also you can have different sector 
numbers and head values).  The Expanded disc parameter block must be initialised
 for the required format.  -----------------------------------------------------
-----------------  BIOS MOVE TRACK - Move to specified track  Entry  E  drive nu
mber D  track number  Exit  If moved OK  Carry true. A  0 HL unchanged.  If move
 failed  Carry false. A  error status byte HL  address of error status buffer  O
ther flags corrupt.  Notes  The readat, they must poke into the extended disc pa
rameter block directly.  Make sure, auto select format  NO, otherwise, when a ne
w disc is put in and operated on, the disc parameter block will change.  -------
--------------------------------------------------------------  BIOS READ SECTOR
 - Read a sector into memory  Entry  HL  address to put sector data E  drive num
ber (0-1) D  track number (0-42) C  sector number (any - depends on format)  Exi
t  If sector read OK  Carry true. A  0.  If failed to read/write/format  routine
s  move  automatically  to  the  correct track.  -------------------------------
---------------------------------------  BIOS GET DR STATUS - Get status registe
r 3 of uPD765A disc controller  Entry  A  drive number  Exit  If carry true  A  
drive status byte as below (Status register 3 of FDC). HL unchanged.  If carry f
alse  HL  address of error  status  buffer,  second  byte   status byte as below
 A corrupt  Other flags corrupt  Notes  Bit     Function  7       undefined 6   
 sector correctly  Carry false. A  error status byte (see above) HL  address of 
error status buffer (see above)  Other flags corrupt.  -------------------------
-------------------------------------------- BIOS WRITE SECTOR - Write a sector 
to disc  Entry  HL  address to get sector data from E  drive number (A  0, B  1)
 D  track number C  sector number  Exit  If sector written OK  Carry true. A  0 
HL unchanged.  If sector wasn't written correctly  Carry false. A  error byte   
                    flag  to  indicate  if  drive  is  write  protected  (1write
         protected) 5       Flag to indicate if drive ready (1ready) 4       Fla
g to indicate if head is on track 0 (1at track 0) 3       undefined 2       head
/side (0) 1       0 0       selected drive (A0, B1)  If any of the bits 4-6 are 
set (1) then that error  has occured.  -----------------------------------------
----------------------------  BIOS  SET  RETRY   COUNT   -   Set   the   number 
  of   retries  for                          (see above) HL  address of error st
atus buffer  Other flags corrupt.  ---------------------------------------------
-------------------------  BIOS FORMAT TRACK -  Format  a  track  (initialise  a
  track for data                       storage)  Entry  HL  address of format he
ader data E  drive number D  track number  Exit conditions  If track formatted O
K  Carry true. A  0 HL unchanged..  If failed to format track correctly  Carry f
alse. A  error status byte HL  address of error status buffer   N          read/
write/format commands  Entry  A  new value for retry count  Exit  A  old value H
L and flags corrupt.  Notes  The default value is 16.  -------------------------
--------------------------------------------   bit 6  0 then the error numbers a
re as follows  &0EFile is not open as expected &0FHard end of file  nctio-------
--------------------------  BIOS  SET  RETRY   COUNT   -   Set   the   number   
of   retries  for                       te  errors.    The default half zero len
gth and precompensation settings are 333  microseconds (1000 baud) and 25 micros
econds respectivly. The commonly  used faster setting is 167 microseconds (2000 
baud) with 50  microseconds of precompensation. These values have been determine
d  after extensive testing and the user is advised to stick to them.    --------
-------------------------------------------------------------  &BC6B - CAS NOISY
 - Allow messages to be printed    Entry    If messages are to be enabled    A  
0    If messages are to be disabled    A  0    Exit    AF corrupt.    Notes    T
he prompt messages such as 'Press PLAY then any key" are turned off.  Error mess
ages such as 'Read error a' etc are not.    ------------------------------------
---------------------------------  &BC6E - CAS START MOTOR - Start cassette moto
r.    Entry    None    Exit    If the motor turned on OK    Carry true.    If th
e user hit escape    Carry false.    A  previous motor state  OtCAS         r 9 
9--------  $$ r7&BC65 - CAS INITIALISE - Initialise the cassette manager    Entr
y    None    Exit    AF,BC,DE,HL corrupt.    Notes    All streams are marked clo
sed.  The default write speed is set up.  The prompt messages are turned on.  Th
e cassette motor is turned off (except on V1.0)    -----------------------------
----------------------------------------  &BC68 - CAS SET SPEED - Set the wriher
 flags corrupt.    Notes    The previous state may be sent to CAS RESTORE MOTOR.
    --------------------------------------------------------------------    &BC7
1 - CAS STOP MOTOR - Stop cassette motor.     Entry    None    Exit    If motor 
was turned off OK    Carry true.    If the user hit escape    Carry false    A  
previous state  Other flags corrupt.    ----------------------------------------
-----------------------------    &BC74 - CAS RESTORE MOTOR - Restore previous st
ate of motor    Entry te speed    Entry    HL  length of half a zero bit  A  pre
compensation to apply    Exit    AF and HL corrupt.    Notes    The speed suppli
ed is the length of a half zero bit in mircoseconds. A  one bit is written twice
 the length of a zero bit. The speed supplied  can be related to the average bau
d rate (assuming equal numbers of  ones and zeros) by the following equations   
 Average baud rate     1 000 000/(3*half zero length)   333 333/Half zero length
    The half zero length must be bet   A  previous state    Exit    If motor set
 as appropiate was OK    Carry true.    Escape was pressed    Carry false.    A 
and other flags corrupt.    ----------------------------------------------------
-----------------    &BC77 - CAS IN OPEN - Open a file for input    Entry    B  
length of filename  HL  address of filename  DE  2K buffer to use    Exit    If 
the file was opened OK    Carry true.  Zero false.  HL  address of a buffer cont
aining the file header  DE  data location (from header) ween 130 and 480 microse
conds. Values  outside these values will cause read and write errors.    The pre
compensation supplied is the extra length, in microseconds, to  add to half a on
e bit and to subtract from half a zero bit under  certain conditions. The amount
 of precompensation required varies with  the speed (more is required at higher 
baud rates).    The precompensation may lie between 0 and 255 microseconds altho
ugh  the higher settings are not useful as they will cause read and wri  N BC  l
ength of file (from header)  A  file type    If stream is in use    Carry false.
  Zero false.  BC,DE,HL corrupt.    V1.0  ----  A corrupt.    V1.1  ----  A  err
or number (&0E)    If user hit escape    Carry false.  Zero true.  BC,DE,HL corr
upt.    V1.0  ----  A corrupt    V1.1  ----  A  error number (&00)      IX and o
ther flags corrupt.    Notes    The 2k buffer supplied is used to store the cont
ents of a block of the  file. It will remain in use until either CAS IN CLOSE or
 CAS IN  A possible to direct  reading (by CAS IN DIRECT).    ------------------
---------------------------------------------------   &BC83 - CAS IN DIRECT - Re
ad a input file into store.    Entry    HL  address to put the file (anywhere in
 ram)    Exit    If file was read OK    Carry true. Zero false.  HL  entry addre
ss  A corrupt.    If file was not opened correctly    Carry false. Zero false.  
HL corrupt.    V1.0  ---- A corrupt.    V1.1  ---- A  error number (&0E)    If u
ser hit escape    Carry false  BANDON is called. The buffer may be stored anywhe
re, even under a  ROM.    A filename of 0 characters is treated to mean, load th
e next file from  cassette.    The filename is shortened to 16 characters if it 
is longer than 16  characters.If it is less than 16 characters it is padded with
 &00 to  16 characters. The ASCII characters are turned to upper case.    When t
he file is opened for reading the first block is read. The  address of the area 
where the header from this block is sZero true.  HL corrupt.    V1.0  ---- A cor
rupt.    V1.1  ---- A  error number (&00)      DE,IX,BC and other flags corrupt.
    Notes    The stream must ne newly opened (by CAS IN OPEN). If the stream has
  been used for character access then it is not possible to directly  read the f
ile. It is not possible to read the file into store more  than once. This will c
orrupt the copy of the file read.    The buffer of data read when the stream was
 opened is copied to its  correct position and thtored is  passed back to the us
er so that the information can be extracted from  it. The user is not allowed to
 write to it, only read from it.This  area will lie in the central 32k of ram. T
he cassette manager uses  some fields in the header for its own purposes so thes
e may vary.    -----------------------------------------------------------------
----   &BC7A - CAS IN CLOSE - Close input file properly.    Entry    None    Exi
t    If stream was closed OK    Carry true.  A corrupt.    If the remainder of t
he file is also read.    -------------------------------------------------------
--------------   &BC86 - CAS RETURN - Put back the last character read    Entry 
   None    Exit    All preserved.    Notes    This is only possible if the file 
has been read in by using CAS IN  CHAR. At least one character must have been re
ad since      a) the stream was opened  b) the last character was returned.  c) 
the last test for eof was made.    ---------------------------------------------
------e stream was not open    Carry false    V1.0  ---- A corrupt.    V1.1  ---
- A  error number (&0E)    BC,DE,HL and other flags corrupt.    ----------------
-----------------------------------------------------   &BC7D - CAS IN ABANDON -
 Close input file straight away    Entry    None    Exit    AF,BC,DE,HL corrupt.
    Notes    This is meant to be used after an error has occured.    -----------
----------------------------------------------------------   &BC80 - CAS IN CHAR
 - Read a character from the in------------------   &BC89 - CAS TEST EOF - Check
 if end of file has been reached    Entry    None    Exit    If the end of file 
was not found    Carry true. Zero false. A corrupt.    If end of file was found 
   Carry false. Zero false.    V1.0  ---- A corrupt.    V1.1  ---- A  error numb
er (&0E - stream is not open or &0F - end of file)    If the user hit escape    
Carry false. Zero true.    V1.0  ---- A corrupt.    V1.1  ---- A  error number (
&00)    IX and other flags corrupt.    Calling this rouput file    Entry    None
    Exit    If character was read OK    Carry true. Zero false.  A  character re
ad    If end of file was found    Carry false. Zero false.     V1.0  ---- A corr
upt.    V1.1  ---- A  error number (&0E)    If user hit escape    Carry false.  
Zero true.    V1.0  ---- A corrupt.    V1.1  ---- A  error number (&00)    IX an
d other flags corrupt.    Notes    Once the first character has been read from a
 file it can only be used  for character by character access. It is not  Ntine p
uts the stream into character input mode. It is  not possible to use direct read
ing after this routine has been called.    It is not possible to call CAS RETURN
 after this routine has been  called. A character must be read first.    -------
----------------------------------------------------------------   &BC8C - CAS O
UT OPEN - Open a file for output    Entry    B  length of filename  HL  address 
of filename  DE  address of 2k buffer    Exit    If the file was opened OK    Ca
rry true.   as expected    Carry false. Zero false. A  &0E (error number)    If 
command failed    Carry false.  Zero true.  A  error number      BC,DE,HL,IX and
 other flags corrupt.    Notes    After writing the file it must be closed with 
CAS OUT CLOSE for the  file to make sure the file is written to disk.    -------
---------------------------------------------------------------    &BC9B - CAS C
ATALOG - Generate a catalogue from cassette    Entry    DE  address of 2k buffer
 to use.    Exit    If the cataZero false.  HL  address of a buffer containing t
he header that will be written  to each block.  A corrupt.    If stream is in us
e    Carry false.  Zero false.  HL corrupt.    V1.0  ----  A corrupt.    V1.1  -
---  A  error number (&0E)    If user hit escape    Carry false.  Zero true.  HL
 corrupt.    V1.0  ----  A corrupt    V1.1  ----  A  error number (&00)      BC,
DE,IX and other flags corrupt.    ----------------------------------------------
-------------------------   &BC8F - CAS OUT CLOSE - Clogue went OK    Carry true
. Zero false. A corrupt.    If the stream was in use    Carry false. Zero false.
     V1.0  ---- A corrupt.    V1.1  ---- A  &0E (error number)    BC,DE,HL,IX an
d other flags.    Notes    The read stream must be closed before this routine is
 called.    The prompt messages are turned on.    When the catalog is ussued, th
e directory is read into memory.  Only those files in the current user and/or ar
e set to directory are  put into the buffer. The buffer gives all the filelose t
he output file correctly.    Entry    None    Exit    If stream was closed OK   
 Carry true. Zero false.  A corrupt.    If the stream was not open    Carry fals
e. Zero false.    V1.0  ---- A corrupt.    V1.1  ---- A  error number (&0E)    I
f the user hit escape    Carry false. Zero true.    V1.0  ---- A corrupt.    V1.
1  ---- A  error number (&00)    IX,BC,DE,HL and other flags corrupt.    -------
----------------------------------------------------------------   &BC92 - CAS O
UT ABANDON - Closes matching those  criteria, and the names are in alphabetical 
order.    If no files match this, the buffer will start with a zero.    The cata
log format    Entry 1,Entry 2...      Where entry format is    Byte 0Marker (&FF
)  Byte 1-12Filename     8 character name part padded with spaces    3 character
 extension part padded with spaces    Extension part    Byte 0Bit 7 1 Read Only,
         0 Read write.    Byte 13Size of file in K.  Byte 14Marker (&00)        
  ----------------- output file immediately.    Entry    None    Exit    AF,BC,D
E,HL corrupt.    Notes    This is intended to be used after an error has occured
.    -----------------------------------------------------------------------   &
BC95 - CAS OUT CHAR - Write a character to the output file    Entry    A  charac
ter    Exit    If character was written OK    Carry true. Zero false.  A  corrup
t.    If the file was not open as expected    Carry false. Zero false.     V1.0 
 ---- A corrupt.    V1.1  ---- A  error ----------------------------------------
--------------   &BC9E - CAS WRITE - Write a headerless file to tape.    Entry  
  HL  address of data to write  DE  length of data to write  A  sync character t
o write at end of the leader    Exit    If the record was written OK    Carry tr
ue. A corrupt.    If an error occured    Carry false. A  error code    BC,DE,HL,
IX corrupt.    Notes    A length of 0 is taken to mean 65536 bytes. The data to 
be written may  lie anywhere, even under a rom.    The sync cnumber (&0E)    If 
user hit escape    Carry false.  Zero true.    V1.0  ---- A corrupt.    V1.1  --
-- A  error number (&00)    A,IX and other flags corrupt.    -------------------
----------------------------------------------------   &BC98 - CAS OUT DIRECT - 
Write the output file from store.    Entry    HL  address of the data to write  
DE  length of data to write  BC  entry address  A  file type    Exit    If file 
was written OK    Carry true.  Zero false.  A corrupt.    If the stream is not o
pen  Nharatcre is used to distinguish header records (sync is &2c)  from data re
cords (sync is &16). Other sync characters could be used  but the resulting reco
rd would require special action to be taken to  read it.    The error codes are 
   0 - The escape key was pressed  1 - The cassette manager was unable to get ba
ck to writing a bit fast      enough.    The cassette motor is turned on by this
 routine and then restored to  its original status.    Interupts are disabled an
d the sound manager is CONNECTORS    NC -Pin not connected  A bar above the pin 
name, indicates that the signal is active when low, or a 0V is applied.  GND- 0V
     Printer Port   As seen from the rear    17 16 15 14 13 12 11 10 9  8  7  6 
 5  4  3  2  1 -  -  -  -  -  -  -  -  -  -  -  -  --  -  -  -  -  -  -  -  -  -
  -  -  -  -  -  -  --  -  -  - 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 
19   1Strobe  2D0shut down so that no  note lasts for the duration of the record
 being loaded.    --------------------------------------------------------------
--------    &BCA1 - CAS READ - Read a record from tape    Entry    HL  address t
o put data  DE  length of data  A  sync character expected at end of leader.    
Exit    If record was read OK    Carry true. A corrupt.    If an error occured  
  Carry false. A  error code    BC,DE,HL,IX and other flags corrupt.    Notes   
 It is not necessary to read all the   3D1  4D2  5D3  6D4  7D5  8D6  9D7  10NC  
11Busy  12NC  13NC  14Gnd  15NC  16Gnd  17NC  19Gnd  20NC  21Gnd  22NC  23Gnd  2
4NC  25Gnd  26NC  27Gnd  28NC  29Gnd  30NC  31Gnd  32NC  33Gnd     Joystick Sock
et                  As seen from the rear                                       
             /      12345   /         *      *       *data bytes in the record. 
 If a  length of less than that written is specified only that number of  bytes 
will be read. Trying to read more bytes than those that have  been written will 
give an error (usually overrun).    See CAS WRITE    One extra error can occur  
  2 - A CRC failure was detected.    -------------------------------------------
---------------------------    &BCA4 - CAS CHECK - Check a record on cassette wi
th data in memory    Entry    HL  start address of data to read  DE         *   
   *   /                                           /             *      *       
*       *    /     6    7    8    9   /           /   1Up  2Down  3Left  4Right 
 5Spare(Extra fire button for AMX mouse)  6Fire 2  7Fire 1  8Common  9Common 2  
   Stereo Socket                        right                                   
                        /  length of data  A  sync character    Exit    If recor
d was checked OK    Carry true. A corrupt.    If an error occured    Carry false
. A  error code.    BC,DE,HL,IX and other flags corrupt.    Notes    See CAS REA
D    One extra code may be returned by this routine.    3 - The data is differen
t to that in memory    ---------------------------------------------------------
-------------  $$ows  &0EFile is not open as expected &0FHard end of file  nctio
            --                            --                                    
                                         left                 gnd      Monitor S
ocket    seen from rear                                    /                    
     / 5       1                     *   6   *                          *       
                   *       *         N                         4   *3  2 /    / 
  1Red (Analogue signal)  2Green (Analogue signal)  3Blue (Analogue signal)  4Co
mposite Sync (combined Horizontal and Verical sync signals)  5Gnd  6   Luminance
 (analogue signal only applies to Green Screen Monitors)    Note  For colour mon
itors  1) Only the Red, Green, Blue, Composite Sync, and Gnd signals are used.  
2) The Red, Green and Blue are analogue signals. The voltage of the signal    de
pends on the amount of Colour present.  3) Only 3 levels ss. The address lines h
old the port address, and the data lines hold the byte of data.  Rd-indicates th
e CPU is reading data  Wr-indicates the CPU is writing data  Reset-when this sig
nal is low, the CPU resets, the program counter becomes zero, and the program is
 started executing.  Irq-When low, the CPU is interrupted.   Sound-mono output o
f all 3 channels mixed together  Gnd-0V supply  +5v-5v Supply  0-4Mhz Clock (for
 driving the CPU)     of colour are used. (On, half-on, off)    All combinatatio
ns of these will give 27 colours.  For green screen monitors  1) Only luminance 
and Gnd signals are used.  2) Luminance is a analogue signal.    There are 27 le
vels of green ranging from none, to full green.      Tape Socket    seen from re
ar                                  /                         / 3       1       
             *         *   Disc Drive 2 Socket (CPC664/6128)    seen from rear  
  2  4  6  8 10 12 14 16 18 20 22 24 26 28 30 32 34  -  --  -  -  -  -  -  -  - 
 -  -  -  -  -  -  -  -  --  -  -  -  -  -  -  -  -  -  -  -  -  -  -  1  3  5  
7  9 11 13 15 17 19 21 23 25 27 29 31 33           1Ready  2Gnd  3Side 1 select 
 4Gnd  5Read data  6Gnd  7Write Protect  8Gnd  9Track 0  10Gnd  11Write G       
                                             *       *                      5   
*2  4 /    /   1Remote Switch (Tape motor on/off switch)  2Gnd  3Remote Switch (
Tape motor on/off switch)  4Data in (data read)  5Data out (data written)     Ex
pansion Socket    seen from rear   49 47 45 43 41 39 37 35 33 31 29 27 25 23 21 
19 17 15 13 11  9  7  5  3  1  -  -  -  -  -  -  -  -  -  -  - ate  12Gnd  13Wri
te Data  14Gnd  15Step  16Gnd  17Direction Select  18Gnd  19Motor On  20Gnd  21N
C  22Gnd  23Drive Select 1  24Gnd  25NC  26Gnd  27Index  28Gnd  29NC  30Gnd  31N
C  32Gnd  33NC  34Gnd   low, open as expected &0FHard end of file  nctioect  4Gn
d  5Read data  6Gnd  7Write Protect  8Gnd  9Track 0  10Gnd  11Write G -  -  --  
-  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  -  --  -  -  -
  -  -  -  -  -  -  - 50 48 46 44 42 40 38 36 34 32 30 28 26 24 22 20 18 16 14 1
2 10  8  6  4  2  Axx - Address lines Dx  - Data lines    1Sound   2Gnd  3A15  4
A14  5A13  6A12  7A11  8A10  9A9  10A8  11A7  12A6  13A5  14A4  15A3  16A2  17A1
  18A0  19D7  20D6  21D5  22D4  23D3  24D2  25D1  26D0  27+5v          28Mreq   
       29M1          30Rfsh          31Iorq           Control NameParametersFunc
tion character code (ASCII value)  &00NULNone.Nothing.  &01SOHsymbol (0..255)dis
play symbol  &02STXNone.Turn off text cursor  &03ETXNone.Turn on text cursor  &0
4EOTscreenmode (0..2)Set screen mode  &05ENQcharacter (0..255)display char at gr
aphics  cursor position   &06 ACKNone.Enable printing of text chars and interpre
ta -tion of control chars.  &07 *BELN 32Rd          33Wr              34Halt    
      35Int          36Nmi          37Busr2          38Busak  39Ready  40Bus res
et          41Reset  42Romen  43Romdis          44Ramrd  45Ramdis  46Cursor  47L
.pen          48Exp  49Gnd  500   Pin descriptions   A15..A0-Address lines (hold
s memory address)   D7..D0-Data lines (holds data being poked or peeked)    Iorq
-when low, indicates CPU is writing to or reading to a port addre  None.Make a b
eep.  &08 *BSNone.Move cursor         (backspace)left a char   &09 *TABNone.Move
 cursor right a char.  &0A *LFNone.Move cursor down a line.    (line feed)  &0B 
*VTNone.Move cursor up a line.  &0C *FFNone.Clear text    (form feed)window and 
move cursor to top left  &0D *CRNone.Move cursor to   (carriage return)left edge
 of  window.  &0ESOPapernumber (0..15)Set paper to u the two values  are differe
nt  the border   colour will  flash between  the two.       &1ERSNone. Move curs
or to  top left (1,1)  position in  current text  window.  &1FUSxtextcoordinate 
(1..80),       Move cursor to ytextcoordinate (1..25) (x,y) position  within the
  currently   selected text  window.se  &0F SIInknumber (0..15)Set pen to use   
&10 *DLENone.Delete current character.  &11 *DC1None.Clear from left edge to cha
r position.  &12 *DC2None.Clear from char position to right edge of window.  &13
 *DC3None.Clear window up to current char position.  &14 *DC4None.Clear current 
window with current paper colour.  &15NAKNone.Disable printing of text and disab
le interpreting other control chars, until an ACK is recieved.  &16SYNtransparen
t on/off (0..1)Parameter mod 2 (0 disable  1 enable)  &17ETBgraphics ink mode (0
..3). Parameter mod 4  0 - normal/force 1 - XOR 2 - AND 3 - OR  &18CANNone. Exch
ange pen  and paper inks.   &19EMsymbolvalue (0..255), Define a user symbolline1
 (0..255),         defineable symbolline2 (0..255), cIf anyone has any more info
rmation about the CRTC and CRTC differences please contact me.  I have explained
 those registers  I  understand fully. The others will be described as soon as  
I  understand  them  fully and, I can explain exactly what they do.  Programming
 the CRTC --------------------  The CRTC has 18 registers (0-17) which are used 
to control the screen, screen cursor, and to sense a light pen/gun.  To access t
hese registers, the CRTC  has  3 control ports. One port to select a register, o
ne haracter. symbolline3 (0..255), symbolline4 (0..255), (same as SYMBOL symboll
ine5 (0..255), command in  symbolline6 (0..255), BASIC). symbolline7 (0..255), s
ymbolline8 (0..255).   &1ASUBx1edgeofwindow (1..80), Define the size x2edgeofwin
dow (1..80), of a window. y1edgeofwindow (1..25), y2edgeofwindow (1..25). The le
ft edge  is taken to be  the smaller  value of x1edgeofwindow and x2edgeofwinpor
t to  write  data  into the register and one port to read data from the register
.  Port address    Read/Write      Function/Use  &BCxx           W              
 Select CRTC register &BDxx           W               Write data to selected CRT
C register &BFxx           R               Read data from selected CRTC register
  NOTE Due to differences in CRTC's,  some of the information described       he
re may not work.  Where  differences  occur  (that are known),       they will b
e listed.        If you intedow, and the top edge is taken to be the smaller val
ue of y1edgeofwindow and y2edgeofwindow.    &1BESC No effect.   (Used by a   pri
nter to  allow the user  to change font  style and  other things).  &1CFSInknumb
er (0..15), Set an ink to Colour1 (0..31), a pair of  Colour2 (0..31) colours.  
  &1DGSColour1 (0..31), Set border to Colour2 (0..31) a pair of  colours. If   N
nd to use special effects, ensure they work with all       CRTC types, or you sp
ecify which CRTC types the effect works on.     Selecting a register -----------
---------  A register is selected by sending  the  register number (in the range
 0-17) to port &BCxx. This register  will remain selected until another is selec
ted. This means you can write to the same register many times, without having to
 re-select the register each time.  (See t   X       X *15             R/W     C
ursor (Low)              X     X       X 16              R       Light Pen (High
)          X     X       X 17              R       Light Pen (Low)           X  
   X       X  * - These registers are not used on the CPC.  R - Read only W - Wr
ite only  R/W - Both Read and Write  X indicates the  values  of  these  registe
rs  may  vary during normal operation.  NOTE  Experimenting with the registers c
an  produce interesting effects. You will not do any harm by doing  this.he prog
ramming example)     Writing to a register ---------------------  Once a registe
r has been selected using the method above, the user can write data into it. Dat
a can  be  written into the register by sending the data to port &BDxx.  If the 
selected  register  cannot  be  written  to,  there  will be no effect.  (See th
e programming example)     Reading a register  Just switch the computer off and 
then on, and everything will be ok again.   Register usage --------------  Certa
in registers can be used for various things. Here is a list of registers and the
ir common usage.   Register 0     Horizontal splitting (changing of screen addre
ss/mode                 accross line). Register 1     Width of screen Register 2
     a) Horizontal positioning of screen                 b) Screen distorting (w
hen  ------------------  Once a register has been selected,  it  can  be read fr
om. The data in the register can be read from port &BFxx.  If the register canno
t be read, a value of &FF will be returned.  (See the programming example)  NOTE
 On certain CRTC types this is not possible.     Register Functions - and normal
 values ------------------  Register        Read/   Register Title              
Normal values Number          Write          changed as beam scans screen) Regis
ter 3     Smooth left-right hardware scroll Register 4     Rupture/Vertical Spli
tting (allowing screen address to                 be changed on any line Registe
r 5     Very smooth vertical scrolling Register 6     Height of screen Register 
7     Setting up the rupture/splitting and vertical position                 of 
screen Register 8     - Register 9     - Register 10    NOT USED Register 11    
NOT USED Register 12    Setting screen address + Overscan + Hardwar             
      PAL   SECAM   NTSC  0               W       Horizontal Total          63  
  63      63 1               W       Horizontal Displayed      40    40      40 
2               W       Horizontal Sync Position  46    46      46 3            
   W       Sync Width                &8E   &8E     &8E 4               W       V
ertical Total            38    38      31 5               W       Vertical Total
 Adjust     0     0       6 6               W       Vertical Displayed        25
    25      25 7   e scrolling Register 13    Hardware scrolling Register 14    
NOT USED Register 15    NOT USED Register 16    Light pen address Register 17   
 Light pen address    Register 1  - Horizontal Displayed -----------------------
-----------  This register is used to define the  width of the screen. The width
 is calculated in mode 1 character sized steps.  i.e. the number of characters  
accross  the  screen  in mode 1, is the      same as th            W       Verti
cal Sync Position    30    30      27 8               W       Interlace and Skew
        0     0       0 9               W       Maximum Raster Address    7     
7       7 *10             W       Cursor Start Raster       X     X       X *11 
            W       Cursor End Raster         X     X       X 12              R/
W     Start Address (High)      X     X       X 13              R/W     Start Ad
dress (Low)       X     X       X *14             R/W     Cursor (High)         
    X     N         e number programmed into this register.  Therefore, the widt
h of the screen  may  be increased or decreased, to get the desired screen width
.  If the value programmed is  increased,  the  width  of the screen will increa
se, if the  value  programmed  is  decreased,  the  width of the screen will dec
rease.  The normal width of the  screen  is  40  characters.  The width of the m
onitor screen is 50 characters.  (The number of bytes displayed on  a linevalue 
programmed to register 1*2)  ue is decreased, the screen will shift downwards.  
Therefore, using this  register  and  register  2,  it  is possible to position 
the picture to any position on the monitor screen.    Register 12 - Start Addres
s (High) ----------------------------------  This register specifys where the sc
reen  will  start in memory and how much memory is  to  be  used  to  display  t
he  screen.  Together with register 13, it allows the user to scroll th  Registe
r 2  - Horizontal Sync Position -------------------------------------  This regi
ster defines the horizontal position of the screen within the monitor screen.  I
f the programmed value is  increased,  the  screen  will shift to the left, if t
he programmed value is  decreased,  the screen will shift to the right.  So, usi
ng  this  register,  the  user  can  put  the  screen  to  any horizontal positi
on they want.  e screen.  Bit 5 and Bit 4 determine  which  16k  block the scree
n is located, in the following way  Bit 5   Bit 4   Memory block ---------------
-------------   0      0      &0000-&3FFF   0      1      &4000-&8000   1      0
      &8000-&C000   1      1      &C000-&FFFF  In this way, the screen can be po
sitioned almost anywhere in memory.  The screen address is only  changed  when  
a  VSYNC occurs. So, if you attempt to change the screen address,  as the electr
on beam is drawing the screen, only one screen  Register 5  - Vertical total adj
ust -----------------------------------  This register  allows  the  vertical  p
osition  of  the  screen  to be positioned to any  pixel  offset  from  the  cur
rent vertical position defined in register 7.  If the value is increased,  the  
picture  will  shift  down by a pixel line, if it is decreased the picture will 
shift up by one pixel line.  This register used in conjunction with register 12 
and 13, can be used to get perfect pixel by pixe will be shown.  (To change the 
screen address more  than once a special technic called "rupture" or "hardware s
plitting" is  needed.  This special effect was developed by The Logon System dem
o team.)  The CRTC cannot access  the  extra  memory,  so  it  will only display
 screens which are located in memory blocks 0-3 only, regardless of any ram conf
iguration. (i.e. it  will  only  display  screens in the first bank of  64k).  I
f  you  change  the  ram  configuration,  so  that  a different 16k  block  is  
l vertical scrolling.  (see programming example)    Register 6  - Vertical displ
ayed --------------------------------  This register defines the  height  of  th
e  screen  in character sized units.  If the value programmed is  increased,  th
e  height of the screen will increase, if the value  programmed  is  decreased, 
 the  height of the screen will decrease.  The normal value programmed is 25. Th
e height of the monitor screen is 35 charaswitched  into  the  area  which  hold
s  the screen there will be no effect on the picture.  (see the document on the 
Gate Array for more information).  Bit 3 and 2 determine how much memory the CRT
C can use for the screen. The CRTC is capable of displaying 16k or 32k screens. 
Bits 3 and 2 are defined in the following way  Bit 3   Bit 2   Screen memory ---
--------------------------   0      0      16k   1      0      16k   0      1   
   16k   1      1      32k  When the CRTC is accessing 32k, you can expancters. 
 NOTE  We can find the height of  the  screen  in pixel lines, by multiplying th
is by the value in register 9 plus 1.  Height of screen  register 6 value*(regis
ter 9 value+1)    Register 7  - Vertical sync position -------------------------
-----------  This register defines the vertical  position  of the screen within 
the monitor screen.  If the programmed value is  increased,  the screen will shi
ft upwards, if the programmed val  Nd the screen size so that you can have a pic
ture which covers the borders! (overscan)  When 32k  is  selected,  the  first  
and  second  screens  occupy  the following range of addressess  First screen   
 Second screen ----------------------------- &0000-&3FFF     &4000-&7FFF &4000-&
7FFF     &8000-&BFFF &8000-&BFFF     &C000-&FFFF &C000-&FFFF     &0000-&3FFF  (s
ee the programming example)  Bit 1 and 0  are  used  with  register  13  to  do 
hardware scrolling. Register 13 contains the lower 8 bits  of  the Overscan,   O
verscan is the effect where the screen  is expanded to fill the whole monitor sc
reen, So there are no borders remaining.  It is a  simple  effect  to  use,  but
  working  out screen addressess becomes more difficult. (especially  where  the
  first screen ends and the second screen starts).  To expand the screen, we  us
e  registers  1,  6,  2  and 7. Register 1 is used to set the width of  the  scr
een, register 6 the height of the screen, register 2 the horizontal position  of
 the sc offset and bit 1 and 0 contain the upper 2 bits  of  the  offset.  The  
offset is 10 bits and defines the position of the screen  within  the 16k block 
specified in bits 5 and 4.  So, by changing the value contained in  register  13
, and bits 1 and 0 of register 12, the  screen  can  be  scrolled.  This effect 
is called hardware scrolling. (see programming example)  Summary  Bit 7 Not used
. Bit 6 Not used.  Bit 5  Memory block of start of screen Bit 4   Bit 3  Screen 
memory Bit 2   Bit 1  Offsreen and register 7, the vertical position of the scre
en.  When this is done, we  can  see  that  parts  of the screen repeat. To over
come this, we tell the CRTC to  use  32k instead of 16k.  NOTE On  some  CRTC  t
ypes,  the  screen  width  must  not  exceed 48       characters  otherwise  it 
 will   not   work.   So  to  maintain       compatibility keep the width of the
 screen below 48.       (Aplies to CRTC type 2).  The code for overscan is.   **
** set width of screen ****  ld bc,&bc00+1 out (c),c ldet (upper 2 bits of offse
t value - lower 8 bits defined Bit 0         by register 13).    Register 13 - S
tart Address (Low) ---------------------------------  This register defines  the
  lower  8  bits  of  the  offset within the selected 16k block. This register i
s used in conjunction with register 12 to perform hardware scrolling.  (see prog
ramming example)    Progr bc,&bd00+48                  48 characters wide out (c
),c   **** set height of screen ****  ld bc,&bc00+6 out (c),c ld bc,&bd00+35    
              35 characters tall out (c),c   **** set horizontal position of scr
een to lefthand side ****  ld bc,&bc00+2 out (c),c ld bc,&bd00+50               
   leftmost edge of screen out (c),c   **** set vertical position of screen to t
op ****  ld bc,&bc00+7 out (c),c ld bc,&bd00+35                  topmost positio
n of screen out (c),c   **** tell the CRTC toamming examples -------------------
-  a) Programming the CRTC,   1) Selecting a CRTC register,    -----------------
--------  ld bc,&bc00+xx out (c),c  Where xx is the register number required.  e
.g.  To select register 12,  ld bc,&bc00+12 out (c),c    2) Writing to a CRTC re
gister,    --------------------------  LD bc,&bd00+xx out (c),c  where xx is the
 data to be put into the currently selected register.  e.g.  To  use 32k for scr
een display         ****  **** (also define screen memory range to be &c000-&fff
f) ****  **** giving us the screen memory taking up &C000-&3FFF   ****  ld bc,&b
c00+12 out (c),c  ld bc,&bd00+%00111100 out (c),c  So now, you should have  a  l
arge  screen  covering the borders. It is just a matter of plotting graphics on 
the screen.    c) Hardware scrolling   Hardware scrolling is  achieved  by  usin
gput 128 into register 12,   select CRTC register 12  ld bc,&bc00+12 out (c),c  
 write to register 12  ld bc,&bd00+128 out (c),c    3) Reading from a CRTC regis
ter,  ld bc,&bf00 in a,(c)  where, the data in the register would be returned in
 register A  e.g.   select CRTC register 12  ld bc,&bc00+12 out (c),c   read dat
a in register 12  ld bc,&bf00 in a,(c)    b)   N  registers  12  and 13. The eff
ect works by changing the start address of the screen. (There is no shifting or 
moving of data).  By doing this we can make it look like the screen is scrolling
.  It is important to note, that only a 16k screen can be fully scrolled. If a 3
2k screen is  scrolled  too  much,  it  splits into a 16k screen which repeats. 
 The screen is scrolled in  character  sized chunks. This produces very fast  sm
ooth  hardware  scrolling.  However  it  is  often  too  fast. Therefore, it is 
crollright ld hl,(scrolloffset) inc hl                          add 1 ld a,h and
 &03                         ensure scrolloffset is in range                    
             &0000-&03ff ld h,a ld (scrolloffset),hl ret    Scroll the screen to
 the left -----------------------------  .scrollleft  ld hl,(scrolloffset) dec h
l  ld a,h and &03 ld h,a  ld (scrolloffset),hl ret  possible to  have  slower ha
rdware scrolling by using register 3 for  smoother  horizontal  scrolling,  and 
 register  5 for smoother vertical scrolling.  It is important to note that when
 the screen is hardware scrolled, all sprites plotted on  it  will  be  scrolled
  also.  So  the position of sprites on the screen must be  updated,  the screen
 scrolled, and then replotted.   ***********************************************
**********************  Scrolling the screen --------------------  The offset is
 con  Scroll the screen up --------------------  .scrollup ld hl,(scrolloffset) 
ld bc,40                        value programmed to register 1 add hl,bc ld a,h 
and &03 ld h,a ld (scrolloffset),hl ret    Scroll the screen down --------------
--------  .scrolldown ld hl,(scrolloffset) ld bc,40 or a sbc hl,bc  ld a,h and &
03 ld h,a ld (scrolloffset),hl ret    dstructed  from  bits  0  and  1  of  regi
ster 12, and register 13.  This forms a 10 bit  number.  (8  bits  from  registe
r  13, and 2 from register 12). (&0000-&03FF)  By changing the value of the offs
et, we scroll the screen.  To scroll the screen UP, ADD the value programmed to 
register 1 to the offset.  To scroll the screen DOWN, SUBTRACT the value program
med to register 1 from the offset.  To scroll the screen RIGHT, ADD one to the o
ffset.  To scroll the screen LEFT, SUBTRACT one from the offset.  In al) Rupture
 technic/Vertical splitting  THIS TECHNIC WAS FOUND BY THE LOGON DEMO TEAM. I TH
INK IT WAS LONGSHOT WHO FOUND IT, OR FRED CRAZY. ALL CREDITS TO THEM. I HOPE THE
Y DO NOT MIND ME GIVING AWAY A FEW SECRETS.  This technic is used widely in demo
s. Normally the screen address can only be changed once. The CRTC only allows th
e screen address to be changed when a VSYNC occurs, i.e. when the beam has finis
hed drawing the screen and moves back to the top-left again, so that it can star
t again.  This technic l cases we must  ensure  the  offset  remains in the rang
e &0000- &03FF.   Setting the screen offset -------------------------  .setscree
noffset ld hl,(scrolloffset)           &0000-&03FF  ld a,h or %00xx0000         
           where  xx  is  the  memory  block the                                
 screen is located in.  ld bc,&bc00+12                  CRTC register 12 out (c)
,c                       select CRTC register 12  ld b,&bfools the CRTC into thi
nking a VSYNC has occured, so that you can change the screen address. So you can
 change the screen address anywhere on the screen.  This allows you to do amazin
g things.  e.g. the top part of the screen scrolling (using hardware), whilst th
e lower part is stationary. (As seen in Super Cauldron and Prehistorik II).  Bot
h of the sections of the screen can start at a different memory location.  So th
is technic is very flexible. But it is not an easy technic to do.  Many times, t
he screend out (c),a                       send top 2 bits of offset and memory 
                                block screen is located in ld bc,&bc00+13       
           CRTC register 13 out (c),c                       select CRTC register
 13 ld b,&bd out (c),l                       send lower 8 bits of offset ret  .s
crolloffset defw 0           reserve 2 bytes for offset    Scroll the screen to 
the right ------------------------------  .s  N will flicker and look wrong, but
 persever and it will work. Also, once you do get it to work, check it on differ
ent CRTC types. (You can find out a CRTC type, by running a demo which has CRTC 
detection in it - like VOYAGE 93 by BENG!).  Also, you can achieve overscan by u
sing this technic.  To set-up the split is easy enough.  a) First the interrupt 
vector must be set so that it does nothing. b) Then every frame-flyback/VYSNC, p
ut &ff into register 7 of CRTC c) Then put in split values to seperate screen u0
0010000   screen address to &4000 out (c),c ld bc,&bc00+13 out (c),c ld bc,&bd00
 out (c),c jp mainloop  (There is another example of splitting on the disc. SPLI
T.MAX)    those registers selected text  window.r initialisation of split out (c
),c               ** IMPORTANT ** ld bc,&bd00 out (c),c  ld bc,&bc00+12 out (c),
c ld bc,&bd00+%p. d) Then in bottom of screen, put &00 into register 7 of CRTC. 
 The interrupts effectively split the screen into 6 blocks. So we can easily wai
t for an interrupt to occur by using a HALT instruction, then we can program the
 split values.  (This code can be found in the file SPLTSHLL.MAX).  Since we cha
nge the interrupt vector to something different, the keyboard will not be scanne
d or anything done, so all this has to be done, by programming the hardware dire
ctly.  Now to actually setup the splits, we useSelecting an Expansion Rom ------
--------------------  To select an expansion rom, simply send the number of the 
expansion rom to port &DFxx. (An expansion  rom  may  have a number from 0-255).
 Where a value of 0 will  select  BASIC,  and  a value of 7 will select AMSDOS. 
 However this process only selects the expansion rom. It does not allow the user
 to access any routines  in  the  rom. To allow routines to be accessed the user
 must enable the upper rom using the Gate Array. (See programming the gate ar re
gister &4 of CRTC.  Simply program the height of the block you want (in characte
r sized units)-1. Then before the block will end, program a new block height.  T
he total height of the screen is 38 characters tall. So, all the blocks heights 
should add up to 38.  So lets say, we want the screen split in half. We want, tw
o blocks of height 19 characters, top block using memory at &4000-&8000, the sec
ond using memory at &C000-&FFFF.   the code would be  ray to see how this is don
e).  A programming example is given to  show  how  to select and disable an expa
nsion rom.  Note port &DFxx is a write  only  port, reading will return a nonsen
se value.    Programming Examples   a) Selecting an expansion rom    -----------
---------------  To select rom 7. (AMSDOS)  ld bc,&7f00     Gate Array ld a,%100
00100  enable upper rom, disable lower rom, mode 0 out (c),a       send it  ld b
c,&DF00       org &4000  di                      change interrupt vector ld hl,&
c9fb ld (&0038),hl ei  splitting part  .mainloop ld b,&f5                wait fo
r frame flyback/VSYNC .noVSYNC in a,(c) rra jp nc,noVSYNC  ld bc,&bc00+7 out (c)
,c ld bc,&bdff out (c),c               INITIALISE SPLIT **IMPORTANT**  ld bc,&bc
04 out (c),c ld bc,&bd00+19-1        height of first block out (c),c  halt      
              wait 6.5 lines  ld bc,&bc00+12          screen address to &C000-&F
FFF out expansion rom select port ld a,7          expansion rom wanted out (c),a
       select it ret   b) Disabling an expansion rom    ------------------------
--  ld bc,&7f00     Gate Array ld a,%10001100  upper and lower rom disabled, mod
e 0 out (c),a       send it ret  elect an expansion rom, simply send the number 
of the expansion  bc,&7f00     Gate Array ld a,%10000100  enable upper rom, disa
ble lower rom, mode 0 out (c),a       send it  ld bc,&DF00     (c),c ld bc,&bd00
+%00110000 out (c),c ld bc,&bc00+13 out (c),c ld bc,&bd00 out (c),c  halt       
             wait 6.5 lines  ld b,15                 not sure reason for this, m
aybe to allow compatibilty .wait djnz wait         with other CRTCs  ld bc,&bc04
 out (c),c ld bc,&bd00+19-1        height of second block out (c),c halt  halt  
halt  halt ld bc,&bc00+7           also for initialisation of split out (c),c   
            ** IMPORTANT ** ld bc,&bd00 out (c),c  ld bc,&bc00+12 out (c),c ld b
c,&bd00+%  NPSG.TXT*TEXTMACAPSG     TXTREAD-ME.TXT*TEXTMACAREAD-ME TXTREADKEY.TX
T*TEXTMACAREADKEY TXTRSXSHELL*TEXTMACARSXSHELL   SCR.TXT*TEXTMACASCR     TXTSOUN
D.TXT*TEXTMACA8255.TXT()TTEXTMACA8255    TXT82552.TXTTTEXTMACA82552   TXTBDOS.TX
TTTEXTMACABDOS    TXTCAS.TXTTTEXTMACACAS     TXTCONNECT.TXTTTEXTMACACONNECT TXTC
ONTCHAR.TXTTTEXTMACA4SOUND   TXTSPLIT.MAX*TEXTMACASPLIT   MAXSPLTSHLL.MAX*TEXTMA
CA8SPLTSHLLMAXTEST.MAXTEXTMACA8TEST    MAXTEXTDISP.BASBIN 8TEXTDISPBASTXT.TXTTEX
TMACA8TXT     TXTCONTCHARTXTCRTC.TXTTTEXTMACA4CRTC    TXTEXPAN.TXTTTEXTMACA4EXPA
N   TXTFILEID.DIZDTEXTMACA4FILEID DIZGATE.TXTTTEXTMACA4GATE    TXTGRA.TXTTTEXTMA
CA4GRA     TXTVARIOUS.TXTTEXTMACA8VARIOUS TXTXDPB.TXTTEXTMACA8XDPB    TXT Z80SET
.TXTTEXTMACAlZ80SET  TXT,%%,,j/TEXTDISPBASTXT.TXTTEXTMACA8TXT     TXTHARDWARE.TX
TTTEXTMACAhHARDWARETXTHI-KERN.TXTTTEXTMACAhHI-KERN TXTINDIRECT.TXT*TEXTMACAhINDI
RECTTXTIOPORTS.TXT*TEXTMACAIOPORTS TXT KERNAL.TXT*TEXTMACAKERNAL  TXT KEYMAP.TXT
*TEXTMACAKEYMAP  TXTKM.TXT*TEXTMACAKM      TXTLO-KERN.TXT*TEXTMACALO-KERN TXTMC.
TXT*TEXTMACAMC      TXTPLUSPORT.TXT*TEXTMACAPLUSPORTTXTPRINTER.TXT*TEXTMACAPRINT
ER TXT  NThe Gate Array --------------  The gate array is a specially designed c
hip exclusively for use in the Amstrad CPC. It is for this reason not much is kn
own about it.  It is responsible for  controlling  screen  mode,  colour palette
, ram configuration and rom configuration.  The new ASIC Gate Array (in the  new
  Plus machines) is described in a different section. In standard mode on the Pl
us machines (that is when the new ASIC Gate Array has not  been  enabled), it ac
ts as a standard gate array, allowing pware pallette).  The hardware colour numb
er is  different  to  the colour range used by the firmware, so a conversion cha
rt  is provided for the corresponding firmware/hardware colour values and the co
rresponding colour name.  Even though there is provision for  32  colours, only 
27 are possible. The remaining colours are duplicates  of  those  already in the
 colour palette.  Note The firmware keeps track of the colours it is using. Ever
y VSYNC (assuming interrupts are enabled) the  firmware sets the colourograms on
 the CPC  to work on the Plus machines without modification.  However when the n
ew ASIC gate array is enabled, it allows the user to use a number of extra enhan
cements.  The Gate Array is described here,  as  it  would be on a standard CPC.
    Controlling the Gate Array --------------------------  The gate array is  co
ntrolled  by  sending  values  to port &7Fxx. The function which is to be perfor
med is dependant on the settingsrs. This enables the user to have flashing  colo
urs.  If the user selects a new colour using the gate array, the new colour will
 flash temporarily and then return to it's original colour.  This  is due to the
 firmware re- setting the colour. When  using  the  firmware,  use  it's routine
s to select the colour, and the colour will remain.  Summary  Bit 7  Gate Array 
function (0) Bit 6                      (1)  Bit 5 Not used.  Bit 4  Colour numb
er (from hardware colour palette) Bit 3  Bit 2  Bit  of bits 7 and 6 the remaini
ng bits are data used by the appropiate function.  All these registers are write
 only and cannot be read.  A brief description of the  functions  are  described
 below with their settings for bit 7 and 6.  Bit 7   Bit 6   Function ----------
--------------   0      0      Select which pen is to have its colour changed.  
 0      1      Select colour for currently selected pen. (from                 h
ardware colour palette)   1      0      Select screen mode and rom configuration
.  1  Bit 0     Select screen mode and rom configuration -----------------------
-----------------  This is a general purpose register responsible for the screen
 mode and the rom configuration.  Screen mode selection ---------------------  T
he function of bits  1  and  0  is  to  define  the  screen mode. The settings f
or bits 1 and 0 and  the corresponding screen mode are given in the table below.
  From the  combinations  possible,  we   1      1      Select ram configuration
 (bank switching).    Pen selection -------------  When bit 7 and bit 6 are set 
 to 0, the remaining bits determine which pen is to have its colour changed. Bit
s  3 to 0 define which pen is to be selected. When bit 4 is set  to  1, the valu
e contained in bits 3-0 is ignored and the border is selected.  The pen remains 
selected until another is selected.  Each mode has a fixed number of pens. Mode 
0 hcan  see  that  4  modes can be defined, although the Amstrad only has 3. Mod
e 3 is similar to mode 0, because it has the  same  resolution,  but  it  is  li
mited  to only 4 colours. This mode may be different  on different versions of t
he Gate Array and on different CPC models.  The  screen  mode  is  changed  when
 a HSYNC occurs.  Bit 1   Bit 0           Screen mode --------------------------
---------   0       0             Mode 0,160x200, 16 colours.   0       1       
      Mode 1,320x200, 4 colours.   as 16 pens, mode 1 has 4 pens and mode 2 has 
2 pens.  Summary -------  Bit 7  Gate Array function (0) Bit 6                  
    (0)  Bit 5 Not used  Bit 4 Border selection         1Select border, 0use pen
 value contained in bits 3-0.  Bit 3  Pen number Bit 2  Bit 1  Bit 0     Colour 
selection ----------------  Once the pen has been selected the  colour can then 
be changed. Bits 4 to 0 hold the colour number (from the hard  N1       0       
      Mode 2,640x200, 2 colours   1       1             Mode 3,160x200, 4 colour
s.   Rom configuration selection ---------------------------  (See the memory ma
p for more information)  Bit 2  is  used  to  enable  or  disable  the  lower  r
om.  The  lower rom occupies memory addressess  &0000-&3fff.  When it is enabled
, reading from  &0000-&3FFF  will return data in the rom. When a value is writte
n to &0000-&3FFF, it will be written to the ram at the same address as the rom. 
 When it is disaxed' with the main ram.  The CPU is capable of  accessing  a  ma
ximum  of  64K  at one time. To access extra memory, blocks in the main  ram (ba
nk 1) can be exchanged with blocks in the extra ram. The number of blocks exchan
ged and the the blocks  they  change  place  with  changes  depending  on  the r
am configuration used.  Ram configurations ------------------  Bits  2-0  select
  which  ram  configuration   is  to  be  used.  When configuration 0 is selecte
d  (regardless  of  the  bank selected), the CPUbled, data read  from  &0000-&3F
FF will return the data in the ram.  Similarly, bit 3 controls enabling or disab
ling of the upper rom.  The upper rom resides in memory  addressess &C000-&FFFF.
 The upper rom can be basic or any other  extra  expansion  roms which may be pl
ugged into an expansion board. The upper rom  is selected by writing the rom num
ber to port &DFxx. (See upper rom selection for more information).  When the upp
er rom is  enabled,  reading from &c000-&ffff, will return data in the rom.  Whe
 will only access the  main  ram.  When configuration 2 is selected the CPU will
 only access the bank selected.  In the table above, 0-3 are the  blocks  in the
 main ram (bank 1), and 4-7 are the blocks of  the  selected  bank,  as they wou
ld normally be arranged shown below. Their new  position,  is the position they 
would take if that configuration was used.  It is not adviseable  to  use  confi
guration  2  when  the firmware is running, or the computer will crash and you w
ill lose valuable data.  NOTE Nn  data  is  written  to  &c000-&FFFF, it will be
 written to the ram at the same address as the rom.  When the upper rom is disab
led, and  data is read from &c000-&ffff the data returned will be the data in th
e ram.  Bit 4 controls  the  CPU  interrupts.  A  CPU  interrupt  occurs every 3
00th of a second. When an  interrupt  occurs, the CPU stops executing the curren
t program,  and  executes  an  interrupt  program.  When the interrupt program  
has  been  completed,  it  returns  to  the current program. (Sormally the  CPC 
 runs  in  ram  configuration  0  (AMSDOS) and configuration 1 (CP/M).   Normal 
arrangement of blocks  (Without any ram configuration selected).          Main R
am        Selected bank         (bank 1)  &FFFF   +---------------+-------------
--+                                                       3              7      
                                         &C000   +---------------+--------------
-+                                                       2              6       
ee interrupts for more information).  Bit 4 is used to determine whether CPU int
errupts are allowed.  When this bit  is  set  to  1,  it  prevents  the  next in
terrupt from occuring.  When this bit is set to 0, the next interrupt is enabled
.  Summary  Bit 7  Gate Array function (1) Bit 6                      (0)  Bit 5
 Not used.  Bit 4 CPU Interrupt enable/disable        1disable next interrupt, 0
enable next interrupt  Bit 3 Upper rom enable/disable. (Expansion roms)        1
disable upper rom, 0                                        &8000   +-----------
----+---------------+                                                       1   
           5                                               &4000   +------------
---+---------------+                                                       0    
          4                                               &0000   +-------------
--+---------------+   Bit 2   Bit 1   Bit 0   Configuration number -------------
------------------------------enable upper rom  Bit 2 Lower rom enable/disable. 
(Operating System rom)        1disable lower rom, 0enable lower rom  Bit 1  Scre
en Mode Bit 0     Select ram configuration ------------------------  This regist
er is used to  select  the  ram  configuration.  The ram is split into banks of 
64K.  Each of these banks is split into blocks of 16K. Using this  register,  th
e  user  can select which bank they wish to use and how it is 'mi  N- 0       0 
      0       0 0       0       1       1 0       1       0       2 0       1   
    1       3 1       0       0       4 1       0       1       5 1       1     
  0       6 1       1       1       7    Organization            Block accessed 
at memory address             &0000-&3FFF     &4000-&7fff     &8000-&bfff    &c0
00-&ffff       0          0               1               2               3     
  1          0               1               2               7       2          
4               5             Gate array port LD A,%10000000+%00001110        Mo
de  and  rom  selection  (and Gate                                 Array functio
n) OUT (C),A                       Send it RET    3) Setting the ram configurati
on,  Setting configuration 1.  LD BC,&7F00                     Gate array port L
D A,%11000000+%00000001        Ram  configuration  (and  Gate Array             
                    function) OUT (C),A                             6           
    7       3          0               3               2               7       4
          0               4               2               3       5          0  
             5               2               3       6          0               
6               2               3       7          0               7            
   2               3  Bank selections ---------------  Bits 5-3 select the bank 
required as shown in the table below.  Bit 5   Bit 4   Bit 3           Bank Sele
cted ---      Send it RET    Palette conversion chart ------------------------  
  Firmware colour       Colour          Hardware palette    Quick   number      
                              number        Reference       0                  B
lack                   20          &54      1                  Blue             
       4           &44      2                  Bright Blue             21       
   &55      3                  Red               -------------------------------
-----------  0       0       0              Bank 2  0       0       1           
   Bank 3  0       1       0              Bank 4  0       1       1             
 Bank 5  1       0       0              Bank 6  1       0       1              B
ank 7  1       1       0              Bank 8  1       1       1              Ban
k 9  NOTE  If you have 64k, and you attempt  to use a bank and ram configuration
, there will be no effect.  i.e.  the  arrangement  of  the 64K will not change.
      28          &5C      4                  Magenta                 24        
  &58      5                  Mauve                   29          &5D      6    
              Bright Red              12          &4C      7                  Pu
rple                  5           &45      8                  Bright Magenta    
      13          &4D      9                  Green                   22        
  &56     10                  Cyan                    6           &46     11    
              Sky Blue            If you only have 128k, regardless of the bank 
you choose, bank 2 will be selected.  If you have more than 128K, you  will  be 
 able to choose the bank and the ram configuration and it will arrange the ram c
orrectly.  Summary  Bit 7 Gate Array Function (1) Bit 6                     (1) 
 Bit 5 Bank Bit 4 Bit 3  Bit 2 Ram configuration Bit 1 Bit 0    Programming the 
Gate Array - Examples --------------------------  1) Defi      23          &57  
   12                  Yellow                  30          &5E     13           
       White                   0           &40     14                  Pastel Bl
ue             31          &5F     15                  Orange                  1
4          &4E     16                  Pink                    7           &47  
   17                  Pastel Magenta          15          &4F     18           
       Bright Green            18          &52     19                  Sea Green
         ning the colours,  Setting pen 0 to Bright White.  LD BC,&7F00         
            Gate Array port LD A,%00000000+0                Pen number (and Gate
 Array function) OUT (C),A                       Send pen number LD A,%01000000+
11               Pen colour (and Gate Array function) OUT (C),A                 
      Send it RET    2) Setting the mode and rom configuration,  Mode 2, upper a
nd lower rom disabled.  LD BC,&7F00             N      2           &42     20   
               Bright Cyan             19          &53     21                  L
ime                    26          &5A     22                  Pastel green     
       25          &59     23                  Pastel Cyan             27       
   &5B     24                  Bright Yellow           10          &4A     25   
               Pastel Yellow           3           &43     26                  B
right White            11          &4B  This chart also gives  a  quick  referen
cnate      HL  y coordinate       Exit       AF,BC,DE,HL corrupt.       Notes   
    The coordinate is relative to the origin.       The position can be outside 
the graphics window.      The graphic VDU plotting testing and  drawing routines
 are set to that      point.             ---------------------------------------
------------------------------       &BBC3 - GRA MOVE RELATIVE - Move to a relat
ive position       Entry       DE  signed X offset      HL  signed Y offset     
  Exit       AF,BC,DE,HL ce  guide  for programming the colours. The number is t
he colour  number  which can be sent directly, once the pen has been selected, t
o get the colour wanted.  Example  ld bc,&7f00+1           Gate array function (
set pen)                         and pen number out (c),c ld bc,&7f00+&41       
  Gate array function (set colour)                         and colour number out
 (c),c ret    foorrupt.       --------------------------------------------------
-------------------       &BBC6 - GRA ASK CURSOR - Get cursor position       Ent
ry       None       Exit       DE  X coordinate relative to origin      HL  Y co
ordinate relative to origin       AF corrupt.       ----------------------------
-----------------------------------------       &BBC9 - GRA SET ORIGIN - Set ori
gin       Entry       DE  X coordinate relative to 0,0      HL  Y coordinate rel
ative to 0,0       Exit       AF,BC,DE,HL corrupt.       Notes       When the sc
reen is cleared with SCR SET MODE the origin is restored to      0,0.       ----
-----------------------------------------------------------------       &BBCC - 
GRA GET ORIGIN - Get origin       Entry       None       Exit       DE  X coordi
nate of origin relative to 0,0      HL  Y coordinate of origin relative to 0,0  
     ---------------------------------------------------------------------      
          &BBCF - GRA WIN WIDTH - Set  the  left and right edges of        &BBBA
 - GRA INITIALISE - Initialise Graphics VDU       Entry       None       Exit   
    AF,BC,DE,HL corrupt.       Notes       The graphic indirections are set to t
heir default routines.      Set graphic paper to ink 0      Set graphic pen to i
nk 1      Set origin to bottom corner of screen      Move position to origin    
  The graphics window is set to cover the whole screen.      The write mode is s
et to opaque.      The line mask is set to &FF and the first pixel of lines are 
plotted.       the graphics      window       Entry       DE  X coordinate relat
ive to 0,0 of one edge      HL  X coordinate relative to 0,0 of the other edge  
     Exit       AF,BC,DE,HL corrupt       Notes       The left edge is taken to 
be the  lesser of the two values. The window      may be shrunk so that it can b
e fit onto the screen.       All graphic VDU point plotting and  line drawing ro
utines test whether      the points they are to plot  are  inside  the  window, 
if they are not      they are not plottedThe window isn't cleared.       -------
--------------------------------------------------------------       &BBBD - GRA
 RESET - Reset the graphics VDU       Entry       None       Exit       AF,BC,DE
,HL corrupt.       Notes       The indirections are set to their default routine
s.      In V1.1 the line mask is set as in GRA INITIALISE.       ---------------
------------------------------------------------------       &BBC0 - GRA MOVE AB
SOLUTE - Move to an absolute position       Entry       DE  X coordi  N.       -
--------------------------------------------------------------------       &BBD2
 - GRA WIN HEIGHT - Set top and bottom edges of graphic window       Entry      
 DE  Y coordinate relative to 0,0 of one edge      HL  Y coordinate relative to 
0,0 of other edge.       Exit       AF,BC,DE,HL corrupt.       Notes       The t
op edge will be the higher of the two values.       ----------------------------
-----------------------------------------       &BBD5 - GRA GET W WIDTH - Get th
e left and right edow when      testing points.       --------------------------
-------------------------------------------      &BBE7 - GRA GET PAPER - Get the
 current background pen       Entry       None       Exit       A  pen       Fla
gs corrupt.       Notes       As GRA SET PAPER       ---------------------------
------------------------------------------      &BBEA - GRA PLOT ABSOLUTE - Plot
 a point at an absolute position       Entry       DE  X coordinate relative to 
user origin      HL  Y coordinate relative dges of the window       Entry       
None       Exit       DE  X coordinate relative to 0,0 of the left edge of the w
indow      HL  X coordinate relative to 0,0 of the right edge of the window     
  AF corrupt.       Notes       The edges recieved may  be  different  as  those
 specified because the            window may have been reduced to fit onto the s
creen.       -------------------------------------------------------------------
--       &BBD8 - GRA GET W HEIGHT - Get top and bottom edges of the wito user or
igin       Exit       AF,BC,DE,HL corrupt.             -------------------------
--------------------------------------------      &BBED - GRA PLOT RELATIVE - Pl
ot a point relative to current position       Entry       DE  signed X offset   
   HL  signed Y offset       Exit       AF,BC,DE,HL corrupt.       -------------
--------------------------------------------------------      &BBF0 - GRA TEST A
BSOLUTE - Test a point at an absolute position       Entry       DE  X coordinat
e to test relatndow       Entry       None       Exit       DE  Y coordinate rel
ative to 0,0 of the top edge of the window      HL  Y coordinate relative to 0,0
 of the bottom edge of the window       AF corrupt.       Notes       See above 
as in GRA GET W WIDTH       ----------------------------------------------------
-----------------       &BBDB - GRA CLEAR WINDOW - Clear the graphics window    
   Entry       None       Exit       AF,BC,DE,HL corrupt.       Notes       The 
graphics cursor position is moved  to  ive to user origin      HL  Y coordinate 
to test relative to user origin       Exit       A  pen of specified point or pa
per pen       BC,DE,HL and flags corrupt.       --------------------------------
-------------------------------------       &BBF3 - GRA TEST RELATIVE - Test a p
oint relative to current position       Entry       DE  X signed offset      HL 
 Y signed offset       Exit       A  pen of specified point or paper pen       B
C,DE,HL and flags corrupt.       ------------------------------the origin specif
ied by the      user.       ----------------------------------------------------
-----------------       &BBDE - GRA SET PEN - Set the graphics plotting ink     
  Entry       A  pen       Exit       AF corrupt       Notes       The value is 
forced to lie  within  the range allowed for the selected      mode.       V1.1 
     ----       The graphics pen is taken to  be  the  edge  of  the area to fil
l when      flood filling areas of the screen.             ---------------------
--------------------------------------------------      &BBF6 - GRA LINE ABSOLUT
E - Draw a line to an absolute position       Entry       DE  X coordinate of en
dpoint      HL  Y coordinate of endpoint       Exit       AF,BC,DE,HL corrupt.  
     V1.0      ----       The points will be plotted in the current pen using th
e current mode       V1.1            ----       The line is plotted depending on
 the  mask defined. If the first point      plotting mode is set to false the fi
rst point will not be set.       -------------------------------------------    
   &BBE1 - GRA GET PEN - Get the graphics pen number       Entry       None     
  Exit       A  pen       Flags corrupt.       ---------------------------------
------------------------------------      &BBE4 - GRA SET PAPER - Set graphics b
ackground pen       Entry       A  pen       Exit       AF corrupt.       Notes 
      The paper ink is the ink that is used for clearing the graphics window    
  and it is assumed to cover everywhere outside the graphics win  N-------------
--------------------------------------------------      &BBF9 - GRA LINE  RELATI
VE  -  Draw  a  line  relative  to the current      position       Entry       D
E  signed X offset of the endpoint      HL  signed Y offset of the endpoint     
  Exit       AF,BC,DE,HL corrupt.       Notes       See GRA LINE ABSOLUTE       
---------------------------------------------------------------------      &BBFC
 - GRA WR CHAR - Print  a  character on the screen at the current      graphics 
position       the bit is 1).  To destinguish between poking to memory and sendi
ng data to an external device, the CPU uses an extra pin called IORQ. (Input/Out
put Request). When this is low, the CPU is sending data to an external device, o
therwise it is poking to the memory.  And to distinguish between reading and wri
ting it uses a pin called WR (write) and RD (read). When either of these are low
, the CPU is writing or reading.  So to connect a device and get it to work, we 
need to connect the address lines, data lines, Entry       A  character to write
       Exit       AF,BC,DE,HL corrupt.       Notes       The character is writte
n with  its  top  left  at the current graphics      position. All characters ar
e printed including control characters. The      position is moved right 32  poi
nts  in  mode  0,  16  in mode 1, and 8      points in mode 2.       The charact
er will be printed using the current graphics pen ink.      If the graphics mode
 is  set  to  opaque  then  the background will be      written  with  the the I
ORQ pin and the WR and RD pins. Now it is possible to link devices and use them.
        ---------------------------------------------------------------------  e
nd mainprogramply command).     foemory.  And to distinguish between reading and
 writing it uses a pin called WR (write) and RD (read). When either of these are
 low, the CPU is writing or reading.  So to connect a device and get it to work,
 we need to connect the address lines, data lines,  current  graphics  paper   p
en,  if  the  mode  is      transparent then the background will not be written 
over.       --------------------------------------------------------------------
-                 -----------------------------------------------------------  f
ohe current graphics pen ink.      If the graphics mode is  set  to  opaque  the
n  the background will be      written  with  the        High Kernal Jumpblock  
    ---------------------        -----------------------------------------------
------------------------       &B900 - HI HL U ROM ENABLE - Enable the upper rom
       Entry       None       Exit       A previous rom state      Flags corrupt
.       Notes       The mechanisms provided for calling  subroutines  in the upp
er ROM and      for selecting upper roms  automatically  enable  the  rom as req
uired.      This routine is used by the firmware but is otherwise of littlWe use
, OUT and IN commands to access external devices and the hardware inside the CPC
.  We send data to an external device like this  LD BC,portaddress OUT (C),reg  
Where BC contains a 16-bit number specifing the port address (or an address to a
ccess the chip at). And, where reg can be A,B,C,D,E,F,H or L, and contains 8-bit
 data to send to the chip.  Likewise, we get data from an external device by usi
ng  LD BC,portaddress IN reg,(C)  Here BC contains a 16-bit number specifying th
e port address, and ree use.       The previous rom state may be  passed  to  KL
 ROM RESTORE to reset the      state to what it was before this routine was call
ed.       This routine enables interupts.       --------------------------------
--------------------------------------       &B903 - HI KL U ROM DISABLE - Disab
le upper rom       Entry       None       Exit       A  previous rom state      
 Flags corrupt.       Notes       Disabling the upper rom gives read access  to 
the top 16k of ram which      is usually used as g will contain the 8-bit data r
ead from the chip.  So how does this work as electric signals  Well the CPU is c
onnected to everything by its lines, or pins on the chip. Each pin has a special
 function.  The CPU has 16 address lines, numbered A0-A15. Each of these can be 
0V or 5V, effectively 0 or 1 in binary. Using these 16 address lines we can spec
ify any memory or port address we want.  When data is to be poked or read, 8 dat
a lines numbered D0-D7 are used to pass the data. (0V when the bit is 0, 5V when
  N the  screen  memory.  Note  that  the mapping of a      location in screen m
emory to pixels on  the screen depends on the mode      and the screen offset.  
     It  is  inadviseable  to  disable   the   upper  rom  while  executing     
 instructions in it!       The previous rom state may be  passed  to  KL ROM RES
TORE to reset the      state of what it was before this routine was called.     
  This routine enables interupts.      -----------------------------------------
-----------------------------      ---------------       &B90F - HI KL ROM SELEC
T - Select a particular upper ROM       Entry       C  rom select address       
Exit       C  rom select address of the previously selected rom      B  previous
 rom state       AF corrupt.       Notes       The previous 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  DESE
LECT  to restore the state to      what it was and to select&B906 - HI KL L ROM 
ENABLE - Enable the lower ROM       Entry             None       Exit       A  p
revious rom state       Flags corrupt.       Notes       In general the lower ro
m is disabled except when a firmware routine is      called. The  firmware  jump
block  arranges  to  enable  the  lower rom      automatically and to disable it
  again  when the routine returns. This      routine is used by the firmware but
 is otherwise of little use.       The previous rom state may be  passed  to  KL
 ROM RE the previously selected ROM again.       The  mechanisms  provided  for 
 calling  routines  in  expansion  roms      automatically perform rom selection
 as required.       It is  inadvisable  to  select  another  upper  rom  whilst 
 executing      instructions in the upper rom.       This routine enables interu
pts.       ---------------------------------------------------------------------
--       &B912 - HI KL  CURR  SELECTION  -  Ask  which  upper ROM is currently  
    selected.       Entry       None STORE to reset the      state to what it wa
s before this routine was called.       This routine enables interupts.       --
---------------------------------------------------------------------       &B90
9 - HI KL L ROM DISABLE - Disable the lower rom       Entry       None       Exi
t       A previous rom state       Flags corrupt.       Notes         In general
 the lower rom is disabled except when a firmware routine is      called. The  f
irmware  jumpblock  arranges  to  enable  the  lower rom      au      Exit      
 A  rom select address of the currently selected rom       Notes             It 
is not possible to  predict  the  rom  select  address at which any      particu
lar expansion rom  will  be  fitted.  The  far  address used to      reference s
ubroutines in  expansion  roms  include  a  rom select byte      which must be s
et up at run  time. This routine returns the rom select      address of the  cur
rent  rom  so  that  it  can  set  up  suitable far      addresses.       ------
-------------tomatically and to disable it  again  when the routine returns.    
   The previous rom state may be  passed  to  KL ROM RESTORE to reset the      s
tate to what it was before this routine was called.       This routine enables i
nterupts.       ----------------------------------------------------------------
-------      &B90C - HI KL ROM RESTORE - Restore the previous rom state       En
try       A  previous rom state       Exit       AF corrupt.       Notes        
     The previous rom state is the value----------------------------------------
-----------       &B915 - HI KL PROBE ROM - Ask class and version of a rom      
 Entry       C  rom select address of rom       Exit       A  roms class      L 
 roms mark number      H  roms version number      B and flags corrupt.       No
tes       The rom class returned may take any of the following       0      Fore
ground rom      1      Background rom      2      Extension foreground rom      
&80     On board rom (BASIC rom)       Selecting a rom addre returned by one of 
      KL U ROM ENABLE      KL U ROM DISABLE      KL L ROM ENABLE      KL L ROM D
ISABLE      KL ROM SELECT       It is possible to use KL U ROM DISABLE to revers
e the effect of a call      of KL U ENABLE (amongst  various other combinations)
. However, calling      KL ROM RESTORE is the prefered  method  since it restore
s the state to      what it was, which might have been enabled anyway.       Thi
s routine enables interupts.       ---------------------------------------------
-----------  Nss where no  rom  is fitted implicity selects the      on-board ro
m and so it will return &80 as its class.       The meaning of the mark and vers
ion numbers depends on the rom       This routine enables interupts.       -----
------------------------------------------------------------------       &B918 -
 HI KL ROM DESELECT - Restore previous upper rom selection       Entry       C  
rom select address of previously selected rom      B  previous rom state       E
xit       C  rom select address of the cmbers its      priority.  The  synchrono
us  event   routine   may   itself  poll  the      synchronouse event queue,  bu
t  only  events  of  higher priority than      itself are notified to it.       
This routine may enable interupts.       ---------------------------------------
-------------------------------       &B92A - HI KL  SCAN  NEEDED  -  Ensure  ke
yboard  is  scanned at next      opportunity.        None       Exit       AF an
d HL corrupt.       Notes       The keyboard is normally scanned on eurrently se
lected rom      B corrupt.       Notes       The previous rom selection and  sta
te  are  values  returned by KL ROM      SELECT. The currently  selected  rom  r
eturned  by  this  rom that was      selected by calling KL ROM SELECT (unless f
urther selections have been      made)             The mechanisms provided  for 
 calling  subroutines  in  expansion roms      automatically perform rom selecti
on as required.       It is  inadvisable  to  select  another  upper  rom  whils
t  executing      invery sixth ticker interupt (every      fiftieth of a second)
. While interupts are disabled the ticks are lost      and the keyboarfd will no
t be scanned. If interupts are disabled for a      significant period (more than
 three ticks) then this routine should be      called just before interupts are 
re-enabled. If interupts are disabled      for a long time (more than twelve  ti
cks) then the user might consider      calling this routine and re-enabling inte
rupts  for a short time every      fiftieth of a secstructions in the upper rom.
       This routine enables interupts.       -----------------------------------
-----------------------------------       &B91B - HI KL LDIR - Move a block of c
ode with roms turned off       Entry       BC,DE,HL as LDIR command       Exit  
     F,BC,DE,HL as set by LDIR command       Notes       This routine may be use
d to move  areas of ram irrespective of the rom      state.       This routine e
nables interupts.       --------------------------------------------------------
ond       ----------------------------------------------------------------------
             end of high kernal jumpblock                 "ld be      called jus
t before interupts are re-enabled. If interupts are disabled      for a long tim
e (more than twelve  ticks) then the user might consider      calling this routi
ne and re-enabling interupts  for a short time every      fiftieth of a sec-----
----------       &B91E - HI KL LDDR - Move a block of code with roms turned off 
      Entry       BC,DE,HL as LDDR command       Exit       F,BC,DE,HL as LDDR c
ommand       Notes       This routine may be used to move  areas of ram irrespec
tive of the rom      state.       This routine enables interupts       ---------
--------------------------------------------------------------       &B921 - HL 
KL  POLL  SYNCHRONOUS  -  Check  if  an  event with higher      priority than th
e current event is pending       Entry       None       Exit       If there is a
 higher priority event pending.       Carry true.             If there is no hig
her priority event pending       Carry false.       A and other flags corrupt.  
     Notes       This routine is in  the  high  jumpblock  to  minimise the over
head of      polling for synchronous  events.  If  the  synchronous  event queue
 is      empty then the routine takes only a few instructions.       While a syn
chronous event is being  processed the kernel reme  N        Indirections      -
-----------       &BDCD - IND TXT DRAW CURSOR - Put cursor blob on screen       
Entry       None       Exit       AF corrupt.       Notes       This indirection
 is provided to allow  the  user to change the form of      the cursor blob. See
 TXT  PLACE  CURSOR  for  a description of how the      cursor blob is normally 
written.       The text VDU routines  call  this  indirection  whenever the curs
or is      placed on the screen. All  the  text  VDU  routines that read from t 
from the      screen. TXT RD CHAR removes the  cursor from the screen before cal
ling      this indirection.       This read is performed by  comparing  the  mat
rix  found on the screen      with the matrices used to generate  characters. As
 a result changing a      character matrix, changing pen  or  paper  inks  or ch
anging the scren      (e.g. drawing a  line  through  a  character)  may  make t
he character      unreadable. In particular the cursor blob  will cause confusio
n and so      it should not be he      screen, write to the screen or  change th
e current position remove the      cursor (using TXT UNDRAW  CURSOR)  before  pe
rforming 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 writ
es a character on      the screen.       This indirection is setup when TXT INIT
IALISE or TXT RESET is called.       -------------------------------------------
---------------------------       &BDD0 - IND TXT UNDRAW CURSOon the screen.    
   Special  precautions  are  taken   against  generating  inverse  space      (
character &8f). Initially the  character  is  read  assuming that the      backg
round to the character was written  in  the current paper ink. If      this fail
s to  generate  a  recogniseable  character  or  it generates      inverse space
 then another try is  made by assuming that the character      was written in th
e current pen ink.       The characters are scanned  starting  with  0  and fini
shing with &FFR - Remove blob from screen.       Entry       None       Exit    
   AF corrupt.       Notes       See IND TXT DRAW CURSOR       -----------------
------------------------------------------------------       &BDD3 - IND TXT WRI
TE CHAR - Put a character on the screen       Entry       A  character to write 
     H  column to write at      L  row to write at       Exit       AF,BC,DE,HL 
corrupt.       Notes             The character position to write  at  is given i
n physical coordinates.      i.e. r.      Thus, if there  are  two  possible  ch
aracter  atrices  that match the      screen, the smaller of the two character n
umbers will be returned.             This indirection is set up when TXT INITIAL
ISE or TXT RESET is called.       ----------------------------------------------
------------------------       &BDD9 - IND TXT OUT ACTION - Output a character o
r control code       Entry       A  character or code       Exit       AF,BC,DE,
HL corrupt.       Notes       This indirection is called by TXow 0,column 0 is t
he top left 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      scre
en. The removing of the cursor blob and the calculation of the new      current 
position are performed by  TXT  WR  CHAR  and not by TXT WRITE      CHAR.       
This indirection is set up when TXT INITIALISE or TXT RESET is called       ----
------------------------------------------------------------------       &BDD6 -
 IND TXT UNWRT  OUTPUT  to  do the work of printing      characters or obeying t
he control codes.  It  is provided to allow the      user to change the method o
f dealing with characters and control codes      or to allow the user to redirec
t  output (to the printer for example).      TXT OUTPUT merely preserves the reg
isters  around  the call of TXT OUT      ACTION.       Control codes may take up
  to  9  parameters. These are the characters      sent following the  initial  
control  code.  The  characters  sent are    ITE - Read a character from the scr
een.       Entry       H  column      L  row       Exit       If a readable char
acter was found       Carry true.      A  character read       If no recognisabl
e character was found       Carry false. A  zero       Notes       The character
 position to write  at  is given in physical coordinates.      i.e. row 0,column
 0 is the top left of the screen. The position is not      checked for legality.
       This indirection is called by TXT RD CHAR to read a character  N  stored 
in a buffer until sufficient have  been recieved to make up all      the require
d parameters. The control  code  buffer is only long enough      to accept 9 par
ameter characters.       There is only one control code buffer  which is shared 
between all the      streams.It is, therefore, possible to get unpredictable res
ults 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 printed on 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  current  pen  ink 
for      example)..  GRA  TEST  RELATIVE   converts   from   relative  to  user 
     coordinates and then calls this  indirection.  GRA TEST ABSOLUTE calls     
 this indirection directly.       To test the ink of a point  inside the window 
the SCR READ indirection      is used.       This indire      screen. In V1.1 fi
rmware control  codes  that are sprecially marked in      the control code table
 will  not  be  obeyed  if  the VDU is disabled.      Other control codes and al
l  control  codes  in  V1.0 firmware will be      obeyed.       If the graphics 
character write  mode  is  enabled then all characters      and control codes ar
e printed using the Graphics VDU (see GRA WR CHAR)      and are not obeyed. Norm
ally  characters  are  written by the text VDU      (see TXT WR CHAR).       Thi
s indirection is set up when GRA INITIALISE or GRA RESET is called.       ------
----------------------------------------------------------------       &BDE2 - I
ND GRA LINE - Draw a line       Entry       DE  user X coordinates of endpoint  
    HL  user Y coordinates of endpoint       Exit             AF,BC,DE,HL corrup
t.       Notes       The position of  the  endpoint  is  given  in  user  coordi
nates. i.e.      relative to the user origin       This indirection is used by G
RA LINE RELATIVE and GRA LINE ABSection is set up when TXT INITIALISE or TXT RES
ET is called.       ------------------------------------------------------------
----------       &BDDC - IND GRA PLOT - Plot a point       Entry       DE  user 
X coordinate of point to plot      HL  user Y coordinate of point to plot       
Exit       AF,BC,DE,HL corrupt.             Notes       The position of the poin
t is  given in user coordinates. i.e. relative      to the user origin.       Th
is indirection is called by GRA  PLOT RELATIVE and GRA PLOTOLUTE to      draw th
e line requested. It is  provided  to  allow the user to change      the method 
for line drawing. GRA  LINE RELATIVE converts from relative      to user coordin
ates and then calls this indirection. GRA LINE ABSOLUTE      calls this indirect
ion immediatly.       The line is split up  into  horizontal  or  vertical secti
ons that are      drawn separately (see SCR HORIZONTAL and  SCR VERTICAL). The S
CR WRITE      indirection is called to  write  the  points  in  these sections. 
This      m ABSOLITE      to plot the point  requested.  It  is  provided  to  a
llow the user to      change the method  for  plotting  (to  output  to  an  X-Y
 plotter for      example). GRA PLOT RELATIVE converts from relative to user coo
rdinates      and  then  calls  this  indirection.  GRA  PLOT  ABSOLUTE  calls  
this      indirection immediatly.       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 indirectioneans that the line is plotted using t
he current graphics write mode.       In V1.0 firmware the line  is  plotted  in
  the  current pen ink. V1.1      firmware setting of the line  mask  determines
  how pixels on the line      will be  plotted.  The  line  mask  is  bit  signi
ficant  and  is used      repeatedly in the order bit 7,bit 6  down  to  bit 0 f
or each pixel in      the line. If the bit is one then  the pixel is plotted in 
the graphics      pen ink. If the bit  is  zero  then  the  action  taken d is s
et up when GRA INITIALISE or GRA RESET is called.       ------------------------
-----------------------------------------------        &BDDF - IND GRA TEST - Te
st a point       Entry       DE  user X coordinate of the point to test      HL 
 user Y coordinate of the point to test       Exit       A  decoded ink at the p
oint specified       BC,DE,HL and flags corrupt.       Notes       The position 
of the point to  test  is  given in user coordinates i.e.      relative to the u
ser origin.       Th  Nepends on the      graphics write moe. If the background 
mode is opaque then the pixel is      plotted  in  the  graphics  paper  ink.  I
f  the  background  mode  is      transparent then the pixel is not plotted.    
   In V1.1 firmware the first  pixel  of  the  line  (that at the current      g
raphics position) is not plotted if  the first point plotting mode is      set f
alse.       This indirection is set up when GRA INITIALISE or GRA RESET is calle
d.       -----------------------------------------------------------------------
-------------------------      &BDF1 - IND MC WAIT PRINTER - Print a character o
r time out       Entry       A  character to send.       Exit       If the chara
cter was sent OK      Carry true.       If the character was not sent       Carr
y false.       A and BC corrupt.       Notes       This indirection is provided 
to allow the user to drive the printer in      a different way. This indirection
  is  called  by the routine MC PRINT      CHAR and performs the actions  of  bo
------------------------       &BDE5 - IND SCR READ - Read a pixel from the scre
en       Entry       HL  screen address      C  mask for pixel       Exit       
A  decoded ink that the pixel was set to.       Flags corrupt.       Notes      
 The mask supplied must be  a  mask  for  a  single pixel otherwise the      dec
oding of the ink read from the screen will not work correctly.       -----------
------------------------------------------------------------         &BDE8 - SCR
 WRITE - Plot a pixel usith  MC  BUSY  PRINTER and MC SEND      PRINTER.      Th
is indirection is initialised when MC RESET PRINTER is called.      ------------
----------------------------------------------------------      &BDF4 - IND KM S
CAN KEYS - Scan the keyboard       Entry       Interupts must be disabled.      
 Exit       AF,BC,DE,HL corrupt.       Notes       This indirection is called  e
very  50th  of  a  second. The repeat and      start up speeds are measured in 5
0ths of a second.       If the escape key is  pressedng the current write mode  
           Entry       HL  screen address      C  mask for the pixels      B  en
coded ink to plot with       Exit       AF corrupt.       Notes       ** DO LATE
R **      ----------------------------------------------------------------------
      &BDEB - IND SCR MODE CLEAR - Clear the screen to ink 0       Entry       N
one       Exit       AF,BC,DE,HL corrupt.       Notes       This indirection is 
initilised when  SCR  INITIALISE  or SCR RESET are      called.       V1.0   the
n  the  indirection KM TEST BREAK is      called to process the break.      ----
-------------------------------------------------------------------             
               END             OF       INDIRECTIONS                            
   END OF INDIRECTIONS      nal jumpblock                 "     ----       It is
 necessary for the user to set up the inks if this indirection is      called.  
     V1.1      ----       The screen pack sets up the inks for the user after SC
R MODE CLEAR has      been called.       The graphics VDUs are put into non-stan
dard states.       -------------------------------------------------------------
--------      &BDEE - IND KM TEST BREAK - Test for break or reset       Entry   
    Interupts disabled.      C  shift and control key states.       Exit       A
F and HI/O ports ---------  PORT  &7Fxx   Gate array  &BCxx   HD6845 CRTC select
 register &BDxx   HD6845 CRTC register data &BFxx   HD6845 CRTC data  &DFxx   Ex
pansion rom select &EFxx   Centronics data  &F4xx   uPD8255 port A data         
    (PSG) &F5xx   uPD8255 port B data             (Tape....etc) &F6xx   uPD8255 
port C data             (Keyboard/PSG Control/Tape) &F7xx   uPD8255 control  &F8
xx   Expansion Bus &F9xx   Expansion Bus &FAxx   Expansion Bus  &FA7E   Disk dri
ve motor control  &FBxx   Expansion BL corrupt.       Notes       This indirecti
on is called by the firmware. If  bit 7 of c is set then      the control key is
 pressed and if bit  6  is set then one of the shift            keys is pressed.
       This indirection is called after  the  keys  have been scanned and the   
   escape key was found to be  pressed.  It  is  provided so the user can      c
hange the action when the break key is pressed.       This indirection is setup 
when KM INITIALISE or KM RESET are called.      --------------------  Nus  &FB7E
   FDC main status register &FB7F   FDC data register  &FFxx   NOT USED   For th
ose port addressess in the expansion bus range  Ports &F8xx to &FBxx  xx byte as
 specified below  &00 - &7B       DO NOT USE &7C - &7F       Disc Interface &80 
- &BB       DO NOT USE &BC - &BF       Reserved for future use &C0 - &DB       D
O NOT USE &DC - &DF       For  communications  interfaces &E0 - &FE       Availa
ble for user expansion interfaces &FF             Bus Reset interfaces  -  PORT 
 &7FxxGate array  KM RESET - to reset any keyboard indirections and break event.
      TXT RESET - to reset any TXT VDU indirectgions.      SCR RESET - to reset 
any screen indirections.       The values returned by KL CHOKE OFF are used by M
C BOOT PROGRAM if the      program load fails.       This information is include
d for the readers interest. MC BOOT PROGRAM      is the recommended means  of  l
oading  and  entering  a ram foreground      program. MC START PROGRAM is the  r
ecommended  means of entering a rom      program  &BCxxHD6845 CRTC select regist
er &BDxxHD6845 CRTC register data         "s range  Ports &F8xx to &FBxx  xx byt
e as specified below  &00 - &7B       DO NOT USE &7C - &7F       Disc Interface 
&80 - &BB       DO NOT USE &BC - &BF       Reserved for future use &C0 - &DB    
   DO NOT USE &DC - &DF       For  communications  interfaces &E0 - &FE       Av
ailable for user expansion interfaces &FF             Bus Reset interfaces  -  P
ORT  &7FxxGate array or a ram foreground program which has already been loaded. 
      KL CHOKE OFF disables interupts.       -----------------------------------
------------------------------------       &BCCB - KL ROM WALK - Find and initia
lize all background ROMs       Entry       DE  first useable byte of memory     
 HL  last useable byte of memory       Exit       DE  address of the new first u
seable byte of memory      HL  address of the new last usable byte of memory    
   AF,BC changed.             Notes       When a foreground program is  entered 
 it  is passed the addressess of      the first and last bytes  in  memory  whic
h  it  may  use. The arae of      memory outside this is used  to  store  firmwa
re variables, the stack,      the jumpblocks and the screen  memory.  From  the 
area available for a      foreground to use, the areas  for  background  program
s to use must be      allocated.       The foreground program should initialize 
 background  ROMS at an early      stage, before it uses the memory it  is gi   
     &BCC8 - KL CHOKE OFF - Reset the Kernal       Entry       None       Exit  
     B  rom select address of the current foreground rom (if any)      DE  addre
ss at which the current foreground ROM was entered      C  rom select address fo
r a ram foreground program.       AF,HL changed.       Notes       If the curren
t  foreground  program  is  in  ram  then  the rom select      address and entry
 point are returned both zero. i.e. the default om at      its entry address.   
    KL CHOKE OFF formven. It may chose whether to      enable background ROMS or
 not. KL INIT  BACK may be used to initialize      a particular background ROM o
r this  routine may be used 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      init
ialize entry of each background rom  found is called (unless it is      the curr
ent foreground rom  in  v1.1).  This  entry  may allos part of  the  close  down
 required before a new ram      foreground program is loaded, as is required by 
MC BOOT PROGRAM.       The close down must ensure that there are no interrupt or
 other events      active and using  memory  which  might  be  damaged  by  load
ing a new      program into memory. In the complete close down MC BOOT PROGRAM d
oes       SOUND RESET - to kill of sound generation       and OUT to I/O port &F
8FF - reset any external interupts sources      KL CHOKE OFF - to kill of events
      Ncate some      memory for the background roms use  by  adjusting the valu
es in DE and      HL before returning. Once the ROM has been initialized the Ker
nal adds      it to the list of external command  servers, and notes the base of
 the      area which the ROM has allocated  to  itself  at the top of memory (if
      any). Subsequent FAR CALLs to  entries  in  the rom will automatically    
  set the IY index register to point at the ROMs upper memory area.       ------
---------------------------------------the central 32K of memory. i.e. not under
 a rom.       The format of a command table is described later.        &BCD4 - K
L FIND COMMAND - Search for RSX       Entry       HL  address of the command nam
e to search for       Exit       IF an RSX or background ROM command was found  
     Carry true. C  ROM select address      HL  address of the routine       If 
the command was not found       Carry false.C,HL changed.       A,B,DE changed. 
      Notes       The command name passed must be in  RAM  but -----------------
--------       &BCCE - KL INIT BACK - Initialize a particular rom       Entry   
    C  rom select address of the rom to initialize      DE  first useable byte o
f memory      HL  last useable byte of memory       Exit       DE  address of th
e new first useable byte of memory      HL  address of the new last useable byte
 of memory       AF,B changed.       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  
addressmay lie underneath a ROM.      The name may be any number  of  characters
  long but only the first 16      characters are significant.  All  alphabetic  
characters  in  the name      should be in upper case and the last character of 
the name should have      bit 7 set.       The rom select and routine addresses 
returned are suitable for calling      KL FAR PCHL.       The list of external c
ommand  servers  is generated as background roms      and rsxs are  initialized.
  The  command  tables  are  scanned  i must be a background rom or      the req
uest will be  ignored.  In  v1.1  firmware  the reuqest will be      ignored if 
the rom is the current foreground rom.       The foreground program should initi
alize  background  ROMS at an early      stage, before it uses the memory it  is
 given. It may chose whether to      enable background ROMS or not. KL ROM  WALK
 may be used to initialize      a particular background ROM or this  routine may
 be used to initialize      all  available  background  ROMS  or  this n the    
        opposite order to that in  which  the command servers were introduced.  
    Thus, RSXs will tend to  take  precedence  over background roms, since      
rsxs are in  general,  initialized  after  background roms. Background      roms
 are normally initialized in reverse  order of rom select address,      so lower
 numbered roms will take precedence over higher.       The first-entry in  a  ba
ckground  roms  command  name  table (the one      associated with the power-up 
entry) may  be  used as routine  may  be  used  to      initialize particular ro
ms.       This routine causes the background  roms power-up initialization entry
      to be called. This entry may  allocate  some memory for the background    
        roms use by adjusting the values  in  DE and HL before returning. Once  
    the ROM has  been  initialized  the  Kernal  adds  it  to  the list of      
external command servers, and notes the base of the area which the ROM      has 
allocated to itself at the top  of memory (if any). Sub the roms name. KL      F
IND COMMAND may be used, therefore,  to find out whether a particular      backg
round rom has been initialized.       When searching for a foreground  program, 
 roms are inspected starting      with rom 0 and  working  upwards.  The  search
  ceases  when the first      unused rom address greater than 0 on v1.1 firmware
 and greater than 15      on v1.1 firmware is found.       The on-board basic ma
y be  entered  by  searching for and invoking the      command 'BASIC'       If 
 a  forsequent FAR      CALLs to entries  in  the  ROM  will  automatically  set
  the IY index      register to point at the ROMs upper memory area.       -----
-----------------------------------------------------------------       &BCD1 - 
KL LOG EXT - Introduce an RSX to the firmware.       Entry       BC  address of 
the RSX command table      HL  4 byte area of RAM for the Kernals use.       Exi
t       DE changed.       Notes       Both the RSXs command table and  the  Kern
als storage area must lie in        Neground  rom   command   is   found   the  
 rom  is  entered      unconditionally and this routine never returns.       ---
-------------------------------------------------------------------       &BCD7 
- KL NEW FRAME FLY -  Initialize  and put a block onto the frame      flyback li
st.       Entry       HL  address of the frame flyback block      B  event class
      C  rom select address of the event routine      DE  address of the event r
outine       Exit       AF,DE,HL changed.       Notes       Thnd must lie in the
 central 32k      of ram. The last 7 bytes of the tick block are an event block 
which is      initialized to reflect  the  parameters  passed  in  B,C,DE. The e
xact      layout of a fast ticker block is described later.       The fast ticke
r block is appended to the fast ticker list if it is not      already on it.    
         The fast ticker facility is not  intended for general use. However, it 
     does allow  relatively  short  times  to  be  measured  giving greater     
 resolution the frame flyback block is 9  bytes  long  and must lie in the centr
al      32k of ram. The last 7 bytes  of  the frame flyback block are an event  
    block which reflects  the  parameters  passed  in  B,C,DE.   The exact      
layout of a frame flyback block is described later.       The frame flyback bloc
k is appended to the frame flyback list if it is      not already on it.       T
his routine enables interupts.       -------------------------------------------
--------------------------      -      &BCDA -an the general ticker facilities. 
      This routine enables interupts.       ------------------------------------
---------------------------------      -      &BCE3 - KL ADD FAST TICKER - Put a
 block onto the fast ticker list.        HL  address of the fast ticker block   
    Exit       AF,DE,HL changed.       Notes       The fast ticker block is 9 by
tes long  and must lie in the central 32k      of ram. The last 7 bytes of  the 
 fast ticker block are an event block      which must be  initialized  befo KL A
DD FRAME FLY - Add a block to the frame flyback list       Entry       HL  addre
ss of the frame flyback block       Exit             AF,DE,HL changed.       Not
es       The frame flyback 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 must be initialized before calling this routine. The exact      lay
out of a frame flyback block is described later.       The block is appended to 
the frame  flyback  lisre  calling  this  routine.  The exact      layout of a f
ast ticker block is described later.       The fast ticker block is appended to 
the fast ticker list if it is not      already on it.       The fast ticker faci
lity is not  intended for general use. However, it      does allow  relatively  
short  times  to  be  measured  giving greater      resolution than the general 
ticker facilities.       This routine enables interupts.       -----------------
----------------------------------------------------   t if it is not already   
   on it.       This routine enables interupts.      ---------------------------
------------------------------------------      -       &BCDD - KL DEL FRAME FLY
 - Remove a block from the frame flyback list       Entry       HL  address of t
he frame flyback block       Exit       AF,DE,HL changed.       Notes       This
 routine does nothing if the block is not on the list.       Removing a block fr
om the  list  only  prevents the event being kicked      again. It does not affe
ct    -       &BCE6 - KL DEL FAST TICKER - Remove a block from the fast ticker l
ist       Entry       HL  address of the fast ticker block       Exit       AF,D
E,HL changed.       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 events
.       This routine enables interupts.        &BCE9 - KL ADD TICKER - Put a blo
ck onto the tick list       Entany outstanding frame flyback events.       This 
routine enables interupts.      ------------------------------------------------
---------------------      --      &BCE0 - KL NEW FAST TICKER -  Initilize  and 
put a block onto the fast      tick list       Entry       HL  address of the fa
st ticker block      DE  event class      C  rom select address of the event rou
tine      DE  address of the event routine       Exit       AF,DE,HL changed.   
    Notes       The fast ticker block is 9 bytes long  a   N         ry         
    HL  address of the tick block      DE  initial value for the count entry    
  BC  value for the recharge entry       Exit       AF,BC,DE,HL changed.       N
otes       The tick block is 13 bytes  long  and  must  lie in the central 32k o
f      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 later.       The count and recharge entries in the bloc
k are set. The class      C  rom select address      DE  address of event routin
e       Exit       HL  address of event block+7       Notes       The event bloc
k is 7 bytes  long  and  must  lie in the central 32k of      ram.       The rom
 select address of the routine are the far address of the event      routine.   
    The event class is bit significant as follows       Bit 0 Near address      
Bit 1..4 Synchronous event priority      Bit 5 Must be zero      Bit 6 Express e
vent      Bit 7 Asynchronous event  block is then      appen ded to the tick lis
t  if  it  is  not  already on the list. This      routine may be  used,  theref
ore,  to  change  the  count and recharge      entries of an existing block.    
   Blocks with a  count  entry  of  zero  are  ignored  when  the list is      p
rocessed. Setting a recharge value  of  zero,  therefore, sets up the      block
 as a 'one shot timer'. Since  it takes the Kernal time to ignore      a tick bl
ock, any redundant blocks should  be removed from the list as      s     If the 
asynchronouse bit  is  set  then  the  event is an asynchronous      event, othe
rwise it is a synchronous event. Asynchronous events do not      have priorities
 and so the priority field is ignored.       If the express event bit is  set  t
hen  the event is an express event.      The meaning of this depends  on  whethe
r  the  event is synchronous or      asynchronous.       All express synchronous
 events have  higher priorities than any normal      synchronous event. The prio
rity of  a  synchronoon as possible.       It is not possible to  predict,  part
icularly with synchronous events,      how long it  will  be  after  the  kick  
before  the  event routine is      actually called. notwithstanding these delays
,  the ticker may be used      to obtain an  exact  number  of  kicks  in  a  gi
ven  period since the      recharge mechanism immediatly  resets  the  count.  T
he event counting      mechanism will ensure that kicks  are  not missed, provid
ed that there      are never more than 127 outstandious event is encoded in     
 bits 1..4  of  the  class,  the  higher  the  number  the  greater the      pri
ority. No event  may  have  priority  0.  The  processing of normal      synchro
nous events may be disabled,  while that of express synchronous      events may 
not.       An express asynchronous  event  will  have  its  event  routine calle
d      directly from  the  interupt  path.  A  normal  asynchronous  event is   
   processed just before  returning  from  the  interupt  (with interupts      e
nablng at once.       This routine enables interupts.        -------------------
--------------------------------------------------      -       &BCEC - KL DEL T
ICKER - Remove a block from the tick list        Entry       HL  address of tick
 block       Exit       If the tick block was found on the tick list       Carry
 true. DE  count remaining before the next event       If the tick block was not
 found on the tick list       Carry false. DE changed.       A,HL and other flag
s changed.       Notes       ed).       If the near address  bit  is  set  then 
 the  event routine is located      either in the lower rom  or  in  the  centra
l  32k ram. The rom select            address is ignored and  the  routine  is  
called  directly rather than      through the FAR CALL  mechanism,  thus  reduci
ng  the event processing      overhead. Where  possible,  asynchronous  events  
should  be  at  near      addresses.  Express  asynchronous  events  must  alway
s  be  at  'near      addresses'.       Event blocks appear i      The contents 
of the block  are  not  affected  by removing it from the      list. In particul
ar the continued  processing of outstanding events is      not affected. The blo
ck could be put back  on the list at a later date      and it could continue cou
nting where it left off.       This routine enables interupts.       -----------
----------------------------------------------------------      &BCEF - KL INIT 
EVENT - Initialize event block       Entry       HL  address of event block     
 B  event   !N!!!!!!!!!n  various  other  blocks  handled by the Kernel,      in
cluding frame flyback,fast ticker and  tick  blocks. This routine is      used t
o initialize the event block parts 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 Kernel. When the      event routine is called the address o
f  the  block is passed to it, so      the user may append furthur information  
about the event to the block.      This allows several less it has      already 
reached the maximum of  127).  Once event processing has begun      it continues
 until the count becomes zero or the event is disarmed.      count0         The 
event is armed but event processing is not active                      The count
  is  incremented  and  the  event processing      initiated.       How event pr
ocessing is initiated depends on the event class       Synchronous events       
Synchronous events are added to the sychronous event queue in priority      orde
r. Itsimilar events  to  share  the same event routine,      each event having i
ts own variables depending on its event block.       Entry       If the event ro
utine is at a far address       HL  address of byte 5 of the event block      (s
o any appended data can start at address hl+2)       if the even routine is at a
 near address       deaddress of byte 6 of the event block.      (so any appende
d data can start at address DE+1)       Exit       AF,BC,DE,HL changed.       Th
e event routine may use the  IX is the responsibility  of  the foreground progra
m to process      the synchronous event queue reguarly.       Synchronous event 
routines  are  called  when  the  foreground program      calls KL DO SYNC, the 
event count is then dealt with when KL DONE SYNC      is called.       Asynchron
ous events       a. Not in the interupt path       The event routine is called  
immediatly.  When the routine returns, if      the event count greater than zero
  it  is decremented. If the count is      still greater than z  and  IY registe
rs but must preserve      them. It may not  use  the  second  register set. Expr
ess asynchronous      events may not enable interupts.       This routine enable
s interupts.       -------------------------------------------------------------
----------      &BCF2 - KL EVENT - Kick an event block       Entry       HL  add
ress  of event block       Exit       AF,BC,DE,HL changed.       Notes       Unl
ike the vast majority of Kernel routines this routine may be called      from th
e interupt ero then the procedure is repeated.       b. In the interupt path - N
ormal Asynchronous event       The event is placed on the interupt  event pendin
g queue. On exit from      the interupt path the  Kernel  processes  all  events
  on the interupt      pending queue as  described  in  (a)  above.  This  means
  that normal      Asynchronous event routines are called in an extension of nor
mal (non-      interupt) processing between interupt return and the main program
. The      routine is, therefore,  noy  subpath. Because the  LOW  JUMP instruct
ion in the main      firmware jumpblock enables interupts  the  user  must pick 
the address      part of the low address out of the  jumpblock and mask off the 
top two      bits to extract  the  address  in  the  lower  rom  of  KL  event. 
The      following does this       LD DE,(KLEVENT+1)      extract address part o
f LOW JUMP            RES 7,D                 remove upper rom state from low ad
dress      RES 6,D                 remove lower rom state from low addject  to  
the  restrictions imposed on      interupt path routines.       c. In the interu
pt path - Express Asynchronous events       The event routine is  called  immedi
atly,  in  the  interupt path. The      routine must be at  a  near  address.  U
nder  no circumstances may the      routine enable interupts.       KL EVENT ena
bles interupts unless it is called from the interupt path.       ---------------
-------------------------------------------------------       &BCF5 - KL SYNC RE
SET - Clear synchronouress      CALL PCDEINSTRUCTION   call KL EVENT       (if t
he user is  going  to  perform  this  operation  repeatedly it is      recommend
ed that the address should  be  extracted  once and should be      stored somewh
ere)       The effect of the kick depends on the event count in the event block 
      count0         The event is disarmed, and kicking has no effect      count
0         There are other  kicks  outstanding  and  the event is      being proc
essed. This kick simply increments  the count (un  "N"""""""""s event queue.    
         Entry       None       Exit       AF and HL changed.       Notes       
It is the user's responsibility  to  ensure  that the discarded events      and 
any  currently  active  events  are  reset.  The  event  count  of      discarde
d events will be greater than  zero, so any furthur kicks will      simply incre
ment the count, but not  add  the event to the synchronous      event queue- the
 events are, therefore, effectively disarmed.       ----------------------------
-----------nt priority      CALL KLDOSYNC         call the event routine      PO
P AF      POP HL      CALL KLDONESYNC       reset the event priority mask, deal 
with                              the event count 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       -----------------
--------------------------------------------------------------      &BCF8 - KL D
EL SYNCHRONOUS - Remove  a synchronous evnt from the event      queue       Entr
y       HL  address of the event block       Exit       AF,BC,DE,HL changed.    
   Notes       Deleting an event from the  queue  prevents the outstanding kicks
 form      being processed.       Before a  synchronous  event  block  is  reset
  or  reinitialized this      routine should be used to ensure that it is not cu
rrently pending.       This routine enables interupts.     ---------------------
--      &BCFE - KL DO SYNC - Do an event routine       Entry       HL  address o
f event block       Exit       AF,BC,DE,HL changed.       Notes       This routi
ne is to be called  to  process  an event after KL NEXT SYNC      has found it t
o be pending. Use  of  this  entry at other times is not      recommended.      
 This routine doesn't affect the event count.       ----------------------------
-------------------------------------------      &BD01 - KL DONE SYNC - Finish p
rocessi  -----------------------------------------------------------------------
       &BCFB - KL NEXT SYNC - Get next event from the queue.       Entry       N
one       Exit       If there was an event to be procssed       Carry true. HL  
address of the event block      A  previous event priority (if any)       If the
re is no event to be processed       Carry false. A,HL changed.       DE changed
.             Notes       KL NEXT SYNC returns the address of the next event to 
be processed, if      any, whichng an event             Entry       A  previous 
event priority      HL  address of the event block       Exit       AF,BC,DE,HL 
changed.       Notes       This routine is intended to be  called  after  KL NEX
T SYNC, to find a      pending event, and KL DO SYNC, to  run  the event routine
. It uses the      previous event priority and  the  event  block  address retur
ned by KL      NEXT SYNC. Other uses of this entry are not recommended.       Se
e KL NEXT  SYNC  above  for  the  scheme  for processing sy it has  taken  off  
the  synchronous  event queue and whose      priority has now been set as the ev
ent priority mask.       The foreground program should  call  KL  POLL  SYNCHRON
OUS reguarly to      check for outstanding events. KL  POLL  SYNCHRONOUS is a sh
ort routine      in RAM, so calling it imposes  little  overhead.  If there is a
n event      outstanding then the above procedure should  be invoked, and should
 be      repeated until the event queue is empty.       The current event priori
ty  mechaninchronous      events.       Restoring  the  current  event  priority
   is  an  essential  step  in      maintaining the sychronous event priority sc
heme.       If the event count is greater than zero then it is decremented. If t
he      count is  still  greater  than  zero  then  there  are  further events  
    outstanding and the event  is  placed  back  on  the synchronous event      
queue. The event may be  disarmed  between  KL  NEXT  SYNC and KL DONE      SYNC
. Setting the event  count  to  one  beforesm  allows  event  routines to poll  
    for, and process, events of higher priority. The priority returned by      t
his routine must be unchanged until it is passed to KL DONE SYNC/.       KL NEXT
 SYNC enables interupts.        The procedure for processing synchronous events 
is       TRYAGAIN       CALL KLNEXTSYNC       return next event, if any      JR 
NC,              jump if no event to process       PUSH HL                 save 
address of event      PUSH AF                 save previous eve  #N#########  ca
lling  KL DONE SYNC      forces multiple events to be treated as  a single event
.       KL DONE SYNC may enable interupts.       -------------------------------
---------------------------------------       &BD04 - KL EVENT DISABLE - Disable
 normal synchronous events       Entry       None       Exit       HL changed.  
     Notes       KL EVENT DISABLE does not prevent  events for being kicked. The
 effect      is to 'mask off' all  pending  normal  synchronous events so that t
hey      are hidden from ----------------------------------------------------   
         &BD10 - KL TIME SET       Entry       DE and HL  four byte number      
 Exit       AF changed.        Notes       This value may be used as a  clock be
cause the kernal maintains a real      clock.      -----------------------------
------------------------------------------                                      
          ----------------------------r &BDxxHD6845 CRTC register data         "
the foreground program (when KL POLL SYNCHRONOUS or KL      NEXT SYNC are called
) and hence are not processed.       KL EVENT ENABLE reverses the effect of KL E
VENT DISABLE       It is not  possible  to  disable  synchronous  events permene
ntly from      inside a synchronous  event  routine  as  the  previous  current 
event      priority is restored when the event routine returns.       ----------
------------------------------------------------------------       &BD07 - KL EV
ENT ENABLE - Enable normal synchronous events             Entry       None      
 Exit       Events are enabled by default. KL  EVENT ENABLE reverses the effect 
of      KL EVENT DISABLE.       It is not  possible  to  enable  synchronous  ev
ents  permanently from      inside a synchronous event routine as the current ev
ent priority which      is used to disable  the  events  is  restored  when  the
 event routine      returns.       ---------------------------------------------
-------------------------      &BD0A - KL DISARM EVENT - Preve Expansion charact
ers   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ 
                                             135136137                          
                    135136137                                              13513
6137 +---+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---+---+---+---+  
                                             132133134                   nt an e
vent from occuring       Entry       HL  address of the event block       Exit  
     AF changed      All others unchanged.       NOTES       KL DISARM EVENT sho
uld  be  used  with asynchronous events. Syncronous      events may be disarmed 
 by  calling  KL  DEL  SYNCHROUNOUS, which also      ensures that the event is n
ot on the synchronous event queue.       The event may be rearmed by  reinitiali
zing  it  (KL INIT EVENT) or by      setting the event count (byte2 of the event
 block) to zero.                                 132133134                      
                         132133134 +-----+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-+-+-+-+-+-+   +---+---+---+                                               12913
0131                                               129130131                    
                           129130131 +-------+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-+-+-+-+-+-+-+---+---+---+---+                   &BD0D - KL TIME PLEASE - Ask th
e time elapsed.       Entry       None       Exit       DE and HL  count       N
otes       The count is a four byte number. D  is the most significant byte and 
L      is the least significant byte.       The count is set to zero when the  m
achine  is turned on or may be set      to zero by using KL TIME SET.       The 
count is not kept up  to  date  if  long periods of time are spent      with the
 interupts disabled.       Interupts are enabled.      -------------------  $N$$
$$$$$$$                                128   138                                
                128 NA138                                                128   1
38 +---------+---+-+-+---+---+---+---+---+---+---+-+-+---+-----+---+---+---+    
                                        140                  NA    NA           
     NA                  139     NA NA NA                                       
    139              +---------+-----+------          +---+             26      
       36      +---+-+---+-+---+ Left  12        14 Right       52        54    
   72        74      +---+-+---+-+---+     25             35    +---+   Down    
       Fire1 Fire2   +---+---+    07 06    47 46    67 66   +---+---+    Key map
   +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+  66
 64 65 57 56 49 48 41 40 33 32 25 24 16 79 10 11  3 +---+-+-+-+-+-+-+-+-+-+-+-+-
+-+-+-+-+-+-+-------------------------+-----------+---+---+---+  (All others NA)
  ASCII Keymap   NA - not available   +---+---+---+---+---+---+---+---+---+---+-
--+---+---+---+---+---+---+---+  NA                            1F    1E 10 7F   
           21 22 23 24 25 26 27 28 29 5F 3D A3 10 7F NA NA NA     31 32 33 34 35
 36 37 38 39 30 2D 5E 10 7F          +---+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-+-+-+-+-+-+-+---+---+---+---+  E1   11 17 05 12 1-+-+-+-+-+-+-+-+---+---+---+--
-+  68   67 59 58 50 51 43 42 35 34 27 26 17   18 20 12  4 +-----+-+-+-+-+-+-+-+
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+   +---+---+---+  70     69 60 61 53 52 44 4
5 37 36 29 28 19    13 14  5 +-------+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
-+-+-+---+---+---+---+  21       71 63 62 55 54 46 38 39 31 30 22  21  15  0  7 
+---------+---+-+-+---+---+---+---+---+---+---+-+-+---+-----+---+---+---+   23  
   9                47   4 19 15 09 0F 10 00 1B                09   51 57 45 52 
54 59 55 49 4F 50 7C 7B  0D  NA NA NA  09   71 77 65 72 74 79 75 69 6F 70 40 5B 
 0D           +-----+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+0D +---+-
--+---+         01 13 04 06 07 08 0A 0B 0C       1D              NA     41 53 44
 46 47 48 4A 4B 4C 2A 2B 7D    NA NA NA         61 73 64 66 67 68 6A 6B 6C 3A 3B
 5D             +-------+-+-+-+-+-+                 6      8  2  1 +---------+--
---+-------------------------------+-----------+---+---+---+    Joystick 0      
 Up            +---+             72      +---+-+---+-+---+ Left  74        75 Ri
ght      +---+-+---+-+---+     73    +---+   Down           Fire1 Fire2   +---+-
--+    76 77   +---+---+    Joystick 1       Up            +---+             48 
     +---+-+---+-+---+ Left  50        51 Right      +---+-+---+-+---+     49   
 +---+   Dow-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+---+---+---+---+           1A 
18 03 16 02 0E 0D          1C         F8     NA       5A 58 43 56 42 4E 4D 3C 3E
 3F 60 NA   NA F4 NA           7A 78 63 76 62 6E 6D 2C 2E 2F 5C         F0    +-
--------+---+-+-+---+---+---+---+---+---+---+-+-+---+-----+---+---+---+     E0  
                                           FA F9 FB  NA   E0                20  
                 NA      F6 F5 F7    E0            n           Fire1 Fire2   +--
-+---+    52 53   +---+---+                            Up            +---+      
       72      +---+-+---+-+---+ Left  74        75 Right      +---+-+---+-+---+
     73    +---+   Down           Fire1 Fire2   +---+---+    76 77   +---+---+  
  Joystick 1       Up            +---+             48      +---+-+---+-+---+ Lef
t  50        51 Right      +---+-+---+-+---+     49    +---+   Dow    20        
                   F2 F1 F3 +---------+-----+-------------------------------+---
--------+---+---+---+   +---------+  Control   Shift     Standard +---------+   
Joystick 0       Up            +---+             0B     0B      +---+-+---+-+---
+ Left  08        09 Right       08        08      +---+-+---+-+---+     0a     
        0a    +---+   Down           Fire1 Fire2   +---+---+    58 5A    58 5A  
 +---+---+    Joystick 1       Up    %N%%%%%%%%% It will not  be  processed but 
returned how it      is. The character doesn't need to be read from the keyboard
.       You can only have one character to  put  back. If anymore are put back  
    before a character is  read  then  the  first  character will be lost.      
Character 255 cannot be returned as this  is  used as a marker to tell      the 
computer there is no character being put back.        &BB0F - KM SET EXPAND - Se
t an expansion string       Entry       B  expansion token for expansion to se  
      &BB00 - KM INITIALISE - Initialise the key manager       Entry       No co
nditions.       Exit       AF,BC,DE and HL corrupt.       Notes       Interupts 
are enabled.      The keyboard buffer is cleared.      Shift lock and Caps lock 
are turned off.      The repeat speed is set to default.      The repeat key map
 is initialized to default state.      The expansion buffer is set  up  and  the
  expansions are set to their      default values.      The key translation tabl
es are intialized to its t      C  length of string      HL  address of string  
     Exit       If everything OK       Carry true.             If it was too lon
g or token invalid      Carry false.       A,BC,DE,HL and other flags corrupt.  
     Notes       If there isn't enough room for the  new string then the old sta
te will      not be changed.      Set an expansion string.      Interupts are en
abled.        &BB12 - KM GET EXPAND - Get a character from an expansion string  
     Entry       A  expansion token      L  chardefault state.      The break ev
ent is disarmed.      The break indirection call is set to its initial value.   
     &BB03 - KM RESET - Reset the Key Manager       Entry       No conditions.  
     Exit       AF,BC,DE,HL corrupt       Notes       Interupts are enabled.    
  The break indirection call  is  set  to  its  initial routine enabling      SH
IFT CONTROL ESC reset.      The keyboard buffer is cleared.      The expansion b
uffer is set to default.      The break event is disarmed.       &BB06 - KM Wact
er number       Exit       If character found       Carry true.      A  characte
r       Token invalid, or string not long enough      Carry false.      A corrup
t       DE and other flags corrupt.        &BB15 - KM EXP BUFFER - Allocate a bu
ffer for expansion strings       Entry       DE  address of buffer      HL  leng
th of buffer       Exit       Buffer OK       Carry true.       Buffer too short
       Carry false.       A,BC,DE,HL and other flags corrupt       Notes       T
he buffer must be AIT CHAR - Wait for a character from the keyboard       Entry 
      No conditions       Exit       Carry true. Other flags corrupt.      A  ch
aracter       Notes       Try to get a character from keyboard  buffer. If one i
s not found then      the routine will wait until one is.              &BB09 - K
M READ CHAR - Get a character from the keyboard       Entry       No conditions 
      Exit       If a character was available      Carry True. A  character     
  IF no character available      Carry Faat least 49 bytes  and in RAM. It must 
not be under      a ROM. If the new buffer is too short, the old one is left unc
hanged.      Interupts are enabled.              &BB18 - KM WAIT KEY - Wait for 
a key from the keyboard buffer       Entry       No conditions       Exit       
Carry true.      A  character or expansion token       Other flags corrupt.     
   &BB1B - KM READ KEY - Get a key from the keyboard buffer       Entry       No
 conditions       Exit       Key available       Carry true. A  chlse. A corrupt
       Other flags corrupt.        V1.0 and V1.1      -------------       If thi
s routine was called  repeatedly  until  it  reports there is no      character 
it could be used to completely clear the keyboard buffer.        &BB0C - KM CHAR
 RETURN - Return a character to the keyboard buffer       Entry       A  charact
er to put back       Exit       All registers preserved.       Notes       The c
haracter will  be  put  back  into  the  buffer  before any other      character
 is generated.  &N&&&&&&&&&aracter or token       No key       Carry false.     
 A corrupt.       Other flags corrupt.        &BB1E - KM TEST KEY - Test key has
 been pressed       Entry       A  key number (as on disc drive CPC6128 or as fo
und in basic manual)       Exit       Key pressed       Zero false.       Key no
t pressed       Zero true.       Carry false.      C  shift and control state   
    BIT 7  1control key pressed, 0not pressed      BIT 5  1shift key pressed, 0n
ot pressed       A,HL corrupt. Other flags corrus corrupt.             Notes    
   See KM SET TRANSLATE        &BB33 - KM SET CONTROL  - Set entry in key transl
ation table (control)       Entry       A  key number      B  new translation   
    Exit       AF and HL corrupt       Notes       See KM SET TRANSLATE        &
BB36 - KM GET CONTROL - Get entry from translation table (control)       Entry  
     A  key number       Exit       A  current translation      HL and flags cor
rupt.       Notes       See KM SET TRANSLATE       ------------------pt.       N
otes             The number is not  checked.  This  uses  the keyboard scanning 
routine      which runs every 50th of a second.        &BB21 - KM GET STATE - Ge
t shift lock and caps lock states       Entry       None.       Exit       L  sh
ift lock state (&00  off, &FF  on)      H  caps lock state      AF corrupt.     
  Notes       The default state is off.        &BB24 - KM GET JOYSTICK - Get sta
tes of both joysticks       Entry       None       Exit       H,A  state of joys
tick 0    ---------------------------------------------------       &BB39 - KM S
ET REPEAT - Set whether a key is allowed to repeat       Entry       A  key numb
er      B  repeat byte (&FF  allowed to repeat, &0  not allowed to repeat)      
 Exit       AF,BC,HL corrupt.       Notes       If key number is greater than 79
 no action is taken.       -----------------------------------------------------
----------------       &BB3C - KM GET REPEAT - Ask if a key is allowed to repeat
.       Entry             A  key   L  state of joystick 1      Flags corrupt.   
    The bits are set as below       Bit 0 - Up      Bit 1 - Down      Bit 2 - Le
ft      Bit 3 - Right      Bit 4 - Fire 2      Bit 5 - Fire 1      Bit 6 - Spare
 joystick button      Bit 7 - zero       If a particular bit is set then that bu
tton has been pressed.        &BB27 - KM SET TRANSLATE - Set an entry in the key
 translation table       Entry       A  key number      B  new translation      
 Exit       AF,HL corrupt.       Notes             If the number       Exit     
  If key allowed to repeat       Zero false.       If key not allowed to repeat 
      Zero true.       Carry false. A,HL and other flags corrupt. All others OK.
       ---------------------------------------------------------------------    
   &BB3F - KM SET DELAY - Set delay and repeat speeds       Entry       H  start
 up delay      L  new repeat speed       Exit       AF corrupt.       Notes     
  The delays are given in  keyboard  scans  which  occur every 50th of a      se
cokey number is greater than 79 then no action is taken.       &80-&9F   Expansi
on tokens  which  are  expanded  to character strings      when KM READ CHAR and
 KM WAIT CHAR are executed.       &FD       caps lock token.       &FE       Shi
ft lock token.       &FF       Ignore token. (Throw key away)       &E0-&FC are 
special tokens for editing in BASIC etc.        &BB2A - KM GET TRANSLATE - Get a
n entry from key translation table                                 (normal)     
  Entry       A  key number     nd. A delay or speed of 0 is taken to mean 256. 
      The default delay is 30 scans and the default speed is 2 scans.       The 
delay or speed values only apply to keys that are set to repeat.       ---------
------------------------------------------------------------       &BB42 - KM GE
T DELAY - Get delay and repeat speeds       Entry       None.       Exit      H 
 start up speed      L  repeat speed       AF corrupt       --------------------
-------------------------------------------------       &BB4  Exit       A  curr
ent translation       HL and flags corrupt.       Notes       See KM SET TRANSLA
TE        &BB2D - KM SET SHIFT - Get an entry from translation table            
                 (Shifted)       Entry       A  key number      B  new translati
on       Exit       AF and HL corrupt.       Notes       See KM SET TRANSLATE   
     &BB30 - KM GET SHIFT - Get entry from translation table (shifted)       Ent
ry       A  key number       Exit       A  current translation       HL and flag
  'N'''''''''5 - KM ARM BREAKS - Allow break events to be generated       Entry 
      DE  address of break event      C  Rom select address for routine       Ex
it AF,BC,DE,HL corrupt. All others preserved.             Notes       This routi
ne enables interupts.       ----------------------------------------------------
-----------------       &BB48 - KM DISARM BREAK - Stop break events from being g
enerated       Entry       None.       Exit       AF and HL corrupt.       Notes
       This routine enables interupts /     £#,nnn  nnnn""()"O"()""T n  "I knew 
this attempt would be an outstanding success."  "Use  and  to scroll the text, C
ONTROL  and  to skip to previous/next file,SPACE to rebuild screen and RETURN to
 finish. Press any key to start!" " " ( )   t(" ",)  r,r,,T,h,",6N"    n   n.   
    ---------------------------------------------------------------------       
&BB4B - KM BREAK EVENT       Entry       None       Exit       AF and HL corrupt
.       ---------------------------------------------------------------------   
                           ------------------ 53   +---+---+                    
   being generated       Entry       None.       Exit       AF and HL corrupt.  
     Notes       This routine enables interuptsn,   T6    n nw(n,n)C         , p
r,J   rT       " " pr,   rHh     n  " " pr,r  C "Bye darling!""3DC0DD6E00DD6601A
FB6C847235E2356CD78BB2D25EB7E23FEFF20087E2305C8E67F180CE67FFE09200A7AE607D6092F8
2571826FE202821C5D5E5F3018A7FED49CDDEADEBCDDEAD0100081A13770930FAD9ED49D9FBE1D1C
1147AFE50D010B6C9". N       pr,("&"(,,))  , , A(,t(,"DEAD"))s((),)s(() ,). A   "
File doesn't exist" - A  "File is not ASCII" + A    "File read error"   A  A  A 
 8"Out of memory" nDISC       p  Dn & (&" "(s)"("9  File Scanner V1.1 (C)1990  b
y DRAGONBREED WETWARE Written out of PURE FRUSTRATION. Please if you write7( a p
rogram write it GOOD AT ONCE. So that others2 don't have to re-invent the wheel 
only because you- refused to make the wheel workable...Fd a-z s*n (""),s,nxpr nn
n  -n""nn & 0 "Program error"A"in line" "nn & (&" "(s)"("0   2 C) 1989 PowerHows
e/* *Dragont(,"DEAD"))s((),)s(() ,). A   "File doesn't exist" - A  "File is not 
ASCII" + A    "File read error"   A  A  A  8"Out of memory" nsn" "n"SCAN.BAS Tex
t File ScannerDRAGONBREED WETWARE""Now enter all files you wish to view.  Finish
 with RETURN.  Don't mind mistakes."G sn""nn £"Filename ",snCnn"Attempting to re
ad in files..."()"O"   n  nu(" "(s)" "(K,),O)O  n""nnnn" "(s)(      s  
Tous droits réservés. Reproduction sans autorisation interdite. © Kukulcan