private void Given_Code(Action <Assembler> p) { var asm = new Assembler(sc, arch, Address.Ptr16(0x0800), new List <ImageSymbol>()); p(asm); var program = asm.GetImage(); program.SegmentMap.AddSegment( new ByteMemoryArea(Address.Ptr16(0), new byte[256]), "ZeroPage", AccessMode.ReadWriteExecute); var envEmu = new DefaultPlatformEmulator(); emu = (Mos6502Emulator)arch.CreateEmulator(program.SegmentMap, envEmu); emu.InstructionPointer = program.ImageMap.BaseAddress; emu.WriteRegister(Registers.s, 0xFF); emu.ExceptionRaised += (sender, e) => { throw e.Exception; }; }