+if(sys.argv[1]=="peek"):
+ start=0x0000;
+ if(len(sys.argv)>2):
+ start=int(sys.argv[2],16);
+ stop=start;
+ if(len(sys.argv)>3):
+ stop=int(sys.argv[3],16);
+ print "Peeking from %04x to %04x." % (start,stop);
+ while start<=stop:
+ print "%04x: %04x" % (start,client.MSP430peek(start));
+ start=start+2;
+
+if(sys.argv[1]=="poke"):
+ start=0x0000;
+ val=0x00;
+ if(len(sys.argv)>2):
+ start=int(sys.argv[2],16);
+ if(len(sys.argv)>3):
+ val=int(sys.argv[3],16);
+ print "Poking %06x to become %04x." % (start,val);
+
+ while client.MSP430peek(start)&(~val)>0:
+ client.MSP430pokeflash(start,val);
+ print "Poked to %04x" % client.MSP430peek(start);
+if(sys.argv[1]=="serial"):
+ oid=0xdeadbeef;
+ if(len(sys.argv)>2):
+ oid=eval(sys.argv[2]);
+ else:
+ #Crashes Windows.
+ #simpchin=u=unichr(24207)+unichr(21015)+unichr(21495); #Chinese for "Serial Number".
+ #print simpchin;
+
+ oid=input(u"Serial Number? ");
+ adr=0xFFB0;
+ if(len(sys.argv)>2):
+ start=int(sys.argv[2],16);
+ if(len(sys.argv)>3):
+ val=int(sys.argv[3],16);
+ print "Poking 32-bit OID to 0x%04x as %08x." % (adr,oid);
+ client.MSP430pokeflash(adr,oid&0xFFFF);
+ client.MSP430pokeflash(adr+2,(oid>>16)&0xFFFF);
+
+if(sys.argv[1]=="run"):
+ #Set PC to RESET vector's value.
+ #client.MSP430setPC(client.MSP430peek(0xfffe));
+ #client.MSP430releasecpu();
+ client.MSP430run();