// ------------------------------------------------------------------------------------------------- // Updates the register // // \param e // Key event information. // \param s // The string. // \param reg // The register. // ------------------------------------------------------------------------------------------------- private void UpdateRegister(KeyEventArgs e, string s, Z80Register reg) { if (e.KeyCode == Keys.Enter) { int addr = 0; if (MainForm.ParseExpression(s, ref addr)) { registerData[(int)reg].Value = addr; SetRegister(addr, reg); Program.serialport.SendRegisters( delegate(byte[] response, int tag) { Invoke((MethodInvoker) delegate { Program.myMainForm.UpdateAllWindows(true); }); } ); //Program.telnetConnection.SendCommand("set-register "+assign+""+addr, RegChangeCallback); UIUpdate(); } } }
// ------------------------------------------------------------------------------------------------- // Regcallback, called when the register // // \param response The response. // \param tag The tag. // ------------------------------------------------------------------------------------------------- public void regcallback(byte[] response, int tag) { int index = 3; registerData[(int)Z80Register.f_e].SetValue(Serial.Get8Bit(ref response, ref index)); registerData[(int)Z80Register.a_e].SetValue(Serial.Get8Bit(ref response, ref index)); registerData[(int)Z80Register.r].SetValue(Serial.Get8Bit(ref response, ref index)); registerData[(int)Z80Register.i].SetValue(Serial.Get8Bit(ref response, ref index)); registerData[(int)Z80Register.f].SetValue(Serial.Get8Bit(ref response, ref index)); registerData[(int)Z80Register.a].SetValue(Serial.Get8Bit(ref response, ref index)); registerData[(int)Z80Register.iy].SetValue(Serial.Get16Bit(ref response, ref index)); registerData[(int)Z80Register.ix].SetValue(Serial.Get16Bit(ref response, ref index)); registerData[(int)Z80Register.bc_e].SetValue(Serial.Get16Bit(ref response, ref index)); registerData[(int)Z80Register.de_e].SetValue(Serial.Get16Bit(ref response, ref index)); registerData[(int)Z80Register.hl_e].SetValue(Serial.Get16Bit(ref response, ref index)); registerData[(int)Z80Register.bc].SetValue(Serial.Get16Bit(ref response, ref index)); registerData[(int)Z80Register.de].SetValue(Serial.Get16Bit(ref response, ref index)); registerData[(int)Z80Register.hl].SetValue(Serial.Get16Bit(ref response, ref index)); registerData[(int)Z80Register.pc].SetValue(Serial.Get16Bit(ref response, ref index)); registerData[(int)Z80Register.sp].SetValue(Serial.Get16Bit(ref response, ref index) + 2); //plus 2 because comms has return address on stack. for (int i = (int)Z80Register.MACHINE_ID_00; i <= (int)Z80Register.TILEMAP_GFX_ADR_6F; i++) { Z80Register reg = (Z80Register)i; registerData[(int)reg].SetValue(Serial.Get8Bit(ref response, ref index)); } //grab the current debugging mode int mode = Serial.Get8Bit(ref response, ref index); //grab thr stacl data stackdata[0] = Serial.Get16Bit(ref response, ref index); stackdata[1] = Serial.Get16Bit(ref response, ref index); stackdata[2] = Serial.Get16Bit(ref response, ref index); stackdata[3] = Serial.Get16Bit(ref response, ref index); //not in step mode be device is! then breakpoint has happened MainForm.mySourceWindow.UpdatePauseStatus(mode); //copy bank data from data for (int i = 0; i < MainForm.banks.Length; i++) { MainForm.banks[i] = registerData[(int)(Z80Register.MMU0_0000_50 + i)].Value; } if (InvokeRequired) { Invoke((MethodInvoker) delegate { UIUpdate(); }); } else { UIUpdate(); } }
// ------------------------------------------------------------------------------------------------- // Initialises the register // // \param name // The name. // \param display // The display. // \param index // Zero-based index of the. // \param UiTextBox // The text box control. // \param DF // The df. // ------------------------------------------------------------------------------------------------- void InitialiseRegister(string name, string display, Z80Register index, TextBox UiTextBox, DisplayFunctionCallback DF) { RegisterItem reg = new RegisterItem() { Value = 0, DisplayString = display, uiTextBox = UiTextBox, GetString = DF }; registerData[(int)index] = reg; }
void InitialiseRegister(string name, string display, string regex, Z80Register index, TextBox UiTextBox) { RegisterItem reg = new RegisterItem() { RegisterName = name, Value = 0, regex = new Regex(regex), DisplayString = display, uiTextBox = UiTextBox, reg = index }; registerData[(int)index] = reg; //registerData.Add(new RegisterItem() { RegisterName = name, Value = 0 ,regex = new Regex(regex), DisplayString = display }); //nameMap.Add(name, registerData.Count - 1); }
private void UpdateRegister(KeyEventArgs e, string s, Z80Register reg) { if (e.KeyCode == Keys.Enter) { int addr = 0; if (MainForm.ParseExpression(s, ref addr)) { registerData[(int)reg].Value = addr; SetRegister(addr, reg); //Program.telnetConnection.SendCommand("set-register "+assign+""+addr, RegChangeCallback); UIUpdate(); } } }
// ------------------------------------------------------------------------------------------------- // Sets a register // // \param value // The value. // \param reg // The register. // ------------------------------------------------------------------------------------------------- public void SetRegister(int value, Z80Register reg) { registerData[(int)reg].Value = value; }
// ------------------------------------------------------------------------------------------------- // Gets register label string // // \param reg // The register. // // \return The register label string. // ------------------------------------------------------------------------------------------------- public string GetRegisterLabelString(Z80Register reg) { return(registerData[(int)reg].labelstring); }
/// ------------------------------------------------------------------------------------------------- /// <summary> Gets register valueint. </summary> /// /// <remarks> 07/09/2018. </remarks> /// /// <param name="reg"> The register. </param> /// /// <returns> The register valueint. </returns> /// ------------------------------------------------------------------------------------------------- public int GetRegisterValueint(Z80Register reg) { return(registerData[(int)reg].Value); }
// ------------------------------------------------------------------------------------------------- // Constructor // // \param name The name. // \param viewname The viewname. // ------------------------------------------------------------------------------------------------- public Registers(string name, string viewname) { InitializeComponent(); registerData = new RegisterItem[(int)Z80Register.numRegisters]; InitialiseRegister("A", "X2", Z80Register.a, RegA, DisplaySimpleRegister); InitialiseRegister("HL", "X4", Z80Register.hl, RegHL, DisplaySimpleRegister); InitialiseRegister("BC", "X4", Z80Register.bc, RegBC, DisplaySimpleRegister); InitialiseRegister("DE", "X4", Z80Register.de, RegDE, DisplaySimpleRegister); InitialiseRegister("A'", "X2", Z80Register.a_e, RegExA, DisplaySimpleRegister); InitialiseRegister("HL'", "X4", Z80Register.hl_e, RegExHL, DisplaySimpleRegister); InitialiseRegister("BC'", "X4", Z80Register.bc_e, RegExBC, DisplaySimpleRegister); InitialiseRegister("DE'", "X4", Z80Register.de_e, RegExDE, DisplaySimpleRegister); InitialiseRegister("IX", "X4", Z80Register.ix, RegIX, DisplaySimpleRegister); InitialiseRegister("IY", "X4", Z80Register.iy, RegIY, DisplaySimpleRegister); InitialiseRegister("SP", "X4", Z80Register.sp, RegSP, DisplaySimpleRegister); InitialiseRegister("PC", "X4", Z80Register.pc, RegPC, DisplaySimpleRegister); InitialiseRegister("I", "X2", Z80Register.i, RegI, DisplaySimpleRegister); InitialiseRegister("R", "X2", Z80Register.r, RegR, DisplaySimpleRegister); InitialiseRegister("F", "X2", Z80Register.f, RegF, DisplaySimpleRegister); InitialiseRegister("F'", "X2", Z80Register.f_e, RegExF, DisplaySimpleRegister); InitialiseRegister("F'", "X2", Z80Register.MACHINE_ID_00, RegExF, DisplaySimpleRegister); int y = 7; for (int i = (int)Z80Register.MACHINE_ID_00; i <= (int)Z80Register.TILEMAP_GFX_ADR_6F; i++) { Z80Register reg = (Z80Register)i; Label lb = new System.Windows.Forms.Label(); lb.AutoSize = true; lb.Location = new System.Drawing.Point(6, y); lb.Name = ""; lb.Size = new System.Drawing.Size(37, 13); lb.TabIndex = 67; lb.Text = reg.ToString(); lb.TextAlign = System.Drawing.ContentAlignment.MiddleRight; lb.Font = new System.Drawing.Font("Consolas", 8.0F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); TextBox HW = new System.Windows.Forms.TextBox(); HW.Font = new System.Drawing.Font("Consolas", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); HW.Location = new System.Drawing.Point(180, y); HW.Name = "RegA"; HW.Size = new System.Drawing.Size(210, 23); HW.TabIndex = 32; HW.Text = "$00 / 256"; HW.ReadOnly = false; HW.BorderStyle = BorderStyle.None; this.hwpanel.Controls.Add(lb); this.hwpanel.Controls.Add(HW); y += 25; InitialiseRegister(reg.ToString(), "X2", reg, HW, DisplaySimpleRegister); } }
public void SetRegister(int value, Z80Register reg) { registerData[(int)reg].Value = value; Program.telnetConnection.SendCommand("set-register " + registerData[(int)reg].RegisterName + "=" + value, RegChangeCallback); }