Monitor peeks work on the console.
[goodfet] / client / GoodFETCC.py
index 7468834..6001a59 100644 (file)
@@ -35,7 +35,7 @@ class GoodFETCC(GoodFET):
             if e.localName=="Name" and e.childNodes: name= e.childNodes[0].nodeValue;
             elif e.localName=="Start": start=e.childNodes[0].nodeValue;
             elif e.localName=="Stop": stop=e.childNodes[0].nodeValue;
-        return "[%s:%s] %15s " % (start,stop,name);
+        return "   [%s:%s] %30s " % (start,stop,name);
     def SRF_radiostate(self):
         ident=self.CCident();
         chip=self.CCversions.get(ident&0xFF00);
@@ -58,14 +58,19 @@ class GoodFETCC(GoodFET):
                             if g.childNodes:
                                 description=g.childNodes[0].nodeValue;
                         elif g.localName=="Bitfield":
-                            bitfields+="%17s/* %10s */\n" % ("",self.SRF_bitfieldstr(g));
+                            bitfields+="%17s/* %-50s */\n" % ("",self.SRF_bitfieldstr(g));
                     #print "SFRX(%10s, %s); /* %50s */" % (name,address, description);
                     print "%-10s=0x%02x; /* %-50s */" % (
                         name,self.CCpeekdatabyte(eval(address)), description);
                     if bitfields!="": print bitfields.rstrip();
+    def halt(self):
+        """Halt the CPU."""
+        self.CChaltcpu();
     def CChaltcpu(self):
         """Halt the CPU."""
         self.writecmd(self.APP,0x86,0,self.data);
+    def resume(self):
+        self.CCreleasecpu();
     def CCreleasecpu(self):
         """Resume the CPU."""
         self.writecmd(self.APP,0x87,0,self.data);
@@ -166,6 +171,8 @@ class GoodFETCC(GoodFET):
             sys.exit(1);
             #return 2048;
         return size;
+    def getpc(self):
+        return self.CCgetPC();
     def CCgetPC(self):
         """Get a chipcon's PC."""
         self.writecmd(self.APP,0x83,0,None);
@@ -288,6 +295,18 @@ class GoodFETCC(GoodFET):
               (adr>>24)&0xFF];
         print "Flashing buffer to 0x%06x" % adr;
         self.writecmd(self.APP,0x95,4,data);
+    def dump(self,file,start=0,stop=0xffff):
+        """Dump an intel hex file from code memory."""
+        print "Dumping code from %04x to %04x as %s." % (start,stop,file);
+        h = IntelHex(None);
+        i=start;
+        while i<=stop:
+            h[i]=self.CCpeekcodebyte(i);
+            if(i%0x100==0):
+                print "Dumped %04x."%i;
+                h.write_hex_file(file); #buffer to disk.
+            i+=1;
+        h.write_hex_file(file);
 
     def flash(self,file):
         """Flash an intel hex file to code memory."""