X-Git-Url: http://git.rot13.org/?p=goodfet;a=blobdiff_plain;f=client%2FGoodFET.py;h=ef218333005c155af87cb76312e79ffba3475219;hp=10f2e6f01f499b17e25a0117b7d9cc67159fded0;hb=b606e1a567586b0498a0632142904ad1a79d6e44;hpb=052771a83e020314b718e82d0b1b2a645a7c3d4f diff --git a/client/GoodFET.py b/client/GoodFET.py index 10f2e6f..ef21833 100755 --- a/client/GoodFET.py +++ b/client/GoodFET.py @@ -13,7 +13,8 @@ fmt = ("B", ">8)&0xff, @@ -353,27 +358,53 @@ class GoodFET: """Execute supplied code.""" self.writecmd(0,0x31,2,#len(code), code); - def peekbyte(self,address): + def MONpeek8(self,address): """Read a byte of memory from the monitor.""" self.data=[address&0xff,address>>8]; self.writecmd(0,0x02,2,self.data); #self.readcmd(); return ord(self.data[0]); - def peekword(self,address): + def MONpeek16(self,address): """Read a word of memory from the monitor.""" - return self.peekbyte(address)+(self.peekbyte(address+1)<<8); + return self.MONpeek8(address)+(self.MONpeek8(address+1)<<8); def peek(self,address): """Read a word of memory from the monitor.""" - return self.peekbyte(address)+(self.peekbyte(address+1)<<8); - def pokebyte(self,address,value): + return self.MONpeek8(address)+(self.MONpeek8(address+1)<<8); + def eeprompeek(self,address): + """Read a word of memory from the monitor.""" + return self.MONpeek8(address)+(self.MONpeek8(address+1)<<8); + def peekbysym(self,name): + """Read a value by its symbol name.""" + #TODO include memory in symbol. + reg=self.symbols.get(name); + return self.peek8(reg,"data"); + def pokebysym(self,name,val): + """Write a value by its symbol name.""" + #TODO include memory in symbol. + reg=self.symbols.get(name); + return self.pokebyte(reg,val); + def pokebyte(self,address,value,memory="vn"): """Set a byte of memory by the monitor.""" self.data=[address&0xff,address>>8,value]; self.writecmd(0,0x03,3,self.data); return ord(self.data[0]); + def poke16(self,address,value): + """Set a word of memory by the monitor.""" + self.pokebyte(address,value&0xFF); + self.pokebyte(address,(value>>8)&0xFF); + return value; + def setsecret(self,value): + """Set a secret word for later retreival. Used by glitcher.""" + self.eeprompoke(0,value); + self.eeprompoke(1,value); + def getsecret(self): + """Get a secret word. Used by glitcher.""" + self.eeprompeek(0); + def dumpmem(self,begin,end): i=begin; while i