From 8754fd7bd62572f215d3b42c0835d84e1eca0e99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer?= Date: Wed, 10 May 2017 19:41:39 +0200 Subject: [PATCH] Mem display --- PIC_Simulator/Form1.Designer.cs | 92 ++++++++++++++++++++++++++++---- PIC_Simulator/Form1.cs | 12 ++--- PIC_Simulator/PIC/PICProgramm.cs | 33 +++++++++--- 3 files changed, 114 insertions(+), 23 deletions(-) diff --git a/PIC_Simulator/Form1.Designer.cs b/PIC_Simulator/Form1.Designer.cs index 8c9d6fd..3f0e82e 100644 --- a/PIC_Simulator/Form1.Designer.cs +++ b/PIC_Simulator/Form1.Designer.cs @@ -59,6 +59,15 @@ this.c1 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.c2 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.lbStack = new System.Windows.Forms.ListBox(); + this.columnHeader9 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader10 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader11 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader12 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader13 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader14 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader15 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.columnHeader16 = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); + this.Index = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.menuStrip1.SuspendLayout(); this.SuspendLayout(); // @@ -78,7 +87,7 @@ this.box_CodeView.Margin = new System.Windows.Forms.Padding(2); this.box_CodeView.Name = "box_CodeView"; this.box_CodeView.ReadOnly = true; - this.box_CodeView.Size = new System.Drawing.Size(626, 476); + this.box_CodeView.Size = new System.Drawing.Size(626, 600); this.box_CodeView.TabIndex = 3; this.box_CodeView.Text = ""; this.box_CodeView.WordWrap = false; @@ -148,7 +157,7 @@ this.menuStrip1.Location = new System.Drawing.Point(0, 0); this.menuStrip1.Name = "menuStrip1"; this.menuStrip1.Padding = new System.Windows.Forms.Padding(4, 2, 0, 2); - this.menuStrip1.Size = new System.Drawing.Size(1048, 24); + this.menuStrip1.Size = new System.Drawing.Size(1298, 24); this.menuStrip1.TabIndex = 9; this.menuStrip1.Text = "menuStrip1"; // @@ -203,6 +212,7 @@ // lvMemory // this.lvMemory.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { + this.Index, this.columnHeader1, this.columnHeader2, this.columnHeader3, @@ -210,11 +220,19 @@ this.columnHeader5, this.columnHeader6, this.columnHeader7, - this.columnHeader8}); - this.lvMemory.Location = new System.Drawing.Point(733, 78); + this.columnHeader8, + this.columnHeader9, + this.columnHeader10, + this.columnHeader11, + this.columnHeader12, + this.columnHeader13, + this.columnHeader14, + this.columnHeader15, + this.columnHeader16}); + this.lvMemory.Location = new System.Drawing.Point(711, 78); this.lvMemory.Margin = new System.Windows.Forms.Padding(2); this.lvMemory.Name = "lvMemory"; - this.lvMemory.Size = new System.Drawing.Size(304, 297); + this.lvMemory.Size = new System.Drawing.Size(576, 354); this.lvMemory.TabIndex = 14; this.lvMemory.UseCompatibleStateImageBehavior = false; this.lvMemory.View = System.Windows.Forms.View.Details; @@ -231,11 +249,13 @@ // // columnHeader3 // + this.columnHeader3.DisplayIndex = 4; this.columnHeader3.Text = "2"; this.columnHeader3.Width = 32; // // columnHeader4 // + this.columnHeader4.DisplayIndex = 3; this.columnHeader4.Text = "3"; this.columnHeader4.Width = 32; // @@ -294,10 +314,10 @@ this.lvSpecial.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.c1, this.c2}); - this.lvSpecial.Location = new System.Drawing.Point(638, 378); + this.lvSpecial.Location = new System.Drawing.Point(640, 438); this.lvSpecial.Margin = new System.Windows.Forms.Padding(2); this.lvSpecial.Name = "lvSpecial"; - this.lvSpecial.Size = new System.Drawing.Size(399, 175); + this.lvSpecial.Size = new System.Drawing.Size(269, 239); this.lvSpecial.TabIndex = 18; this.lvSpecial.UseCompatibleStateImageBehavior = false; this.lvSpecial.View = System.Windows.Forms.View.Details; @@ -317,14 +337,59 @@ this.lbStack.FormattingEnabled = true; this.lbStack.Location = new System.Drawing.Point(640, 78); this.lbStack.Name = "lbStack"; - this.lbStack.Size = new System.Drawing.Size(88, 290); + this.lbStack.Size = new System.Drawing.Size(66, 355); this.lbStack.TabIndex = 19; // + // columnHeader9 + // + this.columnHeader9.Text = "8"; + this.columnHeader9.Width = 32; + // + // columnHeader10 + // + this.columnHeader10.Text = "9"; + this.columnHeader10.Width = 32; + // + // columnHeader11 + // + this.columnHeader11.Text = "A"; + this.columnHeader11.Width = 32; + // + // columnHeader12 + // + this.columnHeader12.Text = "B"; + this.columnHeader12.Width = 32; + // + // columnHeader13 + // + this.columnHeader13.Text = "C"; + this.columnHeader13.Width = 32; + // + // columnHeader14 + // + this.columnHeader14.Text = "D"; + this.columnHeader14.Width = 32; + // + // columnHeader15 + // + this.columnHeader15.Text = "E"; + this.columnHeader15.Width = 32; + // + // columnHeader16 + // + this.columnHeader16.Text = "F"; + this.columnHeader16.Width = 32; + // + // Index + // + this.Index.Text = " "; + this.Index.Width = 48; + // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1048, 585); + this.ClientSize = new System.Drawing.Size(1298, 692); this.Controls.Add(this.lbStack); this.Controls.Add(this.lvSpecial); this.Controls.Add(this.insertTime); @@ -385,6 +450,15 @@ private System.Windows.Forms.ColumnHeader c1; private System.Windows.Forms.ColumnHeader c2; private System.Windows.Forms.ListBox lbStack; + private System.Windows.Forms.ColumnHeader Index; + private System.Windows.Forms.ColumnHeader columnHeader9; + private System.Windows.Forms.ColumnHeader columnHeader10; + private System.Windows.Forms.ColumnHeader columnHeader11; + private System.Windows.Forms.ColumnHeader columnHeader12; + private System.Windows.Forms.ColumnHeader columnHeader13; + private System.Windows.Forms.ColumnHeader columnHeader14; + private System.Windows.Forms.ColumnHeader columnHeader15; + private System.Windows.Forms.ColumnHeader columnHeader16; } } diff --git a/PIC_Simulator/Form1.cs b/PIC_Simulator/Form1.cs index 2587a6c..d6acc78 100644 --- a/PIC_Simulator/Form1.cs +++ b/PIC_Simulator/Form1.cs @@ -21,9 +21,9 @@ namespace PIC_Simulator quartztimer = new Timer(); quartztimer.Tick += timer1_Tick; - for (int i = 0; i < 32; i++) + for (int i = 0; i < 16; i++) { - var item = new ListViewItem(new[] {"00", "00", "00", "00", "00", "00", "00", "00"}); + var item = new ListViewItem(new[] { string.Format("0x{0:X}0", i), "00", "00", "00", "00", "00", "00", "00", "00", "00", "00", "00", "00", "00", "00", "00", "00" }); lvMemory.Items.Add(item); } @@ -146,12 +146,12 @@ namespace PIC_Simulator // Memory aktualisieren - for (int y = 0; y < 32; y++) + for (int y = 0; y < 16; y++) { - for (int x = 0; x < 8; x++) + for (int x = 0; x < 16; x++) { - string nummer = string.Format("{0:X2}", programm.Register[y*8 + x]); - if (nummer != lvMemory.Items[y].SubItems[x].Text) lvMemory.Items[y].SubItems[x].Text = nummer; + string nummer = string.Format("{0:X2}", programm.GetRegisterOhneBank((uint) (y*16 + x))); + if (nummer != lvMemory.Items[y].SubItems[x + 1].Text) lvMemory.Items[y].SubItems[x+1].Text = nummer; } } diff --git a/PIC_Simulator/PIC/PICProgramm.cs b/PIC_Simulator/PIC/PICProgramm.cs index 0951d80..0c4c0e4 100644 --- a/PIC_Simulator/PIC/PICProgramm.cs +++ b/PIC_Simulator/PIC/PICProgramm.cs @@ -747,6 +747,13 @@ namespace PIC_Simulator.PIC private uint GetRegister(uint index) { + // register die nur einmal auf bank1 + 2 existieren + if (index == ADDR_PCL + 0x80) return Register[ADDR_PCL]; + if (index == ADDR_STATUS + 0x80) return Register[ADDR_STATUS]; + if (index == ADDR_FSR + 0x80) return Register[ADDR_FSR]; + if (index == ADDR_PCLATH + 0x80) return Register[ADDR_PCLATH]; + if (index == ADDR_INTCON + 0x80) return Register[ADDR_INTCON]; + if ((Register[ADDR_STATUS] & STATUS_BIT_RP0) == STATUS_BIT_RP0) { return Register[0x80 + index]; @@ -759,6 +766,13 @@ namespace PIC_Simulator.PIC private void SetRegister(uint index, uint wert) { + // register die nur einmal auf bank1 + 2 existieren + if (index == ADDR_PCL) { Register[ADDR_PCL] = wert; return; } + if (index == ADDR_STATUS) { Register[ADDR_STATUS] = wert; return; } + if (index == ADDR_FSR) { Register[ADDR_FSR] = wert; return; } + if (index == ADDR_PCLATH) { Register[ADDR_PCLATH] = wert; return; } + if (index == ADDR_INTCON) { Register[ADDR_INTCON] = wert; return; } + if ((Register[ADDR_STATUS] & STATUS_BIT_RP0) == STATUS_BIT_RP0) { Register[0x80 + index] = wert; @@ -771,14 +785,7 @@ namespace PIC_Simulator.PIC private void SetRegister(uint index, uint bit, bool wert) { - if ((Register[ADDR_STATUS] & STATUS_BIT_RP0) == STATUS_BIT_RP0) - { - Register[0x80 + index] = SetBit(Register[index], bit, wert); - } - else - { - Register[index] = SetBit(Register[index], bit, wert); - } + SetRegister(index, SetBit(GetRegister(index), bit, wert)); } private void SetRegisterOhneBank(uint index, uint bit, bool wert) @@ -793,6 +800,16 @@ namespace PIC_Simulator.PIC public uint GetRegisterOhneBank(uint index) { + if (index == ADDR_UNIMPL_A) return 0; + if (index == ADDR_UNIMPL_B) return 0; + + // register die nur einmal auf bank1 + 2 existieren + if (index == ADDR_PCL + 0x80) return Register[ADDR_PCL]; + if (index == ADDR_STATUS + 0x80) return Register[ADDR_STATUS]; + if (index == ADDR_FSR + 0x80) return Register[ADDR_FSR]; + if (index == ADDR_PCLATH + 0x80) return Register[ADDR_PCLATH]; + if (index == ADDR_INTCON + 0x80) return Register[ADDR_INTCON]; + return Register[index]; }