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(): 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