Home » CEEFAX disks » telesoftware11.adl » 11-12-88/BUTTONS

11-12-88/BUTTONS

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » CEEFAX disks » telesoftware11.adl
Filename: 11-12-88/BUTTONS
Read OK:
File size: 0B4F bytes
Load address: FFFF1900
Exec address: FFFF8023
File contents
   10REM> BUTTONS
   20DIM mcode &100 :REM: machine code at mcode
   30bytev=&20A :REM: Osbyte indirection vector
   40drb=&FE60 :REM: data register B
   50ddrb=&FE62 :REM: data direction register B
   60FOR pass=0 TO 2 STEP 2
   70P%=mcode
   80[OPT pass
   90LDX bytev
  100LDY bytev+1
  110CPY #newinkey DIV 256
  120BEQ disable \ branch if Osbyte vector altered
  130STX oldbytev \ store original Osbyte vector
  140STY oldbytev+1
  150LDX #newinkey MOD 256
  160LDY #newinkey DIV 256
  170STX bytev \ install new Osbyte vector
  180STY bytev+1
  190LDA #0 \ user port input
  200STA ddrb \ data direction register B
  210RTS \ return to BASIC
  220.disable
  230LDX oldbytev \ restore Osbyte indirection vector
  240LDY oldbytev+1
  250STX bytev
  260STY bytev+1
  270RTS \ return to BASIC
  280.newinkey
  290PHP \ push status register
  300CMP #&81 \ is this Osbyte &81?
  310BNE notinkey \ branch if not Osbyte &81
  320CPY #&FF \ is this a -ve INKEY?
  330BEQ inkey \ branch if -ve INKEY
  340.notinkey
  350PLP \ pull status register
  360.oldcode
  370JMP (oldbytev) \ exit via original vector
  380.inkey
  390TXA \ -ve INKEY value in X register
  400PHA \ push X onto stack
  410LDA #&81
  420JSR oldcode \ execute original code
  430CPX #&FF \ key pressed if X and Y =&FF
  440BNE notpressed \ branch if key not pressed
  450CPY #&FF \ key pressed if X and Y =&FF
  460BNE notpressed \ branch if key not pressed
  470PLA \ pull X off stack
  480.pullout
  490LDA #&81 \ restore A
  500PLP \ restore status register
  510RTS \ return to operating system
  520.notpressed
  530PLA \ pull -ve INKEY number off stack
  540CMP centre \ compare with number allocated to centre mouse button
  550BNE tryright \ branch if not centre button
  560LDA drb \ data register B
  570JMP two \ check bit 6
  580.tryright
  590CMP right \ compare with number allocated to right mouse button
  600BNE tryleft \ branch if not right button
  610LDA drb \ data register B
  620JMP one \ check bit 7
  630.tryleft
  640CMP left \ compare with number allocated to left mouse button
  650BNE pullout \ exit if not left button
  660LDA drb \ data register B
  670ROL A \ bit 7 into carry
  680.two
  690ROL A \ bit 6/7 into carry
  700.one
  710ROL A \ bit 5/6/7 into carry
  720BCS pullout \ exit if bit 5/6/7 set
  730.found
  740LDA #&81 \ Osbyte &81
  750LDX #&FF \ X and Y = &FF when key pressed
  760LDY #&FF
  770PLP \ pull status register
  780RTS \ return to operating system
  790.oldbytev
  800EQUW &00 \ original Osbyte indirection vector
  810.right
  820EQUB -67 \ -ve INKEY for X
  830.centre
  840EQUB -74 \ -ve INKEY for <return>
  850.left
  860EQUB -98 \ -ve INKEY for Z
  870.lastbyte
  880]
  890NEXT
  900CALL mcode :REM: enable new code
  910MODE7
  920mouse$=CHR$141+CHR$132+CHR$157+CHR$131+"Press keyboard or mouse buttons  "+CHR$156
  930PRINTTAB(0,2)mouse$
  940PRINTTAB(0,3)mouse$
  950ONERROR GOTO 1030
  960VDU23,1,0;0;0;0;
  970REPEAT
  980IF INKEY(-67) PRINTTAB(26,12)"X" ELSE PRINTTAB(26,12)" "
  990IF INKEY(-74) PRINTTAB(16,12)"Return" ELSE PRINTTAB(16,12)"      "
 1000IF INKEY(-98) PRINTTAB(11,12)"Z" ELSE PRINTTAB(11,12)" "
 1010IF INKEY(-99) PRINTTAB(16,17)"Space" ELSE PRINTTAB(16,17)"     "
 1020UNTIL FALSE
 1030CALL mcode :REM: disable new code
 1040VDU23,1,1;0;0;0;31,0,23
 1050END

�> BUTTONS
*� mcode &100 :�: machine code at mcode
,bytev=&20A :�: Osbyte indirection vector
(!drb=&FE60 :�: data register B
2,ddrb=&FE62 :�: data direction register B
<� pass=0 � 2 � 2
FP%=mcode
P
[OPT pass
Z
LDX bytev
dLDY bytev+1
nCPY #newinkey � 256
x1BEQ disable \ branch if Osbyte vector altered
�/STX oldbytev \ store original Osbyte vector
�STY oldbytev+1
�LDX #newinkey � 256
�LDY #newinkey � 256
�)STX bytev \ install new Osbyte vector
�STY bytev+1
�LDA #0 \ user port input
�(STA ddrb \ data direction register B
�RTS \ return to BASIC
�.disable
�4LDX oldbytev \ restore Osbyte indirection vector
�LDY oldbytev+1
�
STX bytev
STY bytev+1
RTS \ return to BASIC

.newinkey
"PHP \ push status register
,"CMP #&81 \ is this Osbyte &81?
6+BNE notinkey \ branch if not Osbyte &81
@CPY #&FF \ is this a -ve �?
JBEQ inkey \ branch if -ve �
T
.notinkey
^PLP \ pull status register
h.oldcode
r-JMP (oldbytev) \ exit via original vector
|
.inkey
�#TXA \ -ve � value in X register
�PHA \ push X onto stack
�LDA #&81
�'JSR oldcode \ execute original code
�*CPX #&FF \ key pressed if X and Y =&FF
�.BNE notpressed \ branch if key not pressed
�*CPY #&FF \ key pressed if X and Y =&FF
�.BNE notpressed \ branch if key not pressed
�PLA \ pull X off stack
�.pullout
�LDA #&81 \ restore A
�!PLP \ restore status register
�$RTS \ return to operating system
.notpressed
%PLA \ pull -ve � number off stack
ECMP centre \ compare with number allocated to centre mouse button
&.BNE tryright \ branch if not centre button
0LDA drb \ data register B
:JMP two \ check bit 6
D
.tryright
NCCMP right \ compare with number allocated to right mouse button
X,BNE tryleft \ branch if not right button
bLDA drb \ data register B
lJMP one \ check bit 7
v.tryleft
�ACMP left \ compare with number allocated to left mouse button
�)BNE pullout \ exit if not left button
�LDA drb \ data register B
�ROL A \ bit 7 into carry
�.two
�ROL A \ bit 6/7 into carry
�.one
� ROL A \ bit 5/6/7 into carry
�'BCS pullout \ exit if bit 5/6/7 set
�
.found
�LDA #&81 \ Osbyte &81
�-LDX #&FF \ X and Y = &FF when key pressed
�LDY #&FF
PLP \ pull status register
$RTS \ return to operating system

.oldbytev
 1EQUW &00 \ original Osbyte indirection vector
*
.right
4EQUB -67 \ -ve � for X
>.centre
H!EQUB -74 \ -ve � for <return>
R	.left
\EQUB -98 \ -ve � for Z
f
.lastbyte
p]
z�
�� mcode :�: enable new code
��7
�Gmouse$=�141+�132+�157+�131+"Press keyboard or mouse buttons  "+�156
��0,2)mouse$
��0,3)mouse$
�
� � �TFD
��23,1,0;0;0;0;
��
�&� �(-67) �26,12)"X" � �26,12)" "
�0� �(-74) �16,12)"Return" � �16,12)"      "
�&� �(-98) �11,12)"Z" � �11,12)" "
�.� �(-99) �16,17)"Space" � �16,17)"     "
�� �
 � mcode :�: disable new code
�23,1,1;0;0;0;31,0,23
�
�
00000000  0d 00 0a 0e f4 3e 20 42  55 54 54 4f 4e 53 0d 00  |.....> BUTTONS..|
00000010  14 2a de 20 6d 63 6f 64  65 20 26 31 30 30 20 3a  |.*. mcode &100 :|
00000020  f4 3a 20 6d 61 63 68 69  6e 65 20 63 6f 64 65 20  |.: machine code |
00000030  61 74 20 6d 63 6f 64 65  0d 00 1e 2c 62 79 74 65  |at mcode...,byte|
00000040  76 3d 26 32 30 41 20 3a  f4 3a 20 4f 73 62 79 74  |v=&20A :.: Osbyt|
00000050  65 20 69 6e 64 69 72 65  63 74 69 6f 6e 20 76 65  |e indirection ve|
00000060  63 74 6f 72 0d 00 28 21  64 72 62 3d 26 46 45 36  |ctor..(!drb=&FE6|
00000070  30 20 3a f4 3a 20 64 61  74 61 20 72 65 67 69 73  |0 :.: data regis|
00000080  74 65 72 20 42 0d 00 32  2c 64 64 72 62 3d 26 46  |ter B..2,ddrb=&F|
00000090  45 36 32 20 3a f4 3a 20  64 61 74 61 20 64 69 72  |E62 :.: data dir|
000000a0  65 63 74 69 6f 6e 20 72  65 67 69 73 74 65 72 20  |ection register |
000000b0  42 0d 00 3c 14 e3 20 70  61 73 73 3d 30 20 b8 20  |B..<.. pass=0 . |
000000c0  32 20 88 20 32 0d 00 46  0c 50 25 3d 6d 63 6f 64  |2 . 2..F.P%=mcod|
000000d0  65 0d 00 50 0d 5b 4f 50  54 20 70 61 73 73 0d 00  |e..P.[OPT pass..|
000000e0  5a 0d 4c 44 58 20 62 79  74 65 76 0d 00 64 0f 4c  |Z.LDX bytev..d.L|
000000f0  44 59 20 62 79 74 65 76  2b 31 0d 00 6e 17 43 50  |DY bytev+1..n.CP|
00000100  59 20 23 6e 65 77 69 6e  6b 65 79 20 81 20 32 35  |Y #newinkey . 25|
00000110  36 0d 00 78 31 42 45 51  20 64 69 73 61 62 6c 65  |6..x1BEQ disable|
00000120  20 5c 20 62 72 61 6e 63  68 20 69 66 20 4f 73 62  | \ branch if Osb|
00000130  79 74 65 20 76 65 63 74  6f 72 20 61 6c 74 65 72  |yte vector alter|
00000140  65 64 0d 00 82 2f 53 54  58 20 6f 6c 64 62 79 74  |ed.../STX oldbyt|
00000150  65 76 20 5c 20 73 74 6f  72 65 20 6f 72 69 67 69  |ev \ store origi|
00000160  6e 61 6c 20 4f 73 62 79  74 65 20 76 65 63 74 6f  |nal Osbyte vecto|
00000170  72 0d 00 8c 12 53 54 59  20 6f 6c 64 62 79 74 65  |r....STY oldbyte|
00000180  76 2b 31 0d 00 96 17 4c  44 58 20 23 6e 65 77 69  |v+1....LDX #newi|
00000190  6e 6b 65 79 20 83 20 32  35 36 0d 00 a0 17 4c 44  |nkey . 256....LD|
000001a0  59 20 23 6e 65 77 69 6e  6b 65 79 20 81 20 32 35  |Y #newinkey . 25|
000001b0  36 0d 00 aa 29 53 54 58  20 62 79 74 65 76 20 5c  |6...)STX bytev \|
000001c0  20 69 6e 73 74 61 6c 6c  20 6e 65 77 20 4f 73 62  | install new Osb|
000001d0  79 74 65 20 76 65 63 74  6f 72 0d 00 b4 0f 53 54  |yte vector....ST|
000001e0  59 20 62 79 74 65 76 2b  31 0d 00 be 1c 4c 44 41  |Y bytev+1....LDA|
000001f0  20 23 30 20 5c 20 75 73  65 72 20 70 6f 72 74 20  | #0 \ user port |
00000200  69 6e 70 75 74 0d 00 c8  28 53 54 41 20 64 64 72  |input...(STA ddr|
00000210  62 20 5c 20 64 61 74 61  20 64 69 72 65 63 74 69  |b \ data directi|
00000220  6f 6e 20 72 65 67 69 73  74 65 72 20 42 0d 00 d2  |on register B...|
00000230  19 52 54 53 20 5c 20 72  65 74 75 72 6e 20 74 6f  |.RTS \ return to|
00000240  20 42 41 53 49 43 0d 00  dc 0c 2e 64 69 73 61 62  | BASIC.....disab|
00000250  6c 65 0d 00 e6 34 4c 44  58 20 6f 6c 64 62 79 74  |le...4LDX oldbyt|
00000260  65 76 20 5c 20 72 65 73  74 6f 72 65 20 4f 73 62  |ev \ restore Osb|
00000270  79 74 65 20 69 6e 64 69  72 65 63 74 69 6f 6e 20  |yte indirection |
00000280  76 65 63 74 6f 72 0d 00  f0 12 4c 44 59 20 6f 6c  |vector....LDY ol|
00000290  64 62 79 74 65 76 2b 31  0d 00 fa 0d 53 54 58 20  |dbytev+1....STX |
000002a0  62 79 74 65 76 0d 01 04  0f 53 54 59 20 62 79 74  |bytev....STY byt|
000002b0  65 76 2b 31 0d 01 0e 19  52 54 53 20 5c 20 72 65  |ev+1....RTS \ re|
000002c0  74 75 72 6e 20 74 6f 20  42 41 53 49 43 0d 01 18  |turn to BASIC...|
000002d0  0d 2e 6e 65 77 69 6e 6b  65 79 0d 01 22 1e 50 48  |..newinkey..".PH|
000002e0  50 20 5c 20 70 75 73 68  20 73 74 61 74 75 73 20  |P \ push status |
000002f0  72 65 67 69 73 74 65 72  0d 01 2c 22 43 4d 50 20  |register..,"CMP |
00000300  23 26 38 31 20 5c 20 69  73 20 74 68 69 73 20 4f  |#&81 \ is this O|
00000310  73 62 79 74 65 20 26 38  31 3f 0d 01 36 2b 42 4e  |sbyte &81?..6+BN|
00000320  45 20 6e 6f 74 69 6e 6b  65 79 20 5c 20 62 72 61  |E notinkey \ bra|
00000330  6e 63 68 20 69 66 20 6e  6f 74 20 4f 73 62 79 74  |nch if not Osbyt|
00000340  65 20 26 38 31 0d 01 40  1f 43 50 59 20 23 26 46  |e &81..@.CPY #&F|
00000350  46 20 5c 20 69 73 20 74  68 69 73 20 61 20 2d 76  |F \ is this a -v|
00000360  65 20 a6 3f 0d 01 4a 1f  42 45 51 20 69 6e 6b 65  |e .?..J.BEQ inke|
00000370  79 20 5c 20 62 72 61 6e  63 68 20 69 66 20 2d 76  |y \ branch if -v|
00000380  65 20 a6 0d 01 54 0d 2e  6e 6f 74 69 6e 6b 65 79  |e ...T..notinkey|
00000390  0d 01 5e 1e 50 4c 50 20  5c 20 70 75 6c 6c 20 73  |..^.PLP \ pull s|
000003a0  74 61 74 75 73 20 72 65  67 69 73 74 65 72 0d 01  |tatus register..|
000003b0  68 0c 2e 6f 6c 64 63 6f  64 65 0d 01 72 2d 4a 4d  |h..oldcode..r-JM|
000003c0  50 20 28 6f 6c 64 62 79  74 65 76 29 20 5c 20 65  |P (oldbytev) \ e|
000003d0  78 69 74 20 76 69 61 20  6f 72 69 67 69 6e 61 6c  |xit via original|
000003e0  20 76 65 63 74 6f 72 0d  01 7c 0a 2e 69 6e 6b 65  | vector..|..inke|
000003f0  79 0d 01 86 23 54 58 41  20 5c 20 2d 76 65 20 a6  |y...#TXA \ -ve .|
00000400  20 76 61 6c 75 65 20 69  6e 20 58 20 72 65 67 69  | value in X regi|
00000410  73 74 65 72 0d 01 90 1b  50 48 41 20 5c 20 70 75  |ster....PHA \ pu|
00000420  73 68 20 58 20 6f 6e 74  6f 20 73 74 61 63 6b 0d  |sh X onto stack.|
00000430  01 9a 0c 4c 44 41 20 23  26 38 31 0d 01 a4 27 4a  |...LDA #&81...'J|
00000440  53 52 20 6f 6c 64 63 6f  64 65 20 5c 20 65 78 65  |SR oldcode \ exe|
00000450  63 75 74 65 20 6f 72 69  67 69 6e 61 6c 20 63 6f  |cute original co|
00000460  64 65 0d 01 ae 2a 43 50  58 20 23 26 46 46 20 5c  |de...*CPX #&FF \|
00000470  20 6b 65 79 20 70 72 65  73 73 65 64 20 69 66 20  | key pressed if |
00000480  58 20 61 6e 64 20 59 20  3d 26 46 46 0d 01 b8 2e  |X and Y =&FF....|
00000490  42 4e 45 20 6e 6f 74 70  72 65 73 73 65 64 20 5c  |BNE notpressed \|
000004a0  20 62 72 61 6e 63 68 20  69 66 20 6b 65 79 20 6e  | branch if key n|
000004b0  6f 74 20 70 72 65 73 73  65 64 0d 01 c2 2a 43 50  |ot pressed...*CP|
000004c0  59 20 23 26 46 46 20 5c  20 6b 65 79 20 70 72 65  |Y #&FF \ key pre|
000004d0  73 73 65 64 20 69 66 20  58 20 61 6e 64 20 59 20  |ssed if X and Y |
000004e0  3d 26 46 46 0d 01 cc 2e  42 4e 45 20 6e 6f 74 70  |=&FF....BNE notp|
000004f0  72 65 73 73 65 64 20 5c  20 62 72 61 6e 63 68 20  |ressed \ branch |
00000500  69 66 20 6b 65 79 20 6e  6f 74 20 70 72 65 73 73  |if key not press|
00000510  65 64 0d 01 d6 1a 50 4c  41 20 5c 20 70 75 6c 6c  |ed....PLA \ pull|
00000520  20 58 20 6f 66 66 20 73  74 61 63 6b 0d 01 e0 0c  | X off stack....|
00000530  2e 70 75 6c 6c 6f 75 74  0d 01 ea 18 4c 44 41 20  |.pullout....LDA |
00000540  23 26 38 31 20 5c 20 72  65 73 74 6f 72 65 20 41  |#&81 \ restore A|
00000550  0d 01 f4 21 50 4c 50 20  5c 20 72 65 73 74 6f 72  |...!PLP \ restor|
00000560  65 20 73 74 61 74 75 73  20 72 65 67 69 73 74 65  |e status registe|
00000570  72 0d 01 fe 24 52 54 53  20 5c 20 72 65 74 75 72  |r...$RTS \ retur|
00000580  6e 20 74 6f 20 6f 70 65  72 61 74 69 6e 67 20 73  |n to operating s|
00000590  79 73 74 65 6d 0d 02 08  0f 2e 6e 6f 74 70 72 65  |ystem.....notpre|
000005a0  73 73 65 64 0d 02 12 25  50 4c 41 20 5c 20 70 75  |ssed...%PLA \ pu|
000005b0  6c 6c 20 2d 76 65 20 a6  20 6e 75 6d 62 65 72 20  |ll -ve . number |
000005c0  6f 66 66 20 73 74 61 63  6b 0d 02 1c 45 43 4d 50  |off stack...ECMP|
000005d0  20 63 65 6e 74 72 65 20  5c 20 63 6f 6d 70 61 72  | centre \ compar|
000005e0  65 20 77 69 74 68 20 6e  75 6d 62 65 72 20 61 6c  |e with number al|
000005f0  6c 6f 63 61 74 65 64 20  74 6f 20 63 65 6e 74 72  |located to centr|
00000600  65 20 6d 6f 75 73 65 20  62 75 74 74 6f 6e 0d 02  |e mouse button..|
00000610  26 2e 42 4e 45 20 74 72  79 72 69 67 68 74 20 5c  |&.BNE tryright \|
00000620  20 62 72 61 6e 63 68 20  69 66 20 6e 6f 74 20 63  | branch if not c|
00000630  65 6e 74 72 65 20 62 75  74 74 6f 6e 0d 02 30 1d  |entre button..0.|
00000640  4c 44 41 20 64 72 62 20  5c 20 64 61 74 61 20 72  |LDA drb \ data r|
00000650  65 67 69 73 74 65 72 20  42 0d 02 3a 19 4a 4d 50  |egister B..:.JMP|
00000660  20 74 77 6f 20 5c 20 63  68 65 63 6b 20 62 69 74  | two \ check bit|
00000670  20 36 0d 02 44 0d 2e 74  72 79 72 69 67 68 74 0d  | 6..D..tryright.|
00000680  02 4e 43 43 4d 50 20 72  69 67 68 74 20 5c 20 63  |.NCCMP right \ c|
00000690  6f 6d 70 61 72 65 20 77  69 74 68 20 6e 75 6d 62  |ompare with numb|
000006a0  65 72 20 61 6c 6c 6f 63  61 74 65 64 20 74 6f 20  |er allocated to |
000006b0  72 69 67 68 74 20 6d 6f  75 73 65 20 62 75 74 74  |right mouse butt|
000006c0  6f 6e 0d 02 58 2c 42 4e  45 20 74 72 79 6c 65 66  |on..X,BNE trylef|
000006d0  74 20 5c 20 62 72 61 6e  63 68 20 69 66 20 6e 6f  |t \ branch if no|
000006e0  74 20 72 69 67 68 74 20  62 75 74 74 6f 6e 0d 02  |t right button..|
000006f0  62 1d 4c 44 41 20 64 72  62 20 5c 20 64 61 74 61  |b.LDA drb \ data|
00000700  20 72 65 67 69 73 74 65  72 20 42 0d 02 6c 19 4a  | register B..l.J|
00000710  4d 50 20 6f 6e 65 20 5c  20 63 68 65 63 6b 20 62  |MP one \ check b|
00000720  69 74 20 37 0d 02 76 0c  2e 74 72 79 6c 65 66 74  |it 7..v..tryleft|
00000730  0d 02 80 41 43 4d 50 20  6c 65 66 74 20 5c 20 63  |...ACMP left \ c|
00000740  6f 6d 70 61 72 65 20 77  69 74 68 20 6e 75 6d 62  |ompare with numb|
00000750  65 72 20 61 6c 6c 6f 63  61 74 65 64 20 74 6f 20  |er allocated to |
00000760  6c 65 66 74 20 6d 6f 75  73 65 20 62 75 74 74 6f  |left mouse butto|
00000770  6e 0d 02 8a 29 42 4e 45  20 70 75 6c 6c 6f 75 74  |n...)BNE pullout|
00000780  20 5c 20 65 78 69 74 20  69 66 20 6e 6f 74 20 6c  | \ exit if not l|
00000790  65 66 74 20 62 75 74 74  6f 6e 0d 02 94 1d 4c 44  |eft button....LD|
000007a0  41 20 64 72 62 20 5c 20  64 61 74 61 20 72 65 67  |A drb \ data reg|
000007b0  69 73 74 65 72 20 42 0d  02 9e 1c 52 4f 4c 20 41  |ister B....ROL A|
000007c0  20 5c 20 62 69 74 20 37  20 69 6e 74 6f 20 63 61  | \ bit 7 into ca|
000007d0  72 72 79 0d 02 a8 08 2e  74 77 6f 0d 02 b2 1e 52  |rry.....two....R|
000007e0  4f 4c 20 41 20 5c 20 62  69 74 20 36 2f 37 20 69  |OL A \ bit 6/7 i|
000007f0  6e 74 6f 20 63 61 72 72  79 0d 02 bc 08 2e 6f 6e  |nto carry.....on|
00000800  65 0d 02 c6 20 52 4f 4c  20 41 20 5c 20 62 69 74  |e... ROL A \ bit|
00000810  20 35 2f 36 2f 37 20 69  6e 74 6f 20 63 61 72 72  | 5/6/7 into carr|
00000820  79 0d 02 d0 27 42 43 53  20 70 75 6c 6c 6f 75 74  |y...'BCS pullout|
00000830  20 5c 20 65 78 69 74 20  69 66 20 62 69 74 20 35  | \ exit if bit 5|
00000840  2f 36 2f 37 20 73 65 74  0d 02 da 0a 2e 66 6f 75  |/6/7 set.....fou|
00000850  6e 64 0d 02 e4 19 4c 44  41 20 23 26 38 31 20 5c  |nd....LDA #&81 \|
00000860  20 4f 73 62 79 74 65 20  26 38 31 0d 02 ee 2d 4c  | Osbyte &81...-L|
00000870  44 58 20 23 26 46 46 20  5c 20 58 20 61 6e 64 20  |DX #&FF \ X and |
00000880  59 20 3d 20 26 46 46 20  77 68 65 6e 20 6b 65 79  |Y = &FF when key|
00000890  20 70 72 65 73 73 65 64  0d 02 f8 0c 4c 44 59 20  | pressed....LDY |
000008a0  23 26 46 46 0d 03 02 1e  50 4c 50 20 5c 20 70 75  |#&FF....PLP \ pu|
000008b0  6c 6c 20 73 74 61 74 75  73 20 72 65 67 69 73 74  |ll status regist|
000008c0  65 72 0d 03 0c 24 52 54  53 20 5c 20 72 65 74 75  |er...$RTS \ retu|
000008d0  72 6e 20 74 6f 20 6f 70  65 72 61 74 69 6e 67 20  |rn to operating |
000008e0  73 79 73 74 65 6d 0d 03  16 0d 2e 6f 6c 64 62 79  |system.....oldby|
000008f0  74 65 76 0d 03 20 31 45  51 55 57 20 26 30 30 20  |tev.. 1EQUW &00 |
00000900  5c 20 6f 72 69 67 69 6e  61 6c 20 4f 73 62 79 74  |\ original Osbyt|
00000910  65 20 69 6e 64 69 72 65  63 74 69 6f 6e 20 76 65  |e indirection ve|
00000920  63 74 6f 72 0d 03 2a 0a  2e 72 69 67 68 74 0d 03  |ctor..*..right..|
00000930  34 1a 45 51 55 42 20 2d  36 37 20 5c 20 2d 76 65  |4.EQUB -67 \ -ve|
00000940  20 a6 20 66 6f 72 20 58  0d 03 3e 0b 2e 63 65 6e  | . for X..>..cen|
00000950  74 72 65 0d 03 48 21 45  51 55 42 20 2d 37 34 20  |tre..H!EQUB -74 |
00000960  5c 20 2d 76 65 20 a6 20  66 6f 72 20 3c 72 65 74  |\ -ve . for <ret|
00000970  75 72 6e 3e 0d 03 52 09  2e 6c 65 66 74 0d 03 5c  |urn>..R..left..\|
00000980  1a 45 51 55 42 20 2d 39  38 20 5c 20 2d 76 65 20  |.EQUB -98 \ -ve |
00000990  a6 20 66 6f 72 20 5a 0d  03 66 0d 2e 6c 61 73 74  |. for Z..f..last|
000009a0  62 79 74 65 0d 03 70 05  5d 0d 03 7a 05 ed 0d 03  |byte..p.]..z....|
000009b0  84 1f d6 20 6d 63 6f 64  65 20 3a f4 3a 20 65 6e  |... mcode :.: en|
000009c0  61 62 6c 65 20 6e 65 77  20 63 6f 64 65 0d 03 8e  |able new code...|
000009d0  06 eb 37 0d 03 98 47 6d  6f 75 73 65 24 3d bd 31  |..7...Gmouse$=.1|
000009e0  34 31 2b bd 31 33 32 2b  bd 31 35 37 2b bd 31 33  |41+.132+.157+.13|
000009f0  31 2b 22 50 72 65 73 73  20 6b 65 79 62 6f 61 72  |1+"Press keyboar|
00000a00  64 20 6f 72 20 6d 6f 75  73 65 20 62 75 74 74 6f  |d or mouse butto|
00000a10  6e 73 20 20 22 2b bd 31  35 36 0d 03 a2 10 f1 8a  |ns  "+.156......|
00000a20  30 2c 32 29 6d 6f 75 73  65 24 0d 03 ac 10 f1 8a  |0,2)mouse$......|
00000a30  30 2c 33 29 6d 6f 75 73  65 24 0d 03 b6 0d ee 85  |0,3)mouse$......|
00000a40  20 e5 20 8d 54 46 44 0d  03 c0 12 ef 32 33 2c 31  | . .TFD.....23,1|
00000a50  2c 30 3b 30 3b 30 3b 30  3b 0d 03 ca 05 f5 0d 03  |,0;0;0;0;.......|
00000a60  d4 26 e7 20 a6 28 2d 36  37 29 20 f1 8a 32 36 2c  |.&. .(-67) ..26,|
00000a70  31 32 29 22 58 22 20 8b  20 f1 8a 32 36 2c 31 32  |12)"X" . ..26,12|
00000a80  29 22 20 22 0d 03 de 30  e7 20 a6 28 2d 37 34 29  |)" "...0. .(-74)|
00000a90  20 f1 8a 31 36 2c 31 32  29 22 52 65 74 75 72 6e  | ..16,12)"Return|
00000aa0  22 20 8b 20 f1 8a 31 36  2c 31 32 29 22 20 20 20  |" . ..16,12)"   |
00000ab0  20 20 20 22 0d 03 e8 26  e7 20 a6 28 2d 39 38 29  |   "...&. .(-98)|
00000ac0  20 f1 8a 31 31 2c 31 32  29 22 5a 22 20 8b 20 f1  | ..11,12)"Z" . .|
00000ad0  8a 31 31 2c 31 32 29 22  20 22 0d 03 f2 2e e7 20  |.11,12)" "..... |
00000ae0  a6 28 2d 39 39 29 20 f1  8a 31 36 2c 31 37 29 22  |.(-99) ..16,17)"|
00000af0  53 70 61 63 65 22 20 8b  20 f1 8a 31 36 2c 31 37  |Space" . ..16,17|
00000b00  29 22 20 20 20 20 20 22  0d 03 fc 07 fd 20 a3 0d  |)"     "..... ..|
00000b10  04 06 20 d6 20 6d 63 6f  64 65 20 3a f4 3a 20 64  |.. . mcode :.: d|
00000b20  69 73 61 62 6c 65 20 6e  65 77 20 63 6f 64 65 0d  |isable new code.|
00000b30  04 10 19 ef 32 33 2c 31  2c 31 3b 30 3b 30 3b 30  |....23,1,1;0;0;0|
00000b40  3b 33 31 2c 30 2c 32 33  0d 04 1a 05 e0 0d ff     |;31,0,23.......|
00000b4f
11-12-88/BUTTONS.m0
11-12-88/BUTTONS.m1
11-12-88/BUTTONS.m2
11-12-88/BUTTONS.m4
11-12-88/BUTTONS.m5