Cleaned up PDP register dump code

This commit is contained in:
Jeff Parsons 2017-02-23 16:56:08 -08:00 • committed by Jeff Parsons
commit 884b74d96f
7 changed files with 574 additions and 616 deletions

View file

@ -8,7 +8,7 @@ includes:
* [PCx86](/docs/pcx86/), an x86-based emulator of [IBM PC and PC-compatible](/devices/pcx86/machine/) machines
* [PC8080](/modules/pc8080/), an 8080 machine emulator (e.g., [Space Invaders](/devices/pc8080/machine/invaders/) and the [VT100 Terminal](/devices/pc8080/machine/vt100/))
* [C1Pjs](/docs/c1pjs/), an emulation of the 6502-based [Ohio Scientific Challenger 1P](/devices/c1p/)
* [PDPjs](/docs/pdpjs/) emulators, with support for [PDP-10](/devices/pdp10/machine/) and [PDP-11](/devices/pdp11/machine/) machines
* [PDPjs](/docs/pdpjs/), a set of emulation modules supporting [PDP-10](/devices/pdp10/machine/) and [PDP-11](/devices/pdp11/machine/) machines
All PCjs machine simulations are written entirely in [JavaScript](/modules/). No Flash, Java or other plugins are
required. Supported browsers include modern versions of Chrome, Safari, Firefox, Internet Explorer (v9.0 and up), Edge,

View file

@ -812,11 +812,11 @@ class DebuggerPDP10 extends Debugger {
*
* @this {DebuggerPDP10}
* @param {number} iReg (0-7; not used for other registers)
* @return {string|undefined}
* @return {string}
*/
getRegName(iReg)
{
return DebuggerPDP10.REGNAMES[iReg];
return DebuggerPDP10.REGNAMES[iReg] || "";
}
/**
@ -1885,8 +1885,10 @@ class DebuggerPDP10 extends Debugger {
*/
getRegOutput(iReg)
{
var sReg = this.getRegName(iReg) || "undefined";
if (sReg) sReg += ' ';
var sReg = this.getRegName(iReg);
if (sReg) {
sReg += '=' + this.toStrBase(this.getRegValue(iReg)) + ' ';
}
return sReg;
}

View file

@ -912,7 +912,9 @@ class DebuggerPDP11 extends Debugger {
*/
getRegName(iReg)
{
return (iReg < 6? ("R" + iReg) : (iReg == 6? "SP" : "PC"));
var sReg;
if (iReg < DebuggerPDP11.REG_AR || this.panel) sReg = DebuggerPDP11.REGNAMES[iReg];
return sReg || "";
}
/**
@ -2273,63 +2275,10 @@ class DebuggerPDP11 extends Debugger {
*/
getRegOutput(iReg)
{
var sReg = "";
var cpu = this.cpu;
if (iReg < 8) {
sReg = this.getRegName(iReg);
sReg += '=' + this.toStrBase(cpu.regsGen[iReg]);
var sReg = this.getRegName(iReg);
if (sReg) {
sReg += '=' + this.toStrBase(this.getRegValue(iReg)) + ' ';
}
else if (iReg < 13) {
sReg = "A" + (iReg - 8) + '=' + this.toStrBase(cpu.regsAlt[iReg - 8]);
}
else if (iReg >= 16 && iReg < 20) {
sReg = "S" + (iReg - 16) + '=' + this.toStrBase(cpu.regsAltStack[iReg - 16]);
}
else {
switch(iReg) {
case DebuggerPDP11.REG_PS:
sReg = "PS=" + this.toStrBase(cpu.getPSW());
break;
case DebuggerPDP11.REG_PI:
sReg = "PI=" + this.toStrBase(cpu.getPIR());
break;
case DebuggerPDP11.REG_ER:
sReg = "ER=" + this.toStrBase(cpu.regErr);
break;
case DebuggerPDP11.REG_SL:
sReg = "SL=" + this.toStrBase(cpu.getSLR());
break;
case DebuggerPDP11.REG_M0:
sReg = "M0=" + this.toStrBase(cpu.getMMR0());
break;
case DebuggerPDP11.REG_M1:
sReg = "M1=" + this.toStrBase(cpu.getMMR1());
break;
case DebuggerPDP11.REG_M2:
sReg = "M2=" + this.toStrBase(cpu.getMMR2());
break;
case DebuggerPDP11.REG_M3:
sReg = "M3=" + this.toStrBase(cpu.getMMR3());
break;
case DebuggerPDP11.REG_AR:
if (this.panel) {
sReg = "AR=" + this.toStrBase(this.panel.getAR(), 3);
}
break;
case DebuggerPDP11.REG_DR:
if (this.panel) {
sReg = "DR=" + this.toStrBase(this.panel.getDR());
}
break;
case DebuggerPDP11.REG_SR:
if (this.panel) {
sReg = "SR=" + this.toStrBase(this.panel.getSR(), 3);
}
break;
}
}
if (sReg) sReg += ' ';
return sReg;
}
@ -4181,6 +4130,14 @@ if (DEBUGGER) {
"SR": DebuggerPDP11.REG_SR
};
DebuggerPDP11.REGNAMES = [
"R0", "R1", "R2", "R3", "R4", "R5", "SP", "PC",
"A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7",
"S0", "S1", "S2", "S3",
"PS", "PI", "ER", "SL", "M0", "M1", "M2", "M3",
"AR", "DR", "SR"
];
DebuggerPDP11.MODES = ["KI","KD","SI","SD","??","??","UI","UD"];
/*

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long