Пример #1
0
 private void RefreshDisassembly()
 {
     unchecked
     {
         Z80Disassembler.DisassembledInstruction disasm;
         byte[] instr = new byte[4];
         disasmStrBuilder.Clear();
         int baseAddress = (int)disasmAddrUpDown.Value;
         for (int i = 0; i < 64; i += disasm.Length)
         {
             for (int j = 0; j < 4; j++)
             {
                 instr[j] = Cpu.MemoryRead(this, (ushort)(baseAddress + i + j));
             }
             disasmStrBuilder.Append(((ushort)(baseAddress + i)).ToString("X4"));
             disasmStrBuilder.Append(": ");
             disasm = Z80Disassembler.DisassembleInstruction(instr, (ushort)(baseAddress + i));
             for (int j = 0; j < 4; j++)
             {
                 if (j < disasm.Length)
                 {
                     disasmStrBuilder.Append(instr[j].ToString("X2"));
                 }
                 else
                 {
                     disasmStrBuilder.Append("  ");
                 }
             }
             disasmStrBuilder.Append(" ");
             disasmStrBuilder.Append(disasm.Disassembly);
             disasmStrBuilder.AppendLine();
         }
         disassemblyTextBox.Text = disasmStrBuilder.ToString();
     }
 }
Пример #2
0
 void RefreshExecHistroy()
 {
     unchecked
     {
         if (!Cpu.TraceLastExec)
         {
             return;
         }
         Z80Disassembler.DisassembledInstruction disasm;
         byte[] instr = new byte[4];
         historyStrBuilder.Clear();
         historyStrBuilder.AppendLine("                               SP   AF   BC   DE   HL   AF'  BC'  DE'  HL'  IX   IY   IR   IFF");
         //int baseAddress = Cpu.PC;
         int pos = (Cpu.LastExecPtr - 1) & Z80Cpu.LastExecMask;
         for (int i = 0; i < instrShowCount; i++)
         {
             /*for (int j = 0; j < 4; j++)
              * {
              *  instr[j] = Cpu.LastExecOpcode[pos, j];
              * }*/
             instr[0] = (byte)(Cpu.LastExecData[pos, 0] & 0xFF);
             instr[1] = (byte)(Cpu.LastExecData[pos, 0] >> 8);
             instr[2] = (byte)(Cpu.LastExecData[pos, 1] & 0xFF);
             instr[3] = (byte)(Cpu.LastExecData[pos, 1] >> 8);
             ushort PC = Cpu.LastExecData[pos, 2];
             //str.Append(Cpu.LastExecAddress[pos].ToString("X4"));
             historyStrBuilder.Append(PC.ToString("X4"));
             historyStrBuilder.Append(": ");
             disasm = Z80Disassembler.DisassembleInstruction(instr, PC);
             for (int j = 0; j < 4; j++)
             {
                 if (j < disasm.Length)
                 {
                     historyStrBuilder.Append(instr[j].ToString("X2"));
                 }
                 else
                 {
                     historyStrBuilder.Append("  ");
                 }
             }
             historyStrBuilder.Append(" ");
             historyStrBuilder.Append(disasm.Disassembly);
             for (int k = disasm.Disassembly.Length; k < 16; k++)
             {
                 historyStrBuilder.Append(" ");
             }
             for (int k = 3; k < 16; k++)
             {
                 historyStrBuilder.Append(Cpu.LastExecData[pos, k].ToString("X4"));
                 historyStrBuilder.Append(" ");
             }
             historyStrBuilder.AppendLine();
             pos = (pos - 1) & Z80Cpu.LastExecMask;
         }
         disassemblyTextBox.Text = historyStrBuilder.ToString();
     }
 }