[openfirmware] r1358 - dev

svn at openfirmware.info svn at openfirmware.info
Thu Sep 10 10:40:08 CEST 2009


Author: wmb
Date: 2009-09-10 10:40:07 +0200 (Thu, 10 Sep 2009)
New Revision: 1358

Modified:
   dev/ps2mouse.fth
Log:
ps2mouse driver - last version's timeout was too long, also fixed
a problem with the open-count logic.



Modified: dev/ps2mouse.fth
===================================================================
--- dev/ps2mouse.fth	2009-09-10 08:21:31 UTC (rev 1357)
+++ dev/ps2mouse.fth	2009-09-10 08:40:07 UTC (rev 1358)
@@ -38,17 +38,15 @@
 
 0 instance variable #retries
 : cmd?  ( cmd -- error? )
-   #retries off
    dup put-get-data                   ( cmd response )
    begin                              ( cmd response )
       case                            ( cmd response )
          h# fa of  drop false exit   endof   \ ACK
          h# fe of                     ( cmd )  \ RESEND - try again
-            1 #retries +!             ( cmd )
-            #retries @ d# 300 >  if   ( cmd )
+            -1 #retries +!            ( cmd )
+            #retries @ 0<  if         ( cmd )
                drop true exit
             then                      ( cmd )
-            1 ms                      ( cmd )
             dup put-get-data          ( cmd response )
          endof
          ( cmd response )
@@ -59,7 +57,7 @@
       endcase                         ( cmd new-response )
    again
 ;
-: cmd  ( cmd -- )  cmd? drop  ;
+: cmd  ( cmd -- )  d# 20 #retries !  cmd? drop  ;
 
 \ : cmd  ( cmd -- )  " put-get-data" $call-parent ?ack  ;
 
@@ -292,6 +290,7 @@
 
 : identify  ( -- true | char false )
 \   h# f2  ['] read1  catch  dup  if  nip  then
+   3 #retries !
    h# f2  cmd?  if  true exit  then
    apex-timeout timed-read
 ;
@@ -328,22 +327,21 @@
 : open  ( -- flag )
    1 set-port
 
-   open-count  1+ to open-count
+   open-count 0<>  if  true exit  then
 
-   open-count 1 <>  if  true exit  then
-
    \ The "force" argument causes the open to succeed even if no mouse
    \ is present
-   my-args  [char] , left-parse-string  2swap 2drop  " force"  $=  if
-      true exit
-   then
+   my-args  [char] , left-parse-string  2swap 2drop  " force"  $=  0=  if
 
-   find-mouse  if  false exit  then
+      find-mouse  if  false exit  then
 
-   \ Reset the mouse and check the response codes
-   h# ff read2  0<>  swap h# aa <>  or  if  false exit  then
+      \ Reset the mouse and check the response codes
+      h# ff read2  0<>  swap h# aa <>  or  if  false exit  then
 
-   remote-mode
+      remote-mode
+   then
+
+   open-count  1+ to open-count
    true
 ;
 : close  ( -- )




More information about the openfirmware mailing list