CPU corrections

This commit is contained in:
2021-09-20 21:29:00 +00:00
parent b33a6c3055
commit a7985bad6e
4 changed files with 108 additions and 59 deletions
+3 -5
View File
@@ -88,8 +88,8 @@
{ format: 6, mnemonic: "ST.W" },
{ format: 6, mnemonic: "IN.B" },
{ format: 6, mnemonic: "IN.H" },
{ format: 6, mnemonic: "IN.W" },
{ format: 6, mnemonic: "CAXI" },
{ format: 6, mnemonic: "IN.W" },
{ format: 6, mnemonic: "OUT.B" },
{ format: 6, mnemonic: "OUT.H" },
{ format: 7, mnemonic: null },
@@ -258,9 +258,6 @@
case 0b000110: // JMP
inst.operands = "[" + reg1 + "]";
break;
case 0b001111: // NOT
inst.operands = reg1;
break;
default: // All others
inst.operands = reg1 + ", " + this.PROREGNAMES[bits >> 5 & 31];
}
@@ -275,7 +272,7 @@
case 0b010010: // SETF
inst.operands = this.SETFS[other & 15] + ", " + reg2;
break;
case 0b011001: // TRAP
case 0b011000: // TRAP
inst.operands = other;
break;
case 0b011100: // LDSR
@@ -355,6 +352,7 @@
case 0b110011: // LD.W
case 0b111000: // IN.B
case 0b111001: // IN.H
case 0b111010: // CAXI
case 0b111011: // IN.W
inst.operands = disp + "[" + reg1 + "], " + reg2;
break;
+1
View File
@@ -194,6 +194,7 @@ globalThis.MemoryWindow = class MemoryWindow extends Toolkit.Window {
case "ArrowLeft" : change = - 1 ; break;
case "ArrowRight": change = 1 ; break;
case "ArrowUp" : change = -16 ; break;
case "Enter" : change = 0 ; break;
case "PageDown" : change = visible; break;
case "PageUp" : change = -visible; break;
case "0": case "1": case "2": case "3": case "4":
+27 -1
View File
@@ -137,9 +137,35 @@
let text;
switch (this.format) {
case "float":
text = CPUWindow.Register.intBitsToFloat(value).toString();
let e = value >> 23 & 0xFF;
let s = value & 0x007FFFFF;
// Check for denormal number
if (e == 0x00 & s != 0) {
text = "Denormal";
break;
}
// Check for reserved operand
if (e == 0xFF) {
text = s!=0 ? "NaN" : value<0 ? "-Infinity" : "Infinity";
break;
}
// Check for negative zero
if ((value & 0xFFFFFFFF) >>> 0 == 0x80000000) {
text = "-0.0";
break;
}
// Format the number
text = CPUWindow.Register.intBitsToFloat(value).toFixed(6);
if (text.indexOf(".") == -1)
text += ".0";
while (text.endsWith("0"))
text = text.substring(0, text.length - 1);
if (text.endsWith("."))
text += "0";
break;
case "hex":
text = ("0000000" +