]> git.sur5r.net Git - cc65/commitdiff
Added comment based on mailing list posting by Greg King.
authorol.sc <ol.sc@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 20 Feb 2010 09:52:05 +0000 (09:52 +0000)
committerol.sc <ol.sc@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Sat, 20 Feb 2010 09:52:05 +0000 (09:52 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4593 b7a2c559-68d2-44c3-8de9-860c34a00d81

libsrc/c64/c64-1351.s
libsrc/c64/c64-joymouse.s

index c53940d7adfa73063987acac33a3900ac0a29efd..d4dfa1c9199b9f16079ef534e00a12fb8d69935d 100644 (file)
@@ -4,6 +4,24 @@
 ;
 ; 2009-09-26, Ullrich von Bassewitz
 ; 2010-02-06, Greg King
+;
+; The driver prevents the keyboard from interfering by changing the\r
+; keyboard's output port into an input port while the driver reads its\r
+; controller device.  That disables a wire that is left active by the\r
+; Kernal.  That wire is used by the STOP-key to break out of BASIC\r
+; programs -- CC65 programs don't use that feature.  The wire is shared\r
+; by these keys: STOP, "Q", Commodore, Space, "2", CTRL, Left-Arrow, and\r
+; "1".  I listed them, in order, from bit 7 over to bit 0.  The\r
+; rightmost five keys can look like joystick switches.\r
+;\r
+; The driver prevents the mouse/joystick from interfering by "blinding"\r
+; the keyboard scanner while any button/switch is active.  It changes\r
+; the input port into an output port, then stores all zero-bits in that\r
+; port's latch.  Reading from an output port sees the bitwise-AND of the\r
+; latch and the input signals.  Therefore, the scanner thinks that eight\r
+; keys are being pushed at the same time.  It doesn't know what to do\r
+; about that condition; so, it does nothing.  The driver lets the\r
+; scanner see normally, again, when no buttons/switches are active.
 ;
 
         .include        "zeropage.inc"
index e99adac7a2497730a2d19720b676b5f05c3eeec5..23564c39a85de288324fc383a5a60ddf26d2246f 100644 (file)
@@ -3,6 +3,24 @@
 ;
 ; Ullrich von Bassewitz, 2004-03-29, 2009-09-26
 ; 2010-02-08, Greg King
+;
+; The driver prevents the keyboard from interfering by changing the\r
+; keyboard's output port into an input port while the driver reads its\r
+; controller device.  That disables a wire that is left active by the\r
+; Kernal.  That wire is used by the STOP-key to break out of BASIC\r
+; programs -- CC65 programs don't use that feature.  The wire is shared\r
+; by these keys: STOP, "Q", Commodore, Space, "2", CTRL, Left-Arrow, and\r
+; "1".  I listed them, in order, from bit 7 over to bit 0.  The\r
+; rightmost five keys can look like joystick switches.\r
+;\r
+; The driver prevents the mouse/joystick from interfering by "blinding"\r
+; the keyboard scanner while any button/switch is active.  It changes\r
+; the input port into an output port, then stores all zero-bits in that\r
+; port's latch.  Reading from an output port sees the bitwise-AND of the\r
+; latch and the input signals.  Therefore, the scanner thinks that eight\r
+; keys are being pushed at the same time.  It doesn't know what to do\r
+; about that condition; so, it does nothing.  The driver lets the\r
+; scanner see normally, again, when no buttons/switches are active.
 ;
 
         .include        "zeropage.inc"