jb302@34: #!/usr/bin/env python jb302@34: import struct jb302@34: from subprocess import Popen, PIPE, STDOUT jb302@34: from dbg import controller jb302@34: emu = controller() jb302@34: emu.Emu = Popen(['../../bin/emu'], stdout=PIPE, stdin=PIPE, stderr=PIPE) jb302@34: jb302@34: print 'testing register setting and getting...' jb302@34: # fill registers with their index number jb302@34: for r in range(16): jb302@34: emu.set_reg(r, r) jb302@34: # ask for them back jb302@34: regs = [] jb302@34: for r in range(16): jb302@34: regs.append(struct.unpack('>B', emu.get_reg(r))[0]) jb302@34: jb302@34: if set(regs) == set(range(16)): jb302@34: print 'passed' jb302@34: else: jb302@34: print 'failed' jb302@34: print regs jb302@34: jb302@34: print 'testing setting' jb302@34: for f in range(8): jb302@34: emu.set_flag(f, 1) jb302@34: jb302@34: if struct.unpack('>B', emu.get_flags())[0] == 0xFF: jb302@34: print 'passed' jb302@34: else: jb302@34: print 'failed' jb302@34: jb302@34: print 'clearing some flags and testing get flag function' jb302@34: for f in range(4): jb302@34: emu.set_flag(f, 0) jb302@34: jb302@34: if struct.unpack('>B', emu.get_flags())[0] == 0xF0: jb302@34: print 'passed' jb302@34: else: jb302@34: print 'failed' jb302@34: jb302@34: print 'fill entire memory space with SET C (0x08), execute the entire lot, and then check PC and IR...' jb302@34: blk = [0x08 for x in range(0xFFFF)] jb302@34: emu.set_block(0, 0, blk) jb302@34: rblk = emu.get_block(0x00, 0x00, 0xFF, 0xFF) jb302@34: ra = [struct.unpack('>B', c)[0] for c in rblk] jb302@34: emu.set_reg(14, 0) jb302@34: emu.set_reg(6, 0) jb302@34: emu.run_len(0xFF, 0xFF) jb302@34: jb302@34: if ( (struct.unpack('>B', emu.get_reg(14))[0] == 0xff) and \ jb302@34: (struct.unpack('>B', emu.get_reg(6))[0] == 0xff) and \ jb302@34: (struct.unpack('>B', emu.get_ir())[0] == 0x08) ): jb302@34: print 'passed' jb302@34: else: jb302@34: print 'failed' jb302@34: emu.Emu.kill()