CPU corrections
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
@@ -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" +
|
||||
|
||||
Reference in New Issue
Block a user