+ def CCpeekcodebyte(self,adr):
+ """Read the contents of code memory at an address."""
+ self.data=[adr&0xff, (adr&0xff00)>>8];
+ self.writecmd(0x30,0x90,2,self.data);
+ return ord(self.data[0]);
+ def CCpeekdatabyte(self,adr):
+ """Read the contents of data memory at an address."""
+ self.data=[adr&0xff, (adr&0xff00)>>8];
+ self.writecmd(0x30,0x91, 2, self.data);
+ return ord(self.data[0]);
+ def CCpokedatabyte(self,adr,val):
+ """Write a byte to data memory."""
+ self.data=[adr&0xff, (adr&0xff00)>>8, val];
+ self.writecmd(0x30, 0x92, 3, self.data);
+ return ord(self.data[0]);
+ def CCchiperase(self):
+ """Erase all of the target's memory."""
+ self.writecmd(0x30,0x80,0,None);
+ def CCstatus(self):
+ """Check the status."""
+ self.writecmd(0x30,0x84,0,None);
+ return ord(self.data[0])
+ CCstatusbits={0x80 : "erased",
+ 0x40 : "pcon_idle",
+ 0x20 : "halted",
+ 0x10 : "pm0",
+ 0x08 : "halted",
+ 0x04 : "locked",
+ 0x02 : "oscstable",
+ 0x01 : "overflow"};
+ def CCstatusstr(self):
+ """Check the status as a string."""
+ status=self.CCstatus();
+ str="";
+ i=1;
+ while i<0x100:
+ if(status&i):
+ str="%s %s" %(self.CCstatusbits[i],str);
+ i*=2;
+ return str;