//public int getCacheInfoVal(int id) //{ // portWrite((byte)(0x50 + id), (byte)0x00); // portWrite((byte)(0x50 + id + 1), (byte)0x00); // var temp = readFromPort(2); // int val = temp[0] | (temp[1] << 8); // return val; //} public void getstatus() { byte[] temp; portWrite((byte)(0x00), (byte)(0x00)); int baseaddr = 0; portWrite((byte)(0x06), (byte)(123)); temp = readFromPort(1); StringBuilder sb = new StringBuilder(); sb.Append("pc:"); int pc = getreg(0x43, 0x00, sb); sb.Append(" private_offset:"); getreg(0x44, 0, sb); sb.Append(" pcResult:"); getreg(0x45, 0, sb); sb.Append(" last RtypeCmd:"); portWrite((byte)(0x18), (byte)0x00); temp = readFromPort(1); sb.Append(Util.getHex2(temp[0])); int halt_cpu; sb.Append(" halt_cpu:"); portWrite((byte)(0x14), (byte)0x00); temp = readFromPort(1); sb.Append(Util.getHex2(temp[0])); halt_cpu = temp[0]; int halt_uart; sb.Append(" halt_uart:"); portWrite((byte)(0x15), (byte)0x00); temp = readFromPort(1); sb.Append(Util.getHex2(temp[0])); halt_uart = temp[0]; sb.Append(" waitRequest:"); portWrite((byte)(0x16), (byte)0x00); temp = readFromPort(1); sb.Append(Util.getHex2(temp[0])); sb.Append(" irq_req:"); portWrite((byte)(0x17), (byte)0x00); temp = readFromPort(1); sb.Append(Util.getHex2(temp[0])); sb.Append(" irq_addr:"); getreg(0x40, 0, sb); sb.Append(" debugin:"); portWrite((byte)(0x64), (byte)0x00); temp = readFromPort(1); sb.Append(Util.getBin8(temp[0])); sb.Append(" debugin32:"); getData(0x60, sb); sb.AppendLine(); sb.Append(" access time:"); portWrite((byte)(0x4), (byte)0x00); portWrite((byte)(0x5), (byte)0x00); temp = readFromPort(2); sb.Append((temp[0] + (temp[1] << 8))); sb.AppendLine(); sb.Append("cache_life: "); for (int i = 0; i < 16; i++) { sb.Append(" " + getCacheLife(i)); } sb.AppendLine(); sb.Append("cache_addr:"); for (int i = 0; i < 16; i++) { sb.Append(" " + getCacheAddr(i)); } sb.AppendLine(); //sb.Append(" numer:"); getreg(0x40, 0, sb); //sb.Append(" denom:"); getreg(0x41, 0, sb); //sb.Append(" quotient:"); getreg(0x42, 0, sb); //sb.Append(" remain:"); getreg(0x45, 0, sb); sb.AppendLine(); if (true && (halt_cpu != 0 || halt_uart != 0)) { sb.Append("r0:"); getreg(0x47, 0x00, sb); sb.Append(" r1:"); getreg(0x47, 0x01, sb); sb.Append(" r2:"); getreg(0x47, 0x02, sb); sb.Append(" r3:"); getreg(0x47, 0x03, sb); sb.AppendLine(); for (int i = 4; i < 8; i++) { sb.Append(" r" + i + ":"); getreg(0x47, (byte)i, sb); } sb.AppendLine(); for (int i = 8; i < 16; i++) { sb.Append(" r" + i + ":"); getreg(0x47, (byte)i, sb); } sb.AppendLine(); for (int i = 16; i < 24; i++) { sb.Append(" r" + i + ":"); getreg(0x47, (byte)i, sb); } sb.AppendLine(); sb.Append("sp:"); int sp = getreg(0x47, 27, sb); sb.Append(" fp:"); getreg(0x47, 28, sb); sb.AppendLine(); sb.Append(" re:"); getreg(0x47, 29, sb); sb.Append(" ra:"); getreg(0x47, 31, sb); sb.AppendLine(); sb.AppendLine("stack: "); baseaddr = sp; for (int i = -Convert.ToInt32(this.comboBox2.Text) * 4; i < Convert.ToInt32(this.comboBox2.Text) * 4; i += 4) { sb.Append((i == 0 ? "*" : " ") + Util.getHex8((uint)(i + baseaddr)) + ":"); getmem(i + baseaddr, sb); sb.AppendLine(); } baseaddr = 0; sb.AppendLine("code: "); for (int i = -32; i < 32; i += 4) { StringBuilder sb2 = new StringBuilder(); uint code = getmem(pc + i, sb2); int target = pc + i; string foundsym = Config.getSym(target, syms); string scode = Config.dasm(syms, cfgs, (uint)code, pc + i, baseaddr); if (i == 0) { sb.AppendLine("----------------------------------------------------------------------------------"); } sb.AppendLine((i == 0 ? "*" : " ") + Util.getHex8((uint)(pc + i)) + ":" + scode); if (i == 0) { sb.AppendLine("----------------------------------------------------------------------------------"); } } sb.AppendLine("mem: "); baseaddr = Convert.ToInt32(textBox1.Text, 16); for (int i = 0; i < Convert.ToInt32(this.comboBox2.Text) * 4; i += 4) { sb.Append("" + Util.getHex8((uint)(i + baseaddr)) + ":"); getmem(i + baseaddr, sb); sb.AppendLine(); } } this.textBox4.Text = sb.ToString(); Application.DoEvents(); }