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 FP%=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