Monitor now does CALL and EXEC.
[goodfet] / client / GoodFET.py
index 63e38e9..562c654 100755 (executable)
@@ -40,8 +40,12 @@ class GoodFET:
             parity = serial.PARITY_NONE
             )
         
-        #Explicitly set RTS
+        #This might cause problems, but it makes failure graceful.
+        #self.serialport._timeout = 5;
+        
+        #Explicitly set RTS and DTR to halt board.
         self.serialport.setRTS(1);
+        self.serialport.setDTR(1);
         #Drop DTR, which is !RST, low to begin the app.
         self.serialport.setDTR(0);
         self.serialport.flushInput()
@@ -103,7 +107,7 @@ class GoodFET:
             
             #Debugging string; print, but wait.
             if self.app==0xFF and self.verb==0xFF:
-                print "DEBUG %s" % self.serialport.read(self.count);
+                print "DEBUG %s" % self.serialport.read(self.count);
             else:
                 self.data=self.serialport.read(self.count);
                 return self.data;
@@ -145,6 +149,10 @@ class GoodFET:
     def dir(self,byte):
         """Write a byte to P5DIR."""
         self.writecmd(0,0xA0,1,[byte]);
+    def call(self,adr):
+        """Call to an address."""
+        self.writecmd(0,0x30,2,
+                      [adr&0xFF,(adr>>8)&0xFF]);
     def peekbyte(self,address):
         """Read a byte of memory from the monitor."""
         self.data=[address&0xff,address>>8];