Added a minor improvement to the simplistic MACRO-10 fixup support in PDPjs
This commit is contained in:
parent
427e6afdb8
commit
7e1fc5586e
8 changed files with 169 additions and 175 deletions
|
|
@ -7,7 +7,7 @@ machines:
|
|||
type: pdp10
|
||||
config: /devices/pdp10/machine/ka10/test/debugger/machine.xml
|
||||
debugger: true
|
||||
commands: a dakam.mac;g 033352
|
||||
commands: a dakam.mac;g 036547
|
||||
---
|
||||
|
||||
PDP-10 KA10 Basic Instruction Diagnostic #13
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -688,7 +688,7 @@ class Macro10 {
|
|||
break;
|
||||
|
||||
case Macro10.PSEUDO_OP.EXP:
|
||||
this.defEXP(sOperands);
|
||||
this.defWord(sOperands);
|
||||
break;
|
||||
|
||||
case Macro10.PSEUDO_OP.LIT:
|
||||
|
|
@ -1722,25 +1722,6 @@ class Macro10 {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* defEXP()
|
||||
*
|
||||
* Processes the EXP pseudo-op.
|
||||
*
|
||||
* @this {Macro10}
|
||||
* @param {string} sOperands
|
||||
*/
|
||||
defEXP(sOperands)
|
||||
{
|
||||
var aUndefined = [];
|
||||
var w = this.parseExpression(sOperands, aUndefined);
|
||||
if (w !== undefined) {
|
||||
this.genWord(w, aUndefined[0]);
|
||||
} else {
|
||||
this.error("unrecognized EXP expression '" + sOperands + "'");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* defLocation(sOperands)
|
||||
*
|
||||
|
|
@ -1759,15 +1740,15 @@ class Macro10 {
|
|||
*
|
||||
* Processes the XWD pseudo-op.
|
||||
*
|
||||
* Since the XWD pseudo-op appears to be equivalent to two values separated by two commas, which defEXP() must also
|
||||
* support, we can piggy-back on defExp().
|
||||
* Since the XWD pseudo-op appears to be equivalent to two values separated by two commas, which defWord() must also
|
||||
* support, we can piggy-back on defWord().
|
||||
*
|
||||
* @this {Macro10}
|
||||
* @param {string} sOperands
|
||||
*/
|
||||
defXWD(sOperands)
|
||||
{
|
||||
this.defEXP(sOperands.replace(",", ",,"));
|
||||
this.defWord(sOperands.replace(",", ",,"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -1775,16 +1756,23 @@ class Macro10 {
|
|||
*
|
||||
* @this {Macro10}
|
||||
* @param {string} sOperator
|
||||
* @param {string} sSeparator
|
||||
* @param {string} sOperands
|
||||
* @param {string} [sSeparator]
|
||||
* @param {string} [sOperands]
|
||||
*/
|
||||
defWord(sOperator, sSeparator, sOperands)
|
||||
defWord(sOperator, sSeparator = "", sOperands = "")
|
||||
{
|
||||
var aUndefined = [];
|
||||
var sExp = (sOperator + sSeparator + sOperands).trim();
|
||||
var w = this.parseExpression(sExp, aUndefined);
|
||||
if (w !== undefined) {
|
||||
if (!aUndefined.length) {
|
||||
this.genWord(w);
|
||||
} else if (aUndefined.length == 1) {
|
||||
this.genWord(w, aUndefined[0]);
|
||||
}
|
||||
else {
|
||||
this.genWord(0, sExp);
|
||||
}
|
||||
} else {
|
||||
this.error("unrecognized word expression '" + sExp + "'");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1075,10 +1075,15 @@ class Debugger extends Component
|
|||
if (aUndefined) {
|
||||
aUndefined.push(sUndefined);
|
||||
} else {
|
||||
this.println(sValue + " is undefined (" + sUndefined + ")");
|
||||
var valueUndefined = this.parseExpression(sUndefined, false);
|
||||
if (valueUndefined !== undefined) {
|
||||
value += valueUndefined;
|
||||
} else {
|
||||
this.println(sValue + " = " + this.toStrBase(value) + " + (" + sUndefined + ")");
|
||||
value = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* A feature of MACRO-10 is that any single-digit number is automatically interpreted as base-10.
|
||||
|
|
|
|||
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
Loading…
Reference in a new issue