def main(): hf1 = HexFile(None) hf1.from_str(open(sys.argv[1]).read()) hf2 = HexFile(None) hf2.from_str(open(sys.argv[2]).read()) if (hf1.addr!=hf2.addr): print >> sys.stderr, "addr mismatch", hf1.addr, hf2.addr if len(hf1.bytes) != len(hf2.bytes): print >> sys.stderr, "len mismatch", len(hf1.bytes), len(hf2.bytes) minlen=min(len(hf1.bytes), len(hf2.bytes)) for i in range(0, hf1.addr): hf1.bytes = [0] + hf1.bytes for i in range(0, hf2.addr): hf2.bytes = [0] + hf2.bytes start = max(hf1.addr, hf2.addr) for i in range( start, start + minlen ): if hf1.bytes[i] != hf2.bytes[i]: print >> sys.stderr, "mismatch %04X %02X %02X" % (i, hf1.bytes[i], hf2.bytes[i])
def main(): hf1 = HexFile(None) hf1.from_str(open(sys.argv[1]).read()) for arg in sys.argv[2:]: hfm = HexFile(None) hfm.from_str(open(arg).read()) hf1.merge(hfm) sys.stdout.write(hf1.to_str())
def main(): hf1 = HexFile(None) hf1.from_str(open(sys.argv[1]).read()) if "x" in sys.argv[2]: newStart = int(sys.argv[2], 16) else: newStart = int(sys.argv[2]) hf1.addr = newStart sys.stdout.write(hf1.to_str())
def main(): hf1 = HexFile(None) hf1.from_str(open(sys.argv[1]).read()) csum=0 sys.stdout.write("U0\n") sys.stdout.write(":") for b in hf1.bytes: sys.stdout.write("%02X" % b) csum = csum + b sys.stdout.write(">") sys.stdout.write("%02X" % (len(hf1.bytes) & 0xFF)) sys.stdout.write("%02X" % (csum & 0xFF)) sys.stdout.write("\n")
def main(): hf1 = HexFile(None) hf1.from_str(open(sys.argv[1]).read()) csum = 0 sys.stdout.write("U0\n") sys.stdout.write(":") for b in hf1.bytes: sys.stdout.write("%02X" % b) csum = csum + b sys.stdout.write(">") sys.stdout.write("%02X" % (len(hf1.bytes) & 0xFF)) sys.stdout.write("%02X" % (csum & 0xFF)) sys.stdout.write("\n")
def main(): parser = OptionParser(usage="supervisor [options] command", description="Commands: ...") parser.add_option("-A", "--addr", dest="addr", help="address", metavar="ADDR", type="int", default=0) parser.add_option("-C", "--count", dest="count", help="count", metavar="ADDR", type="int", default=65536) parser.add_option("-V", "--value", dest="value", help="value", metavar="VAL", type="int", default=0) parser.add_option("-P", "--ascii", dest="ascii", help="print ascii value", action="store_true", default=False) parser.add_option("-R", "--rate", dest="rate", help="rate for slow clock", metavar="HERTZ", type="int", default=10) parser.add_option("-B", "--bank", dest="bank", help="bank number to select on ram-rom board", metavar="NUMBER", type="int", default=None) parser.add_option("-v", "--verbose", dest="verbose", help="verbose", action="store_true", default=False) parser.add_option("-f", "--filename", dest="filename", help="filename", default=None) parser.add_option("-r", "--reset", dest="reset_on_release", help="reset on release of bus", action="store_true", default=False) parser.add_option("-n", "--norelease", dest="norelease", help="do not release bus", action="store_true", default=False) #parser.disable_interspersed_args() (options, args) = parser.parse_args(sys.argv[1:]) cmd = args[0] args=args[1:] bus = smbus.SMBus(1) super = Supervisor(bus, 0x20, options.verbose) if (cmd=="reset"): super.reset() elif (cmd=="memdump"): try: super.take_bus(setBank=options.bank) for i in range(options.addr,options.addr+options.count): val = super.mem_read(i) if options.ascii: print "%04X %02X %s" % (i, val, hex_escape(chr(val))) else: print "%04X %02X" % (i, val) finally: if not options.norelease: super.release_bus() elif (cmd=="savehex"): hexdumper = HexFile(options.addr) try: super.take_bus(setBank=options.bank) for i in range(options.addr,options.addr+options.count): val = super.mem_read(i) hexdumper.write(val) finally: if not options.norelease: super.release_bus() if options.filename: file(options.filename,"w").write(hexdumper.to_str()) else: sys.stdout.write(hexdumper.to_str()) # a little self-test ... h2 = HexFile(None) h2.from_str(hexdumper.to_str()) print "okay?", h2.to_str() == hexdumper.to_str() elif (cmd=="loadhex"): hexloader = HexFile(None) if options.filename: hexloader.from_str(file(options.filename,"r").read()) else: hexloader.from_str(sys.stdin.read()) try: super.take_bus(setBank=options.bank) offset = hexloader.addr for val in hexloader.bytes: super.mem_write(offset, val) offset = offset + 1 finally: if not options.norelease: super.release_bus(reset=options.reset_on_release) elif (cmd=="peek"): try: super.take_bus(setBank=options.bank) print "%02X" % super.mem_read(options.addr) finally: if not options.norelease: super.release_bus() elif (cmd=="poke"): try: super.take_bus(setBank=options.bank) super.mem_write(options.addr, options.value) finally: if not options.norelease: super.release_bus() elif (cmd=="ioread"): try: super.take_bus(setBank=options.bank) print "%02X" % super.io_read(options.addr) finally: if not options.norelease: super.release_bus() elif (cmd=="iowatch"): last=None try: super.take_bus(setBank=options.bank) while True: x=super.io_read(options.addr) if (x!=last): print "%02X" % x last=x finally: if not options.norelease: super.release_bus() elif (cmd=="iowrite"): try: super.take_bus(setBank=options.bank) super.io_write(options.addr, options.value) finally: if not options.norelease: super.release_bus() elif (cmd=="slowclock"): try: super.slow_clock(rate=options.rate) finally: super.normal_clock() elif (cmd=="singlestep"): try: from getch import getch super.singlestep_on() while True: print "press `s` to step, 'q' to quit", ch = getch() if ch=="s": # Reading gpio will clear interrupt, but the problem is that # M1 may still be low and will immediately re-interrupt. bits=super.ixData.get_gpio(1) while (bits & M1)==0: bits = super.ixData.get_gpio(1) print "" if ch=="q": break finally: super.singlestep_off() elif (cmd=="singlestep"): try: from getch import getch super.singlestep_on() while True: print "press `s` to step, 'q' to quit", ch = getch() if ch=="s": # Reading gpio will clear interrupt, but the problem is that # M1 may still be low and will immediately re-interrupt. So # keep reading it until we see that M1 has gone high. bits=super.ixData.get_gpio(1) while (bits & M1)==0: bits = super.ixData.get_gpio(1) print "" if ch=="q": break finally: super.singlestep_off() elif (cmd=="autostep"): try: super.autostep(rate=options.rate) finally: super.normal_clock() elif (cmd=="showint"): last=None while True: v = ((super.ixData.get_gpio(1)&INT) !=0) if v!=last: print v last=v