00000000: 3B 0D 3B 09 53 49 44 20 4D 4F 55 53 45 20 43 36 |;.;.SID MOUSE C6|
00000010: 34 20 42 41 53 49 43 20 43 4F 4D 50 41 54 49 42 |4 BASIC COMPATIB|
00000020: 4C 45 20 44 52 49 56 45 52 0D 3B 0D 49 49 52 51 |LE DRIVER.;.IIRQ|
00000030: 09 3D 20 24 30 33 31 34 0D 56 49 43 09 3D 20 24 |.= $0314.VIC.= $|
00000040: 44 30 30 30 0D 53 49 44 09 3D 20 24 44 34 30 30 |D000.SID.= $D400|
00000050: 0D 50 4F 54 58 09 3D 20 53 49 44 2B 24 31 39 0D |.POTX.= SID+$19.|
00000060: 50 4F 54 59 09 3D 20 53 49 44 2B 24 31 41 0D 3B |POTY.= SID+$1A.;|
00000070: 0D 56 49 43 44 41 54 41 09 3D 20 24 44 30 30 30 |.VICDATA.= $D000|
00000080: 09 09 3B 20 42 41 53 49 43 53 20 43 4F 50 59 20 |..; BASICS COPY |
00000090: 4F 46 20 56 49 43 20 52 45 47 49 53 54 45 52 20 |OF VIC REGISTER |
000000A0: 49 4D 41 47 45 0D 58 50 4F 53 09 3D 20 56 49 43 |IMAGE.XPOS.= VIC|
000000B0: 44 41 54 41 2B 24 30 30 09 3B 20 4C 4F 57 20 4F |DATA+$00.; LOW O|
000000C0: 52 44 45 52 20 58 50 4F 53 49 54 49 4F 4E 0D 59 |RDER XPOSITION.Y|
000000D0: 50 4F 53 09 3D 20 56 49 43 44 41 54 41 2B 24 30 |POS.= VICDATA+$0|
000000E0: 31 09 3B 20 59 20 50 4F 53 49 54 49 4F 4E 0D 58 |1.; Y POSITION.X|
000000F0: 50 4F 53 4D 53 42 09 3D 20 56 49 43 44 41 54 41 |POSMSB.= VICDATA|
00000100: 2B 24 31 30 09 3B 20 42 49 54 20 30 20 49 53 20 |+$10.; BIT 0 IS |
00000110: 48 49 47 48 20 4F 52 44 45 52 20 58 20 50 4F 53 |HIGH ORDER X POS|
00000120: 49 54 49 4F 4E 0D 3B 0D 09 2A 3D 24 43 30 30 30 |ITION.;..*=$C000|
00000130: 0D 49 49 52 51 32 09 2A 3D 2A 2B 32 0D 4F 50 4F |.IIRQ2.*=*+2.OPO|
00000140: 54 58 09 2A 3D 2A 2B 31 0D 4F 50 4F 54 59 09 2A |TX.*=*+1.OPOTY.*|
00000150: 3D 2A 2B 31 0D 4E 45 57 56 41 4C 55 45 09 2A 3D |=*+1.NEWVALUE.*=|
00000160: 2A 2B 31 0D 4F 4C 44 56 41 4C 55 45 09 2A 3D 2A |*+1.OLDVALUE.*=*|
00000170: 2B 31 0D 3B 0D 09 2A 20 3D 20 24 43 31 30 30 0D |+1.;..* = $C100.|
00000180: 3B 0D 49 4E 53 54 41 4C 4C 09 4C 44 41 20 49 49 |;.INSTALL.LDA II|
00000190: 52 51 2B 31 0D 09 43 4D 50 20 23 3E 4D 49 52 51 |RQ+1..CMP #>MIRQ|
000001A0: 0D 09 42 45 51 20 39 30 24 0D 09 50 48 50 0D 09 |..BEQ 90$..PHP..|
000001B0: 53 45 49 0D 09 4C 44 41 20 49 49 52 51 0D 09 53 |SEI..LDA IIRQ..S|
000001C0: 54 41 20 49 49 52 51 32 0D 09 4C 44 41 20 49 49 |TA IIRQ2..LDA II|
000001D0: 52 51 2B 31 0D 09 53 54 41 20 49 49 52 51 32 2B |RQ+1..STA IIRQ2+|
000001E0: 31 0D 0D 09 4C 44 41 20 23 3C 4D 49 52 51 0D 09 |1...LDA #<MIRQ..|
000001F0: 53 54 41 20 49 49 52 51 0D 09 4C 44 41 20 23 3E |STA IIRQ..LDA #>|
00000200: 4D 49 52 51 0D 09 53 54 41 20 49 49 52 51 2B 31 |MIRQ..STA IIRQ+1|
00000210: 0D 3B 0D 09 50 4C 50 0D 39 30 24 09 52 54 53 0D |.;..PLP.90$.RTS.|
00000220: 3B 0D 4D 49 52 51 09 43 4C 44 09 09 3B 20 4A 55 |;.MIRQ.CLD..; JU|
00000230: 53 54 20 49 4E 20 43 41 53 45 2E 2E 2E 2E 2E 0D |ST IN CASE......|
00000240: 09 4C 44 41 20 50 4F 54 58 09 3B 20 47 45 54 20 |.LDA POTX.; GET |
00000250: 44 45 4C 54 41 20 56 41 4C 55 45 53 20 46 4F 52 |DELTA VALUES FOR|
00000260: 20 58 0D 09 4C 44 59 20 4F 50 4F 54 58 0D 09 4A | X..LDY OPOTX..J|
00000270: 53 52 20 4D 4F 56 43 48 4B 0D 09 53 54 59 20 4F |SR MOVCHK..STY O|
00000280: 50 4F 54 58 0D 3B 0D 09 43 4C 43 09 09 3B 20 4D |POTX.;..CLC..; M|
00000290: 4F 44 49 46 59 20 4C 4F 57 20 4F 52 44 45 52 20 |ODIFY LOW ORDER |
000002A0: 58 50 4F 53 49 54 49 4F 4E 0D 09 41 44 43 20 58 |XPOSITION..ADC X|
000002B0: 50 4F 53 0D 09 53 54 41 20 58 50 4F 53 0D 09 54 |POS..STA XPOS..T|
000002C0: 58 41 0D 09 41 44 43 20 23 24 30 30 0D 09 41 4E |XA..ADC #$00..AN|
000002D0: 44 20 23 25 30 30 30 30 30 30 30 31 0D 09 45 4F |D #%00000001..EO|
000002E0: 52 20 58 50 4F 53 4D 53 42 0D 09 53 54 41 20 58 |R XPOSMSB..STA X|
000002F0: 50 4F 53 4D 53 42 0D 3B 0D 09 4C 44 41 20 50 4F |POSMSB.;..LDA PO|
00000300: 54 59 09 3B 20 47 45 54 20 44 45 4C 54 41 20 56 |TY.; GET DELTA V|
00000310: 41 4C 55 45 20 46 4F 52 20 59 0D 09 4C 44 59 20 |ALUE FOR Y..LDY |
00000320: 4F 50 4F 54 59 0D 09 4A 53 52 20 4D 4F 56 43 48 |OPOTY..JSR MOVCH|
00000330: 4B 0D 09 53 54 59 20 4F 50 4F 54 59 0D 3B 0D 09 |K..STY OPOTY.;..|
00000340: 53 45 43 09 09 3B 20 4D 4F 44 49 46 59 20 59 20 |SEC..; MODIFY Y |
00000350: 50 4F 53 49 54 49 4F 4E 20 28 20 44 45 43 52 45 |POSITION ( DECRE|
00000360: 41 53 45 20 59 20 46 4F 52 20 49 4E 43 52 45 53 |ASE Y FOR INCRES|
00000370: 45 20 49 4E 20 50 4F 54 20 29 0D 09 45 4F 52 20 |E IN POT )..EOR |
00000380: 23 24 46 46 0D 09 41 44 43 20 59 50 4F 53 0D 09 |#$FF..ADC YPOS..|
00000390: 53 54 41 20 59 50 4F 53 0D 3B 0D 39 30 24 09 4A |STA YPOS.;.90$.J|
000003A0: 4D 50 20 28 49 49 52 51 32 29 09 3B 20 43 4F 4E |MP (IIRQ2).; CON|
000003B0: 54 49 4E 55 45 20 57 2F 20 49 52 51 20 4F 50 45 |TINUE W/ IRQ OPE|
000003C0: 52 41 54 49 4F 4E 0D 3B 0D 3B 20 4D 4F 56 43 48 |RATION.;.; MOVCH|
000003D0: 4B 0D 3B 09 45 4E 54 52 59 09 59 20 3D 20 4F 4C |K.;.ENTRY.Y = OL|
000003E0: 44 20 56 41 4C 55 45 20 4F 46 20 50 4F 54 20 52 |D VALUE OF POT R|
000003F0: 45 47 49 53 54 45 52 0D 3B 09 09 41 20 3D 20 43 |EGISTER.;..A = C|
00000400: 55 52 52 52 45 4E 54 20 56 41 4C 55 45 20 4F 46 |URRRENT VALUE OF|
00000410: 20 50 4F 54 20 52 45 47 49 53 54 45 52 0D 3B 09 | POT REGISTER.;.|
00000420: 45 58 49 54 09 59 20 3D 20 56 41 4C 55 45 20 54 |EXIT.Y = VALUE T|
00000430: 4F 20 55 53 45 20 46 4F 52 20 4F 4C 44 20 56 41 |O USE FOR OLD VA|
00000440: 4C 55 45 0D 3B 09 09 58 2C 41 20 3D 20 44 45 4C |LUE.;..X,A = DEL|
00000450: 54 41 20 56 41 4C 55 45 20 46 4F 52 20 50 4F 53 |TA VALUE FOR POS|
00000460: 49 54 49 4F 4E 0D 3B 0D 4D 4F 56 43 48 4B 09 53 |ITION.;.MOVCHK.S|
00000470: 54 59 20 4F 4C 44 56 41 4C 55 45 09 53 41 56 45 |TY OLDVALUE.SAVE|
00000480: 20 4F 4C 44 20 26 20 20 4E 45 57 20 56 41 4C 55 | OLD & NEW VALU|
00000490: 45 53 0D 09 53 54 41 20 4E 45 57 56 41 4C 55 45 |ES..STA NEWVALUE|
000004A0: 0D 09 4C 44 58 20 23 30 09 09 50 52 45 4C 4F 41 |..LDX #0..PRELOA|
000004B0: 44 20 58 20 57 2F 20 30 0D 3B 0D 09 53 45 43 09 |D X W/ 0.;..SEC.|
000004C0: 09 41 20 3C 3D 20 20 4D 4F 44 36 34 28 20 4E 45 |.A <= MOD64( NE|
000004D0: 57 2D 4F 4C 44 20 29 0D 09 53 42 43 20 4F 4C 44 |W-OLD )..SBC OLD|
000004E0: 56 41 4C 55 45 0D 09 41 4E 44 20 23 25 30 31 31 |VALUE..AND #%011|
000004F0: 31 31 31 31 31 09 0D 09 43 4D 50 20 23 25 30 31 |11111...CMP #%01|
00000500: 30 30 30 30 30 30 09 49 46 09 3E 20 30 0D 09 42 |000000.IF.> 0..B|
00000510: 43 53 20 35 30 24 0D 09 4C 53 52 20 41 09 09 09 |CS 50$..LSR A...|
00000520: 41 20 3C 3D 20 41 2F 32 0D 09 42 45 51 20 38 30 |A <= A/2..BEQ 80|
00000530: 24 09 09 09 49 46 09 3C 3E 20 30 0D 09 4C 44 59 |$...IF.<> 0..LDY|
00000540: 20 4E 45 57 56 41 4C 55 45 09 09 09 59 20 3C 3D | NEWVALUE...Y <=|
00000550: 20 4E 45 57 56 41 4C 55 45 0D 09 52 54 53 09 09 | NEWVALUE..RTS..|
00000560: 09 09 52 45 54 55 52 4E 0D 3B 0D 35 30 24 09 4F |..RETURN.;.50$.O|
00000570: 52 41 20 23 25 31 31 30 30 30 30 30 30 09 45 4C |RA #%11000000.EL|
00000580: 53 45 09 4F 52 20 49 4E 20 48 49 47 48 20 4F 52 |SE.OR IN HIGH OR|
00000590: 44 45 52 20 42 49 54 53 0D 09 43 4D 50 20 23 24 |DER BITS..CMP #$|
000005A0: 46 46 09 09 49 46 09 3C 3E 20 2D 31 0D 09 42 45 |FF..IF.<> -1..BE|
000005B0: 51 20 38 30 24 0D 09 53 45 43 09 09 09 09 41 20 |Q 80$..SEC....A |
000005C0: 3C 3D 20 41 2F 32 0D 09 52 4F 52 20 41 0D 09 4C |<= A/2..ROR A..L|
000005D0: 44 58 20 23 24 46 46 09 09 09 58 20 3C 3D 20 2D |DX #$FF...X <= -|
000005E0: 31 0D 09 4C 44 59 20 4E 45 57 56 41 4C 55 45 09 |1..LDY NEWVALUE.|
000005F0: 09 09 59 20 3C 3D 20 4E 45 57 56 41 4C 55 45 0D |..Y <= NEWVALUE.|
00000600: 09 52 54 53 09 09 09 09 52 45 54 55 52 4E 0D 3B |.RTS....RETURN.;|
00000610: 0D 38 30 24 09 4C 44 41 20 23 30 09 09 41 20 3C |.80$.LDA #0..A <|
00000620: 3D 20 30 0D 09 52 54 53 09 09 52 45 54 55 52 4E |= 0..RTS..RETURN|
00000630: 20 57 2F 20 59 20 3D 20 4F 4C 44 20 56 41 4C 55 | W/ Y = OLD VALU|
00000640: 45 0D 3B 0D 09 2E 45 4E 44 0D 45 |E.;...END.E |
;.;.SID MOUSE C64 BASIC COMPATIBLE DRIVE
R.;.IIRQ.= $0314.VIC.= $D000.SID.= $D400
.POTX.= SID+$19.POTY.= SID+$1A.;.VICDATA
.= $D000..; BASICS COPY OF VIC REGISTER
IMAGE.XPOS.= VICDATA+$00.; LOW ORDER XPO
SITION.YPOS.= VICDATA+$01.; Y POSITION.X
POSMSB.= VICDATA+$10.; BIT 0 IS HIGH ORD
ER X POSITION.;..*=$C000.IIRQ2.*=*+2.OPO
TX.*=*+1.OPOTY.*=*+1.NEWVALUE.*=*+1.OLDV
ALUE.*=*+1.;..* = $C100.;.INSTALL.LDA II
RQ+1..CMP #>MIRQ..BEQ 90$..PHP..SEI..LDA
IIRQ..STA IIRQ2..LDA IIRQ+1..STA IIRQ2+
1...LDA #<MIRQ..STA IIRQ..LDA #>MIRQ..ST
A IIRQ+1.;..PLP.90$.RTS.;.MIRQ.CLD..; JU
ST IN CASE.......LDA POTX.; GET DELTA VA
LUES FOR X..LDY OPOTX..JSR MOVCHK..STY O
POTX.;..CLC..; MODIFY LOW ORDER XPOSITIO
N..ADC XPOS..STA XPOS..TXA..ADC #$00..AN
D #%00000001..EOR XPOSMSB..STA XPOSMSB.;
..LDA POTY.; GET DELTA VALUE FOR Y..LDY
OPOTY..JSR MOVCHK..STY OPOTY.;..SEC..; M
ODIFY Y POSITION ( DECREASE Y FOR INCRES
E IN POT )..EOR #$FF..ADC YPOS..STA YPOS
.;.90$.JMP (IIRQ2).; CONTINUE W/ IRQ OPE
RATION.;.; MOVCHK.;.ENTRY.Y = OLD VALUE
OF POT REGISTER.;..A = CURRRENT VALUE OF
POT REGISTER.;.EXIT.Y = VALUE TO USE FO
R OLD VALUE.;..X,A = DELTA VALUE FOR POS
ITION.;.MOVCHK.STY OLDVALUE.SAVE OLD &
NEW VALUES..STA NEWVALUE..LDX #0..PRELOA
D X W/ 0.;..SEC..A <= MOD64( NEW-OLD ).
.SBC OLDVALUE..AND #%01111111...CMP #%01
000000.IF.> 0..BCS 50$..LSR A...A <= A/2
..BEQ 80$...IF.<> 0..LDY NEWVALUE...Y <=
NEWVALUE..RTS....RETURN.;.50$.ORA #%110
00000.ELSE.OR IN HIGH ORDER BITS..CMP #$
FF..IF.<> -1..BEQ 80$..SEC....A <= A/2..
ROR A..LDX #$FF...X <= -1..LDY NEWVALUE.
..Y <= NEWVALUE..RTS....RETURN.;.80$.LDA
#0..A <= 0..RTS..RETURN W/ Y = OLD VALU
E.;...END.E
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL