Esempio n. 1
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            string str;
            int    nn;
            Int128 ad = new Int128(textBox1.Text);
            Int128 dat;

            trackIP = checkBox1.Checked;
            if (trackIP)
            {
                ad = Int128.Sub(soc.cpu.ip, Int128.Convert(0x20));
            }
            //dumpBox.Clear();
            str = "";
            nn  = 0;
            for (nn = 0; nn < 50; nn++)
            {
                dat = soc.Read(ad);
                switch (dumpType)
                {
                case 0:
                    switch (dumpStride)
                    {
                    case 1:
                        str = str + Convert.ToString((long)ad.digits[0], 16).PadLeft(6, '0') + ": " + dat.ToString80().Substring(18, 2) + "\r\n";
                        break;

                    case 2:
                        str = str + Convert.ToString((long)ad.digits[0], 16).PadLeft(6, '0') + ": " + dat.ToString80().Substring(16, 4) + "\r\n";
                        break;

                    case 4:
                        str = str + Convert.ToString((long)ad.digits[0], 16).PadLeft(6, '0') + ": " + dat.ToString80().Substring(12, 8) + "\r\n";
                        break;

                    case 5:
                        str = str + Convert.ToString((long)ad.digits[0], 16).PadLeft(6, '0') + ": " + dat.ToString80().Substring(10, 10) + "\r\n";
                        break;

                    case 8:
                        str = str + Convert.ToString((long)ad.digits[0], 16).PadLeft(6, '0') + ": " + dat.ToString80().Substring(4, 16) + "\r\n";
                        break;

                    case 10:
                        str = str + Convert.ToString((long)ad.digits[0], 16).PadLeft(6, '0') + ": " + dat.ToString80() + "\r\n";
                        break;

                    case 16:
                        str = str + Convert.ToString((long)ad.digits[0], 16).PadLeft(6, '0') + ": " + dat.ToString128() + "\r\n";
                        break;
                    }
                    break;

                case 1:
                    if (Int128.EQ(ad, soc.cpu.ip))
                    {
                        str = str + "h";
                    }
                    else
                    {
                        str = str + " ";
                    }
                    str = str + nvioCpu.Disassemble(soc.cpu.ibundle, GetUnit(ad), (Int64)GetInstr(ad), ad) + "\n";
                    break;
                }
                if (trackIP)
                {
                    ad = nvioCpu.IncAd(ad, 5);
                }
                else
                {
                    ad = Int128.Add(ad, Int128.Convert(dumpStride));
                }
            }
            dmp.SetText(str);
            dmp.Invalidate();
            ad  = Int128.Sub(soc.cpu.regfile[(soc.cpu.regset << 6) | 63], Int128.Convert(40));
            str = "";
            for (nn = 0; nn < 25; nn++)
            {
                dat = soc.Read(ad);
                if (Int128.EQ(ad, soc.cpu.regfile[(soc.cpu.regset << 6) | 63]))
                {
                    str = str + "h";
                }
                else
                {
                    str = str + " ";
                }
                str = str + Convert.ToString((long)ad.digits[0], 16).PadLeft(6, '0') + ": " + dat.ToString80() + "\r\n";
                ad  = Int128.Add(ad, Int128.Convert(10));
            }
            stk.SetText(str);
            stk.Invalidate();
            if (trackIP)
            {
                timer1.Interval = 10;
            }
            else
            {
                timer1.Interval = 100;
            }
            timer1.Enabled = trackIP;
        }